From aafc92f17d6634ed56d631e942f439a5c8bb1be9 Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Mon, 30 Sep 2024 14:19:57 +0200 Subject: [PATCH 001/167] back to dev --- nextflow.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nextflow.config b/nextflow.config index ea1909cb..872e8dd3 100644 --- a/nextflow.config +++ b/nextflow.config @@ -295,7 +295,7 @@ manifest { description = """A nextflow pipeline for calling and annotating small germline variants from short DNA reads for WES and WGS data""" mainScript = 'main.nf' nextflowVersion = '!>=24.04.0' - version = '1.8.2' + version = '1.9.0dev' doi = '' } From d45cf25f1779ea15fdbee2b3fb8e632141bae53a Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Tue, 1 Oct 2024 10:24:35 +0200 Subject: [PATCH 002/167] fix WES validation --- CHANGELOG.md | 8 +- modules.json | 2 +- modules/nf-core/rtgtools/vcfeval/main.nf | 20 +- modules/nf-core/rtgtools/vcfeval/meta.yml | 251 ++++--- .../rtgtools/vcfeval/tests/main.nf.test | 113 +++ .../rtgtools/vcfeval/tests/main.nf.test.snap | 677 ++++++++++++++++++ .../rtgtools/vcfeval/tests/nextflow.config | 4 + .../local/vcf_validate_small_variants/main.nf | 2 +- workflows/germline.nf | 21 +- 9 files changed, 1001 insertions(+), 97 deletions(-) create mode 100644 modules/nf-core/rtgtools/vcfeval/tests/main.nf.test create mode 100644 modules/nf-core/rtgtools/vcfeval/tests/main.nf.test.snap create mode 100644 modules/nf-core/rtgtools/vcfeval/tests/nextflow.config diff --git a/CHANGELOG.md b/CHANGELOG.md index 776e85ab..015aa96b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,9 +3,15 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## v1.9.0dev + +### Fixes + +1. Validation of all samples now use an intersect of the golden truth BED files with the BED file used to call the variants. This should fix the WES validation which was broken until this point. + ## v1.8.2 - Outstanding Oostkamp - [September 30 2024] -## Fixes +### Fixes 1. Fixed some issues where indices were not created 2. Updated the docs diff --git a/modules.json b/modules.json index ac9d8d29..e89e5bff 100644 --- a/modules.json +++ b/modules.json @@ -141,7 +141,7 @@ }, "rtgtools/vcfeval": { "branch": "master", - "git_sha": "e743b2dea725bcfc4b76a209981808987332013a", + "git_sha": "83e2df1e4ec594beb8a575b4db0b4197900f4ebd", "installed_by": ["modules"] }, "samtools/convert": { diff --git a/modules/nf-core/rtgtools/vcfeval/main.nf b/modules/nf-core/rtgtools/vcfeval/main.nf index 98f9adb1..330a1f3d 100644 --- a/modules/nf-core/rtgtools/vcfeval/main.nf +++ b/modules/nf-core/rtgtools/vcfeval/main.nf @@ -8,7 +8,7 @@ process RTGTOOLS_VCFEVAL { 'biocontainers/rtg-tools:3.12.1--hdfd78af_0' }" input: - tuple val(meta), path(query_vcf), path(query_vcf_tbi), path(truth_vcf), path(truth_vcf_tbi), path(truth_bed), path(evaluation_bed) + tuple val(meta), path(query_vcf), path(query_vcf_tbi), path(truth_vcf), path(truth_vcf_tbi), path(truth_bed), path(regions_bed) tuple val(meta2), path(sdf) output: @@ -33,8 +33,8 @@ process RTGTOOLS_VCFEVAL { script: def args = task.ext.args ?: "" def prefix = task.ext.prefix ?: "${meta.id}" - def bed_regions = truth_bed ? "--bed-regions=${truth_bed}" : "" - def eval_regions = evaluation_bed ? "--evaluation-regions=${evaluation_bed}" : "" + def bed_regions = regions_bed ? "--bed-regions=${regions_bed}" : "" + def eval_regions = truth_bed ? "--evaluation-regions=${truth_bed}" : "" def truth_index = truth_vcf_tbi ? "" : "rtg index ${truth_vcf}" def query_index = query_vcf_tbi ? "" : "rtg index ${query_vcf}" def avail_mem = task.memory.toGiga() + "G" @@ -68,17 +68,17 @@ process RTGTOOLS_VCFEVAL { def prefix = task.ext.prefix ?: "${meta.id}" """ - touch ${prefix}.tp.vcf.gz + echo | gzip > ${prefix}.tp.vcf.gz touch ${prefix}.tp.vcf.gz.tbi - touch ${prefix}.fn.vcf.gz + echo | gzip > ${prefix}.fn.vcf.gz touch ${prefix}.fn.vcf.gz.tbi - touch ${prefix}.fp.vcf.gz + echo | gzip > ${prefix}.fp.vcf.gz touch ${prefix}.fp.vcf.gz.tbi - touch ${prefix}.tp-baseline.vcf.gz + echo | gzip > ${prefix}.tp-baseline.vcf.gz touch ${prefix}.tp-baseline.vcf.gz.tbi - touch ${prefix}.snp_roc.tsv.gz - touch ${prefix}.non_snp_roc.tsv.gz - touch ${prefix}.weighted_roc.tsv.gz + echo | gzip > ${prefix}.snp_roc.tsv.gz + echo | gzip > ${prefix}.non_snp_roc.tsv.gz + echo | gzip > ${prefix}.weighted_roc.tsv.gz touch ${prefix}.summary.txt touch ${prefix}.phasing.txt diff --git a/modules/nf-core/rtgtools/vcfeval/meta.yml b/modules/nf-core/rtgtools/vcfeval/meta.yml index 5023ac91..4c59bab5 100644 --- a/modules/nf-core/rtgtools/vcfeval/meta.yml +++ b/modules/nf-core/rtgtools/vcfeval/meta.yml @@ -1,111 +1,198 @@ name: "rtgtools_vcfeval" -description: The VCFeval tool of RTG tools. It is used to evaluate called variants for agreement with a baseline variant set +description: The VCFeval tool of RTG tools. It is used to evaluate called variants + for agreement with a baseline variant set keywords: - benchmarking - vcf - rtg-tools tools: - "rtgtools": - description: "RealTimeGenomics Tools -- Utilities for accurate VCF comparison and manipulation" + description: "RealTimeGenomics Tools -- Utilities for accurate VCF comparison + and manipulation" homepage: "https://www.realtimegenomics.com/products/rtg-tools" documentation: "https://github.com/RealTimeGenomics/rtg-tools" tool_dev_url: "https://github.com/RealTimeGenomics/rtg-tools" licence: ["BSD"] + identifier: "" input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - query_vcf: - type: file - description: A VCF with called variants to benchmark against the standard - pattern: "*.{vcf,vcf.gz}" - - query_vcf_index: - type: file - description: The index of the called VCF (optional) - pattern: "*.tbi" - - truth_vcf: - type: file - description: A standard VCF to compare against - pattern: "*.{vcf,vcf.gz}" - - truth_vcf_index: - type: file - description: The index of the standard VCF (optional) - pattern: "*.tbi" - - truth_bed: - type: file - description: A BED file containining the strict regions where VCFeval should only evaluate the fully overlapping variants (optional) - pattern: "*.bed" - - evaluation_bed: - type: file - description: A BED file containing the regions where VCFeval will evaluate every fully and partially overlapping variant (optional) - pattern: "*.bed" - - sdf: - type: file - description: The SDF (RTG Sequence Data File) folder of the reference genome + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - query_vcf: + type: file + description: A VCF with called variants to benchmark against the standard + pattern: "*.{vcf,vcf.gz}" + - query_vcf_tbi: + type: file + description: The index of the VCF file with called variants to benchmark against the standard + pattern: "*.{vcf.gz.tbi, vcf.tbi}" + - truth_vcf: + type: file + description: A standard VCF to compare against + pattern: "*.{vcf,vcf.gz}" + - truth_vcf_tbi: + type: file + description: The index of the standard VCF to compare against + pattern: "*.{vcf.gz.tbi, vcf.tbi}" + - truth_bed: + type: file + description: A BED file containining the strict regions where VCFeval should + only evaluate the fully overlapping variants (optional) + This input should be used to provide the golden truth BED files. + pattern: "*.bed" + - regions_bed: + type: file + description: A BED file containing the regions where VCFeval will evaluate every + fully and partially overlapping variant (optional) + This input should be used to provide the regions used by the analysis + pattern: "*.bed" + - - meta2: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - sdf: + type: file + description: The SDF (RTG Sequence Data File) folder of the reference genome output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - versions: - type: file - description: File containing software versions - pattern: "versions.yml" - tp_vcf: - type: file - description: A VCF file for the true positive variants - pattern: "*.tp.vcf.gz" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.tp.vcf.gz": + type: file + description: A VCF file for the true positive variants + pattern: "*.tp.vcf.gz" - tp_tbi: - type: file - description: The index of the VCF file for the true positive variants - pattern: "*.tp.vcf.gz.tbi" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.tp.vcf.gz.tbi": + type: file + description: The index of the VCF file for the true positive variants + pattern: "*.tp.vcf.gz.tbi" - fn_vcf: - type: file - description: A VCF file for the false negative variants - pattern: "*.fn.vcf.gz" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.fn.vcf.gz": + type: file + description: A VCF file for the false negative variants + pattern: "*.fn.vcf.gz" - fn_tbi: - type: file - description: The index of the VCF file for the false negative variants - pattern: "*.fn.vcf.gz.tbi" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.fn.vcf.gz.tbi": + type: file + description: The index of the VCF file for the false negative variants + pattern: "*.fn.vcf.gz.tbi" - fp_vcf: - type: file - description: A VCF file for the false positive variants - pattern: "*.fp.vcf.gz" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.fp.vcf.gz": + type: file + description: A VCF file for the false positive variants + pattern: "*.fp.vcf.gz" - fp_tbi: - type: file - description: The index of the VCF file for the false positive variants - pattern: "*.fp.vcf.gz.tbi" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.fp.vcf.gz.tbi": + type: file + description: The index of the VCF file for the false positive variants + pattern: "*.fp.vcf.gz.tbi" - baseline_vcf: - type: file - description: A VCF file for the true positive variants from the baseline - pattern: "*.tp-baseline.vcf.gz" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.tp-baseline.vcf.gz": + type: file + description: A VCF file for the true positive variants from the baseline + pattern: "*.tp-baseline.vcf.gz" - baseline_tbi: - type: file - description: The index of the VCF file for the true positive variants from the baseline - pattern: "*.tp-baseline.vcf.gz.tbi" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.tp-baseline.vcf.gz.tbi": + type: file + description: The index of the VCF file for the true positive variants from the + baseline + pattern: "*.tp-baseline.vcf.gz.tbi" - snp_roc: - type: file - description: TSV files containing ROC data for the SNPs - pattern: "*.snp_roc.tsv.gz" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.snp_roc.tsv.gz": + type: file + description: TSV files containing ROC data for the SNPs + pattern: "*.snp_roc.tsv.gz" - non_snp_roc: - type: file - description: TSV files containing ROC data for all variants except SNPs - pattern: "*.non_snp_roc.tsv.gz" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.non_snp_roc.tsv.gz": + type: file + description: TSV files containing ROC data for all variants except SNPs + pattern: "*.non_snp_roc.tsv.gz" - weighted_roc: - type: file - description: TSV files containing weighted ROC data for all variants - pattern: "*.weighted_snp_roc.tsv.gz" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.weighted_roc.tsv.gz": + type: file + description: TSV files containing weighted ROC data for all variants + pattern: "*.weighted_snp_roc.tsv.gz" - summary: - type: file - description: A TXT file containing the summary of the evaluation - pattern: "*.summary.txt" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.summary.txt": + type: file + description: A TXT file containing the summary of the evaluation + pattern: "*.summary.txt" - phasing: - type: file - description: A TXT file containing the data on the phasing - pattern: "*.phasing.txt" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.phasing.txt": + type: file + description: A TXT file containing the data on the phasing + pattern: "*.phasing.txt" + - versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" authors: - "@nvnieuwk" maintainers: diff --git a/modules/nf-core/rtgtools/vcfeval/tests/main.nf.test b/modules/nf-core/rtgtools/vcfeval/tests/main.nf.test new file mode 100644 index 00000000..55abc842 --- /dev/null +++ b/modules/nf-core/rtgtools/vcfeval/tests/main.nf.test @@ -0,0 +1,113 @@ +nextflow_process { + + name "Test Process RTGTOOLS_VCFEVAL" + script "../main.nf" + process "RTGTOOLS_VCFEVAL" + + tag "modules" + tag "modules_nfcore" + tag "rtgtools" + tag "rtgtools/vcfeval" + tag "untar" + + setup { + run("UNTAR") { + script "../../../untar/main.nf" + process { + """ + input[0] = Channel.value([ + [id:'test'], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/genome_sdf.tar.gz', checkIfExists:true) + ]) + """ + } + } + } + + test("homo_sapiens - [vcf, tbi, truth, truth_tbi, truth_bed, regions_bed], sdf") { + + when { + process { + """ + input[0] = Channel.of([ + [id:'test'], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gatk/haplotypecaller_calls/test2_haplotc.vcf.gz', checkIfExists:true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gatk/haplotypecaller_calls/test2_haplotc.vcf.gz.tbi', checkIfExists:true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gatk/haplotypecaller_calls/test2_haplotc.ann.vcf.gz', checkIfExists:true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gatk/haplotypecaller_calls/test2_haplotc.ann.vcf.gz.tbi', checkIfExists:true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.bed', checkIfExists:true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/multi_intervals.bed', checkIfExists:true) + ]) + input[1] = UNTAR.out.untar + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + + test("homo_sapiens - [vcf, [], truth, [], [], []], sdf") { + + when { + process { + """ + input[0] = Channel.of([ + [id:'test'], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gatk/haplotypecaller_calls/test2_haplotc.vcf.gz', checkIfExists:true), + [], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gatk/haplotypecaller_calls/test2_haplotc.ann.vcf.gz', checkIfExists:true), + [], + [], + [] + ]) + input[1] = UNTAR.out.untar + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + + test("homo_sapiens - [vcf, tbi, truth, truth_tbi, truth_bed, regions_bed], sdf - stub") { + + options "-stub" + + when { + process { + """ + input[0] = Channel.of([ + [id:'test'], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gatk/haplotypecaller_calls/test2_haplotc.vcf.gz', checkIfExists:true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gatk/haplotypecaller_calls/test2_haplotc.vcf.gz.tbi', checkIfExists:true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gatk/haplotypecaller_calls/test2_haplotc.ann.vcf.gz', checkIfExists:true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gatk/haplotypecaller_calls/test2_haplotc.ann.vcf.gz.tbi', checkIfExists:true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.bed', checkIfExists:true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/multi_intervals.bed', checkIfExists:true) + ]) + input[1] = UNTAR.out.untar + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + +} diff --git a/modules/nf-core/rtgtools/vcfeval/tests/main.nf.test.snap b/modules/nf-core/rtgtools/vcfeval/tests/main.nf.test.snap new file mode 100644 index 00000000..4f39e2d4 --- /dev/null +++ b/modules/nf-core/rtgtools/vcfeval/tests/main.nf.test.snap @@ -0,0 +1,677 @@ +{ + "homo_sapiens - [vcf, tbi, truth, truth_tbi, truth_bed, regions_bed], sdf": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.tp.vcf.gz:md5,5171021307097220337dbcaccc860495" + ] + ], + "1": [ + [ + { + "id": "test" + }, + "test.tp.vcf.gz.tbi:md5,092a7a3162e7cff25d273525751eb284" + ] + ], + "10": [ + [ + { + "id": "test" + }, + "test.weighted_roc.tsv.gz:md5,de36bf613b3dacf4a043311336bb4a94" + ] + ], + "11": [ + [ + { + "id": "test" + }, + "test.summary.txt:md5,f4c8df93c8bdab603036bbc27b4a28c3" + ] + ], + "12": [ + [ + { + "id": "test" + }, + "test.phasing.txt:md5,31988234bee208cacb3de90dabe1797f" + ] + ], + "13": [ + "versions.yml:md5,a228f0d9e8b205b4cc7c485151a77bb0" + ], + "2": [ + [ + { + "id": "test" + }, + "test.fn.vcf.gz:md5,fc419367818700d47df073615aeb9077" + ] + ], + "3": [ + [ + { + "id": "test" + }, + "test.fn.vcf.gz.tbi:md5,092a7a3162e7cff25d273525751eb284" + ] + ], + "4": [ + [ + { + "id": "test" + }, + "test.fp.vcf.gz:md5,5171021307097220337dbcaccc860495" + ] + ], + "5": [ + [ + { + "id": "test" + }, + "test.fp.vcf.gz.tbi:md5,092a7a3162e7cff25d273525751eb284" + ] + ], + "6": [ + [ + { + "id": "test" + }, + "test.tp-baseline.vcf.gz:md5,fc419367818700d47df073615aeb9077" + ] + ], + "7": [ + [ + { + "id": "test" + }, + "test.tp-baseline.vcf.gz.tbi:md5,092a7a3162e7cff25d273525751eb284" + ] + ], + "8": [ + [ + { + "id": "test" + }, + "test.snp_roc.tsv.gz:md5,11d7393a16c25ac0a092382fecafee9b" + ] + ], + "9": [ + [ + { + "id": "test" + }, + "test.non_snp_roc.tsv.gz:md5,eb0910409b8b088655defbd152103b81" + ] + ], + "baseline_tbi": [ + [ + { + "id": "test" + }, + "test.tp-baseline.vcf.gz.tbi:md5,092a7a3162e7cff25d273525751eb284" + ] + ], + "baseline_vcf": [ + [ + { + "id": "test" + }, + "test.tp-baseline.vcf.gz:md5,fc419367818700d47df073615aeb9077" + ] + ], + "fn_tbi": [ + [ + { + "id": "test" + }, + "test.fn.vcf.gz.tbi:md5,092a7a3162e7cff25d273525751eb284" + ] + ], + "fn_vcf": [ + [ + { + "id": "test" + }, + "test.fn.vcf.gz:md5,fc419367818700d47df073615aeb9077" + ] + ], + "fp_tbi": [ + [ + { + "id": "test" + }, + "test.fp.vcf.gz.tbi:md5,092a7a3162e7cff25d273525751eb284" + ] + ], + "fp_vcf": [ + [ + { + "id": "test" + }, + "test.fp.vcf.gz:md5,5171021307097220337dbcaccc860495" + ] + ], + "non_snp_roc": [ + [ + { + "id": "test" + }, + "test.non_snp_roc.tsv.gz:md5,eb0910409b8b088655defbd152103b81" + ] + ], + "phasing": [ + [ + { + "id": "test" + }, + "test.phasing.txt:md5,31988234bee208cacb3de90dabe1797f" + ] + ], + "snp_roc": [ + [ + { + "id": "test" + }, + "test.snp_roc.tsv.gz:md5,11d7393a16c25ac0a092382fecafee9b" + ] + ], + "summary": [ + [ + { + "id": "test" + }, + "test.summary.txt:md5,f4c8df93c8bdab603036bbc27b4a28c3" + ] + ], + "tp_tbi": [ + [ + { + "id": "test" + }, + "test.tp.vcf.gz.tbi:md5,092a7a3162e7cff25d273525751eb284" + ] + ], + "tp_vcf": [ + [ + { + "id": "test" + }, + "test.tp.vcf.gz:md5,5171021307097220337dbcaccc860495" + ] + ], + "versions": [ + "versions.yml:md5,a228f0d9e8b205b4cc7c485151a77bb0" + ], + "weighted_roc": [ + [ + { + "id": "test" + }, + "test.weighted_roc.tsv.gz:md5,de36bf613b3dacf4a043311336bb4a94" + ] + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-09-30T15:17:31.564974666" + }, + "homo_sapiens - [vcf, [], truth, [], [], []], sdf": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.tp.vcf.gz:md5,5125ee41457c9d93f46b19e32788edb4" + ] + ], + "1": [ + [ + { + "id": "test" + }, + "test.tp.vcf.gz.tbi:md5,a0e9ac2d38c04bd591ab8f857c5c9133" + ] + ], + "10": [ + [ + { + "id": "test" + }, + "test.weighted_roc.tsv.gz:md5,5dfacd641b080cc8ad22eebec015c698" + ] + ], + "11": [ + [ + { + "id": "test" + }, + "test.summary.txt:md5,f33feb32f84958fb931063044fba369b" + ] + ], + "12": [ + [ + { + "id": "test" + }, + "test.phasing.txt:md5,133677dbd8be657439ea2b03fdfb8795" + ] + ], + "13": [ + "versions.yml:md5,a228f0d9e8b205b4cc7c485151a77bb0" + ], + "2": [ + [ + { + "id": "test" + }, + "test.fn.vcf.gz:md5,df96e4e4014cdb3050cb6f221f0cdca9" + ] + ], + "3": [ + [ + { + "id": "test" + }, + "test.fn.vcf.gz.tbi:md5,092a7a3162e7cff25d273525751eb284" + ] + ], + "4": [ + [ + { + "id": "test" + }, + "test.fp.vcf.gz:md5,d4bfa2c7271351ca19589f0f57f210b7" + ] + ], + "5": [ + [ + { + "id": "test" + }, + "test.fp.vcf.gz.tbi:md5,092a7a3162e7cff25d273525751eb284" + ] + ], + "6": [ + [ + { + "id": "test" + }, + "test.tp-baseline.vcf.gz:md5,920af25c3c18a438b11440702562fa35" + ] + ], + "7": [ + [ + { + "id": "test" + }, + "test.tp-baseline.vcf.gz.tbi:md5,95938320b425e28cf06c45ab45ad0360" + ] + ], + "8": [ + [ + { + "id": "test" + }, + "test.snp_roc.tsv.gz:md5,85edc0101bb9e8d3edc11abe4fdcda93" + ] + ], + "9": [ + [ + { + "id": "test" + }, + "test.non_snp_roc.tsv.gz:md5,30283ede3bcc5dd247f8a84bf345bf9a" + ] + ], + "baseline_tbi": [ + [ + { + "id": "test" + }, + "test.tp-baseline.vcf.gz.tbi:md5,95938320b425e28cf06c45ab45ad0360" + ] + ], + "baseline_vcf": [ + [ + { + "id": "test" + }, + "test.tp-baseline.vcf.gz:md5,920af25c3c18a438b11440702562fa35" + ] + ], + "fn_tbi": [ + [ + { + "id": "test" + }, + "test.fn.vcf.gz.tbi:md5,092a7a3162e7cff25d273525751eb284" + ] + ], + "fn_vcf": [ + [ + { + "id": "test" + }, + "test.fn.vcf.gz:md5,df96e4e4014cdb3050cb6f221f0cdca9" + ] + ], + "fp_tbi": [ + [ + { + "id": "test" + }, + "test.fp.vcf.gz.tbi:md5,092a7a3162e7cff25d273525751eb284" + ] + ], + "fp_vcf": [ + [ + { + "id": "test" + }, + "test.fp.vcf.gz:md5,d4bfa2c7271351ca19589f0f57f210b7" + ] + ], + "non_snp_roc": [ + [ + { + "id": "test" + }, + "test.non_snp_roc.tsv.gz:md5,30283ede3bcc5dd247f8a84bf345bf9a" + ] + ], + "phasing": [ + [ + { + "id": "test" + }, + "test.phasing.txt:md5,133677dbd8be657439ea2b03fdfb8795" + ] + ], + "snp_roc": [ + [ + { + "id": "test" + }, + "test.snp_roc.tsv.gz:md5,85edc0101bb9e8d3edc11abe4fdcda93" + ] + ], + "summary": [ + [ + { + "id": "test" + }, + "test.summary.txt:md5,f33feb32f84958fb931063044fba369b" + ] + ], + "tp_tbi": [ + [ + { + "id": "test" + }, + "test.tp.vcf.gz.tbi:md5,a0e9ac2d38c04bd591ab8f857c5c9133" + ] + ], + "tp_vcf": [ + [ + { + "id": "test" + }, + "test.tp.vcf.gz:md5,5125ee41457c9d93f46b19e32788edb4" + ] + ], + "versions": [ + "versions.yml:md5,a228f0d9e8b205b4cc7c485151a77bb0" + ], + "weighted_roc": [ + [ + { + "id": "test" + }, + "test.weighted_roc.tsv.gz:md5,5dfacd641b080cc8ad22eebec015c698" + ] + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-09-30T15:18:04.344989466" + }, + "homo_sapiens - [vcf, tbi, truth, truth_tbi, truth_bed, regions_bed], sdf - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.tp.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "1": [ + [ + { + "id": "test" + }, + "test.tp.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "10": [ + [ + { + "id": "test" + }, + "test.weighted_roc.tsv.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "11": [ + [ + { + "id": "test" + }, + "test.summary.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "12": [ + [ + { + "id": "test" + }, + "test.phasing.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "13": [ + "versions.yml:md5,a228f0d9e8b205b4cc7c485151a77bb0" + ], + "2": [ + [ + { + "id": "test" + }, + "test.fn.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "3": [ + [ + { + "id": "test" + }, + "test.fn.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "4": [ + [ + { + "id": "test" + }, + "test.fp.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "5": [ + [ + { + "id": "test" + }, + "test.fp.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "6": [ + [ + { + "id": "test" + }, + "test.tp-baseline.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "7": [ + [ + { + "id": "test" + }, + "test.tp-baseline.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "8": [ + [ + { + "id": "test" + }, + "test.snp_roc.tsv.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "9": [ + [ + { + "id": "test" + }, + "test.non_snp_roc.tsv.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "baseline_tbi": [ + [ + { + "id": "test" + }, + "test.tp-baseline.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "baseline_vcf": [ + [ + { + "id": "test" + }, + "test.tp-baseline.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "fn_tbi": [ + [ + { + "id": "test" + }, + "test.fn.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "fn_vcf": [ + [ + { + "id": "test" + }, + "test.fn.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "fp_tbi": [ + [ + { + "id": "test" + }, + "test.fp.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "fp_vcf": [ + [ + { + "id": "test" + }, + "test.fp.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "non_snp_roc": [ + [ + { + "id": "test" + }, + "test.non_snp_roc.tsv.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "phasing": [ + [ + { + "id": "test" + }, + "test.phasing.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "snp_roc": [ + [ + { + "id": "test" + }, + "test.snp_roc.tsv.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "summary": [ + [ + { + "id": "test" + }, + "test.summary.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "tp_tbi": [ + [ + { + "id": "test" + }, + "test.tp.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "tp_vcf": [ + [ + { + "id": "test" + }, + "test.tp.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "versions": [ + "versions.yml:md5,a228f0d9e8b205b4cc7c485151a77bb0" + ], + "weighted_roc": [ + [ + { + "id": "test" + }, + "test.weighted_roc.tsv.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-09-30T15:23:21.165461388" + } +} \ No newline at end of file diff --git a/modules/nf-core/rtgtools/vcfeval/tests/nextflow.config b/modules/nf-core/rtgtools/vcfeval/tests/nextflow.config new file mode 100644 index 00000000..75635215 --- /dev/null +++ b/modules/nf-core/rtgtools/vcfeval/tests/nextflow.config @@ -0,0 +1,4 @@ +process { + withName: UNTAR { + } +} diff --git a/subworkflows/local/vcf_validate_small_variants/main.nf b/subworkflows/local/vcf_validate_small_variants/main.nf index 63ca83fd..a74e5602 100644 --- a/subworkflows/local/vcf_validate_small_variants/main.nf +++ b/subworkflows/local/vcf_validate_small_variants/main.nf @@ -5,7 +5,7 @@ workflow VCF_VALIDATE_SMALL_VARIANTS { take: ch_vcf // [mandatory] channel: [ meta, vcf, tbi, truth_vcf, truth_tbi ] - ch_beds // [mandatory] channel: [ meta, regions_bed, targets_bed ] + ch_beds // [mandatory] channel: [ meta, truth_bed, region_bed ] ch_fasta // [happy only] channel: [ meta, fasta ] ch_fasta_fai // [happy only] channel: [ meta, fasta_fai ] ch_vcfeval_sdf // [vcfeval only] channel: [ meta, sdf ] diff --git a/workflows/germline.nf b/workflows/germline.nf index fe3e04b6..c1630087 100644 --- a/workflows/germline.nf +++ b/workflows/germline.nf @@ -654,13 +654,30 @@ workflow GERMLINE { } .multiMap { meta, vcf, tbi, truth_vcf, truth_tbi, truth_bed -> vcfs: [meta, vcf, tbi, truth_vcf, truth_tbi] - bed: [meta, truth_bed, []] + bed: [meta, truth_bed] } .set { ch_validation_input } + CRAM_PREPARE_SAMTOOLS_BEDTOOLS.out.ready_beds + .combine(callers) + .map { meta, bed, caller -> + def new_meta = [ + id:meta.id, + sample:meta.sample, + family:meta.family, + caller:caller + ] + [ new_meta, bed ] + } + .join(ch_validation_input.bed, failOnMismatch:true, failOnDuplicate:true) + .map { meta, regions, truth -> + [ meta, truth, regions ] + } + .set { ch_validation_regions } + VCF_VALIDATE_SMALL_VARIANTS( ch_validation_input.vcfs, - ch_validation_input.bed, + ch_validation_regions, ch_fasta_ready, ch_fai_ready, ch_sdf_ready.collect() From 76ed721c1f1bddb7a9f7a33d98a7e642c51d4677 Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Tue, 1 Oct 2024 16:18:46 +0200 Subject: [PATCH 003/167] add --squash-ploidy to vcfeval --- conf/modules.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conf/modules.config b/conf/modules.config index 7c54ceb0..ec4f3b91 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -506,7 +506,7 @@ process { mode: params.publish_dir_mode, saveAs: { filename -> filename.equals('versions.yml') ? null : filename } ] // SAVE - ext.args = {"--sample ${meta.sample} --decompose"} + ext.args = {"--sample ${meta.sample} --decompose --squash-ploidy"} ext.prefix = {"${meta.sample}"} } From ab6ffb11f3148d7d0339080b251974b98be0ef8d Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Thu, 3 Oct 2024 09:01:15 +0200 Subject: [PATCH 004/167] fix vcfanno input --- subworkflows/local/cram_call_vardictjava/main.nf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/subworkflows/local/cram_call_vardictjava/main.nf b/subworkflows/local/cram_call_vardictjava/main.nf index 203bdc7c..634bfc7c 100644 --- a/subworkflows/local/cram_call_vardictjava/main.nf +++ b/subworkflows/local/cram_call_vardictjava/main.nf @@ -85,8 +85,8 @@ workflow CRAM_CALL_VARDICTJAVA { .collect() .set { ch_vcfanno_toml } - ch_dbsnp - .combine(ch_dbsnp_tbi) + ch_dbsnp.map { meta, dbsnp -> dbsnp } + .combine(ch_dbsnp_tbi.map { meta, tbi -> tbi }) .collect() .set { ch_vcfanno_resources } From 80cdc602fcb64172f4c38e4a3efe19eb695a711e Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Thu, 3 Oct 2024 09:38:15 +0200 Subject: [PATCH 005/167] fix vardict flow --- subworkflows/local/cram_call_vardictjava/main.nf | 2 +- workflows/germline.nf | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/subworkflows/local/cram_call_vardictjava/main.nf b/subworkflows/local/cram_call_vardictjava/main.nf index 634bfc7c..5775c938 100644 --- a/subworkflows/local/cram_call_vardictjava/main.nf +++ b/subworkflows/local/cram_call_vardictjava/main.nf @@ -127,7 +127,7 @@ workflow CRAM_CALL_VARDICTJAVA { ch_filter_output .join(TABIX_TABIX.out.tbi, failOnDuplicate: true, failOnMismatch: true) .map { meta, vcf, tbi -> - def new_meta = meta + [samples: meta.sample] + def new_meta = meta + [family_samples: meta.sample] [ new_meta, vcf, tbi ] } .set { ch_vcfs } diff --git a/workflows/germline.nf b/workflows/germline.nf index c1630087..288d0663 100644 --- a/workflows/germline.nf +++ b/workflows/germline.nf @@ -632,7 +632,7 @@ workflow GERMLINE { } .set { ch_truths } - ch_final_vcfs + ch_final_vcfs.view() .map { meta, vcf, tbi -> def new_meta = meta - meta.subMap("family_samples") [ new_meta, vcf, tbi, meta.family_samples.tokenize(",") ] From 4fc3da06547b160e1a0e064bb3538605ca34a2b9 Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Thu, 3 Oct 2024 10:16:45 +0200 Subject: [PATCH 006/167] some dbsnp fixes --- workflows/germline.nf | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/workflows/germline.nf b/workflows/germline.nf index 288d0663..6bcd5761 100644 --- a/workflows/germline.nf +++ b/workflows/germline.nf @@ -219,16 +219,13 @@ workflow GERMLINE { // // DBSNP index - if (ch_dbsnp_ready && !ch_dbsnp_tbi) { + if (ch_dbsnp_ready != [[],[]] && ch_dbsnp_tbi == [[],[]]) { TABIX_DBSNP( - ch_dbsnp_ready.map { dbnsp -> [[id:'dbsnp'], dbsnp] } + ch_dbsnp_ready ) ch_versions = ch_versions.mix(TABIX_DBSNP.out.versions) TABIX_DBSNP.out.tbi - .map{ meta, tbi -> - [ tbi ] - } .collect() .set { ch_dbsnp_tbi_ready } } else { @@ -632,7 +629,7 @@ workflow GERMLINE { } .set { ch_truths } - ch_final_vcfs.view() + ch_final_vcfs .map { meta, vcf, tbi -> def new_meta = meta - meta.subMap("family_samples") [ new_meta, vcf, tbi, meta.family_samples.tokenize(",") ] From bee2757bde2eb376da16cfa6251fd361f77165fd Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Thu, 3 Oct 2024 10:22:55 +0200 Subject: [PATCH 007/167] some concat fixes --- subworkflows/local/cram_call_vardictjava/main.nf | 7 +------ subworkflows/local/vcf_concat_bcftools/main.nf | 5 ++++- 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/subworkflows/local/cram_call_vardictjava/main.nf b/subworkflows/local/cram_call_vardictjava/main.nf index 5775c938..bf8d6b2d 100644 --- a/subworkflows/local/cram_call_vardictjava/main.nf +++ b/subworkflows/local/cram_call_vardictjava/main.nf @@ -67,13 +67,8 @@ workflow CRAM_CALL_VARDICTJAVA { ) ch_versions = ch_versions.mix(VARDICTJAVA.out.versions.first()) - TABIX_SPLIT( - VARDICTJAVA.out.vcf - ) - ch_versions = ch_versions.mix(TABIX_SPLIT.out.versions.first()) - VCF_CONCAT_BCFTOOLS( - VARDICTJAVA.out.vcf.join(TABIX_SPLIT.out.tbi, failOnMismatch:true, failOnDuplicate:true), + VARDICTJAVA.out.vcf, false ) ch_versions = ch_versions.mix(VCF_CONCAT_BCFTOOLS.out.versions) diff --git a/subworkflows/local/vcf_concat_bcftools/main.nf b/subworkflows/local/vcf_concat_bcftools/main.nf index c88aebe8..1f26e502 100644 --- a/subworkflows/local/vcf_concat_bcftools/main.nf +++ b/subworkflows/local/vcf_concat_bcftools/main.nf @@ -15,11 +15,14 @@ workflow VCF_CONCAT_BCFTOOLS { ch_versions = Channel.empty() ch_vcfs - .map { meta, vcf, tbi -> + .map { meta, vcf, tbi=[] -> def new_meta = meta + [id:meta.sample ?: meta.family] [ groupKey(new_meta, meta.split_count), vcf, tbi ] } .groupTuple() + .map { meta, vcfs, tbis -> + [ meta, vcfs, tbis.findAll { tbi -> tbi != [] }] + } .set { ch_concat_input } BCFTOOLS_CONCAT( From 053c5672bdf75b2d9e7f93456ca0732bcbd0b460 Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Thu, 3 Oct 2024 10:44:20 +0200 Subject: [PATCH 008/167] move some index creation around --- conf/modules.config | 1 + subworkflows/local/cram_call_vardictjava/main.nf | 9 ++++----- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/conf/modules.config b/conf/modules.config index ec4f3b91..30f7589d 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -329,6 +329,7 @@ process { if(params.filter) { withName: "^.*CRAM_CALL_VARDICTJAVA:VCF_FILTER_BCFTOOLS:FILTER_1\$" { + ext.prefix = { "${meta.id}.filtered1" } ext.args = "-i 'QUAL >= 0${params.only_pass ? " && FILTER=\"PASS\"" : ""}' --output-type z" } diff --git a/subworkflows/local/cram_call_vardictjava/main.nf b/subworkflows/local/cram_call_vardictjava/main.nf index bf8d6b2d..d834fdb0 100644 --- a/subworkflows/local/cram_call_vardictjava/main.nf +++ b/subworkflows/local/cram_call_vardictjava/main.nf @@ -1,7 +1,6 @@ include { SAMTOOLS_CONVERT } from '../../../modules/nf-core/samtools/convert/main' include { VARDICTJAVA } from '../../../modules/nf-core/vardictjava/main' -include { TABIX_TABIX as TABIX_SPLIT } from '../../../modules/nf-core/tabix/tabix/main' -include { TABIX_BGZIPTABIX as TABIX_VCFANNO } from '../../../modules/nf-core/tabix/bgziptabix/main' +include { TABIX_BGZIP } from '../../../modules/nf-core/tabix/bgzip/main' include { BCFTOOLS_REHEADER } from '../../../modules/nf-core/bcftools/reheader/main' include { VCFANNO } from '../../../modules/nf-core/vcfanno/main' include { TABIX_TABIX } from '../../../modules/nf-core/tabix/tabix/main' @@ -93,12 +92,12 @@ workflow CRAM_CALL_VARDICTJAVA { ) ch_versions = ch_versions.mix(VCFANNO.out.versions.first()) - TABIX_VCFANNO( + TABIX_BGZIP( VCFANNO.out.vcf ) - ch_versions = ch_versions.mix(TABIX_VCFANNO.out.versions.first()) + ch_versions = ch_versions.mix(TABIX_BGZIP.out.versions.first()) - TABIX_VCFANNO.out.gz_tbi.set { ch_dbsnp_annotated } + TABIX_BGZIP.out.output.set { ch_dbsnp_annotated } } else { VCF_CONCAT_BCFTOOLS.out.vcfs.set { ch_dbsnp_annotated } } From 433e46d2625ffaafa1e55aaf05ccfa5a8471457a Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Mon, 7 Oct 2024 10:38:52 +0200 Subject: [PATCH 009/167] fix WGS updio --- conf/modules.config | 8 ++++++++ subworkflows/local/vcf_upd_updio/main.nf | 20 +++++++++++++++----- 2 files changed, 23 insertions(+), 5 deletions(-) diff --git a/conf/modules.config b/conf/modules.config index 30f7589d..7df0558a 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -545,6 +545,14 @@ process { } if(params.updio) { + withName: "^.*:VCF_UPD_UPDIO:BCFTOOLS_FILTER\$" { + ext.prefix = { "${meta.id}.filtered" } + ext.args = [ + "--write-index=tbi", + "-r chr1,chr2,chr3,chr4,chr5,chr6,chr7,chr8,chr9,chr10,chr11,chr12,chr13,chr14,chr15,chr16,chr17,chr18,chr19,chr20,chr21,chr22,chrX,chrY" + ].join(" ") + } + withName: "^.*VCF_UPD_UPDIO:UPDIO\$" { ext.prefix = {"updio_${meta.caller}"} ext.args = {[ diff --git a/subworkflows/local/vcf_upd_updio/main.nf b/subworkflows/local/vcf_upd_updio/main.nf index c7c96d2a..f9216939 100644 --- a/subworkflows/local/vcf_upd_updio/main.nf +++ b/subworkflows/local/vcf_upd_updio/main.nf @@ -2,7 +2,8 @@ // Run UPDio analysis // -include { UPDIO } from '../../../modules/local/updio/main' +include { UPDIO } from '../../../modules/local/updio/main' +include { BCFTOOLS_FILTER } from '../../../modules/nf-core/bcftools/filter' workflow VCF_UPD_UPDIO { take: @@ -41,10 +42,22 @@ workflow VCF_UPD_UPDIO { meta } .transpose(by:0) + .map { meta, vcf, tbi -> + [ meta, vcf ] + } .set { ch_trio_vcfs_family } + BCFTOOLS_FILTER( + ch_trio_vcfs_family + ) + ch_versions = ch_versions.mix(BCFTOOLS_FILTER.out.versions.first()) + + BCFTOOLS_FILTER.out.vcf + .join(BCFTOOLS_FILTER.out.tbi, failOnDuplicate:true, failOnMismatch:true) + .set { ch_updio_input } + UPDIO( - ch_trio_vcfs_family, + ch_updio_input, ch_cnv ) ch_versions = ch_versions.mix(UPDIO.out.versions.first()) @@ -58,9 +71,6 @@ def get_family_data_from_ped(meta, ped) { def output = [] ped.readLines().each { line -> if(line.startsWith("#")) { return } - def child = null - def mother = null - def father = null def split_line = line.split("\t") if(split_line[1] != "0" && split_line[2] != "0" && split_line[3] != "0") { output.add(meta + [child:split_line[1], father:split_line[2], mother:split_line[3]]) From dee3f8a12c50a083dde23b8f93268a390b5f23f8 Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Mon, 7 Oct 2024 16:41:12 +0200 Subject: [PATCH 010/167] add a --min_callable_coverage parameter --- conf/modules.config | 2 +- nextflow.config | 1 + nextflow_schema.json | 5 +++++ 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/conf/modules.config b/conf/modules.config index 7df0558a..56dc3939 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -85,7 +85,7 @@ process { withName: "^.*CRAM_PREPARE_SAMTOOLS_BEDTOOLS:MOSDEPTH\$" { ext.args = [ - "--quantize 0:1:4: --mapq 1 --flag 1804 --no-per-base", + "--quantize 0:1:${params.min_callable_coverage - 1}: --mapq 1 --flag 1804 --no-per-base", params.mosdepth_slow ? "" : "--fast-mode" ].join(" ") publishDir = [ diff --git a/nextflow.config b/nextflow.config index 872e8dd3..5e5e53ae 100644 --- a/nextflow.config +++ b/nextflow.config @@ -36,6 +36,7 @@ params { updio = false automap = false hc_phasing = false + min_callable_coverage = 5 // Module specific parameters dragstr = false diff --git a/nextflow_schema.json b/nextflow_schema.json index 31c7b78e..6619601f 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -302,6 +302,11 @@ "hc_phasing": { "type": "boolean", "description": "Perform phasing with HaplotypeCaller" + }, + "min_callable_coverage": { + "type": "integer", + "description": "The lowest callable coverage to determine callable regions", + "default": 5 } } }, From f248f4566fdbacaa2384fdc4fa0ee42a23ea48c0 Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Mon, 7 Oct 2024 16:48:28 +0200 Subject: [PATCH 011/167] update changelog --- CHANGELOG.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 015aa96b..565fe6e0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,9 +5,18 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## v1.9.0dev +### New features + +1. Added the `--min_callable_coverage` parameter to state what the lowest coverage should for a region to be classified as callable. + +### Changes + +1. Added the `--squash-ploidy` argument to the RTG vcfeval process. + ### Fixes 1. Validation of all samples now use an intersect of the golden truth BED files with the BED file used to call the variants. This should fix the WES validation which was broken until this point. +2. A couple of small fixes to the vardict flow. ## v1.8.2 - Outstanding Oostkamp - [September 30 2024] From 87527a778c8ac5d213eb840d29c1f5bfba1e9801 Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Mon, 7 Oct 2024 16:51:13 +0200 Subject: [PATCH 012/167] update changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 565fe6e0..d24639c2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,6 +17,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 1. Validation of all samples now use an intersect of the golden truth BED files with the BED file used to call the variants. This should fix the WES validation which was broken until this point. 2. A couple of small fixes to the vardict flow. +3. Only use the standard chromosomes for UPDio analysis. ## v1.8.2 - Outstanding Oostkamp - [September 30 2024] From c0cb243902026a59bc5361abd5af47339733f771 Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Tue, 8 Oct 2024 10:35:21 +0200 Subject: [PATCH 013/167] fix bcftools filter --- modules.json | 2 +- modules/nf-core/bcftools/filter/main.nf | 2 +- modules/nf-core/bcftools/filter/meta.yml | 73 ++++++++++++------- .../bcftools/filter/tests/main.nf.test | 52 ++++++++++--- .../bcftools/filter/tests/main.nf.test.snap | 45 ++++++++++++ .../filter/tests/region_filter.config | 4 + .../local/vcf_filter_bcftools/main.nf | 4 +- subworkflows/local/vcf_upd_updio/main.nf | 3 - 8 files changed, 142 insertions(+), 43 deletions(-) create mode 100644 modules/nf-core/bcftools/filter/tests/region_filter.config diff --git a/modules.json b/modules.json index e89e5bff..c3fc686a 100644 --- a/modules.json +++ b/modules.json @@ -18,7 +18,7 @@ }, "bcftools/filter": { "branch": "master", - "git_sha": "33ef773a7ea36e88323902f63662aa53c9b88988", + "git_sha": "f85dbddd7a335fc0f5ac331e8d22ca94123b654b", "installed_by": ["modules"] }, "bcftools/norm": { diff --git a/modules/nf-core/bcftools/filter/main.nf b/modules/nf-core/bcftools/filter/main.nf index 8f92c51a..36cbf8c2 100644 --- a/modules/nf-core/bcftools/filter/main.nf +++ b/modules/nf-core/bcftools/filter/main.nf @@ -8,7 +8,7 @@ process BCFTOOLS_FILTER { 'biocontainers/bcftools:1.20--h8b25389_0' }" input: - tuple val(meta), path(vcf) + tuple val(meta), path(vcf), path(tbi) output: tuple val(meta), path("*.${extension}"), emit: vcf diff --git a/modules/nf-core/bcftools/filter/meta.yml b/modules/nf-core/bcftools/filter/meta.yml index d67c0257..d72f2755 100644 --- a/modules/nf-core/bcftools/filter/meta.yml +++ b/modules/nf-core/bcftools/filter/meta.yml @@ -12,38 +12,57 @@ tools: documentation: http://www.htslib.org/doc/bcftools.html doi: 10.1093/bioinformatics/btp352 licence: ["MIT"] + identifier: biotools:bcftools input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - vcf: - type: file - description: VCF input file - pattern: "*.{vcf,bcf,vcf.gz,bcf.gz}" + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - vcf: + type: file + description: VCF input file + pattern: "*.{vcf,bcf,vcf.gz,bcf.gz}" + - tbi: + type: file + description: VCF index file + pattern: "*.tbi" output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - vcf: - type: file - description: VCF filtered output file - pattern: "*.{vcf,bcf,vcf.gz,bcf.gz}" - - csi: - type: file - description: Default VCF file index - pattern: "*.csi" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.${extension}": + type: file + description: VCF filtered output file + pattern: "*.{vcf,bcf,vcf.gz,bcf.gz}" - tbi: - type: file - description: Alternative VCF file index - pattern: "*.tbi" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.tbi": + type: file + description: Alternative VCF file index + pattern: "*.tbi" + - csi: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.csi": + type: file + description: Default VCF file index + pattern: "*.csi" - versions: - type: file - description: File containing software versions - pattern: "versions.yml" + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" authors: - "@joseespinosa" - "@drpatelh" diff --git a/modules/nf-core/bcftools/filter/tests/main.nf.test b/modules/nf-core/bcftools/filter/tests/main.nf.test index 646f37ad..fadff0e3 100644 --- a/modules/nf-core/bcftools/filter/tests/main.nf.test +++ b/modules/nf-core/bcftools/filter/tests/main.nf.test @@ -18,7 +18,8 @@ nextflow_process { """ input[0] = [ [id:"vcf_test"], - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf', checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf', checkIfExists: true), + [] ] """ } @@ -42,7 +43,8 @@ nextflow_process { """ input[0] = [ [id:"vcf_test"], - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf', checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf', checkIfExists: true), + [] ] """ } @@ -72,7 +74,8 @@ nextflow_process { """ input[0] = [ [id:"vcf_test"], - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf', checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf', checkIfExists: true), + [] ] """ } @@ -102,7 +105,8 @@ nextflow_process { """ input[0] = [ [id:"vcf_test"], - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf', checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf', checkIfExists: true), + [] ] """ } @@ -132,7 +136,8 @@ nextflow_process { """ input[0] = [ [id:"bcf_test"], - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf', checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf', checkIfExists: true), + [] ] """ } @@ -147,6 +152,31 @@ nextflow_process { } + test("sarscov2 - vcf.gz, tbi - region filter") { + + config "./region_filter.config" + + when { + process { + """ + input[0] = [ + [id:"bcf_test"], + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz.tbi', checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match("region filter") } + ) + } + + } + test("sarscov2 - vcf - stub") { config "./nextflow.config" @@ -157,7 +187,8 @@ nextflow_process { """ input[0] = [ [id:"vcf_test"], - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf', checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf', checkIfExists: true), + [] ] """ } @@ -182,7 +213,8 @@ nextflow_process { """ input[0] = [ [id:"vcf_test"], - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf', checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf', checkIfExists: true), + [] ] """ } @@ -208,7 +240,8 @@ nextflow_process { """ input[0] = [ [id:"vcf_test"], - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf', checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf', checkIfExists: true), + [] ] """ } @@ -234,7 +267,8 @@ nextflow_process { """ input[0] = [ [id:"vcf_test"], - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf', checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf', checkIfExists: true), + [] ] """ } diff --git a/modules/nf-core/bcftools/filter/tests/main.nf.test.snap b/modules/nf-core/bcftools/filter/tests/main.nf.test.snap index 3d7605f2..640907e4 100644 --- a/modules/nf-core/bcftools/filter/tests/main.nf.test.snap +++ b/modules/nf-core/bcftools/filter/tests/main.nf.test.snap @@ -1,4 +1,49 @@ { + "region filter": { + "content": [ + { + "0": [ + [ + { + "id": "bcf_test" + }, + "bcf_test_vcf.vcf.gz:md5,8e722884ffb75155212a3fc053918766" + ] + ], + "1": [ + + ], + "2": [ + + ], + "3": [ + "versions.yml:md5,9a336d1ee26b527d7a2bdbeead155f64" + ], + "csi": [ + + ], + "tbi": [ + + ], + "vcf": [ + [ + { + "id": "bcf_test" + }, + "bcf_test_vcf.vcf.gz:md5,8e722884ffb75155212a3fc053918766" + ] + ], + "versions": [ + "versions.yml:md5,9a336d1ee26b527d7a2bdbeead155f64" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-10-08T09:14:47.394005264" + }, "sarscov2 - vcf_gz_index_tbi - stub": { "content": [ { diff --git a/modules/nf-core/bcftools/filter/tests/region_filter.config b/modules/nf-core/bcftools/filter/tests/region_filter.config new file mode 100644 index 00000000..b18fb4bf --- /dev/null +++ b/modules/nf-core/bcftools/filter/tests/region_filter.config @@ -0,0 +1,4 @@ +process { + ext.prefix = { "${meta.id}_vcf" } + ext.args = "--output-type z -r MT192765.1 --no-version" +} diff --git a/subworkflows/local/vcf_filter_bcftools/main.nf b/subworkflows/local/vcf_filter_bcftools/main.nf index 5b397d6c..f27fb2e1 100644 --- a/subworkflows/local/vcf_filter_bcftools/main.nf +++ b/subworkflows/local/vcf_filter_bcftools/main.nf @@ -16,12 +16,12 @@ workflow VCF_FILTER_BCFTOOLS { ch_versions = Channel.empty() FILTER_1( - ch_vcfs.map { meta, vcf, tbi=[] -> [ meta, vcf ]} + ch_vcfs.map { meta, vcf, tbi=[] -> [ meta, vcf, tbi ]} ) ch_versions = ch_versions.mix(FILTER_1.out.versions.first()) FILTER_2( - FILTER_1.out.vcf + FILTER_1.out.vcf.map { meta, vcf -> [ meta, vcf, [] ]} ) ch_versions = ch_versions.mix(FILTER_2.out.versions.first()) diff --git a/subworkflows/local/vcf_upd_updio/main.nf b/subworkflows/local/vcf_upd_updio/main.nf index f9216939..225e9cd1 100644 --- a/subworkflows/local/vcf_upd_updio/main.nf +++ b/subworkflows/local/vcf_upd_updio/main.nf @@ -42,9 +42,6 @@ workflow VCF_UPD_UPDIO { meta } .transpose(by:0) - .map { meta, vcf, tbi -> - [ meta, vcf ] - } .set { ch_trio_vcfs_family } BCFTOOLS_FILTER( From 2d0a27f76a5e769c3328e527be1dae2ec5ee8c09 Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Tue, 8 Oct 2024 12:53:58 +0200 Subject: [PATCH 014/167] create bgzipped vcfs after filtering --- conf/modules.config | 1 + 1 file changed, 1 insertion(+) diff --git a/conf/modules.config b/conf/modules.config index 56dc3939..216a513f 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -548,6 +548,7 @@ process { withName: "^.*:VCF_UPD_UPDIO:BCFTOOLS_FILTER\$" { ext.prefix = { "${meta.id}.filtered" } ext.args = [ + "--output-type z", "--write-index=tbi", "-r chr1,chr2,chr3,chr4,chr5,chr6,chr7,chr8,chr9,chr10,chr11,chr12,chr13,chr14,chr15,chr16,chr17,chr18,chr19,chr20,chr21,chr22,chrX,chrY" ].join(" ") From aeff56b498fa7326330a82cfb16f08d53bbb2498 Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Tue, 8 Oct 2024 15:37:22 +0200 Subject: [PATCH 015/167] bump ci back to stable nf-core --- .github/workflows/linting.yml | 4 +--- .nf-core.yml | 2 +- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/.github/workflows/linting.yml b/.github/workflows/linting.yml index 9593436d..1e855a3e 100644 --- a/.github/workflows/linting.yml +++ b/.github/workflows/linting.yml @@ -49,9 +49,7 @@ jobs: - name: Install dependencies run: | - python -m pip install --upgrade pip - pip install git+https://github.com/nf-core/tools@dev - #pip install nf-core==${{ steps.read_yml.outputs['nf_core_version'] }} + pip install nf-core==${{ steps.read_yml.outputs['nf_core_version'] }} - name: Run nf-core pipelines lint env: diff --git a/.nf-core.yml b/.nf-core.yml index 7b994ce9..6d9fecad 100644 --- a/.nf-core.yml +++ b/.nf-core.yml @@ -29,7 +29,7 @@ lint: multiqc_config: - "report_comment" actions_ci: false # TODO readd this once the linting doesn't act up -nf_core_version: 3.0.0dev +nf_core_version: 3.0.0 repository_type: pipeline template: author: nvnieuwk From 44bbf656548c551156c05f1ccc2a80ae1247f94b Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Tue, 8 Oct 2024 15:40:27 +0200 Subject: [PATCH 016/167] small typo in the actions --- .github/workflows/linting.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/linting.yml b/.github/workflows/linting.yml index 1e855a3e..51c9a3fa 100644 --- a/.github/workflows/linting.yml +++ b/.github/workflows/linting.yml @@ -45,7 +45,7 @@ jobs: uses: pietrobolcato/action-read-yaml@1.0.0 id: read_yml with: - config: ${{ github.workspace }}/.nf-core.yaml + config: ${{ github.workspace }}/.nf-core.yml - name: Install dependencies run: | From c539c6fde339ab78bfb7e9441c47e4b0906fa90f Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Tue, 8 Oct 2024 15:42:40 +0200 Subject: [PATCH 017/167] bump read yml action --- .github/workflows/linting.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/linting.yml b/.github/workflows/linting.yml index 51c9a3fa..63ce0bf6 100644 --- a/.github/workflows/linting.yml +++ b/.github/workflows/linting.yml @@ -42,7 +42,7 @@ jobs: architecture: "x64" - name: read .nf-core.yml - uses: pietrobolcato/action-read-yaml@1.0.0 + uses: pietrobolcato/action-read-yaml@1.1.0 id: read_yml with: config: ${{ github.workspace }}/.nf-core.yml From fbcb019ffe3ab6ac9ef97ccde642cdc5039e21c9 Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Tue, 8 Oct 2024 15:57:09 +0200 Subject: [PATCH 018/167] fix validate snap --- .../main.nf.test.snap | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/tests/subworkflows/local/vcf_validate_small_variants/main.nf.test.snap b/tests/subworkflows/local/vcf_validate_small_variants/main.nf.test.snap index 7d04aca4..e70830c3 100644 --- a/tests/subworkflows/local/vcf_validate_small_variants/main.nf.test.snap +++ b/tests/subworkflows/local/vcf_validate_small_variants/main.nf.test.snap @@ -9,7 +9,7 @@ "family": "Ashkenazim", "family_samples": "NA24143,NA24149,NA24385" }, - "NA24143.tp.vcf.gz:md5,b28d3e84a6efa95bfbf673de310f62c1" + "NA24143.tp.vcf.gz:md5,0449f4185b63d0b988b7f9de6a6b2fb3" ] ], [ @@ -20,7 +20,7 @@ "family": "Ashkenazim", "family_samples": "NA24143,NA24149,NA24385" }, - "NA24143.tp.vcf.gz.tbi:md5,8f8356fd93e093e9deb1c2c4c72cb65e" + "NA24143.tp.vcf.gz.tbi:md5,637a1a87502b3764ad22017b16ccb3ac" ] ], [ @@ -31,7 +31,7 @@ "family": "Ashkenazim", "family_samples": "NA24143,NA24149,NA24385" }, - "NA24143.fn.vcf.gz:md5,99830701ae0191110b706b20abe56857" + "NA24143.fn.vcf.gz:md5,688c27c6785313c1a0ac9fdcf430e0eb" ] ], [ @@ -53,7 +53,7 @@ "family": "Ashkenazim", "family_samples": "NA24143,NA24149,NA24385" }, - "NA24143.fp.vcf.gz:md5,2769bf65afefc821fe54a8b314b5d2be" + "NA24143.fp.vcf.gz:md5,d11b30ab764bd9c3f8294b51043a3e1a" ] ], [ @@ -75,7 +75,7 @@ "family": "Ashkenazim", "family_samples": "NA24143,NA24149,NA24385" }, - "NA24143.tp-baseline.vcf.gz:md5,6de63c7e2fa458ca88ea78c36f579056" + "NA24143.tp-baseline.vcf.gz:md5,748b2b41e2f5916fd0e5fbc2aea60d3d" ] ], [ @@ -86,7 +86,7 @@ "family": "Ashkenazim", "family_samples": "NA24143,NA24149,NA24385" }, - "NA24143.tp-baseline.vcf.gz.tbi:md5,8d399004d8c45fa795b70da32e23a6d5" + "NA24143.tp-baseline.vcf.gz.tbi:md5,8c1a12430a7714b000c11e471175d6e1" ] ], [ @@ -108,7 +108,7 @@ "family": "Ashkenazim", "family_samples": "NA24143,NA24149,NA24385" }, - "NA24143.phasing.txt:md5,38920536b8c3e241e873c07ba61762e6" + "NA24143.phasing.txt:md5,dfcf0fc6ad7e98c737a7a0afaf2c2733" ] ], [ @@ -119,7 +119,7 @@ "family": "Ashkenazim", "family_samples": "NA24143,NA24149,NA24385" }, - "NA24143.snp_roc.tsv.gz:md5,d29e7796d37dada43378e466af98c35a" + "NA24143.snp_roc.tsv.gz:md5,306d33ea1cf1d797d0f52234d2ff901e" ] ], [ @@ -130,7 +130,7 @@ "family": "Ashkenazim", "family_samples": "NA24143,NA24149,NA24385" }, - "NA24143.non_snp_roc.tsv.gz:md5,121b8b67d40efcaf1aad5064c6f3bfe9" + "NA24143.non_snp_roc.tsv.gz:md5,31e6719897dd4f7d3d0a9cb4943693cf" ] ], [ @@ -141,7 +141,7 @@ "family": "Ashkenazim", "family_samples": "NA24143,NA24149,NA24385" }, - "NA24143.weighted_roc.tsv.gz:md5,f016f9a10e793836b9b53d702e591454" + "NA24143.weighted_roc.tsv.gz:md5,e1e87f61f55f976162be76fe993423e1" ] ], [ @@ -221,6 +221,6 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-09-05T17:41:19.06545291" + "timestamp": "2024-10-08T15:56:00.946806992" } } \ No newline at end of file From 185cf2321824de3f444d780efd13e61a3d26d264 Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Tue, 8 Oct 2024 16:06:39 +0200 Subject: [PATCH 019/167] fix vardict snap --- .../local/cram_call_vardictjava/main.nf.test.snap | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/tests/subworkflows/local/cram_call_vardictjava/main.nf.test.snap b/tests/subworkflows/local/cram_call_vardictjava/main.nf.test.snap index f2057a7b..db27da80 100644 --- a/tests/subworkflows/local/cram_call_vardictjava/main.nf.test.snap +++ b/tests/subworkflows/local/cram_call_vardictjava/main.nf.test.snap @@ -8,8 +8,7 @@ "sample": "NA24143", "family": "Ashkenazim", "family_samples": "NA24143", - "caller": "vardict", - "samples": "NA24143" + "caller": "vardict" }, "NA24143.vardict.vcf.gz", "NA24143.vardict.vcf.gz.tbi" @@ -31,8 +30,7 @@ "sample": "NA24143", "family": "Ashkenazim", "family_samples": "NA24143", - "caller": "vardict", - "samples": "NA24143" + "caller": "vardict" }, "NA24143.vardict.vcf.gz", "NA24143.vardict.vcf.gz.tbi" From f3d5642118158da95d2a93e36c00cc48e761ce72 Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Tue, 8 Oct 2024 16:42:36 +0200 Subject: [PATCH 020/167] fix updio test --- conf/modules.config | 2 +- subworkflows/local/vcf_upd_updio/main.nf | 22 +++++++++---------- .../local/vcf_upd_updio/main.nf.test | 1 + .../local/vcf_upd_updio/main.nf.test.snap | 4 ++-- 4 files changed, 15 insertions(+), 14 deletions(-) diff --git a/conf/modules.config b/conf/modules.config index 216a513f..faf165df 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -545,7 +545,7 @@ process { } if(params.updio) { - withName: "^.*:VCF_UPD_UPDIO:BCFTOOLS_FILTER\$" { + withName: "^.*VCF_UPD_UPDIO:BCFTOOLS_FILTER\$" { ext.prefix = { "${meta.id}.filtered" } ext.args = [ "--output-type z", diff --git a/subworkflows/local/vcf_upd_updio/main.nf b/subworkflows/local/vcf_upd_updio/main.nf index 225e9cd1..7c3f3a62 100644 --- a/subworkflows/local/vcf_upd_updio/main.nf +++ b/subworkflows/local/vcf_upd_updio/main.nf @@ -22,6 +22,15 @@ workflow VCF_UPD_UPDIO { } .set { ch_trio_vcfs } + BCFTOOLS_FILTER( + ch_trio_vcfs + ) + ch_versions = ch_versions.mix(BCFTOOLS_FILTER.out.versions.first()) + + BCFTOOLS_FILTER.out.vcf + .join(BCFTOOLS_FILTER.out.tbi, failOnDuplicate:true, failOnMismatch:true) + .set { ch_filter_output } + ch_peds .filter { meta, ped -> meta.family_samples.tokenize(",").size() >= 3 @@ -30,7 +39,7 @@ workflow VCF_UPD_UPDIO { CustomChannelOperators.joinOnKeys( [failOnDuplicate:true, failOnMismatch:true], - ch_trio_vcfs, + ch_filter_output, ch_trio_peds, ["id", "family", "family_samples", "caller"] ) @@ -44,17 +53,8 @@ workflow VCF_UPD_UPDIO { .transpose(by:0) .set { ch_trio_vcfs_family } - BCFTOOLS_FILTER( - ch_trio_vcfs_family - ) - ch_versions = ch_versions.mix(BCFTOOLS_FILTER.out.versions.first()) - - BCFTOOLS_FILTER.out.vcf - .join(BCFTOOLS_FILTER.out.tbi, failOnDuplicate:true, failOnMismatch:true) - .set { ch_updio_input } - UPDIO( - ch_updio_input, + ch_trio_vcfs_family, ch_cnv ) ch_versions = ch_versions.mix(UPDIO.out.versions.first()) diff --git a/tests/subworkflows/local/vcf_upd_updio/main.nf.test b/tests/subworkflows/local/vcf_upd_updio/main.nf.test index 1507c48a..2bc15720 100644 --- a/tests/subworkflows/local/vcf_upd_updio/main.nf.test +++ b/tests/subworkflows/local/vcf_upd_updio/main.nf.test @@ -12,6 +12,7 @@ nextflow_workflow { when { params { + outdir = "${outputDir}" updio = true } workflow { diff --git a/tests/subworkflows/local/vcf_upd_updio/main.nf.test.snap b/tests/subworkflows/local/vcf_upd_updio/main.nf.test.snap index 09731d58..fa31d40c 100644 --- a/tests/subworkflows/local/vcf_upd_updio/main.nf.test.snap +++ b/tests/subworkflows/local/vcf_upd_updio/main.nf.test.snap @@ -14,7 +14,7 @@ }, [ "NA24385.events_list:md5,c61379c7a4bb61cbe9612b5cda773cf4", - "NA24385.log:md5,a40a24f379127a9cde7e40a1ce1032ec", + "NA24385.log:md5,ea4c71f55c4a53ecdc74f00659ea161d", "NA24385.table:md5,ca8165fc7869a113ca034396de7cf579", "NA24385.upd:md5,d41d8cd98f00b204e9800998ecf8427e" ] @@ -25,7 +25,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-09-05T17:40:47.828005254" + "timestamp": "2024-10-08T16:42:16.968323682" }, "default - sample": { "content": [ From 9444ea7afff0dd1ea2b6edaa86edc83c07aa9040 Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Tue, 8 Oct 2024 16:48:42 +0200 Subject: [PATCH 021/167] fix vardict snap --- .../local/cram_call_vardictjava/main.nf.test.snap | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/tests/subworkflows/local/cram_call_vardictjava/main.nf.test.snap b/tests/subworkflows/local/cram_call_vardictjava/main.nf.test.snap index db27da80..cfcf4314 100644 --- a/tests/subworkflows/local/cram_call_vardictjava/main.nf.test.snap +++ b/tests/subworkflows/local/cram_call_vardictjava/main.nf.test.snap @@ -52,8 +52,7 @@ "sample": "NA24143", "family": "Ashkenazim", "family_samples": "NA24143,NA24149", - "caller": "vardict", - "samples": "NA24143" + "caller": "vardict" }, "NA24143.vardict.vcf.gz", "NA24143.vardict.vcf.gz.tbi" @@ -64,8 +63,7 @@ "sample": "NA24149", "family": "Ashkenazim", "family_samples": "NA24143,NA24149", - "caller": "vardict", - "samples": "NA24149" + "caller": "vardict" }, "NA24149.vardict.vcf.gz", "NA24149.vardict.vcf.gz.tbi" From 599216aef7d7eb2efbf32f41162892efec992dfa Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Tue, 8 Oct 2024 16:58:23 +0200 Subject: [PATCH 022/167] fix vardict snap --- .../local/cram_call_vardictjava/main.nf.test.snap | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/subworkflows/local/cram_call_vardictjava/main.nf.test.snap b/tests/subworkflows/local/cram_call_vardictjava/main.nf.test.snap index cfcf4314..a476cb3c 100644 --- a/tests/subworkflows/local/cram_call_vardictjava/main.nf.test.snap +++ b/tests/subworkflows/local/cram_call_vardictjava/main.nf.test.snap @@ -51,7 +51,7 @@ "id": "NA24143", "sample": "NA24143", "family": "Ashkenazim", - "family_samples": "NA24143,NA24149", + "family_samples": "NA24143", "caller": "vardict" }, "NA24143.vardict.vcf.gz", @@ -62,7 +62,7 @@ "id": "NA24149", "sample": "NA24149", "family": "Ashkenazim", - "family_samples": "NA24143,NA24149", + "family_samples": "NA24149", "caller": "vardict" }, "NA24149.vardict.vcf.gz", @@ -74,6 +74,6 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-09-05T17:38:29.203806206" + "timestamp": "2024-10-08T16:58:11.678281371" } } \ No newline at end of file From 539c12c36188066f0600ed0949dcc6b28f5bdc2c Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Thu, 10 Oct 2024 14:34:38 +0200 Subject: [PATCH 023/167] update docs --- docs/images/germline_metro.png | Bin 236083 -> 250229 bytes docs/images/germline_metro.svg | 399 ++++++++++++++++++++++++--------- docs/index.md | 6 +- docs/output.md | 12 +- docs/parameters.md | 177 +++++++-------- docs/usage.md | 36 +-- nextflow_schema.json | 201 +++++++++-------- 7 files changed, 502 insertions(+), 329 deletions(-) diff --git a/docs/images/germline_metro.png b/docs/images/germline_metro.png index aca566850a1b9ac12693fbabae4aff2c8827f4d4..05e012ea17a8080c2dfd1c9718c9dc4f296ddd15 100644 GIT binary patch literal 250229 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

&8#TtEDZ51nD-?HV|(L7HapbfUSmXFmSv~=$* zVl)j0*VwHNqQ847d<)#>5^w@G7z;Rpak}(#Ourk*J1WNa7<}8}QKgswJ^!kR#l#a8 z3|-2F{O5O9!-sFn+gjLuAHxTB?|^nxd36EK85g-=q7%oVMHGfH<+Ca;F9UIC$)yk9-3|bfV{jAq_DJ zH&Yftb%m2_S65z9F?pL-_3xT{N$IkwEa{vu4`Yu1T*EO=zrJXCsSNe445VF0=`Z{7 z8M;l0Ca|f2mDC!coDVVhmVBV<_58bxbK1-U7&?ZalA%bd6@n-bR!CM5FLYxl8{n6Xsg=akY+udd$AF;k;gY?FZgGo;OFL zy!00oYz0PWt$D)lmFEb6u1MrD8(w0bwK1n1RQO>U&)e>{491$Z#KE;=`R`t(bWiSE zeH!@1Ba?)9jSEZGE(l8%7^4j!a%#B8EA<7JF1_AttO8jOq+ynTAX$j1IW&Ou1*y_s zQ!8!Y1@jje=ziN;nX~xhpeW#Q0f)zKhp5-yR0H47qCb%0az7$KmOA;MZT&|nId%Mn>b z2v4wXFOMRFN&8FFyiU=*KHjxb>f+@Qo@b{Oxy?d1491m3&TPp?hCKC`*blV=miPuN zQCG=JgPhm+9pJ+J5Q;mARWFhTFk<`JCi-lRFn+I@o7W0lsShAkF$Z*2OKwiP($7(b zd2bPbFp|8fB%PNWToJ}ubz3!B8Kt|KSZ;0})!m@QkL@;vvU6z*kJhe5c8po*;=yn? zoZ2}6w_~37;N9!86#zpu-OpLfb-puy@%!6)2hEx(5j^`L$!y?WkBo8PIY^Aj`%(@I z?m-?SZp`oRMwTH|rS&m@1^kVGzPwFKg}Se!ojp#13lKhU^VN@vI9ulH``IpkSSXb& zwZmu-V5?->lL-qE&_zVOXREi|a+rh(0bl^16PtS=3FtN=C5Wl{&AYeME&0$TM&mY~ z6{4O(pjP+EWoy}!Z>&I(66-r(yI6l+el0Id<*1J>?k8m`&ry9)XID@iYW1jk=_YG= z8yc1=O^9VxQBFP#5sz0{vCUhQI+)E_+<RP0h;fXoi7mqOUj z<)~07%II}k+5_T$evte}+t6Bf9#EpEwO68-%v@NKA(e=9F^@3o3AOFh+amgni>s)O z1Q^++;vTKRxJyx>i)3%0M3vEafGWuUF6h?{?Cp24!9E?u?dicCmO8j4`M;ee^e77bNftV(}Y&ak=5(?>U8LZAxK*4=Q3ESm=0#+(3(azTnVW*O%W*ElM}l=vo4nO^Vs|8?i_m7MuDY0eJV4G&$?U%Y^ z8Kp3)rtJY@Z*PT31N^JS8JB7yKQ!Qra)<3m@#|#0dw~`(l6-1y^H2WOo5lbhuDh>e zw&N>MdF{cELyYlCN}W;BA!RD-sHd&BzvCItD@56>3lrV``jpA-GC6# zmPS&FpOVh>Ku!n>M>mFQc;Mk0C8zBB$5F(!K-Ao?hL?sDm1aOr$#Vpd@^Ao%(4`L? zjU4*k9`_=WUTNcz+^3$V=PxEIS--!bvIo2z+dyq@u`RuP*>r&YS<&FPPS98890tO_ z9_ZBg7p<5o)>FXdmQmqlZy`6yZuVkbdhAcI9ARPPXAj;o<~*eeQO$+cEMZ%3R!%FQ zeB^wAEBW^HvBVy$8rgLO?1%C>i{d@uUdj+PT^>+}7h_zm$zsDi9uP_*k`fVfbTHxe z^!3&V3Gw@;|Ga)T%APOOf6;qm_l2XpO&5Gc?aMkPbkWGQGc>~gqe}AygD3M3O>lLY zP;bZWmx*;RJg4TqNDh8lbyS~dkbU!%-IRp)&SN(gKX&lNjXz`|#;S&$WE|j(6kV{= z@x)g_k+U*H$~BP?aLsg|D+OaY1;BonUgw8M;SLIlPai&fsx^H6;DjEgW}hr%d_Oj) zFs_z&;>B+k3N6{PkTq?iit8L-zX^a6Ghq4PVve);V1CM zK{L4awEa<`w{@9)6%A+dw)z-m=Wg{2t4+Xu?U1H||J3hczRL)`8bSKs5C*`>9HH-` zV-Z6U?C6fV{;eckOKkJK%{CASR3XTBsBHXQrbw`}ux>fsQUET~$ClyVJ;6il~7Ut`P?dC**)( z2>XPyucp5&hqH)f^cb$!1)Nz5uHXMqX+<$8*Yrsx+oB{b)&g%_rj(4EtWW|EVT z!wDh)Rq$x8UJsS}XyG>LHdpaVCvdva1|y*{pa66P;$sLgA>1PLiF9G;BO!Q*Z_~SO zK?uha);($^2zXb1tRO{_gg2sj)QT6t7{I4!!z>*y3ckHXxp1%Rj0?{y0#2YVaK=Fs zLPME2YC*^JTZ!zHn@jEi7hJ(>4!s|gwtU!OPe~ZrgV6XuCdy7nNB8%q7xrg_R0HkZ z+hYxtb&k7|FQkC_ZR*E3WI9OTo*%LTIvl)J|1JCA$2^yj^son0fE|+mbW4 z{AH9)alvlJ=TTVMI$ZD*jgdar+Ln*r=HGiVXL&h6mkvpa(<_UXwq!M2qI~K~bay{m zT*?)W3fv!N|>VgN!2f;*+@wQSrPRU72x^8?V!c^i06pT zz-;rj$`^i#mNi5M@Z&GWkt{V9+BxZ0rxjTFN_=yJqQIvYD!gw82kj%_nX;6?YSE>< z`JmO9Gp9nPn4;z~nV3^Iz_yAsTR2}^zt^|MM$FDUCSo|iPsJGzgxsUU`@=jS#0}n9 z89qwQe_hYLXONnv1s1*K_|F9Jy{Tk)fWC^>GB47fBn-Uy=(>^0<`bDc&L6PfkqMZb-KHW*7+`&;(MTHB+!M+fU+ps>#>xHtRg57okakbaYKK~EZ}JwVG5A%j{My) zhGPXIk|AF3#uhThpikqEWu|v?i;R!pjFgNluHATuu!=pD^1;^b=k-OnE$_RaFGi_u zw#D=(zk-S2^+F1Bv-zMXMl;6y1($>r@Z6N?XhLN=4Nc@tF0U3ithP|3rfHZ}A z=PRb9qd&#gXP;)Sm*&A+)GW+$*DC#nzB#bn`G&n1vJqQWy7ky`xIHLMa;ElVnB;#W zTYc2`jD-6bB59j{dck}w?H=FV@(d)#-K@U!V->*@y|LmGxz6Br7|$a9GYN-nN6${u7w{*%^i>al)i+4>U7kW!a7rf>&jo&{@i@9HJ%-K zE4kVqCC)m7X;XCkn)}nh?`s9;Os0%Sg5A$kv+<ryL6`jAM@=AR5Ju2KqfxI$ydYY7H3n4ZbGr2g!ZwCfJ$rO$P^6(V>|`@K zu5n}kj3UFa(#TaI;x0z9^U*xyk-qXX-#nPU@DI4#wvDH2xpiSB40Tb_eP~6I2e(94 zChW;JknqEBP(SHrnHu351X_K3u{|l+9pyWJ*GDjLcebbT^3%`H_K-p`foVR35-L== zc9J#)oC`A{7|oESPI>m{9Ja#(y7>2Equ+)*Vd^!XwzS9B+-xh&5{ z(yMq{HvdKK1{+n7+qK{Z6Q72bMZIuH`s7Uh;XU)87OF`S z++H5Itm%2O>O&HQv_$YXWZSxQbxAh**6zh&z-}6H+e)G$B|xIyTLM%rjj1HnZEGOgLibp0d^MBV32VJO@yO68ZDyy5d$pq3?5w^0iMF8LOxw5WdmvC< z-7mHf$;6`loewTXHa0tIxBr%m*BQx0H_oQ^EnT&F5souN;>poTS!`$wAMecIyFI%| zTb3detuG`HS^Gm#qv)BN?Y4=zYJPCL{z+tTS+;@Xf)m0JGBJ<#7#4$oog@g~;Is2n zo6yrwts;t}2kW2v_RlehzB91OY>)sLJ;#37*8MYf{A&7Q4X42NSNaDoc?i!# ze$t#D`{H5&OwqTv)|$s9_Dv2;k|NJ!obZLDcC^wYkD6tGjpzuzLslag6#I_D8F@zF z!BCzqOk$0%M^K=B^p}@wNO3J^x))Ivt2jy^hlgXJ7ikq_9wn;M=G0EY6=yp}$dzi* zCgPv)^ZH{n^02`YvrGu2EM64-WC+C+^{EV4Q<#uA$855_TBSx9OjarqDT(T!ERC_Z zep1?1QQ?j-Ll`4^j6#JcNWwDzK;^ hszK#kmar_HR6suSDxl@E}cOp59C60ueir zHYxC+BepI~t7iC@&Cr%Fr?UjMqMkvUQ|Yn$nE1X+<#89exV?f5LiiVFiJU`ZrGCNI z5nua>2_Z8r{Xk&$GK2`pf=l#wbdU7wE3wBk`&Iu-Ub4Tzfia%9u+LiQF6KHcO^Ks7?fb?30pK zTw3jpit=mQ8?QN;x{>EDQ z18qeYA_7Fz>5Ah^hVjFUkwKx5rn?{MB}^FaK-7R-E>qq^LL0w|C?LH6Fd4Ypfeip+ z3R}dY8{AFct9!HoYW!97?1a|Oet>~ zWfqR?^DzR$K7`k zuj8&%J$9J=0m2CF`~;;1bCS6zOlV-PnTFRK9Kbftbw_(&Es4GS#p~X(NPPVXJN?+J zmNgvlcGxw(&6N@aQa%lTkwdNNLx|?Se!L8a00ue;O=Ko;yGi9l-6{!^E24Wjs!cudK%GyC@8}Y}PTOFMF zr(rx2F6jZ6J_n<8l~UNB&KX`s6`#UVg9<7qhWJBL*L{I1pkyEk7p-H5(dNJ<^FcJ+ z2g^fdXcx>-oItJXDrYJ61g! zP%iL_=Jr*`PWCz*(UnlPna4uS(LTTu+XJ%W)Gfa0f%9IIg8)0)9=FpxI^G^!#hD0P z9Cnb3+-c#Wq<=~+ZziQ(pQf1%@59uoDWsHSJvAgF|0K(D_N#(tN%nEPX0k;b2eYk` zL`94}yWOUJ#qA8vF}vWI$O1C8{Hcc^qE>uV8F zvCAI#S8=r=M5y;Ka0;TsNPY(Y%Hg&l^!zA;iE$u@OM7;xGekdk+CCa!XsLBa8(aC_ zP<&V)8?9n3_4JI;)2%&OHTs5C6C1|Cwjo;q0;%rxnZM0TQZKin$j~=*R*|hsQcNes zYnGy@7ZT3>(b+?`MqS>Y8ocF;xsf1NUxM5YlwcG_bCFifJ{-c@sPI#(uUktNLN0rA+~2012whGRuX z`PlfxoRgH%j<(pJ`i5Tls&$5S!MkW@<*98uXqRwD{&Un z6SSJh6N`)BDJ%Eg=BkFf$v3CI)5vGWnb4wfkgq-lE#NL;CEGV<4=27J%BOpT`S%O9^2YfOn0TtN3S( zJ|JI>cIGYn#R6q4&^{I{NokdBg%JwmPTwMhO+eBd>ls3s=!*+3$xLao)-a!u_dAH^ zvwlxubEc!bP?DuugGj9-RtE@{K#pPJlZ##!kgXmz86(4w8+lm2wIs9E&2mZ7zJggE zTc=HhPD`tId#&Y~$=OPDjlej`3`YfMQ-iC8maD#hjvOW%XgiK9iw3y;#d2*pIC7iY zmZWQ>?JFr`pnYUBD%89Dsu?mNkks**11AP8d}l7;uCj#NExnY{=v1_S<~FcJ^}%`Y z@L`$soMgQpnc?e6(6%(i-s4ZBTaYHP8b-U4CI9Hr-_pvC4&H9+q_ICw_Hn)zGwvIN zZ#le49UYI;?3K1_z6St!`LDN7qN=h?ikN=E0c4Qf$%kw=3}!x4mg}EH>+Q5~y(_P| z!{~X>Qb$k0rp6w8Wrld$I)mIciFO$8z+4*3Pvma8?1jD;;BLk{6<0j43Z~vOt*!0# zDaN}JuG^&uOcEiOi%$+(#vDeH#BIYOMA3hzWskx|`}Xs88)2h-qwBXjF@I;ALv>N1 zWZY%u7JN2*qVkH)tC(G;&9oZhGei|^VqTF2wqwi_o^_Z50{JasY=B#Q>DKT+Lsv`q zN$KrWaNi~(9RY<%%_7(6%e$qLcYGo*i^%niWvs?XCai;Zg4pFpO{sOb}1ev*g=%v^p=DM_Az5v_yM}V%O0Z-&b{kmu<~HmZ-mVdCc=`FlDCN;$T9fend^+5<|3e)xEU#iIgaSS!?DIrF2~jftq<{+C;@++EJWv zc)Rl1TkdPHrXqvV6EN%Er7M5dcNKaYh6q_W1f87_LGbL^#6PSy;M+O-+XqxTI~;O_ z>^)u^Erg>8Ma=4=0T)AcsY_hU@7%#bmq?g4=bLLOR%t#MITQgH#P8G`L>6Q}{5E8E z5v?ykR6T;)O6`g5Df=tbwp7gpA!Z*LF5ua^E!>5M3yJC307s9QgeS5D9jcYIB}vpo zB!w?Xx>eM%jk(2l_MT9V0M_>eC@IFgj~jh9mN7waa-$7@dCAn~X5g+anV~};!RMvp zv!2Pt9tWMW!x`GSF{(%zgdE}?1|xHp(Q_I`4xo5`*xd+4MBnQPHwg(IquxYM=)-!U z$b8b+qfFFAqWrof$qAkmArrwZywSE`$D~fHr7RZ)sc2Th^FFlGDr>N=tx}hJ<1M`8 zUL3cgK6dxUHdQ5s4&j_9w%O-smO5(}vzs+NYOgaK0dK*DNVpJh6C8m;{EK_HIuf2bLaXx?jF9AH3Nl^q zC^POHhD&($mq9Xkw|2T(b9_~H;|+JbBp%*)2%cM{xH8e&RZrDAUP*T!xRxe5dddYd zk!=93VYkcw)*4Mk4au3F!zjvo4eLd3qvb5-5V(Y> zBE~dGau3FG_}~MB!AnR945zEwPMO=ch0>V13E@$uukztopTsCWIBw%4qr4&8Jy}V$ zC~@^6n=`{QT$umXEpA>oKLh<2=Im*)=#{A&(DUub8aZKZkna(pq}5*cy0-jZ!R8C% z0PlBGK%!ansEy$Q9Ma_E?WQ6jM|3K;C?U$1G)vzyf%MlAkQv@?Mo30ah7fpi?NM@< zQIwH)N*8Val3r^#ZF59!6GN{;KiN<$s4j>}_$(l%9#FJQA%h5M2o)kXqHp1cVEIH_niT34q4!fRhGNwP=bdgxg>C1#~dPEnY-Q(xgdc% z+=jzm;l`-|_uW%D=#?P9))h4e1;-Pe2R(xD60(6-H0q+&G!aS$CL4NQTo1XooOHvT zsI3jxZ90IZUsN#5S&*pbTz1*RugQdk)24k4=jU}Hp`~{>n`bEBxAw)}dY(W+fbE@h z*zKNr+Y{VDBRz~R$u@&75GgmJT^F`guIfn#5V(kX^mR^nH4V~2JBWTuuv7|6X3?q7 z8j%}~U9(rNlYBD1UR4N#-|F+A-lk~JT=s)S7`U}H#CgoM2XX*}vi8%Zcp!F0HqaV_ z>P@~is)*aZu5>o0OPyy^@=Zl0;|U+i@stiiDN(OY3jPD)YhDB6gauv3&SAe=E`^7fWdUg;)hdCy23FqbTg z%pPRKwDg>bud?%>l=iYOU;>xpViD8PyaQF3%je}6Yzy~oJ)q&@U0 z4V1%SxR+&3lMz&?4iH_RhO*xZ)4<&(FNOq~ zr_xBi;9W>a4;mWNCv`)SfQy7$M~^Bgc1nzQ&H}Kj-!+7iO!3S3$r$e@;$1FaOqk;U z?*$cNV`CY}hO{&nyzAJE_P^&07nH^w|J6?RcKrKw_% z$ZjOmBYq>07L14KoI-YT>)2nm#IWFcgWK+_TM*fyzg5n6vxI495$A@u$>OEei9ve0 z=QE;p#p_)59-FQUx4u~#*jE(M;m3a3o-r7}Zqh`*Y&Rj;QMS8H8>aZ4A6uiYr^KW%WBt4k{lfw zVtJNYSi8(4)w0}k^$!Zp=;_~8mjH+4j)YvHXvbgS1%8QO4wm;{Pmz3j&598Qj4eTJ z7eHFBb>LI->C-D9ys`Fdv%=8WxHp=Nfko{34F-OlQa)b@0j?E?oRN*ao{*TBbJLep zojFxs%IhkBOU2m4mvIeMT}jESTU4JOi%3R@g`Lfze%-m6MI~$=c;$9das#}7hAVqP18=0XEu~I9SuH_yp%_OLmCTg z^9P$mo{H8>lE#*ict7yaE9K%yk!}iWUwhg}DaVt9&aTN=z(#-Bb(xO#c%I`U-r9z5 z7vxdZ$lDxiQ-2}X+h@>)d#~@$*$av0T~7O(I)Vu+%BJGyWuqaY#;2C3Uq)Rdg)n@J`@fR%QZWC+PN0B=pK@?Kx~0ETgkf$!8gM=k656iY*r&5-jB z;}KDDTX2$db~l)@xGiFVK3inoONtEPt@%(heue}C`KA#m0{?hX~Fe$PH`F}?dr z+u$3Oz4J)JeQpJl?uBk&L$rgcr{%+j(|;?7S^KCYHHC<+ZRS>dm0Y|Kje6#5Pr z_jA5?%9DyMaU&z^x%Dhm7XKaSEUN_NgI7te+nG^Md%aHG9=^R>Ti(zcgv}EL4hr+kwJw_VGiL`OfGs`y{dUHuy@hlXq|0 z`c_g-S*iN*%eCLwuU{nlJblDW!1%Q)*jj4pi={VlTg_m%+ z5?qDNF5kes_SYgtpq*N9TnG`eYD23;B0U0s18@CnsRy{qh*l9o(P%K=RBX*h)dA=u z{5N#;1{XrxA%MoS=B|BN z_N1Dv6r^Moi4pZ>=5IY-(%-Afm!hAVM_%e>(f?I~!j&*Da4g(U4_{@Y^)zny^BKM3 z)SG(n+%W5vq>^R#1)3@X0Bkgj5wSx`q01?HZF)7(bV$^YT^y;A(^SnOkxUUO?b+uE( zkp29&dB|iB`4Ca`X43_!;b*6!-p=@UryNXB4Qo;khFywscsK=e8`6dOS)Dtb7+p4z zPqszOrDn=<`8q($Ef&cTIiEeP5dCtseo1nazj7M-B+2K%8*2wSdEklY%$4Lk8Z?QY z8P3UswKO>z+G7)Q--*H2K4O{A%lai5{+WirL<6Wnbb`@_T2k4EBHA=3_-&&RPW@6X zf-EXjrp9wu6^+i0e5btK0=(^Yp=czK)FkEHM_xXsrU2dah}oIH zojNWQ3*!BSxq(S`Q>RbWRmYd(A7P~e%meeZ;MmP>6Ee+OIfngk^6d@GXb}dxE5?0B zVr%>9B{8=bz*F7zm5?K6No|==CL8D*y7t<=?Fu6BD2Apdx=i>H6=?OGdbVSFjBIf3 z)OH;m>hz&DaRU?a5#e;j^NQLUYH*e35=noEZ6%bwG2F`HST5yX2T}`Pjjj&K7<1u7 z!~#kB310AA=_W3_u@uX6udyZRaF7wn6Ad**d`eI3zRXA&I7H!U_(L2Iv#?!ZN?N9< ze=j}%NV!AolSzNpw#LyP722#qIV@SD>)n5~F#pNYe!(8p1!Y6L`!BrP9VeCpJ^2ok zAYK>#)#*ncv%Ch$(u3n82QZzt^_6&x(uB0YeM0rpjt!EcbLe%Z&0C{?$?PQJhR_$u zVwYUek|*T7j*uO)@fTz0Q0K@_7eWf-qlOV_B7Z97p4k-+7gh*PQlK50R>xj=lckx6 z+wQ`umeI{i@Wfdx$#KR{${OmY4DxoRlY7K0)w1+l`BgolCor3#WV-=1Y4I&cA*k!K zE&TqJ*!N4D9l4dCjI^o$cOS&OC$z|vCB1v!SUl9K#(vSO&gD1b=DN{WeG?H>XqR|i zhE@3Pg>>(8^4+%F_BEXkr7GY8DlIn4N?Hyx75LxZcDijXV_x|aHSwB1%o#qaS~r&- zpKOZ$sW7E`-8hnAIoUyUg+;e_<^ONvQBQ9qgA&1RE}aAApB(?@8o5n8&1GsRfZIHI z%X4i$gFwHs93pbHIaPRk?*91l`*HuXVY02=^e=6CY_XsDM~Yg8^$>q`zZ3tjb&CTz z)NGZKzfxZyF#=Y&hM8Tr$ka3D9tn@%ZoPN)rvVZLfZG3_Uom&SnT(k}8sJUo?cK3a zJ-N^G{Vo;TKOhYNO?guBFO2}&g9^E9-~s8v_a)g`R!Zx7!>Hc>^`+qu5uPa;~{Z=~R>Wn8zA0N6P%^9IGS&$ijJ-AjDbC*$5wY5XVWz8t;p zFW1aAt0}-;+20>xji6Vy=i?+MR`|`*`{mWs9xRr%hTn;K z|9g{X=B&1v0Kf}+*1%94MolSH*NornXRLe8_F|ft-bLh#)a$A zkoP-`5JQ+|*~Os}EuUPTy!qc~$XORE|Bc28c%SIMM1InrB|JruOe`kke^~xN9RE-41?VR?#1SOde3fZ3fJPO@A$*{fXBes4Q|Qnq z-tzoWRL}qYTHUL=Dc~_G#L{)As@JRaLD2o-eLxBW8-2fa!fiw6X$8r*v|DResNDcDiHB z{P4TDP~%4t|F?;#_z5kIH*d3LOGF%8ckkzW&^_RAuHl^hTxqW-(DHIc9y02~6%da9 z$S{wD_17wbk*VbW=38M5a7uUFFvud|z3fcYdfTUHndRpE z#^f^hF{8{VK<~PKUTzze8IP&o`6h6%?DuPB7T5`7d${e7?ABR*jQX!vtS6es1kD<5 zc;iL!L{Qde>Gu#K^mQLP0-&6Ha0`+Bjh^@Tuyu69AHR)ocxjOvbLscQ(!(rk zdf-v==}{mwyfb?7zcK!f_g?t@Z!N23brf=0^Mmk%=Z_9TghQ7|ibuZ|)aOdWQYY1g zp7&AZ7;*Xv+ZmK3zHB}7;*j*h#8I_9&L^*AgZ7@eZog+eMoD1y3(|jzFQN%3ki{T7h`Y&i@QUzKFK*n`tQOE+PRx6JC#awI66SzPl)2pT1o7QwH zl;zjon|gWj4cy-!)LZX_w+;kdyX((W482FFM;ctUhC0zT#o0UCnJ2Gcqc8ijHV2V8 z1Y7*n`F}7X0y7p>dmsMWyvE#X7$>~R%xicM&r=uJ#VJAJ0ge6!C-Qq^D~mnpd;2Xt zM;q3jcYl%Gu?P_F8_lsUw97VosLVLF|HzCJh_XLr_3MC%+&M4@%0zs^u`h4}HoHAQ zB*F76flZo*|3(He6gRq4S29&A(FgRSuUsJN1Q!~Wfu!dQS+wx0J546JpR~b5^SPKy zjisQ_h|dvo(SC#__`3wn>lQRIIHl6yDyY!85nb>v;aDaXtoXgtY(r0vO4 zd1FhSO|s(oCg@)=EOXF~T9Hx`61N2>Dj8=_3nRXX^=9m&77=b3MVXVA_?9<}fDs;( zce0~GUjZ7tX|UIK7DEeLu0@}NJEBMhhpJ&$5!>JoGdHcu1y4IYv2qNxRfHVu%YRf( z+dIk5zoYw#cXj{UkdBxzs`2nv)A76C1nTNq%iPp+9t0Cid9$js#QO*e=&~B$TFjc> z1*ne0nf6(uk%Xv=cu-ZQ&fZ0uL1TXBNeAL-tV#l17}Mn~yXjXA06eQN5&X{JZyr!= zu9_Y`jSgq84wUhLz{Q0s*EmiOVW{!9RF`Wyi}uw++0*orpC z@W@?qBE%Yf1Bs_5(ab%U?05s%J+%dBnY8>|UsUW?!l!cQ1K|Y|BeyT9elXarLg^B+ z#S5kT`mXg6PtX^v5?gpTwVbj3SeoH&I$OB;nF1ci8YUee8!f`?|H?07aNPm=cS41xOR`wYQs8Cn4F3?@o9y)5 z=|{@+PJyYxw1K31C;#IDlo!oO)rW2c%>6_(Bis;uvCHasa6NgYTm!#M-3N*IZ@SeF z+J8njTBdd40X~+Wh#2!3I6%x#T7498x^0te|NzJ7VS{2=`9i=Yo%*M-%M*_;?4*`>Q^3YcH{>kwz|-2;|>Uf zabu&iHOq`0dZpO6@9M~f_>Kv)l`p7T2xdDif{BRNk3~f8pMpNThKacnNHn8m|3Q*2G@w&ffje%q#GlE~p^Z1&dfAyzHGsvq!Tjcr2xuH!|-fJm?F6!`b5 z+q-J)z6Stof@~lOJW$=9ypO|&($P^SbMqb{=3#wee8RFdw2*>!at|i(vq@EF&P@;O zO|wwv>Mc^RKD}Zc8bj84O#c=$SY-$x%@N^zGfhLiT0j%!9#g4KGDI3+aOgG(*2;(u zAc2EmF}!_KV(Y1nw}|<3ND1Il_e!W9-ga5oQz@JgB(EOOo9C-c&l-=e5w;b^w&0}k zptn?y%NnPQFIOvB&7CFz0>7Cl4jq z--mwbo%!eep!>M6c~J4;AwXGnSoKRWAy^mta!88uATbwO))@9oDoL>y%?fac{omI8 zr7Q~|UUzIi5Xx!fwChVU!?V$FkP5FFMy-cXw&YWj$*;^QynIz&l_O6F_qs2mSAuE=cQ%D$oJ zAJ$tV3ZjQir3l0HvYKXYoYrTfS22ycLy9rwD{};0L2pGEtS1l2w%C~JME5UJL1!hS zktl7Qm7orOzJke(W35vvfC#rsmLBKP!&1dx>1b-AM2oqbd-I(6W1C_on_<*Hi^^D) zwVa73^8@=|=+m1i=>ueGil1B;nWC)}x1RXqT|{ivAU&BzvO{Nox^?0=X+hhMera#L zM-4dxK3|}$)$Lr@RG;eP_+N=#*>LxG5%K@tN9A zT{(EW6=w?g@n5{u*>4-L3Yt%_nJ)?gZT;w$af?*&&P&V8ZiHe3F_$&4t8Zv5 zFK8kLv8dNci7rZyaSgTzy5Z{ED>pO>|6@D7PJ-ew!c@?fQsXv8L* zG`4?m^VDoC@(By-ukBvAfsf$w!3#kBTCdJmY#BGU@cKr?eE;wRkji)w$X8Ts0}nGY zHnw>B;a<(dMuGb{yy~23pJ>04RM@XM@&(M{@HVmXIBRs{?>X^$fu%zsG8Yz%nNB;V zvm4o2FhdbD+mhtw>jkUYyN6Xsuac&^|GX&hS>u^ZwI3Bo^uVKy(gXIP>S=6NsRt-viSAOQoT~6`=8zYafQa5Wb5A6k&+Pe>yTP&s` z_UAQ1HWvw+oeS$j&H_?RbqzZl>eJd?AVF|{=z25-mzeN@9W zB!Q|g6mqb0mTd5ww94FRo>#<@`S}9Hm)5lQcHAILB{C2NJ+SKRJQ>(?opxd;m*|}R zG#4gfbtvRMvF{=QW00o*qpQ)4AiTfhDonvCfh+mrRtYy|Iv+ zKEBlwcH@|?@Po5%N0A%mGV1j)h=$up#$6+zqnOsZIu{-4uvx&AH9di#L!23bAB@E8 z)IZ1dASR-*$D9k#y7>8~8?VZDD3>wV+-Ybu`EY@eTlqft(VMD;DGulyn4LrnBS=aM*E<8Y9YH0laJV$@iEXZn19&mYhK&vXAHz3QHO z&biMy@Aq|G@9TYD3FGv>d3n=vxqdBN(ltwgo|vL1!aG$WM% z^=zi&#MSg>OKFgBjcC;F|6Lw62w-@XmNtlS?Z0mlNMN{h`Gh76+l_xLB|4vazVP)} zAnwf-sQi2D`C*@ zGFo7imi1(LOG3ij9m`vo>{|16^j}DP#{_N8_Km%Xc}NZm))x`_QtEqTcl$Y;2|kU? z%3A9W<7yS3QaV7hxMkHc;X#CW*~@=nArOqj9dW1v1pzW0$}spqWcSp9UV-B4Ssi7X z&U!?7xeal6SE#$*Z)Qm~tIDZ!?!0!ht>OzuxFVYH@=@4Bw5lp51s;UB)bX(qzoH5Y z%m3QEh9)#|hz$Nx!l3Xg9x!5&ug|~t{!f)`(ckiLuy$eROzvJj1RX^BFnE)<<5ev$ z>m@|s)NmuD^Ul_VW+A|7tA4%p@bc_0U@LmNoO#NzBb^3qC6yta$Q8-W{6 z*r|?I{CVC<3^9IzD6(+4ap0Sue32Ks7PSyL_WE`@`opDk3YPI(d?jXc9`}-xvsuCN z6wwpi1jS0Kvt5O7HPAF*#JDAoVH1C9)&XG1jyrTN<=(8x!ZEj+_8lZ@xzC?pyL-#d zdQK9Vd!hn$@>^o1?3U3+#IOCxEcDjN-Ds@z4^>cY)=CnXMKStMwXtqAe3+>zVzOgc zb915#SgpQyM?1tGTuUL}C+oj?f6&Fp!$_`|nSs7Wv@r;Jnp`#YY?5DhtR{j^j(vbU zTNtld_P6t2_?GvHvt^EQI4x{__b+!z%VE=-Nq;*kG)skro_Z#&DwcpM)wOW8zx@jdUW`c2Mn$Jjm=E%Hjb z{O2Dc_dc%bPIN>hf{HnuNPmOO?fwaL=_E?(-AKFNb@MHe(4BK3!CfyT?}siH^yut@ z{zsoE4a@$jI@SyKVaty2KM|izsa`&Cj|{8r76HPeeS}m!zDzOO``BzW|7$2+ zB?~-+|CT$z3HcXn9Lq*V@z&{9R7=vWg$6IDsfP!vs+c)=Z7Nz7h@?V<>jKaAagk8h zau8?nWedHQ__6}@);UaJd(NrEOS{Mo&b)5MBmn*Im20XFZZtvj}ndt0+7ey?Eq;lQbIvF%y(6U3G}2GzTw z3CrX%W|m4P7{jniDGS%P*PP&rkU=Q+S#rW_SrpVrFu`zZsu!=zAk|qlrHZkwIyj9~ ztlxQq*71Z_WLnw5!dTK76Vx$Kc#v<>J{-Q+yMpn|q6_rO`(FFPF!K17+x91vIClo{ zwF$}!jJk41Pl-d7#L`{im!hpe#(M;&rPhxUafGii!knho0NVufKrf9>;JsBa70@2n zT}9jZK-hA&(}W6)cFG~tN$v6Hjli|bCGILxOb7OGC-$|$%dkv$_d(QkrH>f%a~=H-W}2iG))Uw{&j6} zzu$MsTK0BiGT6!JxU7Cq`j zV&37)yY8xk6ceKf{Sa7mijt0I1N_rFXiKc!B4u8(V~R8Q@$-rL$4c3uk@kA_;z~r) zOOLqOXPa8BzmC1eS>QZkoyS>}DWVizxKhK z5{)DG7+o1&M%fY;M>qBlScFg5Ju!&l#9fJXzFz~%oiex!lh;@$xU?_soSKrs^+#Kf z_EIm)`S6b1%DisbxmG-O;D8)$h>%T3H<{huI)j^`H2d((d$Ba8Xnf=z!;@N!e-lzF zy=_Kry(z^iCh=!lM5{gBcED9s59e*1Xe+k8M$N)1X1^6Wu&liFcJCNcPxX7wQzuXK z0^$Xh%k($;(w0oa6a?h@(p7ux?&Vvb%7H|3RhlWrVztE=R6QzB81(keZwF9|oN}ii zT?2~%tkNsqCu|+MtN5`z4=gOhCV%SY{TD!xr-C%#()s=EovtWu4azS&ESjx_+y-q9 zho99rckv#yiS6HT%G%ka@&+V1F%V z!V6fwe#e8JXTgbT@hAZXV&QmSf>(=~u$GP}&7#DIHCP}$Lt`Z8dD$-WgUqD^W8wK6 zAbu03DKG^Y)np40gRTi{oe{-8T4$?qK5&RF`J7tQWU#Sw#V>2}sZ-0dPE)fjlH3N` zaJ%L4^H_iIQ4I*LIjGOMxEOA*oV`*BG=mDwb$Mbg{<+tXzA)Sn`yy1 zx5&@@xo5uV+S`w~KmX}gt}CCH*K`ZonWn5cT`xa8pEsmBmp@)%Qd5z7YUBg&Dm8z6 zvfED#g-EC}c)M45i|DK`IV}_0`(*spU(8$J905f7qM>CC$;P|6!NqTF9$m?ACNb}- zqkKU_wUzprq~B{(dZXU;MxV6$wKtFK{oR@=DJ}0FT|H-ZD`{5HNm(v?gwWgSoxvZQ z8`34?)^cj)P{?C!zcI&4lG16-tZ6J{BjA~p;pM`dW zJuouVZd#_KNos|TMQ>ht^9~&t|D^w987(ja+pjR4bEtiX3mK_4oVw?;*eK|v>B}!3 z64Zb#DxJ-hK7A@o($Ow!ZxTPAPB_1T>Mnmbs$E-i`j%?5(fjn%${hx{qx!9Ln6VZ% zhf@y^>S@`<`+D4Gi_{E-C!eq9aIz`%@?dv^^NnI@+`8&romv+{z1mkoK8@7u%5_!& zm(o0~VPp$S{V4UI>$~*T(yEKxUPw)3T$6DY>>O`iJNKMFnF@;hczq3B!IVR~Mj0t|! zpXa^=B($I2saBrMeJ8KgM18gs=+PQ#YX_l9r80RK7_J1GwZ{Pn`aSc+*=?hqW-}~L z2~@G?W%xa&@afxF8L{hz8G=IaVKG%Z3{}ggHG4>5sQ3=EH#W^%-8x5~j_my6MDQu$>>;6+V z$}XLt`06C^4M^cH$f_&{4Dh*=$Xs`L7|)3AJ!z7yl~vdJkGA8w;lVafnjsp}c24&p z>#F(%V;^FR11#8E^4A!5(Ip}dL>}JTX7hgv&Sie-mReDRSig)!#3w?9T*58BpnfN! z5VzU9j8z*y z-r1esSdP1Ve^Ky2sKpU(!1IDtjJIS{SF&uB%>nYzAK8D0)1|YV2hlin;JVh_272}C zCPfOsPTD*_tG4p=gzO#9xD&E(J4E@7EKPgcJ8UXe&yAeCT@O@qp~+2 z9(wrs;q}`ooNZ;)vWXhgS-M z>TVkB>C==!Cq(kjpPsD!rl*SD9^Lj&g|2!+@g;B99AZ1QR3^>TnYpc!p$-Irmj#SvfORj91hpXwA$Emx8Wvwft%fd*I4I^t;pF($bm`GU8`$;D1eQvG-h|eR*>) zD2E22hB_E@pBAhO;c>c4P45$DR`tjN`{UD1{Jn0hjJRNmsB~AeEIetMTa8^Xo0D?o zE)P@C;<8k7G4LD0sJ_gO8Qg1OX~?w7&5+_n@{%4-r^*=(5gvkHMvc4zT);FIGm|LZA| z4M8N%eH|Fy`BNn+5q#noHkU`5&X0aP%Hd&g-7T5ZhcRXXrH+im6e8Z9J`*G-7bf1K z_~S~LhrQ7!YC9r&QQy}QboXEI0e6((L- zbMmkB?@!QPV)K6_eZ5N}t9O4NgWbEsCTknkAB>uI%D6bj6Kn<(I!b$;PAI-GP?4_b zeQg$Bzp^{nnR8NZuSpl~C57vOAVbvpCC=;%faDVFaLhofS;dH$&PI4@0p5(g~GrJu|Vh&C547{fVVeEJ8Yz3Dg+e zgR8aTMPV2&_P{M~CbbfWMr#E1`z_m`2#p_Akp?@Tth1NY2@A$&p04MhO<)*-X~Yh9 z-qktVMWeSXz#4_e?Q%h^00))PKy~AOMvPE#{g>;P^FM!y8ow>18~Q8AsIXt;qy5U= zSG`$113q&Wx{**xoAI0DO^^>^$U@RFk8dTY#oK&bje8p>*vc2UV#$+R@NHRrl#F!a zg9F&>n0xcw5nQ?t;C4K=E1=CqB$~1YMC>a}tCe-|l!1H-fSDmNu@+cVc;%Cm%?Rl}0eY)a9Z#=GyF|Jr2y7H8b+cte7^ZWsC z>)|K)oZq%%Lr*Q*a7SL*DN-Wrt+C-KvB(E}uDts{uB&j4NUz}2Z6kst#P2x=G`5`g zwa&UUZP@yvYJO%9$o*d{yj|~~JE_kz=M25>L9QO#2jUZxH-Y`8A15&uP07oYTr{B& zmke!Dm*%l`PUA}rP3rv}*@v$^Jv6i=nyjb)9zs3l;1m~dKA8p|G&@8$NzI`tq1!oCjs!yKwCad|O3)(_Q(8 z&-CF7kz_yQfyD4=?+OFiULXGBJ{gJxRA+^`U)zz1riAA%e+=xk^gD*{>wA5iht+IP zCMF|p@$^4Em&4UHb?fa}{w3)K8bJC4#p9X|GbVR^G4_z zl`hRtKva?xi=*+xPFZnRhgbMhvC|vB6=w*=#5KPCwF%w67UbODO?Grtq#w1DZtUWA z`Oc+P1o&xBUs>of&ZoQ}RD55wkGZnUpb_HUPHKW+x=mH)s=6MqO~D>mfq7;tV$jGAr}9sx3Vb$MQ^_E3%r?8fgA3 zeRN(ufBPu#bV?~amvN(_BHbD#G4Ok&(6PhTk#RjUBXthgqr@4u-G~Bm*$m?e5oBnh z$d!B<8z#_M;PP12CoKnc3IV49ig?xtiSU2-+c<;!hce#wr>1>fc_UAMm|mmO!kj2@ ztN*T{Y^HGfU;n%0)BnHw#nR2f44C*ZMPQ*}|5poO*Z8X1XAbjw`OhmwOZ{tUL9c?m z%&w)?+K&tk{-=IQfnNt>mm=j1Uk=oHfZ;e6e(vQXzQT*2?k)|MToO9(i8=OBVbv#Q z#R{1_#caXPW0i*{q+Wnlej`m)yft&RZwsc%A`hyQMo%zhL51fjVnZ$oCpy-cc6k@r z0(yia21$|DQ=?!@Nhx%pytXrr2ScoaQH^>Q{gPer%rjNKdeQptBmwm=6F@h66|N?< za72!AB!If8iBe#T;9Ik$P|}7rtmh$jA;eF#dx2U0x1EI6nJW3#1(jq2cbLhN$f;7@ z3K=lICT7RMP$%N?rfl8}pKI}eSWxy+LpF;iGS+8 z_rOJDgsn5Evopmh;}RDk@R36roar284OxSs%sUzpLv^arq^Qh^y|UkoFs%m0a{6rd zM$soR@eBTXv~2X|l0&^obY1Vt17ze|(GKt--MvXnwVq2MA8&c937=8JQCY+-LfO#_ zVwG%_oW4T7*8^kHt=L-4rwTqH{KdEuD%@23vi{ft$kwC1KX+t0>u0DW?(A6>z{3sv zdLUrKlX8_i&6uO;G1+#i8MO#(4CzH1_q=NO0q|2?9wtq8fDy5xMQ4F2ix8`)Hwbga zpD+wY7yU9-!SLZdZ{1(g60mfJ`=k^0HBnE}2}F49wUX5*RbDq>QCWBcKde>H9)~5jS@-xdH>TDl50o%vMU){2FC%-VtrzgLD{aRTp zz{S98oh}`97vQmi>ag!V<^D$Fib8)lBz$Dz`up!`^GC_DWNZ5q4#g{7xEXkDE;iYC zYn8(j5@1;K;TSRE(%4t0GvaT8eT7}2HwNbfPemWcb>PBqvQ>MTC8kQ4wkX<6$X#Cd zZ4OoirrL8Dh!g9NFB%nMH`#$n1hJMQFZPR%`DzRlUG$d-&Yc1FS3r6;fCGhVuVcwJU>{mCWNe1_(Ze>?jhS@TMpJ2+79QVcX0sOcxWU#YolsuTWukZnY+re#s5ai4qFqG_R>YN3~XI@##&t=hO5$)4Sm*DE;SG9XWQ-^E2>2 zARzj6HaQQXDz)Cm#mTie#3p=n4q4^4PrxRBSYk%zW=^PKUI^}5Gc~e$-hHO-;EkXb z7yG3#nej0tpxieEKi9%5vrV7V@)OqyR z#VIN?PJIHaO-jC3h1{j{RNeZA^+E!v$9)QVW z3|fo_cS%s?uvLHiyREzvo);?kZWycGo1`qjrss2xwm29nHw)+;NY9U1>YFsL6^*}$ zBIU#$h_Eq%GL_q~F!kE06U4ziI@1;{gOg@(HD{;vO3HPmb0s8sN%QSHKBoM(#7^?i__rJ<+5q?hiR?rGAji;IX= zhkzR=O*Bn_I*j+Z=U;L!G}M*s!$)2|FCINn|7iWHvpJO_fYZIjxpUj)=H#mvM*Nyr ztHwL}Uo$0dXr@E*)v1C8?-ez;>tidAs6(d{nM}`N?riMnw<72#SKB-UfG{bhw~DX|6RMPJ5407HeK>xF^^W+u@;0aGiP05KkP|{>vAi#{IA5Nb@Qer9 zNk3>pZ?NZ*)7~c?s1`#+?z(p0$?(LrYe6VgOz(^n@zwg)vi?rQ-qB#z`cYEam*zco zmX=Wy6EAx?pn~mRjy0~eE!JhrurkL!h{sN4Ww?s99Fqah?c!NsM}3mGqGH1#{XTe=m&xhQ$*j zy0SwIFybJEed*^LNZg2gCvw6*bW5_UQcJL26R~2i-$7n5rk&BhuvtBXVmAsBV4UY= zim}cC>wO^ZDA~g*l)=aReHxQ^FftZMaw&r^uEMmq>knJ1!aB-vemGL>+ueDWq_v}Z z45Duw9bDKC@}&;mn~KX3+VR`0`xn{q&K1ab^d3Y*4La}zVJbQF-6LDmm5b~N!?uzX z^H|}vqT+7`PtC8}>t85#HJM=`ng{DjeL*12M5dq`-S{9ACJR*!g(RpFSFkR^6B`_+ z=0N>)x}M6dbY>VSp#NqYdXn&97IIRATw2096|r$Y$`#t28I5g=;+oj&(HIGb zh3V85(f*-CH=-(B2#MTB8lJ58Ei_l5AY?Aw%}P0;rHd!K9%OK7Uwx0RmJyF)ReJV3 zu!cw6;)wp-c-qGH!Sn`4bYGR%+4U=pIy$x$ib_lif>Cw%V>- z`j78d8;1*vTUN`9M?Ju`!_}1e?sp+hJR(oZ#wL{9iA|^@MQyoj==FER9;srRxzEZM zVcWoyy5f0ntN2rVZ{hiv_|Hv9C^{zW20LYV*fth9k}DqW^@2P&7mHk6tN5|IcZQj| zZ@}Ky2N_}bdy_p!()*pG@0yK%l<)1ctfqWxjHjSecAHRiK@qpDpqJVEJS4w3Y*VCl z^vs_eqsXa42wGgRve~OMQ0S$7jT`>{kYs;gQHo zMq5^(8%Lu9#hEXTzHe9E1a+hDrp<|5GAl`qR>MVdFC#>AeW`l+Tpgi^XVa^Rag6f| zLF98t#pF(6emRG4U>}tqt`@^R6vJ%~O4!BNMAb2AXXIWt=|~edy9yFDZ>QyVPDI-maIMMYS$tCc#LlY9hhW-X?R#$Rm-e4*QAQ>U|Ro6g!uP=TMY z`MZNtjh}D5Jm6IewchS9+r8JMCGOEIR(W)X&sXe+Nl6;JPrT$+-s{)HU$}?Cl4wDF zs<~3kle+Sb5qvWmgn}CGed*G5*5}wrH#m{|j@OFe*9Qk$zPZ>)bGKOXxz?$TG}vkz z)aQ&Df?6#xcNUyoTbCJ|Q)jbJ*9(wL#c_A_zm}i47Ce7WSzBZRa>hTz&1>aF!`@}y ziD#62ZnB5L*YL2E%8wd;by&pAR-+ZpB^HDwG%^=PeVS_3K9V4p}g58Yv+8xhZ(BJ@#+l(?{?iUh%lmC)~#8 z4xtO4TQD?=u4FWj+VS2dBr`=9)5w-W6lB-V9HCfrY%XgBikQ3QZmj?mLVX_l3Kc-a zQ!+Iq_cOmWBK*z(nM&vbk=zEC0ue<^vfu>4QaZ5gan z;AFq8>si+JY9qNcWS7f!n0OP$CQ)nm6U_r2#OH7v_<>wKOS2f;ae9H~2%z?}3l*N8 z`+^_1PxsMK_pLZl_^t5qOkm2s6+t)RXYtv?zuSHnN@!M39T=lk3ceQe&x642t4Dc& z4ak?kW#va-u>t)P{j4G{%CdcAj z6{(2bt)W%ajQQZ@P=QIwSeFh{%K`MxO}OqNLaGSK*5?E-WvZviQX*=wViXFhSnwM$ zzd_kQKphism2lGh;(7BxWJwBV_3p_)8oR$rtD}@Zt+Eik)zpuW!QaisV({M8-Mie2BFOL=rp{i z#t><342o0N#dzA#@E z2dE1dSrtZO6OW;M8Ty1Qbbm!M%-bhy0lHSwZT|XT!yVGO0Z%+Jic4wRD^Ji}@G8eh<{a=b)uBCV{rw-!-c_btF_&GvMeaZP(0g94Gw=yt5Yo$N>}G(yXRb&EH4n`p z?)m*csMam2gm_o&8+_gG z_I6hm(@?g_tvFG~votJuJn`Cx1|*aaCFE)bTx8P;oW;xAabgFjR^A}54%E~?xw#fv zIQP7Up+M}>hBhXnl^B}wYz&r{7sstv!Cs*g|$ z3QP!^r9Wmyuh20C=;Twiv_(KXQnB_^R5AioaarC(kXZg}iSSZbj^R zwDy&YOwTk;fZDCU@^7cTu{}%pPc&y3k-z@P*o)_y0M8a$(bs=07;CI&KEF4C7nNkr zIM1Wf`51DyprJrrM5Z4vj#`mFgpMTGL{8;b`dv}hVoGL=Fl8V6V8*VU%9kpUEUDe! zBl-;6uYv(dT^AQivjMwjgvrhcy<;?aRm@)WGxnOD23{5Bic{gq(o?1U?#c}`;s)&( zw?3-%C+(MBv2H(_P#bGvIU*S@BEE&9Q0g)WMzOiC_hbLQ-h^gmG;(QQYL{$qlF^=O zUwN>@Mm9EA6{hPO#GeSa0`OyzSm(oY=~e*nTtyJQK4l)ApQ{&Hb@?vU+Vmd^n{=*zMIu*IwT z?nv{&O+Qz{#|_+fitRFoSiT$DimTOpp*f_}==$|BzfKVX=zVPI@u6m6tm+iKuTg6( zRQu1*m*Lw4*N`H~{RIjkG=+`?043TB0Fj?o!PuPfjNN#RJ*av*R|R!A^)it?keJHt zF5Rp@CLZLbT4V$})>3O`e&u;Z(qoA9r!cEToqt6Yzzi;*Ar~;uDj4rrlk=={^EZs5 zpH1wIp9rHP@W5K;kcsLJAnsGJ{Y(+;Stjiw$sRLPxW51UrP%4H`@q5k>e_v#W=3B> zw+hp#;eezXnY@o-PwJvSQ<|S)TPDeTATp-U)Uk_30aq?(j6F`y*}6if zeFeVnx$`XG>w<#Z0#~3~6oK{HF^WOz>S+tcfZi8y7u-ftB8*ld8P+?8l-ZhD3LyuK zqCwO;56$_+=(H$XT)6#B?V%*@l`!^y+=a8`8~X6VD%abJ@nOrD-5ALamaCQWRkeR# z%U7#3>}*`iOtrlBq%g;zXEK|$N9m70FCqf{KyH*WNzkN zB)^lX35g;|i)3gNBi?!H6$TN=AQ+MX`gh$=fuVtsSQrxn50YOmm7sG-Dg05k^6_!! zAk9N)9e?fFO@X`TM;ef>ceMPMrP5!=onxE(KvC$d`v;MK2>)Drp$hE>Y?ps5vcibM z!6NlTc<&(U6*OY9E5{;+jkGs_SN+S>0*PQwIEN7-p)T?`0b1;BEjp6^E>3@!5(1F? z1#Isf*VkJOx7~e)%Q;9%Q^#b#S9k!<0i(m;W4Xn&YIwDdRAN)M*R zWy!W+51(&OMtL-(qB)c>dYJ@vn2JR#4waqo$z@u(L%IeJf~{-&%6$_W6Q~yubb&AGU4TTjq+1o;B9;TnA`n-dU=Ezf zcOc&?9&6G=UdRA1-~puI-+H1)nzX)q4^HAkW}SS`EKa0Sq*p7;>`HGOz7AGQ-&x>L zw*MQ}evE;3A=dE?r+hrLDP zCBF{MDg~=$=mnjA={3AIUmLL0qA;aH<CG+lPbgm2zuQ^qhw`FZ3vpShK*9Wr5++&|;2y`tE zT#ZXZK!c}V6%h{a(+uQ|f$M-?^C(vQc}A}&#ZnDj$q3W6?Q@5Ao}#xTos&SROpqSYrz%YG9q zQG9B%UoqCZ+KR(!hm`amPhPOE#zq>y=i9OIwAiD!lY#5g$uMvYFZ1ZBk7dp%hpoj2 zBP~%$tCVNGo)YUiu;o{ntRO9YhV`~v#KToyC&goYZV8v-@wRU(7dy0DRp_-$ZuImW`L*l;u0y_BNHk;mZv3?bxmAqw25-S$k=+^&z3435%&wMhZlMQGr3h z*yiBI8!@E;lB?t@MYj##0m4I-gMmO+1IAH4703a23?chw@POur=^t^f$%kDvp~R(Q zG*L-_#|^Ha5Q#1Ri!ii|y9*V|;b5AM^%0u~F*YChKPg`3t09#kJ= zZ;UC|9jRvlrLk%9Q*B?jw8-{kCV*?L``9~?E%l`)37Yc>Onu_czjSil6eWkY2Y=nC z57PzuloqP<>_nJk3ujtdh=Do42t;oe(`IqO_NUhY(SiSMccJ$8p+&2{d=vXqN4FB zHc^)I3}&PL;FXaWU?_`NrUEk5%WG$$EBPTuNtKfwc$8j7hWuN44a_7HqM$bbo=eH|iwxY^6C=y7qyCzc~qECx>mtcXu z3>EFIdLN#LZOJ_`&vqd*D*_Q+;eO~n+UlM?Q)N&?lT&9>!U@%QAd)SAym;#;B@0lW zyZh9Zey#8V>_Ooj$bX@Z;jkM#z_1jB7DB>2#*0TdA!h zE3k@v$0_&7yIILgLGMtMWPQq2FmW|GHwk^zXko!%v?mCU+qiiG@3p*tB8=Az+umMAVE^Z#C{xUcaB zU~?Q8&}I#P*>Es}-}t@fN7*-p^v%A+?bDY_A)4mkr%odhKQVD4x;u z-;&_5`V9Cx3Hf-eBD1KWs)!ey)gCVL-ZG}VWJM<`5RXUb#*aT5!QWvq?K@}IJ+Wr7 z_;$I>0>6Hx)Ui=@36!?|y9Ubs-R1j~McpVQD87yj($&Xj6dktorvY&Eo$zgCCH}Ef zfh)I>2TFsHH7g7@*q{%i&=0lN1x7z@{~5S|1%JN;@YeF*mvIIc%<&XK^6j$<{iqRA zOBp=j4=9CS6}yEnH8`u-#u6-`AyI^a7XaIcjMSdri-VgPu0zZJ#p9Rrtt^1(#abAN zgkcXG*1pr3z?VyTR;Il74pG1zLFzT8rtKdMh6NtL$dcs6vuZW(kJ@Kxhxp4YTGjme zNQ%;uX>?N-3eION|MLPXmh)F*lq6OG?;OAW zy|E}aqG3{M6Z9IGb7Ag-_z(X5?+tZs&p)EeUNLs6MjF+5{`H~{9|cy*C$$leL(Hr!@~-elqzYn96X(2rDGAI_y2nk>!U6}@oBVe z1~f?C;mXH@Ke!dXTvo834`{P6(`o;fcS#elVoT@9FC>iwRh-$M9h2`C&EU|!Q*`ml z{OCNfi#dH(!M0$TNnz35xS z0vy@BBZKj`F{wqs5>_;24hv(e=Mc2^3}J_Pa3x6Wq8h|@6hxO8vY-KqaJui4m7nEs z1*nbB*G(sU#$6(84-A-teixw;+nC(%CAWL|`3lW)`;@+MCW+m-x+ zPc@w`=^qA%1|L*)8!60wtk5kk&P4YDD`JE8LN%NzPBV4|t241zFh+IIk6L4HU7ITN zWSyFi<;Y_#_#40iAe1A&nQ|bk{F}gnVf!TWPG103uV_4s(IWaDY42l32Y9*^{wFH* z#4#PK=LxT4;J5VzcBXzHgN1pHDJeAXIBt`WcH^~P_ZD|$EDC*rlf6IaMG6DGGaHTM z7?W=LnmMz$9ATQOE-w1+XhrCaEvRj`{7G3v-poto)(><;qpP)@?I_XHq&M1#S}r}^{w zB~Sqg*`rbEhhV_sz@uV|B9(~UU|?{oSD5WQ+1}gsAT!aqPyRqZqy6%a9&D?K}}p@8=T3Uh`tRYZ>Ma;|%v;m>}Gh4R71R-(q;VilEjWN(4e)Q9YHLOnlQ|N{M)a zmX~DS*`KBK1evLq?z*WQZ{HD+YC`&pHf9;Ey4+Ci-IOK)W)JUoGgk z;aASatjdkA3RNg|{c7C%(3}eT&_~mw5)&M0%Ad-JvlR(ipt)Te4Z4j~vvi4}d?b2q zg#l1#542?aZixVzyQd!u9iLOY^tbN;N1E4zk%~w=z4;jd@Bl?Snn?A6*~*){+G_Kb z)s4uRTlaV?iKik&*&A6KFMbsjOLu?5%}v+eNfm-^S;FKiDVMnZ{pD1fmFvbU!mHkN zBSPJ#Om1EJfWp6^a$quBW_4WDdV~B0;&T9GLvj+;Oqp|(W%chh>d$iZ%IE!vU;0C$ z+w$dYuxpZUj*JcBDUiRAyA5HV&`lTG8KwX*VBSv$Pg2g)0f~G~rFXs7HV-g&(lTiA z0Ns%s!3bR*(_U;371brAAmz`xZhYX^Gc!3cUEb`&r?L~oG=B5zk`T-8SG*cTjd9<) zAB+LG89fQ6uW~6z_$n|6E5Y4B=32MO)NHNo{He@xdgA)`^i{^DXiSt3)adog?K`;F zv59YQMFQw0AAN&07mT|hV(z}N>@rY4KB!8S%bJLK=i?3+Db?7{!KM{Z(!k+TOlykr zisp+7jJg|*IANdE&vd|&q>Q=Ce({SxObc|(-QlfQMD(4}U;TU$_m0wh6i3oi!R3uodNH3ARXJHe^Ss=LT6^^A@c&BVd3R#W3ME>=jcn_AJ+hF&g9Wi_D#Oj0(j7w z^`pLQzAkRlyd97F@+x(ZTFTe{fKbtp^gpF3QzxHV+L?~E zs4$O(O`E0d#aMeQM@A)~oj38M5RYF>4k2D@_8MBX2a2Qx3SaLE8%{h{ucA|Ns7y|49bf zJ+J7tWJO=pV8{;N9RHV@pwU*P!;0e`HIKyTKHC+R=MkbV7=a6)oV>2ffEw2iw6g0@ zR!0g0*ZN2rmBp@dU_8LpoA@crqW>a5<(%M>xD8wZ&iYEu9L|s&juZpkApR$xJ$99z zKVF5yiHu05%n`phe|tgSRBV4~MF_}gr9sYP$+y4~z*5L)$1pfy6L^F^Hs=5ElgmKR zrgZedU9Pr77EXVv*^+}Cc(+~Q%Zz$Vtc+SO>=Z*4#54aWlW!sq$~WNjmuo0%nk&WU zr06%`{ZCP952tb4#?Fb%youqQ267U|?pHE$wvFioj4Ld1KYS8JwJC4>bzN=z!Ml>j z6c%l7xXlT73P_~7@TRO%Ohq?n9OOHYa>focVQx!DoxUnl{{apl(;8vxV93UF28}te zc{l%o*An2F?wx03fw#XFg?zW=FF#@q-?jX!5-Vn|$ajp#joA;AR~ogsEUd1PTsOz(;Rg0FphW7_@&w!ge^ zEeN+9RX}9p62-^yoO&=^vi+J@_wT|f`am`Rnafsh5$J?GbWR_%=oA9HD*r_pCDXXB`w|)P)hb z(=UiWfE`ZfFb<^d!-4O*k+xbFNxiIpS-^;~`LP3hGirN-0@CHijAkm6K>-nTyz!ch zJV2cX!SuXlf}rw4vAqR@kSE)qo_R^T65x=}e8L-9UpXgd2aUVk2W{5_DEEusUX+~a zOrB47N^-!bD~CLhX3YFVduxqf_B@$wu9LQ|9*}@FlMkYYk12(3Ow=wf!95OrZbIWS zD9z1Ss!yxtHJB6pLo^Drde=5&)}MvSz^U{52EE}3^1-@4hn&Q~dbv2?1Ptcguqd_v zceLdg{{&=blG@x!w-W=C`-{_uAPZxge-FI(r= zcYRKd62%$d_9*){{HRgZZPpR#p<&vg;FwB$wXg>B7%Z^ck$eFL*%7vU#?4?Ha1Il& zS2IsSSuy6NyVP-2ii$7jvILI+-TT~zr|A4QHp@fdM-qS-pd{qPuMR6d4Q@-31%_}) zI8!6U_`S*8JG2+$5rz?l?kL5myHQny6LHF6PRKXvm2vB;A>E`Rm%o9KZ9`R^BfpuG zPHS%~Mqx>)tNaLSfw5=n6SYZuQw*Royn3uiy;5==)#{xf68)!Gv)3@OPW1;(Vz2dM z3%Vw;P7g^Pwdf3DJG3oU4zFl^9#NWlnb^QY8rkJRMQqZU=ZU_b==C0Sh zeF)mu=K@zT%*afQ&r}X=ttA(5Qi-5Jx@_3aC|vDhgUTUI;G&mUM`Xe>L^4N!CVmYx zR83AkeM>#{jn~HN$4|NMIy^hF{Ana(#%+J<2IyeJ)WT*e?n>ZZchZk?vsF!tWYB1Q zEJOK8dFKS0bK}fP>n9;Nvw>(s*z%zxlFWY9-Rz3`eF$nnRis^sqmIak95>P&3E_;+ie;|pO+g(U>8Lx31Ien`|$^YlKLS3e_66NnHswz<7Hd27T zTc!)!Ipgcw>=h?b?*N8#K)HTarnDmkFi5brGin3Mt^~m)dG5>woCj<&krD?1<|hyU z_Rfub2IQzmF__btOE{mBud5WEn!Cpf*Wt%4&sVFdJOQae#B#eN7g0s+X&l75845ox zhz;|a52|3DY1|k0F@)O4?W|tAsIZxgvb?lO0t)qKr!Rl`f(^WO6Xzrl<62D@|3b6= ze=I80IEW1P-^D37%05Mql8VT`9q2_H3xv?uGM zxNk0ld>Ik9pyb@K@U-Xn^!boC7iE%mc-WtWe5d7%uy@(7r#jL;-`Kzwq!G|s-{I50 zwls40!MSeWtK>s%8@fHx2d3?K(85b4P@?+7_@ni_h0Vst z0l<3TK6BJ<>kb=ZJ~9c)!yi+_EI?*M@ja4*E}WqB!*&rS(3`T+MdC{Z-IW>9agz;17{20`{($q)zCY-VxMSKibz{cO6rNepu zUU(670KCQZ%NEWe3GxE>Pl>#R6WVY`t>|%Lcf3{vB*NCL$Jm#!0SS!+`RIT=QqDcd zSia=ub-Xv6e-Q`hT}*VH1G%(Pr`;cL0hmUPLD0-TGlfqyGet3353?+f0Hr7aPUxpa zF=!-lEto}vns<->*Lp!m7@ z%{IHr*<~(&#|*r%pWQ3_LsQ&-gxIq<^?n<)oMWRc6hikGyEj3+k^Iw@>eFaR3i(*DcwMsTN<7T&Qdgyk;IuaQ|V}0yZ9NSCfQ&_@uZ5*z_`LDWy@`4XYltY zP?8Vnn8K+mAHTmbG%(eUIefloTscb^82-I=U>`sT{}kpd^F+XUavFiZ_RC&r3?*F_ z;{s!1v0EnFl1Iw_Ud_q-ZisckwMolWhnLbkBq;QIazLl3mbGaO(^=dPh2=koZpqoC zczw23ufKa%%I@wka39Z#yrJ@CqhU7eBUgQ&*OXU7vCBZ7VZOQ=W;zc~*h+1V=QOYd z388wL(lqb*I7UN%+ddlqb1eF)LT$=y&jug@VMU+5#^T4rsJ=1mzC+EXauM5$YIo_v zg=o$kl{Sfw9NFD{>H7w;&U4)DrTzJ8`zS`&0{V03_a8)AFfx_ynCT?cEj+Dm&1v{$ z+Qg+qSo8hE)?7MVo*l*HnITRKGtjZp>>hw3Kryu@~dQBLDewo>|&4MPm1q z7p>;IKBp-*Xo$EE=dFaTKk_Bd+kWl2AR$OXMb`27@cKiEj}}imV1dT`MNdMkcaGOE z@SNKtdp*AgkbRQo!D$70%ry>cwrsbq#NN1~ap)LF2d!>uHlHiH!D=;$`$JrqaoqU&758-%g(QZy+x?lJ@&Br}gqWb5b}^RelR?sT zuwe%}eCS|`IoEtMb*`nR>|eb8PPkL!0Dqkdb;&W}lb9v1gCDlcPM!9Cz&lE#u^{xORp7;Pu ze;oX~uw$uXq~jDx{b($jxJAl4pAWLwmN7Ak9t5gPKMk(dvjzTwQi9H{Xiq8l@fFkO z2IqN zb1*ruUX$8n<2rLN^~Y7rOWovdBeD7eMCmz&?in7zz;}q3!d8rHxVCQe4pjnG7+*b# z4!FPpDT!NdABDjpSN9Z#*AJEMLVuM(o(D*+K*vYq&$3N5Oy;D>tUFd=fxwmdJ`8w> ze!sd&eyVs+{Q(Bpx62?k5EC0+wG9`WAOBH;stlqNM8;WbZdtWOb{#&*d*eHL2UOpo zDwkBnq?%`ERI#l?QBY(XY$tHHX^k1zIrhpyUh|qVu~9pGaGA_d2Kl{fVEr^SglU;? zR6}!)t}{1ssecW?8+7Jsg=u$=#8Q$jm%51M{2C(*>O)J?Iw^lbA0^^_*&Xy3oARIK zYtukc2nWcY6s_>KvCIj%xdDZ}_n7e1_l9uLVIk!PU%m_sEVU7F2Ikv0%C9je-+4Wr zM{x|`d}ehOH7xrTz1ID4T^jHkx5jd@?J_LK&&5S|372v?{b!jE8amBzVJ>vlf+1tg z#2(;1gxWChrNB>h9J46Z^kD$_EhCt}lGX}b>GE9Rg1UeR+ zTlL}L`PiwWrx>~&=ByhvkwIG-FTz>dj=$-5s8GiA89Pp#!meFOzm#_N`#mhrDb`n0 ztZUX+(i}vVj&JTFA4e8w{28E43A2REzLG_+Ca6`!_a+*8Q$;PUm*_bp@9(VLyX>Sk(m1lb?u)*yyPwDH z_5|evW_P#?R7FIa_@Ctmjd1(q*InV<`E)*T@nTGA2a3{u-+X=F4J1Nk7U1F8zS5mL zQu;${{34bnfoLU~*y>8t`}x50&x$4Dgs&ua6^%WJ z(z?4P%|sg}hM>E9W3DW+_yK{NE`6sZo9#Oco3EvA0B=V)NEN!V*|xop6?oHFiW+$F z%EvIaT_9H(9v0W*#{3kM%E=)3}EkmSrotrM@%?8U_ z*(+B9>nDu%pzu`Xox0fb*PquoUN0Z9btYn;Fp(_*9_(=MF(s68K{<_K&3fSAi*zOeL@Wi2$@m$x$9`su%67ccR=&a0%-;@S{E@ltYLDBie@B@pO7+FD1;c2J05;fx(g^WS@ zY;5)_j{^ebbEztn{o`na!=K;c4v&-<5Y`{?h^jeg*$z?PWsT=GLuX}MG5fkGiL9{ypo`_-XpHfIc^E9JBB8#GWH5tc$Wf?#yh_U6aMi!ox+@d?@kRY@wm# zIcekEq*k-+6BbY{9}%Bkz?;3cd0-2uPfft1j#J+AoVB&ENx5CUC#M4DA#0-QCM^|} znExA4>fA6j2haBGoMC-Pfis8+TDC`RctAUt9Y;tpkkqehcO(BchH)w8oJzO~Iw0bO zwv3&5ffblgXR-BQ<_l1NT9zpOj4fx2UF}(NO8qtoN@(A4Zh0#Lm_(U{`qNr)KR)Np%;GgB?>QFZP``H6Z>pRK z0=t=Dz%#~)Gt6b@=QJg0Qsy1fPX+TT-tJXn?v+j?_YvWEd$%d2FhMyMm}ACK(Vu-a z*{QP8@&RlMePBrCTxz1}wDUi4b<%5nLqa6Uq0!0^0&C7_c1zPEWeb)Z%EQ+?`Yg$Y z_hAwd;pAdti&>l`g1au?qYHqSTVh^eA#U6J%BTG>U128Z$uoL`evH~Yj>AHCnsjw_ zX{0-rkwG3taQD_0is5BhLq`QXs(d8Q(M{uU73CUWXIgQBsW79pB#*m8gt_T+)^RrF zH72Cu&>a&xP`%9z2ww}IMQ67K`Oa+dk2l{_v$1?z>hR%gt&LoX=4#1eptojfD{AOJ z%jh@$#+-j1O#hC3ahn}F#Tax}u`R_`2>|$0Ve+K-FmzY|M+O+#C~B`P&l&HlCiUFk zkXz5K*@g|Zz`cLK09~Tg2>(d#NMrV87?*Do%B14UIQZtYWMfE=8C=tNV@MlHvM%?g045zaypd3JGF#*6PpbX^Zwvc58;X?&hS;OJ>DRWtH-cB6pTDxFZZ>o$M(GmiX29*NzXJHfGVOZq@$8&+8waI{ zEBw=zAshcb0&()c&Xakq{0w&#-i-W4b@Tp3+q}3>CJb7h?uc$wK*1{H`uVR@KitBr|QmF#!WOofY?}8 z_9%D>qnw>;ZRAB7{0+FaS0kK%sc`;1nV9j(kju1oatQKnu%Pid3X^Nh7?-bblbq=1 zwuN2SsSY5(JtS}Z{q?eSw87ppfYvI{LpYPWKorPrFMa!@g*Cw)Ih%Kr!cA}>^hxLB zx(}KV0M2-6V#ESVz^NB({-1|_@ zZGg4!_$pjC5lX-)9pFFwnykBQlr8T(QR_@vpMVc>Du4LFyZ5-`HQbm*z==2(Xb*Fq zJa8B+ouP%|KvkQ!G%xrPn5#mqAq3;S$6;aWr1CHzhR;p;v>T0ljC8~u-8Jw22hc)j zlCIqyNQjev+WF!!QqDf0ajg1;n&C!8zJyIZK3d}-l3B>q8%1FK_8pU9e(A)w91LSc zYd;!+lwasIE@(D)Tleh+MGYuYw14f%=b#3Qu^@Iwn2XlEY&N)RT_i#d5-XAK1w{D) zvfV(Xi6$vE^#ia~KzlV{(#wNYu;r&{NEJ75a2n95Cx7u^SYvBbw&)>)1q$G0d_{a6 z?zhxC9v;GW^mq520zM{{oJ}5Y{&-HeP8L~~JU~p6&9c8X1gz_kNRqbm^7m4cXWi{9 ziXEUvrP6hnmpMb_|Tz!HMmiIj+O&cUFzDmBv-nQa-uj=d`=d*lxpX_8_ z)?MFGYZt$d%(}NPMMU$5WsX+ah;l4ZT)#YW;=lUh#eE(y5X*tRtu!*wt=`KO#@k4Cbc(eHg8rZ5=?Qkg3|4)t*vdGd(QoZ`%9#tAH{oIFjQF zDD(B$p~yo3oOO_^L8F0nHU;2T6Jr}`gzhdP9WG|~oL>87Nf;neR5 zREw$8$@(HCVDcZ(dK|Xz&$=S*(GVupB(U8U{|W5d0;D8a^WSe^ z>1M)^zf)aL$Mt3)E3;U%dWXu@E5GZY_;LjA0&e5Nss1%SY%N>p6{;}CE0kHxYc3ok zf{)4HOBIGW-*3r|ST&0uV{9Zl2Li!H;&e^uS$sHUUu5d~RbSta09~Jnsx}&gW&7qg zk3}p_L|IejTXSG@hW2R>*>}xjH%mG+0m#&UE|UTD4V=v0&(bw=DvqM5n~BeBTG*fE zm$Dv+7aHVEnI8N}z*Uc_m%a7a?0^6#Wy$gyl2t8;jsAeqtrh1FbZxpWasRW$bC)BH zmr-NNXvb-zr29nZw@86svR&x?CRFysnOG6R5va9GBdZjA9j%UpeT6kmJ(gTxqt!v2+(k85@)kbM36m%S8{lJ7Grg#XNx_?pra;?YMJ*D;= zKzr2YK@^ii$p6;sG6nFrvOAADe&gCscc3lE7Ctnq1D!7aC{BMm`iSd-$j>u!NL}*j zP&w)EXvSjcP6DXAaXva?hpN2jqMQ}g-@f@UaQYfH1J@=O??;b+Xa&ziY(F4OP|~$M z)yIXo1p$m;9r+R4Ouiee9ZrxC4j1=)c~?OwlTP6~h6BP+PDtPMydAb%%8X9;SjPEB zC{gyJ{#y%~;lR*Pm^>tYM=N0zX_G*n3JZ%IEw`vpL#*k%*i?QSAIU6g-wkH+`C z>#biBr{fsE$^PKvcji4fapeHP*oz&~&3$JDWvs=beJz%^;YDl3dJmY$n9LpT4nE;4 zxsVbf{4vuNWh3TQK$yC<;IKQ`4R2R%>l3&m zqCSVt-;7>9&rnezS8x@;uA7UR7l}G^z0E&@OWt>44vnx1Y(}bblsn`{WRJaIYByGe z9-haGYr9a^(y zR!O6OEocNy;lLWqv@Y;es?!usZ2uVfX)Zrb&^g4y?{qJXwN}qFhj!%~P4;YG`RHb=^OO-VQV`uJB7t0mpai)@G})Acju5Pk;9dQxjlX2d+n8 zn%Ix7ja(HB;HKNje$sVamJG-cImU3)9}Jo%^zYz#WC-j%cuDddPKyRiU*dEvUyY z9B^6#sy6J3>@O1XmzS#aCX`^K!fSPTXmy7rW=$x@ikv!5)zN^H8vr+ND7ObpC^8(f-nGxb zmggD*eP-aN0)e8}>^ttBA}mc&+)eFn>@CPA$aR$9|0M9OY3}|B)7YE4Tx}TO>a+J4 zG@D37wX$-%vWH85?OpXbcV?zImQTGW-=y84J^xHb~3Pjt_*2?)o8nw(~flFC!#Pba32PB?Z{!2n2)RIP15RFHJx^tO=No zxDEd|{Nx3Brdo(R5NhJe58HPuU$O4+#Vd&m22u^@atZAm9-iO zz!V4r=z4J|aYuV)I(I;w7%$`0E$u#hvEFkcr93X6LleZ(X*B=9=XH4}DYU@da-yts zQIR~T9jrC4zJ0hpnMN|?`V_|j@S;3tCGOn5Ge$)jLYGiIpY%6}xNx21Uuk+BU3p%b zMX@5b`7RTHP%f1Jr$LVP)Qt)iwfV%>#f6<%R6Efn*3!BG0w{2?P~_zZ8!^?KLcyQp z*Ufkv1=#`K_e_q~wBpa3Gc*Yg2rp%N{x1KV0+&y+OKx~O{W6s*!z+SKx_L)hhvW^M zdE9D@MiY%MEnchfz0FB>Qgk~DTn~#7bgFglwR-rhVu)~yd{x=_o-CxhQ~B$6$j(}mDp_kSl&^dy=-sHVQ+ zHTlrr!onghi%&sCMdi_KYhV9b2t2&8#OZH5`S-h%NXE1g5J}BG}T{e zI~{p)^?K{1hyFtE=Q3S96shA!^LM`0MU%dDLBx+USTX4L_PLW+DNg)IQ(}zCy%SYv z|DKfh?@0|UGbe=ofIThg_)SW$v@ZCoIlx3e@jgBIoR1)n0M~?0qf+&N(R}1RdGW#F-Y#Jv0D%z}tQ&1rJ*UOk6{-QT$+urSDC zjP`!L4_|nxuvU`ot*qEm=YIOcK2ytG<|H$9kEyJz90k~74Qb5IOD?&6Ecm_huSq9^ z;sV4q=EOvZbU}L5Cs+PAm%Z@B4g8Ou*L+gDa$?j=o6p`OnUy+9e!Blmf$MTek4Q!q zDY7o9`rr2wpA4kqKGS0Lbi@*eXT^Z~a74~m3AbjrWo?%HTIX*W>VHLsx|EamNh3u% zggesuj(0TsQYP6wr@xdmT^_#zr|M|k$viyOIE1mUesgnG73y(%jnR|l3WZgTgXY&S zX_qw;q&pujwm+4{j`KPKUs8hh$cef?=UPpc~T5A$f?N71|F$tY1+h{ zb+^$Rt>5GbSJ96SV7Tb(U3waSiS1YCCRrXLGE!+A`T5U9!%mXwgDrl!;U>N)zUBFPyUJ@cR95MaIY7<=ms{ANguA_$}6>!P;}5OBvk zBkUoz_hJ2!l72n6Ak96ze^p0sYy4Y3*H5WtmE*>p5}kjd5%D}qDVk5Hle4pJirT<> zm;;}AL}FfL*agQh@+udtlyKw2&G~{b7WS|jm;cwfin=qcub)T?N+ajyJcx}8<>YYI zysumVdp|Ouj$M?^a1)=D5q;6zk3Ib1Xm8YddilODRHf{J;|;ID5+iQ#iaZIm)^@b- z@$+kL9|-Lx;Ip9%jQ_^%n|;|Qnp*c@FdB#x-OkH6WuDzPKZVLUVS(qQ6`Kw!kzYv| z#Y^yTOmo0ORm03Z0AO$&EYR*9foD#5;M$7s4c_qj_TMcb5_oNYXFa>t`0rpxfT3q< z##bWU)WEe%F-}n#D^Za3dulN%7e0f~tMedB)e57|uz*)_btgw3N31L|n)mz>?_q>~H0zE|c^D>u7PBabeSk<*0Uc zOI5i~XfE%y4O)Qho9*J!wEuvx zl$2D7>)#7zB`rCb6TjHLMr8pMd&){;G5+HqU~3fW+1fZ<{KoIfP)P`P^YDWR1i^*yuUM3u}e+-%_x?5yb%LR)K4i5i41U_;?hW&y1#3g(#l;4A^5p z**NMm^f2A2{@7C*Uh+C`(5~KuEfQ zgI@q!0DDL7U@bt@wVU?&7Xo2Z*Qt65Zh6m(rZa~K=x6WInj7600}iS)@E`hF-%(GH z3duxzCc%b~YlkoE4wgEa$j9%~y0Y z87s)*tEfbtIcZ8me+NQUGUk#?=}z8xJ}=`Ri|22cn1c~ zSs1PS((!PV zsi-|r>&9TvwGqqlbv_a5xUi=ve$5*6P8b1PypL2yt7`&JT@)9%jf99^P5XdLmDO{qLM42df4A=4laX(kR{ zwa32HLuG#$5H7chss; zR>p0p$cs>#Z?_x%vXwBC4Y;zND1J5N&xi&vL1vGS2vc7;B=3F(D{421Wd*!+!TPSI zxb^M2H7Za7I2gayP2`(?zr!mTW?f__NRPL; zrwY&4O_Dae=;q(ZKxyCskaXm!LIHz*3GsIm{RvHTiZ+onf&o)zTLR1xFE4O-id)YX`1+s7r*F9x!muk&3VxO`azqUp?#C>wD-FU*Jj?MOIBadSB zPtjn*pO(J5S0h@$cYEjvWF#M)D3!2Bi9FLlb3h>+jf# z+0(DPL@z(>yQ6y(%)`?>*J})Smam}n^SbMcDF!@^CdyrFYaW@}#uX742a2tByjF(G zoORPnwBydQ&t~+yD|Rj=eJ@k;8ko-TW;!k~7A25@WTwl^ggwt%25{Y|8Mxki{o2lw z^VkL4$hIo=cTD!z?sb!hDIn@IHwE!(K|$X`DaZ~}bvw;W>~N_5;DtNyAR_3>TUk!^ zZ;0~p{@^cnud|*vvY=ReU!&2q-2l}pHhno(Z+NPMBI>$Ku+A5LIN{*qOH?&br@CmkmdnoQ(zenI+5%M2BWuJa(lkTIP}wN;#kHa`Gq zqt{d%rk+3KR`6cT3&G6+>9RH?tLdeu7rzWs8}{@Fi!5%a=wTWj#=?d%bQ=9Qk}%&+<4s2UsHc;F=jZ-YWKIyQp4}Fl;ZE zrHy6A&>#I6%1w2b>ufG(8(GP%&GVdcT^Lcs#CnIh<6z9(v$XRWAp#7=- zRdL}oXeXP`HF~!n2L9~NwiKTpS!h$dHxid0ZabF%y;*Jf^_WbtMx=*FE%*wF(4Aas zqH*|YK>c!XFg{(v=A8OtMW2@6)JjT9i;IgSM&wx)v4&bY`;*19Y?jo~OHpHd%=PFc z@L&2MOzTp?OMP&5_eGa5ikptbu39&1Npu_0Vu{Ho<*={jb+MY*Mbo@&b}^H@{VgxL z00Y4v(3CvuyQaA)dxis^Ov+07IC@$}jwWiwZy3weNemmNClT!Y{#|sUw|5tZK@!zKDs#TVlOa9KpWYIl z`a(||VeJGrQEw?|30-U^{w$9zQ_i$bEn*Gob3b;$t}Jfa!ZB%}An*+E7sS@z0q8>? zu&>g!vwN5L=yDATB`PYp+HxDZiw=4?nskff)s|t2LeT zB=p*atbYPO+5iqQQR4`i4L?=`L&Wh@Y?t{6uS%f!gMA#>wC*6J2Obbgzj*)cq9P1| z5>e5Y+wx5uJGUxQL&$#UiRu1^CC8ShM~<3n(eUxebLM_oAPl z5qI`xud=CgXD7Lf11dZR&>Q24?z#PsmC+j~6a5;%Ro0kAhWX`=qHz-AMF=a-WK)xpQGm%DycJBmktJmKIwR z@~;oq8*WPC@?2o{6dG|V>F&45Ua8yOJednCl%yoZ{RQgyJ9>xQPS~xOl29LO8WORI+D6a8uMX4x|)R?^hOV9pc z6gK)yL}S%d$DqIQU#)AtcAgO!KKwf_k^0L2j^xuNq$0=P3j$b zh4mzo+C>tpE{|qd&DMl)e}3B;@%NM$oKEUl^pzmezuf)!MTn!d#Rq)#vba-E^6?Yr z%OC!o=+j9yEb;B&b8hdiVT#%J0aKU5*L63KPP`&k*< z>pohe=l69-!d2;gxFMkXk`6tQZ?Db(R7OEBU#{DD75k%EadLqQKgKHK2}s{4Tt?0d zFfu|#jk31Pr~O_zZ?BAC1RLz`UH`jSeJ6c|W!jU6KON565~%koICh0YR(ZKnx6lO;- z_|e=V4-X{N{hwmbH?XBA-zmZ1A$z|kOk9UcuTQ@jRw0S)Z9}NZ82Vi8xE1lmsBkto zKqiBOh5uxvBi7Pix`hv(_lv&e(?o=Kr273U>ZM5jUm{}vKS+anKReak-L9aAW+zV0 zCukZUX3fSNgJ}9uIw8%<82Y!ak<4}SbkWnE9(UHKxh&!TXpAY3PDVE3R+2^3z-yy` ze+6bi1gR92oXJ^#zBPTOEm-L9&`CBdB7H||s#5*WZ7bwX|9!PrkF=zGM4#{Hd^}n= zmfb$02}HL@hv`!gUJJ@VJ#B*}S~W*Y7!E5Gxchp)Q~r`nG@!uZ-`X!OmTZ4zcfkLv2aphG5roK zys=?ehk2XyM%r^farWI;+GsoS$N=@}I0saME6aX$CaT~Xzk;oNA1iHOM>cTwL=ih})|Ta3iLfdatR8WXgPUlgtTIP*w+p(&Q7E3Zh%Fc5IhE7_IKN zINeAZ{$*mY(bI~Q4jmEX{xql0)ijIr*tdtZVgQgMM$CQ7K-2b@!EuO}G;ae4)@2k>P|)L#oF(H;DW^xT@nS6i>w9ym0{$Q(1HI+|&*y_n3vQFL zFF{04O_YCx$2=ogSBj|RL{tNhfY#6P#=9QA5Gx}_9PaW42*O+ky*q-S+-taOciD9J zAvQ&tMyaxc6t0BA%hIYXGpCAf;L|SN?LK7uR{B%~bW}SF`#oQv+B3Eui$*>Di4#`M zr#ekh0=a=_AIa&Or~>ZR=aTnzqJggB{Sx|+)N~@xk3j_ybW*Hn@s?KpN|{C(92_{Lw9}#IG6{8%6Lxw!CN{`*mTsg z%r1zJJ$9B`2U{cePF=b5*f)!Ph zJ3?k|`xdMo>MQb$=C*1MOvA2MF^_!a#WV+5qK=*am!Po3&)eac&_{IZ>M!pSxG_ldqkj;8wZnApjJnsp?@Yn@`i=Hny3xjr%y7G_Q1{K zsX8|o7R??Sn3hrIqmJo!b#S z^K|6xtM|mb=cT*zBSgRaejGRy>g^1m#?5MPm9q#RS<;*8ZP;{ZgNAzZS9$LYvd-|u5rKOcgOwwqD1aQHOJGc4q9A^+61IWa%M5Rq?tOB!m%>;u7Whu z_(#x=Oq6vrolt*e_`Harq?-2JMkiH=z0f*;!Llr-r++PD5D@_zokUC0yp_Z-Hv2f@fD*rgZe4htUOc|*{Gh-B38eiueR!JjoB`;+`Vp^wC2)hQ` z2Y+DobO2{_6~AGVUj*}rxIBG0$Tpzi0gD-D?bDxnUj1L1TT8C;>L(8SMbNxE@CED) zx4L7XtekC>b;Yd#FJHPZ$XeEZ5*%GepPLLhz$0C9cb8fHdQ$Y!m5^^SSdQpAoH~lD zd;Ce4z2Q$3@k`BPqOT`Fb%$D*C)z%DA_q0>&QX9AuIX+!I_}Xp8hivg3NhbBe3-)N zj@q*lu4`RjNZZ5wGLHIDSl6p~iZDgI@^UAUEau7el;hT2h%~QaqyvB305A(@@vQhD z-y5=rxjxq(_a|jVk}{7fP)PCph2IlCr;l^4&P8&4I$8&;V%W~vPQKviXQ5j~(t`x| z@6n)?*WUhX=f3nqkOJ?#pBl*5I4%U)T^W}U3o|M3 zS~;h{Ke+H??)%TYEmtGaSlI-GE%jZ<`&hPis?&@LbLu>b5e@^H^^{2Fvt-o}sb?YV z#U2mt=Nt=LsZ(}J$;5;{o}o&(NZ>BZDIo)e)frG~W8%H}!O0&aYsPyE{KuJkcusr~ zLIO^JyDOh%P9Dm%{sZ&}etZzke_Si&_BGh9?eU{RIgimRMfVKME6f|&8dTReE*8Hf zJIC5q&_<&!Hiz)I@oONG@WHZtf9c`@{C$!7X2iQWdZ-7WlCLr4IKqIHM~P|P?CF*> zZ6Iq>JGrsE5^HNJll6UqJ>UL_n3QLNO6KGjbb>&p+RYTVtJy3oVN@+JSUYVvc~W^Q zJ?M5`pAHS4?tJk=3%Kys(cBI3+IP7Oh&=PH29iySHSVYNhZb?%=(Qj$xEw0H!&a_!}&p73e{ghbCe4xhbx`O+Ody+aCO0IgNW-jod z)5ZcVV@Xo^7)8(sTKS~KIn0Y|1K^6I*ZA!Kk=zI3f~H*kAXM*V>;9k!hg5xc!+pi) zRp%*$eoYz_Dp#t##32%>9Nn;r35A)4n#Fo&9yXztbXRQ1X_!3|);k2TAMg)bKO#{& zdG_R649DEz$tbDwR;I)nR6GB#22nicH*s;UYeQneb5f_GpB`3IhyZCCV|jU`H)VUo z6~=|50@Z;rW)&863J(^yI?t#B&<2SJIU4HdY8+(e2iLG%&rTT}n+Eo|b zZ-A&g8`EI6&hvnUP>57DOkynPMSQ?ed@z#6eNI1O2>_*x;;o(`F3>CZR2_vAc_#6Zrv6V?K>< z1V*5+z%zIg)8nH&$oujkfeQP1g8_>Uz!6JZ`oxi-hj~p(!JhBU|5rLn2>THQ&5a`H zhwI#Fs62>L*l&A0>IgLs-t1Y4uRf)wU2|KGLs9l_3F>KA5l=_s=c7PT-7iaLtcSQn zKJmp54?vO2eCl8(+3808Cm=bv?Sow z_}WO|zw{ZRPQw>KIPT`KRz-Uv6;1+ZvWf(HD-e`6I(hg=OZKY~0ns;rxQ;QYrG zU_;*BU2&&>8{0^fg@&XF_>GY%0{Y~IPn**>37@y4&FfsU0gNN3ASBT0J^Ai4l!>AH zq}&6w0gQqc&V@YtVhG((j&zgdkiTu5hN;gv=}B~$FTrri%v9@A2Re+gMenzoIRfN` zjG&n^{^n<4d5t*sGk!k^n<6c?y>ZT|{1$AKJm?u{)dT;Wq;CBVV&8@E-{}W;Lp59lInKGjP@e$K!UrL06yhA4iwkXg4_~W%bT`*G^JL7WCwsj*o~+`^$xZUc^*o(*TtG)OiAiZ%u<% zJ?Pg))9?jF0Nhg%SHWexDKDl^g4>k`enw6J6M9a&i1MUD@YSMdOtQiXB`MKt7Yl95 zfiQla`i94}N#&1}nIZ*`Fc(0&Ynr|MtEowk9?Jk-WdVg1)2cvn<&V5ta#JJdSmBnH z|Ln^!1xn(e0ADu%Dx_U4oeldAFH zk7}~&X5x@*B+7*Ph((Nx%#bRKOr26v;PARWnX>NNmkt&k`6+f8M;ajnUOV%&ZNCE) zOUgIRGq-Pwi3nKvYEjZhIdO;;U@yM@?-gg?Y2|cyH}1bD&fRZ?9L8>GJrlSTTToC~ zAaKb_;7u9rP>2yO_*hY)x8KObyHS5PG;c{g2jCfrmD8`!ui{!QKmOsMNCx)Yg5!FJ z;gkl^fv@Hf6|}I^Kd0eZAM3aac9wvJ@W>@XU`KARy)P(wmY1B@T0ftil+@u--D+_= z<*gPF_myH5F%&rerlT53BUW(fIGd!^3yTHtbO zV5-iR^*0~%SQ@*%b|Y~Bw!^qr@hw53fS5+v`|eoCr@D=&FT&_uqI7-*t-30={>;py zKaunigo}^D0rc}arM6nuv#EM=g=S)ArmhXuX-?UqUZF(Q+I#Dhb;Xk|eHbrLFjwN1 zmXoYUzR;7)NLN3gdTr9Oa4~D7yJdV=~2IbfV=dE`G63=9cLQk4KF!@cxE%e`LhXE=Z+ z%Gv5{yvr|blWD1b7L;1+bt5byJA70!bi9~;KY{4u{K=9TH&gNIkmsE4O|Lq+&UkW~ zbkGg`uPpwBv(2N=AjVn$s4&Cu}?ZW4TZr3d}W(50D$j>_2Trrg2sTOWCy{l^`n zlhf1FtNW4H*Q{Dfx|~8Ros|$#3;LaP?x`d zu{YJa(bv(NJf$s^DC;(Kq3!r6q-}Se9@l;xmL=a`aU3vWZYcxaLAoq$4%?5Qt@DYb zUJV#Fn-Zbk!~ZcC>L$Xv<2l8xY9fI8a3W|3DbJqemTEtc1(?5umOo$rAFkdzp349K zAGd|s?FkCDtcc8KF3<&gDzTwd?b zAHVOp-OlTeSLYnpbv?&pJnv%~PA(BdrUKY6RsZSLstV){Sh$Jn>tIb(K=&L?nzz2gV(<;mY#v&_B^yab;>+M;hm1dxGw@XlWf z1@fp@zIoM!F80HxDNBu9P}BZQLokBOL7B}Ka}OFgMCLFxMDIIHWhVmve3J~k@k;z| zLEC?-y=aEBoR9@fHxi6A)YTE-OZNNs zp1_5=^+D%^YxU|4$HBr*HNHTV4?5{XU%W+tAD<14)3gV@Fr7wI069Y0Q{#_@*cLAl zmn35B34{8x*&n#G0M`2&M$6>0CNEezx6ehSYoC`{e^Ms%)Q!KXc%|uGVM%5AJAcf4}T|d{l$B$_M1Evkqb1+5a zKmq^};S1PWs;CMqto`ShkdWXDaF_ezwTd+l|5|sY$(6xYS<#*I%Ay@$kq9ghDo|e7 zlWYKC2LBcXblFndHV%l}8Oy^SlU;>}kDJO&I$i2EQUA{L?EToclAHx?~`+Xu*i2fGHe5pxwfvZGa@32dgd_Yx1m7J z3f|j&0FJe{&NTtht{a*3FnN#4xbkqDyHf%POdeYA-6uK-atj~dA)ZhUKgxt6BO^h( zSb`!Al;#i<8Z0@MeYkP|MC!WTAKuiAf6XfvT>R;!hsSWm1G0SYwT}ha&lWQ8txy)J z7?%{3;PaJwsP9t~uiqk0$ym`AA4r}g89JrM!S>Q$8|V+qkQoP$U~C*&17K!mtL(rZ@TYhHCS98NdEH zy4l>xQsQK2H%Jst9dX6R_J1;_uIHF}-L5e;3t&Q8)xpwdv;AcVIZZ4KS5ih#NVen~#4j z9gQeqY_D~%wVlnJ85_wn6akUO#%jMcU%&zX8mo~95oJCEl9A@s)uv6l>t0U_+oSyU zqUD}72rDZGKB{|zwT#!nPxE>`}j)|X69mvM!hv}$190vzoY;^ zVU$&1l=u*~!}F-S`aek8YaQ6cO5-Xgv_VuW`J$kpAlVn5BJJ3+TkYnValaXhhZ-7w z!K^+@KfV^;#YQb*05HTq%@$ACC!!y74H_@u`=EVv)4%k(8}-lOovp`BDqG@WflbQ# zK81C`VJzl)G~zDPfUXlW29+I>j++H7aK?9JPae z!EkqR2xdFKyZOcgNL}fSsFo|Yj;}`FR1qF&jX#|t=jCwk^x6Nz0-T|M8z*9yYpI`jKG3%}e-d*0^F2jU2ZROcUrBL_8ZjO(DxQ03e68kC!ktUmn|1^Z zSAqa)x>INjO|6A!2xWF)P9(QUX^x0T^-%4*^TjOrpu>EMCNlPU*#Z(O3 zNdGY&{C;?&2T!8hC6SUaXFeVX*Eup^s|FCrZ%aq*74_!pDmz8leK}>t{+aps_!I!< zukLJs&^x^C+P;8bj3ikJg{f#>1;8(X`i&l7=P z1^RUObM0)_t4ihD3Vd|m3Rf9&ib_&;cWni2!w=vyl{43uMvQ&8@pwEHg9wM{nMhf! znR5uW*dHlR7j=at@Fz3udbgpAM>*R-8H9>9BAZ&a+s}7heX{_ zVRG-nKgE*s&G$%L0GalUwUTpv5`J2pqg)De73&pTyVU0M(k?thY(`)2IL}V}wFH0Z zR(C1?>r$I4j_--Y>LsgSi0BZ>KN^1Gf|P9*I`8V5?e+6zZXKSS~_#|rROa?_6vqAQf7N`e?a%aa<*t2SS`D#4_!!ibAZLC}@x zG5XM`BydU8Ca~n1iKZA!KymPsmRwQjj30-zh4S1A8Q5}`A7ImgqUJH|LVBN!#FRE? zIAQB+48Z7t|FZnUKljD4#0&TsKw_N-N&1r;*fA{HP5jF|KM45BBK-o08NPta^qY>Y z=KCyBy+Q?jaTIB^igro?lwyv85rWH)vQvVBIk;e5ehzu0H9)+Iq@9?1bJ_1%>sYqM zPrgaJo*w<=-v@2p-Iw8&(wOm~;gT54g(vo;nro76HAV$y9^h~10e9b%Zz>hEwIuUW z{BAo$q{fOcQv}=Ed!Mu%Vqf#JCE;D^G&=V99vUmZbl> zbM4Oh9UX;L6$;R$J^WH!EQsj`z$LTO2F_oZvOi5`GT<{n5C`gZ}4< zcKo*@NM{pD_mfAMa!yq0VUG4OB{|AEr=U6y%ccthn!nwm)E}h#PDPG_K_HJmvE<3v zJPG6t)9XOyD_~Xijpc$L&U~WFg!Z`2R+D@PA*(t#Q#G6M2PiPP8g|XwRScSYF>AdP zy$3Ba1da?@5;BTNOlWwrc{W)W7CVT>oVRW|U{q+{hG@}1CPszJGyEjGyD?n_F&+5b z#}yy`IeGf@BdAT`I?yw5lEA!G5qP6SG=V7vRfxzL9{=O8~3I8eygdh?$S-ohkg!4EdyWg1B3~~iwpm@)YjIf z@VoVNRjSsjCPEd2&CQYVU84zZos%>?KS?D7)oQlfUyX1KTC5`TZh7e1tNGW%_E##} zBXS^z10sMRIRJ`+sydnq;4wmyGh?v@YzxM%98n_+AM%=rlRNvcBA#e4kscK%1q&I; zULP}X9+7poI>;Ygb)B$-O~4wup?nV4(>re>%mR48KhNCIvf2FoGYxY3Dq7>W=F_A- z;o$5f3Gd$#%E?<=-|Xg^Z;Na26_s-uj4Equ9Mja|yOa;PquE!hQAR1L z(;r`^>gwxrKyD}G?J1$ag)m7ZYW{H47jFvO^0r?wd<_WkWY{x*)?P+;efrt^$+#$B z@Yuy30eSX#MZC?G(9Xfy?cZ8o9{g(9Se+Jfn2N-%wTl$>0Hxw>g8w-6vu1%Gia6ph zCguFSYla%6NcDqA&!Lr<^eCgkmQto%mv2|+KnA^a{By15rGpbOO)4V61ng_Z=Ze;tAdYsVe1uzWD8;Ed$n6K^v3wt~GxL=C$mThe6G}4$-gX zms~~g>yX)x+SPLKk!l<952-CFI{Axs{w)@5PqGG20GxLg65ct`;6gOn-&)i>bRI5! z0)THx?*#*kpiMhSM0)sFDV#!qi&FEErQalC;`&gNFTH-7_3BkjE3Y`K{oO8S@5>a6JBp186vJEa8uy{OR+j~8|h_#CKp96`nD|?{oVjgE;F4Z zy+~!Wr8SB=R7PlKZV-w)C?|AW??t?L@uHVx2zD|Pq?D4Fiad9+vs5bUgBY}ElJmVb z5IL7cb|Uq{uR9q49~p4%jgWNRJ$K9ZbL3DibKfQBqGVTDmw}7F`!Ls>x5}-)HULKJ zU9n)fT|#nltF{cGiI&^^c~M|TTIQm(*MeTjWVB)Ab#4(s!6%T7_QDPX`{EtzCv9&L z?$RTc%Mnl{t$|%?LV5w~vZ}yfMycLL#&2(`2@>Dy;gTzt1@n)bv-4aw&I0rHqmNd6 zm`-0DFA0A;QYR8bH$r_yyUQq;rJ8T~q)MJVa{QVdLc7x(;4-vIpTm0G+MTt(`rkra zOw!}>S&0Rt`vhU5DLH1m!p(AFpr8YK99|=(MsD}!O8*KhkISCv{wNGYwGK!m9R@^A z?j>Q)_CgrYRJ;NCnje^At<~&7C5;>{1VAPv`OH)$FGqEi#Y)EA%C7p+5MgxZI7n$L zTrCc~;ipY^eoeJ$ynOIzI+$wVt9;?_q0f$5q2(Eh{t3xPQVm-nz~w-aj40V!`VTCKNekBx zLO%s6+$;L}`mU)d9%FuU-#$D2Vv^L&P)LEhn{#pkd7axIbaEiMu(h>q61HW}t>vP` zguI(Np)LqywolV1R1_+=+^&H0W=0mpfQMb>&g}^|Qf-St_(~R4TMcSm_W6xlJx&Vl zJy1AbCPPo_)9<>$V7Pw~UEmJ!PJY)4aSH{C{%xK{j$FOG?Y#p)yRB{L@F`k4zxwu@ z>B|7Y=Ati zSnJH;{Q$C{<{n=ULtgp})~O^^4iv{O-p48LZR&O@l1DWoEmiVZ!6556%}uJyP4XF< z=Q%$PohgVNPSMz5$Ci5=!=@sYcRRFs_6q?h`wDt>jZbJRLSNpFyItqhMnk{J)=1~>+D^P4eHa!fPV->NqLsNPH zStf9sj5wrM2BniQ5NA#>2-asYe zPRqFaRRQus?e{wA50BLEI?6oWOJl9h5sdU34V0``@?xDSOEHbY4yN&C^YbU&+@D^F zF;W&o2Sx*Nk3aF{C6;X}a9n%!Wn^_V?vrd}tRwgRJ5?9TM|cZN^xT=Unr=wjr>0$J zkrNo-EOYq&JG~B?{W&@-+Ub|2$2UPnE-`gNOGoF7m{=^xzm-#ci&EE~B#nd`Q{wZF zPST8T&Slmi86Ht@w8pUht!lIq&ed0T-zp162VmqLVeP$hNBF#XD|QBVk8c}Dzj{)a^VYD zp}bS>9I0{P7ZMx+gif1@b*rBVeSvJxFRg_{(UhHLh3c&3q1_bA<#Ew(*XZT9DYspVHE0aknF{R-RD=pr z^*=f6svy8oU)V%!F6_bygzmXRQ4djxRNeVqz@Sp~@fq{c8K87t>EFW+q0@^4rA;p` zzquPb%&XZ|+VsA}*HxeY6J~TRsrYaDFq-l@{|LZfxB!);;5aB=sb=Yb5chxy#C^Zp zqHc+@bkn$sUObkj>uY75ekObQ!@rKb-@pGFuT!Q#B*Z{O%O2X{f8bD$S5dR>@BlD} zZa|w9jgJ603z2v@KC6NJP%&4p%Annqw zm_69~uB+S$oD;*@Rp>(m?<`vS{Y)}u#3~FBq}qAy`qyE2ydb%j^q5ldA&oLzL7~nB zL(8-Znpe=^^&vSyf2@iOy)xnP&-IV!y}oP9tU_0ks@SfB3vOQM;h*{V<^OR1LMQe| zNwIA_bnJ?z?KHE@C=NQ^zL1`Pa)w^yBSak)S{{iR85To7V{uC*2g-%bs(mGayU>DH z*U-2J8${J$+~tLj*OpUcJ@}y`h#&Mp{ORG1G~QuW8RhTQ9z(L2VT zC#5ZXjR+A9g^D2Fh&1cR1Iep!cia#6V4_z-LquI;}Rgf$7~<&RLM3# z;BfJZ-=uM8CQ$rQt~2gvfFR4m8`~Q^z@96Mu!7|Xk>vJO zpz=cNygZ3{BDQxO96RttrHP_L2}Aj_K2(EGqjRArO@>zI#+z{7%csXYULYnkZL4ut z9rNcxIHyji$OX{7s1&%S(%uy|?g25+0uB!?pJ31$J3OvHY+LUluz$~J!mrc0Qi;EF z<_lP&$)I%gBs+c<1<5z+vy|E)w?oGT&z@ZlfR0REl$)&}6rHDG>35o4|2N%U zV~gl^tx>Gh)S*E*y+gZ9wg)y2sna)O{U`fn^JLMP%y_!weK!40<)pP|dn6I0kYb>YYX>g3iI= z4bg~H`}AZk*}K{XC<6+lUCti)F%JMF8%QI2xdG+zv40t#Icv|H5-h<e0K4Zo$ z2z)(tVSi^~&t2F@Pf{Jr7>)aTyVho~NY9_;_{I5n&1>lb1{{d71iTm%*_J5)&nsHR z6|1uxA~?4ydwzOT0Z{w zGue6j#HzgW?|x;yQ~$^<@F!v2Nj-5bh4WKiy?ES@N2Bw2&&tgD>i-E{=20TEG%xu@xwhO&{jSw&-2c9l_sC2T4UdN) zesx%JxCVL%98i;Q8p64D82t>V676$TSeyZLmxix{ zPF3stzyB~x%F$d&`JP=0FiV%8qH?S&&P|6P?PQtriXj1=`L#!BgIuaui59nng%MS&nj z!^&bje9yC~a?M)W)$bbRdX%r>&*jxN_M$VAJmiQ7kMGv9`x-FnvBpWkp#aqjdo4b) z(GiI&^QA9MUDCFQkDry~sjz6Oykjlv8hZ~Vbmauv(lXB9iBgEfyG9<($nr1)ixiU5!vgwiPIpreW zIX^`#=F3u5gg+_vh*PkX|A`?+=S!HIQpc@P+^T>{qQ9k4wqdmf0j(NrVl@xPJvS z%MD*z$k^d0IdH|HC9LS&FFij*LbI*#xZA1hrPZ8W4DVjN5i@e`t>ve*8&X(?WU90S zDraQxP`wKoM)_E&?9oir;Y`95|8krrIk1jW2HZ#ejq!Qcb0z5R zt==R1`CpPMLS@X${8#&lsX5wYJ zAJpBiP5sezr=~KrLOc$|jEA`5u;6-tt-IBLabg!pGE=>{d{W)DpNfTkU1G%8K==d& ztFnAz)=(48#BHkwDs>){ixhJHN5&48G4O?lY=w4*1mPyGWk_>xC{I|2kvS)9COTJE zjVPq#=_?WlwF)7@%@LZ-2qj^b5<`8(q5z>Mux}Ys@Lqr{@odpu8PcSQ`<1NYHS^Mzu<*8>-ktqPNkqu{11v2NaD$Sp?r;zeQ7k~ zuSh}YzRFh#WKY*?lV6&@k~P<-affwM}-u z8csT4%l7C@Ht!nCreDXb+;t{trKppS?3_gFvRZb;8@5)SeI9JOppM=<7qFy1ArNMl zcjGzFHlu8K_0RY6p;t+@3IW|#VLv}dUZKvC@QciCP~m!ZpE1n=l}XJ+*x{T=v?diq zB)zbC`Y}bCZawyXl+JFAnn766!ON;V!O4lEB2#kdA%c2j6>`cAi?AZetNh-2lHHjs z+j0Q`b{n6E@w03Je7s$oO8=$fu0IfY>mQnx^~I&4_X=2cInzf)avt%=)y3uI{d1t5 z`o-o!q|wrT#7R!4*_u=($5z{W*!H#%g87pJU%sDxiom=;^5ij z_)QtB+LX@{M2r3C)4osF@%}j`B)!v%nL2SJX2-zu)iu>KmlYSx{`i>+sPfo9v5e>E zG?Ht}Hd8g1$QR3fzF5_ub)%cAnR6^!JYT8)W~B#CIr{j!v?#5n!{ngC)4}{p#UB^z zM1HO@X_*&A$i|7Ue>=0VJ?I|hX(vfm$&j!2T(Pd&s$+KVr&y-=$gvmpu1 z`vEQY;C?FPK#Fa|3#n30Cw*}CaQ>5UNA4UCX>h&jD1zWB&)|C9tkCP?w_?=37 z9w77fS2xNhDnDk|lq z|1mbvl1@qN;~F+e%;`?iP6CFoa|azfKqxwyY?$)S&cgs&khp3f_&(Fnzw2sVVJGSD+gAw^^ z9&hyKsVU#G6u%Acpvt97zflyI1l2bRPMrXOgdXQrs*SE*9#_JlQI}2!=<0Z0pxLgel#nGJv1REsOdR9u!L38$R zbE*02hy<2}BRgUqQ*q}rXa2UzG=QJRFCDc)7#8j>aPx|uqhx{KFz{E>< zdDa(CnB(R=PP5geNGB?TSq7q~lz;Te)#T~mpQ92*)vgo++}_^^bNasC<9i&2JF*M^ zjznoZ2T=Khft60B5UniT{S!*#45LI6>y1%3Vo$6#O=3QYVlv@G`z9Q#^xmFGIAV7YOK6m*ZTJmcD z@EaOKN6KBbmD+%#-z3n%a_Dg@)GJC>Hhj4Vj=*;j!?wa2W>@;RLE-=^c!#@ELAcH5 z=v5A)W*AM6g6fxIb?e8;EE=vW7(I;6mHaNoQD*KQ?nvk zi*O&{$l%(T`2IFQXsCW$XA~8o{v^>0>pHj>L2WyENe+{uP|I~*b7Y8N{_$$uxEG;oukTl0R>zKG^R zNXlg3a^4}SE&21`2*DBe7uBAt;DtmzbFj)B&o=h6TE}C^Dx4Ap=Yf!JvRhd&nf2kA zzQLQQV`A0x=2{biXiKiKwL+14d|jILkv%W+^z`BBj0QXxo4_?=cF|`pl*HrTelkta zpd|{;_Ty2+iv)!D-N!=+8eUl&4;`64p`KPoL!u=~V>)S+rybSIEm^mPcte*$jo1Y? zUO%yvE9Vd}ce~{&p@awjpy9WxKPtRn_gk3H`G%|>eM)5Y^qup${i8|igI(IrjQwhy z0Lx1bgRcbok9^;1)3Yd=nMt+h;3pkMcVwlUw9b2Zx`k04siOj-tw+)W8~*B>SiOx0 zpRh$AiS|bHpi{R(S+BqB`>z+TBkC$wi%j4bvB+gNnI3#KPZy&q;IehM`KW}mXq8td zr#Put;#PQ;=Mot6isb2volMG7zuuMM&u8#$hv>+8=tb*lF4is9SfL+y6~`-u1OC0o zW*UZ;#B5^-m#X|fo71_Wrb9zl<4zNqCy03)<7x2s)V;I!{WW605BT)?MP$7u^0p9O zap?I;zfMV~RJd^~|Fk}JRq8~B(Y z8@?i9WnSWnbLFenJGE8JCcH{4haV=YGvBTY+Q|of8EPN07l<%y-8J}bhbnI(EE5R( zTK0Vx_xCf-;gwrdqgTfgdZ&)EzOR)G2tv?iA~L0pIVb$u6hq=jwE{XN1`d-sxoS5q zcAh<#@a>V6-&zGpN$PFz-H9V%De*UMDUxra#|`jO3zUQqqsjM&aW~PHoZmih`t4bm z9?YkX6C4_Mqds4tKzkgYZ?`e5&9LsUoniG1cS|Mn(oE4VQ_mQ_{K+$*#pv1vmd|)q zAiO^AsePqRb?^PSEgkt z?NK#tpJKLDedS!cJ~!ipuF!|=kd3G;IR#RDl1(Kh=0CRZf_q2EXVPv^lgVFb(KLp9 zp`qm;Lz9>J|Mk&6RE_!T^MEpPMQZV>E(9EFDJM2wGFuoUhM6JimMFivk(kJ=%a8Pg z5L5O!>X5|{@yWHV(3DA)iGEz{p?v(8VLU97m{BKKc~h~ITgOxgoEI>>qzuf#b;Yo2 zCn${Bh^NrkRQ9A%ms$zqLY>@)#c`{$?kvyQyyY74aHd2*xh5aF_U>Oyv}_R7hK)mp zi0Xw24XLeu!ryy{%&EHEexD(hIR5dcGOW%HAsVS1&3BPi+Di8uT5Y&keBa_RX+D?& z9N|jp$|l=Mw9&Ja94gqrLy2iYlQiEgL+`X&D$2AdhomyB6Xee?{McB@wB*p)O&O-e zHC{>lSnG<~qrLH%^V!G&l))@f$VX_!K&86i03*YZ`rqSaD>>hAcB<9%U>xuPJ8stW z*Y{!aHfC6Kdv1xQ?F)}7jiuX#dh+xoNUMV*=hp<>@AYk@9!LmepxGKbjC$aU7yZ4< z{QZzG0ndUaKlvI+Ihjq|y7D1nwqQo^-uDnRo@k5C)EhP7xZOrG-Z%|3s_I9`)|?yn zR=EnOp29@r&{)tmobFLl&NbKY$JsrLE=tvvK5ciW&sJaj-4^k_Uhghl{40ZpkW#Yn z?J-xrs-79snV=6dMcY}U>^TJvdnNc|LW~)rL``I$erQ~M$gpa`#=iUjZF$JUh5kHe z@`37uGx&q~w4>Hsjd|@Q7>Rn~=i6X%kM7Kub`Mm^v}Z_ozzl9ha)swHabQ@%4;2b$ zC>Lq$xfR{S;TZ`>_BJrh;s`lQCAW8?k9N1{kYyuZn-@SDrIvg(|m^OpI3_Og&<3(>%CfMgM9B8 zW>)Q7tS5?wBzgr6vv&6$KlIJbyfTn);(f%rZpZ*>>>J?@RXBAfRi(ekME1uy!Afk^ z*0)Lf?da<4(Kol*!If1Eu5iVJRVrH4oGoP~+I(R1VoxstTjd{& zRvss?3c6i7rDy46xEh6JMUx#!yYI1e+P4^_g#rT4x+h`X(2&J5RHV_EQ}sv$D4ev$ zkB6Kh)$-s7G9ZviQu+{aB*T+TCMeF3_&6kOIAjapSq!tcfK!GO??#H%`+IRZ!0^Eq z2@H`XdW#?gY@6MUve*3eneP4LSBpqVp?-89g3N5Uew3Ww7~Jmjio9jFBcTi4pN7MG zWb9TEZe;Si$^`4=bm5Gc$6d;s41AfIV;KPyja~_=ldH2|w)*sycG-Tvq^I7tMN#8L z&(@Q*nm$W4PVe0)KFA%GnL9_FJRCpMxoyULGb+M?t7jCy>x@FD40EE^X*OT6e$e}S zQ#8B4uxV9-R4YCwP#q)Z+2))ID$^+J7MG@*tK^(mXMQ%-#e(Rgiz6S`E~zU#plc2% zJ0MN2c>P}G3~12hHrEMm`!&|SVUbnT3`~@i{rtW3@6(-OkD{g(VQbNP{P_c@dc`Zd zM_sxr{k!t3T910Aj_$NDDv(1yuF-1_qj`Fi0~C%_hHtMb&5`6ibsAL9?rM(RtZ(QO zn>DKzmB{zx!Q2cuaN;h4=$X4NOTsk=n@!`@>2P) z_m?Z4M-*j&**2EXu1m~Is#)Xt-JKwuvU%7cF?{C(WA}`IYW2?A<<#Lxnyrkh&vB8X zWLLE&4;LvBr-pOAaUa)M8H6jj*4rcI$t)|kH#Uk_h&8S4pQ<{%I*GCq$9^aH>v9TE z(^GXDpIj%rDF)+>i0PN8feUlcIOpHH*|a&Sd^)jMEp>S8g~h9nYpr>$(T!WOTxTzg z%}2F=vzhzTd1i00kQIo%px+q3o7vI=Qksoqxc`m!#OlbFHhSDwP~@pD0YHp&PX@@ zA)CRSu2mpUQy=K&x_i`PsXZ-cB%VP#_t4%&%qcqw(yxlC)eY1Qvs6FIsS>wy zZ%0XKHH5)x#6ua4-{uZ@3emN zthhF9*3e*7l?B{}|K6DR{c%ePici*Rjv&=;sux2S!uH<3i=Kv+9HD*)xwm~1*>_34 zt8Mvor|Hy?|zI4s^7SJi)Y5hiu0=U*ulJ0 zXuj*W($~YUiA&IkyOX!xlBy^xpEuOaO4BUgy|;U#_=TLO5a}6CXp+W7qXb167=jI9 z)_ZlGCfNSVmo2p3VBtyi`NQR`Zwv};Cz39R|3sv~hNu5yMF9AN`~tg^!&8y*JSllw z^~dqkERlY<4zJM^i%x? zW&uOE@m5Q{ijTgTEXE13Ji&tX9OJEwg-#4nt_nOJZZipsxB4ovc0xs12vO0#o#)=W zeZisylEEu(#s6d{0S_(^_agb~$IFaE1PCuc!fB0|jtO=e;cX4%V_@b`|u2A_~# z?`QYOJnZeFCR<-A<4)tw=&sO%C+JG#--^cW&64J-{G&gTvy0ms^dFa%l@$n*g$+0- zdQA3Z(e=M48xQkG@$>sXE&FrtmsOx9G5JazZ~?z-@woM_+>vw@QahKbVdd_Sp=X$4 zO4S461Ea^#63?4NrhUZ@peVq>yI=6H#PpDMC>>5>GR02+fYcq;vHZ3*!p=|M=G*Bh z!>@39aKO9uaH=U%jYygczxKu((I2e?P^o?(ZX2+=j|+kA<~sR3aa8f4(SD`!IF}<0 zPVy4Jxe*Is&ys04YS?^dk#p*=PvX-Zv3KK%;D=^tWfZ?Py6qDBR65+)$J+5Y#J#0!#;vjd$r@L>}~uunBY1Up~ao1 zh|(m!`}74*JQ?O#ToAHzV13U_`<9D0!%8`JkEeoy%!V>zn!kGMjjv^vAlOgu@NUFr zO_8>qEOh{HjGw>s!+(}x9rN>{mq(bH{Lpl{+*b-iBXyj?mIAH!MKk@zt(w1- z&}C!JYhoiGK^pZLbhUJJw>>>svv}QER+ObuLBvT|>IRb1#OG;B!Qx-1IJ(nZ+oKe? z(ffS$m=30N%&liE9sT_bYo@-4!D2h#KgHT?j)u_!AQRP#RtFtE^8WBj7>ERdgSm?& zgDWfSu~bFWTLxCiLAW+>ufpoaXxkd9jkGnAbDvZ^bC#0H97hvdz7n_#Mbqi}&ZSob>$kh|pAM5HNShBnkM7~|W>jv};a}Z{xlWB=g+gKM}B*L zYT_ZfPU6P2AwzCr_+4AqZj}oAKPQ}2AxOMp$KP}@h|el>jioaiBFX?R0pV|w-jrX-iI3TOMPOx`95OC z!rGc2guO%&2nPTc5JoAGE1m+9aTTat2m(*PDcq)o0%V0Rq9wXL=N02p(p7G$yz2>m zcG02tF(4nmf%dgoxw8iR62Rf6L3H!p@0m8BBE2mh;Rx~XbgshInM6(+JD_|hSMFC& zf24tgUaIyUiZB{zTusdZ*PqL{4=CvJnLAj^bLpOywVCJix469|E8VInljt?~cJbi* zV<8@fLF=zU(Twf}Agu+?+qSYHLaN}5isN6-R1Q{>8Fi;Fs@r|27g?)D*ohiaHJ5tw z>2UDXTRF0sAg%Tat}NwVS169tbtnSZ=j*w2J%|N7a;hyw49kb zwxq|XK{^361%S56Z2!^?7QRqLfA!ir0x$)Lk$q3rwZ*hPy5rg6YqEG3GR*~yNv!}B(jx;-|4d_x}^kW5bajD!|Y;9 z+~K%p?y-`twrkmCu|SiDX8%_90EI>TvwnNGuQx*L_aYUekoa$ahPeZ0^o0`+WUyDj z4VcR(SLBI6v4C-?iW5NRfLZHVf?1EUMs3e2@4W$7)|0!ns%?mMCVTEL16z<2b07WH zaXptaT)Tqi`1M=o`HhZ+laCN>TpyQW)V2A_rD7*LLO!$H2|e-i=unK#bz zVHWY9rP&L}A&!ctU527-#=VvkFO-}k>J@QHNq;`tW-<4? zzjpf*PgL^3A?eb7v~7u^jd!RHf{$0tV4=aZ>;mJ6+hhv6vo&sJ(t77PTT7b_%6SWQ zlyr+6@sd`eF%m1E?P9ri?SW?zAU^*rjZ`$)paDM)OIOma{YAji9n@Z5u}`??j-e~Z z4q+{yZSib(&Z=p+RU39SQ!g)aUk>+c564~bacuGE1_Vo$X!qrz$x~TGsm#3OB_^Xu z`L*Dq2s+MD!#*V)U|ttN*4pyUdh-%-+wbnp=AsBOOHn)EW3P6Mk6F!0tUj|Jss2g( z1Ho!0$65}>;9b^?4)tOJ0=C2lbhlq-?*6`fd~BPAu_#;AuK2+({n7Ng-M>Zu!6LGM z>_08W&z0lf7p1o1cA~4iC4H60Rt;1JUW?KGc(_i~$S+4}X=qF)+b|Y7c9~(M&rBN| z+#eAy-&;9eH@1CAgcOuX^d6bw(z>^-@r+l|`ce=8$C&(3^~=GkCZ1wGV&km~_H`2< zL@aIA?4xZi2iZwV0bSuLaC?7$mbu@PWzg~Nw!VIpSco->2!O$yA8I9_ew-uzz8Cl} z$S0Tf?3Zh&vkMFNp4D|ZzajH8Qc*>R46)IcSW6r*IX^!rE+`p!BiK>2||#4$-?Qu0#R<+*9ee<@p4nf|PpJ`8#6Hr6NQ zA5!G@sUZD0_1sxjo}JEZN*kTVYWkt$0+XovG;P&HO(6F~F7SMfeT9*fy`SIx@L>rlbhH>}r8T9wA{s0^jqR9;wHB-Plv;p!A0>h;^c>GcfP>eA^|GMPzqX|4g@e}or)-pkQR|~N? zK%73N8Yr@RYZU_P|a7;iCe*N07qU+=CW)1t{2{An1evzhMB7DM;xB@jw=JM_0OL_R4y5uO_)b|sqcy>;uLKQhVcKmQO(YAQI5UY z3;=VR1W*_fL=jqSS{hGbyq#+6; zV8eP^?(yP9q}e&WEaMYz||9)&TFq%%1h>HIFAjMbLSFNMHB zaXDzY9II(EEX%%Fpq2jUPOtTbNA^YWe^pHZyUpIM1atT36=3@exz)}0c@392aAMKR z;yqj+U&ZBci*zs%75N6GBq^HZ`<@xqr+*WLkz+#$_-z;v?>kj3vQS75FHv$LDR z9pI2s5TTy3oM;c{BN39^P@uQ+46&DnAaNczUzfcXngEN32e$U_?$T-?q5JLakinOM z0a(8uV6q?&4RMW-&z=njJBn4n zDz5?UDIqoW;<)jCoYgmj*v5aj^y9cPm*~9mY_pl^9W&}jxN#~DCtXJq$Hcdhh;iAYTK$I0=BfiLdjPb&(z8(EGYm zuw&%lk6u(_^5yi!{FQH99AKjBrs{eycPQ(2z&j=lr`u&AI1oi|2ZCycfw`3>!n*|) zux0VLm@?{Ph7XCFT3V-STsX}RE?!S3ZMDcB>%Aj`nltWTD*NfO8uJtu!QpgFa#8S; zl*!?$i@ZJQ?_cp8#w3M)D+fsfs%7*NW5HV<&{qJmH7eA9q{2;NMF|-7FeD{@Yba1d zyr!u+-%@?Akq+i`=6Df2-h9hCUa5C}YdvqrAg;bVrk35H>PE-Pi-$3kTOYDPBnkG_ z3V_rIV;+1|IViw1Xb8zpq@NlgyJTPfyo}@A_O8uX#&|G(g_gS6_IXDr?&KqS$uW;) zdILX(!9SN`HAd}Bb`K#z} zEzg&${wLLdGrdo85Qg^ z2gpaY#s+sAm?UOEG${vk3;Oa5qak6;v^w7^QdHdldnCvKJV0f4O(MM^Ax#mep#)G| z=I2pzll_75OZ0V8)p9)wGG|RB*j66ShW@dp9||9(P&0YXZ^|WQN#Pvr%+#lIg3kQV z@H&o~)g2^J42AC%10{1iTa7YzJ?&_bvG2sWm5>U|6-P`0>4Wde$VsD|@YnsM9)W&+ zs%b@;WXmL52rQsm7 zS>3{wXNXlv_LtHI5ztV}cC@o)X`@-J>yD$O6PInWyECcv-0;2Zn~I61`w z?cy;sG{9X!7||;U9vg!Y*9jb?p>mhwka*4HBq^-?9~J&@9#_;(J#ccPF4Uc7ArG{nm3zmLW^A^y@k;L2N zv!mhUonaiD1Y})UJrfpnW=&TxM{_ySU3y z5b9r^kdIQdSoWGI|EPBNQT66*>I2XegXb+e_67;ctxET!L0&1%A=XI_j2F^ zl&?HsWpL4LEDfPG+qNYnaA^4PRQ@1X#-Q^1Q&Re=cjsb$Mz(Mf1hT|HDwLo9ULN#r_@(2p%8sZzp=U#_MK&Pk`Ftfl zByfoNpcnboyF=Eo6C`;&QDDL_%aS3`q{Nz5#OOtp1>hq>7G8`}yH|KWw9)I7Nh$>xrA5R~aIb6)=B;w8s7 z&K6XNP4G{eCRLGwn0ik5zN5MxK$$jAGB$3Rv7jX|%rwbI9C-+44`26fA>&ov90m}f z{=2Fzoe6d@a7kl2NYO=g?9lf>&K2JC?7rQE3S-kOpo;C$m^-7wDX19&#p2#>xT$wh zo}uI<>~!QsUyy@d0m?_=d_s@CiTtt!l&8$c4w1jhm)P3dV*>r-Ev-93OK_Q=l=xwd z#5d(28j;m<1?Se2x5Gr$zYo#h_Nv-KU9+#RVYEVNhwg;V;x1b~$(uG}MrShNX?ZVV z46Ky1nBOd6J3{+Og=>TB^#ps0mbn@kj6`S#((6PuJZ2E&x}A7mcC;@$c}t%8*>&^(ekx(3Ocjvj zl-U&yD(Qt=haGesOj1$Cwg9}r@8x?P0!FRxys<~^A3BU@bT>EB4S3BP`40Q7H{bb$<lKh#TVP+OgmaFK0mpvR(8f^@98Rw258UPUFinB#Y-8GdP=Ucyia@CBu|0d zm&$u&HLX^hS#IdP?GW()b#)a`RW09}?nb%<2?1%94iN)UP*4z%P+I9mT0u}i1d%QU zR7y(exFFps-3VeAd0LJQcml8X1^GS&c1Z{M~uP?Gq;zVtSxkwkdyDj z%u0}nS;OGvJ4fV7tmSdPJYe~27~H2YV50VuAFdys84&HmfJOfIbJk(4_dd2l57;nR z&){HgjMBzbyRlB(Ufh=#|L>ua+u}SsBURp^r!YoC9l?zuflMqb$PJYTJmGZ7rU^^f z-=Svt^Wac6v*j{A8@H5!%NXDt7gq}}#vXgz4PSopkJ9p|d_b>8CsCB`KQ>wNWAreP zvEv6TBhhEVwHI$H7oqSuHV?>q)`Fs& zT+~C6eoICHlWYoh2g#@&scHP6i_)~Q$GVw|=FadP-PP(p@|+XSt{yk*hU=J43aQM8C2xQmJXu(kYyM!ZeLyoYi7 zahj-QbnN)@PwX_0rkpE!?We{cJ0aWFt{0eRK|4f0%sJ)bD-wRR<)sNv^raehK+M^bchg#4wVa*ML9K%Tv#!GHRVf?)$w_xgtU_WNu_NN0l!}@= zeFd0SrSBCyIFbiPy>t4M(^cNP$Byzd8wR5G?M(&GKmLjx3|W$YYA5gt`!j!!4X1r# zMP8UYn#B0T&5GFjMWgcaUd3ZSGOjDKmzGBDua8uzxmSk}CsE%05LF=Tw7nF}xPo_? z>e_AkITUUnP4G63M>eUV(>Cqb5N}V^#&t!gUGpyr0F!s8Wt8 zHq{emxO}DiI9L*%c%|pO?DFFd$3{!AN(v;)O4z09Ms;S$ADFXYk9doV4z`=qT${oU zb=nT%n)5=nD_Gb?gfWcBi;EGyeg0G<&5Eg z8g;)FYI1UsmTRa$faaKd(5}|jw2G$ozI#?VGq~6!9NYcCzk$ji?nIndQ zxrWGX{3rSYPL&^vKLhcdt_~*>(bCUif2{d2Qdq(rC#_>@YWPD4TG&Et-p4t0Xhz*X zxHOuzr>nA0CGm((Iv6nH^OX_AU*{S|j^(DxYvL|x7ai6FFD|1>(8>7iFDz^7+coP7 z@cq=d(B6yaVKvgucD>lRvi<9Bz93xbxcw=B#CJyeUk{D|;jEeHx%7jt`L9{G-3hf+ ztx(5MjgU%bf1$pr|117^EOzWpu8kX6(I{34Pu#m#KE6QfqN+Q;glss~Zvxi!Y(8!5 z1iFiAh|5#@tuo6#u0;D8+GZ@_7w%gv_WtC4H8fdEq;Dk-6vT=$13D??_^0A(qByG+ zaRAO8V4w4dC>KXg;$7E^DRxZRRYd#+%#34UuiRMA`IM=-W{ORX$6NWd)z+}`vLfxR zH+`du=ZYp#T1rBxOsk8*M}xD8ZfET2ZYJD}EYK+Rwso(THh1L_rTB>JOj^TLg+D?| zJ*^Mu1ACFTPFpY2j0-3T*&VkFeL99{hm!RZIr#6E{&D4pjL2M?g)Mp1_d9HIMVR^Q z!?tQqzNm2j(aFW1C|^HC>?Yc4q273M3+TmD9FE%s=3CUF0XLOxYgVN~{4)dRVzIo~ zs*lRM=5`3pCWK zwoGvs#cTI;e7HTWYyG}S-tj@CKH#IuD*$qsnl?M+NxTNbl4H02xZKrV#CFs7h++v1 ze;qZxdXKF3G~sa&{Ks@at&>NhA@rO@r6MWZ12TTdIQ+`!NOoqS1D*?R&O_o-vX3lH zjGBIg?Mp*ajZlaVYRAaQ-qlT~TQFKNB8*a7v%o=er+rCj!ZnqloB1kXAGR;{5i`2D zXEZ$6-JI>MDK07yZCEN5#EmV{hQ<7B9Q1?CCbt@un(RHhM?+5B&Gc8tk^<@?9R=X+ zQ_Ft520FNzUm-j5UHo8+!@Rg|^jNFc0ePj{S1_&}en$Cuwzq_*%&GPGLD=T*a~5+p zq{Q{|-Tqzd@>X9rKw#=TagE5m`=!L5v|d)!(@EDqItnR8SGa|lSJJp>;8;A%;~=yp zGfE*ceU|5jvzaCJN#!;vax(S^PMQzK?#S-~Wwf*;S8WUl=#jjR@}h$t%9O(dfb?_I zZQm-e(@pzct?xW8k}QiMy@$<8o``)0_kDoTk5(x|gVc*VE;nzVqKmjn?&q7JTj5TK z#F&vwpAolLbw4>P)VA3-VU`;;Y^70tW8tW=;X@akoC&_KZO}1wG!Cn{VteC=BKAaE zOUD^H}!K!a*s7*04A>sCRKk|SQwr5|&i^6#1G$+WaX&Ms= zS*gC=&hB>aFW(QaAAgB@it<_{={RB)9-~eCM9-W{2=;h)XMtvRf^>vqvgH!13v7O z_(2c!(FNk^1172WWWTu!)rgWj2;Zt0!~}aj^{)xao5vab+W!-k6YQfyqi4q8(K-20 zqN00LvFi~LA3+NCvnv~I=Zf~#p6As|?9^oobDWIY`DCzAmJ1Avs~;;o`KQ&Klkh5` z+~AiJ16T*YViFQVo6>J_95UZ66PSq~re%8l>>h1)>=b7r9wS91&9_Sak?3s!C$6(g z^vai5)@DvH+i6P;ZivHj&VjW|oW!?fUn<1rKGyy#O0-KXfX0XtI~fYRMvm&z>gu4I-*W}`}fGm-5Eq{j$M*`do z9vfsC`@_%9owkuwgX?pqiT2s>$IzCGg!KaH?)KZ?P!`lTWJkQ6$3hAj`kGl*%qA46 zZ>!Z?A@WO#3QZb z0v>@QQ}h16yBAZ0uj49>p8b}fz7|em+nA}QZaR&r*X6l<2@^UU@^4k$`_kscVqV(g zk4bDBD=-NspL zm9{XA^pv;HtC%nMq_>xNd##;HFVI6o>TQ-N(Z?k{2VZZTqRsy05yV#nu-654j}9{LSd zB=J#Hi1J?GscBxH$%)->JN2oE_>QrSUfm-VVkgs>?&O?@bdSd?L%TBQ9&^OWb?k?7 z(GC=cTeNaHR@Rx&vFFLPI6ePFfU4=p8CCFv>i6JaWIx?v>vR0gm#{Hm1&r+(pWyOyYt=a3`(FN z5XRcW$tAW~KYa14s$ref*sOkEkt)kx7VoZhqgXMP2(66H3icLnzYk6$R;ee2{iAvb z1Ha4w0qX4!6EE7lNpzH7Uhg);?C@brS(o*TJE3B0b`u+`o5{-C z;)4|(h4#He5`zgh_hiG;1y`B0a*Uf%F%Y&XPF=ltCIQ6WFN`(cq4x?1L4 zUc%r{>gf})B1~ob>=G43?nzaFqOQ1V9hTTtft#H;`=!ozj1rF3=7gHve zOMUO#O-62ls?FP_+*19%f#V0}YJU4fJQk-q2yET9kE1QF50(IdvMD8SLZX2Kvvq@f z4)~7y4}lMMy>lX)?Q1t?x=$|Kul9soO1tTQ56S1M%UzP}&59D0_V`eobVL@MGZc44 zjYlZ=(E>Q;(Il({J=oQ5+qoGVx#UYPEM>+Oq?|SQXz7BcDEcwtwg_SV2VF- zt$sZE=9BOK4e08uLK9vAiG7*{Y5NJ39Z*`?t5i-8#y}FX^C9s1cdZTshB2*_fE!t{ zQOKcDdi?J10|v?TSps#!x!V)J)nBc7G}hl|xFRc@nLHxjG+N`hZI!{Zy(QM@=ysg* zdB(7GT;1(>WYpr)sWJw3Co8F~u5712hrwBrn2_@=hcM$80l{<2D$4WeZ*)$z8+A3a zo@ zID1svuGb_sVmgcJqRy+E=bGc$RF^EWAfj8md-?ROB;rc)>$uTa*&RzB z5-f~kyqJJg(*!v!(hT$VY*droGCj8t{#*T0vSg0;NvgyltMA?WlwQ;CWo}W3aK`F7 zNq92uP=kQk#TH+M_cU1xyNs(vabe;`^mk~j)||HG(PLs$=VaHaL1N~%=``+yWPkuo zOuDo^ohWuJi=mZO#s;#uQfC$;2N#)h(d2u>pDt(PG8oJ0)N*Qelx4f_6_>#}yIjF| zl}4<{h+0o|>q@G&G=~P?ZTu}h30c9Rf?jTO?f&+oOO`H%DI{dy;<~T3QMTvk-hPTX zja0=!4y$P_zI}S9AFoauL?JQFe=_%-38R-KzyEm0qU5g+t@Sh-lWz=5aC~`X#+O?0 z(azgf-id05(Tx3)!={Bv)p9FMk{kn<>3BDnrz-^_klefFbeMb467A%{+ohSVq+TO96-*Lw)&G<|KIR%7?{_Mk^ zU?60Ld|*vJWTqp_KVVTN=ys1DGcOxw3rakq@FH`a8QfS^v6@b|<)PjQNOUZ*Z=N*C zcG@|Y+?}}?TU#%sCw%^ag z*IepqDSX$}F8m>2#t_mVWwX)xjB@UxfF=@g^aYiJN?;C_gH#=0IjTxI+0Peoj8-XI zu=jx;@?}eXn}U`q1@ArkHlY%G$d=s%036OXkd`0}XdVZ@n>>IV|Al9z^yT$}sWA7r->`_91}B$mls*RzR|Z0<1eqw|^dZs>U_R08A}b+KHEmiK$_bS*eY7YJ&EsC5(g5ehP=BQea? zLd;0jJ@HSY-#px@rj52S@F|flx%FJ2BG8#YrefDlUNR_D^qP!gVX zHg&tu$^`w46lE^^8RxG)b>5FmwQ@t}be44Ut5I8%;DT$A?2C3A3bqPG81~FsPXOTP zgoj{m=Op35If#>p>Dc8+SldvQ^~-hG+aj!j+w+D@wYe2P&hXfm%@dG*9tUj_M0$db zeH%cAa}ihA@9(Tm2HGX{qBBDb)n)U4zjUPhRg7BwLPsGGkJHCD#))~ODGcfiEB5i4 zyfkW*jgQQehiaA2Pa;j>`H#BE+kTZesRR?%C2!@vzS+7ubIXsSEWwrTrz04)CPWI3 zT`ZY^h!}x~gC-X~>0^Qtv@}Q2y5Ko?9ww@hxTn3>YBgU754ja_4d&k+{$ea2_}UXF zv!)>}`e|bTVde!mqA55U{(NG^Uf~9=V7^K3+Od`rx^Fc7Y|cnmf@9Fs9hoGgt=vq= z);9u&K1uQM(GzTwPMj6WGhuFW-|{V5E<5%y+(X>~f-umnnfe&&3lwKGL?;eTxpYmD z&sd*6epg^Qyfb7SeYAC>_=W-1%1x{R>FfoKOrZOH^^BZF`|(mw&u!qGE)?(3y;aMm zd!`Ca-Y0h?RyMq?VlxuIglG`}ri+K}6S5LSh$FHcDlfhmqXt@JwQvj^(72H@uOq4+ zsznsTu00NzjxU)VAQbSB7R_3y%r2q-QSoAypvAE2jZ2z>#bB6S(PG6L2l5Z4T{9pc z@O)@zKH1Y&%t^cW*>ya(9BqMN1;ggG1m42Qj5v4gH)zLCt^g~%M?lV8UrWfrx`I)# zkBlyc^4_b@wKrJ4(3X~b9ln@MnLcoX;G$|>>zgtbH+n0XN@QUhNH8ZV?T|!?Tb<2Y#mW2x1ON>PJPLKxnIz zefF&SK9RG@4t&tyK=dG7A#<*!A>Y8}HgW+xe;2IY9r9JcLfn$_0nlm)3oXLJh#AZ^wC*-8rwp$M08 zLjzFlQ7I6qSq&Ep^&9!hBg+!dc_Z|5fEtL7ICVw)_XnhkAaVzpP$IndcApfe`LUE& z$sbH6o~UX0ZG^iy&8DL}YddI=o(sV7TS;kVZSTIEag=0`-xe8rGQ6F?|KS`0IE?-p zo_0jcmgRgjRZS15`tYG0pxsV~Rd#9U%XSeZy1lW;F@Iy>_)F8%3xzs1W``jXgIg`i zLvr60e>vT5%)kE?3&An0y-s<}d*dA(03lijswDhrL-1z;FK*N!o)n3keE9GCMy~j_^_V0B}Gk_B~gsVt@w!``e3z zkVkBTE?s~o)a>=DJGz9_Zq$HnCAO98rbyM*;b@^t zCCl242-@nb-AG(SvG2wBd+t)3;j$lFKZI}gKiEc(E{z$8KDV^uzpJ-Y{UPrAM+%p6 z^p)%cjpu``Z|=a_g%E2)Cb$t6sxEjj%f1{Ypk{sxh#7=c7m#%h6aIvbpqD`Jejbok zAlq@X!qw(zHAoRl)P2>s+-*f2z&d5%jMxA&Ap8ib1R(LqjOD$*HT#5A__S!>1wyuZ zo03sPPpI^0ZxNAx0eAu7#HR}MJGeh9s0}UEfPM@-E+^+qx$AN(^z>yIECg5m;P4hE z+~7e{GS4L>hR54(a!M?)Qtex|ns=rau=sm=zGOd|h(3HePc@^be8-JeG!38s#xHs+ zpyt%QJ%8G^vgiFb>1h!?P5qt^XzE-mpBr{KF5jnUFTR#B%{vp@tqiw8vp>`8{9~e&3uGAe#vE6!?)3Jh3=@b~q9BA_PYbif>RrFdq)F*qNif{u+8F z4r74MfZhSIAENE!wd;uBIzco65zH|1-lPL&Y)xkc1Wp+75OaDf<+P347U@kiL8yH} zYF7Nwz(?zow9VGrD~s{zv!*E)1G^I+aLA`v4Xb^aUs>6RheWIkBZpZJ zWsvBSTOc}dznyo2XCkATV?3tZy6uGtYM~r{3`CiR!bd@ zja}6yJt+B{r22T!!f6M>Q({iVpEgQ8a@3hS^5mll_+0SR@?S7#H0$%k%tOFE1N_}4 zAo+0cOQ)vQXcLiM(F6EVsvY1t0DL)6M$hQOocfE5o3hO#j#zi35gHkpa65i zL*t^QQO!rVBX@w4y3cYk9-V2EMEsrL1NmGoYc{Ru!|AbZ;@igjN!#@y@)}#7Cy#H+ zsoi+19W=+c6km~ra?A#T?WX_}GkJ5h2ZqQI;#vl)ywS`Cxe2w_{6iV-cDXdydHc=q z2UGStbtg*%OtL&J7xiKd0z8j`6zs<25Rn9cC%?EBhV1VpVCj43v}IX@!42gt5qDS#;00XOhhPL~2pDxz^vhAv-}T1b70aF_xxxe}(4{ZKOylR-G` z0h9LUR@|}d#`})o^Be@-p4frf7ZzaG-z)6{`))15 zHyb87b`>UNz{!y!m|HvFef@~^5uh`d0#a2Em_M6aS|(xP5V{#`0;`Z0Q2Zvkjd>t* zBg7byFm~(Br^07+B#wY?-fE;&Y~1(QJAx6hTaaD22Di?H2^e_Ad1Yl2U>*KmWT7E0 zE>1-7v=Zb85UDO>=(X8HM&w)}OJ2~6>I>vtazooWvr&4>MQOViN%z95(nyrEqR)K3 zzM?kqv3YA_!xbU8uK~ygVEkqz#;@=Ot;&z~`NZ#FpQsZ*Od2@MK*p%Gw5BD|hArTNn)w$j5tjCx z_L~KcAr*?ukf4GO&4pRY3K%<89QM7JeI0?rMTLc!&H|KTn*=>lZv(5Vuy7dzUR1D9 zV1+O73F$L-2&*u3R(l}hN$2P(s}D)qnvQk^q6KySnB!7zVq|_vZ?xYI_qQM^Ss5$} zdi1I68FYMA&$2JN6X1Y#AVksBAvvCCr2F~R{^()$M|=bCQLHn9BRjwd?6mMU$Ptta zkOB@Gji~Y)083vZl&sMH2`WuFoPjqnxaX`d zRyo$C)_HZ%$AE6@2D|TsqA%DNX+QzPVE%nvL}m?yDqybRlFqzphjU5L_9`{HdZ@jV zPyzqf<*{LSC?x*|^RVIWVA;O4L_dTAC;*z;+Z@)WXUPz+ZBC!*x6mj?)x$U_($Z0gO@o*2mb+R0x zn$Tm%Cxl6Tr#g9V>eQHB38}CJ_?v)0XWO)S*#q13FSga@+1xE;if+q6z zAo-}d+e{OZv7AgbV&L}Jzwxt@Rm;pSic^eS;3&H3FL>&$uh5HNZa+{GH~*?=@w&*? zGs4q_((Xp8I&*5^{ckg9Y1F3q7WS$ro!T=m;t^(rVGV)iQ3iyXMSJ2hiOrzUQ)}b1 z_9+#4A+BD}jcW(LtXn8)&z0e*B=c4Czp ziSM$QMh@8~>?f{G;GTTM5x&G5b+?ppA!EkS86b*o$F#4o<&-V)hpNxuCgV^zY>(gR z2W+7{#X-`qvan6Q31zo&rWGZOjRzt)bM9bs9rmxCc{;DE9|Fmw6oD~MK4a`JwCoh!BbRx!p#QMnFi;oTlXVkVURtFXrFxj7Vx_b$*`s!%&ZRY`%4ED-`8;3 z_U4(wEWw!Cc^Z{eS7!3ArMgDn4v4c=hx4#If>>Er@*lFgjpJMobz{XrADvn?shqxQ zj;^MXY*Hs?}ZDF(@yfhPG&gR#2Y%^u1td|06r0a;HM52iqtYjWPW>1 z>?+IZLirm}I8`IdAF^IvN4gUxjTEFq>l2DH?6n?->|H9?O|?|~a|dd~^Z$PSAl-hO z&zb$4E3+;5hd?*-57(?Yo?A?&$;s464Bi#i-~hy~9p=nsTfcWbF%7+%xYv1?St++|G(d>hPh#ZpCn1EwQ8DuO?)Xvd08c^3bsM#;-#JD zfUC;H2x^)P-{W9_i@TwZly#pkIXy~E3lGll+n{)%Ou+JBgFR827%dc1vRuM}d1ZB!<* zrqWHIFBqHdU^tL_gE1qFC2?G7&31UbVnyL_ObBTl7uW7axC(Uy-h@9Y$ZTn-d^)1- zWtf%dpT9+77`s)mNG&*4$@8nPCp{&5VRQEH-~J%suzb4YFC-pEW#r*6eMj5fOJrY+ z{WFx@(nu>JPiwjtT|Z2u_x#RG8S3!Q#oWj^s8UIjI|9q>8@TvMO}K;9-#h>PV~B>2 zPsy|${I!BDMeP27YQf9Dq|Y=d$gn@JXVl-S_OT#4^~a1NxbLIcS6~_CR=zyfEsf$d z`?)yaKuQ>TB-i+lA>;fY0k{R;bSJIZ@}s$uCUJzz0Y0i;m>!I6e1zMDtJc;t__N>Y z`xkE$mI#ak1akw75p1|U=YCot`Q_*@H69Z!kf{35AkO>u2KO*GNL{)toyMm9reL2_ zUvGECg!$Fq>(5}W@1A;{GR|i2TiH%oI_`-%vith#Z+BhDXhh~ve#6JExfWaL7Na<4 zMJ{d=)Q%)Zpe7iDczR#OnPD|y|8yX^Pq_N5!lJ>-2YGZvy7`~CPRC2)Bj5j0p{UaI8`^-v3_fyvG3s>ocl{5&3y_3zq4oKGZ>bb@Mntpoghw;BGfwcy`M0wE6l-C zlRS2i{p2AC>Ku(HxsB=0woJmw%~H&pH*{s^b{@O=7G_~s%&1k(5uh@6t zx6^(wOm_ClAN0uW@Y!G3m}(|{hI3s>dHF+BRAT(13gNwy4Ts3J@=5O}WY z$yYR`Yy)@a2uILuv7$@q1DB!(+LxRqh8cZwU%1I>3S&>uNi5R-naoupF@&?K#)dVw z7TIjiG@Y`-JLnL89mIa3D3wN^xtn{6rzL~p6%bYaIiU`|iaGD%Rz1TiI>#f~s>NC2 zVcR{{;=WS&OpG+^2~aplEZUe`1nCU3nVUDTv)nho!DVQ*Uv6O@=D(M*5hAxDv~uK+ zaBe1h!lXRc>3C7VbyblW9N#Z|3HTS!3?W7K9%mrR%<;9a5K?Jidm}Orb|)Pa2n*3#gbgdj!qcN2vi7x zB7lpf<75+xlMd#%kJ^{2AIu%w)gMSE3>x{P}ytF#qTU+vXUCG_3 zh)crv!ehPDzHE;AiW<;-R!UwtN7MW@3>r*eq-tKfo2FR1EHdlS_&Y&D zJZOwMJGS+{n7t6tqp*~F$||dVx<&163)#&=?j3?#qGHiEEN6|z7GJNrj@??i@zNWY zmEtqO5&iF_Uh}?~sdGG0GmH3MG~ax9^H0n5r>-7geesvz+RMfEAzYeAZ;n*SzpWn& z4p!(-&^5&o(`;KkSoS+YJqz}@9JPAAP=@k!f0qZwx#LwZFufkj+|lV(U1<(a(Nj(X zE@H$VLr1*JE5dQ(pLM<8SDbJ(R#Pdl%}C@a>B0jgrE90}$M7wnwYUr)`6(z32P@P7 zyWNO4k3H#Ip?VL37}4IE(L-vt6ynOe3uEMyWn*~emp{)l$UAJ8p^whq6F4%*}&nu03PZ)ssx+d|R|l64FOMsvg*w_~y7# z-qPIY!qI&Etvbet=N06EXm4tVD(NYinu+IeYOrS6i7z*f9d<9TC0gUGv+lw*;>Wj^*oJ zS-}6iZaJTEN?bs@sjp3LNKY+9J=@akGu=?X)}EAJ$dC9wnJ2AUw^edpJh{WEbO{fi zy564nm8raMA}%lYNLP!(lGj+C&RNgps{W(79m1V9y?sJJV*h3mYg97{m5i{uULdha z8oSA&LpIbPUm@6iXcM%4WyQYQ=k<%kyeFib&V=e8CC`dC?sPCthn*F6MYq2UJ4?{B z?<1K1K#_~S@VwF`qPIrhFL0|yrYqm~*NCLB4|%4sCtp9jwN|V&fi}0TEN}^$eu>2y zppL3pnX1m%tmdFqUPv&gJ?Fr%U1_wkA4yeb#u?y0nD@Y#K0j;hoLeAO`7^3(%0%M? zd;PK{*;CWiLxUFI=u2HF=cObA>~Ec4R}yD)DT!k;8Hs(G7??#GXIm?)KYCgMm+mt+7tJ&}F7rju#318tFR(LMvgV&xbxsgCs zCy1(8dTjQvexEy5+6T1heQy$#(j``Ph5DcAW-ph=kxMJ>;`GnBX+ zMYoFu_l~}LE?=Bs@$^`6+tUt38yPmQieCmr%WS?0{wcVU z4UA5`1149FubaCV8;Sd}b7+_^uHK!{@U%b16A%2hXW%1=rBlzC(q+?g5GQG8h=|!J zWEU5^h8M>j!@g0{;MZQUMvcO08-Mih zrw}pWOg9a;RGTe(1J}*5VyE1evqKA)-djq)Zr{gUWZ)SO5wmSEJmyNFm$7>(_L7p5 zRqefls>_y>Ro4EhdLY$#+zimsNtAY78qnIF8{-C5I9iFCgIN)~wm}y=Uqcup{;+$s ze5(9wYqONr%hH?Ww{q38lTQ{cJBMGAD(3Au$T%qYc1rNd^&=-k92~Jm0plTxuV0ql z#a${sxjnz6bNGAoJgS*~(zRS%tnn^xdyCJq?I$x?rtxO=wI)Wzfd;Q$)Q=m9L(`4y zVvQcCO8F{7=vvLa9SQ~2YjI|$_^bseT;_`|idj>-aEj(uP8Iq-dcVB}4O5NWdW{c1 zdRx+UY(|%1Q+;A97uT9UfOwWJM&6}oT4!V6aP}vivL%P|0mMD4eoR4=(9cn!&(?7kvP<(Uy+=QavSVif^Nn@q0#mmO`i6-eMzR9@` zb%anUvxwigq!+QQvfrm~N0+BtG?$_BblD#&!h8E14pEWBbAF;E`*^sYR51RApx0`dnU5HIMh9kJjoKl%<&6UtRxZYt%s?JoNe*hbk#& z6t)|diE6*d?k_(h-0{M0KA5JWn{iUOznq+aU3gacf;U~4G_q&_-zgrtou`#lGF}gZ}0pf;ORwR&%LTt z^$6X}eoXF8xpPw1qT}cw6zO8EGpnkaq(4>)+QLIPwXv$UOyXrG+ybPk*A9%@J8pe8 zr&TT`imkI9yEF``DMV$n^^G7LNPR`WA0-J57E_2wi>+`mZCJ1)V6HJKaNL=>oPG8p zQEqdkR{jkqQ?*vm4qh1b)RE1lUB_OpfmGmFwXKlm!0-h47xHII&tft*{^N%1{D zPPIB&UbIfAPxXpPOj1O)*Dk#>BhmGD&lPbm5+U{9Abl5rXka6CtM0!aAUqX896rr? zzK4%G750~sZW!Pk@K!9BP;GL~Hpn-h*de*?CZ0{i1H+J5gyK^b>VC4$e)ooILJ{#u z!-rwI?Oy&%oN@++Vvpw{=+Z<^AE(&8ndLH32%wU|4gaC?cCi!&0a0m23U|{khrKgt zdM4{u0et{pwnOT<1*&#Wi-_3$qF(kN52VtYKXvRQpem!}^f6axq5ooXXLSv(7UClO z;37TBcaoh}=33YJd_M$>lHHAX%3s4cA!$AMxe|PE|K-8-!jG>#w;H5lC1Z{xK-Gjs{}R2j)RXH^0}0fn zXHT%hA>PoJ;fm^0gdAR?baZsAApd(K=?M6ThsAoMR=C-e;4wc>QIM1^T&U%-KoA^}0%WprnJRCF>%u2XI#?i;2_xmYd*XU|%;r-1f z$Z#MUWea0f-`-WrYwPN^e7nNY0h-Fpp(To64z@@0SjrVwq(^dz_-Lk&A4X;VWAE2B|Ph3pj;@HZqw?Iikl6+noPL-C3lQE5J`JZ?5+q4nlmx;dKu!;#oz{~948Nr3o zv;e{0>xohYweB79n?|q-o7M2zy_IoYYKEjN7UOwqMh*GR+jY+!fB7xS2!UwI12|np9s$yTI&cJb_6=Lj#x!FW)*O@p{7=v&QeKF7I_n z$0?><1BQwpA1HJ6C6`DY;TZY+!?WL`0A+-*J|!iK2ntRIpL&^^Zn|Aj1V_8}3hQyB zE7rn-f@z>+i6jsU3!g0i zbA35%ZOsu8d?PR^D1MpSM!I6c0!##Ammh@Q1ED&E`v&rP2we&^Yv*^kFG7lP-6W9_ z3yU&dRpr8Mq-vYP_dpB?H+Vr!Y}Dr%p_2%W0D1Ox6fR{xkPATOzX7rwQcL+?i;dhM zWwi@LJNztcZ`?9Zwgo0Hj5DI?QI<{NLJxAJ=vhic; zX1|2~!v4vh*Z1FKzBS;J?I_7kwa zowplnhm=e+oTX_TA06&OR$m2h7c3+Dfapp_NE9HIxDNSBB-PEUkxXW)y(te;a|l5U zyo-I8{B}O%Y&&HZ&j3KVW<$$oJ-l}FUZ zZOec1BBVzMfe%RDH9_KatNg;XI^nA_e(-+Zo7`4aBV8Al*L`*I51dgOc1I6PTo%RZ zcWfr|M@Mx|KkT=)KI_`d88oxO6vY16a(e!g)xn4|lF)Nn{?d;V*GLb}f@=&tEeFXo ztVGu#tBsZM6a}1L<5CN(sP3ApjW2=63=)!VQ4heay_9%qi-8 z04xAVnhs&fLGUA-7oUlO4D_;-kYQykB4VGFC4hwx>Hu~CYX@|WOApz+K)aC_>&urf z$Ot1@IRxr3G&CgVt0}$tG#&RUL`2?5L^NcQN4dZG3?|4Msh@A8C>`ib0N~h!#=Tj0z{YX>K+8RhQ6fwOAbkDCpI*FpvFx#g}Rj9Ydsg+ zVM}ZMNq(L9_`Fi5`*v)HGp{v@eQO-1!NCHkN;)eB#f#x|X>hDrUgE?r7F5-uz+j|aXc z39v$7?8mEK4HQ}J&GUJqZ&&pO%xbN_hMj8D9EmjNG5sp?=2&XCp>?vRv~s%j-Nln$ z{CK?BE4)eB)lAVw6*B1z!~0ZG1T3k{O5)zZD)liel(fGg%dOgBc%qkWD(`)ZiInJ671O;eSr-8EF8fx1A3y$sN&fQ_Ae zcih@~4M8>`XngZI;Q{^LRP?J*LJI0EOr$ac4aft$6y4XJuPG*}}CgQMB zwAH_+8vgQB@fm~R>?4=yrtta6Adaz>`7jQ}>Th?g@;XUR3&+zZlq%>brz`pwZOtWv zGP*b-cRc2Md`K`4iSc%15$=9_5#c^MEhJ=yI62IaXN;;VYrh~UsLJ(D6Oa@I1dFKm zo-^WEDaXJvdF|3Ad{7U54^D`{!(dh`uH70zQl|)0Wh0B-*;b6SHKdCZtG)L%wY3`$ zcGq?P@KTwg{IJ3D!+!mGIOer}0|7*UcW=#^T>YN&cT!M3+#b0a8Kun`;EV55{FPC{ zyxkZQ`1^7zpmE#^giQ%Do12W&zANkXo)gV4zKxTKnl=4yoqYZEr3q(14I#76_pR@+ zW^^DVE3hUpikmhcsmD0|jT}^)2HrfF@XNe>Et2~uY64lr)qV@Qx=R{|Mj+@N(6L?m z5wJerH4p4aHotoGl^PUoWPM(YbH)PS$_R(8l4b~%Ne+SSsKWsO1!khO)UA5Xxw;`x zIwXCYm6a7QbC|?v(oxMLWDR_a5`gNN0|cU~OsoH|tiNvw0eGZdi%qy9GO#(8d4q06BK z=L1A(+=& za^_Q!m7U(6FJkK~Rf`D{MotyW#ls|3rG$YMbx7b$D5`_>P7akalf8sJTemI8`yEC` z%Im>meRJaa)d5tUxVE^DErKWrP74YSBglyxWj=vaU;+s`G{q1dR zO*F}DOk{t)JEUE9kAgq}XAE}?`-m`>*5vcmQ}El&lXoXxbMp&Ubhw&tskH_Pqq5R3 zBCDZ+bs?u}WRF*M!v8D{4n>@9{A)gh&WTLNjRhM-{)_u3mN~>g+?l)gUj65qA~A@E zxmB-mV0H-|^WlFd8|2BDD=CbTSC5R>82-oULdAZPK_fUh13Hwf079Y@6BFYbySNMC z=jy4DkPtP;bK|hmGyp*u4hr^PR{_cAc+SOXS7YMW-}WOW-SZ@niXLZHb$&pfO~%<6 zs1;ApvDqh3Q($ZJ{E5{aQHQyAq04%<{o>OvE`?Fy0M5^FAkWukx`a7x`!D75g;E@^qnyEV9IZ3XH z-HiG3S|NfkjGEOOxUG>CU_9IzNr-7giSS|D{Pzn=91cEcte41t4I|=TkL5m>g8y$j z*>$Au=EwA_=8!I8IJ;{!`S1n)9LL|zE5N*h8E3vU@@?qr0wvN2r3jg_HP0jcQyk@)Gzn|0Nm8|+VFov@gRn7IdfBQ+4h!LR-FUG?D z86SF_gx3_ej9*^+*Hx`C9!f6At^aw`07jGVOmMfyLimqiH2qHCx~K*r3v+qt6Y#9r zHcq8%OzTyxED%?l4M99TGTq!5^M7sLs4J>Lr$u#m|8A83xMOAVe{4cR@L#>oZ`6q^ z^Jm}sPfN9N&LKCE|7-t$x^-3r)tG+qL~QooP9PR*OqaL{?x9DraZN@Ao1fqpW{A_B zG5*pT^U{<=51AF#kh3S%)|fWGr?3BG6mHnyVYiHh|J#iolK*O)YR7!szf1z$fK=-A zf5t|WydG(l@P902jWwSWF@cJ|-v%%qHk3mf5;BzX;McGI=b(R_%ZfbUKb_ik2W9bJ zd)>z7K%DD8^IDXM>o*%~lfV9jtWB!Brmw@EVdl;BL?>k0XpIrUTK?~?;G!Ixe>tUQ zwH$tqI`m*BzU>W}0O+yrO_(10!0?*lrjj}K^q+p+z^r7gAJ|cH;ItQLwiH%*#8U#{ z_fcB8m_gCBp<6XV-Ag5n8^wh~Xx;7F$Nk<6u{f0p@(S2e?6J33;_Yz5aY+lCd|VExz4RVIy?m`b?FoE+eMKGJoME=s?)IXOJRQzsG{JQEQKVEo>mQX~ToO)>0jf@y*dixq= z6&&vQWo~_{8IXfl6uaGLfs5fddB7F#OPxaKMQljK$hi9b%rUz$LkkztGKE6gSs1ez zyYbnU2`V40VqG0J+8i*xs^xWwcGzLUyu?3>?2_n>sAcGh=xf9!uD z2>R;7d7tP#TZ`Mdme}-A8tbv_>q}y5HK?)cgzFdaQ~IIxrx@w!>3cNx&N5A%gOHb! zH4-oJU~a3Zs9bXR>pSIJp>;W0Iic&JN~qu*E%24fC8PIm8P9?j<4T=~j`r`OnO80ej}d6kx3I*?7tT{MZNiXX}L*FX3OyJAI2103XF$MuZ6J z2z*8z3;$;xT{7WtxtC;E1jer+{Uju5{RGu=>a{B*4!LR)kMeiLNp?q7=>B$2uB z--)CMXL11@4*s*K__fTKe+{Uz`Th70d3yMm_wkF})S#L=ew*-{Vu!hZ(MOPMBI5tE zzJq+G6jpBr8g#afzy*Isf87&(;3Wp&YH7_&qGf{>_6w>$_L+-#t=@2>?k*`TXB$ zj{ZZi13ogZ7&!{S0{SB5KbxCnJztGyz~INfxhh2v{F{3&|K*-i#D9rB_U{R2ljl%Z zbN{<&YGVdG4YdCItj$!}+k}T!qW@>q|4?g|mF}z3e&l`YLy_4iTs-`8^529b4^ICAvh#9FY9+z9uBAz zkh{bHxhV)7rkG7jjV7zra5}}v?&(H+)eB)!>z|at75u!S42at!0>j+ScnVhGatmEb zvrayx|Af(0@1PD=9(-cYr&dlH#0_YoO7ZE^;w8@>Gz-!9__RVfT+BWCCX%n>MSc-5 zH@lcYU?Ac+hp6$&+mn*YOjJP(znc-MN@K?KxAZ9Dg*=a6^k!%C3rxt|Ke`0@^SPGl z=Q&1UY+!8GZqV5MN9=0VNhryG9{R0tMK3c2zZJ;h%1id{UCN*#AvIz?2-=)PWdVgF zlqI^X>SW4z8!xKy=YI=~s^+DvL5j-y3FNEAd8Y5h+kThaF(>kioM0iBntq#)9$u&v zk&I|(SxE*=ISq?J9iYTfZ5 z5Nztw6b^Oa4R57lC5tgxfQI{ew-BluBdh!ayAo=u>vfa^bBjo=A@3q;C1_+s2OZI^ zpB4KoYn1lM=V_TFZJ5x&ukzR-`aE^_*gdvL;+s~%@c^O-9{p{S>V zZp{k_crSXIWU@jW#dTf4ssZNKy?$VUvKP$EnnI-8L%)Z3pgyCtP)<{}Q-rwjEwu(O zfv>nt)hCP|krY8(0>pc=I4OgpY`c$WH{u5ZlEKpm_=Vfc8P_B8=43GqVI4=^L=Ftc z6XS&Y^!sP_h1%9GCR=M|gzAM@U$=a7{u7fiX@KVX5&Q|v&6@uN*gpw5jI4R1*TP`F zhEb*&>JbIhozGI9u#k9ZaNL*VdDun4!+@qVhe2}(yC2PL?&3EHg@-)k`F1`_YL2gk zo}7Vl7c4FDSv6H=-3s9@erZm*T$8vrbS|Yf@i>d;azQ}+^aT0H_IHYu#BxgrjMdCN zR7gpPR^riJF2B6Kf}9*4Y5(ncr&gmd?x1?p2G4x?&5yh#<73ug=ZjZd1t% zORB6~`wuNj#4Y4*8v*6>V53sFxyV=hvz9!Q!lC(gFPbvMA+#xUSC%b@^@azJUy@l4 zZwMUiqRKXwo%U6WB+GpBo&W*5l>LUsT4mX+9e3%;&~JXS$*#7k|YDAM@Vj4wSGAKJmV@0mET_ zmLf5Y?dX`dpRa!+*(Vp1=xo-9m?WH6y?@5pKof0(N`&reSP>aG^zwaU+;4U7vL3D_ zw;+r8rapdo>YJBzf9d&k+O{lh&1-CR7oq}3(3B7j1NM}0gxf*~Um=84eY z=OVi^SNV%Ew3hwDNt)Gx=Mc4xFR!spO7B`|AVecNmm)$owUK;2Lv89A1>^pYFm9($ z-u>TU1Bwd2j<-zdNG1aJ%%SL%IFHHTUq_P-o4rCCfvvsG<>pP-T)v7m`mS00v~YBE zWVEuWM@Z=vzG``x*0YvB)KmJyMsHPc|~`1>adu1@fz^iZ^s|UABtu#BJ!D8H&?QL@$L}#Uo-2O@;nY>x6o}WzdNK zFGa|a>Ep~T-Hio{0kO95?4(;ct#PaHaQW;g2IC?X5G zs(9zV0tW?JYseuntLjYiE%%!nVpCV1@OAZ2Qb0TSIc}{tT!J&tFCdoI5J&87!eauu zA2RHq4ZpHk=;^VBD$RF{lSO}vdt!6sHhevi;E1o2CEh={iRVI6!LMqjjbO|s{IP65 zJVmA6(j*OcNGy`@ZE&Rx7xF8aNj@*_Yf(t@Sq_1(zE@@4Zb!T?*BZjL5@|wvo2``0DlARa5x7;_3d3;1RdNBt}liKA>1} zzblqI>zWVHa6wqZ7DisL^9aRNzUYv-dUVPwHg0e-Zpt5!;YO!K&Y8SDp5kP)rX8`O zDwZH3yP7c@(7yj%&<0jRo<&@cuzeIabv8}EsxEJSZ;Q!elAuiQgOnO$*5(P`&VgM= zZwv}H0=F04VT)-nc}at5h=%U+8#s_i@};c2YZN6;GqHTac%u$l3|r;?0TEGCEOAhD zuhozlkxGTFCY;Nwdt&A2oU=y}k=|eY0+y>Glkr8?$O-!BEZRbS7=wQQ!C1GIJA?xP z6Rm2K#ie7{z8+3MM|M`U5i(W1n>|mS5S2IYK8R5|oR5-g+5P5hQe|_yMqD#p>SrcA z=#XtPV5|SN#}{+o^O|Y;=4FRXlP58FTktb}%8kxGH?#|;;Esz0oPTOhk9{qR|>{?SY#0e4}~O742ljkKeex;xD-g&96+XUviUY}cpS*uB_OWITANScKn7 z71;MBB~k`t1!p=XLY9#ON`hleUJEw?|Mr2$txX$1$ij4MW7))c?BTjA5;_I&ZV_JN zLvz!j2)~6O?S5a3i1z2qMTb)R6}{fH+n9y{-FJmYTbE>UvpMz+x&6XBbQ(f;u&d^szxT+Y0TS9j|Fz2Y zn}g4UA1;bApv17Oc(B%I<$;CY&%`vo)C21JJp{~Naz)`raaI)#iL!K0Yb#6P0`E{( z)#0vY+Afc7YpdOYR@W-4h2-b^P>G1}a25417Z8R@&=x_-Z_I^}4kvpR#;`c}A&N(G zt{3y67NC6ghre`+A|ya^8sC+p&xY7l7JvSuWm9#dUi_T^K+WMN*O zU5N*KuNRq_c`QfyCWM8>TQ87!@epD-sT(Bq^clldn=%qLt3Nri5)4?nP2bV_9hEdg5O5Bb%o%w=hyF zmgT|RyRlc=9yKSfMuio(9A5ce$J5*rcytXmhrY71*1X5n%>{Sq6;Bd1Pt%!H^xuA~ zJGC@i#5h!_Juth`6sqhX@oG5CD_uUu7ju$t0l`Q4j5OZgTJik4iD`JG7TE5nJ@sxe zQxa(`b5xe?$E$f14K-Z&)rl@8sBee~97_?mEq1A{^O(8g*0@l>^aBeC*k6CWB0U)Z zF|Bne8lFSUES6N1`y9CCJf%~rS08)tx3$0CK?m_Wwjh9vUCnK~^kt5qh_+u=a)=h~ zA`e+gXnqX>`C8XM6uGtKp0>LI_0cgVDX|Le2sO!@e6Oq?o8Vv3L63@r`aDbBfgo)| zjMR|trJ}>ss?0n`OHGKi6goa--@-@6WfRv6V&qrrUu)o9e&7o_ zZp>>zy%c$0(W|Y;*Sa}j)B_4z_qqbJ{1=Np%or@ywH}UC7{7a{^9?8E@)c!ZWG>l> zo*>K|cznHw9cL!kwianeo`U5@3$IWcLdH7Kr`O#-bzk*N%nc9!SX*%MRHzP5NjEwI z9B~t0jWppZVYxJNk3#E`t7heJ%|(`70(VT=HKb_>hu*l7!h5H&Jt7GFZ2g6Ui9EH0 z6bVON*QWBs0?l;Kt$u0PsELC?gS7Lg@SPY=lcg5;&SIyDLq;bct8vkZ@~;EBz{73p z*^hDC3qxU;40)t=2U*LnQ}_hfDYQSW6AaT!bwl#|q^2h>I8+?9tG3cgcqbK0g}Q0Q z`-%2zf|cxH=1yuJe(5)VCuWZK+dFt;$R_yrBLk~k{mx@I`=C?ZOe+goSt7;O$Fce+_@#C3^Ih(r-+d?TM~V&JIe&>cJvoB)3KqJ5yckAMY1b2f z?x&uy@kicRg?2w&MmKn{f4E4`q{hkM+rCA!f7KTYco~qk!2?vJW4mr3H{_&2RBh`x ziOKb+E#I1WvRf&Q;9>b8&2f>Utj{gUsvd*kXh$2p^Dp8=YZa6ZnhT?SG0hxYN#bNO z306IUjjg#ZL=(I+W^>$_hG3(FFuc#QNzF9l2PT<;58_O;O)N(wLP6=$7xD-J6Usr0 zq_-znOsaV-1!us%*nRD>-&;Byr)AIq-(=8{i1I1haNUDimmZ+!AKjW(?tmzk5JP;5_`b}?iY|RM zwdW`QhV({U5Od|3{ZZNERc>xzZO%#d<7=UDu1{d)DOLqzQa$Jxl7cXS@PbG|0yj0- zQNB~A{JF>C!a+=D(X^#@U@>OFCp&^!%9|gT-5g~=X8wZqy!zJM0>2sA^M<~wt?xn7 zS8$NR-n7;t4{mswXW|P!GtX1EVLu?%F3#`Be-}zm_8HgnQ@>k5iTg{ZxgYeG+PAmy zbm%G^(TX9{TDXaoB#|W`@2v7QF)^9klzxem^OMj)`-imyki9K zC?hS#H4^BA4E0+zr@=0}K_=&^GfrGD&69hPjv=`l&&fez1nZje@17>ODAi@>!Q1>aV^6|Q5g$c62s^bOCJExHd5JG(_ z)aE9mIrjmS0}NMwuwpk)_9nNwI39_?cU=rijoTuag^ZCbu@)T_NLLhqWzXR@h{d>UpwYj_hDr?4D zJ|Mu|{a-a`yL4OVuWLwwMQelyRH_^8)4OBL!(*aP{hk>=L&*QCf!di4)6JXH&3F-# z5%n)xmpY|l*ZN%^0Oj~7mHq##fxB=V5|iU6`zW*BRamN`BXp^KTsjS_0vVGP z#87Re(YcUC^t;rgYC@1of{mhL$Y0{f#2-gTZRqlQ2^|>dZc1ty1?;OGbRfl~x78&b z%MRTYZ;Njff$ly}&B$WfIwwZG-mXa4SCIfYaZ$jqEb%iIkP&{i^j z0%S-@i1&4esS8g|mV2db*GLg(6sV5b*F&=i9f*kgUBY4Im$H|B5mADGU<;*uhEk`M zAdP^V(1AdkfFlGM(u7{t!;K43oGjlE8=EzlqMFjRx@#pYHiCX3kAu4YRNN(;xU?U+ z(t%38?mI$jLapM$|>PMr0Hg7)!z>h7`p#ICp#!1a(MxE8UwG zmWF$&z?;<2*Awpt4!@MRV8n3js|gIsrK_nhQBVWE)QxswxUo^33v<&LR2-1Sg;~}S zL}bA7)x?vD>xjGMahVzquaZ%QSjywLv>yhiTHV@O3n9cb7+Ax7pAb#7B4FJDA6m(m ziH~X6R@#+Q&@Ke)O6%D$H}{*zJXZNIxBEB8T;5!*jD@WtpY2+sI8cvqtz zCYhER+YoUk@f`xi3>a0%ZZHuq0(Kb2PT%vP<}E6DegNh7M``1QfUz5VEWwxZ*-*{T zTJYFk&&Fc_otBE-MQK5D$FIo0R!mWQ8E#0(UWhFtH({+n3ZJU(`>b)Y@dp;;RJKVk0#}n>-IBJF z5tFT|XYCrec=;NaEtEwni|f?ib#M~e2Koa!~l&YJbX)(2-n3GigAS2_LWn@gH53Q?Ly z?o9MWT7qI%@oh4TzdKQBZ32U;&-(5RkclBJNXQ+`Zn%eh_+kB3#_D2Q5Ulg(K$^*< zziL%ks-(6VCCB2q)5BYm14)zcHd$Xi{-?6I34)0;$>?2y$7_Z3Ov(d25(`YS@8=L2 ze(i4Y%p{O)EnkdlY3E}eo`u&06>k!}7|+w0vHaDm&0!DViGBrh3o?Fom@?%a>3Kf1 zf-w@FZM%3;gjdFRy70xDeIKU#DzBX7AQVaaG1rjiPCA}b1>AH0w&rvtm`hSTeM(|t z23_h%wo$>jjP$+v;-rGyhJ9CrXYmA*(ae=`lkxl<`AZL-DSE~QMOP+$JUz=4kxICfW&u=`}f~>pkve` zTpa*!$$ej&vYq3jG8DOy8Bj_TK zC)7AY3*VQ%5w{-czSg+;6&ccrX(&<)T&CqDdB2P>eeJbo{3aT76F&)gr8TbTpJc8(SWiNLqh5@VD{Gc=&WQug-zK_C6Z`_ z2=K?)Lyul$VJ8uwDA*-SGEb|3n7%Z9N^+zKs)g6PZKgz~L~v$~x-L{xDpq1`6is~; zEz(zIa7p}~wU=a=@`OGyrTj#srysN9!z_GNEe90WR79&#tlpw{e+sU#b1Q9lxWVtM zn&wZKhNpyz9Y?_}DV4m7Y#Nn?h(7~_55L;|jjO=R6+QOFpEUOOcORwh{m!d@e-r1L z@~5Z%d(<&8(8JHWA&xwuL()eP#Ca~L@HIKoLqGC@gHBVH%4?*tICA#~o2IS!QBx{SWa>$4 z3ic;dYIw^fK2?&!R<6rt*L{3Br5?*)TIAvLx#B7$=>Q zT@`$q-!h;aT63LV$vLFv2U`$&0qq1>R*Odv$aon?=Tm2sonVzVThe39iBN9R1F z6nj)D%V`^lgJd(coH+_7o`lCJC(Gfcp>;&gfmtt6Hg71DwnFVQXI9;#n)<9#*C3?E zt8FHay$CTyGqIqs3@+8&!rufEgFt5NaWYuhI-bRVOMB>2IH!-G$Lh{o*l#-0W0UZ5 zEy3ggyGJIak`X=}%eK9ts1+$k_m^5@(>JoL@U+_jHCER8Pc^L~lSN`n%y% zeD(;!JrQ8B<6h*XJ1Ee3y_AbPw1FNG9ubn#=dTm5*Tc$%b2i9RJxIl_CW!C6r|F`bS@{QVC_ASwu%FwHd-q_z>;E;jl*t{Lc_YzL5z{uXsAyJ z4qF0cp|WiR(jV-BOt1l}W#bc@y28A*OdOKpz@2K61ym|BHG@N%1BmMkv{ny|B(>&x zl!67C?-rA4&MqxKxV4-G9lgSt8;!#%Pebo^qD6tu2KT$P);mDj#aqOXZa}9b-F(!? zmrIS&UFld1_#cZ-8=ZnJo!?qMG7Hc?cMcLs_~mZK-FX*C6Ms&X>A@%IoT|U*@&eGs zP6xeAq|kVvr2QdVLok3$=FRzad(IcHW%i0wX-JhweMo8vI6^Z*w5P>NnJmb630wGO z%%#Xm3H%9>)9&tq?`gKlk{E?I#%cG-*rpKhAv7(K5xx-bf{cG*4kz@OI8l@JR|gYTmAy+3jukjK}^V`2k6 zQH)i7TffIR>0rj++58C_uo<*#L2O8%U<-wh%%lXO>x;O$e}@_XZwIn*y8+5AKXDKW z#>-Gg!gqsS{Ag)QL-1cR9in{v8QnPAZG~xIZ&{-)imm!BmMWX6z*}JTrkyJ6xD056dxx_a=QibOPDp~yiU;iA4Luy&cwffJkNE4$L}qy`XLgmml<&N zmkY6~1&4%;{lb}jH`J|PtbO{8?g7Owx!wiK36*oHj{>sDoi{^LC3$5;>h#=nzZLhR zoG}fWvWvlG2k1UAAK!r#8YU=&5F$iC#(>b}d~P#EgB$-A-c?b?8$uq6^pv^7JupKw zwappx8(7B^zX#&Kp3G*&84Ihmdr$gZ?oN5XG15YQYxM13p5kOaP!IJ^C6U9;#hpxB z2u(>oA+mg}B#q3*G>p*Wbo3n3uspc&elUOP!M%Q+$v=)b`UNmCb}wP8W!EO{^~b5q zHMctzLoTB9pe%hiCNmJ-^r<9i*j4d?YZ)uaMO7-6Bp->2bV6i+PyqaP%N-OlTLrL8BX6@l0F?KBd&C{KIbhO+{xocCvUP=gMq|$6D z!1+4XdA1HNbIiCAyG6)_K3F7DNG-#tBj7c|zDIT?cz7BRw=Q*3rMP85abpf|29r-w zQ`f^?ggH)!8>056oMSyqSh~hpW~Z+wMEPabnIG-0ILn)Q-ml#RA&|@}_6WO(M{fc^ zNYx-0Al}etKTcAG^WHorpJ*TVpm$*yk&0W&8SkfqJeZQs8K}M zEa#GBd9!!z?nYs+TZ?pm<2MJ@;1eyGA0%>K^Y<%ex@I;+n^tN~lkd&!VI8vA!T9>M zL-RlhX`}jlewQ3UbMhsg32L0XTT#F<^7fGt21AhFPHjM-6Kq>!)5{1=YjP z0mE-~n3$PwXQ(rcre$pmfPy;y$^(61)g)k~AEd7NM9al;%23v~CJn4UfC622sY}@i z5b4Gi^dn>w^t2V3C--u-@>>#bc0m;Wa-lRJ=B)mJ-i?GOJ%a4_X4pcFhNl~3MYj}3 z4X5jKS!`#Yt0nMzfFknUj5~o#vriPy{dqHw_BZbj>|-YHWT?=7cY+oU&xXoyF0-d* z#(zWmQNO)y;Wq>DX*kdhjh2f(+%8&k27t{;9AUj#BAPp7?wsci#NO477$qnFRVAxT+6n3|6% z&4{6;SIPYCdGG#9syZE9ht+0{8Li?|cf2to{TG5>u^SQO0$IQvD45o5*9Kx_yJF6d z1ulQB(kYDBVzlz#uYn+231$$mbmwn6KoxX6{t_|FI~Ai#@KFxDpx^Ue`Bqb(6kALB z!j7#;Z0_;pj<1-OIHM)KCeS5k@uro9qOd5D8vm~@DLAYUR#WYdm~MQg2EvZ*l*W)- zM9Ib78~0x-Yog&+I?e!9bvym}UjxCXGv=^<$)_F3si!m7g}4ui^y*mV5l2rhNIgOX zpB}({mquMN;|(x!dxlp39VgJ+s5L80qyo5&M;R~M zA)KDQ^Qu|ByQ#=JGl6-?fn-2=0xKftNNZOQbmqY2sDS5x{5lHM?#y#B`Gh8ON2XcL ztcUHs2a-=8nR?I0-Ss?NC^UM{1;B}*4~+e0TZ7%q21--&_&11LMTG%?edGD^#fZBn zba03SpbHii3!cqGEuWdJ zZ$kSvUpuqM`L4%Lx7vVFKx-D@CCeY1>+8QR$)1zxcKn~20PyS*ycYH;whWQu3>_mL zBkm`}gC_2qnH`%e&Ke1n7*%K~T=XV~ERhNOU=j=9{ARU?1?rZ$$JB3cMKGgFnLlxT zrF~OcD$FwCV5YA>>;ljN?B}7?k2j_xD(Doq?}Ltl`?p%xJ^;f?RfJ1{_PoRQMytNY z>|0^gxJ)=vWzdO#X3(J{87=3>`Omov-)e*y`R`dR4i|YXjYhXUB?oVC%lRy;0!MIJ zNXWJ)o)35e`S<(NkxZPLCQ+cE|9)2_H{|lFIN@4Z*o?EOPvEi8o(RS!2~_* z+N8xy0FrUuoB$AnhpUL88ytT&;Qfj_YV1f5{J9S(?&&k_0fglA z(%_&j06_7c?ozJavzFnr}ewg*&8hp0LMq^9?8eMf5#GJAN6MfNCfx!MCgUwHi&?rj z=|=Y6{2{@?9pF-hJuv+|-X3&T6^Cd(o@TvwH9lN{5WlZze|VRWeM^aJ+|@PZ84yMb zuQY>bI^7|QhW6s=@m7{$FMd#be=0XdE&?D3hKlqAD5vRq`d9Ms5`-=$x>mce$;WwU-=>24@9!oUi-U`xmxET0*atp6n3azy@7Rz20nsYT z%X=oMSCIGKcOgF+4`=}Bqe!QthuCU+QQfgLV2^H#SN`@8s!E_Mb4f$pnniSlx`nI= z#N^cHB;HQ%04NpcqG^sE#&(=a%J9`R<2=~K_?;;v7(kadx3siW{pbey`48uP$8|RR zKj+-WclRZoM?clNnqriWmLuRV;kzTb_AM1y_+K&uj-RORZf`1xl52q^^4`wMSn|RU zuvQ-UjGFDf4oVS#Wrdjc zc?P?qmO^j+IV1y0L#74zv5&2kuBv3H+_Hgopz9}qks{@syZ|2}zXe2I5rml8w@Wz~L`pCDwfB%_{~eo?!yR-g zBy4bSFanN8e*+`I-n#d}#1A7IFiHOA&6^O=wpN%4^6ZqACT8CIZD&;$LB$FLY3`r= zm#k^Jr#mAXc1BHwnlaVd88e5}wx$PNm#03vP%AuMw>n)9Qx*%@cUKrFdAJvtWn|&^ zyn{}e^9-dE6{~1zy|VxI!^54W?w`q)T43?UHBQVcV|5Nd(`NINEo^WZzU9}FU@_7Y zkDo@0HiiSR@w>t1pMA-C_wN&+G^M|*I64Zpo~%4_{3h}BntR(5(&K5?)~S+;7MtV! z4Mf0Z5A%WOgLmPKS~8(@%ExEVBDx`Mm0T^#PWvV!_R3>R(sn|alCgo z_ga57=Ts(r+)~&D>hx~F!hazjH1q4#;Xr`(SoSWY2ucGIPCTBW!PBbRzE8I+1Avi$ znJ?2djpb5&yxM@<-yYIt7q?N#hktMMw%wfV!5bscZGR_Q2yq;|q$T^4DMogVjlh3* zS#2Ow5eoz<+02t-4?szxkI)6WDWQK3bo>)1v}^=&p?wNxx?>&CDO2Mwfjtt3qS;PQ z_gaUL4%!5w^;1Lu_DY8W-R&-sy7Bf9LgFhs0A;|E8L+8VUOye7uAvr2&E9VMsM%mc zZVbLo$hTkmccM6Ij{@j9aqISH5z`iGY82qa0Xaba5L;yhf|F`9vD!z+Q*BQH7=;;c zlblCOi!PI~Ff(re0&M_Y!=dmk0&#x z-BlC=Pqzr9eU`tfuQ`s_dl+~|ch4|ef|#&O_ZWzuIk3@nhd}^=xCU_RtN42YgqRVy zLd|qT!See0`soRP$(y01q~x3efD#?Y@#j>mhO>!?App^`NM6$jG;em^P#hB^Yb}k< zqWkN##UJc-FK($Yx=1BY3juqSc;L2X7V|k@gH_IZ@xwdEq56ZlbUy&D$20J}oR<~Q zMrL>&h-#xOPdAg70rq7aV2+pv_Li{;rfv;<$%6c2HE0=ugzJzo#X0QzMp~JNpWZ}N zWWW>-AC8EeFwm8&?k2Y$^Zm4VmWdO08<#mfSqnx2VZ-An00!N-(u(j_7;RZNAeQ;J z7I1Lpfw;4%-_>St$OUXjA*eg%{LpSgbR==vU+1%cEiU|1rXhda)!ZPu`Q2+s6QB1b ze#3iMfEF^@I0ONcZSQNr>y_Kp;0On&r)uR0wnrcf4dAfALurT(2}^h5i!MGdlbTWjg^(JfXl18Gf*fOl?VO-i>a92*&0yR z9;+9`x@_xjzuDI?hl6mxP&+qbB&mWs7A@#c;g)at}(v>uKMzR{E9+2K3 zEH=~8(Me3%OojeraA^3cEBJmql4uxValcsT0WDuHS)dMWAuHKv?`X?cCmP+`-2{1Q^9V zGylC+JeW-!f)9>?VVa+4hIa*uTD(sIXLiygoyk!4$>v?f1|{L$GiHH1BS2&e${ii@ zfV1V0_g;MGzZ8e93pm)60^;;NX6kzMbL*`ysAx>XgY(U1)8i$tJP3{d_`<>8nSeU= z=pFHO;7P%utgPA!`IGITgQ2WblIy^xu`Bv}bv6S)_y)i}ju<&n*^15ptiHG?ab{Ux z2=L}noU-v?egh_{FdB}oO6!g*HZ3Q$&=NHb4UGnXYO4nU7~xkyz=Lk(Q$muX#lZD8 za(v`2>gX_=m!Nee0B9Oj9am}~fW&=?(zx2}#a7uV`-PVy5L8c>qfFHU3wiLsGEm7s zk58}^&u4V&poVr7*TJCOKzrst^S*7uXP?`v-_wB!xaK+gQ60W|vJo5nLDtB!sAeN ze>@;-v@ii&ozv!S9ee(|QYv@*Z=K-bas0i7t-vhj95!IWQgm|fh`WB10G3BZm}LfF zOiLN|fHQ=F;9=CkiS+TiUa{Ib2Q*prwOg(L326q1gufqW-UW6NK({m#r|07NG}t5_ zelk1)N4$O{nY!WcY@jqioej3VJDH900^PvDILEboj=Fd6Bytg(*L??OysXTI0gxPj zx%B-`er1+%9I@-au<~nSMa5gO!4s+GdA_71DwRY$5tJ;YRjf?#wVWzv;m?*iHp35v zKdabk4}X=^sY-vyB)MB&6>4*XwCd9hAKb~wMrPl51Kh!v1)6Ffs5}4}SRDt*M_gvZ z4t#>>q|amxV1Zd4z%;?BjE4>Q1OYgR%@WI#2tbai#p06q9=jBfHG(4-3;@U}0wAHj zZBhWqf2EQsUDDZ5wuyFKQ`9JahYNKioA2Avc}`n2xg_DCod5CZ8A;_qfuNcMXFx`+M=%o&Vb=>RQ1xRz@27b`!!t!rHr2; zLqs$#H`y50v$J7epZ82-mPAFV`?h;zdu^GQz+Yo@dnEaoO~DYG8`fo; z!M8`7t5o2+>=SCDZ&|QX>2Y)#<1IB%W4QRYM;o>Z;2e*-Z}#~6vpWlPPUTP z84tDvM+J-#*^Wu!ANfPfTyCLqRUnkZ}Lb!?FAk7OEV-I0dkL*h1jBNb203FNg` z{m>Z}f26?QMTleUHj`&-UB~dJoRU(E zc`@)}uBQY4?9{^}bikvxo1=KyazRT1BIo!bUPYeXgf~5oFKzcrk&GfF^Y)j2p00BI zTyQZ4d8z1$re}Nf^X(U5EdOWKa@bjeq7o zZ9h8|r|z5AaG$v1eq+ec3u#{M*XNXvqJ5*jPje@tf05A?*1~`XhVJ zuy0K-k7gvUD)nCx`9_2Nhu3OTc;TZk2+Za$OgC)g?vKh$vmVo>jQEIhxx+8*9fpA3 z?&d7j`Ijks98UxIIl^N)`-}sO+$uiS3@T5GppMeIp*d3FDQ@5Ux;C;B3vb|bNHq4* z)xvtve|z`}cxmqk=eiz)tb648r23vMg|6m{n8ej*fA1AD81vRC|7c1^goxgeSh%D( zE7|xII)y4&F-WLtDQ+3QpY0Uq3TtPsk#!Z*C=TE5x2u0sYe;uloArjuDFNa^`C*cn ze92+h4GBFiOOQ(4?{h38i2 z_YjQcm$K??R2XWdI8Df&m>#S04CyKRz53a-Y$!KtNf?E`cTPAp;Vw~QGIEuFR&UDC zAj5JYMnbY!j_dNzukQcI*H`&+;{3uRVwmVjguv%k;>iV>BW%7C0FvMlm6`%A3$5sm-L=uH1HI&?7E@)9qB zG9JT;Z*V zP|b2NEH7rj)~L^-Tnt4S;zl6s2Xxo@d9@=xzHu=OvgGqrP5dZ|Ej1J2X>Q+5y?1Ao zF^;C1rxg={FczuylM?a`R~@@w;4CE+TmrnFkf*-ktP4GRQqRYZZ0@V!A0xo4I(*ee zi62|QUsrg94D4qcKE-z5wtFZggfo1}3BJ4~B_tjGu{t~2zS^Y0R7DCCaePI{Q$6vc z7WV^n8b5UUxm!@&#u8E zRUgq~jaBZ1tNywYXMQ`+;9;(J;>U;dCW6~AMtYMLb-T&R6MCLO!R5&d^d`s$c0%+E zhJcutVQ<2PjYO)ShnI@*lo-5RzQnU~izD?)oZ{`gig1@pJRCr3uf%=7op-=&Cu6NA=% z+!s->q*{Y|j+3D&U5D*F$IskDwF_SNbt;_qD&_ zq$Y24e33!m*L|4S#c&Y_zBS?3-BVSB8hoz3&F8TL})K)~aNqq)Aj`ag09X-<)4WBP(@T4Ex$% zTrWh3$-QPL_3CR27p5+L!YtVVy$)D$N92cE1$Aj+X!i9-{gpJYXzU+2zYu9pp~HMl z@uiz#i}vd_dl6@1%ts}JyXHdTb&q{(hrxD2PHL`%@Vt}r&OL*Si4@xpe;eTLqDYC& zld*sP#s7hTsu<+UPsw1W#dotS#@gRYp1WdHQuF_q`s%2tqV`=nq#PPahn7Yqq!b3E zQDNvDN~EMarPBckr9=f}$YGFmI)E_q+G5HGiD7W}Vt+?{~lPJkN_7 znzdU!O@-wAUn9iSW#D?Z`>ILR)_!npRU@OJ5-qbR&Cz^pxq3;_Yz)zSTmIE`xU1ec z=$vvR>3=ts1Qhk+|7XhXE@#WzDeynW?F&8VFFwE7-#`iS=aKO1v?0OiTs4K&wE*GO zBA-1iUi+#e&1o`Y14BKbkyo__LqNW1V6;{)1?6}*F?rb~&A%ZAf4aW}18($xp41Ku zu`<`Kkz^;u{W5_2_2|fEu*j@3Wz*pUIAgHvb24Zx4Yf15%h!MWohk(`n&;0*_1+vQlvAkJqF-{nOdU)ntu1H`NNxwhyV0-yQ zM>8dvYuokOW7WZLl`!G#x%sb%Uh9g_Al6;)9l}+I{|t9;G_YH?&Oc@-#Xl)^50WPM zuS=!*83Y)^aw%b%K{#59KLoT`L7$5dFb{{o_tYbz^-&S z>wi9BZz3WvWuSWky@_^9*^V{Zm;8?_@+qe=gd*gNs@MN~dAm37><9?l0pH}me`A9T zgf7gWzmfv}=Q@F=I>r|6Oa;>F=l=p+fBo%QoANSAB{%WoUt|H!x$?gcXF<<`E1D3R zh3-NBeay@px;tlw+-%gXW-Aow*k9n}4ywymcDaE8XOn7PxpHxpY zqKoOcA3{B*Qyn5`oM#GDraXWb%}kB!0wOfp){h!q`SxWrB&pC}h7lksX7yuHr}MFy zLc=PVopBRv$h}lGXsYHkxw}0 z1i*GY7ksUze<4PkoJ`3~PFcpScAf#>MpLa5@YU^JIC!m0R_=^?ES@^`o!VyYoRpX+ zW_JF*EZzEkjZ0LfJ^%AwF(m#8BcU6p3t``4iTlChJI^XQLJHWH3eJb+ z^EI9_iy7e;_D1ZLY}8E%b8I!|EC?~$rp zKm15-otc2WPhWZ8`oin`z{k}z<>|YrJwkaGX&KU+_?}qDYbYVF|E%lQ@eP96CP_^^ zSyl5L`RZ7k0`uyDkv2&{FYihUL~WWf+dZz~1}<5!a}+wA^mW7&*KVwc9cnUFz71y- zKzcF*HlToW$pG*O@hgrkY<25M24TM~j-Xg?8#i5PcB7Xiu)xE*&~>bzo1auqyIguT zPTR!ITRweupK@AAa?}rVA|$h2JB!vi-L16x@95J;0HePwG4N4&#f_<;B1&0&!4bre zi!cMy^$$dv8 z>i*qa=!8hzwf1!N*5!vsCnmEV}~lsofaAiE>K+M++wMYAq?pxn630Ekw$p^ zhJ-*$V{i#CH#>Z&UO$YhNs0N}&tE!w=|RE~=elr=!KNG3@-8+~uzpsNnIz^&zWN0h1K;eBevO zX4{i&#}F#vhXPAHAW2hbS7QrCz_~(7_ z;g;`3z0muYGF!lc$mIGljPqwWIEtSzlgY?E1lWXMd7a?v65Te3X*}0WatzLDy>%dU153ehOgL<0f(=$2 zNl3e9mRM-v4-wDA^RC%L-aQY=fgNWm=GL4(+?Ol|m3vMlL@CRu^Tf9I>V>=vekyEV zmw=W5S7al`?U~bB8PI9z(53edsdBi+g5V*<=5+4NdAbCljifi9FuufnROK{n4GYQ> z0(l0LH|E$KAk6OQyqp1FPLfCn=-zPkyE^-r3)|EJ9D|(4vBYIEZIwdY!bg{d{TG3c z#!9AtH}$!?Z%lm%v?nb%?X?#(hHHz^`pbNfboN&ns7C!fw;-=IIO=hC(11>O>Ih9_ zS8e^vL)h0x@ByNm#SzR~3Lz|*16dlBbbu<9H9AG+9%|QwK}v2KcitlOMgVbP{B1WY zn7M62tK7cdApPk9(*nza7QzttcIL^%jlqc_u{y`$uZH%^on94RI4b^7JG*@em5~{D zGTZ)ADN@cPOs7`vCiK1;vG%6ZV&J!uyU7{ITWWg(MMiGbls%Wb1H#lAllU`E1-*tk z^W`QumfJI@kL|OD%wri@PQ+XWt3iJ$K|D!zjypTgU_dtWjjbO4_p{Vov#0v4InCTA zS&CNrKdH98E@(XCw!`DsZx9!TJoS&oCPzr>t4v86urry94kr*73dJ|N7|6(AdWR3q zz5%ApNawg9qVp#&@x)O^h^5YPk?M&x?>ENxzT1~MBKGdKyh=d`6K`N2b5f{sW8}y% z06VU)34UFxpL~_UKHW2Qw|6nw{&^qb{CAnroEdtp3K8ro9!0k|7U>-8gZ>8BGANev z+2aaD-VSjJ^*0u;#Jn^?BP%{?w8)&jGwjMSroII6ZO?+NI%wBH_!#4e6NkC!lY9^G9C zKZ^RmcEvifU?{|j_B|k3!KRL$<{?ty>)MQ_SDov)N8}QZoVL#n^HwBPekPkSl;UYI&FnLTl<^qH^2Ytqh zix*(Ub6^K&bd?N-KEJ>^x7TUN3TXA%QHG9{Hv|=5vm#Ye6fCDbNRP9lH6kFz@dl4( zL$Aj{&A5R?)BJ?eapA5}kLfWi66%mD?J?FurpF=N!Ut0>v}pl7^L^_Rdga4W%8|Q- z6s*Fx$$RNX<9ef-TK((yfRz;jtSrvyyq)I^0%HinTLq=Rj;FhU-BE*XbD8}Orv)D~ z^z=(~tly4Rlk7y4J$Jg8d9mG1xcU}Iw-)4;ugh5Jy}R`38aEulE-XQCj^r(ts6HIg ztrXjt6l?q!+8?Q$|1J5~0CA6%=;%07K!2$QUH#9+zJGY(xV=sdJ9Pg96A^ao`2BT6|kK!g$N3(Q+eYAy#-?t#O%BsLI~~ZZ`gA@x;i;=x%^Y zC$np2O;o!0(n8m%?t*rnRy=pxDLo|{YdyN#QL#9iz;YtVFZdzm2R7#Bo{a|Z_G%j=qG%ON?Gf3&v-(O5 z7Y~<3YR~;JdXNDF>PNh~3>Qq-?^<~4F}5eVz2PmTrO|d~^vN;Jf?0Y^wY9!yXw;P! zv`lTXOu`aacUtDU<_7&H?=25qY96$yrbAcd%Jsk6hpiFS4jxCzy9o6-0BRte~a!-H3Qa=k4k<7StzyvKj@b9Er7FOF}fTuk;FH zu2=aM>=vf1wx`}Z$FxFcqGrvsuyxxLib!;htw9E~Qo3SoyU_smkS_e^eYlzS1o##V ziq2-<)gJ4TH)tuP^RsC7lIn+@;V(RZW~Gagmk7fhY`6V?5;PHHw{tyha(v5g>FE4{ zIp;dqT4eE@Z@cM|0vb?|y_1G5$So)01xExX@whRZt9;yQ#p`&{4%>&n|3iihr06P@ zoJG!`DLS~GeAln7vEG}0tq-Wsc9!1a_!l9XqaBZ=`ZsC$1&@prPfEx}+{Y_lcZF7!g^a zb^aw02)}@wyczppo)Hrj*Rn()m^8*p>vy1IP6wJafX`(`S#>F>Qi0k6eXYoT9hPWwyJbWc~IMupUgpVIoDPPDUj zFIj8n6+MXI^Zg&>;GllNNE5$r^X_amWOY*ebcZ54XfC`7D!4$a{!Sb*%H<^X`j&TJ z|NiDKo6sA@;!urpW%kU>k_$G4ppqzz;9ZZPWl(Cr9S`o14#(h1rP@@*0 z2@%vD+f)4U_&wK2#-s4@CK6EWnE&JR^uhRCA+GL3;vqf{ys3-(@MYxI__y}Y^w`qu zU@t679S>avMj+bYk7x3kwI2ft!n5ie)xW?Q$<~ga;$#{kUSbXleKbir@SE}y&tm--T9_33U0 zKfV|7<>-SN70BG{F)xMBM!-%%Qof$Nhm0;a#k9{{gDX@6QrBC01@4&~Qi)|#mAjeK zsOIR`hBTn7bD}b7q->T_FHWCW5etE*;ngg<>g9ecj9ts+2Q`Y2IbF5)CuZ9Xb|n93 z;VGeCt5k}oNY}!J$*BU^TTZT@^lgf&lPVSCHt>V}5Sz(lG~}?oG3vS-p+}ck_F>UI zT8#WVK>SQCeDb%T$Q5e!)RjE@LMRYBQbS6EuHpA z>#_9dK|bC9eP-0x=&E?rPM~&hiXqw4>~U;6!BKus?8{x{PsLX8B<2BA)f|Zp5y_TqB{(-mh5>Lpd%axz%$~(1ue?`Uz{U-jSB`l zirJLH_O4rPsZ&cXSkWwtnat6(Yn&(tZk5<|LK_!KTXLTeA*bU9a^sAQ12Tg7+~GBa z(R(Hz`b;u>dpWi?k}CKIf2IG@;h_CTn&T+kmz&nHw4Acw*Z9$ya{ZR+u+^A%nYQ|o zF|U8jpR79CE;($w@dg+BcB|q#7;m$@Z}3Cc@R@?-65U3*-;NyL!sC z1_ry>LxZPvj>~#fAy#18TiR_2{?6%inl*n=Ej?-jk19v=%^2SY<&&r9^ESf!NeC7p zFs_LBWmJHU$D$;w@$+R7pJimA5a}g`sy;9ii|HZwLr<(7R+o~~A=p*nZP`7lbMpL~ zd1r>h-R^mqVBbM>k2ZvZq55$=VUL{9aTjE3y%p0w+gm1-TRPIMRcBg;=nB8xqlT}F z@C}ToW4s*B9J9HdI~s^jNGt5lSY(_XV~G9#xR&?C;Xqbyf6gm}08r|YB0V7hi`jao z^ao%>Noc9bYA0w=qfB|x?K07xD2zz00#XzUz%G9E+MB!6a{|Bt!q%z*X{Hfaw>0o$ z_G%9xhR=h~%bpqB#*MOI^D)J}6A~YA>jlIxQWo{%nF%! zz`xQvT6nf|g_lx)?@=hOn60pW+aoKj+%p&ID}pVTqIMFI@KfD;i3;ej#t-DrqL7wd!v$J(>!Set(dYL1R1#1I zzN2xB#5mv@tHUi{L7Rcfq;M?!SY)D}OnB>c`I(uK#leaux6p25s6mnXtFg=||KN_u zqC_ic6@dyTmu#!0F1y6`x|P$twx{m|eR8d8BdQ9^4i+dIQTj@A@yG+FkPbzv?I{mo z8yBNTu~JS4B0l)2=Z`w+c>C6ni$-NUk9r^ zP*Wa`JEKRn+DB$($VGKeuLwBoskCPof#3>Azmb^q4XDQAk+B}gjv192@8;Kk9Vic* z9l&bw2mt#4@~^*~9w_vXINWzz){CX^mphL}bR)!^KtH1$Woctus$Lg60F(r%ZFF}R z=1ARn!3cED%H_}$(LwC+`+_g7Wng92`Lt`v&`CqKzsrxTmNe2nXvWt&Z@-ud3ERFs zleo&bLiOZ>T}i|~BL`SOcPJpSId4k@;xO{}_9V*Z zPPcG1)##2nGt8BS2(E8kS@5$vwiN6sTrxe~ot50JS*DlqeWDOSJx5!h{<*crWw~bU zi@o>t@n|=vObB6n(&GV5zH*NHeflhkoB=^r41!=IINct5pE|^f^Dz38%^3H`XPR#E zkc;H%itHi;g@BStUvhK)#Lvxu*y-lH=y}!63=IPyw=n>q*k`Zt+0b&4Ic;dygb^I|b6X+C{!S{o20%egy7mcZ zi}6}5phNBi67TTGcM5fPnr{Xx5K!$)=oS$dcvu_S++y5(!)SCv?_-}cCLB`c>@X7f z1TTnA&Ea(pRA2Hl=u(ciGh|0$MZV@klzY6v-*(H;>#%4Ob3vCs&-VntX`QhBj_PxL zXfkaeJ|5q?9pXaFC)OOYqIx*4Mn;^wy5@5@-q9#hJ%>}hvoHV5SWR8`K7C@xb6mzP z51r#*?@gZNb&I(?EFsxPaKYjtdh%WyYE^s?9gdb)Yq$A;7zDxF%7w|YM37Ed`;ydW zAELIuBPb#?obva*1(cqqR&w@CAa9qKy4}foo_s6qxX}Vc5)-X{#;nv*-?A8F(T4q2 z201QqndDjBlP1lGixtI`fn+an=wiBi5Wd#L$3S#ejUP+rgA=}6dmOz1+Tp46yulCu z_A1jmZocMKH8EGFXRC348R@m58vmf(r?VdfYLz&_QKV>j+EL`kJBWELFyS`ln}d7{ zrhi!i%6f4uGGFLSy+ahpCBp!$r?5dWZYrLohDLh`4SbeIbkQB)c)bT$48wqlsT>1N z_`seZ5ehIxGN+yD<1G^;BY=hm9I<2_*|FrRB^>jK9!T#IcI0~bJAS+YLQL49ghqRY zBOc%DbY;#jLMgo4@L6X*UTrr zYa#vC+Q@3FgdC%~->u~2G>w6yom79W;~nm)o39`5_H2FA-yW#vk#63Dj#c7CubPt_ zPBirJ8}biDdGzE+p?KAcF)#+H-I1qmNm862wn>K5FA>X6?%gG#v)OMK=)8h5Vg?T7 zWeGIfxAdi%qXvc}>8Abw(n`W7Si@QV5w#N`UFB(YQ4`&AmDE;Av13wF(mZi3rr%KM z)}1NnEaW#ij;i|SkWSn#7)r9SwaGs^`a>diA(tAl>q-~Sf*uBUmKdXe5y!;-sde!( zgI*i*vt5a#D?&c)INuXv8M2@-M_Ep1a)Y&zkrPn)*=lpt*g<6D#;PwZE#X@{+8~~a zn)DbMtGOSD>T#5FGgn9a&ehS-`W=$i7FAbVIjnjojemzy2G)&u?FA3$JQ=}N@+`B1 zjfla6p9kO=cAp(A8(79aeN**l5McLe0Cs2+;G+I4g=&g&nC9Gl=E`y9(KmQEBPE zk4GpuN6;k?(Mwai9bM3Qnsz?+FjH@1B4ZK+pIS^zIF}#!x)-YtLu(6biR*R$wey$W zF!C2Qx6B|T!*1fcN{jMb1w5I7AdE&R#u{f&1N4WVDA;9dqwB-*S!DXJm3O&9JH)xv zUnrrDah$7^FQI#s@Gj)?dztO(Df(ESNpdMJR?<)n;~6O$sZPM;kAI@QMCx~*e7i}H z=di<{`_Q^#?qWZw{3+3S#1t~cX=>w_@1RW$4bbJE-e1E&oe=8Yb~ zqohBCGyILIT~nfZdep;RT9`PQ>p-2qKya8$ZfDIthd%kmw+3dq-W@9J5X*{^naYG^0M4428n3d^JRe9P+CWZ+HVAOCx!8MCJr+68=;eidjR@gRMNyxn|zL&_)?2T)tHhh&SE;eOA(ZF~f*r>*64hPmSPC~{27 zNm~Ybtbu1$1dtr$Y zQ?I}3{|1y$qhmBjT*q;9Na3V(4;|K>Y6g?gK%9sLoh|4-^o~nise`4`;Dv0R?DOVb zn?2Q0;vY1b7v>AJb~wknhaZ`yy%|JKHB8F@Ey>;0Z_pqXbX` zfo6WZK}|gki*kS1fp7wtH%^r`bbkO=B8&F|HXw%#C@vt;=z<4*?Rp937|m>46{LSX zKsaR-*j03>T}?Fx=vA5TTZwz18DSXbTa`%%=w@|I41ZW)V&hq5E8giw?xEtgqKArp z{x#VdCl{7=x6xJr0f~U!X{Yh|l%)`L0q3SSk>5F|!%$xn8n6i zZd;r_K?9tX^(G*>W&*#c-!ho-sTHMDX;`{b)(0Si*G333prL}aP&Qi?+Kae+SbH4f zRL^mtmg^yq9`0z|9~j%vCxVIn8w*rXLG@J-NNTo<_yjJouBHW(Qv3MRbf6ZIa~6AC&UnuhJT594>j9%)brU-zTx9 zlm}lClH_2WZ`b}=*?No#SS{CoN-`#nT#@kOnx1s5o;?GI4q?j6rlL|_yZwN|=}-it zQ@7OKs7T#)eAEnehPq_ZC%-v>Z=qXJLudQ@>kH|NjqeWSEd=U0rsn@R(?9C7MT8yQ z+T63`9Bk(jYii|EfB9yE#l%UId+pnF*bYD0RWS3k3t!0zrhWYZxWdbSX;x)bA5<&$ zpkRN{!#(_Rl%-ZE~MkVFcxTloc_*EoIx36T8@?Pu_izEAbtO{ z0z#nd1Ym*p%@6ZlKyP`#TIQ3H6C}&RxP7X=YO2yD)v$oLu98bB8xs`E+SEK5YV?|* z?~$)U^zO@pi)7lM>SV8%aoo-6)YJJ3($F!z_9Ql@(8hl!9j2k&kvlgUxp_wg$hsIV zJmRH|P2kxH>r>}nSgh?C!c@d{j*UQ*L~3m1R9vLhEu9-`>R;c+aavfu{lHAM{4+!S zN9`Z%vqwy6LKfF0oI=~d*7>DmsmZEycnf9VLoI&kPNB3{LCst_i!=+-_m_9M7k;ue z-4fRaVlfGT1B8*T)IKCl=jrCOS$h;oS~|zvAchcP+{=&EuVVQR7?*Z_7Zf0mJjJ-m z6@~QWUI$TTN!()H#AU_0oGx?{ozcO-x#o-5Q?Mm3vNim2&{~AwlkkbLpkz7nZ}#S& z((R?i7^>Ba{bw3>c_>S30TS&Uhr{m9G&BYH?E(_xfEM$YN)|KP`n?(YrU^;fm+=oe zT)LRkjEzNc3CUN6)r3|733{#43ji1RAUugEF8|exA2x<_H}C-jy%SxV6RWJnFFUts zkyB^hx`4L;f@;K?)M28!eKECvK$q8hQT1f8$~58Qi&_?4!-4utvoE2?@cR=E^qwUq zv{dxA=BHDUPg6|{AQ7?yid(gsM-BKSy@u4pt|sYYx4R*X&rTcI(T#<0xX@_9q);`OL`JY)6I>#dmkLsZtYVC($%Ak{aIqz3H@`3%gvCL+d zupvXCpPS5o6}rv0ADrl%HQ{nbs1w5$goG30SIf5+{YK?96-3JN2Qes1WFTj?5hG*l z9425pfPeRIrLVYy1yQ#%>lg3mMk%o$aY)>|48T!ZUnEx9Y7~BSTt=VW$CPB7_iNq* zyHcElHhfIhlKp%~Q9^EIi#xLb+@ZD0y)AEP$3le1)%(m&s-;gFoFZ1*i5x>#{0^5!0};M{`b}~^;v;s52b_t| zA*LM8l3odjg!q#BkLex`alhK|UOc6(g6)AXpKx!F$a|rM$thl^zXcD9qX!Wet_~SP z-Q0na>I$9~p!0-Q^+AAv{X|AOIO3x5=dtHzzeE{pGIe=9=mAy$g_Omfz7OrRd7-nlvIx%Q96XWrvRGSiBm89f1z=55Cl z6C&<`ub?l(C9GK6^{h|^Kpzff0&;Z?HZ##*zkZQ2KYJn&vHurQ_ZwFMk_~nik)+d? z6m+6d;Lo@!Rn(opYJNQy3tOG|{+lmP+p2>H3@CcG6d>p#S6{xS|FGxO?*=ZdYr=KN zLuj{(?Uc{U!boWepHcP+y%{r$?N*>3(r;kXZD zQf_Z-P6K!2sl*Jn52dg{nlxnp^>aXXSjRaNb8ySU{9mIxmq$edn(>Pbe(bpgvwzz% zE}qpEjvcDmzkVq8ke(BHX$-v#KP(X$ih%8QN#SuiKShyl+h&-1mFGes2x189_^akd_n9n{vUx4c zQL|I}%aZIBl`wp-dhyZ{M;A=R-#2Ym+!s^>qBwOic@5Dgw+4!`BfWpJm)GfbZ|ldAUgIuUUIW>?b@$ z?dG?^lo}8^@JR0Ws|H5yl!0Ut&-sAUO4s;&kF9Zs=IfIgU;C{6pbU6-`#QfUW77Ro zT|>LPiYPxUK<*p&u35-nCeCuv97g@{MszQ|x``aXvZXeROswc=%QjbqLVI_I+q5hp@DzobPO)@nlKv_{Vx zqZ~pFLgQQclT%xYWo|zhba0uOJ8=uGbUc2}6ighhAY%Xh1Ow?SK${>QRKoZcq#Nj-7 zTDXSdqTqhG`wNgXxIW?I6jy6w@>zk~;mqr{h$1yb3pK}I53s5X|7V!$|;9s7wKA;lkw6x0qJg(WrrItXTgx}Xug#=)YsD;uGQT!xV zvHrCG&eOeT=<2;HaZ738f8nd2&R5`YUl7_!N5Oy$~t z3R~;63w~x<`#0ZCQkXU#(7CyjbO5+%e=9vr7TkJO82c6NGujUe(^vm!dx#r+BgIa* z506aa+8SfS%uvbZeHyZe)*2S&WcgeXSHo!lJ6B6LdOuZ1!no1ZT%Oj|@hF+c?1Mq{ zrxo&iM4`|cqE7h4RPxmr1+QpTw5#6J@*B&TSmKT<-gnk{h(d#RBDpoeB~?=~<0XAZ zgOWg3wmZ7-N)P^Pd_&9RdXK3&yMia*vlT6Yq`e)ES;K%eZ>G*=@USEW>b=QEJf*QN zD`(K`Gzm%DD{@gZtIqMi-{X=i0`pa5-wX_g!yc(`G_z9ef@8~3!KakFjSLR0o{!Zl zC#k$8nWVU5yD8d}9NJ6X;jVwAJI%(cdQC$2D!z7uye;t5EGbDpk0lAIsLLk9Wh20a zxs}?s<&b6$sqGf5WV+|n?hNZv;OnOm_dS)AsoLQ%|IYTLl=6gqV99F?b6dc{|Jx8$ zVNtZnSfyObmTIK{WmK*BLqIj)L~?1+pK_$?;E!5#jw~1Yg;`NRpd$^4l$Pd<%>$qT zQVmAZ>aw+%J;jy5_w&;6R}ul(4qp+;idNPRnVTF}ZSsYXr8$0c6SAHQ$cnmpcfa{T zmJy(YaROJ78A22`62n)H{wxU_K=!m(ZqzUPk8GW*U;(DC3EIIV{sI}l$_=tzVhvxs zZ>wYQ&d-h1D+qQhN8Z-uh93WpZI3f8Gi~g)5><>5&z22%gPIY_srqfe;mb)!&2Xfc zuN)va{A_h)0z=Xw+<*A<0V>;@*<1QX-k5iENm1b4xO|tL%4qH0otTS5N-PoJi>cr9 zHyn#H5%(pgHeKvcbz23f-7XW)SE)Aivuf_bJSK@pp9%N*L{`p??hB@<7-z~H0QpYS^T08?$}Jc z^*k*CAaqSWFornxkTO;q>uZ+tkBnFoMVl+-17X6N-1(JM)lagpikW9pbAKcJ1welb z5eM@wh3ngqva`fvj3Ti;9o8(pa?hQmy+&2F>}QYKT~u4~n^FgCF%Gj!RzFRs+&=r1 zO#b9zcCa8@S$IbZzmoI4@Tt61q?VjXO2)5NPM$7p0!#%g#tZf>KQ}qHLkdhG9NI%TtkEg!}!6}aFS)Bj09xP8mi~YS{ z87C7gVN!mdK3iH4pZ|2)bap&ZNDv{gv^K5&^Kt6x4O#QWqhkR7$j&b8m3b@h&JSE6 zWaIJvBSLU+rDZ6>{6#q^R(x`4boH$Rc&p-$Y48Q)AqwMOsuUDM*$!zMNf)#_z8qI6 zOVYZJ0y53R5vVVFnx->-7E~5O<}Q5+9PsU8^&bN#9o*|N21-F06%KNTOQr&APFJEf zFFcrdksvj5mT-gmobNSys)jjlh>01=j@K3neEK zx_*vocp&Q+Ci*gB&pxXA9DHc~b8ECbPzF@{0s^=dK4@vsxiTanEli^}N+-6v5PTRB z)lYh?P6h93B@=rj{v0Am2ls+liIqQxG!gAotBgu={BsThO=|IPjcb7qO^Oq<6jy)) z$DdnJwIt%@ zk30dQwN$^n>`x+VqlmQ~c__LCyQ=$`V0FHmnO>x6VmbYD0J@+Y>J1psC3lV-?a_A;%n*o8CD2L#Vkys;c)4A@N z!h?WDJ*W_I595u(;+f(l5=%`Ggw#uSkA<1+85BQ+W_?HK6>hR1>L}O9nJA2zhc1{| z`zp8$h&r)cs<-*n=uy>{x7<`Gj-bnCT5s{Vkub0|TRW4(*Q`nOoMJ-q@{?3YA3N)9 zg=F2KF)LFObznXsYzGYT9h;Hg2{MxRO| zsQ@N`1CW3Fp%B@jfhJ%D;00gMdJ4Yfn>^iquS55naA++Z-w^rcSkdo$@Ve+gtnjxD z4_`D0g8qhf*k6c@LPwLHN(Y~|mEtBtpN;{&ucs^~7uUjFNrrnltNunb-dB&AU}U+` zLzimji2q|_o-)NgLqz2%H>Unx^lbzSx6Nv7y@W*k+>|Qc&+Bq|)FHfGn_oNoc*|HJ z+h^@_1yt5;O?}S)@l!91)f>E~gXJz1kQV!tw*wp{yGq_XauKLu@T;2Q_n#*|dk)#{ zY#$obFGgwvCkGesQY#VyOwWGU=KVtkwT#gEjwJh)at?++E2r)c(mt}y-R8bfzGOnl zGJS3$HXmAp^LXa#i-!B?I{?|n^~<-EtL~uBF$T$Fu+nyR1;+I^JjI6lCcfRH zArHUJK;ajvNdD44733HVgAkGEL)(be>5f#WMgGomOr;2~gB#s% zF6)5xPu5xGj0bH<>#Z=~L1o??>>nY|ipn$QezYGJDKrk@FkAMW-s__?f2?}o$U?F8 ztRt0~K2-ykfU8%IcD#hy=%lOMAska7VlkN)eQo!FIF2ed?f~DSK0F6d9eXF~4XEuw zAx~Zh3C=m+@}KzdU=%!CB+LN0(fI4yH6fMJthj+Qu1hH#zo_`M zk`@-R<@Mh}BI2LDYyYC{cs)#+E*e;9wMxZw15aPs>_J$~aO$`>C)r0)6z|E_zEP$G z(QkYlF2%v6?7PIN=B~;i-PSF%tdb0ZP4qoX*;OmdA2i#dlu-E!h&Meb&l z*P9IWRRUM)>B2AiT7cwqs^|PUM`feEs|nEP>sNk$KELDbVOq1gef{8hIB{8G-Y1Pf zO`_Gy@XP0}0gg*Ihw8=g$CTE~L!ZmKQoC~65@Q5zX{lZeUwC*sWOzns*`V{d@?=HadD=ris>rhw0H*FS=rRj!Wq^v_=-S5Xh9y4Lp3 zcWQ_&2Oo$d*NR=JJm9hv>R0>4fD4&F3=CBMwN=Y+c#-e)F*yNH4<(25^~JsAFXdm@b2=UcIzh(83yR)}YIe6RI!iyE6gK~Y2qXun z+sG#e&R7K;C$@q%@fb766xS(Pja=NTcVDV`nXDn4 z*qvcJJI*>b!-4O z`%D5qY-`n=jMjf}i5;9JpB|459!7*!*sFq#zD8Bj!f(K$68fmrVW;}vPFejQz{3g< zf~TW7l+%T@B-}}H^-%KhPJZt>D$D1p-3gVl9@OxVyf`0+j9rU{Db7?|0LB3_5YadP zZewx{t4Nr?-u3EHjL)yCN+l7jVRMAK=lEqpwrc=!xzG%!Iy>ZawzQ8ZAOzTH%zv)mx_+Tg5|k*!x%=KRr&t<9j!`poIvXTSB#(}s=_tx|h8BT%VJN_|&}l<_Kw z@NMH>-Bc;IAQb9lTphJ8(E&Ru+oUFr?kqn@6u1?HpJOtX+d#o=lz91 zt2e?po}n$m#L>%=c9F}x)a8>Si%*(4<#9mp!AAy)e>!9K{%hpn*;O44L^>X_HgJIn zXam*}>qU0a4wqhr@O!S#*tO>L^nfz+PvN`vYgOo5oW}(FHq`@dR}(o)-IOw&iRm2! zw{BAx*EYH}y#XIoU~9^Mo<+l0>I}9J&0~!U(6SEx!9b-euWABsEQvQJJy=<_!z%Q7 zPL($V{T`ReTM{lu02@)tCR6OgnV-Ps$tAT73$=B1Q5lW3MAs)#i?zcHJf9f-!|cPa z-=r%AWL)*%>Q7Xwl{q0fLUioucXXdJcIwFDRK8D9)cdYEJiG@sT%Y^r`6)Hq#Npn=H#hNB@ zd|ezNizDXSD~rDRYkNN0Joj|3JB&E z0&|TT^i6UPPiE;%aa_aJNn4%gVB2^jFnvTigjZyL(CoaQF}V z8fp}lFTwtIwcW9^;swjl!yv5#+Y|4cI*R)!vA_?Qplunc4^*kmT}{QO^h;K zf1a~_Weq&b)r}xz^%wqwvG}TXVmEgU$XQMtZ%yc()xeb@KojDA$gK}qBPlL=d%h?*R|t8p55Z=jj_rW*6K<%%w7 z=R)ROwkXSY=e^JAXcd_y1Zie4l>4n&rC+~@Mz9Y()u54%bnp)^IkDk4l5<(Bc>E@S z+_R`@z;NFH@gL&g<Ehx~CF3qI-ia1s&A$mXbSVXay0^gWoU z65N}1%_sSeBv5TG?=2lwYpN|gab{C+J>p#)1cnn?cE(wB#L&=4TF(WX&O$6BPoc*_ zr9)KF)i#!ZDs5)K$>hp9w<@WT=pB#(Pn-~0YemjVJZbPXw;(xDC| z9Yg2P-Q5DxC=C*WguqZz(k0!3gh;n^cRh#q=lgs9aJiPtGjq+Q&3eTW@S=z_Wt8C&QVbG+S!$E1{hc12r3>^8+a)KEkHX*;7Sp{4Ek2|E;S zZN-z$rDy;g(@0oTywo>K!_;{y1C7Z#EUL91763sh|DPqG93zn z&ry7?G~L6dL!Wl$LQHa1Mvo4h7_@m~3ZEC~by?T1JEbEp8!39e^180?aE0G|aG^_I zd&OlrvibMYX?U<5J~hjjp2FQus)H|bt1S1c(gb6LM(EtpZ7{z|`60wg0J~v$_L72z z?5+%766N((GR<=Bbxf&!P|+S-;`}!^>S3K)Mr6;W=nT|}+;aIvakrNU1sr+`V9#~{ z7j7*(kUQ|Mvi;!(QhG>W;_Y!Svpe@uO=$nD`JyP>^Gk(6W3}Sa3UKd=0Bp0u8P$X0 z2dD>O_wR0<2*;ya2N-O3^85; zZH%q!Jeuj$rymOHZul;J)V=*vN1e47_Pw!GjH2enaeV18)uF@EG@$8cO9r*2Mra!c zKx=Ahh~lU&dTc$YZjA%`4wl;6D-4@|4EJ%cvQ7XiQ|6noxnSnSl7+ogYx+%&wfYTH zgM1Cnq6PJKrL1BbB1`t$+7DWO(q5xFp6?K2osK25W$5riR$;XKbvOMy3sZykwzHBY zA~WKxy20%@7v|%9nxoJgt6IwC765$=G}6JM1()m-ZPOKod6~Z0^8el1MIb69YNB)- z8aEDiH8y|rvkjnZv%#zJB+j`ySdge)2G+gi#bO22^Y)A^R=}&jXHWs~C&p9wJitBn z0Z77ss`9ViZa%@a0Z`_@*&61c+qose^G6bBc8YaTp=)u}p&J2pDMs)U{1Fvj?DKAA zd(J1xhjclHw)du{bWc=kAdxy>1uo%#p0cEp<{vv}lLtLF@?NzOse@(8_fa<9;B!+36lv&G3Bvbv@A;mq z;^vTO2pqC*MnGoRdyqF4(yZyxXtmTlYBwL$w(DEx3L|SOkNa%^^)r3xsR5m``vIzZ z-KK1o!9{23&@uzPpzHop{!2PpavW@(;fJ0HDNm9 z%S*B&u!&VeVW}DjsvQG>F--_WWNlYN@&!2c75g9oDVw;H^E@i|G4!tDoqW>unzZ?6 z#KTO&vA0R$?=c3Idt>el>U;+L9uY~2@mzJP$bWq{0^vxUz{hhO^~D?D zmp|OL0DlUKik{K|fV7*AgN0@Qt%^$_$aL~&zVG>R`~<5mYXqW=6YQlv?-6%*=MSg{ z-2lTBh$_O)7V*df__+3eYok)ww3)u>?C+A-oZRVRd)y@+P{uZ1-Z5DP4jwqB-_CGt zE5D2V=~(Rr?+QrwbI)xufI}Fl)~0{F73Wm5HGn#yIJzFxTXDOH)AW>eFX7epn17G; z^AyJE!8&%lz2^oR2a}Geueh9pANlC?wAfehdo8M7_2P~N%o~!DctZ-1d!bis(AGj7 zd=NLzU#j%OKZy)kkHZ?lHi$3!@6Z3Gn^xa2jJpQ*)tiF$MQ&>0+lV<3(e1VmbYZu| zEAn*ba_=85yYlzk<{q%@I zb*|QiXvWZs>Z@wxN>>D*^)K4L^-e0G7`RV4KUcVpmZjDH8pG*AmvE4?PI;#VG6`){#Q_2mgK`-#qxkw z<`HWtp*0mk`b_A!gl0om(Q~*jE5wW3^61)XczJT+0L5yK11xE(wTIvH94n|2p=Ou4 zP5SJ|5>io2zvpoGvUDu3gVW@fU&IQB`L0=P>2|fD-WvwS!;l9b#k+VX%2_;g5K6v) z#A{>YWs0$|bqmGVteTJ%a5bshy@=WBr8gh>Z60DNrk{4W?r3CE8=&?(I&wBP7LF`j z9CInUhKA95E1alK`9aM2HWyFy8j!x5_2Gdy4RoeCy-?S(LhR(PbW?9Q(7bn>;dJBP zNs{VWT|8QE0s}%CwS&%BkGYQ#dMGqZ)|kPFKo)Qf69>2>vAj-Hz2}$QvFCv$(=~YGinT^|w;0T^AzY z(fvBZLir(HkEtB`-p4&8L>9dqQOw7>EHygpsnMyPZJG)1*KwFNWK{VR@9VPR z3&HE_4%$X5Lo@0zPt{ksle)l9A9y1fE1*nm>B_AHO>4ZF=K#x^VRW@}haOXCp3@UF zW?d!k>ngVg>LvEX@16Qzv?7V^t9hQgt+$c^i;`-M2dtxN#K9?#ivhJ$U)7|`0JW#q zxJsWQYm@Mn@IpctRaO%qD~oQ4v^>w!n)Z}fN3Jj4$uFF)WgvzI$Uss}*(LvK=an+1 zld3GGesz>o6jQ2~wv&%84}hGIZDB*#FtwpD91ElFmv$^CU}C< z?UT`=12cHcgz4O=WXDt1RFZH_`7#5+>3KeD3<)epjEQQ6k(edFGtzxuJ;A0lejR5; zIEQbxaOX$hqX7lDh!o3C=>=$Olk(AohTRcJgKVR0rUfd%(=-`Ude%UTf)}ixG^q?b&rwWyAs6CkNj$Je$UR()+VbUww z^D=g$01E&E1O#|;fMN>4SZJ=iX&kD9mGc_oWSugdr>@F-wj_)k0vM&srJ=>PRk7mn zj9E)N!U&O~ur|<2+1uv9)MYi;b*+9>)#&j_Y|)}f?8)I&;*HymW0%fL-y!&^|L7@o zU)>=aAq$=6`O?9da%^QPskTUuB1*KyJC8apmX(HR7b_n=wcF}d#XuF31Ugdf9}put+R5T&c71EViFq%SRq5zI!psNJHhfzpT^wpa$ZdK*^3V11sL zXS$>@32p`f57_zqLCO#&)A`?8rmNdx(e2WTVDv6Lv1gR=t`$^AG}^O)q~Qx|q;~5) z@zR!V!|SIQP>%>sIrn)A?)QCc!EBIq62*VPv@+L$A3kMyfVTV|wIH1CIpe7aIz)kF zLATz=zz){)vB7}vr#p4ryBG$${%5RLINTNI2R9tt(LZ2XAChywv*M4Q9^#XR->jrR zcHr}jMZMCyc%J2$2O3&{Fc=zEiDrMNmxaMjrJ4OP%?J;@Q~b6}SH1r?KgkOEiDJy)SnP+e;+PwRLv|)T>%Ct&{ zJ>?s(V#4UmQyR5*yy+8c zlEhwp>%q`!ksoBAeKO)SCE2J1p5V@)Z#`z|TU*1}R^;aTsWaEK5r@=Hn4r&-bfO3& z8tLQ7_!h80r0J0wNf{lbM&ckiv%S?Wl-h&PqXm}-hopOFjBr;3EtN7OwIeuRCWHo$ zlMWRe@@Vxa@uW66TKp_Z|6>NfjU+(BLhmhiWMC@kwKPdZ_&Rks zWlOBG2V@OgAjJ}EI_2WZTvwxARrc+-kFNP2l9*Ja74BRi5xK6C6I^p`3hJ-3Y>uKD zxx$JH&E^#Y%FlSFYml^~`$67a95`^hUd-&}} zc}Khd!S547XsrO+13S3htfJF8HuF%hqqX9OEg0xG#eoJ)NAZc_)ifXoyS$$T|_XmKRd@z*qWMaVWb$! zJh}B}iPzOd-@73}gwJ2}V+E2gYIwszDz9NrKX_i^U@P-_=|TI@z_#N%N?lt@bur3> z9vJeAgl2A@I^R<4D`R@>k$!Pru#AhE=J&L0eZgwCT@2ppYMaRxfw(VqC`9j$hkivK z$bQq(i=h!WZoeZSXr!jCw&Rl4KgBwnR{)5jHXIa$*2`hL8i9|$|5-VBR=lJG3#Tjk zN0jV%6>8Qee~64!QS26xRy7ABH-&eJa86Yt0h=4k#Ib}WFU)-YBIW;b++?}K>tiWl zD&AR;2rxH&c`7Ru0LcohK&8fzP@DRl-NeC-bF>9L$5D|KG)s26Z%x$&SHHk2-g%QE zw!}Yt|Al`@mB5F(;U&@SA@MNyJwY$drJ16Pn-{D)l!qrI(~RA{hWmYc1kZFY04a*d zYT816#2AH6H84tPk3pD2G<3IvAj>IlR@6XG8GWX8R#xpQVbg)Q8$Rz06*14yt?m3>bP^3bjUHE5qZh2j)80qSW~2LRkG4!7Hq! zX>exk=B&B9&6^8?Y&oatcaT3w0rr5uHn^6inJbf+njnAbnQgsTp@ERD()=uyugFVo@lEe} zjAQ_h)+f)Oy7G{9mSrcftG})pT$l9|V$_rULiuMy6p2Z)(qUs;L>=jn#*)1x;tP=Z zo)bPW+5}3EtHQe@b8fyTK`A1Hx3CT>#)h}RQ|{`ntPq?eqr!}H`=Yj0Vq+H4^H^qd zVl$<+7djO69R@RA+@Qgj5cG;2H9NERvVX#)c4n38Vzv$j2UYJaKWUj?SVLji2-Qvn zJ*k@8Jy}oqed1E%({%?+nY?YEcPfc=#lL3fZ^?un=-TrCSBIpaB#9;;%&K&D81I7* z=XvVci8m>hJxk|H11HS`mC}9mp@OD~PAQYJ$h{N8L(Mt9qD1E#48zCJ)Y6?>Mk>ja zhH{-ks?Yz=3xGVu!0B7|+~GBnieL1MhS)FVsq!Z$Un~zgDXi8>jDa5MvV&rJ)L$!i>kR3zM&&b<=6TTqQDeM5*q19T~wjDpSSZ`;yfEjsz*()AIYM z$q3b)wnIpD4|>6Hy^Wm0*QWn>m<}TJGFT*Av+L<=Knf!(n_jQ^?LVgoKo!OQoR}`S za@4&jT?XcTPp7s~ydzkW+WEi#dcQn9D=9b@A7+Kxm)c(EPe{J#AT<$Qt%D$aI$#G0 zL0~EFDT;pW10Z_DZp`t7zuswWr|y`I)!SWJj1n#dB!Y6!iBYl4tu$*iK?*$t3H-~t z%M#3AKm6aBrx1OqDzp07@6MW|+QoXwUPt)94+bOusL&r6Je1`4!Nu215J4>oMpxGz zeD~dg{({{=)_X1ocFQXw$ox4w2c-mj2AKz*M8J&Jpq7`KC6Fg=Gv?#G;)Umbs3pt5o4g#1zK=Y6-9sp>cK30vDUs zXgzPWh3$k@C&x@{8ri zDp@JFEwn26$xHjv*H43Y2jyw-PSTAw*n&sq+~+SF%_`e!_dQi{7^{;bfcGK!#bGqs zaK7-LGUW2gS~@BAy69G^Kt%ZW|NV@T>D=O%zp(r^OI>x*zp$|ihRb-i(`|pyWq;Md zdc~e90@2F0-DWJg(b)N2#tsse2(8>0?tbF02@BMUP0k>N=LBe~pq!|4g!ia3X`ZKO4w?MlrzG*&T}SrnilMkyIy3*QmJ;ISwbC4u9!MI7 zl?dyg!~ZujT5WCYkq^dU6CmFnz3q!jR_z&TlK9prxJH8SzGxFuZAIJc`ex;;ygeaZCh zbxh$m*niJ;qHP$SMaeh0TLh>F_6ipohqP6whxdQAB<87>Bp7DP61Femw zU;U0;QuTwEmQ|C^Wgo_1B^wa1I~|t(Oohqsox;7p)d_}kf(bdZ!7?NIzZ<0WFGRoN zlj+VHs&ka~(5PJ$J*OuPK}8sm#}o>I6EU(X5H;!?|NFkwrk*e|gmpZ0z?m9Xr^>MWAtgaxA=`H#NI8mFrV1?{4jDze%)!& zF@(@l4N%tu?m)*whXeSe0A6dWdHCWtf@F*H5|l8nea7m!AQrF< z@`T>&vcxsus4s8+of89^w{KQ4o|bumTy8UybP=W$WVsSZ*3C3Abmch5eJU@ubl?fX z2C@dzjZ3&is#be3fZu4lp~VuzUylUna9fnxq6*Qk=9@$v#z(~dHiXYsZbaa&q``}L z_f1b)6~IPO1vdZ8%RsBeluFncAijDZSu|vB^;uq^|=ppQX}1`g1@1nJp(smeY-cH>MM^!!@{H|-&^5)W@qlh{UY+!2Zk&qhCfw* z!%M;7w`oWTtAf7LH#me^IvVO!;~kDE{d%XbK650<(POzw)g?tz7qA9kO%O4fxcd(L z-a{@$A#4<~@*eXU*qelva6CN$>O(IQLOL{amC&32Jr~1`1tmPQ2Mtfsfl-5-353z$ z7DGqz{y2e)7-cJI^?_2nAFTR)f`SMER@e-*z9kjt(yPVzg0O|1nkbaG|9L!WBN%s5 zC?)Agr_>Q+p?ye_3<)6NpprkKtTG=~>oSMXR@b-*Sy>+VhNa}KBL)SLr<_iIPqejo z>1;VnF+;Ddy)~^S{_?{Pt4De+1SG1Mf%)Xky#Ql)YP(2ci<6c{L!gy`PwpF$@=7vI z0Zb)A6xY7Jlvb1kXPRZ_@OS7CsV6ZVnPCs?765b=B`KH>c~B&D;)64}vw(9#VI#@}@C$&2&4C&^^+lTU{3 zS8_?kz(&!wslH5H3H3F+ucP=bl+jng;x&BZ(jJTvfgRFG^ef4kqx#@Cbdn?BbK%Pq zPy4lzBIatV8P7msU!JMeNw>35sbD*|j~JdBICCPpG1U6`AUc>=9MvPw~ z3s4_1s#|YA0$HR$Lfv~Hvh)4kS|okE36QMS0)&;tQi-MlRtvvUO3eA-sy|hlfEx?b zI~;AW6-W(q0}N+wCj-pCtITA-ymlD;h)Zz=w243Mu>-aO3!qslQ0cOd#ag9yRw*ea z(g4@pL!zw|amdv8$QE)i+6RPTDf8ZXQ5C&%E-n3M3SC&%P~i@pn+vH&yamNr+7D9G(d%#w5&jRSZ;x%X6Y@UME1Ywe(7YV z>CsyB-YeE#?Jv@XM^Ot-es`1^AZ$NHt`-!g+`pz4ac2SK3G6McmRcuw;(HC~%s08LD$)%>DT&XT=rp~!>yWJgWK~8SiCk>%#q(=;`qZJ2 zCX~wVmm!oPq6bCFGYRB=5b)BWi89?*P5o0Mo(Sg$BYsoM1Bwnqueg6k`>7P=feY}X zX|XTQOEwQ7xl@IG-*wuI3HFN_*Pc?X@=aIkAd%PG_q{=ls6NWq zwKuG<98?PevU4w)l`}A$Yh2c3oKjrCCs~LG zL1A!Ftot%o#TX4riTcshGf08MWZoFCs)EXU{sz_V|BYE`Z!O|vo-bxW4q55=j?L$` z^c=(8fAl-`6o^~m4@(l>*RN9^4MOCUe?u@LJd3BzK5mXE#OwiFf8C7wsQ2g8^Xj`; z-wNF(!rQn0sHO329bQ(SmEzAf7XA^*U~F8cAATO@W4T&%7 zJ^8QTjaXt?5?j%9ntTRy@c7~3=sr#n0CDvcis^GUF1t3!$U*{`FlNT&d~?u;RL|JV$6kZ{p0R|yEg$pZ`@wYOV+Z$7>MTt5suW-L|HkhweHve$11 zdgQ)zG!-s=wS70mlpv0CNGBppIyvL^@nRnNbCPX|dY?;&0@$?;A@jc6p$fPI=Y#~p z)cwv9oG6}1TPE}JK`0OT2p{Ezkd6W61uy9N8d`uQELklASt(?sW2-|p5TAjWX_7lP zNh1ir?O)+s4V31-NT3h?%{?s+M{!C!Hn>F&4fd3xJ`y;JM}T~HJbKEKk@f&&He}t| zgyk2~6-qjlI0?aaSQO3L1@rbR@Vl%_Ktc~h$vF<*HSU=6;f<^e7u`5e~%=5CY71j}O?)3`HE*^;0 zwAdWZ*w8wV-kz)H`Xqiqnr7r%;x)sQ-q{hcNTqzS7{i?!#u2hlI@I74ET}0kQ!;~d zDkenvPl`S155}_DvUDXyeWZa3JKK@Ia=RdEYcM=S9&u9=X^zz1Gp|k7A)9V*I+q>T ziz4d{X_tY>2p?{h?zAcLfL)8-lp{>pRqIjU$d9U1#DO!)fbVJ)1Mlbj90ir|gBtav zd!P6t?=n)Zz@~5$vJMgeQ$V-)XDL)c>Mz9Eq}C|u8CiG z*y(;nsHCir>+A@L-#pKo;VJs%_lv9qRQMy|+dq#C-7Hbl>FVQwK|)RF!&}1sic50l_qZQdt-)z%V&K$xAxvib%AB?#@(W76|nTw zECt>|5xXvHy~jYd@@Wr=vA0)tlx!z6*b9Y`k<3nU?{W##8~moVhG#6I6Cfi%1EYT9 z#s1uJUrkvuqhwrg=!X48&O*vM=q7!ICWE}?8}E~_dr#D{J1QI=Ec!}9o&skc3Ap&$)xA9UFz`?^a3uTcdE-UyEXgb9&ZM z1UG(@E#1NAY~;jvI7rwPTRvVbqMb#2VFu&!j2)UvoMhwQ0b{aw=QR{JrXOdx5!K)o z7}%$_m94tMr;Qw6oavz86?h5S8+dnBF&X`y#C&O0KYQhf&Pw}73@$0UFAti$_7vx4 zE2l<*2=hlJsSmm3Q9+B0nVxwkt6>?9+KRNU=Z5sYob0VpJxVMP+6lo+FD$PR{*u)$ zVmkY`7WjG1YJ({{<*WZ5Xt$BTds+ytH}Vee#`)hg`QT{NHjq5lgs5ZMX8Y2}7cJJ& zs(nsO;LrY1)ycB2+e~3v=(Z<@`&|$z6RI0g&HLh4ik$hI(eL*}qZ{llcR;6nDIlC` z*G+l>8wReJn_iz)hM{GGy|8j3%REqr;$NhL7YS+5b7mw0VLZMSWv`1ZQ+7{ZA&UqA zcOoYVHDm9b&#rR!lC_iXkJ~9kV&|1{%^8;ZN?d z=u;9C6BDFj-p-78G-EbJ*;bYJY=p8v?FC zsA|UR&{1JS6h-H$Ys%AM5dyP}G;F|gDcJ-gTvTXrJ#;VuegHhu(q0?zgg$hJL8zX^ zi%=s^e3!DBY_l-In zz4@Ek#v*8Vb;xtsc9_qdRtDMobuglh9n5T&+%ytG0$H~ouHm?mbjd^n>TUB?(w9A~ z3{}4CYW}29N12MC2R4xDtNEH`l0&5nRnWG%tb+*6l`3gN!#YTW`O@x>D+t7?Yo`4z z=+8DM;#UGgNYE1ny`zu${$bJ@WBziI|4l=3u+w-@=Z2W%=>WDhRj5G;P)8MDiwhr^ zTkiELPPYHlxyW8i_Con)QfBoR`56zBmo< zu6qo#1tRFdh{jY>-iJtey1z7hjj^toyZ721FQ5xd;3Cu-qO9Kn-N}BXA%XFV$Xk?s zCQNHYM`I#i@a9Vq^}-H0V9N}zgh)lCoKA*6>9WJ>PGFwWHb`hQoI7cIN|{E@Vnqtx z^v)vGRB+=0ky9bIobqlp_85yYPNq3jP8eW{hEZ0iEci2VM?67SVg4Q1i* z-nb;QJstp7P+eW!KlUl6bxsMQ*Iex=08ZWZA?AJqy)17LaZKYd*q1~WkzU|6JYRIZ zKnB)1xX?PC7gDi_|D2(QTwp;Ie31>Cj^7C1IyYkuuqT`vM^R%+UwYjUh9e$4qkh_y`JY>iAMJLjW59!RM|GbPy0+~!=O0JdCS_-mx3kSS&B55|pyW9n1**{>fv zS-gJ-157yDw7TUwQm>=XU=8l~bH&706y0rZF@;8--INavJ1$2rf{?!YuvLSb!Kmm| z<*Zif7xM8KiC|Gp5B%Oj4`j=?m`p!30H9!1 z#SOl63J&5XG_vLS-RLYy-3#3fL{L`ba5oDs2+6pKMrX9UIj!^|0MRtE{m4O(5%Czk z=R9+J7)&&hMG-mHo54c+OPSJ31{xRH??CD$+9_tBqB@lp(h6SH`mh%@sEy(UF$<0A zFYSKmKO$Wag=kv%{Kbz#(8;K*SiRPMwi*}}RwIg&n&17|c4@vStb8=IextUHYm2nv z(34UqOXZuOn^!4O$)rv%DuEPW6?^8?eo`4|XFzVISpx7~Sf+y)v7YkQ0 z(aK*J;ehaTQP)YOGwW3jo1C~dwW&Jr2?o#1^4bt>@7tn7c9YOZfB8M%wn9Ydds_qK z1DDpv4((QV#dU{Yhabv}QdZ+$LFAwXmX(IjP}^6Vyl1YK>qa2*S@Ch0 zRVyPql#70;oXvTM^x`t)Dr9CitV%%UdW$R2hFcB_Ed)hLjx*RDt zVC_b8{j?fi_d1f|2p86&@M+WJk2(0lB=1<#mL=Rfa5LRH#jDc+YD@>Ebqh z+A3P!UH6qt?&fqWmo5m&?{+_}5v6KGID!(&Nl7I9*IDtG8W#NmOlu+^@uC?Q|Fj6J zamGhi0rLx(MdvqMf7@?4wbQr*d*ff^jOe8GZ6iKZT4!Dsq3_S#h9k;^08X@A!Ll2P zQCw8!G@5m!i-q|3Y`q4gLUSqzHL~A3*22+-ftS&Pt-huG7;bpDu$lH|Fn)%xOLW$i z?Ko4U;-Ik3C5W@)oO3j;<9Tc%A8O4n0>eF)7YU-8=MTJR8lWGgJ6bbV_0xX>7Uusx zCRRjITsD5wa7EgBeSnW>l7f7D;e>o;j*T74p6VO(fj6(uz{Jt|Z#4z|wkztO6VKRs z^aO_KW;a_6N`bhooE^{Ns?JRz~oEW4Nr%y?uAX%|T|j(|kihOG^ummGODC z|MdyX!e+$o+Xt>+EJ;5Ev!uqq8QS}9nw^k1l~qlDyghQE!$Tw7uqY<&%&l}}uTXvJ z>hp?a+#e^cKgs8QztP)~1U?~`vDu1uxD=C_tw&F?_?w;1M9@~nLzPHiKTl!5lu6Kg zFRTK6Cf!{bCu&xqKYp%YgHpT$Y#S2Q2)R7(g7U&D8xK8Irjk>D54UNo-lqX!Z1niua+9@2V-RoJiX7tW;S7ZtYBj9`9Fo1AG z!-<*qGp@DT6(75mT8PWaeP+K|{(oKfMky`!z!mR@l?EyfTH-Anl}5L89~I&c})Cvc~Xv>SMp58k+*ExmQlDSb%Bx~L%J~8@5DoD zBMdNL|fZRuvrTyFLoD@*(%~pk@l}-q|(V4ae`A;^}cc@eJ~r3 zyxwDb*Z=bZhz4%`mcY7`g}72S&L2c)hFluLwM_{_kqnr?emq({OH8j~)-%)B8E(C= zH`2(&eccO1jR1EpjsMY`s*{iRA~%y2KK%a{;^Tv;dPXmU7!tJ;$8~n(PSuVA?$2i= z1lVMN4kv|FZ}GK|RnCk?@Cot}@@CEu=EoNrzh0VDZ)_65SFQoj#Y?7|3p4~Wv#tz3 zkzhJ|`6(6IBLZP;!iy|RB%HO?urk`mvNQh%kH+%`SP4Bcq-ruVfU~({UYY@I4g2WS zT%qZQQT?wKQ~$zwF8w8Aha8hv9}b~I3h8A{Hlzwa#~=)-L~CdE?HGurexF{ME>cC3 z1WfK21`Zw`!akGa6dS2O^57G~DpmByUiM$Zeddw}5o$O_@I9hhogMHc{I92AZL26S zcWjr9UZ?&X^WJG=C?tU!9$~p@l+KrTTULOh8`^jIKWJnu3zI}0f#wpmprtjqq2Mh#R;3m?~nlWd& z`nINaq?9d^a(%k>yFKU;O=++<+iOw&&6}1>W4&D&>21R=mD9F5wV-|^8x7x)L{S^D zhH8vw>ctQQ1CgoBmSsjaTY&fNe*M7M7&BXGHP5u^XqNE$2C>3=73e5Og~>U!=K44i zae($B0W->?lKPEerv$E0O*L;?!dB!$jYEjq=xti|j4ZcfuiB9DVdJY8>d;GZe<~Rp zZ%UaepOmfi>-5-GNp+DoiWh%02>0N5h-XB5rG#1CGDMM#>;E=e;yb&aQD)?B3k|!K z(QN9afkcliVW3Z?!An9h;v_JTS9QozRKEc<+vsZ&V2PmvG^z>=PP`GFi}z^P6zX3| zU6sJx4nJe(OAp9r@59Z9bbdEjxH|sc)D6+K?fptj2mbdAyrSs)3ufn!Yj_Y{Vuqq{-G_Ap{%Z2X}Eoh>}dVv|Zo7{tbsyzkdJN9)P zhDdZb=Wn67MZS90Qs#OSfR_(JN=i7>g5F0I9W3z-_SJ+`bn`097&`pyuAt~{_Iv4b zL5%+gMGA4e3nJdz z;@Jdxf=@-^GA%4x!A{YN4Iz`i77;8 zRyB=b9UZk@kCLCv73g+-imd#@OyyCMsM&EbJ(!JfUt`Ko+8o`PgK6$sZx3Uug+SmkWnsd_ab+6-6XIqEaevBm2yDchRV}fhf#}2Yma`cUib~#s-SP zMpgxfnEYqYGuq>557-&Ju-RVmisZOUO?wp*8_VXVyxUNBh5+7I60~3%ls;TC-t}8y zw@uBnS@l<%9$vaznQYn>!~1}AWxTcK49zwS&(j^0;-+Pz9~6RSr@a@pSCvtia89%; zQ=6hu&^Qo2Kh^X|(P)Qk6*1j4Y z0-2O;v!5q9g_cIt`=^|L4s4@}~T;rd}tp+jm*P zift1w(N@!ghsjf?sxts+v%r_QqP;zAmwamcerhiRxVKv~?GFO)BJc`Ror11OW`5?)v+s_W=K zqg00X|GA7N_3RUIW6*)2a!20-1G=f(=)ha1Wu4?VQ@XX*1Ti2ER+akG5Wb;RutSLu zqDc!f+TEaH*>D*EoYr${vGgQmktnw@@wCoR%%{FEa(?R$AbLl)$^8|;I9h*#(#s$G zi3w3aT(GkXBwM7T(E!6bo``(w)(A`W4eTqAF~$ zU!0b3`jU+>M)k8*!N6Gi2w;TK{0MAtKUui+{%0Hd`jn7P)?4^PfwB1()42|Dz)_x8 zcv8F*B)v|qDDw}d_42U&F))kKSVl%h*X+yzNv7ELx?F_4jv5;9dWskDRPC%CtSkgI zd0dR4PS8s~5|A3?{6HAUv|A*o7WYBVN?5Uz6rO&3g7jzV5<}u&KSvtzxR_s(eAOqG zw|Y7mg^{2C*%>|}0_nl6Axp^hC`v=KK$ew`gIf}3Rw2-Ff=;0O>@HKit)7?lvJG9P zWM_~e(y9bKQjTaiKysXQizD@BptVcH>6wxdKYv!nITt~1a#1-r%?;uh{5ERRJz~Kq zB)?ha=gQVl`FvlHu1DELK|7YeEt!D0`m_0x&^}RGZ|Gw|y@TRK zLiWJkEU)Nn^%mDca^u#})cWK1oV;?Mu=aC(x!V|y z9(ZAbV@JuR))vf%9Du0`1~?I2v5)0yRj1AtIyc1GT;_1D0DU$8OuQMgP6*9TsKHfsoYv>J5rv#72{5BFxnnDq91rZiS9uS|ZC$V8Y+V zey$z(`0B9z?uF#z5o59i9xb7a2di@gLQ6-$Ni4kO7YMC3Fo%LipRTz2uhHU)4H;T{gl65|@crkut*Jo`& z^!oVJRc1>S7i9|xXeS_3jQr%P8z0jzwJg8<>!g;ge{Q5t1HQ2 zdX9Fso@Hv-&NapZeDHqJR_qWaPDo$t26|_0k`|sHEK?;(ZHiWl)dnRNE$4k5ZR*aG z?Gm`PJ?1oROPe19M1D2~T&CElp~;`3$*J4_Si6xY$;E$?i(`7yqUf8JL|l4Lz{IUx z%}(cul|K79c7N&|G%WBE@a{mQEa3bh@>?h*5LYaOIn>|hPmPp{27Hzh%`#D6bprEezEZ@Q6_8BQ~@ z3imRAtSpKjzyO6As5q-~2=wm-7^0!I|CO?jbl{>Wxn|8Fz@2JKLL}?iOtfMYtW=uH zyWdIiiuGu$&+Td@;&e;$F+)Z2J{j1OuC^MZ)+*QQ@jGnoQxaT&6e(vDQhgKWeh2x& zh@b_NAQKVptxamEY?Kt`tTrFEnVoKq>@But0;stJo8RADwhPlHfQjx>pf<-t^bF0- zJO03B8AjfQAFP* z&R(#8OUod3IAdqJxm`1BZz(ZWe|JTHx!^?u7)SE->TC-N3RLrDa78?Jy4OAdPi+d@ zQ-&6cZgs&DKW>QE9V=v=ec7VD>FG@cyb*H7BpgAgMe(`H(Zw@y1%F5=0miD z=(9f?EeGtm0$I=fWsU-8k>wT*IxIp-ULLV<<@(lx`eK5G96?E)nVO6m@73B_tIP7?4J~VMqZ* zKqRH5LnMX&WuJ5Y3vad;dz^2+_g&9g>shOk24Ya{ANtUNiYmElL+l27e*dZb@4&7Q z{0gzy9xA}@M_@vAM>i{sNl0M)1kGxrUCSY;f1)bWt?l;1zhMi3D0xq^iSLo4TQx7k zy{&FlkQ+llP4BOdo-f=)8Ob4KI0^$@Os~V4%03)nHUt->w;w<*cZA)5S1u>yFC)*r zH+|z5*Y1PATT|Dieyp;-{w3_xNe@usUFl7HqZ8BXjhkiHcBO`Q^g~@PdU{kwW*+z^ zCdw`MP{|Qt5XqImhp|1c`JRRZIyK~%a&3$2o5u8|x2JQzE!Iq--n|d`3MIN+75qa_ z%ociLts{SA05Tn1@fEbRjUz^E_@U_TuZ_J&!QlJ0uJj#1754`i%{@{Q1TTLj2OJfC zh1M`a%|064tTZNpqU1T?D-mTnx&jM=dyr%3{miA}UX>XyDf}fd_IP>tf!toXZB2rH z#7fzr0D}jD>TdYrP9zo2JyD;H?`E+Z{X2J4`>bg0_ucTKQ-zgL5jkYUDa%No2o3x8^U`~#`dRH4Mt|PNyv8AiaiPr zQYrew(I?}gkkM6qb&@q-KlZ8M~#k1Dt5ysx&}mvHx16zVt#TeM}y z*KUED-RU+K+I_>SH+~n!jZ}H8=w}=MgB(SxMo2 z=&F|y>&=(Ce!kFHl#gG{zE>=D^{!A{dp6_(g9&y0)f1sKGb4mD=Y#jB9b=%P=f=T0 ziQTxv-}k&Pdod7D^e#oSPm?==Yy98sCCalI75|PKNSu*8&s2d z?`vpl+f7y33mI2%G`T%}D)7m)P7ReVW=}HPCpi`fs1g4B_X@si$a z5DNe>I0^>J+{Q7qwNJ<4!ou;Ep{LKUOPN4|wfo85uPy(4hfEIwBZ~l@-@ktcpZzXG z69E%z9yn&Xd3Y*arX|1{H8zG;FriDIWnJL+2ht|AqPMC3}Gf0oW2AT zRJg6oVPz54{95_X0o`@kUH-?9Y~#7WX2VZ!<_@t8hCO~VLz=eeY>>J1iRJcVGEGhO zRE=Yh!M6}EIcEiuyml7-a|wC%-2m!;0Hm&>xts91fSK2ulpD}s&OI9U#uDdf^dG(P zctqKIwmtZ0kA4AMjI|zxl9aah3V)RCyEC7@iGUv!44*Qnn5T6ZzmxDxAhekq%ZLca zG$N7NP%I>Z?4|&GDZH&o^?^DKGd@`-QN+&X*)8`xOxf|9NoY2qNC!2S1@f{4la;k( zIDGV?skEIFBzl51Vv6(cy>aMnYazc~f`Pz|Q1>$H^pbi(<)ok-v^Umx)6j1~q`lir zh~|5iM1`YS%ABz!f!TYz@xBK2U(2BUikFAyIq38p{bVXhMMcE`Oo?q52c#f{i<92m zTUX;86wbK=0@iDNl=J6jmq9?7-+la;7X&kZ)S^Eu!Cz7V@m<_)4T`CEY3eFBEEk& z0C7p?WsMt{3a6OFM2bq^&zZqLxS8p+V9JY&zekUExl@TAXA6eibNOlMV+tu7u&G3< zAc0kSJ& z$Gqmz5_4ZrYQtnBycHiH%e>q6n$_8$jHoe0=j=#3q_C7gl>eKS$qMJ z+xFnH+v0t*VbH=_5{Lekm3As$+|Xw}VY4OPxV*qCYiKSJ!aqDuC3fz-2*np#dYyF? zcVH6c8USO^d^lr@k5{^BisLmC)+Wyl(I<`xQiAw@T78X84&)P0lUTsM&?gXyGfIi> zQzRlMe`xo6u0?jKH_>5z^!>%3u?KMsh{#xxMl?CI#3(Q^y}RSsi9wZIcd2%^;w~*M zP1U)vn>Tv@0-Ufi@&wR`_rJUo=Qk{60KH{wD}$*H;3D!~AB_NstW@;$y?ej9e$O;` z^%(=~Vso@HJ_8Dhnvds#{_MVv!<5u%0F512Q#XIiRZ91+S4e84= zt)%{)K07X2pt7_0;rqz>g5`IIBZ@hmD+Bv$Ibn^lf;hGN{TCrq_Nf7}2im~t4_ZLf zn|rJ$H}ASWqYNX7GaBE8;wLz5I55;rBjetha>M-T)iO=-XH-T>cC>RP_k3?0CPD>d zdu0)oyluELwxNG{5WC0!+P4|3YlX3mB1(dB^#rTOHuQU>?o8O8CPLAv;@#~HNq!Z% ze!bzDt9E0Z1VZTQ{ky8m{HR%o*^0nCp||1q^90gO@3?j&T-zxoH2YzGHLoZ_#Eo#y zC&85JOj3+|ogz3N^Bc$JLe=f!}XwC?I0nE{dR=#aAw=;ABFFkcWR717h55(4OU&>ybJ8q zN;(~hBBriCny`|}1K$-}H~{*fDN`Niv-6Y+hynv-7b%x|0@?4dX_vZ6$1z^ITNc_N z?^aVs=Of^eF8)rt8I(DPzI{o~j0J&G>9T$z|IUxE@3!GA*~4+8ju|OOM@KX7uc|CE zG(+5}@T>%cEehL?)wWW!eI2ecz`nD0Agnf$?g7K63D z>?&uI_-g2}*~0xejYaiaD#Fig0*6rJE${<|)eiPJT3tRB)p}86K9?vp7hS{TjraTC zJO}ybB2$FByzAtW)6z7+?VWbpAz{9GPRc#g$580Z)cKCvTxL`ho|u@*pO^vo>sLmI zUJBGd4P=b0VxGPzV)->tnJ};|;_6 z+OPm}YFk*`^!7HUv9tG`TlA#BOf)qkJT&920WqjPh!BTt9I z78p0ZtX`tO`wT03{)AkRbG=CAHfRregtGL`3fpYPc{q-OS1~;ifcuCl=IBK=eog5l z$}Q<*-f=P}yI5{~(T^vLZi>-JC-S&*JvLKsU2Jv>5v40N-|K(0y;q1HYBxsdcr@ur zX8#G}q2Ob0;OEhN`RlO7L#*=2*AK4_!K(y$?3E8H#yNce03?<+LVb1>$7VJ8?GDq; z37|0DJF^{$Y8=fmt40U-Dp7$qxx zw|^RoOzR>411Q}^hUJLy2QF$EY?4Ya;z*}T8rp8Vx)~UnVmW%;zS5Y?E4()C$78D* zZ~FQK+=~yG2)^nzQI(FhY=5gY=warV4qQ(kC3!Mr!nVYF!cmdF4oyhim0zp1T|b0^ zGo9SlTx#CruvlrKxGK3i#mzi~85-gJnUIKQOL_L3GN8tw++wya?O`giI!*uJfh0OM zHt*>;#(9Q;3M;~vJj3zGxk;D7NJny#QXtxH&+e)EZ$d0| zFpIb+Lt-o>GzLwhkJ@$MprS_Xsxs!ra=m)n5uA+^%J;`>^>K*O4DQ46BlrQI8uI0W z&$!o7LubILuBJ9Td4nOg4#!gU35DI2Yja}di#WBK9CMxe^7rDr4KeKdX`2?S`p0v+ zL+r5Lm_0RZg5SoWm4nu;x627aX_H_ME#8N3W>I2pT$(TPrWD(f-*vsbdshO8M=AH- z3haX}I>eLF+*dN?;x%aZ)pUnzyb4w_H1-#Js(an}zDa@R?WuYXuAW%>Lgi-!I2V`a zyPUSC(LoX9@$L1H>%9QL(rbe-M#rft9&le3f?EPCP&{+U4&aqcb>p}BZyJgG6Tq=M zwIM_|h*(jLJD=3TZ=sA`L8_uq$T>VUDOIEBKGrnCr*&4MU&kHl&_kVQ|9DZ6gtww8 z{w8?Bi%iy4?*dOr>y1&kt%ZXjKarixql!e|rwnZ-Gm zFOHw)0(W&>vi)39J~`;-nCL`$!Wm>y!MYREDPhW3bLcKry}J)D`2 zft^d(;>p(u`i5@1@Aequs&|fjlQ2i+nfqnCcT#G1*j0TYjSr^?WjyZB#vFSKvl+r00QieV0aknUmp$YUO#h?yuh&{4khqd< za2gMT8`-473bK~zb)&rbfW)o!lowdx*+8I~Jy_RhzG}6sAAD$7Zt>;1VRE74M+}SM z|9JtPInLB0yjF*PfhCURET+hyc5gOdj zQ(Oo!23PnmZM+w@Y~KZK76S_?wZmT#H`6{50`6i&D-%@~6>MNl9rneuQ+ADR-cY%j z@xj{p=K*HNxyUaWl50zQ6^_YnQk7pqy$GS*YlP|P=~HFyB2`4ZihUG~R5UIVP*y12 z`-C1-p-lXX5udqEpUmXl8N;|V<8R}BkD@9i8cUCxMF#fqZ1)-hAk^x&Zq!4h);HLN znSF#|#p~TuT^=SrreXMHPPEFKlc4EQrmX{sWZ_g~<$6Wf-CCw({O)n#1D?o~S2+I+ zj@oo)rI!^ZY`AC2S`;x)UlMI55k)>}u(VUz#Go+5I9{N0XK&&Hf%5({XWRpsRop{NPnRJ;j(MoOAtl=UAky zLd9=2ZHWO^M;(mARn*?s@NLF-+6AoM@b=b{u`6T(VIz5I?-w`oAFBVIu(^^M(Oj+FuS8 zUa^s@C$L>uNNUU9gP*Iu2$DL|A>PqRXb!{Th^ zxZx#4yi@K?$)QxA@-S?$q(pNsa*t4oRqO8ZP4h3a4-PDNj$C0T>ntN4&z~C$!*gt? zyz2iIIs{UU`fEZhe1#mT5fkf>8#q@!3G=<&_>gr$_!!DZ%&sX_0^*7#iuEhn2!*BJ z6Wy7eSGD8XyTQ9->6P1rnOpheVY)Qoixs|mX*W#1r+^)RX=67y!AeILcwZSAeH6E zG`9@1Dr#HC7KjG@ull*on|jo!wkSSbenX*y+C*l_1mMimZ4C|(FeqwY{gMG-c8=RL zUrz9AVrt%p;J;6lTe90YHv4QEinLvLQc+VE>*f*2`fge6&W*}R0Q6HB7Isyh3J^Hh zJ=m-`xF-9+uLooJi6kvPGrZ`Dbi?(1cP-%c62XdbF5qxsIU68d_NPk{kpzQzMRP|+ za;+g@S8v=8g3M>Dgx`4aK1^Ris|1=sdT3vM!~I`42V|QRWBJ$q_2(8q!Z=EmX7;T8|mS>DfwZm z;&wAs==oNZ#5`5p18HR>TYI;#H=mNUfWZ++B8#v}S$2p}&m2)E*Y2e4l0QdY=A4Yw{06PL5$s!^g`v8Mo;6zdQ;4zV)+K@WaE6$6yZFnxdXkUg}HYI?cX- z%gf923MviuKc_trQl*1wVrS5q2@U)iA2FNAWzR?oVp1r@Ec_dd)HwhA2aK0$zW6F{ z3B#V1RjM&^5m9M8+*yC~;<-m<`lk4#pKk~*W@5MK(A#!>C4HkQzjoS6V`j{T8qD!orAo`2hb3b|L%ThSa+f&l?z_xSPZ%nuvs1b|rdxM4}}7`%M_C;_n~MnoOP zT|xa<_umD#V|h`cG3v$t7Tq zhyh1+DDMj5S)?z~8Zj6)JoKx|F`LTe@MI}llF>O{1O3gj$O{jkk#v6ViGHRJFf8LMnfk4O+}{%b-!$*VybIzM0CSw( zV2bFi4Q=fi)mx;96gSAl#l|Im+}{i>)I4R9BLl1$uVSX3DI>DsCD{;bG)iYag<-Hw zJk8kELhx%DUQUk+9yQ9G!rO0gI4gQedyZJhhcqZ#;V`_KMe>_i8D=)yccUIch}S9! zvTu1dBrmyP=@F-=bhx2==jW^SxQUcW>InD=e;PxWV>?qD9?dYXv0Lx#XGS%pD^lZP z%%<7)1iEi(I7pB52XZuK?B8v_3_bI>tMdzyj*}Oh$MeG@8;l?XYsrx1q-Sc;tm}qK z`mcA2mSTfw4Z;N~w*c^9)1|#08%s<+xrU@5s5n6swT@WZHGoKrp?bgi|$lfK<*#@Fo^@zTxmrOxmV#lhT^6gnB8wtjr$p-JAxDk$lkKc0bpryf&`+ULR<96TW1n)r;LnNS;zqHxuWOo2}y^ zMP5uP%dv6^-Ds~D_SeJ_F&a-)&F5ZypPQxcmxykD#Vn`*D>g6G%xK%5KjfR9P``1S z{OXNL*2gt&#Tl=^KJBuVTi=2AQ0_LZvBhX?g>eiNbB6yuMLOx{HenfkQka#*jBoJ< zyN=H|5m=AHyGWGSS*sjkFKCmrEo*XRcCQ8oyA2z>0r~bbB|SW&>7#Dnt4Pep=)P+I z(*K?ZPpVnxa)0u*A~!Ty5q#QlDl{yKeGh_i0<`AII z-#VSv!v7ck)9*#U z#<(PgrPo+?8aGAM5?C1ZTK#sI1a8O~@gR2eqmoJ*6R$)@l4)*y6IJokX3pB8JLlSfL5)&FZ#p6fl{*Qfhu)%ucg+~Vw8M8$wCl^QX*6SD-5PeC6r&uhF)sDUuPaB9n+|XN|m}&uN8<%>J^QqR{`A34G>*n z2V8iZ>1_X`yw@qO3(x?mX+PUo@g7G(AJxX-?`O4>rves5g}|>Wj=y9Vq~!xD%(P(x zQ=;+USiCHF8IL6FRdnSXNi)ga`nS&*23y`s*AScOCrrFZ2`)&jTiB`|`Dj#Lv1oQ1 z%y1P^vL?S@PF-%z$Qu4-m=Cf4N`H*=nC=fW0YQjR<4#GYbn0;6k1_CNE#I#nD&_fX zET?#m*K>>Tjd#}kYV!pVDSC4+=*C(hP8-rR4PAq)(A|A7NLnj8MR9VpO4Rm~# z09E8_@kUf;#v?GbRjQ({sFJiI@EHc%oi9(8D6T!FV6;@*ooo3GfR6an@3|_^Nt~xY z#{+Rz%oa;F7j_kLdBXKU=S)^v^1<#*tg0Oc)(IXJaJc#vgAx>J-cu0)!we86v;a%2 zsj0~c^e0+DLs6HXcdmoA=UQNH4;0`k7tN9F(M|q;_+t{~Z-)mm)P1kXlv6V}GP!8c z73$3vy&G})?>w13=&(R5^`pZ`wzbG%&}wOE(D!HbY;5hujOxRBdj9?G+`lSQ8u<7P z7piGgXG~k{<$Maz!lQqEbHsLC|4^irhJ@y;-aIDgJj{N%?cW4T$`F+;3rI9z&F2%f zLO0GOJF0drQ3Hhb3J_-^ZyC9s2OrHZV8#D~G{QPT*v(0(d2 zuQq--`Tl<9L)7Ep%>JSD0I?6JH|i(&te=C^Skm`=)KaQwNw^+FO8on|5*>T1^~WvV z$3HTk<7?{Vr2255I=cltEqIi)D7NGAns<(8-N%9?! z#ctl=-*stGx0xgA48)%fX=r`Lk_4xG=u0eHQiFTGzz{^Df^P4t!nd$r`)%rO6m8SA z6k-yCrlrdQd0JL(xTtb}rNu3O<}i$Q4S{>oie?jOsw^%offEwqi>&D!qV3>&p(C_;+NY{x!}Z6Cf(6yA;jOn-9|8as4wQMl*{b3qT_mqp68kQ zSjtX)>!eIt9iFjXv;c}JgM>2!5I_HrgZKrZM>S}5_K-Kf#|mGL+eQwB3c<|}`F9d~ z^p;^sV(oWw!>nVD0AHx1VBiyh&LjtgFl57|>fxz~=s_F09|k^==!?anS?7HGc%xr-zYjfc z^>%7nd*0L+FX;=01?IJS?mfB++#kfj6mki$Gk7J{5|b>cZM@Mizv6l+f{gEcH%Q6D z%^aXq;|5P2U?8#Vj`N4B0G0O|wT=}&DAZ;wpA@r->JLMj)b-eS{0bh4>#0Xx^D@No z7*~Vwo%YlA<}}$DJ4kW_787V{QMzW}!!}A*A2Cypj@cr-#Qk2qn7zVnBiZ4=pkEOr z38)v?yR~fdrr<2!Qa@NNxUM-X`|Y%_GL})14{VyrU6H* z8G>6OA&P`Y!_heX_4bDD%HKoHkewJ=)X_cE5ikDWcC!g+SH?_~D12ONJP3L8@M36# zdt6A%ESj5}Kf7C?KtuYIfW3%JyuO+lGK>B!vjpQ;f^lO3wz!*%Ge*u{srHW_S2^lm zZu6B{?rvJM^M}@hXNfeXH`hu+BJW`~SgaBXFPJ7B=_=r0)t3TFv3ln-b+t8_s2Xy> zTC8xJ@bk)>q@mwe@6o|=9+O}6#?fJws@(Vt!16KMC|=(3mnk|rTA}5G*H6bnM8JU^ zn5zbW)HZ{%M;JyOuL3W}3O6X*fs_#vOyTST*OF+mS;@@h@}m`gum0b<)5WiM_jmM| z3}p;Tt%oy`J@!2$oY5!O}!HgiNMltbDA^7Oa#-sq$tO&qNc;SAr z8j`TzBJjL$dUF>AgYi%5w?X7vF{T9Nqb0PMU1FJnaYgg)NPBlsKao^W$Og>CtJklo z-fInC3xdFb)KiYhL7(vMgPg-s+}7H~?Egvnv+bjwiv*hBElUCgaASfLqIgFg08LM> ze>*qFXlxxNS*gjcEVP-t!|~JX82Du5TkwG>Pyi?sb@@FsjOzl~X^?xWOW|5cqio<) zjcGNxw%lAt3+m+)>o2sPZ3u!tC3$QopnHT%Sa^u}7-zw00#J}7^w)O)Y8Cnb_Yh$y zIUO-C8u8&AvYlY7ohsf=wf1(}IfFis^z3LemEGxsUco)!x8V6GEu4}}3u{0jMQ*P9 z{P+K{k(Mq}3|M%dzhU3ijPKgCE#bR6m$l{*cD^mi7V<~84Z|OxnF|6~b>sl`8O;bQ z7J!4|yxZ`D*Jy9bq_bfUBcmqn!Yyp%qY}(z8OE>ZsVNFjUvDFn)5vrc*+4;Jxovj~ zh%NCh%|dcRs0(jpTu-6CTWM~jO?xVq!sWiL_pK^vLVfRE_U8U?0O{b5=c1K#v_f3&cF55>aTITO37NEi|-E zQ$|uD?ds8Q1lDW+|D(J84|~I8e~9ok4rP&84cC4_m*ii15i^ZEwRr!%4#Fwmlj%kn z0m>U>w>g3r5s1+S5x>F$<+oBbf5WZgTC#Ldy)pgSCDsvqK5jU~w&&67 zCAV#-|Lor@+<6@}8A04nF4S{5=MX7YwIZ;*E)n#|rONw*Mdp;^aA6ERb6>0@H zCKW9haG!)v-G2&)v!C2C&Br7*4QJpwVj6oGZOKL_ikpzgVfTdV_>fEqs2RkJJd)V594Z#JSxL5Ve{xE+EDc0nk$=S~eqTP&3&TObXh>gtQoQRx}?~~(><$rDEN!$bS=kaUlm0GeMTC{di~l*6*Fn& z2~}ZicH)In;9Af4aS6Gam7GA z*p~`2-=H;kU=5AAlh?7Ze7H6ej$Yh14jd%MY@{Jcnk`Gr+N`2X)ZCQ7{+0R-Jta2J6l!WPT|}cXk0Bwd zc2I23=Q_+KV-bClV0c+nOhCM-q@7|Twm}EkN&s#@dj)-Y3U5M!l8xBxeLmY#M>T(} z8zhe4g{+FP&Km~b)HVD^n0b1GV3cc8`X8oQ zWRgxxw@||UJ-Rs$^Jp{{oW^v>Wwp5H@(d-Hwg<=R$N`%jBfW@wI{SA}Sz$t}gQRdz zM#>-EAl1l?emU@Z^2z&JlW}kSfxw}}>gh`^)8ne$Y4QB4`lPt5^Zp+VIp0{B^)R;2 zwiNnn2b0fcXt%QWZ#T`Ecxv3P@^pIqncAPl{}GA;v?J57UdHe5G)AS(Jk=q(#B)WV z=F_xNlButcy7%}M!@@h#nJX8&3AOZ;pps8wG1Jozo}gsz6lW{}{ti;K@e*D|YU{IR zL7K*V7~~Z|jw4xb9*XkGLkE+X@xW0AJ|$@H4&zDrRk~xAIXtX&DGjb1F$)0!LASia z)`+SdDVDZJcu(A8_^yqGR3t{SZ_YptIu8bZAUYwy5F5AB$R%deO>~1@VN2Ko;QGX; zRA_Zea@T9r78hgnd;eX`0M_nV6CGqEk?cV;fX$=$eYej7JS*mtq1yEb)_gRq97U`y*tTrqKsQ zl6-@Ju!bc z@T+N!+yt-S+k7TNbzF{3{XZ&m;>>^B6|nQRdXo^-#w0&%pdqHc$1)kPG)T`^IZ&B3 zX~TaLFNt7`;8I>^3A*wFXpHDOj`blZ3J1@et-UERzB~uFbP<>rJr;)BbkuCKzUHc8x zzb<`(OQ@y80uGktXQHC~zeiH`4bj}D%u8oyu2E-?+BrEms(he-aYJ{yaWaUpGV5Cx zioMesNGj1CCCea884gmfPK{k_m5_&nE;|NK&u9$YBT<=aCG~LL#;7M z_L;t0sYwomnpS?^++y|hSW=XfZ)-*AY&E@nJo(pOdXd zCHr&HnF8>Z%&`^>({GdYB3RNGLdBM`@JTF2C-&P)Jse)B)F(OM&z#buM+3w(9=_ln zX;|^|DVSf=A_+Fj*E-I&8!{gL8xt6yL+bHUvdeD!OT4tF)n!G7elOX1uvHm`jVg&M zEuWJbb=1g!En{ zqYf)3<{eGhlI5IO_tG(;0&sIghWohrtO!+7`>AJc@t9=$3S4hQ8blx53RrELOD`vT zm7w|RC2owV99kHHNRHM}S<*&t|BfMJVCX4XsVNFM8ZzPx?Kf-Hs#_FVQWVsD zEJMe(t)#&^(C%m@OBLJ6FZds$HK?`8e8N9rm>$!3WJQ?3{E7brE(#ITt@G+p+_8b*ul#>7=p|Xb1n7E ze8|Ujc&D5yXEH!ICGz83O~#`MH@agedVV#8sNmKUJQCS?i#YBc{SWuIl~9c!=^4Xz zD=b)>KFHe}_pD)<-bUg!l$rgX=)59MwdlUuH8a|IeYQM-mpX*zF7Dp99#M0ygTc3QuB@;A+^CY zJ?ft-vaEy1gOh@k@CJ+3P#OXtp%*{~_W~)QAahmx+t}C?Xp1AI6S4ww_1C$aobXEt zjgo?!T<{)IV$U-hg+sd7mF`6n?IN^a#98~4P5|M8#eymmYTtS$A|U0icXT{8o68_{%9%0GIVOKIrDi#y2Wn+(!tzKQO0$W zQtBiZhRN5wn0Lf8@l)y9%jl3c+o*P#w2YlW#Ey`=H+23u?PUZlT#VWF{UjsTsQGr~ zIwQ#to&rb(K}a6bica7cQU~6ZXJm*75H-08AIv;m%&dIiVZSX;n%wiWgbVK4*?qMc z<+0x)_*1oLgD-)$!->HtM>O>8H(%%(ztPVgm4&MCb;n8?6w7{V`eDm|qw=?iYLrh) zwXOv5VI8ei1zK*|87Z#;EKzthhU51ml)<7CPH)R!P!9iKRORwlIMJGWIl7cH&CWI- zlW<(>#L#iRQmfyy>o`WlEic=FNaefN4rl$3WY=yBKu&{ci^9(SbmzPWlE*^Y^DLB{ zb7z~SxiyN{ewNUJ_V&y%09Cxzse5?%~@8{3k6pLR1wj#tGGEf*{ZJaKMh5hg32KF zd(y0K!Du?UeGjxV?!MbqacDKru6kA59;e~jq9fKfh{)i3EBc-_6c^AlY3%6C-GMTO zrMQ8#`#I)mYt=ky4~ZC))B$#5xyDRtjteH*WcatL5tj8kO%+#=D=d-CRMEyD{D5>6 zcGzoWy1;3QqL0*y2r_Jp>PXFy}mu-7D9@f$-GF3bD$2uB?5L=^a-uHN5?I zsnjtcne~`1E_V_y+0pOwm_tH|%ZqCqN?+5yRn$h_91bJ7@+SY6?3J}bMI5TmGaqv%omP5Rlv0QvVn-b>9ozc>fvv^>i#2i)}9ndZ}KJE~?ne71F zcJUswM+vOaIS51uq?JCYfWc^$J)+#;sP1OSl`5V`IXJzq4e;6WL3&_}t~diYcn`!y zAN;UQtn_mDQLV@zsG>;!yXbqlWe$u>ZM4Lw9DUdd#2a7>k@?n~2TIH~%bcWji>~$; z2H=c!ues~;T7QLmc3Eh~wLP{^Oik=rGez3TiMFGBd9b9vgZ(}z!Zdpr5SjO->TFdw zwg}XMHkcX*E;>2x?EMMA{c#IE9-g>IA?coo4u<~mV&+EorR(H0Dul4nB&|hEdmTLV zBzyFjN;`91-6igMU5{s{El?qm20rv1X~c7l6|?%N5WxXsuYGzF-EkkhrEyi$k?zc& zCx4_h*2QPoY}@7|WNn=@UTD7gWuIR-YZw>1P;ZQl7n`Th$=%{?4`JYxki4KcDa3?& z-T|PW1i~8bpqhWZq>)0MeP`s9cO)QSXf<%={?jHj2Lo}7)ev;>;=#AI z`r0?{$A}HjBk0)8=}LP@NK1qzdO!%Z&iX8Uw1OZe>*yBo;~VPtE`49vfR&F#U^F^s zdWm_5=S!rb!6qYA?M=zXpQ&evb}4*Ych0o6eAcKJT6=lS${uc{*oU^|hoQCYQMTZ# zBcE$;1B5JPF6MVa-_MF)Q(5yR0Y6O`27SZy?xno;V=aX#A5=0VBsYLTWSJ@A5aFxWBCEbBu37P`m?Q_Q>(t^4}F_cy@%x z3Tu2o5joyOJg%#U4M`B={U>T#i;Ii?AUMK*{r$@iG0v_7DZ+!-`3f@LPqerHQNnn2 zGW)m^YB?kojP8Vph}L_tqQikXH;}=&w?1Ph#9?;cJ^XHxLFFXDcq^Ijk>`r!Q6&zj= zA%vPGR3p2!z+)nm@}ph@d9T5&qRe}I8`luC0fU)D1hnH(XY7ij$n9#>kpj{b@s*1= ztajHdj^#T_6I+mW`A%c)+n0^x)VD|gu=g>_NX)A3v0hZgH%=Q{MCM0P=RJLQND_C* zgRP>_?n|61Q;-*(kmi&-ThIHmnR;%<4DY;N>6M%h?t0DBa2$TkS_2#V%-T<)A+RC) zNa1Xq%k9Vt7BE1&_QR&%4=}198%;d+g_BBeaAYkmK8eD5cG2AqLqEBi57OR?N2HF} z;XG&TM*{9nU!oFn68&;e**2W{{(!&gOqbR7}l_ZD<-< zix8KlLqD*!!HtZ@|H*Xae*g*fW1YVRPqkUx`9~DIcCYkFB@GFz958GElqi+Ac7HR1L2?r(|lmp98 z`LJWhY5pOf%tEpgtV5QN`66mFrZ4-UX33*NZ!MG$AMJ90b9*`G>Q8(l6*bTmhu(<` zJ_w1W9rP(`bw+~C6W%>wuB~>O6!Amp75n=1PUOf~`R2E(64PROILW&P-g4z0lG@yF zP|dC9_>@g2tm0 z1)V&#mP?B07q-d1)VsKhOkT>+Jv*=HYGGXLhRq@$E|e@^?CNYC4tf|H@l5Ws?~tJ6 zx#6b7Sl05_`s`NE)|yGarawOo-HsrJc%&Rcm5{4eR8%_$yRMa)#@8lyK;WrH2O%id zz+vK!V77JKe^nUFQ)cXmkXwbO0RP`qj)CCnofP%<)X( zB+>l_a$+k3Z)Gu;>bG}+6DD9G;$is=*Ysa=cpndbRnb!1lPJ%_UHb+m?YCWyK^mCQ zno|zX2T_AWj!9n3BjLlnKN%*Xueg)u+AC^Tp8jnM^3%&;5w z=Dp`~S9gnE`Ii3Jl@Zz0->t(w32A2E3PE;gc77exeD{NvYX^A1yrIctj(7;HN1ZVV z6JX4Mz)Js!5E0pd~#mI*wPGw3tX=Jta##@OUAui%!_=`j1EH01w<)rVMfG< zlywAq*tCCd7M}fl^nev31NH)~k*)92+IJSJ%yh@qRhPB2X9_2VgPRbGKap{iMP+}} zff0j3bi&&Kx+0q58ylW#aAZ277mC9x-8J}X>je=1>yG6eA@w|CjfbdY1 ziOLHDHXyurScH|AqesLi&APx&oQD%NVc5LRYU|zZRPBUsV~adq$I23Ox8vUsye$eg zm8BARb90?1ODI22PRFw{ti1We#7!)FNg0t#inSq!IVwM48KWJ(iY0QTs-aIBn{{o_ zL5JIo9P8Yf*}ho(CCs_57xV)C9VDX;n{5-{=dJ%S&SypbQx&O~*&SomI*3~|CIN?2 zl>-mU8PBS$xO==GY^L6k&4mnXOMpoZQ0O-NHE0d03hnF2&l$p(KvBYffl2topU}^w ziCV*zZsf&md_vTu6Alf&|Kb-#;wJq8qwirdxiac2_r7BTcV!-Gfe>Z#X~qZZr!WtX z=d$G%URJ{L zY3H;!Hp?u7S^;Yx(i~uf%x?FWnfWC!4;gY#u*7oL-6Y_KdSzAMmWY;B{R=lm|2m)S zVCAc>rG8;eU!ja*$DaeOwszC;gbMUYg`ye4JN3{us=dtI0f!5MA6zTSj$F23+hiT2Xtj2pb#39NSkP6F_@Edx&l<%nScSo&SjWJ zz^7loj(j-d&G6T)bpW!dXRCEAm4!0mBQ9`Oo%?!Jfp9I|z~A$jBCjat9g=EGJ? zE$;X3u^oJrCPcTZ`U0Q$BpT7J&0M5avvMuRAG~p}7F+pI~MOAiNDPGF+5$lp?uM<|6RB;cKGs`2f6X9KsVu zE-1D$eRwdD%z+KOA6D1fZLg?r<=a80C$7|1leoJ1c$3mtm_}s^ko+-k1v2zR1#7xh zCR*>ZOg(MZT8iOO30^1nwOM)1lE*RfoC>B%hBsUHpK5ET|JC&2dzG)0?E)wg3c{3z z-c<_Or!)!9Q-hXcVTuBp2$aI)5xHA6zR_{BxJHD+^vIF0U;WdxP!Kw&y46$O+gW z!b9H_*C&ER$DBzmD)?LF!DnL<{OgArgM%??{u7T1Z z*UMKA8|*%pl<|ygK?Cmg`#(h`8nvXGk>a7UqAPQ~yr?_U{Jx%*;n@&-?1^DNNj}P$ zM?@!ms5N;W?ZtE((@43_Y&&hwus>?rdV@;{T&2+K^Gy{eNlM1Ti|=-?;?OVL^Sc`Y z2IX2!f`s&=;FIcMLP9RzHAdcbQen5^7D*7B)!{2ce)G7uV|de;Xy!?eJb0UlZL8}R zKy<~PlhL|yTWE-}iAq2Q$Kn(8E&aIs@16#1-x9h93P=K_pC^$m2+{_~SN}=kcNz)X zwn~r($Lk8if6I~R(b7X&p|d~tCCV@Pn}j&|(^Kdz@7vtlhnl7H@Zt&Fka{Vc*T(Jj zVDD12@)5s)*=!XKz3(Ci{KE?&&%T()*LN2=ECBDxQf6oo=GNIAQvE}P^R3$kv`L-J ztN-iyilQUoHmHJHTJ*_eDg%|cSguG|(9L31tv&G%`cz_x+W%InBs=eGU5B-V z1D`;To&n{r&WNs4tM44&jxUInp6hRnV$N&vn?ccH_L33puk!r|%sgdY zJGWs}?WB064)5Z({CC=Myt7`khLoa5SDCe0FkAIa84@lwU_G?PW%@6}t=%8{z|x$@ z^b`w7X!yQ;jOw~|G}5ft4l_Ib+{Phl#TIO^M@XG=YWes-O=q$kQn*syR0f=^j>eXL z9?&B-&I*HrN#^C3_xp}|0WLK&C@m)b}1GZqc47DK++qJ7|zd36?S`+rr2P5I! z5Qwtwn>#nvy3vjZYnAr;#>e=&Mm?n^O#+)|pXwV4CRCO1&CMst(sW^67^mTgCmh5# zIT#>5;X4@jlwZDEzT7E*8WKTPo?H_I`^ zi51ug6EX0KMmIzM{H?R}`XYXE$>t!Z%d z3v{u9)uhK}9zC?c!SiWgTLdfvao&CLX4)cbaP|MubQXS1zVF+oK|&ZQAfTf}x;s8N z1e8=pNH@snZV-_M2hu4Z$mnhujiizzM+ws1_1t`4&+k9j?w$9p^E%Gsd>@X?E${zE zZjdNK@7pgLBj_0quAEPTP-N((xBpCiVBslf6mH-@83^`&0psk zG%{4el0a`E7T~0rBW9g5rzNJc-SBEiez|X}9MqpXERaI*p!Kkq{$X7U*h_x*KRjpK zt;pfKmRetyT*S>a`o7Gi`61b-Fgqa9kw@?5>YHF-rkMA;M9#-0$vX#L_tczpN}`$z z3Gc))Oqqs$8&L?oU(3qn$9}9%Rd5wJ=X-HOhY%$r!1?%jX_f+bGBv1N?76dlJ)n(H zrQW820_^hw&2tZ-*;>QB&TS6xyBA<{h()3MLbBX5jcYPEc2HcboZ~H$!zs*E-7qAY`p`jh%JeA0pu8Y_Gyg3dKVpL~*7L4zxHptPB(Z!G zZ0E6UR<2G8Ja6rGu9oRJ(!6h@=%*RoZ~K=ziFhq;E)EZez4mA%ay`7vWpP{ zpKx<<+?Lo3&9r{Z2ZoVkKc9aJ<|Wf56xGa!s+j2BE29LCQ~i?mp(mopyvhp$1}pbilk z9$Vu5FGw2K_u{v|NmMb#B+%*!37;n0;o9UIAZ*#gW6vJ2~GR;R;@>8XUoO z!@ov>vEJAIs|@!^a~{G@d1yVF6<^hxS0zTRX#iu$6%as@$Eyc>0jQJse#`MgDAe)G zY>2Y*BLD+|y{cQHN71iIbZV#) z1^>I(S@6LXQGCZs9V5N5ufS_iqp5l#4AcSQZK?1K^VpPqklxXd{?sK)3mve&lIb!ty!!*8xyyQ~*=( z3ce9APQ1UGZbt!oj)0dd-=Z}!uc0C3fmqRcHX8*j7i~=L0ShQqP|xp(krIzWEc&O} zXFg7w`2ozY)%Se&jeh(nx+TjhwMxYDc~qR#KJLAvNAG}A0O~||!iuCVxxxuAh^R7g zw00Q6b%MEcj+6zq;V=$j3@6DUWo#6ceB?ox$W~#4dz_qVUw@uS%0w!-RX)k!pq9I( z`&MyOxYF~~=i)@dXx3dh6Y1X2dPD3CefTr~XJn|QnHgW{SI|MrIE~5vPitY9_a%sI zFH0*)`<6_Kfh(!a)-0+y8rH;cYq(d#Cz4=0kx+tD#|^Im;BElY{!8`pDi>G_L9`=84#ljWLx6h;VViO65MUeb;l}w=oJID;Syf zU4;JPqhKb6akvHNQlI-oa#OEjeoVmz2J^J3@f4M>8Rr>@p42M9sC!Az(uSF{7%J(n1L4O#^X(J$p>Q|m=~5UHtOXP zg{KO=N;WBi)^_#E=PC6_#!o7dz&k%i-<`?j=c&y9EjCU^$PE_TdgWQwO4Bbi9*O#X!La!+vhbLvMW#Y)Ejh#1FazCI5aU zJCxoNp@COHsKD`H23%12G<$&Ro2J*7eFgn{Bm@WaW4*2KOst`R+)DcVK0L8SDn`rw zxf2c_%cu{h8P#uNDE{9_;99AW;%TN@=L_G*r6rhPd4D~B-ti3@b%w`-L9JDp7K8Je zCWgT&ftc~>`b@B#N$LASsSAjOIt*Du>7@tVu;gIZZRi<6ecZuXa))LnS-&JHf6Df-XTrBawbB8Ra< z`@4kc^PaaA(0`=R(`2b)@AQ*5YBNhvhzNF_lVftx)--sGQ2)6Dp&#IV@%}4{KkMU; z31bB}H%-6Q5@wc8Co-O)uzAdde^-cTL%L}>aE^VDB7(XjBs~Iig2#s<2KKPrFhx2b zX&Vp9gF4GIFoPjeTI11u)VZLxQ3cvYbf>3kJjSexE1aW?=_6 zMTeg}>>376xf^2z%VjQmFOBZGGcP%SXn!IGF(4McIdDW9X>=d43)Vy*HCMT7Usgg93U5^*!VpM+Xpjfxl5(aI7KBxw<-c7XxD5ra^{Km$Q^YPxrhSasNAk$${R#wAkF!Tx?W{Oqck6*u!}HE2$2E;* zu;(Jlv*hV{kEnwWgY`ASXSt99e)R`i^ZmsXDrTmMoW@N5V!ioAF#<3P5FeH5s0p+_ zHJL5hfx)~csr}%jaHT+~{{-&~u&;@Pn`FFlW%ztZ1Y`NhfGEx#_Q~M@4;9?C`s8mw z#=puw*TrqS;CokhCW848+ATjVNLH^~fk5;(unS%iv{ZE`1qv2;3P5mNzqm?t&AduE zdoy-dtaX}XaEhUxP}1Q^w+Wpg1rm6;+`t3x!osCOBlMC@u7X0$-S7WMV=N-IYx4d( zAb|CVuNJ%n^I}?eN7w3@(M4dWNA&xmJim70opveYPrS$b{(oKo0xuj?A`WEjF|@VY zw;h*S#?MQBW+S+I<@JA{&4^7QwjbrKOzBEe3YX}vxy9|5q1?P_qEWw?T6#wX3o0#^ zrINT(MqiWAkLN4crPa-5oJsB}G}|}p)Xf41JkZ!MAg;cL-w=sS+DqVyjcsn$cC;Lg z^pI=%F#~SpYJ(Zsh<-2Jhwt| zc1OqVhxa$9ESI{rIK-8=Oygs;&o+Tci?)h>g;|^&8iHn+{*5~|iv${9E_{mpF{o|H zZH&qVg_hE_SDKBra6*f-+$U6czCtp9tY%64# zfi8;?M))_lPoB&LW}jbymOMu^SM1~6U+Fa3?LHHoc6h83lekGYS4VNs7*33=3hvuz z5AT=H0n)Cr|C-}rVa5RkbmToG+18e+y`Mndw#5IpXE8AKNxU2lNxqc13o19_GG za$`nAudg-Ej%-QZ_U~c8=e`b2u5OJ{H9zXsX^8E>TOeK2hlj&Hm3~sho@Yf`quyw8 zsto>xf@TEYdJOvq<+Zj!M!S^g&)2bx&D%puD?if&^sBvHQXMmuj0zs*A8k%bSw6G` z%?#>aO5g~dT%pfhaxkvI@%V=OxYn=RPmFq@FJoUCXkB#Ht&Z#+t7c!j_{^1Ien}A7s zd@fRtASRj5!%4Rub#<@pSeL{OPDJMTak~9cJ^z~Y_!@JZ**;7`LzrC1N0e5Mgs&0V&nx;qEgN`eR zhWvH$D#ZHC@k(`C?60w^7qLk0Sg^kr21_D^Os>^B8^=gx zU9qDdx;EHy#vpMmsPTYH85x`{zbiZtM?!&?BlG$=c%mfSpLr<7TgEEfpIR^j^Jz5g z#TPTiP>M<-5#73>er&-HGfnY8A-$}KL)@*6jMD2qIrT`XoRT#L*#{}7)Gv|h61=5E z5U(dK{t-k_n>=T33mBcukMT_i@`t)-4Px9F!^qn5u3P??+%b-!&sByhF7eLvXA^3Y zk^kvl)V70L89W3(4;`eJge%Dog;c$j>6H$$j0ynlocn(XC&qOcGGhS-XfMDn&kt-U z_dq~Xkl5oLp1})#RS{aRhGIEjU-E~2AK{hMfZVMQcp&#i1^M)n)G5-$sOXD>z2`48 zAU*%Sw!GEz^QU&+VKBpJ8R2ErB z6d283H6F*^-1P@)L+8p7kmZZF!Q7c5R+JqcPprOS>%*QzcyB1o;h7#YDvdgBm}nZP z`=~wsr0|Z!-SR4`pDIP=j{_>>pIN;ld1|c4`wBaIH|bV=C~vq&q!Rm*?$8XFj9~3Q zpn#;8y}kWdz@C_*jpz8{%&J5J!V0~Zk`2FcD|RgY+y$VJ`($G@-zHP)lq@b930@@g z7(%VZvC~FL+Z4YwKe;qz3W2(Rkqjsamr|UyJFr<2fw})k^&I*E5HgGRwPB%6)t)Na z*i0TE<7n>!d(3%Wu%lU)6MzzM7qW`ijR`Fo@wjDp<@2{dItT$YOyS}CRN}J#=`7pq zpB^KVz*Rqd@7b)Du&*B{5c?Gey@H-fp5Jj#7mDXgpE8ocrz?&RD-mi#f5J*LMvN!I zc3WlUBR3T;e8`i1+>^{i`|g44q&Oo((D?DAW{>PVjO$(FMDE=$uqY*CAT1=O z2`l)`GV#hBW@)9eBXIC&(bCijb6Nk#DT%8eG+emzo@&Qeps!NaJgT>G){E4Ox6T{$ zzzetU1vTOtS|<=Jmt&==wb{p@uzJ-VJD@u@LU=ir7jU@sh@m&b8+j6t=VEzRro3(% zg%`tD`1uj)W`iE;FY$7%W;u`ygwB^$fUXif8CO`7R0(WjUT>YIOgC2$>dbiC)@zaB z<8z(VvrP#?H!eGYF0t2Bjw29ith;Lf;`=D4?8${pT{{-z%}X@}M>TP+aYWdGYO_e1(;itXs=7|lsRA$u8N-v2UDX#ixC9|BQ!tMy z&oRdJy{H>HN!;u{?K7`tnZwVUs=g!dtebyJyCfc8_6zP^60>LK-s+xXyr6>XR30A| z3Ch%*$2O;&Al}!>bYCA?wV0?bY0qVW-$zwR>=3lDgIkO9N+}4m@M?#mHcGbxfHoZY zMQyVRT9S2ZH+6eDS06Nyri}C9=J?$kY994@_EW;2?UQVF`3rJ6692me%*9IjmXD21 zJV|^LHsHzmt#iYJG4MmVy03JDTZ~(U6sbu(<|k#!6VJKirpu*lEq9l;#0VuCt}BFo zY%cuocL#8HeZ@0oHp4SM2?`%(#B1^iC=9Yz>2?ynq%H zcjvwR^Z1^IT2fL4tp!XwaUOQ5sd?2-92{|@Dd5td zyzEU>pMyz)R<%yQ|4+vuBY48ub{QdF-}WUxKH;;2@QK*FVS2W`VjiNbt8YE!s;|k3 z!^eIy?kZ+9yq+b&K@5ue@1;+guB2Ym@E}C7T-fU)D$lF_l4QN~Sdzj0Apl_lBnvof>NXI9Ii|h^ekV8j0azpOc5(g!ZD-sw{_z6l|3Rbz_ zV^IKVBWszLjKHE0D9p3y)^pq_8k3?%orDo3yd-W1M9@wBzgZS18jk26ED;Kt#pc zB(CMUIfvCLeMie*@h(-qrNNcpDs{?SMuG`GeY2}V^)>of#)q4w@Y}q--Jj?(an81w zBG&NVCtvMfpz@zL;R#(}e8{Sj9F$4Z90}o@tYA#fYMf596#~Sog7c@f@?Xa#;~4lD zPMQW7N?R=^tNsXh9sKgSJ&ia{N|T4at>}j5Ewua)6uEE2ew*}%_U*tE)|$giYQmOj zO)vy)cUYrDVFdAD9!GAhj`|YD6N(iTqnn%3%wKn-&0X|N=++-3)3uJY!{&1DSW5Vy zLcS72t=ACa>FCc&fY)JEFe;Jf;W%2)aco zd0>~Y2d{QIum_=zyzf6biXI6=hXEgZ$Zq8HdwF$phF_83aDZHm3WIOg5AWUb)$y|lo*Dr_^ z^^fQ(c|Oxv{kcU6l@@q%4qQibJSsPl{x58jHh<`p5BJtckCg%i}nhCT!v#^j+u~j(SWDznwo^P+0S+%ufNtj6&d4@ibVyk#RP$e-5UJ z>ZkLp^=R)Xj$iK&w%Cdc-e+HOO!1t4mCp-_3Z`#yp-FiBXNS;_4NO!Sg*s0;|Bz}G zBzOc|)$uWyOtV}i;jHFy>G@Z={nn;>noP{4eI7EKzel)%RcHU;=Zns~n50b-I%W|< zxzO0X6y!g*dg&E4sK0EHF@J0)pa(?s3xF;k9fP9z=%k zFn>?M<>t|N&A0(bsA2Cf(R-Mv#w>0y=lo^L>)E%*_&a_fr5_bU6AO?;l`_$ok7G`k zxyHT^s8*IVp)nKq%`5jEWax=#VjDi6>=#7PRt`IO3k=@PRY-ccOHQbXY@y=u6w;GglRGI@Nw?$?f6|Px9Rh~bCgxgf zXRbdLkl0MND?$;oG-4>}+4UFttld?gWTImBeF0n)8Qcealya_QpltYdXX}*Pxq{}W z9@{CcGy8z;x47R$WWiBQ(YvxvB<`HKya&V;1`w;}7eAPkM+2?koB2!hld+ga$n}a= zgQ@w5#XD0qW=E0Df5j||?EVfSo$Cs`2_Cw(p~D;P&aO2aV1a}h4+&HtuSRo2R!zZb z+L{elrIpmL%@2wYpGYON`$C+-1Qj-#Y)MUkH)Fg4R%H45WwL>(=n^_#x;o92r{9F8 z25#|X-6)Qh6c}psb#mR7$T+L@@`zL?cr*?D=i4CQ98(vn%Qn$A;w~Yv?w!MapeCOv zSn*%a52}-28>(Y?gXqfSHCzLf7pn{5?Jk9xR9ZlqjRE zO!A>w500EUY4LwCKe4WMIxCWQ$uC)&=<(xO4_lunry!dMs?PmOWo6Q`B5CW&A}LN= zZ*M}MZ=AMWt7owLz*+z^ll+>l%AlkpCG7_xE4fkOaZZdjmW9IMAn=$PHWRj@1bagG zAiv@l2s_OZZ0s?}B$gYUpk}1|SX5RP+to*D41S+_B4x{*Lt*>smT(Az1@qWlI_tW4{%OtufWfnGwzUKx4ve~vt9D{Rmyseh zYF1Fhh@v16V6QO=i;&8dff3bo1b7NoMh{Zmp3#}3Jza;Cq<$b~J-{v`R>VB!QQUPV z04PxCqn5P#-{P{SNPP#6WbXh3!b9yPldh{99G73f^V!!WGK?f|zM##u zhKh7+Ls-z;N#U^1x1xDorA!~+_X>e#(%jJNh>zm@gL2Q*g8NDG|7pC-?Laa7gi^-r z%3@i_odoPv)ayz)6PEI#;$qIXwY1d|gWq4pJk?CF_XMO^)0q@CzrMX*4M1FJtDZeK z28M10m3U5hA1zOpu_nLU%!~VL_{R_YnVp+K~;Oj73J2w z$l^EBgL5o zim53h+asY5(0wYn?7O==xAbtxmx$?K6H|B%3%{B$qzVz9Ub~rJyz4!?h{4B|WWSaX zS8kowwx7L;7~{AZMLXBR?}+9Bv3bK=4JS%Q0{?jBV~n@$a0fZpjXtz*O;3jucIZtC z!@N`AqMaAcC#lbao|@|1Sqy~`nZzUR7K;bb=d}nUO1ol7>edr_7|7|z_P)~e7az;( zm6J;T%}mY;n~VTdW7}spoN*XbntN&rb59WCrUa2VMUy^n-QAGuypa*S6|zRpQ3(5> zkwVved@+7@Su-6XoV7C&^Gn7vZs2LMDgr@ye0MEY$64G3DdCOyn{jBBN#`^rq&9c} z%OP6#6Qrruk=liU;I7J~W2R>@m5tlxhxg5bDMpdQiN-y5XkSyJ$8nASnY|R^X~xA;coy5&>P2_4D*qFDNaCu zGe7M1#EF4AAZs5uS*hk&JXl;Y8aXyKuK#yfk`=u^MeQI$rj+MMnraIEOP*>ZTJPJ; zmqsD?=r^!^!~5Gb#d4!gXrq30l5w_kST!`!G?Vs_c-^6PXkg%->hyCTgk3q~0gK4y ziEZen1k+1!7xZ-ACM>)Lhs~sENyeT(1P!c5M<5mz9PU1cCSMA<#@ScANX)>K0hHKr zvN$&*I&-|STfSAf{Oj{Cp1Sx$x|pd(Mu+~iboyWyYQBu2%a6~kZvJ7Oki!!)J08J~ z7$$`o=%X%_H5U5>Dn*=6Nn9+o669jw+d@~(3m5h6MT`rk;ZH$Q@TyA ziP}$1xg9hFuyB~#dL;kuTzw&c$QGVL0<-q)8t*7NyJr<0OWNJQpK43AZ)}|f-MLQ@ zqCrt=&h0^P$7;MFNzz)vQb~|B6GbL>K9MhQc9e2rbmBR{u+99Z6MSuMAC3FEp|AMc zv<2P9Zk)V#Ih+0b`ynTHwt~&4{2CCo(?wEd`+5Bc@8MH+=|ff1#ZQ+ON7CbVzR!}P zS21+Z2^LmR)o$j@Lg#xt?IfHZxJEl8OmC(*eH*^zvki)}T3 zjdi?qLvXzA_nUK-o}TV&kvil32xkv)UWH)>{+#%4V8*aFBLOYbsvx`*|G{ku|V_$JVC!J)XU7< zaU2{dE-ipYxt1ap*SCBLj^E5+2_9wATuUiKY~fLr7WmoCzGsjlniw?wIDVX%AvD|B z-zV`VAAXcLBbIz3<(`W$`e)S63FZ#+od-ng=IRM&Nhdw7=yN92CHWEr)HvkL%JBLF z`C3RCL1X&7=i0DgFUh~0wB_CR&tLjD7Fy%C$=049Fd^mwa;7R-smml5(Erx*ZqCu< zf=)$SeuaZ~Y)J%eHYI!BNQE@DCzpBQQjxTW4pH1~aosI<@$Zs|oSgIB3lUouglb4) zHyuU$Z;~4M*a!Mc&QR`ab;Q<3P$Q+-V_=fV;!xLJ^GtAU+Rw4&$#fASFvc4LSQbow z8~&G1jDjegd$6+v!3uV9KN084V@Ktxzfx&-Pt&=33%Vq#t8gM?d!=DbfY&DFirRQTuZk=hIl+RlAMGTWj+N*c_7156T(RakvCOS{~Rs)7xr~TxD zFXR{Z9w@W^%b`38ebSs3H=U^3L~~Ia(%8g5A6q2n>{X~0b|`r4&-4HpoH9n1k>@C@V-!P zPl_N}EBfy4tr?p!x3slkoT)*bZBlf^`y5p!?$-Q%>P0-XpxqO$tt`{ihZJA$Eg znpG~fAPE6L!DP)AWvMjN%mY8)r#3}~m)q~!9XqgtW3+_#f_0;5aRg)%5CPm^UhLMO z7=B(P9AyB`?On%H-N@(BtQv3ZU1QV>#4{C4-2QFd8Q`mU1h?ZuOyR4u{Yhpj8r zxNO}qz98@zwP2DvSXwP+-CFs+GH&9C^aApFh4>Z*<)((~r2x?z0#JYH?>AmU$Mu}l zP3heMC}F$0a2D3Z6xH>Hdy*wj@R85~)6iFA&AZ^}ZiSHxF=_1$nFiczF8`F!P)x-e zykjE=xQ5J|l6r~`WW7<R~uWK=k*?hCOHUsrN`mNkmR@HvsTT5V1b>B82@W?sKz?R7OjR z^vPp@M=>C4x?F4h*(oJXeU$Mg4P}o<8qTFQ>G@H^P4MlmUve~{nbC10y3e%FnBP>4 z*21^ZRH)BGq^wFG^@GBc!e~cv+PdVK>N?rJs*;mF2JV0W5JR(-{;k_r(GLc1ewA~Q z;*)K(nO4G9>39RZv=*N`H;%(F}$yRBpp4f)P z%aCGcC|X$H7^zv=c-CGlWh@s<%K9%pihmi9?N+c+!j&aPYjU599m#`xr~UqxV1m%0 z`|g$XGVvAoh}FaYDdT2mgp&HuzeS9<2O>n*?TS$&%4NgK5pT71DjcbPO~=4ok$QXL z{Jtg3S8+xVmkVB$uH=gR`5n&AT@Lu@xl=JhCd~;}H>%0|ofP{gvRDry;^O*gxMDv) z<5_E8FV#+QA`VHLl*XhULP7)D_m?L#ako2rc_Yt)b*VHy1c$|Ucm#{i!Cu|tm>V;1@t&*dW#nT9Vlm8+Wr18!?(1An^K zBi|Tv!IiUxW{T9f2R&=4amf?iw!U zyWrb^<_7-1fR*lRt@*(MOW#>!m6YOr<8d&x9;2nEAmSvtISpHH%Nd1%Wc97JzUab$gB_N>!CVc0IBUrq5TS7-=6}e$;7E%WwKaaMG z%h%_62sNQuzC3?8PK)VmpH;LurxSTHeJ1&NOP2R);W)setcp}?vL0Hi1=T6q8idCd zeISo%AlmdqNT@;swI)*^UAKE)7Zz=SVaxeZ_4n!siSgQVCY2kh6`S+s-x z#^-FIVkMPgBG632P&c&l_i_Msn_I8&;`T?@>Hc289Vzpl zU_6lMQ)R&_yKqNWeSbsF$u|7M?eb$y17!~8yEIjOK8-NoBt%I32QBaETny}$2jb+f zP^dE!XeOhiP`1X+)|fnGmK}zsA}UuuA$EpLH|!yrp3N}_d`0kRPHsR?1z_LXDLrKn zauZ>O$2(o@sFoj=xPNbZK21&p6QE3%2IB^U5+*6W_Br$>n*F^oy6Uj80;$2GBLOMyEez|HM`#qG-hjRAY$DSqy)H=%SB14_Ts_Bs zQ(pIsI@~9E&2(mHZrO58-Ug#ot2hrlmsrs$n*;j*^uNWj$qYMnBt^+uz23!>YrPbE zQ|lD}eWjfp`_fA;bF~R=L6z<8m(%q&%^04TVF-%*?$5jBomI}CRL@8~PH!Vwal)@a zBp6NR%jNZE5+?d)A@Qyi`#jb^LsDYVswrV3*T`&s$1D%zsM!sJe&b$DDVdv-eOs2v zT61s>9OuR08-NCB3ZyF@szO&%t+Pyfqg^82B*TkbsRrM877J zj}Pi%17q6zmQUvl^VPD!mr!VX+@cuoQaO37a(5`Z!UyS46y!)|zI%wfYAuZq7pOv? zP<;*m&s_1uk~oIE`c zPV(YddHh1~z+l@R{pdm)l0^l#<|_)l$hG6SVQ~bABPyWOmu$?KA|p{P7e0VNw4Vay z|FX%mtkXNHLHX~nQDz|~Q)K^plr)<}{c*pLw&iMeipUf&y(vzi=%C1N{hhcrlxX>r z^_S1$oRBVLkqSP|&(I9Jh!+b*T7!=`L|*^Q_9M7wvHxrzmRT;DiQQ!bx+L~WcKc~> zNvkmXf_^xxFkuR-%$e<+-ka&*MNrbWqrpHKv);evx;MRAku>?t(V4-dOTPhS$3id& zZ|ey-evPArj-EFeLu_}$ILN+dtu@zNA8s3NlrT@m&DKyy+Dm<4JhZ%UC6ZKoMO?|Z zN<81GoazsWm;R!&oEbNei^w*C3$jB-WGiJTd#NLGl}}}>#g<^);I`>QuAHLwXIk_{ zr_}xKG5I}StCcegmGttYId&}Z9AFxg*A>h`%^C1@QScF6MFN8DN7cQoO2g6XrQZIp zFMup#PqWl~2WQJ>lSOuEzS3s&&#iYlGH;A!hwXWYU%1NYsH|NawQ(GcahcyF23C2Bi_c70q)lep-8r}w>tKcBwcem7-JKGtJgqeHS5je;}-!?NLF|BHLh-Z9FjaKE6#AVjT$b> z_v)4uRl8?VUv99H_r{6N!_ZqB(rXqgW)gL#*l?G*esxn4J|CO8Uv7|XZ8E*@kdmj# zKKA_=FIFMeepJ6=iou_XS?W>>V!y`CH!6~&-j4QRv@Nl*3%bnbr@cnr9RVx>ct35> zvAP)-?OLZzsJ-tg$*8i$y8awtkeH+g^DOZ-b8NIe>Q<&{vO6I-U05)tHnN{=2wBf* z3!hm=ndH~^zSAjAE}Iq1x-4pN1vUP1*x5o6xL&rC3f5fi-O*s9&9Ux43;cHXG>dgM z2MOOGd7O1ymoiRPL!8G9L&)Tm4qCf2An zabx>B*#+Fh)Fd`p9zf*)g*@F!$>CwT^Z>W7DVCs_Kwb?OSy;i3eh}o6G2LH1OVPZG z_*g?ra}bNJX6sqpSF>vPv$weY)A5c!24Zn-^QSXZWj6<21cO{waN5Oeiv5Ro=&A z_yTY^np`SCLfe+qA*Zj#cu0&W%<_pG7MbH({;EPJWP_yAG3a<6_VfXhcDWqJw4xA8 z2A9d|*s~go;v6-PD&8=eK2|`kBCh0H$f2!7tR*#N&jhjfr>sx|IXpn5yb=DJv z#A}sxOHvpYY_kc)jRGp=1b*S)8FR=>1&60RH_?X?OOlR{`pz30 zctk(TT$my)l75V$PminV=v^RMu%<0Uc(Z1`pGI$U#xGJHTjzqQVZGheP7t^qvY~Aw4;{3#x1tGC3JZC{Rb^|dubB4qZ6xbQK8(zU+p2J z8`!Gm8aKWDOcQ$V<4SVYE%<`TuDaRezKgjcyz9rFpww##oHokwRv9wEI{V1Y*nprJ zQ9u9R%Z^9J7V(sDbd_<%iw_@Ij2`HCvuK-=0oC zL<{6EtU_xAdS{SddO&+VhtEYc55|8fCY03w5>mP!r`(5iv zXS#_iMkMzoKR$a^g5Y5@jix^zh-P^IiI$x)eAg%aXg1)^xj2}8fmx?rCf7yz&hJqS zjaF?2tG6m&(P*n9Wz1$EJ2+WHvW1g=A06S%yl6FJEy$r)(K7Tq`E~h@)LDsd;YsU# zU+tfEWZHkweU`r3-bDRiWgM1YI8Vtrn+4j2=S1<2OH^k?`D~l#L}QMW58?+{x3rqK zmqPd8yShDPe?-^*j4+6Khko{tShhi2Q8*R(u0f#Loh?Mi9M>t!~N=-^3iDg8xbR`~Tm~cEYcWAF z9nNDgLeEJ>KUJkkox3d`&D%#@C<{2nRXnj_$ObYZZoGji)4IZzXAYi2#~XqJ6#g{I z60XfAGoCI!yI-dceR)ld)nPxDVlE!@`*&Pf(D5`idr%l|RYdiNq6X|}A0ktl_uC{N zpx$8&9=aosM^pGihoe40U5(JRZ`pPqdqZxBGnR(Tawdz)(Z#Tqa&msY!c27oj}2 z`ZSJ~0tD|tz4@`9dlZ{4hxc#+8`+Og_)qBLL^yzzt^;;-!U5JaAF!YrE3x(SqRgHz zX0`i2)n{KxHb67f7cq1By4@2W@}B(={r2;Q8U>zgkg@04{1wS@oGQ9gii6EWlJjiL zpA-<62p=hnxQsJg{L;%~1~Y5MKey9SshRZ5Ru%FS51FDyCLmr?NnJG`t<2uNSntvP zf@lLK0cKw+`(JplZccVip}Ma}p4u-i4JfW$2B7ps5N1pI;S0K=z1l=gU)8YN2nN^3 z>0IBpDMD|#fOhc9fS2z=a5;G=b*}&Mge`!+xt5x1j5%JKjy#K6~Fkc=#^ysRVyE}@%*3{>!bG7rx`(^x5=((r(OTGS>M#7 zHzGv*c516`XM8w zHlB8}AB=U4%=MQt?E5keg$=U+AOC+Ksf(9Lz$B(}sq%FpSe!r4xSI!ASa~p$$zLAJ zamdEUY&R&?JOSVN-bUNdwgAM2n|)xIYc_=IsI}R@ZilOe+nTdf2=W<2kF$`HaoNWF zyWff{Dw_N4tl)O%20I1|RFW+j|NRMN^UQ6T*09jneO=(pJv&V|e&!_-=isQQlFZ*b zYVi^O%HWf?ytGlO2h_bT{OMbX3H}fOFvAC!G9jNIh};FL^gw#?5U}~ITM7O(l4^C% ztY+x5hC4m^QD+r7`@fis`xHDpr0dAVG^iPmE%K|R`Qi5wb9dhzQAws0NKlaS@J_zKk|3M;^;)F3@ym(>qJ15Oqq6yf`rj>0oSW1A0S z*1u~wv=GdJKm*+)6f}}+>|a43Tjqb1NGfp42G}_C(r<9-lesYN((Spb3sNT>*O(Q| z@lF)QDqwkXrh^cU1H7KJrW7*!_l3@@JyW3-{*}X{I#hCfQ;j1is|RtI%dC zU8w7>^}WA{_2Av}9SvC2^4m&<{i0Ct#y4auu9HE8?P+Zn@p3hx$vOFx_ZZfR$XB>d zP7w+@!rY$=dJfz%pBj{0X?*Y3V?A(tzM}~f!QuYQ9kslGC03_<+9nTAcx!^S4sXTL z)y0@gMqXfv)#ALSl0%cbN}!0V&2N@u=2mfkx8vLyVo1MLA+6ASUi0G1DA7`d*(5%Z z!pMtYYa-KRGy3fEmqCwN50X4b)L&K-aNc$K2RAWzwXor<>_fKBPV4gXD@I1Ww@WzU8vp?t5 zRDNcdMR3=(y9~u7OWu|l{7CW4J*3i0+Fl{QwVvZD!rzs8Ex{L3yZ6DJl%d*}9zgA=GtTUDguNeW~crA*c;h@Kc$CtKJXsO(Hti!6Z>Qt41~c zO^CL%(I8zYP0`jI;wlmmutI-6g#(1+Alm-UUUN<7k1`0pf})+WH|Myr>KnISXijqM zRktA!+4!qQfOv~UakrVG{m(7ORYg@_>f1gzv)#D7j%sn3Ev6p*r8#nb|zWfvQFBNbL&sbS#ROZ!Ffo z?I`0Adjs)sex&e`p(CW+EIwLh&g6AI%c@%4?}g-w9d&eMKg$qZ;J4$WX1wD?A45o1 zr@XJe3H2IwMGZ=GDlJkzgtV_ptSyF?WWy|rOR;&?@lzG$l#Y25kY)_%KS+!BIRxW* zC>n~Dp2TL1hVI*NbVqd70)NPlY~^Ftr4Q%gg;;N)!r2EAxO>&D<*Bv>G^Q&jrNMLL zvD=URD2@rzw(*SHU1wl4Smi}q_i*E*7{AUa&MQXb=ae`+BQkgxe_WdpD%6q1$((9V z0Sbu4t$d_CAxGkD5xv9uf382JqpadW3|kF+7ErdNw~dZ{qs1Sra~zn#g&4lYTbJ8S zyuoQbs&bO1jQ@|OvyO`TecnFZ;nGOS(nu?veq1C4iKRQGyIZ+Fop&V45l^xXIUeDZNPir>tetiIYaa;D2Lsl- zHDf9*|9nMpx9hqDL|H3}{mSCPl(8I@ub9_MU5U2(GKh5CUt5w4l_u`KqegtF^1-U& zYdp9!_5l5BQk8G>44zN;7R3fjmu>}O+Ge38?I@Wt=gk2l^;W~A+t(ktR^2aljmsC} zQW}wxs;2`PXm9ioNrC?a7uwk7+!(Z36|1&(+S|$OR=F;At$PF6wDJwqS(fU{;urSs zJQmvCGOpnSe;|?UZ@t*aCN*<_;l8-Fkg)Crlf&*>mb%khwBH&; zm*^;@M$>*#PZ?zpCwu>=$u5ZR5Uz|%p?FnR?_gfPmlt--QO`?1DvqH9ZtQhwK4Ru9sE3n}%>{VHAgvWYw6%w1sLsBBJYKZ!GOOp!4(XRz3gKd$QHwbYs61V~D{1Q9t`MA63O87zt}n(sLLc`xak-P6{aJ@P94^JOz0OSd$JudNSV zH8SD{Z1*!nC(*e-Dyw&&aOcAYEZ11dC_9s6Fr*9FHGP5w;Du4I>91E+( zHBKGW0y7AI!KJynFulX__Tqa{eEA~FGXhOCZuvX7qT&dYVk;#qDq|9iO9;O{5Jk*< zTMwy?jCwAgHx;A)sW;9qL`*Syn+{r45M`fd$ARwEhJkL33C5d)@4M<+l_)5KtXraK zoO9mHMausQce}Zdv~2k~p4|?wI3N{xcCn7IljzqCP97M>XeUB-?8rCVRu>sW&!jt|m|&a#5x5Ld1NzOb4xvfp27^g}_Q>wwR;h zKX|Hm>l|H(vE~_fxk0YnJbl{MOdn@9=wRgI?LL5?F_mWuNWRpzW~6A!(3I2X`cr{% zLm#NfKK5wrKtGK8xmRyZd)r{X$6xpRI+yG`j9B?=vHVb@o%9*MOJZ4bYzgI=r$tb` z34I;!=j(@%Lh}ADtLqG>nF?)Vd^g zBTEM9ua^{D%6>IIN@>PU{BnJM79iG5+JQ0g67U6R&$@EpZe1r+#Cy{*|NF&9V zYJ&G`7!iD&U|tYHy_sOQ>Hu2idy5bZpFhQ;SJ)p1Ie!rAHQ!hk{aSCgilMwSGx_VE zEKEgXeB*W?L+#i&*V5)uQfjbT+DT`6F6HS(?+2t|Sp8d|mZIKwQG8=^*j0y6;~6}D z))n8e=HQF!waNlI93wRc|J%%QC@?#gba~yRkoLP=MNRL`;iRTQzm0c$w|!wB%Da&A zvfqs|4VZ2NI3;W!Ke=+SwrUlFb`xNZ(NT&w;zEpqmH0)hP;*Vj-tsx+Yem^t#91Ph z8)uS!5pSB#vT@fYc<}x>;GyW%JGRyU*0f!K3Bd8(BrfO*=LAwt0BmSI^?Y7j$6B993Zn8@Jb<|57s|G*v zlXth+&M{F0u>_gWQG9Qdn}vvmrq9hI)rJWtnorYbZnF9xmUIkthTB)k*sRADf7i@k zMHI%0y+Z`b@a>m+Me*_E-Qo}GzOnni2flGFm6<=s=XhPpdEF~PJYC@4uQh2FT7mS9 z!`COqm|#VVBTE7ZwBx3IWnhTHKfqG)U>kdRbw4eBa9D^aC2qG<$65 z_3OJRb&MBejap=XcF1|NC+TG%T5cly>(Wqc(TxnZV~I;3!2bO9^2M}6 zB;U&LD%Jf)8$xW}>kZ7YGs+<3geDR4uBmX_O#dbn>dMc$vKxp3pSK_vM!)w1eWKG! zxnAAh-sR@EI(}2?DfRkWwb{BS$GSDjUAZjv>hNr*Wg&4I4I7 z^>|+G@l!*3$QAaw*C?^lQZ>e8QyP>m6YW|$5%O~9y=hfYvtVRfoqS&_@<6xc6(oL% zy1=`d@sN>(yY+}t-VjO!vDtv+=lj&^nU1iuKT1+b!t)I7SQ6hq{VIAst>KVwF%y z(T5%-og=oXKCG^+sMow1UzA-FRt|ZFqOPGqE$m3!8MzVA?hNemReqlEP2;`{F5g?p z5-bRXR*@IR!-s|t5#lJ9d@^$fZS#@+24!xj_^@9;0teJTsGp znqaQ3h2DDQzdGTPX8nYlFK1Gch~6DH?Pm%$tv}9P8SvuZGh4(Lav6y{xbt<8iE+VS zB8E$v#{VW+)x9h;EJ1%WZVo+Wa}FtOq<-}%K)OPDxLlWi=-^HY;&Y?Sp?4^kSl?DI zY-a*pKkFld?}a`+BxeacpG!U2mN6t2N^LR=iTu8gmcZmb(_6p}}$b zDAFI&s0pv9Jhw0~FzD#8p2Cm{PBjipZ{BZ;JsB3~oeT~9ceMc^TTlL+m0=B_jAe?M zgnjj>Gb3;1GgAi*OBS^$terO{7_Zo?DeK>caA;L>o9up?&~855h|P7=a}umE=lEFB9h;igl4Qa8P%Q3_cB5_3wUgo zlrxAL3~YE=Q$ANRlQ`Iw#r4xMW(!YqCHn`D4ES$LIkK&7(mu1)fuP6Dnd`77YN)d8 z-lq_aRTk@S0JB{PaYN0Iq1oZ9y@(59tNC#jw8EXELuN)iSQaV)D!Wz*6^r6W_QO~P zDSxUR<93!F*RPSCRX***0`O`CSXXzi@NA4EKbOb=0Pc|Dl7j5wZ6#BxYLdfmrCXlxd1^$vQiuj2({ZiF zI8(SJH6>-L#L43xW9~bmgUh4Uhr-C;!BmYZi~e8M5hj3-MnJXHV1I?as=HCmpi4RR zJD&)W~@*j7J-MyKlQ(Sb( z7c_rLGai#$v}c`^sP#k3I)+0B=B(**>6b>|U!_g5Y@RVQZ4dLj73#+EJg<8-G5PhQ z?jUa^{b6lsW247UZ7u#GLhLdljbe=XsXAk&t!9B5w8qb1intK%C0pc{~-KJeaY$5&i z6hk#gEb5C?6|E$>2K{CTJB-F7*> z<0th9ZjOT>QmyoBWqIviB&{3Mr zP>9?lmVy2eZ^co;SuJkGsL(4>6SDOP@2YW%NDgn3O>G?3>x$<@mfCPzXA) z^%?prF=&+xy!zZu1Lzg*1|2UsB(}EJK@S%X1|rf%s?oHyeAE-NEDD(}LL{H;pc!5E z*~R$5$jXo#E3TiCetjQ~37h^R2W7Sx_c|}W|K=M?QM2hkwi(v=<$}1q?c5KOUoQ3V z8)C43;kEJf^Xexg2Ws5M0B=WXtHNwXN4?aQ?tuLbp6cGBA$kL z&i0OWOjB?r$Hp}#Kaaa-wSU;!H1zQp15aD)$e=YWDd|}Toe^*O#yafj2M?0N#EN0| z4QAc$-xHL_5>>G%z|*Mg5oXG9AgXDcT>86qx;NjF;eqY3v4hl61*gU%?=03YI_4(n zt?%kjbT57y@Hu^OVi}qrEtO&2{J;k6Dx)%t``o|~%e%1ru%>-HF-;?*V}SE5D0$jW^_=B#-w}IvY}?%{m*BYf%&|9- z5p>F~)pcZr#l|WvR5+qwFBum?GXY%sWb=FCXpSsCr&fu)rY0Gf^UMRJ*9W@BGZ!am z=S&2Bg`piCADRf|B?;;4Bius)R`p#kKUrD0AsPYJ0NPkE9nu&njFiTu_^f9VRw_+5 z^P>?Nq0y!LCa9Ri!7C2sO2q2Kj^WiWUt;-T#kuO7XX(OLYAn(SA#>4jUUXQkdO0-(PnX%=*gp=H3NQ zbDW#++a;dtOuES{NcAV(H6P~ZEl0=1pk^lVIoVw-PiEfxFe=Zo+!)}|V$@Nr&|aHS zoS1Mf#Mfs{cEKh*DiR#JE(PadJ^$UynM9nm&U5);T220=9D1#b8@Dk$m^M<)19eUJ zaN|c^oi)FB=Zow166LTIes|!zbH%uXH59KRs|-gvW}t3K$>IRBsOHiT8z&wf9$6fC zCO4FhpN4lM!n99NMiowo&?$Tv*$9Yx;*O_NhUk^GfaF6RP44SU*biQ%jpQb$jeM*n zYV-Hf-N2x5^u}g-H1l+)4C#F?Dx35gQ;H2~t_2s?F={;H{{nYO!)Z1~&sq7;U7esNJHxQg>AB3)v5vpo>?z+q=Kp z1WJ&p9#vo-Hcdy=+k@g{3NNbRlCq7G=iX_uUIR=fcF3aig^E3&cg>~m)VBxy!mCgj1Er0-}6-2^!%r|kz|NR1E*7;azh%Y#iE(P&s5_!8wk89WZ?B^ zBeC*K0vK(8FXg`k;6IAV%Ty|xJTc~~< z<|4|vy$OCI^S(x-T1EB!MO-U=YBe-4fKtHkRA4+<3tjd-YZ01pX+nSKqc@yO9WG-X zM506L%-Q&UTdIsZ?%mPGO6k5E4GFF@PkSp}@J}J^(6(wcUif|N$|EhZrFHxB`KW14 z{OBmM3thv)ZN}nKLRMQx%!)1{BU`IUt?>X0ZWE5E7^RwprCOGNA2+)zJH$SdZAMgRWcUN z%oDm_FgUg~>waTc3IlA7338PfB>{zM1UvDYt#b<ucpSd=bBF}HT&ldxk>%2K|enp?# z6CG=CM{j0;tJ;yhB0B3wl>FZA8Ixvv3^HJ1GD-$+Z4#qB<+Z-bFDsCRG7&3ZR~!=E zN0{bbXr(nKHT1eS6?L+2Yhwl_uEM&2!uh*LYffEoG&`qep|jYIQNkaT`v1Ph4yFTX z!4i%o*}gh|uhRVWEJYKcn@y58$hh)Nvr$pAXf`T##xt+?C9i<{F=tt}$i6Q8uC!t! zu+GGRBrvuS5=i3xxH?1#@2#V(LK7JZ)Z(JH>~lG(3ohljB>g_`u0mLPv+P=BNwX}O zDLE@k?F?E<#fp?K{xTz z?e<++Oo(!T@BaF%oPqJp_m0mu)FHOr>n*m3$o29dPB%$@P1Nya?R}dMq?G|%BATWwlJOlLF0rb+~d>OVKR4dez_q>+< zEY>Z@15e@GljZHVUD2e|G1pU7mP)$-Ei$8{IxiRluGI*HBaN7~hu+Qpg)I5Gfx&HM z&dEOau1`boRm? z;b{%A)|8Z#`DcuK%UhMgDKX-b?e5`j;s&E9Dm+_0Y@j=8`h16zq&;K!=;aL>rqmlV z3|6+G1p^oFiCB4i5Jf+EragWC9`TZak zmTMuS_$dI=JkGjr_}}K?WhhnB2pd%$>sOMTs8f`-irb_%l(t7nE>sM8RLU?D@~SPD zwG~x+`&}PmsY{bOjVJ($ZSm{~!@Uw^0iPG_hNvFW6i>9DpLP`cZ?j^RbmYk+&7NDM zpec8G=TWe{is>VQXJ(|n_|r-L+epQ{7)FoVz|jO&I7-W0!F5sLW(_@+>NAv_9P`5Y z67JTBggnLh_Y~;#VU?Zh_MiFuudk=j(o67VD3^{pvS6$R#J3z!Y5hRYRhY%&f4@kjs8bSTk#Wnr=w3FGIXdzW<3<4U-oi%TJ{4!z&`^Hkzeet>YVo>{;?kLrU$d{kjQ z=A5J5I=#dsZ_a*o|KE$H{V?CBYDZKT`tW7RV4gV#fc=>r^+T(qGU^EuOagN9hI+TQ zWZ2ph{+~MIqQJI1(AC|mVD=GUz|O^?St zY&@ej5$PM!AyUDr7+JXfCOa35`TrTSze+yxq9!~=|7RLsEs=Z@fu@@``3b8G%MqI% z<+ILSZ-{s)XE=CPJUpgPR227zRoW3*zRkye;13`Qacq9w%Fq2w19`%SUzMlclYz_= zf-0}5$f-3&+K z!`*be)u`{A(9kx)o9$H3LHWJw%P-gGT%A98_2y_o)CO{O6|^ zN{sv@Y4OoL#R)~~et1);C2z)4&W91c>VU6udu^LkNz*VZ76^msnfTv)Mk@$mL5LZ{ z%8<9*FJ#hM5P?vrQt&HeW8KTPK#vfiiKBtE`NLMEmI)wk^mW=T0glxQiOk0yX6piD zU8ipQGdF`yFSmo8HY?^CnHD1v{nVZxSN|{ zxwiQFddqFkgC1n?PJYwKeDd&0f7ZA48uRn&@#048_CT2Emq;J2$v}R_5O>G`$y;BY z#0ZQQ>}Yub))+eqz8(9Lsr;aV559*O3mOGSU6f2s_PERw-bn}94OQY5n5$lp-#The z#ieqdBWg?9JIn63PD_T7=a#y0emIw`U6traiJj$#9|XMA3v>4+=#!h+qDiIgnJn!{ zY$8>Yz&n%Byw;pvfn{raXuwM0_}${G7Lz7sr#AjKV|j%h2~u{Yv%T5W>1u0IIzwlH zvAIUK9ePpMHB~p7BteFN)8AlL=C1g0Q5Q#`zp;SZi zDCaKPntVgh^VBH3Vh4OgJX+3O9}8K4vlSW}2T=!j4RgVAxelr5spBSJl*j|uy0-!x zL3Ar?BjWPcn*}Fp_iL)k6J6MltZA1CD6}*u?5N17wWea@!y-`Mf&sMe2sHJPty#vV z0#2imr?~LjUr)HsiH&&8D+J=9xDVl%3vPem&an7%aBQe7G&GC^)6yhmsYp%ROf=lv z_gt3!{lf<1Yr~p{Sx_Cmv+}ab$9V#+M4FiBjIJ>ZT1^O_E#W5cT+=NPE%`#Iaa;C_ znf>yaps8qyXqmw)y6)24P^A!l#I;Z02>0ltq}Y%Re)7<<;+=r|y9+{COc-31X7(am z&uxLoA5Q}EMt2&>43id`JBO3jWtVxfN_`ZnO20Y2Y>_t#KL zEi*JiC{}%61jw)QnNJ%xFDuuk9OZ}AsS@et26KCztiavb-PhP)%|@hQVj2^b0U7V$ z8fl0}>O9eK83~D*@QH?w^3A!$GQ)BcqWs?}%Fo`5<_5BAml^E0M)GcNt-rji{_pck z7$dYBwkEkG_|>02!j^!mI_$sHzMOX(L!~)8eaWg){kzlE_xeTt{8arKb`0~qm-HD zBcvv5VTGo^&$jsDw?25OAGw0>CW!`wPmhwnoM@(qx~=~LU2o2+9A@&N(!rtOl8G_~ zAqQODG4Co04E|YA|E64{%|Y=yOJ`vEDL!bLAYEvi1mu?_{NR(40$@h>+m<(a`sdkE zJiH5;WD_7CI+F+j*(%)M@6q74iUMP=2#GlM1)UZ$z!8|}INzk!=xW(+P9tP*vObg^ z#~__G-%Q6%D2C>Q<`w?gn%O+Bw}pldQ*>F47anc(^Li{~FJEgrF5#YJVy_%>; z`+~qbx~@aM)6-?G0r?qR=#Fpy6#niu4!S!#j;9gM58poNWeBR#7%vp_*ro;B-#1;~ zsWl}xm$_x(*(}NE>ax|50I>!NznL>;TXibCNz$H=oQVzU2qTXPQK~t-i7d%g#-Uj9 zCz~QUTK7@*YF?VbO-|Pnlc=*h33*}&Kz591(G@E*1d_yFXIz0-6L1dFxGUi#G^*bHma*4clrHnP3+ z8s<2lN^lR?b!ktq%nbR8dR}z(^tf(hdbxt`rr&J=emOY;?xlb+3y|m?YyHXTLJptD zBJ;2>k$Qc1@13M&P#?QqJaEYT9g>A%q0E;Q0L`DzC^ywyy-*4(3zMvxzKO0n zP?wlMdz^*Hd;&3z#06M%A>Ht2A3gLLkTtF$wu zq7^i0H!!>tc8Ep!4NOg(CPArq_mms`4MMYM3=kyv^?~HxY&(vSKKAkzwVo)^J%5t& z4_d`=Nv>0hU<@CUX)%gG<5Uuk6NL<4%qXncYJa*xFl2cSkM-9ru&26K9ce}|l_q~~v2XwgjenY5n z;1x@SzKcmyl!2zE5h)v&>JMU2HkHEv#3xkK>A}63zrs3nQX^53I!xT;q&)@;o6hm@n!* z)6_++*e^JY73E?EFKE2hFz6ZU=%wqdPurLNi(u5cbA(p=G*z}PL;cM9=p!BZp8VoO zH~x+}Zs@2kJn_S`&nU&gqjh!SA;qvY68OCNmrnLLD$4@eH`trj(88 z2OTZm{}VoR<{xU>sCrf;ZwUFT4X?UTl0+AAS%DECwT%PdjX?W-@#6`k=cMjHI~w@* z&VR}zl}+1IV?~F+x%#-PmRDTQtFWtScKp`ZC9l&R1?#<6BvWw&h^n6suUr_*j7xWv zcpt3{Wr#kTUCGJ>RF;$T*#uPWalYmy*>H%Azsc&?7oj>0&ZhD%yzke4eyR4qa&7Y1 zS$A(>rB3=Rn{p)5qGH(O&Il?l`i_k(7N-S?4~~-Af!ERC>+IZeCg6JkoBPQPQl#q4 zyXkF9C{0I1l%|oOpL#kquS8#SB47e|)oz4;`EoMzwK(lmN7^d!hIpslP-dXWfO5z& zY+Bh5y+V#>J|1$>R+o@jHDk{A+okPl{D=MXtFBgJ{v@{xlbi_@EHjL!Y_{gG=DoDS zT5cp0#EU#yG|FTqDmIDHLbMT$qGz}=g8frV zvastU#{E3KyYe3;b}eZpN%d$kfp@6{F1(neDfggSq-h#|1Edpl1Hw}bdMqjIn34-u zoGivC+eWao=Qiqf-I5Ia{QNBdZv@;mB~>DM8M_u!l|o#j<#ddvlAZfMOv|v2{{LQp z*bw4s{a>$B_HEXmL35m)Tn$DcN#0*6-w>aCyD!p6Ya6d8uwvW)Z;0qOk#gfrDdTl& z7neNGVLYM8zEF%j_Rw%n;#)}L%=s-PeBNm%i0Bt)buyKCd^-#-Y;jyY(WN<45~BO( z786+AsI+M@LXxVG9#lVy2&|6k=~itTIIvfr|Jd!yiq++#!wBpQ!(*sBYkn6;R$H64 z*+au8KB0iL{uYQ$l+m;M{6?NUNoS~|rmR#_YU%7=1+I$1>@FfreK~nJ{e^;duK6xB zUYfg@$~)c&u&Uf?2FpiYIX!71ff5NDyC3ic9%C%U{u|U2deDEhQ;eu2E^$?G1oI9BMfj zfK+({`G@Tf7-m8_0?~(uV5MM&&2%^y@3vF{)CZ+>u+OWhB2yIvbdZNxA<;*of zk4|4O42SXtvpeYluOlt}uEA zO4-?!Wo#cS(%Sf$3@id+t1`5Zh~^Nm5!ELp5Z3YqX7N4+VzMaW4~IwUF9w;)ZqJA5 zrY>Lu1Mu3zdoBhrQV%3v;$(`wwQ{@i+qOs56Q|J$cvMB`cIfbhh9;oVyAQ7O{0{yER;UKP2dlsw6ISP74<;F;D3>`-Eq5eThKGAnd7SPre_B@c49Ez^mChUu3GKmPs4kPnxB z-DfCP`rFs5NK%XfwZdAH$8UM*p-`8!%;9DnBa_^iz8&PfWr1RG)Es(C+OL~aR18F(Kdrjouo1U?3>M;hSKe9*p%(82ORBt@ zukALk+>GL2>j60qW@^5)9D}{Y58APjn)4^Jxw?$k&#Y2IFm6lXWd`X$ih0tzl9kxd zAOdP%{{d>)<&Bf{PUa|*8`&_YQuoM*vtl_XmSd_*Q8jW2X9Rp zia-tnE-xT!jerM9E$(S=s@e}>Px2HCPcG0X!xq!GtL}vhT6A;J z(Ae+1Lq0FIsk;ccVYMfpy>PH!)b7U7ZQJUSTn!fROjqA4OyAV%yJA&uh=F zxJ)ud(XB&9jAZBWm8*Yt|NB7|Ua5Z7VH)>_i|7$XK{DfEw^?9Y_EG)YEoSKX*;mOs zK+JSK0`tz(n;TngaCrDJz~^2m-6@b*#WVjt-?(iB1v-7bR3f zdwP0+Qdj<~(i~}2)Mr_{*beB?LWf!$`W81qLLD53WR@YAL8ocXnP)XgINyWq@O|ld z8gm{`Ke}u&l48Ad%l`!e0ZIm5^M$T@^Dz1!INlnt+$3Jgd9C@;-ukq+)y4eZ)?e~D z<=od@_o6*JqP#da35!zj$v9cP#8*^EdpsxyyX~=MM-RXV;U+Z_W2?D8VH`@_D+x z8Nb~i5p?t=yx#h^^t`wVTtk*QoPfB+@LRs^O-&8nx_L@)3d}Gh<=VwFveutLbYc7Gm_n#)|f2+-bMZxE}!5iOl2=3AUbmS7< z^fb@;5-uu!OgcemskAkkmwCPZFcc{jrs(yGU4DTa)aLr5qW4CD-;I3|IlI zbeXO0nUd0=XC|H;NLFCeRjh4)!2!JjM46EZAJ9>dqgAShLM!eW7miQ4?uj>j?HBzH ze{@O2k=!s9#}b>>(4;x4rYo2KBhvqkG|ug;Vs*f<=kR^ewh{_-^zkYi38n-)bhT9T zch(Z+2me$=+fyhDUy`p%Y|3Y<_Na@}4Y?yqoJ4)JS<<>X;*iU&@5yD z=#%@mvY>&uE)l%n=$9XFkb@ch`ro%Gu5i<|Q;I%#X=PeDiAf#nZ?~MlOvx zpkng^ZE-n3d?0v=a<%av#(m&9^RV4i45!CqRCSUdx6QaCS$3s2tW`{Y_5WUdZO|^! z;m0Dt8JPM>4$dt+l1p_V2ChBHB-hFU3;U>QSC!*~n@hjJ7Xt=vj20uGpi#lqJay8d zmA-QC6ULi7?8LnGGm7n|ZANo(LHfT@JtB2tC!Nx8l0)*k+TgoItj5m8`>ItOOR;g{ z0}_GMtSO~bo;;9E#nFj>DlTvPY**g;2?Xo>;9LZ~rau9PT?J%T9H1Ere4~E>Y|i}Z z_%Dk4?o<+`u|Fgj)cuZEVtHK`d^W&6jQ6l{Jof}Hdezj_2&e_ZK-j3!?CC&6FVT0g z7^M2&e`p|+r9@GcJR_6zJzWAP`D*=Q;Oav>3p$&=!=g$4l-e1fU=h*wc}yD0fn+>W z+$$f{za>tFo;{e7gCqTXe}3?@pdA&T2}*%#whe_cs0Q(9Sx%>il{b00Edie2S46_! zQEq|e>KX?8Ge?K|1|9kJ^{tQ<^0a|+mEDlj?w6Ut=4aLXsihVr8kv0ybk0~I48b8I z#AXwILFPhjs6A*2fA#twiJ==ObEY*$HW8s{sU-qmb$+Y(Uu4yv98Ep8n4qPaXT6Um zc@=B$>^Ff1IfZoqetpAVw-%4ho_WCnZ*#G|qbF*)kOU%Lj?T{v+i}@<>b4liT*aGu zLh9wF`$?<2y+ENQALy*=`vt1~{z-j+Zf|z6Zz5blY2+PZ^>Zlk`ly$|ZIHX(!fy9R zD7M>1W)J-t;MaZ)ynEwRy8I#@MW1Uh0W}qY*`2A~z zLbXl*d#8S*+#KS3reJwZM#ZxI;z z?I*Q8UfhdGX@F!1ve5iG`JA`Fiy=>E9xpv3{n@_-|6p`dZC8sQzMOLl5hOp+W3T?k zuX*^roAJHar>i^iJKHAbIxHn_vvR!hTMZ-%JVcjUzf%ks=VdhLFm<$p3?suhR9e;segnvHi{yY*pp4{MVw+ODKYN z6S2=(o0wxm{A8?!E(CF(tf@vYfl{x&A^`GX~r(0WJ za8WhU*Y)5=ZkkkF*j!AVFZa>n+E4lYuy;0^`6A&vsVMQK2TmkO_lWI8s5(uuB#AAL z)J=>n(g|^Ghcw_snb$lkryasnuARd#Is3lk^u>)#$H|ABhiz4ANdivDxo&y&@@67l z+AK`dcx~}XNo~2*V$U|+x|WdWIzQyvGjben=_1fpc>UU6q!0*xZ)T5PE|XqL z&=a#IvR2xhO)C4=@Ya5=%R4bl)F^@NcZ;y0jw%!m;S)Z7en@(WqE4KJQ;fv^T4bbN zM`t#oWDL$K>BL~*i=M7?pm|uzD_zlKPqpH}(KPlwvi}iqiXj1J0yHlpiT?J`IGu_I zfxV}kDV9>_Fk1yOc%az8Hik2=fOa?LB@ZUpO?%>L;luU==b3+kRj;8cE)rB-_r*%%p7`7kXITBR|F)&Si0z~ ztPf2VWW^@42Df*isDGz8H?SE1T>@3V1jpY?QW5g&og)+Q-F z>Q(bk3@xYdhQ#^ddgO?A=9A{zyC_dKbcfL zn=!@H_2-5r^I?u6Oa<7QOw2Y(nKOANJR`Y6-5sGBdAX6poxtEqmBp#y8=Jfwdd zn~9;FBOyOL0@$J%LDEAw+E5P}o`$YJ`F5B81IA^@4#npWKR7qXP-{L;Nj7_$q-aU& zpWfMMRHi35Rm6Js#sb%WA(>;B=3cNsXqSn*WBrpV?V)dV!a^s;WJV>ZT!9lLUBbt; zElv_V$y2|aT;>9lox_!*L#HDF(pA&P{0|kXM41ivO_`k{Qk$>Y&Dc^P%ZcrGpo)P^ zwn1a7SR760RYeW&`xx=l*SIcokz*qn)ab#YRJ`%A{6*brR7WSi%6*Rcs7IgPcr!Xn zvt~9>Q%kX023yNov?7MxMI^zpeVkrU6!zsw_V?174~JG~(5b&eTutqq)d+fxjYT3#&oNw;O?; zMEdeavBP=bACbUWgZ`;hn}IcJKWlX^l|U={-)ax5cPv}Gx<|s zmsQZG|6Dds`)F(YIFc7k0x0JiH$QSi5QQOzgtiD2MhK4=ei_WTgtf?|^$t>!{V8s& zgL1t46Hj7B zBd-Gt&z-Bt^*vIl;>krYDZvBnt$=Gu1>Sl$u|FaL6#(i#6vl0?Iz67Sl-0{;oZMo2#2-thUpux!vOW8m1WZI zobTVGqoa>v(KN~_U!OtwmuCg*lRYauBpyOw+n!tCsES_qo8{^<1S@TbO5~J z6Y=#^FEUEX-b(Y{sF)b2&_oL%GaK7Y^u_sNveOI7OW`&r<8vm5X7{a**TVBK5aZhX z&cOt^kJ+C>HE@827ikn&0oO^&)OT_)PE=ydI#9F?2FGEBfMwOto0IRdu@qeTb#bx0 zZE5J(?}UcHoa4fwLT^sKAjKL}132ynTe5MgO9%|C_i@d-VfG|TaeF^%cks|fVG z7e4(p#JnnaNwiuoiBWBIh87zvj8;ruyv+=`qOGo+$4d5aC0G?~#Y*nEjV!%4dTM*X z7?GbLuuo1d13NU_}zm zWCU#&6?mUdTi?y>Vv5lFZZgvQvad3I2OZC}Vr08`9zY3v26C774nJ^cU|Dg8_9*VIR&iE`HBPTD&6B% zCSg@jM(Iq$`gsq>3j2@tMJp}eYrx1=$2S_VkUHO+S%DsZ^4NR6L^rfz!bIKN1)7T= zDYMK3nX5lVa_RVE3g@GL=P!a(P8ei$`1d8SexFezVHMzIo`8A^PAa!PMcsciAb%sYjg@8#!jOUxTRzn;*n+pd^;!*Rj9EZuhx0U0MJB&Vr=+EH z{oDE1W?xzJiiE7(I6CH{?x))+y^Ln#N-o_|;>s)l9!%xX5z|XheO#f2SLw7x`>mf9 zDR;j}CD%L6A~g;;Blp;u$Wu-ih@*ZMad&e;N=Nr|T-$h0=cgwCvOnZ!1hgW2hAsL) zcx=D_C(fpl@ztXL!|jgo{Yu--zEb%dHU?bW4KNR7j}3jd@}4`+rGdApwjQDPJ=^XE z0?YuY{y`vt*IR6#g`KjD$bSOOE$51@E?z1a6lnRp_UCA0{iHzEsvG2uN*DX{=){Im zkX9?;Bd$F2_7UP57Il8mpUW5iw_NzQuSE=^tm~4`Iwr~;JMhgoZe1PcrQF|uExtC& zYM!4OT{(zqWxqyDv{wu{nHN?tsXPw;1PxZP+5 zag_Y~2Cv&o7nN+OpG6uzBkbG1zM+G9j?xJ2(f{0~JhnBPJooh8sud$nRiAyKgM>e1 za#Il}*cT%@u{2NNOAKk59jEO|4t$JcS-yiRZ>5tkVoR) z6f^vF<$4tk)6{sk&+`8n4uYgv>jU4^mOZZB=pg<`aY7&%BwJZ;jBwDvSPIaMPdUL_4?|kkm1`^k6h#uCsO!Jt`gG_N}6xA`sdA>4g=ULWfMQbG_GQg4l9?q-5|Z3oa< zet`TYDmvN}NnU!sS6{eq7GYo zJTz>^G^CQ6%~XvDWP_ISV<9I$EGuku`+Fy7j_aasC{rZ0^96G5^O4Kh zRB^pC{oN!&qV4TNgN`74YTgGXoF`V@ws9siBux3!<;{5BoTMX37(;d^Up>mq2-49p z2Q=!ke`H0bM%<5lqIW4o+`w}2UriN9Dx{*2rclS|B3sWR9`JK)S>Er!0TC|3;-{P? zk^cJ2ZS@aHwcmdn#u-&tu@bzN^D?)@-iqW6gtNJpyb7i8&dE8-x6J+OI8zf1(&{kT z7Clg;{1s{Henrw1p=Xf-$NGJs@8t zQ_&W2;zM7?1%^JI$%;KHhC#2?^Xa8&mxU{iD`S z&fi}m=>PHbmSItT-}f*nf`ov8G!oLF4j_$13@F_#F^II3G$SGnf^;i`NJz(^#3&^& zg!IrM-QCP{=JWmko)`B!u4``2z0Z!d*IxVTlow!tJa_MYU=n}etOy)%H&CGie4{tM zs_QdB*v-_(x_L?zR#sMcl3p9P&yTl{Wy}E>VqEJ81r;PzP0e}~%(t31O3OXizS!?8 z@Y!DqT;7;zRtV6s14U;VJruyDtb+x1*&bd8D_Unqo89qTOZ4E{HaUW?x$?^W#tfj$ zJfS^l?XJ|NHKf&2iN81R!GEu0Z*n-8uqfUBl#zPZ(jTg7cnO($)7d#DrTEOMr2ZD6 zmn|0o6*d3M9uiBx++`KYQZt%QG%O?=y2F-`;*yS=(FL7Sw|8C38oSEA&jdagh&wM_ z)1~JB0F97G6rB_H@$;4VYye5q>v#a-7Y3OHMNw*s86}J4BV4In(PDvDG+IRXP$A29 z>3OY|3)4JlP}dSRyD6q8qWcnuJ#E%mCowmei+(q$gMlVM;HK>lvE2FGS|28v6DzXp z9s0a-_qEZf4gWXU7ABnuJQ$=~o;7uRrt5qwDGu=3n!3{45TsgtbV2u6ey5%*$0CPg z;M=ZU8L13G2GDuN#|BA(HH_x|d!4+&^-@%}UZ&x)c|{mi{wSg^&pyn3);CU{)(6yQ zw+hhCm~sgrM;GM?96N7F&25&PMf~X@dUgUB7K@JqbLtllRtI&9bUO<*HRSXt4yK}1 zN<6ihqvNlnQe)QTQmd!fAIOX@qJLGMViX^VPXQIeXq;yrUHFPXxOVcS>;R~MgzYT$ zWy=#fiO$GL;c2e8cNS=Fa-Eu@aIm*U%hj{UJ>6fLb5DMUs=yk+)OMia)BX05I;P&H zljZ{jb30CObb6%D#p0_*PH+F`r#`@Y<8w`C`EAt)vUP&{WCQGFm0$)1C-ebSB0N5` zA7XjRaZ5)NE>wH1>gwuC0Nk*dZt!7|_m|W;55<*(e`@oAUtSH$BPAt`zD>`M9>(mp_2T1KLi@!!+=v9^YvIxI%XDZPd7RS?K z!z}4J>kQ}DH@Zr?a-Eo7l#^K!g_%emA0}uCKP<6czNJRq9skbxwD=;;wxgs&3jUN1 z!xH=Xw)GNAM}G0z%)i0)^g*BSKd%V18ySQQQNUyLf@0QP7N)9=FB<%RTmV%vASP`6 z5lQlDps88fPu4!;Z|ayBRFIV8S<2lPece45in5GN>}(0*G2hiM8?tpzbqp*Lr`#GB zWeslbyu4g3$f!Tb_ zAwO`e8beZnxCy}jD5qefrF{xwSQb&sYr|0SXEwx|I^qukN=pvMM@L%f{>qZy7T_Gd z_cx$NPyGHrj??$yLqxR%)_R`d!*@}SIkfc3gjS@o3Jr}OY!iBqPvit$`G8{lX&jr} z8}TiG`K@qo;mekhlGf89Ih|9=R%Q+SWsD(3cFU;%!g>HAr^o%?jwA!~PGSa0hBxQ4 zAyl`e-f&k`RDj?PXNm;Pq{AUWyJ;RhX*NO^0qSJ zJo&*XBi$*Y1v&-l!R~J4xJiSXM5hl=v^QJ4;6<_Y)Oz^OxXE6<+a>H3=X^kdRMA_v z!ANaKw;3)p;Fr{lkA!Vym!0fwY{-NyTg%pkc+;Bgbq%I^^mshAEE@$K2QW+o{j@Sz zps@lWRC)0N7t20NJTtHoN--r%(SG}<<{?nCv>s?fR#%H<1Fku}h^b13gwt&ZEP6o- zh*4V~ZD1zfF2vwX`mTQuB$)YLH=TZUnaHmr892$ED+hEg0_Uf}t!w)e&xHdkaS(VA z_9|1}DFKZ`$3=duZ~|gi+H??*gD&n-o_h zglA)a+IcO_JD0SY7 zSO5~wa}O-J-eo~ilat&#`D(Iop41qXpFt`&){CtTQ`G?LHtSJ8C8&XTaT?x8?A3Y5 zMStcAxWp@C6pi^K2t{I*` zD6IkUY-~Fn)RnfNSpY~jSqQ|eiC&Hd#Kwj88|YG)`n!FwwFlw6|ft@$)p?g<;F#=+pvdeQ6jBIjN-mGLuy za1}pld&g515^ZKaHK3G8&F>O3ESuX{EgnchUC+_#i6?F8pQk`|Kd>QOtg^i@r&IFC zT{ZHLE$6^M@uTP-8Qo~MiPm+W_wnwNR0>0Orh-@QqI8!2q# z0dw}ZsihchuX*?bAAe`&59AKxiL%zM3f*Br&N{pq{J^UKFx}8_x|D$<3HErcxVRkqHb&pR{|@Apd%zUH z8pgidp(SCH+IxOSj^O?tqO}Q{TJNOqky{Bf(v|h;28wQw0v?4V4Pr^^v~?*NV7eov zX6qiW7=pta-bZYeKVH=0=-QE z&hK!&)V`1I!G8A$rXHdeLEGys6_Ol#UhK&^V4)XOQL5AS&@L*1^8vMFBs5HpD)oKE zQF+{cM)+h=(W+=sxGvEVzKiu2N_Ik3qcB>M!;#g(cK?ag0 zdEbC|5$KM4S8gq7-~6_wN-%=O@br848T^tMa+fhLO93GzWv(TR@UE~oXk8v`=TxAx z@4b9-b_@hec4QP31}rwMePy!`1b~c&8(6GZV)z(fkT|;wiKSqbP82pFD+~YL!R0R7 zm8e2{ii5`5cq}xBv9$5eW?7$y&NY-XU*$CJQ+_J?bGCE74pZS`RHVL1*UIv!_4-{j zktf~4n!u8$XOC3SQuP-H_1sb;&HI7^OV=acapv;zg>$IDzV;m}4`go$PW zZs+dwjN|4XRZ^Gfu?p)n8E+A%iBerR7rg0!<0;2g^Znq$s{oBm52$RTMC7BNWCe;| zc=y=r?nvC0BtG`0&0N@`$`l#@iy{X&H~F*GqNi{LxXxugnRQ3O!ok7Uv!f}vAY2*# zBA{7OQh7cp5FIF4Fvi);h)hygrmpbuIvm~ME7wY1pJ3)a2rOaut8H#_aEon>M-sgH z4wnfQzGhuG18?a>YXAgnIC3?7_kzBG zGH^piPU3aE_h0^g|3#iX=)x_Y3#XMt&Mu$nP+I??@n{@4A!D4{Z)wxn>+ArD0O$$m z`0cebt6Rya!P{SVL_=<@=i2DI?ton^Of6`(qyu4B+Hy6zuY9eWHWs&ppRGe+5_;O~ zrm9NVy)%PgEPe+JF*M|Wb}U3(p<0k(6(tuSPXj)s;>%zY70WBwqA&hBP3OBI_QGd- zHRz*f*1|m_GwA6Ak9)4nMgqno*5oPkfmUx_$%)qP!X%&r+_`)WKXP+}U$%U3Tg~Sg zVi4#7*;wZHQyz%PTo%0vevaKrjG}sdSkFe~H?4tVNfN{O@312{Vjtdy;<{g;zhtTd zmupo^=1G4S~*Nv}+q~dfIFZ!GTxkx z2%;Ucn;Eb~BER#`bdy(+iep^EuT5Ehq3Ko6m`iWB6C=gG6=`0dq|9`J85JiC*)~mJ zuXc5{8%ELD$pTM;H*^3=N`MkbNb**CJ_U~kpTd&$H17lb ze10Wr_jG(*7Rus|zRx3YNB;w^vizH;_Gj!})bkLl%?4zM0KOyqys3fH+7zL2Y^UU> zFFm0NK&56ETlUjfnyVA=C)C|rsuT%B-%jkdNx zd2#7rP(vdMERm-6H~6T>fftM2~OdzAvhwCXc0D-nWfK!T&@$&W_@5O zTws{5Q}w+m3BeR$3Pbl(szqE(D?O{yLW4x=Nl#pisBTl>H;*;`p2>@HEmZETRL_rD%MtmJ&SV^~v%)U7)|Aw@FkL0f^4?px(kXsk&hY|S%7M*D#; zCDbPneGb!qvePL;+t=!3Rhrc{f`QR%ER2&a-&9j`INHyoykM@A@3JXPYja=mC7^{I z?(nIT^xm~EzyFb7{?3k^oBA(OMyFP%gLF6c*~~}9r#;BV;7fRSv1YE>G~9> zkPaAj-N4aV3_Z*+KgPBF=!viIfDa7_d1EvI%F(xfU1N4cg)*3jbA#rt{^ynYYwcgi zj!eP@@r(+tQ#L)~&@4WAU8wOf|IJv@hh~Np4`!+A#mF42tkW)%@zzDt$9MHnD#E7f zm3le}PU)ZOU^miTFcAvMLHl52pt+uhi@5NyHB5n!SLFxOZ6fm4RqQ`I53_fJ@rR&t*1JfRy@7%9t#+_)nqC;2bNsl?)n1d1Y z$m?N5_o|v!*FoHTM7U^d`Z>~bJ_ev1pS`!IaVwz6nZ&-KNdeRQm)!AW3yv4}j`&8U zr%%YiN_93e9Kmko6hFAVFSOuCAoz!^B6&4Bie2!23gXbMx3L4gF&1qd;`TQ>Ew+Jg z>bTf&rWAS5$lJ5Q&bUvGa(dmi+{r|IJ3}FK;vlkbkfosUShqx2l_4OPbDaT>%ugJ` z1HPcJ#TAaYglFd$NfiJr`}5TpaP(H-oKmGd1#r+IAX?&_YktGD$7T4?GMR%pV@LF~Ocvdl8uy(={NfN%C=sX6)|BL1kK_nQ;&# zgKw2x(yVQ~SigVg^iGm$oMWjFEwB1NV0X5lcD(?;yQHF>iNzI#zfn8ktQdeJ+Aj5# zy~(xw4ydD1wm&y(O@;+MbO`|tfBAYQ@Z3o^dP~qWeN%T}7QBziUu+ zQk;{x`7KOkjX1jR<_K;}>?4kXRLonb@+?A9_15qi__b5;NCAvSQ09=uQUQ`dE3UE@ zE%+$D@T7@u$M)-0HbMgR19@vqQcDp7;c5KfH+w#!{PmD15K_fx89*Q=)_WFVDc1u_ucfjBNnrw%(@3ixzl@1>I z;WiIC!91F3OmHCB;wQNf{ljAUE2uSJWCO@}Yw@^53bfSrdrNH-m6oDjApj0h9lcQUBPB^HyFH$~ z@z*Iozjm6ypTIOSO8$cA&!@yzy@j6iV;D?f_F!4!H|P-m%D)*$B;N*o-5RCg7~ywy z#%Y~xj|^|72zGJRdgDTn2an@pj2WXn5m8H=PEL#-h_aAL^w^;zSb&W4*;4Y29Q_0- zlxV(2uJgw<`4fkOcA1}Lzv#kG%?I3?IFu1VEZ^>;HyVE@>b2Gz6zLoSD(Wmi*sO3H z4FO*SECGEGaORQiv&48b6BGnsafM`|!t=Df7$)(|lS&)yIPnC^t{T=fu}m2ju!XDm zIxIP%+M3=e^S`55Bf=%V@<`5Ge)?|dPfX7S8I3ZH@Yo4V7K+xCF6JgGrTE*=t?i{y zFo_#0T=o>EL$t8kN7`Ju>^pw;*U~XQ3E97;+UW^g(lA2o5h-0NyxFsT7GItq)6Do* z85R0CEu+&e@7mJ_$+E?~mBic-dM@M?ID2hY9dgb!;>GCtLg~j2)>XZWMo*!!#a&~T zVYUdp0RIu1){`j4n(~IC^!Hxz-ohUvT{N*T&H@Oe+89*E z)dsdu*!WTseF0T&`vJ$A`)Uk53gT)*=Kfb0)JAk|sEueT+}rsQ>?x`}Z6H^w@1@+n zc`BRd^dvdZ9iCt-5)~KpxO1h6X4D0SiG(Lg1@VW{spP#y2=Wwo_qx39IVa(8zpR1}V=`XkyglzT~tgncYTKA4y4eY-68jC8_Q|{p_Yr zd?put&bqE|-f^Z97$^@|;x9{kzDdxOyLTxX_MvNp-JV1`<2FZm(?npo;*or#u>Y?2 zM+%5v3;GOiecQK{vFhjHTF08%k3q3!9=y}<6N4|OV#Z#bH{Nz#6VE)|QO-O*L4N9f zvqk)x1nQv5#JTEg`YUekbGcIEJS>u{MVesy?2j?`Vcu9hiEB<;%yCC4ar->y#Tj83 z!7-r@_ojtf?ZaE+yfpU5Qi9X=P0Tx-BEI#%`U^DJ+hbX~&(_Ow9CV5(>TjLc*4J`< zy7`L%ocv*y?wWt*nAd-w!IK`6;k$Z6XL(MWfbcMc5I*5{_Kpe?w-8V@~1C$fq>mH+ZTVk>u0suM(SctgMQsjm_n@WIp|8Cy5p8{Vnau-{#^g`CGc@)6Rdf6-le zugVtn0IIm!@8jchnqX}3(^C+-KB9P6oIr)!G~pG9h_3+Z7F$x}Lqkfb7x@>#pxq_) z>%Rk}xDF-!*!w%;9SH#*=#%@zfWjQ+Sh~p<2Ow?n-Wm$r8}hZUe<$v#@r}g>UDP2a z;DfIGb(@!SP$b`r;AVU`UTx-CBWOVe#xLOmK3A~6smC&F&C4LU0v*-NcWR9kVmGz< zdkNM|AN{`*XqneT2cm1J;nFSJcmS$%_WMQ5u#xCsEzr5K_Y)XiQRNEQb-Lf*!JWR8 zB$;en`K|`*Vv*pq@9=N3Y}$`Ur=wB1QmfOQ%kAR3=+GY@Lbx6)B!l2WZD1Aog(-uO z*1Bz?Hqw)wq=fR|xBao)V_)i&!+Cc#X~MSy=)gk$^L2h&v?TYa5>XLD#4>IBb<;%m ztp9hn@#l2hn|o_m!OJzGehoE$F}A?V`8OW^DEH2wf3f<`PKQv2zV?%En7a-G-^}D; z;_h47eyqPAZa267u3rtjc*glS2af%g_6e-e;zSFD3O3!BU+5ngJD&p%#|LGk`5SuZ zcc7#lG<$be6*`JPnt{$Da8~!KF4hNI)M`paXg|KfI0aBmSRk8wUB?p^l#?j9BBFP>Ku7o0? z59fLCpfSNF0VeLVhO?AVC-lZBQ+Y+xu2$EWB<|Ewp1oskyf(96U(2KZKdWw8^fnEx zk~Wy**Yr!pgrUN~9R>bG&Umxt{tffXSX%}9pci5j-w0zy?M)Vzr} z!;4{hnBNzi_s3zNq`i;z`jGAOPJgY>JD4_cR{-hMxhhIhCLOT4#z>u}gm53WNbSSY zjdUgFxmDaPYw%$BP-rv$C_!D?uG=3maZHpbT%4-tS0Mmm=De;XcBWnJO2$QNOaZ+|M$8wVl!`?(mm`6N#mP)q{UtjHjMN(o@*`l`}T;4 z^|*A3C}+Y2J|+WX_^tMucD(Z&tvAE5X+6Ye1Sxny^O+vY3t!IViS~Mg$j%!H!ox1I zU%^Z=Ftw=siX#a3Fhk+THDJhX&-Ljzw>@Z0>6U&RMK=8lBnd2DQ%sN2bUFD1Pk|v(#TdO}@hUo)7f(N;#JB*)}!-y)5bOMNyt z9wavA)qnqB5>h2;$5FnFY>E!uhwYC}VuZ}9gO`LS`YWf5|J6Awb274N z5EP4;%(y>cWBv9qQ}s)KQ<=Trd@81Lr4jK96Ojg=WhPlHun;wmpcvnD$*S5h}UCIpMhhHW63 zIp5J_lVvlh;k{ z^e=~>5W=M+Fe19#3Ztp_=5l#cMjIaIXHIVfK;_^I!S*ovI$OSS#f^PpTzcs+OFWR} z*L~?AKFeY04!xZJ8+^zLl>sg{l;7khSxeMFI=k=6=W#lynGbAfJUG2Iy5+`PndwA4 zl&_K+m)|Mf%YA3|@O%8eS`YW8F0DJ*PY;e-ap0z5=i{Z}yWG)%EphWES~Yi?Z&dTME8>9>$!)<^A_#NSKs$JmL^jdvezw1LoB_5>I)g{L@lS(? zFZ~GBAytV8BG>07GX*G3h#=la4@y@dkp!0@C~Hs2=V!s5YTU@{-Yx>6plvWjB1yJl zxS2dm9z+nAj_IqHK-|@e^d@^kH}&8B6URj*7m{VLf$Ta_QACCte|`P{sFQJHYG5V+ z%=u92e0~11H&Z*mE}ei1`T)YLHPwENz!R?fa?VmyF}trv=+x`Qgbp2gLjk)>-l~HgMHlbh_vy>n!+4b9UJud7YKd~0dz=D8T79W`N#DLW!1g2TS+1>-7i)F? zIT+{o&&_i@^8dwcF9*p;SNku$(o~4|5X+Z5#+B{O*h`lW(Jc*zgc;0q0USQ26#J1~}Nd3PAnqE1DWH5r~+QI6*1DXuwQ(i_<>Jr4+ z$%#3emK>TEM%em=hbX;I!t5A`xI<5uHLSbG(R{;Q*Yn|*Z`Z>RwJ3@T>nix})tDD* zt|@?d_9m2-r>2a5!XbF^Zfyajk{@x=2Skj{&K6nKLw6^&yZ_4prP>iS0z>z0#kV{l zRWtY3r-MB-{)<9>rZ>cT9dTlvKL6sCUx6`%(7UT6-*JOnF9ELuLs>?VN$v8n8jk3* zD%00156J&mZU2En*kR(s-p6XA4>3J&oOEpCJ(ST`I@X&%JH}_a@?-Sw#8-d%mTPWH z<5&Bkr;xw5Wpxi~UV-57r?EB+p0id#ITIw>cJHK>U`!Ru&w zMX)dln^9L&9*Am;>uEP3 zgn2xV%7l3qm!Us>WxV#RCE}~I5j7W?F_%&aSDD3r%)W0kY6Taw%ht;ZlMqeQv1Sjp zPNfsP)PK`Q5QV(iSQr?qCw;ea(B|<`o7aHsN~^M-?R!ZdU$PPwWqIl3GQZaYObT;-5N>*zt-Z ziHalP1w!sD+Mn3vq4az@L`M{Fb%$i>yD5bnv7M_kLp?f(AEP9-A%1m>UT?tdf;xs> zHuYwzSryYE^Hu^=y=kMXeKu5a!kVIu>F?E@%lP0BP*D&|fNrD;qIK%g&u8x-3FS`- zj?}qtla*wA{K-!0CfF|(KYPNxk@mhRf~Ww$xS-Vx54szKQi>o_=AI4aK1f8~e6`gV zFY5M~#+Szu`|KSToZ?dQLbjNfCNuecAasl?e)d_e&XdvsH|_wqE$c;7FinAA)MuGgxd9+OJm8XKBOJ_r~Gp?`7v zR6c^JgTU-kJmJmgB!B#DEBArM@7M?;!W-x-1H)IITP~zT6gYJ3k5s5TgTvo~L8HCl z=VVJFUtG7WwAJ)KI!;9^Ic0pR(-++H^ZpD_Wv4fjQ!5ZtHZL48V3k0uv}g?yL6m2WdB{x6bSz!%cUD-(!B#Eo z{_98F{6j52bV-KzYQt}7g0$rCF6aw!gQQ~j>b^nqro{ezo^VU*c&$7%yur6-NqX{M zEMnyr=TtkG1}!bSIGeKIDvA#ytG&4$rySZETf0p@%yuVqBE&YCsvyj!_C zF+EHB*Opq!@}iu1-nC%@*bz_pPlTr%wQo$Y2HNpW$;9a+)89+CAsO>C4>`@qX2qbR zr&lw01{oL!Oz&n^NT^!?3RIL@>@AfbYs)oX@Dx`fv<}Xylsc|_*-gfTUx25>ZN|ZG zG@Y8%h7JrDMf2#Xu;0bGgW_8gbJ|;xuZD~0NLXAS)jY>J1{;U1^*sN|c+pjQXb`~- zp3A$d{!%Z>#2UN?8xvpzYVfuMnCe+v<@Hm)p063)JyAUY_!WthhBM+k0oPdA9j2eG zO22jJICBwNrG_>Wss-~Tz@WaG+Q;bA%hbRGb6i#&=~R!fpKc$nis84-X1kJY#_zri zFch+XhX@mtPC?vBnEq7VKcT~6AB(8t$)a8#6+z*krLNc>cxRh#WUltfIo=E9`G;k>4X%HZ|kvFcl;4+mpg zUm$k`<27|^7M_j$qD=o4zmM`l!?`4X)!SvtVU+6(bt7a!QRJj$`MU4eHeEW!V8($ z%(H9myW=b5I=kKrohx7Ar zvywNobx9r1Z;<+P*vGt1FO$vYO!6(caK=@nhHZRW6oDZW65mE>6CccsW0>GQ!D_Ct zfG~Tc!{bEEVet5fG&0LC&#gB%8@c`3HMY{vdVwT;M{kNWB~`nQmoPPmjVjOsR}VgNEqs%&)`E!LJs|Xxo11*;X*Lsh8bH za?&x+X1=j|d#-~C`$|1ZCBs~Bqn7_(|HPR)qqX1sR!2O-A%t}!D@X6;j~qy;j|BYS zJO@HH^v^eUDuJ~5f#2BAi#NUdLfHHvxrvT~4e!x^1C$cC{1Z35B|F$qJuv#?jhW!V zX+j2j-`unSdsuhyTjMPzNju+67r@wQL$S;@4?6~Od~|<8WWjN>#UXTq*1@;%T8&=% z9KD7a-_;l2yG?_M4%}^R8Z(9BQ+3zE5l*g2zbijL9Ggy;Sl-UUH!8bDJl2LHa2yzi z5uqmRm7lr)t|DkXNGU_kN-PcJuK7hynD%c`|d)Qjpa>e;y<8B*)P7=l47C6wa*u)YhzEgYXus(2RS4Z(M8 zCOlV4_er?QHN4(bhM?$i)aE}H_>}($e9^Iun* zRL784b4rMz(&2dm|f z@VZ_u>?$SF<s$8~gx3?_*tzZO3l8L5csxhwGOm1J+k}_Jy&HKg@V;tV=B@0_`2ZhtoqR{Px z&9-W)rhfMXJ1Z(~qF(AVbe zV<%XnJF9x44}~#}S6{kCHMq6CWd2sYEt1qhf>h*+NhWl)K%u+At~pXE`s^k4{BB}q z;hYsrr)R?ua(?5Hy7$?LVaiN!@fWHDFV04R^{EQ$QzYNSAiNXT%aR7YWNz71VuG4z zL^4vPR6JnNKeNh3K>db|%q#@k^>vx%Tac-G@3IJ^EAot8!cfuVsn0gKf|G3i0V`F>wp?q5l%hV;bM zEG`VVFO*4YF}awsi|(@sF8qz|%W%p@dP6E@wuHJ_KG~bd+s<+wP_-yZD~WY{hiVYs zRT*zAk&+$7_nz10<&vKNLWw2xr^&x<_qpWUXgt*yS|=PNMQR{75^v<#gGw&7>>Pzu z{7%fLF*W;1KLYig)$ZjIiRL`GfbD<3rTnq?+E(PD+(U_4xi+R4_@fXmT(LQB#}&z7 zd(Gov)!}6^N0=A!Ydk139#0q62~ZmvuFlqz)L*Vm)QRRP#e4ySUTI7{KH1IiF$!fDT;j=l2*Zw#aC((`Mx z+&M$uHl1?1!<_K0H1ey$%r)d|ovPsbF#Xs6asb!Bs%w3gUP^(mEFI&$I2nod8OINC zJI?2E_C95pb)PkXm}tSJu9SA4teaWhalPk^FUfw)bK%5qEi+%*D5E~=e0L`~Eg(LB zTmBZ9z~4H*qDZNH@C(hBP%YPHEUN?GmCTAWM`AMoqk%zT<}2z7$$HrbFX%>2SGgw5 zN4^>@Wd(as9VK|pLdTqcZXy?xO(akMeS%OOej1uUzxKSt$4^x!x=uRc{|y!myq6 zqOVZj*Qbe{KOH=9-X!g>Pn;`I^X&wYf`Ie9EjC8j_PJuj43;e+{p1UIP1neA=Enj` z-$X#6k!Sd#_0xavyyWS*b**9y4PFqBUaET|>c^AkgOyr|kLPa;nbNIGP`>3jI#r4! z6ig;qen!%;-@v|=_DW*QNBG$>@tQcUz)kGQMw-5B1iF_4Ua7dH+DerwR zlk5Gh?q&0V&~N*$XI``PqU#IVjGQzT3$sO^``8 zi=+!dd`G$E2r><+Nn#j6*p!YOi0keJd~5J={rLlmz4E}WG06l*AVScNHXDu_(O?~(1fFQ;SHB?425e0 z;wp_gb$SGzCSmUJS1~^#)F72sT@ns>0=y>ATCN^BZ68SR#IL9d46___;7~)j-gQU@ z?vTuwA1UAE@R6zJRP1Ml>Me+MnqMxazl@WiZ4xF z1>dYKG!M>?tQq?NMCEhf-4`b^Zj^N}$%0>Y3GE9bF1DfnI&PSHwCeR<(iYU!#iTU~ zuX^S-Z@ZUSIPgHrde0NRf5Y9aE^aUkC*rlMoL#T$o#c~Pl7@5(Sl-Sf+4+HhqDGOb z%`s5XS390k?!oSFu3ikBBftHbab>RXYd`Z(a^fhLyQerHHW?5%l6oUzwNNkql^~1ZPD2;$ zrvtmoD7?aRo zaf1=+WOaE(g-o1p`(tGqT5Er6vs+JadA6%Txwp~6?MB(3b~D!-!$`snb4$Lq=3^b# zQQ|G8I0S*ZRI^$D^OiA1U5Gz>uhx;Zo=CepZErn;#d`??=i}c$s8i-LGyc|GzANsf zpIUAVW_ZxvTK~~%naxIHSdwUY@*FY(_Q{P**dvMUT6-mz9qvxVYkkWHXm;k?`H1{f zeK)`vFUayTu6-J!@4Kf8stlu-bDEG0oxp9JTNl&JMmydHy5p)cC#A@FG9V|Ku&Eib z-zLd?d^r&|fB4%1b%(LH)Y>(}_k)Q$IYBS#JK>k#w-gJ@r=?uU+xQFO)y>=|Vb1mq zFMd4LMjqPu6Z%|t7N%pJp#F60f@V{4g6@#ACyWktqYg1@jTqc!UD zTiDl_p9TudvI^B@lYRQ6BTZH=(&m*0KisLB?8Rl=ls63x%Ifit&*j;d@q!pC=@(N; z)w?wZD3L|I4h0&DY$8*~g3zBM-=;u@>~zUOr|9B}_Jg60USksHPO5 zfXsVN61))!M#St8i=#_IG#Fy&UAxgj!er_L*(kv)>(6Q8U6Ru@4D}4VlCJO5=+3TJ zsqn&X0H75g`u99st!INwVFrUbY`V-PL%j9Me>-0s4|{8uj-ielC6IR-42yz z45t@&SkSin3Vp5NJKh-rkZ!e8j~Tug1eFN!afHya5k-NZJFoK`QaxE7I{OIXr$3 zdjUfjWo@mEOq}kykoxkfS;0DB3I80r7BX149_cQtPH5hH_c6%n{NdlPB$v&VElHgT zk5Au5M`1tmKplyx|>_+3lHvRx4*SuYB z;ShD%V@UW`Yv5?{0uA~Cv9q{DVrl%F>`#rHx1X%sX0zO6^86C6etI}gR=kAK!Xt)X z4XPuyCC#Zrzhq##<>j~rb|;vRd1?(xu$+;szO!C+y&ao21RGB={MmzUH`MWEpuU8> zUNUSaXtb(YBVXKvwZ#_=&5c>Y<@XuaHdK9$cWmRYg{8>}uR2&lf*f5cWlp9aRGm=1 zu5Fv@Fn45{{PM6j#@yttYG`b>VWkwAnr`nVV0*WESbV=Q`uRqvTk`^Yd&5~tw z&Q0?an$OlQoQeY*%E@LAw?x_%)#!EsiTrPwg#wNYdX4q-zUBCZN&V6JM7N zMYwp(H>YfOt{hXe{qS1ET*Yi#+-Vrx{w);t!08XmvG^k5M>?hh)sa-rL)@@tv3Qu3 z)uYrLD>Pb5hQ>1NBnRo)UfhZt{H(SP`H^^3nCOPR3^+qKzmBP~kp1klPn5TlaY^^9 zUru2os82@xm3|0UY1~%Go%#6U9I%u79A9#CFMI;MQ9U*`;rfdP$}w2aa(&1LM-9@H zNDCU{?U+{X%|Nc~Y=fm|KjCgM@_CNTTod!wff7~uinPf2n}b#zke1=WokC%)XC?$= z6m@?BXbQadOA%~~X3yy7V}GGns$QiC2ePX1uVzMB_}P!{!iXIsWIC?8BIWLwei+;N>0eYtGB>`q5hpn3qf-&VLjghc+p zTR>GGdl|+m2^OF82??P`7N0cxFkK(Af1hY!_*Ox+c*mGcLCh@MTmN*5Ab;-0SZ3rP zTr5+>qFSe4bi`A{6%X(d(W6>{fr4BrZ_zt{bN>zGZ@Wr6W>YrG*<^eMRF#9C%F^>sY%p zctaE`j`Q>3txgWngI(drJzkq>7v_Kv%u{ikhE3V!q`@4V&nK$1sc;v0Tkxczvp2QA z^BR$I*AS;0gaoSND*rV}7%U<7cm8ANB)4eX23_2fE$24?CiiecxnOoS4JbY0a!=95 z0~#>kE4+RyE+IP<^vI2V#IX1lMm!a`Z=?8oV~3PvDjt%S^x<8a9RDh@r6}Z_&xXNE6C;N~|qA`%N=13za6^%`L<>J`?1x70D0A;+@)P#J3=^vn=gt7FsentLzD1kaaY#WREUOGvpG%8ZP?PV{)v-k z>=sv?41pWewq3>aWGeSup1;{Hm-FrNlsjY3u7Ye9A0a5%u)VLgq6H=1h9g?g8wElO zUc~a@cF#eTtElpq0(c@CC^orTv@}(5lA2!6#V_mN)@T@amY_W^G=yggKhr3}y?s!f zSayC{#z0#q^XdJoMUMgm*F{Pv?JWm?gsUPSN(v9VvrUWAkw^Qpn+m-6w~?cfJd`e( zp#SOMGXlV6!uBsrZ_TY$IENxXo~$i#4IGkhr--#Oc)m@yV*N#sIqO+^DqaQjMb`$` zvH(TgKAzIE^Ov`9q3+0=W*i*%D)r>sCM%!a3$4Ga!Rx`7Rf-ctYrL@9NoG;^lmFua zpr^wd>5~+S0{a7o`tid__!S28ZtwQ~v)y+ol`1C4#^V3odMgUGmCM^y+QrU=Am>F> z2nAj7>DX0O)tZxsSPLFsen$`%5AHn5<;0;ZxsHJZl>wMov8qv&uqHPvLBq9b0%N>U z*g-RrW;yek{|(0t1@;XKyyH}iHZ+K28h?DwV_GROl~^P;Qa=?#099Vdw0z+zv({&K zV1duFP>f9KsJ+Fo_osa){kq9<(!03U)s>px0e|JQF%**B=%(VWeFL~Cgjp$$tq08c z{pmLGA&tXr30Uk_vw>*rN=JASu-6;gAP`fXP-zNr z_0>0+Z>kdPUPfVH$woWCz(0BTU5%MNn}-SZ@>%*Sa?XQIISW+oK?y=ko6+h6KsLP(feE zTXg%JqMx=dpu zE8gwxFs!L-@knF*<_dAvCg*iQ!+uZbn|L}yytFA|FU1DjPYmWbHhQ4&Ll7qrdk}D# zyZ5P~m&6~C0%SM#+bs0E*oMDAuGJ^D4}QQA&TzW>RD0QGlZl~d+-cjs+PEsr8cd?h z>Svf|?_I%c%vz@TEQWyCaMdR-o_|Ivg~D0#CrFt^S6)Nzp&vZQ3v?Kf5G`^Suz*Ot zyw&&b@RY<1;ftPMC02^exj4Nmnm2VljVL3ik_WAy`$!6v{7_f#o$AdB@YY{0crg8< zQoeMoZOiM$n%bbd*}fVrhl2M4U>?r}%+C6mN7wN~+s!n6-ajnO*wLl;3SJ7JX^r$X zG?TwtP5n_*craQ`LIjgx_L_YBo~nB-S%MQGaXii4y=KUAc`8QhxE$n^d!1rJa%_hG>Ma`Us)-bpBS$)W+HQ=lR)>D)5KU!%`%4z$4jbIyxUr zEJPX@=E3u%o*MAChK%f2k-o{YRa420`i@=SFdL_>?|`e4Zim$88|H+lKd3UGP@Z=) z;B7C?X7wCD|K+q{f=X|?eJoTy?M^&LVEVHl!rpX#)75=Ik?yb}F@cGvnpV*WB|Sh1m2N)RIYqv-g;Izq z^kOTL2(JwjZ)O?I9u|B9Hz21jgjABB{H1;HD%v2Y7h(x0LOxPG;S7-y%*=b68gO^o zxT3yw&U+;nVKM?|$463a#zd~tyOV9lBWqxZ9^BBDY0HQHZw~)L4Uh#6P)nlb*X_Cm zP!uuz{{NS9i$M?Lk@wKA`5Z%h+GDwNfrt+r;NU!&n7M2N{0y4;IvLlNKOhUkdUv6- ze)|uF;_1Kd&$2AuBpv%s5<55i!A^Hy>wmMY=cP?_!=#no52;90Faa%fv31FQ1BQRc zjv^`aH-?2i47)7!YtbeHHn>DX^&87*bcvO3+cH*U25x zaBjz!v&UoQ1?ZmKXUZ|xovrT(hE86{ILjCTTBT!@#Ng9)0YC&d!C)2r zeDPG%fFCob50E$)8@;&a7sCQBpHT;l-OU1s`uDF^NhJe#ub)yl*+c%p?{9jgQG&lD z@<4iMcNVS2Ovvwa^*g=h&*pL#rQS?M*%m<;yqqB@?U4`l+dppKXu<6lyfj!#lHI3m z$$mh2)%bi}+NJ;fw+=NW40bblpTw0u=4DVfjx$c?Pba@~M1X@+bbRRvsV^706RX_)a|LpDkg9<;h05&aKG7{e zrrLycHgLu^g*KhVauJOZj}o5EKOR*f2Tb5csL6an@Z6z`JHr~&{Qc^uvpI^lB-#@` zBNb=4v}-GIJ||HpM%F7V@51wa_lv+#D7?pP6BkOcfQ)-TJ0FV>D#61&(SQ zt%z2*acnZEQuupPAAX76+QiarP?yn%a8&Dd}}^ zaPVHpIi5@Dwe|)aC9#BKGW5)KV0H(UqP1E|TO!c2f!@n;oa_}Gt{Jc1{m(2>6@>`m zEuh)7-hMmT>~NwXh|MGfNufHW9bW5vtrY72i{6I#k7-HqeRa>B(W>WOMTsp>NMfNNbxCaXrC)i&Ak% z)}Ef58{(LJAV467r}&lv(Uw*%5xTzdl`{>AK@wG#O0{}KOSHho7Q`+^<6c0Z59Y#} z9%Vhi$@H-%xOl@DVn|Grf(tAo4Y;F|$*(gh?km@t2A*vs*8{gdrvUm#7oj%qWh@Jd z$!-B40g;#mH;i$@vp9dw$zvEMBaZ zA*(`_UfbN)iDKwM~eDQ=C(*(thw8-5HNFK?jyRrOgQgv_uT3ugH z2v-ftYw!3rf$ZlF+tg2=_ef&eR65Bf4=yukCX#E%LN!(+CyJXm|Go1#ouV{b=Jgxb z6IQ3)L0(-x9OOegY==35ArZN8oUIJIMjXpL?7D~Z97XaXaB=h**MRVM-D-y;Y}Y8m zN_>fl_W&5eLl+J;?wtX5qt9;vG^XFmF77yTk5JqHUEUbSieOV|<1!9PL6C#PN5KT) zZ#iOR22|a&&_jb#7hr=0>IX167y3puEqXXXAOk9K`)0J8wm&?lPJ+MaS@}J#zuur; z#8~1w#Ssap;{HUvE&@jvGW{_wxIK4W6(W8R7S2)|tkO1JMjOBt3p99WMUL*bQa4sl z9~QSh;*tK&zB~<(88xmhFIE6_(lwIoXu?0u7+x#mOfMy)ihKkU8&o<1e$^sKAY3HHqb=xvfmO8u#U_4K<#^j`p$x9 zcH*Yt`kiK%s$$!@FoIug4S869)jq5LUdZx~HKr;qO!)Rz^O%qB#^c{k^L!a50}o?4 zf2{oi7Ax!Wi}adDY*ubt1B^6%9ITSARglUHSLycP+hE0knLacdO8fQV$w(JuZFF#K zPXaNhgraNT+46)Bb#eQQDkEGZ{nG0}EvGD+ocL+L5RJX|PXi{zEbmljneLFQGfPmz zzMk^sF~0IazUJv4>?LCS;oW}K73JN^=5Hq=3&Aw65yFl5P>FaPALadnC~?#X21 zor>P;P@v`Sye&@8lotRfKZOfue#tu#Fln4J^m6|s&E=e)mC-l2S8yXa-A2Rqj`KSy z;!l4Mcve|59>qliRpgIHG5`te-~}%|XXl_dF`I(C1HJku-$uB^G+u6fb5s}8@)ja{Z+aLN* zrqHrx^ZTh11!ewen^N=f1XB4?Y#M7+fHt+{Str(23{?Wl{HH)@4hKQKgRto2XZl{qkRhi)MXa`)Y9@1&>_1JDY4D3tdIt@SadSU2 z$aPWBjGZQL-2M#vy7n#HUj>iC`U9v3p6IxJqHQX76W-4mL@i$BobjHy$b6Wrg;$SP z!l!d@qQ-rXGrHsk+1FN?hy1EIBmrPTw*h3EIt3QuKuI96oD~v0Uck-kVpyUB_!N+5 zVT5T%%wFSD0t(dm{0KfPOSzUi660R4v%Y4sUx&zUIO{l z^t6wVEd`fFXHq;$u<^Rxu(hIxJXPk1oEQ)r-5BP5onM=&_UNIW6Y|~yG>wvkh$`z_ zINmLk>E-GLhy6li{XH21>OU)YN(^zo>z{7>B}_kdc`up7apSyX5LL>HUDq3E_+fa<@#(?~Q13FND6H+L4yFd&(}Y;yYYGcc zKYy?HXnrDmWh$yWGez;ptT?tHT*gM=Z-2L(J+u$98X=jv@osO#=vE+^A{1I+4d8g< z*A~e!`iAC-1`V2(4g>GBL>m$$d%@g(g*3Tyui>f<-_QPCPCS48)U$hEfwSDWXTR{{ zrwpZXpdUmc{G5TaH7MT=A1k^)S7nI6JsE@qb)-0PHPCNuH>icLpN5muG!!%D4`**%Q}1Dm(WT3DH;^yxnnOO7^74AW zHt*x@m)b_KJZ0j}z0T5sQX@&yOOm{_(@&38IAT zaN5&MI*-L+-uYlZe2vjQbp!e%IsNlilC)w=9U^WWhNo%p(WE+Jb0E@q&|)`n!IsPR zNC<|*;avx{;5sjkOOW5)$^L}d_pD=#nlg4>E~Q?B2wV%-AOxOMl@!gJSF%b0hsE8F z!Z$hpBU3!JMe%-KSgj{7{2)bw8u&nIa^0GI!FOg~X3_Abcn<()CtsJ#y2>X!E|Z!p z$E*|+)G8GYcE3$BG$jyKowgIujytR)jq*X^?@Em;5~(G1Uq3kEdGtGOwc1khM+xFD z+T#0jt!`+@<2ORd<(>f&>gJQbSncJ;yfVgJ-cA)Mk$>uGRjt})8+y;H^iFb@3d1X+ z`Q|QV49k%Tk!)LU3CSfphsG*VRH76sx&zx-(3*VvN7Ez=<$vGbFon8kO;E}KtAqIn zxOm{Im~!h1t9b3Mv2%mS-VB9&mSdU1frqQKrxP<0<{@%66GW(thfQCcKNmZCFjTGG zKo{#K{ce4%--oodHSA{Q6*7t*38v;XW^6j5a`E1(9S>S$`Ib~I6)hbX(Cw?byjvyLZ*eP%vBzYWvRT-EH~^HmcOLDl0Ct5Ek;_wJtJ zaf?TB5uqcP*8sYz`xY!`UW>K)3WcnKCpvA{RtvrCFMT%f2FTVfj5n!L9950ui z2-AH1x8?Q_Ngfv>Gj^w4C3pSxb2qpzV=gdEw3ygZn)R1FYh<)kGk>8`I^r7o#TM|2 zlB|As)~3VPvOL0LAK!V-3T`arrvoPGP@*#8rn1LV(V;6C6}X3?4fcH~f2a-oa}drA zo(%U0oiO;mb^0f8*3nGwON0>@(~>{=cKe%{BXh*Nt*$#Ij2=tKC-c49Le3h_3iUJc z-Klml>fVnD*JIv(SZCwyZVPFz516rQ-RJ5AnL|*~Z$_9WF~($*70A0D8`x=|(Y@_u zRT~U{vL;1I17Y&>2lJxPL+(%{k=cAS*z}AXQ;M033wD80T?WWMyt&N-5{F>QO~tMq zyckyK#N1Ox;}>=G@4d>Nuso4b$SdW))`oZilC0kVDD{nJsNzK;OU<{RCqu-C&mSH> zV_3OuEwbvb?DTGaD`cszZW?;>VN1}svUr|MJF=DRi1E&yX>j9FhUA*R1UxSqIR(Q_ zb1Rc>Mss8lolAHtvL<7`Gl^|!3xkP&{8-eq&ZXcj4CI;VFftLpG_2c` zes=Wr;)u9TIDW3iLbVKH#cK>TQ~nfpqV+S*dERykTaXD@po}1>`L+DZV54|VX8Iqa z!bH=g-h1uKsm3=$k=_{T@>)xxr>QuJkjsz+|J@B?K?$Ye9Zq2A<|)= zxQzQtj3*-1++8>BIXWSKr*QN$OVty>BLG+Q7}38_iklbNiaoNBG(rV}NVsf|vm@z+ z8-;T?#Z_Q_st1;!>9>pPGig+;5YE*!oBSt%?*vva+Aa%!f3Vn-8qU(C?rfDFi#HNIMKW1w+$NNXk z$&WZ=rBPDcEvD$S8vRsX3Pxco0ByGqB#zt~(piR+>)CZoOQAj%O`Wi+YD_)J9A`tb zS8AE}<%6C-`~>ph?2P4ZvYOMv8_U_#rqrxU_f&O0gZPwSOW75xwtjM5-(6L9$uqM- zPOxa>ObTwTe8`Z1?Xf;w(x$D!EA%+|lJk-l7LN4jSw9?43o3~xtS(!F49mWQUk^z~ z?oI*FA-f*|=6&D4O5Q|;km4<}%kk0BEkXsg7>lv{5GDl9T=3wEH2vX9$$20oq+=+= zX_hwKz@p{VZ1IC$lo05ZL!A*W4fB3c%1O}i)$4V^IBIcJpUs8y;u(Zb#N@tXfMn!k z&n5w2&UUf_|8y*lZHL?R6oW@DdG89X_|Jkg4`K~8SskFGhWoWj@fr@>kT*9KN!aO% zj;KJz56H7T7i6-zdNIt_aiwA?C;UN=b1u>zZZp4_Z0^khoI@-`L>mG7;M)n8f{HNi z!l@NjANqKADwl9?n#LlDu2zN6L_vw(a!$u1QSGT#Ak$fxI!Sb z0UYvM1ekPr6V(#c5X2Iy3tr58l>9jrDH-8Rs!04wJ`LHIpuoz+=NZnmH;Q>XTl+TE z;)Z97-?-P#-ZZoC6TS1iMb~VFO;+b9ErJTR-Y*F6q02jBluUV*6x)`w8neR*wQR)i zVd0PE@%3DdB&G45&L?H{X0GilN0-q7Gu16Dor9E_?Q@hBM{}ifwT;>#R!=f7x3n0e zfQU}uI8!-J59CxW0cELuXPm?@GDhN9!#cb)hS8>X41LydNz<{<{u`bAD9?+QE&U+G zIWWl0s@n5jzSPg|^u_H9g1P}h9+lBz zv=8C7NPjyvN8x0Rr-b5MZaN&fiC(WROEYd7D?stO+}bZ)kc!2WNV`g)*aC4<5ON~B zmdV$52+t5Wn#*IID^^z`9b(tRMFqm|J?meMCUD@M9H~ullzysuTuifh(F{K7BW#?= zJ`Hy}MA3XO7$XJ18fXIgA~f+0EV?Zp7c$wMLQ0Xn3;qY{Wi+$zjK&U#W{U!CQgGdI z79@w!$uz7|VL)aGtXFP%!4c651oz5qR1RH-bqwjur1QT*_u^JE340j5DxXFN!brmO|N^~Bgp zn&4EWDOviRp^dee`24UGE~Ood%XWfTKE-ijs?Y83;AM_Oq{m#Yy z!d9YgVu9c2WO?N*-a=&z2W!yMFXDuICqyl-0=VP@rFz+5nxuGM92?U^56cLcyMP^4 zAnJTZh-bpI=cl}x^eI3xKmQa*y%yMhgMO_3s zZbXsKVAAZsJO2`^EF(o_m(OGy!S{g@4R4D6VYHKL{Br!M-Obb{dZVCQ*=W7m4H^$lcKn|rgwv`cZsXQ5O#tp zlw!9XernK(-DXN1lE~Fm%&b6Nr7cOzlG^-AI0=MFw>ABYk4e(s-BUqHUCFbD zgNmA#6lgKzXSg_c8D&J|7`Hxz-Xl<$E)}!$Q zGzWh|Fs(aa#C5+nLX*hEU=7XEkk3lk&IRf0vV4si?qCFOB6F&4S#NX?)%FugA_v$MQu? zN{&}iL0k^6KyE+}#CmS@*N%1_+v`62c}jl*jd3=xl=r2Mr0INLiTaAapVO>AM3ivX zX87r?PAYZk+i}jouBuvsI!PI-v+w`qr4&n`Ay3I{5A|yXMs;K@5HRr!9#e&B5#TOG zmM`$x{dn*dh8&snGkCB6iA^$~ZH?-n)sJE`d;(MVY;ZIDC$E50hj8q;?}omFJOZa1 z=iTae$q^P1#DtFuvPT$86oaP^WwJgVS1$b8YCMaf0HH%EMC-qZRFAy_nb-DLyO>^k zZvc_zpPCsyQB#)QXSN>29>8?N&Pl-c#tM`4a4z9i>P|vORLbzt=B`@T^=wDk{Z4Q5 z#obweuhYfveEPI_+WBoXJbA8S@@et=p~LQDq)~Dzj=V~4=gk*V3(}afweVr?>oeG2 z48@Zzbw_Z!^Q^h#nevM=rJq8sHPr;ma)(du5OWpPFoG(f@*w0=4Y(oo7beB1cI^;D zhz>#bVb@C@t9-;zV-zKUK<@R;50MQa<%RMA$_jm)s!r+CSgipwx`S~7rHccjrLuM) z3-M)UuxyLSp9!L@6x_rj*4ktC%H8#1=z?9(N2?)kHWMv2n~PC^%E)*(O6zo(s474d z+EPOj566k%sdrzRy;aEZGwRXn?UcxZ75zR5!Vsq5;QRuz6TkZ;{vUn-- zt5+X?@!_896&+V;W9!s}jBf3$otk6@du*?@F?G zK-dfaOK}2g^r9t~H)9 zIkS1W(B*B$>SuL!wy`%qHM?-nVAlCg0HK@acsq9bN6(4jSK)0xbKRWGav!m6ecG$O zU4j0aM{|AiQ9i~HC9HErnU4%e(tMXSL}X?5N2Wc$+3IRH47W9Jyu}AO<=D*Ihh>{P zgM5ykfoWY}ss2|Fh|Pwjw#2?dn@je0V)PHWo30B zkg0iFjbPGn8#ammRGAa~Sugr7j}i$x*J#d8TWy`Y3BisW_N(Ws-R{;kD$3>+8ub+9 z8JrMWO}FgIzM;6jS*G72gBe{kPgc#A_hf^agg7RW>1W4?qniF6umdewK9k56InplY z2lbzaaujt2^)G$IEmS%~f@bmoJ(rWoMPU60tp_j(@dhPGk2}ljJ=l*?f(SRpC-|km zq!K7PNV7XxWAxtNA|95>$*rhcfogHeX!r5LPs>F0Q2|XldCt`nn&yU*XL^GH;D*L( zRf{QEH}?9+gCu6qIfK6`9xcMN9lJ8nQ7MIbU$r$?E!_**G3%l!M9O^>o8TL-s}IDk zrWUaG*G<-}mZp5(5-KwWg$u&%tg)TDnxmAwm~T*-uI^CEHoJ1s-2?B^9zSw}w6yrT zDtH7-)LG~iHPh)JQ4K`^;V%ViLbk^#*Y$RlB*grj46n@-rL0W6)&th9rHu=oTeFPnt~O2op+Z~3IregJDh{A~KN>6n z_nmg_l87-f>G?Mzd&_4wb|uo12!MB&`e0k!DSqTO%H4^E$Lq^}5;C6GMaYo@V)}yh z)BanAB}Ci(bm{@YVCuU0{Vfw>Lw)J@piqQ%>y**Py%h_HDP$Goc)M5YJ~`wOuep$; zEQIZ}{U(}fE*4v?2jRf3D`zXX##a^MXqoV8zp4v$+ZsgL(#v<^a(gVvOG;sG6)eQ^ zRU4J9ACw<$Wim$v02}7c4)bQ+OsEHUpIce?sI0*jRFaK!HU#e)n=#S(lyijX!RO%?kbrEg$nholS{I_la$|>Z?=qo zMjj)H3Rm`+JV3iAUBIrKk5X|&P5&BOYH$jM;W7=g5$sRDicG&px$186bRDiTtX2_i)HO3lQ9J7 z{&5HDCZbD%^9d|S0>yIaRUfnW&nZ?i>4_QsiqjS<3edbH)106oZGKNKA$nR@7V0b~ zIY&JH3m>$}iHf>)jwl`Y@DI&={j!5AL=jjPpbM&MC5@(HhVOkyi;5pYQ!^#WiR4~N zgSU=}-P0_F+}FZwIv7@Bm_xOU2Dt2zY_atJl*=pV_cPBMf+ikfWYM=Ls=+;3fsdbb z9l3vN^TG3|Qb+k6lwj0fO_B$~C)|Nn3X%Pnt|DDS2$W!X-qjsC`zOPj;PN%}O0dkD zH2r2&i{E-swCNg$c5O_*p4q$T8dzJ8F{TMl14}DUY%5zKBQUL*aOK%>{Dem&Eg4DdY@a{{x6GFLeWDO{}#c_~$<&9w*y_tJQ_2V8^ z`czp!m*M%=&QWa$N$^cGTjb}ydc@~8t z?0B`wsN+0uiT%McE);Dw>w33sB>A+MZ)w!HX?49Bhze&*#bWCJ3=YsSx$Isi~PJqlj5^!U|MsPbY$5|LeZ>k9N zu{?aqmpOj172jH%V)LEB4p#Ij#ZJ)9#0+jv0^XF9f=8Wyv&~n5+V31-v0K~+6qjF) zqbncP^O^djC!Z-m8SUcrbAoTWe?q3gJ{7iNOreLUEgQ$2%RW^%$OOKAb9s(Z+t}=} zTH%OmmtwxgIN{O66m9a0Bkswz87=g|kBT=6vj>#!a)7r)8T~lhJD9lYl;SyszQ*adt#%+m!pL-1IVCc3IPs=^SOe8@^sh zroE&jr`BGpmhvdrg+Q2`@3?3B4WON`i(Nkw{5Oi@6%xp-Ntr*1>;xG@9@a75sdR&& zsK&E%)Udum15WgfW$01qr$;X?ViO$&{x%H=%b=SLY%k?c!slS(%5IOe$Z0f;dY&y8aH&*HiqUWi1d1Z9_S9~A(HGj zU&1&2NWOF5e>5=xT31f=`t7#{iIB48BsS1Iz0Kt9@w7{4D}CY5IGc8IT!50yL5SrK z2WqslN)LQS^MU9qXv5oHQX*;1{~B24MkkC0M4Ao1D2G8eH~K`d!XMViS=j|6y|KEAZNF4f=SmpN%B+th4tHZO*VfWw_As%&!wPp@KB7WAwLKLy2K6y2 zd(L@))KB+4yeuLGmlh|}?AWk@=Q1R)hm8Nlww;kMHN!^Mm0$>u@8BamoLqw@LZDAo zpCKbTM{%*|e5UKe_e}N882@y?B0jsr1VF29-7+Bki*xzj&-g_sW9hn6*s8heC8d`N z-)iHd(nwgG?gKgRyFX2wdG{Bl2KF2W&(SEfd_9cwWM)6-=#+S^rb+0OFv=xsmh#0O6xzC-lwnJJ!&-#~Wl@6_cCV2O}Ht0|fBTpIE>lS%Nxv(9FL0pzn~&_k1)lO!jr z2)h=(Ajb4f%rh<9YVF$}1E0l`$O!$}5~d;l6p-RL|2t?kW|* z+T~92F&_cvNvocpZ*g>ty;;qDD!t!*Pb5Z6YPem-%bpf_uPqD@ZF5u9G91)VA6H^Z_q#M1RSeZ0a58Qg~+mfdAY!%wn5QTMrji!UV;6rMU zyub{T{GM^Pew*cnE-W`tj6wZCi0vHo)MEEPP^E`@bd{cVY z)7`@Id)tLbYw*2J1i1WPy-W0et>ks(2yCg-r4gyw>{AJBZx>a(B<9y%_voYloBsBC2^#b^cN&_LpK}lXICvqPuUSjR^cBqIE1NX= zM&T_-3P>AF+$!5P+Pt!=OZKIb7Bs(E#2Uz9oc>kZc2Hz73V0k@wP0NPMI8sh=~O_# zMl3-J?k(ggAq~-^zzn+CduG+>tKnTmOH8=^%tOad<&Kygi?G`JAfm?Ke!H!b&yr>< z>ea7OzB0~;EPSfhAp;7Onj&!@fS~9G;Ax0qsUK+vRCevlYbALu$k0?rAH5zHUmhj& zv;|PRB78}DRnvZl8v?WMY!lysEtOujLuH}7D@@zyVV+gVZgikT-Rsvg-{ji9ADnG; zRlq!qx8V{h zxuhLy-zJT^i4koWTjEnyup--b=`v~(urJ-%O`u8iEX#UCo(}W+gt$o2J2K5KLmq-N znu%1BSp+>!k}51!;i^^t#0#(FUOZ`HkPNnJtx*x%+ZA^X?13*%hW%>|&+=kTIKKlO zm&)(qOxweU^_9;He_X4vz8LZ@S~R?^!RZO(iEZk(N@9-a@v7?FerB2=O?&ZAP36f*#hbF z#eV}B@Sf{qUx5@ragU{E*R7%XR=X+(!iZ&2=n_NU;L4}>g5x~A$%#96drS}0{4p+z zyz$qnWmRc0RI5efnr1c&2*25Sx!(i+oD~-G=Yi;Eh#o+6#8k&Y2~>z<31tzuzPMYV z$-F(py+x0~ZW~vw8(yx?L|p{QL{sW>5OBJ907t%r2Y2qidq-5-bm{+JN0^dX^)od`SEUQC zg7;drg0s(B%uTk)v1yO7TP;qn3)>=VVi785F-KS}!OALQxTDLU`+4YFN zQ&`u$PNw`$1!C(RCOXzG$EB#P{G>~!v<=X_g2@sz3WQp;LUkE58??*>)}iQUb}CGN zpsm}kgzT?~bQ%6kw}K2pg3^E!(VE05SpC_>Qqr>#DRv`{v%L~f0`Ju1qOc}U7421@C-|0kKq`uKU} zioCS)5oVR!QAGmLP=Z{@iEz3`n+~bzX}$GIA+SdW00AdsKs1EV6c7^Ja13bCaKLXT zt3{I;TXft|9ojk<}>V_P~agGuDxbavq_GWMACG$kA zs(W?WWRB|6kficlUU`NguV$k>6lR^N-H6IsJ&Q#1_pdrb>9NiqR4&y9i_lyD*h24L zg&ljGhe$qmw4f$y^#6p+Q9Eu@yDQ|{8TJ(?yhpoC$Xzk7%luM;h1wvg6QkJeZY9$V zZfRxKO%59pbL~Zkq%asC^Q6t$R@ASo)u;Ek2R=+{?_nWVfLhxc0LAjd^w=F3U$b@B zu5zf|7;l=L%skO-LGdwnThy~p#GMjaVoGUqVikd#?aUcH?hlMNJHW|P?}Y1L-aoaj zUtg>L+UXuu5k)5RlhPbz%-J1*;#EqcrRTlK`!wW8PV~3!JA}FCuCkPPd zVus3d08ECrc~8E)Z}YTDXme+lw%;eD7Iyt!HtDwS`XpEA)0d|%G*LSTgrx-2VHq(&-r3^)WM~~S_qX9fHLmCcN6tfr{ zMPC(xuM#|C5WL;^I|QHgopz&BfI~*ey6tN#*hnxC3>Fd7MY`D=t^*~G^(%zjVim+4~bvCkp{wAK2`;;pQI!Wv> z5JW6L<1YZb{{$!ceccD`*|O+&Wn`%Xy{9@E3;?AaJP(5CpR|cpN&gntDQ?sn-Y=lm)$Z$`)qRY?^eJKrX_oE zs#JeRKy;Vab+lvt{*^b$bi%%_q=IMzuCS3fx0p@pc$G^_E2?45pYDJ#i_}-{x!$P9 z&EgzVkg$S(OVcCy)~<LEM!v*gTD^zkdlVP-;wDC zHi7u3gVf;fxCapt5$L5E*^(phjy2DY=-eTR7v`$0a=d z>NI&K3p%f6=_Sq=>fO1^a(KEmwim=(k|ptY^6hyoA_(6;MdTZ*ho9C<$E%TF85=Qy zrR=camvHWvoQ4a2B_%vwiNnTv<2k^njZWju$N1?8zz5UV^YVzGKK`pcVA~0z1EpWa zzy0*!+wgCJS@eD8<5k+YRJ)dLa6?_FO}bUB#&o>dR^zQROB+k{#- zG-Ld$mNE0=2;*$dej=av+y4n@zR-=M0k!H75SH?H(}<2gE1fa$54?Oi884N=9V3A% zs$Z6dR{y~^N})_cU10u0JK_>?y-8A>`J=KonPlW24XQ)lXCT*jM7Co;^KS61yi9ML zu(e7;n$EQ$@^5Y0?8F?!fpjG0HRV+YO)C|Au$({n zBT}B@2ypad=#DsoZi$yos^)@auP;5cx`M}PEd_@KG{s6eH(=sAVKoo$75qYKpKm(b zdBaRk%=@YJr&<#$V~`TxXyPIQvq~N~WQA{x8~6nhNS?h%Y%FlmEEn-Rx~S+Rddpt0 z%O+H|QO+toN%u|*Z!ai>(M-EER{ZE2&TLNl+g49>Kn%2Gd3o*qsIDEs4y&HJjMw-* z$Ad!kt?7b62PJ}Y`L%4L69q^^K6v`){!33`!S@t|4I-fZ|_SHd1Zaj07S|{ z$c)*^Q&|Ga(Ap*Q$FE`o!HnNp_|$uEh21Q!eya2Dpc6&<<}#=3ZY!x~Fj;91J9ho^ z*xpv>L9ZO>#Ran_H-wQ`_f(GYi<5Kk1a_BCE;59gPU>jw?}AODeH^kGZjCVz+^8cs zTVj*F?XaGLdkH;MkTi|U?-EbwQXn*AhNvKLZzb6nwZ^_aS%_u}17?s1Hy}L}5+--~ zAG5g&i-;c*2LJd8RZ@*n(PaJH?S3xe>f?<-itr#T z)COp#u5-}`GGnwbfmShGHvACM;Nq>IEa1NxE%#3@K?ij)-GWn98N}yzR|uOFOmL%@ z&zxQJd3vi7JacDCEN0t{1y;BrpOO0q8pUNE3!bm?fWeKW=1AGCxN*&KO+8&m6F|Vy zQ`4%AT@Q&2NBu55RXPEwYaLwygo+T048OeB54N6yp11qPhP{nmxh^-t1W~~o1Kf^6 zMan?vVUE|D#970}#nI*`u#Ns>vnv*W+`O9TyUtqlmd^b{NaG#*J5JGBdAIG3!0ce< zzI~b2kDi%C=L})>M`?3^JR5C+tHjXu2_xoMoiDD9}=uMF>E9KXVb;zKlaIZ_H z0{-QFr}h`3O$rCoY{UBJpoDo^Gw-tFD|{_lv>}$){{LwK7=_%_3wo!P&{Oli zSrhZ#3ZDrK^$J7!DQkQilFYn+Z^-jenQgd7j@7)b>tOg=_|3qA*~kE%p0Tlq;@8o|k4j zDNpA*tX$I5__|v&OawhIFhOXJP!z*>80IM_>=ccF*H3o%bG|sM_f&62R+M!^I0V)f zlO~xPnQI<0hqN^F<9C|g_pC#>pocQ<0qc|DetFeIV>1EiW>ode3N?P~Cy?@G?w)m^ zU6_fWYV)Ic!Y)+Mk9|TI%iHEZhTYtW)yP`4EZ^HnTSCLi>lf_#Q*rdrL*d>pEFaq# z34_k}=mieO17<#}Tsc5rx<6?TQ_+a1+?wC&e%F#h{_;@C?`F+Nv@cmrI0sC)craj6 z#(-0n#9-g}2PCOI(}%SBnh(GPJrtEJ3id_-qc7Bp^%IZ34o!45-{=GuJF?kcH3?vC z(crX2&#ucGdG{Up(;b}6R}U{nv3fRZPNA*FHXO6CVh(oX zT*VLg#Ms2lKH<+`6idC0Wg)M25AtDDy`eXCY?eq=HsQeM5pMfH`ciSDf*U@~4Oh*u zwqI2*R}+4J9$=55c#o@pxB3y?pP)p0l@hR4WODQ&L(nW=v)Aaa^d>1QA=KbmsfPP? zr%9SIQPAjBoxs7Rw$%JFjL%WIfI zFUaI~5yYSh;bof4~QTADevH>0G7+t$A&1uo1@HrJ5lbiVxZVkkr$-wRf6 zRu_}@vH?-v)-C<{x!Mxg+Vl?E%hcArXf@y+qU6i|jov-l^tnB^1-{V~9oLGeh0i<% z6h_8N^CQg=x_#*#HzmDW;@18Qh{ zx8*yrP(nBU)i$3;t z=mAevzG%%hSSj$)An1o^yLNkBzsmtLNPSFD#nd%d>Bp19;pub`<0A~k4MBG`6JzJ|C=$>^T= zgyW@LMu^^0SwqYV7oy+f(qj<-(&G_qO@J_eF3#g|nau}8Pv20WapfgeGP#4T%rB=n z?ELZQiqIrf9HSFwl7@R75-95GQOCdiN-juAwE$km=88W`89TY+SyD*@cD}y1r=VD4 zsDbNo7J@2y|LLrr84m?o8^3Xm2SXyX=H?k&h(ZwUDi&0xJiG%?>8Gy5IsxUn=cH^va>B7Y(%1Z zt1dp#A;Mp~3lHhG%f^VD>Wu0}=_BLQDa{*QQ{h`p<;$r5N7Gk;Mb&m)(?~PYEkjE; zNaN575<_<*($Yvsx0HZVN)IW5G>mk2hYZ~BA&z`ICCn?=RbTlzQm-Wp?@w{lEmQWwS8=|0HLnk?SGd5t`V zjuU1?KX20=5VUQ?l`ENefqf8xd-j|fNtooy9O}0Inc{k*f;_WG*;AO00JZYfo&3bg zq!BaUO){;&Gj@KU%cm;&>;xgpCKGbDA^-}OMy@uHPU?VF_!KXwyT76!Ndr&Rz|@x8 z#kM(n_GqE%ltdn305(pmMD9A zH^)Pd4Zm@gXk$?&6zqT7POd5vJm_rSiMY~rDs6vce%QJA&UD=SyP=B>M8v$8u1x)U z7wfz-necLT#OBk~pCK3>hqbLYVy50C*bFf(!!mp}KoNC8d4hUa=yoGTqYY_-p@h|j&!aup zVtw;(n%RoVi+RvvW6yX>&-wSEVb1H_BOA^o=XGcJX>uUYao4wu^SW)Nf1RAe%4U7O zr>|AojjnepJg=Z4go1rJB%3H8ge2k!=*RlAXYa|no$a#S+~T4ATq2`jIXGRr$3$W9 zGxt2;LcKfo4Lz2E*A}op9LkZBaLL6pqgC?SRekZ`J6g+01<)4W*UbN9Co@3y;ugUN z#pW}han!;wLHGM+LN2BbcC{^%rx4h~&ESvi*;S$K@57zFEGF^iPj9j6N9Ho#=b(;U zjA~#2#L~ubl`5qG0p|}Fxo_JrT+cW(mA6%rfp6d>&tQ*4Px}uJeXr{_cHd>$Re22f zmYD_s?DfftYxt`BnttoI+>JCH4#sSyxySop_f7}1)1chnRF&}lFYg>|j}_B41TYwI z-#OW8YBdI}Z`gy^cMBit9`Gn5o8=N6UvICYE=355F&TFG+loj7-)Sgd9JgELSJ7Mh zi&w0+@FZP!^PNoZx3r9xRLqCb=QEF8N(%w#ajCWZg;+h)3$B2`I=~S_7n9S9beD`j zAFo+^{yIjNv0w52`&=BV5N&HCvjUt%dQkT@;}V!@#n}eXj))mP;1#Q?KXl9db(A+{ zUQbo1!oT*7OU2@0!_6>G&6f(wxsK__T-eiEDoY`_I5~9r?LB{e(~$bmrdSre>B4%S zKm{G=bHPt$CL04V19URf2=G8d_v-IK^L3Xnku{q`%;7p_KK z)NOyCXgn=6RMu3hH?Mm+^gOJyo{3lVkUo#w{lH8;0CqKc~a52Qa!HQQ# zsHgp0{3p*zVL?@}L+aZ<70<{O4@AS)HECZ4FyQqGd&xCj4c>DwHn^#}_LN*FZ~YTj zY#|q1i!TuBD8S?aEpjFUhW0!>udX#M&)EN{RS`8R4g|vO8sc|Z;3k_x+-q_&qs&AF zshhW4cXa=BlUG|_Gjvj2>qerx;+z(#-c%Jtva}xbCinyi_ddb+f^qsfO;rm`(!ipk zsN3^5T(6ydAgaH>n$c0V99@#Fw8-?O8|$Deb;K2Y@@2}@^pI)*Rz>8{K_cA$$6K14 z_R*e!%e30arY|x*vhmkO89|D zO4PsUKCp*}4;$JKMq@8seem3-wb!DJB*8&0GsW0UZuEgLInxgp)334(=Z!%&8~|^9 zNO078b3owf^m+dUqH`#xi^?gvsaHjsh4mZ4h3o3OP}v6>fG-StJF_jckw0fxIT@y~4l zJpvX=HP$~G9-$foooe&nXg7a%J84{6XA zm?lRu=h>2fbyg4r#h-5&MF|ew&#n+LZ;L2SL^OD6OKx~r*6{H7b~`;>m)Yum)0`N> zQu71V|6U}tEAW3VPLW%1sIQ`jz&FTt1F?9x;j9C)jY8P;bC?xvop0bF`|#!_~s9^3e3*y?w~l{uVZ@A26oSjEdt3Y@Qc`ad2%byGRy z9~ii)20IQPpaVdK!Gv@}_Smv3R@I@^1;9o2znYmaR$6=S@PJ5U%7%-&#^y{qS`rKT z8)-3Qwe|Njbem5Yx$xLf^rm$(^0<1=94c$ zI$oxO!MyiOWGa}ctp1_6m73oladZUuQxoAOwTkZL%UnwfKL>nX+SEz1bKV;8{nRKM z_pYl{09+!RzJQYF(-@ISYB!aY?61|gCoJN`+h3&fzQA_AKs;1hw!+_OTz&4#rYPM_6q3Ll`W+kHT9uJsOuulI>^|181*%F9MclpTkJ<<4h4qVFh~s@*L+H zX6KgEp4!06Pqog%HIkTU8S^?Sy+EfJ0Fsp>)%md3XM_*ewm)+jbO61(y?{~n9AKJ) zRFT@9DkV`+P#DS-j2xAD%(Bb<@Y(l#z;o|Wn`{>6b;t~y*Q$3t_$8-uC9>O*fGR&^ z?#awEZh*D)aEhKb7`*VQL2lxmpno;B(^s`6ryh_H{b-Nuu)Awbo>_aK@Wkm+^YO@M zBj$L35)c|Vbi7RF6H-NJrOcsCSy6~XOQ zq=w4{BpNwu44m_Bn%hEZ;xND5Zeyd3&a4`r{lIKgk$&;%>#*qBwg9F~I)@=QIgfFM zuJO-M47A_^k`PQ=ktSrXJdoDLYmjelC(k0-yxfeR;20R7^8ftJEFf-{bYzJ8?(1oH7VlXkUvtZAy*$`Za z2-PX4Oc1Y4JiU-9Fhwsi)3`Fkf7&{&``&O00>ZfHT<3{MRC$Wj(;)IYkBz&_e-BMu zB7Kg$CSz%dY>STNUCw)#LO+Gk9I08C*~;aK+`yaC7a#3x!5Mzmo_k_J6CLX-^ys7E(VxnY%a8&HBFKr!w+qAgud2#{1GbO6d#q^h%-+XZkom(2@ z)km9D%C@_+sLPs={afthnP(D;qp+V_;k@%V!#5g0Ns=F<#gF3mI@8O4 zLNy?JD2Zt4Z(bZDT)^(%VCtt=c&@(Km*-auXwH|t;;23hc0-E^YOeQe=Jrz=OlXU| z=yvFAXseK!GRTHNPh36g-N2x`VXT!fn=6tdFoK0RXo za>1ZSeFN2i6ruHEhnoQ|Cne?~b~{L{F#JhMn)C8g=wMsp%I(h9|c)8=M`Zy>P)P#VC^?e8D~SGG%Z1a!nNMl~va1L)!bpqfAHa=n!>9G+@bO_M1-aY-IMTy zQU@0N&bbdb)BSm?Kj@O;lIvIgW;F>lm+RGyWY3F49wZdTTH4gUlTGpXKKl=NCj5NT z7zL=p`;|AVu1rMs~iRO$)kZoM5UQRHpO9uYkE zewmmL%WlbWvp!yXI_PH68|5&XautQ=a&ZBDw&x8e%{HnJhbz15^J>Zy*Pd>2*a8%) zp)<|o#@M{N=VKCl6!PPN(E4VPGq?@*r3@zC_O78C&e7nCc(#o0myqz{GPlIT^8V&x z2|y3{)!Ezt?@)=HfU|!6$ewOI8Id^aZ!qn;lAW_JGo5^K%U`o530bWYBUl#pXs43n zbmL(kj%?GfSX+JX*FN;W%GZ3nPvXMk69Aq!PW9yDvYa*^?*{)!tdBJnVwE3#d-zu~ z$ty8IJbPyF{oTEJ$-X8yIUnYW0(+qfNkEN2oUMkRpK-&fwoW!@P#hu5_F0DCV0Z)L z`<74w|Najo&ZJ3hvKk=qC+XV!S+Q=MBj-eUf+vkp?>neYJCo_WA0Mt?`pOivu0VMux0U zn+2t!`x6}TmrXxza&r+*9MAF<(7%{!wf^z9n4q5h_Q%4%=CoZVKS#;7Oi^ghWwkK^ z_zC&2V5YZ*(K?;LXRFY}7AL=pSWQ2E#xijW*A2o$F;_Ia{ z>9=eIKr7xVY=O;Y_XGmk?7+=u0Ecaix7e2re(D z{RGO*epdS-PrhU|F2|0zB)N%3n{v(+eTaQsn{@h0`PqxiVJej|hiq8SSq`mwS3^C0 z1Cbuwik7&Gm~GUx!57m;T+x)s*~}7=XNdq8>qgMxEoV`~Ai2WUIe7 zU=&8GW{nl-M$|c%S+ZxTLnO4GV?jBsFd6HgJkvnfXh&D0y-i?aH+B*>V*ShE)pFNfxuTZwKJC@Up&l=AYW7%%E0Hw6V&+V9rDb^{A$Bs!37` zun|#%A*2YS!?E+=nI#|hagc1wN~v_n;jPXE$SnP)!PtL%=&~1=<_-(phU_6q= z)OJ7M<$p%$k%`JsKWSWg$6Q z(`A-@(*!u@QiYhrg4m1BUF{(>t~qs5kPT^L~5 zQutuQO3JoE!B^M=d4?Shk0?F74xAh+h#Oc4i+wufNtaZ;NDod97o>hjq3jWZn(%-h z(bZ4BI#VRc8(R>d`k`Q#?g^vPg)VV|Q(U`+q~A=(cPruk`h!0K%GMgl6HipmH&*lWo4y z9Jhkt`jSqb{2Qrl3wk!6ZPc}sMoi;2`zxL5Do%&Veu*UM)k?}NA3l=}DCr)uA&mG+ z;PN=foa086XWuCzqMp?`_-nQ9aAc}c(q06+WqiX(VtdIjd<0K{0nC<2i{b9Z6MHPp=Ri&BuPb(4)b(WPG}wbGf~W_ zYs=%v>R*W-??_IH1-2OQ;<%N1TY zGxWyNO`^^T<5VI~DGrGoihCq-mP^H*=xMt?k5c?t4b7duS)QQtp%zWg9Yr&zJt=`z z@+i&lz0G-JFLrc%obW}r8+csmAk?)$gx{Lv&(xO^=J>8jQCSY*JIG1P&@G-p32OQR zOx!1+wKpyQFfqNzn!FAN0LKlJmKDGu;SWGt9KcUI3Kv69*Z2qIui0+btg&SZbbp=gU>^`2pw@O!C8VzcHc8Ow39=XX zOlhYr*ul?xzXO{qGY!ZA<&J?TUJ1I3H$iUeh zQAzul0)_SR$tPB2UM?~{oo(ig0dq{0z0Y=rH@bc0tpBl?2W$2}W$fhhl7leQ=snqq z@)2-wa6odAf#!UzVs*ODJSGDzzUOl-z8)<+6(Jnp2{mX?IaVF;esLy|#IA2%b0)pj zCv2Mn3o^fA)&fnVXh_-;vtfVLG#X!YjfM`U>)hXFY3JTn2J};RK^fH{kIgBc{y!Ih zPfk2v1Pty~W&i8-dLKCDQ17zEdRhS|4gtTv_MdspMgVxXYokBK7oZeg1CXM@Pg?>K z)>q~Tc*tpw6G{scco?SU20Xh}`ZGv@e!;30RvW22^gLE_7&^V#PbLg?5Se8j#0~yni>~m?Klt)7ZVAMaWTiK`}io zty_gHyG!D@r4zVwhiMqJoZ}KLNA1@iU~%;DC@`9jwz4!%;syH-YF9yvAk_Fk|KbZqf>XL*MVuaN9ltj?MglVI&aG>;JICMAni3 zF~CdgkE$w7DsjbnM= z8Zsb1pW+kPCPIxHSJG|>rehI)aPaPOo=pq>7ZAhG2QUv7Yrl)VZY72fkmEnC*QdS8 zH_41IBTfJ(v!qOe3FoJ#DpEjvB@S3&`mV<--_%?lE(&_?>3k7#&{~=)P$2;j9O;{@ zW3x={D23Kf)g#)5D4!i+pFQ9WjG15NcUmyI>kGo=naZGyoywXJ=EyfYIFiSP&^pYg zz~m>NMPng{DTHn3_$RCnjTJjgQWu(Ibk=-o;yh>^N>n~PU;DZdU*&T`U92yUL{O-V}LJCXN}?< zc>0N#jLtoq6r}>Keiv(iIGycWwM7d6+I1fi(1>i57Uw+w10?KpfC~wS$kB((c{`*5 z*x%jB$odtp-7En?K_FPc=QdKznOBUX)a+=unlWcYmh!rRS3TgE zIbHj-G{X0!keptHi~SUEE%g}SD9(e$(TXR3{|}&$~*6>#(Tv70`?j%G<_H=H!Qa@g+g$@n<38Sm?YtCf(_rgSNq%Vyt8w(oz6X_(#q1=Cn{7zA6{Ys1ia3f9u zJvP3#Q|zYxhr-AgP)QDrB4v$tRiR>Y070>zW()fQF!@u4YiER%|04 zv-ODnhC!^!K5Q0GD$b*SvG^C&w+XiV!wkGRTj+P1n~Qy=X0Jn-WObD5Z%m4=7o_z| zl~H%<5L@)vkZZUL_^HQ*0c3`fnbqzfXNfC!@3`V76sv9vxLqoOJua%IeL- zFL<555`>T>sVc+<&I?xsHL^#juWd8j(R({>BPu7cK-bEUi4TqVpzE>6k+VBTJ{o;i z@E~Nv1)NMqc_m>UF!kOM?L|)7j;A0#lY>v{Pq;Ro_>3fQe12lf3OQp{;j^zWZmj8g z0E}N$4@8|0axmRJJYpAt-^ADB1lJPgYaJ$^ejv#%!wnPa`sUM;XtXT!mcyvt?y`4t zmV;q+es7v}URmy=`=zM44kZXA|Ly*yWz>zg2{;9&lNolfLJvD~`J^im~? zH7F1to^g)NQ2Rh3SY><7tBN2hOk;AZxc3P5ptx6H@xu=5TZUji{scRPVTPPzO+*vr z`84_iN)~{oly2!{HR1 zznBxQX`(OT<8JCzEUs)LG{Ta)Osd6ia06Eg+w6d7fEuAG2hyu(XwMGJ1_3X*KZ?fi|(mF3cOq!=e#rb!)gM{Ww}ZCVsF}N@bgngM7%-=HnDN3fRchC8@N>SEME638gnNBHJ& ze4;4DiSsFG=h{{teHzBrnK*Vs^vQ$r3w|G&0o^Da5k&FS+rNU}eQSRNRZ{k&%VLeu zH7q|uCb701d>F<^8?fzA@B!hFHX7HShCDYHffLF~Wiz`aZwf`X*+8xn^rKs6jJqUd z>243mhC0+_V?ThMrM-FZ-VH@M_FFwLbz+Hwl8R?6vHlCWhOSaY#I7!$Bh6FJ2RN%z z=ZMahy;o3qMok;o6#>UGfO(7!95OFUPl1W6qT$^xuo7f8LE{AkP%Itq^S5DW;f#rH zIljl!emZNFwTdaOKG7CaijV?9VqE`7Buo*lrBMAv*zxlc&KFTTAPXEH=5}SQl>3F! zt~c$80=aG8WFn`c2&t6HAaZZL~=ZwrYk`1-foOW_4NaJ*h<-+V8}y?f;9>V zeI-$|7j=Z_9WM%x&NSGpml!Ddl{ZHn6vKYz-@JM=Epc~Pbr;~}eSK>e-It4Y(+kds zbmqjh}vR49Oup$fcO0&xa9V|2p45;T2F~gMAm}m%m#+fGJ~n^^ zI|{P>g_Mj8mFMpz;NG|nkgSRT3(s1|*@TDt+w&!l(I3|RPYK00h~d6xfJ1eKPm9Nh zcqG!*MO#BEt(PGvE0*VZ8hL(=wQmP|vW~&robdeBq1q+pQ`NQg@C}*i@&t>6y{wN? z#8eSU0jgvUPZXn>L-p~-;6;>9G7<6q(v#m4yf1_3iS7L*KD)gN#i=M$PlsRrt#%t_ zGwiK)HW~PYb2Q5W>r=u1!?xz>C31qpBeOgTJ}ZwpFjEh5{Wj7Va_=^dw(7V=!Hu&O zbT6hVR1)-6tPx{747mDlNm)6mk1Lx-He{>BNkX8;MFvNX69T^RN1+%&0GcaRU_3Dg zhRo8~h5o|32S^w6KCk4zvmMPDCet(4d~T*9Cx;3gQJ$v{$k-lP=_ApQ42c?R z_I8m5G`ih;+bY$pH=Y5H;GHRp$LLA~};+f-#>2 zaF?6%+5ep-ZZ&tNRHTH~MFQyzEL5wzqNCI#`8S|)-aj}P>pX&OxtSeXneip@97FB= zO7JfC_maccGME*bHP)|s1-jTjMEjpLBVM&g^J`8MDQp-coWb9m7>%P`*o^h}zHR#W zD2-~)cn-!bBoY<^NzAn7?WrUw=b6bL!aJ7gNABt;c6^kl(%LV;JPLW{BLgEK@Q;y^@Jco4m*xR$$#6422N!lo$1Q|L&I-$o z6QvbY*3$Gi#~*i(H3p~vd$K!+&G1(N8`TM{TuEO6{;b{4U8mKHvqZiGlOa)VM8?9p z>;^tNCoo5qH|hGBp`o)S+EYJv?pN+|)dqpN!pYwjs)Y-CFoH^~xwBsO0>%UvM0V?v zw*!{qBgEuI<@=wN`a42wcH7hDdKPw$MNRb&TtW`d+6K+17uj?!h@n!$E{URnwe+7E zmVhAGstB2$exg{ze_BCmNQjAviBBUE2gHJt`AS4h?|0>qu7YB2manb>KdA9~7c*eb z+MTJO0fe6mKHOeTmFXn{8Iaq4MSV?xZ-4hZ((@gVJ^bt0>ItcR%z-mK;jJn9B(wFOPx*dtwi$~z`WPf*gz%=>)6L*T;xo*dMGr=jaL;fN)dD<@&qNJC-5mYa(*<%glGlaWcmBFTEKZuv7 zm=gbSDy3Pj_rwQWZ>Eza=ZXuST4uuxvqr0^`iI=jcAkEKySucFn$nbBvxwDm~A7 z`Z3}RFj&oPG{b)#_9p_*YYB%oQ823xHSqLeB~n@ckld{Dxg-Yu@6C7Q2m=s~9>n>0 z^dgJ*mLuu-ju5nawC_!NWQau&Y(c&%AJmBj&y#Z_Ql&v5=qxdnMEI8{JAX>B1+qKI z(~OYjACw6lp9Ct|vs^mYaXz6B?xxhdn=2B6X{RIz@c&sgp|-Bi<{7JT0F4S6MeJ#W z$qUNaf&Z`>*NFH=zke>f=r%juKT_a;_MLj*&)J7-%Loe$&FM8-W$=VPG$om}11MXD z!?t4k7R6rb@&k=wyv14WxIkL0QP{)H#kCQ`S(#T|J+-h-z2<-N`Zsi@RT6eDgMqIC zYm$Q`{H6*_IRENV8sHYb9ULMSs>`9{*&LOHa)&1dxI?_`2y41+~O_(}iC7+vQ+-9zPFi~D5r9kvp!4Ag8o9Ow;ulkQa@3D`Xd(=Ne~ zdo=KQ$T`$g7wsm!aFTi@<-|&Vicak-?PFB)|p21%u^YNNFb7!O7Qc~Yn=eS|+E?n^tGcIT`LRPW#H zqfXWjH*`KZXb^c)Rdj%hj8eReBBW=vZPA?FquiSkI6bn5r8pcdO5#i2hD6auHupo$ z=}(GlZi0Y~WMfN_oL1CnA=MbOEZ2>HK|V~3l((qtjwiDCWcN-!f#F9|s8KQh%@S6v zW6fZ};SS1sSt`}vTdyT252O%}eFo=dBV*ssUg&*(v-WK;c94P}pNYQhs&mzLNf1B3 zreu#7e8$CtUzY&@er~|l&KG#+^TJ!bymAyc&>MHY$0D_Dt>{dj+zGxtYJ@M9{Njz; zsNvMOGLX$QwT69pLr4QPQICUlXbQ-@5h$o{;U~*D3K~c;k?=+N)oT9pqT+(eSQ7!?oM%UB6PNVp&!H*{X@3-v${NT51y7U z?C`r?65dGG+HKU-cv8A@RvjV^BR z)8nq%VK;JFJf89$5RKg^kIj{ee@@xG?b6F5%`&8Xn@x%bD*_coP#AuNoHKUicBbuP zhgwk7U^=hr4C0$I+HQ^Jd_^2Q0w@f%@Pe737p-UE1f6r;%3Qj-_PXOCP+<*-dXLmL zCZ1BY)1pWO5yJ@3)2s+s1@1041Cyzik&`plX7KYV5Lll8P*S=B3Pz>ww1W)}kcUt< zOG&sokkD5kc?W~T@O1eoW!o=&Ka_Wgy8bF^O~^pQ`wjZE}e3EUiZ%0v`cxZtebv%hrpE&f9YE^PZRdnna4o;;%q?G zOP=aqYIZWo7#{%Kd!xzB)KUY95W{#Ej1Z>R*kK#U^YeGZn=vf~La&24q_BR5P^pe; zi$EmikX4_U-pvUseI0uMul!gM@34toH5ccv~ix8Lbv$w^O<2cg}IJ> z0IJpT&(v#KWkmkBEdn3f%8O$~g&ZR6$HJ_DuXRzQAx1#yweCqNC;KUCVcE`%?l0c~ zH~7sLU1lm$U)4cH#)K7_P>|hBv1T@~XHkR_yNa0ZkmfjC@?FO>Aod!`M$#wQf}oL! zKfnC+n=0PmWv46Tc3`Y|AyPcbAmRBcVj{vKRT092NnN_f^gkjAA*@Ljl7QljQQ2FV zQ94Ep--kN|x?uv-vGd7KbUn{oBKTY5?!UyYl$EO9A-uEH6i(z^e>^BFtF`8iCeYG# zE!Aa<%2wD8f~ULEZ#kZMJgWv`=Jr7VnzBQsuckOLku4Ieo|y#!-O)JzSf5Rz)@P9M zjHP1I;s;QDnx|oB)-o0#sQ+{+cJl0vJ&+zVVRHsPWfmk|vmIU6TH9b4wI!;Zm)hua*yQN|nb%NS9NhXNEP=7*GLqL8?yg|6pH1K?* z^c|%lsbI;!*hZjkC$>Cb2HD7k*HLlP{He9N?h()vdwKCw*)ijKHNobq^9AQBFkdJY zx#-a!)Vng$v9hpQ)Vh4?Wsbx}?71WeGG2A{0Lo3+EM*^wPHw{pJp6Cmf4@caqRIe> z)7d1D4PIbD@2PgMFjjnT(b`v^!$Z~Nyh!<^pG}hVp$A@G?E|o^8*1ju`*VD~(-D+} zt5GWn{iJxEPCVbZ^C5rUsK{RYEKmAR{i(Gr$68sw`np+66NI%l1Uenw_Bsldg@p1V zee`)wA&S#N{@6Nfd`-Liq=jbvo1D*eE=25Fh70d2G8k$V+ZSf~=A$L3IBZT71?eHT;CS_gw$K)QV;8M-o zeRhW>biIt{edMaSy>TV?bmK3O)i&j;FirN>;56ZiS21~OT=SLkCpKk|#y|I_&~hA8 z)hrZ6Ax&r>?ljij{a6wPcEe&4EOpLfDVyHPe_v+ihK%fD|Gdf6IQ=E=?^2?UC2sd# zVd5prV+Bowrc;!%1R?-I4}E>TcNk$&K%ePElQJ*jn@A4ab%cdJyS?f+7^XtbFFmN> zkpgfZg0B2KJtK%Uf_=&+TY>b7z|=uqB38TC+AU*APZCkvSsgx;N3{*^6fyZ)93Ma= zg#Vdf3m7WV;tLvz6v*X%NGV9Rpu|a*W4C@xLDueoFQ#xlbTeE=uz>@kCdk2LvZ;Xh z8UWLt)9HRFTr`bI0y?k;^SZ~gjdx{brL=|Hot6bO8uu8EmJxHcpI z@48dZkk_41pi~ez&puo$+1mnZC_p)NKK-7-j=ZSoc#i~|6r-{TYD*jxkOKmI<%<9Xy{Qg7j`iy2P2Ew-%e9|| zC_q3d1FZU*hTQ;8{mQ zvj2@#XUXgTNG5+JBT^db7mBA#UkM9J$%$j0-R1W1gg#F{LwkICO)r6)i>Y4O^=w%8 z-QS|uADm`tR<=I8{9Uy_KpL3uyZnn6KWP=N4ZAV2sTIM`k15G1heh)s{x^9jBa)br zPiGww7M(MJsc)K74GUxjdjkma1s zV&5+qK^mgloQZcXG>PgS$5pVMSb=ixFFXH(?E&t>xi3+Ef`TGko!c8Lv4 zgl0p|qRc2#`qlz-LlESwn2Eokm#(EKEckvnR&wz#r{uNhSOwR(Z&{4k^=|x-sp+mE z-8?)VJ`Z+}fd!h(hX5tsr=m}B>o9qMa09KXXZeN?*k^w;s{8mCLu6IE;#W!o2? z&A(V3k6Gz9b^29$K4wPMq6eDUJxU4ux;MUTxoE0qYJTZ_4;yhnj$R#(W?f&ejvS;$ zzQbK(_d9IU?_?Sa0txPc`_-AvnB-Dijue@n+anTx5Nc$#hBA)6v%a4x_%Ll0e6Djb zY)zm~_ntDSA5duN%y^k4;61i;Dj~J=&-$l;@rPZ==TlAZQ;l@X@UW#e&Q|Dubx`=){rVc#<<#5!j&igYf$`NzN{PVh-f>RJCKph z8xk)zq<{Xb2#}7&0T|B#0O-HHi2{0l`H+fcufHl$ z-`8vYKNkRID4Qpi9A$mu6k%~-4cVYY1hW~O`ztf;X6&FDI+xy9@K6!5##RAaci*rB>{(_4)EFQamQ z$@0cy;!Ta$O##scq|QvkQPaNtA4xB{KP@ei0JBns-gg5e;`AJv&x-D&4e=}4Yq8Fa zv7p>!0=E)hM@G>a{uUwtrX;G&(=}%Vk1R}VDF+Tfp|7B3OVQ`QFpFaP-azTJyMG`z zFRS`)Ad!ve<${|A223E(2;7V{lX8HKol?bi2lgn?q~anZv@Uj8(U=aQB!OzZ(9Zu9FPsCv}5RS*L; z7)bisLaoC~XJ?)=y(-&3ExzT3WTN(9JW3{jHZ}8^|DDmZOPFz%@Ahc!DBuq=_~i-{ z1cH9}R_=!U{PTYS1qIU1&?IonXPz@ZP(bv#^Z@z-x>;f8G484rLe`w)P46QYCZW!B zq97!JBaAor!+jgB5b9RZ%S1YuHe`bxft@E@O_yF)&V6F?;x9)SQAlUVbpx%B1N?0s z$%(-WTB9eqvTofgT*gm&t7Ju?+0VgB=z_tmAq29ZG5m}a!d9;m^`}XH;P3JS*;59biI>&Nu%LSixlU@#fo_jfuyqdz9FA_z#T7$%!M9gEbn2Y|+s3`t-2zpHIv_wTTW z`WQoCJmqwzLt`F!tKy^j+TffaMe9&c6X79k2D^Xa81|vfi4-MotE@+%26w7M4A@_Q z(gg#|BIgqR1`u7uCO+FXA;LfFW-Z<0ZVRwOJfgj%&4YJa z+dx+#S6x&Q46tqrr7#Of(#%)Xd_yc)6Uh6h%?KctjlgUa1F8t~fD3P)(>3%D}8dQ!a&70V)PSzUcNz+2-q1m$W(Jv0BWKc?Knqc z7mTkhnnh^{2}B`0S*(IigP?Z~LYBAQHC#06enRk}wLE+ea0c zW+s>h?EdWJLtbe(j8z!BA}S29b^~cfoSwI^4Dp$I7;6*m@C&|+;l8p_B+1><~al*9UosDU+4=MSv)v_X{g6Ok=cOO1Qi~38TmB*kqH6P44ao(Rw??)h^N5|HkO; zghnTKMueWwqTl6`pbKc{TaQG4>$Pa3H@Uw@?49aAZnw43f4INbKo=mn%iW}rjLZHl zuXImO<5A=6}TM-W@+-%$}iLIY`YvEK|g7*SuPnR4pP;lQDpNy(MK?-P4zVqB{}L9 zbNzm6E5;w^4^VuciLL~Abc7<=A3y^}Cej8a-7K(iVgM-S+%Eww)Hs93K&|Xmra(CI zdq1pt6&ai{jfw8+CUB7nZI82ZNf8;cwyc%aJLd-fDqODSWJesL+JurV;k}jRVL2bq z*%OS4zBB*RuKcC&TC^plA_nxs{Mjj#7Svy!7vPok@^{8iJj|~d)&_&Q=*ZOrkUq3p zBO;2~=11dq59}wVu^KuTDp0y&SZ>MQFl^z^qj4I(loca*H?5U0kkaG5kr|?3=hCsV zu}HqBmCwMy0NEK17&PiBDqs=P>NBpJW(*CzGWA)-Opw0W(T{XFp}_esq(9*&YBP+B zn(FpNqYpExSRpLOutm)++xy6Vji05roYauzyBM4sA`0~kOnoPTzzCYvp0-mcU~t7c zx^fmciGlecStRfG!vv-y7s<#p((FSk^cWZhG zcUSB%91K=;`SK(r1~QT*rMO-D!NWU-dcx0X3AuEqCDu7s+e=J{?fvjdu#Lm~SA9&N zE4Y0OsDFDm*-4E9yWC(m+8+V>x!@E@x?Ks?(FDKt@_s?p3RT5&RJ{Fzt`{OpvVkijEM)2}_yZs2X0DTWt|_-s z$%-nY!kDn7JEcf!32Cbs#0XtY#2$e_3&j}=Yh7}dI7!kRm(Lig29-j97S0s``- zzIwy(s?WVHDysm-fVDu+n7s4i%dNsjAheZfS zB!#3y_V%@`OVF(wLVu|-RE?cs7LGl|;vSDu6XGB23XKkj8-XW?eWK?W2fd^FI^h)| zj%MUnBoZw&2vd;nE2zuKl}3?uhL~9B2Ij*hGeQdByA-F0!YMqf-l zQa3$TR9XeLI($DO9PYWd|LKiuFgkhcbEJtiQ&jvJbvDyS)yy+H*$)eY;P2X|lRaaH zn&77X(yo>s12@bA-hvSveS?~0V#vw5@EF$Lf0vtgB0pEQCg z+}mksjzhG{8lob6Ix{Srv$MG#t(?U^xZ1(78--Qjo_n#q4VEasegCdzvGVS{v~Pzr z-dVA!UqTKzDcXd=ab?dUlX+@-6c?FkEL9n~QhoqLGI588sG*LOwIw^KXI}_dDQ)rI z10T_lA)l;QG+pgyl-}*}dXL5_Wm8A)%?&vo=eiSjKi-yBuXpX5)v%lDAT3#HW5F-m z&CN5Uy)X%|%oG_DjRl|zBCX}$dsr*?2MNH5Bwrz45ngVkZ$7s?sy4Sgl@^H~2TN#~ zcJ3*5FWmHn4U=mvVt4eTqE&+F*2U-4emcNlNYQJ%*RZhTXjFN0{c~J)3mDuSW_%1g zwz5(B6wpjo&((}Sc|r#-spvdSG8JWLF+Y2boQ(5Mx*xW5J*hTcC(gH`Gl<7&E-&@K z(7GVargKPR z3FOVpLG6VoP2nx_Gfr9I5gSmrt#YrX6ltxg==-a&lAd!p0DUGx*biv9?vvO(q)Uq} zx9FO>%r-nDf$Wak9bI+5;9+svjB~&;%SQ62#T|z)QkWL}s(qW<`%;H!P6%w+D;`O> z#;j|^&8+lez^nEe0JRd;T=lh4C6Dq1rpV`2vuvE9 zx51@!;=3NHK5gWlKDW@l74q}SM}@V{pteyxSg_Ng^^KJo zTa_MKB%7@8*&I+KUuI$=9-&PWHVyDd{xeT*kl;7ELyPhLeqYdZI;^&2+N+cBWT8Xx zU@d!qA|pDike~z=y!5fk9_K{Y9!b!2&fEps()7M4-W(=UG98B#Pe(>?Q!a%Eb&3Nq8`RIa_o!E~%h&`{zd_AXCFS)~IK0euf0AknRv+!`@|7NVw zoyGe+q0!HKN#WP8x?Gy;yI)>d(S{6C2(Z?!2VC##sv#2bX;MUmoV}zx=XzSa9JXcwa6pOnr)$<$7rWGeGhg0Zkn61>PXctyz=|d61!dGz1kv zwVE_QbAEKq=et@liRzap(qf9h#J8jdcIpsCj zk5M7N@}mEBhyr;`kKcAS&o?>p>$fDqqSvi8R=G?$u{-1k6?YTa1Vdpox+_a+N!{+$ z?&L*3-wWS{s?=*QU3f1wKc=g-asY3s4!)k*9D05CaChtA{_~LC<-PlIevKtABOMJc z50=c=^Hh?%nI7?la}vb!uH=sFDJN`v&QI5}V!C6Y(x1ZV9B-CScFn0oFOix-`Z}-X z!|{e>`NpjE-7i$p+pXuL4hBdIF8jd}PX`6%*tN(zoG&7rUYdCF`4+{GjG2>|Vz6PX z=Na*FwoIOBdt!^e3;69n4SnT2&(|iRj^!?H#%3c&=VZ5Oc|ZFipu_YJg%6*Of#rv5 z-R7r5FVA_c3Lu=eO5}Dz(unYVBKMT)fQS^?DcUS0UzBfrZvK`n_Ue6X;(V&<-NsuL zr|x2CX$$(hb|bBR2`sp)-Y@TVpk98O*XemtcUxnVaAnUv{dezEdvi@rr(x!wZe${p zw)Y~1UC$twzxD}XQ0}t*;pQzzxE)i$l&GUb_hIqIvVD<7C;Nd<$Z28-;9<)Gk%w@F zuHHOAreHC=_ZNV?zT8bB`)fLWA4nWgA(;6uI?3Cs%ukfF$!BH~bv`&SPUt?IcN+hS z3T%qsdRHO5yxt7fDpJ(syJ3J_f=zZARdyXDRKMLQMX7?n6T9+l0w9+V86qjiMd6(p zve9k9uN}BIzUBu)L+psmJ^z(H46i08mP#DU)5Y57bHV(glA`!x^6P=B50dEz-(~1gQ@Fz_DwbRp<8>NtOPnP_>RujzBFZWZ zHLsmaK5;$AgfmQyT=7gi{4Ve>gz@dWYS$0gw)|=<4P8?N6|H3V#4DdO>zf?X_pD88 z6W`fO(+<5{RJ8ei>|_Tc1OTN-159guiEe&(x0)SLXSIl%ul$YzqV7A?Dyw#MfNbWM zjaue3LjqY=Vdh^bO=;6Hk@=#k_xuj8=4ykA=VzdA-n1ZXF~5tf^a}X9fhmmYQ$&pQ zt*Z+(UOl*QoUsaN`*(p;WkKT4r?YpxW2>2gkj_Uglyaa?Q)A=QFMK)fbflMYEtoiG zJE<|@M|&%!9kN}cxTE39S}j`_+g9%x+1oCZr8;MOS4-Wd)eT=coa@#YJ#gq{X9eVV%FsvaHdt0Br@ovlX| zFE40AEWDDDM}mnuu5@x*8a03YID7p~lfc28G&jgGKugHC z(KrfzMZOx^w6HU`z_;=F0$`ezn%O^@zd`Ts(V10QbTJt6S<%WWeb7#YV&{w=>2cM> zCpfYQrBp;FJsY+1oCC3tq8ZZu$cp~iMa;4-Y68ekuH&G$qai2~I`~bn{ql7OZBvI4 z`}pA5xF}6SbOW zCcSP=SUECG%`&CoAukBpdQLFUn-OxN}l z3rr6E=vo+qiPkv1+b$?2$eZ7Xn*1`Idlp13Vy`c&7eKzt|4s4!!5Nh-2XmhlcUfyz zd1BcHQ|HVQve|omzIh{LEHf)r5Y3LV_b&7gNNA&ATv96x>-i%?EjzK`39{MtswFNd z-?&K7@yaLHqA)MVrI7xmELxDYVF?t+&H2#)edHg)a9<-Dfd^e`n)OTySnqt~=mJ!` z#Jbu_z~7ZD_S%_zguQ8K|5_}N^Hg(8%kzoA%T5@2) z@QW?dA>kMiCEl#tXW6_-KfIwkqD+MgH?ffp0uq+tfalHO|4lWEqv3Z5fbqL^C)r>e z?Y=POerZy#Ko={A+n!q&D07%QycZF<;m7Lv_@u)@C!vBG*G^RPC4^XVAAgYyAyTZU z$Rk;)?KfS0`MnqNo1XF|RiCvx&0pdH9N>e22~pZUT4j1R>l?$(`3g^?eZIJ-unFhj zc1m}rNPS7lpLN9NliI|Gb;;gfWo)y%9rF;Mmg5zu`$9*-4+Di)0EO8PAbOO=I2`~0 zWAP{7ZcfzNb4LvD(lb2d_#6M<6`st=asRxl5Evx!VmUqwinhyj>fR)0tHv-WO{)Aj^f+~c7cy3(bN~_ z2{k9e(^t@a28VNxoS%IS74}K-k4|=nx%Q-OvKt{@s~)+21v`|%30beptm1YLLO7Pz zz8nAPHpVJZO$nbrT6Z-OT_vY^9m(LyBOu zSn{7D9D(HH$_E*yc^&$_hbyCALA9huGKk?QB@;m{SAiKc>6IKySoi3J6eVTLUj2?M zMp0p0mfd_mJfNm)4f|twi>%^8j2soRR?rW06K%>@-SlePy8^&-UCz&PO99qD0?rm0 zNC=#3_F)J5mEQKvplw_Imj-xKU8)-=tdt1_-H@6`}v`U||9{dTXY88F(0?ztyET=gauO!m7_UE>*i3k=TG`eif z1DLUHl@+-bhQxkIkxv9bufJv@@{kwc$rPte$VSW~KRZ^$MHP^J^y@Uutluw3zJ5CE zgj&N>O^Ql3s7WA>%9Z)D+9VJMgLTlyAGxi!EL?gWq3UHVTNJcfU5uv(lGy++$+(oh zbS=<%<-77qMr1E!R0+RjL#aeAo!Yyop`npjamU%YBHww%h(q&()G;Z=he@`n$Z|p4 za!BPHGhfld+T!#u+L9_M>6+gisSjuuxXa}v=%av6G;g4{paIZ(*#}rP8@!jgt;j{} z+Hx-0nFvR-sX!Y-d(G;6KT3!y`DuBDMK$DF|A@o<`i`68ZPyXOAFY~%g7`cA>4S<8 zH};Du9&jT@DTqvwVii6R2YH1B_BZgVRFILIx4oDpc2e8m|wm&ThS`y6QA&n*a?NdS0H;kH4T zEZ8|>M4s0;D#Fi{TZEsn(!Y2-RCsd6Zla#i*6>NXl>~T*20<6oxS+wuZ&0Kp(;fj} z`!DIX?wziGkV~mRh>EoTHM&A&^*xvSlBzBc02*n%x*bl`iu9X)ob7`a?|<#wH0IR3 z&jkj9)8CR7#b=TRano#(hCejV1K@0XKwiif@W~{cdMGZFhCprXP3`PXR8b4w{Ddtl z(Nq2Nhu*K-ZtiZ=rR>$GfucqlVE(U!&plTg!0A6CRxR*>z!P0(5sQijkppcXC)tRz z9oWSXV9|#FQ5tBBVB=x$QyZms`MCUnH6HPfrS`+4V;59h0G>(%Lno8sdLBJ2Dn?M*jWeS~mpV=aExbWOUiX45pB>N@FZGrnNR$(Kg0cg_Isu4CCh z;ZHc3=%vz8 zvHa;%d-!y`lpQY3*h{ThyxM}-aB!+$p%pUq;agByytN2+IOJddO||GB1baseFwjC@ zLjwoOfZ0?4LVdPU zMoKH5)geW11>OUH1gAW^h=VIqT=yKST#-xa8?}Ppdx5EbpS&-!tz;qT_?rx+{y;)P zi3RU+b)e=AlFspNl`{X#8CNh>uv~{7!?BdN)%)QDlsU?H zFCb{KyIFCQ#X(w3qQmo=4OKn~I%$@g#0tbq-;W_Zqs!s2zepA{T@-K--=%gyA%UR{ zNc3Y|iDANl9N?kn4F=UuJ6C2xW+nTlTJ}Y%g*O#yf!|2lNOuL%)sgdbk@5V=@@H%O zID1wRB^?p1did!NIfsoQdsMqoZSCL~wEyR3lJBR%qiqzLWo4CPTcbEWGHl0Yo*gN> z*3pQBHg7i{J&*&_2|b3sAs!+1^v6BzP0U5OjIsT;5e9*ZRs-#gu9$%j2sW zy02Mn0(970KUJTHY0O?-p;2~IAMz!*|L8I{e$Th8C4?#7w@O)fe8ZE z@TKqKoD(?@kT?I5;@SVa_v@FW0eS^`L=kb^4Fy`jrqZRAJfxl@KdYFE&V21bVVqr= z$Ql0=3U%YRO9{epCo<^)n%gU+K}Fdg^yR)~Y#f3GNrVM+!#A->&a;Ik%&G7t?2lZf zjgOVa?CQOp0Bvjw-W!5MO!@rx09n3^2q*GKPSTF7`nzyTx3{L@Ed!V}$w!^PRPbAF zK}GX72qN!BqZ*FG4Hp+QlRvhE!-G4RcU_KN!Vif(uQZjODygu%+;><$+(3QaJE3sM zK0b2-a3`W5dHxi5f&SIR_&Ymu5voTm@PGiEP;auf%Tw#!-WyOwT*yeo8*zD>xnw=O znH)}LVvD)cTTOx$n+zY~&E|a4Cw-S3VsPcv8t9{>zhI|8Zk3`eVrQuI=9&wmS=e`y0`rW+T z%Gk`Hr|LNSovC|*jC6FCBUvCMlLE!yC|Ux=mY}}?N}}N1oFF+T*L(Nde@ME#ajvg9 z?D5uURCQFqiqB{Zo(9?^F#h2{pc#J;V*RRa!djxxr86VlIC{A1`V`4J=o6^`QEdzU z=ekD@Zl>j$~TerBNfV2Ic^7)_zF9zkl<;%tuMNtgns0(I22*cNxD8##dNwX9KCMqjr-W6_ zwh2nFpC)TC2{Id%4K*f>pso(40~2H z6iBoy_!bsUxK#(+$SE-H_a`gKwRG*a@=(^_%6kHh0~tQD{p1K+6kp_b7&loMj3g%x z0z`#~y4$T4$0OgtF(mnK^c;FMR=lDQqW&&cT0#R^y<3ozNUrzr?W=R7RRzvCCx}8H zW~aKAd(m0ViGGn8<LR$}8IsipPW+RLL%-x59G=apC#+3^1bZ!Hh+-M&3+^WkyR+-6Gm&Axx6knfWpPEG%-VC2ty1i;aM@IyyL~ZFq@GZzr!8 z)Rx#jnAxtAhG=!9iq^cZvVG7>J#)3{#N7EQ;=br@vrROR%_8dlv{=*cWj*=`*dj*R zdi9`Nsx-tO&$ICtALLsmAL5K4E#{hK9j7c(Nz#(>a88nYdc&)BM}`fIDA8!`<+8>q zWjgxj)2nv;jxJyo@G0X?>zad^x+LvZoGJWH3p&dGwnM3+s$-tkU+8=ak@Flu z(>p8TT}Lt%8RDW0>89Hhynh>x;`iuF&kGBtaH%X0$QNUKjxts#8p0>8wDzuf5mzGd z6W9)cI(l!?T}Q=;)rK4~`Ub{2ZpT)Um_MDReVezE_MjObzAT^M>E?^veRuPNhiOa9 zcHYR2X2opUF&@87v52Jw=uSXok=)d7Qy+Z<>eQdjjxrEz)8ecB!q4w5%{1LK$r~{< z=AzBWZ~04NM@G%xb^#k=&V(1}=)4IWnXFOqh$csGRSB$DT3WJ9Tfh{Afm85~ToCNz z>$DZ{&^3Ts{3)u>Wyb8A$CJ>y$b$-tkG$2BJE|d{1O4UN7K{`>1HQn1Nj}hb+pu*U zhosT>l0>YAK7n8e+dt1;=%Etcu}D$U-#OFesJuT)7y`^E@v*OU>q0?Ui^0O5gvRL_ z2x6sNgxZJJF>yE2#E{&MB0t~OZxn4no+7~4E)k<))=~auaC4saxDwueHTjB?koPlB z5t(NE!QP4T@Rpq#{dEUGsk&R|s}w_jGKuu7&1HQ-y$stI-qm>e^yopHBiK6yDN6FY z&kZKT38=(BGjr=elVi{Mqu_USxHD3bu&mQIm1cA0j?d5uX~s>Rw_f06nW&=PHF9FZ z-?HPf4wGsVDv}5SrSS{D^QCtH1ud3Q|s;E%%$03tAlXUzx>SkMAW0$&#RWi}|En(o@FnzZ+F<`=9g|;;Q0v!ISb8mmTRxv| zRQio+GW!51hV;RoBLvQ{t$LfV?Z$ii1HAbG6PDos|4fU4I2x@Kgfrhv($rYhHZ{HA zxuHjI*}?j0wxfpo*KlQ(x-ek5E6-zrQKp;AS-A>$FzYIJ$wX47J`nh8_3@|?IykBD zV4?DFkwZpprIEc~W9?>6cnXODpPuu!VKW!S4@q(cEf%b~it_zG?nV)lOQ^|^(;+jm zk)Z95k{(JC3;jk1kW9(ylmvZcK!?@AeZHxZ*8|@n{_791 zZHNhn_BW`z(53`rwh;h%6>`L$yVpDabIpV_LM{y%Wc6yM-+|_$I^h@_)Cc z!4JK0lzWGEAtUB1kvWzjx9{(VR1la@i2CZ@Nz0;NvL)H@LtmWFUXB4uUM{8FxN14{ zu6H#&tAB-t@5Tnvl%n?B;dJ`LOuiHO%}S1X);c5-rm5RTGfnzTg0eXp-e{2QJ6l1# zCuP=}qjw59;B>@vxi|cE34+O*YnLwz-G6DKqC|9jKNNpSnN7eg6#4zMv$bk`)(a2? z8E9&fU1F(1ai=lm3!jsk*y)pK=PVpLiPqrL^Ux;iJ9T>kyN{hN8le-T=ui@7(5ArAV+Lp{ z-R*icojVwJC?J}*fznsWYxbf$)VnW@cmoZzPA+|g6b-}~QuHb{Sbf{Q-K9Rfr30~+ zVuIDz@5Rh5}{|za-mEOEPP+%k8vl8QuY=mUPYxt2BWg;W5!7o632u zH`MgU5X(0u6T@d8NY&}bfNw?OT_Efv_f#zq9?pve9E4LLNQ~;?PG0bNE;>HHna&6cF~oA%U_EPv0}m z(g`-{ABJ1_<8~;2#A?%O8I$;bly8wCYtEy^r_0`Kcg*u>a>QZSVeHbg?vSGy;WhLD z@hhy2hS?LSnIly2iALRJz>}HySR!p4UHIW|$s!u8_e-y1WDw&epcgcpvizclEffmH zMzRC?S&!%1Z+jXFSmm2^_hA-D1LHkrjS186v?m8_b+-Arv)K=)97uNGAxkI2hPV#I zcD*?U8wGdznS2{YaL&?lu;WPIQ!2H86U z$P%dEo)U745}i4CLXzN(C9TI_^ELAJ03w~t-+eKw^Bmn}BRdU6?_wf0}>|9Pf#_j0=%-O$|~KT_gHmS!?W`BmtX{q$H!~i>?eu=K zP!KmLS*UJXah;q^AOY~*A;J?>bAcJ^b7h-V?LmgRv(+dU5=K@>2i~ev)eC(;QYkX6vKhrHZ$#H<2208`H_t_y>ce&uTaa08y`X0G-b{%nsdO9lT=)h%@frc+~(z z`pa0rsow;{M1kOsE{)NqWQsWR?U02*M%YtqM{{|47<6I+9h)IOS4@>uUK&q(EQCS0Dd$uv%e7Rc(szORfITM&4mv%at z9xnozH%9@(!nyU7H8lJSkjS_F2CQ4Ip6U2blyD+v?Byg^S$qXd$G;GbRjrwuUrK)x z{WXdhRT%Rq8xf6*4#N-*rl8D=uBe5m#wh3L@#rP&xr+M_CRw&A)^&}t+^||?XXZ+N zUhjbiQI*~;^q&2qL6H58*-t!rxH(0xz#RBCXVJnAcBdzhwR;AJC#fWMj$VtRE4=Mv z)qfatGu+Ic%ubN61mBO}mGlm)i9}Z^JL2~Hpa)(r_pGENFOk)CpaKi%hge;lZ zGXVE_BmSx3B1L!R5-z&3%%E?At;-dvKmv+xqvp-{ADV96Oh>y*EmAG2cC&dI z=%Dh+If|Zya(IV^-!s%%J{0H}6`wv7_g3T~&LK`ADU?B|%8i_e?6Rw=dD7Jhdqcbp z-~VAldBzA8`9)W+Y+~YZV`wulpRX2)G7q0&5IL44mN}UH6y!>qZpcj%)_aTt^DU1U z^m;)9sd(N6-Qa<@i+IcJ`s%R=%VDbckd;@4WCR@t?Sy+RYCR6 z|Ey1mIa8!);Nl0Tej~drBHeFpnGc_f3K$oXh7#jj@tySeQ=-9_ZFrEDPUxW@4(F_p zG;Yf+$hUMVcvP*&!Wi@ljwxVq{0-#z-KNvr#0L+EyzAiA+gSTnymozE-io9MSZh%h|^F*OG$(U!!Kq&|Gcb`(}bh zF`SBruN_MinZbGJ2#q7g(bMM&3ZBAJ#Bx1t-lr;|@?uu)eK-D`#L(rJf?z&?^J0eT zq~zTcXvO0aj%4U6o?dVrS0c@G;dEMO1#Go{=BJvtm;9P!czi-ikfQNL2M;vg8};Nfzik#1V`M@?O)mUzfm9>7l1VEkL|%q1YpUm zY9tR{QQ6&v;PYNSngnZ3E=9enwDNbu=|*h-hRN3lokUC5bp%q4o#fnA9{qHu$jTlm zXBg4yd=mLZ+ViVl5|Dv?Co%esW@Yks{yMfXlGt|UE9HldVt-qTDw?e#JuI2H#r z#E4Bgt!LXi*dqR!7PzgZ&fBeJEVtm1z9hmiM&ri}s?-M`gbFG@xGRB(iw05fHgzN; zrQc(vFjqhdB!Vs(VfD3S&_K;CwX*UN9eJrQbfT61o=h* z{t!bm2Y(zMz13}!+>B59!_bOfgC0@W8NAeQ2Pw>~6ND zqC0RqX6*i9&9%unbQOc6KI)=1EaIc43{P9pX8~Y7i%cm#^lO3G;nP~>&Xe)>3W6y@ zg4d-mDc**yeYTaowJQw$t_(^o=?3X9Til*Rz?Ir-y=7CvV(zy`S3*?suY`$te@4RKAGS5#vhUuH79XkR?URafdA=FLvZH`fb*!_YqL!NU zNOU9R($%?9qh;}eM(w$zCF_xS%;u<+c7WPhu3i~5!{7c_v%MC}SZ;V~!w&95?(~A% zf+(L;J8pg%yYuTwcHrGQ#&Y{eVPRo807=8D6fXNu?hIfs-K;_wyaM$nvtH&2j`0f@ zBWp!41I|K${u@u}(ta~(cP-FyU;1m{;rATJG(2g%U9{bw`ZRl~W9oj}k~wa-pSom- zwA_xts_Oi7*E-DnVbe#_^QSG9IFCO4Ik&N`YM}Ze`Azu!LHHsB(OAZ1`38~y^sjAU z#Pl-#CJD_?@hvH&nQh=-+du=?j+l|DL3nk-jmuoZ`@(9pOJ|Za#^g zfr8%-~T;%!?tQNKQxkj-RG`{NI4Za1Rm+|zpfIj{N1Uo<>3LgWR2z1SkUaEI(~f~f|DG2%(if}#tmk{-YoKMN zMjCrgx*G$pHe^YY$$2jx6svP9Cyi@7khGld4g7J`t8%&L zRb6Y<+R~~M()}Ikl$6!({ARr2HP_%r*T#+OXIH1PIW5fxPQy-0gw|%v4VJ{Yh&~aC z81mzi#g-*8L5yIt?J3;c~K33|QHb5F%lxNw`v1a=Nef7SWYm)gEXXQRL z)jq3kWG*|#g&J$eIEt)>kF#;QLOGp(O;>FVwDTHmQ}b12kW*E@&8zf)bw}vbJRwlm zy@7A%@%ByBTlA*pEl<`YNV5Xf?zJf#KH;c{WHWENWKfCn1JNw;4pf+zq2#t9=~0q# z#gBUb)U3oGla`wZD73Pl&&ld2B3QV;!)mVmE9OFnMJSk=%AV$c)xj@Fxur&^>wn8M zl;PWb>!aJITQiB=mF8G6lCr5no~qAHGP|*GMNOSRcMX=u+4{%sIu@0+HEGaPl3My} zk~!0zlrKfi1WmN7!Fn%-&Bi0hj?3Y%0GCQSS-g#MEB&5f740#&E*0KR9sWS)rtLB| z1HEOnD7lznu^k9@9Bw;Yk@6Q_RQgNaM@w&83!m2M9{AzBOqh~NIs1Cb>qynbjNXb| zL`+3eb?1il8@IU2M8QWd8>32kFmU?^#+xfcFVC7BRqxmsv|;Xaf~76 z`;O+~;k%e&C}G~A!?~6kUkG=cBjJant2whZ!AhUP50(tqS0$<_4))7t0ONDE?E?i_b4p77XO}OT*bKjdhEkU*^ z&Ks*(XNsL6GT6-LVOSB~f9$qbI3njH>Dh0*)f@J_YOB7eVXFq+{)Pq4h*@-}^ySS&$@M1N6*80Y{N;oBaOgBE7K+_aA@mn z=-=d{-MP;x@%lC24E*7{Lrn*E2Uz!$djIatn~T{oJqAl?>jb&gBr6h zp-s%*kKJdvgKyj6ilQesZ*8SXb2jseONg+;9;ij9Uz9k7522fgM{eqcVW@Icb)@YK z-rq_90OE>GdmmV6n0j$I<_D2-E3e@!5QIAvK!l z$8Y%+SF=aIfZ82vYts-Pdu$!lh5U6F`{<^ z?-}uZX(bePpWAi}zaDHU$`72MSo_)n$fL+iYSPk~rgUjM3U_+=?<%K5)*H0VtCH-S>NX zd8f6L=Jfwz0S2$G`8zzSfAJcHsrA7bCvwJRl7y96AY+KBpB!zHNeP z`~A>mm-JHk-<^6(!R(ES2Jbe*69&EqpkrEOWf-SgIV5DBTO#@{ivhr8Jb?@+IxK`5-z=U0y&~=C=c5;pzDQ9)u` z4mjMQGI`T02?riCHfz@O&_I1~lj{EfK^nzEnV{?&3KVo{0#g3pJ?4J4)BJWV*xR+? z3JKylV46VBrWQTw&EOVUeSLnnQicuRkTVH9mdX{wb9W(aOnx9yX#ZM}R6iwp>)uWC zv2+mt=^8Mv+!|Jo-C;r*E+1qk-S{H$1${);knl|$8yU)Q73Xae1u)Z4MXGoiiaArsUuVV(w&XbPRl?c-r(% zmA_V7$6M%g(J7*}yRiYBJ+Fm$v(1`2yu}Zc3((8uewOzlxJ(b2jONRwfReA#SS5(D zGRV^E-JSAx32UjK56cIJ(Gm_0P8U)Sgl|3l)M3&Yv;)#lUj!YIxAv{kfc^tL#Y?Km z?b=>0btRFNyS)p1ZRDXs`C(nnuP`qYahIJ}w~3CQg!2b=$QP|CTlbJJm`?&_Ls7?zn5W&ZSP*w#jrgRj~}KRO_xAS zsMPk9BxUe6psR+zr|SNE8={ z4+mh1@Si@s4E-D~(6GGeJZRIcc_jYFT4H}A1mTBv_g{|GmqI*(Ha&Q63y6$fljZjb zE;6Z#aGLFc9%aH`y~3e~-Rt3i!fAG{WxqzJV1J|n|7knl*ji(GFpW6E73~h)3Ni?9 zH|N=jyWG?RiQRJqrJHM_2Et`Oq5)hMu&>{dS0(?k^#W4X-CRsdfs9!;-L(S4PxWs3 zD7NNBIkW$u5o4B}z;NGQ%y%xgd$IG_0naf!f2Ao1N4A&K6jR<5z&}{%k84M7sV*+w zEA1>gQ+D?B#@YAd_ixo{7dFX&)aNkH$-~y-0S%#Ck{H z9b0#WY^v%kN=mnoe`5+pp+`IxeP%&4^z?#30!?1j`T4;F=4S#pE#m(Ees2fIIVJis z@r~O@VIkqk;3~IVe{-jcA3n1!0LJ6qQHZ1%*k_K?$9h5^_#PP_ah;^_)$H}-Bsil4 z2?Sqg(z~|FKp)*tgd;*+TL(GNJHF~7L`S0f>Qe`OF04=qAt?)#&3O;&T*963-{yv+ zca_?S^U2$Cr#fE1`7=T;v;%y-ly(KX312(Nuh@7(t@{bt#u1_klinfA;zFJmT+P>~ zn5S+`#q8P*C*ozmb07-Jz9GsT^N9}$NL;HEvUv;}X!pRXYId?zGmL9X8G1`jLQZZy)% z9l9MYq@p<&8HeP~?%)E}uqcQKDiG+kjrA(7iSTr~2*jR0bAnyT(FquP>4;U5tiMo3 z8LkYO&qahmHp!AdhW?!Knj`GgN02!d+Z^S_A@Q%9YisDjSE9LMR>vZNvWHTUmKcIb zMdmHzE_p?UzhN_ezFt3+bm0&iX*4JET8xBVZMk0GDdw>+=|U+=0NWvE5LcjP;mo|K z62$!!ilLOui_{syJrKj-JMRR}@fO!iCES(0PI zK!e+Eai>JpCQF?{^wEQUw?9XJ*MqC`=)>>KpWLYl2{o=|Tv_G=6dlZz<4(d+Fi_I)7Nq;A`!nr6HjQBcuS=nu+--qjZA4^Sh8 zkWMD}v@vS2xm?xFAa_~|b%Gi}=>|wvHgY)>o=e2wWH!Yh4-7EawBY&GP3M0e$(k@rJK8qAY@kCaz1pgVcwg@m|GOn0 z?T9HPw=2DU&?hxIa*-qUzA_dNF4_Y)W*UCIv1STSZ}OP+1?0kh0D=PN``K0yUnG4= zbfK}KOyydL;v{A*cRI!-k1AU9D)px&0lM?LbbYN~Nj}dwe58f6^U4z@-S`R(i@C5$ z#8WZ`1Wck>qK|gB&b_D?=&D*I>`iIji*l|6SDG1yLIsZ&g{)d zeVz6Z-TB(n^ThzZabCxMV(V7CED?lV>#z*?+76J zcIYGkZ4CGzpBt7+{e2sV9^LXzovkpTNJ3QZhwgKZYcVd)Po6@RKYA+@4GOhy@&~oz zZ#ein{SY0l3b2 zFs3XCA=$~6kgc%`Ew-{HWyww^vae%beyQwhVXS41>|-CxBuf}1J2QwxmO)}(!x5$$gQTz{&QunH2{=>Y|7dkmmqsIP80__M7 zQznwl3CC@$XD$I^BdKDlPx)D%!&ak?27s}0g_G}(&Le`w*|!X||C1?YteTWa@SL)J zC2fNa7s5kR`#eVV>NYWEgoB zM0{y~2TgZ2@(8S<`_x-hYwuq zYDPc!6K6B$^)YckEU9`Vgs?H4nyRlPGFf@Z6l}sg@luC1q6ve`!?b%4l*3a?^=p03 z_$4MDYSR4hQcc46`6VP?+6hi%EW?~!AXMFAdz7X!DYI|^9;U_)^$;32dLVyhzc}#O zN;=vKuUdg-Q-)Aom{?LyUo&)lgr3H$HsmhlozWDs+A_#Un@!<*aW7^;GP2OoA-IkF zTc~eTRR`t1AK`mutUDQlu$9RLypdm9FEMEqJwZL|+Eqe-gL%-|2JfI#s3Z~S{|D19j_BctHlfn*%GQ`rd&_^g z!d9|5W*cUniGlX*y&fN80pNcnf?l^Gc}cRFW?~{j1F9Ue)=4u=j-+-jaJ@jPBoF^k z(#rl7L|rYyM-I)AO4+1=p9(gVzWp(roQ%)4+KpF`_1C%Wbpai3!_G$}S#Z$Cc@Yx5 za+I~MvENRP=cW-5)q==FoO_&KRVOUmsR=3ZZ!;6XhPYuTUwCYJZz^Z6bzx)iC-xuN zpvp{+>CV>J4tm=*^qzejGxdw>Jo@uhUDC%9zNPxPL*9h2t`LXF+t+8AQV{NpWt#4w z0?8mHVY#emMQpe!Sr+@Obpy|PWu{K3wb7hh4B}0_)%OZLN~b;d?+ls5;5yD4i~C&` zQm0X6q>5wpZ{ZC>pB1P{&C;L++Pus7a)B`9{JA7AL?EEUyJB*0NcR& zv=)ftOlo03sX2m;2H_>=oE%}Bz`vJnki&2(1c2)wEU}JpXYsE4Q5-9dAiJmn5@dfb znGUZ7wf8Y@U#~=VJ>Bd^0`@6opwPBYFq%%R;-1;`#DY1*oPf`sKC_x}<9oDl?!vDD zN%xe|j+4W6-5e#^wg8FyAJ#ODq93^h8Q#2pZOz~y_t4F|d(0Hp!10Cd>Jv+3dt|cb zmW=cL_;m3qi#5;w2TUI$R}LC9 z2YFWtv;-VIcI>PSgUqttxnpN>sgkObC{zC>^2N1z3=my&yKM3(w}R$wtvqHU$s&&( zI-66i=}GMRQ4tQPjrt4D3vpfTB@rAns!(S-3#z04lE!pq*rp%~y_nDy{3oxj08!Zw zv+bJN{qCvH8pS;d5w7X_mom*1Jy<>b*D^N4Kf>gsdIOxLkjzWIWA&K9_MP?l@YMBn z1F+Q>mO9e4&zzjQ2IzbIwHw}qyRd!H?bPr4phYzn7(%rghLENYHh6ci*)P6)J>y_t zvp7-|MH&1J&-=q^o^p!Ok*<{`Y^MtP(E(-|zG*)%2}r`7+Sg0M)vh4S7~a;S!nlXq z?%W^{@h6XRms*%oF0w@WK2-A|WILDkh}~&QDc@$DE9*6 zvn!J+l#IpSR$|}9C0)jf)qhCY{?mUFRwwI`ifBeL3{ML4MVOl0dM6vMQ>t=jd3a18 z@8BzF@iewY-x2nKnF;>$RBgBz_RENLbe0ZWD0Yg9(%x-?wtXY5gfw%nAuF-ZoiAt= zfk>HI^;_f3NOp8VbAmL|h^8;UG2AdxeSr$L|Afmd)$P=~^LL|g_^XI2jLTI%_69b8 zwUG(ThQ$KW|HKf@2Az$SN+C5^S)q$mXl}3!1Fy=^GY6d*i9tqtEhs8Ss%u!q6aLE22007>$%3y5s#DH;Cb(QcaLP65elv@UidemxUNWIW@Fr;^PvB zF)mLMhS9Q-Pk!0b?N~<^rckL(u3Ro)%@48sX2INf$k<1eCuYD7AJ-9g_8=&a^X-Csw-Z`8(F02 zd&7Y@E`v(u;;oEaBICF8NnTzS7M2sxEgpDB{Bhl9DmsquKTj5y7y=d#Xt#B2pq-zq z>B7yIJXeZmcsLu?blKP^qPGVQTsp7TjFj%P_U=zYoEbxRR3RC<+LWsI(IL+?4qo^x z@x7~K;B%^GwymfVeQTW`!g<@yj%Qm76r~Tp1xTk69~?6z%x)!4&P7YLJoUS=!g;pK zF*5nyXoPfRp@wzmYJ-8@X~=`E<0Ulz!nsb#(+?L?7-OjmxKfYZ^-WDSp6;mblkE!# z>aUP(8cm+^@J;&%x90j%-yNZmPW!~Pi6Xb|A#4fS3{IUKPVM(Uyml&3zM}A4YR!qW zQ+uqk`$WE;UzNIV=6lCp@3|Xpd1Ic?aQ#xb5F^(g5Z9&l{T*Z`HcW5rAa`fpwsz2{ zRF1cBKQCEeBDqxVY0>`h-ObZWs~J-r_Rl&X>%!nSGmX@yP~U`D@82~~?N0kjL!R$q zgT(e%G#OO>KJVYAB$2f~iM#X7LCxvttOC$oeT|o40nODRb9jn`&wD<2w8Gn~HeBnI zluu24PL!?N%3klH%oRIHK0oGYj=l7^($C_qG^p$5_t@myxr_LL>OtC+nCXRwUAI%q ze9}Tf!?K|pKzkKNJFD5gHR)^x^&Vtfv zeux{X!DH2@qx|O}*AF?kQ^|#PPBf*RcGN4cjqEo}5%y%GJU>nOxoO%h{5EZL&)>kB z`aRIJZeFQ%rW+!L)ocz$*M3-BnpYlgpkf*2N$u+~j5IV-E}G%AmHE-7Zl-+OPHy+l zc+rmJn94^&`k3byxv+ypTG0$$Oz#$ArxA9uCjfu9KH$3HqZQJ=NtZ==>pp92j?(m2OkEp!j202~NZL_`U7PI>@GLmnnDJ^m&it~O=@ub{NV1Nr! z!sFa_6iO{;V+{8+WBPn&U2md2kvjqs!3eTbWo=p0XF4Sc70nr~cnRMFLW}&%(_7TY zn%Xb*`VPF;>DcGfH5o2>syY3qK8i2z_v^#*jxceiMpVgKEl=;m+g{4^#3f;x0`tZ= zLi{$dSubBNAY18FOtRYVJwQgk4!o`Cx zIN>KgZw6G`*=OODl;nv4`y4^d`}NZ~`_}Bf%`bklcCABb)@?TJVcyW0MxnUMKRuXx z)B;z93scQY*_=}&gD)4jiFJN%W>`FKqlw*jPZsXMW;$AbDqA^`k93M`?nPxt)t24a zAbv7cRp1G8&sCVEa2HNNyy{*D$#QA-&DoX3D6hm_wSdF)#pJn)hT@s-^>V%5$A+?q z38ezdknSXdqIeZ-8wPVuXyx7m0&;GBS@Va37l8%VAn&0l6&cgP`*U}L!Nm;*!G<`s zpOE6pH6zetWdzXbFIQGIHlEwsHk;|=K#ih1j$64w4ktl%GK_N{m_%a^DI_m2DQH3L zu_4CgoaeANH7MM;JLyq`m7i`}ov#+LZZ%oVCyC!@qv1gdI`BNR=e@PuQlD@o4r9xj z1FbnNVLa0Xeq?FQ#QY}vjh4tk(b|ohY#%e;e8I$c^0C})^}(sbt+Qi16>OQ4g1ri& zB!mSI-1y65<)!8MM=`48X)VP3DZdZ?mdgS1$oL3}hx(>&cl~oiEiWfLsTE9L2&%jp zBtj2;K**ySdjHWguY3KsB=N0IS#9iny6<{JjB+h^*HTA{ z<e|K8`i`sM2<8Q$vDoEFnxUf>+OiU%0G=)4g9^0SM`7- zbVW0f0;-%;ZN6kS7V?A^eQm)59@d`eSHdJ`!?uB!EM9xrwQh0!s=ScTtuk)d#0x1= zhgwt^bL?cyr1jIf`IMxqW&598v(s9H*rUT0YF)3|LgR$(J=6U`%HKp0eovyOymu_V z8o5Fx%jJL+w|$;`Paq5gAKy+Ly?)zD^q_DmVtg4l+68QdzdXf;IF`8y-_BpCRQH_g zRnKrc|Asl(lA30?ytLD-0a6TN7mkMXAM1*u!oM2|(Zg~l?XD|$>+XDb6sNafW{y4V z)k^Vp)^u)U{o(ayqAoN`eVLGXj8mDX9>XRyiv1d&9C1e9iY9`3Okk-bOM>`V1mey2 z&{JH<*=^0%?`vE98`rW&;l9r=frGxZlxd-+m_8q&7&T7(BF>+Zj;it@AZZFzp2=EB zJ_fAa1AV%bp!?GIioQO+50i_OiuaMQ#fgMFMKT5|_b?pZ4dVkH9aj>(3WEG}_bks@ zaBodKSzCuiij=frTyh@bK!S1g(iN@$!v&amgwNG+3}LLIns~cqG0P2ItBhKykkf>k zCszB}8qc~?pBkhZC3lo-#Hmmlaf!t{UPl^7jszDT4h8GNCK6+w=(mJCh0Z2C%P@29 z{EW#w!WRDAu!U8zHd(OEs%Um^$pd_L6>44&%SOBbox@P&*y`C$+2)pvt`=!u{PT!Y z#5C{V2CQ>vaJi|Zm)^#n0hKpg^{sR+eljecSG!RTsS_?1t$ecu)tlj^ zJm|(aONi$^au*DK|EfQ_AUe|b8~t^pEo@={<9B&us^yU;G1x1*}~%FO&-Q%;vcL=GG8q$aGP1abTkV;o-?TR_)KF^ib?fUeuava+UKAL_oT)QdB7 z_4e&6oKiva+cY7L`!RCyD|4SPLvqMoX4euX&09QfFsh7cN>~H$Hj^zf-eS*t1T=xM&|WyD=pmBN4~qBYxhu7nkS?71z}>DDt+xQlW9_ z_H5N3dnj@0rRv~) zsm2R$*Uu_hqLJ?R+RsUAz$(YF#+dW!xAs0N?6$^Uo3WQrwWRHFTY)_=7_&6x&0o{5 zu#IFWecD4CsV7uPA)(ih7(0`9{s!B66~7Cmr^>fac**OB!zr^l`_v15qE+H>Ua2u$ zy6_OO0l}@IeW6f`b?}OyV9H6NR2w1N-?NjFMIfBkncd!acGE7eS(d_+FudfmVIJO5 zG$VOAt`k#l=>}6vbmfid9-vD$F8w4F1mngklG8Sum*JO6lIjB~=G4g|}^Ye2oRg50>`df=6M{gzDSF_ms`8I0Wm%?fp**8tq z73DXZpx+>alBEZl`@NCwj^554bul#?dH!5ryDvU{|E>T{U*2F#LuH`4@Y1k;Q%zrB zmeG^}aOiq_o$9zFx;?01%tQUsakm^vCkOl z`jIF%rS=sXXRo~|BXzj&2A48lLQ5aq!g)bCQg$tk@#Ixoo|S-PgR9Pg+9V6x7T$V@Vew@$$V-v9RC#_uwGzlyPif-M1{}?>J^Qwo1+wP; zJm-ZJQS09QfotV&nmTc;usU}G|MtTR?PG_XIN@Soq9-U`c9dQ8Gh_NsB*8{@F9kK9 zxmLh!>w{H|6bxm(&E!gH8+a0nUc#U7u`fCY@Y=9;&L`YOKgX+n!r+VS8e!pCxZ|!H z$1Vm3wYI{Y^M!KJY^waae?sIM`*atZI*k6ru68sLwMykq&pduOT6{)9y5~z?l1CUj z7|%Qu`Qd%*^R0Q@aht!3dFOmd4t2)|6`Cw&U;gq(2O_qGi-UNpSxI{mBr%RHQY`^M zPQZEfjJ5YAHDC&!>rMEm$DJ7U&;f>H;&d-u54=#kR`uqp>Ilx=?e$;o@EK|&A5gl^ z?1xhq>^-Zc&yA9aM-95L+s14Tpl@`pqBg0G7E}A$s;G_DNhR(=MiBrJ`SnV_{9xh# zdV|e2;7!N}r$&kcGrL}AaEdWH2@2_PhlA{9Gxk^lE)SoK;!R%MCzk>+-D&M6X`mD8 z9Hd+D^S|Jt+_*JmW2a){+L_+vO`Y{#<&LSA5v}syeVh@9?SM;A5}pUS!6r%iz}NFm zF_nMQcqGKiXaw}i{&y8d{T&wRj{qU8>-EAv_7E74h~58~DWuO`l>T?qzn_Z9U<&^C z0q|2p7i7c!cO~=xQ&{@@P1=lNu4`oK>Suz@*mcyhHKwyQUJsh<{z+k}TOCXLT0c8d z_Eh-s-sa30-#@mKHna%nGiftRBLSgjhJLku^lReE!a)D82Jy{_h)dk&4D}HAqcPmP zQ|na?^@;N^x$};6!JGKWA5KUb5A9Z>8jzhzSW#jHmGwTH^#>i^@!uVE9rh)p^PnLO6hLf;Xsjm6=rkn9F8g~v!F6WL^J3K-Ed$lnAA}Fi4lvsA?whO&qVQAK zvUYJPZc{QBGK&p-*n1sy*aW2`ZSWHQ&nx%Iimem0;KBoV$K^)^y6sv`l2B4G(UJ7L z1f-F<=;vtty)TwQ3p`NN7o23}s}sEvV%Hn9L%qH~r#EUF{26RxeQR^aL$jP%zeV2?=>* zH2y@pjZ%WY78Xd6LC(c+gZ=`u<@4})7KKVN4?ey=Ic8H{1zLqfsd_>tNA4-pf<5TA z?%a-=8di(=IL<|cE}+nF(7rd_*k3Wwa(Oe_sxQV$pHzi^vd0=^O*i1%sSn69H2rx} z?zTsu@7WkYos-#|6r!Y-6`_2hVA1XA0QEL?j=3Fll8-IQZ}VU{?Br9bfofkR3ZIF< zLRP=Lg9zsZUkBFXi$FCJ^Xvfy)()1lCi{#rS@wQ*f1ohv5A#jv?j@(k8ZI>1y@Y+vIaaaiAQ3Yx&lVHn_I_DWKE9xNcA}(>I&rt> z`(c2gTi3TlCI@?JXm~sC76ZSasw8<@50Pw^c|wfKXm|(gR@yw7`Ljo^H~mx3*ovnG zf>uoCc6R-aonVOxYcd!10UjShn5;UN?3d>;EBrz4jh4iU_^(jM>dMRMbbonAW9R4t z^JA^Eo3w&WWm?$1UO$WsQSrIxZjaRN29>Kpb?V`V)OU9)oE*`ZYjG9DvN) z{g%KCgykk4xd!x!qnd~yfy-fwYa>L2exEiK=*7^VIide;Dx)oWP`PBUz{Yy}^B zZ_eFpDqJFlJ@$s0pZTqKF)@BJ2*SY36u5;V3d8p8u61O`sOSCN)Z^6!4$gEoer^6f zCyXvd_n}p4Hi9DetP{u@9DlDCD(N3IFH7iT$z^LIg;}Zw26yYGoZT0 z+?#9o0bIyZ*K++@LbOqo@w#;Pq|Lx%9;1SvcXvMBN`2pbvFur*EOPE4k7YE%vri~} zZ13WSa^QcK9k^C%_K0*GjwOaMx62TDwt3-_zt7Hmj5IthK@lC{d1)EHT0A3`G9SD3 z?`Zx!2Q_Ckjg{(Fa5^s)o`hYexsh|#T}Kjkmvu!c7X6}oGX zG{iI#mZms7jG;tKKZnV&n$lkbk_<3EB%&U4rVeiSb~cVG_6kpUp{`AAy?%e{lz%cZ z_J=Za`V*{y%=8&dY;Xg#NqoVSotKTF$uC&6H)TpRbAwf7PCM1#y@{A6EH*#w>3!@5 zvqnsN!}d!!_C0+TYmR3za#F}3jEiS5eoh9-`)JlsBdk&QkTbIkC2k16T~>)g;A~;@ z8Pn&WK?4|i-EO!+e#o5c!J>DbSjQBmK?>PR!)uzBHLdfy@gn21+$ZiWe#<cRLGYCz2bfa3XLm7y{4B}SEJNR`KxefJpvFVj>CTgHa@o>vE zwU$6=f>hwv8K_Q}go3n{T8=31orC%PUjGeb&5>{C!$n%^^+TsXu*$RrzP>^)*0OI? zB>tiM0HsBqRaYiyOjQ@%!JX)_VJ7Su(HW{uv> zp*<4uZD;C~Zw!Df1PTd{1s0 z1{q}N>|UJY&ll0*~bv1{gPl~zOxb~pZo<^4Q}+}%1HrT+zg z5l>yOijLdP+k1LrZzw*!KRTRd_s3%7dOIY@F_Li_VU7bXd8CMrvpt{M-d`(~O>+T%i=&}Fr=Re`WPm0DoQ4^k+h$20 zjG&2hPoCrxtWYA`i~zlRcWhu(_XGG=8SIWtBD=m0+y6Op`}PlQQ6@%7is9bbB^u74 z^Y8fY?p|k^ACrh$nSIgU*CtHUhfK5-iGa%M1EgT-I2C3 z9o+T0$kNvq)}wPbE`Z_o_0onwW+uT?R-#gR(#>b&7EfUY57Yg1ch<7Vwu3}dg7p1| ztRVE{^yS@uYF+4p&mEmTp!e{(W}UU|eYYdRU^X%4`y4cq+nkjt1vcBQ%4IC%aeAkF z9pGYu36;fl$KV+?cZM9V(-0GTCiv07Xgz^@ASo6i$tUYv14ww4%ZXfyE4~qr&qu z>%OBU26;aJG2HGnq)|%y&MOe;r9?ti`8Djj)do)up?SwUJo5B{rax<_3WW*U|XTy&Pqoq;O&lYfxc{&U}hhQQ^Qp z5l!JRia5rFXxy0OUsyARM2Q8U->2l&Xq+&FnI^hniO8UMi=J==I?(SN@4zn{(O ze?)E?|HrU!5k8#GwV5eFQuZ)LDXq`c_lsN~1}JHKCUe`tz_*8SVmvGTnhycGT9NN%8HTQzTEnBn(gxp&GF-fj?(=a?-@SC1bEnO+G`HVHg?b{V!IA>PEQx`XP!*?+* zO13KvE8*Z&4{d+Gn~|%7CkIMuu!f|VpH=1$h5>iMJgeU*z(hq7kN4bc9lyKXmZXE% zFe=sFt}uVTWKCgwq1cdDH$x6Z=AX4~yZ9KM$25Dz`uQ?i@8?iT?3=9VL$pw&Q_CN_ zpT^JGoW+_G=2bm$?b*J+>U0h%uF8ab=&xIuM$!&NR@R##YgMU?Re;{@#UJ>*iE5l( zC$XZuB|1{FJ;ece_t-LFOXo*P|0O2Po~L`}MIjLfz$klbl%iLUFHW}TE- zwko;V`e;JLJQ;7#-i3F+hFv`Egg=U6%2oIngKqFOH!>Y0N!dvwlFD}~N9vQ}ydk&k zuEXyR6>Yv=IY=yHw^UNGlybNiuc|z*9T1>sRH8pvmTBxR{4Xv~h8fVbFMe&zBsRZj zN{P-EUsI$UxT+&THX;8gy|vYKobKPB&}ZGdoAAWqjrMh9L!|HWSD2CFPr1vFIv&vtnP~@R>IJwe z0~squCfiviO|z5dG4*qgDV}!C_H`LkLD$XS&hp;h;V>n4*~DkH5b4qL&)6PMtk+&i z=@2u4D1UF>u-Lo*_E6C2jmsQKHGRBN-zs34a+0>T{Y=~ez|S0V@3=@sIxfYu53&-+_@$xydi3yb0=bWa6=J_>c&Vw zk(?ltfD4jc74D1pfZ2#|`q)zx-2w#3t{k@|H?@Vtd2-lJP6UrCN#^rQPcZwxsAk&_ zD_wp)Ls@-xyAlyEk5tBN4DZN#IOGook>O9yCSkuU-dtdY2904(w5A3L;id%Rd`ng! z7e}PEwe0w=$?eoPxy*>}JZL%6$(0ipp7|~p^9Rb}%;8F-D}xNnm}Y_P-;CS6wbrz6 zYf-S;?ehot4bHasnDo6CF>2cB;Y5~cR`{*_OIkg62#~i#BBN%)=6RQttEarxqV^Z$ zA55jkXe7iZU7gOW{_xn>9duB8aoLC2-p z%@Kj4cK)%fc~6`o^atKxLaOId`>DGU9?G`fFI<_HQzMw2 zr+R%OBOUbRZ-2#KS^$R@_V`h!eoLP$S$y^L^+(aQ-&dP@8iYK~+kT&uq)DXdObF_W z+?bAZs%kDpuQSPwOugxP?EnvZB{eR;LPVR@%y*>BtG&N*wn034(!odQP06>0Sl5{@ z?=TMgLz#&xhU|0Mz$BcIurn-vLCe?8fc3`7!P1`;Z`s=5KVAvSc!f0a54F}q!3*z{ z;Me{=AC10qRSc4P;%<+V%wt{8*{&^(L<(xtE|@LQ!>dxZqm8%-0)p*)UJtfv;BX%s4_QRv6<$|IkbPKoc2XKd^Ce0?G1 zP+=DmroJ z2#Xs<-7Mh^qqVtFD$8OHR2E749p4zjOjox>`}_M3riVj&NFEZ8LK0A?&BomS%ao3Q z46b1Ry=_@TuBT*#X5!Q6+7KE6q?hvM$yc0~j7IQ-AnA9+n=P$%b+5mDdIfcvl6qYC zK6K&;P!JS>gG9g&1jb_HDZ2QD-!)PR6=X%-N$vwqp(jAv64wjcFGuK6@&Ncqxa4ss zRYSP`2cCgqvUp&izh41}jZDF^T$@&MgG^ifJ%8-vg&vBKXd^%8JHpz(&poh-`m28r zW|Q-k_yy+Z%n|DLok(B&*EAqc)p1uJlD2rEL_v*w<4u*`Y=i4GNOk-Kok`9W^_QS9 zj13Ss18N=ZE%-z@LDc#9Ut{#=Ou)KK{)~}(YuDED0)OJg+--P!s%Bp~a&NUiVwlEx zZ&1vqT*lo~uP2Og!nd4ZAYv3}DWF73y@Qmj4Jmk+$-dkrJB?Yre`~=5fQmgg@~tAO4+DGVVpBjQ;0L46b*NSJvl-TS&TrIl5ml z_G%U~>X(q1<4BQsk>$*YSDSvF=?A*k9;e?SZU?oc_Wye)KQusYJ^2Uv?V~FFFCUDI zwEitnehtmPwTJ%={r@K$FZ;I=@Fe~zETr^knQ+er2<8rqwhL8<%HoCwHv`>Z+~K~Y zvlBc~UrYOhWBi$;Gp31U)^n%*xRNUUQ}Bfkxc*lZh=7OJKX7n^<&jU4n-rylaFX#p z8eMUZ__niug6LV6~QA~mdfz_F9OOjfE zoa(#gISNvEF)h165}<28`}ZwU&bYKlc;o%!YpX69mpY>Y81Bu8HVfAl*Lo>K?6Zm! z3QX%e^T?lNE|`DE3#0-GCLt-XyI}Oa3GNSigE4{kcmEF;;5$BjlD|;?`j8>T5w8c! zb~VD)@Kb4hNVrqq_gpXy$`N&aFQc@fU%YS$b+~-tLdxy>RcxA@@aBvRs2Wg92keu7 zp;(=|xpEaw_z=+nv5bJy*2^RBU^YZ-nBSHlR9GZCDt|QX!}h75obE91!3}#Tu>`Sq zuO2ml!E3+qOlNs%H2ma21&_AG7KV7F>ap>ck zAEmC|g=vA9Q;bqO<75k+7x&1=>&(f5DXvi&cg^OJSuZPJzOtN4DRBnIJi!u7t8mtT z5F@86BT1DYhumXwcplys!AsWXp4$+!BT;$<2KEl8o0<7y{9k_`lE1EV*Lbz%ia8?A ze;nv{YIdV)$+6gB@2@%0yYvn$gm(pq<%tDnn%|W4R|H%2eF(qe?B$@yZ|uutCX+B$ zbNDGhCgfQeW~Hd~WhePdY|bzgc?I_PJBLr$m1?L*5vq#g=Tn&4SvSfPO0J8sy<{ao z15eq0`toh28s}COIm29KP4J#Gqe$~i&wcztTjiYwhmlw#Q&m^;P59a!r*yv$9Ef!1 zt03e5>2Yj~rMtH=MI#yWFD|4s3#WJCG3R^F|0FYMeaMxVHD|`t?ZY+DMWw&YBdp1Z zS!OE=Lcll5lOf;hzbzUYoIepB{mVVvWL?@AJcd#su!Ax>X_jlySkmJ%FXha9-OJ$4 zQsM$R_rY|$TQe;m!dJ%Q>UJ%nBF7UW&}aW39lmzq&a8i1Q$pgqb5Lg*mvg#4gn&LJ zIDA2l2k|tVfj77%l{3s%rnY#{$UmB#q%`!>7izFUz>1fwj-A@> z%HNw=HK>cyHu54=g`Z}cF?3#>7!8l*TnmOZT>1jZSjX?BEkI@%8$2^pOH}0_RNu*W zx#rP;aHZI|n^Amp{!4uIx6ipdP4o|SCqZ9D@|Ao>(rS&r^CdDv zsc5H}|HqoN`weDrHojRfkoV=%_)s+be*GP6A}0yka{1D+@cMb!gpdI%$nhFRoG3#$ zDV|5zqG!+^@Tx7wV6sU@Iodz35Okh|ZWs*BOS8Uixq{d6inl-3L7zl&zeuh6D2?{K z$?oB9(M#I#Gn4*Kp}{}r3$*G7F{-YSj-aO2d=MUgGBGAyek%}RW?cJ>W?KwCoEg(1 z`KF}d3XYyDPn7r^am-h+8H9GipUiV;nJYJv2Qe~vgMP5An_+Kxw>doAdZg`XoHxaV z<5mayR2YgJk5#}w2qSeBBp1WR9DSlcVqVf~s6V0Gmw)TK*bW(u5JA)a#66ApgI*s0 z{Rg(VPgT0FLv0lLlnf|H6)JTFGuwWOt@DgLFzM#fn&x(g5y)RLPT+#54xk=cD9Pc~ z6}Pu4QYwl}Be)J3J^$M*L{hSO% z?<>5a2YiV)eoAZkHYsPe&|;;W`k+r$S0s9^w@v(-K!}V z%{B zwM!}hW)>$5KTSZ*XRNMYd~2kM3PAfTXu$J~F8}bQLCyK;rV-XB6Vt6j5%rUm$6mn% zAXTn*vXj_%Ks@G!tJO~YA24Z1dU`Q05!`fG#MK!rZhqLYQOy<_n{A0bc7UQ-6xuUK z!M611&Kkz$+?U3iLho3ySP|J+tLe~gD8{WJ)>$Es|5 zalY&Siz!M9OCc8+OJ7ihS1}V3`$qArU7HNJsM(GzH?h0Gg!uR#5Xj73Cl>UQ z7dj#6o}F6WZKr&<_lP~+?poPu+uCy9^$AcLEFur_{aUQYIdo$eQ(pGm81=W$8xS2t z0XWpIX%_cHF;r`no!ozG*=k9TO)kk>#-C{REVogtob=$-qSJfBb(npH&=aNmKd0Cf zJT3!IJ`sYulCTEqS~s(2DA!Sl~j@p0Df=Iri&PfzHr`Y%^RDI23rxh3e85r zPA?+L<41Wfp&#gzKL$ZpAlfRr<-21?9Ug7Oo*uk@NM0ug_){n{3XD+s zJb~>Ee6p<%S5h+5s0aU2tam(=>pEF!3G-~r{WmK0Oj&T`CFd{Ud9$WzAC`N<&+{SD zu_^>Bxb?%gS&HZY_T{R{>)8%y?aR(9aqN%I!5)e{79TCv8xYkO=J>ZZzMGR6BqGL* zM#&4aK*Wx!L2sP3_6tsH;#ami1-y5bHe51-6&IqPyZ?yEb*tkvRNMeD57MQh>s!lD zV8{Q4@_qI$z{G{7IJ#@mjpjy*@8nthfhN|UN|ZH^;QEC;4bcfZAp8S1OP-}2ISUcZOjg*1NZQ<@4`~< zZMU7C5VO7dMX)}jdcJEOJ#p+@aIB}(Yf>>Lu^+Q#>~H&4*!{P~3E$%0 zYNYg|aud8Z4tS65F}@(*{UhZ9dq^0)j~Ahy$zh#LnY@IY$mnM^Uw_3~5HW4Dz_?%v z?|>T4)sv;75xHu#eUM9z6^N@dXYN2-9uXkj)bpQ~W%D4;eQI6(`N=_55b z-a<2xXK+w{9@FHx^ee|s$piRZ^3Ok3iCF76o8;17>$?|!o!;A;GEN!^jUYw{gtt^w zB;ih777P~*p{Vl;tZXz#Z@&PZ3m?nq^I4$hu(Mw>o->L$BnRa_h^_|#ZnT#}Er0`3 zA79l2`~D zv1m}tBe@H&wOF0!TE$z-sbhhqh}&=LVagl5XCp1Y5u}lNU!6~ibn_Qgjy|ggOa@bR z#Vfc$=;{)3$*=M*fFX$oXhs(PisN~qoHS~sKfrGQHc=r*4{u#z3@ zptZQ@o=3BBLDG6fh2lg*8;?8hLjRjef@=Q^k2KPvbNj4~Vl^Cp6Y8v`eI!mrS#-#K zrga5Be)5Ub+xhY@DNMkN@PTGsZrqV?k0O@>sOwCUxLb^UcCcBBuz0wZgG|6U<_FB8 z^24W}sxgyo=VZMI@)4yw_+D^Qw3cIb+5FDzQ}whE0YRu874{v!LeU7Bg-~_3vyw|f zg3P+<@1vOgSlh{`_$zl`Au1SLDB?;#*^|I_Ac;DsE#OUf6%iV_mv%0`>GLo0Z6K2w zp{WbvIaF@6AdY`Q&&H^8sLt#zs+VTeWHjAm%>(bS)1t?nATHQgJio{8D`4b$S#YC; z+`O0goEr7pikwYK$}rcN!~)dQ1+4BUnFxh@i(XKaTh2S>M6<(hCbN^+`AsI zH)gHx_B;*LyuAu2<+WeO3+a;coN48*%JU?Mz~mI?PT{Q*klczDf3VFK(*IqhxAE<7 z0qfPew!@WSLCm<;>x8MFRlG!FrJ-&W+mP=`!#mV|EK71%P#llypvqFx-w*&a(>EP$TOk(KC zChm-SgE424>D4pLyge;C->ItbR2k^IWGC;&`X8H?1z-EZb0EHrKp7+~ z4`1;6uR~_e+!CRE+Y>_ahqfunCuV+$&c^_Mr4C~APC28}39^Zl5i zyIAWiDRDT#|FpJgG_cK!(1-zaM2`i1DC(Rk{SlV}lRqO{j?%UCrrC2%LL-wvKkJp0 zE1V|D-IZjd>h$FAP8cQgv}EYn=QD50bFEq5qu8~t96W}6VkVf7Z9yiM6qPon_f9p^F^6Nn}_375` zgMXCPOU{i2bU@;IvLMf`tKt$CO>j_oF0H_{~F;+c0|v1Z!=9NgZ7BMX$F@rr|v>RZXhLR@plnD zf%#ENaXHp=;B+bJeF^Y&VNo#4K4Fx|gUHq)D&a$*O^9}Z83YB^(>{MgEg4DD1d(Ba zI-j+mJu1&_v7qK!$1_YAg@Ns%2lJSsm*P&iipY`BXD)D@!Qf$)-wH?pnA6VZ8?aAHLo?EXwYS8YYGmL`tNUR9d=20cn)(WOG^+@B7}r-uZ*;@p_oyp8Gy$pS{;!do5l}ruA{led3K039Vq% z#M?&>`bAr)=_v^#0AttyxrL30-CrMP{a2G{g&l7ITI?I|jWI;7NCI%)KA6H<)*b+Y4@ zy3i?_?DV@^8z^QmC7wkNs2|5?!G-p5q#W1hV@`n4{^*S%19y9@?CU8FpV=oj`0fBW zTfgcHMI-^#q(Jf}`BTV2*k)&Vk=-{kCh6=1{*LV3#*wj$N~79HVB{QrI4)NNoRl}D zM&nSS-t7=f%SZ=;xn%{)YWuq+Z7=Qy-pE#B0PYl=xYPZuDf8`o3D2v+MxcA1!;AC1 zA5L)d`%(|05a(Dca~E_qF&bnasC$98$qW$AGH&s*Z*_`=FSeT$fF*QWND9B1)qJ5N zB*?A($l$u%`99rIy-hzcDB(1!S~$FC+oR>fU`0<7nw6g%G|5a4QY}&UWJ%;Cyuu{m z!UXI9e^*KSF6?)>cKR88)#*C z!j~Tyl{DbKE~16PZg81RCudb&JInhXAx%$DUBkKT?w9313lS$hArlbQ;>LjWPcs4D z(cvqoy#JEIZ$paCh#;H9>?exffnknLoZ{q8&3$Y0_McrJx=5q$rLqEp64XJ>sk~d? zBz@G!DN)?xSbIxKS%x(;6sm}A3?^K|Tyy6$&Iyh`UGosKb11e}$b&`T#wK0`L>8Y3 z`*Ia9u3gX49UzwHsYkXw!mCX3K~_uxBC^S0Eob?^PwV?WUWTfjcuXeLW0GjaUeXa7R}h!4n%p~UR(IFHERsktj= z>qwFM(>8Y_OZ)xgSfsOX!>bMgj2`$Gtl9jUIevc&kTa{f!#P*H@%NRzBpY)`0dJuY zh~H4>>KJgZ4kX!Dw;!v~@ME<)MFfyPO-AepFXigdf)+ArKxI>k2@H8W%jnU^q|Z)%J&)w3H+F{BE~rbgT8~4V+O7 z9^oZVM87&JcIV|r_H@LB z7yZ*Ub>LS^WNkPdfwwY0f*jO8G!m$ni3lPb`pPp@ykgPS9;IlKSsL-o+xe5dMs!C+ zDuV_W!F3PxBg*?noYLBhL*9kG^B0#hjl)#mUtHllYK7;`%7yD*YiOTC#;~oNFnT<# z>#nixZ3f1L#6C~F?d|P>6+EwV?I{W+`@upB?3fh9P5@WOZQLcm@LgR9+B2^V-54*@ z2DnhRQ0XvQr_&SNIVI4@Mbu%`K_hU}e+($!KpBZFAzF!9&%#|JXi>5(OuED*96LAW zxf+AIkU}tm`}MxzxP))JN>TSsc@^14w&2ue8FF`7sV8akdH5tL7f12;NvqcVu@EjH zR#Y_xE1vTN!OFL=Tf*MB0<(k$U7kOYsXL}wHJ<~C?o9ZRS_@lc7EvnGXt7EUeDR-e ziL!g@rnkl#MW%{%JrREaZ;CY$OM@$6*E0S-_6~7A-ky-!c zrRVu!@s~TVXRXX#2P`}vHZ`^=3jlI$uJ!gSr?qMdl>(SAoq#8SvbHPo*h zKIqy*hf+P!jzk}dKsv=5*o^L^QvPhB=?-!$tyxrlCE*d1bMYN1m-0IVtNDdh=6P`B z>`&eZWBIHa?T1U6k+X5!5kDZzQzFDgbIeT#N0_om&jW_^nX7Vx#Brz0yCpMhtECnv zFw#>rqSeJW-bCHs#&%^%xw`RFN=TK2MmagGXziq%Xj)3htHPnDwmu^8&+#gYD?c_Z(SbeA(eQ!EB0a5x&}W%tf9F>U{#Wl*7LVlNDxJ=(gTKP3 ztj`pP4pQDYt{;e`9owhX;#|v%;&|HM9zNuL(3U5$3W9oYH?bQ9D z7!qJH;Kzp(O(jvgM*@O=gUHU?+1NL~%A5x}7Q5crcl5!6S?(j*qsO#IVWXiE0PCu1eC;fxUC{D z-fk+uEH{-#p1(Qh{DC@TNqMA%D#dMAYhJiOG0hn+)vE-#HE&qhXvnn&&A-z?bxa{? zlykT8W`P8+oY2`YA~Sc^i>03IUVy5Pu>p;{bf8dS zo@idCY^?KWD{2Lw%s)xiiGTyMIun!+=Lf2oihoG){ctYV(s=L9hj1yd)Z%u3F%KVG zo;GCJ>ux^dM=>F3L`6%^jZ=2!wor>;E=$nz9ylP%o`4*LQDH@=Un%WOv!{AOW;ryT zEv;NlYwc2p-{OY#lXP$oSB}>_(V7rEK^wL2t9(;oeESZOKV)tooTR9lqn60BXQ5MX z8}6r@IcU*_s3*z|t){P}SlB-7sht_GZ{D+iiXA=D|BmuJ!dG13brRINVm7TRrzA-? z-bQsf;BcLNyJ=MIR<&Tp1PjZ{l9@(4sXa5E4Z}O^iPKQ-=Z=~+dcG10wI$?`5z}h$ zu-ac=1vERjDDFIb=a8Pr=)6rDZK}pV99(#UZA>wEBRCcPGRHS@;clS2w7~fvk?x8= zb6|Q)i2GhQt?8Gu{G5Ute6twfz(kEmc9vXN+kalrORh1(M_8g!xA~`!e!QC*l7}ad zoI2_LP1E1`Hz&rH-_2>VXpW2!cOhfQc~&I|{9|9O?7lP7kPqO(Q?_iXyHw-8f611T zp{36HKK53I<%6QixSzq1wB%SLgqdpJykWS7cUR|s-OUWi6R-Wnp#&76#1KVtaNo)(dRI%z?(icurM z%~Dm;PnUVqxjeN$fs!){*VNF*u>dZ2bK!Cqm4R$8CM)=r-q0UAY!Pgz+yVKh+ zGyMyZKleajyMv%xqus8lhirZR;%Ve;>?3Sg)P}{i;9EhKerOz6XX5R9r>0io-2`DN z6bLg6fNKJ@_h!lGq0sT{*;d|k%O)I$* z+N*gumbtTGqdPxpcFmWbsT55>k6}V^8vkcj58Vhek$rXI+B(8Q+@#rdP;~aJ9Fgqn zl$=e}#Kq6_pAa6w`qI&zapi)8j+ zOziLf5Gd#z;tIjP0`u|E#wA_q`Mv#?{nqH!oY`yE8Y$#FE%CbqCn3d)X}}rFXmp?S zmF>Oh*w8R$!FttYbd!5S2K-9?fj#p4JQ&oEnU%q6{eP<$=3s%@*R_D(s#xqqbvAq1 zOD3oHeF-%NOb@en9{Y|tUGklO7a6LpA_~bQcX?6^6Q}GHw#4-fCq-SV5;e6KT+fGGbPAgNDwPBE_C>RNT26OP*KwIo*o6J>l+mev}Z4(9My@MX%m0%XEE(L`x^;1-ucoOLD6`PmNB%QbErHV7*Dh=UnsM?i2QOr`DigyJ@aRC zU&iNpcaQ_JZxvH!dQ+d_DcDH~F#GfTIw9+_i?n~mOBmYSzKC2E_vh*f{A@FORU+LKC3}RIO92bWw?W&yTCsAi z3{KXngYy@l{TH+JaaVo+JM=~{zZ{!JN9$R9P4*|!W#=@d8tD_i$fWU&sE1=J{$tv? zvph?Lk$Va|4nLcy(6<#1(tARv4-XH2PFFL7jx!VJLaKVH{Y15FFexX|z1;cCO7tyG zNzp0&ikz);tB-DdtYBnqC_@5F6LLwPfG$Xeh_;5mWrYsvG9kyDZ2nrC12l}&e@`aC ziawEOnRh)C2z~&Sxh3>Vz?l>-AlYF~J}b{5<@B$<=tC$|AUNEKb~N`Rke(3J6tKvx zq2o6yw2WwzVWi!HKgD{S<(O{f1x7ESV}m0XdA0BXz1ors{SAcbv~oLrOCCK%yFn;4 z>jsZQ^4Er^x`iNTOBM%8LrED~S%cJuW|-0`ozVi<#}i#l{}_ziL7<|AOAjj_$OQgg zdPXMuish&hV=IS(?~T3F?Dqn-C{^W_v4Q~n!T^?n62l;)BKepuk3Nr?){&&@v8RT*`YMJG zu%74s&USEZ?()aRhEV9ae^tvmT?f$6vNLDcWOgg(W6`nAF_w!z&gAvkD1dn#eKX{g zceSaYuQSQh{KE5~{G`?xO~Gj_$-ZpjqH#o$3+bN@-OK zcfVU=dHCt*n%ZWDLQRjguFLk{<1hq+)Ro~wGu3OPo4r*-T79<%$R9B%fGJ_e$@k>f zX!z`=DvU7-RqX0&7p8lBu+DdNfN)smvdq%}i?EnDZfFp`1VWZyJHxIj>D)&$c}eJm zV=>djv&+uNi!nO_42st%hCvebD228)YS3S*UW)Iqb}_5x<^VI9uYmLsS$>@Pc}(BX zydSi*H2nPher2$(kLC@6@vu=q$xdgyq@6(`rwx@cK7K4B1?8LZ;KN`=cs>LJhCLnu zUEff$iU9B})9hg}Y~p;n0S23Gnvj002ZPKGvvq49lpMzLhcKTH{)dTHe6(fPfh5Fj)>0u6K_0)7SBQdr1vsfcRzpM?bHWX)8YYbZl*On-z$N^%q|AFx&F?(i`E zrUlOOAMyS0O|V{#mO=Qo*>5I-`{z?JAovVj4o27n=kIS$B#QWO6bJH?u=gGakgRSc1_U{|TD*k(XG`GUg%@Z3ZFTuC$cd_N_8hn(i30trxx1!KIwUnl;%LMmHSAx4qH zPX#)K+Z-({m5I|Nc;@h~`k41L1q;@47GIw7-vvA2V(w^pPR>U>6oD4Ou*MF1EkiS@ z|L3EJW`D2NE~XR%vWp1TUqsY)X}uJfzh(6bUi~4e_J7|@2Q*fSbF*jTy1eBJ)EJJ1 zmH@}gBJQ7aK&%Sy-{&s^rkTUb!M8ETA~5u9~BuHX=nbt<;?!&P0YMFc>UdrdZ{@gcyuvj)9|x5Tpbp+ub!TGe1u== zyqun+gH91T-jtnRLCKX07UuRKm~i-1UG~0xpyBU0VW~9v$b~inuqIvS8FJ6)qm%y1 zYaC!han8k{0OPDqS#7`qvrJF}6Q{_eO@Eym8K=|R7m>a{aq7eC z%iy%s@_X-YRATt=arxZ_L22@OJ1cq-hpq+Qa;8*9tTGIRKJ6Nc+nqM^CI$Dk^7BlV znHLf8Z*Zu4SZd&C1@<^*oBImtFopxX0bzn260Wf%1G}ny(V-b$D9>$mZJ%-<98H4t ze<1b8l1f@RxWZ!f>s=oF5=o*bT`RZviZA7JSfedgzm(rmekE zH^OJTztkNUqlM%4ejo3@6+8v@W^sDXY!OlB(7-X2TcG|df?G!C+W>+N2aUCnUK2%W zIBA0jJ-R16zBYG&q)N&<#u$c0UqB>}&cF^tc%e*3Ip+5_d z_#{6)^=z4~f*LF$r}c+12N-x24}7ICPaF2VtMG--#QzTIiO_ynExynP+&0zJ{df+v z=yS{MCvjJDy^uNXVsMavV5-wXheJlemirxhPchlt8S2}6_As^x zd4%-HtwZ~{D*=VxzKp=K~j zyrll(8u&P7L_XK|+##W)lX%D2p~=#VL27~bSpt<%MH{HI=S^l-?n{kciP%cjvuaij zFuBi2_>H!OLEH?MkZJ-y;=O9@WHuE6KLVQ(NACzJ^=1PhE9!1%U*UbuCFRIzU)$nE zd#d(@X|}{CJl)gpG=HowsNK>AWH!tzjWITJGaeN65Oq&6+z+EWSK%o=wg3qkU%(%W z%@_KHyyk#zIdh3zGeK}d8@Yb@*TTan+TZ6?^6ZKqMAN)$Ia};KyN1|tS_)fUJ%$8* z)5O(E$UjVkcivpM0-og9OvKF0uFxd4?^k>cY+hH|&?%e~l57;p65H~nm)nZCD-lIt zm{@%i5fmqM8AVC)M|qX`C#rViq&7!JWkP3ub(CigDaPKia1X_#UZs^Nl54C`JWi%+ zv6qeLd!Cp$d{LX1W4uG5TKykoaE>1&2W4i9QA6$7wDQ8V4eBQ%tvtVX%df{6 zM%fl|N~0X1%BeftW!k?z@gGlJ28?6T_naZaJ1KacT=pY61ncWZ#O2m4mkn|8aaf5m ze^!aq-(O}5sb&8>G3#B@Z<)m=v>T3>wzkk{VpL&mUHgtWM=mV1ZXNGs;NSZS;tx>H z0GIKTDCKJ`zt)q~eUVuS{nriK?3WDtHMe3PeIJ%A4c7tE>aCPJPsOB`_Y1omg`~XxRwFeCg><#==uGp5zzm5 zABumYrCycHD38gDW%(7#;93_1EUnQNQSs)A=B>S6MkV%ztk+d|lr55yY0xI2(A(-k z(dO!CSH9p%FS64M?Tu__Rd|wQd-uEPXF@LgED_}hxZF?Fqvy6hZ13+f%u!Zf`z(>K zbgFyr;F0As5jO4hmzfQSgn52m1yi0pF;GVQ`t>XQ2xt^?i48r53tTSVphCpbuA)qb zTm2$8w?hg6X4$b2*U!sANwsws^i>55L;w7&Y%}u$tW1x(_1c$$&Hs+Lf5&tcpch9N zcMW!hrrC-q9&gYqq-Mv{%BPx{YCT?BFHOOWC`$bpj@`Xm^1u8Szvx#sn3nz^4QE=^WmmCiL=niM(Mj*6!ocqVE z4gV#jNE{CC9?x~Gq@LCKduopth!7-u(|Co~SDCd_W20|Bfw@Xl#L1|w?L_$m9oZMLMZQ{6*;!~g%d{JUJghATiuWNk&s^`;n^oITLe zOOPdlNJYap(S7{5yd(8pu3cs;S=$3u8<3%fya>AyF*&S2_?c9i_Y`&vcFObdJ8mkG zipJW2;GKK|)fG17Pk43rQSbf%#S#lF>@CBp27ygZEyuEWEqk4A#9~x6?=nyK!*I^< zKH5M$2+?>Us)ILZ*IYGK(cC1tgX~6U(H%fLuT4Ybn(^uX<7DaUv|L6Eub-TcBx`E1hEkAHsq6I?K$e%95DKzrV zG0vp}Uacj*kp4>2UDt}SyADWxSn%94R^#~z0Ynf^6$(Dw_2#n`ow27k1{R}kpGvaM z%KBO#A!l@!rD2vCGn_*b6MI*IF#g7Sg*h^0`Gqr~01f#Cgs)Ny3e2bMi9=3*WMM3) z5QPOsA0Xjxks&rM1eh`hgz4SLzg0W}AxX{ybIbOxa2PK<2j%ZZI4*^AQQyeO2&U%T zDF0ApGn!i*FqnnBc%epQ^l#reQUA@FBY^Xe(Ue)mR#lECpmzc#8acpK@Gxm|(=;)m zqZe~qn{)59KR-E0q!WqX>o}`A>59ndQb2W-7hnH({?%RlFMIyc)oy<@^6Aqnkg`;m z=vM_JDV7XD-}ub|rt$;Sw%xyz5Fig1A}YT-&Hce$0)eH)Aj9?nzpW|cqi|qziip}!?bLTKN8$6^Sdhm=yg8m zNIimocC#Y7CgortAyN31Y8F=F=AemW|)FKb~4y7dzQTn_`YIZP8@#^ z1E&~ksGnN-Gfcfpo|cOl&md3xeuvb57*XDS^4H%ncGBhF`E@BsrI_E7 zLG0))J-sc}|5}>Z?8OSG>J%I4|NR{;nQ%_Tj>c%@J!T z7(uucs(JNdgb(hr;dK4=D>r1TloHbwyT&gW^HEQ5n_OU+a-X~m362Fh_}Rm<>&5Q` z>)&-zLX^~W?$Ko5Koy;M$J@?Ap~v*EEQ+62!NanPE!AJa9vs@iEOjEBVK@tk!bjh8 z4-h+~ue?w8Z^D>g7HiXWlgvH~Uk}Gk2rolj8cS4vr52}hq!t||=)hU6ZcS zecsk&+1JKg{yg!y8A2!vzaP4(Tmn#W(stwjLK7lUIj-BxmuMh&h3aV5!Tlb(qnSM) z1jcSSfMb$e-VlcOE|fO~l-YXCYGma6Uxeci>6fC6S_oHLqa3`Fx1?gHG;< zD|JUHiW5t`sscQpL}|Wr^C`p__9d0<`2doDO`_9$?R+4PV07p1l7iK^9gSH1(=O)u ziwufnW)c$I)~p*>E<)RTsJ)jS!H-@LwcWZbI$`Cr&O9#Gat%C|}g)`q;C`|a62SgqrN<;1aU1jo&ukHwBzv;6wUz!z&qm>HN zjaTe^F}I4X zmXC9L;ifu_ig>)lolGFJ!HH5GNuW%ov4z62XMgP<7wII+=$c?brx1utT(L*F=!E>v zd4wO?SqJk|dWN5JFHU6W#y!wk^C2Kz@U{V+(4q5su{ z&RFHOwWy{(W785w^%pmf6F4@%ux@NT78a_0Qe3H3d{xbgc4$6(!8T2cSCK3&d-Jx2 z@&(5iS-?}`zc*vjhPLsQxbDyPO#!ncME@>{*y5>PsNaL~XEVy`;TyeYog($?RP2AI za9Bqqw3N6;s<8PW7Ksg`q;ob+cj-`G zi%n@ExahwR=g7ST;4@`&{prTbHC}V|g<(>viaCuyEptJy?Tp!0a@v+79mdzOdIdf} zc>^>uirz_PyY35g7Y5CC6?7d~pWS`cR{yP0qI&~HA3lhvAnNW2z*0wE)OuZ?2tOff z&w4R=f7z&a-`PfF;q*sa)eDrLP~HaWtq#UQO2zf>c|e>qd;cg1Rkt_bo|W3^^^mCG zHr!U|%a&cCHRpE+)TQo`@;#PsU;PC#DP5 zU&%VL^6~QBpsW$}^X(1B96Hz2+Ut+sI*#*mXy#6Ot$j+%(4{pE&?uCako@TVK8KgZ z$l?S@V5YyRv77sd|1V4^l|P$RBco(HvEcw3)XNpEzdmXBo4LN!0}A$tP^{J{O*qH4 z1N10-EbSe0Z}lNzdT?z{FoB*@zSMgSpvc0wg%Z+X1R$M?=3myo2r;D^`i7p%{LP#$ zysk2+-*dQjdBc*Q0CbAVpLDa(-vtctFao2R$=W|}%TpE7&eRbVMexpyI!8OxU7|KS z=wR#FJHeo727W9w1>3zlDkm@5|D4mYGt9Zu+r*CHG*n8XML=8xI`9gpON9qThxbe} zukDkB!#8qfA(3R(Sl92@ug+h5v;#f!0j`ExeL8Zs4zm9*JiPmtokR&47vd(DMJ?xI zyJydqpf1M&-(hM?&~Kk@X(?)buv6~mLBfdm5q3Hox{;EX@YrXr7dc%bd27}w1an03 zz^YXa;+$4dd80d$k;Lz}!-;-~ySlAiUP7m+Pw1Kn#XabIV#l0NR!}&OdPJlb+a!up zWvL(9pG@?DzLUrf+W`lr^k*D0pv<(WRdZ!oA-H!9>W8~u0p}N}H;{La#9`}=2y@@f znCt$?uEN5sXYdG|2#hZ=C&ITbL>=MftsQfnA~0v@1x9he92$KtU|jtN{$pe;*w2%S zh|YTvqVTg=F5-64PsHxght!>ohmAhIKJJcU>fJz*ZxNqFB`CA;=2N%ihewc) zbS}$Vu>2UX2>-_g*i%AHV?(j%d(Q$~F80bSl~5ax^+;iSHR?|}ThFwiqJ;i}ZEo}{ zl>Se+!!zbX)Ys145j$u|w2~kZMKl^4jVI@}Lc%{?KPy`TOjMz>k$Bf~-FjPOMk@;8 z)z!b>V?xtk?{K}8n7emcrYlXw+}aM5{~YhCgLX^p>fy$?16a*~l_pbR(JncA<4U+5 z$ z9b9e!<6&cno4CE$ZDjGB0u=>EmjK%>kl0CNq(&JPCb z=iALj-p7zJ7s@zIzMnzcI%ipc)MiHj6XwfofC&Oy*n21x>UDL2K8%q&j{w;1)lGmo z@=jZZ$)WaKMN=uGYnZ^CbiOa3~k2TUktCn!H|OpGS*yzX57^_`}t(Xl(b zg=m#m{nnn25Io6BuKka-_iwq;)3jrE)g_dB-s~lWsKY{DeMx00wPxhpZm9j!=^i;k zc#a-qB1)+*a~MX9PlCcD4E* zyM)m0dE+$y66ogFQnKFXq_#yN$8qYH$3MTu+|zwmEFd_0Q!`h1b~VSLFkk~%>+-oP z8CwMYEGYoPTVJB0er$+Dz_pR_9RXc^f`8gb+X_A(GpeS?EElHRC!wz$sCIAGqSZ;o zH&-EXpT@BeJJrh~LD(C4vw$s9mUzDd(!sNBg301vVl+s~ZbC(0Sk3CZ3Dbk|d~>;> z^pf_P4A7A=eL0_?3h>m4N6hxeJF^&ts<@bH!TLw@A^oCCTp|xX7*u8pSmPXRPxHg; zCvQFl7rXu%{D8J-8`W5KZvdJwH|)XV@??0mSUqJ#S(jT^67)C$o>i(-gE=%lV%jC; zBUehO&WBH;`o`lvuQ0?T}F9($+gsnE9pU?-O7}~sXc%+uCY=eW~D4UMO3hNQ_T0jG**zzr*00i zPx{*{n+1zBjmrV*OO%;9V5VPauk+FTBnDdDcPxdv+h_y(@DXs{Ff+aXoZxeZ9^NDVfPcO?+Pu?o0 zWn~!_+=-tgUJe?W=u(B8t$lp$ct(J5VHC(%!Y!#q$;wcBVwwti1fU#%2n9vHF@D@T zAM&8*fFMGqH%7bpOxGHYeGz`y6)OMGN@QO|;5)MDetlkeZ)|n27y@BH>Ei2?nDY_4 z3cnRc3Rkn|vJ-0$n+zT_Ujb|{v)*vUXk#_c$*= z@`;6UIXjpoivP`%fPA866geHXkog94!$B>}FVEW@B&&3dQiSu-oYO7oO<;59| z`hMk=i!7CRv3|(wZcRBJ+hs;~oxSh^$I$NXVjvBH?H}~(yL0tKy@NIuhekGl9u6{u z$iS55Knk$ESKEPK0PMn!n(=p-GKL!qZo>7|;UAD8!S^;?vJgDatO7jS zjpi_PpIXpaa@V2JKLt}4+<#gjnjO>^oPaFO7AvtF8>+ndwBi2uZOor_{Mo z>6>fdUTUq8(JZ;V`jEqTL$%{0fernlFHWHDi)Oaq^LH5OS0US^<;w_kT51LB`(%H+ zTZ``LdNr;^Cs81f=dC?;%R?dIUn`7-LQhK^`2!YTJX$CxwOgCy{(%@?4Zy1?_=TGX z<$K*-Etz@-$E~UO?bPDu8?+ovL);m5@#knYU7gSR$MDPOK?0In@>*Kgu`EN5^sT+B z?ME^-a)sk$j%VJ^WY5mdGI;ip3p;)e|NZ-S&*57e*YZMc9H<|aK;%-0t@AEkqENkI zgf}weX$ig|ZuH)_Ci1qyfsjBCFtNkr1%A9^t0ImK!D<>pTwp;PV#^QjVp_ebD;eY$T-Dm+=lnym#z&?kxk^Cm9CR6aLCEGVh_m;$>k64D(OOLT-pBfU} zA~Cye1?|K^l{(_D=q&|A=G=HlXi?uA4!>7e%p-~{e;9L}T{^nb0hm=R%JOv+q;|T5 zd}KedY2-2P9j>*kJANi1jDizrYR%JEY&nn{lx`FTC1a*uK)#?;s>S%{XnSyfxflD> z@bC&yeYm?r?@RztB~B1pFwzlkm6L3~mFw@cY!m{<1R)`G3mJk&{s#8Qz1O8GK(=!A z$8g?!#K%6y0ZM}v##%=Lqrafbc7t+$duI+<1v+mcN1lotz+;XaFm6g}RgP*uPLn-3h!aJummgS3ErD8>@<2e;Zc*GAf!# zN@#?1FtiU*ct^Gy76T7s2snQYXJ(KPBXuM};M;@+?>a$Ufl_CBX$|ov=Gl~(CJ;ie z6l(4T)|ESMW;wOpwVa0b_(5xPcF2<=jm3NHRuX%Ljn74e+6DTPOk&Q5VOM9&gACpzr>CdUu1$-fQs6&a7TR(?RCnZZ zSGNiBb;CwQrXPdXH*I$~#bsDW;?k85XCxaI78oR%W6H_N;Z~PydS?X2sw|d~7o#o` zHJMi2k@U!mkx8XYI;h_@4_n$0$B8$1;7oEDN@uSyhc`B$cEg9DQ>9aEr}Jph)yb%- z9Mv-%s6ouG+^I+(!p$4qUv?ebe70|xlOcN!9?0VB7^Y!9_)d?u+=b%RrBc9tmPKG3*x%TnKNtoly|nIq-p`K45_Oq* z-2Y@RRXM#lQlu+a#CeO;xw>1BFtqRom}DRPTNea4^_I&*r^uS`%+`Wj3!mgx7p+5n zH>N>vU|`Lc)t^8k z298~Wqx@S|m~H8q_UoS#GBt_2hr2(3a_Gw8__H=OfWJBv_+nC}<&)JE{vAs5!o22E zi@LomJwBmrWul?>T}8&F2t9%)<_H%uD=O8{OlEJy{a|2tn|SMfq-~0fC|?Uf_hr^b zQJ5@%Zu$7ze^US+fEoi%aKm~U~tab z7x(NvwwY}cTkwCo^J)0$pWi>DsSRv-xC?%B_;T;k+1LIS-r8ME_JifiCnS)uS1uf1 zq3whtraQyJw4`<$dWM_8Fs99yV%6xuw@Ttze&3&#ZV`D6PQBgX`?!$2&tQwfkH2_K z4@3y6JN|GLNWu7~Z)5mfpdPXXN4lop$>YfQeN6KAF%uKSMWnsL?kaurkW-mCe2RY% zSDlBb@Z5>WDakQLds)@eHQ;Y^a1Ij)Q2$ zY}pXW#n3a?638(i$=!7R(4@(Jd(9lYuQ1<&VI;&+M%UHXCyYv`6RYN{!e!JZB+s|(p)rr!bfhqK zLj(cSZJCg54!7NguUc(D{-MD+>tvP$3l<&Jj7g~`)xJN|RwVxGJV(s%;IXmj`ax7^ z!1D7AvKUR72zP{wV7Fj7Zp0oT7j>rZs6EgyeiL603aBt_^YBBiU%^~M7my&_DFUwu z?NJw&?u!1xw9v3PHV$kLG#>PrJZ)AKH3lSc0KxmPh!{^K>@pY#?}Sk~kAJ_n;VYK+ zd3suvzv`&)jG0qA|Vwsy$E^ zjrPS+N^HG<8*Zh#T&$Ym|7(a7^A11)Aiyk6%ml66)w#E?4BjlZ4_(-kEMfllwM5)8 z1*H5U9ROhGTdec&H8TZbNB)2}(0JMkmaz?RS7!)4S&oa56qR+WriUlepOc6GnA0vC z%UoeC);lOy!>j|KFssNmu?ni9>~CF%aRu`i?$9Zc=0dBhyeY^xm~F>gyz?dPElq(B z{@P0xkvZ;YEJHWV{gW!{`p6(cP%DB_ld|1#d6qq#&DdGsuMUMY18FPHOuwuGFY$qHwt_&Zx`yNOk!8{@5Y$CrkY{tWi)RSv0eS znlk#$Sm%565CM`A-({}puc`#ssik#x_xaoUD2xXxC5HwUruQ-)~0`6w82t7vUzO@$$j8qM+22Z6kDh87S~1QB5K62^N46GgQMvqDL}Nj}^g^so-MK2&o^1sB2h9uKwa0ohC#W?O-gvb!$a zPYou{PY-`iRnh~q8b+`SV&^vH`1w;nQB>>aIuTZzL@!on(;r`c&BBhmGH}<~;0kSO zVm6<*ldSpSM=pJbk$m@`6Cxh~t^WYpIMpu>Vn}Fpc)FWVZ(EkGQ&%+A9>CdoI@~En z`NgvX2`0}&#Omwohek*3mwTc;cfs52L895u6~;L{G-M5Oa&T-*{5+_r;Mtn4wp9v4>0Mopkac?x@i=N_%Q;HU|>B5g^vZZGR5FE%l{b;?{oO zEH$5A!}13up5`N89@c`2#-ykB*9`4^-`DkRBKEWcgH!AX5IgcqZ~KlFp5c1}!gd|# zdxLC87DL#k6LypbCzOPQg!IYMGfaz8*l98rJSjoX6-B<*O_ufXBC;;9?=jC+TlSO< z1nc$Y)nr=`s!5n-^Febak=Hb`&tvtJykxj1RqYRm*emVP8P~ z08Xy#oiL>D^nIVr$9_m(!vzqGuS@UCgG@DkrrNB90=Ch*UA0!Yh6_p=4eKK+9E3_3nBu`Jx{;^Cm7R3iDpYsm6r1YpEk zT^>;y{c3{UH7W`oFtGn*`XpF&9WxsHbk)JZ;cJO{*2=WGMS!}(wJBGdRhW8q*vK|d z^TlZK_&sWH7z_;!y#|AS(m;y~Q7Dtw;=N%51(vdzpf0Vq>c**RKQ@s)S;9@0yY$DX z3kV8EM$3`Xi?VTY#$ZIzCM!*|FnJSLu9qi+a)RI{VYR~c#z4;50~+HaK(pusLz^`bjhZg7h~5 z3Yj`et%-0ee)YpEoJv!(;JbM=6*gZhEaQ*zfPMl-4+v-hVJ3p#f+AP=>6a*_gq!!h z*EN6wj)^$y8%P%X%vt|Px>5H-xNjd##w=5%hA&o`7dQsIr;HtH{SRyaO56)Z3>5+U zZzk;O0w6OEpHlCf|C#QDW|{k0FSG?%13*+O z034nxnSOpi?`MR+Gao$K6ns*;eI#u0zD*w?==h%S&z9?RGX-wm!NRO!zK#={z~7tQ z+tr;~P= zf{tBU{dR}D378RpflfSrwckr7u@cMb0aH%A)%{B0S@TllHH@h73F!W7L!lf%Z2-4D z2+biUR|N8;cz`gafIr~{e82|#1+9A^T5=b^dwz6H$edtS)$ZTE>UB&5M=xTGpG>wZ zahkUx(9xK-p=H_V=7L08k`QIn)ioaDy5jwmb1yC|HxD!cH`76KKk~5G=@Vy(WF}Vw zNwyBOdUq1s*|DFcMHbBs?H28U6&8$oc8nrURG3T_;4ME2U<ZV(;KprVua z^AjD-6RUo1SmE>3S7^v(E_O4h4*!be^-Mdyl zzm$0H#-VKoZNV<4MvJ#TYSypW1Qdx+$qxWJoTfHuzjMkNE<@%%aCE54+jG0KnxM0uz4RLL-r?rJAfQ6vMskexW2*nV*8@T&dy7j+EQm=B6lAc~O$a)4U! z#cDxmIPt;o=&ByEm935nN3G@8h!yK=zbSW1FX;rBJ@oX~4*;bb_@4to(-tG^w>!rz z#oxFO2Vps&c|CC=7WCye3|Uk0{qVzax&8-nAadisRaSaS(2nrobCP?~29Fxl1)ZqmzR#=P752)o|*EkW;G&OPTl-`U^(_NKcV44`VMqD$VKloqi4s)HGCm*R$hV}p<8 zbOH`_!BqO-mv&qI3mJL+@{vJlM5MBOR9f#vm;v>oGZI;{dXN!IsjfiAsl6F#EGgIkO*N%6J&bTR@WoB^d5QB-8@4 zehV2XQh?6@24)71nmPC`DQ_(g%3hdF2FkveEPfo|S(z{gzo&06A>dHmZ-bh;mH%QX zyO6%UrR5Q-Ze0)~3?q$%my|?iS zO#AT|>l_Ql;GeHk=D$aDvIg}wpr?BqDDLP5sEGp5 zo*JbAQj)iC-(nP|urO|yn5@$bicA=gI|XNes$WHBG9SakkHG=Q$cZ25G+KeYyTWPG zdwu^mNP;~&=;~GeU2$4D7>U zU@M9rzwtdA^D016TcLh@qPoRefwI`@EBvaO5gjM9CNY~-cUTV6P8uO|)769Fd;^!% zM)OoK9J(+cKOhb83ViX^W0oF(EABX%7#h}ibpuPL_qrI8e2nqh!N!V$b!kBk!lB;1 zuGJv^2u+(V=X`;>JT}THm}e)*OFkXR8m$n93$Tcx!Y7pYhur-^-5%o((ZU;GVE&2= zBh?JxqC4P`c>sz~zuiLIn<)GmY>HoUPZ7A}C4kBe(EAP$6OJZlE;_*W9AeqM8H|lv zvl#niWu{3Uqh1UKe`yOOiz8Zr;5}P|s_cVtuXZ*=0%vf74%(na9@j|%`mZ_Yp2Rape!7;&oLKztzfbxAvpwISPtnG%PVTqCL)Mf>esO2e zcB(cRgn=^YMYD(2!Gw4Y&H%REAe-nQVD*3Is8Q(n8~{;?$qntkQ3?O zj=X%d8S9t+tVJuF;FAD6AY;<+rRw@t*F zCrH|6D(QMrA5Omtdo1hNC&`Ypll6t+QR!fie8OZgJjf!%)dozz0|=+0$#%2~CaOo5n1!7Ae42Op^CGzH1s>a#TK%AFuIN z**h!Ic=8v17~#mP38LFXD>UZ3_jkjhGh*f$e6nE(KhPK{7;;AodV?!%Yl=-S15IG!*y~-vu1`LE8kuRVBRnj>0f_UaD7$~96 z?t{3oGpy%1b$aw;8A+$*RQz{&-~XV+BFKBA)nx5PvWiD#pRZHjuUJolXfjk|S8pVi zGv}CDwM3B5G0ssTT;9C6Sv^D_=4);@lhG%OgyCq8NK423UDvZ@aea`qpps?soB2Uq&8hON8u5t2IrH84#StYl zmAfyuOw=-ar3MXRHlKV*3-I1{g)8Ia%xX#K;7s zT$#$4st}D!vHh0~N+Di)_0JaXT;Pp50`;jB3y;%NB<9MK#CAst?VcqzQLGr6nRzrZ zaUE$x07h1LotU`kDU@m02=o#@NsKh+K$*XQD1-prjVzfo-_PWrm>QKO6Yc4N=0d!M zNH9p@OJT22G)`dW2U9;_x!Z@V)JO&a^=ju)3BOrTJbI#Q9VplTQ!!g$_~D1s5+V^7i0-bUH-mBwN`Qb_LXBO zl_q!dZm@=isigh0MBXGmK zHlxvCH1m7>jsx&!wM<(0@u4`FVortoir8%*f|-n1?%5HmN(DApJ7XbE(8=d0Ax zspILJWaFF0vtb9mmo&Y|FSw5rjcC6r)Geq!qA2M_>KrNwV!|T(r*ts50)MWu4M!uM z=P7t8?+2MBOT?Cmm?Zj4yXt}(djzXV*~=YH_d9e-{ZnMZtA!fR%b&9rp^FHkG{CA{#W}jLcbq;m~;x7i3eXJz!&vqTh=Z90bG0uJEd~W>C?Ug!^ zJpXVnqmz1RF|v;Fh_6I^wf16_{I>By-^f6FxLRoR{8aMZ+0yB9s=v#_JZsE5#RS@X zt#fxF_S`{--NX!QVb;{Q=^qBUkvs7Q71kX2JZDj%N)ES=x#@0vi9vP+-oGa*OVeaK zI7?t*AAM?D2~)AUa0&nHvT`wOCdzyAlFIyqi4SEiP| zP1D10m4FF8=>7+{v%iKBt-qO{*fus^k~aD+6RVB52>Lb4zJ0RH)z_RZE^<-gx>8fk zu-oy9XU620U-u9B_KE678IPR9_=16)O#e_Jre@j`Csko zp<_i(&0~EdCwb0I_j1=iYc@d+j*M;w)?y2hPzIQrayO4wy`PuIX&s`-2jKu*nV1Is zzBg7Qe9*=1>4-DtlHwepd-@!Or=D4zsjrVwsX~UQM@%2}9Ve0yYOmi)X||cPvl!oh zF-5z2o!ttBzT7d>Ky^7Zb5~6B9i@!OpJUJT_GY{omRx$gZPh`4Pe(Z|UD9(t!~S}$ z(cN<9kdO!7Nsn&hWy9ekx){kuVD}C7jvHX&SUpSh-CYU5i9JfMvTAqr9?WSPNT`FwhN|~?VhZ7EdvY-RVB}XQ5 z4I~*pQJ$Tc{p@C<-wACkWz57Xdj8s^({#$YL&OZ0(Q0H)W7}T1;pLxGPw8^jQtt!l z_uV1wQsp0x`RF0VneLKPC$XYVy;y4VF1YkR|41&Ul38>{VgjqyM+FD(UPpXa>$(NP zPf)b*D%tmYcLA4;9*a-EAn`X4P=EcKNxKrXR^3Mf;9--XegPGhEyH3j*Xwximn_l^ zM7po}>t8T1@pXH!ZByAK9;Auvb~=wklLiIatNGlHCL;V()E}r;3VfCQ#qq&+2CJu= zwqwGktX1>n`KjZFR_@pS5yc@weaGz1jV07_TXD_gfjX0szqwp~)u7$oA4lSz8i^br zrEC`ZcV=)Tv!yEj{*Xif%nE%0lvnE{_WMo&-Kf@cb*L@iaq{>wD$qosb1(%78tXBT zx1RvgO?MdxCiSX9NroJeSP|E(?ISa|nQFAIM47uW@t|$-Y2Ay?X(JBSHYtH?JsX8M z=Hh5{uk{vnLffAAR{i>}L1csZZ@k|HC3+)XMqEmEa~p}exXX2NI*c_9D-eb@iIib|9>3q4;hZ>Ey>+#lWP zc(Iy`F5XI&Srd896X!V8oyy~j2pR{5n4eNfkS7xFKY_AUepUC# zoUT3fL-?&mV(i4$FpEt6LI2(tJDvC-8P{ubgc;JtL}#*TF+0!37YE+>t{7|E4n`Ac zg19Grt%mI#jTQTkjaeJ(qK(&?N1k;o zemQZp17vduL+}Tem>@{ihg1$=(kIuUsBGt%obcWnX_xJ`pT;J|$6Ye#&6i70>Am&_w0ZfdGm1)?Q>K%8@&`5eAR+qG7nCM6fo78?8|rtN_w8qSP#0#* zEeR*kaF~DxIw(`-svnI)RmiFA))3*wUT>l^4PTn7K%5_$knN4Fbm#;g7uq;cli<@S z-iBkS*M8NVBS(RrqBP?#i{^h|2!7GY3_0mI-{%NLQ5j)m$km9e_=0sE3kgVP9xnf( zcSdSCV=Oj<cnUh$$jk!{hCe$0rb={#@YMKO-I)&iqej3s+I#4RKJ)yq z9gtL$<4AER6N*xTfA-n9_A+kj^`-VrdH0=YH`WoT>5!)Y!~LBv7RcR}WhD!ziN6y- zcBmT^`YBeEm9dyo(g!?H;otOG`H^5n2mv&F$@du z=~v5{a0UrSI#3>6dPAjQ2{?*NLYLjW9q`jKhIXFeB!F-og1+*J^=sFz?bxg}9nFUu z0ia?4v8@|aan&Yk{|%G3Sb}*!K3=xL_0@$mnI_bt&UL%(L+<;0F41z(ZAvI1@ctwY z#!P66%S2}L1>QK)dqFbw7p2N&6Z|@OaBhcxwtu@uJ(Fp+_(30~|HIIdUO(V^P7Ki9 zA}x0zD^Lis1=gP!*^`?$Zz>8^-lA(q|7L*R(R&G=7)_-i_06yBz;AzL=dUb!Dy}>F zYRzU6{jxY!Vt9r*9v88NF9)AHjETvUIifaV+7xq!ey{Jhig4BsS;p9h+;yI$`&t2F~Q3uCnLKy z4b%Ic^F6umb4x|bNkskHFe-`oy3dvyyAG(>mxM(bArMX2cqgQ)t#?|o{BhsLQAxi5 z0(Ysdo@c|s)aQca*KcGH=sUzTwq5eLDrBnjb*tA(l#@Zc!(ag~AjEweM52>9@3t;M zgOwWHDI>)DA@#5(uZ8Qy@$z&1z!A4Tua#dR-xR8Uvg-S2{(DS&ALG}Wnb?b9H=|lW zi#r~Q$1_#CcD;$xq12_CMRC#C{OG?PK7#XwvnY9d8ZprNn|-#dq+Z~mHHv`RbCUHo z9t5Wo7q`cZ_2vbfJ;KVIYc4u~*a~mpUw~KeEb}#dBdGM(^=Eb(aLkn)qKsD9}2Mmn3PZoz>8yhQhp+UJ|F+>vL^?|0){BmwS>y6 z0gd_FIVFn}elKQ%Sz5JhJ<|l<`47vtrp^e$@iqNL_1wg{tafd&OAHJ>>)@J1Jzuc= z-Ym&`qG@{z7)v6CxCmL;4Gji30=%JU>N&TWlFK(NDDx#$CB&Prxq}JIBzOx5!mHHt zg%r&l1l65JwK{BuD8)FGPn~ydPiR=d-vrg1zE^?Yx6Ij|kb=(Cy)J}#v8m`f4}Vi2 zkZ|VL(dFs+B9sGa&679brxI^T3(@g03Z#6=vk}LSi3v2%T=X_u?7X;KWq%33y(Lk> zKC3$G4xNccSzf&x&Vvg4bd~GWHsj}i_-hSTob7mP4emVcRf3XhL`=wh9Kx6dEBp9M z*#=c1=aw#FV^mPXx;5OhxbZ-j23LXdXTvjcH7cJQoW_*s^LLhSEJZGil;FD#6oJGy zzwjO%ntc5DF}7asU<72@>PGoRn=*$<_aVutevC=5bB2Wr5uuGvRk3sWZJs0pcXGBk z%RlQ)1#&c2{|+e10EUja`4c9xX8p1%_nnMs$%~bvWgTiAszdTnuRSb$*!W?5YT9Wu zyt8#-v#0XBOb+LL!TJ}vd(~-{e`dp%^1N?D8>^;{lQ> zi12o2nL*s$*;ve`MThr#uBr#Rm}n&9wIy@I-fg5$#v4lp=SRnQ#;KB_;M_$tvd+jv zBXBJem~Zp_Fb~{pOzlpEa@>Vlqt)3|Gs>X)j?YHjWqRxgXL|r2S}fRyX{I!N}wwG3ewdP@szju2^4CdHGW=Bq?wzJ7zUJ zI<@v%!s&WHdc8Qxz@k#gkLc+B{YZ`1pSUkv(Upi9cBR(fT8wmwI-XoML`U>7&Y*w| z0Ty3xZ%@N_hep{O_vAn5AW`I{Jjh6 z`@szpaeXZanEdX4qA~X#x5ZGT$e6o@NE0zoyK5_{q@zwFvKdb45ch|z#`|6R zN4GmP&piUY@7r~EwL4dd{pF7W8o^(GmAbs7wzN$C_6D_zl*%xvcE<1%v2N0S8NYl3 zm?};U`ss|{{w0q+z&J=nwk-B2ooM9!lgP;d8gho}z6pEnT!N4l!jgL^bJNCHI4!2< z%+OM*gtfWjrUg~Rte=Q>fPm}c#d`nmtCgJ3CzAm7`AGB>d)s4H_p5mG?Rq#NrE7Rg z-V=_^CO+Cuix#OMwG#a)T7)7r-F&bQi3F{sv#T$TK`~7VBr(T;AENH<-3RF@0?a_r zLhlHF?cBTK-~Uj2jc%XtWxhjejtcnKbB&YOKqXL!Q6-+9AUT_q(;7vrT=#MP2Y^88xGS zqf;%kPd4^|04DIh=#H5-zhPD*Y z3PBry2$}TC*Xwb9Fr>`T5>MF3^FQh)XcY4Jclt$JvP4ja7zs% zFdi@9NF52V)nrhSOaUCH?Az8?+mn4Ha5c$fspvoZ`|_(@>~Q!zjXaOb_G>RAkEfZB zP#3wd^Y@lcEg~{MoF^(ifEr39qjOCNhJ%FR_W|0=GhN*_Ks8E~^^*V<$y;4i&OIWc zyKpm)`3^()Mk?cMp_ngFKapS{=t$-*@YaL89j?o8nbErBy3%=4QXn7p`zJFpbY^JV)b&Bd{V-Xq%;Vwb0I~|r?8and?ThWBd>zJw z3Qw!pEvwLj%eB^*v-{HnW)hv(B`@3hidx3Y(@u(@kX}Q8J)rrToKuNLED91LB1oo# zE&~o{fcmK|5Gu3AFj495e(m)QYj1D2fqZsW!Bhd?kue)*Hvy(;94PhyK)kDqaJLNP z&p@>y3Up#rR9WFfxT1spWc?HWus;)1GRTa)UbZO``xJ%EC*ZMHm>cmJ4}na_i)0&1 z$te1Z9aejqi~$r&T)W!bWTp4Vh?o6mH+@%{eqwwJyE)M;fB+Ag0a}5aYqM}CQ+Z#1 ztzIoC&|?lpBs@vpTJn^7&mE5!76t3E|a&rnKbulq9TG{+{_!fF) zWo1>o;Z*{6?&K+4$)d6kX#>zx`w5IuRM{t*O*Qn~Z*Z0BZ;k|e%wo-Hj;?%calf3* z(p&<9YL1vNHn23d*Gxczd!6hJj znwJh{5};7^0Ga?Gfz6(*7h@7ZThu=R9c_#q?@OzJ+zhg=yZD@XQZufx=Ir6BUM90*q9n z%g`9`4s3*B65}^=-x^K{snxlwo{{sCC@Bstwh#*~VtT@LKF7o~1Abr)Xvm3Odybl_ zH3esUYHl~A3Mh=O zpgG13h{9-_n)YJiBiN)@#>;sC)d>sHvsvf?w#M!1rgPF@z@y&nm)Y6|d>|2@ZA)n= z>M5ucgQYIUDB<{G8~sl+Ry_{Pc=7l+nUiNcjSjKHJlSG&6yF|Di2RQWpqlS%$38NE+7b_->U@!j&@!KR2I<|iK` zywFdE{u4&ZOalnbp9jL;oT{AY;O}%h^tq9b6<-b@)30gZ|HWyyC(Dr&zyL7bpPe;u zD#R>79XOB9&v`B&UGona1OFVfl5^SvWbOC07s-mlEpJ&-hp#ZB_3y$4PpWFJwIldb z*Tes0eF(>Oa8bJ%-b^tuRRBfay@f3uB*lbrJm&e!2QUF{}UQ zFNH(Q!Qht9_dxVLNRxD#o?MO0kOs%H8DVg8#9S&TU?2eh^(B4DDIjJ+{ehTJlJ;&d zku|6(fT{wG3b002R8%|12J_}d_NAI)bEbyKVp|)iiByLmW8lW1n45Lv}SGQA)#Uy>C zZB;$&X%=mt-&(kM6zb(v*=!BoBfV0t#ystlY>?W#e9 zr1tM7ipKny*m4_gKwF01(9Y&Bckrt-_4i3)|5q2Ji1`dGqhpL$d{?z9CQ6yHK2u~M z2OGLxd`bO_(Z#@AnOvZYJCnwEvxM2{bPES!t%V#mu)uf_3bbHyx6d(CeDq@MW^q{}Mw*MdQ1e9hJ>blj}bazbB#K#SB`k^^xDtKOW%%PygRp!O0ux zqLH08H<<<8`Tkuom>%HRc#7)9?CB&gHMf7k4$LDH3|`CGQ!=co=Q$(L{x1;+L+*I> z0TTh#CiwB3T9rBjytK~gYd-&bNI++a$?T(-Eh0R+1FM6TM&N2QMPeovxUNulQX_Ns z18ah839|n^0cJ&r&+VY&^8U)*9sa)`boFf;Rj#98s?83@gL5w1#PL#ygrGk%9_3>! zBFaejil#b8hUMxuF?BBzP*{pdu{D#E!h1G(s9*UrWw;?w9VYE^Ye>-7eR6X0+S3-_ zHK4Qv^^xvD=8QaUsw@$@D}Dds=21Y>{EyEtBvu8PCaVYf_~6ghy$4O(`^?ZwXu!S+ zv7goneWPhVSEzz_pO%1d5Ye{rC=slgttCk|8R#-i)wrjJ(Rp9L@UIhy*^k0XO9K6ud1 z<{$QbVN+oHwYa$={664z?)285BxCk+2ROxe!yf%>`&Qv z85XyhpLCjn#~C|dfdi$8NV)&XvTfQhbhX!sy{{v29NoG=K6M^aQml`lo82hce2icX z;h*KPI#)+sIEYRX)P&A@s7c+~<^PC0A5uw?2@7B)-XOV&6CV5%5eE));2HQFJ?NUt zk3P>Do&84U@Sur8U|yuB_pYz7&=hm{&}`M69@(7!Tf_E*f7AZ>TC-DLaW<}(U2n>E z#L2XFCSM|D4su(|csT{sa1fv7R+&QE#$#gc=J;xv?nx=8=QX zrVezA@iUt9$W+>3XaEA8Df)>#r84RQxg?AeT@qt>AAb3hkMRrvOh&(o> z>Te-rKy^vI%(mRG%CZMYWS$S}zxhb20b=sY7Z*lBr!)n5ib}kDk?{fat7vg7(Mi%o zMSJ%x(OK_Vt$gsn){Y__N-)c z*ed8)b^q4YFF*7Za~Psw3L3I}L8({G*Y(j1+cbSGF)8r_VqmJF3+Q-ILWP9O+0}vs z&#OZ16EfI4i?Mm$Y#LK>dYvfp!B3MBs=(l4^+&}|RG?CApb$1C$716(GAOzjyO*E5 zhPPg#r8khu{FE!2?q?;I)DV)mMM4w1wbh|Xq`b*zxHYRfib)eY?fsvo*4_!d!Kxw_ zT;)2yhf+%;Ez4ygL+TRFd6w0aE9E}Pv*)y71AEM~!7pr~L0`bcjsrhUgQ8=o_mgY3 zXl8+RGrlE+RZIG0+ffwWf&4;wKRlx3%maX4%VAC|-#yjNh59xQKV}<0R!naf3tesa zz$wHVNb_$NRDK6lpvqr$t_wB=y+2Cs98t^WnAQXw92iGz1zXhlQ3S(j_2XQz*`CgC zGV=P~AM8g~--tlu7jm$73USB!ed}cJq{mx_C%B06#!TgZRfk$ey+mCGE*_a%CcqkO zFe-WWh`%oG{~W zd@uI46y1gPeHLp(e^n=)2Hm*V$ZY5Y5lS9M&c(ZcD2EAnG0K1pA7h*tG}3ha!)b=9 z{?=Hx@i~7Mwz$BPsqS@{_^g!7`vI_<&A>RTgJQO&kp&9rkK%v0*WLy93|PUa9LI@ayYH+e#Z(=hcbxMZ z{SS3_a!V@P(eINDQwOpR<3e~2zqmGZF^{D9$WcLHLiaY)Jv2us#YcHALrs*dTAa~& z%kGJOz8yv6(d13uJD2>v!_wdL(v=LlFPaj5n4}M|qfqj<=vE~^S{63liw`W`A~n_5 z``_wT#|#c&(>SKh{nQ}djBUy~5YlFNws%9FVUw=mh6Z+ksJ5qS%`IF=m1MIr;m>`O zLDY}IK;ZHz^SFN?iisAtobQF`{gg+hTFJJEp*z;Cy>&@O@8CkNXg45|2bCv0(#bSV z@1Dp}$r@naH(vAsB3U?=kcNfJxbLc>+akb4c{fN6)J<^|=N`lDN}qJEMa=;{xCTGB~QGP44rrx`HW zhvTH$EbeHKEFk0MP8$&$u6^~iA)*{ks2`Bmq=XV7hR%@ZeH*k8Z{X>sysFH6gY!D0 z_P*$89ISyN5R&uG7OHh}0VUXNu@hz;yY(}W05*PV)g<}Omg+V$>E*(o5P6GhyjZdO7mT#I zHox;}6TDJjIgtW{1l?^L?>|mdQG1VPBXm25-yolqT)-$eCnB%+Tw>3ngx;yvnh;$) z7^E2^IC^7QSeM^&vJ_Voh4qE1V4Nny^Y!~-tEQe_N4o9el744AnR4X@LPzGetEl4S z@qyq|!jX)1+Q#oFf{V|KeltXLIzKB1h+?BjSLJ5?@X`$!XS+(y?8i{ zhp~mA@m!q@o6gF8n2yAMy`8;>Chut?J~d-@hU~b6D$WTi%AtSdBSyRgkO7gfPn?Mp zDe8BJU(L8Xv2d%Xac2 zkwI^k=@By_e794(W#7y?Y+tC%EVP~mJiL3yQ=nN{O7*<-F($+0q%JrK;bPZLNXg|O zZ`(BMcE-}ml}f4e>3XxQ&7_|}8F|9MlqTqnmdXF&ch{AqS*2j32Fl99dpu{2Vhhoi4YW>Y?@Wi?58$k-6!Vjz!VysL3-N z7f1kMEPfb;m4$eG&)XhV?3c_zRw<@jfq>F}5oOBS4IXH7y$*&*0eQ?hma zriHL^)%eJ}XG2Jr-0#jop`_g21e7|_tWfl&^4bP235UqH=4D_0hd4P{hJ;VC({f*MrolE9MxdON#r$pwNL5z73Fx?)nnU7|pyIeb3Q1l%VL`e-z#tiqUm z#oEpR+TMq8JOU{1(2eT+4@-C-+W7vX-c(>Di~qa^sqFx+{L{QLKbCPP^nlFqbm$u2 zlUERLk-MT(E4Q?&7@Mk4UxyXSVtYllsO~dctqO4en_(qQQZB# zf$Dd0gbEMG?O3OM7D%PN@|;B%@zHd)qwlW(Hv4B+A7@_s{4k0lD9R?Mfib9;@&24a z?x#Fp1s_GEtana+6w4N~uMoOghh>3FP;;8MuQ=wOI4*;iF?I2{B&JIPZ{WL`p)K<- z`7-@9F)c_H;R>iahJ^y0-uXkjbt#~KJJN=?GuQ~s0C7AmZAy}f`-fxCK|hW(XhImS zc=?QvSN-J`n?g(qb0Smij~_%^UF>n@!{MoQSEW1#UD2D|M~6j=y99`1lw1?G!pl-1 znbVwLnnrFqi`tU3REcGWR8g$BPC8XL1cD|_|Ke|3O`vDC#M6Ei@&~jHN`S5~Jcw#x z#IGAwHwqMZF&lR*&4i6YW}}Tu;|TF2N%^9(TOv$z%3&fgFrAE{I{Rde(v7`Y+R~5W z=}&=MhPdmbmim-3BWmaOK3RUMZvcbS5kiefMy&hN#NN@AJ-7+Pisk{FTG;5``a-D$ zve>qE=L!VM#As+8aBhL7f&-YyNwxEZYpi-*=M#UNW(Y+rC)DC$36)(!?}kdKnb#?f z%)54-sq^pMCRtH1Glf+_#H9yX=Qq8k$W#E=woM(%1!6$uxPsl>aVIB}kH+37=%|%- zWx7EI^u62HDTJ`qo?HDZM#g*weU|+c_Po3AG<@0$Hu`h*_P&AYB}2PQPTvO@^YwbQ z5)T*FP-b%(?8z+Qg0+flvHnB*$gJEK3bKI^NEM=&Caid2jVU#A3iLKTbar;GYYk>= zM(h9Y{!hU6=(||+#iwH+IB6sLbUB4LBT`*UMPS%IKJuBl;@v{D0bL?rs;9M`)iH6!7?{c{u8q&%T9ETxo?sCB*>(i&j~8yxrqLCB4oU5E zloy?x?7hQKTj{rWL<$WWN6vVmxv2Mtc{dzbMe|29Bd>XjlsEKlu!&Cg^(M6qn29>L zKu(j#B^=a}jNselGcDrHUHkP*qV0yyV*wv%B{by9~#QF>}$fyEIM!|+JHHZ)n% z1+wz%n?GPptdg__n+?$ewC4T$3P<&MTJ@N0$j+}1K`r&%GK=0F^8<%TV%g8TLtk?C zZrm3&p>3QloIPoeSqFRlDK^llYRHcY0rH1wFfZ})=Y5XMuHKpB_hK#tBlf+@U=7r( z>l~J;Fj*@ITyc#wsv_NCscKWKd@o~*#|_zQeoX?4FGMr=9zxr)5O&_)J28BsP+$kC zV&7%a5HE)Z7l*t;2*mh?C61F=$~N1{lN&NOZrw`Q4~T&EkxcTl9TgZP8>PXRS#r_N zobS>T$4L=+B^TPFev`e2xy^neqNlmAC2R|djgm8>lIC8(&6DNux}*yPasxq{%JYLA zM4zU*6Zq~e#p@V01qReT>S7zS!LTG1IR!A-8g{2FE-TR=o3N>d=SEzYQmA3ZB zwGX(P>+Eq`4tBpQKdUR65d8qEeZVkE7ohl?vxJ3ltRevc2!yr{U zv0L__5zr_7#|Xj*k)qO4;^Z^)!&~fAB_me_5S0KmAW(l$*H`%=*^cdt)u92TOUAeHEwPZF=C z;A{|(aH)(uyqo7pvhAITO12uOo2_(R97*R@-$1HFBUZ21(|z8=nWE}|(;wM!?Vuh- z*N4v1o~@8|M^SRN*46q&uze5p+HPw+x5hGdCvKS5 z$vEzmJ;V>^&F`06Is2C|F2p^&fsIqdYrKIPcG(b*V=w3zJo4Ah#O#X^fe9D&Zc9?%y0zH?#N;0mI$S57)rxfN4k zEao{MpE4DLetpirs@(DF-uah80zpkP8+%EL8maqolf4%M$nanfUiEr)FSOp=j#5mO z1^)+=3i z+HrUKNz3jW#QQCr_T3IQr6Dk7-E9k)3W$fyqnLt7Oc^2z{NEe5Z-t5#8avtFf= zC}tsmqf(>MN`MGs%-)xd={l?2d2ko+NuGGS0Bc zb*pQqpsQkaH{jton!B$JC}#8nvBJ@J^|tu7K`fYA{a)-gh_>2}{VQ%tr6i0R(JQ&w zmjUUy8O8aH=5f@ihdyaA(ywB|d8_m-&_6a=J3_###nYzg$FwM6wq2m zZ^JztM0ajy{rub(}m0kf1wnou_U?lBUgyMvz##2HKE}GI4@|b#f85PPJdh^ zyMY=!nC$<^6y^eHz zxYVD)vD=vC7+b+U=##%j+#M*Z`1nM;bE}pn3v5}KTK3u5*}EDuCZEb%&R10;Z3-}! z3@X#nVRGDmX`j{oe5B1J*aMSxcl4O_0fO0Dbx)j4)JDhouvzXH$V!tey8=2fFk4GB z%7&SlzDDY$e_~?AC-Fode4uT9Q63kvo}mhNy|b3NEyk$g_?5DlZ91ZBXJjK3W~MS; zxsmjd_BL{*C3v#s;My%i^5Vyt&hvYpt+1Y@7>VCle ztPY6@I;?B0GPZIW7XYaIdIWOdprG&;O<>TY)`Zu?FQ09Rr zUY@DdJ$;VZu=6jL%VWF0H5nUR_o8JulsG~vA&1n>k!?geEd#XBpx3h=Po)S9spQIC z2)$>Jg|Q|OY?rWeKp4pv#{2naGLG>0q1x!R2<(C6aaueFb{5uLbkLHrxw7Q_+7!#~ zrMkP`su`dv2m{&%RgUAae;h#hos{{zmNeIutx9Gy0NjTVG-ND6i%4b%8Q;(e79s zUl8X)#a>%9ZWiW5n`Us>>x}dF%{k9S`W>vmHPmIk;4|m|fd;z@JNJf~J*5xn-4lLh1QBsyn{82?=6_hXqJA?EV-gQt4 z?c562NSA6l>Hd@s+f*1&wY3nC%v-yhgzv5V$n)Gr#*d#>kUw;p%z5cOpa!g=oqIk1SshQU8yAnN)SXJl`L?wk*sNxMu`c}4z z5UfYpdFK~ex1v8p>%P^=3{0;qqp2LYH}Fb3XI_m3J*~O3myCtn79j5HtnPI$tn{9F zwOp}ey0iMV(%Xc-vv3mG1X73knLhK4WtJ0~Wj_;cTAe>-M}O6G0ZUQ-=QKvq|%Q z1BVNKkW)cdb=+AR{}~HBSHdyN!gEx;#}KhKP6Y1XIli?j0u3y_f=a)S?E+|7(T<81 z^s5i8)t7VVqtC~mCknDGHJdxY#@ZD+w^dLX)_rpEC`6c>_=hOanD7D=Xw+X%xg}Lq z)o-Ae9BX5yDgDixH||B-CK5OFh9$2m47}mj{n^Qc>3;LS+IKkmETjL2*I`q36?a*X z)YF_@;6mHAy*|RrYx>HcCu2#dm`4Zsr`%d#N>eZfRpXTbBG*#cUBOE7v`wv16Xum3|JnpHku3>qheX4#jukj=;DI z&;2(QAs#c=eL{gnAUB1D!YAwpwEg1#QhxUt$8h+seNLzhNFI6EkzFq{N*{sF}zyp$;N=w0c>k)>pF(#p=IT0z*```lyw-v zh|OsNFD}fvMjR;5=S`;N<{_@a($XM{Kl?*Y-dDXgmhV_^O}o{ak#8ME8T2^D-pGp( zHo(>i(K>=mnidQrGDar)meP1>v%Z#~3GQ6*H)35(8lNg9aB^eOJzoRHG$@T_$`=^< zL?9qr@nVqu*SAW7bj%n?sa=zcVf*bkJ|^5TVG!KiAMvwIL|j&AU0lZI8&7ntSy7L^ z5*8MntE%Ed-N*=Gd>4 zYVpII{RI)&T&B**u7-&pY*>R8s- zu6LxL&qyOko7uh0W;ZK3Jn7)pNTQShv26k_;;7EUi(Zo6GQ*!XZwI_5- z?9>~-t3usB`V9^aVtx+Hn6;Y%YhBz3EK`NK#tC`|-pj^)FGREAa_z zXc1QrdjbaWmu(oS4e&`)Zu5AP)h;~Z;t9a{;R8_m+8uf#G+1T}6Ccb*#D>B&+}+Hv zd=tFc1O+33@>IFky1qu*{hx=MljC(>e1HnW1w_YyBbE{Ow_NO#WpwaQyzOUilr41Dz$PYAy_$%L!0?8p3pIK~eZEYW*{qX~+5Pk3n)-lo_b(> z4iw-j9_@fqC>15y{A*i z#lwR!Ab;>qH;(jbw#7rXKbUe4oerE^B(I~e>ZziGKRXmy)pgc2YO1lsO@Ji_1HZ$C z-Xyy7F#%_z2TPWr+W=iF5O=y`I)z(Q?!k&~~kUT6Re8ZpC zsN;DK`lDVI;zU+{pcl zqlI>IQl~SUbjj~BTr9<&+c+IbKE=hvcDYkEP3R>5pwIRe?%ciSB?6y!e|=M+mvlDG zdhWe376Zs!Kz6KcKI}x?|HtE|I@#oN!`0d01Yxd^1;Y;&74d*U0}iG+h2NraYA!+y z$l`)4B?BkD%l3BRrNdT*`F&^gw8?%vnG}R`#1_7>(Nn$>I^vOQG_J4CYvL;7e~{E6 z@b4aMAmz2{YiOyd+xJ&5G%Nf7xfMtQ(9qK>t;H0bQQc#Gg2J1WCk)q-c z*@(Ity?;89laa12Kb9Q+>FtH8jC};hcUOV1uuI#wyyeZ~>}(`aQcq9M5>jS?Oqv4q z7(}W!K)}KyBF16KKuqpJ0-@VP3ooE?c62)omLJH_@Q{?1eMWV20fb6id_1!bB;p-7 za3EdFr_^y+aYT8(@gkbu9Xm%$2Bb5$f-~?tkK*Ii(zk9UU!>S)GrA_PPUP(V+|%*S zRB4>m(aTw+XW*za`N~y5-3A_VA`i?B7#J7;X!b!miXK;Rd~$LNVCqmv1}^Lzjh|iL0y+x1^>qOMMF)YSbtBvtFc&soI#N&w zTo=quu^R;&y<4*ha_zPQ-botL0c~I{Q3x9iiN#iaBeu3caxQ`(1sos`9+*EpfKLHX z5C)Qs9iWvrB*i@hk`|;3ZLTk(3XMu`0j01E0HMC$Wd>iWgVBXOfrXYq&jw)Q0v_{( za%I^jnGiKC?XKLU#bKkKan7f(`Q8e}G`h>Ad*hU#+cjMHUABb8s+x&2AAr!yA{Xe8 zwm`9^z0r8DAWiO^pDH@3M>IT{`ng-~%D8XM8!9)JbB zpPJeRkg0kIkEK9&(6JK88&-iNVxYTr148i}R1c}$97Q2v;M_E)amY8kVO0xc5lCaw z_=n?2tm9~}SnooxQ0hS+%V3w!KgBxc@Pk;2$DZLCEmu!FR~qr$)A@TwB3d_9#^ycN zBT|B9+`~)ypEIduKLeXDHJ7sLcEHZuq<>m!u7@qqmx99vrZ%BhhV?q5H@Z!hLh~ZB zblVdTx)4ph-%t{5{Gv1F(Q3O*bJMbXQvco@JmLAH=IMt=O5aa;)S`vI8663x0!)1o z(nlGpn*?h%2rrTv06~p~L~W|KR?d?ruq9qW(1pO6-|?ceqhkUp9sW>Ihyg*Of~@sC z)@3&-x3A??CF_8a1GtF{bPqU^lm!0t<=U-*ad$s7ROLkp;XblIl3-QO3gMGKuOH*p zR91d)^ylO`l$=R<{!Q*`kWoe+A)#i_-&IIY{ZQ_}54@ijZIuUhd9x;)Cj9F-!`5N= z$7IL`MQ;#KjB~563u5pTp~m&9C!8;&jkjvlPdanoSF%+<`err3;*oZX?-C)HH zb{*ihN0|CiM~?x(6E#q^LN1-9(Y%XZwY^{aLss@)q1?#CC*WYmWz72BwTsCjfELt^ z58puyTFv@r1#c}e1m_A8i!4P}z_Kt{SoDu!SqX8P{zVpgHsFC6a2DV73|E&$KjBQ) zd~?#N;a$Hno7$*5_Rg7ArXjRhNZ4)PzRAxc=AOAHTTi##HmaS+*2UdZUPOoZsEfWc3%(p~0J85h>#2d#FuQ(kjb+*78OOzGdqQ44?Kc(-k zTTs%s=S4c>h9j_iDQRA6J-zJKwOpuz>mvHP$t^b}Mf$%)#HwCcG}%mwzuSn3^(y}Q z=WWC@naP=aAs)2O8pDk^W&1lcOw<7ES6tP4lSG zOs19`4X*lF+Y+sD2|KS;c^<4JyXxzVLpdWws;TY_k@CdGZIP|&vEW-(vrhDiyQdTD z6(y?@DfTM}sdo9JGq>LQg{($&*Ae#1o!ce(ti!4{uSpg~dmKtCSb`S4JYr&9P|sTr z9<8Zbwbz{a^4y5U1i7!z5cc~<1V@d6&QkTj-7e{OUHWQ(m=y$c4ofjM^9sPRnPc^# zZXj5$ZazzIPx%0|jD6+1CYVzP2Lv(syv6PySROD>nP9}XjUU_}#r~DS|I$TOdI*tt zf0U+w9wVR9x5rH-SQW2YNA1x}020 z>hizm*n9u)>A?NU6#&4?^j~PjH(0#(c4_sih~n0pX^W_SBCN#pajZ!6v%OfOE+LB2 zFtuB^33_wYL58^^gZ(XosWSWCp1GF^=ztTF9!@t-c499l1TEN(LJ7OXpZ%9}(qn0{h}IsyKK)&CO?y_;JvHS z&o^1xN63BP=OvP6Q|J<^8uleZGoby@!R4HiYeDLl&C5;ROWhVf?5-Acv^+juAW^{r zTNC(mJ>pHknkO{JGP(Nt+SDkYb zG>LyNcxln|8yRUp(hT&&&zEPwNiMOhz4c(_`g{Al5}O3q(+SUpoM-&-K2t^$3)C`)>@uVe9ML>}?SHEHdm^U-yST zR_6i(!<~qsTt~heT*2K4uS>(P&Q^&t1ayg~DMKUbA4><)cV99ve~|?K*L^aXJRYjd ztzDV>CSW-(z0LMYfRt2B0LP3<(n2N}P3!kXX1mmQw0;KAzequu#DK6lX79sXA@KpC z+dk+DC;L|7(^Y70^0bh1GwXuO+^r3r67?H?%QIH+PEt3~;Zg%oI*p00whp1!jBppp z?0kTWltW9UD#7l!^;zGz3En*l*c#?#oc8kbNrV%N-%}{j*f8 zrPC9BPKN$Lg<#vpW;ho8)t#xW4jnUfo7=j(?VxlY$cx$K_1o~5Wis-^HtX;X{~ng~ zAx`l$T8uebNPHa}2O`jUd_F~~f`=u=Hc(m?A6sGuiYi7MyRn?yDt5L`QSE>v7A_ z=o>*uB;no0iZ?IYv8H4T23eGsL$l~%M+^uZQa2MNa#&JJD;_B9jK9AY=pP)riy;&M?p`}Co;uP$NGXt< zn|d6nP2q)@nyKH@twx zF7UMnjvL5e*?o|AUT_dMJKdC=LE5I1o;Bu*Uwck)rezpyFYT|!MSftCV-)!zEHCce zV6s*^5`KpfcSJF9u1j25zO-FyXwW%QX%>H4huyzMb_rGY;K74H@E$0!#l^*8FJHdA z)|7m~u0>-OV&GO_aZw1ex1~i7X_^V#AbSwci{yV;$lLvm(Y5p%hqi2Cf5{88!q$Nd z9n9aD&q^KlXIxJrcmKL&!Y-OAR$*~@qXpO5v zoPH!y0B}vz+REI%J$oJ%IHz!H;g`qgX@{Ztt#`u={rU&r^bb~1JBy8()2qYU7pSwM zD>&Q@1@sDIy@?;mM3eC=vm7(ltig7bBw~ptR8&Ry@!ei9aM_BA=0H@GPq~m_!LaEN z8P4cCCQFk-&C^75Y*3+ifzcD7xY*ZxJNpL(Ec2D5`M$D|Z_gPYVwQwxWHrkr6P!v$ z+eNxY?j3-*j^v(Z6F*iXbE*_qY5z4QS@vrB?=U%hL8I0i3c;Z+zqL zmy9HaCif!$y4M{U_1DK$7%@M{DDn?8{tdKlg?Eulp}${RCF%cnVB&sgQ6M(D^ZuO| zC7AP|s$Lo_NJJ%8zs*Rrye12@MUO|Z$%au0OEC}zr)KYwBh>}Yah#Zo-|2}Kn6}68 zP@%pg^B{KLd0{A=%7MbIr148uq>!ZXll1TT#DM-K+f;Z5rrr6_y!`z2uYDF3n@l4< z`UH2&H%1}%g*lTA3l9UyTc6$8!x+XqP;6CS0HXHLv_e!+@FY}QhDAocHmvO9+lnw6 zCik*|lU@Wq-&R+?ht36y9OKm+Wgl2 z$xOWgzzt7@ner-Ok5Yb${9tc~)lE_Rc zj=E@sOI*b_{r;y4cvEC5r@pN$id{B^1S|!qt4hlHLx%}|#rMI!wGu$E@r8*EG(yY=2ISdjF3u`7i` zj@c9ax>^u|y3kNS>$Y>QsblT*7ZPgp!(x{(r$763IqwV<`SSgGvcf2dbvcf2dbrtgtoolsvcfevalrtgtoolsrocplotMultiQCbcftools normbcftoolsfilterupdioreportsbcftools normautomap + id="path3447-6-6-4-7-5-2-7-9-4-7-3-0-2" + cx="366.07513" + cy="343.63565" + r="2.6458333" />reports diff --git a/docs/index.md b/docs/index.md index f6a20bf9..8d40fe5e 100644 --- a/docs/index.md +++ b/docs/index.md @@ -18,7 +18,7 @@ The pipeline is built using [Nextflow](https://www.nextflow.io), a workflow tool ## Quick Start -1. Install [`Nextflow`](https://www.nextflow.io/docs/latest/getstarted.html#installation) (`>=23.10.0`) +1. Install [`Nextflow`](https://www.nextflow.io/docs/latest/getstarted.html#installation) (`>=24.04.0`) 2. Install any of [`Docker`](https://docs.docker.com/engine/installation/), [`Singularity`](https://www.sylabs.io/guides/3.0/user-guide/) (you can follow [this tutorial](https://singularity-tutorial.github.io/01-installation/)), [`Podman`](https://podman.io/), [`Shifter`](https://nersc.gitlab.io/development/shifter/how-to-use/) or [`Charliecloud`](https://hpc.github.io/charliecloud/) for full pipeline reproducibility _(you can use [`Conda`](https://conda.io/miniconda.html) both to install Nextflow itself and also to manage software within pipelines. Please only use it within pipelines as a last resort; see [docs](https://nf-co.re/usage/configuration#basic-configuration-profiles))_. ```csv title="samplesheet.csv" @@ -34,6 +34,8 @@ Now, you can run the pipeline using: nextflow run nf-cmgg/germline --input samplesheet.csv --outdir --genome GRCh38 -profile ``` +This pipeline contains a lot of parameters to customize your pipeline run. Please take a look at the [parameters](parameters.md) documentation for an overview. + !!!warning Please provide pipeline parameters via the CLI or Nextflow `-params-file` option. Custom config files including those provided by the `-c` Nextflow option can be used to provide any configuration _**except for parameters**_; @@ -43,7 +45,7 @@ nextflow run nf-cmgg/germline --input samplesheet.csv --outdir --genome nf-cmgg/germline was originally written and is maintained by [@nvnieuwk](https://github.com/nvnieuwk). -Special thanks to [@matthdsm](https://github.com/matthdsm) for the many tips and feedback and to [@mvheetve](https://github.com/mvheetve) for testing the pipeline. +Special thanks to [@matthdsm](https://github.com/matthdsm) for the many tips and feedback and to [@mvheetve](https://github.com/mvheetve) and [@ToonRossel](https://github.com/ToonRosseel) for testing the pipeline. ## Contributions and Support diff --git a/docs/output.md b/docs/output.md index 34c10e15..62a3e900 100644 --- a/docs/output.md +++ b/docs/output.md @@ -1,12 +1,10 @@ # nf-cmgg/germline: Output -# nf-cmgg/germline: Output - ## Introduction This page describes the output produced by the pipeline. -The directories listed below will be created in the results directory after the pipeline has finished. All paths are relative to the top-level output directory (specified by `--outdir

`). This is an example output when the pipeline has been run for a WGS sample called `SAMPLE_1` and a WES sample called `SAMPLE_2` which form a family called `FAMILY_1`. The output consists of 4 directories: `yyyy-MM-dd_project_name`, `individuals`, `multiqc_reports` and `pipeline_info`. This run has only been run with `haplotypecaller` (`--callers haplotypecaller`) +The directories listed below will be created in the results directory after the pipeline has finished. All paths are relative to the top-level output directory (specified by `--outdir `). This is an example output when the pipeline has been run for a WGS sample called `SAMPLE_1` and a WES sample called `SAMPLE_2` which form a family called `FAMILY_1`. The output consists of 4 directories: `yyyy-MM-dd_project_name`, `individuals`, `multiqc_reports` and `pipeline_info`. This run has only been run with `haplotypecaller`: (`--callers haplotypecaller`) ```bash results/ @@ -46,7 +44,7 @@ results/ 2. This directory contains all files for family `FAMILY_1`. -3. This is the BED file used to parallelize the joint-genotyping. It contains all regions that have reads mapped to them for WGS and all regions in the regions of interest that have reads mapped to them for WES. +3. This is the BED file used to parallelize the joint-genotyping. It contains all regions where real variants have been found in all GVCFs in the family. The value of `--merge_distance` (default: `100000` base pairs) is used to pad the region so the BED file contains multiple bigger regions instead of tons of small regions. 4. The PED file detailing the relation between the different members of the family. This file will be inferred when no PED file has been given to this family. @@ -60,11 +58,11 @@ results/ 9. The report created with MultiQC. This contains all statistics generated with `bcftools stats`, Ensembl VEP and other tools. -10. The folder for `SAMPLE_1` containing temporary files that could be useful for re-analysing later. +10. The folder for `SAMPLE_1` containing temporary files that could be useful for re-analysis later. -11. This is the BED file used to parallelize the variant calling. It contains all regions that have reads mapped to them for WGS and all regions in the regions of interest that have reads mapped to them for WES. +11. This is the BED file used to parallelize the variant calling. It contains all regions that are callable in the input files based on the desired regions (WGS = the whole genome; WES = the regions specified in the `roi` BED file). -12. The GVCF file created with `haplotypecaller`. This can used in later runs of the pipeline to skip variant calling for this sample. A major use case for this is to add a new member to a family without having to call all variants of already called members. +12. The GVCF file created with `haplotypecaller`. This can be used in later runs of the pipeline to skip variant calling for this sample. A major use case for this is to add a new member to a family without having to call all variants of already called members. 13. The global distribution of the coverage calculated by `mosdepth`. diff --git a/docs/parameters.md b/docs/parameters.md index e2bd97e4..a966bf8d 100644 --- a/docs/parameters.md +++ b/docs/parameters.md @@ -10,9 +10,9 @@ Define where the pipeline should find input data and save output data. | ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------- | ------- | -------- | ------ | | `input` | Path to comma-separated file containing information about the samples in the experiment.
HelpYou will need to create a design file with information about the samples in your experiment before running the pipeline. Use this parameter to specify its location. It has to be a comma-separated file with samples, and a header row. See [usage docs](./usage.md).
| `string` | | True | | | `outdir` | The output directory where the results will be saved. You have to use absolute paths to storage on Cloud infrastructure. | `string` | | True | | -| `watchdir` | A folder to watch for the creation of files that start with `watch:` in the samplesheet | `string` | | | | +| `watchdir` | A folder to watch for the creation of files that start with `watch:` in the samplesheet. | `string` | | | | | `email` | Email address for completion summary.
HelpSet this parameter to your e-mail address to get a summary e-mail with details of the run sent to you when the workflow exits. If set in your user config file (`~/.nextflow/config`) then you don't need to specify this on the command line for every run.
| `string` | | | | -| `ped` | Path to a pedigree file for all samples in the run | `string` | | | | +| `ped` | Path to a pedigree file for all samples in the run. All relational data will be fetched from this file. | `string` | | | | ## Reference genome options @@ -20,15 +20,15 @@ Reference genome related files and options required for the workflow. | Parameter | Description | Type | Default | Required | Hidden | | ------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------- | ------------ | -------- | ------ | -| `genome` | Reference genome build
HelpRequires a Genome Reference Consortium reference ID (e.g. GRCh38)
| `string` | GRCh38 | | | +| `genome` | Reference genome build. Used to fetch the right reference files.
HelpRequires a Genome Reference Consortium reference ID (e.g. GRCh38)
| `string` | GRCh38 | | | | `fasta` | Path to FASTA genome file.
HelpThis parameter is _mandatory_ if `--genome` is not specified. The path to the reference genome fasta.
| `string` | | True | | | `fai` | Path to FASTA genome index file. | `string` | | | | -| `dict` | Path to the sequence dictionary generated from the FASTA reference | `string` | | | | -| `strtablefile` | Path to the STR table file generated from the FASTA reference | `string` | | | | -| `sdf` | Path to the SDF folder generated from the reference FASTA file | `string` | | | | -| `genomes_base` | Directory base for CMGG reference store (used when --genomes_ignore false is specified) | `string` | /references/ | | | +| `dict` | Path to the sequence dictionary generated from the FASTA reference. This is only used when `haplotypecaller` is one of the specified callers. | `string` | | | | +| `strtablefile` | Path to the STR table file generated from the FASTA reference. This is only used when `--dragstr` has been given. | `string` | | | | +| `sdf` | Path to the SDF folder generated from the reference FASTA file. This is only required when using `--validate`. | `string` | | | | +| `genomes_base` | Directory base for CMGG reference store (used when `--genomes_ignore false` is specified) | `string` | /references/ | | | | `cmgg_config_base` | The base directory for the local config files | `string` | /conf/ | | True | -| `genomes_ignore` | Do not load the local references from the path specified with --genomes_base | `boolean` | | | True | +| `genomes_ignore` | Do not load the local references from the path specified with `--genomes_base` | `boolean` | | | True | | `igenomes_base` | Directory / URL base for iGenomes references. | `string` | | | True | | `igenomes_ignore` | Do not load the iGenomes reference config.
HelpDo not load `igenomes.config` when running the pipeline. You may choose this option if you observe clashes between custom parameters and those supplied in `igenomes.config`.
| `boolean` | | | True | @@ -36,39 +36,40 @@ Reference genome related files and options required for the workflow. Parameters that define how the pipeline works -| Parameter | Description | Type | Default | Required | Hidden | -| -------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------- | ------------------------------------------------------------------ | -------- | ------ | -| `scatter_count` | The amount of scattering that should happen per sample.
HelpIncrease this number to increase the pipeline run speed, but at the tradeoff of using more IO and disk space. This can differ from the actual scatter count in some cases (especially with smaller files).
This has an effect on HaplotypeCaller, GenomicsDBImport and GenotypeGVCFs.
| `integer` | 40 | | | -| `merge_distance` | The merge distance for genotype BED files
HelpIncrease this parameter if GenomicsDBImport is running slow. This defines the maximum distance between intervals that should be merged. The less intervals GenomicsDBImport actually gets, the faster it will run.
| `integer` | 100000 | | | -| `dragstr` | Create DragSTR models to be used with HaplotypeCaller
HelpThis currently is only able to run single-core per sample. Due to this, the process is very slow with only very small improvements to the analysis.
| `boolean` | | | | -| `validate` | Validate the found variants
HelpThis only validates individual sample GVCFs that have truth VCF supplied to them via the samplesheet (in row `truth_vcf`, with an optional index in the `truth_tbi` row)
| `boolean` | | | | -| `filter` | Filter the found variants | `boolean` | | | | -| `annotate` | Annotate the found variants | `boolean` | | | | -| `add_ped` | Add PED INFO header lines to the final VCFs | `boolean` | | | | -| `gemini` | Create a Gemini databases from the final VCFs | `boolean` | | | | -| `mosdepth_slow` | Don't run mosdepth in fast-mode
HelpThis is advised if you need exact coverage BED files as output
| `boolean` | | | | -| `project` | The name of the project.
HelpThis will be used to specify the final output files folder in the output directory.
| `string` | | | | -| `skip_date_project` | Don't add the current date to the output project folder | `boolean` | | | | -| `roi` | Path to the default ROI (regions of interest) BED file to be used for WES analysis
HelpThis will be used for all samples that do not have a specific ROI file supplied to them through the samplesheet. Don't supply an ROI file to run the analysis as WGS.
| `string` | | | | -| `dbsnp` | Path to the dbSNP VCF file | `string` | | | | -| `dbsnp_tbi` | Path to the index of the dbSNP VCF file | `string` | | | | -| `somalier_sites` | Path to the VCF file with sites for Somalier to use | `string` | https://github.com/brentp/somalier/files/3412456/sites.hg38.vcf.gz | | | -| `only_call` | Only call the variants without doing any post-processing | `boolean` | | | | -| `only_merge` | Only run the pipeline until the creation of the genomicsdbs and output them | `boolean` | | | | -| `output_genomicsdb` | Output the genomicsDB together with the joint-genotyped VCF | `boolean` | | | | -| `callers` | A comma delimited string of the available callers. Current options are: 'haplotypecaller' and 'vardict' | `string` | haplotypecaller | | | -| `vardict_min_af` | The minimum allele frequency for VarDict when no `vardict_min_af` is supplied in the samplesheet | `number` | 0.1 | | | -| `normalize` | Normalize the VCFs | `boolean` | | | | -| `output_suffix` | A custom suffix to add to the basename of the output files | `string` | | | | -| `only_pass` | Filter out all variants that don't have the PASS filter for vardict. This only works when --filter is also given | `boolean` | | | | -| `keep_alt_contigs` | Keep all aditional contigs for calling instead of filtering them out before | `boolean` | | | | -| `updio` | Run UPDio analysis on the resulting VCFs | `boolean` | | | | -| `updio_common_cnvs` | A TSV file containing common CNVs to be used by UPDio | `string` | | | | -| `automap` | Run AutoMap analysis on the resulting VCFs | `boolean` | | | | -| `automap_repeats` | BED file with repeat regions in the genome.
HelpThis file will be automatically generated for hg38/GRCh38 and hg19/GRCh37 when this parameter has not been given.
| `string` | | | | -| `automap_panel` | TXT file with gene panel regions to be used by AutoMap.
HelpBy default the CMGG gene panel list will be used.
| `string` | | | | -| `automap_panel_name` | The panel name of the panel given with --automap_panel. | `string` | cmgg_bio | | | -| `hc_phasing` | Perform phasing with HaplotypeCaller | `boolean` | | | | +| Parameter | Description | Type | Default | Required | Hidden | +| ----------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------- | ------------------------------------------------------------------ | -------- | ------ | +| `scatter_count` | The amount of scattering that should happen per sample.
HelpIncrease this number to increase the pipeline run speed, but at the tradeoff of using more IO and disk space. This can differ from the actual scatter count in some cases (especially with smaller files).
This has an effect on HaplotypeCaller, GenomicsDBImport and GenotypeGVCFs.
| `integer` | 40 | | | +| `merge_distance` | The merge distance for family BED files
HelpIncrease this parameter if GenomicsDBImport is running slow. This defines the maximum distance between intervals that should be merged. The less intervals GenomicsDBImport actually gets, the faster it will run.
| `integer` | 100000 | | | +| `dragstr` | Create DragSTR models to be used with HaplotypeCaller
HelpThis currently is only able to run single-core per sample. Due to this, the process is very slow with only very small improvements to the analysis.
| `boolean` | | | | +| `validate` | Validate the found variants | `boolean` | | | | +| `filter` | Filter the found variants. | `boolean` | | | | +| `annotate` | Annotate the found variants using Ensembl VEP. | `boolean` | | | | +| `add_ped` | Add PED INFO header lines to the final VCFs. | `boolean` | | | | +| `gemini` | Create a Gemini databases from the final VCFs. | `boolean` | | | | +| `mosdepth_slow` | Don't run mosdepth in fast-mode
HelpThis is advised if you need exact coverage BED files as output.
| `boolean` | | | | +| `project` | The name of the project.
HelpThis will be used to specify the name of the final output files folder in the output directory.
| `string` | | | | +| `skip_date_project` | Don't add the current date to the output project folder. | `boolean` | | | | +| `roi` | Path to the default ROI (regions of interest) BED file to be used for WES analysis.
HelpThis will be used for all samples that do not have a specific ROI file supplied to them through the samplesheet. Don't supply an ROI file to run the analysis as WGS.
| `string` | | | | +| `dbsnp` | Path to the dbSNP VCF file. This will be used to set the variant IDs. | `string` | | | | +| `dbsnp_tbi` | Path to the index of the dbSNP VCF file. | `string` | | | | +| `somalier_sites` | Path to the VCF file with sites for Somalier to use. | `string` | https://github.com/brentp/somalier/files/3412456/sites.hg38.vcf.gz | | | +| `only_call` | Only call the variants without doing any post-processing. | `boolean` | | | | +| `only_merge` | Only run the pipeline until the creation of the genomicsdbs and output them. | `boolean` | | | | +| `output_genomicsdb` | Output the genomicsDB together with the joint-genotyped VCF. | `boolean` | | | | +| `callers` | A comma delimited string of the available callers. Current options are: `haplotypecaller` and `vardict`. | `string` | haplotypecaller | | | +| `vardict_min_af` | The minimum allele frequency for VarDict when no `vardict_min_af` is supplied in the samplesheet. | `number` | 0.1 | | | +| `normalize` | Normalize the variant in the final VCFs. | `boolean` | | | | +| `output_suffix` | A custom suffix to add to the basename of the output files. | `string` | | | | +| `only_pass` | Filter out all variants that don't have the PASS filter for vardict. This only works when `--filter` is also given. | `boolean` | | | | +| `keep_alt_contigs` | Keep all aditional contigs for calling instead of filtering them out before. | `boolean` | | | | +| `updio` | Run UPDio analysis on the final VCFs. | `boolean` | | | | +| `updio_common_cnvs` | A TSV file containing common CNVs to be used by UPDio. | `string` | | | | +| `automap` | Run AutoMap analysis on the final VCFs. | `boolean` | | | | +| `automap_repeats` | BED file with repeat regions in the genome.
HelpThis file will be automatically generated for hg38/GRCh38 and hg19/GRCh37 when this parameter has not been given.
| `string` | | | | +| `automap_panel` | TXT file with gene panel regions to be used by AutoMap.
HelpBy default the CMGG gene panel list will be used.
| `string` | | | | +| `automap_panel_name` | The panel name of the panel given with --automap_panel. | `string` | cmgg_bio | | | +| `hc_phasing` | Perform phasing with HaplotypeCaller. | `boolean` | | | | +| `min_callable_coverage` | The lowest callable coverage to determine callable regions. | `integer` | 5 | | | ## Institutional config options @@ -87,55 +88,55 @@ Parameters used to describe centralised config profiles. These should not be edi Less common options for the pipeline, typically set in a config file. -| Parameter | Description | Type | Default | Required | Hidden | -| ------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | --------- | -------------------------------------------------------- | -------- | ------ | -| `help` | Display help text. | `boolean` | | | | -| `version` | Display version and exit. | `boolean` | | | | -| `publish_dir_mode` | Method used to save pipeline results to output directory.
HelpThe Nextflow `publishDir` option specifies which intermediate files should be saved to the output directory. This option tells the pipeline what method should be used to move these files. See [Nextflow docs](https://www.nextflow.io/docs/latest/process.html#publishdir) for details.
| `string` | copy | | | -| `email_on_fail` | Email address for completion summary, only when pipeline fails.
HelpAn email address to send a summary email to when the pipeline is completed - ONLY sent if the pipeline does not exit successfully.
| `string` | | | True | -| `plaintext_email` | Send plain-text email instead of HTML. | `boolean` | | | True | -| `max_multiqc_email_size` | File size limit when attaching MultiQC reports to summary emails. | `string` | 25.MB | | True | -| `monochrome_logs` | Do not use coloured log outputs. | `boolean` | | | True | -| `hook_url` | Incoming hook URL for messaging service
HelpIncoming hook URL for messaging service. Currently, MS Teams and Slack are supported.
| `string` | | | | -| `multiqc_title` | MultiQC report title. Printed as page header, used for filename if not otherwise specified. | `string` | | | | -| `multiqc_config` | Custom config file to supply to MultiQC. | `string` | | | | -| `multiqc_logo` | Custom logo file to supply to MultiQC. File name must also be set in the MultiQC config file | `string` | | | | -| `multiqc_methods_description` | Custom MultiQC yaml file containing HTML including a methods description. | `string` | | | | -| `validate_params` | Boolean whether to validate parameters against the schema at runtime | `boolean` | True | | True | -| `pipelines_testdata_base_path` | Base URL or local path to location of pipeline test dataset files | `string` | https://raw.githubusercontent.com/nf-core/test-datasets/ | | True | +| Parameter | Description | Type | Default | Required | Hidden | +| ------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ----------------------- | -------------------------------------------------------- | -------- | ------ | +| `help` | Display help text. Give a parameter name to this option to see the detailed help of that parameter. | `['boolean', 'string']` | | | | +| `helpFull` | See the full help message of all parameters. | `boolean` | | | | +| `version` | Display version and exit. | `boolean` | | | | +| `publish_dir_mode` | Method used to save pipeline results to output directory.
HelpThe Nextflow `publishDir` option specifies which intermediate files should be saved to the output directory. This option tells the pipeline what method should be used to move these files. See [Nextflow docs](https://www.nextflow.io/docs/latest/process.html#publishdir) for details.
| `string` | copy | | | +| `email_on_fail` | Email address for completion summary, only when pipeline fails.
HelpAn email address to send a summary email to when the pipeline is completed - ONLY sent if the pipeline does not exit successfully.
| `string` | | | True | +| `plaintext_email` | Send plain-text email instead of HTML. | `boolean` | | | True | +| `max_multiqc_email_size` | File size limit when attaching MultiQC reports to summary emails. | `string` | 25.MB | | True | +| `hook_url` | Incoming hook URL for messaging service
HelpIncoming hook URL for messaging service. Currently, MS Teams and Slack are supported.
| `string` | | | | +| `multiqc_title` | MultiQC report title. Printed as page header, used for filename if not otherwise specified. | `string` | | | | +| `multiqc_config` | Custom config file to supply to MultiQC. | `string` | | | | +| `multiqc_logo` | Custom logo file to supply to MultiQC. File name must also be set in the MultiQC config file | `string` | | | | +| `multiqc_methods_description` | Custom MultiQC yaml file containing HTML including a methods description. | `string` | | | | +| `validate_params` | Boolean whether to validate parameters against the schema at runtime | `boolean` | True | | True | +| `pipelines_testdata_base_path` | Base URL or local path to location of pipeline test dataset files | `string` | https://raw.githubusercontent.com/nf-core/test-datasets/ | | True | ## Annotation parameters Parameters to configure Ensembl VEP and VCFanno -| Parameter | Description | Type | Default | Required | Hidden | -| -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | --------- | ------------ | -------- | ------ | -| `vep_chunk_size` | The amount of sites per split VCF as input to VEP | `integer` | 50000 | | | -| `species` | The species of the samples
HelpMust be lower case and have underscores as spaces
| `string` | homo_sapiens | | | -| `vep_merged` | Specify if the VEP cache is a merged cache | `boolean` | True | | | -| `vep_cache` | The path to the VEP cache | `string` | | | | -| `vep_dbnsfp` | Use the dbNSFP plugin with Ensembl VEP
HelpThe '--dbnsfp' and '--dbnsfp_tbi' parameters need to be specified when using this parameter.
| `boolean` | | | | -| `vep_spliceai` | Use the SpliceAI plugin with Ensembl VEP
HelpThe '--spliceai_indel', '--spliceai_indel_tbi', '--spliceai_snv' and '--spliceai_snv_tbi' parameters need to be specified when using this parameter.
| `boolean` | | | | -| `vep_spliceregion` | Use the SpliceRegion plugin with Ensembl VEP | `boolean` | | | | -| `vep_mastermind` | Use the Mastermind plugin with Ensembl VEP
HelpThe '--mastermind' and '--mastermind_tbi' parameters need to be specified when using this parameter.
| `boolean` | | | | -| `vep_maxentscan` | Use the MaxEntScan plugin with Ensembl VEP
HelpThe '--maxentscan' parameter need to be specified when using this parameter.
| `boolean` | | | | -| `vep_eog` | Use the custom EOG annotation with Ensembl VEP
HelpThe '--eog' and '--eog_tbi' parameters need to be specified when using this parameter.
| `boolean` | | | | -| `vep_alphamissense` | Use the AlphaMissense plugin with Ensembl VEP
HelpThe '--alphamissense' and '--alphamissense_tbi' parameters need to be specified when using this parameter.
| `boolean` | | | | -| `vep_version` | The version of the VEP tool to be used | `number` | 105.0 | | | -| `vep_cache_version` | The version of the VEP cache to be used | `integer` | 105 | | | -| `dbnsfp` | Path to the dbSNFP file | `string` | | | | -| `dbnsfp_tbi` | Path to the index of the dbSNFP file | `string` | | | | -| `spliceai_indel` | Path to the VCF containing indels for spliceAI | `string` | | | | -| `spliceai_indel_tbi` | Path to the index of the VCF containing indels for spliceAI | `string` | | | | -| `spliceai_snv` | Path to the VCF containing SNVs for spliceAI | `string` | | | | -| `spliceai_snv_tbi` | Path to the index of the VCF containing SNVs for spliceAI | `string` | | | | -| `mastermind` | Path to the VCF for Mastermind | `string` | | | | -| `mastermind_tbi` | Path to the index of the VCF for Mastermind | `string` | | | | -| `alphamissense` | Path to the TSV for AlphaMissense | `string` | | | | -| `alphamissense_tbi` | Path to the index of the TSV for AlphaMissense | `string` | | | | -| `eog` | Path to the VCF containing EOG annotations | `string` | | | | -| `eog_tbi` | Path to the index of the VCF containing EOG annotations | `string` | | | | -| `vcfanno` | Run annotations with vcfanno | `boolean` | | | | -| `vcfanno_config` | The path to the VCFanno config TOML | `string` | | | | -| `vcfanno_lua` | The path to a Lua script to be used in VCFanno | `string` | | | | -| `vcfanno_resources` | A semicolon-seperated list of resource files for VCFanno, please also supply their indices using this parameter | `string` | | | | +| Parameter | Description | Type | Default | Required | Hidden | +| -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------- | ------------ | -------- | ------ | +| `vep_chunk_size` | The amount of sites per split VCF as input to VEP. | `integer` | 50000 | | | +| `species` | The species of the samples.
HelpMust be lower case and have underscores as spaces.
| `string` | homo_sapiens | | | +| `vep_merged` | Specify if the VEP cache is a merged cache. | `boolean` | True | | | +| `vep_cache` | The path to the VEP cache. | `string` | | | | +| `vep_dbnsfp` | Use the dbNSFP plugin with Ensembl VEP.
HelpThe '--dbnsfp' and '--dbnsfp_tbi' parameters need to be specified when using this parameter.
| `boolean` | | | | +| `vep_spliceai` | Use the SpliceAI plugin with Ensembl VEP.
HelpThe '--spliceai_indel', '--spliceai_indel_tbi', '--spliceai_snv' and '--spliceai_snv_tbi' parameters need to be specified when using this parameter.
| `boolean` | | | | +| `vep_spliceregion` | Use the SpliceRegion plugin with Ensembl VEP. | `boolean` | | | | +| `vep_mastermind` | Use the Mastermind plugin with Ensembl VEP.
HelpThe '--mastermind' and '--mastermind_tbi' parameters need to be specified when using this parameter.
| `boolean` | | | | +| `vep_maxentscan` | Use the MaxEntScan plugin with Ensembl VEP.
HelpThe '--maxentscan' parameter need to be specified when using this parameter.
| `boolean` | | | | +| `vep_eog` | Use the custom EOG annotation with Ensembl VEP.
HelpThe '--eog' and '--eog_tbi' parameters need to be specified when using this parameter.
| `boolean` | | | | +| `vep_alphamissense` | Use the AlphaMissense plugin with Ensembl VEP.
HelpThe '--alphamissense' and '--alphamissense_tbi' parameters need to be specified when using this parameter.
| `boolean` | | | | +| `vep_version` | The version of the VEP tool to be used. | `number` | 105.0 | | | +| `vep_cache_version` | The version of the VEP cache to be used. | `integer` | 105 | | | +| `dbnsfp` | Path to the dbSNFP file. | `string` | | | | +| `dbnsfp_tbi` | Path to the index of the dbSNFP file. | `string` | | | | +| `spliceai_indel` | Path to the VCF containing indels for spliceAI. | `string` | | | | +| `spliceai_indel_tbi` | Path to the index of the VCF containing indels for spliceAI. | `string` | | | | +| `spliceai_snv` | Path to the VCF containing SNVs for spliceAI. | `string` | | | | +| `spliceai_snv_tbi` | Path to the index of the VCF containing SNVs for spliceAI. | `string` | | | | +| `mastermind` | Path to the VCF for Mastermind. | `string` | | | | +| `mastermind_tbi` | Path to the index of the VCF for Mastermind. | `string` | | | | +| `alphamissense` | Path to the TSV for AlphaMissense. | `string` | | | | +| `alphamissense_tbi` | Path to the index of the TSV for AlphaMissense. | `string` | | | | +| `eog` | Path to the VCF containing EOG annotations. | `string` | | | | +| `eog_tbi` | Path to the index of the VCF containing EOG annotations. | `string` | | | | +| `vcfanno` | Run annotations with vcfanno. | `boolean` | | | | +| `vcfanno_config` | The path to the VCFanno config TOML. | `string` | | | | +| `vcfanno_lua` | The path to a Lua script to be used in VCFanno. | `string` | | | | +| `vcfanno_resources` | A semicolon-seperated list of resource files for VCFanno, please also supply their indices using this parameter. | `string` | | | | diff --git a/docs/usage.md b/docs/usage.md index 4866cd53..c19dfd30 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -1,7 +1,5 @@ # nf-cmgg/germline: Usage -# nf-cmgg/germline: Usage - > _Documentation of pipeline parameters can be found in the [parameters documentation](./parameters.md)_ ## Samplesheet input @@ -21,7 +19,7 @@ sample,cram,crai SAMPLE_1,watch:INPUT.cram,watch:INPUT.cram.crai ``` -The files `INPUT.cram` and `INPUT.cram.crai` will now watched for recursively in the watch directory. +The files `INPUT.cram` and `INPUT.cram.crai` will now be watched for recursively in the watch directory. ### Example of the samplesheet @@ -100,12 +98,13 @@ The samplesheet can have following columns: | `ped` | OPTIONAL - Full path to PED file containing the relational information between samples in the same family. File has to have the extension `.ped`. | | `truth_vcf` | OPTIONAL - Full path to the VCF containing all the truth variants of the current sample. The validation subworkflow will be run when this file is supplied and the `--validate true` flag has been given. File has to have the extension `.vcf.gz` | | `truth_tbi` | OPTIONAL - Full path to the index of the truth VCF. This file can either be supplied by the user or generated by the pipeline. File has to have the extensions `.tbi` | +| `truth_bed` | OPTIONAL - Full path to the BED file containing the golden truth regions in the `truth_vcf` file. File has to have the extensions `.bed` | | `roi` | OPTIONAL - Full path to a BED file containing the regions of interest for the current sample to call on. When this file is given, the pipeline will run this sample in WES mode. (The flag `--roi ` can also be given to run WES mode for all samples using the file specified by the flag) File has to have the extension `.bed` or `.bed.gz`. | | `vardict_min_af` | OPTIONAL - The minimum AF value to use for the vardict variant caller (`--callers vardict`). This can be set in the samplesheet when it differs for all samples. A default can be set using the `--vardict_min_af` parameter (whichs defaults to 0.1) | !!!note - The `sample` identifiers have to be the same when you have re-sequenced the same sample more than once e.g. to increase sequencing depth. Either the `ped` or `family` field can be used to specify the family name. The pipeline automatically extracts the family id from the `ped` file if the `family` field is empty. The `family` is used to specify on which samples the joint-genotyping should be performed. If neither the `ped` or `family` fields are used, the pipeline will default to a single-sample family with the sample name as its ID. + The `sample` fields has to contain the same value when you have re-sequenced the same sample more than once e.g. to increase sequencing depth. Either the `ped` or `family` field can be used to specify the family name. The pipeline automatically extracts the family id from the `ped` file if the `family` field is empty. The `family` is used to specify on which samples the joint-genotyping should be performed. If neither the `ped` or `family` fields are used, the pipeline will default to a single-sample family with the sample name as its ID. This is an example of a working samplesheet used to test this pipeline: @@ -168,15 +167,13 @@ genome: 'GRCh38' When you run the above command, Nextflow automatically pulls the pipeline code from GitHub and stores it as a cached version. When running the pipeline after this, it will always use the cached version if available - even if the pipeline has been updated since. To make sure that you're running the latest version of the pipeline, make sure that you regularly update the cached version of the pipeline. You can also add the `-latest` argument to your run command to automatically fetch the latest version on every run: ```bash -nextflow pull nf-cmgg/germline -nextflow pull nf-cmgg/germline +nextflow pull nf-cmgg/germline -r ``` ### Reproducibility It is a good idea to specify a pipeline version when running the pipeline on your data. This ensures that a specific version of the pipeline code and software are used when you run your pipeline. If you keep using the same tag, you'll be running the same version of the pipeline, even if there have been changes to the code since. -First, go to the [nf-cmgg/germline releases page](https://github.com/nf-cmgg/germline/releases) and find the latest pipeline version - numeric only (eg. `1.3.1`). Then specify this when running the pipeline with `-r` (one hyphen) - eg. `-r 1.3.1`. Of course, you can switch to another version by changing the number after the `-r` flag. First, go to the [nf-cmgg/germline releases page](https://github.com/nf-cmgg/germline/releases) and find the latest pipeline version - numeric only (eg. `1.3.1`). Then specify this when running the pipeline with `-r` (one hyphen) - eg. `-r 1.3.1`. Of course, you can switch to another version by changing the number after the `-r` flag. This version number will be logged in reports when you run the pipeline, so that you'll know what you used when you look back in the future. For example, at the bottom of the MultiQC reports. @@ -239,21 +236,14 @@ You can also supply a run name to resume a specific run: `-resume [run-name]`. U ### `-c` -Specify the path to a specific config file (this is a core Nextflow command). See the [nf-core website documentation](https://nf-co.re/usage/configuration) for more information. +Specify the path to a specific config file. See the [nf-core website documentation](https://nf-co.re/usage/configuration) for more information. ## Custom configuration ### Resource requests -Whilst the default requirements set within the pipeline will hopefully work for most people and with most input data, you may find that you want to customise the compute resources that the pipeline requests. Each step in the pipeline has a default set of requirements for number of CPUs, memory and time. For most of the steps in the pipeline, if the job exits with any of the error codes specified [here](https://github.com/nf-core/rnaseq/blob/4c27ef5610c87db00c3c5a3eed10b1d161abf575/conf/base.config#L18) it will automatically be resubmitted with higher requests (2 x original, then 3 x original). If it still fails after the third attempt then the pipeline execution is stopped. - -To change the resource requests, please see the [max resources](https://nf-co.re/docs/usage/configuration#max-resources) and [tuning workflow resources](https://nf-co.re/docs/usage/configuration#tuning-workflow-resources) section of the nf-core website. - -### Custom Containers +Whilst the default requirements set within the pipeline will hopefully work for most people and with most input data, you may find that you want to customise the compute resources that the pipeline requests. Each step in the pipeline has a default set of requirements for number of CPUs, memory and time. For most of the steps in the pipeline, if the job exits with any of the error codes specified [here](https://github.com/nf-cmgg/germline/blob/b637c64c2e1eeb1527d481a377f60950c9a114b8/conf/base.config#L17) it will automatically be resubmitted with higher requests (2 x original, then 3 x original). If it still fails after the third attempt then the pipeline execution is stopped. -In some cases you may wish to change which container or conda environment a step of the pipeline uses for a particular tool. By default nf-core pipelines use containers and software from the [biocontainers](https://biocontainers.pro/) or [bioconda](https://bioconda.github.io/) projects. However in some cases the pipeline specified version maybe out of date. - -To use a different container from the default container or conda environment specified in a pipeline, please see the [updating tool versions](https://nf-co.re/docs/usage/configuration#updating-tool-versions) section of the nf-core website. To change the resource requests, please see the [max resources](https://nf-co.re/docs/usage/configuration#max-resources) and [tuning workflow resources](https://nf-co.re/docs/usage/configuration#tuning-workflow-resources) section of the nf-core website. ### Custom Containers @@ -268,12 +258,6 @@ A pipeline might not always support every possible argument or option of a parti To learn how to provide additional arguments to a particular tool of the pipeline, please see the [customising tool arguments](https://nf-co.re/docs/usage/configuration#customising-tool-arguments) section of the nf-core website. -### Custom Tool Arguments - -A pipeline might not always support every possible argument or option of a particular tool used in pipeline. Fortunately, nf-core pipelines provide some freedom to users to insert additional parameters that the pipeline does not include by default. - -To learn how to provide additional arguments to a particular tool of the pipeline, please see the [customising tool arguments](https://nf-co.re/docs/usage/configuration#customising-tool-arguments) section of the nf-core website. - ### nf-core/configs In most cases, you will only need to create a custom config as a one-off but if you and others within your organisation are likely to be running nf-core pipelines regularly and need to use the same settings regularly it may be a good idea to request that your custom config file is uploaded to the `nf-core/configs` git repository. Before you do this please can you test that the config file works with your pipeline of choice using the `-c` parameter. You can then create a pull request to the `nf-core/configs` repository with the addition of your config file, associated documentation file (see examples in [`nf-core/configs/docs`](https://github.com/nf-core/configs/tree/master/docs)), and amending [`nfcore_custom.config`](https://github.com/nf-core/configs/blob/master/nfcore_custom.config) to include your custom profile. @@ -282,14 +266,6 @@ See the main [Nextflow documentation](https://www.nextflow.io/docs/latest/config If you have any questions or issues please send us a message on [Slack](https://nf-co.re/join/slack) on the [`#configs` channel](https://nfcore.slack.com/channels/configs). -## Azure Resource Requests - -To be used with the `azurebatch` profile by specifying the `-profile azurebatch`. -We recommend providing a compute `params.vm_type` of `Standard_D16_v3` VMs by default but these options can be changed if required. - -Note that the choice of VM size depends on your quota and the overall workload during the analysis. -For a thorough list, please refer the [Azure Sizes for virtual machines in Azure](https://docs.microsoft.com/en-us/azure/virtual-machines/sizes). - ## Running in the background Nextflow handles job submissions and supervises the running jobs. The Nextflow process must run until the pipeline is finished. diff --git a/nextflow_schema.json b/nextflow_schema.json index 6619601f..bd870777 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -31,7 +31,7 @@ "watchdir": { "type": "string", "format": "directory-path", - "description": "A folder to watch for the creation of files that start with `watch:` in the samplesheet", + "description": "A folder to watch for the creation of files that start with `watch:` in the samplesheet.", "fa_icon": "fas fa-folder-open" }, "email": { @@ -46,7 +46,8 @@ "format": "file-path", "exists": true, "pattern": "^\\S+\\.ped$", - "description": "Path to a pedigree file for all samples in the run" + "description": "Path to a pedigree file for all samples in the run. All relational data will be fetched from this file.", + "help": "A PED file given in the samplesheet will be used above this PED file." } } }, @@ -59,7 +60,7 @@ "genome": { "type": "string", "default": "GRCh38", - "description": "Reference genome build", + "description": "Reference genome build. Used to fetch the right reference files.", "help_text": "Requires a Genome Reference Consortium reference ID (e.g. GRCh38)" }, "fasta": { @@ -83,27 +84,30 @@ "dict": { "type": "string", "pattern": "^\\S+\\.dict$", - "description": "Path to the sequence dictionary generated from the FASTA reference", + "description": "Path to the sequence dictionary generated from the FASTA reference. This is only used when `haplotypecaller` is one of the specified callers.", + "help": "The pipeline will autogenerate this file when missing.", "fa_icon": "far fa-file-code", "format": "file-path", "mimetype": "text/plain" }, "strtablefile": { "type": "string", - "description": "Path to the STR table file generated from the FASTA reference", + "description": "Path to the STR table file generated from the FASTA reference. This is only used when `--dragstr` has been given.", + "help": "The pipeline will autogenerate this file when missing.", "fa_icon": "fas fa-folder", "format": "path" }, "sdf": { "type": "string", - "description": "Path to the SDF folder generated from the reference FASTA file", + "description": "Path to the SDF folder generated from the reference FASTA file. This is only required when using `--validate`.", + "help": "The pipeline will autogenerate this file when missing.", "format": "path", "fa_icon": "fas fa-folder" }, "genomes_base": { "type": "string", "default": "/references/", - "description": "Directory base for CMGG reference store (used when --genomes_ignore false is specified)", + "description": "Directory base for CMGG reference store (used when `--genomes_ignore false` is specified)", "fa_icon": "fas fa-download", "format": "directory-path" }, @@ -117,7 +121,7 @@ "genomes_ignore": { "type": "boolean", "hidden": true, - "description": "Do not load the local references from the path specified with --genomes_base", + "description": "Do not load the local references from the path specified with `--genomes_base`", "fa_icon": "fas fa-ban" }, "igenomes_base": { @@ -153,8 +157,9 @@ "merge_distance": { "type": "integer", "default": 100000, - "description": "The merge distance for genotype BED files", - "help_text": "Increase this parameter if GenomicsDBImport is running slow. This defines the maximum distance between intervals that should be merged. The less intervals GenomicsDBImport actually gets, the faster it will run." + "description": "The merge distance for family BED files", + "help_text": "Increase this parameter if GenomicsDBImport is running slow. This defines the maximum distance between intervals that should be merged. The less intervals GenomicsDBImport actually gets, the faster it will run.", + "minimum": 1 }, "dragstr": { "type": "boolean", @@ -164,135 +169,138 @@ "validate": { "type": "boolean", "description": "Validate the found variants", - "help_text": "This only validates individual sample GVCFs that have truth VCF supplied to them via the samplesheet (in row `truth_vcf`, with an optional index in the `truth_tbi` row)" + "help": "A sample should have at least a `truth_vcf` supplied along with it in the samplesheet for it be validated." }, "filter": { "type": "boolean", - "description": "Filter the found variants" + "description": "Filter the found variants." }, "annotate": { "type": "boolean", - "description": "Annotate the found variants" + "description": "Annotate the found variants using Ensembl VEP." }, "add_ped": { "type": "boolean", - "description": "Add PED INFO header lines to the final VCFs" + "description": "Add PED INFO header lines to the final VCFs." }, "gemini": { "type": "boolean", - "description": "Create a Gemini databases from the final VCFs" + "description": "Create a Gemini databases from the final VCFs." }, "mosdepth_slow": { "type": "boolean", "description": "Don't run mosdepth in fast-mode", - "help_text": "This is advised if you need exact coverage BED files as output" + "help_text": "This is advised if you need exact coverage BED files as output." }, "project": { "type": "string", "description": "The name of the project.", - "help_text": "This will be used to specify the final output files folder in the output directory." + "help_text": "This will be used to specify the name of the final output files folder in the output directory." }, "skip_date_project": { "type": "boolean", - "description": "Don't add the current date to the output project folder" + "description": "Don't add the current date to the output project folder." }, "roi": { "type": "string", - "description": "Path to the default ROI (regions of interest) BED file to be used for WES analysis", + "description": "Path to the default ROI (regions of interest) BED file to be used for WES analysis.", "help_text": "This will be used for all samples that do not have a specific ROI file supplied to them through the samplesheet. Don't supply an ROI file to run the analysis as WGS.", "format": "file-path", "pattern": "^\\S+\\.bed(\\.gz)?$", - "mimetype": "text/plain" + "exists": true }, "dbsnp": { "type": "string", - "description": "Path to the dbSNP VCF file", + "description": "Path to the dbSNP VCF file. This will be used to set the variant IDs.", "fa_icon": "far fa-file-alt", "format": "file-path", "pattern": "^\\S+\\.vcf\\.gz$", - "mimetype": "text/plain" + "exists": true }, "dbsnp_tbi": { "type": "string", - "description": "Path to the index of the dbSNP VCF file", + "description": "Path to the index of the dbSNP VCF file.", "fa_icon": "far fa-file-alt", "format": "file-path", "pattern": "^\\S+\\.tbi$", - "mimetype": "text/plain" + "exists": true }, "somalier_sites": { "type": "string", "default": "https://github.com/brentp/somalier/files/3412456/sites.hg38.vcf.gz", "fa_icon": "far fa-file-alt", - "description": "Path to the VCF file with sites for Somalier to use", + "description": "Path to the VCF file with sites for Somalier to use.", "pattern": "^\\S+\\.vcf\\.gz", "format": "file-path", - "mimetype": "text/plain" + "exists": true }, "only_call": { "type": "boolean", - "description": "Only call the variants without doing any post-processing" + "description": "Only call the variants without doing any post-processing." }, "only_merge": { "type": "boolean", - "description": "Only run the pipeline until the creation of the genomicsdbs and output them" + "description": "Only run the pipeline until the creation of the genomicsdbs and output them." }, "output_genomicsdb": { "type": "boolean", - "description": "Output the genomicsDB together with the joint-genotyped VCF" + "description": "Output the genomicsDB together with the joint-genotyped VCF." }, "callers": { "type": "string", - "description": "A comma delimited string of the available callers. Current options are: 'haplotypecaller' and 'vardict'", + "description": "A comma delimited string of the available callers. Current options are: `haplotypecaller` and `vardict`.", "default": "haplotypecaller" }, "vardict_min_af": { "type": "number", - "description": "The minimum allele frequency for VarDict when no `vardict_min_af` is supplied in the samplesheet", - "default": 0.1 + "description": "The minimum allele frequency for VarDict when no `vardict_min_af` is supplied in the samplesheet.", + "default": 0.1, + "minimum": 0 }, "normalize": { "type": "boolean", - "description": "Normalize the VCFs" + "description": "Normalize the variant in the final VCFs." }, "output_suffix": { "type": "string", - "description": "A custom suffix to add to the basename of the output files" + "description": "A custom suffix to add to the basename of the output files." }, "only_pass": { "type": "boolean", - "description": "Filter out all variants that don't have the PASS filter for vardict. This only works when --filter is also given" + "description": "Filter out all variants that don't have the PASS filter for vardict. This only works when `--filter` is also given." }, "keep_alt_contigs": { "type": "boolean", - "description": "Keep all aditional contigs for calling instead of filtering them out before" + "description": "Keep all aditional contigs for calling instead of filtering them out before." }, "updio": { "type": "boolean", - "description": "Run UPDio analysis on the resulting VCFs" + "description": "Run UPDio analysis on the final VCFs." }, "updio_common_cnvs": { "type": "string", - "description": "A TSV file containing common CNVs to be used by UPDio", + "description": "A TSV file containing common CNVs to be used by UPDio.", "format": "file-path", "exists": true, "pattern": "^\\S+\\.tsv$" }, "automap": { "type": "boolean", - "description": "Run AutoMap analysis on the resulting VCFs" + "description": "Run AutoMap analysis on the final VCFs." }, "automap_repeats": { "type": "string", "description": "BED file with repeat regions in the genome.", "help_text": "This file will be automatically generated for hg38/GRCh38 and hg19/GRCh37 when this parameter has not been given.", - "pattern": "^\\S+\\.bed$" + "pattern": "^\\S+\\.bed$", + "exists": true }, "automap_panel": { "type": "string", "description": "TXT file with gene panel regions to be used by AutoMap.", "help_text": "By default the CMGG gene panel list will be used.", - "pattern": "^\\S+\\.txt$" + "pattern": "^\\S+\\.txt$", + "exists": true }, "automap_panel_name": { "type": "string", @@ -301,12 +309,13 @@ }, "hc_phasing": { "type": "boolean", - "description": "Perform phasing with HaplotypeCaller" + "description": "Perform phasing with HaplotypeCaller." }, "min_callable_coverage": { "type": "integer", - "description": "The lowest callable coverage to determine callable regions", - "default": 5 + "description": "The lowest callable coverage to determine callable regions.", + "default": 5, + "minimum": 0 } } }, @@ -366,8 +375,13 @@ "help_text": "These options are common to all nf-core pipelines and allow you to customise some of the core preferences for how the pipeline runs.\n\nTypically these options would be set in a Nextflow config file loaded for all pipeline runs, such as `~/.nextflow/config`.", "properties": { "help": { + "type": ["boolean", "string"], + "description": "Display help text. Give a parameter name to this option to see the detailed help of that parameter.", + "fa_icon": "fas fa-question-circle" + }, + "helpFull": { "type": "boolean", - "description": "Display help text.", + "description": "See the full help message of all parameters.", "fa_icon": "fas fa-question-circle" }, "version": { @@ -405,12 +419,6 @@ "fa_icon": "fas fa-file-upload", "hidden": true }, - "monochrome_logs": { - "type": "boolean", - "description": "Do not use coloured log outputs.", - "fa_icon": "fas fa-palette", - "hidden": true - }, "hook_url": { "type": "string", "description": "Incoming hook URL for messaging service", @@ -463,187 +471,188 @@ "vep_chunk_size": { "type": "integer", "default": 50000, - "description": "The amount of sites per split VCF as input to VEP" + "description": "The amount of sites per split VCF as input to VEP.", + "minimum": 1 }, "species": { "type": "string", "default": "homo_sapiens", - "description": "The species of the samples", + "description": "The species of the samples.", "fa_icon": "fas fa-user-circle", "pattern": "^[a-z_]*$", - "help_text": "Must be lower case and have underscores as spaces" + "help_text": "Must be lower case and have underscores as spaces." }, "vep_merged": { "type": "boolean", "default": true, - "description": "Specify if the VEP cache is a merged cache" + "description": "Specify if the VEP cache is a merged cache." }, "vep_cache": { "type": "string", - "description": "The path to the VEP cache", + "description": "The path to the VEP cache.", "format": "path" }, "vep_dbnsfp": { "type": "boolean", - "description": "Use the dbNSFP plugin with Ensembl VEP", + "description": "Use the dbNSFP plugin with Ensembl VEP.", "fa_icon": "fas fa-question-circle", "help_text": "The '--dbnsfp' and '--dbnsfp_tbi' parameters need to be specified when using this parameter." }, "vep_spliceai": { "type": "boolean", - "description": "Use the SpliceAI plugin with Ensembl VEP", + "description": "Use the SpliceAI plugin with Ensembl VEP.", "fa_icon": "fas fa-question-circle", "help_text": "The '--spliceai_indel', '--spliceai_indel_tbi', '--spliceai_snv' and '--spliceai_snv_tbi' parameters need to be specified when using this parameter." }, "vep_spliceregion": { "type": "boolean", - "description": "Use the SpliceRegion plugin with Ensembl VEP", + "description": "Use the SpliceRegion plugin with Ensembl VEP.", "fa_icon": "fas fa-question-circle" }, "vep_mastermind": { "type": "boolean", - "description": "Use the Mastermind plugin with Ensembl VEP", + "description": "Use the Mastermind plugin with Ensembl VEP.", "fa_icon": "fas fa-question-circle", "help_text": "The '--mastermind' and '--mastermind_tbi' parameters need to be specified when using this parameter." }, "vep_maxentscan": { "type": "boolean", - "description": "Use the MaxEntScan plugin with Ensembl VEP", + "description": "Use the MaxEntScan plugin with Ensembl VEP.", "fa_icon": "fas fa-question-circle", "help_text": "The '--maxentscan' parameter need to be specified when using this parameter." }, "vep_eog": { "type": "boolean", - "description": "Use the custom EOG annotation with Ensembl VEP", + "description": "Use the custom EOG annotation with Ensembl VEP.", "fa_icon": "fas fa-question-circle", "help_text": "The '--eog' and '--eog_tbi' parameters need to be specified when using this parameter." }, "vep_alphamissense": { "type": "boolean", - "description": "Use the AlphaMissense plugin with Ensembl VEP", + "description": "Use the AlphaMissense plugin with Ensembl VEP.", "fa_icon": "fas fa-question-circle", "help_text": "The '--alphamissense' and '--alphamissense_tbi' parameters need to be specified when using this parameter." }, "vep_version": { "type": "number", "default": 105.0, - "description": "The version of the VEP tool to be used", + "description": "The version of the VEP tool to be used.", "fa_icon": "fas fa-code-branch" }, "vep_cache_version": { "type": "integer", "default": 105, - "description": "The version of the VEP cache to be used", + "description": "The version of the VEP cache to be used.", "fa_icon": "fas fa-code-branch" }, "dbnsfp": { "type": "string", - "description": "Path to the dbSNFP file", + "description": "Path to the dbSNFP file.", "format": "file-path", "fa_icon": "far fa-file-alt", - "mimetype": "text/plain", - "pattern": "^\\S+\\.gz$" + "pattern": "^\\S+\\.gz$", + "exists": true }, "dbnsfp_tbi": { "type": "string", "format": "file-path", - "description": "Path to the index of the dbSNFP file", + "description": "Path to the index of the dbSNFP file.", "fa_icon": "far fa-file-alt", "pattern": "^\\S+\\.(csi|tbi)$", - "mimetype": "text/plain" + "exists": true }, "spliceai_indel": { "type": "string", "format": "file-path", - "description": "Path to the VCF containing indels for spliceAI", + "description": "Path to the VCF containing indels for spliceAI.", "fa_icon": "far fa-file-alt", "pattern": "^\\S+\\.vcf\\.gz$", - "mimetype": "text/plain" + "exists": true }, "spliceai_indel_tbi": { "type": "string", "format": "file-path", - "description": "Path to the index of the VCF containing indels for spliceAI", + "description": "Path to the index of the VCF containing indels for spliceAI.", "pattern": "^\\S+\\.(csi|tbi)$", - "mimetype": "text/plain" + "exists": true }, "spliceai_snv": { "type": "string", "format": "file-path", - "description": "Path to the VCF containing SNVs for spliceAI", + "description": "Path to the VCF containing SNVs for spliceAI.", "pattern": "^\\S+\\.vcf\\.gz$", - "mimetype": "text/plain" + "exists": true }, "spliceai_snv_tbi": { "type": "string", "format": "file-path", - "description": "Path to the index of the VCF containing SNVs for spliceAI", + "description": "Path to the index of the VCF containing SNVs for spliceAI.", "pattern": "^\\S+\\.(csi|tbi)$", - "mimetype": "text/plain" + "exists": true }, "mastermind": { "type": "string", "format": "file-path", - "description": "Path to the VCF for Mastermind", + "description": "Path to the VCF for Mastermind.", "pattern": "^\\S+\\.vcf\\.gz$", - "mimetype": "text/plain" + "exists": true }, "mastermind_tbi": { "type": "string", "format": "file-path", - "description": "Path to the index of the VCF for Mastermind", + "description": "Path to the index of the VCF for Mastermind.", "pattern": "^\\S+\\.(csi|tbi)$", - "mimetype": "text/plain" + "exists": true }, "alphamissense": { "type": "string", "format": "file-path", - "description": "Path to the TSV for AlphaMissense", + "description": "Path to the TSV for AlphaMissense.", "pattern": "^\\S+\\.tsv\\.gz$", - "mimetype": "text/plain" + "exists": true }, "alphamissense_tbi": { "type": "string", "format": "file-path", - "description": "Path to the index of the TSV for AlphaMissense", + "description": "Path to the index of the TSV for AlphaMissense.", "pattern": "^\\S+\\.(csi|tbi)$", - "mimetype": "text/plain" + "exists": true }, "eog": { "type": "string", "format": "file-path", - "description": "Path to the VCF containing EOG annotations", + "description": "Path to the VCF containing EOG annotations.", "pattern": "^\\S+\\.vcf\\.gz$", - "mimetype": "text/plain" + "exists": true }, "eog_tbi": { "type": "string", "format": "file-path", - "description": "Path to the index of the VCF containing EOG annotations", + "description": "Path to the index of the VCF containing EOG annotations.", "pattern": "^\\S+\\.(csi|tbi)$", - "mimetype": "text/plain" + "exists": true }, "vcfanno": { "type": "boolean", - "description": "Run annotations with vcfanno" + "description": "Run annotations with vcfanno." }, "vcfanno_config": { "type": "string", - "description": "The path to the VCFanno config TOML", + "description": "The path to the VCFanno config TOML.", "pattern": "^\\S+\\.toml$", "format": "file-path", - "mimetype": "text/plain" + "exists": true }, "vcfanno_lua": { "type": "string", - "description": "The path to a Lua script to be used in VCFanno", + "description": "The path to a Lua script to be used in VCFanno.", "pattern": "^\\S+\\.lua$", "format": "file-path", - "mimetype": "text/plain" + "exists": true }, "vcfanno_resources": { "type": "string", - "description": "A semicolon-seperated list of resource files for VCFanno, please also supply their indices using this parameter" + "description": "A semicolon-seperated list of resource files for VCFanno, please also supply their indices using this parameter." } }, "help_text": "Annotation will only run when `--annotate true` is specified." From b7c9cf252ec6eb44a942f15f98767501d3eb203b Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Thu, 10 Oct 2024 15:13:04 +0200 Subject: [PATCH 024/167] re-add monochrome_logs --- nextflow_schema.json | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/nextflow_schema.json b/nextflow_schema.json index bd870777..fec5575d 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -419,6 +419,12 @@ "fa_icon": "fas fa-file-upload", "hidden": true }, + "monochrome_logs": { + "type": "boolean", + "description": "Do not use coloured log outputs.", + "fa_icon": "fas fa-palette", + "hidden": true + }, "hook_url": { "type": "string", "description": "Incoming hook URL for messaging service", From a5057417be4593a424f607b9eec5bdd9e91ed44c Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Thu, 10 Oct 2024 16:24:30 +0200 Subject: [PATCH 025/167] add skip features to nf-core.yml --- .nf-core.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.nf-core.yml b/.nf-core.yml index 6d9fecad..9ae2f8e1 100644 --- a/.nf-core.yml +++ b/.nf-core.yml @@ -29,7 +29,7 @@ lint: multiqc_config: - "report_comment" actions_ci: false # TODO readd this once the linting doesn't act up -nf_core_version: 3.0.0 +nf_core_version: 3.0.1 repository_type: pipeline template: author: nvnieuwk @@ -37,3 +37,6 @@ template: from short DNA reads for WES and WGS data name: germline prefix: nf-cmgg + skip_features: + - fastqc + - is_nfcore From 07829621ae781cdc3d21a3197d59ae16e7953ab2 Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Thu, 10 Oct 2024 16:24:57 +0200 Subject: [PATCH 026/167] Template update for nf-core/tools version 3.0.1 --- .github/CONTRIBUTING.md | 12 +- .github/ISSUE_TEMPLATE/bug_report.yml | 32 +- .github/PULL_REQUEST_TEMPLATE.md | 2 +- .github/workflows/ci.yml | 17 +- .github/workflows/download_pipeline.yml | 53 ++- .github/workflows/linting.yml | 23 +- .github/workflows/linting_comment.yml | 2 +- .github/workflows/release-announcements.yml | 75 ----- .../workflows/template_version_comment.yml | 43 +++ .gitpod.yml | 7 +- .nf-core.yml | 31 +- .pre-commit-config.yaml | 2 +- CHANGELOG.md | 2 +- CITATIONS.md | 6 +- README.md | 10 +- assets/schema_input.json | 2 +- conf/base.config | 34 +- conf/igenomes_ignored.config | 9 + conf/modules.config | 5 +- conf/test.config | 13 +- docs/images/mqc_fastqc_adapter.png | Bin 23458 -> 0 bytes docs/images/mqc_fastqc_counts.png | Bin 33918 -> 0 bytes docs/images/mqc_fastqc_quality.png | Bin 55769 -> 0 bytes docs/output.md | 24 -- docs/usage.md | 12 +- main.nf | 10 +- modules.json | 15 +- modules/nf-core/fastqc/environment.yml | 7 - modules/nf-core/fastqc/main.nf | 61 ---- modules/nf-core/fastqc/meta.yml | 57 ---- modules/nf-core/fastqc/tests/main.nf.test | 212 ------------ .../nf-core/fastqc/tests/main.nf.test.snap | 88 ----- modules/nf-core/fastqc/tests/tags.yml | 2 - modules/nf-core/multiqc/environment.yml | 4 +- modules/nf-core/multiqc/main.nf | 14 +- modules/nf-core/multiqc/meta.yml | 78 +++-- modules/nf-core/multiqc/tests/main.nf.test | 8 + .../nf-core/multiqc/tests/main.nf.test.snap | 24 +- modules/nf-core/multiqc/tests/nextflow.config | 5 + nextflow.config | 126 +++----- nextflow_schema.json | 85 +---- .../utils_nfcore_germline_pipeline/main.nf | 72 +++-- .../nf-core/utils_nextflow_pipeline/main.nf | 64 ++-- .../tests/nextflow.config | 2 +- .../nf-core/utils_nfcore_pipeline/main.nf | 304 +++++++++--------- .../nf-core/utils_nfschema_plugin/main.nf | 46 +++ .../nf-core/utils_nfschema_plugin/meta.yml | 35 ++ .../utils_nfschema_plugin/tests/main.nf.test | 117 +++++++ .../tests/nextflow.config | 8 + .../tests/nextflow_schema.json | 8 +- .../nf-core/utils_nfvalidation_plugin/main.nf | 62 ---- .../utils_nfvalidation_plugin/meta.yml | 44 --- .../tests/main.nf.test | 200 ------------ .../utils_nfvalidation_plugin/tests/tags.yml | 2 - workflows/germline.nf | 31 +- 55 files changed, 816 insertions(+), 1391 deletions(-) delete mode 100644 .github/workflows/release-announcements.yml create mode 100644 .github/workflows/template_version_comment.yml create mode 100644 conf/igenomes_ignored.config delete mode 100755 docs/images/mqc_fastqc_adapter.png delete mode 100755 docs/images/mqc_fastqc_counts.png delete mode 100755 docs/images/mqc_fastqc_quality.png delete mode 100644 modules/nf-core/fastqc/environment.yml delete mode 100644 modules/nf-core/fastqc/main.nf delete mode 100644 modules/nf-core/fastqc/meta.yml delete mode 100644 modules/nf-core/fastqc/tests/main.nf.test delete mode 100644 modules/nf-core/fastqc/tests/main.nf.test.snap delete mode 100644 modules/nf-core/fastqc/tests/tags.yml create mode 100644 modules/nf-core/multiqc/tests/nextflow.config create mode 100644 subworkflows/nf-core/utils_nfschema_plugin/main.nf create mode 100644 subworkflows/nf-core/utils_nfschema_plugin/meta.yml create mode 100644 subworkflows/nf-core/utils_nfschema_plugin/tests/main.nf.test create mode 100644 subworkflows/nf-core/utils_nfschema_plugin/tests/nextflow.config rename subworkflows/nf-core/{utils_nfvalidation_plugin => utils_nfschema_plugin}/tests/nextflow_schema.json (95%) delete mode 100644 subworkflows/nf-core/utils_nfvalidation_plugin/main.nf delete mode 100644 subworkflows/nf-core/utils_nfvalidation_plugin/meta.yml delete mode 100644 subworkflows/nf-core/utils_nfvalidation_plugin/tests/main.nf.test delete mode 100644 subworkflows/nf-core/utils_nfvalidation_plugin/tests/tags.yml diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index fb0acc75..8f53c8ef 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -16,7 +16,7 @@ If you'd like to write some code for nf-cmgg/germline, the standard workflow is 1. Check that there isn't already an issue about your idea in the [nf-cmgg/germline issues](https://github.com/nf-cmgg/germline/issues) to avoid duplicating work. If there isn't one already, please create one so that others know you're working on this 2. [Fork](https://help.github.com/en/github/getting-started-with-github/fork-a-repo) the [nf-cmgg/germline repository](https://github.com/nf-cmgg/germline) to your GitHub account 3. Make the necessary changes / additions within your forked repository following [Pipeline conventions](#pipeline-contribution-conventions) -4. Use `nf-core schema build` and add any new parameters to the pipeline JSON schema (requires [nf-core tools](https://github.com/nf-core/tools) >= 1.10). +4. Use `nf-core pipelines schema build` and add any new parameters to the pipeline JSON schema (requires [nf-core tools](https://github.com/nf-core/tools) >= 1.10). 5. Submit a Pull Request against the `dev` branch and wait for the code to be reviewed and merged If you're not used to this workflow with git, you can start with some [docs from GitHub](https://help.github.com/en/github/collaborating-with-issues-and-pull-requests) or even their [excellent `git` resources](https://try.github.io/). @@ -37,7 +37,7 @@ There are typically two types of tests that run: ### Lint tests `nf-core` has a [set of guidelines](https://nf-co.re/developers/guidelines) which all pipelines must adhere to. -To enforce these and ensure that all pipelines stay in sync, we have developed a helper tool which runs checks on the pipeline code. This is in the [nf-core/tools repository](https://github.com/nf-core/tools) and once installed can be run locally with the `nf-core lint ` command. +To enforce these and ensure that all pipelines stay in sync, we have developed a helper tool which runs checks on the pipeline code. This is in the [nf-core/tools repository](https://github.com/nf-core/tools) and once installed can be run locally with the `nf-core pipelines lint ` command. If any failures or warnings are encountered, please follow the listed URL for more documentation. @@ -68,7 +68,7 @@ If you wish to contribute a new step, please use the following coding standards: 2. Write the process block (see below). 3. Define the output channel if needed (see below). 4. Add any new parameters to `nextflow.config` with a default (see below). -5. Add any new parameters to `nextflow_schema.json` with help text (via the `nf-core schema build` tool). +5. Add any new parameters to `nextflow_schema.json` with help text (via the `nf-core pipelines schema build` tool). 6. Add sanity checks and validation for all relevant parameters. 7. Perform local tests to validate that the new code works as expected. 8. If applicable, add a new test command in `.github/workflow/ci.yml`. @@ -79,11 +79,11 @@ If you wish to contribute a new step, please use the following coding standards: Parameters should be initialised / defined with default values in `nextflow.config` under the `params` scope. -Once there, use `nf-core schema build` to add to `nextflow_schema.json`. +Once there, use `nf-core pipelines schema build` to add to `nextflow_schema.json`. ### Default processes resource requirements -Sensible defaults for process resource requirements (CPUs / memory / time) for a process should be defined in `conf/base.config`. These should generally be specified generic with `withLabel:` selectors so they can be shared across multiple processes/steps of the pipeline. A nf-core standard set of labels that should be followed where possible can be seen in the [nf-core pipeline template](https://github.com/nf-core/tools/blob/master/nf_core/pipeline-template/conf/base.config), which has the default process as a single core-process, and then different levels of multi-core configurations for increasingly large memory requirements defined with standardised labels. +Sensible defaults for process resource requirements (CPUs / memory / time) for a process should be defined in `conf/base.config`. These should generally be specified generic with `withLabel:` selectors so they can be shared across multiple processes/steps of the pipeline. A nf-core standard set of labels that should be followed where possible can be seen in the [nf-core pipeline template](https://github.com/nf-core/tools/blob/main/nf_core/pipeline-template/conf/base.config), which has the default process as a single core-process, and then different levels of multi-core configurations for increasingly large memory requirements defined with standardised labels. The process resources can be passed on to the tool dynamically within the process with the `${task.cpus}` and `${task.memory}` variables in the `script:` block. @@ -96,7 +96,7 @@ Please use the following naming schemes, to make it easy to understand what is g ### Nextflow version bumping -If you are using a new feature from core Nextflow, you may bump the minimum required version of nextflow in the pipeline with: `nf-core bump-version --nextflow . [min-nf-version]` +If you are using a new feature from core Nextflow, you may bump the minimum required version of nextflow in the pipeline with: `nf-core pipelines bump-version --nextflow . [min-nf-version]` ### Images and figures diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml index 841367d3..7afb0702 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -9,46 +9,34 @@ body: description: A clear and concise description of what the bug is. validations: required: true + - type: textarea id: command_used attributes: label: Command used and terminal output - description: Steps to reproduce the behaviour. Please paste the command you used - to launch the pipeline and the output from your terminal. + description: Steps to reproduce the behaviour. Please paste the command you used to launch the pipeline and the output from your terminal. render: console - placeholder: "$ nextflow run ... - + placeholder: | + $ nextflow run ... Some output where something broke - " - type: textarea id: files attributes: label: Relevant files - description: "Please drag and drop the relevant files here. Create a `.zip` archive - if the extension is not allowed. - - Your verbose log file `.nextflow.log` is often useful _(this is a hidden file - in the directory where you launched the pipeline)_ as well as custom Nextflow - configuration files. + description: | + Please drag and drop the relevant files here. Create a `.zip` archive if the extension is not allowed. + Your verbose log file `.nextflow.log` is often useful _(this is a hidden file in the directory where you launched the pipeline)_ as well as custom Nextflow configuration files. - " - type: textarea id: system attributes: label: System information - description: "* Nextflow version _(eg. 23.04.0)_ - + description: | + * Nextflow version _(eg. 23.04.0)_ * Hardware _(eg. HPC, Desktop, Cloud)_ - * Executor _(eg. slurm, local, awsbatch)_ - - * Container engine: _(e.g. Docker, Singularity, Conda, Podman, Shifter, Charliecloud, - or Apptainer)_ - + * Container engine: _(e.g. Docker, Singularity, Conda, Podman, Shifter, Charliecloud, or Apptainer)_ * OS _(eg. CentOS Linux, macOS, Linux Mint)_ - * Version of nf-cmgg/germline _(eg. 1.1, 1.5, 1.8.2)_ - - " diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 245df89f..1d765b03 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -16,7 +16,7 @@ Learn more about contributing: [CONTRIBUTING.md](https://github.com/nf-cmgg/germ - [ ] This comment contains a description of changes (with reason). - [ ] If you've fixed a bug or added code that should be tested, add tests! - [ ] If you've added a new tool - have you followed the pipeline conventions in the [contribution docs](https://github.com/nf-cmgg/germline/tree/master/.github/CONTRIBUTING.md) -- [ ] Make sure your code lints (`nf-core lint`). +- [ ] Make sure your code lints (`nf-core pipelines lint`). - [ ] Ensure the test suite passes (`nextflow run . -profile test,docker --outdir `). - [ ] Check for unexpected warnings in debug mode (`nextflow run . -profile debug,test,docker --outdir `). - [ ] Usage Documentation in `docs/usage.md` is updated. diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index ebacae6d..12a8f29f 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -7,6 +7,7 @@ on: pull_request: release: types: [published] + workflow_dispatch: env: NXF_ANSI_LOG: false @@ -24,7 +25,7 @@ jobs: strategy: matrix: NXF_VER: - - "23.04.0" + - "24.04.2" - "latest-everything" steps: - name: Check out pipeline code @@ -38,9 +39,21 @@ jobs: - name: Disk space cleanup uses: jlumbroso/free-disk-space@54081f138730dfa15788a46383842cd2f914a1be # v1.3.1 - - name: Run pipeline with test data + - name: Run pipeline with test data (docker) # TODO nf-core: You can customise CI pipeline run tests as required # For example: adding multiple test runs with different parameters # Remember that you can parallelise this by using strategy.matrix run: | nextflow run ${GITHUB_WORKSPACE} -profile test,docker --outdir ./results + + - name: Run pipeline with test data (singularity) + # TODO nf-core: You can customise CI pipeline run tests as required + run: | + nextflow run ${GITHUB_WORKSPACE} -profile test,singularity --outdir ./results + if: "${{ github.base_ref == 'master' }}" + + - name: Run pipeline with test data (conda) + # TODO nf-core: You can customise CI pipeline run tests as required + run: | + nextflow run ${GITHUB_WORKSPACE} -profile test,conda --outdir ./results + if: "${{ github.base_ref == 'master' }}" diff --git a/.github/workflows/download_pipeline.yml b/.github/workflows/download_pipeline.yml index 2d20d644..713dc3e7 100644 --- a/.github/workflows/download_pipeline.yml +++ b/.github/workflows/download_pipeline.yml @@ -1,4 +1,4 @@ -name: Test successful pipeline download with 'nf-core download' +name: Test successful pipeline download with 'nf-core pipelines download' # Run the workflow when: # - dispatched manually @@ -8,7 +8,7 @@ on: workflow_dispatch: inputs: testbranch: - description: "The specific branch you wish to utilize for the test execution of nf-core download." + description: "The specific branch you wish to utilize for the test execution of nf-core pipelines download." required: true default: "dev" pull_request: @@ -39,9 +39,11 @@ jobs: with: python-version: "3.12" architecture: "x64" - - uses: eWaterCycle/setup-singularity@931d4e31109e875b13309ae1d07c70ca8fbc8537 # v7 + + - name: Setup Apptainer + uses: eWaterCycle/setup-apptainer@4bb22c52d4f63406c49e94c804632975787312b3 # v2.0.0 with: - singularity-version: 3.8.3 + apptainer-version: 1.3.4 - name: Install dependencies run: | @@ -54,33 +56,64 @@ jobs: echo "REPOTITLE_LOWERCASE=$(basename ${GITHUB_REPOSITORY,,})" >> ${GITHUB_ENV} echo "REPO_BRANCH=${{ github.event.inputs.testbranch || 'dev' }}" >> ${GITHUB_ENV} + - name: Make a cache directory for the container images + run: | + mkdir -p ./singularity_container_images + - name: Download the pipeline env: - NXF_SINGULARITY_CACHEDIR: ./ + NXF_SINGULARITY_CACHEDIR: ./singularity_container_images run: | - nf-core download ${{ env.REPO_LOWERCASE }} \ + nf-core pipelines download ${{ env.REPO_LOWERCASE }} \ --revision ${{ env.REPO_BRANCH }} \ --outdir ./${{ env.REPOTITLE_LOWERCASE }} \ --compress "none" \ --container-system 'singularity' \ - --container-library "quay.io" -l "docker.io" -l "ghcr.io" \ + --container-library "quay.io" -l "docker.io" -l "community.wave.seqera.io" \ --container-cache-utilisation 'amend' \ - --download-configuration + --download-configuration 'yes' - name: Inspect download run: tree ./${{ env.REPOTITLE_LOWERCASE }} + - name: Count the downloaded number of container images + id: count_initial + run: | + image_count=$(ls -1 ./singularity_container_images | wc -l | xargs) + echo "Initial container image count: $image_count" + echo "IMAGE_COUNT_INITIAL=$image_count" >> ${GITHUB_ENV} + - name: Run the downloaded pipeline (stub) id: stub_run_pipeline continue-on-error: true env: - NXF_SINGULARITY_CACHEDIR: ./ + NXF_SINGULARITY_CACHEDIR: ./singularity_container_images NXF_SINGULARITY_HOME_MOUNT: true run: nextflow run ./${{ env.REPOTITLE_LOWERCASE }}/$( sed 's/\W/_/g' <<< ${{ env.REPO_BRANCH }}) -stub -profile test,singularity --outdir ./results - name: Run the downloaded pipeline (stub run not supported) id: run_pipeline if: ${{ job.steps.stub_run_pipeline.status == failure() }} env: - NXF_SINGULARITY_CACHEDIR: ./ + NXF_SINGULARITY_CACHEDIR: ./singularity_container_images NXF_SINGULARITY_HOME_MOUNT: true run: nextflow run ./${{ env.REPOTITLE_LOWERCASE }}/$( sed 's/\W/_/g' <<< ${{ env.REPO_BRANCH }}) -profile test,singularity --outdir ./results + + - name: Count the downloaded number of container images + id: count_afterwards + run: | + image_count=$(ls -1 ./singularity_container_images | wc -l | xargs) + echo "Post-pipeline run container image count: $image_count" + echo "IMAGE_COUNT_AFTER=$image_count" >> ${GITHUB_ENV} + + - name: Compare container image counts + run: | + if [ "${{ env.IMAGE_COUNT_INITIAL }}" -ne "${{ env.IMAGE_COUNT_AFTER }}" ]; then + initial_count=${{ env.IMAGE_COUNT_INITIAL }} + final_count=${{ env.IMAGE_COUNT_AFTER }} + difference=$((final_count - initial_count)) + echo "$difference additional container images were \n downloaded at runtime . The pipeline has no support for offline runs!" + tree ./singularity_container_images + exit 1 + else + echo "The pipeline can be downloaded successfully!" + fi diff --git a/.github/workflows/linting.yml b/.github/workflows/linting.yml index 1fcafe88..a502573c 100644 --- a/.github/workflows/linting.yml +++ b/.github/workflows/linting.yml @@ -1,6 +1,6 @@ name: nf-core linting # This workflow is triggered on pushes and PRs to the repository. -# It runs the `nf-core lint` and markdown lint tests to ensure +# It runs the `nf-core pipelines lint` and markdown lint tests to ensure # that the code meets the nf-core guidelines. on: push: @@ -41,17 +41,32 @@ jobs: python-version: "3.12" architecture: "x64" + - name: read .nf-core.yml + uses: pietrobolcato/action-read-yaml@1.1.0 + id: read_yml + with: + config: ${{ github.workspace }}/.nf-core.yml + - name: Install dependencies run: | python -m pip install --upgrade pip - pip install nf-core + pip install nf-core==${{ steps.read_yml.outputs['nf_core_version'] }} + + - name: Run nf-core pipelines lint + if: ${{ github.base_ref != 'master' }} + env: + GITHUB_COMMENTS_URL: ${{ github.event.pull_request.comments_url }} + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + GITHUB_PR_COMMIT: ${{ github.event.pull_request.head.sha }} + run: nf-core -l lint_log.txt pipelines lint --dir ${GITHUB_WORKSPACE} --markdown lint_results.md - - name: Run nf-core lint + - name: Run nf-core pipelines lint --release + if: ${{ github.base_ref == 'master' }} env: GITHUB_COMMENTS_URL: ${{ github.event.pull_request.comments_url }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} GITHUB_PR_COMMIT: ${{ github.event.pull_request.head.sha }} - run: nf-core -l lint_log.txt lint --dir ${GITHUB_WORKSPACE} --markdown lint_results.md + run: nf-core -l lint_log.txt pipelines lint --release --dir ${GITHUB_WORKSPACE} --markdown lint_results.md - name: Save PR number if: ${{ always() }} diff --git a/.github/workflows/linting_comment.yml b/.github/workflows/linting_comment.yml index 40acc23f..42e519bf 100644 --- a/.github/workflows/linting_comment.yml +++ b/.github/workflows/linting_comment.yml @@ -11,7 +11,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Download lint results - uses: dawidd6/action-download-artifact@09f2f74827fd3a8607589e5ad7f9398816f540fe # v3 + uses: dawidd6/action-download-artifact@bf251b5aa9c2f7eeb574a96ee720e24f801b7c11 # v6 with: workflow: linting.yml workflow_conclusion: completed diff --git a/.github/workflows/release-announcements.yml b/.github/workflows/release-announcements.yml deleted file mode 100644 index 03ecfcf7..00000000 --- a/.github/workflows/release-announcements.yml +++ /dev/null @@ -1,75 +0,0 @@ -name: release-announcements -# Automatic release toot and tweet anouncements -on: - release: - types: [published] - workflow_dispatch: - -jobs: - toot: - runs-on: ubuntu-latest - steps: - - name: get topics and convert to hashtags - id: get_topics - run: | - echo "topics=$(curl -s https://nf-co.re/pipelines.json | jq -r '.remote_workflows[] | select(.full_name == "${{ github.repository }}") | .topics[]' | awk '{print "#"$0}' | tr '\n' ' ')" >> $GITHUB_OUTPUT - - - uses: rzr/fediverse-action@master - with: - access-token: ${{ secrets.MASTODON_ACCESS_TOKEN }} - host: "mstdn.science" # custom host if not "mastodon.social" (default) - # GitHub event payload - # https://docs.github.com/en/developers/webhooks-and-events/webhooks/webhook-events-and-payloads#release - message: | - Pipeline release! ${{ github.repository }} v${{ github.event.release.tag_name }} - ${{ github.event.release.name }}! - - Please see the changelog: ${{ github.event.release.html_url }} - - ${{ steps.get_topics.outputs.topics }} #nfcore #openscience #nextflow #bioinformatics - - send-tweet: - runs-on: ubuntu-latest - - steps: - - uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5 - with: - python-version: "3.10" - - name: Install dependencies - run: pip install tweepy==4.14.0 - - name: Send tweet - shell: python - run: | - import os - import tweepy - - client = tweepy.Client( - access_token=os.getenv("TWITTER_ACCESS_TOKEN"), - access_token_secret=os.getenv("TWITTER_ACCESS_TOKEN_SECRET"), - consumer_key=os.getenv("TWITTER_CONSUMER_KEY"), - consumer_secret=os.getenv("TWITTER_CONSUMER_SECRET"), - ) - tweet = os.getenv("TWEET") - client.create_tweet(text=tweet) - env: - TWEET: | - Pipeline release! ${{ github.repository }} v${{ github.event.release.tag_name }} - ${{ github.event.release.name }}! - - Please see the changelog: ${{ github.event.release.html_url }} - TWITTER_CONSUMER_KEY: ${{ secrets.TWITTER_CONSUMER_KEY }} - TWITTER_CONSUMER_SECRET: ${{ secrets.TWITTER_CONSUMER_SECRET }} - TWITTER_ACCESS_TOKEN: ${{ secrets.TWITTER_ACCESS_TOKEN }} - TWITTER_ACCESS_TOKEN_SECRET: ${{ secrets.TWITTER_ACCESS_TOKEN_SECRET }} - - bsky-post: - runs-on: ubuntu-latest - steps: - - uses: zentered/bluesky-post-action@80dbe0a7697de18c15ad22f4619919ceb5ccf597 # v0.1.0 - with: - post: | - Pipeline release! ${{ github.repository }} v${{ github.event.release.tag_name }} - ${{ github.event.release.name }}! - - Please see the changelog: ${{ github.event.release.html_url }} - env: - BSKY_IDENTIFIER: ${{ secrets.BSKY_IDENTIFIER }} - BSKY_PASSWORD: ${{ secrets.BSKY_PASSWORD }} - # diff --git a/.github/workflows/template_version_comment.yml b/.github/workflows/template_version_comment.yml new file mode 100644 index 00000000..9dea41f0 --- /dev/null +++ b/.github/workflows/template_version_comment.yml @@ -0,0 +1,43 @@ +name: nf-core template version comment +# This workflow is triggered on PRs to check if the pipeline template version matches the latest nf-core version. +# It posts a comment to the PR, even if it comes from a fork. + +on: pull_request_target + +jobs: + template_version: + runs-on: ubuntu-latest + steps: + - name: Check out pipeline code + uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4 + + - name: Read template version from .nf-core.yml + uses: pietrobolcato/action-read-yaml@1.0.0 + id: read_yml + with: + config: ${{ github.workspace }}/.nf-core.yml + + - name: Install nf-core + run: | + python -m pip install --upgrade pip + pip install nf-core==${{ steps.read_yml.outputs['nf_core_version'] }} + + - name: Check nf-core outdated + id: nf_core_outdated + run: pip list --outdated | grep nf-core + + - name: Post nf-core template version comment + uses: mshick/add-pr-comment@b8f338c590a895d50bcbfa6c5859251edc8952fc # v2 + if: | + ${{ steps.nf_core_outdated.outputs.stdout }} =~ 'nf-core' + with: + repo-token: ${{ secrets.NF_CORE_BOT_AUTH_TOKEN }} + allow-repeats: false + message: | + ## :warning: Newer version of the nf-core template is available. + + Your pipeline is using an old version of the nf-core template: ${{ steps.read_yml.outputs['nf_core_version'] }}. + Please update your pipeline to the latest version. + + For more documentation on how to update your pipeline, please see the [nf-core documentation](https://github.com/nf-core/tools?tab=readme-ov-file#sync-a-pipeline-with-the-template) and [Synchronisation documentation](https://nf-co.re/docs/contributing/sync). + # diff --git a/.gitpod.yml b/.gitpod.yml index 105a1821..46118637 100644 --- a/.gitpod.yml +++ b/.gitpod.yml @@ -4,17 +4,14 @@ tasks: command: | pre-commit install --install-hooks nextflow self-update - - name: unset JAVA_TOOL_OPTIONS - command: | - unset JAVA_TOOL_OPTIONS vscode: extensions: # based on nf-core.nf-core-extensionpack - - esbenp.prettier-vscode # Markdown/CommonMark linting and style checking for Visual Studio Code + #- esbenp.prettier-vscode # Markdown/CommonMark linting and style checking for Visual Studio Code - EditorConfig.EditorConfig # override user/workspace settings with settings found in .editorconfig files - Gruntfuggly.todo-tree # Display TODO and FIXME in a tree view in the activity bar - mechatroner.rainbow-csv # Highlight columns in csv files in different colors - # - nextflow.nextflow # Nextflow syntax highlighting + - nextflow.nextflow # Nextflow syntax highlighting - oderwat.indent-rainbow # Highlight indentation level - streetsidesoftware.code-spell-checker # Spelling checker for source code - charliermarsh.ruff # Code linter Ruff diff --git a/.nf-core.yml b/.nf-core.yml index f9c0a042..adca7b74 100644 --- a/.nf-core.yml +++ b/.nf-core.yml @@ -1,4 +1,6 @@ +bump_version: null lint: + actions_ci: false files_exist: - CODE_OF_CONDUCT.md - assets/nf-core-germline_logo_light.png @@ -7,22 +9,41 @@ lint: - .github/ISSUE_TEMPLATE/config.yml - .github/workflows/awstest.yml - .github/workflows/awsfulltest.yml + - docs/README.md files_unchanged: + - .github/CONTRIBUTING.md + - .github/PULL_REQUEST_TEMPLATE.md + - .github/workflows/branch.yml + - .github/workflows/linting_comment.yml + - .github/workflows/linting.yml - CODE_OF_CONDUCT.md - - assets/nf-core-germline_logo_light.png - - docs/images/nf-core-germline_logo_light.png - - docs/images/nf-core-germline_logo_dark.png - .github/ISSUE_TEMPLATE/bug_report.yml + - .prettierignore multiqc_config: - report_comment nextflow_config: + - custom_config - manifest.name - manifest.homePage -nf_core_version: 2.14.1 + - params.genomes + - validation.help.beforeText + - validation.help.afterText + - validation.summary.beforeText + - validation.summary.afterText +nf_core_version: 3.0.1 +org_path: null repository_type: pipeline template: author: nvnieuwk description: A nextflow pipeline for calling and annotating small germline variants from short DNA reads for WES and WGS data + force: false + is_nfcore: false name: germline - prefix: nf-cmgg + org: nf-cmgg + outdir: . + skip_features: + - fastqc + - is_nfcore + version: 1.9.0dev +update: null diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 4dc0f1dc..9e9f0e1c 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -7,7 +7,7 @@ repos: - prettier@3.2.5 - repo: https://github.com/editorconfig-checker/editorconfig-checker.python - rev: "2.7.3" + rev: "3.0.3" hooks: - id: editorconfig-checker alias: ec diff --git a/CHANGELOG.md b/CHANGELOG.md index df3bbf3d..7e4c06b5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,7 +3,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## v1.7.0dev - [date] +## v1.9.0dev - [date] Initial release of nf-cmgg/germline, created with the [nf-core](https://nf-co.re/) template. diff --git a/CITATIONS.md b/CITATIONS.md index ce4dd849..a0a85f3f 100644 --- a/CITATIONS.md +++ b/CITATIONS.md @@ -10,13 +10,9 @@ ## Pipeline tools -- [FastQC](https://www.bioinformatics.babraham.ac.uk/projects/fastqc/) - - > Andrews, S. (2010). FastQC: A Quality Control Tool for High Throughput Sequence Data [Online]. - - [MultiQC](https://pubmed.ncbi.nlm.nih.gov/27312411/) - > Ewels P, Magnusson M, Lundin S, Käller M. MultiQC: summarize analysis results for multiple tools and samples in a single report. Bioinformatics. 2016 Oct 1;32(19):3047-8. doi: 10.1093/bioinformatics/btw354. Epub 2016 Jun 16. PubMed PMID: 27312411; PubMed Central PMCID: PMC5039924. +> Ewels P, Magnusson M, Lundin S, Käller M. MultiQC: summarize analysis results for multiple tools and samples in a single report. Bioinformatics. 2016 Oct 1;32(19):3047-8. doi: 10.1093/bioinformatics/btw354. Epub 2016 Jun 16. PubMed PMID: 27312411; PubMed Central PMCID: PMC5039924. ## Software packaging/containerisation tools diff --git a/README.md b/README.md index 021e11fa..660fa2b1 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,10 @@ +# nf-cmgg/germline + [![GitHub Actions CI Status](https://github.com/nf-cmgg/germline/actions/workflows/ci.yml/badge.svg)](https://github.com/nf-cmgg/germline/actions/workflows/ci.yml) [![GitHub Actions Linting Status](https://github.com/nf-cmgg/germline/actions/workflows/linting.yml/badge.svg)](https://github.com/nf-cmgg/germline/actions/workflows/linting.yml)[![Cite with Zenodo](http://img.shields.io/badge/DOI-10.5281/zenodo.XXXXXXX-1073c8?labelColor=000000)](https://doi.org/10.5281/zenodo.XXXXXXX) [![nf-test](https://img.shields.io/badge/unit_tests-nf--test-337ab7.svg)](https://www.nf-test.com) -[![Nextflow](https://img.shields.io/badge/nextflow%20DSL2-%E2%89%A523.04.0-23aa62.svg)](https://www.nextflow.io/) +[![Nextflow](https://img.shields.io/badge/nextflow%20DSL2-%E2%89%A524.04.2-23aa62.svg)](https://www.nextflow.io/) [![run with conda](http://img.shields.io/badge/run%20with-conda-3EB049?labelColor=000000&logo=anaconda)](https://docs.conda.io/en/latest/) [![run with docker](https://img.shields.io/badge/run%20with-docker-0db7ed?labelColor=000000&logo=docker)](https://www.docker.com/) [![run with singularity](https://img.shields.io/badge/run%20with-singularity-1d355c.svg?labelColor=000000)](https://sylabs.io/docs/) @@ -22,7 +24,6 @@ workflows use the "tube map" design for that. See https://nf-co.re/docs/contributing/design_guidelines#examples for examples. --> -1. Read QC ([`FastQC`](https://www.bioinformatics.babraham.ac.uk/projects/fastqc/)) 2. Present QC for raw reads ([`MultiQC`](http://multiqc.info/)) ## Usage @@ -58,8 +59,7 @@ nextflow run nf-cmgg/germline \ ``` > [!WARNING] -> Please provide pipeline parameters via the CLI or Nextflow `-params-file` option. Custom config files including those provided by the `-c` Nextflow option can be used to provide any configuration _**except for parameters**_; -> see [docs](https://nf-co.re/usage/configuration#custom-configuration-files). +> Please provide pipeline parameters via the CLI or Nextflow `-params-file` option. Custom config files including those provided by the `-c` Nextflow option can be used to provide any configuration _**except for parameters**_; see [docs](https://nf-co.re/docs/usage/getting_started/configuration#custom-configuration-files). ## Credits @@ -82,7 +82,7 @@ If you would like to contribute to this pipeline, please see the [contributing g An extensive list of references for the tools used by the pipeline can be found in the [`CITATIONS.md`](CITATIONS.md) file. -This pipeline uses code and infrastructure developed and maintained by the [nf-core](https://nf-co.re) community, reused here under the [MIT license](https://github.com/nf-core/tools/blob/master/LICENSE). +This pipeline uses code and infrastructure developed and maintained by the [nf-core](https://nf-co.re) community, reused here under the [MIT license](https://github.com/nf-core/tools/blob/main/LICENSE). > **The nf-core framework for community-curated bioinformatics pipelines.** > diff --git a/assets/schema_input.json b/assets/schema_input.json index 0940508e..02ff582b 100644 --- a/assets/schema_input.json +++ b/assets/schema_input.json @@ -1,5 +1,5 @@ { - "$schema": "http://json-schema.org/draft-07/schema", + "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://raw.githubusercontent.com/nf-cmgg/germline/master/assets/schema_input.json", "title": "nf-cmgg/germline pipeline - params.input schema", "description": "Schema for the file provided with params.input", diff --git a/conf/base.config b/conf/base.config index 8f226415..31cad4ab 100644 --- a/conf/base.config +++ b/conf/base.config @@ -11,9 +11,9 @@ process { // TODO nf-core: Check the defaults for all processes - cpus = { check_max( 1 * task.attempt, 'cpus' ) } - memory = { check_max( 6.GB * task.attempt, 'memory' ) } - time = { check_max( 4.h * task.attempt, 'time' ) } + cpus = { 1 * task.attempt } + memory = { 6.GB * task.attempt } + time = { 4.h * task.attempt } errorStrategy = { task.exitStatus in ((130..145) + 104) ? 'retry' : 'finish' } maxRetries = 1 @@ -27,30 +27,30 @@ process { // TODO nf-core: Customise requirements for specific processes. // See https://www.nextflow.io/docs/latest/config.html#config-process-selectors withLabel:process_single { - cpus = { check_max( 1 , 'cpus' ) } - memory = { check_max( 6.GB * task.attempt, 'memory' ) } - time = { check_max( 4.h * task.attempt, 'time' ) } + cpus = { 1 } + memory = { 6.GB * task.attempt } + time = { 4.h * task.attempt } } withLabel:process_low { - cpus = { check_max( 2 * task.attempt, 'cpus' ) } - memory = { check_max( 12.GB * task.attempt, 'memory' ) } - time = { check_max( 4.h * task.attempt, 'time' ) } + cpus = { 2 * task.attempt } + memory = { 12.GB * task.attempt } + time = { 4.h * task.attempt } } withLabel:process_medium { - cpus = { check_max( 6 * task.attempt, 'cpus' ) } - memory = { check_max( 36.GB * task.attempt, 'memory' ) } - time = { check_max( 8.h * task.attempt, 'time' ) } + cpus = { 6 * task.attempt } + memory = { 36.GB * task.attempt } + time = { 8.h * task.attempt } } withLabel:process_high { - cpus = { check_max( 12 * task.attempt, 'cpus' ) } - memory = { check_max( 72.GB * task.attempt, 'memory' ) } - time = { check_max( 16.h * task.attempt, 'time' ) } + cpus = { 12 * task.attempt } + memory = { 72.GB * task.attempt } + time = { 16.h * task.attempt } } withLabel:process_long { - time = { check_max( 20.h * task.attempt, 'time' ) } + time = { 20.h * task.attempt } } withLabel:process_high_memory { - memory = { check_max( 200.GB * task.attempt, 'memory' ) } + memory = { 200.GB * task.attempt } } withLabel:error_ignore { errorStrategy = 'ignore' diff --git a/conf/igenomes_ignored.config b/conf/igenomes_ignored.config new file mode 100644 index 00000000..b4034d82 --- /dev/null +++ b/conf/igenomes_ignored.config @@ -0,0 +1,9 @@ +/* +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Nextflow config file for iGenomes paths +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Empty genomes dictionary to use when igenomes is ignored. +---------------------------------------------------------------------------------------- +*/ + +params.genomes = [:] diff --git a/conf/modules.config b/conf/modules.config index d203d2b6..255b1389 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -18,10 +18,7 @@ process { saveAs: { filename -> filename.equals('versions.yml') ? null : filename } ] - withName: FASTQC { - ext.args = '--quiet' - } - + withName: 'MULTIQC' { ext.args = { params.multiqc_title ? "--title \"$params.multiqc_title\"" : '' } publishDir = [ diff --git a/conf/test.config b/conf/test.config index 1180bf07..21afb77b 100644 --- a/conf/test.config +++ b/conf/test.config @@ -10,15 +10,18 @@ ---------------------------------------------------------------------------------------- */ +process { + resourceLimits = [ + cpus: 4, + memory: '15.GB', + time: '1.h' + ] +} + params { config_profile_name = 'Test profile' config_profile_description = 'Minimal test dataset to check pipeline function' - // Limit resources so that this can run on GitHub Actions - max_cpus = 2 - max_memory = '6.GB' - max_time = '6.h' - // Input data // TODO nf-core: Specify the paths to your test data on nf-core/test-datasets // TODO nf-core: Give any required params for the test so that command line flags are not needed diff --git a/docs/images/mqc_fastqc_adapter.png b/docs/images/mqc_fastqc_adapter.png deleted file mode 100755 index 361d0e47acfb424dea1f326590d1eb2f6dfa26b5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23458 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 diff --git a/docs/images/mqc_fastqc_quality.png b/docs/images/mqc_fastqc_quality.png deleted file mode 100755 index a4b89bf56ab2ba88cab87841916eb680a816deae..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 55769 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�)v~C(0C)c zgd3@mu<_@wnt>uVJydQ~oz|jKOy0;^`Z?+o2D0^+hp!@j_=nH5zG^AYBuV|wimv<8 zJ-BGiO^XI}T+0%OK+mPa+&L+!)PYa5H}wL${$XzJBCc;XV=Co{g^!)F^tz?jpNo4b zH_VuCMYaCaZVyd48bC?#x#Q0K4CK%<=X&Zv)V@IQ!g5ZVK?zTp+C(vj*rq zre0*ZTR%sn9`4BUqa`iQwuwP$!iTu9y z*^Aa8nvPt{NV`}cy5l$vTGknczicBgdPa#+$B~_lxB0^l39bW-wL`u?WXo>LbCrxs zHO}TPn@o1wSYvVPGZi62B3}9ADk9<9rEQFD-?ViCJHyk~ulRlQ*z07+ zmqT0+dAd*&o$#ah@3U!@BqPvJ}Ns=MjBuIqf9PCEedGznEA@4tG^@#xdHP z5}hhW*p9vTm8p^F2zoA2iJy%YoUT99TiNM^!6xPDkXY%@^R6F7n4GGx+4V!RemOu` z=Bso5M|O}5LA6BSOdLB#UmR7s1}UL!yoSsl_4aP{66T2X(LM*|9)bk2fjUQG@;XV5 za7g2iD)Klhxr?NUp}g%l7S(du@pSRzjsod24a*3J?<_x#8}8QdV|kf7grum zMHRS^M;MRa{Q64RKHpz0W`#~YUyQ#oG(l?D10Z|E)=~C)c9e1bRQzl_KE8L*d#S4H zGq*7)2eRPeh6YhjH3bvBj1tQl|SyY`C6lvas01T(9PNZJK6 zP3wxPDqmT-KbA4>ntJkBD=r{uh>P2dKe_5iem*i@&Qi7(JIJESfjBKGU&VlMgWXOZ z+grrgAg-ko&vt-qp3qk_{Jyj{S5C8tp_aWI-lcFeqdCorB>t+{;r}X*a{YZ_D7jsx@3ZLF5~Y0 zEmA^FHl-=O@oYTk=b{3)f#6wrVMR^aAFkWt`K!X;*hkOEJ}h?qih1@jUzl5Auc6L~ zxmKdYX`}A(wIiw@Nvhre3EN-J<9T?KI85Pa#lXhN0pxf~!g)YyRJC$%aOPVO z1|N}Vm(EBijEx+5zwlamO7S~iGl_`D(3_AYNv=Tp-B zLfLb!LWW&-P|dCrm$Sp?uU4-Z9Z(L)Y`Z^8vKv;BwSQutkP{9P7Ks==4@J%CYWj*9 zM}5&B_xX$_jmo8fH#TZaygRjP#vD;JIFLu_3CL=zp!gk|koyVmeEXBMat*taN>zb& zg&Kq-YKy~J*#7QCz^h^O!Y`}mn!;bvx)sw2>M`%V$C^-PmWPOs%LdR>R9a zjk<;fPnjUHaeQF}hq2MN56#UAxS3c@3Q9#gOvfR69IJ)f)#IIsnP!H1MzFJ+M~v3H zm2atRwZuz(u=p#QW$W$iOXDKnfSyYt`5~>Wm|Mz|({I|E$#NdL=fer>#3u1y5dSj4 zhbTlcNm<$ZXDm5+&{w;^Vnmq)aShdk!HJ)q1*3!J?c7eue z4Ayl-cd=DH3Kr87G6hlUw+4yt%YStriba0x#%6h8yWB{-wpg`bEXk>vAuT`8CMCZ= z-ET)=GS~U_weHAuj!N8$QxriRCC_$2*OZ)z1s7+y0Y=tKL9QtIwdQO;E))*V`;X)q z!yVh(pIlUb7qE?K#Tiudee6%#>#9!n7viM7$pyuCMEsl%le^k_Q@40@a~s%d)S`(E zEoa4Rt!`>1A*l{oFdqaZ%8$Gp!HH!0fyIoqj-0fBJZJCd=cuTUbI%~>YWI-?Xf_iU z;p(r4yd|!ntJP(HtQYRCvJmF3CM-fcN?4UOu~xNlO#K4l9UutOL;i*TcD40HZNfNZ z48=KpV`9#O&p~l1lqXnxeu_{R(_Fy18x?Do2vyIpfsMNi==h3*DeaW9KFeGKVIEUk zFA=1Sbsa>aOw&?cN(-LAsQGLQI*QKv_J(QxZW9@`w79A$t3iTm_8RU}= zPk1~jn1_ubHVP*Y=ty%DSKZCk_LL+S4BZt3ps?hcWV7U@v&+g|tce!uuT zoaf$auXWTi2^OKA6T^5VDK+&=LRZ zh}nwN4f|Wi2H;M29qxDsS1;ds?$L2%vs&=*`}(}x?fu@t5*h?7mkz7o7{o ziz|$({9mgQP|Q^QNr%LsNmqXDY%h(Z4D5=5G#s8mXc;bGXjqNhviHGjue>Uo%4SRF z*bqwj7Nod}m)P&L4UmIEG5T06`^F6ydHyGsz7w|bSdf}FmmV{OAIoAn zvSLZ+%SiQOM*3+%Bp+W1Lg$l}=r{Uk#**4isDECH=%jX5K&c!$Byp5BG?w8J;=YkIeXoqkj znKUFjOl-m^nECRn!;La!Lg$gJIgh_m;Fm}zxFr*;hzA!C9k~v(P>w8rpF(hXh1ovr zzA%Rm`6u4?vDUSNLT~;c9KJVF;WP;$)M+Y!vNGWDe8gda@!UuX;bF}B<-Nf*2T4sj z3>#r!`)cWpK08bL@-hHE@LQROyQGIdK{mv!k;3mAV~Y*& zSx9%5c6=H`R2c<5TZom~S)T3I8*R!KE9Z zGy!Hum?_Ifj#-ah^FhR$lt)QpLd z4Z=r(dZzP@l^;2su|VZMmnmOEH~2N&6&pO_5y1FY{2%~AEy}vnB0qX?;I+BeKcB&f z|5-n=5l=bT!BIq+;RyxX6beD)7x>UAtobc61SA?P_ozwGiB-Aj_c@!Lx0)r0&$Q*; z7-Q3p>Q8fJ@t8ETi=ab%YjAt}qA~>G@Vs;N-`I%rADs}msjm0>eWY*01Gn@It7Gr) zvfk|JHY~V9eI(H5^?}anqY4?%?)Xku8F<& z>_)a|3WD-J7>6{IyHJ7Ny`sr%kPEeFA5=8sz8I;*LW|uf$ijVCB$3K8y`x{FJORg-`CT zC}*oRScJZ^5!az4e_~k*L8Kie5o|%0U=n+}6MSoXJV^q{avZhx_N7Rh6~0qzf$Y&r zdu6)*)REIY#^T(0%7wuvlqQEMvE;#rG+58^o-`ukh`jLP##HQy1~6-E4c@rB3Pqh8 zDUnBX7mjDFaBO-{#bn&eWY$}&K#}-hW>rwhHS7<%)64c=7yoZj1-pKq1+iGlPBJuV zKWWI?fcdcbKl5WJrm2fffh~(~uvkVjp*vVr(~|$L=|8=URvWRpUf6Lsh5vzbQvm?> zx`zl(i*xr!4lxhdG3~Y`Q1gGiOqdro9<4s_DQ8>s)cb318F(RE9jSx=U_oa)!&<@6 zW>xI-V$Y4~$-l&cpIC)?eD<+JdcA$LeW$*9XCE(FnjzJSg_7=*jN^W1@WeUBcjDH4 zDPL7o!srDPfz9aXRG;qPXHjo@CM^=WfXt`E4qzoma*pJ40+uSL4biBj23qPqe)@#A-O+O882J9sS zx^ICqC-ENXg873a)hiL?Yz@}dc-2eO3P(wUqi2Mlig-`}Xn^2<>c-!c)nYA2ANpSM zuX$`hTok?gLtX^Ds38~f)saMV)hGjY49J#-6JXcd)fmPuT>MU&!;gXb^H(>&Zpei{ zD6$?;nhRf>Cl)J|l?%H+@7`H_THjT#q2NZFv}4$jI?{y^AFw)t(<3NOQOC{@uK$`a zoPZm>!1K=HBz(h-CC8)qCeFF)q=Y?4W0+Y>aYM_;Ck3GXj6bx#QiT@aGiN1BTVkl{ z$_soMv^o*z|IS*ibD=5ke1x4mH+90p^=6jL+vCqdmy>bpw>AThce8)=@3y`C^n)S` z2As*5mQq-ZofZMgl3aFv4EY~!kc=DVgPk4%_|XB9(t z&pkSvEgC-Fd2cJ<#I~D^+)wy<2|Dc}KteTsyumg~<4T`RTwO73uT1x6b7?Nz2m-zv zqyOe#?uynui^nat&s)saS#K051fD3HM8_dfRsv_4@!qD$rGwLBE5@Z2j9$ta(Iy%Q zyI?(ek&`*!o}zI)2_mMe+s^6{Ncvh8eAY-1@6{vYFcn>k8*Sfm zy$cr$g*55TbyE3$Y-}MsJmS0A>(>=$`3LA|Pq1!y36T*z%Y;3sBPxQ9<3LzLbMRC2 z^lI6cc)`I^f-xhbbhyc!6GZwVIRv`9)wSdf+(mLG-yGJyMG40l%UHu-3#%X;qlpQ4 zI#_zNF=lp0{;4(>6BbnpqPK82Py0fT!H1JSM(`6+d>88_BgyPd;`e|gGv!)&v8f|h zKFe}=GlJEsk%FxPR7!jXRBNR>!wcL`rav1Gca&M6@ZFqE% z`4Mh^%VfTB>88(OnS}XjA%!~1TgzdO3p7|7|926;mpc4??7wq26+B<|^nJ2fDzywu zFo?l1EdtXHOpk5ff@z1DS-<$rG(ZFiXuFs|}Y34Kpxiz9w9v)SYh`Qlsa!LK_OFPk$W_-wQcU; zqnMAG5Q$Prs$WQkS8`znPLX==kuQ7CiAW{Rl1k9zUL&)gL2Ky%RI6%ljx`3Lym78HOG_r#NWZ`h;UmT; z8Q;NB(OjT-ypxw`C{7rz=Ah6?Ilf*d)0!r@p+-^-rj8xi z_6SQ&${Rp@207;QK;#<376gviKcGm_O;|y6$pBqF&Tj(sX+L)PBhju%zN5&)Py{q84S1 z!u8GCK6^gp(|xu;h?PPKnUh7Lmhp+RzfjWm!UtOhw9(KveIW^uIn_ z_4XfElclN`*ZUd3r=6|g_*_mCYn{^noi)emliSaY^fz<49-|%;zdlvkVbJWlK+ewK zY*{HA(P$@!lXVkSTpg#-w&~WQVm=nA@QV~tjbwOd-7zb2C?(IOw{6?D(sBB$ncUFf zOE(5xIKJ9Pt&il#NG9BsH`1^QjnQt{9LJsje&!xuc&TL(@ zAuXdsJ#S?ulhXa4ohB~W21ju2HEmn9;Ale><}Dj~ZAt1pw2jd+HpPP}W)J-w1RDseHl7A;l`H-f zBR?QsBau>#e*U!E>9Dp@ArRa{F&#eiGa?C9X0D*u+HD^SnppyBly#h5H*jF%%7=!sw59c9vD zehhfcSO<-^K!2XtS}}-6ld)lbeq<@ttMA$#^BVn6O>T$3LxpcObE-NtEn)SH3DAgsjf%Hy@L@o z>)9|}Njhf6u=~m;LtCH0meC4`1j`X@*Usz5Oj(WAi)jVKP9?vMg6!#`W_aJeyzA9E z8Et=&jhAK;rplBlx~kENNni)V)@4o#6iK~r3DI>TTeDky--t|0k4HK@%pgO9xQ%UD zyh!gX7B7xtM3{)5K!6}U%CGpooZ#bwfJBA8TNJ|w2h=#+HMy)2qAkKu)x~cv^MTR5 zgRFZprT~ARVEa$0VJl_teYh6S_m})2e(B2S7D%gA2}!UY_BEL%&Tpl&tiC2nrB;xd z>BKo49MIQG#xbHH@XVM6HDxXHxI_x8HLWh^aO2<0Q|I4KOH9SCksvdzy{{R;Q_qkt zt6QqxbuiwIc%>4LsbH_z77CuZ(N3Eh{Hjl*tq**sjUxsbL00hB%O`K$_t@x|s{n4T zNd=a$$ae5z7;Rcbu!eQO`0qOBG$j8>tyuBKRunfzdwqI*M)DkXw4BTY9#k;h5lpSc zQ`n|Bngm4zP!!TzK$%?Z-G;AmCHO7HG zJ4a(MJnx8jrjb>P`5nQ+l}d5)GCk*Icu;gi*^oOINvafMb|ZIakvKmN9Bc9!zuX@| z8c!6fcJBtgI}cj%Z*hu}cIGcMT*eEDaRt3viG8Pz`YPlFCsx%E3 ze|0qp+oBM@_a-zIsY9^~(nq26QCP#uvzBLITT-Fz1pxTVGcnL9>X6Hfuvh0pCi`ERa%Md2+UxG~gfM-;9Wc)ekf>K{tXe9Mtf!(RFbeqz0o?=Tkh6Nvrj3gQ`mk*o^N zm!-*o=#C|``9cYa3e9*JN%R@qkelPrEPd#e)szjS?u45l-g~tSiv;RefFk~@$ll69Yelw0B?`5LzC;tmCJSyx_+HqT%Gc-2 zhqa7V;q8X$f6QtH%hylOT@X$Mzo#h71A{SUK$?cZ-d!_6boCTtWx6T|zRb+Ik5lZx zC5dG%G$-g=G*YM6F_`aAlH>GIDIqE;_y7oJh498JT}+&LXR4d;+c`H(r3h&!=?z9x z4Q9TKSxmY$n+qmpaZ(L5^RA7HmY@KNAqINP#5>dVozR%cDNn*ch4az#C??EvxggEz zsSOE4zWxw3&F#htFngbgdsT{RM~3V7uK!%; zSN!T%2CcRzG~5cBOfItKldRJy+p^9QA@i?}dZ znE+cDmfM=j?ciR(FH$XL?toJf-0P#?``x(7+V%+5_T&Q}4ryu>>On>|O2>w&hEpt* z5)Q%Yc&uncx(~56ht=CiOPu^_jEY%zk8Kpx8pu5Vbwy1^yuRo6Z{#hTke{V6p)&Tv=g`ZHv@IDp| z9-YRIOoK7?Vhu_H48|kcl8_9){<@Y7i_RF`qbV6-7s>n$_Pk7Q+O8Ny@3HclM47Ac z6zq|t>*>*jzQ1Q3l^j2@k0ZK+I`N0qp{^YV!oBYzZE5 zSvR>;F(^9oMiSA@_%a>wFdl#lN12STlFn`{Qmaf}rDn#9RS6j!Q3~}X zj=UMxLXAIWT*~kt-mDJCc)Cpz=ibFBQnyK#3pFG)Am4l|0PbQn#eT`Vij|AEU5G%h z$?8@IdZ=eNwR^{eh9<;Pjkqg_&CZ`Hvor z^fGvd$l6WXOdtBDp6J#m__((+#YK7r9MVZZf^jwc^VldYv>MnCwxEHmjCA-@!jTj?aPs5l^liizJ(^&FE1FpZ{Ym2#`r~ z3$WnCaEA?+aPxO%`B{1|`gSd*Ka{eb%NZ?ZKVE^@Xr40xBKY^cL=YK*9#^7FK>)h( zQSI76fgkV{B@bpHxC!faVCy9_0+fD8)Zyl>Oz5wZTeI&x21V>$btPM->8wm90k^yf zdoyGD<+a&Jz#pF3h!1alyPUX(tHDr~S87UyD+l>$24NU?oQO9D4|DnM<<{P-5v z0EfE~)@KAjemmaKTCM0`k3tG8krF!R2_~LbrBR2%teCVPh=veVmQB9mWCw` zRBgo9P5Zjdo9INN96~`85TLimeAWEwn27-7gW?#U5e%o(cE$*1-b}L?*H}@0i!8#D z>Uo|PP&r6F`v|C&?si$#j^150fj%x~5ONvfry{1>s%V^z?BIVI6%;awoqIAAE+1r% zr%okZN!tCI+p9joS~>M{6SzZ;3?!2Dhs9X!)6EG?W`;1=K2r-_=(Wi~M!Bb|OgmT_ z`2VC)SopD@PttM9_!%^JN0ir>nt%q^UFnwBe^6%XTT+3YDSb?Ycreb%B%%D&Nya3+ z2w8xJsD7FRj?pAvgW`tTb`Y4^yWJDg1&-?3wn>%6BsC2_CNkshL&e|3s0g6 zCp}stZhun&7%~}K)l7`s*HIU=ZT@Ig^~ciyxVAo{|#log(TGcqhFz2n>YD}PfA{!SqL*%27i3L zVt~5xwo(|dpyWNbTT%Xq90l-OjX0{cQ19gm4a+43;MeNTZ=^*pQErF466HVSl3n+B>}KhjI4M{vNuAyFoXS1WABDQ=ro#C9LHsinW@c$u zat7*s0VfDf|5M;;M0)rQl0tU8yk)AY$&F5i9w5cuIvS^~N4`8Er&8j=LloSD zIB@a!n7j^ZL*-A|ES~z_uESM3XAG>{e-s_b5@Y`0H<8?2V(vtNLcG>P#L70QDc=)3S59YTUZanCyxMgJ9IkJd@Js*GAR@QbFvEkyRt*ihX00jFbI`A{T@Hi7a>$ z9dv>9Zj5Nb)QrZRk2L02K06WlI?fU!y<7-R6wIRSDQm0??g)lKHj%zN!@_9%(a0V@-q0Y8JIgQw0k zW7KL3JY)7Dk5n5?r)jU5j0mN7vF}HdGu<)aLXMCHNd@t)OBd>dOcSQhVqu3=2eTsJ zgNs889adQocnYQEJQ%-no23VQ4pIz4bPKzPwc4-DLBR#uam?%N00hJ1njr|mOjTE{ zuR*ca{PW6n35vM9iK!*t8#DOOToBZaHj4?8k)~387a3NBLhj#R<;uK?z!bpJAS{wMPPYv6QFvJ; z1pm(5kCd0#WeWoFpwEhy?MR{TpwFJvXUtWgmeSGOP~>%i;$uC8L4s7CRaGSMz)fV7 zUH@X6>SJwD$y@wy2ft<@D9oe0{#fa=1O4+V;?Bu0XBj9@M&lTPmY1jKr%$u)t-%0H z3-xW%={G`|GW$M+@#1R2?cK`Es+e7a%3W&Y1={ajI{pp38a*BZf*cLMk@lcca%YXg zlb1((z53>tdl)5ewLO~{@W(aPGbV;*m_@yq z!qTY3JAN1dwSq6%J#P}Te0+5klVk5cW$!ppnl4pN5rBxnk}NjD;mr^O8WxI(tuyk`0_N-ZINriG=?|u0V*1~khV8VY1|dGfHsb!! z+(Ui-?Et=|dkl0Y1P6cph=LaS8TfA9T!yz?PpqW;y^36HLg)!o#r+qiEHMP~Vi977 z$7(}MP96Xy$AJ4j@)5S$ z2snd)MC1dM)y=FAI%aa~((I9!l;V~J2~%)Ps1pnWdtN_h)#4y1#Z|)Fy9R6MzFoTe zsG`5SF9Og>19#F$6A!2U5?$CmJUloKIWH2K!Pd!8Gl`-1B`tWbEj% zwiRkjD6ZDTM|sd?csJIOZSX&P3A_*kqq5%5i_x!yzuk!p2uJdXg!FMp@@_6aB7IoK zTfZ~n1_C0XsCgX-MJnqGCJnx&_GY%K+A@wwo}wu?zoJ5#%SCTshjddm*NlVOA60_o!t^8= zI0W__5IW`8Nk&UmI_i37>*#cFxlw+_lofMOq0LpPidbt%JRf+;51US0iZ2wkzhXBU z{sXo$ZRM!4y-fB)6GIa>mYK;(pHg%hKn`sr{vXS;Aw-_P)O1OwGV)Fmp4(3wz9Z;JL^LazLgBqs3c>31Ete zkvJ1G`mg2RFVoXBnbHFFXWG}DO5nA2ddz$^Q8rNcLw=sroH}ESu(vXg%7D4dr20c9 zVNbh2>kz^V5OkSK&mtMk#;7y~;;>bHPfBU~h1=K)Dez%9_oT_M9oq@hXPaCI-KAEa zu{h^qo^D~8_;yJU*(bQ2%Oy5pYPXS<8wW+^w*v_EnVFo=7Mxz0CO69%AvIkDua;ml zz0U!d&tone{&(zC2X!Ary4j(iv_c8}woL+hqX_34lAb%E5GR|RK3+PiU)tc&EO!lKt<)6Q?q{01?$TSpi z38`d+Wo9~JQFS7;L2m6=S4)!eGXEzn&)k-^*? zd1y`4oT}4%G%!z%}xCXHc>M$mhmTVAT336kckoBel%Bj z)&g8&jvAf@O!Xhv1y`%@vuHDzBU2eIKJHE-d^ihaG#+dinEZ??qTvKcSlIFl81&S% zoHEM=3Op{yn%GAlOe-^MQu7mA{UvC{^itXKzvVGn(In#i#7D#%-g`5-t%^txqr;ss zRa0U@3P+4G!CJk))@m4Yv!C;=t6-d2%gT=&k-LlU|HZLBjegiyu>*aHJ!<&T@twR$ z^k4HAr3$u8`D~&vUEwT~q%_-kU^k{QgYV^l6xU@aP~?)2R7Ni$;PRB>bq>wO4x z2Q47emNCk?Js?qGe-5jolGaEsMPNIPaN$dtXL$dp|N+K@#;;e$!}L;e9} z9|)HU8%z}N04-t!fy*cV-| z&}2yI^chFepYwSOh4h{7N6VIfD{fU8et0cv8q!pPWz}4dDhN9|6I4wEbU6S->l0aK z?`%!J%XqGI<%f9I^uH^v<41c29XWsR#SV7|oO?9xCy>;&NqxDJX*3)v0PF5mQe}Es z@{;McY=s=QsWN-j8l0i~VYxwu_RW_Ls(MO$M{F8D_^*6~WTdgNv!&mSpEEAgV7HKY zTz%Wg9D9(mFuZm&NL&x$k&5rqgW!Yx@a3u(zOIv;Ue;XgsP!R%QYvY);a(757zH9- zc4Ud;32BE97bj;-a`!?>KVi0llNL>XV{9ku{Qmt2^8w^JR*d2BdNFU}#jr1+?>tXidnE0BuK=S-> z=h>P=fbRnz5T;}T#2o|*n;igrz#sHq*Bq9%ys)H0F?pyPCv1_YM@pkxZGk0jT@WbQ z5KDokY=z2KTuDMU4aqZi^4=l86&mO^S~CWqFJ#i%2anIL^fydaUH znXJV@%IYSNofgsOQP}Cg&4d09K3VJd-5y#GZ}o0}XOvHnK&sdphlZ&~#{|6}+ePr)l?$_|NKwLRKN(BdZ3 zo#DJ@U=>sU752Y!1jPp&lbVL#t1ET51sA7t1e0$u;%X|Ct*=X&mew+NwOB)Prz=`#`&@WnIu3xwe)a~C4 zL3v7x3@n3V8V#$U@_G!`_`vmnCMluP{oO7rK%lLl3x8yU+u<%d=vI7RcD(rIYmub< zT~sKdn`Pe^#RKp{qrZlIH+Iz?rGH+&5V9Psbt{^s~I1Ml@4D2Us9a; zf4SJtwo@OBo~(qNojBF^%Gy!d?!UHHei#89mXzm%#QE2`WDj{{{~$+0LOqi*%6P%0 z%3*@i?u*OGyVk3B*A@ywsLuGBl2XYGDBy!kJtwQF*UaS`^K4pW=iof1FET}khs3Pk z`NJ&y!b>98;h~${_Too$)x{x$R6!8lWcpKg1iM0@TPL@5L~j{1C5nuVnU4R5xHDw3 zqy^a<2LKeQ&$;g-_YXS^u5A2l7-&=BGi7NvGn(RPbh&U4IM@v9x)hMm*~+kBFCBdP zu4W6LX$?j_MX-4Jo@9aOZxENUak7i;55J?NPMBy`KM7T5ki?o8-nY?+u$qaWER8=g zX0`0P5AGVR99*~Hw`{`*p!!-^knJK}Mz1=QZU%3}(R)yvgcrj?|fbhq#uk$67 zMp4}MhtDq#SrBar_6ynA{zL$l`8iMX#AmJRP2+R3}^5MRaqpmbj8GW4!Z$hLkza1`zr z@k1u&zx9zVlB`!`#B2Lg5tCAMDrTA+UfcW6Nk5kMr}E;uAB)ID3+Z}V$xKiXWLCGu zb&@@Pb=!WfDCLy2e{fUTg0SW%7c@zmHGmJkn5=1dILIl&6ZLKPV0MRz{m^T^tnU0UCMJ`aMmWMX6AQLqmL;?q?P zsbsx@f@LdX-&7D>Q*qjpw6tK(m1T$qYAVZXr#d;VCrG*3N1uYBJ$*>h8d-xGYpn=o zUXj?>QLCMN@Z(K7T^8!Pfq%bg=|gHJDV*VtQ|Rre}=?E(~;cSh>N0a!&!`UV$bA_ zrNERQ=kmQr#)YKfW1eZN?^ZaROvEf+Yg$8b;+I~$(Pc$u*9{X-G#3IEkEt*`$QSVIog6J# zA`y-Qp5M6VpbaKYFu}LMRK3jUvBOu0mF2z1`>m?1rp5!TB?KT<)b`${2^}{Z=Kap0 z{@V3UP2Cu&xngy8UO?MRAL3Ui;OO2=NV3gbgfYwkP86@NxCxSNd?D*Z;Zxl1p2TPq zrfV*YYx>zPG-*J6HTk{i<}%v5b&p^5)+`-ncA=7+ncNZE0?ZkE3V~-}!vX1E{LVMpgh3KmU##d}~-$~?0L z!|)PA9W6o#giPgsU|Bd3WY?@A&mz2kBdC8gH59E4D;y?C1g*@8X)44>)LvUB+KSRrZn=Pa@>glXfFN%iKv9F#NG)hABKjwmrQf`7$ zE^WH##}=w5_T5xu{lMbWSxb-&^K6pkh!Q&d0xdri^MFOgdH#*LE+|n)iWM|pweW{VTV9CFXr9w? zT@lQL5&`5YX#i=(c#8(v!80ed^u*m4}!_GKMeCmXy@wwvgds+K#6l{NU|Do5{(O1B!Z{bv(e>!|OAEauS zFeCzQ!T5<^)IA>Yesp68z2Lp{xE_t0@12s0l`&0uW2#aSd@}jt+iIPR$@|wAI{##s zO~&Eqz$0ku7AcgPbRy%=czUPh9_h?#Y7j1-_uwi+$vayFT~X+LPFx#MV3UgN7xq*W zdRE@0<>|@hX2qG>alJKa2Lf$fQ{-%T4DfS`J5Uf9P!LYt8I`KK-+Y^67+c?upqH?A zbu+jCX>IsTy&Mr$c#Z{Qw{IN)7_C$@ll$C^JjFaM4UaBV3d+sjB%0sMUs6dF*N}-xms`V{CaT%m*h#p@O z>BQbq6`f=qyyS0ry8-B=tf6jBpPis4XrLe+l{eb)ECZnKA49`I8v$CsCnT;z#CU*a z3rJ6pN9ZOU#7HD0wcJsit~-$nq-<+5xq1!z^C_`6szx(sQ!bfJfwoLDM^!hV!6YSJ z+0L#W|7eCMNd}#2)Rrn)R4P|t<_mHSDlSf8mDcyxcR%pilbomaJVaG_erwu*dH6n; zqfkc$7&t{y139)h%fUV|pyCnKR07)+)&mzNl~E!yFB_feQ(|~4lV8CVewB`IK~pJV z&M*5ev^{b(giYFsq`_n9ZtN>{C@9!j#P?p^RxU&>uHm3yb=kO%=F>&qmOf-m(WdU_ z|GyTDdlZ_dFE9Y<2rhwQ#LPA(L4NcFlH`}C(gvI9b*L6E0yhqi4ydqdDEI}QbYJ#w z6s3BOr4oJ1EEBU=s*~`r&>xDG?ao@fK z-5cUhSAgf=s%@m1wL)&1?g>1;v`GxC45skT;j)yN7-vDMotdI z3OSDKnsivlGMbhGKdZ2B)r5|NC4od58dXW%bW&>Fm^=Eey|!iZb?s;alW-ume{ME6 z^-@gBV6DY|joezuIF0uoWhvV7FGr*jd;7XXF#8r@)E{3E0EdqiKw}A+tfszOT1xAM zI@Yp=1WjEk8mu1Q_};EU1QG6i8p@7^)KpTH<|>_KzF@VKS?)}5?*^>Muh{Dbomv}C zZ)MM%Wl3xss_PQ69Hptk8=e64H@5$<)w6K{ka$v-q*jkReP%Hpze^vX@;;S^oiF#p zP^ZC<|BZbn$a_rk_ND!%!^nzsbP&HxMfr4&>`&zRfbmN4n7}mH0brX_P`(N#XNl#< zmlf3~Eab19m+!$p{M;v`C0hYbGa_hx+LXnSpxzr-XRM%bQN=*EL!~-s>=JoHgqoiD zmVUtXU2Q0#koE<;u(ea_d7+7=)KNo`nZe3H+js%Zapby%dzMdg8Q?dPc>0LC=XW%$ zA&94IY=F+HD-W#y=xdOp2alN6y9Fl0=p-sQ1-ZEslOzb)HC zFhk+y8%GUGuIY{$8=Ly=tk*N+t09D{jR&g)Q+MN9*#U%VFjBCoYKH{i_rn4lrfa>o z|Ip`>IH&N+O+v3&tywmNYXlqo#0uK=MYXTRWm&c7fih5AWF1K^{7`h}&tQ%WMSXlH zROqnOkl9@Ep_(hq0c+Lm%78cqD5!7Hhd0}Sm(MfNEQPfILeGVu3nP>A1{j(9C!*9% ze%Y-f92R*nz*5!ps^FtUL*f%R2QFQZ?qg>85EhKo2PkKZ?fG5MUQ(OS#3l1T7ru+F zj{*hHy1JjQSmy((?D|kgxB4pGy3VpoV$y(Rb%Ou@QQXk+LK+jk1>2b~=1%HZh4Dy`vziB=x^Yls~C#>020lv-;?LpQ~-2kH;EQQ~}+TdG)vi3@3};f$5i3CQ3^ zYuR*OoV=rykE7K;8F2*>kUmk|ppqG+Wg5r&D9;dTq!bzT=#>%e^-IZIqXezVLBrT& z@UWkNe@2~93z#=99oN6=eT_z!x91M{2FA`8&61U;EHu_+{`Z+zQ}A4Ix8FtM{{Ptf z%BU*4w@*+36#)eWk$R*XrKLqWr8}j&J5&UuyG!Xt>KwYeI}aeufkSuCMxXyXGi%M4 zS!>pOdOykWu6^(O>iAtNOJpgMtw<0u=ihwTrl^KTyoGbW!|`F5VD^;|{;*Ck`6BwK z;R!>C7GoQZuIm}L!o>aW6XTd5)NV}ssjS7%Bne6|c$O3=(!|DcO2obc5h<%vtQa7IKA^Y(eaz^nI_J}jXD6Qbc0+zw*m zGAIlpF_r2+duF^JU?lZXDB#CXv2-iSNV9zV=2n^iF}4MD^%w0|x+=}D5%*+(Z+p)n zGcHG)kIj}gk@-va5Iz_UmCi7B(sM-TG9gZ}QMBu+aG7*L>S^TK`ae}ldtf4`t3`*4 zS+Go=c!Y$kP>Ok=f!pk;I~OzWHnjn_M&IKy?9^)CuV?9YyHgdXu4(;7Bd5 zQBNYajdS@nDLd2>L`LZ_uqL%P^s?e#6x`!(UOu7E#8ZB2dT(B!9;#i)q>$wuuwA^h z1As!TH~iTQ%?dE+i+}q5Ts+rXiQ4Zbt;Os7rw1K@bJs%jRGxR}QP$xyB(hl|UGzI{ z_&}Bl{<|`5m=#psfJY=E?{IQ)LLo3%Td_LJuKal7>!>LA_aF(-0WAGk`b#2n8oQuR zBXSrK%_V)B-RXe|Lo6jl_-`$PR(VcOtlCKd8NuQV~m%VsU#5A;sxAif^%f2W!v zV6na%<#KXl>0(A?!t>d|Xs6GdrDS?=5%hQbgnWqO&}rE3oN3R2{281Vn#d2EoVz@B zFNsQTDcvkO^}5C)G@p3%M-UpQ=)qV!vgOej0_~u zxVm?()qPlQu+IR^jSYtx)EOOxcHyV4N>Mx8W1m86nCC2Aq}jL3u;Zzt0>tq%$*_Zg z&GV8S1T?JU?YpbxzgXO#7f|@|2zNjV06!N&KF*F8sq|(Fg7m&tlTDpz=v;hi6_F}?!{@{|?Ly{}xL_P%Q^5Mf!3Uv<6(a-(z0BoMwi+9SaqTkg#>?mqAtcx z7Vh2pH*2+T)_C~?zp_=^DTZ1|e#lm#W1_Vlgs`z7dTFc5)y!=)yBXI-q93sE$jN)W zci(K*?77VK`%s(xh#R+Q~3K z_SwGZ*lrDT=#Mw+#TV5Lh&{A|&l%X$hAv(%Jbc;)oh`WA`CHg`HO0zn^yJ?xXia%> zY$BfiLyFS#=9dCN5Pa)_=e%*kN9L;KaGTbp9fi%{(1NmOTlM$WOpd2na~su$2FzP8YrqpiD@lmitMf1)uah)UIlDowLgx;4CIVWA`=~L--eODx>>w0 zq42Eoza~BAJ$%bJ8Q@=ev~=X5hW6KsUuq+grCk-ylG{ChyStG|2W^?vp5IkS1!|R| zJSPJ+XDyG$!`L6Bm17Q=bH6bt)CN0vhdsU=$w}W%*ORs^itINANY8Cb2CVGrJspQ` zb)d7%O^4T_1pw(B^m`ENeE5N!-7XZc0m)L83yNq5Ii!L#^uAxITrXC#pbdEI`eu*v z#E0BJaTx@Uo~e9t8hIOS_`46)_Yv|b{mzas8ou{kUhRy)ro0!yLl7r4i6TRolRV}n zz-b$y`%$$Iokcs&O|=MfK(P&vM=x10xL%c2mnubaFlTN1%ctRr)FX*W-I!^U`wo+i zI-^egAkap=9LUdqa}}h(l>NB8Yf;Z7cl&ARwr@Ayo=ud*FQ^{V<~}t`@2c&7K7)kz zyBVdYim}v8y6~A}!9RB7>w@1h#(aCtmq=hdK;2j1FUGnr_YR@HWSDx=ZKq)<6Hr6Q_OlXKN8P8$@+TzJM)aIEAUWv3 zRqdt7&kapo0e$O~MVW5fCL9lD+K$`%mK__~j;r%g3SKioa1-)p~6CIl7WCx&<1X52k`&E#vUN_LjxZ=#tYs}e7C}f@Xbwd?wN6I)TQcH2O z@5phbWfo`MPTKAqrfOkfq9=v|)5=zU=+cfCgud1f%5fmbfuHk`W((P-W)v1iwI)-# zTTw^evY{)a)4mqLo2YoA7YM3Gxm#068=i-tQ=<$RvO;o68E$ctQBJ1Sa@yiRVIdk} zL=b9xV0Un+?$XP$2Q1o(0S4>|1Npxj?(l%Ge|wek#Dct)dyLE%#oYoGJE@PoZ|C<; z@)J&;GVmBE7WbN<@i=`{Eg{7Dbq{hzio)Y-6WX=!z)WCDZV)D?Ctnk;_MI}L>ZwtX zq3*g$rM9E=EZfxURP~agWyVx(C)$<#uvSu-H&`7L~=IWbY`erWU!GmxK~32z&7iUb+4*)M{62<(fbyUL}X z;gLm}Me|4C>eTss;;XQP>xoXUeV5lBizj>0%{g1R)I0IYWtBK63}X;0EhH7hLQ8V% z&Om<@Nl(RSGmZ4NM3d2HhT)ech{7#I(Uv79d#if5Ql5nb4U;ciMlm(CS+y)@o4N&_ z{#9|!`p$5O@O?)9JeGu3iqbtzYq7Wpi&>&;f(%-8*3}2kD_Px)daZ;a znk{{2M~%;IcIhlz@B$u?f|ir$Ee}Uwu6A6X!*;bG+>FQSp%Jg5dz~>OjdfER!Hgc2 zT^048Zs#3gx&VRG(F35LS%gfHvX}iqLC+*XDfZHS&(dK__!}bD{u5%5pkn z7n#LZcQwzs7b~;B)y6MFzNeECGlF>$ce|L_o+43@7eQsrt6(qxD|?McH8|!+ zi~&PUPFv{vaG(@l1+Ui{n-B=zCyWgUsRQv~->GuKGC1xZjYvO^bI=im)K{aT(C@qA z#}k2~RC=rwBn4zh)Cy?h$VQQ>9B05SnMGgDWEh*k-}&|hnc&GufLcy76!=D+pO()y zOV6e(>{dC4K*$4dzk9CM>Y`JxWx|WBFFz^D&<{W;$)#;>9HC)^Y0^bktoQ4W>w!j6(8#7d2(>HFoYbWxPa;=9VaWbohWgh0wIqJUyA;R;LdJ;Q%B>TbjyysI8lR36tBt z*F(=XO&(Q%$)4OFQXseJpCeeXN$>+qW61gL^>!B8eBL!fr#{c7gZUD!vgLgBYtI!S zXjja|Ll6cT2_qA}pijQTowea`BG`{%3k?X@5@b$NY`xD?3ST+0FjMxUZ$JJg8^G?S zw~Ia13HUvWu(o;x88d}GgT)xtGEhbJ3XN_Og2@`3`$~T3kNiRX{E+Q^ne~<{-`lqr z{HS=iS}K7}2@P4>3@Yq8rqv9HtLpvr)HJtwVkF;*rWtefVj9t?7M#iwaZ`?h@=sv4 zwfFU}Ei5Trm~;xVn}N$)fwy;pv`aaXfTUMiW{s*NVx5xmAPT3tJHUh9NSUd%+&HY# zxTMlL&3Kp3e3wt5wzgX|WBPF24sXDiDOohs$f4-v{q{2Yiuo^+g*TFgl8lZVV-vqJ z7Tfl^6QX?fo4Z#GSaGz9l`X#EdP{n1-QLt(U$$Iw`J@aC(U!xf4@(c%m)9e7zU!zC z4}7VdAlTeSKR)(VGCPJQzMyDAKe6#Rvp^scd|8b3jk6U-jeLDjbz0~5vRKWi&9lSw=8yHd5Ypk-r=N=*>&*L`*@5vnFxto1Bx7H98)pfdGR2n=eWjXGX?eq@pEG%q4pLag@G(l6N7amC4vea^al|i&J zo8DR}R@#f7i!z1mpj9l$6W7y3u_#7*Ctk;1O@MHwe38G#PD zXK4WD6J!+7$M8do`F=p4;H%MORtoN>AL4I6m)cIUrudR*Z*#v^Lk%)SC<6O8lf z=qF5psNO-g+DoF4qNl#1s1Lt+F2)K-O6F$0n}TiVFnd0FZQuw7DND&}`x&?2VW+be zzom_~X4GoV_&^Em=ntJ`SqcO3YRfQCKr@#(V3pLi*Rls#8-&yhpP@}JOnGZ{I=Vbv zd}nWmSOJEUkv$!{Z0u}J-TA?XZU4QlmL)iRbc%RTHQM_$e?g0-YfP9o(q!~+csQI$ zK)aoBALEJpAlRWN8Ja5%5zs;@9Z@%L=!8y9IRmRQ-hL{9+*0rKv)e7a!eJVPt$%h8 zvxlwXPV%n=toc+k6kgGB)4uzZ16)oi(Els1D|9?|dNg+I;Kvyr2u66}yDMNz{W9!-8T&0< z9`tLV5LKyQC`jb%NvOiU<7S9Zx%z-+2|nS_vTw@MU-zVdrvN5Yxqn*2m`yO0H5hc< zo?Mjk8+8TMg;C2?Dz5B1Aqd_vuUx41yZq#^ROedQSyiDr%6|oXUUOqQldf`eBe+=* z1TPO#@lWWV%VIh;asl>;g0>-AZY#M92GUD^P`#CM{+3l=v?B??h9y~ zMbgEK3L|ktg{6D<(H}cSKkutKzK<>;y{_P=omYFkncFbMmzW3essXsRB-@|bErFiYvPPVZ!)vc1PQ;Jo_0&@kl0D?z9*FXtQcPj ztMzyy*Xeb2Z>yFNa}rRlp@L4rW1|zNHFNrboj@s2ULkLv-tte{ciH$CTWz48mk9vt z>3;gh*>45~RB=G?or>l4@9C)bya_rZli4?X!4%^{8G0Xra}r?vb}LqHx4`-lEfi1u z*B0crsH33Mi*5^f(#Zkxv0M=zRWJ)NKuSM`p!~TuZ)JF-ZpEN_Mx$H@R^oUJwq&PF zXqpF@7wo>n&Vy0BRkahDEeT^h_1*B*3BF1nqd!9mt0btk=9%&sqL0g78^dK&I$Un0 z)}&%VO>sHP=(L831;_M%{%hVcQo`WDr-<*=OcL+ER{NuA&u}OEo}J0LFz=b4z>`&#jB*MLq2J&h!&9@o{VO zwYu({G*vbgPE=Qxu5zJ}!VmFiJOnOx$?15~i*MoiUoSoRKq;xb{iFVkFColaGzrqN z@>(D)dGes>A7c6{*LM4&*F#VDg(nJR*}x2?IR?4DvV@+1ON zfuGxXg4k8DO-p573F@$PwK^6%qc6$Ol*>RS%d^KeDH`{ncFrpoa#ww_LfVm-dbo)! zN}KX_*Qg-eJhvCZzLrP|Y|~@X&Xq*6>Jb)Mo#-kBQwo)OzFd&Ne^R?l_YJ8F!jZ!` z7u8U~7G8(S~@urM;F z7b4B;``hMIlP^ua4Uc16d>O9n8Jv5w0y1}`4c~8jHO&SJHBd24L8k6Hn4Rr{AV|=S3HYCloaak< z`wC}VdCjdWA7_6SXq0pqgE?Y@A$+F?N4>(LU#-ufDpwli9}@v=&6tBABSl$mx6eSm zYym_5K>|URD$7U9KPr9aJq8;WH-ac_UusZI!9EqfaS+c$7YR^V5$QyFWeg$jR{B*H z4a?hwrRGJqS|j>0NanjXQn4K*Pu6f{_|1i_xjrH?!!ws9Lj9w`_=A z@pXIADP9D)JMFL(*+HgIoweJ3Hw*{pgB4)VKkK zdwNC9X6lE|b^zGsSGab(>>#KT*`tn^kqRQ~OSE#1W7Bc^u#Qo{gLZI!WnNyALdg9t z=FQ>IVr*mnYCcH#iPx>m$foh}*%2;;9_(sg*SPIRPiq)yx{(?5Y%xorkii72G zv$3bKYY4;r{q~+Yw0drlXJiJaPo;(TrJ7Pe-(pJ?vLR0#;$v0IykGro{+7<-2}dv8m)YC4 zsesa{czQQjDu9Ldmh99J%9}1_5ulTe#mTnV;5*2{f=w9Wn*A+_xGPUfk`r4GB;`aEQkpd)ZSj8EYN`#wd6z05IlD;7Z|)jhM^WA ztus>Vv$o>r%7U#>)(htR(8rRRcRmV^{mk*()>Zd;3{J*--*OC~DdMH*YW91nUu$@P zY3I@%DnXG!TGKa7Q{{)wyDpS`Z@6vP-JITVZ3N>4f7*HIjIf4zi!W0YT*=5h%tP6G zevw9YYww^pMsHrTRb!24C}pXeA&L8W{u3Av1j!`P!q8dIANx%jT=QRzea8yLL-H7O zg)YnEQE+IX6Mv1Rr)9RV=|VQvMQ)BwUXCSh{`?g`#N!jE`E{jFp(jq8Z$-5dcG%
X>nL1+YPd`8n>(p}-c@!<}9T(=L#1zT=fIv`13~G>80;F0BH6%20Ep=KO z0GZ3ZQBrTNe&fA}fKA)muLqLW{dQM!iR-v7NV5DEzKtTAdi(B*e^7KV$q>Wpkf7E| zb50UPwrE`>jhn@}gT7YNGlI_}pRK~_pY0h14X1m5V~>LQq1Za8oiPYIDa-f;sd#Y zcDUVzqhptwmjsumY>2I*T{fjxgzSjoa(m+-%2-VIR*7s=SYwXYpqp_z#WxF#s#Rd< zcmwlq{S(??Ak?uDAm$*K*I~PSOeW-Zb-SpbcjKMsE~&Ebf96|>O94G0T`GR?Co%9X zoT16tY0BM7k%kE`yzlA7YUZW8;uPL99k*HO?e?$6l$-oT9@^m_*(*^F_^g*M=v=>eI2o^n9%Pr5?lmlmp>E{s5Nj~x!};_dDqpH0koFDG0kXL zOWPnD#(!R|Bc>!zdfifZ0}bhnRv_su>9P?TJUn@xx&A&>MiT@u~uqLW{da5j3+G9YU>3JeCn1OS>p0UCopmL8 z3)Va5{Yq;o;M3uCTO0t}RY&%wMoh~Sh?-)n+8XMApiyATWal=`dP8w(gb=MsFVnoT zyPj>(f0(eoiiNac<1>?3RvTWUwe8gK{6LVn$3CVkXcye|KCU}O{9@BW9FhXOr@k92 z$DPX>kV3QT=cdV|v-k;`e6-VCJzeysOfh3f5$LtUOm+$KsZ4Lu_Fgr*(a(bkX&MW& z3X`J>3-`@I8^j(6nA*G)9+5S!viDxTQ!GibBAY}ZA^OYq_C2zqW>#B`MNA`9hJs>6 zU#L0`aR$>~az_kgNyiXVAFZ8m=*&88qt1<*S&_>P2MZ-82E|DJjZ|l5+vKpI>~DZ=Kxi@a-b-h5%ME5J4XTS`&6 zZoq&RFO}Z-dwWjt-9z>F7N3>6E$oEZazGU>9TTV+`7({1d45!fbtSnpsc-`1EC1JqGzR>|7byEk!PP2vt36DJ<{bj?GRJu-Ds4qfdx1-m^^NoE`-XN2CT6~CW{)68e>}wpg-DpXx=y;3)#Prr zT?F!FlC3wq&qTT@3`8Rb*LA=^E4-!hi~CT z-&zk1$K0(dGS9I03{T=eGr=1MEJS;SNgMh)qtDWPFfIo|U5w&fjHgyMTYI*0Nyn<)KQ&tm=LitCT53i%K7fgfu<3Wf@sP2)f1t* zMJYz^w2-9yd&E#<*)YPk4EL-j=I2 zp{YK3I)Bny-&{u7csL1VgBG)wR{T;j>y`KvU}i=5tm*Iwk>8Vs|k+7eXO0ndvY&uPPR?yvQV4#3s%v-inRcYoC_suE5G3pt*+;hn$H zUP&!JAzC@W8O-vFiXzLSiHW3@U7<~Gdgub%`9&4qzrIwxBv2PSJ4#?u0{uE{apj@^ zwyKYp7pg^U6s;-fMC;QXaLcvNuN{V!VA$VW)3C7H&`%$o-Qa4SnWgNZG4^B#^g0ut zjn39cPK=@ctIinZ5ArI+us~YqRc}Z!Az|An>^FQ%xd;7#SBo)ivT$l~WqmCManNy& zX!1q)K2z9gBHGiqbT7K^UU)55pY62%CMtnMS~}=~&pi<2&`+t-D*n-#X1^L0nkQw! zb=}{k;epXO=~*xa0J<2L;R#e!Vf_5JeritDJ6o3mvOmV@qkm+B$RL*Y(Z+oG&ktt0 z!_{P!Yjgjmtqh!X+v1vsVJO?@%x~+zt_O8)!%dXRBz58{{hr&O1_%#~T7aO2s(yX8a?l*)v6m#lqT zDX6HNHn|CZ(<7;KDvZ5H5jTh#YJi3sGuS)bd?jf66en(W8*X(PcwqNqP^(eFCnh*6 zTPHBZ-E|Qrpidq*m@tD~HB2F8`%H3BJbFCsI-{NhaRA*g6YSdgN)|x-^{*HH5P+?C zXp^t?t{mAd&k{X0TNMs_H#56kT>DZ#d#!^qWye=gyiIiR@haS)Jc=Ys#TFSR^5OQGeh)Gwp3p0MdYBY7OnJZB0jKGQeSC zNcN<0+8LknO^1iTe#OM*nFr4bb`@uxjKvZm|JCkK%VZ7$6i>!k;5rTAu5d?%tWw6g zt=b*h-Jd>Ijf09>^zqdp15Zd-73lirKx>XCbE{klcSS4ZxEBN8*+EP7Xz5`_o~eRT z)AET}A0FWCGV}k10K~FZJ_Q_g$1yj0=ygBu&-E{Ra{O+|K_d|j^yd7TjDFJYZ+ZGBG0$k9r!7sDI7{D8-G?mk-p+JcU(&G z!QapOtm(dwXu}N}8*Y{FzXUM-rn)=fsJwB2=TzUyXh3n%mz(fN+kMD+E(Qn=vw@_b zXUSDXb-Ch|af_yA;SXyiT;Uchm29$HX|4?HE?iDGljz24%o1`JV+~l9myD4}yx+nd z3^ zuvtE%$N_pOfkL z=U^?Ts`-NT6!z?2f>=qXit4W0OMHwt*u>A-_zk#3%QUpP9B zBT#hpp_x_2jrPJ%Ivy?Vj&@(IL-Bd{tf1qKqMf7lFrp{%Jwb`WtE+t|Ig?=_Ia$M_v!=(6YVI{W z?lmyvMz!}3U(ZU12zQTf2GZc!o@_f~#$m^Qs6{*?l}_b&u{r5$SpyXz%DuVOtz1u%iCx0XpHy*s>u=Yz`Y6ztlGP zP#8gf893Kf%1AwWn}P%>vHCu zf@Snh=Wv6Gv{AYLHTxA6XNW|G2x z!x&&kMEPoT@6`rN#ph?aBoag)jEutJ!t;w(!SOHfcwJSjB!YlIEXNbE`;bA0>S0?w zmkKe;k~(&RCoiGD&g>b>y(^pHzu03^`gwVRM(iSMDcq&>pS!aOSh?_U^TZM)bYX_9 z`gI(lzb)6N*|GVE!V2F$a&T6yCrUlRE!W2jPl_MF2r(QCGZ@6m2$wA;Z}@KiG||L5 z%-EXa@g2MvZ5HJiZdOs%&h-UJylPb|zsK({o#+u7W(qbx|D=>b9xu$p;Wal;s)DK1 zi;ir~>SVR`rtMQ8_t*}^^4_Er)l$#wv?)5-up0B+2|^fO+AEt1Xy?qV<@T1X=w{zz z!G|K`@y($20XwMgiMTG{06`lW;-NzRlTDCNpm0 zYznetu>CM{(X4iP63P%pvt??2qFrEsXCB6xzDvohwz_BMMV@mMw+LGa&U5})TF}quF=FDk_9~}1H!*++63B)oqR6uKBMi^jtx;&0q5a!%L z)9^DTb;1vsL&x<&$PVTpN%3d5SJEldB#gCP80E0I$Lq3$t1l%fxT~ZboJi5zGZUeG|2~}-vVCAX*hvN3qS~h zMehJS4r3iR-s>y6={U6H#IM{Nr`onn?#G4`FVHx@ib%H?`4M6CT8L&(tUjK*zC9s^ zwL9Uwu6>!$@Z$YnKjs^P`2g;4vWiSmTX*Efw`#Mx=T;xLd#G(+eVQ)`dwpR`U1scG zw(e)=^Qjr@s>FmuLGt0WG$?y~_#a_58QE>5?L~HYMVAn#ql2w9xm=2gi0BT6MQ|yI zgEfP3OaJw>a0~Xs9(?euGxeL>h57pS4#)LVWd6DhtC?7aX_j;;joJpwIz}gf5`+;> z#v?nL4Iu}1VYv+PFA(Z(l)#gp+mdqM$bJZa{2}YQfjOR&ju{}8v_6cVtk+#RUx zmRN|<8#@_jD9!>gkYu-1!;2iXH^TJ)AW=cFD%=0_=v)A4&~UBK=7x*KzTxWD`<96@ zli-t<++b7ad?)edwFZ{6HJd224P7Ke6VDVK38^B%b87=}>u!J2pT-!Vm7eR~$y?8V z_`9Z)I2dn48VUM2G>0K(#3V10vBUt*Bdqq1B{I_I-u_AB1y?5c_CW{t@nBqE1gzfD ze0LeE^VaQRSDFJER#(hs3AZY~kAy@&IX8Z}cb~xfP{r!fd1034;B=DrxTtuRo#V7G zjn95x7Axhl{`TbD`-%yV^44PK+RUCCsZ@zrT#+WE;bNsttbk0i&TFH)(9t3QK6?)d zNyT_)V}E)wO!J~!<5-qYl7r1*!PR|ccJ+n`PWd^hz4F8oPJJdnfu!98X-05cRc5OB&^lXja+EC#W7c^H>wi%$U2Lz zfGaZBsW6t2p|r&a2}u_N4sUdBExCckdLM^Duadl9F;zUS>PtI6TDm>oufDzF=f9jA z@xAtDc0O{6KFUF>@+~x*i6rP!>Rm{)AZS)g@z^hr*Z}WrE^!Je+VbAd>%U!sT3{Z%lE!-mbJ#Mc^u55O4I@4XN(QPDEuWK0M`aec5DA4mo z$*M35&fy{omtLyG4rY@Rd1iWTd^X4$DG^)I$k@xZ<;yjFBoCC78yy1+T7-n_86kmYk+H5-72Z}ir-B<=&(2iZeqiNL;rD)B-+blaxpsISMKVzDcrX(p0r{mq0s9yb;o}a5Mf_L1wG4rdzcyi#FUt{Vlsj=)l?Y4FH=DHDf zP;%Ryy+Eve8zg(|wY;U}3^|T$WaW0Qb28ne!t1%c)P$e%U#2WvUOAt7?(5wCZn?c^ zEVr&>xgDN9GD6~jZHAIx>~%KYQmv<+abt;!YI~hWiF#iL6n8IqyPcOe8{baru2Ftr zk9>%PRF-Gno4w<{v*T%_I|pqjy;)EDetXP!AmDskKL=fy7@yO+UGiY%U#K&@zVba+ zFkTBKPP^`Hjl*nkg8x23M4YbipHT-|ms@E~W{31AA!`;$g^-(tQm9YFQSjG6Iin?2 z%38!ok&sj~HjmF0NCs78+0aP(mG}$257cVR^NOVjYMtk2N7Jsh<`cFWwhEY%krK-| z?mJkPacaxZtujhUMZfz)LTco^nxWoroJr3)yz3w%;pxR8TeZ8rr-(iZHaB0UrnsK} z(D`plC4O()8zIZ$h(-^!voco&S#RvxOkN$xeCiHTm+H(&VidL3Amg3Xg}sX0TXnfR zlYFtaGcA)lR-z>?MH~_NjcK2M5gj(e90RG4y-K$Hvjz%^*3fxtUnY{iG_}_r(-o!b zUv5Gcu2+j^ttB~-p^?EMHJD*0AQAx&!@c%%qqMl{<;rs$aM?NQ-0&|r z^yG-|#-`>TOoEvs(quYV2xGbcO!o$ok1^^S(=JtMFYI!>*s-4A7L=b%9A{sC*66Ox zW|-@DL_$J}h0j!!o-U$I+_pp|-3*r#q+PPfq1(jt0Sp>z@JdL(?s)=kM?&I)qbhbY zsEo$oI^O;M%tof*sgWPG(8yy3o`h7DP;`+jB)4`^su^%c&`3>>na817dn>v%55O;* zAk{hAYTt;`T*c(VtOD>qNF4RQ$pRvWKg2k=Qsl1y34~D5uTSj#CsNe0LX)^6~hn zT=`cFp75@pEvn27)RKMTcgrvQhs+-PZZ)uUZe}|)=6`VEXYMy5$dAzdJCNd7sGqZC3$#y8`^$&>> zX274XAfxfY6wHQgOk7}rA^PRHOC4YzKlQ+8#C-z5)t@nYy<%Y5naWm{vZZHI>g3Qe z>k5bTdXt?40?j11`ipsUI5Rj;AW0fJXTJ`)9Epjk9Eqt6hm27MEw93+gbKb&7P|dV zO`fTbhiJmtCw09VE}GH)y=XpY9lCHkUfTUiLPL3@BC?H6q4pHlKQT)qQbTx>2tw|u zftiT>3Ou0d>ntkj1*%m({tw9**xttKvX9+|R-f^M8zU{)=1NeEviRM%`i$A*vJjiu z+cOg2_t=t1H9u;(-OfHWy}2|XqVfGy`d@BaI z{-KzM;&=KC>1kvI3i#(A@;_$@h~4oV(&z9yMnXb*E&hk71tTGMzrK>RQ)@v5_Dg`ufZviPSX%1&>B?v&`<+Pgu47RqDZjZR`I_<_;2tLBUS2mlH#ZK3hD8pBMcE7? zE{0~O^GhGg!Gvj6^}u3o3-OWINo~ovJ7G6tQL~=Py<5wqr8Yeys}YI+g8;c#tgeXb zUFwko4WGSlKzfNpy*97Qo4+@=pKTIYXcDL?D^sp1^Vtl{k`}7^?@>F3bN>xf-KNc6W!Fa|*OeI{8D1d27rki`TN*e*RIUS}^Wt z>*C43`W0|&crRQ2;N$}5fnJSZtY*Hmv*>YZ@rpOi^jnSH&?Ez`Nsk&Cqqc2qsEq7n z9W}3cU6SF1Ca)LM)`4HFv`n%^;A|FMpj!&tG!93%W<9r6V%3+f#Et-k-DAJlx8=uG z;>9QCP1%malZ{T+e>qcmG*+aJxzgR*Hdn1C3s^hClLQcP$w;BT}X=w$Mm+Z%xTLvOmRww&?h!p7Y38yLZ8p60diT$X}+62y(V7n-P9fWSb zuNGAtMPY1Y1hqh@?Y4Et4>rUHmAvAxK4SaF-e`R*&4b!1nD?5w#xnY)1J3l`h3sIPwc+dzEWS7j zpCpA>hxfXjg9Mfc7U}J{vYc{iRlRkB0q2_D+u4_$JU)TN%|?PV*9Qh0T#pb?;_6x| zxR(%w@ZAY~Erj>_l+(5>%k2Wzw;o5_a2x8t`|VE7WmL9^*`5iRvdYn)h6SkKkrTb@ zC{e<}2X`uYajZXf%>awV6L8@F&K42Oc64^kl584>&(<+&kxEXSUNrR=A8%F2h*)Ya zL@^?(bWS35g%-Qj6W?;W9c>hA)g~r^ryx}+7dZ&e2>K~vJrBAp*cbG=GyWQ?OYyo`5ss3_VGD*ZV_mbtXwQTA6Jy zd#YnjpXy=ivEqzLKi5xNKz!y^ARGx%H3^Q-h8J#r*$?pTP@Q1iFOJy1Ki*-d!D8z} zu`XPAJvPKjY+b+6y*{us z4ptt$GOq2iidT{HUNXtFdy@^SK&SQgV*;W;ra`rP7vG99sA=_2eL5c|o@(-t1)X9{%$!Bf5wnAB<&)?;)41Iew<|Ie(j}@j>7L}M2>34Yp7#VrO%BV9;4+se zC*-d>V?i1`S5fWcR+T1?QslWOHougZmSvWeD5_m)mJlXd-A=>|o{Em=1!5f%&^0(| z)={ecFlCkmi#Rr5=-FmuEfI(v0*~W;Be!E+Ut*dVDye-ak;j?f!D0SDZ;<^^LV8pW zNIV_Hl>lG9Qk2mMEB?sC_8C6sNTYm0GtC}y6;_`h@2RC4v)A(F4 zPW?Se;W38>;0=uSn}ZFL!x9Y#?Zd&wNyU#L1Qh%gP}dQu;N!TUB1yM0-5Q6D+5Qe1 z%yrtV6VBi#-%DO*@MgdtJ}mnQoGZ@C+ISC+g4j;cppHxfp$uJHNAFU6VvEU%g|G~`=rPM9as(*y&Vi++ENO&a$J#4ne8d41GsHj$DnvW2UN78N5gd-+ue zbL^3Y^v#JpEUIKDP3&eT-Ly=1aaXUjl&EtFRZJc1tN2K1u2#mnoRw%@>9Ag-)=0^! z+W~N>65{9(14=pB8giZ^)5VrmWE_IW0=A3Gbs^c^#Vt`j+iVVz|Ijzq+H9vi(@cX{ ztCpS}yyeiexEf={&oHFP*s$ULJ^k^Kl!tq)<`fd@4%-P50%>_(L#KNl-HA0 z+K)U(%AGBC1tD&nBE}b)okXFDO{ao;`FI4k%v$`*My6GlKFvp~?*_?E$7T9yZvnei zcFPwG+Q@TzzTKup;19^gjeZf9?8zV1OQhs}<(rEu>1m#b8PvGM82ipddp2j($s}<= za&t*%5sNl4yZqID&r&dZ$kIRPlY!uZM4V!V=RAOXBMDv+Yi_)pKZBX}SJpVxY z2tL|0A5|)uTqY3>Bc7`?SFy)&P|RXYjE>b*-u)r>HuHR;{w-!%X?srG^VwQI(?l6{kK>ZP3$Q+O^AzCBPCPjUZzLBo znE2u`)HHD*UmCZw7kyzQ*6Z02Ys%P(mD4$gf%NFJ?q2O$1WJiaC|+;>p852;j61iM zlkLT-Iy~^NZ~IxfM*pu*@c-Gp70?~OpVh5i_Hmkni;GXq(xT2RW~4!)<{?s{G;p;4 z(a1*&%#e&O=6BDP?&wtCztL$ptpP$Y?~5R#R;`oo;>|&B6AIGAoeLlS-nTR$yHrq- zM$7&*90iEg<);`iBO50B0<#gZ2#hRw+Ht=|j%Znx649H4#TEw|k0%e1VAOZd>3!Vl zejvB4`bl%()kofs#Vby?7+ermibluP_O1SSq|Y)@z{58e{e&3&N|C}p(@DbMq^m|q zr%1!*rF=@oA!+@~gIsRp-0*#=noE}H&nt;7RJvpCJmu{C^EuyDA`RTMlO;U@Sx&xz zB_9Y0YaN3V^==&$s(GSm0g;w_s6MDwlHhxk?rGzv~s}vT<7f6k#!$Pyr zN@9W*!bAxCi3kc~J7>dQ@tYjR?~|?3WkJ4E0WUGX)4>Y)bLE|{YM=t*$mzMfrltuFev!U8<`6GHijVw!)&De8So2^o7;`?4a>x1fhe|5@$d?j?;mO z+|(~{x8RSL$wDewZ$|2DD|z_bSftW43ntQgQ7Mp-%)bGeR>fi5vKWcaGcgsPA1L{*R_Z=pk5kU7ucPZ%>U!a{-r#U1D<447=)Na`FF~eFg%5S|*TatjGp@5B*BEU9R7%jwSX9z3V@IDVlbo(R76 zyC787atv<4HhaNH#YoC#_sodKJtXshyG4=NeQ2+5mHYH~UDdSa4Z9qn+1fMHggBux z&!4p0^5;KyG1kpj&u)SggqX~p7pBOBDZofDcI!9gq%0%HjHdhgeLiIj3mxXJnw08W zeb7V9`oF48Y?RqTrdz!pH?q`4(q-7ppWNCH%McCQnW-$OeuVUSO9kY~IDfG!Re#<5 zqMw1f_kuLVU@~AaAi^BW9qDtZSr**|AixJoFX?vpAervHm3h&^3`oB^?tJNcz5Fb( zn6@>Cn9<%fd{|L>w+|9iyYPe@eGpX#*UuC99Objq6NG-bPg zb=>|e%QL1(JTo?C4}-(3v|N*s*83bU`NuDj+Q%o^?< zncUo8ASQ_u0kymrgVYxoJ!9Xz6Bb^9t(SE8pJudq-Hr zd)39HpZH#qG+Nt}d7HqNeHeVO*svOZ!MDRQf`*9}zVD7tC4b-5 z_TrzMiiB-$uVoOX!cH@)n``I2ZW?b5=6-(|9`WZqJ#nxc%e9NBQvOavW;pF$ILz&U=hg#^G!(p`jrmEV7o+YyB(~ zLIp*<)@QL+jLhLYI0}u5p*yCiKFkxmIFcbL?0e#|y;&1%AxpAe8?sQp`nY6#PUF&O zpiPwjYNxy5l0+@>M3d!Dv=?^d^nBza8NQGGL5%1B*hcZV`7b0aukwwq0Er}f<#pt=s&-;&I!&RFpNhjn=13e}f^lf1lE%(44X zb1U%a%egOgr+NQsTe5Cd!kcfqC)X)0x9fUW|Ky_Er=lN^XUfL!o>g79(p~@AV&=?R~j!`T6hP`EI3K;1p0={86)cK~BzX=kN3X zf8?K(wPoXyS8o@W$5vFox|;I$(pzi0s`OQXOUiElVXy!Acx4*r?Z$TYbN>GWtNM@K zJIlPYRkyg-+HUWTOwXxzj%?fcDqiMhz>ljx949-=-i-Kh_1KBUKX&esw4a``^RJ>* zXwhtT%ei{n#FzEH|C;yZ>+$!u_x#*+`=L8{b9SH^9&27u3G_Gxqxe`L2UJtdxghk z&-wzDFvLvW{chK5u3{n6GSKKy!P&C6w^IFpbD0bcp^A{{2lcLh_DXj@ybtYvc^;(2 M)78&qol`;+0Fu7JivR!s diff --git a/docs/output.md b/docs/output.md index 974aacbb..95aff81b 100644 --- a/docs/output.md +++ b/docs/output.md @@ -12,33 +12,9 @@ The directories listed below will be created in the results directory after the The pipeline is built using [Nextflow](https://www.nextflow.io/) and processes data using the following steps: -- [FastQC](#fastqc) - Raw read QC - [MultiQC](#multiqc) - Aggregate report describing results and QC from the whole pipeline - [Pipeline information](#pipeline-information) - Report metrics generated during the workflow execution -### FastQC - -
-Output files - -- `fastqc/` - - `*_fastqc.html`: FastQC report containing quality metrics. - - `*_fastqc.zip`: Zip archive containing the FastQC report, tab-delimited data file and plot images. - -
- -[FastQC](http://www.bioinformatics.babraham.ac.uk/projects/fastqc/) gives general quality metrics about your sequenced reads. It provides information about the quality score distribution across your reads, per base sequence content (%A/T/G/C), adapter contamination and overrepresented sequences. For further reading and documentation see the [FastQC help pages](http://www.bioinformatics.babraham.ac.uk/projects/fastqc/Help/). - -![MultiQC - FastQC sequence counts plot](images/mqc_fastqc_counts.png) - -![MultiQC - FastQC mean quality scores plot](images/mqc_fastqc_quality.png) - -![MultiQC - FastQC adapter content plot](images/mqc_fastqc_adapter.png) - -:::note -The FastQC plots displayed in the MultiQC report shows _untrimmed_ reads. They may contain adapter sequence and potentially regions with low quality. -::: - ### MultiQC
diff --git a/docs/usage.md b/docs/usage.md index 44288ee3..a231ea88 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -83,9 +83,9 @@ The above pipeline run specified with a params file in yaml format: nextflow run nf-cmgg/germline -profile docker -params-file params.yaml ``` -with `params.yaml` containing: +with: -```yaml +```yaml title="params.yaml" input: './samplesheet.csv' outdir: './results/' genome: 'GRCh37' @@ -197,14 +197,6 @@ See the main [Nextflow documentation](https://www.nextflow.io/docs/latest/config If you have any questions or issues please send us a message on [Slack](https://nf-co.re/join/slack) on the [`#configs` channel](https://nfcore.slack.com/channels/configs). -## Azure Resource Requests - -To be used with the `azurebatch` profile by specifying the `-profile azurebatch`. -We recommend providing a compute `params.vm_type` of `Standard_D16_v3` VMs by default but these options can be changed if required. - -Note that the choice of VM size depends on your quota and the overall workload during the analysis. -For a thorough list, please refer the [Azure Sizes for virtual machines in Azure](https://docs.microsoft.com/en-us/azure/virtual-machines/sizes). - ## Running in the background Nextflow handles job submissions and supervises the running jobs. The Nextflow process must run until the pipeline is finished. diff --git a/main.nf b/main.nf index 7f777f9c..47ce41db 100644 --- a/main.nf +++ b/main.nf @@ -7,8 +7,6 @@ ---------------------------------------------------------------------------------------- */ -nextflow.enable.dsl = 2 - /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ IMPORT FUNCTIONS / MODULES / SUBWORKFLOWS / WORKFLOWS @@ -18,7 +16,6 @@ nextflow.enable.dsl = 2 include { GERMLINE } from './workflows/germline' include { PIPELINE_INITIALISATION } from './subworkflows/local/utils_nfcore_germline_pipeline' include { PIPELINE_COMPLETION } from './subworkflows/local/utils_nfcore_germline_pipeline' - include { getGenomeAttribute } from './subworkflows/local/utils_nfcore_germline_pipeline' /* @@ -54,10 +51,8 @@ workflow NFCMGG_GERMLINE { GERMLINE ( samplesheet ) - emit: multiqc_report = GERMLINE.out.multiqc_report // channel: /path/to/multiqc_report.html - } /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -68,27 +63,24 @@ workflow NFCMGG_GERMLINE { workflow { main: - // // SUBWORKFLOW: Run initialisation tasks // PIPELINE_INITIALISATION ( params.version, - params.help, params.validate_params, params.monochrome_logs, args, params.outdir, params.input ) - + // // WORKFLOW: Run main workflow // NFCMGG_GERMLINE ( PIPELINE_INITIALISATION.out.samplesheet ) - // // SUBWORKFLOW: Run completion tasks // diff --git a/modules.json b/modules.json index 570517b2..8a13b373 100644 --- a/modules.json +++ b/modules.json @@ -5,14 +5,9 @@ "https://github.com/nf-core/modules.git": { "modules": { "nf-core": { - "fastqc": { - "branch": "master", - "git_sha": "285a50500f9e02578d90b3ce6382ea3c30216acd", - "installed_by": ["modules"] - }, "multiqc": { "branch": "master", - "git_sha": "b7ebe95761cd389603f9cc0e0dc384c0f663815a", + "git_sha": "b8d36829fa84b6e404364abff787e8b07f6d058c", "installed_by": ["modules"] } } @@ -21,17 +16,17 @@ "nf-core": { "utils_nextflow_pipeline": { "branch": "master", - "git_sha": "5caf7640a9ef1d18d765d55339be751bb0969dfa", + "git_sha": "9d05360da397692321d377b6102d2fb22507c6ef", "installed_by": ["subworkflows"] }, "utils_nfcore_pipeline": { "branch": "master", - "git_sha": "92de218a329bfc9a9033116eb5f65fd270e72ba3", + "git_sha": "772684d9d66f37b650c8ba5146ac1ee3ecba2acb", "installed_by": ["subworkflows"] }, - "utils_nfvalidation_plugin": { + "utils_nfschema_plugin": { "branch": "master", - "git_sha": "5caf7640a9ef1d18d765d55339be751bb0969dfa", + "git_sha": "bbd5a41f4535a8defafe6080e00ea74c45f4f96c", "installed_by": ["subworkflows"] } } diff --git a/modules/nf-core/fastqc/environment.yml b/modules/nf-core/fastqc/environment.yml deleted file mode 100644 index 1787b38a..00000000 --- a/modules/nf-core/fastqc/environment.yml +++ /dev/null @@ -1,7 +0,0 @@ -name: fastqc -channels: - - conda-forge - - bioconda - - defaults -dependencies: - - bioconda::fastqc=0.12.1 diff --git a/modules/nf-core/fastqc/main.nf b/modules/nf-core/fastqc/main.nf deleted file mode 100644 index d79f1c86..00000000 --- a/modules/nf-core/fastqc/main.nf +++ /dev/null @@ -1,61 +0,0 @@ -process FASTQC { - tag "$meta.id" - label 'process_medium' - - conda "${moduleDir}/environment.yml" - container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/fastqc:0.12.1--hdfd78af_0' : - 'biocontainers/fastqc:0.12.1--hdfd78af_0' }" - - input: - tuple val(meta), path(reads) - - output: - tuple val(meta), path("*.html"), emit: html - tuple val(meta), path("*.zip") , emit: zip - path "versions.yml" , emit: versions - - when: - task.ext.when == null || task.ext.when - - script: - def args = task.ext.args ?: '' - def prefix = task.ext.prefix ?: "${meta.id}" - // Make list of old name and new name pairs to use for renaming in the bash while loop - def old_new_pairs = reads instanceof Path || reads.size() == 1 ? [[ reads, "${prefix}.${reads.extension}" ]] : reads.withIndex().collect { entry, index -> [ entry, "${prefix}_${index + 1}.${entry.extension}" ] } - def rename_to = old_new_pairs*.join(' ').join(' ') - def renamed_files = old_new_pairs.collect{ old_name, new_name -> new_name }.join(' ') - - def memory_in_mb = MemoryUnit.of("${task.memory}").toUnit('MB') - // FastQC memory value allowed range (100 - 10000) - def fastqc_memory = memory_in_mb > 10000 ? 10000 : (memory_in_mb < 100 ? 100 : memory_in_mb) - - """ - printf "%s %s\\n" $rename_to | while read old_name new_name; do - [ -f "\${new_name}" ] || ln -s \$old_name \$new_name - done - - fastqc \\ - $args \\ - --threads $task.cpus \\ - --memory $fastqc_memory \\ - $renamed_files - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - fastqc: \$( fastqc --version | sed '/FastQC v/!d; s/.*v//' ) - END_VERSIONS - """ - - stub: - def prefix = task.ext.prefix ?: "${meta.id}" - """ - touch ${prefix}.html - touch ${prefix}.zip - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - fastqc: \$( fastqc --version | sed '/FastQC v/!d; s/.*v//' ) - END_VERSIONS - """ -} diff --git a/modules/nf-core/fastqc/meta.yml b/modules/nf-core/fastqc/meta.yml deleted file mode 100644 index ee5507e0..00000000 --- a/modules/nf-core/fastqc/meta.yml +++ /dev/null @@ -1,57 +0,0 @@ -name: fastqc -description: Run FastQC on sequenced reads -keywords: - - quality control - - qc - - adapters - - fastq -tools: - - fastqc: - description: | - FastQC gives general quality metrics about your reads. - It provides information about the quality score distribution - across your reads, the per base sequence content (%A/C/G/T). - You get information about adapter contamination and other - overrepresented sequences. - homepage: https://www.bioinformatics.babraham.ac.uk/projects/fastqc/ - documentation: https://www.bioinformatics.babraham.ac.uk/projects/fastqc/Help/ - licence: ["GPL-2.0-only"] -input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - reads: - type: file - description: | - List of input FastQ files of size 1 and 2 for single-end and paired-end data, - respectively. -output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - html: - type: file - description: FastQC report - pattern: "*_{fastqc.html}" - - zip: - type: file - description: FastQC report archive - pattern: "*_{fastqc.zip}" - - versions: - type: file - description: File containing software versions - pattern: "versions.yml" -authors: - - "@drpatelh" - - "@grst" - - "@ewels" - - "@FelixKrueger" -maintainers: - - "@drpatelh" - - "@grst" - - "@ewels" - - "@FelixKrueger" diff --git a/modules/nf-core/fastqc/tests/main.nf.test b/modules/nf-core/fastqc/tests/main.nf.test deleted file mode 100644 index 70edae4d..00000000 --- a/modules/nf-core/fastqc/tests/main.nf.test +++ /dev/null @@ -1,212 +0,0 @@ -nextflow_process { - - name "Test Process FASTQC" - script "../main.nf" - process "FASTQC" - - tag "modules" - tag "modules_nfcore" - tag "fastqc" - - test("sarscov2 single-end [fastq]") { - - when { - process { - """ - input[0] = Channel.of([ - [ id: 'test', single_end:true ], - [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true) ] - ]) - """ - } - } - - then { - assertAll ( - { assert process.success }, - - // NOTE The report contains the date inside it, which means that the md5sum is stable per day, but not longer than that. So you can't md5sum it. - // looks like this:
Mon 2 Oct 2023
test.gz
- // https://github.com/nf-core/modules/pull/3903#issuecomment-1743620039 - - { assert process.out.html[0][1] ==~ ".*/test_fastqc.html" }, - { assert process.out.zip[0][1] ==~ ".*/test_fastqc.zip" }, - { assert path(process.out.html[0][1]).text.contains("File typeConventional base calls") }, - - { assert snapshot(process.out.versions).match("fastqc_versions_single") } - ) - } - } - - test("sarscov2 paired-end [fastq]") { - - when { - process { - """ - input[0] = Channel.of([ - [id: 'test', single_end: false], // meta map - [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true) ] - ]) - """ - } - } - - then { - assertAll ( - { assert process.success }, - - { assert process.out.html[0][1][0] ==~ ".*/test_1_fastqc.html" }, - { assert process.out.html[0][1][1] ==~ ".*/test_2_fastqc.html" }, - { assert process.out.zip[0][1][0] ==~ ".*/test_1_fastqc.zip" }, - { assert process.out.zip[0][1][1] ==~ ".*/test_2_fastqc.zip" }, - { assert path(process.out.html[0][1][0]).text.contains("File typeConventional base calls") }, - { assert path(process.out.html[0][1][1]).text.contains("File typeConventional base calls") }, - - { assert snapshot(process.out.versions).match("fastqc_versions_paired") } - ) - } - } - - test("sarscov2 interleaved [fastq]") { - - when { - process { - """ - input[0] = Channel.of([ - [id: 'test', single_end: false], // meta map - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_interleaved.fastq.gz', checkIfExists: true) - ]) - """ - } - } - - then { - assertAll ( - { assert process.success }, - - { assert process.out.html[0][1] ==~ ".*/test_fastqc.html" }, - { assert process.out.zip[0][1] ==~ ".*/test_fastqc.zip" }, - { assert path(process.out.html[0][1]).text.contains("File typeConventional base calls") }, - - { assert snapshot(process.out.versions).match("fastqc_versions_interleaved") } - ) - } - } - - test("sarscov2 paired-end [bam]") { - - when { - process { - """ - input[0] = Channel.of([ - [id: 'test', single_end: false], // meta map - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true) - ]) - """ - } - } - - then { - assertAll ( - { assert process.success }, - - { assert process.out.html[0][1] ==~ ".*/test_fastqc.html" }, - { assert process.out.zip[0][1] ==~ ".*/test_fastqc.zip" }, - { assert path(process.out.html[0][1]).text.contains("File typeConventional base calls") }, - - { assert snapshot(process.out.versions).match("fastqc_versions_bam") } - ) - } - } - - test("sarscov2 multiple [fastq]") { - - when { - process { - """ - input[0] = Channel.of([ - [id: 'test', single_end: false], // meta map - [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test2_1.fastq.gz', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test2_2.fastq.gz', checkIfExists: true) ] - ]) - """ - } - } - - then { - assertAll ( - { assert process.success }, - - { assert process.out.html[0][1][0] ==~ ".*/test_1_fastqc.html" }, - { assert process.out.html[0][1][1] ==~ ".*/test_2_fastqc.html" }, - { assert process.out.html[0][1][2] ==~ ".*/test_3_fastqc.html" }, - { assert process.out.html[0][1][3] ==~ ".*/test_4_fastqc.html" }, - { assert process.out.zip[0][1][0] ==~ ".*/test_1_fastqc.zip" }, - { assert process.out.zip[0][1][1] ==~ ".*/test_2_fastqc.zip" }, - { assert process.out.zip[0][1][2] ==~ ".*/test_3_fastqc.zip" }, - { assert process.out.zip[0][1][3] ==~ ".*/test_4_fastqc.zip" }, - { assert path(process.out.html[0][1][0]).text.contains("File typeConventional base calls") }, - { assert path(process.out.html[0][1][1]).text.contains("File typeConventional base calls") }, - { assert path(process.out.html[0][1][2]).text.contains("File typeConventional base calls") }, - { assert path(process.out.html[0][1][3]).text.contains("File typeConventional base calls") }, - - { assert snapshot(process.out.versions).match("fastqc_versions_multiple") } - ) - } - } - - test("sarscov2 custom_prefix") { - - when { - process { - """ - input[0] = Channel.of([ - [ id:'mysample', single_end:true ], // meta map - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true) - ]) - """ - } - } - - then { - assertAll ( - { assert process.success }, - - { assert process.out.html[0][1] ==~ ".*/mysample_fastqc.html" }, - { assert process.out.zip[0][1] ==~ ".*/mysample_fastqc.zip" }, - { assert path(process.out.html[0][1]).text.contains("File typeConventional base calls") }, - - { assert snapshot(process.out.versions).match("fastqc_versions_custom_prefix") } - ) - } - } - - test("sarscov2 single-end [fastq] - stub") { - - options "-stub" - - when { - process { - """ - input[0] = Channel.of([ - [ id: 'test', single_end:true ], - [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true) ] - ]) - """ - } - } - - then { - assertAll ( - { assert process.success }, - { assert snapshot(process.out.html.collect { file(it[1]).getName() } + - process.out.zip.collect { file(it[1]).getName() } + - process.out.versions ).match("fastqc_stub") } - ) - } - } - -} diff --git a/modules/nf-core/fastqc/tests/main.nf.test.snap b/modules/nf-core/fastqc/tests/main.nf.test.snap deleted file mode 100644 index 86f7c311..00000000 --- a/modules/nf-core/fastqc/tests/main.nf.test.snap +++ /dev/null @@ -1,88 +0,0 @@ -{ - "fastqc_versions_interleaved": { - "content": [ - [ - "versions.yml:md5,e1cc25ca8af856014824abd842e93978" - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-01-31T17:40:07.293713" - }, - "fastqc_stub": { - "content": [ - [ - "test.html", - "test.zip", - "versions.yml:md5,e1cc25ca8af856014824abd842e93978" - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-01-31T17:31:01.425198" - }, - "fastqc_versions_multiple": { - "content": [ - [ - "versions.yml:md5,e1cc25ca8af856014824abd842e93978" - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-01-31T17:40:55.797907" - }, - "fastqc_versions_bam": { - "content": [ - [ - "versions.yml:md5,e1cc25ca8af856014824abd842e93978" - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-01-31T17:40:26.795862" - }, - "fastqc_versions_single": { - "content": [ - [ - "versions.yml:md5,e1cc25ca8af856014824abd842e93978" - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-01-31T17:39:27.043675" - }, - "fastqc_versions_paired": { - "content": [ - [ - "versions.yml:md5,e1cc25ca8af856014824abd842e93978" - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-01-31T17:39:47.584191" - }, - "fastqc_versions_custom_prefix": { - "content": [ - [ - "versions.yml:md5,e1cc25ca8af856014824abd842e93978" - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-01-31T17:41:14.576531" - } -} \ No newline at end of file diff --git a/modules/nf-core/fastqc/tests/tags.yml b/modules/nf-core/fastqc/tests/tags.yml deleted file mode 100644 index 7834294b..00000000 --- a/modules/nf-core/fastqc/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -fastqc: - - modules/nf-core/fastqc/** diff --git a/modules/nf-core/multiqc/environment.yml b/modules/nf-core/multiqc/environment.yml index ca39fb67..6f5b867b 100644 --- a/modules/nf-core/multiqc/environment.yml +++ b/modules/nf-core/multiqc/environment.yml @@ -1,7 +1,5 @@ -name: multiqc channels: - conda-forge - bioconda - - defaults dependencies: - - bioconda::multiqc=1.21 + - bioconda::multiqc=1.25.1 diff --git a/modules/nf-core/multiqc/main.nf b/modules/nf-core/multiqc/main.nf index 47ac352f..9724d2f3 100644 --- a/modules/nf-core/multiqc/main.nf +++ b/modules/nf-core/multiqc/main.nf @@ -3,14 +3,16 @@ process MULTIQC { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/multiqc:1.21--pyhdfd78af_0' : - 'biocontainers/multiqc:1.21--pyhdfd78af_0' }" + 'https://depot.galaxyproject.org/singularity/multiqc:1.25.1--pyhdfd78af_0' : + 'biocontainers/multiqc:1.25.1--pyhdfd78af_0' }" input: path multiqc_files, stageAs: "?/*" path(multiqc_config) path(extra_multiqc_config) path(multiqc_logo) + path(replace_names) + path(sample_names) output: path "*multiqc_report.html", emit: report @@ -23,16 +25,22 @@ process MULTIQC { script: def args = task.ext.args ?: '' + def prefix = task.ext.prefix ? "--filename ${task.ext.prefix}.html" : '' def config = multiqc_config ? "--config $multiqc_config" : '' def extra_config = extra_multiqc_config ? "--config $extra_multiqc_config" : '' - def logo = multiqc_logo ? /--cl-config 'custom_logo: "${multiqc_logo}"'/ : '' + def logo = multiqc_logo ? "--cl-config 'custom_logo: \"${multiqc_logo}\"'" : '' + def replace = replace_names ? "--replace-names ${replace_names}" : '' + def samples = sample_names ? "--sample-names ${sample_names}" : '' """ multiqc \\ --force \\ $args \\ $config \\ + $prefix \\ $extra_config \\ $logo \\ + $replace \\ + $samples \\ . cat <<-END_VERSIONS > versions.yml diff --git a/modules/nf-core/multiqc/meta.yml b/modules/nf-core/multiqc/meta.yml index 45a9bc35..b16c1879 100644 --- a/modules/nf-core/multiqc/meta.yml +++ b/modules/nf-core/multiqc/meta.yml @@ -1,5 +1,6 @@ name: multiqc -description: Aggregate results from bioinformatics analyses across many samples into a single report +description: Aggregate results from bioinformatics analyses across many samples into + a single report keywords: - QC - bioinformatics tools @@ -12,40 +13,59 @@ tools: homepage: https://multiqc.info/ documentation: https://multiqc.info/docs/ licence: ["GPL-3.0-or-later"] + identifier: biotools:multiqc input: - - multiqc_files: - type: file - description: | - List of reports / files recognised by MultiQC, for example the html and zip output of FastQC - - multiqc_config: - type: file - description: Optional config yml for MultiQC - pattern: "*.{yml,yaml}" - - extra_multiqc_config: - type: file - description: Second optional config yml for MultiQC. Will override common sections in multiqc_config. - pattern: "*.{yml,yaml}" - - multiqc_logo: - type: file - description: Optional logo file for MultiQC - pattern: "*.{png}" + - - multiqc_files: + type: file + description: | + List of reports / files recognised by MultiQC, for example the html and zip output of FastQC + - - multiqc_config: + type: file + description: Optional config yml for MultiQC + pattern: "*.{yml,yaml}" + - - extra_multiqc_config: + type: file + description: Second optional config yml for MultiQC. Will override common sections + in multiqc_config. + pattern: "*.{yml,yaml}" + - - multiqc_logo: + type: file + description: Optional logo file for MultiQC + pattern: "*.{png}" + - - replace_names: + type: file + description: | + Optional two-column sample renaming file. First column a set of + patterns, second column a set of corresponding replacements. Passed via + MultiQC's `--replace-names` option. + pattern: "*.{tsv}" + - - sample_names: + type: file + description: | + Optional TSV file with headers, passed to the MultiQC --sample_names + argument. + pattern: "*.{tsv}" output: - report: - type: file - description: MultiQC report file - pattern: "multiqc_report.html" + - "*multiqc_report.html": + type: file + description: MultiQC report file + pattern: "multiqc_report.html" - data: - type: directory - description: MultiQC data dir - pattern: "multiqc_data" + - "*_data": + type: directory + description: MultiQC data dir + pattern: "multiqc_data" - plots: - type: file - description: Plots created by MultiQC - pattern: "*_data" + - "*_plots": + type: file + description: Plots created by MultiQC + pattern: "*_data" - versions: - type: file - description: File containing software versions - pattern: "versions.yml" + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" authors: - "@abhi18av" - "@bunop" diff --git a/modules/nf-core/multiqc/tests/main.nf.test b/modules/nf-core/multiqc/tests/main.nf.test index f1c4242e..33316a7d 100644 --- a/modules/nf-core/multiqc/tests/main.nf.test +++ b/modules/nf-core/multiqc/tests/main.nf.test @@ -8,6 +8,8 @@ nextflow_process { tag "modules_nfcore" tag "multiqc" + config "./nextflow.config" + test("sarscov2 single-end [fastqc]") { when { @@ -17,6 +19,8 @@ nextflow_process { input[1] = [] input[2] = [] input[3] = [] + input[4] = [] + input[5] = [] """ } } @@ -41,6 +45,8 @@ nextflow_process { input[1] = Channel.of(file("https://github.com/nf-core/tools/raw/dev/nf_core/pipeline-template/assets/multiqc_config.yml", checkIfExists: true)) input[2] = [] input[3] = [] + input[4] = [] + input[5] = [] """ } } @@ -66,6 +72,8 @@ nextflow_process { input[1] = [] input[2] = [] input[3] = [] + input[4] = [] + input[5] = [] """ } } diff --git a/modules/nf-core/multiqc/tests/main.nf.test.snap b/modules/nf-core/multiqc/tests/main.nf.test.snap index bfebd802..2fcbb5ff 100644 --- a/modules/nf-core/multiqc/tests/main.nf.test.snap +++ b/modules/nf-core/multiqc/tests/main.nf.test.snap @@ -2,14 +2,14 @@ "multiqc_versions_single": { "content": [ [ - "versions.yml:md5,21f35ee29416b9b3073c28733efe4b7d" + "versions.yml:md5,41f391dcedce7f93ca188f3a3ffa0916" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-02-29T08:48:55.657331" + "timestamp": "2024-10-02T17:51:46.317523" }, "multiqc_stub": { "content": [ @@ -17,25 +17,25 @@ "multiqc_report.html", "multiqc_data", "multiqc_plots", - "versions.yml:md5,21f35ee29416b9b3073c28733efe4b7d" + "versions.yml:md5,41f391dcedce7f93ca188f3a3ffa0916" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-02-29T08:49:49.071937" + "timestamp": "2024-10-02T17:52:20.680978" }, "multiqc_versions_config": { "content": [ [ - "versions.yml:md5,21f35ee29416b9b3073c28733efe4b7d" + "versions.yml:md5,41f391dcedce7f93ca188f3a3ffa0916" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-02-29T08:49:25.457567" + "timestamp": "2024-10-02T17:52:09.185842" } } \ No newline at end of file diff --git a/modules/nf-core/multiqc/tests/nextflow.config b/modules/nf-core/multiqc/tests/nextflow.config new file mode 100644 index 00000000..c537a6a3 --- /dev/null +++ b/modules/nf-core/multiqc/tests/nextflow.config @@ -0,0 +1,5 @@ +process { + withName: 'MULTIQC' { + ext.prefix = null + } +} diff --git a/nextflow.config b/nextflow.config index 24b6eaeb..7e2469c2 100644 --- a/nextflow.config +++ b/nextflow.config @@ -12,6 +12,7 @@ params { // TODO nf-core: Specify your pipeline's command line flags // Input options input = null + // References genome = null igenomes_base = 's3://ngi-igenomes/igenomes/' @@ -33,48 +34,27 @@ params { monochrome_logs = false hook_url = null help = false + help_full = false + show_hidden = false version = false pipelines_testdata_base_path = 'https://raw.githubusercontent.com/nf-core/test-datasets/' // Config options 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 - // Max resource options - // Defaults only, expecting to be overwritten - max_memory = '128.GB' - max_cpus = 16 - max_time = '240.h' - // Schema validation default options - validationFailUnrecognisedParams = false - validationLenientMode = false - validationSchemaIgnoreParams = 'genomes,igenomes_base' - validationShowHiddenParams = false - validate_params = true - + validate_params = true } // Load base.config by default for all pipelines includeConfig 'conf/base.config' -// Load nf-core custom profiles from different Institutions -try { - includeConfig "${params.custom_config_base}/nfcore_custom.config" -} catch (Exception e) { - System.err.println("WARNING: Could not load nf-core/config profiles: ${params.custom_config_base}/nfcore_custom.config") -} - -// Load nf-cmgg/germline custom profiles from different institutions. -try { - includeConfig "${params.custom_config_base}/pipeline/germline.config" -} catch (Exception e) { - System.err.println("WARNING: Could not load nf-core/config/germline profiles: ${params.custom_config_base}/pipeline/germline.config") -} profiles { debug { dumpHashes = true @@ -89,7 +69,7 @@ profiles { podman.enabled = false shifter.enabled = false charliecloud.enabled = false - conda.channels = ['conda-forge', 'bioconda', 'defaults'] + conda.channels = ['conda-forge', 'bioconda'] apptainer.enabled = false } mamba { @@ -178,25 +158,25 @@ profiles { test_full { includeConfig 'conf/test_full.config' } } -// Set default registry for Apptainer, Docker, Podman and Singularity independent of -profile -// Will not be used unless Apptainer / Docker / Podman / 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' +// Load nf-core custom profiles from different Institutions +includeConfig !System.getenv('NXF_OFFLINE') && params.custom_config_base ? "${params.custom_config_base}/nfcore_custom.config" : "/dev/null" -// Nextflow plugins -plugins { - id 'nf-validation@1.1.3' // Validation of pipeline parameters and creation of an input channel from a sample sheet -} +// Load nf-cmgg/germline custom profiles from different institutions. +// TODO nf-core: Optionally, you can add a pipeline-specific nf-core config at https://github.com/nf-core/configs +// includeConfig !System.getenv('NXF_OFFLINE') && params.custom_config_base ? "${params.custom_config_base}/pipeline/germline.config" : "/dev/null" + +// 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' +charliecloud.registry = 'quay.io' // Load igenomes.config if required -if (!params.igenomes_ignore) { - includeConfig 'conf/igenomes.config' -} else { - params.genomes = [:] -} +includeConfig !params.igenomes_ignore ? 'conf/igenomes.config' : 'conf/igenomes_ignored.config' + // Export these variables to prevent local Python/R libraries from conflicting with those in the container // The JULIA depot path has been adjusted to a fixed path `/usr/local/share/julia` that needs to be used for packages in the container. // See https://apeltzer.github.io/post/03-julia-lang-nextflow/ for details on that. Once we have a common agreement on where to keep Julia packages, this is adjustable. @@ -208,8 +188,15 @@ env { JULIA_DEPOT_PATH = "/usr/local/share/julia" } -// Capture exit codes from upstream processes when piping -process.shell = ['/bin/bash', '-euo', 'pipefail'] +// Set bash options +process.shell = """\ +bash + +set -e # Exit if a tool returns a non-zero status/exit code +set -u # Treat unset variables and parameters as an error +set -o pipefail # Returns the status of the last command to exit with a non-zero status or zero if all successfully execute +set -C # No clobber - prevent output redirection from overwriting files. +""" // Disable process selector warnings by default. Use debug profile to enable warnings. nextflow.enable.configProcessNamesValidation = false @@ -238,43 +225,26 @@ manifest { homePage = 'https://github.com/nf-cmgg/germline' description = """A nextflow pipeline for calling and annotating small germline variants from short DNA reads for WES and WGS data""" mainScript = 'main.nf' - nextflowVersion = '!>=23.04.0' - version = '1.7.0dev' + nextflowVersion = '!>=24.04.2' + version = '1.9.0dev' doi = '' } -// Load modules.config for DSL2 module specific options -includeConfig 'conf/modules.config' +// Nextflow plugins +plugins { + id 'nf-schema@2.1.1' // Validation of pipeline parameters and creation of an input channel from a sample sheet +} -// Function to ensure that resource requirements don't go beyond -// a maximum limit -def check_max(obj, type) { - if (type == 'memory') { - try { - if (obj.compareTo(params.max_memory as nextflow.util.MemoryUnit) == 1) - return params.max_memory as nextflow.util.MemoryUnit - else - return obj - } catch (all) { - println " ### ERROR ### Max memory '${params.max_memory}' is not valid! Using default value: $obj" - return obj - } - } else if (type == 'time') { - try { - if (obj.compareTo(params.max_time as nextflow.util.Duration) == 1) - return params.max_time as nextflow.util.Duration - else - return obj - } catch (all) { - println " ### ERROR ### Max time '${params.max_time}' is not valid! Using default value: $obj" - return obj - } - } else if (type == 'cpus') { - try { - return Math.min( obj, params.max_cpus as int ) - } catch (all) { - println " ### ERROR ### Max cpus '${params.max_cpus}' is not valid! Using default value: $obj" - return obj - } +validation { + defaultIgnoreParams = ["genomes"] + help { + enabled = true + command = "nextflow run $manifest.name -profile --input samplesheet.csv --outdir " + fullParameter = "help_full" + showHiddenParameter = "show_hidden" + } } + +// Load modules.config for DSL2 module specific options +includeConfig 'conf/modules.config' diff --git a/nextflow_schema.json b/nextflow_schema.json index dd86b0dc..ca1efbdd 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -1,10 +1,10 @@ { - "$schema": "http://json-schema.org/draft-07/schema", + "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://raw.githubusercontent.com/nf-cmgg/germline/master/nextflow_schema.json", "title": "nf-cmgg/germline pipeline parameters", "description": "A nextflow pipeline for calling and annotating small germline variants from short DNA reads for WES and WGS data", "type": "object", - "definitions": { + "$defs": { "input_output_options": { "title": "Input/output options", "type": "object", @@ -71,6 +71,14 @@ "fa_icon": "fas fa-ban", "hidden": true, "help_text": "Do not load `igenomes.config` when running the pipeline. You may choose this option if you observe clashes between custom parameters and those supplied in `igenomes.config`." + }, + "igenomes_base": { + "type": "string", + "format": "directory-path", + "description": "The base path to the igenomes reference files", + "fa_icon": "fas fa-ban", + "hidden": true, + "default": "s3://ngi-igenomes/igenomes/" } } }, @@ -122,41 +130,6 @@ } } }, - "max_job_request_options": { - "title": "Max job request options", - "type": "object", - "fa_icon": "fab fa-acquisitions-incorporated", - "description": "Set the top limit for requested resources for any single job.", - "help_text": "If you are running on a smaller system, a pipeline step requesting more resources than are available may cause the Nextflow to stop the run with an error. These options allow you to cap the maximum resources requested by any single job so that the pipeline will run on your system.\n\nNote that you can not _increase_ the resources requested by any job using these options. For that you will need your own configuration file. See [the nf-core website](https://nf-co.re/usage/configuration) for details.", - "properties": { - "max_cpus": { - "type": "integer", - "description": "Maximum number of CPUs that can be requested for any single job.", - "default": 16, - "fa_icon": "fas fa-microchip", - "hidden": true, - "help_text": "Use to set an upper-limit for the CPU requirement for each process. Should be an integer e.g. `--max_cpus 1`" - }, - "max_memory": { - "type": "string", - "description": "Maximum amount of memory that can be requested for any single job.", - "default": "128.GB", - "fa_icon": "fas fa-memory", - "pattern": "^\\d+(\\.\\d+)?\\.?\\s*(K|M|G|T)?B$", - "hidden": true, - "help_text": "Use to set an upper-limit for the memory requirement for each process. Should be a string in the format integer-unit e.g. `--max_memory '8.GB'`" - }, - "max_time": { - "type": "string", - "description": "Maximum amount of time that can be requested for any single job.", - "default": "240.h", - "fa_icon": "far fa-clock", - "pattern": "^(\\d+\\.?\\s*(s|m|h|d|day)\\s*)+$", - "hidden": true, - "help_text": "Use to set an upper-limit for the time requirement for each process. Should be a string in the format integer-unit e.g. `--max_time '2.h'`" - } - } - }, "generic_options": { "title": "Generic options", "type": "object", @@ -164,12 +137,6 @@ "description": "Less common options for the pipeline, typically set in a config file.", "help_text": "These options are common to all nf-core pipelines and allow you to customise some of the core preferences for how the pipeline runs.\n\nTypically these options would be set in a Nextflow config file loaded for all pipeline runs, such as `~/.nextflow/config`.", "properties": { - "help": { - "type": "boolean", - "description": "Display help text.", - "fa_icon": "fas fa-question-circle", - "hidden": true - }, "version": { "type": "boolean", "description": "Display version and exit.", @@ -245,27 +212,6 @@ "fa_icon": "fas fa-check-square", "hidden": true }, - "validationShowHiddenParams": { - "type": "boolean", - "fa_icon": "far fa-eye-slash", - "description": "Show all params when using `--help`", - "hidden": true, - "help_text": "By default, parameters set as _hidden_ in the schema are not shown on the command line when a user runs with `--help`. Specifying this option will tell the pipeline to show all parameters." - }, - "validationFailUnrecognisedParams": { - "type": "boolean", - "fa_icon": "far fa-check-circle", - "description": "Validation of parameters fails when an unrecognised parameter is found.", - "hidden": true, - "help_text": "By default, when an unrecognised parameter is found, it returns a warinig." - }, - "validationLenientMode": { - "type": "boolean", - "fa_icon": "far fa-check-circle", - "description": "Validation of parameters in lenient more.", - "hidden": true, - "help_text": "Allows string values that are parseable as numbers or booleans. For further information see [JSONSchema docs](https://github.com/everit-org/json-schema#lenient-mode)." - }, "pipelines_testdata_base_path": { "type": "string", "fa_icon": "far fa-check-circle", @@ -278,19 +224,16 @@ }, "allOf": [ { - "$ref": "#/definitions/input_output_options" - }, - { - "$ref": "#/definitions/reference_genome_options" + "$ref": "#/$defs/input_output_options" }, { - "$ref": "#/definitions/institutional_config_options" + "$ref": "#/$defs/reference_genome_options" }, { - "$ref": "#/definitions/max_job_request_options" + "$ref": "#/$defs/institutional_config_options" }, { - "$ref": "#/definitions/generic_options" + "$ref": "#/$defs/generic_options" } ] } diff --git a/subworkflows/local/utils_nfcore_germline_pipeline/main.nf b/subworkflows/local/utils_nfcore_germline_pipeline/main.nf index 467e9d5f..c1395a39 100644 --- a/subworkflows/local/utils_nfcore_germline_pipeline/main.nf +++ b/subworkflows/local/utils_nfcore_germline_pipeline/main.nf @@ -8,29 +8,25 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ -include { UTILS_NFVALIDATION_PLUGIN } from '../../nf-core/utils_nfvalidation_plugin' -include { paramsSummaryMap } from 'plugin/nf-validation' -include { fromSamplesheet } from 'plugin/nf-validation' -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 { completionEmail } from '../../nf-core/utils_nfcore_pipeline' include { completionSummary } from '../../nf-core/utils_nfcore_pipeline' -include { dashedLine } from '../../nf-core/utils_nfcore_pipeline' -include { nfCoreLogo } 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 { workflowCitation } from '../../nf-core/utils_nfcore_pipeline' +include { UTILS_NEXTFLOW_PIPELINE } from '../../nf-core/utils_nextflow_pipeline' /* -======================================================================================== +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ SUBWORKFLOW TO INITIALISE PIPELINE -======================================================================================== +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ workflow PIPELINE_INITIALISATION { take: version // boolean: Display version and exit - help // boolean: Display help text validate_params // boolean: Boolean whether to validate parameters against the schema at runtime monochrome_logs // boolean: Do not use coloured log outputs nextflow_cli_args // array: List of positional nextflow CLI args @@ -51,20 +47,16 @@ workflow PIPELINE_INITIALISATION { workflow.profile.tokenize(',').intersect(['conda', 'mamba']).size() >= 1 ) + // // Validate parameters and generate parameter summary to stdout // - pre_help_text = nfCoreLogo(monochrome_logs) - post_help_text = '\n' + workflowCitation() + '\n' + dashedLine(monochrome_logs) - def String workflow_command = "nextflow run ${workflow.manifest.name} -profile --input samplesheet.csv --outdir " - UTILS_NFVALIDATION_PLUGIN ( - help, - workflow_command, - pre_help_text, - post_help_text, + UTILS_NFSCHEMA_PLUGIN ( + workflow, validate_params, - "nextflow_schema.json" + null ) + // // Check config provided to the pipeline @@ -80,8 +72,9 @@ workflow PIPELINE_INITIALISATION { // // Create channel from input file provided through params.input // + Channel - .fromSamplesheet("input") + .fromList(samplesheetToList(params.input, "${projectDir}/assets/schema_input.json")) .map { meta, fastq_1, fastq_2 -> if (!fastq_2) { @@ -91,8 +84,8 @@ workflow PIPELINE_INITIALISATION { } } .groupTuple() - .map { - validateInputSamplesheet(it) + .map { samplesheet -> + validateInputSamplesheet(samplesheet) } .map { meta, fastqs -> @@ -106,9 +99,9 @@ workflow PIPELINE_INITIALISATION { } /* -======================================================================================== +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ SUBWORKFLOW FOR PIPELINE COMPLETION -======================================================================================== +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ workflow PIPELINE_COMPLETION { @@ -117,13 +110,13 @@ workflow PIPELINE_COMPLETION { email // string: email address email_on_fail // string: email address sent on pipeline failure plaintext_email // boolean: Send plain-text email instead of HTML + outdir // path: Path to output directory where results will be published monochrome_logs // boolean: Disable ANSI colour codes in log output hook_url // string: hook URL for notifications multiqc_report // string: Path to MultiQC report main: - summary_params = paramsSummaryMap(workflow, parameters_schema: "nextflow_schema.json") // @@ -131,11 +124,18 @@ workflow PIPELINE_COMPLETION { // workflow.onComplete { if (email || email_on_fail) { - completionEmail(summary_params, email, email_on_fail, plaintext_email, outdir, monochrome_logs, multiqc_report.toList()) + completionEmail( + summary_params, + email, + email_on_fail, + plaintext_email, + outdir, + monochrome_logs, + multiqc_report.toList() + ) } completionSummary(monochrome_logs) - if (hook_url) { imNotification(summary_params, hook_url) } @@ -147,9 +147,9 @@ workflow PIPELINE_COMPLETION { } /* -======================================================================================== +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ FUNCTIONS -======================================================================================== +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ // // Check and validate pipeline parameters @@ -165,7 +165,7 @@ 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{ it.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}") } @@ -197,7 +197,6 @@ def genomeExistsError() { error(error_string) } } - // // Generate methods description for MultiQC // @@ -207,7 +206,7 @@ def toolCitationText() { // Uncomment function in methodsDescriptionText to render in MultiQC report def citation_text = [ "Tools used in the workflow included:", - "FastQC (Andrews 2010),", + "MultiQC (Ewels et al. 2016)", "." ].join(' ').trim() @@ -220,7 +219,7 @@ 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 = [ - "
  • Andrews S, (2010) FastQC, URL: https://www.bioinformatics.babraham.ac.uk/projects/fastqc/).
  • ", + "
  • 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() @@ -239,8 +238,10 @@ def methodsDescriptionText(mqc_methods_yaml) { // Removing `https://doi.org/` to handle pipelines using DOIs vs DOI resolvers // Removing ` ` since the manifest.doi is a string and not a proper list def temp_doi_ref = "" - String[] manifest_doi = meta.manifest_map.doi.tokenize(",") - for (String doi_ref: manifest_doi) temp_doi_ref += "(doi:
    ${doi_ref.replace("https://doi.org/", "").replace(" ", "")}), " + def manifest_doi = meta.manifest_map.doi.tokenize(",") + manifest_doi.each { doi_ref -> + 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"] = "" 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.
  • " @@ -261,3 +262,4 @@ def methodsDescriptionText(mqc_methods_yaml) { return description_html.toString() } + diff --git a/subworkflows/nf-core/utils_nextflow_pipeline/main.nf b/subworkflows/nf-core/utils_nextflow_pipeline/main.nf index ac31f28f..2b0dc67a 100644 --- a/subworkflows/nf-core/utils_nextflow_pipeline/main.nf +++ b/subworkflows/nf-core/utils_nextflow_pipeline/main.nf @@ -2,18 +2,13 @@ // Subworkflow with functionality that may be useful for any Nextflow pipeline // -import org.yaml.snakeyaml.Yaml -import groovy.json.JsonOutput -import nextflow.extension.FilesEx - /* -======================================================================================== +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ SUBWORKFLOW DEFINITION -======================================================================================== +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ workflow UTILS_NEXTFLOW_PIPELINE { - take: print_version // boolean: print version dump_parameters // boolean: dump parameters @@ -26,7 +21,7 @@ workflow UTILS_NEXTFLOW_PIPELINE { // Print workflow version and exit on --version // if (print_version) { - log.info "${workflow.manifest.name} ${getWorkflowVersion()}" + log.info("${workflow.manifest.name} ${getWorkflowVersion()}") System.exit(0) } @@ -49,16 +44,16 @@ workflow UTILS_NEXTFLOW_PIPELINE { } /* -======================================================================================== +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ FUNCTIONS -======================================================================================== +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ // // Generate version string // def getWorkflowVersion() { - String version_string = "" + def version_string = "" as String if (workflow.manifest.version) { def prefix_v = workflow.manifest.version[0] != 'v' ? 'v' : '' version_string += "${prefix_v}${workflow.manifest.version}" @@ -76,13 +71,13 @@ def getWorkflowVersion() { // Dump pipeline parameters to a JSON file // def dumpParametersToJSON(outdir) { - def timestamp = new java.util.Date().format( 'yyyy-MM-dd_HH-mm-ss') - def filename = "params_${timestamp}.json" - def temp_pf = new File(workflow.launchDir.toString(), ".${filename}") - def jsonStr = JsonOutput.toJson(params) - temp_pf.text = JsonOutput.prettyPrint(jsonStr) + def timestamp = new java.util.Date().format('yyyy-MM-dd_HH-mm-ss') + def filename = "params_${timestamp}.json" + def temp_pf = new File(workflow.launchDir.toString(), ".${filename}") + def jsonStr = groovy.json.JsonOutput.toJson(params) + temp_pf.text = groovy.json.JsonOutput.prettyPrint(jsonStr) - FilesEx.copyTo(temp_pf.toPath(), "${outdir}/pipeline_info/params_${timestamp}.json") + nextflow.extension.FilesEx.copyTo(temp_pf.toPath(), "${outdir}/pipeline_info/params_${timestamp}.json") temp_pf.delete() } @@ -90,37 +85,38 @@ def dumpParametersToJSON(outdir) { // When running with -profile conda, warn if channels have not been set-up appropriately // def checkCondaChannels() { - Yaml parser = new Yaml() + def parser = new org.yaml.snakeyaml.Yaml() def channels = [] try { def config = parser.load("conda config --show channels".execute().text) channels = config.channels - } catch(NullPointerException | IOException e) { - log.warn "Could not verify conda channel configuration." - return + } + catch (NullPointerException e) { + log.warn("Could not verify conda channel configuration.") + return null + } + catch (IOException e) { + log.warn("Could not verify conda channel configuration.") + return null } // Check that all channels are present // This channel list is ordered by required channel priority. - def required_channels_in_order = ['conda-forge', 'bioconda', 'defaults'] + def required_channels_in_order = ['conda-forge', 'bioconda'] def channels_missing = ((required_channels_in_order as Set) - (channels as Set)) as Boolean // Check that they are in the right order def channel_priority_violation = false - def n = required_channels_in_order.size() - for (int i = 0; i < n - 1; i++) { - channel_priority_violation |= !(channels.indexOf(required_channels_in_order[i]) < channels.indexOf(required_channels_in_order[i+1])) + + required_channels_in_order.eachWithIndex { channel, index -> + if (index < required_channels_in_order.size() - 1) { + channel_priority_violation |= !(channels.indexOf(channel) < channels.indexOf(required_channels_in_order[index + 1])) + } } if (channels_missing | channel_priority_violation) { - log.warn "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" + - " There is a problem with your Conda configuration!\n\n" + - " You will need to set-up the conda-forge and bioconda channels correctly.\n" + - " Please refer to https://bioconda.github.io/\n" + - " The observed channel order is \n" + - " ${channels}\n" + - " but the following channel order is required:\n" + - " ${required_channels_in_order}\n" + - "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" + log.warn( + "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" + " There is a problem with your Conda configuration!\n\n" + " You will need to set-up the conda-forge and bioconda channels correctly.\n" + " Please refer to https://bioconda.github.io/\n" + " The observed channel order is \n" + " ${channels}\n" + " but the following channel order is required:\n" + " ${required_channels_in_order}\n" + "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" + ) } } diff --git a/subworkflows/nf-core/utils_nextflow_pipeline/tests/nextflow.config b/subworkflows/nf-core/utils_nextflow_pipeline/tests/nextflow.config index d0a926bf..a09572e5 100644 --- a/subworkflows/nf-core/utils_nextflow_pipeline/tests/nextflow.config +++ b/subworkflows/nf-core/utils_nextflow_pipeline/tests/nextflow.config @@ -3,7 +3,7 @@ manifest { author = """nf-core""" homePage = 'https://127.0.0.1' description = """Dummy pipeline""" - nextflowVersion = '!>=23.04.0' + nextflowVersion = '!>=23.04.0' version = '9.9.9' doi = 'https://doi.org/10.5281/zenodo.5070524' } diff --git a/subworkflows/nf-core/utils_nfcore_pipeline/main.nf b/subworkflows/nf-core/utils_nfcore_pipeline/main.nf index 14558c39..b78273ca 100644 --- a/subworkflows/nf-core/utils_nfcore_pipeline/main.nf +++ b/subworkflows/nf-core/utils_nfcore_pipeline/main.nf @@ -2,17 +2,13 @@ // Subworkflow with utility functions specific to the nf-core pipeline template // -import org.yaml.snakeyaml.Yaml -import nextflow.extension.FilesEx - /* -======================================================================================== +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ SUBWORKFLOW DEFINITION -======================================================================================== +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ workflow UTILS_NFCORE_PIPELINE { - take: nextflow_cli_args @@ -25,23 +21,20 @@ workflow UTILS_NFCORE_PIPELINE { } /* -======================================================================================== +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ FUNCTIONS -======================================================================================== +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ // // Warn if a -profile or Nextflow config has not been provided to run the pipeline // def checkConfigProvided() { - valid_config = true + def valid_config = true as Boolean if (workflow.profile == 'standard' && workflow.configFiles.size() <= 1) { - log.warn "[$workflow.manifest.name] You are attempting to run the pipeline without any custom configuration!\n\n" + - "This will be dependent on your local compute environment but can be achieved via one or more of the following:\n" + - " (1) Using an existing pipeline profile e.g. `-profile docker` or `-profile singularity`\n" + - " (2) Using an existing nf-core/configs for your Institution e.g. `-profile crick` or `-profile uppmax`\n" + - " (3) Using your own local custom config e.g. `-c /path/to/your/custom.config`\n\n" + - "Please refer to the quick start section and usage docs for the pipeline.\n " + log.warn( + "[${workflow.manifest.name}] You are attempting to run the pipeline without any custom configuration!\n\n" + "This will be dependent on your local compute environment but can be achieved via one or more of the following:\n" + " (1) Using an existing pipeline profile e.g. `-profile docker` or `-profile singularity`\n" + " (2) Using an existing nf-core/configs for your Institution e.g. `-profile crick` or `-profile uppmax`\n" + " (3) Using your own local custom config e.g. `-c /path/to/your/custom.config`\n\n" + "Please refer to the quick start section and usage docs for the pipeline.\n " + ) valid_config = false } return valid_config @@ -52,12 +45,14 @@ def checkConfigProvided() { // def checkProfileProvided(nextflow_cli_args) { if (workflow.profile.endsWith(',')) { - error "The `-profile` option cannot end with a trailing comma, please remove it and re-run the pipeline!\n" + - "HINT: A common mistake is to provide multiple values separated by spaces e.g. `-profile test, docker`.\n" + error( + "The `-profile` option cannot end with a trailing comma, please remove it and re-run the pipeline!\n" + "HINT: A common mistake is to provide multiple values separated by spaces e.g. `-profile test, docker`.\n" + ) } if (nextflow_cli_args[0]) { - log.warn "nf-core pipelines do not accept positional arguments. The positional argument `${nextflow_cli_args[0]}` has been detected.\n" + - "HINT: A common mistake is to provide multiple values separated by spaces e.g. `-profile test, docker`.\n" + log.warn( + "nf-core pipelines do not accept positional arguments. The positional argument `${nextflow_cli_args[0]}` has been detected.\n" + "HINT: A common mistake is to provide multiple values separated by spaces e.g. `-profile test, docker`.\n" + ) } } @@ -66,25 +61,21 @@ def checkProfileProvided(nextflow_cli_args) { // def workflowCitation() { def temp_doi_ref = "" - String[] manifest_doi = workflow.manifest.doi.tokenize(",") + def manifest_doi = workflow.manifest.doi.tokenize(",") // Using a loop to handle multiple DOIs // Removing `https://doi.org/` to handle pipelines using DOIs vs DOI resolvers // Removing ` ` since the manifest.doi is a string and not a proper list - for (String doi_ref: manifest_doi) temp_doi_ref += " https://doi.org/${doi_ref.replace('https://doi.org/', '').replace(' ', '')}\n" - return "If you use ${workflow.manifest.name} for your analysis please cite:\n\n" + - "* The pipeline\n" + - temp_doi_ref + "\n" + - "* The nf-core framework\n" + - " https://doi.org/10.1038/s41587-020-0439-x\n\n" + - "* Software dependencies\n" + - " https://github.com/${workflow.manifest.name}/blob/master/CITATIONS.md" + manifest_doi.each { doi_ref -> + temp_doi_ref += " https://doi.org/${doi_ref.replace('https://doi.org/', '').replace(' ', '')}\n" + } + return "If you use ${workflow.manifest.name} for your analysis please cite:\n\n" + "* The pipeline\n" + temp_doi_ref + "\n" + "* The nf-core framework\n" + " https://doi.org/10.1038/s41587-020-0439-x\n\n" + "* Software dependencies\n" + " https://github.com/${workflow.manifest.name}/blob/master/CITATIONS.md" } // // Generate workflow version string // def getWorkflowVersion() { - String version_string = "" + def version_string = "" as String if (workflow.manifest.version) { def prefix_v = workflow.manifest.version[0] != 'v' ? 'v' : '' version_string += "${prefix_v}${workflow.manifest.version}" @@ -102,8 +93,8 @@ def getWorkflowVersion() { // Get software versions for pipeline // def processVersionsFromYAML(yaml_file) { - Yaml yaml = new Yaml() - versions = yaml.load(yaml_file).collectEntries { k, v -> [ k.tokenize(':')[-1], v ] } + def yaml = new org.yaml.snakeyaml.Yaml() + def versions = yaml.load(yaml_file).collectEntries { k, v -> [k.tokenize(':')[-1], v] } return yaml.dumpAsMap(versions).trim() } @@ -113,8 +104,8 @@ def processVersionsFromYAML(yaml_file) { def workflowVersionToYAML() { return """ Workflow: - $workflow.manifest.name: ${getWorkflowVersion()} - Nextflow: $workflow.nextflow.version + ${workflow.manifest.name}: ${getWorkflowVersion()} + Nextflow: ${workflow.nextflow.version} """.stripIndent().trim() } @@ -122,11 +113,7 @@ def workflowVersionToYAML() { // Get channel of software versions used in pipeline in YAML format // def softwareVersionsToYAML(ch_versions) { - return ch_versions - .unique() - .map { processVersionsFromYAML(it) } - .unique() - .mix(Channel.of(workflowVersionToYAML())) + return ch_versions.unique().map { version -> processVersionsFromYAML(version) }.unique().mix(Channel.of(workflowVersionToYAML())) } // @@ -134,25 +121,31 @@ def softwareVersionsToYAML(ch_versions) { // def paramsSummaryMultiqc(summary_params) { def summary_section = '' - for (group in summary_params.keySet()) { - def group_params = summary_params.get(group) // This gets the parameters of that particular group - if (group_params) { - summary_section += "

    $group

    \n" - summary_section += "
    \n" - for (param in group_params.keySet()) { - summary_section += "
    $param
    ${group_params.get(param) ?: 'N/A'}
    \n" + summary_params + .keySet() + .each { group -> + def group_params = summary_params.get(group) + // This gets the parameters of that particular group + if (group_params) { + summary_section += "

    ${group}

    \n" + summary_section += "
    \n" + group_params + .keySet() + .sort() + .each { param -> + summary_section += "
    ${param}
    ${group_params.get(param) ?: 'N/A'}
    \n" + } + summary_section += "
    \n" } - summary_section += "
    \n" } - } - String yaml_file_text = "id: '${workflow.manifest.name.replace('/','-')}-summary'\n" - yaml_file_text += "description: ' - this information is collected when the pipeline is started.'\n" - yaml_file_text += "section_name: '${workflow.manifest.name} Workflow Summary'\n" - yaml_file_text += "section_href: 'https://github.com/${workflow.manifest.name}'\n" - yaml_file_text += "plot_type: 'html'\n" - yaml_file_text += "data: |\n" - yaml_file_text += "${summary_section}" + def yaml_file_text = "id: '${workflow.manifest.name.replace('/', '-')}-summary'\n" as String + yaml_file_text += "description: ' - this information is collected when the pipeline is started.'\n" + yaml_file_text += "section_name: '${workflow.manifest.name} Workflow Summary'\n" + yaml_file_text += "section_href: 'https://github.com/${workflow.manifest.name}'\n" + yaml_file_text += "plot_type: 'html'\n" + yaml_file_text += "data: |\n" + yaml_file_text += "${summary_section}" return yaml_file_text } @@ -161,7 +154,7 @@ def paramsSummaryMultiqc(summary_params) { // nf-core logo // def nfCoreLogo(monochrome_logs=true) { - Map colors = logColours(monochrome_logs) + def colors = logColours(monochrome_logs) as Map String.format( """\n ${dashedLine(monochrome_logs)} @@ -180,7 +173,7 @@ def nfCoreLogo(monochrome_logs=true) { // Return dashed line // def dashedLine(monochrome_logs=true) { - Map colors = logColours(monochrome_logs) + def colors = logColours(monochrome_logs) as Map return "-${colors.dim}----------------------------------------------------${colors.reset}-" } @@ -188,7 +181,7 @@ def dashedLine(monochrome_logs=true) { // ANSII colours used for terminal logging // def logColours(monochrome_logs=true) { - Map colorcodes = [:] + def colorcodes = [:] as Map // Reset / Meta colorcodes['reset'] = monochrome_logs ? '' : "\033[0m" @@ -200,54 +193,54 @@ def logColours(monochrome_logs=true) { colorcodes['hidden'] = monochrome_logs ? '' : "\033[8m" // Regular Colors - colorcodes['black'] = monochrome_logs ? '' : "\033[0;30m" - colorcodes['red'] = monochrome_logs ? '' : "\033[0;31m" - colorcodes['green'] = monochrome_logs ? '' : "\033[0;32m" - colorcodes['yellow'] = monochrome_logs ? '' : "\033[0;33m" - colorcodes['blue'] = monochrome_logs ? '' : "\033[0;34m" - colorcodes['purple'] = monochrome_logs ? '' : "\033[0;35m" - colorcodes['cyan'] = monochrome_logs ? '' : "\033[0;36m" - colorcodes['white'] = monochrome_logs ? '' : "\033[0;37m" + colorcodes['black'] = monochrome_logs ? '' : "\033[0;30m" + colorcodes['red'] = monochrome_logs ? '' : "\033[0;31m" + colorcodes['green'] = monochrome_logs ? '' : "\033[0;32m" + colorcodes['yellow'] = monochrome_logs ? '' : "\033[0;33m" + colorcodes['blue'] = monochrome_logs ? '' : "\033[0;34m" + colorcodes['purple'] = monochrome_logs ? '' : "\033[0;35m" + colorcodes['cyan'] = monochrome_logs ? '' : "\033[0;36m" + colorcodes['white'] = monochrome_logs ? '' : "\033[0;37m" // Bold - colorcodes['bblack'] = monochrome_logs ? '' : "\033[1;30m" - colorcodes['bred'] = monochrome_logs ? '' : "\033[1;31m" - colorcodes['bgreen'] = monochrome_logs ? '' : "\033[1;32m" - colorcodes['byellow'] = monochrome_logs ? '' : "\033[1;33m" - colorcodes['bblue'] = monochrome_logs ? '' : "\033[1;34m" - colorcodes['bpurple'] = monochrome_logs ? '' : "\033[1;35m" - colorcodes['bcyan'] = monochrome_logs ? '' : "\033[1;36m" - colorcodes['bwhite'] = monochrome_logs ? '' : "\033[1;37m" + colorcodes['bblack'] = monochrome_logs ? '' : "\033[1;30m" + colorcodes['bred'] = monochrome_logs ? '' : "\033[1;31m" + colorcodes['bgreen'] = monochrome_logs ? '' : "\033[1;32m" + colorcodes['byellow'] = monochrome_logs ? '' : "\033[1;33m" + colorcodes['bblue'] = monochrome_logs ? '' : "\033[1;34m" + colorcodes['bpurple'] = monochrome_logs ? '' : "\033[1;35m" + colorcodes['bcyan'] = monochrome_logs ? '' : "\033[1;36m" + colorcodes['bwhite'] = monochrome_logs ? '' : "\033[1;37m" // Underline - colorcodes['ublack'] = monochrome_logs ? '' : "\033[4;30m" - colorcodes['ured'] = monochrome_logs ? '' : "\033[4;31m" - colorcodes['ugreen'] = monochrome_logs ? '' : "\033[4;32m" - colorcodes['uyellow'] = monochrome_logs ? '' : "\033[4;33m" - colorcodes['ublue'] = monochrome_logs ? '' : "\033[4;34m" - colorcodes['upurple'] = monochrome_logs ? '' : "\033[4;35m" - colorcodes['ucyan'] = monochrome_logs ? '' : "\033[4;36m" - colorcodes['uwhite'] = monochrome_logs ? '' : "\033[4;37m" + colorcodes['ublack'] = monochrome_logs ? '' : "\033[4;30m" + colorcodes['ured'] = monochrome_logs ? '' : "\033[4;31m" + colorcodes['ugreen'] = monochrome_logs ? '' : "\033[4;32m" + colorcodes['uyellow'] = monochrome_logs ? '' : "\033[4;33m" + colorcodes['ublue'] = monochrome_logs ? '' : "\033[4;34m" + colorcodes['upurple'] = monochrome_logs ? '' : "\033[4;35m" + colorcodes['ucyan'] = monochrome_logs ? '' : "\033[4;36m" + colorcodes['uwhite'] = monochrome_logs ? '' : "\033[4;37m" // High Intensity - colorcodes['iblack'] = monochrome_logs ? '' : "\033[0;90m" - colorcodes['ired'] = monochrome_logs ? '' : "\033[0;91m" - colorcodes['igreen'] = monochrome_logs ? '' : "\033[0;92m" - colorcodes['iyellow'] = monochrome_logs ? '' : "\033[0;93m" - colorcodes['iblue'] = monochrome_logs ? '' : "\033[0;94m" - colorcodes['ipurple'] = monochrome_logs ? '' : "\033[0;95m" - colorcodes['icyan'] = monochrome_logs ? '' : "\033[0;96m" - colorcodes['iwhite'] = monochrome_logs ? '' : "\033[0;97m" + colorcodes['iblack'] = monochrome_logs ? '' : "\033[0;90m" + colorcodes['ired'] = monochrome_logs ? '' : "\033[0;91m" + colorcodes['igreen'] = monochrome_logs ? '' : "\033[0;92m" + colorcodes['iyellow'] = monochrome_logs ? '' : "\033[0;93m" + colorcodes['iblue'] = monochrome_logs ? '' : "\033[0;94m" + colorcodes['ipurple'] = monochrome_logs ? '' : "\033[0;95m" + colorcodes['icyan'] = monochrome_logs ? '' : "\033[0;96m" + colorcodes['iwhite'] = monochrome_logs ? '' : "\033[0;97m" // Bold High Intensity - colorcodes['biblack'] = monochrome_logs ? '' : "\033[1;90m" - colorcodes['bired'] = monochrome_logs ? '' : "\033[1;91m" - colorcodes['bigreen'] = monochrome_logs ? '' : "\033[1;92m" - colorcodes['biyellow'] = monochrome_logs ? '' : "\033[1;93m" - colorcodes['biblue'] = monochrome_logs ? '' : "\033[1;94m" - colorcodes['bipurple'] = monochrome_logs ? '' : "\033[1;95m" - colorcodes['bicyan'] = monochrome_logs ? '' : "\033[1;96m" - colorcodes['biwhite'] = monochrome_logs ? '' : "\033[1;97m" + colorcodes['biblack'] = monochrome_logs ? '' : "\033[1;90m" + colorcodes['bired'] = monochrome_logs ? '' : "\033[1;91m" + colorcodes['bigreen'] = monochrome_logs ? '' : "\033[1;92m" + colorcodes['biyellow'] = monochrome_logs ? '' : "\033[1;93m" + colorcodes['biblue'] = monochrome_logs ? '' : "\033[1;94m" + colorcodes['bipurple'] = monochrome_logs ? '' : "\033[1;95m" + colorcodes['bicyan'] = monochrome_logs ? '' : "\033[1;96m" + colorcodes['biwhite'] = monochrome_logs ? '' : "\033[1;97m" return colorcodes } @@ -262,14 +255,15 @@ def attachMultiqcReport(multiqc_report) { mqc_report = multiqc_report.getVal() if (mqc_report.getClass() == ArrayList && mqc_report.size() >= 1) { if (mqc_report.size() > 1) { - log.warn "[$workflow.manifest.name] Found multiple reports from process 'MULTIQC', will use only one" + log.warn("[${workflow.manifest.name}] Found multiple reports from process 'MULTIQC', will use only one") } mqc_report = mqc_report[0] } } - } catch (all) { + } + catch (Exception all) { if (multiqc_report) { - log.warn "[$workflow.manifest.name] Could not attach MultiQC report to summary email" + log.warn("[${workflow.manifest.name}] Could not attach MultiQC report to summary email") } } return mqc_report @@ -281,26 +275,35 @@ def attachMultiqcReport(multiqc_report) { def completionEmail(summary_params, email, email_on_fail, plaintext_email, outdir, monochrome_logs=true, multiqc_report=null) { // Set up the e-mail variables - def subject = "[$workflow.manifest.name] Successful: $workflow.runName" + def subject = "[${workflow.manifest.name}] Successful: ${workflow.runName}" if (!workflow.success) { - subject = "[$workflow.manifest.name] FAILED: $workflow.runName" + subject = "[${workflow.manifest.name}] FAILED: ${workflow.runName}" } def summary = [:] - for (group in summary_params.keySet()) { - summary << summary_params[group] - } + summary_params + .keySet() + .sort() + .each { group -> + summary << summary_params[group] + } def misc_fields = [:] misc_fields['Date Started'] = workflow.start misc_fields['Date Completed'] = workflow.complete misc_fields['Pipeline script file path'] = workflow.scriptFile misc_fields['Pipeline script hash ID'] = workflow.scriptId - if (workflow.repository) misc_fields['Pipeline repository Git URL'] = workflow.repository - if (workflow.commitId) misc_fields['Pipeline repository Git Commit'] = workflow.commitId - if (workflow.revision) misc_fields['Pipeline Git branch/tag'] = workflow.revision - misc_fields['Nextflow Version'] = workflow.nextflow.version - misc_fields['Nextflow Build'] = workflow.nextflow.build + if (workflow.repository) { + misc_fields['Pipeline repository Git URL'] = workflow.repository + } + if (workflow.commitId) { + misc_fields['Pipeline repository Git Commit'] = workflow.commitId + } + if (workflow.revision) { + misc_fields['Pipeline Git branch/tag'] = workflow.revision + } + misc_fields['Nextflow Version'] = workflow.nextflow.version + misc_fields['Nextflow Build'] = workflow.nextflow.build misc_fields['Nextflow Compile Timestamp'] = workflow.nextflow.timestamp def email_fields = [:] @@ -338,39 +341,41 @@ def completionEmail(summary_params, email, email_on_fail, plaintext_email, outdi // Render the sendmail template def max_multiqc_email_size = (params.containsKey('max_multiqc_email_size') ? params.max_multiqc_email_size : 0) as nextflow.util.MemoryUnit - def smail_fields = [ email: email_address, subject: subject, email_txt: email_txt, email_html: email_html, projectDir: "${workflow.projectDir}", mqcFile: mqc_report, mqcMaxSize: max_multiqc_email_size.toBytes() ] + def smail_fields = [email: email_address, subject: subject, email_txt: email_txt, email_html: email_html, projectDir: "${workflow.projectDir}", mqcFile: mqc_report, mqcMaxSize: max_multiqc_email_size.toBytes()] def sf = new File("${workflow.projectDir}/assets/sendmail_template.txt") def sendmail_template = engine.createTemplate(sf).make(smail_fields) def sendmail_html = sendmail_template.toString() // Send the HTML e-mail - Map colors = logColours(monochrome_logs) + def colors = logColours(monochrome_logs) as Map if (email_address) { try { - if (plaintext_email) { throw GroovyException('Send plaintext e-mail, not HTML') } + if (plaintext_email) { +new org.codehaus.groovy.GroovyException('Send plaintext e-mail, not HTML') } // Try to send HTML e-mail using sendmail def sendmail_tf = new File(workflow.launchDir.toString(), ".sendmail_tmp.html") sendmail_tf.withWriter { w -> w << sendmail_html } - [ 'sendmail', '-t' ].execute() << sendmail_html - log.info "-${colors.purple}[$workflow.manifest.name]${colors.green} Sent summary e-mail to $email_address (sendmail)-" - } catch (all) { + ['sendmail', '-t'].execute() << sendmail_html + log.info("-${colors.purple}[${workflow.manifest.name}]${colors.green} Sent summary e-mail to ${email_address} (sendmail)-") + } + catch (Exception all) { // Catch failures and try with plaintext - def mail_cmd = [ 'mail', '-s', subject, '--content-type=text/html', email_address ] + def mail_cmd = ['mail', '-s', subject, '--content-type=text/html', email_address] mail_cmd.execute() << email_html - log.info "-${colors.purple}[$workflow.manifest.name]${colors.green} Sent summary e-mail to $email_address (mail)-" + log.info("-${colors.purple}[${workflow.manifest.name}]${colors.green} Sent summary e-mail to ${email_address} (mail)-") } } // Write summary e-mail HTML to a file def output_hf = new File(workflow.launchDir.toString(), ".pipeline_report.html") output_hf.withWriter { w -> w << email_html } - FilesEx.copyTo(output_hf.toPath(), "${outdir}/pipeline_info/pipeline_report.html"); + nextflow.extension.FilesEx.copyTo(output_hf.toPath(), "${outdir}/pipeline_info/pipeline_report.html") output_hf.delete() // Write summary e-mail TXT to a file def output_tf = new File(workflow.launchDir.toString(), ".pipeline_report.txt") output_tf.withWriter { w -> w << email_txt } - FilesEx.copyTo(output_tf.toPath(), "${outdir}/pipeline_info/pipeline_report.txt"); + nextflow.extension.FilesEx.copyTo(output_tf.toPath(), "${outdir}/pipeline_info/pipeline_report.txt") output_tf.delete() } @@ -378,15 +383,17 @@ def completionEmail(summary_params, email, email_on_fail, plaintext_email, outdi // Print pipeline summary on completion // def completionSummary(monochrome_logs=true) { - Map colors = logColours(monochrome_logs) + def colors = logColours(monochrome_logs) as Map if (workflow.success) { if (workflow.stats.ignoredCount == 0) { - log.info "-${colors.purple}[$workflow.manifest.name]${colors.green} Pipeline completed successfully${colors.reset}-" - } else { - log.info "-${colors.purple}[$workflow.manifest.name]${colors.yellow} Pipeline completed successfully, but with errored process(es) ${colors.reset}-" + log.info("-${colors.purple}[${workflow.manifest.name}]${colors.green} Pipeline completed successfully${colors.reset}-") + } + else { + log.info("-${colors.purple}[${workflow.manifest.name}]${colors.yellow} Pipeline completed successfully, but with errored process(es) ${colors.reset}-") } - } else { - log.info "-${colors.purple}[$workflow.manifest.name]${colors.red} Pipeline completed with errors${colors.reset}-" + } + else { + log.info("-${colors.purple}[${workflow.manifest.name}]${colors.red} Pipeline completed with errors${colors.reset}-") } } @@ -395,21 +402,30 @@ def completionSummary(monochrome_logs=true) { // def imNotification(summary_params, hook_url) { def summary = [:] - for (group in summary_params.keySet()) { - summary << summary_params[group] - } + summary_params + .keySet() + .sort() + .each { group -> + summary << summary_params[group] + } def misc_fields = [:] - misc_fields['start'] = workflow.start - misc_fields['complete'] = workflow.complete - misc_fields['scriptfile'] = workflow.scriptFile - misc_fields['scriptid'] = workflow.scriptId - if (workflow.repository) misc_fields['repository'] = workflow.repository - if (workflow.commitId) misc_fields['commitid'] = workflow.commitId - if (workflow.revision) misc_fields['revision'] = workflow.revision - misc_fields['nxf_version'] = workflow.nextflow.version - misc_fields['nxf_build'] = workflow.nextflow.build - misc_fields['nxf_timestamp'] = workflow.nextflow.timestamp + misc_fields['start'] = workflow.start + misc_fields['complete'] = workflow.complete + misc_fields['scriptfile'] = workflow.scriptFile + misc_fields['scriptid'] = workflow.scriptId + if (workflow.repository) { + misc_fields['repository'] = workflow.repository + } + if (workflow.commitId) { + misc_fields['commitid'] = workflow.commitId + } + if (workflow.revision) { + misc_fields['revision'] = workflow.revision + } + misc_fields['nxf_version'] = workflow.nextflow.version + misc_fields['nxf_build'] = workflow.nextflow.build + misc_fields['nxf_timestamp'] = workflow.nextflow.timestamp def msg_fields = [:] msg_fields['version'] = getWorkflowVersion() @@ -434,13 +450,13 @@ def imNotification(summary_params, hook_url) { def json_message = json_template.toString() // POST - def post = new URL(hook_url).openConnection(); + def post = new URL(hook_url).openConnection() post.setRequestMethod("POST") post.setDoOutput(true) post.setRequestProperty("Content-Type", "application/json") - post.getOutputStream().write(json_message.getBytes("UTF-8")); - def postRC = post.getResponseCode(); - if (! postRC.equals(200)) { - log.warn(post.getErrorStream().getText()); + post.getOutputStream().write(json_message.getBytes("UTF-8")) + def postRC = post.getResponseCode() + if (!postRC.equals(200)) { + log.warn(post.getErrorStream().getText()) } } diff --git a/subworkflows/nf-core/utils_nfschema_plugin/main.nf b/subworkflows/nf-core/utils_nfschema_plugin/main.nf new file mode 100644 index 00000000..4994303e --- /dev/null +++ b/subworkflows/nf-core/utils_nfschema_plugin/main.nf @@ -0,0 +1,46 @@ +// +// Subworkflow that uses the nf-schema plugin to validate parameters and render the parameter summary +// + +include { paramsSummaryLog } from 'plugin/nf-schema' +include { validateParameters } from 'plugin/nf-schema' + +workflow UTILS_NFSCHEMA_PLUGIN { + + take: + input_workflow // workflow: the workflow object used by nf-schema to get metadata from the workflow + validate_params // boolean: validate the parameters + parameters_schema // string: path to the parameters JSON schema. + // this has to be the same as the schema given to `validation.parametersSchema` + // when this input is empty it will automatically use the configured schema or + // "${projectDir}/nextflow_schema.json" as default. This input should not be empty + // for meta pipelines + + main: + + // + // Print parameter summary to stdout. This will display the parameters + // that differ from the default given in the JSON schema + // + if(parameters_schema) { + log.info paramsSummaryLog(input_workflow, parameters_schema:parameters_schema) + } else { + log.info paramsSummaryLog(input_workflow) + } + + // + // Validate the parameters using nextflow_schema.json or the schema + // given via the validation.parametersSchema configuration option + // + if(validate_params) { + if(parameters_schema) { + validateParameters(parameters_schema:parameters_schema) + } else { + validateParameters() + } + } + + emit: + dummy_emit = true +} + diff --git a/subworkflows/nf-core/utils_nfschema_plugin/meta.yml b/subworkflows/nf-core/utils_nfschema_plugin/meta.yml new file mode 100644 index 00000000..f7d9f028 --- /dev/null +++ b/subworkflows/nf-core/utils_nfschema_plugin/meta.yml @@ -0,0 +1,35 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/subworkflows/yaml-schema.json +name: "utils_nfschema_plugin" +description: Run nf-schema to validate parameters and create a summary of changed parameters +keywords: + - validation + - JSON schema + - plugin + - parameters + - summary +components: [] +input: + - input_workflow: + type: object + description: | + The workflow object of the used pipeline. + This object contains meta data used to create the params summary log + - validate_params: + type: boolean + description: Validate the parameters and error if invalid. + - parameters_schema: + type: string + description: | + Path to the parameters JSON schema. + This has to be the same as the schema given to the `validation.parametersSchema` config + option. When this input is empty it will automatically use the configured schema or + "${projectDir}/nextflow_schema.json" as default. The schema should not be given in this way + for meta pipelines. +output: + - dummy_emit: + type: boolean + description: Dummy emit to make nf-core subworkflows lint happy +authors: + - "@nvnieuwk" +maintainers: + - "@nvnieuwk" diff --git a/subworkflows/nf-core/utils_nfschema_plugin/tests/main.nf.test b/subworkflows/nf-core/utils_nfschema_plugin/tests/main.nf.test new file mode 100644 index 00000000..842dc432 --- /dev/null +++ b/subworkflows/nf-core/utils_nfschema_plugin/tests/main.nf.test @@ -0,0 +1,117 @@ +nextflow_workflow { + + name "Test Subworkflow UTILS_NFSCHEMA_PLUGIN" + script "../main.nf" + workflow "UTILS_NFSCHEMA_PLUGIN" + + tag "subworkflows" + tag "subworkflows_nfcore" + tag "subworkflows/utils_nfschema_plugin" + tag "plugin/nf-schema" + + config "./nextflow.config" + + test("Should run nothing") { + + when { + + params { + test_data = '' + } + + workflow { + """ + validate_params = false + input[0] = workflow + input[1] = validate_params + input[2] = "" + """ + } + } + + then { + assertAll( + { assert workflow.success } + ) + } + } + + test("Should validate params") { + + when { + + params { + test_data = '' + outdir = 1 + } + + workflow { + """ + validate_params = true + input[0] = workflow + input[1] = validate_params + input[2] = "" + """ + } + } + + then { + assertAll( + { assert workflow.failed }, + { assert workflow.stdout.any { it.contains('ERROR ~ Validation of pipeline parameters failed!') } } + ) + } + } + + test("Should run nothing - custom schema") { + + when { + + params { + test_data = '' + } + + workflow { + """ + validate_params = false + input[0] = workflow + input[1] = validate_params + input[2] = "${projectDir}/subworkflows/nf-core/utils_nfschema_plugin/tests/nextflow_schema.json" + """ + } + } + + then { + assertAll( + { assert workflow.success } + ) + } + } + + test("Should validate params - custom schema") { + + when { + + params { + test_data = '' + outdir = 1 + } + + workflow { + """ + validate_params = true + input[0] = workflow + input[1] = validate_params + input[2] = "${projectDir}/subworkflows/nf-core/utils_nfschema_plugin/tests/nextflow_schema.json" + """ + } + } + + then { + assertAll( + { assert workflow.failed }, + { assert workflow.stdout.any { it.contains('ERROR ~ Validation of pipeline parameters failed!') } } + ) + } + } +} diff --git a/subworkflows/nf-core/utils_nfschema_plugin/tests/nextflow.config b/subworkflows/nf-core/utils_nfschema_plugin/tests/nextflow.config new file mode 100644 index 00000000..0907ac58 --- /dev/null +++ b/subworkflows/nf-core/utils_nfschema_plugin/tests/nextflow.config @@ -0,0 +1,8 @@ +plugins { + id "nf-schema@2.1.0" +} + +validation { + parametersSchema = "${projectDir}/subworkflows/nf-core/utils_nfschema_plugin/tests/nextflow_schema.json" + monochromeLogs = true +} \ No newline at end of file diff --git a/subworkflows/nf-core/utils_nfvalidation_plugin/tests/nextflow_schema.json b/subworkflows/nf-core/utils_nfschema_plugin/tests/nextflow_schema.json similarity index 95% rename from subworkflows/nf-core/utils_nfvalidation_plugin/tests/nextflow_schema.json rename to subworkflows/nf-core/utils_nfschema_plugin/tests/nextflow_schema.json index 7626c1c9..331e0d2f 100644 --- a/subworkflows/nf-core/utils_nfvalidation_plugin/tests/nextflow_schema.json +++ b/subworkflows/nf-core/utils_nfschema_plugin/tests/nextflow_schema.json @@ -1,10 +1,10 @@ { - "$schema": "http://json-schema.org/draft-07/schema", + "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://raw.githubusercontent.com/./master/nextflow_schema.json", "title": ". pipeline parameters", "description": "", "type": "object", - "definitions": { + "$defs": { "input_output_options": { "title": "Input/output options", "type": "object", @@ -87,10 +87,10 @@ }, "allOf": [ { - "$ref": "#/definitions/input_output_options" + "$ref": "#/$defs/input_output_options" }, { - "$ref": "#/definitions/generic_options" + "$ref": "#/$defs/generic_options" } ] } diff --git a/subworkflows/nf-core/utils_nfvalidation_plugin/main.nf b/subworkflows/nf-core/utils_nfvalidation_plugin/main.nf deleted file mode 100644 index 2585b65d..00000000 --- a/subworkflows/nf-core/utils_nfvalidation_plugin/main.nf +++ /dev/null @@ -1,62 +0,0 @@ -// -// Subworkflow that uses the nf-validation plugin to render help text and parameter summary -// - -/* -======================================================================================== - IMPORT NF-VALIDATION PLUGIN -======================================================================================== -*/ - -include { paramsHelp } from 'plugin/nf-validation' -include { paramsSummaryLog } from 'plugin/nf-validation' -include { validateParameters } from 'plugin/nf-validation' - -/* -======================================================================================== - SUBWORKFLOW DEFINITION -======================================================================================== -*/ - -workflow UTILS_NFVALIDATION_PLUGIN { - - take: - print_help // boolean: print help - workflow_command // string: default commmand used to run pipeline - pre_help_text // string: string to be printed before help text and summary log - post_help_text // string: string to be printed after help text and summary log - validate_params // boolean: validate parameters - schema_filename // path: JSON schema file, null to use default value - - main: - - log.debug "Using schema file: ${schema_filename}" - - // Default values for strings - pre_help_text = pre_help_text ?: '' - post_help_text = post_help_text ?: '' - workflow_command = workflow_command ?: '' - - // - // Print help message if needed - // - if (print_help) { - log.info pre_help_text + paramsHelp(workflow_command, parameters_schema: schema_filename) + post_help_text - System.exit(0) - } - - // - // Print parameter summary to stdout - // - log.info pre_help_text + paramsSummaryLog(workflow, parameters_schema: schema_filename) + post_help_text - - // - // Validate parameters relative to the parameter JSON schema - // - if (validate_params){ - validateParameters(parameters_schema: schema_filename) - } - - emit: - dummy_emit = true -} diff --git a/subworkflows/nf-core/utils_nfvalidation_plugin/meta.yml b/subworkflows/nf-core/utils_nfvalidation_plugin/meta.yml deleted file mode 100644 index 3d4a6b04..00000000 --- a/subworkflows/nf-core/utils_nfvalidation_plugin/meta.yml +++ /dev/null @@ -1,44 +0,0 @@ -# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/subworkflows/yaml-schema.json -name: "UTILS_NFVALIDATION_PLUGIN" -description: Use nf-validation to initiate and validate a pipeline -keywords: - - utility - - pipeline - - initialise - - validation -components: [] -input: - - print_help: - type: boolean - description: | - Print help message and exit - - workflow_command: - type: string - description: | - The command to run the workflow e.g. "nextflow run main.nf" - - pre_help_text: - type: string - description: | - Text to print before the help message - - post_help_text: - type: string - description: | - Text to print after the help message - - validate_params: - type: boolean - description: | - Validate the parameters and error if invalid. - - schema_filename: - type: string - description: | - The filename of the schema to validate against. -output: - - dummy_emit: - type: boolean - description: | - Dummy emit to make nf-core subworkflows lint happy -authors: - - "@adamrtalbot" -maintainers: - - "@adamrtalbot" - - "@maxulysse" diff --git a/subworkflows/nf-core/utils_nfvalidation_plugin/tests/main.nf.test b/subworkflows/nf-core/utils_nfvalidation_plugin/tests/main.nf.test deleted file mode 100644 index 5784a33f..00000000 --- a/subworkflows/nf-core/utils_nfvalidation_plugin/tests/main.nf.test +++ /dev/null @@ -1,200 +0,0 @@ -nextflow_workflow { - - name "Test Workflow UTILS_NFVALIDATION_PLUGIN" - script "../main.nf" - workflow "UTILS_NFVALIDATION_PLUGIN" - tag "subworkflows" - tag "subworkflows_nfcore" - tag "plugin/nf-validation" - tag "'plugin/nf-validation'" - tag "utils_nfvalidation_plugin" - tag "subworkflows/utils_nfvalidation_plugin" - - test("Should run nothing") { - - when { - - params { - monochrome_logs = true - test_data = '' - } - - workflow { - """ - help = false - workflow_command = null - pre_help_text = null - post_help_text = null - validate_params = false - schema_filename = "$moduleTestDir/nextflow_schema.json" - - input[0] = help - input[1] = workflow_command - input[2] = pre_help_text - input[3] = post_help_text - input[4] = validate_params - input[5] = schema_filename - """ - } - } - - then { - assertAll( - { assert workflow.success } - ) - } - } - - test("Should run help") { - - - when { - - params { - monochrome_logs = true - test_data = '' - } - workflow { - """ - help = true - workflow_command = null - pre_help_text = null - post_help_text = null - validate_params = false - schema_filename = "$moduleTestDir/nextflow_schema.json" - - input[0] = help - input[1] = workflow_command - input[2] = pre_help_text - input[3] = post_help_text - input[4] = validate_params - input[5] = schema_filename - """ - } - } - - then { - assertAll( - { assert workflow.success }, - { assert workflow.exitStatus == 0 }, - { assert workflow.stdout.any { it.contains('Input/output options') } }, - { assert workflow.stdout.any { it.contains('--outdir') } } - ) - } - } - - test("Should run help with command") { - - when { - - params { - monochrome_logs = true - test_data = '' - } - workflow { - """ - help = true - workflow_command = "nextflow run noorg/doesntexist" - pre_help_text = null - post_help_text = null - validate_params = false - schema_filename = "$moduleTestDir/nextflow_schema.json" - - input[0] = help - input[1] = workflow_command - input[2] = pre_help_text - input[3] = post_help_text - input[4] = validate_params - input[5] = schema_filename - """ - } - } - - then { - assertAll( - { assert workflow.success }, - { assert workflow.exitStatus == 0 }, - { assert workflow.stdout.any { it.contains('nextflow run noorg/doesntexist') } }, - { assert workflow.stdout.any { it.contains('Input/output options') } }, - { assert workflow.stdout.any { it.contains('--outdir') } } - ) - } - } - - test("Should run help with extra text") { - - - when { - - params { - monochrome_logs = true - test_data = '' - } - workflow { - """ - help = true - workflow_command = "nextflow run noorg/doesntexist" - pre_help_text = "pre-help-text" - post_help_text = "post-help-text" - validate_params = false - schema_filename = "$moduleTestDir/nextflow_schema.json" - - input[0] = help - input[1] = workflow_command - input[2] = pre_help_text - input[3] = post_help_text - input[4] = validate_params - input[5] = schema_filename - """ - } - } - - then { - assertAll( - { assert workflow.success }, - { assert workflow.exitStatus == 0 }, - { assert workflow.stdout.any { it.contains('pre-help-text') } }, - { assert workflow.stdout.any { it.contains('nextflow run noorg/doesntexist') } }, - { assert workflow.stdout.any { it.contains('Input/output options') } }, - { assert workflow.stdout.any { it.contains('--outdir') } }, - { assert workflow.stdout.any { it.contains('post-help-text') } } - ) - } - } - - test("Should validate params") { - - when { - - params { - monochrome_logs = true - test_data = '' - outdir = 1 - } - workflow { - """ - help = false - workflow_command = null - pre_help_text = null - post_help_text = null - validate_params = true - schema_filename = "$moduleTestDir/nextflow_schema.json" - - input[0] = help - input[1] = workflow_command - input[2] = pre_help_text - input[3] = post_help_text - input[4] = validate_params - input[5] = schema_filename - """ - } - } - - then { - assertAll( - { assert workflow.failed }, - { assert workflow.stdout.any { it.contains('ERROR ~ ERROR: Validation of pipeline parameters failed!') } } - ) - } - } -} diff --git a/subworkflows/nf-core/utils_nfvalidation_plugin/tests/tags.yml b/subworkflows/nf-core/utils_nfvalidation_plugin/tests/tags.yml deleted file mode 100644 index 60b1cfff..00000000 --- a/subworkflows/nf-core/utils_nfvalidation_plugin/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -subworkflows/utils_nfvalidation_plugin: - - subworkflows/nf-core/utils_nfvalidation_plugin/** diff --git a/workflows/germline.nf b/workflows/germline.nf index 38570bb1..daaaf49a 100644 --- a/workflows/germline.nf +++ b/workflows/germline.nf @@ -4,9 +4,8 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ -include { FASTQC } from '../modules/nf-core/fastqc/main' include { MULTIQC } from '../modules/nf-core/multiqc/main' -include { paramsSummaryMap } from 'plugin/nf-validation' +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_germline_pipeline' @@ -21,32 +20,23 @@ workflow GERMLINE { take: ch_samplesheet // channel: samplesheet read in from --input - main: ch_versions = Channel.empty() ch_multiqc_files = Channel.empty() - // - // MODULE: Run FastQC - // - FASTQC ( - ch_samplesheet - ) - ch_multiqc_files = ch_multiqc_files.mix(FASTQC.out.zip.collect{it[1]}) - ch_versions = ch_versions.mix(FASTQC.out.versions.first()) - // // Collate and save software versions // softwareVersionsToYAML(ch_versions) .collectFile( storeDir: "${params.outdir}/pipeline_info", - name: 'nf_core_pipeline_software_mqc_versions.yml', + name: '' + 'pipeline_software_' + 'mqc_' + 'versions.yml', sort: true, newLine: true ).set { ch_collated_versions } + // // MODULE: MultiQC // @@ -59,18 +49,19 @@ workflow GERMLINE { 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_files = ch_multiqc_files.mix( + ch_workflow_summary.collectFile(name: 'workflow_summary_mqc.yaml')) + 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( @@ -83,12 +74,14 @@ workflow GERMLINE { ch_multiqc_files.collect(), ch_multiqc_config.toList(), ch_multiqc_custom_config.toList(), - ch_multiqc_logo.toList() + ch_multiqc_logo.toList(), + [], + [] ) - emit: - multiqc_report = MULTIQC.out.report.toList() // channel: /path/to/multiqc_report.html + emit:multiqc_report = MULTIQC.out.report.toList() // channel: /path/to/multiqc_report.html versions = ch_versions // channel: [ path(versions.yml) ] + } /* From 5f1407b930ad13e9d255996f112e305784c57956 Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Thu, 10 Oct 2024 17:31:17 +0200 Subject: [PATCH 027/167] fix weird merge conflicts --- nextflow.config | 20 +-------------- nextflow_schema.json | 3 --- workflows/germline.nf | 60 +++++++++++++++---------------------------- 3 files changed, 22 insertions(+), 61 deletions(-) diff --git a/nextflow.config b/nextflow.config index 57e94207..c7844aca 100644 --- a/nextflow.config +++ b/nextflow.config @@ -246,24 +246,6 @@ docker.registry = 'quay.io' podman.registry = 'quay.io' singularity.registry = 'quay.io' -// Nextflow plugins -plugins { - id 'nf-schema@2.1.1' // Validation of pipeline parameters and creation of an input channel from a sample sheet -} - -validation { - failUnrecognisedParams = false - lenientMode = false - defaultIgnoreParams = ['genomes','igenomes_base','test_data'] - showHiddenParams = false - help { - enabled = true - //beforeText = TODO - //afterText = TODO - command = "nextflow run nf-cmgg/germline -profile docker --input --outdir " - } -} - includeConfig !params.igenomes_ignore ? "conf/igenomes.config" : !params.genomes_ignore ? "https://raw.githubusercontent.com/nf-cmgg/configs/main/conf/Hsapiens/genomes.config" : "conf/empty_genomes.config" // Export these variables to prevent local Python/R libraries from conflicting with those in the container @@ -324,7 +306,7 @@ plugins { } validation { - defaultIgnoreParams = ["genomes"] + defaultIgnoreParams = ["genomes", "test_data", "igenomes_base"] help { enabled = true command = "nextflow run $manifest.name -profile --input samplesheet.csv --outdir " diff --git a/nextflow_schema.json b/nextflow_schema.json index 9df01107..fec5575d 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -1,11 +1,9 @@ { - "$schema": "https://json-schema.org/draft/2020-12/schema", "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://raw.githubusercontent.com/nf-cmgg/germline/master/nextflow_schema.json", "title": "nf-cmgg/germline pipeline parameters", "description": "A nextflow pipeline for calling and annotating small germline variants from short DNA reads for WES and WGS data", "type": "object", - "$defs": { "$defs": { "input_output_options": { "title": "Input/output options", @@ -678,7 +676,6 @@ }, { "$ref": "#/$defs/institutional_config_options" - "$ref": "#/$defs/institutional_config_options" }, { "$ref": "#/$defs/generic_options" diff --git a/workflows/germline.nf b/workflows/germline.nf index a12281dc..c85a03c9 100644 --- a/workflows/germline.nf +++ b/workflows/germline.nf @@ -736,12 +736,11 @@ workflow GERMLINE { // softwareVersionsToYAML(ch_versions) .collectFile( - storeDir: "${params.outdir}/pipeline_info", + storeDir: "${outdir}/pipeline_info", name: '' + 'pipeline_software_' + 'mqc_' + 'versions.yml', sort: true, newLine: true - ).set { ch_collated_versions } - .collectFile(storeDir: "${outdir}/pipeline_info", name: 'nf_core_pipeline_software_mqc_versions.yml', sort: true, newLine: true) + ) .set { ch_collated_versions } @@ -750,45 +749,31 @@ workflow GERMLINE { // ch_multiqc_config = Channel.fromPath( - "$projectDir/assets/multiqc_config.yml", checkIfExists: true) + "$projectDir/assets/multiqc_config.yml", checkIfExists: true) ch_multiqc_custom_config = multiqc_config ? - Channel.fromPath(multiqc_config, checkIfExists: true) : - Channel.empty() + Channel.fromPath(multiqc_config, checkIfExists: true) : + Channel.empty() ch_multiqc_logo = multiqc_logo ? - Channel.fromPath(multiqc_logo, checkIfExists: true) : - Channel.empty() - - - summary_params = paramsSummaryMap( - - summary_params = paramsSummaryMap( - workflow, parameters_schema: "nextflow_schema.json") - ch_workflow_summary = Channel.value(paramsSummaryMultiqc(summary_params)) - ch_multiqc_files = ch_multiqc_files.mix( - ch_workflow_summary.collectFile(name: 'workflow_summary_mqc.yaml')) - - ch_multiqc_custom_methods_description = params.multiqc_methods_description ? - file(params.multiqc_methods_description, checkIfExists: true) : - ch_workflow_summary = Channel.value(paramsSummaryMultiqc(summary_params)) + Channel.fromPath(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 = multiqc_methods_description ? - file(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)) + file(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_collated_versions) - ch_multiqc_files = ch_multiqc_files.mix( 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 - ) - ) - ch_multiqc_files = ch_multiqc_files.mix(ch_reports) + ch_workflow_summary.collectFile(name: 'workflow_summary_mqc.yaml'), + ch_collated_versions, + ch_methods_description.collectFile( + name: 'methods_description_mqc.yaml', + sort: false + ), + ch_reports + ) + MULTIQC ( ch_multiqc_files.collect(), @@ -797,9 +782,6 @@ workflow GERMLINE { ch_multiqc_logo.toList(), [], [] - ch_multiqc_logo.toList(), - [], - [] ) emit:multiqc_report = MULTIQC.out.report.toList() // channel: /path/to/multiqc_report.html From 0b1d16a27187b764569cea066dd1470a6bee4126 Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Thu, 10 Oct 2024 17:34:49 +0200 Subject: [PATCH 028/167] add cmgg ascii art --- nextflow.config | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/nextflow.config b/nextflow.config index c7844aca..dad31c90 100644 --- a/nextflow.config +++ b/nextflow.config @@ -312,7 +312,16 @@ validation { command = "nextflow run $manifest.name -profile --input samplesheet.csv --outdir " fullParameter = "help_full" showHiddenParameter = "show_hidden" - + beforeText = """ +-\033[2m----------------------------------------------------\033[0m- + \033[0;34m ///\033[0;32m/// \033[0m +\033[0;34m ___ __ _ _ __ __ \033[0;34m ///\033[0;32m///// \033[0m +\033[0;34m |\\ | |__ __ / ` | \\/ | / _` / _` \033[0;34m////\033[0;32m////// \033[0m +\033[0;34m | \\| | \\__, | | \\__| \\__| \033[0;34m///\033[0;32m///// \033[0m + \033[0;34m///\033[0;32m/// \033[0m +\033[0;35m ${manifest.name} ${manifest.version}\033[0m +-\033[2m----------------------------------------------------\033[0m- +""" } } From 8155cde313e7b6c600071c11ac700b1f74558c28 Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Thu, 10 Oct 2024 17:40:10 +0200 Subject: [PATCH 029/167] pre-commit --- CHANGELOG.md | 1 + main.nf | 2 +- nextflow.config | 12 ++++++------ .../local/utils_cmgg_germline_pipeline/main.nf | 7 +++---- 4 files changed, 11 insertions(+), 11 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d24639c2..e77b12a8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changes 1. Added the `--squash-ploidy` argument to the RTG vcfeval process. +2. Update to nf-core v3.0.1 ### Fixes diff --git a/main.nf b/main.nf index 0841134b..aa5fd56f 100644 --- a/main.nf +++ b/main.nf @@ -208,7 +208,7 @@ workflow { params.genome, params.watchdir ) - + // // WORKFLOW: Run main workflow // diff --git a/nextflow.config b/nextflow.config index dad31c90..be6dfaf1 100644 --- a/nextflow.config +++ b/nextflow.config @@ -314,14 +314,14 @@ validation { showHiddenParameter = "show_hidden" beforeText = """ -\033[2m----------------------------------------------------\033[0m- - \033[0;34m ///\033[0;32m/// \033[0m -\033[0;34m ___ __ _ _ __ __ \033[0;34m ///\033[0;32m///// \033[0m -\033[0;34m |\\ | |__ __ / ` | \\/ | / _` / _` \033[0;34m////\033[0;32m////// \033[0m -\033[0;34m | \\| | \\__, | | \\__| \\__| \033[0;34m///\033[0;32m///// \033[0m - \033[0;34m///\033[0;32m/// \033[0m + \033[0;34m ///\033[0;32m/// \033[0m +\033[0;34m ___ __ _ _ __ __ \033[0;34m ///\033[0;32m///// \033[0m +\033[0;34m |\\ | |__ __ / ` | \\/ | / _` / _` \033[0;34m////\033[0;32m////// \033[0m +\033[0;34m | \\| | \\__, | | \\__| \\__| \033[0;34m///\033[0;32m///// \033[0m + \033[0;34m///\033[0;32m/// \033[0m \033[0;35m ${manifest.name} ${manifest.version}\033[0m -\033[2m----------------------------------------------------\033[0m- -""" +""" } } diff --git a/subworkflows/local/utils_cmgg_germline_pipeline/main.nf b/subworkflows/local/utils_cmgg_germline_pipeline/main.nf index 012dd657..a736397c 100644 --- a/subworkflows/local/utils_cmgg_germline_pipeline/main.nf +++ b/subworkflows/local/utils_cmgg_germline_pipeline/main.nf @@ -51,7 +51,7 @@ workflow PIPELINE_INITIALISATION { workflow.profile.tokenize(',').intersect(['conda', 'mamba']).size() >= 1 ) - + // // Validate parameters and generate parameter summary to stdout // @@ -60,7 +60,7 @@ workflow PIPELINE_INITIALISATION { validate_params, null ) - + // // Check config provided to the pipeline @@ -104,7 +104,7 @@ workflow PIPELINE_COMPLETION { email // string: email address email_on_fail // string: email address sent on pipeline failure plaintext_email // boolean: Send plain-text email instead of HTML - + outdir // path: Path to output directory where results will be published monochrome_logs // boolean: Disable ANSI colour codes in log output hook_url // string: hook URL for notifications @@ -192,7 +192,6 @@ def toolCitationText() { def toolBibliographyText() { 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() From 30a6abe68a9acb52dc8950bd98409c5f764feee2 Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Fri, 11 Oct 2024 10:48:27 +0200 Subject: [PATCH 030/167] make nf-core lint happy --- modules.json | 6 +- modules/nf-core/multiqc/environment.yml | 2 +- modules/nf-core/multiqc/main.nf | 4 +- modules/nf-core/multiqc/meta.yml | 59 ++++++++++--------- .../nf-core/multiqc/tests/main.nf.test.snap | 26 ++++---- nextflow_schema.json | 2 +- .../nf-core/utils_nextflow_pipeline/main.nf | 16 ++--- .../nf-core/utils_nfcore_pipeline/main.nf | 10 ++-- 8 files changed, 60 insertions(+), 65 deletions(-) diff --git a/modules.json b/modules.json index c3fc686a..82de0068 100644 --- a/modules.json +++ b/modules.json @@ -120,7 +120,7 @@ }, "multiqc": { "branch": "master", - "git_sha": "06c8865e36741e05ad32ef70ab3fac127486af48", + "git_sha": "b8d36829fa84b6e404364abff787e8b07f6d058c", "installed_by": ["modules"] }, "rtgtools/format": { @@ -221,12 +221,12 @@ "nf-core": { "utils_nextflow_pipeline": { "branch": "master", - "git_sha": "d20fb2a9cc3e2835e9d067d1046a63252eb17352", + "git_sha": "1b6b9a3338d011367137808b49b923515080e3ba", "installed_by": ["subworkflows"] }, "utils_nfcore_pipeline": { "branch": "master", - "git_sha": "2fdce49d30c0254f76bc0f13c55c17455c1251ab", + "git_sha": "1b6b9a3338d011367137808b49b923515080e3ba", "installed_by": ["subworkflows"] }, "utils_nfschema_plugin": { diff --git a/modules/nf-core/multiqc/environment.yml b/modules/nf-core/multiqc/environment.yml index f1cd99b0..6f5b867b 100644 --- a/modules/nf-core/multiqc/environment.yml +++ b/modules/nf-core/multiqc/environment.yml @@ -2,4 +2,4 @@ channels: - conda-forge - bioconda dependencies: - - bioconda::multiqc=1.24.1 + - bioconda::multiqc=1.25.1 diff --git a/modules/nf-core/multiqc/main.nf b/modules/nf-core/multiqc/main.nf index ceaec139..9724d2f3 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://depot.galaxyproject.org/singularity/multiqc:1.24.1--pyhdfd78af_0' : - 'biocontainers/multiqc:1.24.1--pyhdfd78af_0' }" + 'https://depot.galaxyproject.org/singularity/multiqc:1.25.1--pyhdfd78af_0' : + 'biocontainers/multiqc:1.25.1--pyhdfd78af_0' }" input: path multiqc_files, stageAs: "?/*" diff --git a/modules/nf-core/multiqc/meta.yml b/modules/nf-core/multiqc/meta.yml index 6f64c06f..b16c1879 100644 --- a/modules/nf-core/multiqc/meta.yml +++ b/modules/nf-core/multiqc/meta.yml @@ -15,35 +15,36 @@ tools: licence: ["GPL-3.0-or-later"] identifier: biotools:multiqc input: - - multiqc_files: - type: file - description: | - List of reports / files recognised by MultiQC, for example the html and zip output of FastQC - - multiqc_config: - type: file - description: Optional config yml for MultiQC - pattern: "*.{yml,yaml}" - - extra_multiqc_config: - type: file - description: Second optional config yml for MultiQC. Will override common sections in multiqc_config. - pattern: "*.{yml,yaml}" - - multiqc_logo: - type: file - description: Optional logo file for MultiQC - pattern: "*.{png}" - - replace_names: - type: file - description: | - Optional two-column sample renaming file. First column a set of - patterns, second column a set of corresponding replacements. Passed via - MultiQC's `--replace-names` option. - pattern: "*.{tsv}" - - sample_names: - type: file - description: | - Optional TSV file with headers, passed to the MultiQC --sample_names - argument. - pattern: "*.{tsv}" + - - multiqc_files: + type: file + description: | + List of reports / files recognised by MultiQC, for example the html and zip output of FastQC + - - multiqc_config: + type: file + description: Optional config yml for MultiQC + pattern: "*.{yml,yaml}" + - - extra_multiqc_config: + type: file + description: Second optional config yml for MultiQC. Will override common sections + in multiqc_config. + pattern: "*.{yml,yaml}" + - - multiqc_logo: + type: file + description: Optional logo file for MultiQC + pattern: "*.{png}" + - - replace_names: + type: file + description: | + Optional two-column sample renaming file. First column a set of + patterns, second column a set of corresponding replacements. Passed via + MultiQC's `--replace-names` option. + pattern: "*.{tsv}" + - - sample_names: + type: file + description: | + Optional TSV file with headers, passed to the MultiQC --sample_names + argument. + pattern: "*.{tsv}" output: - report: - "*multiqc_report.html": diff --git a/modules/nf-core/multiqc/tests/main.nf.test.snap b/modules/nf-core/multiqc/tests/main.nf.test.snap index 83fa080c..2fcbb5ff 100644 --- a/modules/nf-core/multiqc/tests/main.nf.test.snap +++ b/modules/nf-core/multiqc/tests/main.nf.test.snap @@ -2,14 +2,14 @@ "multiqc_versions_single": { "content": [ [ - "versions.yml:md5,6eb13f3b11bbcbfc98ad3166420ff760" + "versions.yml:md5,41f391dcedce7f93ca188f3a3ffa0916" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-07-10T12:41:34.562023" + "timestamp": "2024-10-02T17:51:46.317523" }, "multiqc_stub": { "content": [ @@ -17,25 +17,25 @@ "multiqc_report.html", "multiqc_data", "multiqc_plots", - "versions.yml:md5,6eb13f3b11bbcbfc98ad3166420ff760" + "versions.yml:md5,41f391dcedce7f93ca188f3a3ffa0916" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-07-10T11:27:11.933869532" + "timestamp": "2024-10-02T17:52:20.680978" }, "multiqc_versions_config": { "content": [ [ - "versions.yml:md5,6eb13f3b11bbcbfc98ad3166420ff760" + "versions.yml:md5,41f391dcedce7f93ca188f3a3ffa0916" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-07-10T11:26:56.709849369" + "timestamp": "2024-10-02T17:52:09.185842" } -} +} \ No newline at end of file diff --git a/nextflow_schema.json b/nextflow_schema.json index fec5575d..53129997 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -379,7 +379,7 @@ "description": "Display help text. Give a parameter name to this option to see the detailed help of that parameter.", "fa_icon": "fas fa-question-circle" }, - "helpFull": { + "help_full": { "type": "boolean", "description": "See the full help message of all parameters.", "fa_icon": "fas fa-question-circle" diff --git a/subworkflows/nf-core/utils_nextflow_pipeline/main.nf b/subworkflows/nf-core/utils_nextflow_pipeline/main.nf index 2b0dc67a..b17b8774 100644 --- a/subworkflows/nf-core/utils_nextflow_pipeline/main.nf +++ b/subworkflows/nf-core/utils_nextflow_pipeline/main.nf @@ -3,9 +3,9 @@ // /* -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ SUBWORKFLOW DEFINITION -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ workflow UTILS_NEXTFLOW_PIPELINE { @@ -44,9 +44,9 @@ workflow UTILS_NEXTFLOW_PIPELINE { } /* -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ FUNCTIONS -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ // @@ -106,13 +106,7 @@ def checkCondaChannels() { def channels_missing = ((required_channels_in_order as Set) - (channels as Set)) as Boolean // Check that they are in the right order - def channel_priority_violation = false - - required_channels_in_order.eachWithIndex { channel, index -> - if (index < required_channels_in_order.size() - 1) { - channel_priority_violation |= !(channels.indexOf(channel) < channels.indexOf(required_channels_in_order[index + 1])) - } - } + def channel_priority_violation = required_channels_in_order != channels.findAll { ch -> ch in required_channels_in_order } if (channels_missing | channel_priority_violation) { log.warn( diff --git a/subworkflows/nf-core/utils_nfcore_pipeline/main.nf b/subworkflows/nf-core/utils_nfcore_pipeline/main.nf index b78273ca..5cb7bafe 100644 --- a/subworkflows/nf-core/utils_nfcore_pipeline/main.nf +++ b/subworkflows/nf-core/utils_nfcore_pipeline/main.nf @@ -3,9 +3,9 @@ // /* -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ SUBWORKFLOW DEFINITION -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ workflow UTILS_NFCORE_PIPELINE { @@ -21,9 +21,9 @@ workflow UTILS_NFCORE_PIPELINE { } /* -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ FUNCTIONS -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ // @@ -62,7 +62,7 @@ def checkProfileProvided(nextflow_cli_args) { def workflowCitation() { def temp_doi_ref = "" def manifest_doi = workflow.manifest.doi.tokenize(",") - // Using a loop to handle multiple DOIs + // Handling multiple DOIs // Removing `https://doi.org/` to handle pipelines using DOIs vs DOI resolvers // Removing ` ` since the manifest.doi is a string and not a proper list manifest_doi.each { doi_ref -> From 5d7dfec379b23522e3f018f449a9f16013d1b2f9 Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Fri, 11 Oct 2024 11:00:03 +0200 Subject: [PATCH 031/167] revert base.config --- conf/base.config | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/conf/base.config b/conf/base.config index f6500dea..1240cc86 100644 --- a/conf/base.config +++ b/conf/base.config @@ -12,7 +12,7 @@ process { // TODO nf-core: Check the defaults for all processes cpus = { 1 * task.attempt } - memory = { 6.GB * task.attempt } + memory = { 8.GB * task.attempt } time = { 4.h * task.attempt } errorStrategy = { task.exitStatus in ((130..145) + 104) ? 'retry' : 'finish' } @@ -22,22 +22,22 @@ process { // Process-specific resource requirements withLabel:process_single { cpus = { 1 } - memory = { 6.GB * task.attempt } + memory = { 8.GB * task.attempt } time = { 4.h * task.attempt } } withLabel:process_low { cpus = { 2 * task.attempt } - memory = { 12.GB * task.attempt } + memory = { 16.GB * task.attempt } time = { 4.h * task.attempt } } withLabel:process_medium { - cpus = { 6 * task.attempt } - memory = { 36.GB * task.attempt } + cpus = { 4 * task.attempt } + memory = { 32.GB * task.attempt } time = { 8.h * task.attempt } } withLabel:process_high { - cpus = { 12 * task.attempt } - memory = { 72.GB * task.attempt } + cpus = { 8 * task.attempt } + memory = { 64.GB * task.attempt } time = { 16.h * task.attempt } } withLabel:process_long { From 24d45182054e26a0ede6ff5105895fa356fd22ef Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Fri, 11 Oct 2024 11:24:30 +0200 Subject: [PATCH 032/167] bump all modules --- modules.json | 74 +++--- modules/nf-core/bcftools/annotate/meta.yml | 91 ++++---- modules/nf-core/bcftools/norm/meta.yml | 102 +++++---- .../nf-core/bcftools/pluginscatter/meta.yml | 127 ++++++----- modules/nf-core/bcftools/query/meta.yml | 82 +++---- modules/nf-core/bcftools/reheader/meta.yml | 91 ++++---- modules/nf-core/bcftools/sort/meta.yml | 71 +++--- modules/nf-core/bcftools/stats/meta.yml | 124 ++++++---- modules/nf-core/bedtools/intersect/meta.yml | 70 +++--- .../bedtools/intersect/tests/main.nf.test | 90 ++++++++ .../intersect/tests/main.nf.test.snap | 101 +++++++++ .../bedtools/intersect/tests/nextflow.config | 5 + .../nf-core/bedtools/intersect/tests/tags.yml | 2 + modules/nf-core/bedtools/merge/meta.yml | 46 ++-- modules/nf-core/bedtools/split/meta.yml | 48 ++-- .../download/ensemblvep-download.diff | 13 +- modules/nf-core/ensemblvep/download/meta.yml | 56 +++-- .../ensemblvep/vep/ensemblvep-vep.diff | 12 +- .../nf-core/ensemblvep/vep/environment.yml | 1 - modules/nf-core/ensemblvep/vep/meta.yml | 148 ++++++------ .../gatk4/calibratedragstrmodel/meta.yml | 95 ++++---- .../gatk4/composestrtablefile/meta.yml | 45 ++-- .../gatk4/createsequencedictionary/meta.yml | 37 +-- .../nf-core/gatk4/genomicsdbimport/meta.yml | 139 ++++++++---- modules/nf-core/gatk4/genotypegvcfs/meta.yml | 170 +++++++------- modules/nf-core/gatk4/haplotypecaller/main.nf | 1 + .../nf-core/gatk4/haplotypecaller/meta.yml | 178 ++++++++------- modules/nf-core/gawk/meta.yml | 56 +++-- modules/nf-core/mosdepth/meta.yml | 214 ++++++++++++------ modules/nf-core/rtgtools/format/meta.yml | 69 +++--- modules/nf-core/rtgtools/pedfilter/meta.yml | 52 +++-- modules/nf-core/rtgtools/rocplot/meta.yml | 63 +++--- .../rtgtools/rocplot/tests/main.nf.test | 4 +- .../nf-core/samtools/convert/environment.yml | 6 +- modules/nf-core/samtools/convert/main.nf | 4 +- modules/nf-core/samtools/convert/meta.yml | 111 +++++---- .../samtools/convert/tests/main.nf.test.snap | 26 +-- .../nf-core/samtools/faidx/environment.yml | 10 +- modules/nf-core/samtools/faidx/main.nf | 4 +- modules/nf-core/samtools/faidx/meta.yml | 85 ++++--- .../samtools/faidx/tests/main.nf.test.snap | 50 ++-- .../nf-core/samtools/index/environment.yml | 6 +- modules/nf-core/samtools/index/main.nf | 4 +- modules/nf-core/samtools/index/meta.yml | 68 +++--- .../samtools/index/tests/main.nf.test.snap | 46 ++-- .../nf-core/samtools/merge/environment.yml | 6 +- modules/nf-core/samtools/merge/main.nf | 4 +- modules/nf-core/samtools/merge/meta.yml | 117 ++++++---- .../samtools/merge/tests/main.nf.test.snap | 32 +-- modules/nf-core/snpeff/snpeff/meta.yml | 96 +++++--- .../nf-core/snpeff/snpeff/tests/main.nf.test | 4 +- .../snpeff/snpeff/tests/nextflow.config | 3 +- modules/nf-core/somalier/extract/meta.yml | 109 ++++----- modules/nf-core/somalier/relate/meta.yml | 85 ++++--- modules/nf-core/tabix/bgzip/environment.yml | 3 +- modules/nf-core/tabix/bgzip/meta.yml | 53 +++-- .../nf-core/tabix/bgziptabix/environment.yml | 3 +- modules/nf-core/tabix/bgziptabix/main.nf | 5 +- modules/nf-core/tabix/bgziptabix/meta.yml | 70 +++--- .../tabix/bgziptabix/tests/main.nf.test | 29 +++ .../tabix/bgziptabix/tests/main.nf.test.snap | 73 ++++-- modules/nf-core/tabix/tabix/environment.yml | 3 - modules/nf-core/tabix/tabix/meta.yml | 55 +++-- modules/nf-core/untar/environment.yml | 2 - modules/nf-core/untar/meta.yml | 43 ++-- modules/nf-core/vardictjava/main.nf | 12 +- modules/nf-core/vardictjava/meta.yml | 98 ++++---- .../nf-core/vardictjava/tests/main.nf.test | 77 ++++++- .../vardictjava/tests/main.nf.test.snap | 78 ++++++- .../nf-core/vardictjava/tests/nextflow.config | 3 + modules/nf-core/vcf2db/meta.yml | 53 +++-- modules/nf-core/vcfanno/meta.yml | 86 +++---- 72 files changed, 2495 insertions(+), 1604 deletions(-) create mode 100644 modules/nf-core/bedtools/intersect/tests/main.nf.test create mode 100644 modules/nf-core/bedtools/intersect/tests/main.nf.test.snap create mode 100644 modules/nf-core/bedtools/intersect/tests/nextflow.config create mode 100644 modules/nf-core/bedtools/intersect/tests/tags.yml create mode 100644 modules/nf-core/vardictjava/tests/nextflow.config diff --git a/modules.json b/modules.json index 82de0068..3b79c49f 100644 --- a/modules.json +++ b/modules.json @@ -7,7 +7,7 @@ "nf-core": { "bcftools/annotate": { "branch": "master", - "git_sha": "88ae68490e8f2478a1e1bbeedac970fd7cc73022", + "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", "installed_by": ["modules"], "patch": "modules/nf-core/bcftools/annotate/bcftools-annotate.diff" }, @@ -23,99 +23,99 @@ }, "bcftools/norm": { "branch": "master", - "git_sha": "f6cc00f107826cfaf1c933297b10ed1757b41479", + "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", "installed_by": ["modules"] }, "bcftools/pluginscatter": { "branch": "master", - "git_sha": "33ef773a7ea36e88323902f63662aa53c9b88988", + "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", "installed_by": ["vcf_annotate_ensemblvep_snpeff"] }, "bcftools/query": { "branch": "master", - "git_sha": "34ac993e081b32d2170ab790d0386b74122f9d36", + "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", "installed_by": ["modules"] }, "bcftools/reheader": { "branch": "master", - "git_sha": "c32611ac6813055b9321d2827678e2f8aebcb394", + "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", "installed_by": ["modules"] }, "bcftools/sort": { "branch": "master", - "git_sha": "cdf83b18471db290a28fe98c2a0852cb05864890", + "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", "installed_by": ["vcf_annotate_ensemblvep_snpeff"] }, "bcftools/stats": { "branch": "master", - "git_sha": "a5ba4d59c2b248c0379b0f8aeb4e7e754566cd1f", + "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", "installed_by": ["modules"] }, "bedtools/intersect": { "branch": "master", - "git_sha": "06c8865e36741e05ad32ef70ab3fac127486af48", + "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", "installed_by": ["modules"] }, "bedtools/merge": { "branch": "master", - "git_sha": "a3d614e4a7b8691a259bcfe33ad80903217d6215", + "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", "installed_by": ["modules"] }, "bedtools/split": { "branch": "master", - "git_sha": "6dc8a32e32158bb4d3f9af92c802233b5d4f8e4d", + "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", "installed_by": ["modules"] }, "ensemblvep/download": { "branch": "master", - "git_sha": "54c183cba37cac58860d9967feaae54acf9cc3e0", + "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", "installed_by": ["modules"], "patch": "modules/nf-core/ensemblvep/download/ensemblvep-download.diff" }, "ensemblvep/vep": { "branch": "master", - "git_sha": "54c183cba37cac58860d9967feaae54acf9cc3e0", + "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", "installed_by": ["vcf_annotate_ensemblvep_snpeff"], "patch": "modules/nf-core/ensemblvep/vep/ensemblvep-vep.diff" }, "gatk4/calibratedragstrmodel": { "branch": "master", - "git_sha": "3f42e07a1133064c569b0dbe182979527bca9e59", + "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", "installed_by": ["modules"] }, "gatk4/composestrtablefile": { "branch": "master", - "git_sha": "926e2f394d01c71d3abbdbca9c588630bfe51abf", + "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", "installed_by": ["modules"] }, "gatk4/createsequencedictionary": { "branch": "master", - "git_sha": "e6fe277739f5894711405af3e717b2470bd956b5", + "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", "installed_by": ["modules"] }, "gatk4/genomicsdbimport": { "branch": "master", - "git_sha": "4e5f4687318f24ba944a13609d3ea6ebd890737d", + "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", "installed_by": ["modules"] }, "gatk4/genotypegvcfs": { "branch": "master", - "git_sha": "8b74c800af3d91e0d7bfbecb902308dc4369071c", + "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", "installed_by": ["modules"] }, "gatk4/haplotypecaller": { "branch": "master", - "git_sha": "c332ea831f95f750be962c4b5de655f7a1e6e245", + "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", "installed_by": ["modules"] }, "gawk": { "branch": "master", - "git_sha": "cf3ed075695639b0a0924eb0901146df1996dc08", + "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", "installed_by": ["modules"] }, "mosdepth": { "branch": "master", - "git_sha": "9bfc81874554e87740bcb3e5e07acf0a153c9ecb", + "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", "installed_by": ["modules"] }, "multiqc": { @@ -125,18 +125,18 @@ }, "rtgtools/format": { "branch": "master", - "git_sha": "e743b2dea725bcfc4b76a209981808987332013a", + "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", "installed_by": ["modules"] }, "rtgtools/pedfilter": { "branch": "master", - "git_sha": "c1c2a770cfb0bfbf093a2434a27f091ebbc65987", + "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", "installed_by": ["modules"], "patch": "modules/nf-core/rtgtools/pedfilter/rtgtools-pedfilter.diff" }, "rtgtools/rocplot": { "branch": "master", - "git_sha": "64770369d851c45c364e410e052ef9a6c3a7d2bb", + "git_sha": "83e2df1e4ec594beb8a575b4db0b4197900f4ebd", "installed_by": ["modules"] }, "rtgtools/vcfeval": { @@ -146,73 +146,73 @@ }, "samtools/convert": { "branch": "master", - "git_sha": "04fbbc7c43cebc0b95d5b126f6d9fe4effa33519", + "git_sha": "b13f07be4c508d6ff6312d354d09f2493243e208", "installed_by": ["modules"] }, "samtools/faidx": { "branch": "master", - "git_sha": "04fbbc7c43cebc0b95d5b126f6d9fe4effa33519", + "git_sha": "b13f07be4c508d6ff6312d354d09f2493243e208", "installed_by": ["modules"] }, "samtools/index": { "branch": "master", - "git_sha": "46eca555142d6e597729fcb682adcc791796f514", + "git_sha": "b13f07be4c508d6ff6312d354d09f2493243e208", "installed_by": ["modules"] }, "samtools/merge": { "branch": "master", - "git_sha": "04fbbc7c43cebc0b95d5b126f6d9fe4effa33519", + "git_sha": "b13f07be4c508d6ff6312d354d09f2493243e208", "installed_by": ["modules"] }, "snpeff/snpeff": { "branch": "master", - "git_sha": "3ad7292d9b8da881386e9d5b58364d7da489b38b", + "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", "installed_by": ["vcf_annotate_ensemblvep_snpeff"] }, "somalier/extract": { "branch": "master", - "git_sha": "458c882987320e27fc90723ec96c127a243a5497", + "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", "installed_by": ["modules"] }, "somalier/relate": { "branch": "master", - "git_sha": "458c882987320e27fc90723ec96c127a243a5497", + "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", "installed_by": ["modules"], "patch": "modules/nf-core/somalier/relate/somalier-relate.diff" }, "tabix/bgzip": { "branch": "master", - "git_sha": "b20be35facfc5acdc1259f132ed79339d79e989f", + "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", "installed_by": ["modules"] }, "tabix/bgziptabix": { "branch": "master", - "git_sha": "0840b387799172e77510393ed09e4d4ec1bc6d7c", + "git_sha": "f448e846bdadd80fc8be31fbbc78d9f5b5131a45", "installed_by": ["modules"] }, "tabix/tabix": { "branch": "master", - "git_sha": "0840b387799172e77510393ed09e4d4ec1bc6d7c", + "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", "installed_by": ["modules", "vcf_annotate_ensemblvep_snpeff"] }, "untar": { "branch": "master", - "git_sha": "4e5f4687318f24ba944a13609d3ea6ebd890737d", + "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", "installed_by": ["modules"] }, "vardictjava": { "branch": "master", - "git_sha": "e61e5a13ef49c5595986bd31efb85c3f0709a282", + "git_sha": "f85452fcbebab5dfd77c0752236f6f86e9a03b32", "installed_by": ["modules"] }, "vcf2db": { "branch": "master", - "git_sha": "730f3aee80d5f8d0b5fc532202ac59361414d006", + "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", "installed_by": ["modules"] }, "vcfanno": { "branch": "master", - "git_sha": "9a8bba5910982ae637dedb8664e3121db77e173f", + "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", "installed_by": ["modules"] } } diff --git a/modules/nf-core/bcftools/annotate/meta.yml b/modules/nf-core/bcftools/annotate/meta.yml index 248eee0c..5bfccd2b 100644 --- a/modules/nf-core/bcftools/annotate/meta.yml +++ b/modules/nf-core/bcftools/annotate/meta.yml @@ -13,49 +13,64 @@ tools: documentation: https://samtools.github.io/bcftools/bcftools.html#annotate doi: 10.1093/bioinformatics/btp352 licence: ["MIT"] + identifier: biotools:bcftools input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - input: - type: file - description: Query VCF or BCF file, can be either uncompressed or compressed - - index: - type: file - description: Index of the query VCF or BCF file - - annotations: - type: file - description: Bgzip-compressed file with annotations - - annotations_index: - type: file - description: Index of the annotations file - - header_lines: - type: file - description: Contains lines to append to the output VCF header + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - input: + type: file + description: Query VCF or BCF file, can be either uncompressed or compressed + - index: + type: file + description: Index of the query VCF or BCF file + - annotations: + type: file + description: Bgzip-compressed file with annotations + - annotations_index: + type: file + description: Index of the annotations file + - - header_lines: + type: file + description: Contains lines to append to the output VCF header output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - vcf: - type: file - description: Compressed annotated VCF file - pattern: "*{vcf,vcf.gz,bcf,bcf.gz}" - - csi: - type: file - description: Default VCF file index - pattern: "*.csi" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.{vcf,vcf.gz,bcf,bcf.gz}": + type: file + description: Compressed annotated VCF file + pattern: "*{vcf,vcf.gz,bcf,bcf.gz}" - tbi: - type: file - description: Alternative VCF file index - pattern: "*.tbi" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.tbi": + type: file + description: Alternative VCF file index + pattern: "*.tbi" + - csi: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.csi": + type: file + description: Default VCF file index + pattern: "*.csi" - versions: - type: file - description: File containing software versions - pattern: "versions.yml" + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" authors: - "@projectoriented" - "@ramprasadn" diff --git a/modules/nf-core/bcftools/norm/meta.yml b/modules/nf-core/bcftools/norm/meta.yml index a0cdeaf1..b6edeb4a 100644 --- a/modules/nf-core/bcftools/norm/meta.yml +++ b/modules/nf-core/bcftools/norm/meta.yml @@ -13,54 +13,70 @@ tools: documentation: http://www.htslib.org/doc/bcftools.html doi: 10.1093/bioinformatics/btp352 licence: ["MIT"] + identifier: biotools:bcftools input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - vcf: - type: file - description: | - The vcf file to be normalized - e.g. 'file1.vcf' - pattern: "*.{vcf,vcf.gz}" - - tbi: - type: file - description: | - An optional index of the VCF file (for when the VCF is compressed) - pattern: "*.vcf.gz.tbi" - - meta2: - type: map - description: | - Groovy Map containing reference information - e.g. [ id:'genome' ] - - fasta: - type: file - description: FASTA reference file - pattern: "*.{fasta,fa}" + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - vcf: + type: file + description: | + The vcf file to be normalized + e.g. 'file1.vcf' + pattern: "*.{vcf,vcf.gz}" + - tbi: + type: file + description: | + An optional index of the VCF file (for when the VCF is compressed) + pattern: "*.vcf.gz.tbi" + - - meta2: + type: map + description: | + Groovy Map containing reference information + e.g. [ id:'genome' ] + - fasta: + type: file + description: FASTA reference file + pattern: "*.{fasta,fa}" output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - vcf: - type: file - description: One of uncompressed VCF (.vcf), compressed VCF (.vcf.gz), compressed BCF (.bcf.gz) or uncompressed BCF (.bcf) normalized output file - pattern: "*.{vcf,vcf.gz,bcf,bcf.gz}" - - csi: - type: file - description: Default VCF file index - pattern: "*.csi" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.{vcf,vcf.gz,bcf,bcf.gz}": + type: file + description: One of uncompressed VCF (.vcf), compressed VCF (.vcf.gz), compressed + BCF (.bcf.gz) or uncompressed BCF (.bcf) normalized output file + pattern: "*.{vcf,vcf.gz,bcf,bcf.gz}" - tbi: - type: file - description: Alternative VCF file index - pattern: "*.tbi" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.tbi": + type: file + description: Alternative VCF file index + pattern: "*.tbi" + - csi: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.csi": + type: file + description: Default VCF file index + pattern: "*.csi" - versions: - type: file - description: File containing software versions - pattern: "versions.yml" + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" authors: - "@abhi18av" - "@ramprasadn" diff --git a/modules/nf-core/bcftools/pluginscatter/meta.yml b/modules/nf-core/bcftools/pluginscatter/meta.yml index 71805c03..5a31dacc 100644 --- a/modules/nf-core/bcftools/pluginscatter/meta.yml +++ b/modules/nf-core/bcftools/pluginscatter/meta.yml @@ -1,4 +1,3 @@ ---- # yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/yaml-schema.json name: "bcftools_pluginscatter" description: Split VCF by chunks or regions, creating multiple VCFs. @@ -15,65 +14,81 @@ tools: documentation: http://samtools.github.io/bcftools/bcftools.html#reheader doi: 10.1093/gigascience/giab008 licence: ["MIT"] + identifier: biotools:bcftools input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - vcf: - type: file - description: The input VCF to scatter - pattern: "*.{vcf,vcf.gz,bcf,bcf.gz}" - - tbi: - type: file - description: Optional index of the input VCF - pattern: "*.tbi" - - sites_per_chunk: - type: integer - description: | - How many variants should be in each output file - Either this or `scatter` or `scatter_file` have to be given - - scatter: - type: string - description: | - A comma delimited list of regions to scatter into - Either this or `sites_per_chunk` or `scatter_file` have to be given - - scatter_file: - type: file - description: | - A file containing a region on each line with an optional second column containing the filename - Either this or `sites_per_chunk` or `scatter` have to be given - - regions: - type: file - description: Optional file containing the regions to work on - pattern: "*.bed" - - targets: - type: file - description: Optional file containing the regions to work on (but streams instead of index-jumping) - pattern: "*.bed" + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - vcf: + type: file + description: The input VCF to scatter + pattern: "*.{vcf,vcf.gz,bcf,bcf.gz}" + - tbi: + type: file + description: Optional index of the input VCF + pattern: "*.tbi" + - - sites_per_chunk: + type: integer + description: | + How many variants should be in each output file + Either this or `scatter` or `scatter_file` have to be given + - - scatter: + type: string + description: | + A comma delimited list of regions to scatter into + Either this or `sites_per_chunk` or `scatter_file` have to be given + - - scatter_file: + type: file + description: | + A file containing a region on each line with an optional second column containing the filename + Either this or `sites_per_chunk` or `scatter` have to be given + - - regions: + type: file + description: Optional file containing the regions to work on + pattern: "*.bed" + - - targets: + type: file + description: Optional file containing the regions to work on (but streams instead + of index-jumping) + pattern: "*.bed" output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - versions: - type: file - description: File containing software versions - pattern: "versions.yml" - scatter: - type: file - description: The resulting files of the scattering - pattern: "*.{vcf,vcf.gz,bcf,bcf.gz}" - - csi: - type: file - description: Default VCF file index - pattern: "*.csi" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*{vcf,vcf.gz,bcf,bcf.gz}": + type: file + description: The resulting files of the scattering + pattern: "*.{vcf,vcf.gz,bcf,bcf.gz}" - tbi: - type: file - description: Alternative VCF file index - pattern: "*.tbi" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.tbi": + type: file + description: Alternative VCF file index + pattern: "*.tbi" + - csi: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.csi": + type: file + description: Default VCF file index + pattern: "*.csi" + - versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" authors: - "@nvnieuwk" maintainers: diff --git a/modules/nf-core/bcftools/query/meta.yml b/modules/nf-core/bcftools/query/meta.yml index 303ef610..279b3205 100644 --- a/modules/nf-core/bcftools/query/meta.yml +++ b/modules/nf-core/bcftools/query/meta.yml @@ -1,5 +1,6 @@ name: bcftools_query -description: Extracts fields from VCF or BCF files and outputs them in user-defined format. +description: Extracts fields from VCF or BCF files and outputs them in user-defined + format. keywords: - query - variant calling @@ -13,48 +14,51 @@ tools: documentation: http://www.htslib.org/doc/bcftools.html doi: 10.1093/bioinformatics/btp352 licence: ["MIT"] + identifier: biotools:bcftools input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - vcf: - type: file - description: | - The vcf file to be qeuried. - pattern: "*.{vcf.gz, vcf}" - - tbi: - type: file - description: | - The tab index for the VCF file to be inspected. - pattern: "*.tbi" - - regions: - type: file - description: | - Optionally, restrict the operation to regions listed in this file. - - targets: - type: file - description: | - Optionally, restrict the operation to regions listed in this file (doesn't rely upon index files) - - samples: - type: file - description: | - Optional, file of sample names to be included or excluded. - e.g. 'file.tsv' + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - vcf: + type: file + description: | + The vcf file to be qeuried. + pattern: "*.{vcf.gz, vcf}" + - tbi: + type: file + description: | + The tab index for the VCF file to be inspected. + pattern: "*.tbi" + - - regions: + type: file + description: | + Optionally, restrict the operation to regions listed in this file. + - - targets: + type: file + description: | + Optionally, restrict the operation to regions listed in this file (doesn't rely upon index files) + - - samples: + type: file + description: | + Optional, file of sample names to be included or excluded. + e.g. 'file.tsv' output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - output: - type: file - description: BCFTools query output file + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.${suffix}": + type: file + description: BCFTools query output file - versions: - type: file - description: File containing software versions - pattern: "versions.yml" + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" authors: - "@abhi18av" - "@drpatelh" diff --git a/modules/nf-core/bcftools/reheader/meta.yml b/modules/nf-core/bcftools/reheader/meta.yml index d903cc0f..47e5344c 100644 --- a/modules/nf-core/bcftools/reheader/meta.yml +++ b/modules/nf-core/bcftools/reheader/meta.yml @@ -12,51 +12,60 @@ tools: documentation: http://samtools.github.io/bcftools/bcftools.html#reheader doi: 10.1093/gigascience/giab008 licence: ["MIT"] + identifier: biotools:bcftools input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - vcf: - type: file - description: VCF/BCF file - pattern: "*.{vcf.gz,vcf,bcf}" - - header: - type: file - description: New header to add to the VCF - pattern: "*.{header.txt}" - - samples: - type: file - description: File containing sample names to update (one sample per line) - pattern: "*.{samples.txt}" - - meta2: - type: map - description: | - Groovy Map containing reference information - e.g. [ id:'genome' ] - - fai: - type: file - description: Fasta index to update header sequences with - pattern: "*.{fai}" + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - vcf: + type: file + description: VCF/BCF file + pattern: "*.{vcf.gz,vcf,bcf}" + - header: + type: file + description: New header to add to the VCF + pattern: "*.{header.txt}" + - samples: + type: file + description: File containing sample names to update (one sample per line) + pattern: "*.{samples.txt}" + - - meta2: + type: map + description: | + Groovy Map containing reference information + e.g. [ id:'genome' ] + - fai: + type: file + description: Fasta index to update header sequences with + pattern: "*.{fai}" output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - versions: - type: file - description: File containing software versions - pattern: "versions.yml" - vcf: - type: file - description: VCF with updated header, bgzipped per default - pattern: "*.{vcf,vcf.gz,bcf,bcf.gz}" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.{vcf,vcf.gz,bcf,bcf.gz}": + type: file + description: VCF with updated header, bgzipped per default + pattern: "*.{vcf,vcf.gz,bcf,bcf.gz}" - index: - type: file - description: Index of VCF with updated header - pattern: "*.{csi,tbi}" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.{csi,tbi}": + type: file + description: Index of VCF with updated header + pattern: "*.{csi,tbi}" + - versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" authors: - "@bjohnnyd" - "@jemten" diff --git a/modules/nf-core/bcftools/sort/meta.yml b/modules/nf-core/bcftools/sort/meta.yml index dfbddcba..f7a6eff1 100644 --- a/modules/nf-core/bcftools/sort/meta.yml +++ b/modules/nf-core/bcftools/sort/meta.yml @@ -12,38 +12,53 @@ tools: tool_dev_url: https://github.com/samtools/bcftools doi: "10.1093/bioinformatics/btp352" licence: ["MIT"] + identifier: biotools:bcftools input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - vcf: - type: file - description: The VCF/BCF file to be sorted - pattern: "*.{vcf.gz,vcf,bcf}" + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - vcf: + type: file + description: The VCF/BCF file to be sorted + pattern: "*.{vcf.gz,vcf,bcf}" output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - versions: - type: file - description: File containing software versions - pattern: "versions.yml" - vcf: - type: file - description: Sorted VCF file - pattern: "*.{vcf.gz}" - - csi: - type: file - description: Default VCF file index - pattern: "*.csi" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.{vcf,vcf.gz,bcf,bcf.gz}": + type: file + description: Sorted VCF file + pattern: "*.{vcf.gz}" - tbi: - type: file - description: Alternative VCF file index - pattern: "*.tbi" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.tbi": + type: file + description: Alternative VCF file index + pattern: "*.tbi" + - csi: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.csi": + type: file + description: Default VCF file index + pattern: "*.csi" + - versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" authors: - "@Gwennid" maintainers: diff --git a/modules/nf-core/bcftools/stats/meta.yml b/modules/nf-core/bcftools/stats/meta.yml index 7ea2103e..655a61c5 100644 --- a/modules/nf-core/bcftools/stats/meta.yml +++ b/modules/nf-core/bcftools/stats/meta.yml @@ -13,58 +13,86 @@ tools: documentation: http://www.htslib.org/doc/bcftools.html doi: 10.1093/bioinformatics/btp352 licence: ["MIT"] + identifier: biotools:bcftools input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - vcf: - type: file - description: VCF input file - pattern: "*.{vcf}" - - tbi: - type: file - description: | - The tab index for the VCF file to be inspected. Optional: only required when parameter regions is chosen. - pattern: "*.tbi" - - regions: - type: file - description: | - Optionally, restrict the operation to regions listed in this file. (VCF, BED or tab-delimited) - - targets: - type: file - description: | - Optionally, restrict the operation to regions listed in this file (doesn't rely upon tbi index files) - - samples: - type: file - description: | - Optional, file of sample names to be included or excluded. - e.g. 'file.tsv' - - exons: - type: file - description: | - Tab-delimited file with exons for indel frameshifts (chr,beg,end; 1-based, inclusive, optionally bgzip compressed). - e.g. 'exons.tsv.gz' - - fasta: - type: file - description: | - Faidx indexed reference sequence file to determine INDEL context. - e.g. 'reference.fa' + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - vcf: + type: file + description: VCF input file + pattern: "*.{vcf}" + - tbi: + type: file + description: | + The tab index for the VCF file to be inspected. Optional: only required when parameter regions is chosen. + pattern: "*.tbi" + - - meta2: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - regions: + type: file + description: | + Optionally, restrict the operation to regions listed in this file. (VCF, BED or tab-delimited) + - - meta3: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - targets: + type: file + description: | + Optionally, restrict the operation to regions listed in this file (doesn't rely upon tbi index files) + - - meta4: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - samples: + type: file + description: | + Optional, file of sample names to be included or excluded. + e.g. 'file.tsv' + - - meta5: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - exons: + type: file + description: | + Tab-delimited file with exons for indel frameshifts (chr,beg,end; 1-based, inclusive, optionally bgzip compressed). + e.g. 'exons.tsv.gz' + - - meta6: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - fasta: + type: file + description: | + Faidx indexed reference sequence file to determine INDEL context. + e.g. 'reference.fa' output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - stats: - type: file - description: Text output file containing stats - pattern: "*_{stats.txt}" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*stats.txt": + type: file + description: Text output file containing stats + pattern: "*_{stats.txt}" - versions: - type: file - description: File containing software versions - pattern: "versions.yml" + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" authors: - "@joseespinosa" - "@drpatelh" diff --git a/modules/nf-core/bedtools/intersect/meta.yml b/modules/nf-core/bedtools/intersect/meta.yml index 0939cb54..45ecf377 100644 --- a/modules/nf-core/bedtools/intersect/meta.yml +++ b/modules/nf-core/bedtools/intersect/meta.yml @@ -10,43 +10,47 @@ tools: A set of tools for genomic analysis tasks, specifically enabling genome arithmetic (merge, count, complement) on various file types. documentation: https://bedtools.readthedocs.io/en/latest/content/tools/intersect.html licence: ["MIT"] + identifier: biotools:bedtools input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - intervals1: - type: file - description: BAM/BED/GFF/VCF - pattern: "*.{bam|bed|gff|vcf}" - - intervals2: - type: file - description: BAM/BED/GFF/VCF - pattern: "*.{bam|bed|gff|vcf}" - - meta2: - type: map - description: | - Groovy Map containing reference chromosome sizes - e.g. [ id:'test' ] - - chrom_sizes: - type: file - description: Chromosome sizes file - pattern: "*{.sizes,.txt}" + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - intervals1: + type: file + description: BAM/BED/GFF/VCF + pattern: "*.{bam|bed|gff|vcf}" + - intervals2: + type: file + description: BAM/BED/GFF/VCF + pattern: "*.{bam|bed|gff|vcf}" + - - meta2: + type: map + description: | + Groovy Map containing reference chromosome sizes + e.g. [ id:'test' ] + - chrom_sizes: + type: file + description: Chromosome sizes file + pattern: "*{.sizes,.txt}" output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - intersect: - type: file - description: File containing the description of overlaps found between the two features - pattern: "*.${extension}" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.${extension}": + type: file + description: File containing the description of overlaps found between the two + features + pattern: "*.${extension}" - versions: - type: file - description: File containing software versions - pattern: "versions.yml" + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" authors: - "@edmundmiller" - "@sruthipsuresh" diff --git a/modules/nf-core/bedtools/intersect/tests/main.nf.test b/modules/nf-core/bedtools/intersect/tests/main.nf.test new file mode 100644 index 00000000..cd770946 --- /dev/null +++ b/modules/nf-core/bedtools/intersect/tests/main.nf.test @@ -0,0 +1,90 @@ +nextflow_process { + + name "Test Process BEDTOOLS_INTERSECT" + script "../main.nf" + process "BEDTOOLS_INTERSECT" + config "./nextflow.config" + + tag "modules" + tag "modules_nfcore" + tag "bedtools" + tag "bedtools/intersect" + + test("sarscov2 - bed - bed") { + + when { + process { + """ + input[0] = [ + [ id:'test' ], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/bed/test.bed', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/bed/test2.bed', checkIfExists: true) + ] + + input[1] = [[:], []] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + + test("sarscov2 - bam - bam") { + + when { + process { + """ + input[0] = [ + [ id:'test' ], + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/bed/baits.bed', checkIfExists: true) + ] + + input[1] = [[:], []] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + + test("sarscov2 - bed - stub") { + + options "-stub" + + when { + process { + """ + input[0] = [ + [ id:'test' ], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/bed/test.bed', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/bed/test2.bed', checkIfExists: true) + ] + + input[1] = [[:], []] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + +} diff --git a/modules/nf-core/bedtools/intersect/tests/main.nf.test.snap b/modules/nf-core/bedtools/intersect/tests/main.nf.test.snap new file mode 100644 index 00000000..b748dd49 --- /dev/null +++ b/modules/nf-core/bedtools/intersect/tests/main.nf.test.snap @@ -0,0 +1,101 @@ +{ + "sarscov2 - bam - bam": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test_out.bam:md5,738324efe2b1e442ceb6539a630c3fe6" + ] + ], + "1": [ + "versions.yml:md5,42ba439339672f4a9193f0f0fe7a7f64" + ], + "intersect": [ + [ + { + "id": "test" + }, + "test_out.bam:md5,738324efe2b1e442ceb6539a630c3fe6" + ] + ], + "versions": [ + "versions.yml:md5,42ba439339672f4a9193f0f0fe7a7f64" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.4" + }, + "timestamp": "2024-09-17T20:55:57.454847668" + }, + "sarscov2 - bed - bed": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test_out.bed:md5,afcbf01c2f2013aad71dbe8e34f2c15c" + ] + ], + "1": [ + "versions.yml:md5,42ba439339672f4a9193f0f0fe7a7f64" + ], + "intersect": [ + [ + { + "id": "test" + }, + "test_out.bed:md5,afcbf01c2f2013aad71dbe8e34f2c15c" + ] + ], + "versions": [ + "versions.yml:md5,42ba439339672f4a9193f0f0fe7a7f64" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.4" + }, + "timestamp": "2024-09-17T20:55:49.072132931" + }, + "sarscov2 - bed - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test_out.bed:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + "versions.yml:md5,42ba439339672f4a9193f0f0fe7a7f64" + ], + "intersect": [ + [ + { + "id": "test" + }, + "test_out.bed:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,42ba439339672f4a9193f0f0fe7a7f64" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.4" + }, + "timestamp": "2024-09-17T20:56:06.259192552" + } +} \ No newline at end of file diff --git a/modules/nf-core/bedtools/intersect/tests/nextflow.config b/modules/nf-core/bedtools/intersect/tests/nextflow.config new file mode 100644 index 00000000..f1f9e693 --- /dev/null +++ b/modules/nf-core/bedtools/intersect/tests/nextflow.config @@ -0,0 +1,5 @@ +process { + withName: BEDTOOLS_INTERSECT { + ext.prefix = { "${meta.id}_out" } + } +} diff --git a/modules/nf-core/bedtools/intersect/tests/tags.yml b/modules/nf-core/bedtools/intersect/tests/tags.yml new file mode 100644 index 00000000..6219cc40 --- /dev/null +++ b/modules/nf-core/bedtools/intersect/tests/tags.yml @@ -0,0 +1,2 @@ +bedtools/intersect: + - "modules/nf-core/bedtools/intersect/**" diff --git a/modules/nf-core/bedtools/merge/meta.yml b/modules/nf-core/bedtools/merge/meta.yml index d7463e3d..6da54205 100644 --- a/modules/nf-core/bedtools/merge/meta.yml +++ b/modules/nf-core/bedtools/merge/meta.yml @@ -1,5 +1,6 @@ name: bedtools_merge -description: combines overlapping or “book-ended” features in an interval file into a single feature which spans all of the combined features. +description: combines overlapping or “book-ended” features in an interval file into + a single feature which spans all of the combined features. keywords: - bed - merge @@ -11,30 +12,33 @@ tools: A set of tools for genomic analysis tasks, specifically enabling genome arithmetic (merge, count, complement) on various file types. documentation: https://bedtools.readthedocs.io/en/latest/content/tools/merge.html licence: ["MIT"] + identifier: biotools:bedtools input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - bed: - type: file - description: Input BED file - pattern: "*.{bed}" + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - bed: + type: file + description: Input BED file + pattern: "*.{bed}" output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - bed: - type: file - description: Overlapped bed file with combined features - pattern: "*.{bed}" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.bed": + type: file + description: Overlapped bed file with combined features + pattern: "*.{bed}" - versions: - type: file - description: File containing software versions - pattern: "versions.yml" + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" authors: - "@edmundmiller" - "@sruthipsuresh" diff --git a/modules/nf-core/bedtools/split/meta.yml b/modules/nf-core/bedtools/split/meta.yml index 725bb9a2..7e126d22 100644 --- a/modules/nf-core/bedtools/split/meta.yml +++ b/modules/nf-core/bedtools/split/meta.yml @@ -9,30 +9,36 @@ tools: description: "A powerful toolset for genome arithmetic" documentation: "https://bedtools.readthedocs.io/en/latest/content/tools/sort.html" licence: ["MIT", "GPL v2"] + identifier: biotools:bedtools input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - bed: - type: file - description: BED file - pattern: "*.bed" + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - bed: + type: file + description: BED file + pattern: "*.bed" + - count: + type: integer + description: Number of lines per split file output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - versions: - type: file - description: File containing software versions - pattern: "versions.yml" - beds: - type: list - description: list of split BED files - pattern: "*.bed" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.bed": + type: list + description: list of split BED files + pattern: "*.bed" + - versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" authors: - "@nvnieuwk" maintainers: diff --git a/modules/nf-core/ensemblvep/download/ensemblvep-download.diff b/modules/nf-core/ensemblvep/download/ensemblvep-download.diff index 6d346d7b..71a470ea 100644 --- a/modules/nf-core/ensemblvep/download/ensemblvep-download.diff +++ b/modules/nf-core/ensemblvep/download/ensemblvep-download.diff @@ -14,18 +14,7 @@ Changes in 'ensemblvep/download/main.nf': input: tuple val(meta), val(assembly), val(species), val(cache_version) -Changes in 'ensemblvep/download/environment.yml': ---- modules/nf-core/ensemblvep/download/environment.yml -+++ modules/nf-core/ensemblvep/download/environment.yml -@@ -1,7 +1,5 @@ --name: ensemblvep_download - channels: - - conda-forge - - bioconda -- - defaults - dependencies: - - bioconda::ensembl-vep=112.0 - +'modules/nf-core/ensemblvep/download/environment.yml' is unchanged 'modules/nf-core/ensemblvep/download/meta.yml' is unchanged 'modules/nf-core/ensemblvep/download/tests/tags.yml' is unchanged 'modules/nf-core/ensemblvep/download/tests/main.nf.test' is unchanged diff --git a/modules/nf-core/ensemblvep/download/meta.yml b/modules/nf-core/ensemblvep/download/meta.yml index a4277ad7..8da9621c 100644 --- a/modules/nf-core/ensemblvep/download/meta.yml +++ b/modules/nf-core/ensemblvep/download/meta.yml @@ -1,5 +1,6 @@ name: ensemblvep_download -description: Ensembl Variant Effect Predictor (VEP). The cache downloading options are controlled through `task.ext.args`. +description: Ensembl Variant Effect Predictor (VEP). The cache downloading options + are controlled through `task.ext.args`. keywords: - annotation - cache @@ -12,33 +13,40 @@ tools: homepage: https://www.ensembl.org/info/docs/tools/vep/index.html documentation: https://www.ensembl.org/info/docs/tools/vep/script/index.html licence: ["Apache-2.0"] + identifier: "" input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - assembly: - type: string - description: | - Genome assembly - - species: - type: string - description: | - Specie - - cache_version: - type: string - description: | - cache version + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - assembly: + type: string + description: | + Genome assembly + - species: + type: string + description: | + Specie + - cache_version: + type: string + description: | + cache version output: - cache: - type: file - description: cache - pattern: "*" + - meta: + type: file + description: cache + pattern: "*" + - prefix: + type: file + description: cache + pattern: "*" - versions: - type: file - description: File containing software versions - pattern: "versions.yml" + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" authors: - "@maxulysse" maintainers: diff --git a/modules/nf-core/ensemblvep/vep/ensemblvep-vep.diff b/modules/nf-core/ensemblvep/vep/ensemblvep-vep.diff index e09aa620..6837716a 100644 --- a/modules/nf-core/ensemblvep/vep/ensemblvep-vep.diff +++ b/modules/nf-core/ensemblvep/vep/ensemblvep-vep.diff @@ -14,17 +14,7 @@ Changes in 'ensemblvep/vep/main.nf': input: tuple val(meta), path(vcf), path(custom_extra_files) -Changes in 'ensemblvep/vep/environment.yml': ---- modules/nf-core/ensemblvep/vep/environment.yml -+++ modules/nf-core/ensemblvep/vep/environment.yml -@@ -2,6 +2,5 @@ - channels: - - conda-forge - - bioconda -- - defaults - dependencies: - - bioconda::ensembl-vep=112.0 - +'modules/nf-core/ensemblvep/vep/environment.yml' is unchanged 'modules/nf-core/ensemblvep/vep/meta.yml' is unchanged 'modules/nf-core/ensemblvep/vep/tests/tags.yml' is unchanged 'modules/nf-core/ensemblvep/vep/tests/tab.gz.config' is unchanged diff --git a/modules/nf-core/ensemblvep/vep/environment.yml b/modules/nf-core/ensemblvep/vep/environment.yml index 87b88372..283a45bb 100644 --- a/modules/nf-core/ensemblvep/vep/environment.yml +++ b/modules/nf-core/ensemblvep/vep/environment.yml @@ -1,4 +1,3 @@ -name: ensemblvep_vep channels: - conda-forge - bioconda diff --git a/modules/nf-core/ensemblvep/vep/meta.yml b/modules/nf-core/ensemblvep/vep/meta.yml index d8ff8d14..9288a938 100644 --- a/modules/nf-core/ensemblvep/vep/meta.yml +++ b/modules/nf-core/ensemblvep/vep/meta.yml @@ -1,5 +1,6 @@ name: ensemblvep_vep -description: Ensembl Variant Effect Predictor (VEP). The output-file-format is controlled through `task.ext.args`. +description: Ensembl Variant Effect Predictor (VEP). The output-file-format is controlled + through `task.ext.args`. keywords: - annotation - vcf @@ -13,75 +14,96 @@ tools: homepage: https://www.ensembl.org/info/docs/tools/vep/index.html documentation: https://www.ensembl.org/info/docs/tools/vep/script/index.html licence: ["Apache-2.0"] + identifier: "" input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - vcf: - type: file - description: | - vcf to annotate - - custom_extra_files: - type: file - description: | - extra sample-specific files to be used with the `--custom` flag to be configured with ext.args - (optional) - - genome: - type: string - description: | - which genome to annotate with - - species: - type: string - description: | - which species to annotate with - - cache_version: - type: integer - description: | - which version of the cache to annotate with - - cache: - type: file - description: | - path to VEP cache (optional) - - meta2: - type: map - description: | - Groovy Map containing fasta reference information - e.g. [ id:'test' ] - - fasta: - type: file - description: | - reference FASTA file (optional) - pattern: "*.{fasta,fa}" - - extra_files: - type: file - description: | - path to file(s) needed for plugins (optional) + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - vcf: + type: file + description: | + vcf to annotate + - custom_extra_files: + type: file + description: | + extra sample-specific files to be used with the `--custom` flag to be configured with ext.args + (optional) + - - genome: + type: string + description: | + which genome to annotate with + - - species: + type: string + description: | + which species to annotate with + - - cache_version: + type: integer + description: | + which version of the cache to annotate with + - - cache: + type: file + description: | + path to VEP cache (optional) + - - meta2: + type: map + description: | + Groovy Map containing fasta reference information + e.g. [ id:'test' ] + - fasta: + type: file + description: | + reference FASTA file (optional) + pattern: "*.{fasta,fa}" + - - extra_files: + type: file + description: | + path to file(s) needed for plugins (optional) output: - vcf: - type: file - description: | - annotated vcf (optional) - pattern: "*.ann.vcf.gz" + - meta: + type: file + description: | + annotated vcf (optional) + pattern: "*.ann.vcf.gz" + - "*.vcf.gz": + type: file + description: | + annotated vcf (optional) + pattern: "*.ann.vcf.gz" - tab: - type: file - description: | - tab file with annotated variants (optional) - pattern: "*.ann.tab.gz" + - meta: + type: file + description: | + tab file with annotated variants (optional) + pattern: "*.ann.tab.gz" + - "*.tab.gz": + type: file + description: | + tab file with annotated variants (optional) + pattern: "*.ann.tab.gz" - json: - type: file - description: | - json file with annotated variants (optional) - pattern: "*.ann.json.gz" + - meta: + type: file + description: | + json file with annotated variants (optional) + pattern: "*.ann.json.gz" + - "*.json.gz": + type: file + description: | + json file with annotated variants (optional) + pattern: "*.ann.json.gz" - report: - type: file - description: VEP report file - pattern: "*.html" + - "*.html": + type: file + description: VEP report file + pattern: "*.html" - versions: - type: file - description: File containing software versions - pattern: "versions.yml" + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" authors: - "@maxulysse" - "@matthdsm" diff --git a/modules/nf-core/gatk4/calibratedragstrmodel/meta.yml b/modules/nf-core/gatk4/calibratedragstrmodel/meta.yml index bf2ca2d7..cc19131b 100644 --- a/modules/nf-core/gatk4/calibratedragstrmodel/meta.yml +++ b/modules/nf-core/gatk4/calibratedragstrmodel/meta.yml @@ -8,62 +8,65 @@ keywords: - calibratedragstrmodel tools: - gatk4: - description: Genome Analysis Toolkit (GATK4). Developed in the Data Sciences Platform at the Broad Institute, the toolkit offers a wide variety of tools with a primary focus on variant discovery and genotyping. Its powerful processing engine and high-performance computing features make it capable of taking on projects of any size. + description: Genome Analysis Toolkit (GATK4). Developed in the Data Sciences Platform + at the Broad Institute, the toolkit offers a wide variety of tools with a primary + focus on variant discovery and genotyping. Its powerful processing engine and + high-performance computing features make it capable of taking on projects of + any size. homepage: https://gatk.broadinstitute.org/hc/en-us documentation: https://gatk.broadinstitute.org/hc/en-us/articles/360057441571-CalibrateDragstrModel-BETA- tool_dev_url: https://github.com/broadinstitute/gatk doi: 10.1158/1538-7445.AM2017-3590 licence: ["Apache-2.0"] + identifier: "" input: # Only when we have meta - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - bam: - type: file - description: BAM/CRAM/SAM file - pattern: "*.{bam,cram,sam}" - - bam_index: - type: file - description: index of the BAM/CRAM/SAM file - pattern: "*.{bai,crai,sai}" - - intervals: - type: file - description: BED file or interval list containing regions (optional) - pattern: "*.{bed,interval_list}" - - fasta: - type: file - description: The reference FASTA file - pattern: "*.{fasta,fa}" - - fasta_fai: - type: file - description: The index of the reference FASTA file - pattern: "*.fai" - - dict: - type: file - description: The sequence dictionary of the reference FASTA file - pattern: "*.dict" - - strtablefile: - type: file - description: The StrTableFile zip folder of the reference FASTA file - pattern: "*.zip" + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - bam: + type: file + description: BAM/CRAM/SAM file + pattern: "*.{bam,cram,sam}" + - bam_index: + type: file + description: index of the BAM/CRAM/SAM file + pattern: "*.{bai,crai,sai}" + - - fasta: + type: file + description: The reference FASTA file + pattern: "*.{fasta,fa}" + - - fasta_fai: + type: file + description: The index of the reference FASTA file + pattern: "*.fai" + - - dict: + type: file + description: The sequence dictionary of the reference FASTA file + pattern: "*.dict" + - - strtablefile: + type: file + description: The StrTableFile zip folder of the reference FASTA file + pattern: "*.zip" output: #Only when we have meta - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - versions: - type: file - description: File containing software versions - pattern: "versions.yml" - dragstr_model: - type: file - description: The DragSTR model - pattern: "*.txt" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.txt": + type: file + description: The DragSTR model + pattern: "*.txt" + - versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" authors: - "@nvnieuwk" maintainers: diff --git a/modules/nf-core/gatk4/composestrtablefile/meta.yml b/modules/nf-core/gatk4/composestrtablefile/meta.yml index 249aed24..fd56c797 100644 --- a/modules/nf-core/gatk4/composestrtablefile/meta.yml +++ b/modules/nf-core/gatk4/composestrtablefile/meta.yml @@ -1,5 +1,7 @@ name: "gatk4_composestrtablefile" -description: This tool looks for low-complexity STR sequences along the reference that are later used to estimate the Dragstr model during single sample auto calibration CalibrateDragstrModel. +description: This tool looks for low-complexity STR sequences along the reference + that are later used to estimate the Dragstr model during single sample auto calibration + CalibrateDragstrModel. keywords: - composestrtablefile - dragstr @@ -14,28 +16,31 @@ tools: documentation: https://gatk.broadinstitute.org/hc/en-us/articles/4405451249819-ComposeSTRTableFile doi: 10.1158/1538-7445.AM2017-3590 licence: ["Apache-2.0"] + identifier: "" input: - - fasta: - type: file - description: FASTA reference file - pattern: "*.{fasta,fa}" - - fasta_fai: - type: file - description: index of the FASTA reference file - pattern: "*.fai" - - dict: - type: file - description: Sequence dictionary of the FASTA reference file - pattern: "*.dict" + - - fasta: + type: file + description: FASTA reference file + pattern: "*.{fasta,fa}" + - - fasta_fai: + type: file + description: index of the FASTA reference file + pattern: "*.fai" + - - dict: + type: file + description: Sequence dictionary of the FASTA reference file + pattern: "*.dict" output: - - versions: - type: file - description: File containing software versions - pattern: "versions.yml" - str_table: - type: file - description: A zipped folder containing the STR table files - pattern: "*.zip" + - "*.zip": + type: file + description: A zipped folder containing the STR table files + pattern: "*.zip" + - versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" authors: - "@nvnieuwk" maintainers: diff --git a/modules/nf-core/gatk4/createsequencedictionary/meta.yml b/modules/nf-core/gatk4/createsequencedictionary/meta.yml index f9d70be0..7b5156bb 100644 --- a/modules/nf-core/gatk4/createsequencedictionary/meta.yml +++ b/modules/nf-core/gatk4/createsequencedictionary/meta.yml @@ -15,25 +15,32 @@ tools: documentation: https://gatk.broadinstitute.org/hc/en-us/categories/360002369672s doi: 10.1158/1538-7445.AM2017-3590 licence: ["Apache-2.0"] + identifier: "" input: - - meta: - type: map - description: | - Groovy Map containing reference information - e.g. [ id:'genome' ] - - fasta: - type: file - description: Input fasta file - pattern: "*.{fasta,fa}" + - - meta: + type: map + description: | + Groovy Map containing reference information + e.g. [ id:'genome' ] + - fasta: + type: file + description: Input fasta file + pattern: "*.{fasta,fa}" output: - dict: - type: file - description: gatk dictionary file - pattern: "*.{dict}" + - meta: + type: file + description: gatk dictionary file + pattern: "*.{dict}" + - "*.dict": + type: file + description: gatk dictionary file + pattern: "*.{dict}" - versions: - type: file - description: File containing software versions - pattern: "versions.yml" + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" authors: - "@maxulysse" - "@ramprasadn" diff --git a/modules/nf-core/gatk4/genomicsdbimport/meta.yml b/modules/nf-core/gatk4/genomicsdbimport/meta.yml index 11e565b1..174ae2eb 100644 --- a/modules/nf-core/gatk4/genomicsdbimport/meta.yml +++ b/modules/nf-core/gatk4/genomicsdbimport/meta.yml @@ -1,5 +1,6 @@ name: gatk4_genomicsdbimport -description: merge GVCFs from multiple samples. For use in joint genotyping or somatic panel of normal creation. +description: merge GVCFs from multiple samples. For use in joint genotyping or somatic + panel of normal creation. keywords: - gatk4 - genomicsdb @@ -15,61 +16,99 @@ tools: homepage: https://gatk.broadinstitute.org/hc/en-us documentation: https://gatk.broadinstitute.org/hc/en-us/categories/360002369672s doi: 10.1158/1538-7445.AM2017-3590 + identifier: "" input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test'] - - vcf: - type: list - description: either a list of vcf files to be used to create or update a genomicsdb, or a file that contains a map to vcf files to be used. - pattern: "*.vcf.gz" - - tbi: - type: list - description: list of tbi files that match with the input vcf files - pattern: "*.vcf.gz_tbi" - - wspace: - type: file - description: path to an existing genomicsdb to be used in update db mode or get intervals mode. This WILL NOT specify name of a new genomicsdb in create db mode. - pattern: "/path/to/existing/gendb" - - interval_file: - type: file - description: file containing the intervals to be used when creating the genomicsdb - pattern: "*.interval_list" - - interval_value: - type: string - description: if an intervals file has not been spcified, the value enetered here will be used as an interval via the "-L" argument - pattern: "example: chr1:1000-10000" - - run_intlist: - type: boolean - description: Specify whether to run get interval list mode, this option cannot be specified at the same time as run_updatewspace. - pattern: "true/false" - - run_updatewspace: - type: boolean - description: Specify whether to run update genomicsdb mode, this option takes priority over run_intlist. - pattern: "true/false" - - input_map: - type: boolean - description: Specify whether the vcf input is providing a list of vcf file(s) or a single file containing a map of paths to vcf files to be used to create or update a genomicsdb. - pattern: "*.sample_map" + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test'] + - vcf: + type: list + description: either a list of vcf files to be used to create or update a genomicsdb, + or a file that contains a map to vcf files to be used. + pattern: "*.vcf.gz" + - tbi: + type: list + description: list of tbi files that match with the input vcf files + pattern: "*.vcf.gz_tbi" + - interval_file: + type: file + description: file containing the intervals to be used when creating the genomicsdb + pattern: "*.interval_list" + - interval_value: + type: string + description: if an intervals file has not been spcified, the value enetered + here will be used as an interval via the "-L" argument + pattern: "example: chr1:1000-10000" + - wspace: + type: file + description: path to an existing genomicsdb to be used in update db mode or + get intervals mode. This WILL NOT specify name of a new genomicsdb in create + db mode. + pattern: "/path/to/existing/gendb" + - - run_intlist: + type: boolean + description: Specify whether to run get interval list mode, this option cannot + be specified at the same time as run_updatewspace. + pattern: "true/false" + - - run_updatewspace: + type: boolean + description: Specify whether to run update genomicsdb mode, this option takes + priority over run_intlist. + pattern: "true/false" + - - input_map: + type: boolean + description: Specify whether the vcf input is providing a list of vcf file(s) + or a single file containing a map of paths to vcf files to be used to create + or update a genomicsdb. + pattern: "*.sample_map" output: - genomicsdb: - type: directory - description: Directory containing the files that compose the genomicsdb workspace, this is only output for create mode, as update changes an existing db - pattern: "*/$prefix" + - meta: + type: directory + description: Directory containing the files that compose the genomicsdb workspace, + this is only output for create mode, as update changes an existing db + pattern: "*/$prefix" + - $prefix: + type: directory + description: Directory containing the files that compose the genomicsdb workspace, + this is only output for create mode, as update changes an existing db + pattern: "*/$prefix" - updatedb: - type: directory - description: Directory containing the files that compose the updated genomicsdb workspace, this is only output for update mode, and should be the same path as the input wspace. - pattern: "same/path/as/wspace" + - meta: + type: directory + description: Directory containing the files that compose the updated genomicsdb + workspace, this is only output for update mode, and should be the same path + as the input wspace. + pattern: "same/path/as/wspace" + - $updated_db: + type: directory + description: Directory containing the files that compose the updated genomicsdb + workspace, this is only output for update mode, and should be the same path + as the input wspace. + pattern: "same/path/as/wspace" - intervallist: - type: file - description: File containing the intervals used to generate the genomicsdb, only created by get intervals mode. - pattern: "*.interval_list" + - meta: + type: file + description: File containing the intervals used to generate the genomicsdb, + only created by get intervals mode. + pattern: "*.interval_list" + - "*.interval_list": + type: file + description: File containing the intervals used to generate the genomicsdb, + only created by get intervals mode. + pattern: "*.interval_list" + - list: + type: file + description: File containing the intervals used to generate the genomicsdb, + only created by get intervals mode. + pattern: "*.interval_list" - versions: - type: file - description: File containing software versions - pattern: "versions.yml" + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" authors: - "@GCJMackenzie" maintainers: diff --git a/modules/nf-core/gatk4/genotypegvcfs/meta.yml b/modules/nf-core/gatk4/genotypegvcfs/meta.yml index eb704364..0c1fe491 100644 --- a/modules/nf-core/gatk4/genotypegvcfs/meta.yml +++ b/modules/nf-core/gatk4/genotypegvcfs/meta.yml @@ -14,91 +14,101 @@ tools: tool_dev_url: https://github.com/broadinstitute/gatk doi: "10.1158/1538-7445.AM2017-3590" licence: ["BSD-3-clause"] + identifier: "" input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - input: - type: file - description: | - gVCF(.gz) file or a GenomicsDB - pattern: "*.{vcf,vcf.gz}" - - gvcf_index: - type: file - description: | - index of gvcf file, or empty when providing GenomicsDB - pattern: "*.{idx,tbi}" - - intervals: - type: file - description: Interval file with the genomic regions included in the library (optional) - - intervals_index: - type: file - description: Interval index file (optional) - - meta2: - type: map - description: | - Groovy Map containing fasta information - e.g. [ id:'test' ] - - fasta: - type: file - description: Reference fasta file - pattern: "*.fasta" - - meta3: - type: map - description: | - Groovy Map containing fai information - e.g. [ id:'test' ] - - fai: - type: file - description: Reference fasta index file - pattern: "*.fai" - - meta4: - type: map - description: | - Groovy Map containing dict information - e.g. [ id:'test' ] - - dict: - type: file - description: Reference fasta sequence dict file - pattern: "*.dict" - - meta5: - type: map - description: | - Groovy Map containing dbsnp information - e.g. [ id:'test' ] - - dbsnp: - type: file - description: dbSNP VCF file - pattern: "*.vcf.gz" - - meta6: - type: map - description: | - Groovy Map containing dbsnp tbi information - e.g. [ id:'test' ] - - dbsnp_tbi: - type: file - description: dbSNP VCF index file - pattern: "*.tbi" + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - input: + type: file + description: | + gVCF(.gz) file or a GenomicsDB + pattern: "*.{vcf,vcf.gz}" + - gvcf_index: + type: file + description: | + index of gvcf file, or empty when providing GenomicsDB + pattern: "*.{idx,tbi}" + - intervals: + type: file + description: Interval file with the genomic regions included in the library + (optional) + - intervals_index: + type: file + description: Interval index file (optional) + - - meta2: + type: map + description: | + Groovy Map containing fasta information + e.g. [ id:'test' ] + - fasta: + type: file + description: Reference fasta file + pattern: "*.fasta" + - - meta3: + type: map + description: | + Groovy Map containing fai information + e.g. [ id:'test' ] + - fai: + type: file + description: Reference fasta index file + pattern: "*.fai" + - - meta4: + type: map + description: | + Groovy Map containing dict information + e.g. [ id:'test' ] + - dict: + type: file + description: Reference fasta sequence dict file + pattern: "*.dict" + - - meta5: + type: map + description: | + Groovy Map containing dbsnp information + e.g. [ id:'test' ] + - dbsnp: + type: file + description: dbSNP VCF file + pattern: "*.vcf.gz" + - - meta6: + type: map + description: | + Groovy Map containing dbsnp tbi information + e.g. [ id:'test' ] + - dbsnp_tbi: + type: file + description: dbSNP VCF index file + pattern: "*.tbi" output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - vcf: - type: file - description: Genotyped VCF file - pattern: "*.vcf.gz" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.vcf.gz": + type: file + description: Genotyped VCF file + pattern: "*.vcf.gz" - tbi: - type: file - description: Tbi index for VCF file - pattern: "*.vcf.gz" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.tbi": + type: file + description: Tbi index for VCF file + pattern: "*.vcf.gz" - versions: - type: file - description: File containing software versions - pattern: "versions.yml" + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" authors: - "@santiagorevale" - "@maxulysse" diff --git a/modules/nf-core/gatk4/haplotypecaller/main.nf b/modules/nf-core/gatk4/haplotypecaller/main.nf index 3043ee07..b2aff489 100644 --- a/modules/nf-core/gatk4/haplotypecaller/main.nf +++ b/modules/nf-core/gatk4/haplotypecaller/main.nf @@ -44,6 +44,7 @@ process GATK4_HAPLOTYPECALLER { --input $input \\ --output ${prefix}.vcf.gz \\ --reference $fasta \\ + --native-pair-hmm-threads ${task.cpus} \\ $dbsnp_command \\ $interval_command \\ $dragstr_command \\ diff --git a/modules/nf-core/gatk4/haplotypecaller/meta.yml b/modules/nf-core/gatk4/haplotypecaller/meta.yml index 703b99a0..9d4a05e9 100644 --- a/modules/nf-core/gatk4/haplotypecaller/meta.yml +++ b/modules/nf-core/gatk4/haplotypecaller/meta.yml @@ -14,92 +14,108 @@ tools: documentation: https://gatk.broadinstitute.org/hc/en-us/categories/360002369672s doi: 10.1158/1538-7445.AM2017-3590 licence: ["Apache-2.0"] + identifier: "" input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - input: - type: file - description: BAM/CRAM file from alignment - pattern: "*.{bam,cram}" - - input_index: - type: file - description: BAI/CRAI file from alignment - pattern: "*.{bai,crai}" - - intervals: - type: file - description: Bed file with the genomic regions included in the library (optional) - - dragstr_model: - type: file - description: Text file containing the DragSTR model of the used BAM/CRAM file (optional) - pattern: "*.txt" - - meta2: - type: map - description: | - Groovy Map containing reference information - e.g. [ id:'test_reference' ] - - fasta: - type: file - description: The reference fasta file - pattern: "*.fasta" - - meta3: - type: map - description: | - Groovy Map containing reference information - e.g. [ id:'test_reference' ] - - fai: - type: file - description: Index of reference fasta file - pattern: "fasta.fai" - - meta4: - type: map - description: | - Groovy Map containing reference information - e.g. [ id:'test_reference' ] - - dict: - type: file - description: GATK sequence dictionary - pattern: "*.dict" - - meta5: - type: map - description: | - Groovy Map containing dbsnp information - e.g. [ id:'test_dbsnp' ] - - dbsnp: - type: file - description: VCF file containing known sites (optional) - - meta6: - type: map - description: | - Groovy Map containing dbsnp information - e.g. [ id:'test_dbsnp' ] - - dbsnp_tbi: - type: file - description: VCF index of dbsnp (optional) + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - input: + type: file + description: BAM/CRAM file from alignment + pattern: "*.{bam,cram}" + - input_index: + type: file + description: BAI/CRAI file from alignment + pattern: "*.{bai,crai}" + - intervals: + type: file + description: Bed file with the genomic regions included in the library (optional) + - dragstr_model: + type: file + description: Text file containing the DragSTR model of the used BAM/CRAM file + (optional) + pattern: "*.txt" + - - meta2: + type: map + description: | + Groovy Map containing reference information + e.g. [ id:'test_reference' ] + - fasta: + type: file + description: The reference fasta file + pattern: "*.fasta" + - - meta3: + type: map + description: | + Groovy Map containing reference information + e.g. [ id:'test_reference' ] + - fai: + type: file + description: Index of reference fasta file + pattern: "fasta.fai" + - - meta4: + type: map + description: | + Groovy Map containing reference information + e.g. [ id:'test_reference' ] + - dict: + type: file + description: GATK sequence dictionary + pattern: "*.dict" + - - meta5: + type: map + description: | + Groovy Map containing dbsnp information + e.g. [ id:'test_dbsnp' ] + - dbsnp: + type: file + description: VCF file containing known sites (optional) + - - meta6: + type: map + description: | + Groovy Map containing dbsnp information + e.g. [ id:'test_dbsnp' ] + - dbsnp_tbi: + type: file + description: VCF index of dbsnp (optional) output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - versions: - type: file - description: File containing software versions - pattern: "versions.yml" - vcf: - type: file - description: Compressed VCF file - pattern: "*.vcf.gz" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.vcf.gz": + type: file + description: Compressed VCF file + pattern: "*.vcf.gz" - tbi: - type: file - description: Index of VCF file - pattern: "*.vcf.gz.tbi" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.tbi": + type: file + description: Index of VCF file + pattern: "*.vcf.gz.tbi" - bam: - type: file - description: Assembled haplotypes and locally realigned reads - pattern: "*.realigned.bam" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.realigned.bam": + type: file + description: Assembled haplotypes and locally realigned reads + pattern: "*.realigned.bam" + - versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" authors: - "@suzannejin" - "@FriederikeHanssen" diff --git a/modules/nf-core/gawk/meta.yml b/modules/nf-core/gawk/meta.yml index 2b6033b0..05170082 100644 --- a/modules/nf-core/gawk/meta.yml +++ b/modules/nf-core/gawk/meta.yml @@ -16,34 +16,40 @@ tools: documentation: "https://www.gnu.org/software/gawk/manual/" tool_dev_url: "https://www.gnu.org/prep/ftp.html" licence: ["GPL v3"] + identifier: "" input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - input: - type: file - description: The input file - Specify the logic that needs to be executed on this file on the `ext.args2` or in the program file - pattern: "*" - - program_file: - type: file - description: Optional file containing logic for awk to execute. If you don't wish to use a file, you can use `ext.args2` to specify the logic. - pattern: "*" + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - input: + type: file + description: The input file - Specify the logic that needs to be executed on + this file on the `ext.args2` or in the program file + pattern: "*" + - - program_file: + type: file + description: Optional file containing logic for awk to execute. If you don't + wish to use a file, you can use `ext.args2` to specify the logic. + pattern: "*" output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - versions: - type: file - description: File containing software versions - pattern: "versions.yml" - output: - type: file - description: The output file - specify the name of this file using `ext.prefix` and the extension using `ext.suffix` - pattern: "*" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - ${prefix}.${suffix}: + type: file + description: The output file - specify the name of this file using `ext.prefix` + and the extension using `ext.suffix` + pattern: "*" + - versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" authors: - "@nvnieuwk" maintainers: diff --git a/modules/nf-core/mosdepth/meta.yml b/modules/nf-core/mosdepth/meta.yml index 9caaf2cd..dc783c90 100644 --- a/modules/nf-core/mosdepth/meta.yml +++ b/modules/nf-core/mosdepth/meta.yml @@ -12,91 +12,161 @@ tools: documentation: https://github.com/brentp/mosdepth doi: 10.1093/bioinformatics/btx699 licence: ["MIT"] + identifier: biotools:mosdepth input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - bam: - type: file - description: Input BAM/CRAM file - pattern: "*.{bam,cram}" - - bai: - type: file - description: Index for BAM/CRAM file - pattern: "*.{bai,crai}" - - bed: - type: file - description: BED file with intersected intervals - pattern: "*.{bed}" - - meta2: - type: map - description: | - Groovy Map containing bed information - e.g. [ id:'test' ] - - fasta: - type: file - description: Reference genome FASTA file - pattern: "*.{fa,fasta}" + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - bam: + type: file + description: Input BAM/CRAM file + pattern: "*.{bam,cram}" + - bai: + type: file + description: Index for BAM/CRAM file + pattern: "*.{bai,crai}" + - bed: + type: file + description: BED file with intersected intervals + pattern: "*.{bed}" + - - meta2: + type: map + description: | + Groovy Map containing bed information + e.g. [ id:'test' ] + - fasta: + type: file + description: Reference genome FASTA file + pattern: "*.{fa,fasta}" output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - global_txt: - type: file - description: Text file with global cumulative coverage distribution - pattern: "*.{global.dist.txt}" - - regions_txt: - type: file - description: Text file with region cumulative coverage distribution - pattern: "*.{region.dist.txt}" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.global.dist.txt": + type: file + description: Text file with global cumulative coverage distribution + pattern: "*.{global.dist.txt}" - summary_txt: - type: file - description: Text file with summary mean depths per chromosome and regions - pattern: "*.{summary.txt}" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.summary.txt": + type: file + description: Text file with summary mean depths per chromosome and regions + pattern: "*.{summary.txt}" + - regions_txt: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.region.dist.txt": + type: file + description: Text file with region cumulative coverage distribution + pattern: "*.{region.dist.txt}" + - per_base_d4: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.per-base.d4": + type: file + description: D4 file with per-base coverage + pattern: "*.{per-base.d4}" - per_base_bed: - type: file - description: BED file with per-base coverage - pattern: "*.{per-base.bed.gz}" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.per-base.bed.gz": + type: file + description: BED file with per-base coverage + pattern: "*.{per-base.bed.gz}" - per_base_csi: - type: file - description: Index file for BED file with per-base coverage - pattern: "*.{per-base.bed.gz.csi}" - - per_base_d4: - type: file - description: D4 file with per-base coverage - pattern: "*.{per-base.d4}" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.per-base.bed.gz.csi": + type: file + description: Index file for BED file with per-base coverage + pattern: "*.{per-base.bed.gz.csi}" - regions_bed: - type: file - description: BED file with per-region coverage - pattern: "*.{regions.bed.gz}" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.regions.bed.gz": + type: file + description: BED file with per-region coverage + pattern: "*.{regions.bed.gz}" - regions_csi: - type: file - description: Index file for BED file with per-region coverage - pattern: "*.{regions.bed.gz.csi}" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.regions.bed.gz.csi": + type: file + description: Index file for BED file with per-region coverage + pattern: "*.{regions.bed.gz.csi}" - quantized_bed: - type: file - description: BED file with binned coverage - pattern: "*.{quantized.bed.gz}" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.quantized.bed.gz": + type: file + description: BED file with binned coverage + pattern: "*.{quantized.bed.gz}" - quantized_csi: - type: file - description: Index file for BED file with binned coverage - pattern: "*.{quantized.bed.gz.csi}" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.quantized.bed.gz.csi": + type: file + description: Index file for BED file with binned coverage + pattern: "*.{quantized.bed.gz.csi}" - thresholds_bed: - type: file - description: BED file with the number of bases in each region that are covered at or above each threshold - pattern: "*.{thresholds.bed.gz}" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.thresholds.bed.gz": + type: file + description: BED file with the number of bases in each region that are covered + at or above each threshold + pattern: "*.{thresholds.bed.gz}" - thresholds_csi: - type: file - description: Index file for BED file with threshold coverage - pattern: "*.{thresholds.bed.gz.csi}" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.thresholds.bed.gz.csi": + type: file + description: Index file for BED file with threshold coverage + pattern: "*.{thresholds.bed.gz.csi}" - versions: - type: file - description: File containing software versions - pattern: "versions.yml" + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" authors: - "@joseespinosa" - "@drpatelh" diff --git a/modules/nf-core/rtgtools/format/meta.yml b/modules/nf-core/rtgtools/format/meta.yml index 1991b807..e09aff3a 100644 --- a/modules/nf-core/rtgtools/format/meta.yml +++ b/modules/nf-core/rtgtools/format/meta.yml @@ -1,5 +1,6 @@ name: "rtgtools_format" -description: Converts the contents of sequence data files (FASTA/FASTQ/SAM/BAM) into the RTG Sequence Data File (SDF) format. +description: Converts the contents of sequence data files (FASTA/FASTQ/SAM/BAM) into + the RTG Sequence Data File (SDF) format. keywords: - rtg - fasta @@ -8,43 +9,49 @@ keywords: - sam tools: - "rtgtools": - description: "RealTimeGenomics Tools -- Utilities for accurate VCF comparison and manipulation" + description: "RealTimeGenomics Tools -- Utilities for accurate VCF comparison + and manipulation" homepage: "https://www.realtimegenomics.com/products/rtg-tools" documentation: "https://github.com/RealTimeGenomics/rtg-tools" tool_dev_url: "https://github.com/RealTimeGenomics/rtg-tools" licence: ["BSD"] + identifier: "" input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - input1: - type: file - description: FASTA, FASTQ, BAM or SAM file. This should be the left input file when using paired end FASTQ/FASTA data - pattern: "*.{fasta,fa,fna,fastq,fastq.gz,fq,fq.gz,bam,sam}" - - input2: - type: file - description: The right input file when using paired end FASTQ/FASTA data - pattern: "*.{fasta,fa,fna,fastq,fastq.gz,fq,fq.gz}" - - sam_rg: - type: file - description: A file containing a single readgroup header as a SAM header. This can also be supplied as a string in `task.ext.args` as `--sam-rg `. - pattern: "*.{txt,sam}" + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - input1: + type: file + description: FASTA, FASTQ, BAM or SAM file. This should be the left input file + when using paired end FASTQ/FASTA data + pattern: "*.{fasta,fa,fna,fastq,fastq.gz,fq,fq.gz,bam,sam}" + - input2: + type: file + description: The right input file when using paired end FASTQ/FASTA data + pattern: "*.{fasta,fa,fna,fastq,fastq.gz,fq,fq.gz}" + - sam_rg: + type: file + description: A file containing a single readgroup header as a SAM header. This + can also be supplied as a string in `task.ext.args` as `--sam-rg `. + pattern: "*.{txt,sam}" output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - versions: - type: file - description: File containing software versions - pattern: "versions.yml" - sdf: - type: directory - description: The sequence dictionary format folder created from the input file(s) - pattern: "*.sdf" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.sdf": + type: directory + description: The sequence dictionary format folder created from the input file(s) + pattern: "*.sdf" + - versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" authors: - "@nvnieuwk" maintainers: diff --git a/modules/nf-core/rtgtools/pedfilter/meta.yml b/modules/nf-core/rtgtools/pedfilter/meta.yml index 4e90fd7b..c8eee99d 100644 --- a/modules/nf-core/rtgtools/pedfilter/meta.yml +++ b/modules/nf-core/rtgtools/pedfilter/meta.yml @@ -7,37 +7,41 @@ keywords: - ped tools: - "rtgtools": - description: "RealTimeGenomics Tools -- Utilities for accurate VCF comparison and manipulation" + description: "RealTimeGenomics Tools -- Utilities for accurate VCF comparison + and manipulation" homepage: "https://www.realtimegenomics.com/products/rtg-tools" documentation: "https://github.com/RealTimeGenomics/rtg-tools" tool_dev_url: "https://github.com/RealTimeGenomics/rtg-tools" licence: ["BSD"] + identifier: "" input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - input: - type: file - description: The input file, can be either a PED or a VCF file - pattern: "*.{vcf,vcf.gz,ped}" + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - input: + type: file + description: The input file, can be either a PED or a VCF file + pattern: "*.{vcf,vcf.gz,ped}" output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - versions: - type: file - description: File containing software versions - pattern: "versions.yml" - output: - type: file - description: | - The output file, can be either a filtered PED file - or a VCF file containing the PED headers (needs --vcf as argument) - pattern: "*.{vcf.gz,ped}" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.{vcf.gz,ped}": + type: file + description: | + The output file, can be either a filtered PED file + or a VCF file containing the PED headers (needs --vcf as argument) + pattern: "*.{vcf.gz,ped}" + - versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" authors: - "@nvnieuwk" maintainers: diff --git a/modules/nf-core/rtgtools/rocplot/meta.yml b/modules/nf-core/rtgtools/rocplot/meta.yml index 2b4d43d7..8fccb318 100644 --- a/modules/nf-core/rtgtools/rocplot/meta.yml +++ b/modules/nf-core/rtgtools/rocplot/meta.yml @@ -1,5 +1,6 @@ name: "rtgtools_rocplot" -description: Plot ROC curves from vcfeval ROC data files, either to an image, or an interactive GUI. The interactive GUI isn't possible for nextflow. +description: Plot ROC curves from vcfeval ROC data files, either to an image, or an + interactive GUI. The interactive GUI isn't possible for nextflow. keywords: - rtgtools - rocplot @@ -7,39 +8,49 @@ keywords: - vcf tools: - "rtgtools": - description: "RealTimeGenomics Tools -- Utilities for accurate VCF comparison and manipulation" + description: "RealTimeGenomics Tools -- Utilities for accurate VCF comparison + and manipulation" homepage: "https://www.realtimegenomics.com/products/rtg-tools" documentation: "https://github.com/RealTimeGenomics/rtg-tools" tool_dev_url: "https://github.com/RealTimeGenomics/rtg-tools" licence: ["BSD"] + identifier: "" input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - input: - type: file - description: Input TSV ROC files created with RTGTOOLS_VCFEVAL - pattern: "*.tsv.gz" + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - input: + type: file + description: Input TSV ROC files created with RTGTOOLS_VCFEVAL + pattern: "*.tsv.gz" output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - versions: - type: file - description: File containing software versions - pattern: "versions.yml" - png: - type: file - description: The resulting rocplot in PNG format - pattern: "*.png" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.png": + type: file + description: The resulting rocplot in PNG format + pattern: "*.png" - svg: - type: file - description: The resulting rocplot in SVG format - pattern: "*.svg" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.svg": + type: file + description: The resulting rocplot in SVG format + pattern: "*.svg" + - versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" authors: - "@nvnieuwk" maintainers: diff --git a/modules/nf-core/rtgtools/rocplot/tests/main.nf.test b/modules/nf-core/rtgtools/rocplot/tests/main.nf.test index c7c37084..52c5386d 100644 --- a/modules/nf-core/rtgtools/rocplot/tests/main.nf.test +++ b/modules/nf-core/rtgtools/rocplot/tests/main.nf.test @@ -35,8 +35,8 @@ nextflow_process { file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gatk/haplotypecaller_calls/test2_haplotc.vcf.gz.tbi', checkIfExists: true), file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gatk/haplotypecaller_calls/test2_haplotc.ann.vcf.gz', checkIfExists: true), file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gatk/haplotypecaller_calls/test2_haplotc.ann.vcf.gz.tbi', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/multi_intervals.bed', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.bed', checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.bed', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/multi_intervals.bed', checkIfExists: true) ] input[1] = UNTAR.out.untar println(projectDir) diff --git a/modules/nf-core/samtools/convert/environment.yml b/modules/nf-core/samtools/convert/environment.yml index da2df5e4..62054fc9 100644 --- a/modules/nf-core/samtools/convert/environment.yml +++ b/modules/nf-core/samtools/convert/environment.yml @@ -1,6 +1,8 @@ +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json channels: - conda-forge - bioconda dependencies: - - bioconda::samtools=1.20 - - bioconda::htslib=1.20 + - bioconda::htslib=1.21 + - bioconda::samtools=1.21 diff --git a/modules/nf-core/samtools/convert/main.nf b/modules/nf-core/samtools/convert/main.nf index 03b7b525..cf9253d1 100644 --- a/modules/nf-core/samtools/convert/main.nf +++ b/modules/nf-core/samtools/convert/main.nf @@ -4,8 +4,8 @@ process SAMTOOLS_CONVERT { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/samtools:1.20--h50ea8bc_0' : - 'biocontainers/samtools:1.20--h50ea8bc_0' }" + 'https://depot.galaxyproject.org/singularity/samtools:1.21--h50ea8bc_0' : + 'biocontainers/samtools:1.21--h50ea8bc_0' }" input: tuple val(meta), path(input), path(index) diff --git a/modules/nf-core/samtools/convert/meta.yml b/modules/nf-core/samtools/convert/meta.yml index 55828971..d5bfa161 100644 --- a/modules/nf-core/samtools/convert/meta.yml +++ b/modules/nf-core/samtools/convert/meta.yml @@ -15,50 +15,85 @@ tools: documentation: http://www.htslib.org/doc/samtools.html doi: 10.1093/bioinformatics/btp352 licence: ["MIT"] + identifier: biotools:samtools input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - input: - type: file - description: BAM/CRAM file - pattern: "*.{bam,cram}" - - index: - type: file - description: BAM/CRAM index file - pattern: "*.{bai,crai}" - - fasta: - type: file - description: Reference file to create the CRAM file - pattern: "*.{fasta,fa}" + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - input: + type: file + description: BAM/CRAM file + pattern: "*.{bam,cram}" + - index: + type: file + description: BAM/CRAM index file + pattern: "*.{bai,crai}" + - - meta2: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - fasta: + type: file + description: Reference file to create the CRAM file + pattern: "*.{fasta,fa}" + - - meta3: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - fai: + type: file + description: Reference index file to create the CRAM file + pattern: "*.{fai}" output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - bam: - type: file - description: filtered/converted BAM file - pattern: "*{.bam}" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.bam": + type: file + description: filtered/converted BAM file + pattern: "*{.bam}" - cram: - type: file - description: filtered/converted CRAM file - pattern: "*{cram}" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.cram": + type: file + description: filtered/converted CRAM file + pattern: "*{cram}" - bai: - type: file - description: filtered/converted BAM index - pattern: "*{.bai}" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.bai": + type: file + description: filtered/converted BAM index + pattern: "*{.bai}" - crai: - type: file - description: filtered/converted CRAM index - pattern: "*{.crai}" - - version: - type: file - description: File containing software version - pattern: "*.{version.txt}" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.crai": + type: file + description: filtered/converted CRAM index + pattern: "*{.crai}" + - versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" authors: - "@FriederikeHanssen" - "@maxulysse" diff --git a/modules/nf-core/samtools/convert/tests/main.nf.test.snap b/modules/nf-core/samtools/convert/tests/main.nf.test.snap index 51362902..a021254e 100644 --- a/modules/nf-core/samtools/convert/tests/main.nf.test.snap +++ b/modules/nf-core/samtools/convert/tests/main.nf.test.snap @@ -22,26 +22,26 @@ "cram_to_bam_versions": { "content": [ [ - "versions.yml:md5,b1040cd80ce16abb9b2c2902b62d5fcd" + "versions.yml:md5,5bc6eb42ab2a1ea6661f8ee998467ad6" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-05-28T15:44:34.618037105" + "timestamp": "2024-09-16T07:52:35.516411351" }, "bam_to_cram_versions": { "content": [ [ - "versions.yml:md5,b1040cd80ce16abb9b2c2902b62d5fcd" + "versions.yml:md5,5bc6eb42ab2a1ea6661f8ee998467ad6" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-05-28T15:44:29.165839679" + "timestamp": "2024-09-16T07:52:24.694454205" }, "stub": { "content": [ @@ -71,7 +71,7 @@ ] ], "4": [ - "versions.yml:md5,b1040cd80ce16abb9b2c2902b62d5fcd" + "versions.yml:md5,5bc6eb42ab2a1ea6661f8ee998467ad6" ], "bai": [ @@ -98,15 +98,15 @@ ] ], "versions": [ - "versions.yml:md5,b1040cd80ce16abb9b2c2902b62d5fcd" + "versions.yml:md5,5bc6eb42ab2a1ea6661f8ee998467ad6" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-05-28T15:44:40.258233921" + "timestamp": "2024-09-16T07:52:45.799885099" }, "bam_to_cram_index": { "content": [ diff --git a/modules/nf-core/samtools/faidx/environment.yml b/modules/nf-core/samtools/faidx/environment.yml index f8450fa5..62054fc9 100644 --- a/modules/nf-core/samtools/faidx/environment.yml +++ b/modules/nf-core/samtools/faidx/environment.yml @@ -1,10 +1,8 @@ -name: samtools_faidx - +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json channels: - conda-forge - bioconda - - defaults - dependencies: - - bioconda::htslib=1.20 - - bioconda::samtools=1.20 + - bioconda::htslib=1.21 + - bioconda::samtools=1.21 diff --git a/modules/nf-core/samtools/faidx/main.nf b/modules/nf-core/samtools/faidx/main.nf index bdcdbc95..28c0a81c 100644 --- a/modules/nf-core/samtools/faidx/main.nf +++ b/modules/nf-core/samtools/faidx/main.nf @@ -4,8 +4,8 @@ process SAMTOOLS_FAIDX { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/samtools:1.20--h50ea8bc_0' : - 'biocontainers/samtools:1.20--h50ea8bc_0' }" + 'https://depot.galaxyproject.org/singularity/samtools:1.21--h50ea8bc_0' : + 'biocontainers/samtools:1.21--h50ea8bc_0' }" input: tuple val(meta), path(fasta) diff --git a/modules/nf-core/samtools/faidx/meta.yml b/modules/nf-core/samtools/faidx/meta.yml index f3c25de2..6721b2cb 100644 --- a/modules/nf-core/samtools/faidx/meta.yml +++ b/modules/nf-core/samtools/faidx/meta.yml @@ -14,47 +14,62 @@ tools: documentation: http://www.htslib.org/doc/samtools.html doi: 10.1093/bioinformatics/btp352 licence: ["MIT"] + identifier: biotools:samtools input: - - meta: - type: map - description: | - Groovy Map containing reference information - e.g. [ id:'test' ] - - fasta: - type: file - description: FASTA file - pattern: "*.{fa,fasta}" - - meta2: - type: map - description: | - Groovy Map containing reference information - e.g. [ id:'test' ] - - fai: - type: file - description: FASTA index file - pattern: "*.{fai}" + - - meta: + type: map + description: | + Groovy Map containing reference information + e.g. [ id:'test' ] + - fasta: + type: file + description: FASTA file + pattern: "*.{fa,fasta}" + - - meta2: + type: map + description: | + Groovy Map containing reference information + e.g. [ id:'test' ] + - fai: + type: file + description: FASTA index file + pattern: "*.{fai}" output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - fa: - type: file - description: FASTA file - pattern: "*.{fa}" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.{fa,fasta}": + type: file + description: FASTA file + pattern: "*.{fa}" - fai: - type: file - description: FASTA index file - pattern: "*.{fai}" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.fai": + type: file + description: FASTA index file + pattern: "*.{fai}" - gzi: - type: file - description: Optional gzip index file for compressed inputs - pattern: "*.gzi" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.gzi": + type: file + description: Optional gzip index file for compressed inputs + pattern: "*.gzi" - versions: - type: file - description: File containing software versions - pattern: "versions.yml" + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" authors: - "@drpatelh" - "@ewels" diff --git a/modules/nf-core/samtools/faidx/tests/main.nf.test.snap b/modules/nf-core/samtools/faidx/tests/main.nf.test.snap index 3223b72b..1bbb3ec2 100644 --- a/modules/nf-core/samtools/faidx/tests/main.nf.test.snap +++ b/modules/nf-core/samtools/faidx/tests/main.nf.test.snap @@ -18,7 +18,7 @@ ], "3": [ - "versions.yml:md5,2db78952923a61e05d50b95518b21856" + "versions.yml:md5,6bbe80a2e14bd61202ca63e12d66027f" ], "fa": [ @@ -36,15 +36,15 @@ ], "versions": [ - "versions.yml:md5,2db78952923a61e05d50b95518b21856" + "versions.yml:md5,6bbe80a2e14bd61202ca63e12d66027f" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-05-28T15:42:14.779784761" + "timestamp": "2024-09-16T07:57:47.450887871" }, "test_samtools_faidx_bgzip": { "content": [ @@ -71,7 +71,7 @@ ] ], "3": [ - "versions.yml:md5,2db78952923a61e05d50b95518b21856" + "versions.yml:md5,6bbe80a2e14bd61202ca63e12d66027f" ], "fa": [ @@ -95,15 +95,15 @@ ] ], "versions": [ - "versions.yml:md5,2db78952923a61e05d50b95518b21856" + "versions.yml:md5,6bbe80a2e14bd61202ca63e12d66027f" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-05-28T15:42:20.256633877" + "timestamp": "2024-09-16T07:58:04.804905659" }, "test_samtools_faidx_fasta": { "content": [ @@ -124,7 +124,7 @@ ], "3": [ - "versions.yml:md5,2db78952923a61e05d50b95518b21856" + "versions.yml:md5,6bbe80a2e14bd61202ca63e12d66027f" ], "fa": [ [ @@ -142,15 +142,15 @@ ], "versions": [ - "versions.yml:md5,2db78952923a61e05d50b95518b21856" + "versions.yml:md5,6bbe80a2e14bd61202ca63e12d66027f" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-05-28T15:42:25.632577273" + "timestamp": "2024-09-16T07:58:23.831268154" }, "test_samtools_faidx_stub_fasta": { "content": [ @@ -171,7 +171,7 @@ ], "3": [ - "versions.yml:md5,2db78952923a61e05d50b95518b21856" + "versions.yml:md5,6bbe80a2e14bd61202ca63e12d66027f" ], "fa": [ [ @@ -189,15 +189,15 @@ ], "versions": [ - "versions.yml:md5,2db78952923a61e05d50b95518b21856" + "versions.yml:md5,6bbe80a2e14bd61202ca63e12d66027f" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-05-28T15:42:31.058424849" + "timestamp": "2024-09-16T07:58:35.600243706" }, "test_samtools_faidx_stub_fai": { "content": [ @@ -218,7 +218,7 @@ ], "3": [ - "versions.yml:md5,2db78952923a61e05d50b95518b21856" + "versions.yml:md5,6bbe80a2e14bd61202ca63e12d66027f" ], "fa": [ @@ -236,14 +236,14 @@ ], "versions": [ - "versions.yml:md5,2db78952923a61e05d50b95518b21856" + "versions.yml:md5,6bbe80a2e14bd61202ca63e12d66027f" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-05-28T15:42:36.479929617" + "timestamp": "2024-09-16T07:58:54.705460167" } } \ No newline at end of file diff --git a/modules/nf-core/samtools/index/environment.yml b/modules/nf-core/samtools/index/environment.yml index da2df5e4..62054fc9 100644 --- a/modules/nf-core/samtools/index/environment.yml +++ b/modules/nf-core/samtools/index/environment.yml @@ -1,6 +1,8 @@ +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json channels: - conda-forge - bioconda dependencies: - - bioconda::samtools=1.20 - - bioconda::htslib=1.20 + - bioconda::htslib=1.21 + - bioconda::samtools=1.21 diff --git a/modules/nf-core/samtools/index/main.nf b/modules/nf-core/samtools/index/main.nf index e002585b..31175610 100644 --- a/modules/nf-core/samtools/index/main.nf +++ b/modules/nf-core/samtools/index/main.nf @@ -4,8 +4,8 @@ process SAMTOOLS_INDEX { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/samtools:1.20--h50ea8bc_0' : - 'biocontainers/samtools:1.20--h50ea8bc_0' }" + 'https://depot.galaxyproject.org/singularity/samtools:1.21--h50ea8bc_0' : + 'biocontainers/samtools:1.21--h50ea8bc_0' }" input: tuple val(meta), path(input) diff --git a/modules/nf-core/samtools/index/meta.yml b/modules/nf-core/samtools/index/meta.yml index 01a4ee03..db8df0d5 100644 --- a/modules/nf-core/samtools/index/meta.yml +++ b/modules/nf-core/samtools/index/meta.yml @@ -15,38 +15,52 @@ tools: documentation: http://www.htslib.org/doc/samtools.html doi: 10.1093/bioinformatics/btp352 licence: ["MIT"] + identifier: biotools:samtools input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - bam: - type: file - description: BAM/CRAM/SAM file - pattern: "*.{bam,cram,sam}" + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - input: + type: file + description: input file output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - bai: - type: file - description: BAM/CRAM/SAM index file - pattern: "*.{bai,crai,sai}" - - crai: - type: file - description: BAM/CRAM/SAM index file - pattern: "*.{bai,crai,sai}" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.bai": + type: file + description: BAM/CRAM/SAM index file + pattern: "*.{bai,crai,sai}" - csi: - type: file - description: CSI index file - pattern: "*.{csi}" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.csi": + type: file + description: CSI index file + pattern: "*.{csi}" + - crai: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.crai": + type: file + description: BAM/CRAM/SAM index file + pattern: "*.{bai,crai,sai}" - versions: - type: file - description: File containing software versions - pattern: "versions.yml" + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" authors: - "@drpatelh" - "@ewels" diff --git a/modules/nf-core/samtools/index/tests/main.nf.test.snap b/modules/nf-core/samtools/index/tests/main.nf.test.snap index 799d199c..72d65e81 100644 --- a/modules/nf-core/samtools/index/tests/main.nf.test.snap +++ b/modules/nf-core/samtools/index/tests/main.nf.test.snap @@ -18,7 +18,7 @@ ], "3": [ - "versions.yml:md5,802c9776d9c5e95314e888cf18e96d77" + "versions.yml:md5,5e09a6fdf76de396728f877193d72315" ], "bai": [ @@ -36,15 +36,15 @@ ] ], "versions": [ - "versions.yml:md5,802c9776d9c5e95314e888cf18e96d77" + "versions.yml:md5,5e09a6fdf76de396728f877193d72315" ] } ], "meta": { "nf-test": "0.9.0", - "nextflow": "24.04.3" + "nextflow": "24.04.4" }, - "timestamp": "2024-07-22T16:51:53.9057" + "timestamp": "2024-09-16T08:21:25.261127166" }, "crai - stub": { "content": [ @@ -65,7 +65,7 @@ ] ], "3": [ - "versions.yml:md5,802c9776d9c5e95314e888cf18e96d77" + "versions.yml:md5,5e09a6fdf76de396728f877193d72315" ], "bai": [ @@ -83,15 +83,15 @@ ], "versions": [ - "versions.yml:md5,802c9776d9c5e95314e888cf18e96d77" + "versions.yml:md5,5e09a6fdf76de396728f877193d72315" ] } ], "meta": { "nf-test": "0.9.0", - "nextflow": "24.04.3" + "nextflow": "24.04.4" }, - "timestamp": "2024-07-22T16:51:45.931558" + "timestamp": "2024-09-16T08:21:12.653194876" }, "bai - stub": { "content": [ @@ -112,7 +112,7 @@ ], "3": [ - "versions.yml:md5,802c9776d9c5e95314e888cf18e96d77" + "versions.yml:md5,5e09a6fdf76de396728f877193d72315" ], "bai": [ [ @@ -130,28 +130,28 @@ ], "versions": [ - "versions.yml:md5,802c9776d9c5e95314e888cf18e96d77" + "versions.yml:md5,5e09a6fdf76de396728f877193d72315" ] } ], "meta": { "nf-test": "0.9.0", - "nextflow": "24.04.3" + "nextflow": "24.04.4" }, - "timestamp": "2024-07-22T16:51:34.807525" + "timestamp": "2024-09-16T08:21:01.854932651" }, "csi": { "content": [ "test.paired_end.sorted.bam.csi", [ - "versions.yml:md5,802c9776d9c5e95314e888cf18e96d77" + "versions.yml:md5,5e09a6fdf76de396728f877193d72315" ] ], "meta": { "nf-test": "0.9.0", - "nextflow": "24.04.3" + "nextflow": "24.04.4" }, - "timestamp": "2024-07-22T16:52:55.688799" + "timestamp": "2024-09-16T08:20:51.485364222" }, "crai": { "content": [ @@ -172,7 +172,7 @@ ] ], "3": [ - "versions.yml:md5,802c9776d9c5e95314e888cf18e96d77" + "versions.yml:md5,5e09a6fdf76de396728f877193d72315" ], "bai": [ @@ -190,15 +190,15 @@ ], "versions": [ - "versions.yml:md5,802c9776d9c5e95314e888cf18e96d77" + "versions.yml:md5,5e09a6fdf76de396728f877193d72315" ] } ], "meta": { "nf-test": "0.9.0", - "nextflow": "24.04.3" + "nextflow": "24.04.4" }, - "timestamp": "2024-07-22T16:51:17.609533" + "timestamp": "2024-09-16T08:20:40.518873972" }, "bai": { "content": [ @@ -219,7 +219,7 @@ ], "3": [ - "versions.yml:md5,802c9776d9c5e95314e888cf18e96d77" + "versions.yml:md5,5e09a6fdf76de396728f877193d72315" ], "bai": [ [ @@ -237,14 +237,14 @@ ], "versions": [ - "versions.yml:md5,802c9776d9c5e95314e888cf18e96d77" + "versions.yml:md5,5e09a6fdf76de396728f877193d72315" ] } ], "meta": { "nf-test": "0.9.0", - "nextflow": "24.04.3" + "nextflow": "24.04.4" }, - "timestamp": "2024-07-22T16:51:04.16585" + "timestamp": "2024-09-16T08:20:21.184050361" } } \ No newline at end of file diff --git a/modules/nf-core/samtools/merge/environment.yml b/modules/nf-core/samtools/merge/environment.yml index da2df5e4..62054fc9 100644 --- a/modules/nf-core/samtools/merge/environment.yml +++ b/modules/nf-core/samtools/merge/environment.yml @@ -1,6 +1,8 @@ +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json channels: - conda-forge - bioconda dependencies: - - bioconda::samtools=1.20 - - bioconda::htslib=1.20 + - bioconda::htslib=1.21 + - bioconda::samtools=1.21 diff --git a/modules/nf-core/samtools/merge/main.nf b/modules/nf-core/samtools/merge/main.nf index 693b1d80..34da4c7c 100644 --- a/modules/nf-core/samtools/merge/main.nf +++ b/modules/nf-core/samtools/merge/main.nf @@ -4,8 +4,8 @@ process SAMTOOLS_MERGE { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/samtools:1.20--h50ea8bc_0' : - 'biocontainers/samtools:1.20--h50ea8bc_0' }" + 'https://depot.galaxyproject.org/singularity/samtools:1.21--h50ea8bc_0' : + 'biocontainers/samtools:1.21--h50ea8bc_0' }" input: tuple val(meta), path(input_files, stageAs: "?/*") diff --git a/modules/nf-core/samtools/merge/meta.yml b/modules/nf-core/samtools/merge/meta.yml index 2e8f3dbb..235aa219 100644 --- a/modules/nf-core/samtools/merge/meta.yml +++ b/modules/nf-core/samtools/merge/meta.yml @@ -15,60 +15,81 @@ tools: documentation: http://www.htslib.org/doc/samtools.html doi: 10.1093/bioinformatics/btp352 licence: ["MIT"] + identifier: biotools:samtools input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - input_files: - type: file - description: BAM/CRAM file - pattern: "*.{bam,cram,sam}" - - meta2: - type: map - description: | - Groovy Map containing reference information - e.g. [ id:'genome' ] - - fasta: - type: file - description: Reference file the CRAM was created with (optional) - pattern: "*.{fasta,fa}" - - meta3: - type: map - description: | - Groovy Map containing reference information - e.g. [ id:'genome' ] - - fai: - type: file - description: Index of the reference file the CRAM was created with (optional) - pattern: "*.fai" + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - input_files: + type: file + description: BAM/CRAM file + pattern: "*.{bam,cram,sam}" + - - meta2: + type: map + description: | + Groovy Map containing reference information + e.g. [ id:'genome' ] + - fasta: + type: file + description: Reference file the CRAM was created with (optional) + pattern: "*.{fasta,fa}" + - - meta3: + type: map + description: | + Groovy Map containing reference information + e.g. [ id:'genome' ] + - fai: + type: file + description: Index of the reference file the CRAM was created with (optional) + pattern: "*.fai" output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - bam: - type: file - description: BAM file - pattern: "*.{bam}" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - ${prefix}.bam: + type: file + description: BAM file + pattern: "*.{bam}" - cram: - type: file - description: CRAM file - pattern: "*.{cram}" - - versions: - type: file - description: File containing software versions - pattern: "versions.yml" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - ${prefix}.cram: + type: file + description: CRAM file + pattern: "*.{cram}" - csi: - type: file - description: BAM index file (optional) - pattern: "*.csi" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.csi": + type: file + description: BAM index file (optional) + pattern: "*.csi" - crai: - type: file - description: CRAM index file (optional) - pattern: "*.crai" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.crai": + type: file + description: CRAM index file (optional) + pattern: "*.crai" + - versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" authors: - "@drpatelh" - "@yuukiiwa " diff --git a/modules/nf-core/samtools/merge/tests/main.nf.test.snap b/modules/nf-core/samtools/merge/tests/main.nf.test.snap index 17bc846f..0a41e01a 100644 --- a/modules/nf-core/samtools/merge/tests/main.nf.test.snap +++ b/modules/nf-core/samtools/merge/tests/main.nf.test.snap @@ -80,14 +80,14 @@ "bam_versions": { "content": [ [ - "versions.yml:md5,84dab54b9812780df48f5cecef690c34" + "versions.yml:md5,d51d18a97513e370e43f0c891c51dfc4" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-05-28T15:46:35.851936597" + "timestamp": "2024-09-16T09:16:30.476887194" }, "bams_csi": { "content": [ @@ -124,14 +124,14 @@ "bams_stub_versions": { "content": [ [ - "versions.yml:md5,84dab54b9812780df48f5cecef690c34" + "versions.yml:md5,d51d18a97513e370e43f0c891c51dfc4" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-05-28T15:46:41.405707643" + "timestamp": "2024-09-16T09:16:52.203823961" }, "bam_cram": { "content": [ @@ -158,14 +158,14 @@ "bams_versions": { "content": [ [ - "versions.yml:md5,84dab54b9812780df48f5cecef690c34" + "versions.yml:md5,d51d18a97513e370e43f0c891c51dfc4" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-05-28T15:45:51.695689923" + "timestamp": "2024-09-16T08:29:57.524363148" }, "crams_bam": { "content": [ @@ -182,14 +182,14 @@ "crams_versions": { "content": [ [ - "versions.yml:md5,84dab54b9812780df48f5cecef690c34" + "versions.yml:md5,d51d18a97513e370e43f0c891c51dfc4" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-05-28T15:46:30.185392319" + "timestamp": "2024-09-16T09:16:06.977096207" }, "bam_csi": { "content": [ diff --git a/modules/nf-core/snpeff/snpeff/meta.yml b/modules/nf-core/snpeff/snpeff/meta.yml index 7559c3de..ef3d495a 100644 --- a/modules/nf-core/snpeff/snpeff/meta.yml +++ b/modules/nf-core/snpeff/snpeff/meta.yml @@ -14,46 +14,76 @@ tools: homepage: https://pcingola.github.io/SnpEff/ documentation: https://pcingola.github.io/SnpEff/se_introduction/ licence: ["MIT"] + identifier: biotools:snpeff input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - vcf: - type: file - description: | - vcf to annotate - - db: - type: string - description: | - which db to annotate with - - cache: - type: file - description: | - path to snpEff cache (optional) + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - vcf: + type: file + description: | + vcf to annotate + - - db: + type: string + description: | + which db to annotate with + - - meta2: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - cache: + type: file + description: | + path to snpEff cache (optional) output: - vcf: - type: file - description: | - annotated vcf - pattern: "*.ann.vcf" + - meta: + type: file + description: | + annotated vcf + pattern: "*.ann.vcf" + - "*.ann.vcf": + type: file + description: | + annotated vcf + pattern: "*.ann.vcf" - report: - type: file - description: snpEff report csv file - pattern: "*.csv" + - meta: + type: file + description: snpEff report csv file + pattern: "*.csv" + - "*.csv": + type: file + description: snpEff report csv file + pattern: "*.csv" - summary_html: - type: file - description: snpEff summary statistics in html file - pattern: "*.html" + - meta: + type: file + description: snpEff summary statistics in html file + pattern: "*.html" + - "*.html": + type: file + description: snpEff summary statistics in html file + pattern: "*.html" - genes_txt: - type: file - description: txt (tab separated) file having counts of the number of variants affecting each transcript and gene - pattern: "*.genes.txt" + - meta: + type: file + description: txt (tab separated) file having counts of the number of variants + affecting each transcript and gene + pattern: "*.genes.txt" + - "*.genes.txt": + type: file + description: txt (tab separated) file having counts of the number of variants + affecting each transcript and gene + pattern: "*.genes.txt" - versions: - type: file - description: File containing software versions - pattern: "versions.yml" + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" authors: - "@maxulysse" maintainers: diff --git a/modules/nf-core/snpeff/snpeff/tests/main.nf.test b/modules/nf-core/snpeff/snpeff/tests/main.nf.test index 803ff02c..2be0b7d7 100644 --- a/modules/nf-core/snpeff/snpeff/tests/main.nf.test +++ b/modules/nf-core/snpeff/snpeff/tests/main.nf.test @@ -18,7 +18,7 @@ nextflow_process { script "../../download/main.nf" process { """ - input[0] = Channel.of([[id:params.snpeff_genome + '.' + params.snpeff_cache_version], params.snpeff_genome, params.snpeff_cache_version]) + input[0] = Channel.of([[id:params.snpeff_db], params.snpeff_db]) """ } } @@ -31,7 +31,7 @@ nextflow_process { [ id:'test' ], // meta map file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf', checkIfExists: true) ]) - input[1] = params.snpeff_genome + '.' + params.snpeff_cache_version + input[1] = params.snpeff_db input[2] = SNPEFF_DOWNLOAD.out.cache """ } diff --git a/modules/nf-core/snpeff/snpeff/tests/nextflow.config b/modules/nf-core/snpeff/snpeff/tests/nextflow.config index d31ebf6b..a950a047 100644 --- a/modules/nf-core/snpeff/snpeff/tests/nextflow.config +++ b/modules/nf-core/snpeff/snpeff/tests/nextflow.config @@ -1,4 +1,3 @@ params { - snpeff_cache_version = "105" - snpeff_genome = "WBcel235" + snpeff_db = "WBcel235.105" } diff --git a/modules/nf-core/somalier/extract/meta.yml b/modules/nf-core/somalier/extract/meta.yml index aabaf5d6..25621667 100644 --- a/modules/nf-core/somalier/extract/meta.yml +++ b/modules/nf-core/somalier/extract/meta.yml @@ -1,5 +1,6 @@ name: "somalier_extract" -description: Somalier can extract informative sites, evaluate relatedness, and perform quality-control on BAM/CRAM/BCF/VCF/GVCF or from jointly-called VCFs +description: Somalier can extract informative sites, evaluate relatedness, and perform + quality-control on BAM/CRAM/BCF/VCF/GVCF or from jointly-called VCFs keywords: - relatedness - QC @@ -14,65 +15,69 @@ keywords: - family tools: - "somalier": - description: "Somalier can extract informative sites, evaluate relatedness, and perform quality-control on BAM/CRAM/BCF/VCF/GVCF or from jointly-called VCFs" + description: "Somalier can extract informative sites, evaluate relatedness, and + perform quality-control on BAM/CRAM/BCF/VCF/GVCF or from jointly-called VCFs" homepage: "https://github.com/brentp/somalier" documentation: "https://github.com/brentp/somalier/blob/master/README.md" tool_dev_url: "https://github.com/brentp/somalier" doi: "10.1186/s13073-020-00761-2" licence: ["MIT"] + identifier: biotools:somalier input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - input: - type: file - description: BAM/CRAM/SAM/BCF/VCF/GVCF or jointly-called VCF file - - input_index: - type: file - description: index file of the input data, e.g., bam.bai, cram.crai - - meta2: - type: map - description: | - Groovy Map containing reference information - e.g. [ id:'hg38' ] - - fasta: - type: file - description: The reference fasta file - pattern: "*.{fasta,fna,fas,fa}" - - meta3: - type: map - description: | - Groovy Map containing reference information - e.g. [ id:'hg38' ] - - fai: - type: file - description: FASTA index file - pattern: "*.fai" - - meta4: - type: map - description: | - Groovy Map containing sites information - e.g. [ id:'hg38' ] - - sites: - type: file - description: sites file in VCF format which can be taken from https://github.com/brentp/somalier - pattern: "*.vcf.gz" + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - input: + type: file + description: BAM/CRAM/SAM/BCF/VCF/GVCF or jointly-called VCF file + - input_index: + type: file + description: index file of the input data, e.g., bam.bai, cram.crai + - - meta2: + type: map + description: | + Groovy Map containing reference information + e.g. [ id:'hg38' ] + - fasta: + type: file + description: The reference fasta file + pattern: "*.{fasta,fna,fas,fa}" + - - meta3: + type: map + description: | + Groovy Map containing reference information + e.g. [ id:'hg38' ] + - fai: + type: file + description: FASTA index file + pattern: "*.fai" + - - meta4: + type: map + description: | + Groovy Map containing sites information + e.g. [ id:'hg38' ] + - sites: + type: file + description: sites file in VCF format which can be taken from https://github.com/brentp/somalier + pattern: "*.vcf.gz" output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - versions: - type: file - description: File containing software versions - pattern: "versions.yml" - extract: - type: file - description: binary output file based on extracted sites - pattern: "*.{somalier}" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.somalier": + type: file + description: binary output file based on extracted sites + pattern: "*.{somalier}" + - versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" authors: - "@ashotmarg" - "@nvnieuwk" diff --git a/modules/nf-core/somalier/relate/meta.yml b/modules/nf-core/somalier/relate/meta.yml index 42638f4f..0da72821 100644 --- a/modules/nf-core/somalier/relate/meta.yml +++ b/modules/nf-core/somalier/relate/meta.yml @@ -1,5 +1,6 @@ name: "somalier_relate" -description: Somalier can extract informative sites, evaluate relatedness, and perform quality-control on BAM/CRAM/BCF/VCF/GVCF or from jointly-called VCFs +description: Somalier can extract informative sites, evaluate relatedness, and perform + quality-control on BAM/CRAM/BCF/VCF/GVCF or from jointly-called VCFs keywords: - relatedness - QC @@ -14,47 +15,67 @@ keywords: - family tools: - "somalier": - description: "Somalier can extract informative sites, evaluate relatedness, and perform quality-control on BAM/CRAM/BCF/VCF/GVCF or from jointly-called VCFs" + description: "Somalier can extract informative sites, evaluate relatedness, and + perform quality-control on BAM/CRAM/BCF/VCF/GVCF or from jointly-called VCFs" homepage: "https://github.com/brentp/somalier" documentation: "https://github.com/brentp/somalier/blob/master/README.md" tool_dev_url: "https://github.com/brentp/somalier" doi: "10.1186/s13073-020-00761-2" licence: ["MIT"] + identifier: biotools:somalier input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - extract: - type: file - description: extract file(s) from Somalier extract - pattern: "*.somalier" - - ped: - type: file - description: optional path to a ped or fam file indicating the expected relationships among samples - pattern: "*.{ped,fam}" - - sample_groups: - type: file - description: optional path to expected groups of samples such as tumor normal pairs specified as comma-separated groups per line - pattern: "*.{txt,csv}" + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - extract: + type: file + description: extract file(s) from Somalier extract + pattern: "*.somalier" + - ped: + type: file + description: optional path to a ped or fam file indicating the expected relationships + among samples + pattern: "*.{ped,fam}" + - - sample_groups: + type: file + description: optional path to expected groups of samples such as tumor normal + pairs specified as comma-separated groups per line + pattern: "*.{txt,csv}" output: - - versions: - type: file - description: File containing software versions - pattern: "versions.yml" - html: - type: file - description: html file - pattern: "*.html" + - meta: + type: file + description: html file + pattern: "*.html" + - "*.html": + type: file + description: html file + pattern: "*.html" - pairs_tsv: - type: file - description: tsv file with output stats for pairs of samples - pattern: "*.pairs.tsv" + - meta: + type: file + description: tsv file with output stats for pairs of samples + pattern: "*.pairs.tsv" + - "*.pairs.tsv": + type: file + description: tsv file with output stats for pairs of samples + pattern: "*.pairs.tsv" - samples_tsv: - type: file - description: tsv file with sample-level information - pattern: "*.samples.tsv" + - meta: + type: file + description: tsv file with sample-level information + pattern: "*.samples.tsv" + - "*.samples.tsv": + type: file + description: tsv file with sample-level information + pattern: "*.samples.tsv" + - versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" authors: - "@ashotmarg" - "@nvnieuwk" diff --git a/modules/nf-core/tabix/bgzip/environment.yml b/modules/nf-core/tabix/bgzip/environment.yml index c863e920..017c259d 100644 --- a/modules/nf-core/tabix/bgzip/environment.yml +++ b/modules/nf-core/tabix/bgzip/environment.yml @@ -1,6 +1,7 @@ channels: - conda-forge - bioconda + dependencies: - - bioconda::tabix=1.11 - bioconda::htslib=1.20 + - bioconda::tabix=1.11 diff --git a/modules/nf-core/tabix/bgzip/meta.yml b/modules/nf-core/tabix/bgzip/meta.yml index 621d49ea..131e92cf 100644 --- a/modules/nf-core/tabix/bgzip/meta.yml +++ b/modules/nf-core/tabix/bgzip/meta.yml @@ -13,33 +13,42 @@ tools: documentation: http://www.htslib.org/doc/bgzip.html doi: 10.1093/bioinformatics/btp352 licence: ["MIT"] + identifier: biotools:tabix input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - input: - type: file - description: file to compress or to decompress + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - input: + type: file + description: file to compress or to decompress output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - output: - type: file - description: Output compressed/decompressed file - pattern: "*." + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - ${output}: + type: file + description: Output compressed/decompressed file + pattern: "*." - gzi: - type: file - description: Optional gzip index file for compressed inputs - pattern: "*.gzi" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - ${output}.gzi: + type: file + description: Optional gzip index file for compressed inputs + pattern: "*.gzi" - versions: - type: file - description: File containing software versions - pattern: "versions.yml" + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" authors: - "@joseespinosa" - "@drpatelh" diff --git a/modules/nf-core/tabix/bgziptabix/environment.yml b/modules/nf-core/tabix/bgziptabix/environment.yml index c863e920..017c259d 100644 --- a/modules/nf-core/tabix/bgziptabix/environment.yml +++ b/modules/nf-core/tabix/bgziptabix/environment.yml @@ -1,6 +1,7 @@ channels: - conda-forge - bioconda + dependencies: - - bioconda::tabix=1.11 - bioconda::htslib=1.20 + - bioconda::tabix=1.11 diff --git a/modules/nf-core/tabix/bgziptabix/main.nf b/modules/nf-core/tabix/bgziptabix/main.nf index 05041f49..22f37a77 100644 --- a/modules/nf-core/tabix/bgziptabix/main.nf +++ b/modules/nf-core/tabix/bgziptabix/main.nf @@ -34,10 +34,11 @@ process TABIX_BGZIPTABIX { stub: def prefix = task.ext.prefix ?: "${meta.id}" + def args2 = task.ext.args2 ?: '' + def index = args2.contains("-C ") || args2.contains("--csi") ? "csi" : "tbi" """ echo "" | gzip > ${prefix}.${input.getExtension()}.gz - touch ${prefix}.${input.getExtension()}.gz.tbi - touch ${prefix}.${input.getExtension()}.gz.csi + touch ${prefix}.${input.getExtension()}.gz.${index} cat <<-END_VERSIONS > versions.yml "${task.process}": diff --git a/modules/nf-core/tabix/bgziptabix/meta.yml b/modules/nf-core/tabix/bgziptabix/meta.yml index 438aba4d..806fbc12 100644 --- a/modules/nf-core/tabix/bgziptabix/meta.yml +++ b/modules/nf-core/tabix/bgziptabix/meta.yml @@ -13,38 +13,50 @@ tools: documentation: https://www.htslib.org/doc/tabix.1.html doi: 10.1093/bioinformatics/btq671 licence: ["MIT"] + identifier: biotools:tabix input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - tab: - type: file - description: TAB-delimited genome position file - pattern: "*.{bed,gff,sam,vcf}" + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - input: + type: file + description: Sorted tab-delimited genome file output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - gz: - type: file - description: Output compressed file - pattern: "*.{gz}" - - tbi: - type: file - description: tabix index file - pattern: "*.{gz.tbi}" - - csi: - type: file - description: tabix alternate index file - pattern: "*.{gz.csi}" + - gz_tbi: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.gz": + type: file + description: bgzipped tab-delimited genome file + pattern: "*.gz" + - "*.tbi": + type: file + description: tabix index file + pattern: "*.tbi" + - gz_csi: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.gz": + type: file + description: bgzipped tab-delimited genome file + pattern: "*.gz" + - "*.csi": + type: file + description: csi index file + pattern: "*.csi" - versions: - type: file - description: File containing software versions - pattern: "versions.yml" + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" authors: - "@maxulysse" - "@DLBPointon" diff --git a/modules/nf-core/tabix/bgziptabix/tests/main.nf.test b/modules/nf-core/tabix/bgziptabix/tests/main.nf.test index 1a84d74f..4d4130dc 100644 --- a/modules/nf-core/tabix/bgziptabix/tests/main.nf.test +++ b/modules/nf-core/tabix/bgziptabix/tests/main.nf.test @@ -91,4 +91,33 @@ nextflow_process { } + test("sarscov2_bed_tbi_stub") { + config "./tabix_tbi.config" + + options "-stub" + + when { + process { + """ + input[0] = [ + [ id:'test' ], + [ file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/bed/test.bed', checkIfExists: true) ] + ] + """ + } + } + + then { + assertAll ( + { assert process.success }, + { assert snapshot(process.out).match() }, + { assert snapshot( + file(process.out.gz_tbi[0][1]).name + ).match("tbi_stub") + } + ) + } + + } + } diff --git a/modules/nf-core/tabix/bgziptabix/tests/main.nf.test.snap b/modules/nf-core/tabix/bgziptabix/tests/main.nf.test.snap index c166ea72..fb87799b 100644 --- a/modules/nf-core/tabix/bgziptabix/tests/main.nf.test.snap +++ b/modules/nf-core/tabix/bgziptabix/tests/main.nf.test.snap @@ -91,6 +91,47 @@ }, "timestamp": "2024-02-19T14:51:00.548801" }, + "sarscov2_bed_tbi_stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.bed.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "test.bed.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + + ], + "2": [ + "versions.yml:md5,736e7c3b16a3ac525253e5b5f5d8fdfa" + ], + "gz_csi": [ + + ], + "gz_tbi": [ + [ + { + "id": "test" + }, + "test.bed.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "test.bed.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,736e7c3b16a3ac525253e5b5f5d8fdfa" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-09-25T14:45:18.533169949" + }, "csi_stub": { "content": [ "test.bed.gz" @@ -101,6 +142,16 @@ }, "timestamp": "2024-02-19T14:51:09.218454" }, + "tbi_stub": { + "content": [ + "test.bed.gz" + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-09-25T14:45:18.550930179" + }, "tbi_test": { "content": [ "tbi_test.bed.gz" @@ -115,13 +166,7 @@ "content": [ { "0": [ - [ - { - "id": "test" - }, - "test.bed.gz:md5,68b329da9893e34099c7d8ad5cb9c940", - "test.bed.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" - ] + ], "1": [ [ @@ -145,13 +190,7 @@ ] ], "gz_tbi": [ - [ - { - "id": "test" - }, - "test.bed.gz:md5,68b329da9893e34099c7d8ad5cb9c940", - "test.bed.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" - ] + ], "versions": [ "versions.yml:md5,736e7c3b16a3ac525253e5b5f5d8fdfa" @@ -159,9 +198,9 @@ } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-07-19T11:29:45.105209991" + "timestamp": "2024-09-25T14:44:19.786135972" } } \ 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 4d1f9dd4..017c259d 100644 --- a/modules/nf-core/tabix/tabix/environment.yml +++ b/modules/nf-core/tabix/tabix/environment.yml @@ -1,9 +1,6 @@ -name: tabix_tabix - channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::htslib=1.20 diff --git a/modules/nf-core/tabix/tabix/meta.yml b/modules/nf-core/tabix/tabix/meta.yml index ae5b4f43..7864832d 100644 --- a/modules/nf-core/tabix/tabix/meta.yml +++ b/modules/nf-core/tabix/tabix/meta.yml @@ -11,34 +11,43 @@ tools: documentation: https://www.htslib.org/doc/tabix.1.html doi: 10.1093/bioinformatics/btq671 licence: ["MIT"] + identifier: biotools:tabix input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - tab: - type: file - description: TAB-delimited genome position file compressed with bgzip - pattern: "*.{bed.gz,gff.gz,sam.gz,vcf.gz}" + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - tab: + type: file + description: TAB-delimited genome position file compressed with bgzip + pattern: "*.{bed.gz,gff.gz,sam.gz,vcf.gz}" output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - tbi: - type: file - description: tabix index file - pattern: "*.{tbi}" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.tbi": + type: file + description: tabix index file + pattern: "*.{tbi}" - csi: - type: file - description: coordinate sorted index file - pattern: "*.{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: - type: file - description: File containing software versions - pattern: "versions.yml" + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" authors: - "@joseespinosa" - "@drpatelh" diff --git a/modules/nf-core/untar/environment.yml b/modules/nf-core/untar/environment.yml index 4f498244..c7794856 100644 --- a/modules/nf-core/untar/environment.yml +++ b/modules/nf-core/untar/environment.yml @@ -1,8 +1,6 @@ -name: untar channels: - conda-forge - bioconda - - defaults dependencies: - conda-forge::grep=3.11 - conda-forge::sed=4.8 diff --git a/modules/nf-core/untar/meta.yml b/modules/nf-core/untar/meta.yml index a9a2110f..290346b3 100644 --- a/modules/nf-core/untar/meta.yml +++ b/modules/nf-core/untar/meta.yml @@ -10,30 +10,33 @@ tools: Extract tar.gz files. documentation: https://www.gnu.org/software/tar/manual/ licence: ["GPL-3.0-or-later"] + identifier: "" input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - archive: - type: file - description: File to be untar - pattern: "*.{tar}.{gz}" + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - archive: + type: file + description: File to be untar + pattern: "*.{tar}.{gz}" output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - untar: - type: directory - description: Directory containing contents of archive - pattern: "*/" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - $prefix: + type: directory + description: Directory containing contents of archive + pattern: "*/" - versions: - type: file - description: File containing software versions - pattern: "versions.yml" + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" authors: - "@joseespinosa" - "@drpatelh" diff --git a/modules/nf-core/vardictjava/main.nf b/modules/nf-core/vardictjava/main.nf index 6329391c..a2c7666b 100644 --- a/modules/nf-core/vardictjava/main.nf +++ b/modules/nf-core/vardictjava/main.nf @@ -14,7 +14,7 @@ process VARDICTJAVA { output: tuple val(meta), path("*.vcf.gz"), emit: vcf - path "versions.yml" , emit: versions + path "versions.yml" , emit: versions when: task.ext.when == null || task.ext.when @@ -25,9 +25,12 @@ process VARDICTJAVA { def args3 = task.ext.args3 ?: '' def prefix = task.ext.prefix ?: "${meta.id}" + // Don't run test scripts when -fisher has been used by vardictjava + def run_test = !args.contains("-fisher") + def somatic = bams instanceof List && bams.size() == 2 ? true : false def input = somatic ? "-b \"${bams[0]}|${bams[1]}\"" : "-b ${bams}" - def filter = somatic ? "testsomatic.R" : "teststrandbias.R" + def test = run_test ? somatic ? "| testsomatic.R" : "| teststrandbias.R" : "" def convert_to_vcf = somatic ? "var2vcf_paired.pl" : "var2vcf_valid.pl" """ export JAVA_OPTS='"-Xms${task.memory.toMega()/4}m" "-Xmx${task.memory.toGiga()}g" "-Dsamjdk.reference_fasta=${fasta}"' @@ -37,7 +40,7 @@ process VARDICTJAVA { -th ${task.cpus} \\ -G ${fasta} \\ ${bed} \\ - | ${filter} \\ + ${test} \\ | ${convert_to_vcf} \\ ${args2} \\ | bgzip ${args3} --threads ${task.cpus} > ${prefix}.vcf.gz @@ -50,9 +53,6 @@ process VARDICTJAVA { """ stub: - def args = task.ext.args ?: '-c 1 -S 2 -E 3' - def args2 = task.ext.args2 ?: '' - def args3 = task.ext.args3 ?: '' def prefix = task.ext.prefix ?: "${meta.id}" """ diff --git a/modules/nf-core/vardictjava/meta.yml b/modules/nf-core/vardictjava/meta.yml index 5c2fc921..801db6fa 100644 --- a/modules/nf-core/vardictjava/meta.yml +++ b/modules/nf-core/vardictjava/meta.yml @@ -14,56 +14,60 @@ tools: tool_dev_url: "https://github.com/AstraZeneca-NGS/VarDictJava" doi: "10.1093/nar/gkw227 " licence: ["MIT"] + identifier: "" input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - bams: - type: file - description: One or two BAM files. Supply two BAM files to run Vardict in paired mode. - pattern: "*.bam" - - bais: - type: file - description: Index/indices of the BAM file(s) - pattern: "*.bai" - - bed: - type: file - description: BED with the regions of interest - pattern: "*.bed" - - meta2: - type: map - description: | - Groovy Map containing fasta information - e.g. [ id:'test', single_end:false ] - - fasta: - type: file - description: FASTA of the reference genome - pattern: "*.{fa,fasta}" - - meta3: - type: map - description: | - Groovy Map containing fasta information - e.g. [ id:'test', single_end:false ] - - fasta_fai: - type: file - description: The index of the FASTA of the reference genome - pattern: "*.fai" + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - bams: + type: file + description: One or two BAM files. Supply two BAM files to run Vardict in paired + mode. + pattern: "*.bam" + - bais: + type: file + description: Index/indices of the BAM file(s) + pattern: "*.bai" + - bed: + type: file + description: BED with the regions of interest + pattern: "*.bed" + - - meta2: + type: map + description: | + Groovy Map containing fasta information + e.g. [ id:'test', single_end:false ] + - fasta: + type: file + description: FASTA of the reference genome + pattern: "*.{fa,fasta}" + - - meta3: + type: map + description: | + Groovy Map containing fasta information + e.g. [ id:'test', single_end:false ] + - fasta_fai: + type: file + description: The index of the FASTA of the reference genome + pattern: "*.fai" output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - versions: - type: file - description: File containing software versions - pattern: "versions.yml" - vcf: - type: file - description: VCF file output - pattern: "*.vcf.gz" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.vcf.gz": + type: file + description: VCF file output + pattern: "*.vcf.gz" + - versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" authors: - "@nvnieuwk" maintainers: diff --git a/modules/nf-core/vardictjava/tests/main.nf.test b/modules/nf-core/vardictjava/tests/main.nf.test index 8e5fec10..31e1058c 100644 --- a/modules/nf-core/vardictjava/tests/main.nf.test +++ b/modules/nf-core/vardictjava/tests/main.nf.test @@ -10,9 +10,6 @@ nextflow_process { test("homo_sapiens - [bam, bai, bed] - fasta - fai") { when { - params { - outdir = $outputDir - } process { """ input[0] = Channel.value([ @@ -47,9 +44,6 @@ nextflow_process { test("homo_sapiens - [[bam, bam], [bai, bai], bed] - fasta - fai") { when { - params { - outdir = $outputDir - } process { """ input[0] = Channel.value([ @@ -87,4 +81,75 @@ nextflow_process { } + test("homo_sapiens - [bam, bai, bed] - fasta - fai - fisher") { + + config "./nextflow.config" + when { + process { + """ + input[0] = Channel.value([ + [ id:'test' ], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam.bai', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.bed', checkIfExists: true) + ]) + input[1] = [ + [id:"ref"], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) + ] + input[2] = [ + [id:"ref"], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta.fai', checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + + + } + + } + + test("homo_sapiens - [bam, bai, bed] - fasta - fai - stub") { + + options "-stub" + + when { + process { + """ + input[0] = Channel.value([ + [ id:'test' ], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam.bai', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.bed', checkIfExists: true) + ]) + input[1] = [ + [id:"ref"], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) + ] + input[2] = [ + [id:"ref"], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta.fai', checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + + + } + + } + } diff --git a/modules/nf-core/vardictjava/tests/main.nf.test.snap b/modules/nf-core/vardictjava/tests/main.nf.test.snap index c32a68b7..35674ed1 100644 --- a/modules/nf-core/vardictjava/tests/main.nf.test.snap +++ b/modules/nf-core/vardictjava/tests/main.nf.test.snap @@ -27,10 +27,10 @@ } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-07-04T19:08:38.328190023" + "timestamp": "2024-10-07T16:05:15.117453312" }, "homo_sapiens - [[bam, bam], [bai, bai], bed] - fasta - fai": { "content": [ @@ -60,9 +60,75 @@ } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-07-04T19:08:54.416661915" + "timestamp": "2024-10-07T16:05:26.932438089" + }, + "homo_sapiens - [bam, bai, bed] - fasta - fai - fisher": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.vcf.gz:md5,e8411ecae49b4f6afa6ea0b681ea506e" + ] + ], + "1": [ + "versions.yml:md5,6bf7aa0cbaac4a6e2acab2c475ec2389" + ], + "vcf": [ + [ + { + "id": "test" + }, + "test.vcf.gz:md5,e8411ecae49b4f6afa6ea0b681ea506e" + ] + ], + "versions": [ + "versions.yml:md5,6bf7aa0cbaac4a6e2acab2c475ec2389" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-10-07T16:05:38.456816851" + }, + "homo_sapiens - [bam, bai, bed] - fasta - fai - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "1": [ + "versions.yml:md5,6bf7aa0cbaac4a6e2acab2c475ec2389" + ], + "vcf": [ + [ + { + "id": "test" + }, + "test.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "versions": [ + "versions.yml:md5,6bf7aa0cbaac4a6e2acab2c475ec2389" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-10-07T16:05:48.440804849" } } \ No newline at end of file diff --git a/modules/nf-core/vardictjava/tests/nextflow.config b/modules/nf-core/vardictjava/tests/nextflow.config new file mode 100644 index 00000000..c6e8571b --- /dev/null +++ b/modules/nf-core/vardictjava/tests/nextflow.config @@ -0,0 +1,3 @@ +process { + ext.args = "-c 1 -S 2 -E 3 -fisher" +} \ No newline at end of file diff --git a/modules/nf-core/vcf2db/meta.yml b/modules/nf-core/vcf2db/meta.yml index b6529a6a..48795c21 100644 --- a/modules/nf-core/vcf2db/meta.yml +++ b/modules/nf-core/vcf2db/meta.yml @@ -11,34 +11,37 @@ tools: documentation: "https://github.com/quinlan-lab/vcf2db" tool_dev_url: "https://github.com/quinlan-lab/vcf2db" licence: ["MIT"] + identifier: "" input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - vcf: - type: file - description: VCF file - pattern: "*.vcf.gz" - - ped: - type: file - description: PED file - pattern: "*.ped" + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - vcf: + type: file + description: VCF file + pattern: "*.vcf.gz" + - ped: + type: file + description: PED file + pattern: "*.ped" output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - versions: - type: file - description: File containing software versions - pattern: "versions.yml" - db: - type: file - description: Gemini-compatible database file - pattern: "*.db" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.db": + type: file + description: Gemini-compatible database file + pattern: "*.db" + - versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" authors: - "@nvnieuwk" maintainers: diff --git a/modules/nf-core/vcfanno/meta.yml b/modules/nf-core/vcfanno/meta.yml index 89c781ad..18d27127 100644 --- a/modules/nf-core/vcfanno/meta.yml +++ b/modules/nf-core/vcfanno/meta.yml @@ -1,5 +1,6 @@ name: vcfanno -description: quickly annotate your VCF with any number of INFO fields from any number of VCFs or BED files +description: quickly annotate your VCF with any number of INFO fields from any number + of VCFs or BED files keywords: - vcf - bed @@ -14,48 +15,53 @@ tools: tool_dev_url: https://github.com/brentp/vcfanno doi: "10.1186/s13059-016-0973-5" license: ["MIT"] + identifier: biotools:vcfanno input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - vcf: - type: file - description: query VCF file - pattern: "*.{vcf, vcf.gz}" - - vcf_tabix: - type: file - description: tabix index of query VCF - only needed if vcf is compressed - pattern: "*.vcf.gz.tbi" - - specific_resources: - type: map - description: A list of sample specific reference files defined in toml config, must also include indices if bgzipped. - - toml: - type: file - description: configuration file with reference file basenames - pattern: "*.toml" - - lua: - type: file - description: Lua file for custom annotations - pattern: "*.lua" - - resources: - type: map - description: List of reference files defined in toml config, must also include indices if bgzipped. + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - vcf: + type: file + description: query VCF file + pattern: "*.{vcf, vcf.gz}" + - tbi: + type: file + description: tabix index file for the query VCF + pattern: "*.tbi" + - specific_resources: + type: map + description: A list of sample specific reference files defined in toml config, + must also include indices if bgzipped. + - - toml: + type: file + description: configuration file with reference file basenames + pattern: "*.toml" + - - lua: + type: file + description: Lua file for custom annotations + pattern: "*.lua" + - - resources: + type: map + description: List of reference files defined in toml config, must also include + indices if bgzipped. output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - versions: - type: file - description: File containing software versions - pattern: "versions.yml" - vcf: - type: file - description: Annotated VCF file - pattern: "*.vcf" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.vcf": + type: file + description: Annotated VCF file + pattern: "*.vcf" + - versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" authors: - "@projectoriented" - "@matthdsm" From 411a6bbe892684f11a5222b9930f39f9023217bc Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Fri, 11 Oct 2024 11:37:41 +0200 Subject: [PATCH 033/167] make linting happy --- .nf-core.yml | 2 ++ conf/base.config | 1 - nextflow.config | 5 +++-- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/.nf-core.yml b/.nf-core.yml index 4f491e32..ad9a71ec 100644 --- a/.nf-core.yml +++ b/.nf-core.yml @@ -25,6 +25,8 @@ lint: - custom_config - manifest.name - manifest.homePage + - validation.help.afterText + - validation.summary.afterText nf_core_version: 3.0.1 repository_type: pipeline template: diff --git a/conf/base.config b/conf/base.config index 1240cc86..6ed8a916 100644 --- a/conf/base.config +++ b/conf/base.config @@ -10,7 +10,6 @@ process { - // TODO nf-core: Check the defaults for all processes cpus = { 1 * task.attempt } memory = { 8.GB * task.attempt } time = { 4.h * task.attempt } diff --git a/nextflow.config b/nextflow.config index be6dfaf1..0ce19e52 100644 --- a/nextflow.config +++ b/nextflow.config @@ -235,8 +235,6 @@ profiles { includeConfig !System.getenv('NXF_OFFLINE') && params.custom_config_base ? "${params.custom_config_base}/nfcore_custom.config" : "/dev/null" // Load nf-cmgg/germline custom profiles from different institutions. -// TODO nf-core: Optionally, you can add a pipeline-specific nf-core config at https://github.com/nf-core/configs -// includeConfig !System.getenv('NXF_OFFLINE') && params.custom_config_base ? "${params.custom_config_base}/pipeline/germline.config" : "/dev/null" // 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 @@ -323,6 +321,9 @@ validation { -\033[2m----------------------------------------------------\033[0m- """ } + summary { + beforeText = validation.help.beforeText + } } // Load modules.config for DSL2 module specific options From 43c27bfd69c5b834d9e92ce5bedd99cd6407917d Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Fri, 11 Oct 2024 11:39:09 +0200 Subject: [PATCH 034/167] fix template comment ci action --- .github/workflows/template_version_comment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/template_version_comment.yml b/.github/workflows/template_version_comment.yml index 9dea41f0..d01fb43f 100644 --- a/.github/workflows/template_version_comment.yml +++ b/.github/workflows/template_version_comment.yml @@ -12,7 +12,7 @@ jobs: uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4 - name: Read template version from .nf-core.yml - uses: pietrobolcato/action-read-yaml@1.0.0 + uses: pietrobolcato/action-read-yaml@1.1.0 id: read_yml with: config: ${{ github.workspace }}/.nf-core.yml From 29fce2f5e957c5c85993c73666c7f5a6aa9ecc20 Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Fri, 11 Oct 2024 17:22:29 +0200 Subject: [PATCH 035/167] remove if statements from modules.config --- conf/modules.config | 783 +++++++++++++++++++++----------------------- 1 file changed, 371 insertions(+), 412 deletions(-) diff --git a/conf/modules.config b/conf/modules.config index faf165df..e8406ec1 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -50,10 +50,8 @@ process { ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ - if(params.annotate) { - withName: '^.*ENSEMBLVEP_DOWNLOAD\$' { - ext.args = "--AUTO c --CONVERT --NO_BIOPERL --NO_TEST --NO_UPDATE" - } + withName: '^.*ENSEMBLVEP_DOWNLOAD\$' { + ext.args = "--AUTO c --CONVERT --NO_BIOPERL --NO_TEST --NO_UPDATE" } /* @@ -130,233 +128,217 @@ process { ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ - if("haplotypecaller" in callers) { - if(params.dragstr) { - withName: "^.*CRAM_CALL_GENOTYPE_GATK4:CRAM_CALL_GATK4:GATK4_CALIBRATEDRAGSTRMODEL\$" { - ext.args = "--parallel" - } - } - - withName: "^.*CRAM_CALL_GENOTYPE_GATK4:CRAM_CALL_GATK4:GATK4_HAPLOTYPECALLER\$" { - time = { 16.h * task.attempt } - ext.prefix = {"${meta.id}.g"} - ext.args = { - [ - '-ERC GVCF -contamination "0"', - '-GQB 10 -GQB 20 -GQB 30 -GQB 40 -GQB 50 -GQB 60 -GQB 70 -GQB 80 -GQB 90', - '-G StandardAnnotation -G StandardHCAnnotation -G AS_StandardAnnotation', - params.dragstr ? '--dragen-mode' : '', - params.hc_phasing ? '' : '--do-not-run-physical-phasing' - ].join(" ") - } - } + withName: "^.*CRAM_CALL_GENOTYPE_GATK4:CRAM_CALL_GATK4:GATK4_CALIBRATEDRAGSTRMODEL\$" { + ext.args = "--parallel" + } - withName: "^.*CRAM_CALL_GATK4:VCF_CONCAT_BCFTOOLS:BCFTOOLS_CONCAT\$" { - publishDir = [ - overwrite: true, - enabled: true, - mode: params.publish_dir_mode, - path: individual_output, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } - ] // SAVE - ext.prefix = { "${meta.id}.${meta.caller}.g" } - ext.args = '--allow-overlaps --output-type z' + withName: "^.*CRAM_CALL_GENOTYPE_GATK4:CRAM_CALL_GATK4:GATK4_HAPLOTYPECALLER\$" { + time = { 16.h * task.attempt } + ext.prefix = {"${meta.id}.g"} + ext.args = { + [ + '-ERC GVCF -contamination "0"', + '-GQB 10 -GQB 20 -GQB 30 -GQB 40 -GQB 50 -GQB 60 -GQB 70 -GQB 80 -GQB 90', + '-G StandardAnnotation -G StandardHCAnnotation -G AS_StandardAnnotation', + params.dragstr ? '--dragen-mode' : '', + params.hc_phasing ? '' : '--do-not-run-physical-phasing' + ].join(" ") } + } - withName: "^.*CRAM_CALL_GATK4:VCF_CONCAT_BCFTOOLS:TABIX_TABIX\$" { - publishDir = [ - overwrite: true, - enabled: true, - path: individual_output, - mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } - ] // SAVE - ext.args = '' - } + withName: "^.*CRAM_CALL_GATK4:VCF_CONCAT_BCFTOOLS:BCFTOOLS_CONCAT\$" { + publishDir = [ + overwrite: true, + enabled: true, + mode: params.publish_dir_mode, + path: individual_output, + saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + ] // SAVE + ext.prefix = { "${meta.id}.${meta.caller}.g" } + ext.args = '--allow-overlaps --output-type z' + } - withName: "^.*CRAM_CALL_GATK4:BCFTOOLS_STATS_SINGLE\$" { - publishDir = [ - overwrite: true, - enabled: true, - path: individual_reports, - mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } - ] // SAVE - ext.prefix = final_prefix - } + withName: "^.*CRAM_CALL_GATK4:VCF_CONCAT_BCFTOOLS:TABIX_TABIX\$" { + publishDir = [ + overwrite: true, + enabled: true, + path: individual_output, + mode: params.publish_dir_mode, + saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + ] // SAVE + ext.args = '' + } - if(!params.only_call) { - withName: "^.*CRAM_CALL_GENOTYPE_GATK4:GVCF_JOINT_GENOTYPE_GATK4:BCFTOOLS_QUERY\$" { - ext.args = "--exclude 'QUAL=\".\"' --format '%CHROM\t%POS0\t%END\\n'" - ext.suffix = "bed" - } + withName: "^.*CRAM_CALL_GATK4:BCFTOOLS_STATS_SINGLE\$" { + publishDir = [ + overwrite: true, + enabled: true, + path: individual_reports, + mode: params.publish_dir_mode, + saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + ] // SAVE + ext.prefix = final_prefix + } - withName: "^.*CRAM_CALL_GENOTYPE_GATK4:GVCF_JOINT_GENOTYPE_GATK4:MERGE_BEDS\$" { - ext.args = "-d ${params.merge_distance}" - publishDir = [ - enabled: true, - overwrite: true, - path: final_output, - mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } - ] // SAVE - } + withName: "^.*CRAM_CALL_GENOTYPE_GATK4:GVCF_JOINT_GENOTYPE_GATK4:BCFTOOLS_QUERY\$" { + ext.args = "--exclude 'QUAL=\".\"' --format '%CHROM\t%POS0\t%END\\n'" + ext.suffix = "bed" + } - withName: "^.*CRAM_CALL_GENOTYPE_GATK4:GVCF_JOINT_GENOTYPE_GATK4:GAWK\$" { - ext.args2 = '\'BEGIN {FS="\t"}; {print \$1 FS "0" FS \$2}\'' - ext.suffix = "bed" - } + withName: "^.*CRAM_CALL_GENOTYPE_GATK4:GVCF_JOINT_GENOTYPE_GATK4:MERGE_BEDS\$" { + ext.args = "-d ${params.merge_distance}" + publishDir = [ + enabled: true, + overwrite: true, + path: final_output, + mode: params.publish_dir_mode, + saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + ] // SAVE + } - withName: "^.*CRAM_CALL_GENOTYPE_GATK4:GVCF_JOINT_GENOTYPE_GATK4:GATK4_GENOMICSDBIMPORT\$" { - label = { meta.family_samples.tokenize(",").size() <= 10 ? "process_medium" : "process_high" } - time = { 16.h * task.attempt } - // Lots of parameters are fetched from https://gatk.broadinstitute.org/hc/en-us/articles/360056138571-GenomicsDBImport-usage-and-performance-guidelines - ext.args = { - [ - meta.family_samples.tokenize(",").size() >= 100 ? "--batch-size 100" : "", - "--overwrite-existing-genomicsdb-workspace", - "--genomicsdb-shared-posixfs-optimizations", - "--merge-input-intervals", - "--bypass-feature-reader", - "--max-num-intervals-to-import-in-parallel ${task.cpus*10}", - "--reader-threads ${task.cpus}", - meta.family_samples.tokenize(",").size() >= 100 ? "--consolidate" : "", - "--merge-contigs-into-num-partitions 25" - ].join(" ") - } - ext.prefix = { "genomicsdb_${meta.id}" } - publishDir = [ - enabled: params.only_merge || params.output_genomicsdb, - overwrite: true, - path: final_output, - mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } - ] // SAVE - } + withName: "^.*CRAM_CALL_GENOTYPE_GATK4:GVCF_JOINT_GENOTYPE_GATK4:GAWK\$" { + ext.args2 = '\'BEGIN {FS="\t"}; {print \$1 FS "0" FS \$2}\'' + ext.suffix = "bed" + } - if(!params.only_merge) { - withName: "^.*CRAM_CALL_GENOTYPE_GATK4:GVCF_JOINT_GENOTYPE_GATK4:GATK4_GENOTYPEGVCFS\$" { - time = { 16.h * task.attempt } - ext.args = { - [ - "--allow-old-rms-mapping-quality-annotation-data", - "-G StandardAnnotation -G AS_StandardAnnotation", - "-AX ExcessHet -AX InbreedingCoeff" - ].join(" ") - } - } - - withName: "^.*GVCF_JOINT_GENOTYPE_GATK4:VCF_CONCAT_BCFTOOLS:BCFTOOLS_CONCAT\$" { - ext.prefix = enableOutput("original") ? final_prefix : {"${meta.id}.concat"} - ext.args = "--allow-overlaps --output-type z" - publishDir = [ - enabled: enableOutput("original"), - overwrite: true, - path: final_output, - mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } - ] // SAVE - } - - if(params.filter){ - withName: "^.*CRAM_CALL_GENOTYPE_GATK4:VCF_FILTER_BCFTOOLS:FILTER_1\$" { - ext.prefix = { "${meta.id}_filtered_snps" } - ext.args = {"--output-type z --soft-filter 'GATKCutoffSNP' -e 'TYPE=\"snp\" && (MQRankSum < -12.5 || ReadPosRankSum < -8.0 || QD < 2.0 || FS > 60.0 || MQ < 30.0)' -m '+'"} - } + withName: "^.*CRAM_CALL_GENOTYPE_GATK4:GVCF_JOINT_GENOTYPE_GATK4:GATK4_GENOMICSDBIMPORT\$" { + label = { meta.family_samples.tokenize(",").size() <= 10 ? "process_medium" : "process_high" } + time = { 16.h * task.attempt } + // Lots of parameters are fetched from https://gatk.broadinstitute.org/hc/en-us/articles/360056138571-GenomicsDBImport-usage-and-performance-guidelines + ext.args = { + [ + meta.family_samples.tokenize(",").size() >= 100 ? "--batch-size 100" : "", + "--overwrite-existing-genomicsdb-workspace", + "--genomicsdb-shared-posixfs-optimizations", + "--merge-input-intervals", + "--bypass-feature-reader", + "--max-num-intervals-to-import-in-parallel ${task.cpus*10}", + "--reader-threads ${task.cpus}", + meta.family_samples.tokenize(",").size() >= 100 ? "--consolidate" : "", + "--merge-contigs-into-num-partitions 25" + ].join(" ") + } + ext.prefix = { "genomicsdb_${meta.id}" } + publishDir = [ + enabled: params.only_merge || params.output_genomicsdb, + overwrite: true, + path: final_output, + mode: params.publish_dir_mode, + saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + ] // SAVE + } - withName: "^.*CRAM_CALL_GENOTYPE_GATK4:VCF_FILTER_BCFTOOLS:FILTER_2\$" { - ext.prefix = enableOutput("filter") ? final_prefix : {"${meta.id}.filtered"} - ext.args = {'--output-type z --soft-filter \'GATKCutoffIndel\' -e \'TYPE="indel" && (ReadPosRankSum < -20.0 || QD < 2.0 || FS > 200.0 || SOR > 10.0 )\' -m \'+\''} - publishDir = [ - enabled: enableOutput("filter"), - overwrite: true, - path: final_output, - mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } - ] // SAVE - } - } - } + withName: "^.*CRAM_CALL_GENOTYPE_GATK4:GVCF_JOINT_GENOTYPE_GATK4:GATK4_GENOTYPEGVCFS\$" { + time = { 16.h * task.attempt } + ext.args = { + [ + "--allow-old-rms-mapping-quality-annotation-data", + "-G StandardAnnotation -G AS_StandardAnnotation", + "-AX ExcessHet -AX InbreedingCoeff" + ].join(" ") } } + withName: "^.*GVCF_JOINT_GENOTYPE_GATK4:VCF_CONCAT_BCFTOOLS:BCFTOOLS_CONCAT\$" { + ext.prefix = enableOutput("original") ? final_prefix : {"${meta.id}.concat"} + ext.args = "--allow-overlaps --output-type z" + publishDir = [ + enabled: enableOutput("original"), + overwrite: true, + path: final_output, + mode: params.publish_dir_mode, + saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + ] // SAVE + } + + withName: "^.*CRAM_CALL_GENOTYPE_GATK4:VCF_FILTER_BCFTOOLS:FILTER_1\$" { + ext.prefix = { "${meta.id}_filtered_snps" } + ext.args = {"--output-type z --soft-filter 'GATKCutoffSNP' -e 'TYPE=\"snp\" && (MQRankSum < -12.5 || ReadPosRankSum < -8.0 || QD < 2.0 || FS > 60.0 || MQ < 30.0)' -m '+'"} + } + + withName: "^.*CRAM_CALL_GENOTYPE_GATK4:VCF_FILTER_BCFTOOLS:FILTER_2\$" { + ext.prefix = enableOutput("filter") ? final_prefix : {"${meta.id}.filtered"} + ext.args = {'--output-type z --soft-filter \'GATKCutoffIndel\' -e \'TYPE="indel" && (ReadPosRankSum < -20.0 || QD < 2.0 || FS > 200.0 || SOR > 10.0 )\' -m \'+\''} + publishDir = [ + enabled: enableOutput("filter"), + overwrite: true, + path: final_output, + mode: params.publish_dir_mode, + saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + ] // SAVE + } + /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ VARDICTJAVA ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ - if("vardict" in callers) { - withName: "^.*CRAM_CALL_VARDICTJAVA:VARDICTJAVA\$" { - time = { 16.h * task.attempt } - ext.prefix = {"${meta.id}"} - ext.args = { - [ - '-c 1 -S 2 -E 3 -g 4 --nosv --deldupvar -Q 10 -F 0x700', - "-f ${meta.vardict_min_af ?: params.vardict_min_af} -N ${meta.sample}" - ].join(" ") - } - ext.args2 = { - [ - "-f ${meta.vardict_min_af ?: params.vardict_min_af} -N ${meta.sample}", - '-A' - ].join(" ") - } + withName: "^.*CRAM_CALL_VARDICTJAVA:VARDICTJAVA\$" { + time = { 16.h * task.attempt } + ext.prefix = {"${meta.id}"} + ext.args = { + [ + '-c 1 -S 2 -E 3 -g 4 --nosv --deldupvar -Q 10 -F 0x700', + "-f ${meta.vardict_min_af ?: params.vardict_min_af} -N ${meta.sample}" + ].join(" ") } - - withName: "^.*CRAM_CALL_VARDICTJAVA:VCF_CONCAT_BCFTOOLS:BCFTOOLS_CONCAT\$" { - ext.args = '--allow-overlaps --output-type z' - ext.prefix = enableOutput("original") ? final_prefix : {"${meta.id}.concat"} - publishDir = [ - overwrite: true, - enabled: enableOutput("original"), - mode: params.publish_dir_mode, - path: final_output, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } - ] // SAVE - } - - withName: "^.*CRAM_CALL_VARDICTJAVA:TABIX_VCFANNO\$" { - ext.prefix = enableOutput("original") ? final_prefix : {"${meta.id}.vcfanno"} - publishDir = [ - overwrite: true, - enabled: enableOutput("original"), - mode: params.publish_dir_mode, - path: final_output, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } - ] // SAVE + ext.args2 = { + [ + "-f ${meta.vardict_min_af ?: params.vardict_min_af} -N ${meta.sample}", + '-A' + ].join(" ") } + } - if(params.filter) { - withName: "^.*CRAM_CALL_VARDICTJAVA:VCF_FILTER_BCFTOOLS:FILTER_1\$" { - ext.prefix = { "${meta.id}.filtered1" } - ext.args = "-i 'QUAL >= 0${params.only_pass ? " && FILTER=\"PASS\"" : ""}' --output-type z" - } + withName: "^.*CRAM_CALL_VARDICTJAVA:VCF_CONCAT_BCFTOOLS:BCFTOOLS_CONCAT\$" { + ext.args = '--allow-overlaps --output-type z' + ext.prefix = enableOutput("original") ? final_prefix : {"${meta.id}.concat"} + publishDir = [ + overwrite: true, + enabled: enableOutput("original"), + mode: params.publish_dir_mode, + path: final_output, + saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + ] // SAVE + } - withName: "^.*CRAM_CALL_VARDICTJAVA:VCF_FILTER_BCFTOOLS:FILTER_2\$" { - ext.args = "--soft-filter 'LowFreqBias' --mode '+' -e 'FORMAT/AF[0:*] < 0.02 && FORMAT/VD[0] < 30 && INFO/SBF < 0.1 && INFO/NM >= 2.0' --output-type z" - ext.prefix = enableOutput("filter") ? final_prefix : {"${meta.id}.filtered"} - publishDir = [ - overwrite: true, - enabled: enableOutput("filter"), - mode: params.publish_dir_mode, - path: final_output, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } - ] // SAVE - } - } + withName: "^.*CRAM_CALL_VARDICTJAVA:TABIX_VCFANNO\$" { + ext.prefix = enableOutput("original") ? final_prefix : {"${meta.id}.vcfanno"} + publishDir = [ + overwrite: true, + enabled: enableOutput("original"), + mode: params.publish_dir_mode, + path: final_output, + saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + ] // SAVE + } - withName: "^.*CRAM_CALL_VARDICTJAVA:TABIX_TABIX\$" { - publishDir = [ - overwrite: true, - enabled: enableOutput("filter") || enableOutput("original"), - mode: params.publish_dir_mode, - path: final_output, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } - ] // SAVE - } + withName: "^.*CRAM_CALL_VARDICTJAVA:VCF_FILTER_BCFTOOLS:FILTER_1\$" { + ext.prefix = { "${meta.id}.filtered1" } + ext.args = "-i 'QUAL >= 0${params.only_pass ? " && FILTER=\"PASS\"" : ""}' --output-type z" + } + withName: "^.*CRAM_CALL_VARDICTJAVA:VCF_FILTER_BCFTOOLS:FILTER_2\$" { + ext.args = "--soft-filter 'LowFreqBias' --mode '+' -e 'FORMAT/AF[0:*] < 0.02 && FORMAT/VD[0] < 30 && INFO/SBF < 0.1 && INFO/NM >= 2.0' --output-type z" + ext.prefix = enableOutput("filter") ? final_prefix : {"${meta.id}.filtered"} + publishDir = [ + overwrite: true, + enabled: enableOutput("filter"), + mode: params.publish_dir_mode, + path: final_output, + saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + ] // SAVE + } + withName: "^.*CRAM_CALL_VARDICTJAVA:TABIX_TABIX\$" { + publishDir = [ + overwrite: true, + enabled: enableOutput("filter") || enableOutput("original"), + mode: params.publish_dir_mode, + path: final_output, + saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + ] // SAVE } /* @@ -365,19 +347,16 @@ process { ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ - if(params.normalize) { - withName: "^.*BCFTOOLS_NORM\$" { - ext.prefix = enableOutput("normalize") ? final_prefix : {"${meta.id}.normalized"} - ext.args = "-m-" - publishDir = [ - overwrite: true, - enabled: enableOutput("normalize"), - mode: params.publish_dir_mode, - path: final_output, - saveAs: { filename -> filename.endsWith('.vcf.gz') ? filename : null } - ] // SAVE - } - + withName: "^.*BCFTOOLS_NORM\$" { + ext.prefix = enableOutput("normalize") ? final_prefix : {"${meta.id}.normalized"} + ext.args = "-m-" + publishDir = [ + overwrite: true, + enabled: enableOutput("normalize"), + mode: params.publish_dir_mode, + path: final_output, + saveAs: { filename -> filename.endsWith('.vcf.gz') ? filename : null } + ] // SAVE } /* @@ -386,216 +365,196 @@ process { ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ - if(!params.only_call && !params.only_merge) { - - withName: "^.*VCF_EXTRACT_RELATE_SOMALIER:SOMALIER_RELATE\$" { - ext.args = { ped ? "" : "--infer"} - ext.prefix = final_prefix - publishDir = [ - overwrite: true, - enabled: true, - path: final_output, - mode: params.publish_dir_mode, - saveAs: { filename -> - filename ==~ /^.*\.html$/ ? "reports/" + filename.replace(".html", ".somalier.html") : - filename ==~ /^.*\.ped$/ ? filename.replace("_somalier.ped", ".ped") : - null - } - ] // SAVE - } + withName: "^.*VCF_EXTRACT_RELATE_SOMALIER:SOMALIER_RELATE\$" { + ext.args = { ped ? "" : "--infer"} + ext.prefix = final_prefix + publishDir = [ + overwrite: true, + enabled: true, + path: final_output, + mode: params.publish_dir_mode, + saveAs: { filename -> + filename ==~ /^.*\.html$/ ? "reports/" + filename.replace(".html", ".somalier.html") : + filename ==~ /^.*\.ped$/ ? filename.replace("_somalier.ped", ".ped") : + null + } + ] // SAVE + } - if(params.add_ped) { - withName: "^.*VCF_PED_RTGTOOLS:RTGTOOLS_PEDFILTER\$" { - ext.prefix = {"${meta.id}_ped"} - ext.args = "--vcf" - } + withName: "^.*VCF_PED_RTGTOOLS:RTGTOOLS_PEDFILTER\$" { + ext.prefix = {"${meta.id}_ped"} + ext.args = "--vcf" + } - withName: "^.*VCF_PED_RTGTOOLS:BCFTOOLS_ANNOTATE\$" { - ext.prefix = enableOutput("add_ped") ? final_prefix : { "${meta.id}.${meta.caller}_ped_annotated" } - ext.args = "--output-type z" - publishDir = [ - enabled: enableOutput("add_ped"), - overwrite: true, - path: final_output, - mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } - ] // SAVE - } - } + withName: "^.*VCF_PED_RTGTOOLS:BCFTOOLS_ANNOTATE\$" { + ext.prefix = enableOutput("add_ped") ? final_prefix : { "${meta.id}.${meta.caller}_ped_annotated" } + ext.args = "--output-type z" + publishDir = [ + enabled: enableOutput("add_ped"), + overwrite: true, + path: final_output, + mode: params.publish_dir_mode, + saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + ] // SAVE + } - /* - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ANNOTATION - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - */ - - if(params.annotate){ - withName: "^.*VCF_ANNOTATION:VCF_ANNOTATE_ENSEMBLVEP:ENSEMBLVEP_VEP\$" { - memory = { 12.GB * task.attempt } - ext.args = {[ - // Specify the input format - "--format vcf", - // don't contact external db - '--offline', - // increase buffer_size to speed up analysis - "--buffer_size ${params.vep_chunk_size}", - // output format options - '--vcf --compress_output bgzip --force_overwrite', - // annotation options - '--variant_class --sift b --polyphen b --humdiv --allele_number --numbers --total_length --gene_phenotype --ccds --regulatory', - // identifiers - '--hgvs --hgvsg --shift_hgvs 1 --protein --symbol --ccds --uniprot --tsl --appris --canonical --mane --biotype --domains', - // co-located variant info - '--check_existing --clin_sig_allele 1 --af --max_af --af_1kg --af_gnomad --pubmed --var_synonyms', - // plugins - (params.vep_dbnsfp) ? "--plugin dbNSFP,${params.dbnsfp.split('/')[-1]},Ensembl_geneid,Ensembl_transcriptid,LRT_score,LRT_pred,MutationTaster_score,MutationTaster_pred,MutationAssessor_score,MutationAssessor_pred,PROVEAN_score,PROVEAN_pred,MetaSVM_score,MetaSVM_pred,MetaLR_score,MetaLR_pred,MetaRNN_score,MetaRNN_pred,M-CAP_score,M-CAP_pred,REVEL_score,BayesDel_addAF_score,BayesDel_addAF_pred,BayesDel_noAF_score,BayesDel_noAF_pred,CADD_phred,DANN_score,fathmm-MKL_coding_score,fathmm-MKL_coding_pred,GenoCanyon_score,gnomAD_exomes_AC,gnomAD_exomes_AN,gnomAD_exomes_AF,gnomAD_exomes_nhomalt,gnomAD_exomes_POPMAX_AF,gnomAD_genomes_AC,gnomAD_genomes_AN,gnomAD_genomes_AF,gnomAD_genomes_nhomalt,gnomAD_genomes_POPMAX_AF,Interpro_domain" : '', - (params.vep_spliceai) ? "--plugin SpliceAI,snv=${params.spliceai_snv.split('/')[-1]},indel=${params.spliceai_indel.split('/')[-1]}" : '', - (params.vep_spliceregion) ? '--plugin SpliceRegion' : '', - (params.vep_mastermind) ? "--plugin Mastermind,${params.mastermind.split('/')[-1]}" : '', - (params.vep_maxentscan) ? "--plugin MaxEntScan" : '', - (params.vep_alphamissense) ? "--plugin AlphaMissense,file=${params.alphamissense.split('/')[-1]}" : '', - (params.vep_eog) ? "--custom ${params.eog.split('/')[-1]},EOG,vcf,overlap,0,AF" : '', - (params.vep_merged) ? '--merged' : '', - ].join(' ').trim()} - } + /* + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ANNOTATION + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + */ - withName: "^.*VCF_ANNOTATION:VCF_ANNOTATE_ENSEMBLVEP:BCFTOOLS_CONCAT\$" { - ext.prefix = {"${meta.id}_concat"} - ext.args = "--allow-overlaps --output-type z" - } + withName: "^.*VCF_ANNOTATION:VCF_ANNOTATE_ENSEMBLVEP:ENSEMBLVEP_VEP\$" { + memory = { 12.GB * task.attempt } + ext.args = {[ + // Specify the input format + "--format vcf", + // don't contact external db + '--offline', + // increase buffer_size to speed up analysis + "--buffer_size ${params.vep_chunk_size}", + // output format options + '--vcf --compress_output bgzip --force_overwrite', + // annotation options + '--variant_class --sift b --polyphen b --humdiv --allele_number --numbers --total_length --gene_phenotype --ccds --regulatory', + // identifiers + '--hgvs --hgvsg --shift_hgvs 1 --protein --symbol --ccds --uniprot --tsl --appris --canonical --mane --biotype --domains', + // co-located variant info + '--check_existing --clin_sig_allele 1 --af --max_af --af_1kg --af_gnomad --pubmed --var_synonyms', + // plugins + (params.vep_dbnsfp) ? "--plugin dbNSFP,${params.dbnsfp.split('/')[-1]},Ensembl_geneid,Ensembl_transcriptid,LRT_score,LRT_pred,MutationTaster_score,MutationTaster_pred,MutationAssessor_score,MutationAssessor_pred,PROVEAN_score,PROVEAN_pred,MetaSVM_score,MetaSVM_pred,MetaLR_score,MetaLR_pred,MetaRNN_score,MetaRNN_pred,M-CAP_score,M-CAP_pred,REVEL_score,BayesDel_addAF_score,BayesDel_addAF_pred,BayesDel_noAF_score,BayesDel_noAF_pred,CADD_phred,DANN_score,fathmm-MKL_coding_score,fathmm-MKL_coding_pred,GenoCanyon_score,gnomAD_exomes_AC,gnomAD_exomes_AN,gnomAD_exomes_AF,gnomAD_exomes_nhomalt,gnomAD_exomes_POPMAX_AF,gnomAD_genomes_AC,gnomAD_genomes_AN,gnomAD_genomes_AF,gnomAD_genomes_nhomalt,gnomAD_genomes_POPMAX_AF,Interpro_domain" : '', + (params.vep_spliceai) ? "--plugin SpliceAI,snv=${params.spliceai_snv.split('/')[-1]},indel=${params.spliceai_indel.split('/')[-1]}" : '', + (params.vep_spliceregion) ? '--plugin SpliceRegion' : '', + (params.vep_mastermind) ? "--plugin Mastermind,${params.mastermind.split('/')[-1]}" : '', + (params.vep_maxentscan) ? "--plugin MaxEntScan" : '', + (params.vep_alphamissense) ? "--plugin AlphaMissense,file=${params.alphamissense.split('/')[-1]}" : '', + (params.vep_eog) ? "--custom ${params.eog.split('/')[-1]},EOG,vcf,overlap,0,AF" : '', + (params.vep_merged) ? '--merged' : '', + ].join(' ').trim()} + } - withName: "^.*VCF_ANNOTATION:VCF_ANNOTATE_ENSEMBLVEP:BCFTOOLS_SORT\$" { - publishDir = [ - enabled: enableOutput("annotate"), - overwrite: true, - path: final_output, - mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } - ] // SAVE - ext.prefix = enableOutput("annotate") ? final_prefix : {"${meta.id}.sorted"} - } + withName: "^.*VCF_ANNOTATION:VCF_ANNOTATE_ENSEMBLVEP:BCFTOOLS_CONCAT\$" { + ext.prefix = {"${meta.id}_concat"} + ext.args = "--allow-overlaps --output-type z" + } - if (params.vcfanno){ - withName: "^.*VCF_ANNOTATION:BGZIP_ANNOTATED_VCFS\$" { - publishDir = [ - enabled: enableOutput("vcfanno"), - overwrite: true, - path: final_output, - mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } - ] // SAVE - ext.prefix = enableOutput("vcfanno") ? final_prefix : {"${meta.id}.vcfanno"} - } - } + withName: "^.*VCF_ANNOTATION:VCF_ANNOTATE_ENSEMBLVEP:BCFTOOLS_SORT\$" { + publishDir = [ + enabled: enableOutput("annotate"), + overwrite: true, + path: final_output, + mode: params.publish_dir_mode, + saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + ] // SAVE + ext.prefix = enableOutput("annotate") ? final_prefix : {"${meta.id}.sorted"} + } - } + withName: "^.*VCF_ANNOTATION:BGZIP_ANNOTATED_VCFS\$" { + publishDir = [ + enabled: enableOutput("vcfanno"), + overwrite: true, + path: final_output, + mode: params.publish_dir_mode, + saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + ] // SAVE + ext.prefix = enableOutput("vcfanno") ? final_prefix : {"${meta.id}.vcfanno"} + } - /* - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - VALIDATION - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - */ - - if (params.validate){ - - withName: "^.*VCF_VALIDATE_SMALL_VARIANTS:RTGTOOLS_VCFEVAL\$" { - publishDir = [ - enabled: true, - overwrite: true, - path: individual_validation, - mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } - ] // SAVE - ext.args = {"--sample ${meta.sample} --decompose --squash-ploidy"} - ext.prefix = {"${meta.sample}"} - } + /* + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + VALIDATION + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + */ - withName: "^.*VCF_VALIDATE_SMALL_VARIANTS:RTGTOOLS_ROCPLOT\$" { - publishDir = [ - enabled: true, - overwrite: true, - path: individual_validation, - mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } - ] // SAVE - ext.args = '' - ext.prefix = {"${meta.sample}.${meta.roc_type}"} - } + withName: "^.*VCF_VALIDATE_SMALL_VARIANTS:RTGTOOLS_VCFEVAL\$" { + publishDir = [ + enabled: true, + overwrite: true, + path: individual_validation, + mode: params.publish_dir_mode, + saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + ] // SAVE + ext.args = {"--sample ${meta.sample} --decompose --squash-ploidy"} + ext.prefix = {"${meta.sample}"} + } - } + withName: "^.*VCF_VALIDATE_SMALL_VARIANTS:RTGTOOLS_ROCPLOT\$" { + publishDir = [ + enabled: true, + overwrite: true, + path: individual_validation, + mode: params.publish_dir_mode, + saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + ] // SAVE + ext.args = '' + ext.prefix = {"${meta.sample}.${meta.roc_type}"} + } - /* - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - FINAL PROCESSES - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - */ - - if(params.gemini){ - withName: "^.*VCF2DB\$" { - ext.args = "--a-ok gnomAD_AC --a-ok gnomAD_Hom" - ext.prefix = final_prefix - publishDir = [ - overwrite: true, - path: final_output, - mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } - ] // SAVE - } - } + /* + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + FINAL PROCESSES + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + */ - if(params.updio) { - withName: "^.*VCF_UPD_UPDIO:BCFTOOLS_FILTER\$" { - ext.prefix = { "${meta.id}.filtered" } - ext.args = [ - "--output-type z", - "--write-index=tbi", - "-r chr1,chr2,chr3,chr4,chr5,chr6,chr7,chr8,chr9,chr10,chr11,chr12,chr13,chr14,chr15,chr16,chr17,chr18,chr19,chr20,chr21,chr22,chrX,chrY" - ].join(" ") - } + withName: "^.*VCF2DB\$" { + ext.args = "--a-ok gnomAD_AC --a-ok gnomAD_Hom" + ext.prefix = final_prefix + publishDir = [ + overwrite: true, + path: final_output, + mode: params.publish_dir_mode, + saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + ] // SAVE + } - withName: "^.*VCF_UPD_UPDIO:UPDIO\$" { - ext.prefix = {"updio_${meta.caller}"} - ext.args = {[ - "--childID ${meta.child}", - "--momID ${meta.mother}", - "--dadID ${meta.father}", - "--include_MI" - ].join(" ")} - publishDir = [ - overwrite: true, - path: final_output, - mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : "${filename}/${meta.child}" } - ] // SAVE - } - } + withName: "^.*VCF_UPD_UPDIO:BCFTOOLS_FILTER\$" { + ext.prefix = { "${meta.id}.filtered" } + ext.args = [ + "--output-type z", + "--write-index=tbi", + "-r chr1,chr2,chr3,chr4,chr5,chr6,chr7,chr8,chr9,chr10,chr11,chr12,chr13,chr14,chr15,chr16,chr17,chr18,chr19,chr20,chr21,chr22,chrX,chrY" + ].join(" ") + } - if(params.automap) { - withName: "^.*VCF_ROH_AUTOMAP:AUTOMAP_AUTOMAP\$" { - ext.prefix = {"automap_${meta.caller}"} - ext.args = {[ - meta.family_samples.tokenize(",").size() > 1 ? "--multivcf" : "--id ${meta.family_samples}", - params.automap_panel_name ? "--panelname ${params.automap_panel_name}" : "" - ].findAll { it != "" }.join(" ")} - publishDir = [ - overwrite: true, - path: final_output, - mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } - ] // SAVE - } - } + withName: "^.*VCF_UPD_UPDIO:UPDIO\$" { + ext.prefix = {"updio_${meta.caller}"} + ext.args = {[ + "--childID ${meta.child}", + "--momID ${meta.mother}", + "--dadID ${meta.father}", + "--include_MI" + ].join(" ")} + publishDir = [ + overwrite: true, + path: final_output, + mode: params.publish_dir_mode, + saveAs: { filename -> filename.equals('versions.yml') ? null : "${filename}/${meta.child}" } + ] // SAVE + } - withName: "^.*TABIX_FINAL\$" { - publishDir = [ - enabled: true, - overwrite: true, - path: final_output, - mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } - ] // SAVE - } + withName: "^.*VCF_ROH_AUTOMAP:AUTOMAP_AUTOMAP\$" { + ext.prefix = {"automap_${meta.caller}"} + ext.args = {[ + meta.family_samples.tokenize(",").size() > 1 ? "--multivcf" : "--id ${meta.family_samples}", + params.automap_panel_name ? "--panelname ${params.automap_panel_name}" : "" + ].findAll { it != "" }.join(" ")} + publishDir = [ + overwrite: true, + path: final_output, + mode: params.publish_dir_mode, + saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + ] // SAVE + } + + withName: "^.*TABIX_FINAL\$" { + publishDir = [ + enabled: true, + overwrite: true, + path: final_output, + mode: params.publish_dir_mode, + saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + ] // SAVE } /* From 0f116993f1a839df6f1e2bb5a88bcb7ded226c4e Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Fri, 11 Oct 2024 17:29:35 +0200 Subject: [PATCH 036/167] update local modules --- modules/local/automap/automap/main.nf | 8 ++++---- modules/local/automap/repeats/main.nf | 1 - modules/local/updio/main.nf | 8 ++++---- 3 files changed, 8 insertions(+), 9 deletions(-) diff --git a/modules/local/automap/automap/main.nf b/modules/local/automap/automap/main.nf index b84535a9..600eb300 100644 --- a/modules/local/automap/automap/main.nf +++ b/modules/local/automap/automap/main.nf @@ -11,12 +11,12 @@ process AUTOMAP_AUTOMAP { val(genome) output: - tuple val(meta), path("${prefix}"), emit: automap - path "versions.yml" , emit: versions + tuple val(meta), path("${task.ext.prefix ?: meta.id}"), emit: automap + path "versions.yml" , emit: versions script: def args = task.ext.args ?: '' - prefix = task.ext.prefix ?: "${meta.id}" + def prefix = task.ext.prefix ?: "${meta.id}" def panel_file = panel ? "--panel $panel" : "--panel /usr/local/lib/automap/Resources/Biomodule_20220808_all_genes_hg38.txt" def hg_genome = genome ?: "hg38" @@ -40,7 +40,7 @@ process AUTOMAP_AUTOMAP { stub: def args = task.ext.args ?: '' def panel_name = args.contains("--panelname") ? args.split("--panelname")[-1].trim().split(" ")[0] : "" - prefix = task.ext.prefix ?: "${meta.id}" + def prefix = task.ext.prefix ?: "${meta.id}" def create_outputs = meta.family_samples.tokenize(",").size() > 1 ? (1..meta.family_samples.tokenize(",").size()).collect { number -> def cmd_prefix = "touch ${prefix}/sample${number}" diff --git a/modules/local/automap/repeats/main.nf b/modules/local/automap/repeats/main.nf index e5848023..25d7cf00 100644 --- a/modules/local/automap/repeats/main.nf +++ b/modules/local/automap/repeats/main.nf @@ -12,7 +12,6 @@ process AUTOMAP_REPEATS { path "versions.yml" , emit: versions script: - def args = task.ext.args ?: '' def prefix = task.ext.prefix ?: "${meta.id}" def VERSION = "1.0.0" diff --git a/modules/local/updio/main.nf b/modules/local/updio/main.nf index 2dfd7ef9..44e882f5 100644 --- a/modules/local/updio/main.nf +++ b/modules/local/updio/main.nf @@ -9,12 +9,12 @@ process UPDIO { tuple val(meta2), path(cnv) output: - tuple val(meta), path("${prefix}"), emit: updio - path "versions.yml" , emit: versions + tuple val(meta), path("${task.ext.prefix ?: meta.id}"), emit: updio + path "versions.yml" , emit: versions script: def args = task.ext.args ?: '' - prefix = task.ext.prefix ?: "${meta.id}" + def prefix = task.ext.prefix ?: "${meta.id}" def common_cnv_file = cnv ? "--common_cnv_file $cnv" : "--common_cnv_file /usr/local/lib/updio/sample_data/common_dels_1percent_liftover.tsv" def VERSION = "1.0.0" @@ -33,7 +33,7 @@ process UPDIO { """ stub: - prefix = task.ext.prefix ?: "${meta.id}" + def prefix = task.ext.prefix ?: "${meta.id}" def VERSION = "1.0.0" """ From 54e1a2faa8b97f40e2a50ab2a2f9fb01159287d9 Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Mon, 14 Oct 2024 10:18:39 +0200 Subject: [PATCH 037/167] update subwfs part 1 --- subworkflows/local/cram_call_gatk4/main.nf | 26 ++- .../local/cram_call_genotype_gatk4/main.nf | 14 +- .../local/cram_call_vardictjava/main.nf | 187 +++++++++--------- 3 files changed, 108 insertions(+), 119 deletions(-) diff --git a/subworkflows/local/cram_call_gatk4/main.nf b/subworkflows/local/cram_call_gatk4/main.nf index 308b69f0..d0e14ebd 100644 --- a/subworkflows/local/cram_call_gatk4/main.nf +++ b/subworkflows/local/cram_call_gatk4/main.nf @@ -6,7 +6,7 @@ include { GATK4_CALIBRATEDRAGSTRMODEL } from '../../../modules/nf- include { GATK4_HAPLOTYPECALLER } from '../../../modules/nf-core/gatk4/haplotypecaller/main' include { BCFTOOLS_STATS as BCFTOOLS_STATS_SINGLE } from '../../../modules/nf-core/bcftools/stats/main' -include { VCF_CONCAT_BCFTOOLS } from '../vcf_concat_bcftools/main' +include { VCF_CONCAT_BCFTOOLS } from '../vcf_concat_bcftools/main' workflow CRAM_CALL_GATK4 { take: @@ -21,13 +21,13 @@ workflow CRAM_CALL_GATK4 { main: - ch_versions = Channel.empty() + def ch_versions = Channel.empty() // // Generate DRAGSTR models (if --dragstr is specified) // - ch_cram_models = Channel.empty() + def ch_cram_models = Channel.empty() if (dragstr) { ch_input @@ -43,26 +43,24 @@ workflow CRAM_CALL_GATK4 { .set { ch_dragstr_input } GATK4_CALIBRATEDRAGSTRMODEL( - ch_dragstr_input.map { meta, cram, crai, beds -> [ meta, cram, crai ] }, - ch_fasta.map { meta, fasta -> fasta }, - ch_fai.map { meta, fai -> fai }, - ch_dict.map { meta, dict -> dict }, - ch_strtablefile.map { meta, str -> str } + ch_dragstr_input.map { meta, cram, crai, _beds -> [ meta, cram, crai ] }, + ch_fasta.map { _meta, fasta -> fasta }, + ch_fai.map { _meta, fai -> fai }, + ch_dict.map { _meta, dict -> dict }, + ch_strtablefile.map { _meta, str -> str } ) ch_versions = ch_versions.mix(GATK4_CALIBRATEDRAGSTRMODEL.out.versions.first()) - ch_original + ch_cram_models = ch_original .combine(GATK4_CALIBRATEDRAGSTRMODEL.out.dragstr_model, by: 0) .map { meta, cram, crai, bed, dragstr_model -> def new_meta = meta + [id:bed.baseName] [ new_meta, cram, crai, bed, dragstr_model ] } - .set { ch_cram_models } } else { - ch_input + ch_cram_models = ch_input .map { meta, cram, crai, bed -> [ meta, cram, crai, bed, [] ] } - .set { ch_cram_models } } GATK4_HAPLOTYPECALLER( @@ -99,11 +97,11 @@ workflow CRAM_CALL_GATK4 { ) ch_versions = ch_versions.mix(BCFTOOLS_STATS_SINGLE.out.versions.first()) - reports = BCFTOOLS_STATS_SINGLE.out.stats.collect{ meta, report -> report} + def ch_reports = BCFTOOLS_STATS_SINGLE.out.stats.collect{ _meta, report -> report} emit: gvcfs = VCF_CONCAT_BCFTOOLS.out.vcfs // channel: [ val(meta), path(vcf), path(tbi) ] - reports // channel: [ path(stats) ] + reports = ch_reports // channel: [ path(stats) ] versions = ch_versions // channel: [ versions.yml ] } diff --git a/subworkflows/local/cram_call_genotype_gatk4/main.nf b/subworkflows/local/cram_call_genotype_gatk4/main.nf index 2a33b0ab..910baed6 100644 --- a/subworkflows/local/cram_call_genotype_gatk4/main.nf +++ b/subworkflows/local/cram_call_genotype_gatk4/main.nf @@ -24,9 +24,9 @@ workflow CRAM_CALL_GENOTYPE_GATK4 { main: - ch_versions = Channel.empty() - ch_vcfs = Channel.empty() - ch_reports = Channel.empty() + def ch_versions = Channel.empty() + def ch_vcfs = Channel.empty() + def ch_reports = Channel.empty() CRAM_CALL_GATK4( ch_input, @@ -41,7 +41,7 @@ workflow CRAM_CALL_GENOTYPE_GATK4 { ch_versions = ch_versions.mix(CRAM_CALL_GATK4.out.versions) ch_reports = ch_reports.mix(CRAM_CALL_GATK4.out.reports) - ch_gvcfs_ready = ch_gvcfs + def ch_gvcfs_ready = ch_gvcfs .map { meta, gvcf, tbi -> def new_meta = meta + [caller:"haplotypecaller"] [ new_meta, gvcf, tbi ] @@ -73,11 +73,9 @@ workflow CRAM_CALL_GENOTYPE_GATK4 { ) ch_versions = ch_versions.mix(VCF_FILTER_BCFTOOLS.out.versions) - VCF_FILTER_BCFTOOLS.out.vcfs - .set { ch_vcfs } + ch_vcfs = VCF_FILTER_BCFTOOLS.out.vcfs } else { - GVCF_JOINT_GENOTYPE_GATK4.out.vcfs - .set { ch_vcfs } + ch_vcfs = GVCF_JOINT_GENOTYPE_GATK4.out.vcfs } } diff --git a/subworkflows/local/cram_call_vardictjava/main.nf b/subworkflows/local/cram_call_vardictjava/main.nf index d834fdb0..67012d9e 100644 --- a/subworkflows/local/cram_call_vardictjava/main.nf +++ b/subworkflows/local/cram_call_vardictjava/main.nf @@ -20,111 +20,104 @@ workflow CRAM_CALL_VARDICTJAVA { filter // boolean: filter the VCFs main: - ch_versions = Channel.empty() - - ch_crams - .map { meta, cram, crai -> - def new_meta = meta + [caller:"vardict"] - [ new_meta, cram, crai ] - } - .set { ch_crams } - - ch_crams - .branch { meta, cram, crai -> - bam: cram.extension == "bam" - cram: cram.extension == "cram" - } - .set { ch_cram_bam } - - SAMTOOLS_CONVERT( - ch_cram_bam.cram, - ch_fasta, - ch_fai - ) - ch_versions = ch_versions.mix(SAMTOOLS_CONVERT.out.versions.first()) - - ch_input - .map { meta, cram, crai, bed -> - def new_meta = meta - meta.subMap("split_count") + [caller:"vardict", id:meta.sample] - [ new_meta, cram, crai, bed, meta.split_count ] - } - .set { ch_vardict_crams } - - ch_cram_bam.bam - .mix(SAMTOOLS_CONVERT.out.bam.join(SAMTOOLS_CONVERT.out.bai, failOnMismatch:true, failOnDuplicate:true)) - .combine(ch_vardict_crams, by:0) - .map { meta, bam, bai, cram, crai, bed, split_count -> - def new_meta = meta + [id:bed.baseName, split_count:split_count] - [ new_meta, bam, bai, bed ] - } - .set { ch_vardict_input } - - VARDICTJAVA( - ch_vardict_input, - ch_fasta, - ch_fai - ) - ch_versions = ch_versions.mix(VARDICTJAVA.out.versions.first()) + def ch_versions = Channel.empty() - VCF_CONCAT_BCFTOOLS( - VARDICTJAVA.out.vcf, - false - ) - ch_versions = ch_versions.mix(VCF_CONCAT_BCFTOOLS.out.versions) - - ch_dbsnp_annotated = Channel.empty() - if(ch_dbsnp != [[],[]]) { - ch_dbsnp - .map { meta, dbsnp -> [ get_vcfanno_config(dbsnp) ] } - .collect() - .set { ch_vcfanno_toml } - - ch_dbsnp.map { meta, dbsnp -> dbsnp } - .combine(ch_dbsnp_tbi.map { meta, tbi -> tbi }) - .collect() - .set { ch_vcfanno_resources } - - VCFANNO( - VCF_CONCAT_BCFTOOLS.out.vcfs.map { meta, vcf -> [ meta, vcf, [], [] ] }, - ch_vcfanno_toml, - [], - ch_vcfanno_resources - ) - ch_versions = ch_versions.mix(VCFANNO.out.versions.first()) - - TABIX_BGZIP( - VCFANNO.out.vcf - ) - ch_versions = ch_versions.mix(TABIX_BGZIP.out.versions.first()) - - TABIX_BGZIP.out.output.set { ch_dbsnp_annotated } - } else { - VCF_CONCAT_BCFTOOLS.out.vcfs.set { ch_dbsnp_annotated } + def ch_cram_bam = ch_crams + .map { meta, cram, crai -> + def new_meta = meta + [caller:"vardict"] + [ new_meta, cram, crai ] + } + .branch { _meta, cram, _crai -> + bam: cram.extension == "bam" + cram: cram.extension == "cram" + } + + SAMTOOLS_CONVERT( + ch_cram_bam.cram, + ch_fasta, + ch_fai + ) + ch_versions = ch_versions.mix(SAMTOOLS_CONVERT.out.versions.first()) + + def ch_vardict_crams = ch_input + .map { meta, cram, crai, bed -> + def new_meta = meta - meta.subMap("split_count") + [caller:"vardict", id:meta.sample] + [ new_meta, cram, crai, bed, meta.split_count ] } - if(filter) { - VCF_FILTER_BCFTOOLS( - ch_dbsnp_annotated, - false - ) - ch_versions = ch_versions.mix(VCF_FILTER_BCFTOOLS.out.versions) - ch_filter_output = VCF_FILTER_BCFTOOLS.out.vcfs - } else { - ch_filter_output = ch_dbsnp_annotated + def ch_vardict_input = ch_cram_bam.bam + .mix(SAMTOOLS_CONVERT.out.bam.join(SAMTOOLS_CONVERT.out.bai, failOnMismatch:true, failOnDuplicate:true)) + .combine(ch_vardict_crams, by:0) + .map { meta, bam, bai, _cram, _crai, bed, split_count -> + def new_meta = meta + [id:bed.baseName, split_count:split_count] + [ new_meta, bam, bai, bed ] } - TABIX_TABIX( - ch_filter_output + VARDICTJAVA( + ch_vardict_input, + ch_fasta, + ch_fai + ) + ch_versions = ch_versions.mix(VARDICTJAVA.out.versions.first()) + + VCF_CONCAT_BCFTOOLS( + VARDICTJAVA.out.vcf, + false + ) + ch_versions = ch_versions.mix(VCF_CONCAT_BCFTOOLS.out.versions) + + def ch_annotated = Channel.empty() + if(!(ch_dbsnp instanceof List)) { + ch_dbsnp.map { _meta, dbsnp -> [ get_vcfanno_config(dbsnp) ] } + .collect() + .set { ch_vcfanno_toml } + + ch_dbsnp.map { _meta, dbsnp -> dbsnp } + .combine(ch_dbsnp_tbi.map { _meta, tbi -> tbi }) + .collect() + .set { ch_vcfanno_resources } + + VCFANNO( + VCF_CONCAT_BCFTOOLS.out.vcfs.map { meta, vcf -> [ meta, vcf, [], [] ] }, + ch_vcfanno_toml, + [], + ch_vcfanno_resources ) - ch_versions = ch_versions.mix(TABIX_TABIX.out.versions.first()) + ch_versions = ch_versions.mix(VCFANNO.out.versions.first()) + TABIX_BGZIP( + VCFANNO.out.vcf + ) + ch_versions = ch_versions.mix(TABIX_BGZIP.out.versions.first()) + + ch_annotated = TABIX_BGZIP.out.output + } else { + ch_annotated = VCF_CONCAT_BCFTOOLS.out.vcfs + } + + def ch_filter_output = Channel.empty() + if(filter) { + VCF_FILTER_BCFTOOLS( + ch_annotated, + false + ) + ch_versions = ch_versions.mix(VCF_FILTER_BCFTOOLS.out.versions) + ch_filter_output = VCF_FILTER_BCFTOOLS.out.vcfs + } else { + ch_filter_output = ch_annotated + } + + TABIX_TABIX( ch_filter_output - .join(TABIX_TABIX.out.tbi, failOnDuplicate: true, failOnMismatch: true) - .map { meta, vcf, tbi -> - def new_meta = meta + [family_samples: meta.sample] - [ new_meta, vcf, tbi ] - } - .set { ch_vcfs } + ) + ch_versions = ch_versions.mix(TABIX_TABIX.out.versions.first()) + + def ch_vcfs = ch_filter_output + .join(TABIX_TABIX.out.tbi, failOnDuplicate: true, failOnMismatch: true) + .map { meta, vcf, tbi -> + def new_meta = meta + [family_samples: meta.sample] + [ new_meta, vcf, tbi ] + } emit: vcfs = ch_vcfs // channel: [ val(meta), path(vcf), path(tbi) ] From edc900e1d86ef2855ef198c93643d45032febb55 Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Mon, 14 Oct 2024 10:42:32 +0200 Subject: [PATCH 038/167] update subwfs part 2 --- main.nf | 1 - .../cram_prepare_samtools_bedtools/main.nf | 67 ++++++------------- .../local/gvcf_joint_genotype_gatk4/main.nf | 24 +++---- .../local/input_split_bedtools/main.nf | 7 +- .../utils_cmgg_germline_pipeline/main.nf | 9 ++- 5 files changed, 37 insertions(+), 71 deletions(-) diff --git a/main.nf b/main.nf index aa5fd56f..84ac2107 100644 --- a/main.nf +++ b/main.nf @@ -199,7 +199,6 @@ workflow { PIPELINE_INITIALISATION ( params.version, params.validate_params, - params.monochrome_logs, args, params.outdir, params.input, diff --git a/subworkflows/local/cram_prepare_samtools_bedtools/main.nf b/subworkflows/local/cram_prepare_samtools_bedtools/main.nf index 94e24a7c..dbce8201 100644 --- a/subworkflows/local/cram_prepare_samtools_bedtools/main.nf +++ b/subworkflows/local/cram_prepare_samtools_bedtools/main.nf @@ -23,14 +23,14 @@ workflow CRAM_PREPARE_SAMTOOLS_BEDTOOLS { main: - ch_versions = Channel.empty() - ch_reports = Channel.empty() + def ch_versions = Channel.empty() + def ch_reports = Channel.empty() // // Merge the CRAM files if there are multiple per sample // - ch_crams + def ch_cram_branch = ch_crams .map { meta, cram, crai -> [ groupKey(meta, meta.duplicate_count), cram, crai] } @@ -41,10 +41,6 @@ workflow CRAM_PREPARE_SAMTOOLS_BEDTOOLS { single: cram.size() == 1 return [meta.target, cram[0], crai[0]] } - .set { ch_cram_branch } - - ch_cram_branch.multiple.dump(tag:'cram_branch_multiple', pretty:true) - ch_cram_branch.single.dump(tag:'cram_branch_single', pretty:true) SAMTOOLS_MERGE( ch_cram_branch.multiple, @@ -57,7 +53,7 @@ workflow CRAM_PREPARE_SAMTOOLS_BEDTOOLS { // Index the CRAM files which have no index // - SAMTOOLS_MERGE.out.cram + def ch_merged_crams = SAMTOOLS_MERGE.out.cram .mix(ch_cram_branch.single) .branch { meta, cram, crai=[] -> not_indexed: crai == [] @@ -65,27 +61,21 @@ workflow CRAM_PREPARE_SAMTOOLS_BEDTOOLS { indexed: crai != [] return [ meta, cram, crai ] } - .set { ch_merged_crams } - - ch_merged_crams.not_indexed.dump(tag:'merged_crams_not_indexed', pretty:true) - ch_merged_crams.indexed.dump(tag:'merged_crams_indexed', pretty:true) SAMTOOLS_INDEX( ch_merged_crams.not_indexed ) ch_versions = ch_versions.mix(SAMTOOLS_INDEX.out.versions.first()) - ch_merged_crams.not_indexed + def ch_ready_crams = ch_merged_crams.not_indexed .join(SAMTOOLS_INDEX.out.crai, failOnDuplicate: true, failOnMismatch: true) .mix(ch_merged_crams.indexed) - .dump(tag:'ready_crams', pretty:true) - .set { ch_ready_crams } // // Preprocess the ROI BED files => sort and merge overlapping regions // - ch_roi + def ch_roi_branch = ch_roi .map { meta, roi -> [ groupKey(meta, meta.duplicate_count), roi ] } @@ -95,20 +85,12 @@ workflow CRAM_PREPARE_SAMTOOLS_BEDTOOLS { // It's possible that a sample is given multiple times in the samplesheet, in which // case they have been merged earlier. This code checks if at least one entry of the same // sample contains an ROI file - def is_present = false - def output_roi = [] - roi.each { entry -> - if(entry != []){ - output_roi.add(entry) - is_present = true - } - } - found: is_present + def output_roi = roi.findAll { entry -> entry != [] } + found: output_roi.size() > 0 return [ meta.target, output_roi ] - missing: !is_present + missing: output_roi.size() == 0 return [ meta.target, [] ] } - .set { ch_roi_branch } MERGE_ROI_SAMPLE( ch_roi_branch.found, @@ -118,7 +100,7 @@ workflow CRAM_PREPARE_SAMTOOLS_BEDTOOLS { // Add the default ROI file to all samples without an ROI file // if an ROI BED file has been given through the --roi parameter - ch_missing_rois = Channel.empty() + def ch_missing_rois = Channel.empty() if (ch_default_roi) { MERGE_ROI_PARAMS( ch_default_roi.map { bed -> @@ -128,31 +110,27 @@ workflow CRAM_PREPARE_SAMTOOLS_BEDTOOLS { ) ch_versions = ch_versions.mix(MERGE_ROI_PARAMS.out.versions) - ch_roi_branch.missing + ch_missing_rois = ch_roi_branch.missing .map { meta, bed -> [ groupKey(meta, meta.duplicate_count), bed ] } .groupTuple() - .combine(MERGE_ROI_PARAMS.out.bed.map { meta, bed -> bed }) - .map { meta, missing, default_roi -> + .combine(MERGE_ROI_PARAMS.out.bed.map { _meta, bed -> bed }) + .map { meta, _missing, default_roi -> [ meta.target, default_roi ] } - .set { ch_missing_rois } } else { - ch_roi_branch.missing.set { ch_missing_rois } + ch_missing_rois = ch_roi_branch.missing } - ch_missing_rois - .mix(MERGE_ROI_SAMPLE.out.bed) - .set { ch_ready_rois } + def ch_ready_rois = ch_missing_rois.mix(MERGE_ROI_SAMPLE.out.bed) // // Create callable regions // - ch_ready_crams + def ch_mosdepth_input = ch_ready_crams .join(ch_ready_rois, failOnDuplicate:true, failOnMismatch:true) - .set { ch_mosdepth_input } MOSDEPTH( ch_mosdepth_input, @@ -160,25 +138,23 @@ workflow CRAM_PREPARE_SAMTOOLS_BEDTOOLS { ) ch_versions = ch_versions.mix(MOSDEPTH.out.versions.first()) - ch_ready_rois + def ch_beds_to_filter = ch_ready_rois .join(MOSDEPTH.out.quantized_bed, failOnDuplicate:true, failOnMismatch:true) - .set { ch_beds_to_filter } // Filter out the regions with no coverage FILTER_BEDS( - ch_beds_to_filter.map { meta, roi, callable -> [ meta, callable ]} + ch_beds_to_filter.map { meta, _roi, callable -> [ meta, callable ]} ) ch_versions = ch_versions.mix(FILTER_BEDS.out.versions) - FILTER_BEDS.out.bed + def ch_beds_to_intersect = FILTER_BEDS.out.bed .join(ch_beds_to_filter, failOnDuplicate:true, failOnMismatch:true) - .branch { meta, filtered_callable, roi, callable -> + .branch { meta, filtered_callable, roi, _callable -> roi: roi return [ meta, roi, filtered_callable ] no_roi: !roi return [ meta, filtered_callable ] } - .set { ch_beds_to_intersect } // Intersect the ROI with the callable regions BEDTOOLS_INTERSECT( @@ -187,9 +163,8 @@ workflow CRAM_PREPARE_SAMTOOLS_BEDTOOLS { ) ch_versions = ch_versions.mix(BEDTOOLS_INTERSECT.out.versions) - ch_beds_to_intersect.no_roi + def ch_ready_beds = ch_beds_to_intersect.no_roi .mix(BEDTOOLS_INTERSECT.out.intersect) - .set { ch_ready_beds } emit: ready_crams = ch_ready_crams // [ val(meta), path(cram), path(crai) ] diff --git a/subworkflows/local/gvcf_joint_genotype_gatk4/main.nf b/subworkflows/local/gvcf_joint_genotype_gatk4/main.nf index c9114b75..b3f761f4 100644 --- a/subworkflows/local/gvcf_joint_genotype_gatk4/main.nf +++ b/subworkflows/local/gvcf_joint_genotype_gatk4/main.nf @@ -27,8 +27,8 @@ workflow GVCF_JOINT_GENOTYPE_GATK4 { main: - ch_versions = Channel.empty() - ch_vcfs = Channel.empty() + def ch_versions = Channel.empty() + def ch_vcfs = Channel.empty() // // Get a BED file containing all contigs @@ -44,18 +44,17 @@ workflow GVCF_JOINT_GENOTYPE_GATK4 { // Create GenomicDBs for each family for each BED file // - ch_gvcfs + def ch_genomicsdbimport_input = ch_gvcfs .map { meta, gvcf, tbi -> // Create the family meta def new_meta = meta.subMap(["family", "family_samples", "caller"]) + [id:meta.family] [ groupKey(new_meta, meta.family_samples.tokenize(",").size()), gvcf, tbi ] } .groupTuple() - .combine(GAWK.out.output.map { meta, bed -> bed }) + .combine(GAWK.out.output.map { _meta, bed -> bed }) .map { meta, gvcfs, tbis, bed -> [ meta, gvcfs, tbis, bed, [], [] ] } - .set { ch_genomicsdbimport_input } GATK4_GENOMICSDBIMPORT( ch_genomicsdbimport_input, @@ -75,15 +74,13 @@ workflow GVCF_JOINT_GENOTYPE_GATK4 { ) ch_versions = ch_versions.mix(BCFTOOLS_QUERY.out.versions.first()) - BCFTOOLS_QUERY.out.output + def ch_merge_beds_input = BCFTOOLS_QUERY.out.output .map { meta, bed -> // Create the family meta def new_meta = meta.subMap(["family", "family_samples", "caller"]) + [id:meta.family] [ groupKey(new_meta, meta.family_samples.tokenize(",").size()), bed ] } .groupTuple() - .dump(tag:'merge_beds_input', pretty: true) - .set { ch_merge_beds_input } MERGE_BEDS( ch_merge_beds_input, @@ -104,11 +101,10 @@ workflow GVCF_JOINT_GENOTYPE_GATK4 { ) ch_versions = ch_versions.mix(INPUT_SPLIT_BEDTOOLS.out.versions) - INPUT_SPLIT_BEDTOOLS.out.split - .map { meta, genomicsdb, extra, bed -> + def ch_genotypegvcfs_input = INPUT_SPLIT_BEDTOOLS.out.split + .map { meta, genomicsdb, _extra, bed -> [ meta, genomicsdb, [], bed, [] ] } - .set { ch_genotypegvcfs_input } // // Genotype the genomicsDBs @@ -124,9 +120,8 @@ workflow GVCF_JOINT_GENOTYPE_GATK4 { ) ch_versions = ch_versions.mix(GATK4_GENOTYPEGVCFS.out.versions.first()) - GATK4_GENOTYPEGVCFS.out.vcf + def ch_gather_inputs = GATK4_GENOTYPEGVCFS.out.vcf .join(GATK4_GENOTYPEGVCFS.out.tbi, failOnDuplicate: true, failOnMismatch: true) - .set { ch_gather_inputs } // // Combine the genotyped VCFs from each family back together @@ -138,8 +133,7 @@ workflow GVCF_JOINT_GENOTYPE_GATK4 { ) ch_versions = ch_versions.mix(VCF_CONCAT_BCFTOOLS.out.versions) - VCF_CONCAT_BCFTOOLS.out.vcfs - .set { ch_vcfs } + ch_vcfs = VCF_CONCAT_BCFTOOLS.out.vcfs } diff --git a/subworkflows/local/input_split_bedtools/main.nf b/subworkflows/local/input_split_bedtools/main.nf index b70140b5..20977cb0 100644 --- a/subworkflows/local/input_split_bedtools/main.nf +++ b/subworkflows/local/input_split_bedtools/main.nf @@ -11,18 +11,18 @@ workflow INPUT_SPLIT_BEDTOOLS { main: - ch_versions = Channel.empty() + def ch_versions = Channel.empty() BEDTOOLS_SPLIT( ch_beds ) ch_versions = ch_versions.mix(BEDTOOLS_SPLIT.out.versions.first()) - ch_inputs + def ch_split_output = ch_inputs .join(BEDTOOLS_SPLIT.out.beds, failOnDuplicate: true, failOnMismatch: true) .map { meta, input, input_index, beds -> // Determine the amount of BED files per sample - bed_is_list = beds instanceof ArrayList + def bed_is_list = beds instanceof ArrayList def new_meta = meta + [split_count: bed_is_list ? beds.size() : 1] [ new_meta, input, input_index, bed_is_list ? beds : [beds] ] } @@ -32,7 +32,6 @@ workflow INPUT_SPLIT_BEDTOOLS { def new_meta = meta + [id:bed.baseName] [ new_meta, input, input_index, bed ] } - .set { ch_split_output } emit: split = ch_split_output // channel: [ val(meta), path(input), path(input_index), path(bed) ] diff --git a/subworkflows/local/utils_cmgg_germline_pipeline/main.nf b/subworkflows/local/utils_cmgg_germline_pipeline/main.nf index a736397c..343aa32d 100644 --- a/subworkflows/local/utils_cmgg_germline_pipeline/main.nf +++ b/subworkflows/local/utils_cmgg_germline_pipeline/main.nf @@ -28,7 +28,6 @@ workflow PIPELINE_INITIALISATION { take: version // boolean: Display version and exit validate_params // boolean: Boolean whether to validate parameters against the schema at runtime - monochrome_logs // boolean: Do not use coloured log outputs nextflow_cli_args // array: List of positional nextflow CLI args outdir // string: The output directory where the results will be saved input // string: Path to input samplesheet @@ -39,7 +38,7 @@ workflow PIPELINE_INITIALISATION { main: - ch_versions = Channel.empty() + def ch_versions = Channel.empty() // // Print version and exit if required and dump pipeline parameters to JSON file @@ -111,7 +110,7 @@ workflow PIPELINE_COMPLETION { multiqc_report // string: Path to MultiQC report main: - summary_params = paramsSummaryMap(workflow, parameters_schema: "nextflow_schema.json") + def summary_params = paramsSummaryMap(workflow, parameters_schema: "nextflow_schema.json") // // Completion email and summary @@ -211,8 +210,8 @@ def methodsDescriptionText(mqc_methods_yaml) { // Removing ` ` since the manifest.doi is a string and not a proper list def temp_doi_ref = "" def manifest_doi = meta.manifest_map.doi.tokenize(",") - manifest_doi.each { doi_ref -> - temp_doi_ref += "(doi: ${doi_ref.replace("https://doi.org/", "").replace(" ", "")}), " + temp_doi_ref = manifest_doi.collect { doi_ref -> + return "(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"] = "" From dd9ea16b7826e5a5aa6d8f6fb441cf378488c257 Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Mon, 14 Oct 2024 11:24:46 +0200 Subject: [PATCH 039/167] update subwfs part 3 --- subworkflows/local/vcf_annotation/main.nf | 23 ++-- .../local/vcf_concat_bcftools/main.nf | 10 +- .../local/vcf_extract_relate_somalier/main.nf | 5 +- .../local/vcf_filter_bcftools/main.nf | 10 +- subworkflows/local/vcf_ped_rtgtools/main.nf | 7 +- subworkflows/local/vcf_roh_automap/main.nf | 8 +- subworkflows/local/vcf_upd_updio/main.nf | 30 +++-- .../local/vcf_validate_small_variants/main.nf | 103 +++++++++--------- workflows/germline.nf | 3 - 9 files changed, 88 insertions(+), 111 deletions(-) diff --git a/subworkflows/local/vcf_annotation/main.nf b/subworkflows/local/vcf_annotation/main.nf index 94698157..311477f5 100644 --- a/subworkflows/local/vcf_annotation/main.nf +++ b/subworkflows/local/vcf_annotation/main.nf @@ -14,7 +14,6 @@ workflow VCF_ANNOTATION { take: ch_vcfs // channel: [mandatory] [ val(meta), path(vcf) ] => The post-processed VCFs ch_fasta // channel: [mandatory] [ val(meta2), path(fasta) ] => fasta reference - ch_fai // channel: [mandatory] [ val(meta3), path(fai) ] => fasta index ch_vep_cache // channel: [optional] [ path(vep_cache) ] => The VEP cache to use ch_vep_extra_files // channel: [optional] [ path(file_1, file_2, file_3, ...) ] => All files necessary for using the desired plugins ch_vcfanno_config // channel: [mandatory if params.vcfanno == true] [ path(toml_config_file) ] => The TOML config file for VCFanno @@ -28,30 +27,28 @@ workflow VCF_ANNOTATION { main: - ch_annotated_vcfs = Channel.empty() - ch_reports = Channel.empty() - ch_versions = Channel.empty() + def ch_annotated_vcfs = Channel.empty() + def ch_reports = Channel.empty() + def ch_versions = Channel.empty() - ch_vcfs + def ch_tabix_input = ch_vcfs .branch { meta, vcf, tbi=[] -> tbi: tbi no_tbi: !tbi return [ meta, vcf ] } - .set { ch_tabix_input } TABIX_ENSEMBLVEP( ch_tabix_input.no_tbi ) ch_versions = ch_versions.mix(TABIX_ENSEMBLVEP.out.versions.first()) - ch_tabix_input.no_tbi + def ch_vep_input = ch_tabix_input.no_tbi .join(TABIX_ENSEMBLVEP.out.tbi, failOnDuplicate:true, failOnMismatch:true) .mix(ch_tabix_input.tbi) .map { meta, vcf, tbi -> [ meta, vcf, tbi, [] ] } - .set { ch_vep_input } // // Do the VEP annotation @@ -79,12 +76,11 @@ workflow VCF_ANNOTATION { if (vcfanno) { - VCF_ANNOTATE_ENSEMBLVEP.out.vcf_tbi + def ch_vcfanno_input = VCF_ANNOTATE_ENSEMBLVEP.out.vcf_tbi .map { meta, vcf, tbi -> [ meta, vcf, tbi, [] ] } .dump(tag:'vcfanno_input', pretty:true) - .set { ch_vcfanno_input } VCFANNO( ch_vcfanno_input, @@ -99,12 +95,11 @@ workflow VCF_ANNOTATION { ) ch_versions = ch_versions.mix(BGZIP_ANNOTATED_VCFS.out.versions.first()) - BGZIP_ANNOTATED_VCFS.out.output.set { ch_annotated_vcfs } + ch_annotated_vcfs = BGZIP_ANNOTATED_VCFS.out.output } else { - VCF_ANNOTATE_ENSEMBLVEP.out.vcf_tbi - .map { meta, vcf, tbi -> [ meta, vcf ]} - .set { ch_annotated_vcfs } + ch_annotated_vcfs = VCF_ANNOTATE_ENSEMBLVEP.out.vcf_tbi + .map { meta, vcf, _tbi -> [ meta, vcf ]} } emit: diff --git a/subworkflows/local/vcf_concat_bcftools/main.nf b/subworkflows/local/vcf_concat_bcftools/main.nf index 1f26e502..d2f3b186 100644 --- a/subworkflows/local/vcf_concat_bcftools/main.nf +++ b/subworkflows/local/vcf_concat_bcftools/main.nf @@ -12,7 +12,7 @@ workflow VCF_CONCAT_BCFTOOLS { main: - ch_versions = Channel.empty() + def ch_versions = Channel.empty() ch_vcfs .map { meta, vcf, tbi=[] -> @@ -30,29 +30,27 @@ workflow VCF_CONCAT_BCFTOOLS { ) ch_versions = ch_versions.mix(BCFTOOLS_CONCAT.out.versions.first()) - ch_vcf_tbi = Channel.empty() + def ch_vcf_tbi = Channel.empty() if(val_tabix) { TABIX_TABIX( BCFTOOLS_CONCAT.out.vcf ) ch_versions = ch_versions.mix(TABIX_TABIX.out.versions.first()) - BCFTOOLS_CONCAT.out.vcf + ch_vcf_tbi = BCFTOOLS_CONCAT.out.vcf .join(TABIX_TABIX.out.tbi, failOnDuplicate: true, failOnMismatch: true) .map { meta, vcf, tbi -> // Remove the bed counter from the meta field def new_meta = meta - meta.subMap("split_count") [ new_meta, vcf, tbi ] } - .set { ch_vcf_tbi } } else { - BCFTOOLS_CONCAT.out.vcf + ch_vcf_tbi = BCFTOOLS_CONCAT.out.vcf .map { meta, vcf -> // Remove the bed counter from the meta field def new_meta = meta - meta.subMap("split_count") [ new_meta, vcf ] } - .set { ch_vcf_tbi } } emit: diff --git a/subworkflows/local/vcf_extract_relate_somalier/main.nf b/subworkflows/local/vcf_extract_relate_somalier/main.nf index d78e4915..2d5ec5b9 100644 --- a/subworkflows/local/vcf_extract_relate_somalier/main.nf +++ b/subworkflows/local/vcf_extract_relate_somalier/main.nf @@ -11,7 +11,7 @@ workflow VCF_EXTRACT_RELATE_SOMALIER { main: - ch_versions = Channel.empty() + def ch_versions = Channel.empty() SOMALIER_EXTRACT( ch_vcfs, @@ -22,12 +22,11 @@ workflow VCF_EXTRACT_RELATE_SOMALIER { ch_versions = ch_versions.mix(SOMALIER_EXTRACT.out.versions.first()) - SOMALIER_EXTRACT.out.extract + def ch_somalierrelate_input = SOMALIER_EXTRACT.out.extract .join(ch_peds, failOnDuplicate:true, failOnMismatch:true) .map { meta, extract, ped -> [ meta, extract, ped ] } - .set { ch_somalierrelate_input } SOMALIER_RELATE( ch_somalierrelate_input, diff --git a/subworkflows/local/vcf_filter_bcftools/main.nf b/subworkflows/local/vcf_filter_bcftools/main.nf index f27fb2e1..cf2cdc1a 100644 --- a/subworkflows/local/vcf_filter_bcftools/main.nf +++ b/subworkflows/local/vcf_filter_bcftools/main.nf @@ -13,7 +13,7 @@ workflow VCF_FILTER_BCFTOOLS { main: - ch_versions = Channel.empty() + def ch_versions = Channel.empty() FILTER_1( ch_vcfs.map { meta, vcf, tbi=[] -> [ meta, vcf, tbi ]} @@ -25,19 +25,17 @@ workflow VCF_FILTER_BCFTOOLS { ) ch_versions = ch_versions.mix(FILTER_2.out.versions.first()) - ch_filter_vcfs = Channel.empty() + def ch_filter_vcfs = Channel.empty() if(val_tabix) { TABIX_TABIX( FILTER_2.out.vcf ) ch_versions = ch_versions.mix(TABIX_TABIX.out.versions.first()) - FILTER_2.out.vcf + ch_filter_vcfs = FILTER_2.out.vcf .join(TABIX_TABIX.out.tbi, failOnDuplicate: true, failOnMismatch: true) - .set { ch_filter_vcfs } } else { - FILTER_2.out.vcf - .set { ch_filter_vcfs } + ch_filter_vcfs = FILTER_2.out.vcf } diff --git a/subworkflows/local/vcf_ped_rtgtools/main.nf b/subworkflows/local/vcf_ped_rtgtools/main.nf index 2f762737..f4eba7b7 100644 --- a/subworkflows/local/vcf_ped_rtgtools/main.nf +++ b/subworkflows/local/vcf_ped_rtgtools/main.nf @@ -12,7 +12,7 @@ workflow VCF_PED_RTGTOOLS { main: - ch_versions = Channel.empty() + def ch_versions = Channel.empty() // // Remove extra columns from the samples TSV and convert to a VCF header @@ -27,12 +27,11 @@ workflow VCF_PED_RTGTOOLS { // Add the PED headers to the VCF using bcftools annotate --header-lines // - ch_vcfs + def ch_annotate_input = ch_vcfs .join(RTGTOOLS_PEDFILTER.out.output, failOnDuplicate:true, failOnMismatch:true) - .map { meta, vcf, tbi, ped_vcf -> + .map { meta, vcf, _tbi, ped_vcf -> [ meta, vcf, [], [], [], ped_vcf ] } - .set { ch_annotate_input } BCFTOOLS_ANNOTATE( ch_annotate_input diff --git a/subworkflows/local/vcf_roh_automap/main.nf b/subworkflows/local/vcf_roh_automap/main.nf index 24998f31..2941fd4e 100644 --- a/subworkflows/local/vcf_roh_automap/main.nf +++ b/subworkflows/local/vcf_roh_automap/main.nf @@ -13,7 +13,7 @@ workflow VCF_ROH_AUTOMAP { val_genome // value: [mandatory] => The genome to be used by automap main: - ch_versions = Channel.empty() + def ch_versions = Channel.empty() def hg_genome = val_genome == "GRCh38" ? "hg38" : val_genome == "GRCh37" ? "hg19" : val_genome @@ -22,15 +22,15 @@ workflow VCF_ROH_AUTOMAP { } // Merge the repeat BED files from the container if no container has been given - ch_valid_repeats = Channel.empty() + def ch_valid_repeats = Channel.empty() if (!ch_repeats) { AUTOMAP_REPEATS( Channel.value([[id:"${val_genome}_repeats"], val_genome]) ) ch_versions = ch_versions.mix(AUTOMAP_REPEATS.out.versions) - AUTOMAP_REPEATS.out.repeats.collect().set { ch_valid_repeats } + ch_valid_repeats = AUTOMAP_REPEATS.out.repeats.collect() } else { - ch_repeats.set { ch_valid_repeats } + ch_valid_repeats = ch_repeats } AUTOMAP_AUTOMAP( diff --git a/subworkflows/local/vcf_upd_updio/main.nf b/subworkflows/local/vcf_upd_updio/main.nf index 7c3f3a62..1d0cf66b 100644 --- a/subworkflows/local/vcf_upd_updio/main.nf +++ b/subworkflows/local/vcf_upd_updio/main.nf @@ -13,45 +13,41 @@ workflow VCF_UPD_UPDIO { main: - ch_versions = Channel.empty() + def ch_versions = Channel.empty() // Filter out all families that have less than 3 samples - ch_vcfs - .filter { meta, vcf, tbi -> + def ch_trio_vcfs = ch_vcfs + .filter { meta, _vcf, _tbi -> meta.family_samples.tokenize(",").size() >= 3 } - .set { ch_trio_vcfs } BCFTOOLS_FILTER( ch_trio_vcfs ) ch_versions = ch_versions.mix(BCFTOOLS_FILTER.out.versions.first()) - BCFTOOLS_FILTER.out.vcf + def ch_filter_output = BCFTOOLS_FILTER.out.vcf .join(BCFTOOLS_FILTER.out.tbi, failOnDuplicate:true, failOnMismatch:true) - .set { ch_filter_output } - ch_peds - .filter { meta, ped -> + def ch_trio_peds = ch_peds + .filter { meta, _ped -> meta.family_samples.tokenize(",").size() >= 3 } - .set { ch_trio_peds } - CustomChannelOperators.joinOnKeys( - [failOnDuplicate:true, failOnMismatch:true], - ch_filter_output, - ch_trio_peds, - ["id", "family", "family_samples", "caller"] - ) + def ch_trio_vcfs_family = CustomChannelOperators.joinOnKeys( + [failOnDuplicate:true, failOnMismatch:true], + ch_filter_output, + ch_trio_peds, + ["id", "family", "family_samples", "caller"] + ) .map { meta, vcf, tbi, ped -> def meta_list = get_family_data_from_ped(meta, ped) [ meta_list, vcf, tbi ] } - .filter { meta, vcf, tbi -> + .filter { meta, _vcf, _tbi -> meta } .transpose(by:0) - .set { ch_trio_vcfs_family } UPDIO( ch_trio_vcfs_family, diff --git a/subworkflows/local/vcf_validate_small_variants/main.nf b/subworkflows/local/vcf_validate_small_variants/main.nf index a74e5602..b0d934e9 100644 --- a/subworkflows/local/vcf_validate_small_variants/main.nf +++ b/subworkflows/local/vcf_validate_small_variants/main.nf @@ -6,15 +6,12 @@ workflow VCF_VALIDATE_SMALL_VARIANTS { take: ch_vcf // [mandatory] channel: [ meta, vcf, tbi, truth_vcf, truth_tbi ] ch_beds // [mandatory] channel: [ meta, truth_bed, region_bed ] - ch_fasta // [happy only] channel: [ meta, fasta ] - ch_fasta_fai // [happy only] channel: [ meta, fasta_fai ] ch_vcfeval_sdf // [vcfeval only] channel: [ meta, sdf ] main: - ch_versions = Channel.empty() - - ch_input = ch_vcf.join(ch_beds, failOnDuplicate: true, failOnMismatch: true) + def ch_versions = Channel.empty() + def ch_input = ch_vcf.join(ch_beds, failOnDuplicate: true, failOnMismatch: true) RTGTOOLS_VCFEVAL( ch_input, @@ -22,7 +19,7 @@ workflow VCF_VALIDATE_SMALL_VARIANTS { ) ch_versions = ch_versions.mix(RTGTOOLS_VCFEVAL.out.versions.first()) - ch_rocplot_input = RTGTOOLS_VCFEVAL.out.snp_roc + def ch_rocplot_input = RTGTOOLS_VCFEVAL.out.snp_roc .map { meta, tsv -> [ meta + [roc_type:'snp'], tsv ] } @@ -35,19 +32,19 @@ workflow VCF_VALIDATE_SMALL_VARIANTS { } ) - vcfeval_true_positive_vcf = RTGTOOLS_VCFEVAL.out.tp_vcf - vcfeval_true_positive_vcf_tbi = RTGTOOLS_VCFEVAL.out.tp_tbi - vcfeval_false_negative_vcf = RTGTOOLS_VCFEVAL.out.fn_vcf - vcfeval_false_negative_vcf_tbi = RTGTOOLS_VCFEVAL.out.fn_tbi - vcfeval_false_positive_vcf = RTGTOOLS_VCFEVAL.out.fp_vcf - vcfeval_false_positive_vcf_tbi = RTGTOOLS_VCFEVAL.out.fp_tbi - vcfeval_true_positive_baseline_vcf = RTGTOOLS_VCFEVAL.out.baseline_vcf - vcfeval_true_positive_baseline_vcf_tbi = RTGTOOLS_VCFEVAL.out.baseline_tbi - vcfeval_summary = RTGTOOLS_VCFEVAL.out.summary - vcfeval_phasing = RTGTOOLS_VCFEVAL.out.phasing - vcfeval_snp_roc = RTGTOOLS_VCFEVAL.out.snp_roc - vcfeval_non_snp_roc = RTGTOOLS_VCFEVAL.out.non_snp_roc - vcfeval_weighted_roc = RTGTOOLS_VCFEVAL.out.weighted_roc + def ch_vcfeval_true_positive_vcf = RTGTOOLS_VCFEVAL.out.tp_vcf + def ch_vcfeval_true_positive_vcf_tbi = RTGTOOLS_VCFEVAL.out.tp_tbi + def ch_vcfeval_false_negative_vcf = RTGTOOLS_VCFEVAL.out.fn_vcf + def ch_vcfeval_false_negative_vcf_tbi = RTGTOOLS_VCFEVAL.out.fn_tbi + def ch_vcfeval_false_positive_vcf = RTGTOOLS_VCFEVAL.out.fp_vcf + def ch_vcfeval_false_positive_vcf_tbi = RTGTOOLS_VCFEVAL.out.fp_tbi + def ch_vcfeval_true_positive_baseline_vcf = RTGTOOLS_VCFEVAL.out.baseline_vcf + def ch_vcfeval_true_positive_baseline_vcf_tbi = RTGTOOLS_VCFEVAL.out.baseline_tbi + def ch_vcfeval_summary = RTGTOOLS_VCFEVAL.out.summary + def ch_vcfeval_phasing = RTGTOOLS_VCFEVAL.out.phasing + def ch_vcfeval_snp_roc = RTGTOOLS_VCFEVAL.out.snp_roc + def ch_vcfeval_non_snp_roc = RTGTOOLS_VCFEVAL.out.non_snp_roc + def ch_vcfeval_weighted_roc = RTGTOOLS_VCFEVAL.out.weighted_roc RTGTOOLS_ROCPLOT( ch_rocplot_input @@ -55,55 +52,53 @@ workflow VCF_VALIDATE_SMALL_VARIANTS { ch_versions = ch_versions.mix(RTGTOOLS_ROCPLOT.out.versions.first()) - rocplot_out_png = RTGTOOLS_ROCPLOT.out.png - .branch { meta, png -> - roc_type = meta.roc_type - def new_meta = meta - meta.subMap("roc_type") + def rocplot_out_png = RTGTOOLS_ROCPLOT.out.png + .branch { meta, _png -> + def roc_type = meta.roc_type snp: roc_type == "snp" non_snp: roc_type == "non_snp" weighted: roc_type == "weighted" } - rocplot_out_svg = RTGTOOLS_ROCPLOT.out.svg - .branch { meta, svg -> - roc_type = meta.roc_type - def new_meta = meta - meta.subMap("roc_type") + def rocplot_out_svg = RTGTOOLS_ROCPLOT.out.svg + .branch { meta, _svg -> + def roc_type = meta.roc_type snp: roc_type == "snp" non_snp: roc_type == "non_snp" weighted: roc_type == "weighted" } - rtgtools_snp_png_rocplot = rocplot_out_png.snp - rtgtools_non_snp_png_rocplot = rocplot_out_png.non_snp - rtgtools_weighted_png_rocplot = rocplot_out_png.weighted - - rtgtools_snp_svg_rocplot = rocplot_out_svg.snp - rtgtools_non_snp_svg_rocplot = rocplot_out_svg.non_snp - rtgtools_weighted_svg_rocplot = rocplot_out_svg.weighted + def ch_rtgtools_snp_png_rocplot = rocplot_out_png.snp + def ch_rtgtools_non_snp_png_rocplot = rocplot_out_png.non_snp + def ch_rtgtools_weighted_png_rocplot = rocplot_out_png.weighted + + def ch_rtgtools_snp_svg_rocplot = rocplot_out_svg.snp + def ch_rtgtools_non_snp_svg_rocplot = rocplot_out_svg.non_snp + def ch_rtgtools_weighted_svg_rocplot = rocplot_out_svg.weighted emit: - vcfeval_true_positive_vcf // channel: [ meta, vcf ] - vcfeval_true_positive_vcf_tbi // channel: [ meta, tbi ] - vcfeval_false_negative_vcf // channel: [ meta, vcf ] - vcfeval_false_negative_vcf_tbi // channel: [ meta, tbi ] - vcfeval_false_positive_vcf // channel: [ meta, vcf ] - vcfeval_false_positive_vcf_tbi // channel: [ meta, tbi ] - vcfeval_true_positive_baseline_vcf // channel: [ meta, vcf ] - vcfeval_true_positive_baseline_vcf_tbi // channel: [ meta, tbi ] - vcfeval_summary // channel: [ meta, summary ] - vcfeval_phasing // channel: [ meta, phasing ] - vcfeval_snp_roc // channel: [ meta, tsv ] - vcfeval_non_snp_roc // channel: [ meta, tsv ] - vcfeval_weighted_roc // channel: [ meta, tsv ] - - rtgtools_snp_png_rocplot // channel: [ meta, png ] - rtgtools_non_snp_png_rocplot // channel: [ meta, png ] - rtgtools_weighted_png_rocplot // channel: [ meta, png ] - rtgtools_snp_svg_rocplot // channel: [ meta, svg ] - rtgtools_non_snp_svg_rocplot // channel: [ meta, svg ] - rtgtools_weighted_svg_rocplot // channel: [ meta, svg ] + vcfeval_true_positive_vcf = ch_vcfeval_true_positive_vcf // channel: [ meta, vcf ] + vcfeval_true_positive_vcf_tbi = ch_vcfeval_true_positive_vcf_tbi // channel: [ meta, tbi ] + vcfeval_false_negative_vcf = ch_vcfeval_false_negative_vcf // channel: [ meta, vcf ] + vcfeval_false_negative_vcf_tbi = ch_vcfeval_false_negative_vcf_tbi // channel: [ meta, tbi ] + vcfeval_false_positive_vcf = ch_vcfeval_false_positive_vcf // channel: [ meta, vcf ] + vcfeval_false_positive_vcf_tbi = ch_vcfeval_false_positive_vcf_tbi // channel: [ meta, tbi ] + vcfeval_true_positive_baseline_vcf = ch_vcfeval_true_positive_baseline_vcf // channel: [ meta, vcf ] + vcfeval_true_positive_baseline_vcf_tbi = ch_vcfeval_true_positive_baseline_vcf_tbi // channel: [ meta, tbi ] + vcfeval_summary = ch_vcfeval_summary // channel: [ meta, summary ] + vcfeval_phasing = ch_vcfeval_phasing // channel: [ meta, phasing ] + vcfeval_snp_roc = ch_vcfeval_snp_roc // channel: [ meta, tsv ] + vcfeval_non_snp_roc = ch_vcfeval_non_snp_roc // channel: [ meta, tsv ] + vcfeval_weighted_roc = ch_vcfeval_weighted_roc // channel: [ meta, tsv ] + + rtgtools_snp_png_rocplot = ch_rtgtools_snp_png_rocplot // channel: [ meta, png ] + rtgtools_non_snp_png_rocplot = ch_rtgtools_non_snp_png_rocplot // channel: [ meta, png ] + rtgtools_weighted_png_rocplot = ch_rtgtools_weighted_png_rocplot // channel: [ meta, png ] + rtgtools_snp_svg_rocplot = ch_rtgtools_snp_svg_rocplot // channel: [ meta, svg ] + rtgtools_non_snp_svg_rocplot = ch_rtgtools_non_snp_svg_rocplot // channel: [ meta, svg ] + rtgtools_weighted_svg_rocplot = ch_rtgtools_weighted_svg_rocplot // channel: [ meta, svg ] versions = ch_versions // channel: [ versions.yml ] } diff --git a/workflows/germline.nf b/workflows/germline.nf index c85a03c9..fba232ab 100644 --- a/workflows/germline.nf +++ b/workflows/germline.nf @@ -546,7 +546,6 @@ workflow GERMLINE { VCF_ANNOTATION( ch_ped_vcfs, ch_fasta_ready, - ch_fai_ready, ch_vep_cache_ready, ch_vep_extra_files, ch_vcfanno_config, @@ -675,8 +674,6 @@ workflow GERMLINE { VCF_VALIDATE_SMALL_VARIANTS( ch_validation_input.vcfs, ch_validation_regions, - ch_fasta_ready, - ch_fai_ready, ch_sdf_ready.collect() ) ch_versions = ch_versions.mix(VCF_VALIDATE_SMALL_VARIANTS.out.versions) From ad0b7c6f0ad287669b70dd7f63eb19a8f11dda0e Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Mon, 14 Oct 2024 16:51:04 +0200 Subject: [PATCH 040/167] update germline.nf --- .../local/cram_call_vardictjava/main.nf | 4 +- workflows/germline.nf | 233 ++++++++---------- 2 files changed, 104 insertions(+), 133 deletions(-) diff --git a/subworkflows/local/cram_call_vardictjava/main.nf b/subworkflows/local/cram_call_vardictjava/main.nf index 67012d9e..91ab4fef 100644 --- a/subworkflows/local/cram_call_vardictjava/main.nf +++ b/subworkflows/local/cram_call_vardictjava/main.nf @@ -70,12 +70,12 @@ workflow CRAM_CALL_VARDICTJAVA { if(!(ch_dbsnp instanceof List)) { ch_dbsnp.map { _meta, dbsnp -> [ get_vcfanno_config(dbsnp) ] } .collect() - .set { ch_vcfanno_toml } + .set { ch_vcfanno_toml } // Set needs to be used here due to some Nextflow bug ch_dbsnp.map { _meta, dbsnp -> dbsnp } .combine(ch_dbsnp_tbi.map { _meta, tbi -> tbi }) .collect() - .set { ch_vcfanno_resources } + .set { ch_vcfanno_resources } // Set needs to be used here due to some Nextflow bug VCFANNO( VCF_CONCAT_BCFTOOLS.out.vcfs.map { meta, vcf -> [ meta, vcf, [], [] ] }, diff --git a/workflows/germline.nf b/workflows/germline.nf index fba232ab..f7c91c18 100644 --- a/workflows/germline.nf +++ b/workflows/germline.nf @@ -127,43 +127,43 @@ workflow GERMLINE { main: - ch_versions = Channel.empty() - ch_reports = Channel.empty() - ch_multiqc_files = Channel.empty() + def ch_versions = Channel.empty() + def ch_reports = Channel.empty() + def ch_multiqc_files = Channel.empty() // // Importing and convert the input files passed through the parameters to channels // - ch_fasta_ready = Channel.fromPath(fasta).map{ fasta_file -> [[id:"reference"], fasta_file] }.collect() - ch_fai = fai ? Channel.fromPath(fai).map{ fai_file -> [[id:"reference"], fai_file] }.collect() : null - ch_dict = dict ? Channel.fromPath(dict).map{ dict_file -> [[id:"reference"], dict_file] }.collect() : null - ch_strtablefile = strtablefile ? Channel.fromPath(strtablefile).map{ str_file -> [[id:"reference"], str_file] }.collect() : null - ch_sdf = sdf ? Channel.fromPath(sdf).map { sdf_file -> [[id:'reference'], sdf_file] }.collect() : null + def ch_fasta_ready = Channel.fromPath(fasta).map{ fasta_file -> [[id:"reference"], fasta_file] }.collect() + def ch_fai = fai ? Channel.fromPath(fai).map{ fai_file -> [[id:"reference"], fai_file] }.collect() : null + def ch_dict = dict ? Channel.fromPath(dict).map{ dict_file -> [[id:"reference"], dict_file] }.collect() : null + def ch_strtablefile = strtablefile ? Channel.fromPath(strtablefile).map{ str_file -> [[id:"reference"], str_file] }.collect() : null + def ch_sdf = sdf ? Channel.fromPath(sdf).map { sdf_file -> [[id:'reference'], sdf_file] }.collect() : null - ch_default_roi = roi ? Channel.fromPath(roi).collect() : [] + def ch_default_roi = roi ? Channel.fromPath(roi).collect() : [] - ch_dbsnp_ready = dbsnp ? Channel.fromPath(dbsnp).collect { dbsnp_file -> [[id:"dbsnp"], dbsnp_file] } : [[],[]] - ch_dbsnp_tbi = dbsnp_tbi ? Channel.fromPath(dbsnp_tbi).collect { dbsnp_file -> [[id:"dbsnp"], dbsnp_file] } : [[],[]] + def ch_dbsnp_ready = dbsnp ? Channel.fromPath(dbsnp).collect { dbsnp_file -> [[id:"dbsnp"], dbsnp_file] } : [[],[]] + def ch_dbsnp_tbi = dbsnp_tbi ? Channel.fromPath(dbsnp_tbi).collect { dbsnp_file -> [[id:"dbsnp"], dbsnp_file] } : [[],[]] - ch_somalier_sites = somalier_sites ? Channel.fromPath(somalier_sites).collect { sites_file -> [[id:"somalier_sites"], sites_file] } : [[],[]] + def ch_somalier_sites = somalier_sites ? Channel.fromPath(somalier_sites).collect { sites_file -> [[id:"somalier_sites"], sites_file] } : [[],[]] - ch_vep_cache = vep_cache ? Channel.fromPath(vep_cache).collect() : [] + def ch_vep_cache = vep_cache ? Channel.fromPath(vep_cache).collect() : [] - ch_vcfanno_config = vcfanno_config ? Channel.fromPath(vcfanno_config).collect() : [] - ch_vcfanno_lua = vcfanno_lua ? Channel.fromPath(vcfanno_lua).collect() : [] - ch_vcfanno_resources = vcfanno_resources ? Channel.of(vcfanno_resources.split(";")).collect{ res -> file(res, checkIfExists:true) } : [] + def ch_vcfanno_config = vcfanno_config ? Channel.fromPath(vcfanno_config).collect() : [] + def ch_vcfanno_lua = vcfanno_lua ? Channel.fromPath(vcfanno_lua).collect() : [] + def ch_vcfanno_resources = vcfanno_resources ? Channel.of(vcfanno_resources.split(";")).collect{ res -> file(res, checkIfExists:true) } : [] - ch_updio_common_cnvs = updio_common_cnvs ? Channel.fromPath(updio_common_cnvs).map{ common_cnvs -> [[id:'updio_cnv'], common_cnvs] } : [[],[]] + def ch_updio_common_cnvs = updio_common_cnvs ? Channel.fromPath(updio_common_cnvs).map{ common_cnvs -> [[id:'updio_cnv'], common_cnvs] } : [[],[]] - ch_automap_repeats = automap_repeats ? Channel.fromPath(automap_repeats).map{ repeats -> [[id:"repeats"], repeats] }.collect() : [] - ch_automap_panel = automap_panel ? Channel.fromPath(automap_panel).map{ panel -> [[id:"automap_panel"], panel] }.collect() : [[],[]] + def ch_automap_repeats = automap_repeats ? Channel.fromPath(automap_repeats).map{ repeats -> [[id:"repeats"], repeats] }.collect() : [] + def ch_automap_panel = automap_panel ? Channel.fromPath(automap_panel).map{ panel -> [[id:"automap_panel"], panel] }.collect() : [[],[]] // // Check for the presence of EnsemblVEP plugins that use extra files // - ch_vep_extra_files = [] + def ch_vep_extra_files = [] if(annotate){ // Check if all dbnsfp files are given @@ -219,21 +219,20 @@ workflow GERMLINE { // // DBSNP index + def ch_dbsnp_tbi_ready = Channel.empty() if (ch_dbsnp_ready != [[],[]] && ch_dbsnp_tbi == [[],[]]) { TABIX_DBSNP( ch_dbsnp_ready ) ch_versions = ch_versions.mix(TABIX_DBSNP.out.versions) - TABIX_DBSNP.out.tbi - .collect() - .set { ch_dbsnp_tbi_ready } + ch_dbsnp_tbi_ready = TABIX_DBSNP.out.tbi.collect() } else { ch_dbsnp_tbi_ready = ch_dbsnp_tbi } // Reference fasta index - ch_fai_ready = Channel.empty() + def ch_fai_ready = Channel.empty() if (!ch_fai) { FAIDX( ch_fasta_ready, @@ -241,31 +240,28 @@ workflow GERMLINE { ) ch_versions = ch_versions.mix(FAIDX.out.versions) - FAIDX.out.fai + ch_fai_ready = FAIDX.out.fai .collect() - .dump(tag:'fasta_fai', pretty:true) - .set { ch_fai_ready } } else { - ch_fai.set { ch_fai_ready } + ch_fai_ready = ch_fai } // Reference sequence dictionary - ch_dict_ready = Channel.empty() + def ch_dict_ready = Channel.empty() if (!ch_dict) { CREATESEQUENCEDICTIONARY( ch_fasta_ready ) ch_versions = ch_versions.mix(CREATESEQUENCEDICTIONARY.out.versions) - CREATESEQUENCEDICTIONARY.out.dict + ch_dict_ready = CREATESEQUENCEDICTIONARY.out.dict .collect() - .dump(tag:'dict', pretty:true) - .set { ch_dict_ready } } else { - ch_dict.set { ch_dict_ready } + ch_dict_ready = ch_dict } // Reference STR table file + def ch_strtablefile_ready = Channel.empty() if (dragstr && !ch_strtablefile) { COMPOSESTRTABLEFILE( ch_fasta_ready, @@ -273,28 +269,21 @@ workflow GERMLINE { ch_dict_ready ) ch_versions = ch_versions.mix(COMPOSESTRTABLEFILE.out.versions) - - COMPOSESTRTABLEFILE.out.str_table - .collect() - .dump(tag:'strtablefile', pretty:true) - .set { ch_strtablefile_ready } + ch_strtablefile_ready = COMPOSESTRTABLEFILE.out.str_table.collect() } else if (dragstr) { - ch_strtablefile.set { ch_strtablefile_ready } + ch_strtablefile_ready = ch_strtablefile } else { ch_strtablefile_ready = [] } // Reference validation SDF + def ch_sdf_ready = Channel.empty() if (validate && !ch_sdf) { RTGTOOLS_FORMAT( ch_fasta_ready.map { meta, fasta_file -> [meta, fasta_file, [], []] } ) ch_versions = ch_versions.mix(RTGTOOLS_FORMAT.out.versions) - - RTGTOOLS_FORMAT.out.sdf - .collect() - .dump(tag:'sdf', pretty:true) - .set { ch_sdf_ready } + ch_sdf_ready = RTGTOOLS_FORMAT.out.sdf.collect() } else if (validate && sdf.endsWith(".tar.gz")) { UNTAR( @@ -302,22 +291,22 @@ workflow GERMLINE { ) ch_versions = ch_versions.mix(UNTAR.out.versions) - UNTAR.out.untar - .dump(tag:'sdf', pretty:true) - .set { ch_sdf_ready } + ch_sdf_ready = UNTAR.out.untar.collect() } else if(validate) { - ch_sdf.set { ch_sdf_ready } + ch_sdf_ready = ch_sdf } else { ch_sdf_ready = [[],[]] } + // VEP annotation cache + def ch_vep_cache_ready = Channel.empty() if (!ch_vep_cache && annotate) { ENSEMBLVEP_DOWNLOAD( Channel.of([[id:"vep_cache"], genome == "hg38" ? "GRCh38" : genome, species, vep_cache_version]).collect() ) ch_versions = ch_versions.mix(ENSEMBLVEP_DOWNLOAD.out.versions) - ch_vep_cache_ready = ENSEMBLVEP_DOWNLOAD.out.cache.collect{ meta, cache -> cache } + ch_vep_cache_ready = ENSEMBLVEP_DOWNLOAD.out.cache.collect{ _meta, cache -> cache } } else { ch_vep_cache_ready = ch_vep_cache } @@ -326,7 +315,7 @@ workflow GERMLINE { // Split the input channel into the right channels // - ch_samplesheet + def ch_input = ch_samplesheet .multiMap { meta, cram, crai, gvcf, tbi, roi_file, truth_vcf, truth_tbi, truth_bed -> // Divide the input files into their corresponding channel def new_meta = meta + [ @@ -340,14 +329,13 @@ workflow GERMLINE { cram: [new_meta, cram, crai] // Mandatory channel containing the CRAM files and their optional indices roi: [new_meta, roi_file] // Optional channel containing the ROI BED files for WES samples } - .set { ch_input } // // Create the GVCF index if it's missing // - ch_input.gvcf - .filter { meta, gvcf, tbi -> + def ch_gvcf_branch = ch_input.gvcf + .filter { meta, _gvcf, _tbi -> // Filter out samples that have no GVCF meta.type == "gvcf" || meta.type == "gvcf_cram" } @@ -357,28 +345,26 @@ workflow GERMLINE { tbi: tbi return [ meta, gvcf, tbi ] } - .set { ch_gvcf_branch } TABIX_GVCF( ch_gvcf_branch.no_tbi ) ch_versions = ch_versions.mix(TABIX_GVCF.out.versions) - ch_gvcf_branch.no_tbi + def ch_gvcfs_ready = ch_gvcf_branch.no_tbi .join(TABIX_GVCF.out.tbi, failOnDuplicate:true, failOnMismatch:true) .mix(ch_gvcf_branch.tbi) - .set { ch_gvcfs_ready } // // Run sample preparation // CRAM_PREPARE_SAMTOOLS_BEDTOOLS( - ch_input.cram.filter { meta, cram, crai -> + ch_input.cram.filter { meta, _cram, _crai -> // Filter out files that already have a called GVCF when only GVCF callers are used meta.type == "cram" || (meta.type == "gvcf_cram" && callers - GlobalVariables.gvcfCallers) }, - ch_input.roi.filter { meta, roi_file -> + ch_input.roi.filter { meta, _roi_file -> // Filter out files that already have a called GVCF when only GVCF callers are used meta.type == "cram" || (meta.type == "gvcf_cram" && callers - GlobalVariables.gvcfCallers) }, @@ -400,15 +386,14 @@ workflow GERMLINE { ) ch_versions = ch_versions.mix(INPUT_SPLIT_BEDTOOLS.out.versions) - ch_calls = Channel.empty() - + def ch_calls = Channel.empty() if("haplotypecaller" in callers) { // // Call variants with GATK4 HaplotypeCaller // CRAM_CALL_GENOTYPE_GATK4( - INPUT_SPLIT_BEDTOOLS.out.split.filter { meta, cram, crai, bed -> + INPUT_SPLIT_BEDTOOLS.out.split.filter { meta, _cram, _crai, _bed -> // Filter out the entries that already have a GVCF meta.type == "cram" }, @@ -451,12 +436,11 @@ workflow GERMLINE { ch_calls = ch_calls.mix(CRAM_CALL_VARDICTJAVA.out.vcfs) } - ch_calls + def ch_called_variants = ch_calls .map { meta, vcf, tbi -> def new_meta = meta - meta.subMap(["type", "vardict_min_af"]) [ new_meta, vcf, tbi ] } - .set { ch_called_variants } BCFTOOLS_STATS( ch_called_variants, @@ -467,9 +451,9 @@ workflow GERMLINE { [[],[]] ) ch_versions = ch_versions.mix(BCFTOOLS_STATS.out.versions.first()) - ch_reports = ch_reports.mix(BCFTOOLS_STATS.out.stats.collect { meta, report -> report }) + ch_reports = ch_reports.mix(BCFTOOLS_STATS.out.stats.collect { _meta, report -> report }) - ch_normalized_variants = Channel.empty() + def ch_normalized_variants = Channel.empty() if(normalize) { BCFTOOLS_NORM( ch_called_variants, @@ -482,11 +466,10 @@ workflow GERMLINE { ) ch_versions = ch_versions.mix(TABIX_NORMALIZE.out.versions.first()) - BCFTOOLS_NORM.out.vcf + ch_normalized_variants = BCFTOOLS_NORM.out.vcf .join(TABIX_NORMALIZE.out.tbi, failOnDuplicate:true, failOnMismatch:true) - .set { ch_normalized_variants } } else { - ch_called_variants.set { ch_normalized_variants } + ch_normalized_variants = ch_called_variants } if(!only_merge && !only_call) { @@ -495,11 +478,10 @@ workflow GERMLINE { // Preprocess the PED channel // - ch_normalized_variants - .map { meta, vcf, tbi -> + def ch_somalier_input = ch_normalized_variants + .map { meta, _vcf, _tbi -> [ meta, pedFiles.containsKey(meta.family) ? pedFiles[meta.family] : [] ] } - .set { ch_somalier_input } // // Run relation tests with somalier @@ -518,7 +500,7 @@ workflow GERMLINE { // Add PED headers to the VCFs // - ch_ped_vcfs = Channel.empty() + def ch_ped_vcfs = Channel.empty() if(add_ped){ VCF_PED_RTGTOOLS( @@ -527,21 +509,19 @@ workflow GERMLINE { ) ch_versions = ch_versions.mix(VCF_PED_RTGTOOLS.out.versions) - VCF_PED_RTGTOOLS.out.ped_vcfs - .set { ch_ped_vcfs } + ch_ped_vcfs = VCF_PED_RTGTOOLS.out.ped_vcfs } else { - ch_normalized_variants - .map { meta, vcf, tbi=[] -> + ch_ped_vcfs = ch_normalized_variants + .map { meta, vcf, _tbi=[] -> [ meta, vcf ] } - .set { ch_ped_vcfs } } // // Annotation of the variants and creation of Gemini-compatible database files // - ch_annotation_output = Channel.empty() + def ch_annotation_output = Channel.empty() if (annotate) { VCF_ANNOTATION( ch_ped_vcfs, @@ -560,13 +540,11 @@ workflow GERMLINE { ch_versions = ch_versions.mix(VCF_ANNOTATION.out.versions) ch_reports = ch_reports.mix(VCF_ANNOTATION.out.reports) - VCF_ANNOTATION.out.annotated_vcfs.set { ch_annotation_output } + ch_annotation_output = VCF_ANNOTATION.out.annotated_vcfs } else { - ch_ped_vcfs.set { ch_annotation_output } + ch_annotation_output = ch_ped_vcfs } - ch_annotation_output.dump(tag:'annotation_output', pretty:true) - // // Tabix the resulting VCF // @@ -576,9 +554,8 @@ workflow GERMLINE { ) ch_versions = ch_versions.mix(TABIX_FINAL.out.versions.first()) - ch_annotation_output + def ch_final_vcfs = ch_annotation_output .join(TABIX_FINAL.out.tbi, failOnDuplicate:true, failOnMismatch:true) - .set { ch_final_vcfs } // // Validate the found variants @@ -586,7 +563,7 @@ workflow GERMLINE { if (validate){ - ch_input.truth_variants + def ch_truths_input = ch_input.truth_variants .map { meta, vcf, tbi, bed -> def new_meta = meta - meta.subMap("duplicate_count") [ groupKey(new_meta, meta.duplicate_count), vcf, tbi, bed ] @@ -599,16 +576,15 @@ workflow GERMLINE { def one_bed = bed.find { bed_file -> bed_file != [] } ?: [] [ meta, one_vcf, one_tbi, one_bed ] } - .branch { meta, vcf, tbi, bed -> + .branch { _meta, vcf, tbi, _bed -> no_vcf: !vcf tbi: tbi no_tbi: !tbi } - .set { ch_truths_input } // Create truth VCF indices if none were given TABIX_TRUTH( - ch_truths_input.no_tbi.map { meta, vcf, tbi, bed -> + ch_truths_input.no_tbi.map { meta, vcf, _tbi, _bed -> [ meta, vcf ] } ) @@ -616,7 +592,7 @@ workflow GERMLINE { ch_truths_input.no_tbi .join(TABIX_TRUTH.out.tbi, failOnDuplicate:true, failOnMismatch:true) - .map { meta, vcf, empty, bed, tbi -> + .map { meta, vcf, _empty, bed, tbi -> [ meta, vcf, tbi, bed ] } .mix(ch_truths_input.tbi) @@ -626,9 +602,9 @@ workflow GERMLINE { def new_meta = meta + [caller: caller] [ new_meta, vcf, tbi, bed ] } - .set { ch_truths } + .set { ch_truths } // Set needs to be used here due to some Nextflow bug - ch_final_vcfs + def ch_validation_input = ch_final_vcfs .map { meta, vcf, tbi -> def new_meta = meta - meta.subMap("family_samples") [ new_meta, vcf, tbi, meta.family_samples.tokenize(",") ] @@ -644,7 +620,7 @@ workflow GERMLINE { [ new_meta, vcf, tbi ] } .join(ch_truths, failOnMismatch:true, failOnDuplicate:true) - .filter { meta, vcf, tbi, truth_vcf, truth_tbi, truth_bed -> + .filter { _meta, _vcf, _tbi, truth_vcf, _truth_tbi, _truth_bed -> // Filter out all samples that have no truth VCF truth_vcf != [] } @@ -652,7 +628,6 @@ workflow GERMLINE { vcfs: [meta, vcf, tbi, truth_vcf, truth_tbi] bed: [meta, truth_bed] } - .set { ch_validation_input } CRAM_PREPARE_SAMTOOLS_BEDTOOLS.out.ready_beds .combine(callers) @@ -669,7 +644,7 @@ workflow GERMLINE { .map { meta, regions, truth -> [ meta, truth, regions ] } - .set { ch_validation_regions } + .set { ch_validation_regions } // Set needs to be used here due to some Nextflow bug VCF_VALIDATE_SMALL_VARIANTS( ch_validation_input.vcfs, @@ -684,20 +659,17 @@ workflow GERMLINE { // if(gemini){ - CustomChannelOperators.joinOnKeys( - ch_final_vcfs.map { meta, vcf, tbi -> [ meta, vcf ]}, - VCF_EXTRACT_RELATE_SOMALIER.out.peds, - ['id', 'family', 'family_samples'] - ) - .dump(tag:'vcf2db_input', pretty:true) - .set { ch_vcf2db_input } + def ch_vcf2db_input = CustomChannelOperators.joinOnKeys( + ch_final_vcfs.map { meta, vcf, _tbi -> [ meta, vcf ]}, + VCF_EXTRACT_RELATE_SOMALIER.out.peds, + ['id', 'family', 'family_samples'] + ) VCF2DB( ch_vcf2db_input ) ch_versions = ch_versions.mix(VCF2DB.out.versions.first()) - VCF2DB.out.db.dump(tag:'vcf2db_output', pretty:true) } // @@ -731,45 +703,43 @@ workflow GERMLINE { // // Collate and save software versions // - softwareVersionsToYAML(ch_versions) + def ch_collated_versions = softwareVersionsToYAML(ch_versions) .collectFile( storeDir: "${outdir}/pipeline_info", name: '' + 'pipeline_software_' + 'mqc_' + 'versions.yml', sort: true, newLine: true ) - .set { ch_collated_versions } - // // Perform multiQC on all QC data // - ch_multiqc_config = Channel.fromPath( - "$projectDir/assets/multiqc_config.yml", checkIfExists: true) - ch_multiqc_custom_config = multiqc_config ? - Channel.fromPath(multiqc_config, checkIfExists: true) : - Channel.empty() - ch_multiqc_logo = multiqc_logo ? - Channel.fromPath(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 = multiqc_methods_description ? - file(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_collated_versions, - ch_methods_description.collectFile( - name: 'methods_description_mqc.yaml', - sort: false - ), - ch_reports - ) + def ch_multiqc_config = Channel.fromPath( + "$projectDir/assets/multiqc_config.yml", checkIfExists: true) + def ch_multiqc_custom_config = multiqc_config ? + Channel.fromPath(multiqc_config, checkIfExists: true) : + Channel.empty() + def ch_multiqc_logo = multiqc_logo ? + Channel.fromPath(multiqc_logo, checkIfExists: true) : + Channel.empty() + + def summary_params = paramsSummaryMap(workflow, parameters_schema: "nextflow_schema.json") + def ch_workflow_summary = Channel.value(paramsSummaryMultiqc(summary_params)) + def ch_multiqc_custom_methods_description = multiqc_methods_description ? + file(multiqc_methods_description, checkIfExists: true) : + file("$projectDir/assets/methods_description_template.yml", checkIfExists: true) + def 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_collated_versions, + ch_methods_description.collectFile( + name: 'methods_description_mqc.yaml', + sort: false + ), + ch_reports + ) MULTIQC ( @@ -781,7 +751,8 @@ workflow GERMLINE { [] ) - emit:multiqc_report = MULTIQC.out.report.toList() // channel: /path/to/multiqc_report.html + emit: + multiqc_report = MULTIQC.out.report.toList() // channel: /path/to/multiqc_report.html versions = ch_versions // channel: [ path(versions.yml) ] } From 852e2f1ba448bc9a48c21f956d1e6e44229ee586 Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Mon, 14 Oct 2024 17:00:33 +0200 Subject: [PATCH 041/167] add a comment to main.nf --- main.nf | 1 + 1 file changed, 1 insertion(+) diff --git a/main.nf b/main.nf index 84ac2107..6b4309ed 100644 --- a/main.nf +++ b/main.nf @@ -15,6 +15,7 @@ include { getGenomeAttribute } from './subworkflows/local/utils_cmgg_germline_pipeline' +// These give warnings in the vscode plugin 1.0.0-rc1, with no way of actually fixing it. take another look at this later! params.fasta = getGenomeAttribute('fasta', params.genomes, params.genome) params.fai = getGenomeAttribute('fai', params.genomes, params.genome) params.dict = getGenomeAttribute('dict', params.genomes, params.genome) From 3309f0bd85b2e8fe7168c956e0e541bdb8951845 Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Mon, 14 Oct 2024 17:04:55 +0200 Subject: [PATCH 042/167] harshil align config --- nextflow.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nextflow.config b/nextflow.config index 0ce19e52..fe527315 100644 --- a/nextflow.config +++ b/nextflow.config @@ -136,7 +136,7 @@ profiles { podman.enabled = false shifter.enabled = false charliecloud.enabled = false - channels = ['conda-forge', 'bioconda'] + channels = ['conda-forge', 'bioconda'] apptainer.enabled = false } mamba { From fcd6de753f341afa3b82fb7637fd4c626784c04f Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Mon, 14 Oct 2024 17:11:07 +0200 Subject: [PATCH 043/167] listen to matthias (he's enjoying this probably ;)) --- main.nf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/main.nf b/main.nf index 6b4309ed..2e82e0c1 100644 --- a/main.nf +++ b/main.nf @@ -15,7 +15,7 @@ include { getGenomeAttribute } from './subworkflows/local/utils_cmgg_germline_pipeline' -// These give warnings in the vscode plugin 1.0.0-rc1, with no way of actually fixing it. take another look at this later! +// Take another look at this later! params.fasta = getGenomeAttribute('fasta', params.genomes, params.genome) params.fai = getGenomeAttribute('fai', params.genomes, params.genome) params.dict = getGenomeAttribute('dict', params.genomes, params.genome) From ce3589f31e45f1560e0b52458f9c6801db299e22 Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Mon, 14 Oct 2024 17:13:11 +0200 Subject: [PATCH 044/167] nf-core lint --- .nf-core.yml | 2 +- subworkflows/local/vcf_validate_small_variants/main.nf | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.nf-core.yml b/.nf-core.yml index ad9a71ec..7c9f5121 100644 --- a/.nf-core.yml +++ b/.nf-core.yml @@ -27,7 +27,7 @@ lint: - manifest.homePage - validation.help.afterText - validation.summary.afterText -nf_core_version: 3.0.1 +nf_core_version: 3.0.2 repository_type: pipeline template: author: nvnieuwk diff --git a/subworkflows/local/vcf_validate_small_variants/main.nf b/subworkflows/local/vcf_validate_small_variants/main.nf index b0d934e9..829b90d8 100644 --- a/subworkflows/local/vcf_validate_small_variants/main.nf +++ b/subworkflows/local/vcf_validate_small_variants/main.nf @@ -73,7 +73,7 @@ workflow VCF_VALIDATE_SMALL_VARIANTS { def ch_rtgtools_snp_png_rocplot = rocplot_out_png.snp def ch_rtgtools_non_snp_png_rocplot = rocplot_out_png.non_snp def ch_rtgtools_weighted_png_rocplot = rocplot_out_png.weighted - + def ch_rtgtools_snp_svg_rocplot = rocplot_out_svg.snp def ch_rtgtools_non_snp_svg_rocplot = rocplot_out_svg.non_snp def ch_rtgtools_weighted_svg_rocplot = rocplot_out_svg.weighted From c7d1fb2ab035c3ffc490f3e1325f093abf194594 Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Mon, 14 Oct 2024 17:15:30 +0200 Subject: [PATCH 045/167] fix validation subwf test --- .../local/vcf_validate_small_variants/main.nf.test | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/tests/subworkflows/local/vcf_validate_small_variants/main.nf.test b/tests/subworkflows/local/vcf_validate_small_variants/main.nf.test index 6714fe38..6d96871d 100644 --- a/tests/subworkflows/local/vcf_validate_small_variants/main.nf.test +++ b/tests/subworkflows/local/vcf_validate_small_variants/main.nf.test @@ -42,9 +42,7 @@ nextflow_workflow { file(params.bed, checkIfExists:true), [] ]) - input[2] = [[],[]] - input[3] = [[],[]] - input[4] = UNTAR.out.untar + input[2] = UNTAR.out.untar """ } } From 790af143e289bcc9e1134060a912239d0b8c6204 Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Mon, 14 Oct 2024 17:16:50 +0200 Subject: [PATCH 046/167] fix annotation subwf tests --- .../local/vcf_annotation/main.nf.test | 44 ++++++++----------- 1 file changed, 18 insertions(+), 26 deletions(-) diff --git a/tests/subworkflows/local/vcf_annotation/main.nf.test b/tests/subworkflows/local/vcf_annotation/main.nf.test index 99cedb8e..bd3fc2c0 100644 --- a/tests/subworkflows/local/vcf_annotation/main.nf.test +++ b/tests/subworkflows/local/vcf_annotation/main.nf.test @@ -26,20 +26,16 @@ nextflow_workflow { [id:"fasta"], file(params.fasta, checkIfExists:true) ]) - input[2] = Channel.value([ - [id:"fai"], - file(params.fai, checkIfExists:true) - ]) - input[3] = Channel.value(file("vep_cache")) - input[4] = Channel.value([file("file1.txt"), file("file2.txt")]) + input[2] = Channel.value(file("vep_cache")) + input[3] = Channel.value([file("file1.txt"), file("file2.txt")]) + input[4] = [] input[5] = [] input[6] = [] - input[7] = [] - input[8] = "GRCh38" - input[9] = "homo_sapiens" - input[10] = 105 - input[11] = 50000 - input[12] = false + input[7] = "GRCh38" + input[8] = "homo_sapiens" + input[9] = 105 + input[10] = 50000 + input[11] = false """ } } @@ -73,20 +69,16 @@ nextflow_workflow { [id:"fasta"], file(params.fasta, checkIfExists:true) ]) - input[2] = Channel.value([ - [id:"fai"], - file(params.fai, checkIfExists:true) - ]) - input[3] = Channel.value(file("vep_cache")) - input[4] = Channel.value([file("file1.txt"), file("file2.txt")]) - input[5] = Channel.value(file("vcfanno.toml")) - input[6] = [] - input[7] = Channel.value([file("file1.txt"), file("file2.txt")]) - input[8] = "GRCh38" - input[9] = "homo_sapiens" - input[10] = 105 - input[11] = 50000 - input[12] = true + input[2] = Channel.value(file("vep_cache")) + input[3] = Channel.value([file("file1.txt"), file("file2.txt")]) + input[4] = Channel.value(file("vcfanno.toml")) + input[5] = [] + input[6] = Channel.value([file("file1.txt"), file("file2.txt")]) + input[7] = "GRCh38" + input[8] = "homo_sapiens" + input[9] = 105 + input[10] = 50000 + input[11] = true """ } } From b738729c9bc219c86e7dbf7c1279e6334a596ba5 Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Fri, 18 Oct 2024 11:14:08 +0200 Subject: [PATCH 047/167] template 3.0.1 --- .nf-core.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.nf-core.yml b/.nf-core.yml index 7c9f5121..ad9a71ec 100644 --- a/.nf-core.yml +++ b/.nf-core.yml @@ -27,7 +27,7 @@ lint: - manifest.homePage - validation.help.afterText - validation.summary.afterText -nf_core_version: 3.0.2 +nf_core_version: 3.0.1 repository_type: pipeline template: author: nvnieuwk From 72f31e2ff4e593157ae181785693d496da1b1d1c Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Fri, 18 Oct 2024 11:16:18 +0200 Subject: [PATCH 048/167] remove template version comment CI --- .../workflows/template_version_comment.yml | 43 ------------------- .nf-core.yml | 1 + 2 files changed, 1 insertion(+), 43 deletions(-) delete mode 100644 .github/workflows/template_version_comment.yml diff --git a/.github/workflows/template_version_comment.yml b/.github/workflows/template_version_comment.yml deleted file mode 100644 index d01fb43f..00000000 --- a/.github/workflows/template_version_comment.yml +++ /dev/null @@ -1,43 +0,0 @@ -name: nf-core template version comment -# This workflow is triggered on PRs to check if the pipeline template version matches the latest nf-core version. -# It posts a comment to the PR, even if it comes from a fork. - -on: pull_request_target - -jobs: - template_version: - runs-on: ubuntu-latest - steps: - - name: Check out pipeline code - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4 - - - name: Read template version from .nf-core.yml - uses: pietrobolcato/action-read-yaml@1.1.0 - id: read_yml - with: - config: ${{ github.workspace }}/.nf-core.yml - - - name: Install nf-core - run: | - python -m pip install --upgrade pip - pip install nf-core==${{ steps.read_yml.outputs['nf_core_version'] }} - - - name: Check nf-core outdated - id: nf_core_outdated - run: pip list --outdated | grep nf-core - - - name: Post nf-core template version comment - uses: mshick/add-pr-comment@b8f338c590a895d50bcbfa6c5859251edc8952fc # v2 - if: | - ${{ steps.nf_core_outdated.outputs.stdout }} =~ 'nf-core' - with: - repo-token: ${{ secrets.NF_CORE_BOT_AUTH_TOKEN }} - allow-repeats: false - message: | - ## :warning: Newer version of the nf-core template is available. - - Your pipeline is using an old version of the nf-core template: ${{ steps.read_yml.outputs['nf_core_version'] }}. - Please update your pipeline to the latest version. - - For more documentation on how to update your pipeline, please see the [nf-core documentation](https://github.com/nf-core/tools?tab=readme-ov-file#sync-a-pipeline-with-the-template) and [Synchronisation documentation](https://nf-co.re/docs/contributing/sync). - # diff --git a/.nf-core.yml b/.nf-core.yml index ad9a71ec..beb1203f 100644 --- a/.nf-core.yml +++ b/.nf-core.yml @@ -9,6 +9,7 @@ lint: - .github/ISSUE_TEMPLATE/config.yml - .github/workflows/awstest.yml - .github/workflows/awsfulltest.yml + - .github/workflows/template_version_comment.yml - docs/README.md files_unchanged: - .github/CONTRIBUTING.md From f6a89515f64f5977e546553f11de20091b81e5e4 Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Fri, 18 Oct 2024 12:00:39 +0200 Subject: [PATCH 049/167] fix some syntax in nf-core modules --- modules.json | 4 ++-- modules/nf-core/bcftools/annotate/main.nf | 10 +++++----- modules/nf-core/bedtools/split/main.nf | 6 +++--- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/modules.json b/modules.json index 3b79c49f..9d41b4cf 100644 --- a/modules.json +++ b/modules.json @@ -7,7 +7,7 @@ "nf-core": { "bcftools/annotate": { "branch": "master", - "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", + "git_sha": "cb08035150685b11d890d90c9534d4f16869eaec", "installed_by": ["modules"], "patch": "modules/nf-core/bcftools/annotate/bcftools-annotate.diff" }, @@ -63,7 +63,7 @@ }, "bedtools/split": { "branch": "master", - "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", + "git_sha": "cb08035150685b11d890d90c9534d4f16869eaec", "installed_by": ["modules"] }, "ensemblvep/download": { diff --git a/modules/nf-core/bcftools/annotate/main.nf b/modules/nf-core/bcftools/annotate/main.nf index 2cfe29a1..890aa8c5 100644 --- a/modules/nf-core/bcftools/annotate/main.nf +++ b/modules/nf-core/bcftools/annotate/main.nf @@ -58,12 +58,12 @@ process BCFTOOLS_ANNOTATE { 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 index_extension = 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") && index_extension.matches("csi|tbi") ? "touch ${prefix}.${extension}.${index_extension}" : "" """ ${create_cmd} ${prefix}.${extension} diff --git a/modules/nf-core/bedtools/split/main.nf b/modules/nf-core/bedtools/split/main.nf index b555024c..2b3af64f 100644 --- a/modules/nf-core/bedtools/split/main.nf +++ b/modules/nf-core/bedtools/split/main.nf @@ -38,9 +38,9 @@ process BEDTOOLS_SPLIT { stub: def prefix = task.ext.prefix ?: "${meta.id}" - create_beds = (1..count).collect { - number = "0".multiply(4 - it.toString().size()) + "${it}" - " touch ${prefix}.${number}.bed" + def create_beds = (1..count).collect { number -> + def numberString = "0".multiply(4 - number.toString().size()) + "${number}" + " touch ${prefix}.${numberString}.bed" }.join("\n") """ From 3df7400ee35ea65f1b5ac8330c64f114f93fa900 Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Mon, 21 Oct 2024 13:40:18 +0200 Subject: [PATCH 050/167] update annotation subwf --- modules.json | 2 +- .../vcf_annotate_ensemblvep_snpeff/main.nf | 56 +-- .../vcf_annotate_ensemblvep_snpeff/meta.yml | 24 +- .../tests/main.nf.test | 332 +++++++++++++++++ .../tests/main.nf.test.snap | 338 ++++++++++++++++++ .../tests/nextflow.config | 15 + 6 files changed, 741 insertions(+), 26 deletions(-) create mode 100644 subworkflows/nf-core/vcf_annotate_ensemblvep_snpeff/tests/main.nf.test create mode 100644 subworkflows/nf-core/vcf_annotate_ensemblvep_snpeff/tests/main.nf.test.snap create mode 100644 subworkflows/nf-core/vcf_annotate_ensemblvep_snpeff/tests/nextflow.config diff --git a/modules.json b/modules.json index 9d41b4cf..fd1f2450 100644 --- a/modules.json +++ b/modules.json @@ -236,7 +236,7 @@ }, "vcf_annotate_ensemblvep_snpeff": { "branch": "master", - "git_sha": "cfd937a668919d948f6fcbf4218e79de50c2f36f", + "git_sha": "1b2fdf082b2ea7976b112e149a474d816094724c", "installed_by": ["subworkflows"] } } diff --git a/subworkflows/nf-core/vcf_annotate_ensemblvep_snpeff/main.nf b/subworkflows/nf-core/vcf_annotate_ensemblvep_snpeff/main.nf index 91cace4d..9829b319 100644 --- a/subworkflows/nf-core/vcf_annotate_ensemblvep_snpeff/main.nf +++ b/subworkflows/nf-core/vcf_annotate_ensemblvep_snpeff/main.nf @@ -5,6 +5,7 @@ include { ENSEMBLVEP_VEP } from '../../../modules/nf-core/ensemblvep/vep/main' include { SNPEFF_SNPEFF } from '../../../modules/nf-core/snpeff/snpeff/main' include { TABIX_TABIX } from '../../../modules/nf-core/tabix/tabix/main' +include { TABIX_BGZIP } from '../../../modules/nf-core/tabix/bgzip/main' include { BCFTOOLS_PLUGINSCATTER } from '../../../modules/nf-core/bcftools/pluginscatter/main' include { BCFTOOLS_CONCAT } from '../../../modules/nf-core/bcftools/concat/main' include { BCFTOOLS_SORT } from '../../../modules/nf-core/bcftools/sort/main' @@ -24,7 +25,9 @@ workflow VCF_ANNOTATE_ENSEMBLVEP_SNPEFF { val_sites_per_chunk // value: the amount of variants per scattered VCF main: - ch_versions = Channel.empty() + def ch_versions = Channel.empty() + def ch_vep_input = Channel.empty() + def ch_scatter = Channel.empty() // Check if val_sites_per_chunk is set and scatter if it is if(val_sites_per_chunk) { @@ -32,7 +35,7 @@ workflow VCF_ANNOTATE_ENSEMBLVEP_SNPEFF { // Prepare the input VCF channel for scattering (split VCFs from custom files) // - ch_input = ch_vcf + def ch_input = ch_vcf .multiMap { meta, vcf, tbi, custom_files -> vcf: [ meta, vcf, tbi ] custom: [ meta, custom_files ] @@ -63,7 +66,7 @@ workflow VCF_ANNOTATE_ENSEMBLVEP_SNPEFF { // If multiple files are created, a list will be made as output of the process // So if the output isn't a list, there is always one file and if there is a list, // the amount of files in the list gets counted by .size() - is_list = vcfs instanceof ArrayList + def is_list = vcfs instanceof ArrayList count = is_list ? vcfs.size() : 1 [ meta, is_list ? vcfs : [vcfs], count ] // Channel containing the list of VCFs and the size of this list @@ -72,21 +75,22 @@ workflow VCF_ANNOTATE_ENSEMBLVEP_SNPEFF { .combine(ch_input.custom, by: 0) // Re-add the sample specific custom files .multiMap { meta, vcf, count, custom_files -> // Define the new ID. The `_annotated` is to disambiguate the VEP output with its input - new_id = "${meta.id}${vcf.name.replace(meta.id,"").tokenize(".")[0]}_annotated" as String - new_meta = meta + [id:new_id] + def new_id = "${meta.id}${vcf.name.replace(meta.id,"").tokenize(".")[0]}_annotated" as String // Create channels: one with the VEP input and one with the original ID and count of scattered VCFs - input: [ new_meta, vcf, custom_files ] - count: [ new_meta, meta.id, count ] + input: [ meta + [id:new_id], vcf, custom_files ] + count: [ meta + [id:new_id], meta.id, count ] } ch_vep_input = ch_scatter.input } else { // Use the normal input when no scattering has to be performed - ch_vep_input = ch_vcf.map { meta, vcf, tbi, files -> [ meta, vcf, files ] } + ch_vep_input = ch_vcf.map { meta, vcf, _tbi, files -> [ meta, vcf, files ] } } // Annotate with ensemblvep if it's part of the requested tools + def ch_vep_output = Channel.empty() + def ch_vep_reports = Channel.empty() if("ensemblvep" in val_tools_to_use){ ENSEMBLVEP_VEP( ch_vep_input, @@ -102,11 +106,14 @@ workflow VCF_ANNOTATE_ENSEMBLVEP_SNPEFF { ch_vep_output = ENSEMBLVEP_VEP.out.vcf ch_vep_reports = ENSEMBLVEP_VEP.out.report } else { - ch_vep_output = ch_vep_input.map { meta, vcf, files -> [ meta, vcf ] } - ch_vep_reports = Channel.empty() + ch_vep_output = ch_vep_input.map { meta, vcf, _files -> [ meta, vcf ] } } // Annotate with snpeff if it's part of the requested tools + def ch_snpeff_output = Channel.empty() + def ch_snpeff_reports = Channel.empty() + def ch_snpeff_html = Channel.empty() + def ch_snpeff_genes = Channel.empty() if("snpeff" in val_tools_to_use){ SNPEFF_SNPEFF( ch_vep_output, @@ -115,31 +122,36 @@ workflow VCF_ANNOTATE_ENSEMBLVEP_SNPEFF { ) ch_versions = ch_versions.mix(SNPEFF_SNPEFF.out.versions.first()) - ch_snpeff_output = SNPEFF_SNPEFF.out.vcf ch_snpeff_reports = SNPEFF_SNPEFF.out.report ch_snpeff_html = SNPEFF_SNPEFF.out.summary_html ch_snpeff_genes = SNPEFF_SNPEFF.out.genes_txt + + TABIX_BGZIP( + SNPEFF_SNPEFF.out.vcf + ) + ch_versions = ch_versions.mix(TABIX_BGZIP.out.versions.first()) + ch_snpeff_output = TABIX_BGZIP.out.output } else { ch_snpeff_output = ch_vep_output - ch_snpeff_reports = Channel.empty() - ch_snpeff_html = Channel.empty() - ch_snpeff_genes = Channel.empty() } // Gather the files back together if they were scattered + def ch_ready_vcfs = Channel.empty() if(val_sites_per_chunk) { // // Concatenate the VCFs back together with bcftools concat // - ch_concat_input = ch_snpeff_output + def ch_concat_input = ch_snpeff_output .join(ch_scatter.count, failOnDuplicate:true, failOnMismatch:true) .map { meta, vcf, id, count -> - new_meta = meta + [id:id] + def new_meta = meta + [id:id] [ groupKey(new_meta, count), vcf ] } .groupTuple() // Group the VCFs which need to be concatenated - .map { it + [[]] } + .map { meta, vcf -> + [ meta, vcf, [] ] + } BCFTOOLS_CONCAT( ch_concat_input @@ -164,7 +176,7 @@ workflow VCF_ANNOTATE_ENSEMBLVEP_SNPEFF { // Index the resulting bgzipped VCFs // - ch_tabix_input = ch_ready_vcfs + def ch_tabix_input = ch_ready_vcfs .branch { meta, vcf -> // Split the bgzipped VCFs from the unzipped VCFs (only bgzipped VCFs should be indexed) bgzip: vcf.extension == "gz" @@ -177,15 +189,15 @@ workflow VCF_ANNOTATE_ENSEMBLVEP_SNPEFF { ) ch_versions = ch_versions.mix(TABIX_TABIX.out.versions) - ch_vcf_tbi = ch_tabix_input.bgzip + def ch_vcf_tbi = ch_tabix_input.bgzip .join(TABIX_TABIX.out.tbi, failOnDuplicate: true, failOnMismatch: true) .mix(ch_tabix_input.unzip) emit: vcf_tbi = ch_vcf_tbi // channel: [ val(meta), path(vcf), path(tbi) ] vep_reports = ch_vep_reports // channel: [ path(html) ] - snpeff_reports = ch_snpeff_reports // channel: [ path(csv) ] - snpeff_html = ch_snpeff_html // channel: [ path(html) ] - snpeff_genes = ch_snpeff_genes // channel: [ path(genes) ] + snpeff_reports = ch_snpeff_reports // channel: [ val(meta), path(csv) ] + snpeff_html = ch_snpeff_html // channel: [ val(meta), path(html) ] + snpeff_genes = ch_snpeff_genes // channel: [ val(meta), path(genes) ] versions = ch_versions // channel: [ versions.yml ] } diff --git a/subworkflows/nf-core/vcf_annotate_ensemblvep_snpeff/meta.yml b/subworkflows/nf-core/vcf_annotate_ensemblvep_snpeff/meta.yml index 6fe096c0..b0541d66 100644 --- a/subworkflows/nf-core/vcf_annotate_ensemblvep_snpeff/meta.yml +++ b/subworkflows/nf-core/vcf_annotate_ensemblvep_snpeff/meta.yml @@ -8,9 +8,12 @@ keywords: - ensemblvep - snpeff components: + - ensemblvep/download - ensemblvep/vep + - snpeff/download - snpeff/snpeff - tabix/tabix + - tabix/bgzip - bcftools/pluginscatter - bcftools/concat - bcftools/sort @@ -42,7 +45,9 @@ input: Structure: [ path(file1), path(file2)... ] - val_snpeff_db: type: string - description: database to use for snpeff + description: | + database to use for snpeff, usually consists of the genome and the database version + e.g. WBcel235.105 - ch_snpeff_cache: description: | the root cache folder for snpeff (optional) @@ -60,10 +65,23 @@ output: description: | Compressed vcf file + tabix index Structure: [ val(meta), path(vcf), path(tbi) ] - - reports: + - vep_reports: type: file - description: html reports + description: html reports generated by Ensembl VEP pattern: "*.html" + - snpeff_reports: + description: | + csv reports generated by snpeff + Structure: [ val(meta), path(csv) ] + - snpeff_html: + description: | + html reports generated by snpeff + Structure: [ val(meta), path(html) ] + - snpeff_genes: + description: | + txt (tab separated) file having counts of the number of variants + affecting each transcript and gene + Structure: [ val(meta), path(txt) ] - versions: type: file description: File containing software versions diff --git a/subworkflows/nf-core/vcf_annotate_ensemblvep_snpeff/tests/main.nf.test b/subworkflows/nf-core/vcf_annotate_ensemblvep_snpeff/tests/main.nf.test new file mode 100644 index 00000000..e6d851e6 --- /dev/null +++ b/subworkflows/nf-core/vcf_annotate_ensemblvep_snpeff/tests/main.nf.test @@ -0,0 +1,332 @@ +nextflow_workflow { + + name "Test Subworkflow VCF_ANNOTATE_ENSEMBLVEP_SNPEFF" + script "../main.nf" + workflow "VCF_ANNOTATE_ENSEMBLVEP_SNPEFF" + + tag "subworkflows" + tag "subworkflows_nfcore" + tag "subworkflows/vcf_annotate_ensemblvep_snpeff" + tag "ensemblvep/download" + tag "ensemblvep/vep" + tag "snpeff/download" + tag "snpeff/snpeff" + tag "tabix/tabix" + tag "tabix/bgzip" + tag "bcftools/pluginscatter" + tag "bcftools/concat" + tag "bcftools/sort" + + config "./nextflow.config" + + test("sarscov2 - ensemblvep") { + + setup { + run("ENSEMBLVEP_DOWNLOAD") { + script "../../../../modules/nf-core/ensemblvep/download" + process { + """ + input[0] = [ + [id:"reference"], + "WBcel235", + "caenorhabditis_elegans", + "110" + ] + """ + } + } + } + + when { + workflow { + """ + input[0] = Channel.of([ + [ id:'custom_test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true), + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz.tbi', checkIfExists: true) + ] + ]) + input[1] = [[],[]] + input[2] = "WBcel235" + input[3] = "caenorhabditis_elegans" + input[4] = "110" + input[5] = ENSEMBLVEP_DOWNLOAD.out.cache.map { meta, cache -> cache } + input[6] = [] + input[7] = [] + input[8] = [] + input[9] = ["ensemblvep"] + input[10] = 5 + """ + } + } + + then { + assertAll( + { assert workflow.success}, + { assert snapshot( + workflow.out.vcf_tbi.collect { [it[0], "${file(it[1]).name},variantsMD5:${path(it[1]).vcf.variantsMD5}", file(it[2]).name] }, + workflow.out.vep_reports.collect { it instanceof String ? file(it).name : it }, + workflow.out.snpeff_reports.collect { it.collect { it instanceof String ? file(it).name : it } }, + workflow.out.snpeff_html.collect { it.collect { it instanceof String ? file(it).name : it } }, + workflow.out.snpeff_genes.collect { it.collect { it instanceof String ? file(it).name : it } }, + workflow.out.versions.collect { it instanceof String ? file(it).name : it } + ).match()} + ) + } + } + + test("sarscov2 - snpeff") { + + setup { + run("SNPEFF_DOWNLOAD") { + script "../../../../modules/nf-core/snpeff/download" + process { + """ + input[0] = [ + [id:"reference"], + "WBcel235.105" + ] + """ + } + } + } + + when { + workflow { + """ + input[0] = Channel.of([ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz.tbi', checkIfExists: true), + [] + ], + [ + [ id:'custom_test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true), + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz.tbi', checkIfExists: true) + ] + ]) + input[1] = [[],[]] + input[2] = "WBcel235" + input[3] = "caenorhabditis_elegans" + input[4] = "110" + input[5] = [] + input[6] = [] + input[7] = "WBcel235.105" + input[8] = SNPEFF_DOWNLOAD.out.cache + input[9] = ["snpeff"] + input[10] = 5 + """ + } + } + + then { + assertAll( + { assert workflow.success}, + { assert snapshot( + workflow.out.vcf_tbi.collect { [it[0], "${file(it[1]).name},variantsMD5:${path(it[1]).vcf.variantsMD5}", file(it[2]).name] }, + workflow.out.vep_reports.collect { it instanceof String ? file(it).name : it }, + workflow.out.snpeff_reports.collect { it.collect { it instanceof String ? file(it).name : it } }, + workflow.out.snpeff_html.collect { it.collect { it instanceof String ? file(it).name : it } }, + workflow.out.snpeff_genes.collect { it.collect { it instanceof String ? file(it).name : it } }, + workflow.out.versions.collect { it instanceof String ? file(it).name : it } + ).match()} + ) + } + } + + test("sarscov2 - snpeff + ensemblvep") { + + setup { + run("ENSEMBLVEP_DOWNLOAD") { + script "../../../../modules/nf-core/ensemblvep/download" + process { + """ + input[0] = [ + [id:"reference"], + "WBcel235", + "caenorhabditis_elegans", + "110" + ] + """ + } + } + + run("SNPEFF_DOWNLOAD") { + script "../../../../modules/nf-core/snpeff/download" + process { + """ + input[0] = [ + [id:"reference"], + "WBcel235.105" + ] + """ + } + } + } + + when { + workflow { + """ + input[0] = Channel.of( [ + [ id:'custom_test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true), + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz.tbi', checkIfExists: true) + ] + ]) + input[1] = [[],[]] + input[2] = "WBcel235" + input[3] = "caenorhabditis_elegans" + input[4] = "110" + input[5] = ENSEMBLVEP_DOWNLOAD.out.cache.map { meta, cache -> cache } + input[6] = [] + input[7] = "WBcel235.105" + input[8] = SNPEFF_DOWNLOAD.out.cache + input[9] = ["snpeff", "ensemblvep"] + input[10] = 5 + """ + } + } + + then { + assertAll( + { assert workflow.success}, + { assert snapshot( + workflow.out.vcf_tbi.collect { [it[0], "${file(it[1]).name},variantsMD5:${path(it[1]).vcf.variantsMD5}", file(it[2]).name] }, + workflow.out.vep_reports.collect { it instanceof String ? file(it).name : it }, + workflow.out.snpeff_reports.collect { it.collect { it instanceof String ? file(it).name : it } }, + workflow.out.snpeff_html.collect { it.collect { it instanceof String ? file(it).name : it } }, + workflow.out.snpeff_genes.collect { it.collect { it instanceof String ? file(it).name : it } }, + workflow.out.versions.collect { it instanceof String ? file(it).name : it } + ).match()} + ) + } + } + + test("sarscov2 - ensemblvep - large chunks") { + + setup { + run("ENSEMBLVEP_DOWNLOAD") { + script "../../../../modules/nf-core/ensemblvep/download" + process { + """ + input[0] = [ + [id:"reference"], + "WBcel235", + "caenorhabditis_elegans", + "110" + ] + """ + } + } + } + + when { + workflow { + """ + input[0] = Channel.of( [ + [ id:'custom_test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true), + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz.tbi', checkIfExists: true) + ] + ]) + input[1] = [[],[]] + input[2] = "WBcel235" + input[3] = "caenorhabditis_elegans" + input[4] = "110" + input[5] = ENSEMBLVEP_DOWNLOAD.out.cache.map { meta, cache -> cache } + input[6] = [] + input[7] = [] + input[8] = [] + input[9] = ["ensemblvep"] + input[10] = 100 + """ + } + } + + then { + assertAll( + { assert workflow.success}, + { assert snapshot( + workflow.out.vcf_tbi.collect { [it[0], "${file(it[1]).name},variantsMD5:${path(it[1]).vcf.variantsMD5}", file(it[2]).name] }, + workflow.out.vep_reports.collect { it instanceof String ? file(it).name : it }, + workflow.out.snpeff_reports.collect { it.collect { it instanceof String ? file(it).name : it } }, + workflow.out.snpeff_html.collect { it.collect { it instanceof String ? file(it).name : it } }, + workflow.out.snpeff_genes.collect { it.collect { it instanceof String ? file(it).name : it } }, + workflow.out.versions.collect { it instanceof String ? file(it).name : it } + ).match()} + ) + } + } + + test("sarscov2 - ensemblvep - no scatter") { + + setup { + run("ENSEMBLVEP_DOWNLOAD") { + script "../../../../modules/nf-core/ensemblvep/download" + process { + """ + input[0] = [ + [id:"reference"], + "WBcel235", + "caenorhabditis_elegans", + "110" + ] + """ + } + } + } + + when { + workflow { + """ + input[0] = Channel.of([ + [ id:'custom_test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true), + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz.tbi', checkIfExists: true) + ] + ]) + input[1] = [[],[]] + input[2] = "WBcel235" + input[3] = "caenorhabditis_elegans" + input[4] = "110" + input[5] = ENSEMBLVEP_DOWNLOAD.out.cache.map { meta, cache -> cache } + input[6] = [] + input[7] = [] + input[8] = [] + input[9] = ["ensemblvep"] + input[10] = [] + """ + } + } + + then { + assertAll( + { assert workflow.success}, + { assert snapshot( + workflow.out.vcf_tbi.collect { [it[0], "${file(it[1]).name},variantsMD5:${path(it[1]).vcf.variantsMD5}", file(it[2]).name] }, + workflow.out.vep_reports.collect { it instanceof String ? file(it).name : it }, + workflow.out.snpeff_reports.collect { it.collect { it instanceof String ? file(it).name : it } }, + workflow.out.snpeff_html.collect { it.collect { it instanceof String ? file(it).name : it } }, + workflow.out.snpeff_genes.collect { it.collect { it instanceof String ? file(it).name : it } }, + workflow.out.versions.collect { it instanceof String ? file(it).name : it } + ).match()} + ) + } + } +} diff --git a/subworkflows/nf-core/vcf_annotate_ensemblvep_snpeff/tests/main.nf.test.snap b/subworkflows/nf-core/vcf_annotate_ensemblvep_snpeff/tests/main.nf.test.snap new file mode 100644 index 00000000..dcca7b56 --- /dev/null +++ b/subworkflows/nf-core/vcf_annotate_ensemblvep_snpeff/tests/main.nf.test.snap @@ -0,0 +1,338 @@ +{ + "sarscov2 - snpeff": { + "content": [ + [ + [ + { + "groupSize": 2, + "groupTarget": { + "id": "custom_test", + "single_end": false + } + }, + "custom_test.vcf.gz,variantsMD5:e9323877c6352459351537ac6539914a", + "custom_test.vcf.gz.tbi" + ], + [ + { + "groupSize": 2, + "groupTarget": { + "id": "test", + "single_end": false + } + }, + "test.vcf.gz,variantsMD5:e9323877c6352459351537ac6539914a", + "test.vcf.gz.tbi" + ] + ], + [ + + ], + [ + [ + { + "id": "custom_test0_annotated", + "single_end": false + }, + "custom_test0_annotated.csv" + ], + [ + { + "id": "custom_test1_annotated", + "single_end": false + }, + "custom_test1_annotated.csv" + ], + [ + { + "id": "test0_annotated", + "single_end": false + }, + "test0_annotated.csv" + ], + [ + { + "id": "test1_annotated", + "single_end": false + }, + "test1_annotated.csv" + ] + ], + [ + [ + { + "id": "custom_test0_annotated", + "single_end": false + }, + "snpEff_summary.html" + ], + [ + { + "id": "custom_test1_annotated", + "single_end": false + }, + "snpEff_summary.html" + ], + [ + { + "id": "test0_annotated", + "single_end": false + }, + "snpEff_summary.html" + ], + [ + { + "id": "test1_annotated", + "single_end": false + }, + "snpEff_summary.html" + ] + ], + [ + [ + { + "id": "custom_test0_annotated", + "single_end": false + }, + "custom_test0_annotated.genes.txt" + ], + [ + { + "id": "custom_test1_annotated", + "single_end": false + }, + "custom_test1_annotated.genes.txt" + ], + [ + { + "id": "test0_annotated", + "single_end": false + }, + "test0_annotated.genes.txt" + ], + [ + { + "id": "test1_annotated", + "single_end": false + }, + "test1_annotated.genes.txt" + ] + ], + [ + "versions.yml", + "versions.yml", + "versions.yml", + "versions.yml", + "versions.yml", + "versions.yml", + "versions.yml" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-10-18T07:57:12.127577423" + }, + "sarscov2 - ensemblvep - large chunks": { + "content": [ + [ + [ + { + "groupSize": 1, + "groupTarget": { + "id": "custom_test", + "single_end": false + } + }, + "custom_test.vcf.gz,variantsMD5:370b92bc4c236a7b4c6d152319447af3", + "custom_test.vcf.gz.tbi" + ] + ], + [ + "custom_test0_annotated.vep.vcf.gz_summary.html" + ], + [ + + ], + [ + + ], + [ + + ], + [ + "versions.yml", + "versions.yml", + "versions.yml", + "versions.yml", + "versions.yml" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-10-18T08:30:06.857146079" + }, + "sarscov2 - snpeff + ensemblvep": { + "content": [ + [ + [ + { + "groupSize": 2, + "groupTarget": { + "id": "custom_test", + "single_end": false + } + }, + "custom_test.vcf.gz,variantsMD5:69492a5e9f3bf9d36aad9c14783c849d", + "custom_test.vcf.gz.tbi" + ] + ], + [ + "custom_test0_annotated.vep.vcf.gz_summary.html", + "custom_test1_annotated.vep.vcf.gz_summary.html" + ], + [ + [ + { + "id": "custom_test0_annotated", + "single_end": false + }, + "custom_test0_annotated.csv" + ], + [ + { + "id": "custom_test1_annotated", + "single_end": false + }, + "custom_test1_annotated.csv" + ] + ], + [ + [ + { + "id": "custom_test0_annotated", + "single_end": false + }, + "snpEff_summary.html" + ], + [ + { + "id": "custom_test1_annotated", + "single_end": false + }, + "snpEff_summary.html" + ] + ], + [ + [ + { + "id": "custom_test0_annotated", + "single_end": false + }, + "custom_test0_annotated.genes.txt" + ], + [ + { + "id": "custom_test1_annotated", + "single_end": false + }, + "custom_test1_annotated.genes.txt" + ] + ], + [ + "versions.yml", + "versions.yml", + "versions.yml", + "versions.yml", + "versions.yml", + "versions.yml", + "versions.yml" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-10-18T08:29:31.390244289" + }, + "sarscov2 - ensemblvep - no scatter": { + "content": [ + [ + [ + { + "id": "custom_test", + "single_end": false + }, + "custom_test.vep.vcf.gz,variantsMD5:370b92bc4c236a7b4c6d152319447af3", + "custom_test.vep.vcf.gz.tbi" + ] + ], + [ + "custom_test.vep.vcf.gz_summary.html" + ], + [ + + ], + [ + + ], + [ + + ], + [ + "versions.yml", + "versions.yml" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-10-18T08:30:32.047882286" + }, + "sarscov2 - ensemblvep": { + "content": [ + [ + [ + { + "groupSize": 2, + "groupTarget": { + "id": "custom_test", + "single_end": false + } + }, + "custom_test.vcf.gz,variantsMD5:370b92bc4c236a7b4c6d152319447af3", + "custom_test.vcf.gz.tbi" + ] + ], + [ + "custom_test0_annotated.vep.vcf.gz_summary.html", + "custom_test1_annotated.vep.vcf.gz_summary.html" + ], + [ + + ], + [ + + ], + [ + + ], + [ + "versions.yml", + "versions.yml", + "versions.yml", + "versions.yml", + "versions.yml" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-10-18T08:26:42.202930396" + } +} \ No newline at end of file diff --git a/subworkflows/nf-core/vcf_annotate_ensemblvep_snpeff/tests/nextflow.config b/subworkflows/nf-core/vcf_annotate_ensemblvep_snpeff/tests/nextflow.config new file mode 100644 index 00000000..634ec18a --- /dev/null +++ b/subworkflows/nf-core/vcf_annotate_ensemblvep_snpeff/tests/nextflow.config @@ -0,0 +1,15 @@ +process { + withName: BCFTOOLS_CONCAT { + ext.prefix = { "${meta.id}_concat" } + } + withName: ENSEMBLVEP_DOWNLOAD { + ext.args = '--AUTO c --CONVERT --NO_BIOPERL --NO_HTSLIB --NO_TEST --NO_UPDATE' + } + withName: ENSEMBLVEP_VEP { + ext.prefix = { "${meta.id}.vep" } + ext.args = {[ + "--vcf --offline", + meta.id.startsWith("custom_test") ? "--custom test3.vcf.gz,,vcf,exact,0,TOPMED" : "" + ].join(" ")} + } +} From 99cbaae823e5a92e4e3b6e6b8b557ef780dcc561 Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Wed, 23 Oct 2024 11:21:44 +0200 Subject: [PATCH 051/167] move bam conversion to cram_prepare_samtools_bedtools --- .github/workflows/ci.yml | 2 +- conf/modules.config | 12 +- lib/GlobalVariables.groovy | 6 +- modules/nf-core/elprep/filter/environment.yml | 5 + modules/nf-core/elprep/filter/main.nf | 123 ++++++++++ modules/nf-core/elprep/filter/meta.yml | 212 ++++++++++++++++++ .../nf-core/elprep/filter/tests/main.nf.test | 120 ++++++++++ .../elprep/filter/tests/main.nf.test.snap | 122 ++++++++++ .../elprep/filter/tests/nextflow.config | 5 + nf-test.config | 3 +- .../main.nf | 42 +--- .../cram_prepare_samtools_bedtools/main.nf | 19 ++ .../local/input_split_bedtools/main.nf | 14 +- tests/nextflow.config | 8 + .../main.nf.test | 111 ++++----- .../main.nf.test.snap | 14 +- .../main.nf.test | 33 ++- .../main.nf.test.snap | 48 +++- workflows/germline.nf | 33 ++- 19 files changed, 788 insertions(+), 144 deletions(-) create mode 100644 modules/nf-core/elprep/filter/environment.yml create mode 100644 modules/nf-core/elprep/filter/main.nf create mode 100644 modules/nf-core/elprep/filter/meta.yml create mode 100644 modules/nf-core/elprep/filter/tests/main.nf.test create mode 100644 modules/nf-core/elprep/filter/tests/main.nf.test.snap create mode 100644 modules/nf-core/elprep/filter/tests/nextflow.config rename subworkflows/local/{cram_call_vardictjava => bam_call_vardictjava}/main.nf (72%) rename tests/subworkflows/local/{cram_call_vardictjava => bam_call_vardictjava}/main.nf.test (58%) rename tests/subworkflows/local/{cram_call_vardictjava => bam_call_vardictjava}/main.nf.test.snap (79%) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 0e2be3da..2ed581fc 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -34,7 +34,7 @@ jobs: - "pipeline_variations2" - "pipeline_gvcfs" - "cram_call_genotype_gatk4" - - "cram_call_vardictjava" + - "bam_call_vardictjava" - "cram_prepare_samtools_bedtools" - "input_split_bedtools" - "vcf_annotation" diff --git a/conf/modules.config b/conf/modules.config index e8406ec1..65276d4d 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -274,7 +274,7 @@ process { ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ - withName: "^.*CRAM_CALL_VARDICTJAVA:VARDICTJAVA\$" { + withName: "^.*BAM_CALL_VARDICTJAVA:VARDICTJAVA\$" { time = { 16.h * task.attempt } ext.prefix = {"${meta.id}"} ext.args = { @@ -291,7 +291,7 @@ process { } } - withName: "^.*CRAM_CALL_VARDICTJAVA:VCF_CONCAT_BCFTOOLS:BCFTOOLS_CONCAT\$" { + withName: "^.*BAM_CALL_VARDICTJAVA:VCF_CONCAT_BCFTOOLS:BCFTOOLS_CONCAT\$" { ext.args = '--allow-overlaps --output-type z' ext.prefix = enableOutput("original") ? final_prefix : {"${meta.id}.concat"} publishDir = [ @@ -303,7 +303,7 @@ process { ] // SAVE } - withName: "^.*CRAM_CALL_VARDICTJAVA:TABIX_VCFANNO\$" { + withName: "^.*BAM_CALL_VARDICTJAVA:TABIX_VCFANNO\$" { ext.prefix = enableOutput("original") ? final_prefix : {"${meta.id}.vcfanno"} publishDir = [ overwrite: true, @@ -314,12 +314,12 @@ process { ] // SAVE } - withName: "^.*CRAM_CALL_VARDICTJAVA:VCF_FILTER_BCFTOOLS:FILTER_1\$" { + withName: "^.*BAM_CALL_VARDICTJAVA:VCF_FILTER_BCFTOOLS:FILTER_1\$" { ext.prefix = { "${meta.id}.filtered1" } ext.args = "-i 'QUAL >= 0${params.only_pass ? " && FILTER=\"PASS\"" : ""}' --output-type z" } - withName: "^.*CRAM_CALL_VARDICTJAVA:VCF_FILTER_BCFTOOLS:FILTER_2\$" { + withName: "^.*BAM_CALL_VARDICTJAVA:VCF_FILTER_BCFTOOLS:FILTER_2\$" { ext.args = "--soft-filter 'LowFreqBias' --mode '+' -e 'FORMAT/AF[0:*] < 0.02 && FORMAT/VD[0] < 30 && INFO/SBF < 0.1 && INFO/NM >= 2.0' --output-type z" ext.prefix = enableOutput("filter") ? final_prefix : {"${meta.id}.filtered"} publishDir = [ @@ -331,7 +331,7 @@ process { ] // SAVE } - withName: "^.*CRAM_CALL_VARDICTJAVA:TABIX_TABIX\$" { + withName: "^.*BAM_CALL_VARDICTJAVA:TABIX_TABIX\$" { publishDir = [ overwrite: true, enabled: enableOutput("filter") || enableOutput("original"), diff --git a/lib/GlobalVariables.groovy b/lib/GlobalVariables.groovy index 72d5754b..9d868d23 100644 --- a/lib/GlobalVariables.groovy +++ b/lib/GlobalVariables.groovy @@ -4,9 +4,11 @@ import java.nio.file.Path class GlobalVariables { // The available callers - public static List availableCallers = ["haplotypecaller", "vardict"] + public static List availableCallers = ["haplotypecaller", "vardict", "elprep"] - public static List gvcfCallers = ["haplotypecaller"] + public static List gvcfCallers = ["haplotypecaller", "elprep"] + + public static List bamCallers = ["elprep", "vardict"] public static Map pedFiles = [:] diff --git a/modules/nf-core/elprep/filter/environment.yml b/modules/nf-core/elprep/filter/environment.yml new file mode 100644 index 00000000..38dd4f47 --- /dev/null +++ b/modules/nf-core/elprep/filter/environment.yml @@ -0,0 +1,5 @@ +channels: + - conda-forge + - bioconda +dependencies: + - bioconda::elprep=5.1.3 diff --git a/modules/nf-core/elprep/filter/main.nf b/modules/nf-core/elprep/filter/main.nf new file mode 100644 index 00000000..6727106a --- /dev/null +++ b/modules/nf-core/elprep/filter/main.nf @@ -0,0 +1,123 @@ +process ELPREP_FILTER { + tag "$meta.id" + label 'process_high' + + conda "${moduleDir}/environment.yml" + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/elprep:5.1.3--he881be0_1': + 'biocontainers/elprep:5.1.3--he881be0_1' }" + + input: + tuple val(meta), path(bam), path(bai), path(target_regions_bed), path(filter_regions_bed), path(intermediate_bqsr_tables), path(recall_file) + tuple val(meta2), path(reference_sequences) + tuple val(meta3), path(reference_elfasta) + tuple val(meta4), path(known_sites_elsites) + val(run_haplotypecaller) + val(run_bqsr) + val(bqsr_tables_only) + val(get_activity_profile) + val(get_assembly_regions) + + + output: + tuple val(meta), path("*.{bam,sam}") , emit: bam + tuple val(meta), path("*.log") , emit: logs + tuple val(meta), path("*.metrics.txt") , optional: true, emit: metrics + tuple val(meta), path("*.recall") , optional: true, emit: recall + tuple val(meta), path("*.vcf.gz") , optional: true, emit: gvcf + tuple val(meta), path("*.table") , optional: true, emit: table + tuple val(meta), path("*.activity_profile.igv") , optional: true, emit: activity_profile + tuple val(meta), path("*.assembly_regions.igv") , optional: true, emit: assembly_regions + path "versions.yml" , emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + def suffix = args.contains("--output-type sam") ? "sam" : "bam" + + // filter args + def reference_sequences_cmd = reference_sequences ? "--replace-reference-sequences ${reference_sequences}" : "" + def filter_regions_cmd = filter_regions_bed ? "--filter-non-overlapping-reads ${filter_regions_bed}" : "" + + // markdup args + def markdup_cmd = args.contains("--mark-duplicates") ? "--mark-optical-duplicates ${prefix}.metrics.txt": "" + + // variant calling args + def haplotyper_cmd = run_haplotypecaller ? "--haplotypecaller ${prefix}.g.vcf.gz": "" + + def fasta_cmd = reference_elfasta ? "--reference ${reference_elfasta}": "" + def known_sites_cmd = known_sites_elsites ? "--known-sites ${known_sites_elsites}": "" + def target_regions_cmd = target_regions_bed ? "--target-regions ${target_regions_bed}": "" + + // bqsr args + def bqsr_cmd = run_bqsr ? "--bqsr ${prefix}.recall": "" + def bqsr_tables_only_cmd = bqsr_tables_only ? "--bqsr-tables-only ${prefix}.table": "" + + def intermediate_bqsr_cmd = intermediate_bqsr_tables ? "--bqsr-apply .": "" + def input_recall_cmd = recall_file ? "--recal-file $recall_file" : "" + // misc + def activity_profile_cmd = get_activity_profile ? "--activity-profile ${prefix}.activity_profile.igv": "" + def assembly_regions_cmd = get_assembly_regions ? "--assembly-regions ${prefix}.assembly_regions.igv": "" + + if ("$bam" == "${prefix}.${suffix}") error "Input and output names are the same, set prefix in module configuration to disambiguate!" + + """ + elprep filter ${bam} ${prefix}.${suffix} \\ + ${reference_sequences_cmd} \\ + ${filter_regions_cmd} \\ + ${markdup_cmd} \\ + ${haplotyper_cmd} \\ + ${fasta_cmd} \\ + ${known_sites_cmd} \\ + ${target_regions_cmd} \\ + ${bqsr_cmd} \\ + ${bqsr_tables_only_cmd} \\ + ${intermediate_bqsr_cmd} \\ + ${input_recall_cmd} \\ + ${activity_profile_cmd} \\ + ${assembly_regions_cmd} \\ + --nr-of-threads ${task.cpus} \\ + --log-path ./ \\ + $args + + mv logs/elprep/*.log . + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + elprep: \$(elprep 2>&1 | head -n2 | tail -n1 |sed 's/^.*version //;s/ compiled.*\$//') + END_VERSIONS + """ + + stub: + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + def suffix = args.contains("--output-type sam") ? "sam" : "bam" + def timestamp = "${java.time.OffsetDateTime.now().format(java.time.format.DateTimeFormatter.ISO_DATE_TIME)}" + def markdup_cmd = args.contains("--mark-duplicates") ? "touch ${prefix}.metrics.txt": "" + def bqsr_cmd = run_bqsr ? "touch ${prefix}.recall": "" + def haplotyper_cmd = run_haplotypecaller ? "echo | gzip > ${prefix}.g.vcf.gz": "" + def bqsr_tables_only_cmd = bqsr_tables_only ? "echo | gzip > ${prefix}.table": "" + def activity_profile_cmd = get_activity_profile ? "touch ${prefix}.activity_profile.igv": "" + def assembly_regions_cmd = get_assembly_regions ? "touch ${prefix}.assembly_regions.igv": "" + + if ("$bam" == "${prefix}.${suffix}") error "Input and output names are the same, set prefix in module configuration to disambiguate!" + + """ + touch ${prefix}.${suffix} + touch elprep-${timestamp}.log + ${markdup_cmd} + ${bqsr_cmd} + ${haplotyper_cmd} + ${bqsr_tables_only_cmd} + ${activity_profile_cmd} + ${assembly_regions_cmd} + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + elprep: \$(elprep 2>&1 | head -n2 | tail -n1 |sed 's/^.*version //;s/ compiled.*\$//') + END_VERSIONS + """ +} diff --git a/modules/nf-core/elprep/filter/meta.yml b/modules/nf-core/elprep/filter/meta.yml new file mode 100644 index 00000000..2af3b8b1 --- /dev/null +++ b/modules/nf-core/elprep/filter/meta.yml @@ -0,0 +1,212 @@ +name: "elprep_filter" +description: "Filter, sort and markdup sam/bam files, with optional BQSR and variant + calling." +keywords: + - sort + - bam + - sam + - filter + - variant calling +tools: + - "elprep": + description: "elPrep is a high-performance tool for preparing .sam/.bam files + for variant calling in sequencing pipelines. It can be used as a drop-in replacement + for SAMtools/Picard/GATK4." + homepage: "https://github.com/ExaScience/elprep" + documentation: "https://github.com/ExaScience/elprep" + tool_dev_url: "https://github.com/ExaScience/elprep" + doi: "10.1371/journal.pone.0244471" + licence: ["AGPL v3"] + identifier: biotools:elprep +input: + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - bam: + type: file + description: Input SAM/BAM file + pattern: "*.{bam,sam}" + - bai: + type: file + description: Input BAM file index + pattern: "*.bai" + - target_regions_bed: + type: file + description: Optional BED file containing target regions for BQSR and variant + calling. + pattern: "*.bed" + - filter_regions_bed: + type: file + description: Optional BED file containing regions to filter. + pattern: "*.bed" + - intermediate_bqsr_tables: + type: file + description: Optional list of BQSR tables, used when parsing files created by + `elprep split` + pattern: "*.table" + - recall_file: + type: file + description: Recall file with intermediate results for bqsr + pattern: "*.recall" + - - meta2: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - reference_sequences: + type: file + description: Optional SAM header to replace existing header. + pattern: "*.sam" + - - meta3: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - reference_elfasta: + type: file + description: Elfasta file, required for BQSR and variant calling. + pattern: "*.elfasta" + - - meta4: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - known_sites_elsites: + type: file + description: Optional elsites file containing known SNPs for BQSR. + pattern: "*.elsites" + - - run_haplotypecaller: + type: boolean + description: Run variant calling on the input files. Needed to generate gvcf + output. + - - run_bqsr: + type: boolean + description: Run BQSR on the input files. Needed to generate recall metrics. + - - bqsr_tables_only: + type: boolean + description: Write intermediate BQSR tables, used when parsing files created + by `elprep split`. + - - get_activity_profile: + type: boolean + description: Get the activity profile calculated by the haplotypecaller to the + given file in IGV format. + - - get_assembly_regions: + type: boolean + description: Get the assembly regions calculated by haplotypecaller to the speficied + file in IGV format. +output: + - bam: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + pattern: "*.{bam,sam}" + - "*.{bam,sam}": + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + pattern: "*.{bam,sam}" + - logs: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + pattern: "elprep-*.log" + - "*.log": + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + pattern: "elprep-*.log" + - metrics: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + pattern: "*.{metrics.txt}" + - "*.metrics.txt": + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + pattern: "*.{metrics.txt}" + - recall: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + pattern: "*.{recall}" + - "*.recall": + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + pattern: "*.{recall}" + - gvcf: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + pattern: "*.{vcf.gz}" + - "*.vcf.gz": + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + pattern: "*.{vcf.gz}" + - table: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + pattern: "*.{table}" + - "*.table": + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + pattern: "*.{table}" + - activity_profile: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + pattern: "*.{activity_profile.igv}" + - "*.activity_profile.igv": + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + pattern: "*.{activity_profile.igv}" + - assembly_regions: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + pattern: "*.{assembly_regions.igv}" + - "*.assembly_regions.igv": + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + pattern: "*.{assembly_regions.igv}" + - versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" +authors: + - "@matthdsm" +maintainers: + - "@matthdsm" diff --git a/modules/nf-core/elprep/filter/tests/main.nf.test b/modules/nf-core/elprep/filter/tests/main.nf.test new file mode 100644 index 00000000..84f6e16c --- /dev/null +++ b/modules/nf-core/elprep/filter/tests/main.nf.test @@ -0,0 +1,120 @@ + +nextflow_process { + + name "Test Process ELPREP_FILTER" + script "../main.nf" + process "ELPREP_FILTER" + config "./nextflow.config" + + tag "modules" + tag "modules_nfcore" + tag "elprep" + tag "elprep/filter" + + test("test-elprep-filter") { + + when { + process { + """ + input[0] = Channel.of([ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam.bai', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.bed', checkIfExists: true), + [], + [], + [] + ]) // meta, bam, bai, target_regions, bqsr_table, recall + input[1] = [[],[]] // reference sequences + input[2] = [ + [ id:'elfasta' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.elfasta', checkIfExists: true) + ] // meta2, reference_elfasta + input[3] = [ + [ id: 'sites' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/vcf/dbsnp_146.hg38.elsites', checkIfExists: true) + ] // elsites + input[4] = true // haplotypecaller + input[5] = true // bqsr + input[6] = false // bqsr_tables_only + input[7] = true // get_activity_profile + input[8] = true // get_assembly_regions + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert process.out.logs }, // name is unstable + { assert snapshot( + process.out.bam.collect { [it[0], "${file(it[1]).name},readsMD5:${bam(it[1]).getReadsMD5()}"] }, + process.out.metrics.collect { [it[0], file(it[1]).readLines()[10..20]] }, + process.out.recall, + process.out.gvcf.collect { [ it[0], "${file(it[1]).name},variantsMD5:${path(it[1]).vcf.variantsMD5}" ] }, + process.out.table, + process.out.activity_profile, + process.out.assembly_regions, + process.out.versions + ).match() + } + ) + } + } + + test("test-elprep-filter-stub") { + options '-stub' + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam.bai', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.bed', checkIfExists: true), + [], + [], + [] + ] + input[1] = [ + [ id:'ref_seq'], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.dict', checkIfExists: true) + ] // reference sequences + input[2] = [ + [ id:'elfasta' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.elfasta', checkIfExists: true) + ] // meta2, reference_elfasta + input[3] = [ + [ id: 'sites' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/vcf/dbsnp_146.hg38.elsites', checkIfExists: true) + ] // elsites + input[4] = true // haplotypecaller + input[5] = false // bqsr + input[6] = false // bqsr_tables_only + input[7] = true // get_activity_profile + input[8] = true // get_assembly_regions + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert process.out.logs }, // name is unstable + { assert snapshot( + process.out.bam, + process.out.metrics, + process.out.recall, + process.out.gvcf, + process.out.table, + process.out.activity_profile, + process.out.assembly_regions, + process.out.versions + ).match() + } + ) + } + } + +} diff --git a/modules/nf-core/elprep/filter/tests/main.nf.test.snap b/modules/nf-core/elprep/filter/tests/main.nf.test.snap new file mode 100644 index 00000000..9112fe30 --- /dev/null +++ b/modules/nf-core/elprep/filter/tests/main.nf.test.snap @@ -0,0 +1,122 @@ +{ + "test-elprep-filter": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test.bam,readsMD5:463ac3b905fbf4ddf113a94dbfa8d69f" + ] + ], + [ + + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test.recall:md5,9a7921cc49a7a3f6c20e0278eaf3f235" + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test.g.vcf.gz,variantsMD5:b74f219f1f3ca2e59d6edfabf503a6a9" + ] + ], + [ + + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test.activity_profile.igv:md5,c4b77c1bebcffd7822cafb8b90f70cde" + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test.assembly_regions.igv:md5,7ec2070b4d4af26532cffbc1c465ba93" + ] + ], + [ + "versions.yml:md5,8193703d0cedd662b76ea48940dac55d" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-10-22T11:05:45.927224502" + }, + "test-elprep-filter-stub": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + [ + + ], + [ + + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test.g.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + [ + + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test.activity_profile.igv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test.assembly_regions.igv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + [ + "versions.yml:md5,8193703d0cedd662b76ea48940dac55d" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-10-22T10:45:09.343805413" + } +} \ No newline at end of file diff --git a/modules/nf-core/elprep/filter/tests/nextflow.config b/modules/nf-core/elprep/filter/tests/nextflow.config new file mode 100644 index 00000000..bcb2dae0 --- /dev/null +++ b/modules/nf-core/elprep/filter/tests/nextflow.config @@ -0,0 +1,5 @@ +process { + withName: ELPREP_FILTER { + ext.args = "--reference-confidence GVCF" + } +} diff --git a/nf-test.config b/nf-test.config index 6d58c41d..5c6eea4f 100644 --- a/nf-test.config +++ b/nf-test.config @@ -6,7 +6,8 @@ config { profile "nf_test,docker" plugins { - load "nft-bam@0.1.1" + load "nft-bam@0.4.0" + load "nft-vcf@1.0.7" } } diff --git a/subworkflows/local/cram_call_vardictjava/main.nf b/subworkflows/local/bam_call_vardictjava/main.nf similarity index 72% rename from subworkflows/local/cram_call_vardictjava/main.nf rename to subworkflows/local/bam_call_vardictjava/main.nf index 91ab4fef..4ba412ce 100644 --- a/subworkflows/local/cram_call_vardictjava/main.nf +++ b/subworkflows/local/bam_call_vardictjava/main.nf @@ -1,4 +1,3 @@ -include { SAMTOOLS_CONVERT } from '../../../modules/nf-core/samtools/convert/main' include { VARDICTJAVA } from '../../../modules/nf-core/vardictjava/main' include { TABIX_BGZIP } from '../../../modules/nf-core/tabix/bgzip/main' include { BCFTOOLS_REHEADER } from '../../../modules/nf-core/bcftools/reheader/main' @@ -9,10 +8,9 @@ include { BCFTOOLS_STATS } from '../../../modules/nf-core/bcf include { VCF_CONCAT_BCFTOOLS } from '../vcf_concat_bcftools/main' include { VCF_FILTER_BCFTOOLS } from '../vcf_filter_bcftools/main' -workflow CRAM_CALL_VARDICTJAVA { +workflow BAM_CALL_VARDICTJAVA { take: - ch_crams // channel: [mandatory] [ val(meta), path(cram), path(crai) ] => sample CRAM files and their indexes - ch_input // channel: [mandatory] [ val(meta), path(cram), path(crai), path(bed) ] => sample CRAM files and their indexes + ch_input // channel: [mandatory] [ val(meta), path(bam), path(bai), path(bed) ] => sample CRAM files and their indexes ch_fasta // channel: [mandatory] [ val(meta), path(fasta) ] => fasta reference ch_fai // channel: [mandatory] [ val(meta), path(fai) ] => fasta reference index ch_dbsnp // channel: [optional] [ path(vcf) ] => the dbnsp vcf file @@ -22,39 +20,11 @@ workflow CRAM_CALL_VARDICTJAVA { main: def ch_versions = Channel.empty() - def ch_cram_bam = ch_crams - .map { meta, cram, crai -> - def new_meta = meta + [caller:"vardict"] - [ new_meta, cram, crai ] - } - .branch { _meta, cram, _crai -> - bam: cram.extension == "bam" - cram: cram.extension == "cram" - } - - SAMTOOLS_CONVERT( - ch_cram_bam.cram, - ch_fasta, - ch_fai - ) - ch_versions = ch_versions.mix(SAMTOOLS_CONVERT.out.versions.first()) - - def ch_vardict_crams = ch_input - .map { meta, cram, crai, bed -> - def new_meta = meta - meta.subMap("split_count") + [caller:"vardict", id:meta.sample] - [ new_meta, cram, crai, bed, meta.split_count ] - } - - def ch_vardict_input = ch_cram_bam.bam - .mix(SAMTOOLS_CONVERT.out.bam.join(SAMTOOLS_CONVERT.out.bai, failOnMismatch:true, failOnDuplicate:true)) - .combine(ch_vardict_crams, by:0) - .map { meta, bam, bai, _cram, _crai, bed, split_count -> - def new_meta = meta + [id:bed.baseName, split_count:split_count] - [ new_meta, bam, bai, bed ] - } - VARDICTJAVA( - ch_vardict_input, + ch_input.map { meta, bam, bai, bed -> + def new_meta = meta + [caller:'vardict'] + [ new_meta, bam, bai, bed ] + }, ch_fasta, ch_fai ) diff --git a/subworkflows/local/cram_prepare_samtools_bedtools/main.nf b/subworkflows/local/cram_prepare_samtools_bedtools/main.nf index dbce8201..320008f4 100644 --- a/subworkflows/local/cram_prepare_samtools_bedtools/main.nf +++ b/subworkflows/local/cram_prepare_samtools_bedtools/main.nf @@ -8,6 +8,7 @@ include { FILTER_BEDS } from '../../../modules/local/filte include { SAMTOOLS_MERGE } from '../../../modules/nf-core/samtools/merge/main' include { SAMTOOLS_INDEX } from '../../../modules/nf-core/samtools/index/main' +include { SAMTOOLS_CONVERT } from '../../../modules/nf-core/samtools/convert/main' include { TABIX_TABIX } from '../../../modules/nf-core/tabix/tabix/main' include { TABIX_BGZIP as UNZIP_ROI } from '../../../modules/nf-core/tabix/bgzip/main' include { BEDTOOLS_INTERSECT } from '../../../modules/nf-core/bedtools/intersect/main' @@ -20,6 +21,7 @@ workflow CRAM_PREPARE_SAMTOOLS_BEDTOOLS { ch_fasta // channel: [mandatory] [ path(fasta) ] => fasta reference ch_fai // channel: [mandatory] [ path(fai) ] => fasta reference index ch_default_roi // channel: [optional] [ path(roi) ] => bed containing regions of interest to be used as default + output_bam // boolean: Also output BAM files main: @@ -71,6 +73,22 @@ workflow CRAM_PREPARE_SAMTOOLS_BEDTOOLS { .join(SAMTOOLS_INDEX.out.crai, failOnDuplicate: true, failOnMismatch: true) .mix(ch_merged_crams.indexed) + // + // Optionally convert the CRAM files to BAM + // + + def ch_ready_bams = Channel.empty() + if(output_bam) { + SAMTOOLS_CONVERT( + ch_ready_crams, + ch_fasta, + ch_fai + ) + ch_versions = ch_versions.mix(SAMTOOLS_CONVERT.out.versions.first()) + + ch_ready_bams = SAMTOOLS_CONVERT.out.bam.join(SAMTOOLS_CONVERT.out.bai, failOnDuplicate:true, failOnMismatch:true) + } + // // Preprocess the ROI BED files => sort and merge overlapping regions // @@ -168,6 +186,7 @@ workflow CRAM_PREPARE_SAMTOOLS_BEDTOOLS { emit: ready_crams = ch_ready_crams // [ val(meta), path(cram), path(crai) ] + ready_bams = ch_ready_bams // [ val(meta), path(bam), path(bai) ] ready_beds = ch_ready_beds // [ val(meta), path(bed) ] versions = ch_versions // [ path(versions) ] reports = ch_reports // [ path(reports) ] diff --git a/subworkflows/local/input_split_bedtools/main.nf b/subworkflows/local/input_split_bedtools/main.nf index 20977cb0..dd332ab2 100644 --- a/subworkflows/local/input_split_bedtools/main.nf +++ b/subworkflows/local/input_split_bedtools/main.nf @@ -20,17 +20,21 @@ workflow INPUT_SPLIT_BEDTOOLS { def ch_split_output = ch_inputs .join(BEDTOOLS_SPLIT.out.beds, failOnDuplicate: true, failOnMismatch: true) - .map { meta, input, input_index, beds -> + .map { row -> + def meta = row[0] + def beds = row[-1] // Determine the amount of BED files per sample def bed_is_list = beds instanceof ArrayList def new_meta = meta + [split_count: bed_is_list ? beds.size() : 1] - [ new_meta, input, input_index, bed_is_list ? beds : [beds] ] + def bed_output = bed_is_list ? [beds] : [[beds]] + return [new_meta] + row[1..-2] + bed_output } .transpose(by:3) // Create one channel entry for each BED file per sample - .map { meta, input, input_index, bed -> + .map { row -> // Set the base name of the BED file as the ID (this will look like sample_id.xxxx, where xxxx are numbers) - def new_meta = meta + [id:bed.baseName] - [ new_meta, input, input_index, bed ] + def new_row = row + new_row[0] = row[0] + [id:row[-1].baseName] + return new_row } emit: diff --git a/tests/nextflow.config b/tests/nextflow.config index 59ffd5da..1643f647 100644 --- a/tests/nextflow.config +++ b/tests/nextflow.config @@ -11,6 +11,7 @@ params { // References for test data fasta = "https://github.com/nf-cmgg/test-datasets/raw/germline/data/genomics/homo_sapiens/genome/hg38_chr21_22000000_23000000.fasta" + elfasta = "https://github.com/nf-cmgg/test-datasets/raw/germline/data/genomics/homo_sapiens/genome/hg38_chr21_22000000_23000000.elfasta" fai = "https://github.com/nf-cmgg/test-datasets/raw/germline/data/genomics/homo_sapiens/genome/hg38_chr21_22000000_23000000.fasta.fai" dict = "https://github.com/nf-cmgg/test-datasets/raw/germline/data/genomics/homo_sapiens/genome/hg38_chr21_22000000_23000000.dict" sdf = "https://github.com/nf-cmgg/test-datasets/raw/germline/data/genomics/homo_sapiens/genome/hg38_chr21_22000000_23000000_sdf.tar.gz" @@ -31,6 +32,13 @@ params { cram3 = "https://github.com/nf-cmgg/test-datasets/raw/germline/data/genomics/homo_sapiens/illumina/crams/NA24385.cram" crai3 = "https://github.com/nf-cmgg/test-datasets/raw/germline/data/genomics/homo_sapiens/illumina/crams/NA24385.cram.crai" + bam1 = "https://github.com/nf-cmgg/test-datasets/raw/germline/data/genomics/homo_sapiens/illumina/bams/NA24143.bam" + bai1 = "https://github.com/nf-cmgg/test-datasets/raw/germline/data/genomics/homo_sapiens/illumina/bams/NA24143.bam.bai" + bam2 = "https://github.com/nf-cmgg/test-datasets/raw/germline/data/genomics/homo_sapiens/illumina/bams/NA24149.bam" + bai2 = "https://github.com/nf-cmgg/test-datasets/raw/germline/data/genomics/homo_sapiens/illumina/bams/NA24149.bam.bai" + bam3 = "https://github.com/nf-cmgg/test-datasets/raw/germline/data/genomics/homo_sapiens/illumina/bams/NA24385.bam" + bai3 = "https://github.com/nf-cmgg/test-datasets/raw/germline/data/genomics/homo_sapiens/illumina/bams/NA24385.bam.bai" + vcf1 = "https://github.com/nf-cmgg/test-datasets/raw/germline/data/genomics/homo_sapiens/illumina/vcfs/NA24143.vcf.gz" tbi1 = "https://github.com/nf-cmgg/test-datasets/raw/germline/data/genomics/homo_sapiens/illumina/vcfs/NA24143.vcf.gz.tbi" vcf2 = "https://github.com/nf-cmgg/test-datasets/raw/germline/data/genomics/homo_sapiens/illumina/vcfs/NA24149.vcf.gz" diff --git a/tests/subworkflows/local/cram_call_vardictjava/main.nf.test b/tests/subworkflows/local/bam_call_vardictjava/main.nf.test similarity index 58% rename from tests/subworkflows/local/cram_call_vardictjava/main.nf.test rename to tests/subworkflows/local/bam_call_vardictjava/main.nf.test index 05798304..6615e3ab 100644 --- a/tests/subworkflows/local/cram_call_vardictjava/main.nf.test +++ b/tests/subworkflows/local/bam_call_vardictjava/main.nf.test @@ -1,16 +1,16 @@ nextflow_workflow { - name "Test Workflow CRAM_CALL_VARDICTJAVA" - script "subworkflows/local/cram_call_vardictjava/main.nf" - workflow "CRAM_CALL_VARDICTJAVA" + name "Test Workflow BAM_CALL_VARDICTJAVA" + script "subworkflows/local/bam_call_vardictjava/main.nf" + workflow "BAM_CALL_VARDICTJAVA" tag "subworkflows" tag "subworkflows_local" - tag "cram_call_vardictjava" + tag "bam_call_vardictjava" tag "vcf_concat_bcftools" tag "vcf_filter_bcftools" - test("cram_call_vardictjava - default") { + test("bam_call_vardictjava - default") { when { @@ -20,37 +20,32 @@ nextflow_workflow { workflow { """ input[0] = Channel.of([ - [id:"NA24143", sample:"NA24143", family:"Ashkenazim", family_samples:"NA24143"], - file(params.cram1, checkIfExists:true), - file(params.crai1, checkIfExists:true) - ]) - input[1] = Channel.of([ [id:"NA24143.00001", sample:"NA24143", family:"Ashkenazim", family_samples:"NA24143", split_count:3], - file(params.cram1, checkIfExists:true), - file(params.crai1, checkIfExists:true), + file(params.bam1, checkIfExists:true), + file(params.bai1, checkIfExists:true), file(params.split1, checkIfExists:true) ],[ [id:"NA24143.00002", sample:"NA24143", family:"Ashkenazim", family_samples:"NA24143", split_count:3], - file(params.cram1, checkIfExists:true), - file(params.crai1, checkIfExists:true), + file(params.bam1, checkIfExists:true), + file(params.bai1, checkIfExists:true), file(params.split2, checkIfExists:true) ],[ [id:"NA24143.00003", sample:"NA24143", family:"Ashkenazim", family_samples:"NA24143", split_count:3], - file(params.cram1, checkIfExists:true), - file(params.crai1, checkIfExists:true), + file(params.bam1, checkIfExists:true), + file(params.bai1, checkIfExists:true), file(params.split3, checkIfExists:true) ]) - input[2] = Channel.value([ + input[1] = Channel.value([ [id:"fasta"], file(params.fasta, checkIfExists:true) ]) - input[3] = Channel.value([ + input[2] = Channel.value([ [id:"fai"], file(params.fai, checkIfExists:true) ]) + input[3] = [[],[]] input[4] = [[],[]] - input[5] = [[],[]] - input[6] = false + input[5] = false """ } } @@ -59,14 +54,14 @@ nextflow_workflow { assertAll( { assert workflow.success }, { assert snapshot( - workflow.out.vcfs.collect { it.collect { it instanceof Map ? it : file(it).name } } + workflow.out.vcfs.collect { [it[0], "${file(it[1]).name},variantsMD5:${path(it[1]).vcf.variantsMD5}", file(it[2]).name] } ).match("default") } ) } } - test("cram_call_vardictjava - filter") { + test("bam_call_vardictjava - filter") { when { @@ -77,37 +72,32 @@ nextflow_workflow { workflow { """ input[0] = Channel.of([ - [id:"NA24143", sample:"NA24143", family:"Ashkenazim", family_samples:"NA24143"], - file(params.cram1, checkIfExists:true), - file(params.crai1, checkIfExists:true) - ]) - input[1] = Channel.of([ [id:"NA24143.00001", sample:"NA24143", family:"Ashkenazim", family_samples:"NA24143", split_count:3], - file(params.cram1, checkIfExists:true), - file(params.crai1, checkIfExists:true), + file(params.bam1, checkIfExists:true), + file(params.bai1, checkIfExists:true), file(params.split1, checkIfExists:true) ],[ [id:"NA24143.00002", sample:"NA24143", family:"Ashkenazim", family_samples:"NA24143", split_count:3], - file(params.cram1, checkIfExists:true), - file(params.crai1, checkIfExists:true), + file(params.bam1, checkIfExists:true), + file(params.bai1, checkIfExists:true), file(params.split2, checkIfExists:true) ],[ [id:"NA24143.00003", sample:"NA24143", family:"Ashkenazim", family_samples:"NA24143", split_count:3], - file(params.cram1, checkIfExists:true), - file(params.crai1, checkIfExists:true), + file(params.bam1, checkIfExists:true), + file(params.bai1, checkIfExists:true), file(params.split3, checkIfExists:true) ]) - input[2] = Channel.value([ + input[1] = Channel.value([ [id:"fasta"], file(params.fasta, checkIfExists:true) ]) - input[3] = Channel.value([ + input[2] = Channel.value([ [id:"fai"], file(params.fai, checkIfExists:true) ]) + input[3] = [[],[]] input[4] = [[],[]] - input[5] = [[],[]] - input[6] = true + input[5] = true """ } } @@ -116,14 +106,14 @@ nextflow_workflow { assertAll( { assert workflow.success }, { assert snapshot( - workflow.out.vcfs.collect { it.collect { it instanceof Map ? it : file(it).name } } + workflow.out.vcfs.collect { [it[0], "${file(it[1]).name},variantsMD5:${path(it[1]).vcf.variantsMD5}", file(it[2]).name] } ).match("filter") } ) } } - test("cram_call_vardictjava - family") { + test("bam_call_vardictjava - family") { // The family should not be merged here when { @@ -133,56 +123,47 @@ nextflow_workflow { workflow { """ input[0] = Channel.of([ - [id:"NA24143", sample:"NA24143", family:"Ashkenazim", family_samples:"NA24143,NA24149"], - file(params.cram1, checkIfExists:true), - file(params.crai1, checkIfExists:true) - ],[ - [id:"NA24149", sample:"NA24149", family:"Ashkenazim", family_samples:"NA24143,NA24149"], - file(params.cram2, checkIfExists:true), - file(params.crai2, checkIfExists:true) - ]) - input[1] = Channel.of([ [id:"NA24143.00001", sample:"NA24143", family:"Ashkenazim", family_samples:"NA24143,NA24149", split_count:3], - file(params.cram1, checkIfExists:true), - file(params.crai1, checkIfExists:true), + file(params.bam1, checkIfExists:true), + file(params.bai1, checkIfExists:true), file(params.split1, checkIfExists:true) ],[ [id:"NA24143.00002", sample:"NA24143", family:"Ashkenazim", family_samples:"NA24143,NA24149", split_count:3], - file(params.cram1, checkIfExists:true), - file(params.crai1, checkIfExists:true), + file(params.bam1, checkIfExists:true), + file(params.bai1, checkIfExists:true), file(params.split2, checkIfExists:true) ],[ [id:"NA24143.00003", sample:"NA24143", family:"Ashkenazim", family_samples:"NA24143,NA24149", split_count:3], - file(params.cram1, checkIfExists:true), - file(params.crai1, checkIfExists:true), + file(params.bam1, checkIfExists:true), + file(params.bai1, checkIfExists:true), file(params.split3, checkIfExists:true) ],[ [id:"NA24149.00001", sample:"NA24149", family:"Ashkenazim", family_samples:"NA24143,NA24149", split_count:3], - file(params.cram2, checkIfExists:true), - file(params.crai2, checkIfExists:true), + file(params.bam2, checkIfExists:true), + file(params.bai2, checkIfExists:true), file(params.split1, checkIfExists:true) ],[ [id:"NA24149.00002", sample:"NA24149", family:"Ashkenazim", family_samples:"NA24143,NA24149", split_count:3], - file(params.cram2, checkIfExists:true), - file(params.crai2, checkIfExists:true), + file(params.bam2, checkIfExists:true), + file(params.bai2, checkIfExists:true), file(params.split2, checkIfExists:true) ],[ [id:"NA24149.00003", sample:"NA24149", family:"Ashkenazim", family_samples:"NA24143,NA24149", split_count:3], - file(params.cram2, checkIfExists:true), - file(params.crai2, checkIfExists:true), + file(params.bam2, checkIfExists:true), + file(params.bai2, checkIfExists:true), file(params.split3, checkIfExists:true) ]) - input[2] = Channel.value([ + input[1] = Channel.value([ [id:"fasta"], file(params.fasta, checkIfExists:true) ]) - input[3] = Channel.value([ + input[2] = Channel.value([ [id:"fai"], file(params.fai, checkIfExists:true) ]) + input[3] = [[],[]] input[4] = [[],[]] - input[5] = [[],[]] - input[6] = false + input[5] = false """ } } @@ -191,7 +172,7 @@ nextflow_workflow { assertAll( { assert workflow.success }, { assert snapshot( - workflow.out.vcfs.collect { it.collect { it instanceof Map ? it : file(it).name } } + workflow.out.vcfs.collect { [it[0], "${file(it[1]).name},variantsMD5:${path(it[1]).vcf.variantsMD5}", file(it[2]).name] } ).match("family") } ) } diff --git a/tests/subworkflows/local/cram_call_vardictjava/main.nf.test.snap b/tests/subworkflows/local/bam_call_vardictjava/main.nf.test.snap similarity index 79% rename from tests/subworkflows/local/cram_call_vardictjava/main.nf.test.snap rename to tests/subworkflows/local/bam_call_vardictjava/main.nf.test.snap index a476cb3c..8ae2d467 100644 --- a/tests/subworkflows/local/cram_call_vardictjava/main.nf.test.snap +++ b/tests/subworkflows/local/bam_call_vardictjava/main.nf.test.snap @@ -10,7 +10,7 @@ "family_samples": "NA24143", "caller": "vardict" }, - "NA24143.vardict.vcf.gz", + "NA24143.vardict.vcf.gz,variantsMD5:98497d2c15c6e3781f5ddeb81bf6288f", "NA24143.vardict.vcf.gz.tbi" ] ] @@ -19,7 +19,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-09-05T17:38:01.461442987" + "timestamp": "2024-10-23T11:17:08.827619348" }, "default": { "content": [ @@ -32,7 +32,7 @@ "family_samples": "NA24143", "caller": "vardict" }, - "NA24143.vardict.vcf.gz", + "NA24143.vardict.vcf.gz,variantsMD5:98497d2c15c6e3781f5ddeb81bf6288f", "NA24143.vardict.vcf.gz.tbi" ] ] @@ -41,7 +41,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-09-05T17:37:40.178107639" + "timestamp": "2024-10-23T11:16:29.818590197" }, "family": { "content": [ @@ -54,7 +54,7 @@ "family_samples": "NA24143", "caller": "vardict" }, - "NA24143.vardict.vcf.gz", + "NA24143.vardict.vcf.gz,variantsMD5:98497d2c15c6e3781f5ddeb81bf6288f", "NA24143.vardict.vcf.gz.tbi" ], [ @@ -65,7 +65,7 @@ "family_samples": "NA24149", "caller": "vardict" }, - "NA24149.vardict.vcf.gz", + "NA24149.vardict.vcf.gz,variantsMD5:37c24a3165a79df0b9744e80a9255f83", "NA24149.vardict.vcf.gz.tbi" ] ] @@ -74,6 +74,6 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-08T16:58:11.678281371" + "timestamp": "2024-10-23T11:17:59.686967502" } } \ No newline at end of file diff --git a/tests/subworkflows/local/cram_prepare_samtools_bedtools/main.nf.test b/tests/subworkflows/local/cram_prepare_samtools_bedtools/main.nf.test index 0a69a066..5ca5ffb2 100644 --- a/tests/subworkflows/local/cram_prepare_samtools_bedtools/main.nf.test +++ b/tests/subworkflows/local/cram_prepare_samtools_bedtools/main.nf.test @@ -31,15 +31,22 @@ nextflow_workflow { file(params.fai, checkIfExists:true) ]) input[4] = [] + input[5] = false """ } } then { + def fasta = "https://github.com/nf-cmgg/test-datasets/raw/germline/data/genomics/homo_sapiens/genome/hg38_chr21_22000000_23000000.fasta" assertAll( { assert workflow.success }, { assert snapshot( - workflow.out.ready_crams.collect { it.collect { it instanceof Map ? it : file(it).name } }, + workflow.out.ready_crams.collect { + [ it[0], it[1], file(it[2]).name ] + }, + workflow.out.ready_bams.collect { + [ it[0], "${file(it[1]).name},readsMD5:${bam(it[1]).getReadsMD5()}", file(it[2]).name ] + }, workflow.out.ready_beds, workflow.out.reports ).match("default - WGS") } @@ -71,15 +78,22 @@ nextflow_workflow { file(params.fai, checkIfExists:true) ]) input[4] = Channel.fromPath(params.bed, checkIfExists:true) + input[5] = true """ } } then { + def fasta = "https://github.com/nf-cmgg/test-datasets/raw/germline/data/genomics/homo_sapiens/genome/hg38_chr21_22000000_23000000.fasta" assertAll( { assert workflow.success }, { assert snapshot( - workflow.out.ready_crams.collect { it.collect { it instanceof Map ? it : file(it).name } }, + workflow.out.ready_crams.collect { + [ it[0], it[1], file(it[2]).name ] + }, + workflow.out.ready_bams.collect { + [ it[0], "${file(it[1]).name},readsMD5:${bam(it[1]).getReadsMD5()}", file(it[2]).name ] + }, workflow.out.ready_beds, workflow.out.reports ).match("default - WES common ROI") } @@ -111,15 +125,22 @@ nextflow_workflow { file(params.fai, checkIfExists:true) ]) input[4] = [] + input[5] = false """ } } then { + def fasta = "https://github.com/nf-cmgg/test-datasets/raw/germline/data/genomics/homo_sapiens/genome/hg38_chr21_22000000_23000000.fasta" assertAll( { assert workflow.success }, { assert snapshot( - workflow.out.ready_crams.collect { it.collect { it instanceof Map ? it : file(it).name } }, + workflow.out.ready_crams.collect { + [ it[0], it[1], file(it[2]).name ] + }, + workflow.out.ready_bams.collect { + [ it[0], "${file(it[1]).name},readsMD5:${bam(it[1]).getReadsMD5()}", file(it[2]).name ] + }, workflow.out.ready_beds, workflow.out.reports ).match("default - WES") } @@ -158,6 +179,7 @@ nextflow_workflow { file(params.fai, checkIfExists:true) ]) input[4] = [] + input[5] = true """ } } @@ -168,7 +190,10 @@ nextflow_workflow { { assert workflow.success }, { assert snapshot( workflow.out.ready_crams.collect { - [ it[0], cram(it[1], fasta).reads.size(), file(it[2]).name ] + [ it[0], "${file(it[1]).name},readsMD5:${cram(it[1], fasta).getReadsMD5()}", file(it[2]).name ] + }, + workflow.out.ready_bams.collect { + [ it[0], "${file(it[1]).name},readsMD5:${bam(it[1]).getReadsMD5()}", file(it[2]).name ] }, workflow.out.ready_beds, workflow.out.reports diff --git a/tests/subworkflows/local/cram_prepare_samtools_bedtools/main.nf.test.snap b/tests/subworkflows/local/cram_prepare_samtools_bedtools/main.nf.test.snap index cbd7535e..8fabe768 100644 --- a/tests/subworkflows/local/cram_prepare_samtools_bedtools/main.nf.test.snap +++ b/tests/subworkflows/local/cram_prepare_samtools_bedtools/main.nf.test.snap @@ -10,10 +10,23 @@ "family_samples": "NA24143", "duplicate_count": 2 }, - 798258, + "NA24143.cram,readsMD5:be28f434d6f7bcfa398488a6611d89c1", "NA24143.cram.crai" ] ], + [ + [ + { + "id": "NA24143", + "sample": "NA24143", + "family": "Ashkenazim", + "family_samples": "NA24143", + "duplicate_count": 2 + }, + "NA24143.bam,readsMD5:be28f434d6f7bcfa398488a6611d89c1", + "NA24143.bam.bai" + ] + ], [ [ { @@ -34,7 +47,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-09-23T11:46:20.577603661" + "timestamp": "2024-10-23T10:19:20.53195135" }, "default - WGS": { "content": [ @@ -47,9 +60,12 @@ "family_samples": "NA24143", "duplicate_count": 1 }, - "NA24143.cram", + "/nf-cmgg/test-datasets/raw/germline/data/genomics/homo_sapiens/illumina/crams/NA24143.cram", "NA24143.cram.crai" ] + ], + [ + ], [ [ @@ -71,7 +87,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-09-23T14:56:11.141634788" + "timestamp": "2024-10-23T10:17:48.433466279" }, "default - WES": { "content": [ @@ -84,9 +100,12 @@ "family_samples": "NA24143", "duplicate_count": 1 }, - "NA24143.cram", + "/nf-cmgg/test-datasets/raw/germline/data/genomics/homo_sapiens/illumina/crams/NA24143.cram", "NA24143.cram.crai" ] + ], + [ + ], [ [ @@ -108,7 +127,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-09-06T14:33:15.988619426" + "timestamp": "2024-10-23T10:18:36.993186258" }, "default - WES common ROI": { "content": [ @@ -121,10 +140,23 @@ "family_samples": "NA24143", "duplicate_count": 1 }, - "NA24143.cram", + "/nf-cmgg/test-datasets/raw/germline/data/genomics/homo_sapiens/illumina/crams/NA24143.cram", "NA24143.cram.crai" ] ], + [ + [ + { + "id": "NA24143", + "sample": "NA24143", + "family": "Ashkenazim", + "family_samples": "NA24143", + "duplicate_count": 1 + }, + "NA24143.bam,readsMD5:77afffb023e537869c5c6ebf31187ded", + "NA24143.bam.bai" + ] + ], [ [ { @@ -145,6 +177,6 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-09-06T14:32:49.756585296" + "timestamp": "2024-10-23T10:18:13.865281894" } } \ No newline at end of file diff --git a/workflows/germline.nf b/workflows/germline.nf index f7c91c18..8b56079a 100644 --- a/workflows/germline.nf +++ b/workflows/germline.nf @@ -18,7 +18,7 @@ include { methodsDescriptionText } from '../subworkflows/local/utils_ include { CRAM_PREPARE_SAMTOOLS_BEDTOOLS } from '../subworkflows/local/cram_prepare_samtools_bedtools/main' include { INPUT_SPLIT_BEDTOOLS } from '../subworkflows/local/input_split_bedtools/main' include { CRAM_CALL_GENOTYPE_GATK4 } from '../subworkflows/local/cram_call_genotype_gatk4/main' -include { CRAM_CALL_VARDICTJAVA } from '../subworkflows/local/cram_call_vardictjava/main' +include { BAM_CALL_VARDICTJAVA } from '../subworkflows/local/bam_call_vardictjava/main' include { VCF_EXTRACT_RELATE_SOMALIER } from '../subworkflows/local/vcf_extract_relate_somalier/main' include { VCF_PED_RTGTOOLS } from '../subworkflows/local/vcf_ped_rtgtools/main' include { VCF_ANNOTATION } from '../subworkflows/local/vcf_annotation/main' @@ -358,7 +358,8 @@ workflow GERMLINE { // // Run sample preparation // - + + def create_bam_files = callers.intersect(GlobalVariables.bamCallers).size() > 0 // Only create BAM files when needed CRAM_PREPARE_SAMTOOLS_BEDTOOLS( ch_input.cram.filter { meta, _cram, _crai -> // Filter out files that already have a called GVCF when only GVCF callers are used @@ -370,7 +371,8 @@ workflow GERMLINE { }, ch_fasta_ready, ch_fai_ready, - ch_default_roi + ch_default_roi, + create_bam_files ) ch_versions = ch_versions.mix(CRAM_PREPARE_SAMTOOLS_BEDTOOLS.out.versions) @@ -378,6 +380,14 @@ workflow GERMLINE { // Split the BED files // + def ch_split_cram_bam = Channel.empty() + if(create_bam_files) { + ch_split_cram_bam = CRAM_PREPARE_SAMTOOLS_BEDTOOLS.out.ready_crams + .join(CRAM_PREPARE_SAMTOOLS_BEDTOOLS.out.ready_bams, failOnDuplicate:true, failOnMismatch:true) + } else { + ch_split_cram_bam = CRAM_PREPARE_SAMTOOLS_BEDTOOLS.out.ready_crams + } + INPUT_SPLIT_BEDTOOLS( CRAM_PREPARE_SAMTOOLS_BEDTOOLS.out.ready_beds.map { meta, bed -> [meta, bed, scatter_count] @@ -386,6 +396,12 @@ workflow GERMLINE { ) ch_versions = ch_versions.mix(INPUT_SPLIT_BEDTOOLS.out.versions) + def ch_caller_inputs = INPUT_SPLIT_BEDTOOLS.out.split + .multiMap { meta, cram, crai, bam=[], bai=[], bed -> + cram: [meta, cram, crai, bed] + bam: [meta, bam, bai, bed] + } + def ch_calls = Channel.empty() if("haplotypecaller" in callers) { // @@ -393,7 +409,7 @@ workflow GERMLINE { // CRAM_CALL_GENOTYPE_GATK4( - INPUT_SPLIT_BEDTOOLS.out.split.filter { meta, _cram, _crai, _bed -> + ch_caller_inputs.cram.filter { meta, _cram, _crai, _bed -> // Filter out the entries that already have a GVCF meta.type == "cram" }, @@ -422,18 +438,17 @@ workflow GERMLINE { // Call variants with VarDict // - CRAM_CALL_VARDICTJAVA( - CRAM_PREPARE_SAMTOOLS_BEDTOOLS.out.ready_crams, - INPUT_SPLIT_BEDTOOLS.out.split, + BAM_CALL_VARDICTJAVA( + ch_caller_inputs.bam, ch_fasta_ready, ch_fai_ready, ch_dbsnp_ready, ch_dbsnp_tbi_ready, filter ) - ch_versions = ch_versions.mix(CRAM_CALL_VARDICTJAVA.out.versions) + ch_versions = ch_versions.mix(BAM_CALL_VARDICTJAVA.out.versions) - ch_calls = ch_calls.mix(CRAM_CALL_VARDICTJAVA.out.vcfs) + ch_calls = ch_calls.mix(BAM_CALL_VARDICTJAVA.out.vcfs) } def ch_called_variants = ch_calls From ebb363095ada4fdcc4bc766fc7a50ed5614c13b9 Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Wed, 23 Oct 2024 12:01:58 +0200 Subject: [PATCH 052/167] separate dbnsp annotation from vardictjava subwf --- .../local/bam_call_vardictjava/main.nf | 35 +++----------- subworkflows/local/vcf_dbsnp_vcfanno/main.nf | 47 +++++++++++++++++++ 2 files changed, 53 insertions(+), 29 deletions(-) create mode 100644 subworkflows/local/vcf_dbsnp_vcfanno/main.nf diff --git a/subworkflows/local/bam_call_vardictjava/main.nf b/subworkflows/local/bam_call_vardictjava/main.nf index 4ba412ce..1308cf03 100644 --- a/subworkflows/local/bam_call_vardictjava/main.nf +++ b/subworkflows/local/bam_call_vardictjava/main.nf @@ -7,6 +7,7 @@ include { BCFTOOLS_STATS } from '../../../modules/nf-core/bcf include { VCF_CONCAT_BCFTOOLS } from '../vcf_concat_bcftools/main' include { VCF_FILTER_BCFTOOLS } from '../vcf_filter_bcftools/main' +include { VCF_DBSNP_VCFANNO } from '../vcf_dbsnp_vcfanno/main' workflow BAM_CALL_VARDICTJAVA { take: @@ -38,28 +39,12 @@ workflow BAM_CALL_VARDICTJAVA { def ch_annotated = Channel.empty() if(!(ch_dbsnp instanceof List)) { - ch_dbsnp.map { _meta, dbsnp -> [ get_vcfanno_config(dbsnp) ] } - .collect() - .set { ch_vcfanno_toml } // Set needs to be used here due to some Nextflow bug - - ch_dbsnp.map { _meta, dbsnp -> dbsnp } - .combine(ch_dbsnp_tbi.map { _meta, tbi -> tbi }) - .collect() - .set { ch_vcfanno_resources } // Set needs to be used here due to some Nextflow bug - - VCFANNO( - VCF_CONCAT_BCFTOOLS.out.vcfs.map { meta, vcf -> [ meta, vcf, [], [] ] }, - ch_vcfanno_toml, - [], - ch_vcfanno_resources - ) - ch_versions = ch_versions.mix(VCFANNO.out.versions.first()) - - TABIX_BGZIP( - VCFANNO.out.vcf + VCF_DBNSP_VCFANNO( + VCF_CONCAT_BCFTOOLS.out.vcfs, + ch_dbsnp, + ch_dbsnp_tbi ) - ch_versions = ch_versions.mix(TABIX_BGZIP.out.versions.first()) - + ch_versions = ch_versions.mix(VCF_DBSNP_VCFANNO.out.versions) ch_annotated = TABIX_BGZIP.out.output } else { ch_annotated = VCF_CONCAT_BCFTOOLS.out.vcfs @@ -95,11 +80,3 @@ workflow BAM_CALL_VARDICTJAVA { versions = ch_versions // channel: [ path(versions.yml) ] } - -def get_vcfanno_config(vcf) { - def old_toml = file("${projectDir}/assets/dbsnp.toml", checkIfExists: true) - old_toml.copyTo("${workDir}/vcfanno/dbsnp.toml") - def new_toml = file("${workDir}/vcfanno/dbsnp.toml") - new_toml.text = old_toml.text.replace("DBSNP_FILE", vcf.getName()) - return new_toml -} diff --git a/subworkflows/local/vcf_dbsnp_vcfanno/main.nf b/subworkflows/local/vcf_dbsnp_vcfanno/main.nf new file mode 100644 index 00000000..409ac005 --- /dev/null +++ b/subworkflows/local/vcf_dbsnp_vcfanno/main.nf @@ -0,0 +1,47 @@ +include { VCFANNO } from '../../../modules/nf-core/vcfanno/main' + +workflow VCF_DBSNP_VCFANNO { + take: + ch_input // channel: [mandatory] [ val(meta), path(vcf), path(tbi), ] => VCF files to be annotated + ch_dbsnp // channel: [optional] [ path(vcf) ] => the dbnsp vcf file + ch_dbsnp_tbi // channel: [optional] [ path(tbi) ] => the dbsnp vcf index file + + main: + def ch_versions = Channel.empty() + + def ch_vcfanno_toml = ch_dbsnp.map { _meta, dbsnp -> [ get_vcfanno_config(dbsnp) ] } + .collect() + + def ch_vcfanno_resources = ch_dbsnp.map { _meta, dbsnp -> dbsnp } + .combine(ch_dbsnp_tbi.map { _meta, tbi -> tbi }) + .collect() + + VCFANNO( + ch_input.map { meta, vcf -> [ meta, vcf, [], [] ] }, + ch_vcfanno_toml, + [], + ch_vcfanno_resources + ) + ch_versions = ch_versions.mix(VCFANNO.out.versions.first()) + + TABIX_BGZIP( + VCFANNO.out.vcf + ) + ch_versions = ch_versions.mix(TABIX_BGZIP.out.versions.first()) + + def ch_vcfs = TABIX_BGZIP.out.output + + emit: + vcfs = ch_vcfs // channel: [ val(meta), path(vcf), path(tbi) ] + + versions = ch_versions // channel: [ path(versions.yml) ] + +} + +def get_vcfanno_config(vcf) { + def old_toml = file("${projectDir}/assets/dbsnp.toml", checkIfExists: true) + old_toml.copyTo("${workDir}/vcfanno/dbsnp.toml") + def new_toml = file("${workDir}/vcfanno/dbsnp.toml") + new_toml.text = old_toml.text.replace("DBSNP_FILE", vcf.getName()) + return new_toml +} From 6a35da1e21997ee5fc7d35ea19aaad89eac8649a Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Wed, 23 Oct 2024 14:19:40 +0200 Subject: [PATCH 053/167] move filtering to the main wf --- conf/modules.config | 62 ++++++++++--------- .../local/bam_call_vardictjava/main.nf | 22 +------ .../local/cram_call_genotype_gatk4/main.nf | 23 +------ workflows/germline.nf | 17 ++++- 4 files changed, 54 insertions(+), 70 deletions(-) diff --git a/conf/modules.config b/conf/modules.config index 65276d4d..51749247 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -251,23 +251,6 @@ process { ] // SAVE } - withName: "^.*CRAM_CALL_GENOTYPE_GATK4:VCF_FILTER_BCFTOOLS:FILTER_1\$" { - ext.prefix = { "${meta.id}_filtered_snps" } - ext.args = {"--output-type z --soft-filter 'GATKCutoffSNP' -e 'TYPE=\"snp\" && (MQRankSum < -12.5 || ReadPosRankSum < -8.0 || QD < 2.0 || FS > 60.0 || MQ < 30.0)' -m '+'"} - } - - withName: "^.*CRAM_CALL_GENOTYPE_GATK4:VCF_FILTER_BCFTOOLS:FILTER_2\$" { - ext.prefix = enableOutput("filter") ? final_prefix : {"${meta.id}.filtered"} - ext.args = {'--output-type z --soft-filter \'GATKCutoffIndel\' -e \'TYPE="indel" && (ReadPosRankSum < -20.0 || QD < 2.0 || FS > 200.0 || SOR > 10.0 )\' -m \'+\''} - publishDir = [ - enabled: enableOutput("filter"), - overwrite: true, - path: final_output, - mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } - ] // SAVE - } - /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ VARDICTJAVA @@ -314,27 +297,50 @@ process { ] // SAVE } - withName: "^.*BAM_CALL_VARDICTJAVA:VCF_FILTER_BCFTOOLS:FILTER_1\$" { - ext.prefix = { "${meta.id}.filtered1" } - ext.args = "-i 'QUAL >= 0${params.only_pass ? " && FILTER=\"PASS\"" : ""}' --output-type z" - } - - withName: "^.*BAM_CALL_VARDICTJAVA:VCF_FILTER_BCFTOOLS:FILTER_2\$" { - ext.args = "--soft-filter 'LowFreqBias' --mode '+' -e 'FORMAT/AF[0:*] < 0.02 && FORMAT/VD[0] < 30 && INFO/SBF < 0.1 && INFO/NM >= 2.0' --output-type z" - ext.prefix = enableOutput("filter") ? final_prefix : {"${meta.id}.filtered"} + withName: "^.*BAM_CALL_VARDICTJAVA:TABIX_TABIX\$" { publishDir = [ overwrite: true, - enabled: enableOutput("filter"), + enabled: enableOutput("filter") || enableOutput("original"), mode: params.publish_dir_mode, path: final_output, saveAs: { filename -> filename.equals('versions.yml') ? null : filename } ] // SAVE } - withName: "^.*BAM_CALL_VARDICTJAVA:TABIX_TABIX\$" { + /* + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + FILTER + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + */ + + withName: "^.*VCF_FILTER_BCFTOOLS:FILTER_1\$" { + ext.prefix = { "${meta.id}.filtered1" } + ext.args = { + meta.caller == "vardict" ? + "-i 'QUAL >= 0${params.only_pass ? " && FILTER=\"PASS\"" : ""}' --output-type z": + meta.caller == "haplotypecaller" ? + "--output-type z --soft-filter 'GATKCutoffSNP' -e 'TYPE=\"snp\" && (MQRankSum < -12.5 || ReadPosRankSum < -8.0 || QD < 2.0 || FS > 60.0 || MQ < 30.0)' -m '+'": + meta.caller == "elprep" ? + "--output-type z --soft-filter 'GATKCutoffSNP' -e 'TYPE=\"snp\" && (MQRankSum < -12.5 || ReadPosRankSum < -8.0 || QD < 2.0 || FS > 60.0 || MQ < 30.0)' -m '+'": + "" + } + } + + withName: "^.*VCF_FILTER_BCFTOOLS:FILTER_2\$" { + ext.args = { + meta.caller == "vardict" ? + "--soft-filter 'LowFreqBias' --mode '+' -e 'FORMAT/AF[0:*] < 0.02 && FORMAT/VD[0] < 30 && INFO/SBF < 0.1 && INFO/NM >= 2.0' --output-type z" : + meta.caller == "haplotypecaller" ? + '--output-type z --soft-filter \'GATKCutoffIndel\' -e \'TYPE="indel" && (ReadPosRankSum < -20.0 || QD < 2.0 || FS > 200.0 || SOR > 10.0 )\' -m \'+\'' : + meta.caller == "elprep" ? + '--output-type z --soft-filter \'GATKCutoffIndel\' -e \'TYPE="indel" && (ReadPosRankSum < -20.0 || QD < 2.0 || FS > 200.0 || SOR > 10.0 )\' -m \'+\'' : + "" + + } + ext.prefix = enableOutput("filter") ? final_prefix : {"${meta.id}.filtered"} publishDir = [ overwrite: true, - enabled: enableOutput("filter") || enableOutput("original"), + enabled: enableOutput("filter"), mode: params.publish_dir_mode, path: final_output, saveAs: { filename -> filename.equals('versions.yml') ? null : filename } diff --git a/subworkflows/local/bam_call_vardictjava/main.nf b/subworkflows/local/bam_call_vardictjava/main.nf index 1308cf03..83c4d78a 100644 --- a/subworkflows/local/bam_call_vardictjava/main.nf +++ b/subworkflows/local/bam_call_vardictjava/main.nf @@ -33,7 +33,7 @@ workflow BAM_CALL_VARDICTJAVA { VCF_CONCAT_BCFTOOLS( VARDICTJAVA.out.vcf, - false + true ) ch_versions = ch_versions.mix(VCF_CONCAT_BCFTOOLS.out.versions) @@ -50,25 +50,7 @@ workflow BAM_CALL_VARDICTJAVA { ch_annotated = VCF_CONCAT_BCFTOOLS.out.vcfs } - def ch_filter_output = Channel.empty() - if(filter) { - VCF_FILTER_BCFTOOLS( - ch_annotated, - false - ) - ch_versions = ch_versions.mix(VCF_FILTER_BCFTOOLS.out.versions) - ch_filter_output = VCF_FILTER_BCFTOOLS.out.vcfs - } else { - ch_filter_output = ch_annotated - } - - TABIX_TABIX( - ch_filter_output - ) - ch_versions = ch_versions.mix(TABIX_TABIX.out.versions.first()) - - def ch_vcfs = ch_filter_output - .join(TABIX_TABIX.out.tbi, failOnDuplicate: true, failOnMismatch: true) + def ch_vcfs = ch_annotated .map { meta, vcf, tbi -> def new_meta = meta + [family_samples: meta.sample] [ new_meta, vcf, tbi ] diff --git a/subworkflows/local/cram_call_genotype_gatk4/main.nf b/subworkflows/local/cram_call_genotype_gatk4/main.nf index 910baed6..46062b9e 100644 --- a/subworkflows/local/cram_call_genotype_gatk4/main.nf +++ b/subworkflows/local/cram_call_genotype_gatk4/main.nf @@ -4,7 +4,6 @@ include { CRAM_CALL_GATK4 } from '../cram_call_gatk4/main' include { GVCF_JOINT_GENOTYPE_GATK4 } from '../gvcf_joint_genotype_gatk4/main' -include { VCF_FILTER_BCFTOOLS } from '../vcf_filter_bcftools/main' workflow CRAM_CALL_GENOTYPE_GATK4 { take: @@ -64,26 +63,10 @@ workflow CRAM_CALL_GENOTYPE_GATK4 { } - if(!only_call && !only_merge) { - - if(filter) { - VCF_FILTER_BCFTOOLS( - GVCF_JOINT_GENOTYPE_GATK4.out.vcfs, - true - ) - ch_versions = ch_versions.mix(VCF_FILTER_BCFTOOLS.out.versions) - - ch_vcfs = VCF_FILTER_BCFTOOLS.out.vcfs - } else { - ch_vcfs = GVCF_JOINT_GENOTYPE_GATK4.out.vcfs - } - - } - emit: - vcfs = ch_vcfs // channel: [ val(meta), path(vcf), path(tbi) ] + vcfs = GVCF_JOINT_GENOTYPE_GATK4.out.vcfs // channel: [ val(meta), path(vcf), path(tbi) ] - reports = ch_reports // channel: [ path(reports) ] - versions = ch_versions // channel: [ versions.yml ] + reports = ch_reports // channel: [ path(reports) ] + versions = ch_versions // channel: [ versions.yml ] } diff --git a/workflows/germline.nf b/workflows/germline.nf index 8b56079a..d5fb56b7 100644 --- a/workflows/germline.nf +++ b/workflows/germline.nf @@ -25,6 +25,7 @@ include { VCF_ANNOTATION } from '../subworkflows/local/vcf_an include { VCF_VALIDATE_SMALL_VARIANTS } from '../subworkflows/local/vcf_validate_small_variants/main' include { VCF_UPD_UPDIO } from '../subworkflows/local/vcf_upd_updio/main' include { VCF_ROH_AUTOMAP } from '../subworkflows/local/vcf_roh_automap/main' +include { VCF_FILTER_BCFTOOLS } from '../subworkflows/local/vcf_filter_bcftools/main' /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -468,10 +469,22 @@ workflow GERMLINE { ch_versions = ch_versions.mix(BCFTOOLS_STATS.out.versions.first()) ch_reports = ch_reports.mix(BCFTOOLS_STATS.out.stats.collect { _meta, report -> report }) + def ch_filtered_variants = Channel.empty() + if(filter) { + VCF_FILTER_BCFTOOLS( + ch_called_variants, + true + ) + ch_versions = ch_versions.mix(VCF_FILTER_BCFTOOLS.out.versions) + ch_filtered_variants = VCF_FILTER_BCFTOOLS.out.vcfs + } else { + ch_filtered_variants = ch_called_variants + } + def ch_normalized_variants = Channel.empty() if(normalize) { BCFTOOLS_NORM( - ch_called_variants, + ch_filtered_variants, ch_fasta_ready, ) ch_versions = ch_versions.mix(BCFTOOLS_NORM.out.versions.first()) @@ -484,7 +497,7 @@ workflow GERMLINE { ch_normalized_variants = BCFTOOLS_NORM.out.vcf .join(TABIX_NORMALIZE.out.tbi, failOnDuplicate:true, failOnMismatch:true) } else { - ch_normalized_variants = ch_called_variants + ch_normalized_variants = ch_filtered_variants } if(!only_merge && !only_call) { From 9350160024f22da4b19544fcbc4b18d990723f6a Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Wed, 23 Oct 2024 14:56:19 +0200 Subject: [PATCH 054/167] move genotyping out of the gatk4 subwf --- .../local/cram_call_genotype_gatk4/main.nf | 72 ------------------- workflows/germline.nf | 38 ++++++---- 2 files changed, 26 insertions(+), 84 deletions(-) delete mode 100644 subworkflows/local/cram_call_genotype_gatk4/main.nf diff --git a/subworkflows/local/cram_call_genotype_gatk4/main.nf b/subworkflows/local/cram_call_genotype_gatk4/main.nf deleted file mode 100644 index 46062b9e..00000000 --- a/subworkflows/local/cram_call_genotype_gatk4/main.nf +++ /dev/null @@ -1,72 +0,0 @@ -// -// Call and genotype variants with GATK4 tooling -// - -include { CRAM_CALL_GATK4 } from '../cram_call_gatk4/main' -include { GVCF_JOINT_GENOTYPE_GATK4 } from '../gvcf_joint_genotype_gatk4/main' - -workflow CRAM_CALL_GENOTYPE_GATK4 { - take: - ch_input // channel: [mandatory] [ val(meta), path(cram), path(crai), path(bed) ] => sample CRAM files and their indexes with the split bed files - ch_gvcfs // channel: [mandatory] [ val(meta), path(gvcf), path(tbi) ] => earlier called GVCFs with their indices - ch_fasta // channel: [mandatory] [ val(meta), path(fasta) ] => fasta reference - ch_fai // channel: [mandatory] [ val(meta), path(fai) ] => fasta reference index - ch_dict // channel: [mandatory] [ val(meta), path(dict) ] => sequence dictionary - ch_strtablefile // channel: [optional] [ path(strtablefile) ] => STR table file - ch_dbsnp // channel: [optional] [ path(dbsnp) ] => The VCF containing the dbsnp variants - ch_dbsnp_tbi // channel: [optional] [ path(dbsnp_tbi) ] => The index of the dbsnp VCF - dragstr // boolean: create a DragSTR model and run haplotypecaller with it - only_call // boolean: only run the variant calling - only_merge // boolean: run until the family merging - filter // boolean: filter the VCFs - scatter_count // integer: the amount of times the VCFs should be scattered - - main: - - def ch_versions = Channel.empty() - def ch_vcfs = Channel.empty() - def ch_reports = Channel.empty() - - CRAM_CALL_GATK4( - ch_input, - ch_fasta, - ch_fai, - ch_dict, - ch_strtablefile, - ch_dbsnp, - ch_dbsnp_tbi, - dragstr - ) - ch_versions = ch_versions.mix(CRAM_CALL_GATK4.out.versions) - ch_reports = ch_reports.mix(CRAM_CALL_GATK4.out.reports) - - def ch_gvcfs_ready = ch_gvcfs - .map { meta, gvcf, tbi -> - def new_meta = meta + [caller:"haplotypecaller"] - [ new_meta, gvcf, tbi ] - } - .mix(CRAM_CALL_GATK4.out.gvcfs) - - if(!only_call) { - - GVCF_JOINT_GENOTYPE_GATK4( - ch_gvcfs_ready, - ch_fasta, - ch_fai, - ch_dict, - ch_dbsnp, - ch_dbsnp_tbi, - only_merge, - scatter_count - ) - ch_versions = ch_versions.mix(GVCF_JOINT_GENOTYPE_GATK4.out.versions) - - } - - emit: - vcfs = GVCF_JOINT_GENOTYPE_GATK4.out.vcfs // channel: [ val(meta), path(vcf), path(tbi) ] - - reports = ch_reports // channel: [ path(reports) ] - versions = ch_versions // channel: [ versions.yml ] - -} diff --git a/workflows/germline.nf b/workflows/germline.nf index d5fb56b7..a7a38c7a 100644 --- a/workflows/germline.nf +++ b/workflows/germline.nf @@ -17,7 +17,8 @@ include { methodsDescriptionText } from '../subworkflows/local/utils_ include { CRAM_PREPARE_SAMTOOLS_BEDTOOLS } from '../subworkflows/local/cram_prepare_samtools_bedtools/main' include { INPUT_SPLIT_BEDTOOLS } from '../subworkflows/local/input_split_bedtools/main' -include { CRAM_CALL_GENOTYPE_GATK4 } from '../subworkflows/local/cram_call_genotype_gatk4/main' +include { CRAM_CALL_GATK4 } from '../subworkflows/local/cram_call_gatk4/main' +include { GVCF_JOINT_GENOTYPE_GATK4 } from '../subworkflows/local/gvcf_joint_genotype_gatk4/main' include { BAM_CALL_VARDICTJAVA } from '../subworkflows/local/bam_call_vardictjava/main' include { VCF_EXTRACT_RELATE_SOMALIER } from '../subworkflows/local/vcf_extract_relate_somalier/main' include { VCF_PED_RTGTOOLS } from '../subworkflows/local/vcf_ped_rtgtools/main' @@ -355,6 +356,10 @@ workflow GERMLINE { def ch_gvcfs_ready = ch_gvcf_branch.no_tbi .join(TABIX_GVCF.out.tbi, failOnDuplicate:true, failOnMismatch:true) .mix(ch_gvcf_branch.tbi) + .map { meta, gvcf, tbi -> + [ meta, gvcf, tbi, callers.intersect(GlobalVariables.gvcfCallers) ] + } + .transpose(by:3) // // Run sample preparation @@ -409,28 +414,22 @@ workflow GERMLINE { // Call variants with GATK4 HaplotypeCaller // - CRAM_CALL_GENOTYPE_GATK4( + CRAM_CALL_GATK4( ch_caller_inputs.cram.filter { meta, _cram, _crai, _bed -> // Filter out the entries that already have a GVCF meta.type == "cram" }, - ch_gvcfs_ready, ch_fasta_ready, ch_fai_ready, ch_dict_ready, ch_strtablefile_ready, ch_dbsnp_ready, ch_dbsnp_tbi_ready, - dragstr, - only_call, - only_merge, - filter, - scatter_count + dragstr ) - ch_versions = ch_versions.mix(CRAM_CALL_GENOTYPE_GATK4.out.versions) - ch_reports = ch_reports.mix(CRAM_CALL_GENOTYPE_GATK4.out.reports) - - ch_calls = ch_calls.mix(CRAM_CALL_GENOTYPE_GATK4.out.vcfs) + ch_gvcfs_ready = ch_gvcfs_ready.mix(CRAM_CALL_GATK4.out.gvcfs) + ch_versions = ch_versions.mix(CRAM_CALL_GATK4.out.versions) + ch_reports = ch_reports.mix(CRAM_CALL_GATK4.out.reports) } @@ -452,6 +451,21 @@ workflow GERMLINE { ch_calls = ch_calls.mix(BAM_CALL_VARDICTJAVA.out.vcfs) } + // TODO reimplement --only_call and --only_merge + + GVCF_JOINT_GENOTYPE_GATK4( + ch_gvcfs_ready, + ch_fasta_ready, + ch_fai_ready, + ch_dict_ready, + ch_dbsnp_ready, + ch_dbsnp_tbi_ready, + only_merge, + scatter_count + ) + ch_versions = ch_versions.mix(GVCF_JOINT_GENOTYPE_GATK4.out.versions) + ch_calls = ch_calls.mix(GVCF_JOINT_GENOTYPE_GATK4.out.vcfs) + def ch_called_variants = ch_calls .map { meta, vcf, tbi -> def new_meta = meta - meta.subMap(["type", "vardict_min_af"]) From 10fa33c35415f1b66ce1f2fd9f74bb5c9305d154 Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Wed, 23 Oct 2024 16:20:38 +0200 Subject: [PATCH 055/167] add elprep --- conf/modules.config | 67 ++++++++++++++--- main.nf | 3 + modules.json | 12 ++- .../elprep/fastatoelfasta/environment.yml | 7 ++ modules/nf-core/elprep/fastatoelfasta/main.nf | 50 +++++++++++++ .../nf-core/elprep/fastatoelfasta/meta.yml | 55 ++++++++++++++ .../elprep/fastatoelfasta/tests/main.nf.test | 66 ++++++++++++++++ .../fastatoelfasta/tests/main.nf.test.snap | 62 +++++++++++++++ nextflow.config | 1 + subworkflows/local/bam_call_elprep/main.nf | 75 +++++++++++++++++++ subworkflows/local/cram_call_gatk4/main.nf | 8 +- .../local/input_split_bedtools/main.nf | 10 +-- workflows/germline.nf | 48 +++++++++++- 13 files changed, 441 insertions(+), 23 deletions(-) create mode 100644 modules/nf-core/elprep/fastatoelfasta/environment.yml create mode 100644 modules/nf-core/elprep/fastatoelfasta/main.nf create mode 100644 modules/nf-core/elprep/fastatoelfasta/meta.yml create mode 100644 modules/nf-core/elprep/fastatoelfasta/tests/main.nf.test create mode 100644 modules/nf-core/elprep/fastatoelfasta/tests/main.nf.test.snap create mode 100644 subworkflows/local/bam_call_elprep/main.nf diff --git a/conf/modules.config b/conf/modules.config index 51749247..732e1ec5 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -124,15 +124,15 @@ process { /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - GATK4_HAPLOTYPCECALLER + GATK4 HAPLOTYPCECALLER ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ - withName: "^.*CRAM_CALL_GENOTYPE_GATK4:CRAM_CALL_GATK4:GATK4_CALIBRATEDRAGSTRMODEL\$" { + withName: "^.*CRAM_CALL_GATK4:GATK4_CALIBRATEDRAGSTRMODEL\$" { ext.args = "--parallel" } - withName: "^.*CRAM_CALL_GENOTYPE_GATK4:CRAM_CALL_GATK4:GATK4_HAPLOTYPECALLER\$" { + withName: "^.*CRAM_CALL_GATK4:GATK4_HAPLOTYPECALLER\$" { time = { 16.h * task.attempt } ext.prefix = {"${meta.id}.g"} ext.args = { @@ -169,7 +169,7 @@ process { ext.args = '' } - withName: "^.*CRAM_CALL_GATK4:BCFTOOLS_STATS_SINGLE\$" { + withName: "^.*CRAM_CALL_GATK4:BCFTOOLS_STATS\$" { publishDir = [ overwrite: true, enabled: true, @@ -180,12 +180,61 @@ process { ext.prefix = final_prefix } - withName: "^.*CRAM_CALL_GENOTYPE_GATK4:GVCF_JOINT_GENOTYPE_GATK4:BCFTOOLS_QUERY\$" { + /* + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ELPREP + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + */ + + withName: "^.*BAM_CALL_ELPREP:ELPREP_FILTER\$" { + ext.args = "--reference-confidence GVCF" + } + + withName: "^.*BAM_CALL_ELPREP:VCF_CONCAT_BCFTOOLS:BCFTOOLS_CONCAT\$" { + publishDir = [ + overwrite: true, + enabled: true, + mode: params.publish_dir_mode, + path: individual_output, + saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + ] // SAVE + ext.prefix = { "${meta.id}.${meta.caller}.g" } + ext.args = '--allow-overlaps --output-type z' + } + + withName: "^.*BAM_CALL_ELPREP:VCF_CONCAT_BCFTOOLS:TABIX_TABIX\$" { + publishDir = [ + overwrite: true, + enabled: true, + path: individual_output, + mode: params.publish_dir_mode, + saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + ] // SAVE + } + + withName: "^.*BAM_CALL_ELPREP:BCFTOOLS_STATS\$" { + publishDir = [ + overwrite: true, + enabled: true, + path: individual_reports, + mode: params.publish_dir_mode, + saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + ] // SAVE + ext.prefix = final_prefix + } + + /* + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + GVCF JOINT GENOTYPING + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + */ + + withName: "^.*GVCF_JOINT_GENOTYPE_GATK4:BCFTOOLS_QUERY\$" { ext.args = "--exclude 'QUAL=\".\"' --format '%CHROM\t%POS0\t%END\\n'" ext.suffix = "bed" } - withName: "^.*CRAM_CALL_GENOTYPE_GATK4:GVCF_JOINT_GENOTYPE_GATK4:MERGE_BEDS\$" { + withName: "^.*GVCF_JOINT_GENOTYPE_GATK4:MERGE_BEDS\$" { ext.args = "-d ${params.merge_distance}" publishDir = [ enabled: true, @@ -196,12 +245,12 @@ process { ] // SAVE } - withName: "^.*CRAM_CALL_GENOTYPE_GATK4:GVCF_JOINT_GENOTYPE_GATK4:GAWK\$" { + withName: "^.*GVCF_JOINT_GENOTYPE_GATK4:GAWK\$" { ext.args2 = '\'BEGIN {FS="\t"}; {print \$1 FS "0" FS \$2}\'' ext.suffix = "bed" } - withName: "^.*CRAM_CALL_GENOTYPE_GATK4:GVCF_JOINT_GENOTYPE_GATK4:GATK4_GENOMICSDBIMPORT\$" { + withName: "^.*GVCF_JOINT_GENOTYPE_GATK4:GATK4_GENOMICSDBIMPORT\$" { label = { meta.family_samples.tokenize(",").size() <= 10 ? "process_medium" : "process_high" } time = { 16.h * task.attempt } // Lots of parameters are fetched from https://gatk.broadinstitute.org/hc/en-us/articles/360056138571-GenomicsDBImport-usage-and-performance-guidelines @@ -228,7 +277,7 @@ process { ] // SAVE } - withName: "^.*CRAM_CALL_GENOTYPE_GATK4:GVCF_JOINT_GENOTYPE_GATK4:GATK4_GENOTYPEGVCFS\$" { + withName: "^.*GVCF_JOINT_GENOTYPE_GATK4:GATK4_GENOTYPEGVCFS\$" { time = { 16.h * task.attempt } ext.args = { [ diff --git a/main.nf b/main.nf index 2e82e0c1..c164385f 100644 --- a/main.nf +++ b/main.nf @@ -19,6 +19,7 @@ include { getGenomeAttribute } from './subworkflows/local/utils_cmgg_germline_pi params.fasta = getGenomeAttribute('fasta', params.genomes, params.genome) params.fai = getGenomeAttribute('fai', params.genomes, params.genome) params.dict = getGenomeAttribute('dict', params.genomes, params.genome) +params.elfasta = getGenomeAttribute('elfasta', params.genomes, params.genome) params.strtablefile = getGenomeAttribute('strtablefile', params.genomes, params.genome) params.sdf = getGenomeAttribute('sdf', params.genomes, params.genome) params.dbsnp = getGenomeAttribute('dbsnp', params.genomes, params.genome) @@ -73,6 +74,7 @@ workflow NFCMGG_GERMLINE { pipeline_params.fasta, pipeline_params.fai, pipeline_params.dict, + pipeline_params.elfasta, pipeline_params.strtablefile, pipeline_params.sdf, pipeline_params.dbsnp, @@ -103,6 +105,7 @@ workflow NFCMGG_GERMLINE { pipeline_params.automap_panel, pipeline_params.outdir, GlobalVariables.pedFiles, + pipeline_params.elsites, // Boolean inputs pipeline_params.dragstr, diff --git a/modules.json b/modules.json index fd1f2450..8ff9f050 100644 --- a/modules.json +++ b/modules.json @@ -66,6 +66,16 @@ "git_sha": "cb08035150685b11d890d90c9534d4f16869eaec", "installed_by": ["modules"] }, + "elprep/fastatoelfasta": { + "branch": "master", + "git_sha": "74ac5351a11a184171489dee73652e8b69ba9d22", + "installed_by": ["modules"] + }, + "elprep/filter": { + "branch": "master", + "git_sha": "909c4dcdbb1e751214e2bb155e8c0a59633ed12a", + "installed_by": ["modules"] + }, "ensemblvep/download": { "branch": "master", "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", @@ -183,7 +193,7 @@ "tabix/bgzip": { "branch": "master", "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", - "installed_by": ["modules"] + "installed_by": ["vcf_annotate_ensemblvep_snpeff"] }, "tabix/bgziptabix": { "branch": "master", diff --git a/modules/nf-core/elprep/fastatoelfasta/environment.yml b/modules/nf-core/elprep/fastatoelfasta/environment.yml new file mode 100644 index 00000000..6ab3f8fc --- /dev/null +++ b/modules/nf-core/elprep/fastatoelfasta/environment.yml @@ -0,0 +1,7 @@ +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json +channels: + - conda-forge + - bioconda +dependencies: + - "bioconda::elprep=5.1.3" diff --git a/modules/nf-core/elprep/fastatoelfasta/main.nf b/modules/nf-core/elprep/fastatoelfasta/main.nf new file mode 100644 index 00000000..861350bf --- /dev/null +++ b/modules/nf-core/elprep/fastatoelfasta/main.nf @@ -0,0 +1,50 @@ +process ELPREP_FASTATOELFASTA { + tag "$meta.id" + label 'process_low' + + conda "${moduleDir}/environment.yml" + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/elprep:5.1.3--he881be0_1': + 'biocontainers/elprep:5.1.3--he881be0_1' }" + + input: + tuple val(meta), path(fasta) + + output: + tuple val(meta), path("*.elfasta") , emit: elfasta + tuple val(meta), path("logs/elprep/elprep*"), emit: log + path "versions.yml" , emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + def prefix = task.ext.prefix ?: "${meta.id}" + """ + elprep fasta-to-elfasta \\ + $fasta \\ + ${prefix}.elfasta \\ + --log-path ./ + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + elprep: \$(elprep 2>&1 | head -n2 | tail -n1 |sed 's/^.*version //;s/ compiled.*\$//') + END_VERSIONS + """ + + stub: + def prefix = task.ext.prefix ?: "${meta.id}" + def timestamp = "${java.time.OffsetDateTime.now().format(java.time.format.DateTimeFormatter.ISO_DATE_TIME)}" + + """ + mkdir -p logs/elprep + + touch ${prefix}.elfasta + touch logs/elprep/elprep-${timestamp}.log + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + elprep: \$(elprep 2>&1 | head -n2 | tail -n1 |sed 's/^.*version //;s/ compiled.*\$//') + END_VERSIONS + """ +} diff --git a/modules/nf-core/elprep/fastatoelfasta/meta.yml b/modules/nf-core/elprep/fastatoelfasta/meta.yml new file mode 100644 index 00000000..41a8be31 --- /dev/null +++ b/modules/nf-core/elprep/fastatoelfasta/meta.yml @@ -0,0 +1,55 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/meta-schema.json +name: "elprep_fastatoelfasta" +description: Convert a file in FASTA format to the ELFASTA format +keywords: + - fasta + - elfasta + - elprep +tools: + - "elprep": + description: "elPrep is a high-performance tool for preparing .sam/.bam files + for variant calling in sequencing pipelines. It can be used as a drop-in replacement + for SAMtools/Picard/GATK4." + homepage: "https://github.com/ExaScience/elprep" + documentation: "https://github.com/ExaScience/elprep" + tool_dev_url: "https://github.com/ExaScience/elprep" + doi: "10.1371/journal.pone.0244471" + licence: ["AGPL v3"] + identifier: biotools:elprep + +input: + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1', single_end:false ]` + - fasta: + type: file + description: FASTA file + pattern: "*.{fasta,fa,fna}" +output: + - elfasta: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1', single_end:false ]` + pattern: "*.elfasta" + - "*.elfasta": + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1', single_end:false ]` + pattern: "*.elfasta" + - log: + - meta: {} + - logs/elprep/elprep*: {} + - versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" +authors: + - "@nvnieuwk" +maintainers: + - "@nvnieuwk" diff --git a/modules/nf-core/elprep/fastatoelfasta/tests/main.nf.test b/modules/nf-core/elprep/fastatoelfasta/tests/main.nf.test new file mode 100644 index 00000000..d22f6d9d --- /dev/null +++ b/modules/nf-core/elprep/fastatoelfasta/tests/main.nf.test @@ -0,0 +1,66 @@ +nextflow_process { + + name "Test Process ELPREP_FASTATOELFASTA" + script "../main.nf" + process "ELPREP_FASTATOELFASTA" + + tag "modules" + tag "modules_nfcore" + tag "elprep" + tag "elprep/fastatoelfasta" + + test("sarscov2 - fasta") { + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true), + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + process.out.elfasta, + process.out.log.collect { [it[0], file(it[1]).exists()] }, + process.out.versions + ).match() } + ) + } + + } + + test("sarscov2 - fasta - stub") { + + options "-stub" + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true), + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + process.out.elfasta, + process.out.log.collect { [it[0], file(it[1]).exists()] }, + process.out.versions + ).match() } + ) + } + + } + +} diff --git a/modules/nf-core/elprep/fastatoelfasta/tests/main.nf.test.snap b/modules/nf-core/elprep/fastatoelfasta/tests/main.nf.test.snap new file mode 100644 index 00000000..799bb0fb --- /dev/null +++ b/modules/nf-core/elprep/fastatoelfasta/tests/main.nf.test.snap @@ -0,0 +1,62 @@ +{ + "sarscov2 - fasta - stub": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test.elfasta:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + true + ] + ], + [ + "versions.yml:md5,bf313ed1289a8969464c5593b0ff67be" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-10-18T14:29:50.861439255" + }, + "sarscov2 - fasta": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test.elfasta:md5,09a6f76bed84ee211ef0d962e26c77f1" + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + true + ] + ], + [ + "versions.yml:md5,bf313ed1289a8969464c5593b0ff67be" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-10-18T14:25:24.238816922" + } +} \ No newline at end of file diff --git a/nextflow.config b/nextflow.config index fe527315..c0a32e09 100644 --- a/nextflow.config +++ b/nextflow.config @@ -78,6 +78,7 @@ params { multiqc_methods_description = null // References + elsites = null cmgg_config_base = "/conf/" igenomes_base = null //'s3://ngi-igenomes/igenomes' igenomes_ignore = true diff --git a/subworkflows/local/bam_call_elprep/main.nf b/subworkflows/local/bam_call_elprep/main.nf new file mode 100644 index 00000000..bd45f542 --- /dev/null +++ b/subworkflows/local/bam_call_elprep/main.nf @@ -0,0 +1,75 @@ +// +// Call the variants using Elprep +// + +include { ELPREP_FILTER } from '../../../modules/nf-core/elprep/filter/main' +include { BCFTOOLS_STATS } from '../../../modules/nf-core/bcftools/stats/main' + +include { VCF_CONCAT_BCFTOOLS } from '../vcf_concat_bcftools/main' +include { VCF_DBSNP_VCFANNO } from '../vcf_dbsnp_vcfanno/main' + +workflow BAM_CALL_ELPREP { + take: + ch_input // channel: [mandatory] [ val(meta), path(bam), path(bai), path(bed) ] => sample BAM files and their indexes with the split bed files + ch_elfasta // channel: [mandatory] [ val(meta), path(fasta) ] => fasta reference + ch_elsites // channel: [optional] [ val(meta), path(elsites) ] + ch_dbsnp // channel: [optional] [ path(dbsnp) ] => The VCF containing the dbsnp variants + ch_dbsnp_tbi // channel: [optional] [ path(dbsnp_tbi) ] => The index of the dbsnp VCF + + main: + + def ch_versions = Channel.empty() + + ELPREP_FILTER( + ch_input.map { meta, bam, bai, bed -> + def new_meta = meta + [caller:'elprep'] + [ new_meta, bam, bai, bed, [], [], [] ] + }, + [[],[]], + ch_elfasta, + ch_elsites, + true, // haplotypecaller + false, + false, + false, + false + ) + ch_versions = ch_versions.mix(ELPREP_FILTER.out.versions.first()) + + VCF_CONCAT_BCFTOOLS( + ELPREP_FILTER.out.gvcf, + true + ) + ch_versions = ch_versions.mix(VCF_CONCAT_BCFTOOLS.out.versions) + + def ch_annotated = Channel.empty() + if(!(ch_dbsnp instanceof List)) { + VCF_DBNSP_VCFANNO( + VCF_CONCAT_BCFTOOLS.out.vcfs, + ch_dbsnp, + ch_dbsnp_tbi + ) + ch_versions = ch_versions.mix(VCF_DBSNP_VCFANNO.out.versions) + ch_annotated = TABIX_BGZIP.out.output + } else { + ch_annotated = VCF_CONCAT_BCFTOOLS.out.vcfs + } + + BCFTOOLS_STATS( + ch_annotated, + [[],[]], + [[],[]], + [[],[]], + [[],[]], + [[],[]] + ) + ch_versions = ch_versions.mix(BCFTOOLS_STATS.out.versions.first()) + + def ch_reports = BCFTOOLS_STATS.out.stats.collect{ _meta, report -> report} + + emit: + gvcfs = ch_annotated // channel: [ val(meta), path(vcf), path(tbi) ] + reports = ch_reports // channel: [ path(stats) ] + versions = ch_versions // channel: [ versions.yml ] + +} diff --git a/subworkflows/local/cram_call_gatk4/main.nf b/subworkflows/local/cram_call_gatk4/main.nf index d0e14ebd..05c1543a 100644 --- a/subworkflows/local/cram_call_gatk4/main.nf +++ b/subworkflows/local/cram_call_gatk4/main.nf @@ -4,7 +4,7 @@ include { GATK4_CALIBRATEDRAGSTRMODEL } from '../../../modules/nf-core/gatk4/calibratedragstrmodel/main' include { GATK4_HAPLOTYPECALLER } from '../../../modules/nf-core/gatk4/haplotypecaller/main' -include { BCFTOOLS_STATS as BCFTOOLS_STATS_SINGLE } from '../../../modules/nf-core/bcftools/stats/main' +include { BCFTOOLS_STATS } from '../../../modules/nf-core/bcftools/stats/main' include { VCF_CONCAT_BCFTOOLS } from '../vcf_concat_bcftools/main' @@ -87,7 +87,7 @@ workflow CRAM_CALL_GATK4 { ) ch_versions = ch_versions.mix(VCF_CONCAT_BCFTOOLS.out.versions) - BCFTOOLS_STATS_SINGLE( + BCFTOOLS_STATS( VCF_CONCAT_BCFTOOLS.out.vcfs, [[],[]], [[],[]], @@ -95,9 +95,9 @@ workflow CRAM_CALL_GATK4 { [[],[]], [[],[]] ) - ch_versions = ch_versions.mix(BCFTOOLS_STATS_SINGLE.out.versions.first()) + ch_versions = ch_versions.mix(BCFTOOLS_STATS.out.versions.first()) - def ch_reports = BCFTOOLS_STATS_SINGLE.out.stats.collect{ _meta, report -> report} + def ch_reports = BCFTOOLS_STATS.out.stats.collect{ _meta, report -> report} emit: gvcfs = VCF_CONCAT_BCFTOOLS.out.vcfs // channel: [ val(meta), path(vcf), path(tbi) ] diff --git a/subworkflows/local/input_split_bedtools/main.nf b/subworkflows/local/input_split_bedtools/main.nf index dd332ab2..19c3db95 100644 --- a/subworkflows/local/input_split_bedtools/main.nf +++ b/subworkflows/local/input_split_bedtools/main.nf @@ -27,14 +27,14 @@ workflow INPUT_SPLIT_BEDTOOLS { def bed_is_list = beds instanceof ArrayList def new_meta = meta + [split_count: bed_is_list ? beds.size() : 1] def bed_output = bed_is_list ? [beds] : [[beds]] - return [new_meta] + row[1..-2] + bed_output + return [new_meta] + bed_output + row[1..-2] } - .transpose(by:3) // Create one channel entry for each BED file per sample + .transpose(by:1) // Create one channel entry for each BED file per sample + .view() .map { row -> // Set the base name of the BED file as the ID (this will look like sample_id.xxxx, where xxxx are numbers) - def new_row = row - new_row[0] = row[0] + [id:row[-1].baseName] - return new_row + def new_meta = row[0] + [id:row[1].baseName] + return [ new_meta, row[1] ] + row[3..-1] } emit: diff --git a/workflows/germline.nf b/workflows/germline.nf index a7a38c7a..10166be9 100644 --- a/workflows/germline.nf +++ b/workflows/germline.nf @@ -19,6 +19,7 @@ include { CRAM_PREPARE_SAMTOOLS_BEDTOOLS } from '../subworkflows/local/cram_p include { INPUT_SPLIT_BEDTOOLS } from '../subworkflows/local/input_split_bedtools/main' include { CRAM_CALL_GATK4 } from '../subworkflows/local/cram_call_gatk4/main' include { GVCF_JOINT_GENOTYPE_GATK4 } from '../subworkflows/local/gvcf_joint_genotype_gatk4/main' +include { BAM_CALL_ELPREP } from '../subworkflows/local/bam_call_elprep/main' include { BAM_CALL_VARDICTJAVA } from '../subworkflows/local/bam_call_vardictjava/main' include { VCF_EXTRACT_RELATE_SOMALIER } from '../subworkflows/local/vcf_extract_relate_somalier/main' include { VCF_PED_RTGTOOLS } from '../subworkflows/local/vcf_ped_rtgtools/main' @@ -36,6 +37,7 @@ include { VCF_FILTER_BCFTOOLS } from '../subworkflows/local/vcf_fi include { SAMTOOLS_FAIDX as FAIDX } from '../modules/nf-core/samtools/faidx/main' include { GATK4_CREATESEQUENCEDICTIONARY as CREATESEQUENCEDICTIONARY } from '../modules/nf-core/gatk4/createsequencedictionary/main' +include { ELPREP_FASTATOELFASTA } from '../modules/nf-core/elprep/fastatoelfasta/main' include { GATK4_COMPOSESTRTABLEFILE as COMPOSESTRTABLEFILE } from '../modules/nf-core/gatk4/composestrtablefile/main' include { RTGTOOLS_FORMAT } from '../modules/nf-core/rtgtools/format/main' include { UNTAR } from '../modules/nf-core/untar/main' @@ -69,6 +71,7 @@ workflow GERMLINE { fasta // string: path to the reference fasta fai // string: path to the index of the reference fasta dict // string: path to the sequence dictionary file + elfasta // string: path to the elfasta reference file strtablefile // string: path to the strtable file sdf // string: path to the SDF directory dbsnp // string: path to the DBSNP VCF file @@ -99,6 +102,7 @@ workflow GERMLINE { automap_panel // string: path to the Automap panel file outdir // string: path to the output directory pedFiles // map: a map that has the family ID as key and a PED file as value + elsites // string: path to the elsites file for elprep // Boolean inputs dragstr // boolean: create a dragstr model and use it for haplotypecaller @@ -140,6 +144,7 @@ workflow GERMLINE { def ch_fasta_ready = Channel.fromPath(fasta).map{ fasta_file -> [[id:"reference"], fasta_file] }.collect() def ch_fai = fai ? Channel.fromPath(fai).map{ fai_file -> [[id:"reference"], fai_file] }.collect() : null def ch_dict = dict ? Channel.fromPath(dict).map{ dict_file -> [[id:"reference"], dict_file] }.collect() : null + def ch_elfasta = elfasta ? Channel.fromPath(elfasta).map { elfasta_file -> [[id:"reference"], elfasta_file]}.collect() : null def ch_strtablefile = strtablefile ? Channel.fromPath(strtablefile).map{ str_file -> [[id:"reference"], str_file] }.collect() : null def ch_sdf = sdf ? Channel.fromPath(sdf).map { sdf_file -> [[id:'reference'], sdf_file] }.collect() : null @@ -161,6 +166,8 @@ workflow GERMLINE { def ch_automap_repeats = automap_repeats ? Channel.fromPath(automap_repeats).map{ repeats -> [[id:"repeats"], repeats] }.collect() : [] def ch_automap_panel = automap_panel ? Channel.fromPath(automap_panel).map{ panel -> [[id:"automap_panel"], panel] }.collect() : [[],[]] + def ch_elsites = elsites ? Channel.fromPath(elsites).map{ elsites_file -> [[id:'elsites'], elsites_file] }.collect() : [[],[]] + // // Check for the presence of EnsemblVEP plugins that use extra files // @@ -262,6 +269,18 @@ workflow GERMLINE { ch_dict_ready = ch_dict } + def ch_elfasta_ready = Channel.empty() + def elprep_used = callers.contains("elprep") + if (!ch_elfasta && elprep_used) { + ELPREP_FASTATOELFASTA( + ch_fasta_ready + ) + ch_versions = ch_versions.mix(ELPREP_FASTATOELFASTA.out.versions) + ch_elfasta_ready = ELPREP_FASTATOELFASTA.out.elfasta + } else { + ch_elfasta_ready = ch_elfasta + } + // Reference STR table file def ch_strtablefile_ready = Channel.empty() if (dragstr && !ch_strtablefile) { @@ -356,10 +375,11 @@ workflow GERMLINE { def ch_gvcfs_ready = ch_gvcf_branch.no_tbi .join(TABIX_GVCF.out.tbi, failOnDuplicate:true, failOnMismatch:true) .mix(ch_gvcf_branch.tbi) - .map { meta, gvcf, tbi -> - [ meta, gvcf, tbi, callers.intersect(GlobalVariables.gvcfCallers) ] + .combine(callers.intersect(GlobalVariables.gvcfCallers)) + .map { meta, gvcf, tbi, caller -> + def new_meta = meta + [caller:caller] + [ new_meta, gvcf, tbi ] } - .transpose(by:3) // // Run sample preparation @@ -398,7 +418,7 @@ workflow GERMLINE { CRAM_PREPARE_SAMTOOLS_BEDTOOLS.out.ready_beds.map { meta, bed -> [meta, bed, scatter_count] }, - CRAM_PREPARE_SAMTOOLS_BEDTOOLS.out.ready_crams + ch_split_cram_bam ) ch_versions = ch_versions.mix(INPUT_SPLIT_BEDTOOLS.out.versions) @@ -430,6 +450,26 @@ workflow GERMLINE { ch_gvcfs_ready = ch_gvcfs_ready.mix(CRAM_CALL_GATK4.out.gvcfs) ch_versions = ch_versions.mix(CRAM_CALL_GATK4.out.versions) ch_reports = ch_reports.mix(CRAM_CALL_GATK4.out.reports) + } + + if("elprep" in callers) { + // + // Call variants with Elprep + // + + BAM_CALL_ELPREP( + ch_caller_inputs.bam.filter { meta, _bam, _bai, _bed -> + // Filter out the entries that already have a GVCF + meta.type == "cram" + }, + ch_elfasta_ready, + ch_elsites, + ch_dbsnp_ready, + ch_dbsnp_tbi_ready + ) + ch_gvcfs_ready = ch_gvcfs_ready.mix(BAM_CALL_ELPREP.out.gvcfs) + ch_versions = ch_versions.mix(BAM_CALL_ELPREP.out.versions) + ch_reports = ch_reports.mix(BAM_CALL_ELPREP.out.reports) } From 4e970d532c3cb15ad29006f2e6e8ed586ebf65d7 Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Wed, 23 Oct 2024 16:30:26 +0200 Subject: [PATCH 056/167] fix typo --- subworkflows/local/bam_call_elprep/main.nf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/subworkflows/local/bam_call_elprep/main.nf b/subworkflows/local/bam_call_elprep/main.nf index bd45f542..0b0e6250 100644 --- a/subworkflows/local/bam_call_elprep/main.nf +++ b/subworkflows/local/bam_call_elprep/main.nf @@ -44,7 +44,7 @@ workflow BAM_CALL_ELPREP { def ch_annotated = Channel.empty() if(!(ch_dbsnp instanceof List)) { - VCF_DBNSP_VCFANNO( + VCF_DBSNP_VCFANNO( VCF_CONCAT_BCFTOOLS.out.vcfs, ch_dbsnp, ch_dbsnp_tbi From 59623f184d7124b14b661e6784494d04d420d54e Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Wed, 23 Oct 2024 16:36:33 +0200 Subject: [PATCH 057/167] fix some small issues --- conf/test.config | 1 + modules.json | 3 ++- .../nf-core/elprep/filter/elprep-filter.diff | 20 +++++++++++++++++++ modules/nf-core/elprep/filter/main.nf | 2 +- .../local/input_split_bedtools/main.nf | 1 - 5 files changed, 24 insertions(+), 3 deletions(-) create mode 100644 modules/nf-core/elprep/filter/elprep-filter.diff diff --git a/conf/test.config b/conf/test.config index 12dee471..c259bd53 100644 --- a/conf/test.config +++ b/conf/test.config @@ -34,6 +34,7 @@ params { fasta = "https://github.com/nf-cmgg/test-datasets/raw/germline/data/genomics/homo_sapiens/genome/hg38_chr21_22000000_23000000.fasta" fai = "https://github.com/nf-cmgg/test-datasets/raw/germline/data/genomics/homo_sapiens/genome/hg38_chr21_22000000_23000000.fasta.fai" dict = "https://github.com/nf-cmgg/test-datasets/raw/germline/data/genomics/homo_sapiens/genome/hg38_chr21_22000000_23000000.dict" + elfasta = "https://github.com/nf-cmgg/test-datasets/raw/germline/data/genomics/homo_sapiens/genome/hg38_chr21_22000000_23000000.elfasta" sdf = "https://github.com/nf-cmgg/test-datasets/raw/germline/data/genomics/homo_sapiens/genome/hg38_chr21_22000000_23000000_sdf.tar.gz" strtablefile = "https://github.com/nf-cmgg/test-datasets/raw/germline/data/genomics/homo_sapiens/genome/hg38_chr21_22000000_23000000.strtable.zip" diff --git a/modules.json b/modules.json index 8ff9f050..92877e49 100644 --- a/modules.json +++ b/modules.json @@ -74,7 +74,8 @@ "elprep/filter": { "branch": "master", "git_sha": "909c4dcdbb1e751214e2bb155e8c0a59633ed12a", - "installed_by": ["modules"] + "installed_by": ["modules"], + "patch": "modules/nf-core/elprep/filter/elprep-filter.diff" }, "ensemblvep/download": { "branch": "master", diff --git a/modules/nf-core/elprep/filter/elprep-filter.diff b/modules/nf-core/elprep/filter/elprep-filter.diff new file mode 100644 index 00000000..17b545b2 --- /dev/null +++ b/modules/nf-core/elprep/filter/elprep-filter.diff @@ -0,0 +1,20 @@ +Changes in module 'nf-core/elprep/filter' +Changes in 'elprep/filter/main.nf': +--- modules/nf-core/elprep/filter/main.nf ++++ modules/nf-core/elprep/filter/main.nf +@@ -65,7 +65,7 @@ + if ("$bam" == "${prefix}.${suffix}") error "Input and output names are the same, set prefix in module configuration to disambiguate!" + + """ +- elprep filter ${bam} ${prefix}.${suffix} \\ ++ elprep filter ${bam} /dev/null \\ + ${reference_sequences_cmd} \\ + ${filter_regions_cmd} \\ + ${markdup_cmd} \\ + +'modules/nf-core/elprep/filter/environment.yml' is unchanged +'modules/nf-core/elprep/filter/meta.yml' is unchanged +'modules/nf-core/elprep/filter/tests/main.nf.test' is unchanged +'modules/nf-core/elprep/filter/tests/main.nf.test.snap' is unchanged +'modules/nf-core/elprep/filter/tests/nextflow.config' is unchanged +************************************************************ diff --git a/modules/nf-core/elprep/filter/main.nf b/modules/nf-core/elprep/filter/main.nf index 6727106a..c533d253 100644 --- a/modules/nf-core/elprep/filter/main.nf +++ b/modules/nf-core/elprep/filter/main.nf @@ -65,7 +65,7 @@ process ELPREP_FILTER { if ("$bam" == "${prefix}.${suffix}") error "Input and output names are the same, set prefix in module configuration to disambiguate!" """ - elprep filter ${bam} ${prefix}.${suffix} \\ + elprep filter ${bam} /dev/null \\ ${reference_sequences_cmd} \\ ${filter_regions_cmd} \\ ${markdup_cmd} \\ diff --git a/subworkflows/local/input_split_bedtools/main.nf b/subworkflows/local/input_split_bedtools/main.nf index 19c3db95..dc3604f4 100644 --- a/subworkflows/local/input_split_bedtools/main.nf +++ b/subworkflows/local/input_split_bedtools/main.nf @@ -30,7 +30,6 @@ workflow INPUT_SPLIT_BEDTOOLS { return [new_meta] + bed_output + row[1..-2] } .transpose(by:1) // Create one channel entry for each BED file per sample - .view() .map { row -> // Set the base name of the BED file as the ID (this will look like sample_id.xxxx, where xxxx are numbers) def new_meta = row[0] + [id:row[1].baseName] From fc26fe48c1285d069fbd811311e5de397f2cd13d Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Thu, 24 Oct 2024 11:05:06 +0200 Subject: [PATCH 058/167] correct channels --- modules.json | 191 +++++++++++++----- .../nf-core/elprep/filter/elprep-filter.diff | 10 +- modules/nf-core/elprep/filter/main.nf | 1 - .../local/input_split_bedtools/main.nf | 2 +- 4 files changed, 153 insertions(+), 51 deletions(-) diff --git a/modules.json b/modules.json index 92877e49..70af501e 100644 --- a/modules.json +++ b/modules.json @@ -8,223 +8,310 @@ "bcftools/annotate": { "branch": "master", "git_sha": "cb08035150685b11d890d90c9534d4f16869eaec", - "installed_by": ["modules"], + "installed_by": [ + "modules" + ], "patch": "modules/nf-core/bcftools/annotate/bcftools-annotate.diff" }, "bcftools/concat": { "branch": "master", "git_sha": "d1e0ec7670fa77905a378627232566ce54c3c26d", - "installed_by": ["vcf_annotate_ensemblvep_snpeff"] + "installed_by": [ + "vcf_annotate_ensemblvep_snpeff" + ] }, "bcftools/filter": { "branch": "master", "git_sha": "f85dbddd7a335fc0f5ac331e8d22ca94123b654b", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "bcftools/norm": { "branch": "master", "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "bcftools/pluginscatter": { "branch": "master", "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", - "installed_by": ["vcf_annotate_ensemblvep_snpeff"] + "installed_by": [ + "vcf_annotate_ensemblvep_snpeff" + ] }, "bcftools/query": { "branch": "master", "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "bcftools/reheader": { "branch": "master", "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "bcftools/sort": { "branch": "master", "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", - "installed_by": ["vcf_annotate_ensemblvep_snpeff"] + "installed_by": [ + "vcf_annotate_ensemblvep_snpeff" + ] }, "bcftools/stats": { "branch": "master", "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "bedtools/intersect": { "branch": "master", "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "bedtools/merge": { "branch": "master", "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "bedtools/split": { "branch": "master", "git_sha": "cb08035150685b11d890d90c9534d4f16869eaec", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "elprep/fastatoelfasta": { "branch": "master", "git_sha": "74ac5351a11a184171489dee73652e8b69ba9d22", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "elprep/filter": { "branch": "master", "git_sha": "909c4dcdbb1e751214e2bb155e8c0a59633ed12a", - "installed_by": ["modules"], + "installed_by": [ + "modules" + ], "patch": "modules/nf-core/elprep/filter/elprep-filter.diff" }, "ensemblvep/download": { "branch": "master", "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", - "installed_by": ["modules"], + "installed_by": [ + "modules" + ], "patch": "modules/nf-core/ensemblvep/download/ensemblvep-download.diff" }, "ensemblvep/vep": { "branch": "master", "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", - "installed_by": ["vcf_annotate_ensemblvep_snpeff"], + "installed_by": [ + "vcf_annotate_ensemblvep_snpeff" + ], "patch": "modules/nf-core/ensemblvep/vep/ensemblvep-vep.diff" }, "gatk4/calibratedragstrmodel": { "branch": "master", "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "gatk4/composestrtablefile": { "branch": "master", "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "gatk4/createsequencedictionary": { "branch": "master", "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "gatk4/genomicsdbimport": { "branch": "master", "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "gatk4/genotypegvcfs": { "branch": "master", "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "gatk4/haplotypecaller": { "branch": "master", "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "gawk": { "branch": "master", "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "mosdepth": { "branch": "master", "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "multiqc": { "branch": "master", "git_sha": "b8d36829fa84b6e404364abff787e8b07f6d058c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "rtgtools/format": { "branch": "master", "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "rtgtools/pedfilter": { "branch": "master", "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", - "installed_by": ["modules"], + "installed_by": [ + "modules" + ], "patch": "modules/nf-core/rtgtools/pedfilter/rtgtools-pedfilter.diff" }, "rtgtools/rocplot": { "branch": "master", "git_sha": "83e2df1e4ec594beb8a575b4db0b4197900f4ebd", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "rtgtools/vcfeval": { "branch": "master", "git_sha": "83e2df1e4ec594beb8a575b4db0b4197900f4ebd", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "samtools/convert": { "branch": "master", "git_sha": "b13f07be4c508d6ff6312d354d09f2493243e208", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "samtools/faidx": { "branch": "master", "git_sha": "b13f07be4c508d6ff6312d354d09f2493243e208", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "samtools/index": { "branch": "master", "git_sha": "b13f07be4c508d6ff6312d354d09f2493243e208", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "samtools/merge": { "branch": "master", "git_sha": "b13f07be4c508d6ff6312d354d09f2493243e208", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "snpeff/snpeff": { "branch": "master", "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", - "installed_by": ["vcf_annotate_ensemblvep_snpeff"] + "installed_by": [ + "vcf_annotate_ensemblvep_snpeff" + ] }, "somalier/extract": { "branch": "master", "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "somalier/relate": { "branch": "master", "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", - "installed_by": ["modules"], + "installed_by": [ + "modules" + ], "patch": "modules/nf-core/somalier/relate/somalier-relate.diff" }, "tabix/bgzip": { "branch": "master", "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", - "installed_by": ["vcf_annotate_ensemblvep_snpeff"] + "installed_by": [ + "vcf_annotate_ensemblvep_snpeff" + ] }, "tabix/bgziptabix": { "branch": "master", "git_sha": "f448e846bdadd80fc8be31fbbc78d9f5b5131a45", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "tabix/tabix": { "branch": "master", "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", - "installed_by": ["modules", "vcf_annotate_ensemblvep_snpeff"] + "installed_by": [ + "modules", + "vcf_annotate_ensemblvep_snpeff" + ] }, "untar": { "branch": "master", "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "vardictjava": { "branch": "master", "git_sha": "f85452fcbebab5dfd77c0752236f6f86e9a03b32", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "vcf2db": { "branch": "master", "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "vcfanno": { "branch": "master", "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] } } }, @@ -233,25 +320,33 @@ "utils_nextflow_pipeline": { "branch": "master", "git_sha": "1b6b9a3338d011367137808b49b923515080e3ba", - "installed_by": ["subworkflows"] + "installed_by": [ + "subworkflows" + ] }, "utils_nfcore_pipeline": { "branch": "master", "git_sha": "1b6b9a3338d011367137808b49b923515080e3ba", - "installed_by": ["subworkflows"] + "installed_by": [ + "subworkflows" + ] }, "utils_nfschema_plugin": { "branch": "master", "git_sha": "bbd5a41f4535a8defafe6080e00ea74c45f4f96c", - "installed_by": ["subworkflows"] + "installed_by": [ + "subworkflows" + ] }, "vcf_annotate_ensemblvep_snpeff": { "branch": "master", "git_sha": "1b2fdf082b2ea7976b112e149a474d816094724c", - "installed_by": ["subworkflows"] + "installed_by": [ + "subworkflows" + ] } } } } } -} +} \ No newline at end of file diff --git a/modules/nf-core/elprep/filter/elprep-filter.diff b/modules/nf-core/elprep/filter/elprep-filter.diff index 17b545b2..47bb8da9 100644 --- a/modules/nf-core/elprep/filter/elprep-filter.diff +++ b/modules/nf-core/elprep/filter/elprep-filter.diff @@ -2,7 +2,15 @@ Changes in module 'nf-core/elprep/filter' Changes in 'elprep/filter/main.nf': --- modules/nf-core/elprep/filter/main.nf +++ modules/nf-core/elprep/filter/main.nf -@@ -65,7 +65,7 @@ +@@ -20,7 +20,6 @@ + + + output: +- tuple val(meta), path("*.{bam,sam}") , emit: bam + tuple val(meta), path("*.log") , emit: logs + tuple val(meta), path("*.metrics.txt") , optional: true, emit: metrics + tuple val(meta), path("*.recall") , optional: true, emit: recall +@@ -65,7 +64,7 @@ if ("$bam" == "${prefix}.${suffix}") error "Input and output names are the same, set prefix in module configuration to disambiguate!" """ diff --git a/modules/nf-core/elprep/filter/main.nf b/modules/nf-core/elprep/filter/main.nf index c533d253..231223ec 100644 --- a/modules/nf-core/elprep/filter/main.nf +++ b/modules/nf-core/elprep/filter/main.nf @@ -20,7 +20,6 @@ process ELPREP_FILTER { output: - tuple val(meta), path("*.{bam,sam}") , emit: bam tuple val(meta), path("*.log") , emit: logs tuple val(meta), path("*.metrics.txt") , optional: true, emit: metrics tuple val(meta), path("*.recall") , optional: true, emit: recall diff --git a/subworkflows/local/input_split_bedtools/main.nf b/subworkflows/local/input_split_bedtools/main.nf index dc3604f4..4aab4987 100644 --- a/subworkflows/local/input_split_bedtools/main.nf +++ b/subworkflows/local/input_split_bedtools/main.nf @@ -33,7 +33,7 @@ workflow INPUT_SPLIT_BEDTOOLS { .map { row -> // Set the base name of the BED file as the ID (this will look like sample_id.xxxx, where xxxx are numbers) def new_meta = row[0] + [id:row[1].baseName] - return [ new_meta, row[1] ] + row[3..-1] + return [ new_meta ] + row[2..-1] + [ row[1] ] } emit: From 660a8095f3c868f141cd5a2fa9d66ddcec9e4b58 Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Thu, 24 Oct 2024 11:08:08 +0200 Subject: [PATCH 059/167] fix dbsnp subwf --- subworkflows/local/vcf_dbsnp_vcfanno/main.nf | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/subworkflows/local/vcf_dbsnp_vcfanno/main.nf b/subworkflows/local/vcf_dbsnp_vcfanno/main.nf index 409ac005..0292dee6 100644 --- a/subworkflows/local/vcf_dbsnp_vcfanno/main.nf +++ b/subworkflows/local/vcf_dbsnp_vcfanno/main.nf @@ -1,4 +1,5 @@ -include { VCFANNO } from '../../../modules/nf-core/vcfanno/main' +include { VCFANNO } from '../../../modules/nf-core/vcfanno/main' +include { TABIX_BGZIPTABIX } from '../../../modules/nf-core/tabix/bgziptabix/main' workflow VCF_DBSNP_VCFANNO { take: @@ -24,12 +25,12 @@ workflow VCF_DBSNP_VCFANNO { ) ch_versions = ch_versions.mix(VCFANNO.out.versions.first()) - TABIX_BGZIP( + TABIX_BGZIPTABIX( VCFANNO.out.vcf ) - ch_versions = ch_versions.mix(TABIX_BGZIP.out.versions.first()) + ch_versions = ch_versions.mix(TABIX_BGZIPTABIX.out.versions.first()) - def ch_vcfs = TABIX_BGZIP.out.output + def ch_vcfs = TABIX_BGZIPTABIX.out.gz_tbi emit: vcfs = ch_vcfs // channel: [ val(meta), path(vcf), path(tbi) ] From db31f349dcdf487410bcf1b18cf50c8324e20184 Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Mon, 4 Nov 2024 09:34:36 +0100 Subject: [PATCH 060/167] fix dbsnp flow issue --- subworkflows/local/bam_call_elprep/main.nf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/subworkflows/local/bam_call_elprep/main.nf b/subworkflows/local/bam_call_elprep/main.nf index 0b0e6250..22f4939d 100644 --- a/subworkflows/local/bam_call_elprep/main.nf +++ b/subworkflows/local/bam_call_elprep/main.nf @@ -50,7 +50,7 @@ workflow BAM_CALL_ELPREP { ch_dbsnp_tbi ) ch_versions = ch_versions.mix(VCF_DBSNP_VCFANNO.out.versions) - ch_annotated = TABIX_BGZIP.out.output + ch_annotated = VCF_DBSNP_VCFANNO.out.vcfs } else { ch_annotated = VCF_CONCAT_BCFTOOLS.out.vcfs } From 8b72777259fcb8af014c4bf795dcf03d3a77c5ec Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Mon, 4 Nov 2024 11:47:02 +0100 Subject: [PATCH 061/167] fix wrong map + resources --- conf/modules.config | 2 ++ subworkflows/local/vcf_dbsnp_vcfanno/main.nf | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/conf/modules.config b/conf/modules.config index 732e1ec5..d4642735 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -187,6 +187,8 @@ process { */ withName: "^.*BAM_CALL_ELPREP:ELPREP_FILTER\$" { + cpus = { 25 * task.attempt } + memory = { 260.GB * task.attempt } ext.args = "--reference-confidence GVCF" } diff --git a/subworkflows/local/vcf_dbsnp_vcfanno/main.nf b/subworkflows/local/vcf_dbsnp_vcfanno/main.nf index 0292dee6..298dc0af 100644 --- a/subworkflows/local/vcf_dbsnp_vcfanno/main.nf +++ b/subworkflows/local/vcf_dbsnp_vcfanno/main.nf @@ -18,7 +18,7 @@ workflow VCF_DBSNP_VCFANNO { .collect() VCFANNO( - ch_input.map { meta, vcf -> [ meta, vcf, [], [] ] }, + ch_input.map { meta, vcf, tbi -> [ meta, vcf, tbi, [] ] }, ch_vcfanno_toml, [], ch_vcfanno_resources From de1f4492e34b489184fa180f3492376155d88052 Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Mon, 4 Nov 2024 11:52:56 +0100 Subject: [PATCH 062/167] update vardict flow --- subworkflows/local/bam_call_vardictjava/main.nf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/subworkflows/local/bam_call_vardictjava/main.nf b/subworkflows/local/bam_call_vardictjava/main.nf index 83c4d78a..0081bf51 100644 --- a/subworkflows/local/bam_call_vardictjava/main.nf +++ b/subworkflows/local/bam_call_vardictjava/main.nf @@ -39,13 +39,13 @@ workflow BAM_CALL_VARDICTJAVA { def ch_annotated = Channel.empty() if(!(ch_dbsnp instanceof List)) { - VCF_DBNSP_VCFANNO( + VCF_DBSNP_VCFANNO( VCF_CONCAT_BCFTOOLS.out.vcfs, ch_dbsnp, ch_dbsnp_tbi ) ch_versions = ch_versions.mix(VCF_DBSNP_VCFANNO.out.versions) - ch_annotated = TABIX_BGZIP.out.output + ch_annotated = VCF_DBSNP_VCFANNO.out.vcfs } else { ch_annotated = VCF_CONCAT_BCFTOOLS.out.vcfs } From 3ae299d9066d6943d708afda88fb7e7a842fa7ac Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Mon, 4 Nov 2024 12:02:36 +0100 Subject: [PATCH 063/167] small memory fix --- conf/modules.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conf/modules.config b/conf/modules.config index d4642735..2faaa75e 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -188,7 +188,7 @@ process { withName: "^.*BAM_CALL_ELPREP:ELPREP_FILTER\$" { cpus = { 25 * task.attempt } - memory = { 260.GB * task.attempt } + memory = { 250.GB * task.attempt } ext.args = "--reference-confidence GVCF" } From 23729f7537a311dd2fbf30cb99edc5c7816de7e7 Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Mon, 4 Nov 2024 13:21:05 +0100 Subject: [PATCH 064/167] update nf-test ci command --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 2ed581fc..250fc3e4 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -67,7 +67,7 @@ jobs: - name: Run pipeline with test data run: | - $CONDA/bin/nf-test test --tag ${{ matrix.test }} --junitxml=default.xml + $CONDA/bin/nf-test test --tag ${{ matrix.test }} --ci --junitxml=default.xml - name: Publish Test Report uses: mikepenz/action-junit-report@v3 From ef5a811e0c52b54c5bf3af4fc9e8644817d4ddbb Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Mon, 4 Nov 2024 13:24:55 +0100 Subject: [PATCH 065/167] nf-test ci updates --- .github/workflows/ci.yml | 2 +- tests/nextflow.config | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 250fc3e4..118a4a21 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -67,7 +67,7 @@ jobs: - name: Run pipeline with test data run: | - $CONDA/bin/nf-test test --tag ${{ matrix.test }} --ci --junitxml=default.xml + $CONDA/bin/nf-test test --tag ${{ matrix.test }} --ci --only-changed --junitxml=default.xml - name: Publish Test Report uses: mikepenz/action-junit-report@v3 diff --git a/tests/nextflow.config b/tests/nextflow.config index 1643f647..80312509 100644 --- a/tests/nextflow.config +++ b/tests/nextflow.config @@ -66,7 +66,8 @@ params { igenomes_ignore = true genomes_ignore = true - validationSchemaIgnoreParams = 'genomes,igenomes_base,test_data,cram1,cram2,cram3,crai1,crai2,crai3,vcf1,vcf2,vcf3,tbi1,tbi2,tbi3,gvcf1,gvcf2,gvcf3,gtbi1,gtbi2,gtbi3,famvcf,famtbi,ped,bed,split1,split2,split3' + validationSchemaIgnoreParams = 'genomes,igenomes_base,test_data,cram1,cram2,cram3,crai1,crai2,crai3,vcf1,vcf2,vcf3,tbi1,tbi2,tbi3,gvcf1,gvcf2,gvcf3,gtbi1,gtbi2,gtbi3,famvcf,famtbi,ped,bed,split1,split2,split3,modules_testdata_base_path' + modules_testdata_base_path = 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/' } process { From 5afc3f30e555adc0c02a45a19368debd45e44582 Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Mon, 4 Nov 2024 13:47:53 +0100 Subject: [PATCH 066/167] use sharding and filters on nf-test --- .github/workflows/ci.yml | 30 +++++++++++++----------------- 1 file changed, 13 insertions(+), 17 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 118a4a21..06e17afd 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -11,6 +11,7 @@ on: env: NXF_ANSI_LOG: false + NFT_MAX_SHARDS: 5 concurrency: group: "${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}" @@ -27,21 +28,11 @@ jobs: NXF_VER: - "24.04.2" - "latest-everything" - test: - - "pipeline_default" - - "pipeline_callers" - - "pipeline_variations" - - "pipeline_variations2" - - "pipeline_gvcfs" - - "cram_call_genotype_gatk4" - - "bam_call_vardictjava" - - "cram_prepare_samtools_bedtools" - - "input_split_bedtools" - - "vcf_annotation" - - "vcf_extract_relate_somalier" - - "vcf_ped_rtgtools" - - "vcf_upd_updio" - - "vcf_validate_small_variants" + filter: + - "module" + - "workflow" + - "pipeline" + shard: [1,2,3,4,5] steps: - name: Free some space run: | @@ -65,9 +56,14 @@ jobs: run: | conda install -c bioconda nf-test - - name: Run pipeline with test data + - name: "Run ${{ matrix.filter }} tests | ${{ matrix.shard }}/${{ env.NFT_MAX_SHARDS }}" run: | - $CONDA/bin/nf-test test --tag ${{ matrix.test }} --ci --only-changed --junitxml=default.xml + $CONDA/bin/nf-test test \ + --ci \ + --changed-since HEAD^ \ + --shard ${{ matrix.shard }}/${{ env.NFT_MAX_SHARDS }} \ + --filter ${{ matrix.filter }} \ + --junitxml=default.xml - name: Publish Test Report uses: mikepenz/action-junit-report@v3 From 7d28f4d22e659d0a059522c1b2c93202a85f0892 Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Mon, 4 Nov 2024 13:50:05 +0100 Subject: [PATCH 067/167] update test name --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 06e17afd..ee77c4cc 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -19,7 +19,7 @@ concurrency: jobs: test_all: - name: Run nf-test with ${{ matrix.test }}-${{ matrix.NXF_VER }} + name: Run ${{ matrix.filter }} tests | ${{ matrix.shard }}/${{ env.NFT_MAX_SHARDS }} (${{ matrix.NXF_VER }}) # Only run on push if this is the nf-core dev branch (merged PRs) if: "${{ github.event_name != 'push' || (github.event_name == 'push' && github.repository == 'nf-cmgg/germline') }}" runs-on: ubuntu-latest From 9e736b0a34fb35684097908fc8988585d17e4b58 Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Mon, 4 Nov 2024 13:53:14 +0100 Subject: [PATCH 068/167] fix env issue in ci --- .github/workflows/ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index ee77c4cc..408facd0 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -19,7 +19,7 @@ concurrency: jobs: test_all: - name: Run ${{ matrix.filter }} tests | ${{ matrix.shard }}/${{ env.NFT_MAX_SHARDS }} (${{ matrix.NXF_VER }}) + name: Run ${{ matrix.filter }} tests | ${{ matrix.shard }}/${{ NFT_MAX_SHARDS }} (${{ matrix.NXF_VER }}) # Only run on push if this is the nf-core dev branch (merged PRs) if: "${{ github.event_name != 'push' || (github.event_name == 'push' && github.repository == 'nf-cmgg/germline') }}" runs-on: ubuntu-latest @@ -56,7 +56,7 @@ jobs: run: | conda install -c bioconda nf-test - - name: "Run ${{ matrix.filter }} tests | ${{ matrix.shard }}/${{ env.NFT_MAX_SHARDS }}" + - name: "Run ${{ matrix.filter }} tests | ${{ matrix.shard }}/${{ NFT_MAX_SHARDS }}" run: | $CONDA/bin/nf-test test \ --ci \ From 2fd1b38d4ba56c0c740fe9c5fcc9fdc1d6301524 Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Mon, 4 Nov 2024 13:55:54 +0100 Subject: [PATCH 069/167] fix env issue in ci --- .github/workflows/ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 408facd0..da432d40 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -19,7 +19,7 @@ concurrency: jobs: test_all: - name: Run ${{ matrix.filter }} tests | ${{ matrix.shard }}/${{ NFT_MAX_SHARDS }} (${{ matrix.NXF_VER }}) + name: Run ${{ matrix.filter }} tests | shard ${{ matrix.shard }} (${{ matrix.NXF_VER }}) # Only run on push if this is the nf-core dev branch (merged PRs) if: "${{ github.event_name != 'push' || (github.event_name == 'push' && github.repository == 'nf-cmgg/germline') }}" runs-on: ubuntu-latest @@ -56,7 +56,7 @@ jobs: run: | conda install -c bioconda nf-test - - name: "Run ${{ matrix.filter }} tests | ${{ matrix.shard }}/${{ NFT_MAX_SHARDS }}" + - name: "Run ${{ matrix.filter }} tests | ${{ matrix.shard }}/${{ env.NFT_MAX_SHARDS }}" run: | $CONDA/bin/nf-test test \ --ci \ From f4654f05051b83d0e4cdf5a29b215d2cdc751709 Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Mon, 4 Nov 2024 14:00:02 +0100 Subject: [PATCH 070/167] module -> process in ci --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index da432d40..f71c380a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -29,7 +29,7 @@ jobs: - "24.04.2" - "latest-everything" filter: - - "module" + - "process" - "workflow" - "pipeline" shard: [1,2,3,4,5] From aa015fcc97a8cecf45bac61b55d8f209c1159a05 Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Mon, 4 Nov 2024 14:06:14 +0100 Subject: [PATCH 071/167] update fetch depth in ci --- .github/workflows/ci.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f71c380a..53b13318 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -43,6 +43,8 @@ jobs: - name: Check out pipeline code uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4 + with: + fetch-depth: 0 - name: Install Nextflow uses: nf-core/setup-nextflow@v2 From c444fa50042406683193528e9fee69b331321939 Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Mon, 4 Nov 2024 15:59:48 +0100 Subject: [PATCH 072/167] add test for bam_call_elprep --- .../local/bam_call_elprep/main.nf.test | 107 ++++++++++++++++++ .../local/bam_call_elprep/main.nf.test.snap | 56 +++++++++ 2 files changed, 163 insertions(+) create mode 100644 tests/subworkflows/local/bam_call_elprep/main.nf.test create mode 100644 tests/subworkflows/local/bam_call_elprep/main.nf.test.snap diff --git a/tests/subworkflows/local/bam_call_elprep/main.nf.test b/tests/subworkflows/local/bam_call_elprep/main.nf.test new file mode 100644 index 00000000..2f639e35 --- /dev/null +++ b/tests/subworkflows/local/bam_call_elprep/main.nf.test @@ -0,0 +1,107 @@ +nextflow_workflow { + + name "Test Workflow BAM_CALL_ELPREP" + script "subworkflows/local/bam_call_elprep/main.nf" + workflow "BAM_CALL_ELPREP" + + tag "subworkflows" + tag "subworkflows_local" + tag "bam_call_elprep" + tag "vcf_dbsnp_vcfanno" + + test("bam_call_elprep - default") { + + + when { + params { + callers = "elprep" + } + workflow { + """ + input[0] = Channel.of([ + [id:"NA24143.00001", sample:"NA24143", family:"Ashkenazim", family_samples:"NA24143", split_count:3], + file(params.bam1, checkIfExists:true), + file(params.bai1, checkIfExists:true), + file(params.split1, checkIfExists:true) + ],[ + [id:"NA24143.00002", sample:"NA24143", family:"Ashkenazim", family_samples:"NA24143", split_count:3], + file(params.bam1, checkIfExists:true), + file(params.bai1, checkIfExists:true), + file(params.split2, checkIfExists:true) + ],[ + [id:"NA24143.00003", sample:"NA24143", family:"Ashkenazim", family_samples:"NA24143", split_count:3], + file(params.bam1, checkIfExists:true), + file(params.bai1, checkIfExists:true), + file(params.split3, checkIfExists:true) + ]) + input[1] = Channel.value([ + [id:"fasta"], + file(params.elfasta, checkIfExists:true) + ]) + input[2] = [[],[]] + input[3] = [[],[]] + input[4] = [[],[]] + """ + } + } + + then { + assertAll( + { assert workflow.success }, + { assert snapshot( + workflow.out.gvcfs.collect { [it[0], "${file(it[1]).name},variantsMD5:${path(it[1]).vcf.variantsMD5}", file(it[2]).name] }, + workflow.out.reports + ).match() } + ) + } + + } + + test("bam_call_elprep - dbsnp") { + + + when { + params { + callers = "elprep" + } + workflow { + """ + input[0] = Channel.of([ + [id:"NA24143.00001", sample:"NA24143", family:"Ashkenazim", family_samples:"NA24143", split_count:3], + file(params.bam1, checkIfExists:true), + file(params.bai1, checkIfExists:true), + file(params.split1, checkIfExists:true) + ],[ + [id:"NA24143.00002", sample:"NA24143", family:"Ashkenazim", family_samples:"NA24143", split_count:3], + file(params.bam1, checkIfExists:true), + file(params.bai1, checkIfExists:true), + file(params.split2, checkIfExists:true) + ],[ + [id:"NA24143.00003", sample:"NA24143", family:"Ashkenazim", family_samples:"NA24143", split_count:3], + file(params.bam1, checkIfExists:true), + file(params.bai1, checkIfExists:true), + file(params.split3, checkIfExists:true) + ]) + input[1] = Channel.value([ + [id:"fasta"], + file(params.elfasta, checkIfExists:true) + ]) + input[2] = [[],[]] + input[3] = [[id:'dbsnp'], file(params.vcf1, checkIfExists:true)] + input[4] = [[id:'dbsnp'], file(params.tbi1, checkIfExists:true)] + """ + } + } + + then { + assertAll( + { assert workflow.success }, + { assert snapshot( + workflow.out.gvcfs.collect { [it[0], "${file(it[1]).name},variantsMD5:${path(it[1]).vcf.variantsMD5}", file(it[2]).name] }, + workflow.out.reports + ).match() } + ) + } + + } +} diff --git a/tests/subworkflows/local/bam_call_elprep/main.nf.test.snap b/tests/subworkflows/local/bam_call_elprep/main.nf.test.snap new file mode 100644 index 00000000..ae4dbbbd --- /dev/null +++ b/tests/subworkflows/local/bam_call_elprep/main.nf.test.snap @@ -0,0 +1,56 @@ +{ + "bam_call_elprep - dbsnp": { + "content": [ + [ + [ + { + "id": "NA24143", + "sample": "NA24143", + "family": "Ashkenazim", + "family_samples": "NA24143", + "caller": "elprep" + }, + "NA24143.elprep.g.vcf.gz,variantsMD5:974ed65cfad6264db7c6589d6b7d7d74", + "NA24143.elprep.g.vcf.gz.tbi" + ] + ], + [ + [ + "NA24143.elprep.bcftools_stats.txt:md5,36b9f979c03b24d87e2dc710baf3672b" + ] + ] + ], + "meta": { + "nf-test": "0.9.1", + "nextflow": "24.10.0" + }, + "timestamp": "2024-11-04T15:56:30.054330853" + }, + "bam_call_elprep - default": { + "content": [ + [ + [ + { + "id": "NA24143", + "sample": "NA24143", + "family": "Ashkenazim", + "family_samples": "NA24143", + "caller": "elprep" + }, + "NA24143.elprep.g.vcf.gz,variantsMD5:974ed65cfad6264db7c6589d6b7d7d74", + "NA24143.elprep.g.vcf.gz.tbi" + ] + ], + [ + [ + "NA24143.elprep.bcftools_stats.txt:md5,36b9f979c03b24d87e2dc710baf3672b" + ] + ] + ], + "meta": { + "nf-test": "0.9.1", + "nextflow": "24.10.0" + }, + "timestamp": "2024-11-04T15:55:56.561058236" + } +} \ No newline at end of file From acf18e86b3a8ad24006b44f2e5b75e52d74100f1 Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Tue, 5 Nov 2024 09:54:43 +0100 Subject: [PATCH 073/167] fix some more tests --- .../local/bam_call_vardictjava/main.nf.test | 122 +---------------- .../bam_call_vardictjava/main.nf.test.snap | 63 +-------- .../local/cram_call_gatk4/main.nf.test | 129 ++++++++++++++++++ .../local/cram_call_gatk4/main.nf.test.snap | 36 +++++ .../{main.nf.test => main.nf.test.disabled} | 1 - 5 files changed, 170 insertions(+), 181 deletions(-) create mode 100644 tests/subworkflows/local/cram_call_gatk4/main.nf.test create mode 100644 tests/subworkflows/local/cram_call_gatk4/main.nf.test.snap rename tests/subworkflows/local/cram_call_genotype_gatk4/{main.nf.test => main.nf.test.disabled} (99%) diff --git a/tests/subworkflows/local/bam_call_vardictjava/main.nf.test b/tests/subworkflows/local/bam_call_vardictjava/main.nf.test index 6615e3ab..1b933dda 100644 --- a/tests/subworkflows/local/bam_call_vardictjava/main.nf.test +++ b/tests/subworkflows/local/bam_call_vardictjava/main.nf.test @@ -8,65 +8,11 @@ nextflow_workflow { tag "subworkflows_local" tag "bam_call_vardictjava" tag "vcf_concat_bcftools" - tag "vcf_filter_bcftools" test("bam_call_vardictjava - default") { - - when { - params { - callers = "vardict" - } - workflow { - """ - input[0] = Channel.of([ - [id:"NA24143.00001", sample:"NA24143", family:"Ashkenazim", family_samples:"NA24143", split_count:3], - file(params.bam1, checkIfExists:true), - file(params.bai1, checkIfExists:true), - file(params.split1, checkIfExists:true) - ],[ - [id:"NA24143.00002", sample:"NA24143", family:"Ashkenazim", family_samples:"NA24143", split_count:3], - file(params.bam1, checkIfExists:true), - file(params.bai1, checkIfExists:true), - file(params.split2, checkIfExists:true) - ],[ - [id:"NA24143.00003", sample:"NA24143", family:"Ashkenazim", family_samples:"NA24143", split_count:3], - file(params.bam1, checkIfExists:true), - file(params.bai1, checkIfExists:true), - file(params.split3, checkIfExists:true) - ]) - input[1] = Channel.value([ - [id:"fasta"], - file(params.fasta, checkIfExists:true) - ]) - input[2] = Channel.value([ - [id:"fai"], - file(params.fai, checkIfExists:true) - ]) - input[3] = [[],[]] - input[4] = [[],[]] - input[5] = false - """ - } - } - - then { - assertAll( - { assert workflow.success }, - { assert snapshot( - workflow.out.vcfs.collect { [it[0], "${file(it[1]).name},variantsMD5:${path(it[1]).vcf.variantsMD5}", file(it[2]).name] } - ).match("default") } - ) - } - - } - - test("bam_call_vardictjava - filter") { - - when { params { - filter = true callers = "vardict" } workflow { @@ -97,72 +43,6 @@ nextflow_workflow { ]) input[3] = [[],[]] input[4] = [[],[]] - input[5] = true - """ - } - } - - then { - assertAll( - { assert workflow.success }, - { assert snapshot( - workflow.out.vcfs.collect { [it[0], "${file(it[1]).name},variantsMD5:${path(it[1]).vcf.variantsMD5}", file(it[2]).name] } - ).match("filter") } - ) - } - - } - - test("bam_call_vardictjava - family") { - // The family should not be merged here - - when { - params { - callers = "vardict" - } - workflow { - """ - input[0] = Channel.of([ - [id:"NA24143.00001", sample:"NA24143", family:"Ashkenazim", family_samples:"NA24143,NA24149", split_count:3], - file(params.bam1, checkIfExists:true), - file(params.bai1, checkIfExists:true), - file(params.split1, checkIfExists:true) - ],[ - [id:"NA24143.00002", sample:"NA24143", family:"Ashkenazim", family_samples:"NA24143,NA24149", split_count:3], - file(params.bam1, checkIfExists:true), - file(params.bai1, checkIfExists:true), - file(params.split2, checkIfExists:true) - ],[ - [id:"NA24143.00003", sample:"NA24143", family:"Ashkenazim", family_samples:"NA24143,NA24149", split_count:3], - file(params.bam1, checkIfExists:true), - file(params.bai1, checkIfExists:true), - file(params.split3, checkIfExists:true) - ],[ - [id:"NA24149.00001", sample:"NA24149", family:"Ashkenazim", family_samples:"NA24143,NA24149", split_count:3], - file(params.bam2, checkIfExists:true), - file(params.bai2, checkIfExists:true), - file(params.split1, checkIfExists:true) - ],[ - [id:"NA24149.00002", sample:"NA24149", family:"Ashkenazim", family_samples:"NA24143,NA24149", split_count:3], - file(params.bam2, checkIfExists:true), - file(params.bai2, checkIfExists:true), - file(params.split2, checkIfExists:true) - ],[ - [id:"NA24149.00003", sample:"NA24149", family:"Ashkenazim", family_samples:"NA24143,NA24149", split_count:3], - file(params.bam2, checkIfExists:true), - file(params.bai2, checkIfExists:true), - file(params.split3, checkIfExists:true) - ]) - input[1] = Channel.value([ - [id:"fasta"], - file(params.fasta, checkIfExists:true) - ]) - input[2] = Channel.value([ - [id:"fai"], - file(params.fai, checkIfExists:true) - ]) - input[3] = [[],[]] - input[4] = [[],[]] input[5] = false """ } @@ -173,7 +53,7 @@ nextflow_workflow { { assert workflow.success }, { assert snapshot( workflow.out.vcfs.collect { [it[0], "${file(it[1]).name},variantsMD5:${path(it[1]).vcf.variantsMD5}", file(it[2]).name] } - ).match("family") } + ).match() } ) } diff --git a/tests/subworkflows/local/bam_call_vardictjava/main.nf.test.snap b/tests/subworkflows/local/bam_call_vardictjava/main.nf.test.snap index 8ae2d467..c7011326 100644 --- a/tests/subworkflows/local/bam_call_vardictjava/main.nf.test.snap +++ b/tests/subworkflows/local/bam_call_vardictjava/main.nf.test.snap @@ -1,5 +1,5 @@ { - "filter": { + "bam_call_vardictjava - default": { "content": [ [ [ @@ -16,64 +16,9 @@ ] ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" + "nf-test": "0.9.1", + "nextflow": "24.10.0" }, - "timestamp": "2024-10-23T11:17:08.827619348" - }, - "default": { - "content": [ - [ - [ - { - "id": "NA24143", - "sample": "NA24143", - "family": "Ashkenazim", - "family_samples": "NA24143", - "caller": "vardict" - }, - "NA24143.vardict.vcf.gz,variantsMD5:98497d2c15c6e3781f5ddeb81bf6288f", - "NA24143.vardict.vcf.gz.tbi" - ] - ] - ], - "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" - }, - "timestamp": "2024-10-23T11:16:29.818590197" - }, - "family": { - "content": [ - [ - [ - { - "id": "NA24143", - "sample": "NA24143", - "family": "Ashkenazim", - "family_samples": "NA24143", - "caller": "vardict" - }, - "NA24143.vardict.vcf.gz,variantsMD5:98497d2c15c6e3781f5ddeb81bf6288f", - "NA24143.vardict.vcf.gz.tbi" - ], - [ - { - "id": "NA24149", - "sample": "NA24149", - "family": "Ashkenazim", - "family_samples": "NA24149", - "caller": "vardict" - }, - "NA24149.vardict.vcf.gz,variantsMD5:37c24a3165a79df0b9744e80a9255f83", - "NA24149.vardict.vcf.gz.tbi" - ] - ] - ], - "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" - }, - "timestamp": "2024-10-23T11:17:59.686967502" + "timestamp": "2024-11-05T09:44:33.098049827" } } \ No newline at end of file diff --git a/tests/subworkflows/local/cram_call_gatk4/main.nf.test b/tests/subworkflows/local/cram_call_gatk4/main.nf.test new file mode 100644 index 00000000..fa45e6a6 --- /dev/null +++ b/tests/subworkflows/local/cram_call_gatk4/main.nf.test @@ -0,0 +1,129 @@ +nextflow_workflow { + + name "Test Workflow CRAM_CALL_GATK4" + script "subworkflows/local/cram_call_gatk4/main.nf" + workflow "CRAM_CALL_GATK4" + + tag "subworkflows" + tag "subworkflows_local" + tag "cram_call_gatk4" + tag "vcf_concat_bcftools" + + test("cram_call_gatk4 - default") { + + + when { + params { + callers = "haplotypecaller" + } + workflow { + """ + input[0] = Channel.of([ + [id:"NA24143.00001", sample:"NA24143", family:"Ashkenazim", family_samples:"NA24143", split_count:3], + file(params.cram1, checkIfExists:true), + file(params.crai1, checkIfExists:true), + file(params.split1, checkIfExists:true) + ],[ + [id:"NA24143.00002", sample:"NA24143", family:"Ashkenazim", family_samples:"NA24143", split_count:3], + file(params.cram1, checkIfExists:true), + file(params.crai1, checkIfExists:true), + file(params.split2, checkIfExists:true) + ],[ + [id:"NA24143.00003", sample:"NA24143", family:"Ashkenazim", family_samples:"NA24143", split_count:3], + file(params.cram1, checkIfExists:true), + file(params.crai1, checkIfExists:true), + file(params.split3, checkIfExists:true) + ]) + input[1] = Channel.value([ + [id:"fasta"], + file(params.fasta, checkIfExists:true) + ]) + input[2] = Channel.value([ + [id:"fai"], + file(params.fai, checkIfExists:true) + ]) + input[3] = Channel.value([ + [id:"dict"], + file(params.dict, checkIfExists:true) + ]) + input[4] = [[],[]] + input[5] = [[],[]] + input[6] = [[],[]] + input[7] = false + """ + } + } + + then { + assertAll( + { assert workflow.success }, + { assert snapshot( + workflow.out.vcfs.collect { [it[0], "${file(it[1]).name},variantsMD5:${path(it[1]).vcf.variantsMD5}", file(it[2]).name] }, + workflow.out.reports + ).match() } + ) + } + + } + + test("cram_call_gatk4 - dragstr") { + + + when { + params { + callers = "haplotypecaller" + } + workflow { + """ + input[0] = Channel.of([ + [id:"NA24143.00001", sample:"NA24143", family:"Ashkenazim", family_samples:"NA24143", split_count:3], + file(params.cram1, checkIfExists:true), + file(params.crai1, checkIfExists:true), + file(params.split1, checkIfExists:true) + ],[ + [id:"NA24143.00002", sample:"NA24143", family:"Ashkenazim", family_samples:"NA24143", split_count:3], + file(params.cram1, checkIfExists:true), + file(params.crai1, checkIfExists:true), + file(params.split2, checkIfExists:true) + ],[ + [id:"NA24143.00003", sample:"NA24143", family:"Ashkenazim", family_samples:"NA24143", split_count:3], + file(params.cram1, checkIfExists:true), + file(params.crai1, checkIfExists:true), + file(params.split3, checkIfExists:true) + ]) + input[1] = Channel.value([ + [id:"fasta"], + file(params.fasta, checkIfExists:true) + ]) + input[2] = Channel.value([ + [id:"fai"], + file(params.fai, checkIfExists:true) + ]) + input[3] = Channel.value([ + [id:"dict"], + file(params.dict, checkIfExists:true) + ]) + input[4] = Channel.value([ + [id:"str"], + file(params.strtablefile, checkIfExists:true) + ]) + input[5] = [[],[]] + input[6] = [[],[]] + input[7] = true + """ + } + } + + then { + assertAll( + { assert workflow.success }, + { assert snapshot( + workflow.out.vcfs.collect { [it[0], "${file(it[1]).name},variantsMD5:${path(it[1]).vcf.variantsMD5}", file(it[2]).name] }, + workflow.out.reports + ).match() } + ) + } + + } + +} diff --git a/tests/subworkflows/local/cram_call_gatk4/main.nf.test.snap b/tests/subworkflows/local/cram_call_gatk4/main.nf.test.snap new file mode 100644 index 00000000..57de17e4 --- /dev/null +++ b/tests/subworkflows/local/cram_call_gatk4/main.nf.test.snap @@ -0,0 +1,36 @@ +{ + "cram_call_gatk4 - default": { + "content": [ + [ + + ], + [ + [ + "NA24143.haplotypecaller.bcftools_stats.txt:md5,09b4e7674e0f5b98b1e548df3002250e" + ] + ] + ], + "meta": { + "nf-test": "0.9.1", + "nextflow": "24.10.0" + }, + "timestamp": "2024-11-05T09:53:12.737680049" + }, + "cram_call_gatk4 - dragstr": { + "content": [ + [ + + ], + [ + [ + "NA24143.haplotypecaller.bcftools_stats.txt:md5,c4dad5b8e05871dda66df42b1f6c89ff" + ] + ] + ], + "meta": { + "nf-test": "0.9.1", + "nextflow": "24.10.0" + }, + "timestamp": "2024-11-05T09:54:07.696125828" + } +} \ No newline at end of file diff --git a/tests/subworkflows/local/cram_call_genotype_gatk4/main.nf.test b/tests/subworkflows/local/cram_call_genotype_gatk4/main.nf.test.disabled similarity index 99% rename from tests/subworkflows/local/cram_call_genotype_gatk4/main.nf.test rename to tests/subworkflows/local/cram_call_genotype_gatk4/main.nf.test.disabled index 37eca413..f8c447d9 100644 --- a/tests/subworkflows/local/cram_call_genotype_gatk4/main.nf.test +++ b/tests/subworkflows/local/cram_call_genotype_gatk4/main.nf.test.disabled @@ -36,7 +36,6 @@ nextflow_workflow { file(params.crai1, checkIfExists:true), file(params.split3, checkIfExists:true) ]) - input[1] = Channel.empty() input[2] = Channel.value([ [id:"fasta"], file(params.fasta, checkIfExists:true) From 3faa5404a18c961a637c1b1dfa97a4fe32140efc Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Tue, 5 Nov 2024 14:48:29 +0100 Subject: [PATCH 074/167] more test fixes --- .github/workflows/ci.yml | 2 +- modules.json | 191 ++----- .../nf-core/elprep/filter/elprep-filter.diff | 47 +- modules/nf-core/elprep/filter/main.nf | 1 - .../elprep/filter/tests/main.nf.test.snap | 20 +- .../local/gvcf_joint_genotype_gatk4/main.nf | 4 +- subworkflows/local/vcf_dbsnp_vcfanno/main.nf | 8 +- .../main.nf.test.disabled | 494 ------------------ .../main.nf.test.snap | 164 ------ .../gvcf_joint_genotype_gatk4/main.nf.test | 190 +++++++ .../main.nf.test.snap | 87 +++ .../local/vcf_dbsnp_vcfanno/main.nf.test | 47 ++ .../local/vcf_dbsnp_vcfanno/main.nf.test.snap | 23 + 13 files changed, 449 insertions(+), 829 deletions(-) delete mode 100644 tests/subworkflows/local/cram_call_genotype_gatk4/main.nf.test.disabled delete mode 100644 tests/subworkflows/local/cram_call_genotype_gatk4/main.nf.test.snap create mode 100644 tests/subworkflows/local/gvcf_joint_genotype_gatk4/main.nf.test create mode 100644 tests/subworkflows/local/gvcf_joint_genotype_gatk4/main.nf.test.snap create mode 100644 tests/subworkflows/local/vcf_dbsnp_vcfanno/main.nf.test create mode 100644 tests/subworkflows/local/vcf_dbsnp_vcfanno/main.nf.test.snap diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 53b13318..d985e187 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -32,7 +32,7 @@ jobs: - "process" - "workflow" - "pipeline" - shard: [1,2,3,4,5] + shard: [1, 2, 3, 4, 5] steps: - name: Free some space run: | diff --git a/modules.json b/modules.json index 70af501e..92877e49 100644 --- a/modules.json +++ b/modules.json @@ -8,310 +8,223 @@ "bcftools/annotate": { "branch": "master", "git_sha": "cb08035150685b11d890d90c9534d4f16869eaec", - "installed_by": [ - "modules" - ], + "installed_by": ["modules"], "patch": "modules/nf-core/bcftools/annotate/bcftools-annotate.diff" }, "bcftools/concat": { "branch": "master", "git_sha": "d1e0ec7670fa77905a378627232566ce54c3c26d", - "installed_by": [ - "vcf_annotate_ensemblvep_snpeff" - ] + "installed_by": ["vcf_annotate_ensemblvep_snpeff"] }, "bcftools/filter": { "branch": "master", "git_sha": "f85dbddd7a335fc0f5ac331e8d22ca94123b654b", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "bcftools/norm": { "branch": "master", "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "bcftools/pluginscatter": { "branch": "master", "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", - "installed_by": [ - "vcf_annotate_ensemblvep_snpeff" - ] + "installed_by": ["vcf_annotate_ensemblvep_snpeff"] }, "bcftools/query": { "branch": "master", "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "bcftools/reheader": { "branch": "master", "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "bcftools/sort": { "branch": "master", "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", - "installed_by": [ - "vcf_annotate_ensemblvep_snpeff" - ] + "installed_by": ["vcf_annotate_ensemblvep_snpeff"] }, "bcftools/stats": { "branch": "master", "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "bedtools/intersect": { "branch": "master", "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "bedtools/merge": { "branch": "master", "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "bedtools/split": { "branch": "master", "git_sha": "cb08035150685b11d890d90c9534d4f16869eaec", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "elprep/fastatoelfasta": { "branch": "master", "git_sha": "74ac5351a11a184171489dee73652e8b69ba9d22", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "elprep/filter": { "branch": "master", "git_sha": "909c4dcdbb1e751214e2bb155e8c0a59633ed12a", - "installed_by": [ - "modules" - ], + "installed_by": ["modules"], "patch": "modules/nf-core/elprep/filter/elprep-filter.diff" }, "ensemblvep/download": { "branch": "master", "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", - "installed_by": [ - "modules" - ], + "installed_by": ["modules"], "patch": "modules/nf-core/ensemblvep/download/ensemblvep-download.diff" }, "ensemblvep/vep": { "branch": "master", "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", - "installed_by": [ - "vcf_annotate_ensemblvep_snpeff" - ], + "installed_by": ["vcf_annotate_ensemblvep_snpeff"], "patch": "modules/nf-core/ensemblvep/vep/ensemblvep-vep.diff" }, "gatk4/calibratedragstrmodel": { "branch": "master", "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "gatk4/composestrtablefile": { "branch": "master", "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "gatk4/createsequencedictionary": { "branch": "master", "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "gatk4/genomicsdbimport": { "branch": "master", "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "gatk4/genotypegvcfs": { "branch": "master", "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "gatk4/haplotypecaller": { "branch": "master", "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "gawk": { "branch": "master", "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "mosdepth": { "branch": "master", "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "multiqc": { "branch": "master", "git_sha": "b8d36829fa84b6e404364abff787e8b07f6d058c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "rtgtools/format": { "branch": "master", "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "rtgtools/pedfilter": { "branch": "master", "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", - "installed_by": [ - "modules" - ], + "installed_by": ["modules"], "patch": "modules/nf-core/rtgtools/pedfilter/rtgtools-pedfilter.diff" }, "rtgtools/rocplot": { "branch": "master", "git_sha": "83e2df1e4ec594beb8a575b4db0b4197900f4ebd", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "rtgtools/vcfeval": { "branch": "master", "git_sha": "83e2df1e4ec594beb8a575b4db0b4197900f4ebd", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "samtools/convert": { "branch": "master", "git_sha": "b13f07be4c508d6ff6312d354d09f2493243e208", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "samtools/faidx": { "branch": "master", "git_sha": "b13f07be4c508d6ff6312d354d09f2493243e208", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "samtools/index": { "branch": "master", "git_sha": "b13f07be4c508d6ff6312d354d09f2493243e208", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "samtools/merge": { "branch": "master", "git_sha": "b13f07be4c508d6ff6312d354d09f2493243e208", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "snpeff/snpeff": { "branch": "master", "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", - "installed_by": [ - "vcf_annotate_ensemblvep_snpeff" - ] + "installed_by": ["vcf_annotate_ensemblvep_snpeff"] }, "somalier/extract": { "branch": "master", "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "somalier/relate": { "branch": "master", "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", - "installed_by": [ - "modules" - ], + "installed_by": ["modules"], "patch": "modules/nf-core/somalier/relate/somalier-relate.diff" }, "tabix/bgzip": { "branch": "master", "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", - "installed_by": [ - "vcf_annotate_ensemblvep_snpeff" - ] + "installed_by": ["vcf_annotate_ensemblvep_snpeff"] }, "tabix/bgziptabix": { "branch": "master", "git_sha": "f448e846bdadd80fc8be31fbbc78d9f5b5131a45", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "tabix/tabix": { "branch": "master", "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", - "installed_by": [ - "modules", - "vcf_annotate_ensemblvep_snpeff" - ] + "installed_by": ["modules", "vcf_annotate_ensemblvep_snpeff"] }, "untar": { "branch": "master", "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "vardictjava": { "branch": "master", "git_sha": "f85452fcbebab5dfd77c0752236f6f86e9a03b32", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "vcf2db": { "branch": "master", "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "vcfanno": { "branch": "master", "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] } } }, @@ -320,33 +233,25 @@ "utils_nextflow_pipeline": { "branch": "master", "git_sha": "1b6b9a3338d011367137808b49b923515080e3ba", - "installed_by": [ - "subworkflows" - ] + "installed_by": ["subworkflows"] }, "utils_nfcore_pipeline": { "branch": "master", "git_sha": "1b6b9a3338d011367137808b49b923515080e3ba", - "installed_by": [ - "subworkflows" - ] + "installed_by": ["subworkflows"] }, "utils_nfschema_plugin": { "branch": "master", "git_sha": "bbd5a41f4535a8defafe6080e00ea74c45f4f96c", - "installed_by": [ - "subworkflows" - ] + "installed_by": ["subworkflows"] }, "vcf_annotate_ensemblvep_snpeff": { "branch": "master", "git_sha": "1b2fdf082b2ea7976b112e149a474d816094724c", - "installed_by": [ - "subworkflows" - ] + "installed_by": ["subworkflows"] } } } } } -} \ No newline at end of file +} diff --git a/modules/nf-core/elprep/filter/elprep-filter.diff b/modules/nf-core/elprep/filter/elprep-filter.diff index 47bb8da9..3a357774 100644 --- a/modules/nf-core/elprep/filter/elprep-filter.diff +++ b/modules/nf-core/elprep/filter/elprep-filter.diff @@ -19,10 +19,55 @@ Changes in 'elprep/filter/main.nf': ${reference_sequences_cmd} \\ ${filter_regions_cmd} \\ ${markdup_cmd} \\ +@@ -106,7 +105,6 @@ + if ("$bam" == "${prefix}.${suffix}") error "Input and output names are the same, set prefix in module configuration to disambiguate!" + + """ +- touch ${prefix}.${suffix} + touch elprep-${timestamp}.log + ${markdup_cmd} + ${bqsr_cmd} 'modules/nf-core/elprep/filter/environment.yml' is unchanged 'modules/nf-core/elprep/filter/meta.yml' is unchanged 'modules/nf-core/elprep/filter/tests/main.nf.test' is unchanged -'modules/nf-core/elprep/filter/tests/main.nf.test.snap' is unchanged +Changes in 'elprep/filter/tests/main.nf.test.snap': +--- modules/nf-core/elprep/filter/tests/main.nf.test.snap ++++ modules/nf-core/elprep/filter/tests/main.nf.test.snap +@@ -1,15 +1,7 @@ + { + "test-elprep-filter": { + "content": [ +- [ +- [ +- { +- "id": "test", +- "single_end": false +- }, +- "test.bam,readsMD5:463ac3b905fbf4ddf113a94dbfa8d69f" +- ] +- ], ++ null, + [ + + ], +@@ -64,15 +56,7 @@ + }, + "test-elprep-filter-stub": { + "content": [ +- [ +- [ +- { +- "id": "test", +- "single_end": false +- }, +- "test.bam:md5,d41d8cd98f00b204e9800998ecf8427e" +- ] +- ], ++ null, + [ + + ], + 'modules/nf-core/elprep/filter/tests/nextflow.config' is unchanged ************************************************************ diff --git a/modules/nf-core/elprep/filter/main.nf b/modules/nf-core/elprep/filter/main.nf index 231223ec..df445339 100644 --- a/modules/nf-core/elprep/filter/main.nf +++ b/modules/nf-core/elprep/filter/main.nf @@ -105,7 +105,6 @@ process ELPREP_FILTER { if ("$bam" == "${prefix}.${suffix}") error "Input and output names are the same, set prefix in module configuration to disambiguate!" """ - touch ${prefix}.${suffix} touch elprep-${timestamp}.log ${markdup_cmd} ${bqsr_cmd} diff --git a/modules/nf-core/elprep/filter/tests/main.nf.test.snap b/modules/nf-core/elprep/filter/tests/main.nf.test.snap index 9112fe30..a95cae7f 100644 --- a/modules/nf-core/elprep/filter/tests/main.nf.test.snap +++ b/modules/nf-core/elprep/filter/tests/main.nf.test.snap @@ -1,15 +1,7 @@ { "test-elprep-filter": { "content": [ - [ - [ - { - "id": "test", - "single_end": false - }, - "test.bam,readsMD5:463ac3b905fbf4ddf113a94dbfa8d69f" - ] - ], + null, [ ], @@ -64,15 +56,7 @@ }, "test-elprep-filter-stub": { "content": [ - [ - [ - { - "id": "test", - "single_end": false - }, - "test.bam:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], + null, [ ], diff --git a/subworkflows/local/gvcf_joint_genotype_gatk4/main.nf b/subworkflows/local/gvcf_joint_genotype_gatk4/main.nf index b3f761f4..4a7ff91f 100644 --- a/subworkflows/local/gvcf_joint_genotype_gatk4/main.nf +++ b/subworkflows/local/gvcf_joint_genotype_gatk4/main.nf @@ -16,7 +16,7 @@ include { VCF_CONCAT_BCFTOOLS } from '../vcf_concat_bcftools/main' workflow GVCF_JOINT_GENOTYPE_GATK4 { take: - ch_gvcfs // channel: [mandatory] [ val(meta), path(gvcf), path(tbi) ] => The GVCFs called with HaplotypeCaller + ch_gvcfs // channel: [mandatory] [ val(meta), path(gvcf), path(tbi) ] => The GVCFs ch_fasta // channel: [mandatory] [ path(fasta) ] => fasta reference ch_fai // channel: [mandatory] [ path(fai) ] => fasta reference index ch_dict // channel: [mandatory] [ path(dict) ] => sequence dictionary @@ -138,7 +138,7 @@ workflow GVCF_JOINT_GENOTYPE_GATK4 { } emit: - vcfs = ch_vcfs // [ val(meta), path(vcf) ] + vcfs = ch_vcfs // [ val(meta), path(vcf), path(tbi) ] versions = ch_versions // [ path(versions) ] } diff --git a/subworkflows/local/vcf_dbsnp_vcfanno/main.nf b/subworkflows/local/vcf_dbsnp_vcfanno/main.nf index 298dc0af..718b3067 100644 --- a/subworkflows/local/vcf_dbsnp_vcfanno/main.nf +++ b/subworkflows/local/vcf_dbsnp_vcfanno/main.nf @@ -4,8 +4,8 @@ include { TABIX_BGZIPTABIX } from '../../../modules/nf-core/tabix/bgziptabix/m workflow VCF_DBSNP_VCFANNO { take: ch_input // channel: [mandatory] [ val(meta), path(vcf), path(tbi), ] => VCF files to be annotated - ch_dbsnp // channel: [optional] [ path(vcf) ] => the dbnsp vcf file - ch_dbsnp_tbi // channel: [optional] [ path(tbi) ] => the dbsnp vcf index file + ch_dbsnp // channel: [optional] [ val(meta), path(vcf) ] => the dbnsp vcf file + ch_dbsnp_tbi // channel: [optional] [ val(meta), path(tbi) ] => the dbsnp vcf index file main: def ch_versions = Channel.empty() @@ -30,10 +30,8 @@ workflow VCF_DBSNP_VCFANNO { ) ch_versions = ch_versions.mix(TABIX_BGZIPTABIX.out.versions.first()) - def ch_vcfs = TABIX_BGZIPTABIX.out.gz_tbi - emit: - vcfs = ch_vcfs // channel: [ val(meta), path(vcf), path(tbi) ] + vcfs = TABIX_BGZIPTABIX.out.gz_tbi // channel: [ val(meta), path(vcf), path(tbi) ] versions = ch_versions // channel: [ path(versions.yml) ] diff --git a/tests/subworkflows/local/cram_call_genotype_gatk4/main.nf.test.disabled b/tests/subworkflows/local/cram_call_genotype_gatk4/main.nf.test.disabled deleted file mode 100644 index f8c447d9..00000000 --- a/tests/subworkflows/local/cram_call_genotype_gatk4/main.nf.test.disabled +++ /dev/null @@ -1,494 +0,0 @@ -nextflow_workflow { - - name "Test Workflow CRAM_CALL_GENOTYPE_GATK4" - script "subworkflows/local/cram_call_genotype_gatk4/main.nf" - workflow "CRAM_CALL_GENOTYPE_GATK4" - - tag "subworkflows" - tag "subworkflows_local" - tag "cram_call_genotype_gatk4" - tag "cram_call_gatk4" // This is also tested here - tag "gvcf_joint_genotype_gatk4" // This is also tested here - tag "vcf_filter_bcftools" // This is also tested here - tag "vcf_concat_bcftools" // This is also tested here - - test("cram_call_genotype_gatk4 - default - crams") { - - when { - params { - callers = "haplotypecaller" - } - workflow { - """ - input[0] = Channel.of([ - [id:"NA24143.00001", sample:"NA24143", family:"Ashkenazim", family_samples:"NA24143", split_count:3], - file(params.cram1, checkIfExists:true), - file(params.crai1, checkIfExists:true), - file(params.split1, checkIfExists:true) - ],[ - [id:"NA24143.00002", sample:"NA24143", family:"Ashkenazim", family_samples:"NA24143", split_count:3], - file(params.cram1, checkIfExists:true), - file(params.crai1, checkIfExists:true), - file(params.split2, checkIfExists:true) - ],[ - [id:"NA24143.00003", sample:"NA24143", family:"Ashkenazim", family_samples:"NA24143", split_count:3], - file(params.cram1, checkIfExists:true), - file(params.crai1, checkIfExists:true), - file(params.split3, checkIfExists:true) - ]) - input[2] = Channel.value([ - [id:"fasta"], - file(params.fasta, checkIfExists:true) - ]) - input[3] = Channel.value([ - [id:"fai"], - file(params.fai, checkIfExists:true) - ]) - input[4] = Channel.value([ - [id:"dict"], - file(params.dict, checkIfExists:true) - ]) - input[5] = Channel.value([ - [id:"strtablefile"], - file(params.strtablefile, checkIfExists:true) - ]) - input[6] = [[],[]] - input[7] = [[],[]] - input[8] = false - input[9] = false - input[10] = false - input[11] = false - input[12] = 2 - """ - } - } - - then { - assertAll( - { assert workflow.success }, - { assert snapshot( - workflow.out.vcfs.collect { it.collect { it instanceof Map ? it : file(it).name } }, - workflow.out.reports - ).match("default - crams") } - ) - } - - } - - test("cram_call_genotype_gatk4 - default - gvcfs") { - - when { - params { - callers = "haplotypecaller" - } - workflow { - """ - input[0] = Channel.empty() - input[1] = Channel.of([ - [id:"NA24143", sample:"NA24143", family:"Ashkenazim", family_samples:"NA24143"], - file(params.gvcf1, checkIfExists:true), - file(params.gtbi1, checkIfExists:true) - ]) - input[2] = Channel.value([ - [id:"fasta"], - file(params.fasta, checkIfExists:true) - ]) - input[3] = Channel.value([ - [id:"fai"], - file(params.fai, checkIfExists:true) - ]) - input[4] = Channel.value([ - [id:"dict"], - file(params.dict, checkIfExists:true) - ]) - input[5] = Channel.value([ - [id:"strtablefile"], - file(params.strtablefile, checkIfExists:true) - ]) - input[6] = [[],[]] - input[7] = [[],[]] - input[8] = false - input[9] = false - input[10] = false - input[11] = false - input[12] = 2 - """ - } - } - - then { - assertAll( - { assert workflow.success }, - { assert snapshot( - workflow.out.vcfs.collect { it.collect { it instanceof Map ? it : file(it).name } }, - workflow.out.reports - ).match("default - gvcfs") } - ) - } - - } - - test("cram_call_genotype_gatk4 - default - family") { - - when { - params { - callers = "haplotypecaller" - } - workflow { - """ - input[0] = Channel.of([ - [id:"NA24835.00001", sample:"NA24835", family:"Ashkenazim", family_samples:"NA24143,NA24149,NA24385", split_count:3], - file(params.cram3, checkIfExists:true), - file(params.crai3, checkIfExists:true), - file(params.split1, checkIfExists:true) - ],[ - [id:"NA24835.00002", sample:"NA24835", family:"Ashkenazim", family_samples:"NA24143,NA24149,NA24385", split_count:3], - file(params.cram3, checkIfExists:true), - file(params.crai3, checkIfExists:true), - file(params.split2, checkIfExists:true) - ],[ - [id:"NA24835.00003", sample:"NA24835", family:"Ashkenazim", family_samples:"NA24143,NA24149,NA24385", split_count:3], - file(params.cram3, checkIfExists:true), - file(params.crai3, checkIfExists:true), - file(params.split3, checkIfExists:true) - ]) - input[1] = Channel.of([ - [id:"NA24143", sample:"NA24143", family:"Ashkenazim", family_samples:"NA24143,NA24149,NA24385"], - file(params.gvcf1, checkIfExists:true), - file(params.gtbi1, checkIfExists:true) - ],[ - [id:"NA24149", sample:"NA24149", family:"Ashkenazim", family_samples:"NA24143,NA24149,NA24385"], - file(params.gvcf2, checkIfExists:true), - file(params.gtbi2, checkIfExists:true) - ]) - input[2] = Channel.value([ - [id:"fasta"], - file(params.fasta, checkIfExists:true) - ]) - input[3] = Channel.value([ - [id:"fai"], - file(params.fai, checkIfExists:true) - ]) - input[4] = Channel.value([ - [id:"dict"], - file(params.dict, checkIfExists:true) - ]) - input[5] = Channel.value([ - [id:"strtablefile"], - file(params.strtablefile, checkIfExists:true) - ]) - input[6] = [[],[]] - input[7] = [[],[]] - input[8] = false - input[9] = false - input[10] = false - input[11] = false - input[12] = 2 - """ - } - } - - then { - assertAll( - { assert workflow.success }, - { assert snapshot( - workflow.out.vcfs.collect { it.collect { it instanceof Map ? it : file(it).name } }, - workflow.out.reports - ).match("default - family") } - ) - } - - } - - test("cram_call_genotype_gatk4 - filter - family") { - - when { - params { - callers = "haplotypecaller" - filter = true - } - workflow { - """ - input[0] = Channel.of([ - [id:"NA24835.00001", sample:"NA24835", family:"Ashkenazim", family_samples:"NA24143,NA24149,NA24385", split_count:3], - file(params.cram3, checkIfExists:true), - file(params.crai3, checkIfExists:true), - file(params.split1, checkIfExists:true) - ],[ - [id:"NA24835.00002", sample:"NA24835", family:"Ashkenazim", family_samples:"NA24143,NA24149,NA24385", split_count:3], - file(params.cram3, checkIfExists:true), - file(params.crai3, checkIfExists:true), - file(params.split2, checkIfExists:true) - ],[ - [id:"NA24835.00003", sample:"NA24835", family:"Ashkenazim", family_samples:"NA24143,NA24149,NA24385", split_count:3], - file(params.cram3, checkIfExists:true), - file(params.crai3, checkIfExists:true), - file(params.split3, checkIfExists:true) - ]) - input[1] = Channel.of([ - [id:"NA24143", sample:"NA24143", family:"Ashkenazim", family_samples:"NA24143,NA24149,NA24385"], - file(params.gvcf1, checkIfExists:true), - file(params.gtbi1, checkIfExists:true) - ],[ - [id:"NA24149", sample:"NA24149", family:"Ashkenazim", family_samples:"NA24143,NA24149,NA24385"], - file(params.gvcf2, checkIfExists:true), - file(params.gtbi2, checkIfExists:true) - ]) - input[2] = Channel.value([ - [id:"fasta"], - file(params.fasta, checkIfExists:true) - ]) - input[3] = Channel.value([ - [id:"fai"], - file(params.fai, checkIfExists:true) - ]) - input[4] = Channel.value([ - [id:"dict"], - file(params.dict, checkIfExists:true) - ]) - input[5] = Channel.value([ - [id:"strtablefile"], - file(params.strtablefile, checkIfExists:true) - ]) - input[6] = [[],[]] - input[7] = [[],[]] - input[8] = false - input[9] = false - input[10] = false - input[11] = true - input[12] = 2 - """ - } - } - - then { - assertAll( - { assert workflow.success }, - { assert snapshot( - workflow.out.vcfs.collect { it.collect { it instanceof Map ? it : file(it).name } }, - workflow.out.reports - ).match("filter - family") } - ) - } - - } - - test("cram_call_genotype_gatk4 - only_call - family") { - - when { - params { - callers = "haplotypecaller" - only_call = true - } - workflow { - """ - input[0] = Channel.of([ - [id:"NA24835.00001", sample:"NA24835", family:"Ashkenazim", family_samples:"NA24143,NA24149,NA24385", split_count:3], - file(params.cram3, checkIfExists:true), - file(params.crai3, checkIfExists:true), - file(params.split1, checkIfExists:true) - ],[ - [id:"NA24835.00002", sample:"NA24835", family:"Ashkenazim", family_samples:"NA24143,NA24149,NA24385", split_count:3], - file(params.cram3, checkIfExists:true), - file(params.crai3, checkIfExists:true), - file(params.split2, checkIfExists:true) - ],[ - [id:"NA24835.00003", sample:"NA24835", family:"Ashkenazim", family_samples:"NA24143,NA24149,NA24385", split_count:3], - file(params.cram3, checkIfExists:true), - file(params.crai3, checkIfExists:true), - file(params.split3, checkIfExists:true) - ]) - input[1] = Channel.of([ - [id:"NA24143", sample:"NA24143", family:"Ashkenazim", family_samples:"NA24143,NA24149,NA24385"], - file(params.gvcf1, checkIfExists:true), - file(params.gtbi1, checkIfExists:true) - ],[ - [id:"NA24149", sample:"NA24149", family:"Ashkenazim", family_samples:"NA24143,NA24149,NA24385"], - file(params.gvcf2, checkIfExists:true), - file(params.gtbi2, checkIfExists:true) - ]) - input[2] = Channel.value([ - [id:"fasta"], - file(params.fasta, checkIfExists:true) - ]) - input[3] = Channel.value([ - [id:"fai"], - file(params.fai, checkIfExists:true) - ]) - input[4] = Channel.value([ - [id:"dict"], - file(params.dict, checkIfExists:true) - ]) - input[5] = Channel.value([ - [id:"strtablefile"], - file(params.strtablefile, checkIfExists:true) - ]) - input[6] = [[],[]] - input[7] = [[],[]] - input[8] = false - input[9] = true - input[10] = false - input[11] = false - input[12] = 2 - """ - } - } - - then { - assertAll( - { assert workflow.success }, - { assert snapshot( - workflow.out.vcfs.collect { it.collect { it instanceof Map ? it : file(it).name } }, - workflow.out.reports - ).match("only_call - family") } - ) - } - - } - - test("cram_call_genotype_gatk4 - only_merge - family") { - - when { - params { - callers = "haplotypecaller" - only_merge = true - } - workflow { - """ - input[0] = Channel.of([ - [id:"NA24835.00001", sample:"NA24835", family:"Ashkenazim", family_samples:"NA24143,NA24149,NA24385", split_count:3], - file(params.cram3, checkIfExists:true), - file(params.crai3, checkIfExists:true), - file(params.split1, checkIfExists:true) - ],[ - [id:"NA24835.00002", sample:"NA24835", family:"Ashkenazim", family_samples:"NA24143,NA24149,NA24385", split_count:3], - file(params.cram3, checkIfExists:true), - file(params.crai3, checkIfExists:true), - file(params.split2, checkIfExists:true) - ],[ - [id:"NA24835.00003", sample:"NA24835", family:"Ashkenazim", family_samples:"NA24143,NA24149,NA24385", split_count:3], - file(params.cram3, checkIfExists:true), - file(params.crai3, checkIfExists:true), - file(params.split3, checkIfExists:true) - ]) - input[1] = Channel.of([ - [id:"NA24143", sample:"NA24143", family:"Ashkenazim", family_samples:"NA24143,NA24149,NA24385"], - file(params.gvcf1, checkIfExists:true), - file(params.gtbi1, checkIfExists:true) - ],[ - [id:"NA24149", sample:"NA24149", family:"Ashkenazim", family_samples:"NA24143,NA24149,NA24385"], - file(params.gvcf2, checkIfExists:true), - file(params.gtbi2, checkIfExists:true) - ]) - input[2] = Channel.value([ - [id:"fasta"], - file(params.fasta, checkIfExists:true) - ]) - input[3] = Channel.value([ - [id:"fai"], - file(params.fai, checkIfExists:true) - ]) - input[4] = Channel.value([ - [id:"dict"], - file(params.dict, checkIfExists:true) - ]) - input[5] = Channel.value([ - [id:"strtablefile"], - file(params.strtablefile, checkIfExists:true) - ]) - input[6] = [[],[]] - input[7] = [[],[]] - input[8] = false - input[9] = false - input[10] = true - input[11] = false - input[12] = 2 - """ - } - } - - then { - assertAll( - { assert workflow.success }, - { assert snapshot( - workflow.out.vcfs.collect { it.collect { it instanceof Map ? it : file(it).name } }, - workflow.out.reports - ).match("only_merge - family") } - ) - } - - } - - test("cram_call_genotype_gatk4 - default - sample + family") { - - when { - params { - callers = "haplotypecaller" - } - workflow { - """ - input[0] = Channel.of([ - [id:"NA24835.00001", sample:"NA24835", family:"Ashkenazim", family_samples:"NA24149,NA24385", split_count:3], - file(params.cram3, checkIfExists:true), - file(params.crai3, checkIfExists:true), - file(params.split1, checkIfExists:true) - ],[ - [id:"NA24835.00002", sample:"NA24835", family:"Ashkenazim", family_samples:"NA24149,NA24385", split_count:3], - file(params.cram3, checkIfExists:true), - file(params.crai3, checkIfExists:true), - file(params.split2, checkIfExists:true) - ],[ - [id:"NA24835.00003", sample:"NA24835", family:"Ashkenazim", family_samples:"NA24149,NA24385", split_count:3], - file(params.cram3, checkIfExists:true), - file(params.crai3, checkIfExists:true), - file(params.split3, checkIfExists:true) - ]) - input[1] = Channel.of([ - [id:"NA24143", sample:"NA24143", family:"Ashkenazim", family_samples:"NA24143"], - file(params.gvcf1, checkIfExists:true), - file(params.gtbi1, checkIfExists:true) - ],[ - [id:"NA24149", sample:"NA24149", family:"NA24149", family_samples:"NA24149,NA24385"], - file(params.gvcf2, checkIfExists:true), - file(params.gtbi2, checkIfExists:true) - ]) - input[2] = Channel.value([ - [id:"fasta"], - file(params.fasta, checkIfExists:true) - ]) - input[3] = Channel.value([ - [id:"fai"], - file(params.fai, checkIfExists:true) - ]) - input[4] = Channel.value([ - [id:"dict"], - file(params.dict, checkIfExists:true) - ]) - input[5] = Channel.value([ - [id:"strtablefile"], - file(params.strtablefile, checkIfExists:true) - ]) - input[6] = [[],[]] - input[7] = [[],[]] - input[8] = false - input[9] = false - input[10] = false - input[11] = false - input[12] = 2 - """ - } - } - - then { - assertAll( - { assert workflow.success }, - { assert snapshot( - workflow.out.vcfs.collect { it.collect { it instanceof Map ? it : file(it).name } }, - workflow.out.reports - ).match("only_merge - sample + family") } - ) - } - - } - -} diff --git a/tests/subworkflows/local/cram_call_genotype_gatk4/main.nf.test.snap b/tests/subworkflows/local/cram_call_genotype_gatk4/main.nf.test.snap deleted file mode 100644 index a0aec425..00000000 --- a/tests/subworkflows/local/cram_call_genotype_gatk4/main.nf.test.snap +++ /dev/null @@ -1,164 +0,0 @@ -{ - "only_merge - family": { - "content": [ - [ - - ], - [ - [ - "NA24835.haplotypecaller.bcftools_stats.txt:md5,5f42bee02b2bd0d2af2954292ec3b422" - ] - ] - ], - "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" - }, - "timestamp": "2024-09-05T11:20:45.005084818" - }, - "default - family": { - "content": [ - [ - [ - { - "family": "Ashkenazim", - "family_samples": "NA24143,NA24149,NA24385", - "caller": "haplotypecaller", - "id": "Ashkenazim" - }, - "Ashkenazim.haplotypecaller.vcf.gz", - "Ashkenazim.haplotypecaller.vcf.gz.tbi" - ] - ], - [ - [ - "NA24835.haplotypecaller.bcftools_stats.txt:md5,5f42bee02b2bd0d2af2954292ec3b422" - ] - ] - ], - "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" - }, - "timestamp": "2024-09-05T17:35:02.44674969" - }, - "filter - family": { - "content": [ - [ - [ - { - "family": "Ashkenazim", - "family_samples": "NA24143,NA24149,NA24385", - "caller": "haplotypecaller", - "id": "Ashkenazim" - }, - "Ashkenazim.haplotypecaller.vcf.gz", - "Ashkenazim.haplotypecaller.vcf.gz.tbi" - ] - ], - [ - [ - "NA24835.haplotypecaller.bcftools_stats.txt:md5,5f42bee02b2bd0d2af2954292ec3b422" - ] - ] - ], - "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" - }, - "timestamp": "2024-09-05T17:35:46.768542501" - }, - "default - gvcfs": { - "content": [ - [ - [ - { - "family": "Ashkenazim", - "family_samples": "NA24143", - "caller": "haplotypecaller", - "id": "Ashkenazim" - }, - "Ashkenazim.haplotypecaller.vcf.gz", - "Ashkenazim.haplotypecaller.vcf.gz.tbi" - ] - ], - [ - - ] - ], - "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" - }, - "timestamp": "2024-09-05T17:34:17.846266913" - }, - "default - crams": { - "content": [ - [ - [ - { - "family": "Ashkenazim", - "family_samples": "NA24143", - "caller": "haplotypecaller", - "id": "Ashkenazim" - }, - "Ashkenazim.haplotypecaller.vcf.gz", - "Ashkenazim.haplotypecaller.vcf.gz.tbi" - ] - ], - [ - [ - "NA24143.haplotypecaller.bcftools_stats.txt:md5,09b4e7674e0f5b98b1e548df3002250e" - ] - ] - ], - "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" - }, - "timestamp": "2024-09-05T17:33:52.045772718" - }, - "only_call - family": { - "content": [ - [ - - ], - [ - [ - "NA24835.haplotypecaller.bcftools_stats.txt:md5,5f42bee02b2bd0d2af2954292ec3b422" - ] - ] - ], - "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" - }, - "timestamp": "2024-09-05T11:20:04.714403906" - }, - "only_merge - sample + family": { - "content": [ - [ - [ - { - "family": "Ashkenazim", - "family_samples": "NA24143", - "caller": "haplotypecaller", - "id": "Ashkenazim" - }, - "Ashkenazim.haplotypecaller.vcf.gz", - "Ashkenazim.haplotypecaller.vcf.gz.tbi" - ] - ], - [ - [ - "NA24835.haplotypecaller.bcftools_stats.txt:md5,5f42bee02b2bd0d2af2954292ec3b422" - ] - ] - ], - "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" - }, - "timestamp": "2024-09-06T14:26:29.249708339" - } -} \ No newline at end of file diff --git a/tests/subworkflows/local/gvcf_joint_genotype_gatk4/main.nf.test b/tests/subworkflows/local/gvcf_joint_genotype_gatk4/main.nf.test new file mode 100644 index 00000000..36de5cf1 --- /dev/null +++ b/tests/subworkflows/local/gvcf_joint_genotype_gatk4/main.nf.test @@ -0,0 +1,190 @@ +nextflow_workflow { + + name "Test Workflow GVCF_JOINT_GENOTYPE_GATK4" + script "subworkflows/local/gvcf_joint_genotype_gatk4/main.nf" + workflow "GVCF_JOINT_GENOTYPE_GATK4" + + tag "subworkflows" + tag "subworkflows_local" + tag "gvcf_joint_genotype_gatk4" + tag "vcf_concat_bcftools" + tag "input_split_bedtools" + + test("gvcf_joint_genotype_gatk4 - single_sample") { + + when { + workflow { + """ + input[0] = Channel.of([ + [id:"NA24143", sample:"NA24143", family:"Ashkenazim", family_samples:"NA24143", caller:"haplotypecaller"], + file(params.gvcf1, checkIfExists:true), + file(params.gtbi1, checkIfExists:true) + ]) + input[1] = Channel.value([ + [id:"fasta"], + file(params.fasta, checkIfExists:true) + ]) + input[2] = Channel.value([ + [id:"fai"], + file(params.fai, checkIfExists:true) + ]) + input[3] = Channel.value([ + [id:"dict"], + file(params.dict, checkIfExists:true) + ]) + input[4] = [[],[]] + input[5] = [[],[]] + input[6] = false + input[7] = 2 + """ + } + } + + then { + assertAll( + { assert workflow.success }, + { assert snapshot( + workflow.out.vcfs.collect { [it[0], "${file(it[1]).name},variantsMD5:${path(it[1]).vcf.variantsMD5}", file(it[2]).name] } + ).match() } + ) + } + + } + + test("gvcf_joint_genotype_gatk4 - family") { + + when { + workflow { + """ + input[0] = Channel.of([ + [id:"NA24143", sample:"NA24143", family:"Ashkenazim", family_samples:"NA24143,NA24149", caller:"haplotypecaller"], + file(params.gvcf1, checkIfExists:true), + file(params.gtbi1, checkIfExists:true) + ],[ + [id:"NA24149", sample:"NA24149", family:"Ashkenazim", family_samples:"NA24143,NA24149", caller:"haplotypecaller"], + file(params.gvcf2, checkIfExists:true), + file(params.gtbi2, checkIfExists:true) + ] + ) + input[1] = Channel.value([ + [id:"fasta"], + file(params.fasta, checkIfExists:true) + ]) + input[2] = Channel.value([ + [id:"fai"], + file(params.fai, checkIfExists:true) + ]) + input[3] = Channel.value([ + [id:"dict"], + file(params.dict, checkIfExists:true) + ]) + input[4] = [[],[]] + input[5] = [[],[]] + input[6] = false + input[7] = 2 + """ + } + } + + then { + assertAll( + { assert workflow.success }, + { assert snapshot( + workflow.out.vcfs.collect { [it[0], "${file(it[1]).name},variantsMD5:${path(it[1]).vcf.variantsMD5}", file(it[2]).name] } + ).match() } + ) + } + + } + + test("gvcf_joint_genotype_gatk4 - only_merge") { + + when { + workflow { + """ + input[0] = Channel.of([ + [id:"NA24143", sample:"NA24143", family:"Ashkenazim", family_samples:"NA24143", caller:"haplotypecaller"], + file(params.gvcf1, checkIfExists:true), + file(params.gtbi1, checkIfExists:true) + ]) + input[1] = Channel.value([ + [id:"fasta"], + file(params.fasta, checkIfExists:true) + ]) + input[2] = Channel.value([ + [id:"fai"], + file(params.fai, checkIfExists:true) + ]) + input[3] = Channel.value([ + [id:"dict"], + file(params.dict, checkIfExists:true) + ]) + input[4] = [[],[]] + input[5] = [[],[]] + input[6] = true + input[7] = 2 + """ + } + } + + then { + assertAll( + { assert workflow.success }, + { assert snapshot( + workflow.out.vcfs + ).match() } + ) + } + + } + + test("gvcf_joint_genotype_gatk4 - single_sample + family") { + + when { + workflow { + """ + input[0] = Channel.of([ + [id:"NA24143", sample:"NA24143", family:"Ashkenazim", family_samples:"NA24143,NA24149", caller:"haplotypecaller"], + file(params.gvcf1, checkIfExists:true), + file(params.gtbi1, checkIfExists:true) + ],[ + [id:"NA24149", sample:"NA24149", family:"Ashkenazim", family_samples:"NA24143,NA24149", caller:"haplotypecaller"], + file(params.gvcf2, checkIfExists:true), + file(params.gtbi2, checkIfExists:true) + ],[ + [id:"NA24385", sample:"NA24385", family:"NA24385", family_samples:"NA24385", caller:"haplotypecaller"], + file(params.gvcf3, checkIfExists:true), + file(params.gtbi3, checkIfExists:true) + ] + ) + input[1] = Channel.value([ + [id:"fasta"], + file(params.fasta, checkIfExists:true) + ]) + input[2] = Channel.value([ + [id:"fai"], + file(params.fai, checkIfExists:true) + ]) + input[3] = Channel.value([ + [id:"dict"], + file(params.dict, checkIfExists:true) + ]) + input[4] = [[],[]] + input[5] = [[],[]] + input[6] = false + input[7] = 2 + """ + } + } + + then { + assertAll( + { assert workflow.success }, + { assert snapshot( + workflow.out.vcfs.collect { [it[0], "${file(it[1]).name},variantsMD5:${path(it[1]).vcf.variantsMD5}", file(it[2]).name] } + ).match() } + ) + } + + } +} diff --git a/tests/subworkflows/local/gvcf_joint_genotype_gatk4/main.nf.test.snap b/tests/subworkflows/local/gvcf_joint_genotype_gatk4/main.nf.test.snap new file mode 100644 index 00000000..b02a7a06 --- /dev/null +++ b/tests/subworkflows/local/gvcf_joint_genotype_gatk4/main.nf.test.snap @@ -0,0 +1,87 @@ +{ + "gvcf_joint_genotype_gatk4 - single_sample + family": { + "content": [ + [ + [ + { + "family": "Ashkenazim", + "family_samples": "NA24143,NA24149", + "caller": "haplotypecaller", + "id": "Ashkenazim" + }, + "Ashkenazim.haplotypecaller.vcf.gz,variantsMD5:4dea305eb71decb122709e75af9c833f", + "Ashkenazim.haplotypecaller.vcf.gz.tbi" + ], + [ + { + "family": "NA24385", + "family_samples": "NA24385", + "caller": "haplotypecaller", + "id": "NA24385" + }, + "NA24385.haplotypecaller.vcf.gz,variantsMD5:4ffd515511f59e3561e3fb1b046d7675", + "NA24385.haplotypecaller.vcf.gz.tbi" + ] + ] + ], + "meta": { + "nf-test": "0.9.1", + "nextflow": "24.10.0" + }, + "timestamp": "2024-11-05T13:05:41.216399607" + }, + "gvcf_joint_genotype_gatk4 - single_sample": { + "content": [ + [ + [ + { + "family": "Ashkenazim", + "family_samples": "NA24143", + "caller": "haplotypecaller", + "id": "Ashkenazim" + }, + "Ashkenazim.haplotypecaller.vcf.gz,variantsMD5:4c6db9171912bcbbaefeec2a24968a", + "Ashkenazim.haplotypecaller.vcf.gz.tbi" + ] + ] + ], + "meta": { + "nf-test": "0.9.1", + "nextflow": "24.10.0" + }, + "timestamp": "2024-11-05T13:03:11.507733028" + }, + "gvcf_joint_genotype_gatk4 - only_merge": { + "content": [ + [ + + ] + ], + "meta": { + "nf-test": "0.9.1", + "nextflow": "24.10.0" + }, + "timestamp": "2024-11-05T11:43:25.386070284" + }, + "gvcf_joint_genotype_gatk4 - family": { + "content": [ + [ + [ + { + "family": "Ashkenazim", + "family_samples": "NA24143,NA24149", + "caller": "haplotypecaller", + "id": "Ashkenazim" + }, + "Ashkenazim.haplotypecaller.vcf.gz,variantsMD5:4dea305eb71decb122709e75af9c833f", + "Ashkenazim.haplotypecaller.vcf.gz.tbi" + ] + ] + ], + "meta": { + "nf-test": "0.9.1", + "nextflow": "24.10.0" + }, + "timestamp": "2024-11-05T13:03:57.301900285" + } +} \ No newline at end of file diff --git a/tests/subworkflows/local/vcf_dbsnp_vcfanno/main.nf.test b/tests/subworkflows/local/vcf_dbsnp_vcfanno/main.nf.test new file mode 100644 index 00000000..75443075 --- /dev/null +++ b/tests/subworkflows/local/vcf_dbsnp_vcfanno/main.nf.test @@ -0,0 +1,47 @@ +nextflow_workflow { + + name "Test Workflow VCF_DBSNP_VCFANNO" + script "subworkflows/local/vcf_dbsnp_vcfanno/main.nf" + workflow "VCF_DBSNP_VCFANNO" + + tag "subworkflows" + tag "subworkflows_local" + tag "vcf_dbsnp_vcfanno" + + test("vcf_dbsnp_vcfanno - default") { + + when { + params { + annotate = true + } + workflow { + """ + input[0] = Channel.of([ + [id:"NA24143", family:"NA24143", family_samples:"NA24143", caller:"haplotypecaller"], + file(params.vcf1, checkIfExists:true), + file(params.tbi1, checkIfExists:true) + ]) + input[1] = Channel.value([ + [id:"dbnsp"], + file(params.vcf2, checkIfExists:true) + ]) + input[2] = Channel.value([ + [id:"dbnsp"], + file(params.tbi2, checkIfExists:true) + ]) + """ + } + } + + then { + assertAll( + { assert workflow.success }, + { assert snapshot( + workflow.out.vcfs.collect { [ it[0], "${file(it[1]).name},variantsMD5:${path(it[1]).vcf.variantsMD5}", file(it[2]).name ] } + ).match() } + ) + } + + } + +} diff --git a/tests/subworkflows/local/vcf_dbsnp_vcfanno/main.nf.test.snap b/tests/subworkflows/local/vcf_dbsnp_vcfanno/main.nf.test.snap new file mode 100644 index 00000000..43ea8318 --- /dev/null +++ b/tests/subworkflows/local/vcf_dbsnp_vcfanno/main.nf.test.snap @@ -0,0 +1,23 @@ +{ + "vcf_dbsnp_vcfanno - default": { + "content": [ + [ + [ + { + "id": "NA24143", + "family": "NA24143", + "family_samples": "NA24143", + "caller": "haplotypecaller" + }, + "NA24143.vcf.gz,variantsMD5:b4f76bc67ba0e159489393d4788349b3", + "NA24143.vcf.gz.tbi" + ] + ] + ], + "meta": { + "nf-test": "0.9.1", + "nextflow": "24.10.0" + }, + "timestamp": "2024-11-05T14:44:22.532988474" + } +} \ No newline at end of file From 76a86a2a293067eb84138c7e2f61b46e527cc7b2 Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Tue, 5 Nov 2024 15:17:48 +0100 Subject: [PATCH 075/167] fix elprep/filter test --- .../nf-core/elprep/filter/elprep-filter.diff | 22 +++++++++++++------ .../elprep/filter/tests/main.nf.test.snap | 10 +++++---- 2 files changed, 21 insertions(+), 11 deletions(-) diff --git a/modules/nf-core/elprep/filter/elprep-filter.diff b/modules/nf-core/elprep/filter/elprep-filter.diff index 3a357774..c877a871 100644 --- a/modules/nf-core/elprep/filter/elprep-filter.diff +++ b/modules/nf-core/elprep/filter/elprep-filter.diff @@ -34,11 +34,10 @@ Changes in 'elprep/filter/main.nf': Changes in 'elprep/filter/tests/main.nf.test.snap': --- modules/nf-core/elprep/filter/tests/main.nf.test.snap +++ modules/nf-core/elprep/filter/tests/main.nf.test.snap -@@ -1,15 +1,7 @@ - { +@@ -2,13 +2,7 @@ "test-elprep-filter": { "content": [ -- [ + [ - [ - { - "id": "test", @@ -46,12 +45,21 @@ Changes in 'elprep/filter/tests/main.nf.test.snap': - }, - "test.bam,readsMD5:463ac3b905fbf4ddf113a94dbfa8d69f" - ] -- ], -+ null, ++ + ], [ - ], -@@ -64,15 +56,7 @@ +@@ -57,22 +51,14 @@ + ] + ], + "meta": { +- "nf-test": "0.9.0", +- "nextflow": "24.04.4" ++ "nf-test": "0.9.1", ++ "nextflow": "24.10.0" + }, +- "timestamp": "2024-10-22T11:05:45.927224502" ++ "timestamp": "2024-11-05T15:16:40.979143203" }, "test-elprep-filter-stub": { "content": [ diff --git a/modules/nf-core/elprep/filter/tests/main.nf.test.snap b/modules/nf-core/elprep/filter/tests/main.nf.test.snap index a95cae7f..d4848abc 100644 --- a/modules/nf-core/elprep/filter/tests/main.nf.test.snap +++ b/modules/nf-core/elprep/filter/tests/main.nf.test.snap @@ -1,7 +1,9 @@ { "test-elprep-filter": { "content": [ - null, + [ + + ], [ ], @@ -49,10 +51,10 @@ ] ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" + "nf-test": "0.9.1", + "nextflow": "24.10.0" }, - "timestamp": "2024-10-22T11:05:45.927224502" + "timestamp": "2024-11-05T15:16:40.979143203" }, "test-elprep-filter-stub": { "content": [ From 6eaf981c6e2dc8345bcddc76fbfa3334edbe3419 Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Tue, 5 Nov 2024 15:41:31 +0100 Subject: [PATCH 076/167] fix linting + reimplement only_call and only_merge --- conf/modules.config | 4 ++-- nextflow_schema.json | 18 ++++++++++++++++++ subworkflows/local/bam_call_elprep/main.nf | 2 +- .../main.nf.test | 6 +++--- workflows/germline.nf | 12 ++++++++---- 5 files changed, 32 insertions(+), 10 deletions(-) diff --git a/conf/modules.config b/conf/modules.config index 2faaa75e..cb5fe2ab 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -367,7 +367,7 @@ process { withName: "^.*VCF_FILTER_BCFTOOLS:FILTER_1\$" { ext.prefix = { "${meta.id}.filtered1" } ext.args = { - meta.caller == "vardict" ? + meta.caller == "vardict" ? "-i 'QUAL >= 0${params.only_pass ? " && FILTER=\"PASS\"" : ""}' --output-type z": meta.caller == "haplotypecaller" ? "--output-type z --soft-filter 'GATKCutoffSNP' -e 'TYPE=\"snp\" && (MQRankSum < -12.5 || ReadPosRankSum < -8.0 || QD < 2.0 || FS > 60.0 || MQ < 30.0)' -m '+'": @@ -378,7 +378,7 @@ process { } withName: "^.*VCF_FILTER_BCFTOOLS:FILTER_2\$" { - ext.args = { + ext.args = { meta.caller == "vardict" ? "--soft-filter 'LowFreqBias' --mode '+' -e 'FORMAT/AF[0:*] < 0.02 && FORMAT/VD[0] < 30 && INFO/SBF < 0.1 && INFO/NM >= 2.0' --output-type z" : meta.caller == "haplotypecaller" ? diff --git a/nextflow_schema.json b/nextflow_schema.json index 53129997..79d18c26 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -104,6 +104,24 @@ "format": "path", "fa_icon": "fas fa-folder" }, + "elfasta": { + "type": "string", + "format": "file-path", + "exists": true, + "mimetype": "text/plain", + "pattern": "^\\S+\\.elfasta$", + "description": "Path to the ELFASTA genome file. This is used when `elprep` is part of the callers and will be automatically generated when missing.", + "fa_icon": "far fa-file-code" + }, + "elsites": { + "type": "string", + "format": "file-path", + "exists": true, + "mimetype": "text/plain", + "pattern": "^\\S+\\.elsites$", + "description": "Path to the elsites file. This is used when `elprep` is part of the callers.", + "fa_icon": "far fa-file-code" + }, "genomes_base": { "type": "string", "default": "/references/", diff --git a/subworkflows/local/bam_call_elprep/main.nf b/subworkflows/local/bam_call_elprep/main.nf index 22f4939d..6a010326 100644 --- a/subworkflows/local/bam_call_elprep/main.nf +++ b/subworkflows/local/bam_call_elprep/main.nf @@ -35,7 +35,7 @@ workflow BAM_CALL_ELPREP { false ) ch_versions = ch_versions.mix(ELPREP_FILTER.out.versions.first()) - + VCF_CONCAT_BCFTOOLS( ELPREP_FILTER.out.gvcf, true diff --git a/tests/subworkflows/local/cram_prepare_samtools_bedtools/main.nf.test b/tests/subworkflows/local/cram_prepare_samtools_bedtools/main.nf.test index 5ca5ffb2..511ca4d3 100644 --- a/tests/subworkflows/local/cram_prepare_samtools_bedtools/main.nf.test +++ b/tests/subworkflows/local/cram_prepare_samtools_bedtools/main.nf.test @@ -46,7 +46,7 @@ nextflow_workflow { }, workflow.out.ready_bams.collect { [ it[0], "${file(it[1]).name},readsMD5:${bam(it[1]).getReadsMD5()}", file(it[2]).name ] - }, + }, workflow.out.ready_beds, workflow.out.reports ).match("default - WGS") } @@ -93,7 +93,7 @@ nextflow_workflow { }, workflow.out.ready_bams.collect { [ it[0], "${file(it[1]).name},readsMD5:${bam(it[1]).getReadsMD5()}", file(it[2]).name ] - }, + }, workflow.out.ready_beds, workflow.out.reports ).match("default - WES common ROI") } @@ -140,7 +140,7 @@ nextflow_workflow { }, workflow.out.ready_bams.collect { [ it[0], "${file(it[1]).name},readsMD5:${bam(it[1]).getReadsMD5()}", file(it[2]).name ] - }, + }, workflow.out.ready_beds, workflow.out.reports ).match("default - WES") } diff --git a/workflows/germline.nf b/workflows/germline.nf index 10166be9..1946490a 100644 --- a/workflows/germline.nf +++ b/workflows/germline.nf @@ -384,7 +384,7 @@ workflow GERMLINE { // // Run sample preparation // - + def create_bam_files = callers.intersect(GlobalVariables.bamCallers).size() > 0 // Only create BAM files when needed CRAM_PREPARE_SAMTOOLS_BEDTOOLS( ch_input.cram.filter { meta, _cram, _crai -> @@ -491,10 +491,11 @@ workflow GERMLINE { ch_calls = ch_calls.mix(BAM_CALL_VARDICTJAVA.out.vcfs) } - // TODO reimplement --only_call and --only_merge + // Stop pipeline execution when only calls should happen + def ch_gvcfs_final = ch_gvcfs_ready.filter { !only_call } GVCF_JOINT_GENOTYPE_GATK4( - ch_gvcfs_ready, + ch_gvcfs_final, ch_fasta_ready, ch_fai_ready, ch_dict_ready, @@ -506,7 +507,10 @@ workflow GERMLINE { ch_versions = ch_versions.mix(GVCF_JOINT_GENOTYPE_GATK4.out.versions) ch_calls = ch_calls.mix(GVCF_JOINT_GENOTYPE_GATK4.out.vcfs) - def ch_called_variants = ch_calls + // Stop pipeline execution when only the merge should happen + def ch_calls_final = ch_calls.filter { !only_merge } + + def ch_called_variants = ch_calls_final .map { meta, vcf, tbi -> def new_meta = meta - meta.subMap(["type", "vardict_min_af"]) [ new_meta, vcf, tbi ] From 0e2f0fc5bca6b88ac2e845da69a7b6ffdac0d178 Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Tue, 5 Nov 2024 17:26:25 +0100 Subject: [PATCH 077/167] add some out channels as preparation for the new output definitions --- main.nf | 162 ++++++++---------- subworkflows/local/bam_call_elprep/main.nf | 8 +- subworkflows/local/cram_call_gatk4/main.nf | 3 +- .../local/gvcf_joint_genotype_gatk4/main.nf | 5 +- workflows/germline.nf | 49 ++++-- 5 files changed, 114 insertions(+), 113 deletions(-) diff --git a/main.nf b/main.nf index c164385f..57c97abe 100644 --- a/main.nf +++ b/main.nf @@ -50,95 +50,6 @@ include { GERMLINE } from './workflows/germline' include { PIPELINE_INITIALISATION } from './subworkflows/local/utils_cmgg_germline_pipeline' include { PIPELINE_COMPLETION } from './subworkflows/local/utils_cmgg_germline_pipeline' -// -// WORKFLOW: Run main analysis pipeline depending on type of input -// - -workflow NFCMGG_GERMLINE { - - take: - samplesheet // channel: samplesheet read in from --input - pipeline_params // the parameters used for this pipeline - multiqc_logo // string: the path to the multiqc logo - - main: - - // - // WORKFLOW: Run pipeline - // - GERMLINE ( - // Input channels - samplesheet, - - // File inputs - pipeline_params.fasta, - pipeline_params.fai, - pipeline_params.dict, - pipeline_params.elfasta, - pipeline_params.strtablefile, - pipeline_params.sdf, - pipeline_params.dbsnp, - pipeline_params.dbsnp_tbi, - pipeline_params.vep_cache, - pipeline_params.dbnsfp, - pipeline_params.dbnsfp_tbi, - pipeline_params.spliceai_indel, - pipeline_params.spliceai_indel_tbi, - pipeline_params.spliceai_snv, - pipeline_params.spliceai_snv_tbi, - pipeline_params.mastermind, - pipeline_params.mastermind_tbi, - pipeline_params.eog, - pipeline_params.eog_tbi, - pipeline_params.alphamissense, - pipeline_params.alphamissense_tbi, - pipeline_params.vcfanno_resources, - pipeline_params.vcfanno_config, - pipeline_params.multiqc_config, - multiqc_logo, - pipeline_params.multiqc_methods_description, - pipeline_params.roi, - pipeline_params.somalier_sites, - pipeline_params.vcfanno_lua, - pipeline_params.updio_common_cnvs, - pipeline_params.automap_repeats, - pipeline_params.automap_panel, - pipeline_params.outdir, - GlobalVariables.pedFiles, - pipeline_params.elsites, - - // Boolean inputs - pipeline_params.dragstr, - pipeline_params.annotate, - pipeline_params.vcfanno, - pipeline_params.only_call, - pipeline_params.only_merge, - pipeline_params.filter, - pipeline_params.normalize, - pipeline_params.add_ped, - pipeline_params.gemini, - pipeline_params.validate, - pipeline_params.updio, - pipeline_params.automap, - pipeline_params.vep_dbnsfp, - pipeline_params.vep_spliceai, - pipeline_params.vep_mastermind, - pipeline_params.vep_eog, - pipeline_params.vep_alphamissense, - - // Value inputs - pipeline_params.genome, - pipeline_params.species, - pipeline_params.vep_cache_version, - pipeline_params.vep_chunk_size, - pipeline_params.scatter_count, - pipeline_params.callers.tokenize(",") - ) - - emit: - multiqc_report = GERMLINE.out.multiqc_report // channel: /path/to/multiqc_report.html -} - /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ RUN MAIN WORKFLOW @@ -215,11 +126,76 @@ workflow { // // WORKFLOW: Run main workflow // - NFCMGG_GERMLINE ( + + GERMLINE ( + // Input channels PIPELINE_INITIALISATION.out.samplesheet, - params, - multiqc_logo + + // File inputs + params.fasta, + params.fai, + params.dict, + params.elfasta, + params.strtablefile, + params.sdf, + params.dbsnp, + params.dbsnp_tbi, + params.vep_cache, + params.dbnsfp, + params.dbnsfp_tbi, + params.spliceai_indel, + params.spliceai_indel_tbi, + params.spliceai_snv, + params.spliceai_snv_tbi, + params.mastermind, + params.mastermind_tbi, + params.eog, + params.eog_tbi, + params.alphamissense, + params.alphamissense_tbi, + params.vcfanno_resources, + params.vcfanno_config, + params.multiqc_config, + multiqc_logo, + params.multiqc_methods_description, + params.roi, + params.somalier_sites, + params.vcfanno_lua, + params.updio_common_cnvs, + params.automap_repeats, + params.automap_panel, + params.outdir, + GlobalVariables.pedFiles, + params.elsites, + + // Boolean inputs + params.dragstr, + params.annotate, + params.vcfanno, + params.only_call, + params.only_merge, + params.filter, + params.normalize, + params.add_ped, + params.gemini, + params.validate, + params.updio, + params.automap, + params.vep_dbnsfp, + params.vep_spliceai, + params.vep_mastermind, + params.vep_eog, + params.vep_alphamissense, + + // Value inputs + params.genome, + params.species, + params.vep_cache_version, + params.vep_chunk_size, + params.scatter_count, + params.callers.tokenize(",") ) + // // SUBWORKFLOW: Run completion tasks // @@ -230,7 +206,7 @@ workflow { params.outdir, params.monochrome_logs, params.hook_url, - NFCMGG_GERMLINE.out.multiqc_report + GERMLINE.out.multiqc_report ) } diff --git a/subworkflows/local/bam_call_elprep/main.nf b/subworkflows/local/bam_call_elprep/main.nf index 6a010326..11c8180c 100644 --- a/subworkflows/local/bam_call_elprep/main.nf +++ b/subworkflows/local/bam_call_elprep/main.nf @@ -65,11 +65,9 @@ workflow BAM_CALL_ELPREP { ) ch_versions = ch_versions.mix(BCFTOOLS_STATS.out.versions.first()) - def ch_reports = BCFTOOLS_STATS.out.stats.collect{ _meta, report -> report} - emit: - gvcfs = ch_annotated // channel: [ val(meta), path(vcf), path(tbi) ] - reports = ch_reports // channel: [ path(stats) ] - versions = ch_versions // channel: [ versions.yml ] + gvcfs = ch_annotated // channel: [ val(meta), path(vcf), path(tbi) ] + reports = BCFTOOLS_STATS.out.stats // channel: [ val(meta), path(stats) ] + versions = ch_versions // channel: [ versions.yml ] } diff --git a/subworkflows/local/cram_call_gatk4/main.nf b/subworkflows/local/cram_call_gatk4/main.nf index 05c1543a..a63564a2 100644 --- a/subworkflows/local/cram_call_gatk4/main.nf +++ b/subworkflows/local/cram_call_gatk4/main.nf @@ -97,11 +97,10 @@ workflow CRAM_CALL_GATK4 { ) ch_versions = ch_versions.mix(BCFTOOLS_STATS.out.versions.first()) - def ch_reports = BCFTOOLS_STATS.out.stats.collect{ _meta, report -> report} emit: gvcfs = VCF_CONCAT_BCFTOOLS.out.vcfs // channel: [ val(meta), path(vcf), path(tbi) ] - reports = ch_reports // channel: [ path(stats) ] + reports = BCFTOOLS_STATS.out.stats // channel: [ val(meta), path(stats) ] versions = ch_versions // channel: [ versions.yml ] } diff --git a/subworkflows/local/gvcf_joint_genotype_gatk4/main.nf b/subworkflows/local/gvcf_joint_genotype_gatk4/main.nf index 4a7ff91f..cc5ba0b3 100644 --- a/subworkflows/local/gvcf_joint_genotype_gatk4/main.nf +++ b/subworkflows/local/gvcf_joint_genotype_gatk4/main.nf @@ -64,6 +64,7 @@ workflow GVCF_JOINT_GENOTYPE_GATK4 { ) ch_versions = ch_versions.mix(GATK4_GENOMICSDBIMPORT.out.versions.first()) + def ch_beds = Channel.empty() if(!only_merge) { BCFTOOLS_QUERY( @@ -87,13 +88,14 @@ workflow GVCF_JOINT_GENOTYPE_GATK4 { ch_fai ) ch_versions = ch_versions.mix(MERGE_BEDS.out.versions.first()) + ch_beds = MERGE_BEDS.out.bed // // Split BED file into multiple BEDs specified by --scatter_count // INPUT_SPLIT_BEDTOOLS( - MERGE_BEDS.out.bed.map { meta, bed -> + ch_beds.map { meta, bed -> // Multiply the scatter count by the family size to better scatter big families [meta, bed, (scatter_count * meta.family_samples.tokenize(",").size())] }, @@ -139,6 +141,7 @@ workflow GVCF_JOINT_GENOTYPE_GATK4 { emit: vcfs = ch_vcfs // [ val(meta), path(vcf), path(tbi) ] + beds = ch_beds // [ val(meta), path(bed) ] versions = ch_versions // [ path(versions) ] } diff --git a/workflows/germline.nf b/workflows/germline.nf index 1946490a..27fcca9f 100644 --- a/workflows/germline.nf +++ b/workflows/germline.nf @@ -401,6 +401,7 @@ workflow GERMLINE { create_bam_files ) ch_versions = ch_versions.mix(CRAM_PREPARE_SAMTOOLS_BEDTOOLS.out.versions) + def ch_single_beds = CRAM_PREPARE_SAMTOOLS_BEDTOOLS.out.ready_beds // // Split the BED files @@ -415,7 +416,7 @@ workflow GERMLINE { } INPUT_SPLIT_BEDTOOLS( - CRAM_PREPARE_SAMTOOLS_BEDTOOLS.out.ready_beds.map { meta, bed -> + ch_single_beds.map { meta, bed -> [meta, bed, scatter_count] }, ch_split_cram_bam @@ -429,6 +430,7 @@ workflow GERMLINE { } def ch_calls = Channel.empty() + def ch_gvcf_reports = Channel.empty() if("haplotypecaller" in callers) { // // Call variants with GATK4 HaplotypeCaller @@ -449,7 +451,8 @@ workflow GERMLINE { ) ch_gvcfs_ready = ch_gvcfs_ready.mix(CRAM_CALL_GATK4.out.gvcfs) ch_versions = ch_versions.mix(CRAM_CALL_GATK4.out.versions) - ch_reports = ch_reports.mix(CRAM_CALL_GATK4.out.reports) + ch_reports = ch_reports.mix(CRAM_CALL_GATK4.out.reports.map { _meta, report -> report }) + ch_gvcf_reports = ch_gvcf_reports.mix(CRAM_CALL_GATK4.out.reports) } if("elprep" in callers) { @@ -469,7 +472,8 @@ workflow GERMLINE { ) ch_gvcfs_ready = ch_gvcfs_ready.mix(BAM_CALL_ELPREP.out.gvcfs) ch_versions = ch_versions.mix(BAM_CALL_ELPREP.out.versions) - ch_reports = ch_reports.mix(BAM_CALL_ELPREP.out.reports) + ch_reports = ch_reports.mix(BAM_CALL_ELPREP.out.reports.map { _meta, report -> report }) + ch_gvcf_reports = ch_gvcf_reports.mix(BAM_CALL_ELPREP.out.reports) } @@ -506,6 +510,7 @@ workflow GERMLINE { ) ch_versions = ch_versions.mix(GVCF_JOINT_GENOTYPE_GATK4.out.versions) ch_calls = ch_calls.mix(GVCF_JOINT_GENOTYPE_GATK4.out.vcfs) + def ch_joint_beds = GVCF_JOINT_GENOTYPE_GATK4.out.beds // Stop pipeline execution when only the merge should happen def ch_calls_final = ch_calls.filter { !only_merge } @@ -525,7 +530,8 @@ workflow GERMLINE { [[],[]] ) ch_versions = ch_versions.mix(BCFTOOLS_STATS.out.versions.first()) - ch_reports = ch_reports.mix(BCFTOOLS_STATS.out.stats.collect { _meta, report -> report }) + def ch_final_reports = BCFTOOLS_STATS.out.stats + ch_reports = ch_reports.mix(ch_final_reports.collect { _meta, report -> report }) def ch_filtered_variants = Channel.empty() if(filter) { @@ -558,6 +564,11 @@ workflow GERMLINE { ch_normalized_variants = ch_filtered_variants } + def ch_final_vcfs = Channel.empty() + def ch_final_dbs = Channel.empty() + def ch_final_automap = Channel.empty() + def ch_final_peds = Channel.empty() + def ch_final_updio = Channel.empty() if(!only_merge && !only_call) { // @@ -581,6 +592,8 @@ workflow GERMLINE { ch_somalier_input ) ch_versions = ch_versions.mix(VCF_EXTRACT_RELATE_SOMALIER.out.versions) + ch_final_peds = VCF_EXTRACT_RELATE_SOMALIER.out.peds + ch_final_reports = ch_final_reports.mix(VCF_EXTRACT_RELATE_SOMALIER.out.html) // // Add PED headers to the VCFs @@ -591,7 +604,7 @@ workflow GERMLINE { VCF_PED_RTGTOOLS( ch_normalized_variants, - VCF_EXTRACT_RELATE_SOMALIER.out.peds + ch_final_peds ) ch_versions = ch_versions.mix(VCF_PED_RTGTOOLS.out.versions) @@ -640,7 +653,7 @@ workflow GERMLINE { ) ch_versions = ch_versions.mix(TABIX_FINAL.out.versions.first()) - def ch_final_vcfs = ch_annotation_output + ch_final_vcfs = ch_annotation_output .join(TABIX_FINAL.out.tbi, failOnDuplicate:true, failOnMismatch:true) // @@ -715,7 +728,7 @@ workflow GERMLINE { bed: [meta, truth_bed] } - CRAM_PREPARE_SAMTOOLS_BEDTOOLS.out.ready_beds + ch_single_beds .combine(callers) .map { meta, bed, caller -> def new_meta = [ @@ -747,7 +760,7 @@ workflow GERMLINE { if(gemini){ def ch_vcf2db_input = CustomChannelOperators.joinOnKeys( ch_final_vcfs.map { meta, vcf, _tbi -> [ meta, vcf ]}, - VCF_EXTRACT_RELATE_SOMALIER.out.peds, + ch_final_peds, ['id', 'family', 'family_samples'] ) @@ -755,7 +768,7 @@ workflow GERMLINE { ch_vcf2db_input ) ch_versions = ch_versions.mix(VCF2DB.out.versions.first()) - + ch_final_dbs = VCF2DB.out.db } // @@ -765,10 +778,11 @@ workflow GERMLINE { if(updio) { VCF_UPD_UPDIO( ch_final_vcfs, - VCF_EXTRACT_RELATE_SOMALIER.out.peds, + ch_final_peds, ch_updio_common_cnvs ) - ch_versions = ch_versions.mix(VCF_UPD_UPDIO.out.versions.first()) + ch_versions = ch_versions.mix(VCF_UPD_UPDIO.out.versions) + ch_final_updio = VCF_UPD_UPDIO.out.updio } // @@ -782,7 +796,8 @@ workflow GERMLINE { ch_automap_panel, genome ) - ch_versions = ch_versions.mix(VCF_ROH_AUTOMAP.out.versions.first()) + ch_versions = ch_versions.mix(VCF_ROH_AUTOMAP.out.versions) + ch_final_automap = VCF_ROH_AUTOMAP.out.automap } } @@ -838,6 +853,16 @@ workflow GERMLINE { ) emit: + gvcfs = ch_gvcfs_final // channel: [ val(meta), path(gvcf), path(tbi) ] + vcfs = ch_final_vcfs // channel: [ val(meta), path(vcf), path(tbi) ] + gemini = ch_final_dbs // channel: [ val(meta), path(db) ] + peds = ch_final_peds // channel: [ val(meta), path(ped) ] + single_beds = ch_single_beds // channel: [ val(meta), path(bed) ] + joint_beds = ch_joint_beds // channel: [ val(meta), path(bed) ] + final_reports = ch_final_reports // channel: [ val(meta), path(report) ] + gvcf_reports = ch_gvcf_reports // channel: [ val(meta), path(report) ] + automap = ch_final_automap // channel: [ val(meta), path(automap) ] + updio = ch_final_updio // channel: [ val(meta), path(updio) ] multiqc_report = MULTIQC.out.report.toList() // channel: /path/to/multiqc_report.html versions = ch_versions // channel: [ path(versions.yml) ] } From f803ac15877dac3ac57b13de889cd28772b639a6 Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Wed, 6 Nov 2024 15:35:55 +0100 Subject: [PATCH 078/167] migrate to new workflow output definitions --- .github/workflows/ci.yml | 2 +- README.md | 2 +- conf/modules.config | 284 +---------- docs/index.md | 2 +- main.nf | 68 +++ nextflow.config | 5 +- .../local/vcf_validate_small_variants/main.nf | 1 - workflows/germline.nf | 459 +++++++++--------- 8 files changed, 329 insertions(+), 494 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d985e187..1601ca99 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -26,7 +26,7 @@ jobs: strategy: matrix: NXF_VER: - - "24.04.2" + - "24.10.0" - "latest-everything" filter: - "process" diff --git a/README.md b/README.md index ea969378..6bd84f3c 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ [![GitHub Actions Linting Status](https://github.com/nf-cmgg/germline/actions/workflows/linting.yml/badge.svg)](https://github.com/nf-cmgg/germline/actions/workflows/linting.yml) [![nf-test](https://img.shields.io/badge/unit_tests-nf--test-337ab7.svg)](https://www.nf-test.com) -[![Nextflow](https://img.shields.io/badge/nextflow%20DSL2-%E2%89%A524.04.2-23aa62.svg)](https://www.nextflow.io/) +[![Nextflow](https://img.shields.io/badge/nextflow%20DSL2-%E2%89%A524.10.0-23aa62.svg)](https://www.nextflow.io/) [![run with conda](http://img.shields.io/badge/run%20with-conda-3EB049?labelColor=000000&logo=anaconda)](https://docs.conda.io/en/latest/) [![run with docker](https://img.shields.io/badge/run%20with-docker-0db7ed?labelColor=000000&logo=docker)](https://www.docker.com/) [![run with singularity](https://img.shields.io/badge/run%20with-singularity-1d355c.svg?labelColor=000000)](https://sylabs.io/docs/) diff --git a/conf/modules.config b/conf/modules.config index cb5fe2ab..80101cfd 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -10,40 +10,8 @@ ---------------------------------------------------------------------------------------- */ -def enableOutput(state) { - """ - This function checks if the output of the given module should be published to the output directory. - The higher the option is in the list, the higher the priority of being in the output directory - """ - def order = [ - "vcfanno": params.vcfanno && params.annotate, - "annotate": params.annotate, - "add_ped": params.add_ped, - "normalize": params.normalize, - "filter": params.filter, - "original": true - ] - - return order.findIndexOf{it.key == state} == order.findIndexOf{it.value == true} -} - -def date = params.skip_date_project ? "" : "${new Date().format("yyyy-MM-dd")}_" -def final_output = { "${params.outdir}/${params.project ? "${date}${params.project}" : "${date}${workflow.runName}"}/${meta.family}" } -def final_output_reports = { "${params.outdir}/${params.project ? "${date}${params.project}" : "${date}${workflow.runName}"}/${meta.family}/reports" } -def individual_output = { "${params.outdir}/${meta.sample}" } -def individual_reports = { "${params.outdir}/${meta.sample}/reports" } -def individual_validation = { "${params.outdir}/${meta.sample}/validation/${meta.caller}" } - -def callers = params.callers.tokenize(",") - -def final_prefix = { params.output_suffix ? "${meta.id}${params.output_suffix}" : "${meta.id}.${meta.caller}" } - process { - publishDir = [ - enabled: false - ] - /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ REFERENCE MODULES @@ -61,14 +29,7 @@ process { */ withName: "^.*GERMLINE:BCFTOOLS_STATS\$" { - publishDir = [ - overwrite: true, - enabled: true, - path: final_output_reports, - mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } - ] // SAVE - ext.prefix = final_prefix + ext.prefix = { "${meta.id}.${meta.caller}"} } /* @@ -86,40 +47,17 @@ process { "--quantize 0:1:${params.min_callable_coverage - 1}: --mapq 1 --flag 1804 --no-per-base", params.mosdepth_slow ? "" : "--fast-mode" ].join(" ") - publishDir = [ - overwrite: true, - enabled: true, - mode: params.publish_dir_mode, - path: individual_output, - saveAs: { filename -> - filename.endsWith('.global.dist.txt') || filename.endsWith('.summary.txt') ? "reports/${filename}" : null - } - ] // SAVE } withName: "^.*CRAM_PREPARE_SAMTOOLS_BEDTOOLS:FILTER_BEDS\$" { ext.prefix = { "${meta.id}.filter"} ext.args = "-vE \"LOW_COVERAGE|NO_COVERAGE${params.keep_alt_contigs ? "" : "|alt|random|decoy|Un"}\"" ext.args2 = "-d 150" - publishDir = [ - overwrite: true, - enabled: true, - mode: params.publish_dir_mode, - path: individual_output, - saveAs: { filename -> filename.endsWith(".bed") ? filename.replace(".filter", "") : null } - ] // SAVE } withName: "^.*CRAM_PREPARE_SAMTOOLS_BEDTOOLS:BEDTOOLS_INTERSECT\$" { - ext.prefix = {"${meta.id}_intersect"} + ext.prefix = {"${meta.id}.intersect"} ext.args = "-sorted" - publishDir = [ - overwrite: true, - enabled: true, - mode: params.publish_dir_mode, - path: individual_output, - saveAs: { filename -> filename.endsWith(".bed") ? filename.replace("_intersect", "") : null } - ] // SAVE } /* @@ -147,37 +85,12 @@ process { } withName: "^.*CRAM_CALL_GATK4:VCF_CONCAT_BCFTOOLS:BCFTOOLS_CONCAT\$" { - publishDir = [ - overwrite: true, - enabled: true, - mode: params.publish_dir_mode, - path: individual_output, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } - ] // SAVE ext.prefix = { "${meta.id}.${meta.caller}.g" } ext.args = '--allow-overlaps --output-type z' } - withName: "^.*CRAM_CALL_GATK4:VCF_CONCAT_BCFTOOLS:TABIX_TABIX\$" { - publishDir = [ - overwrite: true, - enabled: true, - path: individual_output, - mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } - ] // SAVE - ext.args = '' - } - withName: "^.*CRAM_CALL_GATK4:BCFTOOLS_STATS\$" { - publishDir = [ - overwrite: true, - enabled: true, - path: individual_reports, - mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } - ] // SAVE - ext.prefix = final_prefix + ext.prefix = { "${meta.id}.${meta.caller}" } } /* @@ -193,36 +106,12 @@ process { } withName: "^.*BAM_CALL_ELPREP:VCF_CONCAT_BCFTOOLS:BCFTOOLS_CONCAT\$" { - publishDir = [ - overwrite: true, - enabled: true, - mode: params.publish_dir_mode, - path: individual_output, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } - ] // SAVE ext.prefix = { "${meta.id}.${meta.caller}.g" } ext.args = '--allow-overlaps --output-type z' } - withName: "^.*BAM_CALL_ELPREP:VCF_CONCAT_BCFTOOLS:TABIX_TABIX\$" { - publishDir = [ - overwrite: true, - enabled: true, - path: individual_output, - mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } - ] // SAVE - } - withName: "^.*BAM_CALL_ELPREP:BCFTOOLS_STATS\$" { - publishDir = [ - overwrite: true, - enabled: true, - path: individual_reports, - mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } - ] // SAVE - ext.prefix = final_prefix + ext.prefix = { "${meta.id}.${meta.caller}" } } /* @@ -238,13 +127,6 @@ process { withName: "^.*GVCF_JOINT_GENOTYPE_GATK4:MERGE_BEDS\$" { ext.args = "-d ${params.merge_distance}" - publishDir = [ - enabled: true, - overwrite: true, - path: final_output, - mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } - ] // SAVE } withName: "^.*GVCF_JOINT_GENOTYPE_GATK4:GAWK\$" { @@ -269,14 +151,7 @@ process { "--merge-contigs-into-num-partitions 25" ].join(" ") } - ext.prefix = { "genomicsdb_${meta.id}" } - publishDir = [ - enabled: params.only_merge || params.output_genomicsdb, - overwrite: true, - path: final_output, - mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } - ] // SAVE + ext.prefix = { "genomicsdb_${meta.id}_${meta.caller}" } } withName: "^.*GVCF_JOINT_GENOTYPE_GATK4:GATK4_GENOTYPEGVCFS\$" { @@ -291,15 +166,8 @@ process { } withName: "^.*GVCF_JOINT_GENOTYPE_GATK4:VCF_CONCAT_BCFTOOLS:BCFTOOLS_CONCAT\$" { - ext.prefix = enableOutput("original") ? final_prefix : {"${meta.id}.concat"} + ext.prefix = { "${meta.id}.concat" } ext.args = "--allow-overlaps --output-type z" - publishDir = [ - enabled: enableOutput("original"), - overwrite: true, - path: final_output, - mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } - ] // SAVE } /* @@ -310,7 +178,6 @@ process { withName: "^.*BAM_CALL_VARDICTJAVA:VARDICTJAVA\$" { time = { 16.h * task.attempt } - ext.prefix = {"${meta.id}"} ext.args = { [ '-c 1 -S 2 -E 3 -g 4 --nosv --deldupvar -Q 10 -F 0x700', @@ -327,35 +194,11 @@ process { withName: "^.*BAM_CALL_VARDICTJAVA:VCF_CONCAT_BCFTOOLS:BCFTOOLS_CONCAT\$" { ext.args = '--allow-overlaps --output-type z' - ext.prefix = enableOutput("original") ? final_prefix : {"${meta.id}.concat"} - publishDir = [ - overwrite: true, - enabled: enableOutput("original"), - mode: params.publish_dir_mode, - path: final_output, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } - ] // SAVE + ext.prefix = {"${meta.id}.concat"} } withName: "^.*BAM_CALL_VARDICTJAVA:TABIX_VCFANNO\$" { - ext.prefix = enableOutput("original") ? final_prefix : {"${meta.id}.vcfanno"} - publishDir = [ - overwrite: true, - enabled: enableOutput("original"), - mode: params.publish_dir_mode, - path: final_output, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } - ] // SAVE - } - - withName: "^.*BAM_CALL_VARDICTJAVA:TABIX_TABIX\$" { - publishDir = [ - overwrite: true, - enabled: enableOutput("filter") || enableOutput("original"), - mode: params.publish_dir_mode, - path: final_output, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } - ] // SAVE + ext.prefix = {"${meta.id}.vcfanno"} } /* @@ -388,14 +231,7 @@ process { "" } - ext.prefix = enableOutput("filter") ? final_prefix : {"${meta.id}.filtered"} - publishDir = [ - overwrite: true, - enabled: enableOutput("filter"), - mode: params.publish_dir_mode, - path: final_output, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } - ] // SAVE + ext.prefix = {"${meta.id}.filtered"} } /* @@ -405,15 +241,8 @@ process { */ withName: "^.*BCFTOOLS_NORM\$" { - ext.prefix = enableOutput("normalize") ? final_prefix : {"${meta.id}.normalized"} + ext.prefix = {"${meta.id}.normalized"} ext.args = "-m-" - publishDir = [ - overwrite: true, - enabled: enableOutput("normalize"), - mode: params.publish_dir_mode, - path: final_output, - saveAs: { filename -> filename.endsWith('.vcf.gz') ? filename : null } - ] // SAVE } /* @@ -424,35 +253,17 @@ process { withName: "^.*VCF_EXTRACT_RELATE_SOMALIER:SOMALIER_RELATE\$" { ext.args = { ped ? "" : "--infer"} - ext.prefix = final_prefix - publishDir = [ - overwrite: true, - enabled: true, - path: final_output, - mode: params.publish_dir_mode, - saveAs: { filename -> - filename ==~ /^.*\.html$/ ? "reports/" + filename.replace(".html", ".somalier.html") : - filename ==~ /^.*\.ped$/ ? filename.replace("_somalier.ped", ".ped") : - null - } - ] // SAVE + ext.prefix = { "${meta.id}.${meta.caller}" } } withName: "^.*VCF_PED_RTGTOOLS:RTGTOOLS_PEDFILTER\$" { - ext.prefix = {"${meta.id}_ped"} + ext.prefix = {"${meta.id}.ped"} ext.args = "--vcf" } withName: "^.*VCF_PED_RTGTOOLS:BCFTOOLS_ANNOTATE\$" { - ext.prefix = enableOutput("add_ped") ? final_prefix : { "${meta.id}.${meta.caller}_ped_annotated" } + ext.prefix = { "${meta.id}.${meta.caller}.ped.annotated" } ext.args = "--output-type z" - publishDir = [ - enabled: enableOutput("add_ped"), - overwrite: true, - path: final_output, - mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } - ] // SAVE } /* @@ -496,25 +307,11 @@ process { } withName: "^.*VCF_ANNOTATION:VCF_ANNOTATE_ENSEMBLVEP:BCFTOOLS_SORT\$" { - publishDir = [ - enabled: enableOutput("annotate"), - overwrite: true, - path: final_output, - mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } - ] // SAVE - ext.prefix = enableOutput("annotate") ? final_prefix : {"${meta.id}.sorted"} + ext.prefix = {"${meta.id}.sorted"} } withName: "^.*VCF_ANNOTATION:BGZIP_ANNOTATED_VCFS\$" { - publishDir = [ - enabled: enableOutput("vcfanno"), - overwrite: true, - path: final_output, - mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } - ] // SAVE - ext.prefix = enableOutput("vcfanno") ? final_prefix : {"${meta.id}.vcfanno"} + ext.prefix = {"${meta.id}.vcfanno"} } @@ -525,26 +322,11 @@ process { */ withName: "^.*VCF_VALIDATE_SMALL_VARIANTS:RTGTOOLS_VCFEVAL\$" { - publishDir = [ - enabled: true, - overwrite: true, - path: individual_validation, - mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } - ] // SAVE ext.args = {"--sample ${meta.sample} --decompose --squash-ploidy"} ext.prefix = {"${meta.sample}"} } withName: "^.*VCF_VALIDATE_SMALL_VARIANTS:RTGTOOLS_ROCPLOT\$" { - publishDir = [ - enabled: true, - overwrite: true, - path: individual_validation, - mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } - ] // SAVE - ext.args = '' ext.prefix = {"${meta.sample}.${meta.roc_type}"} } @@ -556,13 +338,7 @@ process { withName: "^.*VCF2DB\$" { ext.args = "--a-ok gnomAD_AC --a-ok gnomAD_Hom" - ext.prefix = final_prefix - publishDir = [ - overwrite: true, - path: final_output, - mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } - ] // SAVE + ext.prefix = { "${meta.id}.${meta.caller}" } } withName: "^.*VCF_UPD_UPDIO:BCFTOOLS_FILTER\$" { @@ -582,12 +358,6 @@ process { "--dadID ${meta.father}", "--include_MI" ].join(" ")} - publishDir = [ - overwrite: true, - path: final_output, - mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : "${filename}/${meta.child}" } - ] // SAVE } withName: "^.*VCF_ROH_AUTOMAP:AUTOMAP_AUTOMAP\$" { @@ -596,22 +366,6 @@ process { meta.family_samples.tokenize(",").size() > 1 ? "--multivcf" : "--id ${meta.family_samples}", params.automap_panel_name ? "--panelname ${params.automap_panel_name}" : "" ].findAll { it != "" }.join(" ")} - publishDir = [ - overwrite: true, - path: final_output, - mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } - ] // SAVE - } - - withName: "^.*TABIX_FINAL\$" { - publishDir = [ - enabled: true, - overwrite: true, - path: final_output, - mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } - ] // SAVE } /* @@ -622,13 +376,7 @@ process { 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 } - ] } - } env { diff --git a/docs/index.md b/docs/index.md index 8d40fe5e..9b635ef5 100644 --- a/docs/index.md +++ b/docs/index.md @@ -18,7 +18,7 @@ The pipeline is built using [Nextflow](https://www.nextflow.io), a workflow tool ## Quick Start -1. Install [`Nextflow`](https://www.nextflow.io/docs/latest/getstarted.html#installation) (`>=24.04.0`) +1. Install [`Nextflow`](https://www.nextflow.io/docs/latest/getstarted.html#installation) (`>=24.10.0`) 2. Install any of [`Docker`](https://docs.docker.com/engine/installation/), [`Singularity`](https://www.sylabs.io/guides/3.0/user-guide/) (you can follow [this tutorial](https://singularity-tutorial.github.io/01-installation/)), [`Podman`](https://podman.io/), [`Shifter`](https://nersc.gitlab.io/development/shifter/how-to-use/) or [`Charliecloud`](https://hpc.github.io/charliecloud/) for full pipeline reproducibility _(you can use [`Conda`](https://conda.io/miniconda.html) both to install Nextflow itself and also to manage software within pipelines. Please only use it within pipelines as a last resort; see [docs](https://nf-co.re/usage/configuration#basic-configuration-profiles))_. ```csv title="samplesheet.csv" diff --git a/main.nf b/main.nf index 57c97abe..1a7147d2 100644 --- a/main.nf +++ b/main.nf @@ -7,6 +7,8 @@ ---------------------------------------------------------------------------------------- */ +nextflow.preview.output = true + /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ IMPORT FUNCTIONS / MODULES / SUBWORKFLOWS / WORKFLOWS @@ -208,6 +210,72 @@ workflow { params.hook_url, GERMLINE.out.multiqc_report ) + + publish: + GERMLINE.out.gvcfs >> 'gvcfs' + GERMLINE.out.single_beds >> 'single_beds' + GERMLINE.out.validation >> 'validation' + GERMLINE.out.gvcf_reports >> 'gvcf_reports' + GERMLINE.out.vcfs >> 'vcfs' + GERMLINE.out.gemini >> 'gemini' + GERMLINE.out.peds >> 'peds' + GERMLINE.out.joint_beds >> 'joint_beds' + GERMLINE.out.final_reports >> 'final_reports' + GERMLINE.out.automap >> 'automap' + GERMLINE.out.updio >> 'updio' + GERMLINE.out.multiqc_report >> 'multiqc' +} + +def project_name = params.project ?: workflow.runName +def final_prefix = params.skip_date_project ? "${project_name}" : "${new Date().format("yyyy-MM-dd")}_${project_name}" + +output { + 'gvcfs' { + path { meta, gvcf, _tbi -> { file -> + if(file == gvcf.name) { + return "${meta.id}/${meta.id}.${meta.caller}.g.vcf.gz" + } + return "${meta.id}/${meta.id}.${meta.caller}.g.vcf.gz.tbi" + } } + } + 'single_beds' { + path { meta, _bed -> { _file -> "${meta.id}/${meta.id}.bed" } } + } + 'validation' { + path { meta, _report -> { file -> "${meta.id}/validation/${meta.caller}/${file}" } } + } + 'gvcf_reports' { + path { meta, _report -> { _file -> "${meta.id}/reports/${meta.id}.${meta.caller}.bcftools_stats.txt" }} + } + 'vcfs' { + path { meta, vcf, _tbi -> { file -> + if(file == vcf.name) { + return "${final_prefix}/${meta.family}/${meta.id}.${meta.caller}.vcf.gz" + } + return "${final_prefix}/${meta.family}/${meta.id}.${meta.caller}.vcf.gz.tbi" + } } + } + 'gemini' { + path { meta, _db -> { _file -> "${final_prefix}/${meta.family}/${meta.id}.${meta.caller}.db"}} + } + 'peds' { + path { meta, _ped -> { _file -> "${final_prefix}/${meta.family}/${meta.id}.${meta.caller}.ped"}} + } + 'joint_beds' { + path { meta, _bed -> { _file -> "${final_prefix}/${meta.family}/${meta.id}.${meta.caller}.bed"}} + } + 'final_reports' { + path { meta, _report -> { file -> "${final_prefix}/${meta.family}/reports/${file}"}} + } + 'automap' { + path { meta, _automap -> { file -> "${final_prefix}/${meta.family}/automap/${meta.caller}"}} + } + 'updio' { + path { meta, _updio -> { file -> "${final_prefix}/${meta.family}/updio/${meta.caller}"}} + } + 'multiqc' { + path { _report -> { _file -> "multiqc/multiqc_report.html"}} + } } /* diff --git a/nextflow.config b/nextflow.config index c0a32e09..8e2a0484 100644 --- a/nextflow.config +++ b/nextflow.config @@ -294,7 +294,7 @@ manifest { homePage = 'https://github.com/nf-cmgg/germline' description = """A nextflow pipeline for calling and annotating small germline variants from short DNA reads for WES and WGS data""" mainScript = 'main.nf' - nextflowVersion = '!>=24.04.2' + nextflowVersion = '!>=24.10.0' version = '1.9.0dev' doi = '' } @@ -329,3 +329,6 @@ validation { // Load modules.config for DSL2 module specific options includeConfig 'conf/modules.config' + +workflow.output.mode = params.publish_dir_mode +outputDir = params.outdir \ No newline at end of file diff --git a/subworkflows/local/vcf_validate_small_variants/main.nf b/subworkflows/local/vcf_validate_small_variants/main.nf index 829b90d8..1464caaf 100644 --- a/subworkflows/local/vcf_validate_small_variants/main.nf +++ b/subworkflows/local/vcf_validate_small_variants/main.nf @@ -92,7 +92,6 @@ workflow VCF_VALIDATE_SMALL_VARIANTS { vcfeval_snp_roc = ch_vcfeval_snp_roc // channel: [ meta, tsv ] vcfeval_non_snp_roc = ch_vcfeval_non_snp_roc // channel: [ meta, tsv ] vcfeval_weighted_roc = ch_vcfeval_weighted_roc // channel: [ meta, tsv ] - rtgtools_snp_png_rocplot = ch_rtgtools_snp_png_rocplot // channel: [ meta, png ] rtgtools_non_snp_png_rocplot = ch_rtgtools_non_snp_png_rocplot // channel: [ meta, png ] rtgtools_weighted_png_rocplot = ch_rtgtools_weighted_png_rocplot // channel: [ meta, png ] diff --git a/workflows/germline.nf b/workflows/germline.nf index 27fcca9f..d2b060c1 100644 --- a/workflows/germline.nf +++ b/workflows/germline.nf @@ -564,241 +564,257 @@ workflow GERMLINE { ch_normalized_variants = ch_filtered_variants } - def ch_final_vcfs = Channel.empty() - def ch_final_dbs = Channel.empty() - def ch_final_automap = Channel.empty() - def ch_final_peds = Channel.empty() - def ch_final_updio = Channel.empty() - if(!only_merge && !only_call) { + // + // Preprocess the PED channel + // - // - // Preprocess the PED channel - // + def ch_somalier_input = ch_normalized_variants + .map { meta, _vcf, _tbi -> + [ meta, pedFiles.containsKey(meta.family) ? pedFiles[meta.family] : [] ] + } - def ch_somalier_input = ch_normalized_variants - .map { meta, _vcf, _tbi -> - [ meta, pedFiles.containsKey(meta.family) ? pedFiles[meta.family] : [] ] - } + // + // Run relation tests with somalier + // - // - // Run relation tests with somalier - // + VCF_EXTRACT_RELATE_SOMALIER( + ch_normalized_variants, + ch_fasta_ready, + ch_fai_ready, + ch_somalier_sites, + ch_somalier_input + ) + ch_versions = ch_versions.mix(VCF_EXTRACT_RELATE_SOMALIER.out.versions) + def ch_final_peds = VCF_EXTRACT_RELATE_SOMALIER.out.peds + ch_final_reports = ch_final_reports.mix(VCF_EXTRACT_RELATE_SOMALIER.out.html) + + // + // Add PED headers to the VCFs + // + + def ch_ped_vcfs = Channel.empty() + if(add_ped){ - VCF_EXTRACT_RELATE_SOMALIER( + VCF_PED_RTGTOOLS( ch_normalized_variants, - ch_fasta_ready, - ch_fai_ready, - ch_somalier_sites, - ch_somalier_input + ch_final_peds ) - ch_versions = ch_versions.mix(VCF_EXTRACT_RELATE_SOMALIER.out.versions) - ch_final_peds = VCF_EXTRACT_RELATE_SOMALIER.out.peds - ch_final_reports = ch_final_reports.mix(VCF_EXTRACT_RELATE_SOMALIER.out.html) + ch_versions = ch_versions.mix(VCF_PED_RTGTOOLS.out.versions) - // - // Add PED headers to the VCFs - // + ch_ped_vcfs = VCF_PED_RTGTOOLS.out.ped_vcfs + } else { + ch_ped_vcfs = ch_normalized_variants + .map { meta, vcf, _tbi=[] -> + [ meta, vcf ] + } + } - def ch_ped_vcfs = Channel.empty() - if(add_ped){ + // + // Annotation of the variants and creation of Gemini-compatible database files + // - VCF_PED_RTGTOOLS( - ch_normalized_variants, - ch_final_peds - ) - ch_versions = ch_versions.mix(VCF_PED_RTGTOOLS.out.versions) - - ch_ped_vcfs = VCF_PED_RTGTOOLS.out.ped_vcfs - } else { - ch_ped_vcfs = ch_normalized_variants - .map { meta, vcf, _tbi=[] -> - [ meta, vcf ] - } - } + def ch_annotation_output = Channel.empty() + if (annotate) { + VCF_ANNOTATION( + ch_ped_vcfs, + ch_fasta_ready, + ch_vep_cache_ready, + ch_vep_extra_files, + ch_vcfanno_config, + ch_vcfanno_lua, + ch_vcfanno_resources, + genome, + species, + vep_cache_version, + vep_chunk_size, + vcfanno + ) + ch_versions = ch_versions.mix(VCF_ANNOTATION.out.versions) + ch_reports = ch_reports.mix(VCF_ANNOTATION.out.reports) - // - // Annotation of the variants and creation of Gemini-compatible database files - // + ch_annotation_output = VCF_ANNOTATION.out.annotated_vcfs + } else { + ch_annotation_output = ch_ped_vcfs + } - def ch_annotation_output = Channel.empty() - if (annotate) { - VCF_ANNOTATION( - ch_ped_vcfs, - ch_fasta_ready, - ch_vep_cache_ready, - ch_vep_extra_files, - ch_vcfanno_config, - ch_vcfanno_lua, - ch_vcfanno_resources, - genome, - species, - vep_cache_version, - vep_chunk_size, - vcfanno - ) - ch_versions = ch_versions.mix(VCF_ANNOTATION.out.versions) - ch_reports = ch_reports.mix(VCF_ANNOTATION.out.reports) + // + // Tabix the resulting VCF + // - ch_annotation_output = VCF_ANNOTATION.out.annotated_vcfs - } else { - ch_annotation_output = ch_ped_vcfs - } + TABIX_FINAL( + ch_annotation_output + ) + ch_versions = ch_versions.mix(TABIX_FINAL.out.versions.first()) - // - // Tabix the resulting VCF - // + def ch_final_vcfs = ch_annotation_output + .join(TABIX_FINAL.out.tbi, failOnDuplicate:true, failOnMismatch:true) - TABIX_FINAL( - ch_annotation_output - ) - ch_versions = ch_versions.mix(TABIX_FINAL.out.versions.first()) + // + // Validate the found variants + // - ch_final_vcfs = ch_annotation_output - .join(TABIX_FINAL.out.tbi, failOnDuplicate:true, failOnMismatch:true) + def ch_final_validation = Channel.empty() + if (validate){ + def ch_truths_input = ch_input.truth_variants + .map { meta, vcf, tbi, bed -> + def new_meta = meta - meta.subMap("duplicate_count") + [ groupKey(new_meta, meta.duplicate_count), vcf, tbi, bed ] + } + .groupTuple() + .map { meta, vcf, tbi, bed -> + // Get only one VCF for samples that were given multiple times + def one_vcf = vcf.find { vcf_file -> vcf_file != [] } ?: [] + def one_tbi = tbi.find { tbi_file -> tbi_file != [] } ?: [] + def one_bed = bed.find { bed_file -> bed_file != [] } ?: [] + [ meta, one_vcf, one_tbi, one_bed ] + } + .branch { _meta, vcf, tbi, _bed -> + no_vcf: !vcf + tbi: tbi + no_tbi: !tbi + } - // - // Validate the found variants - // + // Create truth VCF indices if none were given + TABIX_TRUTH( + ch_truths_input.no_tbi.map { meta, vcf, _tbi, _bed -> + [ meta, vcf ] + } + ) + ch_versions = ch_versions.mix(TABIX_TRUTH.out.versions.first()) - if (validate){ - - def ch_truths_input = ch_input.truth_variants - .map { meta, vcf, tbi, bed -> - def new_meta = meta - meta.subMap("duplicate_count") - [ groupKey(new_meta, meta.duplicate_count), vcf, tbi, bed ] - } - .groupTuple() - .map { meta, vcf, tbi, bed -> - // Get only one VCF for samples that were given multiple times - def one_vcf = vcf.find { vcf_file -> vcf_file != [] } ?: [] - def one_tbi = tbi.find { tbi_file -> tbi_file != [] } ?: [] - def one_bed = bed.find { bed_file -> bed_file != [] } ?: [] - [ meta, one_vcf, one_tbi, one_bed ] - } - .branch { _meta, vcf, tbi, _bed -> - no_vcf: !vcf - tbi: tbi - no_tbi: !tbi - } - - // Create truth VCF indices if none were given - TABIX_TRUTH( - ch_truths_input.no_tbi.map { meta, vcf, _tbi, _bed -> - [ meta, vcf ] - } - ) - ch_versions = ch_versions.mix(TABIX_TRUTH.out.versions.first()) - - ch_truths_input.no_tbi - .join(TABIX_TRUTH.out.tbi, failOnDuplicate:true, failOnMismatch:true) - .map { meta, vcf, _empty, bed, tbi -> - [ meta, vcf, tbi, bed ] - } - .mix(ch_truths_input.tbi) - .mix(ch_truths_input.no_vcf) - .combine(callers) - .map { meta, vcf, tbi, bed, caller -> - def new_meta = meta + [caller: caller] - [ new_meta, vcf, tbi, bed ] - } - .set { ch_truths } // Set needs to be used here due to some Nextflow bug - - def ch_validation_input = ch_final_vcfs - .map { meta, vcf, tbi -> - def new_meta = meta - meta.subMap("family_samples") - [ new_meta, vcf, tbi, meta.family_samples.tokenize(",") ] - } - .transpose(by: 3) - .map { meta, vcf, tbi, sample -> - def new_meta = [ - id: sample, - sample: sample, - family: meta.family, - caller: meta.caller - ] - [ new_meta, vcf, tbi ] - } - .join(ch_truths, failOnMismatch:true, failOnDuplicate:true) - .filter { _meta, _vcf, _tbi, truth_vcf, _truth_tbi, _truth_bed -> - // Filter out all samples that have no truth VCF - truth_vcf != [] - } - .multiMap { meta, vcf, tbi, truth_vcf, truth_tbi, truth_bed -> - vcfs: [meta, vcf, tbi, truth_vcf, truth_tbi] - bed: [meta, truth_bed] - } - - ch_single_beds - .combine(callers) - .map { meta, bed, caller -> - def new_meta = [ - id:meta.id, - sample:meta.sample, - family:meta.family, - caller:caller - ] - [ new_meta, bed ] - } - .join(ch_validation_input.bed, failOnMismatch:true, failOnDuplicate:true) - .map { meta, regions, truth -> - [ meta, truth, regions ] - } - .set { ch_validation_regions } // Set needs to be used here due to some Nextflow bug - - VCF_VALIDATE_SMALL_VARIANTS( - ch_validation_input.vcfs, - ch_validation_regions, - ch_sdf_ready.collect() - ) - ch_versions = ch_versions.mix(VCF_VALIDATE_SMALL_VARIANTS.out.versions) - } + ch_truths_input.no_tbi + .join(TABIX_TRUTH.out.tbi, failOnDuplicate:true, failOnMismatch:true) + .map { meta, vcf, _empty, bed, tbi -> + [ meta, vcf, tbi, bed ] + } + .mix(ch_truths_input.tbi) + .mix(ch_truths_input.no_vcf) + .combine(callers) + .map { meta, vcf, tbi, bed, caller -> + def new_meta = meta + [caller: caller] + [ new_meta, vcf, tbi, bed ] + } + .set { ch_truths } // Set needs to be used here due to some Nextflow bug - // - // Create Gemini-compatible database files - // + def ch_validation_input = ch_final_vcfs + .map { meta, vcf, tbi -> + def new_meta = meta - meta.subMap("family_samples") + [ new_meta, vcf, tbi, meta.family_samples.tokenize(",") ] + } + .transpose(by: 3) + .map { meta, vcf, tbi, sample -> + def new_meta = [ + id: sample, + sample: sample, + family: meta.family, + caller: meta.caller + ] + [ new_meta, vcf, tbi ] + } + .join(ch_truths, failOnMismatch:true, failOnDuplicate:true) + .filter { _meta, _vcf, _tbi, truth_vcf, _truth_tbi, _truth_bed -> + // Filter out all samples that have no truth VCF + truth_vcf != [] + } + .multiMap { meta, vcf, tbi, truth_vcf, truth_tbi, truth_bed -> + vcfs: [meta, vcf, tbi, truth_vcf, truth_tbi] + bed: [meta, truth_bed] + } - if(gemini){ - def ch_vcf2db_input = CustomChannelOperators.joinOnKeys( - ch_final_vcfs.map { meta, vcf, _tbi -> [ meta, vcf ]}, - ch_final_peds, - ['id', 'family', 'family_samples'] - ) + ch_single_beds + .combine(callers) + .map { meta, bed, caller -> + def new_meta = [ + id:meta.id, + sample:meta.sample, + family:meta.family, + caller:caller + ] + [ new_meta, bed ] + } + .join(ch_validation_input.bed, failOnMismatch:true, failOnDuplicate:true) + .map { meta, regions, truth -> + [ meta, truth, regions ] + } + .set { ch_validation_regions } // Set needs to be used here due to some Nextflow bug - VCF2DB( - ch_vcf2db_input - ) - ch_versions = ch_versions.mix(VCF2DB.out.versions.first()) - ch_final_dbs = VCF2DB.out.db - } + VCF_VALIDATE_SMALL_VARIANTS( + ch_validation_input.vcfs, + ch_validation_regions, + ch_sdf_ready.collect() + ) + ch_versions = ch_versions.mix(VCF_VALIDATE_SMALL_VARIANTS.out.versions) + + ch_final_validation = VCF_VALIDATE_SMALL_VARIANTS.out.vcfeval_true_positive_vcf.mix( + VCF_VALIDATE_SMALL_VARIANTS.out.vcfeval_true_positive_vcf_tbi, + VCF_VALIDATE_SMALL_VARIANTS.out.vcfeval_false_negative_vcf, + VCF_VALIDATE_SMALL_VARIANTS.out.vcfeval_false_negative_vcf_tbi, + VCF_VALIDATE_SMALL_VARIANTS.out.vcfeval_false_positive_vcf, + VCF_VALIDATE_SMALL_VARIANTS.out.vcfeval_false_positive_vcf_tbi, + VCF_VALIDATE_SMALL_VARIANTS.out.vcfeval_true_positive_baseline_vcf, + VCF_VALIDATE_SMALL_VARIANTS.out.vcfeval_true_positive_baseline_vcf_tbi, + VCF_VALIDATE_SMALL_VARIANTS.out.vcfeval_summary, + VCF_VALIDATE_SMALL_VARIANTS.out.vcfeval_phasing, + VCF_VALIDATE_SMALL_VARIANTS.out.vcfeval_snp_roc, + VCF_VALIDATE_SMALL_VARIANTS.out.vcfeval_non_snp_roc, + VCF_VALIDATE_SMALL_VARIANTS.out.vcfeval_weighted_roc, + VCF_VALIDATE_SMALL_VARIANTS.out.rtgtools_snp_png_rocplot, + VCF_VALIDATE_SMALL_VARIANTS.out.rtgtools_non_snp_png_rocplot, + VCF_VALIDATE_SMALL_VARIANTS.out.rtgtools_weighted_png_rocplot, + VCF_VALIDATE_SMALL_VARIANTS.out.rtgtools_snp_svg_rocplot, + VCF_VALIDATE_SMALL_VARIANTS.out.rtgtools_non_snp_svg_rocplot, + VCF_VALIDATE_SMALL_VARIANTS.out.rtgtools_weighted_svg_rocplot + ) + } - // - // Run UPDio analysis - // + // + // Create Gemini-compatible database files + // - if(updio) { - VCF_UPD_UPDIO( - ch_final_vcfs, + def ch_final_dbs = Channel.empty() + if(gemini){ + def ch_vcf2db_input = CustomChannelOperators.joinOnKeys( + ch_final_vcfs.map { meta, vcf, _tbi -> [ meta, vcf ]}, ch_final_peds, - ch_updio_common_cnvs + ['id', 'family', 'family_samples'] ) - ch_versions = ch_versions.mix(VCF_UPD_UPDIO.out.versions) - ch_final_updio = VCF_UPD_UPDIO.out.updio - } - // - // Run automap analysis - // + VCF2DB( + ch_vcf2db_input + ) + ch_versions = ch_versions.mix(VCF2DB.out.versions.first()) + ch_final_dbs = VCF2DB.out.db + } - if(automap) { - VCF_ROH_AUTOMAP( - ch_final_vcfs, - ch_automap_repeats, - ch_automap_panel, - genome - ) - ch_versions = ch_versions.mix(VCF_ROH_AUTOMAP.out.versions) - ch_final_automap = VCF_ROH_AUTOMAP.out.automap - } + // + // Run UPDio analysis + // + + def ch_final_updio = Channel.empty() + if(updio) { + VCF_UPD_UPDIO( + ch_final_vcfs, + ch_final_peds, + ch_updio_common_cnvs + ) + ch_versions = ch_versions.mix(VCF_UPD_UPDIO.out.versions) + ch_final_updio = VCF_UPD_UPDIO.out.updio + } + + // + // Run automap analysis + // + + def ch_final_automap = Channel.empty() + if(automap) { + VCF_ROH_AUTOMAP( + ch_final_vcfs, + ch_automap_repeats, + ch_automap_panel, + genome + ) + ch_versions = ch_versions.mix(VCF_ROH_AUTOMAP.out.versions) + ch_final_automap = VCF_ROH_AUTOMAP.out.automap } // @@ -853,18 +869,19 @@ workflow GERMLINE { ) emit: - gvcfs = ch_gvcfs_final // channel: [ val(meta), path(gvcf), path(tbi) ] - vcfs = ch_final_vcfs // channel: [ val(meta), path(vcf), path(tbi) ] - gemini = ch_final_dbs // channel: [ val(meta), path(db) ] - peds = ch_final_peds // channel: [ val(meta), path(ped) ] - single_beds = ch_single_beds // channel: [ val(meta), path(bed) ] - joint_beds = ch_joint_beds // channel: [ val(meta), path(bed) ] - final_reports = ch_final_reports // channel: [ val(meta), path(report) ] - gvcf_reports = ch_gvcf_reports // channel: [ val(meta), path(report) ] - automap = ch_final_automap // channel: [ val(meta), path(automap) ] - updio = ch_final_updio // channel: [ val(meta), path(updio) ] - multiqc_report = MULTIQC.out.report.toList() // channel: /path/to/multiqc_report.html - versions = ch_versions // channel: [ path(versions.yml) ] + gvcfs = ch_gvcfs_final // channel: [ val(meta), path(gvcf), path(tbi) ] + vcfs = ch_final_vcfs // channel: [ val(meta), path(vcf), path(tbi) ] + gemini = ch_final_dbs // channel: [ val(meta), path(db) ] + peds = ch_final_peds // channel: [ val(meta), path(ped) ] + single_beds = ch_single_beds // channel: [ val(meta), path(bed) ] + joint_beds = ch_joint_beds // channel: [ val(meta), path(bed) ] + final_reports = ch_final_reports // channel: [ val(meta), path(report) ] + gvcf_reports = ch_gvcf_reports // channel: [ val(meta), path(report) ] + automap = ch_final_automap // channel: [ val(meta), path(automap) ] + updio = ch_final_updio // channel: [ val(meta), path(updio) ] + validation = ch_final_validation // channel: [ val(meta), path(file) ] + multiqc_report = MULTIQC.out.report.toList() // channel: /path/to/multiqc_report.html + versions = ch_versions // channel: [ path(versions.yml) ] } /* From dd0aebffa4d6f244125cc6f110061f1b268051d2 Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Wed, 6 Nov 2024 15:48:29 +0100 Subject: [PATCH 079/167] eclint --- .nf-core.yml | 2 +- main.nf | 2 +- nextflow.config | 2 +- workflows/germline.nf | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.nf-core.yml b/.nf-core.yml index beb1203f..bb292c7d 100644 --- a/.nf-core.yml +++ b/.nf-core.yml @@ -28,7 +28,7 @@ lint: - manifest.homePage - validation.help.afterText - validation.summary.afterText -nf_core_version: 3.0.1 +nf_core_version: 3.0.2 repository_type: pipeline template: author: nvnieuwk diff --git a/main.nf b/main.nf index 1a7147d2..6a756034 100644 --- a/main.nf +++ b/main.nf @@ -248,7 +248,7 @@ output { path { meta, _report -> { _file -> "${meta.id}/reports/${meta.id}.${meta.caller}.bcftools_stats.txt" }} } 'vcfs' { - path { meta, vcf, _tbi -> { file -> + path { meta, vcf, _tbi -> { file -> if(file == vcf.name) { return "${final_prefix}/${meta.family}/${meta.id}.${meta.caller}.vcf.gz" } diff --git a/nextflow.config b/nextflow.config index 8e2a0484..4877e4d7 100644 --- a/nextflow.config +++ b/nextflow.config @@ -331,4 +331,4 @@ validation { includeConfig 'conf/modules.config' workflow.output.mode = params.publish_dir_mode -outputDir = params.outdir \ No newline at end of file +outputDir = params.outdir diff --git a/workflows/germline.nf b/workflows/germline.nf index d2b060c1..63497ec3 100644 --- a/workflows/germline.nf +++ b/workflows/germline.nf @@ -473,7 +473,7 @@ workflow GERMLINE { ch_gvcfs_ready = ch_gvcfs_ready.mix(BAM_CALL_ELPREP.out.gvcfs) ch_versions = ch_versions.mix(BAM_CALL_ELPREP.out.versions) ch_reports = ch_reports.mix(BAM_CALL_ELPREP.out.reports.map { _meta, report -> report }) - ch_gvcf_reports = ch_gvcf_reports.mix(BAM_CALL_ELPREP.out.reports) + ch_gvcf_reports = ch_gvcf_reports.mix(BAM_CALL_ELPREP.out.reports) } From 574f6b1bd0ce22ae1da5404e0d34aa523a1c0a79 Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Wed, 6 Nov 2024 16:08:58 +0100 Subject: [PATCH 080/167] fix some tests --- .../local/bam_call_elprep/main.nf.test.snap | 18 ++++++++++++++++-- .../local/cram_call_gatk4/main.nf.test.snap | 18 ++++++++++++++++-- 2 files changed, 32 insertions(+), 4 deletions(-) diff --git a/tests/subworkflows/local/bam_call_elprep/main.nf.test.snap b/tests/subworkflows/local/bam_call_elprep/main.nf.test.snap index ae4dbbbd..e9e4ce30 100644 --- a/tests/subworkflows/local/bam_call_elprep/main.nf.test.snap +++ b/tests/subworkflows/local/bam_call_elprep/main.nf.test.snap @@ -16,6 +16,13 @@ ], [ [ + { + "id": "NA24143", + "sample": "NA24143", + "family": "Ashkenazim", + "family_samples": "NA24143", + "caller": "elprep" + }, "NA24143.elprep.bcftools_stats.txt:md5,36b9f979c03b24d87e2dc710baf3672b" ] ] @@ -24,7 +31,7 @@ "nf-test": "0.9.1", "nextflow": "24.10.0" }, - "timestamp": "2024-11-04T15:56:30.054330853" + "timestamp": "2024-11-06T15:50:52.357078263" }, "bam_call_elprep - default": { "content": [ @@ -43,6 +50,13 @@ ], [ [ + { + "id": "NA24143", + "sample": "NA24143", + "family": "Ashkenazim", + "family_samples": "NA24143", + "caller": "elprep" + }, "NA24143.elprep.bcftools_stats.txt:md5,36b9f979c03b24d87e2dc710baf3672b" ] ] @@ -51,6 +65,6 @@ "nf-test": "0.9.1", "nextflow": "24.10.0" }, - "timestamp": "2024-11-04T15:55:56.561058236" + "timestamp": "2024-11-06T15:50:14.303434628" } } \ No newline at end of file diff --git a/tests/subworkflows/local/cram_call_gatk4/main.nf.test.snap b/tests/subworkflows/local/cram_call_gatk4/main.nf.test.snap index 57de17e4..6ade3291 100644 --- a/tests/subworkflows/local/cram_call_gatk4/main.nf.test.snap +++ b/tests/subworkflows/local/cram_call_gatk4/main.nf.test.snap @@ -6,6 +6,13 @@ ], [ [ + { + "id": "NA24143", + "sample": "NA24143", + "family": "Ashkenazim", + "family_samples": "NA24143", + "caller": "haplotypecaller" + }, "NA24143.haplotypecaller.bcftools_stats.txt:md5,09b4e7674e0f5b98b1e548df3002250e" ] ] @@ -14,7 +21,7 @@ "nf-test": "0.9.1", "nextflow": "24.10.0" }, - "timestamp": "2024-11-05T09:53:12.737680049" + "timestamp": "2024-11-06T15:52:12.577735225" }, "cram_call_gatk4 - dragstr": { "content": [ @@ -23,6 +30,13 @@ ], [ [ + { + "id": "NA24143", + "sample": "NA24143", + "family": "Ashkenazim", + "family_samples": "NA24143", + "caller": "haplotypecaller" + }, "NA24143.haplotypecaller.bcftools_stats.txt:md5,c4dad5b8e05871dda66df42b1f6c89ff" ] ] @@ -31,6 +45,6 @@ "nf-test": "0.9.1", "nextflow": "24.10.0" }, - "timestamp": "2024-11-05T09:54:07.696125828" + "timestamp": "2024-11-06T15:53:15.117652446" } } \ No newline at end of file From e454685094da8dd8d6680c343860a81f92b14cf6 Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Wed, 6 Nov 2024 16:41:40 +0100 Subject: [PATCH 081/167] fix more workflow tests --- .../local/bam_call_elprep/main.nf.test | 4 +-- .../local/bam_call_elprep/main.nf.test.snap | 12 ++++---- .../local/bam_call_vardictjava/main.nf.test | 2 +- .../bam_call_vardictjava/main.nf.test.snap | 6 ++-- .../local/cram_call_gatk4/main.nf.test | 4 +-- .../local/cram_call_gatk4/main.nf.test.snap | 28 ++++++++++++++++--- .../gvcf_joint_genotype_gatk4/main.nf.test | 6 ++-- .../main.nf.test.snap | 22 +++++++-------- 8 files changed, 52 insertions(+), 32 deletions(-) diff --git a/tests/subworkflows/local/bam_call_elprep/main.nf.test b/tests/subworkflows/local/bam_call_elprep/main.nf.test index 2f639e35..534deee0 100644 --- a/tests/subworkflows/local/bam_call_elprep/main.nf.test +++ b/tests/subworkflows/local/bam_call_elprep/main.nf.test @@ -49,7 +49,7 @@ nextflow_workflow { assertAll( { assert workflow.success }, { assert snapshot( - workflow.out.gvcfs.collect { [it[0], "${file(it[1]).name},variantsMD5:${path(it[1]).vcf.variantsMD5}", file(it[2]).name] }, + workflow.out.gvcfs.collect { [it[0], "variantsMD5:${path(it[1]).vcf.variantsMD5}", it[2][-12..-1]] }, workflow.out.reports ).match() } ) @@ -97,7 +97,7 @@ nextflow_workflow { assertAll( { assert workflow.success }, { assert snapshot( - workflow.out.gvcfs.collect { [it[0], "${file(it[1]).name},variantsMD5:${path(it[1]).vcf.variantsMD5}", file(it[2]).name] }, + workflow.out.gvcfs.collect { [it[0], "variantsMD5:${path(it[1]).vcf.variantsMD5}", it[2][-12..-1]] }, workflow.out.reports ).match() } ) diff --git a/tests/subworkflows/local/bam_call_elprep/main.nf.test.snap b/tests/subworkflows/local/bam_call_elprep/main.nf.test.snap index e9e4ce30..2d85d7f1 100644 --- a/tests/subworkflows/local/bam_call_elprep/main.nf.test.snap +++ b/tests/subworkflows/local/bam_call_elprep/main.nf.test.snap @@ -10,8 +10,8 @@ "family_samples": "NA24143", "caller": "elprep" }, - "NA24143.elprep.g.vcf.gz,variantsMD5:974ed65cfad6264db7c6589d6b7d7d74", - "NA24143.elprep.g.vcf.gz.tbi" + "variantsMD5:974ed65cfad6264db7c6589d6b7d7d74", + "g.vcf.gz.tbi" ] ], [ @@ -31,7 +31,7 @@ "nf-test": "0.9.1", "nextflow": "24.10.0" }, - "timestamp": "2024-11-06T15:50:52.357078263" + "timestamp": "2024-11-06T16:23:49.669427501" }, "bam_call_elprep - default": { "content": [ @@ -44,8 +44,8 @@ "family_samples": "NA24143", "caller": "elprep" }, - "NA24143.elprep.g.vcf.gz,variantsMD5:974ed65cfad6264db7c6589d6b7d7d74", - "NA24143.elprep.g.vcf.gz.tbi" + "variantsMD5:974ed65cfad6264db7c6589d6b7d7d74", + "g.vcf.gz.tbi" ] ], [ @@ -65,6 +65,6 @@ "nf-test": "0.9.1", "nextflow": "24.10.0" }, - "timestamp": "2024-11-06T15:50:14.303434628" + "timestamp": "2024-11-06T16:23:17.425264939" } } \ No newline at end of file diff --git a/tests/subworkflows/local/bam_call_vardictjava/main.nf.test b/tests/subworkflows/local/bam_call_vardictjava/main.nf.test index 1b933dda..c64a4461 100644 --- a/tests/subworkflows/local/bam_call_vardictjava/main.nf.test +++ b/tests/subworkflows/local/bam_call_vardictjava/main.nf.test @@ -52,7 +52,7 @@ nextflow_workflow { assertAll( { assert workflow.success }, { assert snapshot( - workflow.out.vcfs.collect { [it[0], "${file(it[1]).name},variantsMD5:${path(it[1]).vcf.variantsMD5}", file(it[2]).name] } + workflow.out.vcfs.collect { [it[0], "variantsMD5:${path(it[1]).vcf.variantsMD5}", it[2][-10..-1]] } ).match() } ) } diff --git a/tests/subworkflows/local/bam_call_vardictjava/main.nf.test.snap b/tests/subworkflows/local/bam_call_vardictjava/main.nf.test.snap index c7011326..5d37ef35 100644 --- a/tests/subworkflows/local/bam_call_vardictjava/main.nf.test.snap +++ b/tests/subworkflows/local/bam_call_vardictjava/main.nf.test.snap @@ -10,8 +10,8 @@ "family_samples": "NA24143", "caller": "vardict" }, - "NA24143.vardict.vcf.gz,variantsMD5:98497d2c15c6e3781f5ddeb81bf6288f", - "NA24143.vardict.vcf.gz.tbi" + "variantsMD5:98497d2c15c6e3781f5ddeb81bf6288f", + "vcf.gz.tbi" ] ] ], @@ -19,6 +19,6 @@ "nf-test": "0.9.1", "nextflow": "24.10.0" }, - "timestamp": "2024-11-05T09:44:33.098049827" + "timestamp": "2024-11-06T16:29:46.9755281" } } \ No newline at end of file diff --git a/tests/subworkflows/local/cram_call_gatk4/main.nf.test b/tests/subworkflows/local/cram_call_gatk4/main.nf.test index fa45e6a6..cbf271c4 100644 --- a/tests/subworkflows/local/cram_call_gatk4/main.nf.test +++ b/tests/subworkflows/local/cram_call_gatk4/main.nf.test @@ -58,7 +58,7 @@ nextflow_workflow { assertAll( { assert workflow.success }, { assert snapshot( - workflow.out.vcfs.collect { [it[0], "${file(it[1]).name},variantsMD5:${path(it[1]).vcf.variantsMD5}", file(it[2]).name] }, + workflow.out.gvcfs.collect { [it[0], "variantsMD5:${path(it[1]).vcf.variantsMD5}", it[2][-12..-1]] }, workflow.out.reports ).match() } ) @@ -118,7 +118,7 @@ nextflow_workflow { assertAll( { assert workflow.success }, { assert snapshot( - workflow.out.vcfs.collect { [it[0], "${file(it[1]).name},variantsMD5:${path(it[1]).vcf.variantsMD5}", file(it[2]).name] }, + workflow.out.gvcfs.collect { [it[0], "variantsMD5:${path(it[1]).vcf.variantsMD5}", it[2][-12..-1]] }, workflow.out.reports ).match() } ) diff --git a/tests/subworkflows/local/cram_call_gatk4/main.nf.test.snap b/tests/subworkflows/local/cram_call_gatk4/main.nf.test.snap index 6ade3291..51d0bde2 100644 --- a/tests/subworkflows/local/cram_call_gatk4/main.nf.test.snap +++ b/tests/subworkflows/local/cram_call_gatk4/main.nf.test.snap @@ -2,7 +2,17 @@ "cram_call_gatk4 - default": { "content": [ [ - + [ + { + "id": "NA24143", + "sample": "NA24143", + "family": "Ashkenazim", + "family_samples": "NA24143", + "caller": "haplotypecaller" + }, + "variantsMD5:57a0b3ce429f38292730f965277d28d5", + "g.vcf.gz.tbi" + ] ], [ [ @@ -21,12 +31,22 @@ "nf-test": "0.9.1", "nextflow": "24.10.0" }, - "timestamp": "2024-11-06T15:52:12.577735225" + "timestamp": "2024-11-06T16:31:34.986729048" }, "cram_call_gatk4 - dragstr": { "content": [ [ - + [ + { + "id": "NA24143", + "sample": "NA24143", + "family": "Ashkenazim", + "family_samples": "NA24143", + "caller": "haplotypecaller" + }, + "variantsMD5:69601e4deb53c65d30fff9d260e31bb9", + "g.vcf.gz.tbi" + ] ], [ [ @@ -45,6 +65,6 @@ "nf-test": "0.9.1", "nextflow": "24.10.0" }, - "timestamp": "2024-11-06T15:53:15.117652446" + "timestamp": "2024-11-06T16:32:34.211560941" } } \ No newline at end of file diff --git a/tests/subworkflows/local/gvcf_joint_genotype_gatk4/main.nf.test b/tests/subworkflows/local/gvcf_joint_genotype_gatk4/main.nf.test index 36de5cf1..4657547b 100644 --- a/tests/subworkflows/local/gvcf_joint_genotype_gatk4/main.nf.test +++ b/tests/subworkflows/local/gvcf_joint_genotype_gatk4/main.nf.test @@ -44,7 +44,7 @@ nextflow_workflow { assertAll( { assert workflow.success }, { assert snapshot( - workflow.out.vcfs.collect { [it[0], "${file(it[1]).name},variantsMD5:${path(it[1]).vcf.variantsMD5}", file(it[2]).name] } + workflow.out.vcfs.collect { [it[0], "variantsMD5:${path(it[1]).vcf.variantsMD5}", it[2][-10..-1]] } ).match() } ) } @@ -90,7 +90,7 @@ nextflow_workflow { assertAll( { assert workflow.success }, { assert snapshot( - workflow.out.vcfs.collect { [it[0], "${file(it[1]).name},variantsMD5:${path(it[1]).vcf.variantsMD5}", file(it[2]).name] } + workflow.out.vcfs.collect { [it[0], "variantsMD5:${path(it[1]).vcf.variantsMD5}", it[2][-10..-1]] } ).match() } ) } @@ -181,7 +181,7 @@ nextflow_workflow { assertAll( { assert workflow.success }, { assert snapshot( - workflow.out.vcfs.collect { [it[0], "${file(it[1]).name},variantsMD5:${path(it[1]).vcf.variantsMD5}", file(it[2]).name] } + workflow.out.vcfs.collect { [it[0], "variantsMD5:${path(it[1]).vcf.variantsMD5}", it[2][-10..-1]] } ).match() } ) } diff --git a/tests/subworkflows/local/gvcf_joint_genotype_gatk4/main.nf.test.snap b/tests/subworkflows/local/gvcf_joint_genotype_gatk4/main.nf.test.snap index b02a7a06..c35e117a 100644 --- a/tests/subworkflows/local/gvcf_joint_genotype_gatk4/main.nf.test.snap +++ b/tests/subworkflows/local/gvcf_joint_genotype_gatk4/main.nf.test.snap @@ -9,8 +9,8 @@ "caller": "haplotypecaller", "id": "Ashkenazim" }, - "Ashkenazim.haplotypecaller.vcf.gz,variantsMD5:4dea305eb71decb122709e75af9c833f", - "Ashkenazim.haplotypecaller.vcf.gz.tbi" + "variantsMD5:4dea305eb71decb122709e75af9c833f", + "vcf.gz.tbi" ], [ { @@ -19,8 +19,8 @@ "caller": "haplotypecaller", "id": "NA24385" }, - "NA24385.haplotypecaller.vcf.gz,variantsMD5:4ffd515511f59e3561e3fb1b046d7675", - "NA24385.haplotypecaller.vcf.gz.tbi" + "variantsMD5:4ffd515511f59e3561e3fb1b046d7675", + "vcf.gz.tbi" ] ] ], @@ -28,7 +28,7 @@ "nf-test": "0.9.1", "nextflow": "24.10.0" }, - "timestamp": "2024-11-05T13:05:41.216399607" + "timestamp": "2024-11-06T16:40:54.696361238" }, "gvcf_joint_genotype_gatk4 - single_sample": { "content": [ @@ -40,8 +40,8 @@ "caller": "haplotypecaller", "id": "Ashkenazim" }, - "Ashkenazim.haplotypecaller.vcf.gz,variantsMD5:4c6db9171912bcbbaefeec2a24968a", - "Ashkenazim.haplotypecaller.vcf.gz.tbi" + "variantsMD5:4c6db9171912bcbbaefeec2a24968a", + "vcf.gz.tbi" ] ] ], @@ -49,7 +49,7 @@ "nf-test": "0.9.1", "nextflow": "24.10.0" }, - "timestamp": "2024-11-05T13:03:11.507733028" + "timestamp": "2024-11-06T16:38:28.514998644" }, "gvcf_joint_genotype_gatk4 - only_merge": { "content": [ @@ -73,8 +73,8 @@ "caller": "haplotypecaller", "id": "Ashkenazim" }, - "Ashkenazim.haplotypecaller.vcf.gz,variantsMD5:4dea305eb71decb122709e75af9c833f", - "Ashkenazim.haplotypecaller.vcf.gz.tbi" + "variantsMD5:4dea305eb71decb122709e75af9c833f", + "vcf.gz.tbi" ] ] ], @@ -82,6 +82,6 @@ "nf-test": "0.9.1", "nextflow": "24.10.0" }, - "timestamp": "2024-11-05T13:03:57.301900285" + "timestamp": "2024-11-06T16:39:15.421025343" } } \ No newline at end of file From e0dfcc8445f9723a3fee59906ae8bcc5235fdb45 Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Thu, 7 Nov 2024 16:00:07 +0100 Subject: [PATCH 082/167] readd some missing pipeline outputs --- main.nf | 13 +- .../local/gvcf_joint_genotype_gatk4/main.nf | 7 +- tests/pipeline/callers/main.nf.test.snap | 79 +++------ tests/pipeline/default/main.nf.test.snap | 23 +-- tests/pipeline/gvcfs/main.nf.test.snap | 14 +- tests/pipeline/variations/main.nf.test.snap | 155 +++++------------- tests/pipeline/variations2/main.nf.test.snap | 115 ++++--------- workflows/germline.nf | 19 ++- 8 files changed, 143 insertions(+), 282 deletions(-) diff --git a/main.nf b/main.nf index 6a756034..3c22bec8 100644 --- a/main.nf +++ b/main.nf @@ -211,8 +211,13 @@ workflow { GERMLINE.out.multiqc_report ) + // Filtering out input GVCFs from the output publishing fixes an issue in the current implementation of + // the workflow output definitions: https://github.com/nextflow-io/nextflow/issues/5480 + ch_gvcfs_out = GERMLINE.out.gvcfs.filter { _meta, gvcf, _tbi -> gvcf.startsWith(workflow.workDir) } + publish: - GERMLINE.out.gvcfs >> 'gvcfs' + ch_gvcfs_out >> 'gvcfs' + GERMLINE.out.genomicsdb >> 'genomicsdb' GERMLINE.out.single_beds >> 'single_beds' GERMLINE.out.validation >> 'validation' GERMLINE.out.gvcf_reports >> 'gvcf_reports' @@ -238,6 +243,12 @@ output { return "${meta.id}/${meta.id}.${meta.caller}.g.vcf.gz.tbi" } } } + 'genomicsdb' { + enabled (params.output_genomicsdb || params.only_merge) + path { meta, genomicsdb -> + { file -> "${final_prefix}/${meta.family}/${meta.id}_${meta.caller}_genomicsdb"} + } + } 'single_beds' { path { meta, _bed -> { _file -> "${meta.id}/${meta.id}.bed" } } } diff --git a/subworkflows/local/gvcf_joint_genotype_gatk4/main.nf b/subworkflows/local/gvcf_joint_genotype_gatk4/main.nf index cc5ba0b3..c9b4b7e2 100644 --- a/subworkflows/local/gvcf_joint_genotype_gatk4/main.nf +++ b/subworkflows/local/gvcf_joint_genotype_gatk4/main.nf @@ -140,8 +140,9 @@ workflow GVCF_JOINT_GENOTYPE_GATK4 { } emit: - vcfs = ch_vcfs // [ val(meta), path(vcf), path(tbi) ] - beds = ch_beds // [ val(meta), path(bed) ] - versions = ch_versions // [ path(versions) ] + vcfs = ch_vcfs // [ val(meta), path(vcf), path(tbi) ] + genomicsdb = GATK4_GENOMICSDBIMPORT.out.genomicsdb // [ val(meta), path(genomicsdb) ] + beds = ch_beds // [ val(meta), path(bed) ] + versions = ch_versions // [ path(versions) ] } diff --git a/tests/pipeline/callers/main.nf.test.snap b/tests/pipeline/callers/main.nf.test.snap index f5629747..a4b2d068 100644 --- a/tests/pipeline/callers/main.nf.test.snap +++ b/tests/pipeline/callers/main.nf.test.snap @@ -2,153 +2,118 @@ "haplotypecaller": { "content": [ [ - + ], [ "NA24143/NA24143.bed", "NA24143/NA24143.haplotypecaller.g.vcf.gz", - "NA24143/NA24143.haplotypecaller.g.vcf.gz.csi", "NA24143/NA24143.haplotypecaller.g.vcf.gz.tbi", - "NA24143/reports/NA24143.global.dist.txt", "NA24143/reports/NA24143.haplotypecaller.bcftools_stats.txt", - "NA24143/reports/NA24143.summary.txt", "NA24149/NA24149.bed", "NA24149/NA24149.haplotypecaller.g.vcf.gz", - "NA24149/NA24149.haplotypecaller.g.vcf.gz.csi", "NA24149/NA24149.haplotypecaller.g.vcf.gz.tbi", - "NA24149/reports/NA24149.global.dist.txt", "NA24149/reports/NA24149.haplotypecaller.bcftools_stats.txt", - "NA24149/reports/NA24149.summary.txt", "NA24385/NA24385.bed", "NA24385/NA24385.haplotypecaller.g.vcf.gz", - "NA24385/NA24385.haplotypecaller.g.vcf.gz.csi", "NA24385/NA24385.haplotypecaller.g.vcf.gz.tbi", - "NA24385/reports/NA24385.global.dist.txt", "NA24385/reports/NA24385.haplotypecaller.bcftools_stats.txt", - "NA24385/reports/NA24385.summary.txt", - "multiqc/multiqc_plots", "multiqc/multiqc_report.html", "samplesheet.csv", - "test/Ashkenazim/Ashkenazim.bed", + "test/Ashkenazim/Ashkenazim.haplotypecaller.bed", "test/Ashkenazim/Ashkenazim.haplotypecaller.ped", "test/Ashkenazim/Ashkenazim.haplotypecaller.vcf.gz", - "test/Ashkenazim/Ashkenazim.haplotypecaller.vcf.gz.csi", "test/Ashkenazim/Ashkenazim.haplotypecaller.vcf.gz.tbi", "test/Ashkenazim/reports/Ashkenazim.haplotypecaller.bcftools_stats.txt", - "test/Ashkenazim/reports/Ashkenazim.haplotypecaller.somalier.html" + "test/Ashkenazim/reports/Ashkenazim.haplotypecaller.html" ] ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" + "nf-test": "0.9.1", + "nextflow": "24.10.0" }, - "timestamp": "2024-09-05T11:39:15.537730988" + "timestamp": "2024-11-07T15:43:23.245304993" }, "vardict + haplotypecaller": { "content": [ [ - + ], [ "NA24143/NA24143.bed", "NA24143/NA24143.haplotypecaller.g.vcf.gz", - "NA24143/NA24143.haplotypecaller.g.vcf.gz.csi", "NA24143/NA24143.haplotypecaller.g.vcf.gz.tbi", - "NA24143/reports/NA24143.global.dist.txt", "NA24143/reports/NA24143.haplotypecaller.bcftools_stats.txt", - "NA24143/reports/NA24143.summary.txt", "NA24149/NA24149.bed", "NA24149/NA24149.haplotypecaller.g.vcf.gz", - "NA24149/NA24149.haplotypecaller.g.vcf.gz.csi", "NA24149/NA24149.haplotypecaller.g.vcf.gz.tbi", - "NA24149/reports/NA24149.global.dist.txt", "NA24149/reports/NA24149.haplotypecaller.bcftools_stats.txt", - "NA24149/reports/NA24149.summary.txt", "NA24385/NA24385.bed", "NA24385/NA24385.haplotypecaller.g.vcf.gz", - "NA24385/NA24385.haplotypecaller.g.vcf.gz.csi", "NA24385/NA24385.haplotypecaller.g.vcf.gz.tbi", - "NA24385/reports/NA24385.global.dist.txt", "NA24385/reports/NA24385.haplotypecaller.bcftools_stats.txt", - "NA24385/reports/NA24385.summary.txt", - "multiqc/multiqc_plots", "multiqc/multiqc_report.html", "samplesheet.csv", - "test/Ashkenazim/Ashkenazim.bed", + "test/Ashkenazim/Ashkenazim.haplotypecaller.bed", "test/Ashkenazim/Ashkenazim.haplotypecaller.ped", "test/Ashkenazim/Ashkenazim.haplotypecaller.vcf.gz", - "test/Ashkenazim/Ashkenazim.haplotypecaller.vcf.gz.csi", "test/Ashkenazim/Ashkenazim.haplotypecaller.vcf.gz.tbi", "test/Ashkenazim/NA24143.vardict.ped", "test/Ashkenazim/NA24143.vardict.vcf.gz", - "test/Ashkenazim/NA24143.vardict.vcf.gz.csi", "test/Ashkenazim/NA24143.vardict.vcf.gz.tbi", "test/Ashkenazim/NA24149.vardict.ped", "test/Ashkenazim/NA24149.vardict.vcf.gz", - "test/Ashkenazim/NA24149.vardict.vcf.gz.csi", "test/Ashkenazim/NA24149.vardict.vcf.gz.tbi", "test/Ashkenazim/NA24385.vardict.ped", "test/Ashkenazim/NA24385.vardict.vcf.gz", - "test/Ashkenazim/NA24385.vardict.vcf.gz.csi", "test/Ashkenazim/NA24385.vardict.vcf.gz.tbi", "test/Ashkenazim/reports/Ashkenazim.haplotypecaller.bcftools_stats.txt", - "test/Ashkenazim/reports/Ashkenazim.haplotypecaller.somalier.html", + "test/Ashkenazim/reports/Ashkenazim.haplotypecaller.html", "test/Ashkenazim/reports/NA24143.vardict.bcftools_stats.txt", - "test/Ashkenazim/reports/NA24143.vardict.somalier.html", + "test/Ashkenazim/reports/NA24143.vardict.html", "test/Ashkenazim/reports/NA24149.vardict.bcftools_stats.txt", - "test/Ashkenazim/reports/NA24149.vardict.somalier.html", + "test/Ashkenazim/reports/NA24149.vardict.html", "test/Ashkenazim/reports/NA24385.vardict.bcftools_stats.txt", - "test/Ashkenazim/reports/NA24385.vardict.somalier.html" + "test/Ashkenazim/reports/NA24385.vardict.html" ] ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" + "nf-test": "0.9.1", + "nextflow": "24.10.0" }, - "timestamp": "2024-09-05T11:56:32.019963111" + "timestamp": "2024-11-07T15:44:48.221710874" }, "vardict": { "content": [ [ - + ], [ "NA24143/NA24143.bed", - "NA24143/reports/NA24143.global.dist.txt", - "NA24143/reports/NA24143.summary.txt", "NA24149/NA24149.bed", - "NA24149/reports/NA24149.global.dist.txt", - "NA24149/reports/NA24149.summary.txt", "NA24385/NA24385.bed", - "NA24385/reports/NA24385.global.dist.txt", - "NA24385/reports/NA24385.summary.txt", - "multiqc/multiqc_plots", "multiqc/multiqc_report.html", "samplesheet.csv", "test/Ashkenazim/NA24143.vardict.ped", "test/Ashkenazim/NA24143.vardict.vcf.gz", - "test/Ashkenazim/NA24143.vardict.vcf.gz.csi", "test/Ashkenazim/NA24143.vardict.vcf.gz.tbi", "test/Ashkenazim/NA24149.vardict.ped", "test/Ashkenazim/NA24149.vardict.vcf.gz", - "test/Ashkenazim/NA24149.vardict.vcf.gz.csi", "test/Ashkenazim/NA24149.vardict.vcf.gz.tbi", "test/Ashkenazim/NA24385.vardict.ped", "test/Ashkenazim/NA24385.vardict.vcf.gz", - "test/Ashkenazim/NA24385.vardict.vcf.gz.csi", "test/Ashkenazim/NA24385.vardict.vcf.gz.tbi", "test/Ashkenazim/reports/NA24143.vardict.bcftools_stats.txt", - "test/Ashkenazim/reports/NA24143.vardict.somalier.html", + "test/Ashkenazim/reports/NA24143.vardict.html", "test/Ashkenazim/reports/NA24149.vardict.bcftools_stats.txt", - "test/Ashkenazim/reports/NA24149.vardict.somalier.html", + "test/Ashkenazim/reports/NA24149.vardict.html", "test/Ashkenazim/reports/NA24385.vardict.bcftools_stats.txt", - "test/Ashkenazim/reports/NA24385.vardict.somalier.html" + "test/Ashkenazim/reports/NA24385.vardict.html" ] ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" + "nf-test": "0.9.1", + "nextflow": "24.10.0" }, - "timestamp": "2024-09-05T11:54:10.944847435" + "timestamp": "2024-11-07T15:42:12.627820502" } } \ No newline at end of file diff --git a/tests/pipeline/default/main.nf.test.snap b/tests/pipeline/default/main.nf.test.snap index ab43dc3b..39d941df 100644 --- a/tests/pipeline/default/main.nf.test.snap +++ b/tests/pipeline/default/main.nf.test.snap @@ -2,46 +2,35 @@ "default": { "content": [ [ - + ], [ "NA24143/NA24143.bed", "NA24143/NA24143.haplotypecaller.g.vcf.gz", - "NA24143/NA24143.haplotypecaller.g.vcf.gz.csi", "NA24143/NA24143.haplotypecaller.g.vcf.gz.tbi", - "NA24143/reports/NA24143.global.dist.txt", "NA24143/reports/NA24143.haplotypecaller.bcftools_stats.txt", - "NA24143/reports/NA24143.summary.txt", "NA24149/NA24149.bed", "NA24149/NA24149.haplotypecaller.g.vcf.gz", - "NA24149/NA24149.haplotypecaller.g.vcf.gz.csi", "NA24149/NA24149.haplotypecaller.g.vcf.gz.tbi", - "NA24149/reports/NA24149.global.dist.txt", "NA24149/reports/NA24149.haplotypecaller.bcftools_stats.txt", - "NA24149/reports/NA24149.summary.txt", "NA24385/NA24385.bed", "NA24385/NA24385.haplotypecaller.g.vcf.gz", - "NA24385/NA24385.haplotypecaller.g.vcf.gz.csi", "NA24385/NA24385.haplotypecaller.g.vcf.gz.tbi", - "NA24385/reports/NA24385.global.dist.txt", "NA24385/reports/NA24385.haplotypecaller.bcftools_stats.txt", - "NA24385/reports/NA24385.summary.txt", - "multiqc/multiqc_plots", "multiqc/multiqc_report.html", "samplesheet.csv", - "test/Ashkenazim/Ashkenazim.bed", + "test/Ashkenazim/Ashkenazim.haplotypecaller.bed", "test/Ashkenazim/Ashkenazim.haplotypecaller.ped", "test/Ashkenazim/Ashkenazim.haplotypecaller.vcf.gz", - "test/Ashkenazim/Ashkenazim.haplotypecaller.vcf.gz.csi", "test/Ashkenazim/Ashkenazim.haplotypecaller.vcf.gz.tbi", "test/Ashkenazim/reports/Ashkenazim.haplotypecaller.bcftools_stats.txt", - "test/Ashkenazim/reports/Ashkenazim.haplotypecaller.somalier.html" + "test/Ashkenazim/reports/Ashkenazim.haplotypecaller.html" ] ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" + "nf-test": "0.9.1", + "nextflow": "24.10.0" }, - "timestamp": "2024-09-05T11:40:36.127517277" + "timestamp": "2024-11-07T15:45:55.603941963" } } \ No newline at end of file diff --git a/tests/pipeline/gvcfs/main.nf.test.snap b/tests/pipeline/gvcfs/main.nf.test.snap index 3b3b89d8..f768f819 100644 --- a/tests/pipeline/gvcfs/main.nf.test.snap +++ b/tests/pipeline/gvcfs/main.nf.test.snap @@ -2,25 +2,23 @@ "gvcfs": { "content": [ [ - + ], [ - "multiqc/multiqc_plots", "multiqc/multiqc_report.html", "samplesheet.csv", - "test/Ashkenazim/Ashkenazim.bed", + "test/Ashkenazim/Ashkenazim.haplotypecaller.bed", "test/Ashkenazim/Ashkenazim.haplotypecaller.ped", "test/Ashkenazim/Ashkenazim.haplotypecaller.vcf.gz", - "test/Ashkenazim/Ashkenazim.haplotypecaller.vcf.gz.csi", "test/Ashkenazim/Ashkenazim.haplotypecaller.vcf.gz.tbi", "test/Ashkenazim/reports/Ashkenazim.haplotypecaller.bcftools_stats.txt", - "test/Ashkenazim/reports/Ashkenazim.haplotypecaller.somalier.html" + "test/Ashkenazim/reports/Ashkenazim.haplotypecaller.html" ] ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" + "nf-test": "0.9.1", + "nextflow": "24.10.0" }, - "timestamp": "2024-09-05T11:41:32.108980116" + "timestamp": "2024-11-07T15:46:42.423860055" } } \ No newline at end of file diff --git a/tests/pipeline/variations/main.nf.test.snap b/tests/pipeline/variations/main.nf.test.snap index 348a2942..0cc71b8d 100644 --- a/tests/pipeline/variations/main.nf.test.snap +++ b/tests/pipeline/variations/main.nf.test.snap @@ -2,271 +2,206 @@ "filter": { "content": [ [ - + ], [ "NA24143/NA24143.bed", "NA24143/NA24143.haplotypecaller.g.vcf.gz", - "NA24143/NA24143.haplotypecaller.g.vcf.gz.csi", "NA24143/NA24143.haplotypecaller.g.vcf.gz.tbi", - "NA24143/reports/NA24143.global.dist.txt", "NA24143/reports/NA24143.haplotypecaller.bcftools_stats.txt", - "NA24143/reports/NA24143.summary.txt", "NA24149/NA24149.bed", "NA24149/NA24149.haplotypecaller.g.vcf.gz", - "NA24149/NA24149.haplotypecaller.g.vcf.gz.csi", "NA24149/NA24149.haplotypecaller.g.vcf.gz.tbi", - "NA24149/reports/NA24149.global.dist.txt", "NA24149/reports/NA24149.haplotypecaller.bcftools_stats.txt", - "NA24149/reports/NA24149.summary.txt", "NA24385/NA24385.bed", "NA24385/NA24385.haplotypecaller.g.vcf.gz", - "NA24385/NA24385.haplotypecaller.g.vcf.gz.csi", "NA24385/NA24385.haplotypecaller.g.vcf.gz.tbi", - "NA24385/reports/NA24385.global.dist.txt", "NA24385/reports/NA24385.haplotypecaller.bcftools_stats.txt", - "NA24385/reports/NA24385.summary.txt", - "multiqc/multiqc_plots", "multiqc/multiqc_report.html", "samplesheet.csv", - "test/Ashkenazim/Ashkenazim.bed", + "test/Ashkenazim/Ashkenazim.haplotypecaller.bed", "test/Ashkenazim/Ashkenazim.haplotypecaller.ped", "test/Ashkenazim/Ashkenazim.haplotypecaller.vcf.gz", - "test/Ashkenazim/Ashkenazim.haplotypecaller.vcf.gz.csi", "test/Ashkenazim/Ashkenazim.haplotypecaller.vcf.gz.tbi", "test/Ashkenazim/reports/Ashkenazim.haplotypecaller.bcftools_stats.txt", - "test/Ashkenazim/reports/Ashkenazim.haplotypecaller.somalier.html" + "test/Ashkenazim/reports/Ashkenazim.haplotypecaller.html" ] ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" + "nf-test": "0.9.1", + "nextflow": "24.10.0" }, - "timestamp": "2024-09-05T11:45:02.491962487" + "timestamp": "2024-11-07T15:49:57.656894161" }, "only_call": { "content": [ [ - + ], [ "NA24143/NA24143.bed", "NA24143/NA24143.haplotypecaller.g.vcf.gz", - "NA24143/NA24143.haplotypecaller.g.vcf.gz.csi", "NA24143/NA24143.haplotypecaller.g.vcf.gz.tbi", - "NA24143/reports/NA24143.global.dist.txt", "NA24143/reports/NA24143.haplotypecaller.bcftools_stats.txt", - "NA24143/reports/NA24143.summary.txt", "NA24149/NA24149.bed", "NA24149/NA24149.haplotypecaller.g.vcf.gz", - "NA24149/NA24149.haplotypecaller.g.vcf.gz.csi", "NA24149/NA24149.haplotypecaller.g.vcf.gz.tbi", - "NA24149/reports/NA24149.global.dist.txt", "NA24149/reports/NA24149.haplotypecaller.bcftools_stats.txt", - "NA24149/reports/NA24149.summary.txt", "NA24385/NA24385.bed", "NA24385/NA24385.haplotypecaller.g.vcf.gz", - "NA24385/NA24385.haplotypecaller.g.vcf.gz.csi", "NA24385/NA24385.haplotypecaller.g.vcf.gz.tbi", - "NA24385/reports/NA24385.global.dist.txt", "NA24385/reports/NA24385.haplotypecaller.bcftools_stats.txt", - "NA24385/reports/NA24385.summary.txt", - "multiqc/multiqc_plots", "multiqc/multiqc_report.html", "samplesheet.csv" ] ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" + "nf-test": "0.9.1", + "nextflow": "24.10.0" }, - "timestamp": "2024-09-05T11:45:47.266012698" + "timestamp": "2024-11-07T15:50:40.472097341" }, "annotate + vcfanno": { "content": [ [ - + ], [ "NA24143/NA24143.bed", "NA24143/NA24143.haplotypecaller.g.vcf.gz", - "NA24143/NA24143.haplotypecaller.g.vcf.gz.csi", "NA24143/NA24143.haplotypecaller.g.vcf.gz.tbi", - "NA24143/reports/NA24143.global.dist.txt", "NA24143/reports/NA24143.haplotypecaller.bcftools_stats.txt", - "NA24143/reports/NA24143.summary.txt", "NA24149/NA24149.bed", "NA24149/NA24149.haplotypecaller.g.vcf.gz", - "NA24149/NA24149.haplotypecaller.g.vcf.gz.csi", "NA24149/NA24149.haplotypecaller.g.vcf.gz.tbi", - "NA24149/reports/NA24149.global.dist.txt", "NA24149/reports/NA24149.haplotypecaller.bcftools_stats.txt", - "NA24149/reports/NA24149.summary.txt", "NA24385/NA24385.bed", "NA24385/NA24385.haplotypecaller.g.vcf.gz", - "NA24385/NA24385.haplotypecaller.g.vcf.gz.csi", "NA24385/NA24385.haplotypecaller.g.vcf.gz.tbi", - "NA24385/reports/NA24385.global.dist.txt", "NA24385/reports/NA24385.haplotypecaller.bcftools_stats.txt", - "NA24385/reports/NA24385.summary.txt", - "multiqc/multiqc_plots", "multiqc/multiqc_report.html", "samplesheet.csv", - "test/Ashkenazim/Ashkenazim.bed", + "test/Ashkenazim/Ashkenazim.haplotypecaller.bed", "test/Ashkenazim/Ashkenazim.haplotypecaller.ped", "test/Ashkenazim/Ashkenazim.haplotypecaller.vcf.gz", - "test/Ashkenazim/Ashkenazim.haplotypecaller.vcf.gz.csi", - "test/Ashkenazim/Ashkenazim.haplotypecaller.vcf.gz.gzi", "test/Ashkenazim/Ashkenazim.haplotypecaller.vcf.gz.tbi", "test/Ashkenazim/reports/Ashkenazim.haplotypecaller.bcftools_stats.txt", - "test/Ashkenazim/reports/Ashkenazim.haplotypecaller.somalier.html" + "test/Ashkenazim/reports/Ashkenazim.haplotypecaller.html" ] ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" + "nf-test": "0.9.1", + "nextflow": "24.10.0" }, - "timestamp": "2024-09-05T11:43:47.539727235" + "timestamp": "2024-11-07T15:48:54.662702263" }, "automap": { "content": [ [ - + ], [ "NA24143/NA24143.bed", "NA24143/NA24143.haplotypecaller.g.vcf.gz", - "NA24143/NA24143.haplotypecaller.g.vcf.gz.csi", "NA24143/NA24143.haplotypecaller.g.vcf.gz.tbi", - "NA24143/reports/NA24143.global.dist.txt", "NA24143/reports/NA24143.haplotypecaller.bcftools_stats.txt", - "NA24143/reports/NA24143.summary.txt", "NA24149/NA24149.bed", "NA24149/NA24149.haplotypecaller.g.vcf.gz", - "NA24149/NA24149.haplotypecaller.g.vcf.gz.csi", "NA24149/NA24149.haplotypecaller.g.vcf.gz.tbi", - "NA24149/reports/NA24149.global.dist.txt", "NA24149/reports/NA24149.haplotypecaller.bcftools_stats.txt", - "NA24149/reports/NA24149.summary.txt", "NA24385/NA24385.bed", "NA24385/NA24385.haplotypecaller.g.vcf.gz", - "NA24385/NA24385.haplotypecaller.g.vcf.gz.csi", "NA24385/NA24385.haplotypecaller.g.vcf.gz.tbi", - "NA24385/reports/NA24385.global.dist.txt", "NA24385/reports/NA24385.haplotypecaller.bcftools_stats.txt", - "NA24385/reports/NA24385.summary.txt", - "multiqc/multiqc_plots", "multiqc/multiqc_report.html", "samplesheet.csv", - "test/Ashkenazim/Ashkenazim.bed", + "test/Ashkenazim/Ashkenazim.haplotypecaller.bed", "test/Ashkenazim/Ashkenazim.haplotypecaller.ped", "test/Ashkenazim/Ashkenazim.haplotypecaller.vcf.gz", - "test/Ashkenazim/Ashkenazim.haplotypecaller.vcf.gz.csi", "test/Ashkenazim/Ashkenazim.haplotypecaller.vcf.gz.tbi", - "test/Ashkenazim/automap_haplotypecaller/sample1/sample1.HomRegions.cmgg_bio.tsv", - "test/Ashkenazim/automap_haplotypecaller/sample1/sample1.HomRegions.pdf", - "test/Ashkenazim/automap_haplotypecaller/sample1/sample1.HomRegions.strict.cmgg_bio.tsv", - "test/Ashkenazim/automap_haplotypecaller/sample1/sample1.HomRegions.tsv", - "test/Ashkenazim/automap_haplotypecaller/sample2/sample2.HomRegions.cmgg_bio.tsv", - "test/Ashkenazim/automap_haplotypecaller/sample2/sample2.HomRegions.pdf", - "test/Ashkenazim/automap_haplotypecaller/sample2/sample2.HomRegions.strict.cmgg_bio.tsv", - "test/Ashkenazim/automap_haplotypecaller/sample2/sample2.HomRegions.tsv", - "test/Ashkenazim/automap_haplotypecaller/sample3/sample3.HomRegions.cmgg_bio.tsv", - "test/Ashkenazim/automap_haplotypecaller/sample3/sample3.HomRegions.pdf", - "test/Ashkenazim/automap_haplotypecaller/sample3/sample3.HomRegions.strict.cmgg_bio.tsv", - "test/Ashkenazim/automap_haplotypecaller/sample3/sample3.HomRegions.tsv", + "test/Ashkenazim/automap/haplotypecaller/sample1/sample1.HomRegions.cmgg_bio.tsv", + "test/Ashkenazim/automap/haplotypecaller/sample1/sample1.HomRegions.pdf", + "test/Ashkenazim/automap/haplotypecaller/sample1/sample1.HomRegions.strict.cmgg_bio.tsv", + "test/Ashkenazim/automap/haplotypecaller/sample1/sample1.HomRegions.tsv", + "test/Ashkenazim/automap/haplotypecaller/sample2/sample2.HomRegions.cmgg_bio.tsv", + "test/Ashkenazim/automap/haplotypecaller/sample2/sample2.HomRegions.pdf", + "test/Ashkenazim/automap/haplotypecaller/sample2/sample2.HomRegions.strict.cmgg_bio.tsv", + "test/Ashkenazim/automap/haplotypecaller/sample2/sample2.HomRegions.tsv", + "test/Ashkenazim/automap/haplotypecaller/sample3/sample3.HomRegions.cmgg_bio.tsv", + "test/Ashkenazim/automap/haplotypecaller/sample3/sample3.HomRegions.pdf", + "test/Ashkenazim/automap/haplotypecaller/sample3/sample3.HomRegions.strict.cmgg_bio.tsv", + "test/Ashkenazim/automap/haplotypecaller/sample3/sample3.HomRegions.tsv", "test/Ashkenazim/reports/Ashkenazim.haplotypecaller.bcftools_stats.txt", - "test/Ashkenazim/reports/Ashkenazim.haplotypecaller.somalier.html" + "test/Ashkenazim/reports/Ashkenazim.haplotypecaller.html" ] ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" + "nf-test": "0.9.1", + "nextflow": "24.10.0" }, - "timestamp": "2024-09-05T11:47:48.972236882" + "timestamp": "2024-11-07T15:52:36.347896098" }, "only_merge": { "content": [ [ - + ], [ "NA24143/NA24143.bed", "NA24143/NA24143.haplotypecaller.g.vcf.gz", - "NA24143/NA24143.haplotypecaller.g.vcf.gz.csi", "NA24143/NA24143.haplotypecaller.g.vcf.gz.tbi", - "NA24143/reports/NA24143.global.dist.txt", "NA24143/reports/NA24143.haplotypecaller.bcftools_stats.txt", - "NA24143/reports/NA24143.summary.txt", "NA24149/NA24149.bed", "NA24149/NA24149.haplotypecaller.g.vcf.gz", - "NA24149/NA24149.haplotypecaller.g.vcf.gz.csi", "NA24149/NA24149.haplotypecaller.g.vcf.gz.tbi", - "NA24149/reports/NA24149.global.dist.txt", "NA24149/reports/NA24149.haplotypecaller.bcftools_stats.txt", - "NA24149/reports/NA24149.summary.txt", "NA24385/NA24385.bed", "NA24385/NA24385.haplotypecaller.g.vcf.gz", - "NA24385/NA24385.haplotypecaller.g.vcf.gz.csi", "NA24385/NA24385.haplotypecaller.g.vcf.gz.tbi", - "NA24385/reports/NA24385.global.dist.txt", "NA24385/reports/NA24385.haplotypecaller.bcftools_stats.txt", - "NA24385/reports/NA24385.summary.txt", - "multiqc/multiqc_plots", "multiqc/multiqc_report.html", "samplesheet.csv", - "test/Ashkenazim/genomicsdb_Ashkenazim" + "test/Ashkenazim/Ashkenazim_haplotypecaller_genomicsdb" ] ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" + "nf-test": "0.9.1", + "nextflow": "24.10.0" }, - "timestamp": "2024-09-05T11:46:37.403799074" + "timestamp": "2024-11-07T15:51:28.398537842" }, "annotate": { "content": [ [ - + ], [ "NA24143/NA24143.bed", "NA24143/NA24143.haplotypecaller.g.vcf.gz", - "NA24143/NA24143.haplotypecaller.g.vcf.gz.csi", "NA24143/NA24143.haplotypecaller.g.vcf.gz.tbi", - "NA24143/reports/NA24143.global.dist.txt", "NA24143/reports/NA24143.haplotypecaller.bcftools_stats.txt", - "NA24143/reports/NA24143.summary.txt", "NA24149/NA24149.bed", "NA24149/NA24149.haplotypecaller.g.vcf.gz", - "NA24149/NA24149.haplotypecaller.g.vcf.gz.csi", "NA24149/NA24149.haplotypecaller.g.vcf.gz.tbi", - "NA24149/reports/NA24149.global.dist.txt", "NA24149/reports/NA24149.haplotypecaller.bcftools_stats.txt", - "NA24149/reports/NA24149.summary.txt", "NA24385/NA24385.bed", "NA24385/NA24385.haplotypecaller.g.vcf.gz", - "NA24385/NA24385.haplotypecaller.g.vcf.gz.csi", "NA24385/NA24385.haplotypecaller.g.vcf.gz.tbi", - "NA24385/reports/NA24385.global.dist.txt", "NA24385/reports/NA24385.haplotypecaller.bcftools_stats.txt", - "NA24385/reports/NA24385.summary.txt", - "multiqc/multiqc_plots", "multiqc/multiqc_report.html", "samplesheet.csv", - "test/Ashkenazim/Ashkenazim.bed", + "test/Ashkenazim/Ashkenazim.haplotypecaller.bed", "test/Ashkenazim/Ashkenazim.haplotypecaller.ped", "test/Ashkenazim/Ashkenazim.haplotypecaller.vcf.gz", - "test/Ashkenazim/Ashkenazim.haplotypecaller.vcf.gz.csi", "test/Ashkenazim/Ashkenazim.haplotypecaller.vcf.gz.tbi", "test/Ashkenazim/reports/Ashkenazim.haplotypecaller.bcftools_stats.txt", - "test/Ashkenazim/reports/Ashkenazim.haplotypecaller.somalier.html" + "test/Ashkenazim/reports/Ashkenazim.haplotypecaller.html" ] ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" + "nf-test": "0.9.1", + "nextflow": "24.10.0" }, - "timestamp": "2024-09-05T11:42:39.793880467" + "timestamp": "2024-11-07T15:47:49.203214292" } } \ No newline at end of file diff --git a/tests/pipeline/variations2/main.nf.test.snap b/tests/pipeline/variations2/main.nf.test.snap index 053dd3eb..8983c0cd 100644 --- a/tests/pipeline/variations2/main.nf.test.snap +++ b/tests/pipeline/variations2/main.nf.test.snap @@ -2,197 +2,150 @@ "gemini": { "content": [ [ - + ], [ "NA24143/NA24143.bed", "NA24143/NA24143.haplotypecaller.g.vcf.gz", - "NA24143/NA24143.haplotypecaller.g.vcf.gz.csi", "NA24143/NA24143.haplotypecaller.g.vcf.gz.tbi", - "NA24143/reports/NA24143.global.dist.txt", "NA24143/reports/NA24143.haplotypecaller.bcftools_stats.txt", - "NA24143/reports/NA24143.summary.txt", "NA24149/NA24149.bed", "NA24149/NA24149.haplotypecaller.g.vcf.gz", - "NA24149/NA24149.haplotypecaller.g.vcf.gz.csi", "NA24149/NA24149.haplotypecaller.g.vcf.gz.tbi", - "NA24149/reports/NA24149.global.dist.txt", "NA24149/reports/NA24149.haplotypecaller.bcftools_stats.txt", - "NA24149/reports/NA24149.summary.txt", "NA24385/NA24385.bed", "NA24385/NA24385.haplotypecaller.g.vcf.gz", - "NA24385/NA24385.haplotypecaller.g.vcf.gz.csi", "NA24385/NA24385.haplotypecaller.g.vcf.gz.tbi", - "NA24385/reports/NA24385.global.dist.txt", "NA24385/reports/NA24385.haplotypecaller.bcftools_stats.txt", - "NA24385/reports/NA24385.summary.txt", - "multiqc/multiqc_plots", "multiqc/multiqc_report.html", "samplesheet.csv", - "test/Ashkenazim/Ashkenazim.bed", + "test/Ashkenazim/Ashkenazim.haplotypecaller.bed", "test/Ashkenazim/Ashkenazim.haplotypecaller.db", "test/Ashkenazim/Ashkenazim.haplotypecaller.ped", "test/Ashkenazim/Ashkenazim.haplotypecaller.vcf.gz", - "test/Ashkenazim/Ashkenazim.haplotypecaller.vcf.gz.csi", "test/Ashkenazim/Ashkenazim.haplotypecaller.vcf.gz.tbi", "test/Ashkenazim/reports/Ashkenazim.haplotypecaller.bcftools_stats.txt", - "test/Ashkenazim/reports/Ashkenazim.haplotypecaller.somalier.html" + "test/Ashkenazim/reports/Ashkenazim.haplotypecaller.html" ] ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" + "nf-test": "0.9.1", + "nextflow": "24.10.0" }, - "timestamp": "2024-09-05T11:59:55.764681555" + "timestamp": "2024-11-07T15:55:45.617425912" }, "normalize": { "content": [ [ - + ], [ "NA24143/NA24143.bed", "NA24143/NA24143.haplotypecaller.g.vcf.gz", - "NA24143/NA24143.haplotypecaller.g.vcf.gz.csi", "NA24143/NA24143.haplotypecaller.g.vcf.gz.tbi", - "NA24143/reports/NA24143.global.dist.txt", "NA24143/reports/NA24143.haplotypecaller.bcftools_stats.txt", - "NA24143/reports/NA24143.summary.txt", "NA24149/NA24149.bed", "NA24149/NA24149.haplotypecaller.g.vcf.gz", - "NA24149/NA24149.haplotypecaller.g.vcf.gz.csi", "NA24149/NA24149.haplotypecaller.g.vcf.gz.tbi", - "NA24149/reports/NA24149.global.dist.txt", "NA24149/reports/NA24149.haplotypecaller.bcftools_stats.txt", - "NA24149/reports/NA24149.summary.txt", "NA24385/NA24385.bed", "NA24385/NA24385.haplotypecaller.g.vcf.gz", - "NA24385/NA24385.haplotypecaller.g.vcf.gz.csi", "NA24385/NA24385.haplotypecaller.g.vcf.gz.tbi", - "NA24385/reports/NA24385.global.dist.txt", "NA24385/reports/NA24385.haplotypecaller.bcftools_stats.txt", - "NA24385/reports/NA24385.summary.txt", - "multiqc/multiqc_plots", "multiqc/multiqc_report.html", "samplesheet.csv", - "test/Ashkenazim/Ashkenazim.bed", + "test/Ashkenazim/Ashkenazim.haplotypecaller.bed", "test/Ashkenazim/Ashkenazim.haplotypecaller.ped", "test/Ashkenazim/Ashkenazim.haplotypecaller.vcf.gz", - "test/Ashkenazim/Ashkenazim.haplotypecaller.vcf.gz.csi", "test/Ashkenazim/Ashkenazim.haplotypecaller.vcf.gz.tbi", "test/Ashkenazim/reports/Ashkenazim.haplotypecaller.bcftools_stats.txt", - "test/Ashkenazim/reports/Ashkenazim.haplotypecaller.somalier.html" + "test/Ashkenazim/reports/Ashkenazim.haplotypecaller.html" ] ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" + "nf-test": "0.9.1", + "nextflow": "24.10.0" }, - "timestamp": "2024-09-05T11:57:36.725019238" + "timestamp": "2024-11-07T15:53:40.939481984" }, "updio": { "content": [ [ - + ], [ "NA24143/NA24143.bed", "NA24143/NA24143.haplotypecaller.g.vcf.gz", - "NA24143/NA24143.haplotypecaller.g.vcf.gz.csi", "NA24143/NA24143.haplotypecaller.g.vcf.gz.tbi", - "NA24143/reports/NA24143.global.dist.txt", "NA24143/reports/NA24143.haplotypecaller.bcftools_stats.txt", - "NA24143/reports/NA24143.summary.txt", "NA24149/NA24149.bed", "NA24149/NA24149.haplotypecaller.g.vcf.gz", - "NA24149/NA24149.haplotypecaller.g.vcf.gz.csi", "NA24149/NA24149.haplotypecaller.g.vcf.gz.tbi", - "NA24149/reports/NA24149.global.dist.txt", "NA24149/reports/NA24149.haplotypecaller.bcftools_stats.txt", - "NA24149/reports/NA24149.summary.txt", "NA24385/NA24385.bed", "NA24385/NA24385.haplotypecaller.g.vcf.gz", - "NA24385/NA24385.haplotypecaller.g.vcf.gz.csi", "NA24385/NA24385.haplotypecaller.g.vcf.gz.tbi", - "NA24385/reports/NA24385.global.dist.txt", "NA24385/reports/NA24385.haplotypecaller.bcftools_stats.txt", - "NA24385/reports/NA24385.summary.txt", - "multiqc/multiqc_plots", "multiqc/multiqc_report.html", "samplesheet.csv", - "test/Ashkenazim/Ashkenazim.bed", + "test/Ashkenazim/Ashkenazim.haplotypecaller.bed", "test/Ashkenazim/Ashkenazim.haplotypecaller.ped", "test/Ashkenazim/Ashkenazim.haplotypecaller.vcf.gz", - "test/Ashkenazim/Ashkenazim.haplotypecaller.vcf.gz.csi", "test/Ashkenazim/Ashkenazim.haplotypecaller.vcf.gz.tbi", "test/Ashkenazim/reports/Ashkenazim.haplotypecaller.bcftools_stats.txt", - "test/Ashkenazim/reports/Ashkenazim.haplotypecaller.somalier.html" + "test/Ashkenazim/reports/Ashkenazim.haplotypecaller.html" ] ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" + "nf-test": "0.9.1", + "nextflow": "24.10.0" }, - "timestamp": "2024-09-05T11:58:51.377552309" + "timestamp": "2024-11-07T15:54:44.363989965" }, "add_ped": { "content": [ [ - + ], [ "NA24143/NA24143.bed", "NA24143/NA24143.haplotypecaller.g.vcf.gz", - "NA24143/NA24143.haplotypecaller.g.vcf.gz.csi", "NA24143/NA24143.haplotypecaller.g.vcf.gz.tbi", - "NA24143/reports/NA24143.global.dist.txt", "NA24143/reports/NA24143.haplotypecaller.bcftools_stats.txt", - "NA24143/reports/NA24143.summary.txt", "NA24149/NA24149.bed", "NA24149/NA24149.haplotypecaller.g.vcf.gz", - "NA24149/NA24149.haplotypecaller.g.vcf.gz.csi", "NA24149/NA24149.haplotypecaller.g.vcf.gz.tbi", - "NA24149/reports/NA24149.global.dist.txt", "NA24149/reports/NA24149.haplotypecaller.bcftools_stats.txt", - "NA24149/reports/NA24149.summary.txt", "NA24385/NA24385.bed", "NA24385/NA24385.haplotypecaller.g.vcf.gz", - "NA24385/NA24385.haplotypecaller.g.vcf.gz.csi", "NA24385/NA24385.haplotypecaller.g.vcf.gz.tbi", - "NA24385/reports/NA24385.global.dist.txt", "NA24385/reports/NA24385.haplotypecaller.bcftools_stats.txt", - "NA24385/reports/NA24385.summary.txt", - "multiqc/multiqc_plots", "multiqc/multiqc_report.html", "samplesheet.csv", - "test/Ashkenazim/Ashkenazim.bed", + "test/Ashkenazim/Ashkenazim.haplotypecaller.bed", "test/Ashkenazim/Ashkenazim.haplotypecaller.ped", "test/Ashkenazim/Ashkenazim.haplotypecaller.vcf.gz", - "test/Ashkenazim/Ashkenazim.haplotypecaller.vcf.gz.csi", "test/Ashkenazim/Ashkenazim.haplotypecaller.vcf.gz.tbi", "test/Ashkenazim/reports/Ashkenazim.haplotypecaller.bcftools_stats.txt", - "test/Ashkenazim/reports/Ashkenazim.haplotypecaller.somalier.html" + "test/Ashkenazim/reports/Ashkenazim.haplotypecaller.html" ] ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" + "nf-test": "0.9.1", + "nextflow": "24.10.0" }, - "timestamp": "2024-09-05T12:02:31.850254513" + "timestamp": "2024-11-07T15:58:01.026718708" }, "validate": { "content": [ [ - + ], [ "NA24143/NA24143.bed", "NA24143/NA24143.haplotypecaller.g.vcf.gz", - "NA24143/NA24143.haplotypecaller.g.vcf.gz.csi", "NA24143/NA24143.haplotypecaller.g.vcf.gz.tbi", - "NA24143/reports/NA24143.global.dist.txt", "NA24143/reports/NA24143.haplotypecaller.bcftools_stats.txt", - "NA24143/reports/NA24143.summary.txt", "NA24143/validation/haplotypecaller/NA24143.fn.vcf.gz", "NA24143/validation/haplotypecaller/NA24143.fn.vcf.gz.tbi", "NA24143/validation/haplotypecaller/NA24143.fp.vcf.gz", @@ -214,11 +167,8 @@ "NA24143/validation/haplotypecaller/NA24143.weighted_roc.tsv.gz", "NA24149/NA24149.bed", "NA24149/NA24149.haplotypecaller.g.vcf.gz", - "NA24149/NA24149.haplotypecaller.g.vcf.gz.csi", "NA24149/NA24149.haplotypecaller.g.vcf.gz.tbi", - "NA24149/reports/NA24149.global.dist.txt", "NA24149/reports/NA24149.haplotypecaller.bcftools_stats.txt", - "NA24149/reports/NA24149.summary.txt", "NA24149/validation/haplotypecaller/NA24149.fn.vcf.gz", "NA24149/validation/haplotypecaller/NA24149.fn.vcf.gz.tbi", "NA24149/validation/haplotypecaller/NA24149.fp.vcf.gz", @@ -240,11 +190,8 @@ "NA24149/validation/haplotypecaller/NA24149.weighted_roc.tsv.gz", "NA24385/NA24385.bed", "NA24385/NA24385.haplotypecaller.g.vcf.gz", - "NA24385/NA24385.haplotypecaller.g.vcf.gz.csi", "NA24385/NA24385.haplotypecaller.g.vcf.gz.tbi", - "NA24385/reports/NA24385.global.dist.txt", "NA24385/reports/NA24385.haplotypecaller.bcftools_stats.txt", - "NA24385/reports/NA24385.summary.txt", "NA24385/validation/haplotypecaller/NA24385.fn.vcf.gz", "NA24385/validation/haplotypecaller/NA24385.fn.vcf.gz.tbi", "NA24385/validation/haplotypecaller/NA24385.fp.vcf.gz", @@ -264,22 +211,20 @@ "NA24385/validation/haplotypecaller/NA24385.weighted.png", "NA24385/validation/haplotypecaller/NA24385.weighted.svg", "NA24385/validation/haplotypecaller/NA24385.weighted_roc.tsv.gz", - "multiqc/multiqc_plots", "multiqc/multiqc_report.html", "samplesheet.csv", - "test/Ashkenazim/Ashkenazim.bed", + "test/Ashkenazim/Ashkenazim.haplotypecaller.bed", "test/Ashkenazim/Ashkenazim.haplotypecaller.ped", "test/Ashkenazim/Ashkenazim.haplotypecaller.vcf.gz", - "test/Ashkenazim/Ashkenazim.haplotypecaller.vcf.gz.csi", "test/Ashkenazim/Ashkenazim.haplotypecaller.vcf.gz.tbi", "test/Ashkenazim/reports/Ashkenazim.haplotypecaller.bcftools_stats.txt", - "test/Ashkenazim/reports/Ashkenazim.haplotypecaller.somalier.html" + "test/Ashkenazim/reports/Ashkenazim.haplotypecaller.html" ] ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" + "nf-test": "0.9.1", + "nextflow": "24.10.0" }, - "timestamp": "2024-09-05T12:01:21.850991249" + "timestamp": "2024-11-07T15:56:56.038825116" } } \ No newline at end of file diff --git a/workflows/germline.nf b/workflows/germline.nf index 63497ec3..060d75d7 100644 --- a/workflows/germline.nf +++ b/workflows/germline.nf @@ -336,8 +336,18 @@ workflow GERMLINE { // Split the input channel into the right channels // + def usedGvcfCallers = callers.intersect(GlobalVariables.gvcfCallers) + def ch_input = ch_samplesheet .multiMap { meta, cram, crai, gvcf, tbi, roi_file, truth_vcf, truth_tbi, truth_bed -> + // Error checks that were not possible using nf-schema + if (gvcf && usedGvcfCallers.size() >= 2) { + error("GVCF input is not supported for runs that use more than one caller that produces a GVCF output") + } + if (gvcf && validate) { + error("Validation is not supported for GVCF inputs, use CRAM files instead when using `--validate`.") + } + // Divide the input files into their corresponding channel def new_meta = meta + [ type: gvcf && cram ? "gvcf_cram" : gvcf ? "gvcf" : "cram" // Define the type of input data @@ -345,6 +355,11 @@ workflow GERMLINE { def new_meta_validation = meta.subMap(["id", "sample", "family", "duplicate_count"]) + def new_meta_gvcf = meta + if (usedGvcfCallers.size() == 1) { + new_meta_gvcf = meta + [caller:usedGvcfCallers[0]] + } + truth_variants: [new_meta_validation, truth_vcf, truth_tbi, truth_bed] // Optional channel containing the truth VCF, its index and the optional BED file gvcf: [new_meta, gvcf, tbi] // Optional channel containing the GVCFs and their optional indices cram: [new_meta, cram, crai] // Mandatory channel containing the CRAM files and their optional indices @@ -511,6 +526,7 @@ workflow GERMLINE { ch_versions = ch_versions.mix(GVCF_JOINT_GENOTYPE_GATK4.out.versions) ch_calls = ch_calls.mix(GVCF_JOINT_GENOTYPE_GATK4.out.vcfs) def ch_joint_beds = GVCF_JOINT_GENOTYPE_GATK4.out.beds + def ch_final_genomicsdb = GVCF_JOINT_GENOTYPE_GATK4.out.genomicsdb // Stop pipeline execution when only the merge should happen def ch_calls_final = ch_calls.filter { !only_merge } @@ -869,7 +885,8 @@ workflow GERMLINE { ) emit: - gvcfs = ch_gvcfs_final // channel: [ val(meta), path(gvcf), path(tbi) ] + gvcfs = ch_gvcfs_ready // channel: [ val(meta), path(gvcf), path(tbi) ] + genomicsdb = ch_final_genomicsdb // channel: [ val(meta), path(genomicsdb) ] vcfs = ch_final_vcfs // channel: [ val(meta), path(vcf), path(tbi) ] gemini = ch_final_dbs // channel: [ val(meta), path(db) ] peds = ch_final_peds // channel: [ val(meta), path(ped) ] From fec36e20e4339b58d90402d0d1a07577813743c4 Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Thu, 7 Nov 2024 17:40:40 +0100 Subject: [PATCH 083/167] new output structure --- conf/test.config | 1 - main.nf | 47 ++++++++++--------- nextflow.config | 26 +++++----- nextflow_schema.json | 9 ---- .../utils_cmgg_germline_pipeline/main.nf | 2 +- .../nf-core/utils_nextflow_pipeline/main.nf | 2 +- workflows/germline.nf | 2 +- 7 files changed, 39 insertions(+), 50 deletions(-) diff --git a/conf/test.config b/conf/test.config index c259bd53..cdb5273d 100644 --- a/conf/test.config +++ b/conf/test.config @@ -46,7 +46,6 @@ params { validate = true add_ped = true vep_chunk_size = 10000 - project = "test" normalize = true updio = true automap = true diff --git a/main.nf b/main.nf index 3c22bec8..1891d809 100644 --- a/main.nf +++ b/main.nf @@ -51,6 +51,7 @@ params.vcfanno_config = getGenomeAttribute('vcfanno_config', params.genome include { GERMLINE } from './workflows/germline' include { PIPELINE_INITIALISATION } from './subworkflows/local/utils_cmgg_germline_pipeline' include { PIPELINE_COMPLETION } from './subworkflows/local/utils_cmgg_germline_pipeline' +include { getWorkflowVersion } from './subworkflows/nf-core/utils_nfcore_pipeline' /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -217,10 +218,10 @@ workflow { publish: ch_gvcfs_out >> 'gvcfs' - GERMLINE.out.genomicsdb >> 'genomicsdb' GERMLINE.out.single_beds >> 'single_beds' GERMLINE.out.validation >> 'validation' GERMLINE.out.gvcf_reports >> 'gvcf_reports' + GERMLINE.out.genomicsdb >> 'genomicsdb' GERMLINE.out.vcfs >> 'vcfs' GERMLINE.out.gemini >> 'gemini' GERMLINE.out.peds >> 'peds' @@ -231,61 +232,61 @@ workflow { GERMLINE.out.multiqc_report >> 'multiqc' } -def project_name = params.project ?: workflow.runName -def final_prefix = params.skip_date_project ? "${project_name}" : "${new Date().format("yyyy-MM-dd")}_${project_name}" +def pipeline_version = getWorkflowVersion().replace(".", "_") +def date = new Date().format("yyyy_MM_dd") output { 'gvcfs' { path { meta, gvcf, _tbi -> { file -> if(file == gvcf.name) { - return "${meta.id}/${meta.id}.${meta.caller}.g.vcf.gz" + return "${meta.family}/${meta.id}_${pipeline_version}_${date}/${meta.id}.${meta.caller}.g.vcf.gz" } - return "${meta.id}/${meta.id}.${meta.caller}.g.vcf.gz.tbi" + return "${meta.family}/${meta.id}_${pipeline_version}_${date}/${meta.id}.${meta.caller}.g.vcf.gz.tbi" } } } - 'genomicsdb' { - enabled (params.output_genomicsdb || params.only_merge) - path { meta, genomicsdb -> - { file -> "${final_prefix}/${meta.family}/${meta.id}_${meta.caller}_genomicsdb"} - } - } 'single_beds' { - path { meta, _bed -> { _file -> "${meta.id}/${meta.id}.bed" } } + path { meta, _bed -> { _file -> "${meta.family}/${meta.id}_${pipeline_version}_${date}/${meta.id}.bed" } } } 'validation' { - path { meta, _report -> { file -> "${meta.id}/validation/${meta.caller}/${file}" } } + path { meta, _report -> { file -> "${meta.family}/${meta.id}_${pipeline_version}_${date}/validation/${meta.caller}/${file}" } } } 'gvcf_reports' { - path { meta, _report -> { _file -> "${meta.id}/reports/${meta.id}.${meta.caller}.bcftools_stats.txt" }} + path { meta, _report -> { _file -> "${meta.family}/${meta.id}_${pipeline_version}_${date}/${meta.id}.${meta.caller}.bcftools_stats.txt" }} + } + 'genomicsdb' { + enabled (params.output_genomicsdb || params.only_merge) + path { meta, genomicsdb -> + { file -> "${meta.family}/output_${pipeline_version}_${date}/${meta.id}_${meta.caller}_genomicsdb"} + } } 'vcfs' { path { meta, vcf, _tbi -> { file -> if(file == vcf.name) { - return "${final_prefix}/${meta.family}/${meta.id}.${meta.caller}.vcf.gz" + return "${meta.family}/output_${pipeline_version}_${date}/${meta.id}.${meta.caller}.vcf.gz" } - return "${final_prefix}/${meta.family}/${meta.id}.${meta.caller}.vcf.gz.tbi" + return "${meta.family}/output_${pipeline_version}_${date}/${meta.id}.${meta.caller}.vcf.gz.tbi" } } } 'gemini' { - path { meta, _db -> { _file -> "${final_prefix}/${meta.family}/${meta.id}.${meta.caller}.db"}} + path { meta, _db -> { _file -> "${meta.family}/output_${pipeline_version}_${date}/${meta.id}.${meta.caller}.db"}} } 'peds' { - path { meta, _ped -> { _file -> "${final_prefix}/${meta.family}/${meta.id}.${meta.caller}.ped"}} + path { meta, _ped -> { _file -> "${meta.family}/output_${pipeline_version}_${date}/${meta.id}.${meta.caller}.ped"}} } 'joint_beds' { - path { meta, _bed -> { _file -> "${final_prefix}/${meta.family}/${meta.id}.${meta.caller}.bed"}} + path { meta, _bed -> { _file -> "${meta.family}/output_${pipeline_version}_${date}/${meta.id}.${meta.caller}.bed"}} } 'final_reports' { - path { meta, _report -> { file -> "${final_prefix}/${meta.family}/reports/${file}"}} + path { meta, _report -> { file -> "${meta.family}/qc_${pipeline_version}_${date}/${file}"}} } 'automap' { - path { meta, _automap -> { file -> "${final_prefix}/${meta.family}/automap/${meta.caller}"}} + path { meta, _automap -> { file -> "${meta.family}/output_${pipeline_version}_${date}/automap/${meta.caller}"}} } 'updio' { - path { meta, _updio -> { file -> "${final_prefix}/${meta.family}/updio/${meta.caller}"}} + path { meta, _updio -> { file -> "${meta.family}/output_${pipeline_version}_${date}/updio/${meta.caller}"}} } 'multiqc' { - path { _report -> { _file -> "multiqc/multiqc_report.html"}} + path { _report -> { _file -> "${pipeline_version}_${date}/multiqc_report.html"}} } } diff --git a/nextflow.config b/nextflow.config index 4877e4d7..8671e61a 100644 --- a/nextflow.config +++ b/nextflow.config @@ -22,8 +22,6 @@ params { add_ped = false validate = false roi = null - project = null - skip_date_project = false only_call = false only_merge = false output_genomicsdb = false @@ -271,9 +269,20 @@ set -C # No clobber - prevent output redirection from overwriting files. // Disable process selector warnings by default. Use debug profile to enable warnings. nextflow.enable.configProcessNamesValidation = false +manifest { + name = 'nf-cmgg/germline' + author = """nvnieuwk""" + homePage = 'https://github.com/nf-cmgg/germline' + description = """A nextflow pipeline for calling and annotating small germline variants from short DNA reads for WES and WGS data""" + mainScript = 'main.nf' + nextflowVersion = '!>=24.10.0' + version = '1.9.0dev' + doi = '' +} + timeline { enabled = true - file = "${params.outdir}/pipeline_info/execution_timeline_${new java.util.Date().format( 'yyyy-MM-dd_HH-mm-ss')}.html" + file = "${params.outdir}/v${manifest.version.replace('.', '_')}_${new Date().format("yyyy_MM_dd")}/execution_timeline_${new java.util.Date().format( 'yyyy-MM-dd_HH-mm-ss')}.html" } report { enabled = true @@ -288,17 +297,6 @@ dag { file = timeline.file.replace("execution_timeline", "pipeline_dag") } -manifest { - name = 'nf-cmgg/germline' - author = """nvnieuwk""" - homePage = 'https://github.com/nf-cmgg/germline' - description = """A nextflow pipeline for calling and annotating small germline variants from short DNA reads for WES and WGS data""" - mainScript = 'main.nf' - nextflowVersion = '!>=24.10.0' - version = '1.9.0dev' - doi = '' -} - // Nextflow plugins plugins { id 'nf-schema@2.1.1' // Validation of pipeline parameters and creation of an input channel from a sample sheet diff --git a/nextflow_schema.json b/nextflow_schema.json index 79d18c26..4ce42943 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -210,15 +210,6 @@ "description": "Don't run mosdepth in fast-mode", "help_text": "This is advised if you need exact coverage BED files as output." }, - "project": { - "type": "string", - "description": "The name of the project.", - "help_text": "This will be used to specify the name of the final output files folder in the output directory." - }, - "skip_date_project": { - "type": "boolean", - "description": "Don't add the current date to the output project folder." - }, "roi": { "type": "string", "description": "Path to the default ROI (regions of interest) BED file to be used for WES analysis.", diff --git a/subworkflows/local/utils_cmgg_germline_pipeline/main.nf b/subworkflows/local/utils_cmgg_germline_pipeline/main.nf index 343aa32d..8c463532 100644 --- a/subworkflows/local/utils_cmgg_germline_pipeline/main.nf +++ b/subworkflows/local/utils_cmgg_germline_pipeline/main.nf @@ -84,7 +84,7 @@ workflow PIPELINE_INITIALISATION { ) // Output the samplesheet - file(input).copyTo("${outdir}/samplesheet.csv") + file(input).copyTo("${outdir}/v${workflow.manifest.version.replace('.', '_')}_${new Date().format("yyyy_MM_dd")}/samplesheet.csv") emit: samplesheet = WATCHPATH_HANDLING.out.samplesheet diff --git a/subworkflows/nf-core/utils_nextflow_pipeline/main.nf b/subworkflows/nf-core/utils_nextflow_pipeline/main.nf index b17b8774..bf347813 100644 --- a/subworkflows/nf-core/utils_nextflow_pipeline/main.nf +++ b/subworkflows/nf-core/utils_nextflow_pipeline/main.nf @@ -77,7 +77,7 @@ def dumpParametersToJSON(outdir) { def jsonStr = groovy.json.JsonOutput.toJson(params) temp_pf.text = groovy.json.JsonOutput.prettyPrint(jsonStr) - nextflow.extension.FilesEx.copyTo(temp_pf.toPath(), "${outdir}/pipeline_info/params_${timestamp}.json") + nextflow.extension.FilesEx.copyTo(temp_pf.toPath(), "${outdir}/v${workflow.manifest.version.replace('.', '_')}_${new Date().format("yyyy_MM_dd")}/params_${timestamp}.json") temp_pf.delete() } diff --git a/workflows/germline.nf b/workflows/germline.nf index 060d75d7..42fdbe96 100644 --- a/workflows/germline.nf +++ b/workflows/germline.nf @@ -838,7 +838,7 @@ workflow GERMLINE { // def ch_collated_versions = softwareVersionsToYAML(ch_versions) .collectFile( - storeDir: "${outdir}/pipeline_info", + storeDir: "${outdir}/v${workflow.manifest.version.replace('.', '_')}_${new Date().format("yyyy_MM_dd")}", name: '' + 'pipeline_software_' + 'mqc_' + 'versions.yml', sort: true, newLine: true From 47d8b126ab2bcf5c19a9428e2b62563b3d7e7682 Mon Sep 17 00:00:00 2001 From: Matthias De Smet <11850640+matthdsm@users.noreply.github.com> Date: Tue, 12 Nov 2024 10:30:22 +0100 Subject: [PATCH 084/167] Fix some resources (#220) * optimize resources * Update conf/modules.config --------- Co-authored-by: Nicolas Vannieuwkerke <101190534+nvnieuwk@users.noreply.github.com> --- conf/modules.config | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/conf/modules.config b/conf/modules.config index cb5fe2ab..d66e3f6c 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -133,6 +133,7 @@ process { } withName: "^.*CRAM_CALL_GATK4:GATK4_HAPLOTYPECALLER\$" { + label = "process_low" time = { 16.h * task.attempt } ext.prefix = {"${meta.id}.g"} ext.args = { @@ -555,9 +556,11 @@ process { */ withName: "^.*VCF2DB\$" { - ext.args = "--a-ok gnomAD_AC --a-ok gnomAD_Hom" - ext.prefix = final_prefix - publishDir = [ + container = "quay.io/cmgg/vcf2db:2020.02.24" + label = "process_single" + ext.args = "--a-ok gnomAD_AC --a-ok gnomAD_Hom" + ext.prefix = final_prefix + publishDir = [ overwrite: true, path: final_output, mode: params.publish_dir_mode, From 245d1ff96240a8dfb4c2e7f7cfd4cc833de3da14 Mon Sep 17 00:00:00 2001 From: Matthias De Smet <11850640+matthdsm@users.noreply.github.com> Date: Wed, 13 Nov 2024 10:38:08 +0100 Subject: [PATCH 085/167] fix resource usage and patch modules --- conf/modules.config | 4 ---- modules.json | 6 ++++-- .../gatk4-haplotypecaller.diff | 21 +++++++++++++++++++ modules/nf-core/gatk4/haplotypecaller/main.nf | 3 +-- modules/nf-core/vcf2db/main.nf | 6 ++---- modules/nf-core/vcf2db/vcf2db.diff | 20 ++++++++++++++++++ 6 files changed, 48 insertions(+), 12 deletions(-) create mode 100644 modules/nf-core/gatk4/haplotypecaller/gatk4-haplotypecaller.diff create mode 100644 modules/nf-core/vcf2db/vcf2db.diff diff --git a/conf/modules.config b/conf/modules.config index d66e3f6c..7261c400 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -133,7 +133,6 @@ process { } withName: "^.*CRAM_CALL_GATK4:GATK4_HAPLOTYPECALLER\$" { - label = "process_low" time = { 16.h * task.attempt } ext.prefix = {"${meta.id}.g"} ext.args = { @@ -556,9 +555,6 @@ process { */ withName: "^.*VCF2DB\$" { - container = "quay.io/cmgg/vcf2db:2020.02.24" - label = "process_single" - ext.args = "--a-ok gnomAD_AC --a-ok gnomAD_Hom" ext.prefix = final_prefix publishDir = [ overwrite: true, diff --git a/modules.json b/modules.json index 92877e49..5e9357a6 100644 --- a/modules.json +++ b/modules.json @@ -117,7 +117,8 @@ "gatk4/haplotypecaller": { "branch": "master", "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", - "installed_by": ["modules"] + "installed_by": ["modules"], + "patch": "modules/nf-core/gatk4/haplotypecaller/gatk4-haplotypecaller.diff" }, "gawk": { "branch": "master", @@ -219,7 +220,8 @@ "vcf2db": { "branch": "master", "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", - "installed_by": ["modules"] + "installed_by": ["modules"], + "patch": "modules/nf-core/vcf2db/vcf2db.diff" }, "vcfanno": { "branch": "master", diff --git a/modules/nf-core/gatk4/haplotypecaller/gatk4-haplotypecaller.diff b/modules/nf-core/gatk4/haplotypecaller/gatk4-haplotypecaller.diff new file mode 100644 index 00000000..28465529 --- /dev/null +++ b/modules/nf-core/gatk4/haplotypecaller/gatk4-haplotypecaller.diff @@ -0,0 +1,21 @@ +Changes in module 'nf-core/gatk4/haplotypecaller' +--- modules/nf-core/gatk4/haplotypecaller/main.nf ++++ modules/nf-core/gatk4/haplotypecaller/main.nf +@@ -1,6 +1,6 @@ + process GATK4_HAPLOTYPECALLER { + tag "$meta.id" +- label 'process_medium' ++ label 'process_low' + + conda "${moduleDir}/environment.yml" + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? +@@ -44,7 +44,6 @@ + --input $input \\ + --output ${prefix}.vcf.gz \\ + --reference $fasta \\ +- --native-pair-hmm-threads ${task.cpus} \\ + $dbsnp_command \\ + $interval_command \\ + $dragstr_command \\ + +************************************************************ diff --git a/modules/nf-core/gatk4/haplotypecaller/main.nf b/modules/nf-core/gatk4/haplotypecaller/main.nf index b2aff489..51701376 100644 --- a/modules/nf-core/gatk4/haplotypecaller/main.nf +++ b/modules/nf-core/gatk4/haplotypecaller/main.nf @@ -1,6 +1,6 @@ process GATK4_HAPLOTYPECALLER { tag "$meta.id" - label 'process_medium' + label 'process_low' conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? @@ -44,7 +44,6 @@ process GATK4_HAPLOTYPECALLER { --input $input \\ --output ${prefix}.vcf.gz \\ --reference $fasta \\ - --native-pair-hmm-threads ${task.cpus} \\ $dbsnp_command \\ $interval_command \\ $dragstr_command \\ diff --git a/modules/nf-core/vcf2db/main.nf b/modules/nf-core/vcf2db/main.nf index 56c26bb6..c4c439cd 100644 --- a/modules/nf-core/vcf2db/main.nf +++ b/modules/nf-core/vcf2db/main.nf @@ -1,12 +1,10 @@ process VCF2DB { tag "$meta.id" - label 'process_medium' + label 'process_single' // 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/vcf2db:2020.02.24--pl5321hdfd78af_3': - 'biocontainers/vcf2db:2020.02.24--pl5321hdfd78af_3' }" + container "quay.io/cmgg/vcf2db:2020.02.24" input: tuple val(meta), path(vcf), path(ped) diff --git a/modules/nf-core/vcf2db/vcf2db.diff b/modules/nf-core/vcf2db/vcf2db.diff new file mode 100644 index 00000000..51e55ec1 --- /dev/null +++ b/modules/nf-core/vcf2db/vcf2db.diff @@ -0,0 +1,20 @@ +Changes in module 'nf-core/vcf2db' +--- modules/nf-core/vcf2db/main.nf ++++ modules/nf-core/vcf2db/main.nf +@@ -1,12 +1,10 @@ + process VCF2DB { + tag "$meta.id" +- label 'process_medium' ++ label 'process_single' + + // 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/vcf2db:2020.02.24--pl5321hdfd78af_3': +- 'biocontainers/vcf2db:2020.02.24--pl5321hdfd78af_3' }" ++ container "quay.io/cmgg/vcf2db:2020.02.24" + + input: + tuple val(meta), path(vcf), path(ped) + +************************************************************ From 5ea5def5ef3f02382e5a144bae01ca90920eea8f Mon Sep 17 00:00:00 2001 From: Matthias De Smet <11850640+matthdsm@users.noreply.github.com> Date: Wed, 13 Nov 2024 11:00:24 +0100 Subject: [PATCH 086/167] vcf2db: restore ext.args --- conf/modules.config | 1 + 1 file changed, 1 insertion(+) diff --git a/conf/modules.config b/conf/modules.config index 7261c400..92f0b7e0 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -556,6 +556,7 @@ process { withName: "^.*VCF2DB\$" { ext.prefix = final_prefix + ext.args = "--a-ok gnomAD_AC --a-ok gnomAD_Hom" publishDir = [ overwrite: true, path: final_output, From 483030be0e82a130956ced7c2f5fde9fb8edb724 Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Wed, 13 Nov 2024 14:53:36 +0100 Subject: [PATCH 087/167] fix tests --- .nf-core.yml | 2 +- CHANGELOG.md | 6 +- nextflow.config | 2 +- tests/pipeline/callers/main.nf.test | 39 ++- tests/pipeline/callers/main.nf.test.snap | 171 +++++---- tests/pipeline/default/main.nf.test | 17 +- tests/pipeline/default/main.nf.test.snap | 47 ++- tests/pipeline/gvcfs/main.nf.test | 17 +- tests/pipeline/gvcfs/main.nf.test.snap | 23 +- tests/pipeline/variations/main.nf.test | 72 +++- tests/pipeline/variations/main.nf.test.snap | 284 +++++++-------- tests/pipeline/variations2/main.nf.test | 61 +++- tests/pipeline/variations2/main.nf.test.snap | 351 +++++++++---------- 13 files changed, 579 insertions(+), 513 deletions(-) diff --git a/.nf-core.yml b/.nf-core.yml index bb292c7d..8bc363c0 100644 --- a/.nf-core.yml +++ b/.nf-core.yml @@ -42,4 +42,4 @@ template: skip_features: - fastqc - is_nfcore - version: 1.9.0dev + version: 2.0.0dev diff --git a/CHANGELOG.md b/CHANGELOG.md index e77b12a8..38136a64 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,16 +3,20 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## v1.9.0dev +## v2.0.0dev ### New features 1. Added the `--min_callable_coverage` parameter to state what the lowest coverage should for a region to be classified as callable. +2. Added the [`elprep` caller](https://github.com/ExaScience/elprep) as an alternative to the haplotypecaller. ### Changes 1. Added the `--squash-ploidy` argument to the RTG vcfeval process. 2. Update to nf-core v3.0.1 +3. Completely reworked the output directory structure to a more sensible structure. The pipeline can now be run on the same output directory every time and will incrementally add files to the correct family folder. See the [output documentation](https://nf-cmgg.github.io/germline/latest/output/) for more info. +4. Migrated to the new workflow output definitions. +5. Bumped the minimal Nextflow version to 24.10.0. ### Fixes diff --git a/nextflow.config b/nextflow.config index 8671e61a..1c9168ef 100644 --- a/nextflow.config +++ b/nextflow.config @@ -276,7 +276,7 @@ manifest { description = """A nextflow pipeline for calling and annotating small germline variants from short DNA reads for WES and WGS data""" mainScript = 'main.nf' nextflowVersion = '!>=24.10.0' - version = '1.9.0dev' + version = '2.0.0dev' doi = '' } diff --git a/tests/pipeline/callers/main.nf.test b/tests/pipeline/callers/main.nf.test index 18cfcb3a..b3701313 100644 --- a/tests/pipeline/callers/main.nf.test +++ b/tests/pipeline/callers/main.nf.test @@ -20,14 +20,19 @@ nextflow_pipeline { then { assertAll( { assert workflow.success }, + { assert !workflow.stdout }, { assert snapshot( - workflow.stdout, path("${outputDir}") .list() - .findAll { !it.toString().endsWith("pipeline_info") } .collect { getRecursiveFileNames(it, "${outputDir}") } .flatten() - ).match("vardict") } + .findAll { + !(it.contains("/execution_") || it.contains("/params_") || it.contains("/pipeline_")) + } + .collect { + it.replace(getDynamicOutputName(), "_") + } + ).match() } ) } @@ -45,14 +50,19 @@ nextflow_pipeline { then { assertAll( { assert workflow.success }, + { assert !workflow.stdout }, { assert snapshot( - workflow.stdout, path("${outputDir}") .list() - .findAll { !it.toString().endsWith("pipeline_info") } .collect { getRecursiveFileNames(it, "${outputDir}") } .flatten() - ).match("haplotypecaller") } + .findAll { + !(it.contains("/execution_") || it.contains("/params_") || it.contains("/pipeline_")) + } + .collect { + it.replace(getDynamicOutputName(), "_") + } + ).match() } ) } @@ -70,14 +80,19 @@ nextflow_pipeline { then { assertAll( { assert workflow.success }, + { assert !workflow.stdout }, { assert snapshot( - workflow.stdout, path("${outputDir}") .list() - .findAll { !it.toString().endsWith("pipeline_info") } .collect { getRecursiveFileNames(it, "${outputDir}") } .flatten() - ).match("vardict + haplotypecaller") } + .findAll { + !(it.contains("/execution_") || it.contains("/params_") || it.contains("/pipeline_")) + } + .collect { + it.replace(getDynamicOutputName(), "_") + } + ).match() } ) } @@ -91,3 +106,9 @@ def getRecursiveFileNames(fileOrDir, outputDir) { } return fileOrDir.toString().replace("${outputDir}/", "") } + +def getDynamicOutputName() { + def Map nfcoreYaml = new groovy.yaml.YamlSlurper().parseText(file(".nf-core.yml").text) + def date = new java.text.SimpleDateFormat("yyyy_MM_dd").format(new Date()) + return "v${nfcoreYaml.template.version.replace('.', '_')}_${date}" as String +} \ No newline at end of file diff --git a/tests/pipeline/callers/main.nf.test.snap b/tests/pipeline/callers/main.nf.test.snap index a4b2d068..dcd0e17c 100644 --- a/tests/pipeline/callers/main.nf.test.snap +++ b/tests/pipeline/callers/main.nf.test.snap @@ -1,119 +1,110 @@ { - "haplotypecaller": { + "pipeline_callers - haplotypecaller": { "content": [ [ - - ], - [ - "NA24143/NA24143.bed", - "NA24143/NA24143.haplotypecaller.g.vcf.gz", - "NA24143/NA24143.haplotypecaller.g.vcf.gz.tbi", - "NA24143/reports/NA24143.haplotypecaller.bcftools_stats.txt", - "NA24149/NA24149.bed", - "NA24149/NA24149.haplotypecaller.g.vcf.gz", - "NA24149/NA24149.haplotypecaller.g.vcf.gz.tbi", - "NA24149/reports/NA24149.haplotypecaller.bcftools_stats.txt", - "NA24385/NA24385.bed", - "NA24385/NA24385.haplotypecaller.g.vcf.gz", - "NA24385/NA24385.haplotypecaller.g.vcf.gz.tbi", - "NA24385/reports/NA24385.haplotypecaller.bcftools_stats.txt", - "multiqc/multiqc_report.html", - "samplesheet.csv", - "test/Ashkenazim/Ashkenazim.haplotypecaller.bed", - "test/Ashkenazim/Ashkenazim.haplotypecaller.ped", - "test/Ashkenazim/Ashkenazim.haplotypecaller.vcf.gz", - "test/Ashkenazim/Ashkenazim.haplotypecaller.vcf.gz.tbi", - "test/Ashkenazim/reports/Ashkenazim.haplotypecaller.bcftools_stats.txt", - "test/Ashkenazim/reports/Ashkenazim.haplotypecaller.html" + "Ashkenazim/NA24143__/NA24143.bed", + "Ashkenazim/NA24143__/NA24143.haplotypecaller.bcftools_stats.txt", + "Ashkenazim/NA24143__/NA24143.haplotypecaller.g.vcf.gz", + "Ashkenazim/NA24143__/NA24143.haplotypecaller.g.vcf.gz.tbi", + "Ashkenazim/NA24149__/NA24149.bed", + "Ashkenazim/NA24149__/NA24149.haplotypecaller.bcftools_stats.txt", + "Ashkenazim/NA24149__/NA24149.haplotypecaller.g.vcf.gz", + "Ashkenazim/NA24149__/NA24149.haplotypecaller.g.vcf.gz.tbi", + "Ashkenazim/NA24385__/NA24385.bed", + "Ashkenazim/NA24385__/NA24385.haplotypecaller.bcftools_stats.txt", + "Ashkenazim/NA24385__/NA24385.haplotypecaller.g.vcf.gz", + "Ashkenazim/NA24385__/NA24385.haplotypecaller.g.vcf.gz.tbi", + "Ashkenazim/output__/Ashkenazim.haplotypecaller.bed", + "Ashkenazim/output__/Ashkenazim.haplotypecaller.ped", + "Ashkenazim/output__/Ashkenazim.haplotypecaller.vcf.gz", + "Ashkenazim/output__/Ashkenazim.haplotypecaller.vcf.gz.tbi", + "Ashkenazim/qc__/Ashkenazim.haplotypecaller.bcftools_stats.txt", + "Ashkenazim/qc__/Ashkenazim.haplotypecaller.html", + "_/multiqc_report.html", + "_/samplesheet.csv" ] ], "meta": { "nf-test": "0.9.1", "nextflow": "24.10.0" }, - "timestamp": "2024-11-07T15:43:23.245304993" + "timestamp": "2024-11-13T14:05:33.245638727" }, - "vardict + haplotypecaller": { + "pipeline_callers - vardict + haplotypecaller": { "content": [ [ - - ], - [ - "NA24143/NA24143.bed", - "NA24143/NA24143.haplotypecaller.g.vcf.gz", - "NA24143/NA24143.haplotypecaller.g.vcf.gz.tbi", - "NA24143/reports/NA24143.haplotypecaller.bcftools_stats.txt", - "NA24149/NA24149.bed", - "NA24149/NA24149.haplotypecaller.g.vcf.gz", - "NA24149/NA24149.haplotypecaller.g.vcf.gz.tbi", - "NA24149/reports/NA24149.haplotypecaller.bcftools_stats.txt", - "NA24385/NA24385.bed", - "NA24385/NA24385.haplotypecaller.g.vcf.gz", - "NA24385/NA24385.haplotypecaller.g.vcf.gz.tbi", - "NA24385/reports/NA24385.haplotypecaller.bcftools_stats.txt", - "multiqc/multiqc_report.html", - "samplesheet.csv", - "test/Ashkenazim/Ashkenazim.haplotypecaller.bed", - "test/Ashkenazim/Ashkenazim.haplotypecaller.ped", - "test/Ashkenazim/Ashkenazim.haplotypecaller.vcf.gz", - "test/Ashkenazim/Ashkenazim.haplotypecaller.vcf.gz.tbi", - "test/Ashkenazim/NA24143.vardict.ped", - "test/Ashkenazim/NA24143.vardict.vcf.gz", - "test/Ashkenazim/NA24143.vardict.vcf.gz.tbi", - "test/Ashkenazim/NA24149.vardict.ped", - "test/Ashkenazim/NA24149.vardict.vcf.gz", - "test/Ashkenazim/NA24149.vardict.vcf.gz.tbi", - "test/Ashkenazim/NA24385.vardict.ped", - "test/Ashkenazim/NA24385.vardict.vcf.gz", - "test/Ashkenazim/NA24385.vardict.vcf.gz.tbi", - "test/Ashkenazim/reports/Ashkenazim.haplotypecaller.bcftools_stats.txt", - "test/Ashkenazim/reports/Ashkenazim.haplotypecaller.html", - "test/Ashkenazim/reports/NA24143.vardict.bcftools_stats.txt", - "test/Ashkenazim/reports/NA24143.vardict.html", - "test/Ashkenazim/reports/NA24149.vardict.bcftools_stats.txt", - "test/Ashkenazim/reports/NA24149.vardict.html", - "test/Ashkenazim/reports/NA24385.vardict.bcftools_stats.txt", - "test/Ashkenazim/reports/NA24385.vardict.html" + "Ashkenazim/NA24143__/NA24143.bed", + "Ashkenazim/NA24143__/NA24143.haplotypecaller.bcftools_stats.txt", + "Ashkenazim/NA24143__/NA24143.haplotypecaller.g.vcf.gz", + "Ashkenazim/NA24143__/NA24143.haplotypecaller.g.vcf.gz.tbi", + "Ashkenazim/NA24149__/NA24149.bed", + "Ashkenazim/NA24149__/NA24149.haplotypecaller.bcftools_stats.txt", + "Ashkenazim/NA24149__/NA24149.haplotypecaller.g.vcf.gz", + "Ashkenazim/NA24149__/NA24149.haplotypecaller.g.vcf.gz.tbi", + "Ashkenazim/NA24385__/NA24385.bed", + "Ashkenazim/NA24385__/NA24385.haplotypecaller.bcftools_stats.txt", + "Ashkenazim/NA24385__/NA24385.haplotypecaller.g.vcf.gz", + "Ashkenazim/NA24385__/NA24385.haplotypecaller.g.vcf.gz.tbi", + "Ashkenazim/output__/Ashkenazim.haplotypecaller.bed", + "Ashkenazim/output__/Ashkenazim.haplotypecaller.ped", + "Ashkenazim/output__/Ashkenazim.haplotypecaller.vcf.gz", + "Ashkenazim/output__/Ashkenazim.haplotypecaller.vcf.gz.tbi", + "Ashkenazim/output__/NA24143.vardict.ped", + "Ashkenazim/output__/NA24143.vardict.vcf.gz", + "Ashkenazim/output__/NA24143.vardict.vcf.gz.tbi", + "Ashkenazim/output__/NA24149.vardict.ped", + "Ashkenazim/output__/NA24149.vardict.vcf.gz", + "Ashkenazim/output__/NA24149.vardict.vcf.gz.tbi", + "Ashkenazim/output__/NA24385.vardict.ped", + "Ashkenazim/output__/NA24385.vardict.vcf.gz", + "Ashkenazim/output__/NA24385.vardict.vcf.gz.tbi", + "Ashkenazim/qc__/Ashkenazim.haplotypecaller.bcftools_stats.txt", + "Ashkenazim/qc__/Ashkenazim.haplotypecaller.html", + "Ashkenazim/qc__/NA24143.vardict.bcftools_stats.txt", + "Ashkenazim/qc__/NA24143.vardict.html", + "Ashkenazim/qc__/NA24149.vardict.bcftools_stats.txt", + "Ashkenazim/qc__/NA24149.vardict.html", + "Ashkenazim/qc__/NA24385.vardict.bcftools_stats.txt", + "Ashkenazim/qc__/NA24385.vardict.html", + "_/multiqc_report.html", + "_/samplesheet.csv" ] ], "meta": { "nf-test": "0.9.1", "nextflow": "24.10.0" }, - "timestamp": "2024-11-07T15:44:48.221710874" + "timestamp": "2024-11-13T14:09:45.604865258" }, - "vardict": { + "pipeline_callers - vardict": { "content": [ [ - - ], - [ - "NA24143/NA24143.bed", - "NA24149/NA24149.bed", - "NA24385/NA24385.bed", - "multiqc/multiqc_report.html", - "samplesheet.csv", - "test/Ashkenazim/NA24143.vardict.ped", - "test/Ashkenazim/NA24143.vardict.vcf.gz", - "test/Ashkenazim/NA24143.vardict.vcf.gz.tbi", - "test/Ashkenazim/NA24149.vardict.ped", - "test/Ashkenazim/NA24149.vardict.vcf.gz", - "test/Ashkenazim/NA24149.vardict.vcf.gz.tbi", - "test/Ashkenazim/NA24385.vardict.ped", - "test/Ashkenazim/NA24385.vardict.vcf.gz", - "test/Ashkenazim/NA24385.vardict.vcf.gz.tbi", - "test/Ashkenazim/reports/NA24143.vardict.bcftools_stats.txt", - "test/Ashkenazim/reports/NA24143.vardict.html", - "test/Ashkenazim/reports/NA24149.vardict.bcftools_stats.txt", - "test/Ashkenazim/reports/NA24149.vardict.html", - "test/Ashkenazim/reports/NA24385.vardict.bcftools_stats.txt", - "test/Ashkenazim/reports/NA24385.vardict.html" + "Ashkenazim/NA24143__/NA24143.bed", + "Ashkenazim/NA24149__/NA24149.bed", + "Ashkenazim/NA24385__/NA24385.bed", + "Ashkenazim/output__/NA24143.vardict.ped", + "Ashkenazim/output__/NA24143.vardict.vcf.gz", + "Ashkenazim/output__/NA24143.vardict.vcf.gz.tbi", + "Ashkenazim/output__/NA24149.vardict.ped", + "Ashkenazim/output__/NA24149.vardict.vcf.gz", + "Ashkenazim/output__/NA24149.vardict.vcf.gz.tbi", + "Ashkenazim/output__/NA24385.vardict.ped", + "Ashkenazim/output__/NA24385.vardict.vcf.gz", + "Ashkenazim/output__/NA24385.vardict.vcf.gz.tbi", + "Ashkenazim/qc__/NA24143.vardict.bcftools_stats.txt", + "Ashkenazim/qc__/NA24143.vardict.html", + "Ashkenazim/qc__/NA24149.vardict.bcftools_stats.txt", + "Ashkenazim/qc__/NA24149.vardict.html", + "Ashkenazim/qc__/NA24385.vardict.bcftools_stats.txt", + "Ashkenazim/qc__/NA24385.vardict.html", + "_/multiqc_report.html", + "_/samplesheet.csv" ] ], "meta": { "nf-test": "0.9.1", "nextflow": "24.10.0" }, - "timestamp": "2024-11-07T15:42:12.627820502" + "timestamp": "2024-11-13T14:02:38.547566464" } } \ No newline at end of file diff --git a/tests/pipeline/default/main.nf.test b/tests/pipeline/default/main.nf.test index 31b1a025..6f112d0d 100644 --- a/tests/pipeline/default/main.nf.test +++ b/tests/pipeline/default/main.nf.test @@ -19,14 +19,19 @@ nextflow_pipeline { then { assertAll( { assert workflow.success }, + { assert !workflow.stdout }, { assert snapshot( - workflow.stdout, path("${outputDir}") .list() - .findAll { !it.toString().endsWith("pipeline_info") } .collect { getRecursiveFileNames(it, "${outputDir}") } .flatten() - ).match("default") } + .findAll { + !(it.contains("/execution_") || it.contains("/params_") || it.contains("/pipeline_")) + } + .collect { + it.replace(getDynamicOutputName(), "_") + } + ).match() } ) } @@ -40,3 +45,9 @@ def getRecursiveFileNames(fileOrDir, outputDir) { } return fileOrDir.toString().replace("${outputDir}/", "") } + +def getDynamicOutputName() { + def Map nfcoreYaml = new groovy.yaml.YamlSlurper().parseText(file(".nf-core.yml").text) + def date = new java.text.SimpleDateFormat("yyyy_MM_dd").format(new Date()) + return "v${nfcoreYaml.template.version.replace('.', '_')}_${date}" as String +} diff --git a/tests/pipeline/default/main.nf.test.snap b/tests/pipeline/default/main.nf.test.snap index 39d941df..3bf2a32c 100644 --- a/tests/pipeline/default/main.nf.test.snap +++ b/tests/pipeline/default/main.nf.test.snap @@ -1,36 +1,33 @@ { - "default": { + "pipeline_default - default": { "content": [ [ - - ], - [ - "NA24143/NA24143.bed", - "NA24143/NA24143.haplotypecaller.g.vcf.gz", - "NA24143/NA24143.haplotypecaller.g.vcf.gz.tbi", - "NA24143/reports/NA24143.haplotypecaller.bcftools_stats.txt", - "NA24149/NA24149.bed", - "NA24149/NA24149.haplotypecaller.g.vcf.gz", - "NA24149/NA24149.haplotypecaller.g.vcf.gz.tbi", - "NA24149/reports/NA24149.haplotypecaller.bcftools_stats.txt", - "NA24385/NA24385.bed", - "NA24385/NA24385.haplotypecaller.g.vcf.gz", - "NA24385/NA24385.haplotypecaller.g.vcf.gz.tbi", - "NA24385/reports/NA24385.haplotypecaller.bcftools_stats.txt", - "multiqc/multiqc_report.html", - "samplesheet.csv", - "test/Ashkenazim/Ashkenazim.haplotypecaller.bed", - "test/Ashkenazim/Ashkenazim.haplotypecaller.ped", - "test/Ashkenazim/Ashkenazim.haplotypecaller.vcf.gz", - "test/Ashkenazim/Ashkenazim.haplotypecaller.vcf.gz.tbi", - "test/Ashkenazim/reports/Ashkenazim.haplotypecaller.bcftools_stats.txt", - "test/Ashkenazim/reports/Ashkenazim.haplotypecaller.html" + "Ashkenazim/NA24143__/NA24143.bed", + "Ashkenazim/NA24143__/NA24143.haplotypecaller.bcftools_stats.txt", + "Ashkenazim/NA24143__/NA24143.haplotypecaller.g.vcf.gz", + "Ashkenazim/NA24143__/NA24143.haplotypecaller.g.vcf.gz.tbi", + "Ashkenazim/NA24149__/NA24149.bed", + "Ashkenazim/NA24149__/NA24149.haplotypecaller.bcftools_stats.txt", + "Ashkenazim/NA24149__/NA24149.haplotypecaller.g.vcf.gz", + "Ashkenazim/NA24149__/NA24149.haplotypecaller.g.vcf.gz.tbi", + "Ashkenazim/NA24385__/NA24385.bed", + "Ashkenazim/NA24385__/NA24385.haplotypecaller.bcftools_stats.txt", + "Ashkenazim/NA24385__/NA24385.haplotypecaller.g.vcf.gz", + "Ashkenazim/NA24385__/NA24385.haplotypecaller.g.vcf.gz.tbi", + "Ashkenazim/output__/Ashkenazim.haplotypecaller.bed", + "Ashkenazim/output__/Ashkenazim.haplotypecaller.ped", + "Ashkenazim/output__/Ashkenazim.haplotypecaller.vcf.gz", + "Ashkenazim/output__/Ashkenazim.haplotypecaller.vcf.gz.tbi", + "Ashkenazim/qc__/Ashkenazim.haplotypecaller.bcftools_stats.txt", + "Ashkenazim/qc__/Ashkenazim.haplotypecaller.html", + "_/multiqc_report.html", + "_/samplesheet.csv" ] ], "meta": { "nf-test": "0.9.1", "nextflow": "24.10.0" }, - "timestamp": "2024-11-07T15:45:55.603941963" + "timestamp": "2024-11-13T13:55:37.532795185" } } \ No newline at end of file diff --git a/tests/pipeline/gvcfs/main.nf.test b/tests/pipeline/gvcfs/main.nf.test index 19ec78f9..694288ff 100644 --- a/tests/pipeline/gvcfs/main.nf.test +++ b/tests/pipeline/gvcfs/main.nf.test @@ -20,14 +20,19 @@ nextflow_pipeline { then { assertAll( { assert workflow.success }, + { assert !workflow.stdout }, { assert snapshot( - workflow.stdout, path("${outputDir}") .list() - .findAll { !it.toString().endsWith("pipeline_info") } .collect { getRecursiveFileNames(it, "${outputDir}") } .flatten() - ).match("gvcfs") } + .findAll { + !(it.contains("/execution_") || it.contains("/params_") || it.contains("/pipeline_")) + } + .collect { + it.replace(getDynamicOutputName(), "_") + } + ).match() } ) } @@ -41,3 +46,9 @@ def getRecursiveFileNames(fileOrDir, outputDir) { } return fileOrDir.toString().replace("${outputDir}/", "") } + +def getDynamicOutputName() { + def Map nfcoreYaml = new groovy.yaml.YamlSlurper().parseText(file(".nf-core.yml").text) + def date = new java.text.SimpleDateFormat("yyyy_MM_dd").format(new Date()) + return "v${nfcoreYaml.template.version.replace('.', '_')}_${date}" as String +} diff --git a/tests/pipeline/gvcfs/main.nf.test.snap b/tests/pipeline/gvcfs/main.nf.test.snap index f768f819..2cd80e35 100644 --- a/tests/pipeline/gvcfs/main.nf.test.snap +++ b/tests/pipeline/gvcfs/main.nf.test.snap @@ -1,24 +1,21 @@ { - "gvcfs": { + "pipeline_default - gvcfs": { "content": [ [ - - ], - [ - "multiqc/multiqc_report.html", - "samplesheet.csv", - "test/Ashkenazim/Ashkenazim.haplotypecaller.bed", - "test/Ashkenazim/Ashkenazim.haplotypecaller.ped", - "test/Ashkenazim/Ashkenazim.haplotypecaller.vcf.gz", - "test/Ashkenazim/Ashkenazim.haplotypecaller.vcf.gz.tbi", - "test/Ashkenazim/reports/Ashkenazim.haplotypecaller.bcftools_stats.txt", - "test/Ashkenazim/reports/Ashkenazim.haplotypecaller.html" + "Ashkenazim/output__/Ashkenazim.haplotypecaller.bed", + "Ashkenazim/output__/Ashkenazim.haplotypecaller.ped", + "Ashkenazim/output__/Ashkenazim.haplotypecaller.vcf.gz", + "Ashkenazim/output__/Ashkenazim.haplotypecaller.vcf.gz.tbi", + "Ashkenazim/qc__/Ashkenazim.haplotypecaller.bcftools_stats.txt", + "Ashkenazim/qc__/Ashkenazim.haplotypecaller.html", + "_/multiqc_report.html", + "_/samplesheet.csv" ] ], "meta": { "nf-test": "0.9.1", "nextflow": "24.10.0" }, - "timestamp": "2024-11-07T15:46:42.423860055" + "timestamp": "2024-11-13T14:14:20.958812996" } } \ No newline at end of file diff --git a/tests/pipeline/variations/main.nf.test b/tests/pipeline/variations/main.nf.test index 738ec677..cdf7aff0 100644 --- a/tests/pipeline/variations/main.nf.test +++ b/tests/pipeline/variations/main.nf.test @@ -20,14 +20,19 @@ nextflow_pipeline { then { assertAll( { assert workflow.success }, + { assert !workflow.stdout }, { assert snapshot( - workflow.stdout, path("${outputDir}") .list() - .findAll { !it.toString().endsWith("pipeline_info") } .collect { getRecursiveFileNames(it, "${outputDir}") } .flatten() - ).match("annotate") } + .findAll { + !(it.contains("/execution_") || it.contains("/params_") || it.contains("/pipeline_")) + } + .collect { + it.replace(getDynamicOutputName(), "_") + } + ).match() } ) } @@ -46,14 +51,19 @@ nextflow_pipeline { then { assertAll( { assert workflow.success }, + { assert !workflow.stdout }, { assert snapshot( - workflow.stdout, path("${outputDir}") .list() - .findAll { !it.toString().endsWith("pipeline_info") } .collect { getRecursiveFileNames(it, "${outputDir}") } .flatten() - ).match("annotate + vcfanno") } + .findAll { + !(it.contains("/execution_") || it.contains("/params_") || it.contains("/pipeline_")) + } + .collect { + it.replace(getDynamicOutputName(), "_") + } + ).match() } ) } @@ -71,14 +81,19 @@ nextflow_pipeline { then { assertAll( { assert workflow.success }, + { assert !workflow.stdout }, { assert snapshot( - workflow.stdout, path("${outputDir}") .list() - .findAll { !it.toString().endsWith("pipeline_info") } .collect { getRecursiveFileNames(it, "${outputDir}") } .flatten() - ).match("filter") } + .findAll { + !(it.contains("/execution_") || it.contains("/params_") || it.contains("/pipeline_")) + } + .collect { + it.replace(getDynamicOutputName(), "_") + } + ).match() } ) } @@ -96,14 +111,19 @@ nextflow_pipeline { then { assertAll( { assert workflow.success }, + { assert !workflow.stdout }, { assert snapshot( - workflow.stdout, path("${outputDir}") .list() - .findAll { !it.toString().endsWith("pipeline_info") } .collect { getRecursiveFileNames(it, "${outputDir}") } .flatten() - ).match("only_call") } + .findAll { + !(it.contains("/execution_") || it.contains("/params_") || it.contains("/pipeline_")) + } + .collect { + it.replace(getDynamicOutputName(), "_") + } + ).match() } ) } @@ -122,14 +142,19 @@ nextflow_pipeline { then { assertAll( { assert workflow.success }, + { assert !workflow.stdout }, { assert snapshot( - workflow.stdout, path("${outputDir}") .list() - .findAll { !it.toString().endsWith("pipeline_info") } .collect { getRecursiveFileNames(it, "${outputDir}") } .flatten() - ).match("only_merge") } + .findAll { + !(it.contains("/execution_") || it.contains("/params_") || it.contains("/pipeline_")) + } + .collect { + it.replace(getDynamicOutputName(), "_") + } + ).match() } ) } @@ -147,14 +172,19 @@ nextflow_pipeline { then { assertAll( { assert workflow.success }, + { assert !workflow.stdout }, { assert snapshot( - workflow.stdout, path("${outputDir}") .list() - .findAll { !it.toString().endsWith("pipeline_info") } .collect { getRecursiveFileNames(it, "${outputDir}") } .flatten() - ).match("automap") } + .findAll { + !(it.contains("/execution_") || it.contains("/params_") || it.contains("/pipeline_")) + } + .collect { + it.replace(getDynamicOutputName(), "_") + } + ).match() } ) } @@ -167,3 +197,9 @@ def getRecursiveFileNames(fileOrDir, outputDir) { } return fileOrDir.toString().replace("${outputDir}/", "") } + +def getDynamicOutputName() { + def Map nfcoreYaml = new groovy.yaml.YamlSlurper().parseText(file(".nf-core.yml").text) + def date = new java.text.SimpleDateFormat("yyyy_MM_dd").format(new Date()) + return "v${nfcoreYaml.template.version.replace('.', '_')}_${date}" as String +} \ No newline at end of file diff --git a/tests/pipeline/variations/main.nf.test.snap b/tests/pipeline/variations/main.nf.test.snap index 0cc71b8d..95999b13 100644 --- a/tests/pipeline/variations/main.nf.test.snap +++ b/tests/pipeline/variations/main.nf.test.snap @@ -1,207 +1,189 @@ { - "filter": { + "pipeline_variations - only_merge": { "content": [ [ - - ], - [ - "NA24143/NA24143.bed", - "NA24143/NA24143.haplotypecaller.g.vcf.gz", - "NA24143/NA24143.haplotypecaller.g.vcf.gz.tbi", - "NA24143/reports/NA24143.haplotypecaller.bcftools_stats.txt", - "NA24149/NA24149.bed", - "NA24149/NA24149.haplotypecaller.g.vcf.gz", - "NA24149/NA24149.haplotypecaller.g.vcf.gz.tbi", - "NA24149/reports/NA24149.haplotypecaller.bcftools_stats.txt", - "NA24385/NA24385.bed", - "NA24385/NA24385.haplotypecaller.g.vcf.gz", - "NA24385/NA24385.haplotypecaller.g.vcf.gz.tbi", - "NA24385/reports/NA24385.haplotypecaller.bcftools_stats.txt", - "multiqc/multiqc_report.html", - "samplesheet.csv", - "test/Ashkenazim/Ashkenazim.haplotypecaller.bed", - "test/Ashkenazim/Ashkenazim.haplotypecaller.ped", - "test/Ashkenazim/Ashkenazim.haplotypecaller.vcf.gz", - "test/Ashkenazim/Ashkenazim.haplotypecaller.vcf.gz.tbi", - "test/Ashkenazim/reports/Ashkenazim.haplotypecaller.bcftools_stats.txt", - "test/Ashkenazim/reports/Ashkenazim.haplotypecaller.html" + "Ashkenazim/NA24143__/NA24143.bed", + "Ashkenazim/NA24143__/NA24143.haplotypecaller.bcftools_stats.txt", + "Ashkenazim/NA24143__/NA24143.haplotypecaller.g.vcf.gz", + "Ashkenazim/NA24143__/NA24143.haplotypecaller.g.vcf.gz.tbi", + "Ashkenazim/NA24149__/NA24149.bed", + "Ashkenazim/NA24149__/NA24149.haplotypecaller.bcftools_stats.txt", + "Ashkenazim/NA24149__/NA24149.haplotypecaller.g.vcf.gz", + "Ashkenazim/NA24149__/NA24149.haplotypecaller.g.vcf.gz.tbi", + "Ashkenazim/NA24385__/NA24385.bed", + "Ashkenazim/NA24385__/NA24385.haplotypecaller.bcftools_stats.txt", + "Ashkenazim/NA24385__/NA24385.haplotypecaller.g.vcf.gz", + "Ashkenazim/NA24385__/NA24385.haplotypecaller.g.vcf.gz.tbi", + "Ashkenazim/output__/Ashkenazim_haplotypecaller_genomicsdb", + "_/multiqc_report.html", + "_/samplesheet.csv" ] ], "meta": { "nf-test": "0.9.1", "nextflow": "24.10.0" }, - "timestamp": "2024-11-07T15:49:57.656894161" + "timestamp": "2024-11-13T14:28:35.043452694" }, - "only_call": { + "pipeline_variations - filter": { "content": [ [ - - ], - [ - "NA24143/NA24143.bed", - "NA24143/NA24143.haplotypecaller.g.vcf.gz", - "NA24143/NA24143.haplotypecaller.g.vcf.gz.tbi", - "NA24143/reports/NA24143.haplotypecaller.bcftools_stats.txt", - "NA24149/NA24149.bed", - "NA24149/NA24149.haplotypecaller.g.vcf.gz", - "NA24149/NA24149.haplotypecaller.g.vcf.gz.tbi", - "NA24149/reports/NA24149.haplotypecaller.bcftools_stats.txt", - "NA24385/NA24385.bed", - "NA24385/NA24385.haplotypecaller.g.vcf.gz", - "NA24385/NA24385.haplotypecaller.g.vcf.gz.tbi", - "NA24385/reports/NA24385.haplotypecaller.bcftools_stats.txt", - "multiqc/multiqc_report.html", - "samplesheet.csv" + "Ashkenazim/NA24143__/NA24143.bed", + "Ashkenazim/NA24143__/NA24143.haplotypecaller.bcftools_stats.txt", + "Ashkenazim/NA24143__/NA24143.haplotypecaller.g.vcf.gz", + "Ashkenazim/NA24143__/NA24143.haplotypecaller.g.vcf.gz.tbi", + "Ashkenazim/NA24149__/NA24149.bed", + "Ashkenazim/NA24149__/NA24149.haplotypecaller.bcftools_stats.txt", + "Ashkenazim/NA24149__/NA24149.haplotypecaller.g.vcf.gz", + "Ashkenazim/NA24149__/NA24149.haplotypecaller.g.vcf.gz.tbi", + "Ashkenazim/NA24385__/NA24385.bed", + "Ashkenazim/NA24385__/NA24385.haplotypecaller.bcftools_stats.txt", + "Ashkenazim/NA24385__/NA24385.haplotypecaller.g.vcf.gz", + "Ashkenazim/NA24385__/NA24385.haplotypecaller.g.vcf.gz.tbi", + "Ashkenazim/output__/Ashkenazim.haplotypecaller.bed", + "Ashkenazim/output__/Ashkenazim.haplotypecaller.ped", + "Ashkenazim/output__/Ashkenazim.haplotypecaller.vcf.gz", + "Ashkenazim/output__/Ashkenazim.haplotypecaller.vcf.gz.tbi", + "Ashkenazim/qc__/Ashkenazim.haplotypecaller.bcftools_stats.txt", + "Ashkenazim/qc__/Ashkenazim.haplotypecaller.html", + "_/multiqc_report.html", + "_/samplesheet.csv" ] ], "meta": { "nf-test": "0.9.1", "nextflow": "24.10.0" }, - "timestamp": "2024-11-07T15:50:40.472097341" + "timestamp": "2024-11-13T14:24:24.556080575" }, - "annotate + vcfanno": { + "pipeline_variations - annotate + vcfanno": { "content": [ [ - - ], - [ - "NA24143/NA24143.bed", - "NA24143/NA24143.haplotypecaller.g.vcf.gz", - "NA24143/NA24143.haplotypecaller.g.vcf.gz.tbi", - "NA24143/reports/NA24143.haplotypecaller.bcftools_stats.txt", - "NA24149/NA24149.bed", - "NA24149/NA24149.haplotypecaller.g.vcf.gz", - "NA24149/NA24149.haplotypecaller.g.vcf.gz.tbi", - "NA24149/reports/NA24149.haplotypecaller.bcftools_stats.txt", - "NA24385/NA24385.bed", - "NA24385/NA24385.haplotypecaller.g.vcf.gz", - "NA24385/NA24385.haplotypecaller.g.vcf.gz.tbi", - "NA24385/reports/NA24385.haplotypecaller.bcftools_stats.txt", - "multiqc/multiqc_report.html", - "samplesheet.csv", - "test/Ashkenazim/Ashkenazim.haplotypecaller.bed", - "test/Ashkenazim/Ashkenazim.haplotypecaller.ped", - "test/Ashkenazim/Ashkenazim.haplotypecaller.vcf.gz", - "test/Ashkenazim/Ashkenazim.haplotypecaller.vcf.gz.tbi", - "test/Ashkenazim/reports/Ashkenazim.haplotypecaller.bcftools_stats.txt", - "test/Ashkenazim/reports/Ashkenazim.haplotypecaller.html" + "Ashkenazim/NA24143__/NA24143.bed", + "Ashkenazim/NA24143__/NA24143.haplotypecaller.bcftools_stats.txt", + "Ashkenazim/NA24143__/NA24143.haplotypecaller.g.vcf.gz", + "Ashkenazim/NA24143__/NA24143.haplotypecaller.g.vcf.gz.tbi", + "Ashkenazim/NA24149__/NA24149.bed", + "Ashkenazim/NA24149__/NA24149.haplotypecaller.bcftools_stats.txt", + "Ashkenazim/NA24149__/NA24149.haplotypecaller.g.vcf.gz", + "Ashkenazim/NA24149__/NA24149.haplotypecaller.g.vcf.gz.tbi", + "Ashkenazim/NA24385__/NA24385.bed", + "Ashkenazim/NA24385__/NA24385.haplotypecaller.bcftools_stats.txt", + "Ashkenazim/NA24385__/NA24385.haplotypecaller.g.vcf.gz", + "Ashkenazim/NA24385__/NA24385.haplotypecaller.g.vcf.gz.tbi", + "Ashkenazim/output__/Ashkenazim.haplotypecaller.bed", + "Ashkenazim/output__/Ashkenazim.haplotypecaller.ped", + "Ashkenazim/output__/Ashkenazim.haplotypecaller.vcf.gz", + "Ashkenazim/output__/Ashkenazim.haplotypecaller.vcf.gz.tbi", + "Ashkenazim/qc__/Ashkenazim.haplotypecaller.bcftools_stats.txt", + "Ashkenazim/qc__/Ashkenazim.haplotypecaller.html", + "_/multiqc_report.html", + "_/samplesheet.csv" ] ], "meta": { "nf-test": "0.9.1", "nextflow": "24.10.0" }, - "timestamp": "2024-11-07T15:48:54.662702263" + "timestamp": "2024-11-13T14:21:15.80188879" }, - "automap": { + "pipeline_variations - annotate": { "content": [ [ - - ], - [ - "NA24143/NA24143.bed", - "NA24143/NA24143.haplotypecaller.g.vcf.gz", - "NA24143/NA24143.haplotypecaller.g.vcf.gz.tbi", - "NA24143/reports/NA24143.haplotypecaller.bcftools_stats.txt", - "NA24149/NA24149.bed", - "NA24149/NA24149.haplotypecaller.g.vcf.gz", - "NA24149/NA24149.haplotypecaller.g.vcf.gz.tbi", - "NA24149/reports/NA24149.haplotypecaller.bcftools_stats.txt", - "NA24385/NA24385.bed", - "NA24385/NA24385.haplotypecaller.g.vcf.gz", - "NA24385/NA24385.haplotypecaller.g.vcf.gz.tbi", - "NA24385/reports/NA24385.haplotypecaller.bcftools_stats.txt", - "multiqc/multiqc_report.html", - "samplesheet.csv", - "test/Ashkenazim/Ashkenazim.haplotypecaller.bed", - "test/Ashkenazim/Ashkenazim.haplotypecaller.ped", - "test/Ashkenazim/Ashkenazim.haplotypecaller.vcf.gz", - "test/Ashkenazim/Ashkenazim.haplotypecaller.vcf.gz.tbi", - "test/Ashkenazim/automap/haplotypecaller/sample1/sample1.HomRegions.cmgg_bio.tsv", - "test/Ashkenazim/automap/haplotypecaller/sample1/sample1.HomRegions.pdf", - "test/Ashkenazim/automap/haplotypecaller/sample1/sample1.HomRegions.strict.cmgg_bio.tsv", - "test/Ashkenazim/automap/haplotypecaller/sample1/sample1.HomRegions.tsv", - "test/Ashkenazim/automap/haplotypecaller/sample2/sample2.HomRegions.cmgg_bio.tsv", - "test/Ashkenazim/automap/haplotypecaller/sample2/sample2.HomRegions.pdf", - "test/Ashkenazim/automap/haplotypecaller/sample2/sample2.HomRegions.strict.cmgg_bio.tsv", - "test/Ashkenazim/automap/haplotypecaller/sample2/sample2.HomRegions.tsv", - "test/Ashkenazim/automap/haplotypecaller/sample3/sample3.HomRegions.cmgg_bio.tsv", - "test/Ashkenazim/automap/haplotypecaller/sample3/sample3.HomRegions.pdf", - "test/Ashkenazim/automap/haplotypecaller/sample3/sample3.HomRegions.strict.cmgg_bio.tsv", - "test/Ashkenazim/automap/haplotypecaller/sample3/sample3.HomRegions.tsv", - "test/Ashkenazim/reports/Ashkenazim.haplotypecaller.bcftools_stats.txt", - "test/Ashkenazim/reports/Ashkenazim.haplotypecaller.html" + "Ashkenazim/NA24143__/NA24143.bed", + "Ashkenazim/NA24143__/NA24143.haplotypecaller.bcftools_stats.txt", + "Ashkenazim/NA24143__/NA24143.haplotypecaller.g.vcf.gz", + "Ashkenazim/NA24143__/NA24143.haplotypecaller.g.vcf.gz.tbi", + "Ashkenazim/NA24149__/NA24149.bed", + "Ashkenazim/NA24149__/NA24149.haplotypecaller.bcftools_stats.txt", + "Ashkenazim/NA24149__/NA24149.haplotypecaller.g.vcf.gz", + "Ashkenazim/NA24149__/NA24149.haplotypecaller.g.vcf.gz.tbi", + "Ashkenazim/NA24385__/NA24385.bed", + "Ashkenazim/NA24385__/NA24385.haplotypecaller.bcftools_stats.txt", + "Ashkenazim/NA24385__/NA24385.haplotypecaller.g.vcf.gz", + "Ashkenazim/NA24385__/NA24385.haplotypecaller.g.vcf.gz.tbi", + "Ashkenazim/output__/Ashkenazim.haplotypecaller.bed", + "Ashkenazim/output__/Ashkenazim.haplotypecaller.ped", + "Ashkenazim/output__/Ashkenazim.haplotypecaller.vcf.gz", + "Ashkenazim/output__/Ashkenazim.haplotypecaller.vcf.gz.tbi", + "Ashkenazim/qc__/Ashkenazim.haplotypecaller.bcftools_stats.txt", + "Ashkenazim/qc__/Ashkenazim.haplotypecaller.html", + "_/multiqc_report.html", + "_/samplesheet.csv" ] ], "meta": { "nf-test": "0.9.1", "nextflow": "24.10.0" }, - "timestamp": "2024-11-07T15:52:36.347896098" + "timestamp": "2024-11-13T14:17:45.975261786" }, - "only_merge": { + "pipeline_variations - only_call": { "content": [ [ - - ], - [ - "NA24143/NA24143.bed", - "NA24143/NA24143.haplotypecaller.g.vcf.gz", - "NA24143/NA24143.haplotypecaller.g.vcf.gz.tbi", - "NA24143/reports/NA24143.haplotypecaller.bcftools_stats.txt", - "NA24149/NA24149.bed", - "NA24149/NA24149.haplotypecaller.g.vcf.gz", - "NA24149/NA24149.haplotypecaller.g.vcf.gz.tbi", - "NA24149/reports/NA24149.haplotypecaller.bcftools_stats.txt", - "NA24385/NA24385.bed", - "NA24385/NA24385.haplotypecaller.g.vcf.gz", - "NA24385/NA24385.haplotypecaller.g.vcf.gz.tbi", - "NA24385/reports/NA24385.haplotypecaller.bcftools_stats.txt", - "multiqc/multiqc_report.html", - "samplesheet.csv", - "test/Ashkenazim/Ashkenazim_haplotypecaller_genomicsdb" + "Ashkenazim/NA24143__/NA24143.bed", + "Ashkenazim/NA24143__/NA24143.haplotypecaller.bcftools_stats.txt", + "Ashkenazim/NA24143__/NA24143.haplotypecaller.g.vcf.gz", + "Ashkenazim/NA24143__/NA24143.haplotypecaller.g.vcf.gz.tbi", + "Ashkenazim/NA24149__/NA24149.bed", + "Ashkenazim/NA24149__/NA24149.haplotypecaller.bcftools_stats.txt", + "Ashkenazim/NA24149__/NA24149.haplotypecaller.g.vcf.gz", + "Ashkenazim/NA24149__/NA24149.haplotypecaller.g.vcf.gz.tbi", + "Ashkenazim/NA24385__/NA24385.bed", + "Ashkenazim/NA24385__/NA24385.haplotypecaller.bcftools_stats.txt", + "Ashkenazim/NA24385__/NA24385.haplotypecaller.g.vcf.gz", + "Ashkenazim/NA24385__/NA24385.haplotypecaller.g.vcf.gz.tbi", + "_/multiqc_report.html", + "_/samplesheet.csv" ] ], "meta": { "nf-test": "0.9.1", "nextflow": "24.10.0" }, - "timestamp": "2024-11-07T15:51:28.398537842" + "timestamp": "2024-11-13T14:26:32.219983438" }, - "annotate": { + "pipeline_variations - automap": { "content": [ [ - - ], - [ - "NA24143/NA24143.bed", - "NA24143/NA24143.haplotypecaller.g.vcf.gz", - "NA24143/NA24143.haplotypecaller.g.vcf.gz.tbi", - "NA24143/reports/NA24143.haplotypecaller.bcftools_stats.txt", - "NA24149/NA24149.bed", - "NA24149/NA24149.haplotypecaller.g.vcf.gz", - "NA24149/NA24149.haplotypecaller.g.vcf.gz.tbi", - "NA24149/reports/NA24149.haplotypecaller.bcftools_stats.txt", - "NA24385/NA24385.bed", - "NA24385/NA24385.haplotypecaller.g.vcf.gz", - "NA24385/NA24385.haplotypecaller.g.vcf.gz.tbi", - "NA24385/reports/NA24385.haplotypecaller.bcftools_stats.txt", - "multiqc/multiqc_report.html", - "samplesheet.csv", - "test/Ashkenazim/Ashkenazim.haplotypecaller.bed", - "test/Ashkenazim/Ashkenazim.haplotypecaller.ped", - "test/Ashkenazim/Ashkenazim.haplotypecaller.vcf.gz", - "test/Ashkenazim/Ashkenazim.haplotypecaller.vcf.gz.tbi", - "test/Ashkenazim/reports/Ashkenazim.haplotypecaller.bcftools_stats.txt", - "test/Ashkenazim/reports/Ashkenazim.haplotypecaller.html" + "Ashkenazim/NA24143__/NA24143.bed", + "Ashkenazim/NA24143__/NA24143.haplotypecaller.bcftools_stats.txt", + "Ashkenazim/NA24143__/NA24143.haplotypecaller.g.vcf.gz", + "Ashkenazim/NA24143__/NA24143.haplotypecaller.g.vcf.gz.tbi", + "Ashkenazim/NA24149__/NA24149.bed", + "Ashkenazim/NA24149__/NA24149.haplotypecaller.bcftools_stats.txt", + "Ashkenazim/NA24149__/NA24149.haplotypecaller.g.vcf.gz", + "Ashkenazim/NA24149__/NA24149.haplotypecaller.g.vcf.gz.tbi", + "Ashkenazim/NA24385__/NA24385.bed", + "Ashkenazim/NA24385__/NA24385.haplotypecaller.bcftools_stats.txt", + "Ashkenazim/NA24385__/NA24385.haplotypecaller.g.vcf.gz", + "Ashkenazim/NA24385__/NA24385.haplotypecaller.g.vcf.gz.tbi", + "Ashkenazim/output__/Ashkenazim.haplotypecaller.bed", + "Ashkenazim/output__/Ashkenazim.haplotypecaller.ped", + "Ashkenazim/output__/Ashkenazim.haplotypecaller.vcf.gz", + "Ashkenazim/output__/Ashkenazim.haplotypecaller.vcf.gz.tbi", + "Ashkenazim/output__/automap/haplotypecaller/sample1/sample1.HomRegions.cmgg_bio.tsv", + "Ashkenazim/output__/automap/haplotypecaller/sample1/sample1.HomRegions.pdf", + "Ashkenazim/output__/automap/haplotypecaller/sample1/sample1.HomRegions.strict.cmgg_bio.tsv", + "Ashkenazim/output__/automap/haplotypecaller/sample1/sample1.HomRegions.tsv", + "Ashkenazim/output__/automap/haplotypecaller/sample2/sample2.HomRegions.cmgg_bio.tsv", + "Ashkenazim/output__/automap/haplotypecaller/sample2/sample2.HomRegions.pdf", + "Ashkenazim/output__/automap/haplotypecaller/sample2/sample2.HomRegions.strict.cmgg_bio.tsv", + "Ashkenazim/output__/automap/haplotypecaller/sample2/sample2.HomRegions.tsv", + "Ashkenazim/output__/automap/haplotypecaller/sample3/sample3.HomRegions.cmgg_bio.tsv", + "Ashkenazim/output__/automap/haplotypecaller/sample3/sample3.HomRegions.pdf", + "Ashkenazim/output__/automap/haplotypecaller/sample3/sample3.HomRegions.strict.cmgg_bio.tsv", + "Ashkenazim/output__/automap/haplotypecaller/sample3/sample3.HomRegions.tsv", + "Ashkenazim/qc__/Ashkenazim.haplotypecaller.bcftools_stats.txt", + "Ashkenazim/qc__/Ashkenazim.haplotypecaller.html", + "_/multiqc_report.html", + "_/samplesheet.csv" ] ], "meta": { "nf-test": "0.9.1", "nextflow": "24.10.0" }, - "timestamp": "2024-11-07T15:47:49.203214292" + "timestamp": "2024-11-13T14:31:35.104677632" } } \ No newline at end of file diff --git a/tests/pipeline/variations2/main.nf.test b/tests/pipeline/variations2/main.nf.test index 58ad40a6..5070bc13 100644 --- a/tests/pipeline/variations2/main.nf.test +++ b/tests/pipeline/variations2/main.nf.test @@ -20,14 +20,19 @@ nextflow_pipeline { then { assertAll( { assert workflow.success }, + { assert !workflow.stdout }, { assert snapshot( - workflow.stdout, path("${outputDir}") .list() - .findAll { !it.toString().endsWith("pipeline_info") } .collect { getRecursiveFileNames(it, "${outputDir}") } .flatten() - ).match("normalize") } + .findAll { + !(it.contains("/execution_") || it.contains("/params_") || it.contains("/pipeline_")) + } + .collect { + it.replace(getDynamicOutputName(), "_") + } + ).match() } ) } @@ -45,14 +50,19 @@ nextflow_pipeline { then { assertAll( { assert workflow.success }, + { assert !workflow.stdout }, { assert snapshot( - workflow.stdout, path("${outputDir}") .list() - .findAll { !it.toString().endsWith("pipeline_info") } .collect { getRecursiveFileNames(it, "${outputDir}") } .flatten() - ).match("updio") } + .findAll { + !(it.contains("/execution_") || it.contains("/params_") || it.contains("/pipeline_")) + } + .collect { + it.replace(getDynamicOutputName(), "_") + } + ).match() } ) } @@ -70,14 +80,19 @@ nextflow_pipeline { then { assertAll( { assert workflow.success }, + { assert !workflow.stdout }, { assert snapshot( - workflow.stdout, path("${outputDir}") .list() - .findAll { !it.toString().endsWith("pipeline_info") } .collect { getRecursiveFileNames(it, "${outputDir}") } .flatten() - ).match("gemini") } + .findAll { + !(it.contains("/execution_") || it.contains("/params_") || it.contains("/pipeline_")) + } + .collect { + it.replace(getDynamicOutputName(), "_") + } + ).match() } ) } @@ -95,14 +110,19 @@ nextflow_pipeline { then { assertAll( { assert workflow.success }, + { assert !workflow.stdout }, { assert snapshot( - workflow.stdout, path("${outputDir}") .list() - .findAll { !it.toString().endsWith("pipeline_info") } .collect { getRecursiveFileNames(it, "${outputDir}") } .flatten() - ).match("validate") } + .findAll { + !(it.contains("/execution_") || it.contains("/params_") || it.contains("/pipeline_")) + } + .collect { + it.replace(getDynamicOutputName(), "_") + } + ).match() } ) } @@ -120,14 +140,19 @@ nextflow_pipeline { then { assertAll( { assert workflow.success }, + { assert !workflow.stdout }, { assert snapshot( - workflow.stdout, path("${outputDir}") .list() - .findAll { !it.toString().endsWith("pipeline_info") } .collect { getRecursiveFileNames(it, "${outputDir}") } .flatten() - ).match("add_ped") } + .findAll { + !(it.contains("/execution_") || it.contains("/params_") || it.contains("/pipeline_")) + } + .collect { + it.replace(getDynamicOutputName(), "_") + } + ).match() } ) } @@ -141,3 +166,9 @@ def getRecursiveFileNames(fileOrDir, outputDir) { } return fileOrDir.toString().replace("${outputDir}/", "") } + +def getDynamicOutputName() { + def Map nfcoreYaml = new groovy.yaml.YamlSlurper().parseText(file(".nf-core.yml").text) + def date = new java.text.SimpleDateFormat("yyyy_MM_dd").format(new Date()) + return "v${nfcoreYaml.template.version.replace('.', '_')}_${date}" as String +} \ No newline at end of file diff --git a/tests/pipeline/variations2/main.nf.test.snap b/tests/pipeline/variations2/main.nf.test.snap index 8983c0cd..e0053c6b 100644 --- a/tests/pipeline/variations2/main.nf.test.snap +++ b/tests/pipeline/variations2/main.nf.test.snap @@ -1,230 +1,215 @@ { - "gemini": { + "pipeline_variations - add_ped": { "content": [ [ - - ], - [ - "NA24143/NA24143.bed", - "NA24143/NA24143.haplotypecaller.g.vcf.gz", - "NA24143/NA24143.haplotypecaller.g.vcf.gz.tbi", - "NA24143/reports/NA24143.haplotypecaller.bcftools_stats.txt", - "NA24149/NA24149.bed", - "NA24149/NA24149.haplotypecaller.g.vcf.gz", - "NA24149/NA24149.haplotypecaller.g.vcf.gz.tbi", - "NA24149/reports/NA24149.haplotypecaller.bcftools_stats.txt", - "NA24385/NA24385.bed", - "NA24385/NA24385.haplotypecaller.g.vcf.gz", - "NA24385/NA24385.haplotypecaller.g.vcf.gz.tbi", - "NA24385/reports/NA24385.haplotypecaller.bcftools_stats.txt", - "multiqc/multiqc_report.html", - "samplesheet.csv", - "test/Ashkenazim/Ashkenazim.haplotypecaller.bed", - "test/Ashkenazim/Ashkenazim.haplotypecaller.db", - "test/Ashkenazim/Ashkenazim.haplotypecaller.ped", - "test/Ashkenazim/Ashkenazim.haplotypecaller.vcf.gz", - "test/Ashkenazim/Ashkenazim.haplotypecaller.vcf.gz.tbi", - "test/Ashkenazim/reports/Ashkenazim.haplotypecaller.bcftools_stats.txt", - "test/Ashkenazim/reports/Ashkenazim.haplotypecaller.html" + "Ashkenazim/NA24143__/NA24143.bed", + "Ashkenazim/NA24143__/NA24143.haplotypecaller.bcftools_stats.txt", + "Ashkenazim/NA24143__/NA24143.haplotypecaller.g.vcf.gz", + "Ashkenazim/NA24143__/NA24143.haplotypecaller.g.vcf.gz.tbi", + "Ashkenazim/NA24149__/NA24149.bed", + "Ashkenazim/NA24149__/NA24149.haplotypecaller.bcftools_stats.txt", + "Ashkenazim/NA24149__/NA24149.haplotypecaller.g.vcf.gz", + "Ashkenazim/NA24149__/NA24149.haplotypecaller.g.vcf.gz.tbi", + "Ashkenazim/NA24385__/NA24385.bed", + "Ashkenazim/NA24385__/NA24385.haplotypecaller.bcftools_stats.txt", + "Ashkenazim/NA24385__/NA24385.haplotypecaller.g.vcf.gz", + "Ashkenazim/NA24385__/NA24385.haplotypecaller.g.vcf.gz.tbi", + "Ashkenazim/output__/Ashkenazim.haplotypecaller.bed", + "Ashkenazim/output__/Ashkenazim.haplotypecaller.ped", + "Ashkenazim/output__/Ashkenazim.haplotypecaller.vcf.gz", + "Ashkenazim/output__/Ashkenazim.haplotypecaller.vcf.gz.tbi", + "Ashkenazim/qc__/Ashkenazim.haplotypecaller.bcftools_stats.txt", + "Ashkenazim/qc__/Ashkenazim.haplotypecaller.html", + "_/multiqc_report.html", + "_/samplesheet.csv" ] ], "meta": { "nf-test": "0.9.1", "nextflow": "24.10.0" }, - "timestamp": "2024-11-07T15:55:45.617425912" + "timestamp": "2024-11-13T14:48:10.189725508" }, - "normalize": { + "pipeline_variations - normalize": { "content": [ [ - - ], - [ - "NA24143/NA24143.bed", - "NA24143/NA24143.haplotypecaller.g.vcf.gz", - "NA24143/NA24143.haplotypecaller.g.vcf.gz.tbi", - "NA24143/reports/NA24143.haplotypecaller.bcftools_stats.txt", - "NA24149/NA24149.bed", - "NA24149/NA24149.haplotypecaller.g.vcf.gz", - "NA24149/NA24149.haplotypecaller.g.vcf.gz.tbi", - "NA24149/reports/NA24149.haplotypecaller.bcftools_stats.txt", - "NA24385/NA24385.bed", - "NA24385/NA24385.haplotypecaller.g.vcf.gz", - "NA24385/NA24385.haplotypecaller.g.vcf.gz.tbi", - "NA24385/reports/NA24385.haplotypecaller.bcftools_stats.txt", - "multiqc/multiqc_report.html", - "samplesheet.csv", - "test/Ashkenazim/Ashkenazim.haplotypecaller.bed", - "test/Ashkenazim/Ashkenazim.haplotypecaller.ped", - "test/Ashkenazim/Ashkenazim.haplotypecaller.vcf.gz", - "test/Ashkenazim/Ashkenazim.haplotypecaller.vcf.gz.tbi", - "test/Ashkenazim/reports/Ashkenazim.haplotypecaller.bcftools_stats.txt", - "test/Ashkenazim/reports/Ashkenazim.haplotypecaller.html" + "Ashkenazim/NA24143__/NA24143.bed", + "Ashkenazim/NA24143__/NA24143.haplotypecaller.bcftools_stats.txt", + "Ashkenazim/NA24143__/NA24143.haplotypecaller.g.vcf.gz", + "Ashkenazim/NA24143__/NA24143.haplotypecaller.g.vcf.gz.tbi", + "Ashkenazim/NA24149__/NA24149.bed", + "Ashkenazim/NA24149__/NA24149.haplotypecaller.bcftools_stats.txt", + "Ashkenazim/NA24149__/NA24149.haplotypecaller.g.vcf.gz", + "Ashkenazim/NA24149__/NA24149.haplotypecaller.g.vcf.gz.tbi", + "Ashkenazim/NA24385__/NA24385.bed", + "Ashkenazim/NA24385__/NA24385.haplotypecaller.bcftools_stats.txt", + "Ashkenazim/NA24385__/NA24385.haplotypecaller.g.vcf.gz", + "Ashkenazim/NA24385__/NA24385.haplotypecaller.g.vcf.gz.tbi", + "Ashkenazim/output__/Ashkenazim.haplotypecaller.bed", + "Ashkenazim/output__/Ashkenazim.haplotypecaller.ped", + "Ashkenazim/output__/Ashkenazim.haplotypecaller.vcf.gz", + "Ashkenazim/output__/Ashkenazim.haplotypecaller.vcf.gz.tbi", + "Ashkenazim/qc__/Ashkenazim.haplotypecaller.bcftools_stats.txt", + "Ashkenazim/qc__/Ashkenazim.haplotypecaller.html", + "_/multiqc_report.html", + "_/samplesheet.csv" ] ], "meta": { "nf-test": "0.9.1", "nextflow": "24.10.0" }, - "timestamp": "2024-11-07T15:53:40.939481984" + "timestamp": "2024-11-13T14:34:50.228561252" }, - "updio": { + "pipeline_variations - updio": { "content": [ [ - - ], - [ - "NA24143/NA24143.bed", - "NA24143/NA24143.haplotypecaller.g.vcf.gz", - "NA24143/NA24143.haplotypecaller.g.vcf.gz.tbi", - "NA24143/reports/NA24143.haplotypecaller.bcftools_stats.txt", - "NA24149/NA24149.bed", - "NA24149/NA24149.haplotypecaller.g.vcf.gz", - "NA24149/NA24149.haplotypecaller.g.vcf.gz.tbi", - "NA24149/reports/NA24149.haplotypecaller.bcftools_stats.txt", - "NA24385/NA24385.bed", - "NA24385/NA24385.haplotypecaller.g.vcf.gz", - "NA24385/NA24385.haplotypecaller.g.vcf.gz.tbi", - "NA24385/reports/NA24385.haplotypecaller.bcftools_stats.txt", - "multiqc/multiqc_report.html", - "samplesheet.csv", - "test/Ashkenazim/Ashkenazim.haplotypecaller.bed", - "test/Ashkenazim/Ashkenazim.haplotypecaller.ped", - "test/Ashkenazim/Ashkenazim.haplotypecaller.vcf.gz", - "test/Ashkenazim/Ashkenazim.haplotypecaller.vcf.gz.tbi", - "test/Ashkenazim/reports/Ashkenazim.haplotypecaller.bcftools_stats.txt", - "test/Ashkenazim/reports/Ashkenazim.haplotypecaller.html" + "Ashkenazim/NA24143__/NA24143.bed", + "Ashkenazim/NA24143__/NA24143.haplotypecaller.bcftools_stats.txt", + "Ashkenazim/NA24143__/NA24143.haplotypecaller.g.vcf.gz", + "Ashkenazim/NA24143__/NA24143.haplotypecaller.g.vcf.gz.tbi", + "Ashkenazim/NA24149__/NA24149.bed", + "Ashkenazim/NA24149__/NA24149.haplotypecaller.bcftools_stats.txt", + "Ashkenazim/NA24149__/NA24149.haplotypecaller.g.vcf.gz", + "Ashkenazim/NA24149__/NA24149.haplotypecaller.g.vcf.gz.tbi", + "Ashkenazim/NA24385__/NA24385.bed", + "Ashkenazim/NA24385__/NA24385.haplotypecaller.bcftools_stats.txt", + "Ashkenazim/NA24385__/NA24385.haplotypecaller.g.vcf.gz", + "Ashkenazim/NA24385__/NA24385.haplotypecaller.g.vcf.gz.tbi", + "Ashkenazim/output__/Ashkenazim.haplotypecaller.bed", + "Ashkenazim/output__/Ashkenazim.haplotypecaller.ped", + "Ashkenazim/output__/Ashkenazim.haplotypecaller.vcf.gz", + "Ashkenazim/output__/Ashkenazim.haplotypecaller.vcf.gz.tbi", + "Ashkenazim/qc__/Ashkenazim.haplotypecaller.bcftools_stats.txt", + "Ashkenazim/qc__/Ashkenazim.haplotypecaller.html", + "_/multiqc_report.html", + "_/samplesheet.csv" ] ], "meta": { "nf-test": "0.9.1", "nextflow": "24.10.0" }, - "timestamp": "2024-11-07T15:54:44.363989965" + "timestamp": "2024-11-13T14:38:05.475938734" }, - "add_ped": { + "pipeline_variations - gemini": { "content": [ [ - - ], - [ - "NA24143/NA24143.bed", - "NA24143/NA24143.haplotypecaller.g.vcf.gz", - "NA24143/NA24143.haplotypecaller.g.vcf.gz.tbi", - "NA24143/reports/NA24143.haplotypecaller.bcftools_stats.txt", - "NA24149/NA24149.bed", - "NA24149/NA24149.haplotypecaller.g.vcf.gz", - "NA24149/NA24149.haplotypecaller.g.vcf.gz.tbi", - "NA24149/reports/NA24149.haplotypecaller.bcftools_stats.txt", - "NA24385/NA24385.bed", - "NA24385/NA24385.haplotypecaller.g.vcf.gz", - "NA24385/NA24385.haplotypecaller.g.vcf.gz.tbi", - "NA24385/reports/NA24385.haplotypecaller.bcftools_stats.txt", - "multiqc/multiqc_report.html", - "samplesheet.csv", - "test/Ashkenazim/Ashkenazim.haplotypecaller.bed", - "test/Ashkenazim/Ashkenazim.haplotypecaller.ped", - "test/Ashkenazim/Ashkenazim.haplotypecaller.vcf.gz", - "test/Ashkenazim/Ashkenazim.haplotypecaller.vcf.gz.tbi", - "test/Ashkenazim/reports/Ashkenazim.haplotypecaller.bcftools_stats.txt", - "test/Ashkenazim/reports/Ashkenazim.haplotypecaller.html" + "Ashkenazim/NA24143__/NA24143.bed", + "Ashkenazim/NA24143__/NA24143.haplotypecaller.bcftools_stats.txt", + "Ashkenazim/NA24143__/NA24143.haplotypecaller.g.vcf.gz", + "Ashkenazim/NA24143__/NA24143.haplotypecaller.g.vcf.gz.tbi", + "Ashkenazim/NA24149__/NA24149.bed", + "Ashkenazim/NA24149__/NA24149.haplotypecaller.bcftools_stats.txt", + "Ashkenazim/NA24149__/NA24149.haplotypecaller.g.vcf.gz", + "Ashkenazim/NA24149__/NA24149.haplotypecaller.g.vcf.gz.tbi", + "Ashkenazim/NA24385__/NA24385.bed", + "Ashkenazim/NA24385__/NA24385.haplotypecaller.bcftools_stats.txt", + "Ashkenazim/NA24385__/NA24385.haplotypecaller.g.vcf.gz", + "Ashkenazim/NA24385__/NA24385.haplotypecaller.g.vcf.gz.tbi", + "Ashkenazim/output__/Ashkenazim.haplotypecaller.bed", + "Ashkenazim/output__/Ashkenazim.haplotypecaller.db", + "Ashkenazim/output__/Ashkenazim.haplotypecaller.ped", + "Ashkenazim/output__/Ashkenazim.haplotypecaller.vcf.gz", + "Ashkenazim/output__/Ashkenazim.haplotypecaller.vcf.gz.tbi", + "Ashkenazim/qc__/Ashkenazim.haplotypecaller.bcftools_stats.txt", + "Ashkenazim/qc__/Ashkenazim.haplotypecaller.html", + "_/multiqc_report.html", + "_/samplesheet.csv" ] ], "meta": { "nf-test": "0.9.1", "nextflow": "24.10.0" }, - "timestamp": "2024-11-07T15:58:01.026718708" + "timestamp": "2024-11-13T14:41:11.213707091" }, - "validate": { + "pipeline_variations - validate": { "content": [ [ - - ], - [ - "NA24143/NA24143.bed", - "NA24143/NA24143.haplotypecaller.g.vcf.gz", - "NA24143/NA24143.haplotypecaller.g.vcf.gz.tbi", - "NA24143/reports/NA24143.haplotypecaller.bcftools_stats.txt", - "NA24143/validation/haplotypecaller/NA24143.fn.vcf.gz", - "NA24143/validation/haplotypecaller/NA24143.fn.vcf.gz.tbi", - "NA24143/validation/haplotypecaller/NA24143.fp.vcf.gz", - "NA24143/validation/haplotypecaller/NA24143.fp.vcf.gz.tbi", - "NA24143/validation/haplotypecaller/NA24143.non_snp.png", - "NA24143/validation/haplotypecaller/NA24143.non_snp.svg", - "NA24143/validation/haplotypecaller/NA24143.non_snp_roc.tsv.gz", - "NA24143/validation/haplotypecaller/NA24143.phasing.txt", - "NA24143/validation/haplotypecaller/NA24143.snp.png", - "NA24143/validation/haplotypecaller/NA24143.snp.svg", - "NA24143/validation/haplotypecaller/NA24143.snp_roc.tsv.gz", - "NA24143/validation/haplotypecaller/NA24143.summary.txt", - "NA24143/validation/haplotypecaller/NA24143.tp-baseline.vcf.gz", - "NA24143/validation/haplotypecaller/NA24143.tp-baseline.vcf.gz.tbi", - "NA24143/validation/haplotypecaller/NA24143.tp.vcf.gz", - "NA24143/validation/haplotypecaller/NA24143.tp.vcf.gz.tbi", - "NA24143/validation/haplotypecaller/NA24143.weighted.png", - "NA24143/validation/haplotypecaller/NA24143.weighted.svg", - "NA24143/validation/haplotypecaller/NA24143.weighted_roc.tsv.gz", - "NA24149/NA24149.bed", - "NA24149/NA24149.haplotypecaller.g.vcf.gz", - "NA24149/NA24149.haplotypecaller.g.vcf.gz.tbi", - "NA24149/reports/NA24149.haplotypecaller.bcftools_stats.txt", - "NA24149/validation/haplotypecaller/NA24149.fn.vcf.gz", - "NA24149/validation/haplotypecaller/NA24149.fn.vcf.gz.tbi", - "NA24149/validation/haplotypecaller/NA24149.fp.vcf.gz", - "NA24149/validation/haplotypecaller/NA24149.fp.vcf.gz.tbi", - "NA24149/validation/haplotypecaller/NA24149.non_snp.png", - "NA24149/validation/haplotypecaller/NA24149.non_snp.svg", - "NA24149/validation/haplotypecaller/NA24149.non_snp_roc.tsv.gz", - "NA24149/validation/haplotypecaller/NA24149.phasing.txt", - "NA24149/validation/haplotypecaller/NA24149.snp.png", - "NA24149/validation/haplotypecaller/NA24149.snp.svg", - "NA24149/validation/haplotypecaller/NA24149.snp_roc.tsv.gz", - "NA24149/validation/haplotypecaller/NA24149.summary.txt", - "NA24149/validation/haplotypecaller/NA24149.tp-baseline.vcf.gz", - "NA24149/validation/haplotypecaller/NA24149.tp-baseline.vcf.gz.tbi", - "NA24149/validation/haplotypecaller/NA24149.tp.vcf.gz", - "NA24149/validation/haplotypecaller/NA24149.tp.vcf.gz.tbi", - "NA24149/validation/haplotypecaller/NA24149.weighted.png", - "NA24149/validation/haplotypecaller/NA24149.weighted.svg", - "NA24149/validation/haplotypecaller/NA24149.weighted_roc.tsv.gz", - "NA24385/NA24385.bed", - "NA24385/NA24385.haplotypecaller.g.vcf.gz", - "NA24385/NA24385.haplotypecaller.g.vcf.gz.tbi", - "NA24385/reports/NA24385.haplotypecaller.bcftools_stats.txt", - "NA24385/validation/haplotypecaller/NA24385.fn.vcf.gz", - "NA24385/validation/haplotypecaller/NA24385.fn.vcf.gz.tbi", - "NA24385/validation/haplotypecaller/NA24385.fp.vcf.gz", - "NA24385/validation/haplotypecaller/NA24385.fp.vcf.gz.tbi", - "NA24385/validation/haplotypecaller/NA24385.non_snp.png", - "NA24385/validation/haplotypecaller/NA24385.non_snp.svg", - "NA24385/validation/haplotypecaller/NA24385.non_snp_roc.tsv.gz", - "NA24385/validation/haplotypecaller/NA24385.phasing.txt", - "NA24385/validation/haplotypecaller/NA24385.snp.png", - "NA24385/validation/haplotypecaller/NA24385.snp.svg", - "NA24385/validation/haplotypecaller/NA24385.snp_roc.tsv.gz", - "NA24385/validation/haplotypecaller/NA24385.summary.txt", - "NA24385/validation/haplotypecaller/NA24385.tp-baseline.vcf.gz", - "NA24385/validation/haplotypecaller/NA24385.tp-baseline.vcf.gz.tbi", - "NA24385/validation/haplotypecaller/NA24385.tp.vcf.gz", - "NA24385/validation/haplotypecaller/NA24385.tp.vcf.gz.tbi", - "NA24385/validation/haplotypecaller/NA24385.weighted.png", - "NA24385/validation/haplotypecaller/NA24385.weighted.svg", - "NA24385/validation/haplotypecaller/NA24385.weighted_roc.tsv.gz", - "multiqc/multiqc_report.html", - "samplesheet.csv", - "test/Ashkenazim/Ashkenazim.haplotypecaller.bed", - "test/Ashkenazim/Ashkenazim.haplotypecaller.ped", - "test/Ashkenazim/Ashkenazim.haplotypecaller.vcf.gz", - "test/Ashkenazim/Ashkenazim.haplotypecaller.vcf.gz.tbi", - "test/Ashkenazim/reports/Ashkenazim.haplotypecaller.bcftools_stats.txt", - "test/Ashkenazim/reports/Ashkenazim.haplotypecaller.html" + "Ashkenazim/NA24143__/NA24143.bed", + "Ashkenazim/NA24143__/NA24143.haplotypecaller.bcftools_stats.txt", + "Ashkenazim/NA24143__/NA24143.haplotypecaller.g.vcf.gz", + "Ashkenazim/NA24143__/NA24143.haplotypecaller.g.vcf.gz.tbi", + "Ashkenazim/NA24143__/validation/haplotypecaller/NA24143.fn.vcf.gz", + "Ashkenazim/NA24143__/validation/haplotypecaller/NA24143.fn.vcf.gz.tbi", + "Ashkenazim/NA24143__/validation/haplotypecaller/NA24143.fp.vcf.gz", + "Ashkenazim/NA24143__/validation/haplotypecaller/NA24143.fp.vcf.gz.tbi", + "Ashkenazim/NA24143__/validation/haplotypecaller/NA24143.non_snp.png", + "Ashkenazim/NA24143__/validation/haplotypecaller/NA24143.non_snp.svg", + "Ashkenazim/NA24143__/validation/haplotypecaller/NA24143.non_snp_roc.tsv.gz", + "Ashkenazim/NA24143__/validation/haplotypecaller/NA24143.phasing.txt", + "Ashkenazim/NA24143__/validation/haplotypecaller/NA24143.snp.png", + "Ashkenazim/NA24143__/validation/haplotypecaller/NA24143.snp.svg", + "Ashkenazim/NA24143__/validation/haplotypecaller/NA24143.snp_roc.tsv.gz", + "Ashkenazim/NA24143__/validation/haplotypecaller/NA24143.summary.txt", + "Ashkenazim/NA24143__/validation/haplotypecaller/NA24143.tp-baseline.vcf.gz", + "Ashkenazim/NA24143__/validation/haplotypecaller/NA24143.tp-baseline.vcf.gz.tbi", + "Ashkenazim/NA24143__/validation/haplotypecaller/NA24143.tp.vcf.gz", + "Ashkenazim/NA24143__/validation/haplotypecaller/NA24143.tp.vcf.gz.tbi", + "Ashkenazim/NA24143__/validation/haplotypecaller/NA24143.weighted.png", + "Ashkenazim/NA24143__/validation/haplotypecaller/NA24143.weighted.svg", + "Ashkenazim/NA24143__/validation/haplotypecaller/NA24143.weighted_roc.tsv.gz", + "Ashkenazim/NA24149__/NA24149.bed", + "Ashkenazim/NA24149__/NA24149.haplotypecaller.bcftools_stats.txt", + "Ashkenazim/NA24149__/NA24149.haplotypecaller.g.vcf.gz", + "Ashkenazim/NA24149__/NA24149.haplotypecaller.g.vcf.gz.tbi", + "Ashkenazim/NA24149__/validation/haplotypecaller/NA24149.fn.vcf.gz", + "Ashkenazim/NA24149__/validation/haplotypecaller/NA24149.fn.vcf.gz.tbi", + "Ashkenazim/NA24149__/validation/haplotypecaller/NA24149.fp.vcf.gz", + "Ashkenazim/NA24149__/validation/haplotypecaller/NA24149.fp.vcf.gz.tbi", + "Ashkenazim/NA24149__/validation/haplotypecaller/NA24149.non_snp.png", + "Ashkenazim/NA24149__/validation/haplotypecaller/NA24149.non_snp.svg", + "Ashkenazim/NA24149__/validation/haplotypecaller/NA24149.non_snp_roc.tsv.gz", + "Ashkenazim/NA24149__/validation/haplotypecaller/NA24149.phasing.txt", + "Ashkenazim/NA24149__/validation/haplotypecaller/NA24149.snp.png", + "Ashkenazim/NA24149__/validation/haplotypecaller/NA24149.snp.svg", + "Ashkenazim/NA24149__/validation/haplotypecaller/NA24149.snp_roc.tsv.gz", + "Ashkenazim/NA24149__/validation/haplotypecaller/NA24149.summary.txt", + "Ashkenazim/NA24149__/validation/haplotypecaller/NA24149.tp-baseline.vcf.gz", + "Ashkenazim/NA24149__/validation/haplotypecaller/NA24149.tp-baseline.vcf.gz.tbi", + "Ashkenazim/NA24149__/validation/haplotypecaller/NA24149.tp.vcf.gz", + "Ashkenazim/NA24149__/validation/haplotypecaller/NA24149.tp.vcf.gz.tbi", + "Ashkenazim/NA24149__/validation/haplotypecaller/NA24149.weighted.png", + "Ashkenazim/NA24149__/validation/haplotypecaller/NA24149.weighted.svg", + "Ashkenazim/NA24149__/validation/haplotypecaller/NA24149.weighted_roc.tsv.gz", + "Ashkenazim/NA24385__/NA24385.bed", + "Ashkenazim/NA24385__/NA24385.haplotypecaller.bcftools_stats.txt", + "Ashkenazim/NA24385__/NA24385.haplotypecaller.g.vcf.gz", + "Ashkenazim/NA24385__/NA24385.haplotypecaller.g.vcf.gz.tbi", + "Ashkenazim/NA24385__/validation/haplotypecaller/NA24385.fn.vcf.gz", + "Ashkenazim/NA24385__/validation/haplotypecaller/NA24385.fn.vcf.gz.tbi", + "Ashkenazim/NA24385__/validation/haplotypecaller/NA24385.fp.vcf.gz", + "Ashkenazim/NA24385__/validation/haplotypecaller/NA24385.fp.vcf.gz.tbi", + "Ashkenazim/NA24385__/validation/haplotypecaller/NA24385.non_snp.png", + "Ashkenazim/NA24385__/validation/haplotypecaller/NA24385.non_snp.svg", + "Ashkenazim/NA24385__/validation/haplotypecaller/NA24385.non_snp_roc.tsv.gz", + "Ashkenazim/NA24385__/validation/haplotypecaller/NA24385.phasing.txt", + "Ashkenazim/NA24385__/validation/haplotypecaller/NA24385.snp.png", + "Ashkenazim/NA24385__/validation/haplotypecaller/NA24385.snp.svg", + "Ashkenazim/NA24385__/validation/haplotypecaller/NA24385.snp_roc.tsv.gz", + "Ashkenazim/NA24385__/validation/haplotypecaller/NA24385.summary.txt", + "Ashkenazim/NA24385__/validation/haplotypecaller/NA24385.tp-baseline.vcf.gz", + "Ashkenazim/NA24385__/validation/haplotypecaller/NA24385.tp-baseline.vcf.gz.tbi", + "Ashkenazim/NA24385__/validation/haplotypecaller/NA24385.tp.vcf.gz", + "Ashkenazim/NA24385__/validation/haplotypecaller/NA24385.tp.vcf.gz.tbi", + "Ashkenazim/NA24385__/validation/haplotypecaller/NA24385.weighted.png", + "Ashkenazim/NA24385__/validation/haplotypecaller/NA24385.weighted.svg", + "Ashkenazim/NA24385__/validation/haplotypecaller/NA24385.weighted_roc.tsv.gz", + "Ashkenazim/output__/Ashkenazim.haplotypecaller.bed", + "Ashkenazim/output__/Ashkenazim.haplotypecaller.ped", + "Ashkenazim/output__/Ashkenazim.haplotypecaller.vcf.gz", + "Ashkenazim/output__/Ashkenazim.haplotypecaller.vcf.gz.tbi", + "Ashkenazim/qc__/Ashkenazim.haplotypecaller.bcftools_stats.txt", + "Ashkenazim/qc__/Ashkenazim.haplotypecaller.html", + "_/multiqc_report.html", + "_/samplesheet.csv" ] ], "meta": { "nf-test": "0.9.1", "nextflow": "24.10.0" }, - "timestamp": "2024-11-07T15:56:56.038825116" + "timestamp": "2024-11-13T14:44:54.946386845" } } \ No newline at end of file From ef6c85dde34bb107c4dd8e909353d65c2044c13c Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Wed, 13 Nov 2024 15:43:40 +0100 Subject: [PATCH 088/167] fix linting --- .nf-core.yml | 1 + main.nf | 37 +++++++++++++++++-------------------- nextflow_schema.json | 15 +++++---------- 3 files changed, 23 insertions(+), 30 deletions(-) diff --git a/.nf-core.yml b/.nf-core.yml index 8bc363c0..63dd0c9f 100644 --- a/.nf-core.yml +++ b/.nf-core.yml @@ -28,6 +28,7 @@ lint: - manifest.homePage - validation.help.afterText - validation.summary.afterText + subworkflow_changes: false nf_core_version: 3.0.2 repository_type: pipeline template: diff --git a/main.nf b/main.nf index 1891d809..9f698591 100644 --- a/main.nf +++ b/main.nf @@ -214,7 +214,7 @@ workflow { // Filtering out input GVCFs from the output publishing fixes an issue in the current implementation of // the workflow output definitions: https://github.com/nextflow-io/nextflow/issues/5480 - ch_gvcfs_out = GERMLINE.out.gvcfs.filter { _meta, gvcf, _tbi -> gvcf.startsWith(workflow.workDir) } + def ch_gvcfs_out = GERMLINE.out.gvcfs.filter { _meta, gvcf, _tbi -> gvcf.startsWith(workflow.workDir) } publish: ch_gvcfs_out >> 'gvcfs' @@ -232,61 +232,58 @@ workflow { GERMLINE.out.multiqc_report >> 'multiqc' } -def pipeline_version = getWorkflowVersion().replace(".", "_") -def date = new Date().format("yyyy_MM_dd") - output { 'gvcfs' { path { meta, gvcf, _tbi -> { file -> if(file == gvcf.name) { - return "${meta.family}/${meta.id}_${pipeline_version}_${date}/${meta.id}.${meta.caller}.g.vcf.gz" + return "${meta.family}/${meta.id}_${getWorkflowVersion().replace(".", "_")}_${new Date().format("yyyy_MM_dd")}/${meta.id}.${meta.caller}.g.vcf.gz" } - return "${meta.family}/${meta.id}_${pipeline_version}_${date}/${meta.id}.${meta.caller}.g.vcf.gz.tbi" + return "${meta.family}/${meta.id}_${getWorkflowVersion().replace(".", "_")}_${new Date().format("yyyy_MM_dd")}/${meta.id}.${meta.caller}.g.vcf.gz.tbi" } } } 'single_beds' { - path { meta, _bed -> { _file -> "${meta.family}/${meta.id}_${pipeline_version}_${date}/${meta.id}.bed" } } + path { meta, _bed -> { _file -> "${meta.family}/${meta.id}_${getWorkflowVersion().replace(".", "_")}_${new Date().format("yyyy_MM_dd")}/${meta.id}.bed" } } } 'validation' { - path { meta, _report -> { file -> "${meta.family}/${meta.id}_${pipeline_version}_${date}/validation/${meta.caller}/${file}" } } + path { meta, _report -> { file -> "${meta.family}/${meta.id}_${getWorkflowVersion().replace(".", "_")}_${new Date().format("yyyy_MM_dd")}/validation/${meta.caller}/${file}" } } } 'gvcf_reports' { - path { meta, _report -> { _file -> "${meta.family}/${meta.id}_${pipeline_version}_${date}/${meta.id}.${meta.caller}.bcftools_stats.txt" }} + path { meta, _report -> { _file -> "${meta.family}/${meta.id}_${getWorkflowVersion().replace(".", "_")}_${new Date().format("yyyy_MM_dd")}/${meta.id}.${meta.caller}.bcftools_stats.txt" }} } 'genomicsdb' { enabled (params.output_genomicsdb || params.only_merge) - path { meta, genomicsdb -> - { file -> "${meta.family}/output_${pipeline_version}_${date}/${meta.id}_${meta.caller}_genomicsdb"} + path { meta, _genomicsdb -> + { _file -> "${meta.family}/output_${getWorkflowVersion().replace(".", "_")}_${new Date().format("yyyy_MM_dd")}/${meta.id}_${meta.caller}_genomicsdb"} } } 'vcfs' { path { meta, vcf, _tbi -> { file -> if(file == vcf.name) { - return "${meta.family}/output_${pipeline_version}_${date}/${meta.id}.${meta.caller}.vcf.gz" + return "${meta.family}/output_${getWorkflowVersion().replace(".", "_")}_${new Date().format("yyyy_MM_dd")}/${meta.id}.${meta.caller}.vcf.gz" } - return "${meta.family}/output_${pipeline_version}_${date}/${meta.id}.${meta.caller}.vcf.gz.tbi" + return "${meta.family}/output_${getWorkflowVersion().replace(".", "_")}_${new Date().format("yyyy_MM_dd")}/${meta.id}.${meta.caller}.vcf.gz.tbi" } } } 'gemini' { - path { meta, _db -> { _file -> "${meta.family}/output_${pipeline_version}_${date}/${meta.id}.${meta.caller}.db"}} + path { meta, _db -> { _file -> "${meta.family}/output_${getWorkflowVersion().replace(".", "_")}_${new Date().format("yyyy_MM_dd")}/${meta.id}.${meta.caller}.db"}} } 'peds' { - path { meta, _ped -> { _file -> "${meta.family}/output_${pipeline_version}_${date}/${meta.id}.${meta.caller}.ped"}} + path { meta, _ped -> { _file -> "${meta.family}/output_${getWorkflowVersion().replace(".", "_")}_${new Date().format("yyyy_MM_dd")}/${meta.id}.${meta.caller}.ped"}} } 'joint_beds' { - path { meta, _bed -> { _file -> "${meta.family}/output_${pipeline_version}_${date}/${meta.id}.${meta.caller}.bed"}} + path { meta, _bed -> { _file -> "${meta.family}/output_${getWorkflowVersion().replace(".", "_")}_${new Date().format("yyyy_MM_dd")}/${meta.id}.${meta.caller}.bed"}} } 'final_reports' { - path { meta, _report -> { file -> "${meta.family}/qc_${pipeline_version}_${date}/${file}"}} + path { meta, _report -> { file -> "${meta.family}/qc_${getWorkflowVersion().replace(".", "_")}_${new Date().format("yyyy_MM_dd")}/${file}"}} } 'automap' { - path { meta, _automap -> { file -> "${meta.family}/output_${pipeline_version}_${date}/automap/${meta.caller}"}} + path { meta, _automap -> { _file -> "${meta.family}/output_${getWorkflowVersion().replace(".", "_")}_${new Date().format("yyyy_MM_dd")}/automap/${meta.caller}"}} } 'updio' { - path { meta, _updio -> { file -> "${meta.family}/output_${pipeline_version}_${date}/updio/${meta.caller}"}} + path { meta, _updio -> { _file -> "${meta.family}/output_${getWorkflowVersion().replace(".", "_")}_${new Date().format("yyyy_MM_dd")}/updio/${meta.caller}"}} } 'multiqc' { - path { _report -> { _file -> "${pipeline_version}_${date}/multiqc_report.html"}} + path { _report -> { _file -> "${getWorkflowVersion().replace(".", "_")}_${new Date().format("yyyy_MM_dd")}/multiqc_report.html"}} } } diff --git a/nextflow_schema.json b/nextflow_schema.json index 4ce42943..ea1b13a3 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -122,6 +122,11 @@ "description": "Path to the elsites file. This is used when `elprep` is part of the callers.", "fa_icon": "far fa-file-code" }, + "genomes": { + "type": "object", + "hidden": true, + "description": "Object for genomes" + }, "genomes_base": { "type": "string", "default": "/references/", @@ -383,16 +388,6 @@ "description": "Less common options for the pipeline, typically set in a config file.", "help_text": "These options are common to all nf-core pipelines and allow you to customise some of the core preferences for how the pipeline runs.\n\nTypically these options would be set in a Nextflow config file loaded for all pipeline runs, such as `~/.nextflow/config`.", "properties": { - "help": { - "type": ["boolean", "string"], - "description": "Display help text. Give a parameter name to this option to see the detailed help of that parameter.", - "fa_icon": "fas fa-question-circle" - }, - "help_full": { - "type": "boolean", - "description": "See the full help message of all parameters.", - "fa_icon": "fas fa-question-circle" - }, "version": { "type": "boolean", "description": "Display version and exit.", From a9cdb54b8103cd0172033937405576d04a3ae8bc Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Wed, 13 Nov 2024 15:50:05 +0100 Subject: [PATCH 089/167] fix genomes in summary --- nextflow.config | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/nextflow.config b/nextflow.config index 1c9168ef..2f5aaaab 100644 --- a/nextflow.config +++ b/nextflow.config @@ -299,7 +299,7 @@ dag { // Nextflow plugins plugins { - id 'nf-schema@2.1.1' // Validation of pipeline parameters and creation of an input channel from a sample sheet + id 'nf-schema@2.2.0' // Validation of pipeline parameters and creation of an input channel from a sample sheet } validation { @@ -322,6 +322,7 @@ validation { } summary { beforeText = validation.help.beforeText + hideParams = ["genomes"] } } From edc8b69152b88da97e386966941db8b8bd3619bd Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Wed, 13 Nov 2024 15:52:45 +0100 Subject: [PATCH 090/167] pre-commit --- tests/pipeline/callers/main.nf.test | 2 +- tests/pipeline/variations/main.nf.test | 2 +- tests/pipeline/variations2/main.nf.test | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/pipeline/callers/main.nf.test b/tests/pipeline/callers/main.nf.test index b3701313..cf6bfbbd 100644 --- a/tests/pipeline/callers/main.nf.test +++ b/tests/pipeline/callers/main.nf.test @@ -111,4 +111,4 @@ def getDynamicOutputName() { def Map nfcoreYaml = new groovy.yaml.YamlSlurper().parseText(file(".nf-core.yml").text) def date = new java.text.SimpleDateFormat("yyyy_MM_dd").format(new Date()) return "v${nfcoreYaml.template.version.replace('.', '_')}_${date}" as String -} \ No newline at end of file +} diff --git a/tests/pipeline/variations/main.nf.test b/tests/pipeline/variations/main.nf.test index cdf7aff0..837a84be 100644 --- a/tests/pipeline/variations/main.nf.test +++ b/tests/pipeline/variations/main.nf.test @@ -202,4 +202,4 @@ def getDynamicOutputName() { def Map nfcoreYaml = new groovy.yaml.YamlSlurper().parseText(file(".nf-core.yml").text) def date = new java.text.SimpleDateFormat("yyyy_MM_dd").format(new Date()) return "v${nfcoreYaml.template.version.replace('.', '_')}_${date}" as String -} \ No newline at end of file +} diff --git a/tests/pipeline/variations2/main.nf.test b/tests/pipeline/variations2/main.nf.test index 5070bc13..d61fe35b 100644 --- a/tests/pipeline/variations2/main.nf.test +++ b/tests/pipeline/variations2/main.nf.test @@ -171,4 +171,4 @@ def getDynamicOutputName() { def Map nfcoreYaml = new groovy.yaml.YamlSlurper().parseText(file(".nf-core.yml").text) def date = new java.text.SimpleDateFormat("yyyy_MM_dd").format(new Date()) return "v${nfcoreYaml.template.version.replace('.', '_')}_${date}" as String -} \ No newline at end of file +} From f51c2a97e59a241ec7007026bee08fcf43196dd6 Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Wed, 13 Nov 2024 16:11:18 +0100 Subject: [PATCH 091/167] fix utils_nextflow_pipeline --- modules.json | 2 +- .../nf-core/utils_nextflow_pipeline/main.nf | 14 +++++++++++--- .../tests/main.workflow.nf.test | 10 ++++++---- 3 files changed, 18 insertions(+), 8 deletions(-) diff --git a/modules.json b/modules.json index 5e9357a6..a9c6c52c 100644 --- a/modules.json +++ b/modules.json @@ -234,7 +234,7 @@ "nf-core": { "utils_nextflow_pipeline": { "branch": "master", - "git_sha": "1b6b9a3338d011367137808b49b923515080e3ba", + "git_sha": "56372688d8979092cafbe0c5c3895b491166ca1c", "installed_by": ["subworkflows"] }, "utils_nfcore_pipeline": { diff --git a/subworkflows/nf-core/utils_nextflow_pipeline/main.nf b/subworkflows/nf-core/utils_nextflow_pipeline/main.nf index bf347813..de2364d5 100644 --- a/subworkflows/nf-core/utils_nextflow_pipeline/main.nf +++ b/subworkflows/nf-core/utils_nextflow_pipeline/main.nf @@ -109,8 +109,16 @@ def checkCondaChannels() { def channel_priority_violation = required_channels_in_order != channels.findAll { ch -> ch in required_channels_in_order } if (channels_missing | channel_priority_violation) { - log.warn( - "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" + " There is a problem with your Conda configuration!\n\n" + " You will need to set-up the conda-forge and bioconda channels correctly.\n" + " Please refer to https://bioconda.github.io/\n" + " The observed channel order is \n" + " ${channels}\n" + " but the following channel order is required:\n" + " ${required_channels_in_order}\n" + "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" - ) + log.warn """\ + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + There is a problem with your Conda configuration! + You will need to set-up the conda-forge and bioconda channels correctly. + Please refer to https://bioconda.github.io/ + The observed channel order is + ${channels} + but the following channel order is required: + ${required_channels_in_order} + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" + """.stripIndent(true) } } diff --git a/subworkflows/nf-core/utils_nextflow_pipeline/tests/main.workflow.nf.test b/subworkflows/nf-core/utils_nextflow_pipeline/tests/main.workflow.nf.test index ca964ce8..02dbf094 100644 --- a/subworkflows/nf-core/utils_nextflow_pipeline/tests/main.workflow.nf.test +++ b/subworkflows/nf-core/utils_nextflow_pipeline/tests/main.workflow.nf.test @@ -52,10 +52,12 @@ nextflow_workflow { } then { - assertAll( - { assert workflow.success }, - { assert workflow.stdout.contains("nextflow_workflow v9.9.9") } - ) + expect { + with(workflow) { + assert success + assert "nextflow_workflow v9.9.9" in stdout + } + } } } From 597a12eace6fc3f7ca696d68bcbcefcb0c3a7bb3 Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Wed, 13 Nov 2024 17:07:12 +0100 Subject: [PATCH 092/167] automap tests --- .../local/automap/automap/tests/main.nf.test | 95 +++++++++++++++ .../automap/automap/tests/main.nf.test.snap | 109 ++++++++++++++++++ .../automap/automap/tests/nextflow.config | 5 + .../local/automap/repeats/tests/main.nf.test | 58 ++++++++++ .../automap/repeats/tests/main.nf.test.snap | 72 ++++++++++++ 5 files changed, 339 insertions(+) create mode 100644 modules/local/automap/automap/tests/main.nf.test create mode 100644 modules/local/automap/automap/tests/main.nf.test.snap create mode 100644 modules/local/automap/automap/tests/nextflow.config create mode 100644 modules/local/automap/repeats/tests/main.nf.test create mode 100644 modules/local/automap/repeats/tests/main.nf.test.snap diff --git a/modules/local/automap/automap/tests/main.nf.test b/modules/local/automap/automap/tests/main.nf.test new file mode 100644 index 00000000..77e12a9c --- /dev/null +++ b/modules/local/automap/automap/tests/main.nf.test @@ -0,0 +1,95 @@ +nextflow_process { + + name "Test Process AUTOMAP_AUTOMAP" + script "../main.nf" + process "AUTOMAP_AUTOMAP" + + tag "modules" + tag "modules_local" + tag "automap" + tag "automap/automap" + + setup { + run("AUTOMAP_REPEATS") { + script "../../repeats/main.nf" + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + "hg38" + ] + """ + } + } + } + + test("homo_sapiens - vcf, tbi, repeats, [], hg38") { + + config "./nextflow.config" + + when { + process { + """ + input[0] = [ + [ id:'test', family_samples:"NA24143,NA24149,NA24385", caller:"haplotypecaller" ], // meta map + file(params.famvcf, checkIfExists: true), + file(params.famtbi, checkIfExists: true) + ] + input[1] = AUTOMAP_REPEATS.out.repeats + input[2] = [[],[]] + input[3] = "hg38" + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + process.out.automap.collect { meta, out -> + [ + meta, + path(out).list().collect { + it.list().collect { + "${file(it.toString()).name},variantsMD5:${it.vcf.variantsMD5}" + } + } + ] + }, + process.out.versions + ).match() } + ) + } + + } + + test("homo_sapiens - vcf, tbi, repeats, [], hg38 - stub") { + + options "-stub" + config "./nextflow.config" + + when { + process { + """ + input[0] = [ + [ id:'test', family_samples:"NA24143,NA24149,NA24385", caller:"haplotypecaller" ], // meta map + file(params.famvcf, checkIfExists: true), + file(params.famtbi, checkIfExists: true) + ] + input[1] = AUTOMAP_REPEATS.out.repeats + input[2] = [[],[]] + input[3] = "hg38" + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + +} \ No newline at end of file diff --git a/modules/local/automap/automap/tests/main.nf.test.snap b/modules/local/automap/automap/tests/main.nf.test.snap new file mode 100644 index 00000000..356704a3 --- /dev/null +++ b/modules/local/automap/automap/tests/main.nf.test.snap @@ -0,0 +1,109 @@ +{ + "homo_sapiens - vcf, tbi, repeats, [], hg38": { + "content": [ + [ + [ + { + "id": "test", + "family_samples": "NA24143,NA24149,NA24385", + "caller": "haplotypecaller" + }, + [ + [ + "NA24143.individual.vcf,variantsMD5:d87c6d5aea196c746312a8a383eede4b" + ], + [ + "NA24149.individual.vcf,variantsMD5:24eacd6958a767b7768b4282caea52cc" + ], + [ + "NA24385.individual.vcf,variantsMD5:f7f27a20139824e3e49cf17a2867489b" + ] + ] + ] + ], + [ + "versions.yml:md5,8d88bdf05fc6f578d81fee3716f8b562" + ] + ], + "meta": { + "nf-test": "0.9.1", + "nextflow": "24.10.0" + }, + "timestamp": "2024-11-13T17:03:29.44273724" + }, + "homo_sapiens - vcf, tbi, repeats, [], hg38 - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "family_samples": "NA24143,NA24149,NA24385", + "caller": "haplotypecaller" + }, + [ + [ + "sample1.HomRegions.cmgg_bio.tsv:md5,d41d8cd98f00b204e9800998ecf8427e", + "sample1.HomRegions.pdf:md5,d41d8cd98f00b204e9800998ecf8427e", + "sample1.HomRegions.strict.cmgg_bio.tsv:md5,d41d8cd98f00b204e9800998ecf8427e", + "sample1.HomRegions.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + "sample2.HomRegions.cmgg_bio.tsv:md5,d41d8cd98f00b204e9800998ecf8427e", + "sample2.HomRegions.pdf:md5,d41d8cd98f00b204e9800998ecf8427e", + "sample2.HomRegions.strict.cmgg_bio.tsv:md5,d41d8cd98f00b204e9800998ecf8427e", + "sample2.HomRegions.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + "sample3.HomRegions.cmgg_bio.tsv:md5,d41d8cd98f00b204e9800998ecf8427e", + "sample3.HomRegions.pdf:md5,d41d8cd98f00b204e9800998ecf8427e", + "sample3.HomRegions.strict.cmgg_bio.tsv:md5,d41d8cd98f00b204e9800998ecf8427e", + "sample3.HomRegions.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ] + ], + "1": [ + "versions.yml:md5,8d88bdf05fc6f578d81fee3716f8b562" + ], + "automap": [ + [ + { + "id": "test", + "family_samples": "NA24143,NA24149,NA24385", + "caller": "haplotypecaller" + }, + [ + [ + "sample1.HomRegions.cmgg_bio.tsv:md5,d41d8cd98f00b204e9800998ecf8427e", + "sample1.HomRegions.pdf:md5,d41d8cd98f00b204e9800998ecf8427e", + "sample1.HomRegions.strict.cmgg_bio.tsv:md5,d41d8cd98f00b204e9800998ecf8427e", + "sample1.HomRegions.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + "sample2.HomRegions.cmgg_bio.tsv:md5,d41d8cd98f00b204e9800998ecf8427e", + "sample2.HomRegions.pdf:md5,d41d8cd98f00b204e9800998ecf8427e", + "sample2.HomRegions.strict.cmgg_bio.tsv:md5,d41d8cd98f00b204e9800998ecf8427e", + "sample2.HomRegions.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + "sample3.HomRegions.cmgg_bio.tsv:md5,d41d8cd98f00b204e9800998ecf8427e", + "sample3.HomRegions.pdf:md5,d41d8cd98f00b204e9800998ecf8427e", + "sample3.HomRegions.strict.cmgg_bio.tsv:md5,d41d8cd98f00b204e9800998ecf8427e", + "sample3.HomRegions.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ] + ], + "versions": [ + "versions.yml:md5,8d88bdf05fc6f578d81fee3716f8b562" + ] + } + ], + "meta": { + "nf-test": "0.9.1", + "nextflow": "24.10.0" + }, + "timestamp": "2024-11-13T17:00:28.503010269" + } +} \ No newline at end of file diff --git a/modules/local/automap/automap/tests/nextflow.config b/modules/local/automap/automap/tests/nextflow.config new file mode 100644 index 00000000..205fb08f --- /dev/null +++ b/modules/local/automap/automap/tests/nextflow.config @@ -0,0 +1,5 @@ +process { + withName: "AUTOMAP_AUTOMAP" { + ext.args = "--panelname cmgg_bio --multivcf" + } +} \ No newline at end of file diff --git a/modules/local/automap/repeats/tests/main.nf.test b/modules/local/automap/repeats/tests/main.nf.test new file mode 100644 index 00000000..728c037c --- /dev/null +++ b/modules/local/automap/repeats/tests/main.nf.test @@ -0,0 +1,58 @@ +nextflow_process { + + name "Test Process AUTOMAP_REPEATS" + script "../main.nf" + process "AUTOMAP_REPEATS" + + tag "modules" + tag "modules_local" + tag "automap" + tag "automap/repeats" + + test("homo_sapiens - hg38") { + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + "hg38" + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + + test("homo_sapiens - hg38 - stub") { + + options "-stub" + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + "hg38" + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + +} \ No newline at end of file diff --git a/modules/local/automap/repeats/tests/main.nf.test.snap b/modules/local/automap/repeats/tests/main.nf.test.snap new file mode 100644 index 00000000..5f114982 --- /dev/null +++ b/modules/local/automap/repeats/tests/main.nf.test.snap @@ -0,0 +1,72 @@ +{ + "homo_sapiens - hg38": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.bed:md5,74190e74851226329342a3fcae133cdb" + ] + ], + "1": [ + "versions.yml:md5,b5fc7b6bfce18165907357d8966f09d4" + ], + "repeats": [ + [ + { + "id": "test", + "single_end": false + }, + "test.bed:md5,74190e74851226329342a3fcae133cdb" + ] + ], + "versions": [ + "versions.yml:md5,b5fc7b6bfce18165907357d8966f09d4" + ] + } + ], + "meta": { + "nf-test": "0.9.1", + "nextflow": "24.10.0" + }, + "timestamp": "2024-11-13T16:31:33.522485317" + }, + "homo_sapiens - hg38 - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.bed:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + "versions.yml:md5,b5fc7b6bfce18165907357d8966f09d4" + ], + "repeats": [ + [ + { + "id": "test", + "single_end": false + }, + "test.bed:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,b5fc7b6bfce18165907357d8966f09d4" + ] + } + ], + "meta": { + "nf-test": "0.9.1", + "nextflow": "24.10.0" + }, + "timestamp": "2024-11-13T16:31:43.895708133" + } +} \ No newline at end of file From b89614359cc6e88e580bd8986869b99ca334eebb Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Wed, 13 Nov 2024 17:12:57 +0100 Subject: [PATCH 093/167] test filter_beds --- modules/local/filter_beds/tests/main.nf.test | 60 ++++++++++++++++ .../local/filter_beds/tests/main.nf.test.snap | 72 +++++++++++++++++++ .../local/filter_beds/tests/nextflow.config | 4 ++ 3 files changed, 136 insertions(+) create mode 100644 modules/local/filter_beds/tests/main.nf.test create mode 100644 modules/local/filter_beds/tests/main.nf.test.snap create mode 100644 modules/local/filter_beds/tests/nextflow.config diff --git a/modules/local/filter_beds/tests/main.nf.test b/modules/local/filter_beds/tests/main.nf.test new file mode 100644 index 00000000..904f84d7 --- /dev/null +++ b/modules/local/filter_beds/tests/main.nf.test @@ -0,0 +1,60 @@ +nextflow_process { + + name "Test Process FILTER_BEDS" + script "../main.nf" + process "FILTER_BEDS" + + tag "modules" + tag "modules_local" + tag "filter_beds" + + test("homo_sapiens - bed") { + + config "./nextflow.config" + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.bed, checkIfExists:true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + + test("homo_sapiens - bed - stub") { + + options "-stub" + config "./nextflow.config" + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.bed, checkIfExists:true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + +} \ No newline at end of file diff --git a/modules/local/filter_beds/tests/main.nf.test.snap b/modules/local/filter_beds/tests/main.nf.test.snap new file mode 100644 index 00000000..c4e2ba18 --- /dev/null +++ b/modules/local/filter_beds/tests/main.nf.test.snap @@ -0,0 +1,72 @@ +{ + "homo_sapiens - bed": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.bed:md5,fa245abf8add7a80650566a1de67ec04" + ] + ], + "1": [ + "versions.yml:md5,38ea76fdc8d681b1e47415b195cccd88" + ], + "bed": [ + [ + { + "id": "test", + "single_end": false + }, + "test.bed:md5,fa245abf8add7a80650566a1de67ec04" + ] + ], + "versions": [ + "versions.yml:md5,38ea76fdc8d681b1e47415b195cccd88" + ] + } + ], + "meta": { + "nf-test": "0.9.1", + "nextflow": "24.10.0" + }, + "timestamp": "2024-11-13T17:12:06.470648263" + }, + "homo_sapiens - bed - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.bed:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + "versions.yml:md5,38ea76fdc8d681b1e47415b195cccd88" + ], + "bed": [ + [ + { + "id": "test", + "single_end": false + }, + "test.bed:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,38ea76fdc8d681b1e47415b195cccd88" + ] + } + ], + "meta": { + "nf-test": "0.9.1", + "nextflow": "24.10.0" + }, + "timestamp": "2024-11-13T17:09:43.531020092" + } +} \ No newline at end of file diff --git a/modules/local/filter_beds/tests/nextflow.config b/modules/local/filter_beds/tests/nextflow.config new file mode 100644 index 00000000..2d7d8e7b --- /dev/null +++ b/modules/local/filter_beds/tests/nextflow.config @@ -0,0 +1,4 @@ +process { + ext.args = "-vE \"LOW_COVERAGE|NO_COVERAGE\"" + ext.args2 = "-d 150" +} \ No newline at end of file From 4f200f11a0b280955922c095f66b41f8dbf244aa Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Thu, 14 Nov 2024 09:58:16 +0100 Subject: [PATCH 094/167] test updio and merge_beds --- modules/local/merge_beds/tests/main.nf.test | 68 ++++++++++++++ .../local/merge_beds/tests/main.nf.test.snap | 72 +++++++++++++++ .../local/merge_beds/tests/nextflow.config | 3 + modules/local/updio/tests/main.nf.test | 63 +++++++++++++ modules/local/updio/tests/main.nf.test.snap | 92 +++++++++++++++++++ modules/local/updio/tests/nextflow.config | 3 + 6 files changed, 301 insertions(+) create mode 100644 modules/local/merge_beds/tests/main.nf.test create mode 100644 modules/local/merge_beds/tests/main.nf.test.snap create mode 100644 modules/local/merge_beds/tests/nextflow.config create mode 100644 modules/local/updio/tests/main.nf.test create mode 100644 modules/local/updio/tests/main.nf.test.snap create mode 100644 modules/local/updio/tests/nextflow.config diff --git a/modules/local/merge_beds/tests/main.nf.test b/modules/local/merge_beds/tests/main.nf.test new file mode 100644 index 00000000..4434a3db --- /dev/null +++ b/modules/local/merge_beds/tests/main.nf.test @@ -0,0 +1,68 @@ +nextflow_process { + + name "Test Process MERGE_BEDS" + script "../main.nf" + process "MERGE_BEDS" + + tag "modules" + tag "modules_local" + tag "merge_beds" + + test("homo_sapiens - bed") { + + config "./nextflow.config" + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.bed, checkIfExists:true) + ] + input[1] = [ + [ id:'fai' ], + file(params.fai, checkIfExists:true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + + test("homo_sapiens - bed - stub") { + + options "-stub" + config "./nextflow.config" + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.bed, checkIfExists:true) + ] + input[1] = [ + [ id:'fai' ], + file(params.fai, checkIfExists:true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + +} \ No newline at end of file diff --git a/modules/local/merge_beds/tests/main.nf.test.snap b/modules/local/merge_beds/tests/main.nf.test.snap new file mode 100644 index 00000000..a6eb4e35 --- /dev/null +++ b/modules/local/merge_beds/tests/main.nf.test.snap @@ -0,0 +1,72 @@ +{ + "homo_sapiens - bed": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.bed:md5,fa245abf8add7a80650566a1de67ec04" + ] + ], + "1": [ + "versions.yml:md5,273f887b675fb5feb6073a5313a191a9" + ], + "bed": [ + [ + { + "id": "test", + "single_end": false + }, + "test.bed:md5,fa245abf8add7a80650566a1de67ec04" + ] + ], + "versions": [ + "versions.yml:md5,273f887b675fb5feb6073a5313a191a9" + ] + } + ], + "meta": { + "nf-test": "0.9.1", + "nextflow": "24.10.0" + }, + "timestamp": "2024-11-14T09:49:08.980488978" + }, + "homo_sapiens - bed - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.bed:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + "versions.yml:md5,273f887b675fb5feb6073a5313a191a9" + ], + "bed": [ + [ + { + "id": "test", + "single_end": false + }, + "test.bed:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,273f887b675fb5feb6073a5313a191a9" + ] + } + ], + "meta": { + "nf-test": "0.9.1", + "nextflow": "24.10.0" + }, + "timestamp": "2024-11-14T09:49:17.089675797" + } +} \ No newline at end of file diff --git a/modules/local/merge_beds/tests/nextflow.config b/modules/local/merge_beds/tests/nextflow.config new file mode 100644 index 00000000..d7ef0d61 --- /dev/null +++ b/modules/local/merge_beds/tests/nextflow.config @@ -0,0 +1,3 @@ +process { + ext.args = "-d 150" +} \ No newline at end of file diff --git a/modules/local/updio/tests/main.nf.test b/modules/local/updio/tests/main.nf.test new file mode 100644 index 00000000..7afe29f4 --- /dev/null +++ b/modules/local/updio/tests/main.nf.test @@ -0,0 +1,63 @@ +nextflow_process { + + name "Test Process UPDIO" + script "../main.nf" + process "UPDIO" + + tag "modules" + tag "modules_local" + tag "updio" + + test("homo_sapiens - vcf, tbi, []") { + + config "./nextflow.config" + + when { + process { + """ + input[0] = [ + [ id:'test', child:'NA24385' ], // meta map + file(params.famvcf, checkIfExists:true), + file(params.famtbi, checkIfExists:true) + ] + input[1] = [[],[]] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + + test("homo_sapiens - vcf, tbi, [] - stub") { + + options "-stub" + config "./nextflow.config" + + when { + process { + """ + input[0] = [ + [ id:'test', child:'NA24385' ], // meta map + file(params.famvcf, checkIfExists:true), + file(params.famtbi, checkIfExists:true) + ] + input[1] = [[],[]] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } +} \ No newline at end of file diff --git a/modules/local/updio/tests/main.nf.test.snap b/modules/local/updio/tests/main.nf.test.snap new file mode 100644 index 00000000..dc030bb0 --- /dev/null +++ b/modules/local/updio/tests/main.nf.test.snap @@ -0,0 +1,92 @@ +{ + "homo_sapiens - vcf, tbi, [] - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "child": "NA24385" + }, + [ + "NA24385.events_list:md5,d41d8cd98f00b204e9800998ecf8427e", + "NA24385.log:md5,d41d8cd98f00b204e9800998ecf8427e", + "NA24385.table:md5,d41d8cd98f00b204e9800998ecf8427e", + "NA24385.upd:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "1": [ + "versions.yml:md5,8a807f51c31f64de1c707210fabe7029" + ], + "updio": [ + [ + { + "id": "test", + "child": "NA24385" + }, + [ + "NA24385.events_list:md5,d41d8cd98f00b204e9800998ecf8427e", + "NA24385.log:md5,d41d8cd98f00b204e9800998ecf8427e", + "NA24385.table:md5,d41d8cd98f00b204e9800998ecf8427e", + "NA24385.upd:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "versions": [ + "versions.yml:md5,8a807f51c31f64de1c707210fabe7029" + ] + } + ], + "meta": { + "nf-test": "0.9.1", + "nextflow": "24.10.0" + }, + "timestamp": "2024-11-14T09:57:26.032830013" + }, + "homo_sapiens - vcf, tbi, []": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "child": "NA24385" + }, + [ + "NA24385.events_list:md5,4a26c133ef193d31eddfd18dae94f0a0", + "NA24385.log:md5,a40a24f379127a9cde7e40a1ce1032ec", + "NA24385.table:md5,ca8165fc7869a113ca034396de7cf579", + "NA24385.upd:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "1": [ + "versions.yml:md5,8a807f51c31f64de1c707210fabe7029" + ], + "updio": [ + [ + { + "id": "test", + "child": "NA24385" + }, + [ + "NA24385.events_list:md5,4a26c133ef193d31eddfd18dae94f0a0", + "NA24385.log:md5,a40a24f379127a9cde7e40a1ce1032ec", + "NA24385.table:md5,ca8165fc7869a113ca034396de7cf579", + "NA24385.upd:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "versions": [ + "versions.yml:md5,8a807f51c31f64de1c707210fabe7029" + ] + } + ], + "meta": { + "nf-test": "0.9.1", + "nextflow": "24.10.0" + }, + "timestamp": "2024-11-14T09:57:17.522197249" + } +} \ No newline at end of file diff --git a/modules/local/updio/tests/nextflow.config b/modules/local/updio/tests/nextflow.config new file mode 100644 index 00000000..a55cccce --- /dev/null +++ b/modules/local/updio/tests/nextflow.config @@ -0,0 +1,3 @@ +process { + ext.args = "--childID NA24385 --momID NA24149 --dadID NA24143" +} \ No newline at end of file From f6165bf18dcd60d3fcd1b36bf66365a975627db7 Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Thu, 14 Nov 2024 11:37:11 +0100 Subject: [PATCH 095/167] pre-commit --- modules/local/automap/automap/tests/main.nf.test | 12 ++++++------ modules/local/automap/automap/tests/nextflow.config | 2 +- modules/local/automap/repeats/tests/main.nf.test | 2 +- modules/local/filter_beds/tests/main.nf.test | 2 +- modules/local/filter_beds/tests/nextflow.config | 2 +- modules/local/merge_beds/tests/main.nf.test | 2 +- modules/local/merge_beds/tests/nextflow.config | 2 +- modules/local/updio/tests/main.nf.test | 2 +- modules/local/updio/tests/nextflow.config | 2 +- 9 files changed, 14 insertions(+), 14 deletions(-) diff --git a/modules/local/automap/automap/tests/main.nf.test b/modules/local/automap/automap/tests/main.nf.test index 77e12a9c..f19fe051 100644 --- a/modules/local/automap/automap/tests/main.nf.test +++ b/modules/local/automap/automap/tests/main.nf.test @@ -46,12 +46,12 @@ nextflow_process { assertAll( { assert process.success }, { assert snapshot( - process.out.automap.collect { meta, out -> - [ - meta, - path(out).list().collect { + process.out.automap.collect { meta, out -> + [ + meta, + path(out).list().collect { it.list().collect { - "${file(it.toString()).name},variantsMD5:${it.vcf.variantsMD5}" + "${file(it.toString()).name},variantsMD5:${it.vcf.variantsMD5}" } } ] @@ -92,4 +92,4 @@ nextflow_process { } -} \ No newline at end of file +} diff --git a/modules/local/automap/automap/tests/nextflow.config b/modules/local/automap/automap/tests/nextflow.config index 205fb08f..ba4da41d 100644 --- a/modules/local/automap/automap/tests/nextflow.config +++ b/modules/local/automap/automap/tests/nextflow.config @@ -2,4 +2,4 @@ process { withName: "AUTOMAP_AUTOMAP" { ext.args = "--panelname cmgg_bio --multivcf" } -} \ No newline at end of file +} diff --git a/modules/local/automap/repeats/tests/main.nf.test b/modules/local/automap/repeats/tests/main.nf.test index 728c037c..94f1ddb6 100644 --- a/modules/local/automap/repeats/tests/main.nf.test +++ b/modules/local/automap/repeats/tests/main.nf.test @@ -55,4 +55,4 @@ nextflow_process { } -} \ No newline at end of file +} diff --git a/modules/local/filter_beds/tests/main.nf.test b/modules/local/filter_beds/tests/main.nf.test index 904f84d7..f139e316 100644 --- a/modules/local/filter_beds/tests/main.nf.test +++ b/modules/local/filter_beds/tests/main.nf.test @@ -57,4 +57,4 @@ nextflow_process { } -} \ No newline at end of file +} diff --git a/modules/local/filter_beds/tests/nextflow.config b/modules/local/filter_beds/tests/nextflow.config index 2d7d8e7b..1734cd70 100644 --- a/modules/local/filter_beds/tests/nextflow.config +++ b/modules/local/filter_beds/tests/nextflow.config @@ -1,4 +1,4 @@ process { ext.args = "-vE \"LOW_COVERAGE|NO_COVERAGE\"" ext.args2 = "-d 150" -} \ No newline at end of file +} diff --git a/modules/local/merge_beds/tests/main.nf.test b/modules/local/merge_beds/tests/main.nf.test index 4434a3db..ea07e119 100644 --- a/modules/local/merge_beds/tests/main.nf.test +++ b/modules/local/merge_beds/tests/main.nf.test @@ -65,4 +65,4 @@ nextflow_process { } -} \ No newline at end of file +} diff --git a/modules/local/merge_beds/tests/nextflow.config b/modules/local/merge_beds/tests/nextflow.config index d7ef0d61..4fda00bd 100644 --- a/modules/local/merge_beds/tests/nextflow.config +++ b/modules/local/merge_beds/tests/nextflow.config @@ -1,3 +1,3 @@ process { ext.args = "-d 150" -} \ No newline at end of file +} diff --git a/modules/local/updio/tests/main.nf.test b/modules/local/updio/tests/main.nf.test index 7afe29f4..50df983e 100644 --- a/modules/local/updio/tests/main.nf.test +++ b/modules/local/updio/tests/main.nf.test @@ -60,4 +60,4 @@ nextflow_process { } } -} \ No newline at end of file +} diff --git a/modules/local/updio/tests/nextflow.config b/modules/local/updio/tests/nextflow.config index a55cccce..ed9191f4 100644 --- a/modules/local/updio/tests/nextflow.config +++ b/modules/local/updio/tests/nextflow.config @@ -1,3 +1,3 @@ process { ext.args = "--childID NA24385 --momID NA24149 --dadID NA24143" -} \ No newline at end of file +} From b0236dd6308bd9276b7531099ffc588f48081866 Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Thu, 14 Nov 2024 11:45:12 +0100 Subject: [PATCH 096/167] move subwf tests to the subwf folder --- .../local/bam_call_elprep/tests}/main.nf.test | 2 +- .../local/bam_call_elprep/tests}/main.nf.test.snap | 0 subworkflows/local/bam_call_vardictjava/main.nf | 1 - .../local/bam_call_vardictjava/tests}/main.nf.test | 3 +-- .../local/bam_call_vardictjava/tests}/main.nf.test.snap | 0 .../local/cram_call_gatk4/tests}/main.nf.test | 2 +- .../local/cram_call_gatk4/tests}/main.nf.test.snap | 0 .../local/cram_prepare_samtools_bedtools/tests}/main.nf.test | 2 +- .../cram_prepare_samtools_bedtools/tests}/main.nf.test.snap | 0 .../local/gvcf_joint_genotype_gatk4/tests}/main.nf.test | 2 +- .../local/gvcf_joint_genotype_gatk4/tests}/main.nf.test.snap | 0 .../local/input_split_bedtools/tests}/main.nf.test | 2 +- .../local/input_split_bedtools/tests}/main.nf.test.snap | 0 .../local/vcf_annotation/tests}/main.nf.test | 2 +- .../local/vcf_annotation/tests}/main.nf.test.snap | 0 .../local/vcf_dbsnp_vcfanno/tests}/main.nf.test | 2 +- .../local/vcf_dbsnp_vcfanno/tests}/main.nf.test.snap | 0 .../local/vcf_extract_relate_somalier/tests}/main.nf.test | 2 +- .../local/vcf_extract_relate_somalier/tests}/main.nf.test.snap | 0 .../local/vcf_ped_rtgtools/tests}/main.nf.test | 2 +- .../local/vcf_ped_rtgtools/tests}/main.nf.test.snap | 0 .../local/vcf_roh_automap/tests}/main.nf.test | 2 +- .../local/vcf_roh_automap/tests}/main.nf.test.snap | 0 .../local/vcf_upd_updio/tests}/main.nf.test | 2 +- .../local/vcf_upd_updio/tests}/main.nf.test.snap | 0 .../local/vcf_validate_small_variants/tests}/main.nf.test | 2 +- .../local/vcf_validate_small_variants/tests}/main.nf.test.snap | 0 workflows/germline.nf | 3 +-- 28 files changed, 14 insertions(+), 17 deletions(-) rename {tests/subworkflows/local/bam_call_elprep => subworkflows/local/bam_call_elprep/tests}/main.nf.test (98%) rename {tests/subworkflows/local/bam_call_elprep => subworkflows/local/bam_call_elprep/tests}/main.nf.test.snap (100%) rename {tests/subworkflows/local/bam_call_vardictjava => subworkflows/local/bam_call_vardictjava/tests}/main.nf.test (95%) rename {tests/subworkflows/local/bam_call_vardictjava => subworkflows/local/bam_call_vardictjava/tests}/main.nf.test.snap (100%) rename {tests/subworkflows/local/cram_call_gatk4 => subworkflows/local/cram_call_gatk4/tests}/main.nf.test (98%) rename {tests/subworkflows/local/cram_call_gatk4 => subworkflows/local/cram_call_gatk4/tests}/main.nf.test.snap (100%) rename {tests/subworkflows/local/cram_prepare_samtools_bedtools => subworkflows/local/cram_prepare_samtools_bedtools/tests}/main.nf.test (99%) rename {tests/subworkflows/local/cram_prepare_samtools_bedtools => subworkflows/local/cram_prepare_samtools_bedtools/tests}/main.nf.test.snap (100%) rename {tests/subworkflows/local/gvcf_joint_genotype_gatk4 => subworkflows/local/gvcf_joint_genotype_gatk4/tests}/main.nf.test (98%) rename {tests/subworkflows/local/gvcf_joint_genotype_gatk4 => subworkflows/local/gvcf_joint_genotype_gatk4/tests}/main.nf.test.snap (100%) rename {tests/subworkflows/local/input_split_bedtools => subworkflows/local/input_split_bedtools/tests}/main.nf.test (95%) rename {tests/subworkflows/local/input_split_bedtools => subworkflows/local/input_split_bedtools/tests}/main.nf.test.snap (100%) rename {tests/subworkflows/local/vcf_annotation => subworkflows/local/vcf_annotation/tests}/main.nf.test (98%) rename {tests/subworkflows/local/vcf_annotation => subworkflows/local/vcf_annotation/tests}/main.nf.test.snap (100%) rename {tests/subworkflows/local/vcf_dbsnp_vcfanno => subworkflows/local/vcf_dbsnp_vcfanno/tests}/main.nf.test (95%) rename {tests/subworkflows/local/vcf_dbsnp_vcfanno => subworkflows/local/vcf_dbsnp_vcfanno/tests}/main.nf.test.snap (100%) rename {tests/subworkflows/local/vcf_extract_relate_somalier => subworkflows/local/vcf_extract_relate_somalier/tests}/main.nf.test (97%) rename {tests/subworkflows/local/vcf_extract_relate_somalier => subworkflows/local/vcf_extract_relate_somalier/tests}/main.nf.test.snap (100%) rename {tests/subworkflows/local/vcf_ped_rtgtools => subworkflows/local/vcf_ped_rtgtools/tests}/main.nf.test (95%) rename {tests/subworkflows/local/vcf_ped_rtgtools => subworkflows/local/vcf_ped_rtgtools/tests}/main.nf.test.snap (100%) rename {tests/subworkflows/local/vcf_roh_automap => subworkflows/local/vcf_roh_automap/tests}/main.nf.test (97%) rename {tests/subworkflows/local/vcf_roh_automap => subworkflows/local/vcf_roh_automap/tests}/main.nf.test.snap (100%) rename {tests/subworkflows/local/vcf_upd_updio => subworkflows/local/vcf_upd_updio/tests}/main.nf.test (97%) rename {tests/subworkflows/local/vcf_upd_updio => subworkflows/local/vcf_upd_updio/tests}/main.nf.test.snap (100%) rename {tests/subworkflows/local/vcf_validate_small_variants => subworkflows/local/vcf_validate_small_variants/tests}/main.nf.test (97%) rename {tests/subworkflows/local/vcf_validate_small_variants => subworkflows/local/vcf_validate_small_variants/tests}/main.nf.test.snap (100%) diff --git a/tests/subworkflows/local/bam_call_elprep/main.nf.test b/subworkflows/local/bam_call_elprep/tests/main.nf.test similarity index 98% rename from tests/subworkflows/local/bam_call_elprep/main.nf.test rename to subworkflows/local/bam_call_elprep/tests/main.nf.test index 534deee0..a096fd32 100644 --- a/tests/subworkflows/local/bam_call_elprep/main.nf.test +++ b/subworkflows/local/bam_call_elprep/tests/main.nf.test @@ -1,7 +1,7 @@ nextflow_workflow { name "Test Workflow BAM_CALL_ELPREP" - script "subworkflows/local/bam_call_elprep/main.nf" + script "../main.nf" workflow "BAM_CALL_ELPREP" tag "subworkflows" diff --git a/tests/subworkflows/local/bam_call_elprep/main.nf.test.snap b/subworkflows/local/bam_call_elprep/tests/main.nf.test.snap similarity index 100% rename from tests/subworkflows/local/bam_call_elprep/main.nf.test.snap rename to subworkflows/local/bam_call_elprep/tests/main.nf.test.snap diff --git a/subworkflows/local/bam_call_vardictjava/main.nf b/subworkflows/local/bam_call_vardictjava/main.nf index 0081bf51..d24fe6d2 100644 --- a/subworkflows/local/bam_call_vardictjava/main.nf +++ b/subworkflows/local/bam_call_vardictjava/main.nf @@ -16,7 +16,6 @@ workflow BAM_CALL_VARDICTJAVA { ch_fai // channel: [mandatory] [ val(meta), path(fai) ] => fasta reference index ch_dbsnp // channel: [optional] [ path(vcf) ] => the dbnsp vcf file ch_dbsnp_tbi // channel: [optional] [ path(tbi) ] => the dbsnp vcf index file - filter // boolean: filter the VCFs main: def ch_versions = Channel.empty() diff --git a/tests/subworkflows/local/bam_call_vardictjava/main.nf.test b/subworkflows/local/bam_call_vardictjava/tests/main.nf.test similarity index 95% rename from tests/subworkflows/local/bam_call_vardictjava/main.nf.test rename to subworkflows/local/bam_call_vardictjava/tests/main.nf.test index c64a4461..46ec0aed 100644 --- a/tests/subworkflows/local/bam_call_vardictjava/main.nf.test +++ b/subworkflows/local/bam_call_vardictjava/tests/main.nf.test @@ -1,7 +1,7 @@ nextflow_workflow { name "Test Workflow BAM_CALL_VARDICTJAVA" - script "subworkflows/local/bam_call_vardictjava/main.nf" + script "../main.nf" workflow "BAM_CALL_VARDICTJAVA" tag "subworkflows" @@ -43,7 +43,6 @@ nextflow_workflow { ]) input[3] = [[],[]] input[4] = [[],[]] - input[5] = false """ } } diff --git a/tests/subworkflows/local/bam_call_vardictjava/main.nf.test.snap b/subworkflows/local/bam_call_vardictjava/tests/main.nf.test.snap similarity index 100% rename from tests/subworkflows/local/bam_call_vardictjava/main.nf.test.snap rename to subworkflows/local/bam_call_vardictjava/tests/main.nf.test.snap diff --git a/tests/subworkflows/local/cram_call_gatk4/main.nf.test b/subworkflows/local/cram_call_gatk4/tests/main.nf.test similarity index 98% rename from tests/subworkflows/local/cram_call_gatk4/main.nf.test rename to subworkflows/local/cram_call_gatk4/tests/main.nf.test index cbf271c4..1807948a 100644 --- a/tests/subworkflows/local/cram_call_gatk4/main.nf.test +++ b/subworkflows/local/cram_call_gatk4/tests/main.nf.test @@ -1,7 +1,7 @@ nextflow_workflow { name "Test Workflow CRAM_CALL_GATK4" - script "subworkflows/local/cram_call_gatk4/main.nf" + script "../main.nf" workflow "CRAM_CALL_GATK4" tag "subworkflows" diff --git a/tests/subworkflows/local/cram_call_gatk4/main.nf.test.snap b/subworkflows/local/cram_call_gatk4/tests/main.nf.test.snap similarity index 100% rename from tests/subworkflows/local/cram_call_gatk4/main.nf.test.snap rename to subworkflows/local/cram_call_gatk4/tests/main.nf.test.snap diff --git a/tests/subworkflows/local/cram_prepare_samtools_bedtools/main.nf.test b/subworkflows/local/cram_prepare_samtools_bedtools/tests/main.nf.test similarity index 99% rename from tests/subworkflows/local/cram_prepare_samtools_bedtools/main.nf.test rename to subworkflows/local/cram_prepare_samtools_bedtools/tests/main.nf.test index 511ca4d3..cef1fb7b 100644 --- a/tests/subworkflows/local/cram_prepare_samtools_bedtools/main.nf.test +++ b/subworkflows/local/cram_prepare_samtools_bedtools/tests/main.nf.test @@ -1,7 +1,7 @@ nextflow_workflow { name "Test Workflow CRAM_PREPARE_SAMTOOLS_BEDTOOLS" - script "subworkflows/local/cram_prepare_samtools_bedtools/main.nf" + script "../main.nf" workflow "CRAM_PREPARE_SAMTOOLS_BEDTOOLS" tag "subworkflows" diff --git a/tests/subworkflows/local/cram_prepare_samtools_bedtools/main.nf.test.snap b/subworkflows/local/cram_prepare_samtools_bedtools/tests/main.nf.test.snap similarity index 100% rename from tests/subworkflows/local/cram_prepare_samtools_bedtools/main.nf.test.snap rename to subworkflows/local/cram_prepare_samtools_bedtools/tests/main.nf.test.snap diff --git a/tests/subworkflows/local/gvcf_joint_genotype_gatk4/main.nf.test b/subworkflows/local/gvcf_joint_genotype_gatk4/tests/main.nf.test similarity index 98% rename from tests/subworkflows/local/gvcf_joint_genotype_gatk4/main.nf.test rename to subworkflows/local/gvcf_joint_genotype_gatk4/tests/main.nf.test index 4657547b..4e68db59 100644 --- a/tests/subworkflows/local/gvcf_joint_genotype_gatk4/main.nf.test +++ b/subworkflows/local/gvcf_joint_genotype_gatk4/tests/main.nf.test @@ -1,7 +1,7 @@ nextflow_workflow { name "Test Workflow GVCF_JOINT_GENOTYPE_GATK4" - script "subworkflows/local/gvcf_joint_genotype_gatk4/main.nf" + script "../main.nf" workflow "GVCF_JOINT_GENOTYPE_GATK4" tag "subworkflows" diff --git a/tests/subworkflows/local/gvcf_joint_genotype_gatk4/main.nf.test.snap b/subworkflows/local/gvcf_joint_genotype_gatk4/tests/main.nf.test.snap similarity index 100% rename from tests/subworkflows/local/gvcf_joint_genotype_gatk4/main.nf.test.snap rename to subworkflows/local/gvcf_joint_genotype_gatk4/tests/main.nf.test.snap diff --git a/tests/subworkflows/local/input_split_bedtools/main.nf.test b/subworkflows/local/input_split_bedtools/tests/main.nf.test similarity index 95% rename from tests/subworkflows/local/input_split_bedtools/main.nf.test rename to subworkflows/local/input_split_bedtools/tests/main.nf.test index 87cc55a6..e03c02d6 100644 --- a/tests/subworkflows/local/input_split_bedtools/main.nf.test +++ b/subworkflows/local/input_split_bedtools/tests/main.nf.test @@ -1,7 +1,7 @@ nextflow_workflow { name "Test Workflow INPUT_SPLIT_BEDTOOLS" - script "subworkflows/local/input_split_bedtools/main.nf" + script "../main.nf" workflow "INPUT_SPLIT_BEDTOOLS" tag "subworkflows" diff --git a/tests/subworkflows/local/input_split_bedtools/main.nf.test.snap b/subworkflows/local/input_split_bedtools/tests/main.nf.test.snap similarity index 100% rename from tests/subworkflows/local/input_split_bedtools/main.nf.test.snap rename to subworkflows/local/input_split_bedtools/tests/main.nf.test.snap diff --git a/tests/subworkflows/local/vcf_annotation/main.nf.test b/subworkflows/local/vcf_annotation/tests/main.nf.test similarity index 98% rename from tests/subworkflows/local/vcf_annotation/main.nf.test rename to subworkflows/local/vcf_annotation/tests/main.nf.test index bd3fc2c0..84835994 100644 --- a/tests/subworkflows/local/vcf_annotation/main.nf.test +++ b/subworkflows/local/vcf_annotation/tests/main.nf.test @@ -1,7 +1,7 @@ nextflow_workflow { name "Test Workflow VCF_ANNOTATION" - script "subworkflows/local/vcf_annotation/main.nf" + script "../main.nf" workflow "VCF_ANNOTATION" tag "subworkflows" diff --git a/tests/subworkflows/local/vcf_annotation/main.nf.test.snap b/subworkflows/local/vcf_annotation/tests/main.nf.test.snap similarity index 100% rename from tests/subworkflows/local/vcf_annotation/main.nf.test.snap rename to subworkflows/local/vcf_annotation/tests/main.nf.test.snap diff --git a/tests/subworkflows/local/vcf_dbsnp_vcfanno/main.nf.test b/subworkflows/local/vcf_dbsnp_vcfanno/tests/main.nf.test similarity index 95% rename from tests/subworkflows/local/vcf_dbsnp_vcfanno/main.nf.test rename to subworkflows/local/vcf_dbsnp_vcfanno/tests/main.nf.test index 75443075..77f8c579 100644 --- a/tests/subworkflows/local/vcf_dbsnp_vcfanno/main.nf.test +++ b/subworkflows/local/vcf_dbsnp_vcfanno/tests/main.nf.test @@ -1,7 +1,7 @@ nextflow_workflow { name "Test Workflow VCF_DBSNP_VCFANNO" - script "subworkflows/local/vcf_dbsnp_vcfanno/main.nf" + script "../main.nf" workflow "VCF_DBSNP_VCFANNO" tag "subworkflows" diff --git a/tests/subworkflows/local/vcf_dbsnp_vcfanno/main.nf.test.snap b/subworkflows/local/vcf_dbsnp_vcfanno/tests/main.nf.test.snap similarity index 100% rename from tests/subworkflows/local/vcf_dbsnp_vcfanno/main.nf.test.snap rename to subworkflows/local/vcf_dbsnp_vcfanno/tests/main.nf.test.snap diff --git a/tests/subworkflows/local/vcf_extract_relate_somalier/main.nf.test b/subworkflows/local/vcf_extract_relate_somalier/tests/main.nf.test similarity index 97% rename from tests/subworkflows/local/vcf_extract_relate_somalier/main.nf.test rename to subworkflows/local/vcf_extract_relate_somalier/tests/main.nf.test index 3e277b57..7c4d9351 100644 --- a/tests/subworkflows/local/vcf_extract_relate_somalier/main.nf.test +++ b/subworkflows/local/vcf_extract_relate_somalier/tests/main.nf.test @@ -1,7 +1,7 @@ nextflow_workflow { name "Test Workflow VCF_EXTRACT_RELATE_SOMALIER" - script "subworkflows/local/vcf_extract_relate_somalier/main.nf" + script "../main.nf" workflow "VCF_EXTRACT_RELATE_SOMALIER" tag "subworkflows" diff --git a/tests/subworkflows/local/vcf_extract_relate_somalier/main.nf.test.snap b/subworkflows/local/vcf_extract_relate_somalier/tests/main.nf.test.snap similarity index 100% rename from tests/subworkflows/local/vcf_extract_relate_somalier/main.nf.test.snap rename to subworkflows/local/vcf_extract_relate_somalier/tests/main.nf.test.snap diff --git a/tests/subworkflows/local/vcf_ped_rtgtools/main.nf.test b/subworkflows/local/vcf_ped_rtgtools/tests/main.nf.test similarity index 95% rename from tests/subworkflows/local/vcf_ped_rtgtools/main.nf.test rename to subworkflows/local/vcf_ped_rtgtools/tests/main.nf.test index 24398ed4..6f4b916f 100644 --- a/tests/subworkflows/local/vcf_ped_rtgtools/main.nf.test +++ b/subworkflows/local/vcf_ped_rtgtools/tests/main.nf.test @@ -1,7 +1,7 @@ nextflow_workflow { name "Test Workflow VCF_PED_RTGTOOLS" - script "subworkflows/local/vcf_ped_rtgtools/main.nf" + script "../main.nf" workflow "VCF_PED_RTGTOOLS" tag "subworkflows" diff --git a/tests/subworkflows/local/vcf_ped_rtgtools/main.nf.test.snap b/subworkflows/local/vcf_ped_rtgtools/tests/main.nf.test.snap similarity index 100% rename from tests/subworkflows/local/vcf_ped_rtgtools/main.nf.test.snap rename to subworkflows/local/vcf_ped_rtgtools/tests/main.nf.test.snap diff --git a/tests/subworkflows/local/vcf_roh_automap/main.nf.test b/subworkflows/local/vcf_roh_automap/tests/main.nf.test similarity index 97% rename from tests/subworkflows/local/vcf_roh_automap/main.nf.test rename to subworkflows/local/vcf_roh_automap/tests/main.nf.test index 724b1757..a58e50a7 100644 --- a/tests/subworkflows/local/vcf_roh_automap/main.nf.test +++ b/subworkflows/local/vcf_roh_automap/tests/main.nf.test @@ -1,7 +1,7 @@ nextflow_workflow { name "Test Workflow VCF_ROH_AUTOMAP" - script "subworkflows/local/vcf_roh_automap/main.nf" + script "../main.nf" workflow "VCF_ROH_AUTOMAP" tag "subworkflows" diff --git a/tests/subworkflows/local/vcf_roh_automap/main.nf.test.snap b/subworkflows/local/vcf_roh_automap/tests/main.nf.test.snap similarity index 100% rename from tests/subworkflows/local/vcf_roh_automap/main.nf.test.snap rename to subworkflows/local/vcf_roh_automap/tests/main.nf.test.snap diff --git a/tests/subworkflows/local/vcf_upd_updio/main.nf.test b/subworkflows/local/vcf_upd_updio/tests/main.nf.test similarity index 97% rename from tests/subworkflows/local/vcf_upd_updio/main.nf.test rename to subworkflows/local/vcf_upd_updio/tests/main.nf.test index 2bc15720..8e4ff3f5 100644 --- a/tests/subworkflows/local/vcf_upd_updio/main.nf.test +++ b/subworkflows/local/vcf_upd_updio/tests/main.nf.test @@ -1,7 +1,7 @@ nextflow_workflow { name "Test Workflow VCF_UPD_UPDIO" - script "subworkflows/local/vcf_upd_updio/main.nf" + script "../main.nf" workflow "VCF_UPD_UPDIO" tag "subworkflows" diff --git a/tests/subworkflows/local/vcf_upd_updio/main.nf.test.snap b/subworkflows/local/vcf_upd_updio/tests/main.nf.test.snap similarity index 100% rename from tests/subworkflows/local/vcf_upd_updio/main.nf.test.snap rename to subworkflows/local/vcf_upd_updio/tests/main.nf.test.snap diff --git a/tests/subworkflows/local/vcf_validate_small_variants/main.nf.test b/subworkflows/local/vcf_validate_small_variants/tests/main.nf.test similarity index 97% rename from tests/subworkflows/local/vcf_validate_small_variants/main.nf.test rename to subworkflows/local/vcf_validate_small_variants/tests/main.nf.test index 6d96871d..e947b04d 100644 --- a/tests/subworkflows/local/vcf_validate_small_variants/main.nf.test +++ b/subworkflows/local/vcf_validate_small_variants/tests/main.nf.test @@ -1,7 +1,7 @@ nextflow_workflow { name "Test Workflow VCF_VALIDATE_SMALL_VARIANTS" - script "subworkflows/local/vcf_validate_small_variants/main.nf" + script "../main.nf" workflow "VCF_VALIDATE_SMALL_VARIANTS" tag "subworkflows" diff --git a/tests/subworkflows/local/vcf_validate_small_variants/main.nf.test.snap b/subworkflows/local/vcf_validate_small_variants/tests/main.nf.test.snap similarity index 100% rename from tests/subworkflows/local/vcf_validate_small_variants/main.nf.test.snap rename to subworkflows/local/vcf_validate_small_variants/tests/main.nf.test.snap diff --git a/workflows/germline.nf b/workflows/germline.nf index 42fdbe96..a83355f5 100644 --- a/workflows/germline.nf +++ b/workflows/germline.nf @@ -502,8 +502,7 @@ workflow GERMLINE { ch_fasta_ready, ch_fai_ready, ch_dbsnp_ready, - ch_dbsnp_tbi_ready, - filter + ch_dbsnp_tbi_ready ) ch_versions = ch_versions.mix(BAM_CALL_VARDICTJAVA.out.versions) From ddb39a2393ed74f52f9e2659888bebe17a19c668 Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Thu, 14 Nov 2024 13:15:38 +0100 Subject: [PATCH 097/167] add restrictions on sample and family name --- assets/schema_input.json | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/assets/schema_input.json b/assets/schema_input.json index f1141ae6..7915f661 100644 --- a/assets/schema_input.json +++ b/assets/schema_input.json @@ -9,11 +9,15 @@ "properties": { "sample": { "type": "string", - "meta": ["id", "sample"] + "pattern": "^[^\\. ]+$", + "meta": ["id", "sample"], + "errorMessage": "Sample name should be a string that does not contain dots or spaces" }, "family": { "type": "string", - "meta": ["family"] + "pattern": "^[^\\. ]+$", + "meta": ["family"], + "errorMessage": "Family name should be a string that does not contain dots or spaces" }, "cram": { "oneOf": [ From da5d1f8a33647eb62297e0e5f1f4b58cdbc23840 Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Thu, 14 Nov 2024 13:21:42 +0100 Subject: [PATCH 098/167] update rtgtools/format --- modules.json | 2 +- modules/nf-core/rtgtools/format/main.nf | 1 - .../rtgtools/format/tests/fastq.config | 3 + .../rtgtools/format/tests/main.nf.test | 138 ++++++++++++++++++ .../rtgtools/format/tests/main.nf.test.snap | 118 +++++++++++++++ .../nf-core/rtgtools/format/tests/sam.config | 3 + 6 files changed, 263 insertions(+), 2 deletions(-) create mode 100644 modules/nf-core/rtgtools/format/tests/fastq.config create mode 100644 modules/nf-core/rtgtools/format/tests/main.nf.test create mode 100644 modules/nf-core/rtgtools/format/tests/main.nf.test.snap create mode 100644 modules/nf-core/rtgtools/format/tests/sam.config diff --git a/modules.json b/modules.json index a9c6c52c..4696c359 100644 --- a/modules.json +++ b/modules.json @@ -137,7 +137,7 @@ }, "rtgtools/format": { "branch": "master", - "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", + "git_sha": "167a20a2e267261af397e9ea5bf58426e6345ce7", "installed_by": ["modules"] }, "rtgtools/pedfilter": { diff --git a/modules/nf-core/rtgtools/format/main.nf b/modules/nf-core/rtgtools/format/main.nf index 802d3b20..9cae7f99 100644 --- a/modules/nf-core/rtgtools/format/main.nf +++ b/modules/nf-core/rtgtools/format/main.nf @@ -46,7 +46,6 @@ process RTGTOOLS_FORMAT { """ stub: - def args = task.ext.args ?: '' def prefix = task.ext.prefix ?: "${meta.id}" def avail_mem = "3G" diff --git a/modules/nf-core/rtgtools/format/tests/fastq.config b/modules/nf-core/rtgtools/format/tests/fastq.config new file mode 100644 index 00000000..24540986 --- /dev/null +++ b/modules/nf-core/rtgtools/format/tests/fastq.config @@ -0,0 +1,3 @@ +process { + ext.args = "--format fastq" +} diff --git a/modules/nf-core/rtgtools/format/tests/main.nf.test b/modules/nf-core/rtgtools/format/tests/main.nf.test new file mode 100644 index 00000000..d3b39800 --- /dev/null +++ b/modules/nf-core/rtgtools/format/tests/main.nf.test @@ -0,0 +1,138 @@ +nextflow_process { + + name "Test Process RTGTOOLS_FORMAT" + script "../main.nf" + process "RTGTOOLS_FORMAT" + + tag "modules" + tag "modules_nfcore" + tag "rtgtools" + tag "rtgtools/format" + + test("sarscov2 - fasta") { + + when { + process { + """ + input[0] = [ + [id:'test'], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true), + [], + [] + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + path(process.out.sdf[0][1]).list().collect { file(it.toString()).name }, + process.out.versions + ).match() } + ) + } + + } + + test("sarscov2 - fastqs") { + + config "./fastq.config" + + when { + process { + """ + input[0] = [ + [id:'test'], + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true), + [] + ] + """ + } + } + + when { + process { + """ + input[0] = [ + [id:'test'], + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true), + [] + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + path(process.out.sdf[0][1]).list().collect { file(it.toString()).name }, + process.out.versions + ).match() } + ) + } + + } + + test("sarscov2 - bam, rg") { + + config "./sam.config" + + when { + process { + """ + def rg = Channel.of("@RG\tID:READGROUP1\tSM:SAMPLE\tPL:ILLUMINA") + .collectFile(name:'sam_rg.txt') + + input[0] = Channel.of([ + [id:'test'], + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.single_end.bam', checkIfExists: true), + [] + ]).combine(rg) + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + path(process.out.sdf[0][1]).list().collect { file(it.toString()).name }, + process.out.versions + ).match() } + ) + } + + } + + test("sarscov2 - fasta - stub") { + + options "-stub" + + when { + process { + """ + input[0] = [ + [id:'test'], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true), + [], + [] + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + +} diff --git a/modules/nf-core/rtgtools/format/tests/main.nf.test.snap b/modules/nf-core/rtgtools/format/tests/main.nf.test.snap new file mode 100644 index 00000000..1494221b --- /dev/null +++ b/modules/nf-core/rtgtools/format/tests/main.nf.test.snap @@ -0,0 +1,118 @@ +{ + "sarscov2 - fasta - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.sdf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + "versions.yml:md5,2ed5b05daa28126a8c34ab9e30f0f3b5" + ], + "sdf": [ + [ + { + "id": "test" + }, + "test.sdf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,2ed5b05daa28126a8c34ab9e30f0f3b5" + ] + } + ], + "meta": { + "nf-test": "0.9.1", + "nextflow": "24.10.0" + }, + "timestamp": "2024-11-04T16:20:31.290508593" + }, + "sarscov2 - fasta": { + "content": [ + [ + "done", + "format.log", + "mainIndex", + "nameIndex0", + "namedata0", + "namepointer0", + "progress", + "seqdata0", + "seqpointer0", + "sequenceIndex0", + "suffixIndex0", + "suffixdata0", + "suffixpointer0", + "summary.txt" + ], + [ + "versions.yml:md5,2ed5b05daa28126a8c34ab9e30f0f3b5" + ] + ], + "meta": { + "nf-test": "0.9.1", + "nextflow": "24.10.0" + }, + "timestamp": "2024-11-05T12:26:34.333493927" + }, + "sarscov2 - fastqs": { + "content": [ + [ + "done", + "format.log", + "mainIndex", + "nameIndex0", + "namedata0", + "namepointer0", + "progress", + "qualitydata0", + "seqdata0", + "seqpointer0", + "sequenceIndex0", + "suffixIndex0", + "suffixdata0", + "suffixpointer0", + "summary.txt" + ], + [ + "versions.yml:md5,2ed5b05daa28126a8c34ab9e30f0f3b5" + ] + ], + "meta": { + "nf-test": "0.9.1", + "nextflow": "24.10.0" + }, + "timestamp": "2024-11-05T12:26:56.018604071" + }, + "sarscov2 - bam, rg": { + "content": [ + [ + "done", + "format.log", + "mainIndex", + "nameIndex0", + "namedata0", + "namepointer0", + "progress", + "qualitydata0", + "seqdata0", + "seqpointer0", + "sequenceIndex0", + "summary.txt" + ], + [ + "versions.yml:md5,2ed5b05daa28126a8c34ab9e30f0f3b5" + ] + ], + "meta": { + "nf-test": "0.9.1", + "nextflow": "24.10.0" + }, + "timestamp": "2024-11-05T12:27:10.103855977" + } +} \ No newline at end of file diff --git a/modules/nf-core/rtgtools/format/tests/sam.config b/modules/nf-core/rtgtools/format/tests/sam.config new file mode 100644 index 00000000..cd57e8b6 --- /dev/null +++ b/modules/nf-core/rtgtools/format/tests/sam.config @@ -0,0 +1,3 @@ +process { + ext.args = "--format sam-se" +} \ No newline at end of file From 9d4db4f82b4da75a172b4f03671a9b9510fa2274 Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Thu, 14 Nov 2024 13:43:10 +0100 Subject: [PATCH 099/167] test vcf_concat_bcftools --- .../vcf_concat_bcftools/tests/main.nf.test | 75 +++++++++++++++++++ .../tests/main.nf.test.snap | 45 +++++++++++ .../vcf_concat_bcftools/tests/nextflow.config | 6 ++ 3 files changed, 126 insertions(+) create mode 100644 subworkflows/local/vcf_concat_bcftools/tests/main.nf.test create mode 100644 subworkflows/local/vcf_concat_bcftools/tests/main.nf.test.snap create mode 100644 subworkflows/local/vcf_concat_bcftools/tests/nextflow.config diff --git a/subworkflows/local/vcf_concat_bcftools/tests/main.nf.test b/subworkflows/local/vcf_concat_bcftools/tests/main.nf.test new file mode 100644 index 00000000..deb66854 --- /dev/null +++ b/subworkflows/local/vcf_concat_bcftools/tests/main.nf.test @@ -0,0 +1,75 @@ +nextflow_workflow { + + name "Test Workflow VCF_CONCAT_BCFTOOLS" + script "../main.nf" + workflow "VCF_CONCAT_BCFTOOLS" + + tag "subworkflows" + tag "subworkflows_local" + tag "vcf_concat_bcftools" + + test("vcf_concat_bcftools - no_tabix") { + + config "./nextflow.config" + + when { + workflow { + """ + input[0] = Channel.of([ + [id:"NA24143", sample:"NA24143", family:"Ashkenazim", family_samples:"NA24143", caller:"haplotypecaller", split_count:2], + file(params.gvcf1, checkIfExists:true), + file(params.gtbi1, checkIfExists:true) + ],[ + [id:"NA24143", sample:"NA24143", family:"Ashkenazim", family_samples:"NA24143", caller:"haplotypecaller", split_count:2], + file(params.vcf1, checkIfExists:true), + file(params.tbi1, checkIfExists:true) + ]) + input[1] = false + """ + } + } + + then { + assertAll( + { assert workflow.success }, + { assert snapshot( + workflow.out.vcfs.collect { [it[0], "variantsMD5:${path(it[1]).vcf.variantsMD5}"] } + ).match() } + ) + } + + } + + test("vcf_concat_bcftools - tabix") { + + config "./nextflow.config" + + when { + workflow { + """ + input[0] = Channel.of([ + [id:"NA24143", sample:"NA24143", family:"Ashkenazim", family_samples:"NA24143", caller:"haplotypecaller", split_count:2], + file(params.gvcf1, checkIfExists:true), + file(params.gtbi1, checkIfExists:true) + ],[ + [id:"NA24143", sample:"NA24143", family:"Ashkenazim", family_samples:"NA24143", caller:"haplotypecaller", split_count:2], + file(params.vcf1, checkIfExists:true), + file(params.tbi1, checkIfExists:true) + ]) + input[1] = true + """ + } + } + + then { + assertAll( + { assert workflow.success }, + { assert snapshot( + workflow.out.vcfs.collect { [it[0], "variantsMD5:${path(it[1]).vcf.variantsMD5}", it[2][-10..-1]] } + ).match() } + ) + } + + } + +} diff --git a/subworkflows/local/vcf_concat_bcftools/tests/main.nf.test.snap b/subworkflows/local/vcf_concat_bcftools/tests/main.nf.test.snap new file mode 100644 index 00000000..cfbc2f82 --- /dev/null +++ b/subworkflows/local/vcf_concat_bcftools/tests/main.nf.test.snap @@ -0,0 +1,45 @@ +{ + "vcf_concat_bcftools - tabix": { + "content": [ + [ + [ + { + "id": "NA24143", + "sample": "NA24143", + "family": "Ashkenazim", + "family_samples": "NA24143", + "caller": "haplotypecaller" + }, + "variantsMD5:843352db8fe3f441ffa026dc72a30c35", + "vcf.gz.tbi" + ] + ] + ], + "meta": { + "nf-test": "0.9.1", + "nextflow": "24.10.0" + }, + "timestamp": "2024-11-14T13:41:32.794902067" + }, + "vcf_concat_bcftools - no_tabix": { + "content": [ + [ + [ + { + "id": "NA24143", + "sample": "NA24143", + "family": "Ashkenazim", + "family_samples": "NA24143", + "caller": "haplotypecaller" + }, + "variantsMD5:843352db8fe3f441ffa026dc72a30c35" + ] + ] + ], + "meta": { + "nf-test": "0.9.1", + "nextflow": "24.10.0" + }, + "timestamp": "2024-11-14T13:42:04.623824246" + } +} \ No newline at end of file diff --git a/subworkflows/local/vcf_concat_bcftools/tests/nextflow.config b/subworkflows/local/vcf_concat_bcftools/tests/nextflow.config new file mode 100644 index 00000000..9eaaf613 --- /dev/null +++ b/subworkflows/local/vcf_concat_bcftools/tests/nextflow.config @@ -0,0 +1,6 @@ +process { + withName: "BCFTOOLS_CONCAT" { + ext.args = "--allow-overlaps --output-type z" + ext.prefix = { "${meta.id}.concat" } + } +} \ No newline at end of file From 5d1f11750f5cb9e4a63ab487131996e49231f16f Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Thu, 14 Nov 2024 13:48:23 +0100 Subject: [PATCH 100/167] test vcf_filter_bcftools --- .../vcf_filter_bcftools/tests/main.nf.test | 67 +++++++++++++++++++ .../tests/main.nf.test.snap | 45 +++++++++++++ .../vcf_filter_bcftools/tests/nextflow.config | 10 +++ 3 files changed, 122 insertions(+) create mode 100644 subworkflows/local/vcf_filter_bcftools/tests/main.nf.test create mode 100644 subworkflows/local/vcf_filter_bcftools/tests/main.nf.test.snap create mode 100644 subworkflows/local/vcf_filter_bcftools/tests/nextflow.config diff --git a/subworkflows/local/vcf_filter_bcftools/tests/main.nf.test b/subworkflows/local/vcf_filter_bcftools/tests/main.nf.test new file mode 100644 index 00000000..317c60bf --- /dev/null +++ b/subworkflows/local/vcf_filter_bcftools/tests/main.nf.test @@ -0,0 +1,67 @@ +nextflow_workflow { + + name "Test Workflow VCF_FILTER_BCFTOOLS" + script "../main.nf" + workflow "VCF_FILTER_BCFTOOLS" + + tag "subworkflows" + tag "subworkflows_local" + tag "vcf_filter_bcftools" + + test("vcf_filter_bcftools - no_tabix") { + + config "./nextflow.config" + + when { + workflow { + """ + input[0] = Channel.of([ + [id:"NA24143", sample:"NA24143", family:"Ashkenazim", family_samples:"NA24143", caller:"haplotypecaller"], + file(params.vcf1, checkIfExists:true), + file(params.tbi1, checkIfExists:true) + ]) + input[1] = false + """ + } + } + + then { + assertAll( + { assert workflow.success }, + { assert snapshot( + workflow.out.vcfs.collect { [it[0], "variantsMD5:${path(it[1]).vcf.variantsMD5}"] } + ).match() } + ) + } + + } + + test("vcf_filter_bcftools - tabix") { + + config "./nextflow.config" + + when { + workflow { + """ + input[0] = Channel.of([ + [id:"NA24143", sample:"NA24143", family:"Ashkenazim", family_samples:"NA24143", caller:"haplotypecaller"], + file(params.vcf1, checkIfExists:true), + file(params.tbi1, checkIfExists:true) + ]) + input[1] = true + """ + } + } + + then { + assertAll( + { assert workflow.success }, + { assert snapshot( + workflow.out.vcfs.collect { [it[0], "variantsMD5:${path(it[1]).vcf.variantsMD5}", it[2][-10..-1]] } + ).match() } + ) + } + + } + +} diff --git a/subworkflows/local/vcf_filter_bcftools/tests/main.nf.test.snap b/subworkflows/local/vcf_filter_bcftools/tests/main.nf.test.snap new file mode 100644 index 00000000..9bc09fa6 --- /dev/null +++ b/subworkflows/local/vcf_filter_bcftools/tests/main.nf.test.snap @@ -0,0 +1,45 @@ +{ + "vcf_filter_bcftools - tabix": { + "content": [ + [ + [ + { + "id": "NA24143", + "sample": "NA24143", + "family": "Ashkenazim", + "family_samples": "NA24143", + "caller": "haplotypecaller" + }, + "variantsMD5:2ce8bc96a9b3afbf060cdd89e74c4c82", + "vcf.gz.tbi" + ] + ] + ], + "meta": { + "nf-test": "0.9.1", + "nextflow": "24.10.0" + }, + "timestamp": "2024-11-14T13:46:42.107550656" + }, + "vcf_filter_bcftools - no_tabix": { + "content": [ + [ + [ + { + "id": "NA24143", + "sample": "NA24143", + "family": "Ashkenazim", + "family_samples": "NA24143", + "caller": "haplotypecaller" + }, + "variantsMD5:2ce8bc96a9b3afbf060cdd89e74c4c82" + ] + ] + ], + "meta": { + "nf-test": "0.9.1", + "nextflow": "24.10.0" + }, + "timestamp": "2024-11-14T13:46:30.33756839" + } +} \ No newline at end of file diff --git a/subworkflows/local/vcf_filter_bcftools/tests/nextflow.config b/subworkflows/local/vcf_filter_bcftools/tests/nextflow.config new file mode 100644 index 00000000..cd40f131 --- /dev/null +++ b/subworkflows/local/vcf_filter_bcftools/tests/nextflow.config @@ -0,0 +1,10 @@ +process { + withName: "FILTER_1" { + ext.args = "--output-type z --soft-filter 'GATKCutoffSNP' -e 'TYPE=\"snp\" && (MQRankSum < -12.5 || ReadPosRankSum < -8.0 || QD < 2.0 || FS > 60.0 || MQ < 30.0)' -m '+'" + ext.prefix = { "${meta.id}.filter1" } + } + + withName: "FILTER_2" { + ext.args = '--output-type z --soft-filter \'GATKCutoffIndel\' -e \'TYPE="indel" && (ReadPosRankSum < -20.0 || QD < 2.0 || FS > 200.0 || SOR > 10.0 )\' -m \'+\'' + } +} \ No newline at end of file From 37f15b5ca374be6f78e61e256b39ad23ac5f99ca Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Thu, 14 Nov 2024 14:05:04 +0100 Subject: [PATCH 101/167] add a test coverage ci comment --- .github/workflows/test-coverage.yml | 61 +++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 .github/workflows/test-coverage.yml diff --git a/.github/workflows/test-coverage.yml b/.github/workflows/test-coverage.yml new file mode 100644 index 00000000..69eba2c0 --- /dev/null +++ b/.github/workflows/test-coverage.yml @@ -0,0 +1,61 @@ +name: nf-test coverage +# This workflow runs the pipeline with the minimal test dataset to check that it completes without any syntax errors +on: + push: + branches: + - dev + pull_request: + release: + types: [published] + workflow_dispatch: + +env: + NXF_ANSI_LOG: false + +jobs: + coverage: + name: Determine test coverage + # Only run on push if this is the nf-core dev branch (merged PRs) + if: "${{ github.event_name != 'push' || (github.event_name == 'push' && github.repository == 'nf-cmgg/germline') }}" + runs-on: ubuntu-latest + steps: + - name: Check out pipeline code + uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4 + with: + fetch-depth: 0 + + - name: Install Nextflow + uses: nf-core/setup-nextflow@v2 + + - name: Disk space cleanup + uses: jlumbroso/free-disk-space@54081f138730dfa15788a46383842cd2f914a1be # v1.3.1 + + - name: Install nf-test + run: | + conda install -c bioconda nf-test + + - name: Determine coverage + id: coverage + run: | + output=$($CONDA/bin/nf-test coverage --silent | grep -vE "^(Load|Warning|Files)") + files=$(echo $output | grep " •") + coverage=$(echo $output | grep "COVERAGE") + echo "::set-output name=files_output::files" + echo "::set-output name=coverage_output::coverage" + + - name: Comment coverage + uses: bubkoo/auto-comment@v1 + with: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + pullRequestOpened: > + *nf-test coverage* 🚀 + + ${{ steps.coverage.outputs.coverage_output }} + +
    + + File view + + ${{ steps.coverage.outputs.files_output }} + +
    From d24dc42cc292c1b398b0e30d43f1313a7766b13e Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Thu, 14 Nov 2024 14:11:03 +0100 Subject: [PATCH 102/167] pre-commit --- .github/workflows/test-coverage.yml | 5 +---- subworkflows/local/vcf_concat_bcftools/tests/nextflow.config | 2 +- subworkflows/local/vcf_filter_bcftools/tests/nextflow.config | 2 +- 3 files changed, 3 insertions(+), 6 deletions(-) diff --git a/.github/workflows/test-coverage.yml b/.github/workflows/test-coverage.yml index 69eba2c0..73f6da12 100644 --- a/.github/workflows/test-coverage.yml +++ b/.github/workflows/test-coverage.yml @@ -27,9 +27,6 @@ jobs: - name: Install Nextflow uses: nf-core/setup-nextflow@v2 - - name: Disk space cleanup - uses: jlumbroso/free-disk-space@54081f138730dfa15788a46383842cd2f914a1be # v1.3.1 - - name: Install nf-test run: | conda install -c bioconda nf-test @@ -42,7 +39,7 @@ jobs: coverage=$(echo $output | grep "COVERAGE") echo "::set-output name=files_output::files" echo "::set-output name=coverage_output::coverage" - + - name: Comment coverage uses: bubkoo/auto-comment@v1 with: diff --git a/subworkflows/local/vcf_concat_bcftools/tests/nextflow.config b/subworkflows/local/vcf_concat_bcftools/tests/nextflow.config index 9eaaf613..654ac56e 100644 --- a/subworkflows/local/vcf_concat_bcftools/tests/nextflow.config +++ b/subworkflows/local/vcf_concat_bcftools/tests/nextflow.config @@ -3,4 +3,4 @@ process { ext.args = "--allow-overlaps --output-type z" ext.prefix = { "${meta.id}.concat" } } -} \ No newline at end of file +} diff --git a/subworkflows/local/vcf_filter_bcftools/tests/nextflow.config b/subworkflows/local/vcf_filter_bcftools/tests/nextflow.config index cd40f131..451724b7 100644 --- a/subworkflows/local/vcf_filter_bcftools/tests/nextflow.config +++ b/subworkflows/local/vcf_filter_bcftools/tests/nextflow.config @@ -7,4 +7,4 @@ process { withName: "FILTER_2" { ext.args = '--output-type z --soft-filter \'GATKCutoffIndel\' -e \'TYPE="indel" && (ReadPosRankSum < -20.0 || QD < 2.0 || FS > 200.0 || SOR > 10.0 )\' -m \'+\'' } -} \ No newline at end of file +} From 883a60674e5fb7c9734dc5449c8a32d6250e7ba1 Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Thu, 14 Nov 2024 14:16:13 +0100 Subject: [PATCH 103/167] print out the coverage in the ci logs --- .github/workflows/test-coverage.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/test-coverage.yml b/.github/workflows/test-coverage.yml index 73f6da12..2c84b9ab 100644 --- a/.github/workflows/test-coverage.yml +++ b/.github/workflows/test-coverage.yml @@ -35,6 +35,7 @@ jobs: id: coverage run: | output=$($CONDA/bin/nf-test coverage --silent | grep -vE "^(Load|Warning|Files)") + echo $output files=$(echo $output | grep " •") coverage=$(echo $output | grep "COVERAGE") echo "::set-output name=files_output::files" From 53a3f76d6c7d75ab9128125baebf79150efabe2e Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Thu, 14 Nov 2024 14:21:15 +0100 Subject: [PATCH 104/167] fix missing $ in coverage action --- .github/workflows/test-coverage.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test-coverage.yml b/.github/workflows/test-coverage.yml index 2c84b9ab..b77a4132 100644 --- a/.github/workflows/test-coverage.yml +++ b/.github/workflows/test-coverage.yml @@ -38,8 +38,8 @@ jobs: echo $output files=$(echo $output | grep " •") coverage=$(echo $output | grep "COVERAGE") - echo "::set-output name=files_output::files" - echo "::set-output name=coverage_output::coverage" + echo "::set-output name=files_output::$files" + echo "::set-output name=coverage_output::$coverage" - name: Comment coverage uses: bubkoo/auto-comment@v1 From de810997fdc0c7a728234c45b0aadc67c8e98c38 Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Thu, 14 Nov 2024 14:26:49 +0100 Subject: [PATCH 105/167] update shell --- .github/workflows/test-coverage.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/test-coverage.yml b/.github/workflows/test-coverage.yml index b77a4132..b255f003 100644 --- a/.github/workflows/test-coverage.yml +++ b/.github/workflows/test-coverage.yml @@ -33,6 +33,7 @@ jobs: - name: Determine coverage id: coverage + shell: bash run: | output=$($CONDA/bin/nf-test coverage --silent | grep -vE "^(Load|Warning|Files)") echo $output From df481a34290a4d160f37abf2a5095dfc161dacb1 Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Thu, 14 Nov 2024 14:30:24 +0100 Subject: [PATCH 106/167] try another method --- .github/workflows/test-coverage.yml | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/.github/workflows/test-coverage.yml b/.github/workflows/test-coverage.yml index b255f003..4304c1c3 100644 --- a/.github/workflows/test-coverage.yml +++ b/.github/workflows/test-coverage.yml @@ -37,10 +37,8 @@ jobs: run: | output=$($CONDA/bin/nf-test coverage --silent | grep -vE "^(Load|Warning|Files)") echo $output - files=$(echo $output | grep " •") - coverage=$(echo $output | grep "COVERAGE") - echo "::set-output name=files_output::$files" - echo "::set-output name=coverage_output::$coverage" + echo $output | grep " •" >> $files_output + echo $output | grep "COVERAGE" >> $coverage_output - name: Comment coverage uses: bubkoo/auto-comment@v1 From 81ae13b482c098dc2df6d846294c47872e77f214 Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Thu, 14 Nov 2024 14:33:56 +0100 Subject: [PATCH 107/167] use env instead --- .github/workflows/test-coverage.yml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.github/workflows/test-coverage.yml b/.github/workflows/test-coverage.yml index 4304c1c3..04e33b66 100644 --- a/.github/workflows/test-coverage.yml +++ b/.github/workflows/test-coverage.yml @@ -33,12 +33,11 @@ jobs: - name: Determine coverage id: coverage - shell: bash run: | output=$($CONDA/bin/nf-test coverage --silent | grep -vE "^(Load|Warning|Files)") echo $output - echo $output | grep " •" >> $files_output - echo $output | grep "COVERAGE" >> $coverage_output + echo $output | grep " •" >> $env:files_output + echo $output | grep "COVERAGE" >> $env:coverage_output - name: Comment coverage uses: bubkoo/auto-comment@v1 From 8a62fad2fb9bb509604cfe32d72d8d975ade0a4c Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Thu, 14 Nov 2024 14:36:55 +0100 Subject: [PATCH 108/167] use another env method --- .github/workflows/test-coverage.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test-coverage.yml b/.github/workflows/test-coverage.yml index 04e33b66..d1afc1cf 100644 --- a/.github/workflows/test-coverage.yml +++ b/.github/workflows/test-coverage.yml @@ -36,8 +36,8 @@ jobs: run: | output=$($CONDA/bin/nf-test coverage --silent | grep -vE "^(Load|Warning|Files)") echo $output - echo $output | grep " •" >> $env:files_output - echo $output | grep "COVERAGE" >> $env:coverage_output + echo "files_output=$(echo $output | grep ' •'" >> $GITHUB_ENV + echo "coverage_output=$(echo $output | grep 'COVERAGE'" >> $GITHUB_ENV - name: Comment coverage uses: bubkoo/auto-comment@v1 From 816d411e97881f727afff7a27e7f5bc7357e1075 Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Thu, 14 Nov 2024 14:39:01 +0100 Subject: [PATCH 109/167] use another env method --- .github/workflows/test-coverage.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test-coverage.yml b/.github/workflows/test-coverage.yml index d1afc1cf..5896cc73 100644 --- a/.github/workflows/test-coverage.yml +++ b/.github/workflows/test-coverage.yml @@ -36,8 +36,8 @@ jobs: run: | output=$($CONDA/bin/nf-test coverage --silent | grep -vE "^(Load|Warning|Files)") echo $output - echo "files_output=$(echo $output | grep ' •'" >> $GITHUB_ENV - echo "coverage_output=$(echo $output | grep 'COVERAGE'" >> $GITHUB_ENV + echo "files_output=$(echo $output | grep ' •')" >> $GITHUB_ENV + echo "coverage_output=$(echo $output | grep 'COVERAGE')" >> $GITHUB_ENV - name: Comment coverage uses: bubkoo/auto-comment@v1 From 1feca5ffcdce2578a8fb6084d1bcf77b3c327426 Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Thu, 14 Nov 2024 14:54:19 +0100 Subject: [PATCH 110/167] try even more methods --- .github/workflows/test-coverage.yml | 17 +++-------------- 1 file changed, 3 insertions(+), 14 deletions(-) diff --git a/.github/workflows/test-coverage.yml b/.github/workflows/test-coverage.yml index 5896cc73..e64928d2 100644 --- a/.github/workflows/test-coverage.yml +++ b/.github/workflows/test-coverage.yml @@ -34,24 +34,13 @@ jobs: - name: Determine coverage id: coverage run: | - output=$($CONDA/bin/nf-test coverage --silent | grep -vE "^(Load|Warning|Files)") - echo $output - echo "files_output=$(echo $output | grep ' •')" >> $GITHUB_ENV - echo "coverage_output=$(echo $output | grep 'COVERAGE')" >> $GITHUB_ENV + $CONDA/bin/nf-test coverage --silent | grep -vE "^(Load|Warning|Files)" >> $GITHUB_OUTPUT - name: Comment coverage - uses: bubkoo/auto-comment@v1 + uses: wow-actions/auto-comment@v1 with: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} pullRequestOpened: > *nf-test coverage* 🚀 - ${{ steps.coverage.outputs.coverage_output }} - -
    - - File view - - ${{ steps.coverage.outputs.files_output }} - -
    + ${{ steps.coverage.outputs.* }} From c8c0fa3936750bd8fd960b6df7a427b1cdfe0036 Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Thu, 14 Nov 2024 14:56:22 +0100 Subject: [PATCH 111/167] convert points to - --- .github/workflows/test-coverage.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test-coverage.yml b/.github/workflows/test-coverage.yml index e64928d2..6ac09e52 100644 --- a/.github/workflows/test-coverage.yml +++ b/.github/workflows/test-coverage.yml @@ -34,7 +34,7 @@ jobs: - name: Determine coverage id: coverage run: | - $CONDA/bin/nf-test coverage --silent | grep -vE "^(Load|Warning|Files)" >> $GITHUB_OUTPUT + $CONDA/bin/nf-test coverage --silent | grep -vE "^(Load|Warning|Files) | sed -e 's/•/-/'" >> $GITHUB_OUTPUT - name: Comment coverage uses: wow-actions/auto-comment@v1 From 4b495e3c7c4d8d1eb8a8c646e8f95a409e81c776 Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Thu, 14 Nov 2024 15:00:00 +0100 Subject: [PATCH 112/167] fix wrongly place quote --- .github/workflows/test-coverage.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test-coverage.yml b/.github/workflows/test-coverage.yml index 6ac09e52..8ef5906b 100644 --- a/.github/workflows/test-coverage.yml +++ b/.github/workflows/test-coverage.yml @@ -34,7 +34,7 @@ jobs: - name: Determine coverage id: coverage run: | - $CONDA/bin/nf-test coverage --silent | grep -vE "^(Load|Warning|Files) | sed -e 's/•/-/'" >> $GITHUB_OUTPUT + $CONDA/bin/nf-test coverage --silent | grep -vE "^(Load|Warning|Files)" | sed -e 's/•/-/' >> $GITHUB_OUTPUT - name: Comment coverage uses: wow-actions/auto-comment@v1 From 94af5727fabb3699b6bd7b8091cc3a57be0476ef Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Thu, 14 Nov 2024 15:04:27 +0100 Subject: [PATCH 113/167] retrigger ci tests --- conf/test.config | 1 - 1 file changed, 1 deletion(-) diff --git a/conf/test.config b/conf/test.config index cdb5273d..714035fb 100644 --- a/conf/test.config +++ b/conf/test.config @@ -56,7 +56,6 @@ params { vcfanno = true vcfanno_config = "${projectDir}/assets/vcfanno.toml" vcfanno_resources = "https://github.com/brentp/vcfanno/raw/master/example/exac.vcf.gz;https://github.com/brentp/vcfanno/raw/master/example/exac.vcf.gz.tbi" - } process { From fd970473989dd6d6c6bc9d1fc5a0916f2fdca572 Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Thu, 14 Nov 2024 15:29:01 +0100 Subject: [PATCH 114/167] forget coverage --- .github/workflows/test-coverage.yml | 46 ----------------------------- 1 file changed, 46 deletions(-) delete mode 100644 .github/workflows/test-coverage.yml diff --git a/.github/workflows/test-coverage.yml b/.github/workflows/test-coverage.yml deleted file mode 100644 index 8ef5906b..00000000 --- a/.github/workflows/test-coverage.yml +++ /dev/null @@ -1,46 +0,0 @@ -name: nf-test coverage -# This workflow runs the pipeline with the minimal test dataset to check that it completes without any syntax errors -on: - push: - branches: - - dev - pull_request: - release: - types: [published] - workflow_dispatch: - -env: - NXF_ANSI_LOG: false - -jobs: - coverage: - name: Determine test coverage - # Only run on push if this is the nf-core dev branch (merged PRs) - if: "${{ github.event_name != 'push' || (github.event_name == 'push' && github.repository == 'nf-cmgg/germline') }}" - runs-on: ubuntu-latest - steps: - - name: Check out pipeline code - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4 - with: - fetch-depth: 0 - - - name: Install Nextflow - uses: nf-core/setup-nextflow@v2 - - - name: Install nf-test - run: | - conda install -c bioconda nf-test - - - name: Determine coverage - id: coverage - run: | - $CONDA/bin/nf-test coverage --silent | grep -vE "^(Load|Warning|Files)" | sed -e 's/•/-/' >> $GITHUB_OUTPUT - - - name: Comment coverage - uses: wow-actions/auto-comment@v1 - with: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - pullRequestOpened: > - *nf-test coverage* 🚀 - - ${{ steps.coverage.outputs.* }} From 6611a8537b9de0c7d3de6e3a0d8357f25214ecf0 Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Thu, 14 Nov 2024 15:31:42 +0100 Subject: [PATCH 115/167] add triggers for full test runs --- nf-test.config | 2 ++ 1 file changed, 2 insertions(+) diff --git a/nf-test.config b/nf-test.config index 5c6eea4f..9b3eb24a 100644 --- a/nf-test.config +++ b/nf-test.config @@ -10,4 +10,6 @@ config { load "nft-vcf@1.0.7" } + triggers "conf/modules.config", "nextflow.config" + } From 344f2408f324f6bc307546e5244e46313141f056 Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Thu, 14 Nov 2024 15:35:58 +0100 Subject: [PATCH 116/167] run all tests on PRs to main --- .github/workflows/ci.yml | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 1601ca99..fd7a38a5 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -12,6 +12,7 @@ on: env: NXF_ANSI_LOG: false NFT_MAX_SHARDS: 5 + SOURCE_BRANCH: ${{ github.head_ref || github.ref_name }} concurrency: group: "${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}" @@ -60,12 +61,19 @@ jobs: - name: "Run ${{ matrix.filter }} tests | ${{ matrix.shard }}/${{ env.NFT_MAX_SHARDS }}" run: | - $CONDA/bin/nf-test test \ - --ci \ - --changed-since HEAD^ \ - --shard ${{ matrix.shard }}/${{ env.NFT_MAX_SHARDS }} \ - --filter ${{ matrix.filter }} \ - --junitxml=default.xml + if [ ${{ env.SOURCE_BRANCH }} == 'main' ]; then + $CONDA/bin/nf-test test \ + --ci \ + --changed-since HEAD^ \ + --shard ${{ matrix.shard }}/${{ env.NFT_MAX_SHARDS }} \ + --filter ${{ matrix.filter }} \ + --junitxml=default.xml + else + $CONDA/bin/nf-test test \ + --ci \ + --shard ${{ matrix.shard }}/${{ env.NFT_MAX_SHARDS }} \ + --filter ${{ matrix.filter }} \ + --junitxml=default.xml - name: Publish Test Report uses: mikepenz/action-junit-report@v3 From 382e0156c339f1d14e281f3f1442d3d5b43daece Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Thu, 14 Nov 2024 15:43:22 +0100 Subject: [PATCH 117/167] fix if statement --- .github/workflows/ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index fd7a38a5..17b06f9b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -74,6 +74,7 @@ jobs: --shard ${{ matrix.shard }}/${{ env.NFT_MAX_SHARDS }} \ --filter ${{ matrix.filter }} \ --junitxml=default.xml + fi - name: Publish Test Report uses: mikepenz/action-junit-report@v3 From 8c50b03e1f21d7a91e14720a2777a08d8aa23a68 Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Thu, 14 Nov 2024 15:57:28 +0100 Subject: [PATCH 118/167] fix test vcf_ped_rtgtools + fix ci --- .github/workflows/ci.yml | 32 ++++++++++--------- .../local/vcf_ped_rtgtools/tests/main.nf.test | 4 +-- .../vcf_ped_rtgtools/tests/main.nf.test.snap | 10 +++--- 3 files changed, 24 insertions(+), 22 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 17b06f9b..0df3fb59 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -59,22 +59,24 @@ jobs: run: | conda install -c bioconda nf-test - - name: "Run ${{ matrix.filter }} tests | ${{ matrix.shard }}/${{ env.NFT_MAX_SHARDS }}" + - name: "Run ${{ matrix.filter }} tests (changed) | ${{ matrix.shard }}/${{ env.NFT_MAX_SHARDS }}" + if: ${{ env.SOURCE_BRANCH != 'main' }} run: | - if [ ${{ env.SOURCE_BRANCH }} == 'main' ]; then - $CONDA/bin/nf-test test \ - --ci \ - --changed-since HEAD^ \ - --shard ${{ matrix.shard }}/${{ env.NFT_MAX_SHARDS }} \ - --filter ${{ matrix.filter }} \ - --junitxml=default.xml - else - $CONDA/bin/nf-test test \ - --ci \ - --shard ${{ matrix.shard }}/${{ env.NFT_MAX_SHARDS }} \ - --filter ${{ matrix.filter }} \ - --junitxml=default.xml - fi + $CONDA/bin/nf-test test \ + --ci \ + --changed-since HEAD^ \ + --shard ${{ matrix.shard }}/${{ env.NFT_MAX_SHARDS }} \ + --filter ${{ matrix.filter }} \ + --junitxml=default.xml + + - name: "Run ${{ matrix.filter }} tests (all) | ${{ matrix.shard }}/${{ env.NFT_MAX_SHARDS }}" + if: ${{ env.SOURCE_BRANCH == 'main' }} + run: | + $CONDA/bin/nf-test test \ + --ci \ + --shard ${{ matrix.shard }}/${{ env.NFT_MAX_SHARDS }} \ + --filter ${{ matrix.filter }} \ + --junitxml=default.xml - name: Publish Test Report uses: mikepenz/action-junit-report@v3 diff --git a/subworkflows/local/vcf_ped_rtgtools/tests/main.nf.test b/subworkflows/local/vcf_ped_rtgtools/tests/main.nf.test index 6f4b916f..48025437 100644 --- a/subworkflows/local/vcf_ped_rtgtools/tests/main.nf.test +++ b/subworkflows/local/vcf_ped_rtgtools/tests/main.nf.test @@ -33,8 +33,8 @@ nextflow_workflow { assertAll( { assert workflow.success }, { assert snapshot( - workflow.out.ped_vcfs.collect { it.collect { it instanceof Map ? it : file(it).name } } - ).match("default") } + workflow.out.ped_vcfs.collect { [it[0], "variantsMD5:${path(it[1]).vcf.variantsMD5}"] } + ).match() } ) } diff --git a/subworkflows/local/vcf_ped_rtgtools/tests/main.nf.test.snap b/subworkflows/local/vcf_ped_rtgtools/tests/main.nf.test.snap index f988cc9f..c6806115 100644 --- a/subworkflows/local/vcf_ped_rtgtools/tests/main.nf.test.snap +++ b/subworkflows/local/vcf_ped_rtgtools/tests/main.nf.test.snap @@ -1,5 +1,5 @@ { - "default": { + "vcf_ped_rtgtools - default": { "content": [ [ [ @@ -9,14 +9,14 @@ "family_samples": "NA24143,NA24149,NA24385", "caller": "haplotypecaller" }, - "Ashkenazim.haplotypecaller.vcf.gz" + "variantsMD5:4367d1c96e701a1cc1a96b615381b278" ] ] ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" + "nf-test": "0.9.1", + "nextflow": "24.10.0" }, - "timestamp": "2024-09-05T17:40:15.516745396" + "timestamp": "2024-11-14T15:54:56.709943272" } } \ No newline at end of file From 62a054b9069f7f1d4282a29cb6321236d2b7b888 Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Thu, 14 Nov 2024 16:09:51 +0100 Subject: [PATCH 119/167] fix cram prepare subwf tests --- .../tests/main.nf.test | 8 +-- .../tests/main.nf.test.snap | 60 +++++++++---------- 2 files changed, 34 insertions(+), 34 deletions(-) diff --git a/subworkflows/local/cram_prepare_samtools_bedtools/tests/main.nf.test b/subworkflows/local/cram_prepare_samtools_bedtools/tests/main.nf.test index cef1fb7b..cdb50e44 100644 --- a/subworkflows/local/cram_prepare_samtools_bedtools/tests/main.nf.test +++ b/subworkflows/local/cram_prepare_samtools_bedtools/tests/main.nf.test @@ -49,7 +49,7 @@ nextflow_workflow { }, workflow.out.ready_beds, workflow.out.reports - ).match("default - WGS") } + ).match() } ) } @@ -96,7 +96,7 @@ nextflow_workflow { }, workflow.out.ready_beds, workflow.out.reports - ).match("default - WES common ROI") } + ).match() } ) } @@ -143,7 +143,7 @@ nextflow_workflow { }, workflow.out.ready_beds, workflow.out.reports - ).match("default - WES") } + ).match() } ) } @@ -197,7 +197,7 @@ nextflow_workflow { }, workflow.out.ready_beds, workflow.out.reports - ).match("default - merge") } + ).match() } ) } diff --git a/subworkflows/local/cram_prepare_samtools_bedtools/tests/main.nf.test.snap b/subworkflows/local/cram_prepare_samtools_bedtools/tests/main.nf.test.snap index 8fabe768..64b29194 100644 --- a/subworkflows/local/cram_prepare_samtools_bedtools/tests/main.nf.test.snap +++ b/subworkflows/local/cram_prepare_samtools_bedtools/tests/main.nf.test.snap @@ -1,5 +1,5 @@ { - "default - merge": { + "cram_prepare_samtools_bedtools - default - WES common ROI": { "content": [ [ [ @@ -8,9 +8,9 @@ "sample": "NA24143", "family": "Ashkenazim", "family_samples": "NA24143", - "duplicate_count": 2 + "duplicate_count": 1 }, - "NA24143.cram,readsMD5:be28f434d6f7bcfa398488a6611d89c1", + "/nf-cmgg/test-datasets/raw/germline/data/genomics/homo_sapiens/illumina/crams/NA24143.cram", "NA24143.cram.crai" ] ], @@ -21,9 +21,9 @@ "sample": "NA24143", "family": "Ashkenazim", "family_samples": "NA24143", - "duplicate_count": 2 + "duplicate_count": 1 }, - "NA24143.bam,readsMD5:be28f434d6f7bcfa398488a6611d89c1", + "NA24143.bam,readsMD5:77afffb023e537869c5c6ebf31187ded", "NA24143.bam.bai" ] ], @@ -34,9 +34,9 @@ "sample": "NA24143", "family": "Ashkenazim", "family_samples": "NA24143", - "duplicate_count": 2 + "duplicate_count": 1 }, - "NA24143_intersect.bed:md5,b87069698afefb15282d069e56110046" + "NA24143.intersect.bed:md5,b87069698afefb15282d069e56110046" ] ], [ @@ -44,12 +44,12 @@ ] ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" + "nf-test": "0.9.1", + "nextflow": "24.10.0" }, - "timestamp": "2024-10-23T10:19:20.53195135" + "timestamp": "2024-11-14T16:07:03.620603158" }, - "default - WGS": { + "cram_prepare_samtools_bedtools - default - WES": { "content": [ [ [ @@ -76,7 +76,7 @@ "family_samples": "NA24143", "duplicate_count": 1 }, - "NA24143.filter.bed:md5,85a5568a6976ed455caa712991b30ac2" + "NA24143.intersect.bed:md5,b87069698afefb15282d069e56110046" ] ], [ @@ -84,12 +84,12 @@ ] ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" + "nf-test": "0.9.1", + "nextflow": "24.10.0" }, - "timestamp": "2024-10-23T10:17:48.433466279" + "timestamp": "2024-11-14T16:07:24.688580575" }, - "default - WES": { + "cram_prepare_samtools_bedtools - default - WGS": { "content": [ [ [ @@ -116,7 +116,7 @@ "family_samples": "NA24143", "duplicate_count": 1 }, - "NA24143_intersect.bed:md5,b87069698afefb15282d069e56110046" + "NA24143.filter.bed:md5,85a5568a6976ed455caa712991b30ac2" ] ], [ @@ -124,12 +124,12 @@ ] ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" + "nf-test": "0.9.1", + "nextflow": "24.10.0" }, - "timestamp": "2024-10-23T10:18:36.993186258" + "timestamp": "2024-11-14T16:06:42.311563291" }, - "default - WES common ROI": { + "cram_prepare_samtools_bedtools - default - merge": { "content": [ [ [ @@ -138,9 +138,9 @@ "sample": "NA24143", "family": "Ashkenazim", "family_samples": "NA24143", - "duplicate_count": 1 + "duplicate_count": 2 }, - "/nf-cmgg/test-datasets/raw/germline/data/genomics/homo_sapiens/illumina/crams/NA24143.cram", + "NA24143.cram,readsMD5:be28f434d6f7bcfa398488a6611d89c1", "NA24143.cram.crai" ] ], @@ -151,9 +151,9 @@ "sample": "NA24143", "family": "Ashkenazim", "family_samples": "NA24143", - "duplicate_count": 1 + "duplicate_count": 2 }, - "NA24143.bam,readsMD5:77afffb023e537869c5c6ebf31187ded", + "NA24143.bam,readsMD5:be28f434d6f7bcfa398488a6611d89c1", "NA24143.bam.bai" ] ], @@ -164,9 +164,9 @@ "sample": "NA24143", "family": "Ashkenazim", "family_samples": "NA24143", - "duplicate_count": 1 + "duplicate_count": 2 }, - "NA24143_intersect.bed:md5,b87069698afefb15282d069e56110046" + "NA24143.intersect.bed:md5,b87069698afefb15282d069e56110046" ] ], [ @@ -174,9 +174,9 @@ ] ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" + "nf-test": "0.9.1", + "nextflow": "24.10.0" }, - "timestamp": "2024-10-23T10:18:13.865281894" + "timestamp": "2024-11-14T16:08:20.712943795" } } \ No newline at end of file From 300ee2b04cea9e6d9afb2eb5114ca49a627215f0 Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Thu, 14 Nov 2024 16:31:57 +0100 Subject: [PATCH 120/167] fix more workflow tests --- .../local/vcf_annotation/tests/main.nf.test | 8 ++++---- .../vcf_annotation/tests/main.nf.test.snap | 20 +++++++++---------- .../vcf_dbsnp_vcfanno/tests/main.nf.test | 2 +- .../vcf_dbsnp_vcfanno/tests/main.nf.test.snap | 6 +++--- .../tests/main.nf.test | 4 ++-- .../tests/main.nf.test.snap | 16 +++++++-------- 6 files changed, 28 insertions(+), 28 deletions(-) diff --git a/subworkflows/local/vcf_annotation/tests/main.nf.test b/subworkflows/local/vcf_annotation/tests/main.nf.test index 84835994..48757069 100644 --- a/subworkflows/local/vcf_annotation/tests/main.nf.test +++ b/subworkflows/local/vcf_annotation/tests/main.nf.test @@ -44,9 +44,9 @@ nextflow_workflow { assertAll( { assert workflow.success }, { assert snapshot( - workflow.out.annotated_vcfs.collect { it.collect { it instanceof Map ? it.groupTarget : file(it).name } }, + workflow.out.annotated_vcfs.collect { [ it[0].groupTarget, it[1][-7..-1] ]}, workflow.out.reports - ).match("default") } + ).match() } ) } @@ -87,9 +87,9 @@ nextflow_workflow { assertAll( { assert workflow.success }, { assert snapshot( - workflow.out.annotated_vcfs.collect { it.collect { it instanceof Map ? it.groupTarget : file(it).name } }, + workflow.out.annotated_vcfs.collect { [ it[0].groupTarget, it[1][-7..-1] ] }, workflow.out.reports - ).match("vcfanno") } + ).match() } ) } diff --git a/subworkflows/local/vcf_annotation/tests/main.nf.test.snap b/subworkflows/local/vcf_annotation/tests/main.nf.test.snap index d3ebc487..1e808b5d 100644 --- a/subworkflows/local/vcf_annotation/tests/main.nf.test.snap +++ b/subworkflows/local/vcf_annotation/tests/main.nf.test.snap @@ -1,5 +1,5 @@ { - "default": { + "vcf_annotation - default": { "content": [ [ [ @@ -9,7 +9,7 @@ "family_samples": "NA24143", "caller": "haplotypecaller" }, - "NA24143.haplotypecaller.vcf.gz" + ".vcf.gz" ] ], [ @@ -19,12 +19,12 @@ ] ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" + "nf-test": "0.9.1", + "nextflow": "24.10.0" }, - "timestamp": "2024-09-05T17:39:23.107888975" + "timestamp": "2024-11-14T16:27:10.638204373" }, - "vcfanno": { + "vcf_annotation - vcfanno": { "content": [ [ [ @@ -34,7 +34,7 @@ "family_samples": "NA24143", "caller": "haplotypecaller" }, - "NA24143.haplotypecaller.vcf.gz" + ".vcf.gz" ] ], [ @@ -44,9 +44,9 @@ ] ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" + "nf-test": "0.9.1", + "nextflow": "24.10.0" }, - "timestamp": "2024-09-05T17:39:39.640344999" + "timestamp": "2024-11-14T16:27:36.089100362" } } \ No newline at end of file diff --git a/subworkflows/local/vcf_dbsnp_vcfanno/tests/main.nf.test b/subworkflows/local/vcf_dbsnp_vcfanno/tests/main.nf.test index 77f8c579..3461e963 100644 --- a/subworkflows/local/vcf_dbsnp_vcfanno/tests/main.nf.test +++ b/subworkflows/local/vcf_dbsnp_vcfanno/tests/main.nf.test @@ -37,7 +37,7 @@ nextflow_workflow { assertAll( { assert workflow.success }, { assert snapshot( - workflow.out.vcfs.collect { [ it[0], "${file(it[1]).name},variantsMD5:${path(it[1]).vcf.variantsMD5}", file(it[2]).name ] } + workflow.out.vcfs.collect { [ it[0], "variantsMD5:${path(it[1]).vcf.variantsMD5}", it[2][-4..-1] ] } ).match() } ) } diff --git a/subworkflows/local/vcf_dbsnp_vcfanno/tests/main.nf.test.snap b/subworkflows/local/vcf_dbsnp_vcfanno/tests/main.nf.test.snap index 43ea8318..64683b8a 100644 --- a/subworkflows/local/vcf_dbsnp_vcfanno/tests/main.nf.test.snap +++ b/subworkflows/local/vcf_dbsnp_vcfanno/tests/main.nf.test.snap @@ -9,8 +9,8 @@ "family_samples": "NA24143", "caller": "haplotypecaller" }, - "NA24143.vcf.gz,variantsMD5:b4f76bc67ba0e159489393d4788349b3", - "NA24143.vcf.gz.tbi" + "variantsMD5:b4f76bc67ba0e159489393d4788349b3", + ".tbi" ] ] ], @@ -18,6 +18,6 @@ "nf-test": "0.9.1", "nextflow": "24.10.0" }, - "timestamp": "2024-11-05T14:44:22.532988474" + "timestamp": "2024-11-14T16:28:22.613197067" } } \ No newline at end of file diff --git a/subworkflows/local/vcf_extract_relate_somalier/tests/main.nf.test b/subworkflows/local/vcf_extract_relate_somalier/tests/main.nf.test index 7c4d9351..2e14eda3 100644 --- a/subworkflows/local/vcf_extract_relate_somalier/tests/main.nf.test +++ b/subworkflows/local/vcf_extract_relate_somalier/tests/main.nf.test @@ -38,7 +38,7 @@ nextflow_workflow { workflow.out.pairs_tsv, workflow.out.samples_tsv, workflow.out.peds - ).match("default - peds") } + ).match() } ) } @@ -74,7 +74,7 @@ nextflow_workflow { workflow.out.pairs_tsv, workflow.out.samples_tsv, workflow.out.peds - ).match("default - no peds") } + ).match() } ) } diff --git a/subworkflows/local/vcf_extract_relate_somalier/tests/main.nf.test.snap b/subworkflows/local/vcf_extract_relate_somalier/tests/main.nf.test.snap index 49d14e7c..002b354a 100644 --- a/subworkflows/local/vcf_extract_relate_somalier/tests/main.nf.test.snap +++ b/subworkflows/local/vcf_extract_relate_somalier/tests/main.nf.test.snap @@ -1,5 +1,5 @@ { - "default - peds": { + "vcf_extract_relate_somalier - default - peds": { "content": [ [ [ @@ -62,12 +62,12 @@ ] ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" + "nf-test": "0.9.1", + "nextflow": "24.10.0" }, - "timestamp": "2024-09-05T17:39:52.526057891" + "timestamp": "2024-11-14T16:29:26.72882236" }, - "default - no peds": { + "vcf_extract_relate_somalier - default - no peds": { "content": [ [ [ @@ -130,9 +130,9 @@ ] ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" + "nf-test": "0.9.1", + "nextflow": "24.10.0" }, - "timestamp": "2024-09-05T17:40:03.603049023" + "timestamp": "2024-11-14T16:29:46.729601248" } } \ No newline at end of file From b8fbdce8843dd91b87643aa654ae064eb9391005 Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Thu, 14 Nov 2024 16:42:25 +0100 Subject: [PATCH 121/167] set test dir to root of repo --- nf-test.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nf-test.config b/nf-test.config index 9b3eb24a..8b08d5cd 100644 --- a/nf-test.config +++ b/nf-test.config @@ -1,6 +1,6 @@ config { - testsDir "tests" + testsDir "." workDir ".nf-test" configFile "tests/nextflow.config" profile "nf_test,docker" From 93e956f4dc3ad3aed06090a24a97b36b16734702 Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Thu, 14 Nov 2024 16:54:32 +0100 Subject: [PATCH 122/167] don't do disk space cleanup anymore --- .github/workflows/ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 0df3fb59..56cb29c1 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -52,8 +52,8 @@ jobs: with: version: "${{ matrix.NXF_VER }}" - - name: Disk space cleanup - uses: jlumbroso/free-disk-space@54081f138730dfa15788a46383842cd2f914a1be # v1.3.1 + # - name: Disk space cleanup + # uses: jlumbroso/free-disk-space@54081f138730dfa15788a46383842cd2f914a1be # v1.3.1 - name: Install nf-test run: | From 9225ed98e47deb9faecd7414d9f0faea600cdaa8 Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Mon, 18 Nov 2024 14:28:20 +0100 Subject: [PATCH 123/167] first changes --- CHANGELOG.md | 1 + docs/output.md | 119 +++++++++++++++++++++++++ docs/parameters.md | 218 ++++++++++++++++++++++----------------------- docs/usage.md | 4 +- 4 files changed, 231 insertions(+), 111 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 38136a64..ca45e1db 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 1. Added the `--min_callable_coverage` parameter to state what the lowest coverage should for a region to be classified as callable. 2. Added the [`elprep` caller](https://github.com/ExaScience/elprep) as an alternative to the haplotypecaller. +3. Added full unit tests for all parts that were missing tests. ### Changes diff --git a/docs/output.md b/docs/output.md index 62a3e900..469affbe 100644 --- a/docs/output.md +++ b/docs/output.md @@ -6,6 +6,125 @@ This page describes the output produced by the pipeline. The directories listed below will be created in the results directory after the pipeline has finished. All paths are relative to the top-level output directory (specified by `--outdir `). This is an example output when the pipeline has been run for a WGS sample called `SAMPLE_1` and a WES sample called `SAMPLE_2` which form a family called `FAMILY_1`. The output consists of 4 directories: `yyyy-MM-dd_project_name`, `individuals`, `multiqc_reports` and `pipeline_info`. This run has only been run with `haplotypecaller`: (`--callers haplotypecaller`) +```bash +results/ +├── Proband_12345 +│ ├── NA24143_v2_0_0dev_2024_11_18 +│ │ ├── NA24143.bed +│ │ ├── NA24143.haplotypecaller.bcftools_stats.txt +│ │ ├── NA24143.haplotypecaller.g.vcf.gz +│ │ ├── NA24143.haplotypecaller.g.vcf.gz.tbi +│ │ └── validation +│ │ └── haplotypecaller +│ │ ├── NA24143.fn.vcf.gz +│ │ ├── NA24143.fn.vcf.gz.tbi +│ │ ├── NA24143.fp.vcf.gz +│ │ ├── NA24143.fp.vcf.gz.tbi +│ │ ├── NA24143.non_snp.png +│ │ ├── NA24143.non_snp_roc.tsv.gz +│ │ ├── NA24143.non_snp.svg +│ │ ├── NA24143.phasing.txt +│ │ ├── NA24143.snp.png +│ │ ├── NA24143.snp_roc.tsv.gz +│ │ ├── NA24143.snp.svg +│ │ ├── NA24143.summary.txt +│ │ ├── NA24143.tp-baseline.vcf.gz +│ │ ├── NA24143.tp-baseline.vcf.gz.tbi +│ │ ├── NA24143.tp.vcf.gz +│ │ ├── NA24143.tp.vcf.gz.tbi +│ │ ├── NA24143.weighted.png +│ │ ├── NA24143.weighted_roc.tsv.gz +│ │ └── NA24143.weighted.svg +│ ├── NA24149_v2_0_0dev_2024_11_18 +│ │ ├── NA24149.bed +│ │ ├── NA24149.haplotypecaller.bcftools_stats.txt +│ │ ├── NA24149.haplotypecaller.g.vcf.gz +│ │ ├── NA24149.haplotypecaller.g.vcf.gz.tbi +│ │ └── validation +│ │ └── haplotypecaller +│ │ ├── NA24149.fn.vcf.gz +│ │ ├── NA24149.fn.vcf.gz.tbi +│ │ ├── NA24149.fp.vcf.gz +│ │ ├── NA24149.fp.vcf.gz.tbi +│ │ ├── NA24149.non_snp.png +│ │ ├── NA24149.non_snp_roc.tsv.gz +│ │ ├── NA24149.non_snp.svg +│ │ ├── NA24149.phasing.txt +│ │ ├── NA24149.snp.png +│ │ ├── NA24149.snp_roc.tsv.gz +│ │ ├── NA24149.snp.svg +│ │ ├── NA24149.summary.txt +│ │ ├── NA24149.tp-baseline.vcf.gz +│ │ ├── NA24149.tp-baseline.vcf.gz.tbi +│ │ ├── NA24149.tp.vcf.gz +│ │ ├── NA24149.tp.vcf.gz.tbi +│ │ ├── NA24149.weighted.png +│ │ ├── NA24149.weighted_roc.tsv.gz +│ │ └── NA24149.weighted.svg +│ ├── NA24385_v2_0_0dev_2024_11_18 +│ │ ├── NA24385.bed +│ │ ├── NA24385.haplotypecaller.bcftools_stats.txt +│ │ ├── NA24385.haplotypecaller.g.vcf.gz +│ │ ├── NA24385.haplotypecaller.g.vcf.gz.tbi +│ │ └── validation +│ │ └── haplotypecaller +│ │ ├── NA24385.fn.vcf.gz +│ │ ├── NA24385.fn.vcf.gz.tbi +│ │ ├── NA24385.fp.vcf.gz +│ │ ├── NA24385.fp.vcf.gz.tbi +│ │ ├── NA24385.non_snp.png +│ │ ├── NA24385.non_snp_roc.tsv.gz +│ │ ├── NA24385.non_snp.svg +│ │ ├── NA24385.phasing.txt +│ │ ├── NA24385.snp.png +│ │ ├── NA24385.snp_roc.tsv.gz +│ │ ├── NA24385.snp.svg +│ │ ├── NA24385.summary.txt +│ │ ├── NA24385.tp-baseline.vcf.gz +│ │ ├── NA24385.tp-baseline.vcf.gz.tbi +│ │ ├── NA24385.tp.vcf.gz +│ │ ├── NA24385.tp.vcf.gz.tbi +│ │ ├── NA24385.weighted.png +│ │ ├── NA24385.weighted_roc.tsv.gz +│ │ └── NA24385.weighted.svg +│ ├── output_v2_0_0dev_2024_11_18 +│ │ ├── automap +│ │ │ └── haplotypecaller +│ │ │ ├── sample1 +│ │ │ │ ├── sample1.HomRegions.cmgg_bio.tsv +│ │ │ │ ├── sample1.HomRegions.pdf +│ │ │ │ ├── sample1.HomRegions.strict.cmgg_bio.tsv +│ │ │ │ └── sample1.HomRegions.tsv +│ │ │ ├── sample2 +│ │ │ │ ├── sample2.HomRegions.cmgg_bio.tsv +│ │ │ │ ├── sample2.HomRegions.pdf +│ │ │ │ ├── sample2.HomRegions.strict.cmgg_bio.tsv +│ │ │ │ └── sample2.HomRegions.tsv +│ │ │ └── sample3 +│ │ │ ├── sample3.HomRegions.cmgg_bio.tsv +│ │ │ ├── sample3.HomRegions.pdf +│ │ │ ├── sample3.HomRegions.strict.cmgg_bio.tsv +│ │ │ └── sample3.HomRegions.tsv +│ │ ├── Proband_12345.haplotypecaller.bed +│ │ ├── Proband_12345.haplotypecaller.db +│ │ ├── Proband_12345.haplotypecaller.ped +│ │ ├── Proband_12345.haplotypecaller.vcf.gz +│ │ └── Proband_12345.haplotypecaller.vcf.gz.tbi +│ └── qc_v2_0_0dev_2024_11_18 +│ ├── Proband_12345.haplotypecaller.bcftools_stats.txt +│ └── Proband_12345.haplotypecaller.html +└── v2_0_0dev_2024_11_18 + ├── execution_report_2024-11-18_14-03-56.html + ├── execution_timeline_2024-11-18_14-03-56.html + ├── execution_trace_2024-11-18_14-03-56.html + ├── multiqc_report.html + ├── params_2024-11-18_14-04-11.json + ├── pipeline_dag_2024-11-18_14-03-56.html + ├── pipeline_software_mqc_versions.yml + └── samplesheet.csv +``` + + ```bash results/ ├── YYYY_MM_DD_project_name #(1)! diff --git a/docs/parameters.md b/docs/parameters.md index a966bf8d..30b8b632 100644 --- a/docs/parameters.md +++ b/docs/parameters.md @@ -6,137 +6,137 @@ A nextflow pipeline for calling and annotating small germline variants from shor Define where the pipeline should find input data and save output data. -| Parameter | Description | Type | Default | Required | Hidden | -| ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------- | ------- | -------- | ------ | -| `input` | Path to comma-separated file containing information about the samples in the experiment.
    HelpYou will need to create a design file with information about the samples in your experiment before running the pipeline. Use this parameter to specify its location. It has to be a comma-separated file with samples, and a header row. See [usage docs](./usage.md).
    | `string` | | True | | -| `outdir` | The output directory where the results will be saved. You have to use absolute paths to storage on Cloud infrastructure. | `string` | | True | | -| `watchdir` | A folder to watch for the creation of files that start with `watch:` in the samplesheet. | `string` | | | | -| `email` | Email address for completion summary.
    HelpSet this parameter to your e-mail address to get a summary e-mail with details of the run sent to you when the workflow exits. If set in your user config file (`~/.nextflow/config`) then you don't need to specify this on the command line for every run.
    | `string` | | | | -| `ped` | Path to a pedigree file for all samples in the run. All relational data will be fetched from this file. | `string` | | | | +| Parameter | Description | Type | Default | Required | Hidden | +|-----------|-----------|-----------|-----------|-----------|-----------| +| `input` | Path to comma-separated file containing information about the samples in the experiment.
    HelpYou will need to create a design file with information about the samples in your experiment before running the pipeline. Use this parameter to specify its location. It has to be a comma-separated file with samples, and a header row. See [usage docs](./usage.md).
    | `string` | | True | | +| `outdir` | The output directory where the results will be saved. You have to use absolute paths to storage on Cloud infrastructure. | `string` | | True | | +| `watchdir` | A folder to watch for the creation of files that start with `watch:` in the samplesheet. | `string` | | | | +| `email` | Email address for completion summary.
    HelpSet this parameter to your e-mail address to get a summary e-mail with details of the run sent to you when the workflow exits. If set in your user config file (`~/.nextflow/config`) then you don't need to specify this on the command line for every run.
    | `string` | | | | +| `ped` | Path to a pedigree file for all samples in the run. All relational data will be fetched from this file. | `string` | | | | ## Reference genome options Reference genome related files and options required for the workflow. -| Parameter | Description | Type | Default | Required | Hidden | -| ------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------- | ------------ | -------- | ------ | -| `genome` | Reference genome build. Used to fetch the right reference files.
    HelpRequires a Genome Reference Consortium reference ID (e.g. GRCh38)
    | `string` | GRCh38 | | | -| `fasta` | Path to FASTA genome file.
    HelpThis parameter is _mandatory_ if `--genome` is not specified. The path to the reference genome fasta.
    | `string` | | True | | -| `fai` | Path to FASTA genome index file. | `string` | | | | -| `dict` | Path to the sequence dictionary generated from the FASTA reference. This is only used when `haplotypecaller` is one of the specified callers. | `string` | | | | -| `strtablefile` | Path to the STR table file generated from the FASTA reference. This is only used when `--dragstr` has been given. | `string` | | | | -| `sdf` | Path to the SDF folder generated from the reference FASTA file. This is only required when using `--validate`. | `string` | | | | -| `genomes_base` | Directory base for CMGG reference store (used when `--genomes_ignore false` is specified) | `string` | /references/ | | | -| `cmgg_config_base` | The base directory for the local config files | `string` | /conf/ | | True | -| `genomes_ignore` | Do not load the local references from the path specified with `--genomes_base` | `boolean` | | | True | -| `igenomes_base` | Directory / URL base for iGenomes references. | `string` | | | True | -| `igenomes_ignore` | Do not load the iGenomes reference config.
    HelpDo not load `igenomes.config` when running the pipeline. You may choose this option if you observe clashes between custom parameters and those supplied in `igenomes.config`.
    | `boolean` | | | True | +| Parameter | Description | Type | Default | Required | Hidden | +|-----------|-----------|-----------|-----------|-----------|-----------| +| `genome` | Reference genome build. Used to fetch the right reference files.
    HelpRequires a Genome Reference Consortium reference ID (e.g. GRCh38)
    | `string` | GRCh38 | | | +| `fasta` | Path to FASTA genome file.
    HelpThis parameter is *mandatory* if `--genome` is not specified. The path to the reference genome fasta.
    | `string` | | True | | +| `fai` | Path to FASTA genome index file. | `string` | | | | +| `dict` | Path to the sequence dictionary generated from the FASTA reference. This is only used when `haplotypecaller` is one of the specified callers. | `string` | | | | +| `strtablefile` | Path to the STR table file generated from the FASTA reference. This is only used when `--dragstr` has been given. | `string` | | | | +| `sdf` | Path to the SDF folder generated from the reference FASTA file. This is only required when using `--validate`. | `string` | | | | +| `elfasta` | Path to the ELFASTA genome file. This is used when `elprep` is part of the callers and will be automatically generated when missing. | `string` | | | | +| `elsites` | Path to the elsites file. This is used when `elprep` is part of the callers. | `string` | | | | +| `genomes` | Object for genomes | `object` | | | True | +| `genomes_base` | Directory base for CMGG reference store (used when `--genomes_ignore false` is specified) | `string` | /references/ | | | +| `cmgg_config_base` | The base directory for the local config files | `string` | /conf/ | | True | +| `genomes_ignore` | Do not load the local references from the path specified with `--genomes_base` | `boolean` | | | True | +| `igenomes_base` | Directory / URL base for iGenomes references. | `string` | | | True | +| `igenomes_ignore` | Do not load the iGenomes reference config.
    HelpDo not load `igenomes.config` when running the pipeline. You may choose this option if you observe clashes between custom parameters and those supplied in `igenomes.config`.
    | `boolean` | | | True | ## Pipeline specific parameters Parameters that define how the pipeline works -| Parameter | Description | Type | Default | Required | Hidden | -| ----------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------- | ------------------------------------------------------------------ | -------- | ------ | -| `scatter_count` | The amount of scattering that should happen per sample.
    HelpIncrease this number to increase the pipeline run speed, but at the tradeoff of using more IO and disk space. This can differ from the actual scatter count in some cases (especially with smaller files).
    This has an effect on HaplotypeCaller, GenomicsDBImport and GenotypeGVCFs.
    | `integer` | 40 | | | -| `merge_distance` | The merge distance for family BED files
    HelpIncrease this parameter if GenomicsDBImport is running slow. This defines the maximum distance between intervals that should be merged. The less intervals GenomicsDBImport actually gets, the faster it will run.
    | `integer` | 100000 | | | -| `dragstr` | Create DragSTR models to be used with HaplotypeCaller
    HelpThis currently is only able to run single-core per sample. Due to this, the process is very slow with only very small improvements to the analysis.
    | `boolean` | | | | -| `validate` | Validate the found variants | `boolean` | | | | -| `filter` | Filter the found variants. | `boolean` | | | | -| `annotate` | Annotate the found variants using Ensembl VEP. | `boolean` | | | | -| `add_ped` | Add PED INFO header lines to the final VCFs. | `boolean` | | | | -| `gemini` | Create a Gemini databases from the final VCFs. | `boolean` | | | | -| `mosdepth_slow` | Don't run mosdepth in fast-mode
    HelpThis is advised if you need exact coverage BED files as output.
    | `boolean` | | | | -| `project` | The name of the project.
    HelpThis will be used to specify the name of the final output files folder in the output directory.
    | `string` | | | | -| `skip_date_project` | Don't add the current date to the output project folder. | `boolean` | | | | -| `roi` | Path to the default ROI (regions of interest) BED file to be used for WES analysis.
    HelpThis will be used for all samples that do not have a specific ROI file supplied to them through the samplesheet. Don't supply an ROI file to run the analysis as WGS.
    | `string` | | | | -| `dbsnp` | Path to the dbSNP VCF file. This will be used to set the variant IDs. | `string` | | | | -| `dbsnp_tbi` | Path to the index of the dbSNP VCF file. | `string` | | | | -| `somalier_sites` | Path to the VCF file with sites for Somalier to use. | `string` | https://github.com/brentp/somalier/files/3412456/sites.hg38.vcf.gz | | | -| `only_call` | Only call the variants without doing any post-processing. | `boolean` | | | | -| `only_merge` | Only run the pipeline until the creation of the genomicsdbs and output them. | `boolean` | | | | -| `output_genomicsdb` | Output the genomicsDB together with the joint-genotyped VCF. | `boolean` | | | | -| `callers` | A comma delimited string of the available callers. Current options are: `haplotypecaller` and `vardict`. | `string` | haplotypecaller | | | -| `vardict_min_af` | The minimum allele frequency for VarDict when no `vardict_min_af` is supplied in the samplesheet. | `number` | 0.1 | | | -| `normalize` | Normalize the variant in the final VCFs. | `boolean` | | | | -| `output_suffix` | A custom suffix to add to the basename of the output files. | `string` | | | | -| `only_pass` | Filter out all variants that don't have the PASS filter for vardict. This only works when `--filter` is also given. | `boolean` | | | | -| `keep_alt_contigs` | Keep all aditional contigs for calling instead of filtering them out before. | `boolean` | | | | -| `updio` | Run UPDio analysis on the final VCFs. | `boolean` | | | | -| `updio_common_cnvs` | A TSV file containing common CNVs to be used by UPDio. | `string` | | | | -| `automap` | Run AutoMap analysis on the final VCFs. | `boolean` | | | | -| `automap_repeats` | BED file with repeat regions in the genome.
    HelpThis file will be automatically generated for hg38/GRCh38 and hg19/GRCh37 when this parameter has not been given.
    | `string` | | | | -| `automap_panel` | TXT file with gene panel regions to be used by AutoMap.
    HelpBy default the CMGG gene panel list will be used.
    | `string` | | | | -| `automap_panel_name` | The panel name of the panel given with --automap_panel. | `string` | cmgg_bio | | | -| `hc_phasing` | Perform phasing with HaplotypeCaller. | `boolean` | | | | -| `min_callable_coverage` | The lowest callable coverage to determine callable regions. | `integer` | 5 | | | +| Parameter | Description | Type | Default | Required | Hidden | +|-----------|-----------|-----------|-----------|-----------|-----------| +| `scatter_count` | The amount of scattering that should happen per sample.
    HelpIncrease this number to increase the pipeline run speed, but at the tradeoff of using more IO and disk space. This can differ from the actual scatter count in some cases (especially with smaller files).
    This has an effect on HaplotypeCaller, GenomicsDBImport and GenotypeGVCFs.
    | `integer` | 40 | | | +| `merge_distance` | The merge distance for family BED files
    HelpIncrease this parameter if GenomicsDBImport is running slow. This defines the maximum distance between intervals that should be merged. The less intervals GenomicsDBImport actually gets, the faster it will run.
    | `integer` | 100000 | | | +| `dragstr` | Create DragSTR models to be used with HaplotypeCaller
    HelpThis currently is only able to run single-core per sample. Due to this, the process is very slow with only very small improvements to the analysis.
    | `boolean` | | | | +| `validate` | Validate the found variants | `boolean` | | | | +| `filter` | Filter the found variants. | `boolean` | | | | +| `annotate` | Annotate the found variants using Ensembl VEP. | `boolean` | | | | +| `add_ped` | Add PED INFO header lines to the final VCFs. | `boolean` | | | | +| `gemini` | Create a Gemini databases from the final VCFs. | `boolean` | | | | +| `mosdepth_slow` | Don't run mosdepth in fast-mode
    HelpThis is advised if you need exact coverage BED files as output.
    | `boolean` | | | | +| `roi` | Path to the default ROI (regions of interest) BED file to be used for WES analysis.
    HelpThis will be used for all samples that do not have a specific ROI file supplied to them through the samplesheet. Don't supply an ROI file to run the analysis as WGS.
    | `string` | | | | +| `dbsnp` | Path to the dbSNP VCF file. This will be used to set the variant IDs. | `string` | | | | +| `dbsnp_tbi` | Path to the index of the dbSNP VCF file. | `string` | | | | +| `somalier_sites` | Path to the VCF file with sites for Somalier to use. | `string` | https://github.com/brentp/somalier/files/3412456/sites.hg38.vcf.gz | | | +| `only_call` | Only call the variants without doing any post-processing. | `boolean` | | | | +| `only_merge` | Only run the pipeline until the creation of the genomicsdbs and output them. | `boolean` | | | | +| `output_genomicsdb` | Output the genomicsDB together with the joint-genotyped VCF. | `boolean` | | | | +| `callers` | A comma delimited string of the available callers. Current options are: `haplotypecaller` and `vardict`. | `string` | haplotypecaller | | | +| `vardict_min_af` | The minimum allele frequency for VarDict when no `vardict_min_af` is supplied in the samplesheet. | `number` | 0.1 | | | +| `normalize` | Normalize the variant in the final VCFs. | `boolean` | | | | +| `output_suffix` | A custom suffix to add to the basename of the output files. | `string` | | | | +| `only_pass` | Filter out all variants that don't have the PASS filter for vardict. This only works when `--filter` is also given. | `boolean` | | | | +| `keep_alt_contigs` | Keep all aditional contigs for calling instead of filtering them out before. | `boolean` | | | | +| `updio` | Run UPDio analysis on the final VCFs. | `boolean` | | | | +| `updio_common_cnvs` | A TSV file containing common CNVs to be used by UPDio. | `string` | | | | +| `automap` | Run AutoMap analysis on the final VCFs. | `boolean` | | | | +| `automap_repeats` | BED file with repeat regions in the genome.
    HelpThis file will be automatically generated for hg38/GRCh38 and hg19/GRCh37 when this parameter has not been given.
    | `string` | | | | +| `automap_panel` | TXT file with gene panel regions to be used by AutoMap.
    HelpBy default the CMGG gene panel list will be used.
    | `string` | | | | +| `automap_panel_name` | The panel name of the panel given with --automap_panel. | `string` | cmgg_bio | | | +| `hc_phasing` | Perform phasing with HaplotypeCaller. | `boolean` | | | | +| `min_callable_coverage` | The lowest callable coverage to determine callable regions. | `integer` | 5 | | | ## Institutional config options Parameters used to describe centralised config profiles. These should not be edited. -| Parameter | Description | Type | Default | Required | Hidden | -| ---------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | -------------------------------------------------------- | -------- | ------ | -| `custom_config_version` | Git commit id for Institutional configs. | `string` | master | | True | -| `custom_config_base` | Base directory for Institutional configs.
    HelpIf you're running offline, Nextflow will not be able to fetch the institutional config files from the internet. If you don't need them, then this is not a problem. If you do need them, you should download the files from the repo and tell Nextflow where to find them with this parameter.
    | `string` | https://raw.githubusercontent.com/nf-core/configs/master | | True | -| `config_profile_name` | Institutional config name. | `string` | | | True | -| `config_profile_description` | Institutional config description. | `string` | | | True | -| `config_profile_contact` | Institutional config contact information. | `string` | | | True | -| `config_profile_url` | Institutional config URL link. | `string` | | | True | +| Parameter | Description | Type | Default | Required | Hidden | +|-----------|-----------|-----------|-----------|-----------|-----------| +| `custom_config_version` | Git commit id for Institutional configs. | `string` | master | | True | +| `custom_config_base` | Base directory for Institutional configs.
    HelpIf you're running offline, Nextflow will not be able to fetch the institutional config files from the internet. If you don't need them, then this is not a problem. If you do need them, you should download the files from the repo and tell Nextflow where to find them with this parameter.
    | `string` | https://raw.githubusercontent.com/nf-core/configs/master | | True | +| `config_profile_name` | Institutional config name. | `string` | | | True | +| `config_profile_description` | Institutional config description. | `string` | | | True | +| `config_profile_contact` | Institutional config contact information. | `string` | | | True | +| `config_profile_url` | Institutional config URL link. | `string` | | | True | ## Generic options Less common options for the pipeline, typically set in a config file. -| Parameter | Description | Type | Default | Required | Hidden | -| ------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ----------------------- | -------------------------------------------------------- | -------- | ------ | -| `help` | Display help text. Give a parameter name to this option to see the detailed help of that parameter. | `['boolean', 'string']` | | | | -| `helpFull` | See the full help message of all parameters. | `boolean` | | | | -| `version` | Display version and exit. | `boolean` | | | | -| `publish_dir_mode` | Method used to save pipeline results to output directory.
    HelpThe Nextflow `publishDir` option specifies which intermediate files should be saved to the output directory. This option tells the pipeline what method should be used to move these files. See [Nextflow docs](https://www.nextflow.io/docs/latest/process.html#publishdir) for details.
    | `string` | copy | | | -| `email_on_fail` | Email address for completion summary, only when pipeline fails.
    HelpAn email address to send a summary email to when the pipeline is completed - ONLY sent if the pipeline does not exit successfully.
    | `string` | | | True | -| `plaintext_email` | Send plain-text email instead of HTML. | `boolean` | | | True | -| `max_multiqc_email_size` | File size limit when attaching MultiQC reports to summary emails. | `string` | 25.MB | | True | -| `hook_url` | Incoming hook URL for messaging service
    HelpIncoming hook URL for messaging service. Currently, MS Teams and Slack are supported.
    | `string` | | | | -| `multiqc_title` | MultiQC report title. Printed as page header, used for filename if not otherwise specified. | `string` | | | | -| `multiqc_config` | Custom config file to supply to MultiQC. | `string` | | | | -| `multiqc_logo` | Custom logo file to supply to MultiQC. File name must also be set in the MultiQC config file | `string` | | | | -| `multiqc_methods_description` | Custom MultiQC yaml file containing HTML including a methods description. | `string` | | | | -| `validate_params` | Boolean whether to validate parameters against the schema at runtime | `boolean` | True | | True | -| `pipelines_testdata_base_path` | Base URL or local path to location of pipeline test dataset files | `string` | https://raw.githubusercontent.com/nf-core/test-datasets/ | | True | +| Parameter | Description | Type | Default | Required | Hidden | +|-----------|-----------|-----------|-----------|-----------|-----------| +| `version` | Display version and exit. | `boolean` | | | | +| `publish_dir_mode` | Method used to save pipeline results to output directory.
    HelpThe Nextflow `publishDir` option specifies which intermediate files should be saved to the output directory. This option tells the pipeline what method should be used to move these files. See [Nextflow docs](https://www.nextflow.io/docs/latest/process.html#publishdir) for details.
    | `string` | copy | | | +| `email_on_fail` | Email address for completion summary, only when pipeline fails.
    HelpAn email address to send a summary email to when the pipeline is completed - ONLY sent if the pipeline does not exit successfully.
    | `string` | | | True | +| `plaintext_email` | Send plain-text email instead of HTML. | `boolean` | | | True | +| `max_multiqc_email_size` | File size limit when attaching MultiQC reports to summary emails. | `string` | 25.MB | | True | +| `monochrome_logs` | Do not use coloured log outputs. | `boolean` | | | True | +| `hook_url` | Incoming hook URL for messaging service
    HelpIncoming hook URL for messaging service. Currently, MS Teams and Slack are supported.
    | `string` | | | | +| `multiqc_title` | MultiQC report title. Printed as page header, used for filename if not otherwise specified. | `string` | | | | +| `multiqc_config` | Custom config file to supply to MultiQC. | `string` | | | | +| `multiqc_logo` | Custom logo file to supply to MultiQC. File name must also be set in the MultiQC config file | `string` | | | | +| `multiqc_methods_description` | Custom MultiQC yaml file containing HTML including a methods description. | `string` | | | | +| `validate_params` | Boolean whether to validate parameters against the schema at runtime | `boolean` | True | | True | +| `pipelines_testdata_base_path` | Base URL or local path to location of pipeline test dataset files | `string` | https://raw.githubusercontent.com/nf-core/test-datasets/ | | True | ## Annotation parameters Parameters to configure Ensembl VEP and VCFanno -| Parameter | Description | Type | Default | Required | Hidden | -| -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------- | ------------ | -------- | ------ | -| `vep_chunk_size` | The amount of sites per split VCF as input to VEP. | `integer` | 50000 | | | -| `species` | The species of the samples.
    HelpMust be lower case and have underscores as spaces.
    | `string` | homo_sapiens | | | -| `vep_merged` | Specify if the VEP cache is a merged cache. | `boolean` | True | | | -| `vep_cache` | The path to the VEP cache. | `string` | | | | -| `vep_dbnsfp` | Use the dbNSFP plugin with Ensembl VEP.
    HelpThe '--dbnsfp' and '--dbnsfp_tbi' parameters need to be specified when using this parameter.
    | `boolean` | | | | -| `vep_spliceai` | Use the SpliceAI plugin with Ensembl VEP.
    HelpThe '--spliceai_indel', '--spliceai_indel_tbi', '--spliceai_snv' and '--spliceai_snv_tbi' parameters need to be specified when using this parameter.
    | `boolean` | | | | -| `vep_spliceregion` | Use the SpliceRegion plugin with Ensembl VEP. | `boolean` | | | | -| `vep_mastermind` | Use the Mastermind plugin with Ensembl VEP.
    HelpThe '--mastermind' and '--mastermind_tbi' parameters need to be specified when using this parameter.
    | `boolean` | | | | -| `vep_maxentscan` | Use the MaxEntScan plugin with Ensembl VEP.
    HelpThe '--maxentscan' parameter need to be specified when using this parameter.
    | `boolean` | | | | -| `vep_eog` | Use the custom EOG annotation with Ensembl VEP.
    HelpThe '--eog' and '--eog_tbi' parameters need to be specified when using this parameter.
    | `boolean` | | | | -| `vep_alphamissense` | Use the AlphaMissense plugin with Ensembl VEP.
    HelpThe '--alphamissense' and '--alphamissense_tbi' parameters need to be specified when using this parameter.
    | `boolean` | | | | -| `vep_version` | The version of the VEP tool to be used. | `number` | 105.0 | | | -| `vep_cache_version` | The version of the VEP cache to be used. | `integer` | 105 | | | -| `dbnsfp` | Path to the dbSNFP file. | `string` | | | | -| `dbnsfp_tbi` | Path to the index of the dbSNFP file. | `string` | | | | -| `spliceai_indel` | Path to the VCF containing indels for spliceAI. | `string` | | | | -| `spliceai_indel_tbi` | Path to the index of the VCF containing indels for spliceAI. | `string` | | | | -| `spliceai_snv` | Path to the VCF containing SNVs for spliceAI. | `string` | | | | -| `spliceai_snv_tbi` | Path to the index of the VCF containing SNVs for spliceAI. | `string` | | | | -| `mastermind` | Path to the VCF for Mastermind. | `string` | | | | -| `mastermind_tbi` | Path to the index of the VCF for Mastermind. | `string` | | | | -| `alphamissense` | Path to the TSV for AlphaMissense. | `string` | | | | -| `alphamissense_tbi` | Path to the index of the TSV for AlphaMissense. | `string` | | | | -| `eog` | Path to the VCF containing EOG annotations. | `string` | | | | -| `eog_tbi` | Path to the index of the VCF containing EOG annotations. | `string` | | | | -| `vcfanno` | Run annotations with vcfanno. | `boolean` | | | | -| `vcfanno_config` | The path to the VCFanno config TOML. | `string` | | | | -| `vcfanno_lua` | The path to a Lua script to be used in VCFanno. | `string` | | | | -| `vcfanno_resources` | A semicolon-seperated list of resource files for VCFanno, please also supply their indices using this parameter. | `string` | | | | +| Parameter | Description | Type | Default | Required | Hidden | +|-----------|-----------|-----------|-----------|-----------|-----------| +| `vep_chunk_size` | The amount of sites per split VCF as input to VEP. | `integer` | 50000 | | | +| `species` | The species of the samples.
    HelpMust be lower case and have underscores as spaces.
    | `string` | homo_sapiens | | | +| `vep_merged` | Specify if the VEP cache is a merged cache. | `boolean` | True | | | +| `vep_cache` | The path to the VEP cache. | `string` | | | | +| `vep_dbnsfp` | Use the dbNSFP plugin with Ensembl VEP.
    HelpThe '--dbnsfp' and '--dbnsfp_tbi' parameters need to be specified when using this parameter.
    | `boolean` | | | | +| `vep_spliceai` | Use the SpliceAI plugin with Ensembl VEP.
    HelpThe '--spliceai_indel', '--spliceai_indel_tbi', '--spliceai_snv' and '--spliceai_snv_tbi' parameters need to be specified when using this parameter.
    | `boolean` | | | | +| `vep_spliceregion` | Use the SpliceRegion plugin with Ensembl VEP. | `boolean` | | | | +| `vep_mastermind` | Use the Mastermind plugin with Ensembl VEP.
    HelpThe '--mastermind' and '--mastermind_tbi' parameters need to be specified when using this parameter.
    | `boolean` | | | | +| `vep_maxentscan` | Use the MaxEntScan plugin with Ensembl VEP.
    HelpThe '--maxentscan' parameter need to be specified when using this parameter.
    | `boolean` | | | | +| `vep_eog` | Use the custom EOG annotation with Ensembl VEP.
    HelpThe '--eog' and '--eog_tbi' parameters need to be specified when using this parameter.
    | `boolean` | | | | +| `vep_alphamissense` | Use the AlphaMissense plugin with Ensembl VEP.
    HelpThe '--alphamissense' and '--alphamissense_tbi' parameters need to be specified when using this parameter.
    | `boolean` | | | | +| `vep_version` | The version of the VEP tool to be used. | `number` | 105.0 | | | +| `vep_cache_version` | The version of the VEP cache to be used. | `integer` | 105 | | | +| `dbnsfp` | Path to the dbSNFP file. | `string` | | | | +| `dbnsfp_tbi` | Path to the index of the dbSNFP file. | `string` | | | | +| `spliceai_indel` | Path to the VCF containing indels for spliceAI. | `string` | | | | +| `spliceai_indel_tbi` | Path to the index of the VCF containing indels for spliceAI. | `string` | | | | +| `spliceai_snv` | Path to the VCF containing SNVs for spliceAI. | `string` | | | | +| `spliceai_snv_tbi` | Path to the index of the VCF containing SNVs for spliceAI. | `string` | | | | +| `mastermind` | Path to the VCF for Mastermind. | `string` | | | | +| `mastermind_tbi` | Path to the index of the VCF for Mastermind. | `string` | | | | +| `alphamissense` | Path to the TSV for AlphaMissense. | `string` | | | | +| `alphamissense_tbi` | Path to the index of the TSV for AlphaMissense. | `string` | | | | +| `eog` | Path to the VCF containing EOG annotations. | `string` | | | | +| `eog_tbi` | Path to the index of the VCF containing EOG annotations. | `string` | | | | +| `vcfanno` | Run annotations with vcfanno. | `boolean` | | | | +| `vcfanno_config` | The path to the VCFanno config TOML. | `string` | | | | +| `vcfanno_lua` | The path to a Lua script to be used in VCFanno. | `string` | | | | +| `vcfanno_resources` | A semicolon-seperated list of resource files for VCFanno, please also supply their indices using this parameter. | `string` | | | | diff --git a/docs/usage.md b/docs/usage.md index efa7be4c..4af36894 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -127,13 +127,13 @@ Note that the pipeline will create the following files in your working directory ```bash work #(1)! results #(2)! -.nextflow_log #(3)! +.nextflow.log #(3)! ... #(4)! ``` 1. Directory containing the nextflow working files -2. Finished results in specified location (defined with --outdir) +2. Finished results in specified location (defined with --outdir). See [output](./output.md) documentation for more on this. 3. Log file from Nextflow From 0ea6884459b008f83c8addc810b34c4ce993dd09 Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Mon, 18 Nov 2024 16:44:36 +0100 Subject: [PATCH 124/167] update output docs --- docs/output.md | 248 ++++++------------ .../utils_cmgg_germline_pipeline/main.nf | 2 +- 2 files changed, 86 insertions(+), 164 deletions(-) diff --git a/docs/output.md b/docs/output.md index 469affbe..9f3f9a3a 100644 --- a/docs/output.md +++ b/docs/output.md @@ -4,193 +4,115 @@ This page describes the output produced by the pipeline. -The directories listed below will be created in the results directory after the pipeline has finished. All paths are relative to the top-level output directory (specified by `--outdir `). This is an example output when the pipeline has been run for a WGS sample called `SAMPLE_1` and a WES sample called `SAMPLE_2` which form a family called `FAMILY_1`. The output consists of 4 directories: `yyyy-MM-dd_project_name`, `individuals`, `multiqc_reports` and `pipeline_info`. This run has only been run with `haplotypecaller`: (`--callers haplotypecaller`) +To explain the structure of the output directory, a simple example run consisting of two families is used. The first family (`family1`) is a family consisting of a trio (son, father and mother) and the second family (`family2`) consists of a single sample. ```bash -results/ -├── Proband_12345 -│ ├── NA24143_v2_0_0dev_2024_11_18 -│ │ ├── NA24143.bed -│ │ ├── NA24143.haplotypecaller.bcftools_stats.txt -│ │ ├── NA24143.haplotypecaller.g.vcf.gz -│ │ ├── NA24143.haplotypecaller.g.vcf.gz.tbi -│ │ └── validation -│ │ └── haplotypecaller -│ │ ├── NA24143.fn.vcf.gz -│ │ ├── NA24143.fn.vcf.gz.tbi -│ │ ├── NA24143.fp.vcf.gz -│ │ ├── NA24143.fp.vcf.gz.tbi -│ │ ├── NA24143.non_snp.png -│ │ ├── NA24143.non_snp_roc.tsv.gz -│ │ ├── NA24143.non_snp.svg -│ │ ├── NA24143.phasing.txt -│ │ ├── NA24143.snp.png -│ │ ├── NA24143.snp_roc.tsv.gz -│ │ ├── NA24143.snp.svg -│ │ ├── NA24143.summary.txt -│ │ ├── NA24143.tp-baseline.vcf.gz -│ │ ├── NA24143.tp-baseline.vcf.gz.tbi -│ │ ├── NA24143.tp.vcf.gz -│ │ ├── NA24143.tp.vcf.gz.tbi -│ │ ├── NA24143.weighted.png -│ │ ├── NA24143.weighted_roc.tsv.gz -│ │ └── NA24143.weighted.svg -│ ├── NA24149_v2_0_0dev_2024_11_18 -│ │ ├── NA24149.bed -│ │ ├── NA24149.haplotypecaller.bcftools_stats.txt -│ │ ├── NA24149.haplotypecaller.g.vcf.gz -│ │ ├── NA24149.haplotypecaller.g.vcf.gz.tbi -│ │ └── validation -│ │ └── haplotypecaller -│ │ ├── NA24149.fn.vcf.gz -│ │ ├── NA24149.fn.vcf.gz.tbi -│ │ ├── NA24149.fp.vcf.gz -│ │ ├── NA24149.fp.vcf.gz.tbi -│ │ ├── NA24149.non_snp.png -│ │ ├── NA24149.non_snp_roc.tsv.gz -│ │ ├── NA24149.non_snp.svg -│ │ ├── NA24149.phasing.txt -│ │ ├── NA24149.snp.png -│ │ ├── NA24149.snp_roc.tsv.gz -│ │ ├── NA24149.snp.svg -│ │ ├── NA24149.summary.txt -│ │ ├── NA24149.tp-baseline.vcf.gz -│ │ ├── NA24149.tp-baseline.vcf.gz.tbi -│ │ ├── NA24149.tp.vcf.gz -│ │ ├── NA24149.tp.vcf.gz.tbi -│ │ ├── NA24149.weighted.png -│ │ ├── NA24149.weighted_roc.tsv.gz -│ │ └── NA24149.weighted.svg -│ ├── NA24385_v2_0_0dev_2024_11_18 -│ │ ├── NA24385.bed -│ │ ├── NA24385.haplotypecaller.bcftools_stats.txt -│ │ ├── NA24385.haplotypecaller.g.vcf.gz -│ │ ├── NA24385.haplotypecaller.g.vcf.gz.tbi -│ │ └── validation -│ │ └── haplotypecaller -│ │ ├── NA24385.fn.vcf.gz -│ │ ├── NA24385.fn.vcf.gz.tbi -│ │ ├── NA24385.fp.vcf.gz -│ │ ├── NA24385.fp.vcf.gz.tbi -│ │ ├── NA24385.non_snp.png -│ │ ├── NA24385.non_snp_roc.tsv.gz -│ │ ├── NA24385.non_snp.svg -│ │ ├── NA24385.phasing.txt -│ │ ├── NA24385.snp.png -│ │ ├── NA24385.snp_roc.tsv.gz -│ │ ├── NA24385.snp.svg -│ │ ├── NA24385.summary.txt -│ │ ├── NA24385.tp-baseline.vcf.gz -│ │ ├── NA24385.tp-baseline.vcf.gz.tbi -│ │ ├── NA24385.tp.vcf.gz -│ │ ├── NA24385.tp.vcf.gz.tbi -│ │ ├── NA24385.weighted.png -│ │ ├── NA24385.weighted_roc.tsv.gz -│ │ └── NA24385.weighted.svg -│ ├── output_v2_0_0dev_2024_11_18 -│ │ ├── automap -│ │ │ └── haplotypecaller -│ │ │ ├── sample1 -│ │ │ │ ├── sample1.HomRegions.cmgg_bio.tsv + #(1)! +├── family1 #(2)! +│ ├── output__ #(3)! +│ │ ├── automap #(4)! +│ │ │ └── #(5)! +│ │ │ ├── sample1 #(6)! +│ │ │ │ ├── sample1.HomRegions..tsv │ │ │ │ ├── sample1.HomRegions.pdf -│ │ │ │ ├── sample1.HomRegions.strict.cmgg_bio.tsv +│ │ │ │ ├── sample1.HomRegions.strict..tsv │ │ │ │ └── sample1.HomRegions.tsv │ │ │ ├── sample2 -│ │ │ │ ├── sample2.HomRegions.cmgg_bio.tsv -│ │ │ │ ├── sample2.HomRegions.pdf -│ │ │ │ ├── sample2.HomRegions.strict.cmgg_bio.tsv -│ │ │ │ └── sample2.HomRegions.tsv │ │ │ └── sample3 -│ │ │ ├── sample3.HomRegions.cmgg_bio.tsv -│ │ │ ├── sample3.HomRegions.pdf -│ │ │ ├── sample3.HomRegions.strict.cmgg_bio.tsv -│ │ │ └── sample3.HomRegions.tsv -│ │ ├── Proband_12345.haplotypecaller.bed -│ │ ├── Proband_12345.haplotypecaller.db -│ │ ├── Proband_12345.haplotypecaller.ped -│ │ ├── Proband_12345.haplotypecaller.vcf.gz -│ │ └── Proband_12345.haplotypecaller.vcf.gz.tbi -│ └── qc_v2_0_0dev_2024_11_18 -│ ├── Proband_12345.haplotypecaller.bcftools_stats.txt -│ └── Proband_12345.haplotypecaller.html -└── v2_0_0dev_2024_11_18 - ├── execution_report_2024-11-18_14-03-56.html - ├── execution_timeline_2024-11-18_14-03-56.html - ├── execution_trace_2024-11-18_14-03-56.html - ├── multiqc_report.html - ├── params_2024-11-18_14-04-11.json - ├── pipeline_dag_2024-11-18_14-03-56.html - ├── pipeline_software_mqc_versions.yml - └── samplesheet.csv +│ │ ├── family1..bed #(7)! +│ │ ├── family1..db #(8)! +│ │ ├── family1..ped #(9)! +│ │ ├── family1..vcf.gz #(10)! +│ │ └── family1..vcf.gz.tbi #(11)! +│ ├── qc__ #(12)! +│ │ ├── family1..bcftools_stats.txt #(13)! +│ │ └── family1..html #(14)! +│ ├── sample1__ #(15)! +│ │ ├── sample1.bed #(16)! +│ │ ├── sample1..bcftools_stats.txt #(17)! +│ │ ├── sample1..g.vcf.gz #(18)! +│ │ ├── sample1..g.vcf.gz.tbi #(19)! +│ │ └── validation #(20)! +│ │ └── #(21)! +│ │ ├── ... #(22)! +│ │ └── sample1.summary.txt #(23)! +│ ├── sample2__ +│ └── sample3__ +├── family2 +│ ├── output__ +│ ├── qc__ +│ └── sample4__ +└── _ #(24)! + ├── execution_report__--.html #(25)! + ├── execution_timeline__--.html #(26)! + ├── execution_trace__--.html #(27)! + ├── multiqc_report.html #(28)! + ├── params_2024-11-18_15-41-14.json #(29)! + ├── pipeline_dag__--.html #(30)! + ├── pipeline_software_mqc_versions.yml #(31)! + └── samplesheet. #(32)! ``` +1. The output directory specified with `--outdir` -```bash -results/ -├── YYYY_MM_DD_project_name #(1)! -│ └── FAMILY_1 #(2)! -│ ├── FAMILY_1.bed #(3)! -│ ├── FAMILY_1.haplotypecaller.ped #(4)! -│ ├── FAMILY_1.haplotypecaller.vcf.gz #(5)! -│ ├── FAMILY_1.haplotypecaller.vcf.gz.tbi #(6)! -│ └── reports -│ ├── FAMILY_1.haplotypecaller.bcftools_stats.txt #(7)! -│ └── FAMILY_1.haplotypecaller.somalier.html #(8)! -├── multiqc -│ ├── multiqc_data/ -│ └── multiqc_report.html #(9)! -├── SAMPLE_1 #(10)! -│ ├── SAMPLE_1.bed #(11)! -│ ├── SAMPLE_1.haplotypecaller.g.vcf.gz #(12)! -│ ├── SAMPLE_1.haplotypecaller.g.vcf.gz.tbi -│ └── reports -│ ├── SAMPLE_1.haplotypecaller.bcftools_stats.txt -│ ├── SAMPLE_1.mosdepth.global.dist.txt #(13)! -│ └── SAMPLE_1.mosdepth.summary.txt #(14)! -├── SAMPLE_2 -│ ├── SAMPLE_2.bed -│ ├── SAMPLE_2.haplotypecaller.g.vcf.gz -│ ├── SAMPLE_2.haplotypecaller.g.vcf.gz.tbi -│ └── reports -│ ├── SAMPLE_2.haplotypecaller.bcftools_stats.txt -│ ├── SAMPLE_2.mosdepth.global.dist.txt -│ └── SAMPLE_2.mosdepth.summary.txt -├── pipeline_info/ #(15)! -└── samplesheet.csv #(16)! -``` +2. The first family name specified in the samplesheet in the `family` field + +3. This folder contains all major outputs of the current family + +4. This folder will only be made when the `--automap` parameter has been used. It contains all output files from the automap process + +5. A specific folder containing postprocessing output generated for the caller used. This folder will be created for each caller provided to the `--callers` parameter + +6. This folder contains the files for the specified sample + +7. The BED file used to create the VCF file in this folder using the caller specified in the filename + +8. The Gemini DB file generated from the output VCF and the PED file. This file will only be created when `--gemini` has been used + +9. The PED file for the current family. This file will contain the correct samples from the input PED file, when given. The pipeline will try and infer a PED file automatically when none has been given. Mind that the inferring of the PED file can have some issues and isn't perfect. Giving a PED file is the recommended way of providing relational data to the pipeline + +10. The final VCF file created using the caller specified in the filename. All required postprocessing methods have been applied on this file + +11. The index of the final VCF file + +12. This folder contains all quality metrics for the family + +13. The statistics calculated by `bcftools stats` + +14. The relational report created by `somalier relate` -1. This is the name of the main pipeline output. It contains the current date and the mnemonic name of the pipeline run by default. The date can be excluded with the `--skip_date_project` parameter and the name can be customized with the `--project ` parameter. +15. The folder containing sample specific files -2. This directory contains all files for family `FAMILY_1`. +16. The BED file used to create the GVCF files for the sample -3. This is the BED file used to parallelize the joint-genotyping. It contains all regions where real variants have been found in all GVCFs in the family. The value of `--merge_distance` (default: `100000` base pairs) is used to pad the region so the BED file contains multiple bigger regions instead of tons of small regions. +17. The statistics of the GVCF file, calculate by `bcftools stats` -4. The PED file detailing the relation between the different members of the family. This file will be inferred when no PED file has been given to this family. +18. The GVCF file generated by the specified caller -5. The resulting VCF for this family. All desired post-processing has been applied on this file. +19. The index of the GVCF file -6. The index of the resulting VCF. +20. This folder contains the validation metrics of this specific sample in the final VCF -7. The statistics created with `bcftools stats` for the resulting VCF. +21. This folder contains the validation metrics for the final VCF generated using the specified caller -8. The results of `somalier relate`. +22. Additional files were removed from this example, but they are several VCF files and images for deeper analysis of the validation -9. The report created with MultiQC. This contains all statistics generated with `bcftools stats`, Ensembl VEP and other tools. +23. This file contains a summary of the validation metrics -10. The folder for `SAMPLE_1` containing temporary files that could be useful for re-analysis later. +24. This folder contains pipeline metrics and other pipeline run specific files -11. This is the BED file used to parallelize the variant calling. It contains all regions that are callable in the input files based on the desired regions (WGS = the whole genome; WES = the regions specified in the `roi` BED file). +25. This file is an HTML file that summarizes a lot of metrics of the pipeline run (cpu usage, memory usage, walltime...) -12. The GVCF file created with `haplotypecaller`. This can be used in later runs of the pipeline to skip variant calling for this sample. A major use case for this is to add a new member to a family without having to call all variants of already called members. +26. This file is an HTML file that visualizes the timeline of the pipeline run -13. The global distribution of the coverage calculated by `mosdepth`. +27. This file is an HTML file that visualizes the trace of the pipeline run -14. The summary created by `mosdepth`. +28. The multiqc report containing all main statistics of the output data and tool versions -15. The directory containing information of the pipeline run. +29. A JSON file containing the used parameters to run this pipeline run -16. The samplesheet used for the pipeline run. +30. This file is an HTML file that visualizes the DAG of the pipeline run -## Pipeline overview +31. This file contains a list of all tools used in the pipeline and their versions -[Nextflow](https://www.nextflow.io/docs/latest/tracing.html) provides excellent functionality for generating various reports relevant to the running and execution of the pipeline. This will allow you to troubleshoot errors with the running of the pipeline, and also provide you with other information such as launch commands, run times and resource usage. +32. The samplesheet used to run this pipeline run diff --git a/subworkflows/local/utils_cmgg_germline_pipeline/main.nf b/subworkflows/local/utils_cmgg_germline_pipeline/main.nf index 8c463532..6c1e95e0 100644 --- a/subworkflows/local/utils_cmgg_germline_pipeline/main.nf +++ b/subworkflows/local/utils_cmgg_germline_pipeline/main.nf @@ -84,7 +84,7 @@ workflow PIPELINE_INITIALISATION { ) // Output the samplesheet - file(input).copyTo("${outdir}/v${workflow.manifest.version.replace('.', '_')}_${new Date().format("yyyy_MM_dd")}/samplesheet.csv") + file(input).copyTo("${outdir}/v${workflow.manifest.version.replace('.', '_')}_${new Date().format("yyyy_MM_dd")}/samplesheet.${file(input).extension}") emit: samplesheet = WATCHPATH_HANDLING.out.samplesheet From 1abbef5f46b5e38c845f7708b8bf83ce4523bcee Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Mon, 18 Nov 2024 16:50:37 +0100 Subject: [PATCH 125/167] update the docs some more --- docs/CITATIONS.md | 4 ++++ docs/output.md | 2 ++ docs/parameters.md | 42 +++++++++++++++++++++--------------------- 3 files changed, 27 insertions(+), 21 deletions(-) diff --git a/docs/CITATIONS.md b/docs/CITATIONS.md index 8fa8736d..8dc76574 100644 --- a/docs/CITATIONS.md +++ b/docs/CITATIONS.md @@ -40,6 +40,10 @@ > Quinlan AR and Hall IM, 2010. BEDTools: a flexible suite of utilities for comparing genomic features. Bioinformatics. 26, 6, pp. 841–842. +- [elPrep](https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0244471) + + > Herzeel C, Costanza P, Decap D, Fostier J, Wuyts R, Verachtert W (2021) Multithreaded variant calling in elPrep 5. PLoS ONE 16(2): e0244471 + - [EnsemblVEP](https://pubmed.ncbi.nlm.nih.gov/27268795/) > McLaren W, Gil L, Hunt SE, et al.: The Ensembl Variant Effect Predictor. Genome Biol. 2016 Jun 6;17(1):122. doi: 10.1186/s13059-016-0974-4. PubMed PMID: 27268795; PubMed Central PMCID: PMC4893825. diff --git a/docs/output.md b/docs/output.md index 9f3f9a3a..facf11d9 100644 --- a/docs/output.md +++ b/docs/output.md @@ -4,6 +4,8 @@ This page describes the output produced by the pipeline. +The output directory has been structured in such a way that you can pass the same output directory to it for each pipeline run. The pipeline will add the files to that directory in a traceable way without overwriting already existing files. This makes it easy to store data, coming from multiple sequencing runs, in the same root directory. + To explain the structure of the output directory, a simple example run consisting of two families is used. The first family (`family1`) is a family consisting of a trio (son, father and mother) and the second family (`family2`) consists of a single sample. ```bash diff --git a/docs/parameters.md b/docs/parameters.md index 30b8b632..8a8e8372 100644 --- a/docs/parameters.md +++ b/docs/parameters.md @@ -8,8 +8,8 @@ Define where the pipeline should find input data and save output data. | Parameter | Description | Type | Default | Required | Hidden | |-----------|-----------|-----------|-----------|-----------|-----------| -| `input` | Path to comma-separated file containing information about the samples in the experiment.
    HelpYou will need to create a design file with information about the samples in your experiment before running the pipeline. Use this parameter to specify its location. It has to be a comma-separated file with samples, and a header row. See [usage docs](./usage.md).
    | `string` | | True | | -| `outdir` | The output directory where the results will be saved. You have to use absolute paths to storage on Cloud infrastructure. | `string` | | True | | +| `input` | Path to comma-separated file containing information about the samples in the experiment.
    HelpYou will need to create a design file with information about the samples in your experiment before running the pipeline. Use this parameter to specify its location. It has to be a comma-separated file with samples, and a header row. See [usage docs](./usage.md).
    | `string` | | :heavy_check_mark: | | +| `outdir` | The output directory where the results will be saved. You have to use absolute paths to storage on Cloud infrastructure. | `string` | | :heavy_check_mark: | | | `watchdir` | A folder to watch for the creation of files that start with `watch:` in the samplesheet. | `string` | | | | | `email` | Email address for completion summary.
    HelpSet this parameter to your e-mail address to get a summary e-mail with details of the run sent to you when the workflow exits. If set in your user config file (`~/.nextflow/config`) then you don't need to specify this on the command line for every run.
    | `string` | | | | | `ped` | Path to a pedigree file for all samples in the run. All relational data will be fetched from this file. | `string` | | | | @@ -21,19 +21,19 @@ Reference genome related files and options required for the workflow. | Parameter | Description | Type | Default | Required | Hidden | |-----------|-----------|-----------|-----------|-----------|-----------| | `genome` | Reference genome build. Used to fetch the right reference files.
    HelpRequires a Genome Reference Consortium reference ID (e.g. GRCh38)
    | `string` | GRCh38 | | | -| `fasta` | Path to FASTA genome file.
    HelpThis parameter is *mandatory* if `--genome` is not specified. The path to the reference genome fasta.
    | `string` | | True | | +| `fasta` | Path to FASTA genome file.
    HelpThis parameter is *mandatory* if `--genome` is not specified. The path to the reference genome fasta.
    | `string` | | :heavy_check_mark: | | | `fai` | Path to FASTA genome index file. | `string` | | | | | `dict` | Path to the sequence dictionary generated from the FASTA reference. This is only used when `haplotypecaller` is one of the specified callers. | `string` | | | | | `strtablefile` | Path to the STR table file generated from the FASTA reference. This is only used when `--dragstr` has been given. | `string` | | | | | `sdf` | Path to the SDF folder generated from the reference FASTA file. This is only required when using `--validate`. | `string` | | | | | `elfasta` | Path to the ELFASTA genome file. This is used when `elprep` is part of the callers and will be automatically generated when missing. | `string` | | | | | `elsites` | Path to the elsites file. This is used when `elprep` is part of the callers. | `string` | | | | -| `genomes` | Object for genomes | `object` | | | True | +| `genomes` | Object for genomes | `object` | | | :heavy_check_mark: | | `genomes_base` | Directory base for CMGG reference store (used when `--genomes_ignore false` is specified) | `string` | /references/ | | | -| `cmgg_config_base` | The base directory for the local config files | `string` | /conf/ | | True | -| `genomes_ignore` | Do not load the local references from the path specified with `--genomes_base` | `boolean` | | | True | -| `igenomes_base` | Directory / URL base for iGenomes references. | `string` | | | True | -| `igenomes_ignore` | Do not load the iGenomes reference config.
    HelpDo not load `igenomes.config` when running the pipeline. You may choose this option if you observe clashes between custom parameters and those supplied in `igenomes.config`.
    | `boolean` | | | True | +| `cmgg_config_base` | The base directory for the local config files | `string` | /conf/ | | :heavy_check_mark: | +| `genomes_ignore` | Do not load the local references from the path specified with `--genomes_base` | `boolean` | | | :heavy_check_mark: | +| `igenomes_base` | Directory / URL base for iGenomes references. | `string` | | | :heavy_check_mark: | +| `igenomes_ignore` | Do not load the iGenomes reference config.
    HelpDo not load `igenomes.config` when running the pipeline. You may choose this option if you observe clashes between custom parameters and those supplied in `igenomes.config`.
    | `boolean` | | | :heavy_check_mark: | ## Pipeline specific parameters @@ -78,12 +78,12 @@ Parameters used to describe centralised config profiles. These should not be edi | Parameter | Description | Type | Default | Required | Hidden | |-----------|-----------|-----------|-----------|-----------|-----------| -| `custom_config_version` | Git commit id for Institutional configs. | `string` | master | | True | -| `custom_config_base` | Base directory for Institutional configs.
    HelpIf you're running offline, Nextflow will not be able to fetch the institutional config files from the internet. If you don't need them, then this is not a problem. If you do need them, you should download the files from the repo and tell Nextflow where to find them with this parameter.
    | `string` | https://raw.githubusercontent.com/nf-core/configs/master | | True | -| `config_profile_name` | Institutional config name. | `string` | | | True | -| `config_profile_description` | Institutional config description. | `string` | | | True | -| `config_profile_contact` | Institutional config contact information. | `string` | | | True | -| `config_profile_url` | Institutional config URL link. | `string` | | | True | +| `custom_config_version` | Git commit id for Institutional configs. | `string` | master | | :heavy_check_mark: | +| `custom_config_base` | Base directory for Institutional configs.
    HelpIf you're running offline, Nextflow will not be able to fetch the institutional config files from the internet. If you don't need them, then this is not a problem. If you do need them, you should download the files from the repo and tell Nextflow where to find them with this parameter.
    | `string` | https://raw.githubusercontent.com/nf-core/configs/master | | :heavy_check_mark: | +| `config_profile_name` | Institutional config name. | `string` | | | :heavy_check_mark: | +| `config_profile_description` | Institutional config description. | `string` | | | :heavy_check_mark: | +| `config_profile_contact` | Institutional config contact information. | `string` | | | :heavy_check_mark: | +| `config_profile_url` | Institutional config URL link. | `string` | | | :heavy_check_mark: | ## Generic options @@ -93,17 +93,17 @@ Less common options for the pipeline, typically set in a config file. |-----------|-----------|-----------|-----------|-----------|-----------| | `version` | Display version and exit. | `boolean` | | | | | `publish_dir_mode` | Method used to save pipeline results to output directory.
    HelpThe Nextflow `publishDir` option specifies which intermediate files should be saved to the output directory. This option tells the pipeline what method should be used to move these files. See [Nextflow docs](https://www.nextflow.io/docs/latest/process.html#publishdir) for details.
    | `string` | copy | | | -| `email_on_fail` | Email address for completion summary, only when pipeline fails.
    HelpAn email address to send a summary email to when the pipeline is completed - ONLY sent if the pipeline does not exit successfully.
    | `string` | | | True | -| `plaintext_email` | Send plain-text email instead of HTML. | `boolean` | | | True | -| `max_multiqc_email_size` | File size limit when attaching MultiQC reports to summary emails. | `string` | 25.MB | | True | -| `monochrome_logs` | Do not use coloured log outputs. | `boolean` | | | True | +| `email_on_fail` | Email address for completion summary, only when pipeline fails.
    HelpAn email address to send a summary email to when the pipeline is completed - ONLY sent if the pipeline does not exit successfully.
    | `string` | | | :heavy_check_mark: | +| `plaintext_email` | Send plain-text email instead of HTML. | `boolean` | | | :heavy_check_mark: | +| `max_multiqc_email_size` | File size limit when attaching MultiQC reports to summary emails. | `string` | 25.MB | | :heavy_check_mark: | +| `monochrome_logs` | Do not use coloured log outputs. | `boolean` | | | :heavy_check_mark: | | `hook_url` | Incoming hook URL for messaging service
    HelpIncoming hook URL for messaging service. Currently, MS Teams and Slack are supported.
    | `string` | | | | | `multiqc_title` | MultiQC report title. Printed as page header, used for filename if not otherwise specified. | `string` | | | | | `multiqc_config` | Custom config file to supply to MultiQC. | `string` | | | | | `multiqc_logo` | Custom logo file to supply to MultiQC. File name must also be set in the MultiQC config file | `string` | | | | | `multiqc_methods_description` | Custom MultiQC yaml file containing HTML including a methods description. | `string` | | | | -| `validate_params` | Boolean whether to validate parameters against the schema at runtime | `boolean` | True | | True | -| `pipelines_testdata_base_path` | Base URL or local path to location of pipeline test dataset files | `string` | https://raw.githubusercontent.com/nf-core/test-datasets/ | | True | +| `validate_params` | Boolean whether to validate parameters against the schema at runtime | `boolean` | :heavy_check_mark: | | :heavy_check_mark: | +| `pipelines_testdata_base_path` | Base URL or local path to location of pipeline test dataset files | `string` | https://raw.githubusercontent.com/nf-core/test-datasets/ | | :heavy_check_mark: | ## Annotation parameters @@ -113,7 +113,7 @@ Parameters to configure Ensembl VEP and VCFanno |-----------|-----------|-----------|-----------|-----------|-----------| | `vep_chunk_size` | The amount of sites per split VCF as input to VEP. | `integer` | 50000 | | | | `species` | The species of the samples.
    HelpMust be lower case and have underscores as spaces.
    | `string` | homo_sapiens | | | -| `vep_merged` | Specify if the VEP cache is a merged cache. | `boolean` | True | | | +| `vep_merged` | Specify if the VEP cache is a merged cache. | `boolean` | :heavy_check_mark: | | | | `vep_cache` | The path to the VEP cache. | `string` | | | | | `vep_dbnsfp` | Use the dbNSFP plugin with Ensembl VEP.
    HelpThe '--dbnsfp' and '--dbnsfp_tbi' parameters need to be specified when using this parameter.
    | `boolean` | | | | | `vep_spliceai` | Use the SpliceAI plugin with Ensembl VEP.
    HelpThe '--spliceai_indel', '--spliceai_indel_tbi', '--spliceai_snv' and '--spliceai_snv_tbi' parameters need to be specified when using this parameter.
    | `boolean` | | | | From 03d7c4a4739cf6b64aafa07ea569164bf90ed8de Mon Sep 17 00:00:00 2001 From: Matthias De Smet <11850640+matthdsm@users.noreply.github.com> Date: Tue, 19 Nov 2024 08:53:11 +0100 Subject: [PATCH 126/167] lower all gatk4 resources --- modules.json | 9 ++++++--- .../gatk4-createsequencedictionary.diff | 19 ++++++++++++++++++ .../gatk4/createsequencedictionary/main.nf | 2 +- .../gatk4-genomicsdbimport.diff | 20 +++++++++++++++++++ .../nf-core/gatk4/genomicsdbimport/main.nf | 2 +- .../genotypegvcfs/gatk4-genotypegvcfs.diff | 18 +++++++++++++++++ modules/nf-core/gatk4/genotypegvcfs/main.nf | 2 +- 7 files changed, 66 insertions(+), 6 deletions(-) create mode 100644 modules/nf-core/gatk4/createsequencedictionary/gatk4-createsequencedictionary.diff create mode 100644 modules/nf-core/gatk4/genomicsdbimport/gatk4-genomicsdbimport.diff create mode 100644 modules/nf-core/gatk4/genotypegvcfs/gatk4-genotypegvcfs.diff diff --git a/modules.json b/modules.json index 5e9357a6..2f447479 100644 --- a/modules.json +++ b/modules.json @@ -102,17 +102,20 @@ "gatk4/createsequencedictionary": { "branch": "master", "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", - "installed_by": ["modules"] + "installed_by": ["modules"], + "patch": "modules/nf-core/gatk4/createsequencedictionary/gatk4-createsequencedictionary.diff" }, "gatk4/genomicsdbimport": { "branch": "master", "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", - "installed_by": ["modules"] + "installed_by": ["modules"], + "patch": "modules/nf-core/gatk4/genomicsdbimport/gatk4-genomicsdbimport.diff" }, "gatk4/genotypegvcfs": { "branch": "master", "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", - "installed_by": ["modules"] + "installed_by": ["modules"], + "patch": "modules/nf-core/gatk4/genotypegvcfs/gatk4-genotypegvcfs.diff" }, "gatk4/haplotypecaller": { "branch": "master", diff --git a/modules/nf-core/gatk4/createsequencedictionary/gatk4-createsequencedictionary.diff b/modules/nf-core/gatk4/createsequencedictionary/gatk4-createsequencedictionary.diff new file mode 100644 index 00000000..74ff3550 --- /dev/null +++ b/modules/nf-core/gatk4/createsequencedictionary/gatk4-createsequencedictionary.diff @@ -0,0 +1,19 @@ +Changes in module 'nf-core/gatk4/createsequencedictionary' +'modules/nf-core/gatk4/createsequencedictionary/environment.yml' is unchanged +'modules/nf-core/gatk4/createsequencedictionary/meta.yml' is unchanged +Changes in 'gatk4/createsequencedictionary/main.nf': +--- modules/nf-core/gatk4/createsequencedictionary/main.nf ++++ modules/nf-core/gatk4/createsequencedictionary/main.nf +@@ -1,6 +1,6 @@ + process GATK4_CREATESEQUENCEDICTIONARY { + tag "$fasta" +- label 'process_medium' ++ label 'process_low' + + conda "${moduleDir}/environment.yml" + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + +'modules/nf-core/gatk4/createsequencedictionary/tests/main.nf.test.snap' is unchanged +'modules/nf-core/gatk4/createsequencedictionary/tests/tags.yml' is unchanged +'modules/nf-core/gatk4/createsequencedictionary/tests/main.nf.test' is unchanged +************************************************************ diff --git a/modules/nf-core/gatk4/createsequencedictionary/main.nf b/modules/nf-core/gatk4/createsequencedictionary/main.nf index c7f1d75b..ab58da95 100644 --- a/modules/nf-core/gatk4/createsequencedictionary/main.nf +++ b/modules/nf-core/gatk4/createsequencedictionary/main.nf @@ -1,6 +1,6 @@ process GATK4_CREATESEQUENCEDICTIONARY { tag "$fasta" - label 'process_medium' + label 'process_low' conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? diff --git a/modules/nf-core/gatk4/genomicsdbimport/gatk4-genomicsdbimport.diff b/modules/nf-core/gatk4/genomicsdbimport/gatk4-genomicsdbimport.diff new file mode 100644 index 00000000..1ff710cd --- /dev/null +++ b/modules/nf-core/gatk4/genomicsdbimport/gatk4-genomicsdbimport.diff @@ -0,0 +1,20 @@ +Changes in module 'nf-core/gatk4/genomicsdbimport' +'modules/nf-core/gatk4/genomicsdbimport/environment.yml' is unchanged +'modules/nf-core/gatk4/genomicsdbimport/meta.yml' is unchanged +Changes in 'gatk4/genomicsdbimport/main.nf': +--- modules/nf-core/gatk4/genomicsdbimport/main.nf ++++ modules/nf-core/gatk4/genomicsdbimport/main.nf +@@ -1,6 +1,6 @@ + process GATK4_GENOMICSDBIMPORT { + tag "$meta.id" +- label 'process_medium' ++ label 'process_low' + + conda "${moduleDir}/environment.yml" + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + +'modules/nf-core/gatk4/genomicsdbimport/tests/main.nf.test.snap' is unchanged +'modules/nf-core/gatk4/genomicsdbimport/tests/tags.yml' is unchanged +'modules/nf-core/gatk4/genomicsdbimport/tests/nextflow.config' is unchanged +'modules/nf-core/gatk4/genomicsdbimport/tests/main.nf.test' is unchanged +************************************************************ diff --git a/modules/nf-core/gatk4/genomicsdbimport/main.nf b/modules/nf-core/gatk4/genomicsdbimport/main.nf index 6f1d4c53..fb756a90 100644 --- a/modules/nf-core/gatk4/genomicsdbimport/main.nf +++ b/modules/nf-core/gatk4/genomicsdbimport/main.nf @@ -1,6 +1,6 @@ process GATK4_GENOMICSDBIMPORT { tag "$meta.id" - label 'process_medium' + label 'process_low' conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? diff --git a/modules/nf-core/gatk4/genotypegvcfs/gatk4-genotypegvcfs.diff b/modules/nf-core/gatk4/genotypegvcfs/gatk4-genotypegvcfs.diff new file mode 100644 index 00000000..b14ed8b2 --- /dev/null +++ b/modules/nf-core/gatk4/genotypegvcfs/gatk4-genotypegvcfs.diff @@ -0,0 +1,18 @@ +Changes in module 'nf-core/gatk4/genotypegvcfs' +'modules/nf-core/gatk4/genotypegvcfs/environment.yml' is unchanged +'modules/nf-core/gatk4/genotypegvcfs/meta.yml' is unchanged +Changes in 'gatk4/genotypegvcfs/main.nf': +--- modules/nf-core/gatk4/genotypegvcfs/main.nf ++++ modules/nf-core/gatk4/genotypegvcfs/main.nf +@@ -1,6 +1,6 @@ + process GATK4_GENOTYPEGVCFS { + tag "$meta.id" +- label 'process_high' ++ label 'process_low' + + conda "${moduleDir}/environment.yml" + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + +'modules/nf-core/gatk4/genotypegvcfs/tests/main.nf.test.snap' is unchanged +'modules/nf-core/gatk4/genotypegvcfs/tests/main.nf.test' is unchanged +************************************************************ diff --git a/modules/nf-core/gatk4/genotypegvcfs/main.nf b/modules/nf-core/gatk4/genotypegvcfs/main.nf index f180f749..dc26b33c 100644 --- a/modules/nf-core/gatk4/genotypegvcfs/main.nf +++ b/modules/nf-core/gatk4/genotypegvcfs/main.nf @@ -1,6 +1,6 @@ process GATK4_GENOTYPEGVCFS { tag "$meta.id" - label 'process_high' + label 'process_low' conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? From 0c82afb348575933a4ab2b0ca20a6f88b5d632a7 Mon Sep 17 00:00:00 2001 From: Matthias De Smet <11850640+matthdsm@users.noreply.github.com> Date: Tue, 19 Nov 2024 09:14:55 +0100 Subject: [PATCH 127/167] bump vcf2db --- modules.json | 2 +- modules/nf-core/vcf2db/environment.yml | 7 +++++++ modules/nf-core/vcf2db/main.nf | 4 +++- modules/nf-core/vcf2db/vcf2db.diff | 15 +++++++-------- 4 files changed, 18 insertions(+), 10 deletions(-) diff --git a/modules.json b/modules.json index b978c321..c0d8cb93 100644 --- a/modules.json +++ b/modules.json @@ -222,7 +222,7 @@ }, "vcf2db": { "branch": "master", - "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", + "git_sha": "2a1ee188cf232cabbc63891462a06c6b5a5f114b", "installed_by": ["modules"], "patch": "modules/nf-core/vcf2db/vcf2db.diff" }, diff --git a/modules/nf-core/vcf2db/environment.yml b/modules/nf-core/vcf2db/environment.yml index 58c477f9..037e1530 100644 --- a/modules/nf-core/vcf2db/environment.yml +++ b/modules/nf-core/vcf2db/environment.yml @@ -1,5 +1,12 @@ +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json channels: - conda-forge - bioconda dependencies: + # renovate: datasource=conda depName=conda-forge/python + - conda-forge::python=2.7 + # renovate: datasource=conda depName=bioconda/cyvcf2 + - bioconda::cyvcf2=0.20.9 + # renovate: datasource=conda depName=bioconda/vcf2db - bioconda::vcf2db=2020.02.24 diff --git a/modules/nf-core/vcf2db/main.nf b/modules/nf-core/vcf2db/main.nf index c4c439cd..ee7b5f98 100644 --- a/modules/nf-core/vcf2db/main.nf +++ b/modules/nf-core/vcf2db/main.nf @@ -4,7 +4,9 @@ process VCF2DB { // WARN: Version information not provided by tool on CLI. Please update version string below when bumping container versions. conda "${moduleDir}/environment.yml" - container "quay.io/cmgg/vcf2db:2020.02.24" + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/14/14d1257c98f789e23a888e2961673b5b98d89e4d03e6a3efba2b1134ed439f61/data': + 'community.wave.seqera.io/library/python_vcf2db:91f604106ada5cf2' }" input: tuple val(meta), path(vcf), path(ped) diff --git a/modules/nf-core/vcf2db/vcf2db.diff b/modules/nf-core/vcf2db/vcf2db.diff index 51e55ec1..45757135 100644 --- a/modules/nf-core/vcf2db/vcf2db.diff +++ b/modules/nf-core/vcf2db/vcf2db.diff @@ -1,7 +1,10 @@ Changes in module 'nf-core/vcf2db' +'modules/nf-core/vcf2db/environment.yml' is unchanged +'modules/nf-core/vcf2db/meta.yml' is unchanged +Changes in 'vcf2db/main.nf': --- modules/nf-core/vcf2db/main.nf +++ modules/nf-core/vcf2db/main.nf -@@ -1,12 +1,10 @@ +@@ -1,6 +1,6 @@ process VCF2DB { tag "$meta.id" - label 'process_medium' @@ -9,12 +12,8 @@ Changes in module 'nf-core/vcf2db' // 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/vcf2db:2020.02.24--pl5321hdfd78af_3': -- 'biocontainers/vcf2db:2020.02.24--pl5321hdfd78af_3' }" -+ container "quay.io/cmgg/vcf2db:2020.02.24" - - input: - tuple val(meta), path(vcf), path(ped) +'modules/nf-core/vcf2db/tests/main.nf.test.snap' is unchanged +'modules/nf-core/vcf2db/tests/tags.yml' is unchanged +'modules/nf-core/vcf2db/tests/main.nf.test' is unchanged ************************************************************ From 7caeeaeafe2156219ac9b04f69e3ca69e2c9e85d Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Tue, 19 Nov 2024 14:39:01 +0100 Subject: [PATCH 128/167] update metro map + changelog --- CHANGELOG.md | 2 + docs/images/germline_metro.png | Bin 250229 -> 319221 bytes docs/images/germline_metro.svg | 1371 +++++++++++++++++++------------- 3 files changed, 808 insertions(+), 565 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ca45e1db..a5c4fc02 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -24,6 +24,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 1. Validation of all samples now use an intersect of the golden truth BED files with the BED file used to call the variants. This should fix the WES validation which was broken until this point. 2. A couple of small fixes to the vardict flow. 3. Only use the standard chromosomes for UPDio analysis. +4. Reduced the resources given to some GATK4 modules +5. VCF2DB now uses a seqera container to fix some issues when running it in nomad ## v1.8.2 - Outstanding Oostkamp - [September 30 2024] diff --git a/docs/images/germline_metro.png b/docs/images/germline_metro.png index 05e012ea17a8080c2dfd1c9718c9dc4f296ddd15..c9b923a47a8d3c80e27006d63f2374c1fee25be4 100644 GIT binary patch literal 319221 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 z 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�Wy?TH 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%0DP|Ya*clfO>xH-xZ`^4nOBxIH)BMYZ<^5 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%0AtE@>NmteXk}!eL)iq2d)rFbIa6u;rs&FSvO9` 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 literal 250229 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
    HelpYou will need to create a design file with information about the samples in your experiment before running the pipeline. Use this parameter to specify its location. It has to be a comma-separated file with samples, and a header row. See [usage docs](./usage.md).
    | `string` | | :heavy_check_mark: | | -| `outdir` | The output directory where the results will be saved. You have to use absolute paths to storage on Cloud infrastructure. | `string` | | :heavy_check_mark: | | -| `watchdir` | A folder to watch for the creation of files that start with `watch:` in the samplesheet. | `string` | | | | -| `email` | Email address for completion summary.
    HelpSet this parameter to your e-mail address to get a summary e-mail with details of the run sent to you when the workflow exits. If set in your user config file (`~/.nextflow/config`) then you don't need to specify this on the command line for every run.
    | `string` | | | | -| `ped` | Path to a pedigree file for all samples in the run. All relational data will be fetched from this file. | `string` | | | | +| Parameter | Description | Type | Default | Required | Hidden | +| ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------- | ------- | ------------------ | ------ | +| `input` | Path to comma-separated file containing information about the samples in the experiment.
    HelpYou will need to create a design file with information about the samples in your experiment before running the pipeline. Use this parameter to specify its location. It has to be a comma-separated file with samples, and a header row. See [usage docs](./usage.md).
    | `string` | | :heavy_check_mark: | | +| `outdir` | The output directory where the results will be saved. You have to use absolute paths to storage on Cloud infrastructure. | `string` | | :heavy_check_mark: | | +| `watchdir` | A folder to watch for the creation of files that start with `watch:` in the samplesheet. | `string` | | | | +| `email` | Email address for completion summary.
    HelpSet this parameter to your e-mail address to get a summary e-mail with details of the run sent to you when the workflow exits. If set in your user config file (`~/.nextflow/config`) then you don't need to specify this on the command line for every run.
    | `string` | | | | +| `ped` | Path to a pedigree file for all samples in the run. All relational data will be fetched from this file. | `string` | | | | ## Reference genome options Reference genome related files and options required for the workflow. -| Parameter | Description | Type | Default | Required | Hidden | -|-----------|-----------|-----------|-----------|-----------|-----------| -| `genome` | Reference genome build. Used to fetch the right reference files.
    HelpRequires a Genome Reference Consortium reference ID (e.g. GRCh38)
    | `string` | GRCh38 | | | -| `fasta` | Path to FASTA genome file.
    HelpThis parameter is *mandatory* if `--genome` is not specified. The path to the reference genome fasta.
    | `string` | | :heavy_check_mark: | | -| `fai` | Path to FASTA genome index file. | `string` | | | | -| `dict` | Path to the sequence dictionary generated from the FASTA reference. This is only used when `haplotypecaller` is one of the specified callers. | `string` | | | | -| `strtablefile` | Path to the STR table file generated from the FASTA reference. This is only used when `--dragstr` has been given. | `string` | | | | -| `sdf` | Path to the SDF folder generated from the reference FASTA file. This is only required when using `--validate`. | `string` | | | | -| `elfasta` | Path to the ELFASTA genome file. This is used when `elprep` is part of the callers and will be automatically generated when missing. | `string` | | | | -| `elsites` | Path to the elsites file. This is used when `elprep` is part of the callers. | `string` | | | | -| `genomes` | Object for genomes | `object` | | | :heavy_check_mark: | -| `genomes_base` | Directory base for CMGG reference store (used when `--genomes_ignore false` is specified) | `string` | /references/ | | | -| `cmgg_config_base` | The base directory for the local config files | `string` | /conf/ | | :heavy_check_mark: | -| `genomes_ignore` | Do not load the local references from the path specified with `--genomes_base` | `boolean` | | | :heavy_check_mark: | -| `igenomes_base` | Directory / URL base for iGenomes references. | `string` | | | :heavy_check_mark: | -| `igenomes_ignore` | Do not load the iGenomes reference config.
    HelpDo not load `igenomes.config` when running the pipeline. You may choose this option if you observe clashes between custom parameters and those supplied in `igenomes.config`.
    | `boolean` | | | :heavy_check_mark: | +| Parameter | Description | Type | Default | Required | Hidden | +| ------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------- | ------------ | ------------------ | ------------------ | +| `genome` | Reference genome build. Used to fetch the right reference files.
    HelpRequires a Genome Reference Consortium reference ID (e.g. GRCh38)
    | `string` | GRCh38 | | | +| `fasta` | Path to FASTA genome file.
    HelpThis parameter is _mandatory_ if `--genome` is not specified. The path to the reference genome fasta.
    | `string` | | :heavy_check_mark: | | +| `fai` | Path to FASTA genome index file. | `string` | | | | +| `dict` | Path to the sequence dictionary generated from the FASTA reference. This is only used when `haplotypecaller` is one of the specified callers. | `string` | | | | +| `strtablefile` | Path to the STR table file generated from the FASTA reference. This is only used when `--dragstr` has been given. | `string` | | | | +| `sdf` | Path to the SDF folder generated from the reference FASTA file. This is only required when using `--validate`. | `string` | | | | +| `elfasta` | Path to the ELFASTA genome file. This is used when `elprep` is part of the callers and will be automatically generated when missing. | `string` | | | | +| `elsites` | Path to the elsites file. This is used when `elprep` is part of the callers. | `string` | | | | +| `genomes` | Object for genomes | `object` | | | :heavy_check_mark: | +| `genomes_base` | Directory base for CMGG reference store (used when `--genomes_ignore false` is specified) | `string` | /references/ | | | +| `cmgg_config_base` | The base directory for the local config files | `string` | /conf/ | | :heavy_check_mark: | +| `genomes_ignore` | Do not load the local references from the path specified with `--genomes_base` | `boolean` | | | :heavy_check_mark: | +| `igenomes_base` | Directory / URL base for iGenomes references. | `string` | | | :heavy_check_mark: | +| `igenomes_ignore` | Do not load the iGenomes reference config.
    HelpDo not load `igenomes.config` when running the pipeline. You may choose this option if you observe clashes between custom parameters and those supplied in `igenomes.config`.
    | `boolean` | | | :heavy_check_mark: | ## Pipeline specific parameters Parameters that define how the pipeline works -| Parameter | Description | Type | Default | Required | Hidden | -|-----------|-----------|-----------|-----------|-----------|-----------| -| `scatter_count` | The amount of scattering that should happen per sample.
    HelpIncrease this number to increase the pipeline run speed, but at the tradeoff of using more IO and disk space. This can differ from the actual scatter count in some cases (especially with smaller files).
    This has an effect on HaplotypeCaller, GenomicsDBImport and GenotypeGVCFs.
    | `integer` | 40 | | | -| `merge_distance` | The merge distance for family BED files
    HelpIncrease this parameter if GenomicsDBImport is running slow. This defines the maximum distance between intervals that should be merged. The less intervals GenomicsDBImport actually gets, the faster it will run.
    | `integer` | 100000 | | | -| `dragstr` | Create DragSTR models to be used with HaplotypeCaller
    HelpThis currently is only able to run single-core per sample. Due to this, the process is very slow with only very small improvements to the analysis.
    | `boolean` | | | | -| `validate` | Validate the found variants | `boolean` | | | | -| `filter` | Filter the found variants. | `boolean` | | | | -| `annotate` | Annotate the found variants using Ensembl VEP. | `boolean` | | | | -| `add_ped` | Add PED INFO header lines to the final VCFs. | `boolean` | | | | -| `gemini` | Create a Gemini databases from the final VCFs. | `boolean` | | | | -| `mosdepth_slow` | Don't run mosdepth in fast-mode
    HelpThis is advised if you need exact coverage BED files as output.
    | `boolean` | | | | -| `roi` | Path to the default ROI (regions of interest) BED file to be used for WES analysis.
    HelpThis will be used for all samples that do not have a specific ROI file supplied to them through the samplesheet. Don't supply an ROI file to run the analysis as WGS.
    | `string` | | | | -| `dbsnp` | Path to the dbSNP VCF file. This will be used to set the variant IDs. | `string` | | | | -| `dbsnp_tbi` | Path to the index of the dbSNP VCF file. | `string` | | | | -| `somalier_sites` | Path to the VCF file with sites for Somalier to use. | `string` | https://github.com/brentp/somalier/files/3412456/sites.hg38.vcf.gz | | | -| `only_call` | Only call the variants without doing any post-processing. | `boolean` | | | | -| `only_merge` | Only run the pipeline until the creation of the genomicsdbs and output them. | `boolean` | | | | -| `output_genomicsdb` | Output the genomicsDB together with the joint-genotyped VCF. | `boolean` | | | | -| `callers` | A comma delimited string of the available callers. Current options are: `haplotypecaller` and `vardict`. | `string` | haplotypecaller | | | -| `vardict_min_af` | The minimum allele frequency for VarDict when no `vardict_min_af` is supplied in the samplesheet. | `number` | 0.1 | | | -| `normalize` | Normalize the variant in the final VCFs. | `boolean` | | | | -| `output_suffix` | A custom suffix to add to the basename of the output files. | `string` | | | | -| `only_pass` | Filter out all variants that don't have the PASS filter for vardict. This only works when `--filter` is also given. | `boolean` | | | | -| `keep_alt_contigs` | Keep all aditional contigs for calling instead of filtering them out before. | `boolean` | | | | -| `updio` | Run UPDio analysis on the final VCFs. | `boolean` | | | | -| `updio_common_cnvs` | A TSV file containing common CNVs to be used by UPDio. | `string` | | | | -| `automap` | Run AutoMap analysis on the final VCFs. | `boolean` | | | | -| `automap_repeats` | BED file with repeat regions in the genome.
    HelpThis file will be automatically generated for hg38/GRCh38 and hg19/GRCh37 when this parameter has not been given.
    | `string` | | | | -| `automap_panel` | TXT file with gene panel regions to be used by AutoMap.
    HelpBy default the CMGG gene panel list will be used.
    | `string` | | | | -| `automap_panel_name` | The panel name of the panel given with --automap_panel. | `string` | cmgg_bio | | | -| `hc_phasing` | Perform phasing with HaplotypeCaller. | `boolean` | | | | -| `min_callable_coverage` | The lowest callable coverage to determine callable regions. | `integer` | 5 | | | +| Parameter | Description | Type | Default | Required | Hidden | +| ----------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------- | ------------------------------------------------------------------ | -------- | ------ | +| `scatter_count` | The amount of scattering that should happen per sample.
    HelpIncrease this number to increase the pipeline run speed, but at the tradeoff of using more IO and disk space. This can differ from the actual scatter count in some cases (especially with smaller files).
    This has an effect on HaplotypeCaller, GenomicsDBImport and GenotypeGVCFs.
    | `integer` | 40 | | | +| `merge_distance` | The merge distance for family BED files
    HelpIncrease this parameter if GenomicsDBImport is running slow. This defines the maximum distance between intervals that should be merged. The less intervals GenomicsDBImport actually gets, the faster it will run.
    | `integer` | 100000 | | | +| `dragstr` | Create DragSTR models to be used with HaplotypeCaller
    HelpThis currently is only able to run single-core per sample. Due to this, the process is very slow with only very small improvements to the analysis.
    | `boolean` | | | | +| `validate` | Validate the found variants | `boolean` | | | | +| `filter` | Filter the found variants. | `boolean` | | | | +| `annotate` | Annotate the found variants using Ensembl VEP. | `boolean` | | | | +| `add_ped` | Add PED INFO header lines to the final VCFs. | `boolean` | | | | +| `gemini` | Create a Gemini databases from the final VCFs. | `boolean` | | | | +| `mosdepth_slow` | Don't run mosdepth in fast-mode
    HelpThis is advised if you need exact coverage BED files as output.
    | `boolean` | | | | +| `roi` | Path to the default ROI (regions of interest) BED file to be used for WES analysis.
    HelpThis will be used for all samples that do not have a specific ROI file supplied to them through the samplesheet. Don't supply an ROI file to run the analysis as WGS.
    | `string` | | | | +| `dbsnp` | Path to the dbSNP VCF file. This will be used to set the variant IDs. | `string` | | | | +| `dbsnp_tbi` | Path to the index of the dbSNP VCF file. | `string` | | | | +| `somalier_sites` | Path to the VCF file with sites for Somalier to use. | `string` | https://github.com/brentp/somalier/files/3412456/sites.hg38.vcf.gz | | | +| `only_call` | Only call the variants without doing any post-processing. | `boolean` | | | | +| `only_merge` | Only run the pipeline until the creation of the genomicsdbs and output them. | `boolean` | | | | +| `output_genomicsdb` | Output the genomicsDB together with the joint-genotyped VCF. | `boolean` | | | | +| `callers` | A comma delimited string of the available callers. Current options are: `haplotypecaller` and `vardict`. | `string` | haplotypecaller | | | +| `vardict_min_af` | The minimum allele frequency for VarDict when no `vardict_min_af` is supplied in the samplesheet. | `number` | 0.1 | | | +| `normalize` | Normalize the variant in the final VCFs. | `boolean` | | | | +| `output_suffix` | A custom suffix to add to the basename of the output files. | `string` | | | | +| `only_pass` | Filter out all variants that don't have the PASS filter for vardict. This only works when `--filter` is also given. | `boolean` | | | | +| `keep_alt_contigs` | Keep all aditional contigs for calling instead of filtering them out before. | `boolean` | | | | +| `updio` | Run UPDio analysis on the final VCFs. | `boolean` | | | | +| `updio_common_cnvs` | A TSV file containing common CNVs to be used by UPDio. | `string` | | | | +| `automap` | Run AutoMap analysis on the final VCFs. | `boolean` | | | | +| `automap_repeats` | BED file with repeat regions in the genome.
    HelpThis file will be automatically generated for hg38/GRCh38 and hg19/GRCh37 when this parameter has not been given.
    | `string` | | | | +| `automap_panel` | TXT file with gene panel regions to be used by AutoMap.
    HelpBy default the CMGG gene panel list will be used.
    | `string` | | | | +| `automap_panel_name` | The panel name of the panel given with --automap_panel. | `string` | cmgg_bio | | | +| `hc_phasing` | Perform phasing with HaplotypeCaller. | `boolean` | | | | +| `min_callable_coverage` | The lowest callable coverage to determine callable regions. | `integer` | 5 | | | ## Institutional config options Parameters used to describe centralised config profiles. These should not be edited. -| Parameter | Description | Type | Default | Required | Hidden | -|-----------|-----------|-----------|-----------|-----------|-----------| -| `custom_config_version` | Git commit id for Institutional configs. | `string` | master | | :heavy_check_mark: | -| `custom_config_base` | Base directory for Institutional configs.
    HelpIf you're running offline, Nextflow will not be able to fetch the institutional config files from the internet. If you don't need them, then this is not a problem. If you do need them, you should download the files from the repo and tell Nextflow where to find them with this parameter.
    | `string` | https://raw.githubusercontent.com/nf-core/configs/master | | :heavy_check_mark: | -| `config_profile_name` | Institutional config name. | `string` | | | :heavy_check_mark: | -| `config_profile_description` | Institutional config description. | `string` | | | :heavy_check_mark: | -| `config_profile_contact` | Institutional config contact information. | `string` | | | :heavy_check_mark: | -| `config_profile_url` | Institutional config URL link. | `string` | | | :heavy_check_mark: | +| Parameter | Description | Type | Default | Required | Hidden | +| ---------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | -------------------------------------------------------- | -------- | ------------------ | +| `custom_config_version` | Git commit id for Institutional configs. | `string` | master | | :heavy_check_mark: | +| `custom_config_base` | Base directory for Institutional configs.
    HelpIf you're running offline, Nextflow will not be able to fetch the institutional config files from the internet. If you don't need them, then this is not a problem. If you do need them, you should download the files from the repo and tell Nextflow where to find them with this parameter.
    | `string` | https://raw.githubusercontent.com/nf-core/configs/master | | :heavy_check_mark: | +| `config_profile_name` | Institutional config name. | `string` | | | :heavy_check_mark: | +| `config_profile_description` | Institutional config description. | `string` | | | :heavy_check_mark: | +| `config_profile_contact` | Institutional config contact information. | `string` | | | :heavy_check_mark: | +| `config_profile_url` | Institutional config URL link. | `string` | | | :heavy_check_mark: | ## Generic options Less common options for the pipeline, typically set in a config file. -| Parameter | Description | Type | Default | Required | Hidden | -|-----------|-----------|-----------|-----------|-----------|-----------| -| `version` | Display version and exit. | `boolean` | | | | -| `publish_dir_mode` | Method used to save pipeline results to output directory.
    HelpThe Nextflow `publishDir` option specifies which intermediate files should be saved to the output directory. This option tells the pipeline what method should be used to move these files. See [Nextflow docs](https://www.nextflow.io/docs/latest/process.html#publishdir) for details.
    | `string` | copy | | | -| `email_on_fail` | Email address for completion summary, only when pipeline fails.
    HelpAn email address to send a summary email to when the pipeline is completed - ONLY sent if the pipeline does not exit successfully.
    | `string` | | | :heavy_check_mark: | -| `plaintext_email` | Send plain-text email instead of HTML. | `boolean` | | | :heavy_check_mark: | -| `max_multiqc_email_size` | File size limit when attaching MultiQC reports to summary emails. | `string` | 25.MB | | :heavy_check_mark: | -| `monochrome_logs` | Do not use coloured log outputs. | `boolean` | | | :heavy_check_mark: | -| `hook_url` | Incoming hook URL for messaging service
    HelpIncoming hook URL for messaging service. Currently, MS Teams and Slack are supported.
    | `string` | | | | -| `multiqc_title` | MultiQC report title. Printed as page header, used for filename if not otherwise specified. | `string` | | | | -| `multiqc_config` | Custom config file to supply to MultiQC. | `string` | | | | -| `multiqc_logo` | Custom logo file to supply to MultiQC. File name must also be set in the MultiQC config file | `string` | | | | -| `multiqc_methods_description` | Custom MultiQC yaml file containing HTML including a methods description. | `string` | | | | -| `validate_params` | Boolean whether to validate parameters against the schema at runtime | `boolean` | :heavy_check_mark: | | :heavy_check_mark: | -| `pipelines_testdata_base_path` | Base URL or local path to location of pipeline test dataset files | `string` | https://raw.githubusercontent.com/nf-core/test-datasets/ | | :heavy_check_mark: | +| Parameter | Description | Type | Default | Required | Hidden | +| ------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | --------- | -------------------------------------------------------- | -------- | ------------------ | +| `version` | Display version and exit. | `boolean` | | | | +| `publish_dir_mode` | Method used to save pipeline results to output directory.
    HelpThe Nextflow `publishDir` option specifies which intermediate files should be saved to the output directory. This option tells the pipeline what method should be used to move these files. See [Nextflow docs](https://www.nextflow.io/docs/latest/process.html#publishdir) for details.
    | `string` | copy | | | +| `email_on_fail` | Email address for completion summary, only when pipeline fails.
    HelpAn email address to send a summary email to when the pipeline is completed - ONLY sent if the pipeline does not exit successfully.
    | `string` | | | :heavy_check_mark: | +| `plaintext_email` | Send plain-text email instead of HTML. | `boolean` | | | :heavy_check_mark: | +| `max_multiqc_email_size` | File size limit when attaching MultiQC reports to summary emails. | `string` | 25.MB | | :heavy_check_mark: | +| `monochrome_logs` | Do not use coloured log outputs. | `boolean` | | | :heavy_check_mark: | +| `hook_url` | Incoming hook URL for messaging service
    HelpIncoming hook URL for messaging service. Currently, MS Teams and Slack are supported.
    | `string` | | | | +| `multiqc_title` | MultiQC report title. Printed as page header, used for filename if not otherwise specified. | `string` | | | | +| `multiqc_config` | Custom config file to supply to MultiQC. | `string` | | | | +| `multiqc_logo` | Custom logo file to supply to MultiQC. File name must also be set in the MultiQC config file | `string` | | | | +| `multiqc_methods_description` | Custom MultiQC yaml file containing HTML including a methods description. | `string` | | | | +| `validate_params` | Boolean whether to validate parameters against the schema at runtime | `boolean` | :heavy_check_mark: | | :heavy_check_mark: | +| `pipelines_testdata_base_path` | Base URL or local path to location of pipeline test dataset files | `string` | https://raw.githubusercontent.com/nf-core/test-datasets/ | | :heavy_check_mark: | ## Annotation parameters Parameters to configure Ensembl VEP and VCFanno -| Parameter | Description | Type | Default | Required | Hidden | -|-----------|-----------|-----------|-----------|-----------|-----------| -| `vep_chunk_size` | The amount of sites per split VCF as input to VEP. | `integer` | 50000 | | | -| `species` | The species of the samples.
    HelpMust be lower case and have underscores as spaces.
    | `string` | homo_sapiens | | | -| `vep_merged` | Specify if the VEP cache is a merged cache. | `boolean` | :heavy_check_mark: | | | -| `vep_cache` | The path to the VEP cache. | `string` | | | | -| `vep_dbnsfp` | Use the dbNSFP plugin with Ensembl VEP.
    HelpThe '--dbnsfp' and '--dbnsfp_tbi' parameters need to be specified when using this parameter.
    | `boolean` | | | | -| `vep_spliceai` | Use the SpliceAI plugin with Ensembl VEP.
    HelpThe '--spliceai_indel', '--spliceai_indel_tbi', '--spliceai_snv' and '--spliceai_snv_tbi' parameters need to be specified when using this parameter.
    | `boolean` | | | | -| `vep_spliceregion` | Use the SpliceRegion plugin with Ensembl VEP. | `boolean` | | | | -| `vep_mastermind` | Use the Mastermind plugin with Ensembl VEP.
    HelpThe '--mastermind' and '--mastermind_tbi' parameters need to be specified when using this parameter.
    | `boolean` | | | | -| `vep_maxentscan` | Use the MaxEntScan plugin with Ensembl VEP.
    HelpThe '--maxentscan' parameter need to be specified when using this parameter.
    | `boolean` | | | | -| `vep_eog` | Use the custom EOG annotation with Ensembl VEP.
    HelpThe '--eog' and '--eog_tbi' parameters need to be specified when using this parameter.
    | `boolean` | | | | -| `vep_alphamissense` | Use the AlphaMissense plugin with Ensembl VEP.
    HelpThe '--alphamissense' and '--alphamissense_tbi' parameters need to be specified when using this parameter.
    | `boolean` | | | | -| `vep_version` | The version of the VEP tool to be used. | `number` | 105.0 | | | -| `vep_cache_version` | The version of the VEP cache to be used. | `integer` | 105 | | | -| `dbnsfp` | Path to the dbSNFP file. | `string` | | | | -| `dbnsfp_tbi` | Path to the index of the dbSNFP file. | `string` | | | | -| `spliceai_indel` | Path to the VCF containing indels for spliceAI. | `string` | | | | -| `spliceai_indel_tbi` | Path to the index of the VCF containing indels for spliceAI. | `string` | | | | -| `spliceai_snv` | Path to the VCF containing SNVs for spliceAI. | `string` | | | | -| `spliceai_snv_tbi` | Path to the index of the VCF containing SNVs for spliceAI. | `string` | | | | -| `mastermind` | Path to the VCF for Mastermind. | `string` | | | | -| `mastermind_tbi` | Path to the index of the VCF for Mastermind. | `string` | | | | -| `alphamissense` | Path to the TSV for AlphaMissense. | `string` | | | | -| `alphamissense_tbi` | Path to the index of the TSV for AlphaMissense. | `string` | | | | -| `eog` | Path to the VCF containing EOG annotations. | `string` | | | | -| `eog_tbi` | Path to the index of the VCF containing EOG annotations. | `string` | | | | -| `vcfanno` | Run annotations with vcfanno. | `boolean` | | | | -| `vcfanno_config` | The path to the VCFanno config TOML. | `string` | | | | -| `vcfanno_lua` | The path to a Lua script to be used in VCFanno. | `string` | | | | -| `vcfanno_resources` | A semicolon-seperated list of resource files for VCFanno, please also supply their indices using this parameter. | `string` | | | | +| Parameter | Description | Type | Default | Required | Hidden | +| -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------- | ------------------ | -------- | ------ | +| `vep_chunk_size` | The amount of sites per split VCF as input to VEP. | `integer` | 50000 | | | +| `species` | The species of the samples.
    HelpMust be lower case and have underscores as spaces.
    | `string` | homo_sapiens | | | +| `vep_merged` | Specify if the VEP cache is a merged cache. | `boolean` | :heavy_check_mark: | | | +| `vep_cache` | The path to the VEP cache. | `string` | | | | +| `vep_dbnsfp` | Use the dbNSFP plugin with Ensembl VEP.
    HelpThe '--dbnsfp' and '--dbnsfp_tbi' parameters need to be specified when using this parameter.
    | `boolean` | | | | +| `vep_spliceai` | Use the SpliceAI plugin with Ensembl VEP.
    HelpThe '--spliceai_indel', '--spliceai_indel_tbi', '--spliceai_snv' and '--spliceai_snv_tbi' parameters need to be specified when using this parameter.
    | `boolean` | | | | +| `vep_spliceregion` | Use the SpliceRegion plugin with Ensembl VEP. | `boolean` | | | | +| `vep_mastermind` | Use the Mastermind plugin with Ensembl VEP.
    HelpThe '--mastermind' and '--mastermind_tbi' parameters need to be specified when using this parameter.
    | `boolean` | | | | +| `vep_maxentscan` | Use the MaxEntScan plugin with Ensembl VEP.
    HelpThe '--maxentscan' parameter need to be specified when using this parameter.
    | `boolean` | | | | +| `vep_eog` | Use the custom EOG annotation with Ensembl VEP.
    HelpThe '--eog' and '--eog_tbi' parameters need to be specified when using this parameter.
    | `boolean` | | | | +| `vep_alphamissense` | Use the AlphaMissense plugin with Ensembl VEP.
    HelpThe '--alphamissense' and '--alphamissense_tbi' parameters need to be specified when using this parameter.
    | `boolean` | | | | +| `vep_version` | The version of the VEP tool to be used. | `number` | 105.0 | | | +| `vep_cache_version` | The version of the VEP cache to be used. | `integer` | 105 | | | +| `dbnsfp` | Path to the dbSNFP file. | `string` | | | | +| `dbnsfp_tbi` | Path to the index of the dbSNFP file. | `string` | | | | +| `spliceai_indel` | Path to the VCF containing indels for spliceAI. | `string` | | | | +| `spliceai_indel_tbi` | Path to the index of the VCF containing indels for spliceAI. | `string` | | | | +| `spliceai_snv` | Path to the VCF containing SNVs for spliceAI. | `string` | | | | +| `spliceai_snv_tbi` | Path to the index of the VCF containing SNVs for spliceAI. | `string` | | | | +| `mastermind` | Path to the VCF for Mastermind. | `string` | | | | +| `mastermind_tbi` | Path to the index of the VCF for Mastermind. | `string` | | | | +| `alphamissense` | Path to the TSV for AlphaMissense. | `string` | | | | +| `alphamissense_tbi` | Path to the index of the TSV for AlphaMissense. | `string` | | | | +| `eog` | Path to the VCF containing EOG annotations. | `string` | | | | +| `eog_tbi` | Path to the index of the VCF containing EOG annotations. | `string` | | | | +| `vcfanno` | Run annotations with vcfanno. | `boolean` | | | | +| `vcfanno_config` | The path to the VCFanno config TOML. | `string` | | | | +| `vcfanno_lua` | The path to a Lua script to be used in VCFanno. | `string` | | | | +| `vcfanno_resources` | A semicolon-seperated list of resource files for VCFanno, please also supply their indices using this parameter. | `string` | | | | From 4b5e8980902184eb28e46ad2c45786cc7092298d Mon Sep 17 00:00:00 2001 From: Matthias De Smet <11850640+matthdsm@users.noreply.github.com> Date: Wed, 20 Nov 2024 09:39:13 +0100 Subject: [PATCH 132/167] detect HOOK_URL from env for support in nomad --- nextflow.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nextflow.config b/nextflow.config index 2f5aaaab..433f38bb 100644 --- a/nextflow.config +++ b/nextflow.config @@ -91,7 +91,7 @@ params { email_on_fail = null plaintext_email = false monochrome_logs = false - hook_url = null + hook_url = System.getenv('HOOK_URL') help = false help_full = false show_hidden = false From ecf67ab2f24ee4a6b62f9d03cddb3f57cb12ea6c Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Wed, 20 Nov 2024 11:59:08 +0100 Subject: [PATCH 133/167] replace dots with underscores --- CHANGELOG.md | 1 + assets/samplesheet.csv | 8 ++++---- assets/schema_input.json | 8 ++++---- conf/test.config | 1 + lib/Pedigree.groovy | 8 ++++---- subworkflows/local/watchpath_handling/main.nf | 5 +++++ 6 files changed, 19 insertions(+), 12 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 38136a64..c6b991a8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -23,6 +23,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 1. Validation of all samples now use an intersect of the golden truth BED files with the BED file used to call the variants. This should fix the WES validation which was broken until this point. 2. A couple of small fixes to the vardict flow. 3. Only use the standard chromosomes for UPDio analysis. +4. Dots in sample and family names are now converted to an underscore automatically. ## v1.8.2 - Outstanding Oostkamp - [September 30 2024] diff --git a/assets/samplesheet.csv b/assets/samplesheet.csv index b20e3926..3dc49e4f 100644 --- a/assets/samplesheet.csv +++ b/assets/samplesheet.csv @@ -1,4 +1,4 @@ -sample,family,cram,crai,roi,ped,truth_vcf,truth_tbi,truth_bed,vardict_min_af -NA24143,Proband_12345,https://github.com/nf-cmgg/test-datasets/raw/germline/data/genomics/homo_sapiens/illumina/crams/NA24143.cram,,,https://github.com/nf-cmgg/test-datasets/raw/germline/data/genomics/homo_sapiens/genome/test.ped,https://github.com/nf-cmgg/test-datasets/raw/germline/data/genomics/homo_sapiens/illumina/vcfs/NA24143.vcf.gz,https://github.com/nf-cmgg/test-datasets/raw/germline/data/genomics/homo_sapiens/illumina/vcfs/NA24143.vcf.gz.tbi,https://github.com/nf-cmgg/test-datasets/raw/germline/data/genomics/homo_sapiens/illumina/regions/roi.bed,0.01 -NA24149,Proband_12345,https://github.com/nf-cmgg/test-datasets/raw/germline/data/genomics/homo_sapiens/illumina/crams/NA24149.cram,https://github.com/nf-cmgg/test-datasets/raw/germline/data/genomics/homo_sapiens/illumina/crams/NA24149.cram.crai,https://github.com/nf-cmgg/test-datasets/raw/germline/data/genomics/homo_sapiens/illumina/regions/roi.bed,,https://github.com/nf-cmgg/test-datasets/raw/germline/data/genomics/homo_sapiens/illumina/vcfs/NA24149.vcf.gz,,, -NA24385,Proband_12345,https://github.com/nf-cmgg/test-datasets/raw/germline/data/genomics/homo_sapiens/illumina/crams/NA24385.cram,https://github.com/nf-cmgg/test-datasets/raw/germline/data/genomics/homo_sapiens/illumina/crams/NA24385.cram.crai,https://github.com/nf-cmgg/test-datasets/raw/germline/data/genomics/homo_sapiens/illumina/regions/roi.bed,,https://github.com/nf-cmgg/test-datasets/raw/germline/data/genomics/homo_sapiens/illumina/vcfs/NA24385.vcf.gz,,, +sample,family,cram,crai,roi,truth_vcf,truth_tbi,truth_bed,vardict_min_af +NA24143,Proband_12.345,https://github.com/nf-cmgg/test-datasets/raw/germline/data/genomics/homo_sapiens/illumina/crams/NA24143.cram,,,https://github.com/nf-cmgg/test-datasets/raw/germline/data/genomics/homo_sapiens/illumina/vcfs/NA24143.vcf.gz,https://github.com/nf-cmgg/test-datasets/raw/germline/data/genomics/homo_sapiens/illumina/vcfs/NA24143.vcf.gz.tbi,https://github.com/nf-cmgg/test-datasets/raw/germline/data/genomics/homo_sapiens/illumina/regions/roi.bed,0.01 +NA24149,Proband_12.345,https://github.com/nf-cmgg/test-datasets/raw/germline/data/genomics/homo_sapiens/illumina/crams/NA24149.cram,https://github.com/nf-cmgg/test-datasets/raw/germline/data/genomics/homo_sapiens/illumina/crams/NA24149.cram.crai,https://github.com/nf-cmgg/test-datasets/raw/germline/data/genomics/homo_sapiens/illumina/regions/roi.bed,https://github.com/nf-cmgg/test-datasets/raw/germline/data/genomics/homo_sapiens/illumina/vcfs/NA24149.vcf.gz,,, +NA24385,Proband_12.345,https://github.com/nf-cmgg/test-datasets/raw/germline/data/genomics/homo_sapiens/illumina/crams/NA24385.cram,https://github.com/nf-cmgg/test-datasets/raw/germline/data/genomics/homo_sapiens/illumina/crams/NA24385.cram.crai,https://github.com/nf-cmgg/test-datasets/raw/germline/data/genomics/homo_sapiens/illumina/regions/roi.bed,https://github.com/nf-cmgg/test-datasets/raw/germline/data/genomics/homo_sapiens/illumina/vcfs/NA24385.vcf.gz,,, diff --git a/assets/schema_input.json b/assets/schema_input.json index 7915f661..1cd7a49f 100644 --- a/assets/schema_input.json +++ b/assets/schema_input.json @@ -9,15 +9,15 @@ "properties": { "sample": { "type": "string", - "pattern": "^[^\\. ]+$", + "pattern": "^[a-zA-Z0-9_\\.]+$", "meta": ["id", "sample"], - "errorMessage": "Sample name should be a string that does not contain dots or spaces" + "errorMessage": "Sample name should be a string that may contain underscores (_) and dots (.)" }, "family": { "type": "string", - "pattern": "^[^\\. ]+$", + "pattern": "^[a-zA-Z0-9_\\.]+$", "meta": ["family"], - "errorMessage": "Family name should be a string that does not contain dots or spaces" + "errorMessage": "Family name should be a string that may contain underscores (_) and dots (.)" }, "cram": { "oneOf": [ diff --git a/conf/test.config b/conf/test.config index 714035fb..6229b658 100644 --- a/conf/test.config +++ b/conf/test.config @@ -37,6 +37,7 @@ params { elfasta = "https://github.com/nf-cmgg/test-datasets/raw/germline/data/genomics/homo_sapiens/genome/hg38_chr21_22000000_23000000.elfasta" sdf = "https://github.com/nf-cmgg/test-datasets/raw/germline/data/genomics/homo_sapiens/genome/hg38_chr21_22000000_23000000_sdf.tar.gz" strtablefile = "https://github.com/nf-cmgg/test-datasets/raw/germline/data/genomics/homo_sapiens/genome/hg38_chr21_22000000_23000000.strtable.zip" + ped = "https://github.com/nf-cmgg/test-datasets/raw/germline/data/genomics/homo_sapiens/genome/test_dots.ped" // Pipeline specific parameters filter = true diff --git a/lib/Pedigree.groovy b/lib/Pedigree.groovy index 8b1a0bbe..676bdee3 100644 --- a/lib/Pedigree.groovy +++ b/lib/Pedigree.groovy @@ -84,7 +84,7 @@ class PedigreeEntry { // Family ID id = lineSplit[0] if (id ==~ idRegex) { - familyId = id + familyId = id.replace(".", "_") // Replace dots with underscores to prevent breaking the multiqc report } else { exceptions.add("Invalid family ID (${id}). It should only contain these characters: a-z, A-Z, 0-9, _ and ." as String) } @@ -92,7 +92,7 @@ class PedigreeEntry { // Individual ID id = lineSplit[1] if (id ==~ idRegex) { - individualId = id + individualId = id.replace(".", "_") // Replace dots with underscores to prevent breaking the multiqc report } else { exceptions.add("Invalid individual ID (${id}). It should only contain these characters: a-z, A-Z, 0-9, _ and ." as String) } @@ -102,7 +102,7 @@ class PedigreeEntry { // Paternal ID id = lineSplit[2] if (id ==~ idRegex) { - paternalId = id + paternalId = id.replace(".", "_") // Replace dots with underscores to prevent breaking the multiqc report } else if (!validMissingIDs.contains(id)) { exceptions.add("Invalid paternal ID (${id}). It should only contain these characters: a-z, A-Z, 0-9, _ and .; Use 0 if the paternal ID is missing" as String) } @@ -110,7 +110,7 @@ class PedigreeEntry { // Maternal ID id = lineSplit[3] if (id ==~ idRegex) { - maternalId = id + maternalId = id.replace(".", "_") // Replace dots with underscores to prevent breaking the multiqc report } else if (!validMissingIDs.contains(id)) { exceptions.add("Invalid maternal ID (${id}). It should only contain these characters: a-z, A-Z, 0-9, _ and .; Use 0 if the maternal ID is missing" as String) } diff --git a/subworkflows/local/watchpath_handling/main.nf b/subworkflows/local/watchpath_handling/main.nf index eca869b1..976f0f33 100644 --- a/subworkflows/local/watchpath_handling/main.nf +++ b/subworkflows/local/watchpath_handling/main.nf @@ -37,6 +37,11 @@ workflow WATCHPATH_HANDLING { def samplesheet_list = samplesheetToList(input_samplesheet, samplesheet_schema) // Do some calculations and manipulations here .collect { row -> + // Replace dots with underscores in sample and family names to prevent breaking the multiqc report + row[0].id = row[0].id.replace(".", "_") + row[0].sample = row[0].sample.replace(".", "_") + row[0].family = row[0].family.replace(".", "_") + // Watchpath logic def is_watch = false row = row.collect { input -> From 9d8440299b0c7a2c817d756544761dbb7d23b04e Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Wed, 20 Nov 2024 12:19:22 +0100 Subject: [PATCH 134/167] final small tweaks to the metro map --- docs/images/germline_metro.png | Bin 321626 -> 319602 bytes docs/images/germline_metro.svg | 234 ++++++++++++++++----------------- 2 files changed, 117 insertions(+), 117 deletions(-) diff --git a/docs/images/germline_metro.png b/docs/images/germline_metro.png index 531cef3062a06c13a4f2b6753998af8734e7b6c5..794442bb453ae2ab68095f5ab4d7c07ee81dae88 100644 GIT binary patch literal 319602 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ℜ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%0AgZPIs~?>Kcb828(lnEDs;V_fX@l-8 z&ACywWX#>zq}zd^2YOHH)otDZ!=oW7L=Ur;rxP+SO^&!Wr&nvGRWwXI^MQ{B9wt|f zz8N)Q_8Ufr9vi9s+KTL_Z8ASDHr6;o7v8onoq1J5d6d{^5xz9)B(}wzZ!)ltOu6{5 zY~1vHpHQ1b@&F_ZdGcnyqN?S*1Zk6*{jMsw?R92iPbI}B#1P(Ss>vJGO&e7+ZO8A~ z3$RHkJ>SbuV1aOYm}x~nsq0p;Br1LXJ@Zhu~G7a&mm6F_Nxul9>ucws81F<7zl#kJi#fp?_BfW z-oJ2gZ2hNHJ8W7NAGEY|){6)?81XBqxR0iqSy$)oz(c+>@0t8N-IZVG*;S3Ud~<#8 zmX}$6R3T_hGHdiv+y!O-`na#ctFC`6g*2km^ez(;%#AXG zV&{3=^CY88GM_#bmmt`UA-gL~?i;Y=pk!F=cxDj!Vd8G4ye`=pCI@k*gfJ4eD)H{! z)c3y<$U=|NDeC=IKR*A>GBdMYQc_xgc0^>Jg{z3SEYGT9u6f@6RN!Za>fEJb0~w!& zqMAJy3q2HnOQ@>8-mzhgwtx5drih^S*B7QnO&=c+pw)fO66%9Ne~j)`Fny)}IqI;F*%2?4Gim(Ln>~+j1Yys9h5FZbbni2SuaM0H?!;w~wW7 zJ-IMsjNRmog{A?Yx@JBUh_!&;k>BI4+V(zuOQcD}^=0F}dn{6C()Z!3W54DTdLDi% z30e63dA;c$fOR05?+6d@)7P)2;Yza4rqBt%wLKiD05aQ~*$!a0kjo$)CAf~QDmEBj z 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%0Dw4>S_zsS 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 diff --git a/docs/images/germline_metro.svg b/docs/images/germline_metro.svg index 270d1734..34f099cf 100644 --- a/docs/images/germline_metro.svg +++ b/docs/images/germline_metro.svg @@ -28,8 +28,8 @@ inkscape:document-units="mm" showgrid="false" inkscape:zoom="2.2076462" - inkscape:cx="919.30491" - inkscape:cy="862.00407" + inkscape:cx="240.52767" + inkscape:cy="539.48862" inkscape:window-width="2488" inkscape:window-height="1376" inkscape:window-x="1992" @@ -277,7 +277,7 @@ d="m 377.14682,276.17003 v -6.09082" id="path2500-5-9-0-5-2-6-5-1-6-2-0-8-8" sodipodi:nodetypes="cc" />samtools mergeintrasamplemerge bedsmerge bedsintrasamplemosdepthgrepfilter bedsbedtools intersectintersect with roibedtools splitbcftools querydefine regionsmerge bedsintrafamilybedtools splitGenotypeGVCFsbcftools concatsamplesheetsamplesheetsamplesheetsamplesheetrtgtools pedfiltercreate ped headerssomalierrelate bcftools annotateadd ped headerbcftoolsfilterupdiosamtools viewcram -> bam Date: Wed, 20 Nov 2024 15:11:10 +0100 Subject: [PATCH 135/167] fix build docs --- .github/workflows/build-docs.yml | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build-docs.yml b/.github/workflows/build-docs.yml index be1ba144..658315ab 100644 --- a/.github/workflows/build-docs.yml +++ b/.github/workflows/build-docs.yml @@ -17,9 +17,16 @@ jobs: with: python-version: 3.x - run: echo "cache_id=$(date --utc '+%V')" >> $GITHUB_ENV - - name: Obtain version from nextflow config + + - name: Read pipeline version from .nf-core.yml + uses: nichmor/minimal-read-yaml@v0.0.2 + id: read_yml + with: + config: ${{ github.workspace }}/.nf-core.yml + + - name: Parse version run: | - version=$(grep "version" nextflow.config | tail -1 | sed -e s'/[^=]*= //' | cut -d "'" -f 2) + version=${{ steps.read_yml.outputs['template']['version']}} [[ $version == *"dev"* ]] && pipeline_version="dev" || pipeline_version=$version echo "pipeline_version=$pipeline_version" >> $GITHUB_ENV - name: Setup git user From 6b3841ced35076655b211cbecabbcb100a4e9cfe Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Wed, 20 Nov 2024 15:19:25 +0100 Subject: [PATCH 136/167] try to fix docs building --- .github/workflows/build-docs.yml | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build-docs.yml b/.github/workflows/build-docs.yml index 658315ab..cfeff6f1 100644 --- a/.github/workflows/build-docs.yml +++ b/.github/workflows/build-docs.yml @@ -16,7 +16,9 @@ jobs: - uses: actions/setup-python@v4 with: python-version: 3.x - - run: echo "cache_id=$(date --utc '+%V')" >> $GITHUB_ENV + - name: Fetch current date + id: date + run: echo "cache_id=$(date --utc '+%V')" >> $GITHUB_OUTPUT - name: Read pipeline version from .nf-core.yml uses: nichmor/minimal-read-yaml@v0.0.2 @@ -25,17 +27,18 @@ jobs: config: ${{ github.workspace }}/.nf-core.yml - name: Parse version + id: version run: | version=${{ steps.read_yml.outputs['template']['version']}} [[ $version == *"dev"* ]] && pipeline_version="dev" || pipeline_version=$version - echo "pipeline_version=$pipeline_version" >> $GITHUB_ENV + echo "pipeline_version=$pipeline_version" >> $GITHUB_OUTPUT - name: Setup git user run: | git config --global user.name "${{github.actor}}" git config --global user.email "${{github.actor}}@users.noreply.github.com" - uses: actions/cache@v3 with: - key: mkdocs-material-${{ env.cache_id }} + key: mkdocs-material-${{ steps.date.cache_id }} path: .cache restore-keys: | mkdocs-material- @@ -43,6 +46,6 @@ jobs: run: pip install mkdocs-material pymdown-extensions pillow cairosvg mike - name: Build docs run: | - [[ ${{ env.pipeline_version }} == "dev" ]] && mike deploy --push ${{ env.pipeline_version }} || mike deploy --push --update-aliases ${{ env.pipeline_version }} latest + [[ ${{ steps.version.pipeline_version }} == "dev" ]] && mike deploy --push ${{ env.pipeline_version }} || mike deploy --push --update-aliases ${{ env.pipeline_version }} latest - name: Set default docs run: mike set-default --push latest From 34bcdbae261910bdb5c8bcd7a00d21a55a406026 Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Wed, 20 Nov 2024 15:24:51 +0100 Subject: [PATCH 137/167] try to fix docs building again --- .github/workflows/build-docs.yml | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build-docs.yml b/.github/workflows/build-docs.yml index cfeff6f1..22bc224f 100644 --- a/.github/workflows/build-docs.yml +++ b/.github/workflows/build-docs.yml @@ -32,20 +32,24 @@ jobs: version=${{ steps.read_yml.outputs['template']['version']}} [[ $version == *"dev"* ]] && pipeline_version="dev" || pipeline_version=$version echo "pipeline_version=$pipeline_version" >> $GITHUB_OUTPUT + - name: Setup git user run: | git config --global user.name "${{github.actor}}" git config --global user.email "${{github.actor}}@users.noreply.github.com" - uses: actions/cache@v3 with: - key: mkdocs-material-${{ steps.date.cache_id }} + key: mkdocs-material-${{ steps.date.outputs.cache_id }} path: .cache restore-keys: | mkdocs-material- + - name: Install dependencies run: pip install mkdocs-material pymdown-extensions pillow cairosvg mike + - name: Build docs run: | - [[ ${{ steps.version.pipeline_version }} == "dev" ]] && mike deploy --push ${{ env.pipeline_version }} || mike deploy --push --update-aliases ${{ env.pipeline_version }} latest + [[ ${{ steps.version.outputs.pipeline_version }} == "dev" ]] && mike deploy --push ${{ steps.version.outputs.pipeline_version }} || mike deploy --push --update-aliases ${{ env.pipeline_version }} latest + - name: Set default docs run: mike set-default --push latest From 91d910298dbf5dd8599e7390ddc74dec71be5516 Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Wed, 20 Nov 2024 15:27:28 +0100 Subject: [PATCH 138/167] try to fix docs building again --- .github/workflows/build-docs.yml | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build-docs.yml b/.github/workflows/build-docs.yml index 22bc224f..fc271a1e 100644 --- a/.github/workflows/build-docs.yml +++ b/.github/workflows/build-docs.yml @@ -29,9 +29,8 @@ jobs: - name: Parse version id: version run: | - version=${{ steps.read_yml.outputs['template']['version']}} - [[ $version == *"dev"* ]] && pipeline_version="dev" || pipeline_version=$version - echo "pipeline_version=$pipeline_version" >> $GITHUB_OUTPUT + [[ ${{ steps.read_yml.outputs['template']['version'] }} == *"dev"* ]] && pipeline_version="dev" || pipeline_version=$version + echo "version=$pipeline_version" >> $GITHUB_OUTPUT - name: Setup git user run: | @@ -49,7 +48,7 @@ jobs: - name: Build docs run: | - [[ ${{ steps.version.outputs.pipeline_version }} == "dev" ]] && mike deploy --push ${{ steps.version.outputs.pipeline_version }} || mike deploy --push --update-aliases ${{ env.pipeline_version }} latest + [[ ${{ steps.version.outputs.version }} == "dev" ]] && mike deploy --push ${{ steps.version.outputs.version }} || mike deploy --push --update-aliases ${{ env.pipeline_version }} latest - name: Set default docs run: mike set-default --push latest From 71afc797ddd51d007e01edfd02e1d9b2afdfc278 Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Wed, 20 Nov 2024 15:29:37 +0100 Subject: [PATCH 139/167] try to fix docs building again again --- .github/workflows/build-docs.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-docs.yml b/.github/workflows/build-docs.yml index fc271a1e..86a4aaae 100644 --- a/.github/workflows/build-docs.yml +++ b/.github/workflows/build-docs.yml @@ -29,7 +29,7 @@ jobs: - name: Parse version id: version run: | - [[ ${{ steps.read_yml.outputs['template']['version'] }} == *"dev"* ]] && pipeline_version="dev" || pipeline_version=$version + [[ ${{ steps.read_yml.outputs.template.version }} == *"dev"* ]] && pipeline_version="dev" || pipeline_version=$version echo "version=$pipeline_version" >> $GITHUB_OUTPUT - name: Setup git user From b5c01d18da02ae7c6d1ef40741f421ccc577728b Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Wed, 20 Nov 2024 15:31:55 +0100 Subject: [PATCH 140/167] do a deep dive in broken docs ci --- .github/workflows/build-docs.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/build-docs.yml b/.github/workflows/build-docs.yml index 86a4aaae..4278ede2 100644 --- a/.github/workflows/build-docs.yml +++ b/.github/workflows/build-docs.yml @@ -13,9 +13,11 @@ jobs: - uses: actions/checkout@v3 with: fetch-depth: 0 # fetch all commits/branches + - uses: actions/setup-python@v4 with: python-version: 3.x + - name: Fetch current date id: date run: echo "cache_id=$(date --utc '+%V')" >> $GITHUB_OUTPUT @@ -29,6 +31,7 @@ jobs: - name: Parse version id: version run: | + echo ${{ steps.read_yml.outputs }} [[ ${{ steps.read_yml.outputs.template.version }} == *"dev"* ]] && pipeline_version="dev" || pipeline_version=$version echo "version=$pipeline_version" >> $GITHUB_OUTPUT From 88cefa4704c69b0a610dc11570dd08733bc82c7d Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Wed, 20 Nov 2024 15:33:46 +0100 Subject: [PATCH 141/167] finally fixed? --- .github/workflows/build-docs.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/build-docs.yml b/.github/workflows/build-docs.yml index 4278ede2..7f0b559e 100644 --- a/.github/workflows/build-docs.yml +++ b/.github/workflows/build-docs.yml @@ -31,8 +31,7 @@ jobs: - name: Parse version id: version run: | - echo ${{ steps.read_yml.outputs }} - [[ ${{ steps.read_yml.outputs.template.version }} == *"dev"* ]] && pipeline_version="dev" || pipeline_version=$version + [[ ${{ steps.read_yml.outputs['template.version'] }} == *"dev"* ]] && pipeline_version="dev" || pipeline_version=$version echo "version=$pipeline_version" >> $GITHUB_OUTPUT - name: Setup git user From 0957b0373b934d343de1b88cb7f8f94d95f76891 Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Wed, 20 Nov 2024 17:13:19 +0100 Subject: [PATCH 142/167] fix mosdepth test --- modules.json | 3 +- modules/nf-core/mosdepth/mosdepth.diff | 64 +++++++++++++++++++ .../nf-core/mosdepth/tests/main.nf.test.snap | 14 ++-- 3 files changed, 73 insertions(+), 8 deletions(-) create mode 100644 modules/nf-core/mosdepth/mosdepth.diff diff --git a/modules.json b/modules.json index 09a84574..40e0bd9e 100644 --- a/modules.json +++ b/modules.json @@ -131,7 +131,8 @@ "mosdepth": { "branch": "master", "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", - "installed_by": ["modules"] + "installed_by": ["modules"], + "patch": "modules/nf-core/mosdepth/mosdepth.diff" }, "multiqc": { "branch": "master", diff --git a/modules/nf-core/mosdepth/mosdepth.diff b/modules/nf-core/mosdepth/mosdepth.diff new file mode 100644 index 00000000..049e0f1a --- /dev/null +++ b/modules/nf-core/mosdepth/mosdepth.diff @@ -0,0 +1,64 @@ +Changes in module 'nf-core/mosdepth' +'modules/nf-core/mosdepth/main.nf' is unchanged +'modules/nf-core/mosdepth/environment.yml' is unchanged +'modules/nf-core/mosdepth/meta.yml' is unchanged +'modules/nf-core/mosdepth/tests/tags.yml' is unchanged +'modules/nf-core/mosdepth/tests/quantized.config' is unchanged +'modules/nf-core/mosdepth/tests/threshold.config' is unchanged +'modules/nf-core/mosdepth/tests/window.config' is unchanged +'modules/nf-core/mosdepth/tests/main.nf.test' is unchanged +Changes in 'mosdepth/tests/main.nf.test.snap': +--- modules/nf-core/mosdepth/tests/main.nf.test.snap ++++ modules/nf-core/mosdepth/tests/main.nf.test.snap +@@ -471,7 +471,7 @@ + "id": "test", + "single_end": true + }, +- "test.quantized.bed.gz:md5,f037c215449d361112efc10108fcc17c" ++ "test.quantized.bed.gz:md5,b083304a7964b43313a2789c762738df" + ] + ], + "9": [ +@@ -480,7 +480,7 @@ + "id": "test", + "single_end": true + }, +- "test.quantized.bed.gz.csi:md5,4f69e6ace50206a2768be66ded3a56f0" ++ "test.quantized.bed.gz.csi:md5,3c5e7a03ab29089f33ac4aa5c44bcb8b" + ] + ], + "global_txt": [ +@@ -519,7 +519,7 @@ + "id": "test", + "single_end": true + }, +- "test.quantized.bed.gz:md5,f037c215449d361112efc10108fcc17c" ++ "test.quantized.bed.gz:md5,b083304a7964b43313a2789c762738df" + ] + ], + "quantized_csi": [ +@@ -528,7 +528,7 @@ + "id": "test", + "single_end": true + }, +- "test.quantized.bed.gz.csi:md5,4f69e6ace50206a2768be66ded3a56f0" ++ "test.quantized.bed.gz.csi:md5,3c5e7a03ab29089f33ac4aa5c44bcb8b" + ] + ], + "regions_bed": [ +@@ -561,10 +561,10 @@ + } + ], + "meta": { +- "nf-test": "0.8.4", +- "nextflow": "23.10.1" ++ "nf-test": "0.9.1", ++ "nextflow": "24.10.0" + }, +- "timestamp": "2024-04-29T13:33:01.164885111" ++ "timestamp": "2024-11-20T17:10:36.940635059" + }, + "homo_sapiens - bam, bai, bed": { + "content": [ + +************************************************************ diff --git a/modules/nf-core/mosdepth/tests/main.nf.test.snap b/modules/nf-core/mosdepth/tests/main.nf.test.snap index c604540b..21803178 100644 --- a/modules/nf-core/mosdepth/tests/main.nf.test.snap +++ b/modules/nf-core/mosdepth/tests/main.nf.test.snap @@ -471,7 +471,7 @@ "id": "test", "single_end": true }, - "test.quantized.bed.gz:md5,f037c215449d361112efc10108fcc17c" + "test.quantized.bed.gz:md5,b083304a7964b43313a2789c762738df" ] ], "9": [ @@ -480,7 +480,7 @@ "id": "test", "single_end": true }, - "test.quantized.bed.gz.csi:md5,4f69e6ace50206a2768be66ded3a56f0" + "test.quantized.bed.gz.csi:md5,3c5e7a03ab29089f33ac4aa5c44bcb8b" ] ], "global_txt": [ @@ -519,7 +519,7 @@ "id": "test", "single_end": true }, - "test.quantized.bed.gz:md5,f037c215449d361112efc10108fcc17c" + "test.quantized.bed.gz:md5,b083304a7964b43313a2789c762738df" ] ], "quantized_csi": [ @@ -528,7 +528,7 @@ "id": "test", "single_end": true }, - "test.quantized.bed.gz.csi:md5,4f69e6ace50206a2768be66ded3a56f0" + "test.quantized.bed.gz.csi:md5,3c5e7a03ab29089f33ac4aa5c44bcb8b" ] ], "regions_bed": [ @@ -561,10 +561,10 @@ } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.1", + "nextflow": "24.10.0" }, - "timestamp": "2024-04-29T13:33:01.164885111" + "timestamp": "2024-11-20T17:10:36.940635059" }, "homo_sapiens - bam, bai, bed": { "content": [ From a2c5f7e4462254e1379183752c36234fb536d142 Mon Sep 17 00:00:00 2001 From: Matthias De Smet <11850640+matthdsm@users.noreply.github.com> Date: Fri, 22 Nov 2024 07:36:30 +0100 Subject: [PATCH 143/167] set genotypegvcfs to process_single --- modules/nf-core/gatk4/genotypegvcfs/gatk4-genotypegvcfs.diff | 2 +- modules/nf-core/gatk4/genotypegvcfs/main.nf | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/nf-core/gatk4/genotypegvcfs/gatk4-genotypegvcfs.diff b/modules/nf-core/gatk4/genotypegvcfs/gatk4-genotypegvcfs.diff index b14ed8b2..c099c7aa 100644 --- a/modules/nf-core/gatk4/genotypegvcfs/gatk4-genotypegvcfs.diff +++ b/modules/nf-core/gatk4/genotypegvcfs/gatk4-genotypegvcfs.diff @@ -8,7 +8,7 @@ Changes in 'gatk4/genotypegvcfs/main.nf': process GATK4_GENOTYPEGVCFS { tag "$meta.id" - label 'process_high' -+ label 'process_low' ++ label 'process_single' conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? diff --git a/modules/nf-core/gatk4/genotypegvcfs/main.nf b/modules/nf-core/gatk4/genotypegvcfs/main.nf index dc26b33c..b3684ce3 100644 --- a/modules/nf-core/gatk4/genotypegvcfs/main.nf +++ b/modules/nf-core/gatk4/genotypegvcfs/main.nf @@ -1,6 +1,6 @@ process GATK4_GENOTYPEGVCFS { tag "$meta.id" - label 'process_low' + label 'process_single' conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? From fb6a4e3a7542f97a9f1d893cc3ef15b337919400 Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke <101190534+nvnieuwk@users.noreply.github.com> Date: Fri, 22 Nov 2024 16:14:11 +0100 Subject: [PATCH 144/167] add some new custom profiles (#229) * add some new custom profiles * fix tests * fix utils_nfschema_plugin test * fix somalier relate tests * fix rgtools pedfilter test * be more specific for bcftools norm * fix bcftools annotate test * fix vep tests * fix vep tests * make annotation wf local * remove snpeff/snpeff * prettier --- .github/workflows/build-docs.yml | 2 +- conf/{seqcap.config => copgt.config} | 9 +- conf/hypercap.config | 2 - conf/modules.config | 2 +- conf/wes.config | 10 + modules.json | 24 +- .../bcftools/annotate/bcftools-annotate.diff | 512 +++++++++++++++++- .../bcftools/annotate/tests/main.nf.test | 49 +- .../bcftools/annotate/tests/main.nf.test.snap | 200 ++++--- .../download/ensemblvep-download.diff | 61 ++- .../download/tests/main.nf.test.snap | 20 +- .../ensemblvep/vep/ensemblvep-vep.diff | 52 +- .../nf-core/ensemblvep/vep/tests/main.nf.test | 2 +- .../ensemblvep/vep/tests/main.nf.test.snap | 16 +- .../pedfilter/rtgtools-pedfilter.diff | 67 ++- .../pedfilter/tests/main.nf.test.snap | 20 +- modules/nf-core/snpeff/snpeff/environment.yml | 5 - modules/nf-core/snpeff/snpeff/main.nf | 62 --- modules/nf-core/snpeff/snpeff/meta.yml | 90 --- .../nf-core/snpeff/snpeff/tests/main.nf.test | 51 -- .../snpeff/snpeff/tests/main.nf.test.snap | 31 -- .../snpeff/snpeff/tests/nextflow.config | 3 - modules/nf-core/snpeff/snpeff/tests/tags.yml | 2 - .../somalier/relate/somalier-relate.diff | 187 ++++++- .../somalier/relate/tests/main.nf.test.snap | 96 +++- nextflow.config | 3 +- .../vcf_annotate_ensemblvep}/main.nf | 71 +-- .../vcf_annotate_ensemblvep}/meta.yml | 0 .../tests/main.nf.test | 178 ++++++ .../tests/main.nf.test.snap | 93 ++++ .../tests/nextflow.config | 0 subworkflows/local/vcf_annotation/main.nf | 4 +- .../utils_nfschema_plugin/tests/main.nf.test | 4 +- .../tests/main.nf.test | 332 ------------ .../tests/main.nf.test.snap | 338 ------------ 35 files changed, 1422 insertions(+), 1176 deletions(-) rename conf/{seqcap.config => copgt.config} (59%) create mode 100644 conf/wes.config delete mode 100644 modules/nf-core/snpeff/snpeff/environment.yml delete mode 100644 modules/nf-core/snpeff/snpeff/main.nf delete mode 100644 modules/nf-core/snpeff/snpeff/meta.yml delete mode 100644 modules/nf-core/snpeff/snpeff/tests/main.nf.test delete mode 100644 modules/nf-core/snpeff/snpeff/tests/main.nf.test.snap delete mode 100644 modules/nf-core/snpeff/snpeff/tests/nextflow.config delete mode 100644 modules/nf-core/snpeff/snpeff/tests/tags.yml rename subworkflows/{nf-core/vcf_annotate_ensemblvep_snpeff => local/vcf_annotate_ensemblvep}/main.nf (72%) rename subworkflows/{nf-core/vcf_annotate_ensemblvep_snpeff => local/vcf_annotate_ensemblvep}/meta.yml (100%) create mode 100644 subworkflows/local/vcf_annotate_ensemblvep/tests/main.nf.test create mode 100644 subworkflows/local/vcf_annotate_ensemblvep/tests/main.nf.test.snap rename subworkflows/{nf-core/vcf_annotate_ensemblvep_snpeff => local/vcf_annotate_ensemblvep}/tests/nextflow.config (100%) delete mode 100644 subworkflows/nf-core/vcf_annotate_ensemblvep_snpeff/tests/main.nf.test delete mode 100644 subworkflows/nf-core/vcf_annotate_ensemblvep_snpeff/tests/main.nf.test.snap diff --git a/.github/workflows/build-docs.yml b/.github/workflows/build-docs.yml index 7f0b559e..5e993588 100644 --- a/.github/workflows/build-docs.yml +++ b/.github/workflows/build-docs.yml @@ -27,7 +27,7 @@ jobs: id: read_yml with: config: ${{ github.workspace }}/.nf-core.yml - + - name: Parse version id: version run: | diff --git a/conf/seqcap.config b/conf/copgt.config similarity index 59% rename from conf/seqcap.config rename to conf/copgt.config index 9d499e5e..ecfdeb99 100644 --- a/conf/seqcap.config +++ b/conf/copgt.config @@ -1,12 +1,11 @@ /* ======================================================================================== - Nextflow config file for SeqCap runs + Nextflow config file for WES runs ======================================================================================== */ params { - callers = "vardict" - filter = true - normalize = true - scatter_count = 14 + caller = "haplotypecaller" + only_call = true + scatter_count = 8 } diff --git a/conf/hypercap.config b/conf/hypercap.config index ac937f98..9ce274d8 100644 --- a/conf/hypercap.config +++ b/conf/hypercap.config @@ -8,6 +8,4 @@ params { callers = "vardict" scatter_count = 5 only_pass = true - - output_suffix = "-vardict-decomposed-annotated" } diff --git a/conf/modules.config b/conf/modules.config index bd7050ae..4c769fdc 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -240,7 +240,7 @@ process { ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ - withName: "^.*BCFTOOLS_NORM\$" { + withName: "^.*GERMLINE:BCFTOOLS_NORM\$" { ext.prefix = {"${meta.id}.normalized"} ext.args = "-m-" } diff --git a/conf/wes.config b/conf/wes.config new file mode 100644 index 00000000..88b2a0ff --- /dev/null +++ b/conf/wes.config @@ -0,0 +1,10 @@ +/* +======================================================================================== + Nextflow config file for WES runs +======================================================================================== +*/ + +params { + callers = "haplotypecaller" + scatter_count = 8 +} diff --git a/modules.json b/modules.json index 40e0bd9e..5639cfd0 100644 --- a/modules.json +++ b/modules.json @@ -14,7 +14,7 @@ "bcftools/concat": { "branch": "master", "git_sha": "d1e0ec7670fa77905a378627232566ce54c3c26d", - "installed_by": ["vcf_annotate_ensemblvep_snpeff"] + "installed_by": ["modules"] }, "bcftools/filter": { "branch": "master", @@ -29,7 +29,7 @@ "bcftools/pluginscatter": { "branch": "master", "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", - "installed_by": ["vcf_annotate_ensemblvep_snpeff"] + "installed_by": ["modules"] }, "bcftools/query": { "branch": "master", @@ -44,7 +44,7 @@ "bcftools/sort": { "branch": "master", "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", - "installed_by": ["vcf_annotate_ensemblvep_snpeff"] + "installed_by": ["modules"] }, "bcftools/stats": { "branch": "master", @@ -86,7 +86,7 @@ "ensemblvep/vep": { "branch": "master", "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", - "installed_by": ["vcf_annotate_ensemblvep_snpeff"], + "installed_by": ["modules"], "patch": "modules/nf-core/ensemblvep/vep/ensemblvep-vep.diff" }, "gatk4/calibratedragstrmodel": { @@ -180,11 +180,6 @@ "git_sha": "b13f07be4c508d6ff6312d354d09f2493243e208", "installed_by": ["modules"] }, - "snpeff/snpeff": { - "branch": "master", - "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", - "installed_by": ["vcf_annotate_ensemblvep_snpeff"] - }, "somalier/extract": { "branch": "master", "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", @@ -199,7 +194,7 @@ "tabix/bgzip": { "branch": "master", "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", - "installed_by": ["vcf_annotate_ensemblvep_snpeff"] + "installed_by": ["modules"] }, "tabix/bgziptabix": { "branch": "master", @@ -209,7 +204,7 @@ "tabix/tabix": { "branch": "master", "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", - "installed_by": ["modules", "vcf_annotate_ensemblvep_snpeff"] + "installed_by": ["modules"] }, "untar": { "branch": "master", @@ -248,12 +243,7 @@ }, "utils_nfschema_plugin": { "branch": "master", - "git_sha": "bbd5a41f4535a8defafe6080e00ea74c45f4f96c", - "installed_by": ["subworkflows"] - }, - "vcf_annotate_ensemblvep_snpeff": { - "branch": "master", - "git_sha": "1b2fdf082b2ea7976b112e149a474d816094724c", + "git_sha": "2fd2cd6d0e7b273747f32e465fdc6bcc3ae0814e", "installed_by": ["subworkflows"] } } diff --git a/modules/nf-core/bcftools/annotate/bcftools-annotate.diff b/modules/nf-core/bcftools/annotate/bcftools-annotate.diff index 518cee56..045aa783 100644 --- a/modules/nf-core/bcftools/annotate/bcftools-annotate.diff +++ b/modules/nf-core/bcftools/annotate/bcftools-annotate.diff @@ -19,8 +19,516 @@ Changes in 'bcftools/annotate/main.nf': 'modules/nf-core/bcftools/annotate/tests/vcf.config' is unchanged 'modules/nf-core/bcftools/annotate/tests/vcf_gz_index_csi.config' is unchanged 'modules/nf-core/bcftools/annotate/tests/vcf_gz_index_tbi.config' is unchanged -'modules/nf-core/bcftools/annotate/tests/main.nf.test' is unchanged +Changes in 'bcftools/annotate/tests/main.nf.test': +--- modules/nf-core/bcftools/annotate/tests/main.nf.test ++++ modules/nf-core/bcftools/annotate/tests/main.nf.test +@@ -21,9 +21,9 @@ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz.tbi', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz', checkIfExists: true), +- file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true) +- ] +- input[1] = [] ++ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true), ++ [] ++ ] + """ + } + } +@@ -52,9 +52,9 @@ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), + [], + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz', checkIfExists: true), +- file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true) +- ] +- input[1] = [] ++ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true), ++ [] ++ ] + """ + } + } +@@ -82,9 +82,9 @@ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz.tbi', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz', checkIfExists: true), +- file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true) +- ] +- input[1] = [] ++ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true), ++ [] ++ ] + """ + } + } +@@ -116,9 +116,9 @@ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz.tbi', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz', checkIfExists: true), +- file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true) +- ] +- input[1] = [] ++ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true), ++ [] ++ ] + """ + } + } +@@ -150,9 +150,9 @@ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz.tbi', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz', checkIfExists: true), +- file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true) +- ] +- input[1] = [] ++ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true), ++ [] ++ ] + """ + } + } +@@ -178,17 +178,18 @@ + when { + process { + """ +- input[0] = [ ++ input[0] = Channel.of([ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), + [], + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true) +- ] +- input[1] = Channel.of( +- '##INFO=', +- '##INFO=' +- ).collectFile(name:"headers.vcf", newLine:true) ++ ]).join( ++ Channel.of( ++ '##INFO=', ++ '##INFO=' ++ ).collectFile(name:"headers.vcf", newLine:true) ++ ) + """ + } + } +@@ -218,9 +219,9 @@ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz.tbi', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz', checkIfExists: true), +- file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true) +- ] +- input[1] = [] ++ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true), ++ [] ++ ] + """ + } + } +@@ -247,9 +248,9 @@ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz.tbi', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz', checkIfExists: true), +- file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true) +- ] +- input[1] = [] ++ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true), ++ [] ++ ] + """ + } + } +@@ -277,9 +278,9 @@ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz.tbi', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz', checkIfExists: true), +- file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true) +- ] +- input[1] = [] ++ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true), ++ [] ++ ] + """ + } + } +@@ -307,9 +308,9 @@ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz.tbi', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz', checkIfExists: true), +- file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true) +- ] +- input[1] = [] ++ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true), ++ [] ++ ] + """ + } + } + 'modules/nf-core/bcftools/annotate/tests/bcf.config' is unchanged 'modules/nf-core/bcftools/annotate/tests/vcf_gz_index.config' is unchanged -'modules/nf-core/bcftools/annotate/tests/main.nf.test.snap' is unchanged +Changes in 'bcftools/annotate/tests/main.nf.test.snap': +--- modules/nf-core/bcftools/annotate/tests/main.nf.test.snap ++++ modules/nf-core/bcftools/annotate/tests/main.nf.test.snap +@@ -1,26 +1,5 @@ + { +- "bcf": { +- "content": [ +- [ +- [ +- { +- "id": "test", +- "single_end": false +- }, +- "test_ann.bcf" +- ] +- ], +- [ +- "versions.yml:md5,ea53f98610d42597cf384ff1fa3eb204" +- ] +- ], +- "meta": { +- "nf-test": "0.8.4", +- "nextflow": "24.04.2" +- }, +- "timestamp": "2024-06-12T16:39:33.331888" +- }, +- "sarscov2 - [vcf, tbi, annotation, annotation_tbi], [] - vcf_gz_index": { ++ "sarscov2 - [vcf, tbi, annotation, annotation_tbi], [] - vcf_gz_index_csi": { + "content": [ + [ + [ +@@ -51,9 +30,9 @@ + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, +- "timestamp": "2024-08-15T10:07:59.658031137" +- }, +- "sarscov2 - [vcf, tbi, annotation, annotation_tbi], [] - vcf_gz_index_csi - stub": { ++ "timestamp": "2024-08-15T10:08:10.581301219" ++ }, ++ "sarscov2 - [vcf, tbi, annotation, annotation_tbi], [] - stub": { + "content": [ + { + "0": [ +@@ -69,25 +48,13 @@ + + ], + "2": [ +- [ +- { +- "id": "test", +- "single_end": false +- }, +- "test_vcf.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" +- ] ++ + ], + "3": [ + "versions.yml:md5,ea53f98610d42597cf384ff1fa3eb204" + ], + "csi": [ +- [ +- { +- "id": "test", +- "single_end": false +- }, +- "test_vcf.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" +- ] ++ + ], + "tbi": [ + +@@ -110,9 +77,78 @@ + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, +- "timestamp": "2024-08-15T10:09:05.096883418" +- }, +- "sarscov2 - [vcf, tbi, annotation, annotation_tbi], [] - vcf_gz_index_csi": { ++ "timestamp": "2024-08-15T10:08:43.975017625" ++ }, ++ "sarscov2 - [vcf, tbi, annotation, annotation_tbi], [] - vcf_gz_index_tbi": { ++ "content": [ ++ [ ++ [ ++ { ++ "id": "test", ++ "single_end": false ++ }, ++ "test_vcf.vcf.gz" ++ ] ++ ], ++ [ ++ [ ++ { ++ "id": "test", ++ "single_end": false ++ }, ++ "test_vcf.vcf.gz.tbi" ++ ] ++ ], ++ [ ++ ++ ], ++ [ ++ "versions.yml:md5,ea53f98610d42597cf384ff1fa3eb204" ++ ] ++ ], ++ "meta": { ++ "nf-test": "0.8.4", ++ "nextflow": "24.04.2" ++ }, ++ "timestamp": "2024-08-15T10:08:21.354059092" ++ }, ++ "bcf": { ++ "content": [ ++ [ ++ ++ ], ++ [ ++ ++ ] ++ ], ++ "meta": { ++ "nf-test": "0.9.1", ++ "nextflow": "24.10.0" ++ }, ++ "timestamp": "2024-11-20T13:52:35.607526048" ++ }, ++ "sarscov2 - [vcf, tbi, annotation, annotation_tbi], [] - vcf_output": { ++ "content": [ ++ [ ++ [ ++ { ++ "id": "test", ++ "single_end": false ++ }, ++ "test_vcf.vcf.gz" ++ ] ++ ], ++ [ ++ "versions.yml:md5,ea53f98610d42597cf384ff1fa3eb204" ++ ] ++ ], ++ "meta": { ++ "nf-test": "0.8.4", ++ "nextflow": "24.04.2" ++ }, ++ "timestamp": "2024-08-15T10:07:37.788393317" ++ }, ++ "sarscov2 - [vcf, tbi, annotation, annotation_tbi], [] - vcf_gz_index": { + "content": [ + [ + [ +@@ -143,9 +179,30 @@ + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, +- "timestamp": "2024-08-15T10:08:10.581301219" +- }, +- "sarscov2 - [vcf, tbi, annotation, annotation_tbi], [] - stub": { ++ "timestamp": "2024-08-15T10:07:59.658031137" ++ }, ++ "sarscov2 - [vcf, [], annotation, annotation_tbi], [] - vcf_output": { ++ "content": [ ++ [ ++ [ ++ { ++ "id": "test", ++ "single_end": false ++ }, ++ "test_vcf.vcf.gz" ++ ] ++ ], ++ [ ++ "versions.yml:md5,ea53f98610d42597cf384ff1fa3eb204" ++ ] ++ ], ++ "meta": { ++ "nf-test": "0.8.4", ++ "nextflow": "24.04.2" ++ }, ++ "timestamp": "2024-08-15T10:07:48.500746325" ++ }, ++ "sarscov2 - [vcf, tbi, annotation, annotation_tbi], [] - vcf_gz_index_tbi - stub": { + "content": [ + { + "0": [ +@@ -158,7 +215,13 @@ + ] + ], + "1": [ +- ++ [ ++ { ++ "id": "test", ++ "single_end": false ++ }, ++ "test_vcf.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" ++ ] + ], + "2": [ + +@@ -170,7 +233,13 @@ + + ], + "tbi": [ +- ++ [ ++ { ++ "id": "test", ++ "single_end": false ++ }, ++ "test_vcf.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" ++ ] + ], + "vcf": [ + [ +@@ -190,84 +259,9 @@ + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, +- "timestamp": "2024-08-15T10:08:43.975017625" +- }, +- "sarscov2 - [vcf, tbi, annotation, annotation_tbi], [] - vcf_gz_index_tbi": { +- "content": [ +- [ +- [ +- { +- "id": "test", +- "single_end": false +- }, +- "test_vcf.vcf.gz" +- ] +- ], +- [ +- [ +- { +- "id": "test", +- "single_end": false +- }, +- "test_vcf.vcf.gz.tbi" +- ] +- ], +- [ +- +- ], +- [ +- "versions.yml:md5,ea53f98610d42597cf384ff1fa3eb204" +- ] +- ], +- "meta": { +- "nf-test": "0.8.4", +- "nextflow": "24.04.2" +- }, +- "timestamp": "2024-08-15T10:08:21.354059092" +- }, +- "sarscov2 - [vcf, tbi, annotation, annotation_tbi], [] - vcf_output": { +- "content": [ +- [ +- [ +- { +- "id": "test", +- "single_end": false +- }, +- "test_vcf.vcf.gz" +- ] +- ], +- [ +- "versions.yml:md5,ea53f98610d42597cf384ff1fa3eb204" +- ] +- ], +- "meta": { +- "nf-test": "0.8.4", +- "nextflow": "24.04.2" +- }, +- "timestamp": "2024-08-15T10:07:37.788393317" +- }, +- "sarscov2 - [vcf, [], annotation, annotation_tbi], [] - vcf_output": { +- "content": [ +- [ +- [ +- { +- "id": "test", +- "single_end": false +- }, +- "test_vcf.vcf.gz" +- ] +- ], +- [ +- "versions.yml:md5,ea53f98610d42597cf384ff1fa3eb204" +- ] +- ], +- "meta": { +- "nf-test": "0.8.4", +- "nextflow": "24.04.2" +- }, +- "timestamp": "2024-08-15T10:07:48.500746325" +- }, +- "sarscov2 - [vcf, tbi, annotation, annotation_tbi], [] - vcf_gz_index_tbi - stub": { ++ "timestamp": "2024-08-15T10:09:16.094918834" ++ }, ++ "sarscov2 - [vcf, tbi, annotation, annotation_tbi], [] - vcf_gz_index_csi - stub": { + "content": [ + { + "0": [ +@@ -280,31 +274,31 @@ + ] + ], + "1": [ +- [ +- { +- "id": "test", +- "single_end": false +- }, +- "test_vcf.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" +- ] ++ + ], + "2": [ +- ++ [ ++ { ++ "id": "test", ++ "single_end": false ++ }, ++ "test_vcf.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" ++ ] + ], + "3": [ + "versions.yml:md5,ea53f98610d42597cf384ff1fa3eb204" + ], + "csi": [ +- ++ [ ++ { ++ "id": "test", ++ "single_end": false ++ }, ++ "test_vcf.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" ++ ] + ], + "tbi": [ +- [ +- { +- "id": "test", +- "single_end": false +- }, +- "test_vcf.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" +- ] ++ + ], + "vcf": [ + [ +@@ -324,7 +318,7 @@ + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, +- "timestamp": "2024-08-15T10:09:16.094918834" ++ "timestamp": "2024-08-15T10:09:05.096883418" + }, + "sarscov2 - [vcf, tbi, annotation, annotation_tbi], [] - vcf_gz_index - stub": { + "content": [ + ************************************************************ diff --git a/modules/nf-core/bcftools/annotate/tests/main.nf.test b/modules/nf-core/bcftools/annotate/tests/main.nf.test index 3a5c4933..ed21a14d 100644 --- a/modules/nf-core/bcftools/annotate/tests/main.nf.test +++ b/modules/nf-core/bcftools/annotate/tests/main.nf.test @@ -21,9 +21,9 @@ nextflow_process { file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz.tbi', checkIfExists: true), file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true), + [] ] - input[1] = [] """ } } @@ -52,9 +52,9 @@ nextflow_process { file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), [], file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true), + [] ] - input[1] = [] """ } } @@ -82,9 +82,9 @@ nextflow_process { file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz.tbi', checkIfExists: true), file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true), + [] ] - input[1] = [] """ } } @@ -116,9 +116,9 @@ nextflow_process { file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz.tbi', checkIfExists: true), file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true), + [] ] - input[1] = [] """ } } @@ -150,9 +150,9 @@ nextflow_process { file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz.tbi', checkIfExists: true), file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true), + [] ] - input[1] = [] """ } } @@ -178,17 +178,18 @@ nextflow_process { when { process { """ - input[0] = [ + input[0] = Channel.of([ [ id:'test', single_end:false ], // meta map file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), [], file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz', checkIfExists: true), file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true) - ] - input[1] = Channel.of( - '##INFO=', - '##INFO=' - ).collectFile(name:"headers.vcf", newLine:true) + ]).join( + Channel.of( + '##INFO=', + '##INFO=' + ).collectFile(name:"headers.vcf", newLine:true) + ) """ } } @@ -218,9 +219,9 @@ nextflow_process { file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz.tbi', checkIfExists: true), file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true), + [] ] - input[1] = [] """ } } @@ -247,9 +248,9 @@ nextflow_process { file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz.tbi', checkIfExists: true), file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true), + [] ] - input[1] = [] """ } } @@ -277,9 +278,9 @@ nextflow_process { file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz.tbi', checkIfExists: true), file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true), + [] ] - input[1] = [] """ } } @@ -307,9 +308,9 @@ nextflow_process { file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz.tbi', checkIfExists: true), file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true), + [] ] - input[1] = [] """ } } diff --git a/modules/nf-core/bcftools/annotate/tests/main.nf.test.snap b/modules/nf-core/bcftools/annotate/tests/main.nf.test.snap index bac2224a..d7cf1c01 100644 --- a/modules/nf-core/bcftools/annotate/tests/main.nf.test.snap +++ b/modules/nf-core/bcftools/annotate/tests/main.nf.test.snap @@ -1,26 +1,5 @@ { - "bcf": { - "content": [ - [ - [ - { - "id": "test", - "single_end": false - }, - "test_ann.bcf" - ] - ], - [ - "versions.yml:md5,ea53f98610d42597cf384ff1fa3eb204" - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" - }, - "timestamp": "2024-06-12T16:39:33.331888" - }, - "sarscov2 - [vcf, tbi, annotation, annotation_tbi], [] - vcf_gz_index": { + "sarscov2 - [vcf, tbi, annotation, annotation_tbi], [] - vcf_gz_index_csi": { "content": [ [ [ @@ -51,9 +30,9 @@ "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-08-15T10:07:59.658031137" + "timestamp": "2024-08-15T10:08:10.581301219" }, - "sarscov2 - [vcf, tbi, annotation, annotation_tbi], [] - vcf_gz_index_csi - stub": { + "sarscov2 - [vcf, tbi, annotation, annotation_tbi], [] - stub": { "content": [ { "0": [ @@ -69,25 +48,13 @@ ], "2": [ - [ - { - "id": "test", - "single_end": false - }, - "test_vcf.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" - ] + ], "3": [ "versions.yml:md5,ea53f98610d42597cf384ff1fa3eb204" ], "csi": [ - [ - { - "id": "test", - "single_end": false - }, - "test_vcf.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" - ] + ], "tbi": [ @@ -110,9 +77,9 @@ "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-08-15T10:09:05.096883418" + "timestamp": "2024-08-15T10:08:43.975017625" }, - "sarscov2 - [vcf, tbi, annotation, annotation_tbi], [] - vcf_gz_index_csi": { + "sarscov2 - [vcf, tbi, annotation, annotation_tbi], [] - vcf_gz_index_tbi": { "content": [ [ [ @@ -122,9 +89,6 @@ }, "test_vcf.vcf.gz" ] - ], - [ - ], [ [ @@ -132,8 +96,11 @@ "id": "test", "single_end": false }, - "test_vcf.vcf.gz.csi" + "test_vcf.vcf.gz.tbi" ] + ], + [ + ], [ "versions.yml:md5,ea53f98610d42597cf384ff1fa3eb204" @@ -143,56 +110,24 @@ "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-08-15T10:08:10.581301219" + "timestamp": "2024-08-15T10:08:21.354059092" }, - "sarscov2 - [vcf, tbi, annotation, annotation_tbi], [] - stub": { + "bcf": { "content": [ - { - "0": [ - [ - { - "id": "test", - "single_end": false - }, - "test_vcf.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" - ] - ], - "1": [ - - ], - "2": [ - - ], - "3": [ - "versions.yml:md5,ea53f98610d42597cf384ff1fa3eb204" - ], - "csi": [ - - ], - "tbi": [ - - ], - "vcf": [ - [ - { - "id": "test", - "single_end": false - }, - "test_vcf.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" - ] - ], - "versions": [ - "versions.yml:md5,ea53f98610d42597cf384ff1fa3eb204" - ] - } + [ + + ], + [ + + ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.1", + "nextflow": "24.10.0" }, - "timestamp": "2024-08-15T10:08:43.975017625" + "timestamp": "2024-11-20T13:52:35.607526048" }, - "sarscov2 - [vcf, tbi, annotation, annotation_tbi], [] - vcf_gz_index_tbi": { + "sarscov2 - [vcf, tbi, annotation, annotation_tbi], [] - vcf_output": { "content": [ [ [ @@ -202,18 +137,6 @@ }, "test_vcf.vcf.gz" ] - ], - [ - [ - { - "id": "test", - "single_end": false - }, - "test_vcf.vcf.gz.tbi" - ] - ], - [ - ], [ "versions.yml:md5,ea53f98610d42597cf384ff1fa3eb204" @@ -223,9 +146,9 @@ "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-08-15T10:08:21.354059092" + "timestamp": "2024-08-15T10:07:37.788393317" }, - "sarscov2 - [vcf, tbi, annotation, annotation_tbi], [] - vcf_output": { + "sarscov2 - [vcf, tbi, annotation, annotation_tbi], [] - vcf_gz_index": { "content": [ [ [ @@ -236,6 +159,18 @@ "test_vcf.vcf.gz" ] ], + [ + + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test_vcf.vcf.gz.csi" + ] + ], [ "versions.yml:md5,ea53f98610d42597cf384ff1fa3eb204" ] @@ -244,7 +179,7 @@ "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-08-15T10:07:37.788393317" + "timestamp": "2024-08-15T10:07:59.658031137" }, "sarscov2 - [vcf, [], annotation, annotation_tbi], [] - vcf_output": { "content": [ @@ -326,6 +261,65 @@ }, "timestamp": "2024-08-15T10:09:16.094918834" }, + "sarscov2 - [vcf, tbi, annotation, annotation_tbi], [] - vcf_gz_index_csi - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test_vcf.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "1": [ + + ], + "2": [ + [ + { + "id": "test", + "single_end": false + }, + "test_vcf.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "3": [ + "versions.yml:md5,ea53f98610d42597cf384ff1fa3eb204" + ], + "csi": [ + [ + { + "id": "test", + "single_end": false + }, + "test_vcf.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "tbi": [ + + ], + "vcf": [ + [ + { + "id": "test", + "single_end": false + }, + "test_vcf.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "versions": [ + "versions.yml:md5,ea53f98610d42597cf384ff1fa3eb204" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-08-15T10:09:05.096883418" + }, "sarscov2 - [vcf, tbi, annotation, annotation_tbi], [] - vcf_gz_index - stub": { "content": [ { diff --git a/modules/nf-core/ensemblvep/download/ensemblvep-download.diff b/modules/nf-core/ensemblvep/download/ensemblvep-download.diff index 71a470ea..a249d33d 100644 --- a/modules/nf-core/ensemblvep/download/ensemblvep-download.diff +++ b/modules/nf-core/ensemblvep/download/ensemblvep-download.diff @@ -18,6 +18,65 @@ Changes in 'ensemblvep/download/main.nf': 'modules/nf-core/ensemblvep/download/meta.yml' is unchanged 'modules/nf-core/ensemblvep/download/tests/tags.yml' is unchanged 'modules/nf-core/ensemblvep/download/tests/main.nf.test' is unchanged -'modules/nf-core/ensemblvep/download/tests/main.nf.test.snap' is unchanged +Changes in 'ensemblvep/download/tests/main.nf.test.snap': +--- modules/nf-core/ensemblvep/download/tests/main.nf.test.snap ++++ modules/nf-core/ensemblvep/download/tests/main.nf.test.snap +@@ -136,7 +136,7 @@ + ] + ], + "1": [ +- "versions.yml:md5,e32852e9cba2a298b7518ce610011b14" ++ "versions.yml:md5,44c3b4926fae35dfcf138d9bf26acfd1" + ], + "cache": [ + [ +@@ -272,15 +272,15 @@ + ] + ], + "versions": [ +- "versions.yml:md5,e32852e9cba2a298b7518ce610011b14" ++ "versions.yml:md5,44c3b4926fae35dfcf138d9bf26acfd1" + ] + } + ], + "meta": { +- "nf-test": "0.8.4", +- "nextflow": "24.04.4" ++ "nf-test": "0.9.1", ++ "nextflow": "24.10.0" + }, +- "timestamp": "2024-09-02T13:19:08.690863" ++ "timestamp": "2024-11-20T14:09:48.300197368" + }, + "celegans - download - stub": { + "content": [ +@@ -296,7 +296,7 @@ + ] + ], + "1": [ +- "versions.yml:md5,e32852e9cba2a298b7518ce610011b14" ++ "versions.yml:md5,44c3b4926fae35dfcf138d9bf26acfd1" + ], + "cache": [ + [ +@@ -309,14 +309,14 @@ + ] + ], + "versions": [ +- "versions.yml:md5,e32852e9cba2a298b7518ce610011b14" ++ "versions.yml:md5,44c3b4926fae35dfcf138d9bf26acfd1" + ] + } + ], + "meta": { +- "nf-test": "0.8.4", +- "nextflow": "24.04.4" ++ "nf-test": "0.9.1", ++ "nextflow": "24.10.0" + }, +- "timestamp": "2024-09-02T13:19:23.308683" ++ "timestamp": "2024-11-20T14:10:02.855040367" + } + } 'modules/nf-core/ensemblvep/download/tests/nextflow.config' is unchanged ************************************************************ diff --git a/modules/nf-core/ensemblvep/download/tests/main.nf.test.snap b/modules/nf-core/ensemblvep/download/tests/main.nf.test.snap index 9e303c54..0445c84a 100644 --- a/modules/nf-core/ensemblvep/download/tests/main.nf.test.snap +++ b/modules/nf-core/ensemblvep/download/tests/main.nf.test.snap @@ -136,7 +136,7 @@ ] ], "1": [ - "versions.yml:md5,e32852e9cba2a298b7518ce610011b14" + "versions.yml:md5,44c3b4926fae35dfcf138d9bf26acfd1" ], "cache": [ [ @@ -272,15 +272,15 @@ ] ], "versions": [ - "versions.yml:md5,e32852e9cba2a298b7518ce610011b14" + "versions.yml:md5,44c3b4926fae35dfcf138d9bf26acfd1" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.4" + "nf-test": "0.9.1", + "nextflow": "24.10.0" }, - "timestamp": "2024-09-02T13:19:08.690863" + "timestamp": "2024-11-20T14:09:48.300197368" }, "celegans - download - stub": { "content": [ @@ -296,7 +296,7 @@ ] ], "1": [ - "versions.yml:md5,e32852e9cba2a298b7518ce610011b14" + "versions.yml:md5,44c3b4926fae35dfcf138d9bf26acfd1" ], "cache": [ [ @@ -309,14 +309,14 @@ ] ], "versions": [ - "versions.yml:md5,e32852e9cba2a298b7518ce610011b14" + "versions.yml:md5,44c3b4926fae35dfcf138d9bf26acfd1" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.4" + "nf-test": "0.9.1", + "nextflow": "24.10.0" }, - "timestamp": "2024-09-02T13:19:23.308683" + "timestamp": "2024-11-20T14:10:02.855040367" } } \ No newline at end of file diff --git a/modules/nf-core/ensemblvep/vep/ensemblvep-vep.diff b/modules/nf-core/ensemblvep/vep/ensemblvep-vep.diff index 6837716a..bcc6ba95 100644 --- a/modules/nf-core/ensemblvep/vep/ensemblvep-vep.diff +++ b/modules/nf-core/ensemblvep/vep/ensemblvep-vep.diff @@ -19,7 +19,55 @@ Changes in 'ensemblvep/vep/main.nf': 'modules/nf-core/ensemblvep/vep/tests/tags.yml' is unchanged 'modules/nf-core/ensemblvep/vep/tests/tab.gz.config' is unchanged 'modules/nf-core/ensemblvep/vep/tests/vcf.config' is unchanged -'modules/nf-core/ensemblvep/vep/tests/main.nf.test' is unchanged -'modules/nf-core/ensemblvep/vep/tests/main.nf.test.snap' is unchanged +Changes in 'ensemblvep/vep/tests/main.nf.test': +--- modules/nf-core/ensemblvep/vep/tests/main.nf.test ++++ modules/nf-core/ensemblvep/vep/tests/main.nf.test +@@ -107,7 +107,7 @@ + assertAll( + { assert process.success }, + { assert snapshot(process.out.versions).match() }, +- { assert path(process.out.tab.get(0).get(1)).linesGzip.contains("## ENSEMBL VARIANT EFFECT PREDICTOR v112.0") } ++ { assert path(process.out.tab.get(0).get(1)).linesGzip.contains("## ENSEMBL VARIANT EFFECT PREDICTOR v105.0") } + ) + } + } + +Changes in 'ensemblvep/vep/tests/main.nf.test.snap': +--- modules/nf-core/ensemblvep/vep/tests/main.nf.test.snap ++++ modules/nf-core/ensemblvep/vep/tests/main.nf.test.snap +@@ -2,25 +2,25 @@ + "test_ensemblvep_vep_fasta_tab_gz": { + "content": [ + [ +- "versions.yml:md5,d06f1eb60f534489026d682eb3aa5559" ++ "versions.yml:md5,c6d58a35e7be5e6ab46a3f9757f6e259" + ] + ], + "meta": { +- "nf-test": "0.8.4", +- "nextflow": "24.04.4" ++ "nf-test": "0.9.1", ++ "nextflow": "24.10.0" + }, +- "timestamp": "2024-09-02T10:15:18.228927" ++ "timestamp": "2024-11-20T14:10:59.846254319" + }, + "test_ensemblvep_vep_fasta_vcf": { + "content": [ + [ +- "versions.yml:md5,d06f1eb60f534489026d682eb3aa5559" ++ "versions.yml:md5,c6d58a35e7be5e6ab46a3f9757f6e259" + ] + ], + "meta": { +- "nf-test": "0.8.4", +- "nextflow": "24.04.4" ++ "nf-test": "0.9.1", ++ "nextflow": "24.10.0" + }, +- "timestamp": "2024-09-02T10:14:50.193861" ++ "timestamp": "2024-11-20T14:10:44.092773407" + } + } 'modules/nf-core/ensemblvep/vep/tests/nextflow.config' is unchanged ************************************************************ diff --git a/modules/nf-core/ensemblvep/vep/tests/main.nf.test b/modules/nf-core/ensemblvep/vep/tests/main.nf.test index e68fff3c..f66e867e 100644 --- a/modules/nf-core/ensemblvep/vep/tests/main.nf.test +++ b/modules/nf-core/ensemblvep/vep/tests/main.nf.test @@ -107,7 +107,7 @@ nextflow_process { assertAll( { assert process.success }, { assert snapshot(process.out.versions).match() }, - { assert path(process.out.tab.get(0).get(1)).linesGzip.contains("## ENSEMBL VARIANT EFFECT PREDICTOR v112.0") } + { assert path(process.out.tab.get(0).get(1)).linesGzip.contains("## ENSEMBL VARIANT EFFECT PREDICTOR v105.0") } ) } } diff --git a/modules/nf-core/ensemblvep/vep/tests/main.nf.test.snap b/modules/nf-core/ensemblvep/vep/tests/main.nf.test.snap index 1c4c0e4e..2d215500 100644 --- a/modules/nf-core/ensemblvep/vep/tests/main.nf.test.snap +++ b/modules/nf-core/ensemblvep/vep/tests/main.nf.test.snap @@ -2,25 +2,25 @@ "test_ensemblvep_vep_fasta_tab_gz": { "content": [ [ - "versions.yml:md5,d06f1eb60f534489026d682eb3aa5559" + "versions.yml:md5,c6d58a35e7be5e6ab46a3f9757f6e259" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.4" + "nf-test": "0.9.1", + "nextflow": "24.10.0" }, - "timestamp": "2024-09-02T10:15:18.228927" + "timestamp": "2024-11-20T14:10:59.846254319" }, "test_ensemblvep_vep_fasta_vcf": { "content": [ [ - "versions.yml:md5,d06f1eb60f534489026d682eb3aa5559" + "versions.yml:md5,c6d58a35e7be5e6ab46a3f9757f6e259" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.4" + "nf-test": "0.9.1", + "nextflow": "24.10.0" }, - "timestamp": "2024-09-02T10:14:50.193861" + "timestamp": "2024-11-20T14:10:44.092773407" } } \ No newline at end of file diff --git a/modules/nf-core/rtgtools/pedfilter/rtgtools-pedfilter.diff b/modules/nf-core/rtgtools/pedfilter/rtgtools-pedfilter.diff index 18590bf8..518588a2 100644 --- a/modules/nf-core/rtgtools/pedfilter/rtgtools-pedfilter.diff +++ b/modules/nf-core/rtgtools/pedfilter/rtgtools-pedfilter.diff @@ -14,6 +14,71 @@ Changes in 'rtgtools/pedfilter/main.nf': 'modules/nf-core/rtgtools/pedfilter/environment.yml' is unchanged 'modules/nf-core/rtgtools/pedfilter/meta.yml' is unchanged 'modules/nf-core/rtgtools/pedfilter/tests/main.nf.test' is unchanged -'modules/nf-core/rtgtools/pedfilter/tests/main.nf.test.snap' is unchanged +Changes in 'rtgtools/pedfilter/tests/main.nf.test.snap': +--- modules/nf-core/rtgtools/pedfilter/tests/main.nf.test.snap ++++ modules/nf-core/rtgtools/pedfilter/tests/main.nf.test.snap +@@ -8,7 +8,7 @@ + "id": "test", + "single_end": false + }, +- "test.ped:md5,342135c8bf22e573367b75ef5e1c5e6b" ++ "test.ped:md5,16e5773a0aaaa27870b0601e572f24b5" + ] + ], + "1": [ +@@ -20,7 +20,7 @@ + "id": "test", + "single_end": false + }, +- "test.ped:md5,342135c8bf22e573367b75ef5e1c5e6b" ++ "test.ped:md5,16e5773a0aaaa27870b0601e572f24b5" + ] + ], + "versions": [ +@@ -29,10 +29,10 @@ + } + ], + "meta": { +- "nf-test": "0.8.4", +- "nextflow": "24.04.4" ++ "nf-test": "0.9.1", ++ "nextflow": "24.10.0" + }, +- "timestamp": "2024-08-23T16:11:01.797205" ++ "timestamp": "2024-11-20T13:14:39.858764858" + }, + "test-rtgtools-pedfilter-vcf-output": { + "content": [ +@@ -62,7 +62,7 @@ + "id": "test", + "single_end": false + }, +- "test.ped:md5,a8b8f6538e1738d6e06fddfe15d36f09" ++ "test.ped:md5,88d121b6ce2b3d8b0a6b0098b85db865" + ] + ], + "1": [ +@@ -74,7 +74,7 @@ + "id": "test", + "single_end": false + }, +- "test.ped:md5,a8b8f6538e1738d6e06fddfe15d36f09" ++ "test.ped:md5,88d121b6ce2b3d8b0a6b0098b85db865" + ] + ], + "versions": [ +@@ -83,9 +83,9 @@ + } + ], + "meta": { +- "nf-test": "0.8.4", +- "nextflow": "24.04.4" ++ "nf-test": "0.9.1", ++ "nextflow": "24.10.0" + }, +- "timestamp": "2024-08-23T16:10:53.473351" ++ "timestamp": "2024-11-20T13:14:31.005949979" + } + } 'modules/nf-core/rtgtools/pedfilter/tests/nextflow.config' is unchanged ************************************************************ diff --git a/modules/nf-core/rtgtools/pedfilter/tests/main.nf.test.snap b/modules/nf-core/rtgtools/pedfilter/tests/main.nf.test.snap index 7475fa8b..6b0a6970 100644 --- a/modules/nf-core/rtgtools/pedfilter/tests/main.nf.test.snap +++ b/modules/nf-core/rtgtools/pedfilter/tests/main.nf.test.snap @@ -8,7 +8,7 @@ "id": "test", "single_end": false }, - "test.ped:md5,342135c8bf22e573367b75ef5e1c5e6b" + "test.ped:md5,16e5773a0aaaa27870b0601e572f24b5" ] ], "1": [ @@ -20,7 +20,7 @@ "id": "test", "single_end": false }, - "test.ped:md5,342135c8bf22e573367b75ef5e1c5e6b" + "test.ped:md5,16e5773a0aaaa27870b0601e572f24b5" ] ], "versions": [ @@ -29,10 +29,10 @@ } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.4" + "nf-test": "0.9.1", + "nextflow": "24.10.0" }, - "timestamp": "2024-08-23T16:11:01.797205" + "timestamp": "2024-11-20T13:14:39.858764858" }, "test-rtgtools-pedfilter-vcf-output": { "content": [ @@ -62,7 +62,7 @@ "id": "test", "single_end": false }, - "test.ped:md5,a8b8f6538e1738d6e06fddfe15d36f09" + "test.ped:md5,88d121b6ce2b3d8b0a6b0098b85db865" ] ], "1": [ @@ -74,7 +74,7 @@ "id": "test", "single_end": false }, - "test.ped:md5,a8b8f6538e1738d6e06fddfe15d36f09" + "test.ped:md5,88d121b6ce2b3d8b0a6b0098b85db865" ] ], "versions": [ @@ -83,9 +83,9 @@ } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.4" + "nf-test": "0.9.1", + "nextflow": "24.10.0" }, - "timestamp": "2024-08-23T16:10:53.473351" + "timestamp": "2024-11-20T13:14:31.005949979" } } \ No newline at end of file diff --git a/modules/nf-core/snpeff/snpeff/environment.yml b/modules/nf-core/snpeff/snpeff/environment.yml deleted file mode 100644 index f2ad9251..00000000 --- a/modules/nf-core/snpeff/snpeff/environment.yml +++ /dev/null @@ -1,5 +0,0 @@ -channels: - - conda-forge - - bioconda -dependencies: - - bioconda::snpeff=5.1 diff --git a/modules/nf-core/snpeff/snpeff/main.nf b/modules/nf-core/snpeff/snpeff/main.nf deleted file mode 100644 index 28d13826..00000000 --- a/modules/nf-core/snpeff/snpeff/main.nf +++ /dev/null @@ -1,62 +0,0 @@ -process SNPEFF_SNPEFF { - tag "$meta.id" - label 'process_medium' - - conda "${moduleDir}/environment.yml" - container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/snpeff:5.1--hdfd78af_2' : - 'biocontainers/snpeff:5.1--hdfd78af_2' }" - - input: - tuple val(meta), path(vcf) - val db - tuple val(meta2), path(cache) - - output: - tuple val(meta), path("*.ann.vcf"), emit: vcf - tuple val(meta), path("*.csv"), emit: report - tuple val(meta), path("*.html"), emit: summary_html - tuple val(meta), path("*.genes.txt"), emit: genes_txt - path "versions.yml" , emit: versions - - when: - task.ext.when == null || task.ext.when - - script: - def args = task.ext.args ?: '' - def avail_mem = 6144 - if (!task.memory) { - log.info '[snpEff] Available memory not known - defaulting to 6GB. Specify process memory requirements to change this.' - } else { - avail_mem = (task.memory.mega*0.8).intValue() - } - def prefix = task.ext.prefix ?: "${meta.id}" - def cache_command = cache ? "-dataDir \${PWD}/${cache}" : "" - """ - snpEff \\ - -Xmx${avail_mem}M \\ - $db \\ - $args \\ - -csvStats ${prefix}.csv \\ - $cache_command \\ - $vcf \\ - > ${prefix}.ann.vcf - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - snpeff: \$(echo \$(snpEff -version 2>&1) | cut -f 2 -d ' ') - END_VERSIONS - """ - - stub: - def prefix = task.ext.prefix ?: "${meta.id}" - """ - touch ${prefix}.ann.vcf - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - snpeff: \$(echo \$(snpEff -version 2>&1) | cut -f 2 -d ' ') - END_VERSIONS - """ - -} diff --git a/modules/nf-core/snpeff/snpeff/meta.yml b/modules/nf-core/snpeff/snpeff/meta.yml deleted file mode 100644 index ef3d495a..00000000 --- a/modules/nf-core/snpeff/snpeff/meta.yml +++ /dev/null @@ -1,90 +0,0 @@ -name: snpeff_snpeff -description: Genetic variant annotation and functional effect prediction toolbox -keywords: - - annotation - - effect prediction - - snpeff - - variant - - vcf -tools: - - snpeff: - description: | - SnpEff is a variant annotation and effect prediction tool. - It annotates and predicts the effects of genetic variants on genes and proteins (such as amino acid changes). - homepage: https://pcingola.github.io/SnpEff/ - documentation: https://pcingola.github.io/SnpEff/se_introduction/ - licence: ["MIT"] - identifier: biotools:snpeff -input: - - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - vcf: - type: file - description: | - vcf to annotate - - - db: - type: string - description: | - which db to annotate with - - - meta2: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - cache: - type: file - description: | - path to snpEff cache (optional) -output: - - vcf: - - meta: - type: file - description: | - annotated vcf - pattern: "*.ann.vcf" - - "*.ann.vcf": - type: file - description: | - annotated vcf - pattern: "*.ann.vcf" - - report: - - meta: - type: file - description: snpEff report csv file - pattern: "*.csv" - - "*.csv": - type: file - description: snpEff report csv file - pattern: "*.csv" - - summary_html: - - meta: - type: file - description: snpEff summary statistics in html file - pattern: "*.html" - - "*.html": - type: file - description: snpEff summary statistics in html file - pattern: "*.html" - - genes_txt: - - meta: - type: file - description: txt (tab separated) file having counts of the number of variants - affecting each transcript and gene - pattern: "*.genes.txt" - - "*.genes.txt": - type: file - description: txt (tab separated) file having counts of the number of variants - affecting each transcript and gene - pattern: "*.genes.txt" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" -authors: - - "@maxulysse" -maintainers: - - "@maxulysse" diff --git a/modules/nf-core/snpeff/snpeff/tests/main.nf.test b/modules/nf-core/snpeff/snpeff/tests/main.nf.test deleted file mode 100644 index 2be0b7d7..00000000 --- a/modules/nf-core/snpeff/snpeff/tests/main.nf.test +++ /dev/null @@ -1,51 +0,0 @@ -nextflow_process { - - name "Test Process SNPEFF_SNPEFF" - script "../main.nf" - process "SNPEFF_SNPEFF" - config "./nextflow.config" - tag "modules" - tag "modules_nfcore" - tag "modules_snpeff" - tag "snpeff" - tag "snpeff/download" - tag "snpeff/snpeff" - - test("test_SNPEFF_SNPEFF") { - - setup { - run("SNPEFF_DOWNLOAD") { - script "../../download/main.nf" - process { - """ - input[0] = Channel.of([[id:params.snpeff_db], params.snpeff_db]) - """ - } - } - } - - when { - process { - """ - input[0] = Channel.of([ - [ id:'test' ], // meta map - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf', checkIfExists: true) - ]) - input[1] = params.snpeff_db - input[2] = SNPEFF_DOWNLOAD.out.cache - """ - } - } - - then { - assertAll( - { assert process.success }, - { assert path(process.out.report[0][1]).exists() }, - { assert path(process.out.summary_html[0][1]).exists() }, - { assert path(process.out.vcf[0][1]).exists() }, - { assert snapshot(process.out.genes_txt).match("genes_txt") }, - { assert snapshot(process.out.versions).match("versions") } - ) - } - } -} diff --git a/modules/nf-core/snpeff/snpeff/tests/main.nf.test.snap b/modules/nf-core/snpeff/snpeff/tests/main.nf.test.snap deleted file mode 100644 index 0891b844..00000000 --- a/modules/nf-core/snpeff/snpeff/tests/main.nf.test.snap +++ /dev/null @@ -1,31 +0,0 @@ -{ - "versions": { - "content": [ - [ - "versions.yml:md5,25d44a118d558b331d51ec00be0d997c" - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.02.0" - }, - "timestamp": "2024-03-18T17:37:18.879477" - }, - "genes_txt": { - "content": [ - [ - [ - { - "id": "test" - }, - "test.genes.txt:md5,130536bf0237d7f3f746d32aaa32840a" - ] - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.02.0" - }, - "timestamp": "2024-03-18T17:37:18.874822" - } -} \ No newline at end of file diff --git a/modules/nf-core/snpeff/snpeff/tests/nextflow.config b/modules/nf-core/snpeff/snpeff/tests/nextflow.config deleted file mode 100644 index a950a047..00000000 --- a/modules/nf-core/snpeff/snpeff/tests/nextflow.config +++ /dev/null @@ -1,3 +0,0 @@ -params { - snpeff_db = "WBcel235.105" -} diff --git a/modules/nf-core/snpeff/snpeff/tests/tags.yml b/modules/nf-core/snpeff/snpeff/tests/tags.yml deleted file mode 100644 index 427b588d..00000000 --- a/modules/nf-core/snpeff/snpeff/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -snpeff/snpeff: - - "modules/nf-core/snpeff/snpeff/**" diff --git a/modules/nf-core/somalier/relate/somalier-relate.diff b/modules/nf-core/somalier/relate/somalier-relate.diff index 918d80b2..571c6446 100644 --- a/modules/nf-core/somalier/relate/somalier-relate.diff +++ b/modules/nf-core/somalier/relate/somalier-relate.diff @@ -32,5 +32,190 @@ Changes in 'somalier/relate/main.nf': 'modules/nf-core/somalier/relate/meta.yml' is unchanged 'modules/nf-core/somalier/relate/tests/tags.yml' is unchanged 'modules/nf-core/somalier/relate/tests/main.nf.test' is unchanged -'modules/nf-core/somalier/relate/tests/main.nf.test.snap' is unchanged +Changes in 'somalier/relate/tests/main.nf.test.snap': +--- modules/nf-core/somalier/relate/tests/main.nf.test.snap ++++ modules/nf-core/somalier/relate/tests/main.nf.test.snap +@@ -30,6 +30,15 @@ + ] + ], + "3": [ ++ [ ++ { ++ "id": "cohort", ++ "single_end": false ++ }, ++ "cohort_somalier.ped:md5,377126dd9cfb8218ec6783fa68d53e67" ++ ] ++ ], ++ "4": [ + "versions.yml:md5,59d805a9f89558414535c136c814bea6" + ], + "html": [ +@@ -48,6 +57,15 @@ + "single_end": false + }, + "cohort.pairs.tsv:md5,54d1e9fca1bf9d747d4254c6fa98edcf" ++ ] ++ ], ++ "ped": [ ++ [ ++ { ++ "id": "cohort", ++ "single_end": false ++ }, ++ "cohort_somalier.ped:md5,377126dd9cfb8218ec6783fa68d53e67" + ] + ], + "samples_tsv": [ +@@ -65,10 +83,10 @@ + } + ], + "meta": { +- "nf-test": "0.8.4", +- "nextflow": "24.04.2" ++ "nf-test": "0.9.1", ++ "nextflow": "24.10.0" + }, +- "timestamp": "2024-07-02T05:29:21.162582556" ++ "timestamp": "2024-11-20T13:00:49.22698226" + }, + "[ delete_me, [] ], [] -stub": { + "content": [ +@@ -101,6 +119,15 @@ + ] + ], + "3": [ ++ [ ++ { ++ "id": "cohort", ++ "single_end": false ++ }, ++ "cohort_somalier.ped:md5,d41d8cd98f00b204e9800998ecf8427e" ++ ] ++ ], ++ "4": [ + "versions.yml:md5,59d805a9f89558414535c136c814bea6" + ], + "html": [ +@@ -119,6 +146,15 @@ + "single_end": false + }, + "cohort.pairs.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" ++ ] ++ ], ++ "ped": [ ++ [ ++ { ++ "id": "cohort", ++ "single_end": false ++ }, ++ "cohort_somalier.ped:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "samples_tsv": [ +@@ -136,10 +172,10 @@ + } + ], + "meta": { +- "nf-test": "0.8.4", +- "nextflow": "24.04.2" ++ "nf-test": "0.9.1", ++ "nextflow": "24.10.0" + }, +- "timestamp": "2024-07-02T05:29:43.887124223" ++ "timestamp": "2024-11-20T13:01:06.098709152" + }, + "[ delete_me, ped ], groups -stub": { + "content": [ +@@ -172,6 +208,15 @@ + ] + ], + "3": [ ++ [ ++ { ++ "id": "cohort", ++ "single_end": false ++ }, ++ "cohort_somalier.ped:md5,d41d8cd98f00b204e9800998ecf8427e" ++ ] ++ ], ++ "4": [ + "versions.yml:md5,59d805a9f89558414535c136c814bea6" + ], + "html": [ +@@ -190,6 +235,15 @@ + "single_end": false + }, + "cohort.pairs.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" ++ ] ++ ], ++ "ped": [ ++ [ ++ { ++ "id": "cohort", ++ "single_end": false ++ }, ++ "cohort_somalier.ped:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "samples_tsv": [ +@@ -207,10 +261,10 @@ + } + ], + "meta": { +- "nf-test": "0.8.4", +- "nextflow": "24.04.2" ++ "nf-test": "0.9.1", ++ "nextflow": "24.10.0" + }, +- "timestamp": "2024-07-02T05:29:55.034913513" ++ "timestamp": "2024-11-20T13:01:14.932484293" + }, + "[ delete_me, ped ], groups": { + "content": [ +@@ -243,6 +297,15 @@ + ] + ], + "3": [ ++ [ ++ { ++ "id": "cohort", ++ "single_end": false ++ }, ++ "cohort_somalier.ped:md5,1eec67a4157fff88730161a080430ba5" ++ ] ++ ], ++ "4": [ + "versions.yml:md5,59d805a9f89558414535c136c814bea6" + ], + "html": [ +@@ -261,6 +324,15 @@ + "single_end": false + }, + "cohort.pairs.tsv:md5,8655714f1e5359329188e9f501168131" ++ ] ++ ], ++ "ped": [ ++ [ ++ { ++ "id": "cohort", ++ "single_end": false ++ }, ++ "cohort_somalier.ped:md5,1eec67a4157fff88730161a080430ba5" + ] + ], + "samples_tsv": [ +@@ -278,9 +350,9 @@ + } + ], + "meta": { +- "nf-test": "0.8.4", +- "nextflow": "24.04.2" ++ "nf-test": "0.9.1", ++ "nextflow": "24.10.0" + }, +- "timestamp": "2024-07-02T05:29:32.451456985" ++ "timestamp": "2024-11-20T13:00:57.673492011" + } + } ************************************************************ diff --git a/modules/nf-core/somalier/relate/tests/main.nf.test.snap b/modules/nf-core/somalier/relate/tests/main.nf.test.snap index 54a73033..fe3ff467 100644 --- a/modules/nf-core/somalier/relate/tests/main.nf.test.snap +++ b/modules/nf-core/somalier/relate/tests/main.nf.test.snap @@ -30,6 +30,15 @@ ] ], "3": [ + [ + { + "id": "cohort", + "single_end": false + }, + "cohort_somalier.ped:md5,377126dd9cfb8218ec6783fa68d53e67" + ] + ], + "4": [ "versions.yml:md5,59d805a9f89558414535c136c814bea6" ], "html": [ @@ -50,6 +59,15 @@ "cohort.pairs.tsv:md5,54d1e9fca1bf9d747d4254c6fa98edcf" ] ], + "ped": [ + [ + { + "id": "cohort", + "single_end": false + }, + "cohort_somalier.ped:md5,377126dd9cfb8218ec6783fa68d53e67" + ] + ], "samples_tsv": [ [ { @@ -65,10 +83,10 @@ } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.1", + "nextflow": "24.10.0" }, - "timestamp": "2024-07-02T05:29:21.162582556" + "timestamp": "2024-11-20T13:00:49.22698226" }, "[ delete_me, [] ], [] -stub": { "content": [ @@ -101,6 +119,15 @@ ] ], "3": [ + [ + { + "id": "cohort", + "single_end": false + }, + "cohort_somalier.ped:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "4": [ "versions.yml:md5,59d805a9f89558414535c136c814bea6" ], "html": [ @@ -121,6 +148,15 @@ "cohort.pairs.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], + "ped": [ + [ + { + "id": "cohort", + "single_end": false + }, + "cohort_somalier.ped:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], "samples_tsv": [ [ { @@ -136,10 +172,10 @@ } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.1", + "nextflow": "24.10.0" }, - "timestamp": "2024-07-02T05:29:43.887124223" + "timestamp": "2024-11-20T13:01:06.098709152" }, "[ delete_me, ped ], groups -stub": { "content": [ @@ -172,6 +208,15 @@ ] ], "3": [ + [ + { + "id": "cohort", + "single_end": false + }, + "cohort_somalier.ped:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "4": [ "versions.yml:md5,59d805a9f89558414535c136c814bea6" ], "html": [ @@ -192,6 +237,15 @@ "cohort.pairs.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], + "ped": [ + [ + { + "id": "cohort", + "single_end": false + }, + "cohort_somalier.ped:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], "samples_tsv": [ [ { @@ -207,10 +261,10 @@ } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.1", + "nextflow": "24.10.0" }, - "timestamp": "2024-07-02T05:29:55.034913513" + "timestamp": "2024-11-20T13:01:14.932484293" }, "[ delete_me, ped ], groups": { "content": [ @@ -243,6 +297,15 @@ ] ], "3": [ + [ + { + "id": "cohort", + "single_end": false + }, + "cohort_somalier.ped:md5,1eec67a4157fff88730161a080430ba5" + ] + ], + "4": [ "versions.yml:md5,59d805a9f89558414535c136c814bea6" ], "html": [ @@ -263,6 +326,15 @@ "cohort.pairs.tsv:md5,8655714f1e5359329188e9f501168131" ] ], + "ped": [ + [ + { + "id": "cohort", + "single_end": false + }, + "cohort_somalier.ped:md5,1eec67a4157fff88730161a080430ba5" + ] + ], "samples_tsv": [ [ { @@ -278,9 +350,9 @@ } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.1", + "nextflow": "24.10.0" }, - "timestamp": "2024-07-02T05:29:32.451456985" + "timestamp": "2024-11-20T13:00:57.673492011" } } \ No newline at end of file diff --git a/nextflow.config b/nextflow.config index 433f38bb..4f78d2d9 100644 --- a/nextflow.config +++ b/nextflow.config @@ -225,8 +225,9 @@ profiles { nf_test { includeConfig 'conf/nf_test.config' } seqplorer { includeConfig 'conf/seqplorer.config' } - seqcap { includeConfig 'conf/seqcap.config' } hypercap { includeConfig 'conf/hypercap.config' } + WES { includeConfig 'conf/wes.config' } + copgt { includeConfig 'conf/copgt.config' } } diff --git a/subworkflows/nf-core/vcf_annotate_ensemblvep_snpeff/main.nf b/subworkflows/local/vcf_annotate_ensemblvep/main.nf similarity index 72% rename from subworkflows/nf-core/vcf_annotate_ensemblvep_snpeff/main.nf rename to subworkflows/local/vcf_annotate_ensemblvep/main.nf index 9829b319..abb04d99 100644 --- a/subworkflows/nf-core/vcf_annotate_ensemblvep_snpeff/main.nf +++ b/subworkflows/local/vcf_annotate_ensemblvep/main.nf @@ -1,16 +1,15 @@ // -// Run VEP and/or SNPEFF to annotate VCF files +// Run VEP to annotate VCF files // include { ENSEMBLVEP_VEP } from '../../../modules/nf-core/ensemblvep/vep/main' -include { SNPEFF_SNPEFF } from '../../../modules/nf-core/snpeff/snpeff/main' include { TABIX_TABIX } from '../../../modules/nf-core/tabix/tabix/main' include { TABIX_BGZIP } from '../../../modules/nf-core/tabix/bgzip/main' include { BCFTOOLS_PLUGINSCATTER } from '../../../modules/nf-core/bcftools/pluginscatter/main' include { BCFTOOLS_CONCAT } from '../../../modules/nf-core/bcftools/concat/main' include { BCFTOOLS_SORT } from '../../../modules/nf-core/bcftools/sort/main' -workflow VCF_ANNOTATE_ENSEMBLVEP_SNPEFF { +workflow VCF_ANNOTATE_ENSEMBLVEP { take: ch_vcf // channel: [ val(meta), path(vcf), path(tbi), [path(file1), path(file2)...] ] ch_fasta // channel: [ val(meta2), path(fasta) ] (optional) @@ -19,9 +18,6 @@ workflow VCF_ANNOTATE_ENSEMBLVEP_SNPEFF { val_vep_cache_version // value: cache version to use ch_vep_cache // channel: [ path(cache) ] (optional) ch_vep_extra_files // channel: [ path(file1), path(file2)... ] (optional) - val_snpeff_db // value: the db version to use for snpEff - ch_snpeff_cache // channel: [ path(cache) ] (optional) - val_tools_to_use // value: a list of tools to use options are: ["ensemblvep", "snpeff"] val_sites_per_chunk // value: the amount of variants per scattered VCF main: @@ -89,51 +85,19 @@ workflow VCF_ANNOTATE_ENSEMBLVEP_SNPEFF { } // Annotate with ensemblvep if it's part of the requested tools - def ch_vep_output = Channel.empty() - def ch_vep_reports = Channel.empty() - if("ensemblvep" in val_tools_to_use){ - ENSEMBLVEP_VEP( - ch_vep_input, - val_vep_genome, - val_vep_species, - val_vep_cache_version, - ch_vep_cache, - ch_fasta, - ch_vep_extra_files - ) - ch_versions = ch_versions.mix(ENSEMBLVEP_VEP.out.versions.first()) - - ch_vep_output = ENSEMBLVEP_VEP.out.vcf - ch_vep_reports = ENSEMBLVEP_VEP.out.report - } else { - ch_vep_output = ch_vep_input.map { meta, vcf, _files -> [ meta, vcf ] } - } - - // Annotate with snpeff if it's part of the requested tools - def ch_snpeff_output = Channel.empty() - def ch_snpeff_reports = Channel.empty() - def ch_snpeff_html = Channel.empty() - def ch_snpeff_genes = Channel.empty() - if("snpeff" in val_tools_to_use){ - SNPEFF_SNPEFF( - ch_vep_output, - val_snpeff_db, - ch_snpeff_cache - ) - ch_versions = ch_versions.mix(SNPEFF_SNPEFF.out.versions.first()) - - ch_snpeff_reports = SNPEFF_SNPEFF.out.report - ch_snpeff_html = SNPEFF_SNPEFF.out.summary_html - ch_snpeff_genes = SNPEFF_SNPEFF.out.genes_txt + ENSEMBLVEP_VEP( + ch_vep_input, + val_vep_genome, + val_vep_species, + val_vep_cache_version, + ch_vep_cache, + ch_fasta, + ch_vep_extra_files + ) + ch_versions = ch_versions.mix(ENSEMBLVEP_VEP.out.versions.first()) - TABIX_BGZIP( - SNPEFF_SNPEFF.out.vcf - ) - ch_versions = ch_versions.mix(TABIX_BGZIP.out.versions.first()) - ch_snpeff_output = TABIX_BGZIP.out.output - } else { - ch_snpeff_output = ch_vep_output - } + def ch_vep_output = ENSEMBLVEP_VEP.out.vcf + def ch_vep_reports = ENSEMBLVEP_VEP.out.report // Gather the files back together if they were scattered def ch_ready_vcfs = Channel.empty() @@ -142,7 +106,7 @@ workflow VCF_ANNOTATE_ENSEMBLVEP_SNPEFF { // Concatenate the VCFs back together with bcftools concat // - def ch_concat_input = ch_snpeff_output + def ch_concat_input = ch_vep_output .join(ch_scatter.count, failOnDuplicate:true, failOnMismatch:true) .map { meta, vcf, id, count -> def new_meta = meta + [id:id] @@ -169,7 +133,7 @@ workflow VCF_ANNOTATE_ENSEMBLVEP_SNPEFF { ch_ready_vcfs = BCFTOOLS_SORT.out.vcf } else { - ch_ready_vcfs = ch_snpeff_output + ch_ready_vcfs = ch_vep_output } // @@ -196,8 +160,5 @@ workflow VCF_ANNOTATE_ENSEMBLVEP_SNPEFF { emit: vcf_tbi = ch_vcf_tbi // channel: [ val(meta), path(vcf), path(tbi) ] vep_reports = ch_vep_reports // channel: [ path(html) ] - snpeff_reports = ch_snpeff_reports // channel: [ val(meta), path(csv) ] - snpeff_html = ch_snpeff_html // channel: [ val(meta), path(html) ] - snpeff_genes = ch_snpeff_genes // channel: [ val(meta), path(genes) ] versions = ch_versions // channel: [ versions.yml ] } diff --git a/subworkflows/nf-core/vcf_annotate_ensemblvep_snpeff/meta.yml b/subworkflows/local/vcf_annotate_ensemblvep/meta.yml similarity index 100% rename from subworkflows/nf-core/vcf_annotate_ensemblvep_snpeff/meta.yml rename to subworkflows/local/vcf_annotate_ensemblvep/meta.yml diff --git a/subworkflows/local/vcf_annotate_ensemblvep/tests/main.nf.test b/subworkflows/local/vcf_annotate_ensemblvep/tests/main.nf.test new file mode 100644 index 00000000..60b16a6e --- /dev/null +++ b/subworkflows/local/vcf_annotate_ensemblvep/tests/main.nf.test @@ -0,0 +1,178 @@ +nextflow_workflow { + + name "Test Subworkflow VCF_ANNOTATE_ENSEMBLVEP" + script "../main.nf" + workflow "VCF_ANNOTATE_ENSEMBLVEP" + + tag "subworkflows" + tag "subworkflows_nfcore" + tag "subworkflows/vcf_annotate_ensemblvep" + tag "ensemblvep/download" + tag "ensemblvep/vep" + tag "tabix/tabix" + tag "tabix/bgzip" + tag "bcftools/pluginscatter" + tag "bcftools/concat" + tag "bcftools/sort" + + config "./nextflow.config" + + test("sarscov2 - ensemblvep") { + + setup { + run("ENSEMBLVEP_DOWNLOAD") { + script "../../../../modules/nf-core/ensemblvep/download" + process { + """ + input[0] = [ + [id:"reference"], + "WBcel235", + "caenorhabditis_elegans", + "110" + ] + """ + } + } + } + + when { + workflow { + """ + input[0] = Channel.of([ + [ id:'custom_test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true), + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz.tbi', checkIfExists: true) + ] + ]) + input[1] = [[],[]] + input[2] = "WBcel235" + input[3] = "caenorhabditis_elegans" + input[4] = "110" + input[5] = ENSEMBLVEP_DOWNLOAD.out.cache.map { meta, cache -> cache } + input[6] = [] + input[7] = 5 + """ + } + } + + then { + assertAll( + { assert workflow.success}, + { assert snapshot( + workflow.out.vcf_tbi.collect { [it[0], "${file(it[1]).name},variantsMD5:${path(it[1]).vcf.variantsMD5}", file(it[2]).name] }, + workflow.out.vep_reports.collect { it instanceof String ? file(it).name : it }, + workflow.out.versions.collect { it instanceof String ? file(it).name : it } + ).match()} + ) + } + } + + test("sarscov2 - ensemblvep - large chunks") { + + setup { + run("ENSEMBLVEP_DOWNLOAD") { + script "../../../../modules/nf-core/ensemblvep/download" + process { + """ + input[0] = [ + [id:"reference"], + "WBcel235", + "caenorhabditis_elegans", + "110" + ] + """ + } + } + } + + when { + workflow { + """ + input[0] = Channel.of( [ + [ id:'custom_test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true), + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz.tbi', checkIfExists: true) + ] + ]) + input[1] = [[],[]] + input[2] = "WBcel235" + input[3] = "caenorhabditis_elegans" + input[4] = "110" + input[5] = ENSEMBLVEP_DOWNLOAD.out.cache.map { meta, cache -> cache } + input[6] = [] + input[7] = 100 + """ + } + } + + then { + assertAll( + { assert workflow.success}, + { assert snapshot( + workflow.out.vcf_tbi.collect { [it[0], "${file(it[1]).name},variantsMD5:${path(it[1]).vcf.variantsMD5}", file(it[2]).name] }, + workflow.out.vep_reports.collect { it instanceof String ? file(it).name : it }, + workflow.out.versions.collect { it instanceof String ? file(it).name : it } + ).match()} + ) + } + } + + test("sarscov2 - ensemblvep - no scatter") { + + setup { + run("ENSEMBLVEP_DOWNLOAD") { + script "../../../../modules/nf-core/ensemblvep/download" + process { + """ + input[0] = [ + [id:"reference"], + "WBcel235", + "caenorhabditis_elegans", + "110" + ] + """ + } + } + } + + when { + workflow { + """ + input[0] = Channel.of([ + [ id:'custom_test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true), + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz.tbi', checkIfExists: true) + ] + ]) + input[1] = [[],[]] + input[2] = "WBcel235" + input[3] = "caenorhabditis_elegans" + input[4] = "110" + input[5] = ENSEMBLVEP_DOWNLOAD.out.cache.map { meta, cache -> cache } + input[6] = [] + input[7] = [] + """ + } + } + + then { + assertAll( + { assert workflow.success}, + { assert snapshot( + workflow.out.vcf_tbi.collect { [it[0], "${file(it[1]).name},variantsMD5:${path(it[1]).vcf.variantsMD5}", file(it[2]).name] }, + workflow.out.vep_reports.collect { it instanceof String ? file(it).name : it }, + workflow.out.versions.collect { it instanceof String ? file(it).name : it } + ).match()} + ) + } + } +} diff --git a/subworkflows/local/vcf_annotate_ensemblvep/tests/main.nf.test.snap b/subworkflows/local/vcf_annotate_ensemblvep/tests/main.nf.test.snap new file mode 100644 index 00000000..0d73abc0 --- /dev/null +++ b/subworkflows/local/vcf_annotate_ensemblvep/tests/main.nf.test.snap @@ -0,0 +1,93 @@ +{ + "sarscov2 - ensemblvep - large chunks": { + "content": [ + [ + [ + { + "groupSize": 1, + "groupTarget": { + "id": "custom_test", + "single_end": false + } + }, + "custom_test.vcf.gz,variantsMD5:44ed24c4dc4223670a78ffea3c7459e", + "custom_test.vcf.gz.tbi" + ] + ], + [ + "custom_test0_annotated.vep.vcf.gz_summary.html" + ], + [ + "versions.yml", + "versions.yml", + "versions.yml", + "versions.yml", + "versions.yml" + ] + ], + "meta": { + "nf-test": "0.9.1", + "nextflow": "24.10.0" + }, + "timestamp": "2024-11-20T14:31:50.569767686" + }, + "sarscov2 - ensemblvep - no scatter": { + "content": [ + [ + [ + { + "id": "custom_test", + "single_end": false + }, + "custom_test.vep.vcf.gz,variantsMD5:44ed24c4dc4223670a78ffea3c7459e", + "custom_test.vep.vcf.gz.tbi" + ] + ], + [ + "custom_test.vep.vcf.gz_summary.html" + ], + [ + "versions.yml", + "versions.yml" + ] + ], + "meta": { + "nf-test": "0.9.1", + "nextflow": "24.10.0" + }, + "timestamp": "2024-11-20T14:32:06.437006334" + }, + "sarscov2 - ensemblvep": { + "content": [ + [ + [ + { + "groupSize": 2, + "groupTarget": { + "id": "custom_test", + "single_end": false + } + }, + "custom_test.vcf.gz,variantsMD5:44ed24c4dc4223670a78ffea3c7459e", + "custom_test.vcf.gz.tbi" + ] + ], + [ + "custom_test0_annotated.vep.vcf.gz_summary.html", + "custom_test1_annotated.vep.vcf.gz_summary.html" + ], + [ + "versions.yml", + "versions.yml", + "versions.yml", + "versions.yml", + "versions.yml" + ] + ], + "meta": { + "nf-test": "0.9.1", + "nextflow": "24.10.0" + }, + "timestamp": "2024-11-20T14:31:32.997494596" + } +} \ No newline at end of file diff --git a/subworkflows/nf-core/vcf_annotate_ensemblvep_snpeff/tests/nextflow.config b/subworkflows/local/vcf_annotate_ensemblvep/tests/nextflow.config similarity index 100% rename from subworkflows/nf-core/vcf_annotate_ensemblvep_snpeff/tests/nextflow.config rename to subworkflows/local/vcf_annotate_ensemblvep/tests/nextflow.config diff --git a/subworkflows/local/vcf_annotation/main.nf b/subworkflows/local/vcf_annotation/main.nf index 311477f5..df3b1925 100644 --- a/subworkflows/local/vcf_annotation/main.nf +++ b/subworkflows/local/vcf_annotation/main.nf @@ -8,7 +8,7 @@ include { TABIX_BGZIP as BGZIP_ANNOTATED_VCFS } from '../../../modules/nf-core/t include { TABIX_TABIX as TABIX_ENSEMBLVEP } from '../../../modules/nf-core/tabix/tabix/main' include { BCFTOOLS_CONCAT } from '../../../modules/nf-core/bcftools/concat/main' -include { VCF_ANNOTATE_ENSEMBLVEP_SNPEFF as VCF_ANNOTATE_ENSEMBLVEP } from '../../../subworkflows/nf-core/vcf_annotate_ensemblvep_snpeff/main' +include { VCF_ANNOTATE_ENSEMBLVEP } from '../../../subworkflows/local/vcf_annotate_ensemblvep/main' workflow VCF_ANNOTATION { take: @@ -62,8 +62,6 @@ workflow VCF_ANNOTATION { vep_cache_version, ch_vep_cache, ch_vep_extra_files, - [], [], - ["ensemblvep"], vep_chunk_size ) diff --git a/subworkflows/nf-core/utils_nfschema_plugin/tests/main.nf.test b/subworkflows/nf-core/utils_nfschema_plugin/tests/main.nf.test index 842dc432..8fb30164 100644 --- a/subworkflows/nf-core/utils_nfschema_plugin/tests/main.nf.test +++ b/subworkflows/nf-core/utils_nfschema_plugin/tests/main.nf.test @@ -42,7 +42,7 @@ nextflow_workflow { params { test_data = '' - outdir = 1 + outdir = null } workflow { @@ -94,7 +94,7 @@ nextflow_workflow { params { test_data = '' - outdir = 1 + outdir = null } workflow { diff --git a/subworkflows/nf-core/vcf_annotate_ensemblvep_snpeff/tests/main.nf.test b/subworkflows/nf-core/vcf_annotate_ensemblvep_snpeff/tests/main.nf.test deleted file mode 100644 index e6d851e6..00000000 --- a/subworkflows/nf-core/vcf_annotate_ensemblvep_snpeff/tests/main.nf.test +++ /dev/null @@ -1,332 +0,0 @@ -nextflow_workflow { - - name "Test Subworkflow VCF_ANNOTATE_ENSEMBLVEP_SNPEFF" - script "../main.nf" - workflow "VCF_ANNOTATE_ENSEMBLVEP_SNPEFF" - - tag "subworkflows" - tag "subworkflows_nfcore" - tag "subworkflows/vcf_annotate_ensemblvep_snpeff" - tag "ensemblvep/download" - tag "ensemblvep/vep" - tag "snpeff/download" - tag "snpeff/snpeff" - tag "tabix/tabix" - tag "tabix/bgzip" - tag "bcftools/pluginscatter" - tag "bcftools/concat" - tag "bcftools/sort" - - config "./nextflow.config" - - test("sarscov2 - ensemblvep") { - - setup { - run("ENSEMBLVEP_DOWNLOAD") { - script "../../../../modules/nf-core/ensemblvep/download" - process { - """ - input[0] = [ - [id:"reference"], - "WBcel235", - "caenorhabditis_elegans", - "110" - ] - """ - } - } - } - - when { - workflow { - """ - input[0] = Channel.of([ - [ id:'custom_test', single_end:false ], // meta map - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true), - [ - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz.tbi', checkIfExists: true) - ] - ]) - input[1] = [[],[]] - input[2] = "WBcel235" - input[3] = "caenorhabditis_elegans" - input[4] = "110" - input[5] = ENSEMBLVEP_DOWNLOAD.out.cache.map { meta, cache -> cache } - input[6] = [] - input[7] = [] - input[8] = [] - input[9] = ["ensemblvep"] - input[10] = 5 - """ - } - } - - then { - assertAll( - { assert workflow.success}, - { assert snapshot( - workflow.out.vcf_tbi.collect { [it[0], "${file(it[1]).name},variantsMD5:${path(it[1]).vcf.variantsMD5}", file(it[2]).name] }, - workflow.out.vep_reports.collect { it instanceof String ? file(it).name : it }, - workflow.out.snpeff_reports.collect { it.collect { it instanceof String ? file(it).name : it } }, - workflow.out.snpeff_html.collect { it.collect { it instanceof String ? file(it).name : it } }, - workflow.out.snpeff_genes.collect { it.collect { it instanceof String ? file(it).name : it } }, - workflow.out.versions.collect { it instanceof String ? file(it).name : it } - ).match()} - ) - } - } - - test("sarscov2 - snpeff") { - - setup { - run("SNPEFF_DOWNLOAD") { - script "../../../../modules/nf-core/snpeff/download" - process { - """ - input[0] = [ - [id:"reference"], - "WBcel235.105" - ] - """ - } - } - } - - when { - workflow { - """ - input[0] = Channel.of([ - [ id:'test', single_end:false ], // meta map - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz.tbi', checkIfExists: true), - [] - ], - [ - [ id:'custom_test', single_end:false ], // meta map - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true), - [ - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz.tbi', checkIfExists: true) - ] - ]) - input[1] = [[],[]] - input[2] = "WBcel235" - input[3] = "caenorhabditis_elegans" - input[4] = "110" - input[5] = [] - input[6] = [] - input[7] = "WBcel235.105" - input[8] = SNPEFF_DOWNLOAD.out.cache - input[9] = ["snpeff"] - input[10] = 5 - """ - } - } - - then { - assertAll( - { assert workflow.success}, - { assert snapshot( - workflow.out.vcf_tbi.collect { [it[0], "${file(it[1]).name},variantsMD5:${path(it[1]).vcf.variantsMD5}", file(it[2]).name] }, - workflow.out.vep_reports.collect { it instanceof String ? file(it).name : it }, - workflow.out.snpeff_reports.collect { it.collect { it instanceof String ? file(it).name : it } }, - workflow.out.snpeff_html.collect { it.collect { it instanceof String ? file(it).name : it } }, - workflow.out.snpeff_genes.collect { it.collect { it instanceof String ? file(it).name : it } }, - workflow.out.versions.collect { it instanceof String ? file(it).name : it } - ).match()} - ) - } - } - - test("sarscov2 - snpeff + ensemblvep") { - - setup { - run("ENSEMBLVEP_DOWNLOAD") { - script "../../../../modules/nf-core/ensemblvep/download" - process { - """ - input[0] = [ - [id:"reference"], - "WBcel235", - "caenorhabditis_elegans", - "110" - ] - """ - } - } - - run("SNPEFF_DOWNLOAD") { - script "../../../../modules/nf-core/snpeff/download" - process { - """ - input[0] = [ - [id:"reference"], - "WBcel235.105" - ] - """ - } - } - } - - when { - workflow { - """ - input[0] = Channel.of( [ - [ id:'custom_test', single_end:false ], // meta map - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true), - [ - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz.tbi', checkIfExists: true) - ] - ]) - input[1] = [[],[]] - input[2] = "WBcel235" - input[3] = "caenorhabditis_elegans" - input[4] = "110" - input[5] = ENSEMBLVEP_DOWNLOAD.out.cache.map { meta, cache -> cache } - input[6] = [] - input[7] = "WBcel235.105" - input[8] = SNPEFF_DOWNLOAD.out.cache - input[9] = ["snpeff", "ensemblvep"] - input[10] = 5 - """ - } - } - - then { - assertAll( - { assert workflow.success}, - { assert snapshot( - workflow.out.vcf_tbi.collect { [it[0], "${file(it[1]).name},variantsMD5:${path(it[1]).vcf.variantsMD5}", file(it[2]).name] }, - workflow.out.vep_reports.collect { it instanceof String ? file(it).name : it }, - workflow.out.snpeff_reports.collect { it.collect { it instanceof String ? file(it).name : it } }, - workflow.out.snpeff_html.collect { it.collect { it instanceof String ? file(it).name : it } }, - workflow.out.snpeff_genes.collect { it.collect { it instanceof String ? file(it).name : it } }, - workflow.out.versions.collect { it instanceof String ? file(it).name : it } - ).match()} - ) - } - } - - test("sarscov2 - ensemblvep - large chunks") { - - setup { - run("ENSEMBLVEP_DOWNLOAD") { - script "../../../../modules/nf-core/ensemblvep/download" - process { - """ - input[0] = [ - [id:"reference"], - "WBcel235", - "caenorhabditis_elegans", - "110" - ] - """ - } - } - } - - when { - workflow { - """ - input[0] = Channel.of( [ - [ id:'custom_test', single_end:false ], // meta map - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true), - [ - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz.tbi', checkIfExists: true) - ] - ]) - input[1] = [[],[]] - input[2] = "WBcel235" - input[3] = "caenorhabditis_elegans" - input[4] = "110" - input[5] = ENSEMBLVEP_DOWNLOAD.out.cache.map { meta, cache -> cache } - input[6] = [] - input[7] = [] - input[8] = [] - input[9] = ["ensemblvep"] - input[10] = 100 - """ - } - } - - then { - assertAll( - { assert workflow.success}, - { assert snapshot( - workflow.out.vcf_tbi.collect { [it[0], "${file(it[1]).name},variantsMD5:${path(it[1]).vcf.variantsMD5}", file(it[2]).name] }, - workflow.out.vep_reports.collect { it instanceof String ? file(it).name : it }, - workflow.out.snpeff_reports.collect { it.collect { it instanceof String ? file(it).name : it } }, - workflow.out.snpeff_html.collect { it.collect { it instanceof String ? file(it).name : it } }, - workflow.out.snpeff_genes.collect { it.collect { it instanceof String ? file(it).name : it } }, - workflow.out.versions.collect { it instanceof String ? file(it).name : it } - ).match()} - ) - } - } - - test("sarscov2 - ensemblvep - no scatter") { - - setup { - run("ENSEMBLVEP_DOWNLOAD") { - script "../../../../modules/nf-core/ensemblvep/download" - process { - """ - input[0] = [ - [id:"reference"], - "WBcel235", - "caenorhabditis_elegans", - "110" - ] - """ - } - } - } - - when { - workflow { - """ - input[0] = Channel.of([ - [ id:'custom_test', single_end:false ], // meta map - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true), - [ - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz.tbi', checkIfExists: true) - ] - ]) - input[1] = [[],[]] - input[2] = "WBcel235" - input[3] = "caenorhabditis_elegans" - input[4] = "110" - input[5] = ENSEMBLVEP_DOWNLOAD.out.cache.map { meta, cache -> cache } - input[6] = [] - input[7] = [] - input[8] = [] - input[9] = ["ensemblvep"] - input[10] = [] - """ - } - } - - then { - assertAll( - { assert workflow.success}, - { assert snapshot( - workflow.out.vcf_tbi.collect { [it[0], "${file(it[1]).name},variantsMD5:${path(it[1]).vcf.variantsMD5}", file(it[2]).name] }, - workflow.out.vep_reports.collect { it instanceof String ? file(it).name : it }, - workflow.out.snpeff_reports.collect { it.collect { it instanceof String ? file(it).name : it } }, - workflow.out.snpeff_html.collect { it.collect { it instanceof String ? file(it).name : it } }, - workflow.out.snpeff_genes.collect { it.collect { it instanceof String ? file(it).name : it } }, - workflow.out.versions.collect { it instanceof String ? file(it).name : it } - ).match()} - ) - } - } -} diff --git a/subworkflows/nf-core/vcf_annotate_ensemblvep_snpeff/tests/main.nf.test.snap b/subworkflows/nf-core/vcf_annotate_ensemblvep_snpeff/tests/main.nf.test.snap deleted file mode 100644 index dcca7b56..00000000 --- a/subworkflows/nf-core/vcf_annotate_ensemblvep_snpeff/tests/main.nf.test.snap +++ /dev/null @@ -1,338 +0,0 @@ -{ - "sarscov2 - snpeff": { - "content": [ - [ - [ - { - "groupSize": 2, - "groupTarget": { - "id": "custom_test", - "single_end": false - } - }, - "custom_test.vcf.gz,variantsMD5:e9323877c6352459351537ac6539914a", - "custom_test.vcf.gz.tbi" - ], - [ - { - "groupSize": 2, - "groupTarget": { - "id": "test", - "single_end": false - } - }, - "test.vcf.gz,variantsMD5:e9323877c6352459351537ac6539914a", - "test.vcf.gz.tbi" - ] - ], - [ - - ], - [ - [ - { - "id": "custom_test0_annotated", - "single_end": false - }, - "custom_test0_annotated.csv" - ], - [ - { - "id": "custom_test1_annotated", - "single_end": false - }, - "custom_test1_annotated.csv" - ], - [ - { - "id": "test0_annotated", - "single_end": false - }, - "test0_annotated.csv" - ], - [ - { - "id": "test1_annotated", - "single_end": false - }, - "test1_annotated.csv" - ] - ], - [ - [ - { - "id": "custom_test0_annotated", - "single_end": false - }, - "snpEff_summary.html" - ], - [ - { - "id": "custom_test1_annotated", - "single_end": false - }, - "snpEff_summary.html" - ], - [ - { - "id": "test0_annotated", - "single_end": false - }, - "snpEff_summary.html" - ], - [ - { - "id": "test1_annotated", - "single_end": false - }, - "snpEff_summary.html" - ] - ], - [ - [ - { - "id": "custom_test0_annotated", - "single_end": false - }, - "custom_test0_annotated.genes.txt" - ], - [ - { - "id": "custom_test1_annotated", - "single_end": false - }, - "custom_test1_annotated.genes.txt" - ], - [ - { - "id": "test0_annotated", - "single_end": false - }, - "test0_annotated.genes.txt" - ], - [ - { - "id": "test1_annotated", - "single_end": false - }, - "test1_annotated.genes.txt" - ] - ], - [ - "versions.yml", - "versions.yml", - "versions.yml", - "versions.yml", - "versions.yml", - "versions.yml", - "versions.yml" - ] - ], - "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" - }, - "timestamp": "2024-10-18T07:57:12.127577423" - }, - "sarscov2 - ensemblvep - large chunks": { - "content": [ - [ - [ - { - "groupSize": 1, - "groupTarget": { - "id": "custom_test", - "single_end": false - } - }, - "custom_test.vcf.gz,variantsMD5:370b92bc4c236a7b4c6d152319447af3", - "custom_test.vcf.gz.tbi" - ] - ], - [ - "custom_test0_annotated.vep.vcf.gz_summary.html" - ], - [ - - ], - [ - - ], - [ - - ], - [ - "versions.yml", - "versions.yml", - "versions.yml", - "versions.yml", - "versions.yml" - ] - ], - "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" - }, - "timestamp": "2024-10-18T08:30:06.857146079" - }, - "sarscov2 - snpeff + ensemblvep": { - "content": [ - [ - [ - { - "groupSize": 2, - "groupTarget": { - "id": "custom_test", - "single_end": false - } - }, - "custom_test.vcf.gz,variantsMD5:69492a5e9f3bf9d36aad9c14783c849d", - "custom_test.vcf.gz.tbi" - ] - ], - [ - "custom_test0_annotated.vep.vcf.gz_summary.html", - "custom_test1_annotated.vep.vcf.gz_summary.html" - ], - [ - [ - { - "id": "custom_test0_annotated", - "single_end": false - }, - "custom_test0_annotated.csv" - ], - [ - { - "id": "custom_test1_annotated", - "single_end": false - }, - "custom_test1_annotated.csv" - ] - ], - [ - [ - { - "id": "custom_test0_annotated", - "single_end": false - }, - "snpEff_summary.html" - ], - [ - { - "id": "custom_test1_annotated", - "single_end": false - }, - "snpEff_summary.html" - ] - ], - [ - [ - { - "id": "custom_test0_annotated", - "single_end": false - }, - "custom_test0_annotated.genes.txt" - ], - [ - { - "id": "custom_test1_annotated", - "single_end": false - }, - "custom_test1_annotated.genes.txt" - ] - ], - [ - "versions.yml", - "versions.yml", - "versions.yml", - "versions.yml", - "versions.yml", - "versions.yml", - "versions.yml" - ] - ], - "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" - }, - "timestamp": "2024-10-18T08:29:31.390244289" - }, - "sarscov2 - ensemblvep - no scatter": { - "content": [ - [ - [ - { - "id": "custom_test", - "single_end": false - }, - "custom_test.vep.vcf.gz,variantsMD5:370b92bc4c236a7b4c6d152319447af3", - "custom_test.vep.vcf.gz.tbi" - ] - ], - [ - "custom_test.vep.vcf.gz_summary.html" - ], - [ - - ], - [ - - ], - [ - - ], - [ - "versions.yml", - "versions.yml" - ] - ], - "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" - }, - "timestamp": "2024-10-18T08:30:32.047882286" - }, - "sarscov2 - ensemblvep": { - "content": [ - [ - [ - { - "groupSize": 2, - "groupTarget": { - "id": "custom_test", - "single_end": false - } - }, - "custom_test.vcf.gz,variantsMD5:370b92bc4c236a7b4c6d152319447af3", - "custom_test.vcf.gz.tbi" - ] - ], - [ - "custom_test0_annotated.vep.vcf.gz_summary.html", - "custom_test1_annotated.vep.vcf.gz_summary.html" - ], - [ - - ], - [ - - ], - [ - - ], - [ - "versions.yml", - "versions.yml", - "versions.yml", - "versions.yml", - "versions.yml" - ] - ], - "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" - }, - "timestamp": "2024-10-18T08:26:42.202930396" - } -} \ No newline at end of file From 40db9228c15ef3c560d0b2a1528faa7e2e2564a7 Mon Sep 17 00:00:00 2001 From: Matthias De Smet <11850640+matthdsm@users.noreply.github.com> Date: Fri, 22 Nov 2024 16:23:37 +0100 Subject: [PATCH 145/167] fix typo --- conf/copgt.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conf/copgt.config b/conf/copgt.config index ecfdeb99..d5460667 100644 --- a/conf/copgt.config +++ b/conf/copgt.config @@ -5,7 +5,7 @@ */ params { - caller = "haplotypecaller" + callers = "haplotypecaller" only_call = true scatter_count = 8 } From 624aa6bdd9a9405d4ccf8366f64173d750026121 Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Mon, 25 Nov 2024 09:59:35 +0100 Subject: [PATCH 146/167] fix output over multiple days --- main.nf | 30 +++++++++---------- nextflow.config | 4 ++- nextflow_schema.json | 5 ++++ .../utils_cmgg_germline_pipeline/main.nf | 2 +- .../nf-core/utils_nextflow_pipeline/main.nf | 2 +- workflows/germline.nf | 2 +- 6 files changed, 26 insertions(+), 19 deletions(-) diff --git a/main.nf b/main.nf index 9f698591..3a3e9d1b 100644 --- a/main.nf +++ b/main.nf @@ -236,54 +236,54 @@ output { 'gvcfs' { path { meta, gvcf, _tbi -> { file -> if(file == gvcf.name) { - return "${meta.family}/${meta.id}_${getWorkflowVersion().replace(".", "_")}_${new Date().format("yyyy_MM_dd")}/${meta.id}.${meta.caller}.g.vcf.gz" + return "${meta.family}/${meta.id}_${params.unique_out}/${meta.id}.${meta.caller}.g.vcf.gz" } - return "${meta.family}/${meta.id}_${getWorkflowVersion().replace(".", "_")}_${new Date().format("yyyy_MM_dd")}/${meta.id}.${meta.caller}.g.vcf.gz.tbi" + return "${meta.family}/${meta.id}_${params.unique_out}/${meta.id}.${meta.caller}.g.vcf.gz.tbi" } } } 'single_beds' { - path { meta, _bed -> { _file -> "${meta.family}/${meta.id}_${getWorkflowVersion().replace(".", "_")}_${new Date().format("yyyy_MM_dd")}/${meta.id}.bed" } } + path { meta, _bed -> { _file -> "${meta.family}/${meta.id}_${params.unique_out}/${meta.id}.bed" } } } 'validation' { - path { meta, _report -> { file -> "${meta.family}/${meta.id}_${getWorkflowVersion().replace(".", "_")}_${new Date().format("yyyy_MM_dd")}/validation/${meta.caller}/${file}" } } + path { meta, _report -> { file -> "${meta.family}/${meta.id}_${params.unique_out}/validation/${meta.caller}/${file}" } } } 'gvcf_reports' { - path { meta, _report -> { _file -> "${meta.family}/${meta.id}_${getWorkflowVersion().replace(".", "_")}_${new Date().format("yyyy_MM_dd")}/${meta.id}.${meta.caller}.bcftools_stats.txt" }} + path { meta, _report -> { _file -> "${meta.family}/${meta.id}_${params.unique_out}/${meta.id}.${meta.caller}.bcftools_stats.txt" }} } 'genomicsdb' { enabled (params.output_genomicsdb || params.only_merge) path { meta, _genomicsdb -> - { _file -> "${meta.family}/output_${getWorkflowVersion().replace(".", "_")}_${new Date().format("yyyy_MM_dd")}/${meta.id}_${meta.caller}_genomicsdb"} + { _file -> "${meta.family}/output_${params.unique_out}/${meta.id}_${meta.caller}_genomicsdb"} } } 'vcfs' { path { meta, vcf, _tbi -> { file -> if(file == vcf.name) { - return "${meta.family}/output_${getWorkflowVersion().replace(".", "_")}_${new Date().format("yyyy_MM_dd")}/${meta.id}.${meta.caller}.vcf.gz" + return "${meta.family}/output_${params.unique_out}/${meta.id}.${meta.caller}.vcf.gz" } - return "${meta.family}/output_${getWorkflowVersion().replace(".", "_")}_${new Date().format("yyyy_MM_dd")}/${meta.id}.${meta.caller}.vcf.gz.tbi" + return "${meta.family}/output_${params.unique_out}/${meta.id}.${meta.caller}.vcf.gz.tbi" } } } 'gemini' { - path { meta, _db -> { _file -> "${meta.family}/output_${getWorkflowVersion().replace(".", "_")}_${new Date().format("yyyy_MM_dd")}/${meta.id}.${meta.caller}.db"}} + path { meta, _db -> { _file -> "${meta.family}/output_${params.unique_out}/${meta.id}.${meta.caller}.db"}} } 'peds' { - path { meta, _ped -> { _file -> "${meta.family}/output_${getWorkflowVersion().replace(".", "_")}_${new Date().format("yyyy_MM_dd")}/${meta.id}.${meta.caller}.ped"}} + path { meta, _ped -> { _file -> "${meta.family}/output_${params.unique_out}/${meta.id}.${meta.caller}.ped"}} } 'joint_beds' { - path { meta, _bed -> { _file -> "${meta.family}/output_${getWorkflowVersion().replace(".", "_")}_${new Date().format("yyyy_MM_dd")}/${meta.id}.${meta.caller}.bed"}} + path { meta, _bed -> { _file -> "${meta.family}/output_${params.unique_out}/${meta.id}.${meta.caller}.bed"}} } 'final_reports' { - path { meta, _report -> { file -> "${meta.family}/qc_${getWorkflowVersion().replace(".", "_")}_${new Date().format("yyyy_MM_dd")}/${file}"}} + path { meta, _report -> { file -> "${meta.family}/qc_${params.unique_out}/${file}"}} } 'automap' { - path { meta, _automap -> { _file -> "${meta.family}/output_${getWorkflowVersion().replace(".", "_")}_${new Date().format("yyyy_MM_dd")}/automap/${meta.caller}"}} + path { meta, _automap -> { _file -> "${meta.family}/output_${params.unique_out}/automap/${meta.caller}"}} } 'updio' { - path { meta, _updio -> { _file -> "${meta.family}/output_${getWorkflowVersion().replace(".", "_")}_${new Date().format("yyyy_MM_dd")}/updio/${meta.caller}"}} + path { meta, _updio -> { _file -> "${meta.family}/output_${params.unique_out}/updio/${meta.caller}"}} } 'multiqc' { - path { _report -> { _file -> "${getWorkflowVersion().replace(".", "_")}_${new Date().format("yyyy_MM_dd")}/multiqc_report.html"}} + path { _report -> { _file -> "${params.unique_out}/multiqc_report.html"}} } } diff --git a/nextflow.config b/nextflow.config index 4f78d2d9..55ef6f7c 100644 --- a/nextflow.config +++ b/nextflow.config @@ -281,9 +281,11 @@ manifest { doi = '' } +params.unique_out = "v${manifest.version.replace('.', '_')}_${new Date().format("yyyy_MM_dd")}" + timeline { enabled = true - file = "${params.outdir}/v${manifest.version.replace('.', '_')}_${new Date().format("yyyy_MM_dd")}/execution_timeline_${new java.util.Date().format( 'yyyy-MM-dd_HH-mm-ss')}.html" + file = "${params.outdir}/${params.unique_out}/execution_timeline_${new java.util.Date().format( 'yyyy-MM-dd_HH-mm-ss')}.html" } report { enabled = true diff --git a/nextflow_schema.json b/nextflow_schema.json index ea1b13a3..063134a8 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -330,6 +330,11 @@ "description": "The lowest callable coverage to determine callable regions.", "default": 5, "minimum": 0 + }, + "unique_out": { + "type": "string", + "description": "Don't change this value", + "hidden": true } } }, diff --git a/subworkflows/local/utils_cmgg_germline_pipeline/main.nf b/subworkflows/local/utils_cmgg_germline_pipeline/main.nf index 6c1e95e0..c7dca893 100644 --- a/subworkflows/local/utils_cmgg_germline_pipeline/main.nf +++ b/subworkflows/local/utils_cmgg_germline_pipeline/main.nf @@ -84,7 +84,7 @@ workflow PIPELINE_INITIALISATION { ) // Output the samplesheet - file(input).copyTo("${outdir}/v${workflow.manifest.version.replace('.', '_')}_${new Date().format("yyyy_MM_dd")}/samplesheet.${file(input).extension}") + file(input).copyTo("${outdir}/${params.unique_out}/samplesheet.${file(input).extension}") emit: samplesheet = WATCHPATH_HANDLING.out.samplesheet diff --git a/subworkflows/nf-core/utils_nextflow_pipeline/main.nf b/subworkflows/nf-core/utils_nextflow_pipeline/main.nf index de2364d5..2f9bdfc1 100644 --- a/subworkflows/nf-core/utils_nextflow_pipeline/main.nf +++ b/subworkflows/nf-core/utils_nextflow_pipeline/main.nf @@ -77,7 +77,7 @@ def dumpParametersToJSON(outdir) { def jsonStr = groovy.json.JsonOutput.toJson(params) temp_pf.text = groovy.json.JsonOutput.prettyPrint(jsonStr) - nextflow.extension.FilesEx.copyTo(temp_pf.toPath(), "${outdir}/v${workflow.manifest.version.replace('.', '_')}_${new Date().format("yyyy_MM_dd")}/params_${timestamp}.json") + nextflow.extension.FilesEx.copyTo(temp_pf.toPath(), "${outdir}/${params.unique_out}/params_${timestamp}.json") temp_pf.delete() } diff --git a/workflows/germline.nf b/workflows/germline.nf index a83355f5..cf7081c1 100644 --- a/workflows/germline.nf +++ b/workflows/germline.nf @@ -837,7 +837,7 @@ workflow GERMLINE { // def ch_collated_versions = softwareVersionsToYAML(ch_versions) .collectFile( - storeDir: "${outdir}/v${workflow.manifest.version.replace('.', '_')}_${new Date().format("yyyy_MM_dd")}", + storeDir: "${outdir}/${params.unique_out}", name: '' + 'pipeline_software_' + 'mqc_' + 'versions.yml', sort: true, newLine: true From fc16552220cab87720453cc4b9d333e1b217602a Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke <101190534+nvnieuwk@users.noreply.github.com> Date: Mon, 25 Nov 2024 11:53:05 +0100 Subject: [PATCH 147/167] fix only_call and only_merge (#235) --- workflows/germline.nf | 541 +++++++++++++++++++++--------------------- 1 file changed, 272 insertions(+), 269 deletions(-) diff --git a/workflows/germline.nf b/workflows/germline.nf index cf7081c1..d4d4a792 100644 --- a/workflows/germline.nf +++ b/workflows/germline.nf @@ -527,309 +527,312 @@ workflow GERMLINE { def ch_joint_beds = GVCF_JOINT_GENOTYPE_GATK4.out.beds def ch_final_genomicsdb = GVCF_JOINT_GENOTYPE_GATK4.out.genomicsdb - // Stop pipeline execution when only the merge should happen - def ch_calls_final = ch_calls.filter { !only_merge } - - def ch_called_variants = ch_calls_final - .map { meta, vcf, tbi -> - def new_meta = meta - meta.subMap(["type", "vardict_min_af"]) - [ new_meta, vcf, tbi ] - } + def ch_final_vcfs = Channel.empty() + def ch_final_dbs = Channel.empty() + def ch_final_peds = Channel.empty() + def ch_final_reports = Channel.empty() + def ch_final_automap = Channel.empty() + def ch_final_updio = Channel.empty() + def ch_final_validation = Channel.empty() - BCFTOOLS_STATS( - ch_called_variants, - [[],[]], - [[],[]], - [[],[]], - [[],[]], - [[],[]] - ) - ch_versions = ch_versions.mix(BCFTOOLS_STATS.out.versions.first()) - def ch_final_reports = BCFTOOLS_STATS.out.stats - ch_reports = ch_reports.mix(ch_final_reports.collect { _meta, report -> report }) + if (!only_call && !only_merge) { + def ch_called_variants = ch_calls + .map { meta, vcf, tbi -> + def new_meta = meta - meta.subMap(["type", "vardict_min_af"]) + [ new_meta, vcf, tbi ] + } - def ch_filtered_variants = Channel.empty() - if(filter) { - VCF_FILTER_BCFTOOLS( + BCFTOOLS_STATS( ch_called_variants, - true - ) - ch_versions = ch_versions.mix(VCF_FILTER_BCFTOOLS.out.versions) - ch_filtered_variants = VCF_FILTER_BCFTOOLS.out.vcfs - } else { - ch_filtered_variants = ch_called_variants - } - - def ch_normalized_variants = Channel.empty() - if(normalize) { - BCFTOOLS_NORM( - ch_filtered_variants, - ch_fasta_ready, - ) - ch_versions = ch_versions.mix(BCFTOOLS_NORM.out.versions.first()) - - TABIX_NORMALIZE( - BCFTOOLS_NORM.out.vcf + [[],[]], + [[],[]], + [[],[]], + [[],[]], + [[],[]] ) - ch_versions = ch_versions.mix(TABIX_NORMALIZE.out.versions.first()) - - ch_normalized_variants = BCFTOOLS_NORM.out.vcf - .join(TABIX_NORMALIZE.out.tbi, failOnDuplicate:true, failOnMismatch:true) - } else { - ch_normalized_variants = ch_filtered_variants - } - - // - // Preprocess the PED channel - // - - def ch_somalier_input = ch_normalized_variants - .map { meta, _vcf, _tbi -> - [ meta, pedFiles.containsKey(meta.family) ? pedFiles[meta.family] : [] ] + ch_versions = ch_versions.mix(BCFTOOLS_STATS.out.versions.first()) + ch_final_reports = BCFTOOLS_STATS.out.stats + ch_reports = ch_reports.mix(ch_final_reports.collect { _meta, report -> report }) + + def ch_filtered_variants = Channel.empty() + if(filter) { + VCF_FILTER_BCFTOOLS( + ch_called_variants, + true + ) + ch_versions = ch_versions.mix(VCF_FILTER_BCFTOOLS.out.versions) + ch_filtered_variants = VCF_FILTER_BCFTOOLS.out.vcfs + } else { + ch_filtered_variants = ch_called_variants } - // - // Run relation tests with somalier - // - - VCF_EXTRACT_RELATE_SOMALIER( - ch_normalized_variants, - ch_fasta_ready, - ch_fai_ready, - ch_somalier_sites, - ch_somalier_input - ) - ch_versions = ch_versions.mix(VCF_EXTRACT_RELATE_SOMALIER.out.versions) - def ch_final_peds = VCF_EXTRACT_RELATE_SOMALIER.out.peds - ch_final_reports = ch_final_reports.mix(VCF_EXTRACT_RELATE_SOMALIER.out.html) + def ch_normalized_variants = Channel.empty() + if(normalize) { + BCFTOOLS_NORM( + ch_filtered_variants, + ch_fasta_ready, + ) + ch_versions = ch_versions.mix(BCFTOOLS_NORM.out.versions.first()) - // - // Add PED headers to the VCFs - // + TABIX_NORMALIZE( + BCFTOOLS_NORM.out.vcf + ) + ch_versions = ch_versions.mix(TABIX_NORMALIZE.out.versions.first()) - def ch_ped_vcfs = Channel.empty() - if(add_ped){ + ch_normalized_variants = BCFTOOLS_NORM.out.vcf + .join(TABIX_NORMALIZE.out.tbi, failOnDuplicate:true, failOnMismatch:true) + } else { + ch_normalized_variants = ch_filtered_variants + } - VCF_PED_RTGTOOLS( - ch_normalized_variants, - ch_final_peds - ) - ch_versions = ch_versions.mix(VCF_PED_RTGTOOLS.out.versions) + // + // Preprocess the PED channel + // - ch_ped_vcfs = VCF_PED_RTGTOOLS.out.ped_vcfs - } else { - ch_ped_vcfs = ch_normalized_variants - .map { meta, vcf, _tbi=[] -> - [ meta, vcf ] + def ch_somalier_input = ch_normalized_variants + .map { meta, _vcf, _tbi -> + [ meta, pedFiles.containsKey(meta.family) ? pedFiles[meta.family] : [] ] } - } - // - // Annotation of the variants and creation of Gemini-compatible database files - // + // + // Run relation tests with somalier + // - def ch_annotation_output = Channel.empty() - if (annotate) { - VCF_ANNOTATION( - ch_ped_vcfs, + VCF_EXTRACT_RELATE_SOMALIER( + ch_normalized_variants, ch_fasta_ready, - ch_vep_cache_ready, - ch_vep_extra_files, - ch_vcfanno_config, - ch_vcfanno_lua, - ch_vcfanno_resources, - genome, - species, - vep_cache_version, - vep_chunk_size, - vcfanno + ch_fai_ready, + ch_somalier_sites, + ch_somalier_input ) - ch_versions = ch_versions.mix(VCF_ANNOTATION.out.versions) - ch_reports = ch_reports.mix(VCF_ANNOTATION.out.reports) + ch_versions = ch_versions.mix(VCF_EXTRACT_RELATE_SOMALIER.out.versions) + ch_final_peds = VCF_EXTRACT_RELATE_SOMALIER.out.peds + ch_final_reports = ch_final_reports.mix(VCF_EXTRACT_RELATE_SOMALIER.out.html) - ch_annotation_output = VCF_ANNOTATION.out.annotated_vcfs - } else { - ch_annotation_output = ch_ped_vcfs - } + // + // Add PED headers to the VCFs + // - // - // Tabix the resulting VCF - // + def ch_ped_vcfs = Channel.empty() + if(add_ped){ - TABIX_FINAL( - ch_annotation_output - ) - ch_versions = ch_versions.mix(TABIX_FINAL.out.versions.first()) + VCF_PED_RTGTOOLS( + ch_normalized_variants, + ch_final_peds + ) + ch_versions = ch_versions.mix(VCF_PED_RTGTOOLS.out.versions) + + ch_ped_vcfs = VCF_PED_RTGTOOLS.out.ped_vcfs + } else { + ch_ped_vcfs = ch_normalized_variants + .map { meta, vcf, _tbi=[] -> + [ meta, vcf ] + } + } - def ch_final_vcfs = ch_annotation_output - .join(TABIX_FINAL.out.tbi, failOnDuplicate:true, failOnMismatch:true) + // + // Annotation of the variants and creation of Gemini-compatible database files + // - // - // Validate the found variants - // + def ch_annotation_output = Channel.empty() + if (annotate) { + VCF_ANNOTATION( + ch_ped_vcfs, + ch_fasta_ready, + ch_vep_cache_ready, + ch_vep_extra_files, + ch_vcfanno_config, + ch_vcfanno_lua, + ch_vcfanno_resources, + genome, + species, + vep_cache_version, + vep_chunk_size, + vcfanno + ) + ch_versions = ch_versions.mix(VCF_ANNOTATION.out.versions) + ch_reports = ch_reports.mix(VCF_ANNOTATION.out.reports) - def ch_final_validation = Channel.empty() - if (validate){ - def ch_truths_input = ch_input.truth_variants - .map { meta, vcf, tbi, bed -> - def new_meta = meta - meta.subMap("duplicate_count") - [ groupKey(new_meta, meta.duplicate_count), vcf, tbi, bed ] - } - .groupTuple() - .map { meta, vcf, tbi, bed -> - // Get only one VCF for samples that were given multiple times - def one_vcf = vcf.find { vcf_file -> vcf_file != [] } ?: [] - def one_tbi = tbi.find { tbi_file -> tbi_file != [] } ?: [] - def one_bed = bed.find { bed_file -> bed_file != [] } ?: [] - [ meta, one_vcf, one_tbi, one_bed ] - } - .branch { _meta, vcf, tbi, _bed -> - no_vcf: !vcf - tbi: tbi - no_tbi: !tbi - } + ch_annotation_output = VCF_ANNOTATION.out.annotated_vcfs + } else { + ch_annotation_output = ch_ped_vcfs + } - // Create truth VCF indices if none were given - TABIX_TRUTH( - ch_truths_input.no_tbi.map { meta, vcf, _tbi, _bed -> - [ meta, vcf ] - } + // + // Tabix the resulting VCF + // + + TABIX_FINAL( + ch_annotation_output ) - ch_versions = ch_versions.mix(TABIX_TRUTH.out.versions.first()) + ch_versions = ch_versions.mix(TABIX_FINAL.out.versions.first()) - ch_truths_input.no_tbi - .join(TABIX_TRUTH.out.tbi, failOnDuplicate:true, failOnMismatch:true) - .map { meta, vcf, _empty, bed, tbi -> - [ meta, vcf, tbi, bed ] - } - .mix(ch_truths_input.tbi) - .mix(ch_truths_input.no_vcf) - .combine(callers) - .map { meta, vcf, tbi, bed, caller -> - def new_meta = meta + [caller: caller] - [ new_meta, vcf, tbi, bed ] - } - .set { ch_truths } // Set needs to be used here due to some Nextflow bug + ch_final_vcfs = ch_annotation_output + .join(TABIX_FINAL.out.tbi, failOnDuplicate:true, failOnMismatch:true) - def ch_validation_input = ch_final_vcfs - .map { meta, vcf, tbi -> - def new_meta = meta - meta.subMap("family_samples") - [ new_meta, vcf, tbi, meta.family_samples.tokenize(",") ] - } - .transpose(by: 3) - .map { meta, vcf, tbi, sample -> - def new_meta = [ - id: sample, - sample: sample, - family: meta.family, - caller: meta.caller - ] - [ new_meta, vcf, tbi ] - } - .join(ch_truths, failOnMismatch:true, failOnDuplicate:true) - .filter { _meta, _vcf, _tbi, truth_vcf, _truth_tbi, _truth_bed -> - // Filter out all samples that have no truth VCF - truth_vcf != [] - } - .multiMap { meta, vcf, tbi, truth_vcf, truth_tbi, truth_bed -> - vcfs: [meta, vcf, tbi, truth_vcf, truth_tbi] - bed: [meta, truth_bed] - } + // + // Validate the found variants + // - ch_single_beds - .combine(callers) - .map { meta, bed, caller -> - def new_meta = [ - id:meta.id, - sample:meta.sample, - family:meta.family, - caller:caller - ] - [ new_meta, bed ] - } - .join(ch_validation_input.bed, failOnMismatch:true, failOnDuplicate:true) - .map { meta, regions, truth -> - [ meta, truth, regions ] - } - .set { ch_validation_regions } // Set needs to be used here due to some Nextflow bug + if (validate){ + def ch_truths_input = ch_input.truth_variants + .map { meta, vcf, tbi, bed -> + def new_meta = meta - meta.subMap("duplicate_count") + [ groupKey(new_meta, meta.duplicate_count), vcf, tbi, bed ] + } + .groupTuple() + .map { meta, vcf, tbi, bed -> + // Get only one VCF for samples that were given multiple times + def one_vcf = vcf.find { vcf_file -> vcf_file != [] } ?: [] + def one_tbi = tbi.find { tbi_file -> tbi_file != [] } ?: [] + def one_bed = bed.find { bed_file -> bed_file != [] } ?: [] + [ meta, one_vcf, one_tbi, one_bed ] + } + .branch { _meta, vcf, tbi, _bed -> + no_vcf: !vcf + tbi: tbi + no_tbi: !tbi + } + + // Create truth VCF indices if none were given + TABIX_TRUTH( + ch_truths_input.no_tbi.map { meta, vcf, _tbi, _bed -> + [ meta, vcf ] + } + ) + ch_versions = ch_versions.mix(TABIX_TRUTH.out.versions.first()) + + ch_truths_input.no_tbi + .join(TABIX_TRUTH.out.tbi, failOnDuplicate:true, failOnMismatch:true) + .map { meta, vcf, _empty, bed, tbi -> + [ meta, vcf, tbi, bed ] + } + .mix(ch_truths_input.tbi) + .mix(ch_truths_input.no_vcf) + .combine(callers) + .map { meta, vcf, tbi, bed, caller -> + def new_meta = meta + [caller: caller] + [ new_meta, vcf, tbi, bed ] + } + .set { ch_truths } // Set needs to be used here due to some Nextflow bug + + def ch_validation_input = ch_final_vcfs + .map { meta, vcf, tbi -> + def new_meta = meta - meta.subMap("family_samples") + [ new_meta, vcf, tbi, meta.family_samples.tokenize(",") ] + } + .transpose(by: 3) + .map { meta, vcf, tbi, sample -> + def new_meta = [ + id: sample, + sample: sample, + family: meta.family, + caller: meta.caller + ] + [ new_meta, vcf, tbi ] + } + .join(ch_truths, failOnMismatch:true, failOnDuplicate:true) + .filter { _meta, _vcf, _tbi, truth_vcf, _truth_tbi, _truth_bed -> + // Filter out all samples that have no truth VCF + truth_vcf != [] + } + .multiMap { meta, vcf, tbi, truth_vcf, truth_tbi, truth_bed -> + vcfs: [meta, vcf, tbi, truth_vcf, truth_tbi] + bed: [meta, truth_bed] + } + + ch_single_beds + .combine(callers) + .map { meta, bed, caller -> + def new_meta = [ + id:meta.id, + sample:meta.sample, + family:meta.family, + caller:caller + ] + [ new_meta, bed ] + } + .join(ch_validation_input.bed, failOnMismatch:true, failOnDuplicate:true) + .map { meta, regions, truth -> + [ meta, truth, regions ] + } + .set { ch_validation_regions } // Set needs to be used here due to some Nextflow bug + + VCF_VALIDATE_SMALL_VARIANTS( + ch_validation_input.vcfs, + ch_validation_regions, + ch_sdf_ready.collect() + ) + ch_versions = ch_versions.mix(VCF_VALIDATE_SMALL_VARIANTS.out.versions) + + ch_final_validation = VCF_VALIDATE_SMALL_VARIANTS.out.vcfeval_true_positive_vcf.mix( + VCF_VALIDATE_SMALL_VARIANTS.out.vcfeval_true_positive_vcf_tbi, + VCF_VALIDATE_SMALL_VARIANTS.out.vcfeval_false_negative_vcf, + VCF_VALIDATE_SMALL_VARIANTS.out.vcfeval_false_negative_vcf_tbi, + VCF_VALIDATE_SMALL_VARIANTS.out.vcfeval_false_positive_vcf, + VCF_VALIDATE_SMALL_VARIANTS.out.vcfeval_false_positive_vcf_tbi, + VCF_VALIDATE_SMALL_VARIANTS.out.vcfeval_true_positive_baseline_vcf, + VCF_VALIDATE_SMALL_VARIANTS.out.vcfeval_true_positive_baseline_vcf_tbi, + VCF_VALIDATE_SMALL_VARIANTS.out.vcfeval_summary, + VCF_VALIDATE_SMALL_VARIANTS.out.vcfeval_phasing, + VCF_VALIDATE_SMALL_VARIANTS.out.vcfeval_snp_roc, + VCF_VALIDATE_SMALL_VARIANTS.out.vcfeval_non_snp_roc, + VCF_VALIDATE_SMALL_VARIANTS.out.vcfeval_weighted_roc, + VCF_VALIDATE_SMALL_VARIANTS.out.rtgtools_snp_png_rocplot, + VCF_VALIDATE_SMALL_VARIANTS.out.rtgtools_non_snp_png_rocplot, + VCF_VALIDATE_SMALL_VARIANTS.out.rtgtools_weighted_png_rocplot, + VCF_VALIDATE_SMALL_VARIANTS.out.rtgtools_snp_svg_rocplot, + VCF_VALIDATE_SMALL_VARIANTS.out.rtgtools_non_snp_svg_rocplot, + VCF_VALIDATE_SMALL_VARIANTS.out.rtgtools_weighted_svg_rocplot + ) + } - VCF_VALIDATE_SMALL_VARIANTS( - ch_validation_input.vcfs, - ch_validation_regions, - ch_sdf_ready.collect() - ) - ch_versions = ch_versions.mix(VCF_VALIDATE_SMALL_VARIANTS.out.versions) - - ch_final_validation = VCF_VALIDATE_SMALL_VARIANTS.out.vcfeval_true_positive_vcf.mix( - VCF_VALIDATE_SMALL_VARIANTS.out.vcfeval_true_positive_vcf_tbi, - VCF_VALIDATE_SMALL_VARIANTS.out.vcfeval_false_negative_vcf, - VCF_VALIDATE_SMALL_VARIANTS.out.vcfeval_false_negative_vcf_tbi, - VCF_VALIDATE_SMALL_VARIANTS.out.vcfeval_false_positive_vcf, - VCF_VALIDATE_SMALL_VARIANTS.out.vcfeval_false_positive_vcf_tbi, - VCF_VALIDATE_SMALL_VARIANTS.out.vcfeval_true_positive_baseline_vcf, - VCF_VALIDATE_SMALL_VARIANTS.out.vcfeval_true_positive_baseline_vcf_tbi, - VCF_VALIDATE_SMALL_VARIANTS.out.vcfeval_summary, - VCF_VALIDATE_SMALL_VARIANTS.out.vcfeval_phasing, - VCF_VALIDATE_SMALL_VARIANTS.out.vcfeval_snp_roc, - VCF_VALIDATE_SMALL_VARIANTS.out.vcfeval_non_snp_roc, - VCF_VALIDATE_SMALL_VARIANTS.out.vcfeval_weighted_roc, - VCF_VALIDATE_SMALL_VARIANTS.out.rtgtools_snp_png_rocplot, - VCF_VALIDATE_SMALL_VARIANTS.out.rtgtools_non_snp_png_rocplot, - VCF_VALIDATE_SMALL_VARIANTS.out.rtgtools_weighted_png_rocplot, - VCF_VALIDATE_SMALL_VARIANTS.out.rtgtools_snp_svg_rocplot, - VCF_VALIDATE_SMALL_VARIANTS.out.rtgtools_non_snp_svg_rocplot, - VCF_VALIDATE_SMALL_VARIANTS.out.rtgtools_weighted_svg_rocplot - ) - } + // + // Create Gemini-compatible database files + // - // - // Create Gemini-compatible database files - // + if(gemini){ + def ch_vcf2db_input = CustomChannelOperators.joinOnKeys( + ch_final_vcfs.map { meta, vcf, _tbi -> [ meta, vcf ]}, + ch_final_peds, + ['id', 'family', 'family_samples'] + ) - def ch_final_dbs = Channel.empty() - if(gemini){ - def ch_vcf2db_input = CustomChannelOperators.joinOnKeys( - ch_final_vcfs.map { meta, vcf, _tbi -> [ meta, vcf ]}, - ch_final_peds, - ['id', 'family', 'family_samples'] + VCF2DB( + ch_vcf2db_input ) + ch_versions = ch_versions.mix(VCF2DB.out.versions.first()) + ch_final_dbs = VCF2DB.out.db + } - VCF2DB( - ch_vcf2db_input - ) - ch_versions = ch_versions.mix(VCF2DB.out.versions.first()) - ch_final_dbs = VCF2DB.out.db - } - - // - // Run UPDio analysis - // + // + // Run UPDio analysis + // - def ch_final_updio = Channel.empty() - if(updio) { - VCF_UPD_UPDIO( - ch_final_vcfs, - ch_final_peds, - ch_updio_common_cnvs - ) - ch_versions = ch_versions.mix(VCF_UPD_UPDIO.out.versions) - ch_final_updio = VCF_UPD_UPDIO.out.updio - } + if(updio) { + VCF_UPD_UPDIO( + ch_final_vcfs, + ch_final_peds, + ch_updio_common_cnvs + ) + ch_versions = ch_versions.mix(VCF_UPD_UPDIO.out.versions) + ch_final_updio = VCF_UPD_UPDIO.out.updio + } - // - // Run automap analysis - // + // + // Run automap analysis + // - def ch_final_automap = Channel.empty() - if(automap) { - VCF_ROH_AUTOMAP( - ch_final_vcfs, - ch_automap_repeats, - ch_automap_panel, - genome - ) - ch_versions = ch_versions.mix(VCF_ROH_AUTOMAP.out.versions) - ch_final_automap = VCF_ROH_AUTOMAP.out.automap + if(automap) { + VCF_ROH_AUTOMAP( + ch_final_vcfs, + ch_automap_repeats, + ch_automap_panel, + genome + ) + ch_versions = ch_versions.mix(VCF_ROH_AUTOMAP.out.versions) + ch_final_automap = VCF_ROH_AUTOMAP.out.automap + } } // From 169c7a6e49d25a6ec84120c3ae2af478f73178a7 Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Mon, 25 Nov 2024 13:11:44 +0100 Subject: [PATCH 148/167] fix family name issues --- subworkflows/local/watchpath_handling/main.nf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/subworkflows/local/watchpath_handling/main.nf b/subworkflows/local/watchpath_handling/main.nf index 976f0f33..09a8f55e 100644 --- a/subworkflows/local/watchpath_handling/main.nf +++ b/subworkflows/local/watchpath_handling/main.nf @@ -40,7 +40,7 @@ workflow WATCHPATH_HANDLING { // Replace dots with underscores in sample and family names to prevent breaking the multiqc report row[0].id = row[0].id.replace(".", "_") row[0].sample = row[0].sample.replace(".", "_") - row[0].family = row[0].family.replace(".", "_") + row[0].family = row[0].family ? row[0].family.replace(".", "_") : row[0].family // Watchpath logic def is_watch = false From 11fb1e0ba11faece2554381603e2aaf8bcb7b8d0 Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke <101190534+nvnieuwk@users.noreply.github.com> Date: Mon, 25 Nov 2024 15:09:06 +0100 Subject: [PATCH 149/167] fix prepare join issue (#238) --- subworkflows/local/cram_prepare_samtools_bedtools/main.nf | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/subworkflows/local/cram_prepare_samtools_bedtools/main.nf b/subworkflows/local/cram_prepare_samtools_bedtools/main.nf index 320008f4..62b241ee 100644 --- a/subworkflows/local/cram_prepare_samtools_bedtools/main.nf +++ b/subworkflows/local/cram_prepare_samtools_bedtools/main.nf @@ -129,13 +129,9 @@ workflow CRAM_PREPARE_SAMTOOLS_BEDTOOLS { ch_versions = ch_versions.mix(MERGE_ROI_PARAMS.out.versions) ch_missing_rois = ch_roi_branch.missing - .map { meta, bed -> - [ groupKey(meta, meta.duplicate_count), bed ] - } - .groupTuple() .combine(MERGE_ROI_PARAMS.out.bed.map { _meta, bed -> bed }) .map { meta, _missing, default_roi -> - [ meta.target, default_roi ] + [ meta, default_roi ] } } else { ch_missing_rois = ch_roi_branch.missing From b3e30be2a12da5066136b6e565dd77fb944a47a1 Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Tue, 26 Nov 2024 14:17:03 +0100 Subject: [PATCH 150/167] bump to 1.9.0 --- CHANGELOG.md | 4 ++-- nextflow.config | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2f0a1313..d7732756 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,7 +3,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## v2.0.0dev +## v1.9.0 - Neighborly Nieuwkerke ### New features @@ -21,7 +21,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Fixes -1. Validation of all samples now use an intersect of the golden truth BED files with the BED file used to call the variants. This should fix the WES validation which was broken until this point. +1. Validation of all samples now uses an intersect of the golden truth BED files with the BED file used to call the variants. This should fix the WES validation which was broken until this point. 2. A couple of small fixes to the vardict flow. 3. Only use the standard chromosomes for UPDio analysis. 4. Reduced the resources given to some GATK4 modules diff --git a/nextflow.config b/nextflow.config index 55ef6f7c..ea24ee09 100644 --- a/nextflow.config +++ b/nextflow.config @@ -277,7 +277,7 @@ manifest { description = """A nextflow pipeline for calling and annotating small germline variants from short DNA reads for WES and WGS data""" mainScript = 'main.nf' nextflowVersion = '!>=24.10.0' - version = '2.0.0dev' + version = '1.9.0' doi = '' } From 5b9102aeed2fe4b88bbfbbe2bd47c9d040157772 Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Tue, 26 Nov 2024 14:33:08 +0100 Subject: [PATCH 151/167] try to fix CI --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 56cb29c1..08b352cf 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -12,7 +12,7 @@ on: env: NXF_ANSI_LOG: false NFT_MAX_SHARDS: 5 - SOURCE_BRANCH: ${{ github.head_ref || github.ref_name }} + SOURCE_BRANCH: ${{ github.head_ref }} concurrency: group: "${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}" From 2ea45e0caf3dbc6add75a296eb9393586d3f1d36 Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Tue, 26 Nov 2024 14:35:25 +0100 Subject: [PATCH 152/167] try to fix CI --- .github/workflows/ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 08b352cf..4ee22821 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -62,6 +62,7 @@ jobs: - name: "Run ${{ matrix.filter }} tests (changed) | ${{ matrix.shard }}/${{ env.NFT_MAX_SHARDS }}" if: ${{ env.SOURCE_BRANCH != 'main' }} run: | + echo ${{ env.SOURCE_BRANCH }} $CONDA/bin/nf-test test \ --ci \ --changed-since HEAD^ \ From 55764994b0af1e04bc8d80f5d19c8ce0259b0a8b Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Tue, 26 Nov 2024 14:40:54 +0100 Subject: [PATCH 153/167] try to fix CI --- .github/workflows/ci.yml | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 4ee22821..bb09e1f2 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,9 +1,6 @@ name: nf-core CI # This workflow runs the pipeline with the minimal test dataset to check that it completes without any syntax errors on: - push: - branches: - - dev pull_request: release: types: [published] @@ -12,7 +9,7 @@ on: env: NXF_ANSI_LOG: false NFT_MAX_SHARDS: 5 - SOURCE_BRANCH: ${{ github.head_ref }} + SOURCE_BRANCH: ${{ github.base_ref }} concurrency: group: "${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}" @@ -62,7 +59,6 @@ jobs: - name: "Run ${{ matrix.filter }} tests (changed) | ${{ matrix.shard }}/${{ env.NFT_MAX_SHARDS }}" if: ${{ env.SOURCE_BRANCH != 'main' }} run: | - echo ${{ env.SOURCE_BRANCH }} $CONDA/bin/nf-test test \ --ci \ --changed-since HEAD^ \ From bd82dae0e788281f0082fcae95c224523b2bbfaf Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Tue, 26 Nov 2024 14:47:38 +0100 Subject: [PATCH 154/167] fix version in nf-core.yml --- .nf-core.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.nf-core.yml b/.nf-core.yml index 63dd0c9f..99b4e65b 100644 --- a/.nf-core.yml +++ b/.nf-core.yml @@ -43,4 +43,4 @@ template: skip_features: - fastqc - is_nfcore - version: 2.0.0dev + version: 1.9.0 From ea182023b51000b19c636fc5b2dea4b1282500ac Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Tue, 26 Nov 2024 15:16:32 +0100 Subject: [PATCH 155/167] add somalier reports to multiqc output --- workflows/germline.nf | 2 ++ 1 file changed, 2 insertions(+) diff --git a/workflows/germline.nf b/workflows/germline.nf index d4d4a792..33d0c76e 100644 --- a/workflows/germline.nf +++ b/workflows/germline.nf @@ -608,6 +608,8 @@ workflow GERMLINE { ch_versions = ch_versions.mix(VCF_EXTRACT_RELATE_SOMALIER.out.versions) ch_final_peds = VCF_EXTRACT_RELATE_SOMALIER.out.peds ch_final_reports = ch_final_reports.mix(VCF_EXTRACT_RELATE_SOMALIER.out.html) + ch_reports = ch_reports.mix(VCF_EXTRACT_RELATE_SOMALIER.out.pairs_tsv.map { _meta, report -> report }) + ch_reports = ch_reports.mix(VCF_EXTRACT_RELATE_SOMALIER.out.samples_tsv.map { _meta, report -> report }) // // Add PED headers to the VCFs From 753069f01cb9a1afbca70e93047de11ea8adc480 Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Tue, 26 Nov 2024 15:18:42 +0100 Subject: [PATCH 156/167] update changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index d7732756..71670560 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,6 +18,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 3. Completely reworked the output directory structure to a more sensible structure. The pipeline can now be run on the same output directory every time and will incrementally add files to the correct family folder. See the [output documentation](https://nf-cmgg.github.io/germline/latest/output/) for more info. 4. Migrated to the new workflow output definitions. 5. Bumped the minimal Nextflow version to 24.10.0. +6. Added the somalier reports to the multiQC report. ### Fixes From 6f246184d955affbcc625c08bda95c1e848c469f Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Tue, 26 Nov 2024 15:42:28 +0100 Subject: [PATCH 157/167] fix build-docs issue --- .github/workflows/build-docs.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-docs.yml b/.github/workflows/build-docs.yml index 5e993588..55c5b02b 100644 --- a/.github/workflows/build-docs.yml +++ b/.github/workflows/build-docs.yml @@ -31,7 +31,7 @@ jobs: - name: Parse version id: version run: | - [[ ${{ steps.read_yml.outputs['template.version'] }} == *"dev"* ]] && pipeline_version="dev" || pipeline_version=$version + [[ ${{ steps.read_yml.outputs['template.version'] }} == *"dev"* ]] && pipeline_version="dev" || pipeline_version=${{ steps.read_yml.outputs['template.version'] }} echo "version=$pipeline_version" >> $GITHUB_OUTPUT - name: Setup git user From 8133a490e6fa570c77a3dbcf8c532513a4ecbcb3 Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke <101190534+nvnieuwk@users.noreply.github.com> Date: Mon, 2 Dec 2024 12:30:34 +0100 Subject: [PATCH 158/167] Remove output suffix param (#243) * remove output_suffix param * remove output_suffix param --- CHANGELOG.md | 1 + conf/seqplorer.config | 2 - docs/parameters.md | 156 +++++++++++++++++++++--------------------- nextflow.config | 1 - nextflow_schema.json | 4 -- 5 files changed, 79 insertions(+), 85 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 71670560..22e71e86 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,6 +19,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 4. Migrated to the new workflow output definitions. 5. Bumped the minimal Nextflow version to 24.10.0. 6. Added the somalier reports to the multiQC report. +7. Removed the `--output_suffix` parameter ### Fixes diff --git a/conf/seqplorer.config b/conf/seqplorer.config index 2a5c9ed8..2190809b 100644 --- a/conf/seqplorer.config +++ b/conf/seqplorer.config @@ -17,6 +17,4 @@ params { vep_eog = true vep_maxentscan = true vep_spliceregion = true - - output_suffix = "-gatk4-haplotype-joint-decomposed-annotated" } diff --git a/docs/parameters.md b/docs/parameters.md index 76f51708..5f80e486 100644 --- a/docs/parameters.md +++ b/docs/parameters.md @@ -6,34 +6,34 @@ A nextflow pipeline for calling and annotating small germline variants from shor Define where the pipeline should find input data and save output data. -| Parameter | Description | Type | Default | Required | Hidden | -| ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------- | ------- | ------------------ | ------ | -| `input` | Path to comma-separated file containing information about the samples in the experiment.
    HelpYou will need to create a design file with information about the samples in your experiment before running the pipeline. Use this parameter to specify its location. It has to be a comma-separated file with samples, and a header row. See [usage docs](./usage.md).
    | `string` | | :heavy_check_mark: | | -| `outdir` | The output directory where the results will be saved. You have to use absolute paths to storage on Cloud infrastructure. | `string` | | :heavy_check_mark: | | -| `watchdir` | A folder to watch for the creation of files that start with `watch:` in the samplesheet. | `string` | | | | -| `email` | Email address for completion summary.
    HelpSet this parameter to your e-mail address to get a summary e-mail with details of the run sent to you when the workflow exits. If set in your user config file (`~/.nextflow/config`) then you don't need to specify this on the command line for every run.
    | `string` | | | | -| `ped` | Path to a pedigree file for all samples in the run. All relational data will be fetched from this file. | `string` | | | | +| Parameter | Description | Type | Default | Required | Hidden | +| ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------- | ------- | -------- | ------ | +| `input` | Path to comma-separated file containing information about the samples in the experiment.
    HelpYou will need to create a design file with information about the samples in your experiment before running the pipeline. Use this parameter to specify its location. It has to be a comma-separated file with samples, and a header row. See [usage docs](./usage.md).
    | `string` | | True | | +| `outdir` | The output directory where the results will be saved. You have to use absolute paths to storage on Cloud infrastructure. | `string` | | True | | +| `watchdir` | A folder to watch for the creation of files that start with `watch:` in the samplesheet. | `string` | | | | +| `email` | Email address for completion summary.
    HelpSet this parameter to your e-mail address to get a summary e-mail with details of the run sent to you when the workflow exits. If set in your user config file (`~/.nextflow/config`) then you don't need to specify this on the command line for every run.
    | `string` | | | | +| `ped` | Path to a pedigree file for all samples in the run. All relational data will be fetched from this file. | `string` | | | | ## Reference genome options Reference genome related files and options required for the workflow. -| Parameter | Description | Type | Default | Required | Hidden | -| ------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------- | ------------ | ------------------ | ------------------ | -| `genome` | Reference genome build. Used to fetch the right reference files.
    HelpRequires a Genome Reference Consortium reference ID (e.g. GRCh38)
    | `string` | GRCh38 | | | -| `fasta` | Path to FASTA genome file.
    HelpThis parameter is _mandatory_ if `--genome` is not specified. The path to the reference genome fasta.
    | `string` | | :heavy_check_mark: | | -| `fai` | Path to FASTA genome index file. | `string` | | | | -| `dict` | Path to the sequence dictionary generated from the FASTA reference. This is only used when `haplotypecaller` is one of the specified callers. | `string` | | | | -| `strtablefile` | Path to the STR table file generated from the FASTA reference. This is only used when `--dragstr` has been given. | `string` | | | | -| `sdf` | Path to the SDF folder generated from the reference FASTA file. This is only required when using `--validate`. | `string` | | | | -| `elfasta` | Path to the ELFASTA genome file. This is used when `elprep` is part of the callers and will be automatically generated when missing. | `string` | | | | -| `elsites` | Path to the elsites file. This is used when `elprep` is part of the callers. | `string` | | | | -| `genomes` | Object for genomes | `object` | | | :heavy_check_mark: | -| `genomes_base` | Directory base for CMGG reference store (used when `--genomes_ignore false` is specified) | `string` | /references/ | | | -| `cmgg_config_base` | The base directory for the local config files | `string` | /conf/ | | :heavy_check_mark: | -| `genomes_ignore` | Do not load the local references from the path specified with `--genomes_base` | `boolean` | | | :heavy_check_mark: | -| `igenomes_base` | Directory / URL base for iGenomes references. | `string` | | | :heavy_check_mark: | -| `igenomes_ignore` | Do not load the iGenomes reference config.
    HelpDo not load `igenomes.config` when running the pipeline. You may choose this option if you observe clashes between custom parameters and those supplied in `igenomes.config`.
    | `boolean` | | | :heavy_check_mark: | +| Parameter | Description | Type | Default | Required | Hidden | +| ------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------- | ------------ | -------- | ------ | +| `genome` | Reference genome build. Used to fetch the right reference files.
    HelpRequires a Genome Reference Consortium reference ID (e.g. GRCh38)
    | `string` | GRCh38 | | | +| `fasta` | Path to FASTA genome file.
    HelpThis parameter is _mandatory_ if `--genome` is not specified. The path to the reference genome fasta.
    | `string` | | True | | +| `fai` | Path to FASTA genome index file. | `string` | | | | +| `dict` | Path to the sequence dictionary generated from the FASTA reference. This is only used when `haplotypecaller` is one of the specified callers. | `string` | | | | +| `strtablefile` | Path to the STR table file generated from the FASTA reference. This is only used when `--dragstr` has been given. | `string` | | | | +| `sdf` | Path to the SDF folder generated from the reference FASTA file. This is only required when using `--validate`. | `string` | | | | +| `elfasta` | Path to the ELFASTA genome file. This is used when `elprep` is part of the callers and will be automatically generated when missing. | `string` | | | | +| `elsites` | Path to the elsites file. This is used when `elprep` is part of the callers. | `string` | | | | +| `genomes` | Object for genomes | `object` | | | True | +| `genomes_base` | Directory base for CMGG reference store (used when `--genomes_ignore false` is specified) | `string` | /references/ | | | +| `cmgg_config_base` | The base directory for the local config files | `string` | /conf/ | | True | +| `genomes_ignore` | Do not load the local references from the path specified with `--genomes_base` | `boolean` | | | True | +| `igenomes_base` | Directory / URL base for iGenomes references. | `string` | | | True | +| `igenomes_ignore` | Do not load the iGenomes reference config.
    HelpDo not load `igenomes.config` when running the pipeline. You may choose this option if you observe clashes between custom parameters and those supplied in `igenomes.config`.
    | `boolean` | | | True | ## Pipeline specific parameters @@ -60,7 +60,6 @@ Parameters that define how the pipeline works | `callers` | A comma delimited string of the available callers. Current options are: `haplotypecaller` and `vardict`. | `string` | haplotypecaller | | | | `vardict_min_af` | The minimum allele frequency for VarDict when no `vardict_min_af` is supplied in the samplesheet. | `number` | 0.1 | | | | `normalize` | Normalize the variant in the final VCFs. | `boolean` | | | | -| `output_suffix` | A custom suffix to add to the basename of the output files. | `string` | | | | | `only_pass` | Filter out all variants that don't have the PASS filter for vardict. This only works when `--filter` is also given. | `boolean` | | | | | `keep_alt_contigs` | Keep all aditional contigs for calling instead of filtering them out before. | `boolean` | | | | | `updio` | Run UPDio analysis on the final VCFs. | `boolean` | | | | @@ -71,72 +70,73 @@ Parameters that define how the pipeline works | `automap_panel_name` | The panel name of the panel given with --automap_panel. | `string` | cmgg_bio | | | | `hc_phasing` | Perform phasing with HaplotypeCaller. | `boolean` | | | | | `min_callable_coverage` | The lowest callable coverage to determine callable regions. | `integer` | 5 | | | +| `unique_out` | Don't change this value | `string` | | | True | ## Institutional config options Parameters used to describe centralised config profiles. These should not be edited. -| Parameter | Description | Type | Default | Required | Hidden | -| ---------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | -------------------------------------------------------- | -------- | ------------------ | -| `custom_config_version` | Git commit id for Institutional configs. | `string` | master | | :heavy_check_mark: | -| `custom_config_base` | Base directory for Institutional configs.
    HelpIf you're running offline, Nextflow will not be able to fetch the institutional config files from the internet. If you don't need them, then this is not a problem. If you do need them, you should download the files from the repo and tell Nextflow where to find them with this parameter.
    | `string` | https://raw.githubusercontent.com/nf-core/configs/master | | :heavy_check_mark: | -| `config_profile_name` | Institutional config name. | `string` | | | :heavy_check_mark: | -| `config_profile_description` | Institutional config description. | `string` | | | :heavy_check_mark: | -| `config_profile_contact` | Institutional config contact information. | `string` | | | :heavy_check_mark: | -| `config_profile_url` | Institutional config URL link. | `string` | | | :heavy_check_mark: | +| Parameter | Description | Type | Default | Required | Hidden | +| ---------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | -------------------------------------------------------- | -------- | ------ | +| `custom_config_version` | Git commit id for Institutional configs. | `string` | master | | True | +| `custom_config_base` | Base directory for Institutional configs.
    HelpIf you're running offline, Nextflow will not be able to fetch the institutional config files from the internet. If you don't need them, then this is not a problem. If you do need them, you should download the files from the repo and tell Nextflow where to find them with this parameter.
    | `string` | https://raw.githubusercontent.com/nf-core/configs/master | | True | +| `config_profile_name` | Institutional config name. | `string` | | | True | +| `config_profile_description` | Institutional config description. | `string` | | | True | +| `config_profile_contact` | Institutional config contact information. | `string` | | | True | +| `config_profile_url` | Institutional config URL link. | `string` | | | True | ## Generic options Less common options for the pipeline, typically set in a config file. -| Parameter | Description | Type | Default | Required | Hidden | -| ------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | --------- | -------------------------------------------------------- | -------- | ------------------ | -| `version` | Display version and exit. | `boolean` | | | | -| `publish_dir_mode` | Method used to save pipeline results to output directory.
    HelpThe Nextflow `publishDir` option specifies which intermediate files should be saved to the output directory. This option tells the pipeline what method should be used to move these files. See [Nextflow docs](https://www.nextflow.io/docs/latest/process.html#publishdir) for details.
    | `string` | copy | | | -| `email_on_fail` | Email address for completion summary, only when pipeline fails.
    HelpAn email address to send a summary email to when the pipeline is completed - ONLY sent if the pipeline does not exit successfully.
    | `string` | | | :heavy_check_mark: | -| `plaintext_email` | Send plain-text email instead of HTML. | `boolean` | | | :heavy_check_mark: | -| `max_multiqc_email_size` | File size limit when attaching MultiQC reports to summary emails. | `string` | 25.MB | | :heavy_check_mark: | -| `monochrome_logs` | Do not use coloured log outputs. | `boolean` | | | :heavy_check_mark: | -| `hook_url` | Incoming hook URL for messaging service
    HelpIncoming hook URL for messaging service. Currently, MS Teams and Slack are supported.
    | `string` | | | | -| `multiqc_title` | MultiQC report title. Printed as page header, used for filename if not otherwise specified. | `string` | | | | -| `multiqc_config` | Custom config file to supply to MultiQC. | `string` | | | | -| `multiqc_logo` | Custom logo file to supply to MultiQC. File name must also be set in the MultiQC config file | `string` | | | | -| `multiqc_methods_description` | Custom MultiQC yaml file containing HTML including a methods description. | `string` | | | | -| `validate_params` | Boolean whether to validate parameters against the schema at runtime | `boolean` | :heavy_check_mark: | | :heavy_check_mark: | -| `pipelines_testdata_base_path` | Base URL or local path to location of pipeline test dataset files | `string` | https://raw.githubusercontent.com/nf-core/test-datasets/ | | :heavy_check_mark: | +| Parameter | Description | Type | Default | Required | Hidden | +| ------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | --------- | -------------------------------------------------------- | -------- | ------ | +| `version` | Display version and exit. | `boolean` | | | | +| `publish_dir_mode` | Method used to save pipeline results to output directory.
    HelpThe Nextflow `publishDir` option specifies which intermediate files should be saved to the output directory. This option tells the pipeline what method should be used to move these files. See [Nextflow docs](https://www.nextflow.io/docs/latest/process.html#publishdir) for details.
    | `string` | copy | | | +| `email_on_fail` | Email address for completion summary, only when pipeline fails.
    HelpAn email address to send a summary email to when the pipeline is completed - ONLY sent if the pipeline does not exit successfully.
    | `string` | | | True | +| `plaintext_email` | Send plain-text email instead of HTML. | `boolean` | | | True | +| `max_multiqc_email_size` | File size limit when attaching MultiQC reports to summary emails. | `string` | 25.MB | | True | +| `monochrome_logs` | Do not use coloured log outputs. | `boolean` | | | True | +| `hook_url` | Incoming hook URL for messaging service
    HelpIncoming hook URL for messaging service. Currently, MS Teams and Slack are supported.
    | `string` | | | | +| `multiqc_title` | MultiQC report title. Printed as page header, used for filename if not otherwise specified. | `string` | | | | +| `multiqc_config` | Custom config file to supply to MultiQC. | `string` | | | | +| `multiqc_logo` | Custom logo file to supply to MultiQC. File name must also be set in the MultiQC config file | `string` | | | | +| `multiqc_methods_description` | Custom MultiQC yaml file containing HTML including a methods description. | `string` | | | | +| `validate_params` | Boolean whether to validate parameters against the schema at runtime | `boolean` | True | | True | +| `pipelines_testdata_base_path` | Base URL or local path to location of pipeline test dataset files | `string` | https://raw.githubusercontent.com/nf-core/test-datasets/ | | True | ## Annotation parameters Parameters to configure Ensembl VEP and VCFanno -| Parameter | Description | Type | Default | Required | Hidden | -| -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------- | ------------------ | -------- | ------ | -| `vep_chunk_size` | The amount of sites per split VCF as input to VEP. | `integer` | 50000 | | | -| `species` | The species of the samples.
    HelpMust be lower case and have underscores as spaces.
    | `string` | homo_sapiens | | | -| `vep_merged` | Specify if the VEP cache is a merged cache. | `boolean` | :heavy_check_mark: | | | -| `vep_cache` | The path to the VEP cache. | `string` | | | | -| `vep_dbnsfp` | Use the dbNSFP plugin with Ensembl VEP.
    HelpThe '--dbnsfp' and '--dbnsfp_tbi' parameters need to be specified when using this parameter.
    | `boolean` | | | | -| `vep_spliceai` | Use the SpliceAI plugin with Ensembl VEP.
    HelpThe '--spliceai_indel', '--spliceai_indel_tbi', '--spliceai_snv' and '--spliceai_snv_tbi' parameters need to be specified when using this parameter.
    | `boolean` | | | | -| `vep_spliceregion` | Use the SpliceRegion plugin with Ensembl VEP. | `boolean` | | | | -| `vep_mastermind` | Use the Mastermind plugin with Ensembl VEP.
    HelpThe '--mastermind' and '--mastermind_tbi' parameters need to be specified when using this parameter.
    | `boolean` | | | | -| `vep_maxentscan` | Use the MaxEntScan plugin with Ensembl VEP.
    HelpThe '--maxentscan' parameter need to be specified when using this parameter.
    | `boolean` | | | | -| `vep_eog` | Use the custom EOG annotation with Ensembl VEP.
    HelpThe '--eog' and '--eog_tbi' parameters need to be specified when using this parameter.
    | `boolean` | | | | -| `vep_alphamissense` | Use the AlphaMissense plugin with Ensembl VEP.
    HelpThe '--alphamissense' and '--alphamissense_tbi' parameters need to be specified when using this parameter.
    | `boolean` | | | | -| `vep_version` | The version of the VEP tool to be used. | `number` | 105.0 | | | -| `vep_cache_version` | The version of the VEP cache to be used. | `integer` | 105 | | | -| `dbnsfp` | Path to the dbSNFP file. | `string` | | | | -| `dbnsfp_tbi` | Path to the index of the dbSNFP file. | `string` | | | | -| `spliceai_indel` | Path to the VCF containing indels for spliceAI. | `string` | | | | -| `spliceai_indel_tbi` | Path to the index of the VCF containing indels for spliceAI. | `string` | | | | -| `spliceai_snv` | Path to the VCF containing SNVs for spliceAI. | `string` | | | | -| `spliceai_snv_tbi` | Path to the index of the VCF containing SNVs for spliceAI. | `string` | | | | -| `mastermind` | Path to the VCF for Mastermind. | `string` | | | | -| `mastermind_tbi` | Path to the index of the VCF for Mastermind. | `string` | | | | -| `alphamissense` | Path to the TSV for AlphaMissense. | `string` | | | | -| `alphamissense_tbi` | Path to the index of the TSV for AlphaMissense. | `string` | | | | -| `eog` | Path to the VCF containing EOG annotations. | `string` | | | | -| `eog_tbi` | Path to the index of the VCF containing EOG annotations. | `string` | | | | -| `vcfanno` | Run annotations with vcfanno. | `boolean` | | | | -| `vcfanno_config` | The path to the VCFanno config TOML. | `string` | | | | -| `vcfanno_lua` | The path to a Lua script to be used in VCFanno. | `string` | | | | -| `vcfanno_resources` | A semicolon-seperated list of resource files for VCFanno, please also supply their indices using this parameter. | `string` | | | | +| Parameter | Description | Type | Default | Required | Hidden | +| -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------- | ------------ | -------- | ------ | +| `vep_chunk_size` | The amount of sites per split VCF as input to VEP. | `integer` | 50000 | | | +| `species` | The species of the samples.
    HelpMust be lower case and have underscores as spaces.
    | `string` | homo_sapiens | | | +| `vep_merged` | Specify if the VEP cache is a merged cache. | `boolean` | True | | | +| `vep_cache` | The path to the VEP cache. | `string` | | | | +| `vep_dbnsfp` | Use the dbNSFP plugin with Ensembl VEP.
    HelpThe '--dbnsfp' and '--dbnsfp_tbi' parameters need to be specified when using this parameter.
    | `boolean` | | | | +| `vep_spliceai` | Use the SpliceAI plugin with Ensembl VEP.
    HelpThe '--spliceai_indel', '--spliceai_indel_tbi', '--spliceai_snv' and '--spliceai_snv_tbi' parameters need to be specified when using this parameter.
    | `boolean` | | | | +| `vep_spliceregion` | Use the SpliceRegion plugin with Ensembl VEP. | `boolean` | | | | +| `vep_mastermind` | Use the Mastermind plugin with Ensembl VEP.
    HelpThe '--mastermind' and '--mastermind_tbi' parameters need to be specified when using this parameter.
    | `boolean` | | | | +| `vep_maxentscan` | Use the MaxEntScan plugin with Ensembl VEP.
    HelpThe '--maxentscan' parameter need to be specified when using this parameter.
    | `boolean` | | | | +| `vep_eog` | Use the custom EOG annotation with Ensembl VEP.
    HelpThe '--eog' and '--eog_tbi' parameters need to be specified when using this parameter.
    | `boolean` | | | | +| `vep_alphamissense` | Use the AlphaMissense plugin with Ensembl VEP.
    HelpThe '--alphamissense' and '--alphamissense_tbi' parameters need to be specified when using this parameter.
    | `boolean` | | | | +| `vep_version` | The version of the VEP tool to be used. | `number` | 105.0 | | | +| `vep_cache_version` | The version of the VEP cache to be used. | `integer` | 105 | | | +| `dbnsfp` | Path to the dbSNFP file. | `string` | | | | +| `dbnsfp_tbi` | Path to the index of the dbSNFP file. | `string` | | | | +| `spliceai_indel` | Path to the VCF containing indels for spliceAI. | `string` | | | | +| `spliceai_indel_tbi` | Path to the index of the VCF containing indels for spliceAI. | `string` | | | | +| `spliceai_snv` | Path to the VCF containing SNVs for spliceAI. | `string` | | | | +| `spliceai_snv_tbi` | Path to the index of the VCF containing SNVs for spliceAI. | `string` | | | | +| `mastermind` | Path to the VCF for Mastermind. | `string` | | | | +| `mastermind_tbi` | Path to the index of the VCF for Mastermind. | `string` | | | | +| `alphamissense` | Path to the TSV for AlphaMissense. | `string` | | | | +| `alphamissense_tbi` | Path to the index of the TSV for AlphaMissense. | `string` | | | | +| `eog` | Path to the VCF containing EOG annotations. | `string` | | | | +| `eog_tbi` | Path to the index of the VCF containing EOG annotations. | `string` | | | | +| `vcfanno` | Run annotations with vcfanno. | `boolean` | | | | +| `vcfanno_config` | The path to the VCFanno config TOML. | `string` | | | | +| `vcfanno_lua` | The path to a Lua script to be used in VCFanno. | `string` | | | | +| `vcfanno_resources` | A semicolon-seperated list of resource files for VCFanno, please also supply their indices using this parameter. | `string` | | | | diff --git a/nextflow.config b/nextflow.config index ea24ee09..44c544b1 100644 --- a/nextflow.config +++ b/nextflow.config @@ -28,7 +28,6 @@ params { callers = "haplotypecaller" vardict_min_af = 0.1 // Minimum allele frequency for VarDict normalize = false - output_suffix = "" only_pass = false keep_alt_contigs = false updio = false diff --git a/nextflow_schema.json b/nextflow_schema.json index 063134a8..4e061f2a 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -275,10 +275,6 @@ "type": "boolean", "description": "Normalize the variant in the final VCFs." }, - "output_suffix": { - "type": "string", - "description": "A custom suffix to add to the basename of the output files." - }, "only_pass": { "type": "boolean", "description": "Filter out all variants that don't have the PASS filter for vardict. This only works when `--filter` is also given." From c8882b5ead77b062f63aaf0ab043446a39b2d495 Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke <101190534+nvnieuwk@users.noreply.github.com> Date: Mon, 2 Dec 2024 12:31:27 +0100 Subject: [PATCH 159/167] add multiqc_data to output (#242) --- main.nf | 4 ++++ workflows/germline.nf | 1 + 2 files changed, 5 insertions(+) diff --git a/main.nf b/main.nf index 3a3e9d1b..7869d843 100644 --- a/main.nf +++ b/main.nf @@ -230,6 +230,7 @@ workflow { GERMLINE.out.automap >> 'automap' GERMLINE.out.updio >> 'updio' GERMLINE.out.multiqc_report >> 'multiqc' + GERMLINE.out.multiqc_data >> 'multiqc_data' } output { @@ -285,6 +286,9 @@ output { 'multiqc' { path { _report -> { _file -> "${params.unique_out}/multiqc_report.html"}} } + 'multiqc_data' { + path { _folder -> { _file -> "${params.unique_out}/multiqc_data"}} + } } /* diff --git a/workflows/germline.nf b/workflows/germline.nf index 33d0c76e..4eafdef3 100644 --- a/workflows/germline.nf +++ b/workflows/germline.nf @@ -902,6 +902,7 @@ workflow GERMLINE { updio = ch_final_updio // channel: [ val(meta), path(updio) ] validation = ch_final_validation // channel: [ val(meta), path(file) ] multiqc_report = MULTIQC.out.report.toList() // channel: /path/to/multiqc_report.html + multiqc_data = MULTIQC.out.data // channel: /path/to/multiqc_data versions = ch_versions // channel: [ path(versions.yml) ] } From 1ff73503f0448ff1c4054581420c6c1b9ed01255 Mon Sep 17 00:00:00 2001 From: Matthias De Smet <11850640+matthdsm@users.noreply.github.com> Date: Fri, 6 Dec 2024 13:42:23 +0100 Subject: [PATCH 160/167] restore default mem for VEP --- conf/modules.config | 1 - 1 file changed, 1 deletion(-) diff --git a/conf/modules.config b/conf/modules.config index 4c769fdc..ddc376c2 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -273,7 +273,6 @@ process { */ withName: "^.*VCF_ANNOTATION:VCF_ANNOTATE_ENSEMBLVEP:ENSEMBLVEP_VEP\$" { - memory = { 12.GB * task.attempt } ext.args = {[ // Specify the input format "--format vcf", From 7bbf25a1f5870a766be032b2258ff84303ab5cfd Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Fri, 6 Dec 2024 15:36:11 +0100 Subject: [PATCH 161/167] update profiles --- CHANGELOG.md | 1 + conf/seqplorer.config | 3 +++ conf/wes.config | 1 + 3 files changed, 5 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 22e71e86..5d11849d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -20,6 +20,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 5. Bumped the minimal Nextflow version to 24.10.0. 6. Added the somalier reports to the multiQC report. 7. Removed the `--output_suffix` parameter +8. Added some missing required paths to the `WES` and `seqplorer` profiles ### Fixes diff --git a/conf/seqplorer.config b/conf/seqplorer.config index 2190809b..0e1da935 100644 --- a/conf/seqplorer.config +++ b/conf/seqplorer.config @@ -17,4 +17,7 @@ params { vep_eog = true vep_maxentscan = true vep_spliceregion = true + + vcfanno_config = "https://raw.githubusercontent.com/CenterForMedicalGeneticsGhent/nf-cmgg-configs/main/conf/Hsapiens/vcfanno/cmgg_vcfanno.toml" + vcfanno_resources = "${params.genomes_base}/Hsapiens/GRCh38/variation/dbscSNV-1.1/dbscSNV.txt.gz;${params.genomes_base}/Hsapiens/GRCh38/variation/dbscSNV-1.1/dbscSNV.txt.gz.tbi;${params.genomes_base}/Hsapiens/GRCh38/variation/gnomAD/exomes/r2.2.1/gnomad_exomes.vcf.gz;${params.genomes_base}/Hsapiens/GRCh38/variation/gnomAD/exomes/r2.2.1/gnomad_exomes.vcf.gz.csi;${params.genomes_base}/Hsapiens/GRCh38/variation/clinvar/clinvar_20221119.vcf.gz;${params.genomes_base}/Hsapiens/GRCh38/variation/clinvar/clinvar_20221119.vcf.gz.tbi;${params.genomes_base}/Hsapiens/GRCh38/variation/gnomAD/genomes/r3.1.2/gnomad_genomes.vcf.gz;${params.genomes_base}/Hsapiens/GRCh38/variation/gnomAD/genomes/r3.1.2/gnomad_genomes.vcf.gz.csi;${params.genomes_base}/Hsapiens/GRCh38/variation/dbNSFP-4.3/dbNSFP4.3a_grch38.gz;${params.genomes_base}/Hsapiens/GRCh38/variation/dbNSFP-4.3/dbNSFP4.3a_grch38.gz.tbi" } diff --git a/conf/wes.config b/conf/wes.config index 88b2a0ff..9cbbee36 100644 --- a/conf/wes.config +++ b/conf/wes.config @@ -7,4 +7,5 @@ params { callers = "haplotypecaller" scatter_count = 8 + roi = "${params.genomes_base}/Hsapiens/GRCh38/regions/CMGG_WES_analysis_ROI_v5.bed" } From 2545d00bc9cb46a19503da72779f183ac7cf204f Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Mon, 9 Dec 2024 09:20:23 +0100 Subject: [PATCH 162/167] remove maxentscan from seqplorer config --- conf/seqplorer.config | 1 - 1 file changed, 1 deletion(-) diff --git a/conf/seqplorer.config b/conf/seqplorer.config index 0e1da935..ccac085a 100644 --- a/conf/seqplorer.config +++ b/conf/seqplorer.config @@ -15,7 +15,6 @@ params { vep_spliceai = true vep_mastermind = true vep_eog = true - vep_maxentscan = true vep_spliceregion = true vcfanno_config = "https://raw.githubusercontent.com/CenterForMedicalGeneticsGhent/nf-cmgg-configs/main/conf/Hsapiens/vcfanno/cmgg_vcfanno.toml" From 805dd73b3aba5ad8e00a5b52cd633865a2afa61e Mon Sep 17 00:00:00 2001 From: Matthias De Smet <11850640+matthdsm@users.noreply.github.com> Date: Mon, 9 Dec 2024 12:05:45 +0100 Subject: [PATCH 163/167] force tabix to overwrite --- modules.json | 3 ++- modules/nf-core/tabix/tabix/main.nf | 1 + modules/nf-core/tabix/tabix/tabix-tabix.diff | 23 ++++++++++++++++++++ 3 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 modules/nf-core/tabix/tabix/tabix-tabix.diff diff --git a/modules.json b/modules.json index 5639cfd0..ae6dc304 100644 --- a/modules.json +++ b/modules.json @@ -204,7 +204,8 @@ "tabix/tabix": { "branch": "master", "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", - "installed_by": ["modules"] + "installed_by": ["modules"], + "patch": "modules/nf-core/tabix/tabix/tabix-tabix.diff" }, "untar": { "branch": "master", diff --git a/modules/nf-core/tabix/tabix/main.nf b/modules/nf-core/tabix/tabix/main.nf index 13acd670..fd09383b 100644 --- a/modules/nf-core/tabix/tabix/main.nf +++ b/modules/nf-core/tabix/tabix/main.nf @@ -23,6 +23,7 @@ process TABIX_TABIX { """ tabix \\ --threads $task.cpus \\ + --force \\ $args \\ $tab diff --git a/modules/nf-core/tabix/tabix/tabix-tabix.diff b/modules/nf-core/tabix/tabix/tabix-tabix.diff new file mode 100644 index 00000000..135c80ce --- /dev/null +++ b/modules/nf-core/tabix/tabix/tabix-tabix.diff @@ -0,0 +1,23 @@ +Changes in module 'nf-core/tabix/tabix' +'modules/nf-core/tabix/tabix/environment.yml' is unchanged +'modules/nf-core/tabix/tabix/meta.yml' is unchanged +Changes in 'tabix/tabix/main.nf': +--- modules/nf-core/tabix/tabix/main.nf ++++ modules/nf-core/tabix/tabix/main.nf +@@ -23,6 +23,7 @@ + """ + tabix \\ + --threads $task.cpus \\ ++ --force \\ + $args \\ + $tab + + +'modules/nf-core/tabix/tabix/tests/main.nf.test.snap' is unchanged +'modules/nf-core/tabix/tabix/tests/tabix_bed.config' is unchanged +'modules/nf-core/tabix/tabix/tests/tags.yml' is unchanged +'modules/nf-core/tabix/tabix/tests/tabix_gff.config' is unchanged +'modules/nf-core/tabix/tabix/tests/tabix_vcf_tbi.config' is unchanged +'modules/nf-core/tabix/tabix/tests/main.nf.test' is unchanged +'modules/nf-core/tabix/tabix/tests/tabix_vcf_csi.config' is unchanged +************************************************************ From 523c7a960bff3b795d139d8cca9d97ee25846902 Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke <101190534+nvnieuwk@users.noreply.github.com> Date: Thu, 12 Dec 2024 14:56:41 +0100 Subject: [PATCH 164/167] add updio and automap to wes profile (#248) * add updio and automap to wes profile * update changelog --- CHANGELOG.md | 2 +- conf/wes.config | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5d11849d..70e12564 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -20,7 +20,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 5. Bumped the minimal Nextflow version to 24.10.0. 6. Added the somalier reports to the multiQC report. 7. Removed the `--output_suffix` parameter -8. Added some missing required paths to the `WES` and `seqplorer` profiles +8. Added some missing required parameters to the `WES` and `seqplorer` profiles ### Fixes diff --git a/conf/wes.config b/conf/wes.config index 9cbbee36..41e693c1 100644 --- a/conf/wes.config +++ b/conf/wes.config @@ -8,4 +8,6 @@ params { callers = "haplotypecaller" scatter_count = 8 roi = "${params.genomes_base}/Hsapiens/GRCh38/regions/CMGG_WES_analysis_ROI_v5.bed" + updio = true + automap = true } From ff80be29d290ccbd65e78be38ca4765b6ca7b397 Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Fri, 13 Dec 2024 16:43:14 +0100 Subject: [PATCH 165/167] update vcf2db --- modules.json | 2 +- modules/nf-core/vcf2db/environment.yml | 4 ++++ modules/nf-core/vcf2db/main.nf | 6 ++--- modules/nf-core/vcf2db/tests/main.nf.test | 4 ++-- .../nf-core/vcf2db/tests/main.nf.test.snap | 24 +++++++++---------- 5 files changed, 21 insertions(+), 19 deletions(-) diff --git a/modules.json b/modules.json index ae6dc304..36b21493 100644 --- a/modules.json +++ b/modules.json @@ -219,7 +219,7 @@ }, "vcf2db": { "branch": "master", - "git_sha": "2a1ee188cf232cabbc63891462a06c6b5a5f114b", + "git_sha": "439f05652b54826ff23f5baa505082d5d8587dd7", "installed_by": ["modules"], "patch": "modules/nf-core/vcf2db/vcf2db.diff" }, diff --git a/modules/nf-core/vcf2db/environment.yml b/modules/nf-core/vcf2db/environment.yml index 037e1530..01fc2793 100644 --- a/modules/nf-core/vcf2db/environment.yml +++ b/modules/nf-core/vcf2db/environment.yml @@ -6,6 +6,10 @@ channels: dependencies: # renovate: datasource=conda depName=conda-forge/python - conda-forge::python=2.7 + # renovate: datasource=conda depName=conda-forge/python-snappy + - conda-forge::python-snappy=0.5.4 + # renovate: datasource=conda depName=conda-forge/snappy + - conda-forge::snappy=1.1.8 # renovate: datasource=conda depName=bioconda/cyvcf2 - bioconda::cyvcf2=0.20.9 # renovate: datasource=conda depName=bioconda/vcf2db diff --git a/modules/nf-core/vcf2db/main.nf b/modules/nf-core/vcf2db/main.nf index ee7b5f98..ef0bc329 100644 --- a/modules/nf-core/vcf2db/main.nf +++ b/modules/nf-core/vcf2db/main.nf @@ -1,12 +1,12 @@ process VCF2DB { tag "$meta.id" - label 'process_single' + label 'process_medium' // 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://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/14/14d1257c98f789e23a888e2961673b5b98d89e4d03e6a3efba2b1134ed439f61/data': - 'community.wave.seqera.io/library/python_vcf2db:91f604106ada5cf2' }" + 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/30/3013992b36b50c203acfd01b000d37f3753aee640238f6dd39d5e47f58e54d98/data': + 'community.wave.seqera.io/library/python_python-snappy_snappy_cyvcf2_vcf2db:9c1d7f361187f21a' }" input: tuple val(meta), path(vcf), path(ped) diff --git a/modules/nf-core/vcf2db/tests/main.nf.test b/modules/nf-core/vcf2db/tests/main.nf.test index bc1dd176..9532b432 100644 --- a/modules/nf-core/vcf2db/tests/main.nf.test +++ b/modules/nf-core/vcf2db/tests/main.nf.test @@ -14,7 +14,7 @@ nextflow_process { process { """ input[0] = [ - [ id:'test', single_end:false, caller:"haplotypecaller" ], // meta map + [ id:'test', single_end:false ], // meta map file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/vcf/ped/justhusky_minimal.vcf.gz', checkIfExists: true), file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/vcf/ped/justhusky.ped', checkIfExists: true) ] @@ -43,7 +43,7 @@ nextflow_process { process { """ input[0] = [ - [ id:'test', single_end:false, caller:"haplotypecaller" ], // meta map + [ id:'test', single_end:false ], // meta map file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/vcf/ped/justhusky_minimal.vcf.gz', checkIfExists: true), file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/vcf/ped/justhusky.ped', checkIfExists: true) ] diff --git a/modules/nf-core/vcf2db/tests/main.nf.test.snap b/modules/nf-core/vcf2db/tests/main.nf.test.snap index 2454b614..5e29c6ba 100644 --- a/modules/nf-core/vcf2db/tests/main.nf.test.snap +++ b/modules/nf-core/vcf2db/tests/main.nf.test.snap @@ -6,10 +6,9 @@ [ { "id": "test", - "single_end": false, - "caller": "haplotypecaller" + "single_end": false }, - "test.haplotypecaller.db:md5,d41d8cd98f00b204e9800998ecf8427e" + "test.db:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "1": [ @@ -19,10 +18,9 @@ [ { "id": "test", - "single_end": false, - "caller": "haplotypecaller" + "single_end": false }, - "test.haplotypecaller.db:md5,d41d8cd98f00b204e9800998ecf8427e" + "test.db:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "versions": [ @@ -31,22 +29,22 @@ } ], "meta": { - "nf-test": "0.9.1", - "nextflow": "24.10.0" + "nf-test": "0.8.4", + "nextflow": "24.04.3" }, - "timestamp": "2024-11-19T14:40:53.107217359" + "timestamp": "2024-01-10T16:13:32.293507403" }, "homo_sapiens - vcf, ped": { "content": [ - "test.haplotypecaller.db", + "test.db", [ "versions.yml:md5,3d9eedf7998cb77b614736659eb22b1d" ] ], "meta": { - "nf-test": "0.9.1", - "nextflow": "24.10.0" + "nf-test": "0.8.4", + "nextflow": "24.04.3" }, - "timestamp": "2024-11-19T14:40:45.633504872" + "timestamp": "2024-08-06T10:27:06.932652" } } \ No newline at end of file From 719004f72e0457f57c68d8fab8ce1fb609eef553 Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Fri, 13 Dec 2024 16:47:07 +0100 Subject: [PATCH 166/167] Fix config to let the tests run correctly --- conf/modules.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conf/modules.config b/conf/modules.config index ddc376c2..138ba4f1 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -335,7 +335,7 @@ process { ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ - withName: "^.*VCF2DB\$" { + withName: "^.*:VCF2DB\$" { ext.prefix = { "${meta.id}.${meta.caller}" } ext.args = "--a-ok gnomAD_AC --a-ok gnomAD_Hom" } From e8451ab4cef52d84dbfa1ee6397d0f170e2ef0d0 Mon Sep 17 00:00:00 2001 From: Matthias De Smet <11850640+matthdsm@users.noreply.github.com> Date: Fri, 13 Dec 2024 19:38:43 +0100 Subject: [PATCH 167/167] set vcf32db to process_single --- modules/nf-core/vcf2db/main.nf | 2 +- modules/nf-core/vcf2db/vcf2db.diff | 87 ++---------------------------- 2 files changed, 5 insertions(+), 84 deletions(-) diff --git a/modules/nf-core/vcf2db/main.nf b/modules/nf-core/vcf2db/main.nf index ef0bc329..a23204b2 100644 --- a/modules/nf-core/vcf2db/main.nf +++ b/modules/nf-core/vcf2db/main.nf @@ -1,6 +1,6 @@ process VCF2DB { tag "$meta.id" - label 'process_medium' + label 'process_single' // WARN: Version information not provided by tool on CLI. Please update version string below when bumping container versions. conda "${moduleDir}/environment.yml" diff --git a/modules/nf-core/vcf2db/vcf2db.diff b/modules/nf-core/vcf2db/vcf2db.diff index 46aa314a..45757135 100644 --- a/modules/nf-core/vcf2db/vcf2db.diff +++ b/modules/nf-core/vcf2db/vcf2db.diff @@ -1,4 +1,6 @@ Changes in module 'nf-core/vcf2db' +'modules/nf-core/vcf2db/environment.yml' is unchanged +'modules/nf-core/vcf2db/meta.yml' is unchanged Changes in 'vcf2db/main.nf': --- modules/nf-core/vcf2db/main.nf +++ modules/nf-core/vcf2db/main.nf @@ -11,88 +13,7 @@ Changes in 'vcf2db/main.nf': // WARN: Version information not provided by tool on CLI. Please update version string below when bumping container versions. conda "${moduleDir}/environment.yml" -'modules/nf-core/vcf2db/environment.yml' is unchanged -'modules/nf-core/vcf2db/meta.yml' is unchanged +'modules/nf-core/vcf2db/tests/main.nf.test.snap' is unchanged 'modules/nf-core/vcf2db/tests/tags.yml' is unchanged -Changes in 'vcf2db/tests/main.nf.test': ---- modules/nf-core/vcf2db/tests/main.nf.test -+++ modules/nf-core/vcf2db/tests/main.nf.test -@@ -14,7 +14,7 @@ - process { - """ - input[0] = [ -- [ id:'test', single_end:false ], // meta map -+ [ id:'test', single_end:false, caller:"haplotypecaller" ], // meta map - file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/vcf/ped/justhusky_minimal.vcf.gz', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/vcf/ped/justhusky.ped', checkIfExists: true) - ] -@@ -43,7 +43,7 @@ - process { - """ - input[0] = [ -- [ id:'test', single_end:false ], // meta map -+ [ id:'test', single_end:false, caller:"haplotypecaller" ], // meta map - file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/vcf/ped/justhusky_minimal.vcf.gz', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/vcf/ped/justhusky.ped', checkIfExists: true) - ] - -Changes in 'vcf2db/tests/main.nf.test.snap': ---- modules/nf-core/vcf2db/tests/main.nf.test.snap -+++ modules/nf-core/vcf2db/tests/main.nf.test.snap -@@ -6,9 +6,10 @@ - [ - { - "id": "test", -- "single_end": false -+ "single_end": false, -+ "caller": "haplotypecaller" - }, -- "test.db:md5,d41d8cd98f00b204e9800998ecf8427e" -+ "test.haplotypecaller.db:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "1": [ -@@ -18,9 +19,10 @@ - [ - { - "id": "test", -- "single_end": false -+ "single_end": false, -+ "caller": "haplotypecaller" - }, -- "test.db:md5,d41d8cd98f00b204e9800998ecf8427e" -+ "test.haplotypecaller.db:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "versions": [ -@@ -29,22 +31,22 @@ - } - ], - "meta": { -- "nf-test": "0.8.4", -- "nextflow": "24.04.3" -+ "nf-test": "0.9.1", -+ "nextflow": "24.10.0" - }, -- "timestamp": "2024-01-10T16:13:32.293507403" -+ "timestamp": "2024-11-19T14:40:53.107217359" - }, - "homo_sapiens - vcf, ped": { - "content": [ -- "test.db", -+ "test.haplotypecaller.db", - [ - "versions.yml:md5,3d9eedf7998cb77b614736659eb22b1d" - ] - ], - "meta": { -- "nf-test": "0.8.4", -- "nextflow": "24.04.3" -+ "nf-test": "0.9.1", -+ "nextflow": "24.10.0" - }, -- "timestamp": "2024-08-06T10:27:06.932652" -+ "timestamp": "2024-11-19T14:40:45.633504872" - } - } +'modules/nf-core/vcf2db/tests/main.nf.test' is unchanged ************************************************************

    &8#TtEDZ51nD-?HV|(L7HapbfUSmXFmSv~=$* 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 hszK#kmar_HR6suSDxl@E}cOp59C60ueir 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 indexmosdepthCalibrateDragstrModelsamtools viewCalibrate-cram -> bamDragstrModelbcftoolsconcatbcftools filterHaplotypecallerHaplotypecallerbcftoolsstatsbcftools querydefine regionsmerge bedsintrafamilybedtools splitGenomicsDBImportGenotypeGVCFsbcftools concatvcfannoadd dbsnp idsextract samplesheetsamplesheetsamplesheetsamplesheetrtgtools pedfiltercreate ped headerssomalier relate somalierrelate bcftools annotateadd ped headerbcftools plugin scatterVEPbcftools concatbcftools sortvcfannovcf2dbLegendsLegendsMain flowBED flowPED flowProcessreportsMultiQCautomapBAM flowsamtools viewcram -> bamreportstbi From 1458805c609bbe4fe649fdbc6659ecf7151d8a38 Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Tue, 19 Nov 2024 14:42:20 +0100 Subject: [PATCH 129/167] fix tests --- modules/nf-core/vcf2db/tests/main.nf.test | 4 +- .../nf-core/vcf2db/tests/main.nf.test.snap | 24 ++--- modules/nf-core/vcf2db/vcf2db.diff | 87 ++++++++++++++++++- 3 files changed, 98 insertions(+), 17 deletions(-) diff --git a/modules/nf-core/vcf2db/tests/main.nf.test b/modules/nf-core/vcf2db/tests/main.nf.test index 9532b432..bc1dd176 100644 --- a/modules/nf-core/vcf2db/tests/main.nf.test +++ b/modules/nf-core/vcf2db/tests/main.nf.test @@ -14,7 +14,7 @@ nextflow_process { process { """ input[0] = [ - [ id:'test', single_end:false ], // meta map + [ id:'test', single_end:false, caller:"haplotypecaller" ], // meta map file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/vcf/ped/justhusky_minimal.vcf.gz', checkIfExists: true), file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/vcf/ped/justhusky.ped', checkIfExists: true) ] @@ -43,7 +43,7 @@ nextflow_process { process { """ input[0] = [ - [ id:'test', single_end:false ], // meta map + [ id:'test', single_end:false, caller:"haplotypecaller" ], // meta map file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/vcf/ped/justhusky_minimal.vcf.gz', checkIfExists: true), file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/vcf/ped/justhusky.ped', checkIfExists: true) ] diff --git a/modules/nf-core/vcf2db/tests/main.nf.test.snap b/modules/nf-core/vcf2db/tests/main.nf.test.snap index 5e29c6ba..2454b614 100644 --- a/modules/nf-core/vcf2db/tests/main.nf.test.snap +++ b/modules/nf-core/vcf2db/tests/main.nf.test.snap @@ -6,9 +6,10 @@ [ { "id": "test", - "single_end": false + "single_end": false, + "caller": "haplotypecaller" }, - "test.db:md5,d41d8cd98f00b204e9800998ecf8427e" + "test.haplotypecaller.db:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "1": [ @@ -18,9 +19,10 @@ [ { "id": "test", - "single_end": false + "single_end": false, + "caller": "haplotypecaller" }, - "test.db:md5,d41d8cd98f00b204e9800998ecf8427e" + "test.haplotypecaller.db:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "versions": [ @@ -29,22 +31,22 @@ } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.3" + "nf-test": "0.9.1", + "nextflow": "24.10.0" }, - "timestamp": "2024-01-10T16:13:32.293507403" + "timestamp": "2024-11-19T14:40:53.107217359" }, "homo_sapiens - vcf, ped": { "content": [ - "test.db", + "test.haplotypecaller.db", [ "versions.yml:md5,3d9eedf7998cb77b614736659eb22b1d" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.3" + "nf-test": "0.9.1", + "nextflow": "24.10.0" }, - "timestamp": "2024-08-06T10:27:06.932652" + "timestamp": "2024-11-19T14:40:45.633504872" } } \ No newline at end of file diff --git a/modules/nf-core/vcf2db/vcf2db.diff b/modules/nf-core/vcf2db/vcf2db.diff index 45757135..46aa314a 100644 --- a/modules/nf-core/vcf2db/vcf2db.diff +++ b/modules/nf-core/vcf2db/vcf2db.diff @@ -1,6 +1,4 @@ Changes in module 'nf-core/vcf2db' -'modules/nf-core/vcf2db/environment.yml' is unchanged -'modules/nf-core/vcf2db/meta.yml' is unchanged Changes in 'vcf2db/main.nf': --- modules/nf-core/vcf2db/main.nf +++ modules/nf-core/vcf2db/main.nf @@ -13,7 +11,88 @@ Changes in 'vcf2db/main.nf': // WARN: Version information not provided by tool on CLI. Please update version string below when bumping container versions. conda "${moduleDir}/environment.yml" -'modules/nf-core/vcf2db/tests/main.nf.test.snap' is unchanged +'modules/nf-core/vcf2db/environment.yml' is unchanged +'modules/nf-core/vcf2db/meta.yml' is unchanged 'modules/nf-core/vcf2db/tests/tags.yml' is unchanged -'modules/nf-core/vcf2db/tests/main.nf.test' is unchanged +Changes in 'vcf2db/tests/main.nf.test': +--- modules/nf-core/vcf2db/tests/main.nf.test ++++ modules/nf-core/vcf2db/tests/main.nf.test +@@ -14,7 +14,7 @@ + process { + """ + input[0] = [ +- [ id:'test', single_end:false ], // meta map ++ [ id:'test', single_end:false, caller:"haplotypecaller" ], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/vcf/ped/justhusky_minimal.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/vcf/ped/justhusky.ped', checkIfExists: true) + ] +@@ -43,7 +43,7 @@ + process { + """ + input[0] = [ +- [ id:'test', single_end:false ], // meta map ++ [ id:'test', single_end:false, caller:"haplotypecaller" ], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/vcf/ped/justhusky_minimal.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/vcf/ped/justhusky.ped', checkIfExists: true) + ] + +Changes in 'vcf2db/tests/main.nf.test.snap': +--- modules/nf-core/vcf2db/tests/main.nf.test.snap ++++ modules/nf-core/vcf2db/tests/main.nf.test.snap +@@ -6,9 +6,10 @@ + [ + { + "id": "test", +- "single_end": false ++ "single_end": false, ++ "caller": "haplotypecaller" + }, +- "test.db:md5,d41d8cd98f00b204e9800998ecf8427e" ++ "test.haplotypecaller.db:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ +@@ -18,9 +19,10 @@ + [ + { + "id": "test", +- "single_end": false ++ "single_end": false, ++ "caller": "haplotypecaller" + }, +- "test.db:md5,d41d8cd98f00b204e9800998ecf8427e" ++ "test.haplotypecaller.db:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ +@@ -29,22 +31,22 @@ + } + ], + "meta": { +- "nf-test": "0.8.4", +- "nextflow": "24.04.3" ++ "nf-test": "0.9.1", ++ "nextflow": "24.10.0" + }, +- "timestamp": "2024-01-10T16:13:32.293507403" ++ "timestamp": "2024-11-19T14:40:53.107217359" + }, + "homo_sapiens - vcf, ped": { + "content": [ +- "test.db", ++ "test.haplotypecaller.db", + [ + "versions.yml:md5,3d9eedf7998cb77b614736659eb22b1d" + ] + ], + "meta": { +- "nf-test": "0.8.4", +- "nextflow": "24.04.3" ++ "nf-test": "0.9.1", ++ "nextflow": "24.10.0" + }, +- "timestamp": "2024-08-06T10:27:06.932652" ++ "timestamp": "2024-11-19T14:40:45.633504872" + } + } ************************************************************ From 50e46d404aff27f9faa8dde4bfb0cd63bf10e3dd Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Tue, 19 Nov 2024 14:56:35 +0100 Subject: [PATCH 130/167] more metro map updates --- docs/images/germline_metro.png | Bin 319221 -> 321626 bytes docs/images/germline_metro.svg | 878 +++++++++++++++------------------ 2 files changed, 386 insertions(+), 492 deletions(-) diff --git a/docs/images/germline_metro.png b/docs/images/germline_metro.png index c9b923a47a8d3c80e27006d63f2374c1fee25be4..531cef3062a06c13a4f2b6753998af8734e7b6c5 100644 GIT binary patch literal 321626 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%0AgZPIs~?>Kcb828(lnEDs;V_fX@l-8 z&ACywWX#>zq}zd^2YOHH)otDZ!=oW7L=Ur;rxP+SO^&!Wr&nvGRWwXI^MQ{B9wt|f zz8N)Q_8Ufr9vi9s+KTL_Z8ASDHr6;o7v8onoq1J5d6d{^5xz9)B(}wzZ!)ltOu6{5 zY~1vHpHQ1b@&F_ZdGcnyqN?S*1Zk6*{jMsw?R92iPbI}B#1P(Ss>vJGO&e7+ZO8A~ z3$RHkJ>SbuV1aOYm}x~nsq0p;Br1LXJ@Zhu~G7a&mm6F_Nxul9>ucws81F<7zl#kJi#fp?_BfW z-oJ2gZ2hNHJ8W7NAGEY|){6)?81XBqxR0iqSy$)oz(c+>@0t8N-IZVG*;S3Ud~<#8 zmX}$6R3T_hGHdiv+y!O-`na#ctFC`6g*2km^ez(;%#AXG zV&{3=^CY88GM_#bmmt`UA-gL~?i;Y=pk!F=cxDj!Vd8G4ye`=pCI@k*gfJ4eD)H{! z)c3y<$U=|NDeC=IKR*A>GBdMYQc_xgc0^>Jg{z3SEYGT9u6f@6RN!Za>fEJb0~w!& zqMAJy3q2HnOQ@>8-mzhgwtx5drih^S*B7QnO&=c+pw)fO66%9Ne~j)`Fny)}IqI;F*%2?4Gim(Ln>~+j1Yys9h5FZbbni2SuaM0H?!;w~wW7 zJ-IMsjNRmog{A?Yx@JBUh_!&;k>BI4+V(zuOQcD}^=0F}dn{6C()Z!3W54DTdLDi% z30e63dA;c$fOR05?+6d@)7P)2;Yza4rqBt%wLKiD05aQ~*$!a0kjo$)CAf~QDmEBj z zqjc<`xQn36ruv@COig=oh^d=_jteP(__0(glaUt*@d@7~X!?;twe&?Ae?7@FcKjpk z^qvA9=8SuLxUDv%Fw8u~6RM<~hTpl6CrWjqPS|L7!sDsfixIWjAF`6qDfNbSV)h&eLzFOUFRUD zoFeQpQ)Bi+4#wAya`}F^vhUs*_wP3R)o&pBC_6ca-jp1Xp#$m=mDqeY+uu@C&Hd-4 z1l^xkBea`K6mN^s4glot-C-Zqf|OT zsYw_f%rm}>{}(*Pfsto-z~`ni2g4WbAcOdv6kq;54i1S#KwC7?B3DxqQ~$Nyx397H z(r%2ZMIL2>FaV1WN^2^Y!`1p&1_4@Xkuu4q1C|~9L8)0CeITDK_ z`SJ{wQ^~-4DiUiYiYtzdxcQ#JKi=L82~Of0<6OdHJwT}K{*&I(FhDw;CA9Z(6g=bB*8B~@DCq$^*Fe3KWmmbKVY8x?ueq0c()6$M` zJR)4TN>b<#7F=|~s}Q?`&0sJ=6Df@mDB>OXo5@w`?p+`KuX<*~xV$*x_Nc&DxRa5h$2sq>G>vr$n3{Z6K&8K>F z=_0hCv>w924`2vu5q?LTDN}A+SY~Er$peQ0eRz0zfE|q(KfXIBnZRzYtg5K!Mxh|u zZS0f*nyi+}mhG4>h%b!Uxcwav{LBh@)py!%1VvEyN8kWLyncCW!xD58y88O5G;R#O zf|^N5JQSpo>Hk0pP8`o`ZBB)-v&zp099dIiCR&4j{d7R{8R+JO8+UPbZt2}8;gr#? z0U53f119Y8y8a+_z|8nPr5oPQs7tzSpM2xn%o?5Zes7vC7mRIdb1N|_-nCAC#*Vu6 zKAX#%zXtUXm$$&_UdiRGaVe`Si_WDt?QNbCZRKy7cW#JIYOlG8(|x-Y-n;3PBw0}H zvoLE}mRiofyp=f~B~Q0~HCZ`ARZ(Z=qvcU~#a{|s4(ZgJPT5{u^yY`rEv3J;!-*3` z6`4<89n`;YFxMh3(8X_By{8?_xY36Uz1PUD)%El9W3Fr&_A@_Vb~_Kr*Hnw+qmzS! z*PY1&v7~~kZufVXDlQdu1vbeb3%-#@ZBP39`{!%6 zzN<~faNoH7M(RdN5Rx z&e8?#f)^TGx_eFjQ#V&Dr~2>LMp+w3jyPmrwc*-0g}n5GH@74{_~x-@y^6G8R`~kA zHg8#Y@T`1Ym$4CVf^zKEzCH2HVcN#-5@V8<&vwx1t*T${HE~&Mm>iU^GUC#7oQzCO zO2jms3dq+`bWdfYl`B735#eC*vl(dz-XEG-#IuBl4a z(0ccwPsY~bR$MgWu#9}_60xLiO`j54|I%YY$7rl~(g;$oWm>{T5vWd5U?nUB&gz zgmXjJm;Ia-pVQ86eAu&)QIc_X&iwi5q` zopGBQuyXf}we@;-_^RA2*ci0>;p4Y=jkfD`n5(waZH)b>ly>p*v-gbGTa>p=(nHQU zTu!bHs}oaC_ucMuDk)(0`4e_wQ=|(L&5i%mN6_Yo|xwUDjZx2NQWp}hRM<$May!@(VWr@y;@wcmz;29MHw z!*Kv3Bk$TX@Yc12?3{P{jjBn5m!C=Vde*P2 zt@8nm-40si=emV0kLWEO**AG;?x0go;}7+oJlHcK`q=VLl?DoKLPkkVzHW%yzp{Bz zxBS=RXsUx=^xLv~yi$Vow8OPVPx6*;{k}qa#z{@tDU(`0e5rBr+&C;SOu4)=ZR{a? z1vo4DvD>XVrL89}Wr_A#56w>7lE=<`k(2Lcr_|HVQsTx7&38J>-l{5Ettiq|sOY$P zg8E4X*MGkg{Nxg6MDu9JHO8IwKSY{;+qwFY=bO%_D;q~i>UFA|`s~uo3*>=wI|uv& z`kNwk?F>7O80xvRo664Hv*O)?hXs9=eD0qktA6*+p`NF-ZI=1^X^j5&X;#a;yX)Gs zC`zH?$kpdop7RrjYsBoZ+>x%39TgDPr>k0XMyTe|BbE)fHmn7jg|?L^fU?f-^DP4N>&S*1}za&A{Q9Vj9l6X1Q>kAUZ!?mPiXM#XqqKR zJ%YZcd~)8u?r%i1kIXc_M2|VH*Vij9niJnJJM4(xjJjU_QSTl@=4=&(dl^= ziq(HA^NPHYjPnSDC;^sGRg_NC3)}a17V9rC2{$@MUCu5Uk)0)=3<3H{Kyp}awau+D zD6c#>tJ~03np4!(S6$5e__6tNrkM$yJ+xM^?s?*1hx)*7eAfK(FQDRuwBDi6};30!US4LPJ`@I)Tr1VW$UR2g+{R_=iYX7?{ zuja+V&#?DaFu(Km{4zmSuFG;nVX(R#KN)Wln}K|+FNvCmDYH#Z z=mWYsi?|9tJ4?;(!}y`bVj?DXMQ~)_C+zXiXs$a*)g|o?OZ_Tc8_SwKI3^zaz34TM zI#f4M)#a9xkhK;!*RBwI84(9;-LWHu))b5#8t0zM)c%Azr9s6=M>en~fWbJm9^0O@ zseDq<8O>*+7Uus{?7xG;%d?|orVtW-goFeupbgZ#UQ_3S-Uvd6y}h}ut^1K99R=a~ z-Md#963{qUDqCS+RTd+(Y(n>f7y@d$Xhb;7q-GsUSW(wcimgD9KZPWNxfqi>)@T*+ z872)X?xE2%i#F!OrSptd_%Lz4690KmT+^0uoQ@@&{+z~zPZ`NNoOE{^xpoB0#*j2I$C*fQCh)SwQ^8kPqRR-c#L4940AfS2#UB9G^E-3yt= zp7Eb!*>c!n^7duNG#(x4(05v^4+v#d_E|5YY~>BJyO+amN|hQ83m9J5Z)l|Ti;la~ zGgUQs#t<|bULfh=NkUaR$ud$XnnyHM_(~P?Xs}jRhyl@ixG6xf`PrYkc#6OBNRu)d3!}WTK1c$#0+U zUkXJ5UXi!V@V?q3Sn&oYiGo@?-Y&JJcoJnZvr8m4bE5Jh@=#rh0VZ6NGM^wqLzy?OqdfkQOBJ2lXF1a5iS?EApJ6}X2v}lV zAy-KqK8ei})q8*@&U$*Ty*0AmM7_aiANwfOEu^a`SiA7z!ZfhtZ_HqDC0@fY^6QT2 z9uoqZz6t{;!Rk>!1|5K@N*@9RnsI0}G|qeeipM{yOfPP0?natM5jHg94fVi2`M8bCITbW)ZTyfdjZ6f zqfl@92Fj%v4;484?#4`V={rsobHr2mO3XMF+{8q`F3Y(&NG?@MyO2P?w9z&{I#oew z8mbS*RL}SVx!Z>Y1qRwP|7tTp&3i5&rLzo2w@Te9C-+<=RC)K0UR7 zTJSc$3W%;#F_782SWWi=-emPM+-u#FdO*Z_e|M*_0tzok6JHw?hbVq6ZK5Z*$GFeAk+vjhlC^=zKGWPxg#%IZn3Z85`g?WSfi4~D$lIe`rV|(vf zyY|Z4v|kPZpJuE-Dvwdh`}Zq8IyKq`3}1ZV>{(6RA~20Gy1k`c!mo#2%4$;sASc+o z13qQkFgN5CRu{8&&S>G}31TQX3eVygvTb29GKeS{@!lJg3CQo;Rex*fCwPxS0M= z1R@Ec$KU{zf@awG)A@!UOMf`@mcfZ>*3bPGJ8#Ji_ww~VbfE1FX?Gp{bI3z|d6@&< zzrBx-$#!sEO?2%wbm&61Cb%UCRzFAeYxQ2S2#)9pP4NmjK}<}6Rn9B6@$>L_gbEym zZS372`F;Bk8n^Tw2!{l~*n{fn}*TZVLPCxZ;vy zjoICu6${^~M(!zgpTcDyU4HtI#PFID?VoZ|f2}8!lUSkKhs{cbwcyB%q$4GD1-tyEDj-SNWOuhV$ zdtA5>(d<<5`z9KE_}CwcHXglsN2xYR^~7jBh8$+`cCy19|MX%G(@wH?G9?J&+M8?B zdxLuEaDtCtwB|nQXm9BnF=6NQA!7C1yKWI$6+5?-{(0%Q+`b|s;bHo-heJRARve2{ zCa=A1`vQ6JB5Eo?0KuKGNe=uNGtD*G`SbJ1<1%kNtkR9yTU~q2G|A8Q-R*6~4b>w1 zNE9ib4Up>mP(S2#bXr-VT&IdFA0>iIG&(l#Yu-3k#jdRvrF60eT&J@7hUk4+t8i*q z`MOZ;OlxOy>S&+>B!m1bj<5yTgZyK{vzdFU){=2-J+Cd6a%C>>r8sR5r1%}vhX9z) zdSDaxFruz&swnORkZxe0RKMo#?N9oJjRz`C)+&VlT5(6gt+1;exhvMKnP#L_4`nBl~k%|`1QRtbL#I0$9s%)6Da7m>KWBHrSb zMXbWI$hbFo!2_2V?UxZhH9&uZ|5Dx5bJQwAecI3v;_oz4AvBC(vif7K8IX_{p87L&%pL`bw%{{+U;a_d7cBVvQt|Zuu9qizs@W&E}zJe7q z4SNf}_66SNFE@`LXtR(3*=nbHS%cG34eTz+EjeuxVSKxa?H}`p{1)8@bfO@cmz?$7 z6!Q&It3K>zvgu*_4CHyKGpMAcAYGhbDiFUn(xJY}W}ELrOOWOJs8U@Hc0e`tKae~HyF)qrgzjS=<;ZviInS>r24B*Oz8n~3K(&* zcx}qvRdq39mnED+^30>JUkDOnUtpy9_}1?Gko}HTL#jv8o0=3YsyF=JtbDq)YCS6T zF~jBs3^b2%xjo8YhJ2wQP}Y;YsJ7=UK^mm`_>hQP8@9$P3yEjQt8IxdcD-VoR_wei zX8fjcn+DQKwEe^qt+mL71-{Ps0J#4c%LDb4`=(`OE&BVH+gg@?5Xy%ofeZsJC91of zURKFYe-T`;P0khAeCK!GLDb2MSml#p439q-YrBAFdjsZ!jTqe6Ys)W?y)Gd(C+=ZP z83v+D)z1Xkj#)i%_iD}P72Dnqrek1Y(78vCj-OKduPz}ej{+ISL-$4^a9J4{=HKBIRyOa&8^vX*CK zdS~n9hPNy4UgBP?lb1*@)`w2FkJNhMERQ-8tqsZ(zd`sgwYEF2E6eGdjK$WTJ##JgK--QVxo zYkEDyNQad;uzM8xN7T^o)jbuxNKl}H#Q&Ot9zTY{Vwz;;zMBbi zjP46ylF;RsE?&IIvg|J4Fcus~hKH|^A$8~`trc(gxqq%dC!bp@483kG8^q-?USD216sE=@DQR21h5;N_81^60Z^*M)b|S=;zm|Q{C!yb<|3BHQ&u*^15bi1F?r(5^9`;9L+t> zf6jy5RvbV0$4rXo!2|iIXj#F& zx1BaMC{A$5sLYP+>hTZNq~l(E#`Xgp_fe_qYPMUqJUEqH20kxmdw6@RTVyNhB!BT= z388deMrBik(*Qs;GoC^5%Qo*Zx7f`~nv zBe`SxhfycLKR}mtivQxmhw;u)6O!r<@aG=Bz6}FL?wbgK=ax;b8_VR9|Bn)+*(v5< zNidH+7M;6xRoTFSj!t(=YmDVfdT37lW$)pESeSFQnD}d0-J^47G5$SeyY9=uPMteH zc>VeuIqBS+Dez12cN!USM58mR=k({#uVQNU|Kih{-mI{rh^cEcI+Ygov z1fjWhcG2mv1etR-;}ch9adJc%P6I=psQMn0RrL9@Rh%=Z9ar@WGkhaJPBdU=E?s(# zt0UyB3%V^N2A)VNf6ag1{eLC=*XjmC*>uPgWH!M}Fk+k~;soD?p|{Xv_Ej{RIAc5z z4Bd-Z3oF_vlxZ|5%I}tjyt=uiK%L4dY(=~>fm?<{gPl-^?t@J&Sdez+eUjsHM-BWl zKe0*)6P?}z2AGz_AXO-2{RIh35}ZtAE5U`SNu&+p<`t9V8D<$ot(wV_iPdWtppv#G ztN_0XxCtb0F0u^?rk|=aT43%Ar4=qGl*+8o)HE`z7)$po~Y(cx*d;>KGK#2U`RBC0>lD;yGfh0zX5pn5geX z#`AVh&}xp_bpN>@dfXnsj=%M~}w_qSEx zHZ0*AgizCKN8~EH6#e)SiOObBbzXUO1~aH&9+GsTJQdzLPP*LhBd)Ha35}|5H+kq8 zY(JKoWfr%|?3fZa&!mkfK(<1b+V2zDj)Z?NhR!}G%wlc4(qr;$Vl(K_^c#RYR^5b8 zQ|~9*8d-Vyw35Gze3Z56wTucps1^H-UlGc)TeWT1E^zL|x2r>5jfM+)Iequb2M=cF zCpq5Beos;{lqd~4rEZ9E(Ulsq&&Fd}Uv;<67&Rx}ep+CP|DC$J=oOsQJKn)8S`}giXA&{DFfF86BDe`+UkLBc=37-Q*S!AIIW}S z&wxqbMLw0CGG!@$da9_f@G=62F@y#iu_Saff?+)XB`?mZf?J>h;G-TDf~RC(MFkf- z_NvFWz@L)BH#wNqI2owP`)V)tBx8)Bwz6q~KXYzCv7pY#6u^h@#C`!&h&g*|KkV*1 zYoNNroy9FJOoilNYe20=Tc<-o1CLs71%PC?gvPYUa}{l?X-~oWXtcOh`~G zh3TS)%UEAV$bSa&fz|6iwOhxD(Oa>?FHpe^@>P`BpsIhgUk!|wK)UceRFyjIcYajRRO5}>6`0X10Iv8P}zqw#(_ z!q4BLTHhcuy{@rWaP9Bevdx)IcB{;eD7Idi6peGO$w#UF*P|ZC7fk$kuj)DpMf-Z( z*rp`_>ZK4uoTtT!FYA&WE;ckP(y!=gX&qWz0D+;s0YmhhwKn(<7}DgWK6*3WZ(W6O6;=L#*atf?`1N5^`V%Tnsvf7QfgLqZkYqTvU&H#j%e zEHDl*T>B<~xtZfYY3cCmaVS#8DLrN%Wz3klJEvc?ShMCbcVMn9US)>tqxR&V@E8VG zPf>fyBR^-KMK6$=k)bzGb(8noT{KzZN=``pb5^&7SE}ez1qm|DmP&W2#JZ}Ibh*Dv zubEz!$l&Vb#32|^a8YJ8ZtvoKy<6vnJf)-Z{(fSnb}AhneCV=R#VrYy9j0Hr{=^B; zfmw^^)YaS_@U_Qzd9_JJLM;qxQpj}zh>{RQKM4flZ8|{~0To;aQy&J#)AbJ2siWZz z1IZXSZh_g%MOQ+Xz%=MYLt}k?o8U1SXD?iMN^P^@MZkXDY=2Rz5kCdPUP@cgIrFXk zQ5B^U7pXGkwrS38Gs1;-z=NP(`Jm%418DX^Nr&BvgU9{CRYF`ypvM!7_d)dL&JjyP zZ2@WFnN$+e46plDYV0b{2|EZ(OElB@0ks5DEXzmZ={Z2+2%$l*zU5eN_I`)znCo{T zW&O{1=Z0?~Sgri#@V>j!l9=`MmwIGmq>qNP)3GdJeJK*-&_n-D+1~&4LUcH)dTl@S zpsvR0%`AGY?wQmznJ`!^7-~WVKg-1#JY)#bOD7^%km9&;+mO4k6mozI*}*r{1AvcH zxA^5ou95`S2k);q^R;G$DK7WdaK0pH)KqF7Yl8}B8eKE(<*qZw%1VxFN$lyrWlP1# zFDg=dM*o~S&|<89TU0COm`+tb>@vYS#h$Mm5MVc5N@gIdPyi%w@##A)1oc!yBfnXg z12G^F3x}|pj*J|KAdpxkXISw*{t<=X2B2m3O=u^{KiYok#EB9rED4>?&jT$4!a^wc zuR{mvRQcA2!j#tI-(x8U=|n#+mMJ?h+zMVMyWz$4l`~j=02*TZvoVPoq9|XnkGlv! ztQ)C7VsO8A@8067iD&@p3d-(1N*E^Jjnvlc5o%6wPwx4$XtLtQYc-tMuHSf}$_OzSANh1>A_35iA} zeur!Kah>?<+4P~phYDWi+=$$^?Z<2hS>O{WXMoBZX_Ru~z&3+5oCY(*vdO#N?LM4% z3H$QM+bF$Op1BE~v6sTUTc1ly!?IdAf#P_y7s*9yAiS=^54#IW-KTsENIT*_wI zr_R-&MfZ-M4O!Z_;m6pUTVo&GO`5blEh+Wusy@TMI`JyR-rMu5oqVV)3%)LcRm~gG zITjDKSOQ3Ki*g>*Pl*K$7s?|PBnupChZx*7K6W^zAn~1l8`h2M!C@rb{P&4|c-HLb z>=!0}{Fii7FfZluG801r2lNj8+`x`;h^M)0gGM~&YMfVm3}j2IAo%-~c1zz?@102k zBhtJC{s}PeJKB47d)lpZY;@t%Mf$#9uxL?7$+O|X$Aa(Fjy_~R5d$3@;WQn8eEBjL z$?VgKtyJ2h(ek2FRhYwXx1X{t?Lpc~+gH}5m)}2|TW)^rs-KB%)Upqy`ztJ`E|30Y zc2t7KE1~h{J(q30!|7Ng2CF-GGe?T}LBVKEOd`Zi*6m;rYh%n7m3ef4j8%=^ky10r zqo{Pp?kbPnKVrl#9LxYKBgJ;)N&9Lx@z$O(;mg_AmX*F9wBZrDcOH_Ba0e%lY&D8Ndpm(El(RcO{gOh(NB} zOcq;u4{>JW#yEHdjID6E%vR90%hwqB@t1#c9q_Lo;fT_?`OLL z965Smk03@G(vxkps5q!J3V~{t_OW#JFo38pXqE}h4do6@B*pNRx>^YXOaw4Qp()cV zl)+CqH51wF%?R5S-4|hZl7IlD-LD#TzK&fKRE~qV9K-TtM0fJy0dKC3a;{{6gw>AriWOoZR26Jqh((&>WddNZ$JKvn()dvAIC30-rDkPC&lz&H*swT!3f_ za|j-RLshywV^oP3*UTn~ITvgbAMh<^O-+;rm|s09nPj(fC#ihAc$rf^+8?BMLf!ii zR&(yS@2*QD;?NueCyN21AiaXqGyf1nIz*7sd#i1P6KGISP=h+akXu9q)uvWc;zbST zk22HhUoFz`TCCCvkrwI3txeT~gH>N~HOhT&_V=Q$+gtm@b^4Zmeq+xz^9mngNXtj5 zdb=@72|9Uzxp4t8Af2mz2U*c%n;e72-DNq)s6>@G&=7brFyCW#Z`U~H{c`D#`Q*Zd z(y6)LT4+h7{8rL=X`-@O5oqHEC41BCeSAIzpOfO)QCy%d$n5!~SghU>#010zl5Gf%7Mj4(*{Pk#@{ z5{Te-?20?5iLYXe1H>t~VaPwH>|MkU6>)Ltsy(j2LgDXzTppf1jf6N^X%G0fp!Q$@ zq~{>_50gIXe6n3fXZcB!B2t_txZ7XON!N7`RLEG}Z9%6IDF^oz9vS~#U$H(}?QhSX zTC*NaX?dAQZz*Om2%PI08ho!c-&+b|4aEZLiy?E%-d`3Wd14q(Ssk(b(fo2wvNg7z zLS0A_MGGd}$SL=Abal4l#UpkeaMGwqM9qR6_*o71O|s-RY`9`gGmE!=c|HVi{-Ka5 zz?cQCvT9iqsUS%=ihzM%IVASL-o-F_(9XyK($c?$ze_sqL95L7hr`6Cm*Wf&JnL50 z&6vKUP9f$?^X(L;A#Y;~|K2Xx+qKtBAF-_tT;C=K^QT%PC;5!G3`F$fc1~Dv=SJ62 z!uI6Q9gR6UCl!tD?4E_Mo7&W}ZK>>;R%E(|&;`B4-?glnVQy`%@FOi*@${v#-?leg zCkeXiN}_G9sesc|H<^Yf!7Lsdx2!sd7q?{Xx*rcw5zr8h-&tf7k?T9NC3-3ix%>k=k_V&ELi7s=r^JCnIp0J>qT>ksv!cYu zTX1wJvQ_}z(Gdy$3IkRlp3TqiyJyRz`~-uoS2vO@bmz}6<_;ASSjZbf3Z=5%;O5*} zfQ~Vg^K95Y7N`I;;=&q+;*t`hqDcyaTcrf}6Oe~k_eN{IfEWzJy)$3t+@#rJXjz$a zy5x!|qBUWfgSayF^kf!tv@syB9GTo%%zbewQ@amSUjS&w*BKuz%sVKG<-km#G8Cjfzs<)? zYA731{r=rU4#_}*DS*qYpzP2elu@H5PJAKb(^)Ls!Lw%(;rn=E#h9oBLko-E!{y~e zQq)^7wsZg13@E=pVsg#fDu-m7*zDE2_~!K`zr#%LoS$Iz>(v8XFFRG%Vg@xbDCLTm zSKo?+-`xR8<-vvkCxnNjMEmx^+^5G7f3DYP?D%?G*Wx9&iPFZB=7ZQezbR(Kq)8ra z+I1KpE4Q3Y0FVIyQ7w?Wi;DH$?k;X_j-(e5)%Z8XLx_Ie?xTmA&sh;n7e=vV)qs*> zjLF<8Hx3l(os81J0R!gU+x6oP%Xo;PrSLAaKThIPF|??Th2+P5Q)!U2TEk{G76NCBKzr|T07P+~DA|so&jXPu?O^uOMSJWja zPJosC+U1UaGbd#k(8^A}DHeJNFCP49Si+oo-2E}PcRK|zVdTI2d_`fuOZ?G(EVf zukONyS7Djz6jQ>5H9H}13ED`}VA#il#osniN>d+GNp%m(BT^7w2BvP?GW!yJ<>go3 z-27r_>=UYAwCJ3kevE;iqI1?IBw*~#; zY;rTMNXOC4WtTJm7OIzxa4>arO(YmmqmI0@>xXatKCFyhqJBkL7yi6O$PD=-+%eoJ zOcRu{{?ox8Zu&bQ_qRUv0((aOodbV-ejx9^a2;jCm9j}UYIcudpvZs1!9*xG6#Ny9g z-mL=*cXYH9GsVo&z(6f6J^dKwRn>13$MkGN>!)`j=vPe@I|E*khInT}xx$j!2W^fE9~Z&!7MFNWWxpaNstRVVI$;u=>XNgjz~<+Unls@MTftA0)OH${$^2k#$XL)=ipUPahC&cMKkoT*vC&>yHs;o? z5+NfF{{^o=oAI}BOOTaK{oa_I2MO5p?vBxvl`1wlouFQDNua<9YKo5I{Ft39|Gl+Y z;;o7Ix1WFQC^G}`1gaOL5Nld2E1nnIWVC3wByVm^(v28tW}z3Sdvvz$qz)cCyXGGm zsGRA2)6w=(*FKM5PJCjrc7Wx^=x5%BuV=s3ik@q@ShvxxqTuQTbG0M(%p7)V z=&5}gctQEqPOBYR@!Jfx{kGt@5#iw$l;gsq4=W$V-R~hllil}2R$6iIB_1ayu`Ggt z-f10Q4(FbIALj41ggr^GC3W_StlrQ0WHxrvAEb#idb5+FsarA*{jYN;6s|lY)`^U3q z&$ht`5f=Br!&-0>*d>H4&=qX?6Av>GC!PkZiF$f{`}$R+EHO>vU2SXlvjK~C$+TQt z*5E{Q6R`%Jf2*I21ZM2Vem;m;5<0(VY!r6gl8l{PVfsHPC>TcYe^`AA+fL?$f_bXt z=#5OSK_mi!APONQN#5@7?e*Dhg$|N7*f4CPRd3LnT$y7Fe5T21X&J3M-2Ps%e@Ru| zh;}ZYF3oxIYJ=Tma^0WL^arQGM0uhN0uy)k{=wumg%9gmyYlXi2Q;!7wo6zC&4em} zZG=1~R^UWz?O&OJFaIHgft_kU<*p4^mh94{@_YUy;o`^s6V}Ncii_LTS8G1M<4VHi zQE4OjuO9AAZf|=a>Cz=bN4pXkK3*?lY1VsEDvw_2%##&MQaQ2O_f|o9gXq|eLcC{g z3$r@K@2t@43tx#JY^456?+UwyVC&v46B~-@#%_GtTqVBENlRX9Xus2?eMe}FAL6Pz z?Q~M+kw5F&$doA>DCM|>@9&UvVSvf|&b<~7@dV@JY+FF>nuxg!{X6%PyVx%NLnPDR zqonU#gDd<{Eu+5PeljD&XEUHYYUG%)DO0UjE6DtCkjZIUvmpE@%PYjzRNk;Aa`qj%Eqq~c)Pt(;hYWLh<;}p#Gemq8p zA8{NSK~Jvyal627&VM7rf8%s;93JR!*3e@-^%##pRyuW~!c^JxrYFTd8wU1YxUgLR z2onP>En}B--I0Md{d)G4U^yL*WC_L^WMaf2;Su7uTk$|M4P9dmF03T_4$D)Mo{d; zh70nGT^d);ofdn0H@$x!Hhf9zqqku4A_U3^KuS*v^H_lg8L?=jYz(76PR=8^0i`FO zkwq9NI+WZ0->*Ner{8f_>Aqi|+ALVG;E=x<=A`c-u>OLj6hIBhoA3X8DU(y#FZ=o^ z`z+Wo0VlJ?uST?y0BBH1`2%ezXI@vaamr$Vx`VxY%B*!%;AbAD2!{7foIHd3cu0tq zcsMKfXOd)>Mw4|CyXj=(YpoBFFMljOec3`qFV<-3*YVK3oJ8~@!L_5}O8I}-dhf6v z`#1joD!Z(fJ(Dz0%ARRa8I`Drgv{FtH%ba6Wwt0nMISu0 zA9gvqeV;yKRvGr`bJ}(St+s}Mz$xKPQXX;>+AT3bVxe>Q2jx^yZ*a8zFKe%6q-Y@+ zNwje((^nP(%G&yGX4V6#BT-wjwnj#-;6pQ={`Z)>4cx!0TKr~7IRQ)>yQmVE!!z=P zLacR{rKA{Pc$aB%O5o;ZnP$hFpaZ}mR1`GcBkK(s(U09D=wlLVF{?Lf740|LIyxiA z{F6i^fUb$jaF<=Fsg-x_AZrH=+1gu&{i{**MeNY z7t=_zv?6`pHez@I2Pj`za^c{qY%aI%zr^6oC`NB^rvDfvt{>h0{af)`@f-)S42=IF zab_6>)|E+SMC+ZuapTk4Yg_U70JPJjoFktS(E&U2q8%CbvYoMSiqwVR&BrOJ`7$t# zXD2b1IMrX=m6>p;>vzt7!unf8A~}Q@6nlF9I>xWnhH^muF0rayTf+YRV`pt)lho_b zK_5!@=37cX5(L|$)dW@agmzoLK>)QaK5x_pq=&f_4TD&gZb-6{Q6lE z|5+pUPc~6=N;=$)TenuQy~YvJH*sP$GNEMPJe$A$w~0J*kB2DM3JJ90%sJ0ND|->` z%;%zPt)%h?nE{zMT-m;CE|cldrp1h#J41`zNH@gG7s_AQ0c0!R83_~~KAX?%mP4kF zxVt%$Z{5&;9R0uG1&*0Z{ZYrL@$3aQ#ljPHY8U0#1R3borOPt7b~+w8?)VyTg*9e&ffF4@BCqs{B0~4}$p6(y5>^loUY}nw(B<2gj=*`3o+` z2cG!$>a}Z)#!dm3Vec_Tgqv`UCvLrf2E9`YnF|9cP!G{2A1DO|?Yb3ft6|HQolfmy zy*dp5Th0P@l&j|>M0l52&hp%JdOc6i`OQ+-3zQfLNTQ5gzgGqX%f_}B#Mw_yI5JuYFa%pCw=NcMx)uOFUPYHbuP zA7BahUT_GM-s9AKyRN;D_D#zF7T0xJMDe)XNoKGc+EQo1FZcZN@y@(W1$$ld)jIhP zv9bBNW;_uKZbv4sEj|MuXT?=8?M*FqNKGZNTMvi3an;+5o_9Dod2q?%Z*bIQ?;M^% z1B?yXRHAUU6lYUhbDAM-XL&Ew7g92vo5C+R+LFOY|4 zpm^p~goJtSE!b1YP1e+m1P_6GU%@-XeGKEfh)izJo)@XUY?yKy0z5r~8Ff26sm>&` zrjjp#$VI3h`_iO$WZ9Z;-n_u~%0FPeBwoqLnzmhf(Iv@hV3D?qYYN!fa!1uEh~Sm9)g^Wk198yIzO{golE@On?RAq-i+z zj~&~RKUK@I@8<5jxjc{;$McDRC%A)+O2Rpk_wJQrK<10krkkXUiRf7?Eb=-e zZQ~CsF!utk>bK}&W|qZwc4CkdTc`|{rHZoTnal7iXirkCP!$|K75&Q=k_32gX9rVWp4n+gPjZtUH%q!$A13zpld2>f( z#mjkj3cA>|3w3B!*QF7GvT27S28^Lmd9r}jOI;-S@rfZJ(T3EqAkUFo+TS4MG4D$! z+0I`SZjM|qgkvBmpV;4G>_DF~^z7VyU(KZGYwP4Ta@ONB?vvNhZ!twy=ketW7nDGQ z*l80dw$syBIh&KCMt`$$#)ysFfhA#4VE z7wv6hHh%j4y>n?Rv8(|FG1kt8-YO6Ip}2S1@)Nfn@Z6g6>$v^p7$zuE_SBwXH+syN z)f-zFy!B(Cqjhkoo#L})xXQ&Dqeki5>@e@tv7^zq7Tm4x9I7%EkNQ}`(XaaQKU#01 zk4-*dhJ|^BwB6`_nz|qwjC{3rZ}_{+b;(^P~Q{xP24HjeT{nq$1*5 zYlqn_klu{gGh(ogp@08SYuz5@2NIj;?0=M;Jk(uJv(E3IUx&*)K{+`#T+LxWg;Jv_ znZt7<@T0KX0sAz+{rhgdwNiCFxlE(YxYSQ~f;J@@UQFFva^Q*1{@6WNVCNV&wH}-8 zQ^G5iut;ANZJc{qJcMAwA4yt%I%^xnVebU*tr1`L6~~^&u0bK-8l@F?j`evm>h<-{ zcfR%V9C>%jDBotKdm--Hh7Y#h{ub%|K`%o%3=apk=!r5jBA zf7M#-vd^YppX9wMo5l>%k1S+!kkO#*2Qm>btku(vVh#OFt2;Q!x$wz@9^x#899%Uy z#$_Wd($iPl18hMpWWa^j-GR)Q`Lvn+XRy0$J`|^mNItUu=n%E9pKEXTFEsrOJR9Cs z^Yen}VPS@&zuvfX$#(uvc9E>Xms}@y4BbC}3p+VrqI%|4bSZ@pTs|{%Zn1;Bdz{{! z;U^%(&3G0<8GG&60L}mWSY#xh!+e14S#KSWUVF0FzH$o0OD&FL#}UTA+bu+796ZxL zU>Ied1=n|DxO?+UXV%>eebd8k^xN03y+Gm0VCm)(kjqQfj^Tjp^OA}!x&btYQgb0< za~t=RO)aM9+zGM2Hoj}sK-*-jDN$*P1+vxH5qU=Cv>!Fj8}9yQ)i@;E&C*`U_`dV0&~{66!3t7q?E z^{U@m(O%Oo_-#k3VS!9Ir&pXh)th=Fgnix%@YQlFvmEkUz2|9;_B!za?+@~p5j|gi z_%P0^;-=jlDlw^Uc!WI}vMxlx!J(iD!TBh%W%f1v^K!=2_(b~MX-~vBLjhPDO$~sxGjkS?jor>9hb@ znXdzWeQV60e){T_YoYID{>E8qm_m+l^p&Dpxr~g*W&x}vBSJd(wyCSgNN4_noP|z{ zU%zb&#&c?Qc6RTVtS06cEJxAmWv;)C?ik&Z#GDsj9iTxxmNtAeuR#cU=&OC>DHCn=O$Y z8LP(v0i?S?DHZ&MrE%{5{j`EIvgA$4ghSUS4X6~hL^;^JoqK#n{;odUmp<0A9sUx*CUTN2-w2D( z+oNyJ6$iCMX#}cNyOB0;3Xtx(Ten6O7F&Bq54*Xs=ltS^i2k3Pysk+Vxyg9mf(0W_ z-fa&?+ln!i*3>i7;YPvDd%?Vuk2gNnA%J2+g~l_BHf1g2kC3d?g<=feyLWGa_9t}H zUX;vLRBt*};*zUzy+)KgZECP|1L>~s?4SIz zPVl|PkyI$8fY1%wY?%&_#>~iSiDUgpqZXJ+-JADas&kM#l{1f{#<5@+v3EAb^}IJZ|KPo~UDLeBu%j<0Q4u2WGRhBFa0{?z*9S&{)D;k<`{yoHkSx3)r=zq@ zFbzS>F}l&eQ>S{^TnD0>F7AWO#vb^tn!&K{098$-eMh~Q8+Ugmvz7w_Dt+>29X)pJ zB4l@Nx~mlN{J-Fj3yF;vwt+?Xl!w3^3j}YgBNh%8^x_65bJ`ckD776!o?M_noeM#d z_5~>K=h_NAu-rTrnpo1Jf^f zD$x=O1q)hRh95(*Z^)jM81m2?&Au+dEY;%67AAq*NMuIVicD9#Bxe-;O+dTuQU9Yc zSOIz`$L5Xv{L5gv!QSJgox(PNU%JkFPsZ)B_p=g!t({8(d!RBRl6V;!mYewkQp|qk zRyMaq|MG>w15!VvJGDB{%RSc}y)Th-Srtg9c93dvFEe0(47TBy(!E=B-QUb$SZxgO z^^kk?lKujmnA!5`06ILx{RZUhKhurdv2UoW3xN9SEu|#2`21?* z1746kl8kFyYy63?2Kk*JfgU+T_vSQB!A_e?g!Sh}HVJ&N+ zI3xOZ3vDL`QScJj>{z8DP;c?W6DFL@Hrr#(c+*z$HsnV4VJf=qV@(aG_j=)jO-Zc2 zx_v-vcn2BDL8L62(L59#c@G{Y)oa0u+Cx*TFkmuMeGV)m5 z@#92X_ASam@VM8-k4`Z7mc4^H`SN{2bUE1sKZTrkpWKp)Y>}UzvCbHb_3CZYT*D7P zBXTZ?EkA3l$&-}_4s`Bc@$QJv+cPLA6NiS4^PW9>JtGC|T_(?(HSXo@hdhVpl-L5& znLg@8TgmyM`33+{yZ203@W8^lWHcj@^^C>Et7@+u68lH$cs0Z zDXomLa&x=H=4I2>|Fmw{@Ba|qT2WF%s};36p0PHf-Y@&qy<=sLFlAQQ)LR31JUk~F zGgacH1c;*A;U2HXKhdsZ$GXBy6x(~>Rp~%g^Z=+lbb2i7Un0%`Cju#NIJxpr0kA#l zSj$h?uu3Woz?S@qk!A?NCY}Yh#n*56$2Y5>^noX`2E}xq9>eXYWi+b)u1Bbk> z#S!kcQco`%ZzDs26t&8FM~@$0X|1c#-LLxZfEAY`7IY#yiTo)U7(~=oXb!V&qJ2*e zVlzF~e9$n>J7%yAGDRLGlJ$-@td<+3{Q{kxEXdpI(g(r5XbPAlayo15$ObKX211L= zs6PyZQX2v>ek#su*VnfsxgaB*ge{7G*OA5Wo;I?Z!o!N9o62htIDGED=1l&;8z+SV z$`p;3xGQGte{_gOzPX~k?j1_}kRke7GtW%*_70|aV~BZOnFhuwm+|9ebLHX=y;saQ zL02Xw1|Co1alVI3k1oCJTyoengY%<%CB0rCdTE&tCln}PI7YX#3D(G3*wmO z$Y!3G84%$0E7z52WO9;WI=27T3$PSkevfm0t#%xb7^a0Uh5Lyn15eJ=PAL2X++VhYa6U?n9sVl4L zy5`!GW0luudA41mGl~8lx7sQO+iDg7-ADrQE~^ClyI9xb1_ZR?Kxwr9(6>{Z{GU-_ zXYZe4Z(X84I;OjAznMEW*WYpNrsJJOJN^YUB-5`ZU?SV(h*@JPvX!$SN*IvZN6`Z` zLG6-ytic}P40v%Vgz9r#r8V?pZ4kK zPjHK^UH$_t7u5g=SS>*3ES_uhti6ojLtiNBb)65|!>o7idvaz|{`}gN?nzo}U%)2R z#>){#|1kl3m0(9SGy(^Mv`~V%&fPit5@j^6fQ$+j7FoiNZrr(Zk%M9`StDY*Vf0gE zvSi9AfRLPaVcm0Ss|IpVAHtnR6LtRL#iUavAyQQ;!Wwt8&DE*!t?vpIb(oXKh-wDr$FPqAF)LX~HAj@;R4@ZA;9H0>=_7 z4PKwMOo_8VE$~;>AcOY2CV7WS3xKcA?Q4~d3|v29j#V7z_&H{WvoGshnlfuveW?Z7 z&#^y%p4G{vKN=irdoM_A!5Ey}+-gGti6K4)j>DspxnNED`F53kgL}Gaoj<%BG)oPr zfqDxTd{dj)Ubdp)x{=wFy0xsXkr#0P;IAiz+bgE1C^z3(4mSVN)<3pE=qV$Yy4~U@ z#H)m+R6n=9qs{e8TaAj>uCkBoxu9n5sB%}gREJmVVt)S@HJuyAPx7qhy?r{GnIAFQ zS32f~e(~GahIcx!IcVI`HR?UxG0&-5$CE!ep5!OJV*0C``>csSKPA_mU$J8c_3iNb z?c0P<|BEw@jvgK3YSp#sKkuw955u}-*!1TGYBS@;+?n5`>fgK6ANE$Czg6{<*z8<5 zf9hCJ$K40tt!S2Vr*Z8+ALZ1|OB5L^Uo_T6*cV$&d&8nqz)iGC5;`1&v4Bj=}?T}9m z>pZy&a+`cN%m$RJOZ)*^+`+ zZfVookKbEu!Rcp3OoDs6xo+g2kNN%F_j~cWf-`5--cC#2Yy7B#eCV-No0IByjT>TG zm|Lgp?Y$>AwiYDrvikd#Rh2bOd!4yiQFL^cZsKU$N4GRX*0)$T`Et-3&-vfg z*R6VjW=1ue-Dvr!?wfig(|c?Gz2inzGLB9=^DZ3RWrf*Eeo}noM*i=o8{5;Le=q+@ zV+f1k?~l{kKk}zPA2Yprj|+eX{3Ibh6tE1%QKAnsgnyEb(@k54zjepEh3p>ZCpkA& z`{3QiyhLT(KN+F7qg_A0t59F`VPTzVGj@a@YFEEkrGDE^?T_uUYOkAkVm$mP$ZB~P zQ&S6C(?i5@K^jCod`z{V8Co5^Yo{ZOb@2*RiHCkc;1H=@G=*ohdxb(yzw z4l=gF4)~W4H&3>K6W6xNL@+cK zJDTb0C02$l{}j0)sc-6Q(>EQDwHh1moH;J|8`fGGeg|$`O@T@H1m7$}WGO90QOHc( zeFxuTf`aa@-tE}4P>~vPS_XTh!??<}B%|jTmWE=1*@5j+<^f3xuidO!Gh(bRv+YZ= zwA%9?e_(JStCA5dNxox$AbbW_rO0`3Q8sc)LmdrfbL zfRCe+A|e%r_XT4}U6q4deU+TVjPM1fSwZ#faT=$Gs=~hvLTloM$)Sv?5;=W2sQqP@ z2o|IUJcq_D)nRtGZEJ<{Zw?0Wq-RUH+f*s*hWGzr9TlU;!|)v=>uMz9)%(IMwE|`E z+q-mKt9~*;PVimM&1mhGd8c38jNa>Z{AOmB@7Uf8FOO%zgQ}o6)=(-3Z;8Z zfPY27&()0T!uz-bZ4jEwhK(AnM5rsuDW1(G&hj9Qc<{qA?s*|VC{oje_h2Z@lc)~O z0Q5iBAd^ASVz-hhfQ(XbHd@LTPI*+dKXl865`eLJ(z}bhEK2evr7Yt%DUJ$H!rSxbV!7sk|0g#hQ2$ zD~@pmLmV8eaR0!7h`JWGYtQ_jvdf*Wss`$TE6e3jh#U7kuy^ljhKY^`{t|tv{A$FJ za&i3U5T;FK{mTm=RtxC8kR#Q_qXDKgk;PC^4#b3iC8-SJ3{K00+7<)zo{ z$#!YLh~!o#|6gC3=43SwBq!QIPgBM}gWsHkSr)r@0&5ZQ(i+rWW-*cut?-D?Q}62> z=n{*Lhy%S%+qMb4I|r{?_1Kcod@@f0<^EF_$s9~jSxGuuf;Q9V8`IL}^43uLt2KX0 zT_V4|jN+QZYV6B2v_v!wCS+g@)Q@c2rHh8(zVr+1n9kn$0(^n*C9p>}8L;$>;{gCK zXlV+Vp;2xN7A~a5wxS3NeD>c`un$xJ^7%}jlv>;3b4^Qj705z!IXg7ct^O$J=;-NL zVm;E>v*^GME&b&i+~+_>3c?=ofCxamup?`f9^yb0`nlvcO`0}s+pXKkGMPmHn-fBp zo5&?G;8f=hz5k3)ADv&8oIPJTS2-`5dF%nrw(c$XeL#+zJ=#58qZ7)tPdZ{G>xzztVbB z%t__SIfPQT#>|=T%__E_Y5edUNK?k-4w@cU2%Z){8~Y3}hUG^)#7mf_7rK!Eie}7013WPM6r4 zrM>~*Knuit`c>TKXUMcIFohWXI%S`G<%%L2V8gz%&>zrAw_|_?M~RTA*g1prCS^y> zqA`c1lgzU7eAnRTRR?V8}vrlrqx~*Sx1{~F-)-bQB zeERug9`BCJqHUNt>SW8rJJ)-cu3oLn4tr53pM@Qnp#g2a$=DOW=8O*d4#`L+D9}az z1eoU7Ioh6JMjsibHT$*+ML`^5PDPc-=wpT-?5__4ROLg&O|rjzoh3Q{eoTB)4+uD05TrH zW;`rdfw7!8J?4z=p>fABY4&kq?91BjI;FwJkaitHlZUbWpJQQzN`)iPE-V<<_Ia>a>u*+;mPO?N zB=$)iiw2O}i@m}%=0Pp(;Yq-nA)7Ykk0~8)UD@)@hq3V!ri>9vGNOFf?1JOSH3S?4 z+*MJ4Qz&+QV69p+(oes}jhGl)K;CJzAtTEG;jtlF8I9 zGk$(?P%id~9**)8w4HM!E_o>1X~Ka6>qzBb-0RSLLp^lE1&QTeTho#6p0CBKIyiLM z!ws>qBfa{axYm+CeZXZqOWkQJsadP>ve$Xrsb;NOs8>)7C;q1bm6KBt?m{Ti(GU4= zZ`{3m3H0$GerQl66-BfyDTpvdnUQuJU7z2Mc^US!fzVlprd}SQ$dGob^^(y?ms}p{ z5o%-u5hGgRQlKsaBO@8^ER%^ybFQvP&nT)b#etcbl z+S7b$U_!fqw7Vu-ozx`ga4s_TsHppkJk*egvBajwHG56(sqj*dhw@QQK8D@RW44B! zZpu8i)wX&aD8`AJn<$Z4iX_&0rJS(VHC$+4D%#&35!UFZUymJvlt~((>0?GS>!`r- zU;bG%^>;GOkngnF6t{#rGU?lJYwPIC&}R2K?g~Osi;^d(LH{xZ;8-JP9x^ldxiu~O z953jP6S6iClStE)8w4&$U5Aid=hAbOzaq_@Qa4KOGw7~huW1umDn9w%7#aZniSQEK z4TF^pr>G1b1NinRTydU|8{y4F)Mx#IYATDro{*GOqgJhuKP~Yo8(qHzUAoc^b*6lR zWC292t_Yevf z>dkQs3`X7dSDc6+dc*bF+kX%IPYdu&#o(+QO!Xm2wf_AKUbi+I`CN-$KGp`QVQc5G zC_;HXgwsg8uygI&dSY)_0I>Vwf$MkO-_xgmsrFQ7EAWN~7(AUoxRjI?2 z(hbHV=8t2;;V1Dy)vAh=jfiXp_~&Yhu!N9KwJ%qEd)s035Kj#>JuJmDcNh1V`Jg%o z_0;LpvjE-jTytn({c&{g{_02*x*&o# zhj%lmlv4K+^+0fG&aCNQPnCavznZ+_1m<}&{@Nin)GmHe&M|Tel82y?@7ndK^Mvs1 zNm=EalhRLJgB_J0r^R++Trtv?m8#WAt6U~k;egCjA z?CpW5Ch~=PoXVqln0RT;vapf^g9qPY+$r{-8!Kh;5)uv`UTDXETFPtyGI&k+4&0= zJUQw4_g25TFzu1G%WlI5;ipUHf82Z*<2rk})q#RPgu(2Bk05-guti#S!|9H$Q&9C+eCQ0$Y(TwpsWNWo{N2-ZJ zYf@)4ZX%&1Y4q7n2(#Imbzvv`0Ypx0Rinuw?k#8KsuVk_JVGwl$bPeg@l){+MysFg*#bcr`*AcsGmp-pvD052$5ZI7xkXf-1Swurt zBv@!7wED;<|69U$M(lk}%>M7a#2qfDvzhqmd+MkBgmza}+gUl;cMrSywQa7ks*9du z-iVNt@S3;Z*E>|a`hHCBPwL6ZpVIy!H|fo*uF`9C&E7YBx`b?8o#v>YYqH#WXbppI zDTlrL@b3R{R3u+Ixv)}MoVFOh(W159SF8S7uwJv2ZY@>+e2MTYC!N|Er4O%v?$3jl zO`_Sk|GmTfnLD-ROaA>yww?1IfZOOcuhv%>oZPnSQ;fD*aorQCFaP%kQd(6(UV-)_ z{EPb;oPB*|gyV>c%FNBf$u$V|tgw7EDzoMe5c!;g430z=Tj%3Q7Z<^YMAC=IAtmM6 ze>cd@JVc}5Q-N~G9Lzycq?e%k3Z6(U4Bs5Wh!LOxlId6EuS=s^VF_7LpJPR)acl>cfl{5^2Q$nzc;0F)&3vCeJZ>P=BL4&M6p1f|d z>$$z}z@Z^dQ)(PFw`|^SLDHLMO`D2nPYG*ni9&b+ppBHpqJyGT=Y?POKs4yohH4cO zvT3{p#Sufp8^kXvdBNw*B@<1cBnnn>p#~%0GS>Ns9x5Ig4}r~jSFTaznS$q05eP<@ zINCBjq5qd=Z^nNfzWUIdbCyf`%;@bh;AnLhJ)Iup#2LB{*d-j1}~d%Eb{E7c5v{yhh?~7nKxi2sd|X!Hnd+t0PYUhXf)B<0rWt_gl)1J8Up5Z zrwwtcw62z*Zg`#ClU~VK?s$q~MysU#H`D$tLsHPpuVm*tj|K%aMgloa5#5+Qlkgow~c0`H}KF4KrLmg`MI>kLUE$YX$=JritKEG^BE}J$BdX zG;U#c*JB>I2>$;WqX7ynEnv9~Gj^cVW$!V3H$3)RYtN+p`|BxOrIC5BANt}fV4p%t!P=1F z%lf6~>Dsj`BGQ%8MogbR9rpda=p%@@Fnq*Ed^BAr4~K>31zM>D@=J~SU1!^D8<`D5 z{n7rtD~%Y1)X9L#4AYjUkMi$S74jz9M18{^Y4Le;1R$zN+js3bee$HBTeQiEr})(+ z9}1zY*ta%^uV3!h^h$c%@^@OpH_Yo?XK@c_rq#GLI);O>PeJusXM6lSR{BgLTGs>p0*@lNviP zr>!6G^3)h>mp$E&^~lP#>|cHHh)yNZmC?Ov+a*WzQ-36oG+t-f_hmN}MaO}m6gvE9 zf6r%UP1|~uUMF}S=+1MVbWfk6+MPW!>IzE(9+Nn9u~9BC&nN2R@sykQj!x5}*k36^ zE-`ci7=7lHyE3%mUp5Fw#|@uO&Hq8UG>3FziL{7rWh`fYE5VfR1Y#USrPoNJxHyxI z_nG`>WPR`Vj@l0cw4vxjwr_8}`=o|b(%eOBi<+fx1tgHnSC?IT_S8XiS@z>c0?A-L zGwIdE5pVErHr0_&b~Zi|G3|eZ{}qoR$7?ORIsMVaIX-3=C@wB;LxkAdp@MHd*E5S!m%31lohg+bJAq=is=h5Ak*S?ue1T)6ucb=5_THPLF{TCg>vHsl(xycZh5h zvTmPIFGB!W^Sg3~teT8Q0iiK5D5Qu57vEzAZHSEA@dwTt=p;2_-r1K>t}4S1~% zNt{$ZNm$cnl<#6$x`N*->Nm&eL4uWRTYdiMePPtqOGsb)A)>MdOREq&ZX!+$kCA##Z5J`h7TWKTWC4D!^r z7hg)g*Y4!o^A+}iQ&<57Kyi2fV)cYO9tOZUu`nxGO)Jvkv#l!BiGXCs|GA$y=g~o0 zI9;}(!&WGEs;sF`O{69sa{uKst;K1sN~%$f8Vc*JX21?WONI;4?489kV` zt@ab0v?2;%WSs|Awk!X5pLuE+9y_`AU-W4_dakjr>&*nmwO!w8t(>#ybUWWC{-lLm zCJ!lE6Me_8)_$ce8{IjUQLn7&DeYI<%h{Dq1J^d&k$A{vVxMLc z2mNzsV#h2I*8+4{s!WE{5pSeBJ zU>!Y&fQw2Xsf5uEb))|S=bnq8PYDFtkx6f=4>6H)tu=gJkah_*RncMV(MQCdzPop* z8aP;_yM8NnGkP*FJeTeNPZ!#kWmOW260E(RKFC%bQdw46>$a_vh8ct`I8_BDSZ=3Y zc1b4CiJaD|iX@$Fj_b?Vc1#?|=5%z_J+_VY;3YhV07B@**f02U|1MW+YtMR|fBl_4 zc%R~gmx)g~U7DpNqw4JJ+MS2P0a$jVVjNCd^w5F4O9>q*m;g|0xat9?1OBXvM3c3( zp55pnYD+NqKq_l)L@%um4SSyh=aP{t?qDcHGbb}+%>5z1!atpqbR@J7FD1QAq0pV4X{!4lyq3MucNu5}24KL&y zTtzz%7i)Q+TR!JSj*bk6z&58ShuqeX*K=j-q85!ChY-Bo2FE_Ij6kOF_LCkI4NHM= z$-N`KrzcE**HPMp50>j?i+tH`AEP`46=$AA68Q~FR zD#aeAiHaKiKU2S_W@MzxYhp81_~JI~1CqfYk}X9NN<@1{LZzzGam?`{`d#iLU!=K` zQXfAHRaiBJxIkU>(X@*?n%jUqtXP@B6==}J(^XjgBdtO!z$X>uD48*eIFDm5OyX4( z-vZye9=%C5MP#q+9VFRSSFXl%u^K!i%vx7?bSm!yQjHbKi>1r-TlU{8=su~-@*?c98r<%nrJV67E4WrYnGQ0ksLfC90T1N z@Bo!7b{%bOZ7p@f&tlwgYgNEXpfbwVD~7L)N5JSYW9rn}4kw1k^=um%uj(^-u>Gc` zt$X=Y=lt8aXEsHG>2sNcyUG1G26+>&R7+5OG@7Cr2MK9>DGpo@dv*ObQ+AC<;u}nU(_gHlju7@4?n@C{ zEVF|(c}J3&g(!oSi(1&0K=58Uv+>MF?^*nZ!9#{z;9JU&Mx|Gst1y&mp_h4C)H}?1 zc>jKOd#@yXt%fJwonlo1mD-+ba4d+e;_1_;ZAMH+?JN}DgC^FVd!PE19`etBto!iT zKacBL^{csY;Gd`Cd19H>AOM}TEC2c(pS^O_f$ToPg;(uTO2CeSFX(MBw{qGXw*>VO z{;mxX5xPfa7xFnplj}E%x>_ziS7}J*Z0#}kKA!5fy_(Y8QQY@k{Ka~5>)e7;14Bbx zP40t-y&OAX>voo-dbS;B0dRRD2aq_f5CjRtF{$;<*wxO|xKT5>v%H&FYRj7?(KX4O ztwMi8gWqh(2}rLM5k=nK=dJ~sP+ckfTY zDzHuskZ+{#VlC^%sgV&8v_E1*?--PWOQF@Q(U z>6NqUo<@etAWe0NR$yu6k>(f2Os9Jv%?6}R)C{%eMCv%|;qbLj;6GlDhTJO~x4G=9 z-)yIkFL?TE*vIPRzj^b<6fGF%C#QJOmjb_yjW$6Vd)$X30Gb&2&ikv)VsLMdSb*6* zC4Z%CB}t!;&Ppj^B2>G1)BrOI{lW)VM+D27yK=Nng9ep}T}JL7J#upQDPCRhNn3(O z$8>SK(Jw9aYsR*p48f}hyC!Q@7!UmNIUNUn$FP99R{gzX-DZ`7kgy6n&p%V(lX>Y( zep{=6Svd;BV}4v#1mSopSW%f7W8pA5y zLB_e|*bnCe$7L)Dr9W2BNAc0w?Dujy4$q!(wH48k!K@dK)(w|Dcf}_n5&@MZi9(SF ztN+9{Ut?W(MY{j5@?%3$BCt9jn{DqzuHoKb@q@y_a!k5GAgBnBnU~v z=Hx0ANdt>4_>`>ovZXxftWu=7BE=zj66yOo@Yjj7we6erC>_{^ean_Zjj2Wch1#!C zu+<4YNOLKm5dsxbGCBnn#SYfX;=pA0$uXO8w`0O}fKj;%O%O9<>RZPQHKkW>1j+i& zla^%uE;nYp_A-jJi8MxT$ENE@XMnjgVJLvU+WYhT-ZMW3Z%s#V;^e_qDsr>z`3%Tav$l+_$++cp* zw6uSOWSi5Ut%ROYtM$03L#bZ{FdHI?L=KiY^XEs+c>Cs!kt-UM{^mC}o-bG)~Wdy__4PPN8Ch01ZD@$H;@u7|9V|NeECB1zLUD zk#o>^2zOAm7(@=ajp!Ri=cI@!!A!7fR6ikm2ARJgriOE`d21%-UythXjN2X2 z8=Ld!(XYsIICl9lYM^WPc;d8Bqh*v3>JDk|-@S8Wa+@T2P!kgY(TrN1McH;?nE8ey z3!n2X(Fz9fLI^YfH%bLD2(UKzU*l2xEHJ?+@o=0!u9>Y_wdyR~b3;Tb9nbwcf4=pR z$(0Lz-?8N##J?&5J;-j*{{sxvz#=qhV~1DYaT5s`(x6pe3xpmiuBq!#+MGqF{vke= z=TT?(A_@CL@z^ggu4w>v&XWvl!(FP;x^)9GjPQ&}-~)EZi%TCXbEqAO#&lb?hm%HP z)Zk#Dpw(lKOX0(6`NS_m>ZL>ZLvtU@wb@NI$GsIhWeZ7% zbX#ru_Vws#lg<@k%?m0xBF0@AyafL+s>a4O2yfq{`gJ3C zYtDnORsDin>C57*mcSG&+n&8!<9}KJ-r;H-G`S}NfU?MK-?*re{@)8-JVD@`HImB0 zYiDwB92R6!Pcf)!{1q$E7}XwAO?xK=g!n)<%|l$dN1dTJaQ;E>eRc|KC{wjYxCpQk zE6udaN-?8=v}JES{A&;BQz%RdjKNVCmUN=YZZi<&t{OoyZput$HG&{DY6RvZe|=idh`a-3^Eyvv)1@?h#PWRAxsj$#elbzUPpc~ zrcqqqtc`T*U-A`Sgb0gdh9NqHF<2@b>D%vI2UH3~W^6fjY7a z^0s%gf6-FW$UAZA@#9v!)s(-NC}qDq3OQ^_<1Q*}@U{%cAnTI-;eAW1N6d;^*u=9_ z_(gY%z5a(DOrJUx#cj2$1*nC%$hm}BOH@$+VIf2O*ym`g65afb4GgZ7)Kl1egpt3r zzBN9Q22_s;0hPaPzJqbMLnw$aRL9TUk84UCp5XXcrJ;uZYHBy37HQ5C?VfaZG~4Gq z)h|3u^+E6XXTh*BDCb;&U22~In*r;90?#wUzf;NqE+Ww*1S-sX~R86mI*0p+6!C~ zCZ&Y-nx$UomT9#(WQetO(vVaC^y${^+v>G>$hlE@>M&VMh7*9tsQq)A*3{a@MnxeU zUxGW7vuqx#j7EN`H0?w;k1Ksq_ua|{8|z#Ko!>o>9EqP!|IQZPB(5nU@57s-PyuxQwPwIfs1NE zGgHl6g7#PqL5Y~_jLUOzFoj7xsH|Eu=1l|w7-mONC`(Ema?ywxnZ#egAXywBeK7vQ z#MKukD7|XEiqe05cs2scwBB&4%xa(&rv4 z#69S`y6&*8r)+TF{P@@mSEZME=dm6hB3O}?2!ADKAD=A|Lf}ixkEsD_Vthx!M3W~} z*_c!tc9^XDewfR$Z((=#DhIrqG<0fD2el@-xLEh$v}x0`&c^#TwYH9$=X)HpM%tQA zj~*VTWJ`LGN>)l>ocEi>cDXxeD)F%LQ|}#Y%R>K5KZ9@Hix?xtM{^Uc1!F7CWGV1$ ztVWJJ_W!%tiE0)R+tx;zYs`7`xaFO%dUn^g_Y2XByx;@9@m6Qa$Npzr4|F~}wiYV$ znO}m;xayx0w#O|FN=sY3r$Yz26%_>ny_ngSLmqLOtH?yijfNljnqW6lj)3)gz5W-@ zLT05&EGr;dR!0Y(bIO@2PC(J#yJz6une~cY^DiI&Z%ptP%Ej>@4>y`ja9@`PDdc*w z#fF`m7HWH%*zEtZF5ZHIjGS5#x5n?=w?>@iCxd>D_(miY@Sq#1WB3pBJAUL9k!<5O znxPU$8SBU3m@qCb3)?MlQOsXe{7hn;6yQVNSsHG#Lf-3tNGMFGk4A$MUkKc z&g4bk-!-M17RC?MA%U$RsnrhXS&4xX7Zk6+%8-y+l((Ys=)0t>A;%)(uwz&Iv2s@e zIPp4~0$(S1aJI8q^hAh=ER5-`xz6iFj$+hEN)w~nHHLa8&o{kb64~MDvt9uO>3)rO zUyED$^7gJ5Et~OrFNgXkEBT1q%q?A~ITt;SN*n%Y7P=Ec%R70nCG5a^fip_FxS&bn z=b`{R#|Z{SZ1%$5-u~c;6Pw2D>PHF1`N>cg@eK{6-3CV!&oyHFoNuWx-IPK+QdQc6 z@IB3Y&S`@Rn;`wMZ;tep#r{mgPEXTrajk*YC7qi4Ea`o%e?3JRY<6+5`}c-}N?T;b z{h0T8`%-O}K1DyhPCi=DrN!HY2G<=!GmKnS56rv%XID^LXD(m2VfbNH?bFSkg)AG; zW`z54qiY2-BzIfxN9wcG_ifld5+=_KoZrbJFR!+)jniV0NXSpg#W`ZbvuUT=HK1@! z)$e2tx~<#x2~>?j&G&R~D;uCWf3qqb%b&kw(|b;t0pDfyKlzV7S4`;8A#LB5KcB|` z=G2h&^7qH3bCqy_o4`+^&$)hFY>xZn={0YD46rCa-*Zyt@PXei*IlJ$-qzVEF!8vW zc1nsxT1NMAZhfo0S!nQa&R=PieZ46#rqPj9iWBj-_v|^TTmKKWtwuX`HS=sg@Mo85 z4ISFp<=T#NF*0ivVErZ5waKmLgW#Aag0pQHtoNd2|34*S-ju53>NTLDUUVl?xX_Y^ zZ;c)M&W}S~T1EnG$qFq~xBY8WEO}8SdRU40N&McDi-5ald%RqBRPGr`G?96kSiqJShbd-283JdhDR-IXzh6f;voyP_vF&DPi=YS9Q@eclM8ItQ(#Tk5?a^HGp(A1zj)<&U&BF=MG_O*NW03FfM;f z#joqb!Q1ALj1X(aANBY{2z2^f24YpMW?f3qT19VY-3cri^Q`~hH5q0$r?@uzTI2h( zu7CgU#?9LuM{W1GJG4Y+Fy4GpYc|BVI5{n2b7OyMs~I|nVn-mJGBSxfzglH{f@W3i z`h!Q0(r+B60o~v*MD;AYSbsyJ4s^q7i`<Rwbv_tzD~g z018Vm2Gpxl8-0zeZPc2^IMUd>M~};(5&idi0uPE==D<&YjI4wOt(tBirhY{a1Fb@Vkt!~o0~eEN1Kpt2Q0+Or(OZ5yq2Ix=~v&=qip z?R`7*X7%*@-jQ{^Att6a2Pp(aHKL`gX;;D?U58?mT8v6=V8=!~xF%j;E3hFahQOtL z=UqR~7%@rIRV=6}L^aR;oPAVl^+hgb`J6{EI7pM^}=S{(%V9#gd%H?BpV zPvI#FSjQ0~vEN)}WoZU4eqIk-OY7|nr*KxaC@TkbY!4h@ z=1tma1mH^cBSE(iEFBm!=C#02;FZ?SaMnxSsthJqtUVN{@xfMslMpLrEyBv?y6kz{ z$&-U0X9k#Pd5#*jaT3u&ntZ9W?;KN_F!Oe!M{mB`FYO^9nc53L%Z+fJI!$(yBOHFc zx3RH<869Tm^5vEp{>YdHBSQ)P&S4ipSLZ;zSM(r-9AJoUS36tVl{fnL>o<1Se;l29 z;GSmJlMha*XYoaF)I~ZvI^J(=bi)xMC0@xN?ZJiC1ADi;KgL+%{?`b{TdJ?fNGXKP@|lVX`}LE*S1*hDL_9=)=+{!YT4#*K{Q7 zqW*^huLT;eG#pme`6~N0V!`^WE>0j8RpPX1|EzI8B_Ptt4yjCm=7-$rC~;DdcC0-7~%zG=~=XfA>)oD65&h*yEH5r~_O{`~#>O@WCQm40Z6sd^3g`!njT zvL}_lI}}XBGXlVo2tuO-it7!Lw$e~jb2)OQ^LOryoZ4DTs~TWGU^w5%gNPP34zA(9*2?atSGA0s?pL7ThpYADx!+>yz0Szk_-cf zWkJIPaTsGhrM@y=R5A>Ifjd!KqE7<1W<(+=yG%55?9ga6<8zcwo%ZW)e=h+?ADL#{ z_Q>ps9v&^ozcB0=Dx(DeFm-PaC!LD4rJ9O_hBCCJh9Ytpd@0$bLEm_1Ctw?3h?>=? zQH>B893(#-?Tlm3MVId0mGKYSAF|Vz49L_=ICN-kc_bb!)a0skh z5qnhv=d_r#fLw`rym8puK?(tjYpw3zOs8);h9tXM!g?WKImU2lE+=(OASsIbr8mt% z0~2%T7ZaVkPrOvOt%^XiFlJ(mQphzwwa-JYA9F%nT$+I7s zc>FXKc|vWbcorA%J0wJ&P``1L_0gsD7d8vVT-_U`#${Be5;!exDeg?jV7=wmx&uXk z%g7ly+;;^4|A>_@ORY|uS5scHX?QQ)m4TTJh#`w}=QD)8bc>>u93i7TL|x=FYW?6| zefm7-v=QtDjAaE{1*PHA){3-AUPV{JxBo1VH~-zYe_tDZJ#976Wu!~kqYj%EXhk1B zQ!5vmV{qBH-bbD??ZZ<165yC$Y$k@ST4i9m>rDR5dp=K?YOFi&#u~of)z&@JJcloZ z9t|4MU*=ALstsW`6qp-COc+Omt^2OzcVX0K+s_p*|7$KPMIN}sPs-$0@i`8@`(j-t z8;V(-i;R+s2bi$Aw7p_|#&D-bN18FYzMbo+2S?09R~6^VT2g*&zb;4!5}hEOdK@r< zz9Ks(5@01jTJASFL}kVSSiV$cB&x4vRqQ~IggjXD0jIe-n_LJGIQtDmT^R5FKs+hj zd#wpMGpPZ%JyrNW`J%Ln6ZjjFrml>qDp*urVklt{+)EWjs5(k%V2^sdKw>U`oZ-Kk z{aYF#jXc-nfG3Ze^qp!E?rGG1@Gzg3dQOJ96?H5*Mn9#?-K$jX<<}aWp?}`3PV?4x zSZi4NPi{dM`%0DUUk&U&`0go4J<_wXSVAEs0*A^`7@N4bdWwjpAnJqNb!zN^v$wRg zJV=JC2li{~85waLW-Lu%U$vsBdb$1_?msGG z0XMeaIpH#Xe7uMIQadNQwkDk3gq7A};W@E^h-v{nVQeQiI21OB?(qP2U<4XD581@z zJV1>sQvj|u>S%E-WG9aCh6e(Eyl5OmvH`bG0xg4PP7ucfr#ncy+JHy~kp%(A#d9ZR z2m}A9cMGfJIb?%DzY>!MbV$mloI$~~?P|ZaZP7WKo+TY5*bM0tA)%kNwjmbQ7-<_P zDO6wd@9oS@Qh{1)p-h@=4?E7jQhMal)h!;mSFc8;T{}Ig*TNyRCZrEqbZ>yG&NsyUv#Lz4VMDNqGLe*=oS+M~|qP4ib4L3f6On^DY)70&V( zNp(ff0+_~dweESE$y~ib>S3AjFY*>g=GJg>aj|BFd*`57l=(DI`?aS){ranN9qzO} zB^W!COgNI+=f#iCVJEh#sX)}cRJ#Wg>no?)(BSt4eXF zRLu}C+Sj=@=3oZ-6@++$+polHBgVec3Ts-BAnQqUyWv80a&n4+ImVmsl;}slQT!02 zgOedcaWpsvmqTh%?`Uy{i35HbD{+qC6_!6JT}VTz381Y@{3zPGTBvbW_nZ9q)^?GV z$X-H`!u~&ym+=PT;Dn`gq<>=tyWkAy>tF7Y9Qj-27MlQtBI=st#dzUad@_+32wpgH zg#y_Mf>nJjGZ(Z#l?l*bfB$s+VF;z zgtNYDxNSugyBy$E`F(#ajl4|>V3ZW)G8jn|+i(iP11@wv(KWmWI2UkRS}F)y8-0D- z1C<4to`a<~JX<-_q}`(l)}yz%qI-gt?R>pJH;oy2{A z@6UL@U+WD)Hs65*n*shq(-nIrWnu4lI-v^d>sLkb^q(86B@-xmD%cLbzCI19MpuQK zDA`xgzQFaY`}3kx4w)JOaEs!HKAL156N?efo(s@bm0vvzUl0+Fp8H{m%IfvHwbWDx zO6gpk#(Duy-1g?1VnItt1gB^p=l@V0G!itZzT!p>Bpi8Hjl>#JEu)bYeP^JgM1@T+ zG%0oitB2^?a4@5J-Sj1oL{W|x$07}}XjA-qv|WVo0g#-d()aV$jT>8&67D8KeS-`< zg>o1&|CXTVMsmD_8LGT3pz`bStlFRpo5pwu%E=ARqNlIdqSP@n{_-)hycOD2yQTfL zkLJtbMFyXb*Q4+uDXORi*-6AMY37@n)+#6{kQ_gdCwePAceV?}Md@!cL6CuO{&p4z zJDJUP&2o^9m6eFlK((!+qg$R$NkS|et_ku2$}^LI#J&`qY-dT!vb>C#B=TLTF>#fY zqsK}BHNUB`b)hK`f?gEPVvn8l0kb-ztRsx*qCY=#2pMsQ-j9r!*ggA$$FyS67*7sM z=H^FwojZE(SFEl(AQ~`u9`pL6TI+`o1|AmWEHM}m(gi;(7dLlc3E!dX1aUzHwfl_) z{x$vwc#arT@p###fIn3En2touNT8k4@!2XbRP9mnPr7CY7x#~r`^ORm#grt30j?m1 zvHWTz765`b76~e#Gj9xs5}Y=Y;2N#NSbmLDVOgRAZk-jaO_7-AzRALK*VU!s;=Pk- zp#l4zd~`bcrn&%$a7082!D$}MWhvUyn^1vy^uwF50R=_!Y#<#Y3=l?RvgQ%wAosJh z>&?MEn>jhbM;qJ&E9ngd0Hk26F_n*gvHuH}Hy|EmxT1(+G&Yu%l(>Lt>}#KG;Ff8Q zh$aJuiowb8fBIi2D><}L`=WzkICSXQs&N7gK?p?-Y$UCt6~V6gnJ7Tx2f(K#PFO_b zJ1!H7AF5}PHV>^f8IuP+)CH%eDhLq?G=Tn#{2g)%TUuI3vi7}u_BFEvU;x+!G%e%C zOQeAY!u4Zj%ElJQpHdnN>KaX9XvYU&;6!A9fCDqcS%^MRBb$9YHZsI6uPzlH!47{2 zmZ8fVlz4*`vWC%JlR^+WV`8$0UN#(+kQFk4NT%%6zXS0I3)o)?jxC>rXue!(hOBZm z<>L4k?t`zFUXkVpXCumhiJnWnwC9P16Gs%rIvpz*4^a1wYOZ9cO634N9f13#_53kq z-1@zO1pnFS?fuV2Vv_+N@C~iP^n_CZveG7x50lJ-Q1l!Lu=l-n?dDBph@X#M6e%Ny z=CU%yv!9Q5fOLjfe*++eo5E31QEKEG!_om&RoXo89ZdqPMc)C{ySQP$VwlX4oJQ!w z>`pPy%K*@^`@WNeami{(C%}?yAwLyIP9LyXG@3Gi|M3KUS!MsA$RVs7 zDu2>Op=8yrtQ-G!>;Gs0+|OHU0<0&*5`d9I4h|xqbAr%Hz%BaV{aqqp@UH$(WANq6 z7Y{U%;DYR0px`3Yj!8~FWSo$qUWZx?kLm^%9>_OhRRp2=Vph*!>nZyo>`6MgF2CUH z2Oo`0pT2)M_%Aq2!_d&@(ZWE{nGWWCn&BGxiq&rx->z@|DEblCGJX}IVo=Sa=l9Sn zwBW`u9jo!93>n~{S6u!*Fe_&!F+@ZkUjn&-6^NkS5W})r9|?!oA+%F26{rh1|8UWdFlOMz>uEDqaW(9P@Bqt3Mm0ZHo@GBt>i+ibrB@n z%-NW{Lqa1n?Uvi$Wpv!s{E33p79wo8>uQT#S0`_@&s#Wl0 zmL2=>7u-&^ScEXi{j1mUNhAU%0YRM0NSKY-&8;XcZIqy2iQbp^0-%@>f5#yblUh0Z zt=h#cdQ_(CQG-*=j#!+PmXX+ssHTE&Qp8>&b-c>*`<$us$ol)QlU4sd zGdg)V>tNCiDzN=3xkt6La~TeE>kD<}hbr#a**GCi-6A`3bSEF5(wq;^~*s-xT|MF%x7_X4zq2~-rF8{G^75w=e`{C zD?57IJAta&LitV%#rgT?{|`x|H}vEk_!Av6$Z8D$JP@gI|Gjop#F2z1PNx&ciHk}Q z8cUIJZG7hVI?A>}1X=o%Mh*w7x|Wvs|NXo5|NR{q>_C!kP&fB;uh?~<$NB0n4Z`u@ z&sLS^`5T0bEHZTV)s-<&r_;3pcL0n`GLBkhW9cLWrP%#46Gm5lTei>+uj72%_LMfe zi_2I3znqmGl~CvVYqxTEs_exvK7#t%ZxH(r9~Rd)-E!#X;MU)ZGJ}xB#LV-1LzZ%w z&ob4`bk~?*pXG0@YY(w$p)o^vVi>U|V67g)F2QX}#{8j|B|%*zQd)%{j2f8^s%JeS ze}N<9$dSX3hJU_|!?Q^*3=LQp8mT&G+a^am><$hGUZ|%WQ#4Lpr^%s_A;Ee;?a5-Z3lA1i~ZUJKhCb?lG>N>bEhYxQFSXiGW}YRmp1f(jJhe zlUNPl{=_`e1M@L8mN!vfLv%BD6UlqHKUh{?xE0aa9C*SPJA4{zU#}6dmgM3~O-*I) zg#u)O21W1{ZUkFm;6U@^0*GVDAhsGPeY}Pteholz4;Kjo(JZ>SlxTV*Wy=hz2#kUt z;*{fNwLmi~T3ki{q@v=LxQRy(l+#_H(hR_EQ5U#r=`H5q+TH$aD`f8vz`iGR`VAuduZ* zWOA&mSOds%$yp#0;kz`iHnw#O&iDsL#otT+?gP(@l&F=c`&eGUZ@~G3($l~1nC-z5 z?&|6yZkKhmwEl=uAa*!ZpCs8q`qCIzB-a5F&j^p~@q~t7sE_d42!0OtBFSq5kd31H zM*MR@o?dgm{oCP+Q=h(GrnVG9$g}pfRo))L^mRsi5YD@Bzbfzr-E90>9W<28%uEUeO~G}*Z6y2~(7P(>BLLWM-b@Rt3^AdA zs`N)Mfq-se7$da^37^1&TLmI2Z5(@m5$~1oeHi$54gK6!Xb?$=8i^x-Qq=k!N^1;Q zr-R~vjEM!&im|HH=yiw+QC;vZ3{LRkZ46N%XDwJMA_xY7Tn~I$-TpNkagd@bqW~ny z7*H`2jGGK#$DnCwVHS( zG$(onen{v5v(Nz1vL}fmT_tw(C`K*-V}*X14~+#_8RC#HLUQi6qPu`ho;-Q-6?GoT z&&HL#W11H}7~E0ct^h)pb{k?P`wuHe8Pz_nNg^#rhZu;Co#4V03QjuwWU|%4`Cfn9 zg!QSDb(GC|1d27HS;4|%W{$=R1i}07!N+^#FuuGZY~6qbb`{5jHD2d#Uk-Man>&@} z@`E@opA`V;7X_I9+x-+DXl@>FSTe)ECc|qcv3}(|CJqW&qCWe)L#>*fG5drL#B27?+^yh(Zj%sL1`dXAE*2zFv< z0SOJgI|PH`Rsl%o0~L-oj`SV))UVx+Y5xrv^DC-Qh~23XFiHP7OcsJr8DBzgTu%J8vBY)v$az$8|5tq3&b+jB@) zfZ6+x<_Xg9%KcXpBI$@YY$qoB?kCs$Llqp3^iAv{l2=OR5w|e;nD1^dR)4J?C)%ka zDpM>C@&%_B5@eb?Fhx5{@4Kidc)S(IpqOP17uGTXsZI&D?eB*=%*75YN!DMbNRZ!V z#z>$F`3p6~otI@u;dLB9wIQ3Q&QmiHK8k`5@FtQ<1N1zK|w ziATX$Uqx2Vci172me9h8NepovxTX5=itF7-t$caP9?Px{>HC10&_c(SH=&RRXw-n> zG#X_dbc1Mi*^vhn*tpVot{gTkH!!=D2=|JO7C(9?1MtM_Z^GHEgH`s1aZJ?h&l!qp z(qf9){FLQlYQY18uilszCcI11cr(FW2)!y%yQupmZDZVR7@f*X+O@9rE6Cj|a;8U* z#6=>CDA0cT0S{~D+PW=8w1y{Bo)*Hc3@$4G#AW3vCHn|nH z19&Nsy~O76S88R8sFJ&@*JmNW?h4K_0wdrcAl@oydhlJufs17<*6WGB>f7L8Fo0QQ zHMIeaKnr0cb>3^o2MeOK<%fXxiQlh3Q!h#UGBEj_m~7ns%pGGb=sZ0a_&@dU?>kYE zVhd$p%`7amtLADmAFSvY1?;|T@0y<(M$#s%y{uhY6$8a+9|)-pa`h`XWr#MLz)e98 zLZ)%A#E+6BL9-gK%|N?}%950>fci^6-co8oU*2lu*L-8?5qm7+(b-?3gExd*G3*Y<@X_<(EIYKCf16q3pZtlO*qHP+$(`>8{*m zezSr2O#Krlt_B1I+^B<1f$dh@fMD{g7l$fwYpwfQ;>a&@2s9XJdPp1(pfH$SQ_*-} zB%j^opg)K6fhIuFA1%s@Ky}nHhUtp0uS^g66F(Zht-f782c;jGfZDrAbs$a&yab_1 zGO#^%FE5iPf!^XoWHgh$7ifRvK}BnRM869yThz{g(%TqP|ZpAXqMXwx%rix55@nDE3{k1XLxh|vM<4TXaC z-!D0t8{pep7(mJ7aOj?pKUD{j2Q>mcNrb{dt=;c1Wdd+1X=xRF7K6dmk(dS;F)4n~ zv(zJ1fK(TkdcD_zWg?dfsYmb+iuRLGIB$8gD>8iY=04w#S%|c>G>pX%zMloZhD1U9 zxb-2fU-!vx9PVns^7INmt7Kla4@&V^xgO5Nih2#+vZWhd8cnwtet%*1K1& zS*rQwjOneB=UvLeI;VTbs%sS&KmV#|%YQxUK0M|z!tqEFl*Bs&Jr z_&SnkP%UcT)7*>`TFLnNYCn{XBp(#V?jDTDiohEu3>4u65nVt}$u=tHCwT&dlfiY3 zVaW#(A3y|IghbHZ?+U3xyJ5BGpN(Ex(dns|sJEtj5vd4Kh*0Wap#kYZhO1x)1p)*7 zC7t{SJ6+>^StQaJkjIoVtadR7f$F&9a=A)NBqF0f-T&!e;XO6|Pb0}Iy(Zqopr-<5 z8kq`vdXGsYno>FpCRt6vRcMW!0G2}ybkn1XRTzAglmDAvWblW}0RSgg;kU}=dR$ui z3@2k;&x6vl$o3$ay4{n6QUN$};Lb{tm7Kt&MzwJqVM;iA>wkM&vS(! zL}<3PrGP--n>U{sG#_OzKuJQ#Ews_GO*ZvktQr&(t*lH1 zI;Tz@p%UQnqSd9jp6XtO%M^j`zK-9Co{;Uzx!^-8 zBw~Q*u~BLe=i6u%BISR3!Iri)zBO(D2^wVLHMkHZkvP)UkQW2Yn7k77EomU}Kp*N` z;7r)u?}Z&rA%dJ#9I-80c>o5FxpGnyb+MT}QOXe+l8%D2LE=@pr%8OKd zHGhVS$=e(S5Dc^h?u$4&iQx=HR(_itWc`?R9dQ5t{T2x(zbMaRKn@k(SvHeqJNl;) zfK5{ULrsP=wh?M^vgzWcaB{1Gz{j)K0dv>SV?_QBFt$YqCb3(q9jNS&n*jleoBpSk zz&GkwxHUe1E;O)kv4{K^xGl({n5RxffW5lN+jR6BnL~uHp%}q^#NXiTV5q|QHB7C2aB|JxuMzX^odN8{zZtFkj zie0Ka@H&}D2@p(h;<6Y1(9#j(QqF}%Y{0IAjyn>2!xmLLE@UbSx%==FRS<&GvIz7+ zxAJ~)p;TNNFVLNUu(BR6^DE9X+*zbKYzbJzEl6ZhaSNa;SWy5y z$Fs%E(#*J7RlSWLySl8P2Y?v2b$Ss@If-2$_z&^HcI2`VQziT)88!`}36MWRJie#; z5da0?J=dlB2*}39>9rv+m_j*poq>!3qj;H}2eL(tE)W+Nh9^=}l9H3-4mW||5~dfy zv4U81-7~wt_V)*(frhr!24eo;$jHVOvkekgp5hqP8%rr3i~*&C=S~DGM8=HxqYYpC zGCpIWzudcwksWahMi5}ywr3up5Rr)Yr2HjV%ZXH7U4TSK>O6Kdr|^bFpu)j3Sp!x% zuAIsW4aZm|0D{zZ4U$!LO{q*tTT~>?T&N|D#?`9e+K%W`Z3PNk6Ov_iUkrBzZP* zweglXxOgE2SPDyiNH8-Y&pC58CMpWC>Z4FuHTR_U`~81U6h>)j4`yvS)9B3(@Tu^_ zKRq#aQF`$^M4Ct*3hEaC#%aodbTG~9u?tdV%W*E1hjSOV#tLUF&Yg`=!HkD|v-v;s zbk8AIqVUe{Sb+MM%%EvOWaS3}O8%Z1hz8S0lSvAMr(>H$405P3}V4Q^L zP!N=xR^lMp$76n*?OO?9BgyiG6v%&W&I4R@I!X}$R5dLvb#D@xyllV$!{ygM9Im+6 z$E5n!W=s&!EPUZ%-Z*QVsm@f^xEAPWOO#^oW3f`lA{E+*yVXAz>+LSL?TIdcK^Ld*9@WKCr5#mgTLV2-|t zvKc5DM3zV5s;&1yr8Ef+nP5O1@>d?-VqUr3EyT2#qjeGN5SzzM#t{NX5S4W$0u5;G zTZ%W+dqQ{is>Ay+0^!8E5bePRkb=NjIA3p_*+2Bgd+D@!qc>$=^_WJ~z{l=x5yePM z8HFmiWj=hp%WfYnzo>?n;hofkbwHn)r=xHT(nh_}gy-ExMf3aG9@x1i9j^)F?{lbo z60&pahmonmLI{>)MP2eSl%?A95~y(V%L=xWy5jM9a$m;3e!X!?>4>fKnU98+(Tc1BK0%x~&_|G=&BG0*9cS%cLY>?a1(4wGnWxn!U)(e~s$t2@ zo8q_U)EnEs56UOFq#45E3+tViPZ(ROUwKnkN5PJ1z*r^XX+X`y2Xqk&<1oauP!rw2 zk%I!;7JbrU7Rj5AzE#Y(fhmUr9$56r^j~YeLE7e#0F9jREec-JL{$k9G=;Ke16MGF z9jVyB&_?Ez^tp#HZ!f7jg)+H_j0Pg(Tvp0H9PA*yh}Y!zsGaHU-F5`8CG<6A7bbUO z2tft{azzf`2VO%AyeBG`5}j&vL_Y(gXF=o&5b_rNN9YxV4IlZ~SeA1MUfPnFceyl6 z|4Yx1##pU)fc$J^|1Wtc@fd;kQMBiMy&zz4SU$!sW<HcjuQ1cSm7m1xyPSZZ?^$ti3RFldg`c5kE zkO+txnh&;*%bMcxwqQF*I9E%??~la@n}o~x_~=}Mb;hnLpF*xzIfapOGKm8XB+8Q< zqt%mI{1yrC3TT?tV49lCLT33oCV=HaKEC}Bbp#6no&-W>j0}x zqzUdHkxF)18JXOdw!rSOoNe%qks>03b_sVf$fpq8T zxA(V8jU!=HGAg^scQpRHLMm{26_v~W7<&=?@Fh+H+`A{Fj=g|OXC3ag2Eg5uz#lXV zk85d>{v3w-U{vV#CJ8VOh{XmT@n%CFG1M&i?1D$)&eCs+XnfJ{GSV}CzyH61lhd@k z7%bUBjpDiqL<~8P%L4RZ{vy~v03%|r$~G(CeKcM?0@oiz!Q1ew!4p{~RbofOQk?&& zSK0pr#3tryZ)H$%nyWSMcj(OZzv=!cIM^$>zpHdWJoVBWo}!&Pa*Q`umSO*KYvc{> z+OLLW+OjLW1*pnfwh@8Je>e2+21#gI3F<;36@cJ>ho``DrzRjzPNK;9QxiuM;%~Hy zh1#}E(XwleUJe|@8^h@TC|*Ui{K4&-*C7Gsw0zUE5smj+Pfo~R&~7DF4)*%vEYS~E zbw$xemDYQ{sH&YERUl-cP!#5(5IGX2K-fhNfMFt|MvE_eQ!cxHF!KP0)qzAtxBW{d z^y?Z14nMFDUd6^Itf%>;*soq+4*&5ZR;&pVpdMJ3v3@WxxO@X4G+05t<=(SARlX?& zUOVHCe*03vR&i-`m8_|$(s;vn0jB5;UMN-22F-N-)+VOTiPn=~9Qm7g9Q zCW*e-Ab1p1PzF6i@*foixWwy=DQ_3=q30vIJAmIL-2ubCz_z5joqc6M%Puv%|9oKY zw+zk*H>V!D3}2qK9`O74nh#e_^Xt6!!ee?ar29a$`nBsb$rFbP?_Ri=y|wut>5bac zP^Z1;`4yV5<(s-EJALz><(p#S4#C&+6TcQlpLh#)Urx)|gQRajHAFR0+*+Z+-{zeD zK)=9jGr5I9&Jt&YdDDy8FV((LO3!>>JS=`c0I8z=^2}NXgTh;DUyz3r{5vS4>0hzK zXs7QZ!sxYU^Ie%8*$_n6@9L(gK(DTnd1(95SiiDFYSv?6O3|^A)7b*eeY$+hH|V0H zSKGKAQWuNZD(o2Gl=$b+mQ(D4AubsSS=+lGItJp$mU8833l+IPvlqL&A40L?geFy4 z?e&@N%%|5q#*rt4Sl3l~(aa_L(xOXSJL4#y1eVwa7)eh3NoL zKdQFKb1b^>i|#_ABdKLXvYDA#iZA?fiKrdeY1+uc-A!9M%7H5j{M{g0+0-|)@_TuF z`+lBJ+8}+uVddATRFpcrT2mEyC1Y~#+o3h}2UFLiYaIZbICD{Loq@fxj+I!t}1L zn#s~U&w>~bifYYs4vqd%wX>{gIL|ndp<53>$`3y3wYKkyK82F= z>x_)1u{0n_VMTErW!dEk2l~Xa9~SQ#BQA0SQ3?)LA3j-f5hn`NFb;dkQh4&{Vw(w% z0>(aM+A_EKwtkPuHRWqC^FQD^VAcNq#l}lT4a*V_R9vovMl!SWkb&4n4^o!*K04i| z+{r|KVz4^nlfABupEtkT>u}E2G+kPiVM}I*+~0W?4kjHcezu&kk9>}&!T|WQ>^2o< z5dGIlyF=#JAqzFpi%4RK0N^szk$VI>1A@4qI&F9RZ!T{;OPq*|P4Sy^dbxvh4U!NJ zOe~!j(+p#6b6}4~^>un?1F{YD#ZCWy?;X^RvpqspXl2w&$GoL)xiKz>v3LB|59f;d zVH5&ygM9gSiiu6Tm;GnU2SI1Tc`M%}3^jQk*Cw=y`~Plwc=61=83uA=s5fZ}G!8YH zY2QP6sbUh+CLqa#O6*;~$=wB6K(d+gmre2_q9Q?00 zYebarto~|eCeZ%l*NxEmtpCL(T$?&J5GkaeEAVrtS!j2eLpt{M?~yNywDI_bFEfWk zckGD~)KF{wbU)iXz2p{wOz@>+{Vw$`%g!Hd>Xy5JHcLKZ^E-ep~{Zw>o) z3i9#uW!=BOP4H)Ofh~AHCZ;nF&TaPO*mCyI#T4z8gMZsV3if)Ygh65NHOnfWXFUsi z6_JGURf%;f#vzcYCSF|?Is3x7B2r1kctX~TwdvpSZ->r_-CH`qf=rDLx0T@o>0TjZ z5z5~bJl^!;{_;CF2L8XHTOK>wzWc!4(n(^MtGw7gICe3Vn-x4expG>~Gm_Kn%FnuI zF%^*qRV+8MFVVUFl(?=bctZBl;GpE9f;anY+R9IF@mu-fEE})TSQkf=SCVo>Q?p(y zg$C5Z-1mgU$KzJd3vHd3_ze$|r=#;a>)t*7>3Mqdrj4stev4|s4cmd94DwGmH}|{D ziJ1j#l6Y3am3ZR@B_&X!=)wy+08Il*GGvp9s4J(`)(uX^?3#IVdv4>FykY6`M)C>r zbbGieGPmEn$bB_xx23|@Ee+&M1sHEa3@yC)2p668iD zUYZwiIAvteXc6_C3Qa>?-qX2XoyA>!mArVEB27`rZ^vs^lf(U2PF$xu-vRl<_&Id) zu2bnoBYU=Bd;Ii>q>o=ExwuJUjz>BeI2qMSD-f+f@5|(c?;TmTMas6}&Wy+6kDSJZBR+E*!$7u3cjV{y zU#sssUWyeqqHo4}%e=>b^4QuT89F8^Qs)(T8tPrVSeI@m$}}}*9{IEQ;X}W~vl{*@ z&q&9I^bIrJZd{6&>7MR)?0@p~6|!!%dvnBx-WLd8P#$F#p03VfWQxAK@U6}x=?Z&7 z-|+hFx=Evt*&-WS)+K}nyNF6jZO||*P<driP_v&sK+j|sUw&Cf^R_h4 zwxIRbqobo6JCP5PZd>`tL~~_{%s(Bu9Cl$Yr7wU@ur*#ZOqiubdlEUzgMgS0P|Q?Dw$ zRLa>__M+lP%;#!K2PD3~`t&&9)j)SWjg-`ffLE7>UK&63kzPxg{gAKyvR$`mUTbYq z>!bnqZD-f>GtRC=Z3VziO@;)j>^tXOtfu#`ZLcwPcU~~!ua1; zrXIhiZ(B`uT*{?K^+=OAj+aap0sgN%)3uQs*j6Ww+Zjm*6qvD{tJ(c0t1VOK(9@sv z^uB?0t%fx+KbNis-Do|@`D#GBW|hzMNb)d-WUhO4N2)Q}c8806yuV67LGMM?6pLP5 zzOQDyE=S-9N?&Eue*5rg2g^-ARqb(1Ua?0zOnBk+jKGC78CjIO=ue4xVerS&<+O0` zGh#`yEK~#HR?mK($3c?#OWM|U+r?k+EpB+WoZQVNw-~k6)f+dzn341Do$}mRYqYyJ z-AJ|^xS^mc#M)JL{=U@|)SXYmVw$v)l$);x1-vq>HqlqYpK%IXG*jb=7-W^CHoSPY z%+-WC6;E34{v-T(Ta(s06Rup-%3JtD-qTK+e|HoonrZ^rcNCh}`cnr*u9NEZ^HE%9 zlEi?M89$9yDg|XIzB#qkaPmz^41Uw|%wYWa?SMp)Ta)9{pJ&HDtGxZ5`F8$p?K+lB zX<9F@!t$M3A9C~|YGY8@ywDzSvYmz;ZFIpCPdX=L4s05hUCtU7%2b2xg1Cvzo9b}9 zK%x~1spp_f=m!|{9y)fcir{?T^jhB2`9~Km&gM8t?(Rqah`Wqj0Wx(ga&@XXLyb*- zp6-8A7RR=RapIcBo>MyoT20CE$F?>7!6+gJQt&8^F2#p=^N* z#};?MLaNQ44k4cQ10zYwLCA^mEmRbUd9w9#ZhoCzy0emS2J{Cro~Pxi_YAr= zKiCS=Kte&%=y`XbS;OA`9*0b}qM2!h)y&@rkGb)trU^{K5G{6o%p-_|x6`QxSP{9AFFsAo-?G44xOlM6peq6a9fMiDHDLVPBr7!1XxAyhu^_p+ z$R1CfT)iVk#%%B0Nc;+a%b`08-O#ICd*qnkmXWCDzi>BtWdjKE?WC>cN(rHsk5>}; z89y&^0I3>a$z~eJSZd{wO@C-$``ku?#cDCbM_2yy1sO%;@snIH61WEE!=Q}T-E50| z5&NYBY`Dy@k8a;+?cW&IP!XACICp?(1I!|ZI;`yU86+id@9)_yDXEnBA%DVrwjf|E zD=}rFat$gCos1_xqc|CW+Wo?5EVG$ifn-%VYp^WsQJV{24>ckbV3 zm#X8hz4rAENcG70IW%xj+Kv{OXbDzCbWQ-MtbtO!h zho8@lJBThP=05d=2>+^}NY$@TmW4gM-qH46T4rx-RIP}-Rfymt>&N3hTna7>Im@-H z=0?itFF5raybT0 zVpFO-XE%T#Ynh^0!Dj`S{mkMQC_O`9y`nB*$crTE6=>z5wK^?#Tg2R(u` z1IMak#c6;Ai$25xxQ&udt)#649Ex zg3CL`_Fk4*!+Se)fY*XN6~H`1&q~<{cQ3%9oTT1j+o0clFqTrttVN=SgZ3(}J~J*Z z?zb0!+X5F{)+F3$z5;JtWB>qSo^C?y(Ja9EhXL7uK1k}vVz+o6D|`ZqZhfCrOXLLF zzfQWHH}ZD~LF34B&MdIi=DRqyc(}@kJIh^8@FzFBxVit4+GThZEr+%mFOj1C#Bx%| zuTt;#bTJh47$F+|@ooeOQ(wmMzSqI1RvQcN*;-{tG*=z0nrj zSArFz`ONT=C*!*j*NNRjCeh%&D)s8cA0YkVB0@L#SdoBY`mx#*DkVrdbU)6P6p=|X zB8CM>=8-U0YZHaW`n*Zy_XdquH3laS3$Uj-XRHZ$Nkh@4rq;_hJ5n@%%`ELcP>4&* zPYWZ&P?s&zq5h^=3yk&cd#mVW&B6h1`;Q**%_Kvl->CEKhlk47a^H zbmKDRbiZWzhn?oy87BHqe~K=}`9`^<>uYS%%M&rnDE{7Xesv-}rTa-azl_O~YV-V1 z+D|V&^pvp;ePDM?WJ{AB{g7`?uS@+clv7{iOigFGAgU|j!4n(xS1-;|Q-)+a{BQex zYL=GK+jvf#g8a1&p{&CEU0!V5fv*f3YaXUrW{Ad0h<2Iz+0Wy~z|8l~(+X*dzN>>- z?#G#6a~|(z##5rjJFC7O+_yz-ZpLhlhV2yB zsaG24(g<}9$u1E#@$f`~8?%MveI>Oc)pvP`sG}&U0B2#8rl!Cq!v?_#}zlLHkGLU{Wf(oXh01O}qa(CH+6Wg$*?>~|r!%ZOV`@T6D9>vRdMu#B+E_Ux@fBDz3v03g`oy?GNO*E}4F7=XgZA5Jvf}u$0J>6`Xo(aaBj`T3v5KUYbf4WV zx=ddY(AFnNKn;K9U$0~CzuASZ&8*yA-f#-E&JOLBk0E&FW3bgNrjoiiPv5^&V)ZF%_Y|Km@lW~je;PW1C^2Lg*x{Pgc)9-i}W@pPP(Bc#vOvN8eHJ(z?a#;HTu!S zxf5zV7{s>JHT~Ow9A6Syqls*k`5m@vM^VlRg=LXb68RL+&PCv)wT3>9vuBUE_*hsc z>?&#SEprY?G!s`CidTW{zna)-GA&jA?PVCtH|@`T`f50PKga$vA_3x-Y~n^dl^29J z)*f4;)^Yms!(#)cqd#4sBwDakmV2plW;ebhA8*p0a*I-lbCB;szp0Kp6tSzK9U>-Z?Y9PvJiDILp z`A}#Xg?VJTi^erxO`(dBd0Lzbr-hBj;v_6B&PO$cM_kx#f_ZD;_t&poySB^~w)$OrS}mydSN?C> zMK0@S6usARMmp#jJwT=jj?MLOg!C8l9}cyGm`_Aho&F~FBpI!ft(_L2>I=hvMwL`w z#*~V3sf0PF??1`SF^y45lMKE)O8acnoEQxXdbVDW88t4k+2=mq6Wa@|)#I|f-98U! zW(gX7u@;drI2WBi{2OQ4T|P`AMN5u1gZ9VkZjUTxAR{Rgalrc!T%A+0|DGU}O@!Vh zvu``NSDpPoS^$VGgiIc0-@55@PUaz4DP$0Q2it5?8Kr%4_w5qNw@`i&=Og!y^!lya zx6^ofFx!Y5juC_mF zRe1}6ZXe#i@c17>+O5o5r0Tl0-l3dj&1~JbOeKRRiJI|P%UJ#P;gM}GEg!OeE9Bo> z#k9N_^8De+omt!X+b!d`xQouEG1mNguaq%){e;d57Vp5*|$zy=J1j8%$kF*z3c9 zu{*WW1qQE%I1ZTkR_ZbG%27J<4CcRI1{|3nb4Cu;Bdx7%hTIBNMYEnT&myT62F^h_ z57&_z_s8^zo0<0{-zxLvrOg>zme&;u{^NV`Q$*979pmgk^73IgA&$dF$kBAtRcOgm z#2t*ZI6nvjI2oCAp1ylyvfF4^cAL?bwWmggq<*qw4B)FicWWAe&Tz zC4h{=L|#iOIwu(|wZJ&#w7P;??_$q!AI-bF*dw+`y>$~%qOqt6Fjk;%s~+AzR}A^0 z%HQ6-#AW%Lk-$F}#Uw(}3h-s1ygT8S3}-?AOl{0XjB~*J1N18; zX0Ns}hfI8OscVGh0EYLCs=OYBD6xDSb1To23u-e$fMe6cEch&Hg z7Z++_b6K34lj|Pk2>&A+WHUT^b?yeUg!WPE`Go~rBn3M(!O%?vW-$8>g+bN{$Om)G z*TaM#fDhNcqABz7<4ciuh6iPlBK)MXQgoSB)Ijrcf#&VqA_JflHpCERBa@C#J%L#Q z6R@bH+dcPrEj{LGEgZXM#`mVfYd`;Z9|}&7wPLERCF|ej=xRI^>)eGmNtk-XG{ZMg!{~W zTMHz_3i4i&CPr?VYbY=>oNfP&J0KJVUzx{9EyP5rD-UN`CHL5>u|dDfc|g6uP{*G2 zuL4)v__J?YT$KBt6#FxUuV=7!Jb7KunDdKZ4a*N7cGbhyLeaVQM&5_dCxwO4qpL~E z^ZWn)s99(Zs}b+N4TL*mvPi{o$R0 zgui57L$+zGFq6ulakaeoOs~K7Ol?qze{sRK{)9#E&~C{~mu599&kv|T7qw^SgBQEY z3l+{H_ZRajsD~NyiqTtQJp^f1rux1B-rGU<41L@+_&Y`PvbP#p@O#H5BwP#BFtGYl zbvQUIN=@a**$2H<$NGj13wrzvnV8hoHJ>jYZY=@>DX?Qxm1QjPfIfYSOP-QT6q4xNKuVQ4)*1hU#iz9>$-wyq?pb;Z+X6|FLA^34kgcTJ?DfT920Zn zK4SY@V5XV@bp7h;pscLF1Baqx#Rugt=0M?^tv_75Mp4wT;5k45XLOdDND77)v)!Wr z=bJS=NF>bxICUU;Hqke3h>U_9F~ELD%Qy}NFGjBC&xPM@oHz0IHN)&;$8GJkB@$3JVK7~f3oglAL+}@p4guvFI0JDGn6!ZZf2;J8VmZ$S7Y?votZPP-BHbf zFZflaLlYu9R#zieDN}W}!w@0B+Ltj~>quNDM$&M;aa){oj_cf^wbNjn9b#G>#g>@KWS!co|yboM&+;Li_ngBmnRBUZ7=<+W&{lG(3FAkbG-|Td++p( z{oDA!s9M2vGr4{q{`YIkjvDmus`+&=Y4|bQ@|Gg{J!Za#gF?mU?R}4iM1*t~C_0(Y;T#(ec7Z4ap8G3xm`M#Y`fD1=dZ1hS*g7Dnl zmW5V!&!bAuY-!(^$Q-rTm@_>_ah;3h78VVTE!hgX@=KAM+#Nrrxtv2oMshX6!(Eo< zW*`S7W3|irEEJc*ErY^eOjg~Ip7<(o&(bKX!_x~FgTL?6{95EKtf3IwIxx}a$UcRs zhYm+z!~iE5SRX5V6}SWWYeYQj-2GH!ebpo_K09^zea+6-N%DoxYNPTs3%ky@2v9%} z`JVMkIm*V}_Tkk&wf{c;KvHD2-{#k~WsT+(((@x9_mG%5n1@>1 zl2C#Ip;dc%%Cl}WdWN~WG$H+mDv?tT_3d3|c~ib)$nREym&*F=f^$b)V&WF$cLF+e zc~|4@8S(Rg&!RMOCb=)ds{wTI)&>8N>1%+B-zxo+^l8_N2%YLI=zX5C<2Zr~u7A2T ze&!-0bj~S3j5-A##LM3zF=wH<$Kj=y zt<9%)V5$@s00D1s(5t|DL-|VJ8ub0&V8#FX)v7-Q5rqA22x%1=z|j*(iOU{_W76_$bWJ zpX^ZUy3SGM`pE;1M`WF*bK4{tnc2)B07d?2K}pfAHX^U|n6zQtdB=?<1yW56Ut5Q& zUq|*7*b9Mx88;$(c1B2$>E~;;NR^*T}BMcml?i)?J^so)cJRxG}!q=mHeHrICVtDo8>L`kf znb!|t?(P|gQU4@U=0x919i;b2wRydU2K_^)ye}(a-T##|bjffB*THCxO>^qr01%T=K!5f|Ola-mai}_bh<^WkQ~PFMRS+wyL4@Pd zfHZiXWLc{P@mG}>e2+aAPexvtP_x;}c}0|9Ol&eZT8PIPRgP*n2k3?8TyN}PWX1f) zROq2s3BK37e{^RXs@I4n{E{v3J0RBYwko&(ObDXF5S6zYM5nnLUrU)d_ou$Pr`yz< z8#)CkfIWm{9yx8(h7OFMe{|)FqRR*W^AtV@yty63mk%vaL?O}?RhBU&6=5aS-L@{k zfXI{sGzJ@?8%Oi^4Z96N2=z<16hFA4GOV9nC*E2a_mN;&Eq_UK zNACjn(pGNkIWqaGr}s$IYi{DV`v1L%GTp4BWHu^?th?CK(t;DFr)>n6ce_9=R$YK( zFoGW@gb$Sc!&{xl5OK8;Nc(C^mG=TWe7CB_HVtn}vVP|6aytzBvmzWOdk`y`@ocY3 z_q&`!rVycI|6cZThkWtkxlV(xD?*!kTT-vCJBYSc(yoOSZ3GQ29f-ZR!#+du2+(tp z6n+GTpk4_q$Y9ptv(kUS!6}s;1QmqqMelcw>#ZFv^!`6T4l2~9d&)eCe;cOOY(F-& zYrV0l=`%RiVGoC2iC^S7w8(L1oZGPm*jnNPm8pnE30Cl#vpr^0TS;=8&KS|v#WD); zdihTW@mifZq1pe$Oi=B8US|=P0rly785dB|MDfe3|bh$RC>DiwS6uZPDGhQxJ?@ymTC9~hxEaCKmA-Kn56H-jsk`aRK#4rZ%;k?(RnA4%?9vyMZ!sdw{wt@j?gL_4r~lB5h4S3$v&# z$3C%0XBOXQ$Ya>$`)yTlckJ8$vtU!UTIk=K`|RC!W!ume-@amKK(-7a z0j`m^xTwk>;GZ8-a6+3eCLw`LWHxVV*7fqLD%iFnq>T0>P&+wE7mXoG8PIrjdLFZZsrvzyzab z-%o}nk-M3Ei5RU=0+Jy{>1|KCPPz+|E0Mg*mD`(p&rS7xoSR~%En1I|7mcqKUzCcB z{W+`5wkMsmZ6;bPYEbkqkN^8gwjuTnF9wPWA0}PxR2w$*m)#A-FHl!s0sW)tB?63-#8P3?-hf?2fzxp>FztJNDz`s@`vs3kMFFRG zsNAK0_3c??Q;=D6lvLc$7)VvVb;`aIHY!QD)+m0sq{3oiB_MPD-Z{y#m(%m)GSANY zm^#DHOgv$@;6#=p8g1WPv$(#BE_iFZP5R;h=x{i;_$jIXMJUv6ol>|my$;k5g#woQ zo!nTgh&_Rju*sbA271tY}|awKXE2-o2ls=k1kV zRqK0|Zffp}Q|pO|Z@mxr^dsJw;M(=gTM`PdCFAel;d1T=Yj0%b&01eDmA#rC?1WYX z?s&A6ks9H+t=nQf|8@sSscAHIEftkW`zCgjDQ zqgCssP!&4>iURoF`La%-0t~9#(b2+kFX1Ob60|5Jb{xaL^_0yR@Gdc$5W@8c?HG}P zV@l>fz6nn78fE)w|j)f4cj86PAv}+_tnSz6f7DG}JHUdJq zcAg}88u!`E(e0G=hJ3M6mQ=(8#84^u{=gd;hWBST0Oft}tO z6s_>sRU`!z?jzhM%pu8x0jkBc55uB8tYq&ZcYspX)Wiwe8I-c@Loh!$g+jsJ(;NP& z3=CV12QJ_`!1?9ndoL6{#J-gj7L<61CgJ~DUJAp%FPg`Z_=edgEd>}B@tskUnj$n5 z3xJ(424>G#zG6i=%!T1N?=*OjpAGt=Ejuh-&;$_1g>U&TVWgz4q!8m65R~u@KeM+# zOHB>JE#2e2D$zCU{{0&zC2=B+cg_ArRl@a2|wN4wQfa z1Gs9u9WyC1gGis;5zviLXwpM9DgJpkoJa_P1Y87Ik5j+`>1@M8(DD1Xi0z2>Tnuh6 z5&IK^6*y!V_PdUKI~&KCVCG1WCNLBLm_)H_ti@Vk!5CcW*fAFH5y>~kx+LxksHYkD zY)D^ZZOuSI?m7(xYy;gbceAnj(OEe{+|PGc{3EbT7)Ii0$4J{k)gJ2`Y%hv0lIJKL zXbWK5B#a;l8VU&~1MCi$>&-W(T7dKszZ*D-F~pt1toQAQ56daUdj&mXHJW1LZH8is zcr3&JstoI>edYl%cT|%44XbnPXmH^C2~dG-i-@#(H?@s4L2PVg4hZ2^oB4OhJcmKp zEEf$CLLo>-*2$A6QOWp+hSnJ!)_`d_Kf*L1CS#*jg-0Fn#sz=|N3(Sq>zeUI<%YzH zbFs)`O2>CsM_->L+QBUB8g_`EOTy7N=!qO*M?!2pkO_c!Hk;oOEJ)IK;;)nK2_DcS zIUcKrp5!YhC;!@58j8D5T*D}u>3Z7;MGSrfU_@1cUN?gMIuh@5FiIiDNSJZ) z%gSzm7dlq0A1-qi-$xj)^&FCiN?uRq0|V4LT@99OinW%`B;@1W27~pNOJ@;|&|7P?x0neLNV@ zW%$P~JLSa8+rqR;^ftf%{6QJ?Ef0&r7J7H*xo}pEg1kJ2D<*8%WAOQDD4-m|Oa>$> z1`4#><+<(NVv`y0zheQ7ArJ++Z@EZG=Hy0BPN8LIC|StP1{Z*hBIP}I`Rn)Zpw!aA zi;YNpz0pRIm?KS8^mYKBMrW^sNCTVPm@xd`XS!#CH{;964x_y)0sO2PKbsp%rDhdT4H z$tq!3ihXxYc}-D~95Hdna}>__5Fu;>`j=0V+DJ1`I3o804#1>lE*f7OA6pZ7sArvIiT48}#fC(Fv>x28C1mOtB92 zWY%6;fkH{t_CwUOG>HSLpsUo58*5#rr@-_xY{Q^I_75kwBA$!YRaM2K*yjy~Vy32a z-WmRnFTmv(L(1DfJ59#k{}@9WGVUue5yn*IDvl#YnzQf=#o?3O@kA>m@j(O4^oXAL z+IQ;q3-C$v|2+ZQd~8WRr%J1QCWPR`ZJ5Izay(Xs&-Ni51>HYq2+l4zvoKO%aRXvn z)uwl8182rm%ByBNC5rUt^f);;KNJGYiWZmmoc|&oFcYPgBz+&QchDvxc*Xx8a+{gn z5Nkke!U6vhkGTiie~E~V6@Pi|n1e&s`&FHTKT5q$Jc5BM;049w$Ehy7B$Z34Dwg^+mI0o*ZeQ2~noImaNEq5HAW7kpInxhaf zDDjl_Ex#mmBRT5{c0Mr6iJKILYyQI}vl^Gdgexi6Xm9uYcPp#r1CEn=WPua&Q!r?! z5F;3H7USp5|C}Xi;I!57_{f^~u<^x}A>V}!?*c@J*{*g6=R;LCBtZG5jG5WDeJ1^9 z%BL6E`KH5xbBw#R#^+~~y9P7?=qCc2NP%5CK5-VdZ`iOVfTRO|D|*em ziV3&^-3CSo{DUL{vE8H~+C{**uAxDT;T4(cVk~JsHPWfHRTc?Aa5jI9Y${?=TT?@$ zDMRZ7qYa8LDufEKlYz}qd|zLsuYe~#P8(1Go{U@oB!hP>9(Trm@(9ZdPIGjGp^XYb z33&$uaQ+VC9No7C5%$tf-KxfjTBIQ9^g4VLDT>%38xXJnp6SLD$?DVyZjKP1TcM#O z_N)XYA=O)<+ohUkr!^~yF+HPQnj~NjBUnYqMcd9LC69 zcxm7o3_r*)5ljd&=!HMowtomw^ddH&0SdENpRn|3VIM}i{7+bk>!zqY74&dLU)P*?;{0Ewihlw0pXh%WIb zgDpaNG01E%D8_wZS-<1VO;*LVynOmFia^BuCY1auG}pfp+Omb#H|zO3=n@FK8RT{N z8r7=PuV6a-ZV-P4dnA6W03~B0YGl|{D7(14s`m*4E=U5NlS01GF*V1Ci|EiX(cJ)$ z7x_JqUty+Cz@m4g%VK0eVR6ox6gEJch>y^SJQB7PtzY8wB3Uf3cY}F%0Dw4>S_zsS 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 literal 319221 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 z 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�Wy?TH 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%0DP|Ya*clfO>xH-xZ`^4nOBxIH)BMYZ<^5 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%0AtE@>NmteXk}!eL)iq2d)rFbIa6u;rs&FSvO9` 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 diff --git a/docs/images/germline_metro.svg b/docs/images/germline_metro.svg index b00044ae..270d1734 100644 --- a/docs/images/germline_metro.svg +++ b/docs/images/germline_metro.svg @@ -2,9 +2,9 @@ bcftoolsstatsadd dbsnp idsvcf2dbrtgtoolsvcfevalrtgtoolsrocplotreportsLegendsLegendsMain flowBED flowPED flowProcessMultiQCreportsreportsbcftoolsfilterupdioreportsautomapreportsBAM flowcram -> bamreports + style="fill:#ffffff;stroke-width:2" />automapMultiQCReports From ad4e6784792d2a5ce3c823ad894b03f3618a1c1d Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke Date: Tue, 19 Nov 2024 15:29:41 +0100 Subject: [PATCH 131/167] prettier --- docs/parameters.md | 218 ++++++++++++++++++++++----------------------- 1 file changed, 109 insertions(+), 109 deletions(-) diff --git a/docs/parameters.md b/docs/parameters.md index 8a8e8372..76f51708 100644 --- a/docs/parameters.md +++ b/docs/parameters.md @@ -6,137 +6,137 @@ A nextflow pipeline for calling and annotating small germline variants from shor Define where the pipeline should find input data and save output data. -| Parameter | Description | Type | Default | Required | Hidden | -|-----------|-----------|-----------|-----------|-----------|-----------| -| `input` | Path to comma-separated file containing information about the samples in the experiment.