diff --git a/CHANGELOG.md b/CHANGELOG.md index 48d4df78..80120603 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -27,6 +27,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#430](https://github.com/genomic-medicine-sweden/nallo/pull/430) - Added a GitHub action to build and publish docs to GitHub Pages - [#431](https://github.com/genomic-medicine-sweden/nallo/pull/431) - Added files needed to automatically build and publish docs to GitHub Pages - [#435](https://github.com/genomic-medicine-sweden/nallo/pull/435) - Added nf-test to rank variants +- [#](https://github.com/genomic-medicine-sweden/nallo/pull/) - Added the vcfstatsreport from DeepVariant to snv calling ### `Changed` diff --git a/conf/modules/short_variant_calling.config b/conf/modules/short_variant_calling.config index e767fdc1..c53793c5 100644 --- a/conf/modules/short_variant_calling.config +++ b/conf/modules/short_variant_calling.config @@ -43,6 +43,14 @@ process { meta.sex == 1 ? '--haploid_contigs="chrX,chrY"' : '' ].join(' ') } } + withName: '.*:SHORT_VARIANT_CALLING:DEEPVARIANT_VCFSTATSREPORT' { + publishDir = [ + path: { "${params.outdir}/qc/deepvariant_vcfstatsreport/${meta.id}" }, + mode: params.publish_dir_mode, + saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + ] + + } withName: '.*:SHORT_VARIANT_CALLING:GLNEXUS' { ext.args = '--config DeepVariant_unfiltered' @@ -75,4 +83,5 @@ process { '-w 10000' ].join(' ') } + } diff --git a/docs/output.md b/docs/output.md index 9e09cfec..275237d5 100644 --- a/docs/output.md +++ b/docs/output.md @@ -11,10 +11,10 @@ If the pipeline is run with phasing, the aligned reads will be happlotagged using the active phasing tool. -| Path | Description | -| ----------------------------------------------------------------- | ----------------------- | -| `{outputdir}/aligned_reads/{sample}/{sample}_haplotagged.bam` | BAM file with haplotags | -| `{outputdir}/aligned_reads/{sample}/{sample}_haplotagged.bam.bai` | Index of the BAM file | +| Path | Description | +| ----------------------------------------------------- | ----------------------- | +| `aligned_reads/{sample}/{sample}_haplotagged.bam` | BAM file with haplotags | +| `aligned_reads/{sample}/{sample}_haplotagged.bam.bai` | Index of the BAM file | !!!note @@ -72,14 +72,14 @@ If the pipeline is run with phasing, the aligned reads will be happlotagged usin [LongPhase](https://github.com/twolinin/longphase), [WhatsHap](https://whatshap.readthedocs.io/en/latest/), or [HiPhase](https://github.com/PacificBiosciences/HiPhase) are used for phasing. -| Path | Description | -| ----------------------------------------------------------------- | ----------------------------- | -| `{outputdir}/aligned_reads/{sample}/{sample}_haplotagged.bam` | BAM file with haplotags | -| `{outputdir}/aligned_reads/{sample}/{sample}_haplotagged.bam.bai` | Index of the BAM file | -| `{outputdir}/phased_variants/{sample}/*.vcf.gz` | VCF file with phased variants | -| `{outputdir}/phased_variants/{sample}/*.vcf.gz.tbi` | Index of the VCF file | -| `{outputdir}/qc/phasing_stats/{sample}/*.blocks.tsv` | Phase block file | -| `{outputdir}/qc/phasing_stats/{sample}/*.stats.tsv` | Phasing statistics file | +| Path | Description | +| ----------------------------------------------------- | ----------------------------- | +| `aligned_reads/{sample}/{sample}_haplotagged.bam` | BAM file with haplotags | +| `aligned_reads/{sample}/{sample}_haplotagged.bam.bai` | Index of the BAM file | +| `phased_variants/{sample}/*.vcf.gz` | VCF file with phased variants | +| `phased_variants/{sample}/*.vcf.gz.tbi` | Index of the VCF file | +| `qc/phasing_stats/{sample}/*.blocks.tsv` | Phase block file | +| `qc/phasing_stats/{sample}/*.stats.tsv` | Phasing statistics file | ## QC @@ -89,44 +89,56 @@ If the pipeline is run with phasing, the aligned reads will be happlotagged usin [FastQC](http://www.bioinformatics.babraham.ac.uk/projects/fastqc/) provides general quality metrics for sequenced reads, including information on quality score distribution, per-base sequence content (%A/T/G/C), adapter contamination, and overrepresented sequences. For more details, refer to the [FastQC help pages](http://www.bioinformatics.babraham.ac.uk/projects/fastqc/Help/). -| Path | Description | -| ---------------------------------------------- | --------------------------------------------------------------- | -| `{outputdir}/qc/fastqc/{sample}/*_fastqc.html` | FastQC report containing quality metrics | -| `{outputdir}/qc/fastqc/{sample}/*_fastqc.zip` | Zip archive with the FastQC report, data files, and plot images | +| Path | Description | +| ---------------------------------- | --------------------------------------------------------------- | +| `qc/fastqc/{sample}/*_fastqc.html` | FastQC report containing quality metrics | +| `qc/fastqc/{sample}/*_fastqc.zip` | Zip archive with the FastQC report, data files, and plot images | ### Mosdepth [Mosdepth](https://github.com/brentp/mosdepth) is used to report quality control metrics such as coverage and GC content from alignment files. -| Path | Description | -| ------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------- | -| `{outputdir}/qc/mosdepth/{sample}/*.mosdepth.global.dist.txt` | Cumulative distribution of bases covered for at least a given coverage value, across chromosomes and the whole genome | -| `{outputdir}/qc/mosdepth/{sample}/*.mosdepth.region.dist.txt` | Cumulative distribution of bases covered for at least a given coverage value, across regions (if a BED file is used) | -| `{outputdir}/qc/mosdepth/{sample}/*.mosdepth.summary.txt` | Mosdepth summary file | -| `{outputdir}/qc/mosdepth/{sample}/*.regions.bed.gz` | Depth per region (if a BED file is used) | -| `{outputdir}/qc/mosdepth/{sample}/*.regions.bed.gz.csi` | Index of the regions.bed.gz file | +| Path | Description | +| ------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------- | +| `qc/mosdepth/{sample}/*.mosdepth.global.dist.txt` | Cumulative distribution of bases covered for at least a given coverage value, across chromosomes and the whole genome | +| `qc/mosdepth/{sample}/*.mosdepth.region.dist.txt` | Cumulative distribution of bases covered for at least a given coverage value, across regions (if a BED file is used) | +| `qc/mosdepth/{sample}/*.mosdepth.summary.txt` | Mosdepth summary file | +| `qc/mosdepth/{sample}/*.regions.bed.gz` | Depth per region (if a BED file is used) | +| `qc/mosdepth/{sample}/*.regions.bed.gz.csi` | Index of the regions.bed.gz file | ### Cramino [cramino](https://github.com/wdecoster/cramino) is used to analyze both phased and unphased reads. -| Path | Description | -| -------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | -| `{outputdir}/qc/cramino/phased/{sample}/*.arrow` | Read length and quality in [Apache Arrow](https://arrow.apache.org/docs/format/Columnar.html) format | -| `{outputdir}/qc/cramino/phased/{sample}/*.txt` | Summary information in text format | -| `{outputdir}/qc/cramino/unphased/{sample}/*.arrow` | Read length and quality in [Apache Arrow](https://arrow.apache.org/docs/format/Columnar.html) format | -| `{outputdir}/qc/cramino/unphased/{sample}/*.txt` | Summary information in text format | +| Path | Description | +| -------------------------------------- | ---------------------------------------------------------------------------------------------------- | +| `qc/cramino/phased/{sample}/*.arrow` | Read length and quality in [Apache Arrow](https://arrow.apache.org/docs/format/Columnar.html) format | +| `qc/cramino/phased/{sample}/*.txt` | Summary information in text format | +| `qc/cramino/unphased/{sample}/*.arrow` | Read length and quality in [Apache Arrow](https://arrow.apache.org/docs/format/Columnar.html) format | +| `qc/cramino/unphased/{sample}/*.txt` | Summary information in text format | ### Somalier [somalier](https://github.com/brentp/somalier) checks relatedness and sex. -| Path | Description | -| ---------------------------------------------------------------- | ------------------------------------------- | -| `{outputdir}/predigree/{project}.ped` | PED file updated with somalier-inferred sex | -| `{outputdir}/qc/somalier/relate/{project}/{project}.html` | HTML report | -| `{outputdir}/qc/somalier/relate/{project}/{project}.pairs.tsv` | Information about sample pairs | -| `{outputdir}/qc/somalier/relate/{project}/{project}.samples.tsv` | Information about individual samples | +| Path | Description | +| ----------------------------------------------------- | ------------------------------------------- | +| `pedigree/{project}.ped` | PED file updated with somalier-inferred sex | +| `qc/somalier/relate/{project}/{project}.html` | HTML report | +| `qc/somalier/relate/{project}/{project}.pairs.tsv` | Information about sample pairs | +| `/qc/somalier/relate/{project}/{project}.samples.tsv` | Information about individual samples | + +| Path | Description | +| ------------------------- | ------------------------------------------- | +| `predigree/{project}.ped` | PED file updated with somalier-inferred sex | + +### DeepVariant + +`vcf_stats_report.py` from [DeepVariant](https://github.com/google/deepvariant) is used to generate a html report per sample. + +| Path | Description | +| --------------------------------------------------------------------- | ------------------------------------------- | +| `qc/deepvariant_vcfstatsreport/{sample}/${sample}.visual_report.html` | Visual report of SNV calls from DeepVariant | ## Variants @@ -158,21 +170,21 @@ If the pipeline is run with phasing, the aligned reads will be happlotagged usin [TRGT](https://github.com/PacificBiosciences/trgt) is used to call repeats: -| Path | Description | -| --------------------------------------------------------------------- | ----------------------------------------- | -| `{outputdir}/repeat_calling/trgt/multi_sample/{project}/*.vcf.gz` | Merged VCF file for all samples | -| `{outputdir}/repeat_calling/trgt/multi_sample/{project}/*.vcf.gz.tbi` | Index of the VCF file | -| `{outputdir}/repeat_calling/trgt/single_sample/{sample}/*.vcf.gz` | VCF file with called repeats for a sample | -| `{outputdir}/repeat_calling/trgt/single_sample/{sample}/*.vcf.gz.tbi` | Index of the VCF file | -| `{outputdir}/repeat_calling/trgt/single_sample/{sample}/*.bam` | BAM file with sorted spanning reads | -| `{outputdir}/repeat_calling/trgt/single_sample/{sample}/*.bai` | Index of the BAM file | +| Path | Description | +| --------------------------------------------------------- | ----------------------------------------- | +| `repeat_calling/trgt/multi_sample/{project}/*.vcf.gz` | Merged VCF file for all samples | +| `repeat_calling/trgt/multi_sample/{project}/*.vcf.gz.tbi` | Index of the VCF file | +| `repeat_calling/trgt/single_sample/{sample}/*.vcf.gz` | VCF file with called repeats for a sample | +| `repeat_calling/trgt/single_sample/{sample}/*.vcf.gz.tbi` | Index of the VCF file | +| `repeat_calling/trgt/single_sample/{sample}/*.bam` | BAM file with sorted spanning reads | +| `repeat_calling/trgt/single_sample/{sample}/*.bai` | Index of the BAM file | [Stranger](https://github.com/Clinical-Genomics/stranger) is used to annotate them: -| Path | Description | -| -------------------------------------------------------------- | ------------------------------- | -| `{outputdir}/repeat_annotation/stranger/{sample}/*.vcf.gz` | Annotated VCF file | -| `{outputdir}/repeat_annotation/stranger/{sample}/*.vcf.gz.tbi` | Index of the annotated VCF file | +| Path | Description | +| -------------------------------------------------- | ------------------------------- | +| `repeat_annotation/stranger/{sample}/*.vcf.gz` | Annotated VCF file | +| `repeat_annotation/stranger/{sample}/*.vcf.gz.tbi` | Index of the annotated VCF file | ### SNVs @@ -182,13 +194,14 @@ If the pipeline is run with phasing, the aligned reads will be happlotagged usin Variants are only output without annotation and ranking if these subworkflows are turned off. -| Path | Description | -| ------------------------------------------------------ | --------------------------------------------------------------------------- | -| `snvs/single_sample/{sample}/{sample}_snv.vcf.gz` | VCF file containing called variants with alternative genotypes for a sample | -| `snvs/single_sample/{sample}/{sample}_snv.vcf.gz.tbi` | Index of the corresponding VCF file | -| `snvs/multi_sample/{project}/{project}_snv.vcf.gz` | VCF file containing called variants for all samples | -| `snvs/multi_sample/{project}/{project}_snv.vcf.gz.tbi` | Index of the corresponding VCF file | -| `snvs/stats/single_sample/*.stats.txt` | Variant statistics | +| Path | Description | +| --------------------------------------------------------------------- | --------------------------------------------------------------------------- | +| `snvs/single_sample/{sample}/{sample}_snv.vcf.gz` | VCF file containing called variants with alternative genotypes for a sample | +| `snvs/single_sample/{sample}/{sample}_snv.vcf.gz.tbi` | Index of the corresponding VCF file | +| `snvs/multi_sample/{project}/{project}_snv.vcf.gz` | VCF file containing called variants for all samples | +| `snvs/multi_sample/{project}/{project}_snv.vcf.gz.tbi` | Index of the corresponding VCF file | +| `snvs/stats/single_sample/*.stats.txt` | Variant statistics | +| `qc/deepvariant_vcfstatsreport/{sample}/${sample}.visual_report.html` | Visual report of SNV calls from DeepVariant | [echtvar](https://github.com/brentp/echtvar) and [VEP](https://www.ensembl.org/vep) are used for annotating SNVs, while [CADD](https://cadd.gs.washington.edu/) is used to annotate INDELs with CADD scores. diff --git a/modules.json b/modules.json index 55088401..03db26f4 100644 --- a/modules.json +++ b/modules.json @@ -80,6 +80,11 @@ "git_sha": "a7e8b8afd4fa82f20d745fa778bfdbf39c1f7efb", "installed_by": ["modules"] }, + "deepvariant/vcfstatsreport": { + "branch": "master", + "git_sha": "2f9a5431355897e299cb41928c45f51ea8410c42", + "installed_by": ["modules"] + }, "ensemblvep/vep": { "branch": "master", "git_sha": "06c8865e36741e05ad32ef70ab3fac127486af48", diff --git a/modules/nf-core/deepvariant/vcfstatsreport/main.nf b/modules/nf-core/deepvariant/vcfstatsreport/main.nf new file mode 100644 index 00000000..5bbf06b6 --- /dev/null +++ b/modules/nf-core/deepvariant/vcfstatsreport/main.nf @@ -0,0 +1,59 @@ +process DEEPVARIANT_VCFSTATSREPORT { + tag "$meta.id" + label 'process_single' + + // FIXME Conda is not supported at the moment + // BUG https://github.com/nf-core/modules/issues/1754 + // BUG https://github.com/bioconda/bioconda-recipes/issues/30310 + container "nf-core/deepvariant:1.6.1" + + input: + tuple val(meta), path(vcf) + + output: + tuple val(meta), path("${prefix}.visual_report.html"), emit: report + path "versions.yml" , emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + // Exit if running this module with -profile conda / -profile mamba + if (workflow.profile.tokenize(',').intersect(['conda', 'mamba']).size() >= 1) { + error "DEEPVARIANT module does not support Conda. Please use Docker / Singularity / Podman instead." + } + def args = task.ext.args ?: '' + prefix = task.ext.prefix ?: "${meta.id}" + // WARN https://github.com/nf-core/modules/pull/5801#issuecomment-2194293755 + // FIXME Revert this on next version bump + def VERSION = '1.6.1' + + """ + /opt/deepvariant/bin/vcf_stats_report \\ + --input_vcf=${vcf} \\ + --outfile_base ${prefix} + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + deepvariant: $VERSION + END_VERSIONS + """ + + stub: + // Exit if running this module with -profile conda / -profile mamba + if (workflow.profile.tokenize(',').intersect(['conda', 'mamba']).size() >= 1) { + error "DEEPVARIANT module does not support Conda. Please use Docker / Singularity / Podman instead." + } + prefix = task.ext.prefix ?: "${meta.id}" + // WARN https://github.com/nf-core/modules/pull/5801#issuecomment-2194293755 + // FIXME Revert this on next version bump + def VERSION = '1.6.1' + """ + touch ${prefix}.visual_report.html + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + deepvariant: $VERSION + END_VERSIONS + """ +} diff --git a/modules/nf-core/deepvariant/vcfstatsreport/meta.yml b/modules/nf-core/deepvariant/vcfstatsreport/meta.yml new file mode 100644 index 00000000..c882a1b1 --- /dev/null +++ b/modules/nf-core/deepvariant/vcfstatsreport/meta.yml @@ -0,0 +1,47 @@ +name: deepvariant_vcfstatsreport +description: DeepVariant is an analysis pipeline that uses a deep neural network to + call genetic variants from next-generation DNA sequencing data +keywords: + - variant calling + - machine learning + - neural network +tools: + - deepvariant: + description: DeepVariant is an analysis pipeline that uses a deep neural network + to call genetic variants from next-generation DNA sequencing data + homepage: https://github.com/google/deepvariant + documentation: https://github.com/google/deepvariant + tool_dev_url: https://github.com/google/deepvariant + doi: "10.1038/nbt.4235" + licence: ["BSD-3-clause"] + identifier: biotools:deepvariant +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,vcf.gz,bcf,bcf.gz}" +output: + - report: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - ${prefix}.visual_report.html: + type: file + description: Visual report in HTML format + pattern: "*.html" + - versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" +authors: + - "@fellen31" +maintainers: + - "@fellen31" diff --git a/modules/nf-core/deepvariant/vcfstatsreport/tests/main.nf.test b/modules/nf-core/deepvariant/vcfstatsreport/tests/main.nf.test new file mode 100644 index 00000000..bec946ef --- /dev/null +++ b/modules/nf-core/deepvariant/vcfstatsreport/tests/main.nf.test @@ -0,0 +1,183 @@ +nextflow_process { + + name "Test Process DEEPVARIANT_VCFSTATSREPORT" + script "../main.nf" + process "DEEPVARIANT_VCFSTATSREPORT" + + tag "deepvariant/vcfstatsreport" + tag "deepvariant" + tag "modules" + tag "modules_nfcore" + + test("vcf") { + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + file(params.modules_testdata_base_path + '/genomics/sarscov2/illumina/vcf/test.vcf', checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("vcf.gz") { + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + file(params.modules_testdata_base_path + '/genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("bcf") { + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + file(params.modules_testdata_base_path + '/genomics/sarscov2/illumina/vcf/test.bcf', checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("bcf.gz") { + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + file(params.modules_testdata_base_path + '/genomics/sarscov2/illumina/vcf/test.bcf.gz', checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("vcf - stub") { + + options "-stub" + + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + file(params.modules_testdata_base_path + '/genomics/sarscov2/illumina/vcf/test.vcf', checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("vcf.gz - stub") { + + options "-stub" + + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + file(params.modules_testdata_base_path + '/genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("bcf - stub") { + + options "-stub" + + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + file(params.modules_testdata_base_path + '/genomics/sarscov2/illumina/vcf/test.bcf', checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("bcf.gz - stub") { + + options "-stub" + + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + file(params.modules_testdata_base_path + '/genomics/sarscov2/illumina/vcf/test.bcf.gz', checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } +} diff --git a/modules/nf-core/deepvariant/vcfstatsreport/tests/main.nf.test.snap b/modules/nf-core/deepvariant/vcfstatsreport/tests/main.nf.test.snap new file mode 100644 index 00000000..9a9ac3ce --- /dev/null +++ b/modules/nf-core/deepvariant/vcfstatsreport/tests/main.nf.test.snap @@ -0,0 +1,266 @@ +{ + "bcf.gz": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.visual_report.html:md5,28e2e19d97cdeddf25813534384ae9ca" + ] + ], + "1": [ + "versions.yml:md5,3378d1cbd4b3ba7579dcd6c47266f996" + ], + "report": [ + [ + { + "id": "test" + }, + "test.visual_report.html:md5,28e2e19d97cdeddf25813534384ae9ca" + ] + ], + "versions": [ + "versions.yml:md5,3378d1cbd4b3ba7579dcd6c47266f996" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-10-14T08:19:35.672028563" + }, + "bcf": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.visual_report.html:md5,28e2e19d97cdeddf25813534384ae9ca" + ] + ], + "1": [ + "versions.yml:md5,3378d1cbd4b3ba7579dcd6c47266f996" + ], + "report": [ + [ + { + "id": "test" + }, + "test.visual_report.html:md5,28e2e19d97cdeddf25813534384ae9ca" + ] + ], + "versions": [ + "versions.yml:md5,3378d1cbd4b3ba7579dcd6c47266f996" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-10-11T07:47:10.485269156" + }, + "vcf.gz - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.visual_report.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + "versions.yml:md5,3378d1cbd4b3ba7579dcd6c47266f996" + ], + "report": [ + [ + { + "id": "test" + }, + "test.visual_report.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,3378d1cbd4b3ba7579dcd6c47266f996" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-10-14T08:34:50.411910578" + }, + "vcf.gz": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.visual_report.html:md5,28e2e19d97cdeddf25813534384ae9ca" + ] + ], + "1": [ + "versions.yml:md5,3378d1cbd4b3ba7579dcd6c47266f996" + ], + "report": [ + [ + { + "id": "test" + }, + "test.visual_report.html:md5,28e2e19d97cdeddf25813534384ae9ca" + ] + ], + "versions": [ + "versions.yml:md5,3378d1cbd4b3ba7579dcd6c47266f996" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-10-11T07:47:00.438649988" + }, + "vcf": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.visual_report.html:md5,28e2e19d97cdeddf25813534384ae9ca" + ] + ], + "1": [ + "versions.yml:md5,3378d1cbd4b3ba7579dcd6c47266f996" + ], + "report": [ + [ + { + "id": "test" + }, + "test.visual_report.html:md5,28e2e19d97cdeddf25813534384ae9ca" + ] + ], + "versions": [ + "versions.yml:md5,3378d1cbd4b3ba7579dcd6c47266f996" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-10-11T07:44:07.427456921" + }, + "bcf - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.visual_report.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + "versions.yml:md5,3378d1cbd4b3ba7579dcd6c47266f996" + ], + "report": [ + [ + { + "id": "test" + }, + "test.visual_report.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,3378d1cbd4b3ba7579dcd6c47266f996" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-10-14T08:35:03.341417618" + }, + "bcf.gz - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.visual_report.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + "versions.yml:md5,3378d1cbd4b3ba7579dcd6c47266f996" + ], + "report": [ + [ + { + "id": "test" + }, + "test.visual_report.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,3378d1cbd4b3ba7579dcd6c47266f996" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-10-14T08:35:13.52398762" + }, + "vcf - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.visual_report.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + "versions.yml:md5,3378d1cbd4b3ba7579dcd6c47266f996" + ], + "report": [ + [ + { + "id": "test" + }, + "test.visual_report.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,3378d1cbd4b3ba7579dcd6c47266f996" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-10-14T08:34:35.977457571" + } +} \ No newline at end of file diff --git a/modules/nf-core/deepvariant/vcfstatsreport/tests/tags.yml b/modules/nf-core/deepvariant/vcfstatsreport/tests/tags.yml new file mode 100644 index 00000000..3b1f5922 --- /dev/null +++ b/modules/nf-core/deepvariant/vcfstatsreport/tests/tags.yml @@ -0,0 +1,2 @@ +deepvariant/vcfstatsreport: + - modules/nf-core/deepvariant/vcfstatsreport/** diff --git a/subworkflows/local/short_variant_calling/main.nf b/subworkflows/local/short_variant_calling/main.nf index d6cc9342..c155ac14 100644 --- a/subworkflows/local/short_variant_calling/main.nf +++ b/subworkflows/local/short_variant_calling/main.nf @@ -7,6 +7,7 @@ include { BCFTOOLS_FILLTAGS } from '../../../modules/l include { BCFTOOLS_NORM as BCFTOOLS_NORM_MULTISAMPLE } from '../../../modules/nf-core/bcftools/norm/main' include { BCFTOOLS_NORM as BCFTOOLS_NORM_SINGLESAMPLE } from '../../../modules/nf-core/bcftools/norm/main' include { DEEPVARIANT } from '../../../modules/nf-core/deepvariant/main' +include { DEEPVARIANT_VCFSTATSREPORT } from '../../../modules/nf-core/deepvariant/vcfstatsreport/main' include { GLNEXUS } from '../../../modules/nf-core/glnexus/main' workflow SHORT_VARIANT_CALLING { @@ -99,10 +100,15 @@ workflow SHORT_VARIANT_CALLING { ) ch_versions = ch_versions.mix(BCFTOOLS_NORM_MULTISAMPLE.out.versions) + // This is run before normalization for each sample to mimic run_deepvariant pipeline + DEEPVARIANT_VCFSTATSREPORT ( BCFTOOLS_CONCAT.out.vcf ) + ch_versions = ch_versions.mix(DEEPVARIANT_VCFSTATSREPORT.out.versions) + emit: - snp_calls_vcf = BCFTOOLS_NORM_SINGLESAMPLE.out.vcf // channel: [ val(meta), path(vcf) ] - snp_calls_tbi = BCFTOOLS_NORM_SINGLESAMPLE.out.tbi // channel: [ val(meta), path(tbi) ] - combined_bcf = BCFTOOLS_NORM_MULTISAMPLE.out.vcf // channel: [ val(meta), path(bcf) ] - combined_csi = BCFTOOLS_NORM_MULTISAMPLE.out.csi // channel: [ val(meta), path(csi) ] - versions = ch_versions // channel: [ path(versions.yml) ] + snp_calls_vcf = BCFTOOLS_NORM_SINGLESAMPLE.out.vcf // channel: [ val(meta), path(vcf) ] + snp_calls_tbi = BCFTOOLS_NORM_SINGLESAMPLE.out.tbi // channel: [ val(meta), path(tbi) ] + combined_bcf = BCFTOOLS_NORM_MULTISAMPLE.out.vcf // channel: [ val(meta), path(bcf) ] + combined_csi = BCFTOOLS_NORM_MULTISAMPLE.out.csi // channel: [ val(meta), path(csi) ] + vcfstatsreport = DEEPVARIANT_VCFSTATSREPORT.out.report // channel: [ val(meta), path(html) ] + versions = ch_versions // channel: [ path(versions.yml) ] } diff --git a/subworkflows/local/short_variant_calling/tests/main.nf.test.snap b/subworkflows/local/short_variant_calling/tests/main.nf.test.snap index 1755ef49..d084a601 100644 --- a/subworkflows/local/short_variant_calling/tests/main.nf.test.snap +++ b/subworkflows/local/short_variant_calling/tests/main.nf.test.snap @@ -41,13 +41,23 @@ ] ], "4": [ + [ + { + "id": "test", + "single_end": false + }, + "test.visual_report.html:md5,828ada93b6101047c8de4789803c726c" + ] + ], + "5": [ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", "versions.yml:md5,13101c9283d4a82e859574b0a981311c", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", - "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6" + "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", + "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531" ], "combined_bcf": [ [ @@ -87,6 +97,15 @@ "test_norm_singlesample.vcf.gz:md5,8d1b64c0eed7eb66dd3294fcbc15b4a1" ] ], + "vcfstatsreport": [ + [ + { + "id": "test", + "single_end": false + }, + "test.visual_report.html:md5,828ada93b6101047c8de4789803c726c" + ] + ], "versions": [ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", "versions.yml:md5,13101c9283d4a82e859574b0a981311c", @@ -94,7 +113,8 @@ "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", - "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6" + "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", + "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531" ] } ], @@ -102,7 +122,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-25T09:40:03.879250426" + "timestamp": "2024-10-29T16:07:40.986337827" }, "1 sample - 2 bed, fasta, fai, bed, [] - stub": { "content": [ @@ -162,6 +182,15 @@ ] ], "4": [ + [ + { + "id": "test", + "single_end": false + }, + "test.visual_report.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "5": [ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", "versions.yml:md5,13101c9283d4a82e859574b0a981311c", @@ -173,7 +202,8 @@ "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", - "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6" + "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", + "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531" ], "combined_bcf": [ [ @@ -229,6 +259,15 @@ "test_norm_singlesample.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] ], + "vcfstatsreport": [ + [ + { + "id": "test", + "single_end": false + }, + "test.visual_report.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], "versions": [ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", @@ -241,7 +280,8 @@ "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", - "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6" + "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", + "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531" ] } ], @@ -249,7 +289,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-25T09:42:56.764594137" + "timestamp": "2024-10-29T16:10:40.730903286" }, "1 sample - 1 bed, fasta, fai, bed, []": { "content": [ @@ -293,13 +333,23 @@ ] ], "4": [ + [ + { + "id": "test", + "single_end": false + }, + "test.visual_report.html:md5,828ada93b6101047c8de4789803c726c" + ] + ], + "5": [ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", "versions.yml:md5,13101c9283d4a82e859574b0a981311c", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", - "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6" + "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", + "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531" ], "combined_bcf": [ [ @@ -339,6 +389,15 @@ "test_norm_singlesample.vcf.gz:md5,8d1b64c0eed7eb66dd3294fcbc15b4a1" ] ], + "vcfstatsreport": [ + [ + { + "id": "test", + "single_end": false + }, + "test.visual_report.html:md5,828ada93b6101047c8de4789803c726c" + ] + ], "versions": [ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", "versions.yml:md5,13101c9283d4a82e859574b0a981311c", @@ -346,7 +405,8 @@ "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", - "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6" + "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", + "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531" ] } ], @@ -354,7 +414,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-25T09:40:32.794032818" + "timestamp": "2024-10-29T16:08:11.306771116" }, "2 samples - 2 bed, fasta, fai, bed, par_bed": { "content": [ @@ -428,6 +488,22 @@ ] ], "4": [ + [ + { + "id": "test", + "single_end": false + }, + "test.visual_report.html:md5,316443518dbcf50923d09b07ec39a9f9" + ], + [ + { + "id": "test2", + "single_end": false + }, + "test2.visual_report.html:md5,3358ec9541a51f43ab77cc79a8ed2f23" + ] + ], + "5": [ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", "versions.yml:md5,13101c9283d4a82e859574b0a981311c", @@ -443,7 +519,9 @@ "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", - "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6" + "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", + "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531", + "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531" ], "combined_bcf": [ [ @@ -513,6 +591,22 @@ "test2_norm_singlesample.vcf.gz:md5,0e42833e64e0f427ca09259e17e2765b" ] ], + "vcfstatsreport": [ + [ + { + "id": "test", + "single_end": false + }, + "test.visual_report.html:md5,316443518dbcf50923d09b07ec39a9f9" + ], + [ + { + "id": "test2", + "single_end": false + }, + "test2.visual_report.html:md5,3358ec9541a51f43ab77cc79a8ed2f23" + ] + ], "versions": [ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", @@ -529,7 +623,9 @@ "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", - "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6" + "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", + "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531", + "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531" ] } ], @@ -537,7 +633,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-25T09:42:10.61904887" + "timestamp": "2024-10-29T16:09:53.140402914" }, "2 samples - 2 bed, fasta, fai, bed, [] - stub": { "content": [ @@ -611,6 +707,22 @@ ] ], "4": [ + [ + { + "id": "test", + "single_end": false + }, + "test.visual_report.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + { + "id": "test2", + "single_end": false + }, + "test2.visual_report.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "5": [ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", "versions.yml:md5,13101c9283d4a82e859574b0a981311c", @@ -626,7 +738,9 @@ "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", - "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6" + "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", + "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531", + "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531" ], "combined_bcf": [ [ @@ -696,6 +810,22 @@ "test2_norm_singlesample.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] ], + "vcfstatsreport": [ + [ + { + "id": "test", + "single_end": false + }, + "test.visual_report.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + { + "id": "test2", + "single_end": false + }, + "test2.visual_report.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], "versions": [ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", @@ -712,7 +842,9 @@ "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", - "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6" + "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", + "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531", + "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531" ] } ], @@ -720,7 +852,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-25T09:43:09.654620289" + "timestamp": "2024-10-29T16:10:54.089846948" }, "2 samples - 2 bed, fasta, fai, bed, par_bed - stub": { "content": [ @@ -794,6 +926,22 @@ ] ], "4": [ + [ + { + "id": "test", + "single_end": false + }, + "test.visual_report.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + { + "id": "test2", + "single_end": false + }, + "test2.visual_report.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "5": [ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", "versions.yml:md5,13101c9283d4a82e859574b0a981311c", @@ -809,7 +957,9 @@ "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", - "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6" + "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", + "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531", + "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531" ], "combined_bcf": [ [ @@ -879,6 +1029,22 @@ "test2_norm_singlesample.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] ], + "vcfstatsreport": [ + [ + { + "id": "test", + "single_end": false + }, + "test.visual_report.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + { + "id": "test2", + "single_end": false + }, + "test2.visual_report.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], "versions": [ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", @@ -895,7 +1061,9 @@ "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", - "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6" + "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", + "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531", + "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531" ] } ], @@ -903,7 +1071,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-25T09:43:22.844047056" + "timestamp": "2024-10-29T16:11:07.961520037" }, "1 sample - 1 bed, fasta, fai, bed, [] - stub": { "content": [ @@ -947,13 +1115,23 @@ ] ], "4": [ + [ + { + "id": "test", + "single_end": false + }, + "test.visual_report.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "5": [ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", "versions.yml:md5,13101c9283d4a82e859574b0a981311c", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", - "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6" + "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", + "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531" ], "combined_bcf": [ [ @@ -993,6 +1171,15 @@ "test_norm_singlesample.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] ], + "vcfstatsreport": [ + [ + { + "id": "test", + "single_end": false + }, + "test.visual_report.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], "versions": [ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", "versions.yml:md5,13101c9283d4a82e859574b0a981311c", @@ -1000,7 +1187,8 @@ "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", - "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6" + "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", + "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531" ] } ], @@ -1008,7 +1196,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-25T09:42:44.538312054" + "timestamp": "2024-10-29T16:10:27.465086494" }, "1 sample - no bed, fasta, fai, [], []": { "content": [ @@ -1056,13 +1244,23 @@ ] ], "4": [ + [ + { + "id": "test", + "single_end": false + }, + "test.visual_report.html:md5,828ada93b6101047c8de4789803c726c" + ] + ], + "5": [ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", "versions.yml:md5,13101c9283d4a82e859574b0a981311c", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", - "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6" + "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", + "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531" ], "combined_bcf": [ [ @@ -1106,6 +1304,15 @@ "test_norm_singlesample.vcf.gz:md5,8d1b64c0eed7eb66dd3294fcbc15b4a1" ] ], + "vcfstatsreport": [ + [ + { + "id": "test", + "single_end": false + }, + "test.visual_report.html:md5,828ada93b6101047c8de4789803c726c" + ] + ], "versions": [ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", "versions.yml:md5,13101c9283d4a82e859574b0a981311c", @@ -1113,7 +1320,8 @@ "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", - "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6" + "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", + "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531" ] } ], @@ -1121,7 +1329,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-25T09:39:34.803782002" + "timestamp": "2024-10-29T16:07:10.788542987" }, "1 sample - 2 bed, fasta, fai, bed, []": { "content": [ @@ -1181,6 +1389,15 @@ ] ], "4": [ + [ + { + "id": "test", + "single_end": false + }, + "test.visual_report.html:md5,316443518dbcf50923d09b07ec39a9f9" + ] + ], + "5": [ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", "versions.yml:md5,13101c9283d4a82e859574b0a981311c", @@ -1192,7 +1409,8 @@ "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", - "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6" + "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", + "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531" ], "combined_bcf": [ [ @@ -1248,6 +1466,15 @@ "test_norm_singlesample.vcf.gz:md5,f8e492c9c4d6e0cb027b300bb3f7155a" ] ], + "vcfstatsreport": [ + [ + { + "id": "test", + "single_end": false + }, + "test.visual_report.html:md5,316443518dbcf50923d09b07ec39a9f9" + ] + ], "versions": [ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", @@ -1260,7 +1487,8 @@ "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", - "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6" + "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", + "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531" ] } ], @@ -1268,7 +1496,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-25T09:41:03.437551855" + "timestamp": "2024-10-29T16:08:43.412821579" }, "2 samples - 2 bed, fasta, fai, bed, []": { "content": [ @@ -1342,6 +1570,22 @@ ] ], "4": [ + [ + { + "id": "test", + "single_end": false + }, + "test.visual_report.html:md5,316443518dbcf50923d09b07ec39a9f9" + ], + [ + { + "id": "test2", + "single_end": false + }, + "test2.visual_report.html:md5,3358ec9541a51f43ab77cc79a8ed2f23" + ] + ], + "5": [ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", "versions.yml:md5,13101c9283d4a82e859574b0a981311c", @@ -1357,7 +1601,9 @@ "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", - "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6" + "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", + "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531", + "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531" ], "combined_bcf": [ [ @@ -1427,6 +1673,22 @@ "test2_norm_singlesample.vcf.gz:md5,0e42833e64e0f427ca09259e17e2765b" ] ], + "vcfstatsreport": [ + [ + { + "id": "test", + "single_end": false + }, + "test.visual_report.html:md5,316443518dbcf50923d09b07ec39a9f9" + ], + [ + { + "id": "test2", + "single_end": false + }, + "test2.visual_report.html:md5,3358ec9541a51f43ab77cc79a8ed2f23" + ] + ], "versions": [ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", @@ -1443,7 +1705,9 @@ "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", - "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6" + "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", + "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531", + "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531" ] } ], @@ -1451,7 +1715,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-25T09:41:37.132064291" + "timestamp": "2024-10-29T16:09:18.071239185" }, "1 sample - no bed, fasta, fai, [], [] - stub": { "content": [ @@ -1499,13 +1763,23 @@ ] ], "4": [ + [ + { + "id": "test", + "single_end": false + }, + "test.visual_report.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "5": [ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", "versions.yml:md5,13101c9283d4a82e859574b0a981311c", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", - "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6" + "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", + "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531" ], "combined_bcf": [ [ @@ -1549,6 +1823,15 @@ "test_norm_singlesample.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] ], + "vcfstatsreport": [ + [ + { + "id": "test", + "single_end": false + }, + "test.visual_report.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], "versions": [ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", "versions.yml:md5,13101c9283d4a82e859574b0a981311c", @@ -1556,7 +1839,8 @@ "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", - "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6" + "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", + "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531" ] } ], @@ -1564,7 +1848,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-25T09:42:22.040964953" + "timestamp": "2024-10-29T16:10:04.450948339" }, "1 sample - 1 bed, fasta, fai, [], [] - stub": { "content": [ @@ -1608,13 +1892,23 @@ ] ], "4": [ + [ + { + "id": "test", + "single_end": false + }, + "test.visual_report.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "5": [ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", "versions.yml:md5,13101c9283d4a82e859574b0a981311c", "versions.yml:md5,77dbd5f16ae8b59d09563a07be6faa44", "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", - "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6" + "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", + "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531" ], "combined_bcf": [ [ @@ -1654,6 +1948,15 @@ "test_norm_singlesample.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] ], + "vcfstatsreport": [ + [ + { + "id": "test", + "single_end": false + }, + "test.visual_report.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], "versions": [ "versions.yml:md5,0ca81f5e441a48c6c650a07c7045ed34", "versions.yml:md5,13101c9283d4a82e859574b0a981311c", @@ -1661,7 +1964,8 @@ "versions.yml:md5,7d9ebdfc24f293b07e70dd2d18f44022", "versions.yml:md5,afe349eb9156445b91cacdcfaabcf43d", "versions.yml:md5,b461c4ef2d44da4047b74239461bdff6", - "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6" + "versions.yml:md5,dce103ef6b2f37c6844db8191418b9e6", + "versions.yml:md5,f13ae32e1e3f3d274d4b3c7097f56531" ] } ], @@ -1669,6 +1973,6 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-25T09:42:33.197137178" + "timestamp": "2024-10-29T16:10:15.936988344" } } \ No newline at end of file diff --git a/tests/.nftignore b/tests/.nftignore index 3499afeb..4a4111aa 100644 --- a/tests/.nftignore +++ b/tests/.nftignore @@ -10,7 +10,7 @@ paraphase/**/*.{vcf.gz,tbi,bam,bai,json} phased_variants/**/*.{vcf.gz,tbi} pipeline_info/*.{html,json,txt,yml} qc/cramino/**/*.txt -qc/fastqc/**/*.zip +qc/fastqc/**/*.{zip,html} qc/somalier/**/*.{html,tsv} repeat_annotation/**/*.{vcf.gz,tbi} repeat_calling/**/*.{vcf.gz,tbi,bam,bai} diff --git a/tests/samplesheet.nf.test.snap b/tests/samplesheet.nf.test.snap index d99fa7c1..de317588 100644 --- a/tests/samplesheet.nf.test.snap +++ b/tests/samplesheet.nf.test.snap @@ -1,7 +1,7 @@ { "test profile": { "content": [ - 101, + 102, { "ADD_FOUND_IN_TAG": { "bcftools": 1.2, @@ -81,6 +81,9 @@ "DEEPVARIANT": { "deepvariant": "1.6.1" }, + "DEEPVARIANT_VCFSTATSREPORT": { + "deepvariant": "1.6.1" + }, "DIPCALL": { "dipcall": 0.3 }, @@ -334,6 +337,9 @@ "qc/cramino/unphased/HG002_Revio", "qc/cramino/unphased/HG002_Revio/HG002_Revio_cramino_aligned.arrow", "qc/cramino/unphased/HG002_Revio/HG002_Revio_cramino_aligned.txt", + "qc/deepvariant_vcfstatsreport", + "qc/deepvariant_vcfstatsreport/HG002_Revio", + "qc/deepvariant_vcfstatsreport/HG002_Revio/HG002_Revio.visual_report.html", "qc/fastqc", "qc/fastqc/HG002_Revio", "qc/fastqc/HG002_Revio/HG002_Revio_fastqc.html", @@ -439,7 +445,7 @@ "test.ped:md5,bd5cec27ba7337a85cf98e787131e2b5", "HG002_Revio_cramino_aligned_phased.arrow:md5,a76219e9046db32c4b3d6d78425c5d78", "HG002_Revio_cramino_aligned.arrow:md5,a76219e9046db32c4b3d6d78425c5d78", - "HG002_Revio_fastqc.html:md5,1080b519dbbb66f45eee74e311d4922c", + "HG002_Revio.visual_report.html:md5,93c6834368c47c3c71887d47b06666ab", "HG002_Revio.mosdepth.global.dist.txt:md5,63701e857361046628f89cb84988ea1d", "HG002_Revio.mosdepth.region.dist.txt:md5,6b46396518979ff9d9771cb8a8fbbab0", "HG002_Revio.mosdepth.summary.txt:md5,311aad293c6d8a646b6dd4edc337845c", @@ -551,6 +557,6 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-25T13:00:09.69999597" + "timestamp": "2024-10-29T16:29:16.646318582" } } \ No newline at end of file diff --git a/tests/samplesheet_multisample_bam.nf.test.snap b/tests/samplesheet_multisample_bam.nf.test.snap index 21e2178a..a07449d8 100644 --- a/tests/samplesheet_multisample_bam.nf.test.snap +++ b/tests/samplesheet_multisample_bam.nf.test.snap @@ -1,7 +1,7 @@ { "samplesheet_multisample_bam | --phaser hiphase": { "content": [ - 146, + 148, { "ADD_FOUND_IN_TAG": { "bcftools": 1.2, @@ -81,6 +81,9 @@ "DEEPVARIANT": { "deepvariant": "1.6.1" }, + "DEEPVARIANT_VCFSTATSREPORT": { + "deepvariant": "1.6.1" + }, "DIPCALL": { "dipcall": 0.3 }, @@ -391,6 +394,11 @@ "qc/cramino/unphased/HG002_Revio_B", "qc/cramino/unphased/HG002_Revio_B/HG002_Revio_B_cramino_aligned.arrow", "qc/cramino/unphased/HG002_Revio_B/HG002_Revio_B_cramino_aligned.txt", + "qc/deepvariant_vcfstatsreport", + "qc/deepvariant_vcfstatsreport/HG002_Revio_A", + "qc/deepvariant_vcfstatsreport/HG002_Revio_A/HG002_Revio_A.visual_report.html", + "qc/deepvariant_vcfstatsreport/HG002_Revio_B", + "qc/deepvariant_vcfstatsreport/HG002_Revio_B/HG002_Revio_B.visual_report.html", "qc/fastqc", "qc/fastqc/HG002_Revio_A", "qc/fastqc/HG002_Revio_A/HG002_Revio_A_fastqc.html", @@ -563,8 +571,8 @@ "HG002_Revio_B_cramino_aligned_phased.arrow:md5,3bb08ac5958c6cb0801f319066c3a1b2", "HG002_Revio_A_cramino_aligned.arrow:md5,a76219e9046db32c4b3d6d78425c5d78", "HG002_Revio_B_cramino_aligned.arrow:md5,3bb08ac5958c6cb0801f319066c3a1b2", - "HG002_Revio_A_fastqc.html:md5,25f875c3a542ff8590655685bc152658", - "HG002_Revio_B_fastqc.html:md5,4b7d698cbe79dbfb4a74e8e7f84891d5", + "HG002_Revio_A.visual_report.html:md5,666b152a94ed443ec1d2372583734e40", + "HG002_Revio_B.visual_report.html:md5,7c9fddebb12b0d0b3d011ed277934a1e", "HG002_Revio_A.mosdepth.global.dist.txt:md5,63701e857361046628f89cb84988ea1d", "HG002_Revio_A.mosdepth.region.dist.txt:md5,6b46396518979ff9d9771cb8a8fbbab0", "HG002_Revio_A.mosdepth.summary.txt:md5,311aad293c6d8a646b6dd4edc337845c", @@ -759,6 +767,6 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-25T13:01:47.642764093" + "timestamp": "2024-10-29T16:30:51.310838318" } } \ No newline at end of file diff --git a/tests/samplesheet_multisample_ont_bam.nf.test.snap b/tests/samplesheet_multisample_ont_bam.nf.test.snap index 5a25e57d..8eae65e5 100644 --- a/tests/samplesheet_multisample_ont_bam.nf.test.snap +++ b/tests/samplesheet_multisample_ont_bam.nf.test.snap @@ -1,7 +1,7 @@ { "samplesheet_multisample_ont_bam | --preset ONT_R10 --phaser whatshap --parallel_alignments 1 --parallel_snv 1": { "content": [ - 95, + 97, { "ADD_FOUND_IN_TAG": { "bcftools": 1.2, @@ -72,6 +72,9 @@ "DEEPVARIANT": { "deepvariant": "1.6.1" }, + "DEEPVARIANT_VCFSTATSREPORT": { + "deepvariant": "1.6.1" + }, "ECHTVAR_ANNO": { "echtvar": "0.2.0" }, @@ -299,6 +302,11 @@ "qc/cramino/unphased/HG002_ONT_B", "qc/cramino/unphased/HG002_ONT_B/HG002_ONT_B_cramino_aligned.arrow", "qc/cramino/unphased/HG002_ONT_B/HG002_ONT_B_cramino_aligned.txt", + "qc/deepvariant_vcfstatsreport", + "qc/deepvariant_vcfstatsreport/HG002_ONT_A", + "qc/deepvariant_vcfstatsreport/HG002_ONT_A/HG002_ONT_A.visual_report.html", + "qc/deepvariant_vcfstatsreport/HG002_ONT_B", + "qc/deepvariant_vcfstatsreport/HG002_ONT_B/HG002_ONT_B.visual_report.html", "qc/fastqc", "qc/fastqc/HG002_ONT_A", "qc/fastqc/HG002_ONT_A/HG002_ONT_A_fastqc.html", @@ -402,8 +410,8 @@ "HG002_ONT_B_cramino_aligned_phased.arrow:md5,61af72539e105cec79db7c9b78eb15a7", "HG002_ONT_A_cramino_aligned.arrow:md5,d2a5c81595fa34925ab8f03078487d81", "HG002_ONT_B_cramino_aligned.arrow:md5,61af72539e105cec79db7c9b78eb15a7", - "HG002_ONT_A_fastqc.html:md5,94d86b38a30f846de64b840656663d18", - "HG002_ONT_B_fastqc.html:md5,2ec692ee5acf69717811be481d38f775", + "HG002_ONT_A.visual_report.html:md5,f2a7d4131dd7fb01fbb2134e18eb4dc1", + "HG002_ONT_B.visual_report.html:md5,256ebbe3f87cb2633637f7d802671e21", "HG002_ONT_A.mosdepth.global.dist.txt:md5,5ae0972357f99aa481a0bf12fb9e0b0b", "HG002_ONT_A.mosdepth.region.dist.txt:md5,023b1c6aeaf8fa5ededd6b711a5cd012", "HG002_ONT_A.mosdepth.summary.txt:md5,c3b664b0983213f73edf3c0d5a0b04a2", @@ -502,6 +510,6 @@ "nf-test": "0.9.0", "nextflow": "24.04.4" }, - "timestamp": "2024-10-25T13:10:46.10939576" + "timestamp": "2024-10-29T16:32:18.817288108" } } \ No newline at end of file