From 3a2bbd7ef29db551977c3be1a97ec89e7affacbc Mon Sep 17 00:00:00 2001 From: Harshil Patel Date: Mon, 8 Jan 2024 17:28:50 +0000 Subject: [PATCH 001/634] Bump pipeline version to 3.15.0dev --- CHANGELOG.md | 10 ++++++++++ assets/multiqc_config.yml | 2 +- nextflow.config | 2 +- 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e2d4c8fc8..e945e744d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,16 @@ 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). +## v3.15.0dev - [date] + +### Credits + +### Enhancements & fixes + +### Parameters + +### Software dependencies + ## [[3.14.0](https://github.com/nf-core/rnaseq/releases/tag/3.14.0)] - 2024-01-08 ### Credits diff --git a/assets/multiqc_config.yml b/assets/multiqc_config.yml index e738f4854..712674f29 100644 --- a/assets/multiqc_config.yml +++ b/assets/multiqc_config.yml @@ -1,5 +1,5 @@ report_comment: > - This report has been generated by the nf-core/rnaseq analysis pipeline. For information about how to interpret these results, please see the documentation. + This report has been generated by the nf-core/rnaseq analysis pipeline. For information about how to interpret these results, please see the documentation. report_section_order: "nf-core-rnaseq-methods-description": order: -1000 diff --git a/nextflow.config b/nextflow.config index f4d9f87e2..c9c9cb08d 100644 --- a/nextflow.config +++ b/nextflow.config @@ -322,7 +322,7 @@ manifest { description = """RNA sequencing analysis pipeline for gene/isoform quantification and extensive quality control.""" mainScript = 'main.nf' nextflowVersion = '!>=23.04.0' - version = '3.14.0' + version = '3.15.0dev' doi = 'https://doi.org/10.5281/zenodo.1400710' } From e24ede7484388d52649056e8acf4d1a48ed42232 Mon Sep 17 00:00:00 2001 From: maxulysse Date: Wed, 10 Jan 2024 16:03:51 +0100 Subject: [PATCH 002/634] update qualimap/rnaseq --- modules.json | 5 ++--- .../nf-core/qualimap/rnaseq/environment.yml | 7 +++++++ modules/nf-core/qualimap/rnaseq/main.nf | 2 +- modules/nf-core/qualimap/rnaseq/meta.yml | 2 ++ .../qualimap/rnaseq/qualimap-rnaseq.diff | 19 ------------------- 5 files changed, 12 insertions(+), 23 deletions(-) create mode 100644 modules/nf-core/qualimap/rnaseq/environment.yml delete mode 100644 modules/nf-core/qualimap/rnaseq/qualimap-rnaseq.diff diff --git a/modules.json b/modules.json index 113f5139f..67970abf1 100644 --- a/modules.json +++ b/modules.json @@ -90,9 +90,8 @@ }, "qualimap/rnaseq": { "branch": "master", - "git_sha": "4657d98bc9f565e067c4d924126ce107056f5e2f", - "installed_by": ["modules"], - "patch": "modules/nf-core/qualimap/rnaseq/qualimap-rnaseq.diff" + "git_sha": "3902a0cfeb7a4bc12872371d1bea93aba692243b", + "installed_by": ["modules"] }, "rsem/calculateexpression": { "branch": "master", diff --git a/modules/nf-core/qualimap/rnaseq/environment.yml b/modules/nf-core/qualimap/rnaseq/environment.yml new file mode 100644 index 000000000..590ae85f7 --- /dev/null +++ b/modules/nf-core/qualimap/rnaseq/environment.yml @@ -0,0 +1,7 @@ +name: qualimap_rnaseq +channels: + - conda-forge + - bioconda + - defaults +dependencies: + - bioconda::qualimap=2.3 diff --git a/modules/nf-core/qualimap/rnaseq/main.nf b/modules/nf-core/qualimap/rnaseq/main.nf index b8a370973..4411d8689 100644 --- a/modules/nf-core/qualimap/rnaseq/main.nf +++ b/modules/nf-core/qualimap/rnaseq/main.nf @@ -2,7 +2,7 @@ process QUALIMAP_RNASEQ { tag "$meta.id" label 'process_medium' - conda "bioconda::qualimap=2.3" + conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/qualimap:2.3--hdfd78af_0' : 'biocontainers/qualimap:2.3--hdfd78af_0' }" diff --git a/modules/nf-core/qualimap/rnaseq/meta.yml b/modules/nf-core/qualimap/rnaseq/meta.yml index 7738f08d8..6f766e4f5 100644 --- a/modules/nf-core/qualimap/rnaseq/meta.yml +++ b/modules/nf-core/qualimap/rnaseq/meta.yml @@ -50,3 +50,5 @@ output: pattern: "versions.yml" authors: - "@FriederikeHanssen" +maintainers: + - "@FriederikeHanssen" diff --git a/modules/nf-core/qualimap/rnaseq/qualimap-rnaseq.diff b/modules/nf-core/qualimap/rnaseq/qualimap-rnaseq.diff deleted file mode 100644 index 48f498081..000000000 --- a/modules/nf-core/qualimap/rnaseq/qualimap-rnaseq.diff +++ /dev/null @@ -1,19 +0,0 @@ -Changes in module 'nf-core/qualimap/rnaseq' ---- modules/nf-core/qualimap/rnaseq/main.nf -+++ modules/nf-core/qualimap/rnaseq/main.nf -@@ -2,10 +2,10 @@ - tag "$meta.id" - label 'process_medium' - -- conda "bioconda::qualimap=2.2.2d" -+ conda "bioconda::qualimap=2.3" - container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? -- 'https://depot.galaxyproject.org/singularity/qualimap:2.2.2d--1' : -- 'biocontainers/qualimap:2.2.2d--1' }" -+ 'https://depot.galaxyproject.org/singularity/qualimap:2.3--hdfd78af_0' : -+ 'biocontainers/qualimap:2.3--hdfd78af_0' }" - - input: - tuple val(meta), path(bam) - -************************************************************ From d75eeb8e323a1ff89879a0bf7060bbd509e0fc65 Mon Sep 17 00:00:00 2001 From: maxulysse Date: Wed, 10 Jan 2024 16:33:23 +0100 Subject: [PATCH 003/634] bump versions --- assets/multiqc_config.yml | 2 +- nextflow.config | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/assets/multiqc_config.yml b/assets/multiqc_config.yml index e738f4854..712674f29 100644 --- a/assets/multiqc_config.yml +++ b/assets/multiqc_config.yml @@ -1,5 +1,5 @@ report_comment: > - This report has been generated by the nf-core/rnaseq analysis pipeline. For information about how to interpret these results, please see the documentation. + This report has been generated by the nf-core/rnaseq analysis pipeline. For information about how to interpret these results, please see the documentation. report_section_order: "nf-core-rnaseq-methods-description": order: -1000 diff --git a/nextflow.config b/nextflow.config index f4d9f87e2..4b451bb43 100644 --- a/nextflow.config +++ b/nextflow.config @@ -322,7 +322,7 @@ manifest { description = """RNA sequencing analysis pipeline for gene/isoform quantification and extensive quality control.""" mainScript = 'main.nf' nextflowVersion = '!>=23.04.0' - version = '3.14.0' + version = '3.15dev' doi = 'https://doi.org/10.5281/zenodo.1400710' } From 7c1351e42deffcb91daa7c775a0163c6c2f57715 Mon Sep 17 00:00:00 2001 From: maxulysse Date: Wed, 10 Jan 2024 16:33:31 +0100 Subject: [PATCH 004/634] prettier --- docs/usage.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/usage.md b/docs/usage.md index 7b148c636..15db6ced7 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -93,9 +93,9 @@ The `--umitools_grouping_method` parameter affects [how similar, but non-identic #### Examples: -| UMI type | Source | Pipeline parameters | -| ------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- | -| In read name | [Illumina BCL convert >3.7.5](https://emea.support.illumina.com/content/dam/illumina-support/documents/documentation/software_documentation/bcl_convert/bcl-convert-v3-7-5-software-guide-1000000163594-00.pdf) | `--with_umi --skip_umi_extract --umitools_umi_separator ":"` | +| UMI type | Source | Pipeline parameters | +| ------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- | +| In read name | [Illumina BCL convert >3.7.5](https://emea.support.illumina.com/content/dam/illumina-support/documents/documentation/software_documentation/bcl_convert/bcl-convert-v3-7-5-software-guide-1000000163594-00.pdf) | `--with_umi --skip_umi_extract --umitools_umi_separator ":"` | | In sequence | [Lexogen QuantSeq® 3’ mRNA-Seq V2 FWD](https://www.lexogen.com/quantseq-3mrna-sequencing) + [UMI Second Strand Synthesis Module](https://faqs.lexogen.com/faq/how-can-i-add-umis-to-my-quantseq-libraries) | `--with_umi --umitools_extract_method "regex" --umitools_bc_pattern "^(?P.{6})(?P.{4}).*"` | | In sequence | [Lexogen CORALL® Total RNA-Seq V1](https://www.lexogen.com/corall-total-rna-seq/)
> _mind [Appendix H](https://www.lexogen.com/wp-content/uploads/2020/04/095UG190V0130_CORALL-Total-RNA-Seq_2020-03-31.pdf) regarding optional trimming_ | `--with_umi --umitools_extract_method "regex" --umitools_bc_pattern "^(?P.{12}).*"`
Optional: `--clip_r2 9 --three_prime_clip_r2 12` | | In sequence | [Takara Bio SMARTer® Stranded Total RNA-Seq Kit v3](https://www.takarabio.com/documents/User%20Manual/SMARTer%20Stranded%20Total%20RNA/SMARTer%20Stranded%20Total%20RNA-Seq%20Kit%20v3%20-%20Pico%20Input%20Mammalian%20User%20Manual-a_114949.pdf) | `--with_umi --umitools_extract_method "regex" --umitools_bc_pattern2 "^(?P.{8})(?P.{6}).*"` | From 940dde1213338e88c00d6cb1a2a5bc5d0391288e Mon Sep 17 00:00:00 2001 From: maxulysse Date: Wed, 10 Jan 2024 16:36:57 +0100 Subject: [PATCH 005/634] update CHANGELOG --- CHANGELOG.md | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index e2d4c8fc8..e0e0b8beb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,45 @@ 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). +## dev + +### Credits + +Special thanks to the following for their contributions to the release: + +- [Adam Talbot](https://github.com/adamrtalbot) +- [Harshil Patel](https://github.com/drpatelh) +- [Jonathan Manning](https://github.com/pinin4fjords) +- [Maxime Garcia](https://github.com/maxulysse) + +Thank you to everyone else that has contributed by reporting bugs, enhancements or in any other way, shape or form. + +### Enhancements & fixes + +- [PR #1186](https://github.com/nf-core/rnaseq/pull/1186) - Properly update qualimap/rnaseq module (ie not patch) + +### Parameters + +| Old parameter | New parameter | +| ------------- | ------------- | +| | | + +> **NB:** Parameter has been **updated** if both old and new parameter information is present. +> **NB:** Parameter has been **added** if just the new parameter information is present. +> **NB:** Parameter has been **removed** if new parameter information isn't present. + +### Software dependencies + +| Dependency | Old version | New version | +| ---------- | ----------- | ----------- | +| | | | + +> **NB:** Dependency has been **updated** if both old and new version information is present. +> +> **NB:** Dependency has been **added** if just the new version information is present. +> +> **NB:** Dependency has been **removed** if new version information isn't present. + ## [[3.14.0](https://github.com/nf-core/rnaseq/releases/tag/3.14.0)] - 2024-01-08 ### Credits From 43bcf952f9b5c846569e32591d508f18ea133004 Mon Sep 17 00:00:00 2001 From: Maxime U Garcia Date: Wed, 10 Jan 2024 16:42:07 +0100 Subject: [PATCH 006/634] Apply suggestions from code review --- docs/usage.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/usage.md b/docs/usage.md index 15db6ced7..7b148c636 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -93,9 +93,9 @@ The `--umitools_grouping_method` parameter affects [how similar, but non-identic #### Examples: -| UMI type | Source | Pipeline parameters | -| ------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- | -| In read name | [Illumina BCL convert >3.7.5](https://emea.support.illumina.com/content/dam/illumina-support/documents/documentation/software_documentation/bcl_convert/bcl-convert-v3-7-5-software-guide-1000000163594-00.pdf) | `--with_umi --skip_umi_extract --umitools_umi_separator ":"` | +| UMI type | Source | Pipeline parameters | +| ------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- | +| In read name | [Illumina BCL convert >3.7.5](https://emea.support.illumina.com/content/dam/illumina-support/documents/documentation/software_documentation/bcl_convert/bcl-convert-v3-7-5-software-guide-1000000163594-00.pdf) | `--with_umi --skip_umi_extract --umitools_umi_separator ":"` | | In sequence | [Lexogen QuantSeq® 3’ mRNA-Seq V2 FWD](https://www.lexogen.com/quantseq-3mrna-sequencing) + [UMI Second Strand Synthesis Module](https://faqs.lexogen.com/faq/how-can-i-add-umis-to-my-quantseq-libraries) | `--with_umi --umitools_extract_method "regex" --umitools_bc_pattern "^(?P.{6})(?P.{4}).*"` | | In sequence | [Lexogen CORALL® Total RNA-Seq V1](https://www.lexogen.com/corall-total-rna-seq/)
> _mind [Appendix H](https://www.lexogen.com/wp-content/uploads/2020/04/095UG190V0130_CORALL-Total-RNA-Seq_2020-03-31.pdf) regarding optional trimming_ | `--with_umi --umitools_extract_method "regex" --umitools_bc_pattern "^(?P.{12}).*"`
Optional: `--clip_r2 9 --three_prime_clip_r2 12` | | In sequence | [Takara Bio SMARTer® Stranded Total RNA-Seq Kit v3](https://www.takarabio.com/documents/User%20Manual/SMARTer%20Stranded%20Total%20RNA/SMARTer%20Stranded%20Total%20RNA-Seq%20Kit%20v3%20-%20Pico%20Input%20Mammalian%20User%20Manual-a_114949.pdf) | `--with_umi --umitools_extract_method "regex" --umitools_bc_pattern2 "^(?P.{8})(?P.{6}).*"` | From cbdfbc6601cbf38c2f9a6e6cd1762965cba97996 Mon Sep 17 00:00:00 2001 From: Harshil Patel Date: Sat, 20 Jan 2024 13:44:18 +0000 Subject: [PATCH 007/634] Move main workflow into it's own directory --- workflows/{rnaseq.nf => rnaseq/main.nf} | 66 ++++++++++++------------- 1 file changed, 33 insertions(+), 33 deletions(-) rename workflows/{rnaseq.nf => rnaseq/main.nf} (92%) diff --git a/workflows/rnaseq.nf b/workflows/rnaseq/main.nf similarity index 92% rename from workflows/rnaseq.nf rename to workflows/rnaseq/main.nf index 9250125dc..bbfce7db6 100755 --- a/workflows/rnaseq.nf +++ b/workflows/rnaseq/main.nf @@ -104,23 +104,23 @@ ch_biotypes_header_multiqc = file("$projectDir/assets/multiqc/biotypes_header. // // MODULE: Loaded from modules/local/ // -include { BEDTOOLS_GENOMECOV } from '../modules/local/bedtools_genomecov' -include { DESEQ2_QC as DESEQ2_QC_STAR_SALMON } from '../modules/local/deseq2_qc' -include { DESEQ2_QC as DESEQ2_QC_RSEM } from '../modules/local/deseq2_qc' -include { DESEQ2_QC as DESEQ2_QC_PSEUDO } from '../modules/local/deseq2_qc' -include { DUPRADAR } from '../modules/local/dupradar' -include { MULTIQC } from '../modules/local/multiqc' -include { MULTIQC_CUSTOM_BIOTYPE } from '../modules/local/multiqc_custom_biotype' -include { UMITOOLS_PREPAREFORRSEM as UMITOOLS_PREPAREFORSALMON } from '../modules/local/umitools_prepareforrsem' +include { BEDTOOLS_GENOMECOV } from '../../modules/local/bedtools_genomecov' +include { DESEQ2_QC as DESEQ2_QC_STAR_SALMON } from '../../modules/local/deseq2_qc' +include { DESEQ2_QC as DESEQ2_QC_RSEM } from '../../modules/local/deseq2_qc' +include { DESEQ2_QC as DESEQ2_QC_PSEUDO } from '../../modules/local/deseq2_qc' +include { DUPRADAR } from '../../modules/local/dupradar' +include { MULTIQC } from '../../modules/local/multiqc' +include { MULTIQC_CUSTOM_BIOTYPE } from '../../modules/local/multiqc_custom_biotype' +include { UMITOOLS_PREPAREFORRSEM as UMITOOLS_PREPAREFORSALMON } from '../../modules/local/umitools_prepareforrsem' // // SUBWORKFLOW: Consisting of a mix of local and nf-core/modules // -include { PREPARE_GENOME } from '../subworkflows/local/prepare_genome' -include { ALIGN_STAR } from '../subworkflows/local/align_star' -include { QUANTIFY_RSEM } from '../subworkflows/local/quantify_rsem' -include { QUANTIFY_PSEUDO_ALIGNMENT as QUANTIFY_STAR_SALMON } from '../subworkflows/local/quantify_pseudo' -include { QUANTIFY_PSEUDO_ALIGNMENT } from '../subworkflows/local/quantify_pseudo' +include { PREPARE_GENOME } from '../../subworkflows/local/prepare_genome' +include { ALIGN_STAR } from '../../subworkflows/local/align_star' +include { QUANTIFY_RSEM } from '../../subworkflows/local/quantify_rsem' +include { QUANTIFY_PSEUDO_ALIGNMENT as QUANTIFY_STAR_SALMON } from '../../subworkflows/local/quantify_pseudo' +include { QUANTIFY_PSEUDO_ALIGNMENT } from '../../subworkflows/local/quantify_pseudo' /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -131,30 +131,30 @@ include { QUANTIFY_PSEUDO_ALIGNMENT } from '../subworkfl // // MODULE: Installed directly from nf-core/modules // -include { CAT_FASTQ } from '../modules/nf-core/cat/fastq' -include { BBMAP_BBSPLIT } from '../modules/nf-core/bbmap/bbsplit' -include { SAMTOOLS_SORT } from '../modules/nf-core/samtools/sort' -include { PRESEQ_LCEXTRAP } from '../modules/nf-core/preseq/lcextrap' -include { QUALIMAP_RNASEQ } from '../modules/nf-core/qualimap/rnaseq' -include { SORTMERNA } from '../modules/nf-core/sortmerna' -include { STRINGTIE_STRINGTIE } from '../modules/nf-core/stringtie/stringtie' -include { SUBREAD_FEATURECOUNTS } from '../modules/nf-core/subread/featurecounts' -include { CUSTOM_DUMPSOFTWAREVERSIONS } from '../modules/nf-core/custom/dumpsoftwareversions' +include { CAT_FASTQ } from '../../modules/nf-core/cat/fastq' +include { BBMAP_BBSPLIT } from '../../modules/nf-core/bbmap/bbsplit' +include { SAMTOOLS_SORT } from '../../modules/nf-core/samtools/sort' +include { PRESEQ_LCEXTRAP } from '../../modules/nf-core/preseq/lcextrap' +include { QUALIMAP_RNASEQ } from '../../modules/nf-core/qualimap/rnaseq' +include { SORTMERNA } from '../../modules/nf-core/sortmerna' +include { STRINGTIE_STRINGTIE } from '../../modules/nf-core/stringtie/stringtie' +include { SUBREAD_FEATURECOUNTS } from '../../modules/nf-core/subread/featurecounts' +include { CUSTOM_DUMPSOFTWAREVERSIONS } from '../../modules/nf-core/custom/dumpsoftwareversions' // // SUBWORKFLOW: Consisting entirely of nf-core/modules // -include { FASTQ_SUBSAMPLE_FQ_SALMON } from '../subworkflows/nf-core/fastq_subsample_fq_salmon' -include { FASTQ_FASTQC_UMITOOLS_TRIMGALORE } from '../subworkflows/nf-core/fastq_fastqc_umitools_trimgalore' -include { FASTQ_FASTQC_UMITOOLS_FASTP } from '../subworkflows/nf-core/fastq_fastqc_umitools_fastp' -include { FASTQ_ALIGN_HISAT2 } from '../subworkflows/nf-core/fastq_align_hisat2' -include { BAM_SORT_STATS_SAMTOOLS } from '../subworkflows/nf-core/bam_sort_stats_samtools' -include { BAM_MARKDUPLICATES_PICARD } from '../subworkflows/nf-core/bam_markduplicates_picard' -include { BAM_RSEQC } from '../subworkflows/nf-core/bam_rseqc' -include { BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS as BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS_GENOME } from '../subworkflows/nf-core/bam_dedup_stats_samtools_umitools' -include { BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS as BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS_TRANSCRIPTOME } from '../subworkflows/nf-core/bam_dedup_stats_samtools_umitools' -include { BEDGRAPH_BEDCLIP_BEDGRAPHTOBIGWIG as BEDGRAPH_BEDCLIP_BEDGRAPHTOBIGWIG_FORWARD } from '../subworkflows/nf-core/bedgraph_bedclip_bedgraphtobigwig' -include { BEDGRAPH_BEDCLIP_BEDGRAPHTOBIGWIG as BEDGRAPH_BEDCLIP_BEDGRAPHTOBIGWIG_REVERSE } from '../subworkflows/nf-core/bedgraph_bedclip_bedgraphtobigwig' +include { FASTQ_SUBSAMPLE_FQ_SALMON } from '../../subworkflows/nf-core/fastq_subsample_fq_salmon' +include { FASTQ_FASTQC_UMITOOLS_TRIMGALORE } from '../../subworkflows/nf-core/fastq_fastqc_umitools_trimgalore' +include { FASTQ_FASTQC_UMITOOLS_FASTP } from '../../subworkflows/nf-core/fastq_fastqc_umitools_fastp' +include { FASTQ_ALIGN_HISAT2 } from '../../subworkflows/nf-core/fastq_align_hisat2' +include { BAM_SORT_STATS_SAMTOOLS } from '../../subworkflows/nf-core/bam_sort_stats_samtools' +include { BAM_MARKDUPLICATES_PICARD } from '../../subworkflows/nf-core/bam_markduplicates_picard' +include { BAM_RSEQC } from '../../subworkflows/nf-core/bam_rseqc' +include { BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS as BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS_GENOME } from '../../subworkflows/nf-core/bam_dedup_stats_samtools_umitools' +include { BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS as BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS_TRANSCRIPTOME } from '../../subworkflows/nf-core/bam_dedup_stats_samtools_umitools' +include { BEDGRAPH_BEDCLIP_BEDGRAPHTOBIGWIG as BEDGRAPH_BEDCLIP_BEDGRAPHTOBIGWIG_FORWARD } from '../../subworkflows/nf-core/bedgraph_bedclip_bedgraphtobigwig' +include { BEDGRAPH_BEDCLIP_BEDGRAPHTOBIGWIG as BEDGRAPH_BEDCLIP_BEDGRAPHTOBIGWIG_REVERSE } from '../../subworkflows/nf-core/bedgraph_bedclip_bedgraphtobigwig' /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ From 91c5742d34fa50b616b900d82abcce3a598aca49 Mon Sep 17 00:00:00 2001 From: Harshil Patel Date: Sat, 20 Jan 2024 13:44:33 +0000 Subject: [PATCH 008/634] Remove nfcore_external_java_deps.jar --- lib/nfcore_external_java_deps.jar | Bin 2291171 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 lib/nfcore_external_java_deps.jar diff --git a/lib/nfcore_external_java_deps.jar b/lib/nfcore_external_java_deps.jar deleted file mode 100644 index 805c8bb5e4fd43a12a5891eea5a68788309629b0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2291171 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�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

A$B3k~{RycObG@6y| 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 $@vz03z8Z`qI{ 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

=%>>2|D73@_9Fx}<*!s;{SFX;r+XReUC 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 z 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

qm4Wk) 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 z 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�!!ybUdR4n8i&a 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≻pfc-p+kq>A@&EZJ32ii;nzX4TDQYlf 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
gy>fqEPDaO`QF}o` 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%0AO0^D-A)i$ldleqyk}TE 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 z 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

tyv*0yP}nk-pv4zbBt@DbR|3V7ZQ73LXi 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 kF-h#lNtCW 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 From c85a4cbe06af6b55aeee442313d5c9266da70038 Mon Sep 17 00:00:00 2001 From: Harshil Patel Date: Sat, 20 Jan 2024 13:53:46 +0000 Subject: [PATCH 009/634] Install utils subworkflows from nf-core modules --- modules.json | 15 + .../nf-core/utils_nextflow_pipeline/main.nf | 126 ++++++ .../nf-core/utils_nextflow_pipeline/meta.yml | 38 ++ .../tests/main.function.nf.test | 54 +++ .../tests/main.function.nf.test.snap | 12 + .../tests/main.workflow.nf.test | 123 ++++++ .../tests/nextflow.config | 9 + .../utils_nextflow_pipeline/tests/tags.yml | 2 + .../nf-core/utils_nfcore_pipeline/main.nf | 394 ++++++++++++++++++ .../nf-core/utils_nfcore_pipeline/meta.yml | 20 + .../tests/main.function.nf.test | 114 +++++ .../tests/main.function.nf.test.snap | 134 ++++++ .../tests/main.workflow.nf.test | 21 + .../tests/main.workflow.nf.test.snap | 15 + .../tests/nextflow.config | 9 + .../utils_nfcore_pipeline/tests/tags.yml | 2 + .../nf-core/utils_nfvalidation_plugin/main.nf | 62 +++ .../utils_nfvalidation_plugin/meta.yml | 44 ++ .../tests/main.nf.test | 200 +++++++++ .../tests/nextflow_schema.json | 96 +++++ .../utils_nfvalidation_plugin/tests/tags.yml | 2 + 21 files changed, 1492 insertions(+) create mode 100644 subworkflows/nf-core/utils_nextflow_pipeline/main.nf create mode 100644 subworkflows/nf-core/utils_nextflow_pipeline/meta.yml create mode 100644 subworkflows/nf-core/utils_nextflow_pipeline/tests/main.function.nf.test create mode 100644 subworkflows/nf-core/utils_nextflow_pipeline/tests/main.function.nf.test.snap create mode 100644 subworkflows/nf-core/utils_nextflow_pipeline/tests/main.workflow.nf.test create mode 100644 subworkflows/nf-core/utils_nextflow_pipeline/tests/nextflow.config create mode 100644 subworkflows/nf-core/utils_nextflow_pipeline/tests/tags.yml create mode 100644 subworkflows/nf-core/utils_nfcore_pipeline/main.nf create mode 100644 subworkflows/nf-core/utils_nfcore_pipeline/meta.yml create mode 100644 subworkflows/nf-core/utils_nfcore_pipeline/tests/main.function.nf.test create mode 100644 subworkflows/nf-core/utils_nfcore_pipeline/tests/main.function.nf.test.snap create mode 100644 subworkflows/nf-core/utils_nfcore_pipeline/tests/main.workflow.nf.test create mode 100644 subworkflows/nf-core/utils_nfcore_pipeline/tests/main.workflow.nf.test.snap create mode 100644 subworkflows/nf-core/utils_nfcore_pipeline/tests/nextflow.config create mode 100644 subworkflows/nf-core/utils_nfcore_pipeline/tests/tags.yml create mode 100644 subworkflows/nf-core/utils_nfvalidation_plugin/main.nf create mode 100644 subworkflows/nf-core/utils_nfvalidation_plugin/meta.yml create mode 100644 subworkflows/nf-core/utils_nfvalidation_plugin/tests/main.nf.test create mode 100644 subworkflows/nf-core/utils_nfvalidation_plugin/tests/nextflow_schema.json create mode 100644 subworkflows/nf-core/utils_nfvalidation_plugin/tests/tags.yml diff --git a/modules.json b/modules.json index 67970abf1..4794c9a77 100644 --- a/modules.json +++ b/modules.json @@ -304,6 +304,21 @@ "branch": "master", "git_sha": "dedc0e31087f3306101c38835d051bf49789445a", "installed_by": ["subworkflows"] + }, + "utils_nextflow_pipeline": { + "branch": "master", + "git_sha": "cd08c91373cd00a73255081340e4914485846ba1", + "installed_by": ["subworkflows"] + }, + "utils_nfcore_pipeline": { + "branch": "master", + "git_sha": "cd08c91373cd00a73255081340e4914485846ba1", + "installed_by": ["subworkflows"] + }, + "utils_nfvalidation_plugin": { + "branch": "master", + "git_sha": "cd08c91373cd00a73255081340e4914485846ba1", + "installed_by": ["subworkflows"] } } } diff --git a/subworkflows/nf-core/utils_nextflow_pipeline/main.nf b/subworkflows/nf-core/utils_nextflow_pipeline/main.nf new file mode 100644 index 000000000..ac31f28f6 --- /dev/null +++ b/subworkflows/nf-core/utils_nextflow_pipeline/main.nf @@ -0,0 +1,126 @@ +// +// 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 + outdir // path: base directory used to publish pipeline results + check_conda_channels // boolean: check conda channels + + main: + + // + // Print workflow version and exit on --version + // + if (print_version) { + log.info "${workflow.manifest.name} ${getWorkflowVersion()}" + System.exit(0) + } + + // + // Dump pipeline parameters to a JSON file + // + if (dump_parameters && outdir) { + dumpParametersToJSON(outdir) + } + + // + // When running with Conda, warn if channels have not been set-up appropriately + // + if (check_conda_channels) { + checkCondaChannels() + } + + emit: + dummy_emit = true +} + +/* +======================================================================================== + FUNCTIONS +======================================================================================== +*/ + +// +// Generate version string +// +def getWorkflowVersion() { + String version_string = "" + if (workflow.manifest.version) { + def prefix_v = workflow.manifest.version[0] != 'v' ? 'v' : '' + version_string += "${prefix_v}${workflow.manifest.version}" + } + + if (workflow.commitId) { + def git_shortsha = workflow.commitId.substring(0, 7) + version_string += "-g${git_shortsha}" + } + + return version_string +} + +// +// 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) + + FilesEx.copyTo(temp_pf.toPath(), "${outdir}/pipeline_info/params_${timestamp}.json") + temp_pf.delete() +} + +// +// When running with -profile conda, warn if channels have not been set-up appropriately +// +def checkCondaChannels() { + Yaml parser = new 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 + } + + // 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 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])) + } + + 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" + + "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" + } +} diff --git a/subworkflows/nf-core/utils_nextflow_pipeline/meta.yml b/subworkflows/nf-core/utils_nextflow_pipeline/meta.yml new file mode 100644 index 000000000..e5c3a0a82 --- /dev/null +++ b/subworkflows/nf-core/utils_nextflow_pipeline/meta.yml @@ -0,0 +1,38 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/subworkflows/yaml-schema.json +name: "UTILS_NEXTFLOW_PIPELINE" +description: Subworkflow with functionality that may be useful for any Nextflow pipeline +keywords: + - utility + - pipeline + - initialise + - version +components: [] +input: + - print_version: + type: boolean + description: | + Print the version of the pipeline and exit + - dump_parameters: + type: boolean + description: | + Dump the parameters of the pipeline to a JSON file + - output_directory: + type: directory + description: Path to output dir to write JSON file to. + pattern: "results/" + - check_conda_channel: + type: boolean + description: | + Check if the conda channel priority is correct. +output: + - dummy_emit: + type: boolean + description: | + Dummy emit to make nf-core subworkflows lint happy +authors: + - "@adamrtalbot" + - "@drpatelh" +maintainers: + - "@adamrtalbot" + - "@drpatelh" + - "@maxulysse" diff --git a/subworkflows/nf-core/utils_nextflow_pipeline/tests/main.function.nf.test b/subworkflows/nf-core/utils_nextflow_pipeline/tests/main.function.nf.test new file mode 100644 index 000000000..8ed4310ca --- /dev/null +++ b/subworkflows/nf-core/utils_nextflow_pipeline/tests/main.function.nf.test @@ -0,0 +1,54 @@ + +nextflow_function { + + name "Test Functions" + script "subworkflows/nf-core/utils_nextflow_pipeline/main.nf" + config "subworkflows/nf-core/utils_nextflow_pipeline/tests/nextflow.config" + tag 'subworkflows' + tag 'utils_nextflow_pipeline' + tag 'subworkflows/utils_nextflow_pipeline' + + test("Test Function getWorkflowVersion") { + + function "getWorkflowVersion" + + then { + assertAll( + { assert function.success }, + { assert snapshot(function.result).match() } + ) + } + } + + test("Test Function dumpParametersToJSON") { + + function "dumpParametersToJSON" + + when { + function { + """ + // define inputs of the function here. Example: + input[0] = "$outputDir" + """.stripIndent() + } + } + + then { + assertAll( + { assert function.success } + ) + } + } + + test("Test Function checkCondaChannels") { + + function "checkCondaChannels" + + then { + assertAll( + { assert function.success }, + { assert snapshot(function.result).match() } + ) + } + } +} \ No newline at end of file diff --git a/subworkflows/nf-core/utils_nextflow_pipeline/tests/main.function.nf.test.snap b/subworkflows/nf-core/utils_nextflow_pipeline/tests/main.function.nf.test.snap new file mode 100644 index 000000000..db2030f8b --- /dev/null +++ b/subworkflows/nf-core/utils_nextflow_pipeline/tests/main.function.nf.test.snap @@ -0,0 +1,12 @@ +{ + "Test Function getWorkflowVersion": { + "content": [ + "v9.9.9" + ], + "timestamp": "2024-01-19T11:32:36.031083" + }, + "Test Function checkCondaChannels": { + "content": null, + "timestamp": "2024-01-19T11:32:50.456" + } +} \ No newline at end of file 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 new file mode 100644 index 000000000..f7c54bc68 --- /dev/null +++ b/subworkflows/nf-core/utils_nextflow_pipeline/tests/main.workflow.nf.test @@ -0,0 +1,123 @@ +nextflow_workflow { + + name "Test Workflow UTILS_NEXTFLOW_PIPELINE" + script "../main.nf" + config "subworkflows/nf-core/utils_nextflow_pipeline/tests/nextflow.config" + workflow "UTILS_NEXTFLOW_PIPELINE" + tag 'subworkflows' + tag 'utils_nextflow_pipeline' + tag 'subworkflows/utils_nextflow_pipeline' + + test("Should run no inputs") { + + when { + params { + outdir = "tests/results" + } + workflow { + """ + print_version = false + dump_parameters = false + outdir = null + check_conda_channels = false + + input[0] = print_version + input[1] = dump_parameters + input[2] = outdir + input[3] = check_conda_channels + """ + } + } + + then { + assertAll( + { assert workflow.success } + ) + } + } + + test("Should print version") { + + when { + params { + outdir = "tests/results" + } + workflow { + """ + print_version = true + dump_parameters = false + outdir = null + check_conda_channels = false + + input[0] = print_version + input[1] = dump_parameters + input[2] = outdir + input[3] = check_conda_channels + """ + } + } + + then { + assertAll( + { assert workflow.success }, + { assert workflow.stdout.contains("nextflow_workflow v9.9.9") } + ) + } + } + + test("Should dump params") { + + when { + params { + outdir = "$outputDir" + } + workflow { + """ + print_version = false + dump_parameters = true + outdir = params.outdir + check_conda_channels = false + + input[0] = false + input[1] = true + input[2] = params.outdir + input[3] = false + """ + } + } + + then { + assertAll( + { assert workflow.success } + ) + } + } + + test("Should not create params JSON if no output directory") { + + when { + params { + outdir = "$outputDir" + } + workflow { + """ + print_version = false + dump_parameters = true + outdir = params.outdir + check_conda_channels = false + + input[0] = false + input[1] = true + input[2] = null + input[3] = false + """ + } + } + + then { + assertAll( + { assert workflow.success } + ) + } + } +} diff --git a/subworkflows/nf-core/utils_nextflow_pipeline/tests/nextflow.config b/subworkflows/nf-core/utils_nextflow_pipeline/tests/nextflow.config new file mode 100644 index 000000000..53574ffec --- /dev/null +++ b/subworkflows/nf-core/utils_nextflow_pipeline/tests/nextflow.config @@ -0,0 +1,9 @@ +manifest { + name = 'nextflow_workflow' + author = """nf-core""" + homePage = 'https://127.0.0.1' + description = """Dummy pipeline""" + nextflowVersion = '!>=23.04.0' + version = '9.9.9' + doi = 'https://doi.org/10.5281/zenodo.5070524' +} \ No newline at end of file diff --git a/subworkflows/nf-core/utils_nextflow_pipeline/tests/tags.yml b/subworkflows/nf-core/utils_nextflow_pipeline/tests/tags.yml new file mode 100644 index 000000000..f84761125 --- /dev/null +++ b/subworkflows/nf-core/utils_nextflow_pipeline/tests/tags.yml @@ -0,0 +1,2 @@ +subworkflows/utils_nextflow_pipeline: + - subworkflows/nf-core/utils_nextflow_pipeline/** diff --git a/subworkflows/nf-core/utils_nfcore_pipeline/main.nf b/subworkflows/nf-core/utils_nfcore_pipeline/main.nf new file mode 100644 index 000000000..2b7ec3df5 --- /dev/null +++ b/subworkflows/nf-core/utils_nfcore_pipeline/main.nf @@ -0,0 +1,394 @@ +// +// 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 { + + main: + valid_config = checkConfigProvided() + + emit: + valid_config +} + +/* +======================================================================================== + FUNCTIONS +======================================================================================== +*/ + +// +// Warn if a -profile or Nextflow config has not been provided to run the pipeline +// +def checkConfigProvided() { + valid_config = true + 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 " + valid_config = false + } + return valid_config +} + +// +// Citation string for pipeline +// +def workflowCitation() { + return "If you use ${workflow.manifest.name} for your analysis please cite:\n\n" + + "* The pipeline\n" + + " ${workflow.manifest.doi}\n\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 = "" + if (workflow.manifest.version) { + def prefix_v = workflow.manifest.version[0] != 'v' ? 'v' : '' + version_string += "${prefix_v}${workflow.manifest.version}" + } + + if (workflow.commitId) { + def git_shortsha = workflow.commitId.substring(0, 7) + version_string += "-g${git_shortsha}" + } + + return version_string +} + +// +// 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 ] } + return yaml.dumpAsMap(versions).trim() +} + +// +// Get workflow version for pipeline +// +def workflowVersionToYAML() { + return """ + Workflow: + $workflow.manifest.name: ${getWorkflowVersion()} + Nextflow: $workflow.nextflow.version + """.stripIndent().trim() +} + +// +// Get channel of software versions used in pipeline in YAML format +// +def softwareVersionsToYAML(ch_versions) { + return ch_versions + .unique() + .map { processVersionsFromYAML(it) } + .mix(Channel.of(workflowVersionToYAML())) +} + +// +// Get workflow summary for MultiQC +// +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_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}" + + return yaml_file_text +} + +// +// nf-core logo +// +def nfCoreLogo(monochrome_logs=true) { + Map colors = logColours(monochrome_logs) + String.format( + """\n + ${dashedLine(monochrome_logs)} + ${colors.green},--.${colors.black}/${colors.green},-.${colors.reset} + ${colors.blue} ___ __ __ __ ___ ${colors.green}/,-._.--~\'${colors.reset} + ${colors.blue} |\\ | |__ __ / ` / \\ |__) |__ ${colors.yellow}} {${colors.reset} + ${colors.blue} | \\| | \\__, \\__/ | \\ |___ ${colors.green}\\`-._,-`-,${colors.reset} + ${colors.green}`._,._,\'${colors.reset} + ${colors.purple} ${workflow.manifest.name} ${getWorkflowVersion()}${colors.reset} + ${dashedLine(monochrome_logs)} + """.stripIndent() + ) +} + +// +// Return dashed line +// +def dashedLine(monochrome_logs=true) { + Map colors = logColours(monochrome_logs) + return "-${colors.dim}----------------------------------------------------${colors.reset}-" +} + +// +// ANSII colours used for terminal logging +// +def logColours(monochrome_logs=true) { + Map colorcodes = [:] + + // Reset / Meta + colorcodes['reset'] = monochrome_logs ? '' : "\033[0m" + colorcodes['bold'] = monochrome_logs ? '' : "\033[1m" + colorcodes['dim'] = monochrome_logs ? '' : "\033[2m" + colorcodes['underlined'] = monochrome_logs ? '' : "\033[4m" + colorcodes['blink'] = monochrome_logs ? '' : "\033[5m" + colorcodes['reverse'] = monochrome_logs ? '' : "\033[7m" + 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" + + // 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" + + // 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" + + // 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" + + // 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" + + return colorcodes +} + +// +// Construct and send completion email +// +def completionEmail(summary_params, email, email_on_fail, plaintext_email, outdir, monochrome_logs=true) { + + // Set up the e-mail variables + def subject = "[$workflow.manifest.name] Successful: $workflow.runName" + if (!workflow.success) { + subject = "[$workflow.manifest.name] FAILED: $workflow.runName" + } + + def summary = [:] + for (group in summary_params.keySet()) { + 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 + misc_fields['Nextflow Compile Timestamp'] = workflow.nextflow.timestamp + + def email_fields = [:] + email_fields['version'] = getWorkflowVersion() + email_fields['runName'] = workflow.runName + email_fields['success'] = workflow.success + email_fields['dateComplete'] = workflow.complete + email_fields['duration'] = workflow.duration + email_fields['exitStatus'] = workflow.exitStatus + email_fields['errorMessage'] = (workflow.errorMessage ?: 'None') + email_fields['errorReport'] = (workflow.errorReport ?: 'None') + email_fields['commandLine'] = workflow.commandLine + email_fields['projectDir'] = workflow.projectDir + email_fields['summary'] = summary << misc_fields + + // Check if we are only sending emails on failure + def email_address = email + if (!email && email_on_fail && !workflow.success) { + email_address = email_on_fail + } + + // Render the TXT template + def engine = new groovy.text.GStringTemplateEngine() + def tf = new File("${workflow.projectDir}/assets/email_template.txt") + def txt_template = engine.createTemplate(tf).make(email_fields) + def email_txt = txt_template.toString() + + // Render the HTML template + def hf = new File("${workflow.projectDir}/assets/email_template.html") + def html_template = engine.createTemplate(hf).make(email_fields) + def email_html = html_template.toString() + + // Render the sendmail template + def smail_fields = [ email: email_address, subject: subject, email_txt: email_txt, email_html: email_html, projectDir: "${workflow.projectDir}" ] + 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) + if (email_address) { + try { + if (plaintext_email) { throw 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) { + // Catch failures and try with plaintext + 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)-" + } + } + + // 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"); + 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"); + output_tf.delete() +} + +// +// Print pipeline summary on completion +// +def completionSummary(monochrome_logs=true) { + Map colors = logColours(monochrome_logs) + 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}-" + } + } else { + log.info "-${colors.purple}[$workflow.manifest.name]${colors.red} Pipeline completed with errors${colors.reset}-" + } +} + +// +// Construct and send a notification to a web server as JSON e.g. Microsoft Teams and Slack +// +def imNotification(summary_params, hook_url) { + def summary = [:] + for (group in summary_params.keySet()) { + 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 + + def msg_fields = [:] + msg_fields['version'] = getWorkflowVersion() + msg_fields['runName'] = workflow.runName + msg_fields['success'] = workflow.success + msg_fields['dateComplete'] = workflow.complete + msg_fields['duration'] = workflow.duration + msg_fields['exitStatus'] = workflow.exitStatus + msg_fields['errorMessage'] = (workflow.errorMessage ?: 'None') + msg_fields['errorReport'] = (workflow.errorReport ?: 'None') + msg_fields['commandLine'] = workflow.commandLine.replaceFirst(/ +--hook_url +[^ ]+/, "") + msg_fields['projectDir'] = workflow.projectDir + msg_fields['summary'] = summary << misc_fields + + // Render the JSON template + def engine = new groovy.text.GStringTemplateEngine() + // Different JSON depending on the service provider + // Defaults to "Adaptive Cards" (https://adaptivecards.io), except Slack which has its own format + def json_path = hook_url.contains("hooks.slack.com") ? "slackreport.json" : "adaptivecard.json" + def hf = new File("${workflow.projectDir}/assets/${json_path}") + def json_template = engine.createTemplate(hf).make(msg_fields) + def json_message = json_template.toString() + + // POST + 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()); + } +} diff --git a/subworkflows/nf-core/utils_nfcore_pipeline/meta.yml b/subworkflows/nf-core/utils_nfcore_pipeline/meta.yml new file mode 100644 index 000000000..dd1462b23 --- /dev/null +++ b/subworkflows/nf-core/utils_nfcore_pipeline/meta.yml @@ -0,0 +1,20 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/subworkflows/yaml-schema.json +name: "UTILS_NFCORE_PIPELINE" +description: Subworkflow with utility functions specific to the nf-core pipeline template +keywords: + - utility + - pipeline + - initialise + - version +components: [] +input: [] +output: + - success: + type: boolean + description: | + Dummy output to indicate success +authors: + - "@adamrtalbot" +maintainers: + - "@adamrtalbot" + - "@maxulysse" diff --git a/subworkflows/nf-core/utils_nfcore_pipeline/tests/main.function.nf.test b/subworkflows/nf-core/utils_nfcore_pipeline/tests/main.function.nf.test new file mode 100644 index 000000000..c176295d6 --- /dev/null +++ b/subworkflows/nf-core/utils_nfcore_pipeline/tests/main.function.nf.test @@ -0,0 +1,114 @@ + +nextflow_function { + + name "Test Functions" + script "../main.nf" + config "subworkflows/nf-core/utils_nfcore_pipeline/tests/nextflow.config" + tag "subworkflows" + tag "subworkflows_nfcore" + tag "utils_nfcore_pipeline" + tag "subworkflows/utils_nfcore_pipeline" + + test("Test Function checkConfigProvided") { + + function "checkConfigProvided" + + then { + assertAll( + { assert function.success }, + { assert snapshot(function.result).match() } + ) + } + } + + test("Test Function workflowCitation") { + + function "workflowCitation" + + then { + assertAll( + { assert function.success }, + { assert snapshot(function.result).match() } + ) + } + } + + test("Test Function nfCoreLogo") { + + function "nfCoreLogo" + + when { + function { + """ + input[0] = false + """ + } + } + + then { + assertAll( + { assert function.success }, + { assert snapshot(function.result).match() } + ) + } + } + + test("Test Function dashedLine") { + + function "dashedLine" + + when { + function { + """ + input[0] = false + """ + } + } + + then { + assertAll( + { assert function.success }, + { assert snapshot(function.result).match() } + ) + } + } + + test("Test Function without logColours") { + + function "logColours" + + when { + function { + """ + input[0] = true + """ + } + } + + then { + assertAll( + { assert function.success }, + { assert snapshot(function.result).match() } + ) + } + } + + test("Test Function with logColours") { + function "logColours" + + when { + function { + """ + input[0] = false + """ + } + } + + then { + assertAll( + { assert function.success }, + { assert snapshot(function.result).match() } + ) + } + } +} \ No newline at end of file diff --git a/subworkflows/nf-core/utils_nfcore_pipeline/tests/main.function.nf.test.snap b/subworkflows/nf-core/utils_nfcore_pipeline/tests/main.function.nf.test.snap new file mode 100644 index 000000000..afb9ab4dc --- /dev/null +++ b/subworkflows/nf-core/utils_nfcore_pipeline/tests/main.function.nf.test.snap @@ -0,0 +1,134 @@ +{ + "Test Function checkConfigProvided": { + "content": [ + true + ], + "timestamp": "2024-01-19T11:34:13.548431224" + }, + "Test Function nfCoreLogo": { + "content": [ + "\n\n-\u001b[2m----------------------------------------------------\u001b[0m-\n \u001b[0;32m,--.\u001b[0;30m/\u001b[0;32m,-.\u001b[0m\n\u001b[0;34m ___ __ __ __ ___ \u001b[0;32m/,-._.--~'\u001b[0m\n\u001b[0;34m |\\ | |__ __ / ` / \\ |__) |__ \u001b[0;33m} {\u001b[0m\n\u001b[0;34m | \\| | \\__, \\__/ | \\ |___ \u001b[0;32m\\`-._,-`-,\u001b[0m\n \u001b[0;32m`._,._,'\u001b[0m\n\u001b[0;35m nextflow_workflow v9.9.9\u001b[0m\n-\u001b[2m----------------------------------------------------\u001b[0m-\n" + ], + "timestamp": "2024-01-19T11:34:38.840454873" + }, + "Test Function workflowCitation": { + "content": [ + "If you use nextflow_workflow for your analysis please cite:\n\n* The pipeline\n https://doi.org/10.5281/zenodo.5070524\n\n* The nf-core framework\n https://doi.org/10.1038/s41587-020-0439-x\n\n* Software dependencies\n https://github.com/nextflow_workflow/blob/master/CITATIONS.md" + ], + "timestamp": "2024-01-19T11:34:22.24352016" + }, + "Test Function without logColours": { + "content": [ + { + "reset": "", + "bold": "", + "dim": "", + "underlined": "", + "blink": "", + "reverse": "", + "hidden": "", + "black": "", + "red": "", + "green": "", + "yellow": "", + "blue": "", + "purple": "", + "cyan": "", + "white": "", + "bblack": "", + "bred": "", + "bgreen": "", + "byellow": "", + "bblue": "", + "bpurple": "", + "bcyan": "", + "bwhite": "", + "ublack": "", + "ured": "", + "ugreen": "", + "uyellow": "", + "ublue": "", + "upurple": "", + "ucyan": "", + "uwhite": "", + "iblack": "", + "ired": "", + "igreen": "", + "iyellow": "", + "iblue": "", + "ipurple": "", + "icyan": "", + "iwhite": "", + "biblack": "", + "bired": "", + "bigreen": "", + "biyellow": "", + "biblue": "", + "bipurple": "", + "bicyan": "", + "biwhite": "" + } + ], + "timestamp": "2024-01-19T11:35:04.418416984" + }, + "Test Function dashedLine": { + "content": [ + "-\u001b[2m----------------------------------------------------\u001b[0m-" + ], + "timestamp": "2024-01-19T11:34:55.420000755" + }, + "Test Function with logColours": { + "content": [ + { + "reset": "\u001b[0m", + "bold": "\u001b[1m", + "dim": "\u001b[2m", + "underlined": "\u001b[4m", + "blink": "\u001b[5m", + "reverse": "\u001b[7m", + "hidden": "\u001b[8m", + "black": "\u001b[0;30m", + "red": "\u001b[0;31m", + "green": "\u001b[0;32m", + "yellow": "\u001b[0;33m", + "blue": "\u001b[0;34m", + "purple": "\u001b[0;35m", + "cyan": "\u001b[0;36m", + "white": "\u001b[0;37m", + "bblack": "\u001b[1;30m", + "bred": "\u001b[1;31m", + "bgreen": "\u001b[1;32m", + "byellow": "\u001b[1;33m", + "bblue": "\u001b[1;34m", + "bpurple": "\u001b[1;35m", + "bcyan": "\u001b[1;36m", + "bwhite": "\u001b[1;37m", + "ublack": "\u001b[4;30m", + "ured": "\u001b[4;31m", + "ugreen": "\u001b[4;32m", + "uyellow": "\u001b[4;33m", + "ublue": "\u001b[4;34m", + "upurple": "\u001b[4;35m", + "ucyan": "\u001b[4;36m", + "uwhite": "\u001b[4;37m", + "iblack": "\u001b[0;90m", + "ired": "\u001b[0;91m", + "igreen": "\u001b[0;92m", + "iyellow": "\u001b[0;93m", + "iblue": "\u001b[0;94m", + "ipurple": "\u001b[0;95m", + "icyan": "\u001b[0;96m", + "iwhite": "\u001b[0;97m", + "biblack": "\u001b[1;90m", + "bired": "\u001b[1;91m", + "bigreen": "\u001b[1;92m", + "biyellow": "\u001b[1;93m", + "biblue": "\u001b[1;94m", + "bipurple": "\u001b[1;95m", + "bicyan": "\u001b[1;96m", + "biwhite": "\u001b[1;97m" + } + ], + "timestamp": "2024-01-19T11:35:13.436366565" + } +} \ No newline at end of file diff --git a/subworkflows/nf-core/utils_nfcore_pipeline/tests/main.workflow.nf.test b/subworkflows/nf-core/utils_nfcore_pipeline/tests/main.workflow.nf.test new file mode 100644 index 000000000..c5f7776a6 --- /dev/null +++ b/subworkflows/nf-core/utils_nfcore_pipeline/tests/main.workflow.nf.test @@ -0,0 +1,21 @@ +nextflow_workflow { + + name "Test Workflow UTILS_NFCORE_PIPELINE" + script "../main.nf" + config "subworkflows/nf-core/utils_nfcore_pipeline/tests/nextflow.config" + workflow "UTILS_NFCORE_PIPELINE" + tag "subworkflows" + tag "subworkflows_nfcore" + tag "utils_nfcore_pipeline" + tag "subworkflows/utils_nfcore_pipeline" + + test("Should run without failures") { + + then { + assertAll( + { assert workflow.success }, + { assert snapshot(workflow.out).match() } + ) + } + } +} diff --git a/subworkflows/nf-core/utils_nfcore_pipeline/tests/main.workflow.nf.test.snap b/subworkflows/nf-core/utils_nfcore_pipeline/tests/main.workflow.nf.test.snap new file mode 100644 index 000000000..d07ce54c5 --- /dev/null +++ b/subworkflows/nf-core/utils_nfcore_pipeline/tests/main.workflow.nf.test.snap @@ -0,0 +1,15 @@ +{ + "Should run without failures": { + "content": [ + { + "0": [ + true + ], + "valid_config": [ + true + ] + } + ], + "timestamp": "2024-01-19T11:35:22.538940073" + } +} \ No newline at end of file diff --git a/subworkflows/nf-core/utils_nfcore_pipeline/tests/nextflow.config b/subworkflows/nf-core/utils_nfcore_pipeline/tests/nextflow.config new file mode 100644 index 000000000..53574ffec --- /dev/null +++ b/subworkflows/nf-core/utils_nfcore_pipeline/tests/nextflow.config @@ -0,0 +1,9 @@ +manifest { + name = 'nextflow_workflow' + author = """nf-core""" + homePage = 'https://127.0.0.1' + description = """Dummy pipeline""" + nextflowVersion = '!>=23.04.0' + version = '9.9.9' + doi = 'https://doi.org/10.5281/zenodo.5070524' +} \ No newline at end of file diff --git a/subworkflows/nf-core/utils_nfcore_pipeline/tests/tags.yml b/subworkflows/nf-core/utils_nfcore_pipeline/tests/tags.yml new file mode 100644 index 000000000..ac8523c9a --- /dev/null +++ b/subworkflows/nf-core/utils_nfcore_pipeline/tests/tags.yml @@ -0,0 +1,2 @@ +subworkflows/utils_nfcore_pipeline: + - subworkflows/nf-core/utils_nfcore_pipeline/** diff --git a/subworkflows/nf-core/utils_nfvalidation_plugin/main.nf b/subworkflows/nf-core/utils_nfvalidation_plugin/main.nf new file mode 100644 index 000000000..2585b65d1 --- /dev/null +++ b/subworkflows/nf-core/utils_nfvalidation_plugin/main.nf @@ -0,0 +1,62 @@ +// +// 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 new file mode 100644 index 000000000..3d4a6b04f --- /dev/null +++ b/subworkflows/nf-core/utils_nfvalidation_plugin/meta.yml @@ -0,0 +1,44 @@ +# 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 new file mode 100644 index 000000000..517ee54e4 --- /dev/null +++ b/subworkflows/nf-core/utils_nfvalidation_plugin/tests/main.nf.test @@ -0,0 +1,200 @@ +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!') } } + ) + } + } +} \ No newline at end of file diff --git a/subworkflows/nf-core/utils_nfvalidation_plugin/tests/nextflow_schema.json b/subworkflows/nf-core/utils_nfvalidation_plugin/tests/nextflow_schema.json new file mode 100644 index 000000000..7626c1c93 --- /dev/null +++ b/subworkflows/nf-core/utils_nfvalidation_plugin/tests/nextflow_schema.json @@ -0,0 +1,96 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema", + "$id": "https://raw.githubusercontent.com/./master/nextflow_schema.json", + "title": ". pipeline parameters", + "description": "", + "type": "object", + "definitions": { + "input_output_options": { + "title": "Input/output options", + "type": "object", + "fa_icon": "fas fa-terminal", + "description": "Define where the pipeline should find input data and save output data.", + "required": ["outdir"], + "properties": { + "validate_params": { + "type": "boolean", + "description": "Validate parameters?", + "default": true, + "hidden": true + }, + "outdir": { + "type": "string", + "format": "directory-path", + "description": "The output directory where the results will be saved. You have to use absolute paths to storage on Cloud infrastructure.", + "fa_icon": "fas fa-folder-open" + }, + "test_data_base": { + "type": "string", + "default": "https://raw.githubusercontent.com/nf-core/test-datasets/modules", + "description": "Base for test data directory", + "hidden": true + }, + "test_data": { + "type": "string", + "description": "Fake test data param", + "hidden": true + } + } + }, + "generic_options": { + "title": "Generic options", + "type": "object", + "fa_icon": "fas fa-file-import", + "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.", + "fa_icon": "fas fa-question-circle", + "hidden": true + }, + "logo": { + "type": "boolean", + "default": true, + "description": "Display nf-core logo in console output.", + "fa_icon": "fas fa-image", + "hidden": true + }, + "singularity_pull_docker_container": { + "type": "boolean", + "description": "Pull Singularity container from Docker?", + "hidden": true + }, + "publish_dir_mode": { + "type": "string", + "default": "copy", + "description": "Method used to save pipeline results to output directory.", + "help_text": "The 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.", + "fa_icon": "fas fa-copy", + "enum": ["symlink", "rellink", "link", "copy", "copyNoFollow", "move"], + "hidden": true + }, + "monochrome_logs": { + "type": "boolean", + "description": "Use monochrome_logs", + "hidden": true + } + } + } + }, + "allOf": [ + { + "$ref": "#/definitions/input_output_options" + }, + { + "$ref": "#/definitions/generic_options" + } + ] +} diff --git a/subworkflows/nf-core/utils_nfvalidation_plugin/tests/tags.yml b/subworkflows/nf-core/utils_nfvalidation_plugin/tests/tags.yml new file mode 100644 index 000000000..60b1cfff4 --- /dev/null +++ b/subworkflows/nf-core/utils_nfvalidation_plugin/tests/tags.yml @@ -0,0 +1,2 @@ +subworkflows/utils_nfvalidation_plugin: + - subworkflows/nf-core/utils_nfvalidation_plugin/** From 15924c46501af8fdaca263462c5f50582b703d88 Mon Sep 17 00:00:00 2001 From: Harshil Patel Date: Sat, 20 Jan 2024 18:22:18 +0000 Subject: [PATCH 010/634] Delete lib directory and replace with utils_* subworkflows --- assets/dummy_file.txt | 1 - assets/email_template.html | 2 +- assets/email_template.txt | 2 +- conf/base.config | 3 - conf/modules.config | 26 +- lib/NfcoreTemplate.groovy | 398 ------------- lib/Utils.groovy | 47 -- lib/WorkflowMain.groovy | 60 -- lib/WorkflowRnaseq.groovy | 474 ---------------- main.nf | 148 +++-- modules.json | 6 - modules/local/multiqc/main.nf | 1 - .../custom-dumpsoftwareversions.diff | 19 - .../dumpsoftwareversions/environment.yml | 7 - .../custom/dumpsoftwareversions/main.nf | 24 - .../custom/dumpsoftwareversions/meta.yml | 37 -- .../templates/dumpsoftwareversions.py | 101 ---- .../dumpsoftwareversions/tests/main.nf.test | 38 -- .../tests/main.nf.test.snap | 27 - .../dumpsoftwareversions/tests/tags.yml | 2 - subworkflows/local/prepare_genome/main.nf | 76 ++- .../utils_nfcore_rnaseq_pipeline/main.nf | 528 ++++++++++++++++++ .../nf-core/utils_nfcore_pipeline/main.nf | 1 + .../assets}/multiqc/biotypes_header.txt | 0 .../multiqc/deseq2_clustering_header.txt | 0 .../assets}/multiqc/deseq2_pca_header.txt | 0 .../multiqc}/methods_description_template.yml | 0 .../rnaseq/assets/multiqc}/multiqc_config.yml | 0 workflows/rnaseq/main.nf | 347 ++++-------- 29 files changed, 802 insertions(+), 1573 deletions(-) delete mode 100644 assets/dummy_file.txt delete mode 100755 lib/NfcoreTemplate.groovy delete mode 100644 lib/Utils.groovy delete mode 100755 lib/WorkflowMain.groovy delete mode 100755 lib/WorkflowRnaseq.groovy delete mode 100644 modules/nf-core/custom/dumpsoftwareversions/custom-dumpsoftwareversions.diff delete mode 100644 modules/nf-core/custom/dumpsoftwareversions/environment.yml delete mode 100644 modules/nf-core/custom/dumpsoftwareversions/main.nf delete mode 100644 modules/nf-core/custom/dumpsoftwareversions/meta.yml delete mode 100755 modules/nf-core/custom/dumpsoftwareversions/templates/dumpsoftwareversions.py delete mode 100644 modules/nf-core/custom/dumpsoftwareversions/tests/main.nf.test delete mode 100644 modules/nf-core/custom/dumpsoftwareversions/tests/main.nf.test.snap delete mode 100644 modules/nf-core/custom/dumpsoftwareversions/tests/tags.yml create mode 100644 subworkflows/local/utils_nfcore_rnaseq_pipeline/main.nf rename {assets => workflows/rnaseq/assets}/multiqc/biotypes_header.txt (100%) rename {assets => workflows/rnaseq/assets}/multiqc/deseq2_clustering_header.txt (100%) rename {assets => workflows/rnaseq/assets}/multiqc/deseq2_pca_header.txt (100%) rename {assets => workflows/rnaseq/assets/multiqc}/methods_description_template.yml (100%) rename {assets => workflows/rnaseq/assets/multiqc}/multiqc_config.yml (100%) diff --git a/assets/dummy_file.txt b/assets/dummy_file.txt deleted file mode 100644 index 8b1378917..000000000 --- a/assets/dummy_file.txt +++ /dev/null @@ -1 +0,0 @@ - diff --git a/assets/email_template.html b/assets/email_template.html index 0ef39b222..dc46d39ee 100644 --- a/assets/email_template.html +++ b/assets/email_template.html @@ -14,7 +14,7 @@
-

nf-core/rnaseq v${version}

+

nf-core/rnaseq ${version}

Run Name: $runName

<% if (!success){ out << """ diff --git a/assets/email_template.txt b/assets/email_template.txt index 5440f887a..8789fd8ae 100644 --- a/assets/email_template.txt +++ b/assets/email_template.txt @@ -4,7 +4,7 @@ |\\ | |__ __ / ` / \\ |__) |__ } { | \\| | \\__, \\__/ | \\ |___ \\`-._,-`-, `._,._,' - nf-core/rnaseq v${version} + nf-core/rnaseq ${version} ---------------------------------------------------- Run Name: $runName diff --git a/conf/base.config b/conf/base.config index 337564e5c..93ad25b28 100644 --- a/conf/base.config +++ b/conf/base.config @@ -57,7 +57,4 @@ process { errorStrategy = 'retry' maxRetries = 2 } - withName:CUSTOM_DUMPSOFTWAREVERSIONS { - cache = false - } } diff --git a/conf/modules.config b/conf/modules.config index 16d635cdb..e6210ea0e 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -22,14 +22,6 @@ process { mode: params.publish_dir_mode, saveAs: { filename -> filename.equals('versions.yml') ? null : filename } ] - - withName: 'CUSTOM_DUMPSOFTWAREVERSIONS' { - publishDir = [ - path: { "${params.outdir}/pipeline_info" }, - mode: params.publish_dir_mode, - pattern: '*_versions.yml' - ] - } } // @@ -148,7 +140,7 @@ process { if (!params.skip_bbsplit && params.bbsplit_fasta_list) { process { - withName: '.*:PREPARE_GENOME:BBMAP_BBSPLIT' { + withName: 'PREPARE_GENOME:BBMAP_BBSPLIT' { ext.args = 'build=1' publishDir = [ path: { params.save_reference ? "${params.outdir}/genome/index" : params.outdir }, @@ -348,7 +340,7 @@ if (params.remove_ribo_rna) { if (!params.skip_alignment) { process { - withName: 'NFCORE_RNASEQ:RNASEQ:.*:BAM_SORT_STATS_SAMTOOLS:BAM_STATS_SAMTOOLS:.*' { + withName: 'NFCORE_RNASEQ:.*:BAM_SORT_STATS_SAMTOOLS:BAM_STATS_SAMTOOLS:.*' { ext.prefix = { "${meta.id}.sorted.bam" } publishDir = [ path: { "${params.outdir}/${params.aligner}/samtools_stats" }, @@ -357,7 +349,7 @@ if (!params.skip_alignment) { ] } - withName: 'NFCORE_RNASEQ:RNASEQ:.*:BAM_SORT_STATS_SAMTOOLS:SAMTOOLS_SORT' { + withName: 'NFCORE_RNASEQ:.*:BAM_SORT_STATS_SAMTOOLS:SAMTOOLS_SORT' { ext.prefix = { "${meta.id}.sorted" } publishDir = [ path: { ( ['star_salmon','hisat2'].contains(params.aligner) && @@ -371,7 +363,7 @@ if (!params.skip_alignment) { ] } - withName: 'NFCORE_RNASEQ:RNASEQ:.*:BAM_SORT_STATS_SAMTOOLS:SAMTOOLS_INDEX' { + withName: 'NFCORE_RNASEQ:.*:BAM_SORT_STATS_SAMTOOLS:SAMTOOLS_INDEX' { ext.args = { params.bam_csi_index ? '-c' : '' } publishDir = [ path: { ( ['star_salmon','hisat2'].contains(params.aligner) && @@ -611,7 +603,7 @@ if (!params.skip_alignment && params.aligner == 'star_salmon') { if (params.with_umi) { process { - withName: 'NFCORE_RNASEQ:RNASEQ:SAMTOOLS_SORT' { + withName: 'NFCORE_RNASEQ:SAMTOOLS_SORT' { ext.args = '-n' ext.prefix = { "${meta.id}.umi_dedup.transcriptome" } publishDir = [ @@ -622,7 +614,7 @@ if (!params.skip_alignment && params.aligner == 'star_salmon') { ] } - withName: 'NFCORE_RNASEQ:RNASEQ:UMITOOLS_PREPAREFORSALMON' { + withName: 'NFCORE_RNASEQ:UMITOOLS_PREPAREFORSALMON' { ext.prefix = { "${meta.id}.umi_dedup.transcriptome.filtered" } publishDir = [ [ @@ -639,7 +631,7 @@ if (!params.skip_alignment && params.aligner == 'star_salmon') { ] } - withName: 'NFCORE_RNASEQ:RNASEQ:BAM_SORT_STATS_SAMTOOLS:SAMTOOLS_SORT' { + withName: 'NFCORE_RNASEQ:BAM_SORT_STATS_SAMTOOLS:SAMTOOLS_SORT' { ext.prefix = { "${meta.id}.transcriptome.sorted" } publishDir = [ path: { params.save_align_intermeds || params.save_umi_intermeds ? "${params.outdir}/${params.aligner}" : params.outdir }, @@ -649,7 +641,7 @@ if (!params.skip_alignment && params.aligner == 'star_salmon') { ] } - withName: 'NFCORE_RNASEQ:RNASEQ:BAM_SORT_STATS_SAMTOOLS:SAMTOOLS_INDEX' { + withName: 'NFCORE_RNASEQ:BAM_SORT_STATS_SAMTOOLS:SAMTOOLS_INDEX' { publishDir = [ path: { params.save_align_intermeds || params.save_umi_intermeds ? "${params.outdir}/${params.aligner}" : params.outdir }, mode: params.publish_dir_mode, @@ -658,7 +650,7 @@ if (!params.skip_alignment && params.aligner == 'star_salmon') { ] } - withName: 'NFCORE_RNASEQ:RNASEQ:BAM_SORT_STATS_SAMTOOLS:BAM_STATS_SAMTOOLS:.*' { + withName: 'NFCORE_RNASEQ:BAM_SORT_STATS_SAMTOOLS:BAM_STATS_SAMTOOLS:.*' { ext.prefix = { "${meta.id}.transcriptome.sorted.bam" } publishDir = [ path: { params.save_align_intermeds || params.save_umi_intermeds ? "${params.outdir}/${params.aligner}/samtools_stats" : params.outdir }, diff --git a/lib/NfcoreTemplate.groovy b/lib/NfcoreTemplate.groovy deleted file mode 100755 index 5cdc9a73c..000000000 --- a/lib/NfcoreTemplate.groovy +++ /dev/null @@ -1,398 +0,0 @@ -// -// This file holds several functions used within the nf-core pipeline template. -// - -import org.yaml.snakeyaml.Yaml -import groovy.json.JsonOutput -import nextflow.extension.FilesEx - -class NfcoreTemplate { - - // - // Check AWS Batch related parameters have been specified correctly - // - public static void awsBatch(workflow, params) { - if (workflow.profile.contains('awsbatch')) { - // Check params.awsqueue and params.awsregion have been set if running on AWSBatch - assert (params.awsqueue && params.awsregion) : "Specify correct --awsqueue and --awsregion parameters on AWSBatch!" - // Check outdir paths to be S3 buckets if running on AWSBatch - assert params.outdir.startsWith('s3:') : "Outdir not on S3 - specify S3 Bucket to run on AWSBatch!" - } - } - - // - // Warn if a -profile or Nextflow config has not been provided to run the pipeline - // - public static void checkConfigProvided(workflow, log) { - 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 " - } - } - - // - // Warn if using custom configs to provide pipeline parameters - // - public static void warnParamsProvidedInConfig(workflow, log) { - if (workflow.configFiles.size() > 1) { - log.warn "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" + - " Multiple config files detected!\n" + - " Please provide pipeline parameters via the CLI or Nextflow '-params-file' option.\n" + - " Custom config files including those provided by the '-c' Nextflow option can be\n" + - " used to provide any configuration except for parameters.\n\n" + - " Docs: https://nf-co.re/usage/configuration#custom-configuration-files\n" + - "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" - } - } - - // - // Generate version string - // - public static String version(workflow) { - String version_string = "" - - if (workflow.manifest.version) { - def prefix_v = workflow.manifest.version[0] != 'v' ? 'v' : '' - version_string += "${prefix_v}${workflow.manifest.version}" - } - - if (workflow.commitId) { - def git_shortsha = workflow.commitId.substring(0, 7) - version_string += "-g${git_shortsha}" - } - - return version_string - } - - // - // Construct and send completion email - // - public static void email(workflow, params, summary_params, projectDir, log, multiqc_report=[], pass_mapped_reads=[:], pass_trimmed_reads=[:], pass_strand_check=[:]) { - - // Set up the e-mail variables - def fail_mapped_count = pass_mapped_reads.count { key, value -> value == false } - def fail_trimmed_count = pass_trimmed_reads.count { key, value -> value == false } - def fail_strand_count = pass_strand_check.count { key, value -> value == false } - - def subject = "[$workflow.manifest.name] Successful: $workflow.runName" - if (fail_mapped_count + fail_trimmed_count + fail_strand_count > 0) { - subject = "[$workflow.manifest.name] Partially successful - samples skipped: $workflow.runName" - } - if (!workflow.success) { - subject = "[$workflow.manifest.name] FAILED: $workflow.runName" - } - - def summary = [:] - for (group in summary_params.keySet()) { - 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 - misc_fields['Nextflow Compile Timestamp'] = workflow.nextflow.timestamp - - def email_fields = [:] - email_fields['version'] = NfcoreTemplate.version(workflow) - email_fields['runName'] = workflow.runName - email_fields['success'] = workflow.success - email_fields['dateComplete'] = workflow.complete - email_fields['duration'] = workflow.duration - email_fields['exitStatus'] = workflow.exitStatus - email_fields['errorMessage'] = (workflow.errorMessage ?: 'None') - email_fields['errorReport'] = (workflow.errorReport ?: 'None') - email_fields['commandLine'] = workflow.commandLine - email_fields['projectDir'] = workflow.projectDir - email_fields['summary'] = summary << misc_fields - email_fields['skip_sample_count'] = fail_mapped_count + fail_trimmed_count + fail_strand_count - - // On success try attach the multiqc report - def mqc_report = null - try { - if (workflow.success && !params.skip_multiqc) { - 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" - } - mqc_report = mqc_report[0] - } - } - } catch (all) { - if (multiqc_report) { - log.warn "[$workflow.manifest.name] Could not attach MultiQC report to summary email" - } - } - - // Check if we are only sending emails on failure - def email_address = params.email - if (!params.email && params.email_on_fail && !workflow.success) { - email_address = params.email_on_fail - } - - // Render the TXT template - def engine = new groovy.text.GStringTemplateEngine() - def tf = new File("$projectDir/assets/email_template.txt") - def txt_template = engine.createTemplate(tf).make(email_fields) - def email_txt = txt_template.toString() - - // Render the HTML template - def hf = new File("$projectDir/assets/email_template.html") - def html_template = engine.createTemplate(hf).make(email_fields) - def email_html = html_template.toString() - - // 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: "$projectDir", mqcFile: mqc_report, mqcMaxSize: max_multiqc_email_size.toBytes() ] - def sf = new File("$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(params.monochrome_logs) - if (email_address) { - try { - if (params.plaintext_email) { throw 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) { - // Catch failures and try with plaintext - def mail_cmd = [ 'mail', '-s', subject, '--content-type=text/html', email_address ] - if ( mqc_report != null && mqc_report.size() <= max_multiqc_email_size.toBytes() ) { - mail_cmd += [ '-A', mqc_report ] - } - mail_cmd.execute() << email_html - 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(), "${params.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(), "${params.outdir}/pipeline_info/pipeline_report.txt"); - output_tf.delete() - } - - // - // Construct and send a notification to a web server as JSON - // e.g. Microsoft Teams and Slack - // - public static void IM_notification(workflow, params, summary_params, projectDir, log) { - def hook_url = params.hook_url - - def summary = [:] - for (group in summary_params.keySet()) { - 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 - - def msg_fields = [:] - msg_fields['version'] = NfcoreTemplate.version(workflow) - msg_fields['runName'] = workflow.runName - msg_fields['success'] = workflow.success - msg_fields['dateComplete'] = workflow.complete - msg_fields['duration'] = workflow.duration - msg_fields['exitStatus'] = workflow.exitStatus - msg_fields['errorMessage'] = (workflow.errorMessage ?: 'None') - msg_fields['errorReport'] = (workflow.errorReport ?: 'None') - msg_fields['commandLine'] = workflow.commandLine.replaceFirst(/ +--hook_url +[^ ]+/, "") - msg_fields['projectDir'] = workflow.projectDir - msg_fields['summary'] = summary << misc_fields - - // Render the JSON template - def engine = new groovy.text.GStringTemplateEngine() - // Different JSON depending on the service provider - // Defaults to "Adaptive Cards" (https://adaptivecards.io), except Slack which has its own format - def json_path = hook_url.contains("hooks.slack.com") ? "slackreport.json" : "adaptivecard.json" - def hf = new File("$projectDir/assets/${json_path}") - def json_template = engine.createTemplate(hf).make(msg_fields) - def json_message = json_template.toString() - - // POST - 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()); - } - } - - // - // Dump pipeline parameters in a json file - // - public static void dump_parameters(workflow, params) { - 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) - - FilesEx.copyTo(temp_pf.toPath(), "${params.outdir}/pipeline_info/params_${timestamp}.json") - temp_pf.delete() - } - - // - // Print pipeline summary on completion - // - public static void summary(workflow, params, log, pass_mapped_reads=[:], pass_trimmed_reads=[:], pass_strand_check=[:]) { - Map colors = logColours(params.monochrome_logs) - - def fail_mapped_count = pass_mapped_reads.count { key, value -> value == false } - def fail_trimmed_count = pass_trimmed_reads.count { key, value -> value == false } - def fail_strand_count = pass_strand_check.count { key, value -> value == false } - if (workflow.success) { - def color = colors.green - def status = [] - if (workflow.stats.ignoredCount != 0) { - color = colors.yellow - status += ['with errored process(es)'] - } - if (fail_mapped_count > 0 || fail_trimmed_count > 0 || fail_strand_count > 0) { - color = colors.yellow - status += ['with skipped sampl(es)'] - } - log.info "-${colors.purple}[$workflow.manifest.name]${color} Pipeline completed successfully ${status.join(', ')}${colors.reset}-" - if (fail_trimmed_count > 0) { - log.info "-${colors.purple}[$workflow.manifest.name]${colors.red} Please check MultiQC report: ${fail_trimmed_count}/${pass_trimmed_reads.size()} samples skipped since they failed ${params.min_trimmed_reads} trimmed read threshold.${colors.reset}-" - } - if (fail_mapped_count > 0) { - log.info "-${colors.purple}[$workflow.manifest.name]${colors.red} Please check MultiQC report: ${fail_mapped_count}/${pass_mapped_reads.size()} samples skipped since they failed STAR ${params.min_mapped_reads}% mapped threshold.${colors.reset}-" - } - if (fail_strand_count > 0) { - log.info "-${colors.purple}[$workflow.manifest.name]${colors.red} Please check MultiQC report: ${fail_strand_count}/${pass_strand_check.size()} samples failed strandedness check.${colors.reset}-" - } - } else { - log.info "-${colors.purple}[$workflow.manifest.name]${colors.red} Pipeline completed with errors${colors.reset}-" - } - } - - // - // ANSII Colours used for terminal logging - // - public static Map logColours(Boolean monochrome_logs) { - Map colorcodes = [:] - - // Reset / Meta - colorcodes['reset'] = monochrome_logs ? '' : "\033[0m" - colorcodes['bold'] = monochrome_logs ? '' : "\033[1m" - colorcodes['dim'] = monochrome_logs ? '' : "\033[2m" - colorcodes['underlined'] = monochrome_logs ? '' : "\033[4m" - colorcodes['blink'] = monochrome_logs ? '' : "\033[5m" - colorcodes['reverse'] = monochrome_logs ? '' : "\033[7m" - 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" - - // 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" - - // 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" - - // 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" - - // 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" - - return colorcodes - } - - // - // Does what is says on the tin - // - public static String dashedLine(monochrome_logs) { - Map colors = logColours(monochrome_logs) - return "-${colors.dim}----------------------------------------------------${colors.reset}-" - } - - // - // nf-core logo - // - public static String logo(workflow, monochrome_logs) { - Map colors = logColours(monochrome_logs) - String workflow_version = NfcoreTemplate.version(workflow) - String.format( - """\n - ${dashedLine(monochrome_logs)} - ${colors.green},--.${colors.black}/${colors.green},-.${colors.reset} - ${colors.blue} ___ __ __ __ ___ ${colors.green}/,-._.--~\'${colors.reset} - ${colors.blue} |\\ | |__ __ / ` / \\ |__) |__ ${colors.yellow}} {${colors.reset} - ${colors.blue} | \\| | \\__, \\__/ | \\ |___ ${colors.green}\\`-._,-`-,${colors.reset} - ${colors.green}`._,._,\'${colors.reset} - ${colors.purple} ${workflow.manifest.name} ${workflow_version}${colors.reset} - ${dashedLine(monochrome_logs)} - """.stripIndent() - ) - } -} diff --git a/lib/Utils.groovy b/lib/Utils.groovy deleted file mode 100644 index 8d030f4e8..000000000 --- a/lib/Utils.groovy +++ /dev/null @@ -1,47 +0,0 @@ -// -// This file holds several Groovy functions that could be useful for any Nextflow pipeline -// - -import org.yaml.snakeyaml.Yaml - -class Utils { - - // - // When running with -profile conda, warn if channels have not been set-up appropriately - // - public static void checkCondaChannels(log) { - Yaml parser = new 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 - } - - // 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 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])) - } - - 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" + - "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" - } - } -} diff --git a/lib/WorkflowMain.groovy b/lib/WorkflowMain.groovy deleted file mode 100755 index 4d94dfe08..000000000 --- a/lib/WorkflowMain.groovy +++ /dev/null @@ -1,60 +0,0 @@ -// -// This file holds several functions specific to the main.nf workflow in the nf-core/rnaseq pipeline -// - -import nextflow.Nextflow - -class WorkflowMain { - - // - // Citation string for pipeline - // - public static String citation(workflow) { - return "If you use ${workflow.manifest.name} for your analysis please cite:\n\n" + - "* The pipeline\n" + - " https://doi.org/10.5281/zenodo.1400710\n\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" - } - - // - // Validate parameters and print summary to screen - // - public static void initialise(workflow, params, log) { - - // Print workflow version and exit on --version - if (params.version) { - String workflow_version = NfcoreTemplate.version(workflow) - log.info "${workflow.manifest.name} ${workflow_version}" - System.exit(0) - } - - // Warn about using custom configs to provide pipeline parameters - NfcoreTemplate.warnParamsProvidedInConfig(workflow, log) - - // Check that a -profile or Nextflow config has been provided to run the pipeline - NfcoreTemplate.checkConfigProvided(workflow, log) - - // Check that conda channels are set-up correctly - if (workflow.profile.tokenize(',').intersect(['conda', 'mamba']).size() >= 1) { - Utils.checkCondaChannels(log) - } - - // Check AWS batch settings - NfcoreTemplate.awsBatch(workflow, params) - } - - // - // Get attribute from genome config file e.g. fasta - // - public static Object getGenomeAttribute(params, attribute) { - if (params.genomes && params.genome && params.genomes.containsKey(params.genome)) { - if (params.genomes[ params.genome ].containsKey(attribute)) { - return params.genomes[ params.genome ][ attribute ] - } - } - return null - } -} diff --git a/lib/WorkflowRnaseq.groovy b/lib/WorkflowRnaseq.groovy deleted file mode 100755 index 29a1724e3..000000000 --- a/lib/WorkflowRnaseq.groovy +++ /dev/null @@ -1,474 +0,0 @@ -// -// This file holds several functions specific to the workflow/rnaseq.nf in the nf-core/rnaseq pipeline -// - -import nextflow.Nextflow -import groovy.json.JsonSlurper -import groovy.text.SimpleTemplateEngine - -class WorkflowRnaseq { - - // - // Check and validate parameters - // - public static void initialise(params, log) { - genomeExistsError(params, log) - - if (!params.fasta) { - Nextflow.error("Genome fasta file not specified with e.g. '--fasta genome.fa' or via a detectable config file.") - } - - if (!params.gtf && !params.gff) { - Nextflow.error("No GTF or GFF3 annotation specified! The pipeline requires at least one of these files.") - } - - if (params.gtf) { - if (params.gff) { - gtfGffWarn(log) - } - if (params.genome == 'GRCh38' && params.gtf.contains('Homo_sapiens/NCBI/GRCh38/Annotation/Genes/genes.gtf')) { - ncbiGenomeWarn(log) - } - if (params.gtf.contains('/UCSC/') && params.gtf.contains('Annotation/Genes/genes.gtf')) { - ucscGenomeWarn(log) - } - } - - if (params.transcript_fasta) { - transcriptsFastaWarn(log) - } - - if (!params.skip_bbsplit && !params.bbsplit_index && !params.bbsplit_fasta_list) { - Nextflow.error("Please provide either --bbsplit_fasta_list / --bbsplit_index to run BBSplit.") - } - - if (params.remove_ribo_rna && !params.ribo_database_manifest) { - Nextflow.error("Please provide --ribo_database_manifest to remove ribosomal RNA with SortMeRNA.") - } - - - if (params.with_umi && !params.skip_umi_extract) { - if (!params.umitools_bc_pattern && !params.umitools_bc_pattern2) { - Nextflow.error("UMI-tools requires a barcode pattern to extract barcodes from the reads.") - } - } - - if (params.skip_alignment) { - skipAlignmentWarn(log) - } - - if (!params.skip_pseudo_alignment && params.pseudo_aligner) { - if (!(params.salmon_index || params.transcript_fasta || (params.fasta && (params.gtf || params.gff)))) { - Nextflow.error("To use `--pseudo_aligner 'salmon'`, you must provide either --salmon_index or --transcript_fasta or both --fasta and --gtf / --gff.") - } - } - - // Checks when running --aligner star_rsem - if (!params.skip_alignment && params.aligner == 'star_rsem') { - if (params.with_umi) { - rsemUmiError(log) - } - if (params.rsem_index && params.star_index) { - rsemStarIndexWarn(log) - } - if (params.aligner == 'star_rsem' && params.extra_star_align_args) { - rsemStarExtraArgumentsWarn(log) - } - } - - // Warn if --additional_fasta provided with aligner index - if (!params.skip_alignment && params.additional_fasta) { - def index = '' - if (params.aligner == 'star_salmon' && params.star_index) { - index = 'star' - } - if (params.aligner == 'star_rsem' && params.rsem_index) { - index = 'rsem' - } - if (params.aligner == 'hisat2' && params.hisat2_index) { - index = 'hisat2' - } - if (index) { - additionaFastaIndexWarn(index, log) - } - } - - // Check which RSeQC modules we are running - def valid_rseqc_modules = ['bam_stat', 'inner_distance', 'infer_experiment', 'junction_annotation', 'junction_saturation', 'read_distribution', 'read_duplication', 'tin'] - def rseqc_modules = params.rseqc_modules ? params.rseqc_modules.split(',').collect{ it.trim().toLowerCase() } : [] - if ((valid_rseqc_modules + rseqc_modules).unique().size() != valid_rseqc_modules.size()) { - Nextflow.error("Invalid option: ${params.rseqc_modules}. Valid options for '--rseqc_modules': ${valid_rseqc_modules.join(', ')}") - } - } - - // - // Function to validate channels from input samplesheet - // - public static ArrayList validateInput(input) { - def (metas, fastqs) = input[1..2] - - // Check that multiple runs of the same sample are of the same strandedness - def strandedness_ok = metas.collect{ it.strandedness }.unique().size == 1 - if (!strandedness_ok) { - Nextflow.error("Please check input samplesheet -> Multiple runs of a sample must have the same strandedness!: ${metas[0].id}") - } - - // 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 - if (!endedness_ok) { - Nextflow.error("Please check input samplesheet -> Multiple runs of a sample must be of the same datatype i.e. single-end or paired-end: ${metas[0].id}") - } - - return [ metas[0], fastqs ] - } - - // - // Function to check whether biotype field exists in GTF file - // - public static Boolean biotypeInGtf(gtf_file, biotype, log) { - def hits = 0 - gtf_file.eachLine { line -> - def attributes = line.split('\t')[-1].split() - if (attributes.contains(biotype)) { - hits += 1 - } - } - if (hits) { - return true - } else { - log.warn "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" + - " Biotype attribute '${biotype}' not found in the last column of the GTF file!\n\n" + - " Biotype QC will be skipped to circumvent the issue below:\n" + - " https://github.com/nf-core/rnaseq/issues/460\n\n" + - " Amend '--featurecounts_group_type' to change this behaviour.\n" + - "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" - return false - } - } - - // - // Function to generate an error if contigs in genome fasta file > 512 Mbp - // - public static void checkMaxContigSize(fai_file, log) { - def max_size = 512000000 - fai_file.eachLine { line -> - def lspl = line.split('\t') - def chrom = lspl[0] - def size = lspl[1] - if (size.toInteger() > max_size) { - def error_string = "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" + - " Contig longer than ${max_size}bp found in reference genome!\n\n" + - " ${chrom}: ${size}\n\n" + - " Provide the '--bam_csi_index' parameter to use a CSI instead of BAI index.\n\n" + - " Please see:\n" + - " https://github.com/nf-core/rnaseq/issues/744\n" + - "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" - Nextflow.error(error_string) - } - } - } - - // - // Function that parses Salmon quant 'meta_info.json' output file to get inferred strandedness - // - public static String getSalmonInferredStrandedness(json_file) { - def lib_type = new JsonSlurper().parseText(json_file.text).get('library_types')[0] - def strandedness = 'reverse' - if (lib_type) { - if (lib_type in ['U', 'IU']) { - strandedness = 'unstranded' - } else if (lib_type in ['SF', 'ISF']) { - strandedness = 'forward' - } else if (lib_type in ['SR', 'ISR']) { - strandedness = 'reverse' - } - } - return strandedness - } - - // - // Function that parses TrimGalore log output file to get total number of reads after trimming - // - public static Integer getTrimGaloreReadsAfterFiltering(log_file) { - def total_reads = 0 - def filtered_reads = 0 - log_file.eachLine { line -> - def total_reads_matcher = line =~ /([\d\.]+)\ssequences processed in total/ - def filtered_reads_matcher = line =~ /shorter than the length cutoff[^:]+:\s([\d\.]+)/ - if (total_reads_matcher) total_reads = total_reads_matcher[0][1].toFloat() - if (filtered_reads_matcher) filtered_reads = filtered_reads_matcher[0][1].toFloat() - } - return total_reads - filtered_reads - } - - // - // Function that parses and returns the alignment rate from the STAR log output - // - public static ArrayList getStarPercentMapped(params, align_log) { - def percent_aligned = 0 - def pattern = /Uniquely mapped reads %\s*\|\s*([\d\.]+)%/ - align_log.eachLine { line -> - def matcher = line =~ pattern - if (matcher) { - percent_aligned = matcher[0][1].toFloat() - } - } - - def pass = false - if (percent_aligned >= params.min_mapped_reads.toFloat()) { - pass = true - } - return [ percent_aligned, pass ] - } - - // - // Function that parses and returns the predicted strandedness from the RSeQC infer_experiment.py output - // - public static ArrayList getInferexperimentStrandedness(inferexperiment_file, cutoff=30) { - def sense = 0 - def antisense = 0 - def undetermined = 0 - inferexperiment_file.eachLine { line -> - def undetermined_matcher = line =~ /Fraction of reads failed to determine:\s([\d\.]+)/ - def se_sense_matcher = line =~ /Fraction of reads explained by "\++,--":\s([\d\.]+)/ - def se_antisense_matcher = line =~ /Fraction of reads explained by "\+-,-\+":\s([\d\.]+)/ - def pe_sense_matcher = line =~ /Fraction of reads explained by "1\++,1--,2\+-,2-\+":\s([\d\.]+)/ - def pe_antisense_matcher = line =~ /Fraction of reads explained by "1\+-,1-\+,2\+\+,2--":\s([\d\.]+)/ - if (undetermined_matcher) undetermined = undetermined_matcher[0][1].toFloat() * 100 - if (se_sense_matcher) sense = se_sense_matcher[0][1].toFloat() * 100 - if (se_antisense_matcher) antisense = se_antisense_matcher[0][1].toFloat() * 100 - if (pe_sense_matcher) sense = pe_sense_matcher[0][1].toFloat() * 100 - if (pe_antisense_matcher) antisense = pe_antisense_matcher[0][1].toFloat() * 100 - } - def strandedness = 'unstranded' - if (sense >= 100-cutoff) { - strandedness = 'forward' - } else if (antisense >= 100-cutoff) { - strandedness = 'reverse' - } - return [ strandedness, sense, antisense, undetermined ] - } - - // - // Get workflow summary for MultiQC - // - public static String paramsSummaryMultiqc(workflow, summary) { - String summary_section = '' - for (group in summary.keySet()) { - def group_params = summary.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_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}" - return yaml_file_text - } - - // - // Generate methods description for MultiQC - // - public static String toolCitationText(params) { - // TODO nf-core: Optionally add in-text citation tools to this list. - // Can use ternary operators to dynamically construct based conditions, e.g. params["run_xyz"] ? "Tool (Foo et al. 2023)" : "", - // Uncomment function in methodsDescriptionText to render in MultiQC report - def citation_text = [ - "Tools used in the workflow included:", - "FastQC (Andrews 2010),", - "MultiQC (Ewels et al. 2016)", - "." - ].join(' ').trim() - - return citation_text - } - - public static String toolBibliographyText(params) { - // TODO Optionally add bibliographic entries to this list. - // 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() - - return reference_text - } - - public static String methodsDescriptionText(run_workflow, mqc_methods_yaml, params) { - // Convert to a named map so can be used as with familar NXF ${workflow} variable syntax in the MultiQC YML file - def meta = [:] - meta.workflow = run_workflow.toMap() - meta["manifest_map"] = run_workflow.manifest.toMap() - - // Pipeline DOI - meta["doi_text"] = meta.manifest_map.doi ? "(doi: ${meta.manifest_map.doi})" : "" - meta["nodoi_text"] = meta.manifest_map.doi ? "": "
  • If available, make sure to update the text to include the Zenodo DOI of version of the pipeline used.
  • " - - // Tool references - meta["tool_citations"] = "" - meta["tool_bibliography"] = "" - - // TODO Only uncomment below if logic in toolCitationText/toolBibliographyText has been filled! - //meta["tool_citations"] = toolCitationText(params).replaceAll(", \\.", ".").replaceAll("\\. \\.", ".").replaceAll(", \\.", ".") - //meta["tool_bibliography"] = toolBibliographyText(params) - - def methods_text = mqc_methods_yaml.text - - def engine = new SimpleTemplateEngine() - def description_html = engine.createTemplate(methods_text).make(meta) - - return description_html - } - - // - // Create MultiQC tsv custom content from a list of values - // - public static String multiqcTsvFromList(tsv_data, header) { - def tsv_string = "" - if (tsv_data.size() > 0) { - tsv_string += "${header.join('\t')}\n" - tsv_string += tsv_data.join('\n') - } - return tsv_string - } - - // - // Exit pipeline if incorrect --genome key provided - // - private static void genomeExistsError(params, log) { - if (params.genomes && params.genome && !params.genomes.containsKey(params.genome)) { - def error_string = "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" + - " Genome '${params.genome}' not found in any config files provided to the pipeline.\n" + - " Currently, the available genome keys are:\n" + - " ${params.genomes.keySet().join(", ")}\n" + - "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" - Nextflow.error(error_string) - } - } - - // - // Print a warning if using GRCh38 assembly from igenomes.config - // - private static void ncbiGenomeWarn(log) { - log.warn "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" + - " When using '--genome GRCh38' the assembly is from the NCBI and NOT Ensembl.\n" + - " Biotype QC will be skipped to circumvent the issue below:\n" + - " https://github.com/nf-core/rnaseq/issues/460\n\n" + - " If you would like to use the soft-masked Ensembl assembly instead please see:\n" + - " https://github.com/nf-core/rnaseq/issues/159#issuecomment-501184312\n" + - "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" - } - - // - // Print a warning if using a UCSC assembly from igenomes.config - // - private static void ucscGenomeWarn(log) { - log.warn "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" + - " When using UCSC assemblies the 'gene_biotype' field is absent from the GTF file.\n" + - " Biotype QC will be skipped to circumvent the issue below:\n" + - " https://github.com/nf-core/rnaseq/issues/460\n\n" + - " If you would like to use the soft-masked Ensembl assembly instead please see:\n" + - " https://github.com/nf-core/rnaseq/issues/159#issuecomment-501184312\n" + - "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" - } - - // - // Print a warning if both GTF and GFF have been provided - // - private static void gtfGffWarn(log) { - log.warn "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" + - " Both '--gtf' and '--gff' parameters have been provided.\n" + - " Using GTF file as priority.\n" + - "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" - } - - // - // Print a warning if using '--transcript_fasta' - // - private static void transcriptsFastaWarn(log) { - log.warn "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" + - " '--transcript_fasta' parameter has been provided.\n" + - " Make sure transcript names in this file match those in the GFF/GTF file.\n\n" + - " Please see:\n" + - " https://github.com/nf-core/rnaseq/issues/753\n" + - "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" - } - - // - // Print a warning if --skip_alignment has been provided - // - private static void skipAlignmentWarn(log) { - log.warn "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" + - " '--skip_alignment' parameter has been provided.\n" + - " Skipping alignment, genome-based quantification and all downstream QC processes.\n" + - "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" - } - - // - // Print a warning if using '--aligner star_rsem' and '--with_umi' - // - private static void rsemUmiError(log) { - def error_string = "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" + - " When using '--aligner star_rsem', STAR is run by RSEM itself and so it is\n" + - " not possible to remove UMIs before the quantification.\n\n" + - " If you would like to remove UMI barcodes using the '--with_umi' option\n" + - " please use either '--aligner star_salmon' or '--aligner hisat2'.\n" + - "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" - Nextflow.error(error_string) - } - - // - // Print a warning if using '--aligner star_rsem' and providing both '--rsem_index' and '--star_index' - // - private static void rsemStarIndexWarn(log) { - log.warn "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" + - " When using '--aligner star_rsem', both the STAR and RSEM indices should\n" + - " be present in the path specified by '--rsem_index'.\n\n" + - " This warning has been generated because you have provided both\n" + - " '--rsem_index' and '--star_index'. The pipeline will ignore the latter.\n\n" + - " Please see:\n" + - " https://github.com/nf-core/rnaseq/issues/568\n" + - "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" - } - - // - // Print a warning if using '--aligner star_rsem' and providing '--star_extra_alignment_args' - // - private static void rsemStarExtraArgumentsWarn(log) { - log.warn "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" + - " No additional arguments can be passed to STAR when using RSEM.\n" + - " Because RSEM enforces its own parameters for STAR, any extra arguments\n" + - " to STAR will be ignored. Alternatively, choose the STAR+Salmon route.\n\n" + - " This warning has been generated because you have provided both\n" + - " '--aligner star_rsem' and '--extra_star_align_args'.\n\n" + - "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" - } - - // - // Print a warning if using '--additional_fasta' and '--_index' - // - private static void additionaFastaIndexWarn(index, log) { - log.warn "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" + - " When using '--additional_fasta ' the aligner index will not\n" + - " be re-built with the transgenes incorporated by default since you have \n" + - " already provided an index via '--${index}_index '.\n\n" + - " Set '--additional_fasta --${index}_index false --gene_bed false --save_reference'\n" + - " to re-build the index with transgenes included and the index and gene BED file will be saved in\n" + - " 'results/genome/index/${index}/' for re-use with '--${index}_index'.\n\n" + - " Ignore this warning if you know that the index already contains transgenes.\n\n" + - " Please see:\n" + - " https://github.com/nf-core/rnaseq/issues/556\n" + - "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" - } -} diff --git a/main.nf b/main.nf index 69ae6c3b3..d1ab3d6ec 100755 --- a/main.nf +++ b/main.nf @@ -13,74 +13,122 @@ nextflow.enable.dsl = 2 /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - GENOME PARAMETER VALUES + IMPORT FUNCTIONS / MODULES / SUBWORKFLOWS / WORKFLOWS ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ -params.fasta = WorkflowMain.getGenomeAttribute(params, 'fasta') -params.transcript_fasta = WorkflowMain.getGenomeAttribute(params, 'transcript_fasta') -params.additional_fasta = WorkflowMain.getGenomeAttribute(params, 'additional_fasta') -params.gtf = WorkflowMain.getGenomeAttribute(params, 'gtf') -params.gff = WorkflowMain.getGenomeAttribute(params, 'gff') -params.gene_bed = WorkflowMain.getGenomeAttribute(params, 'bed12') -params.bbsplit_index = WorkflowMain.getGenomeAttribute(params, 'bbsplit') -params.star_index = WorkflowMain.getGenomeAttribute(params, 'star') -params.hisat2_index = WorkflowMain.getGenomeAttribute(params, 'hisat2') -params.rsem_index = WorkflowMain.getGenomeAttribute(params, 'rsem') -params.salmon_index = WorkflowMain.getGenomeAttribute(params, 'salmon') -params.kallisto_index = WorkflowMain.getGenomeAttribute(params, 'kallisto') +include { PREPARE_GENOME } from './subworkflows/local/prepare_genome' +include { NFCORE_RNASEQ } from './workflows/rnaseq' +include { PIPELINE_INITIALISATION } from './subworkflows/local/utils_nfcore_rnaseq_pipeline' +include { PIPELINE_COMPLETION } from './subworkflows/local/utils_nfcore_rnaseq_pipeline' +include { getGenomeAttribute } from './subworkflows/local/utils_nfcore_rnaseq_pipeline' +include { checkMaxContigSize } from './subworkflows/local/utils_nfcore_rnaseq_pipeline' /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - VALIDATE & PRINT PARAMETER SUMMARY + GENOME PARAMETER VALUES ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ -include { validateParameters; paramsHelp } from 'plugin/nf-validation' - -// Print help message if needed -if (params.help) { - def logo = NfcoreTemplate.logo(workflow, params.monochrome_logs) - def citation = '\n' + WorkflowMain.citation(workflow) + '\n' - def String command = "nextflow run ${workflow.manifest.name} --input samplesheet.csv --genome GRCh37 -profile docker" - log.info logo + paramsHelp(command) + citation + NfcoreTemplate.dashedLine(params.monochrome_logs) - System.exit(0) -} - -// Validate input parameters -if (params.validate_params) { - validateParameters() -} - -WorkflowMain.initialise(workflow, params, log) +params.fasta = getGenomeAttribute('fasta') +params.transcript_fasta = getGenomeAttribute('transcript_fasta') +params.additional_fasta = getGenomeAttribute('additional_fasta') +params.gtf = getGenomeAttribute('gtf') +params.gff = getGenomeAttribute('gff') +params.gene_bed = getGenomeAttribute('bed12') +params.bbsplit_index = getGenomeAttribute('bbsplit') +params.star_index = getGenomeAttribute('star') +params.hisat2_index = getGenomeAttribute('hisat2') +params.rsem_index = getGenomeAttribute('rsem') +params.salmon_index = getGenomeAttribute('salmon') +params.kallisto_index = getGenomeAttribute('kallisto') /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - NAMED WORKFLOW FOR PIPELINE + RUN MAIN WORKFLOW ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ -include { RNASEQ } from './workflows/rnaseq' +workflow { + + main: + ch_versions = Channel.empty() + + // + // SUBWORKFLOW: Run initialisation tasks + // + PIPELINE_INITIALISATION () -// -// WORKFLOW: Run main nf-core/rnaseq analysis pipeline -// -workflow NFCORE_RNASEQ { - RNASEQ () -} + // + // SUBWORKFLOW: Prepare reference genome files + // + PREPARE_GENOME ( + params.fasta, + params.gtf, + params.gff, + params.additional_fasta, + params.transcript_fasta, + params.gene_bed, + params.splicesites, + params.bbsplit_fasta_list, + params.star_index, + params.rsem_index, + params.salmon_index, + params.kallisto_index, + params.hisat2_index, + params.bbsplit_index, + params.gencode, + params.featurecounts_group_type, + params.aligner, + params.pseudo_aligner, + params.skip_gtf_filter, + params.skip_bbsplit, + params.skip_alignment, + params.skip_pseudo_alignment + ) + ch_versions = ch_versions.mix(PREPARE_GENOME.out.versions) -/* -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - RUN ALL WORKFLOWS -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -*/ + // Check if contigs in genome fasta file > 512 Mbp + if (!params.skip_alignment && !params.bam_csi_index) { + PREPARE_GENOME + .out + .fai + .map { checkMaxContigSize(it) } + } -// -// WORKFLOW: Execute a single named workflow for the pipeline -// See: https://github.com/nf-core/rnaseq/issues/619 -// -workflow { - NFCORE_RNASEQ () + // + // WORKFLOW: Run nf-core/rnaseq workflow + // + NFCORE_RNASEQ ( + PIPELINE_INITIALISATION.out.samplesheet, + ch_versions, + PREPARE_GENOME.out.fasta, + PREPARE_GENOME.out.gtf, + PREPARE_GENOME.out.fai, + PREPARE_GENOME.out.chrom_sizes, + PREPARE_GENOME.out.gene_bed, + PREPARE_GENOME.out.transcript_fasta, + PREPARE_GENOME.out.star_index, + PREPARE_GENOME.out.rsem_index, + PREPARE_GENOME.out.hisat2_index, + PREPARE_GENOME.out.salmon_index, + PREPARE_GENOME.out.kallisto_index, + PREPARE_GENOME.out.bbsplit_index, + PREPARE_GENOME.out.splicesites + ) + ch_versions = ch_versions.mix(NFCORE_RNASEQ.out.versions) + + // + // SUBWORKFLOW: Run completion tasks + // + PIPELINE_COMPLETION ( + params.email, + params.email_on_fail, + params.plaintext_email, + params.outdir, + params.monochrome_logs, + params.hook_url + ) } /* diff --git a/modules.json b/modules.json index 4794c9a77..032786fba 100644 --- a/modules.json +++ b/modules.json @@ -15,12 +15,6 @@ "git_sha": "5c460c5a4736974abde2843294f35307ee2b0e5e", "installed_by": ["modules"] }, - "custom/dumpsoftwareversions": { - "branch": "master", - "git_sha": "bba7e362e4afead70653f84d8700588ea28d0f9e", - "installed_by": ["modules"], - "patch": "modules/nf-core/custom/dumpsoftwareversions/custom-dumpsoftwareversions.diff" - }, "custom/getchromsizes": { "branch": "master", "git_sha": "911696ea0b62df80e900ef244d7867d177971f73", diff --git a/modules/local/multiqc/main.nf b/modules/local/multiqc/main.nf index be0dfe2c3..bfccc5dd9 100644 --- a/modules/local/multiqc/main.nf +++ b/modules/local/multiqc/main.nf @@ -11,7 +11,6 @@ process MULTIQC { path multiqc_custom_config path software_versions path workflow_summary - path methods_description path logo path fail_trimming_summary path fail_mapping_summary diff --git a/modules/nf-core/custom/dumpsoftwareversions/custom-dumpsoftwareversions.diff b/modules/nf-core/custom/dumpsoftwareversions/custom-dumpsoftwareversions.diff deleted file mode 100644 index 2ec89807d..000000000 --- a/modules/nf-core/custom/dumpsoftwareversions/custom-dumpsoftwareversions.diff +++ /dev/null @@ -1,19 +0,0 @@ -Changes in module 'nf-core/custom/dumpsoftwareversions' ---- modules/nf-core/custom/dumpsoftwareversions/main.nf -+++ modules/nf-core/custom/dumpsoftwareversions/main.nf -@@ -2,10 +2,10 @@ - label 'process_single' - - // Requires `pyyaml` which does not have a dedicated container but is in the MultiQC container -- conda "${moduleDir}/environment.yml" -+ conda "bioconda::multiqc=1.19" - container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? -- 'https://depot.galaxyproject.org/singularity/multiqc:1.17--pyhdfd78af_0' : -- 'biocontainers/multiqc:1.17--pyhdfd78af_0' }" -+ 'https://depot.galaxyproject.org/singularity/multiqc:1.19--pyhdfd78af_0' : -+ 'biocontainers/multiqc:1.19--pyhdfd78af_0' }" - - input: - path versions - -************************************************************ diff --git a/modules/nf-core/custom/dumpsoftwareversions/environment.yml b/modules/nf-core/custom/dumpsoftwareversions/environment.yml deleted file mode 100644 index f0c63f698..000000000 --- a/modules/nf-core/custom/dumpsoftwareversions/environment.yml +++ /dev/null @@ -1,7 +0,0 @@ -name: custom_dumpsoftwareversions -channels: - - conda-forge - - bioconda - - defaults -dependencies: - - bioconda::multiqc=1.17 diff --git a/modules/nf-core/custom/dumpsoftwareversions/main.nf b/modules/nf-core/custom/dumpsoftwareversions/main.nf deleted file mode 100644 index b2dcf480e..000000000 --- a/modules/nf-core/custom/dumpsoftwareversions/main.nf +++ /dev/null @@ -1,24 +0,0 @@ -process CUSTOM_DUMPSOFTWAREVERSIONS { - label 'process_single' - - // Requires `pyyaml` which does not have a dedicated container but is in the MultiQC container - conda "bioconda::multiqc=1.19" - container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/multiqc:1.19--pyhdfd78af_0' : - 'biocontainers/multiqc:1.19--pyhdfd78af_0' }" - - input: - path versions - - output: - path "software_versions.yml" , emit: yml - path "software_versions_mqc.yml", emit: mqc_yml - path "versions.yml" , emit: versions - - when: - task.ext.when == null || task.ext.when - - script: - def args = task.ext.args ?: '' - template 'dumpsoftwareversions.py' -} diff --git a/modules/nf-core/custom/dumpsoftwareversions/meta.yml b/modules/nf-core/custom/dumpsoftwareversions/meta.yml deleted file mode 100644 index 5f15a5fde..000000000 --- a/modules/nf-core/custom/dumpsoftwareversions/meta.yml +++ /dev/null @@ -1,37 +0,0 @@ -# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/meta-schema.json -name: custom_dumpsoftwareversions -description: Custom module used to dump software versions within the nf-core pipeline template -keywords: - - custom - - dump - - version -tools: - - custom: - description: Custom module used to dump software versions within the nf-core pipeline template - homepage: https://github.com/nf-core/tools - documentation: https://github.com/nf-core/tools - licence: ["MIT"] -input: - - versions: - type: file - description: YML file containing software versions - pattern: "*.yml" -output: - - yml: - type: file - description: Standard YML file containing software versions - pattern: "software_versions.yml" - - mqc_yml: - type: file - description: MultiQC custom content YML file containing software versions - pattern: "software_versions_mqc.yml" - - versions: - type: file - description: File containing software versions - pattern: "versions.yml" -authors: - - "@drpatelh" - - "@grst" -maintainers: - - "@drpatelh" - - "@grst" diff --git a/modules/nf-core/custom/dumpsoftwareversions/templates/dumpsoftwareversions.py b/modules/nf-core/custom/dumpsoftwareversions/templates/dumpsoftwareversions.py deleted file mode 100755 index da0334085..000000000 --- a/modules/nf-core/custom/dumpsoftwareversions/templates/dumpsoftwareversions.py +++ /dev/null @@ -1,101 +0,0 @@ -#!/usr/bin/env python - - -"""Provide functions to merge multiple versions.yml files.""" - - -import yaml -import platform -from textwrap import dedent - - -def _make_versions_html(versions): - """Generate a tabular HTML output of all versions for MultiQC.""" - html = [ - dedent( - """\\ - - - - - - - - - - """ - ) - ] - for process, tmp_versions in sorted(versions.items()): - html.append("") - for i, (tool, version) in enumerate(sorted(tmp_versions.items())): - html.append( - dedent( - f"""\\ - - - - - - """ - ) - ) - html.append("") - html.append("
    Process Name Software Version
    {process if (i == 0) else ''}{tool}{version}
    ") - return "\\n".join(html) - - -def main(): - """Load all version files and generate merged output.""" - versions_this_module = {} - versions_this_module["${task.process}"] = { - "python": platform.python_version(), - "yaml": yaml.__version__, - } - - with open("$versions") as f: - versions_by_process = yaml.load(f, Loader=yaml.BaseLoader) | versions_this_module - - # aggregate versions by the module name (derived from fully-qualified process name) - versions_by_module = {} - for process, process_versions in versions_by_process.items(): - module = process.split(":")[-1] - try: - if versions_by_module[module] != process_versions: - raise AssertionError( - "We assume that software versions are the same between all modules. " - "If you see this error-message it means you discovered an edge-case " - "and should open an issue in nf-core/tools. " - ) - except KeyError: - versions_by_module[module] = process_versions - - versions_by_module["Workflow"] = { - "Nextflow": "$workflow.nextflow.version", - "$workflow.manifest.name": "$workflow.manifest.version", - } - - versions_mqc = { - "id": "software_versions", - "section_name": "${workflow.manifest.name} Software Versions", - "section_href": "https://github.com/${workflow.manifest.name}", - "plot_type": "html", - "description": "are collected at run time from the software output.", - "data": _make_versions_html(versions_by_module), - } - - with open("software_versions.yml", "w") as f: - yaml.dump(versions_by_module, f, default_flow_style=False) - with open("software_versions_mqc.yml", "w") as f: - yaml.dump(versions_mqc, f, default_flow_style=False) - - with open("versions.yml", "w") as f: - yaml.dump(versions_this_module, f, default_flow_style=False) - - -if __name__ == "__main__": - main() diff --git a/modules/nf-core/custom/dumpsoftwareversions/tests/main.nf.test b/modules/nf-core/custom/dumpsoftwareversions/tests/main.nf.test deleted file mode 100644 index eec1db10a..000000000 --- a/modules/nf-core/custom/dumpsoftwareversions/tests/main.nf.test +++ /dev/null @@ -1,38 +0,0 @@ -nextflow_process { - - name "Test Process CUSTOM_DUMPSOFTWAREVERSIONS" - script "../main.nf" - process "CUSTOM_DUMPSOFTWAREVERSIONS" - tag "modules" - tag "modules_nfcore" - tag "custom" - tag "dumpsoftwareversions" - tag "custom/dumpsoftwareversions" - - test("Should run without failures") { - when { - process { - """ - def tool1_version = ''' - TOOL1: - tool1: 0.11.9 - '''.stripIndent() - - def tool2_version = ''' - TOOL2: - tool2: 1.9 - '''.stripIndent() - - input[0] = Channel.of(tool1_version, tool2_version).collectFile() - """ - } - } - - then { - assertAll( - { assert process.success }, - { assert snapshot(process.out).match() } - ) - } - } -} diff --git a/modules/nf-core/custom/dumpsoftwareversions/tests/main.nf.test.snap b/modules/nf-core/custom/dumpsoftwareversions/tests/main.nf.test.snap deleted file mode 100644 index 4274ed57a..000000000 --- a/modules/nf-core/custom/dumpsoftwareversions/tests/main.nf.test.snap +++ /dev/null @@ -1,27 +0,0 @@ -{ - "Should run without failures": { - "content": [ - { - "0": [ - "software_versions.yml:md5,1c851188476409cda5752ce971b20b58" - ], - "1": [ - "software_versions_mqc.yml:md5,2570f4ba271ad08357b0d3d32a9cf84d" - ], - "2": [ - "versions.yml:md5,3843ac526e762117eedf8825b40683df" - ], - "mqc_yml": [ - "software_versions_mqc.yml:md5,2570f4ba271ad08357b0d3d32a9cf84d" - ], - "versions": [ - "versions.yml:md5,3843ac526e762117eedf8825b40683df" - ], - "yml": [ - "software_versions.yml:md5,1c851188476409cda5752ce971b20b58" - ] - } - ], - "timestamp": "2023-11-03T14:43:22.157011" - } -} diff --git a/modules/nf-core/custom/dumpsoftwareversions/tests/tags.yml b/modules/nf-core/custom/dumpsoftwareversions/tests/tags.yml deleted file mode 100644 index 405aa24ae..000000000 --- a/modules/nf-core/custom/dumpsoftwareversions/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -custom/dumpsoftwareversions: - - modules/nf-core/custom/dumpsoftwareversions/** diff --git a/subworkflows/local/prepare_genome/main.nf b/subworkflows/local/prepare_genome/main.nf index 0840c7734..ace271641 100644 --- a/subworkflows/local/prepare_genome/main.nf +++ b/subworkflows/local/prepare_genome/main.nf @@ -35,28 +35,30 @@ include { STAR_GENOMEGENERATE_IGENOMES } from '../../../modules/local/st workflow PREPARE_GENOME { take: - fasta // file: /path/to/genome.fasta - gtf // file: /path/to/genome.gtf - gff // file: /path/to/genome.gff - additional_fasta // file: /path/to/additional.fasta - transcript_fasta // file: /path/to/transcript.fasta - gene_bed // file: /path/to/gene.bed - splicesites // file: /path/to/splicesites.txt - bbsplit_fasta_list // file: /path/to/bbsplit_fasta_list.txt - star_index // directory: /path/to/star/index/ - rsem_index // directory: /path/to/rsem/index/ - salmon_index // directory: /path/to/salmon/index/ - kallisto_index // directory: /path/to/kallisto/index/ - hisat2_index // directory: /path/to/hisat2/index/ - bbsplit_index // directory: /path/to/rsem/index/ - gencode // boolean: whether the genome is from GENCODE - is_aws_igenome // boolean: whether the genome files are from AWS iGenomes - biotype // string: if additional fasta file is provided biotype value to use when appending entries to GTF file - prepare_tool_indices // list: tools to prepare indices for - filter_gtf // boolean: whether to filter GTF file + fasta // file: /path/to/genome.fasta + gtf // file: /path/to/genome.gtf + gff // file: /path/to/genome.gff + additional_fasta // file: /path/to/additional.fasta + transcript_fasta // file: /path/to/transcript.fasta + gene_bed // file: /path/to/gene.bed + splicesites // file: /path/to/splicesites.txt + bbsplit_fasta_list // file: /path/to/bbsplit_fasta_list.txt + star_index // directory: /path/to/star/index/ + rsem_index // directory: /path/to/rsem/index/ + salmon_index // directory: /path/to/salmon/index/ + kallisto_index // directory: /path/to/kallisto/index/ + hisat2_index // directory: /path/to/hisat2/index/ + bbsplit_index // directory: /path/to/rsem/index/ + gencode // boolean: whether the genome is from GENCODE + featurecounts_group_type // string: The attribute type used to group feature types in the GTF file when generating the biotype plot with featureCounts + aligner // string: Specifies the alignment algorithm to use - available options are 'star_salmon', 'star_rsem' and 'hisat2' + pseudo_aligner // string: Specifies the pseudo aligner to use - available options are 'salmon'. Runs in addition to '--aligner' + skip_gtf_filter // boolean: Skip filtering of GTF for valid scaffolds and/ or transcript IDs + skip_bbsplit // boolean: Skip BBSplit for removal of non-reference genome reads + skip_alignment // boolean: Skip all of the alignment-based processes within the pipeline + skip_pseudo_alignment // boolean: Skip all of the pseudoalignment-based processes within the pipeline main: - ch_versions = Channel.empty() // @@ -91,6 +93,24 @@ workflow PREPARE_GENOME { ch_versions = ch_versions.mix(GFFREAD.out.versions) } + // Determine whether to filter the GTF or not + def filter_gtf = + (( + // Condition 1: Alignment is required and aligner is set + !skip_alignment && aligner + ) || + ( + // Condition 2: Pseudoalignment is required and pseudoaligner is set + !skip_pseudo_alignment && pseudo_aligner + ) || + ( + // Condition 3: Transcript FASTA file is not provided + !transcript_fasta + )) && + ( + // Condition 4: --skip_gtf_filter is not provided + !skip_gtf_filter + ) if (filter_gtf) { GTF_FILTER ( ch_fasta, ch_gtf ) ch_gtf = GTF_FILTER.out.genome_gtf @@ -101,6 +121,7 @@ workflow PREPARE_GENOME { // // Uncompress additional fasta file and concatenate with reference fasta and gtf files // + def biotype = gencode ? "gene_type" : featurecounts_group_type if (additional_fasta) { if (additional_fasta.endsWith('.gz')) { ch_add_fasta = GUNZIP_ADDITIONAL_FASTA ( [ [:], additional_fasta ] ).gunzip.map { it[1] } @@ -157,6 +178,14 @@ workflow PREPARE_GENOME { ch_chrom_sizes = CUSTOM_GETCHROMSIZES.out.sizes.map { it[1] } ch_versions = ch_versions.mix(CUSTOM_GETCHROMSIZES.out.versions) + // + // Get list of indices that need to be created + // + def prepare_tool_indices = [] + if (!skip_bbsplit) { prepare_tool_indices << 'bbsplit' } + if (!skip_alignment) { prepare_tool_indices << aligner } + if (!skip_pseudo_alignment && pseudo_aligner) { prepare_tool_indices << pseudo_aligner } + // // Uncompress BBSplit index or generate from scratch if required // @@ -197,6 +226,13 @@ workflow PREPARE_GENOME { ch_star_index = Channel.value(file(star_index)) } } else { + // Check if an AWS iGenome has been provided to use the appropriate version of STAR + def is_aws_igenome = false + if (fasta && gtf) { + if ((file(fasta).getName() - '.gz' == 'genome.fa') && (file(gtf).getName() - '.gz' == 'genes.gtf')) { + is_aws_igenome = true + } + } if (is_aws_igenome) { ch_star_index = STAR_GENOMEGENERATE_IGENOMES ( ch_fasta, ch_gtf ).index ch_versions = ch_versions.mix(STAR_GENOMEGENERATE_IGENOMES.out.versions) diff --git a/subworkflows/local/utils_nfcore_rnaseq_pipeline/main.nf b/subworkflows/local/utils_nfcore_rnaseq_pipeline/main.nf new file mode 100644 index 000000000..684325f6e --- /dev/null +++ b/subworkflows/local/utils_nfcore_rnaseq_pipeline/main.nf @@ -0,0 +1,528 @@ +// +// Subworkflow with functionality specific to the nf-core/rnaseq pipeline +// + +import groovy.json.JsonSlurper + +/* +======================================================================================== + IMPORT MODULES/SUBWORKFLOWS +======================================================================================== +*/ + +include { UTILS_NFVALIDATION_PLUGIN } from '../../nf-core/utils_nfvalidation_plugin' +include { fromSamplesheet } from 'plugin/nf-validation' +include { paramsSummaryMap } from 'plugin/nf-validation' +include { UTILS_NEXTFLOW_PIPELINE } from '../../nf-core/utils_nextflow_pipeline' +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' + +/* +======================================================================================== + SUBWORKFLOW TO INITIALISE PIPELINE +======================================================================================== +*/ + +workflow PIPELINE_INITIALISATION { + + main: + + // + // Print version and exit if required and dump pipeline parameters to JSON file + // + UTILS_NEXTFLOW_PIPELINE ( + params.version, + true, + params.outdir, + workflow.profile.tokenize(',').intersect(['conda', 'mamba']).size() >= 1 + ) + + // + // Validate parameters and generate parameter summary to stdout + // + def pre_help_text = nfCoreLogo(params.monochrome_logs) + def post_help_text = '\n' + workflowCitation() + '\n' + dashedLine(params.monochrome_logs) + def String workflow_command = "nextflow run ${workflow.manifest.name} -profile --input samplesheet.csv --genome GRCh37 --outdir " + UTILS_NFVALIDATION_PLUGIN ( + params.help, + workflow_command, + pre_help_text, + post_help_text, + params.validate_params, + "nextflow_schema.json" + ) + + // + // Check config provided to the pipeline + // + UTILS_NFCORE_PIPELINE () + + // + // Custom validation for pipeline parameters + // + validateInputParameters() + + // + // Create channel from input file provided through params.input + // + Channel + .fromSamplesheet("input") + .map { + meta, fastq_1, fastq_2 -> + if (!fastq_2) { + return [ meta.id, meta + [ single_end:true ], [ fastq_1 ] ] + } else { + return [ meta.id, meta + [ single_end:false ], [ fastq_1, fastq_2 ] ] + } + } + .groupTuple() + .map { + validateInputSamplesheet(it) + } + .set { ch_samplesheet } + + emit: + samplesheet = ch_samplesheet +} + +/* +======================================================================================== + SUBWORKFLOW FOR PIPELINE COMPLETION +======================================================================================== +*/ + +workflow PIPELINE_COMPLETION { + + take: + 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 + + main: + + summary_params = paramsSummaryMap(workflow, parameters_schema: "nextflow_schema.json") + + // + // Completion email and summary + // + workflow.onComplete { + if (email || email_on_fail) { + completionEmail(summary_params, email, email_on_fail, plaintext_email, outdir, monochrome_logs) + } + + completionSummary(monochrome_logs) + + if (hook_url) { + imNotification(summary_params, hook_url) + } + } +} + +/* +======================================================================================== + FUNCTIONS +======================================================================================== +*/ + +// +// Function to validate channels from input samplesheet +// +def validateInputSamplesheet(input) { + def (metas, fastqs) = input[1..2] + + // Check that multiple runs of the same sample are of the same strandedness + def strandedness_ok = metas.collect{ it.strandedness }.unique().size == 1 + if (!strandedness_ok) { + error("Please check input samplesheet -> Multiple runs of a sample must have the same strandedness!: ${metas[0].id}") + } + + // 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 + if (!endedness_ok) { + error("Please check input samplesheet -> Multiple runs of a sample must be of the same datatype i.e. single-end or paired-end: ${metas[0].id}") + } + + return [ metas[0], fastqs ] +} + +// +// Check and validate pipeline parameters +// +def validateInputParameters() { + + genomeExistsError() + + if (!params.fasta) { + error("Genome fasta file not specified with e.g. '--fasta genome.fa' or via a detectable config file.") + } + + if (!params.gtf && !params.gff) { + error("No GTF or GFF3 annotation specified! The pipeline requires at least one of these files.") + } + + if (params.gtf) { + if (params.gff) { + gtfGffWarn() + } + if (params.genome == 'GRCh38' && params.gtf.contains('Homo_sapiens/NCBI/GRCh38/Annotation/Genes/genes.gtf')) { + ncbiGenomeWarn() + } + if (params.gtf.contains('/UCSC/') && params.gtf.contains('Annotation/Genes/genes.gtf')) { + ucscGenomeWarn() + } + } + + if (params.transcript_fasta) { + transcriptsFastaWarn() + } + + if (!params.skip_bbsplit && !params.bbsplit_index && !params.bbsplit_fasta_list) { + error("Please provide either --bbsplit_fasta_list / --bbsplit_index to run BBSplit.") + } + + if (params.remove_ribo_rna && !params.ribo_database_manifest) { + error("Please provide --ribo_database_manifest to remove ribosomal RNA with SortMeRNA.") + } + + if (params.with_umi && !params.skip_umi_extract) { + if (!params.umitools_bc_pattern && !params.umitools_bc_pattern2) { + error("UMI-tools requires a barcode pattern to extract barcodes from the reads.") + } + } + + if (params.skip_alignment) { + skipAlignmentWarn() + } + + if (!params.skip_pseudo_alignment && params.pseudo_aligner) { + if (!(params.salmon_index || params.transcript_fasta || (params.fasta && (params.gtf || params.gff)))) { + error("To use `--pseudo_aligner 'salmon'`, you must provide either --salmon_index or --transcript_fasta or both --fasta and --gtf / --gff.") + } + } + + // Checks when running --aligner star_rsem + if (!params.skip_alignment && params.aligner == 'star_rsem') { + if (params.with_umi) { + rsemUmiError() + } + if (params.rsem_index && params.star_index) { + rsemStarIndexWarn() + } + if (params.aligner == 'star_rsem' && params.extra_star_align_args) { + rsemStarExtraArgumentsWarn() + } + } + + // Warn if --additional_fasta provided with aligner index + if (!params.skip_alignment && params.additional_fasta) { + def index = '' + if (params.aligner == 'star_salmon' && params.star_index) { + index = 'star' + } + if (params.aligner == 'star_rsem' && params.rsem_index) { + index = 'rsem' + } + if (params.aligner == 'hisat2' && params.hisat2_index) { + index = 'hisat2' + } + if (index) { + additionaFastaIndexWarn(index) + } + } + + // Check which RSeQC modules we are running + def valid_rseqc_modules = ['bam_stat', 'inner_distance', 'infer_experiment', 'junction_annotation', 'junction_saturation', 'read_distribution', 'read_duplication', 'tin'] + def rseqc_modules = params.rseqc_modules ? params.rseqc_modules.split(',').collect{ it.trim().toLowerCase() } : [] + if ((valid_rseqc_modules + rseqc_modules).unique().size() != valid_rseqc_modules.size()) { + error("Invalid option: ${params.rseqc_modules}. Valid options for '--rseqc_modules': ${valid_rseqc_modules.join(', ')}") + } + + // Check rRNA databases for sortmerna + if (params.remove_ribo_rna) { + ch_ribo_db = file(params.ribo_database_manifest) + if (ch_ribo_db.isEmpty()) { + error("File provided with --ribo_database_manifest is empty: ${ch_ribo_db.getName()}!") + } + } + + // Check if file with list of fastas is provided when running BBSplit + if (!params.skip_bbsplit && !params.bbsplit_index && params.bbsplit_fasta_list) { + ch_bbsplit_fasta_list = file(params.bbsplit_fasta_list) + if (ch_bbsplit_fasta_list.isEmpty()) { + error("File provided with --bbsplit_fasta_list is empty: ${ch_bbsplit_fasta_list.getName()}!") + } + } +} + +// +// Get attribute from genome config file e.g. fasta +// +def getGenomeAttribute(attribute) { + if (params.genomes && params.genome && params.genomes.containsKey(params.genome)) { + if (params.genomes[ params.genome ].containsKey(attribute)) { + return params.genomes[ params.genome ][ attribute ] + } + } + return null +} + +// +// Exit pipeline if incorrect --genome key provided +// +def genomeExistsError() { + if (params.genomes && params.genome && !params.genomes.containsKey(params.genome)) { + def error_string = "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" + + " Genome '${params.genome}' not found in any config files provided to the pipeline.\n" + + " Currently, the available genome keys are:\n" + + " ${params.genomes.keySet().join(", ")}\n" + + "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" + error(error_string) + } +} + +// +// Print a warning if both GTF and GFF have been provided +// +def gtfGffWarn() { + log.warn "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" + + " Both '--gtf' and '--gff' parameters have been provided.\n" + + " Using GTF file as priority.\n" + + "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" +} + +// +// Print a warning if using GRCh38 assembly from igenomes.config +// +def ncbiGenomeWarn() { + log.warn "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" + + " When using '--genome GRCh38' the assembly is from the NCBI and NOT Ensembl.\n" + + " Biotype QC will be skipped to circumvent the issue below:\n" + + " https://github.com/nf-core/rnaseq/issues/460\n\n" + + " If you would like to use the soft-masked Ensembl assembly instead please see:\n" + + " https://github.com/nf-core/rnaseq/issues/159#issuecomment-501184312\n" + + "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" +} + +// +// Print a warning if using a UCSC assembly from igenomes.config +// +def ucscGenomeWarn() { + log.warn "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" + + " When using UCSC assemblies the 'gene_biotype' field is absent from the GTF file.\n" + + " Biotype QC will be skipped to circumvent the issue below:\n" + + " https://github.com/nf-core/rnaseq/issues/460\n\n" + + " If you would like to use the soft-masked Ensembl assembly instead please see:\n" + + " https://github.com/nf-core/rnaseq/issues/159#issuecomment-501184312\n" + + "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" +} + +// +// Print a warning if using '--transcript_fasta' +// +def transcriptsFastaWarn() { + log.warn "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" + + " '--transcript_fasta' parameter has been provided.\n" + + " Make sure transcript names in this file match those in the GFF/GTF file.\n\n" + + " Please see:\n" + + " https://github.com/nf-core/rnaseq/issues/753\n" + + "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" +} + +// +// Print a warning if --skip_alignment has been provided +// +def skipAlignmentWarn() { + log.warn "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" + + " '--skip_alignment' parameter has been provided.\n" + + " Skipping alignment, genome-based quantification and all downstream QC processes.\n" + + "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" +} + +// +// Print a warning if using '--aligner star_rsem' and '--with_umi' +// +def rsemUmiError() { + def error_string = "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" + + " When using '--aligner star_rsem', STAR is run by RSEM itself and so it is\n" + + " not possible to remove UMIs before the quantification.\n\n" + + " If you would like to remove UMI barcodes using the '--with_umi' option\n" + + " please use either '--aligner star_salmon' or '--aligner hisat2'.\n" + + "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" + error(error_string) +} + +// +// Print a warning if using '--aligner star_rsem' and providing both '--rsem_index' and '--star_index' +// +def rsemStarIndexWarn() { + log.warn "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" + + " When using '--aligner star_rsem', both the STAR and RSEM indices should\n" + + " be present in the path specified by '--rsem_index'.\n\n" + + " This warning has been generated because you have provided both\n" + + " '--rsem_index' and '--star_index'. The pipeline will ignore the latter.\n\n" + + " Please see:\n" + + " https://github.com/nf-core/rnaseq/issues/568\n" + + "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" +} + +// +// Print a warning if using '--aligner star_rsem' and providing '--star_extra_alignment_args' +// +def rsemStarExtraArgumentsWarn() { + log.warn "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" + + " No additional arguments can be passed to STAR when using RSEM.\n" + + " Because RSEM enforces its own parameters for STAR, any extra arguments\n" + + " to STAR will be ignored. Alternatively, choose the STAR+Salmon route.\n\n" + + " This warning has been generated because you have provided both\n" + + " '--aligner star_rsem' and '--extra_star_align_args'.\n\n" + + "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" +} + +// +// Print a warning if using '--additional_fasta' and '--_index' +// +def additionaFastaIndexWarn(index) { + log.warn "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" + + " When using '--additional_fasta ' the aligner index will not\n" + + " be re-built with the transgenes incorporated by default since you have \n" + + " already provided an index via '--${index}_index '.\n\n" + + " Set '--additional_fasta --${index}_index false --gene_bed false --save_reference'\n" + + " to re-build the index with transgenes included and the index and gene BED file will be saved in\n" + + " 'results/genome/index/${index}/' for re-use with '--${index}_index'.\n\n" + + " Ignore this warning if you know that the index already contains transgenes.\n\n" + + " Please see:\n" + + " https://github.com/nf-core/rnaseq/issues/556\n" + + "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" +} + +// +// Function to generate an error if contigs in genome fasta file > 512 Mbp +// +def checkMaxContigSize(fai_file) { + def max_size = 512000000 + fai_file.eachLine { line -> + def lspl = line.split('\t') + def chrom = lspl[0] + def size = lspl[1] + if (size.toInteger() > max_size) { + def error_string = "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" + + " Contig longer than ${max_size}bp found in reference genome!\n\n" + + " ${chrom}: ${size}\n\n" + + " Provide the '--bam_csi_index' parameter to use a CSI instead of BAI index.\n\n" + + " Please see:\n" + + " https://github.com/nf-core/rnaseq/issues/744\n" + + "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" + error(error_string) + } + } +} + +// +// Create MultiQC tsv custom content from a list of values +// +def multiqcTsvFromList(tsv_data, header) { + def tsv_string = "" + if (tsv_data.size() > 0) { + tsv_string += "${header.join('\t')}\n" + tsv_string += tsv_data.join('\n') + } + return tsv_string +} + +// +// Function that parses Salmon quant 'meta_info.json' output file to get inferred strandedness +// +def getSalmonInferredStrandedness(json_file) { + def lib_type = new JsonSlurper().parseText(json_file.text).get('library_types')[0] + def strandedness = 'reverse' + if (lib_type) { + if (lib_type in ['U', 'IU']) { + strandedness = 'unstranded' + } else if (lib_type in ['SF', 'ISF']) { + strandedness = 'forward' + } else if (lib_type in ['SR', 'ISR']) { + strandedness = 'reverse' + } + } + return strandedness +} + +// +// Function that parses and returns the alignment rate from the STAR log output +// +def getStarPercentMapped(params, align_log) { + def percent_aligned = 0 + def pattern = /Uniquely mapped reads %\s*\|\s*([\d\.]+)%/ + align_log.eachLine { line -> + def matcher = line =~ pattern + if (matcher) { + percent_aligned = matcher[0][1].toFloat() + } + } + + def pass = false + if (percent_aligned >= params.min_mapped_reads.toFloat()) { + pass = true + } + return [ percent_aligned, pass ] +} + +// +// Function to check whether biotype field exists in GTF file +// +def biotypeInGtf(gtf_file, biotype) { + def hits = 0 + gtf_file.eachLine { line -> + def attributes = line.split('\t')[-1].split() + if (attributes.contains(biotype)) { + hits += 1 + } + } + if (hits) { + return true + } else { + log.warn "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" + + " Biotype attribute '${biotype}' not found in the last column of the GTF file!\n\n" + + " Biotype QC will be skipped to circumvent the issue below:\n" + + " https://github.com/nf-core/rnaseq/issues/460\n\n" + + " Amend '--featurecounts_group_type' to change this behaviour.\n" + + "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" + return false + } +} + +// +// Function that parses and returns the predicted strandedness from the RSeQC infer_experiment.py output +// +def getInferexperimentStrandedness(inferexperiment_file, cutoff=30) { + def sense = 0 + def antisense = 0 + def undetermined = 0 + inferexperiment_file.eachLine { line -> + def undetermined_matcher = line =~ /Fraction of reads failed to determine:\s([\d\.]+)/ + def se_sense_matcher = line =~ /Fraction of reads explained by "\++,--":\s([\d\.]+)/ + def se_antisense_matcher = line =~ /Fraction of reads explained by "\+-,-\+":\s([\d\.]+)/ + def pe_sense_matcher = line =~ /Fraction of reads explained by "1\++,1--,2\+-,2-\+":\s([\d\.]+)/ + def pe_antisense_matcher = line =~ /Fraction of reads explained by "1\+-,1-\+,2\+\+,2--":\s([\d\.]+)/ + if (undetermined_matcher) undetermined = undetermined_matcher[0][1].toFloat() * 100 + if (se_sense_matcher) sense = se_sense_matcher[0][1].toFloat() * 100 + if (se_antisense_matcher) antisense = se_antisense_matcher[0][1].toFloat() * 100 + if (pe_sense_matcher) sense = pe_sense_matcher[0][1].toFloat() * 100 + if (pe_antisense_matcher) antisense = pe_antisense_matcher[0][1].toFloat() * 100 + } + def strandedness = 'unstranded' + if (sense >= 100-cutoff) { + strandedness = 'forward' + } else if (antisense >= 100-cutoff) { + strandedness = 'reverse' + } + return [ strandedness, sense, antisense, undetermined ] +} diff --git a/subworkflows/nf-core/utils_nfcore_pipeline/main.nf b/subworkflows/nf-core/utils_nfcore_pipeline/main.nf index 2b7ec3df5..6d805bb3f 100644 --- a/subworkflows/nf-core/utils_nfcore_pipeline/main.nf +++ b/subworkflows/nf-core/utils_nfcore_pipeline/main.nf @@ -101,6 +101,7 @@ def softwareVersionsToYAML(ch_versions) { return ch_versions .unique() .map { processVersionsFromYAML(it) } + .unique() .mix(Channel.of(workflowVersionToYAML())) } diff --git a/assets/multiqc/biotypes_header.txt b/workflows/rnaseq/assets/multiqc/biotypes_header.txt similarity index 100% rename from assets/multiqc/biotypes_header.txt rename to workflows/rnaseq/assets/multiqc/biotypes_header.txt diff --git a/assets/multiqc/deseq2_clustering_header.txt b/workflows/rnaseq/assets/multiqc/deseq2_clustering_header.txt similarity index 100% rename from assets/multiqc/deseq2_clustering_header.txt rename to workflows/rnaseq/assets/multiqc/deseq2_clustering_header.txt diff --git a/assets/multiqc/deseq2_pca_header.txt b/workflows/rnaseq/assets/multiqc/deseq2_pca_header.txt similarity index 100% rename from assets/multiqc/deseq2_pca_header.txt rename to workflows/rnaseq/assets/multiqc/deseq2_pca_header.txt diff --git a/assets/methods_description_template.yml b/workflows/rnaseq/assets/multiqc/methods_description_template.yml similarity index 100% rename from assets/methods_description_template.yml rename to workflows/rnaseq/assets/multiqc/methods_description_template.yml diff --git a/assets/multiqc_config.yml b/workflows/rnaseq/assets/multiqc/multiqc_config.yml similarity index 100% rename from assets/multiqc_config.yml rename to workflows/rnaseq/assets/multiqc/multiqc_config.yml diff --git a/workflows/rnaseq/main.nf b/workflows/rnaseq/main.nf index bbfce7db6..f8b204fbd 100755 --- a/workflows/rnaseq/main.nf +++ b/workflows/rnaseq/main.nf @@ -1,100 +1,3 @@ -/* -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - PRINT PARAMS SUMMARY -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -*/ - -include { paramsSummaryLog; paramsSummaryMap; fromSamplesheet } from 'plugin/nf-validation' - -def logo = NfcoreTemplate.logo(workflow, params.monochrome_logs) -def citation = '\n' + WorkflowMain.citation(workflow) + '\n' -def summary_params = paramsSummaryMap(workflow) - -// Print parameter summary log to screen -log.info logo + paramsSummaryLog(workflow) + citation - -/* -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - VALIDATE INPUTS -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -*/ - -WorkflowRnaseq.initialise(params, log) - -// Check rRNA databases for sortmerna -if (params.remove_ribo_rna) { - ch_ribo_db = file(params.ribo_database_manifest) - if (ch_ribo_db.isEmpty()) {exit 1, "File provided with --ribo_database_manifest is empty: ${ch_ribo_db.getName()}!"} -} - -// Check if file with list of fastas is provided when running BBSplit -if (!params.skip_bbsplit && !params.bbsplit_index && params.bbsplit_fasta_list) { - ch_bbsplit_fasta_list = file(params.bbsplit_fasta_list) - if (ch_bbsplit_fasta_list.isEmpty()) {exit 1, "File provided with --bbsplit_fasta_list is empty: ${ch_bbsplit_fasta_list.getName()}!"} -} - -// Check alignment parameters -def prepareToolIndices = [] -if (!params.skip_bbsplit) { prepareToolIndices << 'bbsplit' } -if (!params.skip_alignment) { prepareToolIndices << params.aligner } -if (!params.skip_pseudo_alignment && params.pseudo_aligner) { prepareToolIndices << params.pseudo_aligner } - -// Determine whether to filter the GTF or not -def filterGtf = - (( - // Condition 1: Alignment is required and aligner is set - !params.skip_alignment && params.aligner - ) || - ( - // Condition 2: Pseudoalignment is required and pseudoaligner is set - !params.skip_pseudo_alignment && params.pseudo_aligner - ) || - ( - // Condition 3: Transcript FASTA file is not provided - !params.transcript_fasta - )) && - ( - // Condition 4: --skip_gtf_filter is not provided - !params.skip_gtf_filter - ) - -// Get RSeqC modules to run -def rseqc_modules = params.rseqc_modules ? params.rseqc_modules.split(',').collect{ it.trim().toLowerCase() } : [] -if (params.bam_csi_index) { - for (rseqc_module in ['read_distribution', 'inner_distance', 'tin']) { - if (rseqc_modules.contains(rseqc_module)) { - rseqc_modules.remove(rseqc_module) - } - } -} - -// Stage dummy file to be used as an optional input where required -ch_dummy_file = file("$projectDir/assets/dummy_file.txt", checkIfExists: true) - -// Check if an AWS iGenome has been provided to use the appropriate version of STAR -def is_aws_igenome = false -if (params.fasta && params.gtf) { - if ((file(params.fasta).getName() - '.gz' == 'genome.fa') && (file(params.gtf).getName() - '.gz' == 'genes.gtf')) { - is_aws_igenome = true - } -} - -/* -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - CONFIG FILES -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -*/ - -ch_multiqc_config = Channel.fromPath("$projectDir/assets/multiqc_config.yml", checkIfExists: true) -ch_multiqc_custom_config = params.multiqc_config ? Channel.fromPath(params.multiqc_config) : Channel.empty() -ch_multiqc_logo = params.multiqc_logo ? Channel.fromPath(params.multiqc_logo) : Channel.empty() -ch_multiqc_custom_methods_description = params.multiqc_methods_description ? file(params.multiqc_methods_description) : file("$projectDir/assets/methods_description_template.yml", checkIfExists: true) - -// Header files for MultiQC -ch_pca_header_multiqc = file("$projectDir/assets/multiqc/deseq2_pca_header.txt", checkIfExists: true) -ch_clustering_header_multiqc = file("$projectDir/assets/multiqc/deseq2_clustering_header.txt", checkIfExists: true) -ch_biotypes_header_multiqc = file("$projectDir/assets/multiqc/biotypes_header.txt", checkIfExists: true) - /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ IMPORT LOCAL MODULES/SUBWORKFLOWS @@ -116,12 +19,17 @@ include { UMITOOLS_PREPAREFORRSEM as UMITOOLS_PREPAREFORSALMON } from '../../mod // // SUBWORKFLOW: Consisting of a mix of local and nf-core/modules // -include { PREPARE_GENOME } from '../../subworkflows/local/prepare_genome' include { ALIGN_STAR } from '../../subworkflows/local/align_star' include { QUANTIFY_RSEM } from '../../subworkflows/local/quantify_rsem' include { QUANTIFY_PSEUDO_ALIGNMENT as QUANTIFY_STAR_SALMON } from '../../subworkflows/local/quantify_pseudo' include { QUANTIFY_PSEUDO_ALIGNMENT } from '../../subworkflows/local/quantify_pseudo' +include { multiqcTsvFromList } from '../../subworkflows/local/utils_nfcore_rnaseq_pipeline' +include { getSalmonInferredStrandedness } from '../../subworkflows/local/utils_nfcore_rnaseq_pipeline' +include { getStarPercentMapped } from '../../subworkflows/local/utils_nfcore_rnaseq_pipeline' +include { biotypeInGtf } from '../../subworkflows/local/utils_nfcore_rnaseq_pipeline' +include { getInferexperimentStrandedness } from '../../subworkflows/local/utils_nfcore_rnaseq_pipeline' + /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ IMPORT NF-CORE MODULES/SUBWORKFLOWS @@ -139,11 +47,13 @@ include { QUALIMAP_RNASEQ } from '../../modules/nf-core/qualimap/rna include { SORTMERNA } from '../../modules/nf-core/sortmerna' include { STRINGTIE_STRINGTIE } from '../../modules/nf-core/stringtie/stringtie' include { SUBREAD_FEATURECOUNTS } from '../../modules/nf-core/subread/featurecounts' -include { CUSTOM_DUMPSOFTWAREVERSIONS } from '../../modules/nf-core/custom/dumpsoftwareversions' // // SUBWORKFLOW: Consisting entirely of nf-core/modules // +include { paramsSummaryMap } from 'plugin/nf-validation' +include { paramsSummaryMultiqc } from '../../subworkflows/nf-core/utils_nfcore_pipeline' +include { softwareVersionsToYAML } from '../../subworkflows/nf-core/utils_nfcore_pipeline' include { FASTQ_SUBSAMPLE_FQ_SALMON } from '../../subworkflows/nf-core/fastq_subsample_fq_salmon' include { FASTQ_FASTQC_UMITOOLS_TRIMGALORE } from '../../subworkflows/nf-core/fastq_fastqc_umitools_trimgalore' include { FASTQ_FASTQC_UMITOOLS_FASTP } from '../../subworkflows/nf-core/fastq_fastqc_umitools_fastp' @@ -162,68 +72,37 @@ include { BEDGRAPH_BEDCLIP_BEDGRAPHTOBIGWIG as BEDGRAPH_BEDCLIP_BEDGRAPHTOBIGWIG ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ -// Info required for completion email and summary -def multiqc_report = [] -def pass_mapped_reads = [:] -def pass_trimmed_reads = [:] -def pass_strand_check = [:] - -workflow RNASEQ { - - ch_versions = Channel.empty() - - // - // SUBWORKFLOW: Uncompress and prepare reference genome files - // - def biotype = params.gencode ? "gene_type" : params.featurecounts_group_type - PREPARE_GENOME ( - params.fasta, - params.gtf, - params.gff, - params.additional_fasta, - params.transcript_fasta, - params.gene_bed, - params.splicesites, - params.bbsplit_fasta_list, - params.star_index, - params.rsem_index, - params.salmon_index, - params.kallisto_index, - params.hisat2_index, - params.bbsplit_index, - params.gencode, - is_aws_igenome, - biotype, - prepareToolIndices, - filterGtf - ) - ch_versions = ch_versions.mix(PREPARE_GENOME.out.versions) - - // Check if contigs in genome fasta file > 512 Mbp - if (!params.skip_alignment && !params.bam_csi_index) { - PREPARE_GENOME - .out - .fai - .map { WorkflowRnaseq.checkMaxContigSize(it, log) } - } - - // - // Create input channel from input file provided through params.input - // - Channel - .fromSamplesheet("input") - .map { - meta, fastq_1, fastq_2 -> - if (!fastq_2) { - return [ meta.id, meta + [ single_end:true ], [ fastq_1 ] ] - } else { - return [ meta.id, meta + [ single_end:false ], [ fastq_1, fastq_2 ] ] - } - } - .groupTuple() - .map { - WorkflowRnaseq.validateInput(it) - } +// Header files for MultiQC +ch_pca_header_multiqc = file("$projectDir/workflows/rnaseq/assets/multiqc/deseq2_pca_header.txt", checkIfExists: true) +ch_clustering_header_multiqc = file("$projectDir/workflows/rnaseq/assets/multiqc/deseq2_clustering_header.txt", checkIfExists: true) +ch_biotypes_header_multiqc = file("$projectDir/workflows/rnaseq/assets/multiqc/biotypes_header.txt", checkIfExists: true) +ch_dummy_file = ch_pca_header_multiqc + +workflow NFCORE_RNASEQ { + + take: + ch_samplesheet // channel: samplesheet read in from --input + ch_versions // channel: [ path(versions.yml) ] + ch_fasta // channel: path(genome.fasta) + ch_gtf // channel: path(genome.gtf) + ch_fai // channel: path(genome.fai) + ch_chrom_sizes // channel: path(genome.sizes) + ch_gene_bed // channel: path(gene.bed) + ch_transcript_fasta // channel: path(transcript.fasta) + ch_star_index // channel: path(star/index/) + ch_rsem_index // channel: path(rsem/index/) + ch_hisat2_index // channel: path(hisat2/index/) + ch_salmon_index // channel: path(salmon/index/) + ch_kallisto_index // channel: [ meta, path(kallisto/index/) ] + ch_bbsplit_index // channel: path(bbsplit/index/) + ch_splicesites // channel: path(genome.splicesites.txt) + + main: + + // + // Create separate channels for samples that have single/multiple FastQ files to merge + // + ch_samplesheet .branch { meta, fastqs -> single : fastqs.size() == 1 @@ -300,9 +179,7 @@ workflow RNASEQ { ch_trim_read_count .map { meta, num_reads -> - pass_trimmed_reads[meta.id] = true if (num_reads <= params.min_trimmed_reads.toFloat()) { - pass_trimmed_reads[meta.id] = false return [ "$meta.id\t$num_reads" ] } } @@ -310,7 +187,7 @@ workflow RNASEQ { .map { tsv_data -> def header = ["Sample", "Reads after trimming"] - WorkflowRnaseq.multiqcTsvFromList(tsv_data, header) + multiqcTsvFromList(tsv_data, header) } .set { ch_fail_trimming_multiqc } @@ -320,7 +197,7 @@ workflow RNASEQ { if (!params.skip_bbsplit) { BBMAP_BBSPLIT ( ch_filtered_reads, - PREPARE_GENOME.out.bbsplit_index, + ch_bbsplit_index, [], [ [], [] ], false @@ -335,6 +212,7 @@ workflow RNASEQ { // ch_sortmerna_multiqc = Channel.empty() if (params.remove_ribo_rna) { + ch_ribo_db = file(params.ribo_database_manifest) ch_sortmerna_fastas = Channel.from(ch_ribo_db.readLines()).map { row -> file(row, checkIfExists: true) }.collect() SORTMERNA ( @@ -364,9 +242,7 @@ workflow RNASEQ { .set { ch_strand_fastq } // Return empty channel if ch_strand_fastq.auto_strand is empty so salmon index isn't created - PREPARE_GENOME - .out - .fasta + ch_fasta .combine(ch_strand_fastq.auto_strand) .map { it.first() } .first() @@ -375,9 +251,9 @@ workflow RNASEQ { FASTQ_SUBSAMPLE_FQ_SALMON ( ch_strand_fastq.auto_strand, ch_genome_fasta, - PREPARE_GENOME.out.transcript_fasta, - PREPARE_GENOME.out.gtf, - PREPARE_GENOME.out.salmon_index, + ch_transcript_fasta, + ch_gtf, + ch_salmon_index, !params.salmon_index && !('salmon' in prepareToolIndices) ) ch_versions = ch_versions.mix(FASTQ_SUBSAMPLE_FQ_SALMON.out.versions) @@ -387,7 +263,7 @@ workflow RNASEQ { .json_info .join(ch_strand_fastq.auto_strand) .map { meta, json, reads -> - return [ meta + [ strandedness: WorkflowRnaseq.getSalmonInferredStrandedness(json) ], reads ] + return [ meta + [ strandedness: getSalmonInferredStrandedness(json) ], reads ] } .mix(ch_strand_fastq.known_strand) .set { ch_strand_inferred_filtered_fastq } @@ -404,15 +280,23 @@ workflow RNASEQ { ch_aligner_pca_multiqc = Channel.empty() ch_aligner_clustering_multiqc = Channel.empty() if (!params.skip_alignment && params.aligner == 'star_salmon') { + // Check if an AWS iGenome has been provided to use the appropriate version of STAR + def is_aws_igenome = false + if (params.fasta && params.gtf) { + if ((file(params.fasta).getName() - '.gz' == 'genome.fa') && (file(params.gtf).getName() - '.gz' == 'genes.gtf')) { + is_aws_igenome = true + } + } + ALIGN_STAR ( ch_strand_inferred_filtered_fastq, - PREPARE_GENOME.out.star_index.map { [ [:], it ] }, - PREPARE_GENOME.out.gtf.map { [ [:], it ] }, + ch_star_index.map { [ [:], it ] }, + ch_gtf.map { [ [:], it ] }, params.star_ignore_sjdbgtf, '', params.seq_center ?: '', is_aws_igenome, - PREPARE_GENOME.out.fasta.map { [ [:], it ] } + ch_fasta.map { [ [:], it ] } ) ch_genome_bam = ALIGN_STAR.out.bam ch_genome_bam_index = ALIGN_STAR.out.bai @@ -448,7 +332,7 @@ workflow RNASEQ { // Co-ordinate sort, index and run stats on transcriptome BAM BAM_SORT_STATS_SAMTOOLS ( ch_transcriptome_bam, - PREPARE_GENOME.out.fasta.map { [ [:], it ] } + ch_fasta.map { [ [:], it ] } ) ch_transcriptome_sorted_bam = BAM_SORT_STATS_SAMTOOLS.out.bam ch_transcriptome_sorted_bai = BAM_SORT_STATS_SAMTOOLS.out.bai @@ -496,8 +380,8 @@ workflow RNASEQ { QUANTIFY_STAR_SALMON ( ch_transcriptome_bam, ch_dummy_file, - PREPARE_GENOME.out.transcript_fasta, - PREPARE_GENOME.out.gtf, + ch_transcript_fasta, + ch_gtf, 'salmon', true, params.salmon_quant_libtype ?: '', @@ -525,8 +409,8 @@ workflow RNASEQ { if (!params.skip_alignment && params.aligner == 'star_rsem') { QUANTIFY_RSEM ( ch_strand_inferred_filtered_fastq, - PREPARE_GENOME.out.rsem_index, - PREPARE_GENOME.out.fasta.map { [ [:], it ] } + ch_rsem_index, + ch_fasta.map { [ [:], it ] } ) ch_genome_bam = QUANTIFY_RSEM.out.bam ch_genome_bam_index = QUANTIFY_RSEM.out.bai @@ -559,9 +443,9 @@ workflow RNASEQ { if (!params.skip_alignment && params.aligner == 'hisat2') { FASTQ_ALIGN_HISAT2 ( ch_strand_inferred_filtered_fastq, - PREPARE_GENOME.out.hisat2_index.map { [ [:], it ] }, - PREPARE_GENOME.out.splicesites.map { [ [:], it ] }, - PREPARE_GENOME.out.fasta.map { [ [:], it ] } + ch_hisat2_index.map { [ [:], it ] }, + ch_splicesites.map { [ [:], it ] }, + ch_fasta.map { [ [:], it ] } ) ch_genome_bam = FASTQ_ALIGN_HISAT2.out.bam ch_genome_bam_index = FASTQ_ALIGN_HISAT2.out.bai @@ -600,7 +484,7 @@ workflow RNASEQ { ch_fail_mapping_multiqc = Channel.empty() if (!params.skip_alignment && params.aligner.contains('star')) { ch_star_multiqc - .map { meta, align_log -> [ meta ] + WorkflowRnaseq.getStarPercentMapped(params, align_log) } + .map { meta, align_log -> [ meta ] + getStarPercentMapped(params, align_log) } .set { ch_percent_mapped } ch_genome_bam @@ -616,10 +500,8 @@ workflow RNASEQ { ch_percent_mapped .branch { meta, mapped, pass -> pass: pass - pass_mapped_reads[meta.id] = true return [ "$meta.id\t$mapped" ] fail: !pass - pass_mapped_reads[meta.id] = false return [ "$meta.id\t$mapped" ] } .set { ch_pass_fail_mapped } @@ -630,7 +512,7 @@ workflow RNASEQ { .map { tsv_data -> def header = ["Sample", "STAR uniquely mapped reads (%)"] - WorkflowRnaseq.multiqcTsvFromList(tsv_data, header) + multiqcTsvFromList(tsv_data, header) } .set { ch_fail_mapping_multiqc } } @@ -654,8 +536,8 @@ workflow RNASEQ { if (!params.skip_alignment && !params.skip_markduplicates && !params.with_umi) { BAM_MARKDUPLICATES_PICARD ( ch_genome_bam, - PREPARE_GENOME.out.fasta.map { [ [:], it ] }, - PREPARE_GENOME.out.fai.map { [ [:], it ] } + ch_fasta.map { [ [:], it ] }, + ch_fai.map { [ [:], it ] } ) ch_genome_bam = BAM_MARKDUPLICATES_PICARD.out.bam ch_genome_bam_index = BAM_MARKDUPLICATES_PICARD.out.bai @@ -675,7 +557,7 @@ workflow RNASEQ { if (!params.skip_alignment && !params.skip_stringtie) { STRINGTIE_STRINGTIE ( ch_genome_bam, - PREPARE_GENOME.out.gtf + ch_gtf ) ch_versions = ch_versions.mix(STRINGTIE_STRINGTIE.out.versions.first()) } @@ -684,17 +566,16 @@ workflow RNASEQ { // MODULE: Feature biotype QC using featureCounts // ch_featurecounts_multiqc = Channel.empty() + def biotype = params.gencode ? "gene_type" : params.featurecounts_group_type if (!params.skip_alignment && !params.skip_qc && !params.skip_biotype_qc && biotype) { - PREPARE_GENOME - .out - .gtf - .map { WorkflowRnaseq.biotypeInGtf(it, biotype, log) } + ch_gtf + .map { biotypeInGtf(it, biotype) } .set { biotype_in_gtf } // Prevent any samples from running if GTF file doesn't have a valid biotype ch_genome_bam - .combine(PREPARE_GENOME.out.gtf) + .combine(ch_gtf) .combine(biotype_in_gtf) .filter { it[-1] } .map { it[0.. 0) { BAM_RSEQC ( ch_genome_bam.join(ch_genome_bam_index, by: [0]), - PREPARE_GENOME.out.gene_bed, + ch_gene_bed, rseqc_modules ) ch_bamstat_multiqc = BAM_RSEQC.out.bamstat_txt @@ -790,10 +680,8 @@ workflow RNASEQ { ch_inferexperiment_multiqc .map { meta, strand_log -> - def inferred_strand = WorkflowRnaseq.getInferexperimentStrandedness(strand_log, 30) - pass_strand_check[meta.id] = true + def inferred_strand = getInferexperimentStrandedness(strand_log, 30) if (meta.strandedness != inferred_strand[0]) { - pass_strand_check[meta.id] = false return [ "$meta.id\t$meta.strandedness\t${inferred_strand.join('\t')}" ] } } @@ -808,7 +696,7 @@ workflow RNASEQ { "Antisense (%)", "Undetermined (%)" ] - WorkflowRnaseq.multiqcTsvFromList(tsv_data, header) + multiqcTsvFromList(tsv_data, header) } .set { ch_fail_strand_multiqc } } @@ -823,16 +711,16 @@ workflow RNASEQ { if (!params.skip_pseudo_alignment && params.pseudo_aligner) { if (params.pseudo_aligner == 'salmon') { - ch_pseudo_index = PREPARE_GENOME.out.salmon_index + ch_pseudo_index = ch_salmon_index } else { - ch_pseudo_index = PREPARE_GENOME.out.kallisto_index + ch_pseudo_index = ch_kallisto_index } QUANTIFY_PSEUDO_ALIGNMENT ( ch_strand_inferred_filtered_fastq, ch_pseudo_index, ch_dummy_file, - PREPARE_GENOME.out.gtf, + ch_gtf, params.pseudo_aligner, false, params.salmon_quant_libtype ?: '', @@ -854,30 +742,28 @@ workflow RNASEQ { ch_versions = ch_versions.mix(DESEQ2_QC_PSEUDO.out.versions) } } - + // - // MODULE: Pipeline reporting + // Collate and save software versions // - CUSTOM_DUMPSOFTWAREVERSIONS ( - ch_versions.unique().collectFile(name: 'collated_versions.yml') - ) + softwareVersionsToYAML(ch_versions) + .collectFile(storeDir: "${params.outdir}/pipeline_info", name: 'nf_core_rnaseq_software_mqc_versions.yml', sort: true, newLine: true) + .set { ch_collated_versions } // // MODULE: MultiQC // if (!params.skip_multiqc) { - workflow_summary = WorkflowRnaseq.paramsSummaryMultiqc(workflow, summary_params) - ch_workflow_summary = Channel.value(workflow_summary) - - methods_description = WorkflowRnaseq.methodsDescriptionText(workflow, ch_multiqc_custom_methods_description, params) - ch_methods_description = Channel.value(methods_description) - + ch_multiqc_config = Channel.fromPath("$projectDir/workflows/rnaseq/assets/multiqc/multiqc_config.yml", checkIfExists: true) + ch_multiqc_custom_config = params.multiqc_config ? Channel.fromPath(params.multiqc_config) : Channel.empty() + ch_multiqc_logo = params.multiqc_logo ? Channel.fromPath(params.multiqc_logo) : Channel.empty() + summary_params = paramsSummaryMap(workflow, parameters_schema: "nextflow_schema.json") + ch_workflow_summary = Channel.value(paramsSummaryMultiqc(summary_params)) MULTIQC ( ch_multiqc_config, ch_multiqc_custom_config.collect().ifEmpty([]), - CUSTOM_DUMPSOFTWAREVERSIONS.out.mqc_yml.collect(), + ch_collated_versions, ch_workflow_summary.collectFile(name: 'workflow_summary_mqc.yaml'), - ch_methods_description.collectFile(name: 'methods_description_mqc.yaml'), ch_multiqc_logo.collect().ifEmpty([]), ch_fail_trimming_multiqc.collectFile(name: 'fail_trimmed_samples_mqc.tsv').ifEmpty([]), ch_fail_mapping_multiqc.collectFile(name: 'fail_mapped_samples_mqc.tsv').ifEmpty([]), @@ -911,27 +797,10 @@ workflow RNASEQ { ch_readduplication_multiqc.collect{it[1]}.ifEmpty([]), ch_tin_multiqc.collect{it[1]}.ifEmpty([]) ) - multiqc_report = MULTIQC.out.report.toList() } -} -/* -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - COMPLETION EMAIL AND SUMMARY -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -*/ - -workflow.onComplete { - if (params.email || params.email_on_fail) { - NfcoreTemplate.email(workflow, params, summary_params, projectDir, log, multiqc_report, pass_mapped_reads, pass_trimmed_reads, pass_strand_check) - } - - NfcoreTemplate.dump_parameters(workflow, params) - NfcoreTemplate.summary(workflow, params, log, pass_mapped_reads, pass_trimmed_reads, pass_strand_check) - - if (params.hook_url) { - NfcoreTemplate.IM_notification(workflow, params, summary_params, projectDir, log) - } + emit: + versions = ch_versions // channel: [ path(versions.yml) ] } /* From 433b45524f4185f7ab2b9642d6dfffa4b7c3a60f Mon Sep 17 00:00:00 2001 From: Harshil Patel Date: Sat, 20 Jan 2024 18:41:00 +0000 Subject: [PATCH 011/634] Fix linting --- .devcontainer/devcontainer.json | 8 ++++---- .nf-core.yml | 6 ++++-- main.nf | 2 +- pyproject.toml | 2 +- 4 files changed, 10 insertions(+), 8 deletions(-) diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 4ecfbfe33..4a9bc5c79 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -18,11 +18,11 @@ "python.linting.flake8Path": "/opt/conda/bin/flake8", "python.linting.pycodestylePath": "/opt/conda/bin/pycodestyle", "python.linting.pydocstylePath": "/opt/conda/bin/pydocstyle", - "python.linting.pylintPath": "/opt/conda/bin/pylint" + "python.linting.pylintPath": "/opt/conda/bin/pylint", }, // Add the IDs of extensions you want installed when the container is created. - "extensions": ["ms-python.python", "ms-python.vscode-pylance", "nf-core.nf-core-extensionpack"] - } - } + "extensions": ["ms-python.python", "ms-python.vscode-pylance", "nf-core.nf-core-extensionpack"], + }, + }, } diff --git a/.nf-core.yml b/.nf-core.yml index 094459361..fdcea61c0 100644 --- a/.nf-core.yml +++ b/.nf-core.yml @@ -3,6 +3,8 @@ lint: files_unchanged: - assets/email_template.html - assets/email_template.txt + files_exist: + - lib/nfcore_external_java_deps.jar - lib/NfcoreTemplate.groovy - - pyproject.toml - multiqc_config: false + - lib/Utils.groovy + - lib/WorkflowMain.groovy diff --git a/main.nf b/main.nf index d1ab3d6ec..607d02e73 100755 --- a/main.nf +++ b/main.nf @@ -50,7 +50,7 @@ params.kallisto_index = getGenomeAttribute('kallisto') */ workflow { - + main: ch_versions = Channel.empty() diff --git a/pyproject.toml b/pyproject.toml index bc01239b3..0d62beb6f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,4 +1,4 @@ -# Config file for Python. Mostly used to configure linting of bin/*.py with Black. +# Config file for Python. Mostly used to configure linting of bin/check_samplesheet.py with Black. # Should be kept the same as nf-core/tools to avoid fighting with template synchronisation. [tool.black] line-length = 120 From b0fc8cb26720fe61c8599a6548057c56fe35f159 Mon Sep 17 00:00:00 2001 From: Harshil Patel Date: Sat, 20 Jan 2024 18:52:53 +0000 Subject: [PATCH 012/634] Add prepare_tool_indices logic to rnaseq workflow --- workflows/rnaseq/main.nf | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/workflows/rnaseq/main.nf b/workflows/rnaseq/main.nf index f8b204fbd..763ac3b7b 100755 --- a/workflows/rnaseq/main.nf +++ b/workflows/rnaseq/main.nf @@ -248,13 +248,17 @@ workflow NFCORE_RNASEQ { .first() .set { ch_genome_fasta } + def prepare_tool_indices = [] + if (!params.skip_pseudo_alignment && params.pseudo_aligner) { + prepare_tool_indices << params.pseudo_aligner + } FASTQ_SUBSAMPLE_FQ_SALMON ( ch_strand_fastq.auto_strand, ch_genome_fasta, ch_transcript_fasta, ch_gtf, ch_salmon_index, - !params.salmon_index && !('salmon' in prepareToolIndices) + !params.salmon_index && !('salmon' in prepare_tool_indices) ) ch_versions = ch_versions.mix(FASTQ_SUBSAMPLE_FQ_SALMON.out.versions) From 2c53607633cbfd523dc2dfda31e79a3960e3d471 Mon Sep 17 00:00:00 2001 From: Harshil Patel Date: Sun, 21 Jan 2024 09:55:56 +0000 Subject: [PATCH 013/634] Move rrna-db-defaults.txt to workflow assets --- nextflow.config | 2 +- nextflow_schema.json | 2 +- {assets => workflows/rnaseq/assets}/rrna-db-defaults.txt | 0 3 files changed, 2 insertions(+), 2 deletions(-) rename {assets => workflows/rnaseq/assets}/rrna-db-defaults.txt (100%) diff --git a/nextflow.config b/nextflow.config index c9c9cb08d..734894be2 100644 --- a/nextflow.config +++ b/nextflow.config @@ -54,7 +54,7 @@ params { // Ribosomal RNA removal remove_ribo_rna = false save_non_ribo_reads = false - ribo_database_manifest = "${projectDir}/assets/rrna-db-defaults.txt" + ribo_database_manifest = "${projectDir}/workflows/rnaseq/assets/rrna-db-defaults.txt" // Alignment aligner = 'star_salmon' diff --git a/nextflow_schema.json b/nextflow_schema.json index 42e4e8967..7881b98c1 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -278,7 +278,7 @@ "format": "file-path", "exists": true, "mimetype": "text/plain", - "default": "${projectDir}/assets/rrna-db-defaults.txt", + "default": "${projectDir}/workflows/rnaseq/assets/rrna-db-defaults.txt", "fa_icon": "fas fa-database", "description": "Text file containing paths to fasta files (one per line) that will be used to create the database for SortMeRNA.", "help_text": "By default, [rRNA databases](https://github.com/biocore/sortmerna/tree/master/data/rRNA_databases) defined in the SortMeRNA GitHub repo are used. You can see an example in the pipeline Github repository in `assets/rrna-default-dbs.txt`.\nPlease note that commercial/non-academic entities require [`licensing for SILVA`](https://www.arb-silva.de/silva-license-information) for these default databases." diff --git a/assets/rrna-db-defaults.txt b/workflows/rnaseq/assets/rrna-db-defaults.txt similarity index 100% rename from assets/rrna-db-defaults.txt rename to workflows/rnaseq/assets/rrna-db-defaults.txt From 82f0eea5ea7e9158d7d112f9538ddda2806099b6 Mon Sep 17 00:00:00 2001 From: Harshil Patel Date: Sun, 21 Jan 2024 10:47:45 +0000 Subject: [PATCH 014/634] Replace local MultiQC module with one from nf-core/modules --- modules.json | 5 + modules/local/multiqc/main.nf | 73 ----- modules/nf-core/multiqc/environment.yml | 7 + modules/nf-core/multiqc/main.nf | 55 ++++ modules/nf-core/multiqc/meta.yml | 58 ++++ modules/nf-core/multiqc/tests/main.nf.test | 83 ++++++ .../nf-core/multiqc/tests/main.nf.test.snap | 21 ++ modules/nf-core/multiqc/tests/tags.yml | 2 + workflows/rnaseq/main.nf | 253 ++++++++---------- 9 files changed, 337 insertions(+), 220 deletions(-) delete mode 100644 modules/local/multiqc/main.nf create mode 100644 modules/nf-core/multiqc/environment.yml create mode 100644 modules/nf-core/multiqc/main.nf create mode 100644 modules/nf-core/multiqc/meta.yml create mode 100644 modules/nf-core/multiqc/tests/main.nf.test create mode 100644 modules/nf-core/multiqc/tests/main.nf.test.snap create mode 100644 modules/nf-core/multiqc/tests/tags.yml diff --git a/modules.json b/modules.json index 032786fba..537a5e175 100644 --- a/modules.json +++ b/modules.json @@ -72,6 +72,11 @@ "git_sha": "bdc2a97ced7adc423acfa390742db83cab98c1ad", "installed_by": ["modules"] }, + "multiqc": { + "branch": "master", + "git_sha": "8ec825f465b9c17f9d83000022995b4f7de6fe93", + "installed_by": ["modules"] + }, "picard/markduplicates": { "branch": "master", "git_sha": "2ee934606f1fdf7fc1cb05d6e8abc13bec8ab448", diff --git a/modules/local/multiqc/main.nf b/modules/local/multiqc/main.nf deleted file mode 100644 index bfccc5dd9..000000000 --- a/modules/local/multiqc/main.nf +++ /dev/null @@ -1,73 +0,0 @@ -process MULTIQC { - label 'process_medium' - - conda "bioconda::multiqc=1.19" - container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/multiqc:1.19--pyhdfd78af_0' : - 'biocontainers/multiqc:1.19--pyhdfd78af_0' }" - - input: - path multiqc_config - path multiqc_custom_config - path software_versions - path workflow_summary - path logo - path fail_trimming_summary - path fail_mapping_summary - path fail_strand_check - path ('fastqc/raw/*') - path ('fastqc/trim/*') - path ('trim_log/*') - path ('sortmerna/*') - path ('star/*') - path ('hisat2/*') - path ('rsem/*') - path ('pseudoalignment/*') - path ('samtools/stats/*') - path ('samtools/flagstat/*') - path ('samtools/idxstats/*') - path ('picard/markduplicates/*') - path ('featurecounts/*') - path ('deseq2/aligner/*') - path ('deseq2/aligner/*') - path ('deseq2/pseudoaligner/*') - path ('deseq2/pseudoaligner/*') - path ('preseq/*') - path ('qualimap/*') - path ('dupradar/*') - path ('rseqc/bam_stat/*') - path ('rseqc/infer_experiment/*') - path ('rseqc/inner_distance/*') - path ('rseqc/junction_annotation/*') - path ('rseqc/junction_saturation/*') - path ('rseqc/read_distribution/*') - path ('rseqc/read_duplication/*') - path ('rseqc/tin/*') - - output: - path "*multiqc_report.html", emit: report - path "*_data" , emit: data - path "*_plots" , optional:true, emit: plots - path "versions.yml" , emit: versions - - when: - task.ext.when == null || task.ext.when - - script: - def args = task.ext.args ?: '' - def custom_config = params.multiqc_config ? "--config $multiqc_custom_config" : '' - prefix = task.ext.prefix ?: "multiqc_report" - """ - multiqc \\ - -n ${prefix}.html \\ - -f \\ - $args \\ - $custom_config \\ - . - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - multiqc: \$( multiqc --version | sed -e "s/multiqc, version //g" ) - END_VERSIONS - """ -} diff --git a/modules/nf-core/multiqc/environment.yml b/modules/nf-core/multiqc/environment.yml new file mode 100644 index 000000000..7625b7520 --- /dev/null +++ b/modules/nf-core/multiqc/environment.yml @@ -0,0 +1,7 @@ +name: multiqc +channels: + - conda-forge + - bioconda + - defaults +dependencies: + - bioconda::multiqc=1.19 diff --git a/modules/nf-core/multiqc/main.nf b/modules/nf-core/multiqc/main.nf new file mode 100644 index 000000000..1b9f7c431 --- /dev/null +++ b/modules/nf-core/multiqc/main.nf @@ -0,0 +1,55 @@ +process MULTIQC { + label 'process_single' + + conda "${moduleDir}/environment.yml" + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/multiqc:1.19--pyhdfd78af_0' : + 'biocontainers/multiqc:1.19--pyhdfd78af_0' }" + + input: + path multiqc_files, stageAs: "?/*" + path(multiqc_config) + path(extra_multiqc_config) + path(multiqc_logo) + + output: + path "*multiqc_report.html", emit: report + path "*_data" , emit: data + path "*_plots" , optional:true, emit: plots + path "versions.yml" , emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + def args = task.ext.args ?: '' + 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}"'/ : '' + """ + multiqc \\ + --force \\ + $args \\ + $config \\ + $extra_config \\ + $logo \\ + . + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + multiqc: \$( multiqc --version | sed -e "s/multiqc, version //g" ) + END_VERSIONS + """ + + stub: + """ + mkdir multiqc_data + touch multiqc_plots + touch multiqc_report.html + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + multiqc: \$( multiqc --version | sed -e "s/multiqc, version //g" ) + END_VERSIONS + """ +} diff --git a/modules/nf-core/multiqc/meta.yml b/modules/nf-core/multiqc/meta.yml new file mode 100644 index 000000000..45a9bc35e --- /dev/null +++ b/modules/nf-core/multiqc/meta.yml @@ -0,0 +1,58 @@ +name: multiqc +description: Aggregate results from bioinformatics analyses across many samples into a single report +keywords: + - QC + - bioinformatics tools + - Beautiful stand-alone HTML report +tools: + - multiqc: + description: | + MultiQC searches a given directory for analysis logs and compiles a HTML report. + It's a general use tool, perfect for summarising the output from numerous bioinformatics tools. + homepage: https://multiqc.info/ + documentation: https://multiqc.info/docs/ + licence: ["GPL-3.0-or-later"] +input: + - multiqc_files: + type: file + 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}" +output: + - report: + type: file + description: MultiQC report file + pattern: "multiqc_report.html" + - data: + type: directory + description: MultiQC data dir + pattern: "multiqc_data" + - plots: + type: file + description: Plots created by MultiQC + pattern: "*_data" + - versions: + type: file + description: File containing software versions + pattern: "versions.yml" +authors: + - "@abhi18av" + - "@bunop" + - "@drpatelh" + - "@jfy133" +maintainers: + - "@abhi18av" + - "@bunop" + - "@drpatelh" + - "@jfy133" diff --git a/modules/nf-core/multiqc/tests/main.nf.test b/modules/nf-core/multiqc/tests/main.nf.test new file mode 100644 index 000000000..d0438eda6 --- /dev/null +++ b/modules/nf-core/multiqc/tests/main.nf.test @@ -0,0 +1,83 @@ +nextflow_process { + + name "Test Process MULTIQC" + script "../main.nf" + process "MULTIQC" + tag "modules" + tag "modules_nfcore" + tag "multiqc" + + test("sarscov2 single-end [fastqc]") { + + when { + process { + """ + input[0] = Channel.of([file(params.test_data['sarscov2']['illumina']['test_1_fastq_gz_fastqc_zip'], checkIfExists: true)]) + input[1] = [] + input[2] = [] + input[3] = [] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert process.out.report[0] ==~ ".*/multiqc_report.html" }, + { assert process.out.data[0] ==~ ".*/multiqc_data" }, + { assert snapshot(process.out.versions).match("versions") } + ) + } + + } + + test("sarscov2 single-end [fastqc] [config]") { + + when { + process { + """ + input[0] = Channel.of([file(params.test_data['sarscov2']['illumina']['test_1_fastq_gz_fastqc_zip'], checkIfExists: true)]) + 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] = [] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert process.out.report[0] ==~ ".*/multiqc_report.html" }, + { assert process.out.data[0] ==~ ".*/multiqc_data" }, + { assert snapshot(process.out.versions).match("versions") } + ) + } + } + + test("sarscov2 single-end [fastqc] - stub") { + + options "-stub" + + when { + process { + """ + input[0] = Channel.of([file(params.test_data['sarscov2']['illumina']['test_1_fastq_gz_fastqc_zip'], checkIfExists: true)]) + input[1] = [] + input[2] = [] + input[3] = [] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out.report.collect { file(it).getName() } + + process.out.data.collect { file(it).getName() } + + process.out.plots.collect { file(it).getName() } + + process.out.versions ).match() } + ) + } + + } +} diff --git a/modules/nf-core/multiqc/tests/main.nf.test.snap b/modules/nf-core/multiqc/tests/main.nf.test.snap new file mode 100644 index 000000000..d37e73040 --- /dev/null +++ b/modules/nf-core/multiqc/tests/main.nf.test.snap @@ -0,0 +1,21 @@ +{ + "versions": { + "content": [ + [ + "versions.yml:md5,14e9a2661241abd828f4f06a7b5c222d" + ] + ], + "timestamp": "2024-01-09T23:02:49.911994" + }, + "sarscov2 single-end [fastqc] - stub": { + "content": [ + [ + "multiqc_report.html", + "multiqc_data", + "multiqc_plots", + "versions.yml:md5,14e9a2661241abd828f4f06a7b5c222d" + ] + ], + "timestamp": "2024-01-09T23:03:14.524346" + } +} \ No newline at end of file diff --git a/modules/nf-core/multiqc/tests/tags.yml b/modules/nf-core/multiqc/tests/tags.yml new file mode 100644 index 000000000..bea6c0d37 --- /dev/null +++ b/modules/nf-core/multiqc/tests/tags.yml @@ -0,0 +1,2 @@ +multiqc: + - modules/nf-core/multiqc/** diff --git a/workflows/rnaseq/main.nf b/workflows/rnaseq/main.nf index 763ac3b7b..e19ccbbf0 100755 --- a/workflows/rnaseq/main.nf +++ b/workflows/rnaseq/main.nf @@ -12,7 +12,6 @@ include { DESEQ2_QC as DESEQ2_QC_STAR_SALMON } from '../../modules/local/deseq2_ include { DESEQ2_QC as DESEQ2_QC_RSEM } from '../../modules/local/deseq2_qc' include { DESEQ2_QC as DESEQ2_QC_PSEUDO } from '../../modules/local/deseq2_qc' include { DUPRADAR } from '../../modules/local/dupradar' -include { MULTIQC } from '../../modules/local/multiqc' include { MULTIQC_CUSTOM_BIOTYPE } from '../../modules/local/multiqc_custom_biotype' include { UMITOOLS_PREPAREFORRSEM as UMITOOLS_PREPAREFORSALMON } from '../../modules/local/umitools_prepareforrsem' @@ -39,14 +38,15 @@ include { getInferexperimentStrandedness } from '../../subworkflows/local/utils_ // // MODULE: Installed directly from nf-core/modules // -include { CAT_FASTQ } from '../../modules/nf-core/cat/fastq' -include { BBMAP_BBSPLIT } from '../../modules/nf-core/bbmap/bbsplit' -include { SAMTOOLS_SORT } from '../../modules/nf-core/samtools/sort' -include { PRESEQ_LCEXTRAP } from '../../modules/nf-core/preseq/lcextrap' -include { QUALIMAP_RNASEQ } from '../../modules/nf-core/qualimap/rnaseq' -include { SORTMERNA } from '../../modules/nf-core/sortmerna' -include { STRINGTIE_STRINGTIE } from '../../modules/nf-core/stringtie/stringtie' -include { SUBREAD_FEATURECOUNTS } from '../../modules/nf-core/subread/featurecounts' +include { CAT_FASTQ } from '../../modules/nf-core/cat/fastq' +include { BBMAP_BBSPLIT } from '../../modules/nf-core/bbmap/bbsplit' +include { SAMTOOLS_SORT } from '../../modules/nf-core/samtools/sort' +include { PRESEQ_LCEXTRAP } from '../../modules/nf-core/preseq/lcextrap' +include { QUALIMAP_RNASEQ } from '../../modules/nf-core/qualimap/rnaseq' +include { SORTMERNA } from '../../modules/nf-core/sortmerna' +include { STRINGTIE_STRINGTIE } from '../../modules/nf-core/stringtie/stringtie' +include { SUBREAD_FEATURECOUNTS } from '../../modules/nf-core/subread/featurecounts' +include { MULTIQC } from '../../modules/nf-core/multiqc' // // SUBWORKFLOW: Consisting entirely of nf-core/modules @@ -99,6 +99,8 @@ workflow NFCORE_RNASEQ { main: + ch_multiqc_files = Channel.empty() + // // Create separate channels for samples that have single/multiple FastQ files to merge // @@ -126,11 +128,8 @@ workflow NFCORE_RNASEQ { // // SUBWORKFLOW: Read QC, extract UMI and trim adapters with TrimGalore! // - ch_filtered_reads = Channel.empty() - ch_fastqc_raw_multiqc = Channel.empty() - ch_fastqc_trim_multiqc = Channel.empty() - ch_trim_log_multiqc = Channel.empty() - ch_trim_read_count = Channel.empty() + ch_filtered_reads = Channel.empty() + ch_trim_read_count = Channel.empty() if (params.trimmer == 'trimgalore') { FASTQ_FASTQC_UMITOOLS_TRIMGALORE ( ch_cat_fastq, @@ -141,11 +140,11 @@ workflow NFCORE_RNASEQ { params.umi_discard_read, params.min_trimmed_reads ) - ch_filtered_reads = FASTQ_FASTQC_UMITOOLS_TRIMGALORE.out.reads - ch_fastqc_raw_multiqc = FASTQ_FASTQC_UMITOOLS_TRIMGALORE.out.fastqc_zip - ch_fastqc_trim_multiqc = FASTQ_FASTQC_UMITOOLS_TRIMGALORE.out.trim_zip - ch_trim_log_multiqc = FASTQ_FASTQC_UMITOOLS_TRIMGALORE.out.trim_log - ch_trim_read_count = FASTQ_FASTQC_UMITOOLS_TRIMGALORE.out.trim_read_count + ch_filtered_reads = FASTQ_FASTQC_UMITOOLS_TRIMGALORE.out.reads + ch_trim_read_count = FASTQ_FASTQC_UMITOOLS_TRIMGALORE.out.trim_read_count + ch_multiqc_files = ch_multiqc_files.mix(FASTQ_FASTQC_UMITOOLS_TRIMGALORE.out.fastqc_zip.collect{it[1]}) + ch_multiqc_files = ch_multiqc_files.mix(FASTQ_FASTQC_UMITOOLS_TRIMGALORE.out.trim_zip.collect{it[1]}) + ch_multiqc_files = ch_multiqc_files.mix(FASTQ_FASTQC_UMITOOLS_TRIMGALORE.out.trim_log.collect{it[1]}) ch_versions = ch_versions.mix(FASTQ_FASTQC_UMITOOLS_TRIMGALORE.out.versions) } @@ -165,11 +164,11 @@ workflow NFCORE_RNASEQ { params.save_trimmed, params.min_trimmed_reads ) - ch_filtered_reads = FASTQ_FASTQC_UMITOOLS_FASTP.out.reads - ch_fastqc_raw_multiqc = FASTQ_FASTQC_UMITOOLS_FASTP.out.fastqc_raw_zip - ch_fastqc_trim_multiqc = FASTQ_FASTQC_UMITOOLS_FASTP.out.fastqc_trim_zip - ch_trim_log_multiqc = FASTQ_FASTQC_UMITOOLS_FASTP.out.trim_json - ch_trim_read_count = FASTQ_FASTQC_UMITOOLS_FASTP.out.trim_read_count + ch_filtered_reads = FASTQ_FASTQC_UMITOOLS_FASTP.out.reads + ch_trim_read_count = FASTQ_FASTQC_UMITOOLS_FASTP.out.trim_read_count + ch_multiqc_files = ch_multiqc_files.mix(FASTQ_FASTQC_UMITOOLS_FASTP.out.fastqc_raw_zip.collect{it[1]}) + ch_multiqc_files = ch_multiqc_files.mix(FASTQ_FASTQC_UMITOOLS_FASTP.out.fastqc_trim_zip.collect{it[1]}) + ch_multiqc_files = ch_multiqc_files.mix(FASTQ_FASTQC_UMITOOLS_FASTP.out.trim_json.collect{it[1]}) ch_versions = ch_versions.mix(FASTQ_FASTQC_UMITOOLS_FASTP.out.versions) } @@ -190,7 +189,8 @@ workflow NFCORE_RNASEQ { multiqcTsvFromList(tsv_data, header) } .set { ch_fail_trimming_multiqc } - + ch_multiqc_files = ch_multiqc_files.mix(ch_fail_trimming_multiqc.collectFile(name: 'fail_trimmed_samples_mqc.tsv')) + // // MODULE: Remove genome contaminant reads // @@ -210,7 +210,6 @@ workflow NFCORE_RNASEQ { // // MODULE: Remove ribosomal RNA reads // - ch_sortmerna_multiqc = Channel.empty() if (params.remove_ribo_rna) { ch_ribo_db = file(params.ribo_database_manifest) ch_sortmerna_fastas = Channel.from(ch_ribo_db.readLines()).map { row -> file(row, checkIfExists: true) }.collect() @@ -222,7 +221,7 @@ workflow NFCORE_RNASEQ { .reads .set { ch_filtered_reads } - ch_sortmerna_multiqc = SORTMERNA.out.log + ch_multiqc_files = ch_multiqc_files.mix(SORTMERNA.out.log.collect{it[1]}) ch_versions = ch_versions.mix(SORTMERNA.out.versions.first()) } @@ -275,14 +274,9 @@ workflow NFCORE_RNASEQ { // // SUBWORKFLOW: Alignment with STAR and gene/transcript quantification with Salmon // - ch_genome_bam = Channel.empty() - ch_genome_bam_index = Channel.empty() - ch_samtools_stats = Channel.empty() - ch_samtools_flagstat = Channel.empty() - ch_samtools_idxstats = Channel.empty() - ch_star_multiqc = Channel.empty() - ch_aligner_pca_multiqc = Channel.empty() - ch_aligner_clustering_multiqc = Channel.empty() + ch_genome_bam = Channel.empty() + ch_genome_bam_index = Channel.empty() + ch_star_log = Channel.empty() if (!params.skip_alignment && params.aligner == 'star_salmon') { // Check if an AWS iGenome has been provided to use the appropriate version of STAR def is_aws_igenome = false @@ -305,10 +299,12 @@ workflow NFCORE_RNASEQ { ch_genome_bam = ALIGN_STAR.out.bam ch_genome_bam_index = ALIGN_STAR.out.bai ch_transcriptome_bam = ALIGN_STAR.out.bam_transcript - ch_samtools_stats = ALIGN_STAR.out.stats - ch_samtools_flagstat = ALIGN_STAR.out.flagstat - ch_samtools_idxstats = ALIGN_STAR.out.idxstats - ch_star_multiqc = ALIGN_STAR.out.log_final + ch_star_log = ALIGN_STAR.out.log_final + ch_multiqc_files = ch_multiqc_files.mix(ALIGN_STAR.out.stats.collect{it[1]}) + ch_multiqc_files = ch_multiqc_files.mix(ALIGN_STAR.out.flagstat.collect{it[1]}) + ch_multiqc_files = ch_multiqc_files.mix(ALIGN_STAR.out.idxstats.collect{it[1]}) + ch_multiqc_files = ch_multiqc_files.mix(ch_star_log.collect{it[1]}) + if (params.bam_csi_index) { ch_genome_bam_index = ALIGN_STAR.out.csi } @@ -323,11 +319,12 @@ workflow NFCORE_RNASEQ { ch_genome_bam.join(ch_genome_bam_index, by: [0]), params.umitools_dedup_stats ) - ch_genome_bam = BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS_GENOME.out.bam - ch_genome_bam_index = BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS_GENOME.out.bai - ch_samtools_stats = BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS_GENOME.out.stats - ch_samtools_flagstat = BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS_GENOME.out.flagstat - ch_samtools_idxstats = BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS_GENOME.out.idxstats + ch_genome_bam = BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS_GENOME.out.bam + ch_genome_bam_index = BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS_GENOME.out.bai + ch_multiqc_files = ch_multiqc_files.mix(BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS_GENOME.out.stats.collect{it[1]}) + ch_multiqc_files = ch_multiqc_files.mix(BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS_GENOME.out.flagstat.collect{it[1]}) + ch_multiqc_files = ch_multiqc_files.mix(BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS_GENOME.out.idxstats.collect{it[1]}) + if (params.bam_csi_index) { ch_genome_bam_index = BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS_GENOME.out.csi } @@ -400,8 +397,8 @@ workflow NFCORE_RNASEQ { ch_pca_header_multiqc, ch_clustering_header_multiqc ) - ch_aligner_pca_multiqc = DESEQ2_QC_STAR_SALMON.out.pca_multiqc - ch_aligner_clustering_multiqc = DESEQ2_QC_STAR_SALMON.out.dists_multiqc + ch_multiqc_files = ch_multiqc_files.mix(DESEQ2_QC_STAR_SALMON.out.pca_multiqc.collect()) + ch_multiqc_files = ch_multiqc_files.mix(DESEQ2_QC_STAR_SALMON.out.dists_multiqc.collect()) ch_versions = ch_versions.mix(DESEQ2_QC_STAR_SALMON.out.versions) } } @@ -409,20 +406,21 @@ workflow NFCORE_RNASEQ { // // SUBWORKFLOW: Alignment with STAR and gene/transcript quantification with RSEM // - ch_rsem_multiqc = Channel.empty() if (!params.skip_alignment && params.aligner == 'star_rsem') { QUANTIFY_RSEM ( ch_strand_inferred_filtered_fastq, ch_rsem_index, ch_fasta.map { [ [:], it ] } ) - ch_genome_bam = QUANTIFY_RSEM.out.bam - ch_genome_bam_index = QUANTIFY_RSEM.out.bai - ch_samtools_stats = QUANTIFY_RSEM.out.stats - ch_samtools_flagstat = QUANTIFY_RSEM.out.flagstat - ch_samtools_idxstats = QUANTIFY_RSEM.out.idxstats - ch_star_multiqc = QUANTIFY_RSEM.out.logs - ch_rsem_multiqc = QUANTIFY_RSEM.out.stat + ch_genome_bam = QUANTIFY_RSEM.out.bam + ch_genome_bam_index = QUANTIFY_RSEM.out.bai + ch_star_log = QUANTIFY_RSEM.out.logs + ch_multiqc_files = ch_multiqc_files.mix(QUANTIFY_RSEM.out.stats.collect{it[1]}) + ch_multiqc_files = ch_multiqc_files.mix(QUANTIFY_RSEM.out.flagstat.collect{it[1]}) + ch_multiqc_files = ch_multiqc_files.mix(QUANTIFY_RSEM.out.idxstats.collect{it[1]}) + ch_multiqc_files = ch_multiqc_files.mix(ch_star_log.collect{it[1]}) + ch_multiqc_files = ch_multiqc_files.mix(QUANTIFY_RSEM.out.stat.collect{it[1]}) + if (params.bam_csi_index) { ch_genome_bam_index = QUANTIFY_RSEM.out.csi } @@ -434,8 +432,8 @@ workflow NFCORE_RNASEQ { ch_pca_header_multiqc, ch_clustering_header_multiqc ) - ch_aligner_pca_multiqc = DESEQ2_QC_RSEM.out.pca_multiqc - ch_aligner_clustering_multiqc = DESEQ2_QC_RSEM.out.dists_multiqc + ch_multiqc_files = ch_multiqc_files.mix(DESEQ2_QC_RSEM.out.pca_multiqc.collect()) + ch_multiqc_files = ch_multiqc_files.mix(DESEQ2_QC_RSEM.out.dists_multiqc.collect()) ch_versions = ch_versions.mix(DESEQ2_QC_RSEM.out.versions) } } @@ -443,7 +441,6 @@ workflow NFCORE_RNASEQ { // // SUBWORKFLOW: Alignment with HISAT2 // - ch_hisat2_multiqc = Channel.empty() if (!params.skip_alignment && params.aligner == 'hisat2') { FASTQ_ALIGN_HISAT2 ( ch_strand_inferred_filtered_fastq, @@ -451,12 +448,13 @@ workflow NFCORE_RNASEQ { ch_splicesites.map { [ [:], it ] }, ch_fasta.map { [ [:], it ] } ) - ch_genome_bam = FASTQ_ALIGN_HISAT2.out.bam - ch_genome_bam_index = FASTQ_ALIGN_HISAT2.out.bai - ch_samtools_stats = FASTQ_ALIGN_HISAT2.out.stats - ch_samtools_flagstat = FASTQ_ALIGN_HISAT2.out.flagstat - ch_samtools_idxstats = FASTQ_ALIGN_HISAT2.out.idxstats - ch_hisat2_multiqc = FASTQ_ALIGN_HISAT2.out.summary + ch_genome_bam = FASTQ_ALIGN_HISAT2.out.bam + ch_genome_bam_index = FASTQ_ALIGN_HISAT2.out.bai + ch_multiqc_files = ch_multiqc_files.mix(FASTQ_ALIGN_HISAT2.out.stats.collect{it[1]}) + ch_multiqc_files = ch_multiqc_files.mix(FASTQ_ALIGN_HISAT2.out.flagstat.collect{it[1]}) + ch_multiqc_files = ch_multiqc_files.mix(FASTQ_ALIGN_HISAT2.out.idxstats.collect{it[1]}) + ch_multiqc_files = ch_multiqc_files.mix(FASTQ_ALIGN_HISAT2.out.summary.collect{it[1]}) + if (params.bam_csi_index) { ch_genome_bam_index = FASTQ_ALIGN_HISAT2.out.csi } @@ -470,11 +468,11 @@ workflow NFCORE_RNASEQ { ch_genome_bam.join(ch_genome_bam_index, by: [0]), params.umitools_dedup_stats ) - ch_genome_bam = BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS_GENOME.out.bam - ch_genome_bam_index = BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS_GENOME.out.bai - ch_samtools_stats = BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS_GENOME.out.stats - ch_samtools_flagstat = BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS_GENOME.out.flagstat - ch_samtools_idxstats = BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS_GENOME.out.idxstats + ch_genome_bam = BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS_GENOME.out.bam + ch_genome_bam_index = BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS_GENOME.out.bai + ch_multiqc_files = ch_multiqc_files.mix(BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS_GENOME.out.stats.collect{it[1]}) + ch_multiqc_files = ch_multiqc_files.mix(BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS_GENOME.out.flagstat.collect{it[1]}) + ch_multiqc_files = ch_multiqc_files.mix(BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS_GENOME.out.idxstats.collect{it[1]}) if (params.bam_csi_index) { ch_genome_bam_index = BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS_GENOME.out.csi } @@ -485,9 +483,8 @@ workflow NFCORE_RNASEQ { // // Filter channels to get samples that passed STAR minimum mapping percentage // - ch_fail_mapping_multiqc = Channel.empty() if (!params.skip_alignment && params.aligner.contains('star')) { - ch_star_multiqc + ch_star_log .map { meta, align_log -> [ meta ] + getStarPercentMapped(params, align_log) } .set { ch_percent_mapped } @@ -519,36 +516,36 @@ workflow NFCORE_RNASEQ { multiqcTsvFromList(tsv_data, header) } .set { ch_fail_mapping_multiqc } + ch_multiqc_files = ch_multiqc_files.mix(ch_fail_mapping_multiqc.collectFile(name: 'fail_mapped_samples_mqc.tsv')) } // // MODULE: Run Preseq // - ch_preseq_multiqc = Channel.empty() if (!params.skip_alignment && !params.skip_qc && !params.skip_preseq) { PRESEQ_LCEXTRAP ( ch_genome_bam ) - ch_preseq_multiqc = PRESEQ_LCEXTRAP.out.lc_extrap + ch_multiqc_files = ch_multiqc_files.mix(PRESEQ_LCEXTRAP.out.lc_extrap.collect{it[1]}) ch_versions = ch_versions.mix(PRESEQ_LCEXTRAP.out.versions.first()) } // // SUBWORKFLOW: Mark duplicate reads // - ch_markduplicates_multiqc = Channel.empty() if (!params.skip_alignment && !params.skip_markduplicates && !params.with_umi) { BAM_MARKDUPLICATES_PICARD ( ch_genome_bam, ch_fasta.map { [ [:], it ] }, ch_fai.map { [ [:], it ] } ) - ch_genome_bam = BAM_MARKDUPLICATES_PICARD.out.bam - ch_genome_bam_index = BAM_MARKDUPLICATES_PICARD.out.bai - ch_samtools_stats = BAM_MARKDUPLICATES_PICARD.out.stats - ch_samtools_flagstat = BAM_MARKDUPLICATES_PICARD.out.flagstat - ch_samtools_idxstats = BAM_MARKDUPLICATES_PICARD.out.idxstats - ch_markduplicates_multiqc = BAM_MARKDUPLICATES_PICARD.out.metrics + ch_genome_bam = BAM_MARKDUPLICATES_PICARD.out.bam + ch_genome_bam_index = BAM_MARKDUPLICATES_PICARD.out.bai + ch_multiqc_files = ch_multiqc_files.mix(BAM_MARKDUPLICATES_PICARD.out.stats.collect{it[1]}) + ch_multiqc_files = ch_multiqc_files.mix(BAM_MARKDUPLICATES_PICARD.out.flagstat.collect{it[1]}) + ch_multiqc_files = ch_multiqc_files.mix(BAM_MARKDUPLICATES_PICARD.out.idxstats.collect{it[1]}) + ch_multiqc_files = ch_multiqc_files.mix(BAM_MARKDUPLICATES_PICARD.out.metrics.collect{it[1]}) + if (params.bam_csi_index) { ch_genome_bam_index = BAM_MARKDUPLICATES_PICARD.out.csi } @@ -569,7 +566,6 @@ workflow NFCORE_RNASEQ { // // MODULE: Feature biotype QC using featureCounts // - ch_featurecounts_multiqc = Channel.empty() def biotype = params.gencode ? "gene_type" : params.featurecounts_group_type if (!params.skip_alignment && !params.skip_qc && !params.skip_biotype_qc && biotype) { @@ -594,7 +590,7 @@ workflow NFCORE_RNASEQ { SUBREAD_FEATURECOUNTS.out.counts, ch_biotypes_header_multiqc ) - ch_featurecounts_multiqc = MULTIQC_CUSTOM_BIOTYPE.out.tsv + ch_multiqc_files = ch_multiqc_files.mix(MULTIQC_CUSTOM_BIOTYPE.out.tsv.collect{it[1]}) ch_versions = ch_versions.mix(MULTIQC_CUSTOM_BIOTYPE.out.versions.first()) } @@ -626,24 +622,13 @@ workflow NFCORE_RNASEQ { // // MODULE: Downstream QC steps // - ch_qualimap_multiqc = Channel.empty() - ch_dupradar_multiqc = Channel.empty() - ch_bamstat_multiqc = Channel.empty() - ch_inferexperiment_multiqc = Channel.empty() - ch_innerdistance_multiqc = Channel.empty() - ch_junctionannotation_multiqc = Channel.empty() - ch_junctionsaturation_multiqc = Channel.empty() - ch_readdistribution_multiqc = Channel.empty() - ch_readduplication_multiqc = Channel.empty() - ch_fail_strand_multiqc = Channel.empty() - ch_tin_multiqc = Channel.empty() if (!params.skip_alignment && !params.skip_qc) { if (!params.skip_qualimap) { QUALIMAP_RNASEQ ( ch_genome_bam, ch_gtf.map { [ [:], it ] } ) - ch_qualimap_multiqc = QUALIMAP_RNASEQ.out.results + ch_multiqc_files = ch_multiqc_files.mix(QUALIMAP_RNASEQ.out.results.collect{it[1]}) ch_versions = ch_versions.mix(QUALIMAP_RNASEQ.out.versions.first()) } @@ -652,7 +637,7 @@ workflow NFCORE_RNASEQ { ch_genome_bam, ch_gtf ) - ch_dupradar_multiqc = DUPRADAR.out.multiqc + ch_multiqc_files = ch_multiqc_files.mix(DUPRADAR.out.multiqc.collect{it[1]}) ch_versions = ch_versions.mix(DUPRADAR.out.versions.first()) } @@ -671,17 +656,19 @@ workflow NFCORE_RNASEQ { ch_gene_bed, rseqc_modules ) - ch_bamstat_multiqc = BAM_RSEQC.out.bamstat_txt - ch_inferexperiment_multiqc = BAM_RSEQC.out.inferexperiment_txt - ch_innerdistance_multiqc = BAM_RSEQC.out.innerdistance_freq - ch_junctionannotation_multiqc = BAM_RSEQC.out.junctionannotation_log - ch_junctionsaturation_multiqc = BAM_RSEQC.out.junctionsaturation_rscript - ch_readdistribution_multiqc = BAM_RSEQC.out.readdistribution_txt - ch_readduplication_multiqc = BAM_RSEQC.out.readduplication_pos_xls - ch_tin_multiqc = BAM_RSEQC.out.tin_txt + ch_multiqc_files = ch_multiqc_files.mix(BAM_RSEQC.out.bamstat_txt.collect{it[1]}) + ch_multiqc_files = ch_multiqc_files.mix(BAM_RSEQC.out.inferexperiment_txt.collect{it[1]}) + ch_multiqc_files = ch_multiqc_files.mix(BAM_RSEQC.out.innerdistance_freq.collect{it[1]}) + ch_multiqc_files = ch_multiqc_files.mix(BAM_RSEQC.out.junctionannotation_log.collect{it[1]}) + ch_multiqc_files = ch_multiqc_files.mix(BAM_RSEQC.out.junctionsaturation_rscript.collect{it[1]}) + ch_multiqc_files = ch_multiqc_files.mix(BAM_RSEQC.out.readdistribution_txt.collect{it[1]}) + ch_multiqc_files = ch_multiqc_files.mix(BAM_RSEQC.out.readduplication_pos_xls.collect{it[1]}) + ch_multiqc_files = ch_multiqc_files.mix(BAM_RSEQC.out.tin_txt.collect{it[1]}) ch_versions = ch_versions.mix(BAM_RSEQC.out.versions) - ch_inferexperiment_multiqc + BAM_RSEQC + .out + .inferexperiment_txt .map { meta, strand_log -> def inferred_strand = getInferexperimentStrandedness(strand_log, 30) @@ -703,15 +690,13 @@ workflow NFCORE_RNASEQ { multiqcTsvFromList(tsv_data, header) } .set { ch_fail_strand_multiqc } + ch_multiqc_files = ch_multiqc_files.mix(ch_fail_strand_multiqc.collectFile(name: 'fail_strand_check_mqc.tsv')) } } // // SUBWORKFLOW: Pseudoalignment and quantification with Salmon - // - ch_pseudo_multiqc = Channel.empty() - ch_pseudoaligner_pca_multiqc = Channel.empty() - ch_pseudoaligner_clustering_multiqc = Channel.empty() + // if (!params.skip_pseudo_alignment && params.pseudo_aligner) { if (params.pseudo_aligner == 'salmon') { @@ -731,8 +716,8 @@ workflow NFCORE_RNASEQ { params.kallisto_quant_fraglen, params.kallisto_quant_fraglen_sd ) - ch_pseudo_multiqc = QUANTIFY_PSEUDO_ALIGNMENT.out.multiqc ch_counts_gene_length_scaled = QUANTIFY_PSEUDO_ALIGNMENT.out.counts_gene_length_scaled + ch_multiqc_files = ch_multiqc_files.mix(QUANTIFY_PSEUDO_ALIGNMENT.out.multiqc.collect{it[1]}) ch_versions = ch_versions.mix(QUANTIFY_PSEUDO_ALIGNMENT.out.versions) if (!params.skip_qc & !params.skip_deseq2_qc) { @@ -741,8 +726,8 @@ workflow NFCORE_RNASEQ { ch_pca_header_multiqc, ch_clustering_header_multiqc ) - ch_pseudoaligner_pca_multiqc = DESEQ2_QC_PSEUDO.out.pca_multiqc - ch_pseudoaligner_clustering_multiqc = DESEQ2_QC_PSEUDO.out.dists_multiqc + ch_multiqc_files = ch_multiqc_files.mix(DESEQ2_QC_PSEUDO.out.pca_multiqc.collect()) + ch_multiqc_files = ch_multiqc_files.mix(DESEQ2_QC_PSEUDO.out.dists_multiqc.collect()) ch_versions = ch_versions.mix(DESEQ2_QC_PSEUDO.out.versions) } } @@ -757,54 +742,28 @@ workflow NFCORE_RNASEQ { // // MODULE: MultiQC // + ch_multiqc_report = Channel.empty() if (!params.skip_multiqc) { ch_multiqc_config = Channel.fromPath("$projectDir/workflows/rnaseq/assets/multiqc/multiqc_config.yml", checkIfExists: true) ch_multiqc_custom_config = params.multiqc_config ? Channel.fromPath(params.multiqc_config) : Channel.empty() ch_multiqc_logo = params.multiqc_logo ? Channel.fromPath(params.multiqc_logo) : 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_files = ch_multiqc_files.mix(ch_collated_versions) + MULTIQC ( - ch_multiqc_config, - ch_multiqc_custom_config.collect().ifEmpty([]), - ch_collated_versions, - ch_workflow_summary.collectFile(name: 'workflow_summary_mqc.yaml'), - ch_multiqc_logo.collect().ifEmpty([]), - ch_fail_trimming_multiqc.collectFile(name: 'fail_trimmed_samples_mqc.tsv').ifEmpty([]), - ch_fail_mapping_multiqc.collectFile(name: 'fail_mapped_samples_mqc.tsv').ifEmpty([]), - ch_fail_strand_multiqc.collectFile(name: 'fail_strand_check_mqc.tsv').ifEmpty([]), - ch_fastqc_raw_multiqc.collect{it[1]}.ifEmpty([]), - ch_fastqc_trim_multiqc.collect{it[1]}.ifEmpty([]), - ch_trim_log_multiqc.collect{it[1]}.ifEmpty([]), - ch_sortmerna_multiqc.collect{it[1]}.ifEmpty([]), - ch_star_multiqc.collect{it[1]}.ifEmpty([]), - ch_hisat2_multiqc.collect{it[1]}.ifEmpty([]), - ch_rsem_multiqc.collect{it[1]}.ifEmpty([]), - ch_pseudo_multiqc.collect{it[1]}.ifEmpty([]), - ch_samtools_stats.collect{it[1]}.ifEmpty([]), - ch_samtools_flagstat.collect{it[1]}.ifEmpty([]), - ch_samtools_idxstats.collect{it[1]}.ifEmpty([]), - ch_markduplicates_multiqc.collect{it[1]}.ifEmpty([]), - ch_featurecounts_multiqc.collect{it[1]}.ifEmpty([]), - ch_aligner_pca_multiqc.collect().ifEmpty([]), - ch_aligner_clustering_multiqc.collect().ifEmpty([]), - ch_pseudoaligner_pca_multiqc.collect().ifEmpty([]), - ch_pseudoaligner_clustering_multiqc.collect().ifEmpty([]), - ch_preseq_multiqc.collect{it[1]}.ifEmpty([]), - ch_qualimap_multiqc.collect{it[1]}.ifEmpty([]), - ch_dupradar_multiqc.collect{it[1]}.ifEmpty([]), - ch_bamstat_multiqc.collect{it[1]}.ifEmpty([]), - ch_inferexperiment_multiqc.collect{it[1]}.ifEmpty([]), - ch_innerdistance_multiqc.collect{it[1]}.ifEmpty([]), - ch_junctionannotation_multiqc.collect{it[1]}.ifEmpty([]), - ch_junctionsaturation_multiqc.collect{it[1]}.ifEmpty([]), - ch_readdistribution_multiqc.collect{it[1]}.ifEmpty([]), - ch_readduplication_multiqc.collect{it[1]}.ifEmpty([]), - ch_tin_multiqc.collect{it[1]}.ifEmpty([]) + ch_multiqc_files.collect(), + ch_multiqc_config.toList(), + ch_multiqc_custom_config.toList(), + ch_multiqc_logo.toList() ) + ch_multiqc_report = MULTIQC.out.report } emit: - versions = ch_versions // channel: [ path(versions.yml) ] + multiqc_report = ch_multiqc_report // channel: /path/to/multiqc_report.html + versions = ch_versions // channel: [ path(versions.yml) ] } /* From 37343750f1a77a53c19f9a632ab2532fa55ce8f8 Mon Sep 17 00:00:00 2001 From: Harshil Patel Date: Sun, 21 Jan 2024 11:12:06 +0000 Subject: [PATCH 015/634] Remove test_cache profile --- .github/workflows/ci.yml | 155 ++------------------------------------- conf/test_cache.config | 50 ------------- nextflow.config | 2 - nextflow_schema.json | 7 -- 4 files changed, 5 insertions(+), 209 deletions(-) delete mode 100644 conf/test_cache.config diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 66bd47cf9..c80d78b97 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -35,38 +35,9 @@ jobs: with: version: "${{ matrix.NXF_VER }}" - - name: Hash Github Workspace - id: hash_workspace - run: | - echo "digest=$(echo RNA_3.10.1_${{ github.workspace }} | md5sum | cut -c 1-25)" >> $GITHUB_OUTPUT - - - name: Cache test data - id: cache-testdata - uses: actions/cache@v3 - with: - path: test-datasets/ - key: ${{ steps.hash_workspace.outputs.digest }} - - - name: Check out test data - if: steps.cache-testdata.outputs.cache-hit != 'true' - uses: actions/checkout@v3 - with: - repository: nf-core/test-datasets - ref: rnaseq3 - path: test-datasets/ - - - name: Replace remote paths in samplesheets - run: | - for f in ${{ github.workspace }}/test-datasets/samplesheet/v3.10/*.csv; do - sed -i "s=https://raw.githubusercontent.com/nf-core/test-datasets/rnaseq/=${{ github.workspace }}/test-datasets/=g" $f - echo "========== $f ============" - cat $f - echo "========================================" - done; - - name: Run pipeline with test data run: | - nextflow run ${GITHUB_WORKSPACE} -profile test_cache,docker --outdir ./results --test_data_base ${{ github.workspace }}/test-datasets/ + nextflow run ${GITHUB_WORKSPACE} -profile test,docker --outdir ./results star_salmon: name: Test STAR Salmon with workflow parameters @@ -92,35 +63,6 @@ jobs: - name: Check out pipeline code uses: actions/checkout@v2 - - name: Hash Github Workspace - id: hash_workspace - run: | - echo "digest=$(echo RNA_3.10.1_${{ github.workspace }} | md5sum | cut -c 1-25)" >> $GITHUB_OUTPUT - - - name: Cache test data - id: cache-testdata - uses: actions/cache@v3 - with: - path: test-datasets/ - key: ${{ steps.hash_workspace.outputs.digest }} - - - name: Check out test data - if: steps.cache-testdata.outputs.cache-hit != 'true' - uses: actions/checkout@v3 - with: - repository: nf-core/test-datasets - ref: rnaseq3 - path: test-datasets/ - - - name: Replace remote paths in samplesheets - run: | - for f in ${{ github.workspace }}/test-datasets/samplesheet/v3.10/*.csv; do - sed -i "s=https://raw.githubusercontent.com/nf-core/test-datasets/rnaseq/=${{ github.workspace }}/test-datasets/=g" $f - echo "========== $f ============" - cat $f - echo "========================================" - done; - - name: Install Nextflow run: | wget -qO- get.nextflow.io | bash @@ -128,7 +70,7 @@ jobs: - name: Run pipeline with STAR and various parameters run: | - nextflow run ${GITHUB_WORKSPACE} -profile test_cache,docker --aligner star_salmon ${{ matrix.parameters }} --outdir ./results --test_data_base ${{ github.workspace }}/test-datasets/ + nextflow run ${GITHUB_WORKSPACE} -profile test,docker --aligner star_salmon ${{ matrix.parameters }} --outdir ./results star_rsem: name: Test STAR RSEM with workflow parameters @@ -143,35 +85,6 @@ jobs: - name: Check out pipeline code uses: actions/checkout@v2 - - name: Hash Github Workspace - id: hash_workspace - run: | - echo "digest=$(echo RNA_3.10.1_${{ github.workspace }} | md5sum | cut -c 1-25)" >> $GITHUB_OUTPUT - - - name: Cache test data - id: cache-testdata - uses: actions/cache@v3 - with: - path: test-datasets/ - key: ${{ steps.hash_workspace.outputs.digest }} - - - name: Check out test data - if: steps.cache-testdata.outputs.cache-hit != 'true' - uses: actions/checkout@v3 - with: - repository: nf-core/test-datasets - ref: rnaseq3 - path: test-datasets/ - - - name: Replace remote paths in samplesheets - run: | - for f in ${{ github.workspace }}/test-datasets/samplesheet/v3.10/*.csv; do - sed -i "s=https://raw.githubusercontent.com/nf-core/test-datasets/rnaseq/=${{ github.workspace }}/test-datasets/=g" $f - echo "========== $f ============" - cat $f - echo "========================================" - done; - - name: Install Nextflow run: | wget -qO- get.nextflow.io | bash @@ -179,7 +92,7 @@ jobs: - name: Run pipeline with RSEM STAR and various parameters run: | - nextflow run ${GITHUB_WORKSPACE} -profile test_cache,docker --aligner star_rsem ${{ matrix.parameters }} --outdir ./results --test_data_base ${{ github.workspace }}/test-datasets/ + nextflow run ${GITHUB_WORKSPACE} -profile test,docker --aligner star_rsem ${{ matrix.parameters }} --outdir ./results hisat2: name: Test HISAT2 with workflow parameters @@ -194,35 +107,6 @@ jobs: - name: Check out pipeline code uses: actions/checkout@v2 - - name: Hash Github Workspace - id: hash_workspace - run: | - echo "digest=$(echo RNA_3.10.1_${{ github.workspace }} | md5sum | cut -c 1-25)" >> $GITHUB_OUTPUT - - - name: Cache test data - id: cache-testdata - uses: actions/cache@v3 - with: - path: test-datasets/ - key: ${{ steps.hash_workspace.outputs.digest }} - - - name: Check out test data - if: steps.cache-testdata.outputs.cache-hit != 'true' - uses: actions/checkout@v3 - with: - repository: nf-core/test-datasets - ref: rnaseq3 - path: test-datasets/ - - - name: Replace remote paths in samplesheets - run: | - for f in ${{ github.workspace }}/test-datasets/samplesheet/v3.10/*.csv; do - sed -i "s=https://raw.githubusercontent.com/nf-core/test-datasets/rnaseq/=${{ github.workspace }}/test-datasets/=g" $f - echo "========== $f ============" - cat $f - echo "========================================" - done; - - name: Install Nextflow run: | wget -qO- get.nextflow.io | bash @@ -230,7 +114,7 @@ jobs: - name: Run pipeline with HISAT2 and various parameters run: | - nextflow run ${GITHUB_WORKSPACE} -profile test_cache,docker --aligner hisat2 ${{ matrix.parameters }} --outdir ./results --test_data_base ${{ github.workspace }}/test-datasets/ + nextflow run ${GITHUB_WORKSPACE} -profile test,docker --aligner hisat2 ${{ matrix.parameters }} --outdir ./results pseudo: name: Test Pseudoaligners with workflow parameters @@ -249,35 +133,6 @@ jobs: - name: Check out pipeline code uses: actions/checkout@v2 - - name: Hash Github Workspace - id: hash_workspace - run: | - echo "digest=$(echo RNA_3.10.1_${{ github.workspace }} | md5sum | cut -c 1-25)" >> $GITHUB_OUTPUT - - - name: Cache test data - id: cache-testdata - uses: actions/cache@v3 - with: - path: test-datasets/ - key: ${{ steps.hash_workspace.outputs.digest }} - - - name: Check out test data - if: steps.cache-testdata.outputs.cache-hit != 'true' - uses: actions/checkout@v3 - with: - repository: nf-core/test-datasets - ref: rnaseq3 - path: test-datasets/ - - - name: Replace remote paths in samplesheets - run: | - for f in ${{ github.workspace }}/test-datasets/samplesheet/v3.10/*.csv; do - sed -i "s=https://raw.githubusercontent.com/nf-core/test-datasets/rnaseq/=${{ github.workspace }}/test-datasets/=g" $f - echo "========== $f ============" - cat $f - echo "========================================" - done; - - name: Install Nextflow run: | wget -qO- get.nextflow.io | bash @@ -285,4 +140,4 @@ jobs: - name: Run pipeline with Salmon or Kallisto and various parameters run: | - nextflow run ${GITHUB_WORKSPACE} -profile test_cache,docker ${{ matrix.parameters }} --outdir ./results --test_data_base ${{ github.workspace }}/test-datasets/ + nextflow run ${GITHUB_WORKSPACE} -profile test,docker ${{ matrix.parameters }} --outdir ./results diff --git a/conf/test_cache.config b/conf/test_cache.config deleted file mode 100644 index 51aad577e..000000000 --- a/conf/test_cache.config +++ /dev/null @@ -1,50 +0,0 @@ -/* -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Nextflow config file for running minimal tests using cached / offline test data -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Defines input files and everything required to run a fast and simple pipeline test. - - Use as follows: - nextflow run nf-core/rnaseq -profile test, --outdir - ----------------------------------------------------------------------------------------- -*/ - -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 - // params.test_data_base (default) = 'https://raw.githubusercontent.com/nf-core/test-datasets/rnaseq3/' - input = "${params.test_data_base}/samplesheet/v3.10/samplesheet_test.csv" - - // Genome references - fasta = "${params.test_data_base}/reference/genome.fasta" - gtf = "${params.test_data_base}/reference/genes.gtf.gz" - gff = "${params.test_data_base}/reference/genes.gff.gz" - transcript_fasta = "${params.test_data_base}/reference/transcriptome.fasta" - additional_fasta = "${params.test_data_base}/reference/gfp.fa.gz" - - bbsplit_fasta_list = "${params.test_data_base}/reference/bbsplit_fasta_list.txt" - hisat2_index = "${params.test_data_base}/reference/hisat2.tar.gz" - salmon_index = "${params.test_data_base}/reference/salmon.tar.gz" - rsem_index = "${params.test_data_base}/reference/rsem.tar.gz" - - // Other parameters - skip_bbsplit = false - pseudo_aligner = 'salmon' - umitools_bc_pattern = 'NNNN' -} - -// When using RSEM, remove warning from STAR whilst building tiny indices -process { - withName: 'RSEM_PREPAREREFERENCE_GENOME' { - ext.args2 = "--genomeSAindexNbases 7" - } -} diff --git a/nextflow.config b/nextflow.config index 734894be2..c4e5a8a30 100644 --- a/nextflow.config +++ b/nextflow.config @@ -119,7 +119,6 @@ params { custom_config_base = "https://raw.githubusercontent.com/nf-core/configs/${params.custom_config_version}" config_profile_contact = null config_profile_url = null - test_data_base = 'https://raw.githubusercontent.com/nf-core/test-datasets/rnaseq3' // Max resource options // Defaults only, expecting to be overwritten @@ -245,7 +244,6 @@ profiles { executor.memory = 8.GB } test { includeConfig 'conf/test.config' } - test_cache { includeConfig 'conf/test_cache.config' } test_full { includeConfig 'conf/test_full.config' } test_full_aws { includeConfig 'conf/test_full.config' diff --git a/nextflow_schema.json b/nextflow_schema.json index 7881b98c1..0cd5df6e0 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -672,13 +672,6 @@ "description": "Institutional config URL link.", "hidden": true, "fa_icon": "fas fa-users-cog" - }, - "test_data_base": { - "type": "string", - "default": "https://raw.githubusercontent.com/nf-core/test-datasets/rnaseq3", - "description": "Base path / URL for data used in the test profiles", - "help_text": "Warning: The `-profile test` samplesheet file itself contains remote paths. Setting this parameter does not alter the contents of that file.", - "hidden": true } } }, From 8c9a24f2c9ae176e9046006f34d08336008a1365 Mon Sep 17 00:00:00 2001 From: Harshil Patel Date: Mon, 22 Jan 2024 11:02:00 +0000 Subject: [PATCH 016/634] Add empty nextflow.config to all modules/subworkflows/workflows --- modules/local/bedtools_genomecov/nextflow.config | 0 modules/local/cat_additional_fasta/nextflow.config | 0 modules/local/deseq2_qc/nextflow.config | 0 modules/local/dupradar/nextflow.config | 0 modules/local/gtf2bed/nextflow.config | 0 modules/local/gtf_filter/nextflow.config | 0 modules/local/multiqc_custom_biotype/nextflow.config | 0 .../local/preprocess_transcripts_fasta_gencode/nextflow.config | 0 modules/local/rsem_merge_counts/nextflow.config | 0 modules/local/star_align_igenomes/nextflow.config | 0 modules/local/star_genomegenerate_igenomes/nextflow.config | 0 modules/local/summarizedexperiment/nextflow.config | 0 modules/local/tx2gene/nextflow.config | 0 modules/local/tximport/nextflow.config | 0 modules/local/umitools_prepareforrsem/nextflow.config | 0 modules/nf-core/bbmap/bbsplit/nextflow.config | 0 modules/nf-core/cat/fastq/nextflow.config | 0 modules/nf-core/custom/getchromsizes/nextflow.config | 0 modules/nf-core/fastp/nextflow.config | 0 modules/nf-core/fastqc/nextflow.config | 0 modules/nf-core/fq/subsample/nextflow.config | 0 modules/nf-core/gffread/nextflow.config | 0 modules/nf-core/gunzip/nextflow.config | 0 modules/nf-core/hisat2/align/nextflow.config | 0 modules/nf-core/hisat2/build/nextflow.config | 0 modules/nf-core/hisat2/extractsplicesites/nextflow.config | 0 modules/nf-core/kallisto/index/nextflow.config | 0 modules/nf-core/kallisto/quant/nextflow.config | 0 modules/nf-core/multiqc/nextflow.config | 0 modules/nf-core/picard/markduplicates/nextflow.config | 0 modules/nf-core/preseq/lcextrap/nextflow.config | 0 modules/nf-core/qualimap/rnaseq/nextflow.config | 0 modules/nf-core/rsem/calculateexpression/nextflow.config | 0 modules/nf-core/rsem/preparereference/nextflow.config | 0 modules/nf-core/rseqc/bamstat/nextflow.config | 0 modules/nf-core/rseqc/inferexperiment/nextflow.config | 0 modules/nf-core/rseqc/innerdistance/nextflow.config | 0 modules/nf-core/rseqc/junctionannotation/nextflow.config | 0 modules/nf-core/rseqc/junctionsaturation/nextflow.config | 0 modules/nf-core/rseqc/readdistribution/nextflow.config | 0 modules/nf-core/rseqc/readduplication/nextflow.config | 0 modules/nf-core/rseqc/tin/nextflow.config | 0 modules/nf-core/salmon/index/nextflow.config | 0 modules/nf-core/salmon/quant/nextflow.config | 0 modules/nf-core/samtools/flagstat/nextflow.config | 0 modules/nf-core/samtools/idxstats/nextflow.config | 0 modules/nf-core/samtools/index/nextflow.config | 0 modules/nf-core/samtools/sort/nextflow.config | 0 modules/nf-core/samtools/stats/nextflow.config | 0 modules/nf-core/sortmerna/nextflow.config | 0 modules/nf-core/star/align/nextflow.config | 0 modules/nf-core/star/genomegenerate/nextflow.config | 0 modules/nf-core/stringtie/stringtie/nextflow.config | 0 modules/nf-core/subread/featurecounts/nextflow.config | 0 modules/nf-core/trimgalore/nextflow.config | 0 modules/nf-core/ucsc/bedclip/nextflow.config | 0 modules/nf-core/ucsc/bedgraphtobigwig/nextflow.config | 0 modules/nf-core/umitools/dedup/nextflow.config | 0 modules/nf-core/umitools/extract/nextflow.config | 0 modules/nf-core/untar/nextflow.config | 0 subworkflows/local/align_star/nextflow.config | 0 subworkflows/local/prepare_genome/nextflow.config | 0 subworkflows/local/quantify_pseudo/nextflow.config | 0 subworkflows/local/quantify_rsem/nextflow.config | 0 subworkflows/local/utils_nfcore_rnaseq_pipeline/nextflow.config | 0 .../nf-core/bam_dedup_stats_samtools_umitools/nextflow.config | 0 subworkflows/nf-core/bam_markduplicates_picard/nextflow.config | 0 subworkflows/nf-core/bam_rseqc/nextflow.config | 0 subworkflows/nf-core/bam_sort_stats_samtools/nextflow.config | 0 subworkflows/nf-core/bam_stats_samtools/nextflow.config | 0 .../nf-core/bedgraph_bedclip_bedgraphtobigwig/nextflow.config | 0 subworkflows/nf-core/fastq_align_hisat2/nextflow.config | 0 subworkflows/nf-core/fastq_fastqc_umitools_fastp/nextflow.config | 0 .../nf-core/fastq_fastqc_umitools_trimgalore/nextflow.config | 0 subworkflows/nf-core/fastq_subsample_fq_salmon/nextflow.config | 0 subworkflows/nf-core/utils_nextflow_pipeline/nextflow.config | 0 subworkflows/nf-core/utils_nfcore_pipeline/nextflow.config | 0 subworkflows/nf-core/utils_nfvalidation_plugin/nextflow.config | 0 workflows/rnaseq/nextflow.config | 0 79 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 modules/local/bedtools_genomecov/nextflow.config create mode 100644 modules/local/cat_additional_fasta/nextflow.config create mode 100644 modules/local/deseq2_qc/nextflow.config create mode 100644 modules/local/dupradar/nextflow.config create mode 100644 modules/local/gtf2bed/nextflow.config create mode 100644 modules/local/gtf_filter/nextflow.config create mode 100644 modules/local/multiqc_custom_biotype/nextflow.config create mode 100644 modules/local/preprocess_transcripts_fasta_gencode/nextflow.config create mode 100644 modules/local/rsem_merge_counts/nextflow.config create mode 100644 modules/local/star_align_igenomes/nextflow.config create mode 100644 modules/local/star_genomegenerate_igenomes/nextflow.config create mode 100644 modules/local/summarizedexperiment/nextflow.config create mode 100644 modules/local/tx2gene/nextflow.config create mode 100644 modules/local/tximport/nextflow.config create mode 100644 modules/local/umitools_prepareforrsem/nextflow.config create mode 100644 modules/nf-core/bbmap/bbsplit/nextflow.config create mode 100644 modules/nf-core/cat/fastq/nextflow.config create mode 100644 modules/nf-core/custom/getchromsizes/nextflow.config create mode 100644 modules/nf-core/fastp/nextflow.config create mode 100644 modules/nf-core/fastqc/nextflow.config create mode 100644 modules/nf-core/fq/subsample/nextflow.config create mode 100644 modules/nf-core/gffread/nextflow.config create mode 100644 modules/nf-core/gunzip/nextflow.config create mode 100644 modules/nf-core/hisat2/align/nextflow.config create mode 100644 modules/nf-core/hisat2/build/nextflow.config create mode 100644 modules/nf-core/hisat2/extractsplicesites/nextflow.config create mode 100644 modules/nf-core/kallisto/index/nextflow.config create mode 100644 modules/nf-core/kallisto/quant/nextflow.config create mode 100644 modules/nf-core/multiqc/nextflow.config create mode 100644 modules/nf-core/picard/markduplicates/nextflow.config create mode 100644 modules/nf-core/preseq/lcextrap/nextflow.config create mode 100644 modules/nf-core/qualimap/rnaseq/nextflow.config create mode 100644 modules/nf-core/rsem/calculateexpression/nextflow.config create mode 100644 modules/nf-core/rsem/preparereference/nextflow.config create mode 100644 modules/nf-core/rseqc/bamstat/nextflow.config create mode 100644 modules/nf-core/rseqc/inferexperiment/nextflow.config create mode 100644 modules/nf-core/rseqc/innerdistance/nextflow.config create mode 100644 modules/nf-core/rseqc/junctionannotation/nextflow.config create mode 100644 modules/nf-core/rseqc/junctionsaturation/nextflow.config create mode 100644 modules/nf-core/rseqc/readdistribution/nextflow.config create mode 100644 modules/nf-core/rseqc/readduplication/nextflow.config create mode 100644 modules/nf-core/rseqc/tin/nextflow.config create mode 100644 modules/nf-core/salmon/index/nextflow.config create mode 100644 modules/nf-core/salmon/quant/nextflow.config create mode 100644 modules/nf-core/samtools/flagstat/nextflow.config create mode 100644 modules/nf-core/samtools/idxstats/nextflow.config create mode 100644 modules/nf-core/samtools/index/nextflow.config create mode 100644 modules/nf-core/samtools/sort/nextflow.config create mode 100644 modules/nf-core/samtools/stats/nextflow.config create mode 100644 modules/nf-core/sortmerna/nextflow.config create mode 100644 modules/nf-core/star/align/nextflow.config create mode 100644 modules/nf-core/star/genomegenerate/nextflow.config create mode 100644 modules/nf-core/stringtie/stringtie/nextflow.config create mode 100644 modules/nf-core/subread/featurecounts/nextflow.config create mode 100644 modules/nf-core/trimgalore/nextflow.config create mode 100644 modules/nf-core/ucsc/bedclip/nextflow.config create mode 100644 modules/nf-core/ucsc/bedgraphtobigwig/nextflow.config create mode 100644 modules/nf-core/umitools/dedup/nextflow.config create mode 100644 modules/nf-core/umitools/extract/nextflow.config create mode 100644 modules/nf-core/untar/nextflow.config create mode 100644 subworkflows/local/align_star/nextflow.config create mode 100644 subworkflows/local/prepare_genome/nextflow.config create mode 100644 subworkflows/local/quantify_pseudo/nextflow.config create mode 100644 subworkflows/local/quantify_rsem/nextflow.config create mode 100644 subworkflows/local/utils_nfcore_rnaseq_pipeline/nextflow.config create mode 100644 subworkflows/nf-core/bam_dedup_stats_samtools_umitools/nextflow.config create mode 100644 subworkflows/nf-core/bam_markduplicates_picard/nextflow.config create mode 100644 subworkflows/nf-core/bam_rseqc/nextflow.config create mode 100644 subworkflows/nf-core/bam_sort_stats_samtools/nextflow.config create mode 100644 subworkflows/nf-core/bam_stats_samtools/nextflow.config create mode 100644 subworkflows/nf-core/bedgraph_bedclip_bedgraphtobigwig/nextflow.config create mode 100644 subworkflows/nf-core/fastq_align_hisat2/nextflow.config create mode 100644 subworkflows/nf-core/fastq_fastqc_umitools_fastp/nextflow.config create mode 100644 subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/nextflow.config create mode 100644 subworkflows/nf-core/fastq_subsample_fq_salmon/nextflow.config create mode 100644 subworkflows/nf-core/utils_nextflow_pipeline/nextflow.config create mode 100644 subworkflows/nf-core/utils_nfcore_pipeline/nextflow.config create mode 100644 subworkflows/nf-core/utils_nfvalidation_plugin/nextflow.config create mode 100644 workflows/rnaseq/nextflow.config diff --git a/modules/local/bedtools_genomecov/nextflow.config b/modules/local/bedtools_genomecov/nextflow.config new file mode 100644 index 000000000..e69de29bb diff --git a/modules/local/cat_additional_fasta/nextflow.config b/modules/local/cat_additional_fasta/nextflow.config new file mode 100644 index 000000000..e69de29bb diff --git a/modules/local/deseq2_qc/nextflow.config b/modules/local/deseq2_qc/nextflow.config new file mode 100644 index 000000000..e69de29bb diff --git a/modules/local/dupradar/nextflow.config b/modules/local/dupradar/nextflow.config new file mode 100644 index 000000000..e69de29bb diff --git a/modules/local/gtf2bed/nextflow.config b/modules/local/gtf2bed/nextflow.config new file mode 100644 index 000000000..e69de29bb diff --git a/modules/local/gtf_filter/nextflow.config b/modules/local/gtf_filter/nextflow.config new file mode 100644 index 000000000..e69de29bb diff --git a/modules/local/multiqc_custom_biotype/nextflow.config b/modules/local/multiqc_custom_biotype/nextflow.config new file mode 100644 index 000000000..e69de29bb diff --git a/modules/local/preprocess_transcripts_fasta_gencode/nextflow.config b/modules/local/preprocess_transcripts_fasta_gencode/nextflow.config new file mode 100644 index 000000000..e69de29bb diff --git a/modules/local/rsem_merge_counts/nextflow.config b/modules/local/rsem_merge_counts/nextflow.config new file mode 100644 index 000000000..e69de29bb diff --git a/modules/local/star_align_igenomes/nextflow.config b/modules/local/star_align_igenomes/nextflow.config new file mode 100644 index 000000000..e69de29bb diff --git a/modules/local/star_genomegenerate_igenomes/nextflow.config b/modules/local/star_genomegenerate_igenomes/nextflow.config new file mode 100644 index 000000000..e69de29bb diff --git a/modules/local/summarizedexperiment/nextflow.config b/modules/local/summarizedexperiment/nextflow.config new file mode 100644 index 000000000..e69de29bb diff --git a/modules/local/tx2gene/nextflow.config b/modules/local/tx2gene/nextflow.config new file mode 100644 index 000000000..e69de29bb diff --git a/modules/local/tximport/nextflow.config b/modules/local/tximport/nextflow.config new file mode 100644 index 000000000..e69de29bb diff --git a/modules/local/umitools_prepareforrsem/nextflow.config b/modules/local/umitools_prepareforrsem/nextflow.config new file mode 100644 index 000000000..e69de29bb diff --git a/modules/nf-core/bbmap/bbsplit/nextflow.config b/modules/nf-core/bbmap/bbsplit/nextflow.config new file mode 100644 index 000000000..e69de29bb diff --git a/modules/nf-core/cat/fastq/nextflow.config b/modules/nf-core/cat/fastq/nextflow.config new file mode 100644 index 000000000..e69de29bb diff --git a/modules/nf-core/custom/getchromsizes/nextflow.config b/modules/nf-core/custom/getchromsizes/nextflow.config new file mode 100644 index 000000000..e69de29bb diff --git a/modules/nf-core/fastp/nextflow.config b/modules/nf-core/fastp/nextflow.config new file mode 100644 index 000000000..e69de29bb diff --git a/modules/nf-core/fastqc/nextflow.config b/modules/nf-core/fastqc/nextflow.config new file mode 100644 index 000000000..e69de29bb diff --git a/modules/nf-core/fq/subsample/nextflow.config b/modules/nf-core/fq/subsample/nextflow.config new file mode 100644 index 000000000..e69de29bb diff --git a/modules/nf-core/gffread/nextflow.config b/modules/nf-core/gffread/nextflow.config new file mode 100644 index 000000000..e69de29bb diff --git a/modules/nf-core/gunzip/nextflow.config b/modules/nf-core/gunzip/nextflow.config new file mode 100644 index 000000000..e69de29bb diff --git a/modules/nf-core/hisat2/align/nextflow.config b/modules/nf-core/hisat2/align/nextflow.config new file mode 100644 index 000000000..e69de29bb diff --git a/modules/nf-core/hisat2/build/nextflow.config b/modules/nf-core/hisat2/build/nextflow.config new file mode 100644 index 000000000..e69de29bb diff --git a/modules/nf-core/hisat2/extractsplicesites/nextflow.config b/modules/nf-core/hisat2/extractsplicesites/nextflow.config new file mode 100644 index 000000000..e69de29bb diff --git a/modules/nf-core/kallisto/index/nextflow.config b/modules/nf-core/kallisto/index/nextflow.config new file mode 100644 index 000000000..e69de29bb diff --git a/modules/nf-core/kallisto/quant/nextflow.config b/modules/nf-core/kallisto/quant/nextflow.config new file mode 100644 index 000000000..e69de29bb diff --git a/modules/nf-core/multiqc/nextflow.config b/modules/nf-core/multiqc/nextflow.config new file mode 100644 index 000000000..e69de29bb diff --git a/modules/nf-core/picard/markduplicates/nextflow.config b/modules/nf-core/picard/markduplicates/nextflow.config new file mode 100644 index 000000000..e69de29bb diff --git a/modules/nf-core/preseq/lcextrap/nextflow.config b/modules/nf-core/preseq/lcextrap/nextflow.config new file mode 100644 index 000000000..e69de29bb diff --git a/modules/nf-core/qualimap/rnaseq/nextflow.config b/modules/nf-core/qualimap/rnaseq/nextflow.config new file mode 100644 index 000000000..e69de29bb diff --git a/modules/nf-core/rsem/calculateexpression/nextflow.config b/modules/nf-core/rsem/calculateexpression/nextflow.config new file mode 100644 index 000000000..e69de29bb diff --git a/modules/nf-core/rsem/preparereference/nextflow.config b/modules/nf-core/rsem/preparereference/nextflow.config new file mode 100644 index 000000000..e69de29bb diff --git a/modules/nf-core/rseqc/bamstat/nextflow.config b/modules/nf-core/rseqc/bamstat/nextflow.config new file mode 100644 index 000000000..e69de29bb diff --git a/modules/nf-core/rseqc/inferexperiment/nextflow.config b/modules/nf-core/rseqc/inferexperiment/nextflow.config new file mode 100644 index 000000000..e69de29bb diff --git a/modules/nf-core/rseqc/innerdistance/nextflow.config b/modules/nf-core/rseqc/innerdistance/nextflow.config new file mode 100644 index 000000000..e69de29bb diff --git a/modules/nf-core/rseqc/junctionannotation/nextflow.config b/modules/nf-core/rseqc/junctionannotation/nextflow.config new file mode 100644 index 000000000..e69de29bb diff --git a/modules/nf-core/rseqc/junctionsaturation/nextflow.config b/modules/nf-core/rseqc/junctionsaturation/nextflow.config new file mode 100644 index 000000000..e69de29bb diff --git a/modules/nf-core/rseqc/readdistribution/nextflow.config b/modules/nf-core/rseqc/readdistribution/nextflow.config new file mode 100644 index 000000000..e69de29bb diff --git a/modules/nf-core/rseqc/readduplication/nextflow.config b/modules/nf-core/rseqc/readduplication/nextflow.config new file mode 100644 index 000000000..e69de29bb diff --git a/modules/nf-core/rseqc/tin/nextflow.config b/modules/nf-core/rseqc/tin/nextflow.config new file mode 100644 index 000000000..e69de29bb diff --git a/modules/nf-core/salmon/index/nextflow.config b/modules/nf-core/salmon/index/nextflow.config new file mode 100644 index 000000000..e69de29bb diff --git a/modules/nf-core/salmon/quant/nextflow.config b/modules/nf-core/salmon/quant/nextflow.config new file mode 100644 index 000000000..e69de29bb diff --git a/modules/nf-core/samtools/flagstat/nextflow.config b/modules/nf-core/samtools/flagstat/nextflow.config new file mode 100644 index 000000000..e69de29bb diff --git a/modules/nf-core/samtools/idxstats/nextflow.config b/modules/nf-core/samtools/idxstats/nextflow.config new file mode 100644 index 000000000..e69de29bb diff --git a/modules/nf-core/samtools/index/nextflow.config b/modules/nf-core/samtools/index/nextflow.config new file mode 100644 index 000000000..e69de29bb diff --git a/modules/nf-core/samtools/sort/nextflow.config b/modules/nf-core/samtools/sort/nextflow.config new file mode 100644 index 000000000..e69de29bb diff --git a/modules/nf-core/samtools/stats/nextflow.config b/modules/nf-core/samtools/stats/nextflow.config new file mode 100644 index 000000000..e69de29bb diff --git a/modules/nf-core/sortmerna/nextflow.config b/modules/nf-core/sortmerna/nextflow.config new file mode 100644 index 000000000..e69de29bb diff --git a/modules/nf-core/star/align/nextflow.config b/modules/nf-core/star/align/nextflow.config new file mode 100644 index 000000000..e69de29bb diff --git a/modules/nf-core/star/genomegenerate/nextflow.config b/modules/nf-core/star/genomegenerate/nextflow.config new file mode 100644 index 000000000..e69de29bb diff --git a/modules/nf-core/stringtie/stringtie/nextflow.config b/modules/nf-core/stringtie/stringtie/nextflow.config new file mode 100644 index 000000000..e69de29bb diff --git a/modules/nf-core/subread/featurecounts/nextflow.config b/modules/nf-core/subread/featurecounts/nextflow.config new file mode 100644 index 000000000..e69de29bb diff --git a/modules/nf-core/trimgalore/nextflow.config b/modules/nf-core/trimgalore/nextflow.config new file mode 100644 index 000000000..e69de29bb diff --git a/modules/nf-core/ucsc/bedclip/nextflow.config b/modules/nf-core/ucsc/bedclip/nextflow.config new file mode 100644 index 000000000..e69de29bb diff --git a/modules/nf-core/ucsc/bedgraphtobigwig/nextflow.config b/modules/nf-core/ucsc/bedgraphtobigwig/nextflow.config new file mode 100644 index 000000000..e69de29bb diff --git a/modules/nf-core/umitools/dedup/nextflow.config b/modules/nf-core/umitools/dedup/nextflow.config new file mode 100644 index 000000000..e69de29bb diff --git a/modules/nf-core/umitools/extract/nextflow.config b/modules/nf-core/umitools/extract/nextflow.config new file mode 100644 index 000000000..e69de29bb diff --git a/modules/nf-core/untar/nextflow.config b/modules/nf-core/untar/nextflow.config new file mode 100644 index 000000000..e69de29bb diff --git a/subworkflows/local/align_star/nextflow.config b/subworkflows/local/align_star/nextflow.config new file mode 100644 index 000000000..e69de29bb diff --git a/subworkflows/local/prepare_genome/nextflow.config b/subworkflows/local/prepare_genome/nextflow.config new file mode 100644 index 000000000..e69de29bb diff --git a/subworkflows/local/quantify_pseudo/nextflow.config b/subworkflows/local/quantify_pseudo/nextflow.config new file mode 100644 index 000000000..e69de29bb diff --git a/subworkflows/local/quantify_rsem/nextflow.config b/subworkflows/local/quantify_rsem/nextflow.config new file mode 100644 index 000000000..e69de29bb diff --git a/subworkflows/local/utils_nfcore_rnaseq_pipeline/nextflow.config b/subworkflows/local/utils_nfcore_rnaseq_pipeline/nextflow.config new file mode 100644 index 000000000..e69de29bb diff --git a/subworkflows/nf-core/bam_dedup_stats_samtools_umitools/nextflow.config b/subworkflows/nf-core/bam_dedup_stats_samtools_umitools/nextflow.config new file mode 100644 index 000000000..e69de29bb diff --git a/subworkflows/nf-core/bam_markduplicates_picard/nextflow.config b/subworkflows/nf-core/bam_markduplicates_picard/nextflow.config new file mode 100644 index 000000000..e69de29bb diff --git a/subworkflows/nf-core/bam_rseqc/nextflow.config b/subworkflows/nf-core/bam_rseqc/nextflow.config new file mode 100644 index 000000000..e69de29bb diff --git a/subworkflows/nf-core/bam_sort_stats_samtools/nextflow.config b/subworkflows/nf-core/bam_sort_stats_samtools/nextflow.config new file mode 100644 index 000000000..e69de29bb diff --git a/subworkflows/nf-core/bam_stats_samtools/nextflow.config b/subworkflows/nf-core/bam_stats_samtools/nextflow.config new file mode 100644 index 000000000..e69de29bb diff --git a/subworkflows/nf-core/bedgraph_bedclip_bedgraphtobigwig/nextflow.config b/subworkflows/nf-core/bedgraph_bedclip_bedgraphtobigwig/nextflow.config new file mode 100644 index 000000000..e69de29bb diff --git a/subworkflows/nf-core/fastq_align_hisat2/nextflow.config b/subworkflows/nf-core/fastq_align_hisat2/nextflow.config new file mode 100644 index 000000000..e69de29bb diff --git a/subworkflows/nf-core/fastq_fastqc_umitools_fastp/nextflow.config b/subworkflows/nf-core/fastq_fastqc_umitools_fastp/nextflow.config new file mode 100644 index 000000000..e69de29bb diff --git a/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/nextflow.config b/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/nextflow.config new file mode 100644 index 000000000..e69de29bb diff --git a/subworkflows/nf-core/fastq_subsample_fq_salmon/nextflow.config b/subworkflows/nf-core/fastq_subsample_fq_salmon/nextflow.config new file mode 100644 index 000000000..e69de29bb diff --git a/subworkflows/nf-core/utils_nextflow_pipeline/nextflow.config b/subworkflows/nf-core/utils_nextflow_pipeline/nextflow.config new file mode 100644 index 000000000..e69de29bb diff --git a/subworkflows/nf-core/utils_nfcore_pipeline/nextflow.config b/subworkflows/nf-core/utils_nfcore_pipeline/nextflow.config new file mode 100644 index 000000000..e69de29bb diff --git a/subworkflows/nf-core/utils_nfvalidation_plugin/nextflow.config b/subworkflows/nf-core/utils_nfvalidation_plugin/nextflow.config new file mode 100644 index 000000000..e69de29bb diff --git a/workflows/rnaseq/nextflow.config b/workflows/rnaseq/nextflow.config new file mode 100644 index 000000000..e69de29bb From 2af8c4709d7ae6587f41742eb6a98e842a1a3ed1 Mon Sep 17 00:00:00 2001 From: Harshil Patel Date: Mon, 22 Jan 2024 11:53:41 +0000 Subject: [PATCH 017/634] Rename quantify_pseudo to quantify_pseudo_alignment --- .../local/quantify_pseudo/nextflow.config | 0 .../main.nf | 0 .../quantify_pseudo_alignment/nextflow.config | 44 +++++++++++++++++++ 3 files changed, 44 insertions(+) delete mode 100644 subworkflows/local/quantify_pseudo/nextflow.config rename subworkflows/local/{quantify_pseudo => quantify_pseudo_alignment}/main.nf (100%) create mode 100644 subworkflows/local/quantify_pseudo_alignment/nextflow.config diff --git a/subworkflows/local/quantify_pseudo/nextflow.config b/subworkflows/local/quantify_pseudo/nextflow.config deleted file mode 100644 index e69de29bb..000000000 diff --git a/subworkflows/local/quantify_pseudo/main.nf b/subworkflows/local/quantify_pseudo_alignment/main.nf similarity index 100% rename from subworkflows/local/quantify_pseudo/main.nf rename to subworkflows/local/quantify_pseudo_alignment/main.nf diff --git a/subworkflows/local/quantify_pseudo_alignment/nextflow.config b/subworkflows/local/quantify_pseudo_alignment/nextflow.config new file mode 100644 index 000000000..a9c246233 --- /dev/null +++ b/subworkflows/local/quantify_pseudo_alignment/nextflow.config @@ -0,0 +1,44 @@ +process { + withName: '.*:QUANTIFY_PSEUDO_ALIGNMENT:SALMON_QUANT' { + ext.args = { params.extra_salmon_quant_args ?: '' } + publishDir = [ + path: { "${params.outdir}/${params.pseudo_aligner}" }, + mode: params.publish_dir_mode, + saveAs: { filename -> filename.equals('versions.yml') || filename.endsWith('_meta_info.json') ? null : filename } + ] + } + + withName: '.*:QUANTIFY_PSEUDO_ALIGNMENT:KALLISTO_QUANT' { + ext.args = params.extra_kallisto_quant_args ?: '' + publishDir = [ + path: { "${params.outdir}/${params.pseudo_aligner}" }, + mode: params.publish_dir_mode, + saveAs: { filename -> filename.equals('versions.yml') || filename.endsWith('.run_info.json') || filename.endsWith('.log') ? null : filename } + ] + } + + withName: '.*:QUANTIFY_PSEUDO_ALIGNMENT:TX2GENE' { + publishDir = [ + path: { "${params.outdir}/${params.pseudo_aligner}" }, + mode: params.publish_dir_mode, + saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + ] + } + + withName: '.*:QUANTIFY_PSEUDO_ALIGNMENT:TXIMPORT' { + ext.prefix = { "${quant_type}.merged" } + publishDir = [ + path: { "${params.outdir}/${params.pseudo_aligner}" }, + mode: params.publish_dir_mode, + saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + ] + } + + withName: '.*:QUANTIFY_PSEUDO_ALIGNMENT:SE_.*' { + publishDir = [ + path: { "${params.outdir}/${params.pseudo_aligner}" }, + mode: params.publish_dir_mode, + saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + ] + } +} \ No newline at end of file From 79adcbf2667e2590ec66116152d697610dd1d673 Mon Sep 17 00:00:00 2001 From: Harshil Patel Date: Mon, 22 Jan 2024 12:18:21 +0000 Subject: [PATCH 018/634] First pass updates to split config out of modules.config --- .../local/bedtools_genomecov/nextflow.config | 8 + modules/local/dupradar/nextflow.config | 31 ++ .../multiqc_custom_biotype/nextflow.config | 9 + modules/nf-core/bbmap/bbsplit/nextflow.config | 18 + modules/nf-core/cat/fastq/nextflow.config | 9 + modules/nf-core/multiqc/nextflow.config | 14 + .../nf-core/preseq/lcextrap/nextflow.config | 17 + .../nf-core/qualimap/rnaseq/nextflow.config | 9 + modules/nf-core/sortmerna/nextflow.config | 18 + .../stringtie/stringtie/nextflow.config | 13 + .../subread/featurecounts/nextflow.config | 14 + nextflow.config | 14 +- subworkflows/local/align_star/nextflow.config | 37 +++ .../local/prepare_genome/nextflow.config | 114 +++++++ .../local/quantify_rsem/nextflow.config | 37 +++ .../bam_markduplicates_picard/nextflow.config | 37 +++ .../nf-core/bam_rseqc/nextflow.config | 119 +++++++ .../fastq_align_hisat2/nextflow.config | 24 ++ .../nextflow.config | 58 ++++ .../nextflow.config | 54 +++ .../fastq_subsample_fq_salmon/nextflow.config | 16 + workflows/rnaseq/main.nf | 4 +- workflows/rnaseq/nextflow.config | 308 ++++++++++++++++++ 23 files changed, 978 insertions(+), 4 deletions(-) diff --git a/modules/local/bedtools_genomecov/nextflow.config b/modules/local/bedtools_genomecov/nextflow.config index e69de29bb..c476b70cc 100644 --- a/modules/local/bedtools_genomecov/nextflow.config +++ b/modules/local/bedtools_genomecov/nextflow.config @@ -0,0 +1,8 @@ +process { + withName: 'BEDTOOLS_GENOMECOV' { + ext.args = '-split -du' + publishDir = [ + enabled: false + ] + } +} \ No newline at end of file diff --git a/modules/local/dupradar/nextflow.config b/modules/local/dupradar/nextflow.config index e69de29bb..6a518df66 100644 --- a/modules/local/dupradar/nextflow.config +++ b/modules/local/dupradar/nextflow.config @@ -0,0 +1,31 @@ +process { + withName: 'DUPRADAR' { + publishDir = [ + [ + path: { "${params.outdir}/${params.aligner}/dupradar/scatter_plot" }, + mode: params.publish_dir_mode, + pattern: "*Dens.pdf" + ], + [ + path: { "${params.outdir}/${params.aligner}/dupradar/box_plot" }, + mode: params.publish_dir_mode, + pattern: "*Boxplot.pdf" + ], + [ + path: { "${params.outdir}/${params.aligner}/dupradar/histogram" }, + mode: params.publish_dir_mode, + pattern: "*Hist.pdf" + ], + [ + path: { "${params.outdir}/${params.aligner}/dupradar/gene_data" }, + mode: params.publish_dir_mode, + pattern: "*Matrix.txt" + ], + [ + path: { "${params.outdir}/${params.aligner}/dupradar/intercepts_slope" }, + mode: params.publish_dir_mode, + pattern: "*slope.txt" + ] + ] + } +} \ No newline at end of file diff --git a/modules/local/multiqc_custom_biotype/nextflow.config b/modules/local/multiqc_custom_biotype/nextflow.config index e69de29bb..cef49e565 100644 --- a/modules/local/multiqc_custom_biotype/nextflow.config +++ b/modules/local/multiqc_custom_biotype/nextflow.config @@ -0,0 +1,9 @@ +process { + withName: 'MULTIQC_CUSTOM_BIOTYPE' { + publishDir = [ + path: { "${params.outdir}/${params.aligner}/featurecounts" }, + mode: params.publish_dir_mode, + saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + ] + } +} \ No newline at end of file diff --git a/modules/nf-core/bbmap/bbsplit/nextflow.config b/modules/nf-core/bbmap/bbsplit/nextflow.config index e69de29bb..7e871bbba 100644 --- a/modules/nf-core/bbmap/bbsplit/nextflow.config +++ b/modules/nf-core/bbmap/bbsplit/nextflow.config @@ -0,0 +1,18 @@ +process { + withName: 'BBMAP_BBSPLIT' { + ext.args = 'build=1 ambiguous2=all maxindel=150000' + publishDir = [ + [ + path: { "${params.outdir}/bbsplit" }, + mode: params.publish_dir_mode, + pattern: '*.txt' + ], + [ + path: { params.save_bbsplit_reads ? "${params.outdir}/bbsplit" : params.outdir }, + mode: params.publish_dir_mode, + pattern: '*.fastq.gz', + saveAs: { params.save_bbsplit_reads ? it : null } + ] + ] + } +} \ No newline at end of file diff --git a/modules/nf-core/cat/fastq/nextflow.config b/modules/nf-core/cat/fastq/nextflow.config index e69de29bb..9d4372756 100644 --- a/modules/nf-core/cat/fastq/nextflow.config +++ b/modules/nf-core/cat/fastq/nextflow.config @@ -0,0 +1,9 @@ +process { + withName: 'CAT_FASTQ' { + publishDir = [ + path: { params.save_merged_fastq ? "${params.outdir}/fastq" : params.outdir }, + mode: params.publish_dir_mode, + saveAs: { filename -> (filename.endsWith('.fastq.gz') && params.save_merged_fastq) ? filename : null } + ] + } +} \ No newline at end of file diff --git a/modules/nf-core/multiqc/nextflow.config b/modules/nf-core/multiqc/nextflow.config index e69de29bb..ea3e6f2f6 100644 --- a/modules/nf-core/multiqc/nextflow.config +++ b/modules/nf-core/multiqc/nextflow.config @@ -0,0 +1,14 @@ +process { + withName: 'MULTIQC' { + ext.args = { params.multiqc_title ? "--title \"$params.multiqc_title\"" : '' } + ext.prefix = "multiqc_report" + publishDir = [ + path: { [ + "${params.outdir}/multiqc", + params.skip_alignment? '' : "/${params.aligner}" + ].join('') }, + mode: params.publish_dir_mode, + saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + ] + } +} \ No newline at end of file diff --git a/modules/nf-core/preseq/lcextrap/nextflow.config b/modules/nf-core/preseq/lcextrap/nextflow.config index e69de29bb..45eb850f6 100644 --- a/modules/nf-core/preseq/lcextrap/nextflow.config +++ b/modules/nf-core/preseq/lcextrap/nextflow.config @@ -0,0 +1,17 @@ +process { + withName: 'PRESEQ_LCEXTRAP' { + ext.args = '-verbose -bam -seed 1 -seg_len 100000000' + publishDir = [ + [ + path: { "${params.outdir}/${params.aligner}/preseq" }, + mode: params.publish_dir_mode, + pattern: "*.txt" + ], + [ + path: { "${params.outdir}/${params.aligner}/preseq/log" }, + mode: params.publish_dir_mode, + pattern: "*.log" + ] + ] + } +} \ No newline at end of file diff --git a/modules/nf-core/qualimap/rnaseq/nextflow.config b/modules/nf-core/qualimap/rnaseq/nextflow.config index e69de29bb..0cb803147 100644 --- a/modules/nf-core/qualimap/rnaseq/nextflow.config +++ b/modules/nf-core/qualimap/rnaseq/nextflow.config @@ -0,0 +1,9 @@ +process { + withName: 'QUALIMAP_RNASEQ' { + publishDir = [ + path: { "${params.outdir}/${params.aligner}/qualimap" }, + mode: params.publish_dir_mode, + saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + ] + } +} \ No newline at end of file diff --git a/modules/nf-core/sortmerna/nextflow.config b/modules/nf-core/sortmerna/nextflow.config index e69de29bb..bff7e944c 100644 --- a/modules/nf-core/sortmerna/nextflow.config +++ b/modules/nf-core/sortmerna/nextflow.config @@ -0,0 +1,18 @@ +process { + withName: 'SORTMERNA' { + ext.args = '--num_alignments 1 -v' + publishDir = [ + [ + path: { "${params.outdir}/sortmerna" }, + mode: params.publish_dir_mode, + pattern: "*.log" + ], + [ + path: { params.save_non_ribo_reads ? "${params.outdir}/sortmerna" : params.outdir }, + mode: params.publish_dir_mode, + pattern: "*.fastq.gz", + saveAs: { params.save_non_ribo_reads ? it : null } + ] + ] + } +} \ No newline at end of file diff --git a/modules/nf-core/stringtie/stringtie/nextflow.config b/modules/nf-core/stringtie/stringtie/nextflow.config index e69de29bb..292c66318 100644 --- a/modules/nf-core/stringtie/stringtie/nextflow.config +++ b/modules/nf-core/stringtie/stringtie/nextflow.config @@ -0,0 +1,13 @@ +process { + withName: 'STRINGTIE_STRINGTIE' { + ext.args = { [ + '-v', + params.stringtie_ignore_gtf ? '' : '-e' + ].join(' ').trim() } + publishDir = [ + path: { "${params.outdir}/${params.aligner}/stringtie" }, + mode: params.publish_dir_mode, + saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + ] + } +} \ No newline at end of file diff --git a/modules/nf-core/subread/featurecounts/nextflow.config b/modules/nf-core/subread/featurecounts/nextflow.config index e69de29bb..a7531a18b 100644 --- a/modules/nf-core/subread/featurecounts/nextflow.config +++ b/modules/nf-core/subread/featurecounts/nextflow.config @@ -0,0 +1,14 @@ +process { + withName: 'SUBREAD_FEATURECOUNTS' { + ext.args = { [ + '-B -C', + params.gencode ? "-g gene_type" : "-g $params.featurecounts_group_type", + "-t $params.featurecounts_feature_type" + ].join(' ').trim() } + publishDir = [ + path: { "${params.outdir}/${params.aligner}/featurecounts" }, + mode: params.publish_dir_mode, + saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + ] + } +} \ No newline at end of file diff --git a/nextflow.config b/nextflow.config index c4e5a8a30..d9e5e00b2 100644 --- a/nextflow.config +++ b/nextflow.config @@ -135,6 +135,15 @@ params { } +// Default publishing logic for pipeline +process { + publishDir = [ + path: { "${params.outdir}/${task.process.tokenize(':')[-1].tokenize('_')[0].toLowerCase()}" }, + mode: params.publish_dir_mode, + saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + ] +} + // Load base.config by default for all pipelines includeConfig 'conf/base.config' @@ -324,8 +333,9 @@ manifest { doi = 'https://doi.org/10.5281/zenodo.1400710' } -// Load modules.config for DSL2 module specific options -includeConfig 'conf/modules.config' +// Workflow specific config +includeConfig "./subworkflows/local/prepare_genome/nextflow.config" +includeConfig './workflows/rnaseq/nextflow.config' // Function to ensure that resource requirements don't go beyond // a maximum limit diff --git a/subworkflows/local/align_star/nextflow.config b/subworkflows/local/align_star/nextflow.config index e69de29bb..4aa0852c2 100644 --- a/subworkflows/local/align_star/nextflow.config +++ b/subworkflows/local/align_star/nextflow.config @@ -0,0 +1,37 @@ +process { + withName: '.*:ALIGN_STAR:STAR_ALIGN|.*:ALIGN_STAR:STAR_ALIGN_IGENOMES' { + ext.args = { [ + '--quantMode TranscriptomeSAM', + '--twopassMode Basic', + '--outSAMtype BAM Unsorted', + '--readFilesCommand zcat', + '--runRNGseed 0', + '--outFilterMultimapNmax 20', + '--alignSJDBoverhangMin 1', + '--outSAMattributes NH HI AS NM MD', + '--quantTranscriptomeBan Singleend', + '--outSAMstrandField intronMotif', + params.save_unaligned ? '--outReadsUnmapped Fastx' : '', + params.extra_star_align_args ? params.extra_star_align_args.split("\\s(?=--)") : '' + ].flatten().unique(false).join(' ').trim() } + publishDir = [ + [ + path: { "${params.outdir}/${params.aligner}/log" }, + mode: params.publish_dir_mode, + pattern: '*.{out,tab}' + ], + [ + path: { params.save_align_intermeds ? "${params.outdir}/${params.aligner}" : params.outdir }, + mode: params.publish_dir_mode, + pattern: '*.bam', + saveAs: { params.save_align_intermeds ? it : null } + ], + [ + path: { params.save_unaligned ? "${params.outdir}/${params.aligner}/unmapped" : params.outdir }, + mode: params.publish_dir_mode, + pattern: '*.fastq.gz', + saveAs: { params.save_unaligned ? it : null } + ] + ] + } +} \ No newline at end of file diff --git a/subworkflows/local/prepare_genome/nextflow.config b/subworkflows/local/prepare_genome/nextflow.config index e69de29bb..98a4b64fd 100644 --- a/subworkflows/local/prepare_genome/nextflow.config +++ b/subworkflows/local/prepare_genome/nextflow.config @@ -0,0 +1,114 @@ +process { + withName: 'GUNZIP_.*|MAKE_TRANSCRIPTS_FASTA' { + publishDir = [ + path: { params.save_reference ? "${params.outdir}/genome" : params.outdir }, + mode: params.publish_dir_mode, + saveAs: { filename -> (filename != 'versions.yml' && params.save_reference) ? filename : null } + ] + } + + withName: 'UNTAR_.*' { + ext.args2 = '--no-same-owner' + } + + withName: 'UNTAR_.*|STAR_GENOMEGENERATE|STAR_GENOMEGENERATE_IGENOMES|HISAT2_BUILD' { + publishDir = [ + path: { params.save_reference ? "${params.outdir}/genome/index" : params.outdir }, + mode: params.publish_dir_mode, + saveAs: { filename -> (filename != 'versions.yml' && params.save_reference) ? filename : null } + ] + } + + withName: 'GFFREAD' { + ext.args = '--keep-exon-attrs -F -T' + publishDir = [ + path: { params.save_reference ? "${params.outdir}/genome" : params.outdir }, + mode: params.publish_dir_mode, + saveAs: { filename -> (filename != 'versions.yml' && params.save_reference) ? filename : null } + ] + } + + withName: 'HISAT2_EXTRACTSPLICESITES' { + publishDir = [ + path: { params.save_reference ? "${params.outdir}/genome/index" : params.outdir }, + mode: params.publish_dir_mode, + saveAs: { filename -> (filename != 'versions.yml' && params.save_reference) ? filename : null } + ] + } + + withName: 'SALMON_INDEX' { + ext.args = { [ + params.gencode ? '--gencode' : '', + params.pseudo_aligner_kmer_size ? "-k ${params.pseudo_aligner_kmer_size}": '' + ].join(' ').trim() } + publishDir = [ + path: { params.save_reference ? "${params.outdir}/genome/index" : params.outdir }, + mode: params.publish_dir_mode, + saveAs: { filename -> (filename != 'versions.yml' && params.save_reference) ? filename : null } + ] + } + + withName: 'KALLISTO_INDEX' { + ext.args = params.pseudo_aligner_kmer_size ? "-k ${params.pseudo_aligner_kmer_size}" : '' + publishDir = [ + path: { params.save_reference ? "${params.outdir}/genome/index" : params.outdir }, + mode: params.publish_dir_mode, + saveAs: { filename -> (filename != 'versions.yml' && params.save_reference) ? filename : null } + ] + } + + withName: 'RSEM_PREPAREREFERENCE_GENOME' { + ext.args = '--star' + publishDir = [ + path: { params.save_reference ? "${params.outdir}/genome/index" : params.outdir }, + mode: params.publish_dir_mode, + saveAs: { filename -> (filename != 'versions.yml' && params.save_reference) ? filename : null } + ] + } + + withName: 'GTF2BED' { + publishDir = [ + path: { params.save_reference ? "${params.outdir}/genome" : params.outdir }, + mode: params.publish_dir_mode, + saveAs: { filename -> (filename != 'versions.yml' && params.save_reference) ? filename : null } + ] + } + + withName: 'CAT_ADDITIONAL_FASTA|PREPROCESS_TRANSCRIPTS_FASTA_GENCODE' { + publishDir = [ + path: { params.save_reference ? "${params.outdir}/genome" : params.outdir }, + mode: params.publish_dir_mode, + saveAs: { filename -> (filename != 'versions.yml' && params.save_reference) ? filename : null } + ] + } + + withName: 'GTF_FILTER' { + ext.args = { params.skip_gtf_transcript_filter ?: '--skip_transcript_id_check' } + publishDir = [ + path: { params.save_reference ? "${params.outdir}/genome" : params.outdir }, + mode: params.publish_dir_mode, + saveAs: { filename -> (filename != 'versions.yml' && params.save_reference) ? filename : null } + ] + } + + withName: 'CUSTOM_GETCHROMSIZES' { + publishDir = [ + path: { params.save_reference ? "${params.outdir}/genome" : params.outdir }, + mode: params.publish_dir_mode, + saveAs: { filename -> (filename != 'versions.yml' && params.save_reference) ? filename : null } + ] + } +} + +if (!params.skip_bbsplit && params.bbsplit_fasta_list) { + process { + withName: 'PREPARE_GENOME:BBMAP_BBSPLIT' { + ext.args = 'build=1' + publishDir = [ + path: { params.save_reference ? "${params.outdir}/genome/index" : params.outdir }, + mode: params.publish_dir_mode, + saveAs: { filename -> (filename != 'versions.yml' && params.save_reference) ? filename : null } + ] + } + } +} diff --git a/subworkflows/local/quantify_rsem/nextflow.config b/subworkflows/local/quantify_rsem/nextflow.config index e69de29bb..55f679c2b 100644 --- a/subworkflows/local/quantify_rsem/nextflow.config +++ b/subworkflows/local/quantify_rsem/nextflow.config @@ -0,0 +1,37 @@ +process { + withName: '.*:QUANTIFY_RSEM:RSEM_CALCULATEEXPRESSION' { + ext.args = [ + '--star', + '--star-output-genome-bam', + '--star-gzipped-read-file', + '--estimate-rspd', + '--seed 1' + ].join(' ').trim() + publishDir = [ + [ + path: { "${params.outdir}/${params.aligner}" }, + mode: params.publish_dir_mode, + pattern: "*.{stat,results}" + ], + [ + path: { params.save_align_intermeds ? "${params.outdir}/${params.aligner}" : params.outdir }, + mode: params.publish_dir_mode, + pattern: "*.bam", + saveAs: { params.save_align_intermeds ? it : null } + ], + [ + path: { "${params.outdir}/${params.aligner}/log" }, + mode: params.publish_dir_mode, + pattern: "*.log" + ] + ] + } + + withName: '.*:QUANTIFY_RSEM:RSEM_MERGE_COUNTS' { + publishDir = [ + path: { "${params.outdir}/${params.aligner}" }, + mode: params.publish_dir_mode, + saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + ] + } +} \ No newline at end of file diff --git a/subworkflows/nf-core/bam_markduplicates_picard/nextflow.config b/subworkflows/nf-core/bam_markduplicates_picard/nextflow.config index e69de29bb..72b61fa2d 100644 --- a/subworkflows/nf-core/bam_markduplicates_picard/nextflow.config +++ b/subworkflows/nf-core/bam_markduplicates_picard/nextflow.config @@ -0,0 +1,37 @@ +process { + withName: '.*:BAM_MARKDUPLICATES_PICARD:PICARD_MARKDUPLICATES' { + ext.args = '--ASSUME_SORTED true --REMOVE_DUPLICATES false --VALIDATION_STRINGENCY LENIENT --TMP_DIR tmp' + ext.prefix = { "${meta.id}.markdup.sorted" } + publishDir = [ + [ + path: { "${params.outdir}/${params.aligner}/picard_metrics" }, + mode: params.publish_dir_mode, + pattern: '*metrics.txt' + ], + [ + path: { "${params.outdir}/${params.aligner}" }, + mode: params.publish_dir_mode, + pattern: '*.bam' + ] + ] + } + + withName: '.*:BAM_MARKDUPLICATES_PICARD:SAMTOOLS_INDEX' { + ext.args = { params.bam_csi_index ? '-c' : '' } + ext.prefix = { "${meta.id}.markdup.sorted" } + publishDir = [ + path: { "${params.outdir}/${params.aligner}" }, + mode: params.publish_dir_mode, + pattern: '*.{bai,csi}' + ] + } + + withName: '.*:BAM_MARKDUPLICATES_PICARD:BAM_STATS_SAMTOOLS:.*' { + ext.prefix = { "${meta.id}.markdup.sorted.bam" } + publishDir = [ + path: { "${params.outdir}/${params.aligner}/samtools_stats" }, + mode: params.publish_dir_mode, + pattern: '*.{stats,flagstat,idxstats}' + ] + } +} \ No newline at end of file diff --git a/subworkflows/nf-core/bam_rseqc/nextflow.config b/subworkflows/nf-core/bam_rseqc/nextflow.config index e69de29bb..0e56f102e 100644 --- a/subworkflows/nf-core/bam_rseqc/nextflow.config +++ b/subworkflows/nf-core/bam_rseqc/nextflow.config @@ -0,0 +1,119 @@ +process { + withName: '.*:BAM_RSEQC:RSEQC_BAMSTAT' { + publishDir = [ + path: { "${params.outdir}/${params.aligner}/rseqc/bam_stat" }, + mode: params.publish_dir_mode, + saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + ] + } + + withName: '.*:BAM_RSEQC:RSEQC_INFEREXPERIMENT' { + publishDir = [ + path: { "${params.outdir}/${params.aligner}/rseqc/infer_experiment" }, + mode: params.publish_dir_mode, + saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + ] + } + + withName: '.*:BAM_RSEQC:RSEQC_JUNCTIONANNOTATION' { + publishDir = [ + [ + path: { "${params.outdir}/${params.aligner}/rseqc/junction_annotation/pdf" }, + mode: params.publish_dir_mode, + pattern: '*.pdf' + ], + [ + path: { "${params.outdir}/${params.aligner}/rseqc/junction_annotation/bed" }, + mode: params.publish_dir_mode, + pattern: '*.bed' + ], + [ + path: { "${params.outdir}/${params.aligner}/rseqc/junction_annotation/xls" }, + mode: params.publish_dir_mode, + pattern: '*.xls' + ], + [ + path: { "${params.outdir}/${params.aligner}/rseqc/junction_annotation/log" }, + mode: params.publish_dir_mode, + pattern: '*.log' + ], + [ + path: { "${params.outdir}/${params.aligner}/rseqc/junction_annotation/rscript" }, + mode: params.publish_dir_mode, + pattern: '*.r' + ] + ] + } + + withName: '.*:BAM_RSEQC:RSEQC_JUNCTIONSATURATION' { + publishDir = [ + [ + path: { "${params.outdir}/${params.aligner}/rseqc/junction_saturation/pdf" }, + mode: params.publish_dir_mode, + pattern: '*.pdf' + ], + [ + path: { "${params.outdir}/${params.aligner}/rseqc/junction_saturation/rscript" }, + mode: params.publish_dir_mode, + pattern: '*.r' + ] + ] + } + + withName: '.*:BAM_RSEQC:RSEQC_READDUPLICATION' { + publishDir = [ + [ + path: { "${params.outdir}/${params.aligner}/rseqc/read_duplication/pdf" }, + mode: params.publish_dir_mode, + pattern: '*.pdf' + ], + [ + path: { "${params.outdir}/${params.aligner}/rseqc/read_duplication/xls" }, + mode: params.publish_dir_mode, + pattern: '*.xls' + ], + [ + path: { "${params.outdir}/${params.aligner}/rseqc/read_duplication/rscript" }, + mode: params.publish_dir_mode, + pattern: '*.r' + ] + ] + } + + withName: '.*:BAM_RSEQC:RSEQC_READDISTRIBUTION' { + publishDir = [ + path: { "${params.outdir}/${params.aligner}/rseqc/read_distribution" }, + mode: params.publish_dir_mode, + saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + ] + } + + withName: '.*:BAM_RSEQC:RSEQC_INNERDISTANCE' { + publishDir = [ + [ + path: { "${params.outdir}/${params.aligner}/rseqc/inner_distance/txt" }, + mode: params.publish_dir_mode, + pattern: '*.txt', + saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + ], + [ + path: { "${params.outdir}/${params.aligner}/rseqc/inner_distance/pdf" }, + mode: params.publish_dir_mode, + pattern: '*.pdf' + ], + [ + path: { "${params.outdir}/${params.aligner}/rseqc/inner_distance/rscript" }, + mode: params.publish_dir_mode, + pattern: '*.r' + ] + ] + } + + withName: '.*:BAM_RSEQC:RSEQC_TIN' { + publishDir = [ + path: { "${params.outdir}/${params.aligner}/rseqc/tin" }, + mode: params.publish_dir_mode, + saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + ] + } +} \ No newline at end of file diff --git a/subworkflows/nf-core/fastq_align_hisat2/nextflow.config b/subworkflows/nf-core/fastq_align_hisat2/nextflow.config index e69de29bb..2e1d4b7f6 100644 --- a/subworkflows/nf-core/fastq_align_hisat2/nextflow.config +++ b/subworkflows/nf-core/fastq_align_hisat2/nextflow.config @@ -0,0 +1,24 @@ +process { + withName: '.*:FASTQ_ALIGN_HISAT2:HISAT2_ALIGN' { + ext.args = '--met-stderr --new-summary --dta' + publishDir = [ + [ + path: { "${params.outdir}/${params.aligner}/log" }, + mode: params.publish_dir_mode, + pattern: '*.log' + ], + [ + path: { params.save_align_intermeds ? "${params.outdir}/${params.aligner}" : params.outdir }, + mode: params.publish_dir_mode, + pattern: '*.bam', + saveAs: { params.save_align_intermeds ? it : null } + ], + [ + path: { params.save_unaligned ? "${params.outdir}/${params.aligner}/unmapped" : params.outdir }, + mode: params.publish_dir_mode, + pattern: '*.fastq.gz', + saveAs: { params.save_unaligned ? it : null } + ] + ] + } +} \ No newline at end of file diff --git a/subworkflows/nf-core/fastq_fastqc_umitools_fastp/nextflow.config b/subworkflows/nf-core/fastq_fastqc_umitools_fastp/nextflow.config index e69de29bb..6bd31b449 100644 --- a/subworkflows/nf-core/fastq_fastqc_umitools_fastp/nextflow.config +++ b/subworkflows/nf-core/fastq_fastqc_umitools_fastp/nextflow.config @@ -0,0 +1,58 @@ +process { + withName: '.*:FASTQ_FASTQC_UMITOOLS_FASTP:UMITOOLS_EXTRACT' { + ext.args = { [ + params.umitools_extract_method ? "--extract-method=${params.umitools_extract_method}" : '', + params.umitools_bc_pattern ? "--bc-pattern='${params.umitools_bc_pattern}'" : '', + params.umitools_bc_pattern2 ? "--bc-pattern2='${params.umitools_bc_pattern2}'" : '', + params.umitools_umi_separator ? "--umi-separator='${params.umitools_umi_separator}'" : '' + ].join(' ').trim() } + publishDir = [ + [ + path: { "${params.outdir}/umitools" }, + mode: params.publish_dir_mode, + pattern: "*.log" + ], + [ + path: { params.save_umi_intermeds ? "${params.outdir}/umitools" : params.outdir }, + mode: params.publish_dir_mode, + pattern: "*.fastq.gz", + saveAs: { params.save_umi_intermeds ? it : null } + ] + ] + } + + withName: '.*:FASTQ_FASTQC_UMITOOLS_FASTP:FASTQC_RAW' { + ext.args = '--quiet' + } + + withName: '.*:FASTQ_FASTQC_UMITOOLS_FASTP:FASTQC_TRIM' { + ext.args = '--quiet' + publishDir = [ + path: { "${params.outdir}/${params.trimmer}/fastqc" }, + mode: params.publish_dir_mode, + saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + ] + } + + withName: '.*:FASTQ_FASTQC_UMITOOLS_FASTP:FASTP' { + ext.args = { params.extra_fastp_args ?: '' } + publishDir = [ + [ + path: { "${params.outdir}/${params.trimmer}" }, + mode: params.publish_dir_mode, + pattern: "*.{json,html}" + ], + [ + path: { "${params.outdir}/${params.trimmer}/log" }, + mode: params.publish_dir_mode, + pattern: "*.log" + ], + [ + path: { params.save_trimmed ? "${params.outdir}/${params.trimmer}" : params.outdir }, + mode: params.publish_dir_mode, + pattern: "*.fastq.gz", + saveAs: { params.save_trimmed ? it : null } + ] + ] + } +} \ No newline at end of file diff --git a/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/nextflow.config b/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/nextflow.config index e69de29bb..724d0e50f 100644 --- a/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/nextflow.config +++ b/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/nextflow.config @@ -0,0 +1,54 @@ +process { + withName: '.*:FASTQ_FASTQC_UMITOOLS_TRIMGALORE:UMITOOLS_EXTRACT' { + ext.args = { [ + params.umitools_extract_method ? "--extract-method=${params.umitools_extract_method}" : '', + params.umitools_bc_pattern ? "--bc-pattern='${params.umitools_bc_pattern}'" : '', + params.umitools_bc_pattern2 ? "--bc-pattern2='${params.umitools_bc_pattern2}'" : '', + params.umitools_umi_separator ? "--umi-separator='${params.umitools_umi_separator}'" : '' + ].join(' ').trim() } + publishDir = [ + [ + path: { "${params.outdir}/umitools" }, + mode: params.publish_dir_mode, + pattern: "*.log" + ], + [ + path: { params.save_umi_intermeds ? "${params.outdir}/umitools" : params.outdir }, + mode: params.publish_dir_mode, + pattern: "*.fastq.gz", + saveAs: { params.save_umi_intermeds ? it : null } + ] + ] + } + + withName: '.*:FASTQ_FASTQC_UMITOOLS_TRIMGALORE:FASTQC' { + ext.args = '--quiet' + } + + withName: '.*:FASTQ_FASTQC_UMITOOLS_TRIMGALORE:TRIMGALORE' { + ext.args = { + [ + "--fastqc_args '-t ${task.cpus}'", + params.extra_trimgalore_args ? params.extra_trimgalore_args.split("\\s(?=--)") : '' + ].flatten().unique(false).join(' ').trim() + } + publishDir = [ + [ + path: { "${params.outdir}/${params.trimmer}/fastqc" }, + mode: params.publish_dir_mode, + pattern: "*.{html,zip}" + ], + [ + path: { params.save_trimmed ? "${params.outdir}/${params.trimmer}" : params.outdir }, + mode: params.publish_dir_mode, + pattern: "*.fq.gz", + saveAs: { params.save_trimmed ? it : null } + ], + [ + path: { "${params.outdir}/${params.trimmer}" }, + mode: params.publish_dir_mode, + pattern: "*.txt" + ] + ] + } +} \ No newline at end of file diff --git a/subworkflows/nf-core/fastq_subsample_fq_salmon/nextflow.config b/subworkflows/nf-core/fastq_subsample_fq_salmon/nextflow.config index e69de29bb..5425935cd 100644 --- a/subworkflows/nf-core/fastq_subsample_fq_salmon/nextflow.config +++ b/subworkflows/nf-core/fastq_subsample_fq_salmon/nextflow.config @@ -0,0 +1,16 @@ +process { + withName: '.*:FASTQ_SUBSAMPLE_FQ_SALMON:FQ_SUBSAMPLE' { + ext.args = '--record-count 1000000 --seed 1' + ext.prefix = { "${meta.id}.subsampled" } + publishDir = [ + enabled: false + ] + } + + withName: '.*:FASTQ_SUBSAMPLE_FQ_SALMON:SALMON_QUANT' { + ext.args = '--skipQuant' + publishDir = [ + enabled: false + ] + } +} \ No newline at end of file diff --git a/workflows/rnaseq/main.nf b/workflows/rnaseq/main.nf index e19ccbbf0..fb9a7e979 100755 --- a/workflows/rnaseq/main.nf +++ b/workflows/rnaseq/main.nf @@ -20,8 +20,8 @@ include { UMITOOLS_PREPAREFORRSEM as UMITOOLS_PREPAREFORSALMON } from '../../mod // include { ALIGN_STAR } from '../../subworkflows/local/align_star' include { QUANTIFY_RSEM } from '../../subworkflows/local/quantify_rsem' -include { QUANTIFY_PSEUDO_ALIGNMENT as QUANTIFY_STAR_SALMON } from '../../subworkflows/local/quantify_pseudo' -include { QUANTIFY_PSEUDO_ALIGNMENT } from '../../subworkflows/local/quantify_pseudo' +include { QUANTIFY_PSEUDO_ALIGNMENT as QUANTIFY_STAR_SALMON } from '../../subworkflows/local/quantify_pseudo_alignment' +include { QUANTIFY_PSEUDO_ALIGNMENT } from '../../subworkflows/local/quantify_pseudo_alignment' include { multiqcTsvFromList } from '../../subworkflows/local/utils_nfcore_rnaseq_pipeline' include { getSalmonInferredStrandedness } from '../../subworkflows/local/utils_nfcore_rnaseq_pipeline' diff --git a/workflows/rnaseq/nextflow.config b/workflows/rnaseq/nextflow.config index e69de29bb..0c6d94136 100644 --- a/workflows/rnaseq/nextflow.config +++ b/workflows/rnaseq/nextflow.config @@ -0,0 +1,308 @@ +includeConfig "../../modules/local/bedtools_genomecov/nextflow.config" +includeConfig "../../modules/local/dupradar/nextflow.config" +includeConfig "../../modules/local/multiqc_custom_biotype/nextflow.config" +includeConfig "../../modules/nf-core/bbmap/bbsplit/nextflow.config" +includeConfig "../../modules/nf-core/cat/fastq/nextflow.config" +includeConfig "../../modules/nf-core/multiqc/nextflow.config" +includeConfig "../../modules/nf-core/preseq/lcextrap/nextflow.config" +includeConfig "../../modules/nf-core/qualimap/rnaseq/nextflow.config" +includeConfig "../../modules/nf-core/sortmerna/nextflow.config" +includeConfig "../../modules/nf-core/stringtie/stringtie/nextflow.config" +includeConfig "../../modules/nf-core/subread/featurecounts/nextflow.config" +includeConfig "../../subworkflows/local/align_star/nextflow.config" +includeConfig "../../subworkflows/local/quantify_rsem/nextflow.config" +includeConfig "../../subworkflows/nf-core/bam_markduplicates_picard/nextflow.config" +includeConfig "../../subworkflows/nf-core/bam_rseqc/nextflow.config" +includeConfig "../../subworkflows/nf-core/fastq_align_hisat2/nextflow.config" +includeConfig "../../subworkflows/nf-core/fastq_fastqc_umitools_fastp/nextflow.config" +includeConfig "../../subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/nextflow.config" +includeConfig "../../subworkflows/nf-core/fastq_subsample_fq_salmon/nextflow.config" + +process { + withName: 'NFCORE_RNASEQ:.*:BAM_SORT_STATS_SAMTOOLS:BAM_STATS_SAMTOOLS:.*' { + ext.prefix = { "${meta.id}.sorted.bam" } + publishDir = [ + path: { "${params.outdir}/${params.aligner}/samtools_stats" }, + mode: params.publish_dir_mode, + pattern: "*.{stats,flagstat,idxstats}" + ] + } + + withName: 'NFCORE_RNASEQ:.*:BAM_SORT_STATS_SAMTOOLS:SAMTOOLS_SORT' { + ext.prefix = { "${meta.id}.sorted" } + publishDir = [ + path: { ( ['star_salmon','hisat2'].contains(params.aligner) && + ( params.save_align_intermeds || ( !params.with_umi && params.skip_markduplicates ) ) + ) || params.save_align_intermeds || params.skip_markduplicates ? "${params.outdir}/${params.aligner}" : params.outdir }, + mode: params.publish_dir_mode, + pattern: "*.bam", + saveAs: { ( ['star_salmon','hisat2'].contains(params.aligner) && + ( params.save_align_intermeds || ( !params.with_umi && params.skip_markduplicates ) ) + ) || params.save_align_intermeds || params.skip_markduplicates ? it : null } + ] + } + + withName: 'NFCORE_RNASEQ:.*:BAM_SORT_STATS_SAMTOOLS:SAMTOOLS_INDEX' { + ext.args = { params.bam_csi_index ? '-c' : '' } + publishDir = [ + path: { ( ['star_salmon','hisat2'].contains(params.aligner) && + ( params.save_align_intermeds || ( !params.with_umi && params.skip_markduplicates ) ) + ) || params.save_align_intermeds || params.skip_markduplicates ? "${params.outdir}/${params.aligner}" : params.outdir }, + mode: params.publish_dir_mode, + pattern: "*.{bai,csi}", + saveAs: { ( ['star_salmon','hisat2'].contains(params.aligner) && + ( params.save_align_intermeds || ( !params.with_umi && params.skip_markduplicates ) ) + ) || params.save_align_intermeds || params.skip_markduplicates ? it : null } + ] + } + + withName: 'NFCORE_RNASEQ:BAM_SORT_STATS_SAMTOOLS:SAMTOOLS_SORT' { + ext.prefix = { "${meta.id}.transcriptome.sorted" } + publishDir = [ + path: { params.save_align_intermeds || params.save_umi_intermeds ? "${params.outdir}/${params.aligner}" : params.outdir }, + mode: params.publish_dir_mode, + pattern: '*.bam', + saveAs: { params.save_align_intermeds || params.save_umi_intermeds ? it : null } + ] + } + + withName: 'NFCORE_RNASEQ:BAM_SORT_STATS_SAMTOOLS:SAMTOOLS_INDEX' { + publishDir = [ + path: { params.save_align_intermeds || params.save_umi_intermeds ? "${params.outdir}/${params.aligner}" : params.outdir }, + mode: params.publish_dir_mode, + pattern: '*.bai', + saveAs: { params.save_align_intermeds || params.save_umi_intermeds ? it : null } + ] + } + + withName: 'NFCORE_RNASEQ:BAM_SORT_STATS_SAMTOOLS:BAM_STATS_SAMTOOLS:.*' { + ext.prefix = { "${meta.id}.transcriptome.sorted.bam" } + publishDir = [ + path: { params.save_align_intermeds || params.save_umi_intermeds ? "${params.outdir}/${params.aligner}/samtools_stats" : params.outdir }, + mode: params.publish_dir_mode, + pattern: '*.{stats,flagstat,idxstats}', + saveAs: { params.save_align_intermeds || params.save_umi_intermeds ? it : null } + ] + } + + withName: 'NFCORE_RNASEQ:SAMTOOLS_SORT' { + ext.args = '-n' + ext.prefix = { "${meta.id}.umi_dedup.transcriptome" } + publishDir = [ + path: { params.save_align_intermeds || params.save_umi_intermeds ? "${params.outdir}/${params.aligner}" : params.outdir }, + mode: params.publish_dir_mode, + pattern: '*.bam', + saveAs: { params.save_align_intermeds || params.save_umi_intermeds ? it : null } + ] + } + + withName: 'NFCORE_RNASEQ:UMITOOLS_PREPAREFORSALMON' { + ext.prefix = { "${meta.id}.umi_dedup.transcriptome.filtered" } + publishDir = [ + [ + path: { "${params.outdir}/${params.aligner}/umitools/log" }, + mode: params.publish_dir_mode, + pattern: '*.log' + ], + [ + path: { params.save_align_intermeds || params.save_umi_intermeds ? "${params.outdir}/${params.aligner}" : params.outdir }, + mode: params.publish_dir_mode, + pattern: '*.bam', + saveAs: { params.save_align_intermeds || params.save_umi_intermeds ? it : null } + ] + ] + } + + withName: '.*:BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS_GENOME:UMITOOLS_DEDUP' { + ext.args = { [ + meta.single_end ? '' : '--unpaired-reads=discard --chimeric-pairs=discard', + params.umitools_grouping_method ? "--method='${params.umitools_grouping_method}'" : '', + params.umitools_umi_separator ? "--umi-separator='${params.umitools_umi_separator}'" : '' + ].join(' ').trim() } + ext.prefix = { "${meta.id}.umi_dedup.sorted" } + publishDir = [ + [ + path: { "${params.outdir}/${params.aligner}/umitools" }, + mode: params.publish_dir_mode, + pattern: '*.tsv' + ], + [ + path: { params.save_align_intermeds || params.with_umi || params.save_umi_intermeds ? "${params.outdir}/${params.aligner}" : params.outdir }, + mode: params.publish_dir_mode, + pattern: '*.bam', + saveAs: { params.save_align_intermeds || params.with_umi || params.save_umi_intermeds ? it : null } + ] + ] + } + + withName: '.*:BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS_GENOME:SAMTOOLS_INDEX' { + ext.args = { params.bam_csi_index ? '-c' : '' } + ext.prefix = { "${meta.id}.umi_dedup.sorted" } + publishDir = [ + path: { params.save_align_intermeds || params.with_umi || params.save_umi_intermeds ? "${params.outdir}/${params.aligner}" : params.outdir }, + mode: params.publish_dir_mode, + pattern: '*.{bai,csi}', + saveAs: { params.save_align_intermeds || params.with_umi || params.save_umi_intermeds ? it : null } + ] + } + + withName: '.*:BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS_GENOME:BAM_STATS_SAMTOOLS:.*' { + ext.prefix = { "${meta.id}.umi_dedup.sorted.bam" } + publishDir = [ + path: { "${params.outdir}/${params.aligner}/samtools_stats" }, + mode: params.publish_dir_mode, + pattern: '*.{stats,flagstat,idxstats}' + ] + } + + withName: '.*:BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS_TRANSCRIPTOME:UMITOOLS_DEDUP' { + ext.args = { [ + meta.single_end ? '' : '--unpaired-reads=discard --chimeric-pairs=discard', + params.umitools_grouping_method ? "--method='${params.umitools_grouping_method}'" : '', + params.umitools_umi_separator ? "--umi-separator='${params.umitools_umi_separator}'" : '' + ].join(' ').trim() } + ext.prefix = { "${meta.id}.umi_dedup.transcriptome.sorted" } + publishDir = [ + [ + path: { "${params.outdir}/${params.aligner}/umitools" }, + mode: params.publish_dir_mode, + pattern: '*.tsv' + ], + [ + path: { params.save_align_intermeds || params.save_umi_intermeds ? "${params.outdir}/${params.aligner}" : params.outdir }, + mode: params.publish_dir_mode, + pattern: '*.bam', + saveAs: { params.save_align_intermeds || params.save_umi_intermeds ? it : null } + ] + ] + } + + withName: '.*:BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS_TRANSCRIPTOME:SAMTOOLS_INDEX' { + publishDir = [ + path: { params.save_align_intermeds || params.save_umi_intermeds ? "${params.outdir}/${params.aligner}" : params.outdir }, + mode: params.publish_dir_mode, + pattern: '*.bai', + saveAs: { params.save_align_intermeds || params.save_umi_intermeds ? it : null } + ] + } + + withName: '.*:BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS_TRANSCRIPTOME:BAM_STATS_SAMTOOLS:.*' { + ext.prefix = { "${meta.id}.umi_dedup.transcriptome.sorted.bam" } + publishDir = [ + path: { "${params.outdir}/${params.aligner}/samtools_stats" }, + mode: params.publish_dir_mode, + pattern: '*.{stats,flagstat,idxstats}' + ] + } + + withName: '.*:BEDGRAPH_BEDCLIP_BEDGRAPHTOBIGWIG_FORWARD:UCSC_BEDCLIP' { + ext.prefix = { "${meta.id}.clip.forward" } + publishDir = [ + enabled: false + ] + } + + withName: '.*:BEDGRAPH_BEDCLIP_BEDGRAPHTOBIGWIG_FORWARD:UCSC_BEDGRAPHTOBIGWIG' { + ext.prefix = { "${meta.id}.forward" } + publishDir = [ + path: { "${params.outdir}/${params.aligner}/bigwig" }, + mode: params.publish_dir_mode, + saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + ] + } + + withName: '.*:BEDGRAPH_BEDCLIP_BEDGRAPHTOBIGWIG_REVERSE:UCSC_BEDCLIP' { + ext.prefix = { "${meta.id}.clip.reverse" } + publishDir = [ + enabled: false + ] + } + + withName: '.*:BEDGRAPH_BEDCLIP_BEDGRAPHTOBIGWIG_REVERSE:UCSC_BEDGRAPHTOBIGWIG' { + ext.prefix = { "${meta.id}.reverse" } + publishDir = [ + path: { "${params.outdir}/${params.aligner}/bigwig" }, + mode: params.publish_dir_mode, + saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + ] + } + + withName: '.*:QUANTIFY_STAR_SALMON:SALMON_QUANT' { + ext.args = { params.extra_salmon_quant_args ?: '' } + publishDir = [ + path: { "${params.outdir}/${params.aligner}" }, + mode: params.publish_dir_mode, + saveAs: { filename -> filename.equals('versions.yml') || filename.endsWith('_meta_info.json') ? null : filename } + ] + } + + withName: '.*:QUANTIFY_STAR_SALMON:TX2GENE' { + publishDir = [ + path: { "${params.outdir}/${params.aligner}" }, + mode: params.publish_dir_mode, + saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + ] + } + + withName: '.*:QUANTIFY_STAR_SALMON:TXIMPORT' { + ext.prefix = { "${quant_type}.merged" } + publishDir = [ + path: { "${params.outdir}/${params.aligner}" }, + mode: params.publish_dir_mode, + saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + ] + } + + withName: '.*:QUANTIFY_STAR_SALMON:SE_.*' { + publishDir = [ + path: { "${params.outdir}/${params.aligner}" }, + mode: params.publish_dir_mode, + saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + ] + } + + withName: 'DESEQ2_QC_STAR_SALMON' { + ext.args = { [ + "--id_col 1", + "--sample_suffix ''", + "--count_col 3", + params.deseq2_vst ? '--vst TRUE' : '' + ].join(' ').trim() } + ext.args2 = 'star_salmon' + publishDir = [ + path: { "${params.outdir}/${params.aligner}/deseq2_qc" }, + mode: params.publish_dir_mode, + pattern: "*{RData,pca.vals.txt,plots.pdf,sample.dists.txt,size_factors,log}" + ] + } + + withName: 'DESEQ2_QC_RSEM' { + ext.args = { [ + "--id_col 1", + "--sample_suffix ''", + "--count_col 3", + params.deseq2_vst ? '--vst TRUE' : '' + ].join(' ').trim() } + ext.args2 = 'star_rsem' + publishDir = [ + path: { "${params.outdir}/${params.aligner}/deseq2_qc" }, + mode: params.publish_dir_mode, + pattern: "*{RData,pca.vals.txt,plots.pdf,sample.dists.txt,size_factors,log}" + ] + } + + withName: 'DESEQ2_QC_PSEUDO' { + ext.args = { [ + "--id_col 1", + "--sample_suffix ''", + "--count_col 3", + params.deseq2_vst ? '--vst TRUE' : '' + ].join(' ').trim() } + ext.args2 = { params.pseudo_aligner } + publishDir = [ + path: { "${params.outdir}/${params.pseudo_aligner}/deseq2_qc" }, + mode: params.publish_dir_mode, + pattern: "*{RData,pca.vals.txt,plots.pdf,sample.dists.txt,size_factors,log}" + ] + } +} \ No newline at end of file From 0a0b7705fcac2cbbd63abfdce86dc052a234b17f Mon Sep 17 00:00:00 2001 From: Harshil Patel Date: Mon, 22 Jan 2024 12:18:44 +0000 Subject: [PATCH 019/634] Delete empty nextflow.config files --- modules/local/cat_additional_fasta/nextflow.config | 0 modules/local/deseq2_qc/nextflow.config | 0 modules/local/gtf2bed/nextflow.config | 0 modules/local/gtf_filter/nextflow.config | 0 .../local/preprocess_transcripts_fasta_gencode/nextflow.config | 0 modules/local/rsem_merge_counts/nextflow.config | 0 modules/local/star_align_igenomes/nextflow.config | 0 modules/local/star_genomegenerate_igenomes/nextflow.config | 0 modules/local/summarizedexperiment/nextflow.config | 0 modules/local/tx2gene/nextflow.config | 0 modules/local/tximport/nextflow.config | 0 modules/local/umitools_prepareforrsem/nextflow.config | 0 modules/nf-core/custom/getchromsizes/nextflow.config | 0 modules/nf-core/fastp/nextflow.config | 0 modules/nf-core/fastqc/nextflow.config | 0 modules/nf-core/fq/subsample/nextflow.config | 0 modules/nf-core/gffread/nextflow.config | 0 modules/nf-core/gunzip/nextflow.config | 0 modules/nf-core/hisat2/align/nextflow.config | 0 modules/nf-core/hisat2/build/nextflow.config | 0 modules/nf-core/hisat2/extractsplicesites/nextflow.config | 0 modules/nf-core/kallisto/index/nextflow.config | 0 modules/nf-core/kallisto/quant/nextflow.config | 0 modules/nf-core/picard/markduplicates/nextflow.config | 0 modules/nf-core/rsem/calculateexpression/nextflow.config | 0 modules/nf-core/rsem/preparereference/nextflow.config | 0 modules/nf-core/rseqc/bamstat/nextflow.config | 0 modules/nf-core/rseqc/inferexperiment/nextflow.config | 0 modules/nf-core/rseqc/innerdistance/nextflow.config | 0 modules/nf-core/rseqc/junctionannotation/nextflow.config | 0 modules/nf-core/rseqc/junctionsaturation/nextflow.config | 0 modules/nf-core/rseqc/readdistribution/nextflow.config | 0 modules/nf-core/rseqc/readduplication/nextflow.config | 0 modules/nf-core/rseqc/tin/nextflow.config | 0 modules/nf-core/salmon/index/nextflow.config | 0 modules/nf-core/salmon/quant/nextflow.config | 0 modules/nf-core/samtools/flagstat/nextflow.config | 0 modules/nf-core/samtools/idxstats/nextflow.config | 0 modules/nf-core/samtools/index/nextflow.config | 0 modules/nf-core/samtools/sort/nextflow.config | 0 modules/nf-core/samtools/stats/nextflow.config | 0 modules/nf-core/star/align/nextflow.config | 0 modules/nf-core/star/genomegenerate/nextflow.config | 0 modules/nf-core/trimgalore/nextflow.config | 0 modules/nf-core/ucsc/bedclip/nextflow.config | 0 modules/nf-core/ucsc/bedgraphtobigwig/nextflow.config | 0 modules/nf-core/umitools/dedup/nextflow.config | 0 modules/nf-core/umitools/extract/nextflow.config | 0 modules/nf-core/untar/nextflow.config | 0 subworkflows/local/utils_nfcore_rnaseq_pipeline/nextflow.config | 0 .../nf-core/bam_dedup_stats_samtools_umitools/nextflow.config | 0 subworkflows/nf-core/bam_sort_stats_samtools/nextflow.config | 0 subworkflows/nf-core/bam_stats_samtools/nextflow.config | 0 .../nf-core/bedgraph_bedclip_bedgraphtobigwig/nextflow.config | 0 subworkflows/nf-core/utils_nextflow_pipeline/nextflow.config | 0 subworkflows/nf-core/utils_nfcore_pipeline/nextflow.config | 0 subworkflows/nf-core/utils_nfvalidation_plugin/nextflow.config | 0 57 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 modules/local/cat_additional_fasta/nextflow.config delete mode 100644 modules/local/deseq2_qc/nextflow.config delete mode 100644 modules/local/gtf2bed/nextflow.config delete mode 100644 modules/local/gtf_filter/nextflow.config delete mode 100644 modules/local/preprocess_transcripts_fasta_gencode/nextflow.config delete mode 100644 modules/local/rsem_merge_counts/nextflow.config delete mode 100644 modules/local/star_align_igenomes/nextflow.config delete mode 100644 modules/local/star_genomegenerate_igenomes/nextflow.config delete mode 100644 modules/local/summarizedexperiment/nextflow.config delete mode 100644 modules/local/tx2gene/nextflow.config delete mode 100644 modules/local/tximport/nextflow.config delete mode 100644 modules/local/umitools_prepareforrsem/nextflow.config delete mode 100644 modules/nf-core/custom/getchromsizes/nextflow.config delete mode 100644 modules/nf-core/fastp/nextflow.config delete mode 100644 modules/nf-core/fastqc/nextflow.config delete mode 100644 modules/nf-core/fq/subsample/nextflow.config delete mode 100644 modules/nf-core/gffread/nextflow.config delete mode 100644 modules/nf-core/gunzip/nextflow.config delete mode 100644 modules/nf-core/hisat2/align/nextflow.config delete mode 100644 modules/nf-core/hisat2/build/nextflow.config delete mode 100644 modules/nf-core/hisat2/extractsplicesites/nextflow.config delete mode 100644 modules/nf-core/kallisto/index/nextflow.config delete mode 100644 modules/nf-core/kallisto/quant/nextflow.config delete mode 100644 modules/nf-core/picard/markduplicates/nextflow.config delete mode 100644 modules/nf-core/rsem/calculateexpression/nextflow.config delete mode 100644 modules/nf-core/rsem/preparereference/nextflow.config delete mode 100644 modules/nf-core/rseqc/bamstat/nextflow.config delete mode 100644 modules/nf-core/rseqc/inferexperiment/nextflow.config delete mode 100644 modules/nf-core/rseqc/innerdistance/nextflow.config delete mode 100644 modules/nf-core/rseqc/junctionannotation/nextflow.config delete mode 100644 modules/nf-core/rseqc/junctionsaturation/nextflow.config delete mode 100644 modules/nf-core/rseqc/readdistribution/nextflow.config delete mode 100644 modules/nf-core/rseqc/readduplication/nextflow.config delete mode 100644 modules/nf-core/rseqc/tin/nextflow.config delete mode 100644 modules/nf-core/salmon/index/nextflow.config delete mode 100644 modules/nf-core/salmon/quant/nextflow.config delete mode 100644 modules/nf-core/samtools/flagstat/nextflow.config delete mode 100644 modules/nf-core/samtools/idxstats/nextflow.config delete mode 100644 modules/nf-core/samtools/index/nextflow.config delete mode 100644 modules/nf-core/samtools/sort/nextflow.config delete mode 100644 modules/nf-core/samtools/stats/nextflow.config delete mode 100644 modules/nf-core/star/align/nextflow.config delete mode 100644 modules/nf-core/star/genomegenerate/nextflow.config delete mode 100644 modules/nf-core/trimgalore/nextflow.config delete mode 100644 modules/nf-core/ucsc/bedclip/nextflow.config delete mode 100644 modules/nf-core/ucsc/bedgraphtobigwig/nextflow.config delete mode 100644 modules/nf-core/umitools/dedup/nextflow.config delete mode 100644 modules/nf-core/umitools/extract/nextflow.config delete mode 100644 modules/nf-core/untar/nextflow.config delete mode 100644 subworkflows/local/utils_nfcore_rnaseq_pipeline/nextflow.config delete mode 100644 subworkflows/nf-core/bam_dedup_stats_samtools_umitools/nextflow.config delete mode 100644 subworkflows/nf-core/bam_sort_stats_samtools/nextflow.config delete mode 100644 subworkflows/nf-core/bam_stats_samtools/nextflow.config delete mode 100644 subworkflows/nf-core/bedgraph_bedclip_bedgraphtobigwig/nextflow.config delete mode 100644 subworkflows/nf-core/utils_nextflow_pipeline/nextflow.config delete mode 100644 subworkflows/nf-core/utils_nfcore_pipeline/nextflow.config delete mode 100644 subworkflows/nf-core/utils_nfvalidation_plugin/nextflow.config diff --git a/modules/local/cat_additional_fasta/nextflow.config b/modules/local/cat_additional_fasta/nextflow.config deleted file mode 100644 index e69de29bb..000000000 diff --git a/modules/local/deseq2_qc/nextflow.config b/modules/local/deseq2_qc/nextflow.config deleted file mode 100644 index e69de29bb..000000000 diff --git a/modules/local/gtf2bed/nextflow.config b/modules/local/gtf2bed/nextflow.config deleted file mode 100644 index e69de29bb..000000000 diff --git a/modules/local/gtf_filter/nextflow.config b/modules/local/gtf_filter/nextflow.config deleted file mode 100644 index e69de29bb..000000000 diff --git a/modules/local/preprocess_transcripts_fasta_gencode/nextflow.config b/modules/local/preprocess_transcripts_fasta_gencode/nextflow.config deleted file mode 100644 index e69de29bb..000000000 diff --git a/modules/local/rsem_merge_counts/nextflow.config b/modules/local/rsem_merge_counts/nextflow.config deleted file mode 100644 index e69de29bb..000000000 diff --git a/modules/local/star_align_igenomes/nextflow.config b/modules/local/star_align_igenomes/nextflow.config deleted file mode 100644 index e69de29bb..000000000 diff --git a/modules/local/star_genomegenerate_igenomes/nextflow.config b/modules/local/star_genomegenerate_igenomes/nextflow.config deleted file mode 100644 index e69de29bb..000000000 diff --git a/modules/local/summarizedexperiment/nextflow.config b/modules/local/summarizedexperiment/nextflow.config deleted file mode 100644 index e69de29bb..000000000 diff --git a/modules/local/tx2gene/nextflow.config b/modules/local/tx2gene/nextflow.config deleted file mode 100644 index e69de29bb..000000000 diff --git a/modules/local/tximport/nextflow.config b/modules/local/tximport/nextflow.config deleted file mode 100644 index e69de29bb..000000000 diff --git a/modules/local/umitools_prepareforrsem/nextflow.config b/modules/local/umitools_prepareforrsem/nextflow.config deleted file mode 100644 index e69de29bb..000000000 diff --git a/modules/nf-core/custom/getchromsizes/nextflow.config b/modules/nf-core/custom/getchromsizes/nextflow.config deleted file mode 100644 index e69de29bb..000000000 diff --git a/modules/nf-core/fastp/nextflow.config b/modules/nf-core/fastp/nextflow.config deleted file mode 100644 index e69de29bb..000000000 diff --git a/modules/nf-core/fastqc/nextflow.config b/modules/nf-core/fastqc/nextflow.config deleted file mode 100644 index e69de29bb..000000000 diff --git a/modules/nf-core/fq/subsample/nextflow.config b/modules/nf-core/fq/subsample/nextflow.config deleted file mode 100644 index e69de29bb..000000000 diff --git a/modules/nf-core/gffread/nextflow.config b/modules/nf-core/gffread/nextflow.config deleted file mode 100644 index e69de29bb..000000000 diff --git a/modules/nf-core/gunzip/nextflow.config b/modules/nf-core/gunzip/nextflow.config deleted file mode 100644 index e69de29bb..000000000 diff --git a/modules/nf-core/hisat2/align/nextflow.config b/modules/nf-core/hisat2/align/nextflow.config deleted file mode 100644 index e69de29bb..000000000 diff --git a/modules/nf-core/hisat2/build/nextflow.config b/modules/nf-core/hisat2/build/nextflow.config deleted file mode 100644 index e69de29bb..000000000 diff --git a/modules/nf-core/hisat2/extractsplicesites/nextflow.config b/modules/nf-core/hisat2/extractsplicesites/nextflow.config deleted file mode 100644 index e69de29bb..000000000 diff --git a/modules/nf-core/kallisto/index/nextflow.config b/modules/nf-core/kallisto/index/nextflow.config deleted file mode 100644 index e69de29bb..000000000 diff --git a/modules/nf-core/kallisto/quant/nextflow.config b/modules/nf-core/kallisto/quant/nextflow.config deleted file mode 100644 index e69de29bb..000000000 diff --git a/modules/nf-core/picard/markduplicates/nextflow.config b/modules/nf-core/picard/markduplicates/nextflow.config deleted file mode 100644 index e69de29bb..000000000 diff --git a/modules/nf-core/rsem/calculateexpression/nextflow.config b/modules/nf-core/rsem/calculateexpression/nextflow.config deleted file mode 100644 index e69de29bb..000000000 diff --git a/modules/nf-core/rsem/preparereference/nextflow.config b/modules/nf-core/rsem/preparereference/nextflow.config deleted file mode 100644 index e69de29bb..000000000 diff --git a/modules/nf-core/rseqc/bamstat/nextflow.config b/modules/nf-core/rseqc/bamstat/nextflow.config deleted file mode 100644 index e69de29bb..000000000 diff --git a/modules/nf-core/rseqc/inferexperiment/nextflow.config b/modules/nf-core/rseqc/inferexperiment/nextflow.config deleted file mode 100644 index e69de29bb..000000000 diff --git a/modules/nf-core/rseqc/innerdistance/nextflow.config b/modules/nf-core/rseqc/innerdistance/nextflow.config deleted file mode 100644 index e69de29bb..000000000 diff --git a/modules/nf-core/rseqc/junctionannotation/nextflow.config b/modules/nf-core/rseqc/junctionannotation/nextflow.config deleted file mode 100644 index e69de29bb..000000000 diff --git a/modules/nf-core/rseqc/junctionsaturation/nextflow.config b/modules/nf-core/rseqc/junctionsaturation/nextflow.config deleted file mode 100644 index e69de29bb..000000000 diff --git a/modules/nf-core/rseqc/readdistribution/nextflow.config b/modules/nf-core/rseqc/readdistribution/nextflow.config deleted file mode 100644 index e69de29bb..000000000 diff --git a/modules/nf-core/rseqc/readduplication/nextflow.config b/modules/nf-core/rseqc/readduplication/nextflow.config deleted file mode 100644 index e69de29bb..000000000 diff --git a/modules/nf-core/rseqc/tin/nextflow.config b/modules/nf-core/rseqc/tin/nextflow.config deleted file mode 100644 index e69de29bb..000000000 diff --git a/modules/nf-core/salmon/index/nextflow.config b/modules/nf-core/salmon/index/nextflow.config deleted file mode 100644 index e69de29bb..000000000 diff --git a/modules/nf-core/salmon/quant/nextflow.config b/modules/nf-core/salmon/quant/nextflow.config deleted file mode 100644 index e69de29bb..000000000 diff --git a/modules/nf-core/samtools/flagstat/nextflow.config b/modules/nf-core/samtools/flagstat/nextflow.config deleted file mode 100644 index e69de29bb..000000000 diff --git a/modules/nf-core/samtools/idxstats/nextflow.config b/modules/nf-core/samtools/idxstats/nextflow.config deleted file mode 100644 index e69de29bb..000000000 diff --git a/modules/nf-core/samtools/index/nextflow.config b/modules/nf-core/samtools/index/nextflow.config deleted file mode 100644 index e69de29bb..000000000 diff --git a/modules/nf-core/samtools/sort/nextflow.config b/modules/nf-core/samtools/sort/nextflow.config deleted file mode 100644 index e69de29bb..000000000 diff --git a/modules/nf-core/samtools/stats/nextflow.config b/modules/nf-core/samtools/stats/nextflow.config deleted file mode 100644 index e69de29bb..000000000 diff --git a/modules/nf-core/star/align/nextflow.config b/modules/nf-core/star/align/nextflow.config deleted file mode 100644 index e69de29bb..000000000 diff --git a/modules/nf-core/star/genomegenerate/nextflow.config b/modules/nf-core/star/genomegenerate/nextflow.config deleted file mode 100644 index e69de29bb..000000000 diff --git a/modules/nf-core/trimgalore/nextflow.config b/modules/nf-core/trimgalore/nextflow.config deleted file mode 100644 index e69de29bb..000000000 diff --git a/modules/nf-core/ucsc/bedclip/nextflow.config b/modules/nf-core/ucsc/bedclip/nextflow.config deleted file mode 100644 index e69de29bb..000000000 diff --git a/modules/nf-core/ucsc/bedgraphtobigwig/nextflow.config b/modules/nf-core/ucsc/bedgraphtobigwig/nextflow.config deleted file mode 100644 index e69de29bb..000000000 diff --git a/modules/nf-core/umitools/dedup/nextflow.config b/modules/nf-core/umitools/dedup/nextflow.config deleted file mode 100644 index e69de29bb..000000000 diff --git a/modules/nf-core/umitools/extract/nextflow.config b/modules/nf-core/umitools/extract/nextflow.config deleted file mode 100644 index e69de29bb..000000000 diff --git a/modules/nf-core/untar/nextflow.config b/modules/nf-core/untar/nextflow.config deleted file mode 100644 index e69de29bb..000000000 diff --git a/subworkflows/local/utils_nfcore_rnaseq_pipeline/nextflow.config b/subworkflows/local/utils_nfcore_rnaseq_pipeline/nextflow.config deleted file mode 100644 index e69de29bb..000000000 diff --git a/subworkflows/nf-core/bam_dedup_stats_samtools_umitools/nextflow.config b/subworkflows/nf-core/bam_dedup_stats_samtools_umitools/nextflow.config deleted file mode 100644 index e69de29bb..000000000 diff --git a/subworkflows/nf-core/bam_sort_stats_samtools/nextflow.config b/subworkflows/nf-core/bam_sort_stats_samtools/nextflow.config deleted file mode 100644 index e69de29bb..000000000 diff --git a/subworkflows/nf-core/bam_stats_samtools/nextflow.config b/subworkflows/nf-core/bam_stats_samtools/nextflow.config deleted file mode 100644 index e69de29bb..000000000 diff --git a/subworkflows/nf-core/bedgraph_bedclip_bedgraphtobigwig/nextflow.config b/subworkflows/nf-core/bedgraph_bedclip_bedgraphtobigwig/nextflow.config deleted file mode 100644 index e69de29bb..000000000 diff --git a/subworkflows/nf-core/utils_nextflow_pipeline/nextflow.config b/subworkflows/nf-core/utils_nextflow_pipeline/nextflow.config deleted file mode 100644 index e69de29bb..000000000 diff --git a/subworkflows/nf-core/utils_nfcore_pipeline/nextflow.config b/subworkflows/nf-core/utils_nfcore_pipeline/nextflow.config deleted file mode 100644 index e69de29bb..000000000 diff --git a/subworkflows/nf-core/utils_nfvalidation_plugin/nextflow.config b/subworkflows/nf-core/utils_nfvalidation_plugin/nextflow.config deleted file mode 100644 index e69de29bb..000000000 From 5240672e44b3535bfacc18fc3a77135ee60567dc Mon Sep 17 00:00:00 2001 From: nf-core-bot Date: Mon, 29 Jan 2024 15:13:24 +0000 Subject: [PATCH 020/634] Template update for nf-core/tools version 2.12 --- .editorconfig | 8 + .github/workflows/awsfulltest.yml | 2 +- .github/workflows/awstest.yml | 2 +- .github/workflows/branch.yml | 2 +- .github/workflows/clean-up.yml | 2 +- .github/workflows/download_pipeline.yml | 67 +++++ .github/workflows/fix-linting.yml | 72 +++-- .github/workflows/linting.yml | 61 +--- .github/workflows/linting_comment.yml | 2 +- .github/workflows/release-announcements.yml | 4 +- .gitpod.yml | 1 + .pre-commit-config.yaml | 7 +- CHANGELOG.md | 2 +- README.md | 8 +- assets/email_template.html | 2 +- assets/email_template.txt | 2 +- assets/nf-core-rnaseq_logo_light.png | Bin 71212 -> 74201 bytes docs/images/nf-core-rnaseq_logo_dark.png | Bin 71322 -> 26500 bytes docs/images/nf-core-rnaseq_logo_light.png | Bin 71212 -> 22915 bytes lib/WorkflowMain.groovy | 16 +- lib/nfcore_external_java_deps.jar | Bin 2291171 -> 0 bytes main.nf | 2 +- modules.json | 6 +- .../dumpsoftwareversions/environment.yml | 2 +- .../custom/dumpsoftwareversions/main.nf | 4 +- .../dumpsoftwareversions/tests/main.nf.test | 7 +- .../tests/main.nf.test.snap | 50 ++-- modules/nf-core/fastqc/tests/main.nf.test | 265 ++++++++++++------ .../nf-core/fastqc/tests/main.nf.test.snap | 12 +- modules/nf-core/multiqc/environment.yml | 2 +- modules/nf-core/multiqc/main.nf | 6 +- modules/nf-core/multiqc/meta.yml | 1 - modules/nf-core/multiqc/tests/main.nf.test | 48 +++- .../nf-core/multiqc/tests/main.nf.test.snap | 21 ++ nextflow.config | 5 +- pyproject.toml | 17 +- workflows/rnaseq.nf | 7 + 37 files changed, 492 insertions(+), 223 deletions(-) create mode 100644 .github/workflows/download_pipeline.yml delete mode 100644 lib/nfcore_external_java_deps.jar create mode 100644 modules/nf-core/multiqc/tests/main.nf.test.snap diff --git a/.editorconfig b/.editorconfig index b6b319077..9b990088a 100644 --- a/.editorconfig +++ b/.editorconfig @@ -22,3 +22,11 @@ indent_size = unset [/assets/email*] indent_size = unset + +# ignore Readme +[README.md] +indent_style = unset + +# ignore python +[*.{py}] +indent_style = unset diff --git a/.github/workflows/awsfulltest.yml b/.github/workflows/awsfulltest.yml index fdf7c0446..9075bac51 100644 --- a/.github/workflows/awsfulltest.yml +++ b/.github/workflows/awsfulltest.yml @@ -31,7 +31,7 @@ jobs: } profiles: test_full - - uses: actions/upload-artifact@v3 + - uses: actions/upload-artifact@v4 with: name: Tower debug log file path: | diff --git a/.github/workflows/awstest.yml b/.github/workflows/awstest.yml index ceab65e65..f0f09d0b3 100644 --- a/.github/workflows/awstest.yml +++ b/.github/workflows/awstest.yml @@ -25,7 +25,7 @@ jobs: } profiles: test - - uses: actions/upload-artifact@v3 + - uses: actions/upload-artifact@v4 with: name: Tower debug log file path: | diff --git a/.github/workflows/branch.yml b/.github/workflows/branch.yml index d694b7b67..141e3d6ee 100644 --- a/.github/workflows/branch.yml +++ b/.github/workflows/branch.yml @@ -19,7 +19,7 @@ jobs: # NOTE - this doesn't currently work if the PR is coming from a fork, due to limitations in GitHub actions secrets - name: Post PR comment if: failure() - uses: mshick/add-pr-comment@v1 + uses: mshick/add-pr-comment@v2 with: message: | ## This PR is against the `master` branch :x: diff --git a/.github/workflows/clean-up.yml b/.github/workflows/clean-up.yml index 694e90ecb..e37cfda5c 100644 --- a/.github/workflows/clean-up.yml +++ b/.github/workflows/clean-up.yml @@ -10,7 +10,7 @@ jobs: issues: write pull-requests: write steps: - - uses: actions/stale@v7 + - uses: actions/stale@v9 with: stale-issue-message: "This issue has been tagged as awaiting-changes or awaiting-feedback by an nf-core contributor. Remove stale label or add a comment otherwise this issue will be closed in 20 days." stale-pr-message: "This PR has been tagged as awaiting-changes or awaiting-feedback by an nf-core contributor. Remove stale label or add a comment if it is still useful." diff --git a/.github/workflows/download_pipeline.yml b/.github/workflows/download_pipeline.yml new file mode 100644 index 000000000..8611458a7 --- /dev/null +++ b/.github/workflows/download_pipeline.yml @@ -0,0 +1,67 @@ +name: Test successful pipeline download with 'nf-core download' + +# Run the workflow when: +# - dispatched manually +# - when a PR is opened or reopened to master branch +# - the head branch of the pull request is updated, i.e. if fixes for a release are pushed last minute to dev. +on: + workflow_dispatch: + pull_request: + types: + - opened + branches: + - master + pull_request_target: + branches: + - master + +env: + NXF_ANSI_LOG: false + +jobs: + download: + runs-on: ubuntu-latest + steps: + - name: Install Nextflow + uses: nf-core/setup-nextflow@v1 + + - uses: actions/setup-python@v5 + with: + python-version: "3.11" + architecture: "x64" + - uses: eWaterCycle/setup-singularity@v7 + with: + singularity-version: 3.8.3 + + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install git+https://github.com/nf-core/tools.git@dev + + - name: Get the repository name and current branch set as environment variable + run: | + echo "REPO_LOWERCASE=${GITHUB_REPOSITORY,,}" >> ${GITHUB_ENV} + echo "REPOTITLE_LOWERCASE=$(basename ${GITHUB_REPOSITORY,,})" >> ${GITHUB_ENV} + echo "REPO_BRANCH=${GITHUB_REF#refs/heads/}" >> ${GITHUB_ENV} + + - name: Download the pipeline + env: + NXF_SINGULARITY_CACHEDIR: ./ + run: | + nf-core 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-cache-utilisation 'amend' \ + --download-configuration + + - name: Inspect download + run: tree ./${{ env.REPOTITLE_LOWERCASE }} + + - name: Run the downloaded pipeline + env: + NXF_SINGULARITY_CACHEDIR: ./ + NXF_SINGULARITY_HOME_MOUNT: true + run: nextflow run ./${{ env.REPOTITLE_LOWERCASE }}/$( sed 's/\W/_/g' <<< ${{ env.REPO_BRANCH }}) -stub -profile test,singularity --outdir ./results diff --git a/.github/workflows/fix-linting.yml b/.github/workflows/fix-linting.yml index 619e58a6e..e6802cfaf 100644 --- a/.github/workflows/fix-linting.yml +++ b/.github/workflows/fix-linting.yml @@ -4,7 +4,7 @@ on: types: [created] jobs: - deploy: + fix-linting: # Only run if comment is on a PR with the main repo, and if it contains the magic keywords if: > contains(github.event.comment.html_url, '/pull/') && @@ -13,10 +13,17 @@ jobs: runs-on: ubuntu-latest steps: # Use the @nf-core-bot token to check out so we can push later - - uses: actions/checkout@v4 + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4 with: token: ${{ secrets.nf_core_bot_auth_token }} + # indication that the linting is being fixed + - name: React on comment + uses: peter-evans/create-or-update-comment@71345be0265236311c031f5c7866368bd1eff043 # v4 + with: + comment-id: ${{ github.event.comment.id }} + reactions: eyes + # Action runs on the issue comment, so we don't get the PR by default # Use the gh cli to check out the PR - name: Checkout Pull Request @@ -24,32 +31,59 @@ jobs: env: GITHUB_TOKEN: ${{ secrets.nf_core_bot_auth_token }} - - uses: actions/setup-node@v4 + # Install and run pre-commit + - uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # v5 + with: + python-version: 3.11 - - name: Install Prettier - run: npm install -g prettier @prettier/plugin-php + - name: Install pre-commit + run: pip install pre-commit - # Check that we actually need to fix something - - name: Run 'prettier --check' - id: prettier_status - run: | - if prettier --check ${GITHUB_WORKSPACE}; then - echo "result=pass" >> $GITHUB_OUTPUT - else - echo "result=fail" >> $GITHUB_OUTPUT - fi + - name: Run pre-commit + id: pre-commit + run: pre-commit run --all-files + continue-on-error: true - - name: Run 'prettier --write' - if: steps.prettier_status.outputs.result == 'fail' - run: prettier --write ${GITHUB_WORKSPACE} + # indication that the linting has finished + - name: react if linting finished succesfully + if: steps.pre-commit.outcome == 'success' + uses: peter-evans/create-or-update-comment@71345be0265236311c031f5c7866368bd1eff043 # v4 + with: + comment-id: ${{ github.event.comment.id }} + reactions: "+1" - name: Commit & push changes - if: steps.prettier_status.outputs.result == 'fail' + id: commit-and-push + if: steps.pre-commit.outcome == 'failure' run: | git config user.email "core@nf-co.re" git config user.name "nf-core-bot" git config push.default upstream git add . git status - git commit -m "[automated] Fix linting with Prettier" + git commit -m "[automated] Fix code linting" git push + + - name: react if linting errors were fixed + id: react-if-fixed + if: steps.commit-and-push.outcome == 'success' + uses: peter-evans/create-or-update-comment@71345be0265236311c031f5c7866368bd1eff043 # v4 + with: + comment-id: ${{ github.event.comment.id }} + reactions: hooray + + - name: react if linting errors were not fixed + if: steps.commit-and-push.outcome == 'failure' + uses: peter-evans/create-or-update-comment@71345be0265236311c031f5c7866368bd1eff043 # v4 + with: + comment-id: ${{ github.event.comment.id }} + reactions: confused + + - name: react if linting errors were not fixed + if: steps.commit-and-push.outcome == 'failure' + uses: peter-evans/create-or-update-comment@71345be0265236311c031f5c7866368bd1eff043 # v4 + with: + issue-number: ${{ github.event.issue.number }} + body: | + @${{ github.actor }} I tried to fix the linting errors, but it didn't work. Please fix them manually. + See [CI log](https://github.com/nf-core/rnaseq/actions/runs/${{ github.run_id }}) for more details. diff --git a/.github/workflows/linting.yml b/.github/workflows/linting.yml index 905c58e44..81cd098e9 100644 --- a/.github/workflows/linting.yml +++ b/.github/workflows/linting.yml @@ -11,61 +11,22 @@ on: types: [published] jobs: - EditorConfig: + pre-commit: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - - uses: actions/setup-node@v4 - - - name: Install editorconfig-checker - run: npm install -g editorconfig-checker - - - name: Run ECLint check - run: editorconfig-checker -exclude README.md $(find .* -type f | grep -v '.git\|.py\|.md\|json\|yml\|yaml\|html\|css\|work\|.nextflow\|build\|nf_core.egg-info\|log.txt\|Makefile') - - Prettier: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - - uses: actions/setup-node@v4 - - - name: Install Prettier - run: npm install -g prettier - - - name: Run Prettier --check - run: prettier --check ${GITHUB_WORKSPACE} - - PythonBlack: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - - name: Check code lints with Black - uses: psf/black@stable - - # If the above check failed, post a comment on the PR explaining the failure - - name: Post PR comment - if: failure() - uses: mshick/add-pr-comment@v1 + - name: Set up Python 3.11 + uses: actions/setup-python@v5 with: - message: | - ## Python linting (`black`) is failing - - To keep the code consistent with lots of contributors, we run automated code consistency checks. - To fix this CI test, please run: - - * Install [`black`](https://black.readthedocs.io/en/stable/): `pip install black` - * Fix formatting errors in your pipeline: `black .` - - Once you push these changes the test should pass, and you can hide this comment :+1: + python-version: 3.11 + cache: "pip" - We highly recommend setting up Black in your code editor so that this formatting is done automatically on save. Ask about it on Slack for help! + - name: Install pre-commit + run: pip install pre-commit - Thanks again for your contribution! - repo-token: ${{ secrets.GITHUB_TOKEN }} - allow-repeats: false + - name: Run pre-commit + run: pre-commit run --all-files nf-core: runs-on: ubuntu-latest @@ -76,7 +37,7 @@ jobs: - name: Install Nextflow uses: nf-core/setup-nextflow@v1 - - uses: actions/setup-python@v4 + - uses: actions/setup-python@v5 with: python-version: "3.11" architecture: "x64" @@ -99,7 +60,7 @@ jobs: - name: Upload linting log file artifact if: ${{ always() }} - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: linting-logs path: | diff --git a/.github/workflows/linting_comment.yml b/.github/workflows/linting_comment.yml index 0bbcd30f2..147bcd10c 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@v2 + uses: dawidd6/action-download-artifact@v3 with: workflow: linting.yml workflow_conclusion: completed diff --git a/.github/workflows/release-announcements.yml b/.github/workflows/release-announcements.yml index 6ad339277..21ac3f068 100644 --- a/.github/workflows/release-announcements.yml +++ b/.github/workflows/release-announcements.yml @@ -24,7 +24,7 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/setup-python@v4 + - uses: actions/setup-python@v5 with: python-version: "3.10" - name: Install dependencies @@ -56,7 +56,7 @@ jobs: bsky-post: runs-on: ubuntu-latest steps: - - uses: zentered/bluesky-post-action@v0.0.2 + - uses: zentered/bluesky-post-action@v0.1.0 with: post: | Pipeline release! ${{ github.repository }} v${{ github.event.release.tag_name }} - ${{ github.event.release.name }}! diff --git a/.gitpod.yml b/.gitpod.yml index acf726953..363d5b1d4 100644 --- a/.gitpod.yml +++ b/.gitpod.yml @@ -7,6 +7,7 @@ tasks: - name: unset JAVA_TOOL_OPTIONS command: | unset JAVA_TOOL_OPTIONS + vscode: extensions: # based on nf-core.nf-core-extensionpack - codezombiech.gitignore # Language support for .gitignore files diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 0c31cdb99..af57081f6 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,5 +1,10 @@ repos: - repo: https://github.com/pre-commit/mirrors-prettier - rev: "v2.7.1" + rev: "v3.1.0" hooks: - id: prettier + - repo: https://github.com/editorconfig-checker/editorconfig-checker.python + rev: "2.7.3" + hooks: + - id: editorconfig-checker + alias: ec diff --git a/CHANGELOG.md b/CHANGELOG.md index 4b300c08c..ab4540c69 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). -## v3.14.0dev - [date] +## v3.15.0dev - [date] Initial release of nf-core/rnaseq, created with the [nf-core](https://nf-co.re/) template. diff --git a/README.md b/README.md index 99ceefe19..cdf26ef31 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,9 @@ -# ![nf-core/rnaseq](docs/images/nf-core-rnaseq_logo_light.png#gh-light-mode-only) ![nf-core/rnaseq](docs/images/nf-core-rnaseq_logo_dark.png#gh-dark-mode-only) - +

    + + + nf-core/rnaseq + +

    [![GitHub Actions CI Status](https://github.com/nf-core/rnaseq/workflows/nf-core%20CI/badge.svg)](https://github.com/nf-core/rnaseq/actions?query=workflow%3A%22nf-core+CI%22) [![GitHub Actions Linting Status](https://github.com/nf-core/rnaseq/workflows/nf-core%20linting/badge.svg)](https://github.com/nf-core/rnaseq/actions?query=workflow%3A%22nf-core+linting%22)[![AWS CI](https://img.shields.io/badge/CI%20tests-full%20size-FF9900?labelColor=000000&logo=Amazon%20AWS)](https://nf-co.re/rnaseq/results)[![Cite with Zenodo](http://img.shields.io/badge/DOI-10.5281/zenodo.XXXXXXX-1073c8?labelColor=000000)](https://doi.org/10.5281/zenodo.XXXXXXX) diff --git a/assets/email_template.html b/assets/email_template.html index 6375bd6f0..478c9e37b 100644 --- a/assets/email_template.html +++ b/assets/email_template.html @@ -12,7 +12,7 @@ -

    nf-core/rnaseq v${version}

    +

    nf-core/rnaseq ${version}

    Run Name: $runName

    <% if (!success){ diff --git a/assets/email_template.txt b/assets/email_template.txt index c1da7f60f..99782eda4 100644 --- a/assets/email_template.txt +++ b/assets/email_template.txt @@ -4,7 +4,7 @@ |\\ | |__ __ / ` / \\ |__) |__ } { | \\| | \\__, \\__/ | \\ |___ \\`-._,-`-, `._,._,' - nf-core/rnaseq v${version} + nf-core/rnaseq ${version} ---------------------------------------------------- Run Name: $runName diff --git a/assets/nf-core-rnaseq_logo_light.png b/assets/nf-core-rnaseq_logo_light.png index b0c99cb8354ec707496bfaf4bc859218b06de75e..87c1d5f1d8b65eb4cf91ae03d52cef1f3bf4be74 100644 GIT binary patch literal 74201 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�ev`Q}H7y#R1zKkC5n?0_OP7^FqWWeXhX0t0pNK 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

    )bNtXB<>| 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%0D6Aha9ZZvy3Owj0R@{kHIA1_W(q z4cub$!_rc(sJ~F)B3e6iLcjrRvPV}76Ez;B(jxHQ$MuxJO9R0Jd3uw8A1n~*9o_jj zu;x=$PXC=GOJ&ALTCbu%0`*%r{5T~HsSemFF;Z^ys5+rBkV0wxr)fKo1AVz27Fw&8 z3>s>9w=Q65-IagvI70e14JomP*P16TVrML25M!p?NCYo)AlI6azR#Lz6Ai-IzRR?( z4+agr(5xfTKs3peZ)u(gG`169WT^In|8Lr19pT}kL>j}s9dTEo6RwyHaHvC1OYW2# z%*U}0mMYktxyYpzJK?o1WDm5dST8Xb7-TZ*Fozk!zyOgU^EXcjhbS$xX8R-oOK`l`(pIO-}*r1to^ zyoS-;qLpAVg-A06KDKWvRf+zz>Etb}FEkQp z&?Y-#gxOsu4=7RV0hlPJlHrA+N4ipRxEG7x^<#oju*?AKN`CLM5^zU0)YNWpAHD~x8*;i6hn7?O762%8|>0#8?9E6Zt>!AKdA zGYia($+%%IWyVaiW^zK8+03y7#BpphZPSFYRU!>SV|ANol+nKd#!}=Uzy=fDz?4N^ zEC+mc_VGiM3avQpCWMv-RE8u9JFPOr?X-Se-xpeuI*jk@O}>l_rzk*F%*P4d?F(uykl(@_0BwS z6pW!{!@xhsi-R0_&0HD5rUE{y&g#GO<4W$CNT$Kd|J=h?1315cZK6>Oz>u&9k`S`b zyMeMcABH>fV*dW){AUNYJRp_6LMoX#IgcYICch6Y_Fnl18f;Yx zZ!8)drgi4?f$MfP`Ja>9*+b#Us!~SVDVGxhw#nwrtndJg9Q4!0$bY85{+05E$_zP+ zRbWx}UFa^pqcL(rA9oRSQsoC5?po8V&nXf_(+C))8b_%Cu!@zX(+04`BA|{~c8(`< zWN$wZZ1Sgp;{8opoA{5c{&%EK+rhGE*?TVz+jdDQ0mQ>tfRZ>wVdqG#qxJFCTq4sH z(ru@Dd5r*BZ3{amio+5zkg%vu%2Hy|_Z;Gm441DJu2 zGyTqdaGf-WVKaTz=%m}(X&Xr%K`NC)^N<+VGtb_6n*~dM&!CO!r$Nq|K+FTN zkm}6tCe5@y2{6P`6w8g>V`s79xJiTg7yTn!!#0Ou278Dc zTz3&N&k{RHnv6!M^ zvX$722lC#wnVH{0a)SLw)Dt(tvS3EvgR3n5PucK&S5JcAMD`00tRTBO{zU= zGD@cO=DpEAluw7n#RteL?Vb9*8&gTg5dxO^0(y6)iS|(NuZ2v%Awe}A8(Opq#Hh>E zjX3Lqbn#o_&`icn)4d(GR3kR4t{weB#H)`l8D{h;V=0%*nUnOZt=8uF3_OyPqa&6*S$#_aDav))vWx_L{XZo4t&A?M)M{HCA{jL4V#eKVT>y!);0mq3p$g(rU zYaG91{)Vs>BR5)u>(*BXHW~&P6hq4F*@aIn9f@yve3lbgCPf@rl$?1yTKWo7U>R8^ z)HfQtaQAhur)$TI{|Ke?<_5NMl_C!CXlN7PUM#Lb-_^!e@Rl6p?i7O@*AzSgW4|5c z*bGb;_LJ{{-~s3&#x#IbQ>MonJw4YImVEL&A}!o3r;u@={^l;1yOrhyY0QGlk25@} zyuzG}IItHYYg+y}jI~u_A?MV}q`+*SfYhlRlZrN1flxg!8*GjB+#FpS&zN=|!repv zS)k;&OP%yN56kjUW&y#}(9JnFP!Y^+65ISzbbT*eTWo`QYB5W3Ej`JuhHf@kH>hHtQR0qEVF9#DPEwf{yE)^XDor9t|be-j5 zR}k$hRA3}H>Xj~ly4dVBu&P}4!}Hw3g>TQ!oQ|6&g`O)9eI`n)nN?`i3koSPe&snM zBO*1eguip{%!isPU!|{(zwVGSNf!+O^iN&aM&BVrv92!$^Ov491V9d2Vy$qLiZ+RL zwuPGQ!Xn|mZIe#qTKxEt#?4z;^-J@wp!D7Qj6GMaEH{Ex^|<|I?Se*b-W1xptEU@i zuNb+24jCBs++5o8W&lrNZrv)}~WAi?GMJxqw4 zFwx!C^G<)h9tjPluh^Q|KFmWcHzoYz)?l_E-}3F6l4oCy>?{kfV>R3YI>K?M-fZ}t z{v0OP9;j-AogQ8Tntjot)-vi)gp`_gQCLYKg{b$@e;0s_q+tgi!n9ghT}%gMaFP%A zZCpPpQUC7yHrKucN-!Gbq@P4QJ+@qJEFB4w{1(bdWb2Cr?2Rw4{&R zsCjizvWlqIK&nSsPb+2IdOPT=9pK0SFByPfcTf5aHK8*j(AJ?U*d}Y`;ioRer<4I& zw-*hkh<%`~r7Hs*U(}rH8@=y5gbZuHg2;N?f9@y#;=C}rS%TkjAHUvw3lg$mTqs>p znyaeycM)0?P@*`V5ejczVJYe`Vc>}6xatics7*S)rs!9uypo}^G`g8?m>&ayx6z$1 z2MstI0|4@cocQ>8OK_#&5;xO~0r1fvS4w)6&dPm1^o z^>H~q4}`8rdGoybVhMYf6-lCebov`kMd$wiyzS}8?D5?XuLPRKeWFPl3xD}?H~PAiQ6%hn@v@V8KAY(HV!$9_J!iunqAQSDHPvJudfRO zm{f48*xPy!llb%Wg5E;b#scpKj&J2^3Dzr!{&QkV_0k>>HN|EJ;0rzaVx|+NN+4L!I;HFE3-Q~t zN1bpM=+^~polMa~OG-kJ`jV%Oa08d_R*anZGDh8o_uQXbc?Yj-kFFKn=ekaiyUudw zYx>2QlR_8X>^rfg)e@6stb5^mkwwuni<kp<7fK8 zz!ltfsQ z&^SfLEdev9yni1b-IB3V;$7HpqxA(T}lT@Sl zJ?aH~C#ew^NxjOC3L6d1R((~BnlwLL`l6ERY0ssl@?;@0R`!t?#utlc`!Sr;;>F|c z!KJlg!5lN_A%e$Y7BHUQS;MlfGtVZTJ8;cj;LV;^B#NmtA}EV=Ja_J(wl4!8L&@7! z;kr1{xx-<3mZM`IO~{Q$Ba6+Mxx11x%U%p)LW`OWy$x2X1n}lXL(I+`N@KFwZ0g;` z!^^Ce+bhrT9}0J8v&qP$wBMFps-=rTwPwHk6e+%{8Xk0)^th1~6>fPG`%1B{st*NG z{%DfwAMe7?%^forD>^qwP{H^zWZ!9Pq~G^Brx5eaX|Ij8^;Vg-Sk5v&Fm0)fpdFU_ zWVkU*iB(ZtZ)hTnli66B#fr2vUsaD66)W*wt-@cs^2{m5JZp7!bb8f9G3#^8NYm{tF zva2;UHP;(*Ppu2s?l-&6uf0qfBn0;LY&z}b6R(l)u0JH;TF|aUXlOLu)wJrzGrKPP zsD?4<6icdhE(1FB4Z4!WPtKn>%1gO$G3JZMjn)C7?SrYjneASOW=ov*hVCjo&XStj z5#~^th7Q`hmPIsdVS4wT<5&S_b`FD4`>~YH>N_KCGk#kIpEC?&8otJi=9c~bnJTzJ z*xpi~aP65J$j(_X>S_ye8{N&UcSq5uMqpHz2#kPvcSEi`6kEoSt=tC_V|qv0ME zRSR<;sump4-Tl}%cluwfMo&fZZMttn2~S52$4<3a4W$;92nDCtMzi()=>2+VUTm^i zRLXyBTjhi^BJV{)V%ee9i`gx`wuiMfH66Ul{;IPKi%yLd8>aY?afCFdy#t!4B}e_M zp+2PCZU0?sn`F%%S(&rPW+llku+>AQvMi|*^)DRMOE)Ho6!D6F`cr4vkp-Mid+|(G zXjG9!)(k!QtL!6E+Xume?+p{D&+y%EQJ&xu+K|2>@bYi{1Qx*x>S$DVLF0;kNwW-| zQ#EN80Y#NUl#ed556zbNLE{A3Lcvtw5N(c0ToY_GZ+oHf8*3jr- zcU4l)mL?W8KNi|x8S=q}d7y8;Fm-#n#y6_g$X;)id;AQq)SH>~UpLRso3o#p;k36V5~xWZ^(2qW?@8c7WTDZOgiqOFQnod`K`efz37_H-_&v49Pd6i3pNh`yDHpGheV}_%N^fX{5?$1PJNZID@!vt+qzugC zd(z!@N!s<1mNP4&z@6p2%9uv_9DuW2O*w_k9J2jFJWj);tAS)5CsEQ z{CVt+=-!g0N9+nzN{va7TSI6bI$MeEB2S3s`lSbg+TZZrSD zE&9B~ghcDP!E@n(+P`9q@jD|t#Isi)I^kYvbL$m~vgx3##m zEDld4d2 z1Y-gxyn@1cNuM;0__;VMg7P1Cd=O~4tCCLIawGOeSF8F~S*&G0)h$N!=<@&u&)!?pAt4_o|Sx(@D9E zjlU*83X%7aiy(6a@3$~bob?8-KSaJqxge;QJa`kcyYu<#HP^WTJp>pTCtrYd?p;u?6^%gp67f|dYyfOYcozXpEHPY zbvvi9@vWT5IVz1c+69U%Ph57W7&M$?Kx;TP3 zSLNN$%#KkOCy(S!7ME7CuS(ZR-0SPOEgO0xqJigNpnY5Vvn|MJ^YdGjUjGA8n>=(K zh;3=8;a{MJ=XoFC=H_OF2-8tdFy%Gw&BV$+GGMOe;I~V@pjCT?oK2W$MQ(jN8Y!#f zg#pd+qH=8E(8MXBjXGYP8m7vx%8%K;ohGP*6r4XAIbFyhEIjI^l|6|=;7g#qorUst zz>>MLvi%n7XY^rD9*irUYZo9Le>5~?yfmbD`8U@%lrJXg%LZ&f&^9K$gAt9MdPJ5+vaH}}Nz~x*qUd@M~AQk8a zv~LKG_f3QerlW&$yq|jDL{EcDUWm@EgoSF}5IkrI-)W*UHE!V7mFQPhOyBd3e}2$G z7vOb`ODozuoXh-WYA(Zpay~!1nlGpYJ$+I?gDU5$hHbQS?fTSW#*u*aKu*hmmG@Dd zoTMkUPi$rTPhq>3GcK;(oH_7p$8IGZ! zV}sUx>L8NN*)2)CLO4px-4spl%$wn*$tSw|2evyKaxFrC+v)0OD39v8AyU+p)Hc3A+*FwTUz((r zy=uRe!bzp~r_<9s>H6%*Qyo00i6nV|qYK#vtBP2xQ3W&xCfp_c^ z?uS*vr^gs|hL9fR$C0rY2>1+i4j=d8aVRgKs}dpc_$O3_m}_H$-!XdcA?E4ZMb=d|O-!W9v2ho*so2kFFm;5A1U(<41cEwqu zE$lh)FGrHWmamLEO>266Zey~r=n`xTt63stL{|>qBdHFpeqS)L9Q8OtAL0)#G3`59 z{K`o#VTD18x&Kl~4R_4nSzlOW^5=ZvksRMUA;UsIGxa+PKmmOt*vr#k!(eR>F|tVb z6wVMzmvl4vLOqr<2&FfaN)tf^%~ze?1+4@UJ{yf1zZ2T{rWakY_wt;hZkmWHlWh{AB{YzV$u%)6=Sg3)dA{hoY{1FO(<0%S>xeM zf$SqeXf{ND>wvJIkuRf;A{Eua3`Dg7jc@S8?9}>^ESTW>Mrt zhOdPxDq#vGhrS(Va_><~geaDc59(U8QYGALF`RrMUQ015)6|mC(MNX(+TD+Z8A3PW zJNW$v<{yn2NwXDX7ZKK6`z%C09QyW+um&5l5eemYvHr0)Ml#oZZ;YX@>?|MrG$1xJ zA|f&enzLP7+_Ax$7jb^OXXD>a3fC=|kV(C}RXtjfqIyFEbX!MagB>oFZmiLWc7Hu{ zb&BZRBiPgxYbJhsf!EAEVN$@3U7Q=1t7Y7N+_RNXa=wM-G~Sj=Kxem5Z-UI^o(+15 zPh=`aNWIhP%8&+1;q?=lZG0K+?M@b0X~{6?M~w|nMz1Jc`0rf+qAmw&?3LRlHS0-} z*z2n~GL!X!bfoMnT^TumKYA+t+Tt2#%O>lhn0t*waRThtE_re8D;Un6S;*&FtrS7-Ivw^yPPd zPY1~s99g+oIB+BLLBL#FT#DBh%@20p8(z$4;KKX-#}kB2nT}*X44zc`Nk{z+rJNax zfUjA2S0XSlIjo!3hetsNZ7UVr8#nAaP= zsqSZ`MtMj4y(&SL14Gw8^XhExQ|ts>z7fXM=-~V^y}9y7L<_5Hm9?WKOE``e;P8p)u7u9F`S?rr#=fpotmm%zCwWxfq%4b|wLUV3V)Zd_PlS3g%2 zBmb{JmF=MQMwR~A$U6O9Sp{;}d1l3-PRAxJe~^M@R0s&ZI3U7#}Ly{HD4m?Y} zSzvDP;395SfFhP6t8@;zQbDN5(YQEu4Fr`EnEhr(lDYr7z}QXXR}4k^3L8b=+*r)y8T`efi$l($KF%Sl0_WHgoFyDoc1bUq%20cGWVFiUwz}v!9AJ{ngDFnTnDYl+L&STi2toA z!t~ary;>T&GP1>Tx8DnIM9k)gl5tdG*Z^Zle*3M2SR_0n3UI>hj$*Z(TVf}VK$1_` z;+9Adb`$cD9sfjwW1zj1e6_wOfz7vh^ z{SvjQV)i?;7NEv`P=;o1Z>2pjm)A~Z3B-!d9VB$N*n4mztn!DlJCrna_R|gM$3Ep&J01k_LQ%0MnwU z4kNIR$Xf9A81MZt{-R+s>FAu;k3zyH^@ex}CEtf7$7{sfkf>Va`)mfF0#ZwwCqRMb zoQassTYG>Pd}^@h?+a6mJKVS2z~>5Kg<%2}Yl|CT`32(>$Cqy34Jc-}l6_{ccVCR8 zdV{F8SzcumQTs$;oBD%+gjytLRh^}Bli2~w_NGBl_ngCQ7~l1^d2fm6FPlX1#B9EV z$z)`zJ%$q)j+^_0F3yjA_L}V@u=b?;gmm>K>m07k*K!1W1ujTP=6owM1+m3{`Gf}3 zpgVcNV#-)NkIuwAeC*?X@*xNq^ULGZJ9Pc*l`q?GE$6bxuz>4tl1B*gzJ}*f?W0$H zGS}^)2%F45l4bDy_$5PPu8N^1xrD!bwK_XGd7h7XYmPa@Ik-r`Z;G;bXXJ0^&DPtp zB@8v^ssr36b@YUc--zXEI#>nU!erB}BIJUm=EM4`T56tQ{<$}k^yC{fQX6C=mq1t2 zSX;KYel+ZAWNM?I^UHQ?Z<%NC5|x)RmsU@%Mg%`bj*?d72yl>!{Nj}a5mlKLBHtvZ zxqfaby~Qznlm~$7CRn`qj-l+y04iv_Z^p*^lgCrzIi*q?d{Ro)fbyr8MThhtCdLHT zFzOwN_;-1bJ^Ko;Zh8|O9o`}khOpP#lDE{%<&14OSFiAZca9Oy`-wy~$ z#s1BfU=rAV7NCMKwq!0;a3Sl^d^nZ>=2%0}Zwb6H1qY@8JJXt+MDI9MqAf9Opkpr4=mWIQn|}}GpnI-VvsCpK34Rq-FnIWl{e-{ zAJ_es0GegBxs2F7@Ps}(E0sw5T}QG*eear+u7;rIXnjvJcX+an94UB!jT+|7!n#xT zZnyAokH?P?${<9VZ#qzWl5Pr|e{;QgS91Yq*VMMK6^n4L7&U<3=~*$O z1>QcH>JQz{k-$OxeviGQjyV0D9>MnIaz_AN<#a?{l=bgG;`w)n{boO>ri5&~z=fN5 zAF@2`w+-}jF(>`-eUsEKSGfduo0P%FY?S+;0t~GiOE<_rdLy@TdAMU<>Ec$|$Sb*? z5k`+J13eyibHr?VIVF5@rUB^p2-B(wa^@uK(()q)X0)$8-qeZkYx13mu3r?of9jTd+_IE0(% zR=d zOW^$dpxmTLx)q@)!$7*h*mDP*ZvPd*_5)ViPfn~;?mvjr#d{i&-NbE{BMAdrxsG~j zvp*iqQtU>48dzdQPgr}$BVU3F}LH=gUUkdJYeHIs;IkBZGuxhzIX?}HrgME|d zVeB9xsF(MRrY4il13~W0#|mc5TyROpfh% z`#V40h}e+JaM30b-hi6;OS&7jt9g4^o*ZK*FiEN7P@D5NT>bfoXVBheb1m};Gjsp( z%ICKjX3fEmS2$^BEZ34iWfVeR1RAy|TE-%ep7&s!=XWo`gX+g-?cg#wU&&b+_;;aF zNN?zBu14dQr?ZN-%Y}szXl34@pg*O1cerD&;FRTjmwi-sYf#6J*NqDuY!ju-V|BD4 z1a0$ba5^RA-TI#6sF2Vw;Ljd2P}qFzid@39u>JI3vX4x`eVM7UkN6nyADT~VbrZB~ zaT{hFk?GXP;uUF&Q9W1A+A(XI(JG;GU++oGSJ@x4l>cgf1jCG>Wz)sr`(Tac!!h<- z_#$X~>qW-$iyEh8F~h*ZY!L>ik&5>$jtKA`D0`axtPGPF~`6RK~}Y!+h23d9noJ#FO~eCb0uRU6-p zq)41QAX3%)T;-g#BqA4KeRgZrY&&_`#_-ODH_eap`m%kF21gJmy54>FTk6jVAX!qE zDA_09(Ya5s59p!%(YxAuPY}d0;EBfC(t#<-g65V~@xRBdgoK#3_V9-Ms<_e?tm*KR zCeq9O=>Ull7q=@@sKg*{{{r&~gz!yfcb-`nG6(rpi2g2?+FL4X+3cP1l3RPAkTo@K zO9Y-+<0%&3@F55I=_Y&kZ;4UUW`~e6K_4owwK; z&&o=SI(Ol&%Wb}^`o%j4KBhOcn|x)0zu>V1CAx4rZKKqgVGSoKqY2UBOmaxJXGBs& z@B@exh-w~_otHP4R3|9$K40vJuaU^Rh{a=mll{|{I%9;;U zwX9G2n{a7$S{SUurmu2o6;jl7w=h)yeC0szgipYCjek9XT+hBIowX5sNt2D%XJ~Cv zA5-4Z`rA8@{=c>1$YR;xupdh)zVhor9z`s^xV%Jyungj~Q_KQJ4@W~kx5?OM2CDB) zI*WSr3n`mkKA@kHkO=b_5bfMCEi3xAMcxsI{1{6gQ}a7QWAc=`hx)$=y7l#-B^9_~ zMi8Vhga6epcy4QTV)kQ@c+vdf4!V=B%Kr96W3>BlaMc}-kr+amlI#*2BROG|i?3I55TtQ) zW%s}Bn$UU3d&UVaUMRf??#zsstqV2|7dsey+a#7%5wxL*?~yU~idLfhiiwY~*Pe6Y zL<7}Lp*61rT;t<&1)*_t4G2yP=C1IH{I!{&lS>I(%PecS#Z-q>SPmc+PcK;1eEMNA zZkw%=b(NX??r7xt{ERi6P&XPhyZ-E1YDGSz=GSHtSc#qd0tQtfs3UMVA3TqZQ0?-W zCo19DcFyHD_TF#NCyT=|utxRoi8?}lappOU_BY|K@vtM9*W zcs*_wQCj=;uI;WhPj+!ks!ph+q@_cwhoIz9lBusH#s<#%O(u@g)=ZauWV0veh+nw( z5n(r=3C`RMDI%(hqyD@T|Ngk5%p@Z-qa-9`U9&PPWJIht~eS3T%`U+?oe=XsvzdCu!~0ZzFw<|LdY zG}^=-nwp*VLs21bZ~s=EY%V9MAPJ!MrS)vGX9<^aTt$zwVL(?QU13>^YPU%wW%c9J zUHz&B)#UJaC8S}6a{*H}roJU0Cv`w32}c`VIrg5DgIjnDU+WW4zoD*Ip)z}Q%Uv9T z_hu8PLhMb&-Q{{4;j4UB9@9RUTPIcK3!eUM!3q}vV`9ZD6LDr%Jtw+3o%yvhXGrmY zJL%Pgug++k`9O6A)}>+KTXU;IBXK>EY-26E+;*%_n>aY)hb0bTvop`Mv(kDlP=39j z9^*;2&4d%3GsrO0kpG>tcC4VvMfgu8hTt2YAd1IFl>IdeG^bCytLhFYeGdm(y(6%_ zL{djNLV}0FLVvT*+p*-QWRR0)dwV{ye+)ieC&kUEl8I;l@D+k&vW0UQw*PBCNdSq7 z0)1~P^I$JFBs``5{b(n`*B|Q7lIx^OR`@=LXL-jbGyisyr4HI( zIkeSlmA8fxzy^45s;^6XaC0_eb80~`0i`pWHQc=-A(fWUc`7)=>Xso%Ot#8b(?8RO z=xD#noI);3?J4BU{;^#m;pIT)9j)g{K}@fV2eVH;)0R1&sTFnTScXMvJ+J9Ykv$zH zuO72~cMX+@LLr<-bK?Cdt}^cj;*UK{tVk>AHPWq{WQF`PV>dWOcw;#&{(vtLCW%j#t zJhLj+#9iQcCOfPS3b-O-tz-VwZxKJn8Fts98-B(41uBA~G88}g$l<*sq(b4HFdB)w zHn}0|geEhkq{w_hzjXM*S#!$IeMq(X&m=uwiYc0}*;Q-#?%dH#{N5;LbPg-woCV}1 zY6r+>MNE-wQKpk2@MG=Ys#dqas01mC8`psOB`4iWe#9iSAPvyebRkurV@dJ8CshKj zToT~hp1X-65*tk!%)NXSA1Ei~CG{an2Dg+1x$T){5Afdc!z8|o!;2_;AI@vR`{C$fmI z8sP~kYb<|4DaQZ!*O}C_;SU0Bh?aSTUxmZO(RG~LJll)%==f241w*mpnbl1L1AV4g zN@s5JHjNhhyVIAQg)=3+CKXLc9)Tjj+xT7`^6xXE6`HjtOF5OSm93Bvn#@KXvSR}K zy5rmhHH+;T)f6L}^BP(>h5y$^6e$rgkO% z^c4O03;FCFt?k!41}9YjK|glfTd=k}Wo&cu49dx>RI_QTRT*Uz$?~j=5qEK(?K+xY z;fIO#zF)tzx7%kk3odR3gT}9&$pi<6{DyWs2=ujnHiIq*3Hhti<5yLVaH9D-lYuO{ z#1eZp9Bcs1u2Cws6Ky2(k938aZbDnO3L*DnG-V4Bc{liS=_#on;29wwCeY)?*u)Q2 zpToN@A~{10z$rV3_3r|y%*04S;SsXX4pruPi>Igvt|}Yo{nZl0T*38EX4Ro2CS&r;CG>Ak ze9duSN83ZaM}tS+o~}=dhmSsU$8oVMw_lp7*G1IzqzY@`!va^T<}-Gu2D~obXMh4d zUDcr9ZZ19~ycDUi(}fhK%cTOxw13}cdmclc@2ZD6byVMqngwx4Uaweitwz1Bf=^<9 z)};YhNqvj>um`D|AY+FLMbYr2(GVDSNFET0OSn()skOZ@nsfYv<-Mgp5GtiK_hxkF ziLRF%m->cOG9?UhWo}fW$Ty6<__#9*G@qxj61?;@Gzz#yeZd_Hp*fY5vo*S+429gB z#hmb{KLyXO)q|fy_`mE5gWlhRMkAKJcF0pz|6C0u=djw55#90{TdxY(Jo}Ajr7Ep4 z)79&7Qo`P8Gk?QBLFQG0uFLBl*rMhUlpL*Sr$_vBymbTWW@CpeEoT#6R_!r1-IdDL z$6v(to6>-+rXIXF$(<*PawnBjA40Ue3qxfp;K*;Px#c=OQ5s4!ZD&0&8>~t0EA3^UlOy@KrXO0dI z1jz>88ET%~B3j+$uUhO{QXzMx5S8DNN<}4yzghyY8kBGsW8oSj@1Coe@VFRy-!kM?1WEBcjU4cZqMs?BZIrI2m2WIJjb@DRgfyq zt2C@6s#SNg-B&?)`}8?(kGAsZi9HUx$G)AJ*c~IzH%iM~=1yV~-MpJ!$RY{n@)r3L zCY0$k3WQ76g6n$Fsb_`8BGn4lydc>d5I2)cr@Wx}T!@iC(hty>Or0+fBUK9-USe`wP&@J zQqi@mHu!~da@v}OiFScK9P0f-PU!U5fhIQ@#45~343>gtAXwTO%ht}}bRgvJA%+bOSmg_@eV zTD(Jxb=v(`2K@;c6TitF&*`s%5X@1pSJyn?;kE65PUsR@|GF-%NeL_@$j_g=1B51NH@_-xy>}5rN$4$J z`fr#nL@iR{+E&>U%LQ_RfYL(n&0kZ%Yvl756{X%n4+cZidw;mOgCGX0sY4ca*(tQxz#d!ayH1V--}sjN&-QDA2GX zI~0^w#3WEhKDK;1;)mzg&JPeg-lS6IAIPjYp{ll+eArK{@{=jIF{XY!1==yEpgQ6C zlLa2MFb}ompJDhLx==v7pytHeQkt%(s)5UQA+%;2K*3L1Oi9VX7tab9;YdoS2=wNc~m?1lG-xI$f{`D1SHw{V3eHxqt%2-G9#17}85{9%b} zE)VNgs$zVR^WSPrIY}QBe(y8`ceB-gmtNwNc`tM{+`O;3G-o{Q?)y2pAm=rf}{A%R1aKg2;}hEsP& z%9pPX`yHtF_=SFB>~Tk?32Pj@Gg%30+wu@%juU10@E!S~W@JnE7JrLuTJN&vd5Tby z?rrH|WMEVQAU2nkRqx}kofY|r@Q=$xN%_~AJqroJty6(A3wXeuo-rr-YL|DONL<9e z$FFWY)Cr0NTUd1>SUWBgI#h~&+4z|;#VD4W0c&C$%Ql0J3}$O3;mZ{AX4$xyE}`Mu z7kk>O-*v~PF69-ByY3KiNk%osJx9{}`PRG2r5i7-Vz$;v=u%o`@ih;6n+G;!Ytr|; zI@giMcsl+3-i&<|U~g}gd;lInnrxTytx5IC<-Ca#UbEWJliLu$m*!3z<<&XIL=~2G z+)H=dqK`tXg5Y@lJ<6=wBL)@7JZ$E!lLz>e@(}oaBiMPjyza-(HF3c&xI%YKm zeFIDr`1?lg2|n@Ljk)Jgf*<}4r(oRYPhKyNtvSob?Xv~#fa{y6c_Idb;ORU~7kYYY zBG_4yns2Zqe8DwWJb{Y z7XpuH0aw0E5qsES4f!jYd=b z-Eq?!Qf8l@O?dF_m0|}-C$l)~^=K~YdlR32m6kz7YL>ll-7YkesS*QGv6JA9we-cdlN$=Kj1?!@<^Cf9{x%-!wj!4eB zb%WKr`y|?QpLAK)R%IhgW2lGf$m_=1C%sB#=%2gqn-M)(HJV4so-_((E@6dI!U9G} z;P?oab25}Gd#v+B6F`Jf;afRd*j(eQnrJ?8{O2{qJkcE>e~fdhpT+@6E$6sl(r5R{ z`-0G>x6A_pt?r_uJz+{#&j<2TU0V_S<_kpwlzbCq{wg)>n#*Y5aY+?Q19Zb`LqWz7p6L=Z>7OB@$kd zIhI)-A0WSBs@}YXMPVJhu#)w9&TF;!@=ux~cKICo{j2I*MTX?Bqdu_!CW%-*1XCxF z=Od^FiyfaNhb)YW^v+MWC>WA6)1lt3xn>wEobv<1Q9McSucAz1LTJIFIYDU{4!4=L zN!c4!Qo5*Ge=9`oDwL{L`RKzPPqWRPwGCu|QR*s$1Q%M~l3h;|HH4!^f;yf?kiaS^tcd{C;d_38;F;m{B3Rp!~p??b|49-GXUbsz&nno;5jefTa>pdN*^>M)5E@+SrZIrm@zKz+*iZfKs&b~{p zZ`FUVoQvHph6p7rGpOMV&UD{@W1wT2fGIIL}dEV=FI(g6xJ!dMSm;n4+i0-^C7G+ z0g{r{^!+c*b=yox{kExv0zOLa1ki6aYg@uV$@4F9fJj`Kd()b$lQmDL2L9dlFTc?^_g`7K9-%+mg*Cb?Y`vzlQ}P|| zp9_tJ|2RsnoJBQ$i3>zpb8hY6e~77=5~di~pyb(P>L<41?JHQxM49ayG{#_2)ng%l zGc+UXfn(cdqeAGkgHI@=f7Mc`ed=r9ol^;#ST#Wd_&X@2xxM2-z$2dw0v-`sUQzLm z{>hDp4-~D_GA>UXnB3Z$y|uX-c1^?MmHw8>numX`cx?Qm5j~Ez;T4$%u6nVQY?-WV z<{){eU%0A- zyem&6;(Y#fszHx@M3b8L3vd~qpGXXIp5^bOK2g5rbIyWwqe}87^UTZg^$rW8rNA+8 zW;Ltwgc6~R;5bfIx0--tDEVK|m-y7^o>Wy93b{`Q|e zPs9Gf$-V?ZJ$v%3I^zlD;!(;ik(95|%hk<_>*tvkMID-0tEWdJ;bwoUf91|K6&-9S zr9uhKWk-On86B}%^p#Uyjkwq7>4IbYtwQjQQ5|CSDTw^ zYSidY$GFN0r;Yb`nfummq0il&dMV#z3s}c5!JPA z8Vl+&^L1-lR!f_rw9XG}O76RK)kJIID3qsOTVBDETVxSJSfI^1pwB@(3Rut&xS6P* z>qU;^7HiaVmMr?e`_9om^!zz1J)BI2n;m8H3`M)-lvLZG#(!u<$pxe%H^}wEj#({??(XydRl1rjK*XuKCd_tZy6V ztx~t=`lq_=-jW2;IwK=|LbM|6j#-^*wcg1V*%e>T72E2_u<=t%&=fi)DBu?mBtUws z;i9lpJ_LLOY=G4v%zmio!**Q6Q>kG4z5DE*yi^l*8+%=4oN^xVR?nCRhX06Qq&bsZ zCXg@-5kl1@#pqwkbzSM=L%e1e*j>$mDsQ2uIQWiPN-N&w%ms75JGVAxZ;h;0zhduP zE}XpBZ*y$2VlZJ`H}TKY#=;LZc>LG&(gT3aKk+WxOChP`{;vbLosXrv6lX7@27*z1 zd)qsSA|6y@!Y#LUip8oLvP1;;0?$K%u9rfgzzT?TpZ)%={SRRN4?X)TXgF`Gh7}@v zV;s!}IGf^1 zPW+(mn{6^N{2{>PYO;F%+c(NJ;o~civnW!?Z5&;+M5Y=&8s51OXNw(cGA*hW73BP) z%T_ODm-BXL!l%^qpnTcGNFl*k`wg)f&Z9*!Xj$LuSRH&!eBw3BY|zUjoQr@M$w8xp zs1+!4)cZZE4kKWo<=5!hl-zH^*vMULb_>0uQKlFeWioXn5Vt@;8@e;x1OZyfY7&f$ zaMQQ-Y6xK)nM~Cz`Y}&6(i}Q3<8Q;QRlM8kr;*D>zukaZA6@|K=P$1z(;78M*JcZM zTip4#Kh95OH7ibSVVjk_R>?y}bve!pyr=sdt@URw%d)cmwa%d3Exx_eb9&o`tk0rU zPPHE7497-S#p%4rbrh&&MBD^4)cY9)Dd-|}mjmfGFR9E=t_fXb?pqXj9n#x+VLz$n zHi$6*@n@EM#0kew+>zF4e7okG{Q9O0$5N<@jQeNvw_K)}4LVkRg@v0ucd9X z`S5EdF7Exhl_Rx*_TSZgo#w{%m8bWuZg ztgc019ba>K(j%Mbs@W#Lqs+SOlMJ`s9nVMb4!Sqz^sH{byt-+SvcyM3K$#yL$I1yr zsR|pQ#CQ#ufZq0?@RCQR2OJ(gI!B;H28RUcqPXCUHkevPMRuk{OWW-W&pKYSBI_+W zCQjcAb$+fgS30FA`|YT16~|6svb#uM_JvKi8!}jRg*x+#y`FGw^HuGZ1P|ZNt*T?Z zRdQUytx#Lm+>eWI#Z~v2rbwJ>xKZS?+UPo8UDLsGxu!U6Nw*?K1EkcZraa?&zeRww zT|CZ{GghyR+B4)SIay^Mf&o0I+fY%NFP^=QX+Oe_MTo&cQW) zIMhLZ{lebq=Lz|xW*=%?1cbY+Qo@KyB7O5Bs|(s3FfBLCdusWeMi<>#f2AByV{?(7 z92{oT4oX}jswr|aNOdIdJYmfGzPrioEO0;6Eu9UlPV4b ziu|+$=Jy%J{GW4bY|%yCAWUTeI};u)N#S!em3dvFrCMCl8fOt|rtzm!VCM9I(D_l^ z`9oZbguiz0JF!)AkLtQ=`JV|(6HFDxW^s2e?zu%O+a%JOd9*-naV;U~RP5&y%BiiX zJN|sG+MCTc8Zz2iTjdi5gn;PnP2StDYI~k<{5#uGR~#L{XbjY5v7h*d3HHE0-Ux^c z90t2?@fl|EC~p7G_Q)pTGlEQ`|4$u3NJI!b|AOqKWaUH%NmzYY#iQw$%SGpW?q9Aq zjx%`7FyXg$pL+fL!KAM1+Hc9ikO@?nxLGb$?vw{sufb9ZndpLvMC&vl0g0RF6EmN4OVa zQO8iGLiWq%)i-|l?u)|p#%;|CgDKlRhEaD?e@)1@A*a$ErGL0Ci&Z>r&6Fu_q{VA$ zH*VEBHa7~(3A!4F^2^sHk;Zy))QzQF(sO%^Y@BDSsBWPYHlK>~$|{N6Ga2@Cnj+D` zO_y=kzrFa(05ZYzOaf>3o+lD5nbW_UGfbLz@5AuRB0>aiD$my_x!mmLEi}&ct_R3F zCDn*jr5(aB5d8av1skP;(d;?yIQ_I9Ndk`OxI211;j24zx||L^qP_5C!^^kmO5cxp z-?~aiZK5@~$c)DmK8{&$22vJcqO^XlhRt^v4^MdvA+t)fY=oFdNAV=5s{Q?n{qyxU z`6E)^K*d5IwkB@oV6e#_;P<$;ZT&b&kBF*+@fgsCf={6d*HNg zAaWklq8n1v@$B9Gwc9GW+Y=ty$59-MJ6SIk8)Dzxuc9S*icfpwY!9^&>rGI#2WkFi zXk#wxUvryV#uZ;8DP%ikikgW}hi{jHw$ zF5{Q(t)(y62aosDEB%}XM793J-IQ_^)gp5+Aj`Nra3}GW-f3S5%^AjE-^jLtQvW zD3&vgUn7C0sAUlVRQfAOAt+9kT@U z(>AiAH986JWv#QX6ldQ}Dr>b)xl*0KK!L3IG;hT@^QVbO_ySYN8m+F!C*|U7*W(70 z{6!Q3T2d6gXPfHdG1(o~oH+w0_zKpe5!%^%H%>i^GHaK-ixSZ5n>`>T5v>rn+?7vG z!o(4uKzTosm%x^Ai3d3EKMZbbfW7A<1JG|#PU_ARDl*w6uCNd5X!+nmd_ka~uciL| z-XEVGCO7%zLfuEl*RhL=vzA+*UEl`mA>~5B`CD9T{PC!f#w95`ZT*WbJMs<{X8Ayj z;zJe8qyy|)wEi&sw!aB!m+`$O@LqkD;@cJV6IBJ@=?CMH`?u%@evokvXbjRvhb$;T07BT@Lo7B9CYdbH>_BY3NBb3as9>thHxO_39gNd`Im z=4Pj#h>oyaD$ykVA*}IZ)#OCuR@jD_nN74N4ti*wsY%R}iAq`BQCbyE6CS$~*smI& z0Z#bVrZu*jNA$Ryr#Lx9g@q5TvhG-#;d(CVhyCsk-oZ|IP-y97$9%ka&>ED}^XwFZ zKbh8Z&M5C5f~N}9ZY~|2>XJX6*?7d^yL5i67h@;k*kISXE#!xz0xIOC)jSPH{nQwl z*(NbE>n&B0SQL3Dk3hVc#lUzZ)N}Gn-tacxYT`^&NFo%R?%)3WePX$UjH>h7H}-nH z;}^9~Toi3LpXzg`fAJ^&Mb)`vOA4#H>4Wek~NvKFASd6^{u(Tf2U$W_Y!2{z>#NX$6CW=BeeR3h*6jRB02Y# z?k1$gKMv)NTyBxYj%!x@ygn=1De(U9lwC{`uw8G2L?d!|V#?8*$V2KJpHc zzHx8ki#90aR%FNg%y$N!WzAkqXl1J$UTtdC@OyoEh|gi(y~GaY*zTQFd5JoCMjf>) zr?VCH<-`B%uU*k-!R-TsdyZ)J1;p~FjxHVoS3?qb@%O+~Teu`7D#)&OvvodbLu>c@ z!_N*g_mnmZBlwcukR-u$x!Mrqm5{m8xz3ggwMO-vb8d%ph9O9KGWtP!27mYEJ`8l5 z*#iVq`9m}=oMQ3gIaE#&KM1pO!K9E-R!SVC={L=0K@>nQ@Z#*BJzvUrc%%L zG>m|G5<1{=zi51$2{ZFimOxT|O2sEAS$+TSF(fk3+Wh&9bI=@h5#RfGci~oP&#S#AevWICIxCN_hI29A7eF)k2F5yB9dXNR#5NI%o-W!na34b-Q-rjSy9os65X89V#sUFRn+g%>S8Tq$6)qWWB z1fd}I!J)q1f%R>SdjqvX_x^);WjOv+D7cmxWSJpD_K|V>uG=%-W2_t03bLCZhLlQU>Bhz5{~)TYvc&tR78nKRh99XE3tXQ?n?~d851Sx3YSH_-9``3c;64 z%p~OgynWFK1$YUaEC;4!nwK=UEz2A%?wPq^LLLqq{Vn&yt5tWGH=1`BmU`o|1=o}@ z>#&T=$C5eOxzxYVyk|GBXWNd_yZJv$m^vfTf@>18T$!^2`c5N$@%yhblR#;L+u@=6!EAKlovC}?-v zLz$e)a9H9e)$rGuKrUl;_OpGrhB*S%tGkD$=UchcC~MAFSt?GekgMrXvvIIr=A}J) zj@_cvJwCg{+ zB8p?}qKno;M82Y7jy~5#99=5sa6onq9yHV~*F{V`RN`*f^TC1jhOds(pVC#=+r#qy z@KzHT6tO4iYj<><@K2#IHeB0G1aV3{+R*JO@AE{Hy3@FsnFy}c&&29wlbA?e^=Li2 ziDTKSD&#p)OA$28B@#4QRIPMf#Mj|V1V3qX(do38uC5N8$K6)oRHJp4ZTB{DmR!jN zL*)fMwe5E=uYHUI|8r%M|GV(2iz~V`OTX^EB4LdY5@ycGi%7-x7_{Nl>KFbr{9z+Z zt!?4u)a>5L@udY49JAuIoKMw_9}c;vZAq8%sVn-F?~P2qo*_~nO8n0YULh37-ze8f zA+NpaeQ)_vC(l60ewQ6AYvr(88RdR6`hjk#>&*1C8KT@vE!+wxnZuTtG3Rkl2Q0DGId zr9M_}ih<>RBWl$j3J?l>fGA%y$!H=Xm@yRTOb~(MYrkd!iPi%V89cmp{{`VzH9zuf zQ&Ff6F^gF?|a~Sn5cEm3t6J~fM3XY7+V)=nB&sKZ&}$ztRx|{#Rq-_aRwSFldD}#EXPh~z=h1}I#b&- zfr`QK)9yF$Jn**N-J;9&(p5Z7H(R(P9dCasb>Qh2%S5O&QDz`Wq*izqM`$w;PvAxn ze`mL6S8iEHEmPK9Avg;>SEpT;3wic6E5Kpszl}wdIfVR{4<=GoR?X2K+AMZ?WH`B} zs(QurP^zeSCW2_}70qk=!UDtqkq!L+>zno#W{@Q=-R#bP)i`*gyCeA|`^hGP6OSJ` z@n1#4=KlQwui3Jdi6AL`eA~Jzg;X#k;yCUFr``0BH<}3}u*a%}jxu2MqDZF0ikz+3 zQ|o3tA1`dGR2^)#nPyT~`f9A_Mjrpa*aBqlj~0?E5?s5U!PCp^fWPad4`%c92aln~ zuoG~kfJj0`l{A4enUS4~x|!Kok&wrZ9p$k^X?bKi*^ulCZ|;MC=Htj|SG_@$%+8+v zqmueU2G5IyXK;1g%Lv;%h_3DqA$7^~b`szleTIjY=yqfOju}p`3$Loc!enla(GMUW z>Pc#a)8r5na>|Q;Mr4e>VoaGIx^(>Scu5nJs%p+b^p# zT3z&tQ=s!DjqOJXj_G47wSY@pbqwq$7pSeHR3+8Ka_xrwL3wE!br zA4J=KIZE_)#si3l89YzqSUmmQp4k@_41bjEf9RYIkoCD^LJ=KQ>et%ok5QE!x|s=i zSQ;}A+1ky_Es(db9g+qSpOQzf5(V37h)3L!UzWb&ZGRsqkRfA_bFhvQj)=JJch1gT za&g3L%|!C@LS0EyQ zw{mZBN3#^w7t9@H&ZMKv+1It&MJzsHDXw1j-%9<=&;@L?$*k<}jP~r^6kjU{hxv}p zgj5NH;iZPEH~miC1veL04`>~??qV0e%(QKFc!4*!IU*Bzv66p@ME(dbH@?pVCQ4sH zDn?`e8MHe3N)l;d8v6GZbph z+Fjea&!E!>Cz7 zboZ(JGWi=sfF`O}HKlapZjoQ0hpK9?cEHKGnwba-14tzrvFJf$-s0mtU%={^3?8)H z3NjJ3|9kx4je&Z1xn=}S&O5)reMl|2>a>-RqR{Vdbi-*QRxodg@X7{+DJOe3Be=~H z?Jk~K3LH4Ol*a&e*W1o;vQT2Ie@8D(Y{=d)`T=~j8ugzy4SVf~Iz7gn^^EI(6#;+^ z7Txq~s`$fvIaU&ZIhFa{HjH-v!w9T2l6X%B~588?4m93 zew^t;Gp;OsFS3x;#CJK_>1GhtQ3DS1I&Vvww1_odEgg6FatrKrHV05jIKAy=IGL>+ zTxx1K`Kgs#Ay;s%6V9|QlhT~%$jfBXb&$6W{Sb2nQs=ekIa`;VZofdwOd0!@MxyAi z|69Ry;Hxe=ak2P0&zJEk!QqJ|O|*hxzRC7Kr^R~%ev$|Bwo~BpW+D{H5l*ina-PDE zN#t3u+6eOqn%9Z>_13HXGZ8G_0fv(S0P$|B^RV;a6ZM%xRoe`>!7G!Ghdyo``lm8r zMbce?u;l*G#LPF#xY&Xbc1{=(7~V@>nA50*r`!mNe4~8O1)!?bcm>P&R9=C^OhZig zte-gY>@Rc3?sEka`<=%QuU1E{k-Q}>42yWJ5@_sSzFdIuvX0uTS)vjMlNAcX$Cfl5 zBDPQTE$@%x^3O}1xO)m9hyjyD2x&`>=`u@=U2i@+rJYyrAi2+6Bx7U5>L57hoob^?J>&z;4csS% zbI6M1G+oI4M(XEc_!mZ@7vBP5#_(W0+IVVtpRcnrKoHpt z6r#PSvdfnharF>DNldBk1%PeVQ3}xGoH|@lB;E=2jmZ&1Haw8j|+zX_>HG-(<~sV6I|htqA$I3j5zGcCl;u0uG{uM z|Gj~Eeq?~)iGgn^($3%w((v!0_J4@Mw421z@oFjO^B`u7q_veh0A)D&iqj%N(>h9* zaYx%as-AY6f5l5>y>FcJB~4BcBJfZ!tcF1=bW?J#hI3n?OGx~&L-d0RB~>+^$u#il zB}E)1CLWwpsxs>_a9C5uoeB6CXJyRX>Y(};Lk$lVH%#EA1O*xgnFxDFiJw)C z7Aa<1Xw4!Y3%6i&OOD)UK`>Q&EM*YjG4;pe%;f&JA<%Ze5f$8F+{u7_X4!^YH*lRn zewH5|=+UlZsH5`xB;j)|Ag#`Cknh2b7_ebH6J5mJ7u35Kym1hWWKs!p#RJ2zCMI@W z8)K@Snn?Sm>3Ph2(Ek0_M4%qWFwoN>bMq%8m=WC!1dD~b8|I^%w<)rA$(-2y3zuE4 zgwg(FHNkrTX^m;|58YIsvXS_*Y-<`$7D4#>>X>yj($;#`xi z6I|QUbuhvs`%b!lh`_NuF(A?KZVRvjV*~!^m}*=yM{-JCs>&obTJ_b+9!R-f*0)pF z_$QLOEvod`KQe&zkpIY!%(xdpDo=$k6_5(~s3pZ!(I{=+X(mKj;<%-@mzTI!{qTdf#V+vp^O5V=d=79&`&sawRPYJ!v z=w-yXbHX|*AP{W%P>*$XWKs;VYb@6pzQp`mRpMrM2fLQ|?feuUPdCi1`M*_^L5Gt; zN%)ADxlyHM67oBQeO`>>ZC@g}6tQHRvxE5%bod_WGVTO>nU|~Tzd`Q%2I6q8q)CC| z7SR}bH^AhiG1C$&ffI_0a&CJXP9F9v%w-hs1}q=at_bA`nR%ZD3ibdhBV9~&rVPsr zDUMR_`oJ<|)){TKs!^SQrs?lOFMJQ^J*jDSsJ`**4O1t<6@+;NP9+_=J|xFe`#Za5 zo`c3W*r7s>y?++Py3ZDT6x^^+?kLUGE|Il>Mbv?&KMK+q>B5 zfF&I{$<-DJ|!X zrt@b4iBkpw+AgXO6+;-Y-2azC#WH&4Q?G4&g(Ji6vi2d;(e7t~+{3yPdDTA|w{q9N zwvP$h9IeBw?@G3Cn_or!#-GRe?C%Zl6)kZl9-Mz;8K{uy&Ct_@8M!BMWuyUPoXKNv zE3#sZgA~!J*}X6{lWsaoJ6;=S|FNBkdhu5!6HQh^40`Yf{5X?^xj$9r+1%C&@GociCCZHLy$~R^{#>$ z_HY$x(bI8Be)*Fd>`4Z0SVxT=7ev$z*Vms@|HOR} z^sCspkZ_(L1+s{l!(S7h=ce0WFZ?b;oD-1NwKIao_U*awCJZ4eX?;mtn$>N!W8IZ!i3X{K%0 zk*|_euD>=gC~d|azi$f0w1}(XrE*09N!1PeeyZl%)4zO+-tAU*pH92k{pb$pgixzV z6`9uIZqPd0x?u>*<3ps8Zl1x#FKVIOc3RH7j4n0)SF>yqbP?EA@@;3gFg;cEMEH!P zpdzJ;D@~7Z-w&u^U4_RA$^CDLo46Pp9ynSoE;;I72=k@sd+ZfVM2?6gjUcBv(6_x80ZXi8Pwbz5 z#S1y^>D113Xi)S#WN^Of_N@1s6BkCN(V5Z$bZYsT7Ri3>m`)$awJl+RhdCF zsZbz{J*SoP(Qs>8B6te1xyABf4QoJhLa$q0l@@{EQK~0mNt4;JTz$W$^o;${+AcDE zZzR=4WB|Po#4nUp{m5@kRY;^g0J+l0-h~=H$9B?o`GE^9=qrL zqMF4gIpNC1|Mqv(C-4Jo3-U%c6$BA`_Z1)4=m*O18v6T1LfHt`C%Wizq!_%!^7?#v zFH2a^XABb|i@SScXHtIvEproDf%C6qJ}z#U!v8Y7uEV`io5ayaJdt8CDlh+`j@gaw zM--lCK1x(6=jFBr5?sN~MXb-APCW<+z=>pfELWL^;bd6gw2B9n1<%SCNFvuiRR$=q zdP=TDX%@}XEmTjx^2B;NB};)$?e>iZ<&8atu?g}Jtqtg)l&M|%YUk?{O*YBrNZ^Jn z!22jxvMjsZ|4NGB{oI1DXml*ldfy1$5|+Ask$QMO@Cx!i5ff-!XV|&yY#E(4I)$^5 z;}7ct-yFRZ*UB8=sPQe03M@E;Wze#iE26p#fB0tTpFD4u$ZNML4G_n!!w!|PG_VgE zJK_C@(GNI&U+7Z`*e;}$dd5e6)o{`^sOP_88~q#hfd8Yd%;D@^oD9&kCN4hl<^(;} zcXrFkZ0sMiG>ekJtcR3%reT_I8rkQ>w#&~g{#Q2tMI!Fffy~l-#`AAV;yeuwB;jZd zU_`7z9?BkSLaWy-pz0+yi9-*z!%tp3pp&Uv@*-LpOEIfZS3O130A(RLaR5{i+?oW< zh;d*PY<3^_5M%sy$1Cu<&GzEWp_fL!-2}}{MLGJxd|*6Ipgqfh*Up{ES>G+VG}!D7 zdTR zKqe2GxHkLnv#AdCIlFRVPY2k=ae$LZ2;4=CHQ_DoJt76YFKH(BZCSF#7$Pu*el-GY@IZ;GROP949E|>oHec z=kt0mkyEX>(vsEz$r&4)MNN0!)+!(n%QXAy&hWQS;tUSQM<1phetSu+b=aj9vER09 z&S~aYcrdKhlItbByE@lc@6%u^sqrN*!Txv&vy{WH<!rYPQ~4)b$t1 z|CPP%A-wGp#KK?Sk=d~V+7NX_EWLLBcDhg7%>Pn+BHT0xf`wggtg`>fm2jw?^AVTA zBVJ!|tFIuh|8phJL4i-h;})VO?#m0byXxxt*yKR1&A5%E{N^7S#`=33otyza+Do4@ z)9^2SB-upVTSNT}9&NYhIOy*09VqsN1Ga<#1WX47kTX(G_&GK{%Hu++6aNF02Wmj8 zNwml%lq=N4|C-^dU?ohWap;5qt*jR_v?dB+_G0nqS=Xc51hqg>A^w>i+WkPg>b;W zK+sFgqH5TmB^mass4Jjgf5E6`|JHCw9?>&7Jc#oU_QAJ%2qG=}u#t!GZ3wGB8_AbH zZ{+ip$p{01;^5`vKY*IxZrkF}M;19X+^zXjfd1>Qi_#G{2E z1S$J|M(Rll1ZDHtm5U&ix^dB0;2H+_s;L`2zo&Yq?~gBS-#>H>L~kZUblzDHtbfOX z_ZrTjK7d{Vl6G6x=fJ0Ib-KQ}sCv7@+{B|rNZ@@cUO^!8;HTU?=l(o)4F#DTYwzdw+2{Y+t*=tj02Yuk!gh$G8!s#mdf_0{?$iZ zkk)lE4>M)ZRZu0~$FW0rF!mE`K~B``Z@yUoq_GThGeZV_Uf};*9+2!$KR^c4Pa^_u zif^y?gGoED)GeOepU4`eWfQ>(V^=+;(C z*DQ)y^PM+G@zUX8Jrn!cvbcXa^yE3a%|a;Infe48c!|{$HGukZ$d0!C3Kk86O|>^Ld62e#x_av+Ajw5%%X(J52!2M?mzPVMpf5o zCkFm27P#)d=_(;Mzm(>PZ(lS|Fp2lyP4$VydtqL8{vUg99uM{U{s9jvr_!j?BH3C7 zEw;$MosLSAP?+pnLiXKYtSQ=1GbLFoB4ekqZy_3Dii~}bk=@9?d#g!K6uiP`q z)t7w34~Mtm0!lO1>=(RrNEdt0D`0#=THTNy&LYf&1Ai`GfG}}QDsRx%!Q-7wn+jX! zmocxZKm7kJ_J>on?WJv1Ga=PO;!l=Tiv?|2XQQ7}q^j>kuL&;mqEo7`dQB*dk4?=p zA8^yk7Q~ej&QIeG^oHk@&n^y82u(PlQSseUTtdX0BG9I_J+^N5G_=9_{Ei0#;9i;>-) zabv@;t#P7b^Wm9}EY+EwIB2lH8K?_+7B_feDKlukftodPk8?GF$K0cuK}me^*|{}( z0N$S@{6ainn`;Z0k@9v>knVu5UZ{%tj>V~nuCFXQ#=o=d_E7=L`P0PbZIsCAr{mxX z4o$}ytO60v*BwmQ%Hi+nqkGX(!Vm)CXxo=hySjQt>DdA;t5IMUa}B|WihOcFY&Ld8 z1sYRD5ea5kZdbmUtj&$a2YEkV-vzWJUu{|aG^m8ZPziY0e5NXp5!Th;{D>`>E$q*; zwO~p=y{Z&uhl5vv=WB459wm{cZ;j@VLKZk6I8vm%!8a<|&qYW~*f1U-sds<{LnB7yx(X_ElLY zqT&d%Ul>dQJgA`Xw@&fGw;_YqCDnNwJpt3x^QE$^XMzQm7>u$$<+C!CJ>n{(0&DMs z$M3(px3R_+qJG^eTt0qtp+CsXgOa#qey&b9i6IpF9U^zY=b3|x zwpsO@@BE$}_BPG2q|Fv{m(sB_gr$_EijjXp)MzUAz*4);-m0U_*_97~dVI7E=}o~D z9p!x}640<*&o5RYm(K-m5yuwz2lns}36gZ7qywUJUwg**mXMq}G45=vSLP=Y6e~c& zq#vTHvroS6I_HpKl(pe+KNr8W>E8F1u`#T$X|b3YA>KK1zC-or(xC%ul!OAG#cNfS z%|>Oj9aSYO`AInmOJleoue#Fo=7#Cjj&rg7#v14SYxF=gBCy@rP+y(ZQ&UY|wimFo zfIO*lXr=94r1?+uHO=sX5bS)os31u%Xn--9|LFyrK(&*5YryYd2+czKNvVL~^4o1y;Cixs0r^=*Ag)-OYsAg`>Z*qcmI~v`4odk3X1bdxJ|+faD02 zNzxzw+y;C5lIvqx&EitJ!r!Q&+M&5E07C$RGrmMC$rLIuI$!@H$n4Ez6?+i*M2`o# zeml+iRAYe4%5a7HToaBZM$v)#t+tIm%{G$az%OarQhKpU+O`dDS4%XWkXogT^EPs( zUEQfW{G(ZS*e3O1bKI#^8SSi1%@)p}g^3l}O~0YdrrDcczu6#nZ<=Q?8=mKXBR6~I zoJsW`&Mo0Oa8mba*)x7>GeY4&CnWB6m>y1kXBR$JBsp7b3cnpbjr(~Z73%)#Q2tn&?e6MM;kx~p$Ev-ap`8{(OOIY260Lm`;_%x_P)*rSu}novr;w(j)x2N6t^b{RIw$eLr3sqWzJ2 zSzZ|f&{@0>lY>lYqL~XC$y8Kc8Qy?l95yeK^*Z0O~S$)6_ z7USnTp1uMKQA8JTA+*_UTwJ;=^;*O|xBv=My0-wj$HN8I)4^&!jwpL-vg`L~0#l3t zw&nfAA))DAEni*xu97}n2-w(TV9Tam6BS-qy4yzwZ{q@Gy{_lul&>I#b@l7&stZMz zr3T~%K0z(oyTgPZ;y`ro%!!XsyB;OI{DlN`)CBEh+EtyuTk7>_mVZ+2&fb>Dp(Kfx zVh=1lfi5@`qRz_L{&0YIPs62wsp{I*Aeas~0USY6O4rM3tMo9Jx7WWGPpJU>0kVVm z)(bM5M%H~Wsn5ScZ2I6T*Q=Ht{792O`;zT22rjlLXiuUcNIZoOvThb^{xYSDyZS`1 z_@$-WmjWI`qb?rR>@S^@@)~sPH*mdLUd}P=id9rD7~ENjLw#q1z4Xkt1nqFsu#1sB z^FnQYU+4+QmIu+X%IrR@uDYI4i;aE*Ng=ARogiraFyFUx@Ea7(QX#5r(HEC)8=3A= z0w;R`)$D17OFC=wQFwpF_8TP`p&kdU_P4*<@OZbQI(D2R)+=H_4Y_iq`$5kewv^~q zE#{7zeiGtLWVSX&^& z>zVJj8X{E3jv~{or*ZzM|KOiL;J#0z3pBtPj?Ac6tFjV47$aQd-o0oJskRKm-1+fBB|vnWBQq5)352=+Z} znY(#bq(jIKs(>uj5k$tFg6?q{V$@UBtF4ps5N01B@hKJU0ulk7GuMcsk7RcU+Zj6q zbFyf^@{3;#Lp4W}EDo>z>Xr1|QQePjt36SXGHA%gY`Bn2K{;TYr?i;SaChVJDumoF zpVKo325$R@RMR^DS~v~wM}{dVM@`o#?_=nKvXCNZ@JHzhu&3!(toAYDY+L+@Q3Ote zb1D8@{%TyK3gA59ca??ZcgG!?Yrf=q8}0OGTlU-9qyhEW*N&=*yhFeI=y#3`X6j_zIPX&FxGyc%iaX2j;@K zx?M*5Hz8&Ryc4^u{BrzGHH({9MBa|&cQmQO&({_Fv@ytAP0BBh^!S#@+!egmZJ1ynIJ@+Bnh5R1fFc<#dIG}ctYVt2pM?>Ec8HDFj|u5vL0UT&ABYmOU=pY|NU381^m$*CSOl=> zPamvj0|F9nR}=WRv<4K?JTpZ=7~C&&yy>`Z2gKg*9Q^(Tw3yj=FGw#JY?FH*RJAQe zAf{0EhE5i1)%InX_L&+daCVuJ!ms^zNcZj8zE}mTFS$HoEeIQSo>oQ9^i)f-`=jhu znE<+hX~vmea;|?&9WD$TH;6u1&9~7LwYpTqR#a^2wzN=mP>dbPp~YQi1s)5edb%O7 zQF+y}z-a7SqJw^zvFIQ5gw2N^MGkBZCaF9A9NHLa47N9>^yzUuac1943kp)qg{%(a+Eqp3rNUmHFraSOW!dN(v}?ZPv6) z*vluzNsvzjfQ8iKUfh2lOdJmpa3Wo7^Kw?J>LF*ZE$@xRK&_yYw~w_yweSe>HSTj+ z8S3vEPfB|yMs(g5*k0A2`*9;IYqQVD;<<4aDt%=&smW!sAMUWIYo4$QQyif;B$x11{)UQsm+>FTYSmPya6xq#o3?tTI7q}ZJf!H?i?eUx9g z0gbm$33@s|y{U;$vHRNp#-sm9i)o(pk$frUC}U;ZcEPE)P04I2`xdBR4ST>yr#tGT z5||^p%>P=&ppe_^V+ocmgAjnxuWydb3_59%OiWSsR-DO!2l$zjpT9qjztm<|9nU1} zff?%tTz6tn14bkeqo3y#B$Jt)GfT6#hDLOrPZi*hDvc zcfmhPq9PJUSYa5IV_+7-In4H)lZ;r ztSBN9PIYQPjY(_!v_XfG*+nS)k80q7OHF61uQPMd!Q$fzf46>GK}f*Zr*!9VH4Z#u zD&}8eM5j6}$%~^4Mt7i3*uZ(DUD2N5->zX<#3x*u@Orwx!4p&JbH|~#i12X+tx;J8 zm?G!Xfbf$3_DHC{o)H=OLGeUr^O$qZ|1934Ru6Gui zbM=2N1PT7Y<)aBprv}f#Jx63e$a4#>0*5(5cOPIL&pYa0LWgm&tz81$!L-Z`(CZOj z4@+c7f_ieygUdnf&O zb?N?{)q|isgB>O?K%UMAr^|WMZFZbFxTzg?n5Ta)-*G#Me=YA1CA?{<0Ooot$9b zh~oV*0+2#vSU3T+Oao6e1$~Jqw#_r8YP<4x$^}69u7Q8WQTF_gQA&3-*|p?yRtxhk zK0ROuAKPPtgb!eFVqwHw8KMkZM)al#GcNU*j`1{BkhhTN6Ow0v9 zMXSGCu}mk@ky1YRi|+5On=jUEJ@$|5MNRH#7IX7~plfD)WL370-+Hpj`r$nQS~ zNnruf6f;lbb%SP!~0-HCGijc?JrQb&-HP50*1(WgnW8VYW@3vY)PjUdMSsS zk1QIp_=8CJ!gFV30tMTDnzf$nLXmd=jsqHx$R50-f^V znsEhmeXR9dF^5kdsQ4k1W23+@+duKZ{s~M~Z=c@w<5JON>OyrW;hZrS-*I#gkhQjK z0^7}a`;Je&Zm;I97KCGc6~%|u{Y%454!4;az6b>~u>fv69XeXOERZwhqlsZXf0*p< zrEUG(LG151v0Ak8z4cNn%2jNJ2F_4Ly&^gk_CF!%2#k~-SUwB$;7tgA$j(#XBJa-t zkG@@nQ|UzMTgzPo$Ki+CdVvIS-t+sR7Z6zewEAmxQ*dbbKDj$LShu#B$bo$xgW87U zzj4O?K2RU*{_qVL2&jA(-$StLHU-)cITJYW{Hy35w|z6wAoRh|%^Izo-LAYdy9V?u zXr5sa?~H@7tVz%^7k^`g`uMMS7!nmc$1{pmWjF8Pcpa{$U}0DpGQw`K zB(bWffNe2L>eYXpI2O7lK?A~n9RcT~BEb0^)jaQ`rm{9?$R*Whl8x{5A(ZS=!vhMz z9l3Oz)_j#EYz-K))kg-T^myK8FLa8b%WD6deC%QJ242{}oTbM?1?UY_*KaKx)A9bhgO{-*1*6EX<$D4U&f3hv?hkaV9n+}cy&nfVW#w#z zOm-{1ZDBhNcYADR$G}4M`at|zCTn&I;A;Duj=eb#@HYQItl!@HJ{+K-O0~RRt?KSO z9;rp`CuuWB=psQ_$*HRDZV1aAEi-G7p7;JY zwm|mV0mtRF*y)OzdAGUov|0tXlG?$l4>7ZH^pXJDUgdv%ICa%H_>k_NOvssKM(!i2Y##K|64uGZxvv-zE-t+C5$HJwXBJRHMvr59u6z6+q+Ng((-P;bH`Ej zpE$mL?#HJNN0IYp^&>mnNGQM4kIOmEBG1-Y8<-sO z_#tAJ*|uTDsFgqN8W>QOv_wnV@W~`~jO;F5R^s$u#4;!}%7z~s0wMKg2LAv1*Z=+b z|Mc*GHt>Ho@c)YqWmZv1E)H2!1_4IQPs9|u ztfU34rqQ@9vM}xY(2-Z&FW_sJI=xMMX(T~%i(Ahe>r$j!nJ77{%*@!KC~I1qrTPG- zoyyVhqE?dE7};Z`c&;q!Y z+iH;`kGk zFiQSZ?e^&)qnqj+XJ+fmPhQUMy z$=Z?SQMaCjxvEds#5%p^e#|JFEs1bX8agVX%62jSc*mkS)_Nmw<(o?!vY4DJvm|PF zR$M$wa0}7i7{4YcFG|J=$@}(3Qr<`J>VG+i`=T$!o3<%LevYpE-uv_|w}6U*Q2(;> z^eAdeveuWL*gxp)gbRGpGpA@e8^L*UYIP-h_$MECC1uLb!meX+%evS*Z{kRO_EZ?P zyQO(WmU&$h+Jo$iZ-__@_as!B&`KgI?bgYa_!wW2M_5xhzq#hDKDsi7o*_oOj#0N> z+TYb6yi%wfNW;j*%-XKkPhNM{m^H`yi;^)}B%Za8cX0Zc2J59fdXLmIb*z*6Qlr;i z=T8Qk=-Hwnig~_3zF0keDe+?238~(_eWeYBf@Lm&)4o!k`gvXrre-c0?vHND=t6_v z_coqg*w-TL4dsEU8ecgdy7C!)4!x;F9?l|7tX{ekD#f3q_1U%JW{2bDNW;rekF18|g&Y zmN5Sf)&JbmTuDAo^||fo>}FT11q$9Ik-lr~sIDHySdy0u+b6M6$RT?Ld(a~4^N)nx zw5OJMY8H2-sVto*&93i>rFm%~$-7O++G3D6K7+Cq@-@I0NcwZdx{u+KO`g*U=uJ7Y zb@Wx6M&fwPWTlo{(xggGZ{~vhYngFrj?ah+(q+QO z;$@sCOo)nm%Tmw4F^0GsQ+NH9`ORQjMY(pfbRu;O{ZhSTu#lr^%rxQkw^iAp35?M8 zyei`OT~yT7*>@a*NrKOIOgHnPRTAhG=*=(k$CV>A%2hmj`JW9IdpUMoYxDHLpQ&%A zi-E}9n%3Cm)r-L-#M8-W{74lTbdt9(Ln1Tkr)7#dYUL@%$cymB&jt0_+Oz2#oId_n zLpTwLV6WtvS|je=f7)6XlRccn$imKz{N)K~m1lJ8EK<%QvLL(u)HY77Sr@5i{``A& z)%;3MsI81FNnI^1&2r%dyDzi>w;tqv=$%Q`$CsZVD{5|9y43$&dxD^(P`i>8m)bv> ziV`5_`cJ%#bePB?wrI_kqeg7`HK@%W^a&<-x@hX(?nmndEs|pBcVhC}Yx%fSx7M$R zyWEv=X0Y;EyHDBq{TLr5)*6ZzUG#03VAdDPgE zhq!!Y@)}`X%V8?N#jq1Kq)Q#Kg~-KsFC@M5rDazR_EtWKN31E2WVZ!z)5Re=M&1lA#Rj9onmpTO=L@duHd0R6i=C5NowP)u!MnWQ!*|pQX_UN@2 zqEzGPs;Dlid<(uemfk@qzw|R)Iil^jzzez|x@D3#yrS$x?S&y(5>;%9ZwIJsF}#Me z;5w$k)<<&sC$~`Ym;RjhRI@LNbq6B0CrJ^ML~7|F>~-$DCg?v*r5a4Qls*Yc!E%V zl&mc*|HdO;uuPtOM(XN%Niz2EDmO(c>G@!c_3Vt2DFKw#pT8~$qItZUsZGJOUkBeB z{4uF!RT7rIa?@eze1+Q855*TcxY3)Y;5gjZXAJN3NGf#&&om5O7)qgoxH3`^aK^fWgX+^g=0u?5XWD0C*}v5;MEixEIs<3(f4pKp4Yab^cu|j z8iwuM8SOMRaRzNhpf4FYDB{A8r4x5c#e4AfDDGYw-H%ReH(K*!9CgelmL4T*NQrcO z_UnFXnLlw6@+2;tX-;K2%a)Rh#b?(#QQ=;ZwUvf?AWfmo$;EZourygw_BvD3xIyx? z>L}l>^m;pE?N1U51Mgeh3@YLzpY0Fqt4mr*hk-4TM|1B_u3l~KAeh8kmWZ$2V8?h} z3bVEmaZ=(e67)56nCgJ59m2F*;mZ}srz#3^C3^_#_IUjwYT*)+Sv;1VT>sL}-;}9z zh8&>KV7ZkQFlf8}I5CNSojY|U=6h{r@j0@#Up~&OepoXxfo@CS?T|-qm?qIN+>JZ2 z^T^r?o=1MF1o|*Ka+Eh5hqVgR>2o=`nOX1SUv`qL-7s74F@F!G?U-fSruYXt1P1bq z;+H@3n!Ez=TqG*3Pw@{B0<}xk^XALvq`c^RNp3aOR`~VX_=1~;^2pClXtQpkwFTOF zYL~%*<#djVAyy!zUp9L7A+=i($38fXX|I(MY4CPuh)llVk$iS7uuUgAE{)itF`J5N zSZb*`Um{KRII!(U22o2B+;U{TrRJ8u0=ez^3T!;8IT-#tov21o5+u(N;=ARMJXTKd zdQu3`tldL|cy8@$1#V)Rv)`!Q5f!1Cac=VW9ueX@6?YSs-l8b>Spj+2y*q}sRcPRq z(y@n-jU?`9QJq_ze+@0A%A$O27$T1EAc7?h2meS0+mkpulQwj0Z)MjaL}r6hW?*(c z5ZLKC^#0k1bxgIZ-iVxIrXg2gecY)i^z1j(Nc}|<8Ok2+E2>G8e7E@Y+8=N~WF1*( zsmYwYIvdCB{JFPV@iRU`H-HvP?_^rM`IXr_)NX5tNT!&CX!;T%zEyE|-1iK0U@^(t ziE*^IjOeF>@2KB~UYu@4X**~2efy>VCP)vd=|lpd9965Alm!kbZ)3QePL#qcLC8ru z0VG#k7RFvZ(~u2WZPIT}iHmXMO_n1x=B?Q9Lj z3*NeTbqHAuzPm0rFbzU02`8fqf*?E9QM=P{?BEI(hM)sij8_#Z=dydC$fNhuHoCC) z3A{-R-7qhOH(=uiKB(WQEE)Txgm_w5oHsK89Vkz3ntGIR9V3id`3t}16{W;sK12FyEWua2|8#kAk*?FV?67hJ$9+` z<`NZ3iGhk_b79}B45cR=y4#53Qs~WdYAnqR`PA`vj<-o_IQEcxiYnw0;uSmJP)s`y zzFa8sc}UFaFPEuGlb@P;BFEMI`-?^L%HbUSu3Zd zSc*Lq^M>g6cbIkg)m5t(N$Erlzi@+xM1@SE$`d-tO*yoA?k=jTM{yhMGts=~(xL`N zS&sYyq8vUI;r&h5qah!!&m~4PfuA3QPC{w>zr2l;a zhrtL7tvo`BKc;Y0+xR+RUg~V$;KS4TFbiL3=YOOS3z??t;b$9i>WJ`Kc_9{QGw6j` zNTD60YGRZn$+mcAGI=zwFcJ-icib_&XBzNo0$qG)r(AGzp&%KTF+NH=AIuv|k0Oqz zz>=?sNc1cX1p$H;>JToWk`!2T=n2XNgY1;UEEIFR{Z#<%Y?O~R^|s0J8SM8m*)>}S{1WE5-8uGjVj`%8 zyK&)5TOK;F49kq*)JKmZ5fY+Yk7b2|H?mGVNGu z3UT^{<%0wL!UJN=vO3Df;K*Ji^O3kIh^RhiYJf>w zLb9OH$VYE0ru8u4g1#7KYSkAi6v*-wYPsH#muIu{uGK5QBM#yHm1?WR zWAfGT<-}iF{6YD691)W(1>z#+Osqm;~DSkza1dW3mt?0n<$8hHvi0T9+g*B-@n^=HX0=tfR$JKCa z-;I$>qMs4m>sc)&ojW(P!Ti%{$Cw+7-xEN@RC;8LKVu$Rxqx^`YRo3yY<87tJjC&D z27!e3vSQ*P)$8_3DjUvtFyfHVna97S{`GM9$O014J2r!&O!M8mm-vz%$dp>IJ(|Nh zGz+AbQy28bF!t`Bsfo${xXx#e;r#9SzD$vQ!Qe_>|Izld{HM*95zp4+oY4d}q45!d z(ktvAhbGeMhcge^#RuAz9-8?6vx144B(!&_A|yD~QSw#TKL)fKgi2mv?;k9ds7*T9 zsfI~-LbrxXx^0XvPsQGk43s6m25EK}*2puFaok^n?1&#j>9A1$Km(55AcPBK-@g!c zlIKhRc4llib|Z@zc>ICj69Zx4$csAgOs6<=KY%UaaF#h+WBh-!aF&Dr}*^*W(vA;idhrN9?;buq?L zSC>N4eQskC`V{MSRU9XGM>`q9v?3oo8NAZfstDQ2JP<`@K!EKXQwQwG*vpeejMR3& z!QgeU0LqOpdD$I@SFCr^2>Ww{iV7F(I@F}r{LzC6lj=S@YBNc=$R1Jj=E(9=k?m68 z45hxqiopAVzWj3}D+8&dCa&#n$k-c~Mby%oZG%Gy`ToU#-4UOoz?45X`C_~-J2*iK z{|irlOzeiz{w?;&p2d`y9i`&Vn(o8J8=7G{wE%!$(0@?7`PNoBj|ew7HeK`VBn8-p zS+{GEuLaKZrz8^vqU5xjpT$$KGWGZYdRUY8J`NDo1`M84g@Xpsj9 z?JzZ05$c$)ug>y#!Rrc!k80FI`-PO|UPH@e&iz(coSFG3-?qz=@!G1#$z?e9E(`4` zK8rWbPGf`Ft)^Q`d5-RWOkV49*!SAP2*033GDT3H2##2K zoQxx^fB0~~f7)K8+4QWlix!@!aEiQw4iq7C^DLM-3=9K;!`^S!!7QO?W56x;^Wk3) zjN0+~1~rmdyq80Fw$?DYMjO*7P7Z*R#+<>IA0w~fG(GII`l2n#iB0$vB9eR! z;pY?fc6hquM2C)E`%^Sjj16@FD4(Ko?6OQNiL!jVFIM5{`t|+#6z$o&28S5?FkV+2 zriirjGUPK>jocHAl;uQVL8=2?^R~g(YdCfbL2scF!P?osI#4C2$@-F4H;X079e9&C zdKgMpxNGEXXs7GQJTmt~;CpQF&J}+=!zHV)inJJgO0*Aj+hw%&x5E^dk;9VqEFan| z_Ev3b#>^fwJRM9{h^~gN%pfhk!$b#66G`3|9j3;(RkmCxu9GJD;P<)QSC=f$Yfb*L zSl_dQ>@qDas3PlP`7&j4Ia!`D==j&)Boc(}FNJ;a>sYuz^+g4vNGE2w?-nqAt5%#WT5Pw0q-nW4%HF7J=+` z;@+ibuHkNq-;${`dqGb{$qHP~dqpg?HgNti`g36!wIx*BRwEo0G$oh!GcujH-^ih3 z5t)C!1&oB%8ORZ8x1$i0@=(ZVpaavHd`Ucq?5C+Yb~_WTsjdo-t92cCCD70V+WEzA zMrA5w0E82S@>8|*8G@y`L^DaPZN|bm_t~j3Jy7+G=eyNB>&n=iE&C z*SvE2rPavaVUmk0Xpja*kY7XM7CLE?M6a?v`B(3=!8e_nXy=5+i|xd2eBW@ADc4}( z)KB2KrzL?Y9_8R-7=!`+8f$sw(~E|r9Oo?4B5r{35c#BQXC?aM=#wa6$9kOTr$TA- ze9MI1r-MI6U*Oj-hLM%@BV>hSdky|96e_(Npqf05I#kWMi z%lHn|N(s$ZK~9N$4;=_)L4@Qczf_;CRd1rD5q*TPZW=Zh?LaWWNpwinGjI*Ia%oD^ zo6@PA9%wXOb8hjXo}imJRy^I)qmo@v88nhP#a>O6Ms)gPZZFDDByq zldt&i3l~xYbFlaMiS~`c;zhSQDJoKxf$5~eWS0~sOD-(0N>0YdAKdAaPl2fC2p+@;!^@%H&i>TrGCr3|8))PW!^^lUYU_GZ7h+9~@#xssz7 z4f`JPp~ae9YZvzq{V71eVAO?t9r3o-F-kR+E5p=o0PdrfH}56=Vu6RyDqTip`5uX( zk}9t^Iyp30L<1U|HjN(foEvhN+j@uNOvH zlx&O}86BHVJ{OM7Dso)Z;PN#1GO`Za{(nG5Eu2LE{n!ETtX)&}yZC)azhC)KC#0>8EZmnz9O}BtIOmII` z)qaq!x^@%iFcmbx_uT^1Zhq^fbxw|O38Pqqc3iK02wyHzn}3GK*|a4iW4wv`;k1UQ zDPG`qRzMc^N$7RVlE$pCAvNE7Legv6&d__%Imlm`{1Hu)54SSJC@Yb7OJ2oU7sVMl zY~}yIPw?h#z>Ou>i+EWF=&iL!u(Z)wCSP0R*G#APK8wep(UEesd3z=( znPus&{>eHT3-!w)%0*)~m)c!Kq5|>gF?S4>IfJegCu`t8``xS-Qh19E4t;-0L$SH~ zV+GsQ^A1yLStNELUr&6_d`p`#hVLnTXN8Ant`vEHN8SJsTrWrxKo)(XE%0Gr5PEQQQRD+7OCA7A>W(N znwXL#F(vWMB28tH1Td3)f)1r0~gd)FMM?xTCXhcGMtrits%0%ZChO2aRq4Gpb_sL%59aMP!~TvjiPkYB_tXO776Nj>^Ya z{VWpDi#P@^Gm2Y7k?{FzlyFHY_Wn+}RM@^)g*+#9b$$h;TBLo9yj|272UfX>IK}Z8Mf-l_f%-ZVQ!haoSV)Nq{a6O z6xsOP*-|uesFKl2w%q@Cjm~LpAm%h?<4edVMqbG$VIz_2W^#xulChD4I2r&TE&i61 zkhWg?DYVu^g4IVez&{n(`$)5P(8Xsb!yNSmq{KcKyR41B8G9>8ROhR+#uXk+JJ4g= zfd+K6ZpDb@-YO6|lv&M(4ip6n(_C-fFoN3cg-!$$+Vpa{{L)g(*RDdQ;phYEVonRn6>OQw+%GP-H04*G zFz;3T%LT5rK&9zxU!1@sAJ7z;*x;7HJOFZl?8m!*fm4fz(Vl1b2QMtFf)W(UvB8nf znzKV$B=rcv{i#FJ=;&3?RVq`1CXcSLJD}T4I?Dt_N4$*j*hS>oeGEX<+gq}k_S_ri zWJjegJ<5;BJKRL4YbAZPp{_ZBMc81iA4WBC4$~1c z&uA>8IZU|njwXL&Gz%=}qJxtYmv4j315|;j53r~D!t6=lY zFRsycnBpF4mKVx|Y6zdR*z)y*$s?&E<`Z*7`|Pd0PC0ly_wNp{Ua0Ep{GsML=yREY z!2Qex4MW@b;4g|8F_!}VTDp88T7JAw(>`^Q50=j@zy`Cur~lda6>Zk5xUDZB2m-+5n~lAvu}ptp1I-WMf4NQYiU$i%u-DuIjV0K{ zRg;03Bux0R$Hb^H+3_4GCMs%k$5Is*ZYB49Gg<@YZU53+8jDORQ|MD2^WpiJpO>PxD9Hc^EAabAXZrhR$eAZw*GBH6XyrnK{={$-Ie4; z8cV0}F4eW^Pbl%LvslbRiQ70uC;Fa|EG% znJ8Fb^$uMTi+tjEE>K(YO0~Y7i9IbS#l_A-NR*JbwY&FN*HDz!0~iRYg)eSpDMXcM zAjh3YjT)W#qjhA80Yaz&>)Bz{V}|Jvme0mUYkKN15ZJtD0j@7p$A6z$;MbYK|8hm3 z_lVyw)yu0SMy}EV<{^2pGxGDb`7XxTLkvj@rZU1%9Z@;5sFiT#OfZUGv|tm|yh2(1$V8umXnt8|MdG+FcdCMa3duX5<5n+BOntgmZ*s>fV?3fl z?Q7r*{;8e<{uUQp>c+%S`3o6#A*lVEM})FQ%PY=_k6h)Ba=v~yLRV+5b?vC!6Cnba0+IBn7g z3^K&LK!|z4q#GDm14v{iysa=aS5xHWQDhjX!0D4GnjD{FW5iT)(~l)YhaahVRJ!euKj7dr8};LxVd0(L`?y$oe3d;V{1@R>4vSh_7y8O zcm-~~oeGVfXGUF_c*txLIH0ZZRgJEMwJ$Ah(c{Y~F5#6Ns}B}qACpRO4h)1N1o3hq zwPOrz;`pf{y*>D39D8t!AA_x;Kd3!>>USJcg*a60h-r@|`f1{Uo_>qv$8%^;GEN^} z?`3V;UXU~+O+*FhVn z260Se{BDb(Of3{5f7u#m5J&3j1fNfP&;O1~!pykTN*sTK zqD&>QEq*o91mr{QZbt_eV3DQr%C+y4pa97Kz;ps!e%269+)h9*mYD}-?lJAl5VKH& zQtek{f1+QHM`;v_lEX8`pF@}A6+pt^oul$&Uf5dYBPmUrh#Y zZW7hGhDq1}_x+eAKMIxXRyvVpgfaFD??Oz>*anBT7t9o-1i)(uVM_~LrqK{|F=>Ln z`tcdnw*bmMV-^~(%F+Z^ZeyBZRtZ9ZtM-Aw8)|SBK&IH$`^dyQHf04kH*4juM1nxI?9iiev#y zJFiPG<*bzBdo{(%CH&$CFu?zAb(aXnKY<%TEM}7y^HACp)?HeY?Imbhw_+WOfle1< z8cjLg2u~$`JPl7-L@<@8>xRakz=Z>&6vKMeVJZQg2)96(f$0%V#@@9t05=w_euu6{ zdnz~nqdbu@*4+q+>liOBJWOz~@K~I^mjt!ih9CaLQp*Qac`;FJlJBPK$@Spljl}hW ze*zs;0|-wHCLHB!%HXXIVb<69prm`x6N-&ph(z{zWM0&Pz*jE&h9jBx{7>v*+Qyfj zHher)ahv0li~mo1-x=0K+Vvk7S8NNpFl1rKku9L}djdZ50NwP?WX^QUj3= zHdGXJBE6|m)S-id5I__Wg9t{X6A+9N+8|K~5X%1y>~;O0_v3rLUw1wz*9CLWJ*S`F zIp>~O8_4r-@(r1Tf|QHdQYON1Jh4)EZ7KB~<3&BTl&ZLi^uTlKBS^;!UwZG!U3JV= z-dHF>b0^@AC^KPt=lZd5@87Wc}q0w@8{yC6cGok6$A#hlS?qz{R21Gnv9sB)U zdGm$;X%PgUCt$ltP_3#%q>V|;OVINI2Q=_#sEFu~F{o-HlgOFRZ!bb@`V+?_NH;wzPXX`-+_XwL_mYxn43V zYwf*dMjzgP#UA0W*{PT)V|aai{~G&WO4qAh`2ExG>kr8Mxo`0=FZ#MY*X;B49c^e# zr8W^Qm_hM(c4*+x^n^v$F`miF>HA{q;kLn1UcCgd= zRj7N%q(olkJul+gTq>0*PwK%1=T`&&Y1xR5W+MzU?=J#n@;H=n5@LKE)n-n!R1HElg;TKTgZGnVKA>xmzVOkk%LnXUrOXlEId) z{XRK-yJ{jgNrqu1L(SLha`BQWzc*Xxd;6=;GK)r~60tdLMjvZd)bjR33Y*LrBBPA{ z67Jry{3{pJ;uKr;v=?sqJRlJ|yl&A<=Z54P{ABKW*h<(aIccZd&NPsWzj-D>PHNg8 zi)03s;o0R`v-x;i%%g>m?MIA?1l@rQ`B?r_M9J|Ohkh7ivhF<}${h~~VlYBgId7Py z8*3Z~`adG|Cc?sh9-3p(Sj^I|c(HjUC9XT0HE$~n!7N!7rpd_KT^us?cE_Tj(1coR zYnnj;*ZqL^^PX`fUho4F6@P|2P$+H}He|`H2ywrUmjK4k7H83Bg3~u4)z?g_R-Lu^ zHN;@|&Ia8@me13z&nrdEdxJR+x~yWJB6PK@my#7|Ea)L#_*0#CB-;3yjI?heeZ+1A zI?)W3{7+yTUfs8MUsaXH@Ds7IDK{+6F;TH9Kr@>?Y>BRpmckJ9Ng3PY_2W8E^9~PS z^PBXQA*O5o2`VJ7!9(3{HS~;DcWyHk@)1Th&ZvDfSfGOXnxMh=@YEQ71g5it!)A79 zYP23s`0BG8ZOq0e|3Y~iIKfz{3TO1ZeO_p0+rjEL29j3!<{*}3wUayR&v;f7dJgot zIHT7j#vpikI%xdp0X>dg`8)S9Cywy4ShVI_1s z^9yKxQ6^PGU-{ex?ma^8g4n@$qHtR@n&+}2MC$UUIlmo}PBNd__XFoBjj%zVJ&D>c zZ#>?*6n#>F>sg}FZ+GbS_t8wFIaD8?gA93H?UyzhSznpP1FKFx#oJOH!~z+kFTScE zN4d77JvZX=BoQrtderkyOH?`scQud#A|&>2HHCr9s+)wK z=3L#Azn4a&@!y?X&>AO+Otc98vn)xoyZ0n7*b^OEBfAhgk-#74u8$Qw{%7GiX@5gw zNi6?v>L}k55cx}GYovX>L!LRNgETl?lvLCTve3hf6*5t;RslsqCYgVTrl+gD*kLos z#%{W31oiC`{0^I}2*`cEjA9jQGPzLH31d8Qh7ooy#^XoVlRT-*!5J2fD>C{enH?KA zM$9QMY~3rxjsr?6ifUQsGBCHEdr1#KV3&pN(ypMS1L>gM;W{{+TxG^uAjvwWj(wir z<+mS)1FF!*{phGGI{Ff!#`E=PHa8z77x_38{^VtctuTx@Fyo@ov7hC${Hr*qaYQr1B3)7 zvlC*SX;bv5^uq0yXxx!Tc1Az+-E9Q(8MK2lYR`O|x`g^E29 z|AQ$N>M}9>3gGV`e6-ST@rsZp3zTPtrai=+9X8ME=y4*j4pog-<*dWqy*+Nk_w*yt zQk2%(P1NWCLf;^QB+(Zb6r)&O+5ozhADPi#10>2igtGDeYj}WPy0G3HgQ`q+9>?jE z0N&~$Zk=$Dnk4Yz1rKxAx13F~8iz!W`9GGbB=xvHTB<@-amp8xc*6HvjmCPxWWG6qHd{9C&gid$ zc?13+H^K5lI4}66;6H&AJs_RB>Fi;u_QG{TFJO)0PzKd=-e7c+&fZazP7hOPe>wWA zvGMqNNYc}?a7iWqv)D3&-lKaBuS?~|738-z6M-e|ffCp9IbHI$dfFsOR6ROBNKj(C zZ-deJ`v~?1-p&%5zhd}$337wP8X4!9%-Ul)c*!;nDR*>l%vMJB+}p=bXR_C%*x#u3 z6E{BfRw>X}IOzfg%%cVH}D5IlYVG?wb9`;;{ zCY&Mfwv`3arVSD1hVu+2BVnscCY$#{;JqsY&pse*8Mnzhogr6mn(sru{9KO9^8k^) zPA7n(vN!m`0+%SKH+b5UhV*VgLLqBz|RmEogPx-R;~> zqm?)Dz=S&Jm%^v7!!1XSO*m)_g!uXZexmhRBG#=z$xSwvUuhXg8q}goyM6(IcO(*=)Lz%{R^$C`i0yAF_WL_FHHgA@Uz2*lpo_wJ z(+#}o4(`#yinJ)ee&u5MNB-Ga<+^c7g?fjob_JHAsZFWO?D>GT_f#M`G~s7L?<76m z7e(0x#XmA*woEBc%?K!4_~VG}AOZT;O6LVv6Cw84v-^}lBv8_#PRU<1-#&lW%B?$tQN zpk}jYH*z2xcEnhV4BOPvC%R1mLnAYUp5y$YqjOr8>vA#8FbdRkK)u`9LsDs?k(h}j z^g`(IJL#VVl=GSV;5&G>k$00oX3Lig$ZQr{UPJq}qJUtr#WB3;BH9eXS&^?b%$wrC zYxR6Y(gp~oA=&p&v20H-by-Nc<~u|x@5nterkS(TYL2f!xs6S)h@ zBf8|E$|HO8QP@{`L&>9tyx_kWvvfwNBBux|RpaE@oB!km->}`ne{H;F)OeCy-91+F z5TznE15atqd|&@FO>U?5LjBB77t+dPZ}E2~T%}5{O?I@-6gStF58^mlt`wx6VSV7Y z&lSjUAB^1)Ppr2-G3EsyWXys~J|Gm+w)kyk%NfPJ7cgETqz>eFkz z-lXVhS1b+uGacg@WPTVR8cM{^lqT+TkHRDER?bN^1cH?FrLg1QWKZQn7+`hRB>Ah4 zIm1Y3$eaF5gtQ1$Gu%eXx^Ho{7R6V6kHRN|u$<^RwGE&ERmN3m)PAD+n$+Xvyx=jqFajXS=m4uCn#hV*)_bKN&={E}fI2Lm1V_dzkA_ZUUX#ME)ab z6OqoX*4NF}5Q(KzB{b?E(aN80oQWSV@Th<5G(&AoCM0v#$=Y3#Iv~7&r1cRVej+gc zeD0mGI706sTON$^F!9V(_?G1AtlO8-QW)>MPpey-V!sGV%&xrYSH4HT!AC&)2o=SN z)9J$-NIr``zTHT%+l2QgLThfF+UrX7;GWPGDamh-Ii7k^Pi34=zd{XdnK-x?;+qRVl=4eNYYe7Oo&bCavc;%-~u&arh z8Vxl$R3l+DZ+bOvx`~*%f=-0I<3-R#Wo&UVZ#s!L-H6O?G5@m5A@QO2>vuPjKH1Z< zgldbjfxD+8eQl__w5!$M=Dt>a!KHP^^BZ}=0hs7WWAXXzTN``!4ys%SB2Rz} zA47cu7|%2~OIQV&H_xkQRg}!8+6o9)=81gG@;pu37(Q@>h!%f2Rrcj(Lbb>Gb+S&8)5EQ`OB6fQL7c%tpJCW0@{5>3f9K73oY^XO zHbf`s_~!9QNQqd@j){L&HEF4vFZmcQ9(QK5#gj<8dX^+F)xkM^rB`4bTiyDIq|@eK zAO*-Ri`u}Hx%swi?2Dk8IaNKro1GP9D#Q?#KH?0m&P3Q7`EBC(QN3Y;rEW5|dnaca z>)6$>lQeFFh9vN;p2F-4??`{P2o67JE)i>?qZ8bdh5Hy(RZfOMubl>fLrsXsAW?u# zg1lx}ZH+=&xx6@}_z%u!+KiJIBwDYG@0SeG3RTj#%HA6OwNI+X0>1E>^C<$F)cZn0 zrh3xIr2M#BgM8rvijf7n%TIJ9zjkhO&~hiQjHtk(qPiDY`(QEMa{DZ8wN`Dr=MMqP-|r$0Pbh zy``q6dH9Gpb`3jlpaC9ADY}yPno^OUq6G#`>-Pry>a#wgH%iJU&{wp8H+>fgjeVQ^ z!V@As*Dn=FG=z3YXcrGu*MlG={X}khPv7wvgT!p2%W1A+TrlR)wBjw^pNu?+2E54u z!gEJD2?vCsB=o1;4hI8U?S;P1P(~<=J=Qr{*G7DT+LZ-UnJ z(7GKbKg+YlW^A!9Z#tK-DgMKR(UrySO5-QdW{SA}mM`TY29hsTZb)2b=idoI4_p-%lwF1{*q)0fLnRDRYY<=eWyVZ`lI<4hj4iUT_Gu zUERcB@*p~7;}=ipX>*oDej;e5Cf-G7xB8nKZH@bCE%n+W9!BQs2PdkC&Q$*UDlbRO zL!nr^p$n$Cn-z+?n@${w%x^zLBX03q5Nhh94xfWqrN?Y&P21!L0Y%K+jZFom=Pa<( zvWej@n@>gl% zX6WdBB7}j(U90pF*N9fKc!f$BpI|(zV@-YWK-2e_}iszseFBwzS~6{8k>)LshoG5{A|2s4arT7 zRI*6%Ckhbn3YJerh_?%B4M|_-ZRyN!PY#h)h&KY6+)b-;5`6Gie+R0tU!< zIeDixCG$2kdFW}s{H1go#~&cMMH5eu)zNc+r)na(xG`!S&#&cb*-^(|z)k1$EYKs@ zrScl_(?_reNU;-rRm;LiSE4n~R2tTA@g#Tucayp*qn#P#M_+8E*3K;TqhEG>glBAz z3Gs`n`vFp%Z3h4fBpV1R1|(E{3C9bV$!gk?9a7E~jbjkyRh9Z2I@h`e^>xSMq5#Y1 zKgnxbMy_v1uD|)LKgNU2p84Jl_-WM%CjTu<|Jq;Zu!-~w{)WuWc`PSjlNLop!V z_)-QA(4`$+>gi9AP0Y3V^L$>^y<)f?sVp z#lW1=7}}X-k<`ctrQ!hkDl0~$cw`0h#4c@;3KjWep(x{v)`;h=M#g@O0Sw#1--?d5 zf=-*D);Iak@hC6zW0MVPoygw=Xy3d1=6uyx0m=dAM2n*OT6s*pX~k6PaV zm@WIaxm%`9G268%q~Ea1AgQwpN0r`wai}o!w@!PAPuN()~Q%7R!H5E8n5HG_wq!oIvDd z=eN0qq~n$>NacjDjWcf9-2y~K5>T#{xm#=WijJc&@!y^2y}0lM3i2eLCr3*cX%}LS zK*vPlCCCYs-R?2a#sTs!PZundHCPa8(MVL)+;LWFRnwNvEWiWyVnrYoK$l!9Ntc4Z z&?Acee_@e^&L>%=J|lbNG{xmG6%C>n9K%N5BXTWa2hA`EkraxfHS@X%|XL zvJ(r>=IrR}g_PSWkj*T`aT^Wo#hGCuMSsDmsy~k3#_P%5jx-{U-+0LF;?_eX*ahctY|h?JlHwA{gQFQRx?r+zoG(zWZQ4moJ&eNJtTT)V z53f7m9gPQo^&yX$<1E1MQ7z}U`ALg**^iNuVm-o4-o%j*csM0 z)pcyvfeiTDuw$rlDnH6#xi0u3dnq#`0|y{g0;iQ8T0Agryl4!AMktf#W5iJPDeXbM%c;nhPNhQj-e&7bJ~*4%PH9*(J)LzL%pRo5(BFOlpd zQo2e_atg$xk%^J2Khq%KO)S8*AK=jO5496rjx%%cx1_7b1&MHsf)LvO98up;wl6#Z?m zPyj8}xX!`6d*k1Z=Uw{SeVefmM;KW++p=*WqyOsjgcc(-_&zR|=+eeZV13Ih2FGw4 zCyt^J*OHXZAmWa5ABcXVvz~N=|+n}R1pD$&>cmm#Ujryh; zyPAb4m~$?86*?z=7YgtaSp7Ec7bR8Yt$dXV1B@FIYR<+jk9t`?S4oR=JeJ3(Cxvf9 ze9SA-g%Mr5W2Co14RsAI*$gMOn6Lu71Z1g3RZ@~Hm8tGSQ<(f@LT@vt-tpLkZ%>Ow z$H6#Yd|E?%+&rfNz{*k;B;b0`t>-Sy9(xx}N@(a3|*GI4jA<(3 zkAXo|Zun4;c3DI*095!Wt^5YR0rh?RQKv%+^|is$28rEHCFQ9}{L6WdoCfj{5Afmm z;g=xlVaJ~*1yd?uHtP(n^Cn-G7uBuW>UG>@IIce?a=%ab*$PW3~-Ze8OSPuT;0ed(FysBIr z{~m}@;~3JbG;tVHQPgTyde(bJZArHpjF|L=3+~vjcw0AS++695CExk}>dcdP_o4?= z-zqjL4NA8&Puy^6Yg&yZ+oyCo^%E>6)R3I3Twf=ZXg2I9k=}YxRCItbD@L9bJ3g{J zfKFGCkEYa;RhtSCm&bT*ari79i$IDi-|ZQ2VWh`Mtwtui(;qEfy?Hz{htN}PxOKDI zX>-%jM@1fSPKoEfD$&aC?Wve4+&HWA2WP|TUi(*yi5IOCnhu62a6*qKtKc|K-#pJ7 zaCYN?@2T;9sf>5;_SnO5B-fBo&*MjO=X!uD%1H;-aS#fz#?oixZt*`LN-yabj(@s@ z*w%mFG@RoY@E`hKl&864rM|C7Eg^kIN7FoyFx8j1?xhdGGBsu~-jCRr1xmTRUD$j#v+mJ zL-1oz6eEK!Pe?A;(@agh4`P8%i5A}buu8)(zquJ=Ti|fIzP)|B)J?t?{}~>B{FK_! zfleAxpqZA;7u>lsmNT&3dfjUN?$4td6e9VvY!t?ylqfFA>&PWDDqj^ATP*I7(yZR12MYH2il zz;-KYZT>c8AtH>W_ZLB$#Mv47jS61W>jbzmDWlhI{X`|!u@zR`mXQ6xeswRZ++v;f zNZ@xg-MfC5XsTo9i{!0}yp;I9nKAo>?B}1K@KhexK7G{-&gzQJH zcWsk1Ugg+qu3i>WYJ`1ST`hPqP-ncKFxt+mE>Cbd{OPdbj{job@^?H*hsj?>oz*|n zLOi|ng1lrB`8Ud<&abXskRXQ>!JXe+`gwt}Y<1mx#eI1j8WJ(x>g$ofVE~d2bziEQ zC_$PPi<=}4SvH}8Eigs$p66PT9u$i6|DI8*IZvMTzZH@|264!p*n>Ef2Xfhp2$1HByj^`YR|w&v&} z=Mt**v*wXmV)T>l?BH)d?*5X^mad~)%a%2dsC?sziga^ir8#unq2gyl6C)k)^|RYT2>bc-&5#sJomH1{7R7Xz0D*1qe@Qv))~o4Yi~^CSMbYA^r$ zGf9en=`b%4|I*=qL5J7ULE`on}P;cFuy zp)4yQL8k2LWNBk>0RVXAeoNY53{k-!6yc^=q0nz}uH&rc9-rO*lErB&%VE*7wEn8P z($RTA)vDpBmD+N365I{e+ta0|p!OW$atSe$Hj$*uVem@h|-UcA$w!^*!)^jx8{&74EU< z%I?1A2tH?e9EOT$Yl$ZB=ZkeLAkm2O6gAD}g`r2A?v9qa-r zh^{pjYMVd2x^_7n;av_`)i&gz1pokAeX^2b>R!2LYo57O8m&B+8yC6d$7~!q85Sn6 zOfso-$yAKNk;rtJ)Xa!J>>c4T_yEcU_lw(X83s#j6BQ681$=Naj=m_yqU5px_qcm` z`AtWl`-k>QqPB|iQeU6^ivx~!6t#od8SJ(K;VnL}svLbu>i_F5ggJ{xfd9mr>qHlM zajt1{y(;c_z!ow?0Vt!eN(m z4~RqbA0{F|l)lALCTTS(0)vK{ z>GqYr>>keG)Jp)uEJ^yKR;8)P}CT*3~ z#@6wSzXs-gnIG5NHY=%rLt9VDDEfv&hP==yN-nIZXf7n`x$#fO<$T1awj%5+PY#9J z|2D~fIJD*wP=z0`$cKQz6}7giNBVMb&$DFw>!s{h%_br->~;ZFb=zK0L?8-D<1$?y zh5CPQ&6K!XG%Li5XeQ`006_ZBi@F0Zw1M{hIe{*U z`Ts4#>YNv8o6rO#-~e;o#D|#k;>)ybvf%$yN$f9K zMvtJQ@sX{gfEG3yIq3-1D6A zeMxYhOxl+@QbyH9yB$Uh!{c^~(cM`{T5pAU-!(6_f^ z3`)(^<;v{8e)^7@xBhbLIMe$AltQygqW(-x)rojukv34*6mX1nR#)#(X)qROR9{ z{U3iU02hA@kCKpdO-*>UrAN_5N&spN;YTAUOdFGEw2Kx`AKmW5lbRzhxiFfsVJAfa z(Evrlc1b|xJ*^E5#2I%Ob~CFvs)f4V!^dM%3NnH&j8l>-H-fxJ%$&%5Uc}t=5fOvujglJ- z;q9J3VQK zZb;8%+xm2v=CH2|{KTliu<)N1?1fE))ZLPVDnfEk>kjbZ{bxq`h|f=Ug2b;@QEYF4a+x#Uj0 zX1sT78?PGh&J`${2+J+OTamyS2?TdCPwrZ~A|RbTE~lIzpcF^}T}du27svNnVr7zojkQRi?4P_Z7px?q%EE1AMXS5;uvheN6Rqa=#5^6jlhfM-q12`6t&C{^Y4a(GUn*^#o zvi--)^xDZ5Nfiy@w@b*HN{tD@F#afstbP_52k!tzOxMZO5&w7nJ=X+bylina$7}*6 zpxH)6)$+G5RSmbr!u&SEJY=GF06VfqM7I5e)Q3RauJe(T-+rq_N%6*UFku>vll7b3 zx+4TMT2K!XjfQIc8)a<;vhNBEUWlLHJ*LjcKV#is5Y|QAI0s4Nk5*x7L%6s(`G91J z&Nr~qrcu*lLE<*^0O#3QUTwYVkLlHP9}9FW99q+J{z1f}8~3g?v7=*iR<&8clIW58 zLQ9_o)pLd1_iwEX4l4NqkL+0dsa~~=-KUwe4IKBsxfvnYO$@v5LcQdd)?euY1iP^` ztRG0cZ1iAlQwVM*g-w>+A49a=D1|N*sG8G%b(P8X;$sPj7Prndz_7U*A40V4tGbo7 zJ8#CeIS|fGHP1d5?fRVzh_no4+TwHPv^Xwyhq7-He>GP6z3rIqy+%-D-&wT&9Z3@} z=dHdz2EbBG{*As(RZfVNZC8g`KTy6^zpKJws-b7>WOC7R9xAp&DUX$t^6QJ|IFjL8NHVpqMbuUiT10W^Zxbf@GY`*Bci}Vyz&;+}*jRG?AGnTTm1V zmC$y+qjd$7SG_Qmb`d`~2+nQ2Edf$-K?e1gDnGUV-3Na^`X&_G4kOwc2Yq@w^t)sU z2TI!gl&g~9zzcrLu4ZaSCBgSv;qQA7*XOk~^mE5EX};ctp2|1QnGjT_V%(Zkwzm}C zRV%Ot433yLW@J(32g??^PaGnra%G=3y>KJ-IWnS$I2zs(z~`)j!aLdbc)69W!F=rw z@NmWL@v{_v>uD!C0){K_V0qm6^OK*Qpzac%L-|)~f`qsF0aG>uy zp{c_4qy*y>d(EE{x!_F$i#x$hH^$Q$?HtAz6C->9G}CfJDCCCU`DPFo~WF zCFz4T11M;&bClBVrkh6jJD z#|)?fMRu2Fra7vjnP_BY=}U2{YMvS$&K<3@^$Z#)0|x)&K}^(;tc)6$KTe?);CfSW zaLO^;_#3&)bVf@ZHU^yqempcLrDA&10=kDs3oa`jAJ1ZG83oqe*Lg7_$Q(NRroMnM z?p_e*7qxd;@Uk;jUsDYN0_QZFqN>VpskK$U`TJ8hZ>D;ax1Axvjf$7w^`83(nuQ=h zxP<{^wtlfcttR}8j5c_&!?DdKPq339ycrP)qnUG=m4w(DJB!sUnhcBu6|~o#4Gar_ zp%192INQAFl79%z#GR~vwY3?_&`Wy8M&lrd^-`G?MooBoGpb@FeSdppx4@RNxO&}_ zkdUZgBSaQ;5M#+$Q6!`NePqVGTRx}VS)RvkLCuumS=1jZNtE4W+#+2#oP1ANX2>28 zLE^;EdVlEhu65?ldp6C8gj@Q4dODonVgqW*$P|DKq4H)ax-#suW;Mi)nFSZ1$OQmg z60ZVyhg{~e7V=sN2Lurg^2r|&;{>rZ_ekHAJDj(Uv^4myj6zMJ&F^Vub^wyL|@oUpbPfaDKG3*7+}c9k`>)lL1EikgT27$ z%ccwPym;u$P&n}Zc&>=@O1l84NXgfgWhYh3kE=g-p81<1_4V-ii|tZ}k_*6=;u5gn z6pI1*?iLH!NipECpjHIX&dAL*>H)P^kGz&kPOw%i$6D`lt0nr)>U#cCERUi7*_Fcr{9w1 zd_C=At>n0Gm8xa#GuT$jOi%5q9ew1koMgTstMEtZvVSPN5L1nov|04@Dui-1YX8gP z!+bjvYv5W)gLX&Z=e_koJlfaNcB6X&pAT!!Xkd2i!d^N7O-{duJ;O)RW>yH)(k&-M zZa$~nOv>r$t1By2{`6_`IDP24{N?hRnREjqab2dX{d`+4_INbX*h5GgkT``I@_QWt zx{u1Tb=gR_q{!3y-P;WxvJ`OJ-(NDdP47opGvb4t%+9p{1lUE`Kb-J!3-GiU2ggzB zxK?yY-z{D{x)#MuA8E-%Qj^>LuJpQY&6m%upi;y&iM;P9dIX(;XLO5{WhBPc$kL^8&;=lb}`T%d8$h;Db? z7GxE&%F`FXQ(6|5PUK0-P1f)uLX_Gq6~8HQ&7jroH$CS>?q1v7`vLpmHXxc(ehd?9d$5>ATfI$z#b#D3>S>>o?3h zeb&xHB3tC+-lu|b0Gp3ffR{ilN)6IqFhhYK z(kcqz*m%Y7?ZXx_CSNgkgU0olf^+24Mi|-U=7lC&_Fv(4YFZQW*XWOkZ0r7jm4yZU zuhnQ3J~^|q^*k7g0M&UiJ;n$^=2Y~bA=paN-K0z(ZM&yFOx;O9W z_Rs!7Bzo|HU^(KOBetdw8s+;5cBAXBX@v92VC~u|ESz~V58i+yq>Q!9!=3~fgGP9} zoX67ffBm0W(`hA~$^2^oh*Yk(#pM#;#Hn0GcSY?iA=x!!`mei;F0TX^`hMb1Q%rM0 zKVe==#LsuYF9<`X5xtj4#F*h*UVtd<%D1<-GA!u~#NAlMt~iRR51abp@$@*zq)Zv3 z4l8SO1(V%lDsPnV3ABGVs-Nu%v6;aaCpY(^_AIbd>J&*o1R)7HD6M^F5uWN5bAbZ& z4Jl7gt`R*h@0K-q*F^Z#!yf_o0-V52oF(UyNE82W5s2KL`h@-{QQIZ$c*qBN{ASZa z73Con6^$=cN`(@#xk)G;eZ6$ycK=kqp~L1Qz1hucx(=8rrIS|9BI{+d-~co*?e~_J ziGIdcbUJQ>*H{h?1SL*t9jAwGQ2j&_vgVv0#de~bI~_(^R%#5`AO6s$Gp)q^$r|%s zk-_iYyuz2*HRGXQ(sFV?j0V~Luj(B1RK29}@?a=QQnzThWM#ai`oQLW;Z?RZpd-Tf zdKUfF!xN}4U75zapedgyRq~4>&6xa3sdGEThqa)rgYHe7Bm$m}8&$QK^$*v? z@J&j#w}Ymr?4ulyfj?jPJ?bZ%7+UtkKj4Zq@VyHH)JkyY0yBSW%g@oMMu~2mquB-W z;*PxDw?V50uG~lJ#gD@p4E|l+rS*JVna^&f}F3Xxho^cE4qUilQd~*?t z8l^uWQ9@`Sv2CH|@i1gnYM-bNgd{KMx4BOtY5D!_Kc|aYCC$2NYIrZVav#LT!jxfN zK6SQkPO=5IwfeVq>342;Y6uwKy=(P}^BJHgkM{c7 zrT;pNqv`X?{!3T6+dKEV7}fyBoZP=*dI3Xc%p6`%^I=)7H;bpq3E}ygfr8+kXA`uY zmcEn3mC74R?Qcc2^|}e_l#m^QmABnkN&%7>TZ1}$;t$)OjsMYV0bnHbWx4(F9V4!S zP1!xaWPd7FakFore|j^-X(cvD)8|Tjmc#MyN+JJuf3Fm_S;frx=u)Om_-!zx9|td^ zD51sn9TP>V?FDa9GWj<&t8VP4)qf<2%w^CRE4J4pn(EQZsVz2^*)<>dW^z zvnY{*ep%qb>dN+z(7oh1mtJ0=`f)nQ&K(OVbV6_~(W2a)UL;$my^0XOA(e8G+-_hb z{7wprKX)f)c6sm{p)XUpAF#(_i_d>WkMc+}mPz1kRHp0bQftoO4WJx4QZO{MJgv62 z6Lt8#+vN~g{}4LLqT@Oe$ivmxdKk*cV&vZY@xrkYa96BzuyH{gK>EO%TU*Z8^Qm9_ zO#}O>!U7Y36=dD*)^PpvMktLQL~+NC?zABTr0GFeSfg+6GY zwB7(u*N%9bz@dJYpV|Hf`5urvI?iatyx7vA^0c9sof!CCMV@)#jCkgCTzbHWBDxLC zB3atmG2%H0H2OWwBKdPgF8!HiN|eO!XP0F0xr$*`{AN0otXBOpnvBizERikTW^f@~ zho)u4qu+eiNP=<#GTwX?_jb6;tMK@R<4OuU#eop_CH20MPse^k2J`CJl!d45%Q_ar z(_0r{BS#~U;#RQMIiRC34VBd|rCIVFYR93Q`1VAjzb%wc!O5mY~? zVfeQnbuCz-QMtltRmaCMlK`GVjCp`7ooxIt%GgN^!+_gHafe5P(LGl;K$lR(8|Z-+ zt~uHD1DTS9gULey!10SGF|kkwaX;5v=Nl3kd=BeG z$0JW={-aXydo~|p!1-Yp+;VsN=$?hPC*Yeh9ZnP0A69l#MFbZ?)zf*L%gz*V#h1&m zuY~Le-JHQ`n*;CXBYsn_fH$Hl7g$5rt8-TKq3GANXsw@ z5!D?1)B9_AJvY4mMSDPsE)VfdY}--%JoHkm?rMbYbI3rZ+^N2C718A4R~%#Ctn#mc-`)>&Ob`XD~{h!^|IASnsT4}+eg;$`U{{lzp8Ko25+S@-RVLQrD6bZ zXic06H>ossXF0PnsgeL&gWxlk(bv~g{SE#DSIy#tfqw!?E`TOrEgE@!=&DA`Q9Tt3 zoRdg!jr_-|p_$@b0qrt_?kGmvJy&leFf|}x*$7e5z1Jyum0|b{@l=@+Ctj>okkw|W ziVipCS#)(Yr_(T2A71oBlM@zwH@x%ofN*okE;0aSqfiy;;$?7p`AlbUzT%5#uoO(H zSeax7;r6rt)-fCu$Zjq%Y6%3iU@qjoEIGWoL@d+2;rRQ?lvBxrsDAS9G)ZG4X%=}5 zM{wUh5-d!JShp+`S6qq4rlJrznMaK>A`T5#+|~7iXSiRBpJk4)%$mcC1k^N-SoTJ^qRX*d3u% zBgW>Lk3HtnZUE&n>AO#VB-QuY{&>%oq+jJW(&2R!rS&GvxsQ*u`edF$eg={`Q8ntNvWw%M&c~-g6N4G?^6>S^}Wx37S-d?Ge`79~7 zUNab(lSV!RK=)k21=83$YIWLvE+{7&+;X5B`Mu+;Dk`lL#*EPgHRs>OxnC&uxKd~o zU3Ovpa=f^&IbaR~T%98nY<4mMWwIy7?H2c!V9=q)&jD_sn6O6h3>l(C5Cp>p+ z8tnpRPh7`Z_IEw8cPxoE1Q@Pl(z!(AR%q-5qgP#j@R%*ZY$!5w-{St_PUL9JDF_g| zYn%EJKTPD*?blgBt!2Tkg_4o`xn_@kTsDQRS~Xp5nw2}{0$MV9!sg_o+s+-^-m(LX z;4d4YftU);iM-jbnnVg+Dtp5ui8gFsusGL}pjLyOK2Ch=W%9mQ%+u0#moMzI$)cL4d7 z=3V_OloiPBep-?id5&zf{4%?J8hJtRXJU=}+g;%CV>|O<6o|2kx^#?jGCOd7klKS4 zHcQ^;YXZKw`PM!Djfn0lUrtz5sRs|5)ia^1xaL5P3>`qr1l<9CLidtdVwJQ!e4hJJY*Y zVNNUW23^W?a$L~5N@g#K0lPI>GBRi`O!9uXK2CRuzj0Eriiuh|Q~9veM^Bwhv-S~^_A^WD zYT+`o#iKvjoy=4qJ#H(F)H9j}V(V8(4ec2i9l;7;shJMhOL>}9FzBUGzq&z?tA!la zEhR)BEZL6SDstRTDsQv1nA!ERyaVLabLK9*oc8#`PQ!bzUZEgUs2@cf_i85~er!?X zgQhu;_|{c+4WHwArPaO=yi>gG1V=*QyVOT zrpeG2!%PlLZ{im-Lj@*TF=&()g)>is?1buC;EIkQN7XY!3ZtGvLC3K2Co|x_0t#Ra zJB0<2T4>w{vlF%8f%@CPl`Wgzr-M8z@_e|CCwJ3|r>Cc%fJO3tN?!`7_sT2u-)E|o zDCbx2HKGi`JHP#}`wV^&lERyDYt>h(GAnj#r+EAtRKKK-R}FvrK5Jo z?@cr~g40(BZbNcFq}eR$htB#jy0{%$=x^&41CeA|%#}Jx?8@83bvGMizj&L<1Z54v z;g8(E@b#5`G8v;CRz3fs)rw2_QYbY!n?gU?>y10Xfw3Xn{iQ;KCf<{5X%%KU4x=ZI zQro_c4|k=+hQ&Nv(mG{LJo8}@3&#Hw8^%u(!4cxZ5!vdp)6u*L7&iyc-X z^h&LXlcunBq<#ylev)gPjmu3p;4~0zk>6%T(1|UdBfZ#ul8D zyc(P56HK+$&t*~AUUWblX(&db4FX~eTH<|W$Vy-ufG@=y|G4-JNDWhZI~SDZ@a(=y`@+64yZ$(L$E0eBO%KZHY< zLupPXF9QuG*IJRgCq9z-Q09SN<%GyKT~w){ST!Lb;qtZ%uWaPEQ9v;-F8NX&iva_I zvu$a}5KNCl;ud`9)egG~*pqV&vU%*KNj;hAA$dL z=*t!a2aAFvC^HcP`jmNN>}uF~=DY+?^O$8}G(9Mvgsd7j)PR)rkclVGAnLoG6mG7e zIwpjb^~q>P#fA8wHtPmS8gIXk?dywg1F+!Fl7bQQgF>0Q?cmQ?_DDTiod~O;b6<2~ zICr#kTTCr-52f@AJ!19uy3~fdjneb4X2l~sCuwHZv6?#bBC$4=ljVVtPvw!v>!xxTW|qJ>v-dT#b>pr(1V^TcC%rwUPm zo0@Ral+4hS^&3z9oI5DpBj^aQlqMNx|W9DX|JAAk0eF_+>dJGGWih*iyfbG@! z9HB5XGY3gg+Rg@U*FXP8Si1?y<3iGN6kRnN*wZbMFlpE6Syk~x0{l#FkLL{1jM=4n zrNu~>)nlpRcY?W4lbbSd1De_l;$oRMeauf&W!%RmP;URrwCw_{sH9l>hDem=X3pDA z>< zoU!a5BmaGMHI`DP)y7)km^yWoOroaI%FDRRFL#u4na2qli`4tn10(YlH|dji4Vx>J zP$Z-ziKS&i%NK9LOFioKo9t`AB}>rDth?-Anz_=Xk<5)`}xYCPm{?>xm@)!96#nTnOtCku?zgJ3-kGD-Kh?7ejIz7Ut=-> zgoVySF`^O(Y*4o9hf(58ub2G-C>YYlQV1x2`_G)%aR)=xbOvT*!?^6qL&Eg4F)PV2 zJBS9DCz*cjT8FH@{`xtDXYgP-&8bml1QsJ2ZBE(v>M%sO#8GgsP%^#D-?qrdJ2W3A zXMzltI*Y32u?a320C@9{FWVt}Lfu?G-5!?QmJI#FtHeeG*+$*5ac5~S)jM#^pI}Ny z_l2jsN6H7X3z*=+!3wf#m#<~p7)O<4pD`hht?mbY-nFu`Ym}Z|Rqn(X&Y)RZWrWf0 z3jowZ`_%I8(aN{NTd+3SYR))qmHC)KB{tat#t~z|It82kHoAjHpR}4?#EWIIVwK~E znX=ItaF7SF7CVPW%_v_i^P-FAxrSfnstH!TRlVF6GZdyxb@(>kzHFv{G`3z%<(lx2s|D!@I} zBbQ28lO1sS)`>b2RjNDMS&5pB|L_$SM1ioVq@L3E;X^Rn&51NFpw9kQ&}>W`Q&x?= zm;btB3}yr{ObgP^>VWNlA?S7A!!7ZdhcfAaz=Ross<-(?qLoF^lG!`Fc zBC+|16cp=FE{C8&wVqp=bN>&zw04duiS4PV=>&7L{;!iJz3)irgeb(IZrP;>)_5ak z9OM;qtf~FII>WVRg-B3`P`?n}pH}+iZc!-el(T84`i*!MD zA*;zAR}5|3#Uw89tchMS1BBGdi-=agEi4I3p~qt@et;1@1!36NkB+@f zevb=`Pvwe2Jhk7fW`Vxd5@$Xfx!>=N#Q$-X^ycx!P_IpUNN;*IcGoUi?6REGpYs9Z z-rJs!el@p8W_Oa{&$I(5*y!hZ7;i=5s6nonpq}a}D~=)^u3HvUH4kJ(mit?LUSuW4 z^|Q{ZR#p8PB$q_&6pLDWQ+SLI7%59r9sh@DEdK{|_t@d#y$B!~j_nzU1mdFtdxo#Y zQ`hm+^K&V#TkFj8^`l5i3-WFNRdb7W@a`G?Lb`YDzTJ*n>zUfWpf2(A6i~e4Oa#DF zvtlmH=IKy#pp__SH_W8qV(=2%9|}J|KRN$zcc} zY9^;Me^Y5>?>f2RUW1h?7M*qX)o=P%OVpp%1j8%8k$cV!ZaQCse*_xX29Tx2X!N>~ zPUZTDV!~Fr;=buHYw_j_62SWVw`Sb$-DJq)tV{Pf1ud3d9sSHlk}sK7BMVqN?p%;I zeopM@s+m+$H6&lq8Zv;neBopV06-g3(FRFt_O+V6%49s|(*!QnF-0PHH;>IqFasq= zwq%GN=Zw1(jQcm;n09Y++iK>WWAMYX(l6@Qj|)E@UCA`quPkgX%D98~51G(O8q*^U za=m^$kJ(KM`ap?H(tGNjs%^#!aRkto;pEeG>$B*2o|xySo|G+T*Sf^ONQeXaH6EiM z;skR{m4QVS8c+s5{B^z!DRvx({2u76+#1@6WN#EGlCiBoviFR^9r!Xd&_;Hby7*Gf zTJX;5v+fB6tD75AChzuKr6acn0mMoB>i|Gf$$ZWFqChFen*i-gIrTai75ytsEq3IE zCh}w8M>rlx%Z3*_si9hxaF{}DD)j8zwXSOZ=#Qb})rRyD*OG$YsQPJhHj(ynEn}Vp zddBx$y`1zY2>Nh^oVTcc5aWjtoRVNd@Kfk|viSnfZ3gO%Qs@GF?wCsrTP}wxd>)$p zNfc^lwN*V*l?X4}m;|V6QNRYMUf~#Eu8+MM2D{<_Q#2HuoRFY`TRWXH^=BxE>xnn? zI{i<=l>y8uhtpM4llaa|?#VlXh1nh)J3?W&4zq&1+J(_UybBz&ZZV4Wb34;5&N@Ez zNt4@af)G_5=1s{QX4RV!Z?YgVURg*YMviy0U#b}Pg1q{ zl}rP;t|EcW#Pu_Ew6OperIi%J&yL6`g*KD)#~l1euo38T=c`Y}LLI*XWQGnz4qi;e z=zcrS(9q@jic5s;$FaxGR1}1reY3SXDudea<6Rg=0Cu(Yjam0Shx2;WP@m}l!``t$ zao1^2mwHa!lQq--HLEmcs8EVFfU$n90VdbBswW%?SLfZFk-*`USknAJBc_YfrnmBg z{T0T!LrtDQk!FRyEzAXPSwDu$cdO_xwIl;F!6kN3RqR-Id;mOXmBJ2>D3^RTA`7(M zVP5w5n#ij!$jiHk7D3Pqr5irw0J|2Cc$b->y|=&O!{}HUBM|LDCQrg$EV^*`01CX}lT2Mzh{R?=|kp!FYb)zRP^y#nH-6 zG2z??P7uJ3Jjq+-B*D@h$~unYgR)~LBU3z!Ji`@izx#`Te<&hMBV&%SYE*1Mp?pf4 zTGhwo@3f;Tf|JdHA)-cVcrk)VCq^^-iC++Us1jfQJ>+HGOg_!W60K*o5XTOcbYXi& zUE~PDLB)}7E44G(8?n+v@7hbEo{GQ~R`YMd)wm9~rkN}!eX=L({SckoF*P;pQ0;ra zt0N+GB5!(n%V~+A!`cc9z+n3_@KwqSYQCB3P#9(}w*x^)m9ImcVU034=~qf>S|I;s z=iyXdNDe!WKnIBsXK-6rP*Bh?Mn@GiulX=Af@q07KW^CFj0S<8|nG+f!VL^C0sf^b5gjq!%2*5Y@^nv_90yw_vYup zJi51WsvX5t`8>rg>_w!-`|?RJp5JzM%GrNp!tJc%g2R<}1WY4t%|&&9=+DL{uP=;H zD)m66Yom{ik?;n>wtQYZHA;!xUJTR^PmoQVx-;caQjB7(@M!f;Zz~Q?BSBF)7d5($ zEQ)S2_STszbNXmoTB6@&NqE3;dnTO*>zo@#3D3C z=q(b*7j6HiYj}_zz$W~NXX`!%wICa)N6mOfhC>)SP!=h)-7=_*r)>f z<5Os~x*%g{^I;;CV4b$jksb#KLCTLKMidlLZKMWaBw|3;xwTo|yd7j|w23As9;Z$r zD9zWM*<6xyNVuAPtJAu4@^&h0RHm?#=jH&JdJ8f{z%-+sQL_wmW&@BaH)pix+M1y^ zLQQ3qF!AX~6jRpieMGs{Rnth=OVpZ$=D0C|UzY3!wEupjLdVL> zE%cr5Z~7F$eo%O{LDXty{p+bT{bFj=9A%ImiEwy+zg_kTmNVBnXg4v^Gq7a;wMsv% z(o;1IXe^@*;KQ=M_3QJ2c{K0Ekj`^_w9qWyDW5y;mPb()&xe|LeyrE;vg)U{cY^1 z>C{Gy{hOfNe?)kWm~R80#OK{dW&PoAmznsm9&d$Vus%(9KI8P!enxV|IgG|+f)VzQ z(d>5khej38Q87g+ZYGGLth>G^$^2K4wNU*dvC3Dj$J+Ho0G3s6^;Su!pF&i2q2C;X3&h)ps4pea7! z8(fcP?18^q?P`;ODShBZaYcZVT*>kzEleOPN^5iUrhTGs+~%1S=sv|YB&4-Vzv`tb zZD3%jK6Jdw1ZUF->JFYHRqoiN1szx19aWkW*>HPfv#4S6lxow@SS|}X2E(r88nh>j zjDdrL!9ArMe5O6wUU4W_3+eK!FaR-rmN5!+Sf*rK_l!^#I~C4}M(oMT5sG;B>d)$B zFZhrIDEp!-^#Kion0_~gBipq?boYWRz#_C;U$1N(?fddi*O)8i5?3y8!M}r>2*fLH zV7z(EprL(KBonPyDM0JFbp)+K%S;fO|39OxIB9k z-}0ipwiHFD$$FjlNGc8U11Ad5y^KTCe7x_s*yK5{=T|jn#vuCLU0sUGMi;>rlo^upvAhJ7)a$SenCT&Mz>Ef->Z zn@i&Gd`HyP-`^h_yo@7h$q<)CM&Zq_3fSzaGadSECP-zP5j9lrpEfe`ksphF8_J1F zBgw2lhy8fGYj3tgZ*Rj)u>RyrjC;H#mFTSgDY}8{bXuP72LJZ|=9$uD0)IIF7R?qq zrfJyhu^Z9-X{Kgr=()e}bv zxB7i8+tqulvRk%Sw2Re*_&f-zFG(zE`qcEcp+l`V&-tZlwVowV}jMp;~{6;AXyr8V(C{Di8s5auiGkfyyL()^&G*pJtDYwKxgtZ?qouccz5asl?4*TOuBvvO zEbLH_a;?b4e!ceJZN}RQrcC|*q(2g>FybZE6ZfKhp%h>MoDM+JieW5%fnyU93oT&s zd9_e#BsTs4g({#5nTdXUdHjAF$9#cE75X8SAx$YkR9nbl<h{?+ff98=i1|1pLhuj%sLvopx7G}OpQdiV@(yuSMc7^KCl6v#2wxSaPP(+Fds=3HJ_6v8!^EffGVm}-0kZS4>}js8f*@nG<8DvrOq1n5)!?)b!NwlM zg90h5Xb^NND?la%h5xT^3{+Zeu4HNeqog?!SXyegi#PrP;nEzzly(2+u}lSLoQh9P z(lRNRg+fh65%f2~C)pavJBuApj;SN-nia|Pc|eeXA|c%50R-+r7Yw(=fT&O2Sf;ER zN_toeuG>)2#tZ?#f>23`!HMPs5LZkc4lcdL}4b6C;U%#v;ipK)T{X zx7Ns2%h*T7D$RD_nfKNCjej6ISO|EEw%JedIbzp+wxD+ASJaRxz%%9L8-927tfs~14jT>DJVn|3J(Jh4VRct!FnuqI7a$hv`Ad;X@w zUvk&WY>fSv$Wp2Q_DZTzgvkSUao`}|#7)N3Sc9$@NkmS zSp)#Sc!rL_EF=q}-(IK$<~Y$)TzdjU{`tQnK-noaITy_;Vd5q$Y^WPwuWyC{`^bj_c6Tn#mKisqVIRL5}E(WYhDALFnUAU0qM|oUC_9nBcC22?~HDyrM^xp*S zHm|V0WIUX+vYB~RiqVOTWOdWLp?Z}jsl$v=Y~vko@q#5dxcP z)I62lnQt7s73^Z$_`MH2Paa?CSj$zu8zs1vJP0av0Ee-F4Be zA-OK$I*HkJUmG3y@(2IsNVn?FIl@#~&Z4pcn`!dK5P6e0xdxWaJJg93c2NYi&o{dx z;P=II4b0^iKm;K3Z#5(tE2&hriwCvO?(?}1g}42{E6u#N-u)3>G>ZgL>3n75 zVDgKq+1iGT?pAI)XZ+5)Sonz#^xu>hJ>rT4pbu?p#d4J#hd-CLhF9!i%#I6ff1WURJZAcCQWiKI9+xhwe)MZB3dVZ>2)*L-{UXl}0%CTbD99&86$2AmOPkK^?_L z8ZpmJ3x>CFCa3{I`MA+_QG?ib8KL7Y^LxdkT_|C9#ebs!KYS|(fNC*UbMagN>l^@W zv{F;FGCf`Szt;nVlckL4_kjAx&jHZe?pOZ4gEsD25iY~I|K+9KgpkoK*fuJ8@MHWx zy+dBxRH(#GoRHP}ZrC zwG>gN28F)1!G!15^B+7vJipKDe(t?<&OPt*exGwnouh-|qtCo%Z#g+!q{{4NjMNT@ z{LtJpb=X|+=lHCdWzT;!)|Rfe#G}1wQ^hlB%!hKT%2tBAWUS&rNzDal@|V%#J2I!> zCuci$W&xB=$s%MLMx}>l^|JAdSeG;f#Dw0-R)tfBNl$og7Mw3c-?9@vm&x=n7rdMO zv{07MTM2R7h7o(Yi)%5%;83^a3imUvHdpagH?XcMWOa7frztUW)o=cz0zEtUNj0wa zUdTR65ytx@TD(Kqw3td?V+L%cbmsJ7*7#15376g+k9n;mq2?Zk#tT8n_@xxnn?c$k z^PNba0<@3(zf2QzLGr`A9Q==%Z^D%lTGE80hKD*Za*a*E=4?NH_TQ{89h5( zdBd}2Pp1U>m+|vUPexl_i7jteaYtr`HQ^NnP5tZ#$IdZ0437NL(-^*Iwz&eVA?Vp;m zRQSzJNg2BWgKzNNUU+jDah-cTUF&<7rhv?etw#cHc+E9G>Bp$aa*a9ZiG@{l!uF7)gqY9UBu_@sIC zjerAYb>1p45)n3a4I_)-fs03wZ;$JB#O4xzLcaSLkylRpz^1}kDbMgL^^sVPJfk3!K7>{d{fnk;ZtS2Nv{zJ2!SdjTLP$w3*g z->^0X8tV|>Q~{td$XS&^KSyorFV{Kx{5(ct8lDmC&Nw>b?+-#OvF8G{l~gn%SH;%JEXqtxtOTJ)uuTYxhdt8<9VV>1 zoc++EmG! z8N77ucg!lWUu^J?zBV>h#%S-+-9O;%`}Oh++;A)lAgC;eU~A%=w6ru&ASKCtPd=&67!sx_$MZkA=Ql#-t+a_x9EK&Kc9| zN{%8gq}mFCE(ccSFa}lOjVDq2_O}13RVKBFq<`VYtglwNR@z_jTQ_Ho|8SI&Hb z4%doixDiXJR~)<5l$~$%W3n4(OA60Q?}|(kK}UcK)Cf#HIat5ekbsYj_yKl;*c6=3Nfos6ss5Gb_o1 zh(a;fMb%~Y-z&WmD*q5^4{pFvWi!DQWkOzS^#J!LZd+^F7+k+uPDG{-1kaoxEw7+D zxFZ{gQo`w9^Z_O+RGA(t0U_xH@vZd`FC#bDPoK3(Ic-qD3<#)84R!~>;i_K(kpJly z7E|E*2AyFMnbYfRm5=T0tq{oQR_%s);L?vk`ovWx`3hTn%?GUcJUa!PkV9Fry@3y2 z836My+(T+CQ&i=n4q~*@fbF#ViAf(q571Rk2X^WXY>JF*dfMg=Zqq`)aZ;PIjDwP1 zALC2Y4~koctxMxYxzz!s0UOUPIl{P2W9iiEO?oEt;cfPldM^8krOE|y_Ugea&J5qe z2WP(n-vYj&-9Yp0Q zwmS#!@1>CwBsPSJOIBDr2_9S!fkoir8VGbqn3;A~QTb`IM+n)&k?wk{_!@;9?om+G z;%Lq9TJL%48)y4G#wX{35n<2W^Q_ApW`LQjpf~unPgN7t<02GZN1w7=&&#vx z*Hqx*7LU)%#ZL_K04RwQK@SP982{{lr{jdH$OcC`B<~_p?=i~WdVyl{{b`)k7ibT2 zFx{tUC4}IDU((tQoo0>SU?m=wD0X6VJ!|(&K39q#`w-}of69YiE$_)Q#SaA?wB3IP zvt)}{QtV%*9qan-fl58G)DH{*UdKunC-zj8U{x5?#{Er_;z;*CeQWJoC3NCjGh?k! z%<8wA0%bRCnk&pu+j(_#JZ>+@wa_s?bWAtO8(h+3SC0AiJ^B1`Ta^mA09t@}tQQ`)zg{m}`F>1+`HD2>ouSJ*Eh;Xm#+X?-)kLs4qfC9oy@!$IWs?q61K7;Osg@6S8cz~7o`3#hb(H;?x_tK;= zE1+!~?I<`F9;EL`nqH5CH|owB3+JPwtF^wn(O45-5?U9YRBdYgI9_KhyDdnn+syReGndyye zUEpl@(pdE;)67sLjQ7hImF^)*p$p3@?|t?brP_e$Kcz+dxwv*e%5QM5knQTf zetPz(>VCak*F%`4_W+r_!^y)La+i7LCd^PzV?rGVJ$=klE?=TmRb}IB!5;EhiHpHf z<%X^u;C-&#BWi9hLXmL~@xq2Ce~&+fdg}aHuJ?OET+I_FTqfLjxunu^Jd|2E6C=o9 zTJd_@Sp=;Fdv>_eS4dUDzh$1YEp6*PX*O1YrhlnKF|7_|`Ts+xxqq$m2Qqn9t@+5jo$X1hswlw(jnLf=xY)eWmw2p=AVs&V zyre~IU)!AJzl#!c#e%s3(yL2c*oUbRIME@qH{cPkT;#NhQm)^;d(*rSD>cX2#`=kc zA0Ly~CvLvi!6X!F6Le;N8>pW?infFi0#sgF4)}35o(w-Zje>!hIyS;;BadbI_6bpL z2XWw(Z&0fFQUfFnFzXm#6!`9uEYo=I<-PgV)g5J2z^q0@LxjuN1tQb5)r0yuN*l&2-8Hhw<^(t+= zE@`m;5bl(Vc3eq>CI!-_Fs$(qn3P4dA<{n3Gs+B5iq)R+Ntrc-#S}UpoUyDQ>RQ?W zUVz$qq1{JYCKtTcn~6Q9_!WCkFtiUA9>lDQ zkzo4_%vVP>>XXZ|7=x{{<=&s3nq@sQhgldT=Z=2r| z&VTkjZa7{@afEm3{LHq2V+huS`hXjrC=-+U5U4PrLsa)OOwcd zPN!2M$up*2tTz~_Z;sq>>0eG2knP=kV#|+a<{vvm#MEDV^AHhzBA;_?A(p~QWR=aI zJD(=|VFW}qkVpkl*ZLa0hPup_gg~;hnCF7aw9WUeaLs{L*$r%CO5EG)X~%{x(4QWF z;0!0De$Er%{~fv4LxT7jE-If)-@lFR%BzGq4~|!+8m0nPWD&fO^Z2#;maq$x7eQvF zOX~4~T_|x}topVX3#ccUJ5`$&g=FbiY77M`Zn)r9#s1z0qZ2E6^Df|&62&_x35VP* zxFF=Y8^0ecasYC+w}^|aUb7i;N9C)M#R2+*Qty2CZpXBY=*M3L88AqDI|EZxuLCbl zo@7rhBz_)gS)AmaYJ#%bpTFM1mSwwL>(LN?dTP?OEAL0j0b7&>v z{rBj`Fm!+qaNmOSHC&qd-?nn_#W%qJe+C(09W^THU~0q0O|sd*YBC^Carm8|AQ_Qx zvch%(*PMYMUchxcVkNf9Cl+gc?+dPf&SxuS0DdDEC3R8f8(%jrWPURLg zyr#0yc%O^FEh!U-w4o4(Q62YbZ@-bXJzh^Z6|0D$s^j93=E@~IBvFd7P@{zO8USr z6jBMn-Id4aYaD~te&%-FYp;p6*okoh^W53AYzFTu41;WQKC0bq96a$M(ojp zG%Sq8^~Gk(#3TL)VqVX@$yzePlwyc%pSalj-@7qZUXMPT$KOVge>6#rF$SIG?pM0` z;nyUt;?bWt*6|Od3+WkNZh1htyT?}@QbM#Bo9rgY1)-5c2i4(;dQbX}R~IsAfmM|f zS;pVWC%@Mjjd)g$h$hhD;f$SdE3*ki*0f}%Rx9-DpCCfuAPrd2ZR#O~GE zcB#3H51$<0X(Mhw{O+s^rzC?)Xy+t3Qc(@5r@6|1PFstxUw)#`tu#CMHmC>(p<$8x z*SuXfr42-Y&y%yV+CmvUJebr4?_uTW{HMz2-1fBp0;xErY}x^rc?5WA$1BZd2bA*Vr$&F}f4J+^Lr}l#6ipqZ@mm7J89I>Hv=G!Yfy#|F zxS_Zev6~<3CP=A#rTIHSH04j91c>Up+hiWk)L3K1(q#lGi?M(x8vX!^AaM$$q9&-> z9OXIIdHgGiNzxP;l3E!sK-4!Q`+Oe7z9qD-XF1BR5}0%-H644cQYb0Z%oh0?!pZY&t}*m?|M#y_hf z>_Hh6GFqJN2G*TGL`xG~#M$(0eE%OTS>#%I1Q26l@C{9ZlHsBKgqK}0@9sN_q`(N) z18%)y%ZjY=GBoo(`D;k$P+z0Hm1B&rSh{I2yBD0+PXx`Y&uW2u6Pp$r_+6le8@~(V zVt{eG!K7eQtofOX+=roT%PA9Fh5BF^ziWPiQOsEhrQX{K9;0&BPJ^ac{BFV1gPenbrVk zcp0md-cOiBgRJTOlK%T5`%-Wy=|h*2t9Sq6h3m_-ZG#-jrE=t>t0h99y%j`33D$Te z?6=U^^?$0NU#(D<2qipW=zg{YAd#wffl)1I#nKIxLe-VR8)OqAzKJM~qMMgdt?un0O{mJ?K)R=;NE|Mn5IkEiyikW^k1zt$Y@rn<#eXvZh) zX8^k{i#5(R^JjLmad7>+Ogm`PX@xC7xQb$mLamt~vk&Zd_7$40s=q4c?=6qGdSe{6 zIvquQNb1q1Ugvsti#dx3n~Qo+ap!xoZKfI;$DI_-Y2MlbFA?`WP>n;j!hC6BITrA@`kt^XLY``F(@v`XmlPOaF}}2!BlL_${4l}=8Ou^ zA><$n4^TS0@;U)iAeL@lM7t3qdGpP;v#<{eS<@4kh1$>T$HdLRs9pEe5dD-3mMG~1 zl#9E}!Bh!#jj?;JQ2^+dfdQQU8Gq!u5pN*r>gW51^ItvLX{k? zzf&w#O0@wj`lG@*cm35wOS50+{qML{y!c<~G8?bz|5qNyTyb0I5K*EC2ui literal 71212 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�ev`Q}H7y#R1zKkC5n?0_OP7^FqWWeXhX0t0pNK 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

    )bNtXB<>| z?zw$VG?;}cA_WMLuWxkpU`bqq^-gI`l!vzyJIgmqm5DEFjm;@^zl*oW_s|8wm8e*b zz0XFbT9w}8+|d^`xK_6-vkAYgt=Keh)4pg{f8qatTnp1$c}kL8Q8Mn_uNQo(tIlKi zpX6ZQc^`-|an(4vp*vd)^SNh=Ro#iKRpvBh@*kGgjw6S?q%KHqoeH6(_1wIA`lV^z zAiRs`A3r0$<3C?@`aE7#*py0h!ZV&RT$9)V_a4o83@+F_%Eo_IXpu`p#0RmnkYKV6>PRTk%i$*vH0e2KA$-EIE^&JXaojXAE*53ZKr9x)`Qum z7UB9BUT@5(waVq@friz=*QwcTSIWnOG4BIs|6G-zA;m{oOAc}4!>le3X(;(rUNgef z(7*5!tt5aZn8P0!173!kFHC$!crh8;jTxMQSIE;}csC5F6Vx;H$&(nH3E%(&HAh^MAf}e0nfSMQPOniL_ z7j57+Bi!(wmiNfn2t9a|2C1x>?Ls7;Mf~#%uyxQ4XbR0iiZG~93)7HJPQ|COV0;>D z#;*;}%i>vM=bScHgBHF=!NCGns4A2;tr8_sKh_4a@ zt{B5ZWXgYDXOdJtuC%DBe?Lald9&;{9%iclNek+#CCvfe_-`5NJW@!FZA`&&O&=p9 zUwlVLYHm&ldOFGYwv^64tn!6!H32EqrT>2?b9bz=kKq{R5PdaZBW0#`LK1sQ18{uJjq4Q*}wb*uTa%(>{4%;VK01*KSq zh^qcE(^@tu>pk>REghc5E4ZPCWk%EaO%C z&%%0tbPv5YmqdT&R)}mL3i4XV6jvmR@TXK!7qX{ZJj;Gln!(~06Vc5%7Z>XGw*|CW z{3(&T7JDu_+<_&!Qbi0h)Zwm?Xj;_}Cbifn__LJbIWH-7#rR}P@spEbTfxO^XYW%M zhJEnJEAHE}H`p5>4E?|@|MY1)YOBU;fR@a2X-nTo)!{n3Xe8yyJAvAW=7UAr+^*hFU0;)||N9fTIy zB@~>=9fZueR+b%uo2$%=%7YAE@|9h4K3Gnr3xsLX&S#8Hmt95P4}F2SFI?k!cZE44 z^2&Ay?B%9a<(R{>NER!X`!cultn!S|gQPK!EeGM-a%y_zD!WSZ*gKbs4pw(8pY<-^ zZBJZw0{4iaQ9^ zT8kD}ql$!cJZi)g!$|5ll7vYeP!8VLd+Mk=2qkg8GX(MjA-$f&*W^R5TcrikeH_3g z2RzjTDrfB$SYPI)M3L--)_uH^7i!obxP{DPi zM5t48>!<|&hzBc#kyj=3dbup07F$XBsm!&;-|?ih7;FeG61KWhHgd-0#CxaI2<~64 zohOXU9U8pb+TZb2+zY+0l&eo_^T46u{q~Ue|CxIAMORWHakreaG}#%Q%Wu`*Og7GV zU(<`Cn@pWKnelXBd)xB7O*ED&nM^4DsVG+&`L>C}E7;)|eoNuO5us;xlLaK?UPnWL z9oIsOax`n6NWdBgeD0uZkVvFNYZ%?+(*c2XdpL?3?WayfRx`iGtCGnq$3sx;Vx(au zeMO66%Z|@fLcKSiZ}rdp!ka9fSR9_AmJ&!TPG)LeAcVXh*qv(ZH>Fx_p?Z7S7nWz) z)ey*k3!|#s(e?>@K9M-NqOo)0su5>}F+r^NmaMFtnvw_?(x_3SS5a+IXoVT<|7f5n z-$buLmMlGF3C@o%cq8VqPK?AJsprrN^WyKE4no3s8pPF}Mx72q;$0I|xYfakYG_Gc z357U>Rwm+~cQ?0o5ZVLAvyHORs^qFRX=&JXjNyp<-C>)ib3q~29*v;gHnL2YMhrPvbt=vSuYW4(cr@f z8=UnNlqNf&edfv)#HSxS=HRS5$s<37`H)w=WnJZkdw)=f6Q~4HzGpHu=cCi6ALdP1 zOCr9WAv56gk*@9&ED&R5pq8^O508?s7~M)Fejy@&lnCqs11Ju?5*TNoMVw8rVifFj zD0Up1el31t94lNCfFJZE_M$Bg$??f}Y%#sOy>j30VgauF7cy3Jc`~NLc@mm zb8?LBF*sBh>XCT{wRV0tuIBgEOClz^!hqnpS-}56WzSQ*Z%VqH3wb{?>5ydo4tnPU zxyUu-egF3R#hbM+cj|mFzLvWi^Qho&TOYdh=><&`I1208d#|_`Ht* zfRdAjL*2={gxY5jye5M9Fzx%{!{{ykj`IBreyhrM>4S#a(B$UT4niMF_`CmYdt<}! zv8TF&?0Y&h^K-)qPt6Bqvdv`30^U!{lAW*_lN~5#lp;HEsikw`{me=8=mP$JDi?Wt zpa#P;VlYn}B(4JBW&+~lL7B{A@a#9uw?wkCvgxV=oB4M7kt}3Vvit@|LV5W!K?I|L z;3>H|#C-&2vSf0SPNeU_A;)l4Y=bTzbFMEopMuqayJ>Lz%MeuS)id4_(^6#Vsx^#o zqJb}O-d?j;t$TRbuU`6g@^K<|lER|I)?xgC5t-FXN4tI4sFc_8?ck z_s6pNjh^u1IPD}Zwz6z0QHJgOnmH*Tb6H$7o)*DF6c6r@K!6SodT)WI{mhGGYJ}Iv z!G7g_coQcvliHBmNaKOzCs7eL*ZUIhBH6^Vh1?Ut9Hgq~`^Uy{HQT9hx&FUXSiT-x%ApC;r_aezH z5*`hvJZYm4$ztvx)wS-`9#1_?{hdO*b6x)e;_Sl70nEZD-K&s5e7azHJS6&nIr0Jy z?hX=4@T`nG|L}!jp#>f|MKlg4`HoU`vDo%oI}t>JFDa7b*?2-Xjg7j)tL_sR)!fA4 z23JD&1o4a40%LCb>_Aj+KL-dDo6-q&IyRM3Vtl zU6Y4%0zY5B3a3h_CFR^*rw14cAhz554#zc6UOiEcHj1tR-a)J!uynF>Gtjm(L5vac zkXVJ}Py~5D=3bgQMWH~wV;yehqYQ&q*5boqKlP*5;s z`X$CJ`Am|30f|^+vYK=ms{$_?=mVJC$3(L1Ny~P_IR~dzTaL2&%qKA?v&>rSREbn1 zkzOFc&M>~dF3>-o5p){uFYMDUgU?T*?8t2ujbV>sTsYHiSGuKX-cIu3QDPS6oVyA4EfZW2Xu4$^yXXbD|MOyt_HljBV9W z6`249m?4$_7Z3xlgJsFO8%4&}bYl3;ZyYtwQ0-PxX`kA^+oQ_p*x74by-6~1385-` za4&r=N%(~UHR7s(Dk}VPdPzeDZiiDz89;xt4p`a7Tg6>H)D3wmCj|!yibe7T{AVh; z*4=`{Lh%R{UP?R~u#_Hh;B9SUj(aupz6921>-B58q3%Q7{#bHcIb^a=%!{q|0`7%`CQcJU~7Riz({dUF&@K;~-%)}AK|MpP z6Vq)quNDoPAyEd~Zbr-yWc;Z)i+Ff@&0EFP-0rD^+#qCOLB+7J0{)#VaJAHF?AKT} z(v`Yr>SbyflDqkG5@ggM7A>wpIw7u#q*V7aSJ^-QJIP#+3%@TSRBw}~2Sq{JXiSHN zCvYnL$RPDV$sdq;5H!BCyKVExK{i3sTToWE`yQkVVmeuft0<@iSmwbkZ&W0`8Hq}1 z8pY?Q4kVmBAl-6C3703W%N+{L$2-ptYO!Xr_!s~_mYIKk#TD0f#l(r)50*1O zT~}6fshz-2@bN`%=&ax6Q3Rtco!>Xw+yDk&7V_`#v@)#s*R1XPkO;Kw|0ka~6a zdfJPaG8moV6TDf9k{=LetjpsNUZc}^*~h?omwZo}fmCQuOonx^b(n-}IZ3?t4W_#PZ236ID--qTq5GeclbvmU%r!C#T|19f7bM={LI z<$K@Ay!9H!DU!u7g?@d<%}CWobKJz-j;*zV=OZy49x4J6K894zlL`2^25M^|_z#AL zXRIxR;0&gwh`h+Me|Am;a4OM@*YSZ%LB0eoh2dUNAF~gb%BmMX2lz)ubQF>z&k;|v zXuXMHT#4$qC6F(|-5iTQ5?njvOXssIn6VZBhjT-nLXa_9J10)*#OMc(E~FW4_y!tr zpyow~JQ9{b<=G(42t7}_U*5Jis{Ng*(?eYKObubVVF;gk1;H1)`_hAs*i5FhyV1qL zn_mH!s86VWez=1m?V;$Vt0F!bK8UlrJ+X$$yoR+V$RpVdzGVrSVUrMb0r)I=BJkO% z_;ZL~1d55oZ&JGEJ7*n_=(lfD$}1Lk%(0H%06I0>{Em<8P@p2|9wmtwi94%en3joo zs5BV`Jf6IO|8BL{_3tX)rCp({-nhh}lkUihBo@j<`rW%CNRvD3+-zQN=HxCtvKuP| zNIYrR(!Tx^zCmRB+hK=BhiGvJBknGgf?KLqy8EO(XPvTw#;&~3B2aSu>7@gR1*ApI z0LrjP!rn1=%VhYywzo8Vfkez_K2wE(bANl+7!(j-Sw4~|2#VgPke%2TlsM#>2O zLM}42U(mDn^%}D32eRO)0Fs^#4_|RAO#u$wk7Qv?pvUbXdt{J;J3n6>YPP3zAc%2| zPvr-S$1_O%i!FnFDWk38P|nv@7)5NtM)P?EpeFjkip85!G?Z>Kt`3TKiU>k@Ntcr2 z#P?Bns)Ks){v6ddC*TseBo`@*_fg`m*AQz7*N~vkU=p*%bz-r|l&0E^;EHG2hogJ7 zCu*dN>lLXcfPHZSc%61JbC4yDBXEzmnAxoc&$#U`**7>xwezv8^?kb+LEiUk*vCQ< z7L||Hhfe6z;xo~-EvoBw=Vec1^%8ZRv&%|J+Be~9bP{&_y^J(7RzC_{lIY+z4=tj@ z<}I-`VGYH;h+>$^M(_cWr_3@9AZT<{dA$!Xh+&&#MKY6opZk-mKsA(SpLEx<$y^Cn z4gkx||C00p3n8eH*|2aioZK-IBa-L-fWcVn}SELDwx)Jllb2CHe3m@i&x>cGr9Ixs~!M zOG^|wxxkH`PTJTw$Vx6q7Ax79yy+6I=BgXb-)k6Y82cgezic&j=wqQLOON1tK{+=X zpWj+L2-Kss&cf)H4VjJEQG?~4_z1!Cfu8!z!_~*+8S%dTn}^P&d(*_}T)uaQKEDMB z0M~w`LHBpvNQK~#Louu+Jzk=+1pSQ(JmX9iy~{1i%Eh*0F-nab-tJ2*b{NC1GBZkm z<5WTuPy?R>lK%5c)Rw5S8C1f%69VqqvsTC+|9xOtHLX(Gm(+n1R|+kgDIR!cZe^SRw}7d z;1&em1-gDV6g*@e4JNquZCras|!I3mmu2_8wnNe^b(RX!YgJmR@kpN_+ke zN`AvRg&|j zlt6_`N3vKGh+P?G>H$^=Hk26yRz|@`CzS8?a?UqmvhMU)n#Q*q&hVAJM7=7`g@9pe z89^<=G(sm_Xlz7mRswoTyYz60oQcfIC5`WJn*c#XDC%LR1XncX@lk5zthKr8aWR6g z*hz(MArpKerN|aCl=H|}N;ULiw!VkJdB6UT&f3!vDrVG_N30uZJ*3FGavst7@RE(% zQ3-P_&_?8bq2tAqnG~n{@01>-qa3GMUVkVib@76t>i+aY#M?422j6bHc9ILyvS*B> zQQ;hTorEx+5%Ejntqj?MpK@L-A>*grn3}Xmf~eL9A<3fu@V^M${v%Mb`npo{-kWab zY$g4;waJ-CY5_)}&t6?C)$H8ON*&Z{gA*WkD2AnI$WqGr+dDx4Jha4IECI7ORlX%xLkM2S>PMcfQAoTHXiHgre$Ng``C+UO#Tf z%h)nwFM(vfd1`y)$+e<9#vF(0WB#2seWeOrC8+#Sznrt;aTFq+VHge(W zrLULV-9kwxSkZvb=A>{4q$?@Los{c>y!(<4Z}}x7H_1eA)Vm2%hAVvAq&Gr=X3qss z%ZI$*`HOR832P|h_`UCt@YeCB?vDk`1ijIFpj0~S;5t0+y?on^xUzWvD01NIzw-6X zg!GOMi0ue9#H92NEiey6Cu+B^icR#ZYNp@eiUFO?Nfr7Ruph>k>z8L==o+C44y|SzJlM0I*>xbKB8ipr}PC$Vq1>q1lcQUVmYSy6QkL>A*e-!H* zE^(h_rDTROBbAFN7eq_a_1wd0CwYNzI#a@`n-!AuwhhFxQXr+>8N&+;k^;lb@8IM0MP++-^ot&?qrdT% z@mt^g{?3Z;HrZm^T9}sx)ecIrLxK@CD-D*|m9|IDBSIvWPqVHyJ{kM@xVB3677f>}YM!uoen+4Oz@ixxU4lLhmdnA5_Cq zn!eQCP6VBdu#5-q++!n15F&4}luzs{UuR55zOLgFrsna*>NC!J?Cp@C$r2nxuAoQ6_@4>i!6BY@q3nq~DerN>eBtm6*u#Q`uY>m(|fJDWc zpd*|pqn5K+7*%^nTL*KYS_V1t6%vq`ecJ&{84B}oF zCzG?le%RKJAo5Za*j|fNy}S>y9=!0XA^r$uwZD_MT)i18>}k80A($6~-0{+6T>DhH z))3w`G*u{EYE@%Bnl`c);H`-I_l(mxT>~H9CT$R>H^+UeV*&En!Rqu z{b+UcK~w&8PUYTj?1*4Qo4e_xVehcV!aJ`ri#6`$VfW$Z)xp#{#z~hsQAf`=ZCNL{JQMT4Pss0(=nZcMfFg6F79R(b&tT1 zA~R(|O243sb%AyG9^}`bKkgKq*>=nPf)x~SUzz6ij(RZ7+V`Tx0@d|mcE1L^^tM(30<+-Ybq|(J5AS4>HfrK@Y`q@59{K__?e~yDbZ00uR4!EC zK}u!5t72Q@REmf9ef}1&kj+`|1rPau?0tDW)a(2A$SJ21ol}SGErXntvNNGwldWR1 z?;-n^#=aaUDj_q4tcA!}qp=TDiiS{R?1K!l4rAY+YjnQP`TqWYp8tMc=T#@>bKlo} z-PihlUuGb*%N8@!kkIJgFukLsT5`o9N>Yo91Hj}%WaP{&#P*lA*0n8*BkV0d`X51L z*g0^3tPf?g!oI-`ZYNM&dN#j^1*Dd{Lz$RTzhKv+tVUWcjK3)je{LLsFezk;gWAR-pxuXt!u;KVUtS7~WfSal<;J`qvEI zLR+nJ`-MjfHQyWdt(@7E@T<*1;~>I(F#ftNKtwI{gOlgr00jtKMh z$px>F>seQcoC&*M6EuAg%FASqq$_eiJoPO4X)}69Bpz(nT{od!hE{q-hVZPdC2Bfm z{HRpJuwla8kcf2SZ~PqyDTc^NfbfPdmjgnQg)nF5dI&F)WRc+1y$9sk84*!W4xVBr zj8>CRtd>SXb>cfq}|z7;f-Vl|BgXFTjSaQ&!l zSAg+=wLqZPw|bY&Kcu|x_zvX=S8wSpJ}KAYf4X8kFr#DYH*FZ?IZF4;j{4%XnyPg& ztT#jcXPLhT%zXsZts~dz=6g3h{OlIQ*+t%kIF6kM)Pp1GkG?a9!#{|g57-rW?{*NN=If=< z2vt6Gu&|ornl9aNzamE;TIidCQ${V%NAC%=n@-YdS<4I0_ikXUQ@^p*%x(#y_w8~R z`TQK;f5W9>HV2PwS^M0#B)9@mss4&W(~g>g*uR!{o(BMRPb`%Fl|{1fj@_K?2hQJ| zfZx5p5i2GTtTVV&kYLEzVK#ck>?R6K(thvW_`Mc^m!?jq6M69<^r}E5o}2vC~PBE&WR`Po&KEtU0M#yj%b18NRyU+`QU8 zT;N)IrMOhMCG$z`b~^XodzXwUZpnIPFsE&632Eg*1S@vriI)L*;G-Wb7b z1&g@iwf;!wF9)%ty;XT?P7>L#R@s9_ZS9MGUq-m#@g+Yap*qJ^LS!b_`kmNyCx^zr zuz5XhpDU@(h=Ca&Zo{Py;hCiyUsY?$XP@+&6uL5>lxqa9_|2(;%5J7Jq)&I-_Ft}?2_8A<4gLM6J76x+6?moy^9pjGOJToJj z;Po^{w(UP9@bSa;IY(i(q{zK7w!FU*JGZ(0$GU^{UG26!NDAEz7~=M&f_?oqQxnqu zPU7ZC&=&hlJvr~|Nr$KHg=!+@Sq>maFVY#bwrz02_G>s)f#9%ZNIyB`_88 zamD@L+$a~zJG?-)4#`O~&QJyiyG4k881a|xH_p^uo2Mbt!T8HKNKGWCB7j%B%4Vij zto_UK9kZt{2cEn=3B|r*P8xg0KeRESoJIEGLlkb3a2N+7WUZ>>=3Hk*QoprF{XuTb zj+!+R5jvKw#7z4flBFBKH9Hq>1fc#3`8lhcQG;@3YMJ!%pdIF4`SwA^7^ynG^_%xE z?R9&y7ofdC&V-X6{orYD@X|95I0d+O#pRpq;9LuL+SL)MoXs&|gLf^qSVJW-yu-jU zZcma(G>-#YmG={n;YY$?l+O*-=<%|L6X|{#cR*oW>t~>C;%R@c#uk*sJM0VxPk@70 zGSmE3XJjq3?ncWB6v?tFqJTqlS&DgkZ0Qom)stSMA3DnfD6bCxtTgsPrJ)d_mZt3T zy?H=zUx${SfabT3{$Q_DGq=~h@8qCD#78f$tU_kHTz{1xCVkAf1b0=TDlRANjOK`X z1l3X=SsxN&J5C@l;}A=;@}ApFzr$ul}!4oG=Kmz)4Ks}EluBe!sY1&GcZ zA5bBWz?St_2J*-v^IPkp_P6Mlp93s+&|9#5CQtTH{?a~isfKJ;ta*C`So~}ZjCv*h zoM@3V+1l}~oO~=;Bi&CnU7kG-5#1cYq=0-eyf$}r^M)@gJ?9-ZBp(Zry0moXR=`t- zFQYK7uhINVvb~)O(nDx~UN$4o55&Q;BDR ze!;23%MjU4|MqXEGIOP?Fn&6Z&#mtte@vem*cnE{d|LG{%Hzu+toSR{)MVfBYU2Nklbp|}zc@d8An z(J8xF{Sq<>JZ=_e7ai4wc&`4npz!cM-0SZ}U zZoStqAlO3MfVetuc7FrYOrU8yDZ4Q$>-Obw=OtvWW-QXkj zb7||=12@QPA!ikHBJ(+D2tkNLEPETP!wrH_STM+Pa&1U4gh6yd3Xxoch~6m-#;67-GIncoQu=M1Z50T11c#D)zr}Lb zITmF-H3GA05J&l|p)1^B26F&PcJ;bjk+~8CEzvD)uY>OrIt88EMcx{5Nw&1Y z`;YHxuYVsBV|vo-gd5w;jp(;{**{rP3~OW06dsTTdwSjZr?Z`qo5YMOSq?@%b}n%? z0`ShR+`{IAZllMTwa(XmRBQ?fCTz~Y4HP<>s}Y9AxfPDgveoykVl(#Ku76{Oo$4?k9H?}&xpYRoe{ z#81`E34!-i{n6jwns!740nFb)MNya^#NKeWewr~hb5+XTJ3r}=fNT5E@$4x7??rvI z--J%zR)Fb-Uf=E|tkvyiv()p9T|590eci_z^5fmuJJqq^x&;JBwH|MVc4o!lfjWGj zF^7MM!>7?l5X*Kg-Qk{>Y6xUo2Gp9*?f03xguTUU>Lrm6Q_J@J4cu}$6OS*j# zUu$1~IeVWTZ_F)3|M-@7WbNK5n8*szGY(48Ccb=UZ8(h;Z?C7s1w#~=-+d0ve=g|w z&_Tjrs%~(Ab%a9>BGz+j*5m}>`&RhzlRzi$pz#3@5)I*|6(V*MFuwge)=lq*%YHwV zdPpG12xiQ-`zz!Wa5W?B9J>29CE2(p`lZ;4$Ztt+5*+?mZX%avhw-{JMYI-E77lNm zG>CXDk5J+9*4!#Ne%jGs`upY(qGq27BRCq_lmv^gMRTNFT`-vVb>MpU8K-^iZzOYq zd)7)t78tJVF83&B`7H>nlTaTunTm%Thb|_R09w!ky1P+%OBf%8O=<_ao5>zipgUHV(f# z{W$OIlarBLhraA|;d%NtuKIVO!;!BQbRI|Y!r7)fKFA~kqs}@By43~f!u{Uo@75#s z3|wTL+}X;>AD8T;_v~%G3;U)VY{dT4v$kJ;NBKa!h|rnf2p~6LM9LoNFQI&n|BM~1 z?FuOV{68QwYjIgCX!^LT#Go>RQPivad~xvSG5VhaMc_KzBiq3EwhZZ``aJ$DE@Pp!8Rv8Q_E13H-_Uf^L z1+aAmAbq;e{B%N=#QZ1gS;MTH13UwdVBce->|{NlmMqNKXh7!MkN(%fZ&_2eD?T@_ zC|u<~14}uEXr!Yu!YU4U+XorPW+eP{A=c3{euH`{gzULJthsy#Y$IlY2084dnIaHj z`tWblp9SLfi@(nDCoJ@C0nG+9Au=*ICj`bVGQxZ&K6Ea#>VkU(Xztbjdm-8^{?^+D zE+jK}FYERB58t>42R)d6!cRXz761ZPD|#COVXcjf4C7^kaX`+2)~e(Bz;5yTs93o7+;C3-i%F!Lu4eZiOtMI9A%BwXSQtD1T5X* z5*WV>JYbdV+>+5zPrh-nV#y6>shD|-6Tw-4H1NXfcl{is-M+~tEQ=QWITw4gGKpOi zEy~;-25%j$x1XT zfW^R^<3Hz+g_*nRT}g)^`PdC#?t+3PBM*4Ohh%+s^j}xnw9a9zoYuQR!^O2yX8$~c zl+%nA3vbJ{OvR9S!I12YS=V<{h#?vYq(=DouTtRw8NbN`T>YO1_DxQ**bC_Gz(tT# zWK^&^!tPS|Rha>g0XcX$2fF<0TmyGk>Ka4+!c)+k6n1@U2)+aE2{Lix)wmzawe2Z*lpDabtUh+^914V4k^_fFEV%oke zlI$^1vKhUX(BE-vt#o6k^-3$!O?V~+JfVhq?Ig_T|3@+WM>X(1ITTds3Lh98+oUd48S7)n7NbTg}yE5>r(Y|#Vx4{pc z-oFVQlL-6QujDSlye3;J%%hWsp(Q;DBO94Hkis}<992gvUL85LgC=`MzS`l7dFPlH zn=p5kprX)KJ87p&eVkQ7%gbOeBR>wI-~5-E909aaYM>14{VYs~oB%(z-@kGGY0XRi z+%Hkii0#PHrCIfcMbiV(fRIdhSgK@o3*pLkD)Ep&>Z7O_J?{T<1xT5K`~0EpMJTXC z4K7`A5x001SRr|+bpQGhn^4Z@JpxiZ7U=*1d0~33dFNu{SZV(`eMDn$4mel3F|r-z z<^FS*a_3+?i+y{{Lm!CWcMvPP1ppSkGay4g|4zcoU1cT%BE&-RiuN`^JrP{9qo~W@ zT<-0zW#r5o_>n-mHL^YK-xb?gzdC?WV;i{)m76lFa^nFfdt16%D?Z9r@W5sFJ)s$T zm+)fOEg+q)5~oIqA&)VD>-(KA09KC6n0;@$@s3=Cw(v+{O9==U0u2y&?_futM6gDP4niLSi!0Z3%(v73>QB#_RVH>% zw>{naS@#@t;Bp|FY#ThisdrJW<$()d+8=s}0rHo^!I(pXJ9M3m9lqD4Hj#(*68%{h zf<2Iuq4HlzOb&+38iS)RVL1odz+j}nU~F}PMYum6Um*JRWbvdCp-FYHR<#F0Peib1 zuuRC#cS@C>2jCOF0w@rl^L*><=T|sO~`zBFztlDmqi*f^=qHaB4H%|^Ai824)CCqBX0sXxvi3?g_ zO}A#+@{XBxxbvgRx32>o$>w%+Msq-KAeb+Z*D+*bt&}m(=ujLuCh>C~{2v))LqXiH z&=_Q~@BPbj*Q^v-34)65*CT!`&)OL^vN@P4N?vE9efU#YvD0${#4wdfl0f@?{x>5* zk+X9nJ=1Jg6~CfviEW%bn+Di&zle~u@hbbdHTH;*(AA|H4ox;SHtM{qV|K}+(_@Ke z8Dl>QvVR1zy^+zr2 zn%Puk_o#cLZ}$8f(_vM%)x;n!HtiiL7vz3@+RUsp-D!d_fm)zCFt$GqX&?JPUMvTs z%qY7?aC)%%5+i!YVqc>INw|!^?9lRG0s+YEm4AZBUA#=i*Ri?9su6>>Wi3{R!pa^VIU4qO{~toKN0D_8IKO^Y zM`|^OQ{FHo>U-SFKYuzTQ~ya)ckYcejQ`g4eBzLnK^{Bi8g?lBkkug`g$N~2DmK}x zVykn_E$Y{#tbWGobih=HV;(7AX^S1XF8&caQ?_zW^!G@G;I*rLA{PTmEzxV(~2?Otrp+6g}owqJ`4TCWe9 zOlG4RVT5AnpOETECI4vWj*nBO#<)qrQWYsTSCP_6TyOaVk$A6TeDfee^9BYJHq>az z7j-gx>WxrBUw!<=>Djp`&iYuDXc@oF1tGMHa~|=JO?O26^I65aR=6RYAj+j*xmp-M zc!=obuX2<_)uv3eT%~q)ENXT%5w~7CyO4=A*YQZV=4FYk@p6Wp<28W`?QsEzmo^#L zj2oJ8=R4&hBIn{Ivh^U8IFYvGjCRrTm@C^TMJkAuAF18Ra88`xlstzKdOqmsKVLSr zx{_*hoOiOq$8%Y@z%Q0_QL;n`*LS}}$Zx%B%B;jx!DIR=Q>{J~8_?{E_Rw&2uD9Ln zdKpeomaU9FR$1cOG(FT1!{?GT?W^L1Kh_sxnOf-;-LaK2m^to+uBIAQdg5geUkowM zS{}Z*Hk`j54qrdDtm&9NlgwAm5g=FVK3;$~Nu-}>7BWnj9Za`oM)nUyX){}7lGLYH zgj_mGMzQ58HEp8(%fYSrsSHEm{*=MB-h7VOd(KfwN6pgpdI;aVO(uP^deuqhkZXh#M;r)!|A$J6*RUV8V`Vgmeeu02De zruRc7g6dqGgojIzTcVT>oJogKCDB~6EC}Oea!*8~TIHh8-Hv;A3rsi$V;>KvB7X^YC#L$*IQuY8eSy&(U=T0kn+`_y2MNc}Ez!cbmp?qM zI<9lL`r&f${zoXOqU8kQJ>CARZfEyZmJ%z50r+cC|krX>4$DXw- zRx*0+U%N~tmzz0LNAY!252C)x_e}9!bLkLUiQv3k>ZsDy^e3kMA)gB_C4pWkJsBZx zH1dJU^op0{q$tQ5>c-+FNiz%UMu`ea!sudc%(5lbq(Kr)(%I(ZtLKJ0s z;vn~@>A8lcgyUyLv9~+Tv076Vr)qs(wF<-eBC=*`(=hF5Fy$b|vabiVpto46#P0Z( zKa#>>qL`REyJLpEZmP1_@6Yxa6;CZq4d%1SQxyTtO}g^eFv$sh`2E@frCz7ng&vr; z{gHo-`H<5_cjw_-4wBf^7|WnOueSM&&*{Bx`eDQK`7PHSHYR2ll<|Lcnq#~!;MB!^ zG{Ingzs9~~r;cku`k3R?+@h}P4E{|Va=X5UK9r1LOZ8JacuT!$-t~GFOgjY)cR9<~;L=-Z3U9!z!CcEDqLfE1o2K48 zrX79v~t})+o zitbo!Swz;P(wp*#IlkeR0gt(lnLeSbODCBNcgwW!S1M7mWX=xEy6;p4d8v`_xgBjJ zuO=lAinaLgiKUiF_|4oCTXDn1l~Sv_QJ*XLv-X2RYnrb!ecUwnjoGM&FvD8p!)!=FeFE0Z0I6!fV_62>Z%pH6R#a?42eEiG&-bl`==`e{Fm zmp5(>e^#vafJdx+_gUCSjuN55hjn8))rFR0IRE}-U(Jr|y>ZTH)hF~)V@Lga&F{td zQj4ljU!;t}M>1%BZ02kXB+1m$^PH3CPX9Kv(my1vc~VJX4{gobFU;PEp~bxM@&3Y@ zY2G;GO6d);PR&v=p8%YB>G~NzU5vPGe9;2^c#ICE8EJl%InAlD)JIj~1`P`Czb|5I zpY*qfC78R?o9YchUo5>mkEr%T==P~P(JS|!`87A6rqs8Z%z2vP6p-+4)){m9m@FIb z_p5LC#NMBA#@ZO%8eYgFI{Jmbj3)T%;p}cJa^DqH@xGSl_<~R(w$g>%Iz^#2yT{U- zku|Y&;v=<5`y`%~zmYB49=ApnC;Or}4@CC&8dauY4}nCTB74+6U%?2a4pPcM?#CB` zYFdr_EE)TCWqJIYuQ5My;yHu`8zpk_J^1x2xDF!Kg&`CcppOw3_i?~wA(gT{1-W{& zq$h(?Cx!lQ(#NPHeSE{RMa7r2im5J|%o3!leO_O$(%!WfgeXnsd!$-2{Q*cfxri)i zI6Z5p&Nw|UlVYcesy)+4AM~j>Qrj9(W51#SqK%vz3`ge>(s2-+o4V9Lc&(moBl>YIJt0rXuZPsnHc8+m4_ZB8OdC=SI zJVVkc9)(}G4Wr<$6@oyTvG2L@x|nb~1FPX|baO=Oho>hiX5hX>ee`f54TW!$1Wq-2 z+2J%~G)WGm+S9KI>bJccR(GShrUb*Ayo_-Qww)X*kt&|nUq^@e#E=Fh#DW5(k25P| zO-%}gWe`qL+?w5;7?QnNI$}Qe9H%Bop@rpy@ie4VW1)%6guP!FB|ol&>M|v?3*?zb z4~A1Zhw3JW@Pbq&t~J{m_frW3&W|Y~%`@|v!@*@)0y1a2Hr7a?lI@Dl6KK9n;Usun z4%Rr#<9)&NWf?V$mu8rady4So)a(^sT%)w)l1=~k3qtef!q1OiMUD>UBc)vPHnM2v zJH0UrWyk_Z>4z*`5kGpA(Dr&auLz{IO z`ROwb_f~=*g$;LVPbc5s@X!eRy}{L>!DCLZeFaTRqA$}76^~=ZeDePy`(xU((X=P@ zUYcS2W5`lr(jstt5(IH+jMp7p1itDpB|CYj@C-E*tU}%9_zRUY6vNqHalknc7T&tXF5%YJUk!XW4yI#f%J1 z)5iptC8{KK>U)uo3+4LiiXP+e#0!G<=j#U*Yp^`FHg>rFPj1#D%{0qcr=;<@5@h{i z^ZT%JWy)R%h>Kj(Sd5nuu3v+7<4%tX#8w8W-I1hFw=KfB1lo-E0J5v{1nw*p-o}i> zAcbV~d+x+cg0?oZl~Xr>;3+6yFS!@&%NA#68~?-e(x{?jeKV)R#ULW~NqG)oOQ`X@ z$AC-2b(qA&K6%9#QBt78OrjZf$_70dG+0`oogaBkNQrxCF>t7q21y~F+KnNF&NLCm zJCQX)A3YXZn$Rh|Mr)csH;;JFEs#&p)?qdvdFzUnHFEP^(r zFr!x#&BYMpxVPest1qD%F%ElX%+&5$y$~j`w{(%KsJTwGik3+KL^Cu9#VIlU!k{4MP~6@wumDdK69?EM*p=1((1 z*ShS=PvsFh=DFV79`a}j;beyu4NH;{6+>QDrn;=t{ z)*>RRl!F!SRJRj%KXPalb(X@BGd@cS%?+J3nI)kEE3iEAX$0S!VK!BotJZO;*@Q;F zaDzt#8BPv??(8j-QfJ?q69X5VSR!qiC~(seHjr%nE|^t39hI zBn6c-{u`Jv8sm&+zC(^KHt*1t)n4>5We9$LKan#oLAscmNbtRjYY|f_!Se8oEi|8m z=-A2GAkbStP!^|{e>mWVNOab~En(Wfl0p$mvJ{b9?Pyr?JVppd4?s6Fl6PjlCY(Zh z_`sTVN6@rP!9sV!_-?*y+2IS#@2xQY9nkYx95}vSsGy@+M8y6Yd|y$Fk_e`WL#m6e zT*Z_tm0@d=>1nhha9+_JL8xlK;-Eh%YdH>F_BXbMFg}VuOTu!+r@3EfM5W&$hbW2FzAYaYx}8rLH$(@DFP_gF zdhb3i02ko&>wOVKe2N195*Oax9kX!>iWk^L)JKaUc=|HN%L=FVx$x3q!PhcYM?bM; z6U1$fPgP8R{8sgn5cSXg1MfKynk`gh!IaRBvL1n)@nzbP%nX8dOW~zQj00}m7@{1d zURrYBuN)Jb{lR)5a2EKd&0XBH$b1M0RbvMGc{RI^pw0TWt!8f2>NkXD$8(HV zAY(td&rD6b)G(LedjSX5#l}(y(g)2D%*`vtt^0$9Fc@QL%~TW^NvC?W{4fVxL+Gm+ zc0}7EfyNeGDU?jVOu9HPt*u@7majL$eaqXGwOW%Q9b-_c-p zw;LFtpT0S_z4Oxh?VVG0sz#b(?8JTi;r?z&J)|7XZSKM>%)^yfC3$E3^3eorUw1o7 zoi^X2hBzHC3bBx-Hose#leVo*iX{3zk|+5fr0X~9VmVkt%*nvCZ{Gf^$w;u^9UOzt zNi5Xj=fm7B3?W2W&mcOb4fSD<$_dIC=_2`?UVAL3P3U;?{f|n2QgWc;4CeiK_v8p; znc!={V8#8<`1jn1&$S;h!(m4?>*wkdHyoYUWvYw7WM8N1FbCkaa#Q)^ij6YdS6_`8 z|g=d|1u>lA1cBSve;?Xi$Z9A6G(SD7sQKcKjs^5KqRa_M8=-8N={Pb zL4#dc)UfQzKgk@UKF`J0JGBlG9s8i^CWco`=@rPDK&UuON%tEK{%S*F&u#TSb)N0hzh5GdgQmL3wQbL`E9xGHuG&5v60);n0 zxdbJ@{5G?IR1hsE5lgJix6TjICLwRl2R$5*(opJCH9HdV#4v@H`UtNgj#@vwyRSM z)q{Zu3$v)tZfz405OvXEb7OmPRaw|4`xf8Q*u)5;D|c~f*F0<-rxNz9agvGUZhYboc_nBGSq(btO~Ti!5afs zyAhvTmX^54*CsVR)We2DT&{YU;tFoZue&?r3Pj7#P)?#Xjt~*ZU=^9n!5lf1Riyx`oa2>)==_p*4BqdBse^8)Gmhv0Km`~w&e|^WP zGdYrLy>O5OYPXEE|7L&8U}yPlaCi%u`03iek~)7HjMaN?r=(=`bc37cJ!9O|&_oGm zquONo)S<1d%2QVvpP)!B0PAm<`R34PjdJSc5>Z%_<8bf`W0LoEkupB1Jubl7E>F6& zOt;MDx6t!jhJQmxp_zF@6KBxceCAySb_-nO^OYwqT8=uRU9K_v>pBu~z2E`t5GJc?zAf+BKI;}|zkB9Eowz~2{usX4XJ?gT<9e_5fBmVJ@86|*YbvER zZ?{pEfletn5^=Yt+;lY^BfDapF!uZ=LqMV0Ht6GwZgDuJ7JU8Z%NM4{xt??R1* zDinPg&D|@^3=tQ7wqh+7}1c=#S8JdM42T6nx;8Y z?oxH8e6SApMW{S_x5&_$@9)sUvGhT7^JDRc3Jr#Q&AhhGlJb%ZS5{8xi~4-G72?%@ zNxWx+JCQS9#@Q&Oa>C`4@Z-^scT-~F>wUUIrjFrPZ>N}bR*u4sPl_EJ%6-dc_($(**tEM!Vf*i+3lnF@R^&1U@o5__gR%O<4Dm}H$`a_-u6F z)Nbqo*P9!J@m8c-KdN5SS%;a;Ir>W9W_h!^Xvi2N^z7ySjZd7T3F5iqBs(YR4g=6d zJjZ>J>5kTG2PZtNtCkIkUoTh8+?^?%-$zQsgRgliJ-bM5{?8D4(G? z;?5pfs;)X#8BqT%i!h~y*(i{7T}ec)yrg!E`@utmQ`eXcPHx#YLd`ij=_1n!q{PKlVu1a}@rk$zZ?S=7j!0C&ZzsANs zEXyG->ilePReRsE#b>qHlqs#epmw|F>UN2v>qLJQjvvf!p*((>8gHHB@K9k`e=HMO zlSKD3a_nz6@>^+bP(`;IRlX!H(vjTPJTQ#22NWi7R+!`@o7ezV(zhZV9K^F?2M^^KPLG1>f;z08q+yP7RM!AETGJ+@6f21j&$&QLscRt&LUhe7E!!6;Pr;{~u!`TcOM@K26vsSg$Gi;#96%n@ zXT;V8lVa&AXyJkAR4ocM^fb7!l%N*Yyc|DIR{0e|bD!mea_828H zpzZD~R87juH*xw9yq+65mIA6sQ@REHw)zs6`(eU(FS352`OKMAG?VP^Q$ds$4hlqG zQv(?a^`T?=kn*?sMXu8_rAQx3oGZ-ZQ9~lDFOFCI4gC~I&bx5m1}DoEsvzecvB z)HwpB1cRyFLU}}hhNFmtcB(`R#Gl`L};A6y%>lS(xo;e;WiZcQWcT7 zxEFd^Ajah=u8Ti401YQul1Qz_Syqs7O+^NUJ5adwEY1S~fj7R|$wBob>Jtd+JKeG2 z@vzZHw03?k7nGhO)NUQIl@z4Nbh2Hj$u|`FQ9w3vaSay#Vzj0g`zE)4g~UE74i7*q zxyRUlfH^{ADcphp5hA`=1K-<;x}*-R*y;1B8cYaodyO13n{o{tr&OTkMycBw`*A3q z)7S_o`lhxN=8$LFVdSTYV`#CW8ONBqFNeV!4L^<_lS~@ht$|K=k9K;blFoQ?dNJU$ zU)?Es5aIH5JT5W>Vb9Z-S(Z*!EFb;|vE!}*Mk$sXkkrT2?j=^L6|x;nNxW^$*e}#X zobiMTJ2~kKimVI;Q@ha`jkD3ESsMlxpvzaf^<$OV-Kvq`+9DlgIJ&@97=7x8(2HUr zbP8xR2m54qg5UFlu%Z0@#J}O=MjWTOiyjXjnvNJdSSu~v-)H3K$2g3H9ExA}g*4qn zR4o4XDz7>V8|)=J^gCt6kcy=@`f~ip17o1tDOIe^g@O*#)fc(GbV-#^^I33%%OtBG zMP%MV^UAOpn7hLM>9wGUAI(TLnvvgU18GZTv&7rkI$8P*1jn8H%dbL-8TO|p`*5*y z6(=Z_&@eq%0?BubLSs)mGTov`WKPnQlq|adnc1F`$QR?FO>X*K1u|~^EM1uAYp}#2cjYaALgW#GP1`Q78{%0p@ zayy`E{UKx}C7d*@o!?7*+7U%NFXq&@bOTPIc$jrDH1Ar6-Hm5@6It8T8RO4Z5$|0D zGNPb=Oy~vdJu{NvcgzG@+6_!QJ5I12RlkRnhYilYlLsZ*SGbjdTpHWr_aumezUq*b zXh&e_?T+2T)V~lLtj(jpY@es%S*29}H{3Ux*$(H8cXZEO;QI1)F2^B%tFKcLdiTN$ z3Xm27`}p9Wiw*w6+na&#oBaf zw{&>tUbI;&>X*KNAaJ?)m(a`pXoEOJKIY5O86g8#MDGA+0xT4y+r~^BEt8g+z{R57^F};>en1#DMghsu~C1NAA2}lHQkp5 z4iu8D{Z%O)^h1MUfwYa_T2zB~8i)r`QHVlgM`t@+j_;^Ns-)9eWaNKl0RrCZ;F6xw z4`7HNBo1hlW)!^>ukUa2FIJld7)F?eA_sVb3kgkXGBbZ(gpckrn?-W`413$$3OK7% zzCvr9>Y!bm3~v4TFp0+wZ46Yt5jpKo@iSmtetkEtDBbL4u#Ma4wKh~Hc(v&*I z1A}O#GBO8)HVK5lGy>O@(1U$4?V?fgwRV0S@gY)R6gza+K1;osnR~Y#P=gmU6JU&KGsO(xsnd`_#+X!*tW8N9!`EKL8AT!QTWA3%=T5myM`Sn?-407@3DnWgB_#7TsFfnief&wH zlzztSQod_mpZAlXr%f3T6u2{k1d}e}&${$Z^TQ|VYA|Q12>})ru|<-J8-D$!aSNx` z1&uKEFwa3lUBx&zxuv{C0vpKMKbISFHZ}6$9;ZidIz3m*0(8Q}TXnRHyzu?2PdE>R zXg6$}eP)j7k?GA?cfi%~nHOjjepn}`GVI|gvt`!eSOf{tDM_{>*o zcatgJy%boui+rBDqw)w4D$X3JXWh5B_?X!;MS9beF$Vd^`KRqoTpZ*;35M)4-Ywg;9nft&mH!;sm< zj@yl%u*nxn4Y=Ifx4YF+0c?gZ11VUXY!%s9epZzdE$U;?FMERM=u@bH%OK=yFeyk8 z4d!!d!mC-X-rl`xK`AVhnCG@5u09gZP{*mOaPN=c=^wn#zs25?4>pA)WHB!VhJEHh zAS@odkA7G=;Skq6XOW9aN)Y!zbG?bV$qAPAq(4TnmK z3Ba&F0=@8_+#(J_^^f>*`%jzFY`VdH=vp1O`!WQz@dyhz&%J<2Ho>@FV{)TuJkTM5 z#jA^#pQZHcw{PiUS_p)^WY4CLy?gmm(H{DY{Ybv*9AF{UkSlG-t#ks-6r)q5<`OUZ zY@daW?#iT&X#Jli{oCocFc7>kn0O0ghiR|Jt!v>%kxEsb8A?h>N;w*6NHx87^}3>W zmdT!P&~?MT`9G3F{k(3&5Q>j0%o(NXwYR`v9qiqOYuHtobxhntQY{mr>#ET|?!%gD zr{2UQ8)CMUD0X<0{i7-zIntV&KCZYeGmL94L08!>A+20z8I6mc=OUW{!g~+bA-W=k zSa(E)xheF(?`icD5*vz?S{a;E1(7i;j-4XAvN|7MV zJ-O{|6{P=eV3fz;6tvW-Un_CF5MBjFo*+k&K6bdE*8~MjyM4ehuhO?gY`twYKh`%j z5@rBB{*P0ugHy-9a(|f6BIbimYSa7*MMWH)flKOyxuI-g$w^9&->8KyuqI0A%_4%T zIYx&-5Z&Z5W!;4qqqPUO_zt?aiJQN&#$v>7Kjgi~7W_Pi;ED5BqC8JdFT~a(m5Q(r z{xHfC@QnlHIn(bFZb@vVhv0h)gJGOI@so;OCM=e!huA|Lp%?PKn(ERQilmn&G2ZMzBQJ)`4W;-F4GMD~N7M%)Zg$)Eb6Jj;O zHl1Mhj9!YDwBNIHeja!=gX{yissh4h1_7}4&thv?B=&Q5V(Yn4P}t;cG&N z_zE`=SZ29Rf2Sht^8!v$!l5D=Zq{ZF6INFUMjedD8h;9qNnlxlf8LI- zQAb26g3J#@IDTCdNRjJO+O59f7Q=r6;yq{&vS2C@oDZ^| zrt7uaqiI5;f1c*cBXWzcEYOsGOpl>eZ(%%Bo8M%Bt?}MZZD(D?c5`wELC(-?A4Jnq z=`%FL0YvWb->E89rzu3z#V>v7(p#-95I5Wa%eiIk_m4VR=t<^C6IvU1;$_=BBB1a| z&@)Ni#cGe3u5O2di1#fHxqf`CS-Ky9Zy@3y6Dkxby1;LS7A`6*7&&%`t-L{^eC=LV zdg9hCF-@~|8-g;mS5R+<{G{wfpooVjgBPI0MrdBZ0PPCYCBm=6Xw4f&``C7hFOF9s zT_=RTBereqmECVP=rxNLt3TkW!aA0{WS5;~_1NU|Mw)Dy#6=j{g1Cq-DmEqz$##RHd4b@&)z5465;fg54*xXFT=(>wbNG?HLGi9Y8)$=;q=+8gRQ_ zJ{X}s)Q64h%OTaV|EIlgjfZM|{~lX=>qvX|FO^gMS|}<-IgC)dqN%~J7>5)JNkkZ? zaqg(CVz+b}(o||>kz-CXIdo7>iiVtGQJOLiEj40j9RAm0KcDCSynH^N=iT$0H@uj+ z*L7d_b-upWy&Ok4(t$sLF3%};uf=*#BD$a=Y5}4JG2wovxOC}5q%ETR_W5*lA2d0~ z^X{ttDA##-H~QcITUOz&ABhH~W#5A$sKM_*4Sv-AsR}I_=vueOg9gT(fkZlPA(c1P zP4~1Q&9%NWLX&mD+rgB#XrfX) z1Mogufl5jrSkt)4%JN7Re)igdZIko1TWsI`U)vY|Irr)DbAN2RbME*O$7k~W3pBhg z?EYjb3RX8*;uWGkbpPJ-;}?^?-d*<$QQvU(zSjlXx3kaYpS*DD^s)o)tVvV??$b;WGl=H^Db9~dfC!t+oGXpLYG4^Pr zu302=(be8eM%bii`S5`@2_^5Napt$=>ryhx3Q$maPl@~erU{i2@cV+8ig==eFVIRB zFQMhAr^Vl6w@N7TV^7K7O!zV5w9St&$t`-0tD6ESKhG6XL*&K9+Vx)0#r>CXBQ3{P z`UYuU6En_3+ElyKXyMvDh=3pI%+R>rGvu+RHol{)w5Dt1QuS!y`A>P;<0TIi&v4sr z39NQAxI3j<=%eMr-%qW`FN)z~?jqbIQMurn?dmZACMJrOyR5o4Z>+pTWvtxB)KbV! zpJw)UIAfRMj6~&iE7}Y#)PJ5wuIZFz3vvbNlLbV_mCP9rL%;7T>G>GR&`1%tATTu` zgsGF{J9i(a<&8u{1u>#m3bW8h8(#VJ_1;1Zc1RONTZRk%I>XIn%0|<-Rz1;MNV)d$ zW;)5NsiTFban&_E&wRBDi9wTeM*~rL&^yMhwkvcthq5b&-Mo=V=dQs_q`ipH4w zFHUpYG6hil=VK9(Xe`%nwov5dkpHXu;xk;4osgMyf|2Lf{9)Grd_qd~-RttC+WeC_ zcG3#OmnkcL>>5}|ROksAG)s7kVc0b!$xd1dt*elcQs(P7cSZ&YEW#e;+Dc#18}7QO zyl`qP=gaFwTYxT>W8*NrZ>~x8DQl&;@_@Y`yGKORHZQbFLgr6qYusb|zt$u6yFz3{ zO!JLbmhyVMnI*H~%OUJrDO`a*G7-M#^*ntzMIEG$(&Kkn7& zM0Gc#R-tKzR7$^3Q!bl`6F4+5-BZ+DgM*mvI)0;xxoT(O0^e+R-vIG42_M{XYR%iz9rN9 z79A)hIxcy?kf`ta61ENwHP3@w2fFG?h?yTV@o|R;PwFN5Y?Mxv^%7t4=tC?kePQJe z>3w8iN5~fXBrEWa)2+(4b- zR(qPOy_YVe`Uc;{ly^$2AbVmTMwN8Uyj?aAe_l?rG^Rd#qGLD0_GW0j!=cQ20%=Cf z0-5KusYm}=7=R>{nvgCDMX}tiRjIh+&a-1gSBsHrKeSuwHn@I#hs0leWrJp(F4D^Z z0gXF_ZZZ~Tz)JKpT-%Uq7&S+byI6zFx?NP9A`~b!1vKu5j<##)m{c-<^~G6M`XDPT z*%^F1hltt9n)F2F2zxtfMJtF7cyf_hfAEh6y;5VLjvb%<91OxYS-Rp}&*_usoTe>F zr0`p*nXpjRKfYz|M2_=5mPb8a*@4^Bq^C%6Y2>_OTNt*THC-p1mA)0}bf3i%O4Jp{ z92p#DwO$LPXEf>ke`J%4X;#VnVy})DU=_@M9encFK-v1V-bJoI~UjL z*+vNtGvgG1r#D2)mkAl<51wI|XgTb2sz?E=h|(2Tx58k@QjL@Mj6V84=SSMGVv7YH zB3!m3M1~mblC}nX>CJc$0xv)smRiBViqE7gZU(7@BYun6Ymy*2;2Ih8T+PCu8fZp+ zfsO~V+*D>5HQ~--vPgk^7O5&mXw(Lwtyl7!o3pGwrMWONE+{`f)JGg`eLav-w{$x2 znp(zCog=OiEx+1tVx#0ab3sg#BdfC==Sm1)U%kmqtAtBv#YwityRsZd$~L5$m-mDL zJ;tH0>K0`6ewg0dD3qrtS3jN;DO~NZCn^pBhy0nc9Kte7z`d3^HuwYK+7y$`vCNsq9Xg9*l_@a=D`>h-{Y3pIaz&__K5&UM>)Hk^^nU7i$aurL3v(VNtE7hG(9MQ{(#dt$F#z zVXx{GXzmu%dm(XgRfYk3K6ZZ*DJABk!`pwbr`AfXGw|`pbd@rb zM$DGX&y%1+q`X54!#@3zWdVuXKN3$wX1_&xk*0R)G!3RXP=8wM4EK$3+bpX&_O{X@ zj2g!Ld*1h9IQhNR{-2Xuv*nEs00Y~7S;eKmmYWAKeigT`WRbF6vttLqyFUW|u1daP zRBz_Y(glfjQeVc9wTfm*dj`qMXUp_i9uh(gjRMQPFt~)?sYDo3XLf=ycWShEZk%K7 z+xknaF|}&;ac|T^ZAy=?s|0-j8O@6(y~+V5<*aLUrZ(%@37R`sT*C+(ldS8*1T5ds zIXe2zBd#N-L<&wXgJ~5m44Vte1wB}A4rAylGWmCp|BskcD~_HSgi%iB}^&Fbgu{Ls_9);D zYcOgc^ZG{S8xW^#arA9L5Iv+;qOSjC1eq+yG|i|lb?#&7Sno#05Q{dkL6}@6&EaR*np@7CuRDL|a&lEOrMLfhwuu{>w;j=$m-u$|vzn5TC=tdc4?ccHVa}_d> zMG9Zh{xwB(Mpy`A+!~FgOO*h{GB1Y96XeoEs$rYrZ}fXyr9@@YL}&9ZMz5GfapC)e z`WARB)`(kfeD6^(Kz_2YPMBn}iRYAU1@rC+QE=xj*1%4wAU!lY56b3T#*k6^sn-CA z-Os3WWW=V4vuN%qnJtgS$?1yO*Po(Mx3Qa4DtQ!n5oFfq)B5m9omW=xY0+}e^Wy*% zaBc+n_bt(ZLq`_OaR@Ed8assUPv4rI_cVDdhA|Ecn^0e4S=b7!7s_Z{-BCF*Ko9Bq z;F8rV17f$t>x@3dBC@XJ!xO4H9zmaKbxkAbw-jjb2A`Q%108h6`oDfaf?hk0v1=vk zjDCCqS9c8Vchqs1cZ7|}WnuW~x+A$uRG3|fFC z$ZzUv8tWzx-uA}KA+M>hvr12Dy?~OpdNLGTsU}o+G(n=Tj}VGUc$o?voTfJn9gV{8f7Z{WHi1cxGfEW!r75b z9*SFMzstfJu-;f?^q$BS_UO5AN}xkVL27RR#fi%6TMm%68-k#+dy(3spRk`H42uxv zbw=?>$1y3y39k=EfZw(h`lN@xez}Dfv)G~8pajt(GtV=`vy6QZf8|xe!b)qfWF^p;|tO3{M3G;0> z@ud&=axaea7QaUIRPhiE+BOq``O?0J5cxa~%)+RLFO5###{e)piAF7NNVvV=InT{M z^(Vh)n7R^RMNx&=#4d)01@-M$2E)d&u_mk6pJtid6J`XI9aEb!U_Y*ak^aeI45@*` z`Swtx;Ic$lXLKBi^Y)oZ77L0QAgL`0v0N+?Qw>`LYxnOop6Co{9?&Ha^{OWKsiMp!m%WWQu=U02L@nEpeLO!4n-@yyPJgln zvSHGP-6L6TuOSgfX>iGk$DRwbi1Qda4cywsiM68j0J(Ir_ixBWU?5`*&#Kj)w*O)y1AWKx~Wz75$$Z>X*fD%M(|i>Nnq%4}X!E zpkpsa%mwL*JEc;@AQwAItF@P^o*z8p=4zRXtuV43HrEzHj`1i45umRV%Y+$C5B>`}ygH-%jODkx z&C(Uye?PyH$eTxTxkFTx zVHIe()A4}3bTo>GSwdccmq#;ijo-uUXi}TjM~rzE)T*VBWO%8*2x2t0(k9%{LcW}T zTS(l+e)iBEE+{Wa^SQN45ZNY~&w5g0X#0Y4wL5M1Nb77RAH8)koqv3KH#FrEFXg|a zR28Jba!3B~_Q6_R8Rmpwquv@!=PacazD zY)n;I>)5zItGCi8W$#0w4;SGKZ7U=!4TPNZ&?+5QNRF1Iks;eZmT;H@BJ%cknq4ji zzN9kMfwLT%Usc%8OeFS-*rb4+96kK+k=DJy?>df7_Lu`>+?7$Dk7>Fx^quc!Vv!6$ zkXKw1cV2+-bOHj*@efxxP3@GL!K+g#6~#%Et*N6x8HD@B92>(pPJ6%Oi8T+U-ESB} zw~feFdX&3r!OyAvv$+vX(48ys>>9wd%Ll!6DhV>N=Kl;}seJ4jU0w-Lgl5 z-2I2{V^p&SYJo3e#^zMY=I-mnyAzdzeZyp75F@QzR#nfGWvJ>O&@!dModJ|8J+c90 zJ>rdCOH|H(0)m->fF+reeB+9rVZAdyQdaQPv2iyo(L-Hk7qSzLto9eW?LAU5ZuL5m!%G{tY zJ9eBGQYWM-3kD}w`S&@bEB4!f*B|6m{1*55_)*m0!W1wfZ|A1FBxT0|JenmpNNm z+Gv|a1PAmcbCMq&Wh%G) z*ZJn8AkBZoowSH6Kw~K__O(kiC{F*@Wp_*F@A~!}TEsAIBW_OKH=Pky9VQ7`herpa zg*M$F&~r#ysOf@S4UL0YVX_>=-acepvN~_pqUQF&gK3&TPu@o|Ium94coN~rXuo8B z-obE${Zul)25MS9dgDLHuk+=1kb%Y1(LHTXy6U=i({j|(er>|LV#Y2bCW*Bqjd`odgTdG_o78=V_NR%< z;YYLCZmigF<~c?K4s+G}(A3{-P82ocfWwPGHK!S|gglxn^|*-+JCNu1dmiTAj%%)b zBEEs-s%ac#gvsu4bjHEr%*hrI6MInAq$#K%ISEUtdesxClH}^6wNW^u;%fn7-xsL; zX5hBKV5jsg(hOAft2y>AO3m@kr1OJ#}eKIJ`>Sxo|s%!kRh$=L?thP+}@Mdo?9{onLEVN)`Fk%N3 z5PVOBHRF|ki&-{P3e%!DMPV^Zr+<1Ma5Do<7MN_o2<9_@hIRKHr@5`vHS z!+B22YwXlfyR$s5`7M2NCA~23Qbz+mrE*mZX%j^SbrT|7psF8#^O|?JWK&)(UtUe? zFs71SyQ&GY%k}zCmPfMqHf^m&+L?<|qFRyN!tB;&|C{AuL4C>ZA&d<1&KwOma#vO* zRcN3Kf<9%vCrD~vTeCd4e)V;u@ZjNaUG`B{We9V=i^71t^jvkq_TtSfkL%(Xnxz#S zVj&UZ3?uMmY~~_TM$O5}%JnPNirqHI=-Uq~vvbpEHyiOv$g1Xshw}VCYUAbp%TsgCpJobN1CvEq~zATUk~*LjO-x(qA9iLGGi7u(WDGPTMEeJ_*>* z75Cud*+d1Kxp=W885mQV5s)AccC1oAc$)WI+zBfEO*| z*y`dYFb$}J$j9APb@P5uwTL=E7X0b-gKR(W)Mht>30SERVOi%1&v& z%kF0zMBTgb@%hR0Kmkz!Wpx~v(LwpOc7_bLIJVDfOMYZ7ObVCj^CRVw&F$;)Xa*GS z6Ri3ISZJtWdE)3LXfCikOide}ONca3db&fA<+f(OUc?h10hLTxuiee~YrVBY(2f!_jPsGSs=8eI9yZYlP(jc?>=t^ZD$9DW$Z)$K&Y!_A%NH z!qdUw-YGw%;ME`{&l5y4S6=nnJqGVy(Gog77epOHhL5t~5+IO*gmQVfEH}KQGIwFg z^>EpB`hr+X4TqxP4FBXu|7zI4SGh1nM(D8*5};-UQ^uy%LYX9aY#;B6hwcU2>aR>T zFaD_3K;VKyzx5HY>9xW>vhQeh1-g{P#tkipz+F8;CSgLHFaPqGy*Oa^@hE##=GX{H zj)nZM<0_ta)yS#0IW$WgZ&s;&n)Vh~MMi}f-=Ejl_bW|VEA>cm4qZBoX!Qnej{+)6 zH6FDpQ34(k9aqKsX&nrP3SIh|zWt0qdEWDi{v9EKN10gS z8`di;U6pyoF_6kd(rWW2;@ukXZp17DQ?6sKu{09;eUGVfYP;l@P^XIC!11QPa&8k9 zfPlt&=W%j!L8H9s?_{C8>wQ!@c>MmdWDP_e_ZU)l7lKXRbr~jXWzL ze>cz1&0|N%&9I16AbY2@kaklocX?1xJ-tCv>vEY0O2&T5XfggZdmj8vOq>uc0hU}R z!H01J=@@}#-u+gJsMv>GyM3amfuQSaKu++P?(q9sr*Ezvj4)5$sulJx9kUDf1a;=T z-0L8^u_90n$ML3+)Dr z+_S$e{nUl{YL7lO=bvPNd{QXGw(#deIED#)A`TC}MKTaGO9+TH;ZClrJq{fnH9wX~ zz}T@5>z&154$yX-?ZP{V88B>FW0)}q&5(o%=-~eEDx6N~!TeEO+>6%5!MFdx@aDI?ROI*72$RvMN zLs9VV3J0PrAOIQZUbJB6@V@i928m&-74Yks??TyVrRxoY0V2!h?7?UN6>xTjsk~yj z+teOS5EJy~H&^WhQ!_mv&o5UguBD4vX@K?jY8AhgO3RweS3+%(Ur)G{O<0Y-@gQ` z?;%dpWhGiQ%z2urJrSFZ?JICAGHNLAeP11Hiv|%xgINOk^Wg8E1uF$NZ}bd(vOv{K zOs!Sj%^fbu6X>%1An%lSrI%-2{2vTcbZk`MSXP(If{&wG`);VXsmCK`$8$g3st(@F zi^n3lvZ#~@8JQue_yw~2Uq9q|*98xDwcHfP`snEec-#o0hipaFHqG~8tZ}-hp4PLM zdL(#4m6MZU(fscADACvRf!p*wtiz#INRG;BLQH z%>5cg&EE|MaaoB)u7*l2)8cDc<=4^gYdn;Q@lO`AhZeH@@&SKmU%l$D&6yS@FaQXm z(w{o@hmwavJPL-s^Gm5U89z^bjNvw`|MmatbN~6D= 1) { @@ -60,4 +62,16 @@ class WorkflowMain { } return null } + + // + // Exit pipeline if --profile contains spaces + // + private static void checkProfile(profile, args, log) { + if (profile.endsWith(',')) { + Nextflow.error "Profile cannot end with a trailing comma. Please remove the comma from the end of the profile string.\nHint: A common mistake is to provide multiple values to `-profile` separated by spaces. Please use commas to separate profiles instead,e.g., `-profile docker,test`." + } + if (args[0]) { + log.warn "nf-core pipelines do not accept positional arguments. The positional argument `${args[0]}` has been detected.\n Hint: A common mistake is to provide multiple values to `-profile` separated by spaces. Please use commas to separate profiles instead,e.g., `-profile docker,test`." + } + } } diff --git a/lib/nfcore_external_java_deps.jar b/lib/nfcore_external_java_deps.jar deleted file mode 100644 index 805c8bb5e4fd43a12a5891eea5a68788309629b0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2291171 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�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

    A$B3k~{RycObG@6y| zeyU>ii({30?LWsXi#@9oW*zQ0b!mkPo|(rr8zWfmMaWsfzfTFD?@`h6W@rrSRdzSE zw`rXVJr@XY&cORs$=oKzyM!yXGTS5`I__O_k$Due=|(^Z9Sef!92Z=B)r(uD9!OxH zJId3bOa@)YwVx#S9MN7HC|7b|uhUXt3EHLxe9>U~Px8C8(se2A04P9bC( zkFz|#ZjrB^hnk=H@ltP zUI(v-cU*kW8bmtjYgIcfw>8iUcmN9%`}6Jj<=s{48qdCFt@+*GHWqiTl3la}e^g5$ zbaq!^wz9g~YH#ja+iY%rU#!nhC~r4zwT-FaMZE((|#TF6xj8P^k5!c{$MGq)qwaPu8l7Lh6Db*RY~ZxP-91i1`+&ge~gSYY>vlVGcd1P zTCoCk|2n>k{4+wejjz0Q1k| zKq(bmQ8Y;vIR&@=beY&+qBWQ*LmnI`H^C@Albdd=AM{EoD_Zvy)HS>JBi*W$shQpY zEbC`bRtZ4{Yieb}nuSbs(OUY((GcO8%HS8{Rl4CL00wl)>slFuLqSdAXsq>@n)mk=@nS^z8E@PsTFM!GuBkkhUFSnXI@j{h;6x> zFm?x8i$E=9Yddju+C1{r%=j)_tBFbhE;O-NtO-ptzVj^c@E>8+ESflNPm>Gt33=duqELk#a2tCTniYk~nayj_b_ z(m!@dRyc$ZeGEQ79l}fu*{*9h00(|+bxqT_4y^ZSk41uFH%Lk@?@#l zH-5eXkR3DuZ9asKDoi`;gcy-*3>NNTV3^G~QvO?e(@m0T$-Vj9dDHDTkEhn5{o=#@n> z{Hk}kshW#Td$$@6b7FDzM_x8@l^4)x!}agrDKCWVM9j{lCM7aY=_E(#TtT>bg6#RC zbDIYKe4=AGLO)5yUjPmkEBw@mHGM_}?ePNfqxMrEzhQ8cUZoVhH6p9dK|<Vp4{djYG{rl=B={BjVkbBc^k`8@Cc#Grsg-wq=JOKpg zzNXfJnx>y1JYhMKNflW1>U%?I%zRV$3L``iDZ+yKYUUljVh7=F2^KIFUIloM_rs8V z)iq-uh#+@_^;~WZLhwq`a6WZH@RB?{((%Fo@f>cEAbSMsC_jn$O6FhAbxR$0>_KV5 zu~l9zde}?nFCRk(#{h=s#P6z+9VkLy$$vsRY+MoFhah|8@W{Ob8TRk5x?%>2z&(6( z5hUm+y%Y5mUrl^L8nW0H+r}HMy)YIxJv46AcW0j;txyHYUjNr7!nVPKdSZ?rv8ZH+N& zk2h?U6E#ACP;#DLch%XWZKN$Ds*O}Rb97^3UpZOSXaR%OJ~kJtCJ~Hrg;{B!%kG+C zC$RAa^^Q+y(=LC4`RonPu19G2AFND#gBOi+omwklF&DH_+|ad-9T|woT82X?#D>v1 zy0p!EFaR>xzp@_7Fm0beeEx0>ai>vB%k}3+x8z)zXy*LUo&&I4oz>>*AkJvbz82x! z1Ej#fiFExC{&mB%(sSW_eQfmA=@g(QmyDz{LEP&ZFH!?fo`R<+9%ETlpPciES4yd-3AgAk%|Cu z3jyXMST2-LjBee7h~E*Q3_Ic-w)e9+HmMoJILZ<%-v|BxN)V>(Yc=sili3S83usoi z+0DF5c)oe!^i?y5Ou&JJ52K<;{bH?+!EhmC7?}j>PboUeB64T;bHNGZn;CRxA|>(J z&@)aozl`~IZve-0$Y~^Y0S_Ocl@91Trn~V9yJB9v zZjonzLf?KeD;Ut0-4B(GSG^z`!7g@-t5wo+W`~N?P4t$HZDK02*_=HP3r6eN{nFo{#%}>~CoQtpv zBTVIbz~p-3Uf}%y+PudG>_lYhvk^B;C9XSAj@cplCf!w~i!0G~S#&?;NZn#hGxv)a z8-;9NiCzLZkJHoRnU3%ylomRsml_PqmBpo3jgK&~lz_pMSdvH3AuCj3lwN2w|1J-| zWT^>*uIUI>EhtS9F=65Gh$+3dkBn4N%1Fq`LZj4TP7#An@sMwj=rbD~yqcaZ5#*Iy z;;=rq4ig2)eF8UFz+7vkmsJ@vKaFOe(KHnr**O*9=-Ngt<5=U9a^iu?EAc4mUqS#J z_PMQxy!E9#(_v2e+wAYAgrir9;l(T=4=0sY7OGeHCZudb>W)HRyXxF)bv}-X9Hroh zS8mie0F^S*%(7&KQ~F8BIdr3;4xdzSr8&0Pd;_}1f}`0NvL??$Qx07dDxX9Mk4)2~ z^~%yN;MtD3g$$;JRyaZ_I&zHi>Rq;JQP+TOS${vk1SA)d3;UFUPTXk}Im73RDf@y}RZ!D_LhxqEd77RbM2^AS0b62Ek0xn=T;M57pyR*d38~`CN;*nz=Vl7)O;Nun;G1$S|a<`FDG}?^r#RO)~W+*Vr(v_|_>y*fGtMwSPo}d&B*SuF?E|c|3 zeF7eIJ!THFi7f@c{hnP61766 zb%cefC^Sen+kwru&#|!7M*_5!+R!FTy(kd6lQD8m>N?|zF#qT zf=4d%?m*1Dz%h7ANhfFVueyvYn#RR)N~Yr35XEQoC{xdbFjh;8Q^}L+yrab507;)@&Ap<0;&&mg_#|qQFK9XxDGr;f=NTEM zno)FBSV*eUwwLadZK;cjmp>FbP0%phg&1fI77S)i1~Y3+far<99ls$Ay74Sa(t@m* z70-A!0Amz?DS&b6yyT^#rj3ql%_>T~cg`-oI7?t+e5US$kK;LMA}{Edhv}yx2TD!N zadT_J)TTgE%~}4LjBzjLE;LbugS(}@?Nhqx+Gf-}*`r(NEhiC4RdyybcG<%SGwZ0+ znpb6G`fgN#jx5M36@4?+!o$+1Ioh#U7l?Tq;2+lfo!H#G6R|FOzRe+iFJSXHKpDp7 zyfd*ba=y(6elGxXvVc$%DZjj#iBxLY)a+w4Bd7b34ViD)(!J0NH-mSc$4^IV+1Y?+ zih155!0yy7>-$%!1M@H6f>dlj>Zej(`)Li((=xnr5- z#PabnI}^r(*-qq5Rd!~?gZZTPJCB1U?RX)XYsk*ga(1@pjeBx$@y7gdmd2K5fpGR# zQM3O-)3LZWN3Dt=YE@3YH%ZOP0kuZ2z?-dZHIZ7gPxMV!w`N15+1SrB?<-2Q4=6%4 zAnfRvY3fTM>2H6$P3T<0qSV-P$26~C56{W-Cc$r}KNzlDD4S5` z**gLzu4JA+NO*d$E>r^KTsFz)Bl!5G>U;I)%kKi=!eYNZ$`RY6V9W1?OoPpo*n$)G zXA9#dIj|r~neUg-lM+!;-Q3bR<@G!mpsw5=RCJfeK650#wB%~B=hub-)6#*``JiA2 zw`^J#8bwQi%)7ATwnCpxHgMvs#C453HesYVCH-K~dLGcYr48}*Fbd~DP#WjjXJ3s; zFZL6j!oDot{QbbI(m%`@-tBPL`AqgXIx;@Z8OrsaL=$KWd<(jXP^?0+7H}$`|D4=n z5>GRh`(yVaVEA`L*Z)H>?&4_RY++|BYGGn+{NDxR|MQps6pW{6DQT(v2*#s`i-YYg zYzj)$HHR~$LRwc>Qz1i$lau4+6YY~)vBya{?AgI)ISNGZyzdt1_Os+Tk8b^OT4HD2 zy&hN8^8TX7T7|^p<6MkSf49+D)wR5EdYL?Y?D2g9?_=hI%m=w;?GMQC*@D=E1p#c2 zd;}5<)bHo&3)54ELmUPM>r30~(O-)(`X{;L1CRkz3>4$jjDwc~!+|UXR^yY6Lz#Z2 zlQeTpuCf@3Zp7MVycuWn!-3N+9eTdi-Ui#92(LWS6! z)>)dmOI5cAZUOC77PA+7+sKe*?}ZgQj5--1gSQHjP0+wrs{>j0e`8tVt2WXsF;*YW z>c56l=(e(?B~`VQ4-{Kaa+#XP7Gd+92C4Uh`BH=4fyV{86RIPc z2bv5-=Htr;st72^Bc8iUpI4h@GwYZ<_>fv}HIfvy;IA40HxST+r0OfxlhlL6_M;?& zYz3C>SDt%}gt0sBttci)a`+7^IjO{Qd8nmPS{zK(=`kLhewX_Tkq&NrH#*c%Y8};h z{#^MAN>NNYO|;ayJ1;5}FS#U}I&P|3W3W;$QjG_aYW0fc@j9mIIsT=|vF8AhV z8mR(4V>KJ51xIw)pm!>kdHm8#habhCC2V~u1=^jrCyqbvFEouJoN4)Tq_NpsW=Ro| z9wHJhf+G441Rjh@bFk_%jQ^#utJ+6HAr*n z?h#~2lDvqukK4(?^+mv(AAXU*dr}p#*-QFLZl9fnUeXVz(!Ug1KiF?!NA&&@>Fg63 zTH_`bPOmW}g!4WY@%QG&8cC@%ip0Tc{}UzL=Renl^%o^~ZXV+e6lOth|KQZ=wMTF8 za^vZ0mC$wk8F@c^=2i(xvjU}Od3LpJK`&-|$RR?jPc4wAii>TM*@Yg=zNPbZ?l%K( zj4zy>BzAA$r;qX-U|_X@YIcfoiH621_9cQkdrRlDxYBbzNr(I3ymPwVBTZnYW5Zby!OWGb~8=Y*DF%6iGf zKTh4PFW6-oX6iWAva1@a9I9xS+*MgmoR@>T#&xMnIJ8jn;D^XZ*@)r`KGF(^9GU&t zGLE_!)C)q$mtZe|XqBF01f1kaft8`fRP$P zT{JLa3Q%`Y5}xh|Wz;<-VlCZWryt8biDyE9c!Meo8OZ_{l1RtEmr1&5QV3;U#Z%+x z4mFNC4m(W9V?_SMT9DzsvX(|p&T-$Aomu8wb2piViNFjh@_U%B%a7ao>xvDwo3qTc z$uc)cZHbM;IW)}l#}2BqwB)#~>?G;jDID!^D|2oUA~aQ9N%0V(t;mpiY@Evc<+3rp zgb6WMJAviMOl6f}zRj%sGokIK)~O+%K}B$;>ey6!$yte&!b-BVZBp`LGt@ABfkJ3* zgO_7i=ZCb^S%}HD79}%L(kOhPxLi?=24b{CS7KS|=5GOqBQftgz-YzZz_KFfC@r2w zUjmcfDRqQrRdH(3o}fKkiCLJ8PXZa*ym05NDdunvGb_Dhnhn7z6%mnb8cgdMhQSD2P;3Jz0OOE5KDnP=gtGOKksudv9iOu>dI)#ZgzB_?aN zCNfq+;lRN>3SR{KGA5IY2UU%5&{H%e%5J^qsXT%fk z&5!Yp&AprK&}Z8?R#Zg0Uj)I3eeMVd0q>9qLGF+Ow@o;E(1LVUo@F~~+d)$3xhJ!24B?Zfg*dibPpO85XIRA{G^TXc4B2 zN^djljFhuYVGEUL4vi!x>Lz@hDn%Bh$gS&328ya7luC^TM|7tweV1&`jfTuxaSgZ3 zobBDNy>7CLlM;wcTbo_l;Z3BfG;p7-$}Fli=HHD???mA<)kRO$%*)5jF=?T<&@x7X zxLodri1^%2{MEpJ{rJ;BaIuBLjnUrcBsQl-|B=cNUP#Q;W>f}Hl-J_DiLBeL83Ap4{qV_l9ITs z9P$`E&?cs8bYa+m2^NR%XES4O1i0hL=w3N3i|X&APHe$DgjxP&(2!NF+!Udb+9Tp< zdxMa`tYozvhTTL+>=oO;=9zqj0^U#vZe6%K_LWTpZJ5a+v;nFCD(K&l8+h3b(%URN zY@OdLkhepqDf3Ybs|#{m;EVLKmfOPynCol`pTCWIS!N#+*4KBD)rj56PI zM7}3uHca#WE4|s2!V_YRr|iAQt7w7Lr?u~dQom*ir5g$V8jkcyHj$oX78iBaM_nKF z&sAbEZ5H%p)8~)b*zJ>V`ID5MDAuMCUQHb4&_Obi#NybTDD0peffjDQQ3%c?Ebhjr z0$D}eF_ZB9W`?~hsfaUY0fV%9T8sAtDGis8gcXsi3Xv<<&UBJ@tauB8SGN2L%i+VS zc*YmnKYF7wEyrB!KQX{*|JKz(@xM0U|8f%kBh{T)+Q8F8!q(zHx8oF54R5k`yZg20rg%^uizpoA^x6|y5gsR;}CddUx5!e1|Ndu5P3yjnGcwP(ZKUay2W3y4<3T) z;Csbi5f7$<>)?AO-6L*U2G=0=@V%36X$IRM_6WSwZg~b@An1^M`CkbR#DejVd<9>B z^6P{1#%`fL8AGvkImQpwF#l>6sTIA-AosP*CrzH6E;)@z^Qz5~LZNz^(N(FWn73iG zC8$slp~9l(be3uU>2JN=m;G}-x~ihfqhJjZtA@8Rm2HCO^A-_d*r}X5K4+3tqUbq0 z*k6sejFk2_Q?fbRgsb5kY^pK^U5%z|_#?u8s}ZP`m;SfA>}7Sxc>jKP$aS(_lS^@| z+1ch43Kw}rEnxQ#4n61B{?xN2&1SVBxN_U#=Z@wCF zmNGU4u=|E$*liCLkuM#(L)SRUWn+~pH^AeF7&B-Zxb-AO9H?UVj^Mhx;#ajPlQ-l` zl?t}?8L5vzR9sMVED1Xf$w|v1rJpezCttkV{- zSjA$_RPRxf^>qIEtxcp+bIH)@u%)%)hD&jre$C=saIlr@q!OmNJzIuJec21k9zA)> z@geCk0GFzsu#mBBfs9diN^WPRbEhK)rjWjct6yLPM$^ZArrdI-Y}<8aSjGK^joT(U z+ju0R#yhC9YbSA17~2E| z3i(b$LbK@!X;$?L_OqS>iVt3g^Lfcd`S4HfYSrWt#EfkM(^b)?{i6ahSMd#PMJg-a zk});$7?!1k(gT)RMFmCQw3+rSr>@YLDx}d;q+!rUQ9<+8MQm7NUo)y{DkM*HRtcbU_D)JB_g9^)rD$9xLTc~!^*~^0e_8QLmn#HI0Nu!R*Z`PJZLoXJiG(BzWO=&skD;z{L zri{O{6*IFZ6^`X6c3IA4FJ`lU9Y-u!6l3_=^7PIgu=aSuxqi&gMxMC43|MdHYMa@A zhPIk^*fSD(ruTIx2mj!NQS7;7ID7AK_t@BN)ZO{~&cN&aT^pb?xI zpg?Qf4D^H$T>^%(6 zAe%F&*a*06xB_&f*quLnl+z)0>4*_KU81{Ww1Gr%J>}?KwfGSTLqOUvu`a5TyNGc; zZRwpFLr`Co#;1_+om|3DpD^w>Du`70SPd_O84i-jWiz?P&|x%*@)dP8cV_ z^DAW~wi2r&0UpE`!DNj93#BFkL#tjSN+*WQ&|cXV7vPcy9@g+sKcR91h={CPuB_^= z<}T}6+F8kYt+hV?`u_gzme`dorT6Cj{Jwed+I!iZp7pZZJsvrdG@r}&BylBe_v60%1AnK*cf>??AxhU_bJ(1z?QcJP9{ z3(k-J#b3e)O8-gm%P+J~{-TceH48Kh@YcfQ>RT=G9#UU>^A+M4Z3H&W5@pek!hclu1nPYj^{;;aF^?VTLiA z*po2HWGY0~V;G@~n<76o@OLD)h!R`#Y?`X6n)o#fx;5};99>Yw?J9?;<5ftGR7z_b z=K!~EwQ1}~{7}`~480Z?b5EI}su}(?^b;K;)0A2rUp zFP>xKZ0Hwz8Db%xC&vyWMYxl4uG>78B?1AOPFK4zOhne0+B7g+5f8-_1yLPMEKomd zT4QMAU>k68uIFOPIB6+4miVE|RONjMSNbIxCa0e~s~g(;JBtI1&g|D~G;$svY7VUv z29DzX=!z>;T3@-+!N*8m;Ry5LM5wbl0)YVVHSsOy8BvTn=rY<$eNI&Ui7 zKbX;KJ2-Tq%$On$6GOv!0aO--Gv^#CsHpDFd-3v;Pdku7t4ULr3lP$n-+ zAY2eANP>-OKT0t=*5hjkAmc|;LHxT*|04@CaVshRDh%!dr7;jAW|pzS3smrbf@MV zcey80H|QrJcur`i?A+x?zxEg=ua|!grBL_tq%elu1K`qE2qupei7U)gd~UGpAYv!n zBe4LnOcW_wC`;kV^qVG9wrG}|Gs;tW0j*%S@;ojdSLu=U^REMmp$8|8)NI5BMGiO8L|D!^BiBaYu`gNUwk)m4y+4wM0ok0ueLfP$ zh-|IkJpx(dqUVN%=Z|nN7nodECoK86W3!#lZE4=4 zQ!(Rv4K}#YiL-5KC{n&NQwjPv54NPliL)JQanip1f4qyZO+`=8b!c=-`)TJJ z5yo|Tdanb6=>?+8Fcx6y1m^x`UVaSOJ(w84I3(|WfG9UDTFnY_D;QfvZZ$VZPHB);xKPgo8Hy#VFsfyZ$i_z%hfG) z_kBLS^OW|*D4Qlv~N8@X=oF#)2|ERq4SD*n#87VV2AUPdZK)uHLZ*9 zdAU?_yakA&(yvpgGqr>8GCb6GCr~!J@^}1vEFYSSd3)7p0OTW@9h(b59>o#gjvV{? z>)!1L8uu`EyZ*(AJF^!^^U9Ke(o&D2H@GDXrcFre|HlyO3ZBa#Z5^mvbWKW^VMp-p&)KgwiKjDH83i2fI7QZz9zHZZg{`R_DnqLkbq zKXS<2FGYTNWp5(hLqJy6S_aa{Onqk3!N?u)Fveo%dK~FjE80(hFY=>5;RF74A|EVn zvpi1MGJ1QtdcUxZ_5>#eYeRTKo2eda9=S0Xho@4kLa|jWclh5Xm9E1J)N8lP`&+yw z4_Z@w4CG|1piw8ZCeffvFb+W03MKFsI3$jUP1vcw^E(p(sbecJl&c2dE(hNn zF4&*p{G*Bo;#2f40Ka~n0sgxx693C8{uh_>AIR4waYA;89zJwTJ`*rR@!1Eg1&z>F zJR3f$e3=qaL=ao%cPO$^(Xznf3j6IZZe+tlY4Z)(g|jy^-;cJ#m$)^yU+lp?V68ao z4*F>V4DhGXFWt{E@Nm$fR4bT45z^M?Cf8u0wjgon$qmw@N=kEmrVhM9GX-o_|VjTPzneiVen{$!!in1W~XO zU`;Y{C^gg;A2-uDXBm?W#S)7pq9z%N=Gqa~4v4PXv@2F!klS%~4r>J_W<1Bx`_DzK zUvrRshF0l@;t(EDqHQzDl>vhOO7;xpbx?IcZYy)wex=f{yhYLFN|&pw1@M51`JpS3 zuogI9Zk{QAHmM-dT}DO88}4>c4QK_u!6JeMJ>8_ea)j_T_cgh#A@my5Kev^Yc7{@2 z*}c%PP>A%ONFWc#y#n{rrkVBYgZCMD4?J*ya-ak7pGLqo@MDw2B8)|d90EHesuRj0 zObuHcLOZ0gi)EA1_7|QYQft-rQ)db&M*Ys1a#}p(Fh*w5j3`IRpv>qBX zMPth{)NJ`GUq!>i(et?-!N6;#%xPfaeX3yU{UBqXeLaqni#^-cUd%Bm8NB8B==j+2 zy6ND9h5LGYL;J-JkvBmPY>J)>7-gJvY=f9pEN~dlEK!?aozN|`NZ29kC?x8k7W%U9 zca2_FPUB2S{8x*rKlg-9)7uMsGPNG&O!x?c!Pg20P-V1!@`VPC&rZmQB! zl_aC(;yjhT$Wo+fZDR>YjCk3L7iuuk2Zq<3|2VTw$tZHpp_RuVbK;ZHJvy+=CU|L!C&$7 z`_F6hs%4uZ533!Uzz^n(LCO@@a!Q|4tE zqZc4BZdivV1U401)FMxvEdfHC&~&A$w^dpWE?jCFt{p~0%x_7A`7Qr^u#MY>H!p2? zj4U3&mtH)a<>olMMpNU!Lduzed2r?+sB>lqddk)uk&ZTA{$^n@C^w~1u(#f+KG+sI z>a5^017WA{{&*6HP-8byxjXXF*jaX*d9O4@TTubh5_H+2cjkr>3lsYqBaDElG0aeT zjB?qr=5&q?v{GFfC9kO%U8&q09OLH#Zez9qGDKS zb&wykl>3D@Mg^*OcWt1l*Wqs^zfkI|xzwve-|Afjq%H!I8);5h)y0Md)3~55udH57-PEx882_t$}PV+XljZ9}Ziu&b=M-`MXoq z!QM_i$(97NI`({Ri|qG2u1~|sV9C`3M=26fNk6=5F9H0%1$zIU*}jH1uj~j&XaU|K z{pP`0e4g7K#Bp$x9zXBJq0%^A=PUEQ6s<4D8wy%qr1$7Z9YI`&JNBCkTAqmS(1;x& znGSbAbXVBi-{ur***o{xF$-KK?%7-RDWlXe4qPYhQ;q0_2}1_|EY1FeC~*huuBb|r zPg?N1g}nSrugcwe|4k@m%Cv<(K!f%`Ka%$TKCb8lUqH9~kFHrXg4N2Rhr&FjeV5I1 z>JN?}-7^?x+IJ2i-7^|z-Fv4<-Ltdv?yIxp?peBpj^i_EuN=Jsr;RxZubjPnr;#~~ zJIl@|v}-7_BNO5a)Bx(8lPwZGXtx@UFe>LTq<@I)=3M|^^5YwuWJSYyA3G_C4K z`7jQ}sIl>OLVdR2|E@l4;FWjIfp6WWy9M|02fD29ukPKMFV3yK;H$>+;I>13`1$LC zf(1f*qCbY9k3;9eV~|6?lYklWb)K@_77qrKw`?lyVl<2A8BBq`Nuw}zXq+|^3%pOh5UE>Aol+{0VQmmf1Hm7*8g$x<)~RX zYpbAq%^I6t8#_LjXTjzW+mK!mB}ptI&=eDkh-aqCW-=!fkU1@JvDpYH z#4Cb8kuQUxm{UnANXZD06|Ahj=ZA|ZR|dXne)Z$klJG5`7}2O-`<%&=K1fpXUGtt@ zb@l!I<21`#m$u8{1lzyz8We261}wV09uXd_gXr3Iz`q=#Kx;(J%yxxt6vadBjCQDv zX&Y@+hxJjv7qjI6cFFsDbj-dC3vY}}eS5_3#`Pd++5s*Ki2B;42nB5C6`6O2rO5*? z>O*6D=XP zWDAk4H%6SpABS3=ftDh~SP6F811dli2bDPTg_=s-IP(UY0$P9t8u?Dus1XIMvAV72w`Be9Rf<7xwh!!TjP~jaM}l`Y}9A;P)_U2 z`hr4>uz3y5o;xf{{#zXtqEwx@f_iIDlj4Un6kLA}8SB7V z0`)+XebJ(Xv+BHJTxIOTIA!WslS@QkW}q4W%pNqxlOJ;_^!pv$j=6;5AtgI=`Q&rf z*ttM$Fp2SJ9s|U3*#kRrOeK+Ivk)Ezo{G_E=U<`U=x);cl~+0SPTYtvRh%E5kc?T#Md}AaSefyhqca_mo+n*@DG)F<}q(`c#eFIjEx@PlsCfxyh6R+U5 zN1Hb$SN%54b!M}R`G{&kImC-uBZ(Vmv?f^`TnIGm`nk>tT!~@&XG2dY1_@r|CC$2U834;*53hK zVo6{=doPA|i3O#&x3E#AZdBGPfUSFd zq8$rK$E@D%yb9=>&}(c~uQV5}W&`+!E>Km^_2QUrtazNfhqcH6W%s9mrLI^AVhfVNXfJyZ- z@+J3Daw((<2m~gB=yx80Fxk^3A314AdM@AFWOH)>*+$y~+Mm{Ca>RN%nbg z$SOa%1Y6nupYEjw7O4g;K4O3-S(>NK*@7N`C^pX&(^gL5tYzj&nNf)8el=DFRfXT= z+se^6LM3YqAs`USh%bYz7r>I;u9cpf*)$&2buW^1#*Mlu6Pfp`hMq?a_nbY8#Hcdv ze`u~+(|MA!_=xEQx{*>5R;m__Fojqqz|SM15wAueqYFcttMUuryzHTzIctv|VRxgt zE*8AtKOFE{U>Cez5w;_a9x;7U-438(_W`d*sEi#laQp2NR<_#pkdNZi!@z>U;37Re z7a=?4tD8zaF=onxB-Qd;Wu*(>ADxwLC877pMO>zZtJ~mx1=%Z-AqI%#lfa&!pN^6v zIwu5a+T=$_DdCQxwb`u%S=Hl9l0!t4B?C%NC8%dXwTb=cGX3Rs`xCAEtAN|B0XrW6 zEt>%Ri2L)T`$xNf>9OwH0lQBDKOTcDn*i;S{xIeFZlL|C!1K<_W&pw%*@fG{){|55 zK;=aIJQnZsb^w*-$1K)R#x<4;()U2^8;w{68D|()cA0~Vx%^6iQ?dO7q~-wBcAmIY zz@_u^0yKOrm>nqQEl$24+^&nPGKCy6@*}mwpo3xZl${E+p7rXFg&OvJprsOU2oyFX z=WG&5%s3L?HCHYkRY@3HI=E$HzON9}`hsygN74-M+_Z{wY%8>Sl2nTcz|%FBY$Avu z)S?O$hUJKu-iFY=4PaFvu~@>`S;OoEtVU5N8}v4gu9RF^w1uvaG}{j+y+d(}ocaFV zVR8J8dHy};#*CU@Qha9`M?yQ|TGC^Tc|4It^-)Il5l6^FNsne!G_S;FTrr?zLM$&u z7ZmJ(r=WwqGJP0A+M^cyI4%)O_EBfzQfq!w3z&|>5{gPzqb|fJ5m{f^6Ox{sVTKO4 zB!_?&ZAU_>WuWh4L-K-1&5cC+Quyo%DUNC8)_SBfHE$PxEj(dMTYvqv68`2~=o8q4 zn-l!bwSH%d_@XN=0E-1tjOb0Dv;uc_0V5mnN@AdQ(PFH@*6kWQXd=7qRdphJVdqX< z%SBj2bOgF{bNq%&j_@lK{Di{2vs(`T&KLMht9JdwOZJUgOf603j`dDv1;b_~o3uux zv>v%#-!5-R$sZt1N(mH*a)jDQWWl5mhyo%EP$AWzbE|9WsEB=cm8lAf_{|-Ay1ind z1>7|Q)mDRf(u%3PiE7kf1EB$pQrhmCIXH*hY5^HnM2javq%aTI%z`8WrBF>AiLVhn zV-^1XPl2!uy9Avs#IIjmsQ(V9{p%(jvAm<5y@{i<$A32I)GVBkP2hb=*QRAjkMV)U z{ei{po3J*31ppQBsUfVT!3Dts$)y{IOb?AoXJ=1udr@w*5Kx|)R1H#~Q&Y#xsy;!! z0O#(T@W{K&=BT@-eAjbxeLp-p_k8!RrF}c@cH(}$--blnupbDak*a4WGejscUJqGd znA!J*Hxc5-6C4U)AkH?p=BBBvma1o&BA663wBsYmM2|p2=?qs#hw0x!IZO{2|M6xK z5qoNFiZ?LGoxnBinyGU*bx<8wZXh<)7&ZdLJj|@A8Z9;*bD84C;2`ElN03Kr zoo+A6{6B=fWl*F4^7c7{ySohT4#6D;cXt@v-F*gk*Wm6jxWnKuxVvj`cX>GH>~8Jz z?EiN*FH)&g?#f-MRCj;7`}$lHg;wMZ$8-!Y_LXlZ%^whwUgWLBKh{f4heYbtRS~(L zGqHFIc~&53z`?9;4fWXa!8ow4u2Pn-7}w{re8HaI29~5*T@>I-;dGSbgx*T+tR&E# zRe=0?^0+2tdJV1;_&LD&Vw!cgkE6=A+z=PKBtSG(=2MV!Z!Np)1X)68N^zrS=rIcR z6<6o1Gyrik2{|^c)dE#P(a{K)xZ=^?{eq?Q5Py?qhvTIyRMedjDW7r~Wt*O2IFJHq z(-KbBE)CJRmraQ|r41k+QZAT=rL!4Fx6Tk$?yVmeR5of1_mE#c?r07LxrE+A(Jh9nr^JS9RtLmzP za0xl+N9Bu`w{Uxbb}0Tcb9?DArGvo)-3L*Q!S=?3d=0tjQW-wI(o3^0O+FXLGc8`QRL$Ak>KPU^&?Yq$8-?2|O zsR30o*J^Hw+1w$G>S=@AwSu(Vb;j#toFf5InE~l|z6iFIvMX68b!`2Tx&|zRqI4E} zYxuV0FomUZ+{HvK^`}lF+x#{R!Ke{ccJ&w<6&)w1vc1!_{Nuxk%3Imdv5L>9bTvST z`WVf#2q+&JBNwfz1LYD*}0P9HV`bBpb5{>Vtwq;x? zvQZ?){gHK;3+H{p;+J#jGdD7R$oJeGf*Lbwt0n4aG*rZ;Bx~rNWi{!LsyEun7jn

    z!D1Jl9mXj*54L*|E>|A@An@ z9HNuFkOQ7gT%N6_4=c!Gr)8(k^t-<@c#64BJ334Go=Cl@Gy}vW^xUKLX3kZ8TZ8yE$kExORg7-95&%6A|n?$lc7Ue zI2(Grm7ZdSdX={0SKIYSc-v`du$hR)$oZ9(w)v_m?PhiB_2Xxa_s!OeaRK`;Z|o22 zXS|1>z!dNER`;V_1HnfWRJmlT_I@X1*y&R=2D|BFl2FZ_{oQpV3jbBUe7(w@HLF-I zVV_Y7o;9QBP!|_;s))pveUoOc0a2ye1q%7QDdy?1@K~J%M^`E;y-b{M(+pmGMxB?= zCr}ev2YKGVghc;{su>w~!9>JCOEF<99Fm`+qN0vN=f@_p=^CN;P2Pr$@2qBKsu53M zZEo)oocl8#P8e?=I(IYBpMlx6#3e@R?zA&H)`psen>Dutb*DOA^UE{dOvyTfF&^&0 zExh_Rw08vbA*ytr0hQe)>ZeNUV|j4O{v3Pi3@*?O`qW z*R=fP-Td3S%GH`xw9zBloro&vW+WyF&{L502$fme&qI<$<5?e4XZELE{_jQni(`#HAiyk>T5wDg02yUuWObCwgN0?$0%HeurA8y*ozeGCrm z-AQG7R$Qp|7W|i6VSS9<0+I{djE&R|qf97rWNE-U^X5<@8 zy!80>80Zm@DCpIn)1R36!p8X;+|D=9=K)MK=kiR!&vp*)_Bx`y;#=(aGZLBE(LXYp z`5K+r?RF~F(2BUjzJPO))4Rb^wdIzSAqg73vGkoQ+MDwx9MlrE*hS`}jWQk5(`F??Sd2s9AK> z-Q%0+w_-27A-R@iRW~W2z5I>%B6?jbrTzs1j;HrK4j^uBy;^Y<*B z#kRPI2J=Js{b#d9fB-H8Ebm*CpDHlyJARz}hq8f5C$R)`gOsA>d||_c^tp(^oRC2k z%bY2*zyFj4XtiYmruk(7Qjx8lHjCoR*>EK+WOQrm_X$}E%J|V>=lkbgREum~Q+bU~ zmP?s!;C9kd?QE%bc|`ustO%Q=Y4)HkaDT`jj^)KXP z#v$@^0sIeGwM2Dz+R4tsBNm>;nLND;?ZKRga#QF;0A+y;uoQKKZL`fTa2i+bPNja1 zNLK5thsAQ`rW^*NA_YjU=QJgapVTs~I-Eaz{ z?#5p1m>nF&KBkxuBhkv(Cb8+6mCmW53ARAhN+RlU9{TQ72!ia&>g7$$+lR^_ZBHz` zPQ!xPl7(C@%cO9xpAwXT_%FSNWH|d^lq)t;Fa(LozLma=8Ee}y#ISr^coE(xiGQX+ zJF4w?4OJJl#r=sm$+@6VMk=ZA6`#hY)##G!klWppmymVoB9&*qzd`lO|BRX+XMQ6{xZX{G7#D02wD{}EF1oMQI zT3z)|p_#Z4=4$XrpmUilw4)l@d|tRyW(BW0^mL{iiV|h2NHg^UNqUWP!uJ+t{U#hL zp0p%FDCe?<*p9?S;R{*9=>ygKrwsIhSy_Q|IY%o<{KRE!J89$W&Ey|vAZa5Tjx?L~ z={VfyVhPSG=2ie(lpXSb4wVVwQhgXVk4{6@WvrE3)T!cRJ{xbeK3(}F9)rUgdkxzU zv5xE}MS~V}oq!A0;49CZUM_-Wj?w&Cm0Li}QqXNmm(UNf;mI!ki7yb35T#2?*x~A1 zbxO4pr7-zKQ#+zqR|sbGsD~ye5|eHH5^ax~uL>nYN3o1o;fw-BL#WH-s+^Eu;;~GM zMCYJY7-LCg!8YGcrD;n&V%Gllesi8qDf{2RR7d`u2|XNLO5`ilKnLAwlE(-=O2TtiqQ}E8+l}TDq!%~rWZ*QCN8cuy+PCMBO3*_a z;mWQ2EpHT!J0h~Ejh;>GRj%Y?=A|u-4jN?CML=$$JCh039>u2ff&$AC^cX3gq!e-S>UQ3l_RZ zBUSCsl0Dh1t{-3P_iVDd3TsgKmL(EWmK}YIeg76f$|+N3E|KM(M_3?CVX}_l{t;_O z?Z@WRID z;rx_(k?zeh`U&_LRz?$ zVPpwBc6>*h6QGbbSvv4bk@}N-!!XJ`p$S;9@QZe+XF56=vAcHj?J>p~v^snAsL1tP z?xn}i109X|nk=eJ)%E#akD8K+qKPUgm@lDZAi0?eWG?oJ`Vk7$j&!{C1C3T^2bf~y zI#OhiFP2#sOW_ln>gziB4D6W*;?}L(v1`Xq@puI_$yzDITz?3Zu>l_ z_Tg<#YkQJ77@bc{`NX%%ldtO$2$*dE$2T{aWLXY8&&;q?ef6g=duBHR9dL_jX#*B| z$FRhayi({Vr8}InBp|vQxon6;g1k0?j2O0EhRdmkeMRe!j0<-X)53{zQ)>@0)p7>M zsZbAzAZ*LE9=H1I#AQ2=gXPg0c$rUp>bF2>I!>a~NW7|bU0b^q4se%t2OV_=v#eHv zs&%uBTrXbI1M#t?QPBAD@Ph;%!XwJA;zq+_;dh+y-Lbv{dzY7Iu(a%*B&wl8Q`H)J z+cVoPw%=@IR@cecPLFMEtRjtb60Dicmin=X)#~Y4m|;h#2F=q5Q12Um%&;~J{c5I+ zyMxlai&<|_8CJU>*c-zp#t-ndHpEXn$680cR3mSzB13#_R&ZCDuV_8$ zPlM|t%slfZe6+`}Sy|3ekRU2ik2OjYNz&YYue|oAlL_7R6U9XbRnB22iKZkIc}wp+ zh~JR>oir~t3-Uz;N(Y=%NO8`}JIzu*t;b%2H}LA8OL!8ObwKZTO6@}{ z4bEfk8Em!iBH#Gu9^;+&+eO^L zwv0>Dr$zC+HwU-sndC(Qz=DXIC!*o2)46%2`_F5%Es-6fTPBidMzMERioJ&>5nU;f zHIPVkXdHgrCK5^P^zIh^?zqU>27gj_C?BZfB41GRiR#jHkBH&!^IKRB)x2NIhzTE@ zZ{N`QE${R~wGR}{mFIaQpb!!c)JRPUF{6~D-C1G(50juXk-mk7b2omfk9Uy=P=8nqd7KzNr>O^MI| zIWuaf2Ob=ARl&U?=u7fCHuj#OUH(r#5sh4PdPPj3F>P}c&FF~$+B`58>AdVl#a#x~ zE)mmTvgFOB%5jGY#7K}dlM}X3#B7**HCQHK#CXl#qg3YR3qnu%N`~3Z%q3sqLoYDW zc5!n5>QFwY47>rFI&xw%tMZtu2O=BlaIl#DIOQ(oH{{SSWU?HlrGc7Xm+8th8G27&>?y5HFbK7U2s%Eu0qt0$zT-?p5lmu0Ss&WK9@Z|fahs~uH9 zVgwW|Ua3WssviU`XW(B3fXJG3LBFj_VM|sFn){TpV@dwC)0$t_r`176k!iuhloB|A z-B*C<=i9k@Znsu$@|P>D^gpljr@!bY$xN6FmgUDNhP@-RX!gXfXu~9g&mUB&zZIZe zaV19zPI+8G0N%3R4M#45d^S{_JzHXx<5%jDryvGuY_Jg`@qZY-0c?3Ohk)aM9oGgj z4#fLs_s}MP7-sk7za}5RaFl2qsmYMo1JtQ++=|;cuPDt9*`G`1nJmsq28td^MgLg8 zt8kje75yDCnl#)mz7SyzOqAxzOecJ?z*?I+%`bSdl(!U|znfkA3TzgP-jz_Le3vjD zDA{`CR*Phse&*>k1a+;gyz8Z$7g@HYj}koAJt@Xc2Ke!qm1t$gYga~LBB!U%mC0f$ zHxh`r)`bE092&Z$>?y|K>NRx4cj9;ivnvXt?mTEb$>D!_jxuFDodht4AzhLxOFZk8KyS@O52`X32r@NAA+8!a zZ4z^Zbgl)(+$uWo4UHnJR{+iG!jZbH;*t5d52Q|OOMF|x4S9~6oI+r!Zs@Jxt$s&E zn0r>5o95_j+R>Dg_vdU!r9)8 zTin4CXyEG{5GU+<>sr?7@AzJVxnb)>vEel@Ks{S@cK_+Y>2Ior&|0#^Q=C9uzfIE;C(S)lCn*fCWIZYg~zo8 z0Zw$Wcs;8xz+LDr3r>mpBH+251?XL>^p4OeQ2aq5Cc(GqsXwh?3qpSnJAMhDUo?Lj zPv^Q>O|7^5qp!hUzl~fn-xYFPdzrlnJTvK5iu!HwYI7)Xd_?WGfG`ErvsAy~JL>#m z#WW-NgqA#-IzqQB>C@mIa3HZxGSYS*_bpLdHdbR4+V?Ve6S#I)b;$X;5@#k9!&V#1 zDSD%&y2F(*$UTua665@|iF@;rG~r}j(uQJvH){#1cPcoh*?pNVfZ+)IArQ(`a$ZNq zNmNy#J;MOY5B|6s)=m5_lBiPocaQJOL`w(Pw?fnyU)A$R3N`L;V2Ghpb;~ODJp0|H zUGf$71(+u(8KY1|w&Olh+*!_B*yp8R!zD$+uBBo$ew)-N|Jr4b6EY#b4jM&!EXG{Y z8`@28j?K6F*<$5#Mcl|3wB<{%nKjLdik_M6 zTG~F3wBpPL+?E%q1E0=mkx;dO+@?T!VUWT5DASMUfmCzIlOQ3T^;){&0NBrkHT5HE zmn~}7nbz4y*qG2@hJ0udFz@*Dz&I=t(4Pksr?O<^k#ko0elta({Z+3D)Sw2Q;_uur zxb_pZ{!C|EgTkoiYAB^1w$A_VJhz7+Cpkm>b00A`K*kmUq|JRW6=IfFjVr9oVYK*h;p7Kou^P>N z=AxYgmT6k&X|2F%=My611snYq+ck<5*P)DtNB$+g?3VpY)5b8ql{za5?y2!xoE9=G zzR&?6ZaM5kB<{enQ*(G$*eVRiD!vUjiSMzx>Yb2rTN*Ob?gzW8{7_{Fswa$L7u^vD zGhTdiDr1UjQz&DrMUxCBQ?hF61;fY?PSf;M!Yf*)s+@78-rH?w2>eZd40voIYNiMz zu?K8xqs&NwUdZbEK0u^BV9;{2#BwE>*b|ff+{#K+FSH5MB(ndvEH;En7rm{ZwR^#h z1559*Pi14ysI+lGZ-?GQps0nnQfD)1aLUTqir?63-|rj=X8Z1thMl#U>S2a6NJ($h z8T}9d!Jv_eo#o~v!5a~Fmn6D%>B5TPepL~^kbWF-k zJ@=+mG-Hphz9JiPzCOrtfar%UDmipH?H>NHf68t(fh_KTKBi!Nlb8 z|1z*RMSs|+sE-=kN~Nt37AW^saJa=foz9m{$oNcXap~td*pVdflsf*D@0aL$a6M~q zFO*zq-YFM+6#L^Vx7-sOA%(Ai9wa~?)GeA2`sXF9KON#R)!cINZG?!x03%4Mmf+8D z#5IH#I&O;D__@cAF{QOO9xa?BF~4ycC6{3-uVIL-ZQ>XAgybQd>KL4?k@o0`OO{A$ z#((KTm{c)1c_EQ|=N5c^VqfU_SEf~DW<0njW!&uN8;3&rNP8|idx+d|1ZR`K#ncak zHo*5}b@o0vNu5FyX!SH#HWQS*-=9QA!Blkf!gmP$UF7H3wGZzQHVewIyw*I;s#m7hb@QY45X z$Us+1hh!%xeasQ9lUHpU`gMt7EGlU-#STL);qJ=$EngTZ%hFZh=dJU*=A8!O%b+T4}o9m(Bo zo~BhTu66CmgSwzB=ff<6rCp|af(~H7zoBj88PWMnpbhiukgZ?|#lvg@zsrk$o9GNI zt-rbQ`;gQVq101*!nHfq{sqfTc<2XglESOmah@xT29KjDsJH4*F3)lCz#O=jA5Snx z9L8wahyD1_v_iOjSU`2}rb6l7$Jc)?BDM|nvD@N&;tYiTGq?EMNBopmV5qc9e(oOr zKM#!0SN2ZkOjhfOjUdf03`4{&|I)`5&(MZfav{{yFaW-<_5JGyF(Sk#fOM z!w9jD&r2*u6OsHQ6c^OvLaB`*JU~O48;%+uME!kAx@|_awA!w`B3%_Gzm#iohi?*` z)&&EDKv-A__qN4hyEhmfn^CuA>QfPoO?Z7Oy#sRY((v8%zwmzO$~)c?Y=1zTrhlGR zz@A-?@_wC@e0VO$bb%a=v#R2!cnCXI!^iY?IZ*3%MtB!z1t+_=seo z-bY1brmW=ESk|U54qfAshgC&Z@h9?8Zp`FpSg4{r!L~v@lF7Z8U$78HhsUvTw&{Zt zWnKwurZB24Jv&MhQqT2D7kLuzP-{k5clsgx1%qcwc|8j0)iSL4x#|9UIVJ`7G zhc{5{qqPmkC?_JZxN1eHCiz7J(vBWwmCr43g`vpsf)eR>Mv%I=Sx-Gc=hVR}#k^Fh zoMl)tXXB=2aJ6|PXmXc>42~Z%c0NapLx|{7-}@=3@A(cmTwA_t0ercX%-Kf!aaP(A z2dQy?U;6cc;CShtOiW5Kz>*M$XT48@VmHP8@*vFsRwYhDv}L^urTE1?qXyLP`sL~T z)s@t?lGboD#ZT5Q@Di&FWI)4Um*JaC3o8;9Z5@E2`>yo1j;nH_-Lc^sYo4&ixa@>* zk=WdXX7A%SNWvw|amw~|L^m$fo+4I%z2UN z<&d1e7h$!@7OA)C7FAf5NyCHShzQjzab3$@5E(QqA$PUgX9xf^z61$}x5~=52K3ILIb62OLzTr|^;&SQnjAUM61tB3qwugE{W1QIGnQ#w6>;ee_Ns*d5!Vc^QR!5qVzJE zWotEq0~f&5xW$KX1xsC^U1?R>Jcc5SpxKzn)jh&E;oNG|f>05g!fW7-MUPD*!RJ_h zr$Vn2|5m^~pa@PJs}X{~I$;Zbj2#&#&=B>^oo>&dy>gwCgk#^naU>ltf%NEt$Vo3a zQl>rd4L&s5(9Rzi6yb#iin&m<;CvJ-Va*kPpVp4H?W4uNV;>Y|7n{GlD%V(k-MNdiW!|hbs_rP&)9=IN^L1DBsABhDM$<{`_|DqNww$nDXA&p&f08ZFTS3H4SYK z4m9sVH+g##xk$gDse3m>;q)5xp`t1~m6Q5Nn|dg|<9^JV(x9}=uk@Eb(rA6gt?v3G z*8<>`O5CI2hX#taC5p;sPCCYT~NpsJm-J_xC znctvM{rkKwVqd~Et?I+xs5Bbaqq=Nda~bAsduCbpu98PoE;+kTdWOvybD|7s&A7r+ zEu-b8C7)n6EDzli)B?-8W>7M6+_$yT;MG*Y_>0HB+u`qO{BouLE(&} z=GFeTqY3!6$UB7HWe0PG>C@!ao&NIN@bW9zPCZq9n|jP!g`&4yk$lPrYHm*2#o@fB4qJwaK_!xJlRg zmQ%K1L6wxlpE`W|^`@QzVG1g-x|0b=K;13Qw(d9cUe7Z-fAR)4h4RP0^c_`&rL{Ln=@JkX$dU*upb`QCd0B#V84P zE34n2(ESbmU%CFF8C^m5lN$$)`QLUF82%x1E0~!%o4Wkp(z}1tC;pSRi`4!t!g_Cd z66*~S3A!$jLytf*RDo?Ap#7mk{3B4&>S>;o7QR&qo3q^|k$En4LGX`;`Kc%okNins z6pyHs1mRr|F5wWg!JDWL=Hzn!7oA?NS;NQk)X482Q4(vftOpBMZGX;3~+yX}W{hWVQq}wT=nDL4YTaSdd%W0g>ul)Y^xa z$k=pF8WJ)44F4X>WvyhcWG%#n5FHGyL~f=490V7YJ$L-R23n34C7>0;!uBZ54r8kp zFxMQ5ZHN0WYwNzZztlqHaAb|_iT$#mfwi-hW;+#LPue1!L8x+&5;3=#X{ZZlXRD%w z)0QVsuo50iV5x@X=TAFMFG*8kV<0EUnL}`_O4C7IsBFtmG~YYgD!?+osE(}jx)u{t zZi=EC<#ipR^s=aDWY0?33YRPNqC9mBkVx-{D1$8brr<(5aWrenVV2y_7ou%Vp*uKD%tIdJ;#{q+) zggUf(5f3i57FQPu9F}X)nV|1d)9F-eK=C03 zz;>!4q1C#12ZmEIdsg6CiF%XE&ZJBJgjCPc#DIRlx(wX9k!kF!k{5o#Epp5BFSetA zpj1mYgc{<022r;#{K0RS-Zqr-1m>^?Ma!OE*?NE`+N;N!ODTn|$O|DJOrFmU^45Dw z3i&M>lq81a7R0m7ukT{S;$U`orWAf0x@1-;cQ|zg&$LQ8(-NJ42^Ce?>`QQn?$8JI zVGWUW1?fkcR|dPkWGMQ6LE=R={9K0qvEKbMZs}|z6aXGsPV;$kG^#iaho4zZ#WYKcFDaGgly(pAL0_zYzt~JyQ znWBFZ7glJ%;^c}r(C{Qlwgl~JU{KVFKG`Pras*6HVJw#qaxTrdZv_T(wB=XM8q8l! ztcF#gY$SSELXYdjjQdD?)Z(ov&^S1>*D+Ow zyA1|QrcTxEbL~x{_Jdzf$*9C1RbouloNhr-OdZp2iuV4p>dd<3pn5~y&Rv(3jhz|Z z;3>YyeZz--VIk>E#dK@wy}vZe>@`5w7f8Z$QO-e~+0`Q3M>3c5CnhM95(E`~$Z}~X z`u&yq2xitw{N^^}PexE7C3sf&A^1VT{7ts#{om><;(j}; z>QD8RM()=1Ovjz~OpvF#f~^7)HT>+P;WmuKh{7 z?4XeyG?irr?6n%>wPLtm7uzxn7glRv3LY7z{Sgmt*b2CrK;}~5}JItY+O>!IKuxjCx>dhQ+P9M4cC4%{e zQy7+&_jm_8y92L-Pq!w8N5?$_Q7k*^Qi4nQp20JqXncUa#@f2i`q(hVTIDHUXAn6g zqDp2uz2P*2A+6YiAtwU^wGeF^m{*cyrY5v4w#YJDbU^zr!A?p9k_)Q^RcqGwf_%g? zqjYu0uj8zC6=^+$xb?K8VdX86+_(>_YZ9_z1UIy39>m7N1EPG&SDK|cKjMW2!&(12 z^U3(6qbZm3x;~W|+t^*pD$V9)E!0I~{s@`)dxj=w$+*Z0m42< $@vz03z8Z`qI{ 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

    =%>>2|D73@_9Fx}<*!s;{SFX;r+XReUC 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 z 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

    qm4Wk) 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 z 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�!!ybUdR4n8i&a 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≻pfc-p+kq>A@&EZJ32ii;nzX4TDQYlf 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
    gy>fqEPDaO`QF}o` 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%0AO0^D-A)i$ldleqyk}TE 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 z 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

    tyv*0yP}nk-pv4zbBt@DbR|3V7ZQ73LXi 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 kF-h#lNtCW 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 diff --git a/main.nf b/main.nf index 7c2804019..87f05afae 100644 --- a/main.nf +++ b/main.nf @@ -44,7 +44,7 @@ if (params.validate_params) { validateParameters() } -WorkflowMain.initialise(workflow, params, log) +WorkflowMain.initialise(workflow, params, log, args) /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/modules.json b/modules.json index 92fa8c846..2a45b385c 100644 --- a/modules.json +++ b/modules.json @@ -7,17 +7,17 @@ "nf-core": { "custom/dumpsoftwareversions": { "branch": "master", - "git_sha": "bba7e362e4afead70653f84d8700588ea28d0f9e", + "git_sha": "8ec825f465b9c17f9d83000022995b4f7de6fe93", "installed_by": ["modules"] }, "fastqc": { "branch": "master", - "git_sha": "65ad3e0b9a4099592e1102e92e10455dc661cf53", + "git_sha": "c9488585ce7bd35ccd2a30faa2371454c8112fb9", "installed_by": ["modules"] }, "multiqc": { "branch": "master", - "git_sha": "4ab13872435962dadc239979554d13709e20bf29", + "git_sha": "8ec825f465b9c17f9d83000022995b4f7de6fe93", "installed_by": ["modules"] } } diff --git a/modules/nf-core/custom/dumpsoftwareversions/environment.yml b/modules/nf-core/custom/dumpsoftwareversions/environment.yml index f0c63f698..9b3272bc1 100644 --- a/modules/nf-core/custom/dumpsoftwareversions/environment.yml +++ b/modules/nf-core/custom/dumpsoftwareversions/environment.yml @@ -4,4 +4,4 @@ channels: - bioconda - defaults dependencies: - - bioconda::multiqc=1.17 + - bioconda::multiqc=1.19 diff --git a/modules/nf-core/custom/dumpsoftwareversions/main.nf b/modules/nf-core/custom/dumpsoftwareversions/main.nf index 7685b33cd..f2187611c 100644 --- a/modules/nf-core/custom/dumpsoftwareversions/main.nf +++ b/modules/nf-core/custom/dumpsoftwareversions/main.nf @@ -4,8 +4,8 @@ process CUSTOM_DUMPSOFTWAREVERSIONS { // Requires `pyyaml` which does not have a dedicated container but is in the MultiQC container conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/multiqc:1.17--pyhdfd78af_0' : - 'biocontainers/multiqc:1.17--pyhdfd78af_0' }" + 'https://depot.galaxyproject.org/singularity/multiqc:1.19--pyhdfd78af_0' : + 'biocontainers/multiqc:1.19--pyhdfd78af_0' }" input: path versions diff --git a/modules/nf-core/custom/dumpsoftwareversions/tests/main.nf.test b/modules/nf-core/custom/dumpsoftwareversions/tests/main.nf.test index eec1db10a..b1e1630bb 100644 --- a/modules/nf-core/custom/dumpsoftwareversions/tests/main.nf.test +++ b/modules/nf-core/custom/dumpsoftwareversions/tests/main.nf.test @@ -31,7 +31,12 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot(process.out).match() } + { assert snapshot( + process.out.versions, + file(process.out.mqc_yml[0]).readLines()[0..10], + file(process.out.yml[0]).readLines()[0..7] + ).match() + } ) } } diff --git a/modules/nf-core/custom/dumpsoftwareversions/tests/main.nf.test.snap b/modules/nf-core/custom/dumpsoftwareversions/tests/main.nf.test.snap index 4274ed57a..5f59a936d 100644 --- a/modules/nf-core/custom/dumpsoftwareversions/tests/main.nf.test.snap +++ b/modules/nf-core/custom/dumpsoftwareversions/tests/main.nf.test.snap @@ -1,27 +1,33 @@ { "Should run without failures": { "content": [ - { - "0": [ - "software_versions.yml:md5,1c851188476409cda5752ce971b20b58" - ], - "1": [ - "software_versions_mqc.yml:md5,2570f4ba271ad08357b0d3d32a9cf84d" - ], - "2": [ - "versions.yml:md5,3843ac526e762117eedf8825b40683df" - ], - "mqc_yml": [ - "software_versions_mqc.yml:md5,2570f4ba271ad08357b0d3d32a9cf84d" - ], - "versions": [ - "versions.yml:md5,3843ac526e762117eedf8825b40683df" - ], - "yml": [ - "software_versions.yml:md5,1c851188476409cda5752ce971b20b58" - ] - } + [ + "versions.yml:md5,76d454d92244589d32455833f7c1ba6d" + ], + [ + "data: \"\\n\\n \\n \\n \\n \\n \\n \\n \\n\\", + " \\n\\n\\n \\n \\n\\", + " \\ \\n\\n\\n\\n \\n \\", + " \\ \\n \\n\\n\\n\\n\\", + " \\n\\n \\n \\n\\", + " \\ \\n\\n\\n\\n\\n\\n \\n\\", + " \\ \\n \\n\\n\\n\\n\\", + " \\n\\n \\n \\n\\" + ], + [ + "CUSTOM_DUMPSOFTWAREVERSIONS:", + " python: 3.11.7", + " yaml: 5.4.1", + "TOOL1:", + " tool1: 0.11.9", + "TOOL2:", + " tool2: '1.9'", + "Workflow:" + ] ], - "timestamp": "2023-11-03T14:43:22.157011" + "timestamp": "2024-01-09T23:01:18.710682" } -} +} \ No newline at end of file diff --git a/modules/nf-core/fastqc/tests/main.nf.test b/modules/nf-core/fastqc/tests/main.nf.test index b9e8f926e..1f21c6646 100644 --- a/modules/nf-core/fastqc/tests/main.nf.test +++ b/modules/nf-core/fastqc/tests/main.nf.test @@ -3,24 +3,20 @@ nextflow_process { name "Test Process FASTQC" script "../main.nf" process "FASTQC" + tag "modules" tag "modules_nfcore" tag "fastqc" - test("Single-Read") { + test("sarscov2 single-end [fastq]") { when { - params { - outdir = "$outputDir" - } process { """ - input[0] = [ + input[0] = Channel.of([ [ id: 'test', single_end:true ], - [ - file(params.test_data['sarscov2']['illumina']['test_1_fastq_gz'], checkIfExists: true) - ] - ] + [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true) ] + ]) """ } } @@ -28,82 +24,189 @@ nextflow_process { 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.get(0).get(1) ==~ ".*/test_fastqc.html" }, - { assert path(process.out.html.get(0).get(1)).getText().contains("") }, - { assert snapshot(process.out.versions).match("versions") }, - { assert process.out.zip.get(0).get(1) ==~ ".*/test_fastqc.zip" } + + { 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("") }, + + { assert snapshot(process.out.versions).match("versions") } + ) + } + } + + 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("") }, + { assert path(process.out.html[0][1][1]).text.contains("") }, + + { assert snapshot(process.out.versions).match("versions") } + ) + } + } + + 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("") }, + + { assert snapshot(process.out.versions).match("versions") } ) } } -// TODO -// // -// // Test with paired-end data -// // -// workflow test_fastqc_paired_end { -// input = [ -// [id: 'test', single_end: false], // meta map -// [ -// file(params.test_data['sarscov2']['illumina']['test_1_fastq_gz'], checkIfExists: true), -// file(params.test_data['sarscov2']['illumina']['test_2_fastq_gz'], checkIfExists: true) -// ] -// ] - -// FASTQC ( input ) -// } - -// // -// // Test with interleaved data -// // -// workflow test_fastqc_interleaved { -// input = [ -// [id: 'test', single_end: false], // meta map -// file(params.test_data['sarscov2']['illumina']['test_interleaved_fastq_gz'], checkIfExists: true) -// ] - -// FASTQC ( input ) -// } - -// // -// // Test with bam data -// // -// workflow test_fastqc_bam { -// input = [ -// [id: 'test', single_end: false], // meta map -// file(params.test_data['sarscov2']['illumina']['test_paired_end_sorted_bam'], checkIfExists: true) -// ] - -// FASTQC ( input ) -// } - -// // -// // Test with multiple samples -// // -// workflow test_fastqc_multiple { -// input = [ -// [id: 'test', single_end: false], // meta map -// [ -// file(params.test_data['sarscov2']['illumina']['test_1_fastq_gz'], checkIfExists: true), -// file(params.test_data['sarscov2']['illumina']['test_2_fastq_gz'], checkIfExists: true), -// file(params.test_data['sarscov2']['illumina']['test2_1_fastq_gz'], checkIfExists: true), -// file(params.test_data['sarscov2']['illumina']['test2_2_fastq_gz'], checkIfExists: true) -// ] -// ] - -// FASTQC ( input ) -// } - -// // -// // Test with custom prefix -// // -// workflow test_fastqc_custom_prefix { -// input = [ -// [ id:'mysample', single_end:true ], // meta map -// file(params.test_data['sarscov2']['illumina']['test_1_fastq_gz'], checkIfExists: true) -// ] - -// FASTQC ( input ) -// } + + 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("") }, + + { assert snapshot(process.out.versions).match("versions") } + ) + } + } + + 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("") }, + { assert path(process.out.html[0][1][1]).text.contains("") }, + { assert path(process.out.html[0][1][2]).text.contains("") }, + { assert path(process.out.html[0][1][3]).text.contains("") }, + + { assert snapshot(process.out.versions).match("versions") } + ) + } + } + + 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("") }, + + { assert snapshot(process.out.versions).match("versions") } + ) + } + } + + 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() } + ) + } + } + } diff --git a/modules/nf-core/fastqc/tests/main.nf.test.snap b/modules/nf-core/fastqc/tests/main.nf.test.snap index 636a32cea..5d624bb82 100644 --- a/modules/nf-core/fastqc/tests/main.nf.test.snap +++ b/modules/nf-core/fastqc/tests/main.nf.test.snap @@ -1,10 +1,20 @@ { + "sarscov2 single-end [fastq] - stub": { + "content": [ + [ + "test.html", + "test.zip", + "versions.yml:md5,e1cc25ca8af856014824abd842e93978" + ] + ], + "timestamp": "2024-01-17T18:40:57.254299" + }, "versions": { "content": [ [ "versions.yml:md5,e1cc25ca8af856014824abd842e93978" ] ], - "timestamp": "2023-10-09T23:40:54+0000" + "timestamp": "2024-01-17T18:36:50.033627" } } \ No newline at end of file diff --git a/modules/nf-core/multiqc/environment.yml b/modules/nf-core/multiqc/environment.yml index bc0bdb5b6..7625b7520 100644 --- a/modules/nf-core/multiqc/environment.yml +++ b/modules/nf-core/multiqc/environment.yml @@ -4,4 +4,4 @@ channels: - bioconda - defaults dependencies: - - bioconda::multiqc=1.18 + - bioconda::multiqc=1.19 diff --git a/modules/nf-core/multiqc/main.nf b/modules/nf-core/multiqc/main.nf index 00cc48d27..1b9f7c431 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.18--pyhdfd78af_0' : - 'biocontainers/multiqc:1.18--pyhdfd78af_0' }" + 'https://depot.galaxyproject.org/singularity/multiqc:1.19--pyhdfd78af_0' : + 'biocontainers/multiqc:1.19--pyhdfd78af_0' }" input: path multiqc_files, stageAs: "?/*" @@ -43,7 +43,7 @@ process MULTIQC { stub: """ - touch multiqc_data + mkdir multiqc_data touch multiqc_plots touch multiqc_report.html diff --git a/modules/nf-core/multiqc/meta.yml b/modules/nf-core/multiqc/meta.yml index f1aa660eb..45a9bc35e 100644 --- a/modules/nf-core/multiqc/meta.yml +++ b/modules/nf-core/multiqc/meta.yml @@ -1,4 +1,3 @@ -# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/meta-schema.json name: multiqc description: Aggregate results from bioinformatics analyses across many samples into a single report keywords: diff --git a/modules/nf-core/multiqc/tests/main.nf.test b/modules/nf-core/multiqc/tests/main.nf.test index c2dad217c..d0438eda6 100644 --- a/modules/nf-core/multiqc/tests/main.nf.test +++ b/modules/nf-core/multiqc/tests/main.nf.test @@ -7,12 +7,9 @@ nextflow_process { tag "modules_nfcore" tag "multiqc" - test("MULTIQC: FASTQC") { + test("sarscov2 single-end [fastqc]") { when { - params { - outdir = "$outputDir" - } process { """ input[0] = Channel.of([file(params.test_data['sarscov2']['illumina']['test_1_fastq_gz_fastqc_zip'], checkIfExists: true)]) @@ -26,20 +23,17 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert path(process.out.report.get(0)).exists() }, - { assert path(process.out.data.get(0)).exists() }, - { assert path(process.out.versions.get(0)).getText().contains("multiqc") } + { assert process.out.report[0] ==~ ".*/multiqc_report.html" }, + { assert process.out.data[0] ==~ ".*/multiqc_data" }, + { assert snapshot(process.out.versions).match("versions") } ) } } - test("MULTIQC: FASTQC and a config file") { + test("sarscov2 single-end [fastqc] [config]") { when { - params { - outdir = "$outputDir" - } process { """ input[0] = Channel.of([file(params.test_data['sarscov2']['illumina']['test_1_fastq_gz_fastqc_zip'], checkIfExists: true)]) @@ -53,9 +47,35 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert path(process.out.report.get(0)).exists() }, - { assert path(process.out.data.get(0)).exists() }, - { assert path(process.out.versions.get(0)).getText().contains("multiqc") } + { assert process.out.report[0] ==~ ".*/multiqc_report.html" }, + { assert process.out.data[0] ==~ ".*/multiqc_data" }, + { assert snapshot(process.out.versions).match("versions") } + ) + } + } + + test("sarscov2 single-end [fastqc] - stub") { + + options "-stub" + + when { + process { + """ + input[0] = Channel.of([file(params.test_data['sarscov2']['illumina']['test_1_fastq_gz_fastqc_zip'], checkIfExists: true)]) + input[1] = [] + input[2] = [] + input[3] = [] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out.report.collect { file(it).getName() } + + process.out.data.collect { file(it).getName() } + + process.out.plots.collect { file(it).getName() } + + process.out.versions ).match() } ) } diff --git a/modules/nf-core/multiqc/tests/main.nf.test.snap b/modules/nf-core/multiqc/tests/main.nf.test.snap new file mode 100644 index 000000000..d37e73040 --- /dev/null +++ b/modules/nf-core/multiqc/tests/main.nf.test.snap @@ -0,0 +1,21 @@ +{ + "versions": { + "content": [ + [ + "versions.yml:md5,14e9a2661241abd828f4f06a7b5c222d" + ] + ], + "timestamp": "2024-01-09T23:02:49.911994" + }, + "sarscov2 single-end [fastqc] - stub": { + "content": [ + [ + "multiqc_report.html", + "multiqc_data", + "multiqc_plots", + "versions.yml:md5,14e9a2661241abd828f4f06a7b5c222d" + ] + ], + "timestamp": "2024-01-09T23:03:14.524346" + } +} \ No newline at end of file diff --git a/nextflow.config b/nextflow.config index 50e190382..de359a391 100644 --- a/nextflow.config +++ b/nextflow.config @@ -71,7 +71,7 @@ try { } // Load nf-core/rnaseq custom profiles from different institutions. -// Warning: Uncomment only if a pipeline-specific instititutional config already exists on nf-core/configs! +// Warning: Uncomment only if a pipeline-specific institutional config already exists on nf-core/configs! // try { // includeConfig "${params.custom_config_base}/pipeline/rnaseq.config" // } catch (Exception e) { @@ -91,6 +91,7 @@ profiles { podman.enabled = false shifter.enabled = false charliecloud.enabled = false + channels = ['conda-forge', 'bioconda', 'defaults'] apptainer.enabled = false } mamba { @@ -233,7 +234,7 @@ manifest { description = """RNA sequencing analysis pipeline for gene/isoform quantification and extensive quality control.""" mainScript = 'main.nf' nextflowVersion = '!>=23.04.0' - version = '3.14.0dev' + version = '3.15.0dev' doi = '' } diff --git a/pyproject.toml b/pyproject.toml index 0d62beb6f..7d08e1c8e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,10 +1,13 @@ -# Config file for Python. Mostly used to configure linting of bin/check_samplesheet.py with Black. +# Config file for Python. Mostly used to configure linting of bin/*.py with Ruff. # Should be kept the same as nf-core/tools to avoid fighting with template synchronisation. -[tool.black] +[tool.ruff] line-length = 120 -target_version = ["py37", "py38", "py39", "py310"] +target-version = "py38" +select = ["I", "E1", "E4", "E7", "E9", "F", "UP", "N"] +cache-dir = "~/.cache/ruff" -[tool.isort] -profile = "black" -known_first_party = ["nf_core"] -multi_line_output = 3 +[tool.ruff.isort] +known-first-party = ["nf_core"] + +[tool.ruff.per-file-ignores] +"__init__.py" = ["E402", "F401"] diff --git a/workflows/rnaseq.nf b/workflows/rnaseq.nf index dd57cfeb1..ed7825c59 100644 --- a/workflows/rnaseq.nf +++ b/workflows/rnaseq.nf @@ -127,6 +127,13 @@ workflow.onComplete { } } +workflow.onError { + if (workflow.errorReport.contains("Process requirement exceeds available memory")) { + println("🛑 Default resources exceed availability 🛑 ") + println("💡 See here on how to configure pipeline: https://nf-co.re/docs/usage/configuration#tuning-workflow-resources 💡") + } +} + /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ THE END From 625551ff95adc1a74cffbe6bc76e7b3fe3f296e2 Mon Sep 17 00:00:00 2001 From: Harshil Patel Date: Sun, 4 Feb 2024 10:35:47 +0000 Subject: [PATCH 021/634] Refactor configs to add if/else logic back in --- .../local/bedtools_genomecov/nextflow.config | 15 +- modules/local/dupradar/nextflow.config | 62 +- .../multiqc_custom_biotype/nextflow.config | 20 +- modules/nf-core/bbmap/bbsplit/nextflow.config | 32 +- modules/nf-core/multiqc/nextflow.config | 26 +- .../nf-core/preseq/lcextrap/nextflow.config | 34 +- .../nf-core/qualimap/rnaseq/nextflow.config | 20 +- modules/nf-core/sortmerna/nextflow.config | 32 +- .../stringtie/stringtie/nextflow.config | 26 +- .../subread/featurecounts/nextflow.config | 38 +- subworkflows/local/align_star/nextflow.config | 70 +-- .../quantify_pseudo_alignment/nextflow.config | 82 +-- .../local/quantify_rsem/nextflow.config | 66 ++- .../bam_markduplicates_picard/nextflow.config | 70 +-- .../nf-core/bam_rseqc/nextflow.config | 242 ++++---- .../fastq_align_hisat2/nextflow.config | 44 +- .../nextflow.config | 116 ++-- .../nextflow.config | 110 ++-- workflows/rnaseq/nextflow.config | 558 ++++++++++-------- 19 files changed, 919 insertions(+), 744 deletions(-) diff --git a/modules/local/bedtools_genomecov/nextflow.config b/modules/local/bedtools_genomecov/nextflow.config index c476b70cc..397b4b84b 100644 --- a/modules/local/bedtools_genomecov/nextflow.config +++ b/modules/local/bedtools_genomecov/nextflow.config @@ -1,8 +1,11 @@ -process { - withName: 'BEDTOOLS_GENOMECOV' { - ext.args = '-split -du' - publishDir = [ - enabled: false - ] + +if (!params.skip_alignment && !params.skip_bigwig) { + process { + withName: 'BEDTOOLS_GENOMECOV' { + ext.args = '-split -du' + publishDir = [ + enabled: false + ] + } } } \ No newline at end of file diff --git a/modules/local/dupradar/nextflow.config b/modules/local/dupradar/nextflow.config index 6a518df66..cff3fa401 100644 --- a/modules/local/dupradar/nextflow.config +++ b/modules/local/dupradar/nextflow.config @@ -1,31 +1,35 @@ -process { - withName: 'DUPRADAR' { - publishDir = [ - [ - path: { "${params.outdir}/${params.aligner}/dupradar/scatter_plot" }, - mode: params.publish_dir_mode, - pattern: "*Dens.pdf" - ], - [ - path: { "${params.outdir}/${params.aligner}/dupradar/box_plot" }, - mode: params.publish_dir_mode, - pattern: "*Boxplot.pdf" - ], - [ - path: { "${params.outdir}/${params.aligner}/dupradar/histogram" }, - mode: params.publish_dir_mode, - pattern: "*Hist.pdf" - ], - [ - path: { "${params.outdir}/${params.aligner}/dupradar/gene_data" }, - mode: params.publish_dir_mode, - pattern: "*Matrix.txt" - ], - [ - path: { "${params.outdir}/${params.aligner}/dupradar/intercepts_slope" }, - mode: params.publish_dir_mode, - pattern: "*slope.txt" - ] - ] +if (!params.skip_alignment && !params.skip_qc) { + if (!params.skip_dupradar) { + process { + withName: 'DUPRADAR' { + publishDir = [ + [ + path: { "${params.outdir}/${params.aligner}/dupradar/scatter_plot" }, + mode: params.publish_dir_mode, + pattern: "*Dens.pdf" + ], + [ + path: { "${params.outdir}/${params.aligner}/dupradar/box_plot" }, + mode: params.publish_dir_mode, + pattern: "*Boxplot.pdf" + ], + [ + path: { "${params.outdir}/${params.aligner}/dupradar/histogram" }, + mode: params.publish_dir_mode, + pattern: "*Hist.pdf" + ], + [ + path: { "${params.outdir}/${params.aligner}/dupradar/gene_data" }, + mode: params.publish_dir_mode, + pattern: "*Matrix.txt" + ], + [ + path: { "${params.outdir}/${params.aligner}/dupradar/intercepts_slope" }, + mode: params.publish_dir_mode, + pattern: "*slope.txt" + ] + ] + } + } } } \ No newline at end of file diff --git a/modules/local/multiqc_custom_biotype/nextflow.config b/modules/local/multiqc_custom_biotype/nextflow.config index cef49e565..68fecaa66 100644 --- a/modules/local/multiqc_custom_biotype/nextflow.config +++ b/modules/local/multiqc_custom_biotype/nextflow.config @@ -1,9 +1,13 @@ -process { - withName: 'MULTIQC_CUSTOM_BIOTYPE' { - publishDir = [ - path: { "${params.outdir}/${params.aligner}/featurecounts" }, - mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } - ] +if (!params.skip_alignment && !params.skip_qc) { + if (!params.skip_biotype_qc && params.featurecounts_group_type) { + process { + withName: 'MULTIQC_CUSTOM_BIOTYPE' { + publishDir = [ + path: { "${params.outdir}/${params.aligner}/featurecounts" }, + mode: params.publish_dir_mode, + saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + ] + } + } } -} \ No newline at end of file +} diff --git a/modules/nf-core/bbmap/bbsplit/nextflow.config b/modules/nf-core/bbmap/bbsplit/nextflow.config index 7e871bbba..da3ddaf31 100644 --- a/modules/nf-core/bbmap/bbsplit/nextflow.config +++ b/modules/nf-core/bbmap/bbsplit/nextflow.config @@ -1,18 +1,20 @@ -process { - withName: 'BBMAP_BBSPLIT' { - ext.args = 'build=1 ambiguous2=all maxindel=150000' - publishDir = [ - [ - path: { "${params.outdir}/bbsplit" }, - mode: params.publish_dir_mode, - pattern: '*.txt' - ], - [ - path: { params.save_bbsplit_reads ? "${params.outdir}/bbsplit" : params.outdir }, - mode: params.publish_dir_mode, - pattern: '*.fastq.gz', - saveAs: { params.save_bbsplit_reads ? it : null } +if (!params.skip_bbsplit) { + process { + withName: 'BBMAP_BBSPLIT' { + ext.args = 'build=1 ambiguous2=all maxindel=150000' + publishDir = [ + [ + path: { "${params.outdir}/bbsplit" }, + mode: params.publish_dir_mode, + pattern: '*.txt' + ], + [ + path: { params.save_bbsplit_reads ? "${params.outdir}/bbsplit" : params.outdir }, + mode: params.publish_dir_mode, + pattern: '*.fastq.gz', + saveAs: { params.save_bbsplit_reads ? it : null } + ] ] - ] + } } } \ No newline at end of file diff --git a/modules/nf-core/multiqc/nextflow.config b/modules/nf-core/multiqc/nextflow.config index ea3e6f2f6..ac178787c 100644 --- a/modules/nf-core/multiqc/nextflow.config +++ b/modules/nf-core/multiqc/nextflow.config @@ -1,14 +1,16 @@ -process { - withName: 'MULTIQC' { - ext.args = { params.multiqc_title ? "--title \"$params.multiqc_title\"" : '' } - ext.prefix = "multiqc_report" - publishDir = [ - path: { [ - "${params.outdir}/multiqc", - params.skip_alignment? '' : "/${params.aligner}" - ].join('') }, - mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } - ] +if (!params.skip_multiqc) { + process { + withName: 'MULTIQC' { + ext.args = { params.multiqc_title ? "--title \"$params.multiqc_title\"" : '' } + ext.prefix = "multiqc_report" + publishDir = [ + path: { [ + "${params.outdir}/multiqc", + params.skip_alignment? '' : "/${params.aligner}" + ].join('') }, + mode: params.publish_dir_mode, + saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + ] + } } } \ No newline at end of file diff --git a/modules/nf-core/preseq/lcextrap/nextflow.config b/modules/nf-core/preseq/lcextrap/nextflow.config index 45eb850f6..e203e87e7 100644 --- a/modules/nf-core/preseq/lcextrap/nextflow.config +++ b/modules/nf-core/preseq/lcextrap/nextflow.config @@ -1,17 +1,21 @@ -process { - withName: 'PRESEQ_LCEXTRAP' { - ext.args = '-verbose -bam -seed 1 -seg_len 100000000' - publishDir = [ - [ - path: { "${params.outdir}/${params.aligner}/preseq" }, - mode: params.publish_dir_mode, - pattern: "*.txt" - ], - [ - path: { "${params.outdir}/${params.aligner}/preseq/log" }, - mode: params.publish_dir_mode, - pattern: "*.log" - ] - ] +if (!params.skip_alignment && !params.skip_qc) { + if (!params.skip_preseq) { + process { + withName: 'PRESEQ_LCEXTRAP' { + ext.args = '-verbose -bam -seed 1 -seg_len 100000000' + publishDir = [ + [ + path: { "${params.outdir}/${params.aligner}/preseq" }, + mode: params.publish_dir_mode, + pattern: "*.txt" + ], + [ + path: { "${params.outdir}/${params.aligner}/preseq/log" }, + mode: params.publish_dir_mode, + pattern: "*.log" + ] + ] + } + } } } \ No newline at end of file diff --git a/modules/nf-core/qualimap/rnaseq/nextflow.config b/modules/nf-core/qualimap/rnaseq/nextflow.config index 0cb803147..9c05fb25a 100644 --- a/modules/nf-core/qualimap/rnaseq/nextflow.config +++ b/modules/nf-core/qualimap/rnaseq/nextflow.config @@ -1,9 +1,13 @@ -process { - withName: 'QUALIMAP_RNASEQ' { - publishDir = [ - path: { "${params.outdir}/${params.aligner}/qualimap" }, - mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } - ] +if (!params.skip_alignment && !params.skip_qc) { + if (!params.skip_qualimap) { + process { + withName: 'QUALIMAP_RNASEQ' { + publishDir = [ + path: { "${params.outdir}/${params.aligner}/qualimap" }, + mode: params.publish_dir_mode, + saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + ] + } + } } -} \ No newline at end of file +} diff --git a/modules/nf-core/sortmerna/nextflow.config b/modules/nf-core/sortmerna/nextflow.config index bff7e944c..8771660ce 100644 --- a/modules/nf-core/sortmerna/nextflow.config +++ b/modules/nf-core/sortmerna/nextflow.config @@ -1,18 +1,20 @@ -process { - withName: 'SORTMERNA' { - ext.args = '--num_alignments 1 -v' - publishDir = [ - [ - path: { "${params.outdir}/sortmerna" }, - mode: params.publish_dir_mode, - pattern: "*.log" - ], - [ - path: { params.save_non_ribo_reads ? "${params.outdir}/sortmerna" : params.outdir }, - mode: params.publish_dir_mode, - pattern: "*.fastq.gz", - saveAs: { params.save_non_ribo_reads ? it : null } +if (params.remove_ribo_rna) { + process { + withName: 'SORTMERNA' { + ext.args = '--num_alignments 1 -v' + publishDir = [ + [ + path: { "${params.outdir}/sortmerna" }, + mode: params.publish_dir_mode, + pattern: "*.log" + ], + [ + path: { params.save_non_ribo_reads ? "${params.outdir}/sortmerna" : params.outdir }, + mode: params.publish_dir_mode, + pattern: "*.fastq.gz", + saveAs: { params.save_non_ribo_reads ? it : null } + ] ] - ] + } } } \ No newline at end of file diff --git a/modules/nf-core/stringtie/stringtie/nextflow.config b/modules/nf-core/stringtie/stringtie/nextflow.config index 292c66318..dc0651458 100644 --- a/modules/nf-core/stringtie/stringtie/nextflow.config +++ b/modules/nf-core/stringtie/stringtie/nextflow.config @@ -1,13 +1,17 @@ -process { - withName: 'STRINGTIE_STRINGTIE' { - ext.args = { [ - '-v', - params.stringtie_ignore_gtf ? '' : '-e' - ].join(' ').trim() } - publishDir = [ - path: { "${params.outdir}/${params.aligner}/stringtie" }, - mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } - ] +if (!params.skip_alignment) { + if (!params.skip_stringtie) { + process { + withName: 'STRINGTIE_STRINGTIE' { + ext.args = { [ + '-v', + params.stringtie_ignore_gtf ? '' : '-e' + ].join(' ').trim() } + publishDir = [ + path: { "${params.outdir}/${params.aligner}/stringtie" }, + mode: params.publish_dir_mode, + saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + ] + } + } } } \ No newline at end of file diff --git a/modules/nf-core/subread/featurecounts/nextflow.config b/modules/nf-core/subread/featurecounts/nextflow.config index a7531a18b..3a796d101 100644 --- a/modules/nf-core/subread/featurecounts/nextflow.config +++ b/modules/nf-core/subread/featurecounts/nextflow.config @@ -1,14 +1,26 @@ -process { - withName: 'SUBREAD_FEATURECOUNTS' { - ext.args = { [ - '-B -C', - params.gencode ? "-g gene_type" : "-g $params.featurecounts_group_type", - "-t $params.featurecounts_feature_type" - ].join(' ').trim() } - publishDir = [ - path: { "${params.outdir}/${params.aligner}/featurecounts" }, - mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } - ] +if (!params.skip_alignment && !params.skip_qc) { + if (!params.skip_biotype_qc && params.featurecounts_group_type) { + process { + withName: 'SUBREAD_FEATURECOUNTS' { + ext.args = { [ + '-B -C', + params.gencode ? "-g gene_type" : "-g $params.featurecounts_group_type", + "-t $params.featurecounts_feature_type" + ].join(' ').trim() } + publishDir = [ + path: { "${params.outdir}/${params.aligner}/featurecounts" }, + mode: params.publish_dir_mode, + saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + ] + } + + withName: 'MULTIQC_CUSTOM_BIOTYPE' { + publishDir = [ + path: { "${params.outdir}/${params.aligner}/featurecounts" }, + mode: params.publish_dir_mode, + saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + ] + } + } } -} \ No newline at end of file +} diff --git a/subworkflows/local/align_star/nextflow.config b/subworkflows/local/align_star/nextflow.config index 4aa0852c2..328579da2 100644 --- a/subworkflows/local/align_star/nextflow.config +++ b/subworkflows/local/align_star/nextflow.config @@ -1,37 +1,39 @@ -process { - withName: '.*:ALIGN_STAR:STAR_ALIGN|.*:ALIGN_STAR:STAR_ALIGN_IGENOMES' { - ext.args = { [ - '--quantMode TranscriptomeSAM', - '--twopassMode Basic', - '--outSAMtype BAM Unsorted', - '--readFilesCommand zcat', - '--runRNGseed 0', - '--outFilterMultimapNmax 20', - '--alignSJDBoverhangMin 1', - '--outSAMattributes NH HI AS NM MD', - '--quantTranscriptomeBan Singleend', - '--outSAMstrandField intronMotif', - params.save_unaligned ? '--outReadsUnmapped Fastx' : '', - params.extra_star_align_args ? params.extra_star_align_args.split("\\s(?=--)") : '' - ].flatten().unique(false).join(' ').trim() } - publishDir = [ - [ - path: { "${params.outdir}/${params.aligner}/log" }, - mode: params.publish_dir_mode, - pattern: '*.{out,tab}' - ], - [ - path: { params.save_align_intermeds ? "${params.outdir}/${params.aligner}" : params.outdir }, - mode: params.publish_dir_mode, - pattern: '*.bam', - saveAs: { params.save_align_intermeds ? it : null } - ], - [ - path: { params.save_unaligned ? "${params.outdir}/${params.aligner}/unmapped" : params.outdir }, - mode: params.publish_dir_mode, - pattern: '*.fastq.gz', - saveAs: { params.save_unaligned ? it : null } +if (!params.skip_alignment && params.aligner == 'star_salmon') { + process { + withName: '.*:ALIGN_STAR:STAR_ALIGN|.*:ALIGN_STAR:STAR_ALIGN_IGENOMES' { + ext.args = { [ + '--quantMode TranscriptomeSAM', + '--twopassMode Basic', + '--outSAMtype BAM Unsorted', + '--readFilesCommand zcat', + '--runRNGseed 0', + '--outFilterMultimapNmax 20', + '--alignSJDBoverhangMin 1', + '--outSAMattributes NH HI AS NM MD', + '--quantTranscriptomeBan Singleend', + '--outSAMstrandField intronMotif', + params.save_unaligned ? '--outReadsUnmapped Fastx' : '', + params.extra_star_align_args ? params.extra_star_align_args.split("\\s(?=--)") : '' + ].flatten().unique(false).join(' ').trim() } + publishDir = [ + [ + path: { "${params.outdir}/${params.aligner}/log" }, + mode: params.publish_dir_mode, + pattern: '*.{out,tab}' + ], + [ + path: { params.save_align_intermeds ? "${params.outdir}/${params.aligner}" : params.outdir }, + mode: params.publish_dir_mode, + pattern: '*.bam', + saveAs: { params.save_align_intermeds ? it : null } + ], + [ + path: { params.save_unaligned ? "${params.outdir}/${params.aligner}/unmapped" : params.outdir }, + mode: params.publish_dir_mode, + pattern: '*.fastq.gz', + saveAs: { params.save_unaligned ? it : null } + ] ] - ] + } } } \ No newline at end of file diff --git a/subworkflows/local/quantify_pseudo_alignment/nextflow.config b/subworkflows/local/quantify_pseudo_alignment/nextflow.config index a9c246233..3c3a245b4 100644 --- a/subworkflows/local/quantify_pseudo_alignment/nextflow.config +++ b/subworkflows/local/quantify_pseudo_alignment/nextflow.config @@ -1,44 +1,54 @@ -process { - withName: '.*:QUANTIFY_PSEUDO_ALIGNMENT:SALMON_QUANT' { - ext.args = { params.extra_salmon_quant_args ?: '' } - publishDir = [ - path: { "${params.outdir}/${params.pseudo_aligner}" }, - mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') || filename.endsWith('_meta_info.json') ? null : filename } - ] +if (!params.skip_pseudo_alignment && params.pseudo_aligner == 'salmon') { + process { + withName: '.*:QUANTIFY_PSEUDO_ALIGNMENT:SALMON_QUANT' { + ext.args = { params.extra_salmon_quant_args ?: '' } + publishDir = [ + path: { "${params.outdir}/${params.pseudo_aligner}" }, + mode: params.publish_dir_mode, + saveAs: { filename -> filename.equals('versions.yml') || filename.endsWith('_meta_info.json') ? null : filename } + ] + } } +} - withName: '.*:QUANTIFY_PSEUDO_ALIGNMENT:KALLISTO_QUANT' { - ext.args = params.extra_kallisto_quant_args ?: '' - publishDir = [ - path: { "${params.outdir}/${params.pseudo_aligner}" }, - mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') || filename.endsWith('.run_info.json') || filename.endsWith('.log') ? null : filename } - ] +if (!params.skip_pseudo_alignment && params.pseudo_aligner == 'kallisto') { + process { + withName: '.*:QUANTIFY_PSEUDO_ALIGNMENT:KALLISTO_QUANT' { + ext.args = params.extra_kallisto_quant_args ?: '' + publishDir = [ + path: { "${params.outdir}/${params.pseudo_aligner}" }, + mode: params.publish_dir_mode, + saveAs: { filename -> filename.equals('versions.yml') || filename.endsWith('.run_info.json') || filename.endsWith('.log') ? null : filename } + ] + } } +} - withName: '.*:QUANTIFY_PSEUDO_ALIGNMENT:TX2GENE' { - publishDir = [ - path: { "${params.outdir}/${params.pseudo_aligner}" }, - mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } - ] - } +if (!params.skip_pseudo_alignment && params.pseudo_aligner) { + process { + withName: '.*:QUANTIFY_PSEUDO_ALIGNMENT:TX2GENE' { + publishDir = [ + path: { "${params.outdir}/${params.pseudo_aligner}" }, + mode: params.publish_dir_mode, + saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + ] + } - withName: '.*:QUANTIFY_PSEUDO_ALIGNMENT:TXIMPORT' { - ext.prefix = { "${quant_type}.merged" } - publishDir = [ - path: { "${params.outdir}/${params.pseudo_aligner}" }, - mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } - ] - } + withName: '.*:QUANTIFY_PSEUDO_ALIGNMENT:TXIMPORT' { + ext.prefix = { "${quant_type}.merged" } + publishDir = [ + path: { "${params.outdir}/${params.pseudo_aligner}" }, + mode: params.publish_dir_mode, + saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + ] + } - withName: '.*:QUANTIFY_PSEUDO_ALIGNMENT:SE_.*' { - publishDir = [ - path: { "${params.outdir}/${params.pseudo_aligner}" }, - mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } - ] + withName: '.*:QUANTIFY_PSEUDO_ALIGNMENT:SE_.*' { + publishDir = [ + path: { "${params.outdir}/${params.pseudo_aligner}" }, + mode: params.publish_dir_mode, + saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + ] + } } } \ No newline at end of file diff --git a/subworkflows/local/quantify_rsem/nextflow.config b/subworkflows/local/quantify_rsem/nextflow.config index 55f679c2b..514177e32 100644 --- a/subworkflows/local/quantify_rsem/nextflow.config +++ b/subworkflows/local/quantify_rsem/nextflow.config @@ -1,37 +1,39 @@ -process { - withName: '.*:QUANTIFY_RSEM:RSEM_CALCULATEEXPRESSION' { - ext.args = [ - '--star', - '--star-output-genome-bam', - '--star-gzipped-read-file', - '--estimate-rspd', - '--seed 1' - ].join(' ').trim() - publishDir = [ - [ +if (!params.skip_alignment && params.aligner == 'star_rsem') { + process { + withName: '.*:QUANTIFY_RSEM:RSEM_CALCULATEEXPRESSION' { + ext.args = [ + '--star', + '--star-output-genome-bam', + '--star-gzipped-read-file', + '--estimate-rspd', + '--seed 1' + ].join(' ').trim() + publishDir = [ + [ + path: { "${params.outdir}/${params.aligner}" }, + mode: params.publish_dir_mode, + pattern: "*.{stat,results}" + ], + [ + path: { params.save_align_intermeds ? "${params.outdir}/${params.aligner}" : params.outdir }, + mode: params.publish_dir_mode, + pattern: "*.bam", + saveAs: { params.save_align_intermeds ? it : null } + ], + [ + path: { "${params.outdir}/${params.aligner}/log" }, + mode: params.publish_dir_mode, + pattern: "*.log" + ] + ] + } + + withName: '.*:QUANTIFY_RSEM:RSEM_MERGE_COUNTS' { + publishDir = [ path: { "${params.outdir}/${params.aligner}" }, mode: params.publish_dir_mode, - pattern: "*.{stat,results}" - ], - [ - path: { params.save_align_intermeds ? "${params.outdir}/${params.aligner}" : params.outdir }, - mode: params.publish_dir_mode, - pattern: "*.bam", - saveAs: { params.save_align_intermeds ? it : null } - ], - [ - path: { "${params.outdir}/${params.aligner}/log" }, - mode: params.publish_dir_mode, - pattern: "*.log" + saveAs: { filename -> filename.equals('versions.yml') ? null : filename } ] - ] - } - - withName: '.*:QUANTIFY_RSEM:RSEM_MERGE_COUNTS' { - publishDir = [ - path: { "${params.outdir}/${params.aligner}" }, - mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } - ] + } } } \ No newline at end of file diff --git a/subworkflows/nf-core/bam_markduplicates_picard/nextflow.config b/subworkflows/nf-core/bam_markduplicates_picard/nextflow.config index 72b61fa2d..94a3e52b7 100644 --- a/subworkflows/nf-core/bam_markduplicates_picard/nextflow.config +++ b/subworkflows/nf-core/bam_markduplicates_picard/nextflow.config @@ -1,37 +1,41 @@ -process { - withName: '.*:BAM_MARKDUPLICATES_PICARD:PICARD_MARKDUPLICATES' { - ext.args = '--ASSUME_SORTED true --REMOVE_DUPLICATES false --VALIDATION_STRINGENCY LENIENT --TMP_DIR tmp' - ext.prefix = { "${meta.id}.markdup.sorted" } - publishDir = [ - [ - path: { "${params.outdir}/${params.aligner}/picard_metrics" }, - mode: params.publish_dir_mode, - pattern: '*metrics.txt' - ], - [ - path: { "${params.outdir}/${params.aligner}" }, - mode: params.publish_dir_mode, - pattern: '*.bam' - ] - ] - } +if (!params.skip_alignment) { + if (!params.skip_markduplicates && !params.with_umi) { + process { + withName: '.*:BAM_MARKDUPLICATES_PICARD:PICARD_MARKDUPLICATES' { + ext.args = '--ASSUME_SORTED true --REMOVE_DUPLICATES false --VALIDATION_STRINGENCY LENIENT --TMP_DIR tmp' + ext.prefix = { "${meta.id}.markdup.sorted" } + publishDir = [ + [ + path: { "${params.outdir}/${params.aligner}/picard_metrics" }, + mode: params.publish_dir_mode, + pattern: '*metrics.txt' + ], + [ + path: { "${params.outdir}/${params.aligner}" }, + mode: params.publish_dir_mode, + pattern: '*.bam' + ] + ] + } - withName: '.*:BAM_MARKDUPLICATES_PICARD:SAMTOOLS_INDEX' { - ext.args = { params.bam_csi_index ? '-c' : '' } - ext.prefix = { "${meta.id}.markdup.sorted" } - publishDir = [ - path: { "${params.outdir}/${params.aligner}" }, - mode: params.publish_dir_mode, - pattern: '*.{bai,csi}' - ] - } + withName: '.*:BAM_MARKDUPLICATES_PICARD:SAMTOOLS_INDEX' { + ext.args = { params.bam_csi_index ? '-c' : '' } + ext.prefix = { "${meta.id}.markdup.sorted" } + publishDir = [ + path: { "${params.outdir}/${params.aligner}" }, + mode: params.publish_dir_mode, + pattern: '*.{bai,csi}' + ] + } - withName: '.*:BAM_MARKDUPLICATES_PICARD:BAM_STATS_SAMTOOLS:.*' { - ext.prefix = { "${meta.id}.markdup.sorted.bam" } - publishDir = [ - path: { "${params.outdir}/${params.aligner}/samtools_stats" }, - mode: params.publish_dir_mode, - pattern: '*.{stats,flagstat,idxstats}' - ] + withName: '.*:BAM_MARKDUPLICATES_PICARD:BAM_STATS_SAMTOOLS:.*' { + ext.prefix = { "${meta.id}.markdup.sorted.bam" } + publishDir = [ + path: { "${params.outdir}/${params.aligner}/samtools_stats" }, + mode: params.publish_dir_mode, + pattern: '*.{stats,flagstat,idxstats}' + ] + } + } } } \ No newline at end of file diff --git a/subworkflows/nf-core/bam_rseqc/nextflow.config b/subworkflows/nf-core/bam_rseqc/nextflow.config index 0e56f102e..4fabc8e99 100644 --- a/subworkflows/nf-core/bam_rseqc/nextflow.config +++ b/subworkflows/nf-core/bam_rseqc/nextflow.config @@ -1,119 +1,153 @@ -process { - withName: '.*:BAM_RSEQC:RSEQC_BAMSTAT' { - publishDir = [ - path: { "${params.outdir}/${params.aligner}/rseqc/bam_stat" }, - mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } - ] +def rseqc_modules = params.rseqc_modules ? params.rseqc_modules.split(',').collect{ it.trim().toLowerCase() } : [] + +if (!params.skip_alignment && !params.skip_qc && !params.skip_rseqc) { + if ('bam_stat' in rseqc_modules) { + process { + withName: '.*:BAM_RSEQC:RSEQC_BAMSTAT' { + publishDir = [ + path: { "${params.outdir}/${params.aligner}/rseqc/bam_stat" }, + mode: params.publish_dir_mode, + saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + ] + } + } } - withName: '.*:BAM_RSEQC:RSEQC_INFEREXPERIMENT' { - publishDir = [ - path: { "${params.outdir}/${params.aligner}/rseqc/infer_experiment" }, - mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } - ] + if ('infer_experiment' in rseqc_modules) { + process { + withName: '.*:BAM_RSEQC:RSEQC_INFEREXPERIMENT' { + publishDir = [ + path: { "${params.outdir}/${params.aligner}/rseqc/infer_experiment" }, + mode: params.publish_dir_mode, + saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + ] + } + } } - withName: '.*:BAM_RSEQC:RSEQC_JUNCTIONANNOTATION' { - publishDir = [ - [ - path: { "${params.outdir}/${params.aligner}/rseqc/junction_annotation/pdf" }, - mode: params.publish_dir_mode, - pattern: '*.pdf' - ], - [ - path: { "${params.outdir}/${params.aligner}/rseqc/junction_annotation/bed" }, - mode: params.publish_dir_mode, - pattern: '*.bed' - ], - [ - path: { "${params.outdir}/${params.aligner}/rseqc/junction_annotation/xls" }, - mode: params.publish_dir_mode, - pattern: '*.xls' - ], - [ - path: { "${params.outdir}/${params.aligner}/rseqc/junction_annotation/log" }, - mode: params.publish_dir_mode, - pattern: '*.log' - ], - [ - path: { "${params.outdir}/${params.aligner}/rseqc/junction_annotation/rscript" }, - mode: params.publish_dir_mode, - pattern: '*.r' - ] - ] + if ('junction_annotation' in rseqc_modules) { + process { + withName: '.*:BAM_RSEQC:RSEQC_JUNCTIONANNOTATION' { + publishDir = [ + [ + path: { "${params.outdir}/${params.aligner}/rseqc/junction_annotation/pdf" }, + mode: params.publish_dir_mode, + pattern: '*.pdf' + ], + [ + path: { "${params.outdir}/${params.aligner}/rseqc/junction_annotation/bed" }, + mode: params.publish_dir_mode, + pattern: '*.bed' + ], + [ + path: { "${params.outdir}/${params.aligner}/rseqc/junction_annotation/xls" }, + mode: params.publish_dir_mode, + pattern: '*.xls' + ], + [ + path: { "${params.outdir}/${params.aligner}/rseqc/junction_annotation/log" }, + mode: params.publish_dir_mode, + pattern: '*.log' + ], + [ + path: { "${params.outdir}/${params.aligner}/rseqc/junction_annotation/rscript" }, + mode: params.publish_dir_mode, + pattern: '*.r' + ] + ] + } + } } - withName: '.*:BAM_RSEQC:RSEQC_JUNCTIONSATURATION' { - publishDir = [ - [ - path: { "${params.outdir}/${params.aligner}/rseqc/junction_saturation/pdf" }, - mode: params.publish_dir_mode, - pattern: '*.pdf' - ], - [ - path: { "${params.outdir}/${params.aligner}/rseqc/junction_saturation/rscript" }, - mode: params.publish_dir_mode, - pattern: '*.r' - ] - ] + if ('junction_saturation' in rseqc_modules) { + process { + withName: '.*:BAM_RSEQC:RSEQC_JUNCTIONSATURATION' { + publishDir = [ + [ + path: { "${params.outdir}/${params.aligner}/rseqc/junction_saturation/pdf" }, + mode: params.publish_dir_mode, + pattern: '*.pdf' + ], + [ + path: { "${params.outdir}/${params.aligner}/rseqc/junction_saturation/rscript" }, + mode: params.publish_dir_mode, + pattern: '*.r' + ] + ] + } + } } - withName: '.*:BAM_RSEQC:RSEQC_READDUPLICATION' { - publishDir = [ - [ - path: { "${params.outdir}/${params.aligner}/rseqc/read_duplication/pdf" }, - mode: params.publish_dir_mode, - pattern: '*.pdf' - ], - [ - path: { "${params.outdir}/${params.aligner}/rseqc/read_duplication/xls" }, - mode: params.publish_dir_mode, - pattern: '*.xls' - ], - [ - path: { "${params.outdir}/${params.aligner}/rseqc/read_duplication/rscript" }, - mode: params.publish_dir_mode, - pattern: '*.r' - ] - ] + if ('read_duplication' in rseqc_modules) { + process { + withName: '.*:BAM_RSEQC:RSEQC_READDUPLICATION' { + publishDir = [ + [ + path: { "${params.outdir}/${params.aligner}/rseqc/read_duplication/pdf" }, + mode: params.publish_dir_mode, + pattern: '*.pdf' + ], + [ + path: { "${params.outdir}/${params.aligner}/rseqc/read_duplication/xls" }, + mode: params.publish_dir_mode, + pattern: '*.xls' + ], + [ + path: { "${params.outdir}/${params.aligner}/rseqc/read_duplication/rscript" }, + mode: params.publish_dir_mode, + pattern: '*.r' + ] + ] + } + } } - withName: '.*:BAM_RSEQC:RSEQC_READDISTRIBUTION' { - publishDir = [ - path: { "${params.outdir}/${params.aligner}/rseqc/read_distribution" }, - mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } - ] + if ('read_distribution' in rseqc_modules && !params.bam_csi_index) { + process { + withName: '.*:BAM_RSEQC:RSEQC_READDISTRIBUTION' { + publishDir = [ + path: { "${params.outdir}/${params.aligner}/rseqc/read_distribution" }, + mode: params.publish_dir_mode, + saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + ] + } + } } - withName: '.*:BAM_RSEQC:RSEQC_INNERDISTANCE' { - publishDir = [ - [ - path: { "${params.outdir}/${params.aligner}/rseqc/inner_distance/txt" }, - mode: params.publish_dir_mode, - pattern: '*.txt', - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } - ], - [ - path: { "${params.outdir}/${params.aligner}/rseqc/inner_distance/pdf" }, - mode: params.publish_dir_mode, - pattern: '*.pdf' - ], - [ - path: { "${params.outdir}/${params.aligner}/rseqc/inner_distance/rscript" }, - mode: params.publish_dir_mode, - pattern: '*.r' - ] - ] + if ('inner_distance' in rseqc_modules && !params.bam_csi_index) { + process { + withName: '.*:BAM_RSEQC:RSEQC_INNERDISTANCE' { + publishDir = [ + [ + path: { "${params.outdir}/${params.aligner}/rseqc/inner_distance/txt" }, + mode: params.publish_dir_mode, + pattern: '*.txt', + saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + ], + [ + path: { "${params.outdir}/${params.aligner}/rseqc/inner_distance/pdf" }, + mode: params.publish_dir_mode, + pattern: '*.pdf' + ], + [ + path: { "${params.outdir}/${params.aligner}/rseqc/inner_distance/rscript" }, + mode: params.publish_dir_mode, + pattern: '*.r' + ] + ] + } + } } - withName: '.*:BAM_RSEQC:RSEQC_TIN' { - publishDir = [ - path: { "${params.outdir}/${params.aligner}/rseqc/tin" }, - mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } - ] + if ('tin' in rseqc_modules && !params.bam_csi_index) { + process { + withName: '.*:BAM_RSEQC:RSEQC_TIN' { + publishDir = [ + path: { "${params.outdir}/${params.aligner}/rseqc/tin" }, + mode: params.publish_dir_mode, + saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + ] + } + } } -} \ No newline at end of file +} diff --git a/subworkflows/nf-core/fastq_align_hisat2/nextflow.config b/subworkflows/nf-core/fastq_align_hisat2/nextflow.config index 2e1d4b7f6..94633dfa6 100644 --- a/subworkflows/nf-core/fastq_align_hisat2/nextflow.config +++ b/subworkflows/nf-core/fastq_align_hisat2/nextflow.config @@ -1,24 +1,26 @@ -process { - withName: '.*:FASTQ_ALIGN_HISAT2:HISAT2_ALIGN' { - ext.args = '--met-stderr --new-summary --dta' - publishDir = [ - [ - path: { "${params.outdir}/${params.aligner}/log" }, - mode: params.publish_dir_mode, - pattern: '*.log' - ], - [ - path: { params.save_align_intermeds ? "${params.outdir}/${params.aligner}" : params.outdir }, - mode: params.publish_dir_mode, - pattern: '*.bam', - saveAs: { params.save_align_intermeds ? it : null } - ], - [ - path: { params.save_unaligned ? "${params.outdir}/${params.aligner}/unmapped" : params.outdir }, - mode: params.publish_dir_mode, - pattern: '*.fastq.gz', - saveAs: { params.save_unaligned ? it : null } +if (!params.skip_alignment && params.aligner == 'hisat2') { + process { + withName: '.*:FASTQ_ALIGN_HISAT2:HISAT2_ALIGN' { + ext.args = '--met-stderr --new-summary --dta' + publishDir = [ + [ + path: { "${params.outdir}/${params.aligner}/log" }, + mode: params.publish_dir_mode, + pattern: '*.log' + ], + [ + path: { params.save_align_intermeds ? "${params.outdir}/${params.aligner}" : params.outdir }, + mode: params.publish_dir_mode, + pattern: '*.bam', + saveAs: { params.save_align_intermeds ? it : null } + ], + [ + path: { params.save_unaligned ? "${params.outdir}/${params.aligner}/unmapped" : params.outdir }, + mode: params.publish_dir_mode, + pattern: '*.fastq.gz', + saveAs: { params.save_unaligned ? it : null } + ] ] - ] + } } } \ No newline at end of file diff --git a/subworkflows/nf-core/fastq_fastqc_umitools_fastp/nextflow.config b/subworkflows/nf-core/fastq_fastqc_umitools_fastp/nextflow.config index 6bd31b449..061689d5f 100644 --- a/subworkflows/nf-core/fastq_fastqc_umitools_fastp/nextflow.config +++ b/subworkflows/nf-core/fastq_fastqc_umitools_fastp/nextflow.config @@ -1,58 +1,72 @@ -process { - withName: '.*:FASTQ_FASTQC_UMITOOLS_FASTP:UMITOOLS_EXTRACT' { - ext.args = { [ - params.umitools_extract_method ? "--extract-method=${params.umitools_extract_method}" : '', - params.umitools_bc_pattern ? "--bc-pattern='${params.umitools_bc_pattern}'" : '', - params.umitools_bc_pattern2 ? "--bc-pattern2='${params.umitools_bc_pattern2}'" : '', - params.umitools_umi_separator ? "--umi-separator='${params.umitools_umi_separator}'" : '' - ].join(' ').trim() } - publishDir = [ - [ - path: { "${params.outdir}/umitools" }, - mode: params.publish_dir_mode, - pattern: "*.log" - ], - [ - path: { params.save_umi_intermeds ? "${params.outdir}/umitools" : params.outdir }, - mode: params.publish_dir_mode, - pattern: "*.fastq.gz", - saveAs: { params.save_umi_intermeds ? it : null } - ] - ] - } +if (!(params.skip_fastqc || params.skip_qc)) { + if (params.trimmer == 'fastp') { + process { + withName: '.*:FASTQ_FASTQC_UMITOOLS_FASTP:FASTQC_RAW' { + ext.args = '--quiet' + } - withName: '.*:FASTQ_FASTQC_UMITOOLS_FASTP:FASTQC_RAW' { - ext.args = '--quiet' + withName: '.*:FASTQ_FASTQC_UMITOOLS_FASTP:FASTQC_TRIM' { + ext.args = '--quiet' + publishDir = [ + path: { "${params.outdir}/${params.trimmer}/fastqc" }, + mode: params.publish_dir_mode, + saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + ] + } + } } +} - withName: '.*:FASTQ_FASTQC_UMITOOLS_FASTP:FASTQC_TRIM' { - ext.args = '--quiet' - publishDir = [ - path: { "${params.outdir}/${params.trimmer}/fastqc" }, - mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } - ] +if (!params.skip_trimming) { + if (params.trimmer == 'fastp') { + process { + withName: '.*:FASTQ_FASTQC_UMITOOLS_FASTP:FASTP' { + ext.args = { params.extra_fastp_args ?: '' } + publishDir = [ + [ + path: { "${params.outdir}/${params.trimmer}" }, + mode: params.publish_dir_mode, + pattern: "*.{json,html}" + ], + [ + path: { "${params.outdir}/${params.trimmer}/log" }, + mode: params.publish_dir_mode, + pattern: "*.log" + ], + [ + path: { params.save_trimmed ? "${params.outdir}/${params.trimmer}" : params.outdir }, + mode: params.publish_dir_mode, + pattern: "*.fastq.gz", + saveAs: { params.save_trimmed ? it : null } + ] + ] + } + } } +} - withName: '.*:FASTQ_FASTQC_UMITOOLS_FASTP:FASTP' { - ext.args = { params.extra_fastp_args ?: '' } - publishDir = [ - [ - path: { "${params.outdir}/${params.trimmer}" }, - mode: params.publish_dir_mode, - pattern: "*.{json,html}" - ], - [ - path: { "${params.outdir}/${params.trimmer}/log" }, - mode: params.publish_dir_mode, - pattern: "*.log" - ], - [ - path: { params.save_trimmed ? "${params.outdir}/${params.trimmer}" : params.outdir }, - mode: params.publish_dir_mode, - pattern: "*.fastq.gz", - saveAs: { params.save_trimmed ? it : null } +if (params.with_umi && !params.skip_umi_extract) { + process { + withName: '.*:FASTQ_FASTQC_UMITOOLS_FASTP:UMITOOLS_EXTRACT' { + ext.args = { [ + params.umitools_extract_method ? "--extract-method=${params.umitools_extract_method}" : '', + params.umitools_bc_pattern ? "--bc-pattern='${params.umitools_bc_pattern}'" : '', + params.umitools_bc_pattern2 ? "--bc-pattern2='${params.umitools_bc_pattern2}'" : '', + params.umitools_umi_separator ? "--umi-separator='${params.umitools_umi_separator}'" : '' + ].join(' ').trim() } + publishDir = [ + [ + path: { "${params.outdir}/umitools" }, + mode: params.publish_dir_mode, + pattern: "*.log" + ], + [ + path: { params.save_umi_intermeds ? "${params.outdir}/umitools" : params.outdir }, + mode: params.publish_dir_mode, + pattern: "*.fastq.gz", + saveAs: { params.save_umi_intermeds ? it : null } + ] ] - ] + } } -} \ No newline at end of file +} diff --git a/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/nextflow.config b/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/nextflow.config index 724d0e50f..7279111e5 100644 --- a/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/nextflow.config +++ b/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/nextflow.config @@ -1,54 +1,68 @@ -process { - withName: '.*:FASTQ_FASTQC_UMITOOLS_TRIMGALORE:UMITOOLS_EXTRACT' { - ext.args = { [ - params.umitools_extract_method ? "--extract-method=${params.umitools_extract_method}" : '', - params.umitools_bc_pattern ? "--bc-pattern='${params.umitools_bc_pattern}'" : '', - params.umitools_bc_pattern2 ? "--bc-pattern2='${params.umitools_bc_pattern2}'" : '', - params.umitools_umi_separator ? "--umi-separator='${params.umitools_umi_separator}'" : '' - ].join(' ').trim() } - publishDir = [ - [ - path: { "${params.outdir}/umitools" }, - mode: params.publish_dir_mode, - pattern: "*.log" - ], - [ - path: { params.save_umi_intermeds ? "${params.outdir}/umitools" : params.outdir }, - mode: params.publish_dir_mode, - pattern: "*.fastq.gz", - saveAs: { params.save_umi_intermeds ? it : null } - ] - ] +if (!(params.skip_fastqc || params.skip_qc)) { + if (params.trimmer == 'trimgalore') { + process { + withName: '.*:FASTQ_FASTQC_UMITOOLS_TRIMGALORE:FASTQC' { + ext.args = '--quiet' + } + } } +} - withName: '.*:FASTQ_FASTQC_UMITOOLS_TRIMGALORE:FASTQC' { - ext.args = '--quiet' +if (!params.skip_trimming) { + if (params.trimmer == 'trimgalore') { + process { + withName: '.*:FASTQ_FASTQC_UMITOOLS_TRIMGALORE:TRIMGALORE' { + ext.args = { + [ + "--fastqc_args '-t ${task.cpus}'", + params.extra_trimgalore_args ? params.extra_trimgalore_args.split("\\s(?=--)") : '' + ].flatten().unique(false).join(' ').trim() + } + publishDir = [ + [ + path: { "${params.outdir}/${params.trimmer}/fastqc" }, + mode: params.publish_dir_mode, + pattern: "*.{html,zip}" + ], + [ + path: { params.save_trimmed ? "${params.outdir}/${params.trimmer}" : params.outdir }, + mode: params.publish_dir_mode, + pattern: "*.fq.gz", + saveAs: { params.save_trimmed ? it : null } + ], + [ + path: { "${params.outdir}/${params.trimmer}" }, + mode: params.publish_dir_mode, + pattern: "*.txt" + ] + ] + } + } } +} - withName: '.*:FASTQ_FASTQC_UMITOOLS_TRIMGALORE:TRIMGALORE' { - ext.args = { - [ - "--fastqc_args '-t ${task.cpus}'", - params.extra_trimgalore_args ? params.extra_trimgalore_args.split("\\s(?=--)") : '' - ].flatten().unique(false).join(' ').trim() - } - publishDir = [ - [ - path: { "${params.outdir}/${params.trimmer}/fastqc" }, - mode: params.publish_dir_mode, - pattern: "*.{html,zip}" - ], - [ - path: { params.save_trimmed ? "${params.outdir}/${params.trimmer}" : params.outdir }, - mode: params.publish_dir_mode, - pattern: "*.fq.gz", - saveAs: { params.save_trimmed ? it : null } - ], - [ - path: { "${params.outdir}/${params.trimmer}" }, - mode: params.publish_dir_mode, - pattern: "*.txt" +if (params.with_umi && !params.skip_umi_extract) { + process { + withName: '.*:FASTQ_FASTQC_UMITOOLS_TRIMGALORE:UMITOOLS_EXTRACT' { + ext.args = { [ + params.umitools_extract_method ? "--extract-method=${params.umitools_extract_method}" : '', + params.umitools_bc_pattern ? "--bc-pattern='${params.umitools_bc_pattern}'" : '', + params.umitools_bc_pattern2 ? "--bc-pattern2='${params.umitools_bc_pattern2}'" : '', + params.umitools_umi_separator ? "--umi-separator='${params.umitools_umi_separator}'" : '' + ].join(' ').trim() } + publishDir = [ + [ + path: { "${params.outdir}/umitools" }, + mode: params.publish_dir_mode, + pattern: "*.log" + ], + [ + path: { params.save_umi_intermeds ? "${params.outdir}/umitools" : params.outdir }, + mode: params.publish_dir_mode, + pattern: "*.fastq.gz", + saveAs: { params.save_umi_intermeds ? it : null } + ] ] - ] + } } -} \ No newline at end of file +} diff --git a/workflows/rnaseq/nextflow.config b/workflows/rnaseq/nextflow.config index 0c6d94136..17a45ac96 100644 --- a/workflows/rnaseq/nextflow.config +++ b/workflows/rnaseq/nextflow.config @@ -18,291 +18,343 @@ includeConfig "../../subworkflows/nf-core/fastq_fastqc_umitools_fastp/nextflow.c includeConfig "../../subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/nextflow.config" includeConfig "../../subworkflows/nf-core/fastq_subsample_fq_salmon/nextflow.config" -process { - withName: 'NFCORE_RNASEQ:.*:BAM_SORT_STATS_SAMTOOLS:BAM_STATS_SAMTOOLS:.*' { - ext.prefix = { "${meta.id}.sorted.bam" } - publishDir = [ - path: { "${params.outdir}/${params.aligner}/samtools_stats" }, - mode: params.publish_dir_mode, - pattern: "*.{stats,flagstat,idxstats}" - ] - } +// +// STAR Salmon alignment options +// - withName: 'NFCORE_RNASEQ:.*:BAM_SORT_STATS_SAMTOOLS:SAMTOOLS_SORT' { - ext.prefix = { "${meta.id}.sorted" } - publishDir = [ - path: { ( ['star_salmon','hisat2'].contains(params.aligner) && - ( params.save_align_intermeds || ( !params.with_umi && params.skip_markduplicates ) ) - ) || params.save_align_intermeds || params.skip_markduplicates ? "${params.outdir}/${params.aligner}" : params.outdir }, - mode: params.publish_dir_mode, - pattern: "*.bam", - saveAs: { ( ['star_salmon','hisat2'].contains(params.aligner) && - ( params.save_align_intermeds || ( !params.with_umi && params.skip_markduplicates ) ) - ) || params.save_align_intermeds || params.skip_markduplicates ? it : null } - ] - } +if (!params.skip_alignment && params.aligner == 'star_salmon') { + process { + withName: '.*:QUANTIFY_STAR_SALMON:SALMON_QUANT' { + ext.args = { params.extra_salmon_quant_args ?: '' } + publishDir = [ + path: { "${params.outdir}/${params.aligner}" }, + mode: params.publish_dir_mode, + saveAs: { filename -> filename.equals('versions.yml') || filename.endsWith('_meta_info.json') ? null : filename } + ] + } - withName: 'NFCORE_RNASEQ:.*:BAM_SORT_STATS_SAMTOOLS:SAMTOOLS_INDEX' { - ext.args = { params.bam_csi_index ? '-c' : '' } - publishDir = [ - path: { ( ['star_salmon','hisat2'].contains(params.aligner) && - ( params.save_align_intermeds || ( !params.with_umi && params.skip_markduplicates ) ) - ) || params.save_align_intermeds || params.skip_markduplicates ? "${params.outdir}/${params.aligner}" : params.outdir }, - mode: params.publish_dir_mode, - pattern: "*.{bai,csi}", - saveAs: { ( ['star_salmon','hisat2'].contains(params.aligner) && - ( params.save_align_intermeds || ( !params.with_umi && params.skip_markduplicates ) ) - ) || params.save_align_intermeds || params.skip_markduplicates ? it : null } - ] - } + withName: '.*:QUANTIFY_STAR_SALMON:TX2GENE' { + publishDir = [ + path: { "${params.outdir}/${params.aligner}" }, + mode: params.publish_dir_mode, + saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + ] + } - withName: 'NFCORE_RNASEQ:BAM_SORT_STATS_SAMTOOLS:SAMTOOLS_SORT' { - ext.prefix = { "${meta.id}.transcriptome.sorted" } - publishDir = [ - path: { params.save_align_intermeds || params.save_umi_intermeds ? "${params.outdir}/${params.aligner}" : params.outdir }, - mode: params.publish_dir_mode, - pattern: '*.bam', - saveAs: { params.save_align_intermeds || params.save_umi_intermeds ? it : null } - ] - } + withName: '.*:QUANTIFY_STAR_SALMON:TXIMPORT' { + ext.prefix = { "${quant_type}.merged" } + publishDir = [ + path: { "${params.outdir}/${params.aligner}" }, + mode: params.publish_dir_mode, + saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + ] + } - withName: 'NFCORE_RNASEQ:BAM_SORT_STATS_SAMTOOLS:SAMTOOLS_INDEX' { - publishDir = [ - path: { params.save_align_intermeds || params.save_umi_intermeds ? "${params.outdir}/${params.aligner}" : params.outdir }, - mode: params.publish_dir_mode, - pattern: '*.bai', - saveAs: { params.save_align_intermeds || params.save_umi_intermeds ? it : null } - ] + withName: '.*:QUANTIFY_STAR_SALMON:SE_.*' { + publishDir = [ + path: { "${params.outdir}/${params.aligner}" }, + mode: params.publish_dir_mode, + saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + ] + } } - withName: 'NFCORE_RNASEQ:BAM_SORT_STATS_SAMTOOLS:BAM_STATS_SAMTOOLS:.*' { - ext.prefix = { "${meta.id}.transcriptome.sorted.bam" } - publishDir = [ - path: { params.save_align_intermeds || params.save_umi_intermeds ? "${params.outdir}/${params.aligner}/samtools_stats" : params.outdir }, - mode: params.publish_dir_mode, - pattern: '*.{stats,flagstat,idxstats}', - saveAs: { params.save_align_intermeds || params.save_umi_intermeds ? it : null } - ] - } + if (params.with_umi) { + process { + withName: 'NFCORE_RNASEQ:SAMTOOLS_SORT' { + ext.args = '-n' + ext.prefix = { "${meta.id}.umi_dedup.transcriptome" } + publishDir = [ + path: { params.save_align_intermeds || params.save_umi_intermeds ? "${params.outdir}/${params.aligner}" : params.outdir }, + mode: params.publish_dir_mode, + pattern: '*.bam', + saveAs: { params.save_align_intermeds || params.save_umi_intermeds ? it : null } + ] + } + + withName: 'NFCORE_RNASEQ:UMITOOLS_PREPAREFORSALMON' { + ext.prefix = { "${meta.id}.umi_dedup.transcriptome.filtered" } + publishDir = [ + [ + path: { "${params.outdir}/${params.aligner}/umitools/log" }, + mode: params.publish_dir_mode, + pattern: '*.log' + ], + [ + path: { params.save_align_intermeds || params.save_umi_intermeds ? "${params.outdir}/${params.aligner}" : params.outdir }, + mode: params.publish_dir_mode, + pattern: '*.bam', + saveAs: { params.save_align_intermeds || params.save_umi_intermeds ? it : null } + ] + ] + } + + withName: 'NFCORE_RNASEQ:BAM_SORT_STATS_SAMTOOLS:SAMTOOLS_SORT' { + ext.prefix = { "${meta.id}.transcriptome.sorted" } + publishDir = [ + path: { params.save_align_intermeds || params.save_umi_intermeds ? "${params.outdir}/${params.aligner}" : params.outdir }, + mode: params.publish_dir_mode, + pattern: '*.bam', + saveAs: { params.save_align_intermeds || params.save_umi_intermeds ? it : null } + ] + } + + withName: 'NFCORE_RNASEQ:BAM_SORT_STATS_SAMTOOLS:SAMTOOLS_INDEX' { + publishDir = [ + path: { params.save_align_intermeds || params.save_umi_intermeds ? "${params.outdir}/${params.aligner}" : params.outdir }, + mode: params.publish_dir_mode, + pattern: '*.bai', + saveAs: { params.save_align_intermeds || params.save_umi_intermeds ? it : null } + ] + } + + withName: 'NFCORE_RNASEQ:BAM_SORT_STATS_SAMTOOLS:BAM_STATS_SAMTOOLS:.*' { + ext.prefix = { "${meta.id}.transcriptome.sorted.bam" } + publishDir = [ + path: { params.save_align_intermeds || params.save_umi_intermeds ? "${params.outdir}/${params.aligner}/samtools_stats" : params.outdir }, + mode: params.publish_dir_mode, + pattern: '*.{stats,flagstat,idxstats}', + saveAs: { params.save_align_intermeds || params.save_umi_intermeds ? it : null } + ] + } - withName: 'NFCORE_RNASEQ:SAMTOOLS_SORT' { - ext.args = '-n' - ext.prefix = { "${meta.id}.umi_dedup.transcriptome" } - publishDir = [ - path: { params.save_align_intermeds || params.save_umi_intermeds ? "${params.outdir}/${params.aligner}" : params.outdir }, - mode: params.publish_dir_mode, - pattern: '*.bam', - saveAs: { params.save_align_intermeds || params.save_umi_intermeds ? it : null } - ] + withName: '.*:BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS_TRANSCRIPTOME:UMITOOLS_DEDUP' { + ext.args = { [ + meta.single_end ? '' : '--unpaired-reads=discard --chimeric-pairs=discard', + params.umitools_grouping_method ? "--method='${params.umitools_grouping_method}'" : '', + params.umitools_umi_separator ? "--umi-separator='${params.umitools_umi_separator}'" : '' + ].join(' ').trim() } + ext.prefix = { "${meta.id}.umi_dedup.transcriptome.sorted" } + publishDir = [ + [ + path: { "${params.outdir}/${params.aligner}/umitools" }, + mode: params.publish_dir_mode, + pattern: '*.tsv' + ], + [ + path: { params.save_align_intermeds || params.save_umi_intermeds ? "${params.outdir}/${params.aligner}" : params.outdir }, + mode: params.publish_dir_mode, + pattern: '*.bam', + saveAs: { params.save_align_intermeds || params.save_umi_intermeds ? it : null } + ] + ] + } + + withName: '.*:BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS_TRANSCRIPTOME:SAMTOOLS_INDEX' { + publishDir = [ + path: { params.save_align_intermeds || params.save_umi_intermeds ? "${params.outdir}/${params.aligner}" : params.outdir }, + mode: params.publish_dir_mode, + pattern: '*.bai', + saveAs: { params.save_align_intermeds || params.save_umi_intermeds ? it : null } + ] + } + + withName: '.*:BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS_TRANSCRIPTOME:BAM_STATS_SAMTOOLS:.*' { + ext.prefix = { "${meta.id}.umi_dedup.transcriptome.sorted.bam" } + publishDir = [ + path: { "${params.outdir}/${params.aligner}/samtools_stats" }, + mode: params.publish_dir_mode, + pattern: '*.{stats,flagstat,idxstats}' + ] + } + } } +} - withName: 'NFCORE_RNASEQ:UMITOOLS_PREPAREFORSALMON' { - ext.prefix = { "${meta.id}.umi_dedup.transcriptome.filtered" } - publishDir = [ - [ - path: { "${params.outdir}/${params.aligner}/umitools/log" }, - mode: params.publish_dir_mode, - pattern: '*.log' - ], - [ - path: { params.save_align_intermeds || params.save_umi_intermeds ? "${params.outdir}/${params.aligner}" : params.outdir }, +// +// General alignment options +// + +if (!params.skip_alignment) { + process { + withName: 'NFCORE_RNASEQ:.*:BAM_SORT_STATS_SAMTOOLS:BAM_STATS_SAMTOOLS:.*' { + ext.prefix = { "${meta.id}.sorted.bam" } + publishDir = [ + path: { "${params.outdir}/${params.aligner}/samtools_stats" }, mode: params.publish_dir_mode, - pattern: '*.bam', - saveAs: { params.save_align_intermeds || params.save_umi_intermeds ? it : null } + pattern: "*.{stats,flagstat,idxstats}" ] - ] - } + } - withName: '.*:BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS_GENOME:UMITOOLS_DEDUP' { - ext.args = { [ - meta.single_end ? '' : '--unpaired-reads=discard --chimeric-pairs=discard', - params.umitools_grouping_method ? "--method='${params.umitools_grouping_method}'" : '', - params.umitools_umi_separator ? "--umi-separator='${params.umitools_umi_separator}'" : '' - ].join(' ').trim() } - ext.prefix = { "${meta.id}.umi_dedup.sorted" } - publishDir = [ - [ - path: { "${params.outdir}/${params.aligner}/umitools" }, + withName: 'NFCORE_RNASEQ:.*:BAM_SORT_STATS_SAMTOOLS:SAMTOOLS_SORT' { + ext.prefix = { "${meta.id}.sorted" } + publishDir = [ + path: { ( ['star_salmon','hisat2'].contains(params.aligner) && + ( params.save_align_intermeds || ( !params.with_umi && params.skip_markduplicates ) ) + ) || params.save_align_intermeds || params.skip_markduplicates ? "${params.outdir}/${params.aligner}" : params.outdir }, mode: params.publish_dir_mode, - pattern: '*.tsv' - ], - [ - path: { params.save_align_intermeds || params.with_umi || params.save_umi_intermeds ? "${params.outdir}/${params.aligner}" : params.outdir }, - mode: params.publish_dir_mode, - pattern: '*.bam', - saveAs: { params.save_align_intermeds || params.with_umi || params.save_umi_intermeds ? it : null } + pattern: "*.bam", + saveAs: { ( ['star_salmon','hisat2'].contains(params.aligner) && + ( params.save_align_intermeds || ( !params.with_umi && params.skip_markduplicates ) ) + ) || params.save_align_intermeds || params.skip_markduplicates ? it : null } ] - ] - } - - withName: '.*:BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS_GENOME:SAMTOOLS_INDEX' { - ext.args = { params.bam_csi_index ? '-c' : '' } - ext.prefix = { "${meta.id}.umi_dedup.sorted" } - publishDir = [ - path: { params.save_align_intermeds || params.with_umi || params.save_umi_intermeds ? "${params.outdir}/${params.aligner}" : params.outdir }, - mode: params.publish_dir_mode, - pattern: '*.{bai,csi}', - saveAs: { params.save_align_intermeds || params.with_umi || params.save_umi_intermeds ? it : null } - ] - } - - withName: '.*:BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS_GENOME:BAM_STATS_SAMTOOLS:.*' { - ext.prefix = { "${meta.id}.umi_dedup.sorted.bam" } - publishDir = [ - path: { "${params.outdir}/${params.aligner}/samtools_stats" }, - mode: params.publish_dir_mode, - pattern: '*.{stats,flagstat,idxstats}' - ] - } + } - withName: '.*:BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS_TRANSCRIPTOME:UMITOOLS_DEDUP' { - ext.args = { [ - meta.single_end ? '' : '--unpaired-reads=discard --chimeric-pairs=discard', - params.umitools_grouping_method ? "--method='${params.umitools_grouping_method}'" : '', - params.umitools_umi_separator ? "--umi-separator='${params.umitools_umi_separator}'" : '' - ].join(' ').trim() } - ext.prefix = { "${meta.id}.umi_dedup.transcriptome.sorted" } - publishDir = [ - [ - path: { "${params.outdir}/${params.aligner}/umitools" }, + withName: 'NFCORE_RNASEQ:.*:BAM_SORT_STATS_SAMTOOLS:SAMTOOLS_INDEX' { + ext.args = { params.bam_csi_index ? '-c' : '' } + publishDir = [ + path: { ( ['star_salmon','hisat2'].contains(params.aligner) && + ( params.save_align_intermeds || ( !params.with_umi && params.skip_markduplicates ) ) + ) || params.save_align_intermeds || params.skip_markduplicates ? "${params.outdir}/${params.aligner}" : params.outdir }, mode: params.publish_dir_mode, - pattern: '*.tsv' - ], - [ - path: { params.save_align_intermeds || params.save_umi_intermeds ? "${params.outdir}/${params.aligner}" : params.outdir }, - mode: params.publish_dir_mode, - pattern: '*.bam', - saveAs: { params.save_align_intermeds || params.save_umi_intermeds ? it : null } + pattern: "*.{bai,csi}", + saveAs: { ( ['star_salmon','hisat2'].contains(params.aligner) && + ( params.save_align_intermeds || ( !params.with_umi && params.skip_markduplicates ) ) + ) || params.save_align_intermeds || params.skip_markduplicates ? it : null } ] - ] + } } - withName: '.*:BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS_TRANSCRIPTOME:SAMTOOLS_INDEX' { - publishDir = [ - path: { params.save_align_intermeds || params.save_umi_intermeds ? "${params.outdir}/${params.aligner}" : params.outdir }, - mode: params.publish_dir_mode, - pattern: '*.bai', - saveAs: { params.save_align_intermeds || params.save_umi_intermeds ? it : null } - ] - } + if (params.with_umi && ['star_salmon','hisat2'].contains(params.aligner)) { + process { + withName: '.*:BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS_GENOME:UMITOOLS_DEDUP' { + ext.args = { [ + meta.single_end ? '' : '--unpaired-reads=discard --chimeric-pairs=discard', + params.umitools_grouping_method ? "--method='${params.umitools_grouping_method}'" : '', + params.umitools_umi_separator ? "--umi-separator='${params.umitools_umi_separator}'" : '' + ].join(' ').trim() } + ext.prefix = { "${meta.id}.umi_dedup.sorted" } + publishDir = [ + [ + path: { "${params.outdir}/${params.aligner}/umitools" }, + mode: params.publish_dir_mode, + pattern: '*.tsv' + ], + [ + path: { params.save_align_intermeds || params.with_umi || params.save_umi_intermeds ? "${params.outdir}/${params.aligner}" : params.outdir }, + mode: params.publish_dir_mode, + pattern: '*.bam', + saveAs: { params.save_align_intermeds || params.with_umi || params.save_umi_intermeds ? it : null } + ] + ] + } - withName: '.*:BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS_TRANSCRIPTOME:BAM_STATS_SAMTOOLS:.*' { - ext.prefix = { "${meta.id}.umi_dedup.transcriptome.sorted.bam" } - publishDir = [ - path: { "${params.outdir}/${params.aligner}/samtools_stats" }, - mode: params.publish_dir_mode, - pattern: '*.{stats,flagstat,idxstats}' - ] - } - - withName: '.*:BEDGRAPH_BEDCLIP_BEDGRAPHTOBIGWIG_FORWARD:UCSC_BEDCLIP' { - ext.prefix = { "${meta.id}.clip.forward" } - publishDir = [ - enabled: false - ] - } + withName: '.*:BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS_GENOME:SAMTOOLS_INDEX' { + ext.args = { params.bam_csi_index ? '-c' : '' } + ext.prefix = { "${meta.id}.umi_dedup.sorted" } + publishDir = [ + path: { params.save_align_intermeds || params.with_umi || params.save_umi_intermeds ? "${params.outdir}/${params.aligner}" : params.outdir }, + mode: params.publish_dir_mode, + pattern: '*.{bai,csi}', + saveAs: { params.save_align_intermeds || params.with_umi || params.save_umi_intermeds ? it : null } + ] + } - withName: '.*:BEDGRAPH_BEDCLIP_BEDGRAPHTOBIGWIG_FORWARD:UCSC_BEDGRAPHTOBIGWIG' { - ext.prefix = { "${meta.id}.forward" } - publishDir = [ - path: { "${params.outdir}/${params.aligner}/bigwig" }, - mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } - ] + withName: '.*:BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS_GENOME:BAM_STATS_SAMTOOLS:.*' { + ext.prefix = { "${meta.id}.umi_dedup.sorted.bam" } + publishDir = [ + path: { "${params.outdir}/${params.aligner}/samtools_stats" }, + mode: params.publish_dir_mode, + pattern: '*.{stats,flagstat,idxstats}' + ] + } + } } +} - withName: '.*:BEDGRAPH_BEDCLIP_BEDGRAPHTOBIGWIG_REVERSE:UCSC_BEDCLIP' { - ext.prefix = { "${meta.id}.clip.reverse" } - publishDir = [ - enabled: false - ] - } +// +// bigWig coverage options +// - withName: '.*:BEDGRAPH_BEDCLIP_BEDGRAPHTOBIGWIG_REVERSE:UCSC_BEDGRAPHTOBIGWIG' { - ext.prefix = { "${meta.id}.reverse" } - publishDir = [ - path: { "${params.outdir}/${params.aligner}/bigwig" }, - mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } - ] - } +if (!params.skip_alignment && !params.skip_bigwig) { + process { + withName: '.*:BEDGRAPH_BEDCLIP_BEDGRAPHTOBIGWIG_FORWARD:UCSC_BEDCLIP' { + ext.prefix = { "${meta.id}.clip.forward" } + publishDir = [ + enabled: false + ] + } - withName: '.*:QUANTIFY_STAR_SALMON:SALMON_QUANT' { - ext.args = { params.extra_salmon_quant_args ?: '' } - publishDir = [ - path: { "${params.outdir}/${params.aligner}" }, - mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') || filename.endsWith('_meta_info.json') ? null : filename } - ] - } + withName: '.*:BEDGRAPH_BEDCLIP_BEDGRAPHTOBIGWIG_FORWARD:UCSC_BEDGRAPHTOBIGWIG' { + ext.prefix = { "${meta.id}.forward" } + publishDir = [ + path: { "${params.outdir}/${params.aligner}/bigwig" }, + mode: params.publish_dir_mode, + saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + ] + } - withName: '.*:QUANTIFY_STAR_SALMON:TX2GENE' { - publishDir = [ - path: { "${params.outdir}/${params.aligner}" }, - mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } - ] - } + withName: '.*:BEDGRAPH_BEDCLIP_BEDGRAPHTOBIGWIG_REVERSE:UCSC_BEDCLIP' { + ext.prefix = { "${meta.id}.clip.reverse" } + publishDir = [ + enabled: false + ] + } - withName: '.*:QUANTIFY_STAR_SALMON:TXIMPORT' { - ext.prefix = { "${quant_type}.merged" } - publishDir = [ - path: { "${params.outdir}/${params.aligner}" }, - mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } - ] + withName: '.*:BEDGRAPH_BEDCLIP_BEDGRAPHTOBIGWIG_REVERSE:UCSC_BEDGRAPHTOBIGWIG' { + ext.prefix = { "${meta.id}.reverse" } + publishDir = [ + path: { "${params.outdir}/${params.aligner}/bigwig" }, + mode: params.publish_dir_mode, + saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + ] + } } +} - withName: '.*:QUANTIFY_STAR_SALMON:SE_.*' { - publishDir = [ - path: { "${params.outdir}/${params.aligner}" }, - mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } - ] - } +// +// DESeq2 QC options +// - withName: 'DESEQ2_QC_STAR_SALMON' { - ext.args = { [ - "--id_col 1", - "--sample_suffix ''", - "--count_col 3", - params.deseq2_vst ? '--vst TRUE' : '' - ].join(' ').trim() } - ext.args2 = 'star_salmon' - publishDir = [ - path: { "${params.outdir}/${params.aligner}/deseq2_qc" }, - mode: params.publish_dir_mode, - pattern: "*{RData,pca.vals.txt,plots.pdf,sample.dists.txt,size_factors,log}" - ] +if (!params.skip_alignment && params.aligner == 'star_salmon') { + if (!params.skip_qc & !params.skip_deseq2_qc) { + process { + withName: 'DESEQ2_QC_STAR_SALMON' { + ext.args = { [ + "--id_col 1", + "--sample_suffix ''", + "--count_col 3", + params.deseq2_vst ? '--vst TRUE' : '' + ].join(' ').trim() } + ext.args2 = 'star_salmon' + publishDir = [ + path: { "${params.outdir}/${params.aligner}/deseq2_qc" }, + mode: params.publish_dir_mode, + pattern: "*{RData,pca.vals.txt,plots.pdf,sample.dists.txt,size_factors,log}" + ] + } + } } +} - withName: 'DESEQ2_QC_RSEM' { - ext.args = { [ - "--id_col 1", - "--sample_suffix ''", - "--count_col 3", - params.deseq2_vst ? '--vst TRUE' : '' - ].join(' ').trim() } - ext.args2 = 'star_rsem' - publishDir = [ - path: { "${params.outdir}/${params.aligner}/deseq2_qc" }, - mode: params.publish_dir_mode, - pattern: "*{RData,pca.vals.txt,plots.pdf,sample.dists.txt,size_factors,log}" - ] +if (!params.skip_alignment && params.aligner == 'star_rsem') { + if (!params.skip_qc & !params.skip_deseq2_qc) { + process { + withName: 'DESEQ2_QC_RSEM' { + ext.args = { [ + "--id_col 1", + "--sample_suffix ''", + "--count_col 3", + params.deseq2_vst ? '--vst TRUE' : '' + ].join(' ').trim() } + ext.args2 = 'star_rsem' + publishDir = [ + path: { "${params.outdir}/${params.aligner}/deseq2_qc" }, + mode: params.publish_dir_mode, + pattern: "*{RData,pca.vals.txt,plots.pdf,sample.dists.txt,size_factors,log}" + ] + } + } } +} - withName: 'DESEQ2_QC_PSEUDO' { - ext.args = { [ - "--id_col 1", - "--sample_suffix ''", - "--count_col 3", - params.deseq2_vst ? '--vst TRUE' : '' - ].join(' ').trim() } - ext.args2 = { params.pseudo_aligner } - publishDir = [ - path: { "${params.outdir}/${params.pseudo_aligner}/deseq2_qc" }, - mode: params.publish_dir_mode, - pattern: "*{RData,pca.vals.txt,plots.pdf,sample.dists.txt,size_factors,log}" - ] +if (!params.skip_pseudo_alignment && params.pseudo_aligner) { + if (!params.skip_qc & !params.skip_deseq2_qc) { + process { + withName: 'DESEQ2_QC_PSEUDO' { + ext.args = { [ + "--id_col 1", + "--sample_suffix ''", + "--count_col 3", + params.deseq2_vst ? '--vst TRUE' : '' + ].join(' ').trim() } + ext.args2 = { params.pseudo_aligner } + publishDir = [ + path: { "${params.outdir}/${params.pseudo_aligner}/deseq2_qc" }, + mode: params.publish_dir_mode, + pattern: "*{RData,pca.vals.txt,plots.pdf,sample.dists.txt,size_factors,log}" + ] + } + } } -} \ No newline at end of file +} From 9cddbf3b0b295a610985b4c994b492888ea4fb06 Mon Sep 17 00:00:00 2001 From: Harshil Patel Date: Sun, 4 Feb 2024 10:38:31 +0000 Subject: [PATCH 022/634] Delete modules.config --- conf/modules.config | 1159 ------------------------------------------- 1 file changed, 1159 deletions(-) delete mode 100644 conf/modules.config diff --git a/conf/modules.config b/conf/modules.config deleted file mode 100644 index e6210ea0e..000000000 --- a/conf/modules.config +++ /dev/null @@ -1,1159 +0,0 @@ -/* -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Config file for defining DSL2 per module options and publishing paths -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Available keys to override module options: - ext.args = Additional arguments appended to command in module. - ext.args2 = Second set of arguments appended to command in module (multi-tool modules). - ext.args3 = Third set of arguments appended to command in module (multi-tool modules). - ext.prefix = File name prefix for output files. ----------------------------------------------------------------------------------------- -*/ - -def rseqc_modules = params.rseqc_modules ? params.rseqc_modules.split(',').collect{ it.trim().toLowerCase() } : [] - -// -// General configuration options -// - -process { - publishDir = [ - path: { "${params.outdir}/${task.process.tokenize(':')[-1].tokenize('_')[0].toLowerCase()}" }, - mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } - ] -} - -// -// Genome preparation options -// - -process { - withName: 'GUNZIP_.*|MAKE_TRANSCRIPTS_FASTA' { - publishDir = [ - path: { params.save_reference ? "${params.outdir}/genome" : params.outdir }, - mode: params.publish_dir_mode, - saveAs: { filename -> (filename != 'versions.yml' && params.save_reference) ? filename : null } - ] - } - - withName: 'UNTAR_.*' { - ext.args2 = '--no-same-owner' - } - - withName: 'UNTAR_.*|STAR_GENOMEGENERATE|STAR_GENOMEGENERATE_IGENOMES|HISAT2_BUILD' { - publishDir = [ - path: { params.save_reference ? "${params.outdir}/genome/index" : params.outdir }, - mode: params.publish_dir_mode, - saveAs: { filename -> (filename != 'versions.yml' && params.save_reference) ? filename : null } - ] - } - - withName: 'GFFREAD' { - ext.args = '--keep-exon-attrs -F -T' - publishDir = [ - path: { params.save_reference ? "${params.outdir}/genome" : params.outdir }, - mode: params.publish_dir_mode, - saveAs: { filename -> (filename != 'versions.yml' && params.save_reference) ? filename : null } - ] - } - - withName: 'HISAT2_EXTRACTSPLICESITES' { - publishDir = [ - path: { params.save_reference ? "${params.outdir}/genome/index" : params.outdir }, - mode: params.publish_dir_mode, - saveAs: { filename -> (filename != 'versions.yml' && params.save_reference) ? filename : null } - ] - } - - withName: 'SALMON_INDEX' { - ext.args = { [ - params.gencode ? '--gencode' : '', - params.pseudo_aligner_kmer_size ? "-k ${params.pseudo_aligner_kmer_size}": '' - ].join(' ').trim() } - publishDir = [ - path: { params.save_reference ? "${params.outdir}/genome/index" : params.outdir }, - mode: params.publish_dir_mode, - saveAs: { filename -> (filename != 'versions.yml' && params.save_reference) ? filename : null } - ] - } - - withName: 'KALLISTO_INDEX' { - ext.args = params.pseudo_aligner_kmer_size ? "-k ${params.pseudo_aligner_kmer_size}" : '' - publishDir = [ - path: { params.save_reference ? "${params.outdir}/genome/index" : params.outdir }, - mode: params.publish_dir_mode, - saveAs: { filename -> (filename != 'versions.yml' && params.save_reference) ? filename : null } - ] - } - - withName: 'RSEM_PREPAREREFERENCE_GENOME' { - ext.args = '--star' - publishDir = [ - path: { params.save_reference ? "${params.outdir}/genome/index" : params.outdir }, - mode: params.publish_dir_mode, - saveAs: { filename -> (filename != 'versions.yml' && params.save_reference) ? filename : null } - ] - } - - withName: 'GTF2BED' { - publishDir = [ - path: { params.save_reference ? "${params.outdir}/genome" : params.outdir }, - mode: params.publish_dir_mode, - saveAs: { filename -> (filename != 'versions.yml' && params.save_reference) ? filename : null } - ] - } - - withName: 'CAT_ADDITIONAL_FASTA|PREPROCESS_TRANSCRIPTS_FASTA_GENCODE' { - publishDir = [ - path: { params.save_reference ? "${params.outdir}/genome" : params.outdir }, - mode: params.publish_dir_mode, - saveAs: { filename -> (filename != 'versions.yml' && params.save_reference) ? filename : null } - ] - } - - withName: 'GTF_FILTER' { - ext.args = { params.skip_gtf_transcript_filter ?: '--skip_transcript_id_check' } - publishDir = [ - path: { params.save_reference ? "${params.outdir}/genome" : params.outdir }, - mode: params.publish_dir_mode, - saveAs: { filename -> (filename != 'versions.yml' && params.save_reference) ? filename : null } - ] - } - - withName: 'CUSTOM_GETCHROMSIZES' { - publishDir = [ - path: { params.save_reference ? "${params.outdir}/genome" : params.outdir }, - mode: params.publish_dir_mode, - saveAs: { filename -> (filename != 'versions.yml' && params.save_reference) ? filename : null } - ] - } - - withName: 'CAT_FASTQ' { - publishDir = [ - path: { params.save_merged_fastq ? "${params.outdir}/fastq" : params.outdir }, - mode: params.publish_dir_mode, - saveAs: { filename -> (filename.endsWith('.fastq.gz') && params.save_merged_fastq) ? filename : null } - ] - } -} - -if (!params.skip_bbsplit && params.bbsplit_fasta_list) { - process { - withName: 'PREPARE_GENOME:BBMAP_BBSPLIT' { - ext.args = 'build=1' - publishDir = [ - path: { params.save_reference ? "${params.outdir}/genome/index" : params.outdir }, - mode: params.publish_dir_mode, - saveAs: { filename -> (filename != 'versions.yml' && params.save_reference) ? filename : null } - ] - } - } -} - -// -// Read subsampling and strand inferring options -// - -process { - withName: 'FQ_SUBSAMPLE' { - ext.args = '--record-count 1000000 --seed 1' - ext.prefix = { "${meta.id}.subsampled" } - publishDir = [ - enabled: false - ] - } - - withName: '.*:FASTQ_SUBSAMPLE_FQ_SALMON:SALMON_QUANT' { - ext.args = '--skipQuant' - publishDir = [ - enabled: false - ] - } -} - -// -// Read QC and trimming options -// - -if (!(params.skip_fastqc || params.skip_qc)) { - if (params.trimmer == 'trimgalore') { - process { - withName: '.*:FASTQ_FASTQC_UMITOOLS_TRIMGALORE:FASTQC' { - ext.args = '--quiet' - } - } - } - - if (params.trimmer == 'fastp') { - process { - withName: '.*:FASTQ_FASTQC_UMITOOLS_FASTP:FASTQC_RAW' { - ext.args = '--quiet' - } - - withName: '.*:FASTQ_FASTQC_UMITOOLS_FASTP:FASTQC_TRIM' { - ext.args = '--quiet' - publishDir = [ - path: { "${params.outdir}/${params.trimmer}/fastqc" }, - mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } - ] - } - } - } -} - -if (!params.skip_trimming) { - if (params.trimmer == 'trimgalore') { - process { - withName: '.*:FASTQ_FASTQC_UMITOOLS_TRIMGALORE:TRIMGALORE' { - ext.args = { - [ - "--fastqc_args '-t ${task.cpus}'", - params.extra_trimgalore_args ? params.extra_trimgalore_args.split("\\s(?=--)") : '' - ].flatten().unique(false).join(' ').trim() - } - publishDir = [ - [ - path: { "${params.outdir}/${params.trimmer}/fastqc" }, - mode: params.publish_dir_mode, - pattern: "*.{html,zip}" - ], - [ - path: { params.save_trimmed ? "${params.outdir}/${params.trimmer}" : params.outdir }, - mode: params.publish_dir_mode, - pattern: "*.fq.gz", - saveAs: { params.save_trimmed ? it : null } - ], - [ - path: { "${params.outdir}/${params.trimmer}" }, - mode: params.publish_dir_mode, - pattern: "*.txt" - ] - ] - } - } - } - - if (params.trimmer == 'fastp') { - process { - withName: '.*:FASTQ_FASTQC_UMITOOLS_FASTP:FASTP' { - ext.args = { params.extra_fastp_args ?: '' } - publishDir = [ - [ - path: { "${params.outdir}/${params.trimmer}" }, - mode: params.publish_dir_mode, - pattern: "*.{json,html}" - ], - [ - path: { "${params.outdir}/${params.trimmer}/log" }, - mode: params.publish_dir_mode, - pattern: "*.log" - ], - [ - path: { params.save_trimmed ? "${params.outdir}/${params.trimmer}" : params.outdir }, - mode: params.publish_dir_mode, - pattern: "*.fastq.gz", - saveAs: { params.save_trimmed ? it : null } - ] - ] - } - } - } -} - -if (params.with_umi && !params.skip_umi_extract) { - process { - withName: 'UMITOOLS_EXTRACT' { - ext.args = { [ - params.umitools_extract_method ? "--extract-method=${params.umitools_extract_method}" : '', - params.umitools_bc_pattern ? "--bc-pattern='${params.umitools_bc_pattern}'" : '', - params.umitools_bc_pattern2 ? "--bc-pattern2='${params.umitools_bc_pattern2}'" : '', - params.umitools_umi_separator ? "--umi-separator='${params.umitools_umi_separator}'" : '' - ].join(' ').trim() } - publishDir = [ - [ - path: { "${params.outdir}/umitools" }, - mode: params.publish_dir_mode, - pattern: "*.log" - ], - [ - path: { params.save_umi_intermeds ? "${params.outdir}/umitools" : params.outdir }, - mode: params.publish_dir_mode, - pattern: "*.fastq.gz", - saveAs: { params.save_umi_intermeds ? it : null } - ] - ] - } - } -} - -// -// Contaminant removal options -// - -if (!params.skip_bbsplit) { - process { - withName: 'BBMAP_BBSPLIT' { - ext.args = 'build=1 ambiguous2=all maxindel=150000' - publishDir = [ - [ - path: { "${params.outdir}/bbsplit" }, - mode: params.publish_dir_mode, - pattern: '*.txt' - ], - [ - path: { params.save_bbsplit_reads ? "${params.outdir}/bbsplit" : params.outdir }, - mode: params.publish_dir_mode, - pattern: '*.fastq.gz', - saveAs: { params.save_bbsplit_reads ? it : null } - ] - ] - } - } -} - -if (params.remove_ribo_rna) { - process { - withName: 'SORTMERNA' { - ext.args = '--num_alignments 1 -v' - publishDir = [ - [ - path: { "${params.outdir}/sortmerna" }, - mode: params.publish_dir_mode, - pattern: "*.log" - ], - [ - path: { params.save_non_ribo_reads ? "${params.outdir}/sortmerna" : params.outdir }, - mode: params.publish_dir_mode, - pattern: "*.fastq.gz", - saveAs: { params.save_non_ribo_reads ? it : null } - ] - ] - } - } -} - -// -// General alignment options -// - -if (!params.skip_alignment) { - process { - withName: 'NFCORE_RNASEQ:.*:BAM_SORT_STATS_SAMTOOLS:BAM_STATS_SAMTOOLS:.*' { - ext.prefix = { "${meta.id}.sorted.bam" } - publishDir = [ - path: { "${params.outdir}/${params.aligner}/samtools_stats" }, - mode: params.publish_dir_mode, - pattern: "*.{stats,flagstat,idxstats}" - ] - } - - withName: 'NFCORE_RNASEQ:.*:BAM_SORT_STATS_SAMTOOLS:SAMTOOLS_SORT' { - ext.prefix = { "${meta.id}.sorted" } - publishDir = [ - path: { ( ['star_salmon','hisat2'].contains(params.aligner) && - ( params.save_align_intermeds || ( !params.with_umi && params.skip_markduplicates ) ) - ) || params.save_align_intermeds || params.skip_markduplicates ? "${params.outdir}/${params.aligner}" : params.outdir }, - mode: params.publish_dir_mode, - pattern: "*.bam", - saveAs: { ( ['star_salmon','hisat2'].contains(params.aligner) && - ( params.save_align_intermeds || ( !params.with_umi && params.skip_markduplicates ) ) - ) || params.save_align_intermeds || params.skip_markduplicates ? it : null } - ] - } - - withName: 'NFCORE_RNASEQ:.*:BAM_SORT_STATS_SAMTOOLS:SAMTOOLS_INDEX' { - ext.args = { params.bam_csi_index ? '-c' : '' } - publishDir = [ - path: { ( ['star_salmon','hisat2'].contains(params.aligner) && - ( params.save_align_intermeds || ( !params.with_umi && params.skip_markduplicates ) ) - ) || params.save_align_intermeds || params.skip_markduplicates ? "${params.outdir}/${params.aligner}" : params.outdir }, - mode: params.publish_dir_mode, - pattern: "*.{bai,csi}", - saveAs: { ( ['star_salmon','hisat2'].contains(params.aligner) && - ( params.save_align_intermeds || ( !params.with_umi && params.skip_markduplicates ) ) - ) || params.save_align_intermeds || params.skip_markduplicates ? it : null } - ] - } - } - - if (!params.skip_markduplicates && !params.with_umi) { - process { - withName: '.*:BAM_MARKDUPLICATES_PICARD:PICARD_MARKDUPLICATES' { - ext.args = '--ASSUME_SORTED true --REMOVE_DUPLICATES false --VALIDATION_STRINGENCY LENIENT --TMP_DIR tmp' - ext.prefix = { "${meta.id}.markdup.sorted" } - publishDir = [ - [ - path: { "${params.outdir}/${params.aligner}/picard_metrics" }, - mode: params.publish_dir_mode, - pattern: '*metrics.txt' - ], - [ - path: { "${params.outdir}/${params.aligner}" }, - mode: params.publish_dir_mode, - pattern: '*.bam' - ] - ] - } - - withName: '.*:BAM_MARKDUPLICATES_PICARD:SAMTOOLS_INDEX' { - ext.args = { params.bam_csi_index ? '-c' : '' } - ext.prefix = { "${meta.id}.markdup.sorted" } - publishDir = [ - path: { "${params.outdir}/${params.aligner}" }, - mode: params.publish_dir_mode, - pattern: '*.{bai,csi}' - ] - } - - withName: '.*:BAM_MARKDUPLICATES_PICARD:BAM_STATS_SAMTOOLS:.*' { - ext.prefix = { "${meta.id}.markdup.sorted.bam" } - publishDir = [ - path: { "${params.outdir}/${params.aligner}/samtools_stats" }, - mode: params.publish_dir_mode, - pattern: '*.{stats,flagstat,idxstats}' - ] - } - } - } - - if (params.with_umi && ['star_salmon','hisat2'].contains(params.aligner)) { - process { - withName: '.*:BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS_GENOME:UMITOOLS_DEDUP' { - ext.args = { [ - meta.single_end ? '' : '--unpaired-reads=discard --chimeric-pairs=discard', - params.umitools_grouping_method ? "--method='${params.umitools_grouping_method}'" : '', - params.umitools_umi_separator ? "--umi-separator='${params.umitools_umi_separator}'" : '' - ].join(' ').trim() } - ext.prefix = { "${meta.id}.umi_dedup.sorted" } - publishDir = [ - [ - path: { "${params.outdir}/${params.aligner}/umitools" }, - mode: params.publish_dir_mode, - pattern: '*.tsv' - ], - [ - path: { params.save_align_intermeds || params.with_umi || params.save_umi_intermeds ? "${params.outdir}/${params.aligner}" : params.outdir }, - mode: params.publish_dir_mode, - pattern: '*.bam', - saveAs: { params.save_align_intermeds || params.with_umi || params.save_umi_intermeds ? it : null } - ] - ] - } - - withName: '.*:BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS_GENOME:SAMTOOLS_INDEX' { - ext.args = { params.bam_csi_index ? '-c' : '' } - ext.prefix = { "${meta.id}.umi_dedup.sorted" } - publishDir = [ - path: { params.save_align_intermeds || params.with_umi || params.save_umi_intermeds ? "${params.outdir}/${params.aligner}" : params.outdir }, - mode: params.publish_dir_mode, - pattern: '*.{bai,csi}', - saveAs: { params.save_align_intermeds || params.with_umi || params.save_umi_intermeds ? it : null } - ] - } - - withName: '.*:BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS_GENOME:BAM_STATS_SAMTOOLS:.*' { - ext.prefix = { "${meta.id}.umi_dedup.sorted.bam" } - publishDir = [ - path: { "${params.outdir}/${params.aligner}/samtools_stats" }, - mode: params.publish_dir_mode, - pattern: '*.{stats,flagstat,idxstats}' - ] - } - } - } - - if (!params.skip_bigwig) { - process { - withName: 'BEDTOOLS_GENOMECOV' { - ext.args = '-split -du' - publishDir = [ - enabled: false - ] - } - - withName: '.*:BEDGRAPH_BEDCLIP_BEDGRAPHTOBIGWIG_FORWARD:UCSC_BEDCLIP' { - ext.prefix = { "${meta.id}.clip.forward" } - publishDir = [ - enabled: false - ] - } - - withName: '.*:BEDGRAPH_BEDCLIP_BEDGRAPHTOBIGWIG_FORWARD:UCSC_BEDGRAPHTOBIGWIG' { - ext.prefix = { "${meta.id}.forward" } - publishDir = [ - path: { "${params.outdir}/${params.aligner}/bigwig" }, - mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } - ] - } - - withName: '.*:BEDGRAPH_BEDCLIP_BEDGRAPHTOBIGWIG_REVERSE:UCSC_BEDCLIP' { - ext.prefix = { "${meta.id}.clip.reverse" } - publishDir = [ - enabled: false - ] - } - - withName: '.*:BEDGRAPH_BEDCLIP_BEDGRAPHTOBIGWIG_REVERSE:UCSC_BEDGRAPHTOBIGWIG' { - ext.prefix = { "${meta.id}.reverse" } - publishDir = [ - path: { "${params.outdir}/${params.aligner}/bigwig" }, - mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } - ] - } - } - } - - if (!params.skip_stringtie) { - process { - withName: 'STRINGTIE_STRINGTIE' { - ext.args = { [ - '-v', - params.stringtie_ignore_gtf ? '' : '-e' - ].join(' ').trim() } - publishDir = [ - path: { "${params.outdir}/${params.aligner}/stringtie" }, - mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } - ] - } - } - } -} - -// -// STAR Salmon alignment options -// - -if (!params.skip_alignment && params.aligner == 'star_salmon') { - process { - withName: '.*:ALIGN_STAR:STAR_ALIGN|.*:ALIGN_STAR:STAR_ALIGN_IGENOMES' { - ext.args = { [ - '--quantMode TranscriptomeSAM', - '--twopassMode Basic', - '--outSAMtype BAM Unsorted', - '--readFilesCommand zcat', - '--runRNGseed 0', - '--outFilterMultimapNmax 20', - '--alignSJDBoverhangMin 1', - '--outSAMattributes NH HI AS NM MD', - '--quantTranscriptomeBan Singleend', - '--outSAMstrandField intronMotif', - params.save_unaligned ? '--outReadsUnmapped Fastx' : '', - params.extra_star_align_args ? params.extra_star_align_args.split("\\s(?=--)") : '' - ].flatten().unique(false).join(' ').trim() } - publishDir = [ - [ - path: { "${params.outdir}/${params.aligner}/log" }, - mode: params.publish_dir_mode, - pattern: '*.{out,tab}' - ], - [ - path: { params.save_align_intermeds ? "${params.outdir}/${params.aligner}" : params.outdir }, - mode: params.publish_dir_mode, - pattern: '*.bam', - saveAs: { params.save_align_intermeds ? it : null } - ], - [ - path: { params.save_unaligned ? "${params.outdir}/${params.aligner}/unmapped" : params.outdir }, - mode: params.publish_dir_mode, - pattern: '*.fastq.gz', - saveAs: { params.save_unaligned ? it : null } - ] - ] - } - - withName: '.*:QUANTIFY_STAR_SALMON:SALMON_QUANT' { - ext.args = { params.extra_salmon_quant_args ?: '' } - publishDir = [ - path: { "${params.outdir}/${params.aligner}" }, - mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') || filename.endsWith('_meta_info.json') ? null : filename } - ] - } - - withName: '.*:QUANTIFY_STAR_SALMON:TX2GENE' { - publishDir = [ - path: { "${params.outdir}/${params.aligner}" }, - mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } - ] - } - - withName: '.*:QUANTIFY_STAR_SALMON:TXIMPORT' { - ext.prefix = { "${quant_type}.merged" } - publishDir = [ - path: { "${params.outdir}/${params.aligner}" }, - mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } - ] - } - - withName: '.*:QUANTIFY_STAR_SALMON:SE_.*' { - publishDir = [ - path: { "${params.outdir}/${params.aligner}" }, - mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } - ] - } - } - - if (params.with_umi) { - process { - withName: 'NFCORE_RNASEQ:SAMTOOLS_SORT' { - ext.args = '-n' - ext.prefix = { "${meta.id}.umi_dedup.transcriptome" } - publishDir = [ - path: { params.save_align_intermeds || params.save_umi_intermeds ? "${params.outdir}/${params.aligner}" : params.outdir }, - mode: params.publish_dir_mode, - pattern: '*.bam', - saveAs: { params.save_align_intermeds || params.save_umi_intermeds ? it : null } - ] - } - - withName: 'NFCORE_RNASEQ:UMITOOLS_PREPAREFORSALMON' { - ext.prefix = { "${meta.id}.umi_dedup.transcriptome.filtered" } - publishDir = [ - [ - path: { "${params.outdir}/${params.aligner}/umitools/log" }, - mode: params.publish_dir_mode, - pattern: '*.log' - ], - [ - path: { params.save_align_intermeds || params.save_umi_intermeds ? "${params.outdir}/${params.aligner}" : params.outdir }, - mode: params.publish_dir_mode, - pattern: '*.bam', - saveAs: { params.save_align_intermeds || params.save_umi_intermeds ? it : null } - ] - ] - } - - withName: 'NFCORE_RNASEQ:BAM_SORT_STATS_SAMTOOLS:SAMTOOLS_SORT' { - ext.prefix = { "${meta.id}.transcriptome.sorted" } - publishDir = [ - path: { params.save_align_intermeds || params.save_umi_intermeds ? "${params.outdir}/${params.aligner}" : params.outdir }, - mode: params.publish_dir_mode, - pattern: '*.bam', - saveAs: { params.save_align_intermeds || params.save_umi_intermeds ? it : null } - ] - } - - withName: 'NFCORE_RNASEQ:BAM_SORT_STATS_SAMTOOLS:SAMTOOLS_INDEX' { - publishDir = [ - path: { params.save_align_intermeds || params.save_umi_intermeds ? "${params.outdir}/${params.aligner}" : params.outdir }, - mode: params.publish_dir_mode, - pattern: '*.bai', - saveAs: { params.save_align_intermeds || params.save_umi_intermeds ? it : null } - ] - } - - withName: 'NFCORE_RNASEQ:BAM_SORT_STATS_SAMTOOLS:BAM_STATS_SAMTOOLS:.*' { - ext.prefix = { "${meta.id}.transcriptome.sorted.bam" } - publishDir = [ - path: { params.save_align_intermeds || params.save_umi_intermeds ? "${params.outdir}/${params.aligner}/samtools_stats" : params.outdir }, - mode: params.publish_dir_mode, - pattern: '*.{stats,flagstat,idxstats}', - saveAs: { params.save_align_intermeds || params.save_umi_intermeds ? it : null } - ] - } - - withName: '.*:BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS_TRANSCRIPTOME:UMITOOLS_DEDUP' { - ext.args = { [ - meta.single_end ? '' : '--unpaired-reads=discard --chimeric-pairs=discard', - params.umitools_grouping_method ? "--method='${params.umitools_grouping_method}'" : '', - params.umitools_umi_separator ? "--umi-separator='${params.umitools_umi_separator}'" : '' - ].join(' ').trim() } - ext.prefix = { "${meta.id}.umi_dedup.transcriptome.sorted" } - publishDir = [ - [ - path: { "${params.outdir}/${params.aligner}/umitools" }, - mode: params.publish_dir_mode, - pattern: '*.tsv' - ], - [ - path: { params.save_align_intermeds || params.save_umi_intermeds ? "${params.outdir}/${params.aligner}" : params.outdir }, - mode: params.publish_dir_mode, - pattern: '*.bam', - saveAs: { params.save_align_intermeds || params.save_umi_intermeds ? it : null } - ] - ] - } - - withName: '.*:BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS_TRANSCRIPTOME:SAMTOOLS_INDEX' { - publishDir = [ - path: { params.save_align_intermeds || params.save_umi_intermeds ? "${params.outdir}/${params.aligner}" : params.outdir }, - mode: params.publish_dir_mode, - pattern: '*.bai', - saveAs: { params.save_align_intermeds || params.save_umi_intermeds ? it : null } - ] - } - - withName: '.*:BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS_TRANSCRIPTOME:BAM_STATS_SAMTOOLS:.*' { - ext.prefix = { "${meta.id}.umi_dedup.transcriptome.sorted.bam" } - publishDir = [ - path: { "${params.outdir}/${params.aligner}/samtools_stats" }, - mode: params.publish_dir_mode, - pattern: '*.{stats,flagstat,idxstats}' - ] - } - } - } - - if (!params.skip_qc & !params.skip_deseq2_qc) { - process { - withName: 'DESEQ2_QC_STAR_SALMON' { - ext.args = { [ - "--id_col 1", - "--sample_suffix ''", - "--count_col 3", - params.deseq2_vst ? '--vst TRUE' : '' - ].join(' ').trim() } - ext.args2 = 'star_salmon' - publishDir = [ - path: { "${params.outdir}/${params.aligner}/deseq2_qc" }, - mode: params.publish_dir_mode, - pattern: "*{RData,pca.vals.txt,plots.pdf,sample.dists.txt,size_factors,log}" - ] - } - } - } -} - -// -// STAR RSEM alignment options -// - -if (!params.skip_alignment && params.aligner == 'star_rsem') { - process { - withName: '.*:QUANTIFY_RSEM:RSEM_CALCULATEEXPRESSION' { - ext.args = [ - '--star', - '--star-output-genome-bam', - '--star-gzipped-read-file', - '--estimate-rspd', - '--seed 1' - ].join(' ').trim() - publishDir = [ - [ - path: { "${params.outdir}/${params.aligner}" }, - mode: params.publish_dir_mode, - pattern: "*.{stat,results}" - ], - [ - path: { params.save_align_intermeds ? "${params.outdir}/${params.aligner}" : params.outdir }, - mode: params.publish_dir_mode, - pattern: "*.bam", - saveAs: { params.save_align_intermeds ? it : null } - ], - [ - path: { "${params.outdir}/${params.aligner}/log" }, - mode: params.publish_dir_mode, - pattern: "*.log" - ] - ] - } - - withName: '.*:QUANTIFY_RSEM:RSEM_MERGE_COUNTS' { - publishDir = [ - path: { "${params.outdir}/${params.aligner}" }, - mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } - ] - } - } - - if (!params.skip_qc & !params.skip_deseq2_qc) { - process { - withName: 'DESEQ2_QC_RSEM' { - ext.args = { [ - "--id_col 1", - "--sample_suffix ''", - "--count_col 3", - params.deseq2_vst ? '--vst TRUE' : '' - ].join(' ').trim() } - ext.args2 = 'star_rsem' - publishDir = [ - path: { "${params.outdir}/${params.aligner}/deseq2_qc" }, - mode: params.publish_dir_mode, - pattern: "*{RData,pca.vals.txt,plots.pdf,sample.dists.txt,size_factors,log}" - ] - } - } - } -} - -// -// HISAT2 alignment options -// - -if (!params.skip_alignment && params.aligner == 'hisat2') { - process { - withName: '.*:FASTQ_ALIGN_HISAT2:HISAT2_ALIGN' { - ext.args = '--met-stderr --new-summary --dta' - publishDir = [ - [ - path: { "${params.outdir}/${params.aligner}/log" }, - mode: params.publish_dir_mode, - pattern: '*.log' - ], - [ - path: { params.save_align_intermeds ? "${params.outdir}/${params.aligner}" : params.outdir }, - mode: params.publish_dir_mode, - pattern: '*.bam', - saveAs: { params.save_align_intermeds ? it : null } - ], - [ - path: { params.save_unaligned ? "${params.outdir}/${params.aligner}/unmapped" : params.outdir }, - mode: params.publish_dir_mode, - pattern: '*.fastq.gz', - saveAs: { params.save_unaligned ? it : null } - ] - ] - } - } -} - -// -// Post-alignment QC options -// - -if (!params.skip_alignment && !params.skip_qc) { - if (!params.skip_preseq) { - process { - withName: 'PRESEQ_LCEXTRAP' { - ext.args = '-verbose -bam -seed 1 -seg_len 100000000' - publishDir = [ - [ - path: { "${params.outdir}/${params.aligner}/preseq" }, - mode: params.publish_dir_mode, - pattern: "*.txt" - ], - [ - path: { "${params.outdir}/${params.aligner}/preseq/log" }, - mode: params.publish_dir_mode, - pattern: "*.log" - ] - ] - } - } - } - - if (!params.skip_qualimap) { - process { - withName: 'QUALIMAP_RNASEQ' { - publishDir = [ - path: { "${params.outdir}/${params.aligner}/qualimap" }, - mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } - ] - } - } - } - - if (!params.skip_dupradar) { - process { - withName: 'DUPRADAR' { - publishDir = [ - [ - path: { "${params.outdir}/${params.aligner}/dupradar/scatter_plot" }, - mode: params.publish_dir_mode, - pattern: "*Dens.pdf" - ], - [ - path: { "${params.outdir}/${params.aligner}/dupradar/box_plot" }, - mode: params.publish_dir_mode, - pattern: "*Boxplot.pdf" - ], - [ - path: { "${params.outdir}/${params.aligner}/dupradar/histogram" }, - mode: params.publish_dir_mode, - pattern: "*Hist.pdf" - ], - [ - path: { "${params.outdir}/${params.aligner}/dupradar/gene_data" }, - mode: params.publish_dir_mode, - pattern: "*Matrix.txt" - ], - [ - path: { "${params.outdir}/${params.aligner}/dupradar/intercepts_slope" }, - mode: params.publish_dir_mode, - pattern: "*slope.txt" - ] - ] - } - } - } - - if (!params.skip_biotype_qc && params.featurecounts_group_type) { - process { - withName: 'SUBREAD_FEATURECOUNTS' { - ext.args = { [ - '-B -C', - params.gencode ? "-g gene_type" : "-g $params.featurecounts_group_type", - "-t $params.featurecounts_feature_type" - ].join(' ').trim() } - publishDir = [ - path: { "${params.outdir}/${params.aligner}/featurecounts" }, - mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } - ] - } - - withName: 'MULTIQC_CUSTOM_BIOTYPE' { - publishDir = [ - path: { "${params.outdir}/${params.aligner}/featurecounts" }, - mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } - ] - } - } - } - - if (!params.skip_rseqc && 'bam_stat' in rseqc_modules) { - process { - withName: '.*:BAM_RSEQC:RSEQC_BAMSTAT' { - publishDir = [ - path: { "${params.outdir}/${params.aligner}/rseqc/bam_stat" }, - mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } - ] - } - } - } - - if (!params.skip_rseqc && 'infer_experiment' in rseqc_modules) { - process { - withName: '.*:BAM_RSEQC:RSEQC_INFEREXPERIMENT' { - publishDir = [ - path: { "${params.outdir}/${params.aligner}/rseqc/infer_experiment" }, - mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } - ] - } - } - } - - if (!params.skip_rseqc && 'junction_annotation' in rseqc_modules) { - process { - withName: '.*:BAM_RSEQC:RSEQC_JUNCTIONANNOTATION' { - publishDir = [ - [ - path: { "${params.outdir}/${params.aligner}/rseqc/junction_annotation/pdf" }, - mode: params.publish_dir_mode, - pattern: '*.pdf' - ], - [ - path: { "${params.outdir}/${params.aligner}/rseqc/junction_annotation/bed" }, - mode: params.publish_dir_mode, - pattern: '*.bed' - ], - [ - path: { "${params.outdir}/${params.aligner}/rseqc/junction_annotation/xls" }, - mode: params.publish_dir_mode, - pattern: '*.xls' - ], - [ - path: { "${params.outdir}/${params.aligner}/rseqc/junction_annotation/log" }, - mode: params.publish_dir_mode, - pattern: '*.log' - ], - [ - path: { "${params.outdir}/${params.aligner}/rseqc/junction_annotation/rscript" }, - mode: params.publish_dir_mode, - pattern: '*.r' - ] - ] - } - } - } - - if (!params.skip_rseqc && 'junction_saturation' in rseqc_modules) { - process { - withName: '.*:BAM_RSEQC:RSEQC_JUNCTIONSATURATION' { - publishDir = [ - [ - path: { "${params.outdir}/${params.aligner}/rseqc/junction_saturation/pdf" }, - mode: params.publish_dir_mode, - pattern: '*.pdf' - ], - [ - path: { "${params.outdir}/${params.aligner}/rseqc/junction_saturation/rscript" }, - mode: params.publish_dir_mode, - pattern: '*.r' - ] - ] - } - } - } - - if (!params.skip_rseqc && 'read_duplication' in rseqc_modules) { - process { - withName: '.*:BAM_RSEQC:RSEQC_READDUPLICATION' { - publishDir = [ - [ - path: { "${params.outdir}/${params.aligner}/rseqc/read_duplication/pdf" }, - mode: params.publish_dir_mode, - pattern: '*.pdf' - ], - [ - path: { "${params.outdir}/${params.aligner}/rseqc/read_duplication/xls" }, - mode: params.publish_dir_mode, - pattern: '*.xls' - ], - [ - path: { "${params.outdir}/${params.aligner}/rseqc/read_duplication/rscript" }, - mode: params.publish_dir_mode, - pattern: '*.r' - ] - ] - } - } - } - - if (!params.skip_rseqc && 'read_distribution' in rseqc_modules && !params.bam_csi_index) { - process { - withName: '.*:BAM_RSEQC:RSEQC_READDISTRIBUTION' { - publishDir = [ - path: { "${params.outdir}/${params.aligner}/rseqc/read_distribution" }, - mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } - ] - } - } - } - - if (!params.skip_rseqc && 'inner_distance' in rseqc_modules && !params.bam_csi_index) { - process { - withName: '.*:BAM_RSEQC:RSEQC_INNERDISTANCE' { - publishDir = [ - [ - path: { "${params.outdir}/${params.aligner}/rseqc/inner_distance/txt" }, - mode: params.publish_dir_mode, - pattern: '*.txt', - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } - ], - [ - path: { "${params.outdir}/${params.aligner}/rseqc/inner_distance/pdf" }, - mode: params.publish_dir_mode, - pattern: '*.pdf' - ], - [ - path: { "${params.outdir}/${params.aligner}/rseqc/inner_distance/rscript" }, - mode: params.publish_dir_mode, - pattern: '*.r' - ] - ] - } - } - } - - if (!params.skip_rseqc && 'tin' in rseqc_modules && !params.bam_csi_index) { - process { - withName: '.*:BAM_RSEQC:RSEQC_TIN' { - publishDir = [ - path: { "${params.outdir}/${params.aligner}/rseqc/tin" }, - mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } - ] - } - } - } -} - -if (!params.skip_multiqc) { - process { - withName: 'MULTIQC' { - ext.args = { params.multiqc_title ? "--title \"$params.multiqc_title\"" : '' } - ext.prefix = "multiqc_report" - publishDir = [ - path: { [ - "${params.outdir}/multiqc", - params.skip_alignment? '' : "/${params.aligner}" - ].join('') }, - mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } - ] - } - } -} - -// -// Salmon/ Kallisto pseudoalignment options -// - -if (!params.skip_pseudo_alignment && params.pseudo_aligner == 'salmon') { - process { - withName: '.*:QUANTIFY_PSEUDO_ALIGNMENT:SALMON_QUANT' { - ext.args = { params.extra_salmon_quant_args ?: '' } - publishDir = [ - path: { "${params.outdir}/${params.pseudo_aligner}" }, - mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') || filename.endsWith('_meta_info.json') ? null : filename } - ] - } - } -} - -if (!params.skip_pseudo_alignment && params.pseudo_aligner == 'kallisto') { - process { - withName: '.*:QUANTIFY_PSEUDO_ALIGNMENT:KALLISTO_QUANT' { - ext.args = params.extra_kallisto_quant_args ?: '' - publishDir = [ - path: { "${params.outdir}/${params.pseudo_aligner}" }, - mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') || filename.endsWith('.run_info.json') || filename.endsWith('.log') ? null : filename } - ] - } - } -} - -if (!params.skip_pseudo_alignment && params.pseudo_aligner) { - process { - withName: '.*:QUANTIFY_PSEUDO_ALIGNMENT:TX2GENE' { - publishDir = [ - path: { "${params.outdir}/${params.pseudo_aligner}" }, - mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } - ] - } - - withName: '.*:QUANTIFY_PSEUDO_ALIGNMENT:TXIMPORT' { - ext.prefix = { "${quant_type}.merged" } - publishDir = [ - path: { "${params.outdir}/${params.pseudo_aligner}" }, - mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } - ] - } - - withName: '.*:QUANTIFY_PSEUDO_ALIGNMENT:SE_.*' { - publishDir = [ - path: { "${params.outdir}/${params.pseudo_aligner}" }, - mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } - ] - } - } - - if (!params.skip_qc & !params.skip_deseq2_qc) { - process { - withName: 'DESEQ2_QC_PSEUDO' { - ext.args = { [ - "--id_col 1", - "--sample_suffix ''", - "--count_col 3", - params.deseq2_vst ? '--vst TRUE' : '' - ].join(' ').trim() } - ext.args2 = { params.pseudo_aligner } - publishDir = [ - path: { "${params.outdir}/${params.pseudo_aligner}/deseq2_qc" }, - mode: params.publish_dir_mode, - pattern: "*{RData,pca.vals.txt,plots.pdf,sample.dists.txt,size_factors,log}" - ] - } - } - } -} From f5ae20e088737fcca95fd04889b84fc5ff88043c Mon Sep 17 00:00:00 2001 From: nf-core-bot Date: Sun, 4 Feb 2024 10:43:22 +0000 Subject: [PATCH 023/634] [automated] Fix linting with Prettier --- .devcontainer/devcontainer.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 4a9bc5c79..4ecfbfe33 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -18,11 +18,11 @@ "python.linting.flake8Path": "/opt/conda/bin/flake8", "python.linting.pycodestylePath": "/opt/conda/bin/pycodestyle", "python.linting.pydocstylePath": "/opt/conda/bin/pydocstyle", - "python.linting.pylintPath": "/opt/conda/bin/pylint", + "python.linting.pylintPath": "/opt/conda/bin/pylint" }, // Add the IDs of extensions you want installed when the container is created. - "extensions": ["ms-python.python", "ms-python.vscode-pylance", "nf-core.nf-core-extensionpack"], - }, - }, + "extensions": ["ms-python.python", "ms-python.vscode-pylance", "nf-core.nf-core-extensionpack"] + } + } } From 8fa9294742a5973ec69343ab1bcc1e7ee6dbda0b Mon Sep 17 00:00:00 2001 From: Harshil Patel Date: Sun, 4 Feb 2024 11:57:22 +0000 Subject: [PATCH 024/634] Remove nf-core modules path diff files --- .nf-core.yml | 3 +- modules.json | 39 +++++++------------ .../custom-dumpsoftwareversions.diff | 19 --------- modules/nf-core/fastp/fastp.diff | 32 --------------- modules/nf-core/fastqc/fastqc.diff | 23 ----------- .../nf-core/rseqc/bamstat/rseqc-bamstat.diff | 19 --------- .../rseqc-inferexperiment.diff | 19 --------- .../innerdistance/rseqc-innerdistance.diff | 19 --------- .../rseqc-junctionannotation.diff | 19 --------- .../rseqc-junctionsaturation.diff | 19 --------- .../rseqc-readdistribution.diff | 19 --------- .../rseqc-readduplication.diff | 19 --------- modules/nf-core/rseqc/tin/rseqc-tin.diff | 19 --------- .../umitools/dedup/umitools-dedup.diff | 23 ----------- .../umitools/extract/umitools-extract.diff | 23 ----------- 15 files changed, 14 insertions(+), 300 deletions(-) delete mode 100644 modules/nf-core/custom/dumpsoftwareversions/custom-dumpsoftwareversions.diff delete mode 100644 modules/nf-core/fastp/fastp.diff delete mode 100644 modules/nf-core/fastqc/fastqc.diff delete mode 100644 modules/nf-core/rseqc/bamstat/rseqc-bamstat.diff delete mode 100644 modules/nf-core/rseqc/inferexperiment/rseqc-inferexperiment.diff delete mode 100644 modules/nf-core/rseqc/innerdistance/rseqc-innerdistance.diff delete mode 100644 modules/nf-core/rseqc/junctionannotation/rseqc-junctionannotation.diff delete mode 100644 modules/nf-core/rseqc/junctionsaturation/rseqc-junctionsaturation.diff delete mode 100644 modules/nf-core/rseqc/readdistribution/rseqc-readdistribution.diff delete mode 100644 modules/nf-core/rseqc/readduplication/rseqc-readduplication.diff delete mode 100644 modules/nf-core/rseqc/tin/rseqc-tin.diff delete mode 100644 modules/nf-core/umitools/dedup/umitools-dedup.diff delete mode 100644 modules/nf-core/umitools/extract/umitools-extract.diff diff --git a/.nf-core.yml b/.nf-core.yml index 094459361..3d8ac0593 100644 --- a/.nf-core.yml +++ b/.nf-core.yml @@ -4,5 +4,4 @@ lint: - assets/email_template.html - assets/email_template.txt - lib/NfcoreTemplate.groovy - - pyproject.toml - multiqc_config: false + nextflow_config: false diff --git a/modules.json b/modules.json index 9f58b4317..7d0984e5b 100644 --- a/modules.json +++ b/modules.json @@ -18,8 +18,7 @@ "custom/dumpsoftwareversions": { "branch": "master", "git_sha": "bba7e362e4afead70653f84d8700588ea28d0f9e", - "installed_by": ["modules"], - "patch": "modules/nf-core/custom/dumpsoftwareversions/custom-dumpsoftwareversions.diff" + "installed_by": ["modules"] }, "custom/getchromsizes": { "branch": "master", @@ -29,14 +28,12 @@ "fastp": { "branch": "master", "git_sha": "d497a4868ace3302016ea8ed4b395072d5e833cd", - "installed_by": ["fastq_fastqc_umitools_fastp", "modules"], - "patch": "modules/nf-core/fastp/fastp.diff" + "installed_by": ["fastq_fastqc_umitools_fastp", "modules"] }, "fastqc": { "branch": "master", "git_sha": "102cc9b709a6da9f7cee2373563ab1464fca9c0a", - "installed_by": ["fastq_fastqc_umitools_trimgalore", "fastq_fastqc_umitools_fastp"], - "patch": "modules/nf-core/fastqc/fastqc.diff" + "installed_by": ["fastq_fastqc_umitools_trimgalore", "fastq_fastqc_umitools_fastp"] }, "fq/subsample": { "branch": "master", @@ -106,50 +103,42 @@ "rseqc/bamstat": { "branch": "master", "git_sha": "911696ea0b62df80e900ef244d7867d177971f73", - "installed_by": ["bam_rseqc"], - "patch": "modules/nf-core/rseqc/bamstat/rseqc-bamstat.diff" + "installed_by": ["bam_rseqc"] }, "rseqc/inferexperiment": { "branch": "master", "git_sha": "911696ea0b62df80e900ef244d7867d177971f73", - "installed_by": ["bam_rseqc"], - "patch": "modules/nf-core/rseqc/inferexperiment/rseqc-inferexperiment.diff" + "installed_by": ["bam_rseqc"] }, "rseqc/innerdistance": { "branch": "master", "git_sha": "911696ea0b62df80e900ef244d7867d177971f73", - "installed_by": ["bam_rseqc"], - "patch": "modules/nf-core/rseqc/innerdistance/rseqc-innerdistance.diff" + "installed_by": ["bam_rseqc"] }, "rseqc/junctionannotation": { "branch": "master", "git_sha": "911696ea0b62df80e900ef244d7867d177971f73", - "installed_by": ["bam_rseqc"], - "patch": "modules/nf-core/rseqc/junctionannotation/rseqc-junctionannotation.diff" + "installed_by": ["bam_rseqc"] }, "rseqc/junctionsaturation": { "branch": "master", "git_sha": "911696ea0b62df80e900ef244d7867d177971f73", - "installed_by": ["bam_rseqc"], - "patch": "modules/nf-core/rseqc/junctionsaturation/rseqc-junctionsaturation.diff" + "installed_by": ["bam_rseqc"] }, "rseqc/readdistribution": { "branch": "master", "git_sha": "911696ea0b62df80e900ef244d7867d177971f73", - "installed_by": ["bam_rseqc"], - "patch": "modules/nf-core/rseqc/readdistribution/rseqc-readdistribution.diff" + "installed_by": ["bam_rseqc"] }, "rseqc/readduplication": { "branch": "master", "git_sha": "911696ea0b62df80e900ef244d7867d177971f73", - "installed_by": ["bam_rseqc"], - "patch": "modules/nf-core/rseqc/readduplication/rseqc-readduplication.diff" + "installed_by": ["bam_rseqc"] }, "rseqc/tin": { "branch": "master", "git_sha": "911696ea0b62df80e900ef244d7867d177971f73", - "installed_by": ["bam_rseqc"], - "patch": "modules/nf-core/rseqc/tin/rseqc-tin.diff" + "installed_by": ["bam_rseqc"] }, "salmon/index": { "branch": "master", @@ -233,14 +222,12 @@ "umitools/dedup": { "branch": "master", "git_sha": "7297204bf49273300a3dbfa4b7a4027c8683f1bd", - "installed_by": ["bam_dedup_stats_samtools_umitools"], - "patch": "modules/nf-core/umitools/dedup/umitools-dedup.diff" + "installed_by": ["bam_dedup_stats_samtools_umitools"] }, "umitools/extract": { "branch": "master", "git_sha": "911696ea0b62df80e900ef244d7867d177971f73", - "installed_by": ["fastq_fastqc_umitools_fastp", "fastq_fastqc_umitools_trimgalore"], - "patch": "modules/nf-core/umitools/extract/umitools-extract.diff" + "installed_by": ["fastq_fastqc_umitools_fastp", "fastq_fastqc_umitools_trimgalore"] }, "untar": { "branch": "master", diff --git a/modules/nf-core/custom/dumpsoftwareversions/custom-dumpsoftwareversions.diff b/modules/nf-core/custom/dumpsoftwareversions/custom-dumpsoftwareversions.diff deleted file mode 100644 index 2ec89807d..000000000 --- a/modules/nf-core/custom/dumpsoftwareversions/custom-dumpsoftwareversions.diff +++ /dev/null @@ -1,19 +0,0 @@ -Changes in module 'nf-core/custom/dumpsoftwareversions' ---- modules/nf-core/custom/dumpsoftwareversions/main.nf -+++ modules/nf-core/custom/dumpsoftwareversions/main.nf -@@ -2,10 +2,10 @@ - label 'process_single' - - // Requires `pyyaml` which does not have a dedicated container but is in the MultiQC container -- conda "${moduleDir}/environment.yml" -+ conda "bioconda::multiqc=1.19" - container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? -- 'https://depot.galaxyproject.org/singularity/multiqc:1.17--pyhdfd78af_0' : -- 'biocontainers/multiqc:1.17--pyhdfd78af_0' }" -+ 'https://depot.galaxyproject.org/singularity/multiqc:1.19--pyhdfd78af_0' : -+ 'biocontainers/multiqc:1.19--pyhdfd78af_0' }" - - input: - path versions - -************************************************************ diff --git a/modules/nf-core/fastp/fastp.diff b/modules/nf-core/fastp/fastp.diff deleted file mode 100644 index b50d8e387..000000000 --- a/modules/nf-core/fastp/fastp.diff +++ /dev/null @@ -1,32 +0,0 @@ -Changes in module 'nf-core/fastp' ---- modules/nf-core/fastp/main.nf -+++ modules/nf-core/fastp/main.nf -@@ -45,7 +45,7 @@ - $adapter_list \\ - $fail_fastq \\ - $args \\ -- 2> ${prefix}.fastp.log \\ -+ 2> >(tee ${prefix}.fastp.log >&2) \\ - | gzip -c > ${prefix}.fastp.fastq.gz - - cat <<-END_VERSIONS > versions.yml -@@ -66,7 +66,7 @@ - $adapter_list \\ - $fail_fastq \\ - $args \\ -- 2> ${prefix}.fastp.log -+ 2> >(tee ${prefix}.fastp.log >&2) - - cat <<-END_VERSIONS > versions.yml - "${task.process}": -@@ -91,7 +91,7 @@ - --thread $task.cpus \\ - --detect_adapter_for_pe \\ - $args \\ -- 2> ${prefix}.fastp.log -+ 2> >(tee ${prefix}.fastp.log >&2) - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - -************************************************************ diff --git a/modules/nf-core/fastqc/fastqc.diff b/modules/nf-core/fastqc/fastqc.diff deleted file mode 100644 index 0518d2b8f..000000000 --- a/modules/nf-core/fastqc/fastqc.diff +++ /dev/null @@ -1,23 +0,0 @@ -Changes in module 'nf-core/fastqc' ---- modules/nf-core/fastqc/main.nf -+++ modules/nf-core/fastqc/main.nf -@@ -37,7 +37,7 @@ - - cat <<-END_VERSIONS > versions.yml - "${task.process}": -- fastqc: \$( fastqc --version | sed -e "s/FastQC v//g" ) -+ fastqc: \$( fastqc --version | sed '/FastQC v/!d; s/.*v//' ) - END_VERSIONS - """ - -@@ -49,7 +49,7 @@ - - cat <<-END_VERSIONS > versions.yml - "${task.process}": -- fastqc: \$( fastqc --version | sed -e "s/FastQC v//g" ) -+ fastqc: \$( fastqc --version | sed '/FastQC v/!d; s/.*v//' ) - END_VERSIONS - """ - } - -************************************************************ diff --git a/modules/nf-core/rseqc/bamstat/rseqc-bamstat.diff b/modules/nf-core/rseqc/bamstat/rseqc-bamstat.diff deleted file mode 100644 index a8ee45a91..000000000 --- a/modules/nf-core/rseqc/bamstat/rseqc-bamstat.diff +++ /dev/null @@ -1,19 +0,0 @@ -Changes in module 'nf-core/rseqc/bamstat' ---- modules/nf-core/rseqc/bamstat/main.nf -+++ modules/nf-core/rseqc/bamstat/main.nf -@@ -2,10 +2,10 @@ - tag "$meta.id" - label 'process_medium' - -- conda "bioconda::rseqc=3.0.1 'conda-forge::r-base>=3.5'" -+ conda "bioconda::rseqc=5.0.3" - container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? -- 'https://depot.galaxyproject.org/singularity/rseqc:3.0.1--py37h516909a_1' : -- 'biocontainers/rseqc:3.0.1--py37h516909a_1' }" -+ 'https://depot.galaxyproject.org/singularity/rseqc:5.0.3--py39hf95cd2a_0' : -+ 'biocontainers/rseqc:5.0.3--py39hf95cd2a_0' }" - - input: - tuple val(meta), path(bam) - -************************************************************ diff --git a/modules/nf-core/rseqc/inferexperiment/rseqc-inferexperiment.diff b/modules/nf-core/rseqc/inferexperiment/rseqc-inferexperiment.diff deleted file mode 100644 index 728b4799f..000000000 --- a/modules/nf-core/rseqc/inferexperiment/rseqc-inferexperiment.diff +++ /dev/null @@ -1,19 +0,0 @@ -Changes in module 'nf-core/rseqc/inferexperiment' ---- modules/nf-core/rseqc/inferexperiment/main.nf -+++ modules/nf-core/rseqc/inferexperiment/main.nf -@@ -2,10 +2,10 @@ - tag "$meta.id" - label 'process_medium' - -- conda "bioconda::rseqc=3.0.1 'conda-forge::r-base>=3.5'" -+ conda "bioconda::rseqc=5.0.3" - container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? -- 'https://depot.galaxyproject.org/singularity/rseqc:3.0.1--py37h516909a_1' : -- 'biocontainers/rseqc:3.0.1--py37h516909a_1' }" -+ 'https://depot.galaxyproject.org/singularity/rseqc:5.0.3--py39hf95cd2a_0' : -+ 'biocontainers/rseqc:5.0.3--py39hf95cd2a_0' }" - - input: - tuple val(meta), path(bam) - -************************************************************ diff --git a/modules/nf-core/rseqc/innerdistance/rseqc-innerdistance.diff b/modules/nf-core/rseqc/innerdistance/rseqc-innerdistance.diff deleted file mode 100644 index dc760c5da..000000000 --- a/modules/nf-core/rseqc/innerdistance/rseqc-innerdistance.diff +++ /dev/null @@ -1,19 +0,0 @@ -Changes in module 'nf-core/rseqc/innerdistance' ---- modules/nf-core/rseqc/innerdistance/main.nf -+++ modules/nf-core/rseqc/innerdistance/main.nf -@@ -2,10 +2,10 @@ - tag "$meta.id" - label 'process_medium' - -- conda "bioconda::rseqc=3.0.1 'conda-forge::r-base>=3.5'" -+ conda "bioconda::rseqc=5.0.3" - container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? -- 'https://depot.galaxyproject.org/singularity/rseqc:3.0.1--py37h516909a_1' : -- 'biocontainers/rseqc:3.0.1--py37h516909a_1' }" -+ 'https://depot.galaxyproject.org/singularity/rseqc:5.0.3--py39hf95cd2a_0' : -+ 'biocontainers/rseqc:5.0.3--py39hf95cd2a_0' }" - - input: - tuple val(meta), path(bam) - -************************************************************ diff --git a/modules/nf-core/rseqc/junctionannotation/rseqc-junctionannotation.diff b/modules/nf-core/rseqc/junctionannotation/rseqc-junctionannotation.diff deleted file mode 100644 index b210db990..000000000 --- a/modules/nf-core/rseqc/junctionannotation/rseqc-junctionannotation.diff +++ /dev/null @@ -1,19 +0,0 @@ -Changes in module 'nf-core/rseqc/junctionannotation' ---- modules/nf-core/rseqc/junctionannotation/main.nf -+++ modules/nf-core/rseqc/junctionannotation/main.nf -@@ -2,10 +2,10 @@ - tag "$meta.id" - label 'process_medium' - -- conda "bioconda::rseqc=3.0.1 'conda-forge::r-base>=3.5'" -+ conda "bioconda::rseqc=5.0.3" - container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? -- 'https://depot.galaxyproject.org/singularity/rseqc:3.0.1--py37h516909a_1' : -- 'biocontainers/rseqc:3.0.1--py37h516909a_1' }" -+ 'https://depot.galaxyproject.org/singularity/rseqc:5.0.3--py39hf95cd2a_0' : -+ 'biocontainers/rseqc:5.0.3--py39hf95cd2a_0' }" - - input: - tuple val(meta), path(bam) - -************************************************************ diff --git a/modules/nf-core/rseqc/junctionsaturation/rseqc-junctionsaturation.diff b/modules/nf-core/rseqc/junctionsaturation/rseqc-junctionsaturation.diff deleted file mode 100644 index 663340cf6..000000000 --- a/modules/nf-core/rseqc/junctionsaturation/rseqc-junctionsaturation.diff +++ /dev/null @@ -1,19 +0,0 @@ -Changes in module 'nf-core/rseqc/junctionsaturation' ---- modules/nf-core/rseqc/junctionsaturation/main.nf -+++ modules/nf-core/rseqc/junctionsaturation/main.nf -@@ -2,10 +2,10 @@ - tag "$meta.id" - label 'process_medium' - -- conda "bioconda::rseqc=3.0.1 'conda-forge::r-base>=3.5'" -+ conda "bioconda::rseqc=5.0.3" - container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? -- 'https://depot.galaxyproject.org/singularity/rseqc:3.0.1--py37h516909a_1' : -- 'biocontainers/rseqc:3.0.1--py37h516909a_1' }" -+ 'https://depot.galaxyproject.org/singularity/rseqc:5.0.3--py39hf95cd2a_0' : -+ 'biocontainers/rseqc:5.0.3--py39hf95cd2a_0' }" - - input: - tuple val(meta), path(bam) - -************************************************************ diff --git a/modules/nf-core/rseqc/readdistribution/rseqc-readdistribution.diff b/modules/nf-core/rseqc/readdistribution/rseqc-readdistribution.diff deleted file mode 100644 index 4219e2ac3..000000000 --- a/modules/nf-core/rseqc/readdistribution/rseqc-readdistribution.diff +++ /dev/null @@ -1,19 +0,0 @@ -Changes in module 'nf-core/rseqc/readdistribution' ---- modules/nf-core/rseqc/readdistribution/main.nf -+++ modules/nf-core/rseqc/readdistribution/main.nf -@@ -2,10 +2,10 @@ - tag "$meta.id" - label 'process_medium' - -- conda "bioconda::rseqc=3.0.1 'conda-forge::r-base>=3.5'" -+ conda "bioconda::rseqc=5.0.3" - container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? -- 'https://depot.galaxyproject.org/singularity/rseqc:3.0.1--py37h516909a_1' : -- 'biocontainers/rseqc:3.0.1--py37h516909a_1' }" -+ 'https://depot.galaxyproject.org/singularity/rseqc:5.0.3--py39hf95cd2a_0' : -+ 'biocontainers/rseqc:5.0.3--py39hf95cd2a_0' }" - - input: - tuple val(meta), path(bam) - -************************************************************ diff --git a/modules/nf-core/rseqc/readduplication/rseqc-readduplication.diff b/modules/nf-core/rseqc/readduplication/rseqc-readduplication.diff deleted file mode 100644 index 748685c0b..000000000 --- a/modules/nf-core/rseqc/readduplication/rseqc-readduplication.diff +++ /dev/null @@ -1,19 +0,0 @@ -Changes in module 'nf-core/rseqc/readduplication' ---- modules/nf-core/rseqc/readduplication/main.nf -+++ modules/nf-core/rseqc/readduplication/main.nf -@@ -2,10 +2,10 @@ - tag "$meta.id" - label 'process_medium' - -- conda "bioconda::rseqc=3.0.1 'conda-forge::r-base>=3.5'" -+ conda "bioconda::rseqc=5.0.3" - container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? -- 'https://depot.galaxyproject.org/singularity/rseqc:3.0.1--py37h516909a_1' : -- 'biocontainers/rseqc:3.0.1--py37h516909a_1' }" -+ 'https://depot.galaxyproject.org/singularity/rseqc:5.0.3--py39hf95cd2a_0' : -+ 'biocontainers/rseqc:5.0.3--py39hf95cd2a_0' }" - - input: - tuple val(meta), path(bam) - -************************************************************ diff --git a/modules/nf-core/rseqc/tin/rseqc-tin.diff b/modules/nf-core/rseqc/tin/rseqc-tin.diff deleted file mode 100644 index aa4727128..000000000 --- a/modules/nf-core/rseqc/tin/rseqc-tin.diff +++ /dev/null @@ -1,19 +0,0 @@ -Changes in module 'nf-core/rseqc/tin' ---- modules/nf-core/rseqc/tin/main.nf -+++ modules/nf-core/rseqc/tin/main.nf -@@ -2,10 +2,10 @@ - tag "$meta.id" - label 'process_high' - -- conda "bioconda::rseqc=3.0.1 'conda-forge::r-base>=3.5'" -+ conda "bioconda::rseqc=5.0.3" - container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? -- 'https://depot.galaxyproject.org/singularity/rseqc:3.0.1--py37h516909a_1' : -- 'biocontainers/rseqc:3.0.1--py37h516909a_1' }" -+ 'https://depot.galaxyproject.org/singularity/rseqc:5.0.3--py39hf95cd2a_0' : -+ 'biocontainers/rseqc:5.0.3--py39hf95cd2a_0' }" - - input: - tuple val(meta), path(bam), path(bai) - -************************************************************ diff --git a/modules/nf-core/umitools/dedup/umitools-dedup.diff b/modules/nf-core/umitools/dedup/umitools-dedup.diff deleted file mode 100644 index 327583445..000000000 --- a/modules/nf-core/umitools/dedup/umitools-dedup.diff +++ /dev/null @@ -1,23 +0,0 @@ -Changes in module 'nf-core/umitools/dedup' ---- modules/nf-core/umitools/dedup/main.nf -+++ modules/nf-core/umitools/dedup/main.nf -@@ -42,7 +42,7 @@ - - cat <<-END_VERSIONS > versions.yml - "${task.process}": -- umitools: \$(umi_tools --version 2>&1 | sed 's/^.*UMI-tools version://; s/ *\$//') -+ umitools: \$( umi_tools --version | sed '/version:/!d; s/.*: //' ) - END_VERSIONS - """ - -@@ -56,7 +56,7 @@ - - cat <<-END_VERSIONS > versions.yml - "${task.process}": -- umitools: \$(umi_tools --version 2>&1 | sed 's/^.*UMI-tools version://; s/ *\$//') -+ umitools: \$( umi_tools --version | sed '/version:/!d; s/.*: //' ) - END_VERSIONS - """ - } - -************************************************************ diff --git a/modules/nf-core/umitools/extract/umitools-extract.diff b/modules/nf-core/umitools/extract/umitools-extract.diff deleted file mode 100644 index 464a23c00..000000000 --- a/modules/nf-core/umitools/extract/umitools-extract.diff +++ /dev/null @@ -1,23 +0,0 @@ -Changes in module 'nf-core/umitools/extract' ---- modules/nf-core/umitools/extract/main.nf -+++ modules/nf-core/umitools/extract/main.nf -@@ -33,7 +33,7 @@ - - cat <<-END_VERSIONS > versions.yml - "${task.process}": -- umitools: \$(umi_tools --version 2>&1 | sed 's/^.*UMI-tools version://; s/ *\$//') -+ umitools: \$( umi_tools --version | sed '/version:/!d; s/.*: //' ) - END_VERSIONS - """ - } else { -@@ -49,7 +49,7 @@ - - cat <<-END_VERSIONS > versions.yml - "${task.process}": -- umitools: \$(umi_tools --version 2>&1 | sed 's/^.*UMI-tools version://; s/ *\$//') -+ umitools: \$( umi_tools --version | sed '/version:/!d; s/.*: //' ) - END_VERSIONS - """ - } - -************************************************************ From b5f0a04d74a5087a123807b8656d594702690b86 Mon Sep 17 00:00:00 2001 From: Harshil Patel Date: Sun, 4 Feb 2024 12:15:13 +0000 Subject: [PATCH 025/634] Update all nf-core modules and subworkflows --- modules.json | 124 +-- modules/nf-core/bbmap/bbsplit/environment.yml | 7 + modules/nf-core/bbmap/bbsplit/main.nf | 5 +- modules/nf-core/bbmap/bbsplit/meta.yml | 7 +- .../nf-core/bbmap/bbsplit/tests/main.nf.test | 90 ++ .../bbmap/bbsplit/tests/main.nf.test.snap | 30 + modules/nf-core/bbmap/bbsplit/tests/tags.yml | 2 + modules/nf-core/cat/fastq/environment.yml | 7 + modules/nf-core/cat/fastq/main.nf | 2 +- modules/nf-core/cat/fastq/meta.yml | 4 +- modules/nf-core/cat/fastq/tests/main.nf.test | 138 ++++ .../nf-core/cat/fastq/tests/main.nf.test.snap | 169 ++++ modules/nf-core/cat/fastq/tests/tags.yml | 2 + .../custom/dumpsoftwareversions/main.nf | 2 +- .../custom/getchromsizes/environment.yml | 7 + modules/nf-core/custom/getchromsizes/main.nf | 2 +- modules/nf-core/custom/getchromsizes/meta.yml | 7 +- .../custom/getchromsizes/tests/main.nf.test | 62 ++ .../getchromsizes/tests/main.nf.test.snap | 114 +++ .../custom/getchromsizes/tests/tags.yml | 2 + modules/nf-core/fastp/environment.yml | 7 + modules/nf-core/fastp/main.nf | 20 +- modules/nf-core/fastp/meta.yml | 4 +- modules/nf-core/fastp/tests/main.nf.test | 723 ++++++++++++++++ modules/nf-core/fastp/tests/main.nf.test.snap | 330 ++++++++ modules/nf-core/fastp/tests/nextflow.config | 6 + modules/nf-core/fastp/tests/tags.yml | 2 + modules/nf-core/fastqc/environment.yml | 7 + modules/nf-core/fastqc/main.nf | 2 +- modules/nf-core/fastqc/meta.yml | 5 + modules/nf-core/fastqc/tests/main.nf.test | 128 ++- .../nf-core/fastqc/tests/main.nf.test.snap | 76 +- modules/nf-core/fastqc/tests/tags.yml | 2 + modules/nf-core/fq/subsample/environment.yml | 7 + modules/nf-core/fq/subsample/main.nf | 2 +- modules/nf-core/fq/subsample/meta.yml | 11 +- .../nf-core/fq/subsample/tests/main.nf.test | 140 ++++ .../fq/subsample/tests/main.nf.test.snap | 145 ++++ .../fq/subsample/tests/nextflow.config | 7 + .../subsample/tests/nextflow_no_args.config | 7 + .../tests/nextflow_probability.config | 7 + .../tests/nextflow_record_count.config | 7 + modules/nf-core/fq/subsample/tests/tags.yml | 2 + modules/nf-core/gffread/environment.yml | 7 + modules/nf-core/gffread/main.nf | 10 +- modules/nf-core/gffread/meta.yml | 10 +- modules/nf-core/gffread/tests/main.nf.test | 65 ++ .../nf-core/gffread/tests/main.nf.test.snap | 24 + modules/nf-core/gffread/tests/nextflow.config | 5 + modules/nf-core/gffread/tests/tags.yml | 2 + modules/nf-core/gunzip/environment.yml | 7 + modules/nf-core/gunzip/main.nf | 2 +- modules/nf-core/gunzip/meta.yml | 4 + modules/nf-core/gunzip/tests/main.nf.test | 36 + .../nf-core/gunzip/tests/main.nf.test.snap | 31 + modules/nf-core/gunzip/tests/tags.yml | 2 + modules/nf-core/hisat2/align/environment.yml | 8 + modules/nf-core/hisat2/align/main.nf | 2 +- modules/nf-core/hisat2/align/meta.yml | 7 +- .../nf-core/hisat2/align/tests/main.nf.test | 218 +++++ .../hisat2/align/tests/main.nf.test.snap | 122 +++ modules/nf-core/hisat2/align/tests/tags.yml | 4 + modules/nf-core/hisat2/build/environment.yml | 7 + modules/nf-core/hisat2/build/main.nf | 2 +- modules/nf-core/hisat2/build/meta.yml | 5 +- .../nf-core/hisat2/build/tests/main.nf.test | 53 ++ .../hisat2/build/tests/main.nf.test.snap | 49 ++ modules/nf-core/hisat2/build/tests/tags.yml | 3 + .../hisat2/extractsplicesites/environment.yml | 7 + .../nf-core/hisat2/extractsplicesites/main.nf | 2 +- .../hisat2/extractsplicesites/meta.yml | 7 +- .../extractsplicesites/tests/main.nf.test | 35 + .../tests/main.nf.test.snap | 10 + .../hisat2/extractsplicesites/tests/tags.yml | 2 + .../nf-core/kallisto/index/tests/main.nf.test | 12 +- .../kallisto/index/tests/main.nf.test.snap | 44 +- .../nf-core/kallisto/quant/tests/main.nf.test | 65 +- .../kallisto/quant/tests/main.nf.test.snap | 26 +- .../picard/markduplicates/environment.yml | 7 + modules/nf-core/picard/markduplicates/main.nf | 6 +- .../nf-core/picard/markduplicates/meta.yml | 4 + .../picard/markduplicates/tests/main.nf.test | 104 +++ .../markduplicates/tests/main.nf.test.snap | 74 ++ .../markduplicates/tests/nextflow.config | 6 + .../picard/markduplicates/tests/tags.yml | 2 + .../nf-core/preseq/lcextrap/environment.yml | 7 + modules/nf-core/preseq/lcextrap/main.nf | 2 +- modules/nf-core/preseq/lcextrap/meta.yml | 9 +- .../preseq/lcextrap/tests/main.nf.test | 54 ++ .../preseq/lcextrap/tests/main.nf.test.snap | 58 ++ .../nf-core/preseq/lcextrap/tests/tags.yml | 2 + .../qualimap/rnaseq/tests/main.nf.test | 40 + .../qualimap/rnaseq/tests/main.nf.test.snap | 16 + .../nf-core/qualimap/rnaseq/tests/tags.yml | 2 + .../rsem/calculateexpression/environment.yml | 8 + .../nf-core/rsem/calculateexpression/main.nf | 2 +- .../nf-core/rsem/calculateexpression/meta.yml | 3 + .../calculateexpression/tests/main.nf.test | 56 ++ .../tests/main.nf.test.snap | 56 ++ .../calculateexpression/tests/nextflow.config | 13 + .../rsem/calculateexpression/tests/tags.yml | 2 + .../rsem/preparereference/environment.yml | 8 + modules/nf-core/rsem/preparereference/main.nf | 2 +- .../nf-core/rsem/preparereference/meta.yml | 3 + .../rsem/preparereference/tests/main.nf.test | 36 + .../preparereference/tests/main.nf.test.snap | 35 + .../rsem/preparereference/tests/tags.yml | 2 + modules/nf-core/rseqc/bamstat/environment.yml | 8 + modules/nf-core/rseqc/bamstat/main.nf | 2 +- modules/nf-core/rseqc/bamstat/meta.yml | 3 + .../nf-core/rseqc/bamstat/tests/main.nf.test | 38 + .../rseqc/bamstat/tests/main.nf.test.snap | 31 + .../bamstat/tests/nextflow.config} | 0 modules/nf-core/rseqc/bamstat/tests/tags.yml | 2 + .../rseqc/inferexperiment/environment.yml | 8 + modules/nf-core/rseqc/inferexperiment/main.nf | 2 +- .../nf-core/rseqc/inferexperiment/meta.yml | 4 + .../rseqc/inferexperiment/tests/main.nf.test | 34 + .../inferexperiment/tests/main.nf.test.snap | 31 + .../inferexperiment/tests/nextflow.config} | 4 +- .../rseqc/inferexperiment/tests/tags.yml | 2 + .../rseqc/innerdistance/environment.yml | 8 + modules/nf-core/rseqc/innerdistance/main.nf | 2 +- modules/nf-core/rseqc/innerdistance/meta.yml | 4 + .../rseqc/innerdistance/tests/main.nf.test | 41 + .../innerdistance/tests/main.nf.test.snap | 68 ++ .../rseqc/innerdistance/tests/nextflow.config | 5 + .../rseqc/innerdistance/tests/tags.yml | 2 + .../rseqc/junctionannotation/environment.yml | 8 + .../nf-core/rseqc/junctionannotation/main.nf | 4 +- .../nf-core/rseqc/junctionannotation/meta.yml | 3 + .../junctionannotation/tests/main.nf.test | 37 + .../tests/main.nf.test.snap | 24 + .../rseqc/junctionannotation/tests/tags.yml | 2 + .../rseqc/junctionsaturation/environment.yml | 8 + .../nf-core/rseqc/junctionsaturation/main.nf | 2 +- .../nf-core/rseqc/junctionsaturation/meta.yml | 3 + .../junctionsaturation/tests/main.nf.test | 36 + .../tests/main.nf.test.snap | 30 + .../rseqc/junctionsaturation/tests/tags.yml | 2 + .../rseqc/readdistribution/environment.yml | 8 + .../nf-core/rseqc/readdistribution/main.nf | 2 +- .../nf-core/rseqc/readdistribution/meta.yml | 3 + .../rseqc/readdistribution/tests/main.nf.test | 33 + .../readdistribution/tests/main.nf.test.snap | 33 + .../rseqc/readdistribution/tests/tags.yml | 2 + .../rseqc/readduplication/environment.yml | 8 + modules/nf-core/rseqc/readduplication/main.nf | 2 +- .../nf-core/rseqc/readduplication/meta.yml | 5 + .../rseqc/readduplication/tests/main.nf.test | 36 + .../readduplication/tests/main.nf.test.snap | 58 ++ .../rseqc/readduplication/tests/tags.yml | 2 + modules/nf-core/rseqc/tin/environment.yml | 8 + modules/nf-core/rseqc/tin/main.nf | 2 +- modules/nf-core/rseqc/tin/meta.yml | 2 + modules/nf-core/rseqc/tin/tests/main.nf.test | 35 + .../nf-core/rseqc/tin/tests/main.nf.test.snap | 47 ++ modules/nf-core/rseqc/tin/tests/tags.yml | 2 + modules/nf-core/salmon/index/environment.yml | 7 + modules/nf-core/salmon/index/main.nf | 2 +- modules/nf-core/salmon/index/meta.yml | 5 +- .../nf-core/salmon/index/tests/main.nf.test | 35 + .../salmon/index/tests/main.nf.test.snap | 10 + modules/nf-core/salmon/index/tests/tags.yml | 2 + modules/nf-core/salmon/quant/environment.yml | 7 + modules/nf-core/salmon/quant/main.nf | 2 +- modules/nf-core/salmon/quant/meta.yml | 7 +- .../nf-core/salmon/quant/tests/main.nf.test | 193 +++++ .../salmon/quant/tests/main.nf.test.snap | 50 ++ .../salmon/quant/tests/nextflow.config | 7 + modules/nf-core/salmon/quant/tests/tags.yml | 2 + .../nf-core/samtools/flagstat/environment.yml | 8 + modules/nf-core/samtools/flagstat/main.nf | 6 +- modules/nf-core/samtools/flagstat/meta.yml | 2 + .../samtools/flagstat/tests/main.nf.test | 36 + .../samtools/flagstat/tests/main.nf.test.snap | 16 + .../nf-core/samtools/flagstat/tests/tags.yml | 2 + .../nf-core/samtools/idxstats/environment.yml | 8 + modules/nf-core/samtools/idxstats/main.nf | 6 +- modules/nf-core/samtools/idxstats/meta.yml | 2 + .../samtools/idxstats/tests/main.nf.test | 36 + .../samtools/idxstats/tests/main.nf.test.snap | 16 + .../nf-core/samtools/idxstats/tests/tags.yml | 2 + .../nf-core/samtools/index/environment.yml | 8 + modules/nf-core/samtools/index/main.nf | 6 +- modules/nf-core/samtools/index/meta.yml | 4 + .../samtools/index/tests/csi.nextflow.config | 7 + .../nf-core/samtools/index/tests/main.nf.test | 87 ++ .../samtools/index/tests/main.nf.test.snap | 28 + modules/nf-core/samtools/index/tests/tags.yml | 2 + modules/nf-core/samtools/sort/environment.yml | 8 + modules/nf-core/samtools/sort/main.nf | 6 +- modules/nf-core/samtools/sort/meta.yml | 3 + .../nf-core/samtools/sort/tests/main.nf.test | 73 ++ .../samtools/sort/tests/main.nf.test.snap | 48 ++ .../samtools/sort/tests/nextflow.config | 7 + modules/nf-core/samtools/sort/tests/tags.yml | 3 + .../nf-core/samtools/stats/environment.yml | 8 + modules/nf-core/samtools/stats/main.nf | 6 +- modules/nf-core/samtools/stats/meta.yml | 4 + .../nf-core/samtools/stats/tests/main.nf.test | 78 ++ .../samtools/stats/tests/main.nf.test.snap | 64 ++ modules/nf-core/samtools/stats/tests/tags.yml | 2 + modules/nf-core/sortmerna/environment.yml | 7 + modules/nf-core/sortmerna/main.nf | 34 +- modules/nf-core/sortmerna/meta.yml | 3 + modules/nf-core/sortmerna/tests/main.nf.test | 144 ++++ .../nf-core/sortmerna/tests/main.nf.test.snap | 112 +++ modules/nf-core/sortmerna/tests/tags.yml | 2 + modules/nf-core/star/align/environment.yml | 10 + modules/nf-core/star/align/main.nf | 6 +- modules/nf-core/star/align/meta.yml | 6 +- modules/nf-core/star/align/tests/main.nf.test | 340 ++++++++ .../star/align/tests/main.nf.test.snap | 769 ++++++++++++++++++ .../star/align/tests/nextflow.arriba.config | 14 + .../nf-core/star/align/tests/nextflow.config | 14 + .../align/tests/nextflow.starfusion.config | 14 + modules/nf-core/star/align/tests/tags.yml | 2 + .../star/genomegenerate/environment.yml | 10 + modules/nf-core/star/genomegenerate/main.nf | 89 +- modules/nf-core/star/genomegenerate/meta.yml | 5 +- .../star/genomegenerate/tests/main.nf.test | 115 +++ .../genomegenerate/tests/main.nf.test.snap | 90 ++ .../star/genomegenerate/tests/tags.yml | 2 + .../stringtie/stringtie/environment.yml | 7 + modules/nf-core/stringtie/stringtie/main.nf | 2 +- modules/nf-core/stringtie/stringtie/meta.yml | 3 +- .../stringtie/stringtie/tests/main.nf.test | 108 +++ .../stringtie/tests/main.nf.test.snap | 186 +++++ .../stringtie/stringtie/tests/tags.yml | 2 + .../subread/featurecounts/environment.yml | 7 + modules/nf-core/subread/featurecounts/main.nf | 2 +- .../nf-core/subread/featurecounts/meta.yml | 6 +- .../subread/featurecounts/tests/main.nf.test | 80 ++ .../featurecounts/tests/main.nf.test.snap | 116 +++ .../featurecounts/tests/nextflow.config | 9 + .../subread/featurecounts/tests/tags.yml | 2 + modules/nf-core/trimgalore/environment.yml | 7 + modules/nf-core/trimgalore/main.nf | 2 +- modules/nf-core/trimgalore/meta.yml | 4 + modules/nf-core/trimgalore/tests/main.nf.test | 105 +++ .../trimgalore/tests/main.nf.test.snap | 148 ++++ modules/nf-core/trimgalore/tests/tags.yml | 2 + modules/nf-core/ucsc/bedclip/environment.yml | 7 + modules/nf-core/ucsc/bedclip/main.nf | 2 +- modules/nf-core/ucsc/bedclip/meta.yml | 5 +- .../nf-core/ucsc/bedclip/tests/main.nf.test | 33 + .../ucsc/bedclip/tests/main.nf.test.snap | 24 + .../ucsc/bedclip/tests/nextflow.config | 7 + modules/nf-core/ucsc/bedclip/tests/tags.yml | 2 + .../ucsc/bedgraphtobigwig/environment.yml | 7 + modules/nf-core/ucsc/bedgraphtobigwig/main.nf | 2 +- .../nf-core/ucsc/bedgraphtobigwig/meta.yml | 5 +- .../ucsc/bedgraphtobigwig/tests/main.nf.test | 36 + .../bedgraphtobigwig/tests/main.nf.test.snap | 31 + .../ucsc/bedgraphtobigwig/tests/tags.yml | 2 + .../nf-core/umitools/dedup/environment.yml | 7 + modules/nf-core/umitools/dedup/main.nf | 2 +- modules/nf-core/umitools/dedup/meta.yml | 9 +- .../nf-core/umitools/extract/environment.yml | 7 + modules/nf-core/umitools/extract/main.nf | 2 +- modules/nf-core/umitools/extract/meta.yml | 17 +- .../umitools/extract/tests/main.nf.test | 35 + .../umitools/extract/tests/main.nf.test.snap | 10 + .../umitools/extract/tests/nextflow.config | 9 + .../nf-core/umitools/extract/tests/tags.yml | 2 + modules/nf-core/untar/environment.yml | 11 + modules/nf-core/untar/main.nf | 2 +- modules/nf-core/untar/meta.yml | 5 + modules/nf-core/untar/tests/main.nf.test | 55 ++ modules/nf-core/untar/tests/main.nf.test.snap | 34 + modules/nf-core/untar/tests/tags.yml | 2 + .../meta.yml | 4 +- .../tests/main.nf.test | 53 ++ .../tests/main.nf.test.snap | 41 + .../tests/tags.yml | 2 + .../nf-core/bam_markduplicates_picard/main.nf | 10 +- .../bam_markduplicates_picard/meta.yml | 5 +- .../tests/main.nf.test | 93 +++ .../tests/main.nf.test.snap | 22 + .../bam_markduplicates_picard/tests/tags.yml | 2 + subworkflows/nf-core/bam_rseqc/main.nf | 158 ++-- subworkflows/nf-core/bam_rseqc/meta.yml | 73 +- .../nf-core/bam_rseqc/tests/main.nf.test | 100 +++ .../nf-core/bam_rseqc/tests/main.nf.test.snap | 151 ++++ subworkflows/nf-core/bam_rseqc/tests/tags.yml | 2 + .../nf-core/bam_sort_stats_samtools/meta.yml | 3 + .../tests/main.nf.test | 82 ++ .../tests/main.nf.test.snap | 86 ++ .../bam_sort_stats_samtools/tests/tags.yml | 2 + .../nf-core/bam_stats_samtools/meta.yml | 2 + .../bam_stats_samtools/tests/main.nf.test | 108 +++ .../tests/main.nf.test.snap | 128 +++ .../nf-core/bam_stats_samtools/tests/tags.yml | 2 + .../meta.yml | 3 + .../tests/main.nf.test | 36 + .../tests/main.nf.test.snap | 53 ++ .../tests/nextflow.config | 9 + .../tests/tags.yml | 2 + .../nf-core/fastq_align_hisat2/meta.yml | 2 + .../fastq_fastqc_umitools_fastp/main.nf | 19 +- .../fastq_fastqc_umitools_fastp/meta.yml | 13 +- .../tests/main.nf.test | 69 ++ .../tests/main.nf.test.snap | 127 +++ .../tests/tags.yml | 2 + .../fastq_fastqc_umitools_trimgalore/meta.yml | 10 +- .../fastq_subsample_fq_salmon/meta.yml | 4 +- .../tests/main.nf.test | 65 ++ .../tests/main.nf.test.snap | 69 ++ .../tests/nextflow.config | 9 + .../fastq_subsample_fq_salmon/tests/tags.yml | 2 + 311 files changed, 9776 insertions(+), 416 deletions(-) create mode 100644 modules/nf-core/bbmap/bbsplit/environment.yml create mode 100644 modules/nf-core/bbmap/bbsplit/tests/main.nf.test create mode 100644 modules/nf-core/bbmap/bbsplit/tests/main.nf.test.snap create mode 100644 modules/nf-core/bbmap/bbsplit/tests/tags.yml create mode 100644 modules/nf-core/cat/fastq/environment.yml create mode 100644 modules/nf-core/cat/fastq/tests/main.nf.test create mode 100644 modules/nf-core/cat/fastq/tests/main.nf.test.snap create mode 100644 modules/nf-core/cat/fastq/tests/tags.yml create mode 100644 modules/nf-core/custom/getchromsizes/environment.yml create mode 100644 modules/nf-core/custom/getchromsizes/tests/main.nf.test create mode 100644 modules/nf-core/custom/getchromsizes/tests/main.nf.test.snap create mode 100644 modules/nf-core/custom/getchromsizes/tests/tags.yml create mode 100644 modules/nf-core/fastp/environment.yml create mode 100644 modules/nf-core/fastp/tests/main.nf.test create mode 100644 modules/nf-core/fastp/tests/main.nf.test.snap create mode 100644 modules/nf-core/fastp/tests/nextflow.config create mode 100644 modules/nf-core/fastp/tests/tags.yml create mode 100644 modules/nf-core/fastqc/environment.yml create mode 100644 modules/nf-core/fastqc/tests/tags.yml create mode 100644 modules/nf-core/fq/subsample/environment.yml create mode 100644 modules/nf-core/fq/subsample/tests/main.nf.test create mode 100644 modules/nf-core/fq/subsample/tests/main.nf.test.snap create mode 100644 modules/nf-core/fq/subsample/tests/nextflow.config create mode 100644 modules/nf-core/fq/subsample/tests/nextflow_no_args.config create mode 100644 modules/nf-core/fq/subsample/tests/nextflow_probability.config create mode 100644 modules/nf-core/fq/subsample/tests/nextflow_record_count.config create mode 100644 modules/nf-core/fq/subsample/tests/tags.yml create mode 100644 modules/nf-core/gffread/environment.yml create mode 100644 modules/nf-core/gffread/tests/main.nf.test create mode 100644 modules/nf-core/gffread/tests/main.nf.test.snap create mode 100644 modules/nf-core/gffread/tests/nextflow.config create mode 100644 modules/nf-core/gffread/tests/tags.yml create mode 100644 modules/nf-core/gunzip/environment.yml create mode 100644 modules/nf-core/gunzip/tests/main.nf.test create mode 100644 modules/nf-core/gunzip/tests/main.nf.test.snap create mode 100644 modules/nf-core/gunzip/tests/tags.yml create mode 100644 modules/nf-core/hisat2/align/environment.yml create mode 100644 modules/nf-core/hisat2/align/tests/main.nf.test create mode 100644 modules/nf-core/hisat2/align/tests/main.nf.test.snap create mode 100644 modules/nf-core/hisat2/align/tests/tags.yml create mode 100644 modules/nf-core/hisat2/build/environment.yml create mode 100644 modules/nf-core/hisat2/build/tests/main.nf.test create mode 100644 modules/nf-core/hisat2/build/tests/main.nf.test.snap create mode 100644 modules/nf-core/hisat2/build/tests/tags.yml create mode 100644 modules/nf-core/hisat2/extractsplicesites/environment.yml create mode 100644 modules/nf-core/hisat2/extractsplicesites/tests/main.nf.test create mode 100644 modules/nf-core/hisat2/extractsplicesites/tests/main.nf.test.snap create mode 100644 modules/nf-core/hisat2/extractsplicesites/tests/tags.yml create mode 100644 modules/nf-core/picard/markduplicates/environment.yml create mode 100644 modules/nf-core/picard/markduplicates/tests/main.nf.test create mode 100644 modules/nf-core/picard/markduplicates/tests/main.nf.test.snap create mode 100644 modules/nf-core/picard/markduplicates/tests/nextflow.config create mode 100644 modules/nf-core/picard/markduplicates/tests/tags.yml create mode 100644 modules/nf-core/preseq/lcextrap/environment.yml mode change 100755 => 100644 modules/nf-core/preseq/lcextrap/meta.yml create mode 100644 modules/nf-core/preseq/lcextrap/tests/main.nf.test create mode 100644 modules/nf-core/preseq/lcextrap/tests/main.nf.test.snap create mode 100644 modules/nf-core/preseq/lcextrap/tests/tags.yml create mode 100644 modules/nf-core/qualimap/rnaseq/tests/main.nf.test create mode 100644 modules/nf-core/qualimap/rnaseq/tests/main.nf.test.snap create mode 100644 modules/nf-core/qualimap/rnaseq/tests/tags.yml create mode 100644 modules/nf-core/rsem/calculateexpression/environment.yml create mode 100644 modules/nf-core/rsem/calculateexpression/tests/main.nf.test create mode 100644 modules/nf-core/rsem/calculateexpression/tests/main.nf.test.snap create mode 100644 modules/nf-core/rsem/calculateexpression/tests/nextflow.config create mode 100644 modules/nf-core/rsem/calculateexpression/tests/tags.yml create mode 100644 modules/nf-core/rsem/preparereference/environment.yml create mode 100644 modules/nf-core/rsem/preparereference/tests/main.nf.test create mode 100644 modules/nf-core/rsem/preparereference/tests/main.nf.test.snap create mode 100644 modules/nf-core/rsem/preparereference/tests/tags.yml create mode 100644 modules/nf-core/rseqc/bamstat/environment.yml create mode 100644 modules/nf-core/rseqc/bamstat/tests/main.nf.test create mode 100644 modules/nf-core/rseqc/bamstat/tests/main.nf.test.snap rename modules/nf-core/{kallisto/quant/tests/paired_end.config => rseqc/bamstat/tests/nextflow.config} (100%) create mode 100644 modules/nf-core/rseqc/bamstat/tests/tags.yml create mode 100644 modules/nf-core/rseqc/inferexperiment/environment.yml create mode 100644 modules/nf-core/rseqc/inferexperiment/tests/main.nf.test create mode 100644 modules/nf-core/rseqc/inferexperiment/tests/main.nf.test.snap rename modules/nf-core/{kallisto/quant/tests/single_end.config => rseqc/inferexperiment/tests/nextflow.config} (92%) create mode 100644 modules/nf-core/rseqc/inferexperiment/tests/tags.yml create mode 100644 modules/nf-core/rseqc/innerdistance/environment.yml create mode 100644 modules/nf-core/rseqc/innerdistance/tests/main.nf.test create mode 100644 modules/nf-core/rseqc/innerdistance/tests/main.nf.test.snap create mode 100644 modules/nf-core/rseqc/innerdistance/tests/nextflow.config create mode 100644 modules/nf-core/rseqc/innerdistance/tests/tags.yml create mode 100644 modules/nf-core/rseqc/junctionannotation/environment.yml create mode 100644 modules/nf-core/rseqc/junctionannotation/tests/main.nf.test create mode 100644 modules/nf-core/rseqc/junctionannotation/tests/main.nf.test.snap create mode 100644 modules/nf-core/rseqc/junctionannotation/tests/tags.yml create mode 100644 modules/nf-core/rseqc/junctionsaturation/environment.yml create mode 100644 modules/nf-core/rseqc/junctionsaturation/tests/main.nf.test create mode 100644 modules/nf-core/rseqc/junctionsaturation/tests/main.nf.test.snap create mode 100644 modules/nf-core/rseqc/junctionsaturation/tests/tags.yml create mode 100644 modules/nf-core/rseqc/readdistribution/environment.yml create mode 100644 modules/nf-core/rseqc/readdistribution/tests/main.nf.test create mode 100644 modules/nf-core/rseqc/readdistribution/tests/main.nf.test.snap create mode 100644 modules/nf-core/rseqc/readdistribution/tests/tags.yml create mode 100644 modules/nf-core/rseqc/readduplication/environment.yml create mode 100644 modules/nf-core/rseqc/readduplication/tests/main.nf.test create mode 100644 modules/nf-core/rseqc/readduplication/tests/main.nf.test.snap create mode 100644 modules/nf-core/rseqc/readduplication/tests/tags.yml create mode 100644 modules/nf-core/rseqc/tin/environment.yml create mode 100644 modules/nf-core/rseqc/tin/tests/main.nf.test create mode 100644 modules/nf-core/rseqc/tin/tests/main.nf.test.snap create mode 100644 modules/nf-core/rseqc/tin/tests/tags.yml create mode 100644 modules/nf-core/salmon/index/environment.yml create mode 100644 modules/nf-core/salmon/index/tests/main.nf.test create mode 100644 modules/nf-core/salmon/index/tests/main.nf.test.snap create mode 100644 modules/nf-core/salmon/index/tests/tags.yml create mode 100644 modules/nf-core/salmon/quant/environment.yml create mode 100644 modules/nf-core/salmon/quant/tests/main.nf.test create mode 100644 modules/nf-core/salmon/quant/tests/main.nf.test.snap create mode 100644 modules/nf-core/salmon/quant/tests/nextflow.config create mode 100644 modules/nf-core/salmon/quant/tests/tags.yml create mode 100644 modules/nf-core/samtools/flagstat/environment.yml create mode 100644 modules/nf-core/samtools/flagstat/tests/main.nf.test create mode 100644 modules/nf-core/samtools/flagstat/tests/main.nf.test.snap create mode 100644 modules/nf-core/samtools/flagstat/tests/tags.yml create mode 100644 modules/nf-core/samtools/idxstats/environment.yml create mode 100644 modules/nf-core/samtools/idxstats/tests/main.nf.test create mode 100644 modules/nf-core/samtools/idxstats/tests/main.nf.test.snap create mode 100644 modules/nf-core/samtools/idxstats/tests/tags.yml create mode 100644 modules/nf-core/samtools/index/environment.yml create mode 100644 modules/nf-core/samtools/index/tests/csi.nextflow.config create mode 100644 modules/nf-core/samtools/index/tests/main.nf.test create mode 100644 modules/nf-core/samtools/index/tests/main.nf.test.snap create mode 100644 modules/nf-core/samtools/index/tests/tags.yml create mode 100644 modules/nf-core/samtools/sort/environment.yml create mode 100644 modules/nf-core/samtools/sort/tests/main.nf.test create mode 100644 modules/nf-core/samtools/sort/tests/main.nf.test.snap create mode 100644 modules/nf-core/samtools/sort/tests/nextflow.config create mode 100644 modules/nf-core/samtools/sort/tests/tags.yml create mode 100644 modules/nf-core/samtools/stats/environment.yml create mode 100644 modules/nf-core/samtools/stats/tests/main.nf.test create mode 100644 modules/nf-core/samtools/stats/tests/main.nf.test.snap create mode 100644 modules/nf-core/samtools/stats/tests/tags.yml create mode 100644 modules/nf-core/sortmerna/environment.yml create mode 100644 modules/nf-core/sortmerna/tests/main.nf.test create mode 100644 modules/nf-core/sortmerna/tests/main.nf.test.snap create mode 100644 modules/nf-core/sortmerna/tests/tags.yml create mode 100644 modules/nf-core/star/align/environment.yml create mode 100644 modules/nf-core/star/align/tests/main.nf.test create mode 100644 modules/nf-core/star/align/tests/main.nf.test.snap create mode 100644 modules/nf-core/star/align/tests/nextflow.arriba.config create mode 100644 modules/nf-core/star/align/tests/nextflow.config create mode 100644 modules/nf-core/star/align/tests/nextflow.starfusion.config create mode 100644 modules/nf-core/star/align/tests/tags.yml create mode 100644 modules/nf-core/star/genomegenerate/environment.yml create mode 100644 modules/nf-core/star/genomegenerate/tests/main.nf.test create mode 100644 modules/nf-core/star/genomegenerate/tests/main.nf.test.snap create mode 100644 modules/nf-core/star/genomegenerate/tests/tags.yml create mode 100644 modules/nf-core/stringtie/stringtie/environment.yml create mode 100644 modules/nf-core/stringtie/stringtie/tests/main.nf.test create mode 100644 modules/nf-core/stringtie/stringtie/tests/main.nf.test.snap create mode 100644 modules/nf-core/stringtie/stringtie/tests/tags.yml create mode 100644 modules/nf-core/subread/featurecounts/environment.yml create mode 100644 modules/nf-core/subread/featurecounts/tests/main.nf.test create mode 100644 modules/nf-core/subread/featurecounts/tests/main.nf.test.snap create mode 100644 modules/nf-core/subread/featurecounts/tests/nextflow.config create mode 100644 modules/nf-core/subread/featurecounts/tests/tags.yml create mode 100644 modules/nf-core/trimgalore/environment.yml create mode 100644 modules/nf-core/trimgalore/tests/main.nf.test create mode 100644 modules/nf-core/trimgalore/tests/main.nf.test.snap create mode 100644 modules/nf-core/trimgalore/tests/tags.yml create mode 100644 modules/nf-core/ucsc/bedclip/environment.yml mode change 100755 => 100644 modules/nf-core/ucsc/bedclip/meta.yml create mode 100644 modules/nf-core/ucsc/bedclip/tests/main.nf.test create mode 100644 modules/nf-core/ucsc/bedclip/tests/main.nf.test.snap create mode 100644 modules/nf-core/ucsc/bedclip/tests/nextflow.config create mode 100644 modules/nf-core/ucsc/bedclip/tests/tags.yml create mode 100644 modules/nf-core/ucsc/bedgraphtobigwig/environment.yml create mode 100644 modules/nf-core/ucsc/bedgraphtobigwig/tests/main.nf.test create mode 100644 modules/nf-core/ucsc/bedgraphtobigwig/tests/main.nf.test.snap create mode 100644 modules/nf-core/ucsc/bedgraphtobigwig/tests/tags.yml create mode 100644 modules/nf-core/umitools/dedup/environment.yml create mode 100644 modules/nf-core/umitools/extract/environment.yml create mode 100644 modules/nf-core/umitools/extract/tests/main.nf.test create mode 100644 modules/nf-core/umitools/extract/tests/main.nf.test.snap create mode 100644 modules/nf-core/umitools/extract/tests/nextflow.config create mode 100644 modules/nf-core/umitools/extract/tests/tags.yml create mode 100644 modules/nf-core/untar/environment.yml create mode 100644 modules/nf-core/untar/tests/main.nf.test create mode 100644 modules/nf-core/untar/tests/main.nf.test.snap create mode 100644 modules/nf-core/untar/tests/tags.yml create mode 100644 subworkflows/nf-core/bam_dedup_stats_samtools_umitools/tests/main.nf.test create mode 100644 subworkflows/nf-core/bam_dedup_stats_samtools_umitools/tests/main.nf.test.snap create mode 100644 subworkflows/nf-core/bam_dedup_stats_samtools_umitools/tests/tags.yml create mode 100644 subworkflows/nf-core/bam_markduplicates_picard/tests/main.nf.test create mode 100644 subworkflows/nf-core/bam_markduplicates_picard/tests/main.nf.test.snap create mode 100644 subworkflows/nf-core/bam_markduplicates_picard/tests/tags.yml create mode 100644 subworkflows/nf-core/bam_rseqc/tests/main.nf.test create mode 100644 subworkflows/nf-core/bam_rseqc/tests/main.nf.test.snap create mode 100644 subworkflows/nf-core/bam_rseqc/tests/tags.yml create mode 100644 subworkflows/nf-core/bam_sort_stats_samtools/tests/main.nf.test create mode 100644 subworkflows/nf-core/bam_sort_stats_samtools/tests/main.nf.test.snap create mode 100644 subworkflows/nf-core/bam_sort_stats_samtools/tests/tags.yml create mode 100644 subworkflows/nf-core/bam_stats_samtools/tests/main.nf.test create mode 100644 subworkflows/nf-core/bam_stats_samtools/tests/main.nf.test.snap create mode 100644 subworkflows/nf-core/bam_stats_samtools/tests/tags.yml create mode 100644 subworkflows/nf-core/bedgraph_bedclip_bedgraphtobigwig/tests/main.nf.test create mode 100644 subworkflows/nf-core/bedgraph_bedclip_bedgraphtobigwig/tests/main.nf.test.snap create mode 100644 subworkflows/nf-core/bedgraph_bedclip_bedgraphtobigwig/tests/nextflow.config create mode 100644 subworkflows/nf-core/bedgraph_bedclip_bedgraphtobigwig/tests/tags.yml create mode 100644 subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/main.nf.test create mode 100644 subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/main.nf.test.snap create mode 100644 subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/tags.yml create mode 100644 subworkflows/nf-core/fastq_subsample_fq_salmon/tests/main.nf.test create mode 100644 subworkflows/nf-core/fastq_subsample_fq_salmon/tests/main.nf.test.snap create mode 100644 subworkflows/nf-core/fastq_subsample_fq_salmon/tests/nextflow.config create mode 100644 subworkflows/nf-core/fastq_subsample_fq_salmon/tests/tags.yml diff --git a/modules.json b/modules.json index 7d0984e5b..723c8ddcc 100644 --- a/modules.json +++ b/modules.json @@ -7,231 +7,231 @@ "nf-core": { "bbmap/bbsplit": { "branch": "master", - "git_sha": "de3e6fc949dcffb8d3508c015f435ace5773ff08", + "git_sha": "e2b2b102d1d2e3b553177ca00ad74dc8a0a42c46", "installed_by": ["modules"] }, "cat/fastq": { "branch": "master", - "git_sha": "5c460c5a4736974abde2843294f35307ee2b0e5e", + "git_sha": "02fd5bd7275abad27aad32d5c852e0a9b1b98882", "installed_by": ["modules"] }, "custom/dumpsoftwareversions": { "branch": "master", - "git_sha": "bba7e362e4afead70653f84d8700588ea28d0f9e", + "git_sha": "8ec825f465b9c17f9d83000022995b4f7de6fe93", "installed_by": ["modules"] }, "custom/getchromsizes": { "branch": "master", - "git_sha": "911696ea0b62df80e900ef244d7867d177971f73", + "git_sha": "1b0ffa4e5aed5b7e3cd4311af31bd3b2c8345051", "installed_by": ["modules"] }, "fastp": { "branch": "master", - "git_sha": "d497a4868ace3302016ea8ed4b395072d5e833cd", + "git_sha": "003920c7f9a8ae19b69a97171922880220bedf56", "installed_by": ["fastq_fastqc_umitools_fastp", "modules"] }, "fastqc": { "branch": "master", - "git_sha": "102cc9b709a6da9f7cee2373563ab1464fca9c0a", - "installed_by": ["fastq_fastqc_umitools_trimgalore", "fastq_fastqc_umitools_fastp"] + "git_sha": "f4ae1d942bd50c5c0b9bd2de1393ce38315ba57c", + "installed_by": ["fastq_fastqc_umitools_fastp", "fastq_fastqc_umitools_trimgalore"] }, "fq/subsample": { "branch": "master", - "git_sha": "911696ea0b62df80e900ef244d7867d177971f73", - "installed_by": ["modules", "fastq_subsample_fq_salmon"] + "git_sha": "59d1faf07ace4f7a00f7fa7778bce4e1f1dcdd63", + "installed_by": ["fastq_subsample_fq_salmon", "modules"] }, "gffread": { "branch": "master", - "git_sha": "8ec825f465b9c17f9d83000022995b4f7de6fe93", + "git_sha": "575e1bc54b083fb15e7dd8b5fcc40bea60e8ce83", "installed_by": ["modules"] }, "gunzip": { "branch": "master", - "git_sha": "e06548bfa36ee31869b81041879dd6b3a83b1d57", + "git_sha": "3a5fef109d113b4997c9822198664ca5f2716208", "installed_by": ["modules"] }, "hisat2/align": { "branch": "master", - "git_sha": "a1881f6374506f9e031b7af814768cdb44a6a7d3", + "git_sha": "400037f54de4b0c42712ec5a499d9fd9e66250d1", "installed_by": ["fastq_align_hisat2"] }, "hisat2/build": { "branch": "master", - "git_sha": "f2f48836bf5c59434966a6c3b2211b29363f31ab", + "git_sha": "400037f54de4b0c42712ec5a499d9fd9e66250d1", "installed_by": ["modules"] }, "hisat2/extractsplicesites": { "branch": "master", - "git_sha": "735e1e04e7e01751d2d6e97055bbdb6f70683cc1", + "git_sha": "400037f54de4b0c42712ec5a499d9fd9e66250d1", "installed_by": ["modules"] }, "kallisto/index": { "branch": "master", - "git_sha": "3f5420aa22e00bd030a2556dfdffc9e164ec0ec5", + "git_sha": "de5811dd9ca15af1e131806001bcaae909e42021", "installed_by": ["modules"] }, "kallisto/quant": { "branch": "master", - "git_sha": "bdc2a97ced7adc423acfa390742db83cab98c1ad", + "git_sha": "de5811dd9ca15af1e131806001bcaae909e42021", "installed_by": ["modules"] }, "picard/markduplicates": { "branch": "master", - "git_sha": "2ee934606f1fdf7fc1cb05d6e8abc13bec8ab448", + "git_sha": "ec833ac4c29db6005d18baccf3306f557c46b006", "installed_by": ["bam_markduplicates_picard"] }, "preseq/lcextrap": { "branch": "master", - "git_sha": "911696ea0b62df80e900ef244d7867d177971f73", + "git_sha": "9a88058962c0ee1715f2ad0e017c37e0cd75e532", "installed_by": ["modules"] }, "qualimap/rnaseq": { "branch": "master", - "git_sha": "3902a0cfeb7a4bc12872371d1bea93aba692243b", + "git_sha": "6b0e4fe14ca1b12e131f64608f0bbaf36fd11451", "installed_by": ["modules"] }, "rsem/calculateexpression": { "branch": "master", - "git_sha": "603ecbd9f45300c9788f197d2a15a005685b4220", + "git_sha": "8ec12d844837b0167540c910afe4d3f920cd7114", "installed_by": ["modules"] }, "rsem/preparereference": { "branch": "master", - "git_sha": "603ecbd9f45300c9788f197d2a15a005685b4220", + "git_sha": "8ec12d844837b0167540c910afe4d3f920cd7114", "installed_by": ["modules"] }, "rseqc/bamstat": { "branch": "master", - "git_sha": "911696ea0b62df80e900ef244d7867d177971f73", + "git_sha": "41f4baa439663b9027727d83a3293db93bad3f8c", "installed_by": ["bam_rseqc"] }, "rseqc/inferexperiment": { "branch": "master", - "git_sha": "911696ea0b62df80e900ef244d7867d177971f73", + "git_sha": "41f4baa439663b9027727d83a3293db93bad3f8c", "installed_by": ["bam_rseqc"] }, "rseqc/innerdistance": { "branch": "master", - "git_sha": "911696ea0b62df80e900ef244d7867d177971f73", + "git_sha": "41f4baa439663b9027727d83a3293db93bad3f8c", "installed_by": ["bam_rseqc"] }, "rseqc/junctionannotation": { "branch": "master", - "git_sha": "911696ea0b62df80e900ef244d7867d177971f73", + "git_sha": "41f4baa439663b9027727d83a3293db93bad3f8c", "installed_by": ["bam_rseqc"] }, "rseqc/junctionsaturation": { "branch": "master", - "git_sha": "911696ea0b62df80e900ef244d7867d177971f73", + "git_sha": "41f4baa439663b9027727d83a3293db93bad3f8c", "installed_by": ["bam_rseqc"] }, "rseqc/readdistribution": { "branch": "master", - "git_sha": "911696ea0b62df80e900ef244d7867d177971f73", + "git_sha": "41f4baa439663b9027727d83a3293db93bad3f8c", "installed_by": ["bam_rseqc"] }, "rseqc/readduplication": { "branch": "master", - "git_sha": "911696ea0b62df80e900ef244d7867d177971f73", + "git_sha": "41f4baa439663b9027727d83a3293db93bad3f8c", "installed_by": ["bam_rseqc"] }, "rseqc/tin": { "branch": "master", - "git_sha": "911696ea0b62df80e900ef244d7867d177971f73", + "git_sha": "41f4baa439663b9027727d83a3293db93bad3f8c", "installed_by": ["bam_rseqc"] }, "salmon/index": { "branch": "master", - "git_sha": "911696ea0b62df80e900ef244d7867d177971f73", + "git_sha": "ce801ced94947b2ff01002b4120eef2f79489b34", "installed_by": ["fastq_subsample_fq_salmon"] }, "salmon/quant": { "branch": "master", - "git_sha": "c5b528d0a51c31621b485ab3bcc008f483619ea6", - "installed_by": ["modules", "fastq_subsample_fq_salmon"] + "git_sha": "003920c7f9a8ae19b69a97171922880220bedf56", + "installed_by": ["fastq_subsample_fq_salmon", "modules"] }, "samtools/flagstat": { "branch": "master", - "git_sha": "570ec5bcfe19c49e16c9ca35a7a116563af6cc1c", + "git_sha": "ce0b1aed7d504883061e748f492a31bf44c5777c", "installed_by": ["bam_stats_samtools"] }, "samtools/idxstats": { "branch": "master", - "git_sha": "e662ab16e0c11f1e62983e21de9871f59371a639", + "git_sha": "ce0b1aed7d504883061e748f492a31bf44c5777c", "installed_by": ["bam_stats_samtools"] }, "samtools/index": { "branch": "master", - "git_sha": "911696ea0b62df80e900ef244d7867d177971f73", + "git_sha": "ce0b1aed7d504883061e748f492a31bf44c5777c", "installed_by": [ + "bam_dedup_stats_samtools_umitools", "bam_markduplicates_picard", - "bam_sort_stats_samtools", - "bam_dedup_stats_samtools_umitools" + "bam_sort_stats_samtools" ] }, "samtools/sort": { "branch": "master", - "git_sha": "a0f7be95788366c1923171e358da7d049eb440f9", + "git_sha": "ce0b1aed7d504883061e748f492a31bf44c5777c", "installed_by": ["bam_sort_stats_samtools"] }, "samtools/stats": { "branch": "master", - "git_sha": "735e1e04e7e01751d2d6e97055bbdb6f70683cc1", + "git_sha": "ec833ac4c29db6005d18baccf3306f557c46b006", "installed_by": ["bam_stats_samtools"] }, "sortmerna": { "branch": "master", - "git_sha": "911696ea0b62df80e900ef244d7867d177971f73", + "git_sha": "003920c7f9a8ae19b69a97171922880220bedf56", "installed_by": ["modules"] }, "star/align": { "branch": "master", - "git_sha": "cc08a888069f67cab8120259bddab8032d4c0fe3", + "git_sha": "1e2b7fb7106852388610c0360d234b0829eb980e", "installed_by": ["modules"] }, "star/genomegenerate": { "branch": "master", - "git_sha": "cc08a888069f67cab8120259bddab8032d4c0fe3", + "git_sha": "1e2b7fb7106852388610c0360d234b0829eb980e", "installed_by": ["modules"] }, "stringtie/stringtie": { "branch": "master", - "git_sha": "911696ea0b62df80e900ef244d7867d177971f73", + "git_sha": "b0dcb44b018d9b2bcb35b1abb7bcd34061bc5a6d", "installed_by": ["modules"] }, "subread/featurecounts": { "branch": "master", - "git_sha": "911696ea0b62df80e900ef244d7867d177971f73", + "git_sha": "d062b356938ea98d29b298691adf0620d3c3bdf0", "installed_by": ["modules"] }, "trimgalore": { "branch": "master", - "git_sha": "911696ea0b62df80e900ef244d7867d177971f73", + "git_sha": "3f5420aa22e00bd030a2556dfdffc9e164ec0ec5", "installed_by": ["fastq_fastqc_umitools_trimgalore"] }, "ucsc/bedclip": { "branch": "master", - "git_sha": "240937a2a9c30298110753292be041188891f2cb", + "git_sha": "8899867378857ade0a68d1e6744619070ccbc2d4", "installed_by": ["bedgraph_bedclip_bedgraphtobigwig"] }, "ucsc/bedgraphtobigwig": { "branch": "master", - "git_sha": "66290981ab6038ea86177ade40b9449bc790b0ce", + "git_sha": "3f5420aa22e00bd030a2556dfdffc9e164ec0ec5", "installed_by": ["bedgraph_bedclip_bedgraphtobigwig"] }, "umitools/dedup": { "branch": "master", - "git_sha": "7297204bf49273300a3dbfa4b7a4027c8683f1bd", + "git_sha": "65ad3e0b9a4099592e1102e92e10455dc661cf53", "installed_by": ["bam_dedup_stats_samtools_umitools"] }, "umitools/extract": { "branch": "master", - "git_sha": "911696ea0b62df80e900ef244d7867d177971f73", + "git_sha": "65ad3e0b9a4099592e1102e92e10455dc661cf53", "installed_by": ["fastq_fastqc_umitools_fastp", "fastq_fastqc_umitools_trimgalore"] }, "untar": { "branch": "master", - "git_sha": "d0b4fc03af52a1cc8c6fb4493b921b57352b1dd8", + "git_sha": "e719354ba77df0a1bd310836aa2039b45c29d620", "installed_by": ["modules"] } } @@ -240,56 +240,56 @@ "nf-core": { "bam_dedup_stats_samtools_umitools": { "branch": "master", - "git_sha": "dedc0e31087f3306101c38835d051bf49789445a", + "git_sha": "0c38be7e652a0b2f3a37681ee4c0dbdf85677647", "installed_by": ["subworkflows"] }, "bam_markduplicates_picard": { "branch": "master", - "git_sha": "dedc0e31087f3306101c38835d051bf49789445a", + "git_sha": "0c38be7e652a0b2f3a37681ee4c0dbdf85677647", "installed_by": ["subworkflows"] }, "bam_rseqc": { "branch": "master", - "git_sha": "a9784afdd5dcda23b84e64db75dc591065d64653", + "git_sha": "0c38be7e652a0b2f3a37681ee4c0dbdf85677647", "installed_by": ["subworkflows"] }, "bam_sort_stats_samtools": { "branch": "master", - "git_sha": "dedc0e31087f3306101c38835d051bf49789445a", + "git_sha": "0c38be7e652a0b2f3a37681ee4c0dbdf85677647", "installed_by": ["fastq_align_hisat2"] }, "bam_stats_samtools": { "branch": "master", - "git_sha": "dedc0e31087f3306101c38835d051bf49789445a", + "git_sha": "0c38be7e652a0b2f3a37681ee4c0dbdf85677647", "installed_by": [ - "bam_sort_stats_samtools", + "bam_dedup_stats_samtools_umitools", "bam_markduplicates_picard", - "bam_dedup_stats_samtools_umitools" + "bam_sort_stats_samtools" ] }, "bedgraph_bedclip_bedgraphtobigwig": { "branch": "master", - "git_sha": "dedc0e31087f3306101c38835d051bf49789445a", + "git_sha": "a4bceac1aecee5aa0a5dbc601baf0e2e61013fb2", "installed_by": ["subworkflows"] }, "fastq_align_hisat2": { "branch": "master", - "git_sha": "dedc0e31087f3306101c38835d051bf49789445a", + "git_sha": "cfd937a668919d948f6fcbf4218e79de50c2f36f", "installed_by": ["subworkflows"] }, "fastq_fastqc_umitools_fastp": { "branch": "master", - "git_sha": "dedc0e31087f3306101c38835d051bf49789445a", + "git_sha": "003920c7f9a8ae19b69a97171922880220bedf56", "installed_by": ["subworkflows"] }, "fastq_fastqc_umitools_trimgalore": { "branch": "master", - "git_sha": "dedc0e31087f3306101c38835d051bf49789445a", + "git_sha": "cfd937a668919d948f6fcbf4218e79de50c2f36f", "installed_by": ["subworkflows"] }, "fastq_subsample_fq_salmon": { "branch": "master", - "git_sha": "dedc0e31087f3306101c38835d051bf49789445a", + "git_sha": "003920c7f9a8ae19b69a97171922880220bedf56", "installed_by": ["subworkflows"] } } diff --git a/modules/nf-core/bbmap/bbsplit/environment.yml b/modules/nf-core/bbmap/bbsplit/environment.yml new file mode 100644 index 000000000..4c6db6276 --- /dev/null +++ b/modules/nf-core/bbmap/bbsplit/environment.yml @@ -0,0 +1,7 @@ +name: bbmap_bbsplit +channels: + - conda-forge + - bioconda + - defaults +dependencies: + - bioconda::bbmap=39.01 diff --git a/modules/nf-core/bbmap/bbsplit/main.nf b/modules/nf-core/bbmap/bbsplit/main.nf index f82bb9e47..81460019a 100644 --- a/modules/nf-core/bbmap/bbsplit/main.nf +++ b/modules/nf-core/bbmap/bbsplit/main.nf @@ -3,7 +3,7 @@ process BBMAP_BBSPLIT { label 'process_high' label 'error_retry' - conda "bioconda::bbmap=39.01" + conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/bbmap:39.01--h5c4e2a8_0': 'biocontainers/bbmap:39.01--h5c4e2a8_0' }" @@ -12,7 +12,7 @@ process BBMAP_BBSPLIT { tuple val(meta), path(reads) path index path primary_ref - tuple val(other_ref_names), path (other_ref_paths) + tuple val(other_ref_names), path(other_ref_paths) val only_build_index output: @@ -86,4 +86,5 @@ process BBMAP_BBSPLIT { END_VERSIONS """ } + } diff --git a/modules/nf-core/bbmap/bbsplit/meta.yml b/modules/nf-core/bbmap/bbsplit/meta.yml index caa3dd66c..f4e0a5ed5 100644 --- a/modules/nf-core/bbmap/bbsplit/meta.yml +++ b/modules/nf-core/bbmap/bbsplit/meta.yml @@ -11,9 +11,7 @@ tools: description: BBMap is a short read aligner, as well as various other bioinformatic tools. homepage: https://jgi.doe.gov/data-and-tools/bbtools/bb-tools-user-guide/ documentation: https://jgi.doe.gov/data-and-tools/bbtools/bb-tools-user-guide/ - licence: ["UC-LBL license (see package)"] - input: - meta: type: map @@ -42,7 +40,6 @@ input: - only_build_index: type: string description: true = only build index; false = mapping - output: - meta: type: map @@ -69,7 +66,9 @@ output: type: file description: Tab-delimited text file containing mapping statistics pattern: "*.txt" - authors: - "@joseespinosa" - "@drpatelh" +maintainers: + - "@joseespinosa" + - "@drpatelh" diff --git a/modules/nf-core/bbmap/bbsplit/tests/main.nf.test b/modules/nf-core/bbmap/bbsplit/tests/main.nf.test new file mode 100644 index 000000000..bb64daae1 --- /dev/null +++ b/modules/nf-core/bbmap/bbsplit/tests/main.nf.test @@ -0,0 +1,90 @@ +nextflow_process { + + name "Test Process BBMAP_BBSPLIT" + script "../main.nf" + process "BBMAP_BBSPLIT" + tag "modules" + tag "modules_nfcore" + tag "bbmap" + tag "bbmap/bbsplit" + + test("sarscov2_se_fastq_fasta_chr22_fasta") { + + setup { + + run("BBMAP_BBSPLIT", alias: "BBMAP_BBSPLIT_INDEX") { + script "../main.nf" + process { + """ + input[0] = [[:],[]] + input[1] = [] + input[2] = Channel.of(file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true)) + input[3] = Channel.of([ + [ 'human' ], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr22/sequence/chr22_23800000-23980000.fa', checkIfExists: true) + ]) + input[4] = true + """ + } + } + } + + when { + params { + outdir = "$outputDir" + } + process { + """ + input[0] = Channel.of([ + [ id:'test', single_end:true ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true) + ]) + input[1] = BBMAP_BBSPLIT_INDEX.out.index + input[2] = Channel.of(file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true)) + input[3] = Channel.of([ + [ 'human' ], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr22/sequence/chr22_23800000-23980000.fa', checkIfExists: true) + ]) + input[4] = true + """ + } + } + + then { + def filesToExclude = [ + "info.txt", + "reflist.txt", + "scaffolds.txt.gz", + "summary.txt" + ] + + def outputFiles = [] + def outputDirectory = new File(process.out.index[0]) + outputDirectory.eachFileRecurse { file -> + if (file.isFile()){ + outputFiles << file + } + } + + def filesExist = filesToExclude.every { excludeName -> + outputFiles.any { file -> + file.getName().endsWith(excludeName) && file.exists() + } + } + + def filteredFiles = outputFiles + .findAll { file -> + !filesToExclude.any { excludeName -> + file.getName().endsWith(excludeName) + } + }.sort{ it.getName()} + + assertAll( + { assert process.success }, + { assert snapshot(filteredFiles).match("bbsplit_index_filtered_files")}, + { assert filesExist : "One or more files to exclude do not exist" }, + { assert snapshot(process.out.versions).match("versions")} + ) + } + } +} diff --git a/modules/nf-core/bbmap/bbsplit/tests/main.nf.test.snap b/modules/nf-core/bbmap/bbsplit/tests/main.nf.test.snap new file mode 100644 index 000000000..51b3bee1f --- /dev/null +++ b/modules/nf-core/bbmap/bbsplit/tests/main.nf.test.snap @@ -0,0 +1,30 @@ +{ + "bbsplit_index_filtered_files": { + "content": [ + [ + "chr1.chrom.gz:md5,8fec4c63ec642613ad10adf4cc2e6ade", + "chr1_index_k13_c13_b1.block:md5,385913c1e84b77dc7bf36288ee1c8706", + "chr1_index_k13_c13_b1.block2.gz:md5,2556b45206835a0ff7078d683b5fd6e2", + "merged_ref_9222711925172838098.fa.gz:md5,983cef447fb28394b88a5b49b3579f0c", + "namelist.txt:md5,45e7a4cdc7a11a39ada56844ca3a1e30" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-01T17:15:59.705013452" + }, + "versions": { + "content": [ + [ + "versions.yml:md5,cb7f0e697ab2537f8ced951bfade90d4" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-01T17:11:22.441753642" + } +} diff --git a/modules/nf-core/bbmap/bbsplit/tests/tags.yml b/modules/nf-core/bbmap/bbsplit/tests/tags.yml new file mode 100644 index 000000000..f6943f95d --- /dev/null +++ b/modules/nf-core/bbmap/bbsplit/tests/tags.yml @@ -0,0 +1,2 @@ +bbmap/bbsplit: + - "modules/nf-core/bbmap/bbsplit/**" diff --git a/modules/nf-core/cat/fastq/environment.yml b/modules/nf-core/cat/fastq/environment.yml new file mode 100644 index 000000000..bff93add0 --- /dev/null +++ b/modules/nf-core/cat/fastq/environment.yml @@ -0,0 +1,7 @@ +name: cat_fastq +channels: + - conda-forge + - bioconda + - defaults +dependencies: + - conda-forge::sed=4.7 diff --git a/modules/nf-core/cat/fastq/main.nf b/modules/nf-core/cat/fastq/main.nf index 5021e6fcb..3d963784c 100644 --- a/modules/nf-core/cat/fastq/main.nf +++ b/modules/nf-core/cat/fastq/main.nf @@ -2,7 +2,7 @@ process CAT_FASTQ { tag "$meta.id" label 'process_single' - conda "conda-forge::sed=4.7" + conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/ubuntu:20.04' : 'nf-core/ubuntu:20.04' }" diff --git a/modules/nf-core/cat/fastq/meta.yml b/modules/nf-core/cat/fastq/meta.yml index 8a39e309f..db4ac3c79 100644 --- a/modules/nf-core/cat/fastq/meta.yml +++ b/modules/nf-core/cat/fastq/meta.yml @@ -34,7 +34,9 @@ output: type: file description: File containing software versions pattern: "versions.yml" - authors: - "@joseespinosa" - "@drpatelh" +maintainers: + - "@joseespinosa" + - "@drpatelh" diff --git a/modules/nf-core/cat/fastq/tests/main.nf.test b/modules/nf-core/cat/fastq/tests/main.nf.test new file mode 100644 index 000000000..dab2e14c0 --- /dev/null +++ b/modules/nf-core/cat/fastq/tests/main.nf.test @@ -0,0 +1,138 @@ +nextflow_process { + + name "Test Process CAT_FASTQ" + script "../main.nf" + process "CAT_FASTQ" + tag "modules" + tag "modules_nfcore" + tag "cat" + tag "cat/fastq" + + test("test_cat_fastq_single_end") { + + when { + params { + outdir = "$outputDir" + } + process { + """ + input[0] = Channel.of([ + [ id:'test', single_end:true ], // 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 snapshot(process.out).match() } + ) + } + } + + test("test_cat_fastq_paired_end") { + + when { + params { + outdir = "$outputDir" + } + 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 snapshot(process.out).match() } + ) + } + } + + test("test_cat_fastq_single_end_same_name") { + + when { + params { + outdir = "$outputDir" + } + process { + """ + input[0] = Channel.of([ + [ id:'test', single_end:true ], // 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_1.fastq.gz', checkIfExists: true)] + ]) + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("test_cat_fastq_paired_end_same_name") { + + when { + params { + outdir = "$outputDir" + } + 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/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(process.out).match() } + ) + } + } + + test("test_cat_fastq_single_end_single_file") { + + when { + params { + outdir = "$outputDir" + } + process { + """ + input[0] = Channel.of([ + [ id:'test', 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 snapshot(process.out).match() } + ) + } + } +} diff --git a/modules/nf-core/cat/fastq/tests/main.nf.test.snap b/modules/nf-core/cat/fastq/tests/main.nf.test.snap new file mode 100644 index 000000000..43dfe28fc --- /dev/null +++ b/modules/nf-core/cat/fastq/tests/main.nf.test.snap @@ -0,0 +1,169 @@ +{ + "test_cat_fastq_single_end": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": true + }, + "test.merged.fastq.gz:md5,ee314a9bd568d06617171b0c85f508da" + ] + ], + "1": [ + "versions.yml:md5,d42d6e24d67004608495883e00bd501b" + ], + "reads": [ + [ + { + "id": "test", + "single_end": true + }, + "test.merged.fastq.gz:md5,ee314a9bd568d06617171b0c85f508da" + ] + ], + "versions": [ + "versions.yml:md5,d42d6e24d67004608495883e00bd501b" + ] + } + ], + "timestamp": "2024-01-17T17:30:39.816981" + }, + "test_cat_fastq_single_end_same_name": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": true + }, + "test.merged.fastq.gz:md5,3ad9406595fafec8172368f9cd0b6a22" + ] + ], + "1": [ + "versions.yml:md5,d42d6e24d67004608495883e00bd501b" + ], + "reads": [ + [ + { + "id": "test", + "single_end": true + }, + "test.merged.fastq.gz:md5,3ad9406595fafec8172368f9cd0b6a22" + ] + ], + "versions": [ + "versions.yml:md5,d42d6e24d67004608495883e00bd501b" + ] + } + ], + "timestamp": "2024-01-17T17:32:35.229332" + }, + "test_cat_fastq_single_end_single_file": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": true + }, + "test.merged.fastq.gz:md5,4161df271f9bfcd25d5845a1e220dbec" + ] + ], + "1": [ + "versions.yml:md5,d42d6e24d67004608495883e00bd501b" + ], + "reads": [ + [ + { + "id": "test", + "single_end": true + }, + "test.merged.fastq.gz:md5,4161df271f9bfcd25d5845a1e220dbec" + ] + ], + "versions": [ + "versions.yml:md5,d42d6e24d67004608495883e00bd501b" + ] + } + ], + "timestamp": "2024-01-17T17:34:00.058829" + }, + "test_cat_fastq_paired_end_same_name": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test_1.merged.fastq.gz:md5,3ad9406595fafec8172368f9cd0b6a22", + "test_2.merged.fastq.gz:md5,a52cab0b840c7178b0ea83df1fdbe8d5" + ] + ] + ], + "1": [ + "versions.yml:md5,d42d6e24d67004608495883e00bd501b" + ], + "reads": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test_1.merged.fastq.gz:md5,3ad9406595fafec8172368f9cd0b6a22", + "test_2.merged.fastq.gz:md5,a52cab0b840c7178b0ea83df1fdbe8d5" + ] + ] + ], + "versions": [ + "versions.yml:md5,d42d6e24d67004608495883e00bd501b" + ] + } + ], + "timestamp": "2024-01-17T17:33:33.031555" + }, + "test_cat_fastq_paired_end": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test_1.merged.fastq.gz:md5,3ad9406595fafec8172368f9cd0b6a22", + "test_2.merged.fastq.gz:md5,a52cab0b840c7178b0ea83df1fdbe8d5" + ] + ] + ], + "1": [ + "versions.yml:md5,d42d6e24d67004608495883e00bd501b" + ], + "reads": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test_1.merged.fastq.gz:md5,3ad9406595fafec8172368f9cd0b6a22", + "test_2.merged.fastq.gz:md5,a52cab0b840c7178b0ea83df1fdbe8d5" + ] + ] + ], + "versions": [ + "versions.yml:md5,d42d6e24d67004608495883e00bd501b" + ] + } + ], + "timestamp": "2024-01-17T17:32:02.270935" + } +} \ No newline at end of file diff --git a/modules/nf-core/cat/fastq/tests/tags.yml b/modules/nf-core/cat/fastq/tests/tags.yml new file mode 100644 index 000000000..6ac436140 --- /dev/null +++ b/modules/nf-core/cat/fastq/tests/tags.yml @@ -0,0 +1,2 @@ +cat/fastq: + - modules/nf-core/cat/fastq/** diff --git a/modules/nf-core/custom/dumpsoftwareversions/main.nf b/modules/nf-core/custom/dumpsoftwareversions/main.nf index b2dcf480e..f2187611c 100644 --- a/modules/nf-core/custom/dumpsoftwareversions/main.nf +++ b/modules/nf-core/custom/dumpsoftwareversions/main.nf @@ -2,7 +2,7 @@ process CUSTOM_DUMPSOFTWAREVERSIONS { label 'process_single' // Requires `pyyaml` which does not have a dedicated container but is in the MultiQC container - conda "bioconda::multiqc=1.19" + conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/multiqc:1.19--pyhdfd78af_0' : 'biocontainers/multiqc:1.19--pyhdfd78af_0' }" diff --git a/modules/nf-core/custom/getchromsizes/environment.yml b/modules/nf-core/custom/getchromsizes/environment.yml new file mode 100644 index 000000000..2a01695f1 --- /dev/null +++ b/modules/nf-core/custom/getchromsizes/environment.yml @@ -0,0 +1,7 @@ +name: custom_getchromsizes +channels: + - conda-forge + - bioconda + - defaults +dependencies: + - bioconda::samtools=1.16.1 diff --git a/modules/nf-core/custom/getchromsizes/main.nf b/modules/nf-core/custom/getchromsizes/main.nf index 060a2e885..e8084ea2c 100644 --- a/modules/nf-core/custom/getchromsizes/main.nf +++ b/modules/nf-core/custom/getchromsizes/main.nf @@ -2,7 +2,7 @@ process CUSTOM_GETCHROMSIZES { tag "$fasta" label 'process_single' - conda "bioconda::samtools=1.16.1" + conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/samtools:1.16.1--h6899075_1' : 'biocontainers/samtools:1.16.1--h6899075_1' }" diff --git a/modules/nf-core/custom/getchromsizes/meta.yml b/modules/nf-core/custom/getchromsizes/meta.yml index 219ca1d8e..529be07e4 100644 --- a/modules/nf-core/custom/getchromsizes/meta.yml +++ b/modules/nf-core/custom/getchromsizes/meta.yml @@ -12,7 +12,6 @@ tools: tool_dev_url: https://github.com/samtools/samtools doi: 10.1093/bioinformatics/btp352 licence: ["MIT"] - input: - meta: type: map @@ -23,7 +22,6 @@ input: type: file description: FASTA file pattern: "*.{fa,fasta,fna,fas}" - output: - meta: type: map @@ -46,8 +44,11 @@ output: type: file description: File containing software versions pattern: "versions.yml" - authors: - "@tamara-hodgetts" - "@chris-cheshire" - "@muffato" +maintainers: + - "@tamara-hodgetts" + - "@chris-cheshire" + - "@muffato" diff --git a/modules/nf-core/custom/getchromsizes/tests/main.nf.test b/modules/nf-core/custom/getchromsizes/tests/main.nf.test new file mode 100644 index 000000000..9f6b5640e --- /dev/null +++ b/modules/nf-core/custom/getchromsizes/tests/main.nf.test @@ -0,0 +1,62 @@ +nextflow_process { + + name "Test Process CUSTOM_GETCHROMSIZES" + script "../main.nf" + process "CUSTOM_GETCHROMSIZES" + + tag "modules" + tag "modules_nfcore" + tag "custom" + tag "custom/getchromsizes" + + test("test_custom_getchromsizes") { + + when { + params { + outdir = "$outputDir" + } + process { + """ + input[0] = Channel.of([ + [ id:'test' ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) + ]) + """ + } + } + + then { + assertAll ( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + + test("test_custom_getchromsizes_bgzip") { + + when { + params { + outdir = "$outputDir" + } + process { + """ + input[0] = Channel.of([ + [ id:'test' ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.gz', checkIfExists: true) + ]) + """ + } + } + + then { + assertAll ( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + +} diff --git a/modules/nf-core/custom/getchromsizes/tests/main.nf.test.snap b/modules/nf-core/custom/getchromsizes/tests/main.nf.test.snap new file mode 100644 index 000000000..2e560bd32 --- /dev/null +++ b/modules/nf-core/custom/getchromsizes/tests/main.nf.test.snap @@ -0,0 +1,114 @@ +{ + "test_custom_getchromsizes": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "genome.fasta.sizes:md5,a57c401f27ae5133823fb09fb21c8a3c" + ] + ], + "1": [ + [ + { + "id": "test" + }, + "genome.fasta.fai:md5,9da2a56e2853dc8c0b86a9e7229c9fe5" + ] + ], + "2": [ + + ], + "3": [ + "versions.yml:md5,45a83c5f3dddbc5dcab30035169f7ce8" + ], + "fai": [ + [ + { + "id": "test" + }, + "genome.fasta.fai:md5,9da2a56e2853dc8c0b86a9e7229c9fe5" + ] + ], + "gzi": [ + + ], + "sizes": [ + [ + { + "id": "test" + }, + "genome.fasta.sizes:md5,a57c401f27ae5133823fb09fb21c8a3c" + ] + ], + "versions": [ + "versions.yml:md5,45a83c5f3dddbc5dcab30035169f7ce8" + ] + } + ], + "timestamp": "2024-01-17T17:48:35.562918" + }, + "test_custom_getchromsizes_bgzip": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "genome.fasta.gz.sizes:md5,a57c401f27ae5133823fb09fb21c8a3c" + ] + ], + "1": [ + [ + { + "id": "test" + }, + "genome.fasta.gz.fai:md5,9da2a56e2853dc8c0b86a9e7229c9fe5" + ] + ], + "2": [ + [ + { + "id": "test" + }, + "genome.fasta.gz.gzi:md5,7dea362b3fac8e00956a4952a3d4f474" + ] + ], + "3": [ + "versions.yml:md5,45a83c5f3dddbc5dcab30035169f7ce8" + ], + "fai": [ + [ + { + "id": "test" + }, + "genome.fasta.gz.fai:md5,9da2a56e2853dc8c0b86a9e7229c9fe5" + ] + ], + "gzi": [ + [ + { + "id": "test" + }, + "genome.fasta.gz.gzi:md5,7dea362b3fac8e00956a4952a3d4f474" + ] + ], + "sizes": [ + [ + { + "id": "test" + }, + "genome.fasta.gz.sizes:md5,a57c401f27ae5133823fb09fb21c8a3c" + ] + ], + "versions": [ + "versions.yml:md5,45a83c5f3dddbc5dcab30035169f7ce8" + ] + } + ], + "timestamp": "2024-01-17T17:49:02.562311" + } +} \ No newline at end of file diff --git a/modules/nf-core/custom/getchromsizes/tests/tags.yml b/modules/nf-core/custom/getchromsizes/tests/tags.yml new file mode 100644 index 000000000..d89a805fd --- /dev/null +++ b/modules/nf-core/custom/getchromsizes/tests/tags.yml @@ -0,0 +1,2 @@ +custom/getchromsizes: + - modules/nf-core/custom/getchromsizes/** diff --git a/modules/nf-core/fastp/environment.yml b/modules/nf-core/fastp/environment.yml new file mode 100644 index 000000000..70389e664 --- /dev/null +++ b/modules/nf-core/fastp/environment.yml @@ -0,0 +1,7 @@ +name: fastp +channels: + - conda-forge + - bioconda + - defaults +dependencies: + - bioconda::fastp=0.23.4 diff --git a/modules/nf-core/fastp/main.nf b/modules/nf-core/fastp/main.nf index 8cade07f0..2a3b679e3 100644 --- a/modules/nf-core/fastp/main.nf +++ b/modules/nf-core/fastp/main.nf @@ -2,7 +2,7 @@ process FASTP { tag "$meta.id" label 'process_medium' - conda "bioconda::fastp=0.23.4" + conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/fastp:0.23.4--h5f740d0_0' : 'biocontainers/fastp:0.23.4--h5f740d0_0' }" @@ -99,4 +99,22 @@ process FASTP { END_VERSIONS """ } + + stub: + def prefix = task.ext.prefix ?: "${meta.id}" + def is_single_output = task.ext.args?.contains('--interleaved_in') || meta.single_end + def touch_reads = is_single_output ? "${prefix}.fastp.fastq.gz" : "${prefix}_1.fastp.fastq.gz ${prefix}_2.fastp.fastq.gz" + def touch_merged = (!is_single_output && save_merged) ? "touch ${prefix}.merged.fastq.gz" : "" + """ + touch $touch_reads + touch "${prefix}.fastp.json" + touch "${prefix}.fastp.html" + touch "${prefix}.fastp.log" + $touch_merged + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + fastp: \$(fastp --version 2>&1 | sed -e "s/fastp //g") + END_VERSIONS + """ } diff --git a/modules/nf-core/fastp/meta.yml b/modules/nf-core/fastp/meta.yml index 197ea7ca6..c22a16abd 100644 --- a/modules/nf-core/fastp/meta.yml +++ b/modules/nf-core/fastp/meta.yml @@ -33,7 +33,6 @@ input: - save_merged: type: boolean description: Specify true to save all merged reads to the a file ending in `*.merged.fastq.gz` - output: - meta: type: map @@ -71,3 +70,6 @@ output: authors: - "@drpatelh" - "@kevinmenden" +maintainers: + - "@drpatelh" + - "@kevinmenden" diff --git a/modules/nf-core/fastp/tests/main.nf.test b/modules/nf-core/fastp/tests/main.nf.test new file mode 100644 index 000000000..9b3f9a38c --- /dev/null +++ b/modules/nf-core/fastp/tests/main.nf.test @@ -0,0 +1,723 @@ +nextflow_process { + + name "Test Process FASTP" + script "../main.nf" + process "FASTP" + tag "modules" + tag "modules_nfcore" + tag "fastp" + + test("test_fastp_single_end") { + + when { + params { + outdir = "$outputDir" + } + process { + """ + adapter_fasta = [] + save_trimmed_fail = false + save_merged = false + + 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) ] + ]) + input[1] = adapter_fasta + input[2] = save_trimmed_fail + input[3] = save_merged + """ + } + } + + then { + def html_text = [ "Q20 bases:") }, - { assert snapshot(process.out.versions).match("versions") } + { assert snapshot(process.out.versions).match("fastqc_versions_single") } ) } } @@ -61,7 +63,7 @@ nextflow_process { { assert path(process.out.html[0][1][0]).text.contains("") }, { assert path(process.out.html[0][1][1]).text.contains("") }, - { assert snapshot(process.out.versions).match("versions") } + { assert snapshot(process.out.versions).match("fastqc_versions_paired") } ) } } @@ -87,8 +89,124 @@ nextflow_process { { assert process.out.zip[0][1] ==~ ".*/test_fastqc.zip" }, { assert path(process.out.html[0][1]).text.contains("") }, - { assert snapshot(process.out.versions).match("versions") } + { 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("") }, + + { 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("") }, + { assert path(process.out.html[0][1][1]).text.contains("") }, + { assert path(process.out.html[0][1][2]).text.contains("") }, + { assert path(process.out.html[0][1][3]).text.contains("") }, + + { 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("") }, + + { 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 index 5d624bb82..86f7c3115 100644 --- a/modules/nf-core/fastqc/tests/main.nf.test.snap +++ b/modules/nf-core/fastqc/tests/main.nf.test.snap @@ -1,5 +1,17 @@ { - "sarscov2 single-end [fastq] - stub": { + "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", @@ -7,14 +19,70 @@ "versions.yml:md5,e1cc25ca8af856014824abd842e93978" ] ], - "timestamp": "2024-01-17T18:40:57.254299" + "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" }, - "versions": { + "fastqc_versions_custom_prefix": { "content": [ [ "versions.yml:md5,e1cc25ca8af856014824abd842e93978" ] ], - "timestamp": "2024-01-17T18:36:50.033627" + "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 new file mode 100644 index 000000000..7834294ba --- /dev/null +++ b/modules/nf-core/fastqc/tests/tags.yml @@ -0,0 +1,2 @@ +fastqc: + - modules/nf-core/fastqc/** diff --git a/modules/nf-core/fq/subsample/environment.yml b/modules/nf-core/fq/subsample/environment.yml new file mode 100644 index 000000000..c588de38a --- /dev/null +++ b/modules/nf-core/fq/subsample/environment.yml @@ -0,0 +1,7 @@ +name: fq_subsample +channels: + - conda-forge + - bioconda + - defaults +dependencies: + - bioconda::fq=0.9.1 diff --git a/modules/nf-core/fq/subsample/main.nf b/modules/nf-core/fq/subsample/main.nf index 8b4ff5be0..f3d8cc78d 100644 --- a/modules/nf-core/fq/subsample/main.nf +++ b/modules/nf-core/fq/subsample/main.nf @@ -2,7 +2,7 @@ process FQ_SUBSAMPLE { tag "$meta.id" label 'process_single' - conda "bioconda::fq=0.9.1" + conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/fq:0.9.1--h9ee0642_0': 'biocontainers/fq:0.9.1--h9ee0642_0' }" diff --git a/modules/nf-core/fq/subsample/meta.yml b/modules/nf-core/fq/subsample/meta.yml index 9d93f8df0..6c5e87f3e 100644 --- a/modules/nf-core/fq/subsample/meta.yml +++ b/modules/nf-core/fq/subsample/meta.yml @@ -2,16 +2,15 @@ name: "fq_subsample" description: fq subsample outputs a subset of records from single or paired FASTQ files. This requires a seed (--seed) to be set in ext.args. keywords: - fastq - - sample + - fq + - subsample tools: - "fq": description: "fq is a library to generate and validate FASTQ file pairs." homepage: "https://github.com/stjude-rust-labs/fq" documentation: "https://github.com/stjude-rust-labs/fq" tool_dev_url: "https://github.com/stjude-rust-labs/fq" - - licence: "['MIT']" - + licence: ["MIT"] input: - meta: type: map @@ -22,7 +21,6 @@ input: type: file description: FASTQ file pattern: "*.{fq,fastq}{,.gz}" - output: - meta: type: map @@ -37,6 +35,7 @@ output: type: file description: Randomly sampled FASTQ files. pattern: "*_R[12].fastq.gz" - authors: - "@adamrtalbot" +maintainers: + - "@adamrtalbot" diff --git a/modules/nf-core/fq/subsample/tests/main.nf.test b/modules/nf-core/fq/subsample/tests/main.nf.test new file mode 100644 index 000000000..285f30c77 --- /dev/null +++ b/modules/nf-core/fq/subsample/tests/main.nf.test @@ -0,0 +1,140 @@ +nextflow_process { + + name "Test Process FQ_SUBSAMPLE" + script "../main.nf" + process "FQ_SUBSAMPLE" + + tag "modules" + tag "modules_nfcore" + tag "fq" + tag "fq/subsample" + + test("test_fq_subsample_no_args") { + config "./nextflow_no_args.config" + when { + params { + outdir = "$outputDir" + } + 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 snapshot(process.out).match() }, + ) + } + + } + + test("test_fq_subsample_probability") { + config "./nextflow_probability.config" + when { + params { + outdir = "$outputDir" + } + 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 snapshot(process.out).match() }, + ) + } + + } + + test("test_fq_subsample_record_count") { + config "./nextflow_record_count.config" + when { + params { + outdir = "$outputDir" + } + 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 snapshot(process.out).match() }, + ) + } + + } + + test("test_fq_subsample_single") { + config "./nextflow.config" + when { + params { + outdir = "$outputDir" + } + 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) + ]) + """ + } + } + + then { + assertAll ( + { assert process.success }, + { assert snapshot(process.out).match() }, + ) + } + + } + + test("test_fq_subsample_no_input") { + config "./nextflow.config" + when { + params { + outdir = "$outputDir" + } + process { + """ + input[0] = Channel.of([ + [ id:'test', single_end:false ], // meta map + [ ] + ]) + """ + } + } + + then { + assertAll ( + { assert !process.success }, + { assert snapshot(process.out).match() }, + ) + } + + } + +} \ No newline at end of file diff --git a/modules/nf-core/fq/subsample/tests/main.nf.test.snap b/modules/nf-core/fq/subsample/tests/main.nf.test.snap new file mode 100644 index 000000000..1e47918a8 --- /dev/null +++ b/modules/nf-core/fq/subsample/tests/main.nf.test.snap @@ -0,0 +1,145 @@ +{ + "test_fq_subsample_probability": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test_R1.fastq.gz:md5,19326ff922a16c0cb81191f2a0a5c5fc", + "test_R2.fastq.gz:md5,ce7ff46296d89b68521ad55a3588bcfe" + ] + ] + ], + "1": [ + "versions.yml:md5,ffbf935bd0de512fbc9e83b187bf924f" + ], + "fastq": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test_R1.fastq.gz:md5,19326ff922a16c0cb81191f2a0a5c5fc", + "test_R2.fastq.gz:md5,ce7ff46296d89b68521ad55a3588bcfe" + ] + ] + ], + "versions": [ + "versions.yml:md5,ffbf935bd0de512fbc9e83b187bf924f" + ] + } + ], + "timestamp": "2024-01-17T17:57:15.446336" + }, + "test_fq_subsample_record_count": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test_R1.fastq.gz:md5,394c7a233f1c1c1a167a34cf2895d26d", + "test_R2.fastq.gz:md5,32724cbdb5ab954a0a659ebcd56ca422" + ] + ] + ], + "1": [ + "versions.yml:md5,ffbf935bd0de512fbc9e83b187bf924f" + ], + "fastq": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test_R1.fastq.gz:md5,394c7a233f1c1c1a167a34cf2895d26d", + "test_R2.fastq.gz:md5,32724cbdb5ab954a0a659ebcd56ca422" + ] + ] + ], + "versions": [ + "versions.yml:md5,ffbf935bd0de512fbc9e83b187bf924f" + ] + } + ], + "timestamp": "2024-01-17T17:57:23.920058" + }, + "test_fq_subsample_single": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.fastq.gz:md5,19326ff922a16c0cb81191f2a0a5c5fc" + ] + ], + "1": [ + "versions.yml:md5,ffbf935bd0de512fbc9e83b187bf924f" + ], + "fastq": [ + [ + { + "id": "test", + "single_end": false + }, + "test.fastq.gz:md5,19326ff922a16c0cb81191f2a0a5c5fc" + ] + ], + "versions": [ + "versions.yml:md5,ffbf935bd0de512fbc9e83b187bf924f" + ] + } + ], + "timestamp": "2024-01-17T17:57:31.908993" + }, + "test_fq_subsample_no_args": { + "content": [ + { + "0": [ + + ], + "1": [ + + ], + "fastq": [ + + ], + "versions": [ + + ] + } + ], + "timestamp": "2023-10-17T11:17:09.761156" + }, + "test_fq_subsample_no_input": { + "content": [ + { + "0": [ + + ], + "1": [ + + ], + "fastq": [ + + ], + "versions": [ + + ] + } + ], + "timestamp": "2023-10-17T11:17:37.555824" + } +} \ No newline at end of file diff --git a/modules/nf-core/fq/subsample/tests/nextflow.config b/modules/nf-core/fq/subsample/tests/nextflow.config new file mode 100644 index 000000000..41edd9f1d --- /dev/null +++ b/modules/nf-core/fq/subsample/tests/nextflow.config @@ -0,0 +1,7 @@ +process { + + withName: FQ_SUBSAMPLE { + ext.args = '--probability 0.1 -s 123' + } + +} diff --git a/modules/nf-core/fq/subsample/tests/nextflow_no_args.config b/modules/nf-core/fq/subsample/tests/nextflow_no_args.config new file mode 100644 index 000000000..88990d20c --- /dev/null +++ b/modules/nf-core/fq/subsample/tests/nextflow_no_args.config @@ -0,0 +1,7 @@ +process { + + withName: FQ_SUBSAMPLE { + ext.args = '' + } + +} diff --git a/modules/nf-core/fq/subsample/tests/nextflow_probability.config b/modules/nf-core/fq/subsample/tests/nextflow_probability.config new file mode 100644 index 000000000..8cde0c77c --- /dev/null +++ b/modules/nf-core/fq/subsample/tests/nextflow_probability.config @@ -0,0 +1,7 @@ +process { + + withName: FQ_SUBSAMPLE { + ext.args = '-p 0.1 -s 123' + } + +} diff --git a/modules/nf-core/fq/subsample/tests/nextflow_record_count.config b/modules/nf-core/fq/subsample/tests/nextflow_record_count.config new file mode 100644 index 000000000..1ea624e54 --- /dev/null +++ b/modules/nf-core/fq/subsample/tests/nextflow_record_count.config @@ -0,0 +1,7 @@ +process { + + withName: FQ_SUBSAMPLE { + ext.args = '-n 10 -s 123' + } + +} diff --git a/modules/nf-core/fq/subsample/tests/tags.yml b/modules/nf-core/fq/subsample/tests/tags.yml new file mode 100644 index 000000000..515643178 --- /dev/null +++ b/modules/nf-core/fq/subsample/tests/tags.yml @@ -0,0 +1,2 @@ +fq/subsample: + - modules/nf-core/fq/subsample/** diff --git a/modules/nf-core/gffread/environment.yml b/modules/nf-core/gffread/environment.yml new file mode 100644 index 000000000..5398f71c5 --- /dev/null +++ b/modules/nf-core/gffread/environment.yml @@ -0,0 +1,7 @@ +name: gffread +channels: + - conda-forge + - bioconda + - defaults +dependencies: + - bioconda::gffread=0.12.1 diff --git a/modules/nf-core/gffread/main.nf b/modules/nf-core/gffread/main.nf index 68f8045b5..d8a473e0a 100644 --- a/modules/nf-core/gffread/main.nf +++ b/modules/nf-core/gffread/main.nf @@ -11,20 +11,22 @@ process GFFREAD { path gff output: - path "*.gtf" , emit: gtf + path "*.gtf" , emit: gtf , optional: true + path "*.gff3" , emit: gffread_gff , optional: true path "versions.yml" , emit: versions when: task.ext.when == null || task.ext.when script: - def args = task.ext.args ?: '' - def prefix = task.ext.prefix ?: "${gff.baseName}" + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${gff.baseName}" + def extension = args.contains("-T") ? 'gtf' : 'gffread.gff3' """ gffread \\ $gff \\ $args \\ - -o ${prefix}.gtf + -o ${prefix}.${extension} cat <<-END_VERSIONS > versions.yml "${task.process}": gffread: \$(gffread --version 2>&1) diff --git a/modules/nf-core/gffread/meta.yml b/modules/nf-core/gffread/meta.yml index f486f8bb5..d38cbcda9 100644 --- a/modules/nf-core/gffread/meta.yml +++ b/modules/nf-core/gffread/meta.yml @@ -20,13 +20,17 @@ input: output: - gtf: type: file - description: GTF file resulting from the conversion of the GFF input file + description: GTF file resulting from the conversion of the GFF input file if '-T' argument is present pattern: "*.{gtf}" + - gffread_gff: + type: file + description: GFF3 file resulting from the conversion of the GFF input file if '-T' argument is absent + pattern: "*.{gff3}" - versions: type: file description: File containing software versions pattern: "versions.yml" authors: - - "@emiller88" + - "@edmundmiller" maintainers: - - "@emiller88" + - "@edmundmiller" diff --git a/modules/nf-core/gffread/tests/main.nf.test b/modules/nf-core/gffread/tests/main.nf.test new file mode 100644 index 000000000..bdbc96ae6 --- /dev/null +++ b/modules/nf-core/gffread/tests/main.nf.test @@ -0,0 +1,65 @@ +nextflow_process { + + name "Test Process GFFREAD" + script "../main.nf" + process "GFFREAD" + + tag "gffread" + tag "modules_nfcore" + tag "modules" + + test("sarscov2-gff3-gtf") { + + config "./nextflow.config" + + when { + params { + outdir = "$outputDir" + } + process { + """ + input[0] = file(params.modules_testdata_base_path + "genomics/sarscov2/genome/genome.gff3", checkIfExists: true) + """ + } + } + + then { + assertAll ( + { assert process.success }, + { assert snapshot( + process.out.gtf, + process.out.versions + ).match() }, + { assert process.out.gffread_gff == [] } + ) + } + + } + + test("sarscov2-gff3-gff3") { + + when { + params { + outdir = "$outputDir" + } + process { + """ + input[0] = file(params.modules_testdata_base_path + "genomics/sarscov2/genome/genome.gff3", checkIfExists: true) + """ + } + } + + then { + assertAll ( + { assert process.success }, + { assert snapshot( + process.out.gffread_gff, + process.out.versions + ).match() }, + { assert process.out.gtf == [] }, + ) + } + + } + +} diff --git a/modules/nf-core/gffread/tests/main.nf.test.snap b/modules/nf-core/gffread/tests/main.nf.test.snap new file mode 100644 index 000000000..00a11a406 --- /dev/null +++ b/modules/nf-core/gffread/tests/main.nf.test.snap @@ -0,0 +1,24 @@ +{ + "sarscov2-gff3-gtf": { + "content": [ + [ + "genome.gtf:md5,2394072d7d31530dfd590c4a117bf6e3" + ], + [ + "versions.yml:md5,a71b6cdfa528dd206a238ec64bae13d6" + ] + ], + "timestamp": "2024-01-23T20:00:32.688779117" + }, + "sarscov2-gff3-gff3": { + "content": [ + [ + "genome.gffread.gff3:md5,a7d40d99dcddac23ac673c473279ea2d" + ], + [ + "versions.yml:md5,a71b6cdfa528dd206a238ec64bae13d6" + ] + ], + "timestamp": "2024-01-23T20:07:11.457356625" + } +} \ No newline at end of file diff --git a/modules/nf-core/gffread/tests/nextflow.config b/modules/nf-core/gffread/tests/nextflow.config new file mode 100644 index 000000000..74b25094f --- /dev/null +++ b/modules/nf-core/gffread/tests/nextflow.config @@ -0,0 +1,5 @@ +process { + withName: GFFREAD { + ext.args = '-T' + } +} diff --git a/modules/nf-core/gffread/tests/tags.yml b/modules/nf-core/gffread/tests/tags.yml new file mode 100644 index 000000000..055760656 --- /dev/null +++ b/modules/nf-core/gffread/tests/tags.yml @@ -0,0 +1,2 @@ +gffread: + - modules/nf-core/gffread/** diff --git a/modules/nf-core/gunzip/environment.yml b/modules/nf-core/gunzip/environment.yml new file mode 100644 index 000000000..25910b340 --- /dev/null +++ b/modules/nf-core/gunzip/environment.yml @@ -0,0 +1,7 @@ +name: gunzip +channels: + - conda-forge + - bioconda + - defaults +dependencies: + - conda-forge::sed=4.7 diff --git a/modules/nf-core/gunzip/main.nf b/modules/nf-core/gunzip/main.nf index 73bf08cde..468a6f287 100644 --- a/modules/nf-core/gunzip/main.nf +++ b/modules/nf-core/gunzip/main.nf @@ -2,7 +2,7 @@ process GUNZIP { tag "$archive" label 'process_single' - conda "conda-forge::sed=4.7" + conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/ubuntu:20.04' : 'nf-core/ubuntu:20.04' }" diff --git a/modules/nf-core/gunzip/meta.yml b/modules/nf-core/gunzip/meta.yml index 4cdcdf4c4..231034f2f 100644 --- a/modules/nf-core/gunzip/meta.yml +++ b/modules/nf-core/gunzip/meta.yml @@ -33,3 +33,7 @@ authors: - "@joseespinosa" - "@drpatelh" - "@jfy133" +maintainers: + - "@joseespinosa" + - "@drpatelh" + - "@jfy133" diff --git a/modules/nf-core/gunzip/tests/main.nf.test b/modules/nf-core/gunzip/tests/main.nf.test new file mode 100644 index 000000000..6406008ef --- /dev/null +++ b/modules/nf-core/gunzip/tests/main.nf.test @@ -0,0 +1,36 @@ +nextflow_process { + + name "Test Process GUNZIP" + script "../main.nf" + process "GUNZIP" + tag "gunzip" + tag "modules_nfcore" + tag "modules" + + test("Should run without failures") { + + when { + params { + outdir = "$outputDir" + } + process { + """ + input[0] = Channel.of([ + [], + 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).match() } + ) + } + + } + +} diff --git a/modules/nf-core/gunzip/tests/main.nf.test.snap b/modules/nf-core/gunzip/tests/main.nf.test.snap new file mode 100644 index 000000000..720fd9ff4 --- /dev/null +++ b/modules/nf-core/gunzip/tests/main.nf.test.snap @@ -0,0 +1,31 @@ +{ + "Should run without failures": { + "content": [ + { + "0": [ + [ + [ + + ], + "test_1.fastq:md5,4161df271f9bfcd25d5845a1e220dbec" + ] + ], + "1": [ + "versions.yml:md5,54376d32aca20e937a4ec26dac228e84" + ], + "gunzip": [ + [ + [ + + ], + "test_1.fastq:md5,4161df271f9bfcd25d5845a1e220dbec" + ] + ], + "versions": [ + "versions.yml:md5,54376d32aca20e937a4ec26dac228e84" + ] + } + ], + "timestamp": "2023-10-17T15:35:37.690477896" + } +} \ No newline at end of file diff --git a/modules/nf-core/gunzip/tests/tags.yml b/modules/nf-core/gunzip/tests/tags.yml new file mode 100644 index 000000000..fd3f69154 --- /dev/null +++ b/modules/nf-core/gunzip/tests/tags.yml @@ -0,0 +1,2 @@ +gunzip: + - modules/nf-core/gunzip/** diff --git a/modules/nf-core/hisat2/align/environment.yml b/modules/nf-core/hisat2/align/environment.yml new file mode 100644 index 000000000..0c1415f94 --- /dev/null +++ b/modules/nf-core/hisat2/align/environment.yml @@ -0,0 +1,8 @@ +name: hisat2_align +channels: + - conda-forge + - bioconda + - defaults +dependencies: + - bioconda::hisat2=2.2.1 + - bioconda::samtools=1.16.1 diff --git a/modules/nf-core/hisat2/align/main.nf b/modules/nf-core/hisat2/align/main.nf index db8e8bb6d..2289a9fc0 100644 --- a/modules/nf-core/hisat2/align/main.nf +++ b/modules/nf-core/hisat2/align/main.nf @@ -3,7 +3,7 @@ process HISAT2_ALIGN { label 'process_high' // WARN: Version information not provided by tool on CLI. Please update version string below when bumping container versions. - conda "bioconda::hisat2=2.2.1 bioconda::samtools=1.16.1" + conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/mulled-v2-a97e90b3b802d1da3d6958e0867610c718cb5eb1:2cdf6bf1e92acbeb9b2834b1c58754167173a410-0' : 'biocontainers/mulled-v2-a97e90b3b802d1da3d6958e0867610c718cb5eb1:2cdf6bf1e92acbeb9b2834b1c58754167173a410-0' }" diff --git a/modules/nf-core/hisat2/align/meta.yml b/modules/nf-core/hisat2/align/meta.yml index 008a9611f..b23eab75b 100644 --- a/modules/nf-core/hisat2/align/meta.yml +++ b/modules/nf-core/hisat2/align/meta.yml @@ -5,7 +5,6 @@ keywords: - fasta - genome - reference - tools: - hisat2: description: HISAT2 is a fast and sensitive alignment program for mapping next-generation sequencing reads (both DNA and RNA) to a population of human genomes as well as to a single reference genome. @@ -13,7 +12,6 @@ tools: documentation: https://daehwankimlab.github.io/hisat2/manual/ doi: "10.1038/s41587-019-0201-4" licence: ["MIT"] - input: - meta: type: map @@ -43,7 +41,6 @@ input: type: file description: Splices sites in gtf file pattern: "*.{txt}" - output: - meta: type: map @@ -62,7 +59,9 @@ output: type: file description: File containing software versions pattern: "versions.yml" - authors: - "@ntoda03" - "@ramprasadn" +maintainers: + - "@ntoda03" + - "@ramprasadn" diff --git a/modules/nf-core/hisat2/align/tests/main.nf.test b/modules/nf-core/hisat2/align/tests/main.nf.test new file mode 100644 index 000000000..3a520e9a0 --- /dev/null +++ b/modules/nf-core/hisat2/align/tests/main.nf.test @@ -0,0 +1,218 @@ +nextflow_process { + + name "Test Process HISAT2_ALIGN" + script "../main.nf" + process "HISAT2_ALIGN" + tag "modules" + tag "modules_nfcore" + tag "hisat2" + tag "hisat2/align" + tag "hisat2/build" + tag "hisat2/extractsplicesites" + + test("Single-End") { + + setup { + run("HISAT2_EXTRACTSPLICESITES") { + script "../../extractsplicesites/main.nf" + process { + """ + input[0] = Channel.of([ + [id:'genome'], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.gtf', checkIfExists: true) + ]) + """ + } + } + + run("HISAT2_BUILD") { + script "../../build/main.nf" + process { + """ + input[0] = Channel.of([ + [id:'genome'], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) + ]) + input[1] = Channel.of([ [id:'genome'], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.gtf', checkIfExists: true) + ]) + input[2] = HISAT2_EXTRACTSPLICESITES.out.txt + """ + } + } + } + + when { + params { + outdir = "$outputDir" + } + process { + """ + input[0] = Channel.of([ + [ id:'test', single_end:true ], // meta map + [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true)] + ]) + input[1] = HISAT2_BUILD.out.index + input[2] = HISAT2_EXTRACTSPLICESITES.out.txt + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out.summary).match("se_summary") }, + { assert snapshot(process.out.fastq).match("se_fastq") }, + { assert snapshot(process.out.versions).match("se_versions") } + ) + } + } + + test("Paired-End") { + + setup { + run("HISAT2_EXTRACTSPLICESITES") { + script "../../extractsplicesites/main.nf" + process { + """ + input[0] = Channel.of([ + [id:'genome'], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.gtf', checkIfExists: true) + ]) + """ + } + } + + run("HISAT2_BUILD") { + script "../../build/main.nf" + process { + """ + input[0] = Channel.of([ + [id:'genome'], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) + ]) + input[1] = Channel.of([ [id:'genome'], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.gtf', checkIfExists: true) + ]) + input[2] = HISAT2_EXTRACTSPLICESITES.out.txt + """ + } + } + } + + when { + params { + outdir = "$outputDir" + } + 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) ] + ]) + input[1] = HISAT2_BUILD.out.index + input[2] = HISAT2_EXTRACTSPLICESITES.out.txt + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out.summary).match("pe_summary") }, + { assert snapshot(process.out.fastq).match("pe_fastq") }, + { assert snapshot(process.out.versions).match("pe_versions") } + ) + } + } + + test("Single-End No Splice Sites") { + + setup { + run("HISAT2_BUILD") { + script "../../build/main.nf" + process { + """ + input[0] = Channel.of([ + [id:'genome'], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) + ]) + input[1] = [[:],[]] + input[2] = [[:],[]] + """ + } + } + } + + when { + params { + outdir = "$outputDir" + } + process { + """ + input[0] = Channel.of([ + [ id:'test', single_end:true ], // meta map + [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true) ] + ]) + input[1] = HISAT2_BUILD.out.index + input[2] = [[:],[]] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out.summary).match("se_no_ss_summary") }, + { assert snapshot(process.out.fastq).match("se_no_ss_fastq") }, + { assert snapshot(process.out.versions).match("se_no_ss_versions") } + ) + } + } + + test("Paired-End No Splice Sites") { + + setup { + run("HISAT2_BUILD") { + script "../../build/main.nf" + process { + """ + input[0] = Channel.of([ + [id:'genome'], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) + ]) + input[1] = [[:],[]] + input[2] = [[:],[]] + """ + } + } + } + + when { + params { + outdir = "$outputDir" + } + 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) ] + ]) + input[1] = HISAT2_BUILD.out.index + input[2] = [[:],[]] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out.summary).match("pe_no_ss_summary") }, + { assert snapshot(process.out.fastq).match("pe_no_ss_fastq") }, + { assert snapshot(process.out.versions).match("pe_no_ss_versions") } + ) + } + } +} diff --git a/modules/nf-core/hisat2/align/tests/main.nf.test.snap b/modules/nf-core/hisat2/align/tests/main.nf.test.snap new file mode 100644 index 000000000..a80fa3c50 --- /dev/null +++ b/modules/nf-core/hisat2/align/tests/main.nf.test.snap @@ -0,0 +1,122 @@ +{ + "se_versions": { + "content": [ + [ + "versions.yml:md5,ceb638f44ebdaf09ba1f5c5c409585e2" + ] + ], + "timestamp": "2023-10-16T15:14:50.269895296" + }, + "se_no_ss_summary": { + "content": [ + [ + [ + { + "id": "test", + "single_end": true + }, + "test.hisat2.summary.log:md5,7b8a9e61b7646da1089b041333c41a87" + ] + ] + ], + "timestamp": "2023-10-16T15:15:22.897386626" + }, + "pe_no_ss_versions": { + "content": [ + [ + "versions.yml:md5,ceb638f44ebdaf09ba1f5c5c409585e2" + ] + ], + "timestamp": "2023-10-16T15:15:42.583699978" + }, + "se_no_ss_versions": { + "content": [ + [ + "versions.yml:md5,ceb638f44ebdaf09ba1f5c5c409585e2" + ] + ], + "timestamp": "2023-10-16T15:15:22.909407356" + }, + "pe_no_ss_summary": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test.hisat2.summary.log:md5,9839b31db795958cc4b70711a3414e9c" + ] + ] + ], + "timestamp": "2023-10-16T15:15:42.569775538" + }, + "pe_no_ss_fastq": { + "content": [ + [ + + ] + ], + "timestamp": "2023-10-16T15:15:42.576881608" + }, + "se_summary": { + "content": [ + [ + [ + { + "id": "test", + "single_end": true + }, + "test.hisat2.summary.log:md5,7b8a9e61b7646da1089b041333c41a87" + ] + ] + ], + "timestamp": "2023-10-16T15:14:50.252466896" + }, + "pe_summary": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test.hisat2.summary.log:md5,9839b31db795958cc4b70711a3414e9c" + ] + ] + ], + "timestamp": "2023-10-16T15:15:09.881690889" + }, + "pe_fastq": { + "content": [ + [ + + ] + ], + "timestamp": "2023-10-16T15:15:09.888696129" + }, + "se_no_ss_fastq": { + "content": [ + [ + + ] + ], + "timestamp": "2023-10-16T15:15:22.904010016" + }, + "se_fastq": { + "content": [ + [ + + ] + ], + "timestamp": "2023-10-16T15:14:50.264366105" + }, + "pe_versions": { + "content": [ + [ + "versions.yml:md5,ceb638f44ebdaf09ba1f5c5c409585e2" + ] + ], + "timestamp": "2023-10-16T15:15:09.894683308" + } +} \ No newline at end of file diff --git a/modules/nf-core/hisat2/align/tests/tags.yml b/modules/nf-core/hisat2/align/tests/tags.yml new file mode 100644 index 000000000..3a46cc896 --- /dev/null +++ b/modules/nf-core/hisat2/align/tests/tags.yml @@ -0,0 +1,4 @@ +hisat2/align: + - modules/nf-core/hisat2/align/** + - modules/nf-core/hisat2/build/** + - modules/nf-core/hisat2/extractsplicesites/** diff --git a/modules/nf-core/hisat2/build/environment.yml b/modules/nf-core/hisat2/build/environment.yml new file mode 100644 index 000000000..2e67cd3ea --- /dev/null +++ b/modules/nf-core/hisat2/build/environment.yml @@ -0,0 +1,7 @@ +name: hisat2_build +channels: + - conda-forge + - bioconda + - defaults +dependencies: + - bioconda::hisat2=2.2.1 diff --git a/modules/nf-core/hisat2/build/main.nf b/modules/nf-core/hisat2/build/main.nf index 90f8efcc6..766e8731d 100644 --- a/modules/nf-core/hisat2/build/main.nf +++ b/modules/nf-core/hisat2/build/main.nf @@ -4,7 +4,7 @@ process HISAT2_BUILD { label 'process_high_memory' // WARN: Version information not provided by tool on CLI. Please update version string below when bumping container versions. - conda "bioconda::hisat2=2.2.1" + conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/hisat2:2.2.1--h1b792b2_3' : 'biocontainers/hisat2:2.2.1--h1b792b2_3' }" diff --git a/modules/nf-core/hisat2/build/meta.yml b/modules/nf-core/hisat2/build/meta.yml index e61bf2a3f..6c28eb21c 100644 --- a/modules/nf-core/hisat2/build/meta.yml +++ b/modules/nf-core/hisat2/build/meta.yml @@ -13,7 +13,6 @@ tools: documentation: https://daehwankimlab.github.io/hisat2/manual/ doi: "10.1038/s41587-019-0201-4" licence: ["MIT"] - input: - meta: type: map @@ -42,7 +41,6 @@ input: type: file description: Splices sites in gtf file pattern: "*.{txt}" - output: - meta: type: map @@ -57,6 +55,7 @@ output: type: file description: File containing software versions pattern: "versions.yml" - authors: - "@ntoda03" +maintainers: + - "@ntoda03" diff --git a/modules/nf-core/hisat2/build/tests/main.nf.test b/modules/nf-core/hisat2/build/tests/main.nf.test new file mode 100644 index 000000000..5b31debc4 --- /dev/null +++ b/modules/nf-core/hisat2/build/tests/main.nf.test @@ -0,0 +1,53 @@ +nextflow_process { + + name "Test Process HISAT2_BUILD" + script "../main.nf" + process "HISAT2_BUILD" + tag "modules" + tag "modules_nfcore" + tag "hisat2" + tag "hisat2/build" + tag "hisat2/extractsplicesites" + + test("Should run without failures") { + + setup { + run("HISAT2_EXTRACTSPLICESITES") { + script "../../extractsplicesites/main.nf" + process { + """ + input[0] = Channel.of([ + [id:'genome'], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.gtf', checkIfExists: true) + ]) + """ + } + } + } + + when { + params { + outdir = "$outputDir" + } + process { + """ + input[0] = Channel.of([ + [id:'genome'], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) + ]) + input[1] = Channel.of([ [id:'genome'], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.gtf', checkIfExists: true) + ]) + input[2] = HISAT2_EXTRACTSPLICESITES.out.txt + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } +} diff --git a/modules/nf-core/hisat2/build/tests/main.nf.test.snap b/modules/nf-core/hisat2/build/tests/main.nf.test.snap new file mode 100644 index 000000000..c7d364dbc --- /dev/null +++ b/modules/nf-core/hisat2/build/tests/main.nf.test.snap @@ -0,0 +1,49 @@ +{ + "Should run without failures": { + "content": [ + { + "0": [ + [ + { + "id": "genome" + }, + [ + "genome.1.ht2:md5,057cfa8a22b97ee9cff4c8d342498803", + "genome.2.ht2:md5,47b153cd1319abc88dda532462651fcf", + "genome.3.ht2:md5,4ed93abba181d8dfab2e303e33114777", + "genome.4.ht2:md5,c25be5f8b0378abf7a58c8a880b87626", + "genome.5.ht2:md5,91198831aaba993acac1734138c5f173", + "genome.6.ht2:md5,265e1284ce85686516fae5d35540994a", + "genome.7.ht2:md5,9013eccd91ad614d7893c739275a394f", + "genome.8.ht2:md5,33cdeccccebe80329f1fdbee7f5874cb" + ] + ] + ], + "1": [ + "versions.yml:md5,e36ef3cd73d19ccf2378c9358fe942c0" + ], + "index": [ + [ + { + "id": "genome" + }, + [ + "genome.1.ht2:md5,057cfa8a22b97ee9cff4c8d342498803", + "genome.2.ht2:md5,47b153cd1319abc88dda532462651fcf", + "genome.3.ht2:md5,4ed93abba181d8dfab2e303e33114777", + "genome.4.ht2:md5,c25be5f8b0378abf7a58c8a880b87626", + "genome.5.ht2:md5,91198831aaba993acac1734138c5f173", + "genome.6.ht2:md5,265e1284ce85686516fae5d35540994a", + "genome.7.ht2:md5,9013eccd91ad614d7893c739275a394f", + "genome.8.ht2:md5,33cdeccccebe80329f1fdbee7f5874cb" + ] + ] + ], + "versions": [ + "versions.yml:md5,e36ef3cd73d19ccf2378c9358fe942c0" + ] + } + ], + "timestamp": "2023-10-16T14:42:22.381609786" + } +} \ No newline at end of file diff --git a/modules/nf-core/hisat2/build/tests/tags.yml b/modules/nf-core/hisat2/build/tests/tags.yml new file mode 100644 index 000000000..a7faecb27 --- /dev/null +++ b/modules/nf-core/hisat2/build/tests/tags.yml @@ -0,0 +1,3 @@ +hisat2/build: + - modules/nf-core/hisat2/build/** + - modules/nf-core/hisat2/extractsplicesites/** diff --git a/modules/nf-core/hisat2/extractsplicesites/environment.yml b/modules/nf-core/hisat2/extractsplicesites/environment.yml new file mode 100644 index 000000000..4b03e5e46 --- /dev/null +++ b/modules/nf-core/hisat2/extractsplicesites/environment.yml @@ -0,0 +1,7 @@ +name: hisat2_extractsplicesites +channels: + - conda-forge + - bioconda + - defaults +dependencies: + - bioconda::hisat2=2.2.1 diff --git a/modules/nf-core/hisat2/extractsplicesites/main.nf b/modules/nf-core/hisat2/extractsplicesites/main.nf index a6e59e202..b0c8513aa 100644 --- a/modules/nf-core/hisat2/extractsplicesites/main.nf +++ b/modules/nf-core/hisat2/extractsplicesites/main.nf @@ -3,7 +3,7 @@ process HISAT2_EXTRACTSPLICESITES { label 'process_medium' // WARN: Version information not provided by tool on CLI. Please update version string below when bumping container versions. - conda "bioconda::hisat2=2.2.1" + conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/hisat2:2.2.1--h1b792b2_3' : 'biocontainers/hisat2:2.2.1--h1b792b2_3' }" diff --git a/modules/nf-core/hisat2/extractsplicesites/meta.yml b/modules/nf-core/hisat2/extractsplicesites/meta.yml index f70de082a..40d77ce00 100644 --- a/modules/nf-core/hisat2/extractsplicesites/meta.yml +++ b/modules/nf-core/hisat2/extractsplicesites/meta.yml @@ -5,7 +5,6 @@ keywords: - gtf - genome - reference - tools: - hisat2: description: HISAT2 is a fast and sensitive alignment program for mapping next-generation sequencing reads (both DNA and RNA) to a population of human genomes as well as to a single reference genome. @@ -13,7 +12,6 @@ tools: documentation: https://daehwankimlab.github.io/hisat2/manual/ doi: "10.1038/s41587-019-0201-4" licence: ["MIT"] - input: - meta: type: map @@ -24,7 +22,6 @@ input: type: file description: Reference gtf annotation file pattern: "*.{gtf}" - output: - meta: type: map @@ -39,7 +36,9 @@ output: type: file description: Splices sites in gtf file pattern: "*.{splice_sites.txt}" - authors: - "@ntoda03" - "@ramprasadn" +maintainers: + - "@ntoda03" + - "@ramprasadn" diff --git a/modules/nf-core/hisat2/extractsplicesites/tests/main.nf.test b/modules/nf-core/hisat2/extractsplicesites/tests/main.nf.test new file mode 100644 index 000000000..72eb6d53b --- /dev/null +++ b/modules/nf-core/hisat2/extractsplicesites/tests/main.nf.test @@ -0,0 +1,35 @@ +nextflow_process { + + name "Test Process HISAT2_EXTRACTSPLICESITES" + script "../main.nf" + process "HISAT2_EXTRACTSPLICESITES" + tag "modules" + tag "modules_nfcore" + tag "hisat2" + tag "hisat2/extractsplicesites" + + test("Should run without failures") { + + when { + params { + outdir = "$outputDir" + } + process { + """ + input[0] = Channel.of([ + [id:'genome'], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.gtf', checkIfExists: true) + ]) + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert path("${process.out.txt[0][1]}").exists() }, + { assert snapshot(process.out.versions).match() } + ) + } + } +} diff --git a/modules/nf-core/hisat2/extractsplicesites/tests/main.nf.test.snap b/modules/nf-core/hisat2/extractsplicesites/tests/main.nf.test.snap new file mode 100644 index 000000000..17f1c8ebf --- /dev/null +++ b/modules/nf-core/hisat2/extractsplicesites/tests/main.nf.test.snap @@ -0,0 +1,10 @@ +{ + "Should run without failures": { + "content": [ + [ + "versions.yml:md5,eeea7231fe197810659b8bad4133aff2" + ] + ], + "timestamp": "2024-01-18T20:56:30.71763" + } +} \ No newline at end of file diff --git a/modules/nf-core/hisat2/extractsplicesites/tests/tags.yml b/modules/nf-core/hisat2/extractsplicesites/tests/tags.yml new file mode 100644 index 000000000..4b0ed4010 --- /dev/null +++ b/modules/nf-core/hisat2/extractsplicesites/tests/tags.yml @@ -0,0 +1,2 @@ +hisat2/extractsplicesites: + - modules/nf-core/hisat2/extractsplicesites/** diff --git a/modules/nf-core/kallisto/index/tests/main.nf.test b/modules/nf-core/kallisto/index/tests/main.nf.test index 97933d697..63469c5d5 100644 --- a/modules/nf-core/kallisto/index/tests/main.nf.test +++ b/modules/nf-core/kallisto/index/tests/main.nf.test @@ -8,15 +8,15 @@ nextflow_process { tag "kallisto" tag "kallisto/index" - test("homo_sapiens genome_fasta") { + test("sarscov2 transcriptome.fasta") { when { process { """ - input[0] = [ - [ id:'test_fasta' ], // meta map - [ file(params.test_data['homo_sapiens']['genome']['genome_fasta'], checkIfExists: true) ] - ] + input[0] = Channel.of([ + [ id:'transcriptome' ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/transcriptome.fasta', checkIfExists: true) + ]) """ } } @@ -27,7 +27,5 @@ nextflow_process { { assert snapshot(process.out).match() } ) } - } - } diff --git a/modules/nf-core/kallisto/index/tests/main.nf.test.snap b/modules/nf-core/kallisto/index/tests/main.nf.test.snap index d37e73040..054f36e21 100644 --- a/modules/nf-core/kallisto/index/tests/main.nf.test.snap +++ b/modules/nf-core/kallisto/index/tests/main.nf.test.snap @@ -1,21 +1,31 @@ { - "versions": { + "sarscov2 transcriptome.fasta": { "content": [ - [ - "versions.yml:md5,14e9a2661241abd828f4f06a7b5c222d" - ] + { + "0": [ + [ + { + "id": "transcriptome" + }, + "kallisto:md5,ba657b396f8449f5c85b0563cdaa8346" + ] + ], + "1": [ + "versions.yml:md5,178f9b57d4228edc356911d571b958a4" + ], + "index": [ + [ + { + "id": "transcriptome" + }, + "kallisto:md5,ba657b396f8449f5c85b0563cdaa8346" + ] + ], + "versions": [ + "versions.yml:md5,178f9b57d4228edc356911d571b958a4" + ] + } ], - "timestamp": "2024-01-09T23:02:49.911994" - }, - "sarscov2 single-end [fastqc] - stub": { - "content": [ - [ - "multiqc_report.html", - "multiqc_data", - "multiqc_plots", - "versions.yml:md5,14e9a2661241abd828f4f06a7b5c222d" - ] - ], - "timestamp": "2024-01-09T23:03:14.524346" + "timestamp": "2024-01-19T09:17:56.733532" } -} \ No newline at end of file +} diff --git a/modules/nf-core/kallisto/quant/tests/main.nf.test b/modules/nf-core/kallisto/quant/tests/main.nf.test index f716e5e6d..ad7391270 100644 --- a/modules/nf-core/kallisto/quant/tests/main.nf.test +++ b/modules/nf-core/kallisto/quant/tests/main.nf.test @@ -7,24 +7,23 @@ nextflow_process { tag "modules_nfcore" tag "kallisto" tag "kallisto/quant" + tag "kallisto/index" setup { run("KALLISTO_INDEX") { script "../../index/main.nf" process { - """ - input[0] = [ - [ id:'test_fasta' ], // meta map - [ file(params.test_data['sarscov2']['genome']['transcriptome_fasta'], checkIfExists: true) ] - ] - """ - } + """ + input[0] = Channel.of([ + [ id:'transcriptome' ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/transcriptome.fasta', checkIfExists: true) + ]) + """ + } } } test("sarscov2 single-end") { - config "./single_end.config" - when { params{ outdir = "$outputDir" @@ -32,15 +31,20 @@ nextflow_process { process { """ - input[0] = [ + gtf = [] + chromosomes = [] + fragment_length = 150 + fragment_length_sd = 75 + + input[0] = Channel.of([ [ id:'test', single_end:true ], - [ file(params.test_data['sarscov2']['illumina']['test_1_fastq_gz'], checkIfExists: true) ] - ] + [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true) ] + ]) input[1] = KALLISTO_INDEX.out.index - input[2] = [] - input[3] = [] - input[4] = 150 - input[5] = 75 + input[2] = gtf + input[3] = chromosomes + input[4] = fragment_length + input[5] = fragment_length_sd """ } } @@ -48,7 +52,7 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot(path("$outputDir/kallisto/test/abundance.tsv")).match("abundance_tsv_single") }, + { assert snapshot(path("${process.out.results[0][1]}/abundance.tsv")).match("se_abundance_tsv") }, { assert snapshot(process.out.log).match("se_log") }, { assert snapshot(process.out.versions).match("se_versions") } ) @@ -56,8 +60,6 @@ nextflow_process { } test("sarscov2 paired-end") { - config "./paired_end.config" - when { params{ outdir = "$outputDir" @@ -65,25 +67,28 @@ nextflow_process { process { """ - input[0] = [ + gtf = [] + chromosomes = [] + fragment_length = [] + fragment_length_sd = [] + + input[0] = Channel.of([ [ id:'test', single_end:false ], // meta map - [ - file(params.test_data['sarscov2']['illumina']['test_1_fastq_gz'], checkIfExists: true), - file(params.test_data['sarscov2']['illumina']['test_2_fastq_gz'], checkIfExists: true) - ] - ] + [ 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) ] + ]) input[1] = KALLISTO_INDEX.out.index - input[2] = [] - input[3] = [] - input[4] = [] - input[5] = [] + input[2] = gtf + input[3] = chromosomes + input[4] = fragment_length + input[5] = fragment_length_sd """ } } then { assertAll( { assert process.success }, - { assert snapshot(path("$outputDir/kallisto/test/abundance.tsv")).match("abundance_tsv_paired") }, + { assert snapshot(path("${process.out.results[0][1]}/abundance.tsv")).match("pe_abundance_tsv") }, { assert snapshot(process.out.log).match("pe_log") }, { assert snapshot(process.out.versions).match("pe_versions") } ) diff --git a/modules/nf-core/kallisto/quant/tests/main.nf.test.snap b/modules/nf-core/kallisto/quant/tests/main.nf.test.snap index d59d7f06f..f957e6c8b 100644 --- a/modules/nf-core/kallisto/quant/tests/main.nf.test.snap +++ b/modules/nf-core/kallisto/quant/tests/main.nf.test.snap @@ -11,7 +11,7 @@ ] ] ], - "timestamp": "2023-11-02T09:16:05.163403975" + "timestamp": "2024-01-19T09:31:05.549084" }, "se_versions": { "content": [ @@ -19,13 +19,19 @@ "versions.yml:md5,f981ad0cc089194a8fb00a47948eea94" ] ], - "timestamp": "2023-10-30T22:11:17.982220232" + "timestamp": "2024-01-19T09:30:00.138848" }, - "abundance_tsv_paired": { + "se_abundance_tsv": { + "content": [ + "abundance.tsv:md5,8a4afe91e6a75b4e619daaf664eb7d9b" + ], + "timestamp": "2024-01-19T09:30:00.127992" + }, + "pe_abundance_tsv": { "content": [ "abundance.tsv:md5,f0a9a2543f8fc0c8442be0a939d70f66" ], - "timestamp": "2023-11-02T09:16:05.157883165" + "timestamp": "2024-01-19T09:31:05.544756" }, "se_log": { "content": [ @@ -39,13 +45,7 @@ ] ] ], - "timestamp": "2023-10-30T22:11:17.973230763" - }, - "abundance_tsv_single": { - "content": [ - "abundance.tsv:md5,8a4afe91e6a75b4e619daaf664eb7d9b" - ], - "timestamp": "2023-11-02T09:01:51.48615229" + "timestamp": "2024-01-19T09:30:00.135036" }, "pe_versions": { "content": [ @@ -53,6 +53,6 @@ "versions.yml:md5,f981ad0cc089194a8fb00a47948eea94" ] ], - "timestamp": "2023-11-02T09:16:05.168753684" + "timestamp": "2024-01-19T09:31:05.553993" } -} +} \ No newline at end of file diff --git a/modules/nf-core/picard/markduplicates/environment.yml b/modules/nf-core/picard/markduplicates/environment.yml new file mode 100644 index 000000000..58b795f54 --- /dev/null +++ b/modules/nf-core/picard/markduplicates/environment.yml @@ -0,0 +1,7 @@ +name: picard_markduplicates +channels: + - conda-forge + - bioconda + - defaults +dependencies: + - bioconda::picard=3.1.1 diff --git a/modules/nf-core/picard/markduplicates/main.nf b/modules/nf-core/picard/markduplicates/main.nf index ebfa0864d..80930cc41 100644 --- a/modules/nf-core/picard/markduplicates/main.nf +++ b/modules/nf-core/picard/markduplicates/main.nf @@ -2,10 +2,10 @@ process PICARD_MARKDUPLICATES { tag "$meta.id" label 'process_medium' - conda "bioconda::picard=3.0.0" + conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/picard:3.0.0--hdfd78af_1' : - 'biocontainers/picard:3.0.0--hdfd78af_1' }" + 'https://depot.galaxyproject.org/singularity/picard:3.1.1--hdfd78af_0' : + 'biocontainers/picard:3.1.1--hdfd78af_0' }" input: tuple val(meta), path(bam) diff --git a/modules/nf-core/picard/markduplicates/meta.yml b/modules/nf-core/picard/markduplicates/meta.yml index f7693d2f0..1ab90c075 100644 --- a/modules/nf-core/picard/markduplicates/meta.yml +++ b/modules/nf-core/picard/markduplicates/meta.yml @@ -69,3 +69,7 @@ authors: - "@drpatelh" - "@projectoriented" - "@ramprasadn" +maintainers: + - "@drpatelh" + - "@projectoriented" + - "@ramprasadn" diff --git a/modules/nf-core/picard/markduplicates/tests/main.nf.test b/modules/nf-core/picard/markduplicates/tests/main.nf.test new file mode 100644 index 000000000..c5a29b4bd --- /dev/null +++ b/modules/nf-core/picard/markduplicates/tests/main.nf.test @@ -0,0 +1,104 @@ +nextflow_process { + + name "Test Process PICARD_MARKDUPLICATES" + script "../main.nf" + process "PICARD_MARKDUPLICATES" + config "./nextflow.config" + tag "modules" + tag "modules_nfcore" + tag "picard" + tag "picard/markduplicates" + + test("sarscov2 [unsorted 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.bam', checkIfExists: true) + ]) + input[1] = Channel.of([ + [ id:'genome' ], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) + ]) + input[2] = Channel.of([ + [ id:'genome' ], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.fai', checkIfExists: true) + ]) + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(file(process.out.bam[0][1]).name).match("unsorted_bam_name") }, + { assert snapshot(path(process.out.metrics.get(0).get(1)).readLines()[0..2]).match("unsorted_bam_metrics") }, + { assert snapshot(process.out.versions).match("unsorted_bam_versions") } + ) + } + } + + test("sarscov2 [sorted 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) + ]) + input[1] = Channel.of([ + [ id:'genome' ], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) + ]) + input[2] = Channel.of([ + [ id:'genome' ], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.fai', checkIfExists: true) + ]) + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(file(process.out.bam[0][1]).name).match("sorted_bam_name") }, + { assert snapshot(path(process.out.metrics.get(0).get(1)).readLines()[0..2]).match("sorted_bam_metrics") }, + { assert snapshot(process.out.versions).match("sorted_bam_versions") } + ) + } + } + + test("homo_sapiens [cram]") { + + when { + process { + """ + input[0] = Channel.of([ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/cram/test.paired_end.sorted.cram', checkIfExists: true) + ]) + input[1] = Channel.of([ + [ id:'genome' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) + ]) + input[2] = Channel.of([ + [ id:'genome' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta.fai', checkIfExists: true) + ]) + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(file(process.out.bam[0][1]).name).match("cram_name") }, + { assert snapshot(path(process.out.metrics.get(0).get(1)).readLines()[0..2]).match("cram_metrics") }, + { assert snapshot(process.out.versions).match("cram_versions") } + ) + } + } +} diff --git a/modules/nf-core/picard/markduplicates/tests/main.nf.test.snap b/modules/nf-core/picard/markduplicates/tests/main.nf.test.snap new file mode 100644 index 000000000..31c9130dc --- /dev/null +++ b/modules/nf-core/picard/markduplicates/tests/main.nf.test.snap @@ -0,0 +1,74 @@ +{ + "sorted_bam_versions": { + "content": [ + [ + "versions.yml:md5,b699af51b1956f3810f8a7c066e0ab17" + ] + ], + "timestamp": "2024-01-19T10:26:45.092349" + }, + "unsorted_bam_name": { + "content": [ + "test.marked.bam" + ], + "timestamp": "2024-01-19T10:26:28.100755" + }, + "cram_metrics": { + "content": [ + [ + "## htsjdk.samtools.metrics.StringHeader", + "# MarkDuplicates --INPUT test.paired_end.sorted.cram --OUTPUT test.marked.bam --METRICS_FILE test.marked.MarkDuplicates.metrics.txt --ASSUME_SORT_ORDER queryname --REFERENCE_SEQUENCE genome.fasta --MAX_SEQUENCES_FOR_DISK_READ_ENDS_MAP 50000 --MAX_FILE_HANDLES_FOR_READ_ENDS_MAP 8000 --SORTING_COLLECTION_SIZE_RATIO 0.25 --TAG_DUPLICATE_SET_MEMBERS false --REMOVE_SEQUENCING_DUPLICATES false --TAGGING_POLICY DontTag --CLEAR_DT true --DUPLEX_UMI false --FLOW_MODE false --FLOW_QUALITY_SUM_STRATEGY false --USE_END_IN_UNPAIRED_READS false --USE_UNPAIRED_CLIPPED_END false --UNPAIRED_END_UNCERTAINTY 0 --FLOW_SKIP_FIRST_N_FLOWS 0 --FLOW_Q_IS_KNOWN_END false --FLOW_EFFECTIVE_QUALITY_THRESHOLD 15 --ADD_PG_TAG_TO_READS true --REMOVE_DUPLICATES false --ASSUME_SORTED false --DUPLICATE_SCORING_STRATEGY SUM_OF_BASE_QUALITIES --PROGRAM_RECORD_ID MarkDuplicates --PROGRAM_GROUP_NAME MarkDuplicates --READ_NAME_REGEX --OPTICAL_DUPLICATE_PIXEL_DISTANCE 100 --MAX_OPTICAL_DUPLICATE_SET_SIZE 300000 --VERBOSITY INFO --QUIET false --VALIDATION_STRINGENCY STRICT --COMPRESSION_LEVEL 5 --MAX_RECORDS_IN_RAM 500000 --CREATE_INDEX false --CREATE_MD5_FILE false --help false --version false --showHidden false --USE_JDK_DEFLATER false --USE_JDK_INFLATER false", + "## htsjdk.samtools.metrics.StringHeader" + ] + ], + "timestamp": "2024-01-19T10:27:03.253071" + }, + "sorted_bam_metrics": { + "content": [ + [ + "## htsjdk.samtools.metrics.StringHeader", + "# MarkDuplicates --INPUT test.paired_end.sorted.bam --OUTPUT test.marked.bam --METRICS_FILE test.marked.MarkDuplicates.metrics.txt --ASSUME_SORT_ORDER queryname --REFERENCE_SEQUENCE genome.fasta --MAX_SEQUENCES_FOR_DISK_READ_ENDS_MAP 50000 --MAX_FILE_HANDLES_FOR_READ_ENDS_MAP 8000 --SORTING_COLLECTION_SIZE_RATIO 0.25 --TAG_DUPLICATE_SET_MEMBERS false --REMOVE_SEQUENCING_DUPLICATES false --TAGGING_POLICY DontTag --CLEAR_DT true --DUPLEX_UMI false --FLOW_MODE false --FLOW_QUALITY_SUM_STRATEGY false --USE_END_IN_UNPAIRED_READS false --USE_UNPAIRED_CLIPPED_END false --UNPAIRED_END_UNCERTAINTY 0 --FLOW_SKIP_FIRST_N_FLOWS 0 --FLOW_Q_IS_KNOWN_END false --FLOW_EFFECTIVE_QUALITY_THRESHOLD 15 --ADD_PG_TAG_TO_READS true --REMOVE_DUPLICATES false --ASSUME_SORTED false --DUPLICATE_SCORING_STRATEGY SUM_OF_BASE_QUALITIES --PROGRAM_RECORD_ID MarkDuplicates --PROGRAM_GROUP_NAME MarkDuplicates --READ_NAME_REGEX --OPTICAL_DUPLICATE_PIXEL_DISTANCE 100 --MAX_OPTICAL_DUPLICATE_SET_SIZE 300000 --VERBOSITY INFO --QUIET false --VALIDATION_STRINGENCY STRICT --COMPRESSION_LEVEL 5 --MAX_RECORDS_IN_RAM 500000 --CREATE_INDEX false --CREATE_MD5_FILE false --help false --version false --showHidden false --USE_JDK_DEFLATER false --USE_JDK_INFLATER false", + "## htsjdk.samtools.metrics.StringHeader" + ] + ], + "timestamp": "2024-01-19T10:26:45.086503" + }, + "cram_name": { + "content": [ + "test.marked.bam" + ], + "timestamp": "2024-01-19T10:27:03.241617" + }, + "cram_versions": { + "content": [ + [ + "versions.yml:md5,b699af51b1956f3810f8a7c066e0ab17" + ] + ], + "timestamp": "2024-01-19T10:27:03.26989" + }, + "unsorted_bam_versions": { + "content": [ + [ + "versions.yml:md5,b699af51b1956f3810f8a7c066e0ab17" + ] + ], + "timestamp": "2024-01-19T10:26:28.159071" + }, + "unsorted_bam_metrics": { + "content": [ + [ + "## htsjdk.samtools.metrics.StringHeader", + "# MarkDuplicates --INPUT test.paired_end.bam --OUTPUT test.marked.bam --METRICS_FILE test.marked.MarkDuplicates.metrics.txt --ASSUME_SORT_ORDER queryname --REFERENCE_SEQUENCE genome.fasta --MAX_SEQUENCES_FOR_DISK_READ_ENDS_MAP 50000 --MAX_FILE_HANDLES_FOR_READ_ENDS_MAP 8000 --SORTING_COLLECTION_SIZE_RATIO 0.25 --TAG_DUPLICATE_SET_MEMBERS false --REMOVE_SEQUENCING_DUPLICATES false --TAGGING_POLICY DontTag --CLEAR_DT true --DUPLEX_UMI false --FLOW_MODE false --FLOW_QUALITY_SUM_STRATEGY false --USE_END_IN_UNPAIRED_READS false --USE_UNPAIRED_CLIPPED_END false --UNPAIRED_END_UNCERTAINTY 0 --FLOW_SKIP_FIRST_N_FLOWS 0 --FLOW_Q_IS_KNOWN_END false --FLOW_EFFECTIVE_QUALITY_THRESHOLD 15 --ADD_PG_TAG_TO_READS true --REMOVE_DUPLICATES false --ASSUME_SORTED false --DUPLICATE_SCORING_STRATEGY SUM_OF_BASE_QUALITIES --PROGRAM_RECORD_ID MarkDuplicates --PROGRAM_GROUP_NAME MarkDuplicates --READ_NAME_REGEX --OPTICAL_DUPLICATE_PIXEL_DISTANCE 100 --MAX_OPTICAL_DUPLICATE_SET_SIZE 300000 --VERBOSITY INFO --QUIET false --VALIDATION_STRINGENCY STRICT --COMPRESSION_LEVEL 5 --MAX_RECORDS_IN_RAM 500000 --CREATE_INDEX false --CREATE_MD5_FILE false --help false --version false --showHidden false --USE_JDK_DEFLATER false --USE_JDK_INFLATER false", + "## htsjdk.samtools.metrics.StringHeader" + ] + ], + "timestamp": "2024-01-19T10:26:28.143979" + }, + "sorted_bam_name": { + "content": [ + "test.marked.bam" + ], + "timestamp": "2024-01-19T10:26:45.080116" + } +} \ No newline at end of file diff --git a/modules/nf-core/picard/markduplicates/tests/nextflow.config b/modules/nf-core/picard/markduplicates/tests/nextflow.config new file mode 100644 index 000000000..02818dd6e --- /dev/null +++ b/modules/nf-core/picard/markduplicates/tests/nextflow.config @@ -0,0 +1,6 @@ +process { + withName: PICARD_MARKDUPLICATES { + ext.prefix = { "${meta.id}.marked" } + ext.args = '--ASSUME_SORT_ORDER queryname' + } +} diff --git a/modules/nf-core/picard/markduplicates/tests/tags.yml b/modules/nf-core/picard/markduplicates/tests/tags.yml new file mode 100644 index 000000000..4f213d620 --- /dev/null +++ b/modules/nf-core/picard/markduplicates/tests/tags.yml @@ -0,0 +1,2 @@ +picard/markduplicates: + - modules/nf-core/picard/markduplicates/** diff --git a/modules/nf-core/preseq/lcextrap/environment.yml b/modules/nf-core/preseq/lcextrap/environment.yml new file mode 100644 index 000000000..57b8b9c67 --- /dev/null +++ b/modules/nf-core/preseq/lcextrap/environment.yml @@ -0,0 +1,7 @@ +name: preseq_lcextrap +channels: + - conda-forge + - bioconda + - defaults +dependencies: + - bioconda::preseq=3.1.2 diff --git a/modules/nf-core/preseq/lcextrap/main.nf b/modules/nf-core/preseq/lcextrap/main.nf index 12546f0a2..ebbf215f0 100644 --- a/modules/nf-core/preseq/lcextrap/main.nf +++ b/modules/nf-core/preseq/lcextrap/main.nf @@ -3,7 +3,7 @@ process PRESEQ_LCEXTRAP { label 'process_single' label 'error_ignore' - conda "bioconda::preseq=3.1.2" + conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/preseq:3.1.2--h445547b_2': 'biocontainers/preseq:3.1.2--h445547b_2' }" diff --git a/modules/nf-core/preseq/lcextrap/meta.yml b/modules/nf-core/preseq/lcextrap/meta.yml old mode 100755 new mode 100644 index 1391961c8..c00fa8eef --- a/modules/nf-core/preseq/lcextrap/meta.yml +++ b/modules/nf-core/preseq/lcextrap/meta.yml @@ -10,9 +10,7 @@ tools: homepage: http://smithlabresearch.org/software/preseq/ documentation: http://smithlabresearch.org/wp-content/uploads/manual.pdf tool_dev_url: https://github.com/smithlabcode/preseq - licence: ["GPL"] - input: - meta: type: map @@ -23,7 +21,6 @@ input: type: file description: BAM/CRAM/SAM file pattern: "*.{bam,cram,sam}" - output: - meta: type: map @@ -42,7 +39,9 @@ output: type: file description: Log file containing stderr produced by Preseq pattern: "*.{log}" - authors: - "@drpatelh" - - "@Emiller88" + - "@edmundmiller" +maintainers: + - "@drpatelh" + - "@edmundmiller" diff --git a/modules/nf-core/preseq/lcextrap/tests/main.nf.test b/modules/nf-core/preseq/lcextrap/tests/main.nf.test new file mode 100644 index 000000000..aa12bc1ab --- /dev/null +++ b/modules/nf-core/preseq/lcextrap/tests/main.nf.test @@ -0,0 +1,54 @@ +nextflow_process { + + name "Test Process PRESEQ_LCEXTRAP" + script "../main.nf" + process "PRESEQ_LCEXTRAP" + tag "modules" + tag "modules_nfcore" + tag "preseq" + tag "preseq/lcextrap" + + test("sarscov2 - single_end") { + when { + process { + """ + input[0] = Channel.of([ + [ id:'test', single_end:true ], // meta map + [ file(params.modules_testdata_base_path + 'delete_me/preseq/SRR1003759_5M_subset.mr', checkIfExists: true) ] + ]) + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(file(process.out.log[0][1]).name).match("single_end - log") }, + { assert snapshot(process.out.lc_extrap).match("single_end - lc_extrap") }, + { assert snapshot(process.out.versions).match("single_end - versions") } + ) + } + } + + test("sarscov2 - paired_end") { + when { + process { + """ + input[0] = Channel.of([ + [ id:'test', single_end:false ], // meta map + [ file(params.modules_testdata_base_path + 'delete_me/preseq/SRR1003759_5M_subset.mr', checkIfExists: true) ] + ]) + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(file(process.out.log[0][1]).name).match("paired_end - log") }, + { assert snapshot(process.out.lc_extrap).match("paired_end - lc_extrap") }, + { assert snapshot(process.out.versions).match("paired_end - versions") } + ) + } + } +} \ No newline at end of file diff --git a/modules/nf-core/preseq/lcextrap/tests/main.nf.test.snap b/modules/nf-core/preseq/lcextrap/tests/main.nf.test.snap new file mode 100644 index 000000000..c59dea7fe --- /dev/null +++ b/modules/nf-core/preseq/lcextrap/tests/main.nf.test.snap @@ -0,0 +1,58 @@ +{ + "single_end - lc_extrap": { + "content": [ + [ + [ + { + "id": "test", + "single_end": true + }, + "test.lc_extrap.txt:md5,1fa5cdd601079329618f61660bee00de" + ] + ] + ], + "timestamp": "2023-11-23T17:20:40.735535" + }, + "paired_end - log": { + "content": [ + "test.command.log" + ], + "timestamp": "2023-11-23T17:20:51.981746" + }, + "single_end - versions": { + "content": [ + [ + "versions.yml:md5,9a62ff1c212c53573808ccd2137b8922" + ] + ], + "timestamp": "2023-11-23T17:20:40.74601" + }, + "paired_end - versions": { + "content": [ + [ + "versions.yml:md5,9a62ff1c212c53573808ccd2137b8922" + ] + ], + "timestamp": "2023-11-23T17:20:52.02843" + }, + "single_end - log": { + "content": [ + "test.command.log" + ], + "timestamp": "2023-11-23T17:20:40.72985" + }, + "paired_end - lc_extrap": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test.lc_extrap.txt:md5,10e5ea860e87fb6f5dc10f4f20c62040" + ] + ] + ], + "timestamp": "2023-11-23T17:20:51.998533" + } +} \ No newline at end of file diff --git a/modules/nf-core/preseq/lcextrap/tests/tags.yml b/modules/nf-core/preseq/lcextrap/tests/tags.yml new file mode 100644 index 000000000..b9e25ea71 --- /dev/null +++ b/modules/nf-core/preseq/lcextrap/tests/tags.yml @@ -0,0 +1,2 @@ +preseq/lcextrap: + - modules/nf-core/preseq/lcextrap/** diff --git a/modules/nf-core/qualimap/rnaseq/tests/main.nf.test b/modules/nf-core/qualimap/rnaseq/tests/main.nf.test new file mode 100644 index 000000000..4f02b8fba --- /dev/null +++ b/modules/nf-core/qualimap/rnaseq/tests/main.nf.test @@ -0,0 +1,40 @@ +nextflow_process { + + name "Test Process QUALIMAP_RNASEQ" + script "../main.nf" + process "QUALIMAP_RNASEQ" + tag "modules" + tag "modules_nfcore" + tag "qualimap" + tag "qualimap/rnaseq" + + test("homo_sapiens [bam]") { + + when { + params { + outdir = "$outputDir" + } + 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) + ]) + input[1] = Channel.of([ + [ id:'test_fasta_gtf' ], // meta map + [ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.gtf', checkIfExists: true) ] + ]) + """ + } + } + + then { + assertAll ( + { assert process.success }, + { assert path("${process.out.results[0][1]}/qualimapReport.html").exists() }, + { assert snapshot(path("${process.out.results[0][1]}/rnaseq_qc_results.txt")).match("rnaseq_qc_results") }, + { assert snapshot(process.out.versions).match("versions") } + ) + } + } +} diff --git a/modules/nf-core/qualimap/rnaseq/tests/main.nf.test.snap b/modules/nf-core/qualimap/rnaseq/tests/main.nf.test.snap new file mode 100644 index 000000000..7d1c72811 --- /dev/null +++ b/modules/nf-core/qualimap/rnaseq/tests/main.nf.test.snap @@ -0,0 +1,16 @@ +{ + "rnaseq_qc_results": { + "content": [ + "rnaseq_qc_results.txt:md5,b77878cac45beaa79a892af54aad2da3" + ], + "timestamp": "2024-01-19T12:07:55.509784" + }, + "versions": { + "content": [ + [ + "versions.yml:md5,a6868ab89f7d31361a7791db2dea98e7" + ] + ], + "timestamp": "2024-01-19T12:07:55.512116" + } +} \ No newline at end of file diff --git a/modules/nf-core/qualimap/rnaseq/tests/tags.yml b/modules/nf-core/qualimap/rnaseq/tests/tags.yml new file mode 100644 index 000000000..74269debe --- /dev/null +++ b/modules/nf-core/qualimap/rnaseq/tests/tags.yml @@ -0,0 +1,2 @@ +qualimap/rnaseq: + - modules/nf-core/qualimap/rnaseq/** diff --git a/modules/nf-core/rsem/calculateexpression/environment.yml b/modules/nf-core/rsem/calculateexpression/environment.yml new file mode 100644 index 000000000..b811fa6fe --- /dev/null +++ b/modules/nf-core/rsem/calculateexpression/environment.yml @@ -0,0 +1,8 @@ +name: rsem_calculateexpression +channels: + - conda-forge + - bioconda + - defaults +dependencies: + - bioconda::rsem=1.3.3 + - bioconda::star=2.7.10a diff --git a/modules/nf-core/rsem/calculateexpression/main.nf b/modules/nf-core/rsem/calculateexpression/main.nf index 54041aedb..8d88a56b2 100644 --- a/modules/nf-core/rsem/calculateexpression/main.nf +++ b/modules/nf-core/rsem/calculateexpression/main.nf @@ -2,7 +2,7 @@ process RSEM_CALCULATEEXPRESSION { tag "$meta.id" label 'process_high' - conda "bioconda::rsem=1.3.3 bioconda::star=2.7.10a" + conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/mulled-v2-cf0123ef83b3c38c13e3b0696a3f285d3f20f15b:64aad4a4e144878400649e71f42105311be7ed87-0' : 'biocontainers/mulled-v2-cf0123ef83b3c38c13e3b0696a3f285d3f20f15b:64aad4a4e144878400649e71f42105311be7ed87-0' }" diff --git a/modules/nf-core/rsem/calculateexpression/meta.yml b/modules/nf-core/rsem/calculateexpression/meta.yml index 680ede2e2..e6d580e9b 100644 --- a/modules/nf-core/rsem/calculateexpression/meta.yml +++ b/modules/nf-core/rsem/calculateexpression/meta.yml @@ -62,3 +62,6 @@ output: authors: - "@drpatelh" - "@kevinmenden" +maintainers: + - "@drpatelh" + - "@kevinmenden" diff --git a/modules/nf-core/rsem/calculateexpression/tests/main.nf.test b/modules/nf-core/rsem/calculateexpression/tests/main.nf.test new file mode 100644 index 000000000..9ab38c6aa --- /dev/null +++ b/modules/nf-core/rsem/calculateexpression/tests/main.nf.test @@ -0,0 +1,56 @@ +nextflow_process { + + name "Test Process RSEM_CALCULATEEXPRESSION" + script "../main.nf" + process "RSEM_CALCULATEEXPRESSION" + config "./nextflow.config" + tag "modules" + tag "modules_nfcore" + tag "rsem" + tag "rsem/calculateexpression" + + test("homo_sapiens") { + + setup { + run("RSEM_PREPAREREFERENCE") { + script "../../../rsem/preparereference/main.nf" + process { + """ + input[0] = Channel.of([file(params.test_data['homo_sapiens']['genome']['genome_fasta'], checkIfExists: true)]) + input[1] = Channel.of([file(params.test_data['homo_sapiens']['genome']['genome_gtf'], checkIfExists: true)]) + """ + } + } + } + + when { + params { + outdir = "$outputDir" + } + process { + """ + input[0] = Channel.of([ + [ id:'test', strandedness: 'forward' ], // meta map + [ + file(params.test_data['homo_sapiens']['illumina']['test_rnaseq_1_fastq_gz'], checkIfExists: true), + file(params.test_data['homo_sapiens']['illumina']['test_rnaseq_2_fastq_gz'], checkIfExists: true) + ] + ]) + input[1] = RSEM_PREPAREREFERENCE.out.index + """ + } + } + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out.counts_gene).match("counts_gene") }, + { assert snapshot(process.out.counts_transcript).match("counts_transcript") }, + { assert snapshot(process.out.stat).match("stat") }, + { assert path(process.out.logs.get(0).get(1)).exists() }, + { assert snapshot(process.out.versions).match("versions") } + ) + } + + } + +} diff --git a/modules/nf-core/rsem/calculateexpression/tests/main.nf.test.snap b/modules/nf-core/rsem/calculateexpression/tests/main.nf.test.snap new file mode 100644 index 000000000..c8a535e19 --- /dev/null +++ b/modules/nf-core/rsem/calculateexpression/tests/main.nf.test.snap @@ -0,0 +1,56 @@ +{ + "stat": { + "content": [ + [ + [ + { + "id": "test", + "strandedness": "forward" + }, + [ + "test.cnt:md5,76249e6b2f3c104f414aae596ba2c2f4", + "test.model:md5,a7a4bc1734918ef5848604e3362b83e2", + "test.theta:md5,de2e4490c98cc5383a86ae8225fd0a28" + ] + ] + ] + ], + "timestamp": "2023-11-22T13:14:18.68683" + }, + "counts_transcript": { + "content": [ + [ + [ + { + "id": "test", + "strandedness": "forward" + }, + "test.isoforms.results:md5,99f7f80aa505b44ca429fdebbd7dd5d8" + ] + ] + ], + "timestamp": "2023-11-22T13:14:18.682898" + }, + "versions": { + "content": [ + [ + "versions.yml:md5,823e53afe1ff4f3930ae8392f9f8dd5c" + ] + ], + "timestamp": "2023-11-22T13:14:18.700958" + }, + "counts_gene": { + "content": [ + [ + [ + { + "id": "test", + "strandedness": "forward" + }, + "test.genes.results:md5,c7ec226f76736ea805771e73553ae359" + ] + ] + ], + "timestamp": "2023-11-22T13:14:18.670998" + } +} \ No newline at end of file diff --git a/modules/nf-core/rsem/calculateexpression/tests/nextflow.config b/modules/nf-core/rsem/calculateexpression/tests/nextflow.config new file mode 100644 index 000000000..b17a1cf2e --- /dev/null +++ b/modules/nf-core/rsem/calculateexpression/tests/nextflow.config @@ -0,0 +1,13 @@ +process { + + publishDir = { "${params.outdir}/${task.process.tokenize(':')[-1].tokenize('_')[0].toLowerCase()}" } + + withName: RSEM_PREPAREREFERENCE { + ext.args = '--star' + } + + withName: RSEM_CALCULATEEXPRESSION { + ext.args = '--star --star-gzipped-read-file' + } + +} diff --git a/modules/nf-core/rsem/calculateexpression/tests/tags.yml b/modules/nf-core/rsem/calculateexpression/tests/tags.yml new file mode 100644 index 000000000..654756aa5 --- /dev/null +++ b/modules/nf-core/rsem/calculateexpression/tests/tags.yml @@ -0,0 +1,2 @@ +rsem/calculateexpression: + - modules/nf-core/rsem/calculateexpression/** diff --git a/modules/nf-core/rsem/preparereference/environment.yml b/modules/nf-core/rsem/preparereference/environment.yml new file mode 100644 index 000000000..c80e69106 --- /dev/null +++ b/modules/nf-core/rsem/preparereference/environment.yml @@ -0,0 +1,8 @@ +name: rsem_preparereference +channels: + - conda-forge + - bioconda + - defaults +dependencies: + - bioconda::rsem=1.3.3 + - bioconda::star=2.7.10a diff --git a/modules/nf-core/rsem/preparereference/main.nf b/modules/nf-core/rsem/preparereference/main.nf index 62b93d08a..44f76ebd6 100644 --- a/modules/nf-core/rsem/preparereference/main.nf +++ b/modules/nf-core/rsem/preparereference/main.nf @@ -2,7 +2,7 @@ process RSEM_PREPAREREFERENCE { tag "$fasta" label 'process_high' - conda "bioconda::rsem=1.3.3 bioconda::star=2.7.10a" + conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/mulled-v2-cf0123ef83b3c38c13e3b0696a3f285d3f20f15b:64aad4a4e144878400649e71f42105311be7ed87-0' : 'biocontainers/mulled-v2-cf0123ef83b3c38c13e3b0696a3f285d3f20f15b:64aad4a4e144878400649e71f42105311be7ed87-0' }" diff --git a/modules/nf-core/rsem/preparereference/meta.yml b/modules/nf-core/rsem/preparereference/meta.yml index 3568e1911..05aa44fe6 100644 --- a/modules/nf-core/rsem/preparereference/meta.yml +++ b/modules/nf-core/rsem/preparereference/meta.yml @@ -37,3 +37,6 @@ output: authors: - "@drpatelh" - "@kevinmenden" +maintainers: + - "@drpatelh" + - "@kevinmenden" diff --git a/modules/nf-core/rsem/preparereference/tests/main.nf.test b/modules/nf-core/rsem/preparereference/tests/main.nf.test new file mode 100644 index 000000000..a1d948d4b --- /dev/null +++ b/modules/nf-core/rsem/preparereference/tests/main.nf.test @@ -0,0 +1,36 @@ +nextflow_process { + + name "Test Process RSEM_PREPAREREFERENCE" + script "../main.nf" + process "RSEM_PREPAREREFERENCE" + tag "modules" + tag "modules_nfcore" + tag "rsem" + tag "rsem/preparereference" + + test("homo_sapiens") { + + when { + params { + outdir = "$outputDir" + } + process { + """ + input[0] = Channel.of([file(params.test_data['homo_sapiens']['genome']['genome_fasta'], checkIfExists: true)]) + input[1] = Channel.of([file(params.test_data['homo_sapiens']['genome']['genome_gtf'], checkIfExists: true)]) + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out.index).match("index")}, + { assert snapshot(process.out.transcript_fasta).match("transcript_fasta")}, + { assert snapshot(process.out.versions).match("versions") } + ) + } + + } + +} diff --git a/modules/nf-core/rsem/preparereference/tests/main.nf.test.snap b/modules/nf-core/rsem/preparereference/tests/main.nf.test.snap new file mode 100644 index 000000000..02510659a --- /dev/null +++ b/modules/nf-core/rsem/preparereference/tests/main.nf.test.snap @@ -0,0 +1,35 @@ +{ + "versions": { + "content": [ + [ + "versions.yml:md5,517611c42f6354d3609db1b35fffa397" + ] + ], + "timestamp": "2023-11-22T13:16:49.170587" + }, + "index": { + "content": [ + [ + [ + "genome.chrlist:md5,b190587cae0531f3cf25552d8aa674db", + "genome.fasta:md5,f315020d899597c1b57e5fe9f60f4c3e", + "genome.grp:md5,c2848a8b6d495956c11ec53efc1de67e", + "genome.idx.fa:md5,050c521a2719c2ae48267c1e65218f29", + "genome.n2g.idx.fa:md5,050c521a2719c2ae48267c1e65218f29", + "genome.seq:md5,94da0c6b88c33e63c9a052a11f4f57c1", + "genome.ti:md5,c9e4ae8d4d13a504eec2acf1b8589a66", + "genome.transcripts.fa:md5,050c521a2719c2ae48267c1e65218f29" + ] + ] + ], + "timestamp": "2023-11-22T13:16:49.140398" + }, + "transcript_fasta": { + "content": [ + [ + "genome.transcripts.fa:md5,050c521a2719c2ae48267c1e65218f29" + ] + ], + "timestamp": "2023-11-22T13:16:49.159946" + } +} \ No newline at end of file diff --git a/modules/nf-core/rsem/preparereference/tests/tags.yml b/modules/nf-core/rsem/preparereference/tests/tags.yml new file mode 100644 index 000000000..112904564 --- /dev/null +++ b/modules/nf-core/rsem/preparereference/tests/tags.yml @@ -0,0 +1,2 @@ +rsem/preparereference: + - modules/nf-core/rsem/preparereference/** diff --git a/modules/nf-core/rseqc/bamstat/environment.yml b/modules/nf-core/rseqc/bamstat/environment.yml new file mode 100644 index 000000000..e960c9943 --- /dev/null +++ b/modules/nf-core/rseqc/bamstat/environment.yml @@ -0,0 +1,8 @@ +name: rseqc_bamstat +channels: + - conda-forge + - bioconda + - defaults +dependencies: + - bioconda::rseqc=5.0.3 + - conda-forge::r-base>=3.5 diff --git a/modules/nf-core/rseqc/bamstat/main.nf b/modules/nf-core/rseqc/bamstat/main.nf index 66c9a7451..7db4c69bd 100644 --- a/modules/nf-core/rseqc/bamstat/main.nf +++ b/modules/nf-core/rseqc/bamstat/main.nf @@ -2,7 +2,7 @@ process RSEQC_BAMSTAT { tag "$meta.id" label 'process_medium' - conda "bioconda::rseqc=5.0.3" + conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/rseqc:5.0.3--py39hf95cd2a_0' : 'biocontainers/rseqc:5.0.3--py39hf95cd2a_0' }" diff --git a/modules/nf-core/rseqc/bamstat/meta.yml b/modules/nf-core/rseqc/bamstat/meta.yml index 2d7fa7996..72745310c 100644 --- a/modules/nf-core/rseqc/bamstat/meta.yml +++ b/modules/nf-core/rseqc/bamstat/meta.yml @@ -35,3 +35,6 @@ output: authors: - "@drpatelh" - "@kevinmenden" +maintainers: + - "@drpatelh" + - "@kevinmenden" diff --git a/modules/nf-core/rseqc/bamstat/tests/main.nf.test b/modules/nf-core/rseqc/bamstat/tests/main.nf.test new file mode 100644 index 000000000..1facabea0 --- /dev/null +++ b/modules/nf-core/rseqc/bamstat/tests/main.nf.test @@ -0,0 +1,38 @@ +nextflow_process { + + name "Test Process RSEQC_BAMSTAT" + script "../main.nf" + process "RSEQC_BAMSTAT" + + tag "modules" + tag "modules_nfcore" + tag "rseqc" + tag "rseqc/bamstat" + + config "./nextflow.config" + + test("sarscov2 - [meta] - bam") { + + when { + params { + // define parameters here. Example: + // outdir = "tests/results" + } + process { + """ + input[0] = [ + [ id:'test' ], // meta map + file(params.test_data['sarscov2']['illumina']['test_paired_end_sorted_bam'], checkIfExists: true) + ] + """ + } + } + + then { + assert process.success + assert snapshot(process.out).match() + } + + } + +} diff --git a/modules/nf-core/rseqc/bamstat/tests/main.nf.test.snap b/modules/nf-core/rseqc/bamstat/tests/main.nf.test.snap new file mode 100644 index 000000000..57c764e57 --- /dev/null +++ b/modules/nf-core/rseqc/bamstat/tests/main.nf.test.snap @@ -0,0 +1,31 @@ +{ + "sarscov2 - [meta] - bam": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.bam_stat.txt:md5,2675857864c1d1139b2a19d25dc36b09" + ] + ], + "1": [ + "versions.yml:md5,58f74a7ff9d2966142c81a4a4735dbf3" + ], + "txt": [ + [ + { + "id": "test" + }, + "test.bam_stat.txt:md5,2675857864c1d1139b2a19d25dc36b09" + ] + ], + "versions": [ + "versions.yml:md5,58f74a7ff9d2966142c81a4a4735dbf3" + ] + } + ], + "timestamp": "2023-12-14T17:00:23.830276754" + } +} \ No newline at end of file diff --git a/modules/nf-core/kallisto/quant/tests/paired_end.config b/modules/nf-core/rseqc/bamstat/tests/nextflow.config similarity index 100% rename from modules/nf-core/kallisto/quant/tests/paired_end.config rename to modules/nf-core/rseqc/bamstat/tests/nextflow.config diff --git a/modules/nf-core/rseqc/bamstat/tests/tags.yml b/modules/nf-core/rseqc/bamstat/tests/tags.yml new file mode 100644 index 000000000..ed9a41fa9 --- /dev/null +++ b/modules/nf-core/rseqc/bamstat/tests/tags.yml @@ -0,0 +1,2 @@ +rseqc/bamstat: + - modules/nf-core/rseqc/bamstat/** diff --git a/modules/nf-core/rseqc/inferexperiment/environment.yml b/modules/nf-core/rseqc/inferexperiment/environment.yml new file mode 100644 index 000000000..78215985a --- /dev/null +++ b/modules/nf-core/rseqc/inferexperiment/environment.yml @@ -0,0 +1,8 @@ +name: rseqc_inferexperiment +channels: + - conda-forge + - bioconda + - defaults +dependencies: + - bioconda::rseqc=5.0.3 + - conda-forge::r-base>=3.5 diff --git a/modules/nf-core/rseqc/inferexperiment/main.nf b/modules/nf-core/rseqc/inferexperiment/main.nf index df24d7262..39fe816d3 100644 --- a/modules/nf-core/rseqc/inferexperiment/main.nf +++ b/modules/nf-core/rseqc/inferexperiment/main.nf @@ -2,7 +2,7 @@ process RSEQC_INFEREXPERIMENT { tag "$meta.id" label 'process_medium' - conda "bioconda::rseqc=5.0.3" + conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/rseqc:5.0.3--py39hf95cd2a_0' : 'biocontainers/rseqc:5.0.3--py39hf95cd2a_0' }" diff --git a/modules/nf-core/rseqc/inferexperiment/meta.yml b/modules/nf-core/rseqc/inferexperiment/meta.yml index b4162059d..d9b9ff63e 100644 --- a/modules/nf-core/rseqc/inferexperiment/meta.yml +++ b/modules/nf-core/rseqc/inferexperiment/meta.yml @@ -2,6 +2,7 @@ name: rseqc_inferexperiment description: Infer strandedness from sequencing reads keywords: - rnaseq + - strandedness - experiment tools: - rseqc: @@ -38,3 +39,6 @@ output: authors: - "@drpatelh" - "@kevinmenden" +maintainers: + - "@drpatelh" + - "@kevinmenden" diff --git a/modules/nf-core/rseqc/inferexperiment/tests/main.nf.test b/modules/nf-core/rseqc/inferexperiment/tests/main.nf.test new file mode 100644 index 000000000..97cd2cb9a --- /dev/null +++ b/modules/nf-core/rseqc/inferexperiment/tests/main.nf.test @@ -0,0 +1,34 @@ +nextflow_process { + + name "Test Process RSEQC_INFEREXPERIMENT" + script "../main.nf" + process "RSEQC_INFEREXPERIMENT" + config "./nextflow.config" + + tag "modules" + tag "modules_nfcore" + tag "rseqc" + tag "rseqc/inferexperiment" + + test("sarscov2 - [[meta] - bam] - bed") { + + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + file(params.test_data['sarscov2']['illumina']['test_paired_end_sorted_bam'], checkIfExists: true) + ] + input[1] = file(params.test_data['sarscov2']['genome']['test_bed'], checkIfExists: true) + """ + } + } + + then { + assert process.success + assert snapshot(process.out).match() + } + + } + +} diff --git a/modules/nf-core/rseqc/inferexperiment/tests/main.nf.test.snap b/modules/nf-core/rseqc/inferexperiment/tests/main.nf.test.snap new file mode 100644 index 000000000..42ae74ff3 --- /dev/null +++ b/modules/nf-core/rseqc/inferexperiment/tests/main.nf.test.snap @@ -0,0 +1,31 @@ +{ + "sarscov2 - [[meta] - bam] - bed": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.infer_experiment.txt:md5,f9d0bfc239df637cd8aeda40ade3c59a" + ] + ], + "1": [ + "versions.yml:md5,f56ba5c6208ae720dd730f3a432e3ba7" + ], + "txt": [ + [ + { + "id": "test" + }, + "test.infer_experiment.txt:md5,f9d0bfc239df637cd8aeda40ade3c59a" + ] + ], + "versions": [ + "versions.yml:md5,f56ba5c6208ae720dd730f3a432e3ba7" + ] + } + ], + "timestamp": "2023-12-14T17:25:08.399005243" + } +} \ No newline at end of file diff --git a/modules/nf-core/kallisto/quant/tests/single_end.config b/modules/nf-core/rseqc/inferexperiment/tests/nextflow.config similarity index 92% rename from modules/nf-core/kallisto/quant/tests/single_end.config rename to modules/nf-core/rseqc/inferexperiment/tests/nextflow.config index 7022246bc..8730f1c4b 100644 --- a/modules/nf-core/kallisto/quant/tests/single_end.config +++ b/modules/nf-core/rseqc/inferexperiment/tests/nextflow.config @@ -1,5 +1,5 @@ process { - + publishDir = { "${params.outdir}/${task.process.tokenize(':')[-1].tokenize('_')[0].toLowerCase()}" } - + } diff --git a/modules/nf-core/rseqc/inferexperiment/tests/tags.yml b/modules/nf-core/rseqc/inferexperiment/tests/tags.yml new file mode 100644 index 000000000..f9ba7e26a --- /dev/null +++ b/modules/nf-core/rseqc/inferexperiment/tests/tags.yml @@ -0,0 +1,2 @@ +rseqc/inferexperiment: + - modules/nf-core/rseqc/inferexperiment/** diff --git a/modules/nf-core/rseqc/innerdistance/environment.yml b/modules/nf-core/rseqc/innerdistance/environment.yml new file mode 100644 index 000000000..fb6e9e925 --- /dev/null +++ b/modules/nf-core/rseqc/innerdistance/environment.yml @@ -0,0 +1,8 @@ +name: rseqc_innerdistance +channels: + - conda-forge + - bioconda + - defaults +dependencies: + - bioconda::rseqc=5.0.3 + - conda-forge::r-base>=3.5 diff --git a/modules/nf-core/rseqc/innerdistance/main.nf b/modules/nf-core/rseqc/innerdistance/main.nf index b84115cee..de7e302d7 100644 --- a/modules/nf-core/rseqc/innerdistance/main.nf +++ b/modules/nf-core/rseqc/innerdistance/main.nf @@ -2,7 +2,7 @@ process RSEQC_INNERDISTANCE { tag "$meta.id" label 'process_medium' - conda "bioconda::rseqc=5.0.3" + conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/rseqc:5.0.3--py39hf95cd2a_0' : 'biocontainers/rseqc:5.0.3--py39hf95cd2a_0' }" diff --git a/modules/nf-core/rseqc/innerdistance/meta.yml b/modules/nf-core/rseqc/innerdistance/meta.yml index d10a4c445..d0a5bf181 100644 --- a/modules/nf-core/rseqc/innerdistance/meta.yml +++ b/modules/nf-core/rseqc/innerdistance/meta.yml @@ -1,6 +1,7 @@ name: rseqc_innerdistance description: Calculate inner distance between read pairs. keywords: + - read_pairs - fragment_size - inner_distance tools: @@ -54,3 +55,6 @@ output: authors: - "@drpatelh" - "@kevinmenden" +maintainers: + - "@drpatelh" + - "@kevinmenden" diff --git a/modules/nf-core/rseqc/innerdistance/tests/main.nf.test b/modules/nf-core/rseqc/innerdistance/tests/main.nf.test new file mode 100644 index 000000000..ee8901422 --- /dev/null +++ b/modules/nf-core/rseqc/innerdistance/tests/main.nf.test @@ -0,0 +1,41 @@ +nextflow_process { + + name "Test Process RSEQC_INNERDISTANCE" + script "../main.nf" + process "RSEQC_INNERDISTANCE" + config "./nextflow.config" + + tag "modules" + tag "modules_nfcore" + tag "rseqc" + tag "rseqc/innerdistance" + + test("sarscov2 - [[meta] - bam] - bed") { + + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + file(params.test_data['sarscov2']['illumina']['test_paired_end_sorted_bam'], checkIfExists: true) + ] + input[1] = file(params.test_data['sarscov2']['genome']['test_bed12'], checkIfExists: true) + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out.distance).match("pe_distance") }, + { assert snapshot(process.out.freq).match("freq") }, + { assert snapshot(process.out.mean).match("mean") }, + { assert snapshot(process.out.freq).match("rscript") }, + { assert snapshot(process.out.versions).match("pe_versions") }, + { assert snapshot(file(process.out.pdf[0][1]).name).match("pdf") } + ) + } + + } + +} diff --git a/modules/nf-core/rseqc/innerdistance/tests/main.nf.test.snap b/modules/nf-core/rseqc/innerdistance/tests/main.nf.test.snap new file mode 100644 index 000000000..c1e2d0e76 --- /dev/null +++ b/modules/nf-core/rseqc/innerdistance/tests/main.nf.test.snap @@ -0,0 +1,68 @@ +{ + "pe_distance": { + "content": [ + [ + [ + { + "id": "test" + }, + "test.inner_distance.txt:md5,a1acc9def0f64a5500d4c4cb47cbe32b" + ] + ] + ], + "timestamp": "2023-11-23T16:59:21.812491711" + }, + "rscript": { + "content": [ + [ + [ + { + "id": "test" + }, + "test.inner_distance_freq.txt:md5,3fc037501f5899b5da009c8ce02fc25e" + ] + ] + ], + "timestamp": "2023-11-23T16:59:21.847527889" + }, + "pdf": { + "content": [ + "test.inner_distance_plot.pdf" + ], + "timestamp": "2023-11-23T17:23:20.046679629" + }, + "mean": { + "content": [ + [ + [ + { + "id": "test" + }, + "test.inner_distance_mean.txt:md5,58398b7d5a29a5e564f9e3c50b55996c" + ] + ] + ], + "timestamp": "2023-11-23T16:59:21.839422659" + }, + "freq": { + "content": [ + [ + [ + { + "id": "test" + }, + "test.inner_distance_freq.txt:md5,3fc037501f5899b5da009c8ce02fc25e" + ] + ] + ], + "timestamp": "2023-11-23T16:59:21.83183025" + }, + "pe_versions": { + "content": [ + [ + "versions.yml:md5,3ca19644c7f02a53db3ffe50c7706797" + ] + ], + "timestamp": "2023-12-14T17:22:27.076470855" + } +} \ No newline at end of file diff --git a/modules/nf-core/rseqc/innerdistance/tests/nextflow.config b/modules/nf-core/rseqc/innerdistance/tests/nextflow.config new file mode 100644 index 000000000..8730f1c4b --- /dev/null +++ b/modules/nf-core/rseqc/innerdistance/tests/nextflow.config @@ -0,0 +1,5 @@ +process { + + publishDir = { "${params.outdir}/${task.process.tokenize(':')[-1].tokenize('_')[0].toLowerCase()}" } + +} diff --git a/modules/nf-core/rseqc/innerdistance/tests/tags.yml b/modules/nf-core/rseqc/innerdistance/tests/tags.yml new file mode 100644 index 000000000..4a9d0acf9 --- /dev/null +++ b/modules/nf-core/rseqc/innerdistance/tests/tags.yml @@ -0,0 +1,2 @@ +rseqc/innerdistance: + - modules/nf-core/rseqc/innerdistance/** diff --git a/modules/nf-core/rseqc/junctionannotation/environment.yml b/modules/nf-core/rseqc/junctionannotation/environment.yml new file mode 100644 index 000000000..35276b715 --- /dev/null +++ b/modules/nf-core/rseqc/junctionannotation/environment.yml @@ -0,0 +1,8 @@ +name: rseqc_junctionannotation +channels: + - conda-forge + - bioconda + - defaults +dependencies: + - bioconda::rseqc=5.0.3 + - conda-forge::r-base>=3.5 diff --git a/modules/nf-core/rseqc/junctionannotation/main.nf b/modules/nf-core/rseqc/junctionannotation/main.nf index 9f9c96725..4e1b03b61 100644 --- a/modules/nf-core/rseqc/junctionannotation/main.nf +++ b/modules/nf-core/rseqc/junctionannotation/main.nf @@ -2,7 +2,7 @@ process RSEQC_JUNCTIONANNOTATION { tag "$meta.id" label 'process_medium' - conda "bioconda::rseqc=5.0.3" + conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/rseqc:5.0.3--py39hf95cd2a_0' : 'biocontainers/rseqc:5.0.3--py39hf95cd2a_0' }" @@ -33,7 +33,7 @@ process RSEQC_JUNCTIONANNOTATION { -r $bed \\ -o $prefix \\ $args \\ - 2> ${prefix}.junction_annotation.log + 2> >(grep -v 'E::idx_find_and_load' | tee ${prefix}.junction_annotation.log >&2) cat <<-END_VERSIONS > versions.yml "${task.process}": diff --git a/modules/nf-core/rseqc/junctionannotation/meta.yml b/modules/nf-core/rseqc/junctionannotation/meta.yml index 48c43260e..a88aa2db3 100644 --- a/modules/nf-core/rseqc/junctionannotation/meta.yml +++ b/modules/nf-core/rseqc/junctionannotation/meta.yml @@ -63,3 +63,6 @@ output: authors: - "@drpatelh" - "@kevinmenden" +maintainers: + - "@drpatelh" + - "@kevinmenden" diff --git a/modules/nf-core/rseqc/junctionannotation/tests/main.nf.test b/modules/nf-core/rseqc/junctionannotation/tests/main.nf.test new file mode 100644 index 000000000..ed2c27558 --- /dev/null +++ b/modules/nf-core/rseqc/junctionannotation/tests/main.nf.test @@ -0,0 +1,37 @@ +nextflow_process { + + name "Test Process RSEQC_JUNCTIONANNOTATION" + script "../main.nf" + process "RSEQC_JUNCTIONANNOTATION" + tag "modules" + tag "modules_nfcore" + tag "rseqc" + tag "rseqc/junctionannotation" + + test("sarscov2 - paired end [bam]") { + + when { + process { + """ + input[0] = [ + [ id:'test', single_end: false ], // meta map + file(params.test_data['sarscov2']['illumina']['test_paired_end_sorted_bam'], checkIfExists: true) + ] + input[1] = file(params.test_data['sarscov2']['genome']['test_bed'], checkIfExists: true) + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out.log).match("log") }, + { assert snapshot(process.out.versions).match("versions") }, + { assert process.out.xls.get(0).get(1) ==~ ".*/test.junction.xls" }, + { assert process.out.rscript.get(0).get(1) ==~ ".*/test.junction_plot.r" } + ) + } + + } + +} diff --git a/modules/nf-core/rseqc/junctionannotation/tests/main.nf.test.snap b/modules/nf-core/rseqc/junctionannotation/tests/main.nf.test.snap new file mode 100644 index 000000000..7d1d1823b --- /dev/null +++ b/modules/nf-core/rseqc/junctionannotation/tests/main.nf.test.snap @@ -0,0 +1,24 @@ +{ + "log": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test.junction_annotation.log:md5,ef37d06d169a1adbeec23fddf82aee2b" + ] + ] + ], + "timestamp": "2023-12-14T18:56:11.636775765" + }, + "versions": { + "content": [ + [ + "versions.yml:md5,091865c0ebd6de262c9b0968b5771091" + ] + ], + "timestamp": "2023-12-14T17:08:02.340160345" + } +} \ No newline at end of file diff --git a/modules/nf-core/rseqc/junctionannotation/tests/tags.yml b/modules/nf-core/rseqc/junctionannotation/tests/tags.yml new file mode 100644 index 000000000..5f719fb8d --- /dev/null +++ b/modules/nf-core/rseqc/junctionannotation/tests/tags.yml @@ -0,0 +1,2 @@ +rseqc/junctionannotation: + - modules/nf-core/rseqc/junctionannotation/** diff --git a/modules/nf-core/rseqc/junctionsaturation/environment.yml b/modules/nf-core/rseqc/junctionsaturation/environment.yml new file mode 100644 index 000000000..7b9cc4fa7 --- /dev/null +++ b/modules/nf-core/rseqc/junctionsaturation/environment.yml @@ -0,0 +1,8 @@ +name: rseqc_junctionsaturation +channels: + - conda-forge + - bioconda + - defaults +dependencies: + - bioconda::rseqc=5.0.3 + - conda-forge::r-base>=3.5 diff --git a/modules/nf-core/rseqc/junctionsaturation/main.nf b/modules/nf-core/rseqc/junctionsaturation/main.nf index f99049c0d..1b10ab744 100644 --- a/modules/nf-core/rseqc/junctionsaturation/main.nf +++ b/modules/nf-core/rseqc/junctionsaturation/main.nf @@ -2,7 +2,7 @@ process RSEQC_JUNCTIONSATURATION { tag "$meta.id" label 'process_medium' - conda "bioconda::rseqc=5.0.3" + conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/rseqc:5.0.3--py39hf95cd2a_0' : 'biocontainers/rseqc:5.0.3--py39hf95cd2a_0' }" diff --git a/modules/nf-core/rseqc/junctionsaturation/meta.yml b/modules/nf-core/rseqc/junctionsaturation/meta.yml index 340fec0d0..19ae3f52d 100644 --- a/modules/nf-core/rseqc/junctionsaturation/meta.yml +++ b/modules/nf-core/rseqc/junctionsaturation/meta.yml @@ -43,3 +43,6 @@ output: authors: - "@drpatelh" - "@kevinmenden" +maintainers: + - "@drpatelh" + - "@kevinmenden" diff --git a/modules/nf-core/rseqc/junctionsaturation/tests/main.nf.test b/modules/nf-core/rseqc/junctionsaturation/tests/main.nf.test new file mode 100644 index 000000000..347b5fccd --- /dev/null +++ b/modules/nf-core/rseqc/junctionsaturation/tests/main.nf.test @@ -0,0 +1,36 @@ +nextflow_process { + + name "Test Process RSEQC_JUNCTIONSATURATION" + script "../main.nf" + process "RSEQC_JUNCTIONSATURATION" + tag "modules" + tag "modules_nfcore" + tag "rseqc" + tag "rseqc/junctionsaturation" + + test("sarscov2 paired-end [bam]") { + + when { + process { + """ + input[0] = [ + [ id:'test', single_end: false ], // meta map + file(params.test_data['sarscov2']['illumina']['test_paired_end_sorted_bam'], checkIfExists: true) + ] + input[1] = file(params.test_data['sarscov2']['genome']['test_bed'], checkIfExists: true) + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out.rscript).match("rscript") }, + { assert snapshot(process.out.versions).match("versions") }, + { assert snapshot(file(process.out.pdf[0][1]).name).match("pdf") } + ) + } + + } + +} diff --git a/modules/nf-core/rseqc/junctionsaturation/tests/main.nf.test.snap b/modules/nf-core/rseqc/junctionsaturation/tests/main.nf.test.snap new file mode 100644 index 000000000..417109563 --- /dev/null +++ b/modules/nf-core/rseqc/junctionsaturation/tests/main.nf.test.snap @@ -0,0 +1,30 @@ +{ + "rscript": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test.junctionSaturation_plot.r:md5,caa6e63dcb477aabb169882b2f30dadd" + ] + ] + ], + "timestamp": "2023-11-24T00:15:43.655261555" + }, + "pdf": { + "content": [ + "test.junctionSaturation_plot.pdf" + ], + "timestamp": "2023-11-24T00:15:43.682673802" + }, + "versions": { + "content": [ + [ + "versions.yml:md5,cd4638541a825dbd44e3cb65d2980aa1" + ] + ], + "timestamp": "2023-12-14T14:59:00.979242265" + } +} \ No newline at end of file diff --git a/modules/nf-core/rseqc/junctionsaturation/tests/tags.yml b/modules/nf-core/rseqc/junctionsaturation/tests/tags.yml new file mode 100644 index 000000000..7022b59ad --- /dev/null +++ b/modules/nf-core/rseqc/junctionsaturation/tests/tags.yml @@ -0,0 +1,2 @@ +rseqc/junctionsaturation: + - modules/nf-core/rseqc/junctionsaturation/** diff --git a/modules/nf-core/rseqc/readdistribution/environment.yml b/modules/nf-core/rseqc/readdistribution/environment.yml new file mode 100644 index 000000000..59be9fa88 --- /dev/null +++ b/modules/nf-core/rseqc/readdistribution/environment.yml @@ -0,0 +1,8 @@ +name: rseqc_readdistribution +channels: + - conda-forge + - bioconda + - defaults +dependencies: + - bioconda::rseqc=5.0.3 + - conda-forge::r-base>=3.5 diff --git a/modules/nf-core/rseqc/readdistribution/main.nf b/modules/nf-core/rseqc/readdistribution/main.nf index 3bf42d1e3..e0d8bfe9d 100644 --- a/modules/nf-core/rseqc/readdistribution/main.nf +++ b/modules/nf-core/rseqc/readdistribution/main.nf @@ -2,7 +2,7 @@ process RSEQC_READDISTRIBUTION { tag "$meta.id" label 'process_medium' - conda "bioconda::rseqc=5.0.3" + conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/rseqc:5.0.3--py39hf95cd2a_0' : 'biocontainers/rseqc:5.0.3--py39hf95cd2a_0' }" diff --git a/modules/nf-core/rseqc/readdistribution/meta.yml b/modules/nf-core/rseqc/readdistribution/meta.yml index 94c647120..989792faa 100644 --- a/modules/nf-core/rseqc/readdistribution/meta.yml +++ b/modules/nf-core/rseqc/readdistribution/meta.yml @@ -39,3 +39,6 @@ output: authors: - "@drpatelh" - "@kevinmenden" +maintainers: + - "@drpatelh" + - "@kevinmenden" diff --git a/modules/nf-core/rseqc/readdistribution/tests/main.nf.test b/modules/nf-core/rseqc/readdistribution/tests/main.nf.test new file mode 100644 index 000000000..4da721ab6 --- /dev/null +++ b/modules/nf-core/rseqc/readdistribution/tests/main.nf.test @@ -0,0 +1,33 @@ +nextflow_process { + + name "Test Process RSEQC_READDISTRIBUTION" + script "../main.nf" + process "RSEQC_READDISTRIBUTION" + tag "modules" + tag "modules_nfcore" + tag "rseqc" + tag "rseqc/readdistribution" + + test("sarscov2 paired-end [bam]") { + + when { + process { + """ + input[0] = [ [ id:'test', single_end: false ], // meta map + file(params.test_data['sarscov2']['illumina']['test_paired_end_sorted_bam'], checkIfExists: true) + ] + input[1] = file(params.test_data['sarscov2']['genome']['test_bed12'], checkIfExists: true) + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + +} diff --git a/modules/nf-core/rseqc/readdistribution/tests/main.nf.test.snap b/modules/nf-core/rseqc/readdistribution/tests/main.nf.test.snap new file mode 100644 index 000000000..b5f57ca4c --- /dev/null +++ b/modules/nf-core/rseqc/readdistribution/tests/main.nf.test.snap @@ -0,0 +1,33 @@ +{ + "sarscov2 paired-end [bam]": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.read_distribution.txt:md5,56893fdc0809d968629a363551a1655f" + ] + ], + "1": [ + "versions.yml:md5,fc68a268ab32a0d72a66f270d6c7925e" + ], + "txt": [ + [ + { + "id": "test", + "single_end": false + }, + "test.read_distribution.txt:md5,56893fdc0809d968629a363551a1655f" + ] + ], + "versions": [ + "versions.yml:md5,fc68a268ab32a0d72a66f270d6c7925e" + ] + } + ], + "timestamp": "2023-12-14T17:17:31.66536021" + } +} \ No newline at end of file diff --git a/modules/nf-core/rseqc/readdistribution/tests/tags.yml b/modules/nf-core/rseqc/readdistribution/tests/tags.yml new file mode 100644 index 000000000..c0c477b6d --- /dev/null +++ b/modules/nf-core/rseqc/readdistribution/tests/tags.yml @@ -0,0 +1,2 @@ +rseqc/readdistribution: + - modules/nf-core/rseqc/readdistribution/** diff --git a/modules/nf-core/rseqc/readduplication/environment.yml b/modules/nf-core/rseqc/readduplication/environment.yml new file mode 100644 index 000000000..c99f107a1 --- /dev/null +++ b/modules/nf-core/rseqc/readduplication/environment.yml @@ -0,0 +1,8 @@ +name: rseqc_readduplication +channels: + - conda-forge + - bioconda + - defaults +dependencies: + - bioconda::rseqc=5.0.3 + - conda-forge::r-base>=3.5 diff --git a/modules/nf-core/rseqc/readduplication/main.nf b/modules/nf-core/rseqc/readduplication/main.nf index d83547205..7dc68cf8e 100644 --- a/modules/nf-core/rseqc/readduplication/main.nf +++ b/modules/nf-core/rseqc/readduplication/main.nf @@ -2,7 +2,7 @@ process RSEQC_READDUPLICATION { tag "$meta.id" label 'process_medium' - conda "bioconda::rseqc=5.0.3" + conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/rseqc:5.0.3--py39hf95cd2a_0' : 'biocontainers/rseqc:5.0.3--py39hf95cd2a_0' }" diff --git a/modules/nf-core/rseqc/readduplication/meta.yml b/modules/nf-core/rseqc/readduplication/meta.yml index 5a8666435..4b24d3032 100644 --- a/modules/nf-core/rseqc/readduplication/meta.yml +++ b/modules/nf-core/rseqc/readduplication/meta.yml @@ -3,6 +3,8 @@ description: Calculate read duplication rate keywords: - rnaseq - duplication + - sequence-based + - mapping-based tools: - rseqc: description: | @@ -50,3 +52,6 @@ output: authors: - "@drpatelh" - "@kevinmenden" +maintainers: + - "@drpatelh" + - "@kevinmenden" diff --git a/modules/nf-core/rseqc/readduplication/tests/main.nf.test b/modules/nf-core/rseqc/readduplication/tests/main.nf.test new file mode 100644 index 000000000..93d0cccd6 --- /dev/null +++ b/modules/nf-core/rseqc/readduplication/tests/main.nf.test @@ -0,0 +1,36 @@ +nextflow_process { + + name "Test Process RSEQC_READDUPLICATION" + script "../main.nf" + process "RSEQC_READDUPLICATION" + tag "modules" + tag "modules_nfcore" + tag "rseqc" + tag "rseqc/readduplication" + + test("sarscov2 paired-end [bam]") { + + when { + process { + """ + input[0] = [ [ id:'test', single_end: false ], // meta map + file(params.test_data['sarscov2']['illumina']['test_paired_end_sorted_bam'], checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out.seq_xls).match("seq_xls") }, + { assert snapshot(process.out.pos_xls).match("pos_xls") }, + { assert snapshot(process.out.rscript).match("rscript") }, + { assert snapshot(process.out.versions).match("versions") }, + { assert snapshot(file(process.out.pdf[0][1]).name).match("pdf") } + ) + } + + } + +} diff --git a/modules/nf-core/rseqc/readduplication/tests/main.nf.test.snap b/modules/nf-core/rseqc/readduplication/tests/main.nf.test.snap new file mode 100644 index 000000000..28ffb87b0 --- /dev/null +++ b/modules/nf-core/rseqc/readduplication/tests/main.nf.test.snap @@ -0,0 +1,58 @@ +{ + "pos_xls": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test.pos.DupRate.xls:md5,a859bc2031d46bf1cc4336205847caa3" + ] + ] + ], + "timestamp": "2023-11-24T00:52:45.27809706" + }, + "rscript": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test.DupRate_plot.r:md5,3c0325095cee4835b921e57d61c23dca" + ] + ] + ], + "timestamp": "2023-11-24T00:52:45.285457599" + }, + "pdf": { + "content": [ + "test.DupRate_plot.pdf" + ], + "timestamp": "2023-11-24T00:52:45.304152477" + }, + "seq_xls": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test.seq.DupRate.xls:md5,ee8783399eec5a18522a6f08bece338b" + ] + ] + ], + "timestamp": "2023-11-24T00:52:45.262656562" + }, + "versions": { + "content": [ + [ + "versions.yml:md5,8a0721f3247f97135eadb8eecbe142a1" + ] + ], + "timestamp": "2023-12-14T17:23:41.82098803" + } +} \ No newline at end of file diff --git a/modules/nf-core/rseqc/readduplication/tests/tags.yml b/modules/nf-core/rseqc/readduplication/tests/tags.yml new file mode 100644 index 000000000..fce3d35d4 --- /dev/null +++ b/modules/nf-core/rseqc/readduplication/tests/tags.yml @@ -0,0 +1,2 @@ +rseqc/readduplication: + - modules/nf-core/rseqc/readduplication/** diff --git a/modules/nf-core/rseqc/tin/environment.yml b/modules/nf-core/rseqc/tin/environment.yml new file mode 100644 index 000000000..288da4300 --- /dev/null +++ b/modules/nf-core/rseqc/tin/environment.yml @@ -0,0 +1,8 @@ +name: rseqc_tin +channels: + - conda-forge + - bioconda + - defaults +dependencies: + - bioconda::rseqc=5.0.3 + - conda-forge::r-base>=3.5 diff --git a/modules/nf-core/rseqc/tin/main.nf b/modules/nf-core/rseqc/tin/main.nf index 38f1c1757..1faed91b8 100644 --- a/modules/nf-core/rseqc/tin/main.nf +++ b/modules/nf-core/rseqc/tin/main.nf @@ -2,7 +2,7 @@ process RSEQC_TIN { tag "$meta.id" label 'process_high' - conda "bioconda::rseqc=5.0.3" + conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/rseqc:5.0.3--py39hf95cd2a_0' : 'biocontainers/rseqc:5.0.3--py39hf95cd2a_0' }" diff --git a/modules/nf-core/rseqc/tin/meta.yml b/modules/nf-core/rseqc/tin/meta.yml index 381edfde0..f760bb2f4 100644 --- a/modules/nf-core/rseqc/tin/meta.yml +++ b/modules/nf-core/rseqc/tin/meta.yml @@ -46,3 +46,5 @@ output: pattern: "versions.yml" authors: - "@drpatelh" +maintainers: + - "@drpatelh" diff --git a/modules/nf-core/rseqc/tin/tests/main.nf.test b/modules/nf-core/rseqc/tin/tests/main.nf.test new file mode 100644 index 000000000..c339d343a --- /dev/null +++ b/modules/nf-core/rseqc/tin/tests/main.nf.test @@ -0,0 +1,35 @@ +nextflow_process { + + name "Test Process RSEQC_TIN" + script "../main.nf" + process "RSEQC_TIN" + tag "modules" + tag "modules_nfcore" + tag "rseqc" + tag "rseqc/tin" + + test("sarscov2 paired-end [bam]") { + + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + file(params.test_data['sarscov2']['illumina']['test_paired_end_sorted_bam'], checkIfExists: true), + file(params.test_data['sarscov2']['illumina']['test_paired_end_sorted_bam_bai'], checkIfExists: true) + ] + input[1] = file(params.test_data['sarscov2']['genome']['test_bed'], checkIfExists: true) + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + +} diff --git a/modules/nf-core/rseqc/tin/tests/main.nf.test.snap b/modules/nf-core/rseqc/tin/tests/main.nf.test.snap new file mode 100644 index 000000000..7f0034ecd --- /dev/null +++ b/modules/nf-core/rseqc/tin/tests/main.nf.test.snap @@ -0,0 +1,47 @@ +{ + "sarscov2 paired-end [bam]": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.paired_end.sorted.summary.txt:md5,9d98447e178b89a89f6f5aba7a772fe6" + ] + ], + "1": [ + [ + { + "id": "test" + }, + "test.paired_end.sorted.tin.xls:md5,6b1b1b0dc1dc265342ba8c3f27fa60e6" + ] + ], + "2": [ + "versions.yml:md5,79670dedaa11a978951c16ead7f49c24" + ], + "txt": [ + [ + { + "id": "test" + }, + "test.paired_end.sorted.summary.txt:md5,9d98447e178b89a89f6f5aba7a772fe6" + ] + ], + "versions": [ + "versions.yml:md5,79670dedaa11a978951c16ead7f49c24" + ], + "xls": [ + [ + { + "id": "test" + }, + "test.paired_end.sorted.tin.xls:md5,6b1b1b0dc1dc265342ba8c3f27fa60e6" + ] + ] + } + ], + "timestamp": "2023-12-14T17:28:15.014993539" + } +} \ No newline at end of file diff --git a/modules/nf-core/rseqc/tin/tests/tags.yml b/modules/nf-core/rseqc/tin/tests/tags.yml new file mode 100644 index 000000000..741bbd0c0 --- /dev/null +++ b/modules/nf-core/rseqc/tin/tests/tags.yml @@ -0,0 +1,2 @@ +rseqc/tin: + - modules/nf-core/rseqc/tin/** diff --git a/modules/nf-core/salmon/index/environment.yml b/modules/nf-core/salmon/index/environment.yml new file mode 100644 index 000000000..a6607d964 --- /dev/null +++ b/modules/nf-core/salmon/index/environment.yml @@ -0,0 +1,7 @@ +name: salmon_index +channels: + - conda-forge + - bioconda + - defaults +dependencies: + - bioconda::salmon=1.10.1 diff --git a/modules/nf-core/salmon/index/main.nf b/modules/nf-core/salmon/index/main.nf index 118ee6704..88d9cf14a 100644 --- a/modules/nf-core/salmon/index/main.nf +++ b/modules/nf-core/salmon/index/main.nf @@ -2,7 +2,7 @@ process SALMON_INDEX { tag "$transcript_fasta" label "process_medium" - conda "bioconda::salmon=1.10.1" + conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/salmon:1.10.1--h7e5ed60_0' : 'biocontainers/salmon:1.10.1--h7e5ed60_0' }" diff --git a/modules/nf-core/salmon/index/meta.yml b/modules/nf-core/salmon/index/meta.yml index 53c64152f..fd94dd274 100644 --- a/modules/nf-core/salmon/index/meta.yml +++ b/modules/nf-core/salmon/index/meta.yml @@ -20,7 +20,6 @@ input: - transcriptome_fasta: type: file description: Fasta file of the reference transcriptome - output: - index: type: directory @@ -30,7 +29,9 @@ output: type: file description: File containing software versions pattern: "versions.yml" - authors: - "@kevinmenden" - "@drpatelh" +maintainers: + - "@kevinmenden" + - "@drpatelh" diff --git a/modules/nf-core/salmon/index/tests/main.nf.test b/modules/nf-core/salmon/index/tests/main.nf.test new file mode 100644 index 000000000..24f95c0ea --- /dev/null +++ b/modules/nf-core/salmon/index/tests/main.nf.test @@ -0,0 +1,35 @@ +nextflow_process { + + name "Test Process SALMON_INDEX" + script "../main.nf" + process "SALMON_INDEX" + tag "modules" + tag "modules_nfcore" + tag "salmon" + tag "salmon/index" + + test("sarscov2") { + + when { + params { + outdir = "$outputDir" + } + process { + """ + input[0] = Channel.of([file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true)]) + input[1] = Channel.of([file(params.test_data['sarscov2']['genome']['transcriptome_fasta'], checkIfExists: true)]) + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert path(process.out.index.get(0)).exists() }, + { assert snapshot(process.out.versions).match("versions") } + ) + } + + } + +} \ No newline at end of file diff --git a/modules/nf-core/salmon/index/tests/main.nf.test.snap b/modules/nf-core/salmon/index/tests/main.nf.test.snap new file mode 100644 index 000000000..1e3e6b673 --- /dev/null +++ b/modules/nf-core/salmon/index/tests/main.nf.test.snap @@ -0,0 +1,10 @@ +{ + "versions": { + "content": [ + [ + "versions.yml:md5,563eeafb4577be0b13801d7021c0bf42" + ] + ], + "timestamp": "2023-11-22T14:26:33.32036" + } +} \ No newline at end of file diff --git a/modules/nf-core/salmon/index/tests/tags.yml b/modules/nf-core/salmon/index/tests/tags.yml new file mode 100644 index 000000000..02997890f --- /dev/null +++ b/modules/nf-core/salmon/index/tests/tags.yml @@ -0,0 +1,2 @@ +salmon/index: + - modules/nf-core/salmon/index/** diff --git a/modules/nf-core/salmon/quant/environment.yml b/modules/nf-core/salmon/quant/environment.yml new file mode 100644 index 000000000..862667241 --- /dev/null +++ b/modules/nf-core/salmon/quant/environment.yml @@ -0,0 +1,7 @@ +name: salmon_quant +channels: + - conda-forge + - bioconda + - defaults +dependencies: + - bioconda::salmon=1.10.1 diff --git a/modules/nf-core/salmon/quant/main.nf b/modules/nf-core/salmon/quant/main.nf index f11b6c2e2..e115d39cf 100644 --- a/modules/nf-core/salmon/quant/main.nf +++ b/modules/nf-core/salmon/quant/main.nf @@ -2,7 +2,7 @@ process SALMON_QUANT { tag "$meta.id" label "process_medium" - conda "bioconda::salmon=1.10.1" + conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/salmon:1.10.1--h7e5ed60_0' : 'biocontainers/salmon:1.10.1--h7e5ed60_0' }" diff --git a/modules/nf-core/salmon/quant/meta.yml b/modules/nf-core/salmon/quant/meta.yml index e809ade2b..a2faf589a 100644 --- a/modules/nf-core/salmon/quant/meta.yml +++ b/modules/nf-core/salmon/quant/meta.yml @@ -31,7 +31,7 @@ input: - gtf: type: file description: GTF of the reference transcriptome - - transcriptome_fasta: + - transcript_fasta: type: file description: Fasta file of the reference transcriptome - alignment_mode: @@ -41,7 +41,6 @@ input: type: string description: | Override library type inferred based on strandedness defined in meta object - output: - results: type: directory @@ -55,7 +54,9 @@ output: type: file description: File containing software versions pattern: "versions.yml" - authors: - "@kevinmenden" - "@drpatelh" +maintainers: + - "@kevinmenden" + - "@drpatelh" diff --git a/modules/nf-core/salmon/quant/tests/main.nf.test b/modules/nf-core/salmon/quant/tests/main.nf.test new file mode 100644 index 000000000..c6d15cbf2 --- /dev/null +++ b/modules/nf-core/salmon/quant/tests/main.nf.test @@ -0,0 +1,193 @@ +nextflow_process { + + name "Test Process SALMON_QUANT" + script "../main.nf" + process "SALMON_QUANT" + config "./nextflow.config" + tag "modules" + tag "modules_nfcore" + tag "salmon" + tag "salmon/quant" + tag "salmon/index" + + test("sarscov2 - single_end") { + + setup { + run("SALMON_INDEX") { + script "../../../salmon/index/main.nf" + process { + """ + input[0] = Channel.of([file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true)]) + input[1] = Channel.of([file(params.test_data['sarscov2']['genome']['transcriptome_fasta'], checkIfExists: true)]) + """ + } + } + } + + when { + params { + outdir = "$outputDir" + } + process { + """ + input[0] = Channel.of([ + [ id:'test', single_end:true ], // meta map + [ file(params.test_data['sarscov2']['illumina']['test_1_fastq_gz'], checkIfExists: true) ] + ]) + input[1] = SALMON_INDEX.out.index + input[2] = Channel.of([file(params.test_data['sarscov2']['genome']['genome_gtf'], checkIfExists: true)]) + input[3] = Channel.of([file(params.test_data['sarscov2']['genome']['transcriptome_fasta'], checkIfExists: true)]) + input[4] = false + input[5] = '' + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert path(process.out.json_info.get(0).get(1)).exists() }, + { assert path(process.out.results.get(0).get(1)).exists() }, + { assert snapshot(process.out.versions).match("versions_single_end") } + ) + } + + } + + test("sarscov2 - single_end lib type A") { + + setup { + run("SALMON_INDEX") { + script "../../../salmon/index/main.nf" + process { + """ + input[0] = Channel.of([file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true)]) + input[1] = Channel.of([file(params.test_data['sarscov2']['genome']['transcriptome_fasta'], checkIfExists: true)]) + """ + } + } + } + + when { + params { + outdir = "$outputDir" + } + process { + """ + input[0] = Channel.of([ + [ id:'test', single_end:true ], // meta map + [ file(params.test_data['sarscov2']['illumina']['test_1_fastq_gz'], checkIfExists: true) ] + ]) + input[1] = SALMON_INDEX.out.index + input[2] = Channel.of([file(params.test_data['sarscov2']['genome']['genome_gtf'], checkIfExists: true)]) + input[3] = Channel.of([file(params.test_data['sarscov2']['genome']['transcriptome_fasta'], checkIfExists: true)]) + input[4] = false + input[5] = 'A' + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert path(process.out.json_info.get(0).get(1)).exists() }, + { assert path(process.out.results.get(0).get(1)).exists() }, + { assert snapshot(process.out.versions).match("versions_single_end_lib_type_a") } + ) + } + + } + + test("sarscov2 - pair_end") { + + setup { + run("SALMON_INDEX") { + script "../../../salmon/index/main.nf" + process { + """ + input[0] = Channel.of([file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true)]) + input[1] = Channel.of([file(params.test_data['sarscov2']['genome']['transcriptome_fasta'], checkIfExists: true)]) + """ + } + } + } + + when { + params { + outdir = "$outputDir" + } + process { + """ + input[0] = Channel.of([ + [ id:'test', single_end:false ], // meta map + [ file(params.test_data['sarscov2']['illumina']['test_1_fastq_gz'], checkIfExists: true), + file(params.test_data['sarscov2']['illumina']['test_2_fastq_gz'], checkIfExists: true) ] + ]) + input[1] = SALMON_INDEX.out.index + input[2] = Channel.of([file(params.test_data['sarscov2']['genome']['genome_gtf'], checkIfExists: true)]) + input[3] = Channel.of([file(params.test_data['sarscov2']['genome']['transcriptome_fasta'], checkIfExists: true)]) + input[4] = false + input[5] = '' + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert path(process.out.json_info.get(0).get(1)).exists() }, + { assert path(process.out.results.get(0).get(1)).exists() }, + { assert snapshot(process.out.versions).match("versions_pair_end") } + ) + } + + } + test("sarscov2 - pair_end multiple") { + + setup { + run("SALMON_INDEX") { + script "../../../salmon/index/main.nf" + process { + """ + input[0] = Channel.of([file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true)]) + input[1] = Channel.of([file(params.test_data['sarscov2']['genome']['transcriptome_fasta'], checkIfExists: true)]) + """ + } + } + } + + when { + params { + outdir = "$outputDir" + } + process { + """ + input[0] = Channel.of([ + [ id:'test', single_end:false ], // meta map + [ + file(params.test_data['sarscov2']['illumina']['test_1_fastq_gz'], checkIfExists: true), + file(params.test_data['sarscov2']['illumina']['test_2_fastq_gz'], checkIfExists: true), + file(params.test_data['sarscov2']['illumina']['test2_1_fastq_gz'], checkIfExists: true), + file(params.test_data['sarscov2']['illumina']['test2_2_fastq_gz'], checkIfExists: true) + ] + ]) + input[1] = SALMON_INDEX.out.index + input[2] = Channel.of([file(params.test_data['sarscov2']['genome']['genome_gtf'], checkIfExists: true)]) + input[3] = Channel.of([file(params.test_data['sarscov2']['genome']['transcriptome_fasta'], checkIfExists: true)]) + input[4] = false + input[5] = '' + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert path(process.out.json_info.get(0).get(1)).exists() }, + { assert path(process.out.results.get(0).get(1)).exists() }, + { assert snapshot(process.out.versions).match("versions_pair_end_multiple") } + ) + } + + } +} diff --git a/modules/nf-core/salmon/quant/tests/main.nf.test.snap b/modules/nf-core/salmon/quant/tests/main.nf.test.snap new file mode 100644 index 000000000..af41c4bae --- /dev/null +++ b/modules/nf-core/salmon/quant/tests/main.nf.test.snap @@ -0,0 +1,50 @@ +{ + "versions_single_end": { + "content": [ + [ + "versions.yml:md5,80eb3d2ad36960c7e9263f81ede9d263" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-01T11:51:01.865730832" + }, + "versions_pair_end": { + "content": [ + [ + "versions.yml:md5,80eb3d2ad36960c7e9263f81ede9d263" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-01T11:51:29.732630876" + }, + "versions_single_end_lib_type_a": { + "content": [ + [ + "versions.yml:md5,80eb3d2ad36960c7e9263f81ede9d263" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-01T11:51:14.775006706" + }, + "versions_pair_end_multiple": { + "content": [ + [ + "versions.yml:md5,80eb3d2ad36960c7e9263f81ede9d263" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-01T11:51:43.383196527" + } +} \ No newline at end of file diff --git a/modules/nf-core/salmon/quant/tests/nextflow.config b/modules/nf-core/salmon/quant/tests/nextflow.config new file mode 100644 index 000000000..37c082129 --- /dev/null +++ b/modules/nf-core/salmon/quant/tests/nextflow.config @@ -0,0 +1,7 @@ +process { + + withName: SALMON_QUANT { + ext.args = '--minAssignedFrags 1' + } + +} diff --git a/modules/nf-core/salmon/quant/tests/tags.yml b/modules/nf-core/salmon/quant/tests/tags.yml new file mode 100644 index 000000000..048d81642 --- /dev/null +++ b/modules/nf-core/salmon/quant/tests/tags.yml @@ -0,0 +1,2 @@ +salmon/quant: + - modules/nf-core/salmon/quant/** diff --git a/modules/nf-core/samtools/flagstat/environment.yml b/modules/nf-core/samtools/flagstat/environment.yml new file mode 100644 index 000000000..dd0b5c196 --- /dev/null +++ b/modules/nf-core/samtools/flagstat/environment.yml @@ -0,0 +1,8 @@ +name: samtools_flagstat +channels: + - conda-forge + - bioconda + - defaults +dependencies: + - bioconda::samtools=1.18 + - bioconda::htslib=1.18 diff --git a/modules/nf-core/samtools/flagstat/main.nf b/modules/nf-core/samtools/flagstat/main.nf index b75707eca..f1893d7cc 100644 --- a/modules/nf-core/samtools/flagstat/main.nf +++ b/modules/nf-core/samtools/flagstat/main.nf @@ -2,10 +2,10 @@ process SAMTOOLS_FLAGSTAT { tag "$meta.id" label 'process_single' - conda "bioconda::samtools=1.17" + conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/samtools:1.17--h00cdaf9_0' : - 'biocontainers/samtools:1.17--h00cdaf9_0' }" + 'https://depot.galaxyproject.org/singularity/samtools:1.18--h50ea8bc_1' : + 'biocontainers/samtools:1.18--h50ea8bc_1' }" input: tuple val(meta), path(bam), path(bai) diff --git a/modules/nf-core/samtools/flagstat/meta.yml b/modules/nf-core/samtools/flagstat/meta.yml index 954225dfc..97991358e 100644 --- a/modules/nf-core/samtools/flagstat/meta.yml +++ b/modules/nf-core/samtools/flagstat/meta.yml @@ -47,3 +47,5 @@ output: pattern: "versions.yml" authors: - "@drpatelh" +maintainers: + - "@drpatelh" diff --git a/modules/nf-core/samtools/flagstat/tests/main.nf.test b/modules/nf-core/samtools/flagstat/tests/main.nf.test new file mode 100644 index 000000000..c8dd8dc9f --- /dev/null +++ b/modules/nf-core/samtools/flagstat/tests/main.nf.test @@ -0,0 +1,36 @@ +nextflow_process { + + name "Test Process SAMTOOLS_FLAGSTAT" + script "../main.nf" + process "SAMTOOLS_FLAGSTAT" + tag "modules" + tag "modules_nfcore" + tag "samtools" + tag "samtools/flagstat" + + test("BAM") { + + when { + params { + outdir = "$outputDir" + } + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.test_data['sarscov2']['illumina']['test_paired_end_sorted_bam'], checkIfExists: true), + file(params.test_data['sarscov2']['illumina']['test_paired_end_sorted_bam_bai'], checkIfExists: true) + ] + """ + } + } + + then { + assertAll ( + { assert process.success }, + { assert snapshot(process.out.flagstat).match() }, + { assert path(process.out.versions.get(0)).getText().contains("samtools") } + ) + } + } +} diff --git a/modules/nf-core/samtools/flagstat/tests/main.nf.test.snap b/modules/nf-core/samtools/flagstat/tests/main.nf.test.snap new file mode 100644 index 000000000..880019f2f --- /dev/null +++ b/modules/nf-core/samtools/flagstat/tests/main.nf.test.snap @@ -0,0 +1,16 @@ +{ + "BAM": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test.flagstat:md5,4f7ffd1e6a5e85524d443209ac97d783" + ] + ] + ], + "timestamp": "2023-11-14T15:49:22.577133" + } +} \ No newline at end of file diff --git a/modules/nf-core/samtools/flagstat/tests/tags.yml b/modules/nf-core/samtools/flagstat/tests/tags.yml new file mode 100644 index 000000000..2d2b7255e --- /dev/null +++ b/modules/nf-core/samtools/flagstat/tests/tags.yml @@ -0,0 +1,2 @@ +samtools/flagstat: + - modules/nf-core/samtools/flagstat/** diff --git a/modules/nf-core/samtools/idxstats/environment.yml b/modules/nf-core/samtools/idxstats/environment.yml new file mode 100644 index 000000000..de3ed47e8 --- /dev/null +++ b/modules/nf-core/samtools/idxstats/environment.yml @@ -0,0 +1,8 @@ +name: samtools_idxstats +channels: + - conda-forge + - bioconda + - defaults +dependencies: + - bioconda::samtools=1.18 + - bioconda::htslib=1.18 diff --git a/modules/nf-core/samtools/idxstats/main.nf b/modules/nf-core/samtools/idxstats/main.nf index 83c7c34b9..00d916bbf 100644 --- a/modules/nf-core/samtools/idxstats/main.nf +++ b/modules/nf-core/samtools/idxstats/main.nf @@ -2,10 +2,10 @@ process SAMTOOLS_IDXSTATS { tag "$meta.id" label 'process_single' - conda "bioconda::samtools=1.17" + conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/samtools:1.17--h00cdaf9_0' : - 'biocontainers/samtools:1.17--h00cdaf9_0' }" + 'https://depot.galaxyproject.org/singularity/samtools:1.18--h50ea8bc_1' : + 'biocontainers/samtools:1.18--h50ea8bc_1' }" input: tuple val(meta), path(bam), path(bai) diff --git a/modules/nf-core/samtools/idxstats/meta.yml b/modules/nf-core/samtools/idxstats/meta.yml index dda87e1ee..344e92a3f 100644 --- a/modules/nf-core/samtools/idxstats/meta.yml +++ b/modules/nf-core/samtools/idxstats/meta.yml @@ -48,3 +48,5 @@ output: pattern: "versions.yml" authors: - "@drpatelh" +maintainers: + - "@drpatelh" diff --git a/modules/nf-core/samtools/idxstats/tests/main.nf.test b/modules/nf-core/samtools/idxstats/tests/main.nf.test new file mode 100644 index 000000000..f6c92150c --- /dev/null +++ b/modules/nf-core/samtools/idxstats/tests/main.nf.test @@ -0,0 +1,36 @@ +nextflow_process { + + name "Test Process SAMTOOLS_IDXSTATS" + script "../main.nf" + process "SAMTOOLS_IDXSTATS" + tag "modules" + tag "modules_nfcore" + tag "samtools" + tag "samtools/idxstats" + + test("BAM") { + + when { + params { + outdir = "$outputDir" + } + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.test_data['sarscov2']['illumina']['test_paired_end_sorted_bam'], checkIfExists: true), + file(params.test_data['sarscov2']['illumina']['test_paired_end_sorted_bam_bai'], checkIfExists: true) + ] + """ + } + } + + then { + assertAll ( + { assert process.success }, + { assert snapshot(process.out.idxstats).match() }, + { assert path(process.out.versions.get(0)).getText().contains("samtools") } + ) + } + } +} diff --git a/modules/nf-core/samtools/idxstats/tests/main.nf.test.snap b/modules/nf-core/samtools/idxstats/tests/main.nf.test.snap new file mode 100644 index 000000000..4c6c12bd5 --- /dev/null +++ b/modules/nf-core/samtools/idxstats/tests/main.nf.test.snap @@ -0,0 +1,16 @@ +{ + "BAM": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test.idxstats:md5,df60a8c8d6621100d05178c93fb053a2" + ] + ] + ], + "timestamp": "2023-11-14T15:52:19.875194" + } +} \ No newline at end of file diff --git a/modules/nf-core/samtools/idxstats/tests/tags.yml b/modules/nf-core/samtools/idxstats/tests/tags.yml new file mode 100644 index 000000000..d3057c61f --- /dev/null +++ b/modules/nf-core/samtools/idxstats/tests/tags.yml @@ -0,0 +1,2 @@ +samtools/idxstats: + - modules/nf-core/samtools/idxstats/** diff --git a/modules/nf-core/samtools/index/environment.yml b/modules/nf-core/samtools/index/environment.yml new file mode 100644 index 000000000..81f093915 --- /dev/null +++ b/modules/nf-core/samtools/index/environment.yml @@ -0,0 +1,8 @@ +name: samtools_index +channels: + - conda-forge + - bioconda + - defaults +dependencies: + - bioconda::samtools=1.18 + - bioconda::htslib=1.18 diff --git a/modules/nf-core/samtools/index/main.nf b/modules/nf-core/samtools/index/main.nf index 0b20aa4bb..8ad18fdc2 100644 --- a/modules/nf-core/samtools/index/main.nf +++ b/modules/nf-core/samtools/index/main.nf @@ -2,10 +2,10 @@ process SAMTOOLS_INDEX { tag "$meta.id" label 'process_low' - conda "bioconda::samtools=1.17" + conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/samtools:1.17--h00cdaf9_0' : - 'biocontainers/samtools:1.17--h00cdaf9_0' }" + 'https://depot.galaxyproject.org/singularity/samtools:1.18--h50ea8bc_1' : + 'biocontainers/samtools:1.18--h50ea8bc_1' }" 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 8bd2fa6fb..01a4ee03e 100644 --- a/modules/nf-core/samtools/index/meta.yml +++ b/modules/nf-core/samtools/index/meta.yml @@ -51,3 +51,7 @@ authors: - "@drpatelh" - "@ewels" - "@maxulysse" +maintainers: + - "@drpatelh" + - "@ewels" + - "@maxulysse" diff --git a/modules/nf-core/samtools/index/tests/csi.nextflow.config b/modules/nf-core/samtools/index/tests/csi.nextflow.config new file mode 100644 index 000000000..0ed260efa --- /dev/null +++ b/modules/nf-core/samtools/index/tests/csi.nextflow.config @@ -0,0 +1,7 @@ +process { + + withName: SAMTOOLS_INDEX { + ext.args = '-c' + } + +} diff --git a/modules/nf-core/samtools/index/tests/main.nf.test b/modules/nf-core/samtools/index/tests/main.nf.test new file mode 100644 index 000000000..c76a9169f --- /dev/null +++ b/modules/nf-core/samtools/index/tests/main.nf.test @@ -0,0 +1,87 @@ +nextflow_process { + + name "Test Process SAMTOOLS_INDEX" + script "../main.nf" + process "SAMTOOLS_INDEX" + tag "modules" + tag "modules_nfcore" + tag "samtools" + tag "samtools/index" + + test("sarscov2 [BAI]") { + + when { + params { + outdir = "$outputDir" + } + process { + """ + input[0] = [ + [ id:'test' ], // meta map + file(params.test_data['sarscov2']['illumina']['test_paired_end_sorted_bam'], checkIfExists: true) + ] + """ + } + } + + then { + assertAll ( + { assert process.success }, + { assert snapshot(process.out.bai).match("bai") }, + { assert path(process.out.versions.get(0)).getText().contains("samtools") } + ) + } + } + + test("homo_sapiens [CRAI]") { + + when { + params { + outdir = "$outputDir" + } + process { + """ + input[0] = [ + [ id:'test' ], // meta map + file(params.test_data['homo_sapiens']['illumina']['test_paired_end_recalibrated_sorted_cram'], checkIfExists: true) + ] + """ + } + } + + then { + assertAll ( + { assert process.success }, + { assert snapshot(process.out.crai).match("crai") }, + { assert path(process.out.versions.get(0)).getText().contains("samtools") } + ) + } + } + + test("homo_sapiens [CSI]") { + + config "./csi.nextflow.config" + + when { + params { + outdir = "$outputDir" + } + process { + """ + input[0] = [ + [ id:'test' ], // meta map + file(params.test_data['sarscov2']['illumina']['test_paired_end_sorted_bam'], checkIfExists: true) + ] + """ + } + } + + then { + assertAll ( + { assert process.success }, + { assert path(process.out.csi.get(0).get(1)).exists() }, + { assert path(process.out.versions.get(0)).getText().contains("samtools") } + ) + } + } +} diff --git a/modules/nf-core/samtools/index/tests/main.nf.test.snap b/modules/nf-core/samtools/index/tests/main.nf.test.snap new file mode 100644 index 000000000..b3baee7fb --- /dev/null +++ b/modules/nf-core/samtools/index/tests/main.nf.test.snap @@ -0,0 +1,28 @@ +{ + "crai": { + "content": [ + [ + [ + { + "id": "test" + }, + "test.paired_end.recalibrated.sorted.cram.crai:md5,14bc3bd5c89cacc8f4541f9062429029" + ] + ] + ], + "timestamp": "2023-11-15T15:17:37.30801" + }, + "bai": { + "content": [ + [ + [ + { + "id": "test" + }, + "test.paired_end.sorted.bam.bai:md5,704c10dd1326482448ca3073fdebc2f4" + ] + ] + ], + "timestamp": "2023-11-15T15:17:30.869234" + } +} \ No newline at end of file diff --git a/modules/nf-core/samtools/index/tests/tags.yml b/modules/nf-core/samtools/index/tests/tags.yml new file mode 100644 index 000000000..e0f58a7a3 --- /dev/null +++ b/modules/nf-core/samtools/index/tests/tags.yml @@ -0,0 +1,2 @@ +samtools/index: + - modules/nf-core/samtools/index/** diff --git a/modules/nf-core/samtools/sort/environment.yml b/modules/nf-core/samtools/sort/environment.yml new file mode 100644 index 000000000..f4064b720 --- /dev/null +++ b/modules/nf-core/samtools/sort/environment.yml @@ -0,0 +1,8 @@ +name: samtools_sort +channels: + - conda-forge + - bioconda + - defaults +dependencies: + - bioconda::samtools=1.18 + - bioconda::htslib=1.18 diff --git a/modules/nf-core/samtools/sort/main.nf b/modules/nf-core/samtools/sort/main.nf index 2b7753fd8..4a666d42e 100644 --- a/modules/nf-core/samtools/sort/main.nf +++ b/modules/nf-core/samtools/sort/main.nf @@ -2,10 +2,10 @@ process SAMTOOLS_SORT { tag "$meta.id" label 'process_medium' - conda "bioconda::samtools=1.17" + conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/samtools:1.17--h00cdaf9_0' : - 'biocontainers/samtools:1.17--h00cdaf9_0' }" + 'https://depot.galaxyproject.org/singularity/samtools:1.18--h50ea8bc_1' : + 'biocontainers/samtools:1.18--h50ea8bc_1' }" input: tuple val(meta), path(bam) diff --git a/modules/nf-core/samtools/sort/meta.yml b/modules/nf-core/samtools/sort/meta.yml index 073284316..2200de72f 100644 --- a/modules/nf-core/samtools/sort/meta.yml +++ b/modules/nf-core/samtools/sort/meta.yml @@ -46,3 +46,6 @@ output: authors: - "@drpatelh" - "@ewels" +maintainers: + - "@drpatelh" + - "@ewels" diff --git a/modules/nf-core/samtools/sort/tests/main.nf.test b/modules/nf-core/samtools/sort/tests/main.nf.test new file mode 100644 index 000000000..abb80978e --- /dev/null +++ b/modules/nf-core/samtools/sort/tests/main.nf.test @@ -0,0 +1,73 @@ +nextflow_process { + + name "Test Process SAMTOOLS_SORT" + script "../main.nf" + process "SAMTOOLS_SORT" + tag "modules" + tag "modules_nfcore" + tag "samtools" + tag "samtools/sort" + + test("test_samtools_sort") { + + config "./nextflow.config" + + when { + params { + outdir = "$outputDir" + } + process { + """ + input[0] = [ + [ id:'test', single_end:false ], + [ + file(params.test_data['sarscov2']['illumina']['test_paired_end_bam'], checkIfExists: true) + ] + ] + """ + } + } + + then { + assertAll ( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + + test("test_samtools_sort_stub") { + + config "./nextflow.config" + options "-stub-run" + + when { + params { + outdir = "$outputDir" + } + process { + """ + input[0] = [ + [ id:'test', single_end:false ], + [ + file(params.test_data['sarscov2']['illumina']['test_paired_end_bam'], checkIfExists: true) + ] + ] + """ + } + } + + then { + assertAll ( + { assert process.success }, + { assert snapshot( + file(process.out.bam[0][1]).name, + process.out.versions + ).match() } + ) + } + + } + +} diff --git a/modules/nf-core/samtools/sort/tests/main.nf.test.snap b/modules/nf-core/samtools/sort/tests/main.nf.test.snap new file mode 100644 index 000000000..ff7222597 --- /dev/null +++ b/modules/nf-core/samtools/sort/tests/main.nf.test.snap @@ -0,0 +1,48 @@ +{ + "test_samtools_sort": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.sorted.bam:md5,ea6a0fef94eb534e901f107a05a33a06" + ] + ], + "1": [ + + ], + "2": [ + "versions.yml:md5,33b6a403dc19a0d28e4219ccab0a1d80" + ], + "bam": [ + [ + { + "id": "test", + "single_end": false + }, + "test.sorted.bam:md5,ea6a0fef94eb534e901f107a05a33a06" + ] + ], + "csi": [ + + ], + "versions": [ + "versions.yml:md5,33b6a403dc19a0d28e4219ccab0a1d80" + ] + } + ], + "timestamp": "2023-12-04T11:11:22.005628301" + }, + "test_samtools_sort_stub": { + "content": [ + "test.sorted.bam", + [ + "versions.yml:md5,33b6a403dc19a0d28e4219ccab0a1d80" + ] + ], + "timestamp": "2023-12-04T17:47:22.314445935" + } +} \ No newline at end of file diff --git a/modules/nf-core/samtools/sort/tests/nextflow.config b/modules/nf-core/samtools/sort/tests/nextflow.config new file mode 100644 index 000000000..d0f350868 --- /dev/null +++ b/modules/nf-core/samtools/sort/tests/nextflow.config @@ -0,0 +1,7 @@ +process { + + withName: SAMTOOLS_SORT { + ext.prefix = { "${meta.id}.sorted" } + } + +} diff --git a/modules/nf-core/samtools/sort/tests/tags.yml b/modules/nf-core/samtools/sort/tests/tags.yml new file mode 100644 index 000000000..cd63ea208 --- /dev/null +++ b/modules/nf-core/samtools/sort/tests/tags.yml @@ -0,0 +1,3 @@ +samtools/sort: + - modules/nf-core/samtools/sort/** + - tests/modules/nf-core/samtools/sort/** diff --git a/modules/nf-core/samtools/stats/environment.yml b/modules/nf-core/samtools/stats/environment.yml new file mode 100644 index 000000000..b45ba90c7 --- /dev/null +++ b/modules/nf-core/samtools/stats/environment.yml @@ -0,0 +1,8 @@ +name: samtools_stats +channels: + - conda-forge + - bioconda + - defaults +dependencies: + - bioconda::samtools=1.18 + - bioconda::htslib=1.18 diff --git a/modules/nf-core/samtools/stats/main.nf b/modules/nf-core/samtools/stats/main.nf index 4a2607ded..7539140ab 100644 --- a/modules/nf-core/samtools/stats/main.nf +++ b/modules/nf-core/samtools/stats/main.nf @@ -2,10 +2,10 @@ process SAMTOOLS_STATS { tag "$meta.id" label 'process_single' - conda "bioconda::samtools=1.17" + conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/samtools:1.17--h00cdaf9_0' : - 'biocontainers/samtools:1.17--h00cdaf9_0' }" + 'https://depot.galaxyproject.org/singularity/samtools:1.18--h50ea8bc_1' : + 'biocontainers/samtools:1.18--h50ea8bc_1' }" input: tuple val(meta), path(input), path(input_index) diff --git a/modules/nf-core/samtools/stats/meta.yml b/modules/nf-core/samtools/stats/meta.yml index 90e6345f5..735ff8122 100644 --- a/modules/nf-core/samtools/stats/meta.yml +++ b/modules/nf-core/samtools/stats/meta.yml @@ -57,3 +57,7 @@ authors: - "@drpatelh" - "@FriederikeHanssen" - "@ramprasadn" +maintainers: + - "@drpatelh" + - "@FriederikeHanssen" + - "@ramprasadn" diff --git a/modules/nf-core/samtools/stats/tests/main.nf.test b/modules/nf-core/samtools/stats/tests/main.nf.test new file mode 100644 index 000000000..20c3efe12 --- /dev/null +++ b/modules/nf-core/samtools/stats/tests/main.nf.test @@ -0,0 +1,78 @@ +nextflow_process { + + name "Test Process SAMTOOLS_STATS" + script "../main.nf" + process "SAMTOOLS_STATS" + tag "modules" + tag "modules_nfcore" + tag "samtools" + tag "samtools/stats" + + test("SAMTOOLS STATS Should run without failures") { + + when { + params { + + outdir = "$outputDir" + } + process { + """ + // define inputs of the process here. + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.test_data['sarscov2']['illumina']['test_paired_end_sorted_bam'], checkIfExists: true), + file(params.test_data['sarscov2']['illumina']['test_paired_end_sorted_bam_bai'], checkIfExists: true) + + ] + input[1] = [[],[]] + """ + + } + } + + then { + assertAll( + {assert process.success}, + {assert snapshot(process.out).match()} + ) + } + + } + + test("SAMTOOLS CRAM Should run without failures") { + + when { + params { + + outdir = "$outputDir" + } + process { + """ + // define inputs of the process here + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.test_data['homo_sapiens']['illumina']['test_paired_end_recalibrated_sorted_cram'], checkIfExists: true), + file(params.test_data['homo_sapiens']['illumina']['test_paired_end_recalibrated_sorted_cram_crai'], checkIfExists: true) + + ] + input[1] = [ + [ id:'genome' ], + file(params.test_data['homo_sapiens']['genome']['genome_fasta'], checkIfExists: true) + ] + """ + } + + + } + + then { + assertAll( + {assert process.success}, + {assert snapshot(process.out).match()} + ) + } + + } + + +} diff --git a/modules/nf-core/samtools/stats/tests/main.nf.test.snap b/modules/nf-core/samtools/stats/tests/main.nf.test.snap new file mode 100644 index 000000000..025c83a55 --- /dev/null +++ b/modules/nf-core/samtools/stats/tests/main.nf.test.snap @@ -0,0 +1,64 @@ +{ + "SAMTOOLS STATS Should run without failures": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.stats:md5,045a48208b1c6f5b8af4347fe31f4def" + ] + ], + "1": [ + "versions.yml:md5,650a365c6635001436008350ae83337c" + ], + "stats": [ + [ + { + "id": "test", + "single_end": false + }, + "test.stats:md5,045a48208b1c6f5b8af4347fe31f4def" + ] + ], + "versions": [ + "versions.yml:md5,650a365c6635001436008350ae83337c" + ] + } + ], + "timestamp": "2023-12-04T11:07:28.26821485" + }, + "SAMTOOLS CRAM Should run without failures": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.stats:md5,dfbfa130d4a6925ddd1931dcd8354a43" + ] + ], + "1": [ + "versions.yml:md5,650a365c6635001436008350ae83337c" + ], + "stats": [ + [ + { + "id": "test", + "single_end": false + }, + "test.stats:md5,dfbfa130d4a6925ddd1931dcd8354a43" + ] + ], + "versions": [ + "versions.yml:md5,650a365c6635001436008350ae83337c" + ] + } + ], + "timestamp": "2023-12-04T11:07:50.356233402" + } +} \ No newline at end of file diff --git a/modules/nf-core/samtools/stats/tests/tags.yml b/modules/nf-core/samtools/stats/tests/tags.yml new file mode 100644 index 000000000..7c28e30f3 --- /dev/null +++ b/modules/nf-core/samtools/stats/tests/tags.yml @@ -0,0 +1,2 @@ +samtools/stats: + - modules/nf-core/samtools/stats/** diff --git a/modules/nf-core/sortmerna/environment.yml b/modules/nf-core/sortmerna/environment.yml new file mode 100644 index 000000000..f40f9958d --- /dev/null +++ b/modules/nf-core/sortmerna/environment.yml @@ -0,0 +1,7 @@ +name: sortmerna +channels: + - conda-forge + - bioconda + - defaults +dependencies: + - bioconda::sortmerna=4.3.6 diff --git a/modules/nf-core/sortmerna/main.nf b/modules/nf-core/sortmerna/main.nf index 7afae5a68..29c640c64 100644 --- a/modules/nf-core/sortmerna/main.nf +++ b/modules/nf-core/sortmerna/main.nf @@ -1,11 +1,11 @@ process SORTMERNA { tag "$meta.id" - label "process_high" + label 'process_high' - conda "bioconda::sortmerna=4.3.4" + conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/sortmerna:4.3.4--h9ee0642_0' : - 'biocontainers/sortmerna:4.3.4--h9ee0642_0' }" + 'https://depot.galaxyproject.org/singularity/sortmerna:4.3.6--h9ee0642_0' : + 'biocontainers/sortmerna:4.3.6--h9ee0642_0' }" input: tuple val(meta), path(reads) @@ -67,4 +67,30 @@ process SORTMERNA { END_VERSIONS """ } + + stub: + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + if (meta.single_end) { + """ + touch ${prefix}.non_rRNA.fastq.gz + touch ${prefix}.sortmerna.log + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + sortmerna: \$(echo \$(sortmerna --version 2>&1) | sed 's/^.*SortMeRNA version //; s/ Build Date.*\$//') + END_VERSIONS + """ + } else { + """ + touch ${prefix}_1.non_rRNA.fastq.gz + touch ${prefix}_2.non_rRNA.fastq.gz + touch ${prefix}.sortmerna.log + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + sortmerna: \$(echo \$(sortmerna --version 2>&1) | sed 's/^.*SortMeRNA version //; s/ Build Date.*\$//') + END_VERSIONS + """ + } } diff --git a/modules/nf-core/sortmerna/meta.yml b/modules/nf-core/sortmerna/meta.yml index 516d11606..de0b18e57 100644 --- a/modules/nf-core/sortmerna/meta.yml +++ b/modules/nf-core/sortmerna/meta.yml @@ -48,3 +48,6 @@ output: authors: - "@drpatelh" - "@mashehu" +maintainers: + - "@drpatelh" + - "@mashehu" diff --git a/modules/nf-core/sortmerna/tests/main.nf.test b/modules/nf-core/sortmerna/tests/main.nf.test new file mode 100644 index 000000000..c7ae014bc --- /dev/null +++ b/modules/nf-core/sortmerna/tests/main.nf.test @@ -0,0 +1,144 @@ +nextflow_process { + + name "Test Process SORTMERNA" + script "../main.nf" + process "SORTMERNA" + tag "modules" + tag "modules_nfcore" + tag "sortmerna" + + test("sarscov2 single_end") { + + when { + process { + """ + input[0] = [ [ id:'test', single_end:true ], // meta map + [ file(params.test_data['sarscov2']['illumina']['test_1_fastq_gz'], checkIfExists: true) ] + ] + input[1] = [ file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true) ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert process.out.reads }, + { assert file(process.out.log[0][1]).text.contains("Total reads passing E-value threshold = 100 (100.00)") }, + { + assert snapshot( + ( + [process.out.reads[0][0].toString()] + // meta + process.out.reads.collect { file(it[1]).getName() } + + process.out.log.collect { file(it[1]).getName() } + ).sort() + ).match("sarscov2 single_end_match") + }, + { assert snapshot(process.out.versions).match("versions_single_end") } + ) + } + + } + + test("sarscov2 single_end stub") { + + options '-stub' + + when { + process { + """ + input[0] = [ [ id:'test', single_end:true ], // meta map + [ file(params.test_data['sarscov2']['illumina']['test_1_fastq_gz'], checkIfExists: true) ] + ] + input[1] = [ file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true) ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { + assert snapshot( + ( + [process.out.reads[0][0].toString()] + // meta + process.out.reads.collect { file(it[1]).getName() } + + process.out.log.collect { file(it[1]).getName() } + ).sort() + ).match("sarscov2 single_end-for_stub_match") + }, + { assert snapshot(process.out.versions).match("versions_single_end_stub") } + ) + } + + } + + test("sarscov2 paired_end") { + + when { + process { + """ + input[0] = [ [ id:'test', single_end:false ], // meta map + [ file(params.test_data['sarscov2']['illumina']['test_1_fastq_gz'], checkIfExists: true), + file(params.test_data['sarscov2']['illumina']['test_2_fastq_gz'], checkIfExists: true) ] + ] + input[1] = [ file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true) ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert process.out.reads }, + { assert file(process.out.log[0][1]).text.contains("Total reads passing E-value threshold = 200 (100.00)") }, + { + assert snapshot( + ( + [process.out.reads[0][0].toString()] + // meta + process.out.reads.collect { it[1].collect { item -> file(item).getName() } } + + process.out.log.collect { file(it[1]).getName() } + ).sort() + ).match("sarscov2 paired_end_match") + }, + { assert snapshot(process.out.versions).match("versions_paired_end") } + ) + } + + } + + test("sarscov2 paired_end stub") { + + options '-stub' + + when { + process { + """ + input[0] = [ [ id:'test', single_end:false ], // meta map + [ file(params.test_data['sarscov2']['illumina']['test_1_fastq_gz'], checkIfExists: true), + file(params.test_data['sarscov2']['illumina']['test_2_fastq_gz'], checkIfExists: true) ] + ] + input[1] = [ file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true) ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { + assert snapshot( + ( + [process.out.reads[0][0].toString()] + // meta + process.out.reads.collect { it[1].collect { item -> file(item).getName() } } + + process.out.log.collect { file(it[1]).getName() } + ).sort() + ).match("sarscov2 paired_end-for_stub_match") + }, + { assert snapshot(process.out.versions).match("versions_paired_end_stub") } + ) + } + + } + +} diff --git a/modules/nf-core/sortmerna/tests/main.nf.test.snap b/modules/nf-core/sortmerna/tests/main.nf.test.snap new file mode 100644 index 000000000..e5eaa06fb --- /dev/null +++ b/modules/nf-core/sortmerna/tests/main.nf.test.snap @@ -0,0 +1,112 @@ +{ + "sarscov2 single_end-for_stub_match": { + "content": [ + [ + "test.non_rRNA.fastq.gz", + "test.sortmerna.log", + "{id=test, single_end=true}" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2023-12-21T11:56:00.15356" + }, + "sarscov2 paired_end_match": { + "content": [ + [ + [ + "test_1.non_rRNA.fastq.gz", + "test_2.non_rRNA.fastq.gz" + ], + "test.sortmerna.log", + "{id=test, single_end=false}" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-01T12:16:08.266820184" + }, + "versions_paired_end_stub": { + "content": [ + [ + "versions.yml:md5,7df9d50209f351e1f75e05a1fad6ba4b" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-01T12:10:57.850054063" + }, + "versions_paired_end": { + "content": [ + [ + "versions.yml:md5,7df9d50209f351e1f75e05a1fad6ba4b" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-01T12:10:47.066657228" + }, + "versions_single_end": { + "content": [ + [ + "versions.yml:md5,7df9d50209f351e1f75e05a1fad6ba4b" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-01T12:10:22.534568982" + }, + "versions_single_end_stub": { + "content": [ + [ + "versions.yml:md5,7df9d50209f351e1f75e05a1fad6ba4b" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-01T12:10:35.228450189" + }, + "sarscov2 single_end_match": { + "content": [ + [ + "test.non_rRNA.fastq.gz", + "test.sortmerna.log", + "{id=test, single_end=true}" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-01T12:15:30.47928718" + }, + "sarscov2 paired_end-for_stub_match": { + "content": [ + [ + [ + "test_1.non_rRNA.fastq.gz", + "test_2.non_rRNA.fastq.gz" + ], + "test.sortmerna.log", + "{id=test, single_end=false}" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2023-12-21T12:00:47.879193" + } +} \ No newline at end of file diff --git a/modules/nf-core/sortmerna/tests/tags.yml b/modules/nf-core/sortmerna/tests/tags.yml new file mode 100644 index 000000000..e088480c7 --- /dev/null +++ b/modules/nf-core/sortmerna/tests/tags.yml @@ -0,0 +1,2 @@ +sortmerna: + - modules/nf-core/sortmerna/** diff --git a/modules/nf-core/star/align/environment.yml b/modules/nf-core/star/align/environment.yml new file mode 100644 index 000000000..8bd58cff5 --- /dev/null +++ b/modules/nf-core/star/align/environment.yml @@ -0,0 +1,10 @@ +name: star_align +channels: + - conda-forge + - bioconda + - defaults +dependencies: + - bioconda::star=2.7.10a + - bioconda::samtools=1.18 + - bioconda::htslib=1.18 + - conda-forge::gawk=5.1.0 diff --git a/modules/nf-core/star/align/main.nf b/modules/nf-core/star/align/main.nf index d0e203848..8e9c48b1c 100644 --- a/modules/nf-core/star/align/main.nf +++ b/modules/nf-core/star/align/main.nf @@ -2,10 +2,10 @@ process STAR_ALIGN { tag "$meta.id" label 'process_high' - conda "bioconda::star=2.7.10a bioconda::samtools=1.16.1 conda-forge::gawk=5.1.0" + conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/mulled-v2-1fa26d1ce03c295fe2fdcf85831a92fbcbd7e8c2:1df389393721fc66f3fd8778ad938ac711951107-0' : - 'biocontainers/mulled-v2-1fa26d1ce03c295fe2fdcf85831a92fbcbd7e8c2:1df389393721fc66f3fd8778ad938ac711951107-0' }" + 'https://depot.galaxyproject.org/singularity/mulled-v2-1fa26d1ce03c295fe2fdcf85831a92fbcbd7e8c2:ded3841da0194af2701c780e9b3d653a85d27489-0' : + 'biocontainers/mulled-v2-1fa26d1ce03c295fe2fdcf85831a92fbcbd7e8c2:ded3841da0194af2701c780e9b3d653a85d27489-0' }" input: tuple val(meta), path(reads, stageAs: "input*/*") diff --git a/modules/nf-core/star/align/meta.yml b/modules/nf-core/star/align/meta.yml index 3d8fed0cc..e80dbb7dd 100644 --- a/modules/nf-core/star/align/meta.yml +++ b/modules/nf-core/star/align/meta.yml @@ -52,7 +52,6 @@ input: - seq_center: type: string description: Sequencing center - output: - bam: type: file @@ -106,8 +105,11 @@ output: type: file description: STAR output bedGraph format file(s) (optional) pattern: "*.bg" - authors: - "@kevinmenden" - "@drpatelh" - "@praveenraj2018" +maintainers: + - "@kevinmenden" + - "@drpatelh" + - "@praveenraj2018" diff --git a/modules/nf-core/star/align/tests/main.nf.test b/modules/nf-core/star/align/tests/main.nf.test new file mode 100644 index 000000000..c18e37ec8 --- /dev/null +++ b/modules/nf-core/star/align/tests/main.nf.test @@ -0,0 +1,340 @@ +nextflow_process { + + name "Test Process STAR_ALIGN" + script "../main.nf" + process "STAR_ALIGN" + tag "modules" + tag "modules_nfcore" + tag "star" + tag "star/align" + tag "star/genomegenerate" + + test("homo_sapiens - single_end") { + config "./nextflow.config" + + setup { + run("STAR_GENOMEGENERATE") { + script "../../../star/genomegenerate/main.nf" + process { + """ + input[0] = Channel.of([ + [ id:'test_fasta' ], + [file(params.test_data['homo_sapiens']['genome']['genome_fasta'], checkIfExists: true)] + ]) + input[1] = Channel.of([ + [ id:'test_gtf' ], + [file(params.test_data['homo_sapiens']['genome']['genome_gtf'], checkIfExists: true)] + ]) + """ + } + } + } + + when { + process { + """ + input[0] = Channel.of([ + [ id:'test', single_end:true ], // meta map + [ file(params.test_data['homo_sapiens']['illumina']['test_rnaseq_1_fastq_gz'], checkIfExists: true) ] + ]) + input[1] = STAR_GENOMEGENERATE.out.index + input[2] = Channel.of([ + [ id:'test_gtf' ], + [file(params.test_data['homo_sapiens']['genome']['genome_gtf'], checkIfExists: true)] + ]) + input[3] = false + input[4] = 'illumina' + input[5] = false + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(file(process.out.log_final[0][1]).name).match("homo_sapiens - single_end - log_final") }, + { assert snapshot(file(process.out.log_out[0][1]).name).match("homo_sapiens - single_end - log_out") }, + { assert snapshot(process.out.bam).match("homo_sapiens - single_end - bam") }, + { assert snapshot(process.out.bam_sorted).match("homo_sapiens - single_end - bam_sorted") }, + { assert snapshot(process.out.bam_transcript).match("homo_sapiens - single_end - bam_transcript") }, + { assert snapshot(process.out.bam_unsorted).match("homo_sapiens - single_end - bam_unsorted") }, + { assert snapshot(process.out.bedgraph).match("homo_sapiens - single_end - bedgraph") }, + { assert snapshot(process.out.fastq).match("homo_sapiens - single_end - fastq") }, + { assert snapshot(process.out.junction).match("homo_sapiens - single_end - junction") }, + { assert snapshot(process.out.log_progress).match("homo_sapiens - single_end - log_progress") }, + { assert snapshot(process.out.read_per_gene_tab).match("homo_sapiens - single_end - read_per_gene_tab") }, + { assert snapshot(process.out.sam).match("homo_sapiens - single_end - sam") }, + { assert snapshot(process.out.spl_junc_tab).match("homo_sapiens - single_end - spl_junc_tab") }, + { assert snapshot(process.out.tab).match("homo_sapiens - single_end - tab") }, + { assert snapshot(process.out.wig).match("homo_sapiens - single_end - wig") }, + { assert snapshot(process.out.versions).match("homo_sapiens - single_end - versions") } + ) + } + } + + test("homo_sapiens - paired_end") { + config "./nextflow.config" + + setup { + run("STAR_GENOMEGENERATE") { + script "../../../star/genomegenerate/main.nf" + process { + """ + input[0] = Channel.of([ + [ id:'test_fasta' ], + [file(params.test_data['homo_sapiens']['genome']['genome_fasta'], checkIfExists: true)] + ]) + input[1] = Channel.of([ + [ id:'test_gtf' ], + [file(params.test_data['homo_sapiens']['genome']['genome_gtf'], checkIfExists: true)] + ]) + """ + } + } + } + + when { + process { + """ + input[0] = Channel.of([ + [ id:'test', single_end:false ], // meta map + [ + file(params.test_data['homo_sapiens']['illumina']['test_rnaseq_1_fastq_gz'], checkIfExists: true), + file(params.test_data['homo_sapiens']['illumina']['test_rnaseq_2_fastq_gz'], checkIfExists: true) + ] + ]) + input[1] = STAR_GENOMEGENERATE.out.index + input[2] = Channel.of([ + [ id:'test_gtf' ], + [file(params.test_data['homo_sapiens']['genome']['genome_gtf'], checkIfExists: true)] + ]) + input[3] = false + input[4] = 'illumina' + input[5] = false + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(file(process.out.log_final[0][1]).name).match("homo_sapiens - paired_end - log_final") }, + { assert snapshot(file(process.out.log_out[0][1]).name).match("homo_sapiens - paired_end - log_out") }, + { assert snapshot(process.out.bam).match("homo_sapiens - paired_end - bam") }, + { assert snapshot(process.out.bam_sorted).match("homo_sapiens - paired_end - bam_sorted") }, + { assert snapshot(process.out.bam_transcript).match("homo_sapiens - paired_end - bam_transcript") }, + { assert snapshot(process.out.bam_unsorted).match("homo_sapiens - paired_end - bam_unsorted") }, + { assert snapshot(process.out.bedgraph).match("homo_sapiens - paired_end - bedgraph") }, + { assert snapshot(process.out.fastq).match("homo_sapiens - paired_end - fastq") }, + { assert snapshot(process.out.junction).match("homo_sapiens - paired_end - junction") }, + { assert snapshot(process.out.log_progress).match("homo_sapiens - paired_end - log_progress") }, + { assert snapshot(process.out.read_per_gene_tab).match("homo_sapiens - paired_end - read_per_gene_tab") }, + { assert snapshot(process.out.sam).match("homo_sapiens - paired_end - sam") }, + { assert snapshot(process.out.spl_junc_tab).match("homo_sapiens - paired_end - spl_junc_tab") }, + { assert snapshot(process.out.tab).match("homo_sapiens - paired_end - tab") }, + { assert snapshot(process.out.wig).match("homo_sapiens - paired_end - wig") }, + { assert snapshot(process.out.versions).match("homo_sapiens - paired_end - versions") } + ) + } + } + + test("homo_sapiens - paired_end - arriba") { + config "./nextflow.arriba.config" + + setup { + run("STAR_GENOMEGENERATE") { + script "../../../star/genomegenerate/main.nf" + process { + """ + input[0] = Channel.of([ + [ id:'test_fasta' ], + [file(params.test_data['homo_sapiens']['genome']['genome_fasta'], checkIfExists: true)] + ]) + input[1] = Channel.of([ + [ id:'test_gtf' ], + [file(params.test_data['homo_sapiens']['genome']['genome_gtf'], checkIfExists: true)] + ]) + """ + } + } + } + + when { + process { + """ + input[0] = Channel.of([ + [ id:'test', single_end:false ], // meta map + [ + file(params.test_data['homo_sapiens']['illumina']['test_rnaseq_1_fastq_gz'], checkIfExists: true), + file(params.test_data['homo_sapiens']['illumina']['test_rnaseq_2_fastq_gz'], checkIfExists: true) + ] + ]) + input[1] = STAR_GENOMEGENERATE.out.index + input[2] = Channel.of([ + [ id:'test_gtf' ], + [file(params.test_data['homo_sapiens']['genome']['genome_gtf'], checkIfExists: true)] + ]) + input[3] = false + input[4] = 'illumina' + input[5] = false + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(file(process.out.log_final[0][1]).name).match("homo_sapiens - paired_end - arriba - log_final") }, + { assert snapshot(file(process.out.log_out[0][1]).name).match("homo_sapiens - paired_end - arriba - log_out") }, + { assert snapshot(file(process.out.log_progress[0][1]).name).match("homo_sapiens - paired_end - arriba - log_progress") }, + { assert snapshot(process.out.bam).match("homo_sapiens - paired_end - arriba - bam") }, + { assert snapshot(process.out.bam_sorted).match("homo_sapiens - paired_end - arriba - bam_sorted") }, + { assert snapshot(process.out.bam_transcript).match("homo_sapiens - paired_end - arriba - bam_transcript") }, + { assert snapshot(process.out.bam_unsorted).match("homo_sapiens - paired_end - arriba - bam_unsorted") }, + { assert snapshot(process.out.bedgraph).match("homo_sapiens - paired_end - arriba - bedgraph") }, + { assert snapshot(process.out.fastq).match("homo_sapiens - paired_end - arriba - fastq") }, + { assert snapshot(process.out.junction).match("homo_sapiens - paired_end - arriba - junction") }, + { assert snapshot(process.out.read_per_gene_tab).match("homo_sapiens - paired_end - arriba - read_per_gene_tab") }, + { assert snapshot(process.out.sam).match("homo_sapiens - paired_end - arriba - sam") }, + { assert snapshot(process.out.spl_junc_tab).match("homo_sapiens - paired_end - arriba - spl_junc_tab") }, + { assert snapshot(process.out.tab).match("homo_sapiens - paired_end - arriba - tab") }, + { assert snapshot(process.out.wig).match("homo_sapiens - paired_end - arriba - wig") }, + { assert snapshot(process.out.versions).match("homo_sapiens - paired_end - arriba - versions") } + ) + } + } + + test("homo_sapiens - paired_end - starfusion") { + config "./nextflow.starfusion.config" + + setup { + run("STAR_GENOMEGENERATE") { + script "../../../star/genomegenerate/main.nf" + process { + """ + input[0] = Channel.of([ + [ id:'test_fasta' ], + [file(params.test_data['homo_sapiens']['genome']['genome_fasta'], checkIfExists: true)] + ]) + input[1] = Channel.of([ + [ id:'test_gtf' ], + [file(params.test_data['homo_sapiens']['genome']['genome_gtf'], checkIfExists: true)] + ]) + """ + } + } + } + + when { + process { + """ + input[0] = Channel.of([ + [ id:'test', single_end:false ], // meta map + [ + file(params.test_data['homo_sapiens']['illumina']['test_rnaseq_1_fastq_gz'], checkIfExists: true), + file(params.test_data['homo_sapiens']['illumina']['test_rnaseq_2_fastq_gz'], checkIfExists: true) + ] + ]) + input[1] = STAR_GENOMEGENERATE.out.index + input[2] = Channel.of([ + [ id:'test_gtf' ], + [file(params.test_data['homo_sapiens']['genome']['genome_gtf'], checkIfExists: true)] + ]) + input[3] = false + input[4] = 'illumina' + input[5] = false + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(file(process.out.log_final[0][1]).name).match("homo_sapiens - paired_end - starfusion - log_final") }, + { assert snapshot(file(process.out.log_out[0][1]).name).match("homo_sapiens - paired_end - starfusion - log_out") }, + { assert snapshot(file(process.out.log_progress[0][1]).name).match("homo_sapiens - paired_end - starfusion - log_progress") }, + { assert snapshot(process.out.bam).match("homo_sapiens - paired_end - starfusion - bam") }, + { assert snapshot(process.out.bam_sorted).match("homo_sapiens - paired_end - starfusion - bam_sorted") }, + { assert snapshot(process.out.bam_transcript).match("homo_sapiens - paired_end - starfusion - bam_transcript") }, + { assert snapshot(process.out.bam_unsorted).match("homo_sapiens - paired_end - starfusion - bam_unsorted") }, + { assert snapshot(process.out.bedgraph).match("homo_sapiens - paired_end - starfusion - bedgraph") }, + { assert snapshot(process.out.fastq).match("homo_sapiens - paired_end - starfusion - fastq") }, + { assert snapshot(process.out.junction).match("homo_sapiens - paired_end - starfusion - junction") }, + { assert snapshot(process.out.read_per_gene_tab).match("homo_sapiens - paired_end - starfusion - read_per_gene_tab") }, + { assert snapshot(process.out.sam).match("homo_sapiens - paired_end - starfusion - sam") }, + { assert snapshot(process.out.spl_junc_tab).match("homo_sapiens - paired_end - starfusion - spl_junc_tab") }, + { assert snapshot(process.out.tab).match("homo_sapiens - paired_end - starfusion - tab") }, + { assert snapshot(process.out.wig).match("homo_sapiens - paired_end - starfusion - wig") }, + { assert snapshot(process.out.versions).match("homo_sapiens - paired_end - starfusion - versions") } + ) + } + } + + test("homo_sapiens - paired_end - multiple") { + config "./nextflow.config" + + setup { + run("STAR_GENOMEGENERATE") { + script "../../../star/genomegenerate/main.nf" + process { + """ + input[0] = Channel.of([ + [ id:'test_fasta' ], + [file(params.test_data['homo_sapiens']['genome']['genome_fasta'], checkIfExists: true)] + ]) + input[1] = Channel.of([ + [ id:'test_gtf' ], + [file(params.test_data['homo_sapiens']['genome']['genome_gtf'], checkIfExists: true)] + ]) + """ + } + } + } + + when { + process { + """ + input[0] = Channel.of([ + [ id:'test', single_end:false ], // meta map + [ + file(params.test_data['homo_sapiens']['illumina']['test_rnaseq_1_fastq_gz'], checkIfExists: true), + file(params.test_data['homo_sapiens']['illumina']['test_rnaseq_2_fastq_gz'], checkIfExists: true), + file(params.test_data['homo_sapiens']['illumina']['test_rnaseq_1_fastq_gz'], checkIfExists: true), + file(params.test_data['homo_sapiens']['illumina']['test_rnaseq_2_fastq_gz'], checkIfExists: true) + ] + ]) + input[1] = STAR_GENOMEGENERATE.out.index + input[2] = Channel.of([ + [ id:'test_gtf' ], + [file(params.test_data['homo_sapiens']['genome']['genome_gtf'], checkIfExists: true)] + ]) + input[3] = false + input[4] = 'illumina' + input[5] = false + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(file(process.out.log_final[0][1]).name).match("homo_sapiens - paired_end - multiple - log_final") }, + { assert snapshot(file(process.out.log_out[0][1]).name).match("homo_sapiens - paired_end - multiple - log_out") }, + { assert snapshot(file(process.out.log_progress[0][1]).name).match("homo_sapiens - paired_end - multiple - log_progress") }, + { assert snapshot(process.out.bam).match("homo_sapiens - paired_end - multiple - bam") }, + { assert snapshot(process.out.bam_sorted).match("homo_sapiens - paired_end - multiple - bam_sorted") }, + { assert snapshot(process.out.bam_transcript).match("homo_sapiens - paired_end - multiple - bam_transcript") }, + { assert snapshot(process.out.bam_unsorted).match("homo_sapiens - paired_end - multiple - bam_unsorted") }, + { assert snapshot(process.out.bedgraph).match("homo_sapiens - paired_end - multiple - bedgraph") }, + { assert snapshot(process.out.fastq).match("homo_sapiens - paired_end - multiple - fastq") }, + { assert snapshot(process.out.junction).match("homo_sapiens - paired_end - multiple - junction") }, + { assert snapshot(process.out.read_per_gene_tab).match("homo_sapiens - paired_end - multiple - read_per_gene_tab") }, + { assert snapshot(process.out.sam).match("homo_sapiens - paired_end - multiple - sam") }, + { assert snapshot(process.out.spl_junc_tab).match("homo_sapiens - paired_end - multiple - spl_junc_tab") }, + { assert snapshot(process.out.tab).match("homo_sapiens - paired_end - multiple - tab") }, + { assert snapshot(process.out.wig).match("homo_sapiens - paired_end - multiple - wig") }, + { assert snapshot(process.out.versions).match("homo_sapiens - paired_end - multiple - versions") } + ) + } + } +} \ No newline at end of file diff --git a/modules/nf-core/star/align/tests/main.nf.test.snap b/modules/nf-core/star/align/tests/main.nf.test.snap new file mode 100644 index 000000000..08edb914b --- /dev/null +++ b/modules/nf-core/star/align/tests/main.nf.test.snap @@ -0,0 +1,769 @@ +{ + "homo_sapiens - paired_end - multiple - bam_sorted": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test.Aligned.sortedByCoord.out.bam:md5,ab07c21d63ab0a6c07d171d213c81d5a" + ] + ] + ], + "timestamp": "2023-12-04T18:01:19.968225733" + }, + "homo_sapiens - paired_end - multiple - wig": { + "content": [ + [ + + ] + ], + "timestamp": "2023-11-23T13:29:01.857804" + }, + "homo_sapiens - paired_end - arriba - tab": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test.SJ.out.tab:md5,5155c9fd1f787ad6d7d80987fb06219c" + ] + ] + ], + "timestamp": "2023-12-04T17:56:12.347549723" + }, + "homo_sapiens - single_end - wig": { + "content": [ + [ + + ] + ], + "timestamp": "2023-11-23T13:22:55.24701" + }, + "homo_sapiens - paired_end - sam": { + "content": [ + [ + + ] + ], + "timestamp": "2023-11-23T13:23:33.383818" + }, + "homo_sapiens - paired_end - arriba - versions": { + "content": [ + [ + "versions.yml:md5,2e6b6d8809f5a17f38f4d27c45dcb22f" + ] + ], + "timestamp": "2023-12-04T17:56:12.431212643" + }, + "homo_sapiens - paired_end - multiple - bedgraph": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test.Signal.Unique.str1.out.bg:md5,d7bf8b70b436ca048a62513e1d0ece3a", + "test.Signal.UniqueMultiple.str1.out.bg:md5,686d58493b9eb445b56ace4d67f76ef6" + ] + ] + ] + ], + "timestamp": "2023-12-04T18:01:20.07119229" + }, + "homo_sapiens - paired_end - read_per_gene_tab": { + "content": [ + [ + + ] + ], + "timestamp": "2023-11-23T13:23:33.368841" + }, + "homo_sapiens - paired_end - arriba - bedgraph": { + "content": [ + [ + + ] + ], + "timestamp": "2023-11-23T13:25:07.102537" + }, + "homo_sapiens - single_end - junction": { + "content": [ + [ + + ] + ], + "timestamp": "2023-11-23T13:22:55.185369" + }, + "homo_sapiens - paired_end - arriba - spl_junc_tab": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test.SJ.out.tab:md5,5155c9fd1f787ad6d7d80987fb06219c" + ] + ] + ], + "timestamp": "2023-12-04T17:56:12.268388251" + }, + "homo_sapiens - single_end - sam": { + "content": [ + [ + + ] + ], + "timestamp": "2023-11-23T13:22:55.216183" + }, + "homo_sapiens - paired_end - fastq": { + "content": [ + [ + + ] + ], + "timestamp": "2023-11-23T13:23:33.327236" + }, + "homo_sapiens - single_end - versions": { + "content": [ + [ + "versions.yml:md5,2e6b6d8809f5a17f38f4d27c45dcb22f" + ] + ], + "timestamp": "2023-12-04T17:53:26.664210196" + }, + "homo_sapiens - paired_end - multiple - log_out": { + "content": [ + "test.Log.out" + ], + "timestamp": "2023-11-23T13:29:01.022176" + }, + "homo_sapiens - paired_end - arriba - fastq": { + "content": [ + [ + + ] + ], + "timestamp": "2023-11-23T13:25:07.15277" + }, + "homo_sapiens - paired_end - multiple - junction": { + "content": [ + [ + + ] + ], + "timestamp": "2023-11-23T13:29:01.52923" + }, + "homo_sapiens - paired_end - multiple - spl_junc_tab": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test.SJ.out.tab:md5,069877e053714e23010fe4e1c003b4a2" + ] + ] + ], + "timestamp": "2023-12-04T18:01:20.189486201" + }, + "homo_sapiens - paired_end - starfusion - log_final": { + "content": [ + "test.Log.final.out" + ], + "timestamp": "2023-11-23T13:27:55.905883" + }, + "homo_sapiens - paired_end - starfusion - fastq": { + "content": [ + [ + + ] + ], + "timestamp": "2023-11-23T13:27:56.192302" + }, + "homo_sapiens - paired_end - multiple - sam": { + "content": [ + [ + + ] + ], + "timestamp": "2023-11-23T13:29:01.661837" + }, + "homo_sapiens - paired_end - multiple - log_final": { + "content": [ + "test.Log.final.out" + ], + "timestamp": "2023-11-23T13:29:00.966417" + }, + "homo_sapiens - paired_end - starfusion - bam": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test.Aligned.out.bam:md5,bcad07b838f6762fc01eea52b5cd3f84" + ] + ] + ], + "timestamp": "2023-12-04T17:59:58.53235164" + }, + "homo_sapiens - paired_end - arriba - junction": { + "content": [ + [ + + ] + ], + "timestamp": "2023-11-23T13:25:07.202776" + }, + "homo_sapiens - single_end - bedgraph": { + "content": [ + [ + [ + { + "id": "test", + "single_end": true + }, + [ + "test.Signal.Unique.str1.out.bg:md5,c56fc1472776fb927eaf62d973da5f9a", + "test.Signal.UniqueMultiple.str1.out.bg:md5,e93373cf6f2a2a9506e2efdb260cdd4f" + ] + ] + ] + ], + "timestamp": "2023-12-04T17:53:26.394863748" + }, + "homo_sapiens - paired_end - arriba - read_per_gene_tab": { + "content": [ + [ + + ] + ], + "timestamp": "2023-11-23T13:25:07.251962" + }, + "homo_sapiens - paired_end - starfusion - bam_sorted": { + "content": [ + [ + + ] + ], + "timestamp": "2023-11-23T13:27:56.040843" + }, + "homo_sapiens - single_end - bam_unsorted": { + "content": [ + [ + + ] + ], + "timestamp": "2023-11-23T13:22:55.154172" + }, + "homo_sapiens - paired_end - bam": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test.Aligned.sortedByCoord.out.bam:md5,b9ee1c607e07323bc1652ef3babb543f" + ] + ] + ], + "timestamp": "2023-12-04T17:54:11.934832258" + }, + "homo_sapiens - paired_end - arriba - bam_transcript": { + "content": [ + [ + + ] + ], + "timestamp": "2023-11-23T13:25:06.998817" + }, + "homo_sapiens - paired_end - log_out": { + "content": [ + "test.Log.out" + ], + "timestamp": "2023-11-23T13:23:33.259699" + }, + "homo_sapiens - paired_end - arriba - log_out": { + "content": [ + "test.Log.out" + ], + "timestamp": "2023-11-23T13:25:06.849451" + }, + "homo_sapiens - paired_end - multiple - versions": { + "content": [ + [ + "versions.yml:md5,2e6b6d8809f5a17f38f4d27c45dcb22f" + ] + ], + "timestamp": "2023-12-04T18:01:20.393705142" + }, + "homo_sapiens - paired_end - starfusion - bam_transcript": { + "content": [ + [ + + ] + ], + "timestamp": "2023-11-23T13:27:56.082408" + }, + "homo_sapiens - paired_end - starfusion - tab": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test.SJ.out.tab:md5,19c3faa1bfa9a0cc5e4c45f17065b53a" + ] + ] + ], + "timestamp": "2023-12-04T17:59:58.818041322" + }, + "homo_sapiens - single_end - fastq": { + "content": [ + [ + + ] + ], + "timestamp": "2023-11-23T13:22:55.175307" + }, + "homo_sapiens - paired_end - tab": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test.SJ.out.tab:md5,844af19ab0fc8cd9a3f75228445aca0d" + ] + ] + ], + "timestamp": "2023-12-04T17:54:12.255481058" + }, + "homo_sapiens - paired_end - starfusion - bedgraph": { + "content": [ + [ + + ] + ], + "timestamp": "2023-11-23T13:27:56.155413" + }, + "homo_sapiens - single_end - bam_transcript": { + "content": [ + [ + + ] + ], + "timestamp": "2023-11-23T13:22:55.144852" + }, + "homo_sapiens - paired_end - versions": { + "content": [ + [ + "versions.yml:md5,2e6b6d8809f5a17f38f4d27c45dcb22f" + ] + ], + "timestamp": "2023-12-04T17:54:12.343840482" + }, + "homo_sapiens - paired_end - multiple - tab": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test.SJ.out.tab:md5,069877e053714e23010fe4e1c003b4a2" + ] + ] + ], + "timestamp": "2023-12-04T18:01:20.291692062" + }, + "homo_sapiens - single_end - bam": { + "content": [ + [ + [ + { + "id": "test", + "single_end": true + }, + "test.Aligned.sortedByCoord.out.bam:md5,c6cfaccaf91bc7fdabed3cfe236d4535" + ] + ] + ], + "timestamp": "2023-12-04T17:53:26.265642675" + }, + "homo_sapiens - paired_end - arriba - wig": { + "content": [ + [ + + ] + ], + "timestamp": "2023-11-23T13:25:07.444214" + }, + "homo_sapiens - paired_end - log_progress": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test.Log.progress.out:md5,b2bd061d6cbaaf3d6d3b1fed547f69b8" + ] + ] + ], + "timestamp": "2023-12-04T17:54:12.126063825" + }, + "homo_sapiens - paired_end - arriba - log_final": { + "content": [ + "test.Log.final.out" + ], + "timestamp": "2023-11-23T13:25:06.829799" + }, + "homo_sapiens - paired_end - bam_unsorted": { + "content": [ + [ + + ] + ], + "timestamp": "2023-11-23T13:23:33.300509" + }, + "homo_sapiens - paired_end - arriba - sam": { + "content": [ + [ + + ] + ], + "timestamp": "2023-11-23T13:25:07.300383" + }, + "homo_sapiens - paired_end - multiple - bam": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test.Aligned.sortedByCoord.out.bam:md5,ab07c21d63ab0a6c07d171d213c81d5a" + ] + ] + ], + "timestamp": "2023-12-04T18:01:19.851247126" + }, + "homo_sapiens - paired_end - multiple - fastq": { + "content": [ + [ + + ] + ], + "timestamp": "2023-11-23T13:29:01.462257" + }, + "homo_sapiens - single_end - bam_sorted": { + "content": [ + [ + [ + { + "id": "test", + "single_end": true + }, + "test.Aligned.sortedByCoord.out.bam:md5,c6cfaccaf91bc7fdabed3cfe236d4535" + ] + ] + ], + "timestamp": "2023-12-04T17:53:26.335457371" + }, + "homo_sapiens - paired_end - arriba - bam_sorted": { + "content": [ + [ + + ] + ], + "timestamp": "2023-11-23T13:25:06.94699" + }, + "homo_sapiens - paired_end - starfusion - junction": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test.Chimeric.out.junction:md5,c10ef219f4a30e83711b995bc5e40dba" + ] + ] + ], + "timestamp": "2023-12-04T17:59:58.641115828" + }, + "homo_sapiens - single_end - tab": { + "content": [ + [ + [ + { + "id": "test", + "single_end": true + }, + "test.SJ.out.tab:md5,75a516ab950fb958f40b29996474949c" + ] + ] + ], + "timestamp": "2023-12-04T17:53:26.580593434" + }, + "homo_sapiens - paired_end - starfusion - versions": { + "content": [ + [ + "versions.yml:md5,2e6b6d8809f5a17f38f4d27c45dcb22f" + ] + ], + "timestamp": "2023-12-04T17:59:58.907317103" + }, + "homo_sapiens - paired_end - multiple - bam_unsorted": { + "content": [ + [ + + ] + ], + "timestamp": "2023-11-23T13:29:01.330463" + }, + "homo_sapiens - paired_end - arriba - log_progress": { + "content": [ + "test.Log.progress.out" + ], + "timestamp": "2023-11-23T13:25:06.86866" + }, + "homo_sapiens - paired_end - bedgraph": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test.Signal.Unique.str1.out.bg:md5,d7bf8b70b436ca048a62513e1d0ece3a", + "test.Signal.UniqueMultiple.str1.out.bg:md5,686d58493b9eb445b56ace4d67f76ef6" + ] + ] + ] + ], + "timestamp": "2023-12-04T17:54:12.064121304" + }, + "homo_sapiens - paired_end - starfusion - bam_unsorted": { + "content": [ + [ + + ] + ], + "timestamp": "2023-11-23T13:27:56.118974" + }, + "homo_sapiens - paired_end - starfusion - read_per_gene_tab": { + "content": [ + [ + + ] + ], + "timestamp": "2023-11-23T13:27:56.264699" + }, + "homo_sapiens - paired_end - multiple - log_progress": { + "content": [ + "test.Log.progress.out" + ], + "timestamp": "2023-11-23T13:29:01.076947" + }, + "homo_sapiens - paired_end - arriba - bam_unsorted": { + "content": [ + [ + + ] + ], + "timestamp": "2023-11-23T13:25:07.050409" + }, + "homo_sapiens - paired_end - bam_sorted": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test.Aligned.sortedByCoord.out.bam:md5,b9ee1c607e07323bc1652ef3babb543f" + ] + ] + ], + "timestamp": "2023-12-04T17:54:12.002180537" + }, + "homo_sapiens - single_end - spl_junc_tab": { + "content": [ + [ + [ + { + "id": "test", + "single_end": true + }, + "test.SJ.out.tab:md5,75a516ab950fb958f40b29996474949c" + ] + ] + ], + "timestamp": "2023-12-04T17:53:26.50932751" + }, + "homo_sapiens - paired_end - starfusion - spl_junc_tab": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test.SJ.out.tab:md5,19c3faa1bfa9a0cc5e4c45f17065b53a" + ] + ] + ], + "timestamp": "2023-12-04T17:59:58.731699486" + }, + "homo_sapiens - single_end - log_out": { + "content": [ + "test.Log.out" + ], + "timestamp": "2023-11-23T13:22:55.126286" + }, + "homo_sapiens - paired_end - log_final": { + "content": [ + "test.Log.final.out" + ], + "timestamp": "2023-11-23T13:23:33.253884" + }, + "homo_sapiens - single_end - log_final": { + "content": [ + "test.Log.final.out" + ], + "timestamp": "2023-11-23T13:22:55.11799" + }, + "homo_sapiens - paired_end - bam_transcript": { + "content": [ + [ + + ] + ], + "timestamp": "2023-11-23T13:23:33.287684" + }, + "homo_sapiens - paired_end - starfusion - log_progress": { + "content": [ + "test.Log.progress.out" + ], + "timestamp": "2023-11-23T13:27:55.971484" + }, + "homo_sapiens - paired_end - multiple - bam_transcript": { + "content": [ + [ + + ] + ], + "timestamp": "2023-11-23T13:29:01.264176" + }, + "homo_sapiens - paired_end - multiple - read_per_gene_tab": { + "content": [ + [ + + ] + ], + "timestamp": "2023-11-23T13:29:01.596406" + }, + "homo_sapiens - single_end - read_per_gene_tab": { + "content": [ + [ + + ] + ], + "timestamp": "2023-11-23T13:22:55.205936" + }, + "homo_sapiens - paired_end - junction": { + "content": [ + [ + + ] + ], + "timestamp": "2023-11-23T13:23:33.340653" + }, + "homo_sapiens - paired_end - spl_junc_tab": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test.SJ.out.tab:md5,844af19ab0fc8cd9a3f75228445aca0d" + ] + ] + ], + "timestamp": "2023-12-04T17:54:12.185730856" + }, + "homo_sapiens - paired_end - starfusion - sam": { + "content": [ + [ + + ] + ], + "timestamp": "2023-11-23T13:27:56.300637" + }, + "homo_sapiens - paired_end - arriba - bam": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test.Aligned.out.bam:md5,c1b1747f5873f2d17762725636e891d5" + ] + ] + ], + "timestamp": "2023-12-04T17:56:12.190560178" + }, + "homo_sapiens - single_end - log_progress": { + "content": [ + [ + [ + { + "id": "test", + "single_end": true + }, + "test.Log.progress.out:md5,b2bd061d6cbaaf3d6d3b1fed547f69b8" + ] + ] + ], + "timestamp": "2023-12-04T17:53:26.450352138" + }, + "homo_sapiens - paired_end - starfusion - wig": { + "content": [ + [ + + ] + ], + "timestamp": "2023-11-23T13:27:56.422018" + }, + "homo_sapiens - paired_end - wig": { + "content": [ + [ + + ] + ], + "timestamp": "2023-11-23T13:23:33.429457" + }, + "homo_sapiens - paired_end - starfusion - log_out": { + "content": [ + "test.Log.out" + ], + "timestamp": "2023-11-23T13:27:55.93945" + } +} \ No newline at end of file diff --git a/modules/nf-core/star/align/tests/nextflow.arriba.config b/modules/nf-core/star/align/tests/nextflow.arriba.config new file mode 100644 index 000000000..2324b9e58 --- /dev/null +++ b/modules/nf-core/star/align/tests/nextflow.arriba.config @@ -0,0 +1,14 @@ +process { + + withName: STAR_GENOMEGENERATE { + ext.args = '--genomeSAindexNbases 9' + } + + withName: STAR_ALIGN { + ext.args = '--readFilesCommand zcat --outSAMtype BAM Unsorted --outSAMunmapped Within --outBAMcompression 0 --outFilterMultimapNmax 50 --peOverlapNbasesMin 10 --alignSplicedMateMapLminOverLmate 0.5 --alignSJstitchMismatchNmax 5 -1 5 5 --chimSegmentMin 10 --chimOutType WithinBAM HardClip --chimJunctionOverhangMin 10 --chimScoreDropMax 30 --chimScoreJunctionNonGTAG 0 --chimScoreSeparation 1 --chimSegmentReadGapMax 3 --chimMultimapNmax 50' + } + +} + +// Fix chown issue for the output star folder +docker.runOptions = '--platform=linux/amd64 -u $(id -u):$(id -g)' diff --git a/modules/nf-core/star/align/tests/nextflow.config b/modules/nf-core/star/align/tests/nextflow.config new file mode 100644 index 000000000..c4ac58088 --- /dev/null +++ b/modules/nf-core/star/align/tests/nextflow.config @@ -0,0 +1,14 @@ +process { + + withName: STAR_GENOMEGENERATE { + ext.args = '--genomeSAindexNbases 9' + } + + withName: STAR_ALIGN { + ext.args = '--readFilesCommand zcat --outSAMtype BAM SortedByCoordinate --outWigType bedGraph --outWigStrand Unstranded' + } + +} + +// Fix chown issue for the output star folder +docker.runOptions = '--platform=linux/amd64 -u $(id -u):$(id -g)' diff --git a/modules/nf-core/star/align/tests/nextflow.starfusion.config b/modules/nf-core/star/align/tests/nextflow.starfusion.config new file mode 100644 index 000000000..467b64977 --- /dev/null +++ b/modules/nf-core/star/align/tests/nextflow.starfusion.config @@ -0,0 +1,14 @@ +process { + + withName: STAR_GENOMEGENERATE { + ext.args = '--genomeSAindexNbases 9' + } + + withName: STAR_ALIGN { + ext.args = '--readFilesCommand zcat --outSAMtype BAM Unsorted --outReadsUnmapped None --twopassMode Basic --outSAMstrandField intronMotif --outSAMunmapped Within --chimSegmentMin 12 --chimJunctionOverhangMin 8 --chimOutJunctionFormat 1 --alignSJDBoverhangMin 10 --alignMatesGapMax 100000 --alignIntronMax 100000 --alignSJstitchMismatchNmax 5 -1 5 5 --chimMultimapScoreRange 3 --chimScoreJunctionNonGTAG -4 --chimMultimapNmax 20 --chimNonchimScoreDropMin 10 --peOverlapNbasesMin 12 --peOverlapMMp 0.1 --alignInsertionFlush Right --alignSplicedMateMapLminOverLmate 0 --alignSplicedMateMapLmin 30' + } + +} + +// Fix chown issue for the output star folder +docker.runOptions = '--platform=linux/amd64 -u $(id -u):$(id -g)' diff --git a/modules/nf-core/star/align/tests/tags.yml b/modules/nf-core/star/align/tests/tags.yml new file mode 100644 index 000000000..8beace16e --- /dev/null +++ b/modules/nf-core/star/align/tests/tags.yml @@ -0,0 +1,2 @@ +star/align: + - modules/nf-core/star/align/** diff --git a/modules/nf-core/star/genomegenerate/environment.yml b/modules/nf-core/star/genomegenerate/environment.yml new file mode 100644 index 000000000..791f255e5 --- /dev/null +++ b/modules/nf-core/star/genomegenerate/environment.yml @@ -0,0 +1,10 @@ +name: star_genomegenerate +channels: + - conda-forge + - bioconda + - defaults +dependencies: + - bioconda::samtools=1.18 + - bioconda::htslib=1.18 + - bioconda::star=2.7.10a + - conda-forge::gawk=5.1.0 diff --git a/modules/nf-core/star/genomegenerate/main.nf b/modules/nf-core/star/genomegenerate/main.nf index 434240427..b8855715b 100644 --- a/modules/nf-core/star/genomegenerate/main.nf +++ b/modules/nf-core/star/genomegenerate/main.nf @@ -2,10 +2,10 @@ process STAR_GENOMEGENERATE { tag "$fasta" label 'process_high' - conda "bioconda::star=2.7.10a bioconda::samtools=1.16.1 conda-forge::gawk=5.1.0" + conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/mulled-v2-1fa26d1ce03c295fe2fdcf85831a92fbcbd7e8c2:1df389393721fc66f3fd8778ad938ac711951107-0' : - 'biocontainers/mulled-v2-1fa26d1ce03c295fe2fdcf85831a92fbcbd7e8c2:1df389393721fc66f3fd8778ad938ac711951107-0' }" + 'https://depot.galaxyproject.org/singularity/mulled-v2-1fa26d1ce03c295fe2fdcf85831a92fbcbd7e8c2:ded3841da0194af2701c780e9b3d653a85d27489-0' : + 'biocontainers/mulled-v2-1fa26d1ce03c295fe2fdcf85831a92fbcbd7e8c2:ded3841da0194af2701c780e9b3d653a85d27489-0' }" input: tuple val(meta), path(fasta) @@ -19,9 +19,10 @@ process STAR_GENOMEGENERATE { task.ext.when == null || task.ext.when script: - def args = task.ext.args ?: '' - def args_list = args.tokenize() - def memory = task.memory ? "--limitGenomeGenerateRAM ${task.memory.toBytes() - 100000000}" : '' + def args = task.ext.args ?: '' + def args_list = args.tokenize() + def memory = task.memory ? "--limitGenomeGenerateRAM ${task.memory.toBytes() - 100000000}" : '' + def include_gtf = gtf ? "--sjdbGTFfile $gtf" : '' if (args_list.contains('--genomeSAindexNbases')) { """ mkdir star @@ -29,7 +30,7 @@ process STAR_GENOMEGENERATE { --runMode genomeGenerate \\ --genomeDir star/ \\ --genomeFastaFiles $fasta \\ - --sjdbGTFfile $gtf \\ + $include_gtf \\ --runThreadN $task.cpus \\ $memory \\ $args @@ -51,7 +52,7 @@ process STAR_GENOMEGENERATE { --runMode genomeGenerate \\ --genomeDir star/ \\ --genomeFastaFiles $fasta \\ - --sjdbGTFfile $gtf \\ + $include_gtf \\ --runThreadN $task.cpus \\ --genomeSAindexNbases \$NUM_BASES \\ $memory \\ @@ -67,30 +68,52 @@ process STAR_GENOMEGENERATE { } stub: - """ - mkdir star - touch star/Genome - touch star/Log.out - touch star/SA - touch star/SAindex - touch star/chrLength.txt - touch star/chrName.txt - touch star/chrNameLength.txt - touch star/chrStart.txt - touch star/exonGeTrInfo.tab - touch star/exonInfo.tab - touch star/geneInfo.tab - touch star/genomeParameters.txt - touch star/sjdbInfo.txt - touch star/sjdbList.fromGTF.out.tab - touch star/sjdbList.out.tab - touch star/transcriptInfo.tab + if (gtf) { + """ + mkdir star + touch star/Genome + touch star/Log.out + touch star/SA + touch star/SAindex + touch star/chrLength.txt + touch star/chrName.txt + touch star/chrNameLength.txt + touch star/chrStart.txt + touch star/exonGeTrInfo.tab + touch star/exonInfo.tab + touch star/geneInfo.tab + touch star/genomeParameters.txt + touch star/sjdbInfo.txt + touch star/sjdbList.fromGTF.out.tab + touch star/sjdbList.out.tab + touch star/transcriptInfo.tab - cat <<-END_VERSIONS > versions.yml - "${task.process}": - star: \$(STAR --version | sed -e "s/STAR_//g") - samtools: \$(echo \$(samtools --version 2>&1) | sed 's/^.*samtools //; s/Using.*\$//') - gawk: \$(echo \$(gawk --version 2>&1) | sed 's/^.*GNU Awk //; s/, .*\$//') - END_VERSIONS - """ + cat <<-END_VERSIONS > versions.yml + "${task.process}": + star: \$(STAR --version | sed -e "s/STAR_//g") + samtools: \$(echo \$(samtools --version 2>&1) | sed 's/^.*samtools //; s/Using.*\$//') + gawk: \$(echo \$(gawk --version 2>&1) | sed 's/^.*GNU Awk //; s/, .*\$//') + END_VERSIONS + """ + } else { + """ + mkdir star + touch star/Genome + touch star/Log.out + touch star/SA + touch star/SAindex + touch star/chrLength.txt + touch star/chrName.txt + touch star/chrNameLength.txt + touch star/chrStart.txt + touch star/genomeParameters.txt + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + star: \$(STAR --version | sed -e "s/STAR_//g") + samtools: \$(echo \$(samtools --version 2>&1) | sed 's/^.*samtools //; s/Using.*\$//') + gawk: \$(echo \$(gawk --version 2>&1) | sed 's/^.*GNU Awk //; s/, .*\$//') + END_VERSIONS + """ + } } diff --git a/modules/nf-core/star/genomegenerate/meta.yml b/modules/nf-core/star/genomegenerate/meta.yml index eba2d9cf1..1061e1b8d 100644 --- a/modules/nf-core/star/genomegenerate/meta.yml +++ b/modules/nf-core/star/genomegenerate/meta.yml @@ -31,7 +31,6 @@ input: - gtf: type: file description: GTF file of the reference genome - output: - meta: type: map @@ -46,7 +45,9 @@ output: type: file description: File containing software versions pattern: "versions.yml" - authors: - "@kevinmenden" - "@drpatelh" +maintainers: + - "@kevinmenden" + - "@drpatelh" diff --git a/modules/nf-core/star/genomegenerate/tests/main.nf.test b/modules/nf-core/star/genomegenerate/tests/main.nf.test new file mode 100644 index 000000000..069c7ad09 --- /dev/null +++ b/modules/nf-core/star/genomegenerate/tests/main.nf.test @@ -0,0 +1,115 @@ +nextflow_process { + + name "Test Process STAR_GENOMEGENERATE" + script "../main.nf" + process "STAR_GENOMEGENERATE" + tag "modules" + tag "modules_nfcore" + tag "star" + tag "star/genomegenerate" + + test("fasta_gtf") { + + when { + process { + """ + input[0] = Channel.of([ + [ id:'test_fasta' ], + [file(params.test_data['homo_sapiens']['genome']['genome_fasta'], checkIfExists: true)] + ]) + input[1] = Channel.of([ + [ id:'test_gtf' ], + [file(params.test_data['homo_sapiens']['genome']['genome_gtf'], checkIfExists: true)] + ]) + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(file(process.out.index[0][1]).listFiles().collect { it.getName() }.sort().toString()).match("fasta_gtf_index") }, + { assert snapshot(process.out.versions).match("fasta_gtf_versions") } + ) + } + } + + test("fasta_gtf_stub") { + + options '-stub' + + when { + process { + """ + input[0] = Channel.of([ + [ id:'test_fasta' ], + [file(params.test_data['homo_sapiens']['genome']['genome_fasta'], checkIfExists: true)] + ]) + input[1] = Channel.of([ + [ id:'test_gtf' ], + [file(params.test_data['homo_sapiens']['genome']['genome_gtf'], checkIfExists: true)] + ]) + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(file(process.out.index[0][1]).listFiles().collect { it.getName() }.sort().toString()).match("fasta_gtf_stub_index") }, + { assert snapshot(process.out.versions).match("fasta_gtf_stub_versions") } + ) + } + } + + test("fasta") { + + when { + process { + """ + input[0] = Channel.of([ + [ id:'test_fasta' ], + [file(params.test_data['homo_sapiens']['genome']['genome_fasta'], checkIfExists: true)] + ]) + input[1] = Channel.of([ [], [] ]) + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(file(process.out.index[0][1]).listFiles().collect { it.getName() }.sort().toString()).match("fasta_index") }, + { assert snapshot(process.out.versions).match("fasta_versions") } + ) + } + + } + + test("fasta_stub") { + + options '-stub' + + when { + process { + """ + input[0] = Channel.of([ + [ id:'test_fasta' ], + [file(params.test_data['homo_sapiens']['genome']['genome_fasta'], checkIfExists: true)] + ]) + input[1] = Channel.of([ [], [] ]) + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(file(process.out.index[0][1]).listFiles().collect { it.getName() }.sort().toString()).match("fasta_stub_index") }, + { assert snapshot(process.out.versions).match("fasta_stub_versions") } + ) + } + + } + +} diff --git a/modules/nf-core/star/genomegenerate/tests/main.nf.test.snap b/modules/nf-core/star/genomegenerate/tests/main.nf.test.snap new file mode 100644 index 000000000..5653d6e6c --- /dev/null +++ b/modules/nf-core/star/genomegenerate/tests/main.nf.test.snap @@ -0,0 +1,90 @@ +{ + "fasta_gtf_versions": { + "content": [ + [ + "versions.yml:md5,46b8f1f34bb7f23892cd1eb249ed4d7f" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.04.3" + }, + "timestamp": "2024-02-01T15:54:31.798555" + }, + "fasta_stub_versions": { + "content": [ + [ + "versions.yml:md5,46b8f1f34bb7f23892cd1eb249ed4d7f" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.04.3" + }, + "timestamp": "2024-02-01T15:55:07.521209" + }, + "fasta_gtf_stub_index": { + "content": [ + "[Genome, Log.out, SA, SAindex, chrLength.txt, chrName.txt, chrNameLength.txt, chrStart.txt, exonGeTrInfo.tab, exonInfo.tab, geneInfo.tab, genomeParameters.txt, sjdbInfo.txt, sjdbList.fromGTF.out.tab, sjdbList.out.tab, transcriptInfo.tab]" + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.04.3" + }, + "timestamp": "2024-02-01T15:54:46.478098" + }, + "fasta_gtf_stub_versions": { + "content": [ + [ + "versions.yml:md5,46b8f1f34bb7f23892cd1eb249ed4d7f" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.04.3" + }, + "timestamp": "2024-02-01T15:54:46.491657" + }, + "fasta_index": { + "content": [ + "[Genome, Log.out, SA, SAindex, chrLength.txt, chrName.txt, chrNameLength.txt, chrStart.txt, genomeParameters.txt]" + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.04.3" + }, + "timestamp": "2024-02-01T15:54:57.552329" + }, + "fasta_versions": { + "content": [ + [ + "versions.yml:md5,46b8f1f34bb7f23892cd1eb249ed4d7f" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.04.3" + }, + "timestamp": "2024-02-01T15:54:57.560541" + }, + "fasta_gtf_index": { + "content": [ + "[Genome, Log.out, SA, SAindex, chrLength.txt, chrName.txt, chrNameLength.txt, chrStart.txt, exonGeTrInfo.tab, exonInfo.tab, geneInfo.tab, genomeParameters.txt, sjdbInfo.txt, sjdbList.fromGTF.out.tab, sjdbList.out.tab, transcriptInfo.tab]" + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.04.3" + }, + "timestamp": "2024-02-01T15:54:31.786814" + }, + "fasta_stub_index": { + "content": [ + "[Genome, Log.out, SA, SAindex, chrLength.txt, chrName.txt, chrNameLength.txt, chrStart.txt, genomeParameters.txt]" + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.04.3" + }, + "timestamp": "2024-02-01T15:55:07.517472" + } +} \ No newline at end of file diff --git a/modules/nf-core/star/genomegenerate/tests/tags.yml b/modules/nf-core/star/genomegenerate/tests/tags.yml new file mode 100644 index 000000000..79f619bfe --- /dev/null +++ b/modules/nf-core/star/genomegenerate/tests/tags.yml @@ -0,0 +1,2 @@ +star/genomegenerate: + - modules/nf-core/star/genomegenerate/** diff --git a/modules/nf-core/stringtie/stringtie/environment.yml b/modules/nf-core/stringtie/stringtie/environment.yml new file mode 100644 index 000000000..7a0eccdb8 --- /dev/null +++ b/modules/nf-core/stringtie/stringtie/environment.yml @@ -0,0 +1,7 @@ +name: stringtie_stringtie +channels: + - conda-forge + - bioconda + - defaults +dependencies: + - bioconda::stringtie=2.2.1 diff --git a/modules/nf-core/stringtie/stringtie/main.nf b/modules/nf-core/stringtie/stringtie/main.nf index d0f8b563f..6e25ba27d 100644 --- a/modules/nf-core/stringtie/stringtie/main.nf +++ b/modules/nf-core/stringtie/stringtie/main.nf @@ -2,7 +2,7 @@ process STRINGTIE_STRINGTIE { tag "$meta.id" label 'process_medium' - conda "bioconda::stringtie=2.2.1" + conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/stringtie:2.2.1--hecb563c_2' : 'biocontainers/stringtie:2.2.1--hecb563c_2' }" diff --git a/modules/nf-core/stringtie/stringtie/meta.yml b/modules/nf-core/stringtie/stringtie/meta.yml index 75518470b..d8ebdd88a 100644 --- a/modules/nf-core/stringtie/stringtie/meta.yml +++ b/modules/nf-core/stringtie/stringtie/meta.yml @@ -5,7 +5,6 @@ keywords: - assembly - quantification - gtf - tools: - stringtie2: description: | @@ -55,3 +54,5 @@ output: pattern: "versions.yml" authors: - "@drpatelh" +maintainers: + - "@drpatelh" diff --git a/modules/nf-core/stringtie/stringtie/tests/main.nf.test b/modules/nf-core/stringtie/stringtie/tests/main.nf.test new file mode 100644 index 000000000..68786b745 --- /dev/null +++ b/modules/nf-core/stringtie/stringtie/tests/main.nf.test @@ -0,0 +1,108 @@ +nextflow_process { + + name "Test Process STRINGTIE_STRINGTIE" + script "../main.nf" + process "STRINGTIE_STRINGTIE" + tag "modules" + tag "modules_nfcore" + tag "stringtie" + tag "stringtie/stringtie" + + test("sarscov2 [bam] - forward strandedness") { + + when { + process { + """ + input[0] = [ + [ id:'test', strandedness:'forward' ], // meta map + [ file(params.test_data['sarscov2']['illumina']['test_paired_end_sorted_bam'], checkIfExists: true) ] + ] + input[1] = [] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out.transcript_gtf).match("fs_transcript_gtf") }, + { assert snapshot(process.out.abundance).match("fs_abundance") }, + { assert snapshot(process.out.versions).match("fs_versions") } + ) + } + } + + test("sarscov2 [bam] - forward strandedness + reference annotation") { + + when { + process { + """ + input[0] = [ + [ id:'test', strandedness:'forward' ], // meta map + [ file(params.test_data['sarscov2']['illumina']['test_paired_end_sorted_bam'], checkIfExists: true) ] + ] + input[1] = file(params.test_data['sarscov2']['genome']['genome_gtf'], checkIfExists: true) + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out.transcript_gtf).match("fs_gtf_transcript_gtf") }, + { assert snapshot(process.out.abundance).match("fs_gtf_abundance") }, + { assert snapshot(process.out.ballgown).match("fs_gtf_ballgown") }, + { assert snapshot(process.out.versions).match("fs_gtf_versions") } + ) + } + } + + test("sarscov2 [bam] - reverse strandedness") { + + when { + process { + """ + input[0] = [ + [ id:'test', strandedness:'reverse' ], // meta map + [ file(params.test_data['sarscov2']['illumina']['test_paired_end_sorted_bam'], checkIfExists: true) ] + ] + input[1] = [] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out.transcript_gtf).match("rs_transcript_gtf") }, + { assert snapshot(process.out.abundance).match("rs_abundance") }, + { assert snapshot(process.out.versions).match("rs_versions") } + ) + } + } + + test("sarscov2 [bam] - reverse strandedness + reference annotation") { + + when { + process { + """ + input[0] = [ + [ id:'test', strandedness:'reverse' ], // meta map + [ file(params.test_data['sarscov2']['illumina']['test_paired_end_sorted_bam'], checkIfExists: true) ] + ] + input[1] = file(params.test_data['sarscov2']['genome']['genome_gtf'], checkIfExists: true) + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out.transcript_gtf).match("rs_gtf_transcript_gtf") }, + { assert snapshot(process.out.abundance).match("rs_gtf_abundance") }, + { assert snapshot(process.out.ballgown).match("rs_gtf_ballgown") }, + { assert snapshot(process.out.versions).match("rs_gtf_versions") } + ) + } + } +} diff --git a/modules/nf-core/stringtie/stringtie/tests/main.nf.test.snap b/modules/nf-core/stringtie/stringtie/tests/main.nf.test.snap new file mode 100644 index 000000000..bf7516364 --- /dev/null +++ b/modules/nf-core/stringtie/stringtie/tests/main.nf.test.snap @@ -0,0 +1,186 @@ +{ + "fs_abundance": { + "content": [ + [ + [ + { + "id": "test", + "strandedness": "forward" + }, + "test.gene.abundance.txt:md5,d6f5c8cadb8458f1df0427cf790246e3" + ] + ] + ], + "timestamp": "2023-11-23T13:55:41.032044613" + }, + "fs_transcript_gtf": { + "content": [ + [ + [ + { + "id": "test", + "strandedness": "forward" + }, + "test.transcripts.gtf:md5,569137af5be452413086b50653a97203" + ] + ] + ], + "timestamp": "2023-11-23T13:55:41.017978904" + }, + "rs_abundance": { + "content": [ + [ + [ + { + "id": "test", + "strandedness": "reverse" + }, + "test.gene.abundance.txt:md5,d6f5c8cadb8458f1df0427cf790246e3" + ] + ] + ], + "timestamp": "2023-11-23T13:56:13.601112933" + }, + "fs_gtf_versions": { + "content": [ + [ + "versions.yml:md5,3410e8ac349d18c85ddee89337851d38" + ] + ], + "timestamp": "2023-11-23T13:56:00.523797974" + }, + "fs_gtf_transcript_gtf": { + "content": [ + [ + [ + { + "id": "test", + "strandedness": "forward" + }, + "test.transcripts.gtf:md5,f56cf8aba2c4a5673bc7963ba5f12d04" + ] + ] + ], + "timestamp": "2023-11-23T13:56:00.475164879" + }, + "rs_versions": { + "content": [ + [ + "versions.yml:md5,3410e8ac349d18c85ddee89337851d38" + ] + ], + "timestamp": "2023-11-23T13:56:13.623892691" + }, + "rs_gtf_transcript_gtf": { + "content": [ + [ + [ + { + "id": "test", + "strandedness": "reverse" + }, + "test.transcripts.gtf:md5,bb346053a8c156b803b055133376c7fa" + ] + ] + ], + "timestamp": "2023-11-23T13:56:22.693599559" + }, + "fs_gtf_abundance": { + "content": [ + [ + [ + { + "id": "test", + "strandedness": "forward" + }, + "test.gene.abundance.txt:md5,7d8bce7f2a922e367cedccae7267c22e" + ] + ] + ], + "timestamp": "2023-11-23T13:56:00.482135418" + }, + "rs_gtf_ballgown": { + "content": [ + [ + [ + { + "id": "test", + "strandedness": "reverse" + }, + [ + "e2t.ctab:md5,e981c0038295ae54b63cedb1083f1540", + "e_data.ctab:md5,879b6696029d19c4737b562e9d149218", + "i2t.ctab:md5,8a117c8aa4334b4c2d4711932b006fb4", + "i_data.ctab:md5,be3abe09740603213f83d50dcf81427f", + "t_data.ctab:md5,3b66c065da73ae0dd41cc332eff6a818" + ] + ] + ] + ], + "timestamp": "2023-11-23T13:56:22.715698347" + }, + "rs_transcript_gtf": { + "content": [ + [ + [ + { + "id": "test", + "strandedness": "reverse" + }, + "test.transcripts.gtf:md5,31c34aec2bf36bb0ea3c16c2afeeeb1f" + ] + ] + ], + "timestamp": "2023-11-23T13:56:13.590054035" + }, + "rs_gtf_versions": { + "content": [ + [ + "versions.yml:md5,3410e8ac349d18c85ddee89337851d38" + ] + ], + "timestamp": "2023-11-23T13:56:22.725513476" + }, + "fs_gtf_ballgown": { + "content": [ + [ + [ + { + "id": "test", + "strandedness": "forward" + }, + [ + "e2t.ctab:md5,e981c0038295ae54b63cedb1083f1540", + "e_data.ctab:md5,6b4cf69bc03f3f69890f972a0e8b7471", + "i2t.ctab:md5,8a117c8aa4334b4c2d4711932b006fb4", + "i_data.ctab:md5,be3abe09740603213f83d50dcf81427f", + "t_data.ctab:md5,3b66c065da73ae0dd41cc332eff6a818" + ] + ] + ] + ], + "timestamp": "2023-11-23T13:56:00.494299817" + }, + "fs_versions": { + "content": [ + [ + "versions.yml:md5,3410e8ac349d18c85ddee89337851d38" + ] + ], + "timestamp": "2023-11-23T13:55:41.049417582" + }, + "rs_gtf_abundance": { + "content": [ + [ + [ + { + "id": "test", + "strandedness": "reverse" + }, + "test.gene.abundance.txt:md5,7385b870b955dae2c2ab78a70cf05cce" + ] + ] + ], + "timestamp": "2023-11-23T13:56:22.701059059" + } +} diff --git a/modules/nf-core/stringtie/stringtie/tests/tags.yml b/modules/nf-core/stringtie/stringtie/tests/tags.yml new file mode 100644 index 000000000..da9b051c3 --- /dev/null +++ b/modules/nf-core/stringtie/stringtie/tests/tags.yml @@ -0,0 +1,2 @@ +stringtie/stringtie: + - modules/nf-core/stringtie/stringtie/** diff --git a/modules/nf-core/subread/featurecounts/environment.yml b/modules/nf-core/subread/featurecounts/environment.yml new file mode 100644 index 000000000..ca19439d7 --- /dev/null +++ b/modules/nf-core/subread/featurecounts/environment.yml @@ -0,0 +1,7 @@ +name: subread_featurecounts +channels: + - conda-forge + - bioconda + - defaults +dependencies: + - bioconda::subread=2.0.1 diff --git a/modules/nf-core/subread/featurecounts/main.nf b/modules/nf-core/subread/featurecounts/main.nf index a524b92f1..209799622 100644 --- a/modules/nf-core/subread/featurecounts/main.nf +++ b/modules/nf-core/subread/featurecounts/main.nf @@ -2,7 +2,7 @@ process SUBREAD_FEATURECOUNTS { tag "$meta.id" label 'process_medium' - conda "bioconda::subread=2.0.1" + conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/subread:2.0.1--hed695b0_0' : 'biocontainers/subread:2.0.1--hed695b0_0' }" diff --git a/modules/nf-core/subread/featurecounts/meta.yml b/modules/nf-core/subread/featurecounts/meta.yml index cf02f1ea7..38a379456 100644 --- a/modules/nf-core/subread/featurecounts/meta.yml +++ b/modules/nf-core/subread/featurecounts/meta.yml @@ -5,7 +5,6 @@ keywords: - fasta - genome - reference - tools: - featurecounts: description: featureCounts is a highly efficient general-purpose read summarization program that counts mapped reads for genomic features such as genes, exons, promoter, gene bodies, genomic bins and chromosomal locations. It can be used to count both RNA-seq and genomic DNA-seq reads. @@ -13,7 +12,6 @@ tools: documentation: http://bioinf.wehi.edu.au/subread-package/SubreadUsersGuide.pdf doi: "10.1093/bioinformatics/btt656" licence: ["GPL v3"] - input: - meta: type: map @@ -28,7 +26,6 @@ input: type: file description: Genomic features annotation in GTF or SAF pattern: "*.{gtf,saf}" - output: - meta: type: map @@ -47,6 +44,7 @@ output: type: file description: File containing software versions pattern: "versions.yml" - authors: - "@ntoda03" +maintainers: + - "@ntoda03" diff --git a/modules/nf-core/subread/featurecounts/tests/main.nf.test b/modules/nf-core/subread/featurecounts/tests/main.nf.test new file mode 100644 index 000000000..f9457dbc4 --- /dev/null +++ b/modules/nf-core/subread/featurecounts/tests/main.nf.test @@ -0,0 +1,80 @@ +nextflow_process { + + name "Test Process SUBREAD_FEATURECOUNTS" + script "../main.nf" + process "SUBREAD_FEATURECOUNTS" + config "./nextflow.config" + tag "modules" + tag "modules_nfcore" + tag "subread" + tag "subread/featurecounts" + + test("sarscov2 [bam] - forward") { + + when { + process { + """ + input[0] = [ [ id:'test', single_end:true, strandedness:'forward' ], // meta map + file(params.test_data['sarscov2']['illumina']['test_single_end_bam'], checkIfExists: true), + file(params.test_data['sarscov2']['genome']['genome_gtf'], checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out.counts).match("forward_counts") }, + { assert snapshot(process.out.summary).match("forward_summary") }, + { assert snapshot(process.out.versions).match("forward_versions") } + ) + } + } + + test("sarscov2 [bam] - reverse") { + + when { + process { + """ + input[0] = [ [ id:'test', single_end:true, strandedness:'reverse' ], // meta map + file(params.test_data['sarscov2']['illumina']['test_single_end_bam'], checkIfExists: true), + file(params.test_data['sarscov2']['genome']['genome_gtf'], checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out.counts).match("reverse_counts") }, + { assert snapshot(process.out.summary).match("reverse_summary") }, + { assert snapshot(process.out.versions).match("reverse_versions") } + ) + } + } + + test("sarscov2 [bam] - unstranded") { + + when { + process { + """ + input[0] = [ [ id:'test', single_end:true, strandedness:'unstranded' ], // meta map + file(params.test_data['sarscov2']['illumina']['test_single_end_bam'], checkIfExists: true), + file(params.test_data['sarscov2']['genome']['genome_gtf'], checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out.counts).match("unstranded_counts") }, + { assert snapshot(process.out.summary).match("unstranded_summary") }, + { assert snapshot(process.out.versions).match("unstranded_versions") } + ) + } + } +} diff --git a/modules/nf-core/subread/featurecounts/tests/main.nf.test.snap b/modules/nf-core/subread/featurecounts/tests/main.nf.test.snap new file mode 100644 index 000000000..ad5524f65 --- /dev/null +++ b/modules/nf-core/subread/featurecounts/tests/main.nf.test.snap @@ -0,0 +1,116 @@ +{ + "forward_counts": { + "content": [ + [ + [ + { + "id": "test", + "single_end": true, + "strandedness": "forward" + }, + "test.featureCounts.txt:md5,0012df4c0a0e47eec1440017ab34f75f" + ] + ] + ], + "timestamp": "2023-11-23T15:50:10.685863663" + }, + "unstranded_counts": { + "content": [ + [ + [ + { + "id": "test", + "single_end": true, + "strandedness": "unstranded" + }, + "test.featureCounts.txt:md5,3307d31b44a5d6bb3389786bb8f4e91f" + ] + ] + ], + "timestamp": "2023-11-23T15:50:38.67903701" + }, + "reverse_summary": { + "content": [ + [ + [ + { + "id": "test", + "single_end": true, + "strandedness": "reverse" + }, + "test.featureCounts.txt.summary:md5,7cfa30ad678b9bc1bc63afbb0281547b" + ] + ] + ], + "timestamp": "2023-11-23T15:50:25.168206514" + }, + "reverse_counts": { + "content": [ + [ + [ + { + "id": "test", + "single_end": true, + "strandedness": "reverse" + }, + "test.featureCounts.txt:md5,8175816b8260ed444d59232bd7e7120b" + ] + ] + ], + "timestamp": "2023-11-23T15:50:25.160010804" + }, + "forward_summary": { + "content": [ + [ + [ + { + "id": "test", + "single_end": true, + "strandedness": "forward" + }, + "test.featureCounts.txt.summary:md5,8f602ff9a8ef467af43294e80b367cdf" + ] + ] + ], + "timestamp": "2023-11-23T15:50:10.699024934" + }, + "forward_versions": { + "content": [ + [ + "versions.yml:md5,c2c0903b93c93d9afd2667052b9ee726" + ] + ], + "timestamp": "2023-11-23T15:50:10.704797013" + }, + "unstranded_summary": { + "content": [ + [ + [ + { + "id": "test", + "single_end": true, + "strandedness": "unstranded" + }, + "test.featureCounts.txt.summary:md5,23164b79f9f23f11c82820db61a35560" + ] + ] + ], + "timestamp": "2023-11-23T15:50:38.68776235" + }, + "reverse_versions": { + "content": [ + [ + "versions.yml:md5,c2c0903b93c93d9afd2667052b9ee726" + ] + ], + "timestamp": "2023-11-23T15:50:25.175265594" + }, + "unstranded_versions": { + "content": [ + [ + "versions.yml:md5,c2c0903b93c93d9afd2667052b9ee726" + ] + ], + "timestamp": "2023-11-23T15:50:38.69390501" + } +} \ No newline at end of file diff --git a/modules/nf-core/subread/featurecounts/tests/nextflow.config b/modules/nf-core/subread/featurecounts/tests/nextflow.config new file mode 100644 index 000000000..d9fd4fd57 --- /dev/null +++ b/modules/nf-core/subread/featurecounts/tests/nextflow.config @@ -0,0 +1,9 @@ +process { + + publishDir = { "${params.outdir}/${task.process.tokenize(':')[-1].tokenize('_')[0].toLowerCase()}" } + + withName: SUBREAD_FEATURECOUNTS { + ext.args = '-t CDS' + } + +} diff --git a/modules/nf-core/subread/featurecounts/tests/tags.yml b/modules/nf-core/subread/featurecounts/tests/tags.yml new file mode 100644 index 000000000..6d2534bf4 --- /dev/null +++ b/modules/nf-core/subread/featurecounts/tests/tags.yml @@ -0,0 +1,2 @@ +subread/featurecounts: + - modules/nf-core/subread/featurecounts/** diff --git a/modules/nf-core/trimgalore/environment.yml b/modules/nf-core/trimgalore/environment.yml new file mode 100644 index 000000000..6cd0f51b3 --- /dev/null +++ b/modules/nf-core/trimgalore/environment.yml @@ -0,0 +1,7 @@ +name: trimgalore +channels: + - conda-forge + - bioconda + - defaults +dependencies: + - bioconda::trim-galore=0.6.7 diff --git a/modules/nf-core/trimgalore/main.nf b/modules/nf-core/trimgalore/main.nf index dcb77ae7b..24ead8714 100644 --- a/modules/nf-core/trimgalore/main.nf +++ b/modules/nf-core/trimgalore/main.nf @@ -2,7 +2,7 @@ process TRIMGALORE { tag "$meta.id" label 'process_high' - conda "bioconda::trim-galore=0.6.7" + conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/trim-galore:0.6.7--hdfd78af_0' : 'biocontainers/trim-galore:0.6.7--hdfd78af_0' }" diff --git a/modules/nf-core/trimgalore/meta.yml b/modules/nf-core/trimgalore/meta.yml index f84c4d771..e649088ce 100644 --- a/modules/nf-core/trimgalore/meta.yml +++ b/modules/nf-core/trimgalore/meta.yml @@ -62,3 +62,7 @@ authors: - "@drpatelh" - "@ewels" - "@FelixKrueger" +maintainers: + - "@drpatelh" + - "@ewels" + - "@FelixKrueger" diff --git a/modules/nf-core/trimgalore/tests/main.nf.test b/modules/nf-core/trimgalore/tests/main.nf.test new file mode 100644 index 000000000..bc6812ccd --- /dev/null +++ b/modules/nf-core/trimgalore/tests/main.nf.test @@ -0,0 +1,105 @@ +nextflow_process { + + name "Test Process TRIMGALORE" + script "../main.nf" + process "TRIMGALORE" + tag "modules" + tag "modules_nfcore" + tag "trimgalore" + + test("test_trimgalore_single_end") { + + when { + params { + outdir = "$outputDir" + } + process { + """ + input[0] = [ [ id:'test', single_end:true ], // meta map + [ file(params.test_data['sarscov2']['illumina']['test_1_fastq_gz'], checkIfExists: true) ] + ] + """ + } + } + + then { + def read_lines = ["@ERR5069949.2151832 NS500628:121:HK3MMAFX2:2:21208:10793:15304/1", + "TCATAAACCAAAGCACTCACAGTGTCAACAATTTCAGCAGGACAACGCCGACAAGTTCCGAGGAACATGTCTGGACCTATAGTTTTCATAAGTCTACACACTGAATTGAAATATTCTGGTTCTAGTGTGCCCTTAGTTAGCAATGTGCGT", + "AAAAAAEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEAAEEEEAEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEAAEEEEE + { assert path(process.out.reads.get(0).get(1)).linesGzip.contains(read_line) } + } + }, + { report1_lines.each { report1_line -> + { assert path(process.out.log.get(0).get(1)).getText().contains(report1_line) } + } + } + ) + } + } + + test("test_trimgalore_paired_end") { + + when { + params { + outdir = "$outputDir" + } + process { + """ + input[0] = [ [ id:'test', single_end:false ], // meta map + [ file(params.test_data['sarscov2']['illumina']['test_1_fastq_gz'], checkIfExists: true), + file(params.test_data['sarscov2']['illumina']['test_2_fastq_gz'], checkIfExists: true) ] + ] + """ + } + } + + then { + def read1_lines = ["@ERR5069949.2151832 NS500628:121:HK3MMAFX2:2:21208:10793:15304/1", + "TCATAAACCAAAGCACTCACAGTGTCAACAATTTCAGCAGGACAACGCCGACAAGTTCCGAGGAACATGTCTGGACCTATAGTTTTCATAAGTCTACACACTGAATTGAAATATTCTGGTTCTAGTGTGCCCTTAGTTAGCAATGTGCGT", + "AAAAAAEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEAAEEEEAEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEAAEEEEE + { assert path(process.out.reads.get(0).get(1).get(0)).linesGzip.contains(read1_line) } + } + }, + { read2_lines.each { read2_line -> + { assert path(process.out.reads.get(0).get(1).get(1)).linesGzip.contains(read2_line) } + } + }, + { report1_lines.each { report1_line -> + { assert path(process.out.log.get(0).get(1).get(0)).getText().contains(report1_line) } + } + }, + { report2_lines.each { report2_line -> + { assert path(process.out.log.get(0).get(1).get(1)).getText().contains(report2_line) } + } + } + ) + } + } +} diff --git a/modules/nf-core/trimgalore/tests/main.nf.test.snap b/modules/nf-core/trimgalore/tests/main.nf.test.snap new file mode 100644 index 000000000..84feacca2 --- /dev/null +++ b/modules/nf-core/trimgalore/tests/main.nf.test.snap @@ -0,0 +1,148 @@ +{ + "test_trimgalore_single_end": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": true + }, + "test_trimmed.fq.gz:md5,e0a7516b8ea8d6467d6306acb2cd13c4" + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": true + }, + "test.fastq.gz_trimming_report.txt:md5,a1ab3958205f1ddf48af623242b5b429" + ] + ], + "2": [ + + ], + "3": [ + + ], + "4": [ + + ], + "5": [ + "versions.yml:md5,47d966cbb31c80eb8f7fe860d55659b7" + ], + "html": [ + + ], + "log": [ + [ + { + "id": "test", + "single_end": true + }, + "test.fastq.gz_trimming_report.txt:md5,a1ab3958205f1ddf48af623242b5b429" + ] + ], + "reads": [ + [ + { + "id": "test", + "single_end": true + }, + "test_trimmed.fq.gz:md5,e0a7516b8ea8d6467d6306acb2cd13c4" + ] + ], + "unpaired": [ + + ], + "versions": [ + "versions.yml:md5,47d966cbb31c80eb8f7fe860d55659b7" + ], + "zip": [ + + ] + } + ], + "timestamp": "2023-10-17T15:24:57.782141441" + }, + "test_trimgalore_paired_end": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test_1_val_1.fq.gz:md5,e0a7516b8ea8d6467d6306acb2cd13c4", + "test_2_val_2.fq.gz:md5,f3d61189e6d10202da7b8686f1dbb71b" + ] + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test_1.fastq.gz_trimming_report.txt:md5,315d40465412f9909bbaabf52269274d", + "test_2.fastq.gz_trimming_report.txt:md5,34436303da1c78811103427a2fb57f7b" + ] + ] + ], + "2": [ + + ], + "3": [ + + ], + "4": [ + + ], + "5": [ + "versions.yml:md5,47d966cbb31c80eb8f7fe860d55659b7" + ], + "html": [ + + ], + "log": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test_1.fastq.gz_trimming_report.txt:md5,315d40465412f9909bbaabf52269274d", + "test_2.fastq.gz_trimming_report.txt:md5,34436303da1c78811103427a2fb57f7b" + ] + ] + ], + "reads": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test_1_val_1.fq.gz:md5,e0a7516b8ea8d6467d6306acb2cd13c4", + "test_2_val_2.fq.gz:md5,f3d61189e6d10202da7b8686f1dbb71b" + ] + ] + ], + "unpaired": [ + + ], + "versions": [ + "versions.yml:md5,47d966cbb31c80eb8f7fe860d55659b7" + ], + "zip": [ + + ] + } + ], + "timestamp": "2023-10-17T15:25:08.513589909" + } +} \ No newline at end of file diff --git a/modules/nf-core/trimgalore/tests/tags.yml b/modules/nf-core/trimgalore/tests/tags.yml new file mode 100644 index 000000000..e9937691a --- /dev/null +++ b/modules/nf-core/trimgalore/tests/tags.yml @@ -0,0 +1,2 @@ +trimgalore: + - modules/nf-core/trimgalore/** diff --git a/modules/nf-core/ucsc/bedclip/environment.yml b/modules/nf-core/ucsc/bedclip/environment.yml new file mode 100644 index 000000000..571dc2749 --- /dev/null +++ b/modules/nf-core/ucsc/bedclip/environment.yml @@ -0,0 +1,7 @@ +name: ucsc_bedclip +channels: + - conda-forge + - bioconda + - defaults +dependencies: + - bioconda::ucsc-bedclip=377 diff --git a/modules/nf-core/ucsc/bedclip/main.nf b/modules/nf-core/ucsc/bedclip/main.nf index 4bad9a399..28c85ad0e 100755 --- a/modules/nf-core/ucsc/bedclip/main.nf +++ b/modules/nf-core/ucsc/bedclip/main.nf @@ -3,7 +3,7 @@ process UCSC_BEDCLIP { label 'process_medium' // WARN: Version information not provided by tool on CLI. Please update version string below when bumping container versions. - conda "bioconda::ucsc-bedclip=377" + conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/ucsc-bedclip:377--h0b8a92a_2' : 'biocontainers/ucsc-bedclip:377--h0b8a92a_2' }" diff --git a/modules/nf-core/ucsc/bedclip/meta.yml b/modules/nf-core/ucsc/bedclip/meta.yml old mode 100755 new mode 100644 index cc5d9d715..2467a28f2 --- a/modules/nf-core/ucsc/bedclip/meta.yml +++ b/modules/nf-core/ucsc/bedclip/meta.yml @@ -9,7 +9,6 @@ tools: description: Remove lines from bed file that refer to off-chromosome locations. homepage: http://hgdownload.cse.ucsc.edu/admin/exe/ licence: ["varies; see http://genome.ucsc.edu/license"] - input: - meta: type: map @@ -20,7 +19,6 @@ input: type: file description: bedGraph file pattern: "*.{bedgraph}" - output: - meta: type: map @@ -35,6 +33,7 @@ output: type: file description: bedGraph file pattern: "*.{bedgraph}" - authors: - "@drpatelh" +maintainers: + - "@drpatelh" diff --git a/modules/nf-core/ucsc/bedclip/tests/main.nf.test b/modules/nf-core/ucsc/bedclip/tests/main.nf.test new file mode 100644 index 000000000..e7b3aef11 --- /dev/null +++ b/modules/nf-core/ucsc/bedclip/tests/main.nf.test @@ -0,0 +1,33 @@ +nextflow_process { + + name "Test Process UCSC_BEDCLIP" + script "../main.nf" + process "UCSC_BEDCLIP" + tag "modules" + tag "modules_nfcore" + tag "ucsc" + tag "ucsc/bedclip" + + test("sarscov2") { + config "./nextflow.config" + + when { + process { + """ + input[0] = Channel.of([ + [ id:'test', single_end:false ], // meta map + file(params.test_data['sarscov2']['illumina']['test_bedgraph'], checkIfExists: true) + ]) + input[1] = Channel.of([file(params.test_data['sarscov2']['genome']['genome_sizes'], checkIfExists: true)]) + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } +} \ No newline at end of file diff --git a/modules/nf-core/ucsc/bedclip/tests/main.nf.test.snap b/modules/nf-core/ucsc/bedclip/tests/main.nf.test.snap new file mode 100644 index 000000000..10cd1fc0a --- /dev/null +++ b/modules/nf-core/ucsc/bedclip/tests/main.nf.test.snap @@ -0,0 +1,24 @@ +{ + "bedgraph": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test.clip.bedGraph:md5,e02395e1f7c593b3f79563067159ebc2" + ] + ] + ], + "timestamp": "2023-11-23T14:50:02.387801" + }, + "versions": { + "content": [ + [ + "versions.yml:md5,b92248ce2a138ad4d146ac0d9e71fb34" + ] + ], + "timestamp": "2023-11-23T14:50:02.407878" + } +} \ No newline at end of file diff --git a/modules/nf-core/ucsc/bedclip/tests/nextflow.config b/modules/nf-core/ucsc/bedclip/tests/nextflow.config new file mode 100644 index 000000000..13bce9a82 --- /dev/null +++ b/modules/nf-core/ucsc/bedclip/tests/nextflow.config @@ -0,0 +1,7 @@ +process { + + withName: UCSC_BEDCLIP { + ext.prefix = { "${meta.id}.clip" } + } + +} diff --git a/modules/nf-core/ucsc/bedclip/tests/tags.yml b/modules/nf-core/ucsc/bedclip/tests/tags.yml new file mode 100644 index 000000000..0fcc90e32 --- /dev/null +++ b/modules/nf-core/ucsc/bedclip/tests/tags.yml @@ -0,0 +1,2 @@ +ucsc/bedclip: + - modules/nf-core/ucsc/bedclip/** diff --git a/modules/nf-core/ucsc/bedgraphtobigwig/environment.yml b/modules/nf-core/ucsc/bedgraphtobigwig/environment.yml new file mode 100644 index 000000000..f91e216f5 --- /dev/null +++ b/modules/nf-core/ucsc/bedgraphtobigwig/environment.yml @@ -0,0 +1,7 @@ +name: ucsc_bedgraphtobigwig +channels: + - conda-forge + - bioconda + - defaults +dependencies: + - bioconda::ucsc-bedgraphtobigwig=445 diff --git a/modules/nf-core/ucsc/bedgraphtobigwig/main.nf b/modules/nf-core/ucsc/bedgraphtobigwig/main.nf index 06bb47099..bff0b00a9 100644 --- a/modules/nf-core/ucsc/bedgraphtobigwig/main.nf +++ b/modules/nf-core/ucsc/bedgraphtobigwig/main.nf @@ -3,7 +3,7 @@ process UCSC_BEDGRAPHTOBIGWIG { label 'process_single' // WARN: Version information not provided by tool on CLI. Please update version string below when bumping container versions. - conda "bioconda::ucsc-bedgraphtobigwig=445" + conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/ucsc-bedgraphtobigwig:445--h954228d_0' : 'biocontainers/ucsc-bedgraphtobigwig:445--h954228d_0' }" diff --git a/modules/nf-core/ucsc/bedgraphtobigwig/meta.yml b/modules/nf-core/ucsc/bedgraphtobigwig/meta.yml index 416c91e07..a60118abe 100755 --- a/modules/nf-core/ucsc/bedgraphtobigwig/meta.yml +++ b/modules/nf-core/ucsc/bedgraphtobigwig/meta.yml @@ -12,7 +12,6 @@ tools: homepage: http://hgdownload.cse.ucsc.edu/admin/exe/ documentation: https://genome.ucsc.edu/goldenPath/help/bigWig.html licence: ["varies; see http://genome.ucsc.edu/license"] - input: - meta: type: map @@ -27,7 +26,6 @@ input: type: file description: chromosome sizes file pattern: "*.{sizes}" - output: - meta: type: map @@ -42,6 +40,7 @@ output: type: file description: bigWig file pattern: "*.{bigWig}" - authors: - "@drpatelh" +maintainers: + - "@drpatelh" diff --git a/modules/nf-core/ucsc/bedgraphtobigwig/tests/main.nf.test b/modules/nf-core/ucsc/bedgraphtobigwig/tests/main.nf.test new file mode 100644 index 000000000..6209ddaf5 --- /dev/null +++ b/modules/nf-core/ucsc/bedgraphtobigwig/tests/main.nf.test @@ -0,0 +1,36 @@ +nextflow_process { + + name "Test Process UCSC_BEDGRAPHTOBIGWIG" + script "../main.nf" + process "UCSC_BEDGRAPHTOBIGWIG" + tag "modules" + tag "modules_nfcore" + tag "ucsc" + tag "ucsc/bedgraphtobigwig" + + test("Should run without failures") { + + when { + params { + outdir = "$outputDir" + } + process { + """ + input[0] = [ [ id:'test' ], // meta map + [ file(params.test_data['sarscov2']['illumina']['test_bedgraph'], checkIfExists: true) ] + ] + input[1] = file(params.test_data['sarscov2']['genome']['genome_sizes'], checkIfExists: true) + """ + } + } + + then { + assertAll ( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + +} diff --git a/modules/nf-core/ucsc/bedgraphtobigwig/tests/main.nf.test.snap b/modules/nf-core/ucsc/bedgraphtobigwig/tests/main.nf.test.snap new file mode 100644 index 000000000..6b0de0ff3 --- /dev/null +++ b/modules/nf-core/ucsc/bedgraphtobigwig/tests/main.nf.test.snap @@ -0,0 +1,31 @@ +{ + "Should run without failures": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.bigWig:md5,910ecc7f57e3bbd5fac5a8edba4f615d" + ] + ], + "1": [ + "versions.yml:md5,93b027527145a243903a3c687c3453b8" + ], + "bigwig": [ + [ + { + "id": "test" + }, + "test.bigWig:md5,910ecc7f57e3bbd5fac5a8edba4f615d" + ] + ], + "versions": [ + "versions.yml:md5,93b027527145a243903a3c687c3453b8" + ] + } + ], + "timestamp": "2023-10-18T04:06:47.826602" + } +} \ No newline at end of file diff --git a/modules/nf-core/ucsc/bedgraphtobigwig/tests/tags.yml b/modules/nf-core/ucsc/bedgraphtobigwig/tests/tags.yml new file mode 100644 index 000000000..481e8b8bf --- /dev/null +++ b/modules/nf-core/ucsc/bedgraphtobigwig/tests/tags.yml @@ -0,0 +1,2 @@ +ucsc/bedgraphtobigwig: + - modules/nf-core/ucsc/bedgraphtobigwig/** diff --git a/modules/nf-core/umitools/dedup/environment.yml b/modules/nf-core/umitools/dedup/environment.yml new file mode 100644 index 000000000..f443735f4 --- /dev/null +++ b/modules/nf-core/umitools/dedup/environment.yml @@ -0,0 +1,7 @@ +name: umitools_dedup +channels: + - conda-forge + - bioconda + - defaults +dependencies: + - bioconda::umi_tools=1.1.4 diff --git a/modules/nf-core/umitools/dedup/main.nf b/modules/nf-core/umitools/dedup/main.nf index 824ebeeb3..64ab8f98e 100644 --- a/modules/nf-core/umitools/dedup/main.nf +++ b/modules/nf-core/umitools/dedup/main.nf @@ -2,7 +2,7 @@ process UMITOOLS_DEDUP { tag "$meta.id" label "process_medium" - conda "bioconda::umi_tools=1.1.4" + conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/umi_tools:1.1.4--py38hbff2b2d_1' : 'biocontainers/umi_tools:1.1.4--py38hbff2b2d_1' }" diff --git a/modules/nf-core/umitools/dedup/meta.yml b/modules/nf-core/umitools/dedup/meta.yml index 534d4c6b0..38d3fd465 100644 --- a/modules/nf-core/umitools/dedup/meta.yml +++ b/modules/nf-core/umitools/dedup/meta.yml @@ -7,8 +7,8 @@ keywords: tools: - umi_tools: description: > - UMI-tools contains tools for dealing with Unique Molecular Identifiers (UMIs)/Random Molecular Tags (RMTs) - and single cell RNA-Seq cell barcodes + UMI-tools contains tools for dealing with Unique Molecular Identifiers (UMIs)/Random Molecular Tags (RMTs) and single cell RNA-Seq cell barcodes + documentation: https://umi-tools.readthedocs.io/en/latest/ license: ["MIT"] input: @@ -61,8 +61,11 @@ output: type: file description: File containing software versions pattern: "versions.yml" - authors: - "@drpatelh" - "@grst" - "@klkeys" +maintainers: + - "@drpatelh" + - "@grst" + - "@klkeys" diff --git a/modules/nf-core/umitools/extract/environment.yml b/modules/nf-core/umitools/extract/environment.yml new file mode 100644 index 000000000..7d08ac0ec --- /dev/null +++ b/modules/nf-core/umitools/extract/environment.yml @@ -0,0 +1,7 @@ +name: umitools_extract +channels: + - conda-forge + - bioconda + - defaults +dependencies: + - bioconda::umi_tools=1.1.4 diff --git a/modules/nf-core/umitools/extract/main.nf b/modules/nf-core/umitools/extract/main.nf index 5ffe4eb76..4bd79e79f 100644 --- a/modules/nf-core/umitools/extract/main.nf +++ b/modules/nf-core/umitools/extract/main.nf @@ -3,7 +3,7 @@ process UMITOOLS_EXTRACT { label "process_single" label "process_long" - conda "bioconda::umi_tools=1.1.4" + conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/umi_tools:1.1.4--py38hbff2b2d_1' : 'biocontainers/umi_tools:1.1.4--py38hbff2b2d_1' }" diff --git a/modules/nf-core/umitools/extract/meta.yml b/modules/nf-core/umitools/extract/meta.yml index db64a0f88..7695b2717 100644 --- a/modules/nf-core/umitools/extract/meta.yml +++ b/modules/nf-core/umitools/extract/meta.yml @@ -1,15 +1,16 @@ name: umitools_extract description: Extracts UMI barcode from a read and add it to the read name, leaving any sample barcode in place keywords: - - umitools + - UMI + - barcode - extract + - umitools tools: - umi_tools: description: > - UMI-tools contains tools for dealing with Unique Molecular Identifiers (UMIs)/Random Molecular Tags (RMTs) - and single cell RNA-Seq cell barcodes + UMI-tools contains tools for dealing with Unique Molecular Identifiers (UMIs)/Random Molecular Tags (RMTs) and single cell RNA-Seq cell barcodes documentation: https://umi-tools.readthedocs.io/en/latest/ - license: ["MIT"] + license: "MIT" input: - meta: type: map @@ -29,9 +30,7 @@ output: - reads: type: file description: > - Extracted FASTQ files. | - For single-end reads, pattern is \${prefix}.umi_extract.fastq.gz. | - For paired-end reads, pattern is \${prefix}.umi_extract_{1,2}.fastq.gz. + Extracted FASTQ files. | For single-end reads, pattern is \${prefix}.umi_extract.fastq.gz. | For paired-end reads, pattern is \${prefix}.umi_extract_{1,2}.fastq.gz. pattern: "*.{fastq.gz}" - log: type: file @@ -41,7 +40,9 @@ output: type: file description: File containing software versions pattern: "versions.yml" - authors: - "@drpatelh" - "@grst" +maintainers: + - "@drpatelh" + - "@grst" diff --git a/modules/nf-core/umitools/extract/tests/main.nf.test b/modules/nf-core/umitools/extract/tests/main.nf.test new file mode 100644 index 000000000..22242d1df --- /dev/null +++ b/modules/nf-core/umitools/extract/tests/main.nf.test @@ -0,0 +1,35 @@ +nextflow_process { + + name "Test Process UMITOOLS_EXTRACT" + script "../main.nf" + process "UMITOOLS_EXTRACT" + config "./nextflow.config" + tag "modules_nfcore" + tag "modules" + tag "umitools" + tag "umitools/extract" + + test("Should run without failures") { + + when { + params { + outdir = "$outputDir" + } + process { + """ + input[0] = [ [ id:'test', single_end:true ], // meta map + [ file(params.test_data['sarscov2']['illumina']['test_1_fastq_gz'], checkIfExists: true) ] + ] + """ + } + } + + then { + assertAll ( + { assert process.success }, + { assert snapshot(process.out.versions).match("versions") } + ) + } + + } +} \ No newline at end of file diff --git a/modules/nf-core/umitools/extract/tests/main.nf.test.snap b/modules/nf-core/umitools/extract/tests/main.nf.test.snap new file mode 100644 index 000000000..6d5944f1d --- /dev/null +++ b/modules/nf-core/umitools/extract/tests/main.nf.test.snap @@ -0,0 +1,10 @@ +{ + "versions": { + "content": [ + [ + "versions.yml:md5,5a18da2d3a5a4de15e7aaae9082d7abb" + ] + ], + "timestamp": "2023-12-08T09:41:43.540658352" + } +} \ No newline at end of file diff --git a/modules/nf-core/umitools/extract/tests/nextflow.config b/modules/nf-core/umitools/extract/tests/nextflow.config new file mode 100644 index 000000000..c866f5a00 --- /dev/null +++ b/modules/nf-core/umitools/extract/tests/nextflow.config @@ -0,0 +1,9 @@ +process { + + publishDir = { "${params.outdir}/${task.process.tokenize(':')[-1].tokenize('_')[0].toLowerCase()}" } + + withName: UMITOOLS_EXTRACT { + ext.args = '--bc-pattern="NNNN"' + } + +} diff --git a/modules/nf-core/umitools/extract/tests/tags.yml b/modules/nf-core/umitools/extract/tests/tags.yml new file mode 100644 index 000000000..c3fb23de4 --- /dev/null +++ b/modules/nf-core/umitools/extract/tests/tags.yml @@ -0,0 +1,2 @@ +umitools/extract: + - modules/nf-core/umitools/extract/** diff --git a/modules/nf-core/untar/environment.yml b/modules/nf-core/untar/environment.yml new file mode 100644 index 000000000..0c9cbb101 --- /dev/null +++ b/modules/nf-core/untar/environment.yml @@ -0,0 +1,11 @@ +name: untar + +channels: + - conda-forge + - bioconda + - defaults + +dependencies: + - conda-forge::grep=3.11 + - conda-forge::sed=4.7 + - conda-forge::tar=1.34 diff --git a/modules/nf-core/untar/main.nf b/modules/nf-core/untar/main.nf index 61461c391..8a75bb957 100644 --- a/modules/nf-core/untar/main.nf +++ b/modules/nf-core/untar/main.nf @@ -2,7 +2,7 @@ process UNTAR { tag "$archive" label 'process_single' - conda "conda-forge::sed=4.7 conda-forge::grep=3.11 conda-forge::tar=1.34" + conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/ubuntu:20.04' : 'nf-core/ubuntu:20.04' }" diff --git a/modules/nf-core/untar/meta.yml b/modules/nf-core/untar/meta.yml index db241a6e5..a9a2110f5 100644 --- a/modules/nf-core/untar/meta.yml +++ b/modules/nf-core/untar/meta.yml @@ -39,3 +39,8 @@ authors: - "@drpatelh" - "@matthdsm" - "@jfy133" +maintainers: + - "@joseespinosa" + - "@drpatelh" + - "@matthdsm" + - "@jfy133" diff --git a/modules/nf-core/untar/tests/main.nf.test b/modules/nf-core/untar/tests/main.nf.test new file mode 100644 index 000000000..679e83c78 --- /dev/null +++ b/modules/nf-core/untar/tests/main.nf.test @@ -0,0 +1,55 @@ +nextflow_process { + + name "Test Process UNTAR" + script "../main.nf" + process "UNTAR" + + tag "modules" + tag "modules_nfcore" + tag "untar" + + test("test_untar") { + + when { + params { + outdir = "$outputDir" + } + process { + """ + input[0] = [ [], file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/db/kraken2.tar.gz', checkIfExists: true) ] + """ + } + } + + then { + assertAll ( + { assert process.success }, + { assert snapshot(process.out.untar).match("test_untar") }, + ) + } + + } + + test("test_untar_onlyfiles") { + + when { + params { + outdir = "$outputDir" + } + process { + """ + input[0] = [ [], file(params.modules_testdata_base_path + 'generic/tar/hello.tar.gz', checkIfExists: true) ] + """ + } + } + + then { + assertAll ( + { assert process.success }, + { assert snapshot(process.out.untar).match("test_untar_onlyfiles") }, + ) + } + + } + +} diff --git a/modules/nf-core/untar/tests/main.nf.test.snap b/modules/nf-core/untar/tests/main.nf.test.snap new file mode 100644 index 000000000..ace425766 --- /dev/null +++ b/modules/nf-core/untar/tests/main.nf.test.snap @@ -0,0 +1,34 @@ +{ + "test_untar_onlyfiles": { + "content": [ + [ + [ + [ + + ], + [ + "hello.txt:md5,e59ff97941044f85df5297e1c302d260" + ] + ] + ] + ], + "timestamp": "2023-10-18T11:56:46.878844" + }, + "test_untar": { + "content": [ + [ + [ + [ + + ], + [ + "hash.k2d:md5,8b8598468f54a7087c203ad0190555d9", + "opts.k2d:md5,a033d00cf6759407010b21700938f543", + "taxo.k2d:md5,094d5891cdccf2f1468088855c214b2c" + ] + ] + ] + ], + "timestamp": "2023-10-18T11:56:08.16574" + } +} \ No newline at end of file diff --git a/modules/nf-core/untar/tests/tags.yml b/modules/nf-core/untar/tests/tags.yml new file mode 100644 index 000000000..feb6f15c0 --- /dev/null +++ b/modules/nf-core/untar/tests/tags.yml @@ -0,0 +1,2 @@ +untar: + - modules/nf-core/untar/** diff --git a/subworkflows/nf-core/bam_dedup_stats_samtools_umitools/meta.yml b/subworkflows/nf-core/bam_dedup_stats_samtools_umitools/meta.yml index f11e7ab6f..e655484e7 100644 --- a/subworkflows/nf-core/bam_dedup_stats_samtools_umitools/meta.yml +++ b/subworkflows/nf-core/bam_dedup_stats_samtools_umitools/meta.yml @@ -53,7 +53,9 @@ output: description: | Files containing software versions Structure: [ path(versions.yml) ] - authors: - "@drpatelh" - "@KamilMaliszArdigen" +maintainers: + - "@drpatelh" + - "@KamilMaliszArdigen" diff --git a/subworkflows/nf-core/bam_dedup_stats_samtools_umitools/tests/main.nf.test b/subworkflows/nf-core/bam_dedup_stats_samtools_umitools/tests/main.nf.test new file mode 100644 index 000000000..476e7320e --- /dev/null +++ b/subworkflows/nf-core/bam_dedup_stats_samtools_umitools/tests/main.nf.test @@ -0,0 +1,53 @@ +nextflow_workflow { + + name "Test Workflow BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS" + script "../main.nf" + workflow "BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS" + tag "subworkflows" + tag "subworkflows_nfcore" + tag "subworkflows/bam_dedup_stats_samtools_umitools" + tag "subworkflows/bam_stats_samtools" + tag "bam_dedup_stats_samtools_umitools" + tag "bam_stats_samtools" + tag "samtools" + tag "samtools/index" + tag "samtools/stats" + tag "samtools/idxstats" + tag "samtools/flagstat" + tag "umitools" + tag "umitools/dedup" + + test("sarscov2_bam_bai") { + + when { + params { + outdir = "$outputDir" + } + workflow { + """ + val_get_dedup_stats = false + + input[0] = Channel.of([ + [ id:'test'], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam.bai', checkIfExists: true) + ]) + input[1] = val_get_dedup_stats + """ + } + } + + then { + assertAll( + { assert workflow.success}, + { assert workflow.out.bam.get(0).get(1) ==~ ".*.bam"}, + { assert workflow.out.bai.get(0).get(1) ==~ ".*.bai"}, + { assert snapshot(workflow.out.stats).match("test_bam_dedup_stats_samtools_umitools_stats") }, + { assert snapshot(workflow.out.flagstat).match("test_bam_dedup_stats_samtools_umitools_flagstats") }, + { assert snapshot(workflow.out.idxstats).match("test_bam_dedup_stats_samtools_umitools_idxstats") } + ) + } + + } + +} diff --git a/subworkflows/nf-core/bam_dedup_stats_samtools_umitools/tests/main.nf.test.snap b/subworkflows/nf-core/bam_dedup_stats_samtools_umitools/tests/main.nf.test.snap new file mode 100644 index 000000000..036a63bbe --- /dev/null +++ b/subworkflows/nf-core/bam_dedup_stats_samtools_umitools/tests/main.nf.test.snap @@ -0,0 +1,41 @@ +{ + "test_bam_dedup_stats_samtools_umitools_idxstats": { + "content": [ + [ + [ + { + "id": "test" + }, + "test.idxstats:md5,1adb27b52d4d64b826f48b59d61dcd4d" + ] + ] + ], + "timestamp": "2023-11-06T09:58:40.394333937" + }, + "test_bam_dedup_stats_samtools_umitools_flagstats": { + "content": [ + [ + [ + { + "id": "test" + }, + "test.flagstat:md5,0bb716e40fae381b97484b58e0b16efe" + ] + ] + ], + "timestamp": "2023-11-06T09:58:40.385185447" + }, + "test_bam_dedup_stats_samtools_umitools_stats": { + "content": [ + [ + [ + { + "id": "test" + }, + "test.stats:md5,6c296bce3659651fb5a08c31db314d91" + ] + ] + ], + "timestamp": "2023-12-04T11:06:41.700472756" + } +} \ No newline at end of file diff --git a/subworkflows/nf-core/bam_dedup_stats_samtools_umitools/tests/tags.yml b/subworkflows/nf-core/bam_dedup_stats_samtools_umitools/tests/tags.yml new file mode 100644 index 000000000..bfd5e023e --- /dev/null +++ b/subworkflows/nf-core/bam_dedup_stats_samtools_umitools/tests/tags.yml @@ -0,0 +1,2 @@ +subworkflows/bam_dedup_stats_samtools_umitools: + - subworkflows/nf-core/bam_dedup_stats_samtools_umitools/** diff --git a/subworkflows/nf-core/bam_markduplicates_picard/main.nf b/subworkflows/nf-core/bam_markduplicates_picard/main.nf index 6e3df3320..de8130fb5 100644 --- a/subworkflows/nf-core/bam_markduplicates_picard/main.nf +++ b/subworkflows/nf-core/bam_markduplicates_picard/main.nf @@ -26,13 +26,9 @@ workflow BAM_MARKDUPLICATES_PICARD { ch_bam_bai = PICARD_MARKDUPLICATES.out.bam .join(SAMTOOLS_INDEX.out.bai, by: [0], remainder: true) .join(SAMTOOLS_INDEX.out.csi, by: [0], remainder: true) - .map { - meta, bam, bai, csi -> - if (bai) { - [ meta, bam, bai ] - } else { - [ meta, bam, csi ] - } + .map{meta, bam, bai, csi -> + if (bai) [ meta, bam, bai ] + else [ meta, bam, csi ] } BAM_STATS_SAMTOOLS ( ch_bam_bai, ch_fasta ) diff --git a/subworkflows/nf-core/bam_markduplicates_picard/meta.yml b/subworkflows/nf-core/bam_markduplicates_picard/meta.yml index b924596d8..fe63068e6 100644 --- a/subworkflows/nf-core/bam_markduplicates_picard/meta.yml +++ b/subworkflows/nf-core/bam_markduplicates_picard/meta.yml @@ -6,7 +6,6 @@ keywords: - bam - sam - cram - components: - picard/markduplicates - samtools/index @@ -14,7 +13,6 @@ components: - samtools/idxstats - samtools/flagstat - bam_stats_samtools - input: - ch_bam: description: | @@ -60,3 +58,6 @@ output: authors: - "@dmarron" - "@drpatelh" +maintainers: + - "@dmarron" + - "@drpatelh" diff --git a/subworkflows/nf-core/bam_markduplicates_picard/tests/main.nf.test b/subworkflows/nf-core/bam_markduplicates_picard/tests/main.nf.test new file mode 100644 index 000000000..d8d242908 --- /dev/null +++ b/subworkflows/nf-core/bam_markduplicates_picard/tests/main.nf.test @@ -0,0 +1,93 @@ +nextflow_workflow { + + name "Test Workflow BAM_MARKDUPLICATES_PICARD" + script "../main.nf" + workflow "BAM_MARKDUPLICATES_PICARD" + + tag "picard" + tag "picard/markduplicates" + tag "subworkflows" + tag "subworkflows_nfcore" + tag "bam_markduplicates_picard" + tag "subworkflows/bam_markduplicates_picard" + tag "subworkflows/bam_stats_samtools" + tag "bam_stats_samtools" + tag "samtools" + tag "samtools/flagstat" + tag "samtools/idxstats" + tag "samtools/index" + tag "samtools/stats" + + test("sarscov2 - bam") { + + when { + workflow { + """ + 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) + ]) + input[1] = Channel.of([ + [ id:'genome' ], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) + ]) + input[2] = Channel.of([ + [ id:'genome' ], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.fai', checkIfExists: true) + ]) + """ + } + } + + then { + assertAll( + { assert workflow.success}, + { assert snapshot( + path(workflow.out.bam[0][1]), + path(workflow.out.bai[0][1]), + path(workflow.out.flagstat[0][1]), + path(workflow.out.idxstats[0][1]), + path(workflow.out.stats[0][1]), + ).match("sarscov2 - bam") }, + { assert path(workflow.out.metrics.get(0).get(1)).getText().contains("97") } + ) + } + } + + test("homo_sapiens - cram") { + + when { + workflow { + """ + input[0] = Channel.of([ + [ id:'test' ], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/cram/test.paired_end.sorted.cram', checkIfExists: true) + ]) + input[1] = Channel.of([ + [ id:'genome' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) + ]) + input[2] = Channel.of([ + [ id:'genome' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta.fai', checkIfExists: true) + ]) + """ + } + } + + then { + assertAll( + { assert workflow.success}, + { assert snapshot( + path(workflow.out.bam[0][1]), + path(workflow.out.bai[0][1]), + path(workflow.out.flagstat[0][1]), + path(workflow.out.idxstats[0][1]), + path(workflow.out.stats[0][1]), + ).match("homo_sapiens - cram") }, + { assert path(workflow.out.metrics.get(0).get(1)).getText().contains("0.999986") } + ) + } + } + +} diff --git a/subworkflows/nf-core/bam_markduplicates_picard/tests/main.nf.test.snap b/subworkflows/nf-core/bam_markduplicates_picard/tests/main.nf.test.snap new file mode 100644 index 000000000..a208d1014 --- /dev/null +++ b/subworkflows/nf-core/bam_markduplicates_picard/tests/main.nf.test.snap @@ -0,0 +1,22 @@ +{ + "homo_sapiens - cram": { + "content": [ + "test.bam:md5,6641dc05efa8384a061f378d86d922cd", + "test.bam.bai:md5,c41c60d8a94adebe53b6df80b6e90d38", + "test.flagstat:md5,93b0ef463df947ede1f42ff60396c34d", + "test.idxstats:md5,e179601fa7b8ebce81ac3765206f6c15", + "test.stats:md5,0035ac8900d85e9a790f4c1f48b76947" + ], + "timestamp": "2023-12-05T17:45:12.484869" + }, + "sarscov2 - bam": { + "content": [ + "test.bam:md5,3091fe6ba1b7530f382fe40b9fd8f45b", + "test.bam.bai:md5,4d3ae8d013444b55e17aa0149a2ab404", + "test.flagstat:md5,4f7ffd1e6a5e85524d443209ac97d783", + "test.idxstats:md5,df60a8c8d6621100d05178c93fb053a2", + "test.stats:md5,e32e7e49dce1fbe327a89e0fb7bc01b1" + ], + "timestamp": "2023-12-05T17:43:58.582652" + } +} diff --git a/subworkflows/nf-core/bam_markduplicates_picard/tests/tags.yml b/subworkflows/nf-core/bam_markduplicates_picard/tests/tags.yml new file mode 100644 index 000000000..10b852706 --- /dev/null +++ b/subworkflows/nf-core/bam_markduplicates_picard/tests/tags.yml @@ -0,0 +1,2 @@ +subworkflows/bam_markduplicates_picard: + - subworkflows/nf-core/bam_markduplicates_picard/** diff --git a/subworkflows/nf-core/bam_rseqc/main.nf b/subworkflows/nf-core/bam_rseqc/main.nf index a698b30ab..bf530f09d 100644 --- a/subworkflows/nf-core/bam_rseqc/main.nf +++ b/subworkflows/nf-core/bam_rseqc/main.nf @@ -28,141 +28,153 @@ workflow BAM_RSEQC { // // Run RSeQC bam_stat.py // - bamstat_txt = Channel.empty() + ch_bamstat = Channel.empty() if ('bam_stat' in rseqc_modules) { RSEQC_BAMSTAT ( ch_bam ) - bamstat_txt = RSEQC_BAMSTAT.out.txt + ch_bamstat = RSEQC_BAMSTAT.out.txt ch_versions = ch_versions.mix(RSEQC_BAMSTAT.out.versions.first()) } // // Run RSeQC inner_distance.py // - innerdistance_distance = Channel.empty() - innerdistance_freq = Channel.empty() - innerdistance_mean = Channel.empty() - innerdistance_pdf = Channel.empty() - innerdistance_rscript = Channel.empty() + ch_innerdistance = Channel.empty() + ch_innerdistance_distance = Channel.empty() + ch_innerdistance_freq = Channel.empty() + ch_innerdistance_mean = Channel.empty() + ch_innerdistance_pdf = Channel.empty() + ch_innerdistance_rscript = Channel.empty() if ('inner_distance' in rseqc_modules) { RSEQC_INNERDISTANCE ( ch_bam, ch_bed ) - innerdistance_distance = RSEQC_INNERDISTANCE.out.distance - innerdistance_freq = RSEQC_INNERDISTANCE.out.freq - innerdistance_mean = RSEQC_INNERDISTANCE.out.mean - innerdistance_pdf = RSEQC_INNERDISTANCE.out.pdf - innerdistance_rscript = RSEQC_INNERDISTANCE.out.rscript - ch_versions = ch_versions.mix(RSEQC_INNERDISTANCE.out.versions.first()) + ch_innerdistance_distance = RSEQC_INNERDISTANCE.out.distance + ch_innerdistance_freq = RSEQC_INNERDISTANCE.out.freq + ch_innerdistance_mean = RSEQC_INNERDISTANCE.out.mean + ch_innerdistance_pdf = RSEQC_INNERDISTANCE.out.pdf + ch_innerdistance_rscript = RSEQC_INNERDISTANCE.out.rscript + ch_innerdistance = ch_innerdistance_distance.mix(ch_innerdistance_freq, ch_innerdistance_mean, ch_innerdistance_pdf, ch_innerdistance_rscript) + ch_versions = ch_versions.mix(RSEQC_INNERDISTANCE.out.versions.first()) } // // Run RSeQC infer_experiment.py // - inferexperiment_txt = Channel.empty() + ch_inferexperiment = Channel.empty() if ('infer_experiment' in rseqc_modules) { RSEQC_INFEREXPERIMENT ( ch_bam, ch_bed ) - inferexperiment_txt = RSEQC_INFEREXPERIMENT.out.txt - ch_versions = ch_versions.mix(RSEQC_INFEREXPERIMENT.out.versions.first()) + ch_inferexperiment = RSEQC_INFEREXPERIMENT.out.txt + ch_versions = ch_versions.mix(RSEQC_INFEREXPERIMENT.out.versions.first()) } // // Run RSeQC junction_annotation.py // - junctionannotation_bed = Channel.empty() - junctionannotation_interact_bed = Channel.empty() - junctionannotation_xls = Channel.empty() - junctionannotation_pdf = Channel.empty() - junctionannotation_events_pdf = Channel.empty() - junctionannotation_rscript = Channel.empty() - junctionannotation_log = Channel.empty() + ch_junctionannotation = Channel.empty() + ch_junctionannotation_bed = Channel.empty() + ch_junctionannotation_interact_bed = Channel.empty() + ch_junctionannotation_xls = Channel.empty() + ch_junctionannotation_pdf = Channel.empty() + ch_junctionannotation_events_pdf = Channel.empty() + ch_junctionannotation_rscript = Channel.empty() + ch_junctionannotation_log = Channel.empty() if ('junction_annotation' in rseqc_modules) { RSEQC_JUNCTIONANNOTATION ( ch_bam, ch_bed ) - junctionannotation_bed = RSEQC_JUNCTIONANNOTATION.out.bed - junctionannotation_interact_bed = RSEQC_JUNCTIONANNOTATION.out.interact_bed - junctionannotation_xls = RSEQC_JUNCTIONANNOTATION.out.xls - junctionannotation_pdf = RSEQC_JUNCTIONANNOTATION.out.pdf - junctionannotation_events_pdf = RSEQC_JUNCTIONANNOTATION.out.events_pdf - junctionannotation_rscript = RSEQC_JUNCTIONANNOTATION.out.rscript - junctionannotation_log = RSEQC_JUNCTIONANNOTATION.out.log - ch_versions = ch_versions.mix(RSEQC_JUNCTIONANNOTATION.out.versions.first()) + ch_junctionannotation_bed = RSEQC_JUNCTIONANNOTATION.out.bed + ch_junctionannotation_interact_bed = RSEQC_JUNCTIONANNOTATION.out.interact_bed + ch_junctionannotation_xls = RSEQC_JUNCTIONANNOTATION.out.xls + ch_junctionannotation_pdf = RSEQC_JUNCTIONANNOTATION.out.pdf + ch_junctionannotation_events_pdf = RSEQC_JUNCTIONANNOTATION.out.events_pdf + ch_junctionannotation_rscript = RSEQC_JUNCTIONANNOTATION.out.rscript + ch_junctionannotation_log = RSEQC_JUNCTIONANNOTATION.out.log + ch_junctionannotation = ch_junctionannotation_bed.mix(ch_junctionannotation_interact_bed, ch_junctionannotation_xls, ch_junctionannotation_pdf, ch_junctionannotation_events_pdf, ch_junctionannotation_rscript, ch_junctionannotation_log) + ch_versions = ch_versions.mix(RSEQC_JUNCTIONANNOTATION.out.versions.first()) } // // Run RSeQC junction_saturation.py // - junctionsaturation_pdf = Channel.empty() - junctionsaturation_rscript = Channel.empty() + ch_junctionsaturation = Channel.empty() + ch_junctionsaturation_pdf = Channel.empty() + ch_junctionsaturation_rscript = Channel.empty() if ('junction_saturation' in rseqc_modules) { RSEQC_JUNCTIONSATURATION ( ch_bam, ch_bed ) - junctionsaturation_pdf = RSEQC_JUNCTIONSATURATION.out.pdf - junctionsaturation_rscript = RSEQC_JUNCTIONSATURATION.out.rscript - ch_versions = ch_versions.mix(RSEQC_JUNCTIONSATURATION.out.versions.first()) + ch_junctionsaturation_pdf = RSEQC_JUNCTIONSATURATION.out.pdf + ch_junctionsaturation_rscript = RSEQC_JUNCTIONSATURATION.out.rscript + ch_junctionsaturation = ch_junctionsaturation_pdf.mix(ch_junctionsaturation_rscript) + ch_versions = ch_versions.mix(RSEQC_JUNCTIONSATURATION.out.versions.first()) } // // Run RSeQC read_distribution.py // - readdistribution_txt = Channel.empty() + ch_readdistribution = Channel.empty() if ('read_distribution' in rseqc_modules) { RSEQC_READDISTRIBUTION ( ch_bam, ch_bed ) - readdistribution_txt = RSEQC_READDISTRIBUTION.out.txt - ch_versions = ch_versions.mix(RSEQC_READDISTRIBUTION.out.versions.first()) + ch_readdistribution = RSEQC_READDISTRIBUTION.out.txt + ch_versions = ch_versions.mix(RSEQC_READDISTRIBUTION.out.versions.first()) } // // Run RSeQC read_duplication.py // - readduplication_seq_xls = Channel.empty() - readduplication_pos_xls = Channel.empty() - readduplication_pdf = Channel.empty() - readduplication_rscript = Channel.empty() + ch_readduplication = Channel.empty() + ch_readduplication_seq_xls = Channel.empty() + ch_readduplication_pos_xls = Channel.empty() + ch_readduplication_pdf = Channel.empty() + ch_readduplication_rscript = Channel.empty() if ('read_duplication' in rseqc_modules) { RSEQC_READDUPLICATION ( ch_bam ) - readduplication_seq_xls = RSEQC_READDUPLICATION.out.seq_xls - readduplication_pos_xls = RSEQC_READDUPLICATION.out.pos_xls - readduplication_pdf = RSEQC_READDUPLICATION.out.pdf - readduplication_rscript = RSEQC_READDUPLICATION.out.rscript - ch_versions = ch_versions.mix(RSEQC_READDUPLICATION.out.versions.first()) + ch_readduplication_seq_xls = RSEQC_READDUPLICATION.out.seq_xls + ch_readduplication_pos_xls = RSEQC_READDUPLICATION.out.pos_xls + ch_readduplication_pdf = RSEQC_READDUPLICATION.out.pdf + ch_readduplication_rscript = RSEQC_READDUPLICATION.out.rscript + ch_readduplication = ch_readduplication_seq_xls.mix(ch_readduplication_pos_xls, ch_readduplication_pdf, ch_readduplication_rscript) + ch_versions = ch_versions.mix(RSEQC_READDUPLICATION.out.versions.first()) } // // Run RSeQC tin.py // - tin_txt = Channel.empty() + ch_tin = Channel.empty() if ('tin' in rseqc_modules) { RSEQC_TIN ( ch_bam_bai, ch_bed ) - tin_txt = RSEQC_TIN.out.txt + ch_tin = RSEQC_TIN.out.txt ch_versions = ch_versions.mix(RSEQC_TIN.out.versions.first()) } emit: - bamstat_txt // channel: [ val(meta), txt ] + ch_bamstat // channel: [ val(meta), txt ] - innerdistance_distance // channel: [ val(meta), txt ] - innerdistance_freq // channel: [ val(meta), txt ] - innerdistance_mean // channel: [ val(meta), txt ] - innerdistance_pdf // channel: [ val(meta), pdf ] - innerdistance_rscript // channel: [ val(meta), r ] + ch_innerdistance + ch_innerdistance_distance // channel: [ val(meta), txt ] + ch_innerdistance_freq // channel: [ val(meta), txt ] + ch_innerdistance_mean // channel: [ val(meta), txt ] + ch_innerdistance_pdf // channel: [ val(meta), pdf ] + ch_innerdistance_rscript // channel: [ val(meta), r ] - inferexperiment_txt // channel: [ val(meta), txt ] + ch_inferexperiment // channel: [ val(meta), txt ] - junctionannotation_bed // channel: [ val(meta), bed ] - junctionannotation_interact_bed // channel: [ val(meta), bed ] - junctionannotation_xls // channel: [ val(meta), xls ] - junctionannotation_pdf // channel: [ val(meta), pdf ] - junctionannotation_events_pdf // channel: [ val(meta), pdf ] - junctionannotation_rscript // channel: [ val(meta), r ] - junctionannotation_log // channel: [ val(meta), log ] + ch_junctionannotation + ch_junctionannotation_bed // channel: [ val(meta), bed ] + ch_junctionannotation_interact_bed // channel: [ val(meta), bed ] + ch_junctionannotation_xls // channel: [ val(meta), xls ] + ch_junctionannotation_pdf // channel: [ val(meta), pdf ] + ch_junctionannotation_events_pdf // channel: [ val(meta), pdf ] + ch_junctionannotation_rscript // channel: [ val(meta), r ] + ch_junctionannotation_log // channel: [ val(meta), log ] - junctionsaturation_pdf // channel: [ val(meta), pdf ] - junctionsaturation_rscript // channel: [ val(meta), r ] + ch_junctionsaturation + ch_junctionsaturation_pdf // channel: [ val(meta), pdf ] + ch_junctionsaturation_rscript // channel: [ val(meta), r ] - readdistribution_txt // channel: [ val(meta), txt ] + ch_readdistribution // channel: [ val(meta), txt ] - readduplication_seq_xls // channel: [ val(meta), xls ] - readduplication_pos_xls // channel: [ val(meta), xls ] - readduplication_pdf // channel: [ val(meta), pdf ] - readduplication_rscript // channel: [ val(meta), r ] + ch_readduplication + ch_readduplication_seq_xls // channel: [ val(meta), xls ] + ch_readduplication_pos_xls // channel: [ val(meta), xls ] + ch_readduplication_pdf // channel: [ val(meta), pdf ] + ch_readduplication_rscript // channel: [ val(meta), r ] - tin_txt // channel: [ val(meta), txt ] + ch_tin // channel: [ val(meta), txt ] - versions = ch_versions // channel: [ versions.yml ] + versions = ch_versions // channel: [ versions.yml ] } diff --git a/subworkflows/nf-core/bam_rseqc/meta.yml b/subworkflows/nf-core/bam_rseqc/meta.yml index 428b83e6d..2fef88737 100644 --- a/subworkflows/nf-core/bam_rseqc/meta.yml +++ b/subworkflows/nf-core/bam_rseqc/meta.yml @@ -12,8 +12,16 @@ keywords: - readdistribution - readduplication - tin -modules: +components: - rseqc + - rseqc/tin + - rseqc/readduplication + - rseqc/readdistribution + - rseqc/junctionsaturation + - rseqc/junctionannotation + - rseqc/innerdistance + - rseqc/inferexperiment + - rseqc/bamstat input: - meta: type: map @@ -38,91 +46,107 @@ input: List of rseqc modules to run e.g. [ 'bam_stat', 'infer_experiment' ] output: - - bamstat_txt: + - ch_bamstat: type: file description: bam statistics report pattern: "*.bam_stat.txt" - - innerdistance_distance: + - ch_innerdistance: + type: file + description: All the output files from RSEQC_INNERDISTANCE + pattern: "*.{txt,pdf,R}" + - ch_innerdistance_distance: type: file description: the inner distances pattern: "*.inner_distance.txt" - - innerdistance_freq: + - ch_innerdistance_freq: type: file description: frequencies of different insert sizes pattern: "*.inner_distance_freq.txt" - - innerdistance_mean: + - ch_innerdistance_mean: type: file description: mean/median values of inner distances pattern: "*.inner_distance_mean.txt" - - innerdistance_pdf: + - ch_innerdistance_pdf: type: file description: distribution plot of inner distances pattern: "*.inner_distance_plot.pdf" - - innerdistance_rscript: + - ch_innerdistance_rscript: type: file description: script to reproduce the plot pattern: "*.inner_distance_plot.R" - - inferexperiment_txt: + - ch_inferexperiment: type: file description: infer_experiment results report pattern: "*.infer_experiment.txt" - - junctionannotation_bed: + - ch_junctionannotation: + type: file + description: All the output files from RSEQC_JUNCTIONANNOTATION + pattern: "*.{bed,xls,pdf,R,log}" + - ch_junctionannotation_bed: type: file description: bed file of annotated junctions pattern: "*.junction.bed" - - junctionannotation_interact_bed: + - ch_junctionannotation_interact_bed: type: file description: Interact bed file pattern: "*.Interact.bed" - - junctionannotation_xls: + - ch_junctionannotation_xls: type: file description: xls file with junction information pattern: "*.xls" - - junctionannotation_pdf: + - ch_junctionannotation_pdf: type: file description: junction plot pattern: "*.junction.pdf" - - junctionannotation_events_pdf: + - ch_junctionannotation_events_pdf: type: file description: events plot pattern: "*.events.pdf" - - junctionannotation_rscript: + - ch_junctionannotation_rscript: type: file description: Rscript to reproduce the plots pattern: "*.r" - - junctionannotation_log: + - ch_junctionannotation_log: type: file description: Log file generated by tool pattern: "*.log" - - junctionsaturation_pdf: + - ch_junctionsaturation: + type: file + description: All the output files from RSEQC_JUNCTIONSATURATION + pattern: "*.{pdf,R}" + - ch_junctionsaturation_pdf: type: file description: Junction saturation report pattern: "*.pdf" - - junctionsaturation_rscript: + - ch_junctionsaturation_rscript: type: file description: Junction saturation R-script pattern: "*.r" - - readdistribution_txt: + - ch_readdistribution: type: file description: the read distribution report pattern: "*.read_distribution.txt" - - readduplication_seq_xls: + - ch_readduplication: + type: file + description: All the output files from RSEQC_READDUPLICATION + pattern: "*.{xls,pdf,R}" + - ch_readduplication_seq_xls: type: file description: Read duplication rate determined from mapping position of read pattern: "*seq.DupRate.xls" - - readduplication_pos_xls: + - ch_readduplication_pos_xls: type: file description: Read duplication rate determined from sequence of read pattern: "*pos.DupRate.xls" - - readduplication_pdf: + - ch_readduplication_pdf: type: file description: plot of duplication rate pattern: "*.pdf" - - readduplication_rscript: + - ch_readduplication_rscript: type: file description: script to reproduce the plot pattern: "*.R" - - tin_txt: + - ch_tin: type: file description: TXT file containing tin.py results summary pattern: "*.txt" @@ -133,3 +157,6 @@ output: authors: - "@drpatelh" - "@kevinmenden" +maintainers: + - "@drpatelh" + - "@kevinmenden" diff --git a/subworkflows/nf-core/bam_rseqc/tests/main.nf.test b/subworkflows/nf-core/bam_rseqc/tests/main.nf.test new file mode 100644 index 000000000..bd84bebff --- /dev/null +++ b/subworkflows/nf-core/bam_rseqc/tests/main.nf.test @@ -0,0 +1,100 @@ +nextflow_workflow { + + name "Test Workflow BAM_RSEQC" + script "../main.nf" + workflow "BAM_RSEQC" + tag "subworkflows" + tag "subworkflows_nfcore" + tag "subworkflows/bam_rseqc" + tag "bam_rseqc" + tag "rseqc" + tag "rseqc/bamstat" + tag "rseqc/inferexperiment" + tag "rseqc/innerdistance" + tag "rseqc/junctionannotation" + tag "rseqc/junctionsaturation" + tag "rseqc/readdistribution" + tag "rseqc/readduplication" + tag "rseqc/tin" + + test("sarscov2 paired-end [bam]") { + + when { + workflow { + """ + input[0] = Channel.of([ + [ id:'test' ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam.bai', checkIfExists: true) + ]) + input[1] = Channel.of([ + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/bed/test.bed12', checkIfExists: true) + ]) + input[2] = ['bam_stat', 'inner_distance', 'infer_experiment', 'junction_annotation', 'junction_saturation', 'read_distribution', 'read_duplication', 'tin'] + """ + } + } + + then { + assertAll( + { assert workflow.success}, + { assert snapshot(workflow.out.ch_bamstat).match("bamstat")}, + + { assert snapshot(workflow.out.ch_innerdistance.findAll { it[1].endsWith('.pdf') == false }).match("inner_distance")}, + { assert workflow.out.ch_innerdistance.any { it[1].endsWith('.pdf') && file(it[1]).exists() } }, + + { assert snapshot(workflow.out.ch_inferexperiment).match("inferexperiment")}, + + { assert snapshot(workflow.out.ch_junctionannotation.findAll { + it[1].endsWith('.xls') == false && + it[1].endsWith('.r') == false }).match("junction_annotation")}, + + { assert snapshot(workflow.out.ch_junctionsaturation.findAll { it[1].endsWith('.pdf') == false }).match("junction_saturation")}, + { assert workflow.out.ch_junctionsaturation.any { it[1].endsWith('.pdf') && file(it[1]).exists() } }, + + { assert snapshot(workflow.out.ch_readdistribution).match("readdistribution")}, + + { assert snapshot(workflow.out.ch_readduplication.findAll { it[1].endsWith('.pdf') == false }).match("read_duplication")}, + { assert workflow.out.ch_readduplication.any { it[1].endsWith('.pdf') && file(it[1]).exists() } }, + + { assert snapshot(workflow.out.ch_tin).match("tin")}, + { assert snapshot(workflow.out.versions).match("versions")}, + ) + } + } + + test("sarscov2 paired-end [bam] no modules") { + + when { + workflow { + """ + input[0] = Channel.of([ + [ id:'test' ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam.bai', checkIfExists: true) + ]) + input[1] = Channel.of([ + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/bed/test.bed12', checkIfExists: true) + ]) + input[2] = [] + """ + } + } + + then { + assertAll( + { assert workflow.success }, + { assert workflow.out.ch_bamstat.size() == 0 }, + { assert workflow.out.ch_innerdistance.size() == 0 }, + { assert workflow.out.ch_inferexperiment.size() == 0 }, + { assert workflow.out.ch_junctionannotation.size() == 0 }, + { assert workflow.out.ch_junctionsaturation.size() == 0 }, + { assert workflow.out.ch_readdistribution.size() == 0 }, + { assert workflow.out.ch_readduplication.size() == 0 }, + { assert workflow.out.ch_tin.size() == 0 }, + { assert workflow.out.versions.size() == 0 }, + ) + } + } + +} diff --git a/subworkflows/nf-core/bam_rseqc/tests/main.nf.test.snap b/subworkflows/nf-core/bam_rseqc/tests/main.nf.test.snap new file mode 100644 index 000000000..f80f50b2e --- /dev/null +++ b/subworkflows/nf-core/bam_rseqc/tests/main.nf.test.snap @@ -0,0 +1,151 @@ +{ + "inner_distance": { + "content": [ + [ + [ + { + "id": "test" + }, + "test.inner_distance.txt:md5,a1acc9def0f64a5500d4c4cb47cbe32b" + ], + [ + { + "id": "test" + }, + "test.inner_distance_freq.txt:md5,3fc037501f5899b5da009c8ce02fc25e" + ], + [ + { + "id": "test" + }, + "test.inner_distance_mean.txt:md5,58398b7d5a29a5e564f9e3c50b55996c" + ], + [ + { + "id": "test" + }, + "test.inner_distance_plot.r:md5,5859fbd5b42046d47e8b9aa85077f4ea" + ] + ] + ], + "timestamp": "2023-12-08T14:37:45.734509133" + }, + "junction_saturation": { + "content": [ + [ + [ + { + "id": "test" + }, + "test.junctionSaturation_plot.r:md5,caa6e63dcb477aabb169882b2f30dadd" + ] + ] + ], + "timestamp": "2023-12-08T14:37:45.825157699" + }, + "versions": { + "content": [ + [ + "versions.yml:md5,60dc1afce7fecb7270e998a00ee393e2", + "versions.yml:md5,9bc3caee6aeb54f23f5296b499546515", + "versions.yml:md5,a25161998ca60d5ce4e9a86abbf1bcb8", + "versions.yml:md5,c175b92f50b5be38a8808cbf7ac7452e", + "versions.yml:md5,ca7e95cf7ff7cff5d052b890729f7ead", + "versions.yml:md5,d03beea3c68934c3f3623a005c1424d2", + "versions.yml:md5,f2f3ecd549045f7595245f904f5d9414", + "versions.yml:md5,fd16f1098b9c285f3ea7bd3daf4e8f10" + ] + ], + "timestamp": "2023-12-14T14:58:10.874440924" + }, + "tin": { + "content": [ + [ + [ + { + "id": "test" + }, + "test.paired_end.sorted.summary.txt:md5,9d98447e178b89a89f6f5aba7a772fe6" + ] + ] + ], + "timestamp": "2023-12-08T14:37:45.935155313" + }, + "bamstat": { + "content": [ + [ + [ + { + "id": "test" + }, + "test.bam_stat.txt:md5,2675857864c1d1139b2a19d25dc36b09" + ] + ] + ], + "timestamp": "2023-12-08T14:37:45.671792186" + }, + "inferexperiment": { + "content": [ + [ + [ + { + "id": "test" + }, + "test.infer_experiment.txt:md5,f9d0bfc239df637cd8aeda40ade3c59a" + ] + ] + ], + "timestamp": "2023-12-08T14:37:45.747507043" + }, + "read_duplication": { + "content": [ + [ + [ + { + "id": "test" + }, + "test.DupRate_plot.r:md5,3c0325095cee4835b921e57d61c23dca" + ], + [ + { + "id": "test" + }, + "test.pos.DupRate.xls:md5,a859bc2031d46bf1cc4336205847caa3" + ], + [ + { + "id": "test" + }, + "test.seq.DupRate.xls:md5,ee8783399eec5a18522a6f08bece338b" + ] + ] + ], + "timestamp": "2023-12-08T14:37:45.927253593" + }, + "junction_annotation": { + "content": [ + [ + [ + { + "id": "test" + }, + "test.junction_annotation.log:md5,d75e0f5d62fada8aa9449991b209554c" + ] + ] + ], + "timestamp": "2023-12-14T17:42:43.31783911" + }, + "readdistribution": { + "content": [ + [ + [ + { + "id": "test" + }, + "test.read_distribution.txt:md5,56893fdc0809d968629a363551a1655f" + ] + ] + ], + "timestamp": "2023-12-08T14:37:45.841855468" + } +} \ No newline at end of file diff --git a/subworkflows/nf-core/bam_rseqc/tests/tags.yml b/subworkflows/nf-core/bam_rseqc/tests/tags.yml new file mode 100644 index 000000000..c8dfce3a9 --- /dev/null +++ b/subworkflows/nf-core/bam_rseqc/tests/tags.yml @@ -0,0 +1,2 @@ +subworkflows/bam_rseqc: + - subworkflows/nf-core/bam_rseqc/** diff --git a/subworkflows/nf-core/bam_sort_stats_samtools/meta.yml b/subworkflows/nf-core/bam_sort_stats_samtools/meta.yml index 69c16be41..e01f9ccf6 100644 --- a/subworkflows/nf-core/bam_sort_stats_samtools/meta.yml +++ b/subworkflows/nf-core/bam_sort_stats_samtools/meta.yml @@ -65,3 +65,6 @@ output: authors: - "@drpatelh" - "@ewels" +maintainers: + - "@drpatelh" + - "@ewels" diff --git a/subworkflows/nf-core/bam_sort_stats_samtools/tests/main.nf.test b/subworkflows/nf-core/bam_sort_stats_samtools/tests/main.nf.test new file mode 100644 index 000000000..75b5b9345 --- /dev/null +++ b/subworkflows/nf-core/bam_sort_stats_samtools/tests/main.nf.test @@ -0,0 +1,82 @@ +nextflow_workflow { + + name "Test Workflow BAM_SORT_STATS_SAMTOOLS" + script "../main.nf" + workflow "BAM_SORT_STATS_SAMTOOLS" + tag "subworkflows" + tag "subworkflows_nfcore" + tag "subworkflows/bam_sort_stats_samtools" + tag "bam_sort_stats_samtools" + tag "subworkflows/bam_stats_samtools" + tag "bam_stats_samtools" + tag "samtools" + tag "samtools/index" + tag "samtools/sort" + tag "samtools/stats" + tag "samtools/idxstats" + tag "samtools/flagstat" + + test("test_bam_sort_stats_samtools_single_end") { + + when { + params { + outdir = "$outputDir" + } + workflow { + """ + input[0] = Channel.of([ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.single_end.bam', checkIfExists: true) + ]) + input[1] = Channel.of([ + [ id:'genome' ], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) + ]) + """ + } + } + + then { + assertAll( + { assert workflow.success}, + { assert workflow.out.bam.get(0).get(1) ==~ ".*.bam"}, + { assert workflow.out.bai.get(0).get(1) ==~ ".*.bai"}, + { assert snapshot(workflow.out.stats).match("test_bam_sort_stats_samtools_single_end_stats") }, + { assert snapshot(workflow.out.flagstat).match("test_bam_sort_stats_samtools_single_end_flagstats") }, + { assert snapshot(workflow.out.idxstats).match("test_bam_sort_stats_samtools_single_end_idxstats") } + ) + } + } + + test("test_bam_sort_stats_samtools_paired_end") { + + when { + params { + outdir = "$outputDir" + } + workflow { + """ + input[0] = Channel.of([ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.bam', checkIfExists: true) + ]) + input[1] = Channel.of([ + [ id:'genome' ], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) + ]) + """ + } + } + + then { + assertAll( + { assert workflow.success}, + { assert workflow.out.bam.get(0).get(1) ==~ ".*.bam"}, + { assert workflow.out.bai.get(0).get(1) ==~ ".*.bai"}, + { assert snapshot(workflow.out.stats).match("test_bam_sort_stats_samtools_paired_end_stats") }, + { assert snapshot(workflow.out.flagstat).match("test_bam_sort_stats_samtools_paired_end_flagstats") }, + { assert snapshot(workflow.out.idxstats).match("test_bam_sort_stats_samtools_paired_end_idxstats") } + ) + } + } +} diff --git a/subworkflows/nf-core/bam_sort_stats_samtools/tests/main.nf.test.snap b/subworkflows/nf-core/bam_sort_stats_samtools/tests/main.nf.test.snap new file mode 100644 index 000000000..c159eef33 --- /dev/null +++ b/subworkflows/nf-core/bam_sort_stats_samtools/tests/main.nf.test.snap @@ -0,0 +1,86 @@ +{ + "test_bam_sort_stats_samtools_paired_end_flagstats": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test.flagstat:md5,4f7ffd1e6a5e85524d443209ac97d783" + ] + ] + ], + "timestamp": "2023-10-22T20:25:03.687121177" + }, + "test_bam_sort_stats_samtools_paired_end_idxstats": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test.idxstats:md5,df60a8c8d6621100d05178c93fb053a2" + ] + ] + ], + "timestamp": "2023-10-22T20:25:03.709648916" + }, + "test_bam_sort_stats_samtools_single_end_stats": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test.stats:md5,f281507081517414eb1a04b2d9c855b2" + ] + ] + ], + "timestamp": "2024-01-18T17:10:02.818694" + }, + "test_bam_sort_stats_samtools_paired_end_stats": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test.stats:md5,e32e7e49dce1fbe327a89e0fb7bc01b1" + ] + ] + ], + "timestamp": "2023-12-04T11:06:59.253905951" + }, + "test_bam_sort_stats_samtools_single_end_idxstats": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test.idxstats:md5,613e048487662c694aa4a2f73ca96a20" + ] + ] + ], + "timestamp": "2024-01-18T17:10:02.84631" + }, + "test_bam_sort_stats_samtools_single_end_flagstats": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test.flagstat:md5,2191911d72575a2358b08b1df64ccb53" + ] + ] + ], + "timestamp": "2024-01-18T17:10:02.829756" + } +} \ No newline at end of file diff --git a/subworkflows/nf-core/bam_sort_stats_samtools/tests/tags.yml b/subworkflows/nf-core/bam_sort_stats_samtools/tests/tags.yml new file mode 100644 index 000000000..30b69d6a4 --- /dev/null +++ b/subworkflows/nf-core/bam_sort_stats_samtools/tests/tags.yml @@ -0,0 +1,2 @@ +subworkflows/bam_sort_stats_samtools: + - subworkflows/nf-core/bam_sort_stats_samtools/** diff --git a/subworkflows/nf-core/bam_stats_samtools/meta.yml b/subworkflows/nf-core/bam_stats_samtools/meta.yml index 87863b11b..809bf736b 100644 --- a/subworkflows/nf-core/bam_stats_samtools/meta.yml +++ b/subworkflows/nf-core/bam_stats_samtools/meta.yml @@ -39,3 +39,5 @@ output: Structure: [ path(versions.yml) ] authors: - "@drpatelh" +maintainers: + - "@drpatelh" diff --git a/subworkflows/nf-core/bam_stats_samtools/tests/main.nf.test b/subworkflows/nf-core/bam_stats_samtools/tests/main.nf.test new file mode 100644 index 000000000..c8b21f280 --- /dev/null +++ b/subworkflows/nf-core/bam_stats_samtools/tests/main.nf.test @@ -0,0 +1,108 @@ +nextflow_workflow { + + name "Test Workflow BAM_STATS_SAMTOOLS" + script "../main.nf" + workflow "BAM_STATS_SAMTOOLS" + tag "subworkflows" + tag "subworkflows_nfcore" + tag "bam_stats_samtools" + tag "subworkflows/bam_stats_samtools" + tag "samtools" + tag "samtools/flagstat" + tag "samtools/idxstats" + tag "samtools/stats" + + test("test_bam_stats_samtools_single_end") { + + when { + params { + outdir = "$outputDir" + } + workflow { + """ + input[0] = Channel.of([ + [ id:'test', single_end:true ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.single_end.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.single_end.sorted.bam.bai', checkIfExists: true) + ]) + input[1] = Channel.of([ + [ id:'genome' ], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) + ]) + """ + } + } + + then { + assertAll( + { assert workflow.success}, + { assert snapshot(workflow.out.stats).match("test_bam_stats_samtools_single_end_stats") }, + { assert snapshot(workflow.out.flagstat).match("test_bam_stats_samtools_single_end_flagstats") }, + { assert snapshot(workflow.out.idxstats).match("test_bam_stats_samtools_single_end_idxstats") } + ) + } + } + + test("test_bam_stats_samtools_paired_end") { + + when { + params { + outdir = "$outputDir" + } + workflow { + """ + input[0] = Channel.of([ + [ id:'test', single_end:true ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam.bai', checkIfExists: true) + ]) + input[1] = Channel.of([ + [ id:'genome' ], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) + ]) + """ + } + } + + then { + assertAll( + { assert workflow.success }, + { assert snapshot(workflow.out.stats).match("test_bam_stats_samtools_paired_end_stats") }, + { assert snapshot(workflow.out.flagstat).match("test_bam_stats_samtools_paired_end_flagstats") }, + { assert snapshot(workflow.out.idxstats).match("test_bam_stats_samtools_paired_end_idxstats") } + ) + } + } + + test("test_bam_stats_samtools_paired_end_cram") { + + when { + params { + outdir = "$outputDir" + } + workflow { + """ + input[0] = Channel.of([ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/cram/test.paired_end.sorted.cram', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/cram/test.paired_end.sorted.cram.crai', checkIfExists: true) + ]) + input[1] = Channel.of([ + [ id:'genome' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) + ]) + """ + } + } + + then { + assertAll( + { assert workflow.success}, + { assert snapshot(workflow.out.stats).match("test_bam_stats_samtools_paired_end_cram_stats") }, + { assert snapshot(workflow.out.flagstat).match("test_bam_stats_samtools_paired_end_cram_flagstats") }, + { assert snapshot(workflow.out.idxstats).match("test_bam_stats_samtools_paired_end_cram_idxstats") } + ) + } + } + +} diff --git a/subworkflows/nf-core/bam_stats_samtools/tests/main.nf.test.snap b/subworkflows/nf-core/bam_stats_samtools/tests/main.nf.test.snap new file mode 100644 index 000000000..8bf0d379b --- /dev/null +++ b/subworkflows/nf-core/bam_stats_samtools/tests/main.nf.test.snap @@ -0,0 +1,128 @@ +{ + "test_bam_stats_samtools_paired_end_cram_flagstats": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test.flagstat:md5,a53f3d26e2e9851f7d528442bbfe9781" + ] + ] + ], + "timestamp": "2023-11-06T09:31:26.194017574" + }, + "test_bam_stats_samtools_paired_end_stats": { + "content": [ + [ + [ + { + "id": "test", + "single_end": true + }, + "test.stats:md5,49e2b43344ff92bc4c02463a58f7ba4a" + ] + ] + ], + "timestamp": "2024-01-18T17:17:27.704335" + }, + "test_bam_stats_samtools_paired_end_flagstats": { + "content": [ + [ + [ + { + "id": "test", + "single_end": true + }, + "test.flagstat:md5,4f7ffd1e6a5e85524d443209ac97d783" + ] + ] + ], + "timestamp": "2024-01-18T17:17:27.717482" + }, + "test_bam_stats_samtools_single_end_flagstats": { + "content": [ + [ + [ + { + "id": "test", + "single_end": true + }, + "test.flagstat:md5,2191911d72575a2358b08b1df64ccb53" + ] + ] + ], + "timestamp": "2023-11-06T09:26:10.340046381" + }, + "test_bam_stats_samtools_paired_end_cram_idxstats": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test.idxstats:md5,e179601fa7b8ebce81ac3765206f6c15" + ] + ] + ], + "timestamp": "2023-11-06T09:31:26.207052003" + }, + "test_bam_stats_samtools_single_end_stats": { + "content": [ + [ + [ + { + "id": "test", + "single_end": true + }, + "test.stats:md5,5a6667d97806e5002731e9cf23674fad" + ] + ] + ], + "timestamp": "2023-12-04T11:07:06.676820877" + }, + "test_bam_stats_samtools_paired_end_idxstats": { + "content": [ + [ + [ + { + "id": "test", + "single_end": true + }, + "test.idxstats:md5,df60a8c8d6621100d05178c93fb053a2" + ] + ] + ], + "timestamp": "2024-01-18T17:17:27.726719" + }, + "test_bam_stats_samtools_single_end_idxstats": { + "content": [ + [ + [ + { + "id": "test", + "single_end": true + }, + "test.idxstats:md5,613e048487662c694aa4a2f73ca96a20" + ] + ] + ], + "timestamp": "2023-11-06T09:26:10.349439801" + }, + "test_bam_stats_samtools_paired_end_cram_stats": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test.stats:md5,2cf2fe93596ee3d74f946097b204a629" + ] + ] + ], + "timestamp": "2023-12-04T11:07:22.30295557" + } +} \ No newline at end of file diff --git a/subworkflows/nf-core/bam_stats_samtools/tests/tags.yml b/subworkflows/nf-core/bam_stats_samtools/tests/tags.yml new file mode 100644 index 000000000..ec2f2d68f --- /dev/null +++ b/subworkflows/nf-core/bam_stats_samtools/tests/tags.yml @@ -0,0 +1,2 @@ +subworkflows/bam_stats_samtools: + - subworkflows/nf-core/bam_stats_samtools/** diff --git a/subworkflows/nf-core/bedgraph_bedclip_bedgraphtobigwig/meta.yml b/subworkflows/nf-core/bedgraph_bedclip_bedgraphtobigwig/meta.yml index 5ad4db7db..49b9c27a1 100644 --- a/subworkflows/nf-core/bedgraph_bedclip_bedgraphtobigwig/meta.yml +++ b/subworkflows/nf-core/bedgraph_bedclip_bedgraphtobigwig/meta.yml @@ -34,3 +34,6 @@ output: authors: - "@drpatelh" - "@KamilMaliszArdigen" +maintainers: + - "@drpatelh" + - "@KamilMaliszArdigen" diff --git a/subworkflows/nf-core/bedgraph_bedclip_bedgraphtobigwig/tests/main.nf.test b/subworkflows/nf-core/bedgraph_bedclip_bedgraphtobigwig/tests/main.nf.test new file mode 100644 index 000000000..620bc8ba0 --- /dev/null +++ b/subworkflows/nf-core/bedgraph_bedclip_bedgraphtobigwig/tests/main.nf.test @@ -0,0 +1,36 @@ +nextflow_workflow { + + name "Test Workflow BEDGRAPH_BEDCLIP_BEDGRAPHTOBIGWIG" + script "../main.nf" + workflow "BEDGRAPH_BEDCLIP_BEDGRAPHTOBIGWIG" + config "./nextflow.config" + tag "subworkflows" + tag "subworkflows_nfcore" + tag "subworkflows/bedgraph_bedclip_bedgraphtobigwig" + tag "bedgraph_bedclip_bedgraphtobigwig" + tag "ucsc" + tag "ucsc/bedclip" + tag "ucsc/bedgraphtobigwig" + + test("sarscov2 [bedgraph] [genome_sizes]") { + + when { + workflow { + """ + input[0] = Channel.of([ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bedgraph/test.bedgraph', checkIfExists: true) + ]) + input[1] = Channel.of(file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.sizes', checkIfExists: true)) + """ + } + } + + then { + assertAll( + { assert workflow.success }, + { assert snapshot(workflow.out).match() } + ) + } + } +} diff --git a/subworkflows/nf-core/bedgraph_bedclip_bedgraphtobigwig/tests/main.nf.test.snap b/subworkflows/nf-core/bedgraph_bedclip_bedgraphtobigwig/tests/main.nf.test.snap new file mode 100644 index 000000000..e67bed326 --- /dev/null +++ b/subworkflows/nf-core/bedgraph_bedclip_bedgraphtobigwig/tests/main.nf.test.snap @@ -0,0 +1,53 @@ +{ + "sarscov2 [bedgraph] [genome_sizes]": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.bigWig:md5,910ecc7f57e3bbd5fac5a8edba4f615d" + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": false + }, + "test.clip.bedGraph:md5,e02395e1f7c593b3f79563067159ebc2" + ] + ], + "2": [ + "versions.yml:md5,21c57fc724b374139b11f88017251733", + "versions.yml:md5,72a7b07bc0e796ff6805c57f7340337f" + ], + "bedgraph": [ + [ + { + "id": "test", + "single_end": false + }, + "test.clip.bedGraph:md5,e02395e1f7c593b3f79563067159ebc2" + ] + ], + "bigwig": [ + [ + { + "id": "test", + "single_end": false + }, + "test.bigWig:md5,910ecc7f57e3bbd5fac5a8edba4f615d" + ] + ], + "versions": [ + "versions.yml:md5,21c57fc724b374139b11f88017251733", + "versions.yml:md5,72a7b07bc0e796ff6805c57f7340337f" + ] + } + ], + "timestamp": "2023-11-26T01:55:31.016058335" + } +} \ No newline at end of file diff --git a/subworkflows/nf-core/bedgraph_bedclip_bedgraphtobigwig/tests/nextflow.config b/subworkflows/nf-core/bedgraph_bedclip_bedgraphtobigwig/tests/nextflow.config new file mode 100644 index 000000000..46af4b0a9 --- /dev/null +++ b/subworkflows/nf-core/bedgraph_bedclip_bedgraphtobigwig/tests/nextflow.config @@ -0,0 +1,9 @@ +process { + + publishDir = { "${params.outdir}/${task.process.tokenize(':')[-1].tokenize('_')[0].toLowerCase()}" } + + withName: UCSC_BEDCLIP { + ext.prefix = { "${meta.id}.clip" } + } + +} diff --git a/subworkflows/nf-core/bedgraph_bedclip_bedgraphtobigwig/tests/tags.yml b/subworkflows/nf-core/bedgraph_bedclip_bedgraphtobigwig/tests/tags.yml new file mode 100644 index 000000000..83a103035 --- /dev/null +++ b/subworkflows/nf-core/bedgraph_bedclip_bedgraphtobigwig/tests/tags.yml @@ -0,0 +1,2 @@ +subworkflows/bedgraph_bedclip_bedgraphtobigwig: + - subworkflows/nf-core/bedgraph_bedclip_bedgraphtobigwig/** diff --git a/subworkflows/nf-core/fastq_align_hisat2/meta.yml b/subworkflows/nf-core/fastq_align_hisat2/meta.yml index 2b05beb68..6f00d4daa 100644 --- a/subworkflows/nf-core/fastq_align_hisat2/meta.yml +++ b/subworkflows/nf-core/fastq_align_hisat2/meta.yml @@ -87,3 +87,5 @@ output: pattern: "versions.yml" authors: - "@priyanka-surana" +maintainers: + - "@priyanka-surana" diff --git a/subworkflows/nf-core/fastq_fastqc_umitools_fastp/main.nf b/subworkflows/nf-core/fastq_fastqc_umitools_fastp/main.nf index 3dbb27eae..764ce013f 100644 --- a/subworkflows/nf-core/fastq_fastqc_umitools_fastp/main.nf +++ b/subworkflows/nf-core/fastq_fastqc_umitools_fastp/main.nf @@ -17,6 +17,16 @@ def getFastpReadsAfterFiltering(json_file) { return json['after_filtering']['total_reads'].toLong() } +def getFastpAdapterSequence(json_file){ + def Map json = (Map) new JsonSlurper().parseText(json_file.text) + try{ + adapter = json['adapter_cutting']['read1_adapter_sequence'] + } catch(Exception ex){ + adapter = "" + } + return adapter +} + workflow FASTQ_FASTQC_UMITOOLS_FASTP { take: reads // channel: [ val(meta), [ reads ] ] @@ -25,7 +35,7 @@ workflow FASTQ_FASTQC_UMITOOLS_FASTP { skip_umi_extract // boolean: true/false umi_discard_read // integer: 0, 1 or 2 skip_trimming // boolean: true/false - adapter_fasta // file: adapter.fasta + adapter_fasta // file: adapter.fasta save_trimmed_fail // boolean: true/false save_merged // boolean: true/false min_trimmed_reads // integer: > 0 @@ -75,6 +85,8 @@ workflow FASTQ_FASTQC_UMITOOLS_FASTP { fastqc_trim_html = Channel.empty() fastqc_trim_zip = Channel.empty() trim_read_count = Channel.empty() + adapter_seq = Channel.empty() + if (!skip_trimming) { FASTP ( umi_reads, @@ -108,6 +120,10 @@ workflow FASTQ_FASTQC_UMITOOLS_FASTP { .map { meta, reads, num_reads -> [ meta, num_reads ] } .set { trim_read_count } + trim_json + .map { meta, json -> [meta, getFastpAdapterSequence(json)] } + .set { adapter_seq } + if (!skip_fastqc) { FASTQC_TRIM ( trim_reads @@ -125,6 +141,7 @@ workflow FASTQ_FASTQC_UMITOOLS_FASTP { fastqc_raw_zip // channel: [ val(meta), [ zip ] ] umi_log // channel: [ val(meta), [ log ] ] + adapter_seq // channel: [ val(meta), [ adapter_seq] ] trim_json // channel: [ val(meta), [ json ] ] trim_html // channel: [ val(meta), [ html ] ] diff --git a/subworkflows/nf-core/fastq_fastqc_umitools_fastp/meta.yml b/subworkflows/nf-core/fastq_fastqc_umitools_fastp/meta.yml index f76b40261..9308fe9ba 100644 --- a/subworkflows/nf-core/fastq_fastqc_umitools_fastp/meta.yml +++ b/subworkflows/nf-core/fastq_fastqc_umitools_fastp/meta.yml @@ -43,7 +43,7 @@ input: - skip_trimming: type: boolean description: | - Allows to skip trimgalore execution + Allows to skip FastP execution - adapter_fasta: type: file description: | @@ -69,9 +69,8 @@ output: - reads: type: file description: > - Extracted FASTQ files. | - For single-end reads, pattern is \${prefix}.umi_extract.fastq.gz. | - For paired-end reads, pattern is \${prefix}.umi_extract_{1,2}.fastq.gz. + Extracted FASTQ files. | For single-end reads, pattern is \${prefix}.umi_extract.fastq.gz. | + For paired-end reads, pattern is \${prefix}.umi_extract_{1,2}.fastq.gz. pattern: "*.{fastq.gz}" - fastqc_html: type: file @@ -116,9 +115,15 @@ output: type: file description: FastQC report archive pattern: "*_{fastqc.zip}" + - adapter_seq: + type: string + description: | + Adapter Sequence found in read1 - versions: type: file description: File containing software versions pattern: "versions.yml" authors: - "@robsyme" +maintainers: + - "@robsyme" diff --git a/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/main.nf.test b/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/main.nf.test new file mode 100644 index 000000000..8f1d82d39 --- /dev/null +++ b/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/main.nf.test @@ -0,0 +1,69 @@ +nextflow_workflow { + + name "Test Workflow FASTQ_FASTQC_UMITOOLS_FASTP" + script "../main.nf" + workflow "FASTQ_FASTQC_UMITOOLS_FASTP" + tag "subworkflows" + tag "subworkflows_nfcore" + tag "subworkflows/fastq_fastqc_umitools_fastp" + tag "fastq_fastqc_umitools_fastp" + tag "fastqc" + tag "umitools/extract" + tag "fastp" + + + test("sarscov2 paired-end [fastq]") { + + when { + workflow { + """ + skip_fastqc = false + with_umi = false + skip_umi_extract = false + umi_discard_read = 1 + skip_trimming = false + adapter_fasta = [] + save_trimmed_fail = false + save_merged = false + min_trimmed_reads = 1 + + 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)] + ]) + input[1] = skip_fastqc + input[2] = with_umi + input[3] = skip_umi_extract + input[4] = umi_discard_read + input[5] = skip_trimming + input[6] = adapter_fasta + input[7] = save_trimmed_fail + input[8] = save_merged + input[9] = min_trimmed_reads + """ + } + } + + then { + assertAll( + { assert workflow.success }, + { assert snapshot(workflow.out.reads).match("reads") }, + { assert snapshot(workflow.out.umi_log).match("umi_log") }, + { assert snapshot(workflow.out.trim_json).match("trim_json") }, + { assert snapshot(workflow.out.trim_reads_fail).match("trim_reads_fail") }, + { assert snapshot(workflow.out.trim_reads_merged).match("trim_reads_merged") }, + { assert snapshot(workflow.out.adapter_seq).match("adapter_seq") }, + { assert snapshot(workflow.out.trim_read_count).match("trim_read_count") }, + { assert snapshot(workflow.out.versions).match("versions") }, + + { assert workflow.out.fastqc_raw_html }, + { assert workflow.out.fastqc_raw_zip }, + { assert workflow.out.trim_html }, + { assert workflow.out.trim_log }, + { assert workflow.out.fastqc_trim_html }, + { assert workflow.out.fastqc_trim_zip } + ) + } + } +} diff --git a/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/main.nf.test.snap b/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/main.nf.test.snap new file mode 100644 index 000000000..89ba8da19 --- /dev/null +++ b/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/main.nf.test.snap @@ -0,0 +1,127 @@ +{ + "trim_reads_merged": { + "content": [ + [ + + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-01-12T08:38:50.041635573" + }, + "trim_reads_fail": { + "content": [ + [ + + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-01-12T08:38:50.033284693" + }, + "versions": { + "content": [ + [ + "versions.yml:md5,85bd0117e5778fff18e3920972a296ad", + "versions.yml:md5,c50aa59475ab901bc6f9a2cf7b1a14e0", + "versions.yml:md5,f3dcaae948e8eed92b4a5557b4c6668e" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-01-12T08:38:50.121510557" + }, + "trim_json": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test.fastp.json:md5,1e0f8e27e71728e2b63fc64086be95cd" + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-01-12T08:38:50.024410724" + }, + "adapter_seq": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "unspecified" + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-01-12T08:38:50.08674429" + }, + "reads": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test_1.fastp.fastq.gz:md5,67b2bbae47f073e05a97a9c2edce23c7", + "test_2.fastp.fastq.gz:md5,25cbdca08e2083dbd4f0502de6b62f39" + ] + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-01-12T08:38:49.994419936" + }, + "umi_log": { + "content": [ + [ + + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-01-12T08:38:50.017720214" + }, + "trim_read_count": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + 198 + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-01-12T08:38:50.102326089" + } +} \ No newline at end of file diff --git a/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/tags.yml b/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/tags.yml new file mode 100644 index 000000000..84a4b5676 --- /dev/null +++ b/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/tags.yml @@ -0,0 +1,2 @@ +subworkflows/fastq_fastqc_umitools_fastp: + - subworkflows/nf-core/fastq_fastqc_umitools_fastp/** diff --git a/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/meta.yml b/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/meta.yml index e32e90f43..a7df97f77 100644 --- a/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/meta.yml +++ b/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/meta.yml @@ -47,13 +47,14 @@ input: type: integer description: | Inputs with fewer than this reads will be filtered out of the "reads" output channel - output: - reads: type: file description: > - Extracted FASTQ files. | - For single-end reads, pattern is \${prefix}.umi_extract.fastq.gz. | + Extracted FASTQ files. | For single-end reads, pattern is \${prefix}.umi_extract.fastq.gz. | + + + For paired-end reads, pattern is \${prefix}.umi_extract_{1,2}.fastq.gz. pattern: "*.{fastq.gz}" - fastqc_html: @@ -95,3 +96,6 @@ output: authors: - "@drpatelh" - "@KamilMaliszArdigen" +maintainers: + - "@drpatelh" + - "@KamilMaliszArdigen" diff --git a/subworkflows/nf-core/fastq_subsample_fq_salmon/meta.yml b/subworkflows/nf-core/fastq_subsample_fq_salmon/meta.yml index d144269ba..7e2f10966 100644 --- a/subworkflows/nf-core/fastq_subsample_fq_salmon/meta.yml +++ b/subworkflows/nf-core/fastq_subsample_fq_salmon/meta.yml @@ -39,7 +39,6 @@ input: - make_index: type: boolean description: Whether to create salmon index before running salmon quant - output: - index: type: directory @@ -66,3 +65,6 @@ output: authors: - "@robsyme" - "@drpatelh" +maintainers: + - "@robsyme" + - "@drpatelh" diff --git a/subworkflows/nf-core/fastq_subsample_fq_salmon/tests/main.nf.test b/subworkflows/nf-core/fastq_subsample_fq_salmon/tests/main.nf.test new file mode 100644 index 000000000..6342449a1 --- /dev/null +++ b/subworkflows/nf-core/fastq_subsample_fq_salmon/tests/main.nf.test @@ -0,0 +1,65 @@ +nextflow_workflow { + + name "Test Workflow FASTQ_SUBSAMPLE_FQ_SALMON" + script "../main.nf" + workflow "FASTQ_SUBSAMPLE_FQ_SALMON" + config "./nextflow.config" + tag "subworkflows" + tag "subworkflows_nfcore" + tag "subworkflows/fastq_subsample_fq_salmon" + tag "fastq_subsample_fq_salmon" + tag "salmon/index" + tag "fq/subsample" + tag "salmon/quant" + + test("homo_sapiens paired-end [fastq]") { + + setup { + run("SALMON_INDEX") { + script "../../../../modules/nf-core/salmon/index/main.nf" + process { + """ + input[0] = Channel.of(file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true)) // genome_fasta + input[1] = Channel.of(file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/transcriptome.fasta', checkIfExists: true)) // transcriptome_fasta + """ + } + } + } + + when { + workflow { + """ + make_index = false + + input[0] = Channel.of([ + [ id:'test', single_end:false ], // meta map + [ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/fastq/test_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/fastq/test_2.fastq.gz', checkIfExists: true) ] + ]) + input[1] = Channel.of(file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true)) // genome_fasta + input[2] = Channel.of(file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/transcriptome.fasta', checkIfExists: true)) // transcriptome_fasta + input[3] = Channel.of(file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.gtf', checkIfExists: true)) // genome_gtf + input[4] = SALMON_INDEX.out.index + input[5] = make_index + """ + } + } + + then { + def readlines1 = path(workflow.out.reads[0][1][0]).linesGzip + def readlines2 = path(workflow.out.reads[0][1][1]).linesGzip + assertAll( + { assert workflow.success }, + { assert snapshot(readlines1[0..5]).match("test_reads_1_lines") }, + { assert snapshot(readlines1.size()).match("test_reads_1_size") }, + { assert snapshot(readlines2[0..5]).match("test_reads_2_lines") }, + { assert snapshot(readlines2.size()).match("test_reads_2_size") }, + { assert snapshot(workflow.out.versions).match("versions") }, + + { assert workflow.out.index }, + { assert workflow.out.results }, + { assert workflow.out.json_info } + ) + } + } +} diff --git a/subworkflows/nf-core/fastq_subsample_fq_salmon/tests/main.nf.test.snap b/subworkflows/nf-core/fastq_subsample_fq_salmon/tests/main.nf.test.snap new file mode 100644 index 000000000..e5905aba9 --- /dev/null +++ b/subworkflows/nf-core/fastq_subsample_fq_salmon/tests/main.nf.test.snap @@ -0,0 +1,69 @@ +{ + "test_reads_1_size": { + "content": [ + 1066944 + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-01-11T10:33:54.747992124" + }, + "versions": { + "content": [ + [ + "versions.yml:md5,12c0d1f67c2afb97470ae0974e5e01bb", + "versions.yml:md5,885fde9e7beac002b3a17b66b92db4bd" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2023-11-26T16:41:10.396971682" + }, + "test_reads_1_lines": { + "content": [ + [ + "@normal#21#998579#1/1", + "CCTTCTCCCTGCTGGGGTTGCTTGTCAGTAGCGGGCAAGGTAGGAGTGTGGCGCTTTATTGCATTTACTTTCCCTCCCCCTTCCCCCCGGCCAAGAGAGG", + "+", + "102302000331;3333;23133320233330*33/233333333333333/313232333/3;3;3/333000;11/00;;01//103*1032323233", + "@normal#21#998572#2/1", + "CTCCTCTCCTTCTACCTGCTGGGGTTGCTTGTCAGTAGCGGGCAAGGTCGGAGTGTTGCGCTTTATTGCATTTACTTTCCCTCCCCCTTCCACCCGGCCA" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-01-11T10:33:54.730250665" + }, + "test_reads_2_lines": { + "content": [ + [ + "@normal#21#998579#1/2", + "AAAAAAAAAGAAGAAGCAGAAGCTGTTTCCCTGGATATCCTGCTCACCGATTCCCCTCTCCAATTCTGTATTTTCCCTTCTCTTATTTAAGGGTCTCCAC", + "+", + "023333233332333310333302333211/3333;0300;*/;000/32;201003031/22;21333032;;11/23030322;2332333313/030", + "@normal#21#998572#2/2", + "TTCCCCTCTCCAATTGAGTATTTTCCCTTCTCTTATTTAAGGGTCTCCACACAAACAGATACAATTTTAGGGACAGCTAGGAGAAAGAACGAAAATAATAA" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-01-11T10:33:54.756723613" + }, + "test_reads_2_size": { + "content": [ + 1066944 + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-01-11T10:33:54.763399473" + } +} \ No newline at end of file diff --git a/subworkflows/nf-core/fastq_subsample_fq_salmon/tests/nextflow.config b/subworkflows/nf-core/fastq_subsample_fq_salmon/tests/nextflow.config new file mode 100644 index 000000000..7fc4d632b --- /dev/null +++ b/subworkflows/nf-core/fastq_subsample_fq_salmon/tests/nextflow.config @@ -0,0 +1,9 @@ +process { + + publishDir = { "${params.outdir}/${task.process.tokenize(':')[-1].tokenize('_')[0].toLowerCase()}" } + + withName: FQ_SUBSAMPLE { + ext.args = '--record-count 1000000 --seed 1' + } + +} diff --git a/subworkflows/nf-core/fastq_subsample_fq_salmon/tests/tags.yml b/subworkflows/nf-core/fastq_subsample_fq_salmon/tests/tags.yml new file mode 100644 index 000000000..cc809c524 --- /dev/null +++ b/subworkflows/nf-core/fastq_subsample_fq_salmon/tests/tags.yml @@ -0,0 +1,2 @@ +subworkflows/fastq_subsample_fq_salmon: + - subworkflows/nf-core/fastq_subsample_fq_salmon/** From 51d6d5a421ab2e9bb4f0f278d34c639c79f2f55b Mon Sep 17 00:00:00 2001 From: Harshil Patel Date: Sun, 4 Feb 2024 12:20:56 +0000 Subject: [PATCH 026/634] Update CHANGELOG --- CHANGELOG.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6ca230d2c..6a5f8ebbe 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,18 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Software dependencies +| Dependency | Old version | New version | +| ----------- | ----------- | ----------- | +| `picard` | 3.0.0 | 3.1.1 | +| `samtools` | 1.17 | 1.18 | +| `sortmerna` | 4.3.4 | 4.3.6 | + +> **NB:** Dependency has been **updated** if both old and new version information is present. +> +> **NB:** Dependency has been **added** if just the new version information is present. +> +> **NB:** Dependency has been **removed** if new version information isn't present. + ## [[3.14.0](https://github.com/nf-core/rnaseq/releases/tag/3.14.0)] - 2024-01-08 ### Credits From 56db0019435227d16d3ef87c9fb34558a73e4633 Mon Sep 17 00:00:00 2001 From: Harshil Patel Date: Sun, 4 Feb 2024 12:47:40 +0000 Subject: [PATCH 027/634] Fix channel renaming in rseqc subworkflow --- workflows/rnaseq.nf | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/workflows/rnaseq.nf b/workflows/rnaseq.nf index 2670d69ec..63484acce 100755 --- a/workflows/rnaseq.nf +++ b/workflows/rnaseq.nf @@ -777,14 +777,14 @@ workflow RNASEQ { PREPARE_GENOME.out.gene_bed, rseqc_modules ) - ch_bamstat_multiqc = BAM_RSEQC.out.bamstat_txt - ch_inferexperiment_multiqc = BAM_RSEQC.out.inferexperiment_txt - ch_innerdistance_multiqc = BAM_RSEQC.out.innerdistance_freq - ch_junctionannotation_multiqc = BAM_RSEQC.out.junctionannotation_log - ch_junctionsaturation_multiqc = BAM_RSEQC.out.junctionsaturation_rscript - ch_readdistribution_multiqc = BAM_RSEQC.out.readdistribution_txt - ch_readduplication_multiqc = BAM_RSEQC.out.readduplication_pos_xls - ch_tin_multiqc = BAM_RSEQC.out.tin_txt + ch_bamstat_multiqc = BAM_RSEQC.out.ch_bamstat + ch_inferexperiment_multiqc = BAM_RSEQC.out.ch_inferexperiment + ch_innerdistance_multiqc = BAM_RSEQC.out.ch_innerdistance_freq + ch_junctionannotation_multiqc = BAM_RSEQC.out.ch_junctionannotation_log + ch_junctionsaturation_multiqc = BAM_RSEQC.out.ch_junctionsaturation_rscript + ch_readdistribution_multiqc = BAM_RSEQC.out.ch_readdistribution + ch_readduplication_multiqc = BAM_RSEQC.out.ch_readduplication_pos_xls + ch_tin_multiqc = BAM_RSEQC.out.ch_tin ch_versions = ch_versions.mix(BAM_RSEQC.out.versions) ch_inferexperiment_multiqc From c0277fc46d42d33d034835bc7f7c3edeb3ba1fe5 Mon Sep 17 00:00:00 2001 From: Harshil Patel Date: Sun, 4 Feb 2024 12:48:28 +0000 Subject: [PATCH 028/634] Add config for publishing pseudo-alignment files --- workflows/rnaseq/nextflow.config | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/workflows/rnaseq/nextflow.config b/workflows/rnaseq/nextflow.config index 17a45ac96..fd4f1435d 100644 --- a/workflows/rnaseq/nextflow.config +++ b/workflows/rnaseq/nextflow.config @@ -338,7 +338,38 @@ if (!params.skip_alignment && params.aligner == 'star_rsem') { } } +// +// Pseudo-alignment options +// + if (!params.skip_pseudo_alignment && params.pseudo_aligner) { + process { + withName: '.*:QUANTIFY_PSEUDO_ALIGNMENT:TX2GENE' { + publishDir = [ + path: { "${params.outdir}/${params.pseudo_aligner}" }, + mode: params.publish_dir_mode, + saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + ] + } + + withName: '.*:QUANTIFY_PSEUDO_ALIGNMENT:TXIMPORT' { + ext.prefix = { "${quant_type}.merged" } + publishDir = [ + path: { "${params.outdir}/${params.pseudo_aligner}" }, + mode: params.publish_dir_mode, + saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + ] + } + + withName: '.*:QUANTIFY_PSEUDO_ALIGNMENT:SE_.*' { + publishDir = [ + path: { "${params.outdir}/${params.pseudo_aligner}" }, + mode: params.publish_dir_mode, + saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + ] + } + } + if (!params.skip_qc & !params.skip_deseq2_qc) { process { withName: 'DESEQ2_QC_PSEUDO' { From 440b806f19c0aae61ec152f5d141569930268c66 Mon Sep 17 00:00:00 2001 From: nf-core-bot Date: Mon, 5 Feb 2024 09:42:08 +0000 Subject: [PATCH 029/634] [automated] Fix linting with Prettier --- .github/workflows/download_pipeline.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/download_pipeline.yml b/.github/workflows/download_pipeline.yml index 8611458a7..8a3300450 100644 --- a/.github/workflows/download_pipeline.yml +++ b/.github/workflows/download_pipeline.yml @@ -64,4 +64,4 @@ jobs: env: NXF_SINGULARITY_CACHEDIR: ./ NXF_SINGULARITY_HOME_MOUNT: true - run: nextflow run ./${{ env.REPOTITLE_LOWERCASE }}/$( sed 's/\W/_/g' <<< ${{ env.REPO_BRANCH }}) -stub -profile test,singularity --outdir ./results + run: nextflow run ./${{ env.REPOTITLE_LOWERCASE }}/$( sed 's/\W/_/g' <<< ${{ env.REPO_BRANCH }}) -stub -profile test,singularity --outdir ./results From 9e0ed77fa3b7c863ec68ce9f9ed6570a15b12d05 Mon Sep 17 00:00:00 2001 From: Harshil Patel Date: Mon, 5 Feb 2024 09:45:42 +0000 Subject: [PATCH 030/634] Fix ECLint --- bin/prepare-for-rsem.py | 6 ++--- bin/tximport.r | 1 - subworkflows/local/align_star/main.nf | 2 +- subworkflows/local/prepare_genome/main.nf | 2 +- subworkflows/local/quantify_pseudo/main.nf | 4 ++-- workflows/rnaseq.nf | 26 +++++++++++----------- 6 files changed, 20 insertions(+), 21 deletions(-) diff --git a/bin/prepare-for-rsem.py b/bin/prepare-for-rsem.py index f874af792..6e7258df6 100755 --- a/bin/prepare-for-rsem.py +++ b/bin/prepare-for-rsem.py @@ -55,9 +55,9 @@ Usage: umi_tools prepare_for_rsem [OPTIONS] [--stdin=IN_BAM] [--stdout=OUT_BAM] - note: If --stdout is omited, standard out is output. To - generate a valid BAM file on standard out, please - redirect log with --log=LOGFILE or --log2stderr """ + note: If --stdout is omited, standard out is output. To + generate a valid BAM file on standard out, please + redirect log with --log=LOGFILE or --log2stderr """ def chunk_bam(bamfile): diff --git a/bin/tximport.r b/bin/tximport.r index 59a8fcd9e..a75066728 100755 --- a/bin/tximport.r +++ b/bin/tximport.r @@ -140,4 +140,3 @@ done <- lapply(params, write_se_table) # Output session information and citations citation("tximeta") sessionInfo() - diff --git a/subworkflows/local/align_star/main.nf b/subworkflows/local/align_star/main.nf index 1dba0c085..4f516e8e0 100644 --- a/subworkflows/local/align_star/main.nf +++ b/subworkflows/local/align_star/main.nf @@ -11,7 +11,7 @@ workflow ALIGN_STAR { reads // channel: [ val(meta), [ reads ] ] index // channel: [ val(meta), [ index ] ] gtf // channel: [ val(meta), [ gtf ] ] - star_ignore_sjdbgtf // boolean: when using pre-built STAR indices do not re-extract and use splice junctions from the GTF file + star_ignore_sjdbgtf // boolean: when using pre-built STAR indices do not re-extract and use splice junctions from the GTF file seq_platform // string : sequencing platform seq_center // string : sequencing center is_aws_igenome // boolean: whether the genome files are from AWS iGenomes diff --git a/subworkflows/local/prepare_genome/main.nf b/subworkflows/local/prepare_genome/main.nf index 0840c7734..cd44f9739 100644 --- a/subworkflows/local/prepare_genome/main.nf +++ b/subworkflows/local/prepare_genome/main.nf @@ -91,7 +91,7 @@ workflow PREPARE_GENOME { ch_versions = ch_versions.mix(GFFREAD.out.versions) } - if (filter_gtf) { + if (filter_gtf) { GTF_FILTER ( ch_fasta, ch_gtf ) ch_gtf = GTF_FILTER.out.genome_gtf ch_versions = ch_versions.mix(GTF_FILTER.out.versions) diff --git a/subworkflows/local/quantify_pseudo/main.nf b/subworkflows/local/quantify_pseudo/main.nf index 7887f086f..3fa13addd 100644 --- a/subworkflows/local/quantify_pseudo/main.nf +++ b/subworkflows/local/quantify_pseudo/main.nf @@ -18,11 +18,11 @@ workflow QUANTIFY_PSEUDO_ALIGNMENT { index // channel: /path/to//index/ transcript_fasta // channel: /path/to/transcript.fasta gtf // channel: /path/to/genome.gtf - pseudo_aligner // val: kallisto or salmon + pseudo_aligner // val: kallisto or salmon alignment_mode // bool: Run Salmon in alignment mode lib_type // val: String to override Salmon library type kallisto_quant_fraglen // val: Estimated fragment length required by Kallisto in single-end mode - kallisto_quant_fraglen_sd // val: Estimated standard error for fragment length required by Kallisto in single-end mode + kallisto_quant_fraglen_sd // val: Estimated standard error for fragment length required by Kallisto in single-end mode main: diff --git a/workflows/rnaseq.nf b/workflows/rnaseq.nf index 63484acce..5a63dbd9f 100755 --- a/workflows/rnaseq.nf +++ b/workflows/rnaseq.nf @@ -40,15 +40,15 @@ if (!params.skip_alignment) { prepareToolIndices << params.aligner } if (!params.skip_pseudo_alignment && params.pseudo_aligner) { prepareToolIndices << params.pseudo_aligner } // Determine whether to filter the GTF or not -def filterGtf = +def filterGtf = (( // Condition 1: Alignment is required and aligner is set !params.skip_alignment && params.aligner - ) || + ) || ( // Condition 2: Pseudoalignment is required and pseudoaligner is set !params.skip_pseudo_alignment && params.pseudo_aligner - ) || + ) || ( // Condition 3: Transcript FASTA file is not provided !params.transcript_fasta @@ -347,11 +347,11 @@ workflow RNASEQ { ch_sortmerna_multiqc = SORTMERNA.out.log ch_versions = ch_versions.mix(SORTMERNA.out.versions.first()) } - + // // SUBWORKFLOW: Sub-sample FastQ files and pseudoalign with Salmon to auto-infer strandedness // - + // Branch FastQ channels if 'auto' specified to infer strandedness ch_filtered_reads .branch { @@ -819,14 +819,14 @@ workflow RNASEQ { // ch_pseudo_multiqc = Channel.empty() ch_pseudoaligner_pca_multiqc = Channel.empty() - ch_pseudoaligner_clustering_multiqc = Channel.empty() + ch_pseudoaligner_clustering_multiqc = Channel.empty() if (!params.skip_pseudo_alignment && params.pseudo_aligner) { - if (params.pseudo_aligner == 'salmon') { - ch_pseudo_index = PREPARE_GENOME.out.salmon_index - } else { - ch_pseudo_index = PREPARE_GENOME.out.kallisto_index - } + if (params.pseudo_aligner == 'salmon') { + ch_pseudo_index = PREPARE_GENOME.out.salmon_index + } else { + ch_pseudo_index = PREPARE_GENOME.out.kallisto_index + } QUANTIFY_PSEUDO_ALIGNMENT ( ch_strand_inferred_filtered_fastq, @@ -854,7 +854,7 @@ workflow RNASEQ { ch_versions = ch_versions.mix(DESEQ2_QC_PSEUDO.out.versions) } } - + // // MODULE: Pipeline reporting // @@ -925,7 +925,7 @@ workflow.onComplete { if (params.email || params.email_on_fail) { NfcoreTemplate.email(workflow, params, summary_params, projectDir, log, multiqc_report, pass_mapped_reads, pass_trimmed_reads, pass_strand_check) } - + NfcoreTemplate.dump_parameters(workflow, params) NfcoreTemplate.summary(workflow, params, log, pass_mapped_reads, pass_trimmed_reads, pass_strand_check) From ddd69af04d4ad72e182b8d0b3ec66bc5122f43f3 Mon Sep 17 00:00:00 2001 From: Harshil Patel Date: Mon, 5 Feb 2024 09:54:49 +0000 Subject: [PATCH 031/634] Update .nf-core.yml to exclude linting for params.ribo_database_manifest --- .nf-core.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.nf-core.yml b/.nf-core.yml index 3d8ac0593..c67bd2e92 100644 --- a/.nf-core.yml +++ b/.nf-core.yml @@ -4,4 +4,6 @@ lint: - assets/email_template.html - assets/email_template.txt - lib/NfcoreTemplate.groovy - nextflow_config: false + nextflow_config: + - config_defaults: + - params.ribo_database_manifest From 7fd5c0339d06e60dda3b733c963ae9042e4f96e6 Mon Sep 17 00:00:00 2001 From: Harshil Patel Date: Mon, 5 Feb 2024 09:57:48 +0000 Subject: [PATCH 032/634] Fix bloody prettier again --- .nf-core.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.nf-core.yml b/.nf-core.yml index c67bd2e92..5661fd36b 100644 --- a/.nf-core.yml +++ b/.nf-core.yml @@ -6,4 +6,4 @@ lint: - lib/NfcoreTemplate.groovy nextflow_config: - config_defaults: - - params.ribo_database_manifest + - params.ribo_database_manifest From 4be91acf9ba1965ab8c385b4e980595a0269bb55 Mon Sep 17 00:00:00 2001 From: Harshil Patel Date: Mon, 5 Feb 2024 11:12:23 +0100 Subject: [PATCH 033/634] Update README.md Co-authored-by: Maxime U Garcia --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 20fa573f1..f3a8590f6 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,7 @@ nf-core/rnaseq + [![GitHub Actions CI Status](https://github.com/nf-core/rnaseq/workflows/nf-core%20CI/badge.svg)](https://github.com/nf-core/rnaseq/actions?query=workflow%3A%22nf-core+CI%22) [![GitHub Actions Linting Status](https://github.com/nf-core/rnaseq/workflows/nf-core%20linting/badge.svg)](https://github.com/nf-core/rnaseq/actions?query=workflow%3A%22nf-core+linting%22)[![AWS CI](https://img.shields.io/badge/CI%20tests-full%20size-FF9900?labelColor=000000&logo=Amazon%20AWS)](https://nf-co.re/rnaseq/results)[![Cite with Zenodo](http://img.shields.io/badge/DOI-10.5281/zenodo.1400710-1073c8?labelColor=000000)](https://doi.org/10.5281/zenodo.1400710) From bfa3c8f121b4d0ac5d682c7c52e07ef11735c2a7 Mon Sep 17 00:00:00 2001 From: Harshil Patel Date: Mon, 5 Feb 2024 12:39:05 +0100 Subject: [PATCH 034/634] Fix rseqc channel renaming --- workflows/rnaseq/main.nf | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/workflows/rnaseq/main.nf b/workflows/rnaseq/main.nf index fb9a7e979..1da6df048 100755 --- a/workflows/rnaseq/main.nf +++ b/workflows/rnaseq/main.nf @@ -656,14 +656,14 @@ workflow NFCORE_RNASEQ { ch_gene_bed, rseqc_modules ) - ch_multiqc_files = ch_multiqc_files.mix(BAM_RSEQC.out.bamstat_txt.collect{it[1]}) - ch_multiqc_files = ch_multiqc_files.mix(BAM_RSEQC.out.inferexperiment_txt.collect{it[1]}) - ch_multiqc_files = ch_multiqc_files.mix(BAM_RSEQC.out.innerdistance_freq.collect{it[1]}) - ch_multiqc_files = ch_multiqc_files.mix(BAM_RSEQC.out.junctionannotation_log.collect{it[1]}) - ch_multiqc_files = ch_multiqc_files.mix(BAM_RSEQC.out.junctionsaturation_rscript.collect{it[1]}) - ch_multiqc_files = ch_multiqc_files.mix(BAM_RSEQC.out.readdistribution_txt.collect{it[1]}) - ch_multiqc_files = ch_multiqc_files.mix(BAM_RSEQC.out.readduplication_pos_xls.collect{it[1]}) - ch_multiqc_files = ch_multiqc_files.mix(BAM_RSEQC.out.tin_txt.collect{it[1]}) + ch_multiqc_files = ch_multiqc_files.mix(BAM_RSEQC.out.ch_bamstat.collect{it[1]}) + ch_multiqc_files = ch_multiqc_files.mix(BAM_RSEQC.out.ch_inferexperiment.collect{it[1]}) + ch_multiqc_files = ch_multiqc_files.mix(BAM_RSEQC.out.ch_innerdistance_freq.collect{it[1]}) + ch_multiqc_files = ch_multiqc_files.mix(BAM_RSEQC.out.ch_junctionannotation_log.collect{it[1]}) + ch_multiqc_files = ch_multiqc_files.mix(BAM_RSEQC.out.ch_junctionsaturation_rscript.collect{it[1]}) + ch_multiqc_files = ch_multiqc_files.mix(BAM_RSEQC.out.ch_readdistribution.collect{it[1]}) + ch_multiqc_files = ch_multiqc_files.mix(BAM_RSEQC.out.ch_readduplication_pos_xls.collect{it[1]}) + ch_multiqc_files = ch_multiqc_files.mix(BAM_RSEQC.out.ch_tin.collect{it[1]}) ch_versions = ch_versions.mix(BAM_RSEQC.out.versions) BAM_RSEQC From 9a258e58104b9a280f7a1cc57340fcee99e7fdd4 Mon Sep 17 00:00:00 2001 From: Harshil Patel Date: Mon, 5 Feb 2024 12:41:04 +0100 Subject: [PATCH 035/634] Fix rseqc channel renaming --- workflows/rnaseq/main.nf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/workflows/rnaseq/main.nf b/workflows/rnaseq/main.nf index 1da6df048..6522fb00b 100755 --- a/workflows/rnaseq/main.nf +++ b/workflows/rnaseq/main.nf @@ -668,7 +668,7 @@ workflow NFCORE_RNASEQ { BAM_RSEQC .out - .inferexperiment_txt + .ch_inferexperiment .map { meta, strand_log -> def inferred_strand = getInferexperimentStrandedness(strand_log, 30) From 491a6b043d474a209deb40b52e9ac36fb8f6f358 Mon Sep 17 00:00:00 2001 From: Harshil Patel Date: Mon, 5 Feb 2024 12:45:26 +0100 Subject: [PATCH 036/634] Fix ECLint --- .../local/bedtools_genomecov/nextflow.config | 2 +- modules/local/dupradar/nextflow.config | 2 +- subworkflows/local/align_star/nextflow.config | 2 +- subworkflows/local/prepare_genome/main.nf | 10 ++++----- .../quantify_pseudo_alignment/nextflow.config | 2 +- .../local/quantify_rsem/nextflow.config | 2 +- .../utils_nfcore_rnaseq_pipeline/main.nf | 2 +- .../bam_markduplicates_picard/nextflow.config | 2 +- .../fastq_align_hisat2/nextflow.config | 2 +- .../fastq_subsample_fq_salmon/nextflow.config | 2 +- .../tests/main.function.nf.test | 2 +- .../tests/nextflow.config | 2 +- .../tests/main.function.nf.test | 2 +- .../tests/nextflow.config | 2 +- .../tests/main.nf.test | 2 +- workflows/rnaseq/main.nf | 22 +++++++++---------- 16 files changed, 30 insertions(+), 30 deletions(-) diff --git a/modules/local/bedtools_genomecov/nextflow.config b/modules/local/bedtools_genomecov/nextflow.config index 397b4b84b..85f3d34ae 100644 --- a/modules/local/bedtools_genomecov/nextflow.config +++ b/modules/local/bedtools_genomecov/nextflow.config @@ -8,4 +8,4 @@ if (!params.skip_alignment && !params.skip_bigwig) { ] } } -} \ No newline at end of file +} diff --git a/modules/local/dupradar/nextflow.config b/modules/local/dupradar/nextflow.config index cff3fa401..3ade56ad5 100644 --- a/modules/local/dupradar/nextflow.config +++ b/modules/local/dupradar/nextflow.config @@ -32,4 +32,4 @@ if (!params.skip_alignment && !params.skip_qc) { } } } -} \ No newline at end of file +} diff --git a/subworkflows/local/align_star/nextflow.config b/subworkflows/local/align_star/nextflow.config index 328579da2..68bfef562 100644 --- a/subworkflows/local/align_star/nextflow.config +++ b/subworkflows/local/align_star/nextflow.config @@ -36,4 +36,4 @@ if (!params.skip_alignment && params.aligner == 'star_salmon') { ] } } -} \ No newline at end of file +} diff --git a/subworkflows/local/prepare_genome/main.nf b/subworkflows/local/prepare_genome/main.nf index ace271641..3467529d4 100644 --- a/subworkflows/local/prepare_genome/main.nf +++ b/subworkflows/local/prepare_genome/main.nf @@ -94,15 +94,15 @@ workflow PREPARE_GENOME { } // Determine whether to filter the GTF or not - def filter_gtf = + def filter_gtf = (( // Condition 1: Alignment is required and aligner is set !skip_alignment && aligner - ) || + ) || ( // Condition 2: Pseudoalignment is required and pseudoaligner is set !skip_pseudo_alignment && pseudo_aligner - ) || + ) || ( // Condition 3: Transcript FASTA file is not provided !transcript_fasta @@ -111,7 +111,7 @@ workflow PREPARE_GENOME { // Condition 4: --skip_gtf_filter is not provided !skip_gtf_filter ) - if (filter_gtf) { + if (filter_gtf) { GTF_FILTER ( ch_fasta, ch_gtf ) ch_gtf = GTF_FILTER.out.genome_gtf ch_versions = ch_versions.mix(GTF_FILTER.out.versions) @@ -180,7 +180,7 @@ workflow PREPARE_GENOME { // // Get list of indices that need to be created - // + // def prepare_tool_indices = [] if (!skip_bbsplit) { prepare_tool_indices << 'bbsplit' } if (!skip_alignment) { prepare_tool_indices << aligner } diff --git a/subworkflows/local/quantify_pseudo_alignment/nextflow.config b/subworkflows/local/quantify_pseudo_alignment/nextflow.config index 3c3a245b4..33ec53672 100644 --- a/subworkflows/local/quantify_pseudo_alignment/nextflow.config +++ b/subworkflows/local/quantify_pseudo_alignment/nextflow.config @@ -51,4 +51,4 @@ if (!params.skip_pseudo_alignment && params.pseudo_aligner) { ] } } -} \ No newline at end of file +} diff --git a/subworkflows/local/quantify_rsem/nextflow.config b/subworkflows/local/quantify_rsem/nextflow.config index 514177e32..7b50b86c0 100644 --- a/subworkflows/local/quantify_rsem/nextflow.config +++ b/subworkflows/local/quantify_rsem/nextflow.config @@ -36,4 +36,4 @@ if (!params.skip_alignment && params.aligner == 'star_rsem') { ] } } -} \ No newline at end of file +} diff --git a/subworkflows/local/utils_nfcore_rnaseq_pipeline/main.nf b/subworkflows/local/utils_nfcore_rnaseq_pipeline/main.nf index 684325f6e..9c7b42efb 100644 --- a/subworkflows/local/utils_nfcore_rnaseq_pipeline/main.nf +++ b/subworkflows/local/utils_nfcore_rnaseq_pipeline/main.nf @@ -248,7 +248,7 @@ def validateInputParameters() { // Check rRNA databases for sortmerna if (params.remove_ribo_rna) { ch_ribo_db = file(params.ribo_database_manifest) - if (ch_ribo_db.isEmpty()) { + if (ch_ribo_db.isEmpty()) { error("File provided with --ribo_database_manifest is empty: ${ch_ribo_db.getName()}!") } } diff --git a/subworkflows/nf-core/bam_markduplicates_picard/nextflow.config b/subworkflows/nf-core/bam_markduplicates_picard/nextflow.config index 94a3e52b7..2778db78d 100644 --- a/subworkflows/nf-core/bam_markduplicates_picard/nextflow.config +++ b/subworkflows/nf-core/bam_markduplicates_picard/nextflow.config @@ -38,4 +38,4 @@ if (!params.skip_alignment) { } } } -} \ No newline at end of file +} diff --git a/subworkflows/nf-core/fastq_align_hisat2/nextflow.config b/subworkflows/nf-core/fastq_align_hisat2/nextflow.config index 94633dfa6..0f6d1abdc 100644 --- a/subworkflows/nf-core/fastq_align_hisat2/nextflow.config +++ b/subworkflows/nf-core/fastq_align_hisat2/nextflow.config @@ -23,4 +23,4 @@ if (!params.skip_alignment && params.aligner == 'hisat2') { ] } } -} \ No newline at end of file +} diff --git a/subworkflows/nf-core/fastq_subsample_fq_salmon/nextflow.config b/subworkflows/nf-core/fastq_subsample_fq_salmon/nextflow.config index 5425935cd..36a8c5d7a 100644 --- a/subworkflows/nf-core/fastq_subsample_fq_salmon/nextflow.config +++ b/subworkflows/nf-core/fastq_subsample_fq_salmon/nextflow.config @@ -13,4 +13,4 @@ process { enabled: false ] } -} \ No newline at end of file +} diff --git a/subworkflows/nf-core/utils_nextflow_pipeline/tests/main.function.nf.test b/subworkflows/nf-core/utils_nextflow_pipeline/tests/main.function.nf.test index 8ed4310ca..68718e4f5 100644 --- a/subworkflows/nf-core/utils_nextflow_pipeline/tests/main.function.nf.test +++ b/subworkflows/nf-core/utils_nextflow_pipeline/tests/main.function.nf.test @@ -51,4 +51,4 @@ nextflow_function { ) } } -} \ No newline at end of file +} diff --git a/subworkflows/nf-core/utils_nextflow_pipeline/tests/nextflow.config b/subworkflows/nf-core/utils_nextflow_pipeline/tests/nextflow.config index 53574ffec..d0a926bf6 100644 --- a/subworkflows/nf-core/utils_nextflow_pipeline/tests/nextflow.config +++ b/subworkflows/nf-core/utils_nextflow_pipeline/tests/nextflow.config @@ -6,4 +6,4 @@ manifest { nextflowVersion = '!>=23.04.0' version = '9.9.9' doi = 'https://doi.org/10.5281/zenodo.5070524' -} \ No newline at end of file +} diff --git a/subworkflows/nf-core/utils_nfcore_pipeline/tests/main.function.nf.test b/subworkflows/nf-core/utils_nfcore_pipeline/tests/main.function.nf.test index c176295d6..f7ea05fcd 100644 --- a/subworkflows/nf-core/utils_nfcore_pipeline/tests/main.function.nf.test +++ b/subworkflows/nf-core/utils_nfcore_pipeline/tests/main.function.nf.test @@ -111,4 +111,4 @@ nextflow_function { ) } } -} \ No newline at end of file +} diff --git a/subworkflows/nf-core/utils_nfcore_pipeline/tests/nextflow.config b/subworkflows/nf-core/utils_nfcore_pipeline/tests/nextflow.config index 53574ffec..d0a926bf6 100644 --- a/subworkflows/nf-core/utils_nfcore_pipeline/tests/nextflow.config +++ b/subworkflows/nf-core/utils_nfcore_pipeline/tests/nextflow.config @@ -6,4 +6,4 @@ manifest { nextflowVersion = '!>=23.04.0' version = '9.9.9' doi = 'https://doi.org/10.5281/zenodo.5070524' -} \ No newline at end of file +} diff --git a/subworkflows/nf-core/utils_nfvalidation_plugin/tests/main.nf.test b/subworkflows/nf-core/utils_nfvalidation_plugin/tests/main.nf.test index 517ee54e4..5784a33f2 100644 --- a/subworkflows/nf-core/utils_nfvalidation_plugin/tests/main.nf.test +++ b/subworkflows/nf-core/utils_nfvalidation_plugin/tests/main.nf.test @@ -197,4 +197,4 @@ nextflow_workflow { ) } } -} \ No newline at end of file +} diff --git a/workflows/rnaseq/main.nf b/workflows/rnaseq/main.nf index 6522fb00b..a9ca03ed2 100755 --- a/workflows/rnaseq/main.nf +++ b/workflows/rnaseq/main.nf @@ -190,7 +190,7 @@ workflow NFCORE_RNASEQ { } .set { ch_fail_trimming_multiqc } ch_multiqc_files = ch_multiqc_files.mix(ch_fail_trimming_multiqc.collectFile(name: 'fail_trimmed_samples_mqc.tsv')) - + // // MODULE: Remove genome contaminant reads // @@ -224,11 +224,11 @@ workflow NFCORE_RNASEQ { ch_multiqc_files = ch_multiqc_files.mix(SORTMERNA.out.log.collect{it[1]}) ch_versions = ch_versions.mix(SORTMERNA.out.versions.first()) } - + // // SUBWORKFLOW: Sub-sample FastQ files and pseudoalign with Salmon to auto-infer strandedness // - + // Branch FastQ channels if 'auto' specified to infer strandedness ch_filtered_reads .branch { @@ -248,8 +248,8 @@ workflow NFCORE_RNASEQ { .set { ch_genome_fasta } def prepare_tool_indices = [] - if (!params.skip_pseudo_alignment && params.pseudo_aligner) { - prepare_tool_indices << params.pseudo_aligner + if (!params.skip_pseudo_alignment && params.pseudo_aligner) { + prepare_tool_indices << params.pseudo_aligner } FASTQ_SUBSAMPLE_FQ_SALMON ( ch_strand_fastq.auto_strand, @@ -696,14 +696,14 @@ workflow NFCORE_RNASEQ { // // SUBWORKFLOW: Pseudoalignment and quantification with Salmon - // + // if (!params.skip_pseudo_alignment && params.pseudo_aligner) { - if (params.pseudo_aligner == 'salmon') { - ch_pseudo_index = ch_salmon_index - } else { - ch_pseudo_index = ch_kallisto_index - } + if (params.pseudo_aligner == 'salmon') { + ch_pseudo_index = ch_salmon_index + } else { + ch_pseudo_index = ch_kallisto_index + } QUANTIFY_PSEUDO_ALIGNMENT ( ch_strand_inferred_filtered_fastq, From d885478e0a7d8c085f88d5bbc25ed39b6cc54a95 Mon Sep 17 00:00:00 2001 From: Harshil Patel Date: Mon, 5 Feb 2024 12:50:04 +0100 Subject: [PATCH 037/634] Update CHANGELOG --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6a5f8ebbe..f87b28aed 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [PR #1186](https://github.com/nf-core/rnaseq/pull/1186) - Properly update qualimap/rnaseq module (ie not patch) - [PR #1201](https://github.com/nf-core/rnaseq/pull/1201) - Template update for nf-core/tools v2.12 +- [PR #1206](https://github.com/nf-core/rnaseq/pull/1206) - Remove `lib/` directory and `modules.config` ### Parameters From aeec5a9b583c125b6d8a9ee8c1056e0d60872d42 Mon Sep 17 00:00:00 2001 From: Harshil Patel Date: Mon, 5 Feb 2024 14:15:51 +0100 Subject: [PATCH 038/634] Update nf-core/utils_nfcore_pipeline subworkflow --- modules.json | 2 +- subworkflows/nf-core/utils_nfcore_pipeline/main.nf | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/modules.json b/modules.json index 34053b467..2a7cec6af 100644 --- a/modules.json +++ b/modules.json @@ -299,7 +299,7 @@ }, "utils_nfcore_pipeline": { "branch": "master", - "git_sha": "cd08c91373cd00a73255081340e4914485846ba1", + "git_sha": "73b63c8e510107010ab13b68cf31189d6cdca8cb", "installed_by": ["subworkflows"] }, "utils_nfvalidation_plugin": { diff --git a/subworkflows/nf-core/utils_nfcore_pipeline/main.nf b/subworkflows/nf-core/utils_nfcore_pipeline/main.nf index 2b7ec3df5..6d805bb3f 100644 --- a/subworkflows/nf-core/utils_nfcore_pipeline/main.nf +++ b/subworkflows/nf-core/utils_nfcore_pipeline/main.nf @@ -101,6 +101,7 @@ def softwareVersionsToYAML(ch_versions) { return ch_versions .unique() .map { processVersionsFromYAML(it) } + .unique() .mix(Channel.of(workflowVersionToYAML())) } From 193af39a7afa6dca9f2a55906fb1572a6702ab62 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Wed, 7 Feb 2024 14:46:29 +0000 Subject: [PATCH 039/634] Use tx2gene from nf-core/modules --- modules.json | 5 + modules/local/tx2gene/main.nf | 37 ---- .../nf-core/custom/tx2gene/environment.yml | 9 + modules/nf-core/custom/tx2gene/main.nf | 36 ++++ modules/nf-core/custom/tx2gene/meta.yml | 65 ++++++ .../custom/tx2gene/templates/tx2gene.py | 186 ++++++++++++++++++ .../nf-core/custom/tx2gene/tests/main.nf.test | 99 ++++++++++ .../custom/tx2gene/tests/main.nf.test.snap | 70 +++++++ modules/nf-core/custom/tx2gene/tests/tags.yml | 2 + .../local/quantify_pseudo_alignment/main.nf | 28 ++- workflows/rnaseq/main.nf | 4 + 11 files changed, 496 insertions(+), 45 deletions(-) delete mode 100644 modules/local/tx2gene/main.nf create mode 100644 modules/nf-core/custom/tx2gene/environment.yml create mode 100644 modules/nf-core/custom/tx2gene/main.nf create mode 100644 modules/nf-core/custom/tx2gene/meta.yml create mode 100755 modules/nf-core/custom/tx2gene/templates/tx2gene.py create mode 100644 modules/nf-core/custom/tx2gene/tests/main.nf.test create mode 100644 modules/nf-core/custom/tx2gene/tests/main.nf.test.snap create mode 100644 modules/nf-core/custom/tx2gene/tests/tags.yml diff --git a/modules.json b/modules.json index 2a7cec6af..c4e0bed94 100644 --- a/modules.json +++ b/modules.json @@ -20,6 +20,11 @@ "git_sha": "1b0ffa4e5aed5b7e3cd4311af31bd3b2c8345051", "installed_by": ["modules"] }, + "custom/tx2gene": { + "branch": "fix_tx2gene", + "git_sha": "158e921868eb35119b49395d5057901fb3ab303a", + "installed_by": ["modules"] + }, "fastp": { "branch": "master", "git_sha": "003920c7f9a8ae19b69a97171922880220bedf56", diff --git a/modules/local/tx2gene/main.nf b/modules/local/tx2gene/main.nf deleted file mode 100644 index 150e74afb..000000000 --- a/modules/local/tx2gene/main.nf +++ /dev/null @@ -1,37 +0,0 @@ -process TX2GENE { - tag "$gtf" - label "process_low" - - conda "conda-forge::python=3.9.5" - container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/python:3.9--1' : - 'biocontainers/python:3.9--1' }" - - input: - path ("quants/*") - val quant_type - path gtf - - output: - path "*.tsv" , emit: tsv - path "versions.yml", emit: versions - - when: - task.ext.when == null || task.ext.when - - script: // This script is bundled with the pipeline, in nf-core/rnaseq/bin/ - """ - tx2gene.py \\ - --quant_type $quant_type \\ - --gtf $gtf \\ - --quants quants \\ - --id $params.gtf_group_features \\ - --extra $params.gtf_extra_attributes \\ - -o tx2gene.tsv - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - python: \$(python --version | sed 's/Python //g') - END_VERSIONS - """ -} diff --git a/modules/nf-core/custom/tx2gene/environment.yml b/modules/nf-core/custom/tx2gene/environment.yml new file mode 100644 index 000000000..a859dc881 --- /dev/null +++ b/modules/nf-core/custom/tx2gene/environment.yml @@ -0,0 +1,9 @@ +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json +name: "custom_tx2gene" +channels: + - conda-forge + - bioconda + - defaults +dependencies: + - python=3.9.5 diff --git a/modules/nf-core/custom/tx2gene/main.nf b/modules/nf-core/custom/tx2gene/main.nf new file mode 100644 index 000000000..99c00aa06 --- /dev/null +++ b/modules/nf-core/custom/tx2gene/main.nf @@ -0,0 +1,36 @@ +process CUSTOM_TX2GENE { + tag "$meta.id" + label 'process_single' + + conda "${moduleDir}/environment.yml" + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/python:3.9--1' : + 'biocontainers/python:3.9--1' }" + + input: + tuple val(meta), path(gtf) + tuple val(meta2), path ("quants/*") + val quant_type + val id + val extra + + output: + tuple val(meta), path("*tx2gene.tsv"), emit: tx2gene + path "versions.yml" , emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + template 'tx2gene.py' + + stub: + """ + touch ${meta.id}.tx2gene.tsv + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + python: \$(python --version | sed 's/Python //g') + END_VERSIONS + """ +} diff --git a/modules/nf-core/custom/tx2gene/meta.yml b/modules/nf-core/custom/tx2gene/meta.yml new file mode 100644 index 000000000..d991bf1be --- /dev/null +++ b/modules/nf-core/custom/tx2gene/meta.yml @@ -0,0 +1,65 @@ +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/meta-schema.json +name: "custom_tx2gene" +description: Make a transcript/gene mapping from a GTF and cross-reference with transcript quantifications. +keywords: + - gene + - gtf + - pseudoalignment + - transcript +tools: + - "custom": + description: | + "Custom module to create a transcript to gene mapping from a GTF and + check it against transcript quantifications" + tool_dev_url: "https://github.com/nf-core/modules/blob/master/modules/nf-core/custom/tx2gene/main.nf" + licence: ["MIT"] + +input: + - meta: + type: map + description: | + Groovy Map containing reference information related to the GTF file + e.g. `[ id:'yeast' ]` + - gtf: + type: file + description: An annotation file of the reference genome in GTF format + pattern: "*.gtf" + - meta2: + type: map + description: | + Groovy Map containing information related to the experiment as a whole + e.g. `[ id:'SRP123456' ]` + - quants: + type: directory + description: Paths to subdirectories corresponding to + sample-wise runs of Salmon or Kallisto + - quant_type: + type: string + description: Quantification type, 'kallisto' or 'salmon' + - id: + type: string + description: Gene ID attribute in the GTF file (default= gene_id) + - extra: + type: string + description: Extra gene attribute in the GTF file (default= gene_name) + +output: + - meta: + type: map + description: | + Groovy Map containing reference information related to the GTF file + e.g. `[ id:'yeast' ]` + - tx2gene: + type: file + description: A transcript/ gene mapping table in TSV format + pattern: "*.tx2gene.tsv" + - versions: + type: file + description: File containing software versions + pattern: "versions.yml" + +authors: + - "@pinin4fjords" +maintainers: + - "@pinin4fjords" diff --git a/modules/nf-core/custom/tx2gene/templates/tx2gene.py b/modules/nf-core/custom/tx2gene/templates/tx2gene.py new file mode 100755 index 000000000..ee0a551fc --- /dev/null +++ b/modules/nf-core/custom/tx2gene/templates/tx2gene.py @@ -0,0 +1,186 @@ +#!/usr/bin/env python3 + +# Written by Lorena Pantano with subsequent reworking by Jonathan Manning. Released under the MIT license. + +import logging +import argparse +import glob +import os +import platform +import re +from collections import Counter, defaultdict, OrderedDict +from collections.abc import Set +from typing import Dict + +# Configure logging +logging.basicConfig(format="%(name)s - %(asctime)s %(levelname)s: %(message)s") +logger = logging.getLogger(__name__) +logger.setLevel(logging.INFO) + +def format_yaml_like(data: dict, indent: int = 0) -> str: + """Formats a dictionary to a YAML-like string. + + Args: + data (dict): The dictionary to format. + indent (int): The current indentation level. + + Returns: + str: A string formatted as YAML. + """ + yaml_str = "" + for key, value in data.items(): + spaces = " " * indent + if isinstance(value, dict): + yaml_str += f"{spaces}{key}:\\n{format_yaml_like(value, indent + 1)}" + else: + yaml_str += f"{spaces}{key}: {value}\\n" + return yaml_str + +def read_top_transcripts(quant_dir: str, file_pattern: str) -> Set[str]: + """ + Read the top 100 transcripts from the quantification file. + + Parameters: + quant_dir (str): Directory where quantification files are located. + file_pattern (str): Pattern to match quantification files. + + Returns: + set: A set containing the top 100 transcripts. + """ + try: + # Find the quantification file within the directory + quant_file_path = glob.glob(os.path.join(quant_dir, "*", file_pattern))[0] + with open(quant_file_path, "r") as file_handle: + # Read the file and extract the top 100 transcripts + return {line.split()[0] for i, line in enumerate(file_handle) if i > 0 and i <= 100} + except IndexError: + # Log an error and raise a FileNotFoundError if the quant file does not exist + logger.error("No quantification files found.") + raise FileNotFoundError("Quantification file not found.") + + +def discover_transcript_attribute(gtf_file: str, transcripts: Set[str]) -> str: + """ + Discover the attribute in the GTF that corresponds to transcripts, prioritizing 'transcript_id'. + + Parameters: + gtf_file (str): Path to the GTF file. + transcripts (Set[str]): A set of transcripts to match in the GTF file. + + Returns: + str: The attribute name that corresponds to transcripts in the GTF file. + """ + + votes = Counter() + with open(gtf_file) as inh: + # Read GTF file, skipping header lines + for line in filter(lambda x: not x.startswith("#"), inh): + cols = line.split("\\t") + + # Use regular expression to correctly split the attributes string + attributes_str = cols[8] + attributes = dict(re.findall(r'(\\S+) "(.*?)(? Dict[str, str]: + """ + Parse the attributes column of a GTF file. + + :param attributes_text: The attributes column as a string. + :return: A dictionary of the attributes. + """ + # Split the attributes string by semicolon and strip whitespace + attributes = attributes_text.strip().split(";") + attr_dict = OrderedDict() + + # Iterate over each attribute pair + for attribute in attributes: + # Split the attribute into key and value, ensuring there are two parts + parts = attribute.strip().split(" ", 1) + if len(parts) == 2: + key, value = parts + # Remove any double quotes from the value + value = value.replace('"', "") + attr_dict[key] = value + + return attr_dict + + +def map_transcripts_to_gene( + quant_type: str, gtf_file: str, quant_dir: str, gene_id: str, extra_id_field: str, output_file: str +) -> bool: + """ + Map transcripts to gene names and write the output to a file. + + Parameters: + quant_type (str): The quantification method used (e.g., 'salmon'). + gtf_file (str): Path to the GTF file. + quant_dir (str): Directory where quantification files are located. + gene_id (str): The gene ID attribute in the GTF file. + extra_id_field (str): Additional ID field in the GTF file. + output_file (str): The output file path. + + Returns: + bool: True if the operation was successful, False otherwise. + """ + # Read the top transcripts based on quantification type + transcripts = read_top_transcripts(quant_dir, "quant.sf" if quant_type == "salmon" else "abundance.tsv") + # Discover the attribute that corresponds to transcripts in the GTF + transcript_attribute = discover_transcript_attribute(gtf_file, transcripts) + + # Open GTF and output file to write the mappings + # Initialize the set to track seen combinations + seen = set() + + with open(gtf_file) as inh, open(output_file, "w") as output_handle: + # Parse each line of the GTF, mapping transcripts to genes + for line in filter(lambda x: not x.startswith("#"), inh): + cols = line.split("\\t") + attr_dict = parse_attributes(cols[8]) + if gene_id in attr_dict and transcript_attribute in attr_dict: + # Create a unique identifier for the transcript-gene combination + transcript_gene_pair = (attr_dict[transcript_attribute], attr_dict[gene_id]) + + # Check if the combination has already been seen + if transcript_gene_pair not in seen: + # If it's a new combination, write it to the output and add to the seen set + extra_id = attr_dict.get(extra_id_field, attr_dict[gene_id]) + output_handle.write(f"{attr_dict[transcript_attribute]}\\t{attr_dict[gene_id]}\\t{extra_id}\\n") + seen.add(transcript_gene_pair) + + return True + + +# Main function to parse arguments and call the mapping function +if __name__ == "__main__": + if '${task.ext.prefix}' != "null": + prefix = "${task.ext.prefix}." + elif '$meta.id' != "null": + prefix = '${meta.id}.' + else: + prefix = '' + + if not map_transcripts_to_gene('$quant_type', '$gtf', 'quants', '$id', '$extra', f"{prefix}tx2gene.tsv"): + logger.error("Failed to map transcripts to genes.") + + # Write the versions + versions_this_module = {} + versions_this_module["${task.process}"] = {"python": platform.python_version()} + with open("versions.yml", "w") as f: + f.write(format_yaml_like(versions_this_module)) diff --git a/modules/nf-core/custom/tx2gene/tests/main.nf.test b/modules/nf-core/custom/tx2gene/tests/main.nf.test new file mode 100644 index 000000000..c983bb1aa --- /dev/null +++ b/modules/nf-core/custom/tx2gene/tests/main.nf.test @@ -0,0 +1,99 @@ +nextflow_process { + + name "Test Process CUSTOM_TX2GENE" + script "../main.nf" + process "CUSTOM_TX2GENE" + + tag "modules" + tag "modules_nfcore" + tag "custom" + tag "custom/tx2gene" + tag "untar" + + test("saccharomyces_cerevisiae - gtf") { + + setup { + + run("UNTAR") { + script "../../../untar/main.nf" + process { + """ + input[0] = [ + [ id:'test'], // meta map + file(params.test_data['saccharomyces_cerevisiae']['genome']['kallisto_results'], checkIfExists: true) + ] + """ + } + } + } + + when { + process { + """ + input[0] = [ + [ id:'test'], // meta map + file(params.test_data['saccharomyces_cerevisiae']['genome']['genome_gfp_gtf'], checkIfExists: true) + ] + input[1] = UNTAR.out.untar.map { meta, dir -> [ meta, dir.listFiles().collect() ] } + input[2] = 'kallisto' + input[3] = 'gene_id' + input[4] = 'gene_name' + """ + } + } + + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out.tx2gene).match('tx2gene') }, + { assert snapshot(process.out.tx2gene).match('versions') } + ) + } + + } + + test("saccharomyces_cerevisiae - gtf - stub") { + + options "-stub" + + setup { + + run("UNTAR") { + script "../../../untar/main.nf" + process { + """ + input[0] = [ + [ id:'test'], // meta map + file(params.test_data['saccharomyces_cerevisiae']['genome']['kallisto_results'], checkIfExists: true) + ] + """ + } + } + } + + when { + process { + """ + input[0] = [ + [ id:'test'], // meta map + file(params.test_data['saccharomyces_cerevisiae']['genome']['genome_gfp_gtf'], checkIfExists: true) + ] + input[1] = UNTAR.out.untar.map { meta, dir -> [ meta, dir.listFiles().collect() ] } + input[2] = 'kallisto' + input[3] = 'gene_id' + input[4] = 'gene_name' + """ + } + } + + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out.tx2gene).match('tx2gene - stub') }, + { assert snapshot(process.out.tx2gene).match('versions - stub') } + ) + } + } +} diff --git a/modules/nf-core/custom/tx2gene/tests/main.nf.test.snap b/modules/nf-core/custom/tx2gene/tests/main.nf.test.snap new file mode 100644 index 000000000..b01abf4c1 --- /dev/null +++ b/modules/nf-core/custom/tx2gene/tests/main.nf.test.snap @@ -0,0 +1,70 @@ +{ + "versions": { + "content": [ + [ + [ + { + "id": "test" + }, + "test.tx2gene.tsv:md5,b367acfc4b7df7fb68fb1b1d2956e27e" + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-05T22:09:56.931541991" + }, + "tx2gene": { + "content": [ + [ + [ + { + "id": "test" + }, + "test.tx2gene.tsv:md5,b367acfc4b7df7fb68fb1b1d2956e27e" + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-05T22:09:56.920656242" + }, + "tx2gene - stub": { + "content": [ + [ + [ + { + "id": "test" + }, + "test.tx2gene.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-05T22:10:14.817718782" + }, + "versions - stub": { + "content": [ + [ + [ + { + "id": "test" + }, + "test.tx2gene.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-05T22:10:14.823019212" + } +} \ No newline at end of file diff --git a/modules/nf-core/custom/tx2gene/tests/tags.yml b/modules/nf-core/custom/tx2gene/tests/tags.yml new file mode 100644 index 000000000..493fbc3b1 --- /dev/null +++ b/modules/nf-core/custom/tx2gene/tests/tags.yml @@ -0,0 +1,2 @@ +custom/tx2gene: + - "modules/nf-core/custom/tx2gene/**" diff --git a/subworkflows/local/quantify_pseudo_alignment/main.nf b/subworkflows/local/quantify_pseudo_alignment/main.nf index 3fa13addd..ffbef1fbf 100644 --- a/subworkflows/local/quantify_pseudo_alignment/main.nf +++ b/subworkflows/local/quantify_pseudo_alignment/main.nf @@ -4,7 +4,7 @@ include { SALMON_QUANT } from '../../../modules/nf-core/salmon/quant' include { KALLISTO_QUANT } from '../../../modules/nf-core/kallisto/quant' -include { TX2GENE } from '../../../modules/local/tx2gene' +include { CUSTOM_TX2GENE } from '../../../modules/nf-core/custom/tx2gene' include { TXIMPORT } from '../../../modules/local/tximport' include { SUMMARIZEDEXPERIMENT as SE_GENE } from '../../../modules/local/summarizedexperiment' @@ -18,6 +18,8 @@ workflow QUANTIFY_PSEUDO_ALIGNMENT { index // channel: /path/to//index/ transcript_fasta // channel: /path/to/transcript.fasta gtf // channel: /path/to/genome.gtf + gtf_id_attribute // val: GTF gene ID attribute + gtf_extra_attribute // val: GTF alternative gene attribute (e.g. gene_name) pseudo_aligner // val: kallisto or salmon alignment_mode // bool: Run Salmon in alignment mode lib_type // val: String to override Salmon library type @@ -44,35 +46,45 @@ workflow QUANTIFY_PSEUDO_ALIGNMENT { ch_versions = ch_versions.mix(KALLISTO_QUANT.out.versions.first()) } - TX2GENE ( ch_pseudo_results.collect{it[1]}, pseudo_aligner, gtf ) - ch_versions = ch_versions.mix(TX2GENE.out.versions) + CUSTOM_TX2GENE ( + gtf.map { [ [:], it ] }, + ch_pseudo_results.collect{it[1]}.map { [ [:], it ] }, + pseudo_aligner, + gtf_id_attribute, + gtf_extra_attribute + ) + ch_versions = ch_versions.mix(CUSTOM_TX2GENE.out.versions) - TXIMPORT ( ch_pseudo_results.collect{it[1]}, TX2GENE.out.tsv.collect(), pseudo_aligner ) + TXIMPORT ( + ch_pseudo_results.collect{it[1]}, + CUSTOM_TX2GENE.out.tx2gene.collect{it[1]}, + pseudo_aligner + ) ch_versions = ch_versions.mix(TXIMPORT.out.versions) SE_GENE ( TXIMPORT.out.counts_gene, TXIMPORT.out.tpm_gene, - TX2GENE.out.tsv.collect() + CUSTOM_TX2GENE.out.tx2gene.collect{it[1]} ) ch_versions = ch_versions.mix(SE_GENE.out.versions) SE_GENE_LENGTH_SCALED ( TXIMPORT.out.counts_gene_length_scaled, TXIMPORT.out.tpm_gene, - TX2GENE.out.tsv.collect() + CUSTOM_TX2GENE.out.tx2gene.collect{it[1]} ) SE_GENE_SCALED ( TXIMPORT.out.counts_gene_scaled, TXIMPORT.out.tpm_gene, - TX2GENE.out.tsv.collect() + CUSTOM_TX2GENE.out.tx2gene.collect{it[1]} ) SE_TRANSCRIPT ( TXIMPORT.out.counts_transcript, TXIMPORT.out.tpm_transcript, - TX2GENE.out.tsv.collect() + CUSTOM_TX2GENE.out.tx2gene.collect{it[1]} ) emit: diff --git a/workflows/rnaseq/main.nf b/workflows/rnaseq/main.nf index a9ca03ed2..3cc33da84 100755 --- a/workflows/rnaseq/main.nf +++ b/workflows/rnaseq/main.nf @@ -383,6 +383,8 @@ workflow NFCORE_RNASEQ { ch_dummy_file, ch_transcript_fasta, ch_gtf, + params.gtf_group_features, + params.gtf_extra_attributes, 'salmon', true, params.salmon_quant_libtype ?: '', @@ -710,6 +712,8 @@ workflow NFCORE_RNASEQ { ch_pseudo_index, ch_dummy_file, ch_gtf, + params.gtf_group_features, + params.gtf_extra_attributes, params.pseudo_aligner, false, params.salmon_quant_libtype ?: '', From 0b96074d0bf612643775c5d415797bc9c59d73c7 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Thu, 8 Feb 2024 12:09:46 +0000 Subject: [PATCH 040/634] Bump tx2gene --- modules.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules.json b/modules.json index c4e0bed94..4b8eb3b5c 100644 --- a/modules.json +++ b/modules.json @@ -21,8 +21,8 @@ "installed_by": ["modules"] }, "custom/tx2gene": { - "branch": "fix_tx2gene", - "git_sha": "158e921868eb35119b49395d5057901fb3ab303a", + "branch": "master", + "git_sha": "9d2338f5bb329d56e728575d8ebc9e7ed2aa4059", "installed_by": ["modules"] }, "fastp": { From 99481d5b9e8303d0a963850bf806e7320a6a22dc Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Thu, 8 Feb 2024 15:05:52 +0000 Subject: [PATCH 041/634] update bam_rseqc to fix linting issue --- modules.json | 4 +- .../nf-core/rseqc/bamstat/tests/main.nf.test | 2 +- .../rseqc/bamstat/tests/main.nf.test.snap | 4 + subworkflows/nf-core/bam_rseqc/main.nf | 207 +++++++++--------- subworkflows/nf-core/bam_rseqc/meta.yml | 52 ++--- .../nf-core/bam_rseqc/nextflow.config | 153 ------------- .../nf-core/bam_rseqc/tests/main.nf.test | 40 ++-- .../nf-core/bam_rseqc/tests/main.nf.test.snap | 124 +++++++---- 8 files changed, 239 insertions(+), 347 deletions(-) delete mode 100644 subworkflows/nf-core/bam_rseqc/nextflow.config diff --git a/modules.json b/modules.json index 4b8eb3b5c..bead3e2ef 100644 --- a/modules.json +++ b/modules.json @@ -107,7 +107,7 @@ }, "rseqc/bamstat": { "branch": "master", - "git_sha": "41f4baa439663b9027727d83a3293db93bad3f8c", + "git_sha": "9eb22e4d3f28c274b7c498a1564581377349a242", "installed_by": ["bam_rseqc"] }, "rseqc/inferexperiment": { @@ -255,7 +255,7 @@ }, "bam_rseqc": { "branch": "master", - "git_sha": "0c38be7e652a0b2f3a37681ee4c0dbdf85677647", + "git_sha": "9eb22e4d3f28c274b7c498a1564581377349a242", "installed_by": ["subworkflows"] }, "bam_sort_stats_samtools": { diff --git a/modules/nf-core/rseqc/bamstat/tests/main.nf.test b/modules/nf-core/rseqc/bamstat/tests/main.nf.test index 1facabea0..2f209b0a7 100644 --- a/modules/nf-core/rseqc/bamstat/tests/main.nf.test +++ b/modules/nf-core/rseqc/bamstat/tests/main.nf.test @@ -22,7 +22,7 @@ nextflow_process { """ input[0] = [ [ id:'test' ], // meta map - file(params.test_data['sarscov2']['illumina']['test_paired_end_sorted_bam'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam') ] """ } diff --git a/modules/nf-core/rseqc/bamstat/tests/main.nf.test.snap b/modules/nf-core/rseqc/bamstat/tests/main.nf.test.snap index 57c764e57..6e3f0364e 100644 --- a/modules/nf-core/rseqc/bamstat/tests/main.nf.test.snap +++ b/modules/nf-core/rseqc/bamstat/tests/main.nf.test.snap @@ -26,6 +26,10 @@ ] } ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, "timestamp": "2023-12-14T17:00:23.830276754" } } \ No newline at end of file diff --git a/subworkflows/nf-core/bam_rseqc/main.nf b/subworkflows/nf-core/bam_rseqc/main.nf index bf530f09d..043321a13 100644 --- a/subworkflows/nf-core/bam_rseqc/main.nf +++ b/subworkflows/nf-core/bam_rseqc/main.nf @@ -13,168 +13,173 @@ include { RSEQC_TIN } from '../../../modules/nf-core/rseqc/tin/ma workflow BAM_RSEQC { take: - ch_bam_bai // channel: [ val(meta), [ bam, bai ] ] - ch_bed // file: /path/to/genome.bed + bam_bai // channel: [ val(meta), [ bam, bai ] ] + bed // channel: [ genome.bed ] rseqc_modules // list: rseqc modules to run main: - ch_versions = Channel.empty() + bam = bam_bai.map{ [ it[0], it[1] ] } - ch_bam_bai - .map { [ it[0], it[1] ] } - .set { ch_bam } + versions = Channel.empty() // // Run RSeQC bam_stat.py // - ch_bamstat = Channel.empty() + bamstat_txt = Channel.empty() + if ('bam_stat' in rseqc_modules) { - RSEQC_BAMSTAT ( ch_bam ) - ch_bamstat = RSEQC_BAMSTAT.out.txt - ch_versions = ch_versions.mix(RSEQC_BAMSTAT.out.versions.first()) + RSEQC_BAMSTAT(bam) + bamstat_txt = RSEQC_BAMSTAT.out.txt + versions = versions.mix(RSEQC_BAMSTAT.out.versions.first()) } // // Run RSeQC inner_distance.py // - ch_innerdistance = Channel.empty() - ch_innerdistance_distance = Channel.empty() - ch_innerdistance_freq = Channel.empty() - ch_innerdistance_mean = Channel.empty() - ch_innerdistance_pdf = Channel.empty() - ch_innerdistance_rscript = Channel.empty() + innerdistance_all = Channel.empty() + innerdistance_distance = Channel.empty() + innerdistance_freq = Channel.empty() + innerdistance_mean = Channel.empty() + innerdistance_pdf = Channel.empty() + innerdistance_rscript = Channel.empty() + if ('inner_distance' in rseqc_modules) { - RSEQC_INNERDISTANCE ( ch_bam, ch_bed ) - ch_innerdistance_distance = RSEQC_INNERDISTANCE.out.distance - ch_innerdistance_freq = RSEQC_INNERDISTANCE.out.freq - ch_innerdistance_mean = RSEQC_INNERDISTANCE.out.mean - ch_innerdistance_pdf = RSEQC_INNERDISTANCE.out.pdf - ch_innerdistance_rscript = RSEQC_INNERDISTANCE.out.rscript - ch_innerdistance = ch_innerdistance_distance.mix(ch_innerdistance_freq, ch_innerdistance_mean, ch_innerdistance_pdf, ch_innerdistance_rscript) - ch_versions = ch_versions.mix(RSEQC_INNERDISTANCE.out.versions.first()) + RSEQC_INNERDISTANCE(bam, bed) + innerdistance_distance = RSEQC_INNERDISTANCE.out.distance + innerdistance_freq = RSEQC_INNERDISTANCE.out.freq + innerdistance_mean = RSEQC_INNERDISTANCE.out.mean + innerdistance_pdf = RSEQC_INNERDISTANCE.out.pdf + innerdistance_rscript = RSEQC_INNERDISTANCE.out.rscript + innerdistance_all = innerdistance_distance.mix(innerdistance_freq, innerdistance_mean, innerdistance_pdf, innerdistance_rscript) + versions = versions.mix(RSEQC_INNERDISTANCE.out.versions.first()) } // // Run RSeQC infer_experiment.py // - ch_inferexperiment = Channel.empty() + inferexperiment_txt = Channel.empty() if ('infer_experiment' in rseqc_modules) { - RSEQC_INFEREXPERIMENT ( ch_bam, ch_bed ) - ch_inferexperiment = RSEQC_INFEREXPERIMENT.out.txt - ch_versions = ch_versions.mix(RSEQC_INFEREXPERIMENT.out.versions.first()) + RSEQC_INFEREXPERIMENT(bam, bed) + inferexperiment_txt = RSEQC_INFEREXPERIMENT.out.txt + versions = versions.mix(RSEQC_INFEREXPERIMENT.out.versions.first()) } // // Run RSeQC junction_annotation.py // - ch_junctionannotation = Channel.empty() - ch_junctionannotation_bed = Channel.empty() - ch_junctionannotation_interact_bed = Channel.empty() - ch_junctionannotation_xls = Channel.empty() - ch_junctionannotation_pdf = Channel.empty() - ch_junctionannotation_events_pdf = Channel.empty() - ch_junctionannotation_rscript = Channel.empty() - ch_junctionannotation_log = Channel.empty() + junctionannotation_all = Channel.empty() + junctionannotation_bed = Channel.empty() + junctionannotation_interact_bed = Channel.empty() + junctionannotation_xls = Channel.empty() + junctionannotation_pdf = Channel.empty() + junctionannotation_events_pdf = Channel.empty() + junctionannotation_rscript = Channel.empty() + junctionannotation_log = Channel.empty() + if ('junction_annotation' in rseqc_modules) { - RSEQC_JUNCTIONANNOTATION ( ch_bam, ch_bed ) - ch_junctionannotation_bed = RSEQC_JUNCTIONANNOTATION.out.bed - ch_junctionannotation_interact_bed = RSEQC_JUNCTIONANNOTATION.out.interact_bed - ch_junctionannotation_xls = RSEQC_JUNCTIONANNOTATION.out.xls - ch_junctionannotation_pdf = RSEQC_JUNCTIONANNOTATION.out.pdf - ch_junctionannotation_events_pdf = RSEQC_JUNCTIONANNOTATION.out.events_pdf - ch_junctionannotation_rscript = RSEQC_JUNCTIONANNOTATION.out.rscript - ch_junctionannotation_log = RSEQC_JUNCTIONANNOTATION.out.log - ch_junctionannotation = ch_junctionannotation_bed.mix(ch_junctionannotation_interact_bed, ch_junctionannotation_xls, ch_junctionannotation_pdf, ch_junctionannotation_events_pdf, ch_junctionannotation_rscript, ch_junctionannotation_log) - ch_versions = ch_versions.mix(RSEQC_JUNCTIONANNOTATION.out.versions.first()) + RSEQC_JUNCTIONANNOTATION(bam, bed) + junctionannotation_bed = RSEQC_JUNCTIONANNOTATION.out.bed + junctionannotation_interact_bed = RSEQC_JUNCTIONANNOTATION.out.interact_bed + junctionannotation_xls = RSEQC_JUNCTIONANNOTATION.out.xls + junctionannotation_pdf = RSEQC_JUNCTIONANNOTATION.out.pdf + junctionannotation_events_pdf = RSEQC_JUNCTIONANNOTATION.out.events_pdf + junctionannotation_rscript = RSEQC_JUNCTIONANNOTATION.out.rscript + junctionannotation_log = RSEQC_JUNCTIONANNOTATION.out.log + junctionannotation_all = junctionannotation_bed.mix(junctionannotation_interact_bed, junctionannotation_xls, junctionannotation_pdf, junctionannotation_events_pdf, junctionannotation_rscript, junctionannotation_log) + versions = versions.mix(RSEQC_JUNCTIONANNOTATION.out.versions.first()) } // // Run RSeQC junction_saturation.py // - ch_junctionsaturation = Channel.empty() - ch_junctionsaturation_pdf = Channel.empty() - ch_junctionsaturation_rscript = Channel.empty() + junctionsaturation_all = Channel.empty() + junctionsaturation_pdf = Channel.empty() + junctionsaturation_rscript = Channel.empty() + if ('junction_saturation' in rseqc_modules) { - RSEQC_JUNCTIONSATURATION ( ch_bam, ch_bed ) - ch_junctionsaturation_pdf = RSEQC_JUNCTIONSATURATION.out.pdf - ch_junctionsaturation_rscript = RSEQC_JUNCTIONSATURATION.out.rscript - ch_junctionsaturation = ch_junctionsaturation_pdf.mix(ch_junctionsaturation_rscript) - ch_versions = ch_versions.mix(RSEQC_JUNCTIONSATURATION.out.versions.first()) + RSEQC_JUNCTIONSATURATION(bam, bed) + junctionsaturation_pdf = RSEQC_JUNCTIONSATURATION.out.pdf + junctionsaturation_rscript = RSEQC_JUNCTIONSATURATION.out.rscript + junctionsaturation_all = junctionsaturation_pdf.mix(junctionsaturation_rscript) + versions = versions.mix(RSEQC_JUNCTIONSATURATION.out.versions.first()) } // // Run RSeQC read_distribution.py // - ch_readdistribution = Channel.empty() + readdistribution_txt = Channel.empty() + if ('read_distribution' in rseqc_modules) { - RSEQC_READDISTRIBUTION ( ch_bam, ch_bed ) - ch_readdistribution = RSEQC_READDISTRIBUTION.out.txt - ch_versions = ch_versions.mix(RSEQC_READDISTRIBUTION.out.versions.first()) + RSEQC_READDISTRIBUTION(bam, bed) + readdistribution_txt = RSEQC_READDISTRIBUTION.out.txt + versions = versions.mix(RSEQC_READDISTRIBUTION.out.versions.first()) } // // Run RSeQC read_duplication.py // - ch_readduplication = Channel.empty() - ch_readduplication_seq_xls = Channel.empty() - ch_readduplication_pos_xls = Channel.empty() - ch_readduplication_pdf = Channel.empty() - ch_readduplication_rscript = Channel.empty() + readduplication_all = Channel.empty() + readduplication_seq_xls = Channel.empty() + readduplication_pos_xls = Channel.empty() + readduplication_pdf = Channel.empty() + readduplication_rscript = Channel.empty() + if ('read_duplication' in rseqc_modules) { - RSEQC_READDUPLICATION ( ch_bam ) - ch_readduplication_seq_xls = RSEQC_READDUPLICATION.out.seq_xls - ch_readduplication_pos_xls = RSEQC_READDUPLICATION.out.pos_xls - ch_readduplication_pdf = RSEQC_READDUPLICATION.out.pdf - ch_readduplication_rscript = RSEQC_READDUPLICATION.out.rscript - ch_readduplication = ch_readduplication_seq_xls.mix(ch_readduplication_pos_xls, ch_readduplication_pdf, ch_readduplication_rscript) - ch_versions = ch_versions.mix(RSEQC_READDUPLICATION.out.versions.first()) + RSEQC_READDUPLICATION(bam ) + readduplication_seq_xls = RSEQC_READDUPLICATION.out.seq_xls + readduplication_pos_xls = RSEQC_READDUPLICATION.out.pos_xls + readduplication_pdf = RSEQC_READDUPLICATION.out.pdf + readduplication_rscript = RSEQC_READDUPLICATION.out.rscript + readduplication_all = readduplication_seq_xls.mix(readduplication_pos_xls, readduplication_pdf, readduplication_rscript) + versions = versions.mix(RSEQC_READDUPLICATION.out.versions.first()) } // // Run RSeQC tin.py // - ch_tin = Channel.empty() + tin_txt = Channel.empty() + if ('tin' in rseqc_modules) { - RSEQC_TIN ( ch_bam_bai, ch_bed ) - ch_tin = RSEQC_TIN.out.txt - ch_versions = ch_versions.mix(RSEQC_TIN.out.versions.first()) + RSEQC_TIN(bam_bai, bed) + tin_txt = RSEQC_TIN.out.txt + versions = versions.mix(RSEQC_TIN.out.versions.first()) } emit: - ch_bamstat // channel: [ val(meta), txt ] + bamstat_txt // channel: [ val(meta), txt ] - ch_innerdistance - ch_innerdistance_distance // channel: [ val(meta), txt ] - ch_innerdistance_freq // channel: [ val(meta), txt ] - ch_innerdistance_mean // channel: [ val(meta), txt ] - ch_innerdistance_pdf // channel: [ val(meta), pdf ] - ch_innerdistance_rscript // channel: [ val(meta), r ] + innerdistance_all // channel: [ val(meta), {txt, pdf, r} ] + innerdistance_distance // channel: [ val(meta), txt ] + innerdistance_freq // channel: [ val(meta), txt ] + innerdistance_mean // channel: [ val(meta), txt ] + innerdistance_pdf // channel: [ val(meta), pdf ] + innerdistance_rscript // channel: [ val(meta), r ] - ch_inferexperiment // channel: [ val(meta), txt ] + inferexperiment_txt // channel: [ val(meta), txt ] - ch_junctionannotation - ch_junctionannotation_bed // channel: [ val(meta), bed ] - ch_junctionannotation_interact_bed // channel: [ val(meta), bed ] - ch_junctionannotation_xls // channel: [ val(meta), xls ] - ch_junctionannotation_pdf // channel: [ val(meta), pdf ] - ch_junctionannotation_events_pdf // channel: [ val(meta), pdf ] - ch_junctionannotation_rscript // channel: [ val(meta), r ] - ch_junctionannotation_log // channel: [ val(meta), log ] + junctionannotation_all // channel: [ val(meta), {bed, xls, pdf, r, log} ] + junctionannotation_bed // channel: [ val(meta), bed ] + junctionannotation_interact_bed // channel: [ val(meta), bed ] + junctionannotation_xls // channel: [ val(meta), xls ] + junctionannotation_pdf // channel: [ val(meta), pdf ] + junctionannotation_events_pdf // channel: [ val(meta), pdf ] + junctionannotation_rscript // channel: [ val(meta), r ] + junctionannotation_log // channel: [ val(meta), log ] - ch_junctionsaturation - ch_junctionsaturation_pdf // channel: [ val(meta), pdf ] - ch_junctionsaturation_rscript // channel: [ val(meta), r ] + junctionsaturation_all // channel: [ val(meta), {pdf, r} ] + junctionsaturation_pdf // channel: [ val(meta), pdf ] + junctionsaturation_rscript // channel: [ val(meta), r ] - ch_readdistribution // channel: [ val(meta), txt ] + readdistribution_txt // channel: [ val(meta), txt ] - ch_readduplication - ch_readduplication_seq_xls // channel: [ val(meta), xls ] - ch_readduplication_pos_xls // channel: [ val(meta), xls ] - ch_readduplication_pdf // channel: [ val(meta), pdf ] - ch_readduplication_rscript // channel: [ val(meta), r ] + readduplication_all // channel: [ val(meta), {xls, pdf, r} ] + readduplication_seq_xls // channel: [ val(meta), xls ] + readduplication_pos_xls // channel: [ val(meta), xls ] + readduplication_pdf // channel: [ val(meta), pdf ] + readduplication_rscript // channel: [ val(meta), r ] - ch_tin // channel: [ val(meta), txt ] + tin_txt // channel: [ val(meta), txt ] - versions = ch_versions // channel: [ versions.yml ] + versions // channel: [ versions.yml ] } diff --git a/subworkflows/nf-core/bam_rseqc/meta.yml b/subworkflows/nf-core/bam_rseqc/meta.yml index 2fef88737..6e76ff560 100644 --- a/subworkflows/nf-core/bam_rseqc/meta.yml +++ b/subworkflows/nf-core/bam_rseqc/meta.yml @@ -46,107 +46,107 @@ input: List of rseqc modules to run e.g. [ 'bam_stat', 'infer_experiment' ] output: - - ch_bamstat: + - bamstat_txt: type: file description: bam statistics report pattern: "*.bam_stat.txt" - - ch_innerdistance: + - innerdistance_all: type: file description: All the output files from RSEQC_INNERDISTANCE pattern: "*.{txt,pdf,R}" - - ch_innerdistance_distance: + - innerdistance_distance: type: file description: the inner distances pattern: "*.inner_distance.txt" - - ch_innerdistance_freq: + - innerdistance_freq: type: file description: frequencies of different insert sizes pattern: "*.inner_distance_freq.txt" - - ch_innerdistance_mean: + - innerdistance_mean: type: file description: mean/median values of inner distances pattern: "*.inner_distance_mean.txt" - - ch_innerdistance_pdf: + - innerdistance_pdf: type: file description: distribution plot of inner distances pattern: "*.inner_distance_plot.pdf" - - ch_innerdistance_rscript: + - innerdistance_rscript: type: file description: script to reproduce the plot pattern: "*.inner_distance_plot.R" - - ch_inferexperiment: + - inferexperiment_txt: type: file description: infer_experiment results report pattern: "*.infer_experiment.txt" - - ch_junctionannotation: + - junctionannotation_all: type: file description: All the output files from RSEQC_JUNCTIONANNOTATION pattern: "*.{bed,xls,pdf,R,log}" - - ch_junctionannotation_bed: + - junctionannotation_bed: type: file description: bed file of annotated junctions pattern: "*.junction.bed" - - ch_junctionannotation_interact_bed: + - junctionannotation_interact_bed: type: file description: Interact bed file pattern: "*.Interact.bed" - - ch_junctionannotation_xls: + - junctionannotation_xls: type: file description: xls file with junction information pattern: "*.xls" - - ch_junctionannotation_pdf: + - junctionannotation_pdf: type: file description: junction plot pattern: "*.junction.pdf" - - ch_junctionannotation_events_pdf: + - junctionannotation_events_pdf: type: file description: events plot pattern: "*.events.pdf" - - ch_junctionannotation_rscript: + - junctionannotation_rscript: type: file description: Rscript to reproduce the plots pattern: "*.r" - - ch_junctionannotation_log: + - junctionannotation_log: type: file description: Log file generated by tool pattern: "*.log" - - ch_junctionsaturation: + - junctionsaturation_all: type: file description: All the output files from RSEQC_JUNCTIONSATURATION pattern: "*.{pdf,R}" - - ch_junctionsaturation_pdf: + - junctionsaturation_pdf: type: file description: Junction saturation report pattern: "*.pdf" - - ch_junctionsaturation_rscript: + - junctionsaturation_rscript: type: file description: Junction saturation R-script pattern: "*.r" - - ch_readdistribution: + - readdistribution_txt: type: file description: the read distribution report pattern: "*.read_distribution.txt" - - ch_readduplication: + - readduplication_all: type: file description: All the output files from RSEQC_READDUPLICATION pattern: "*.{xls,pdf,R}" - - ch_readduplication_seq_xls: + - readduplication_seq_xls: type: file description: Read duplication rate determined from mapping position of read pattern: "*seq.DupRate.xls" - - ch_readduplication_pos_xls: + - readduplication_pos_xls: type: file description: Read duplication rate determined from sequence of read pattern: "*pos.DupRate.xls" - - ch_readduplication_pdf: + - readduplication_pdf: type: file description: plot of duplication rate pattern: "*.pdf" - - ch_readduplication_rscript: + - readduplication_rscript: type: file description: script to reproduce the plot pattern: "*.R" - - ch_tin: + - tin_txt: type: file description: TXT file containing tin.py results summary pattern: "*.txt" diff --git a/subworkflows/nf-core/bam_rseqc/nextflow.config b/subworkflows/nf-core/bam_rseqc/nextflow.config deleted file mode 100644 index 4fabc8e99..000000000 --- a/subworkflows/nf-core/bam_rseqc/nextflow.config +++ /dev/null @@ -1,153 +0,0 @@ -def rseqc_modules = params.rseqc_modules ? params.rseqc_modules.split(',').collect{ it.trim().toLowerCase() } : [] - -if (!params.skip_alignment && !params.skip_qc && !params.skip_rseqc) { - if ('bam_stat' in rseqc_modules) { - process { - withName: '.*:BAM_RSEQC:RSEQC_BAMSTAT' { - publishDir = [ - path: { "${params.outdir}/${params.aligner}/rseqc/bam_stat" }, - mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } - ] - } - } - } - - if ('infer_experiment' in rseqc_modules) { - process { - withName: '.*:BAM_RSEQC:RSEQC_INFEREXPERIMENT' { - publishDir = [ - path: { "${params.outdir}/${params.aligner}/rseqc/infer_experiment" }, - mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } - ] - } - } - } - - if ('junction_annotation' in rseqc_modules) { - process { - withName: '.*:BAM_RSEQC:RSEQC_JUNCTIONANNOTATION' { - publishDir = [ - [ - path: { "${params.outdir}/${params.aligner}/rseqc/junction_annotation/pdf" }, - mode: params.publish_dir_mode, - pattern: '*.pdf' - ], - [ - path: { "${params.outdir}/${params.aligner}/rseqc/junction_annotation/bed" }, - mode: params.publish_dir_mode, - pattern: '*.bed' - ], - [ - path: { "${params.outdir}/${params.aligner}/rseqc/junction_annotation/xls" }, - mode: params.publish_dir_mode, - pattern: '*.xls' - ], - [ - path: { "${params.outdir}/${params.aligner}/rseqc/junction_annotation/log" }, - mode: params.publish_dir_mode, - pattern: '*.log' - ], - [ - path: { "${params.outdir}/${params.aligner}/rseqc/junction_annotation/rscript" }, - mode: params.publish_dir_mode, - pattern: '*.r' - ] - ] - } - } - } - - if ('junction_saturation' in rseqc_modules) { - process { - withName: '.*:BAM_RSEQC:RSEQC_JUNCTIONSATURATION' { - publishDir = [ - [ - path: { "${params.outdir}/${params.aligner}/rseqc/junction_saturation/pdf" }, - mode: params.publish_dir_mode, - pattern: '*.pdf' - ], - [ - path: { "${params.outdir}/${params.aligner}/rseqc/junction_saturation/rscript" }, - mode: params.publish_dir_mode, - pattern: '*.r' - ] - ] - } - } - } - - if ('read_duplication' in rseqc_modules) { - process { - withName: '.*:BAM_RSEQC:RSEQC_READDUPLICATION' { - publishDir = [ - [ - path: { "${params.outdir}/${params.aligner}/rseqc/read_duplication/pdf" }, - mode: params.publish_dir_mode, - pattern: '*.pdf' - ], - [ - path: { "${params.outdir}/${params.aligner}/rseqc/read_duplication/xls" }, - mode: params.publish_dir_mode, - pattern: '*.xls' - ], - [ - path: { "${params.outdir}/${params.aligner}/rseqc/read_duplication/rscript" }, - mode: params.publish_dir_mode, - pattern: '*.r' - ] - ] - } - } - } - - if ('read_distribution' in rseqc_modules && !params.bam_csi_index) { - process { - withName: '.*:BAM_RSEQC:RSEQC_READDISTRIBUTION' { - publishDir = [ - path: { "${params.outdir}/${params.aligner}/rseqc/read_distribution" }, - mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } - ] - } - } - } - - if ('inner_distance' in rseqc_modules && !params.bam_csi_index) { - process { - withName: '.*:BAM_RSEQC:RSEQC_INNERDISTANCE' { - publishDir = [ - [ - path: { "${params.outdir}/${params.aligner}/rseqc/inner_distance/txt" }, - mode: params.publish_dir_mode, - pattern: '*.txt', - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } - ], - [ - path: { "${params.outdir}/${params.aligner}/rseqc/inner_distance/pdf" }, - mode: params.publish_dir_mode, - pattern: '*.pdf' - ], - [ - path: { "${params.outdir}/${params.aligner}/rseqc/inner_distance/rscript" }, - mode: params.publish_dir_mode, - pattern: '*.r' - ] - ] - } - } - } - - if ('tin' in rseqc_modules && !params.bam_csi_index) { - process { - withName: '.*:BAM_RSEQC:RSEQC_TIN' { - publishDir = [ - path: { "${params.outdir}/${params.aligner}/rseqc/tin" }, - mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } - ] - } - } - } -} diff --git a/subworkflows/nf-core/bam_rseqc/tests/main.nf.test b/subworkflows/nf-core/bam_rseqc/tests/main.nf.test index bd84bebff..cc1cea4ec 100644 --- a/subworkflows/nf-core/bam_rseqc/tests/main.nf.test +++ b/subworkflows/nf-core/bam_rseqc/tests/main.nf.test @@ -38,26 +38,26 @@ nextflow_workflow { then { assertAll( { assert workflow.success}, - { assert snapshot(workflow.out.ch_bamstat).match("bamstat")}, + { assert snapshot(workflow.out.bamstat_txt).match("bamstat_txt")}, - { assert snapshot(workflow.out.ch_innerdistance.findAll { it[1].endsWith('.pdf') == false }).match("inner_distance")}, - { assert workflow.out.ch_innerdistance.any { it[1].endsWith('.pdf') && file(it[1]).exists() } }, + { assert snapshot(workflow.out.innerdistance_all.findAll { it[1].endsWith('.pdf') == false }).match("innerdistance_all")}, + { assert workflow.out.innerdistance_all.any { it[1].endsWith('.pdf') && file(it[1]).exists() } }, - { assert snapshot(workflow.out.ch_inferexperiment).match("inferexperiment")}, + { assert snapshot(workflow.out.inferexperiment_txt).match("inferexperiment_txt")}, - { assert snapshot(workflow.out.ch_junctionannotation.findAll { + { assert snapshot(workflow.out.junctionannotation_all.findAll { it[1].endsWith('.xls') == false && - it[1].endsWith('.r') == false }).match("junction_annotation")}, + it[1].endsWith('.r') == false }).match("junctionannotation_all")}, - { assert snapshot(workflow.out.ch_junctionsaturation.findAll { it[1].endsWith('.pdf') == false }).match("junction_saturation")}, - { assert workflow.out.ch_junctionsaturation.any { it[1].endsWith('.pdf') && file(it[1]).exists() } }, + { assert snapshot(workflow.out.junctionsaturation_all.findAll { it[1].endsWith('.pdf') == false }).match("junctionsaturation_all")}, + { assert workflow.out.junctionsaturation_all.any { it[1].endsWith('.pdf') && file(it[1]).exists() } }, - { assert snapshot(workflow.out.ch_readdistribution).match("readdistribution")}, + { assert snapshot(workflow.out.readdistribution_txt).match("readdistribution_txt")}, - { assert snapshot(workflow.out.ch_readduplication.findAll { it[1].endsWith('.pdf') == false }).match("read_duplication")}, - { assert workflow.out.ch_readduplication.any { it[1].endsWith('.pdf') && file(it[1]).exists() } }, + { assert snapshot(workflow.out.readduplication_all.findAll { it[1].endsWith('.pdf') == false }).match("readduplication_all")}, + { assert workflow.out.readduplication_all.any { it[1].endsWith('.pdf') && file(it[1]).exists() } }, - { assert snapshot(workflow.out.ch_tin).match("tin")}, + { assert snapshot(workflow.out.tin_txt).match("tin_txt")}, { assert snapshot(workflow.out.versions).match("versions")}, ) } @@ -84,14 +84,14 @@ nextflow_workflow { then { assertAll( { assert workflow.success }, - { assert workflow.out.ch_bamstat.size() == 0 }, - { assert workflow.out.ch_innerdistance.size() == 0 }, - { assert workflow.out.ch_inferexperiment.size() == 0 }, - { assert workflow.out.ch_junctionannotation.size() == 0 }, - { assert workflow.out.ch_junctionsaturation.size() == 0 }, - { assert workflow.out.ch_readdistribution.size() == 0 }, - { assert workflow.out.ch_readduplication.size() == 0 }, - { assert workflow.out.ch_tin.size() == 0 }, + { assert workflow.out.bamstat_txt.size() == 0 }, + { assert workflow.out.innerdistance_all.size() == 0 }, + { assert workflow.out.inferexperiment_txt.size() == 0 }, + { assert workflow.out.junctionannotation_all.size() == 0 }, + { assert workflow.out.junctionsaturation_all.size() == 0 }, + { assert workflow.out.readdistribution_txt.size() == 0 }, + { assert workflow.out.readduplication_all.size() == 0 }, + { assert workflow.out.tin_txt.size() == 0 }, { assert workflow.out.versions.size() == 0 }, ) } diff --git a/subworkflows/nf-core/bam_rseqc/tests/main.nf.test.snap b/subworkflows/nf-core/bam_rseqc/tests/main.nf.test.snap index f80f50b2e..8bd21052f 100644 --- a/subworkflows/nf-core/bam_rseqc/tests/main.nf.test.snap +++ b/subworkflows/nf-core/bam_rseqc/tests/main.nf.test.snap @@ -1,36 +1,68 @@ { - "inner_distance": { + "bamstat_txt": { "content": [ [ [ { "id": "test" }, - "test.inner_distance.txt:md5,a1acc9def0f64a5500d4c4cb47cbe32b" - ], + "test.bam_stat.txt:md5,2675857864c1d1139b2a19d25dc36b09" + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2023-12-08T14:37:45.671792186" + }, + "readduplication_all": { + "content": [ + [ [ { "id": "test" }, - "test.inner_distance_freq.txt:md5,3fc037501f5899b5da009c8ce02fc25e" + "test.DupRate_plot.r:md5,3c0325095cee4835b921e57d61c23dca" ], [ { "id": "test" }, - "test.inner_distance_mean.txt:md5,58398b7d5a29a5e564f9e3c50b55996c" + "test.pos.DupRate.xls:md5,a859bc2031d46bf1cc4336205847caa3" ], [ { "id": "test" }, - "test.inner_distance_plot.r:md5,5859fbd5b42046d47e8b9aa85077f4ea" + "test.seq.DupRate.xls:md5,ee8783399eec5a18522a6f08bece338b" ] ] ], - "timestamp": "2023-12-08T14:37:45.734509133" + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2023-12-08T14:37:45.927253593" }, - "junction_saturation": { + "tin_txt": { + "content": [ + [ + [ + { + "id": "test" + }, + "test.paired_end.sorted.summary.txt:md5,9d98447e178b89a89f6f5aba7a772fe6" + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-06T15:29:37.545261" + }, + "junctionsaturation_all": { "content": [ [ [ @@ -41,6 +73,10 @@ ] ] ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, "timestamp": "2023-12-08T14:37:45.825157699" }, "versions": { @@ -56,96 +92,96 @@ "versions.yml:md5,fd16f1098b9c285f3ea7bd3daf4e8f10" ] ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, "timestamp": "2023-12-14T14:58:10.874440924" }, - "tin": { - "content": [ - [ - [ - { - "id": "test" - }, - "test.paired_end.sorted.summary.txt:md5,9d98447e178b89a89f6f5aba7a772fe6" - ] - ] - ], - "timestamp": "2023-12-08T14:37:45.935155313" - }, - "bamstat": { + "readdistribution_txt": { "content": [ [ [ { "id": "test" }, - "test.bam_stat.txt:md5,2675857864c1d1139b2a19d25dc36b09" + "test.read_distribution.txt:md5,56893fdc0809d968629a363551a1655f" ] ] ], - "timestamp": "2023-12-08T14:37:45.671792186" + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2023-12-08T14:37:45.841855468" }, - "inferexperiment": { + "innerdistance_all": { "content": [ [ [ { "id": "test" }, - "test.infer_experiment.txt:md5,f9d0bfc239df637cd8aeda40ade3c59a" - ] - ] - ], - "timestamp": "2023-12-08T14:37:45.747507043" - }, - "read_duplication": { - "content": [ - [ + "test.inner_distance.txt:md5,a1acc9def0f64a5500d4c4cb47cbe32b" + ], [ { "id": "test" }, - "test.DupRate_plot.r:md5,3c0325095cee4835b921e57d61c23dca" + "test.inner_distance_freq.txt:md5,3fc037501f5899b5da009c8ce02fc25e" ], [ { "id": "test" }, - "test.pos.DupRate.xls:md5,a859bc2031d46bf1cc4336205847caa3" + "test.inner_distance_mean.txt:md5,58398b7d5a29a5e564f9e3c50b55996c" ], [ { "id": "test" }, - "test.seq.DupRate.xls:md5,ee8783399eec5a18522a6f08bece338b" + "test.inner_distance_plot.r:md5,5859fbd5b42046d47e8b9aa85077f4ea" ] ] ], - "timestamp": "2023-12-08T14:37:45.927253593" + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2023-12-08T14:37:45.734509133" }, - "junction_annotation": { + "inferexperiment_txt": { "content": [ [ [ { "id": "test" }, - "test.junction_annotation.log:md5,d75e0f5d62fada8aa9449991b209554c" + "test.infer_experiment.txt:md5,f9d0bfc239df637cd8aeda40ade3c59a" ] ] ], - "timestamp": "2023-12-14T17:42:43.31783911" + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-06T15:29:37.537104" }, - "readdistribution": { + "junctionannotation_all": { "content": [ [ [ { "id": "test" }, - "test.read_distribution.txt:md5,56893fdc0809d968629a363551a1655f" + "test.junction_annotation.log:md5,d75e0f5d62fada8aa9449991b209554c" ] ] ], - "timestamp": "2023-12-08T14:37:45.841855468" + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2023-12-14T17:42:43.31783911" } } \ No newline at end of file From 21e688a98865edde53921eb974e66ebfd665e023 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Thu, 8 Feb 2024 15:12:49 +0000 Subject: [PATCH 042/634] Revert "update bam_rseqc to fix linting issue" This reverts commit 99481d5b9e8303d0a963850bf806e7320a6a22dc. --- modules.json | 4 +- .../nf-core/rseqc/bamstat/tests/main.nf.test | 2 +- .../rseqc/bamstat/tests/main.nf.test.snap | 4 - subworkflows/nf-core/bam_rseqc/main.nf | 207 +++++++++--------- subworkflows/nf-core/bam_rseqc/meta.yml | 52 ++--- .../nf-core/bam_rseqc/nextflow.config | 153 +++++++++++++ .../nf-core/bam_rseqc/tests/main.nf.test | 40 ++-- .../nf-core/bam_rseqc/tests/main.nf.test.snap | 124 ++++------- 8 files changed, 347 insertions(+), 239 deletions(-) create mode 100644 subworkflows/nf-core/bam_rseqc/nextflow.config diff --git a/modules.json b/modules.json index bead3e2ef..4b8eb3b5c 100644 --- a/modules.json +++ b/modules.json @@ -107,7 +107,7 @@ }, "rseqc/bamstat": { "branch": "master", - "git_sha": "9eb22e4d3f28c274b7c498a1564581377349a242", + "git_sha": "41f4baa439663b9027727d83a3293db93bad3f8c", "installed_by": ["bam_rseqc"] }, "rseqc/inferexperiment": { @@ -255,7 +255,7 @@ }, "bam_rseqc": { "branch": "master", - "git_sha": "9eb22e4d3f28c274b7c498a1564581377349a242", + "git_sha": "0c38be7e652a0b2f3a37681ee4c0dbdf85677647", "installed_by": ["subworkflows"] }, "bam_sort_stats_samtools": { diff --git a/modules/nf-core/rseqc/bamstat/tests/main.nf.test b/modules/nf-core/rseqc/bamstat/tests/main.nf.test index 2f209b0a7..1facabea0 100644 --- a/modules/nf-core/rseqc/bamstat/tests/main.nf.test +++ b/modules/nf-core/rseqc/bamstat/tests/main.nf.test @@ -22,7 +22,7 @@ nextflow_process { """ input[0] = [ [ id:'test' ], // meta map - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam') + file(params.test_data['sarscov2']['illumina']['test_paired_end_sorted_bam'], checkIfExists: true) ] """ } diff --git a/modules/nf-core/rseqc/bamstat/tests/main.nf.test.snap b/modules/nf-core/rseqc/bamstat/tests/main.nf.test.snap index 6e3f0364e..57c764e57 100644 --- a/modules/nf-core/rseqc/bamstat/tests/main.nf.test.snap +++ b/modules/nf-core/rseqc/bamstat/tests/main.nf.test.snap @@ -26,10 +26,6 @@ ] } ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, "timestamp": "2023-12-14T17:00:23.830276754" } } \ No newline at end of file diff --git a/subworkflows/nf-core/bam_rseqc/main.nf b/subworkflows/nf-core/bam_rseqc/main.nf index 043321a13..bf530f09d 100644 --- a/subworkflows/nf-core/bam_rseqc/main.nf +++ b/subworkflows/nf-core/bam_rseqc/main.nf @@ -13,173 +13,168 @@ include { RSEQC_TIN } from '../../../modules/nf-core/rseqc/tin/ma workflow BAM_RSEQC { take: - bam_bai // channel: [ val(meta), [ bam, bai ] ] - bed // channel: [ genome.bed ] + ch_bam_bai // channel: [ val(meta), [ bam, bai ] ] + ch_bed // file: /path/to/genome.bed rseqc_modules // list: rseqc modules to run main: - bam = bam_bai.map{ [ it[0], it[1] ] } + ch_versions = Channel.empty() - versions = Channel.empty() + ch_bam_bai + .map { [ it[0], it[1] ] } + .set { ch_bam } // // Run RSeQC bam_stat.py // - bamstat_txt = Channel.empty() - + ch_bamstat = Channel.empty() if ('bam_stat' in rseqc_modules) { - RSEQC_BAMSTAT(bam) - bamstat_txt = RSEQC_BAMSTAT.out.txt - versions = versions.mix(RSEQC_BAMSTAT.out.versions.first()) + RSEQC_BAMSTAT ( ch_bam ) + ch_bamstat = RSEQC_BAMSTAT.out.txt + ch_versions = ch_versions.mix(RSEQC_BAMSTAT.out.versions.first()) } // // Run RSeQC inner_distance.py // - innerdistance_all = Channel.empty() - innerdistance_distance = Channel.empty() - innerdistance_freq = Channel.empty() - innerdistance_mean = Channel.empty() - innerdistance_pdf = Channel.empty() - innerdistance_rscript = Channel.empty() - + ch_innerdistance = Channel.empty() + ch_innerdistance_distance = Channel.empty() + ch_innerdistance_freq = Channel.empty() + ch_innerdistance_mean = Channel.empty() + ch_innerdistance_pdf = Channel.empty() + ch_innerdistance_rscript = Channel.empty() if ('inner_distance' in rseqc_modules) { - RSEQC_INNERDISTANCE(bam, bed) - innerdistance_distance = RSEQC_INNERDISTANCE.out.distance - innerdistance_freq = RSEQC_INNERDISTANCE.out.freq - innerdistance_mean = RSEQC_INNERDISTANCE.out.mean - innerdistance_pdf = RSEQC_INNERDISTANCE.out.pdf - innerdistance_rscript = RSEQC_INNERDISTANCE.out.rscript - innerdistance_all = innerdistance_distance.mix(innerdistance_freq, innerdistance_mean, innerdistance_pdf, innerdistance_rscript) - versions = versions.mix(RSEQC_INNERDISTANCE.out.versions.first()) + RSEQC_INNERDISTANCE ( ch_bam, ch_bed ) + ch_innerdistance_distance = RSEQC_INNERDISTANCE.out.distance + ch_innerdistance_freq = RSEQC_INNERDISTANCE.out.freq + ch_innerdistance_mean = RSEQC_INNERDISTANCE.out.mean + ch_innerdistance_pdf = RSEQC_INNERDISTANCE.out.pdf + ch_innerdistance_rscript = RSEQC_INNERDISTANCE.out.rscript + ch_innerdistance = ch_innerdistance_distance.mix(ch_innerdistance_freq, ch_innerdistance_mean, ch_innerdistance_pdf, ch_innerdistance_rscript) + ch_versions = ch_versions.mix(RSEQC_INNERDISTANCE.out.versions.first()) } // // Run RSeQC infer_experiment.py // - inferexperiment_txt = Channel.empty() + ch_inferexperiment = Channel.empty() if ('infer_experiment' in rseqc_modules) { - RSEQC_INFEREXPERIMENT(bam, bed) - inferexperiment_txt = RSEQC_INFEREXPERIMENT.out.txt - versions = versions.mix(RSEQC_INFEREXPERIMENT.out.versions.first()) + RSEQC_INFEREXPERIMENT ( ch_bam, ch_bed ) + ch_inferexperiment = RSEQC_INFEREXPERIMENT.out.txt + ch_versions = ch_versions.mix(RSEQC_INFEREXPERIMENT.out.versions.first()) } // // Run RSeQC junction_annotation.py // - junctionannotation_all = Channel.empty() - junctionannotation_bed = Channel.empty() - junctionannotation_interact_bed = Channel.empty() - junctionannotation_xls = Channel.empty() - junctionannotation_pdf = Channel.empty() - junctionannotation_events_pdf = Channel.empty() - junctionannotation_rscript = Channel.empty() - junctionannotation_log = Channel.empty() - + ch_junctionannotation = Channel.empty() + ch_junctionannotation_bed = Channel.empty() + ch_junctionannotation_interact_bed = Channel.empty() + ch_junctionannotation_xls = Channel.empty() + ch_junctionannotation_pdf = Channel.empty() + ch_junctionannotation_events_pdf = Channel.empty() + ch_junctionannotation_rscript = Channel.empty() + ch_junctionannotation_log = Channel.empty() if ('junction_annotation' in rseqc_modules) { - RSEQC_JUNCTIONANNOTATION(bam, bed) - junctionannotation_bed = RSEQC_JUNCTIONANNOTATION.out.bed - junctionannotation_interact_bed = RSEQC_JUNCTIONANNOTATION.out.interact_bed - junctionannotation_xls = RSEQC_JUNCTIONANNOTATION.out.xls - junctionannotation_pdf = RSEQC_JUNCTIONANNOTATION.out.pdf - junctionannotation_events_pdf = RSEQC_JUNCTIONANNOTATION.out.events_pdf - junctionannotation_rscript = RSEQC_JUNCTIONANNOTATION.out.rscript - junctionannotation_log = RSEQC_JUNCTIONANNOTATION.out.log - junctionannotation_all = junctionannotation_bed.mix(junctionannotation_interact_bed, junctionannotation_xls, junctionannotation_pdf, junctionannotation_events_pdf, junctionannotation_rscript, junctionannotation_log) - versions = versions.mix(RSEQC_JUNCTIONANNOTATION.out.versions.first()) + RSEQC_JUNCTIONANNOTATION ( ch_bam, ch_bed ) + ch_junctionannotation_bed = RSEQC_JUNCTIONANNOTATION.out.bed + ch_junctionannotation_interact_bed = RSEQC_JUNCTIONANNOTATION.out.interact_bed + ch_junctionannotation_xls = RSEQC_JUNCTIONANNOTATION.out.xls + ch_junctionannotation_pdf = RSEQC_JUNCTIONANNOTATION.out.pdf + ch_junctionannotation_events_pdf = RSEQC_JUNCTIONANNOTATION.out.events_pdf + ch_junctionannotation_rscript = RSEQC_JUNCTIONANNOTATION.out.rscript + ch_junctionannotation_log = RSEQC_JUNCTIONANNOTATION.out.log + ch_junctionannotation = ch_junctionannotation_bed.mix(ch_junctionannotation_interact_bed, ch_junctionannotation_xls, ch_junctionannotation_pdf, ch_junctionannotation_events_pdf, ch_junctionannotation_rscript, ch_junctionannotation_log) + ch_versions = ch_versions.mix(RSEQC_JUNCTIONANNOTATION.out.versions.first()) } // // Run RSeQC junction_saturation.py // - junctionsaturation_all = Channel.empty() - junctionsaturation_pdf = Channel.empty() - junctionsaturation_rscript = Channel.empty() - + ch_junctionsaturation = Channel.empty() + ch_junctionsaturation_pdf = Channel.empty() + ch_junctionsaturation_rscript = Channel.empty() if ('junction_saturation' in rseqc_modules) { - RSEQC_JUNCTIONSATURATION(bam, bed) - junctionsaturation_pdf = RSEQC_JUNCTIONSATURATION.out.pdf - junctionsaturation_rscript = RSEQC_JUNCTIONSATURATION.out.rscript - junctionsaturation_all = junctionsaturation_pdf.mix(junctionsaturation_rscript) - versions = versions.mix(RSEQC_JUNCTIONSATURATION.out.versions.first()) + RSEQC_JUNCTIONSATURATION ( ch_bam, ch_bed ) + ch_junctionsaturation_pdf = RSEQC_JUNCTIONSATURATION.out.pdf + ch_junctionsaturation_rscript = RSEQC_JUNCTIONSATURATION.out.rscript + ch_junctionsaturation = ch_junctionsaturation_pdf.mix(ch_junctionsaturation_rscript) + ch_versions = ch_versions.mix(RSEQC_JUNCTIONSATURATION.out.versions.first()) } // // Run RSeQC read_distribution.py // - readdistribution_txt = Channel.empty() - + ch_readdistribution = Channel.empty() if ('read_distribution' in rseqc_modules) { - RSEQC_READDISTRIBUTION(bam, bed) - readdistribution_txt = RSEQC_READDISTRIBUTION.out.txt - versions = versions.mix(RSEQC_READDISTRIBUTION.out.versions.first()) + RSEQC_READDISTRIBUTION ( ch_bam, ch_bed ) + ch_readdistribution = RSEQC_READDISTRIBUTION.out.txt + ch_versions = ch_versions.mix(RSEQC_READDISTRIBUTION.out.versions.first()) } // // Run RSeQC read_duplication.py // - readduplication_all = Channel.empty() - readduplication_seq_xls = Channel.empty() - readduplication_pos_xls = Channel.empty() - readduplication_pdf = Channel.empty() - readduplication_rscript = Channel.empty() - + ch_readduplication = Channel.empty() + ch_readduplication_seq_xls = Channel.empty() + ch_readduplication_pos_xls = Channel.empty() + ch_readduplication_pdf = Channel.empty() + ch_readduplication_rscript = Channel.empty() if ('read_duplication' in rseqc_modules) { - RSEQC_READDUPLICATION(bam ) - readduplication_seq_xls = RSEQC_READDUPLICATION.out.seq_xls - readduplication_pos_xls = RSEQC_READDUPLICATION.out.pos_xls - readduplication_pdf = RSEQC_READDUPLICATION.out.pdf - readduplication_rscript = RSEQC_READDUPLICATION.out.rscript - readduplication_all = readduplication_seq_xls.mix(readduplication_pos_xls, readduplication_pdf, readduplication_rscript) - versions = versions.mix(RSEQC_READDUPLICATION.out.versions.first()) + RSEQC_READDUPLICATION ( ch_bam ) + ch_readduplication_seq_xls = RSEQC_READDUPLICATION.out.seq_xls + ch_readduplication_pos_xls = RSEQC_READDUPLICATION.out.pos_xls + ch_readduplication_pdf = RSEQC_READDUPLICATION.out.pdf + ch_readduplication_rscript = RSEQC_READDUPLICATION.out.rscript + ch_readduplication = ch_readduplication_seq_xls.mix(ch_readduplication_pos_xls, ch_readduplication_pdf, ch_readduplication_rscript) + ch_versions = ch_versions.mix(RSEQC_READDUPLICATION.out.versions.first()) } // // Run RSeQC tin.py // - tin_txt = Channel.empty() - + ch_tin = Channel.empty() if ('tin' in rseqc_modules) { - RSEQC_TIN(bam_bai, bed) - tin_txt = RSEQC_TIN.out.txt - versions = versions.mix(RSEQC_TIN.out.versions.first()) + RSEQC_TIN ( ch_bam_bai, ch_bed ) + ch_tin = RSEQC_TIN.out.txt + ch_versions = ch_versions.mix(RSEQC_TIN.out.versions.first()) } emit: - bamstat_txt // channel: [ val(meta), txt ] + ch_bamstat // channel: [ val(meta), txt ] - innerdistance_all // channel: [ val(meta), {txt, pdf, r} ] - innerdistance_distance // channel: [ val(meta), txt ] - innerdistance_freq // channel: [ val(meta), txt ] - innerdistance_mean // channel: [ val(meta), txt ] - innerdistance_pdf // channel: [ val(meta), pdf ] - innerdistance_rscript // channel: [ val(meta), r ] + ch_innerdistance + ch_innerdistance_distance // channel: [ val(meta), txt ] + ch_innerdistance_freq // channel: [ val(meta), txt ] + ch_innerdistance_mean // channel: [ val(meta), txt ] + ch_innerdistance_pdf // channel: [ val(meta), pdf ] + ch_innerdistance_rscript // channel: [ val(meta), r ] - inferexperiment_txt // channel: [ val(meta), txt ] + ch_inferexperiment // channel: [ val(meta), txt ] - junctionannotation_all // channel: [ val(meta), {bed, xls, pdf, r, log} ] - junctionannotation_bed // channel: [ val(meta), bed ] - junctionannotation_interact_bed // channel: [ val(meta), bed ] - junctionannotation_xls // channel: [ val(meta), xls ] - junctionannotation_pdf // channel: [ val(meta), pdf ] - junctionannotation_events_pdf // channel: [ val(meta), pdf ] - junctionannotation_rscript // channel: [ val(meta), r ] - junctionannotation_log // channel: [ val(meta), log ] + ch_junctionannotation + ch_junctionannotation_bed // channel: [ val(meta), bed ] + ch_junctionannotation_interact_bed // channel: [ val(meta), bed ] + ch_junctionannotation_xls // channel: [ val(meta), xls ] + ch_junctionannotation_pdf // channel: [ val(meta), pdf ] + ch_junctionannotation_events_pdf // channel: [ val(meta), pdf ] + ch_junctionannotation_rscript // channel: [ val(meta), r ] + ch_junctionannotation_log // channel: [ val(meta), log ] - junctionsaturation_all // channel: [ val(meta), {pdf, r} ] - junctionsaturation_pdf // channel: [ val(meta), pdf ] - junctionsaturation_rscript // channel: [ val(meta), r ] + ch_junctionsaturation + ch_junctionsaturation_pdf // channel: [ val(meta), pdf ] + ch_junctionsaturation_rscript // channel: [ val(meta), r ] - readdistribution_txt // channel: [ val(meta), txt ] + ch_readdistribution // channel: [ val(meta), txt ] - readduplication_all // channel: [ val(meta), {xls, pdf, r} ] - readduplication_seq_xls // channel: [ val(meta), xls ] - readduplication_pos_xls // channel: [ val(meta), xls ] - readduplication_pdf // channel: [ val(meta), pdf ] - readduplication_rscript // channel: [ val(meta), r ] + ch_readduplication + ch_readduplication_seq_xls // channel: [ val(meta), xls ] + ch_readduplication_pos_xls // channel: [ val(meta), xls ] + ch_readduplication_pdf // channel: [ val(meta), pdf ] + ch_readduplication_rscript // channel: [ val(meta), r ] - tin_txt // channel: [ val(meta), txt ] + ch_tin // channel: [ val(meta), txt ] - versions // channel: [ versions.yml ] + versions = ch_versions // channel: [ versions.yml ] } diff --git a/subworkflows/nf-core/bam_rseqc/meta.yml b/subworkflows/nf-core/bam_rseqc/meta.yml index 6e76ff560..2fef88737 100644 --- a/subworkflows/nf-core/bam_rseqc/meta.yml +++ b/subworkflows/nf-core/bam_rseqc/meta.yml @@ -46,107 +46,107 @@ input: List of rseqc modules to run e.g. [ 'bam_stat', 'infer_experiment' ] output: - - bamstat_txt: + - ch_bamstat: type: file description: bam statistics report pattern: "*.bam_stat.txt" - - innerdistance_all: + - ch_innerdistance: type: file description: All the output files from RSEQC_INNERDISTANCE pattern: "*.{txt,pdf,R}" - - innerdistance_distance: + - ch_innerdistance_distance: type: file description: the inner distances pattern: "*.inner_distance.txt" - - innerdistance_freq: + - ch_innerdistance_freq: type: file description: frequencies of different insert sizes pattern: "*.inner_distance_freq.txt" - - innerdistance_mean: + - ch_innerdistance_mean: type: file description: mean/median values of inner distances pattern: "*.inner_distance_mean.txt" - - innerdistance_pdf: + - ch_innerdistance_pdf: type: file description: distribution plot of inner distances pattern: "*.inner_distance_plot.pdf" - - innerdistance_rscript: + - ch_innerdistance_rscript: type: file description: script to reproduce the plot pattern: "*.inner_distance_plot.R" - - inferexperiment_txt: + - ch_inferexperiment: type: file description: infer_experiment results report pattern: "*.infer_experiment.txt" - - junctionannotation_all: + - ch_junctionannotation: type: file description: All the output files from RSEQC_JUNCTIONANNOTATION pattern: "*.{bed,xls,pdf,R,log}" - - junctionannotation_bed: + - ch_junctionannotation_bed: type: file description: bed file of annotated junctions pattern: "*.junction.bed" - - junctionannotation_interact_bed: + - ch_junctionannotation_interact_bed: type: file description: Interact bed file pattern: "*.Interact.bed" - - junctionannotation_xls: + - ch_junctionannotation_xls: type: file description: xls file with junction information pattern: "*.xls" - - junctionannotation_pdf: + - ch_junctionannotation_pdf: type: file description: junction plot pattern: "*.junction.pdf" - - junctionannotation_events_pdf: + - ch_junctionannotation_events_pdf: type: file description: events plot pattern: "*.events.pdf" - - junctionannotation_rscript: + - ch_junctionannotation_rscript: type: file description: Rscript to reproduce the plots pattern: "*.r" - - junctionannotation_log: + - ch_junctionannotation_log: type: file description: Log file generated by tool pattern: "*.log" - - junctionsaturation_all: + - ch_junctionsaturation: type: file description: All the output files from RSEQC_JUNCTIONSATURATION pattern: "*.{pdf,R}" - - junctionsaturation_pdf: + - ch_junctionsaturation_pdf: type: file description: Junction saturation report pattern: "*.pdf" - - junctionsaturation_rscript: + - ch_junctionsaturation_rscript: type: file description: Junction saturation R-script pattern: "*.r" - - readdistribution_txt: + - ch_readdistribution: type: file description: the read distribution report pattern: "*.read_distribution.txt" - - readduplication_all: + - ch_readduplication: type: file description: All the output files from RSEQC_READDUPLICATION pattern: "*.{xls,pdf,R}" - - readduplication_seq_xls: + - ch_readduplication_seq_xls: type: file description: Read duplication rate determined from mapping position of read pattern: "*seq.DupRate.xls" - - readduplication_pos_xls: + - ch_readduplication_pos_xls: type: file description: Read duplication rate determined from sequence of read pattern: "*pos.DupRate.xls" - - readduplication_pdf: + - ch_readduplication_pdf: type: file description: plot of duplication rate pattern: "*.pdf" - - readduplication_rscript: + - ch_readduplication_rscript: type: file description: script to reproduce the plot pattern: "*.R" - - tin_txt: + - ch_tin: type: file description: TXT file containing tin.py results summary pattern: "*.txt" diff --git a/subworkflows/nf-core/bam_rseqc/nextflow.config b/subworkflows/nf-core/bam_rseqc/nextflow.config new file mode 100644 index 000000000..4fabc8e99 --- /dev/null +++ b/subworkflows/nf-core/bam_rseqc/nextflow.config @@ -0,0 +1,153 @@ +def rseqc_modules = params.rseqc_modules ? params.rseqc_modules.split(',').collect{ it.trim().toLowerCase() } : [] + +if (!params.skip_alignment && !params.skip_qc && !params.skip_rseqc) { + if ('bam_stat' in rseqc_modules) { + process { + withName: '.*:BAM_RSEQC:RSEQC_BAMSTAT' { + publishDir = [ + path: { "${params.outdir}/${params.aligner}/rseqc/bam_stat" }, + mode: params.publish_dir_mode, + saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + ] + } + } + } + + if ('infer_experiment' in rseqc_modules) { + process { + withName: '.*:BAM_RSEQC:RSEQC_INFEREXPERIMENT' { + publishDir = [ + path: { "${params.outdir}/${params.aligner}/rseqc/infer_experiment" }, + mode: params.publish_dir_mode, + saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + ] + } + } + } + + if ('junction_annotation' in rseqc_modules) { + process { + withName: '.*:BAM_RSEQC:RSEQC_JUNCTIONANNOTATION' { + publishDir = [ + [ + path: { "${params.outdir}/${params.aligner}/rseqc/junction_annotation/pdf" }, + mode: params.publish_dir_mode, + pattern: '*.pdf' + ], + [ + path: { "${params.outdir}/${params.aligner}/rseqc/junction_annotation/bed" }, + mode: params.publish_dir_mode, + pattern: '*.bed' + ], + [ + path: { "${params.outdir}/${params.aligner}/rseqc/junction_annotation/xls" }, + mode: params.publish_dir_mode, + pattern: '*.xls' + ], + [ + path: { "${params.outdir}/${params.aligner}/rseqc/junction_annotation/log" }, + mode: params.publish_dir_mode, + pattern: '*.log' + ], + [ + path: { "${params.outdir}/${params.aligner}/rseqc/junction_annotation/rscript" }, + mode: params.publish_dir_mode, + pattern: '*.r' + ] + ] + } + } + } + + if ('junction_saturation' in rseqc_modules) { + process { + withName: '.*:BAM_RSEQC:RSEQC_JUNCTIONSATURATION' { + publishDir = [ + [ + path: { "${params.outdir}/${params.aligner}/rseqc/junction_saturation/pdf" }, + mode: params.publish_dir_mode, + pattern: '*.pdf' + ], + [ + path: { "${params.outdir}/${params.aligner}/rseqc/junction_saturation/rscript" }, + mode: params.publish_dir_mode, + pattern: '*.r' + ] + ] + } + } + } + + if ('read_duplication' in rseqc_modules) { + process { + withName: '.*:BAM_RSEQC:RSEQC_READDUPLICATION' { + publishDir = [ + [ + path: { "${params.outdir}/${params.aligner}/rseqc/read_duplication/pdf" }, + mode: params.publish_dir_mode, + pattern: '*.pdf' + ], + [ + path: { "${params.outdir}/${params.aligner}/rseqc/read_duplication/xls" }, + mode: params.publish_dir_mode, + pattern: '*.xls' + ], + [ + path: { "${params.outdir}/${params.aligner}/rseqc/read_duplication/rscript" }, + mode: params.publish_dir_mode, + pattern: '*.r' + ] + ] + } + } + } + + if ('read_distribution' in rseqc_modules && !params.bam_csi_index) { + process { + withName: '.*:BAM_RSEQC:RSEQC_READDISTRIBUTION' { + publishDir = [ + path: { "${params.outdir}/${params.aligner}/rseqc/read_distribution" }, + mode: params.publish_dir_mode, + saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + ] + } + } + } + + if ('inner_distance' in rseqc_modules && !params.bam_csi_index) { + process { + withName: '.*:BAM_RSEQC:RSEQC_INNERDISTANCE' { + publishDir = [ + [ + path: { "${params.outdir}/${params.aligner}/rseqc/inner_distance/txt" }, + mode: params.publish_dir_mode, + pattern: '*.txt', + saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + ], + [ + path: { "${params.outdir}/${params.aligner}/rseqc/inner_distance/pdf" }, + mode: params.publish_dir_mode, + pattern: '*.pdf' + ], + [ + path: { "${params.outdir}/${params.aligner}/rseqc/inner_distance/rscript" }, + mode: params.publish_dir_mode, + pattern: '*.r' + ] + ] + } + } + } + + if ('tin' in rseqc_modules && !params.bam_csi_index) { + process { + withName: '.*:BAM_RSEQC:RSEQC_TIN' { + publishDir = [ + path: { "${params.outdir}/${params.aligner}/rseqc/tin" }, + mode: params.publish_dir_mode, + saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + ] + } + } + } +} diff --git a/subworkflows/nf-core/bam_rseqc/tests/main.nf.test b/subworkflows/nf-core/bam_rseqc/tests/main.nf.test index cc1cea4ec..bd84bebff 100644 --- a/subworkflows/nf-core/bam_rseqc/tests/main.nf.test +++ b/subworkflows/nf-core/bam_rseqc/tests/main.nf.test @@ -38,26 +38,26 @@ nextflow_workflow { then { assertAll( { assert workflow.success}, - { assert snapshot(workflow.out.bamstat_txt).match("bamstat_txt")}, + { assert snapshot(workflow.out.ch_bamstat).match("bamstat")}, - { assert snapshot(workflow.out.innerdistance_all.findAll { it[1].endsWith('.pdf') == false }).match("innerdistance_all")}, - { assert workflow.out.innerdistance_all.any { it[1].endsWith('.pdf') && file(it[1]).exists() } }, + { assert snapshot(workflow.out.ch_innerdistance.findAll { it[1].endsWith('.pdf') == false }).match("inner_distance")}, + { assert workflow.out.ch_innerdistance.any { it[1].endsWith('.pdf') && file(it[1]).exists() } }, - { assert snapshot(workflow.out.inferexperiment_txt).match("inferexperiment_txt")}, + { assert snapshot(workflow.out.ch_inferexperiment).match("inferexperiment")}, - { assert snapshot(workflow.out.junctionannotation_all.findAll { + { assert snapshot(workflow.out.ch_junctionannotation.findAll { it[1].endsWith('.xls') == false && - it[1].endsWith('.r') == false }).match("junctionannotation_all")}, + it[1].endsWith('.r') == false }).match("junction_annotation")}, - { assert snapshot(workflow.out.junctionsaturation_all.findAll { it[1].endsWith('.pdf') == false }).match("junctionsaturation_all")}, - { assert workflow.out.junctionsaturation_all.any { it[1].endsWith('.pdf') && file(it[1]).exists() } }, + { assert snapshot(workflow.out.ch_junctionsaturation.findAll { it[1].endsWith('.pdf') == false }).match("junction_saturation")}, + { assert workflow.out.ch_junctionsaturation.any { it[1].endsWith('.pdf') && file(it[1]).exists() } }, - { assert snapshot(workflow.out.readdistribution_txt).match("readdistribution_txt")}, + { assert snapshot(workflow.out.ch_readdistribution).match("readdistribution")}, - { assert snapshot(workflow.out.readduplication_all.findAll { it[1].endsWith('.pdf') == false }).match("readduplication_all")}, - { assert workflow.out.readduplication_all.any { it[1].endsWith('.pdf') && file(it[1]).exists() } }, + { assert snapshot(workflow.out.ch_readduplication.findAll { it[1].endsWith('.pdf') == false }).match("read_duplication")}, + { assert workflow.out.ch_readduplication.any { it[1].endsWith('.pdf') && file(it[1]).exists() } }, - { assert snapshot(workflow.out.tin_txt).match("tin_txt")}, + { assert snapshot(workflow.out.ch_tin).match("tin")}, { assert snapshot(workflow.out.versions).match("versions")}, ) } @@ -84,14 +84,14 @@ nextflow_workflow { then { assertAll( { assert workflow.success }, - { assert workflow.out.bamstat_txt.size() == 0 }, - { assert workflow.out.innerdistance_all.size() == 0 }, - { assert workflow.out.inferexperiment_txt.size() == 0 }, - { assert workflow.out.junctionannotation_all.size() == 0 }, - { assert workflow.out.junctionsaturation_all.size() == 0 }, - { assert workflow.out.readdistribution_txt.size() == 0 }, - { assert workflow.out.readduplication_all.size() == 0 }, - { assert workflow.out.tin_txt.size() == 0 }, + { assert workflow.out.ch_bamstat.size() == 0 }, + { assert workflow.out.ch_innerdistance.size() == 0 }, + { assert workflow.out.ch_inferexperiment.size() == 0 }, + { assert workflow.out.ch_junctionannotation.size() == 0 }, + { assert workflow.out.ch_junctionsaturation.size() == 0 }, + { assert workflow.out.ch_readdistribution.size() == 0 }, + { assert workflow.out.ch_readduplication.size() == 0 }, + { assert workflow.out.ch_tin.size() == 0 }, { assert workflow.out.versions.size() == 0 }, ) } diff --git a/subworkflows/nf-core/bam_rseqc/tests/main.nf.test.snap b/subworkflows/nf-core/bam_rseqc/tests/main.nf.test.snap index 8bd21052f..f80f50b2e 100644 --- a/subworkflows/nf-core/bam_rseqc/tests/main.nf.test.snap +++ b/subworkflows/nf-core/bam_rseqc/tests/main.nf.test.snap @@ -1,68 +1,36 @@ { - "bamstat_txt": { + "inner_distance": { "content": [ [ [ { "id": "test" }, - "test.bam_stat.txt:md5,2675857864c1d1139b2a19d25dc36b09" - ] - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2023-12-08T14:37:45.671792186" - }, - "readduplication_all": { - "content": [ - [ - [ - { - "id": "test" - }, - "test.DupRate_plot.r:md5,3c0325095cee4835b921e57d61c23dca" + "test.inner_distance.txt:md5,a1acc9def0f64a5500d4c4cb47cbe32b" ], [ { "id": "test" }, - "test.pos.DupRate.xls:md5,a859bc2031d46bf1cc4336205847caa3" + "test.inner_distance_freq.txt:md5,3fc037501f5899b5da009c8ce02fc25e" ], [ { "id": "test" }, - "test.seq.DupRate.xls:md5,ee8783399eec5a18522a6f08bece338b" - ] - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2023-12-08T14:37:45.927253593" - }, - "tin_txt": { - "content": [ - [ + "test.inner_distance_mean.txt:md5,58398b7d5a29a5e564f9e3c50b55996c" + ], [ { "id": "test" }, - "test.paired_end.sorted.summary.txt:md5,9d98447e178b89a89f6f5aba7a772fe6" + "test.inner_distance_plot.r:md5,5859fbd5b42046d47e8b9aa85077f4ea" ] ] ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-02-06T15:29:37.545261" + "timestamp": "2023-12-08T14:37:45.734509133" }, - "junctionsaturation_all": { + "junction_saturation": { "content": [ [ [ @@ -73,10 +41,6 @@ ] ] ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, "timestamp": "2023-12-08T14:37:45.825157699" }, "versions": { @@ -92,96 +56,96 @@ "versions.yml:md5,fd16f1098b9c285f3ea7bd3daf4e8f10" ] ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, "timestamp": "2023-12-14T14:58:10.874440924" }, - "readdistribution_txt": { + "tin": { "content": [ [ [ { "id": "test" }, - "test.read_distribution.txt:md5,56893fdc0809d968629a363551a1655f" + "test.paired_end.sorted.summary.txt:md5,9d98447e178b89a89f6f5aba7a772fe6" ] ] ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2023-12-08T14:37:45.841855468" + "timestamp": "2023-12-08T14:37:45.935155313" }, - "innerdistance_all": { + "bamstat": { "content": [ [ [ { "id": "test" }, - "test.inner_distance.txt:md5,a1acc9def0f64a5500d4c4cb47cbe32b" - ], + "test.bam_stat.txt:md5,2675857864c1d1139b2a19d25dc36b09" + ] + ] + ], + "timestamp": "2023-12-08T14:37:45.671792186" + }, + "inferexperiment": { + "content": [ + [ [ { "id": "test" }, - "test.inner_distance_freq.txt:md5,3fc037501f5899b5da009c8ce02fc25e" + "test.infer_experiment.txt:md5,f9d0bfc239df637cd8aeda40ade3c59a" + ] + ] + ], + "timestamp": "2023-12-08T14:37:45.747507043" + }, + "read_duplication": { + "content": [ + [ + [ + { + "id": "test" + }, + "test.DupRate_plot.r:md5,3c0325095cee4835b921e57d61c23dca" ], [ { "id": "test" }, - "test.inner_distance_mean.txt:md5,58398b7d5a29a5e564f9e3c50b55996c" + "test.pos.DupRate.xls:md5,a859bc2031d46bf1cc4336205847caa3" ], [ { "id": "test" }, - "test.inner_distance_plot.r:md5,5859fbd5b42046d47e8b9aa85077f4ea" + "test.seq.DupRate.xls:md5,ee8783399eec5a18522a6f08bece338b" ] ] ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2023-12-08T14:37:45.734509133" + "timestamp": "2023-12-08T14:37:45.927253593" }, - "inferexperiment_txt": { + "junction_annotation": { "content": [ [ [ { "id": "test" }, - "test.infer_experiment.txt:md5,f9d0bfc239df637cd8aeda40ade3c59a" + "test.junction_annotation.log:md5,d75e0f5d62fada8aa9449991b209554c" ] ] ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-02-06T15:29:37.537104" + "timestamp": "2023-12-14T17:42:43.31783911" }, - "junctionannotation_all": { + "readdistribution": { "content": [ [ [ { "id": "test" }, - "test.junction_annotation.log:md5,d75e0f5d62fada8aa9449991b209554c" + "test.read_distribution.txt:md5,56893fdc0809d968629a363551a1655f" ] ] ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2023-12-14T17:42:43.31783911" + "timestamp": "2023-12-08T14:37:45.841855468" } } \ No newline at end of file From 95c026ba3c37a4ae10614c2d1f173ed5296a1c64 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Thu, 8 Feb 2024 15:16:04 +0000 Subject: [PATCH 043/634] update bam_rseqc to fix linting issue --- modules.json | 4 +- .../nf-core/rseqc/bamstat/tests/main.nf.test | 2 +- .../rseqc/bamstat/tests/main.nf.test.snap | 4 + subworkflows/nf-core/bam_rseqc/main.nf | 207 +++++++++--------- subworkflows/nf-core/bam_rseqc/meta.yml | 52 ++--- .../nf-core/bam_rseqc/tests/main.nf.test | 40 ++-- .../nf-core/bam_rseqc/tests/main.nf.test.snap | 124 +++++++---- 7 files changed, 239 insertions(+), 194 deletions(-) diff --git a/modules.json b/modules.json index 4b8eb3b5c..bead3e2ef 100644 --- a/modules.json +++ b/modules.json @@ -107,7 +107,7 @@ }, "rseqc/bamstat": { "branch": "master", - "git_sha": "41f4baa439663b9027727d83a3293db93bad3f8c", + "git_sha": "9eb22e4d3f28c274b7c498a1564581377349a242", "installed_by": ["bam_rseqc"] }, "rseqc/inferexperiment": { @@ -255,7 +255,7 @@ }, "bam_rseqc": { "branch": "master", - "git_sha": "0c38be7e652a0b2f3a37681ee4c0dbdf85677647", + "git_sha": "9eb22e4d3f28c274b7c498a1564581377349a242", "installed_by": ["subworkflows"] }, "bam_sort_stats_samtools": { diff --git a/modules/nf-core/rseqc/bamstat/tests/main.nf.test b/modules/nf-core/rseqc/bamstat/tests/main.nf.test index 1facabea0..2f209b0a7 100644 --- a/modules/nf-core/rseqc/bamstat/tests/main.nf.test +++ b/modules/nf-core/rseqc/bamstat/tests/main.nf.test @@ -22,7 +22,7 @@ nextflow_process { """ input[0] = [ [ id:'test' ], // meta map - file(params.test_data['sarscov2']['illumina']['test_paired_end_sorted_bam'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam') ] """ } diff --git a/modules/nf-core/rseqc/bamstat/tests/main.nf.test.snap b/modules/nf-core/rseqc/bamstat/tests/main.nf.test.snap index 57c764e57..6e3f0364e 100644 --- a/modules/nf-core/rseqc/bamstat/tests/main.nf.test.snap +++ b/modules/nf-core/rseqc/bamstat/tests/main.nf.test.snap @@ -26,6 +26,10 @@ ] } ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, "timestamp": "2023-12-14T17:00:23.830276754" } } \ No newline at end of file diff --git a/subworkflows/nf-core/bam_rseqc/main.nf b/subworkflows/nf-core/bam_rseqc/main.nf index bf530f09d..043321a13 100644 --- a/subworkflows/nf-core/bam_rseqc/main.nf +++ b/subworkflows/nf-core/bam_rseqc/main.nf @@ -13,168 +13,173 @@ include { RSEQC_TIN } from '../../../modules/nf-core/rseqc/tin/ma workflow BAM_RSEQC { take: - ch_bam_bai // channel: [ val(meta), [ bam, bai ] ] - ch_bed // file: /path/to/genome.bed + bam_bai // channel: [ val(meta), [ bam, bai ] ] + bed // channel: [ genome.bed ] rseqc_modules // list: rseqc modules to run main: - ch_versions = Channel.empty() + bam = bam_bai.map{ [ it[0], it[1] ] } - ch_bam_bai - .map { [ it[0], it[1] ] } - .set { ch_bam } + versions = Channel.empty() // // Run RSeQC bam_stat.py // - ch_bamstat = Channel.empty() + bamstat_txt = Channel.empty() + if ('bam_stat' in rseqc_modules) { - RSEQC_BAMSTAT ( ch_bam ) - ch_bamstat = RSEQC_BAMSTAT.out.txt - ch_versions = ch_versions.mix(RSEQC_BAMSTAT.out.versions.first()) + RSEQC_BAMSTAT(bam) + bamstat_txt = RSEQC_BAMSTAT.out.txt + versions = versions.mix(RSEQC_BAMSTAT.out.versions.first()) } // // Run RSeQC inner_distance.py // - ch_innerdistance = Channel.empty() - ch_innerdistance_distance = Channel.empty() - ch_innerdistance_freq = Channel.empty() - ch_innerdistance_mean = Channel.empty() - ch_innerdistance_pdf = Channel.empty() - ch_innerdistance_rscript = Channel.empty() + innerdistance_all = Channel.empty() + innerdistance_distance = Channel.empty() + innerdistance_freq = Channel.empty() + innerdistance_mean = Channel.empty() + innerdistance_pdf = Channel.empty() + innerdistance_rscript = Channel.empty() + if ('inner_distance' in rseqc_modules) { - RSEQC_INNERDISTANCE ( ch_bam, ch_bed ) - ch_innerdistance_distance = RSEQC_INNERDISTANCE.out.distance - ch_innerdistance_freq = RSEQC_INNERDISTANCE.out.freq - ch_innerdistance_mean = RSEQC_INNERDISTANCE.out.mean - ch_innerdistance_pdf = RSEQC_INNERDISTANCE.out.pdf - ch_innerdistance_rscript = RSEQC_INNERDISTANCE.out.rscript - ch_innerdistance = ch_innerdistance_distance.mix(ch_innerdistance_freq, ch_innerdistance_mean, ch_innerdistance_pdf, ch_innerdistance_rscript) - ch_versions = ch_versions.mix(RSEQC_INNERDISTANCE.out.versions.first()) + RSEQC_INNERDISTANCE(bam, bed) + innerdistance_distance = RSEQC_INNERDISTANCE.out.distance + innerdistance_freq = RSEQC_INNERDISTANCE.out.freq + innerdistance_mean = RSEQC_INNERDISTANCE.out.mean + innerdistance_pdf = RSEQC_INNERDISTANCE.out.pdf + innerdistance_rscript = RSEQC_INNERDISTANCE.out.rscript + innerdistance_all = innerdistance_distance.mix(innerdistance_freq, innerdistance_mean, innerdistance_pdf, innerdistance_rscript) + versions = versions.mix(RSEQC_INNERDISTANCE.out.versions.first()) } // // Run RSeQC infer_experiment.py // - ch_inferexperiment = Channel.empty() + inferexperiment_txt = Channel.empty() if ('infer_experiment' in rseqc_modules) { - RSEQC_INFEREXPERIMENT ( ch_bam, ch_bed ) - ch_inferexperiment = RSEQC_INFEREXPERIMENT.out.txt - ch_versions = ch_versions.mix(RSEQC_INFEREXPERIMENT.out.versions.first()) + RSEQC_INFEREXPERIMENT(bam, bed) + inferexperiment_txt = RSEQC_INFEREXPERIMENT.out.txt + versions = versions.mix(RSEQC_INFEREXPERIMENT.out.versions.first()) } // // Run RSeQC junction_annotation.py // - ch_junctionannotation = Channel.empty() - ch_junctionannotation_bed = Channel.empty() - ch_junctionannotation_interact_bed = Channel.empty() - ch_junctionannotation_xls = Channel.empty() - ch_junctionannotation_pdf = Channel.empty() - ch_junctionannotation_events_pdf = Channel.empty() - ch_junctionannotation_rscript = Channel.empty() - ch_junctionannotation_log = Channel.empty() + junctionannotation_all = Channel.empty() + junctionannotation_bed = Channel.empty() + junctionannotation_interact_bed = Channel.empty() + junctionannotation_xls = Channel.empty() + junctionannotation_pdf = Channel.empty() + junctionannotation_events_pdf = Channel.empty() + junctionannotation_rscript = Channel.empty() + junctionannotation_log = Channel.empty() + if ('junction_annotation' in rseqc_modules) { - RSEQC_JUNCTIONANNOTATION ( ch_bam, ch_bed ) - ch_junctionannotation_bed = RSEQC_JUNCTIONANNOTATION.out.bed - ch_junctionannotation_interact_bed = RSEQC_JUNCTIONANNOTATION.out.interact_bed - ch_junctionannotation_xls = RSEQC_JUNCTIONANNOTATION.out.xls - ch_junctionannotation_pdf = RSEQC_JUNCTIONANNOTATION.out.pdf - ch_junctionannotation_events_pdf = RSEQC_JUNCTIONANNOTATION.out.events_pdf - ch_junctionannotation_rscript = RSEQC_JUNCTIONANNOTATION.out.rscript - ch_junctionannotation_log = RSEQC_JUNCTIONANNOTATION.out.log - ch_junctionannotation = ch_junctionannotation_bed.mix(ch_junctionannotation_interact_bed, ch_junctionannotation_xls, ch_junctionannotation_pdf, ch_junctionannotation_events_pdf, ch_junctionannotation_rscript, ch_junctionannotation_log) - ch_versions = ch_versions.mix(RSEQC_JUNCTIONANNOTATION.out.versions.first()) + RSEQC_JUNCTIONANNOTATION(bam, bed) + junctionannotation_bed = RSEQC_JUNCTIONANNOTATION.out.bed + junctionannotation_interact_bed = RSEQC_JUNCTIONANNOTATION.out.interact_bed + junctionannotation_xls = RSEQC_JUNCTIONANNOTATION.out.xls + junctionannotation_pdf = RSEQC_JUNCTIONANNOTATION.out.pdf + junctionannotation_events_pdf = RSEQC_JUNCTIONANNOTATION.out.events_pdf + junctionannotation_rscript = RSEQC_JUNCTIONANNOTATION.out.rscript + junctionannotation_log = RSEQC_JUNCTIONANNOTATION.out.log + junctionannotation_all = junctionannotation_bed.mix(junctionannotation_interact_bed, junctionannotation_xls, junctionannotation_pdf, junctionannotation_events_pdf, junctionannotation_rscript, junctionannotation_log) + versions = versions.mix(RSEQC_JUNCTIONANNOTATION.out.versions.first()) } // // Run RSeQC junction_saturation.py // - ch_junctionsaturation = Channel.empty() - ch_junctionsaturation_pdf = Channel.empty() - ch_junctionsaturation_rscript = Channel.empty() + junctionsaturation_all = Channel.empty() + junctionsaturation_pdf = Channel.empty() + junctionsaturation_rscript = Channel.empty() + if ('junction_saturation' in rseqc_modules) { - RSEQC_JUNCTIONSATURATION ( ch_bam, ch_bed ) - ch_junctionsaturation_pdf = RSEQC_JUNCTIONSATURATION.out.pdf - ch_junctionsaturation_rscript = RSEQC_JUNCTIONSATURATION.out.rscript - ch_junctionsaturation = ch_junctionsaturation_pdf.mix(ch_junctionsaturation_rscript) - ch_versions = ch_versions.mix(RSEQC_JUNCTIONSATURATION.out.versions.first()) + RSEQC_JUNCTIONSATURATION(bam, bed) + junctionsaturation_pdf = RSEQC_JUNCTIONSATURATION.out.pdf + junctionsaturation_rscript = RSEQC_JUNCTIONSATURATION.out.rscript + junctionsaturation_all = junctionsaturation_pdf.mix(junctionsaturation_rscript) + versions = versions.mix(RSEQC_JUNCTIONSATURATION.out.versions.first()) } // // Run RSeQC read_distribution.py // - ch_readdistribution = Channel.empty() + readdistribution_txt = Channel.empty() + if ('read_distribution' in rseqc_modules) { - RSEQC_READDISTRIBUTION ( ch_bam, ch_bed ) - ch_readdistribution = RSEQC_READDISTRIBUTION.out.txt - ch_versions = ch_versions.mix(RSEQC_READDISTRIBUTION.out.versions.first()) + RSEQC_READDISTRIBUTION(bam, bed) + readdistribution_txt = RSEQC_READDISTRIBUTION.out.txt + versions = versions.mix(RSEQC_READDISTRIBUTION.out.versions.first()) } // // Run RSeQC read_duplication.py // - ch_readduplication = Channel.empty() - ch_readduplication_seq_xls = Channel.empty() - ch_readduplication_pos_xls = Channel.empty() - ch_readduplication_pdf = Channel.empty() - ch_readduplication_rscript = Channel.empty() + readduplication_all = Channel.empty() + readduplication_seq_xls = Channel.empty() + readduplication_pos_xls = Channel.empty() + readduplication_pdf = Channel.empty() + readduplication_rscript = Channel.empty() + if ('read_duplication' in rseqc_modules) { - RSEQC_READDUPLICATION ( ch_bam ) - ch_readduplication_seq_xls = RSEQC_READDUPLICATION.out.seq_xls - ch_readduplication_pos_xls = RSEQC_READDUPLICATION.out.pos_xls - ch_readduplication_pdf = RSEQC_READDUPLICATION.out.pdf - ch_readduplication_rscript = RSEQC_READDUPLICATION.out.rscript - ch_readduplication = ch_readduplication_seq_xls.mix(ch_readduplication_pos_xls, ch_readduplication_pdf, ch_readduplication_rscript) - ch_versions = ch_versions.mix(RSEQC_READDUPLICATION.out.versions.first()) + RSEQC_READDUPLICATION(bam ) + readduplication_seq_xls = RSEQC_READDUPLICATION.out.seq_xls + readduplication_pos_xls = RSEQC_READDUPLICATION.out.pos_xls + readduplication_pdf = RSEQC_READDUPLICATION.out.pdf + readduplication_rscript = RSEQC_READDUPLICATION.out.rscript + readduplication_all = readduplication_seq_xls.mix(readduplication_pos_xls, readduplication_pdf, readduplication_rscript) + versions = versions.mix(RSEQC_READDUPLICATION.out.versions.first()) } // // Run RSeQC tin.py // - ch_tin = Channel.empty() + tin_txt = Channel.empty() + if ('tin' in rseqc_modules) { - RSEQC_TIN ( ch_bam_bai, ch_bed ) - ch_tin = RSEQC_TIN.out.txt - ch_versions = ch_versions.mix(RSEQC_TIN.out.versions.first()) + RSEQC_TIN(bam_bai, bed) + tin_txt = RSEQC_TIN.out.txt + versions = versions.mix(RSEQC_TIN.out.versions.first()) } emit: - ch_bamstat // channel: [ val(meta), txt ] + bamstat_txt // channel: [ val(meta), txt ] - ch_innerdistance - ch_innerdistance_distance // channel: [ val(meta), txt ] - ch_innerdistance_freq // channel: [ val(meta), txt ] - ch_innerdistance_mean // channel: [ val(meta), txt ] - ch_innerdistance_pdf // channel: [ val(meta), pdf ] - ch_innerdistance_rscript // channel: [ val(meta), r ] + innerdistance_all // channel: [ val(meta), {txt, pdf, r} ] + innerdistance_distance // channel: [ val(meta), txt ] + innerdistance_freq // channel: [ val(meta), txt ] + innerdistance_mean // channel: [ val(meta), txt ] + innerdistance_pdf // channel: [ val(meta), pdf ] + innerdistance_rscript // channel: [ val(meta), r ] - ch_inferexperiment // channel: [ val(meta), txt ] + inferexperiment_txt // channel: [ val(meta), txt ] - ch_junctionannotation - ch_junctionannotation_bed // channel: [ val(meta), bed ] - ch_junctionannotation_interact_bed // channel: [ val(meta), bed ] - ch_junctionannotation_xls // channel: [ val(meta), xls ] - ch_junctionannotation_pdf // channel: [ val(meta), pdf ] - ch_junctionannotation_events_pdf // channel: [ val(meta), pdf ] - ch_junctionannotation_rscript // channel: [ val(meta), r ] - ch_junctionannotation_log // channel: [ val(meta), log ] + junctionannotation_all // channel: [ val(meta), {bed, xls, pdf, r, log} ] + junctionannotation_bed // channel: [ val(meta), bed ] + junctionannotation_interact_bed // channel: [ val(meta), bed ] + junctionannotation_xls // channel: [ val(meta), xls ] + junctionannotation_pdf // channel: [ val(meta), pdf ] + junctionannotation_events_pdf // channel: [ val(meta), pdf ] + junctionannotation_rscript // channel: [ val(meta), r ] + junctionannotation_log // channel: [ val(meta), log ] - ch_junctionsaturation - ch_junctionsaturation_pdf // channel: [ val(meta), pdf ] - ch_junctionsaturation_rscript // channel: [ val(meta), r ] + junctionsaturation_all // channel: [ val(meta), {pdf, r} ] + junctionsaturation_pdf // channel: [ val(meta), pdf ] + junctionsaturation_rscript // channel: [ val(meta), r ] - ch_readdistribution // channel: [ val(meta), txt ] + readdistribution_txt // channel: [ val(meta), txt ] - ch_readduplication - ch_readduplication_seq_xls // channel: [ val(meta), xls ] - ch_readduplication_pos_xls // channel: [ val(meta), xls ] - ch_readduplication_pdf // channel: [ val(meta), pdf ] - ch_readduplication_rscript // channel: [ val(meta), r ] + readduplication_all // channel: [ val(meta), {xls, pdf, r} ] + readduplication_seq_xls // channel: [ val(meta), xls ] + readduplication_pos_xls // channel: [ val(meta), xls ] + readduplication_pdf // channel: [ val(meta), pdf ] + readduplication_rscript // channel: [ val(meta), r ] - ch_tin // channel: [ val(meta), txt ] + tin_txt // channel: [ val(meta), txt ] - versions = ch_versions // channel: [ versions.yml ] + versions // channel: [ versions.yml ] } diff --git a/subworkflows/nf-core/bam_rseqc/meta.yml b/subworkflows/nf-core/bam_rseqc/meta.yml index 2fef88737..6e76ff560 100644 --- a/subworkflows/nf-core/bam_rseqc/meta.yml +++ b/subworkflows/nf-core/bam_rseqc/meta.yml @@ -46,107 +46,107 @@ input: List of rseqc modules to run e.g. [ 'bam_stat', 'infer_experiment' ] output: - - ch_bamstat: + - bamstat_txt: type: file description: bam statistics report pattern: "*.bam_stat.txt" - - ch_innerdistance: + - innerdistance_all: type: file description: All the output files from RSEQC_INNERDISTANCE pattern: "*.{txt,pdf,R}" - - ch_innerdistance_distance: + - innerdistance_distance: type: file description: the inner distances pattern: "*.inner_distance.txt" - - ch_innerdistance_freq: + - innerdistance_freq: type: file description: frequencies of different insert sizes pattern: "*.inner_distance_freq.txt" - - ch_innerdistance_mean: + - innerdistance_mean: type: file description: mean/median values of inner distances pattern: "*.inner_distance_mean.txt" - - ch_innerdistance_pdf: + - innerdistance_pdf: type: file description: distribution plot of inner distances pattern: "*.inner_distance_plot.pdf" - - ch_innerdistance_rscript: + - innerdistance_rscript: type: file description: script to reproduce the plot pattern: "*.inner_distance_plot.R" - - ch_inferexperiment: + - inferexperiment_txt: type: file description: infer_experiment results report pattern: "*.infer_experiment.txt" - - ch_junctionannotation: + - junctionannotation_all: type: file description: All the output files from RSEQC_JUNCTIONANNOTATION pattern: "*.{bed,xls,pdf,R,log}" - - ch_junctionannotation_bed: + - junctionannotation_bed: type: file description: bed file of annotated junctions pattern: "*.junction.bed" - - ch_junctionannotation_interact_bed: + - junctionannotation_interact_bed: type: file description: Interact bed file pattern: "*.Interact.bed" - - ch_junctionannotation_xls: + - junctionannotation_xls: type: file description: xls file with junction information pattern: "*.xls" - - ch_junctionannotation_pdf: + - junctionannotation_pdf: type: file description: junction plot pattern: "*.junction.pdf" - - ch_junctionannotation_events_pdf: + - junctionannotation_events_pdf: type: file description: events plot pattern: "*.events.pdf" - - ch_junctionannotation_rscript: + - junctionannotation_rscript: type: file description: Rscript to reproduce the plots pattern: "*.r" - - ch_junctionannotation_log: + - junctionannotation_log: type: file description: Log file generated by tool pattern: "*.log" - - ch_junctionsaturation: + - junctionsaturation_all: type: file description: All the output files from RSEQC_JUNCTIONSATURATION pattern: "*.{pdf,R}" - - ch_junctionsaturation_pdf: + - junctionsaturation_pdf: type: file description: Junction saturation report pattern: "*.pdf" - - ch_junctionsaturation_rscript: + - junctionsaturation_rscript: type: file description: Junction saturation R-script pattern: "*.r" - - ch_readdistribution: + - readdistribution_txt: type: file description: the read distribution report pattern: "*.read_distribution.txt" - - ch_readduplication: + - readduplication_all: type: file description: All the output files from RSEQC_READDUPLICATION pattern: "*.{xls,pdf,R}" - - ch_readduplication_seq_xls: + - readduplication_seq_xls: type: file description: Read duplication rate determined from mapping position of read pattern: "*seq.DupRate.xls" - - ch_readduplication_pos_xls: + - readduplication_pos_xls: type: file description: Read duplication rate determined from sequence of read pattern: "*pos.DupRate.xls" - - ch_readduplication_pdf: + - readduplication_pdf: type: file description: plot of duplication rate pattern: "*.pdf" - - ch_readduplication_rscript: + - readduplication_rscript: type: file description: script to reproduce the plot pattern: "*.R" - - ch_tin: + - tin_txt: type: file description: TXT file containing tin.py results summary pattern: "*.txt" diff --git a/subworkflows/nf-core/bam_rseqc/tests/main.nf.test b/subworkflows/nf-core/bam_rseqc/tests/main.nf.test index bd84bebff..cc1cea4ec 100644 --- a/subworkflows/nf-core/bam_rseqc/tests/main.nf.test +++ b/subworkflows/nf-core/bam_rseqc/tests/main.nf.test @@ -38,26 +38,26 @@ nextflow_workflow { then { assertAll( { assert workflow.success}, - { assert snapshot(workflow.out.ch_bamstat).match("bamstat")}, + { assert snapshot(workflow.out.bamstat_txt).match("bamstat_txt")}, - { assert snapshot(workflow.out.ch_innerdistance.findAll { it[1].endsWith('.pdf') == false }).match("inner_distance")}, - { assert workflow.out.ch_innerdistance.any { it[1].endsWith('.pdf') && file(it[1]).exists() } }, + { assert snapshot(workflow.out.innerdistance_all.findAll { it[1].endsWith('.pdf') == false }).match("innerdistance_all")}, + { assert workflow.out.innerdistance_all.any { it[1].endsWith('.pdf') && file(it[1]).exists() } }, - { assert snapshot(workflow.out.ch_inferexperiment).match("inferexperiment")}, + { assert snapshot(workflow.out.inferexperiment_txt).match("inferexperiment_txt")}, - { assert snapshot(workflow.out.ch_junctionannotation.findAll { + { assert snapshot(workflow.out.junctionannotation_all.findAll { it[1].endsWith('.xls') == false && - it[1].endsWith('.r') == false }).match("junction_annotation")}, + it[1].endsWith('.r') == false }).match("junctionannotation_all")}, - { assert snapshot(workflow.out.ch_junctionsaturation.findAll { it[1].endsWith('.pdf') == false }).match("junction_saturation")}, - { assert workflow.out.ch_junctionsaturation.any { it[1].endsWith('.pdf') && file(it[1]).exists() } }, + { assert snapshot(workflow.out.junctionsaturation_all.findAll { it[1].endsWith('.pdf') == false }).match("junctionsaturation_all")}, + { assert workflow.out.junctionsaturation_all.any { it[1].endsWith('.pdf') && file(it[1]).exists() } }, - { assert snapshot(workflow.out.ch_readdistribution).match("readdistribution")}, + { assert snapshot(workflow.out.readdistribution_txt).match("readdistribution_txt")}, - { assert snapshot(workflow.out.ch_readduplication.findAll { it[1].endsWith('.pdf') == false }).match("read_duplication")}, - { assert workflow.out.ch_readduplication.any { it[1].endsWith('.pdf') && file(it[1]).exists() } }, + { assert snapshot(workflow.out.readduplication_all.findAll { it[1].endsWith('.pdf') == false }).match("readduplication_all")}, + { assert workflow.out.readduplication_all.any { it[1].endsWith('.pdf') && file(it[1]).exists() } }, - { assert snapshot(workflow.out.ch_tin).match("tin")}, + { assert snapshot(workflow.out.tin_txt).match("tin_txt")}, { assert snapshot(workflow.out.versions).match("versions")}, ) } @@ -84,14 +84,14 @@ nextflow_workflow { then { assertAll( { assert workflow.success }, - { assert workflow.out.ch_bamstat.size() == 0 }, - { assert workflow.out.ch_innerdistance.size() == 0 }, - { assert workflow.out.ch_inferexperiment.size() == 0 }, - { assert workflow.out.ch_junctionannotation.size() == 0 }, - { assert workflow.out.ch_junctionsaturation.size() == 0 }, - { assert workflow.out.ch_readdistribution.size() == 0 }, - { assert workflow.out.ch_readduplication.size() == 0 }, - { assert workflow.out.ch_tin.size() == 0 }, + { assert workflow.out.bamstat_txt.size() == 0 }, + { assert workflow.out.innerdistance_all.size() == 0 }, + { assert workflow.out.inferexperiment_txt.size() == 0 }, + { assert workflow.out.junctionannotation_all.size() == 0 }, + { assert workflow.out.junctionsaturation_all.size() == 0 }, + { assert workflow.out.readdistribution_txt.size() == 0 }, + { assert workflow.out.readduplication_all.size() == 0 }, + { assert workflow.out.tin_txt.size() == 0 }, { assert workflow.out.versions.size() == 0 }, ) } diff --git a/subworkflows/nf-core/bam_rseqc/tests/main.nf.test.snap b/subworkflows/nf-core/bam_rseqc/tests/main.nf.test.snap index f80f50b2e..8bd21052f 100644 --- a/subworkflows/nf-core/bam_rseqc/tests/main.nf.test.snap +++ b/subworkflows/nf-core/bam_rseqc/tests/main.nf.test.snap @@ -1,36 +1,68 @@ { - "inner_distance": { + "bamstat_txt": { "content": [ [ [ { "id": "test" }, - "test.inner_distance.txt:md5,a1acc9def0f64a5500d4c4cb47cbe32b" - ], + "test.bam_stat.txt:md5,2675857864c1d1139b2a19d25dc36b09" + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2023-12-08T14:37:45.671792186" + }, + "readduplication_all": { + "content": [ + [ [ { "id": "test" }, - "test.inner_distance_freq.txt:md5,3fc037501f5899b5da009c8ce02fc25e" + "test.DupRate_plot.r:md5,3c0325095cee4835b921e57d61c23dca" ], [ { "id": "test" }, - "test.inner_distance_mean.txt:md5,58398b7d5a29a5e564f9e3c50b55996c" + "test.pos.DupRate.xls:md5,a859bc2031d46bf1cc4336205847caa3" ], [ { "id": "test" }, - "test.inner_distance_plot.r:md5,5859fbd5b42046d47e8b9aa85077f4ea" + "test.seq.DupRate.xls:md5,ee8783399eec5a18522a6f08bece338b" ] ] ], - "timestamp": "2023-12-08T14:37:45.734509133" + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2023-12-08T14:37:45.927253593" }, - "junction_saturation": { + "tin_txt": { + "content": [ + [ + [ + { + "id": "test" + }, + "test.paired_end.sorted.summary.txt:md5,9d98447e178b89a89f6f5aba7a772fe6" + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-06T15:29:37.545261" + }, + "junctionsaturation_all": { "content": [ [ [ @@ -41,6 +73,10 @@ ] ] ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, "timestamp": "2023-12-08T14:37:45.825157699" }, "versions": { @@ -56,96 +92,96 @@ "versions.yml:md5,fd16f1098b9c285f3ea7bd3daf4e8f10" ] ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, "timestamp": "2023-12-14T14:58:10.874440924" }, - "tin": { - "content": [ - [ - [ - { - "id": "test" - }, - "test.paired_end.sorted.summary.txt:md5,9d98447e178b89a89f6f5aba7a772fe6" - ] - ] - ], - "timestamp": "2023-12-08T14:37:45.935155313" - }, - "bamstat": { + "readdistribution_txt": { "content": [ [ [ { "id": "test" }, - "test.bam_stat.txt:md5,2675857864c1d1139b2a19d25dc36b09" + "test.read_distribution.txt:md5,56893fdc0809d968629a363551a1655f" ] ] ], - "timestamp": "2023-12-08T14:37:45.671792186" + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2023-12-08T14:37:45.841855468" }, - "inferexperiment": { + "innerdistance_all": { "content": [ [ [ { "id": "test" }, - "test.infer_experiment.txt:md5,f9d0bfc239df637cd8aeda40ade3c59a" - ] - ] - ], - "timestamp": "2023-12-08T14:37:45.747507043" - }, - "read_duplication": { - "content": [ - [ + "test.inner_distance.txt:md5,a1acc9def0f64a5500d4c4cb47cbe32b" + ], [ { "id": "test" }, - "test.DupRate_plot.r:md5,3c0325095cee4835b921e57d61c23dca" + "test.inner_distance_freq.txt:md5,3fc037501f5899b5da009c8ce02fc25e" ], [ { "id": "test" }, - "test.pos.DupRate.xls:md5,a859bc2031d46bf1cc4336205847caa3" + "test.inner_distance_mean.txt:md5,58398b7d5a29a5e564f9e3c50b55996c" ], [ { "id": "test" }, - "test.seq.DupRate.xls:md5,ee8783399eec5a18522a6f08bece338b" + "test.inner_distance_plot.r:md5,5859fbd5b42046d47e8b9aa85077f4ea" ] ] ], - "timestamp": "2023-12-08T14:37:45.927253593" + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2023-12-08T14:37:45.734509133" }, - "junction_annotation": { + "inferexperiment_txt": { "content": [ [ [ { "id": "test" }, - "test.junction_annotation.log:md5,d75e0f5d62fada8aa9449991b209554c" + "test.infer_experiment.txt:md5,f9d0bfc239df637cd8aeda40ade3c59a" ] ] ], - "timestamp": "2023-12-14T17:42:43.31783911" + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-06T15:29:37.537104" }, - "readdistribution": { + "junctionannotation_all": { "content": [ [ [ { "id": "test" }, - "test.read_distribution.txt:md5,56893fdc0809d968629a363551a1655f" + "test.junction_annotation.log:md5,d75e0f5d62fada8aa9449991b209554c" ] ] ], - "timestamp": "2023-12-08T14:37:45.841855468" + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2023-12-14T17:42:43.31783911" } } \ No newline at end of file From cbf684fde0589d2468fb5758b13ad6c24643ed07 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Thu, 8 Feb 2024 15:25:28 +0000 Subject: [PATCH 044/634] Correct for new bam_rseqc outputs --- workflows/rnaseq/main.nf | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/workflows/rnaseq/main.nf b/workflows/rnaseq/main.nf index 3cc33da84..1cc9e4bed 100755 --- a/workflows/rnaseq/main.nf +++ b/workflows/rnaseq/main.nf @@ -658,19 +658,19 @@ workflow NFCORE_RNASEQ { ch_gene_bed, rseqc_modules ) - ch_multiqc_files = ch_multiqc_files.mix(BAM_RSEQC.out.ch_bamstat.collect{it[1]}) - ch_multiqc_files = ch_multiqc_files.mix(BAM_RSEQC.out.ch_inferexperiment.collect{it[1]}) - ch_multiqc_files = ch_multiqc_files.mix(BAM_RSEQC.out.ch_innerdistance_freq.collect{it[1]}) - ch_multiqc_files = ch_multiqc_files.mix(BAM_RSEQC.out.ch_junctionannotation_log.collect{it[1]}) - ch_multiqc_files = ch_multiqc_files.mix(BAM_RSEQC.out.ch_junctionsaturation_rscript.collect{it[1]}) - ch_multiqc_files = ch_multiqc_files.mix(BAM_RSEQC.out.ch_readdistribution.collect{it[1]}) - ch_multiqc_files = ch_multiqc_files.mix(BAM_RSEQC.out.ch_readduplication_pos_xls.collect{it[1]}) - ch_multiqc_files = ch_multiqc_files.mix(BAM_RSEQC.out.ch_tin.collect{it[1]}) + ch_multiqc_files = ch_multiqc_files.mix(BAM_RSEQC.out.bamstat_txt.collect{it[1]}) + ch_multiqc_files = ch_multiqc_files.mix(BAM_RSEQC.out.inferexperiment_txt.collect{it[1]}) + ch_multiqc_files = ch_multiqc_files.mix(BAM_RSEQC.out.innerdistance_freq.collect{it[1]}) + ch_multiqc_files = ch_multiqc_files.mix(BAM_RSEQC.out.junctionannotation_log.collect{it[1]}) + ch_multiqc_files = ch_multiqc_files.mix(BAM_RSEQC.out.junctionsaturation_rscript.collect{it[1]}) + ch_multiqc_files = ch_multiqc_files.mix(BAM_RSEQC.out.readdistribution_txt.collect{it[1]}) + ch_multiqc_files = ch_multiqc_files.mix(BAM_RSEQC.out.readduplication_pos_xls.collect{it[1]}) + ch_multiqc_files = ch_multiqc_files.mix(BAM_RSEQC.out.tin_txt.collect{it[1]}) ch_versions = ch_versions.mix(BAM_RSEQC.out.versions) BAM_RSEQC .out - .ch_inferexperiment + .inferexperiment_txt .map { meta, strand_log -> def inferred_strand = getInferexperimentStrandedness(strand_log, 30) From 7b008e34f8ea7824f8649a7628c2493ec3b03464 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Thu, 8 Feb 2024 15:26:45 +0000 Subject: [PATCH 045/634] Remove unused local module files --- bin/tx2gene.py | 168 --------------------------------- bin/tximport.r | 142 ---------------------------- modules.json | 5 + modules/local/tximport/main.nf | 44 --------- 4 files changed, 5 insertions(+), 354 deletions(-) delete mode 100755 bin/tx2gene.py delete mode 100755 bin/tximport.r delete mode 100644 modules/local/tximport/main.nf diff --git a/bin/tx2gene.py b/bin/tx2gene.py deleted file mode 100755 index d8256f5f9..000000000 --- a/bin/tx2gene.py +++ /dev/null @@ -1,168 +0,0 @@ -#!/usr/bin/env python - -# Written by Lorena Pantano with subsequent reworking by Jonathan Manning. Released under the MIT license. - -import logging -import argparse -import glob -import os -import re -from collections import Counter, defaultdict, OrderedDict -from collections.abc import Set -from typing import Dict - -# Configure logging -logging.basicConfig(format="%(name)s - %(asctime)s %(levelname)s: %(message)s") -logger = logging.getLogger(__name__) -logger.setLevel(logging.INFO) - - -def read_top_transcripts(quant_dir: str, file_pattern: str) -> Set[str]: - """ - Read the top 100 transcripts from the quantification file. - - Parameters: - quant_dir (str): Directory where quantification files are located. - file_pattern (str): Pattern to match quantification files. - - Returns: - set: A set containing the top 100 transcripts. - """ - try: - # Find the quantification file within the directory - quant_file_path = glob.glob(os.path.join(quant_dir, "*", file_pattern))[0] - with open(quant_file_path, "r") as file_handle: - # Read the file and extract the top 100 transcripts - return {line.split()[0] for i, line in enumerate(file_handle) if i > 0 and i <= 100} - except IndexError: - # Log an error and raise a FileNotFoundError if the quant file does not exist - logger.error("No quantification files found.") - raise FileNotFoundError("Quantification file not found.") - - -def discover_transcript_attribute(gtf_file: str, transcripts: Set[str]) -> str: - """ - Discover the attribute in the GTF that corresponds to transcripts, prioritizing 'transcript_id'. - - Parameters: - gtf_file (str): Path to the GTF file. - transcripts (Set[str]): A set of transcripts to match in the GTF file. - - Returns: - str: The attribute name that corresponds to transcripts in the GTF file. - """ - - votes = Counter() - with open(gtf_file) as inh: - # Read GTF file, skipping header lines - for line in filter(lambda x: not x.startswith("#"), inh): - cols = line.split("\t") - - # Use regular expression to correctly split the attributes string - attributes_str = cols[8] - attributes = dict(re.findall(r'(\S+) "(.*?)(? Dict[str, str]: - """ - Parse the attributes column of a GTF file. - - :param attributes_text: The attributes column as a string. - :return: A dictionary of the attributes. - """ - # Split the attributes string by semicolon and strip whitespace - attributes = attributes_text.strip().split(";") - attr_dict = OrderedDict() - - # Iterate over each attribute pair - for attribute in attributes: - # Split the attribute into key and value, ensuring there are two parts - parts = attribute.strip().split(" ", 1) - if len(parts) == 2: - key, value = parts - # Remove any double quotes from the value - value = value.replace('"', "") - attr_dict[key] = value - - return attr_dict - - -def map_transcripts_to_gene( - quant_type: str, gtf_file: str, quant_dir: str, gene_id: str, extra_id_field: str, output_file: str -) -> bool: - """ - Map transcripts to gene names and write the output to a file. - - Parameters: - quant_type (str): The quantification method used (e.g., 'salmon'). - gtf_file (str): Path to the GTF file. - quant_dir (str): Directory where quantification files are located. - gene_id (str): The gene ID attribute in the GTF file. - extra_id_field (str): Additional ID field in the GTF file. - output_file (str): The output file path. - - Returns: - bool: True if the operation was successful, False otherwise. - """ - # Read the top transcripts based on quantification type - transcripts = read_top_transcripts(quant_dir, "quant.sf" if quant_type == "salmon" else "abundance.tsv") - # Discover the attribute that corresponds to transcripts in the GTF - transcript_attribute = discover_transcript_attribute(gtf_file, transcripts) - - if not transcript_attribute: - # If no attribute is found, return False - return False - - # Open GTF and output file to write the mappings - # Initialize the set to track seen combinations - seen = set() - - with open(gtf_file) as inh, open(output_file, "w") as output_handle: - # Parse each line of the GTF, mapping transcripts to genes - for line in filter(lambda x: not x.startswith("#"), inh): - cols = line.split("\t") - attr_dict = parse_attributes(cols[8]) - if gene_id in attr_dict and transcript_attribute in attr_dict: - # Create a unique identifier for the transcript-gene combination - transcript_gene_pair = (attr_dict[transcript_attribute], attr_dict[gene_id]) - - # Check if the combination has already been seen - if transcript_gene_pair not in seen: - # If it's a new combination, write it to the output and add to the seen set - extra_id = attr_dict.get(extra_id_field, attr_dict[gene_id]) - output_handle.write(f"{attr_dict[transcript_attribute]}\t{attr_dict[gene_id]}\t{extra_id}\n") - seen.add(transcript_gene_pair) - - return True - - -# Main function to parse arguments and call the mapping function -if __name__ == "__main__": - parser = argparse.ArgumentParser(description="Map transcripts to gene names for tximport.") - parser.add_argument("--quant_type", type=str, help="Quantification type", default="salmon") - parser.add_argument("--gtf", type=str, help="GTF file", required=True) - parser.add_argument("--quants", type=str, help="Output of quantification", required=True) - parser.add_argument("--id", type=str, help="Gene ID in the GTF file", required=True) - parser.add_argument("--extra", type=str, help="Extra ID in the GTF file") - parser.add_argument("-o", "--output", dest="output", default="tx2gene.tsv", type=str, help="File with output") - - args = parser.parse_args() - if not map_transcripts_to_gene(args.quant_type, args.gtf, args.quants, args.id, args.extra, args.output): - logger.error("Failed to map transcripts to genes.") diff --git a/bin/tximport.r b/bin/tximport.r deleted file mode 100755 index a75066728..000000000 --- a/bin/tximport.r +++ /dev/null @@ -1,142 +0,0 @@ -#!/usr/bin/env Rscript - -# Script for importing and processing transcript-level quantifications. -# Written by Lorena Pantano, later modified by Jonathan Manning, and released -# under the MIT license. - -# Loading required libraries -library(SummarizedExperiment) -library(tximport) - -# Parsing command line arguments -args <- commandArgs(trailingOnly=TRUE) -if (length(args) < 4) { - stop("Usage: tximport.r ", - call.=FALSE) -} - -# Assigning command line arguments to variables -coldata_path <- args[1] -path <- args[2] -prefix <- args[3] -quant_type <- args[4] -tx2gene_path <- args[5] - -## Functions - -# Build a table from a SummarizedExperiment object -build_table <- function(se.obj, slot) { - cbind(rowData(se.obj)[,1:2], assays(se.obj)[[slot]]) -} - -# Write a table to a file with given parameters -write_se_table <- function(params) { - file_name <- paste0(prefix, ".", params$suffix) - write.table(build_table(params$obj, params$slot), file_name, - sep="\t", quote=FALSE, row.names = FALSE) -} - -# Read transcript metadata from a given path -read_transcript_info <- function(tinfo_path){ - info <- file.info(tinfo_path) - if (info$size == 0) { - stop("tx2gene file is empty") - } - - transcript_info <- read.csv(tinfo_path, sep="\t", header = FALSE, - col.names = c("tx", "gene_id", "gene_name")) - - extra <- setdiff(rownames(txi[[1]]), as.character(transcript_info[["tx"]])) - transcript_info <- rbind(transcript_info, data.frame(tx=extra, gene_id=extra, gene_name=extra)) - transcript_info <- transcript_info[match(rownames(txi[[1]]), transcript_info[["tx"]]), ] - rownames(transcript_info) <- transcript_info[["tx"]] - - list(transcript = transcript_info, - gene = unique(transcript_info[,2:3]), - tx2gene = transcript_info[,1:2]) -} - -# Read and process sample/column data from a given path -read_coldata <- function(coldata_path){ - if (file.exists(coldata_path)) { - coldata <- read.csv(coldata_path, sep="\t") - coldata <- coldata[match(names, coldata[,1]),] - coldata <- cbind(files = fns, coldata) - } else { - message("ColData not available: ", coldata_path) - coldata <- data.frame(files = fns, names = names) - } - rownames(coldata) <- coldata[["names"]] -} - -# Create a SummarizedExperiment object with given data -create_summarized_experiment <- function(counts, abundance, length, col_data, row_data) { - SummarizedExperiment(assays = list(counts = counts, abundance = abundance, length = length), - colData = col_data, - rowData = row_data) -} - -# Main script starts here - -# Define pattern for file names based on quantification type -pattern <- ifelse(quant_type == "kallisto", "abundance.tsv", "quant.sf") -fns <- list.files(path, pattern = pattern, recursive = T, full.names = T) -names <- basename(dirname(fns)) -names(fns) <- names -dropInfReps <- quant_type == "kallisto" - -# Import transcript-level quantifications -txi <- tximport(fns, type = quant_type, txOut = TRUE, dropInfReps = dropInfReps) - -# Read transcript and sample data -transcript_info <- read_transcript_info(tx2gene_path) -coldata <- read_coldata(coldata_path) - -# Create initial SummarizedExperiment object -se <- create_summarized_experiment(txi[["counts"]], txi[["abundance"]], txi[["length"]], - DataFrame(coldata), transcript_info$transcript) - -# Setting parameters for writing tables -params <- list( - list(obj = se, slot = "abundance", suffix = "transcript_tpm.tsv"), - list(obj = se, slot = "counts", suffix = "transcript_counts.tsv"), - list(obj = se, slot = "length", suffix = "transcript_lengths.tsv") -) - -# Process gene-level data if tx2gene mapping is available -if ("tx2gene" %in% names(transcript_info) && !is.null(transcript_info$tx2gene)) { - tx2gene <- transcript_info$tx2gene - gi <- summarizeToGene(txi, tx2gene = tx2gene) - gi.ls <- summarizeToGene(txi, tx2gene = tx2gene, countsFromAbundance = "lengthScaledTPM") - gi.s <- summarizeToGene(txi, tx2gene = tx2gene, countsFromAbundance = "scaledTPM") - - gene_info <- transcript_info$gene[match(rownames(gi[[1]]), transcript_info$gene[["gene_id"]]),] - rownames(gene_info) <- gene_info[["tx"]] - - col_data_frame <- DataFrame(coldata) - - # Create gene-level SummarizedExperiment objects - gse <- create_summarized_experiment(gi[["counts"]], gi[["abundance"]], gi[["length"]], - col_data_frame, gene_info) - gse.ls <- create_summarized_experiment(gi.ls[["counts"]], gi.ls[["abundance"]], gi.ls[["length"]], - col_data_frame, gene_info) - gse.s <- create_summarized_experiment(gi.s[["counts"]], gi.s[["abundance"]], gi.s[["length"]], - col_data_frame, gene_info) - - params <- c(params, list( - list(obj = gse, slot = "length", suffix = "gene_lengths.tsv"), - list(obj = gse, slot = "abundance", suffix = "gene_tpm.tsv"), - list(obj = gse, slot = "counts", suffix = "gene_counts.tsv"), - list(obj = gse.ls, slot = "abundance", suffix = "gene_tpm_length_scaled.tsv"), - list(obj = gse.ls, slot = "counts", suffix = "gene_counts_length_scaled.tsv"), - list(obj = gse.s, slot = "abundance", suffix = "gene_tpm_scaled.tsv"), - list(obj = gse.s, slot = "counts", suffix = "gene_counts_scaled.tsv") - )) -} - -# Writing tables for each set of parameters -done <- lapply(params, write_se_table) - -# Output session information and citations -citation("tximeta") -sessionInfo() diff --git a/modules.json b/modules.json index bead3e2ef..af1df997e 100644 --- a/modules.json +++ b/modules.json @@ -214,6 +214,11 @@ "git_sha": "3f5420aa22e00bd030a2556dfdffc9e164ec0ec5", "installed_by": ["fastq_fastqc_umitools_trimgalore"] }, + "tximeta/tximport": { + "branch": "master", + "git_sha": "0c75b48a381125683a458063f15a05634d81ae40", + "installed_by": ["modules"] + }, "ucsc/bedclip": { "branch": "master", "git_sha": "8899867378857ade0a68d1e6744619070ccbc2d4", diff --git a/modules/local/tximport/main.nf b/modules/local/tximport/main.nf deleted file mode 100644 index cd97d139f..000000000 --- a/modules/local/tximport/main.nf +++ /dev/null @@ -1,44 +0,0 @@ -process TXIMPORT { - label "process_medium" - - conda "bioconda::bioconductor-tximeta=1.12.0" - container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/bioconductor-tximeta:1.12.0--r41hdfd78af_0' : - 'biocontainers/bioconductor-tximeta:1.12.0--r41hdfd78af_0' }" - - input: - path ("quants/*") - path tx2gene - val quant_type - - output: - path "*gene_tpm.tsv" , emit: tpm_gene - path "*gene_counts.tsv" , emit: counts_gene - path "*gene_counts_length_scaled.tsv", emit: counts_gene_length_scaled - path "*gene_counts_scaled.tsv" , emit: counts_gene_scaled - path "*gene_lengths.tsv" , emit: lengths_gene - path "*transcript_tpm.tsv" , emit: tpm_transcript - path "*transcript_counts.tsv" , emit: counts_transcript - path "*transcript_lengths.tsv" , emit: lengths_transcript - path "versions.yml" , emit: versions - - when: - task.ext.when == null || task.ext.when - - script: // This script is bundled with the pipeline, in nf-core/rnaseq/bin/ - prefix = task.ext.prefix ?: "${quant_type}.merged" - """ - tximport.r \\ - NULL \\ - quants \\ - $prefix \\ - $quant_type \\ - $tx2gene - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - r-base: \$(echo \$(R --version 2>&1) | sed 's/^.*R version //; s/ .*\$//') - bioconductor-tximeta: \$(Rscript -e "library(tximeta); cat(as.character(packageVersion('tximeta')))") - END_VERSIONS - """ -} From b539716eab04f9d7b1e8f76d0e3d584352f3fb12 Mon Sep 17 00:00:00 2001 From: maxulysse Date: Tue, 13 Feb 2024 11:53:39 +0100 Subject: [PATCH 046/634] update all modules --- modules.json | 34 +-- .../calculateexpression/tests/main.nf.test | 9 +- .../rsem/preparereference/tests/main.nf.test | 4 +- .../nf-core/rseqc/bamstat/tests/main.nf.test | 2 +- .../rseqc/bamstat/tests/main.nf.test.snap | 4 + .../rseqc/readdistribution/tests/main.nf.test | 9 +- .../readdistribution/tests/main.nf.test.snap | 4 + modules/nf-core/rseqc/tin/tests/main.nf.test | 12 +- .../nf-core/rseqc/tin/tests/main.nf.test.snap | 22 +- .../nf-core/salmon/index/tests/main.nf.test | 4 +- .../salmon/index/tests/main.nf.test.snap | 4 + .../nf-core/salmon/quant/tests/main.nf.test | 91 +++----- .../salmon/quant/tests/main.nf.test.snap | 6 +- modules/nf-core/sortmerna/main.nf | 109 ++++----- modules/nf-core/sortmerna/tests/main.nf.test | 41 ++-- .../nf-core/sortmerna/tests/main.nf.test.snap | 28 +-- modules/nf-core/star/align/tests/main.nf.test | 140 +++--------- .../star/genomegenerate/tests/main.nf.test | 12 +- .../stringtie/stringtie/tests/main.nf.test | 16 +- .../subread/featurecounts/tests/main.nf.test | 18 +- modules/nf-core/trimgalore/tests/main.nf.test | 8 +- .../nf-core/ucsc/bedclip/tests/main.nf.test | 4 +- .../ucsc/bedclip/tests/main.nf.test.snap | 49 +++-- .../ucsc/bedgraphtobigwig/tests/main.nf.test | 9 +- .../bedgraphtobigwig/tests/main.nf.test.snap | 4 + .../umitools/extract/tests/main.nf.test | 4 +- subworkflows/nf-core/bam_rseqc/main.nf | 207 +++++++++--------- subworkflows/nf-core/bam_rseqc/meta.yml | 52 ++--- .../nf-core/bam_rseqc/tests/main.nf.test | 40 ++-- .../nf-core/bam_rseqc/tests/main.nf.test.snap | 124 +++++++---- 30 files changed, 521 insertions(+), 549 deletions(-) diff --git a/modules.json b/modules.json index 2a7cec6af..99cd7b005 100644 --- a/modules.json +++ b/modules.json @@ -92,17 +92,17 @@ }, "rsem/calculateexpression": { "branch": "master", - "git_sha": "8ec12d844837b0167540c910afe4d3f920cd7114", + "git_sha": "7c82eda52cb493c4cf500e3fb7d1597a5d766165", "installed_by": ["modules"] }, "rsem/preparereference": { "branch": "master", - "git_sha": "8ec12d844837b0167540c910afe4d3f920cd7114", + "git_sha": "301b088c7e9e00c4c80686411383f07173b54d69", "installed_by": ["modules"] }, "rseqc/bamstat": { "branch": "master", - "git_sha": "41f4baa439663b9027727d83a3293db93bad3f8c", + "git_sha": "9eb22e4d3f28c274b7c498a1564581377349a242", "installed_by": ["bam_rseqc"] }, "rseqc/inferexperiment": { @@ -127,7 +127,7 @@ }, "rseqc/readdistribution": { "branch": "master", - "git_sha": "41f4baa439663b9027727d83a3293db93bad3f8c", + "git_sha": "d5f5ce9474983fe0973b26c39728b5c57b13c8d4", "installed_by": ["bam_rseqc"] }, "rseqc/readduplication": { @@ -137,17 +137,17 @@ }, "rseqc/tin": { "branch": "master", - "git_sha": "41f4baa439663b9027727d83a3293db93bad3f8c", + "git_sha": "37aa78c23d809a01d6a1f2e6c0c034f00c2a0984", "installed_by": ["bam_rseqc"] }, "salmon/index": { "branch": "master", - "git_sha": "ce801ced94947b2ff01002b4120eef2f79489b34", + "git_sha": "ffc101e1b84ef3df2e4e4a966e84b3c513ae5693", "installed_by": ["fastq_subsample_fq_salmon"] }, "salmon/quant": { "branch": "master", - "git_sha": "003920c7f9a8ae19b69a97171922880220bedf56", + "git_sha": "ffc101e1b84ef3df2e4e4a966e84b3c513ae5693", "installed_by": ["fastq_subsample_fq_salmon", "modules"] }, "samtools/flagstat": { @@ -181,42 +181,42 @@ }, "sortmerna": { "branch": "master", - "git_sha": "003920c7f9a8ae19b69a97171922880220bedf56", + "git_sha": "ad22467dff16284093e7335d5e77964e9bbc510b", "installed_by": ["modules"] }, "star/align": { "branch": "master", - "git_sha": "1e2b7fb7106852388610c0360d234b0829eb980e", + "git_sha": "a21faa6a3481af92a343a10926f59c189a2c16c9", "installed_by": ["modules"] }, "star/genomegenerate": { "branch": "master", - "git_sha": "1e2b7fb7106852388610c0360d234b0829eb980e", + "git_sha": "a21faa6a3481af92a343a10926f59c189a2c16c9", "installed_by": ["modules"] }, "stringtie/stringtie": { "branch": "master", - "git_sha": "b0dcb44b018d9b2bcb35b1abb7bcd34061bc5a6d", + "git_sha": "5756b12b1fab0c07f05b9ad2d5d5c262b1a2c1ef", "installed_by": ["modules"] }, "subread/featurecounts": { "branch": "master", - "git_sha": "d062b356938ea98d29b298691adf0620d3c3bdf0", + "git_sha": "f6bba1a67cdbb605f24d7a4e8dd383b0eec45b52", "installed_by": ["modules"] }, "trimgalore": { "branch": "master", - "git_sha": "3f5420aa22e00bd030a2556dfdffc9e164ec0ec5", + "git_sha": "2e6c468e0ad43b23df71d7a7f130d5c0e0aa89e3", "installed_by": ["fastq_fastqc_umitools_trimgalore"] }, "ucsc/bedclip": { "branch": "master", - "git_sha": "8899867378857ade0a68d1e6744619070ccbc2d4", + "git_sha": "7c75d01997236f61b9b77399d9933cb36041f2c3", "installed_by": ["bedgraph_bedclip_bedgraphtobigwig"] }, "ucsc/bedgraphtobigwig": { "branch": "master", - "git_sha": "3f5420aa22e00bd030a2556dfdffc9e164ec0ec5", + "git_sha": "7c75d01997236f61b9b77399d9933cb36041f2c3", "installed_by": ["bedgraph_bedclip_bedgraphtobigwig"] }, "umitools/dedup": { @@ -226,7 +226,7 @@ }, "umitools/extract": { "branch": "master", - "git_sha": "65ad3e0b9a4099592e1102e92e10455dc661cf53", + "git_sha": "9e56d7a647fbf6f7e45ef123bc916ad66b6f7c9d", "installed_by": ["fastq_fastqc_umitools_fastp", "fastq_fastqc_umitools_trimgalore"] }, "untar": { @@ -250,7 +250,7 @@ }, "bam_rseqc": { "branch": "master", - "git_sha": "0c38be7e652a0b2f3a37681ee4c0dbdf85677647", + "git_sha": "9eb22e4d3f28c274b7c498a1564581377349a242", "installed_by": ["subworkflows"] }, "bam_sort_stats_samtools": { diff --git a/modules/nf-core/rsem/calculateexpression/tests/main.nf.test b/modules/nf-core/rsem/calculateexpression/tests/main.nf.test index 9ab38c6aa..63e1ebc0b 100644 --- a/modules/nf-core/rsem/calculateexpression/tests/main.nf.test +++ b/modules/nf-core/rsem/calculateexpression/tests/main.nf.test @@ -8,6 +8,7 @@ nextflow_process { tag "modules_nfcore" tag "rsem" tag "rsem/calculateexpression" + tag "rsem/preparereference" test("homo_sapiens") { @@ -16,8 +17,8 @@ nextflow_process { script "../../../rsem/preparereference/main.nf" process { """ - input[0] = Channel.of([file(params.test_data['homo_sapiens']['genome']['genome_fasta'], checkIfExists: true)]) - input[1] = Channel.of([file(params.test_data['homo_sapiens']['genome']['genome_gtf'], checkIfExists: true)]) + input[0] = Channel.of(file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true)) + input[1] = Channel.of(file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.gtf', checkIfExists: true)) """ } } @@ -32,8 +33,8 @@ nextflow_process { input[0] = Channel.of([ [ id:'test', strandedness: 'forward' ], // meta map [ - file(params.test_data['homo_sapiens']['illumina']['test_rnaseq_1_fastq_gz'], checkIfExists: true), - file(params.test_data['homo_sapiens']['illumina']['test_rnaseq_2_fastq_gz'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/fastq/test_rnaseq_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/fastq/test_rnaseq_2.fastq.gz', checkIfExists: true) ] ]) input[1] = RSEM_PREPAREREFERENCE.out.index diff --git a/modules/nf-core/rsem/preparereference/tests/main.nf.test b/modules/nf-core/rsem/preparereference/tests/main.nf.test index a1d948d4b..b4493d1ab 100644 --- a/modules/nf-core/rsem/preparereference/tests/main.nf.test +++ b/modules/nf-core/rsem/preparereference/tests/main.nf.test @@ -16,8 +16,8 @@ nextflow_process { } process { """ - input[0] = Channel.of([file(params.test_data['homo_sapiens']['genome']['genome_fasta'], checkIfExists: true)]) - input[1] = Channel.of([file(params.test_data['homo_sapiens']['genome']['genome_gtf'], checkIfExists: true)]) + input[0] = Channel.of(file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true)) + input[1] = Channel.of(file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.gtf', checkIfExists: true)) """ } } diff --git a/modules/nf-core/rseqc/bamstat/tests/main.nf.test b/modules/nf-core/rseqc/bamstat/tests/main.nf.test index 1facabea0..2f209b0a7 100644 --- a/modules/nf-core/rseqc/bamstat/tests/main.nf.test +++ b/modules/nf-core/rseqc/bamstat/tests/main.nf.test @@ -22,7 +22,7 @@ nextflow_process { """ input[0] = [ [ id:'test' ], // meta map - file(params.test_data['sarscov2']['illumina']['test_paired_end_sorted_bam'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam') ] """ } diff --git a/modules/nf-core/rseqc/bamstat/tests/main.nf.test.snap b/modules/nf-core/rseqc/bamstat/tests/main.nf.test.snap index 57c764e57..6e3f0364e 100644 --- a/modules/nf-core/rseqc/bamstat/tests/main.nf.test.snap +++ b/modules/nf-core/rseqc/bamstat/tests/main.nf.test.snap @@ -26,6 +26,10 @@ ] } ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, "timestamp": "2023-12-14T17:00:23.830276754" } } \ No newline at end of file diff --git a/modules/nf-core/rseqc/readdistribution/tests/main.nf.test b/modules/nf-core/rseqc/readdistribution/tests/main.nf.test index 4da721ab6..bd7245b76 100644 --- a/modules/nf-core/rseqc/readdistribution/tests/main.nf.test +++ b/modules/nf-core/rseqc/readdistribution/tests/main.nf.test @@ -13,10 +13,11 @@ nextflow_process { when { process { """ - input[0] = [ [ id:'test', single_end: false ], // meta map - file(params.test_data['sarscov2']['illumina']['test_paired_end_sorted_bam'], checkIfExists: true) - ] - input[1] = file(params.test_data['sarscov2']['genome']['test_bed12'], checkIfExists: true) + input[0] = [ + [ id:'test', single_end: false ], // meta map + file(params.modules_testdata_base_path + "genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam", checkIfExists: true) + ] + input[1] = file(params.modules_testdata_base_path + "genomics/sarscov2/genome/bed/test.bed12", checkIfExists: true) """ } } diff --git a/modules/nf-core/rseqc/readdistribution/tests/main.nf.test.snap b/modules/nf-core/rseqc/readdistribution/tests/main.nf.test.snap index b5f57ca4c..91b417499 100644 --- a/modules/nf-core/rseqc/readdistribution/tests/main.nf.test.snap +++ b/modules/nf-core/rseqc/readdistribution/tests/main.nf.test.snap @@ -28,6 +28,10 @@ ] } ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, "timestamp": "2023-12-14T17:17:31.66536021" } } \ No newline at end of file diff --git a/modules/nf-core/rseqc/tin/tests/main.nf.test b/modules/nf-core/rseqc/tin/tests/main.nf.test index c339d343a..10000f7e1 100644 --- a/modules/nf-core/rseqc/tin/tests/main.nf.test +++ b/modules/nf-core/rseqc/tin/tests/main.nf.test @@ -13,12 +13,12 @@ nextflow_process { when { process { """ - input[0] = [ - [ id:'test' ], // meta map - file(params.test_data['sarscov2']['illumina']['test_paired_end_sorted_bam'], checkIfExists: true), - file(params.test_data['sarscov2']['illumina']['test_paired_end_sorted_bam_bai'], checkIfExists: true) - ] - input[1] = file(params.test_data['sarscov2']['genome']['test_bed'], checkIfExists: true) + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + "genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam", checkIfExists: true), + file(params.modules_testdata_base_path + "genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam.bai", checkIfExists: true) + ] + input[1] = file(params.modules_testdata_base_path + "genomics/sarscov2/genome/bed/test.bed12", checkIfExists: true) """ } } diff --git a/modules/nf-core/rseqc/tin/tests/main.nf.test.snap b/modules/nf-core/rseqc/tin/tests/main.nf.test.snap index 7f0034ecd..49c94a8ed 100644 --- a/modules/nf-core/rseqc/tin/tests/main.nf.test.snap +++ b/modules/nf-core/rseqc/tin/tests/main.nf.test.snap @@ -5,7 +5,8 @@ "0": [ [ { - "id": "test" + "id": "test", + "single_end": false }, "test.paired_end.sorted.summary.txt:md5,9d98447e178b89a89f6f5aba7a772fe6" ] @@ -13,9 +14,10 @@ "1": [ [ { - "id": "test" + "id": "test", + "single_end": false }, - "test.paired_end.sorted.tin.xls:md5,6b1b1b0dc1dc265342ba8c3f27fa60e6" + "test.paired_end.sorted.tin.xls:md5,abdbb6d51a5cd7038cd862ce241ecef1" ] ], "2": [ @@ -24,7 +26,8 @@ "txt": [ [ { - "id": "test" + "id": "test", + "single_end": false }, "test.paired_end.sorted.summary.txt:md5,9d98447e178b89a89f6f5aba7a772fe6" ] @@ -35,13 +38,18 @@ "xls": [ [ { - "id": "test" + "id": "test", + "single_end": false }, - "test.paired_end.sorted.tin.xls:md5,6b1b1b0dc1dc265342ba8c3f27fa60e6" + "test.paired_end.sorted.tin.xls:md5,abdbb6d51a5cd7038cd862ce241ecef1" ] ] } ], - "timestamp": "2023-12-14T17:28:15.014993539" + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-07T14:23:09.039471" } } \ No newline at end of file diff --git a/modules/nf-core/salmon/index/tests/main.nf.test b/modules/nf-core/salmon/index/tests/main.nf.test index 24f95c0ea..538b231b4 100644 --- a/modules/nf-core/salmon/index/tests/main.nf.test +++ b/modules/nf-core/salmon/index/tests/main.nf.test @@ -16,8 +16,8 @@ nextflow_process { } process { """ - input[0] = Channel.of([file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true)]) - input[1] = Channel.of([file(params.test_data['sarscov2']['genome']['transcriptome_fasta'], checkIfExists: true)]) + input[0] = Channel.of([file(params.modules_testdata_base_path + "genomics/homo_sapiens/genome/genome.fasta", checkIfExists: true)]) + input[1] = Channel.of([file(params.modules_testdata_base_path + "genomics/sarscov2/genome/transcriptome.fasta", checkIfExists: true)]) """ } } diff --git a/modules/nf-core/salmon/index/tests/main.nf.test.snap b/modules/nf-core/salmon/index/tests/main.nf.test.snap index 1e3e6b673..94edf3903 100644 --- a/modules/nf-core/salmon/index/tests/main.nf.test.snap +++ b/modules/nf-core/salmon/index/tests/main.nf.test.snap @@ -5,6 +5,10 @@ "versions.yml:md5,563eeafb4577be0b13801d7021c0bf42" ] ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, "timestamp": "2023-11-22T14:26:33.32036" } } \ No newline at end of file diff --git a/modules/nf-core/salmon/quant/tests/main.nf.test b/modules/nf-core/salmon/quant/tests/main.nf.test index c6d15cbf2..703b8280a 100644 --- a/modules/nf-core/salmon/quant/tests/main.nf.test +++ b/modules/nf-core/salmon/quant/tests/main.nf.test @@ -10,19 +10,19 @@ nextflow_process { tag "salmon/quant" tag "salmon/index" - test("sarscov2 - single_end") { - - setup { - run("SALMON_INDEX") { - script "../../../salmon/index/main.nf" - process { - """ - input[0] = Channel.of([file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true)]) - input[1] = Channel.of([file(params.test_data['sarscov2']['genome']['transcriptome_fasta'], checkIfExists: true)]) - """ - } + setup { + run("SALMON_INDEX") { + script "../../../salmon/index/main.nf" + process { + """ + input[0] = Channel.of([file(params.modules_testdata_base_path + "genomics/homo_sapiens/genome/genome.fasta", checkIfExists: true)]) + input[1] = Channel.of([file(params.modules_testdata_base_path + "genomics/sarscov2/genome/transcriptome.fasta", checkIfExists: true)]) + """ } } + } + + test("sarscov2 - single_end") { when { params { @@ -31,12 +31,12 @@ nextflow_process { process { """ input[0] = Channel.of([ - [ id:'test', single_end:true ], // meta map - [ file(params.test_data['sarscov2']['illumina']['test_1_fastq_gz'], checkIfExists: true) ] + [ id:'test', single_end: true ], // meta map + [ file(params.modules_testdata_base_path + "genomics/sarscov2/illumina/fastq/test_1.fastq.gz", checkIfExists: true) ] ]) input[1] = SALMON_INDEX.out.index - input[2] = Channel.of([file(params.test_data['sarscov2']['genome']['genome_gtf'], checkIfExists: true)]) - input[3] = Channel.of([file(params.test_data['sarscov2']['genome']['transcriptome_fasta'], checkIfExists: true)]) + input[2] = Channel.of([file(params.modules_testdata_base_path + "genomics/sarscov2/genome/genome.gtf", checkIfExists: true)]) + input[3] = Channel.of([file(params.modules_testdata_base_path + "genomics/sarscov2/genome/transcriptome.fasta", checkIfExists: true)]) input[4] = false input[5] = '' """ @@ -56,18 +56,6 @@ nextflow_process { test("sarscov2 - single_end lib type A") { - setup { - run("SALMON_INDEX") { - script "../../../salmon/index/main.nf" - process { - """ - input[0] = Channel.of([file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true)]) - input[1] = Channel.of([file(params.test_data['sarscov2']['genome']['transcriptome_fasta'], checkIfExists: true)]) - """ - } - } - } - when { params { outdir = "$outputDir" @@ -75,12 +63,12 @@ nextflow_process { process { """ input[0] = Channel.of([ - [ id:'test', single_end:true ], // meta map - [ file(params.test_data['sarscov2']['illumina']['test_1_fastq_gz'], checkIfExists: true) ] + [ id:'test', single_end: true ], // meta map + [ file(params.modules_testdata_base_path + "genomics/sarscov2/illumina/fastq/test_1.fastq.gz", checkIfExists: true) ] ]) input[1] = SALMON_INDEX.out.index - input[2] = Channel.of([file(params.test_data['sarscov2']['genome']['genome_gtf'], checkIfExists: true)]) - input[3] = Channel.of([file(params.test_data['sarscov2']['genome']['transcriptome_fasta'], checkIfExists: true)]) + input[2] = Channel.of([file(params.modules_testdata_base_path + "genomics/sarscov2/genome/genome.gtf", checkIfExists: true)]) + input[3] = Channel.of([file(params.modules_testdata_base_path + "genomics/sarscov2/genome/transcriptome.fasta", checkIfExists: true)]) input[4] = false input[5] = 'A' """ @@ -100,18 +88,6 @@ nextflow_process { test("sarscov2 - pair_end") { - setup { - run("SALMON_INDEX") { - script "../../../salmon/index/main.nf" - process { - """ - input[0] = Channel.of([file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true)]) - input[1] = Channel.of([file(params.test_data['sarscov2']['genome']['transcriptome_fasta'], checkIfExists: true)]) - """ - } - } - } - when { params { outdir = "$outputDir" @@ -119,13 +95,15 @@ nextflow_process { process { """ input[0] = Channel.of([ - [ id:'test', single_end:false ], // meta map - [ file(params.test_data['sarscov2']['illumina']['test_1_fastq_gz'], checkIfExists: true), - file(params.test_data['sarscov2']['illumina']['test_2_fastq_gz'], checkIfExists: true) ] + [ id:'test', single_end: true ], // 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) + ] ]) input[1] = SALMON_INDEX.out.index - input[2] = Channel.of([file(params.test_data['sarscov2']['genome']['genome_gtf'], checkIfExists: true)]) - input[3] = Channel.of([file(params.test_data['sarscov2']['genome']['transcriptome_fasta'], checkIfExists: true)]) + input[2] = Channel.of([file(params.modules_testdata_base_path + "genomics/sarscov2/genome/genome.gtf", checkIfExists: true)]) + input[3] = Channel.of([file(params.modules_testdata_base_path + "genomics/sarscov2/genome/transcriptome.fasta", checkIfExists: true)]) input[4] = false input[5] = '' """ @@ -142,19 +120,8 @@ nextflow_process { } } - test("sarscov2 - pair_end multiple") { - setup { - run("SALMON_INDEX") { - script "../../../salmon/index/main.nf" - process { - """ - input[0] = Channel.of([file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true)]) - input[1] = Channel.of([file(params.test_data['sarscov2']['genome']['transcriptome_fasta'], checkIfExists: true)]) - """ - } - } - } + test("sarscov2 - pair_end multiple") { when { params { @@ -172,8 +139,8 @@ nextflow_process { ] ]) input[1] = SALMON_INDEX.out.index - input[2] = Channel.of([file(params.test_data['sarscov2']['genome']['genome_gtf'], checkIfExists: true)]) - input[3] = Channel.of([file(params.test_data['sarscov2']['genome']['transcriptome_fasta'], checkIfExists: true)]) + input[2] = Channel.of([file(params.modules_testdata_base_path + "genomics/sarscov2/genome/genome.gtf", checkIfExists: true)]) + input[3] = Channel.of([file(params.modules_testdata_base_path + "genomics/sarscov2/genome/transcriptome.fasta", checkIfExists: true)]) input[4] = false input[5] = '' """ diff --git a/modules/nf-core/salmon/quant/tests/main.nf.test.snap b/modules/nf-core/salmon/quant/tests/main.nf.test.snap index af41c4bae..a1ec792e0 100644 --- a/modules/nf-core/salmon/quant/tests/main.nf.test.snap +++ b/modules/nf-core/salmon/quant/tests/main.nf.test.snap @@ -21,7 +21,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-02-01T11:51:29.732630876" + "timestamp": "2024-02-06T17:10:56.121713" }, "versions_single_end_lib_type_a": { "content": [ @@ -33,7 +33,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-02-01T11:51:14.775006706" + "timestamp": "2024-02-06T17:09:14.898351" }, "versions_pair_end_multiple": { "content": [ @@ -45,6 +45,6 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-02-01T11:51:43.383196527" + "timestamp": "2024-02-06T17:11:07.846643" } } \ No newline at end of file diff --git a/modules/nf-core/sortmerna/main.nf b/modules/nf-core/sortmerna/main.nf index 29c640c64..2712bf589 100644 --- a/modules/nf-core/sortmerna/main.nf +++ b/modules/nf-core/sortmerna/main.nf @@ -20,77 +20,64 @@ process SORTMERNA { task.ext.when == null || task.ext.when script: - def args = task.ext.args ?: '' - def prefix = task.ext.prefix ?: "${meta.id}" - if (meta.single_end) { - """ - sortmerna \\ - ${'--ref '+fastas.join(' --ref ')} \\ - --reads $reads \\ - --threads $task.cpus \\ - --workdir . \\ - --aligned rRNA_reads \\ - --fastx \\ - --other non_rRNA_reads \\ - $args - - mv non_rRNA_reads.f*q.gz ${prefix}.non_rRNA.fastq.gz - mv rRNA_reads.log ${prefix}.sortmerna.log - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - sortmerna: \$(echo \$(sortmerna --version 2>&1) | sed 's/^.*SortMeRNA version //; s/ Build Date.*\$//') - END_VERSIONS - """ + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + def reads_input = reads instanceof List ? reads.collect{"--reads $it"}.join(' ') : "--reads $reads" + def n_fastq = reads instanceof List ? reads.size() : 1 + if ( n_fastq == 1 ) { + mv_cmd = "mv non_rRNA_reads.f*q.gz ${prefix}.non_rRNA.fastq.gz" + paired_cmd = '' + out2_cmd = '' } else { - """ - sortmerna \\ - ${'--ref '+fastas.join(' --ref ')} \\ - --reads ${reads[0]} \\ - --reads ${reads[1]} \\ - --threads $task.cpus \\ - --workdir . \\ - --aligned rRNA_reads \\ - --fastx \\ - --other non_rRNA_reads \\ - --paired_in \\ - --out2 \\ - $args - + mv_cmd = """ mv non_rRNA_reads_fwd.f*q.gz ${prefix}_1.non_rRNA.fastq.gz mv non_rRNA_reads_rev.f*q.gz ${prefix}_2.non_rRNA.fastq.gz - mv rRNA_reads.log ${prefix}.sortmerna.log - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - sortmerna: \$(echo \$(sortmerna --version 2>&1) | sed 's/^.*SortMeRNA version //; s/ Build Date.*\$//') - END_VERSIONS - """ + """.stripIndent() + paired_cmd = "--paired_in" + out2_cmd = "--out2" } + """ + sortmerna \\ + ${'--ref '+fastas.join(' --ref ')} \\ + $reads_input \\ + --threads $task.cpus \\ + --workdir . \\ + --aligned rRNA_reads \\ + --fastx \\ + --other non_rRNA_reads \\ + $paired_cmd \\ + $out2_cmd \\ + $args + + $mv_cmd + mv rRNA_reads.log ${prefix}.sortmerna.log + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + sortmerna: \$(echo \$(sortmerna --version 2>&1) | sed 's/^.*SortMeRNA version //; s/ Build Date.*\$//') + END_VERSIONS + """ stub: def args = task.ext.args ?: '' def prefix = task.ext.prefix ?: "${meta.id}" - if (meta.single_end) { - """ - touch ${prefix}.non_rRNA.fastq.gz - touch ${prefix}.sortmerna.log - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - sortmerna: \$(echo \$(sortmerna --version 2>&1) | sed 's/^.*SortMeRNA version //; s/ Build Date.*\$//') - END_VERSIONS - """ + def reads_input = reads instanceof List ? reads.collect{"--reads $it"}.join(' ') : "--reads $reads" + def n_fastq = reads instanceof List ? reads.size() : 1 + if ( n_fastq == 1 ) { + mv_cmd = "touch ${prefix}.non_rRNA.fastq.gz" } else { - """ + mv_cmd = """ touch ${prefix}_1.non_rRNA.fastq.gz touch ${prefix}_2.non_rRNA.fastq.gz - touch ${prefix}.sortmerna.log - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - sortmerna: \$(echo \$(sortmerna --version 2>&1) | sed 's/^.*SortMeRNA version //; s/ Build Date.*\$//') - END_VERSIONS - """ + """.stripIndent() } + """ + $mv_cmd + touch ${prefix}.sortmerna.log + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + sortmerna: \$(echo \$(sortmerna --version 2>&1) | sed 's/^.*SortMeRNA version //; s/ Build Date.*\$//') + END_VERSIONS + """ } diff --git a/modules/nf-core/sortmerna/tests/main.nf.test b/modules/nf-core/sortmerna/tests/main.nf.test index c7ae014bc..40b5b55fc 100644 --- a/modules/nf-core/sortmerna/tests/main.nf.test +++ b/modules/nf-core/sortmerna/tests/main.nf.test @@ -12,10 +12,10 @@ nextflow_process { when { process { """ - input[0] = [ [ id:'test', single_end:true ], // meta map - [ file(params.test_data['sarscov2']['illumina']['test_1_fastq_gz'], checkIfExists: true) ] - ] - input[1] = [ file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true) ] + input[0] = [ [ id:'test' ], // meta map + [ file(params.modules_testdata_base_path + "genomics/sarscov2/illumina/fastq/test_1.fastq.gz", checkIfExists: true) ] + ] + input[1] = [ file(params.modules_testdata_base_path + "genomics/sarscov2/genome/genome.fasta", checkIfExists: true) ] """ } } @@ -47,10 +47,10 @@ nextflow_process { when { process { """ - input[0] = [ [ id:'test', single_end:true ], // meta map - [ file(params.test_data['sarscov2']['illumina']['test_1_fastq_gz'], checkIfExists: true) ] - ] - input[1] = [ file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true) ] + input[0] = [ [ id:'test' ], // meta map + [ file(params.modules_testdata_base_path + "genomics/sarscov2/illumina/fastq/test_1.fastq.gz", checkIfExists: true) ] + ] + input[1] = [ file(params.modules_testdata_base_path + "genomics/sarscov2/genome/genome.fasta", checkIfExists: true) ] """ } } @@ -78,11 +78,14 @@ nextflow_process { when { process { """ - input[0] = [ [ id:'test', single_end:false ], // meta map - [ file(params.test_data['sarscov2']['illumina']['test_1_fastq_gz'], checkIfExists: true), - file(params.test_data['sarscov2']['illumina']['test_2_fastq_gz'], checkIfExists: true) ] - ] - input[1] = [ file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true) ] + input[0] = [ + [ id:'test' ], // 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) + ] + ] + input[1] = [ file(params.modules_testdata_base_path + "genomics/sarscov2/genome/genome.fasta", checkIfExists: true) ] """ } } @@ -114,11 +117,13 @@ nextflow_process { when { process { """ - input[0] = [ [ id:'test', single_end:false ], // meta map - [ file(params.test_data['sarscov2']['illumina']['test_1_fastq_gz'], checkIfExists: true), - file(params.test_data['sarscov2']['illumina']['test_2_fastq_gz'], checkIfExists: true) ] - ] - input[1] = [ file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true) ] + input[0] = [ [ id:'test' ], // 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) + ] + ] + input[1] = [ file(params.modules_testdata_base_path + "genomics/sarscov2/genome/genome.fasta", checkIfExists: true) ] """ } } diff --git a/modules/nf-core/sortmerna/tests/main.nf.test.snap b/modules/nf-core/sortmerna/tests/main.nf.test.snap index e5eaa06fb..3a25cd88d 100644 --- a/modules/nf-core/sortmerna/tests/main.nf.test.snap +++ b/modules/nf-core/sortmerna/tests/main.nf.test.snap @@ -4,55 +4,55 @@ [ "test.non_rRNA.fastq.gz", "test.sortmerna.log", - "{id=test, single_end=true}" + "{id=test}" ] ], "meta": { "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2023-12-21T11:56:00.15356" + "timestamp": "2024-02-07T12:28:29.197913" }, "sarscov2 paired_end_match": { "content": [ [ + "{id=test}", [ "test_1.non_rRNA.fastq.gz", "test_2.non_rRNA.fastq.gz" ], - "test.sortmerna.log", - "{id=test, single_end=false}" + "test.sortmerna.log" ] ], "meta": { "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-02-01T12:16:08.266820184" + "timestamp": "2024-02-07T12:28:49.914992" }, "versions_paired_end_stub": { "content": [ [ - "versions.yml:md5,7df9d50209f351e1f75e05a1fad6ba4b" + "versions.yml:md5,5a099f3eea59b9deee96deffcf3387f5" ] ], "meta": { "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-02-01T12:10:57.850054063" + "timestamp": "2024-02-07T12:27:11.223149" }, "versions_paired_end": { "content": [ [ - "versions.yml:md5,7df9d50209f351e1f75e05a1fad6ba4b" + "versions.yml:md5,5a099f3eea59b9deee96deffcf3387f5" ] ], "meta": { "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-02-01T12:10:47.066657228" + "timestamp": "2024-02-07T12:27:04.517155" }, "versions_single_end": { "content": [ @@ -83,30 +83,30 @@ [ "test.non_rRNA.fastq.gz", "test.sortmerna.log", - "{id=test, single_end=true}" + "{id=test}" ] ], "meta": { "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-02-01T12:15:30.47928718" + "timestamp": "2024-02-07T12:28:23.20327" }, "sarscov2 paired_end-for_stub_match": { "content": [ [ + "{id=test}", [ "test_1.non_rRNA.fastq.gz", "test_2.non_rRNA.fastq.gz" ], - "test.sortmerna.log", - "{id=test, single_end=false}" + "test.sortmerna.log" ] ], "meta": { "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2023-12-21T12:00:47.879193" + "timestamp": "2024-02-07T12:28:56.063579" } } \ No newline at end of file diff --git a/modules/nf-core/star/align/tests/main.nf.test b/modules/nf-core/star/align/tests/main.nf.test index c18e37ec8..6ecd77863 100644 --- a/modules/nf-core/star/align/tests/main.nf.test +++ b/modules/nf-core/star/align/tests/main.nf.test @@ -9,38 +9,38 @@ nextflow_process { tag "star/align" tag "star/genomegenerate" - test("homo_sapiens - single_end") { - config "./nextflow.config" - - setup { - run("STAR_GENOMEGENERATE") { - script "../../../star/genomegenerate/main.nf" - process { - """ - input[0] = Channel.of([ - [ id:'test_fasta' ], - [file(params.test_data['homo_sapiens']['genome']['genome_fasta'], checkIfExists: true)] - ]) - input[1] = Channel.of([ - [ id:'test_gtf' ], - [file(params.test_data['homo_sapiens']['genome']['genome_gtf'], checkIfExists: true)] - ]) - """ - } + setup { + run("STAR_GENOMEGENERATE") { + script "../../../star/genomegenerate/main.nf" + process { + """ + input[0] = Channel.of([ + [ id:'test_fasta' ], + [ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) ] + ]) + input[1] = Channel.of([ + [ id:'test_gtf' ], + [ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.gtf', checkIfExists: true) ] + ]) + """ } } + } + + test("homo_sapiens - single_end") { + config "./nextflow.config" when { process { """ input[0] = Channel.of([ [ id:'test', single_end:true ], // meta map - [ file(params.test_data['homo_sapiens']['illumina']['test_rnaseq_1_fastq_gz'], checkIfExists: true) ] + [ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/fastq/test_rnaseq_1.fastq.gz', checkIfExists: true) ] ]) input[1] = STAR_GENOMEGENERATE.out.index input[2] = Channel.of([ [ id:'test_gtf' ], - [file(params.test_data['homo_sapiens']['genome']['genome_gtf'], checkIfExists: true)] + [ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.gtf', checkIfExists: true) ] ]) input[3] = false input[4] = 'illumina' @@ -75,38 +75,20 @@ nextflow_process { test("homo_sapiens - paired_end") { config "./nextflow.config" - setup { - run("STAR_GENOMEGENERATE") { - script "../../../star/genomegenerate/main.nf" - process { - """ - input[0] = Channel.of([ - [ id:'test_fasta' ], - [file(params.test_data['homo_sapiens']['genome']['genome_fasta'], checkIfExists: true)] - ]) - input[1] = Channel.of([ - [ id:'test_gtf' ], - [file(params.test_data['homo_sapiens']['genome']['genome_gtf'], checkIfExists: true)] - ]) - """ - } - } - } - when { process { """ input[0] = Channel.of([ [ id:'test', single_end:false ], // meta map [ - file(params.test_data['homo_sapiens']['illumina']['test_rnaseq_1_fastq_gz'], checkIfExists: true), - file(params.test_data['homo_sapiens']['illumina']['test_rnaseq_2_fastq_gz'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/fastq/test_rnaseq_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/fastq/test_rnaseq_2.fastq.gz', checkIfExists: true) ] ]) input[1] = STAR_GENOMEGENERATE.out.index input[2] = Channel.of([ [ id:'test_gtf' ], - [file(params.test_data['homo_sapiens']['genome']['genome_gtf'], checkIfExists: true)] + [ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.gtf', checkIfExists: true) ] ]) input[3] = false input[4] = 'illumina' @@ -141,38 +123,20 @@ nextflow_process { test("homo_sapiens - paired_end - arriba") { config "./nextflow.arriba.config" - setup { - run("STAR_GENOMEGENERATE") { - script "../../../star/genomegenerate/main.nf" - process { - """ - input[0] = Channel.of([ - [ id:'test_fasta' ], - [file(params.test_data['homo_sapiens']['genome']['genome_fasta'], checkIfExists: true)] - ]) - input[1] = Channel.of([ - [ id:'test_gtf' ], - [file(params.test_data['homo_sapiens']['genome']['genome_gtf'], checkIfExists: true)] - ]) - """ - } - } - } - when { process { """ input[0] = Channel.of([ [ id:'test', single_end:false ], // meta map [ - file(params.test_data['homo_sapiens']['illumina']['test_rnaseq_1_fastq_gz'], checkIfExists: true), - file(params.test_data['homo_sapiens']['illumina']['test_rnaseq_2_fastq_gz'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/fastq/test_rnaseq_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/fastq/test_rnaseq_2.fastq.gz', checkIfExists: true) ] ]) input[1] = STAR_GENOMEGENERATE.out.index input[2] = Channel.of([ [ id:'test_gtf' ], - [file(params.test_data['homo_sapiens']['genome']['genome_gtf'], checkIfExists: true)] + [ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.gtf', checkIfExists: true) ] ]) input[3] = false input[4] = 'illumina' @@ -207,38 +171,20 @@ nextflow_process { test("homo_sapiens - paired_end - starfusion") { config "./nextflow.starfusion.config" - setup { - run("STAR_GENOMEGENERATE") { - script "../../../star/genomegenerate/main.nf" - process { - """ - input[0] = Channel.of([ - [ id:'test_fasta' ], - [file(params.test_data['homo_sapiens']['genome']['genome_fasta'], checkIfExists: true)] - ]) - input[1] = Channel.of([ - [ id:'test_gtf' ], - [file(params.test_data['homo_sapiens']['genome']['genome_gtf'], checkIfExists: true)] - ]) - """ - } - } - } - when { process { """ input[0] = Channel.of([ [ id:'test', single_end:false ], // meta map [ - file(params.test_data['homo_sapiens']['illumina']['test_rnaseq_1_fastq_gz'], checkIfExists: true), - file(params.test_data['homo_sapiens']['illumina']['test_rnaseq_2_fastq_gz'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/fastq/test_rnaseq_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/fastq/test_rnaseq_2.fastq.gz', checkIfExists: true) ] ]) input[1] = STAR_GENOMEGENERATE.out.index input[2] = Channel.of([ [ id:'test_gtf' ], - [file(params.test_data['homo_sapiens']['genome']['genome_gtf'], checkIfExists: true)] + [ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.gtf', checkIfExists: true) ] ]) input[3] = false input[4] = 'illumina' @@ -273,40 +219,22 @@ nextflow_process { test("homo_sapiens - paired_end - multiple") { config "./nextflow.config" - setup { - run("STAR_GENOMEGENERATE") { - script "../../../star/genomegenerate/main.nf" - process { - """ - input[0] = Channel.of([ - [ id:'test_fasta' ], - [file(params.test_data['homo_sapiens']['genome']['genome_fasta'], checkIfExists: true)] - ]) - input[1] = Channel.of([ - [ id:'test_gtf' ], - [file(params.test_data['homo_sapiens']['genome']['genome_gtf'], checkIfExists: true)] - ]) - """ - } - } - } - when { process { """ input[0] = Channel.of([ [ id:'test', single_end:false ], // meta map [ - file(params.test_data['homo_sapiens']['illumina']['test_rnaseq_1_fastq_gz'], checkIfExists: true), - file(params.test_data['homo_sapiens']['illumina']['test_rnaseq_2_fastq_gz'], checkIfExists: true), - file(params.test_data['homo_sapiens']['illumina']['test_rnaseq_1_fastq_gz'], checkIfExists: true), - file(params.test_data['homo_sapiens']['illumina']['test_rnaseq_2_fastq_gz'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/fastq/test_rnaseq_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/fastq/test_rnaseq_2.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/fastq/test_rnaseq_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/fastq/test_rnaseq_2.fastq.gz', checkIfExists: true) ] ]) input[1] = STAR_GENOMEGENERATE.out.index input[2] = Channel.of([ [ id:'test_gtf' ], - [file(params.test_data['homo_sapiens']['genome']['genome_gtf'], checkIfExists: true)] + [ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.gtf', checkIfExists: true) ] ]) input[3] = false input[4] = 'illumina' diff --git a/modules/nf-core/star/genomegenerate/tests/main.nf.test b/modules/nf-core/star/genomegenerate/tests/main.nf.test index 069c7ad09..c17c8ba45 100644 --- a/modules/nf-core/star/genomegenerate/tests/main.nf.test +++ b/modules/nf-core/star/genomegenerate/tests/main.nf.test @@ -15,11 +15,11 @@ nextflow_process { """ input[0] = Channel.of([ [ id:'test_fasta' ], - [file(params.test_data['homo_sapiens']['genome']['genome_fasta'], checkIfExists: true)] + [ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) ] ]) input[1] = Channel.of([ [ id:'test_gtf' ], - [file(params.test_data['homo_sapiens']['genome']['genome_gtf'], checkIfExists: true)] + [ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.gtf', checkIfExists: true) ] ]) """ } @@ -43,11 +43,11 @@ nextflow_process { """ input[0] = Channel.of([ [ id:'test_fasta' ], - [file(params.test_data['homo_sapiens']['genome']['genome_fasta'], checkIfExists: true)] + [ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) ] ]) input[1] = Channel.of([ [ id:'test_gtf' ], - [file(params.test_data['homo_sapiens']['genome']['genome_gtf'], checkIfExists: true)] + [ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.gtf', checkIfExists: true) ] ]) """ } @@ -69,7 +69,7 @@ nextflow_process { """ input[0] = Channel.of([ [ id:'test_fasta' ], - [file(params.test_data['homo_sapiens']['genome']['genome_fasta'], checkIfExists: true)] + [ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) ] ]) input[1] = Channel.of([ [], [] ]) """ @@ -95,7 +95,7 @@ nextflow_process { """ input[0] = Channel.of([ [ id:'test_fasta' ], - [file(params.test_data['homo_sapiens']['genome']['genome_fasta'], checkIfExists: true)] + [ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) ] ]) input[1] = Channel.of([ [], [] ]) """ diff --git a/modules/nf-core/stringtie/stringtie/tests/main.nf.test b/modules/nf-core/stringtie/stringtie/tests/main.nf.test index 68786b745..b7281c62e 100644 --- a/modules/nf-core/stringtie/stringtie/tests/main.nf.test +++ b/modules/nf-core/stringtie/stringtie/tests/main.nf.test @@ -15,7 +15,7 @@ nextflow_process { """ input[0] = [ [ id:'test', strandedness:'forward' ], // meta map - [ file(params.test_data['sarscov2']['illumina']['test_paired_end_sorted_bam'], checkIfExists: true) ] + [ file(params.modules_testdata_base_path + "genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam", checkIfExists: true) ] ] input[1] = [] """ @@ -38,10 +38,10 @@ nextflow_process { process { """ input[0] = [ - [ id:'test', strandedness:'forward' ], // meta map - [ file(params.test_data['sarscov2']['illumina']['test_paired_end_sorted_bam'], checkIfExists: true) ] - ] - input[1] = file(params.test_data['sarscov2']['genome']['genome_gtf'], checkIfExists: true) + [ id:'test', strandedness:'forward' ], // meta map + [ file(params.modules_testdata_base_path + "genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam", checkIfExists: true) ] + ] + input[1] = file(params.modules_testdata_base_path + "genomics/sarscov2/genome/genome.gtf", checkIfExists: true) """ } } @@ -64,7 +64,7 @@ nextflow_process { """ input[0] = [ [ id:'test', strandedness:'reverse' ], // meta map - [ file(params.test_data['sarscov2']['illumina']['test_paired_end_sorted_bam'], checkIfExists: true) ] + [ file(params.modules_testdata_base_path + "genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam", checkIfExists: true) ] ] input[1] = [] """ @@ -88,9 +88,9 @@ nextflow_process { """ input[0] = [ [ id:'test', strandedness:'reverse' ], // meta map - [ file(params.test_data['sarscov2']['illumina']['test_paired_end_sorted_bam'], checkIfExists: true) ] + [ file(params.modules_testdata_base_path + "genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam", checkIfExists: true) ] ] - input[1] = file(params.test_data['sarscov2']['genome']['genome_gtf'], checkIfExists: true) + input[1] = file(params.modules_testdata_base_path + "genomics/sarscov2/genome/genome.gtf", checkIfExists: true) """ } } diff --git a/modules/nf-core/subread/featurecounts/tests/main.nf.test b/modules/nf-core/subread/featurecounts/tests/main.nf.test index f9457dbc4..6ff221791 100644 --- a/modules/nf-core/subread/featurecounts/tests/main.nf.test +++ b/modules/nf-core/subread/featurecounts/tests/main.nf.test @@ -14,10 +14,11 @@ nextflow_process { when { process { """ - input[0] = [ [ id:'test', single_end:true, strandedness:'forward' ], // meta map - file(params.test_data['sarscov2']['illumina']['test_single_end_bam'], checkIfExists: true), - file(params.test_data['sarscov2']['genome']['genome_gtf'], checkIfExists: true) - ] + input[0] = [ + [ id:'test', single_end:true, strandedness:'forward' ], // meta map + file(params.modules_testdata_base_path + "genomics/sarscov2/illumina/bam/test.single_end.bam", checkIfExists: true), + file(params.modules_testdata_base_path + "genomics/sarscov2/genome/genome.gtf", checkIfExists: true) + ] """ } } @@ -37,10 +38,11 @@ nextflow_process { when { process { """ - input[0] = [ [ id:'test', single_end:true, strandedness:'reverse' ], // meta map - file(params.test_data['sarscov2']['illumina']['test_single_end_bam'], checkIfExists: true), - file(params.test_data['sarscov2']['genome']['genome_gtf'], checkIfExists: true) - ] + input[0] = [ + [ id:'test', single_end:true, strandedness:'reverse' ], // meta map + file(params.modules_testdata_base_path + "genomics/sarscov2/illumina/bam/test.single_end.bam", checkIfExists: true), + file(params.modules_testdata_base_path + "genomics/sarscov2/genome/genome.gtf", checkIfExists: true) + ] """ } } diff --git a/modules/nf-core/trimgalore/tests/main.nf.test b/modules/nf-core/trimgalore/tests/main.nf.test index bc6812ccd..3e3819b6d 100644 --- a/modules/nf-core/trimgalore/tests/main.nf.test +++ b/modules/nf-core/trimgalore/tests/main.nf.test @@ -16,7 +16,7 @@ nextflow_process { process { """ input[0] = [ [ id:'test', single_end:true ], // meta map - [ file(params.test_data['sarscov2']['illumina']['test_1_fastq_gz'], checkIfExists: true) ] + [ file(params.modules_testdata_base_path + "genomics/sarscov2/illumina/fastq/test_1.fastq.gz", checkIfExists: true) ] ] """ } @@ -55,9 +55,11 @@ nextflow_process { process { """ input[0] = [ [ id:'test', single_end:false ], // meta map - [ file(params.test_data['sarscov2']['illumina']['test_1_fastq_gz'], checkIfExists: true), - file(params.test_data['sarscov2']['illumina']['test_2_fastq_gz'], checkIfExists: true) ] + [ + 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) ] + ] """ } } diff --git a/modules/nf-core/ucsc/bedclip/tests/main.nf.test b/modules/nf-core/ucsc/bedclip/tests/main.nf.test index e7b3aef11..f26764529 100644 --- a/modules/nf-core/ucsc/bedclip/tests/main.nf.test +++ b/modules/nf-core/ucsc/bedclip/tests/main.nf.test @@ -16,9 +16,9 @@ nextflow_process { """ input[0] = Channel.of([ [ id:'test', single_end:false ], // meta map - file(params.test_data['sarscov2']['illumina']['test_bedgraph'], checkIfExists: true) + file(params.modules_testdata_base_path + "genomics/sarscov2/illumina/bedgraph/test.bedgraph", checkIfExists: true) ]) - input[1] = Channel.of([file(params.test_data['sarscov2']['genome']['genome_sizes'], checkIfExists: true)]) + input[1] = Channel.of(file(params.modules_testdata_base_path + "genomics/sarscov2/genome/genome.sizes", checkIfExists: true)) """ } } diff --git a/modules/nf-core/ucsc/bedclip/tests/main.nf.test.snap b/modules/nf-core/ucsc/bedclip/tests/main.nf.test.snap index 10cd1fc0a..2f41b6a8d 100644 --- a/modules/nf-core/ucsc/bedclip/tests/main.nf.test.snap +++ b/modules/nf-core/ucsc/bedclip/tests/main.nf.test.snap @@ -1,24 +1,37 @@ { - "bedgraph": { + "sarscov2": { "content": [ - [ - [ - { - "id": "test", - "single_end": false - }, - "test.clip.bedGraph:md5,e02395e1f7c593b3f79563067159ebc2" + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.clip.bedGraph:md5,e02395e1f7c593b3f79563067159ebc2" + ] + ], + "1": [ + "versions.yml:md5,b92248ce2a138ad4d146ac0d9e71fb34" + ], + "bedgraph": [ + [ + { + "id": "test", + "single_end": false + }, + "test.clip.bedGraph:md5,e02395e1f7c593b3f79563067159ebc2" + ] + ], + "versions": [ + "versions.yml:md5,b92248ce2a138ad4d146ac0d9e71fb34" ] - ] + } ], - "timestamp": "2023-11-23T14:50:02.387801" - }, - "versions": { - "content": [ - [ - "versions.yml:md5,b92248ce2a138ad4d146ac0d9e71fb34" - ] - ], - "timestamp": "2023-11-23T14:50:02.407878" + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-07T16:04:04.165478" } } \ No newline at end of file diff --git a/modules/nf-core/ucsc/bedgraphtobigwig/tests/main.nf.test b/modules/nf-core/ucsc/bedgraphtobigwig/tests/main.nf.test index 6209ddaf5..a40ee2a32 100644 --- a/modules/nf-core/ucsc/bedgraphtobigwig/tests/main.nf.test +++ b/modules/nf-core/ucsc/bedgraphtobigwig/tests/main.nf.test @@ -16,10 +16,11 @@ nextflow_process { } process { """ - input[0] = [ [ id:'test' ], // meta map - [ file(params.test_data['sarscov2']['illumina']['test_bedgraph'], checkIfExists: true) ] - ] - input[1] = file(params.test_data['sarscov2']['genome']['genome_sizes'], checkIfExists: true) + input[0] = Channel.of([ + [ id:'test' ], // meta map + file(params.modules_testdata_base_path + "genomics/sarscov2/illumina/bedgraph/test.bedgraph", checkIfExists: true) + ]) + input[1] = Channel.of(file(params.modules_testdata_base_path + "genomics/sarscov2/genome/genome.sizes", checkIfExists: true)) """ } } diff --git a/modules/nf-core/ucsc/bedgraphtobigwig/tests/main.nf.test.snap b/modules/nf-core/ucsc/bedgraphtobigwig/tests/main.nf.test.snap index 6b0de0ff3..526f0e261 100644 --- a/modules/nf-core/ucsc/bedgraphtobigwig/tests/main.nf.test.snap +++ b/modules/nf-core/ucsc/bedgraphtobigwig/tests/main.nf.test.snap @@ -26,6 +26,10 @@ ] } ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, "timestamp": "2023-10-18T04:06:47.826602" } } \ No newline at end of file diff --git a/modules/nf-core/umitools/extract/tests/main.nf.test b/modules/nf-core/umitools/extract/tests/main.nf.test index 22242d1df..83a77a1b1 100644 --- a/modules/nf-core/umitools/extract/tests/main.nf.test +++ b/modules/nf-core/umitools/extract/tests/main.nf.test @@ -18,8 +18,8 @@ nextflow_process { process { """ input[0] = [ [ id:'test', single_end:true ], // meta map - [ file(params.test_data['sarscov2']['illumina']['test_1_fastq_gz'], checkIfExists: true) ] - ] + [ file(params.modules_testdata_base_path + "genomics/sarscov2/illumina/fastq/test_1.fastq.gz", checkIfExists: true) ] + ] """ } } diff --git a/subworkflows/nf-core/bam_rseqc/main.nf b/subworkflows/nf-core/bam_rseqc/main.nf index bf530f09d..043321a13 100644 --- a/subworkflows/nf-core/bam_rseqc/main.nf +++ b/subworkflows/nf-core/bam_rseqc/main.nf @@ -13,168 +13,173 @@ include { RSEQC_TIN } from '../../../modules/nf-core/rseqc/tin/ma workflow BAM_RSEQC { take: - ch_bam_bai // channel: [ val(meta), [ bam, bai ] ] - ch_bed // file: /path/to/genome.bed + bam_bai // channel: [ val(meta), [ bam, bai ] ] + bed // channel: [ genome.bed ] rseqc_modules // list: rseqc modules to run main: - ch_versions = Channel.empty() + bam = bam_bai.map{ [ it[0], it[1] ] } - ch_bam_bai - .map { [ it[0], it[1] ] } - .set { ch_bam } + versions = Channel.empty() // // Run RSeQC bam_stat.py // - ch_bamstat = Channel.empty() + bamstat_txt = Channel.empty() + if ('bam_stat' in rseqc_modules) { - RSEQC_BAMSTAT ( ch_bam ) - ch_bamstat = RSEQC_BAMSTAT.out.txt - ch_versions = ch_versions.mix(RSEQC_BAMSTAT.out.versions.first()) + RSEQC_BAMSTAT(bam) + bamstat_txt = RSEQC_BAMSTAT.out.txt + versions = versions.mix(RSEQC_BAMSTAT.out.versions.first()) } // // Run RSeQC inner_distance.py // - ch_innerdistance = Channel.empty() - ch_innerdistance_distance = Channel.empty() - ch_innerdistance_freq = Channel.empty() - ch_innerdistance_mean = Channel.empty() - ch_innerdistance_pdf = Channel.empty() - ch_innerdistance_rscript = Channel.empty() + innerdistance_all = Channel.empty() + innerdistance_distance = Channel.empty() + innerdistance_freq = Channel.empty() + innerdistance_mean = Channel.empty() + innerdistance_pdf = Channel.empty() + innerdistance_rscript = Channel.empty() + if ('inner_distance' in rseqc_modules) { - RSEQC_INNERDISTANCE ( ch_bam, ch_bed ) - ch_innerdistance_distance = RSEQC_INNERDISTANCE.out.distance - ch_innerdistance_freq = RSEQC_INNERDISTANCE.out.freq - ch_innerdistance_mean = RSEQC_INNERDISTANCE.out.mean - ch_innerdistance_pdf = RSEQC_INNERDISTANCE.out.pdf - ch_innerdistance_rscript = RSEQC_INNERDISTANCE.out.rscript - ch_innerdistance = ch_innerdistance_distance.mix(ch_innerdistance_freq, ch_innerdistance_mean, ch_innerdistance_pdf, ch_innerdistance_rscript) - ch_versions = ch_versions.mix(RSEQC_INNERDISTANCE.out.versions.first()) + RSEQC_INNERDISTANCE(bam, bed) + innerdistance_distance = RSEQC_INNERDISTANCE.out.distance + innerdistance_freq = RSEQC_INNERDISTANCE.out.freq + innerdistance_mean = RSEQC_INNERDISTANCE.out.mean + innerdistance_pdf = RSEQC_INNERDISTANCE.out.pdf + innerdistance_rscript = RSEQC_INNERDISTANCE.out.rscript + innerdistance_all = innerdistance_distance.mix(innerdistance_freq, innerdistance_mean, innerdistance_pdf, innerdistance_rscript) + versions = versions.mix(RSEQC_INNERDISTANCE.out.versions.first()) } // // Run RSeQC infer_experiment.py // - ch_inferexperiment = Channel.empty() + inferexperiment_txt = Channel.empty() if ('infer_experiment' in rseqc_modules) { - RSEQC_INFEREXPERIMENT ( ch_bam, ch_bed ) - ch_inferexperiment = RSEQC_INFEREXPERIMENT.out.txt - ch_versions = ch_versions.mix(RSEQC_INFEREXPERIMENT.out.versions.first()) + RSEQC_INFEREXPERIMENT(bam, bed) + inferexperiment_txt = RSEQC_INFEREXPERIMENT.out.txt + versions = versions.mix(RSEQC_INFEREXPERIMENT.out.versions.first()) } // // Run RSeQC junction_annotation.py // - ch_junctionannotation = Channel.empty() - ch_junctionannotation_bed = Channel.empty() - ch_junctionannotation_interact_bed = Channel.empty() - ch_junctionannotation_xls = Channel.empty() - ch_junctionannotation_pdf = Channel.empty() - ch_junctionannotation_events_pdf = Channel.empty() - ch_junctionannotation_rscript = Channel.empty() - ch_junctionannotation_log = Channel.empty() + junctionannotation_all = Channel.empty() + junctionannotation_bed = Channel.empty() + junctionannotation_interact_bed = Channel.empty() + junctionannotation_xls = Channel.empty() + junctionannotation_pdf = Channel.empty() + junctionannotation_events_pdf = Channel.empty() + junctionannotation_rscript = Channel.empty() + junctionannotation_log = Channel.empty() + if ('junction_annotation' in rseqc_modules) { - RSEQC_JUNCTIONANNOTATION ( ch_bam, ch_bed ) - ch_junctionannotation_bed = RSEQC_JUNCTIONANNOTATION.out.bed - ch_junctionannotation_interact_bed = RSEQC_JUNCTIONANNOTATION.out.interact_bed - ch_junctionannotation_xls = RSEQC_JUNCTIONANNOTATION.out.xls - ch_junctionannotation_pdf = RSEQC_JUNCTIONANNOTATION.out.pdf - ch_junctionannotation_events_pdf = RSEQC_JUNCTIONANNOTATION.out.events_pdf - ch_junctionannotation_rscript = RSEQC_JUNCTIONANNOTATION.out.rscript - ch_junctionannotation_log = RSEQC_JUNCTIONANNOTATION.out.log - ch_junctionannotation = ch_junctionannotation_bed.mix(ch_junctionannotation_interact_bed, ch_junctionannotation_xls, ch_junctionannotation_pdf, ch_junctionannotation_events_pdf, ch_junctionannotation_rscript, ch_junctionannotation_log) - ch_versions = ch_versions.mix(RSEQC_JUNCTIONANNOTATION.out.versions.first()) + RSEQC_JUNCTIONANNOTATION(bam, bed) + junctionannotation_bed = RSEQC_JUNCTIONANNOTATION.out.bed + junctionannotation_interact_bed = RSEQC_JUNCTIONANNOTATION.out.interact_bed + junctionannotation_xls = RSEQC_JUNCTIONANNOTATION.out.xls + junctionannotation_pdf = RSEQC_JUNCTIONANNOTATION.out.pdf + junctionannotation_events_pdf = RSEQC_JUNCTIONANNOTATION.out.events_pdf + junctionannotation_rscript = RSEQC_JUNCTIONANNOTATION.out.rscript + junctionannotation_log = RSEQC_JUNCTIONANNOTATION.out.log + junctionannotation_all = junctionannotation_bed.mix(junctionannotation_interact_bed, junctionannotation_xls, junctionannotation_pdf, junctionannotation_events_pdf, junctionannotation_rscript, junctionannotation_log) + versions = versions.mix(RSEQC_JUNCTIONANNOTATION.out.versions.first()) } // // Run RSeQC junction_saturation.py // - ch_junctionsaturation = Channel.empty() - ch_junctionsaturation_pdf = Channel.empty() - ch_junctionsaturation_rscript = Channel.empty() + junctionsaturation_all = Channel.empty() + junctionsaturation_pdf = Channel.empty() + junctionsaturation_rscript = Channel.empty() + if ('junction_saturation' in rseqc_modules) { - RSEQC_JUNCTIONSATURATION ( ch_bam, ch_bed ) - ch_junctionsaturation_pdf = RSEQC_JUNCTIONSATURATION.out.pdf - ch_junctionsaturation_rscript = RSEQC_JUNCTIONSATURATION.out.rscript - ch_junctionsaturation = ch_junctionsaturation_pdf.mix(ch_junctionsaturation_rscript) - ch_versions = ch_versions.mix(RSEQC_JUNCTIONSATURATION.out.versions.first()) + RSEQC_JUNCTIONSATURATION(bam, bed) + junctionsaturation_pdf = RSEQC_JUNCTIONSATURATION.out.pdf + junctionsaturation_rscript = RSEQC_JUNCTIONSATURATION.out.rscript + junctionsaturation_all = junctionsaturation_pdf.mix(junctionsaturation_rscript) + versions = versions.mix(RSEQC_JUNCTIONSATURATION.out.versions.first()) } // // Run RSeQC read_distribution.py // - ch_readdistribution = Channel.empty() + readdistribution_txt = Channel.empty() + if ('read_distribution' in rseqc_modules) { - RSEQC_READDISTRIBUTION ( ch_bam, ch_bed ) - ch_readdistribution = RSEQC_READDISTRIBUTION.out.txt - ch_versions = ch_versions.mix(RSEQC_READDISTRIBUTION.out.versions.first()) + RSEQC_READDISTRIBUTION(bam, bed) + readdistribution_txt = RSEQC_READDISTRIBUTION.out.txt + versions = versions.mix(RSEQC_READDISTRIBUTION.out.versions.first()) } // // Run RSeQC read_duplication.py // - ch_readduplication = Channel.empty() - ch_readduplication_seq_xls = Channel.empty() - ch_readduplication_pos_xls = Channel.empty() - ch_readduplication_pdf = Channel.empty() - ch_readduplication_rscript = Channel.empty() + readduplication_all = Channel.empty() + readduplication_seq_xls = Channel.empty() + readduplication_pos_xls = Channel.empty() + readduplication_pdf = Channel.empty() + readduplication_rscript = Channel.empty() + if ('read_duplication' in rseqc_modules) { - RSEQC_READDUPLICATION ( ch_bam ) - ch_readduplication_seq_xls = RSEQC_READDUPLICATION.out.seq_xls - ch_readduplication_pos_xls = RSEQC_READDUPLICATION.out.pos_xls - ch_readduplication_pdf = RSEQC_READDUPLICATION.out.pdf - ch_readduplication_rscript = RSEQC_READDUPLICATION.out.rscript - ch_readduplication = ch_readduplication_seq_xls.mix(ch_readduplication_pos_xls, ch_readduplication_pdf, ch_readduplication_rscript) - ch_versions = ch_versions.mix(RSEQC_READDUPLICATION.out.versions.first()) + RSEQC_READDUPLICATION(bam ) + readduplication_seq_xls = RSEQC_READDUPLICATION.out.seq_xls + readduplication_pos_xls = RSEQC_READDUPLICATION.out.pos_xls + readduplication_pdf = RSEQC_READDUPLICATION.out.pdf + readduplication_rscript = RSEQC_READDUPLICATION.out.rscript + readduplication_all = readduplication_seq_xls.mix(readduplication_pos_xls, readduplication_pdf, readduplication_rscript) + versions = versions.mix(RSEQC_READDUPLICATION.out.versions.first()) } // // Run RSeQC tin.py // - ch_tin = Channel.empty() + tin_txt = Channel.empty() + if ('tin' in rseqc_modules) { - RSEQC_TIN ( ch_bam_bai, ch_bed ) - ch_tin = RSEQC_TIN.out.txt - ch_versions = ch_versions.mix(RSEQC_TIN.out.versions.first()) + RSEQC_TIN(bam_bai, bed) + tin_txt = RSEQC_TIN.out.txt + versions = versions.mix(RSEQC_TIN.out.versions.first()) } emit: - ch_bamstat // channel: [ val(meta), txt ] + bamstat_txt // channel: [ val(meta), txt ] - ch_innerdistance - ch_innerdistance_distance // channel: [ val(meta), txt ] - ch_innerdistance_freq // channel: [ val(meta), txt ] - ch_innerdistance_mean // channel: [ val(meta), txt ] - ch_innerdistance_pdf // channel: [ val(meta), pdf ] - ch_innerdistance_rscript // channel: [ val(meta), r ] + innerdistance_all // channel: [ val(meta), {txt, pdf, r} ] + innerdistance_distance // channel: [ val(meta), txt ] + innerdistance_freq // channel: [ val(meta), txt ] + innerdistance_mean // channel: [ val(meta), txt ] + innerdistance_pdf // channel: [ val(meta), pdf ] + innerdistance_rscript // channel: [ val(meta), r ] - ch_inferexperiment // channel: [ val(meta), txt ] + inferexperiment_txt // channel: [ val(meta), txt ] - ch_junctionannotation - ch_junctionannotation_bed // channel: [ val(meta), bed ] - ch_junctionannotation_interact_bed // channel: [ val(meta), bed ] - ch_junctionannotation_xls // channel: [ val(meta), xls ] - ch_junctionannotation_pdf // channel: [ val(meta), pdf ] - ch_junctionannotation_events_pdf // channel: [ val(meta), pdf ] - ch_junctionannotation_rscript // channel: [ val(meta), r ] - ch_junctionannotation_log // channel: [ val(meta), log ] + junctionannotation_all // channel: [ val(meta), {bed, xls, pdf, r, log} ] + junctionannotation_bed // channel: [ val(meta), bed ] + junctionannotation_interact_bed // channel: [ val(meta), bed ] + junctionannotation_xls // channel: [ val(meta), xls ] + junctionannotation_pdf // channel: [ val(meta), pdf ] + junctionannotation_events_pdf // channel: [ val(meta), pdf ] + junctionannotation_rscript // channel: [ val(meta), r ] + junctionannotation_log // channel: [ val(meta), log ] - ch_junctionsaturation - ch_junctionsaturation_pdf // channel: [ val(meta), pdf ] - ch_junctionsaturation_rscript // channel: [ val(meta), r ] + junctionsaturation_all // channel: [ val(meta), {pdf, r} ] + junctionsaturation_pdf // channel: [ val(meta), pdf ] + junctionsaturation_rscript // channel: [ val(meta), r ] - ch_readdistribution // channel: [ val(meta), txt ] + readdistribution_txt // channel: [ val(meta), txt ] - ch_readduplication - ch_readduplication_seq_xls // channel: [ val(meta), xls ] - ch_readduplication_pos_xls // channel: [ val(meta), xls ] - ch_readduplication_pdf // channel: [ val(meta), pdf ] - ch_readduplication_rscript // channel: [ val(meta), r ] + readduplication_all // channel: [ val(meta), {xls, pdf, r} ] + readduplication_seq_xls // channel: [ val(meta), xls ] + readduplication_pos_xls // channel: [ val(meta), xls ] + readduplication_pdf // channel: [ val(meta), pdf ] + readduplication_rscript // channel: [ val(meta), r ] - ch_tin // channel: [ val(meta), txt ] + tin_txt // channel: [ val(meta), txt ] - versions = ch_versions // channel: [ versions.yml ] + versions // channel: [ versions.yml ] } diff --git a/subworkflows/nf-core/bam_rseqc/meta.yml b/subworkflows/nf-core/bam_rseqc/meta.yml index 2fef88737..6e76ff560 100644 --- a/subworkflows/nf-core/bam_rseqc/meta.yml +++ b/subworkflows/nf-core/bam_rseqc/meta.yml @@ -46,107 +46,107 @@ input: List of rseqc modules to run e.g. [ 'bam_stat', 'infer_experiment' ] output: - - ch_bamstat: + - bamstat_txt: type: file description: bam statistics report pattern: "*.bam_stat.txt" - - ch_innerdistance: + - innerdistance_all: type: file description: All the output files from RSEQC_INNERDISTANCE pattern: "*.{txt,pdf,R}" - - ch_innerdistance_distance: + - innerdistance_distance: type: file description: the inner distances pattern: "*.inner_distance.txt" - - ch_innerdistance_freq: + - innerdistance_freq: type: file description: frequencies of different insert sizes pattern: "*.inner_distance_freq.txt" - - ch_innerdistance_mean: + - innerdistance_mean: type: file description: mean/median values of inner distances pattern: "*.inner_distance_mean.txt" - - ch_innerdistance_pdf: + - innerdistance_pdf: type: file description: distribution plot of inner distances pattern: "*.inner_distance_plot.pdf" - - ch_innerdistance_rscript: + - innerdistance_rscript: type: file description: script to reproduce the plot pattern: "*.inner_distance_plot.R" - - ch_inferexperiment: + - inferexperiment_txt: type: file description: infer_experiment results report pattern: "*.infer_experiment.txt" - - ch_junctionannotation: + - junctionannotation_all: type: file description: All the output files from RSEQC_JUNCTIONANNOTATION pattern: "*.{bed,xls,pdf,R,log}" - - ch_junctionannotation_bed: + - junctionannotation_bed: type: file description: bed file of annotated junctions pattern: "*.junction.bed" - - ch_junctionannotation_interact_bed: + - junctionannotation_interact_bed: type: file description: Interact bed file pattern: "*.Interact.bed" - - ch_junctionannotation_xls: + - junctionannotation_xls: type: file description: xls file with junction information pattern: "*.xls" - - ch_junctionannotation_pdf: + - junctionannotation_pdf: type: file description: junction plot pattern: "*.junction.pdf" - - ch_junctionannotation_events_pdf: + - junctionannotation_events_pdf: type: file description: events plot pattern: "*.events.pdf" - - ch_junctionannotation_rscript: + - junctionannotation_rscript: type: file description: Rscript to reproduce the plots pattern: "*.r" - - ch_junctionannotation_log: + - junctionannotation_log: type: file description: Log file generated by tool pattern: "*.log" - - ch_junctionsaturation: + - junctionsaturation_all: type: file description: All the output files from RSEQC_JUNCTIONSATURATION pattern: "*.{pdf,R}" - - ch_junctionsaturation_pdf: + - junctionsaturation_pdf: type: file description: Junction saturation report pattern: "*.pdf" - - ch_junctionsaturation_rscript: + - junctionsaturation_rscript: type: file description: Junction saturation R-script pattern: "*.r" - - ch_readdistribution: + - readdistribution_txt: type: file description: the read distribution report pattern: "*.read_distribution.txt" - - ch_readduplication: + - readduplication_all: type: file description: All the output files from RSEQC_READDUPLICATION pattern: "*.{xls,pdf,R}" - - ch_readduplication_seq_xls: + - readduplication_seq_xls: type: file description: Read duplication rate determined from mapping position of read pattern: "*seq.DupRate.xls" - - ch_readduplication_pos_xls: + - readduplication_pos_xls: type: file description: Read duplication rate determined from sequence of read pattern: "*pos.DupRate.xls" - - ch_readduplication_pdf: + - readduplication_pdf: type: file description: plot of duplication rate pattern: "*.pdf" - - ch_readduplication_rscript: + - readduplication_rscript: type: file description: script to reproduce the plot pattern: "*.R" - - ch_tin: + - tin_txt: type: file description: TXT file containing tin.py results summary pattern: "*.txt" diff --git a/subworkflows/nf-core/bam_rseqc/tests/main.nf.test b/subworkflows/nf-core/bam_rseqc/tests/main.nf.test index bd84bebff..cc1cea4ec 100644 --- a/subworkflows/nf-core/bam_rseqc/tests/main.nf.test +++ b/subworkflows/nf-core/bam_rseqc/tests/main.nf.test @@ -38,26 +38,26 @@ nextflow_workflow { then { assertAll( { assert workflow.success}, - { assert snapshot(workflow.out.ch_bamstat).match("bamstat")}, + { assert snapshot(workflow.out.bamstat_txt).match("bamstat_txt")}, - { assert snapshot(workflow.out.ch_innerdistance.findAll { it[1].endsWith('.pdf') == false }).match("inner_distance")}, - { assert workflow.out.ch_innerdistance.any { it[1].endsWith('.pdf') && file(it[1]).exists() } }, + { assert snapshot(workflow.out.innerdistance_all.findAll { it[1].endsWith('.pdf') == false }).match("innerdistance_all")}, + { assert workflow.out.innerdistance_all.any { it[1].endsWith('.pdf') && file(it[1]).exists() } }, - { assert snapshot(workflow.out.ch_inferexperiment).match("inferexperiment")}, + { assert snapshot(workflow.out.inferexperiment_txt).match("inferexperiment_txt")}, - { assert snapshot(workflow.out.ch_junctionannotation.findAll { + { assert snapshot(workflow.out.junctionannotation_all.findAll { it[1].endsWith('.xls') == false && - it[1].endsWith('.r') == false }).match("junction_annotation")}, + it[1].endsWith('.r') == false }).match("junctionannotation_all")}, - { assert snapshot(workflow.out.ch_junctionsaturation.findAll { it[1].endsWith('.pdf') == false }).match("junction_saturation")}, - { assert workflow.out.ch_junctionsaturation.any { it[1].endsWith('.pdf') && file(it[1]).exists() } }, + { assert snapshot(workflow.out.junctionsaturation_all.findAll { it[1].endsWith('.pdf') == false }).match("junctionsaturation_all")}, + { assert workflow.out.junctionsaturation_all.any { it[1].endsWith('.pdf') && file(it[1]).exists() } }, - { assert snapshot(workflow.out.ch_readdistribution).match("readdistribution")}, + { assert snapshot(workflow.out.readdistribution_txt).match("readdistribution_txt")}, - { assert snapshot(workflow.out.ch_readduplication.findAll { it[1].endsWith('.pdf') == false }).match("read_duplication")}, - { assert workflow.out.ch_readduplication.any { it[1].endsWith('.pdf') && file(it[1]).exists() } }, + { assert snapshot(workflow.out.readduplication_all.findAll { it[1].endsWith('.pdf') == false }).match("readduplication_all")}, + { assert workflow.out.readduplication_all.any { it[1].endsWith('.pdf') && file(it[1]).exists() } }, - { assert snapshot(workflow.out.ch_tin).match("tin")}, + { assert snapshot(workflow.out.tin_txt).match("tin_txt")}, { assert snapshot(workflow.out.versions).match("versions")}, ) } @@ -84,14 +84,14 @@ nextflow_workflow { then { assertAll( { assert workflow.success }, - { assert workflow.out.ch_bamstat.size() == 0 }, - { assert workflow.out.ch_innerdistance.size() == 0 }, - { assert workflow.out.ch_inferexperiment.size() == 0 }, - { assert workflow.out.ch_junctionannotation.size() == 0 }, - { assert workflow.out.ch_junctionsaturation.size() == 0 }, - { assert workflow.out.ch_readdistribution.size() == 0 }, - { assert workflow.out.ch_readduplication.size() == 0 }, - { assert workflow.out.ch_tin.size() == 0 }, + { assert workflow.out.bamstat_txt.size() == 0 }, + { assert workflow.out.innerdistance_all.size() == 0 }, + { assert workflow.out.inferexperiment_txt.size() == 0 }, + { assert workflow.out.junctionannotation_all.size() == 0 }, + { assert workflow.out.junctionsaturation_all.size() == 0 }, + { assert workflow.out.readdistribution_txt.size() == 0 }, + { assert workflow.out.readduplication_all.size() == 0 }, + { assert workflow.out.tin_txt.size() == 0 }, { assert workflow.out.versions.size() == 0 }, ) } diff --git a/subworkflows/nf-core/bam_rseqc/tests/main.nf.test.snap b/subworkflows/nf-core/bam_rseqc/tests/main.nf.test.snap index f80f50b2e..8bd21052f 100644 --- a/subworkflows/nf-core/bam_rseqc/tests/main.nf.test.snap +++ b/subworkflows/nf-core/bam_rseqc/tests/main.nf.test.snap @@ -1,36 +1,68 @@ { - "inner_distance": { + "bamstat_txt": { "content": [ [ [ { "id": "test" }, - "test.inner_distance.txt:md5,a1acc9def0f64a5500d4c4cb47cbe32b" - ], + "test.bam_stat.txt:md5,2675857864c1d1139b2a19d25dc36b09" + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2023-12-08T14:37:45.671792186" + }, + "readduplication_all": { + "content": [ + [ [ { "id": "test" }, - "test.inner_distance_freq.txt:md5,3fc037501f5899b5da009c8ce02fc25e" + "test.DupRate_plot.r:md5,3c0325095cee4835b921e57d61c23dca" ], [ { "id": "test" }, - "test.inner_distance_mean.txt:md5,58398b7d5a29a5e564f9e3c50b55996c" + "test.pos.DupRate.xls:md5,a859bc2031d46bf1cc4336205847caa3" ], [ { "id": "test" }, - "test.inner_distance_plot.r:md5,5859fbd5b42046d47e8b9aa85077f4ea" + "test.seq.DupRate.xls:md5,ee8783399eec5a18522a6f08bece338b" ] ] ], - "timestamp": "2023-12-08T14:37:45.734509133" + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2023-12-08T14:37:45.927253593" }, - "junction_saturation": { + "tin_txt": { + "content": [ + [ + [ + { + "id": "test" + }, + "test.paired_end.sorted.summary.txt:md5,9d98447e178b89a89f6f5aba7a772fe6" + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-06T15:29:37.545261" + }, + "junctionsaturation_all": { "content": [ [ [ @@ -41,6 +73,10 @@ ] ] ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, "timestamp": "2023-12-08T14:37:45.825157699" }, "versions": { @@ -56,96 +92,96 @@ "versions.yml:md5,fd16f1098b9c285f3ea7bd3daf4e8f10" ] ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, "timestamp": "2023-12-14T14:58:10.874440924" }, - "tin": { - "content": [ - [ - [ - { - "id": "test" - }, - "test.paired_end.sorted.summary.txt:md5,9d98447e178b89a89f6f5aba7a772fe6" - ] - ] - ], - "timestamp": "2023-12-08T14:37:45.935155313" - }, - "bamstat": { + "readdistribution_txt": { "content": [ [ [ { "id": "test" }, - "test.bam_stat.txt:md5,2675857864c1d1139b2a19d25dc36b09" + "test.read_distribution.txt:md5,56893fdc0809d968629a363551a1655f" ] ] ], - "timestamp": "2023-12-08T14:37:45.671792186" + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2023-12-08T14:37:45.841855468" }, - "inferexperiment": { + "innerdistance_all": { "content": [ [ [ { "id": "test" }, - "test.infer_experiment.txt:md5,f9d0bfc239df637cd8aeda40ade3c59a" - ] - ] - ], - "timestamp": "2023-12-08T14:37:45.747507043" - }, - "read_duplication": { - "content": [ - [ + "test.inner_distance.txt:md5,a1acc9def0f64a5500d4c4cb47cbe32b" + ], [ { "id": "test" }, - "test.DupRate_plot.r:md5,3c0325095cee4835b921e57d61c23dca" + "test.inner_distance_freq.txt:md5,3fc037501f5899b5da009c8ce02fc25e" ], [ { "id": "test" }, - "test.pos.DupRate.xls:md5,a859bc2031d46bf1cc4336205847caa3" + "test.inner_distance_mean.txt:md5,58398b7d5a29a5e564f9e3c50b55996c" ], [ { "id": "test" }, - "test.seq.DupRate.xls:md5,ee8783399eec5a18522a6f08bece338b" + "test.inner_distance_plot.r:md5,5859fbd5b42046d47e8b9aa85077f4ea" ] ] ], - "timestamp": "2023-12-08T14:37:45.927253593" + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2023-12-08T14:37:45.734509133" }, - "junction_annotation": { + "inferexperiment_txt": { "content": [ [ [ { "id": "test" }, - "test.junction_annotation.log:md5,d75e0f5d62fada8aa9449991b209554c" + "test.infer_experiment.txt:md5,f9d0bfc239df637cd8aeda40ade3c59a" ] ] ], - "timestamp": "2023-12-14T17:42:43.31783911" + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-06T15:29:37.537104" }, - "readdistribution": { + "junctionannotation_all": { "content": [ [ [ { "id": "test" }, - "test.read_distribution.txt:md5,56893fdc0809d968629a363551a1655f" + "test.junction_annotation.log:md5,d75e0f5d62fada8aa9449991b209554c" ] ] ], - "timestamp": "2023-12-08T14:37:45.841855468" + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2023-12-14T17:42:43.31783911" } } \ No newline at end of file From 6c535ef667b2055cca21f4f8f3e713f9cc7b5047 Mon Sep 17 00:00:00 2001 From: maxulysse Date: Tue, 13 Feb 2024 12:01:49 +0100 Subject: [PATCH 047/634] fix bam_rseqc usage --- workflows/rnaseq/main.nf | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/workflows/rnaseq/main.nf b/workflows/rnaseq/main.nf index a9ca03ed2..377999707 100755 --- a/workflows/rnaseq/main.nf +++ b/workflows/rnaseq/main.nf @@ -656,19 +656,19 @@ workflow NFCORE_RNASEQ { ch_gene_bed, rseqc_modules ) - ch_multiqc_files = ch_multiqc_files.mix(BAM_RSEQC.out.ch_bamstat.collect{it[1]}) - ch_multiqc_files = ch_multiqc_files.mix(BAM_RSEQC.out.ch_inferexperiment.collect{it[1]}) - ch_multiqc_files = ch_multiqc_files.mix(BAM_RSEQC.out.ch_innerdistance_freq.collect{it[1]}) - ch_multiqc_files = ch_multiqc_files.mix(BAM_RSEQC.out.ch_junctionannotation_log.collect{it[1]}) - ch_multiqc_files = ch_multiqc_files.mix(BAM_RSEQC.out.ch_junctionsaturation_rscript.collect{it[1]}) - ch_multiqc_files = ch_multiqc_files.mix(BAM_RSEQC.out.ch_readdistribution.collect{it[1]}) - ch_multiqc_files = ch_multiqc_files.mix(BAM_RSEQC.out.ch_readduplication_pos_xls.collect{it[1]}) - ch_multiqc_files = ch_multiqc_files.mix(BAM_RSEQC.out.ch_tin.collect{it[1]}) + ch_multiqc_files = ch_multiqc_files.mix(BAM_RSEQC.out.bamstat_txt.collect{it[1]}) + ch_multiqc_files = ch_multiqc_files.mix(BAM_RSEQC.out.inferexperiment_txt.collect{it[1]}) + ch_multiqc_files = ch_multiqc_files.mix(BAM_RSEQC.out.innerdistance_freq.collect{it[1]}) + ch_multiqc_files = ch_multiqc_files.mix(BAM_RSEQC.out.junctionannotation_log.collect{it[1]}) + ch_multiqc_files = ch_multiqc_files.mix(BAM_RSEQC.out.junctionsaturation_rscript.collect{it[1]}) + ch_multiqc_files = ch_multiqc_files.mix(BAM_RSEQC.out.readdistribution_txt.collect{it[1]}) + ch_multiqc_files = ch_multiqc_files.mix(BAM_RSEQC.out.readduplication_pos_xls.collect{it[1]}) + ch_multiqc_files = ch_multiqc_files.mix(BAM_RSEQC.out.tin_txt.collect{it[1]}) ch_versions = ch_versions.mix(BAM_RSEQC.out.versions) BAM_RSEQC .out - .ch_inferexperiment + .inferexperiment_txt .map { meta, strand_log -> def inferred_strand = getInferexperimentStrandedness(strand_log, 30) From 509d4c7499cd9ac4ee70351a644bb2735450412b Mon Sep 17 00:00:00 2001 From: maxulysse Date: Tue, 13 Feb 2024 12:10:15 +0100 Subject: [PATCH 048/634] update utils_nfcore_pipeline subworkflows --- modules.json | 2 +- .../nf-core/utils_nfcore_pipeline/main.nf | 49 ++++++++++++++++++- .../nf-core/utils_nfcore_pipeline/meta.yml | 6 ++- .../tests/main.function.nf.test | 20 ++++++++ .../tests/main.function.nf.test.snap | 4 ++ .../tests/main.workflow.nf.test | 8 +++ 6 files changed, 85 insertions(+), 4 deletions(-) diff --git a/modules.json b/modules.json index 99cd7b005..50a24afa2 100644 --- a/modules.json +++ b/modules.json @@ -299,7 +299,7 @@ }, "utils_nfcore_pipeline": { "branch": "master", - "git_sha": "73b63c8e510107010ab13b68cf31189d6cdca8cb", + "git_sha": "262b17ed2aad591039f914951659177e6c39a8d8", "installed_by": ["subworkflows"] }, "utils_nfvalidation_plugin": { diff --git a/subworkflows/nf-core/utils_nfcore_pipeline/main.nf b/subworkflows/nf-core/utils_nfcore_pipeline/main.nf index 6d805bb3f..a8b55d6fe 100644 --- a/subworkflows/nf-core/utils_nfcore_pipeline/main.nf +++ b/subworkflows/nf-core/utils_nfcore_pipeline/main.nf @@ -13,8 +13,12 @@ import nextflow.extension.FilesEx workflow UTILS_NFCORE_PIPELINE { + take: + nextflow_cli_args + main: valid_config = checkConfigProvided() + checkProfileProvided(nextflow_cli_args) emit: valid_config @@ -43,6 +47,20 @@ def checkConfigProvided() { return valid_config } +// +// Exit pipeline if --profile contains spaces +// +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" + } + 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" + } +} + // // Citation string for pipeline // @@ -228,10 +246,33 @@ def logColours(monochrome_logs=true) { return colorcodes } +// +// Attach the multiqc report to email +// +def attachMultiqcReport(multiqc_report) { + def mqc_report = null + try { + if (workflow.success) { + 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" + } + mqc_report = mqc_report[0] + } + } + } catch (all) { + if (multiqc_report) { + log.warn "[$workflow.manifest.name] Could not attach MultiQC report to summary email" + } + } + return mqc_report +} + // // Construct and send completion email // -def completionEmail(summary_params, email, email_on_fail, plaintext_email, outdir, monochrome_logs=true) { +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" @@ -269,6 +310,9 @@ def completionEmail(summary_params, email, email_on_fail, plaintext_email, outdi email_fields['projectDir'] = workflow.projectDir email_fields['summary'] = summary << misc_fields + // On success try attach the multiqc report + def mqc_report = attachMultiqcReport(multiqc_report) + // Check if we are only sending emails on failure def email_address = email if (!email && email_on_fail && !workflow.success) { @@ -287,7 +331,8 @@ def completionEmail(summary_params, email, email_on_fail, plaintext_email, outdi def email_html = html_template.toString() // Render the sendmail template - def smail_fields = [ email: email_address, subject: subject, email_txt: email_txt, email_html: email_html, projectDir: "${workflow.projectDir}" ] + 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 sf = new File("${workflow.projectDir}/assets/sendmail_template.txt") def sendmail_template = engine.createTemplate(sf).make(smail_fields) def sendmail_html = sendmail_template.toString() diff --git a/subworkflows/nf-core/utils_nfcore_pipeline/meta.yml b/subworkflows/nf-core/utils_nfcore_pipeline/meta.yml index dd1462b23..d08d24342 100644 --- a/subworkflows/nf-core/utils_nfcore_pipeline/meta.yml +++ b/subworkflows/nf-core/utils_nfcore_pipeline/meta.yml @@ -7,7 +7,11 @@ keywords: - initialise - version components: [] -input: [] +input: + - nextflow_cli_args: + type: list + description: | + Nextflow CLI positional arguments output: - success: type: boolean diff --git a/subworkflows/nf-core/utils_nfcore_pipeline/tests/main.function.nf.test b/subworkflows/nf-core/utils_nfcore_pipeline/tests/main.function.nf.test index f7ea05fcd..1dc317f8f 100644 --- a/subworkflows/nf-core/utils_nfcore_pipeline/tests/main.function.nf.test +++ b/subworkflows/nf-core/utils_nfcore_pipeline/tests/main.function.nf.test @@ -21,6 +21,26 @@ nextflow_function { } } + test("Test Function checkProfileProvided") { + + function "checkProfileProvided" + + when { + function { + """ + input[0] = [] + """ + } + } + + then { + assertAll( + { assert function.success }, + { assert snapshot(function.result).match() } + ) + } + } + test("Test Function workflowCitation") { function "workflowCitation" diff --git a/subworkflows/nf-core/utils_nfcore_pipeline/tests/main.function.nf.test.snap b/subworkflows/nf-core/utils_nfcore_pipeline/tests/main.function.nf.test.snap index afb9ab4dc..10f948e62 100644 --- a/subworkflows/nf-core/utils_nfcore_pipeline/tests/main.function.nf.test.snap +++ b/subworkflows/nf-core/utils_nfcore_pipeline/tests/main.function.nf.test.snap @@ -1,4 +1,8 @@ { + "Test Function checkProfileProvided": { + "content": null, + "timestamp": "2024-02-09T15:43:55.145717" + }, "Test Function checkConfigProvided": { "content": [ true diff --git a/subworkflows/nf-core/utils_nfcore_pipeline/tests/main.workflow.nf.test b/subworkflows/nf-core/utils_nfcore_pipeline/tests/main.workflow.nf.test index c5f7776a6..8940d32d1 100644 --- a/subworkflows/nf-core/utils_nfcore_pipeline/tests/main.workflow.nf.test +++ b/subworkflows/nf-core/utils_nfcore_pipeline/tests/main.workflow.nf.test @@ -11,6 +11,14 @@ nextflow_workflow { test("Should run without failures") { + when { + workflow { + """ + input[0] = [] + """ + } + } + then { assertAll( { assert workflow.success }, From ef74fd87e1c9885b8f2ac8542837ca9efeeae0a4 Mon Sep 17 00:00:00 2001 From: maxulysse Date: Tue, 13 Feb 2024 12:17:59 +0100 Subject: [PATCH 049/634] fix usage of UTILS_NFCORE_PIPELINE --- subworkflows/local/utils_nfcore_rnaseq_pipeline/main.nf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/subworkflows/local/utils_nfcore_rnaseq_pipeline/main.nf b/subworkflows/local/utils_nfcore_rnaseq_pipeline/main.nf index 9c7b42efb..850dc5bd7 100644 --- a/subworkflows/local/utils_nfcore_rnaseq_pipeline/main.nf +++ b/subworkflows/local/utils_nfcore_rnaseq_pipeline/main.nf @@ -60,7 +60,7 @@ workflow PIPELINE_INITIALISATION { // // Check config provided to the pipeline // - UTILS_NFCORE_PIPELINE () + UTILS_NFCORE_PIPELINE (args) // // Custom validation for pipeline parameters From 5cb9122ca112844640259bc730d7a2b651d1bf17 Mon Sep 17 00:00:00 2001 From: maxulysse Date: Tue, 13 Feb 2024 12:37:14 +0100 Subject: [PATCH 050/634] update CHANGELOG --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index f87b28aed..0e6a899ab 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 - [PR #1186](https://github.com/nf-core/rnaseq/pull/1186) - Properly update qualimap/rnaseq module (ie not patch) - [PR #1201](https://github.com/nf-core/rnaseq/pull/1201) - Template update for nf-core/tools v2.12 - [PR #1206](https://github.com/nf-core/rnaseq/pull/1206) - Remove `lib/` directory and `modules.config` +- [PR #1212](https://github.com/nf-core/rnaseq/pull/1212) - Update all modules and subworkflows to latest versions ### Parameters From b331729da77dabaafcdbcdb1e60831f2abda91cb Mon Sep 17 00:00:00 2001 From: maxulysse Date: Tue, 13 Feb 2024 13:44:31 +0100 Subject: [PATCH 051/634] update more modules --- modules.json | 10 ++-- .../samtools/flagstat/tests/main.nf.test | 12 ++--- .../samtools/flagstat/tests/main.nf.test.snap | 20 ++++++- .../samtools/idxstats/tests/main.nf.test | 14 ++--- .../samtools/idxstats/tests/main.nf.test.snap | 20 ++++++- .../nf-core/samtools/index/tests/main.nf.test | 36 ++++++------- .../samtools/index/tests/main.nf.test.snap | 54 +++++++++++++++++-- .../nf-core/samtools/sort/tests/main.nf.test | 33 +++++------- .../samtools/sort/tests/main.nf.test.snap | 39 ++++++++++---- .../nf-core/samtools/stats/tests/main.nf.test | 53 +++++++----------- .../samtools/stats/tests/main.nf.test.snap | 24 ++++++--- 11 files changed, 198 insertions(+), 117 deletions(-) diff --git a/modules.json b/modules.json index 50a24afa2..73ec02e1d 100644 --- a/modules.json +++ b/modules.json @@ -152,17 +152,17 @@ }, "samtools/flagstat": { "branch": "master", - "git_sha": "ce0b1aed7d504883061e748f492a31bf44c5777c", + "git_sha": "8d8f0ae52d6c9342bd41c33dda0b74b07e32153d", "installed_by": ["bam_stats_samtools"] }, "samtools/idxstats": { "branch": "master", - "git_sha": "ce0b1aed7d504883061e748f492a31bf44c5777c", + "git_sha": "8d8f0ae52d6c9342bd41c33dda0b74b07e32153d", "installed_by": ["bam_stats_samtools"] }, "samtools/index": { "branch": "master", - "git_sha": "ce0b1aed7d504883061e748f492a31bf44c5777c", + "git_sha": "8d8f0ae52d6c9342bd41c33dda0b74b07e32153d", "installed_by": [ "bam_dedup_stats_samtools_umitools", "bam_markduplicates_picard", @@ -171,12 +171,12 @@ }, "samtools/sort": { "branch": "master", - "git_sha": "ce0b1aed7d504883061e748f492a31bf44c5777c", + "git_sha": "8d8f0ae52d6c9342bd41c33dda0b74b07e32153d", "installed_by": ["bam_sort_stats_samtools"] }, "samtools/stats": { "branch": "master", - "git_sha": "ec833ac4c29db6005d18baccf3306f557c46b006", + "git_sha": "8d8f0ae52d6c9342bd41c33dda0b74b07e32153d", "installed_by": ["bam_stats_samtools"] }, "sortmerna": { diff --git a/modules/nf-core/samtools/flagstat/tests/main.nf.test b/modules/nf-core/samtools/flagstat/tests/main.nf.test index c8dd8dc9f..24c3c04b0 100644 --- a/modules/nf-core/samtools/flagstat/tests/main.nf.test +++ b/modules/nf-core/samtools/flagstat/tests/main.nf.test @@ -16,11 +16,11 @@ nextflow_process { } process { """ - input[0] = [ + input[0] = Channel.of([ [ id:'test', single_end:false ], // meta map - file(params.test_data['sarscov2']['illumina']['test_paired_end_sorted_bam'], checkIfExists: true), - file(params.test_data['sarscov2']['illumina']['test_paired_end_sorted_bam_bai'], checkIfExists: true) - ] + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam.bai', checkIfExists: true) + ]) """ } } @@ -28,8 +28,8 @@ nextflow_process { then { assertAll ( { assert process.success }, - { assert snapshot(process.out.flagstat).match() }, - { assert path(process.out.versions.get(0)).getText().contains("samtools") } + { assert snapshot(process.out.flagstat).match("flagstat") }, + { assert snapshot(process.out.versions).match("versions") } ) } } diff --git a/modules/nf-core/samtools/flagstat/tests/main.nf.test.snap b/modules/nf-core/samtools/flagstat/tests/main.nf.test.snap index 880019f2f..43f3bc2c3 100644 --- a/modules/nf-core/samtools/flagstat/tests/main.nf.test.snap +++ b/modules/nf-core/samtools/flagstat/tests/main.nf.test.snap @@ -1,5 +1,5 @@ { - "BAM": { + "flagstat": { "content": [ [ [ @@ -11,6 +11,22 @@ ] ] ], - "timestamp": "2023-11-14T15:49:22.577133" + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.04.3" + }, + "timestamp": "2024-02-12T18:31:37.783927" + }, + "versions": { + "content": [ + [ + "versions.yml:md5,27815e477dcca61cd6b5ca2a94993965" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.04.3" + }, + "timestamp": "2024-02-12T18:31:37.788139" } } \ No newline at end of file diff --git a/modules/nf-core/samtools/idxstats/tests/main.nf.test b/modules/nf-core/samtools/idxstats/tests/main.nf.test index f6c92150c..a2dcb27c7 100644 --- a/modules/nf-core/samtools/idxstats/tests/main.nf.test +++ b/modules/nf-core/samtools/idxstats/tests/main.nf.test @@ -8,7 +8,7 @@ nextflow_process { tag "samtools" tag "samtools/idxstats" - test("BAM") { + test("bam") { when { params { @@ -16,11 +16,11 @@ nextflow_process { } process { """ - input[0] = [ + input[0] = Channel.of([ [ id:'test', single_end:false ], // meta map - file(params.test_data['sarscov2']['illumina']['test_paired_end_sorted_bam'], checkIfExists: true), - file(params.test_data['sarscov2']['illumina']['test_paired_end_sorted_bam_bai'], checkIfExists: true) - ] + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam.bai', checkIfExists: true) + ]) """ } } @@ -28,8 +28,8 @@ nextflow_process { then { assertAll ( { assert process.success }, - { assert snapshot(process.out.idxstats).match() }, - { assert path(process.out.versions.get(0)).getText().contains("samtools") } + { assert snapshot(process.out.idxstats).match("idxstats") }, + { assert snapshot(process.out.versions).match("versions") } ) } } diff --git a/modules/nf-core/samtools/idxstats/tests/main.nf.test.snap b/modules/nf-core/samtools/idxstats/tests/main.nf.test.snap index 4c6c12bd5..3864fd70a 100644 --- a/modules/nf-core/samtools/idxstats/tests/main.nf.test.snap +++ b/modules/nf-core/samtools/idxstats/tests/main.nf.test.snap @@ -1,5 +1,17 @@ { - "BAM": { + "versions": { + "content": [ + [ + "versions.yml:md5,12c42ca48b15e8a3d2a05e99958f1cb9" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.04.3" + }, + "timestamp": "2024-02-12T18:36:41.565552" + }, + "idxstats": { "content": [ [ [ @@ -11,6 +23,10 @@ ] ] ], - "timestamp": "2023-11-14T15:52:19.875194" + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.04.3" + }, + "timestamp": "2024-02-12T18:36:41.561026" } } \ No newline at end of file diff --git a/modules/nf-core/samtools/index/tests/main.nf.test b/modules/nf-core/samtools/index/tests/main.nf.test index c76a9169f..bb7756d1c 100644 --- a/modules/nf-core/samtools/index/tests/main.nf.test +++ b/modules/nf-core/samtools/index/tests/main.nf.test @@ -8,7 +8,7 @@ nextflow_process { tag "samtools" tag "samtools/index" - test("sarscov2 [BAI]") { + test("bai") { when { params { @@ -16,10 +16,10 @@ nextflow_process { } process { """ - input[0] = [ - [ id:'test' ], // meta map - file(params.test_data['sarscov2']['illumina']['test_paired_end_sorted_bam'], checkIfExists: true) - ] + 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) + ]) """ } } @@ -28,12 +28,12 @@ nextflow_process { assertAll ( { assert process.success }, { assert snapshot(process.out.bai).match("bai") }, - { assert path(process.out.versions.get(0)).getText().contains("samtools") } + { assert snapshot(process.out.versions).match("bai_versions") } ) } } - test("homo_sapiens [CRAI]") { + test("crai") { when { params { @@ -41,10 +41,10 @@ nextflow_process { } process { """ - input[0] = [ - [ id:'test' ], // meta map - file(params.test_data['homo_sapiens']['illumina']['test_paired_end_recalibrated_sorted_cram'], checkIfExists: true) - ] + input[0] = Channel.of([ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/cram/test.paired_end.recalibrated.sorted.cram', checkIfExists: true) + ]) """ } } @@ -53,12 +53,12 @@ nextflow_process { assertAll ( { assert process.success }, { assert snapshot(process.out.crai).match("crai") }, - { assert path(process.out.versions.get(0)).getText().contains("samtools") } + { assert snapshot(process.out.versions).match("crai_versions") } ) } } - test("homo_sapiens [CSI]") { + test("csi") { config "./csi.nextflow.config" @@ -68,10 +68,10 @@ nextflow_process { } process { """ - input[0] = [ - [ id:'test' ], // meta map - file(params.test_data['sarscov2']['illumina']['test_paired_end_sorted_bam'], checkIfExists: true) - ] + 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) + ]) """ } } @@ -80,7 +80,7 @@ nextflow_process { assertAll ( { assert process.success }, { assert path(process.out.csi.get(0).get(1)).exists() }, - { assert path(process.out.versions.get(0)).getText().contains("samtools") } + { assert snapshot(process.out.versions).match("csi_versions") } ) } } 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 b3baee7fb..48ac6caf7 100644 --- a/modules/nf-core/samtools/index/tests/main.nf.test.snap +++ b/modules/nf-core/samtools/index/tests/main.nf.test.snap @@ -1,28 +1,74 @@ { + "crai_versions": { + "content": [ + [ + "versions.yml:md5,d8b295c77d732bcea92fa2aa0374d127" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.04.3" + }, + "timestamp": "2024-02-12T18:41:38.453554" + }, + "csi_versions": { + "content": [ + [ + "versions.yml:md5,d8b295c77d732bcea92fa2aa0374d127" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.04.3" + }, + "timestamp": "2024-02-12T18:42:06.000737" + }, "crai": { "content": [ [ [ { - "id": "test" + "id": "test", + "single_end": false }, "test.paired_end.recalibrated.sorted.cram.crai:md5,14bc3bd5c89cacc8f4541f9062429029" ] ] ], - "timestamp": "2023-11-15T15:17:37.30801" + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.04.3" + }, + "timestamp": "2024-02-12T18:41:38.446424" }, "bai": { "content": [ [ [ { - "id": "test" + "id": "test", + "single_end": false }, "test.paired_end.sorted.bam.bai:md5,704c10dd1326482448ca3073fdebc2f4" ] ] ], - "timestamp": "2023-11-15T15:17:30.869234" + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.04.3" + }, + "timestamp": "2024-02-12T18:40:46.579747" + }, + "bai_versions": { + "content": [ + [ + "versions.yml:md5,d8b295c77d732bcea92fa2aa0374d127" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.04.3" + }, + "timestamp": "2024-02-12T18:40:46.583687" } } \ No newline at end of file diff --git a/modules/nf-core/samtools/sort/tests/main.nf.test b/modules/nf-core/samtools/sort/tests/main.nf.test index abb80978e..31e24b88b 100644 --- a/modules/nf-core/samtools/sort/tests/main.nf.test +++ b/modules/nf-core/samtools/sort/tests/main.nf.test @@ -8,7 +8,7 @@ nextflow_process { tag "samtools" tag "samtools/sort" - test("test_samtools_sort") { + test("bam") { config "./nextflow.config" @@ -18,12 +18,10 @@ nextflow_process { } process { """ - input[0] = [ - [ id:'test', single_end:false ], - [ - file(params.test_data['sarscov2']['illumina']['test_paired_end_bam'], checkIfExists: true) - ] - ] + input[0] = Channel.of([ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.bam', checkIfExists: true) + ]) """ } } @@ -34,10 +32,9 @@ nextflow_process { { assert snapshot(process.out).match() } ) } - } - test("test_samtools_sort_stub") { + test("bam_stub") { config "./nextflow.config" options "-stub-run" @@ -48,12 +45,10 @@ nextflow_process { } process { """ - input[0] = [ - [ id:'test', single_end:false ], - [ - file(params.test_data['sarscov2']['illumina']['test_paired_end_bam'], checkIfExists: true) - ] - ] + input[0] = Channel.of([ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.bam', checkIfExists: true) + ]) """ } } @@ -61,13 +56,9 @@ nextflow_process { then { assertAll ( { assert process.success }, - { assert snapshot( - file(process.out.bam[0][1]).name, - process.out.versions - ).match() } + { assert snapshot(file(process.out.bam[0][1]).name).match("bam_stub_bam") }, + { assert snapshot(process.out.versions).match("bam_stub_versions") } ) } - } - } diff --git a/modules/nf-core/samtools/sort/tests/main.nf.test.snap b/modules/nf-core/samtools/sort/tests/main.nf.test.snap index ff7222597..418609249 100644 --- a/modules/nf-core/samtools/sort/tests/main.nf.test.snap +++ b/modules/nf-core/samtools/sort/tests/main.nf.test.snap @@ -1,5 +1,27 @@ { - "test_samtools_sort": { + "bam_stub_bam": { + "content": [ + "test.sorted.bam" + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.04.3" + }, + "timestamp": "2024-02-12T19:21:04.364044" + }, + "bam_stub_versions": { + "content": [ + [ + "versions.yml:md5,33b6a403dc19a0d28e4219ccab0a1d80" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.04.3" + }, + "timestamp": "2024-02-12T19:21:04.36924" + }, + "bam": { "content": [ { "0": [ @@ -34,15 +56,10 @@ ] } ], - "timestamp": "2023-12-04T11:11:22.005628301" - }, - "test_samtools_sort_stub": { - "content": [ - "test.sorted.bam", - [ - "versions.yml:md5,33b6a403dc19a0d28e4219ccab0a1d80" - ] - ], - "timestamp": "2023-12-04T17:47:22.314445935" + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.04.3" + }, + "timestamp": "2024-02-12T19:20:33.717285" } } \ No newline at end of file diff --git a/modules/nf-core/samtools/stats/tests/main.nf.test b/modules/nf-core/samtools/stats/tests/main.nf.test index 20c3efe12..e3d5cb14c 100644 --- a/modules/nf-core/samtools/stats/tests/main.nf.test +++ b/modules/nf-core/samtools/stats/tests/main.nf.test @@ -8,71 +8,58 @@ nextflow_process { tag "samtools" tag "samtools/stats" - test("SAMTOOLS STATS Should run without failures") { + test("bam") { when { params { - outdir = "$outputDir" } process { """ - // define inputs of the process here. - input[0] = [ - [ id:'test', single_end:false ], // meta map - file(params.test_data['sarscov2']['illumina']['test_paired_end_sorted_bam'], checkIfExists: true), - file(params.test_data['sarscov2']['illumina']['test_paired_end_sorted_bam_bai'], checkIfExists: true) - - ] + 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), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam.bai', checkIfExists: true) + ]) input[1] = [[],[]] """ - } } then { assertAll( - {assert process.success}, - {assert snapshot(process.out).match()} + {assert process.success}, + {assert snapshot(process.out).match()} ) } - } - test("SAMTOOLS CRAM Should run without failures") { + test("cram") { when { params { - outdir = "$outputDir" } process { """ - // define inputs of the process here - input[0] = [ - [ id:'test', single_end:false ], // meta map - file(params.test_data['homo_sapiens']['illumina']['test_paired_end_recalibrated_sorted_cram'], checkIfExists: true), - file(params.test_data['homo_sapiens']['illumina']['test_paired_end_recalibrated_sorted_cram_crai'], checkIfExists: true) - - ] - input[1] = [ - [ id:'genome' ], - file(params.test_data['homo_sapiens']['genome']['genome_fasta'], checkIfExists: true) - ] + input[0] = Channel.of([ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/cram/test.paired_end.recalibrated.sorted.cram', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/cram/test.paired_end.recalibrated.sorted.cram.crai', checkIfExists: true) + ]) + input[1] = Channel.of([ + [ id:'genome' ], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) + ]) """ } - - } then { assertAll( - {assert process.success}, - {assert snapshot(process.out).match()} + {assert process.success}, + {assert snapshot(process.out).match()} ) } - } - - } diff --git a/modules/nf-core/samtools/stats/tests/main.nf.test.snap b/modules/nf-core/samtools/stats/tests/main.nf.test.snap index 025c83a55..7d231f8fb 100644 --- a/modules/nf-core/samtools/stats/tests/main.nf.test.snap +++ b/modules/nf-core/samtools/stats/tests/main.nf.test.snap @@ -1,5 +1,5 @@ { - "SAMTOOLS STATS Should run without failures": { + "cram": { "content": [ { "0": [ @@ -8,7 +8,7 @@ "id": "test", "single_end": false }, - "test.stats:md5,045a48208b1c6f5b8af4347fe31f4def" + "test.stats:md5,dfbfa130d4a6925ddd1931dcd8354a43" ] ], "1": [ @@ -20,7 +20,7 @@ "id": "test", "single_end": false }, - "test.stats:md5,045a48208b1c6f5b8af4347fe31f4def" + "test.stats:md5,dfbfa130d4a6925ddd1931dcd8354a43" ] ], "versions": [ @@ -28,9 +28,13 @@ ] } ], - "timestamp": "2023-12-04T11:07:28.26821485" + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.04.3" + }, + "timestamp": "2024-02-12T19:36:55.883828" }, - "SAMTOOLS CRAM Should run without failures": { + "bam": { "content": [ { "0": [ @@ -39,7 +43,7 @@ "id": "test", "single_end": false }, - "test.stats:md5,dfbfa130d4a6925ddd1931dcd8354a43" + "test.stats:md5,045a48208b1c6f5b8af4347fe31f4def" ] ], "1": [ @@ -51,7 +55,7 @@ "id": "test", "single_end": false }, - "test.stats:md5,dfbfa130d4a6925ddd1931dcd8354a43" + "test.stats:md5,045a48208b1c6f5b8af4347fe31f4def" ] ], "versions": [ @@ -59,6 +63,10 @@ ] } ], - "timestamp": "2023-12-04T11:07:50.356233402" + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.04.3" + }, + "timestamp": "2024-02-12T19:34:50.591803" } } \ No newline at end of file From 3ea04dcbeff2bacc583a224c0b86a4ba5822b5e9 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Tue, 13 Feb 2024 18:21:54 +0000 Subject: [PATCH 052/634] Next phase of nf-core pseudo module integration --- bin/summarizedexperiment.r | 70 --- main.nf | 2 + modules.json | 7 +- modules/local/summarizedexperiment/main.nf | 36 -- .../summarizedexperiment/environment.yml | 9 + .../summarizedexperiment/main.nf | 36 ++ .../summarizedexperiment/meta.yml | 79 +++ .../templates/summarizedexperiment.r | 243 +++++++ .../summarizedexperiment/tests/main.nf.test | 263 ++++++++ .../tests/main.nf.test.snap | 198 ++++++ .../tests/multi_matrix.config | 7 + .../tests/single_matrix.config | 7 + .../summarizedexperiment/tests/tags.yml | 2 + .../nf-core/tximeta/tximport/environment.yml | 9 + modules/nf-core/tximeta/tximport/main.nf | 48 ++ modules/nf-core/tximeta/tximport/meta.yml | 120 ++++ .../tximeta/tximport/templates/tximport.r | 227 +++++++ .../tximeta/tximport/tests/main.nf.test | 199 ++++++ .../tximeta/tximport/tests/main.nf.test.snap | 594 ++++++++++++++++++ .../nf-core/tximeta/tximport/tests/tags.yml | 2 + .../local/quantify_pseudo_alignment/main.nf | 72 +-- .../quantify_pseudo_alignment/nextflow.config | 1 + workflows/rnaseq/main.nf | 5 +- workflows/rnaseq/nextflow.config | 8 +- 24 files changed, 2097 insertions(+), 147 deletions(-) delete mode 100755 bin/summarizedexperiment.r delete mode 100644 modules/local/summarizedexperiment/main.nf create mode 100644 modules/nf-core/summarizedexperiment/summarizedexperiment/environment.yml create mode 100644 modules/nf-core/summarizedexperiment/summarizedexperiment/main.nf create mode 100644 modules/nf-core/summarizedexperiment/summarizedexperiment/meta.yml create mode 100644 modules/nf-core/summarizedexperiment/summarizedexperiment/templates/summarizedexperiment.r create mode 100644 modules/nf-core/summarizedexperiment/summarizedexperiment/tests/main.nf.test create mode 100644 modules/nf-core/summarizedexperiment/summarizedexperiment/tests/main.nf.test.snap create mode 100644 modules/nf-core/summarizedexperiment/summarizedexperiment/tests/multi_matrix.config create mode 100644 modules/nf-core/summarizedexperiment/summarizedexperiment/tests/single_matrix.config create mode 100644 modules/nf-core/summarizedexperiment/summarizedexperiment/tests/tags.yml create mode 100644 modules/nf-core/tximeta/tximport/environment.yml create mode 100644 modules/nf-core/tximeta/tximport/main.nf create mode 100644 modules/nf-core/tximeta/tximport/meta.yml create mode 100755 modules/nf-core/tximeta/tximport/templates/tximport.r create mode 100644 modules/nf-core/tximeta/tximport/tests/main.nf.test create mode 100644 modules/nf-core/tximeta/tximport/tests/main.nf.test.snap create mode 100644 modules/nf-core/tximeta/tximport/tests/tags.yml diff --git a/bin/summarizedexperiment.r b/bin/summarizedexperiment.r deleted file mode 100755 index 767d542c7..000000000 --- a/bin/summarizedexperiment.r +++ /dev/null @@ -1,70 +0,0 @@ -#!/usr/bin/env Rscript - -# Written by Lorena Pantano and released under the MIT license. - -library(SummarizedExperiment) - -## Create SummarizedExperiment (se) object from counts - -args <- commandArgs(trailingOnly = TRUE) -if (length(args) < 3) { - stop("Usage: summarizedexperiment.r ", call. = FALSE) -} - -coldata <- args[1] -counts_fn <- args[2] -tpm_fn <- args[3] -tx2gene <- args[4] - -info <- file.info(tx2gene) -if (info$size == 0) { - tx2gene <- NULL -} else { - rowdata <- read.csv(tx2gene, sep = "\t", header = FALSE) - colnames(rowdata) <- c("tx", "gene_id", "gene_name") - tx2gene <- rowdata[, 1:2] -} - -counts <- read.csv(counts_fn, row.names = 1, sep = "\t") -counts <- counts[, 2:ncol(counts), drop = FALSE] # remove gene_name column -tpm <- read.csv(tpm_fn, row.names = 1, sep = "\t") -tpm <- tpm[, 2:ncol(tpm), drop = FALSE] # remove gene_name column - -if (length(intersect(rownames(counts), rowdata[["tx"]])) > length(intersect(rownames(counts), rowdata[["gene_id"]]))) { - by_what <- "tx" -} else { - by_what <- "gene_id" - rowdata <- unique(rowdata[, 2:3]) -} - -if (file.exists(coldata)) { - coldata <- read.csv(coldata, sep = "\t") - coldata <- coldata[match(colnames(counts), coldata[, 1]), ] - coldata <- cbind(files = fns, coldata) -} else { - message("ColData not avaliable ", coldata) - coldata <- data.frame(files = colnames(counts), names = colnames(counts)) -} - -rownames(coldata) <- coldata[["names"]] -extra <- setdiff(rownames(counts), as.character(rowdata[[by_what]])) -if (length(extra) > 0) { - rowdata <- rbind( - rowdata, - data.frame( - tx = extra, - gene_id = extra, - gene_name = extra - )[, colnames(rowdata)] - ) -} - -rowdata <- rowdata[match(rownames(counts), as.character(rowdata[[by_what]])), ] -rownames(rowdata) <- rowdata[[by_what]] -se <- SummarizedExperiment( - assays = list(counts = counts, abundance = tpm), - colData = DataFrame(coldata), - rowData = rowdata -) - -saveRDS(se, file = paste0(tools::file_path_sans_ext(counts_fn), ".rds")) diff --git a/main.nf b/main.nf index 607d02e73..4d5723dfd 100755 --- a/main.nf +++ b/main.nf @@ -99,7 +99,9 @@ workflow { // // WORKFLOW: Run nf-core/rnaseq workflow // + NFCORE_RNASEQ ( + Channel.of(file(params.input, checkIfExists: true)), PIPELINE_INITIALISATION.out.samplesheet, ch_versions, PREPARE_GENOME.out.fasta, diff --git a/modules.json b/modules.json index af1df997e..c90970e4d 100644 --- a/modules.json +++ b/modules.json @@ -209,6 +209,11 @@ "git_sha": "d062b356938ea98d29b298691adf0620d3c3bdf0", "installed_by": ["modules"] }, + "summarizedexperiment/summarizedexperiment": { + "branch": "master", + "git_sha": "105968d1c48c727834abcabc94ad6bd128e5ef27", + "installed_by": ["modules"] + }, "trimgalore": { "branch": "master", "git_sha": "3f5420aa22e00bd030a2556dfdffc9e164ec0ec5", @@ -216,7 +221,7 @@ }, "tximeta/tximport": { "branch": "master", - "git_sha": "0c75b48a381125683a458063f15a05634d81ae40", + "git_sha": "105968d1c48c727834abcabc94ad6bd128e5ef27", "installed_by": ["modules"] }, "ucsc/bedclip": { diff --git a/modules/local/summarizedexperiment/main.nf b/modules/local/summarizedexperiment/main.nf deleted file mode 100644 index f278e2301..000000000 --- a/modules/local/summarizedexperiment/main.nf +++ /dev/null @@ -1,36 +0,0 @@ -process SUMMARIZEDEXPERIMENT { - tag "$tx2gene" - label "process_medium" - - conda "bioconda::bioconductor-summarizedexperiment=1.24.0" - container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/bioconductor-summarizedexperiment:1.24.0--r41hdfd78af_0' : - 'biocontainers/bioconductor-summarizedexperiment:1.24.0--r41hdfd78af_0' }" - - input: - path counts - path tpm - path tx2gene - - output: - path "*.rds" , emit: rds - path "versions.yml", emit: versions - - when: - task.ext.when == null || task.ext.when - - script: // This script is bundled with the pipeline, in nf-core/rnaseq/bin/ - """ - summarizedexperiment.r \\ - NULL \\ - $counts \\ - $tpm \\ - $tx2gene - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - r-base: \$(echo \$(R --version 2>&1) | sed 's/^.*R version //; s/ .*\$//') - bioconductor-summarizedexperiment: \$(Rscript -e "library(SummarizedExperiment); cat(as.character(packageVersion('SummarizedExperiment')))") - END_VERSIONS - """ -} diff --git a/modules/nf-core/summarizedexperiment/summarizedexperiment/environment.yml b/modules/nf-core/summarizedexperiment/summarizedexperiment/environment.yml new file mode 100644 index 000000000..252ace791 --- /dev/null +++ b/modules/nf-core/summarizedexperiment/summarizedexperiment/environment.yml @@ -0,0 +1,9 @@ +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json +name: "summarizedexperiment_summarizedexperiment" +channels: + - conda-forge + - bioconda + - defaults +dependencies: + - "bioconda::bioconductor-summarizedexperiment=1.32.0" diff --git a/modules/nf-core/summarizedexperiment/summarizedexperiment/main.nf b/modules/nf-core/summarizedexperiment/summarizedexperiment/main.nf new file mode 100644 index 000000000..8d4ac483e --- /dev/null +++ b/modules/nf-core/summarizedexperiment/summarizedexperiment/main.nf @@ -0,0 +1,36 @@ +process SUMMARIZEDEXPERIMENT_SUMMARIZEDEXPERIMENT { + 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/bioconductor-summarizedexperiment:1.32.0--r43hdfd78af_0' : + 'biocontainers/bioconductor-summarizedexperiment:1.32.0--r43hdfd78af_0' }" + + input: + tuple val(meta), path(matrix_files) + tuple val(meta2), path(rowdata) + tuple val(meta3), path(coldata) + + output: + tuple val(meta), path("*.rds") , emit: rds + tuple val(meta), path("*.R_sessionInfo.log"), emit: log + path "versions.yml" , emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + template 'summarizedexperiment.r' + + stub: + """ + touch ${meta.id}.SummarizedExperiment.rds + touch ${meta.id}.R_sessionInfo.log + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + r: \$( R --version | sed '1!d; s/.*version //; s/ .*//' ) + END_VERSIONS + """ +} diff --git a/modules/nf-core/summarizedexperiment/summarizedexperiment/meta.yml b/modules/nf-core/summarizedexperiment/summarizedexperiment/meta.yml new file mode 100644 index 000000000..e5118d289 --- /dev/null +++ b/modules/nf-core/summarizedexperiment/summarizedexperiment/meta.yml @@ -0,0 +1,79 @@ +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/meta-schema.json +name: "summarizedexperiment_summarizedexperiment" +description: | + SummarizedExperiment container +keywords: + - gene + - transcript + - sample + - matrix + - assay +tools: + - "summarizedexperiment": + description: "The SummarizedExperiment container contains one or more assays, each represented by a matrix-like object of numeric or other mode. The rows typically represent genomic ranges of interest and the columns represent samples." + homepage: "https://bioconductor.org/packages/release/bioc/html/SummarizedExperiment.html" + documentation: "https://bioconductor.org/packages/release/bioc/vignettes/SummarizedExperiment/inst/doc/SummarizedExperiment.html" + tool_dev_url: "https://github.com/Bioconductor/SummarizedExperiment" + doi: "10.18129/B9.bioc.SummarizedExperiment" + licence: ["Artistic-2.0"] + +input: + - meta: + type: map + description: | + Groovy Map containing information related to the experiment as a whole + e.g. `[ id:'SRP123456' ]` + - matrix_files: + type: directory + description: | + One or more paths to CSV or TSV matrix files. All files must have the + same rows and columns. + pattern: "*.{csv,tsv}" + - meta2: + type: map + description: | + Groovy Map containing reference information related to the species + reference from which matrix rows are derived e.g. `[ id:'yeast' ]` + - rowdata: + type: file + description: | + Metadata on matrix features. One column must contain all matrix row + IDs. + pattern: "*.{csv,tsv}" + - meta3: + type: map + description: | + Groovy Map containing information related to the experiment as a whole, + as represented by the matrix columns and the sample sheet e.g. + `[id:'SRP123456' ]` + - coldata: + type: file + description: | + Metadata on matrix columns. One column must contain all matrix column + IDs. + pattern: "*.{csv,tsv}" + +output: + - meta: + type: map + description: | + Groovy Map containing information related to the experiment as a whole + e.g. `[ id:'SRP123456' ]` + - rds: + type: file + description: Serialised SummarizedExperiment object + pattern: "*.SummarizedExperiment.rds" + - log: + type: file + description: dump of R SessionInfo + pattern: "*.log" + - versions: + type: file + description: File containing software versions + pattern: "versions.yml" + +authors: + - "@pinin4fjords" +maintainers: + - "@pinin4fjords" diff --git a/modules/nf-core/summarizedexperiment/summarizedexperiment/templates/summarizedexperiment.r b/modules/nf-core/summarizedexperiment/summarizedexperiment/templates/summarizedexperiment.r new file mode 100644 index 000000000..e2f74e632 --- /dev/null +++ b/modules/nf-core/summarizedexperiment/summarizedexperiment/templates/summarizedexperiment.r @@ -0,0 +1,243 @@ +#!/usr/bin/env Rscript + +# Written by Lorena Pantano and revised for flexibility in handling assays +# Released under the MIT license. + +library(SummarizedExperiment) + +#' Flexibly read CSV or TSV files +#' +#' @param file Input file +#' @param header Passed to read.delim() +#' @param row.names Passed to read.delim() +#' +#' @return output Data frame + +read_delim_flexible <- function(file, header = TRUE, row.names = NULL, check.names = TRUE, stringsAsFactors = FALSE){ + + ext <- tolower(tail(strsplit(basename(file), split = "\\\\.")[[1]], 1)) + + if (ext == "tsv" || ext == "txt") { + separator <- "\\t" + } else if (ext == "csv") { + separator <- "," + } else { + stop(paste("Unknown separator for", ext)) + } + + read.delim( + file, + sep = separator, + header = header, + row.names = row.names, + check.names = check.names, + stringsAsFactors = stringsAsFactors + ) +} + +#' Parse out options from a string without recourse to optparse +#' +#' @param x Long-form argument list like --opt1 val1 --opt2 val2 +#' +#' @return named list of options and values similar to optparse + +parse_args <- function(x){ + args_list <- unlist(strsplit(x, ' ?--')[[1]])[-1] + args_vals <- lapply(args_list, function(x) scan(text=x, what='character', quiet = TRUE)) + + # Ensure the option vectors are length 2 (key/ value) to catch empty ones + args_vals <- lapply(args_vals, function(z){ length(z) <- 2; z}) + + parsed_args <- structure(lapply(args_vals, function(x) x[2]), names = lapply(args_vals, function(x) x[1])) + parsed_args[! is.na(parsed_args)] +} + +#' Find First Column Containing All Specified Entries +#' +#' This function searches through each column of a given data frame to find the +#' first column that contains all of the specified entries in a vector. If such +#' a column is found, the name of the column is returned. If no column matches, +#' the function throws an error. +#' +#' @param namesVector A character vector containing the names to be matched. +#' @param df A data frame within which to search for the column containing all +#' names specified in `namesVector`. +#' +#' @return The name of the first column in `df` that contains all entries from +#' `namesVector`. If no such column exists, the function will throw an error. + +findColumnWithAllEntries <- function(namesVector, df) { + for (colName in names(df)) { + if (all(namesVector %in% df[[colName]])) { + return(colName) + } + } + cat(capture.output(print(df)), sep="\n", file=stderr()) + stop(paste("No column contains all vector entries ", paste(namesVector, collapse = ', '))) +} + +#' Check Matrix Name Uniformity in List +#' +#' Verifies if all matrices in a list have identical row and column names. +#' It returns TRUE if uniformity is found, otherwise FALSE. +#' +#' @param matrices List of matrices. +#' @return Logical indicating uniformity of row and column names. +#' @keywords matrix + +checkRowColNames <- function(matrices) { + # Simplify the comparison process + allEqual <- function(namesList) { + all(sapply(namesList[-1], function(x) identical(x, namesList[[1]]))) + } + + rowNamesEqual <- allEqual(lapply(matrices, rownames)) + colNamesEqual <- allEqual(lapply(matrices, colnames)) + + if ((! rowNamesEqual) || (! colNamesEqual)){ + stop("Rows or columns different among input matrices") + } +} + +#' Parse Metadata From File +#' +#' Reads metadata from a specified file and processes it to handle duplicate +#' rows by aggregating them into a single row based on a unique identifier. +#' The function dynamically identifies the appropriate ID column if not specified. +#' It is designed to be flexible for processing either column (sample) or row (feature) metadata. +#' +#' @param metadata_path Character string specifying the path to the metadata file. +#' @param ids Vector of identifiers (column names or row names) used to match against metadata columns. +#' @param metadata_id_col Optional; character string specifying the column name in the metadata +#' to be used as the unique identifier. If NULL, the function attempts to +#' automatically find a suitable column based on `ids`. +#' +#' @return A data frame of processed metadata with duplicate rows aggregated, and row names set to the unique identifier. + +parse_metadata <- function(metadata_path, ids, metadata_id_col = NULL){ + + metadata <- read_delim_flexible(metadata_path, stringsAsFactors = FALSE, header = TRUE) + if (is.null(metadata_id_col)){ + metadata_id_col <- findColumnWithAllEntries(ids, metadata) + } + + # Allow for duplicate rows by the id column + metadata <- aggregate( + . ~ metadata[[metadata_id_col]], + data = metadata, + FUN = function(x) paste(unique(x), collapse = ",") + )[,-1] + + rownames(metadata) <- metadata[[metadata_id_col]] + + metadata +} + +################################################ +################################################ +## Main script starts here ## +################################################ +################################################ + +# Matrices + +args_opt <- parse_args('$task.ext.args') +matrix_files <- as.list(strsplit('$matrix_files', ' ')[[1]]) + +if ('assay_names' %in% names(args_opt)){ + names(matrix_files) <- unlist(strsplit(args_opt[['assay_names']], ',')[[1]]) +}else{ + names(matrix_files) <- unlist(lapply(matrix_files, tools::file_path_sans_ext)) +} + +# Build and verify the main assays list for the summarisedexperiment + +assay_list <- lapply(matrix_files, function(m){ + mat <- read_delim_flexible(m, row.names = 1, stringsAsFactors = FALSE) + mat[,sapply(mat, is.numeric)] +}) + +checkRowColNames(assay_list) + +# Construct SummarizedExperiment +se <- SummarizedExperiment( + assays = assay_list +) + +# Add column (sample) metadata if provided + +if ('$coldata' != ''){ + coldata <- parse_metadata( + metadata_path = '$coldata', + ids = colnames(assay_list[[1]]), + metadata_id_col = args_opt\$coldata_id_col + ) + + assay_list <- lapply(assay_list, function(m){ + m[,rownames(coldata)] + }) + + colData(se) <- DataFrame(coldata) +} + +# Add row (feature) metadata if provided + +if ('$rowdata' != ''){ + rowdata <- parse_metadata( + metadata_path = '$rowdata', + ids = rownames(assay_list[[1]]), + metadata_id_col = args_opt\$rowdata_id_col + ) + + assay_list <- lapply(assay_list, function(m){ + m[rownames(rowdata), ] + }) + + rowData(se) <- DataFrame(rowdata) +} + +# Write outputs as RDS files + +prefix <- tools::file_path_sans_ext(matrix_files[1]) +if ('$task.ext.prefix' != 'null'){ + prefix = '$task.ext.prefix' +} else if ('$meta.id' != 'null'){ + prefix = '$meta.id' +} + +# Save the SummarizedExperiment object +output_file <- paste0(prefix, ".SummarizedExperiment.rds") +saveRDS(se, file = output_file) + +################################################ +################################################ +## R SESSION INFO ## +################################################ +################################################ + +sink(paste(prefix, "R_sessionInfo.log", sep = '.')) +citation("SummarizedExperiment") +print(sessionInfo()) +sink() + +################################################ +################################################ +## VERSIONS FILE ## +################################################ +################################################ + +r.version <- strsplit(version[['version.string']], ' ')[[1]][3] +summarizedexperiment.version <- as.character(packageVersion('SummarizedExperiment')) + +writeLines( + c( + '"${task.process}":', + paste(' r-base:', r.version), + paste(' bioconductor-summarizedexperiment:', summarizedexperiment.version) + ), +'versions.yml') + +################################################ +################################################ +################################################ +################################################ diff --git a/modules/nf-core/summarizedexperiment/summarizedexperiment/tests/main.nf.test b/modules/nf-core/summarizedexperiment/summarizedexperiment/tests/main.nf.test new file mode 100644 index 000000000..37a51c802 --- /dev/null +++ b/modules/nf-core/summarizedexperiment/summarizedexperiment/tests/main.nf.test @@ -0,0 +1,263 @@ +nextflow_process { + + name "Test Process SUMMARIZEDEXPERIMENT_SUMMARIZEDEXPERIMENT" + script "../main.nf" + process "SUMMARIZEDEXPERIMENT_SUMMARIZEDEXPERIMENT" + + tag "modules" + tag "modules_nfcore" + tag "custom/tx2gene" + tag "tximeta" + tag "tximeta/tximport" + tag "summarizedexperiment" + tag "summarizedexperiment/summarizedexperiment" + tag "untar" + + setup { + + run("UNTAR") { + script "../../../untar/main.nf" + process { + """ + input[0] = [ + [ id:'test'], // meta map + file(params.test_data['saccharomyces_cerevisiae']['genome']['kallisto_results'], checkIfExists: true) + ] + """ + } + } + run("CUSTOM_TX2GENE") { + script "../../../custom/tx2gene/main.nf" + process { + """ + input[0] = [ + [ id:'test'], // meta map + file(params.test_data['saccharomyces_cerevisiae']['genome']['genome_gfp_gtf'], checkIfExists: true) + ] + input[1] = UNTAR.out.untar.map { meta, dir -> [ meta, dir.listFiles().collect() ] } + input[2] = 'kallisto' + input[3] = 'gene_id' + input[4] = 'gene_name' + """ + } + } + run("TXIMETA_TXIMPORT") { + script "../../../tximeta/tximport/main.nf" + process { + """ + input[0] = UNTAR.out.untar.map { meta, dir -> [ meta, dir.listFiles().collect() ] } + input[1] = CUSTOM_TX2GENE.out.tx2gene + input[2] = Channel.of([ [], [] ]) + input[3] = 'kallisto' + """ + } + } + } + + test("saccharomyces_cerevisiae - multi_matrix - rowdata - coldata") { + + config "./multi_matrix.config" + + when { + process { + """ + input[0] = TXIMETA_TXIMPORT.out.counts_gene.join(TXIMETA_TXIMPORT.out.tpm_gene).map{tuple(it[0], [it[1], it[2]])} + input[1] = CUSTOM_TX2GENE.out.tx2gene + input[2] = [ + [ id:'gene'], // meta map + file(params.test_data['saccharomyces_cerevisiae']['genome']['samplesheet'], checkIfExists: true) + ] + """ + } + } + + then { + // Some of the log will vary between conda runs- but top bit should be fine + def loglines = path(process.out.log[0][1]).readLines()[0..14] + + assertAll( + { assert process.success }, + { assert snapshot(loglines).md5().match("gene_log_multi_matrix_rowdata_coldata") }, + { assert snapshot(process.out.versions).match('versions_multi_matrix_rowdata_coldata') } + ) + } + } + + test("saccharomyces_cerevisiae - multi_matrix - rowdata") { + + config "./multi_matrix.config" + + when { + process { + """ + input[0] = TXIMETA_TXIMPORT.out.counts_gene.join(TXIMETA_TXIMPORT.out.tpm_gene).map{tuple(it[0], [it[1], it[2]])} + input[1] = CUSTOM_TX2GENE.out.tx2gene + input[2] = Channel.of([ [], [] ]) + """ + } + } + + then { + // Some of the log will vary between conda runs- but top bit should be fine + def loglines = path(process.out.log[0][1]).readLines()[0..14] + + assertAll( + { assert process.success }, + { assert snapshot(loglines).md5().match("gene_log_multi_matrix_rowdata") }, + { assert snapshot(process.out.versions).match('versions_multi_matrix_rowdata') } + ) + } + } + + test("saccharomyces_cerevisiae - multi_matrix") { + + config "./multi_matrix.config" + + when { + process { + """ + input[0] = TXIMETA_TXIMPORT.out.counts_gene.join(TXIMETA_TXIMPORT.out.tpm_gene).map{tuple(it[0], [it[1], it[2]])} + input[1] = Channel.of([ [], [] ]) + input[2] = Channel.of([ [], [] ]) + """ + } + } + + then { + // Some of the log will vary between conda runs- but top bit should be fine + def loglines = path(process.out.log[0][1]).readLines()[0..14] + + assertAll( + { assert process.success }, + { assert snapshot(loglines).md5().match("gene_log_multi_matrix") }, + { assert snapshot(process.out.versions).match('versions_multi_matrix') } + ) + } + } + + test("saccharomyces_cerevisiae - single_matrix") { + + config "./single_matrix.config" + + when { + process { + """ + input[0] = TXIMETA_TXIMPORT.out.counts_gene + input[1] = Channel.of([ [], [] ]) + input[2] = Channel.of([ [], [] ]) + """ + } + } + + then { + // Some of the log will vary between conda runs- but top bit should be fine + def loglines = path(process.out.log[0][1]).readLines()[0..14] + + assertAll( + { assert process.success }, + { assert snapshot(loglines).md5().match("gene_log_single_matrix") }, + { assert snapshot(process.out.versions).match('versions_single_matrix') } + ) + } + } + + test("saccharomyces_cerevisiae - multi_matrix - rowdata - coldata - stub") { + + config "./multi_matrix.config" + options "-stub" + + when { + process { + """ + input[0] = TXIMETA_TXIMPORT.out.counts_gene.join(TXIMETA_TXIMPORT.out.tpm_gene).map{tuple(it[0], [it[1], it[2]])} + input[1] = CUSTOM_TX2GENE.out.tx2gene + input[2] = [ + [ id:'gene'], // meta map + file(params.test_data['saccharomyces_cerevisiae']['genome']['samplesheet'], checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out.log).match("gene_log_multi_matrix_rowdata_coldataa_stub") }, + { assert snapshot(process.out.versions).match('versions_multi_matrix_rowdata_coldata_stub') } + ) + } + } + + test("saccharomyces_cerevisiae - multi_matrix - rowdata - stub") { + + config "./multi_matrix.config" + options "-stub" + + when { + process { + """ + input[0] = TXIMETA_TXIMPORT.out.counts_gene.join(TXIMETA_TXIMPORT.out.tpm_gene).map{tuple(it[0], [it[1], it[2]])} + input[1] = CUSTOM_TX2GENE.out.tx2gene + input[2] = Channel.of([ [], [] ]) + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out.log).match("gene_log_multi_matrix_rowdata_stub") }, + { assert snapshot(process.out.versions).match('versions_multi_matrix_rowdata_stub') } + ) + } + } + + test("saccharomyces_cerevisiae - multi_matrix - stub") { + + config "./multi_matrix.config" + options "-stub" + + when { + process { + """ + input[0] = TXIMETA_TXIMPORT.out.counts_gene.join(TXIMETA_TXIMPORT.out.tpm_gene).map{tuple(it[0], [it[1], it[2]])} + input[1] = Channel.of([ [], [] ]) + input[2] = Channel.of([ [], [] ]) + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out.log).match("gene_log_multi_matrix_stub") }, + { assert snapshot(process.out.versions).match('versions_multi_matrix_stub') } + ) + } + } + + test("saccharomyces_cerevisiae - single_matrix - stub") { + + config "./single_matrix.config" + options "-stub" + + when { + process { + """ + input[0] = TXIMETA_TXIMPORT.out.counts_gene + input[1] = Channel.of([ [], [] ]) + input[2] = Channel.of([ [], [] ]) + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out.log).match("gene_log_single_matrix_stub") }, + { assert snapshot(process.out.versions).match('versions_single_matrix_stub') } + ) + } + } +} + diff --git a/modules/nf-core/summarizedexperiment/summarizedexperiment/tests/main.nf.test.snap b/modules/nf-core/summarizedexperiment/summarizedexperiment/tests/main.nf.test.snap new file mode 100644 index 000000000..769d37f94 --- /dev/null +++ b/modules/nf-core/summarizedexperiment/summarizedexperiment/tests/main.nf.test.snap @@ -0,0 +1,198 @@ +{ + "gene_log_multi_matrix_rowdata_coldataa_stub": { + "content": [ + [ + [ + { + "id": "test" + }, + "test.R_sessionInfo.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-09T13:57:39.545403663" + }, + "gene_log_single_matrix_stub": { + "content": [ + [ + [ + { + "id": "test" + }, + "test.R_sessionInfo.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-09T13:58:23.258210775" + }, + "versions_single_matrix": { + "content": [ + [ + "versions.yml:md5,1fdcee094bb7ec091b4e445b933d0db3" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-09T14:03:08.335086603" + }, + "gene_log_multi_matrix_rowdata_stub": { + "content": [ + [ + [ + { + "id": "test" + }, + "test.R_sessionInfo.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-09T13:57:52.234643863" + }, + "gene_log_multi_matrix_rowdata": { + "content": "7c35131fdd46dcdba6c71f7f11d5b2c7", + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-09T14:02:24.430008757" + }, + "versions_multi_matrix_rowdata_stub": { + "content": [ + [ + "versions.yml:md5,290f4dc3e123c9468040095de6ffe2e2" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-09T13:57:52.239867923" + }, + "versions_multi_matrix_stub": { + "content": [ + [ + "versions.yml:md5,290f4dc3e123c9468040095de6ffe2e2" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-09T13:58:07.911717413" + }, + "versions_multi_matrix_rowdata_coldata_stub": { + "content": [ + [ + "versions.yml:md5,290f4dc3e123c9468040095de6ffe2e2" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-09T13:57:39.554437332" + }, + "gene_log_multi_matrix": { + "content": "7c35131fdd46dcdba6c71f7f11d5b2c7", + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-09T14:02:46.367962336" + }, + "gene_log_multi_matrix_stub": { + "content": [ + [ + [ + { + "id": "test" + }, + "test.R_sessionInfo.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-09T13:58:07.904228634" + }, + "gene_log_single_matrix": { + "content": "7c35131fdd46dcdba6c71f7f11d5b2c7", + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-09T14:03:08.330328893" + }, + "versions_single_matrix_stub": { + "content": [ + [ + "versions.yml:md5,290f4dc3e123c9468040095de6ffe2e2" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-09T13:58:23.263373495" + }, + "versions_multi_matrix_rowdata": { + "content": [ + [ + "versions.yml:md5,1fdcee094bb7ec091b4e445b933d0db3" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-09T14:02:24.434806727" + }, + "gene_log_multi_matrix_rowdata_coldata": { + "content": "7c35131fdd46dcdba6c71f7f11d5b2c7", + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-09T14:02:01.244907114" + }, + "versions_multi_matrix": { + "content": [ + [ + "versions.yml:md5,1fdcee094bb7ec091b4e445b933d0db3" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-09T14:02:46.374127565" + }, + "versions_multi_matrix_rowdata_coldata": { + "content": [ + [ + "versions.yml:md5,1fdcee094bb7ec091b4e445b933d0db3" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-09T14:02:01.257461683" + } +} \ No newline at end of file diff --git a/modules/nf-core/summarizedexperiment/summarizedexperiment/tests/multi_matrix.config b/modules/nf-core/summarizedexperiment/summarizedexperiment/tests/multi_matrix.config new file mode 100644 index 000000000..5e6d2fc3c --- /dev/null +++ b/modules/nf-core/summarizedexperiment/summarizedexperiment/tests/multi_matrix.config @@ -0,0 +1,7 @@ +process { + + withName: SUMMARIZEDEXPERIMENT_SUMMARIZEDEXPERIMENT { + ext.args = '--assay_names counts,abundance' + } + +} diff --git a/modules/nf-core/summarizedexperiment/summarizedexperiment/tests/single_matrix.config b/modules/nf-core/summarizedexperiment/summarizedexperiment/tests/single_matrix.config new file mode 100644 index 000000000..4b6440fd9 --- /dev/null +++ b/modules/nf-core/summarizedexperiment/summarizedexperiment/tests/single_matrix.config @@ -0,0 +1,7 @@ +process { + + withName: SUMMARIZEDEXPERIMENT_SUMMARIZEDEXPERIMENT { + ext.args = '--assay_names counts' + } + +} diff --git a/modules/nf-core/summarizedexperiment/summarizedexperiment/tests/tags.yml b/modules/nf-core/summarizedexperiment/summarizedexperiment/tests/tags.yml new file mode 100644 index 000000000..9856e958c --- /dev/null +++ b/modules/nf-core/summarizedexperiment/summarizedexperiment/tests/tags.yml @@ -0,0 +1,2 @@ +summarizedexperiment/summarizedexperiment: + - "modules/nf-core/summarizedexperiment/summarizedexperiment/**" diff --git a/modules/nf-core/tximeta/tximport/environment.yml b/modules/nf-core/tximeta/tximport/environment.yml new file mode 100644 index 000000000..24b202222 --- /dev/null +++ b/modules/nf-core/tximeta/tximport/environment.yml @@ -0,0 +1,9 @@ +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json +name: "tximeta_tximport" +channels: + - conda-forge + - bioconda + - defaults +dependencies: + - "bioconda::bioconductor-tximeta=1.20.1" diff --git a/modules/nf-core/tximeta/tximport/main.nf b/modules/nf-core/tximeta/tximport/main.nf new file mode 100644 index 000000000..1f7aec398 --- /dev/null +++ b/modules/nf-core/tximeta/tximport/main.nf @@ -0,0 +1,48 @@ +process TXIMETA_TXIMPORT { + label "process_medium" + + conda "${moduleDir}/environment.yml" + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/bioconductor-tximeta%3A1.20.1--r43hdfd78af_0' : + 'biocontainers/bioconductor-tximeta:1.20.1--r43hdfd78af_0' }" + + input: + tuple val(meta), path("quants/*") + tuple val(meta2), path(tx2gene) + tuple val(meta3), path(coldata) + val quant_type + + output: + tuple val(meta), path("*gene_tpm.tsv") , emit: tpm_gene + tuple val(meta), path("*gene_counts.tsv") , emit: counts_gene + tuple val(meta), path("*gene_counts_length_scaled.tsv"), emit: counts_gene_length_scaled + tuple val(meta), path("*gene_counts_scaled.tsv") , emit: counts_gene_scaled + tuple val(meta), path("*gene_lengths.tsv") , emit: lengths_gene + tuple val(meta), path("*transcript_tpm.tsv") , emit: tpm_transcript + tuple val(meta), path("*transcript_counts.tsv") , emit: counts_transcript + tuple val(meta), path("*transcript_lengths.tsv") , emit: lengths_transcript + path "versions.yml" , emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + template 'tximport.r' + + stub: + """ + touch ${meta.id}.gene_tpm.tsv + touch ${meta.id}.gene_counts.tsv + touch ${meta.id}.gene_counts_length_scaled.tsv + touch ${meta.id}.gene_counts_scaled.tsv + touch ${meta.id}.gene_lengths.tsv + touch ${meta.id}.transcript_tpm.tsv + touch ${meta.id}.transcript_counts.tsv + touch ${meta.id}.transcript_lengths.tsv + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + r: \$( R --version | sed '1!d; s/.*version //; s/ .*//' ) + END_VERSIONS + """ +} diff --git a/modules/nf-core/tximeta/tximport/meta.yml b/modules/nf-core/tximeta/tximport/meta.yml new file mode 100644 index 000000000..9ee5fd365 --- /dev/null +++ b/modules/nf-core/tximeta/tximport/meta.yml @@ -0,0 +1,120 @@ +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/meta-schema.json +name: "tximeta_tximport" +description: | + Import transcript-level abundances and estimated counts for gene-level + analysis packages +keywords: + - gene + - kallisto + - pseudoalignment + - salmon + - transcript +tools: + - "tximeta": + description: "Transcript Quantification Import with Automatic Metadata" + homepage: "https://bioconductor.org/packages/release/bioc/html/tximeta.html" + documentation: "https://bioconductor.org/packages/release/bioc/vignettes/tximeta/inst/doc/tximeta.html" + tool_dev_url: "https://github.com/thelovelab/tximeta" + doi: "10.1371/journal.pcbi.1007664" + licence: ["GPL-2"] + +input: + - meta: + type: map + description: | + Groovy Map containing information related to the experiment as a whole + e.g. `[ id:'SRP123456' ]` + - quants: + type: directory + description: Paths to subdirectories corresponding to + sample-wise runs of Salmon or Kallisto + - meta2: + type: map + description: | + Groovy Map containing reference information related to the species + reference e.g. `[ id:'yeast' ]` + - tx2gene: + type: file + description: A transcript to gene mapping table such as those generated + by custom/tx2gene + pattern: "*.{csv,tsv}" + - meta3: + type: map + description: | + Groovy Map containing information related to the experiment as a whole + e.g. `[ id:'SRP123456' ]` + - coldata: + type: file + description: | + Optional 'coldata' file equivalent to a sample sheet where the first + column corresponds to the sample names (directory names in the input + salmon/ kallisto results) + pattern: "*.{csv,tsv}" + - quant_type: + type: string + description: Quantification type, 'kallisto' or 'salmon' + +output: + - meta: + type: map + description: | + Groovy Map containing information related to the experiment as a whole + e.g. `[ id:'SRP123456' ]` + - tpm_gene: + type: file + description: | + Abundance (TPM) values derived from tximport output after + summarizeToGene(), without a 'countsFromAbundance' specification + pattern: "*gene_tpm.tsv" + - counts_gene: + type: file + description: | + Count values derived from tximport output after + summarizeToGene(), without a 'countsFromAbundance' specification + pattern: "*gene_counts.tsv" + - counts_gene_length_scaled: + type: file + description: | + Count values derived from tximport output after summarizeToGene(), with + a 'countsFromAbundance' specification of 'lengthScaledTPM' + pattern: "*gene_counts_length_scaled.tsv" + - counts_gene_scaled: + type: file + description: | + Count values derived from tximport output after summarizeToGene(), with + a 'countsFromAbundance' specification of 'scaledTPM' + pattern: "*gene_counts_scaled.tsv" + - lengths_gene: + type: file + description: | + Length values derived from tximport output after summarizeToGene(), + without a 'countsFromAbundance' specification + pattern: "*gene_lengths.tsv" + - tpm_transcript: + type: file + description: | + Abundance (TPM) values derived from tximport output without + summarizeToGene(), without a 'countsFromAbundance' specification + pattern: "*transcript_tpm.tsv" + - counts_transcript: + type: file + description: | + Count values derived from tximport output without + summarizeToGene(), without a 'countsFromAbundance' specification + pattern: "*transcript_counts.tsv" + - lengths_transcript: + type: file + description: | + Length values derived from tximport output without summarizeToGene(), + without a 'countsFromAbundance' specification + pattern: "*gene_lengths.tsv" + - versions: + type: file + description: File containing software versions + pattern: "versions.yml" + +authors: + - "@pinin4fjords" +maintainers: + - "@pinin4fjords" diff --git a/modules/nf-core/tximeta/tximport/templates/tximport.r b/modules/nf-core/tximeta/tximport/templates/tximport.r new file mode 100755 index 000000000..7b2b8c293 --- /dev/null +++ b/modules/nf-core/tximeta/tximport/templates/tximport.r @@ -0,0 +1,227 @@ +#!/usr/bin/env Rscript --vanilla + +# Script for importing and processing transcript-level quantifications. +# Written by Lorena Pantano, later modified by Jonathan Manning, and released +# under the MIT license. + +# Loading required libraries +library(SummarizedExperiment) +library(tximport) + +################################################ +################################################ +## Functions ## +################################################ +################################################ + +#' Build a table from a SummarizedExperiment object +#' +#' This function takes a SummarizedExperiment object and a specific slot name to extract +#' assay data. It then combines the first two columns of the rowData with the specified +#' assay data slot into a new data table. +#' +#' @param se.obj A SummarizedExperiment object from which to build the table. +#' @param slot The name of the slot in the assays list from which to extract data. +#' +#' @return A data frame combining the first two columns of the rowData with the assay data from the specified slot. + +build_table <- function(se.obj, slot) { + cbind(rowData(se.obj)[,1:2], assays(se.obj)[[slot]]) +} + +#' Write a table to a file from a SummarizedExperiment object with given parameters +#' +#' This function generates a table from a SummarizedExperiment object using specified parameters +#' and writes the resulting table to a file. The file name is constructed using a prefix and a +#' suffix from the parameters, and the table is written with tab separation, without quoting text, +#' and without row names. +#' +#' @param params A list containing the parameters needed for file generation and table writing. +#' The list should include: +#' - `obj`: A SummarizedExperiment object from which to build the table. +#' - `slot`: The name of the slot in the assays list from which to extract data. +#' - `suffix`: Suffix to use for generating the file name. +#' +#' @return NULL The function is called for its side effect of writing a file and does not return anything. + +write_se_table <- function(params, prefix) { + file_name <- paste0(prefix, ".", params\$suffix) + write.table(build_table(params\$obj, params\$slot), file_name, + sep="\t", quote=FALSE, row.names = FALSE) +} + +#' Read Transcript Metadata from a Given Path +#' +#' This function reads transcript metadata from a specified file path. The file is expected to +#' be a tab-separated values file without headers, containing transcript information. The function +#' checks if the file is empty and stops execution with an error message if so. It reads the file +#' into a data frame, expecting columns for transcript IDs, gene IDs, and gene names. Additional +#' processing is done to ensure compatibility with a predefined data structure (e.g., `txi[[1]]`), +#' including adding missing entries and reordering based on the transcript IDs found in `txi[[1]]`. +#' +#' @param tinfo_path The file path to the transcript information file. +#' +#' @return A list containing three elements: +#' - `transcript`: A data frame with transcript IDs, gene IDs, and gene names, indexed by transcript IDs. +#' - `gene`: A data frame with unique gene IDs and gene names. +#' - `tx2gene`: A data frame mapping transcript IDs to gene IDs. + +read_transcript_info <- function(tinfo_path){ + info <- file.info(tinfo_path) + if (info\$size == 0) { + stop("tx2gene file is empty") + } + + transcript_info <- read.csv(tinfo_path, sep="\t", header = TRUE, + col.names = c("tx", "gene_id", "gene_name")) + + extra <- setdiff(rownames(txi[[1]]), as.character(transcript_info[["tx"]])) + transcript_info <- rbind(transcript_info, data.frame(tx=extra, gene_id=extra, gene_name=extra)) + transcript_info <- transcript_info[match(rownames(txi[[1]]), transcript_info[["tx"]]), ] + rownames(transcript_info) <- transcript_info[["tx"]] + + list(transcript = transcript_info, + gene = unique(transcript_info[,2:3]), + tx2gene = transcript_info[,1:2]) +} + +#' Create a SummarizedExperiment Object +#' +#' Constructs a SummarizedExperiment object using provided matrices for counts, abundance, and length, +#' along with metadata for columns and rows. This function facilitates the organization of experimental +#' data (e.g., RNA-seq or other high-throughput data) in a structured format that is convenient for +#' further analyses and visualization. +#' +#' @param counts A matrix or DataFrame containing counts data, with rows as features (e.g., genes) and +#' columns as samples. +#' @param abundance A matrix or DataFrame containing abundance data (e.g., TPM or FPKM) with the same +#' dimensions and row/column names as the counts data. +#' @param length A matrix or DataFrame containing feature lengths, matching the dimensions and row/column +#' names of the counts data. +#' @param col_data A DataFrame containing sample-level metadata, with rows corresponding to columns in the +#' counts, abundance, and length matrices. +#' @param row_data A DataFrame containing feature-level metadata, with rows corresponding to features in +#' the counts, abundance, and length matrices. +#' +#' @return A SummarizedExperiment object containing the supplied data and metadata. + +create_summarized_experiment <- function(counts, abundance, length, col_data, row_data) { + SummarizedExperiment(assays = list(counts = counts, abundance = abundance, length = length), + colData = col_data, + rowData = row_data) +} + +################################################ +################################################ +## Main script starts here ## +################################################ +################################################ + +# Define pattern for file names based on quantification type +pattern <- ifelse('$quant_type' == "kallisto", "abundance.tsv", "quant.sf") +fns <- list.files('quants', pattern = pattern, recursive = T, full.names = T) +names <- basename(dirname(fns)) +names(fns) <- names +dropInfReps <- '$quant_type' == "kallisto" + +# Import transcript-level quantifications +txi <- tximport(fns, type = '$quant_type', txOut = TRUE, dropInfReps = dropInfReps) + +# Read transcript and sample data +transcript_info <- read_transcript_info('$tx2gene') + +if (file.exists('$coldata')) { + coldata <- read.csv('$coldata', sep="\t") + coldata <- coldata[match(names, coldata[,1]),] + coldata <- cbind(files = fns, coldata) +} else { + message("ColData not available: ", '$coldata') + coldata <- data.frame(files = fns, names = names) +} +rownames(coldata) <- coldata[["names"]] + +# Create initial SummarizedExperiment object +se <- create_summarized_experiment(txi[["counts"]], txi[["abundance"]], txi[["length"]], + DataFrame(coldata), transcript_info\$transcript) + +# Setting parameters for writing tables +params <- list( + list(obj = se, slot = "abundance", suffix = "transcript_tpm.tsv"), + list(obj = se, slot = "counts", suffix = "transcript_counts.tsv"), + list(obj = se, slot = "length", suffix = "transcript_lengths.tsv") +) + +# Process gene-level data if tx2gene mapping is available +if ("tx2gene" %in% names(transcript_info) && !is.null(transcript_info\$tx2gene)) { + tx2gene <- transcript_info\$tx2gene + gi <- summarizeToGene(txi, tx2gene = tx2gene) + gi.ls <- summarizeToGene(txi, tx2gene = tx2gene, countsFromAbundance = "lengthScaledTPM") + gi.s <- summarizeToGene(txi, tx2gene = tx2gene, countsFromAbundance = "scaledTPM") + + gene_info <- transcript_info\$gene[match(rownames(gi[[1]]), transcript_info\$gene[["gene_id"]]),] + rownames(gene_info) <- gene_info[["tx"]] + + col_data_frame <- DataFrame(coldata) + + # Create gene-level SummarizedExperiment objects + gse <- create_summarized_experiment(gi[["counts"]], gi[["abundance"]], gi[["length"]], + col_data_frame, gene_info) + gse.ls <- create_summarized_experiment(gi.ls[["counts"]], gi.ls[["abundance"]], gi.ls[["length"]], + col_data_frame, gene_info) + gse.s <- create_summarized_experiment(gi.s[["counts"]], gi.s[["abundance"]], gi.s[["length"]], + col_data_frame, gene_info) + + params <- c(params, list( + list(obj = gse, slot = "length", suffix = "gene_lengths.tsv"), + list(obj = gse, slot = "abundance", suffix = "gene_tpm.tsv"), + list(obj = gse, slot = "counts", suffix = "gene_counts.tsv"), + list(obj = gse.ls, slot = "abundance", suffix = "gene_tpm_length_scaled.tsv"), + list(obj = gse.ls, slot = "counts", suffix = "gene_counts_length_scaled.tsv"), + list(obj = gse.s, slot = "abundance", suffix = "gene_tpm_scaled.tsv"), + list(obj = gse.s, slot = "counts", suffix = "gene_counts_scaled.tsv") + )) +} + +# Writing tables for each set of parameters + +prefix <- '' +if ('$task.ext.prefix' != 'null'){ + prefix = '$task.ext.prefix' +} else if ('$meta.id' != 'null'){ + prefix = '$meta.id' +} + +done <- lapply(params, write_se_table, prefix) + +################################################ +################################################ +## R SESSION INFO ## +################################################ +################################################ + +sink(paste(prefix, "R_sessionInfo.log", sep = '.')) +citation("tximeta") +print(sessionInfo()) +sink() + +################################################ +################################################ +## VERSIONS FILE ## +################################################ +################################################ + +r.version <- strsplit(version[['version.string']], ' ')[[1]][3] +tximeta.version <- as.character(packageVersion('tximeta')) + +writeLines( + c( + '"${task.process}":', + paste(' r-base:', r.version), + paste(' bioconductor-tximeta:', tximeta.version) + ), +'versions.yml') + +################################################ +################################################ +################################################ +################################################ diff --git a/modules/nf-core/tximeta/tximport/tests/main.nf.test b/modules/nf-core/tximeta/tximport/tests/main.nf.test new file mode 100644 index 000000000..27061ec44 --- /dev/null +++ b/modules/nf-core/tximeta/tximport/tests/main.nf.test @@ -0,0 +1,199 @@ +nextflow_process { + + name "Test Process TXIMETA_TXIMPORT" + script "../main.nf" + process "TXIMETA_TXIMPORT" + + tag "modules" + tag "modules_nfcore" + tag "custom/tx2gene" + tag "tximeta" + tag "tximeta/tximport" + tag "untar" + + test("saccharomyces_cerevisiae - kallisto - gtf") { + + setup { + + run("UNTAR") { + script "../../../untar/main.nf" + process { + """ + input[0] = [ + [ id:'test'], // meta map + file(params.test_data['saccharomyces_cerevisiae']['genome']['kallisto_results'], checkIfExists: true) + ] + """ + } + } + run("CUSTOM_TX2GENE") { + script "../../../custom/tx2gene/main.nf" + process { + """ + input[0] = [ + [ id:'test'], // meta map + file(params.test_data['saccharomyces_cerevisiae']['genome']['genome_gfp_gtf'], checkIfExists: true) + ] + input[1] = UNTAR.out.untar.map { meta, dir -> [ meta, dir.listFiles().collect() ] } + input[2] = 'kallisto' + input[3] = 'gene_id' + input[4] = 'gene_name' + """ + } + } + } + + when { + process { + """ + input[0] = UNTAR.out.untar.map { meta, dir -> [ meta, dir.listFiles().collect() ] } + input[1] = CUSTOM_TX2GENE.out.tx2gene + input[2] = Channel.of([ [], [] ]) + input[3] = 'kallisto' + """ + } + } + + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out.tpm_gene).match('tpm_gene_kallisto') }, + { assert snapshot(process.out.counts_gene).match('counts_gene_kallisto') }, + { assert snapshot(process.out.counts_gene_length_scaled).match('counts_gene_length_scaled_kallisto') }, + { assert snapshot(process.out.counts_gene_scaled).match('counts_gene_scaled_kallisto') }, + { assert snapshot(process.out.lengths_gene).match('lengths_gene_kallisto') }, + { assert snapshot(process.out.tpm_transcript).match('tpm_transcript_kallisto') }, + { assert snapshot(process.out.counts_transcript).match('counts_transcript_kallisto') }, + { assert snapshot(process.out.lengths_transcript).match('lengths_transcript_kallisto') }, + { assert snapshot(process.out.versions).match('versions_kallisto') }, + ) + } + + } + + test("saccharomyces_cerevisiae - kallisto - gtf - stub") { + + options "-stub" + + when { + process { + """ + input[0] = Channel.of([ [], [] ]) + input[1] = Channel.of([ [], [] ]) + input[2] = Channel.of([ [], [] ]) + input[3] = 'kallisto' + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out.tpm_gene).match('tpm_gene_kallisto -stub') }, + { assert snapshot(process.out.counts_gene).match('counts_gene_kallisto - stub') }, + { assert snapshot(process.out.counts_gene_length_scaled).match('counts_gene_length_scaled_kallisto - stub') }, + { assert snapshot(process.out.counts_gene_scaled).match('counts_gene_scaled_kallisto - stub') }, + { assert snapshot(process.out.lengths_gene).match('lengths_gene_kallisto - stub') }, + { assert snapshot(process.out.tpm_transcript).match('tpm_transcript_kallisto - stub') }, + { assert snapshot(process.out.counts_transcript).match('counts_transcript_kallisto - stub') }, + { assert snapshot(process.out.lengths_transcript).match('lengths_transcript_kallisto - stub') }, + { assert snapshot(process.out.versions).match('versions_kallisto - stub') }, + ) + } + + } + test("saccharomyces_cerevisiae - salmon - gtf") { + + setup { + + run("UNTAR") { + script "../../../untar/main.nf" + process { + """ + input[0] = [ + [ id:'test'], // meta map + file(params.test_data['saccharomyces_cerevisiae']['genome']['salmon_results'], checkIfExists: true) + ] + """ + } + } + run("CUSTOM_TX2GENE") { + script "../../../custom/tx2gene/main.nf" + process { + """ + input[0] = [ + [ id:'test'], // meta map + file(params.test_data['saccharomyces_cerevisiae']['genome']['genome_gfp_gtf'], checkIfExists: true) + ] + input[1] = UNTAR.out.untar.map { meta, dir -> [ meta, dir.listFiles().collect() ] } + input[2] = 'salmon' + input[3] = 'gene_id' + input[4] = 'gene_name' + """ + } + } + } + + when { + process { + """ + input[0] = UNTAR.out.untar.map { meta, dir -> [ meta, dir.listFiles().collect() ] } + input[1] = CUSTOM_TX2GENE.out.tx2gene + input[2] = Channel.of([ [], [] ]) + input[3] = 'salmon' + """ + } + } + + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out.tpm_gene).match('tpm_gene_salmon') }, + { assert snapshot(process.out.counts_gene).match('counts_gene_salmon') }, + { assert snapshot(process.out.counts_gene_length_scaled).match('counts_gene_length_scaled_salmon') }, + { assert snapshot(process.out.counts_gene_scaled).match('counts_gene_scaled_salmon') }, + { assert snapshot(process.out.lengths_gene).match('lengths_gene_salmon') }, + { assert snapshot(process.out.tpm_transcript).match('tpm_transcript_salmon') }, + { assert snapshot(process.out.counts_transcript).match('counts_transcript_salmon') }, + { assert snapshot(process.out.lengths_transcript).match('lengths_transcript_salmon') }, + { assert snapshot(process.out.versions).match('versions_salmon') }, + ) + } + + } + + test("saccharomyces_cerevisiae - salmon - gtf - stub") { + + options "-stub" + + when { + process { + """ + input[0] = Channel.of([ [], [] ]) + input[1] = Channel.of([ [], [] ]) + input[2] = Channel.of([ [], [] ]) + input[3] = 'salmon' + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out.tpm_gene).match('tpm_gene_salmon -stub') }, + { assert snapshot(process.out.counts_gene).match('counts_gene_salmon - stub') }, + { assert snapshot(process.out.counts_gene_length_scaled).match('counts_gene_length_scaled_salmon - stub') }, + { assert snapshot(process.out.counts_gene_scaled).match('counts_gene_scaled_salmon - stub') }, + { assert snapshot(process.out.lengths_gene).match('lengths_gene_salmon - stub') }, + { assert snapshot(process.out.tpm_transcript).match('tpm_transcript_salmon - stub') }, + { assert snapshot(process.out.counts_transcript).match('counts_transcript_salmon - stub') }, + { assert snapshot(process.out.lengths_transcript).match('lengths_transcript_salmon - stub') }, + { assert snapshot(process.out.versions).match('versions_salmon - stub') }, + ) + } + + } +} + diff --git a/modules/nf-core/tximeta/tximport/tests/main.nf.test.snap b/modules/nf-core/tximeta/tximport/tests/main.nf.test.snap new file mode 100644 index 000000000..4961ac3ac --- /dev/null +++ b/modules/nf-core/tximeta/tximport/tests/main.nf.test.snap @@ -0,0 +1,594 @@ +{ + "tpm_gene_salmon -stub": { + "content": [ + [ + [ + [ + + ], + "[].gene_tpm.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-09T13:31:05.203366546" + }, + "tpm_transcript_salmon - stub": { + "content": [ + [ + [ + [ + + ], + "[].transcript_tpm.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-09T13:31:05.238815422" + }, + "lengths_gene_kallisto - stub": { + "content": [ + [ + [ + [ + + ], + "[].gene_lengths.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-09T13:30:39.169986951" + }, + "counts_gene_scaled_salmon - stub": { + "content": [ + [ + [ + [ + + ], + "[].gene_counts_scaled.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-09T13:31:05.224281753" + }, + "counts_gene_kallisto - stub": { + "content": [ + [ + [ + [ + + ], + "[].gene_counts.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-09T13:30:39.141099674" + }, + "lengths_transcript_salmon - stub": { + "content": [ + [ + [ + [ + + ], + "[].transcript_lengths.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-09T13:31:05.255932841" + }, + "versions_salmon - stub": { + "content": [ + [ + "versions.yml:md5,721fc5c3bfa6792e8982f2662908b836" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-09T13:31:05.26533312" + }, + "counts_gene_length_scaled_kallisto": { + "content": [ + [ + [ + { + "id": "test" + }, + "test.gene_counts_length_scaled.tsv:md5,4944841ac711124d29673b6b6ed16ef3" + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-09T13:30:30.246852231" + }, + "lengths_transcript_salmon": { + "content": [ + [ + [ + { + "id": "test" + }, + "test.transcript_lengths.tsv:md5,db6d8ab9f8e1123d5984fd534b4347dc" + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-09T13:30:55.717395151" + }, + "counts_transcript_kallisto": { + "content": [ + [ + [ + { + "id": "test" + }, + "test.transcript_counts.tsv:md5,42e0106e75fa97c1c684c6d9060f1724" + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-09T13:30:30.267269829" + }, + "tpm_gene_kallisto -stub": { + "content": [ + [ + [ + [ + + ], + "[].gene_tpm.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-09T13:30:39.133021984" + }, + "counts_transcript_kallisto - stub": { + "content": [ + [ + [ + [ + + ], + "[].transcript_counts.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-09T13:30:39.191224569" + }, + "counts_transcript_salmon": { + "content": [ + [ + [ + { + "id": "test" + }, + "test.transcript_counts.tsv:md5,ff0f5be09ca7a322672c0074ba35da17" + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-09T13:30:55.711194061" + }, + "lengths_gene_salmon - stub": { + "content": [ + [ + [ + [ + + ], + "[].gene_lengths.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-09T13:31:05.231479353" + }, + "tpm_gene_salmon": { + "content": [ + [ + [ + { + "id": "test" + }, + "test.gene_tpm.tsv:md5,6076364cc78741a4f8bc8935a045d13d" + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-09T13:30:55.676380215" + }, + "tpm_transcript_salmon": { + "content": [ + [ + [ + { + "id": "test" + }, + "test.transcript_tpm.tsv:md5,7a334b565e1e865efb1caf615f194ef7" + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-09T13:30:55.705920722" + }, + "lengths_transcript_kallisto": { + "content": [ + [ + [ + { + "id": "test" + }, + "test.transcript_lengths.tsv:md5,f974b52840431a5dae57bcb615badbf1" + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-09T13:30:30.274231188" + }, + "counts_gene_length_scaled_kallisto - stub": { + "content": [ + [ + [ + [ + + ], + "[].gene_counts_length_scaled.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-09T13:30:39.151132722" + }, + "counts_transcript_salmon - stub": { + "content": [ + [ + [ + [ + + ], + "[].transcript_counts.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-09T13:31:05.247380891" + }, + "counts_gene_scaled_kallisto": { + "content": [ + [ + [ + { + "id": "test" + }, + "test.gene_counts_scaled.tsv:md5,39d14e361434978b3cadae901a26a028" + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-09T13:30:30.251356171" + }, + "counts_gene_salmon": { + "content": [ + [ + [ + { + "id": "test" + }, + "test.gene_counts.tsv:md5,c14cab7e15cfac73ec0602dc2c404551" + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-09T13:30:55.685043764" + }, + "versions_salmon": { + "content": [ + [ + "versions.yml:md5,a6476f297a8e9396f4cfc151cd7f25ed" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-09T13:30:55.73053927" + }, + "counts_gene_length_scaled_salmon": { + "content": [ + [ + [ + { + "id": "test" + }, + "test.gene_counts_length_scaled.tsv:md5,5f92a6784f6edc5e3b336c71c3ee7daf" + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-09T13:30:55.689830703" + }, + "tpm_gene_kallisto": { + "content": [ + [ + [ + { + "id": "test" + }, + "test.gene_tpm.tsv:md5,85d108269769ae0d841247b9b9ed922d" + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-09T13:30:30.240422122" + }, + "lengths_transcript_kallisto - stub": { + "content": [ + [ + [ + [ + + ], + "[].transcript_lengths.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-09T13:30:39.201244158" + }, + "lengths_gene_kallisto": { + "content": [ + [ + [ + { + "id": "test" + }, + "test.gene_lengths.tsv:md5,db6becdf807fd164a9c63dd1dd916d9c" + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-09T13:30:30.25633664" + }, + "counts_gene_scaled_kallisto - stub": { + "content": [ + [ + [ + [ + + ], + "[].gene_counts_scaled.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-09T13:30:39.160095512" + }, + "tpm_transcript_kallisto": { + "content": [ + [ + [ + { + "id": "test" + }, + "test.transcript_tpm.tsv:md5,65862ed9d4a05abfab952e680dc0e49d" + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-09T13:30:30.2613952" + }, + "lengths_gene_salmon": { + "content": [ + [ + [ + { + "id": "test" + }, + "test.gene_lengths.tsv:md5,1691ea2677612805cd699265c83024d7" + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-09T13:30:55.700155703" + }, + "counts_gene_length_scaled_salmon - stub": { + "content": [ + [ + [ + [ + + ], + "[].gene_counts_length_scaled.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-09T13:31:05.217581894" + }, + "counts_gene_kallisto": { + "content": [ + [ + [ + { + "id": "test" + }, + "test.gene_counts.tsv:md5,e89c28692ea214396b2d4cb702a804c3" + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-09T13:30:30.243833201" + }, + "versions_kallisto": { + "content": [ + [ + "versions.yml:md5,a6476f297a8e9396f4cfc151cd7f25ed" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-09T13:30:30.280881588" + }, + "counts_gene_salmon - stub": { + "content": [ + [ + [ + [ + + ], + "[].gene_counts.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-09T13:31:05.210758835" + }, + "versions_kallisto - stub": { + "content": [ + [ + "versions.yml:md5,721fc5c3bfa6792e8982f2662908b836" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-09T13:30:39.210884587" + }, + "tpm_transcript_kallisto - stub": { + "content": [ + [ + [ + [ + + ], + "[].transcript_tpm.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-09T13:30:39.18051906" + }, + "counts_gene_scaled_salmon": { + "content": [ + [ + [ + { + "id": "test" + }, + "test.gene_counts_scaled.tsv:md5,fdfb3d23aaf5d4316d81247ec4664ca0" + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-09T13:30:55.694826803" + } +} \ No newline at end of file diff --git a/modules/nf-core/tximeta/tximport/tests/tags.yml b/modules/nf-core/tximeta/tximport/tests/tags.yml new file mode 100644 index 000000000..fc96a89e0 --- /dev/null +++ b/modules/nf-core/tximeta/tximport/tests/tags.yml @@ -0,0 +1,2 @@ +tximeta/tximport: + - "modules/nf-core/tximeta/tximport/**" diff --git a/subworkflows/local/quantify_pseudo_alignment/main.nf b/subworkflows/local/quantify_pseudo_alignment/main.nf index ffbef1fbf..b6e56792f 100644 --- a/subworkflows/local/quantify_pseudo_alignment/main.nf +++ b/subworkflows/local/quantify_pseudo_alignment/main.nf @@ -2,18 +2,19 @@ // Pseudoalignment and quantification with Salmon or Kallisto // -include { SALMON_QUANT } from '../../../modules/nf-core/salmon/quant' -include { KALLISTO_QUANT } from '../../../modules/nf-core/kallisto/quant' -include { CUSTOM_TX2GENE } from '../../../modules/nf-core/custom/tx2gene' -include { TXIMPORT } from '../../../modules/local/tximport' +include { SALMON_QUANT } from '../../../modules/nf-core/salmon/quant' +include { KALLISTO_QUANT } from '../../../modules/nf-core/kallisto/quant' +include { CUSTOM_TX2GENE } from '../../../modules/nf-core/custom/tx2gene' +include { TXIMETA_TXIMPORT } from '../../../modules/nf-core/tximeta/tximport' -include { SUMMARIZEDEXPERIMENT as SE_GENE } from '../../../modules/local/summarizedexperiment' -include { SUMMARIZEDEXPERIMENT as SE_GENE_LENGTH_SCALED } from '../../../modules/local/summarizedexperiment' -include { SUMMARIZEDEXPERIMENT as SE_GENE_SCALED } from '../../../modules/local/summarizedexperiment' -include { SUMMARIZEDEXPERIMENT as SE_TRANSCRIPT } from '../../../modules/local/summarizedexperiment' +include { SUMMARIZEDEXPERIMENT_SUMMARIZEDEXPERIMENT as SE_GENE } from '../../../modules/nf-core/summarizedexperiment/summarizedexperiment' +include { SUMMARIZEDEXPERIMENT_SUMMARIZEDEXPERIMENT as SE_GENE_LENGTH_SCALED } from '../../../modules/nf-core/summarizedexperiment/summarizedexperiment' +include { SUMMARIZEDEXPERIMENT_SUMMARIZEDEXPERIMENT as SE_GENE_SCALED } from '../../../modules/nf-core/summarizedexperiment/summarizedexperiment' +include { SUMMARIZEDEXPERIMENT_SUMMARIZEDEXPERIMENT as SE_TRANSCRIPT } from '../../../modules/nf-core/summarizedexperiment/summarizedexperiment' workflow QUANTIFY_PSEUDO_ALIGNMENT { take: + samplesheet // channel: [ val(meta), /path/to/samplsheet ] reads // channel: [ val(meta), [ reads ] ] index // channel: /path/to//index/ transcript_fasta // channel: /path/to/transcript.fasta @@ -27,7 +28,7 @@ workflow QUANTIFY_PSEUDO_ALIGNMENT { kallisto_quant_fraglen_sd // val: Estimated standard error for fragment length required by Kallisto in single-end mode main: - + samplesheet.view() ch_versions = Channel.empty() // @@ -55,57 +56,58 @@ workflow QUANTIFY_PSEUDO_ALIGNMENT { ) ch_versions = ch_versions.mix(CUSTOM_TX2GENE.out.versions) - TXIMPORT ( - ch_pseudo_results.collect{it[1]}, - CUSTOM_TX2GENE.out.tx2gene.collect{it[1]}, + TXIMETA_TXIMPORT ( + ch_pseudo_results.collect{it[1]}.map { [ ['id':it.name], it ] }, + CUSTOM_TX2GENE.out.tx2gene, + samplesheet, pseudo_aligner ) - ch_versions = ch_versions.mix(TXIMPORT.out.versions) + ch_versions = ch_versions.mix(TXIMETA_TXIMPORT.out.versions) SE_GENE ( - TXIMPORT.out.counts_gene, - TXIMPORT.out.tpm_gene, - CUSTOM_TX2GENE.out.tx2gene.collect{it[1]} + TXIMETA_TXIMPORT.out.counts_gene.concat(TXIMETA_TXIMPORT.out.tpm_gene).groupTuple(), + CUSTOM_TX2GENE.out.tx2gene, + samplesheet ) ch_versions = ch_versions.mix(SE_GENE.out.versions) SE_GENE_LENGTH_SCALED ( - TXIMPORT.out.counts_gene_length_scaled, - TXIMPORT.out.tpm_gene, - CUSTOM_TX2GENE.out.tx2gene.collect{it[1]} + TXIMETA_TXIMPORT.out.counts_gene_length_scaled.concat(TXIMETA_TXIMPORT.out.tpm_gene).groupTuple(), + CUSTOM_TX2GENE.out.tx2gene, + samplesheet ) SE_GENE_SCALED ( - TXIMPORT.out.counts_gene_scaled, - TXIMPORT.out.tpm_gene, - CUSTOM_TX2GENE.out.tx2gene.collect{it[1]} + TXIMETA_TXIMPORT.out.counts_gene_scaled.concat(TXIMETA_TXIMPORT.out.tpm_gene).groupTuple(), + CUSTOM_TX2GENE.out.tx2gene, + samplesheet ) SE_TRANSCRIPT ( - TXIMPORT.out.counts_transcript, - TXIMPORT.out.tpm_transcript, - CUSTOM_TX2GENE.out.tx2gene.collect{it[1]} + TXIMETA_TXIMPORT.out.counts_transcript.concat(TXIMETA_TXIMPORT.out.tpm_transcript).groupTuple(), + CUSTOM_TX2GENE.out.tx2gene, + samplesheet ) emit: results = ch_pseudo_results // channel: [ val(meta), results_dir ] multiqc = ch_pseudo_multiqc // channel: [ val(meta), files_for_multiqc ] - tpm_gene = TXIMPORT.out.tpm_gene // path *gene_tpm.tsv - counts_gene = TXIMPORT.out.counts_gene // path *gene_counts.tsv - lengths_gene = TXIMPORT.out.lengths_gene // path *gene_lengths.tsv - counts_gene_length_scaled = TXIMPORT.out.counts_gene_length_scaled // path *gene_counts_length_scaled.tsv - counts_gene_scaled = TXIMPORT.out.counts_gene_scaled // path *gene_counts_scaled.tsv - tpm_transcript = TXIMPORT.out.tpm_transcript // path *gene_tpm.tsv - counts_transcript = TXIMPORT.out.counts_transcript // path *transcript_counts.tsv - lengths_transcript = TXIMPORT.out.lengths_transcript // path *transcript_lengths.tsv + tpm_gene = TXIMETA_TXIMPORT.out.tpm_gene // path *gene_tpm.tsv + counts_gene = TXIMETA_TXIMPORT.out.counts_gene // path *gene_counts.tsv + lengths_gene = TXIMETA_TXIMPORT.out.lengths_gene // path *gene_lengths.tsv + counts_gene_length_scaled = TXIMETA_TXIMPORT.out.counts_gene_length_scaled // path *gene_counts_length_scaled.tsv + counts_gene_scaled = TXIMETA_TXIMPORT.out.counts_gene_scaled // path *gene_counts_scaled.tsv + tpm_transcript = TXIMETA_TXIMPORT.out.tpm_transcript // path *gene_tpm.tsv + counts_transcript = TXIMETA_TXIMPORT.out.counts_transcript // path *transcript_counts.tsv + lengths_transcript = TXIMETA_TXIMPORT.out.lengths_transcript // path *transcript_lengths.tsv merged_gene_rds = SE_GENE.out.rds // path: *.rds merged_gene_rds_length_scaled = SE_GENE_LENGTH_SCALED.out.rds // path: *.rds merged_gene_rds_scaled = SE_GENE_SCALED.out.rds // path: *.rds - merged_counts_transcript = TXIMPORT.out.counts_transcript // path: *.transcript_counts.tsv - merged_tpm_transcript = TXIMPORT.out.tpm_transcript // path: *.transcript_tpm.tsv + merged_counts_transcript = TXIMETA_TXIMPORT.out.counts_transcript // path: *.transcript_counts.tsv + merged_tpm_transcript = TXIMETA_TXIMPORT.out.tpm_transcript // path: *.transcript_tpm.tsv merged_transcript_rds = SE_TRANSCRIPT.out.rds // path: *.rds versions = ch_versions // channel: [ versions.yml ] diff --git a/subworkflows/local/quantify_pseudo_alignment/nextflow.config b/subworkflows/local/quantify_pseudo_alignment/nextflow.config index 33ec53672..01c9429a9 100644 --- a/subworkflows/local/quantify_pseudo_alignment/nextflow.config +++ b/subworkflows/local/quantify_pseudo_alignment/nextflow.config @@ -44,6 +44,7 @@ if (!params.skip_pseudo_alignment && params.pseudo_aligner) { } withName: '.*:QUANTIFY_PSEUDO_ALIGNMENT:SE_.*' { + ext.args = '--assay_names counts,abundance' publishDir = [ path: { "${params.outdir}/${params.pseudo_aligner}" }, mode: params.publish_dir_mode, diff --git a/workflows/rnaseq/main.nf b/workflows/rnaseq/main.nf index 1cc9e4bed..515af9370 100755 --- a/workflows/rnaseq/main.nf +++ b/workflows/rnaseq/main.nf @@ -81,7 +81,8 @@ ch_dummy_file = ch_pca_header_multiqc workflow NFCORE_RNASEQ { take: - ch_samplesheet // channel: samplesheet read in from --input + ch_input // channel: samplesheet file as specified to --input + ch_samplesheet // channel: sample fastqs parsed from --input ch_versions // channel: [ path(versions.yml) ] ch_fasta // channel: path(genome.fasta) ch_gtf // channel: path(genome.gtf) @@ -379,6 +380,7 @@ workflow NFCORE_RNASEQ { // SUBWORKFLOW: Count reads from BAM alignments using Salmon // QUANTIFY_STAR_SALMON ( + ch_input.map{[[:], it]}, ch_transcriptome_bam, ch_dummy_file, ch_transcript_fasta, @@ -708,6 +710,7 @@ workflow NFCORE_RNASEQ { } QUANTIFY_PSEUDO_ALIGNMENT ( + ch_input.map{[[:], it]}, ch_strand_inferred_filtered_fastq, ch_pseudo_index, ch_dummy_file, diff --git a/workflows/rnaseq/nextflow.config b/workflows/rnaseq/nextflow.config index fd4f1435d..82e09fce5 100644 --- a/workflows/rnaseq/nextflow.config +++ b/workflows/rnaseq/nextflow.config @@ -33,7 +33,7 @@ if (!params.skip_alignment && params.aligner == 'star_salmon') { ] } - withName: '.*:QUANTIFY_STAR_SALMON:TX2GENE' { + withName: '.*:QUANTIFY_STAR_SALMON:CUSTOM_TX2GENE' { publishDir = [ path: { "${params.outdir}/${params.aligner}" }, mode: params.publish_dir_mode, @@ -41,7 +41,7 @@ if (!params.skip_alignment && params.aligner == 'star_salmon') { ] } - withName: '.*:QUANTIFY_STAR_SALMON:TXIMPORT' { + withName: '.*:QUANTIFY_STAR_SALMON:TXIMETA_TXIMPORT' { ext.prefix = { "${quant_type}.merged" } publishDir = [ path: { "${params.outdir}/${params.aligner}" }, @@ -344,7 +344,7 @@ if (!params.skip_alignment && params.aligner == 'star_rsem') { if (!params.skip_pseudo_alignment && params.pseudo_aligner) { process { - withName: '.*:QUANTIFY_PSEUDO_ALIGNMENT:TX2GENE' { + withName: '.*:QUANTIFY_PSEUDO_ALIGNMENT:CUSTOM_TX2GENE' { publishDir = [ path: { "${params.outdir}/${params.pseudo_aligner}" }, mode: params.publish_dir_mode, @@ -352,7 +352,7 @@ if (!params.skip_pseudo_alignment && params.pseudo_aligner) { ] } - withName: '.*:QUANTIFY_PSEUDO_ALIGNMENT:TXIMPORT' { + withName: '.*:QUANTIFY_PSEUDO_ALIGNMENT:TXIMETA_TXIMPORT' { ext.prefix = { "${quant_type}.merged" } publishDir = [ path: { "${params.outdir}/${params.pseudo_aligner}" }, From 85a9e33380dbded7000d0c4f0f7c69c464a417a2 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Wed, 14 Feb 2024 11:56:57 +0000 Subject: [PATCH 053/634] Basic working --- modules.json | 4 +- .../custom/tx2gene/templates/tx2gene.py | 1 + .../nf-core/custom/tx2gene/tests/main.nf.test | 41 ++++++------------- .../custom/tx2gene/tests/main.nf.test.snap | 12 +++--- modules/nf-core/tximeta/tximport/main.nf | 1 - .../tximeta/tximport/templates/tximport.r | 10 +---- .../tximeta/tximport/tests/main.nf.test | 12 ++---- .../local/quantify_pseudo_alignment/main.nf | 5 +-- workflows/rnaseq/main.nf | 4 +- 9 files changed, 32 insertions(+), 58 deletions(-) diff --git a/modules.json b/modules.json index c90970e4d..edea1fc37 100644 --- a/modules.json +++ b/modules.json @@ -22,7 +22,7 @@ }, "custom/tx2gene": { "branch": "master", - "git_sha": "9d2338f5bb329d56e728575d8ebc9e7ed2aa4059", + "git_sha": "105968d1c48c727834abcabc94ad6bd128e5ef27", "installed_by": ["modules"] }, "fastp": { @@ -221,7 +221,7 @@ }, "tximeta/tximport": { "branch": "master", - "git_sha": "105968d1c48c727834abcabc94ad6bd128e5ef27", + "git_sha": "376bc3de6c2b763f21d55a7f5d8712d0efbf1b3a", "installed_by": ["modules"] }, "ucsc/bedclip": { diff --git a/modules/nf-core/custom/tx2gene/templates/tx2gene.py b/modules/nf-core/custom/tx2gene/templates/tx2gene.py index ee0a551fc..7fd0de64e 100755 --- a/modules/nf-core/custom/tx2gene/templates/tx2gene.py +++ b/modules/nf-core/custom/tx2gene/templates/tx2gene.py @@ -149,6 +149,7 @@ def map_transcripts_to_gene( seen = set() with open(gtf_file) as inh, open(output_file, "w") as output_handle: + output_handle.write(f"{transcript_attribute}\\t{gene_id}\\t{extra_id_field}\\n") # Parse each line of the GTF, mapping transcripts to genes for line in filter(lambda x: not x.startswith("#"), inh): cols = line.split("\\t") diff --git a/modules/nf-core/custom/tx2gene/tests/main.nf.test b/modules/nf-core/custom/tx2gene/tests/main.nf.test index c983bb1aa..0a9d81506 100644 --- a/modules/nf-core/custom/tx2gene/tests/main.nf.test +++ b/modules/nf-core/custom/tx2gene/tests/main.nf.test @@ -10,23 +10,23 @@ nextflow_process { tag "custom/tx2gene" tag "untar" - test("saccharomyces_cerevisiae - gtf") { - - setup { + setup { - run("UNTAR") { - script "../../../untar/main.nf" - process { - """ - input[0] = [ - [ id:'test'], // meta map - file(params.test_data['saccharomyces_cerevisiae']['genome']['kallisto_results'], checkIfExists: true) - ] - """ - } + run("UNTAR") { + script "../../../untar/main.nf" + process { + """ + input[0] = [ + [ id:'test'], // meta map + file(params.test_data['saccharomyces_cerevisiae']['genome']['kallisto_results'], checkIfExists: true) + ] + """ } } + } + test("saccharomyces_cerevisiae - gtf") { + when { process { """ @@ -57,21 +57,6 @@ nextflow_process { options "-stub" - setup { - - run("UNTAR") { - script "../../../untar/main.nf" - process { - """ - input[0] = [ - [ id:'test'], // meta map - file(params.test_data['saccharomyces_cerevisiae']['genome']['kallisto_results'], checkIfExists: true) - ] - """ - } - } - } - when { process { """ diff --git a/modules/nf-core/custom/tx2gene/tests/main.nf.test.snap b/modules/nf-core/custom/tx2gene/tests/main.nf.test.snap index b01abf4c1..eb3a40d7d 100644 --- a/modules/nf-core/custom/tx2gene/tests/main.nf.test.snap +++ b/modules/nf-core/custom/tx2gene/tests/main.nf.test.snap @@ -6,7 +6,7 @@ { "id": "test" }, - "test.tx2gene.tsv:md5,b367acfc4b7df7fb68fb1b1d2956e27e" + "test.tx2gene.tsv:md5,0e2418a69d2eba45097ebffc2f700bfe" ] ] ], @@ -14,7 +14,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-02-05T22:09:56.931541991" + "timestamp": "2024-02-09T13:36:52.865995354" }, "tx2gene": { "content": [ @@ -23,7 +23,7 @@ { "id": "test" }, - "test.tx2gene.tsv:md5,b367acfc4b7df7fb68fb1b1d2956e27e" + "test.tx2gene.tsv:md5,0e2418a69d2eba45097ebffc2f700bfe" ] ] ], @@ -31,7 +31,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-02-05T22:09:56.920656242" + "timestamp": "2024-02-09T13:36:52.853651325" }, "tx2gene - stub": { "content": [ @@ -48,7 +48,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-02-05T22:10:14.817718782" + "timestamp": "2024-02-09T13:37:06.627803799" }, "versions - stub": { "content": [ @@ -65,6 +65,6 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-02-05T22:10:14.823019212" + "timestamp": "2024-02-09T13:37:06.632996139" } } \ No newline at end of file diff --git a/modules/nf-core/tximeta/tximport/main.nf b/modules/nf-core/tximeta/tximport/main.nf index 1f7aec398..af3cf44fe 100644 --- a/modules/nf-core/tximeta/tximport/main.nf +++ b/modules/nf-core/tximeta/tximport/main.nf @@ -9,7 +9,6 @@ process TXIMETA_TXIMPORT { input: tuple val(meta), path("quants/*") tuple val(meta2), path(tx2gene) - tuple val(meta3), path(coldata) val quant_type output: diff --git a/modules/nf-core/tximeta/tximport/templates/tximport.r b/modules/nf-core/tximeta/tximport/templates/tximport.r index 7b2b8c293..722d0daf4 100755 --- a/modules/nf-core/tximeta/tximport/templates/tximport.r +++ b/modules/nf-core/tximeta/tximport/templates/tximport.r @@ -130,14 +130,8 @@ txi <- tximport(fns, type = '$quant_type', txOut = TRUE, dropInfReps = dropInfRe # Read transcript and sample data transcript_info <- read_transcript_info('$tx2gene') -if (file.exists('$coldata')) { - coldata <- read.csv('$coldata', sep="\t") - coldata <- coldata[match(names, coldata[,1]),] - coldata <- cbind(files = fns, coldata) -} else { - message("ColData not available: ", '$coldata') - coldata <- data.frame(files = fns, names = names) -} +# Make coldata just to appease the summarizedexperiment +coldata <- data.frame(files = fns, names = names) rownames(coldata) <- coldata[["names"]] # Create initial SummarizedExperiment object diff --git a/modules/nf-core/tximeta/tximport/tests/main.nf.test b/modules/nf-core/tximeta/tximport/tests/main.nf.test index 27061ec44..09e86d11d 100644 --- a/modules/nf-core/tximeta/tximport/tests/main.nf.test +++ b/modules/nf-core/tximeta/tximport/tests/main.nf.test @@ -48,8 +48,7 @@ nextflow_process { """ input[0] = UNTAR.out.untar.map { meta, dir -> [ meta, dir.listFiles().collect() ] } input[1] = CUSTOM_TX2GENE.out.tx2gene - input[2] = Channel.of([ [], [] ]) - input[3] = 'kallisto' + input[2] = 'kallisto' """ } } @@ -81,8 +80,7 @@ nextflow_process { """ input[0] = Channel.of([ [], [] ]) input[1] = Channel.of([ [], [] ]) - input[2] = Channel.of([ [], [] ]) - input[3] = 'kallisto' + input[2] = 'kallisto' """ } } @@ -140,8 +138,7 @@ nextflow_process { """ input[0] = UNTAR.out.untar.map { meta, dir -> [ meta, dir.listFiles().collect() ] } input[1] = CUSTOM_TX2GENE.out.tx2gene - input[2] = Channel.of([ [], [] ]) - input[3] = 'salmon' + input[2] = 'salmon' """ } } @@ -173,8 +170,7 @@ nextflow_process { """ input[0] = Channel.of([ [], [] ]) input[1] = Channel.of([ [], [] ]) - input[2] = Channel.of([ [], [] ]) - input[3] = 'salmon' + input[2] = 'salmon' """ } } diff --git a/subworkflows/local/quantify_pseudo_alignment/main.nf b/subworkflows/local/quantify_pseudo_alignment/main.nf index b6e56792f..29501a377 100644 --- a/subworkflows/local/quantify_pseudo_alignment/main.nf +++ b/subworkflows/local/quantify_pseudo_alignment/main.nf @@ -48,7 +48,7 @@ workflow QUANTIFY_PSEUDO_ALIGNMENT { } CUSTOM_TX2GENE ( - gtf.map { [ [:], it ] }, + gtf.map { [ ['id': it.name], it ] }, ch_pseudo_results.collect{it[1]}.map { [ [:], it ] }, pseudo_aligner, gtf_id_attribute, @@ -57,9 +57,8 @@ workflow QUANTIFY_PSEUDO_ALIGNMENT { ch_versions = ch_versions.mix(CUSTOM_TX2GENE.out.versions) TXIMETA_TXIMPORT ( - ch_pseudo_results.collect{it[1]}.map { [ ['id':it.name], it ] }, + ch_pseudo_results.collect{it[1]}.map { [ ['id': 'all_samples'], it ] }, CUSTOM_TX2GENE.out.tx2gene, - samplesheet, pseudo_aligner ) ch_versions = ch_versions.mix(TXIMETA_TXIMPORT.out.versions) diff --git a/workflows/rnaseq/main.nf b/workflows/rnaseq/main.nf index 515af9370..c62ca66bd 100755 --- a/workflows/rnaseq/main.nf +++ b/workflows/rnaseq/main.nf @@ -397,7 +397,7 @@ workflow NFCORE_RNASEQ { if (!params.skip_qc & !params.skip_deseq2_qc) { DESEQ2_QC_STAR_SALMON ( - QUANTIFY_STAR_SALMON.out.counts_gene_length_scaled, + QUANTIFY_STAR_SALMON.out.counts_gene_length_scaled.map{it[1]}, ch_pca_header_multiqc, ch_clustering_header_multiqc ) @@ -729,7 +729,7 @@ workflow NFCORE_RNASEQ { if (!params.skip_qc & !params.skip_deseq2_qc) { DESEQ2_QC_PSEUDO ( - ch_counts_gene_length_scaled, + ch_counts_gene_length_scaled.map{it[1]}, ch_pca_header_multiqc, ch_clustering_header_multiqc ) From bc6f548796672cf01835374607fd43987da118d2 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Wed, 14 Feb 2024 18:30:09 +0000 Subject: [PATCH 054/634] Fix configs to maintain consistency with current outputs --- .../local/quantify_pseudo_alignment/main.nf | 2 +- workflows/rnaseq/nextflow.config | 29 +++++++++++++++++-- 2 files changed, 28 insertions(+), 3 deletions(-) diff --git a/subworkflows/local/quantify_pseudo_alignment/main.nf b/subworkflows/local/quantify_pseudo_alignment/main.nf index 29501a377..12a58b66c 100644 --- a/subworkflows/local/quantify_pseudo_alignment/main.nf +++ b/subworkflows/local/quantify_pseudo_alignment/main.nf @@ -48,7 +48,7 @@ workflow QUANTIFY_PSEUDO_ALIGNMENT { } CUSTOM_TX2GENE ( - gtf.map { [ ['id': it.name], it ] }, + gtf.map { [ [:], it ] }, ch_pseudo_results.collect{it[1]}.map { [ [:], it ] }, pseudo_aligner, gtf_id_attribute, diff --git a/workflows/rnaseq/nextflow.config b/workflows/rnaseq/nextflow.config index 82e09fce5..38c8585f2 100644 --- a/workflows/rnaseq/nextflow.config +++ b/workflows/rnaseq/nextflow.config @@ -51,12 +51,25 @@ if (!params.skip_alignment && params.aligner == 'star_salmon') { } withName: '.*:QUANTIFY_STAR_SALMON:SE_.*' { + ext.prefix = { "${params.pseudo_aligner}.merged" } publishDir = [ path: { "${params.outdir}/${params.aligner}" }, mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + saveAs: { filename -> filename.equals('versions.yml') || filename.endsWith('.log') ? null : filename } ] } + withName: '.*:QUANTIFY_STAR_SALMON:SE_GENE' { + ext.prefix = { "${params.pseudo_aligner}.merged.gene_counts" } + } + withName: '.*:QUANTIFY_STAR_SALMON:SE_GENE_SCALED' { + ext.prefix = { "${params.pseudo_aligner}.merged.gene_counts_scaled" } + } + withName: '.*:QUANTIFY_STAR_SALMON:SE_GENE_LENGTH_SCALED' { + ext.prefix = { "${params.pseudo_aligner}.merged.gene_counts_length_scaled" } + } + withName: '.*:QUANTIFY_STAR_SALMON:SE_TRANSCRIPT' { + ext.prefix = { "${params.pseudo_aligner}.merged.transcript_counts" } + } } if (params.with_umi) { @@ -365,9 +378,21 @@ if (!params.skip_pseudo_alignment && params.pseudo_aligner) { publishDir = [ path: { "${params.outdir}/${params.pseudo_aligner}" }, mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + saveAs: { filename -> filename.equals('versions.yml') || filename.endsWith('.log') ? null : filename } ] } + withName: '.*:QUANTIFY_PSEUDO_ALIGNMENT:SE_GENE' { + ext.prefix = { "${params.pseudo_aligner}.merged.gene_counts" } + } + withName: '.*:QUANTIFY_PSEUDO_ALIGNMENT:SE_GENE_SCALED' { + ext.prefix = { "${params.pseudo_aligner}.merged.gene_counts_scaled" } + } + withName: '.*:QUANTIFY_PSEUDO_ALIGNMENT:SE_GENE_LENGTH_SCALED' { + ext.prefix = { "${params.pseudo_aligner}.merged.gene_counts_length_scaled" } + } + withName: '.*:QUANTIFY_PSEUDO_ALIGNMENT:SE_TRANSCRIPT' { + ext.prefix = { "${params.pseudo_aligner}.merged.transcript_counts" } + } } if (!params.skip_qc & !params.skip_deseq2_qc) { From db1600207b750a8920fbc9a90a5410da8ae2a92f Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Wed, 14 Feb 2024 18:49:07 +0000 Subject: [PATCH 055/634] Also fix template config --- .../quantify_pseudo_alignment/nextflow.config | 18 +++++++++++++++--- workflows/rnaseq/nextflow.config | 1 + 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/subworkflows/local/quantify_pseudo_alignment/nextflow.config b/subworkflows/local/quantify_pseudo_alignment/nextflow.config index 01c9429a9..16c0c50d3 100644 --- a/subworkflows/local/quantify_pseudo_alignment/nextflow.config +++ b/subworkflows/local/quantify_pseudo_alignment/nextflow.config @@ -26,7 +26,7 @@ if (!params.skip_pseudo_alignment && params.pseudo_aligner == 'kallisto') { if (!params.skip_pseudo_alignment && params.pseudo_aligner) { process { - withName: '.*:QUANTIFY_PSEUDO_ALIGNMENT:TX2GENE' { + withName: '.*:QUANTIFY_PSEUDO_ALIGNMENT:CUSTOM_TX2GENE' { publishDir = [ path: { "${params.outdir}/${params.pseudo_aligner}" }, mode: params.publish_dir_mode, @@ -34,7 +34,7 @@ if (!params.skip_pseudo_alignment && params.pseudo_aligner) { ] } - withName: '.*:QUANTIFY_PSEUDO_ALIGNMENT:TXIMPORT' { + withName: '.*:QUANTIFY_PSEUDO_ALIGNMENT:TXIMETA_TXIMPORT' { ext.prefix = { "${quant_type}.merged" } publishDir = [ path: { "${params.outdir}/${params.pseudo_aligner}" }, @@ -48,8 +48,20 @@ if (!params.skip_pseudo_alignment && params.pseudo_aligner) { publishDir = [ path: { "${params.outdir}/${params.pseudo_aligner}" }, mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + saveAs: { filename -> filename.equals('versions.yml') || filename.endsWith('.log') ? null : filename } ] } + withName: '.*:QUANTIFY_PSEUDO_ALIGNMENT:SE_GENE' { + ext.prefix = { "${params.pseudo_aligner}.merged.gene_counts" } + } + withName: '.*:QUANTIFY_PSEUDO_ALIGNMENT:SE_GENE_SCALED' { + ext.prefix = { "${params.pseudo_aligner}.merged.gene_counts_scaled" } + } + withName: '.*:QUANTIFY_PSEUDO_ALIGNMENT:SE_GENE_LENGTH_SCALED' { + ext.prefix = { "${params.pseudo_aligner}.merged.gene_counts_length_scaled" } + } + withName: '.*:QUANTIFY_PSEUDO_ALIGNMENT:SE_TRANSCRIPT' { + ext.prefix = { "${params.pseudo_aligner}.merged.transcript_counts" } + } } } diff --git a/workflows/rnaseq/nextflow.config b/workflows/rnaseq/nextflow.config index 38c8585f2..f79737c24 100644 --- a/workflows/rnaseq/nextflow.config +++ b/workflows/rnaseq/nextflow.config @@ -375,6 +375,7 @@ if (!params.skip_pseudo_alignment && params.pseudo_aligner) { } withName: '.*:QUANTIFY_PSEUDO_ALIGNMENT:SE_.*' { + ext.args = '--assay_names counts,abundance' publishDir = [ path: { "${params.outdir}/${params.pseudo_aligner}" }, mode: params.publish_dir_mode, From 2ced0347f087f841ca9f669dd4e56a9d54a5473f Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Wed, 14 Feb 2024 18:51:30 +0000 Subject: [PATCH 056/634] Update changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index f87b28aed..f381b2183 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 - [PR #1186](https://github.com/nf-core/rnaseq/pull/1186) - Properly update qualimap/rnaseq module (ie not patch) - [PR #1201](https://github.com/nf-core/rnaseq/pull/1201) - Template update for nf-core/tools v2.12 - [PR #1206](https://github.com/nf-core/rnaseq/pull/1206) - Remove `lib/` directory and `modules.config` +- [PR #1210](https://github.com/nf-core/rnaseq/pull/1210) - Use pseudoalignment subworkflow components from nf-core/modules ### Parameters From ab680b751a34a1e51f013466e6417eed5dc1834f Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Fri, 16 Feb 2024 10:16:41 +0000 Subject: [PATCH 057/634] Pass transcriptome fasta through to samtools stats --- workflows/rnaseq/main.nf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/workflows/rnaseq/main.nf b/workflows/rnaseq/main.nf index c62ca66bd..1b88ed2e5 100755 --- a/workflows/rnaseq/main.nf +++ b/workflows/rnaseq/main.nf @@ -334,7 +334,7 @@ workflow NFCORE_RNASEQ { // Co-ordinate sort, index and run stats on transcriptome BAM BAM_SORT_STATS_SAMTOOLS ( ch_transcriptome_bam, - ch_fasta.map { [ [:], it ] } + ch_transcript_fasta.map { [ [:], it ] } ) ch_transcriptome_sorted_bam = BAM_SORT_STATS_SAMTOOLS.out.bam ch_transcriptome_sorted_bai = BAM_SORT_STATS_SAMTOOLS.out.bai From 34f57c0f32727924f333ffe7ab02d4ac8a12225d Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Fri, 16 Feb 2024 10:21:05 +0000 Subject: [PATCH 058/634] update changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index c93a8f724..a1a6fe5b8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [PR #1206](https://github.com/nf-core/rnaseq/pull/1206) - Remove `lib/` directory and `modules.config` - [PR #1212](https://github.com/nf-core/rnaseq/pull/1212) - Update all modules and subworkflows to latest versions - [PR #1210](https://github.com/nf-core/rnaseq/pull/1210) - Use pseudoalignment subworkflow components from nf-core/modules +- [PR #1213](https://github.com/nf-core/rnaseq/pull/1213) - Pass transcriptome fasta through to samtools stats ### Parameters From 8cdf28a28cc7b1389a17cbce63b535c8693b703d Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Fri, 16 Feb 2024 11:23:18 +0000 Subject: [PATCH 059/634] Bump umitools and delocalise prepareforrsem --- bin/prepare-for-rsem.py | 270 ------------------ modules.json | 27 +- .../nf-core/samtools/flagstat/environment.yml | 4 +- modules/nf-core/samtools/flagstat/main.nf | 4 +- .../samtools/flagstat/tests/main.nf.test.snap | 6 +- .../nf-core/samtools/idxstats/environment.yml | 4 +- modules/nf-core/samtools/idxstats/main.nf | 4 +- .../samtools/idxstats/tests/main.nf.test.snap | 6 +- .../nf-core/samtools/index/environment.yml | 4 +- modules/nf-core/samtools/index/main.nf | 4 +- .../samtools/index/tests/main.nf.test.snap | 18 +- modules/nf-core/samtools/sort/environment.yml | 4 +- modules/nf-core/samtools/sort/main.nf | 4 +- .../samtools/sort/tests/main.nf.test.snap | 18 +- .../nf-core/samtools/stats/environment.yml | 4 +- modules/nf-core/samtools/stats/main.nf | 4 +- .../samtools/stats/tests/main.nf.test.snap | 24 +- .../nf-core/umitools/dedup/environment.yml | 2 +- modules/nf-core/umitools/dedup/main.nf | 4 +- .../nf-core/umitools/extract/environment.yml | 2 +- modules/nf-core/umitools/extract/main.nf | 4 +- .../umitools/extract/tests/main.nf.test.snap | 8 +- .../umitools/prepareforrsem/environment.yml | 7 + .../umitools/prepareforrsem}/main.nf | 25 +- .../nf-core/umitools/prepareforrsem/meta.yml | 53 ++++ .../prepareforrsem/tests/main.nf.test | 62 ++++ .../prepareforrsem/tests/main.nf.test.snap | 62 ++++ .../umitools/prepareforrsem/tests/tags.yml | 2 + .../tests/main.nf.test.snap | 16 +- .../tests/main.nf.test.snap | 18 +- .../tests/main.nf.test.snap | 32 ++- .../tests/main.nf.test.snap | 48 +++- workflows/rnaseq/main.nf | 20 +- 33 files changed, 395 insertions(+), 379 deletions(-) delete mode 100755 bin/prepare-for-rsem.py create mode 100644 modules/nf-core/umitools/prepareforrsem/environment.yml rename modules/{local/umitools_prepareforrsem => nf-core/umitools/prepareforrsem}/main.nf (60%) create mode 100644 modules/nf-core/umitools/prepareforrsem/meta.yml create mode 100644 modules/nf-core/umitools/prepareforrsem/tests/main.nf.test create mode 100644 modules/nf-core/umitools/prepareforrsem/tests/main.nf.test.snap create mode 100644 modules/nf-core/umitools/prepareforrsem/tests/tags.yml diff --git a/bin/prepare-for-rsem.py b/bin/prepare-for-rsem.py deleted file mode 100755 index 6e7258df6..000000000 --- a/bin/prepare-for-rsem.py +++ /dev/null @@ -1,270 +0,0 @@ -#!/usr/bin/env python3 - -""" -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -Credits -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -This script is a clone of the "prepare-for-rsem.py" script written by -Ian Sudbury, Tom Smith and other contributors to the UMI-tools package: -https://github.com/CGATOxford/UMI-tools - -It has been included here to address problems encountered with -Salmon quant and RSEM as discussed in the issue below: -https://github.com/CGATOxford/UMI-tools/issues/465 - -When the "umi_tools prepare-for-rsem" command becomes available in an official -UMI-tools release this script will be replaced and deprecated. - -Commit: -https://github.com/CGATOxford/UMI-tools/blob/bf8608d6a172c5ca0dcf33c126b4e23429177a72/umi_tools/prepare-for-rsem.py - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -prepare_for_rsem - make the output from dedup or group compatible with RSEM -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -The SAM format specification states that the mnext and mpos fields should point -to the primary alignment of a read's mate. However, not all aligners adhere to -this standard. In addition, the RSEM software requires that the mate of a read1 -appears directly after it in its input BAM. This requires that there is exactly -one read1 alignment for every read2 and vice versa. - -In general (except in a few edge cases) UMI tools outputs only the read2 to that -corresponds to the read specified in the mnext and mpos positions of a selected -read1, and only outputs this read once, even if multiple read1s point to it. -This makes UMI-tools outputs incompatible with RSEM. This script takes the output -from dedup or groups and ensures that each read1 has exactly one read2 (and vice -versa), that read2 always appears directly after read1,and that pairs point to -each other (note this is technically not valid SAM format). Copy any specified -tags from read1 to read2 if they are present (by default, UG and BX, the unique -group and correct UMI tags added by _group_) - -Input must to name sorted. - - -https://raw.githubusercontent.com/CGATOxford/UMI-tools/master/LICENSE - -""" - -from umi_tools import Utilities as U -from collections import defaultdict, Counter -import pysam -import sys - -usage = """ -prepare_for_rsem - make output from dedup or group compatible with RSEM - -Usage: umi_tools prepare_for_rsem [OPTIONS] [--stdin=IN_BAM] [--stdout=OUT_BAM] - - note: If --stdout is omited, standard out is output. To - generate a valid BAM file on standard out, please - redirect log with --log=LOGFILE or --log2stderr """ - - -def chunk_bam(bamfile): - """Take in a iterator of pysam.AlignmentSegment entries and yield - lists of reads that all share the same name""" - - last_query_name = None - output_buffer = list() - - for read in bamfile: - if last_query_name is not None and last_query_name != read.query_name: - yield (output_buffer) - output_buffer = list() - - last_query_name = read.query_name - output_buffer.append(read) - - yield (output_buffer) - - -def copy_tags(tags, read1, read2): - """Given a list of tags, copies the values of these tags from read1 - to read2, if the tag is set""" - - for tag in tags: - try: - read1_tag = read1.get_tag(tag, with_value_type=True) - read2.set_tag(tag, value=read1_tag[0], value_type=read1_tag[1]) - except KeyError: - pass - - return read2 - - -def pick_mate(read, template_dict, mate_key): - """Find the mate of read in the template dict using key. It will retrieve - all reads at that key, and then scan to pick the one that refers to _read_ - as it's mate. If there is no such read, it picks a first one it comes to""" - - mate = None - - # get a list of secondary reads at the correct alignment position - potential_mates = template_dict[not read.is_read1][mate_key] - - # search through one at a time to find a read that points to the current read - # as its mate. - for candidate_mate in potential_mates: - if ( - candidate_mate.next_reference_name == read.reference_name - and candidate_mate.next_reference_start == read.pos - ): - mate = candidate_mate - - # if no such read is found, then pick any old secondary alignment at that position - # note: this happens when UMI-tools outputs the wrong read as something's pair. - if mate is None and len(potential_mates) > 0: - mate = potential_mates[0] - - return mate - - -def main(argv=None): - if argv is None: - argv = sys.argv - - # setup command line parser - parser = U.OptionParser(version="%prog version: $Id$", usage=usage, description=globals()["__doc__"]) - group = U.OptionGroup(parser, "RSEM preparation specific options") - - group.add_option( - "--tags", - dest="tags", - type="string", - default="UG,BX", - help="Comma-separated list of tags to transfer from read1 to read2", - ) - group.add_option( - "--sam", dest="sam", action="store_true", default=False, help="input and output SAM rather than BAM" - ) - - parser.add_option_group(group) - - # add common options (-h/--help, ...) and parse command line - (options, args) = U.Start( - parser, argv=argv, add_group_dedup_options=False, add_umi_grouping_options=False, add_sam_options=False - ) - - skipped_stats = Counter() - - if options.stdin != sys.stdin: - in_name = options.stdin.name - options.stdin.close() - else: - in_name = "-" - - if options.sam: - mode = "" - else: - mode = "b" - - inbam = pysam.AlignmentFile(in_name, "r" + mode) - - if options.stdout != sys.stdout: - out_name = options.stdout.name - options.stdout.close() - else: - out_name = "-" - - outbam = pysam.AlignmentFile(out_name, "w" + mode, template=inbam) - - options.tags = options.tags.split(",") - - for template in chunk_bam(inbam): - assert len(set(r.query_name for r in template)) == 1 - current_template = {True: defaultdict(list), False: defaultdict(list)} - - for read in template: - key = (read.reference_name, read.pos, not read.is_secondary) - current_template[read.is_read1][key].append(read) - - output = set() - - for read in template: - mate = None - - # if this read is a non_primary alignment, we first want to check if it has a mate - # with the non-primary alignment flag set. - - mate_key_primary = True - mate_key_secondary = (read.next_reference_name, read.next_reference_start, False) - - # First look for a read that has the same primary/secondary status - # as read (i.e. secondary mate for secondary read, and primary mate - # for primary read) - mate_key = (read.next_reference_name, read.next_reference_start, read.is_secondary) - mate = pick_mate(read, current_template, mate_key) - - # If none was found then look for the opposite (primary mate of secondary - # read or seconadary mate of primary read) - if mate is None: - mate_key = (read.next_reference_name, read.next_reference_start, not read.is_secondary) - mate = pick_mate(read, current_template, mate_key) - - # If we still don't have a mate, then their can't be one? - if mate is None: - skipped_stats["no_mate"] += 1 - U.warn( - "Alignment {} has no mate -- skipped".format( - "\t".join(map(str, [read.query_name, read.flag, read.reference_name, int(read.pos)])) - ) - ) - continue - - # because we might want to make changes to the read, but not have those changes reflected - # if we need the read again,we copy the read. This is only way I can find to do this. - read = pysam.AlignedSegment().from_dict(read.to_dict(), read.header) - mate = pysam.AlignedSegment().from_dict(mate.to_dict(), read.header) - - # Make it so that if our read is secondary, the mate is also secondary. We don't make the - # mate primary if the read is primary because we would otherwise end up with mulitple - # primary alignments. - if read.is_secondary: - mate.is_secondary = True - - # In a situation where there is already one mate for each read, then we will come across - # each pair twice - once when we scan read1 and once when we scan read2. Thus we need - # to make sure we don't output something already output. - if read.is_read1: - mate = copy_tags(options.tags, read, mate) - output_key = str(read) + str(mate) - - if output_key not in output: - output.add(output_key) - outbam.write(read) - outbam.write(mate) - skipped_stats["pairs_output"] += 1 - - elif read.is_read2: - read = copy_tags(options.tags, mate, read) - output_key = str(mate) + str(read) - - if output_key not in output: - output.add(output_key) - outbam.write(mate) - outbam.write(read) - skipped_stats["pairs_output"] += 1 - - else: - skipped_stats["skipped_not_read12"] += 1 - U.warn( - "Alignment {} is neither read1 nor read2 -- skipped".format( - "\t".join(map(str, [read.query_name, read.flag, read.reference_name, int(read.pos)])) - ) - ) - continue - - if not out_name == "-": - outbam.close() - - U.info( - "Total pairs output: {}, Pairs skipped - no mates: {}," - " Pairs skipped - not read1 or 2: {}".format( - skipped_stats["pairs_output"], skipped_stats["no_mate"], skipped_stats["skipped_not_read12"] - ) - ) - U.Stop() - - -if __name__ == "__main__": - sys.exit(main(sys.argv)) diff --git a/modules.json b/modules.json index 0ef7e1035..b565b5e72 100644 --- a/modules.json +++ b/modules.json @@ -157,17 +157,17 @@ }, "samtools/flagstat": { "branch": "master", - "git_sha": "8d8f0ae52d6c9342bd41c33dda0b74b07e32153d", + "git_sha": "f4596fe0bdc096cf53ec4497e83defdb3a94ff62", "installed_by": ["bam_stats_samtools"] }, "samtools/idxstats": { "branch": "master", - "git_sha": "8d8f0ae52d6c9342bd41c33dda0b74b07e32153d", + "git_sha": "f4596fe0bdc096cf53ec4497e83defdb3a94ff62", "installed_by": ["bam_stats_samtools"] }, "samtools/index": { "branch": "master", - "git_sha": "8d8f0ae52d6c9342bd41c33dda0b74b07e32153d", + "git_sha": "f4596fe0bdc096cf53ec4497e83defdb3a94ff62", "installed_by": [ "bam_dedup_stats_samtools_umitools", "bam_markduplicates_picard", @@ -176,12 +176,12 @@ }, "samtools/sort": { "branch": "master", - "git_sha": "8d8f0ae52d6c9342bd41c33dda0b74b07e32153d", + "git_sha": "f4596fe0bdc096cf53ec4497e83defdb3a94ff62", "installed_by": ["bam_sort_stats_samtools"] }, "samtools/stats": { "branch": "master", - "git_sha": "8d8f0ae52d6c9342bd41c33dda0b74b07e32153d", + "git_sha": "f4596fe0bdc096cf53ec4497e83defdb3a94ff62", "installed_by": ["bam_stats_samtools"] }, "sortmerna": { @@ -236,14 +236,19 @@ }, "umitools/dedup": { "branch": "master", - "git_sha": "65ad3e0b9a4099592e1102e92e10455dc661cf53", + "git_sha": "ff7e93715a2acecf3f143ec78c9858deba2984d0", "installed_by": ["bam_dedup_stats_samtools_umitools"] }, "umitools/extract": { "branch": "master", - "git_sha": "9e56d7a647fbf6f7e45ef123bc916ad66b6f7c9d", + "git_sha": "ff7e93715a2acecf3f143ec78c9858deba2984d0", "installed_by": ["fastq_fastqc_umitools_fastp", "fastq_fastqc_umitools_trimgalore"] }, + "umitools/prepareforrsem": { + "branch": "master", + "git_sha": "ff7e93715a2acecf3f143ec78c9858deba2984d0", + "installed_by": ["modules"] + }, "untar": { "branch": "master", "git_sha": "e719354ba77df0a1bd310836aa2039b45c29d620", @@ -255,12 +260,12 @@ "nf-core": { "bam_dedup_stats_samtools_umitools": { "branch": "master", - "git_sha": "0c38be7e652a0b2f3a37681ee4c0dbdf85677647", + "git_sha": "f4596fe0bdc096cf53ec4497e83defdb3a94ff62", "installed_by": ["subworkflows"] }, "bam_markduplicates_picard": { "branch": "master", - "git_sha": "0c38be7e652a0b2f3a37681ee4c0dbdf85677647", + "git_sha": "f4596fe0bdc096cf53ec4497e83defdb3a94ff62", "installed_by": ["subworkflows"] }, "bam_rseqc": { @@ -270,12 +275,12 @@ }, "bam_sort_stats_samtools": { "branch": "master", - "git_sha": "0c38be7e652a0b2f3a37681ee4c0dbdf85677647", + "git_sha": "f4596fe0bdc096cf53ec4497e83defdb3a94ff62", "installed_by": ["fastq_align_hisat2"] }, "bam_stats_samtools": { "branch": "master", - "git_sha": "0c38be7e652a0b2f3a37681ee4c0dbdf85677647", + "git_sha": "f4596fe0bdc096cf53ec4497e83defdb3a94ff62", "installed_by": [ "bam_dedup_stats_samtools_umitools", "bam_markduplicates_picard", diff --git a/modules/nf-core/samtools/flagstat/environment.yml b/modules/nf-core/samtools/flagstat/environment.yml index dd0b5c196..bd57cb54d 100644 --- a/modules/nf-core/samtools/flagstat/environment.yml +++ b/modules/nf-core/samtools/flagstat/environment.yml @@ -4,5 +4,5 @@ channels: - bioconda - defaults dependencies: - - bioconda::samtools=1.18 - - bioconda::htslib=1.18 + - bioconda::samtools=1.19.2 + - bioconda::htslib=1.19.1 diff --git a/modules/nf-core/samtools/flagstat/main.nf b/modules/nf-core/samtools/flagstat/main.nf index f1893d7cc..eb5f52523 100644 --- a/modules/nf-core/samtools/flagstat/main.nf +++ b/modules/nf-core/samtools/flagstat/main.nf @@ -4,8 +4,8 @@ process SAMTOOLS_FLAGSTAT { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/samtools:1.18--h50ea8bc_1' : - 'biocontainers/samtools:1.18--h50ea8bc_1' }" + 'https://depot.galaxyproject.org/singularity/samtools:1.19.2--h50ea8bc_0' : + 'biocontainers/samtools:1.19.2--h50ea8bc_0' }" input: tuple val(meta), path(bam), path(bai) diff --git a/modules/nf-core/samtools/flagstat/tests/main.nf.test.snap b/modules/nf-core/samtools/flagstat/tests/main.nf.test.snap index 43f3bc2c3..a76fc27e4 100644 --- a/modules/nf-core/samtools/flagstat/tests/main.nf.test.snap +++ b/modules/nf-core/samtools/flagstat/tests/main.nf.test.snap @@ -20,13 +20,13 @@ "versions": { "content": [ [ - "versions.yml:md5,27815e477dcca61cd6b5ca2a94993965" + "versions.yml:md5,fd0030ce49ab3a92091ad80260226452" ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.04.3" + "nextflow": "24.01.0" }, - "timestamp": "2024-02-12T18:31:37.788139" + "timestamp": "2024-02-13T16:11:44.299617452" } } \ No newline at end of file diff --git a/modules/nf-core/samtools/idxstats/environment.yml b/modules/nf-core/samtools/idxstats/environment.yml index de3ed47e8..174973b88 100644 --- a/modules/nf-core/samtools/idxstats/environment.yml +++ b/modules/nf-core/samtools/idxstats/environment.yml @@ -4,5 +4,5 @@ channels: - bioconda - defaults dependencies: - - bioconda::samtools=1.18 - - bioconda::htslib=1.18 + - bioconda::samtools=1.19.2 + - bioconda::htslib=1.19.1 diff --git a/modules/nf-core/samtools/idxstats/main.nf b/modules/nf-core/samtools/idxstats/main.nf index 00d916bbf..a544026f3 100644 --- a/modules/nf-core/samtools/idxstats/main.nf +++ b/modules/nf-core/samtools/idxstats/main.nf @@ -4,8 +4,8 @@ process SAMTOOLS_IDXSTATS { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/samtools:1.18--h50ea8bc_1' : - 'biocontainers/samtools:1.18--h50ea8bc_1' }" + 'https://depot.galaxyproject.org/singularity/samtools:1.19.2--h50ea8bc_0' : + 'biocontainers/samtools:1.19.2--h50ea8bc_0' }" input: tuple val(meta), path(bam), path(bai) diff --git a/modules/nf-core/samtools/idxstats/tests/main.nf.test.snap b/modules/nf-core/samtools/idxstats/tests/main.nf.test.snap index 3864fd70a..a7050bdc8 100644 --- a/modules/nf-core/samtools/idxstats/tests/main.nf.test.snap +++ b/modules/nf-core/samtools/idxstats/tests/main.nf.test.snap @@ -2,14 +2,14 @@ "versions": { "content": [ [ - "versions.yml:md5,12c42ca48b15e8a3d2a05e99958f1cb9" + "versions.yml:md5,613dde56f108418039ffcdeeddba397a" ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.04.3" + "nextflow": "24.01.0" }, - "timestamp": "2024-02-12T18:36:41.565552" + "timestamp": "2024-02-13T16:16:50.147462763" }, "idxstats": { "content": [ diff --git a/modules/nf-core/samtools/index/environment.yml b/modules/nf-core/samtools/index/environment.yml index 81f093915..a5e506498 100644 --- a/modules/nf-core/samtools/index/environment.yml +++ b/modules/nf-core/samtools/index/environment.yml @@ -4,5 +4,5 @@ channels: - bioconda - defaults dependencies: - - bioconda::samtools=1.18 - - bioconda::htslib=1.18 + - bioconda::samtools=1.19.2 + - bioconda::htslib=1.19.1 diff --git a/modules/nf-core/samtools/index/main.nf b/modules/nf-core/samtools/index/main.nf index 8ad18fdc2..dc14f98d6 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.18--h50ea8bc_1' : - 'biocontainers/samtools:1.18--h50ea8bc_1' }" + 'https://depot.galaxyproject.org/singularity/samtools:1.19.2--h50ea8bc_0' : + 'biocontainers/samtools:1.19.2--h50ea8bc_0' }" input: tuple val(meta), path(input) 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 48ac6caf7..3dc8e7de8 100644 --- a/modules/nf-core/samtools/index/tests/main.nf.test.snap +++ b/modules/nf-core/samtools/index/tests/main.nf.test.snap @@ -2,26 +2,26 @@ "crai_versions": { "content": [ [ - "versions.yml:md5,d8b295c77d732bcea92fa2aa0374d127" + "versions.yml:md5,cc4370091670b64bba7c7206403ffb3e" ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.04.3" + "nextflow": "24.01.0" }, - "timestamp": "2024-02-12T18:41:38.453554" + "timestamp": "2024-02-13T16:12:00.324667957" }, "csi_versions": { "content": [ [ - "versions.yml:md5,d8b295c77d732bcea92fa2aa0374d127" + "versions.yml:md5,cc4370091670b64bba7c7206403ffb3e" ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.04.3" + "nextflow": "24.01.0" }, - "timestamp": "2024-02-12T18:42:06.000737" + "timestamp": "2024-02-13T16:12:07.885103162" }, "crai": { "content": [ @@ -62,13 +62,13 @@ "bai_versions": { "content": [ [ - "versions.yml:md5,d8b295c77d732bcea92fa2aa0374d127" + "versions.yml:md5,cc4370091670b64bba7c7206403ffb3e" ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.04.3" + "nextflow": "24.01.0" }, - "timestamp": "2024-02-12T18:40:46.583687" + "timestamp": "2024-02-13T16:11:51.641425452" } } \ No newline at end of file diff --git a/modules/nf-core/samtools/sort/environment.yml b/modules/nf-core/samtools/sort/environment.yml index f4064b720..4d898e486 100644 --- a/modules/nf-core/samtools/sort/environment.yml +++ b/modules/nf-core/samtools/sort/environment.yml @@ -4,5 +4,5 @@ channels: - bioconda - defaults dependencies: - - bioconda::samtools=1.18 - - bioconda::htslib=1.18 + - bioconda::samtools=1.19.2 + - bioconda::htslib=1.19.1 diff --git a/modules/nf-core/samtools/sort/main.nf b/modules/nf-core/samtools/sort/main.nf index 4a666d42e..cdd8305d3 100644 --- a/modules/nf-core/samtools/sort/main.nf +++ b/modules/nf-core/samtools/sort/main.nf @@ -4,8 +4,8 @@ process SAMTOOLS_SORT { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/samtools:1.18--h50ea8bc_1' : - 'biocontainers/samtools:1.18--h50ea8bc_1' }" + 'https://depot.galaxyproject.org/singularity/samtools:1.19.2--h50ea8bc_0' : + 'biocontainers/samtools:1.19.2--h50ea8bc_0' }" input: tuple val(meta), path(bam) diff --git a/modules/nf-core/samtools/sort/tests/main.nf.test.snap b/modules/nf-core/samtools/sort/tests/main.nf.test.snap index 418609249..a7cf02101 100644 --- a/modules/nf-core/samtools/sort/tests/main.nf.test.snap +++ b/modules/nf-core/samtools/sort/tests/main.nf.test.snap @@ -12,14 +12,14 @@ "bam_stub_versions": { "content": [ [ - "versions.yml:md5,33b6a403dc19a0d28e4219ccab0a1d80" + "versions.yml:md5,e6d43fefc9a8bff91c2ce6e3a1716eca" ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.04.3" + "nextflow": "24.01.0" }, - "timestamp": "2024-02-12T19:21:04.36924" + "timestamp": "2024-02-13T16:15:00.20800281" }, "bam": { "content": [ @@ -30,14 +30,14 @@ "id": "test", "single_end": false }, - "test.sorted.bam:md5,ea6a0fef94eb534e901f107a05a33a06" + "test.sorted.bam:md5,c6ea1346ec4aae007eb40b708935088c" ] ], "1": [ ], "2": [ - "versions.yml:md5,33b6a403dc19a0d28e4219ccab0a1d80" + "versions.yml:md5,e6d43fefc9a8bff91c2ce6e3a1716eca" ], "bam": [ [ @@ -45,21 +45,21 @@ "id": "test", "single_end": false }, - "test.sorted.bam:md5,ea6a0fef94eb534e901f107a05a33a06" + "test.sorted.bam:md5,c6ea1346ec4aae007eb40b708935088c" ] ], "csi": [ ], "versions": [ - "versions.yml:md5,33b6a403dc19a0d28e4219ccab0a1d80" + "versions.yml:md5,e6d43fefc9a8bff91c2ce6e3a1716eca" ] } ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.04.3" + "nextflow": "24.01.0" }, - "timestamp": "2024-02-12T19:20:33.717285" + "timestamp": "2024-02-13T16:14:52.736359271" } } \ No newline at end of file diff --git a/modules/nf-core/samtools/stats/environment.yml b/modules/nf-core/samtools/stats/environment.yml index b45ba90c7..67bb0ca40 100644 --- a/modules/nf-core/samtools/stats/environment.yml +++ b/modules/nf-core/samtools/stats/environment.yml @@ -4,5 +4,5 @@ channels: - bioconda - defaults dependencies: - - bioconda::samtools=1.18 - - bioconda::htslib=1.18 + - bioconda::samtools=1.19.2 + - bioconda::htslib=1.19.1 diff --git a/modules/nf-core/samtools/stats/main.nf b/modules/nf-core/samtools/stats/main.nf index 7539140ab..52b00f4b6 100644 --- a/modules/nf-core/samtools/stats/main.nf +++ b/modules/nf-core/samtools/stats/main.nf @@ -4,8 +4,8 @@ process SAMTOOLS_STATS { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/samtools:1.18--h50ea8bc_1' : - 'biocontainers/samtools:1.18--h50ea8bc_1' }" + 'https://depot.galaxyproject.org/singularity/samtools:1.19.2--h50ea8bc_0' : + 'biocontainers/samtools:1.19.2--h50ea8bc_0' }" input: tuple val(meta), path(input), path(input_index) diff --git a/modules/nf-core/samtools/stats/tests/main.nf.test.snap b/modules/nf-core/samtools/stats/tests/main.nf.test.snap index 7d231f8fb..1b7c9ba44 100644 --- a/modules/nf-core/samtools/stats/tests/main.nf.test.snap +++ b/modules/nf-core/samtools/stats/tests/main.nf.test.snap @@ -8,11 +8,11 @@ "id": "test", "single_end": false }, - "test.stats:md5,dfbfa130d4a6925ddd1931dcd8354a43" + "test.stats:md5,01812900aa4027532906c5d431114233" ] ], "1": [ - "versions.yml:md5,650a365c6635001436008350ae83337c" + "versions.yml:md5,0514ceb1769b2a88843e08c1f82624a9" ], "stats": [ [ @@ -20,19 +20,19 @@ "id": "test", "single_end": false }, - "test.stats:md5,dfbfa130d4a6925ddd1931dcd8354a43" + "test.stats:md5,01812900aa4027532906c5d431114233" ] ], "versions": [ - "versions.yml:md5,650a365c6635001436008350ae83337c" + "versions.yml:md5,0514ceb1769b2a88843e08c1f82624a9" ] } ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.04.3" + "nextflow": "24.01.0" }, - "timestamp": "2024-02-12T19:36:55.883828" + "timestamp": "2024-02-13T16:15:25.562429714" }, "bam": { "content": [ @@ -43,11 +43,11 @@ "id": "test", "single_end": false }, - "test.stats:md5,045a48208b1c6f5b8af4347fe31f4def" + "test.stats:md5,5d8681bf541199898c042bf400391d59" ] ], "1": [ - "versions.yml:md5,650a365c6635001436008350ae83337c" + "versions.yml:md5,0514ceb1769b2a88843e08c1f82624a9" ], "stats": [ [ @@ -55,18 +55,18 @@ "id": "test", "single_end": false }, - "test.stats:md5,045a48208b1c6f5b8af4347fe31f4def" + "test.stats:md5,5d8681bf541199898c042bf400391d59" ] ], "versions": [ - "versions.yml:md5,650a365c6635001436008350ae83337c" + "versions.yml:md5,0514ceb1769b2a88843e08c1f82624a9" ] } ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.04.3" + "nextflow": "24.01.0" }, - "timestamp": "2024-02-12T19:34:50.591803" + "timestamp": "2024-02-13T16:15:07.857611509" } } \ No newline at end of file diff --git a/modules/nf-core/umitools/dedup/environment.yml b/modules/nf-core/umitools/dedup/environment.yml index f443735f4..bc497824f 100644 --- a/modules/nf-core/umitools/dedup/environment.yml +++ b/modules/nf-core/umitools/dedup/environment.yml @@ -4,4 +4,4 @@ channels: - bioconda - defaults dependencies: - - bioconda::umi_tools=1.1.4 + - bioconda::umi_tools=1.1.5 diff --git a/modules/nf-core/umitools/dedup/main.nf b/modules/nf-core/umitools/dedup/main.nf index 64ab8f98e..b2d11ebf5 100644 --- a/modules/nf-core/umitools/dedup/main.nf +++ b/modules/nf-core/umitools/dedup/main.nf @@ -4,8 +4,8 @@ process UMITOOLS_DEDUP { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/umi_tools:1.1.4--py38hbff2b2d_1' : - 'biocontainers/umi_tools:1.1.4--py38hbff2b2d_1' }" + 'https://depot.galaxyproject.org/singularity/umi_tools:1.1.5--py39hf95cd2a_0' : + 'biocontainers/umi_tools:1.1.5--py39hf95cd2a_0' }" input: tuple val(meta), path(bam), path(bai) diff --git a/modules/nf-core/umitools/extract/environment.yml b/modules/nf-core/umitools/extract/environment.yml index 7d08ac0ec..aab452d1e 100644 --- a/modules/nf-core/umitools/extract/environment.yml +++ b/modules/nf-core/umitools/extract/environment.yml @@ -4,4 +4,4 @@ channels: - bioconda - defaults dependencies: - - bioconda::umi_tools=1.1.4 + - bioconda::umi_tools=1.1.5 diff --git a/modules/nf-core/umitools/extract/main.nf b/modules/nf-core/umitools/extract/main.nf index 4bd79e79f..8719e5f67 100644 --- a/modules/nf-core/umitools/extract/main.nf +++ b/modules/nf-core/umitools/extract/main.nf @@ -5,8 +5,8 @@ process UMITOOLS_EXTRACT { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/umi_tools:1.1.4--py38hbff2b2d_1' : - 'biocontainers/umi_tools:1.1.4--py38hbff2b2d_1' }" + 'https://depot.galaxyproject.org/singularity/umi_tools:1.1.5--py39hf95cd2a_0' : + 'biocontainers/umi_tools:1.1.5--py39hf95cd2a_0' }" input: tuple val(meta), path(reads) diff --git a/modules/nf-core/umitools/extract/tests/main.nf.test.snap b/modules/nf-core/umitools/extract/tests/main.nf.test.snap index 6d5944f1d..bf82701dd 100644 --- a/modules/nf-core/umitools/extract/tests/main.nf.test.snap +++ b/modules/nf-core/umitools/extract/tests/main.nf.test.snap @@ -2,9 +2,13 @@ "versions": { "content": [ [ - "versions.yml:md5,5a18da2d3a5a4de15e7aaae9082d7abb" + "versions.yml:md5,568d243174c081a0301e74ed42e59b48" ] ], - "timestamp": "2023-12-08T09:41:43.540658352" + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-16T10:01:33.326046137" } } \ No newline at end of file diff --git a/modules/nf-core/umitools/prepareforrsem/environment.yml b/modules/nf-core/umitools/prepareforrsem/environment.yml new file mode 100644 index 000000000..dbb1bde77 --- /dev/null +++ b/modules/nf-core/umitools/prepareforrsem/environment.yml @@ -0,0 +1,7 @@ +name: umitools_prepareforrsem +channels: + - conda-forge + - bioconda + - defaults +dependencies: + - bioconda::umi_tools=1.1.5 diff --git a/modules/local/umitools_prepareforrsem/main.nf b/modules/nf-core/umitools/prepareforrsem/main.nf similarity index 60% rename from modules/local/umitools_prepareforrsem/main.nf rename to modules/nf-core/umitools/prepareforrsem/main.nf index d3c2bd2c2..6a511af31 100644 --- a/modules/local/umitools_prepareforrsem/main.nf +++ b/modules/nf-core/umitools/prepareforrsem/main.nf @@ -2,13 +2,13 @@ process UMITOOLS_PREPAREFORRSEM { tag "$meta.id" label 'process_medium' - conda "bioconda::umi_tools=1.1.4" + conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/umi_tools:1.1.4--py38hbff2b2d_1' : - 'biocontainers/umi_tools:1.1.4--py38hbff2b2d_1' }" + 'https://depot.galaxyproject.org/singularity/umi_tools:1.1.5--py39hf95cd2a_0' : + 'biocontainers/umi_tools:1.1.5--py39hf95cd2a_0' }" input: - tuple val(meta), path(bam) + tuple val(meta), path(bam), path(bai) output: tuple val(meta), path('*.bam'), emit: bam @@ -18,11 +18,11 @@ process UMITOOLS_PREPAREFORRSEM { when: task.ext.when == null || task.ext.when - script: // This script is bundled with the pipeline, in nf-core/rnaseq/bin/ + script: def args = task.ext.args ?: '' def prefix = task.ext.prefix ?: "${meta.id}" """ - prepare-for-rsem.py \\ + umi_tools prepare-for-rsem \\ --stdin=$bam \\ --stdout=${prefix}.bam \\ --log=${prefix}.prepare_for_rsem.log \\ @@ -30,7 +30,18 @@ process UMITOOLS_PREPAREFORRSEM { cat <<-END_VERSIONS > versions.yml "${task.process}": - umitools: \$(umi_tools --version | sed 's/^.*UMI-tools version://; s/ *\$//') + umitools: \$( umi_tools --version | sed '/version:/!d; s/.*: //' ) + END_VERSIONS + """ + + stub: + """ + touch ${meta.id}.bam + touch ${meta.id}.log + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + umitools: \$( umi_tools --version | sed '/version:/!d; s/.*: //' ) END_VERSIONS """ } diff --git a/modules/nf-core/umitools/prepareforrsem/meta.yml b/modules/nf-core/umitools/prepareforrsem/meta.yml new file mode 100644 index 000000000..8b85366cc --- /dev/null +++ b/modules/nf-core/umitools/prepareforrsem/meta.yml @@ -0,0 +1,53 @@ +name: umitools_prepareforrsem +description: Make the output from umi_tools dedup or group compatible with RSEM +keywords: + - umitools + - rsem + - salmon + - dedup +tools: + - umi_tools: + description: > + UMI-tools contains tools for dealing with Unique Molecular Identifiers (UMIs)/Random Molecular Tags (RMTs) and single cell RNA-Seq cell barcodes + documentation: https://umi-tools.readthedocs.io/en/latest/ + license: ["MIT"] +input: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - bam: + type: file + description: | + BAM file containing reads to be deduplicated via UMIs. + pattern: "*.{bam}" + - bai: + type: file + description: | + BAM index files corresponding to the input BAM file. + pattern: "*.{bai}" +output: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - bam: + type: file + description: Prepared BAM file. + pattern: "*.{bam}" + - log: + type: file + description: File with logging information + pattern: "*.{log}" + - versions: + type: file + description: File containing software versions + pattern: "versions.yml" +authors: + - "@drpatelh" + - "@pinin4fjords" +maintainers: + - "@drpatelh" + - "@pinin4fjords" diff --git a/modules/nf-core/umitools/prepareforrsem/tests/main.nf.test b/modules/nf-core/umitools/prepareforrsem/tests/main.nf.test new file mode 100644 index 000000000..d78158bae --- /dev/null +++ b/modules/nf-core/umitools/prepareforrsem/tests/main.nf.test @@ -0,0 +1,62 @@ +nextflow_process { + + name "Test Process UMITOOLS_PREPAREFORRSEM" + script "../main.nf" + process "UMITOOLS_PREPAREFORRSEM" + + tag "modules" + tag "modules_nfcore" + tag "umitools" + tag "umitools/prepareforrsem" + + test("sarscov2 - bam") { + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.test_data['sarscov2']['illumina']['test_paired_end_sorted_bam'], checkIfExists: true), + file(params.test_data['sarscov2']['illumina']['test_paired_end_sorted_bam_bai'], checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out.bam).match('bam_sarscov2_bam') }, + { assert snapshot(process.out.versions).match('versions_sarscov2_bam') } + ) + } + + } + + test("sarscov2 - bam - stub") { + + options "-stub" + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.test_data['sarscov2']['illumina']['test_paired_end_sorted_bam'], checkIfExists: true), + file(params.test_data['sarscov2']['illumina']['test_paired_end_sorted_bam_bai'], checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out.bam).match('bam_sarscov2_bam - stub') }, + { assert snapshot(process.out.versions).match('versions_sarscov2_bam - stub') } + ) + } + + } + +} diff --git a/modules/nf-core/umitools/prepareforrsem/tests/main.nf.test.snap b/modules/nf-core/umitools/prepareforrsem/tests/main.nf.test.snap new file mode 100644 index 000000000..c1e863f6f --- /dev/null +++ b/modules/nf-core/umitools/prepareforrsem/tests/main.nf.test.snap @@ -0,0 +1,62 @@ +{ + "versions_sarscov2_bam": { + "content": [ + [ + "versions.yml:md5,3403849e88fbd33fadd928f8b6ca60bb" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-16T09:46:33.206750132" + }, + "bam_sarscov2_bam": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test.bam:md5,fe4b8302182615651e4e7784ec67c819" + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-12T17:33:02.066537672" + }, + "bam_sarscov2_bam - stub": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-12T17:33:39.36279218" + }, + "versions_sarscov2_bam - stub": { + "content": [ + [ + "versions.yml:md5,3403849e88fbd33fadd928f8b6ca60bb" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-16T09:46:47.363697981" + } +} \ No newline at end of file diff --git a/modules/nf-core/umitools/prepareforrsem/tests/tags.yml b/modules/nf-core/umitools/prepareforrsem/tests/tags.yml new file mode 100644 index 000000000..804c113dd --- /dev/null +++ b/modules/nf-core/umitools/prepareforrsem/tests/tags.yml @@ -0,0 +1,2 @@ +umitools/prepareforrsem: + - "modules/nf-core/umitools/prepareforrsem/**" diff --git a/subworkflows/nf-core/bam_dedup_stats_samtools_umitools/tests/main.nf.test.snap b/subworkflows/nf-core/bam_dedup_stats_samtools_umitools/tests/main.nf.test.snap index 036a63bbe..5a3e80b4a 100644 --- a/subworkflows/nf-core/bam_dedup_stats_samtools_umitools/tests/main.nf.test.snap +++ b/subworkflows/nf-core/bam_dedup_stats_samtools_umitools/tests/main.nf.test.snap @@ -10,6 +10,10 @@ ] ] ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, "timestamp": "2023-11-06T09:58:40.394333937" }, "test_bam_dedup_stats_samtools_umitools_flagstats": { @@ -23,6 +27,10 @@ ] ] ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, "timestamp": "2023-11-06T09:58:40.385185447" }, "test_bam_dedup_stats_samtools_umitools_stats": { @@ -32,10 +40,14 @@ { "id": "test" }, - "test.stats:md5,6c296bce3659651fb5a08c31db314d91" + "test.stats:md5,02342d307779941001376ff5d19e941a" ] ] ], - "timestamp": "2023-12-04T11:06:41.700472756" + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-02-13T16:45:33.563016651" } } \ No newline at end of file diff --git a/subworkflows/nf-core/bam_markduplicates_picard/tests/main.nf.test.snap b/subworkflows/nf-core/bam_markduplicates_picard/tests/main.nf.test.snap index a208d1014..2f02f747a 100644 --- a/subworkflows/nf-core/bam_markduplicates_picard/tests/main.nf.test.snap +++ b/subworkflows/nf-core/bam_markduplicates_picard/tests/main.nf.test.snap @@ -5,9 +5,13 @@ "test.bam.bai:md5,c41c60d8a94adebe53b6df80b6e90d38", "test.flagstat:md5,93b0ef463df947ede1f42ff60396c34d", "test.idxstats:md5,e179601fa7b8ebce81ac3765206f6c15", - "test.stats:md5,0035ac8900d85e9a790f4c1f48b76947" + "test.stats:md5,9ac28e327a7797d7bb6a5922fde59ed1" ], - "timestamp": "2023-12-05T17:45:12.484869" + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-02-13T16:46:16.302755774" }, "sarscov2 - bam": { "content": [ @@ -15,8 +19,12 @@ "test.bam.bai:md5,4d3ae8d013444b55e17aa0149a2ab404", "test.flagstat:md5,4f7ffd1e6a5e85524d443209ac97d783", "test.idxstats:md5,df60a8c8d6621100d05178c93fb053a2", - "test.stats:md5,e32e7e49dce1fbe327a89e0fb7bc01b1" + "test.stats:md5,d7796222a087b9bb97f631f1c21b9c95" ], - "timestamp": "2023-12-05T17:43:58.582652" + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-02-13T16:46:02.942115679" } -} +} \ No newline at end of file diff --git a/subworkflows/nf-core/bam_sort_stats_samtools/tests/main.nf.test.snap b/subworkflows/nf-core/bam_sort_stats_samtools/tests/main.nf.test.snap index c159eef33..6645a0920 100644 --- a/subworkflows/nf-core/bam_sort_stats_samtools/tests/main.nf.test.snap +++ b/subworkflows/nf-core/bam_sort_stats_samtools/tests/main.nf.test.snap @@ -11,6 +11,10 @@ ] ] ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, "timestamp": "2023-10-22T20:25:03.687121177" }, "test_bam_sort_stats_samtools_paired_end_idxstats": { @@ -25,6 +29,10 @@ ] ] ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, "timestamp": "2023-10-22T20:25:03.709648916" }, "test_bam_sort_stats_samtools_single_end_stats": { @@ -35,11 +43,15 @@ "id": "test", "single_end": false }, - "test.stats:md5,f281507081517414eb1a04b2d9c855b2" + "test.stats:md5,cb0bf2b79de52fdf0c61e80efcdb0bb4" ] ] ], - "timestamp": "2024-01-18T17:10:02.818694" + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-02-13T16:44:38.553256801" }, "test_bam_sort_stats_samtools_paired_end_stats": { "content": [ @@ -49,11 +61,15 @@ "id": "test", "single_end": false }, - "test.stats:md5,e32e7e49dce1fbe327a89e0fb7bc01b1" + "test.stats:md5,d7796222a087b9bb97f631f1c21b9c95" ] ] ], - "timestamp": "2023-12-04T11:06:59.253905951" + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-02-13T16:44:48.355870518" }, "test_bam_sort_stats_samtools_single_end_idxstats": { "content": [ @@ -67,6 +83,10 @@ ] ] ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, "timestamp": "2024-01-18T17:10:02.84631" }, "test_bam_sort_stats_samtools_single_end_flagstats": { @@ -81,6 +101,10 @@ ] ] ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, "timestamp": "2024-01-18T17:10:02.829756" } } \ No newline at end of file diff --git a/subworkflows/nf-core/bam_stats_samtools/tests/main.nf.test.snap b/subworkflows/nf-core/bam_stats_samtools/tests/main.nf.test.snap index 8bf0d379b..bf0b0c696 100644 --- a/subworkflows/nf-core/bam_stats_samtools/tests/main.nf.test.snap +++ b/subworkflows/nf-core/bam_stats_samtools/tests/main.nf.test.snap @@ -11,6 +11,10 @@ ] ] ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, "timestamp": "2023-11-06T09:31:26.194017574" }, "test_bam_stats_samtools_paired_end_stats": { @@ -21,11 +25,15 @@ "id": "test", "single_end": true }, - "test.stats:md5,49e2b43344ff92bc4c02463a58f7ba4a" + "test.stats:md5,ddaf8f33fe9c1ebe9b06933213aec8ed" ] ] ], - "timestamp": "2024-01-18T17:17:27.704335" + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-02-13T16:45:06.230091746" }, "test_bam_stats_samtools_paired_end_flagstats": { "content": [ @@ -39,6 +47,10 @@ ] ] ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, "timestamp": "2024-01-18T17:17:27.717482" }, "test_bam_stats_samtools_single_end_flagstats": { @@ -53,6 +65,10 @@ ] ] ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, "timestamp": "2023-11-06T09:26:10.340046381" }, "test_bam_stats_samtools_paired_end_cram_idxstats": { @@ -67,6 +83,10 @@ ] ] ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, "timestamp": "2023-11-06T09:31:26.207052003" }, "test_bam_stats_samtools_single_end_stats": { @@ -77,11 +97,15 @@ "id": "test", "single_end": true }, - "test.stats:md5,5a6667d97806e5002731e9cf23674fad" + "test.stats:md5,dc178e1a4956043aba8abc83e203521b" ] ] ], - "timestamp": "2023-12-04T11:07:06.676820877" + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-02-13T16:44:57.442208382" }, "test_bam_stats_samtools_paired_end_idxstats": { "content": [ @@ -95,6 +119,10 @@ ] ] ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, "timestamp": "2024-01-18T17:17:27.726719" }, "test_bam_stats_samtools_single_end_idxstats": { @@ -109,6 +137,10 @@ ] ] ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, "timestamp": "2023-11-06T09:26:10.349439801" }, "test_bam_stats_samtools_paired_end_cram_stats": { @@ -119,10 +151,14 @@ "id": "test", "single_end": false }, - "test.stats:md5,2cf2fe93596ee3d74f946097b204a629" + "test.stats:md5,d3345c4887f4a9ea4f7f56405b495db0" ] ] ], - "timestamp": "2023-12-04T11:07:22.30295557" + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-02-13T16:45:14.997164209" } } \ No newline at end of file diff --git a/workflows/rnaseq/main.nf b/workflows/rnaseq/main.nf index c62ca66bd..e3e0e9b24 100755 --- a/workflows/rnaseq/main.nf +++ b/workflows/rnaseq/main.nf @@ -13,7 +13,6 @@ include { DESEQ2_QC as DESEQ2_QC_RSEM } from '../../modules/local/deseq2_ include { DESEQ2_QC as DESEQ2_QC_PSEUDO } from '../../modules/local/deseq2_qc' include { DUPRADAR } from '../../modules/local/dupradar' include { MULTIQC_CUSTOM_BIOTYPE } from '../../modules/local/multiqc_custom_biotype' -include { UMITOOLS_PREPAREFORRSEM as UMITOOLS_PREPAREFORSALMON } from '../../modules/local/umitools_prepareforrsem' // // SUBWORKFLOW: Consisting of a mix of local and nf-core/modules @@ -38,15 +37,16 @@ include { getInferexperimentStrandedness } from '../../subworkflows/local/utils_ // // MODULE: Installed directly from nf-core/modules // -include { CAT_FASTQ } from '../../modules/nf-core/cat/fastq' -include { BBMAP_BBSPLIT } from '../../modules/nf-core/bbmap/bbsplit' -include { SAMTOOLS_SORT } from '../../modules/nf-core/samtools/sort' -include { PRESEQ_LCEXTRAP } from '../../modules/nf-core/preseq/lcextrap' -include { QUALIMAP_RNASEQ } from '../../modules/nf-core/qualimap/rnaseq' -include { SORTMERNA } from '../../modules/nf-core/sortmerna' -include { STRINGTIE_STRINGTIE } from '../../modules/nf-core/stringtie/stringtie' -include { SUBREAD_FEATURECOUNTS } from '../../modules/nf-core/subread/featurecounts' -include { MULTIQC } from '../../modules/nf-core/multiqc' +include { CAT_FASTQ } from '../../modules/nf-core/cat/fastq' +include { BBMAP_BBSPLIT } from '../../modules/nf-core/bbmap/bbsplit' +include { SAMTOOLS_SORT } from '../../modules/nf-core/samtools/sort' +include { PRESEQ_LCEXTRAP } from '../../modules/nf-core/preseq/lcextrap' +include { QUALIMAP_RNASEQ } from '../../modules/nf-core/qualimap/rnaseq' +include { SORTMERNA } from '../../modules/nf-core/sortmerna' +include { STRINGTIE_STRINGTIE } from '../../modules/nf-core/stringtie/stringtie' +include { SUBREAD_FEATURECOUNTS } from '../../modules/nf-core/subread/featurecounts' +include { MULTIQC } from '../../modules/nf-core/multiqc' +include { UMITOOLS_PREPAREFORRSEM as UMITOOLS_PREPAREFORSALMON } from '../../modules/nf-core/umitools_prepareforrsem' // // SUBWORKFLOW: Consisting entirely of nf-core/modules From 760a354d03b4cf1a53dc6bf61dea0d5ed0ae0da6 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Fri, 16 Feb 2024 11:25:14 +0000 Subject: [PATCH 060/634] Update CHANGELOG --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index c93a8f724..c0ff6d1f2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [PR #1206](https://github.com/nf-core/rnaseq/pull/1206) - Remove `lib/` directory and `modules.config` - [PR #1212](https://github.com/nf-core/rnaseq/pull/1212) - Update all modules and subworkflows to latest versions - [PR #1210](https://github.com/nf-core/rnaseq/pull/1210) - Use pseudoalignment subworkflow components from nf-core/modules +- [PR #1214](https://github.com/nf-core/rnaseq/pull/1214) - Bump umitools + delocalise prepareforrsem ### Parameters From e5dd73835c059030d79a7868aaab2fd23e27145d Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Fri, 16 Feb 2024 11:27:24 +0000 Subject: [PATCH 061/634] Fix module import --- workflows/rnaseq/main.nf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/workflows/rnaseq/main.nf b/workflows/rnaseq/main.nf index e3e0e9b24..70ff4f1b5 100755 --- a/workflows/rnaseq/main.nf +++ b/workflows/rnaseq/main.nf @@ -46,7 +46,7 @@ include { SORTMERNA } from '../../mod include { STRINGTIE_STRINGTIE } from '../../modules/nf-core/stringtie/stringtie' include { SUBREAD_FEATURECOUNTS } from '../../modules/nf-core/subread/featurecounts' include { MULTIQC } from '../../modules/nf-core/multiqc' -include { UMITOOLS_PREPAREFORRSEM as UMITOOLS_PREPAREFORSALMON } from '../../modules/nf-core/umitools_prepareforrsem' +include { UMITOOLS_PREPAREFORRSEM as UMITOOLS_PREPAREFORSALMON } from '../../modules/nf-core/umitools/prepareforrsem' // // SUBWORKFLOW: Consisting entirely of nf-core/modules From 45a8f4928f5ed33ee5c3b26d00a18d7f75507d9a Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Fri, 16 Feb 2024 11:46:11 +0000 Subject: [PATCH 062/634] delocalise catadditionalfasta --- subworkflows/local/prepare_genome/main.nf | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/subworkflows/local/prepare_genome/main.nf b/subworkflows/local/prepare_genome/main.nf index 3467529d4..aa92465b2 100644 --- a/subworkflows/local/prepare_genome/main.nf +++ b/subworkflows/local/prepare_genome/main.nf @@ -16,6 +16,7 @@ include { UNTAR as UNTAR_HISAT2_INDEX } from '../../../modules/nf-core/unt include { UNTAR as UNTAR_SALMON_INDEX } from '../../../modules/nf-core/untar' include { UNTAR as UNTAR_KALLISTO_INDEX } from '../../../modules/nf-core/untar' +include { CUSTOM_CATADDITIONALFASTA } from '../../../modules/nf-core/custom/catadditionalfasta' include { CUSTOM_GETCHROMSIZES } from '../../../modules/nf-core/custom/getchromsizes' include { GFFREAD } from '../../../modules/nf-core/gffread' include { BBMAP_BBSPLIT } from '../../../modules/nf-core/bbmap/bbsplit' @@ -29,7 +30,6 @@ include { RSEM_PREPAREREFERENCE as MAKE_TRANSCRIPTS_FASTA } from '../../.. include { PREPROCESS_TRANSCRIPTS_FASTA_GENCODE } from '../../../modules/local/preprocess_transcripts_fasta_gencode' include { GTF2BED } from '../../../modules/local/gtf2bed' -include { CAT_ADDITIONAL_FASTA } from '../../../modules/local/cat_additional_fasta' include { GTF_FILTER } from '../../../modules/local/gtf_filter' include { STAR_GENOMEGENERATE_IGENOMES } from '../../../modules/local/star_genomegenerate_igenomes' @@ -129,10 +129,15 @@ workflow PREPARE_GENOME { } else { ch_add_fasta = Channel.value(file(additional_fasta)) } - CAT_ADDITIONAL_FASTA ( ch_fasta, ch_gtf, ch_add_fasta, biotype ) - ch_fasta = CAT_ADDITIONAL_FASTA.out.fasta - ch_gtf = CAT_ADDITIONAL_FASTA.out.gtf - ch_versions = ch_versions.mix(CAT_ADDITIONAL_FASTA.out.versions) + + CUSTOM_CATADDITIONALFASTA( + ch_fasta.combine(ch_gtf).map{gtf, fasta -> [[:], fasta, gtf]}, + ch_add_fasta.map{[[:], it}, + biotype + ) + ch_fasta = CUSTOM_CATADDITIONALFASTA.out.fasta.map{it[1]} + ch_gtf = CUSTOM_CATADDITIONALFASTA.out.gtf.map{it[1]} + ch_versions = ch_versions.mix(CUSTOM_CATADDITIONALFASTA.out.versions) } // From c3b6ceba1a7b5173783bdda1bb2e864a73829b7e Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Fri, 16 Feb 2024 11:59:20 +0000 Subject: [PATCH 063/634] Fix umitools cardinality --- workflows/rnaseq/main.nf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/workflows/rnaseq/main.nf b/workflows/rnaseq/main.nf index 70ff4f1b5..125549f86 100755 --- a/workflows/rnaseq/main.nf +++ b/workflows/rnaseq/main.nf @@ -366,13 +366,13 @@ workflow NFCORE_RNASEQ { // Fix paired-end reads in name sorted BAM file // See: https://github.com/nf-core/rnaseq/issues/828 UMITOOLS_PREPAREFORSALMON ( - ch_umitools_dedup_bam.paired_end + ch_umitools_dedup_bam.paired_end.map{meta, bam -> [meta, bam, []]} ) ch_versions = ch_versions.mix(UMITOOLS_PREPAREFORSALMON.out.versions.first()) ch_umitools_dedup_bam .single_end - .mix(UMITOOLS_PREPAREFORSALMON.out.bam) + .mix(UMITOOLS_PREPAREFORSALMON.out.bam.map{it[1]}) .set { ch_transcriptome_bam } } From 7a82a137e8beadf63af5003137200bcd9ceec49a Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Fri, 16 Feb 2024 12:01:11 +0000 Subject: [PATCH 064/634] remove local module --- bin/fasta2gtf.py | 88 ---------------------- modules/local/cat_additional_fasta/main.nf | 42 ----------- 2 files changed, 130 deletions(-) delete mode 100755 bin/fasta2gtf.py delete mode 100644 modules/local/cat_additional_fasta/main.nf diff --git a/bin/fasta2gtf.py b/bin/fasta2gtf.py deleted file mode 100755 index 716ee06ce..000000000 --- a/bin/fasta2gtf.py +++ /dev/null @@ -1,88 +0,0 @@ -#!/usr/bin/env python3 - -# Written by Pranathi Vemuri and released under the MIT license. - -""" -Read a custom fasta file and create a custom GTF containing each entry -""" -import argparse -from itertools import groupby -import logging - -# Create a logger -logging.basicConfig(format="%(name)s - %(asctime)s %(levelname)s: %(message)s") -logger = logging.getLogger(__file__) -logger.setLevel(logging.INFO) - - -def fasta_iter(fasta_name): - """ - modified from Brent Pedersen - Correct Way To Parse A Fasta File In Python - given a fasta file. yield tuples of header, sequence - - Fasta iterator from https://www.biostars.org/p/710/#120760 - """ - with open(fasta_name) as fh: - # ditch the boolean (x[0]) and just keep the header or sequence since - # we know they alternate. - faiter = (x[1] for x in groupby(fh, lambda line: line[0] == ">")) - for header in faiter: - # drop the ">" - headerStr = header.__next__()[1:].strip() - - # join all sequence lines to one. - seq = "".join(s.strip() for s in faiter.__next__()) - - yield (headerStr, seq) - - -def fasta2gtf(fasta, output, biotype): - fiter = fasta_iter(fasta) - # GTF output lines - lines = [] - attributes = 'exon_id "{name}.1"; exon_number "1";{biotype} gene_id "{name}_gene"; gene_name "{name}_gene"; gene_source "custom"; transcript_id "{name}_gene"; transcript_name "{name}_gene";\n' - line_template = "{name}\ttransgene\texon\t1\t{length}\t.\t+\t.\t" + attributes - - for ff in fiter: - name, seq = ff - # Use first ID as separated by spaces as the "sequence name" - # (equivalent to "chromosome" in other cases) - seqname = name.split()[0] - # Remove all spaces - name = seqname.replace(" ", "_") - length = len(seq) - biotype_attr = "" - if biotype: - biotype_attr = f' {biotype} "transgene";' - line = line_template.format(name=name, length=length, biotype=biotype_attr) - lines.append(line) - - with open(output, "w") as f: - f.write("".join(lines)) - - -if __name__ == "__main__": - parser = argparse.ArgumentParser( - description="""Convert a custom fasta (e.g. transgene) - to a GTF annotation.""" - ) - parser.add_argument("fasta", type=str, help="Custom transgene sequence") - parser.add_argument( - "-o", - "--output", - dest="output", - default="transgenes.gtf", - type=str, - help="Gene annotation GTF output", - ) - parser.add_argument( - "-b", - "--biotype", - dest="biotype", - default="", - type=str, - help="Name of gene biotype attribute to use in last column of GTF entry", - ) - args = parser.parse_args() - fasta2gtf(args.fasta, args.output, args.biotype) diff --git a/modules/local/cat_additional_fasta/main.nf b/modules/local/cat_additional_fasta/main.nf deleted file mode 100644 index 72af4bc54..000000000 --- a/modules/local/cat_additional_fasta/main.nf +++ /dev/null @@ -1,42 +0,0 @@ -process CAT_ADDITIONAL_FASTA { - tag "$add_fasta" - - conda "conda-forge::python=3.9.5" - container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/python:3.9--1' : - 'biocontainers/python:3.9--1' }" - - input: - path fasta - path gtf - path add_fasta - val biotype - - output: - path "${name}.fasta", emit: fasta - path "${name}.gtf" , emit: gtf - path "versions.yml" , emit: versions - - when: - task.ext.when == null || task.ext.when - - script: - def genome_name = params.genome ? params.genome : fasta.getBaseName() - def biotype_name = biotype ? "-b $biotype" : '' - def add_name = add_fasta.getBaseName() - name = "${genome_name}_${add_name}" - """ - fasta2gtf.py \\ - -o ${add_fasta.baseName}.gtf \\ - $biotype_name \\ - $add_fasta - - cat $fasta $add_fasta > ${name}.fasta - cat $gtf ${add_fasta.baseName}.gtf > ${name}.gtf - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - python: \$(python --version | sed 's/Python //g') - END_VERSIONS - """ -} From 6391917226daaeaa376f7029e83dc1efcd3239d8 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Fri, 16 Feb 2024 12:03:34 +0000 Subject: [PATCH 065/634] Update changelog --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index c93a8f724..be2beb1a7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [PR #1206](https://github.com/nf-core/rnaseq/pull/1206) - Remove `lib/` directory and `modules.config` - [PR #1212](https://github.com/nf-core/rnaseq/pull/1212) - Update all modules and subworkflows to latest versions - [PR #1210](https://github.com/nf-core/rnaseq/pull/1210) - Use pseudoalignment subworkflow components from nf-core/modules +- [PR #1216](https://github.com/nf-core/rnaseq/pull/1216) - Delocalise catadditionalfasta + ### Parameters From 77b26823cebd368fa5bbc50ceae6ebd96dc9f2d4 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Fri, 16 Feb 2024 12:04:21 +0000 Subject: [PATCH 066/634] appease eclint --- subworkflows/local/prepare_genome/main.nf | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/subworkflows/local/prepare_genome/main.nf b/subworkflows/local/prepare_genome/main.nf index aa92465b2..f73feb999 100644 --- a/subworkflows/local/prepare_genome/main.nf +++ b/subworkflows/local/prepare_genome/main.nf @@ -131,9 +131,9 @@ workflow PREPARE_GENOME { } CUSTOM_CATADDITIONALFASTA( - ch_fasta.combine(ch_gtf).map{gtf, fasta -> [[:], fasta, gtf]}, - ch_add_fasta.map{[[:], it}, - biotype + ch_fasta.combine(ch_gtf).map{gtf, fasta -> [[:], fasta, gtf]}, + ch_add_fasta.map{[[:], it}, + biotype ) ch_fasta = CUSTOM_CATADDITIONALFASTA.out.fasta.map{it[1]} ch_gtf = CUSTOM_CATADDITIONALFASTA.out.gtf.map{it[1]} From 125e6ac19757cc0366831268763516828ca10cfc Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Fri, 16 Feb 2024 12:05:32 +0000 Subject: [PATCH 067/634] Fix syntax --- subworkflows/local/prepare_genome/main.nf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/subworkflows/local/prepare_genome/main.nf b/subworkflows/local/prepare_genome/main.nf index f73feb999..70c339ec8 100644 --- a/subworkflows/local/prepare_genome/main.nf +++ b/subworkflows/local/prepare_genome/main.nf @@ -132,7 +132,7 @@ workflow PREPARE_GENOME { CUSTOM_CATADDITIONALFASTA( ch_fasta.combine(ch_gtf).map{gtf, fasta -> [[:], fasta, gtf]}, - ch_add_fasta.map{[[:], it}, + ch_add_fasta.map{[[:], it]}, biotype ) ch_fasta = CUSTOM_CATADDITIONALFASTA.out.fasta.map{it[1]} From aa16bccc6602ea3570463209d3ec027aaa4202cc Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Fri, 16 Feb 2024 12:11:13 +0000 Subject: [PATCH 068/634] prettier --- CHANGELOG.md | 1 - 1 file changed, 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index be2beb1a7..5b43885d9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,7 +16,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [PR #1210](https://github.com/nf-core/rnaseq/pull/1210) - Use pseudoalignment subworkflow components from nf-core/modules - [PR #1216](https://github.com/nf-core/rnaseq/pull/1216) - Delocalise catadditionalfasta - ### Parameters ### Software dependencies From a062d6f1c6c0661a229468aa1a1ae4374484bdcf Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Fri, 16 Feb 2024 12:11:27 +0000 Subject: [PATCH 069/634] Install module --- modules.json | 5 + .../custom/catadditionalfasta/environment.yml | 9 ++ .../nf-core/custom/catadditionalfasta/main.nf | 24 +++ .../custom/catadditionalfasta/meta.yml | 61 ++++++++ .../catadditionalfasta/templates/fasta2gtf.py | 142 ++++++++++++++++++ .../catadditionalfasta/tests/main.nf.test | 42 ++++++ .../tests/main.nf.test.snap | 38 +++++ .../custom/catadditionalfasta/tests/tags.yml | 2 + 8 files changed, 323 insertions(+) create mode 100644 modules/nf-core/custom/catadditionalfasta/environment.yml create mode 100644 modules/nf-core/custom/catadditionalfasta/main.nf create mode 100644 modules/nf-core/custom/catadditionalfasta/meta.yml create mode 100755 modules/nf-core/custom/catadditionalfasta/templates/fasta2gtf.py create mode 100644 modules/nf-core/custom/catadditionalfasta/tests/main.nf.test create mode 100644 modules/nf-core/custom/catadditionalfasta/tests/main.nf.test.snap create mode 100644 modules/nf-core/custom/catadditionalfasta/tests/tags.yml diff --git a/modules.json b/modules.json index 0ef7e1035..83ffd6999 100644 --- a/modules.json +++ b/modules.json @@ -15,6 +15,11 @@ "git_sha": "02fd5bd7275abad27aad32d5c852e0a9b1b98882", "installed_by": ["modules"] }, + "custom/catadditionalfasta": { + "branch": "master", + "git_sha": "3ee883a0cd247a1d40bff9f2495041d779bf1079", + "installed_by": ["modules"] + }, "custom/getchromsizes": { "branch": "master", "git_sha": "1b0ffa4e5aed5b7e3cd4311af31bd3b2c8345051", diff --git a/modules/nf-core/custom/catadditionalfasta/environment.yml b/modules/nf-core/custom/catadditionalfasta/environment.yml new file mode 100644 index 000000000..5e757bf4c --- /dev/null +++ b/modules/nf-core/custom/catadditionalfasta/environment.yml @@ -0,0 +1,9 @@ +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json +name: "custom_catadditionalfasta" +channels: + - conda-forge + - bioconda + - defaults +dependencies: + - conda-forge::python=3.9.5" diff --git a/modules/nf-core/custom/catadditionalfasta/main.nf b/modules/nf-core/custom/catadditionalfasta/main.nf new file mode 100644 index 000000000..7289976e0 --- /dev/null +++ b/modules/nf-core/custom/catadditionalfasta/main.nf @@ -0,0 +1,24 @@ +process CUSTOM_CATADDITIONALFASTA { + tag "$meta.id" + + conda "conda-forge::python=3.9.5" + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/python:3.9--1' : + 'biocontainers/python:3.9--1' }" + + input: + tuple val(meta), path(fasta), path(gtf) + tuple val(meta2), path(add_fasta) + val biotype + + output: + tuple val(meta), path("*/*.fasta") , emit: fasta + tuple val(meta), path("*/*.gtf") , emit: gtf + path "versions.yml" , emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + template 'fasta2gtf.py' +} diff --git a/modules/nf-core/custom/catadditionalfasta/meta.yml b/modules/nf-core/custom/catadditionalfasta/meta.yml new file mode 100644 index 000000000..8a9505d30 --- /dev/null +++ b/modules/nf-core/custom/catadditionalfasta/meta.yml @@ -0,0 +1,61 @@ +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/meta-schema.json +name: "custom_catadditionalfasta" +description: Custom module to Add a new fasta file to an old one and update an associated GTF +keywords: + - fasta + - gtf + - genomics +tools: + - "custom": + description: "Custom module to Add a new fasta file to an old one and update an associated GTF" + tool_dev_url: "https://github.com/nf-core/modules/blob/master/modules/nf-core/custom/catadditionalfasta/main.nf" + licence: ["MIT"] + +input: + - meta: + type: map + description: | + Groovy Map containing fasta information + - meta2: + type: map + description: | + Groovy Map containing additional fasta information + - fasta: + type: file + description: FASTA-format sequence file + pattern: "*.{fasta,fa}" + - gtf: + type: file + description: GTF-format annotation file for fasta + pattern: "*.gtf" + - add_fasta: + type: file + description: FASTA-format file of additional sequences + pattern: "*.fa" + - biotype: + type: string + description: Biotype to apply to new GTF entries + +output: + - meta: + type: map + description: | + Groovy Map containing fasta information + - fasta: + type: file + description: FASTA-format combined sequence file + pattern: "*.{fasta,fa}" + - gtf: + type: file + description: GTF-format combined annotation file + pattern: "*.gtf" + - versions: + type: file + description: File containing software versions + pattern: "versions.yml" + +authors: + - "@pinin4fjords" +maintainers: + - "@pinin4fjords" diff --git a/modules/nf-core/custom/catadditionalfasta/templates/fasta2gtf.py b/modules/nf-core/custom/catadditionalfasta/templates/fasta2gtf.py new file mode 100755 index 000000000..39b1d4b2f --- /dev/null +++ b/modules/nf-core/custom/catadditionalfasta/templates/fasta2gtf.py @@ -0,0 +1,142 @@ +#!/usr/bin/env python3 + +# Written by Pranathi Vemuri, later modified by Jonathan Manning and released under the MIT license. + +import os +import logging +import platform +from typing import Iterator, Tuple +from itertools import groupby + + +def setup_logging() -> logging.Logger: + """Configure logging for the script. + + Returns: + logging.Logger: Configured logger instance. + """ + logging.basicConfig(format="%(name)s - %(asctime)s %(levelname)s: %(message)s") + logger = logging.getLogger(__file__) + logger.setLevel(logging.INFO) + return logger + + +def format_yaml_like(data: dict, indent: int = 0) -> str: + """Formats a dictionary to a YAML-like string. + + Args: + data (dict): The dictionary to format. + indent (int): The current indentation level. + + Returns: + str: A string formatted as YAML. + """ + yaml_str = "" + for key, value in data.items(): + spaces = " " * indent + if isinstance(value, dict): + yaml_str += f"{spaces}{key}:\\n{format_yaml_like(value, indent + 1)}" + else: + yaml_str += f"{spaces}{key}: {value}\\n" + return yaml_str + + +def parse_fasta(fasta_file: str) -> Iterator[Tuple[str, str]]: + """Parse a fasta file and yield tuples of header and sequence. + + Args: + fasta_file (str): Path to the fasta file. + + Yields: + Iterator[Tuple[str, str]]: Tuples of header and sequence from the fasta file. + + + modified from Brent Pedersen + Correct Way To Parse A Fasta File In Python + given a fasta file. yield tuples of header, sequence + + Fasta iterator from https://www.biostars.org/p/710/#120760 + """ + with open(fasta_file) as file_handle: + fasta_iter = (x[1] for x in groupby(file_handle, lambda line: line[0] == ">")) + for header in fasta_iter: + header_str = next(header)[1:].strip() + sequence = "".join(s.strip() for s in next(fasta_iter)) + yield (header_str, sequence) + + +def fasta_to_gtf(fasta: str, output_file: str, biotype: str) -> None: + """ + Read a fasta file and create a GTF file. + + Args: + fasta (str): Path to the fasta file. + output_file (str): Path for the output GTF file. + biotype (str): The biotype to use in the GTF. + """ + fasta_iter = parse_fasta(fasta) + lines = [] + + for header, sequence in fasta_iter: + seq_name = header.split()[0].replace(" ", "_") + line = generate_gtf_line(seq_name, len(sequence), biotype) + lines.append(line) + + with open(output_file, "w") as file_handle: + file_handle.writelines(lines) + + +def generate_gtf_line(name: str, length: int, biotype: str) -> str: + """Generate a single GTF line given sequence name, length, and biotype. + + Args: + name (str): Name of the sequence. + length (int): Length of the sequence. + biotype (str): Biotype of the sequence. + + Returns: + str: A formatted GTF line. + """ + biotype_attr = f' {biotype} "transgene";' if biotype else "" + attributes = f'exon_id "{name}.1"; exon_number "1";{biotype_attr} gene_id "{name}_gene"; gene_name "{name}_gene"; gene_source "custom"; transcript_id "{name}_gene"; transcript_name "{name}_gene";\\n' + return f"{name}\\ttransgene\\texon\\t1\\t{length}\\t.\\t+\\t.\\t{attributes}" + + +def main() -> None: + # Parse arguments using argparse (not shown for brevity) + # Example: args = parser.parse_args() + + logger = setup_logging() + logger.info("Starting fasta to GTF conversion.") + + # Add fasta lines to GTF + add_name = os.path.splitext(os.path.basename("$add_fasta"))[0] + fasta_to_gtf("$add_fasta", f"{add_name}.gtf", "$biotype") + + # Concatenate new fasta to existing fasta, and the GTF we just generated to the GTF + genome_name = ( + "$params.genome" + if "$params.genome" != "null" + else os.path.splitext(os.path.basename("$fasta"))[0] + ) + output_prefix = ( + "$task.ext.prefix" + if "$task.ext.prefix" != "null" + else f"{genome_name}_{add_name}" + ) + + os.mkdir("out") + os.system(f"cat $fasta $add_fasta > out/{output_prefix}.fasta") + os.system(f"cat $gtf {add_name}.gtf > out/{output_prefix}.gtf") + + logger.info("Conversion completed successfully.") + + # Write the versions + versions_this_module = {} + versions_this_module["${task.process}"] = {"python": platform.python_version()} + with open("versions.yml", "w") as f: + f.write(format_yaml_like(versions_this_module)) + + +if __name__ == "__main__": + main() diff --git a/modules/nf-core/custom/catadditionalfasta/tests/main.nf.test b/modules/nf-core/custom/catadditionalfasta/tests/main.nf.test new file mode 100644 index 000000000..227f1b1d7 --- /dev/null +++ b/modules/nf-core/custom/catadditionalfasta/tests/main.nf.test @@ -0,0 +1,42 @@ +nextflow_process { + + name "Test Process CUSTOM_CATADDITIONALFASTA" + script "../main.nf" + process "CUSTOM_CATADDITIONALFASTA" + + tag "modules" + tag "modules_nfcore" + tag "custom" + tag "custom/catadditionalfasta" + + test("sarscov2 - fastq - gtf") { + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], + file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true), + file(params.test_data['sarscov2']['genome']['genome_gtf'], checkIfExists: true) + ] + input[1] = [ + [ id:'test', single_end:false ], + file(params.test_data['sarscov2']['genome']['transcriptome_fasta'], checkIfExists: true) + ] + input[2] = 'test_biotype' + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out.fasta).match("fasta") }, + { assert snapshot(process.out.gtf).match("gtf") }, + { assert snapshot(process.out.versions).match("versions") } + ) + } + + } + +} diff --git a/modules/nf-core/custom/catadditionalfasta/tests/main.nf.test.snap b/modules/nf-core/custom/catadditionalfasta/tests/main.nf.test.snap new file mode 100644 index 000000000..8f63d9b47 --- /dev/null +++ b/modules/nf-core/custom/catadditionalfasta/tests/main.nf.test.snap @@ -0,0 +1,38 @@ +{ + "versions": { + "content": [ + [ + "versions.yml:md5,26f47339777a265af57338ac7f0f8798" + ] + ], + "timestamp": "2023-12-20T20:52:55.242485" + }, + "gtf": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "genome_transcriptome.gtf:md5,bc88d95e7f27540e6b9906105d5be361" + ] + ] + ], + "timestamp": "2023-12-20T19:46:31.839377" + }, + "fasta": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "genome_transcriptome.fasta:md5,6a20c1a2e465519320a0d01f338f5cb5" + ] + ] + ], + "timestamp": "2023-12-20T19:42:47.12194" + } +} \ No newline at end of file diff --git a/modules/nf-core/custom/catadditionalfasta/tests/tags.yml b/modules/nf-core/custom/catadditionalfasta/tests/tags.yml new file mode 100644 index 000000000..8e73a0121 --- /dev/null +++ b/modules/nf-core/custom/catadditionalfasta/tests/tags.yml @@ -0,0 +1,2 @@ +custom/catadditionalfasta: + - "modules/nf-core/custom/catadditionalfasta/**" From 304e6ac976bf9d2c61844de976bfd32731a419f5 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Fri, 16 Feb 2024 12:19:17 +0000 Subject: [PATCH 070/634] Fix channel shape --- workflows/rnaseq/main.nf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/workflows/rnaseq/main.nf b/workflows/rnaseq/main.nf index 125549f86..d1a754171 100755 --- a/workflows/rnaseq/main.nf +++ b/workflows/rnaseq/main.nf @@ -372,7 +372,7 @@ workflow NFCORE_RNASEQ { ch_umitools_dedup_bam .single_end - .mix(UMITOOLS_PREPAREFORSALMON.out.bam.map{it[1]}) + .mix(UMITOOLS_PREPAREFORSALMON.out.bam) .set { ch_transcriptome_bam } } From bfa25d0a2a3c81319a7d6f06d1b23ce391b1aeda Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Fri, 16 Feb 2024 12:27:48 +0000 Subject: [PATCH 071/634] Remove test line --- subworkflows/local/quantify_pseudo_alignment/main.nf | 1 - 1 file changed, 1 deletion(-) diff --git a/subworkflows/local/quantify_pseudo_alignment/main.nf b/subworkflows/local/quantify_pseudo_alignment/main.nf index 12a58b66c..36bab808e 100644 --- a/subworkflows/local/quantify_pseudo_alignment/main.nf +++ b/subworkflows/local/quantify_pseudo_alignment/main.nf @@ -28,7 +28,6 @@ workflow QUANTIFY_PSEUDO_ALIGNMENT { kallisto_quant_fraglen_sd // val: Estimated standard error for fragment length required by Kallisto in single-end mode main: - samplesheet.view() ch_versions = Channel.empty() // From 3fbc532f6685942d44be34a049aedbc02a06d38e Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Fri, 16 Feb 2024 12:28:01 +0000 Subject: [PATCH 072/634] Fix map order --- subworkflows/local/prepare_genome/main.nf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/subworkflows/local/prepare_genome/main.nf b/subworkflows/local/prepare_genome/main.nf index 70c339ec8..e99d5d271 100644 --- a/subworkflows/local/prepare_genome/main.nf +++ b/subworkflows/local/prepare_genome/main.nf @@ -131,7 +131,7 @@ workflow PREPARE_GENOME { } CUSTOM_CATADDITIONALFASTA( - ch_fasta.combine(ch_gtf).map{gtf, fasta -> [[:], fasta, gtf]}, + ch_fasta.combine(ch_gtf).map{fasta, gtf -> [[:], fasta, gtf]}, ch_add_fasta.map{[[:], it]}, biotype ) From 09855958ee8fd1677b5c40884aaf2a5d991079ce Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Fri, 16 Feb 2024 12:57:43 +0000 Subject: [PATCH 073/634] Ensure value channels --- subworkflows/local/prepare_genome/main.nf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/subworkflows/local/prepare_genome/main.nf b/subworkflows/local/prepare_genome/main.nf index e99d5d271..58a9b293c 100644 --- a/subworkflows/local/prepare_genome/main.nf +++ b/subworkflows/local/prepare_genome/main.nf @@ -135,8 +135,8 @@ workflow PREPARE_GENOME { ch_add_fasta.map{[[:], it]}, biotype ) - ch_fasta = CUSTOM_CATADDITIONALFASTA.out.fasta.map{it[1]} - ch_gtf = CUSTOM_CATADDITIONALFASTA.out.gtf.map{it[1]} + ch_fasta = CUSTOM_CATADDITIONALFASTA.out.fasta.map{it[1]}.first() + ch_gtf = CUSTOM_CATADDITIONALFASTA.out.gtf.map{it[1]}.first() ch_versions = ch_versions.mix(CUSTOM_CATADDITIONALFASTA.out.versions) } From 4ad0bba26b4f04cb733f7feac11495dc7c3159a5 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Fri, 16 Feb 2024 13:56:32 +0000 Subject: [PATCH 074/634] mention issues in changelog --- CHANGELOG.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a1be2d4f9..c3b27ae35 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,9 +14,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [PR #1206](https://github.com/nf-core/rnaseq/pull/1206) - Remove `lib/` directory and `modules.config` - [PR #1212](https://github.com/nf-core/rnaseq/pull/1212) - Update all modules and subworkflows to latest versions - [PR #1210](https://github.com/nf-core/rnaseq/pull/1210) - Use pseudoalignment subworkflow components from nf-core/modules -- [PR #1214](https://github.com/nf-core/rnaseq/pull/1214) - Bump umitools + delocalise prepareforrsem +- [PR #1214](https://github.com/nf-core/rnaseq/pull/1214) - Bump umitools + delocalise prepareforrsem ([#831](https://github.com/nf-core/rnaseq/issues/831)) - [PR #1213](https://github.com/nf-core/rnaseq/pull/1213) - Pass transcriptome fasta through to samtools stats -- [PR #1216](https://github.com/nf-core/rnaseq/pull/1216) - Delocalise catadditionalfasta +- [PR #1216](https://github.com/nf-core/rnaseq/pull/1216) - Delocalise catadditionalfasta ([#1162](https://github.com/nf-core/rnaseq/issues/1162)) ### Parameters From 05814d05e389cb0bfd8ed96566c89bd4a7712ca1 Mon Sep 17 00:00:00 2001 From: Edmund Miller Date: Fri, 16 Feb 2024 12:20:15 -0600 Subject: [PATCH 075/634] chore: Emiller88 => edmundmiller --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index f3a8590f6..4e255e037 100644 --- a/README.md +++ b/README.md @@ -119,7 +119,7 @@ Many thanks to other who have helped out along the way too, including (but not l - [Alex Peltzer](https://github.com/apeltzer) - [Colin Davenport](https://github.com/colindaven) - [Denis Moreno](https://github.com/Galithil) -- [Edmund Miller](https://github.com/Emiller88) +- [Edmund Miller](https://github.com/edmundmiller) - [Gregor Sturm](https://github.com/grst) - [Jacki Buros Novik](https://github.com/jburos) - [Lorena Pantano](https://github.com/lpantano) From 663b47cc6d6eb6f028ddce40afd03715ee66e0d5 Mon Sep 17 00:00:00 2001 From: nf-core-bot Date: Tue, 20 Feb 2024 15:30:14 +0000 Subject: [PATCH 076/634] Template update for nf-core/tools version 2.13 --- .editorconfig | 9 +- .github/workflows/awsfulltest.yml | 4 +- .github/workflows/awstest.yml | 4 +- .github/workflows/branch.yml | 2 +- .github/workflows/ci.yml | 7 +- .github/workflows/clean-up.yml | 2 +- .github/workflows/download_pipeline.yml | 17 +- .github/workflows/linting.yml | 12 +- .github/workflows/linting_comment.yml | 4 +- .github/workflows/release-announcements.yml | 11 +- README.md | 5 +- assets/multiqc_config.yml | 2 + assets/schema_input.json | 21 +- bin/check_samplesheet.py | 259 ----------- conf/modules.config | 8 - lib/NfcoreTemplate.groovy | 356 -------------- lib/Utils.groovy | 47 -- lib/WorkflowMain.groovy | 77 --- lib/WorkflowRnaseq.groovy | 122 ----- main.nf | 100 ++-- modules.json | 28 +- modules/local/samplesheet_check.nf | 31 -- .../dumpsoftwareversions/environment.yml | 7 - .../custom/dumpsoftwareversions/main.nf | 24 - .../custom/dumpsoftwareversions/meta.yml | 37 -- .../templates/dumpsoftwareversions.py | 102 ---- .../dumpsoftwareversions/tests/main.nf.test | 43 -- .../tests/main.nf.test.snap | 33 -- .../dumpsoftwareversions/tests/tags.yml | 2 - modules/nf-core/fastqc/tests/main.nf.test | 14 +- .../nf-core/fastqc/tests/main.nf.test.snap | 76 ++- modules/nf-core/multiqc/environment.yml | 2 +- modules/nf-core/multiqc/main.nf | 4 +- modules/nf-core/multiqc/tests/main.nf.test | 13 +- .../nf-core/multiqc/tests/main.nf.test.snap | 32 +- nextflow.config | 5 +- nextflow_schema.json | 1 + pyproject.toml | 8 +- subworkflows/local/input_check.nf | 44 -- .../utils_nfcore_rnaseq_pipeline/main.nf | 247 ++++++++++ .../nf-core/utils_nextflow_pipeline/main.nf | 126 +++++ .../nf-core/utils_nextflow_pipeline/meta.yml | 38 ++ .../tests/main.function.nf.test | 54 +++ .../tests/main.function.nf.test.snap | 12 + .../tests/main.workflow.nf.test | 123 +++++ .../tests/nextflow.config | 9 + .../utils_nextflow_pipeline/tests/tags.yml | 2 + .../nf-core/utils_nfcore_pipeline/main.nf | 440 ++++++++++++++++++ .../nf-core/utils_nfcore_pipeline/meta.yml | 24 + .../tests/main.function.nf.test | 134 ++++++ .../tests/main.function.nf.test.snap | 138 ++++++ .../tests/main.workflow.nf.test | 29 ++ .../tests/main.workflow.nf.test.snap | 15 + .../tests/nextflow.config | 9 + .../utils_nfcore_pipeline/tests/tags.yml | 2 + .../nf-core/utils_nfvalidation_plugin/main.nf | 62 +++ .../utils_nfvalidation_plugin/meta.yml | 44 ++ .../tests/main.nf.test | 200 ++++++++ .../tests/nextflow_schema.json | 96 ++++ .../utils_nfvalidation_plugin/tests/tags.yml | 2 + workflows/rnaseq.nf | 133 ++---- 61 files changed, 2108 insertions(+), 1406 deletions(-) delete mode 100755 bin/check_samplesheet.py delete mode 100755 lib/NfcoreTemplate.groovy delete mode 100644 lib/Utils.groovy delete mode 100755 lib/WorkflowMain.groovy delete mode 100755 lib/WorkflowRnaseq.groovy delete mode 100644 modules/local/samplesheet_check.nf delete mode 100644 modules/nf-core/custom/dumpsoftwareversions/environment.yml delete mode 100644 modules/nf-core/custom/dumpsoftwareversions/main.nf delete mode 100644 modules/nf-core/custom/dumpsoftwareversions/meta.yml delete mode 100755 modules/nf-core/custom/dumpsoftwareversions/templates/dumpsoftwareversions.py delete mode 100644 modules/nf-core/custom/dumpsoftwareversions/tests/main.nf.test delete mode 100644 modules/nf-core/custom/dumpsoftwareversions/tests/main.nf.test.snap delete mode 100644 modules/nf-core/custom/dumpsoftwareversions/tests/tags.yml delete mode 100644 subworkflows/local/input_check.nf create mode 100644 subworkflows/local/utils_nfcore_rnaseq_pipeline/main.nf create mode 100644 subworkflows/nf-core/utils_nextflow_pipeline/main.nf create mode 100644 subworkflows/nf-core/utils_nextflow_pipeline/meta.yml create mode 100644 subworkflows/nf-core/utils_nextflow_pipeline/tests/main.function.nf.test create mode 100644 subworkflows/nf-core/utils_nextflow_pipeline/tests/main.function.nf.test.snap create mode 100644 subworkflows/nf-core/utils_nextflow_pipeline/tests/main.workflow.nf.test create mode 100644 subworkflows/nf-core/utils_nextflow_pipeline/tests/nextflow.config create mode 100644 subworkflows/nf-core/utils_nextflow_pipeline/tests/tags.yml create mode 100644 subworkflows/nf-core/utils_nfcore_pipeline/main.nf create mode 100644 subworkflows/nf-core/utils_nfcore_pipeline/meta.yml create mode 100644 subworkflows/nf-core/utils_nfcore_pipeline/tests/main.function.nf.test create mode 100644 subworkflows/nf-core/utils_nfcore_pipeline/tests/main.function.nf.test.snap create mode 100644 subworkflows/nf-core/utils_nfcore_pipeline/tests/main.workflow.nf.test create mode 100644 subworkflows/nf-core/utils_nfcore_pipeline/tests/main.workflow.nf.test.snap create mode 100644 subworkflows/nf-core/utils_nfcore_pipeline/tests/nextflow.config create mode 100644 subworkflows/nf-core/utils_nfcore_pipeline/tests/tags.yml create mode 100644 subworkflows/nf-core/utils_nfvalidation_plugin/main.nf create mode 100644 subworkflows/nf-core/utils_nfvalidation_plugin/meta.yml create mode 100644 subworkflows/nf-core/utils_nfvalidation_plugin/tests/main.nf.test create mode 100644 subworkflows/nf-core/utils_nfvalidation_plugin/tests/nextflow_schema.json create mode 100644 subworkflows/nf-core/utils_nfvalidation_plugin/tests/tags.yml diff --git a/.editorconfig b/.editorconfig index 9b990088a..dd9ffa538 100644 --- a/.editorconfig +++ b/.editorconfig @@ -18,7 +18,12 @@ end_of_line = unset insert_final_newline = unset trim_trailing_whitespace = unset indent_style = unset -indent_size = unset +[/subworkflows/nf-core/**] +charset = unset +end_of_line = unset +insert_final_newline = unset +trim_trailing_whitespace = unset +indent_style = unset [/assets/email*] indent_size = unset @@ -28,5 +33,5 @@ indent_size = unset indent_style = unset # ignore python -[*.{py}] +[*.{py,md}] indent_style = unset diff --git a/.github/workflows/awsfulltest.yml b/.github/workflows/awsfulltest.yml index 9075bac51..c0fd17d3f 100644 --- a/.github/workflows/awsfulltest.yml +++ b/.github/workflows/awsfulltest.yml @@ -14,7 +14,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Launch workflow via tower - uses: seqeralabs/action-tower-launch@v2 + uses: seqeralabs/action-tower-launch@922e5c8d5ac4e918107ec311d2ebbd65e5982b3d # v2 # TODO nf-core: You can customise AWS full pipeline tests as required # Add full size test data (but still relatively small datasets for few samples) # on the `test_full.config` test runs with only one set of parameters @@ -31,7 +31,7 @@ jobs: } profiles: test_full - - uses: actions/upload-artifact@v4 + - uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4 with: name: Tower debug log file path: | diff --git a/.github/workflows/awstest.yml b/.github/workflows/awstest.yml index f0f09d0b3..7565e9f9f 100644 --- a/.github/workflows/awstest.yml +++ b/.github/workflows/awstest.yml @@ -12,7 +12,7 @@ jobs: steps: # Launch workflow using Tower CLI tool action - name: Launch workflow via tower - uses: seqeralabs/action-tower-launch@v2 + uses: seqeralabs/action-tower-launch@922e5c8d5ac4e918107ec311d2ebbd65e5982b3d # v2 with: workspace_id: ${{ secrets.TOWER_WORKSPACE_ID }} access_token: ${{ secrets.TOWER_ACCESS_TOKEN }} @@ -25,7 +25,7 @@ jobs: } profiles: test - - uses: actions/upload-artifact@v4 + - uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4 with: name: Tower debug log file path: | diff --git a/.github/workflows/branch.yml b/.github/workflows/branch.yml index 141e3d6ee..53ecc73d4 100644 --- a/.github/workflows/branch.yml +++ b/.github/workflows/branch.yml @@ -19,7 +19,7 @@ jobs: # NOTE - this doesn't currently work if the PR is coming from a fork, due to limitations in GitHub actions secrets - name: Post PR comment if: failure() - uses: mshick/add-pr-comment@v2 + uses: mshick/add-pr-comment@b8f338c590a895d50bcbfa6c5859251edc8952fc # v2 with: message: | ## This PR is against the `master` branch :x: diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index fcfb093f9..21033e318 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -28,13 +28,16 @@ jobs: - "latest-everything" steps: - name: Check out pipeline code - uses: actions/checkout@v4 + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4 - name: Install Nextflow - uses: nf-core/setup-nextflow@v1 + uses: nf-core/setup-nextflow@b9f764e8ba5c76b712ace14ecbfcef0e40ae2dd8 # v1 with: version: "${{ matrix.NXF_VER }}" + - name: Disk space cleanup + uses: jlumbroso/free-disk-space@54081f138730dfa15788a46383842cd2f914a1be # v1.3.1 + - name: Run pipeline with test data # TODO nf-core: You can customise CI pipeline run tests as required # For example: adding multiple test runs with different parameters diff --git a/.github/workflows/clean-up.yml b/.github/workflows/clean-up.yml index e37cfda5c..0b6b1f272 100644 --- a/.github/workflows/clean-up.yml +++ b/.github/workflows/clean-up.yml @@ -10,7 +10,7 @@ jobs: issues: write pull-requests: write steps: - - uses: actions/stale@v9 + - uses: actions/stale@28ca1036281a5e5922ead5184a1bbf96e5fc984e # v9 with: stale-issue-message: "This issue has been tagged as awaiting-changes or awaiting-feedback by an nf-core contributor. Remove stale label or add a comment otherwise this issue will be closed in 20 days." stale-pr-message: "This PR has been tagged as awaiting-changes or awaiting-feedback by an nf-core contributor. Remove stale label or add a comment if it is still useful." diff --git a/.github/workflows/download_pipeline.yml b/.github/workflows/download_pipeline.yml index 8611458a7..f823210d6 100644 --- a/.github/workflows/download_pipeline.yml +++ b/.github/workflows/download_pipeline.yml @@ -6,6 +6,11 @@ name: Test successful pipeline download with 'nf-core download' # - the head branch of the pull request is updated, i.e. if fixes for a release are pushed last minute to dev. on: workflow_dispatch: + inputs: + testbranch: + description: "The specific branch you wish to utilize for the test execution of nf-core download." + required: true + default: "dev" pull_request: types: - opened @@ -23,13 +28,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Install Nextflow - uses: nf-core/setup-nextflow@v1 + uses: nf-core/setup-nextflow@b9f764e8ba5c76b712ace14ecbfcef0e40ae2dd8 # v1 - - uses: actions/setup-python@v5 + - uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # v5 with: python-version: "3.11" architecture: "x64" - - uses: eWaterCycle/setup-singularity@v7 + - uses: eWaterCycle/setup-singularity@931d4e31109e875b13309ae1d07c70ca8fbc8537 # v7 with: singularity-version: 3.8.3 @@ -42,13 +47,13 @@ jobs: run: | echo "REPO_LOWERCASE=${GITHUB_REPOSITORY,,}" >> ${GITHUB_ENV} echo "REPOTITLE_LOWERCASE=$(basename ${GITHUB_REPOSITORY,,})" >> ${GITHUB_ENV} - echo "REPO_BRANCH=${GITHUB_REF#refs/heads/}" >> ${GITHUB_ENV} + echo "REPO_BRANCH=${{ github.event.inputs.testbranch || 'dev' }}" >> ${GITHUB_ENV} - name: Download the pipeline env: NXF_SINGULARITY_CACHEDIR: ./ run: | - nf-core download ${{ env.REPO_LOWERCASE }} \ + nf-core download ${{ env.REPO_LOWERCASE }} \ --revision ${{ env.REPO_BRANCH }} \ --outdir ./${{ env.REPOTITLE_LOWERCASE }} \ --compress "none" \ @@ -64,4 +69,4 @@ jobs: env: NXF_SINGULARITY_CACHEDIR: ./ NXF_SINGULARITY_HOME_MOUNT: true - run: nextflow run ./${{ env.REPOTITLE_LOWERCASE }}/$( sed 's/\W/_/g' <<< ${{ env.REPO_BRANCH }}) -stub -profile test,singularity --outdir ./results + run: nextflow run ./${{ env.REPOTITLE_LOWERCASE }}/$( sed 's/\W/_/g' <<< ${{ env.REPO_BRANCH }}) -stub -profile test,singularity --outdir ./results diff --git a/.github/workflows/linting.yml b/.github/workflows/linting.yml index 81cd098e9..748b43119 100644 --- a/.github/workflows/linting.yml +++ b/.github/workflows/linting.yml @@ -14,10 +14,10 @@ jobs: pre-commit: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4 - name: Set up Python 3.11 - uses: actions/setup-python@v5 + uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # v5 with: python-version: 3.11 cache: "pip" @@ -32,12 +32,12 @@ jobs: runs-on: ubuntu-latest steps: - name: Check out pipeline code - uses: actions/checkout@v4 + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4 - name: Install Nextflow - uses: nf-core/setup-nextflow@v1 + uses: nf-core/setup-nextflow@b9f764e8ba5c76b712ace14ecbfcef0e40ae2dd8 # v1 - - uses: actions/setup-python@v5 + - uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # v5 with: python-version: "3.11" architecture: "x64" @@ -60,7 +60,7 @@ jobs: - name: Upload linting log file artifact if: ${{ always() }} - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4 with: name: linting-logs path: | diff --git a/.github/workflows/linting_comment.yml b/.github/workflows/linting_comment.yml index 147bcd10c..b706875fc 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@v3 + uses: dawidd6/action-download-artifact@f6b0bace624032e30a85a8fd9c1a7f8f611f5737 # v3 with: workflow: linting.yml workflow_conclusion: completed @@ -21,7 +21,7 @@ jobs: run: echo "pr_number=$(cat linting-logs/PR_number.txt)" >> $GITHUB_OUTPUT - name: Post PR comment - uses: marocchino/sticky-pull-request-comment@v2 + uses: marocchino/sticky-pull-request-comment@331f8f5b4215f0445d3c07b4967662a32a2d3e31 # v2 with: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} number: ${{ steps.pr_number.outputs.pr_number }} diff --git a/.github/workflows/release-announcements.yml b/.github/workflows/release-announcements.yml index 21ac3f068..c3674af2e 100644 --- a/.github/workflows/release-announcements.yml +++ b/.github/workflows/release-announcements.yml @@ -9,6 +9,11 @@ jobs: toot: runs-on: ubuntu-latest steps: + - name: get topics and convert to hashtags + id: get_topics + run: | + curl -s https://nf-co.re/pipelines.json | jq -r '.remote_workflows[] | select(.name == "${{ github.repository }}") | .topics[]' | awk '{print "#"$0}' | tr '\n' ' ' > $GITHUB_OUTPUT + - uses: rzr/fediverse-action@master with: access-token: ${{ secrets.MASTODON_ACCESS_TOKEN }} @@ -20,11 +25,13 @@ jobs: Please see the changelog: ${{ github.event.release.html_url }} + ${{ steps.get_topics.outputs.GITHUB_OUTPUT }} #nfcore #openscience #nextflow #bioinformatics + send-tweet: runs-on: ubuntu-latest steps: - - uses: actions/setup-python@v5 + - uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # v5 with: python-version: "3.10" - name: Install dependencies @@ -56,7 +63,7 @@ jobs: bsky-post: runs-on: ubuntu-latest steps: - - uses: zentered/bluesky-post-action@v0.1.0 + - 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 }}! diff --git a/README.md b/README.md index cdf26ef31..acbfc45cf 100644 --- a/README.md +++ b/README.md @@ -4,8 +4,9 @@ nf-core/rnaseq -[![GitHub Actions CI Status](https://github.com/nf-core/rnaseq/workflows/nf-core%20CI/badge.svg)](https://github.com/nf-core/rnaseq/actions?query=workflow%3A%22nf-core+CI%22) -[![GitHub Actions Linting Status](https://github.com/nf-core/rnaseq/workflows/nf-core%20linting/badge.svg)](https://github.com/nf-core/rnaseq/actions?query=workflow%3A%22nf-core+linting%22)[![AWS CI](https://img.shields.io/badge/CI%20tests-full%20size-FF9900?labelColor=000000&logo=Amazon%20AWS)](https://nf-co.re/rnaseq/results)[![Cite with Zenodo](http://img.shields.io/badge/DOI-10.5281/zenodo.XXXXXXX-1073c8?labelColor=000000)](https://doi.org/10.5281/zenodo.XXXXXXX) + +[![GitHub Actions CI Status](https://github.com/nf-core/rnaseq/actions/workflows/ci.yml/badge.svg)](https://github.com/nf-core/rnaseq/actions/workflows/ci.yml) +[![GitHub Actions Linting Status](https://github.com/nf-core/rnaseq/actions/workflows/linting.yml/badge.svg)](https://github.com/nf-core/rnaseq/actions/workflows/linting.yml)[![AWS CI](https://img.shields.io/badge/CI%20tests-full%20size-FF9900?labelColor=000000&logo=Amazon%20AWS)](https://nf-co.re/rnaseq/results)[![Cite with Zenodo](http://img.shields.io/badge/DOI-10.5281/zenodo.XXXXXXX-1073c8?labelColor=000000)](https://doi.org/10.5281/zenodo.XXXXXXX) [![Nextflow](https://img.shields.io/badge/nextflow%20DSL2-%E2%89%A523.04.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/) diff --git a/assets/multiqc_config.yml b/assets/multiqc_config.yml index d968a5742..2bb92717b 100644 --- a/assets/multiqc_config.yml +++ b/assets/multiqc_config.yml @@ -11,3 +11,5 @@ report_section_order: order: -1002 export_plots: true + +disable_version_detection: true diff --git a/assets/schema_input.json b/assets/schema_input.json index bdd869ada..cba734bf1 100644 --- a/assets/schema_input.json +++ b/assets/schema_input.json @@ -10,25 +10,22 @@ "sample": { "type": "string", "pattern": "^\\S+$", - "errorMessage": "Sample name must be provided and cannot contain spaces" + "errorMessage": "Sample name must be provided and cannot contain spaces", + "meta": ["id"] }, "fastq_1": { "type": "string", + "format": "file-path", + "exists": true, "pattern": "^\\S+\\.f(ast)?q\\.gz$", "errorMessage": "FastQ file for reads 1 must be provided, cannot contain spaces and must have extension '.fq.gz' or '.fastq.gz'" }, "fastq_2": { - "errorMessage": "FastQ file for reads 2 cannot contain spaces and must have extension '.fq.gz' or '.fastq.gz'", - "anyOf": [ - { - "type": "string", - "pattern": "^\\S+\\.f(ast)?q\\.gz$" - }, - { - "type": "string", - "maxLength": 0 - } - ] + "type": "string", + "format": "file-path", + "exists": true, + "pattern": "^\\S+\\.f(ast)?q\\.gz$", + "errorMessage": "FastQ file for reads 2 cannot contain spaces and must have extension '.fq.gz' or '.fastq.gz'" } }, "required": ["sample", "fastq_1"] diff --git a/bin/check_samplesheet.py b/bin/check_samplesheet.py deleted file mode 100755 index 4a758fe00..000000000 --- a/bin/check_samplesheet.py +++ /dev/null @@ -1,259 +0,0 @@ -#!/usr/bin/env python - - -"""Provide a command line tool to validate and transform tabular samplesheets.""" - - -import argparse -import csv -import logging -import sys -from collections import Counter -from pathlib import Path - -logger = logging.getLogger() - - -class RowChecker: - """ - Define a service that can validate and transform each given row. - - Attributes: - modified (list): A list of dicts, where each dict corresponds to a previously - validated and transformed row. The order of rows is maintained. - - """ - - VALID_FORMATS = ( - ".fq.gz", - ".fastq.gz", - ) - - def __init__( - self, - sample_col="sample", - first_col="fastq_1", - second_col="fastq_2", - single_col="single_end", - **kwargs, - ): - """ - Initialize the row checker with the expected column names. - - Args: - sample_col (str): The name of the column that contains the sample name - (default "sample"). - first_col (str): The name of the column that contains the first (or only) - FASTQ file path (default "fastq_1"). - second_col (str): The name of the column that contains the second (if any) - FASTQ file path (default "fastq_2"). - single_col (str): The name of the new column that will be inserted and - records whether the sample contains single- or paired-end sequencing - reads (default "single_end"). - - """ - super().__init__(**kwargs) - self._sample_col = sample_col - self._first_col = first_col - self._second_col = second_col - self._single_col = single_col - self._seen = set() - self.modified = [] - - def validate_and_transform(self, row): - """ - Perform all validations on the given row and insert the read pairing status. - - Args: - row (dict): A mapping from column headers (keys) to elements of that row - (values). - - """ - self._validate_sample(row) - self._validate_first(row) - self._validate_second(row) - self._validate_pair(row) - self._seen.add((row[self._sample_col], row[self._first_col])) - self.modified.append(row) - - def _validate_sample(self, row): - """Assert that the sample name exists and convert spaces to underscores.""" - if len(row[self._sample_col]) <= 0: - raise AssertionError("Sample input is required.") - # Sanitize samples slightly. - row[self._sample_col] = row[self._sample_col].replace(" ", "_") - - def _validate_first(self, row): - """Assert that the first FASTQ entry is non-empty and has the right format.""" - if len(row[self._first_col]) <= 0: - raise AssertionError("At least the first FASTQ file is required.") - self._validate_fastq_format(row[self._first_col]) - - def _validate_second(self, row): - """Assert that the second FASTQ entry has the right format if it exists.""" - if len(row[self._second_col]) > 0: - self._validate_fastq_format(row[self._second_col]) - - def _validate_pair(self, row): - """Assert that read pairs have the same file extension. Report pair status.""" - if row[self._first_col] and row[self._second_col]: - row[self._single_col] = False - first_col_suffix = Path(row[self._first_col]).suffixes[-2:] - second_col_suffix = Path(row[self._second_col]).suffixes[-2:] - if first_col_suffix != second_col_suffix: - raise AssertionError("FASTQ pairs must have the same file extensions.") - else: - row[self._single_col] = True - - def _validate_fastq_format(self, filename): - """Assert that a given filename has one of the expected FASTQ extensions.""" - if not any(filename.endswith(extension) for extension in self.VALID_FORMATS): - raise AssertionError( - f"The FASTQ file has an unrecognized extension: {filename}\n" - f"It should be one of: {', '.join(self.VALID_FORMATS)}" - ) - - def validate_unique_samples(self): - """ - Assert that the combination of sample name and FASTQ filename is unique. - - In addition to the validation, also rename all samples to have a suffix of _T{n}, where n is the - number of times the same sample exist, but with different FASTQ files, e.g., multiple runs per experiment. - - """ - if len(self._seen) != len(self.modified): - raise AssertionError("The pair of sample name and FASTQ must be unique.") - seen = Counter() - for row in self.modified: - sample = row[self._sample_col] - seen[sample] += 1 - row[self._sample_col] = f"{sample}_T{seen[sample]}" - - -def read_head(handle, num_lines=10): - """Read the specified number of lines from the current position in the file.""" - lines = [] - for idx, line in enumerate(handle): - if idx == num_lines: - break - lines.append(line) - return "".join(lines) - - -def sniff_format(handle): - """ - Detect the tabular format. - - Args: - handle (text file): A handle to a `text file`_ object. The read position is - expected to be at the beginning (index 0). - - Returns: - csv.Dialect: The detected tabular format. - - .. _text file: - https://docs.python.org/3/glossary.html#term-text-file - - """ - peek = read_head(handle) - handle.seek(0) - sniffer = csv.Sniffer() - dialect = sniffer.sniff(peek) - return dialect - - -def check_samplesheet(file_in, file_out): - """ - Check that the tabular samplesheet has the structure expected by nf-core pipelines. - - Validate the general shape of the table, expected columns, and each row. Also add - an additional column which records whether one or two FASTQ reads were found. - - Args: - file_in (pathlib.Path): The given tabular samplesheet. The format can be either - CSV, TSV, or any other format automatically recognized by ``csv.Sniffer``. - file_out (pathlib.Path): Where the validated and transformed samplesheet should - be created; always in CSV format. - - Example: - This function checks that the samplesheet follows the following structure, - see also the `viral recon samplesheet`_:: - - sample,fastq_1,fastq_2 - SAMPLE_PE,SAMPLE_PE_RUN1_1.fastq.gz,SAMPLE_PE_RUN1_2.fastq.gz - SAMPLE_PE,SAMPLE_PE_RUN2_1.fastq.gz,SAMPLE_PE_RUN2_2.fastq.gz - SAMPLE_SE,SAMPLE_SE_RUN1_1.fastq.gz, - - .. _viral recon samplesheet: - https://raw.githubusercontent.com/nf-core/test-datasets/viralrecon/samplesheet/samplesheet_test_illumina_amplicon.csv - - """ - required_columns = {"sample", "fastq_1", "fastq_2"} - # See https://docs.python.org/3.9/library/csv.html#id3 to read up on `newline=""`. - with file_in.open(newline="") as in_handle: - reader = csv.DictReader(in_handle, dialect=sniff_format(in_handle)) - # Validate the existence of the expected header columns. - if not required_columns.issubset(reader.fieldnames): - req_cols = ", ".join(required_columns) - logger.critical(f"The sample sheet **must** contain these column headers: {req_cols}.") - sys.exit(1) - # Validate each row. - checker = RowChecker() - for i, row in enumerate(reader): - try: - checker.validate_and_transform(row) - except AssertionError as error: - logger.critical(f"{str(error)} On line {i + 2}.") - sys.exit(1) - checker.validate_unique_samples() - header = list(reader.fieldnames) - header.insert(1, "single_end") - # See https://docs.python.org/3.9/library/csv.html#id3 to read up on `newline=""`. - with file_out.open(mode="w", newline="") as out_handle: - writer = csv.DictWriter(out_handle, header, delimiter=",") - writer.writeheader() - for row in checker.modified: - writer.writerow(row) - - -def parse_args(argv=None): - """Define and immediately parse command line arguments.""" - parser = argparse.ArgumentParser( - description="Validate and transform a tabular samplesheet.", - epilog="Example: python check_samplesheet.py samplesheet.csv samplesheet.valid.csv", - ) - parser.add_argument( - "file_in", - metavar="FILE_IN", - type=Path, - help="Tabular input samplesheet in CSV or TSV format.", - ) - parser.add_argument( - "file_out", - metavar="FILE_OUT", - type=Path, - help="Transformed output samplesheet in CSV format.", - ) - parser.add_argument( - "-l", - "--log-level", - help="The desired log level (default WARNING).", - choices=("CRITICAL", "ERROR", "WARNING", "INFO", "DEBUG"), - default="WARNING", - ) - return parser.parse_args(argv) - - -def main(argv=None): - """Coordinate argument parsing and program execution.""" - args = parse_args(argv) - logging.basicConfig(level=args.log_level, format="[%(levelname)s] %(message)s") - if not args.file_in.is_file(): - logger.error(f"The given input file {args.file_in} was not found!") - sys.exit(2) - args.file_out.parent.mkdir(parents=True, exist_ok=True) - check_samplesheet(args.file_in, args.file_out) - - -if __name__ == "__main__": - sys.exit(main()) diff --git a/conf/modules.config b/conf/modules.config index d91c6aba0..e3ea8fa6c 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -18,14 +18,6 @@ process { saveAs: { filename -> filename.equals('versions.yml') ? null : filename } ] - withName: SAMPLESHEET_CHECK { - publishDir = [ - path: { "${params.outdir}/pipeline_info" }, - mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } - ] - } - withName: FASTQC { ext.args = '--quiet' } diff --git a/lib/NfcoreTemplate.groovy b/lib/NfcoreTemplate.groovy deleted file mode 100755 index e248e4c3f..000000000 --- a/lib/NfcoreTemplate.groovy +++ /dev/null @@ -1,356 +0,0 @@ -// -// This file holds several functions used within the nf-core pipeline template. -// - -import org.yaml.snakeyaml.Yaml -import groovy.json.JsonOutput -import nextflow.extension.FilesEx - -class NfcoreTemplate { - - // - // Check AWS Batch related parameters have been specified correctly - // - public static void awsBatch(workflow, params) { - if (workflow.profile.contains('awsbatch')) { - // Check params.awsqueue and params.awsregion have been set if running on AWSBatch - assert (params.awsqueue && params.awsregion) : "Specify correct --awsqueue and --awsregion parameters on AWSBatch!" - // Check outdir paths to be S3 buckets if running on AWSBatch - assert params.outdir.startsWith('s3:') : "Outdir not on S3 - specify S3 Bucket to run on AWSBatch!" - } - } - - // - // Warn if a -profile or Nextflow config has not been provided to run the pipeline - // - public static void checkConfigProvided(workflow, log) { - 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 " - } - } - - // - // Generate version string - // - public static String version(workflow) { - String version_string = "" - - if (workflow.manifest.version) { - def prefix_v = workflow.manifest.version[0] != 'v' ? 'v' : '' - version_string += "${prefix_v}${workflow.manifest.version}" - } - - if (workflow.commitId) { - def git_shortsha = workflow.commitId.substring(0, 7) - version_string += "-g${git_shortsha}" - } - - return version_string - } - - // - // Construct and send completion email - // - public static void email(workflow, params, summary_params, projectDir, log, multiqc_report=[]) { - - // Set up the e-mail variables - def subject = "[$workflow.manifest.name] Successful: $workflow.runName" - if (!workflow.success) { - subject = "[$workflow.manifest.name] FAILED: $workflow.runName" - } - - def summary = [:] - for (group in summary_params.keySet()) { - 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 - misc_fields['Nextflow Compile Timestamp'] = workflow.nextflow.timestamp - - def email_fields = [:] - email_fields['version'] = NfcoreTemplate.version(workflow) - email_fields['runName'] = workflow.runName - email_fields['success'] = workflow.success - email_fields['dateComplete'] = workflow.complete - email_fields['duration'] = workflow.duration - email_fields['exitStatus'] = workflow.exitStatus - email_fields['errorMessage'] = (workflow.errorMessage ?: 'None') - email_fields['errorReport'] = (workflow.errorReport ?: 'None') - email_fields['commandLine'] = workflow.commandLine - email_fields['projectDir'] = workflow.projectDir - email_fields['summary'] = summary << misc_fields - - // On success try attach the multiqc report - def mqc_report = null - try { - if (workflow.success) { - 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" - } - mqc_report = mqc_report[0] - } - } - } catch (all) { - if (multiqc_report) { - log.warn "[$workflow.manifest.name] Could not attach MultiQC report to summary email" - } - } - - // Check if we are only sending emails on failure - def email_address = params.email - if (!params.email && params.email_on_fail && !workflow.success) { - email_address = params.email_on_fail - } - - // Render the TXT template - def engine = new groovy.text.GStringTemplateEngine() - def tf = new File("$projectDir/assets/email_template.txt") - def txt_template = engine.createTemplate(tf).make(email_fields) - def email_txt = txt_template.toString() - - // Render the HTML template - def hf = new File("$projectDir/assets/email_template.html") - def html_template = engine.createTemplate(hf).make(email_fields) - def email_html = html_template.toString() - - // 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: "$projectDir", mqcFile: mqc_report, mqcMaxSize: max_multiqc_email_size.toBytes() ] - def sf = new File("$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(params.monochrome_logs) - if (email_address) { - try { - if (params.plaintext_email) { throw 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) { - // Catch failures and try with plaintext - def mail_cmd = [ 'mail', '-s', subject, '--content-type=text/html', email_address ] - if ( mqc_report != null && mqc_report.size() <= max_multiqc_email_size.toBytes() ) { - mail_cmd += [ '-A', mqc_report ] - } - mail_cmd.execute() << email_html - 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(), "${params.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(), "${params.outdir}/pipeline_info/pipeline_report.txt"); - output_tf.delete() - } - - // - // Construct and send a notification to a web server as JSON - // e.g. Microsoft Teams and Slack - // - public static void IM_notification(workflow, params, summary_params, projectDir, log) { - def hook_url = params.hook_url - - def summary = [:] - for (group in summary_params.keySet()) { - 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 - - def msg_fields = [:] - msg_fields['version'] = NfcoreTemplate.version(workflow) - msg_fields['runName'] = workflow.runName - msg_fields['success'] = workflow.success - msg_fields['dateComplete'] = workflow.complete - msg_fields['duration'] = workflow.duration - msg_fields['exitStatus'] = workflow.exitStatus - msg_fields['errorMessage'] = (workflow.errorMessage ?: 'None') - msg_fields['errorReport'] = (workflow.errorReport ?: 'None') - msg_fields['commandLine'] = workflow.commandLine.replaceFirst(/ +--hook_url +[^ ]+/, "") - msg_fields['projectDir'] = workflow.projectDir - msg_fields['summary'] = summary << misc_fields - - // Render the JSON template - def engine = new groovy.text.GStringTemplateEngine() - // Different JSON depending on the service provider - // Defaults to "Adaptive Cards" (https://adaptivecards.io), except Slack which has its own format - def json_path = hook_url.contains("hooks.slack.com") ? "slackreport.json" : "adaptivecard.json" - def hf = new File("$projectDir/assets/${json_path}") - def json_template = engine.createTemplate(hf).make(msg_fields) - def json_message = json_template.toString() - - // POST - 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()); - } - } - - // - // Dump pipeline parameters in a json file - // - public static void dump_parameters(workflow, params) { - 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) - - FilesEx.copyTo(temp_pf.toPath(), "${params.outdir}/pipeline_info/params_${timestamp}.json") - temp_pf.delete() - } - - // - // Print pipeline summary on completion - // - public static void summary(workflow, params, log) { - Map colors = logColours(params.monochrome_logs) - 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}-" - } - } else { - log.info "-${colors.purple}[$workflow.manifest.name]${colors.red} Pipeline completed with errors${colors.reset}-" - } - } - - // - // ANSII Colours used for terminal logging - // - public static Map logColours(Boolean monochrome_logs) { - Map colorcodes = [:] - - // Reset / Meta - colorcodes['reset'] = monochrome_logs ? '' : "\033[0m" - colorcodes['bold'] = monochrome_logs ? '' : "\033[1m" - colorcodes['dim'] = monochrome_logs ? '' : "\033[2m" - colorcodes['underlined'] = monochrome_logs ? '' : "\033[4m" - colorcodes['blink'] = monochrome_logs ? '' : "\033[5m" - colorcodes['reverse'] = monochrome_logs ? '' : "\033[7m" - 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" - - // 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" - - // 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" - - // 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" - - // 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" - - return colorcodes - } - - // - // Does what is says on the tin - // - public static String dashedLine(monochrome_logs) { - Map colors = logColours(monochrome_logs) - return "-${colors.dim}----------------------------------------------------${colors.reset}-" - } - - // - // nf-core logo - // - public static String logo(workflow, monochrome_logs) { - Map colors = logColours(monochrome_logs) - String workflow_version = NfcoreTemplate.version(workflow) - String.format( - """\n - ${dashedLine(monochrome_logs)} - ${colors.green},--.${colors.black}/${colors.green},-.${colors.reset} - ${colors.blue} ___ __ __ __ ___ ${colors.green}/,-._.--~\'${colors.reset} - ${colors.blue} |\\ | |__ __ / ` / \\ |__) |__ ${colors.yellow}} {${colors.reset} - ${colors.blue} | \\| | \\__, \\__/ | \\ |___ ${colors.green}\\`-._,-`-,${colors.reset} - ${colors.green}`._,._,\'${colors.reset} - ${colors.purple} ${workflow.manifest.name} ${workflow_version}${colors.reset} - ${dashedLine(monochrome_logs)} - """.stripIndent() - ) - } -} diff --git a/lib/Utils.groovy b/lib/Utils.groovy deleted file mode 100644 index 8d030f4e8..000000000 --- a/lib/Utils.groovy +++ /dev/null @@ -1,47 +0,0 @@ -// -// This file holds several Groovy functions that could be useful for any Nextflow pipeline -// - -import org.yaml.snakeyaml.Yaml - -class Utils { - - // - // When running with -profile conda, warn if channels have not been set-up appropriately - // - public static void checkCondaChannels(log) { - Yaml parser = new 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 - } - - // 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 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])) - } - - 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" + - "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" - } - } -} diff --git a/lib/WorkflowMain.groovy b/lib/WorkflowMain.groovy deleted file mode 100755 index 780668a97..000000000 --- a/lib/WorkflowMain.groovy +++ /dev/null @@ -1,77 +0,0 @@ -// -// This file holds several functions specific to the main.nf workflow in the nf-core/rnaseq pipeline -// - -import nextflow.Nextflow - -class WorkflowMain { - - // - // Citation string for pipeline - // - public static String citation(workflow) { - return "If you use ${workflow.manifest.name} for your analysis please cite:\n\n" + - // TODO nf-core: Add Zenodo DOI for pipeline after first release - //"* The pipeline\n" + - //" https://doi.org/10.5281/zenodo.XXXXXXX\n\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" - } - - - // - // Validate parameters and print summary to screen - // - public static void initialise(workflow, params, log, args) { - - // Print workflow version and exit on --version - if (params.version) { - String workflow_version = NfcoreTemplate.version(workflow) - log.info "${workflow.manifest.name} ${workflow_version}" - System.exit(0) - } - - // Check that a -profile or Nextflow config has been provided to run the pipeline - NfcoreTemplate.checkConfigProvided(workflow, log) - // Check that the profile doesn't contain spaces and doesn't end with a trailing comma - checkProfile(workflow.profile, args, log) - - // Check that conda channels are set-up correctly - if (workflow.profile.tokenize(',').intersect(['conda', 'mamba']).size() >= 1) { - Utils.checkCondaChannels(log) - } - - // Check AWS batch settings - NfcoreTemplate.awsBatch(workflow, params) - - // Check input has been provided - if (!params.input) { - Nextflow.error("Please provide an input samplesheet to the pipeline e.g. '--input samplesheet.csv'") - } - } - // - // Get attribute from genome config file e.g. fasta - // - public static Object getGenomeAttribute(params, attribute) { - if (params.genomes && params.genome && params.genomes.containsKey(params.genome)) { - if (params.genomes[ params.genome ].containsKey(attribute)) { - return params.genomes[ params.genome ][ attribute ] - } - } - return null - } - - // - // Exit pipeline if --profile contains spaces - // - private static void checkProfile(profile, args, log) { - if (profile.endsWith(',')) { - Nextflow.error "Profile cannot end with a trailing comma. Please remove the comma from the end of the profile string.\nHint: A common mistake is to provide multiple values to `-profile` separated by spaces. Please use commas to separate profiles instead,e.g., `-profile docker,test`." - } - if (args[0]) { - log.warn "nf-core pipelines do not accept positional arguments. The positional argument `${args[0]}` has been detected.\n Hint: A common mistake is to provide multiple values to `-profile` separated by spaces. Please use commas to separate profiles instead,e.g., `-profile docker,test`." - } - } -} diff --git a/lib/WorkflowRnaseq.groovy b/lib/WorkflowRnaseq.groovy deleted file mode 100755 index e9695b648..000000000 --- a/lib/WorkflowRnaseq.groovy +++ /dev/null @@ -1,122 +0,0 @@ -// -// This file holds several functions specific to the workflow/rnaseq.nf in the nf-core/rnaseq pipeline -// - -import nextflow.Nextflow -import groovy.text.SimpleTemplateEngine - -class WorkflowRnaseq { - - // - // Check and validate parameters - // - public static void initialise(params, log) { - - genomeExistsError(params, log) - - - if (!params.fasta) { - Nextflow.error "Genome fasta file not specified with e.g. '--fasta genome.fa' or via a detectable config file." - } - } - - // - // Get workflow summary for MultiQC - // - public static String paramsSummaryMultiqc(workflow, summary) { - String summary_section = '' - for (group in summary.keySet()) { - def group_params = summary.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_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}" - return yaml_file_text - } - - // - // Generate methods description for MultiQC - // - - public static String toolCitationText(params) { - - // TODO nf-core: Optionally add in-text citation tools to this list. - // Can use ternary operators to dynamically construct based conditions, e.g. params["run_xyz"] ? "Tool (Foo et al. 2023)" : "", - // Uncomment function in methodsDescriptionText to render in MultiQC report - def citation_text = [ - "Tools used in the workflow included:", - "FastQC (Andrews 2010),", - "MultiQC (Ewels et al. 2016)", - "." - ].join(' ').trim() - - return citation_text - } - - public static String toolBibliographyText(params) { - - // TODO Optionally add bibliographic entries to this list. - // 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() - - return reference_text - } - - public static String methodsDescriptionText(run_workflow, mqc_methods_yaml, params) { - // Convert to a named map so can be used as with familar NXF ${workflow} variable syntax in the MultiQC YML file - def meta = [:] - meta.workflow = run_workflow.toMap() - meta["manifest_map"] = run_workflow.manifest.toMap() - - // Pipeline DOI - meta["doi_text"] = meta.manifest_map.doi ? "(doi: ${meta.manifest_map.doi})" : "" - meta["nodoi_text"] = meta.manifest_map.doi ? "": "
  • If available, make sure to update the text to include the Zenodo DOI of version of the pipeline used.
  • " - - // Tool references - meta["tool_citations"] = "" - meta["tool_bibliography"] = "" - - // TODO Only uncomment below if logic in toolCitationText/toolBibliographyText has been filled! - //meta["tool_citations"] = toolCitationText(params).replaceAll(", \\.", ".").replaceAll("\\. \\.", ".").replaceAll(", \\.", ".") - //meta["tool_bibliography"] = toolBibliographyText(params) - - - def methods_text = mqc_methods_yaml.text - - def engine = new SimpleTemplateEngine() - def description_html = engine.createTemplate(methods_text).make(meta) - - return description_html - } - - // - // Exit pipeline if incorrect --genome key provided - // - private static void genomeExistsError(params, log) { - if (params.genomes && params.genome && !params.genomes.containsKey(params.genome)) { - def error_string = "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" + - " Genome '${params.genome}' not found in any config files provided to the pipeline.\n" + - " Currently, the available genome keys are:\n" + - " ${params.genomes.keySet().join(", ")}\n" + - "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" - Nextflow.error(error_string) - } - } -} diff --git a/main.nf b/main.nf index 87f05afae..b36a906c7 100644 --- a/main.nf +++ b/main.nf @@ -13,66 +13,96 @@ nextflow.enable.dsl = 2 /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - GENOME PARAMETER VALUES + IMPORT FUNCTIONS / MODULES / SUBWORKFLOWS / WORKFLOWS ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ -// TODO nf-core: Remove this line if you don't need a FASTA file -// This is an example of how to use getGenomeAttribute() to fetch parameters -// from igenomes.config using `--genome` -params.fasta = WorkflowMain.getGenomeAttribute(params, 'fasta') +include { RNASEQ } from './workflows/rnaseq' +include { PIPELINE_INITIALISATION } from './subworkflows/local/utils_nfcore_rnaseq_pipeline' +include { PIPELINE_COMPLETION } from './subworkflows/local/utils_nfcore_rnaseq_pipeline' + +include { getGenomeAttribute } from './subworkflows/local/utils_nfcore_rnaseq_pipeline' /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - VALIDATE & PRINT PARAMETER SUMMARY + GENOME PARAMETER VALUES ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ -include { validateParameters; paramsHelp } from 'plugin/nf-validation' - -// Print help message if needed -if (params.help) { - def logo = NfcoreTemplate.logo(workflow, params.monochrome_logs) - def citation = '\n' + WorkflowMain.citation(workflow) + '\n' - def String command = "nextflow run ${workflow.manifest.name} --input samplesheet.csv --genome GRCh37 -profile docker" - log.info logo + paramsHelp(command) + citation + NfcoreTemplate.dashedLine(params.monochrome_logs) - System.exit(0) -} - -// Validate input parameters -if (params.validate_params) { - validateParameters() -} - -WorkflowMain.initialise(workflow, params, log, args) +// TODO nf-core: Remove this line if you don't need a FASTA file +// This is an example of how to use getGenomeAttribute() to fetch parameters +// from igenomes.config using `--genome` +params.fasta = getGenomeAttribute('fasta') /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - NAMED WORKFLOW FOR PIPELINE + NAMED WORKFLOWS FOR PIPELINE ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ -include { RNASEQ } from './workflows/rnaseq' - // -// WORKFLOW: Run main nf-core/rnaseq analysis pipeline +// WORKFLOW: Run main analysis pipeline depending on type of input // workflow NFCORE_RNASEQ { - RNASEQ () -} + take: + samplesheet // channel: samplesheet read in from --input + + main: + + // + // WORKFLOW: Run pipeline + // + RNASEQ ( + samplesheet + ) + + emit: + multiqc_report = RNASEQ.out.multiqc_report // channel: /path/to/multiqc_report.html + +} /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - RUN ALL WORKFLOWS + RUN MAIN WORKFLOW ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ -// -// WORKFLOW: Execute a single named workflow for the pipeline -// See: https://github.com/nf-core/rnaseq/issues/619 -// workflow { - NFCORE_RNASEQ () + + 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 + // + NFCORE_RNASEQ ( + PIPELINE_INITIALISATION.out.samplesheet + ) + + // + // SUBWORKFLOW: Run completion tasks + // + PIPELINE_COMPLETION ( + params.email, + params.email_on_fail, + params.plaintext_email, + params.outdir, + params.monochrome_logs, + params.hook_url, + NFCORE_RNASEQ.out.multiqc_report + ) } /* diff --git a/modules.json b/modules.json index 2a45b385c..debc97f63 100644 --- a/modules.json +++ b/modules.json @@ -5,22 +5,36 @@ "https://github.com/nf-core/modules.git": { "modules": { "nf-core": { - "custom/dumpsoftwareversions": { - "branch": "master", - "git_sha": "8ec825f465b9c17f9d83000022995b4f7de6fe93", - "installed_by": ["modules"] - }, "fastqc": { "branch": "master", - "git_sha": "c9488585ce7bd35ccd2a30faa2371454c8112fb9", + "git_sha": "f4ae1d942bd50c5c0b9bd2de1393ce38315ba57c", "installed_by": ["modules"] }, "multiqc": { "branch": "master", - "git_sha": "8ec825f465b9c17f9d83000022995b4f7de6fe93", + "git_sha": "ccacf6f5de6df3bc6d73b665c1fd2933d8bbc290", "installed_by": ["modules"] } } + }, + "subworkflows": { + "nf-core": { + "utils_nextflow_pipeline": { + "branch": "master", + "git_sha": "cd08c91373cd00a73255081340e4914485846ba1", + "installed_by": ["subworkflows"] + }, + "utils_nfcore_pipeline": { + "branch": "master", + "git_sha": "262b17ed2aad591039f914951659177e6c39a8d8", + "installed_by": ["subworkflows"] + }, + "utils_nfvalidation_plugin": { + "branch": "master", + "git_sha": "cd08c91373cd00a73255081340e4914485846ba1", + "installed_by": ["subworkflows"] + } + } } } } diff --git a/modules/local/samplesheet_check.nf b/modules/local/samplesheet_check.nf deleted file mode 100644 index 5014c663f..000000000 --- a/modules/local/samplesheet_check.nf +++ /dev/null @@ -1,31 +0,0 @@ -process SAMPLESHEET_CHECK { - tag "$samplesheet" - label 'process_single' - - conda "conda-forge::python=3.8.3" - container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/python:3.8.3' : - 'biocontainers/python:3.8.3' }" - - input: - path samplesheet - - output: - path '*.csv' , emit: csv - path "versions.yml", emit: versions - - when: - task.ext.when == null || task.ext.when - - script: // This script is bundled with the pipeline, in nf-core/rnaseq/bin/ - """ - check_samplesheet.py \\ - $samplesheet \\ - samplesheet.valid.csv - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - python: \$(python --version | sed 's/Python //g') - END_VERSIONS - """ -} diff --git a/modules/nf-core/custom/dumpsoftwareversions/environment.yml b/modules/nf-core/custom/dumpsoftwareversions/environment.yml deleted file mode 100644 index 9b3272bc1..000000000 --- a/modules/nf-core/custom/dumpsoftwareversions/environment.yml +++ /dev/null @@ -1,7 +0,0 @@ -name: custom_dumpsoftwareversions -channels: - - conda-forge - - bioconda - - defaults -dependencies: - - bioconda::multiqc=1.19 diff --git a/modules/nf-core/custom/dumpsoftwareversions/main.nf b/modules/nf-core/custom/dumpsoftwareversions/main.nf deleted file mode 100644 index f2187611c..000000000 --- a/modules/nf-core/custom/dumpsoftwareversions/main.nf +++ /dev/null @@ -1,24 +0,0 @@ -process CUSTOM_DUMPSOFTWAREVERSIONS { - label 'process_single' - - // Requires `pyyaml` which does not have a dedicated container but is in the MultiQC container - conda "${moduleDir}/environment.yml" - container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/multiqc:1.19--pyhdfd78af_0' : - 'biocontainers/multiqc:1.19--pyhdfd78af_0' }" - - input: - path versions - - output: - path "software_versions.yml" , emit: yml - path "software_versions_mqc.yml", emit: mqc_yml - path "versions.yml" , emit: versions - - when: - task.ext.when == null || task.ext.when - - script: - def args = task.ext.args ?: '' - template 'dumpsoftwareversions.py' -} diff --git a/modules/nf-core/custom/dumpsoftwareversions/meta.yml b/modules/nf-core/custom/dumpsoftwareversions/meta.yml deleted file mode 100644 index 5f15a5fde..000000000 --- a/modules/nf-core/custom/dumpsoftwareversions/meta.yml +++ /dev/null @@ -1,37 +0,0 @@ -# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/meta-schema.json -name: custom_dumpsoftwareversions -description: Custom module used to dump software versions within the nf-core pipeline template -keywords: - - custom - - dump - - version -tools: - - custom: - description: Custom module used to dump software versions within the nf-core pipeline template - homepage: https://github.com/nf-core/tools - documentation: https://github.com/nf-core/tools - licence: ["MIT"] -input: - - versions: - type: file - description: YML file containing software versions - pattern: "*.yml" -output: - - yml: - type: file - description: Standard YML file containing software versions - pattern: "software_versions.yml" - - mqc_yml: - type: file - description: MultiQC custom content YML file containing software versions - pattern: "software_versions_mqc.yml" - - versions: - type: file - description: File containing software versions - pattern: "versions.yml" -authors: - - "@drpatelh" - - "@grst" -maintainers: - - "@drpatelh" - - "@grst" diff --git a/modules/nf-core/custom/dumpsoftwareversions/templates/dumpsoftwareversions.py b/modules/nf-core/custom/dumpsoftwareversions/templates/dumpsoftwareversions.py deleted file mode 100755 index e55b8d43a..000000000 --- a/modules/nf-core/custom/dumpsoftwareversions/templates/dumpsoftwareversions.py +++ /dev/null @@ -1,102 +0,0 @@ -#!/usr/bin/env python - - -"""Provide functions to merge multiple versions.yml files.""" - - -import platform -from textwrap import dedent - -import yaml - - -def _make_versions_html(versions): - """Generate a tabular HTML output of all versions for MultiQC.""" - html = [ - dedent( - """\\ - -
    Process Name \\", + " \\ Software Version
    CUSTOM_DUMPSOFTWAREVERSIONSpython3.11.7
    yaml5.4.1
    TOOL1tool10.11.9
    TOOL2tool21.9
    WorkflowNextflow
    File typeConventional base calls
    File typeConventional base calls
    File typeConventional base calls
    File typeConventional base calls
    File typeConventional base calls
    File typeConventional base calls
    File typeConventional base calls
    File typeConventional base calls
    File typeConventional base calls
    File typeConventional base calls
    File typeConventional base calls
    12.922000 K (92.984097%)", + "single end (151 cycles)" ] + def log_text = [ "Q20 bases: 12922(92.9841%)", + "reads passed filter: 99" ] + def read_lines = ["@ERR5069949.2151832 NS500628:121:HK3MMAFX2:2:21208:10793:15304/1", + "TCATAAACCAAAGCACTCACAGTGTCAACAATTTCAGCAGGACAACGCCGACAAGTTCCGAGGAACATGTCTGGACCTATAGTTTTCATAAGTCTACACACTGAATTGAAATATTCTGGTTCTAGTGTGCCCTTAGTTAGCAATGTGCGT", + "AAAAAAEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEAAEEEEAEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEAAEEEEE + { assert path(process.out.reads.get(0).get(1)).linesGzip.contains(read_line) } + } + }, + { html_text.each { html_part -> + { assert path(process.out.html.get(0).get(1)).getText().contains(html_part) } + } + }, + { assert snapshot(process.out.json).match("test_fastp_single_end_json") }, + { log_text.each { log_part -> + { assert path(process.out.log.get(0).get(1)).getText().contains(log_part) } + } + }, + { + assert snapshot( + ( + [process.out.reads[0][0].toString()] + // meta + process.out.reads.collect { file(it[1]).getName() } + + process.out.json.collect { file(it[1]).getName() } + + process.out.html.collect { file(it[1]).getName() } + + process.out.log.collect { file(it[1]).getName() } + + process.out.reads_fail.collect { file(it[1]).getName() } + + process.out.reads_merged.collect { file(it[1]).getName() } + ).sort() + ).match("test_fastp_single_end-_match") + }, + { assert snapshot(process.out.versions).match("versions_single_end") } + ) + } + } + + test("test_fastp_single_end-stub") { + + options '-stub' + + when { + params { + outdir = "$outputDir" + } + process { + """ + adapter_fasta = [] + save_trimmed_fail = false + save_merged = false + + 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) ] + ]) + input[1] = adapter_fasta + input[2] = save_trimmed_fail + input[3] = save_merged + """ + } + } + + then { + + assertAll( + { assert process.success }, + { + assert snapshot( + ( + [process.out.reads[0][0].toString()] + // meta + process.out.reads.collect { file(it[1]).getName() } + + process.out.json.collect { file(it[1]).getName() } + + process.out.html.collect { file(it[1]).getName() } + + process.out.log.collect { file(it[1]).getName() } + + process.out.reads_fail.collect { file(it[1]).getName() } + + process.out.reads_merged.collect { file(it[1]).getName() } + ).sort() + ).match("test_fastp_single_end-for_stub_match") + }, + { assert snapshot(process.out.versions).match("versions_single_end_stub") } + ) + } + } + + test("test_fastp_paired_end") { + + when { + params { + outdir = "$outputDir" + } + process { + """ + adapter_fasta = [] + save_trimmed_fail = false + save_merged = false + + 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) ] + ]) + input[1] = adapter_fasta + input[2] = save_trimmed_fail + input[3] = save_merged + """ + } + } + + then { + def html_text = [ "Q20 bases:25.719000 K (93.033098%)", + "The input has little adapter percentage (~0.000000%), probably it's trimmed before."] + def log_text = [ "No adapter detected for read1", + "Q30 bases: 12281(88.3716%)"] + def json_text = ['"passed_filter_reads": 198'] + def read1_lines = ["@ERR5069949.2151832 NS500628:121:HK3MMAFX2:2:21208:10793:15304/1", + "TCATAAACCAAAGCACTCACAGTGTCAACAATTTCAGCAGGACAACGCCGACAAGTTCCGAGGAACATGTCTGGACCTATAGTTTTCATAAGTCTACACACTGAATTGAAATATTCTGGTTCTAGTGTGCCCTTAGTTAGCAATGTGCGT", + "AAAAAAEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEAAEEEEAEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEAAEEEEE + { assert path(process.out.reads.get(0).get(1).get(0)).linesGzip.contains(read1_line) } + } + }, + { read2_lines.each { read2_line -> + { assert path(process.out.reads.get(0).get(1).get(1)).linesGzip.contains(read2_line) } + } + }, + { html_text.each { html_part -> + { assert path(process.out.html.get(0).get(1)).getText().contains(html_part) } + } + }, + { json_text.each { json_part -> + { assert path(process.out.json.get(0).get(1)).getText().contains(json_part) } + } + }, + { log_text.each { log_part -> + { assert path(process.out.log.get(0).get(1)).getText().contains(log_part) } + } + }, + { + assert snapshot( + ( + [process.out.reads[0][0].toString()] + // meta + process.out.reads.collect { it[1].collect { item -> file(item).getName() } } + + process.out.json.collect { file(it[1]).getName() } + + process.out.html.collect { file(it[1]).getName() } + + process.out.log.collect { file(it[1]).getName() } + + process.out.reads_fail.collect { file(it[1]).getName() } + + process.out.reads_merged.collect { file(it[1]).getName() } + ).sort() + ).match("test_fastp_paired_end_match") + }, + { assert snapshot(process.out.versions).match("versions_paired_end") } + ) + } + } + + test("test_fastp_paired_end-stub") { + + options '-stub' + + when { + params { + outdir = "$outputDir" + } + process { + """ + adapter_fasta = [] + save_trimmed_fail = false + save_merged = false + + 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) ] + ]) + input[1] = adapter_fasta + input[2] = save_trimmed_fail + input[3] = save_merged + """ + } + } + + then { + assertAll( + { assert process.success }, + { + assert snapshot( + ( + [process.out.reads[0][0].toString()] + // meta + process.out.reads.collect { it[1].collect { item -> file(item).getName() } } + + process.out.json.collect { file(it[1]).getName() } + + process.out.html.collect { file(it[1]).getName() } + + process.out.log.collect { file(it[1]).getName() } + + process.out.reads_fail.collect { file(it[1]).getName() } + + process.out.reads_merged.collect { file(it[1]).getName() } + ).sort() + ).match("test_fastp_paired_end-for_stub_match") + }, + { assert snapshot(process.out.versions).match("versions_paired_end-stub") } + ) + } + } + + test("fastp test_fastp_interleaved") { + config './nextflow.config' + when { + params { + outdir = "$outputDir" + } + process { + """ + adapter_fasta = [] + save_trimmed_fail = false + save_merged = false + + input[0] = Channel.of([ + [ id:'test', single_end:true ], // meta map + [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_interleaved.fastq.gz', checkIfExists: true) ] + ]) + input[1] = adapter_fasta + input[2] = save_trimmed_fail + input[3] = save_merged + """ + } + } + + then { + def html_text = [ "Q20 bases:25.719000 K (93.033098%)", + "paired end (151 cycles + 151 cycles)"] + def log_text = [ "Q20 bases: 12922(92.9841%)", + "reads passed filter: 198"] + def read_lines = [ "@ERR5069949.2151832 NS500628:121:HK3MMAFX2:2:21208:10793:15304/1", + "TCATAAACCAAAGCACTCACAGTGTCAACAATTTCAGCAGGACAACGCCGACAAGTTCCGAGGAACATGTCTGGACCTATAGTTTTCATAAGTCTACACACTGAATTGAAATATTCTGGTTCTAGTGTGCCCTTAGTTAGCAATGTGCGT", + "AAAAAAEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEAAEEEEAEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEAAEEEEE + { assert path(process.out.reads.get(0).get(1)).linesGzip.contains(read_line) } + } + }, + { html_text.each { html_part -> + { assert path(process.out.html.get(0).get(1)).getText().contains(html_part) } + } + }, + { assert snapshot(process.out.json).match("fastp test_fastp_interleaved_json") }, + { log_text.each { log_part -> + { assert path(process.out.log.get(0).get(1)).getText().contains(log_part) } + } + }, + { + assert snapshot( + ( + [process.out.reads[0][0].toString()] + // meta + process.out.reads.collect { file(it[1]).getName() } + + process.out.json.collect { file(it[1]).getName() } + + process.out.html.collect { file(it[1]).getName() } + + process.out.log.collect { file(it[1]).getName() } + + process.out.reads_fail.collect { file(it[1]).getName() } + + process.out.reads_merged.collect { file(it[1]).getName() } + ).sort() + ).match("test_fastp_interleaved-_match") + }, + { assert snapshot(process.out.versions).match("versions_interleaved") } + ) + } + } + + test("fastp test_fastp_interleaved-stub") { + + options '-stub' + + config './nextflow.config' + when { + params { + outdir = "$outputDir" + } + process { + """ + adapter_fasta = [] + save_trimmed_fail = false + save_merged = false + + input[0] = Channel.of([ + [ id:'test', single_end:true ], // meta map + [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_interleaved.fastq.gz', checkIfExists: true) ] + ]) + input[1] = adapter_fasta + input[2] = save_trimmed_fail + input[3] = save_merged + """ + } + } + + then { + assertAll( + { assert process.success }, + { + assert snapshot( + ( + [process.out.reads[0][0].toString()] + // meta + process.out.reads.collect { file(it[1]).getName() } + + process.out.json.collect { file(it[1]).getName() } + + process.out.html.collect { file(it[1]).getName() } + + process.out.log.collect { file(it[1]).getName() } + + process.out.reads_fail.collect { file(it[1]).getName() } + + process.out.reads_merged.collect { file(it[1]).getName() } + ).sort() + ).match("test_fastp_interleaved-for_stub_match") + }, + { assert snapshot(process.out.versions).match("versions_interleaved-stub") } + ) + } + } + + test("test_fastp_single_end_trim_fail") { + + when { + params { + outdir = "$outputDir" + } + process { + """ + adapter_fasta = [] + save_trimmed_fail = true + save_merged = false + + input[0] = Channel.of([ + [ id:'test', single_end:true ], // meta map + [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true) ] + ]) + input[1] = adapter_fasta + input[2] = save_trimmed_fail + input[3] = save_merged + """ + } + } + + then { + def html_text = [ "Q20 bases:12.922000 K (92.984097%)", + "single end (151 cycles)"] + def log_text = [ "Q20 bases: 12922(92.9841%)", + "reads passed filter: 99" ] + def read_lines = [ "@ERR5069949.2151832 NS500628:121:HK3MMAFX2:2:21208:10793:15304/1", + "TCATAAACCAAAGCACTCACAGTGTCAACAATTTCAGCAGGACAACGCCGACAAGTTCCGAGGAACATGTCTGGACCTATAGTTTTCATAAGTCTACACACTGAATTGAAATATTCTGGTTCTAGTGTGCCCTTAGTTAGCAATGTGCGT", + "AAAAAAEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEAAEEEEAEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEAAEEEEE + { assert path(process.out.reads.get(0).get(1)).linesGzip.contains(read_line) } + } + }, + { failed_read_lines.each { failed_read_line -> + { assert path(process.out.reads_fail.get(0).get(1)).linesGzip.contains(failed_read_line) } + } + }, + { html_text.each { html_part -> + { assert path(process.out.html.get(0).get(1)).getText().contains(html_part) } + } + }, + { assert snapshot(process.out.json).match("test_fastp_single_end_trim_fail_json") }, + { log_text.each { log_part -> + { assert path(process.out.log.get(0).get(1)).getText().contains(log_part) } + } + }, + { assert snapshot(process.out.versions).match("versions_single_end_trim_fail") } + ) + } + } + + test("test_fastp_paired_end_trim_fail") { + + when { + params { + outdir = "$outputDir" + } + process { + """ + adapter_fasta = [] + save_trimmed_fail = true + save_merged = false + + 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)] + ]) + input[1] = adapter_fasta + input[2] = save_trimmed_fail + input[3] = save_merged + """ + } + } + + then { + def html_text = [ "Q20 bases:25.719000 K (93.033098%)", + "The input has little adapter percentage (~0.000000%), probably it's trimmed before."] + def log_text = [ "No adapter detected for read1", + "Q30 bases: 12281(88.3716%)"] + def json_text = ['"passed_filter_reads": 198'] + def read1_lines = ["@ERR5069949.2151832 NS500628:121:HK3MMAFX2:2:21208:10793:15304/1", + "TCATAAACCAAAGCACTCACAGTGTCAACAATTTCAGCAGGACAACGCCGACAAGTTCCGAGGAACATGTCTGGACCTATAGTTTTCATAAGTCTACACACTGAATTGAAATATTCTGGTTCTAGTGTGCCCTTAGTTAGCAATGTGCGT", + "AAAAAAEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEAAEEEEAEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEAAEEEEE + { assert path(process.out.reads.get(0).get(1).get(0)).linesGzip.contains(read1_line) } + } + }, + { read2_lines.each { read2_line -> + { assert path(process.out.reads.get(0).get(1).get(1)).linesGzip.contains(read2_line) } + } + }, + { failed_read2_lines.each { failed_read2_line -> + { assert path(process.out.reads_fail.get(0).get(1).get(1)).linesGzip.contains(failed_read2_line) } + } + }, + { html_text.each { html_part -> + { assert path(process.out.html.get(0).get(1)).getText().contains(html_part) } + } + }, + { json_text.each { json_part -> + { assert path(process.out.json.get(0).get(1)).getText().contains(json_part) } + } + }, + { log_text.each { log_part -> + { assert path(process.out.log.get(0).get(1)).getText().contains(log_part) } + } + }, + { assert snapshot(process.out.versions).match("versions_paired_end_trim_fail") } + ) + } + } + + test("test_fastp_paired_end_merged") { + + when { + params { + outdir = "$outputDir" + } + process { + """ + adapter_fasta = [] + save_trimmed_fail = false + save_merged = true + 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) ] + ]) + input[1] = adapter_fasta + input[2] = save_trimmed_fail + input[3] = save_merged + """ + } + } + + then { + def html_text = [ "
    "] + def log_text = [ "Merged and filtered:", + "total reads: 75", + "total bases: 13683"] + def json_text = ['"merged_and_filtered": {', '"total_reads": 75', '"total_bases": 13683'] + def read1_lines = [ "@ERR5069949.1066259 NS500628:121:HK3MMAFX2:1:11312:18369:8333/1", + "CCTTATGACAGCAAGAACTGTGTATGATGATGGTGCTAGGAGAGTGTGGACACTTATGAATGTCTTGACACTCGTTTATAAAGTTTATTATGGTAATGCTTTAGATCAAGCCATTTCCATGTGGGCTCTTATAATCTCTGTTACTTC", + "AAAAAEAEEAEEEEEEEEEEEEEEEEAEEEEAEEEEEEEEAEEEEEEEEEEEEEEEEE/EAEEEEEE/6EEEEEEEEEEAEEAEEE/EE/AEEAEEEEEAEEEA/EEAAEAE + { assert path(process.out.reads.get(0).get(1).get(0)).linesGzip.contains(read1_line) } + } + }, + { read2_lines.each { read2_line -> + { assert path(process.out.reads.get(0).get(1).get(1)).linesGzip.contains(read2_line) } + } + }, + { read_merged_lines.each { read_merged_line -> + { assert path(process.out.reads_merged.get(0).get(1)).linesGzip.contains(read_merged_line) } + } + }, + { html_text.each { html_part -> + { assert path(process.out.html.get(0).get(1)).getText().contains(html_part) } + } + }, + { json_text.each { json_part -> + { assert path(process.out.json.get(0).get(1)).getText().contains(json_part) } + } + }, + { log_text.each { log_part -> + { assert path(process.out.log.get(0).get(1)).getText().contains(log_part) } + } + }, + { + assert snapshot( + ( + [process.out.reads[0][0].toString()] + // meta + process.out.reads.collect { it[1].collect { item -> file(item).getName() } } + + process.out.json.collect { file(it[1]).getName() } + + process.out.html.collect { file(it[1]).getName() } + + process.out.log.collect { file(it[1]).getName() } + + process.out.reads_fail.collect { file(it[1]).getName() } + + process.out.reads_merged.collect { file(it[1]).getName() } + ).sort() + ).match("test_fastp_paired_end_merged_match") + }, + { assert snapshot(process.out.versions).match("versions_paired_end_merged") } + ) + } + } + + test("test_fastp_paired_end_merged-stub") { + + options '-stub' + + when { + params { + outdir = "$outputDir" + } + process { + """ + adapter_fasta = [] + save_trimmed_fail = false + save_merged = true + + 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) ] + ]) + input[1] = adapter_fasta + input[2] = save_trimmed_fail + input[3] = save_merged + """ + } + } + + then { + assertAll( + { assert process.success }, + { + assert snapshot( + ( + [process.out.reads[0][0].toString()] + // meta + process.out.reads.collect { it[1].collect { item -> file(item).getName() } } + + process.out.json.collect { file(it[1]).getName() } + + process.out.html.collect { file(it[1]).getName() } + + process.out.log.collect { file(it[1]).getName() } + + process.out.reads_fail.collect { file(it[1]).getName() } + + process.out.reads_merged.collect { file(it[1]).getName() } + ).sort() + ).match("test_fastp_paired_end_merged-for_stub_match") + }, + { assert snapshot(process.out.versions).match("versions_paired_end_merged_stub") } + ) + } + } + + test("test_fastp_paired_end_merged_adapterlist") { + + when { + params { + outdir = "$outputDir" + } + process { + """ + adapter_fasta = Channel.of([ file(params.modules_testdata_base_path + 'delete_me/fastp/adapters.fasta', checkIfExists: true) ]) + save_trimmed_fail = false + save_merged = true + + 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) ] + ]) + input[1] = adapter_fasta + input[2] = save_trimmed_fail + input[3] = save_merged + """ + } + } + + then { + def html_text = [ "
    "] + def log_text = [ "Merged and filtered:", + "total reads: 75", + "total bases: 13683"] + def json_text = ['"merged_and_filtered": {', '"total_reads": 75', '"total_bases": 13683',"--adapter_fasta"] + def read1_lines = ["@ERR5069949.1066259 NS500628:121:HK3MMAFX2:1:11312:18369:8333/1", + "CCTTATGACAGCAAGAACTGTGTATGATGATGGTGCTAGGAGAGTGTGGACACTTATGAATGTCTTGACACTCGTTTATAAAGTTTATTATGGTAATGCTTTAGATCAAGCCATTTCCATGTGGGCTCTTATAATCTCTGTTACTTC", + "AAAAAEAEEAEEEEEEEEEEEEEEEEAEEEEAEEEEEEEEAEEEEEEEEEEEEEEEEE/EAEEEEEE/6EEEEEEEEEEAEEAEEE/EE/AEEAEEEEEAEEEA/EEAAEAE + { assert path(process.out.reads.get(0).get(1).get(0)).linesGzip.contains(read1_line) } + } + }, + { read2_lines.each { read2_line -> + { assert path(process.out.reads.get(0).get(1).get(1)).linesGzip.contains(read2_line) } + } + }, + { read_merged_lines.each { read_merged_line -> + { assert path(process.out.reads_merged.get(0).get(1)).linesGzip.contains(read_merged_line) } + } + }, + { html_text.each { html_part -> + { assert path(process.out.html.get(0).get(1)).getText().contains(html_part) } + } + }, + { json_text.each { json_part -> + { assert path(process.out.json.get(0).get(1)).getText().contains(json_part) } + } + }, + { log_text.each { log_part -> + { assert path(process.out.log.get(0).get(1)).getText().contains(log_part) } + } + }, + { assert snapshot(process.out.versions).match("versions_paired_end_merged_adapterlist") } + ) + } + } +} diff --git a/modules/nf-core/fastp/tests/main.nf.test.snap b/modules/nf-core/fastp/tests/main.nf.test.snap new file mode 100644 index 000000000..b4c0e1dd8 --- /dev/null +++ b/modules/nf-core/fastp/tests/main.nf.test.snap @@ -0,0 +1,330 @@ +{ + "fastp test_fastp_interleaved_json": { + "content": [ + [ + [ + { + "id": "test", + "single_end": true + }, + "test.fastp.json:md5,168f516f7bd4b7b6c32da7cba87299a4" + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-01-17T18:08:06.123035" + }, + "test_fastp_paired_end_merged-for_stub_match": { + "content": [ + [ + [ + "test_1.fastp.fastq.gz", + "test_2.fastp.fastq.gz" + ], + "test.fastp.html", + "test.fastp.json", + "test.fastp.log", + "test.merged.fastq.gz", + "{id=test, single_end=false}" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-01-17T18:10:13.467574" + }, + "versions_interleaved": { + "content": [ + [ + "versions.yml:md5,48ffc994212fb1fc9f83a74fa69c9f02" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-01T11:56:24.615634793" + }, + "test_fastp_single_end_json": { + "content": [ + [ + [ + { + "id": "test", + "single_end": true + }, + "test.fastp.json:md5,c852d7a6dba5819e4ac8d9673bedcacc" + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-01-17T18:06:00.223817" + }, + "versions_paired_end": { + "content": [ + [ + "versions.yml:md5,48ffc994212fb1fc9f83a74fa69c9f02" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-01T11:55:42.333545689" + }, + "test_fastp_paired_end_match": { + "content": [ + [ + [ + "test_1.fastp.fastq.gz", + "test_2.fastp.fastq.gz" + ], + "test.fastp.html", + "test.fastp.json", + "test.fastp.log", + "{id=test, single_end=false}" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-01T12:03:06.431833729" + }, + "test_fastp_interleaved-_match": { + "content": [ + [ + "test.fastp.fastq.gz", + "test.fastp.html", + "test.fastp.json", + "test.fastp.log", + "{id=test, single_end=true}" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-01T12:03:37.827323085" + }, + "test_fastp_paired_end_merged_match": { + "content": [ + [ + [ + "test_1.fastp.fastq.gz", + "test_2.fastp.fastq.gz" + ], + "test.fastp.html", + "test.fastp.json", + "test.fastp.log", + "test.merged.fastq.gz", + "{id=test, single_end=false}" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-01T12:08:44.496251446" + }, + "versions_single_end_stub": { + "content": [ + [ + "versions.yml:md5,48ffc994212fb1fc9f83a74fa69c9f02" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-01T11:55:27.354051299" + }, + "versions_interleaved-stub": { + "content": [ + [ + "versions.yml:md5,48ffc994212fb1fc9f83a74fa69c9f02" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-01T11:56:46.535528418" + }, + "versions_single_end_trim_fail": { + "content": [ + [ + "versions.yml:md5,48ffc994212fb1fc9f83a74fa69c9f02" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-01T11:59:03.724591407" + }, + "test_fastp_paired_end-for_stub_match": { + "content": [ + [ + [ + "test_1.fastp.fastq.gz", + "test_2.fastp.fastq.gz" + ], + "test.fastp.html", + "test.fastp.json", + "test.fastp.log", + "{id=test, single_end=false}" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-01-17T18:07:15.398827" + }, + "versions_paired_end-stub": { + "content": [ + [ + "versions.yml:md5,48ffc994212fb1fc9f83a74fa69c9f02" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-01T11:56:06.50017282" + }, + "versions_single_end": { + "content": [ + [ + "versions.yml:md5,48ffc994212fb1fc9f83a74fa69c9f02" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-01T11:55:07.67921647" + }, + "versions_paired_end_merged_stub": { + "content": [ + [ + "versions.yml:md5,48ffc994212fb1fc9f83a74fa69c9f02" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-01T11:59:47.350653154" + }, + "test_fastp_interleaved-for_stub_match": { + "content": [ + [ + "test.fastp.fastq.gz", + "test.fastp.html", + "test.fastp.json", + "test.fastp.log", + "{id=test, single_end=true}" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-01-17T18:08:06.127974" + }, + "versions_paired_end_trim_fail": { + "content": [ + [ + "versions.yml:md5,48ffc994212fb1fc9f83a74fa69c9f02" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-01T11:59:18.140484878" + }, + "test_fastp_single_end-for_stub_match": { + "content": [ + [ + "test.fastp.fastq.gz", + "test.fastp.html", + "test.fastp.json", + "test.fastp.log", + "{id=test, single_end=true}" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-01-17T18:06:00.244202" + }, + "test_fastp_single_end-_match": { + "content": [ + [ + "test.fastp.fastq.gz", + "test.fastp.html", + "test.fastp.json", + "test.fastp.log", + "{id=test, single_end=true}" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-01T11:57:30.791982648" + }, + "versions_paired_end_merged_adapterlist": { + "content": [ + [ + "versions.yml:md5,48ffc994212fb1fc9f83a74fa69c9f02" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-01T12:05:37.845370554" + }, + "versions_paired_end_merged": { + "content": [ + [ + "versions.yml:md5,48ffc994212fb1fc9f83a74fa69c9f02" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-01T11:59:32.860543858" + }, + "test_fastp_single_end_trim_fail_json": { + "content": [ + [ + [ + { + "id": "test", + "single_end": true + }, + "test.fastp.json:md5,9a7ee180f000e8d00c7fb67f06293eb5" + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-01-17T18:08:41.942317" + } +} \ No newline at end of file diff --git a/modules/nf-core/fastp/tests/nextflow.config b/modules/nf-core/fastp/tests/nextflow.config new file mode 100644 index 000000000..0f7849ad9 --- /dev/null +++ b/modules/nf-core/fastp/tests/nextflow.config @@ -0,0 +1,6 @@ +process { + + withName: FASTP { + ext.args = "--interleaved_in" + } +} diff --git a/modules/nf-core/fastp/tests/tags.yml b/modules/nf-core/fastp/tests/tags.yml new file mode 100644 index 000000000..c1afcce75 --- /dev/null +++ b/modules/nf-core/fastp/tests/tags.yml @@ -0,0 +1,2 @@ +fastp: + - modules/nf-core/fastp/** diff --git a/modules/nf-core/fastqc/environment.yml b/modules/nf-core/fastqc/environment.yml new file mode 100644 index 000000000..1787b38a9 --- /dev/null +++ b/modules/nf-core/fastqc/environment.yml @@ -0,0 +1,7 @@ +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 index c9f64702b..9e19a74c5 100644 --- a/modules/nf-core/fastqc/main.nf +++ b/modules/nf-core/fastqc/main.nf @@ -2,7 +2,7 @@ process FASTQC { tag "$meta.id" label 'process_medium' - conda "bioconda::fastqc=0.12.1" + 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' }" diff --git a/modules/nf-core/fastqc/meta.yml b/modules/nf-core/fastqc/meta.yml index 4da5bb5a0..ee5507e06 100644 --- a/modules/nf-core/fastqc/meta.yml +++ b/modules/nf-core/fastqc/meta.yml @@ -50,3 +50,8 @@ authors: - "@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 index 872fa1a76..70edae4d9 100644 --- a/modules/nf-core/fastqc/tests/main.nf.test +++ b/modules/nf-core/fastqc/tests/main.nf.test @@ -1,10 +1,12 @@ nextflow_process { name "Test Process FASTQC" - script "modules/nf-core/fastqc/main.nf" + script "../main.nf" process "FASTQC" - tag "fastqc" + + tag "modules" tag "modules_nfcore" + tag "fastqc" test("sarscov2 single-end [fastq]") { @@ -31,7 +33,7 @@ nextflow_process { { assert process.out.zip[0][1] ==~ ".*/test_fastqc.zip" }, { assert path(process.out.html[0][1]).text.contains("
    File typeConventional base calls
    File typeConventional base calls
    File typeConventional base calls
    File typeConventional base calls
    File typeConventional base calls
    File typeConventional base calls
    File typeConventional base calls
    File typeConventional base calls
    File typeConventional base calls
    File typeConventional base calls
    - - - - - - - - """ - ) - ] - for process, tmp_versions in sorted(versions.items()): - html.append("") - for i, (tool, version) in enumerate(sorted(tmp_versions.items())): - html.append( - dedent( - f"""\\ - - - - - - """ - ) - ) - html.append("") - html.append("
    Process Name Software Version
    {process if (i == 0) else ''}{tool}{version}
    ") - return "\\n".join(html) - - -def main(): - """Load all version files and generate merged output.""" - versions_this_module = {} - versions_this_module["${task.process}"] = { - "python": platform.python_version(), - "yaml": yaml.__version__, - } - - with open("$versions") as f: - versions_by_process = yaml.load(f, Loader=yaml.BaseLoader) | versions_this_module - - # aggregate versions by the module name (derived from fully-qualified process name) - versions_by_module = {} - for process, process_versions in versions_by_process.items(): - module = process.split(":")[-1] - try: - if versions_by_module[module] != process_versions: - raise AssertionError( - "We assume that software versions are the same between all modules. " - "If you see this error-message it means you discovered an edge-case " - "and should open an issue in nf-core/tools. " - ) - except KeyError: - versions_by_module[module] = process_versions - - versions_by_module["Workflow"] = { - "Nextflow": "$workflow.nextflow.version", - "$workflow.manifest.name": "$workflow.manifest.version", - } - - versions_mqc = { - "id": "software_versions", - "section_name": "${workflow.manifest.name} Software Versions", - "section_href": "https://github.com/${workflow.manifest.name}", - "plot_type": "html", - "description": "are collected at run time from the software output.", - "data": _make_versions_html(versions_by_module), - } - - with open("software_versions.yml", "w") as f: - yaml.dump(versions_by_module, f, default_flow_style=False) - with open("software_versions_mqc.yml", "w") as f: - yaml.dump(versions_mqc, f, default_flow_style=False) - - with open("versions.yml", "w") as f: - yaml.dump(versions_this_module, f, default_flow_style=False) - - -if __name__ == "__main__": - main() diff --git a/modules/nf-core/custom/dumpsoftwareversions/tests/main.nf.test b/modules/nf-core/custom/dumpsoftwareversions/tests/main.nf.test deleted file mode 100644 index b1e1630bb..000000000 --- a/modules/nf-core/custom/dumpsoftwareversions/tests/main.nf.test +++ /dev/null @@ -1,43 +0,0 @@ -nextflow_process { - - name "Test Process CUSTOM_DUMPSOFTWAREVERSIONS" - script "../main.nf" - process "CUSTOM_DUMPSOFTWAREVERSIONS" - tag "modules" - tag "modules_nfcore" - tag "custom" - tag "dumpsoftwareversions" - tag "custom/dumpsoftwareversions" - - test("Should run without failures") { - when { - process { - """ - def tool1_version = ''' - TOOL1: - tool1: 0.11.9 - '''.stripIndent() - - def tool2_version = ''' - TOOL2: - tool2: 1.9 - '''.stripIndent() - - input[0] = Channel.of(tool1_version, tool2_version).collectFile() - """ - } - } - - then { - assertAll( - { assert process.success }, - { assert snapshot( - process.out.versions, - file(process.out.mqc_yml[0]).readLines()[0..10], - file(process.out.yml[0]).readLines()[0..7] - ).match() - } - ) - } - } -} diff --git a/modules/nf-core/custom/dumpsoftwareversions/tests/main.nf.test.snap b/modules/nf-core/custom/dumpsoftwareversions/tests/main.nf.test.snap deleted file mode 100644 index 5f59a936d..000000000 --- a/modules/nf-core/custom/dumpsoftwareversions/tests/main.nf.test.snap +++ /dev/null @@ -1,33 +0,0 @@ -{ - "Should run without failures": { - "content": [ - [ - "versions.yml:md5,76d454d92244589d32455833f7c1ba6d" - ], - [ - "data: \"\\n\\n \\n \\n \\n \\n \\n \\n \\n\\", - " \\n\\n\\n \\n \\n\\", - " \\ \\n\\n\\n\\n \\n \\", - " \\ \\n \\n\\n\\n\\n\\", - " \\n\\n \\n \\n\\", - " \\ \\n\\n\\n\\n\\n\\n \\n\\", - " \\ \\n \\n\\n\\n\\n\\", - " \\n\\n \\n \\n\\" - ], - [ - "CUSTOM_DUMPSOFTWAREVERSIONS:", - " python: 3.11.7", - " yaml: 5.4.1", - "TOOL1:", - " tool1: 0.11.9", - "TOOL2:", - " tool2: '1.9'", - "Workflow:" - ] - ], - "timestamp": "2024-01-09T23:01:18.710682" - } -} \ No newline at end of file diff --git a/modules/nf-core/custom/dumpsoftwareversions/tests/tags.yml b/modules/nf-core/custom/dumpsoftwareversions/tests/tags.yml deleted file mode 100644 index 405aa24ae..000000000 --- a/modules/nf-core/custom/dumpsoftwareversions/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -custom/dumpsoftwareversions: - - modules/nf-core/custom/dumpsoftwareversions/** diff --git a/modules/nf-core/fastqc/tests/main.nf.test b/modules/nf-core/fastqc/tests/main.nf.test index 1f21c6646..70edae4d9 100644 --- a/modules/nf-core/fastqc/tests/main.nf.test +++ b/modules/nf-core/fastqc/tests/main.nf.test @@ -33,7 +33,7 @@ nextflow_process { { assert process.out.zip[0][1] ==~ ".*/test_fastqc.zip" }, { assert path(process.out.html[0][1]).text.contains("") }, - { assert snapshot(process.out.versions).match("versions") } + { assert snapshot(process.out.versions).match("fastqc_versions_single") } ) } } @@ -63,7 +63,7 @@ nextflow_process { { assert path(process.out.html[0][1][0]).text.contains("") }, { assert path(process.out.html[0][1][1]).text.contains("") }, - { assert snapshot(process.out.versions).match("versions") } + { assert snapshot(process.out.versions).match("fastqc_versions_paired") } ) } } @@ -89,7 +89,7 @@ nextflow_process { { assert process.out.zip[0][1] ==~ ".*/test_fastqc.zip" }, { assert path(process.out.html[0][1]).text.contains("") }, - { assert snapshot(process.out.versions).match("versions") } + { assert snapshot(process.out.versions).match("fastqc_versions_interleaved") } ) } } @@ -115,7 +115,7 @@ nextflow_process { { assert process.out.zip[0][1] ==~ ".*/test_fastqc.zip" }, { assert path(process.out.html[0][1]).text.contains("") }, - { assert snapshot(process.out.versions).match("versions") } + { assert snapshot(process.out.versions).match("fastqc_versions_bam") } ) } } @@ -153,7 +153,7 @@ nextflow_process { { assert path(process.out.html[0][1][2]).text.contains("") }, { assert path(process.out.html[0][1][3]).text.contains("") }, - { assert snapshot(process.out.versions).match("versions") } + { assert snapshot(process.out.versions).match("fastqc_versions_multiple") } ) } } @@ -179,7 +179,7 @@ nextflow_process { { assert process.out.zip[0][1] ==~ ".*/mysample_fastqc.zip" }, { assert path(process.out.html[0][1]).text.contains("") }, - { assert snapshot(process.out.versions).match("versions") } + { assert snapshot(process.out.versions).match("fastqc_versions_custom_prefix") } ) } } @@ -204,7 +204,7 @@ nextflow_process { { 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() } + 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 index 5d624bb82..86f7c3115 100644 --- a/modules/nf-core/fastqc/tests/main.nf.test.snap +++ b/modules/nf-core/fastqc/tests/main.nf.test.snap @@ -1,5 +1,17 @@ { - "sarscov2 single-end [fastq] - stub": { + "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", @@ -7,14 +19,70 @@ "versions.yml:md5,e1cc25ca8af856014824abd842e93978" ] ], - "timestamp": "2024-01-17T18:40:57.254299" + "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" }, - "versions": { + "fastqc_versions_custom_prefix": { "content": [ [ "versions.yml:md5,e1cc25ca8af856014824abd842e93978" ] ], - "timestamp": "2024-01-17T18:36:50.033627" + "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/multiqc/environment.yml b/modules/nf-core/multiqc/environment.yml index 7625b7520..2212096af 100644 --- a/modules/nf-core/multiqc/environment.yml +++ b/modules/nf-core/multiqc/environment.yml @@ -4,4 +4,4 @@ channels: - bioconda - defaults dependencies: - - bioconda::multiqc=1.19 + - bioconda::multiqc=1.20 diff --git a/modules/nf-core/multiqc/main.nf b/modules/nf-core/multiqc/main.nf index 1b9f7c431..354f4430f 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.19--pyhdfd78af_0' : - 'biocontainers/multiqc:1.19--pyhdfd78af_0' }" + 'https://depot.galaxyproject.org/singularity/multiqc:1.20--pyhdfd78af_0' : + 'biocontainers/multiqc:1.20--pyhdfd78af_0' }" input: path multiqc_files, stageAs: "?/*" diff --git a/modules/nf-core/multiqc/tests/main.nf.test b/modules/nf-core/multiqc/tests/main.nf.test index d0438eda6..f1c4242ef 100644 --- a/modules/nf-core/multiqc/tests/main.nf.test +++ b/modules/nf-core/multiqc/tests/main.nf.test @@ -3,6 +3,7 @@ nextflow_process { name "Test Process MULTIQC" script "../main.nf" process "MULTIQC" + tag "modules" tag "modules_nfcore" tag "multiqc" @@ -12,7 +13,7 @@ nextflow_process { when { process { """ - input[0] = Channel.of([file(params.test_data['sarscov2']['illumina']['test_1_fastq_gz_fastqc_zip'], checkIfExists: true)]) + input[0] = Channel.of(file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastqc/test_fastqc.zip', checkIfExists: true)) input[1] = [] input[2] = [] input[3] = [] @@ -25,7 +26,7 @@ nextflow_process { { assert process.success }, { assert process.out.report[0] ==~ ".*/multiqc_report.html" }, { assert process.out.data[0] ==~ ".*/multiqc_data" }, - { assert snapshot(process.out.versions).match("versions") } + { assert snapshot(process.out.versions).match("multiqc_versions_single") } ) } @@ -36,7 +37,7 @@ nextflow_process { when { process { """ - input[0] = Channel.of([file(params.test_data['sarscov2']['illumina']['test_1_fastq_gz_fastqc_zip'], checkIfExists: true)]) + input[0] = Channel.of(file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastqc/test_fastqc.zip', checkIfExists: true)) 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] = [] @@ -49,7 +50,7 @@ nextflow_process { { assert process.success }, { assert process.out.report[0] ==~ ".*/multiqc_report.html" }, { assert process.out.data[0] ==~ ".*/multiqc_data" }, - { assert snapshot(process.out.versions).match("versions") } + { assert snapshot(process.out.versions).match("multiqc_versions_config") } ) } } @@ -61,7 +62,7 @@ nextflow_process { when { process { """ - input[0] = Channel.of([file(params.test_data['sarscov2']['illumina']['test_1_fastq_gz_fastqc_zip'], checkIfExists: true)]) + input[0] = Channel.of(file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastqc/test_fastqc.zip', checkIfExists: true)) input[1] = [] input[2] = [] input[3] = [] @@ -75,7 +76,7 @@ nextflow_process { { assert snapshot(process.out.report.collect { file(it).getName() } + process.out.data.collect { file(it).getName() } + process.out.plots.collect { file(it).getName() } + - process.out.versions ).match() } + process.out.versions ).match("multiqc_stub") } ) } diff --git a/modules/nf-core/multiqc/tests/main.nf.test.snap b/modules/nf-core/multiqc/tests/main.nf.test.snap index d37e73040..c204b4881 100644 --- a/modules/nf-core/multiqc/tests/main.nf.test.snap +++ b/modules/nf-core/multiqc/tests/main.nf.test.snap @@ -1,21 +1,41 @@ { - "versions": { + "multiqc_versions_single": { "content": [ [ - "versions.yml:md5,14e9a2661241abd828f4f06a7b5c222d" + "versions.yml:md5,d320d4c37e349c5588e07e7a31cd4186" ] ], - "timestamp": "2024-01-09T23:02:49.911994" + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-14T09:28:51.744211298" }, - "sarscov2 single-end [fastqc] - stub": { + "multiqc_stub": { "content": [ [ "multiqc_report.html", "multiqc_data", "multiqc_plots", - "versions.yml:md5,14e9a2661241abd828f4f06a7b5c222d" + "versions.yml:md5,d320d4c37e349c5588e07e7a31cd4186" ] ], - "timestamp": "2024-01-09T23:03:14.524346" + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-14T09:29:28.847433492" + }, + "multiqc_versions_config": { + "content": [ + [ + "versions.yml:md5,d320d4c37e349c5588e07e7a31cd4186" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-14T09:29:13.223621555" } } \ No newline at end of file diff --git a/nextflow.config b/nextflow.config index de359a391..8b58d85e4 100644 --- a/nextflow.config +++ b/nextflow.config @@ -16,9 +16,7 @@ params { genome = null igenomes_base = 's3://ngi-igenomes/igenomes/' igenomes_ignore = false - - - // MultiQC options + fasta = null// MultiQC options multiqc_config = null multiqc_title = null multiqc_logo = null @@ -43,7 +41,6 @@ params { 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 diff --git a/nextflow_schema.json b/nextflow_schema.json index 7ef6d0308..18f6d03b9 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -16,6 +16,7 @@ "type": "string", "format": "file-path", "exists": true, + "schema": "assets/schema_input.json", "mimetype": "text/csv", "pattern": "^\\S+\\.csv$", "description": "Path to comma-separated file containing information about the samples in the experiment.", diff --git a/pyproject.toml b/pyproject.toml index 7d08e1c8e..56110621e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -3,11 +3,13 @@ [tool.ruff] line-length = 120 target-version = "py38" -select = ["I", "E1", "E4", "E7", "E9", "F", "UP", "N"] cache-dir = "~/.cache/ruff" -[tool.ruff.isort] +[tool.ruff.lint] +select = ["I", "E1", "E4", "E7", "E9", "F", "UP", "N"] + +[tool.ruff.lint.isort] known-first-party = ["nf_core"] -[tool.ruff.per-file-ignores] +[tool.ruff.lint.per-file-ignores] "__init__.py" = ["E402", "F401"] diff --git a/subworkflows/local/input_check.nf b/subworkflows/local/input_check.nf deleted file mode 100644 index 0aecf87fb..000000000 --- a/subworkflows/local/input_check.nf +++ /dev/null @@ -1,44 +0,0 @@ -// -// Check input samplesheet and get read channels -// - -include { SAMPLESHEET_CHECK } from '../../modules/local/samplesheet_check' - -workflow INPUT_CHECK { - take: - samplesheet // file: /path/to/samplesheet.csv - - main: - SAMPLESHEET_CHECK ( samplesheet ) - .csv - .splitCsv ( header:true, sep:',' ) - .map { create_fastq_channel(it) } - .set { reads } - - emit: - reads // channel: [ val(meta), [ reads ] ] - versions = SAMPLESHEET_CHECK.out.versions // channel: [ versions.yml ] -} - -// Function to get list of [ meta, [ fastq_1, fastq_2 ] ] -def create_fastq_channel(LinkedHashMap row) { - // create meta map - def meta = [:] - meta.id = row.sample - meta.single_end = row.single_end.toBoolean() - - // add path(s) of the fastq file(s) to the meta map - def fastq_meta = [] - if (!file(row.fastq_1).exists()) { - exit 1, "ERROR: Please check input samplesheet -> Read 1 FastQ file does not exist!\n${row.fastq_1}" - } - if (meta.single_end) { - fastq_meta = [ meta, [ file(row.fastq_1) ] ] - } else { - if (!file(row.fastq_2).exists()) { - exit 1, "ERROR: Please check input samplesheet -> Read 2 FastQ file does not exist!\n${row.fastq_2}" - } - fastq_meta = [ meta, [ file(row.fastq_1), file(row.fastq_2) ] ] - } - return fastq_meta -} diff --git a/subworkflows/local/utils_nfcore_rnaseq_pipeline/main.nf b/subworkflows/local/utils_nfcore_rnaseq_pipeline/main.nf new file mode 100644 index 000000000..dc90ad90c --- /dev/null +++ b/subworkflows/local/utils_nfcore_rnaseq_pipeline/main.nf @@ -0,0 +1,247 @@ +// +// Subworkflow with functionality specific to the nf-core/pipeline pipeline +// + +/* +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + IMPORT FUNCTIONS / MODULES / SUBWORKFLOWS +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +*/ + +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 { 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' + +/* +======================================================================================== + 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 + outdir // string: The output directory where the results will be saved + input // string: Path to input samplesheet + + main: + + ch_versions = Channel.empty() + + // + // Print version and exit if required and dump pipeline parameters to JSON file + // + UTILS_NEXTFLOW_PIPELINE ( + version, + true, + outdir, + 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, + validate_params, + "nextflow_schema.json" + ) + + // + // Check config provided to the pipeline + // + UTILS_NFCORE_PIPELINE ( + nextflow_cli_args + ) + // + // Custom validation for pipeline parameters + // + validateInputParameters() + + // + // Create channel from input file provided through params.input + // + Channel + .fromSamplesheet("input") + .map { + meta, fastq_1, fastq_2 -> + if (!fastq_2) { + return [ meta.id, meta + [ single_end:true ], [ fastq_1 ] ] + } else { + return [ meta.id, meta + [ single_end:false ], [ fastq_1, fastq_2 ] ] + } + } + .groupTuple() + .map { + validateInputSamplesheet(it) + } + .map { + meta, fastqs -> + return [ meta, fastqs.flatten() ] + } + .set { ch_samplesheet } + + emit: + samplesheet = ch_samplesheet + versions = ch_versions +} + +/* +======================================================================================== + SUBWORKFLOW FOR PIPELINE COMPLETION +======================================================================================== +*/ + +workflow PIPELINE_COMPLETION { + + take: + 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") + + // + // Completion email and summary + // + workflow.onComplete { + if (email || email_on_fail) { + 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) + } + } +} + +/* +======================================================================================== + FUNCTIONS +======================================================================================== +*/ +// +// Check and validate pipeline parameters +// +def validateInputParameters() { + genomeExistsError() +}// +// Validate channels from input samplesheet +// +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 + if (!endedness_ok) { + error("Please check input samplesheet -> Multiple runs of a sample must be of the same datatype i.e. single-end or paired-end: ${metas[0].id}") + } + + return [ metas[0], fastqs ] +} +// +// Get attribute from genome config file e.g. fasta +// +def getGenomeAttribute(attribute) { + if (params.genomes && params.genome && params.genomes.containsKey(params.genome)) { + if (params.genomes[ params.genome ].containsKey(attribute)) { + return params.genomes[ params.genome ][ attribute ] + } + } + return null +} + +// +// Exit pipeline if incorrect --genome key provided +// +def genomeExistsError() { + if (params.genomes && params.genome && !params.genomes.containsKey(params.genome)) { + def error_string = "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" + + " Genome '${params.genome}' not found in any config files provided to the pipeline.\n" + + " Currently, the available genome keys are:\n" + + " ${params.genomes.keySet().join(", ")}\n" + + "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" + error(error_string) + } +}// +// Generate methods description for MultiQC +// +def toolCitationText() { + // TODO nf-core: Optionally add in-text citation tools to this list. + // Can use ternary operators to dynamically construct based conditions, e.g. params["run_xyz"] ? "Tool (Foo et al. 2023)" : "", + // Uncomment function in methodsDescriptionText to render in MultiQC report + def citation_text = [ + "Tools used in the workflow included:", + "FastQC (Andrews 2010),", + "MultiQC (Ewels et al. 2016)", + "." + ].join(' ').trim() + + return citation_text +} + +def toolBibliographyText() { + // TODO nf-core: Optionally add bibliographic entries to this list. + // 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() + + return reference_text +} + +def methodsDescriptionText(mqc_methods_yaml) { + // Convert to a named map so can be used as with familar NXF ${workflow} variable syntax in the MultiQC YML file + def meta = [:] + meta.workflow = workflow.toMap() + meta["manifest_map"] = workflow.manifest.toMap() + + // Pipeline DOI + meta["doi_text"] = meta.manifest_map.doi ? "(doi: ${meta.manifest_map.doi})" : "" + meta["nodoi_text"] = meta.manifest_map.doi ? "": "
  • If available, make sure to update the text to include the Zenodo DOI of version of the pipeline used.
  • " + + // Tool references + meta["tool_citations"] = "" + meta["tool_bibliography"] = "" + + // TODO nf-core: Only uncomment below if logic in toolCitationText/toolBibliographyText has been filled! + // meta["tool_citations"] = toolCitationText().replaceAll(", \\.", ".").replaceAll("\\. \\.", ".").replaceAll(", \\.", ".") + // meta["tool_bibliography"] = toolBibliographyText() + + + def methods_text = mqc_methods_yaml.text + + def engine = new groovy.text.SimpleTemplateEngine() + def description_html = engine.createTemplate(methods_text).make(meta) + + return description_html.toString() +} diff --git a/subworkflows/nf-core/utils_nextflow_pipeline/main.nf b/subworkflows/nf-core/utils_nextflow_pipeline/main.nf new file mode 100644 index 000000000..ac31f28f6 --- /dev/null +++ b/subworkflows/nf-core/utils_nextflow_pipeline/main.nf @@ -0,0 +1,126 @@ +// +// 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 + outdir // path: base directory used to publish pipeline results + check_conda_channels // boolean: check conda channels + + main: + + // + // Print workflow version and exit on --version + // + if (print_version) { + log.info "${workflow.manifest.name} ${getWorkflowVersion()}" + System.exit(0) + } + + // + // Dump pipeline parameters to a JSON file + // + if (dump_parameters && outdir) { + dumpParametersToJSON(outdir) + } + + // + // When running with Conda, warn if channels have not been set-up appropriately + // + if (check_conda_channels) { + checkCondaChannels() + } + + emit: + dummy_emit = true +} + +/* +======================================================================================== + FUNCTIONS +======================================================================================== +*/ + +// +// Generate version string +// +def getWorkflowVersion() { + String version_string = "" + if (workflow.manifest.version) { + def prefix_v = workflow.manifest.version[0] != 'v' ? 'v' : '' + version_string += "${prefix_v}${workflow.manifest.version}" + } + + if (workflow.commitId) { + def git_shortsha = workflow.commitId.substring(0, 7) + version_string += "-g${git_shortsha}" + } + + return version_string +} + +// +// 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) + + FilesEx.copyTo(temp_pf.toPath(), "${outdir}/pipeline_info/params_${timestamp}.json") + temp_pf.delete() +} + +// +// When running with -profile conda, warn if channels have not been set-up appropriately +// +def checkCondaChannels() { + Yaml parser = new 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 + } + + // 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 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])) + } + + 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" + + "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" + } +} diff --git a/subworkflows/nf-core/utils_nextflow_pipeline/meta.yml b/subworkflows/nf-core/utils_nextflow_pipeline/meta.yml new file mode 100644 index 000000000..e5c3a0a82 --- /dev/null +++ b/subworkflows/nf-core/utils_nextflow_pipeline/meta.yml @@ -0,0 +1,38 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/subworkflows/yaml-schema.json +name: "UTILS_NEXTFLOW_PIPELINE" +description: Subworkflow with functionality that may be useful for any Nextflow pipeline +keywords: + - utility + - pipeline + - initialise + - version +components: [] +input: + - print_version: + type: boolean + description: | + Print the version of the pipeline and exit + - dump_parameters: + type: boolean + description: | + Dump the parameters of the pipeline to a JSON file + - output_directory: + type: directory + description: Path to output dir to write JSON file to. + pattern: "results/" + - check_conda_channel: + type: boolean + description: | + Check if the conda channel priority is correct. +output: + - dummy_emit: + type: boolean + description: | + Dummy emit to make nf-core subworkflows lint happy +authors: + - "@adamrtalbot" + - "@drpatelh" +maintainers: + - "@adamrtalbot" + - "@drpatelh" + - "@maxulysse" diff --git a/subworkflows/nf-core/utils_nextflow_pipeline/tests/main.function.nf.test b/subworkflows/nf-core/utils_nextflow_pipeline/tests/main.function.nf.test new file mode 100644 index 000000000..8ed4310ca --- /dev/null +++ b/subworkflows/nf-core/utils_nextflow_pipeline/tests/main.function.nf.test @@ -0,0 +1,54 @@ + +nextflow_function { + + name "Test Functions" + script "subworkflows/nf-core/utils_nextflow_pipeline/main.nf" + config "subworkflows/nf-core/utils_nextflow_pipeline/tests/nextflow.config" + tag 'subworkflows' + tag 'utils_nextflow_pipeline' + tag 'subworkflows/utils_nextflow_pipeline' + + test("Test Function getWorkflowVersion") { + + function "getWorkflowVersion" + + then { + assertAll( + { assert function.success }, + { assert snapshot(function.result).match() } + ) + } + } + + test("Test Function dumpParametersToJSON") { + + function "dumpParametersToJSON" + + when { + function { + """ + // define inputs of the function here. Example: + input[0] = "$outputDir" + """.stripIndent() + } + } + + then { + assertAll( + { assert function.success } + ) + } + } + + test("Test Function checkCondaChannels") { + + function "checkCondaChannels" + + then { + assertAll( + { assert function.success }, + { assert snapshot(function.result).match() } + ) + } + } +} \ No newline at end of file diff --git a/subworkflows/nf-core/utils_nextflow_pipeline/tests/main.function.nf.test.snap b/subworkflows/nf-core/utils_nextflow_pipeline/tests/main.function.nf.test.snap new file mode 100644 index 000000000..db2030f8b --- /dev/null +++ b/subworkflows/nf-core/utils_nextflow_pipeline/tests/main.function.nf.test.snap @@ -0,0 +1,12 @@ +{ + "Test Function getWorkflowVersion": { + "content": [ + "v9.9.9" + ], + "timestamp": "2024-01-19T11:32:36.031083" + }, + "Test Function checkCondaChannels": { + "content": null, + "timestamp": "2024-01-19T11:32:50.456" + } +} \ No newline at end of file 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 new file mode 100644 index 000000000..f7c54bc68 --- /dev/null +++ b/subworkflows/nf-core/utils_nextflow_pipeline/tests/main.workflow.nf.test @@ -0,0 +1,123 @@ +nextflow_workflow { + + name "Test Workflow UTILS_NEXTFLOW_PIPELINE" + script "../main.nf" + config "subworkflows/nf-core/utils_nextflow_pipeline/tests/nextflow.config" + workflow "UTILS_NEXTFLOW_PIPELINE" + tag 'subworkflows' + tag 'utils_nextflow_pipeline' + tag 'subworkflows/utils_nextflow_pipeline' + + test("Should run no inputs") { + + when { + params { + outdir = "tests/results" + } + workflow { + """ + print_version = false + dump_parameters = false + outdir = null + check_conda_channels = false + + input[0] = print_version + input[1] = dump_parameters + input[2] = outdir + input[3] = check_conda_channels + """ + } + } + + then { + assertAll( + { assert workflow.success } + ) + } + } + + test("Should print version") { + + when { + params { + outdir = "tests/results" + } + workflow { + """ + print_version = true + dump_parameters = false + outdir = null + check_conda_channels = false + + input[0] = print_version + input[1] = dump_parameters + input[2] = outdir + input[3] = check_conda_channels + """ + } + } + + then { + assertAll( + { assert workflow.success }, + { assert workflow.stdout.contains("nextflow_workflow v9.9.9") } + ) + } + } + + test("Should dump params") { + + when { + params { + outdir = "$outputDir" + } + workflow { + """ + print_version = false + dump_parameters = true + outdir = params.outdir + check_conda_channels = false + + input[0] = false + input[1] = true + input[2] = params.outdir + input[3] = false + """ + } + } + + then { + assertAll( + { assert workflow.success } + ) + } + } + + test("Should not create params JSON if no output directory") { + + when { + params { + outdir = "$outputDir" + } + workflow { + """ + print_version = false + dump_parameters = true + outdir = params.outdir + check_conda_channels = false + + input[0] = false + input[1] = true + input[2] = null + input[3] = false + """ + } + } + + then { + assertAll( + { assert workflow.success } + ) + } + } +} diff --git a/subworkflows/nf-core/utils_nextflow_pipeline/tests/nextflow.config b/subworkflows/nf-core/utils_nextflow_pipeline/tests/nextflow.config new file mode 100644 index 000000000..53574ffec --- /dev/null +++ b/subworkflows/nf-core/utils_nextflow_pipeline/tests/nextflow.config @@ -0,0 +1,9 @@ +manifest { + name = 'nextflow_workflow' + author = """nf-core""" + homePage = 'https://127.0.0.1' + description = """Dummy pipeline""" + nextflowVersion = '!>=23.04.0' + version = '9.9.9' + doi = 'https://doi.org/10.5281/zenodo.5070524' +} \ No newline at end of file diff --git a/subworkflows/nf-core/utils_nextflow_pipeline/tests/tags.yml b/subworkflows/nf-core/utils_nextflow_pipeline/tests/tags.yml new file mode 100644 index 000000000..f84761125 --- /dev/null +++ b/subworkflows/nf-core/utils_nextflow_pipeline/tests/tags.yml @@ -0,0 +1,2 @@ +subworkflows/utils_nextflow_pipeline: + - subworkflows/nf-core/utils_nextflow_pipeline/** diff --git a/subworkflows/nf-core/utils_nfcore_pipeline/main.nf b/subworkflows/nf-core/utils_nfcore_pipeline/main.nf new file mode 100644 index 000000000..a8b55d6fe --- /dev/null +++ b/subworkflows/nf-core/utils_nfcore_pipeline/main.nf @@ -0,0 +1,440 @@ +// +// 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 + + main: + valid_config = checkConfigProvided() + checkProfileProvided(nextflow_cli_args) + + emit: + valid_config +} + +/* +======================================================================================== + FUNCTIONS +======================================================================================== +*/ + +// +// Warn if a -profile or Nextflow config has not been provided to run the pipeline +// +def checkConfigProvided() { + valid_config = true + 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 " + valid_config = false + } + return valid_config +} + +// +// Exit pipeline if --profile contains spaces +// +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" + } + 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" + } +} + +// +// Citation string for pipeline +// +def workflowCitation() { + return "If you use ${workflow.manifest.name} for your analysis please cite:\n\n" + + "* The pipeline\n" + + " ${workflow.manifest.doi}\n\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 = "" + if (workflow.manifest.version) { + def prefix_v = workflow.manifest.version[0] != 'v' ? 'v' : '' + version_string += "${prefix_v}${workflow.manifest.version}" + } + + if (workflow.commitId) { + def git_shortsha = workflow.commitId.substring(0, 7) + version_string += "-g${git_shortsha}" + } + + return version_string +} + +// +// 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 ] } + return yaml.dumpAsMap(versions).trim() +} + +// +// Get workflow version for pipeline +// +def workflowVersionToYAML() { + return """ + Workflow: + $workflow.manifest.name: ${getWorkflowVersion()} + Nextflow: $workflow.nextflow.version + """.stripIndent().trim() +} + +// +// 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())) +} + +// +// Get workflow summary for MultiQC +// +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_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}" + + return yaml_file_text +} + +// +// nf-core logo +// +def nfCoreLogo(monochrome_logs=true) { + Map colors = logColours(monochrome_logs) + String.format( + """\n + ${dashedLine(monochrome_logs)} + ${colors.green},--.${colors.black}/${colors.green},-.${colors.reset} + ${colors.blue} ___ __ __ __ ___ ${colors.green}/,-._.--~\'${colors.reset} + ${colors.blue} |\\ | |__ __ / ` / \\ |__) |__ ${colors.yellow}} {${colors.reset} + ${colors.blue} | \\| | \\__, \\__/ | \\ |___ ${colors.green}\\`-._,-`-,${colors.reset} + ${colors.green}`._,._,\'${colors.reset} + ${colors.purple} ${workflow.manifest.name} ${getWorkflowVersion()}${colors.reset} + ${dashedLine(monochrome_logs)} + """.stripIndent() + ) +} + +// +// Return dashed line +// +def dashedLine(monochrome_logs=true) { + Map colors = logColours(monochrome_logs) + return "-${colors.dim}----------------------------------------------------${colors.reset}-" +} + +// +// ANSII colours used for terminal logging +// +def logColours(monochrome_logs=true) { + Map colorcodes = [:] + + // Reset / Meta + colorcodes['reset'] = monochrome_logs ? '' : "\033[0m" + colorcodes['bold'] = monochrome_logs ? '' : "\033[1m" + colorcodes['dim'] = monochrome_logs ? '' : "\033[2m" + colorcodes['underlined'] = monochrome_logs ? '' : "\033[4m" + colorcodes['blink'] = monochrome_logs ? '' : "\033[5m" + colorcodes['reverse'] = monochrome_logs ? '' : "\033[7m" + 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" + + // 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" + + // 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" + + // 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" + + // 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" + + return colorcodes +} + +// +// Attach the multiqc report to email +// +def attachMultiqcReport(multiqc_report) { + def mqc_report = null + try { + if (workflow.success) { + 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" + } + mqc_report = mqc_report[0] + } + } + } catch (all) { + if (multiqc_report) { + log.warn "[$workflow.manifest.name] Could not attach MultiQC report to summary email" + } + } + return mqc_report +} + +// +// Construct and send completion email +// +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" + if (!workflow.success) { + subject = "[$workflow.manifest.name] FAILED: $workflow.runName" + } + + def summary = [:] + for (group in summary_params.keySet()) { + 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 + misc_fields['Nextflow Compile Timestamp'] = workflow.nextflow.timestamp + + def email_fields = [:] + email_fields['version'] = getWorkflowVersion() + email_fields['runName'] = workflow.runName + email_fields['success'] = workflow.success + email_fields['dateComplete'] = workflow.complete + email_fields['duration'] = workflow.duration + email_fields['exitStatus'] = workflow.exitStatus + email_fields['errorMessage'] = (workflow.errorMessage ?: 'None') + email_fields['errorReport'] = (workflow.errorReport ?: 'None') + email_fields['commandLine'] = workflow.commandLine + email_fields['projectDir'] = workflow.projectDir + email_fields['summary'] = summary << misc_fields + + // On success try attach the multiqc report + def mqc_report = attachMultiqcReport(multiqc_report) + + // Check if we are only sending emails on failure + def email_address = email + if (!email && email_on_fail && !workflow.success) { + email_address = email_on_fail + } + + // Render the TXT template + def engine = new groovy.text.GStringTemplateEngine() + def tf = new File("${workflow.projectDir}/assets/email_template.txt") + def txt_template = engine.createTemplate(tf).make(email_fields) + def email_txt = txt_template.toString() + + // Render the HTML template + def hf = new File("${workflow.projectDir}/assets/email_template.html") + def html_template = engine.createTemplate(hf).make(email_fields) + def email_html = html_template.toString() + + // 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 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) + if (email_address) { + try { + if (plaintext_email) { throw 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) { + // Catch failures and try with plaintext + 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)-" + } + } + + // 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"); + 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"); + output_tf.delete() +} + +// +// Print pipeline summary on completion +// +def completionSummary(monochrome_logs=true) { + Map colors = logColours(monochrome_logs) + 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}-" + } + } else { + log.info "-${colors.purple}[$workflow.manifest.name]${colors.red} Pipeline completed with errors${colors.reset}-" + } +} + +// +// Construct and send a notification to a web server as JSON e.g. Microsoft Teams and Slack +// +def imNotification(summary_params, hook_url) { + def summary = [:] + for (group in summary_params.keySet()) { + 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 + + def msg_fields = [:] + msg_fields['version'] = getWorkflowVersion() + msg_fields['runName'] = workflow.runName + msg_fields['success'] = workflow.success + msg_fields['dateComplete'] = workflow.complete + msg_fields['duration'] = workflow.duration + msg_fields['exitStatus'] = workflow.exitStatus + msg_fields['errorMessage'] = (workflow.errorMessage ?: 'None') + msg_fields['errorReport'] = (workflow.errorReport ?: 'None') + msg_fields['commandLine'] = workflow.commandLine.replaceFirst(/ +--hook_url +[^ ]+/, "") + msg_fields['projectDir'] = workflow.projectDir + msg_fields['summary'] = summary << misc_fields + + // Render the JSON template + def engine = new groovy.text.GStringTemplateEngine() + // Different JSON depending on the service provider + // Defaults to "Adaptive Cards" (https://adaptivecards.io), except Slack which has its own format + def json_path = hook_url.contains("hooks.slack.com") ? "slackreport.json" : "adaptivecard.json" + def hf = new File("${workflow.projectDir}/assets/${json_path}") + def json_template = engine.createTemplate(hf).make(msg_fields) + def json_message = json_template.toString() + + // POST + 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()); + } +} diff --git a/subworkflows/nf-core/utils_nfcore_pipeline/meta.yml b/subworkflows/nf-core/utils_nfcore_pipeline/meta.yml new file mode 100644 index 000000000..d08d24342 --- /dev/null +++ b/subworkflows/nf-core/utils_nfcore_pipeline/meta.yml @@ -0,0 +1,24 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/subworkflows/yaml-schema.json +name: "UTILS_NFCORE_PIPELINE" +description: Subworkflow with utility functions specific to the nf-core pipeline template +keywords: + - utility + - pipeline + - initialise + - version +components: [] +input: + - nextflow_cli_args: + type: list + description: | + Nextflow CLI positional arguments +output: + - success: + type: boolean + description: | + Dummy output to indicate success +authors: + - "@adamrtalbot" +maintainers: + - "@adamrtalbot" + - "@maxulysse" diff --git a/subworkflows/nf-core/utils_nfcore_pipeline/tests/main.function.nf.test b/subworkflows/nf-core/utils_nfcore_pipeline/tests/main.function.nf.test new file mode 100644 index 000000000..1dc317f8f --- /dev/null +++ b/subworkflows/nf-core/utils_nfcore_pipeline/tests/main.function.nf.test @@ -0,0 +1,134 @@ + +nextflow_function { + + name "Test Functions" + script "../main.nf" + config "subworkflows/nf-core/utils_nfcore_pipeline/tests/nextflow.config" + tag "subworkflows" + tag "subworkflows_nfcore" + tag "utils_nfcore_pipeline" + tag "subworkflows/utils_nfcore_pipeline" + + test("Test Function checkConfigProvided") { + + function "checkConfigProvided" + + then { + assertAll( + { assert function.success }, + { assert snapshot(function.result).match() } + ) + } + } + + test("Test Function checkProfileProvided") { + + function "checkProfileProvided" + + when { + function { + """ + input[0] = [] + """ + } + } + + then { + assertAll( + { assert function.success }, + { assert snapshot(function.result).match() } + ) + } + } + + test("Test Function workflowCitation") { + + function "workflowCitation" + + then { + assertAll( + { assert function.success }, + { assert snapshot(function.result).match() } + ) + } + } + + test("Test Function nfCoreLogo") { + + function "nfCoreLogo" + + when { + function { + """ + input[0] = false + """ + } + } + + then { + assertAll( + { assert function.success }, + { assert snapshot(function.result).match() } + ) + } + } + + test("Test Function dashedLine") { + + function "dashedLine" + + when { + function { + """ + input[0] = false + """ + } + } + + then { + assertAll( + { assert function.success }, + { assert snapshot(function.result).match() } + ) + } + } + + test("Test Function without logColours") { + + function "logColours" + + when { + function { + """ + input[0] = true + """ + } + } + + then { + assertAll( + { assert function.success }, + { assert snapshot(function.result).match() } + ) + } + } + + test("Test Function with logColours") { + function "logColours" + + when { + function { + """ + input[0] = false + """ + } + } + + then { + assertAll( + { assert function.success }, + { assert snapshot(function.result).match() } + ) + } + } +} diff --git a/subworkflows/nf-core/utils_nfcore_pipeline/tests/main.function.nf.test.snap b/subworkflows/nf-core/utils_nfcore_pipeline/tests/main.function.nf.test.snap new file mode 100644 index 000000000..10f948e62 --- /dev/null +++ b/subworkflows/nf-core/utils_nfcore_pipeline/tests/main.function.nf.test.snap @@ -0,0 +1,138 @@ +{ + "Test Function checkProfileProvided": { + "content": null, + "timestamp": "2024-02-09T15:43:55.145717" + }, + "Test Function checkConfigProvided": { + "content": [ + true + ], + "timestamp": "2024-01-19T11:34:13.548431224" + }, + "Test Function nfCoreLogo": { + "content": [ + "\n\n-\u001b[2m----------------------------------------------------\u001b[0m-\n \u001b[0;32m,--.\u001b[0;30m/\u001b[0;32m,-.\u001b[0m\n\u001b[0;34m ___ __ __ __ ___ \u001b[0;32m/,-._.--~'\u001b[0m\n\u001b[0;34m |\\ | |__ __ / ` / \\ |__) |__ \u001b[0;33m} {\u001b[0m\n\u001b[0;34m | \\| | \\__, \\__/ | \\ |___ \u001b[0;32m\\`-._,-`-,\u001b[0m\n \u001b[0;32m`._,._,'\u001b[0m\n\u001b[0;35m nextflow_workflow v9.9.9\u001b[0m\n-\u001b[2m----------------------------------------------------\u001b[0m-\n" + ], + "timestamp": "2024-01-19T11:34:38.840454873" + }, + "Test Function workflowCitation": { + "content": [ + "If you use nextflow_workflow for your analysis please cite:\n\n* The pipeline\n https://doi.org/10.5281/zenodo.5070524\n\n* The nf-core framework\n https://doi.org/10.1038/s41587-020-0439-x\n\n* Software dependencies\n https://github.com/nextflow_workflow/blob/master/CITATIONS.md" + ], + "timestamp": "2024-01-19T11:34:22.24352016" + }, + "Test Function without logColours": { + "content": [ + { + "reset": "", + "bold": "", + "dim": "", + "underlined": "", + "blink": "", + "reverse": "", + "hidden": "", + "black": "", + "red": "", + "green": "", + "yellow": "", + "blue": "", + "purple": "", + "cyan": "", + "white": "", + "bblack": "", + "bred": "", + "bgreen": "", + "byellow": "", + "bblue": "", + "bpurple": "", + "bcyan": "", + "bwhite": "", + "ublack": "", + "ured": "", + "ugreen": "", + "uyellow": "", + "ublue": "", + "upurple": "", + "ucyan": "", + "uwhite": "", + "iblack": "", + "ired": "", + "igreen": "", + "iyellow": "", + "iblue": "", + "ipurple": "", + "icyan": "", + "iwhite": "", + "biblack": "", + "bired": "", + "bigreen": "", + "biyellow": "", + "biblue": "", + "bipurple": "", + "bicyan": "", + "biwhite": "" + } + ], + "timestamp": "2024-01-19T11:35:04.418416984" + }, + "Test Function dashedLine": { + "content": [ + "-\u001b[2m----------------------------------------------------\u001b[0m-" + ], + "timestamp": "2024-01-19T11:34:55.420000755" + }, + "Test Function with logColours": { + "content": [ + { + "reset": "\u001b[0m", + "bold": "\u001b[1m", + "dim": "\u001b[2m", + "underlined": "\u001b[4m", + "blink": "\u001b[5m", + "reverse": "\u001b[7m", + "hidden": "\u001b[8m", + "black": "\u001b[0;30m", + "red": "\u001b[0;31m", + "green": "\u001b[0;32m", + "yellow": "\u001b[0;33m", + "blue": "\u001b[0;34m", + "purple": "\u001b[0;35m", + "cyan": "\u001b[0;36m", + "white": "\u001b[0;37m", + "bblack": "\u001b[1;30m", + "bred": "\u001b[1;31m", + "bgreen": "\u001b[1;32m", + "byellow": "\u001b[1;33m", + "bblue": "\u001b[1;34m", + "bpurple": "\u001b[1;35m", + "bcyan": "\u001b[1;36m", + "bwhite": "\u001b[1;37m", + "ublack": "\u001b[4;30m", + "ured": "\u001b[4;31m", + "ugreen": "\u001b[4;32m", + "uyellow": "\u001b[4;33m", + "ublue": "\u001b[4;34m", + "upurple": "\u001b[4;35m", + "ucyan": "\u001b[4;36m", + "uwhite": "\u001b[4;37m", + "iblack": "\u001b[0;90m", + "ired": "\u001b[0;91m", + "igreen": "\u001b[0;92m", + "iyellow": "\u001b[0;93m", + "iblue": "\u001b[0;94m", + "ipurple": "\u001b[0;95m", + "icyan": "\u001b[0;96m", + "iwhite": "\u001b[0;97m", + "biblack": "\u001b[1;90m", + "bired": "\u001b[1;91m", + "bigreen": "\u001b[1;92m", + "biyellow": "\u001b[1;93m", + "biblue": "\u001b[1;94m", + "bipurple": "\u001b[1;95m", + "bicyan": "\u001b[1;96m", + "biwhite": "\u001b[1;97m" + } + ], + "timestamp": "2024-01-19T11:35:13.436366565" + } +} \ No newline at end of file diff --git a/subworkflows/nf-core/utils_nfcore_pipeline/tests/main.workflow.nf.test b/subworkflows/nf-core/utils_nfcore_pipeline/tests/main.workflow.nf.test new file mode 100644 index 000000000..8940d32d1 --- /dev/null +++ b/subworkflows/nf-core/utils_nfcore_pipeline/tests/main.workflow.nf.test @@ -0,0 +1,29 @@ +nextflow_workflow { + + name "Test Workflow UTILS_NFCORE_PIPELINE" + script "../main.nf" + config "subworkflows/nf-core/utils_nfcore_pipeline/tests/nextflow.config" + workflow "UTILS_NFCORE_PIPELINE" + tag "subworkflows" + tag "subworkflows_nfcore" + tag "utils_nfcore_pipeline" + tag "subworkflows/utils_nfcore_pipeline" + + test("Should run without failures") { + + when { + workflow { + """ + input[0] = [] + """ + } + } + + then { + assertAll( + { assert workflow.success }, + { assert snapshot(workflow.out).match() } + ) + } + } +} diff --git a/subworkflows/nf-core/utils_nfcore_pipeline/tests/main.workflow.nf.test.snap b/subworkflows/nf-core/utils_nfcore_pipeline/tests/main.workflow.nf.test.snap new file mode 100644 index 000000000..d07ce54c5 --- /dev/null +++ b/subworkflows/nf-core/utils_nfcore_pipeline/tests/main.workflow.nf.test.snap @@ -0,0 +1,15 @@ +{ + "Should run without failures": { + "content": [ + { + "0": [ + true + ], + "valid_config": [ + true + ] + } + ], + "timestamp": "2024-01-19T11:35:22.538940073" + } +} \ No newline at end of file diff --git a/subworkflows/nf-core/utils_nfcore_pipeline/tests/nextflow.config b/subworkflows/nf-core/utils_nfcore_pipeline/tests/nextflow.config new file mode 100644 index 000000000..d0a926bf6 --- /dev/null +++ b/subworkflows/nf-core/utils_nfcore_pipeline/tests/nextflow.config @@ -0,0 +1,9 @@ +manifest { + name = 'nextflow_workflow' + author = """nf-core""" + homePage = 'https://127.0.0.1' + description = """Dummy pipeline""" + 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/tests/tags.yml b/subworkflows/nf-core/utils_nfcore_pipeline/tests/tags.yml new file mode 100644 index 000000000..ac8523c9a --- /dev/null +++ b/subworkflows/nf-core/utils_nfcore_pipeline/tests/tags.yml @@ -0,0 +1,2 @@ +subworkflows/utils_nfcore_pipeline: + - subworkflows/nf-core/utils_nfcore_pipeline/** diff --git a/subworkflows/nf-core/utils_nfvalidation_plugin/main.nf b/subworkflows/nf-core/utils_nfvalidation_plugin/main.nf new file mode 100644 index 000000000..2585b65d1 --- /dev/null +++ b/subworkflows/nf-core/utils_nfvalidation_plugin/main.nf @@ -0,0 +1,62 @@ +// +// 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 new file mode 100644 index 000000000..3d4a6b04f --- /dev/null +++ b/subworkflows/nf-core/utils_nfvalidation_plugin/meta.yml @@ -0,0 +1,44 @@ +# 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 new file mode 100644 index 000000000..517ee54e4 --- /dev/null +++ b/subworkflows/nf-core/utils_nfvalidation_plugin/tests/main.nf.test @@ -0,0 +1,200 @@ +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!') } } + ) + } + } +} \ No newline at end of file diff --git a/subworkflows/nf-core/utils_nfvalidation_plugin/tests/nextflow_schema.json b/subworkflows/nf-core/utils_nfvalidation_plugin/tests/nextflow_schema.json new file mode 100644 index 000000000..7626c1c93 --- /dev/null +++ b/subworkflows/nf-core/utils_nfvalidation_plugin/tests/nextflow_schema.json @@ -0,0 +1,96 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema", + "$id": "https://raw.githubusercontent.com/./master/nextflow_schema.json", + "title": ". pipeline parameters", + "description": "", + "type": "object", + "definitions": { + "input_output_options": { + "title": "Input/output options", + "type": "object", + "fa_icon": "fas fa-terminal", + "description": "Define where the pipeline should find input data and save output data.", + "required": ["outdir"], + "properties": { + "validate_params": { + "type": "boolean", + "description": "Validate parameters?", + "default": true, + "hidden": true + }, + "outdir": { + "type": "string", + "format": "directory-path", + "description": "The output directory where the results will be saved. You have to use absolute paths to storage on Cloud infrastructure.", + "fa_icon": "fas fa-folder-open" + }, + "test_data_base": { + "type": "string", + "default": "https://raw.githubusercontent.com/nf-core/test-datasets/modules", + "description": "Base for test data directory", + "hidden": true + }, + "test_data": { + "type": "string", + "description": "Fake test data param", + "hidden": true + } + } + }, + "generic_options": { + "title": "Generic options", + "type": "object", + "fa_icon": "fas fa-file-import", + "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.", + "fa_icon": "fas fa-question-circle", + "hidden": true + }, + "logo": { + "type": "boolean", + "default": true, + "description": "Display nf-core logo in console output.", + "fa_icon": "fas fa-image", + "hidden": true + }, + "singularity_pull_docker_container": { + "type": "boolean", + "description": "Pull Singularity container from Docker?", + "hidden": true + }, + "publish_dir_mode": { + "type": "string", + "default": "copy", + "description": "Method used to save pipeline results to output directory.", + "help_text": "The 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.", + "fa_icon": "fas fa-copy", + "enum": ["symlink", "rellink", "link", "copy", "copyNoFollow", "move"], + "hidden": true + }, + "monochrome_logs": { + "type": "boolean", + "description": "Use monochrome_logs", + "hidden": true + } + } + } + }, + "allOf": [ + { + "$ref": "#/definitions/input_output_options" + }, + { + "$ref": "#/definitions/generic_options" + } + ] +} diff --git a/subworkflows/nf-core/utils_nfvalidation_plugin/tests/tags.yml b/subworkflows/nf-core/utils_nfvalidation_plugin/tests/tags.yml new file mode 100644 index 000000000..60b1cfff4 --- /dev/null +++ b/subworkflows/nf-core/utils_nfvalidation_plugin/tests/tags.yml @@ -0,0 +1,2 @@ +subworkflows/utils_nfvalidation_plugin: + - subworkflows/nf-core/utils_nfvalidation_plugin/** diff --git a/workflows/rnaseq.nf b/workflows/rnaseq.nf index ed7825c59..845eb6ab4 100644 --- a/workflows/rnaseq.nf +++ b/workflows/rnaseq.nf @@ -1,54 +1,15 @@ /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - PRINT PARAMS SUMMARY + IMPORT MODULES / SUBWORKFLOWS / FUNCTIONS ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ -include { paramsSummaryLog; paramsSummaryMap } from 'plugin/nf-validation' - -def logo = NfcoreTemplate.logo(workflow, params.monochrome_logs) -def citation = '\n' + WorkflowMain.citation(workflow) + '\n' -def summary_params = paramsSummaryMap(workflow) - -// Print parameter summary log to screen -log.info logo + paramsSummaryLog(workflow) + citation - -WorkflowRnaseq.initialise(params, log) - -/* -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - CONFIG FILES -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -*/ - -ch_multiqc_config = Channel.fromPath("$projectDir/assets/multiqc_config.yml", checkIfExists: true) -ch_multiqc_custom_config = params.multiqc_config ? Channel.fromPath( params.multiqc_config, checkIfExists: true ) : Channel.empty() -ch_multiqc_logo = params.multiqc_logo ? Channel.fromPath( params.multiqc_logo, checkIfExists: true ) : Channel.empty() -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) - -/* -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - IMPORT LOCAL MODULES/SUBWORKFLOWS -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -*/ - -// -// SUBWORKFLOW: Consisting of a mix of local and nf-core/modules -// -include { INPUT_CHECK } from '../subworkflows/local/input_check' - -/* -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - IMPORT NF-CORE MODULES/SUBWORKFLOWS -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -*/ - -// -// MODULE: Installed directly from nf-core/modules -// -include { FASTQC } from '../modules/nf-core/fastqc/main' -include { MULTIQC } from '../modules/nf-core/multiqc/main' -include { CUSTOM_DUMPSOFTWAREVERSIONS } from '../modules/nf-core/custom/dumpsoftwareversions/main' +include { FASTQC } from '../modules/nf-core/fastqc/main' +include { MULTIQC } from '../modules/nf-core/multiqc/main' +include { paramsSummaryMap } from 'plugin/nf-validation' +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_rnaseq_pipeline' /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -56,50 +17,45 @@ include { CUSTOM_DUMPSOFTWAREVERSIONS } from '../modules/nf-core/custom/dumpsoft ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ -// Info required for completion email and summary -def multiqc_report = [] - workflow RNASEQ { - ch_versions = Channel.empty() + take: + ch_samplesheet // channel: samplesheet read in from --input - // - // SUBWORKFLOW: Read in samplesheet, validate and stage input files - // - INPUT_CHECK ( - file(params.input) - ) - ch_versions = ch_versions.mix(INPUT_CHECK.out.versions) - // TODO: OPTIONAL, you can use nf-validation plugin to create an input channel from the samplesheet with Channel.fromSamplesheet("input") - // See the documentation https://nextflow-io.github.io/nf-validation/samplesheets/fromSamplesheet/ - // ! There is currently no tooling to help you write a sample sheet schema + main: + + ch_versions = Channel.empty() + ch_multiqc_files = Channel.empty() // // MODULE: Run FastQC // FASTQC ( - INPUT_CHECK.out.reads + ch_samplesheet ) + ch_multiqc_files = ch_multiqc_files.mix(FASTQC.out.zip.collect{it[1]}) ch_versions = ch_versions.mix(FASTQC.out.versions.first()) - CUSTOM_DUMPSOFTWAREVERSIONS ( - ch_versions.unique().collectFile(name: 'collated_versions.yml') - ) + // + // Collate and save software versions + // + softwareVersionsToYAML(ch_versions) + .collectFile(storeDir: "${params.outdir}/pipeline_info", name: 'nf_core_pipeline_software_mqc_versions.yml', sort: true, newLine: true) + .set { ch_collated_versions } // // MODULE: MultiQC // - workflow_summary = WorkflowRnaseq.paramsSummaryMultiqc(workflow, summary_params) - ch_workflow_summary = Channel.value(workflow_summary) - - methods_description = WorkflowRnaseq.methodsDescriptionText(workflow, ch_multiqc_custom_methods_description, params) - ch_methods_description = Channel.value(methods_description) - - ch_multiqc_files = Channel.empty() - ch_multiqc_files = ch_multiqc_files.mix(ch_workflow_summary.collectFile(name: 'workflow_summary_mqc.yaml')) - ch_multiqc_files = ch_multiqc_files.mix(ch_methods_description.collectFile(name: 'methods_description_mqc.yaml')) - ch_multiqc_files = ch_multiqc_files.mix(CUSTOM_DUMPSOFTWAREVERSIONS.out.mqc_yml.collect()) - ch_multiqc_files = ch_multiqc_files.mix(FASTQC.out.zip.collect{it[1]}.ifEmpty([])) + ch_multiqc_config = Channel.fromPath("$projectDir/assets/multiqc_config.yml", checkIfExists: true) + ch_multiqc_custom_config = params.multiqc_config ? Channel.fromPath(params.multiqc_config, checkIfExists: true) : Channel.empty() + ch_multiqc_logo = params.multiqc_logo ? Channel.fromPath(params.multiqc_logo, checkIfExists: true) : Channel.empty() + summary_params = paramsSummaryMap(workflow, parameters_schema: "nextflow_schema.json") + ch_workflow_summary = Channel.value(paramsSummaryMultiqc(summary_params)) + ch_multiqc_custom_methods_description = params.multiqc_methods_description ? file(params.multiqc_methods_description, checkIfExists: true) : file("$projectDir/assets/methods_description_template.yml", checkIfExists: true) + ch_methods_description = Channel.value(methodsDescriptionText(ch_multiqc_custom_methods_description)) + ch_multiqc_files = ch_multiqc_files.mix(ch_workflow_summary.collectFile(name: 'workflow_summary_mqc.yaml')) + ch_multiqc_files = ch_multiqc_files.mix(ch_collated_versions) + ch_multiqc_files = ch_multiqc_files.mix(ch_methods_description.collectFile(name: 'methods_description_mqc.yaml', sort: false)) MULTIQC ( ch_multiqc_files.collect(), @@ -107,31 +63,10 @@ workflow RNASEQ { ch_multiqc_custom_config.toList(), ch_multiqc_logo.toList() ) - multiqc_report = MULTIQC.out.report.toList() -} - -/* -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - COMPLETION EMAIL AND SUMMARY -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -*/ - -workflow.onComplete { - if (params.email || params.email_on_fail) { - NfcoreTemplate.email(workflow, params, summary_params, projectDir, log, multiqc_report) - } - NfcoreTemplate.dump_parameters(workflow, params) - NfcoreTemplate.summary(workflow, params, log) - if (params.hook_url) { - NfcoreTemplate.IM_notification(workflow, params, summary_params, projectDir, log) - } -} -workflow.onError { - if (workflow.errorReport.contains("Process requirement exceeds available memory")) { - println("🛑 Default resources exceed availability 🛑 ") - println("💡 See here on how to configure pipeline: https://nf-co.re/docs/usage/configuration#tuning-workflow-resources 💡") - } + emit: + multiqc_report = MULTIQC.out.report.toList() // channel: /path/to/multiqc_report.html + versions = ch_versions // channel: [ path(versions.yml) ] } /* From 0b31e1fbb8974aaf5996023fea6f2f29495f74c6 Mon Sep 17 00:00:00 2001 From: Harshil Patel Date: Wed, 21 Feb 2024 09:45:31 +0000 Subject: [PATCH 077/634] Update multiqc module to fix linting --- .nf-core.yml | 3 - modules.json | 75 +------------------ .../nf-core/multiqc/tests/main.nf.test.snap | 8 +- 3 files changed, 5 insertions(+), 81 deletions(-) diff --git a/.nf-core.yml b/.nf-core.yml index 87fbedfb1..a2a0e4592 100644 --- a/.nf-core.yml +++ b/.nf-core.yml @@ -5,9 +5,6 @@ lint: - assets/email_template.txt files_exist: - conf/modules.config - - lib/NfcoreTemplate.groovy - - lib/Utils.groovy - - lib/WorkflowMain.groovy nextflow_config: - config_defaults: - params.ribo_database_manifest diff --git a/modules.json b/modules.json index 6c1847174..25ecaff9c 100644 --- a/modules.json +++ b/modules.json @@ -82,7 +82,7 @@ }, "multiqc": { "branch": "master", - "git_sha": "9e71d8519dfbfc328c078bba14d4bd4c99e39a94", + "git_sha": "ccacf6f5de6df3bc6d73b665c1fd2933d8bbc290", "installed_by": ["modules"] }, "picard/markduplicates": { @@ -261,79 +261,6 @@ } } }, - "subworkflows": { - "nf-core": { - "bam_dedup_stats_samtools_umitools": { - "branch": "master", - "git_sha": "f4596fe0bdc096cf53ec4497e83defdb3a94ff62", - "installed_by": ["subworkflows"] - }, - "bam_markduplicates_picard": { - "branch": "master", - "git_sha": "f4596fe0bdc096cf53ec4497e83defdb3a94ff62", - "installed_by": ["subworkflows"] - }, - "bam_rseqc": { - "branch": "master", - "git_sha": "9eb22e4d3f28c274b7c498a1564581377349a242", - "installed_by": ["subworkflows"] - }, - "bam_sort_stats_samtools": { - "branch": "master", - "git_sha": "f4596fe0bdc096cf53ec4497e83defdb3a94ff62", - "installed_by": ["fastq_align_hisat2"] - }, - "bam_stats_samtools": { - "branch": "master", - "git_sha": "f4596fe0bdc096cf53ec4497e83defdb3a94ff62", - "installed_by": [ - "bam_dedup_stats_samtools_umitools", - "bam_markduplicates_picard", - "bam_sort_stats_samtools" - ] - }, - "bedgraph_bedclip_bedgraphtobigwig": { - "branch": "master", - "git_sha": "a4bceac1aecee5aa0a5dbc601baf0e2e61013fb2", - "installed_by": ["subworkflows"] - }, - "fastq_align_hisat2": { - "branch": "master", - "git_sha": "cfd937a668919d948f6fcbf4218e79de50c2f36f", - "installed_by": ["subworkflows"] - }, - "fastq_fastqc_umitools_fastp": { - "branch": "master", - "git_sha": "003920c7f9a8ae19b69a97171922880220bedf56", - "installed_by": ["subworkflows"] - }, - "fastq_fastqc_umitools_trimgalore": { - "branch": "master", - "git_sha": "cfd937a668919d948f6fcbf4218e79de50c2f36f", - "installed_by": ["subworkflows"] - }, - "fastq_subsample_fq_salmon": { - "branch": "master", - "git_sha": "003920c7f9a8ae19b69a97171922880220bedf56", - "installed_by": ["subworkflows"] - }, - "utils_nextflow_pipeline": { - "branch": "master", - "git_sha": "cd08c91373cd00a73255081340e4914485846ba1", - "installed_by": ["subworkflows"] - }, - "utils_nfcore_pipeline": { - "branch": "master", - "git_sha": "262b17ed2aad591039f914951659177e6c39a8d8", - "installed_by": ["subworkflows"] - }, - "utils_nfvalidation_plugin": { - "branch": "master", - "git_sha": "cd08c91373cd00a73255081340e4914485846ba1", - "installed_by": ["subworkflows"] - } - } - }, "subworkflows": { "nf-core": { "utils_nextflow_pipeline": { diff --git a/modules/nf-core/multiqc/tests/main.nf.test.snap b/modules/nf-core/multiqc/tests/main.nf.test.snap index eaa4376eb..c204b4881 100644 --- a/modules/nf-core/multiqc/tests/main.nf.test.snap +++ b/modules/nf-core/multiqc/tests/main.nf.test.snap @@ -9,7 +9,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-01-31T17:43:40.529579" + "timestamp": "2024-02-14T09:28:51.744211298" }, "multiqc_stub": { "content": [ @@ -24,18 +24,18 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-01-31T17:45:09.605359" + "timestamp": "2024-02-14T09:29:28.847433492" }, "multiqc_versions_config": { "content": [ [ - "versions.yml:md5,14e9a2661241abd828f4f06a7b5c222d" + "versions.yml:md5,d320d4c37e349c5588e07e7a31cd4186" ] ], "meta": { "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-01-31T17:44:53.535994" + "timestamp": "2024-02-14T09:29:13.223621555" } } \ No newline at end of file From 242e8d568b8acef5465ce2d2a186291d40989206 Mon Sep 17 00:00:00 2001 From: Harshil Patel Date: Wed, 21 Feb 2024 09:46:24 +0000 Subject: [PATCH 078/634] Update CHANGELOG --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index c3b27ae35..f17789510 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 - [PR #1214](https://github.com/nf-core/rnaseq/pull/1214) - Bump umitools + delocalise prepareforrsem ([#831](https://github.com/nf-core/rnaseq/issues/831)) - [PR #1213](https://github.com/nf-core/rnaseq/pull/1213) - Pass transcriptome fasta through to samtools stats - [PR #1216](https://github.com/nf-core/rnaseq/pull/1216) - Delocalise catadditionalfasta ([#1162](https://github.com/nf-core/rnaseq/issues/1162)) +- [PR #1218](https://github.com/nf-core/rnaseq/pull/1218) - Template update for nf-core/tools v2.13 ### Parameters From 99ee8ae0e78db4d037b90bcb1999f432a1fa8704 Mon Sep 17 00:00:00 2001 From: Harshil Patel Date: Wed, 21 Feb 2024 10:02:18 +0000 Subject: [PATCH 079/634] Update all nf-core modules and subworkflows --- modules.json | 56 ++++++++++++++++++- .../summarizedexperiment/tests/main.nf.test | 3 +- .../tests/main.function.nf.test | 2 +- .../tests/nextflow.config | 2 +- .../tests/main.nf.test | 2 +- 5 files changed, 59 insertions(+), 6 deletions(-) diff --git a/modules.json b/modules.json index 25ecaff9c..60757a6fd 100644 --- a/modules.json +++ b/modules.json @@ -216,7 +216,7 @@ }, "summarizedexperiment/summarizedexperiment": { "branch": "master", - "git_sha": "105968d1c48c727834abcabc94ad6bd128e5ef27", + "git_sha": "376bc3de6c2b763f21d55a7f5d8712d0efbf1b3a", "installed_by": ["modules"] }, "trimgalore": { @@ -263,6 +263,60 @@ }, "subworkflows": { "nf-core": { + "bam_dedup_stats_samtools_umitools": { + "branch": "master", + "git_sha": "f4596fe0bdc096cf53ec4497e83defdb3a94ff62", + "installed_by": ["subworkflows"] + }, + "bam_markduplicates_picard": { + "branch": "master", + "git_sha": "f4596fe0bdc096cf53ec4497e83defdb3a94ff62", + "installed_by": ["subworkflows"] + }, + "bam_rseqc": { + "branch": "master", + "git_sha": "9eb22e4d3f28c274b7c498a1564581377349a242", + "installed_by": ["subworkflows"] + }, + "bam_sort_stats_samtools": { + "branch": "master", + "git_sha": "f4596fe0bdc096cf53ec4497e83defdb3a94ff62", + "installed_by": ["fastq_align_hisat2"] + }, + "bam_stats_samtools": { + "branch": "master", + "git_sha": "f4596fe0bdc096cf53ec4497e83defdb3a94ff62", + "installed_by": [ + "bam_dedup_stats_samtools_umitools", + "bam_markduplicates_picard", + "bam_sort_stats_samtools" + ] + }, + "bedgraph_bedclip_bedgraphtobigwig": { + "branch": "master", + "git_sha": "a4bceac1aecee5aa0a5dbc601baf0e2e61013fb2", + "installed_by": ["subworkflows"] + }, + "fastq_align_hisat2": { + "branch": "master", + "git_sha": "cfd937a668919d948f6fcbf4218e79de50c2f36f", + "installed_by": ["subworkflows"] + }, + "fastq_fastqc_umitools_fastp": { + "branch": "master", + "git_sha": "003920c7f9a8ae19b69a97171922880220bedf56", + "installed_by": ["subworkflows"] + }, + "fastq_fastqc_umitools_trimgalore": { + "branch": "master", + "git_sha": "cfd937a668919d948f6fcbf4218e79de50c2f36f", + "installed_by": ["subworkflows"] + }, + "fastq_subsample_fq_salmon": { + "branch": "master", + "git_sha": "003920c7f9a8ae19b69a97171922880220bedf56", + "installed_by": ["subworkflows"] + }, "utils_nextflow_pipeline": { "branch": "master", "git_sha": "cd08c91373cd00a73255081340e4914485846ba1", diff --git a/modules/nf-core/summarizedexperiment/summarizedexperiment/tests/main.nf.test b/modules/nf-core/summarizedexperiment/summarizedexperiment/tests/main.nf.test index 37a51c802..d74f5aa36 100644 --- a/modules/nf-core/summarizedexperiment/summarizedexperiment/tests/main.nf.test +++ b/modules/nf-core/summarizedexperiment/summarizedexperiment/tests/main.nf.test @@ -47,8 +47,7 @@ nextflow_process { """ input[0] = UNTAR.out.untar.map { meta, dir -> [ meta, dir.listFiles().collect() ] } input[1] = CUSTOM_TX2GENE.out.tx2gene - input[2] = Channel.of([ [], [] ]) - input[3] = 'kallisto' + input[2] = 'kallisto' """ } } diff --git a/subworkflows/nf-core/utils_nextflow_pipeline/tests/main.function.nf.test b/subworkflows/nf-core/utils_nextflow_pipeline/tests/main.function.nf.test index 68718e4f5..8ed4310ca 100644 --- a/subworkflows/nf-core/utils_nextflow_pipeline/tests/main.function.nf.test +++ b/subworkflows/nf-core/utils_nextflow_pipeline/tests/main.function.nf.test @@ -51,4 +51,4 @@ nextflow_function { ) } } -} +} \ No newline at end of file diff --git a/subworkflows/nf-core/utils_nextflow_pipeline/tests/nextflow.config b/subworkflows/nf-core/utils_nextflow_pipeline/tests/nextflow.config index d0a926bf6..53574ffec 100644 --- a/subworkflows/nf-core/utils_nextflow_pipeline/tests/nextflow.config +++ b/subworkflows/nf-core/utils_nextflow_pipeline/tests/nextflow.config @@ -6,4 +6,4 @@ manifest { nextflowVersion = '!>=23.04.0' version = '9.9.9' doi = 'https://doi.org/10.5281/zenodo.5070524' -} +} \ No newline at end of file diff --git a/subworkflows/nf-core/utils_nfvalidation_plugin/tests/main.nf.test b/subworkflows/nf-core/utils_nfvalidation_plugin/tests/main.nf.test index 5784a33f2..517ee54e4 100644 --- a/subworkflows/nf-core/utils_nfvalidation_plugin/tests/main.nf.test +++ b/subworkflows/nf-core/utils_nfvalidation_plugin/tests/main.nf.test @@ -197,4 +197,4 @@ nextflow_workflow { ) } } -} +} \ No newline at end of file From 4acc16acd96f1991dffb73aca72771c54757d74c Mon Sep 17 00:00:00 2001 From: Harshil Patel Date: Wed, 21 Feb 2024 10:19:03 +0000 Subject: [PATCH 080/634] Refactor input provided to rnaseq workflow --- main.nf | 14 +++----- nextflow_schema.json | 1 - .../utils_nfcore_rnaseq_pipeline/main.nf | 24 +------------- workflows/rnaseq/main.nf | 32 +++++++++++++------ 4 files changed, 28 insertions(+), 43 deletions(-) diff --git a/main.nf b/main.nf index b126a117e..59001a4f1 100755 --- a/main.nf +++ b/main.nf @@ -54,9 +54,6 @@ params.kallisto_index = getGenomeAttribute('kallisto') // workflow NFCORE_RNASEQ { - take: - samplesheet // channel: samplesheet read in from --input - main: ch_versions = Channel.empty() @@ -101,9 +98,9 @@ workflow NFCORE_RNASEQ { // // WORKFLOW: Run nf-core/rnaseq workflow // + ch_samplesheet = Channel.value(file(params.input, checkIfExists: true)) RNASEQ ( - Channel.of(file(params.input, checkIfExists: true)), - PIPELINE_INITIALISATION.out.samplesheet, + ch_samplesheet, ch_versions, PREPARE_GENOME.out.fasta, PREPARE_GENOME.out.gtf, @@ -145,16 +142,13 @@ workflow { params.validate_params, params.monochrome_logs, args, - params.outdir, - params.input + params.outdir ) // // WORKFLOW: Run main workflow // - NFCORE_RNASEQ ( - PIPELINE_INITIALISATION.out.samplesheet - ) + NFCORE_RNASEQ () // // SUBWORKFLOW: Run completion tasks diff --git a/nextflow_schema.json b/nextflow_schema.json index 01166dac8..e5195cade 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -19,7 +19,6 @@ "schema": "assets/schema_input.json", "mimetype": "text/csv", "pattern": "^\\S+\\.csv$", - "schema": "assets/schema_input.json", "description": "Path to comma-separated file containing information about the samples in the experiment.", "help_text": "You 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 4 columns, and a header row. See [usage docs](https://nf-co.re/rnaseq/usage#samplesheet-input).", "fa_icon": "fas fa-file-csv" diff --git a/subworkflows/local/utils_nfcore_rnaseq_pipeline/main.nf b/subworkflows/local/utils_nfcore_rnaseq_pipeline/main.nf index c5d525fc7..8f86b29fb 100644 --- a/subworkflows/local/utils_nfcore_rnaseq_pipeline/main.nf +++ b/subworkflows/local/utils_nfcore_rnaseq_pipeline/main.nf @@ -11,7 +11,6 @@ import groovy.json.JsonSlurper */ include { UTILS_NFVALIDATION_PLUGIN } from '../../nf-core/utils_nfvalidation_plugin' -include { fromSamplesheet } from 'plugin/nf-validation' include { paramsSummaryMap } from 'plugin/nf-validation' include { UTILS_NEXTFLOW_PIPELINE } from '../../nf-core/utils_nextflow_pipeline' include { completionEmail } from '../../nf-core/utils_nfcore_pipeline' @@ -37,7 +36,6 @@ workflow PIPELINE_INITIALISATION { 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 main: @@ -80,28 +78,8 @@ workflow PIPELINE_INITIALISATION { // validateInputParameters() - // - // Create channel from input file provided through params.input - // - Channel - .fromSamplesheet("input") - .map { - meta, fastq_1, fastq_2 -> - if (!fastq_2) { - return [ meta.id, meta + [ single_end:true ], [ fastq_1 ] ] - } else { - return [ meta.id, meta + [ single_end:false ], [ fastq_1, fastq_2 ] ] - } - } - .groupTuple() - .map { - validateInputSamplesheet(it) - } - .set { ch_samplesheet } - emit: - samplesheet = ch_samplesheet - versions = ch_versions + versions = ch_versions } /* diff --git a/workflows/rnaseq/main.nf b/workflows/rnaseq/main.nf index 164d0353c..5c7c2b964 100755 --- a/workflows/rnaseq/main.nf +++ b/workflows/rnaseq/main.nf @@ -22,6 +22,7 @@ include { QUANTIFY_RSEM } from '../../subwor include { QUANTIFY_PSEUDO_ALIGNMENT as QUANTIFY_STAR_SALMON } from '../../subworkflows/local/quantify_pseudo_alignment' include { QUANTIFY_PSEUDO_ALIGNMENT } from '../../subworkflows/local/quantify_pseudo_alignment' +include { validateInputSamplesheet } from '../../subworkflows/local/utils_nfcore_rnaseq_pipeline' include { multiqcTsvFromList } from '../../subworkflows/local/utils_nfcore_rnaseq_pipeline' include { getSalmonInferredStrandedness } from '../../subworkflows/local/utils_nfcore_rnaseq_pipeline' include { getStarPercentMapped } from '../../subworkflows/local/utils_nfcore_rnaseq_pipeline' @@ -52,6 +53,7 @@ include { UMITOOLS_PREPAREFORRSEM as UMITOOLS_PREPAREFORSALMON } from '../../mod // SUBWORKFLOW: Consisting entirely of nf-core/modules // include { paramsSummaryMap } from 'plugin/nf-validation' +include { fromSamplesheet } from 'plugin/nf-validation' include { paramsSummaryMultiqc } from '../../subworkflows/nf-core/utils_nfcore_pipeline' include { softwareVersionsToYAML } from '../../subworkflows/nf-core/utils_nfcore_pipeline' include { FASTQ_SUBSAMPLE_FQ_SALMON } from '../../subworkflows/nf-core/fastq_subsample_fq_salmon' @@ -81,8 +83,7 @@ ch_dummy_file = ch_pca_header_multiqc workflow RNASEQ { take: - ch_input // channel: samplesheet file as specified to --input - ch_samplesheet // channel: sample fastqs parsed from --input + ch_samplesheet // channel: path(sample_sheet.csv) ch_versions // channel: [ path(versions.yml) ] ch_fasta // channel: path(genome.fasta) ch_gtf // channel: path(genome.gtf) @@ -103,9 +104,22 @@ workflow RNASEQ { ch_multiqc_files = Channel.empty() // - // Create separate channels for samples that have single/multiple FastQ files to merge + // Create channel from input file provided through params.input // - ch_samplesheet + Channel + .fromSamplesheet("input") + .map { + meta, fastq_1, fastq_2 -> + if (!fastq_2) { + return [ meta.id, meta + [ single_end:true ], [ fastq_1 ] ] + } else { + return [ meta.id, meta + [ single_end:false ], [ fastq_1, fastq_2 ] ] + } + } + .groupTuple() + .map { + validateInputSamplesheet(it) + } .branch { meta, fastqs -> single : fastqs.size() == 1 @@ -366,7 +380,7 @@ workflow RNASEQ { // Fix paired-end reads in name sorted BAM file // See: https://github.com/nf-core/rnaseq/issues/828 UMITOOLS_PREPAREFORSALMON ( - ch_umitools_dedup_bam.paired_end.map{meta, bam -> [meta, bam, []]} + ch_umitools_dedup_bam.paired_end.map { meta, bam -> [ meta, bam, [] ] } ) ch_versions = ch_versions.mix(UMITOOLS_PREPAREFORSALMON.out.versions.first()) @@ -380,7 +394,7 @@ workflow RNASEQ { // SUBWORKFLOW: Count reads from BAM alignments using Salmon // QUANTIFY_STAR_SALMON ( - ch_input.map{[[:], it]}, + ch_samplesheet.map { [ [:], it ] }, ch_transcriptome_bam, ch_dummy_file, ch_transcript_fasta, @@ -397,7 +411,7 @@ workflow RNASEQ { if (!params.skip_qc & !params.skip_deseq2_qc) { DESEQ2_QC_STAR_SALMON ( - QUANTIFY_STAR_SALMON.out.counts_gene_length_scaled.map{it[1]}, + QUANTIFY_STAR_SALMON.out.counts_gene_length_scaled.map { it[1] }, ch_pca_header_multiqc, ch_clustering_header_multiqc ) @@ -710,7 +724,7 @@ workflow RNASEQ { } QUANTIFY_PSEUDO_ALIGNMENT ( - ch_input.map{[[:], it]}, + ch_samplesheet.map { [ [:], it ] }, ch_strand_inferred_filtered_fastq, ch_pseudo_index, ch_dummy_file, @@ -729,7 +743,7 @@ workflow RNASEQ { if (!params.skip_qc & !params.skip_deseq2_qc) { DESEQ2_QC_PSEUDO ( - ch_counts_gene_length_scaled.map{it[1]}, + ch_counts_gene_length_scaled.map { it[1] }, ch_pca_header_multiqc, ch_clustering_header_multiqc ) From 81440f9e77fd69decccb7092f020c012802c843c Mon Sep 17 00:00:00 2001 From: Harshil Patel Date: Wed, 21 Feb 2024 10:23:49 +0000 Subject: [PATCH 081/634] Remove unused ch_versions from PIPELINE_INITIALISATION --- subworkflows/local/utils_nfcore_rnaseq_pipeline/main.nf | 4 ---- 1 file changed, 4 deletions(-) diff --git a/subworkflows/local/utils_nfcore_rnaseq_pipeline/main.nf b/subworkflows/local/utils_nfcore_rnaseq_pipeline/main.nf index 8f86b29fb..34aee9577 100644 --- a/subworkflows/local/utils_nfcore_rnaseq_pipeline/main.nf +++ b/subworkflows/local/utils_nfcore_rnaseq_pipeline/main.nf @@ -39,8 +39,6 @@ workflow PIPELINE_INITIALISATION { main: - ch_versions = Channel.empty() - // // Print version and exit if required and dump pipeline parameters to JSON file // @@ -78,8 +76,6 @@ workflow PIPELINE_INITIALISATION { // validateInputParameters() - emit: - versions = ch_versions } /* From c61c5f275850edda9cc5c088d91f98d83352430a Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Wed, 21 Feb 2024 17:27:19 +0000 Subject: [PATCH 082/634] Fix config selectors --- workflows/rnaseq/nextflow.config | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/workflows/rnaseq/nextflow.config b/workflows/rnaseq/nextflow.config index f79737c24..9262fd80c 100644 --- a/workflows/rnaseq/nextflow.config +++ b/workflows/rnaseq/nextflow.config @@ -74,7 +74,7 @@ if (!params.skip_alignment && params.aligner == 'star_salmon') { if (params.with_umi) { process { - withName: 'NFCORE_RNASEQ:SAMTOOLS_SORT' { + withName: 'NFCORE_RNASEQ:RNASEQ:SAMTOOLS_SORT' { ext.args = '-n' ext.prefix = { "${meta.id}.umi_dedup.transcriptome" } publishDir = [ @@ -85,7 +85,7 @@ if (!params.skip_alignment && params.aligner == 'star_salmon') { ] } - withName: 'NFCORE_RNASEQ:UMITOOLS_PREPAREFORSALMON' { + withName: 'NFCORE_RNASEQ:RNASEQ:UMITOOLS_PREPAREFORSALMON' { ext.prefix = { "${meta.id}.umi_dedup.transcriptome.filtered" } publishDir = [ [ @@ -102,7 +102,7 @@ if (!params.skip_alignment && params.aligner == 'star_salmon') { ] } - withName: 'NFCORE_RNASEQ:BAM_SORT_STATS_SAMTOOLS:SAMTOOLS_SORT' { + withName: 'NFCORE_RNASEQ:RNASEQ:BAM_SORT_STATS_SAMTOOLS:SAMTOOLS_SORT' { ext.prefix = { "${meta.id}.transcriptome.sorted" } publishDir = [ path: { params.save_align_intermeds || params.save_umi_intermeds ? "${params.outdir}/${params.aligner}" : params.outdir }, @@ -112,7 +112,7 @@ if (!params.skip_alignment && params.aligner == 'star_salmon') { ] } - withName: 'NFCORE_RNASEQ:BAM_SORT_STATS_SAMTOOLS:SAMTOOLS_INDEX' { + withName: 'NFCORE_RNASEQ:RNASEQ:BAM_SORT_STATS_SAMTOOLS:SAMTOOLS_INDEX' { publishDir = [ path: { params.save_align_intermeds || params.save_umi_intermeds ? "${params.outdir}/${params.aligner}" : params.outdir }, mode: params.publish_dir_mode, @@ -121,7 +121,7 @@ if (!params.skip_alignment && params.aligner == 'star_salmon') { ] } - withName: 'NFCORE_RNASEQ:BAM_SORT_STATS_SAMTOOLS:BAM_STATS_SAMTOOLS:.*' { + withName: 'NFCORE_RNASEQ:RNASEQ:BAM_SORT_STATS_SAMTOOLS:BAM_STATS_SAMTOOLS:.*' { ext.prefix = { "${meta.id}.transcriptome.sorted.bam" } publishDir = [ path: { params.save_align_intermeds || params.save_umi_intermeds ? "${params.outdir}/${params.aligner}/samtools_stats" : params.outdir }, From f6e0dad30d9d891ac2fba9b7b52db4a1d7b43ba7 Mon Sep 17 00:00:00 2001 From: Harshil Patel Date: Wed, 21 Feb 2024 18:28:40 +0000 Subject: [PATCH 083/634] Use more specific process selector for samtools processes --- workflows/rnaseq/nextflow.config | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/workflows/rnaseq/nextflow.config b/workflows/rnaseq/nextflow.config index 9262fd80c..f988d3d7c 100644 --- a/workflows/rnaseq/nextflow.config +++ b/workflows/rnaseq/nextflow.config @@ -180,7 +180,7 @@ if (!params.skip_alignment && params.aligner == 'star_salmon') { if (!params.skip_alignment) { process { - withName: 'NFCORE_RNASEQ:.*:BAM_SORT_STATS_SAMTOOLS:BAM_STATS_SAMTOOLS:.*' { + withName: 'NFCORE_RNASEQ:RNASEQ:.*:BAM_SORT_STATS_SAMTOOLS:BAM_STATS_SAMTOOLS:.*' { ext.prefix = { "${meta.id}.sorted.bam" } publishDir = [ path: { "${params.outdir}/${params.aligner}/samtools_stats" }, @@ -189,7 +189,7 @@ if (!params.skip_alignment) { ] } - withName: 'NFCORE_RNASEQ:.*:BAM_SORT_STATS_SAMTOOLS:SAMTOOLS_SORT' { + withName: 'NFCORE_RNASEQ:RNASEQ:.*:BAM_SORT_STATS_SAMTOOLS:SAMTOOLS_SORT' { ext.prefix = { "${meta.id}.sorted" } publishDir = [ path: { ( ['star_salmon','hisat2'].contains(params.aligner) && @@ -203,7 +203,7 @@ if (!params.skip_alignment) { ] } - withName: 'NFCORE_RNASEQ:.*:BAM_SORT_STATS_SAMTOOLS:SAMTOOLS_INDEX' { + withName: 'NFCORE_RNASEQ:RNASEQ:.*:BAM_SORT_STATS_SAMTOOLS:SAMTOOLS_INDEX' { ext.args = { params.bam_csi_index ? '-c' : '' } publishDir = [ path: { ( ['star_salmon','hisat2'].contains(params.aligner) && From c9355c1da4da911eb1c4d701c39f15a35943b6d8 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Wed, 21 Feb 2024 18:28:56 +0000 Subject: [PATCH 084/634] Module updates --- modules.json | 4 ++-- modules/nf-core/cat/fastq/environment.yml | 2 +- modules/nf-core/cat/fastq/main.nf | 1 - modules/nf-core/cat/fastq/nextflow.config | 9 --------- modules/nf-core/umitools/prepareforrsem/main.nf | 1 + 5 files changed, 4 insertions(+), 13 deletions(-) delete mode 100644 modules/nf-core/cat/fastq/nextflow.config diff --git a/modules.json b/modules.json index 60757a6fd..e88d66486 100644 --- a/modules.json +++ b/modules.json @@ -12,7 +12,7 @@ }, "cat/fastq": { "branch": "master", - "git_sha": "02fd5bd7275abad27aad32d5c852e0a9b1b98882", + "git_sha": "0997b47c93c06b49aa7b3fefda87e728312cf2ca", "installed_by": ["modules"] }, "custom/catadditionalfasta": { @@ -251,7 +251,7 @@ }, "umitools/prepareforrsem": { "branch": "master", - "git_sha": "ff7e93715a2acecf3f143ec78c9858deba2984d0", + "git_sha": "f7304017cdf25dde84b3eb357d5b0c9ea91cfcb2", "installed_by": ["modules"] }, "untar": { diff --git a/modules/nf-core/cat/fastq/environment.yml b/modules/nf-core/cat/fastq/environment.yml index bff93add0..8c69b121f 100644 --- a/modules/nf-core/cat/fastq/environment.yml +++ b/modules/nf-core/cat/fastq/environment.yml @@ -4,4 +4,4 @@ channels: - bioconda - defaults dependencies: - - conda-forge::sed=4.7 + - conda-forge::coreutils=8.30 diff --git a/modules/nf-core/cat/fastq/main.nf b/modules/nf-core/cat/fastq/main.nf index 3d963784c..f132b2adc 100644 --- a/modules/nf-core/cat/fastq/main.nf +++ b/modules/nf-core/cat/fastq/main.nf @@ -76,5 +76,4 @@ process CAT_FASTQ { """ } } - } diff --git a/modules/nf-core/cat/fastq/nextflow.config b/modules/nf-core/cat/fastq/nextflow.config deleted file mode 100644 index 9d4372756..000000000 --- a/modules/nf-core/cat/fastq/nextflow.config +++ /dev/null @@ -1,9 +0,0 @@ -process { - withName: 'CAT_FASTQ' { - publishDir = [ - path: { params.save_merged_fastq ? "${params.outdir}/fastq" : params.outdir }, - mode: params.publish_dir_mode, - saveAs: { filename -> (filename.endsWith('.fastq.gz') && params.save_merged_fastq) ? filename : null } - ] - } -} \ No newline at end of file diff --git a/modules/nf-core/umitools/prepareforrsem/main.nf b/modules/nf-core/umitools/prepareforrsem/main.nf index 6a511af31..07c4381ad 100644 --- a/modules/nf-core/umitools/prepareforrsem/main.nf +++ b/modules/nf-core/umitools/prepareforrsem/main.nf @@ -21,6 +21,7 @@ process UMITOOLS_PREPAREFORRSEM { script: def args = task.ext.args ?: '' def prefix = task.ext.prefix ?: "${meta.id}" + if ("$bam" == "${prefix}.bam") error "Input and output names are the same, use \"task.ext.prefix\" to disambiguate!" """ umi_tools prepare-for-rsem \\ --stdin=$bam \\ From a5109d92bd28d8eff20a2a4bc2c8ccd390e72ada Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Wed, 21 Feb 2024 18:32:43 +0000 Subject: [PATCH 085/634] Readd config --- modules/nf-core/cat/fastq/nextflow.config | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 modules/nf-core/cat/fastq/nextflow.config diff --git a/modules/nf-core/cat/fastq/nextflow.config b/modules/nf-core/cat/fastq/nextflow.config new file mode 100644 index 000000000..64de2e49c --- /dev/null +++ b/modules/nf-core/cat/fastq/nextflow.config @@ -0,0 +1,9 @@ +process { + withName: 'CAT_FASTQ' { + publishDir = [ + path: { params.save_merged_fastq ? "${params.outdir}/fastq" : params.outdir }, + mode: params.publish_dir_mode, + saveAs: { filename -> (filename.endsWith('.fastq.gz') && params.save_merged_fastq) ? filename : null } + ] + } +} From 11d6bbccaefc814125dfa9d6f8ffb9def8865bcc Mon Sep 17 00:00:00 2001 From: laramiellindsey Date: Mon, 12 Feb 2024 11:25:39 -0600 Subject: [PATCH 086/634] nf-test at the pipeline level --- .gitignore | 12 ++++++++---- nf-test.config | 12 ++++++++++++ tests/lib/UTILS.groovy | 11 +++++++++++ tests/main.nf.test | 39 +++++++++++++++++++++++++++++++++++++++ tests/main.nf.test.snap | 12 ++++++++++++ tests/nextflow.config | 33 +++++++++++++++++++++++++++++++++ 6 files changed, 115 insertions(+), 4 deletions(-) create mode 100644 nf-test.config create mode 100644 tests/lib/UTILS.groovy create mode 100644 tests/main.nf.test create mode 100644 tests/main.nf.test.snap create mode 100644 tests/nextflow.config diff --git a/.gitignore b/.gitignore index 5124c9ac7..ccae37a8f 100644 --- a/.gitignore +++ b/.gitignore @@ -1,8 +1,12 @@ +*.pyc +.DS_Store .nextflow* -work/ +.nf-test.log data/ +nf-test +.nf-test* results/ -.DS_Store -testing/ +test.xml testing* -*.pyc +testing/ +work/ \ No newline at end of file diff --git a/nf-test.config b/nf-test.config new file mode 100644 index 000000000..f126b460a --- /dev/null +++ b/nf-test.config @@ -0,0 +1,12 @@ +config { + // Location of nf-tests + testsDir "." + + // nf-test directory used to create temporary files for each test + workDir System.getenv("NFT_WORKDIR") ?: ".nf-test" + + // Location of an optional nextflow.config file specific for executing pipeline tests + configFile "tests/nextflow.config" + + profile "test" +} diff --git a/tests/lib/UTILS.groovy b/tests/lib/UTILS.groovy new file mode 100644 index 000000000..a76b18a78 --- /dev/null +++ b/tests/lib/UTILS.groovy @@ -0,0 +1,11 @@ +// Function to remove Nextflow version from software_versions.yml + +class UTILS { + public static String removeNextflowVersion(outputDir) { + def softwareVersions = path("$outputDir/pipeline_info/software_versions.yml").yaml + if (softwareVersions.containsKey("Workflow")) { + softwareVersions.Workflow.remove("Nextflow") + } + return softwareVersions + } +} \ No newline at end of file diff --git a/tests/main.nf.test b/tests/main.nf.test new file mode 100644 index 000000000..fab3a932e --- /dev/null +++ b/tests/main.nf.test @@ -0,0 +1,39 @@ +nextflow_pipeline { + + name "Test pipeline" + script "../main.nf" + tag "rnaseq" + tag "PIPELINE" + + test("Run with profile test") { + + when { + params { + outdir = "$outputDir" + input = 'https://raw.githubusercontent.com/nf-core/test-datasets/7f1614baeb0ddf66e60be78c3d9fa55440465ac8/samplesheet/v3.10/samplesheet_test.csv' + } + } + + then { + assert workflow.success + + assertAll( + { assert workflow.success }, + { assert snapshot(UTILS.removeNextflowVersion("$outputDir")).match("single_end_software_versions") }, + { assert snapshot(path("$outputDir/bbsplit/").list(), + path("$outputDir/salmon/").list(), + path("$outputDir/star_salmon/").list(), + path("$outputDir/trimgalore/").list()) }, + { assert new File("$outputDir/fastqc/RAP1_IAA_30M_REP1_1_fastqc.html").exists() }, + { assert new File("$outputDir/fastqc/RAP1_IAA_30M_REP1_2_fastqc.html").exists() }, + { assert new File("$outputDir/fastqc/RAP1_UNINDUCED_REP1_fastqc.html").exists() }, + { assert new File("$outputDir/fastqc/RAP1_UNINDUCED_REP2_fastqc.html").exists() }, + { assert new File("$outputDir/fastqc/WT_REP1_1_fastqc.html").exists() }, + { assert new File("$outputDir/fastqc/WT_REP1_2_fastqc.html").exists() }, + { assert new File("$outputDir/fastqc/WT_REP2_1_fastqc.html").exists() }, + { assert new File("$outputDir/fastqc/WT_REP2_2_fastqc.html").exists() }, + { assert new File("$outputDir/multiqc/star_salmon/multiqc_report.html").exists() } + ) + } + } +} \ No newline at end of file diff --git a/tests/main.nf.test.snap b/tests/main.nf.test.snap new file mode 100644 index 000000000..03c43cab5 --- /dev/null +++ b/tests/main.nf.test.snap @@ -0,0 +1,12 @@ +{ + "single_end_software_versions": { + "content": [ + "{BBMAP_BBSPLIT={bbmap=39.01}, BEDTOOLS_GENOMECOV={bedtools=2.30.0}, CAT_ADDITIONAL_FASTA={python=3.9.5}, CAT_FASTQ={cat=8.30}, CUSTOM_DUMPSOFTWAREVERSIONS={python=3.11.7, yaml=5.4.1}, CUSTOM_GETCHROMSIZES={getchromsizes=1.16.1}, DESEQ2_QC_PSEUDO={bioconductor-deseq2=1.28.0, r-base=4.0.3}, DESEQ2_QC_STAR_SALMON={bioconductor-deseq2=1.28.0, r-base=4.0.3}, DUPRADAR={bioconductor-dupradar=1.28.0, r-base=4.2.1}, FASTQC={fastqc=0.12.1}, FQ_SUBSAMPLE={fq=0.9.1 (2022-02-22)}, GTF2BED={perl=5.26.2}, GTF_FILTER={python=3.9.5}, GUNZIP_ADDITIONAL_FASTA={gunzip=1.10}, GUNZIP_GTF={gunzip=1.10}, MULTIQC_CUSTOM_BIOTYPE={python=3.9.5}, PICARD_MARKDUPLICATES={picard=3.0.0}, QUALIMAP_RNASEQ={qualimap=2.3}, RSEQC_BAMSTAT={rseqc=5.0.2}, RSEQC_INFEREXPERIMENT={rseqc=5.0.2}, RSEQC_INNERDISTANCE={rseqc=5.0.2}, RSEQC_JUNCTIONANNOTATION={rseqc=5.0.2}, RSEQC_JUNCTIONSATURATION={rseqc=5.0.2}, RSEQC_READDISTRIBUTION={rseqc=5.0.2}, RSEQC_READDUPLICATION={rseqc=5.0.2}, SALMON_QUANT={salmon=1.10.1}, SAMTOOLS_FLAGSTAT={samtools=1.17}, SAMTOOLS_IDXSTATS={samtools=1.17}, SAMTOOLS_INDEX={samtools=1.17}, SAMTOOLS_SORT={samtools=1.17}, SAMTOOLS_STATS={samtools=1.17}, SE_GENE={bioconductor-summarizedexperiment=1.24.0, r-base=4.1.1}, STAR_ALIGN={gawk=5.1.0, samtools=1.16.1, star=2.7.9a}, STAR_GENOMEGENERATE={gawk=5.1.0, samtools=1.16.1, star=2.7.9a}, STRINGTIE_STRINGTIE={stringtie=2.2.1}, SUBREAD_FEATURECOUNTS={subread=2.0.1}, TRIMGALORE={cutadapt=3.4, trimgalore=0.6.7}, TX2GENE={python=3.9.5}, TXIMPORT={bioconductor-tximeta=1.12.0, r-base=4.1.1}, UCSC_BEDCLIP={ucsc=377}, UCSC_BEDGRAPHTOBIGWIG={ucsc=445}, UNTAR_SALMON_INDEX={untar=1.30}, Workflow={nf-core/rnaseq=3.15.0dev}}" + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-09T16:13:24.846838" + } +} \ No newline at end of file diff --git a/tests/nextflow.config b/tests/nextflow.config new file mode 100644 index 000000000..044ee1fe2 --- /dev/null +++ b/tests/nextflow.config @@ -0,0 +1,33 @@ +/* +======================================================================================== + Nextflow config file for running tests +======================================================================================== +*/ + +params { + // Base directory for nf-core/modules test data + modules_testdata_base_path = 's3://ngi-igenomes/testdata/nf-core/modules/' + + // Base directory for nf-core/rnaseq test data + pipelines_testdata_base_path = 's3://ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15' +} + +// Impose sensible resource limits for testing +process { + withName: '.*' { + cpus = 2 + memory = 3.GB + time = 2.h + } +} + +// Impose same minimum Nextflow version as the pipeline for testing +manifest { + nextflowVersion = '!>=23.04.0' +} + +// Disable all Nextflow reporting options +timeline { enabled = false } +report { enabled = false } +trace { enabled = false } +dag { enabled = false } \ No newline at end of file From 7d44ddba2e42febd07b0b22883948db3e823cc90 Mon Sep 17 00:00:00 2001 From: Adam Talbot <12817534+adamrtalbot@users.noreply.github.com> Date: Fri, 23 Feb 2024 10:45:13 +0000 Subject: [PATCH 087/634] linting --- .gitignore | 2 +- .nf-core.yml | 1 + tests/lib/UTILS.groovy | 2 +- tests/main.nf.test | 4 ++-- tests/nextflow.config | 2 +- 5 files changed, 6 insertions(+), 5 deletions(-) diff --git a/.gitignore b/.gitignore index ccae37a8f..ef809d7c3 100644 --- a/.gitignore +++ b/.gitignore @@ -9,4 +9,4 @@ results/ test.xml testing* testing/ -work/ \ No newline at end of file +work/ diff --git a/.nf-core.yml b/.nf-core.yml index a2a0e4592..4a8f73fda 100644 --- a/.nf-core.yml +++ b/.nf-core.yml @@ -3,6 +3,7 @@ lint: files_unchanged: - assets/email_template.html - assets/email_template.txt + - .gitignore files_exist: - conf/modules.config nextflow_config: diff --git a/tests/lib/UTILS.groovy b/tests/lib/UTILS.groovy index a76b18a78..311403cc4 100644 --- a/tests/lib/UTILS.groovy +++ b/tests/lib/UTILS.groovy @@ -8,4 +8,4 @@ class UTILS { } return softwareVersions } -} \ No newline at end of file +} diff --git a/tests/main.nf.test b/tests/main.nf.test index fab3a932e..f451055ee 100644 --- a/tests/main.nf.test +++ b/tests/main.nf.test @@ -17,7 +17,7 @@ nextflow_pipeline { then { assert workflow.success - assertAll( + assertAll( { assert workflow.success }, { assert snapshot(UTILS.removeNextflowVersion("$outputDir")).match("single_end_software_versions") }, { assert snapshot(path("$outputDir/bbsplit/").list(), @@ -36,4 +36,4 @@ nextflow_pipeline { ) } } -} \ No newline at end of file +} diff --git a/tests/nextflow.config b/tests/nextflow.config index 044ee1fe2..551d106cb 100644 --- a/tests/nextflow.config +++ b/tests/nextflow.config @@ -30,4 +30,4 @@ manifest { timeline { enabled = false } report { enabled = false } trace { enabled = false } -dag { enabled = false } \ No newline at end of file +dag { enabled = false } From e05cc5548f156a78a00ee17d2ea7a3cbd0de2a71 Mon Sep 17 00:00:00 2001 From: Adam Talbot <12817534+adamrtalbot@users.noreply.github.com> Date: Fri, 23 Feb 2024 10:49:16 +0000 Subject: [PATCH 088/634] CHANGELOG --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index f17789510..25ca183d9 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 - [PR #1213](https://github.com/nf-core/rnaseq/pull/1213) - Pass transcriptome fasta through to samtools stats - [PR #1216](https://github.com/nf-core/rnaseq/pull/1216) - Delocalise catadditionalfasta ([#1162](https://github.com/nf-core/rnaseq/issues/1162)) - [PR #1218](https://github.com/nf-core/rnaseq/pull/1218) - Template update for nf-core/tools v2.13 +- [PR #1220](https://github.com/nf-core/rnaseq/pull/1220) - Initialise nf-test and add pipeline level test ### Parameters From 7ce0b4cad00719f11ea1f827b0bd5cda6afdefde Mon Sep 17 00:00:00 2001 From: Adam Talbot <12817534+adamrtalbot@users.noreply.github.com> Date: Fri, 23 Feb 2024 10:40:59 +0000 Subject: [PATCH 089/634] Add ci-cd workflow for nf-test to existing nf-core testing framework --- .github/python/find_changed_files.py | 152 ++++++++++++++++++++++ .github/workflows/ci.yml | 184 +++++++++++++++++++++++---- 2 files changed, 310 insertions(+), 26 deletions(-) create mode 100644 .github/python/find_changed_files.py diff --git a/.github/python/find_changed_files.py b/.github/python/find_changed_files.py new file mode 100644 index 000000000..6dc734498 --- /dev/null +++ b/.github/python/find_changed_files.py @@ -0,0 +1,152 @@ +#!/usr/bin/env python + +## This script is used to generate scan *.nf.test files for function/process/workflow name and return as a JSON list +# It is functionally similar to nf-test list but fills a gap until feature https://github.com/askimed/nf-test/issues/196 is added + +import argparse +import json +import logging +import re + +from itertools import chain +from pathlib import Path + + +def parse_args() -> argparse.Namespace: + """ + Parse command line arguments and return an ArgumentParser object. + + Returns: + argparse.ArgumentParser: The ArgumentParser object with the parsed arguments. + """ + parser = argparse.ArgumentParser( + description="Scan *.nf.test files for function/process/workflow name and return as a JSON list" + ) + parser.add_argument( + "-p", + "--paths", + nargs="+", + default=["."], + help="List of directories or files to scan", + ) + parser.add_argument( + "-l", + "--log-level", + choices=["DEBUG", "INFO", "WARNING", "ERROR"], + default="INFO", + help="Logging level", + ) + parser.add_argument( + "-t", + "--types", + nargs="+", + choices=["function", "process", "workflow", "pipeline"], + default=["function", "process", "workflow", "pipeline"], + help="Types of tests to include.", + ) + return parser.parse_args() + + +def find_files(paths: list[str]) -> list[Path]: + """ + Find all files matching pattern *.nf.test recursively from a list of paths. + + Args: + paths (list): List of directories or files to scan. + + Returns: + list: List of files matching the pattern *.nf.test. + """ + # this is a bit clunky + result = [] + for path in paths: + path_obj = Path(path) + # If Path is the exact nf-test file add to list: + if path_obj.match("*.nf.test"): + result.append(path_obj) + # Else recursively search for nf-test files: + else: + for file in path_obj.rglob("*.nf.test"): + result.append(file) + return result + + +def process_files(files: list[Path]) -> list[str]: + """ + Process the files and return lines that begin with 'workflow', 'process', or 'function' and have a single string afterwards. + + Args: + files (list): List of files to process. + + Returns: + list: List of lines that match the criteria. + """ + result = [] + for file in files: + with open(file, "r") as f: + is_pipeline_test = True + lines = f.readlines() + for line in lines: + line = line.strip() + if line.startswith(("workflow", "process", "function")): + words = line.split() + if len(words) == 2 and re.match(r'^".*"$', words[1]): + result.append(line) + is_pipeline_test = False + + # If no results included workflow, process or function + # Add a dummy result to fill the 'pipeline' category + if is_pipeline_test: + result.append("pipeline 'PIPELINE'") + + return result + + +def generate( + lines: list[str], types: list[str] = ["function", "process", "workflow", "pipeline"] +) -> dict[str, list[str]]: + """ + Generate a dictionary of function, process and workflow lists from the lines. + + Args: + lines (list): List of lines to process. + types (list): List of types to include. + + Returns: + dict: Dictionary with function, process and workflow lists. + """ + result: dict[str, list[str]] = { + "function": [], + "process": [], + "workflow": [], + "pipeline": [], + } + for line in lines: + words = line.split() + if len(words) == 2: + keyword = words[0] + name = words[1].strip("'\"") # Strip both single and double quotes + if keyword in types: + result[keyword].append(name) + return result + + +if __name__ == "__main__": + + # Utility stuff + args = parse_args() + logging.basicConfig(level=args.log_level) + + # Parse nf-test files for targets of tests + files = find_files(args.paths) + lines = process_files(files) + result = generate(lines) + + # Get only relevant results (specified by -t) + # Unique using a set + target_results = list( + {item for sublist in map(result.get, args.types) for item in sublist} + ) + + # Print to stdout + print(json.dumps(target_results)) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index ed89ec078..b12e6e99f 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -10,38 +10,16 @@ on: env: NXF_ANSI_LOG: false + NFT_VER: "0.8.4" + NFT_WORKDIR: "~" + NFT_DIFF: "pdiff" + NFT_DIFF_ARGS: "--line-numbers --expand-tabs=2" concurrency: group: "${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}" cancel-in-progress: true jobs: - test: - name: Run pipeline with test data - # 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-core/rnaseq') }}" - runs-on: ubuntu-latest - strategy: - matrix: - NXF_VER: - - "23.04.0" - - "latest-everything" - steps: - - name: Check out pipeline code - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4 - - - name: Install Nextflow - uses: nf-core/setup-nextflow@b9f764e8ba5c76b712ace14ecbfcef0e40ae2dd8 # v1 - with: - version: "${{ matrix.NXF_VER }}" - - - name: Disk space cleanup - uses: jlumbroso/free-disk-space@54081f138730dfa15788a46383842cd2f914a1be # v1.3.1 - - - name: Run pipeline with test data - run: | - nextflow run ${GITHUB_WORKSPACE} -profile test,docker --outdir ./results - star_salmon: name: Test STAR Salmon with workflow parameters if: ${{ (github.event_name != 'push' || (github.event_name == 'push' && github.repository == 'nf-core/rnaseq')) && !contains(github.event.head_commit.message, '[ci fast]') }} @@ -144,3 +122,157 @@ jobs: - name: Run pipeline with Salmon or Kallisto and various parameters run: | nextflow run ${GITHUB_WORKSPACE} -profile test,docker ${{ matrix.parameters }} --outdir ./results + + nf-test-changes: + name: Check for changes + runs-on: ubuntu-latest + outputs: + changes: ${{ steps.changed_files.outputs.any_modified }} + tags: ${{ steps.list.outputs.tags }} + steps: + - uses: actions/setup-python@v4 + with: + python-version: "3.11" + architecture: "x64" + + - uses: actions/checkout@v3 + with: + fetch-depth: 0 + + - uses: tj-actions/changed-files@v42 + id: changed_files + with: + dir_names: "true" + output_renamed_files_as_deleted_and_added: "true" + # Define list of additional rules for testing paths + # Mostly, we define additional 'pipeline' or 'all' tests here + files_yaml: | + ".": + - .github/workflows/** + - nf-test.config + - nextflow.config + tests: + - assets/* + - bin/* + - conf/* + - main.nf + - nextflow_schema.json + + files_ignore: | + .git* + .gitpod.yml + .prettierignore + .prettierrc.yml + **.md + **.png + modules.json + pyproject.toml + tower.yml + + - name: debug + run: | + echo ${{ steps.changed_files.outputs.any_modified }} + echo ${{ steps.changed_files.outputs.all_changed_files }} + echo ${{ steps.changed_files.outputs.changed_keys }} + + - name: nf-test list tags + id: list + if: ${{ steps.changed_files.outputs.any_modified }} + run: | + echo tags=$(python \ + .github/python/find_changed_files.py \ + -t pipeline workflow process \ + -p ${{ steps.changed_files.outputs.all_changed_files }} ${{ steps.changed_files.outputs.changed_keys }} \ + ) >> $GITHUB_OUTPUT + + - name: debug2 + run: | + echo ${{ steps.list.outputs.tags }} + + nf-test: + name: ${{ matrix.tags }} ${{ matrix.profile }} NF-${{ matrix.NXF_VER }} + needs: [nf-test-changes] + if: needs.nf-test-changes.outputs.changes + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + NXF_VER: + - "latest-everything" + - "23.04" + tags: ["${{ fromJson(needs.nf-test-changes.outputs.tags) }}"] + profile: + - "docker" + + steps: + - name: Check out pipeline code + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4 + + - name: Install Nextflow + uses: nf-core/setup-nextflow@b9f764e8ba5c76b712ace14ecbfcef0e40ae2dd8 # v1 + with: + version: "${{ matrix.NXF_VER }}" + + - uses: actions/setup-python@v4 + with: + python-version: "3.11" + architecture: "x64" + + - name: Install pdiff to see diff between nf-test snapshots + run: | + python -m pip install --upgrade pip + pip install pdiff + + - name: Cache nf-test installation + id: cache-software + uses: actions/cache@v3 + with: + path: | + /usr/local/bin/nf-test + /home/runner/.nf-test/nf-test.jar + key: ${{ runner.os }}-${{ env.NFT_VER }}-nftest + + - name: Install nf-test + if: steps.cache-software.outputs.cache-hit != 'true' + run: | + wget -qO- https://code.askimed.com/install/nf-test | bash + sudo mv nf-test /usr/local/bin/ + + - name: Run nf-test + run: | + nf-test test --verbose --tag ${{ matrix.tags }} --profile "+${{ matrix.profile }}" --junitxml=test.xml --tap=test.tap + + - uses: pcolby/tap-summary@v1 + with: + path: >- + test.tap + + - name: Output log on failure + if: failure() + run: | + sudo apt install bat > /dev/null + batcat --decorations=always --color=always ${{ github.workspace }}/.nf-test/tests/*/meta/nextflow.log + + - name: Publish Test Report + uses: mikepenz/action-junit-report@v3 + if: always() # always run even if the previous step fails + with: + report_paths: test.xml + + confirm-pass: + runs-on: ubuntu-latest + needs: [nf-test, star_salmon, star_rsem, hisat2, pseudo] + if: always() + steps: + - name: All tests ok + if: ${{ !contains(needs.*.result, 'failure') }} + run: exit 0 + - name: One or more tests failed + if: ${{ contains(needs.*.result, 'failure') }} + run: exit 1 + + - name: debug-print + if: always() + run: | + echo "toJSON(needs) = ${{ toJSON(needs) }}" + echo "toJSON(needs.*.result) = ${{ toJSON(needs.*.result) }}" From 5684b7fbe67daecb5e0ff91d27bb310a6ccc5395 Mon Sep 17 00:00:00 2001 From: Adam Talbot <12817534+adamrtalbot@users.noreply.github.com> Date: Fri, 23 Feb 2024 11:04:01 +0000 Subject: [PATCH 090/634] Tidy up CI workflow a bit --- .github/workflows/ci.yml | 51 +++++++++++++++++----------------------- 1 file changed, 22 insertions(+), 29 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b12e6e99f..3541319b0 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -40,14 +40,13 @@ jobs: - "--save_align_intermeds --save_reference" - "--featurecounts_group_type false" - "--trimmer fastp" + steps: - name: Check out pipeline code - uses: actions/checkout@v2 + uses: actions/checkout@v4 - - name: Install Nextflow - run: | - wget -qO- get.nextflow.io | bash - sudo mv nextflow /usr/local/bin/ + - name: Setup Nextflow + uses: nf-core/setup-nextflow@v1.5 - name: Run pipeline with STAR and various parameters run: | @@ -64,12 +63,10 @@ jobs: - "--rsem_index false" steps: - name: Check out pipeline code - uses: actions/checkout@v2 + uses: actions/checkout@v4 - - name: Install Nextflow - run: | - wget -qO- get.nextflow.io | bash - sudo mv nextflow /usr/local/bin/ + - name: Setup Nextflow + uses: nf-core/setup-nextflow@v1.5 - name: Run pipeline with RSEM STAR and various parameters run: | @@ -86,12 +83,10 @@ jobs: - "--hisat2_index false" steps: - name: Check out pipeline code - uses: actions/checkout@v2 + uses: actions/checkout@v4 - - name: Install Nextflow - run: | - wget -qO- get.nextflow.io | bash - sudo mv nextflow /usr/local/bin/ + - name: Setup Nextflow + uses: nf-core/setup-nextflow@v1.5 - name: Run pipeline with HISAT2 and various parameters run: | @@ -112,12 +107,10 @@ jobs: - "--pseudo_aligner kallisto --kallisto_index false --transcript_fasta false" steps: - name: Check out pipeline code - uses: actions/checkout@v2 + uses: actions/checkout@v4 - - name: Install Nextflow - run: | - wget -qO- get.nextflow.io | bash - sudo mv nextflow /usr/local/bin/ + - name: Setup Nextflow + uses: nf-core/setup-nextflow@v1.5 - name: Run pipeline with Salmon or Kallisto and various parameters run: | @@ -135,7 +128,7 @@ jobs: python-version: "3.11" architecture: "x64" - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 with: fetch-depth: 0 @@ -169,7 +162,7 @@ jobs: pyproject.toml tower.yml - - name: debug + - name: print-changed-dirs run: | echo ${{ steps.changed_files.outputs.any_modified }} echo ${{ steps.changed_files.outputs.all_changed_files }} @@ -185,11 +178,11 @@ jobs: -p ${{ steps.changed_files.outputs.all_changed_files }} ${{ steps.changed_files.outputs.changed_keys }} \ ) >> $GITHUB_OUTPUT - - name: debug2 + - name: print-test-tags run: | echo ${{ steps.list.outputs.tags }} - nf-test: + test: name: ${{ matrix.tags }} ${{ matrix.profile }} NF-${{ matrix.NXF_VER }} needs: [nf-test-changes] if: needs.nf-test-changes.outputs.changes @@ -199,17 +192,17 @@ jobs: matrix: NXF_VER: - "latest-everything" - - "23.04" + - "23.04.0" tags: ["${{ fromJson(needs.nf-test-changes.outputs.tags) }}"] profile: - "docker" steps: - name: Check out pipeline code - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4 + uses: actions/checkout@v4 - - name: Install Nextflow - uses: nf-core/setup-nextflow@b9f764e8ba5c76b712ace14ecbfcef0e40ae2dd8 # v1 + - name: Setup Nextflow + uses: nf-core/setup-nextflow@v1.5 with: version: "${{ matrix.NXF_VER }}" @@ -261,7 +254,7 @@ jobs: confirm-pass: runs-on: ubuntu-latest - needs: [nf-test, star_salmon, star_rsem, hisat2, pseudo] + needs: [test, star_salmon, star_rsem, hisat2, pseudo] if: always() steps: - name: All tests ok From 06732d4ec99549bba45480212e4b943a4c50bedc Mon Sep 17 00:00:00 2001 From: Adam Talbot <12817534+adamrtalbot@users.noreply.github.com> Date: Fri, 23 Feb 2024 11:05:44 +0000 Subject: [PATCH 091/634] Increase minimum minor Nextflow version --- .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 3541319b0..01534e85e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -192,7 +192,7 @@ jobs: matrix: NXF_VER: - "latest-everything" - - "23.04.0" + - "23.04.5" tags: ["${{ fromJson(needs.nf-test-changes.outputs.tags) }}"] profile: - "docker" From bdc3295fe03a3d0ac33415d86adef8e6657eb93b Mon Sep 17 00:00:00 2001 From: Adam Talbot <12817534+adamrtalbot@users.noreply.github.com> Date: Fri, 23 Feb 2024 11:16:12 +0000 Subject: [PATCH 092/634] Let tests fail before completing --- .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 01534e85e..a27fc9618 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -17,7 +17,7 @@ env: concurrency: group: "${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}" - cancel-in-progress: true + cancel-in-progress: false # TODO: Decide on strategy for #1221 jobs: star_salmon: From 38767ec52be3cbfb0383af1f9d416ee7a18369bd Mon Sep 17 00:00:00 2001 From: Adam Talbot <12817534+adamrtalbot@users.noreply.github.com> Date: Fri, 23 Feb 2024 11:16:30 +0000 Subject: [PATCH 093/634] Revert to minimum required Nextflow version --- .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 a27fc9618..11ad42076 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -192,7 +192,7 @@ jobs: matrix: NXF_VER: - "latest-everything" - - "23.04.5" + - "23.04.0" tags: ["${{ fromJson(needs.nf-test-changes.outputs.tags) }}"] profile: - "docker" From 4f966b343476dd82da0ac70578a81e66b164da7a Mon Sep 17 00:00:00 2001 From: Adam Talbot <12817534+adamrtalbot@users.noreply.github.com> Date: Fri, 23 Feb 2024 11:18:25 +0000 Subject: [PATCH 094/634] Remove latest version to make tests more efficient --- .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 11ad42076..01d0facbf 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -191,7 +191,7 @@ jobs: fail-fast: false matrix: NXF_VER: - - "latest-everything" + # - "latest-everything" - "23.04.0" tags: ["${{ fromJson(needs.nf-test-changes.outputs.tags) }}"] profile: From 46a8cb036bef61adbc84a5fb894ed5e9b6ca1f8a Mon Sep 17 00:00:00 2001 From: maxulysse Date: Mon, 26 Feb 2024 09:48:25 +0100 Subject: [PATCH 095/634] add temporary exclusion for tests --- .github/workflows/ci.yml | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 01d0facbf..2f84be97c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -196,6 +196,28 @@ jobs: tags: ["${{ fromJson(needs.nf-test-changes.outputs.tags) }}"] profile: - "docker" + exclude: + - tags: "CUSTOM_CATADDITIONALFASTA" + - tags: "CUSTOM_TX2GENE" + - tags: "FASTQ_SUBSAMPLE_FQ_SALMON" + - tags: "GFFREAD" + - tags: "HISAT2_BUILD" + - tags: "KALLISTO_INDEX" + - tags: "PIPELINE" + - tags: "RSEQC_INFEREXPERIMENT" + - tags: "RSEQC_INNERDISTANCE" + - tags: "RSEQC_JUNCTIONANNOTATION" + - tags: "RSEQC_JUNCTIONSATURATION" + - tags: "RSEQC_READDUPLICATION" + - tags: "SALMON_QUANT" + - tags: "SUBREAD_FEATURECOUNTS" + - tags: "STAR_ALIGN" + - tags: "STAR_GENOMEGENERATE" + - tags: "STRINGTIE_STRINGTIE" + - tags: "SUMMARIZEDEXPERIMENT_SUMMARIZEDEXPERIMENT" + - tags: "TXIMETA_TXIMPORT" + - tags: "UMITOOLS_PREPAREFORRSEM" + - tags: "UNTAR" steps: - name: Check out pipeline code From c1e87684226e99c64e72ade461aa6c9007ab2c1c Mon Sep 17 00:00:00 2001 From: maxulysse Date: Mon, 26 Feb 2024 13:21:56 +0100 Subject: [PATCH 096/634] no need for prettier on these folder --- .prettierignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.prettierignore b/.prettierignore index 437d763d0..57a974e9a 100644 --- a/.prettierignore +++ b/.prettierignore @@ -10,3 +10,5 @@ testing/ testing* *.pyc bin/ +modules/nf-core/ +subworkflows/nf-core/ From c9ee82f3765d2c65f0b25f4035d7430c3bbf142b Mon Sep 17 00:00:00 2001 From: maxulysse Date: Mon, 26 Feb 2024 13:22:47 +0100 Subject: [PATCH 097/634] fix SUMMARIZEDEXPERIMENT_SUMMARIZEDEXPERIMENT --- .github/workflows/ci.yml | 1 - modules.json | 2 +- .../summarizedexperiment/tests/main.nf.test | 8 ++++---- 3 files changed, 5 insertions(+), 6 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 2f84be97c..0174477f0 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -214,7 +214,6 @@ jobs: - tags: "STAR_ALIGN" - tags: "STAR_GENOMEGENERATE" - tags: "STRINGTIE_STRINGTIE" - - tags: "SUMMARIZEDEXPERIMENT_SUMMARIZEDEXPERIMENT" - tags: "TXIMETA_TXIMPORT" - tags: "UMITOOLS_PREPAREFORRSEM" - tags: "UNTAR" diff --git a/modules.json b/modules.json index e88d66486..ab10a3344 100644 --- a/modules.json +++ b/modules.json @@ -216,7 +216,7 @@ }, "summarizedexperiment/summarizedexperiment": { "branch": "master", - "git_sha": "376bc3de6c2b763f21d55a7f5d8712d0efbf1b3a", + "git_sha": "874dace043f1400fddca70dc9786fa4e82e6f5ac", "installed_by": ["modules"] }, "trimgalore": { diff --git a/modules/nf-core/summarizedexperiment/summarizedexperiment/tests/main.nf.test b/modules/nf-core/summarizedexperiment/summarizedexperiment/tests/main.nf.test index d74f5aa36..b51a76cda 100644 --- a/modules/nf-core/summarizedexperiment/summarizedexperiment/tests/main.nf.test +++ b/modules/nf-core/summarizedexperiment/summarizedexperiment/tests/main.nf.test @@ -21,7 +21,7 @@ nextflow_process { """ input[0] = [ [ id:'test'], // meta map - file(params.test_data['saccharomyces_cerevisiae']['genome']['kallisto_results'], checkIfExists: true) + file(params.modules_testdata_base_path + "genomics/eukaryotes/saccharomyces_cerevisiae/kallisto_results.tar.gz", checkIfExists: true) ] """ } @@ -32,7 +32,7 @@ nextflow_process { """ input[0] = [ [ id:'test'], // meta map - file(params.test_data['saccharomyces_cerevisiae']['genome']['genome_gfp_gtf'], checkIfExists: true) + file(params.modules_testdata_base_path + "genomics/eukaryotes/saccharomyces_cerevisiae/genome_gfp.gtf", checkIfExists: true) ] input[1] = UNTAR.out.untar.map { meta, dir -> [ meta, dir.listFiles().collect() ] } input[2] = 'kallisto' @@ -64,7 +64,7 @@ nextflow_process { input[1] = CUSTOM_TX2GENE.out.tx2gene input[2] = [ [ id:'gene'], // meta map - file(params.test_data['saccharomyces_cerevisiae']['genome']['samplesheet'], checkIfExists: true) + file(params.modules_testdata_base_path + "genomics/eukaryotes/saccharomyces_cerevisiae/samplesheet.csv", checkIfExists: true) ] """ } @@ -172,7 +172,7 @@ nextflow_process { input[1] = CUSTOM_TX2GENE.out.tx2gene input[2] = [ [ id:'gene'], // meta map - file(params.test_data['saccharomyces_cerevisiae']['genome']['samplesheet'], checkIfExists: true) + file(params.modules_testdata_base_path + "genomics/eukaryotes/saccharomyces_cerevisiae/samplesheet.csv", checkIfExists: true) ] """ } From f7d894c94585e822e27ce12f44883f3349c34097 Mon Sep 17 00:00:00 2001 From: maxulysse Date: Mon, 26 Feb 2024 13:31:53 +0100 Subject: [PATCH 098/634] temporarily disable old tests --- .github/workflows/ci.yml | 190 +++++++++++++++++++-------------------- 1 file changed, 95 insertions(+), 95 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 0174477f0..a73b07f85 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -20,101 +20,101 @@ concurrency: cancel-in-progress: false # TODO: Decide on strategy for #1221 jobs: - star_salmon: - name: Test STAR Salmon with workflow parameters - if: ${{ (github.event_name != 'push' || (github.event_name == 'push' && github.repository == 'nf-core/rnaseq')) && !contains(github.event.head_commit.message, '[ci fast]') }} - runs-on: ubuntu-latest - strategy: - matrix: - parameters: - - "--skip_qc" - - "--skip_trimming" - - "--gtf false" - - "--star_index false" - - "--transcript_fasta false" - - "--min_mapped_reads 90" - - "--with_umi" - - "--with_umi --skip_trimming" - - "--remove_ribo_rna --skip_qualimap" - - "--bam_csi_index" - - "--save_align_intermeds --save_reference" - - "--featurecounts_group_type false" - - "--trimmer fastp" - - steps: - - name: Check out pipeline code - uses: actions/checkout@v4 - - - name: Setup Nextflow - uses: nf-core/setup-nextflow@v1.5 - - - name: Run pipeline with STAR and various parameters - run: | - nextflow run ${GITHUB_WORKSPACE} -profile test,docker --aligner star_salmon ${{ matrix.parameters }} --outdir ./results - - star_rsem: - name: Test STAR RSEM with workflow parameters - if: ${{ (github.event_name != 'push' || (github.event_name == 'push' && github.repository == 'nf-core/rnaseq')) && !contains(github.event.head_commit.message, '[ci fast]') }} - runs-on: ubuntu-latest - strategy: - matrix: - parameters: - - "--skip_qc" - - "--rsem_index false" - steps: - - name: Check out pipeline code - uses: actions/checkout@v4 - - - name: Setup Nextflow - uses: nf-core/setup-nextflow@v1.5 - - - name: Run pipeline with RSEM STAR and various parameters - run: | - nextflow run ${GITHUB_WORKSPACE} -profile test,docker --aligner star_rsem ${{ matrix.parameters }} --outdir ./results - - hisat2: - name: Test HISAT2 with workflow parameters - if: ${{ (github.event_name != 'push' || (github.event_name == 'push' && github.repository == 'nf-core/rnaseq')) && !contains(github.event.head_commit.message, '[ci fast]') }} - runs-on: ubuntu-latest - strategy: - matrix: - parameters: - - "--skip_qc" - - "--hisat2_index false" - steps: - - name: Check out pipeline code - uses: actions/checkout@v4 - - - name: Setup Nextflow - uses: nf-core/setup-nextflow@v1.5 - - - name: Run pipeline with HISAT2 and various parameters - run: | - nextflow run ${GITHUB_WORKSPACE} -profile test,docker --aligner hisat2 ${{ matrix.parameters }} --outdir ./results - - pseudo: - name: Test Pseudoaligners with workflow parameters - if: ${{ (github.event_name != 'push' || (github.event_name == 'push' && github.repository == 'nf-core/rnaseq')) && !contains(github.event.head_commit.message, '[ci fast]') }} - runs-on: ubuntu-latest - strategy: - matrix: - parameters: - - "--pseudo_aligner salmon --skip_qc" - - "--pseudo_aligner salmon --skip_alignment --skip_pseudo_alignment" - - "--pseudo_aligner salmon --salmon_index false --transcript_fasta false" - - "--pseudo_aligner kallisto --skip_qc" - - "--pseudo_aligner kallisto --skip_alignment --skip_pseudo_alignment" - - "--pseudo_aligner kallisto --kallisto_index false --transcript_fasta false" - steps: - - name: Check out pipeline code - uses: actions/checkout@v4 - - - name: Setup Nextflow - uses: nf-core/setup-nextflow@v1.5 - - - name: Run pipeline with Salmon or Kallisto and various parameters - run: | - nextflow run ${GITHUB_WORKSPACE} -profile test,docker ${{ matrix.parameters }} --outdir ./results + # star_salmon: + # name: Test STAR Salmon with workflow parameters + # if: ${{ (github.event_name != 'push' || (github.event_name == 'push' && github.repository == 'nf-core/rnaseq')) && !contains(github.event.head_commit.message, '[ci fast]') }} + # runs-on: ubuntu-latest + # strategy: + # matrix: + # parameters: + # - "--skip_qc" + # - "--skip_trimming" + # - "--gtf false" + # - "--star_index false" + # - "--transcript_fasta false" + # - "--min_mapped_reads 90" + # - "--with_umi" + # - "--with_umi --skip_trimming" + # - "--remove_ribo_rna --skip_qualimap" + # - "--bam_csi_index" + # - "--save_align_intermeds --save_reference" + # - "--featurecounts_group_type false" + # - "--trimmer fastp" + + # steps: + # - name: Check out pipeline code + # uses: actions/checkout@v4 + + # - name: Setup Nextflow + # uses: nf-core/setup-nextflow@v1.5 + + # - name: Run pipeline with STAR and various parameters + # run: | + # nextflow run ${GITHUB_WORKSPACE} -profile test,docker --aligner star_salmon ${{ matrix.parameters }} --outdir ./results + + # star_rsem: + # name: Test STAR RSEM with workflow parameters + # if: ${{ (github.event_name != 'push' || (github.event_name == 'push' && github.repository == 'nf-core/rnaseq')) && !contains(github.event.head_commit.message, '[ci fast]') }} + # runs-on: ubuntu-latest + # strategy: + # matrix: + # parameters: + # - "--skip_qc" + # - "--rsem_index false" + # steps: + # - name: Check out pipeline code + # uses: actions/checkout@v4 + + # - name: Setup Nextflow + # uses: nf-core/setup-nextflow@v1.5 + + # - name: Run pipeline with RSEM STAR and various parameters + # run: | + # nextflow run ${GITHUB_WORKSPACE} -profile test,docker --aligner star_rsem ${{ matrix.parameters }} --outdir ./results + + # hisat2: + # name: Test HISAT2 with workflow parameters + # if: ${{ (github.event_name != 'push' || (github.event_name == 'push' && github.repository == 'nf-core/rnaseq')) && !contains(github.event.head_commit.message, '[ci fast]') }} + # runs-on: ubuntu-latest + # strategy: + # matrix: + # parameters: + # - "--skip_qc" + # - "--hisat2_index false" + # steps: + # - name: Check out pipeline code + # uses: actions/checkout@v4 + + # - name: Setup Nextflow + # uses: nf-core/setup-nextflow@v1.5 + + # - name: Run pipeline with HISAT2 and various parameters + # run: | + # nextflow run ${GITHUB_WORKSPACE} -profile test,docker --aligner hisat2 ${{ matrix.parameters }} --outdir ./results + + # pseudo: + # name: Test Pseudoaligners with workflow parameters + # if: ${{ (github.event_name != 'push' || (github.event_name == 'push' && github.repository == 'nf-core/rnaseq')) && !contains(github.event.head_commit.message, '[ci fast]') }} + # runs-on: ubuntu-latest + # strategy: + # matrix: + # parameters: + # - "--pseudo_aligner salmon --skip_qc" + # - "--pseudo_aligner salmon --skip_alignment --skip_pseudo_alignment" + # - "--pseudo_aligner salmon --salmon_index false --transcript_fasta false" + # - "--pseudo_aligner kallisto --skip_qc" + # - "--pseudo_aligner kallisto --skip_alignment --skip_pseudo_alignment" + # - "--pseudo_aligner kallisto --kallisto_index false --transcript_fasta false" + # steps: + # - name: Check out pipeline code + # uses: actions/checkout@v4 + + # - name: Setup Nextflow + # uses: nf-core/setup-nextflow@v1.5 + + # - name: Run pipeline with Salmon or Kallisto and various parameters + # run: | + # nextflow run ${GITHUB_WORKSPACE} -profile test,docker ${{ matrix.parameters }} --outdir ./results nf-test-changes: name: Check for changes From 5272e6366010155dce806573abb470d44f84d24f Mon Sep 17 00:00:00 2001 From: maxulysse Date: Mon, 26 Feb 2024 13:40:34 +0100 Subject: [PATCH 099/634] remove vs comment --- .github/workflows/ci.yml | 96 ---------------------------------------- 1 file changed, 96 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a73b07f85..fa4e97ec9 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -20,102 +20,6 @@ concurrency: cancel-in-progress: false # TODO: Decide on strategy for #1221 jobs: - # star_salmon: - # name: Test STAR Salmon with workflow parameters - # if: ${{ (github.event_name != 'push' || (github.event_name == 'push' && github.repository == 'nf-core/rnaseq')) && !contains(github.event.head_commit.message, '[ci fast]') }} - # runs-on: ubuntu-latest - # strategy: - # matrix: - # parameters: - # - "--skip_qc" - # - "--skip_trimming" - # - "--gtf false" - # - "--star_index false" - # - "--transcript_fasta false" - # - "--min_mapped_reads 90" - # - "--with_umi" - # - "--with_umi --skip_trimming" - # - "--remove_ribo_rna --skip_qualimap" - # - "--bam_csi_index" - # - "--save_align_intermeds --save_reference" - # - "--featurecounts_group_type false" - # - "--trimmer fastp" - - # steps: - # - name: Check out pipeline code - # uses: actions/checkout@v4 - - # - name: Setup Nextflow - # uses: nf-core/setup-nextflow@v1.5 - - # - name: Run pipeline with STAR and various parameters - # run: | - # nextflow run ${GITHUB_WORKSPACE} -profile test,docker --aligner star_salmon ${{ matrix.parameters }} --outdir ./results - - # star_rsem: - # name: Test STAR RSEM with workflow parameters - # if: ${{ (github.event_name != 'push' || (github.event_name == 'push' && github.repository == 'nf-core/rnaseq')) && !contains(github.event.head_commit.message, '[ci fast]') }} - # runs-on: ubuntu-latest - # strategy: - # matrix: - # parameters: - # - "--skip_qc" - # - "--rsem_index false" - # steps: - # - name: Check out pipeline code - # uses: actions/checkout@v4 - - # - name: Setup Nextflow - # uses: nf-core/setup-nextflow@v1.5 - - # - name: Run pipeline with RSEM STAR and various parameters - # run: | - # nextflow run ${GITHUB_WORKSPACE} -profile test,docker --aligner star_rsem ${{ matrix.parameters }} --outdir ./results - - # hisat2: - # name: Test HISAT2 with workflow parameters - # if: ${{ (github.event_name != 'push' || (github.event_name == 'push' && github.repository == 'nf-core/rnaseq')) && !contains(github.event.head_commit.message, '[ci fast]') }} - # runs-on: ubuntu-latest - # strategy: - # matrix: - # parameters: - # - "--skip_qc" - # - "--hisat2_index false" - # steps: - # - name: Check out pipeline code - # uses: actions/checkout@v4 - - # - name: Setup Nextflow - # uses: nf-core/setup-nextflow@v1.5 - - # - name: Run pipeline with HISAT2 and various parameters - # run: | - # nextflow run ${GITHUB_WORKSPACE} -profile test,docker --aligner hisat2 ${{ matrix.parameters }} --outdir ./results - - # pseudo: - # name: Test Pseudoaligners with workflow parameters - # if: ${{ (github.event_name != 'push' || (github.event_name == 'push' && github.repository == 'nf-core/rnaseq')) && !contains(github.event.head_commit.message, '[ci fast]') }} - # runs-on: ubuntu-latest - # strategy: - # matrix: - # parameters: - # - "--pseudo_aligner salmon --skip_qc" - # - "--pseudo_aligner salmon --skip_alignment --skip_pseudo_alignment" - # - "--pseudo_aligner salmon --salmon_index false --transcript_fasta false" - # - "--pseudo_aligner kallisto --skip_qc" - # - "--pseudo_aligner kallisto --skip_alignment --skip_pseudo_alignment" - # - "--pseudo_aligner kallisto --kallisto_index false --transcript_fasta false" - # steps: - # - name: Check out pipeline code - # uses: actions/checkout@v4 - - # - name: Setup Nextflow - # uses: nf-core/setup-nextflow@v1.5 - - # - name: Run pipeline with Salmon or Kallisto and various parameters - # run: | - # nextflow run ${GITHUB_WORKSPACE} -profile test,docker ${{ matrix.parameters }} --outdir ./results - nf-test-changes: name: Check for changes runs-on: ubuntu-latest From 95de5e577059118c60c43895197390a45fee9991 Mon Sep 17 00:00:00 2001 From: maxulysse Date: Mon, 26 Feb 2024 13:55:56 +0100 Subject: [PATCH 100/634] update custom/catadditionalfasta subread/featurecounts --- .github/workflows/ci.yml | 100 +++++++++++++++++- modules.json | 4 +- .../catadditionalfasta/tests/main.nf.test | 18 ++-- .../subread/featurecounts/tests/main.nf.test | 9 +- 4 files changed, 114 insertions(+), 17 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index fa4e97ec9..9cc064b42 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -20,6 +20,102 @@ concurrency: cancel-in-progress: false # TODO: Decide on strategy for #1221 jobs: + # star_salmon: + # name: Test STAR Salmon with workflow parameters + # if: ${{ (github.event_name != 'push' || (github.event_name == 'push' && github.repository == 'nf-core/rnaseq')) && !contains(github.event.head_commit.message, '[ci fast]') }} + # runs-on: ubuntu-latest + # strategy: + # matrix: + # parameters: + # - "--skip_qc" + # - "--skip_trimming" + # - "--gtf false" + # - "--star_index false" + # - "--transcript_fasta false" + # - "--min_mapped_reads 90" + # - "--with_umi" + # - "--with_umi --skip_trimming" + # - "--remove_ribo_rna --skip_qualimap" + # - "--bam_csi_index" + # - "--save_align_intermeds --save_reference" + # - "--featurecounts_group_type false" + # - "--trimmer fastp" + + # steps: + # - name: Check out pipeline code + # uses: actions/checkout@v4 + + # - name: Setup Nextflow + # uses: nf-core/setup-nextflow@v1.5 + + # - name: Run pipeline with STAR and various parameters + # run: | + # nextflow run ${GITHUB_WORKSPACE} -profile test,docker --aligner star_salmon ${{ matrix.parameters }} --outdir ./results + + # star_rsem: + # name: Test STAR RSEM with workflow parameters + # if: ${{ (github.event_name != 'push' || (github.event_name == 'push' && github.repository == 'nf-core/rnaseq')) && !contains(github.event.head_commit.message, '[ci fast]') }} + # runs-on: ubuntu-latest + # strategy: + # matrix: + # parameters: + # - "--skip_qc" + # - "--rsem_index false" + # steps: + # - name: Check out pipeline code + # uses: actions/checkout@v4 + + # - name: Setup Nextflow + # uses: nf-core/setup-nextflow@v1.5 + + # - name: Run pipeline with RSEM STAR and various parameters + # run: | + # nextflow run ${GITHUB_WORKSPACE} -profile test,docker --aligner star_rsem ${{ matrix.parameters }} --outdir ./results + + # hisat2: + # name: Test HISAT2 with workflow parameters + # if: ${{ (github.event_name != 'push' || (github.event_name == 'push' && github.repository == 'nf-core/rnaseq')) && !contains(github.event.head_commit.message, '[ci fast]') }} + # runs-on: ubuntu-latest + # strategy: + # matrix: + # parameters: + # - "--skip_qc" + # - "--hisat2_index false" + # steps: + # - name: Check out pipeline code + # uses: actions/checkout@v4 + + # - name: Setup Nextflow + # uses: nf-core/setup-nextflow@v1.5 + + # - name: Run pipeline with HISAT2 and various parameters + # run: | + # nextflow run ${GITHUB_WORKSPACE} -profile test,docker --aligner hisat2 ${{ matrix.parameters }} --outdir ./results + + # pseudo: + # name: Test Pseudoaligners with workflow parameters + # if: ${{ (github.event_name != 'push' || (github.event_name == 'push' && github.repository == 'nf-core/rnaseq')) && !contains(github.event.head_commit.message, '[ci fast]') }} + # runs-on: ubuntu-latest + # strategy: + # matrix: + # parameters: + # - "--pseudo_aligner salmon --skip_qc" + # - "--pseudo_aligner salmon --skip_alignment --skip_pseudo_alignment" + # - "--pseudo_aligner salmon --salmon_index false --transcript_fasta false" + # - "--pseudo_aligner kallisto --skip_qc" + # - "--pseudo_aligner kallisto --skip_alignment --skip_pseudo_alignment" + # - "--pseudo_aligner kallisto --kallisto_index false --transcript_fasta false" + # steps: + # - name: Check out pipeline code + # uses: actions/checkout@v4 + + # - name: Setup Nextflow + # uses: nf-core/setup-nextflow@v1.5 + + # - name: Run pipeline with Salmon or Kallisto and various parameters + # run: | + # nextflow run ${GITHUB_WORKSPACE} -profile test,docker ${{ matrix.parameters }} --outdir ./results + nf-test-changes: name: Check for changes runs-on: ubuntu-latest @@ -101,7 +197,6 @@ jobs: profile: - "docker" exclude: - - tags: "CUSTOM_CATADDITIONALFASTA" - tags: "CUSTOM_TX2GENE" - tags: "FASTQ_SUBSAMPLE_FQ_SALMON" - tags: "GFFREAD" @@ -179,7 +274,8 @@ jobs: confirm-pass: runs-on: ubuntu-latest - needs: [test, star_salmon, star_rsem, hisat2, pseudo] + # needs: [test, star_salmon, star_rsem, hisat2, pseudo] + needs: [test] if: always() steps: - name: All tests ok diff --git a/modules.json b/modules.json index ab10a3344..34f8294e1 100644 --- a/modules.json +++ b/modules.json @@ -17,7 +17,7 @@ }, "custom/catadditionalfasta": { "branch": "master", - "git_sha": "3ee883a0cd247a1d40bff9f2495041d779bf1079", + "git_sha": "ba6ec49354837595649acd84e7a867d59bf11ad0", "installed_by": ["modules"] }, "custom/getchromsizes": { @@ -211,7 +211,7 @@ }, "subread/featurecounts": { "branch": "master", - "git_sha": "f6bba1a67cdbb605f24d7a4e8dd383b0eec45b52", + "git_sha": "e5265c217dcfbff7731c40623aaf07538fdd3e1c", "installed_by": ["modules"] }, "summarizedexperiment/summarizedexperiment": { diff --git a/modules/nf-core/custom/catadditionalfasta/tests/main.nf.test b/modules/nf-core/custom/catadditionalfasta/tests/main.nf.test index 227f1b1d7..7905f231d 100644 --- a/modules/nf-core/custom/catadditionalfasta/tests/main.nf.test +++ b/modules/nf-core/custom/catadditionalfasta/tests/main.nf.test @@ -14,15 +14,15 @@ nextflow_process { when { process { """ - input[0] = [ - [ id:'test', single_end:false ], - file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true), - file(params.test_data['sarscov2']['genome']['genome_gtf'], checkIfExists: true) - ] - input[1] = [ - [ id:'test', single_end:false ], - file(params.test_data['sarscov2']['genome']['transcriptome_fasta'], checkIfExists: true) - ] + input[0] = Channel.of([ + [ id:'test', single_end:false ], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.gtf', checkIfExists: true) + ]) + input[1] = Channel.of([ + [ id:'test', single_end:false ], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/transcriptome.fasta', checkIfExists: true) + ]) input[2] = 'test_biotype' """ } diff --git a/modules/nf-core/subread/featurecounts/tests/main.nf.test b/modules/nf-core/subread/featurecounts/tests/main.nf.test index 6ff221791..00d157d97 100644 --- a/modules/nf-core/subread/featurecounts/tests/main.nf.test +++ b/modules/nf-core/subread/featurecounts/tests/main.nf.test @@ -62,10 +62,11 @@ nextflow_process { when { process { """ - input[0] = [ [ id:'test', single_end:true, strandedness:'unstranded' ], // meta map - file(params.test_data['sarscov2']['illumina']['test_single_end_bam'], checkIfExists: true), - file(params.test_data['sarscov2']['genome']['genome_gtf'], checkIfExists: true) - ] + input[0] = [ + [ id:'test', single_end:true, strandedness:'unstranded' ], // meta map + file(params.modules_testdata_base_path + "genomics/sarscov2/illumina/bam/test.single_end.bam", checkIfExists: true), + file(params.modules_testdata_base_path + "genomics/sarscov2/genome/genome.gtf", checkIfExists: true) + ] """ } } From f89732547a7da9c720de3ee0923d8681964f1457 Mon Sep 17 00:00:00 2001 From: maxulysse Date: Mon, 26 Feb 2024 17:10:56 +0100 Subject: [PATCH 101/634] custom/tx2gene --- .github/workflows/ci.yml | 1 - modules.json | 2 +- .../nf-core/custom/tx2gene/tests/main.nf.test | 41 +++++++++---------- .../custom/tx2gene/tests/main.nf.test.snap | 30 +++++--------- 4 files changed, 30 insertions(+), 44 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 9cc064b42..07fe6c762 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -197,7 +197,6 @@ jobs: profile: - "docker" exclude: - - tags: "CUSTOM_TX2GENE" - tags: "FASTQ_SUBSAMPLE_FQ_SALMON" - tags: "GFFREAD" - tags: "HISAT2_BUILD" diff --git a/modules.json b/modules.json index 34f8294e1..0d7adf671 100644 --- a/modules.json +++ b/modules.json @@ -27,7 +27,7 @@ }, "custom/tx2gene": { "branch": "master", - "git_sha": "105968d1c48c727834abcabc94ad6bd128e5ef27", + "git_sha": "ec155021a9104441bf6a9bae3b55d1b5b0bfdb3a", "installed_by": ["modules"] }, "fastp": { diff --git a/modules/nf-core/custom/tx2gene/tests/main.nf.test b/modules/nf-core/custom/tx2gene/tests/main.nf.test index 0a9d81506..b15592798 100644 --- a/modules/nf-core/custom/tx2gene/tests/main.nf.test +++ b/modules/nf-core/custom/tx2gene/tests/main.nf.test @@ -16,69 +16,66 @@ nextflow_process { script "../../../untar/main.nf" process { """ - input[0] = [ - [ id:'test'], // meta map - file(params.test_data['saccharomyces_cerevisiae']['genome']['kallisto_results'], checkIfExists: true) - ] + input[0] = Channel.of([ + [ id:'test'], // meta map + file(params.modules_testdata_base_path + 'genomics/eukaryotes/saccharomyces_cerevisiae/kallisto_results.tar.gz', checkIfExists: true) + ]) """ } } } test("saccharomyces_cerevisiae - gtf") { - + when { process { """ - input[0] = [ - [ id:'test'], // meta map - file(params.test_data['saccharomyces_cerevisiae']['genome']['genome_gfp_gtf'], checkIfExists: true) - ] + input[0] = Channel.of([ + [ id:'test'], // meta map + file(params.modules_testdata_base_path + 'genomics/eukaryotes/saccharomyces_cerevisiae/genome_gfp.gtf', checkIfExists: true) + ]) input[1] = UNTAR.out.untar.map { meta, dir -> [ meta, dir.listFiles().collect() ] } input[2] = 'kallisto' - input[3] = 'gene_id' + input[3] = 'gene_id' input[4] = 'gene_name' """ } } - then { assertAll( { assert process.success }, { assert snapshot(process.out.tx2gene).match('tx2gene') }, - { assert snapshot(process.out.tx2gene).match('versions') } + { assert snapshot(process.out.versions).match('versions') } ) } - } test("saccharomyces_cerevisiae - gtf - stub") { - options "-stub" - + options "-stub" + when { process { """ - input[0] = [ + input[0] = Channel.of([ [ id:'test'], // meta map - file(params.test_data['saccharomyces_cerevisiae']['genome']['genome_gfp_gtf'], checkIfExists: true) - ] + file(params.modules_testdata_base_path + 'genomics/eukaryotes/saccharomyces_cerevisiae/genome_gfp.gtf', checkIfExists: true) + ]) input[1] = UNTAR.out.untar.map { meta, dir -> [ meta, dir.listFiles().collect() ] } input[2] = 'kallisto' - input[3] = 'gene_id' + input[3] = 'gene_id' input[4] = 'gene_name' """ } } - then { assertAll( { assert process.success }, { assert snapshot(process.out.tx2gene).match('tx2gene - stub') }, - { assert snapshot(process.out.tx2gene).match('versions - stub') } + { assert snapshot(process.out.versions).match('versions - stub') } ) } } -} +} \ No newline at end of file diff --git a/modules/nf-core/custom/tx2gene/tests/main.nf.test.snap b/modules/nf-core/custom/tx2gene/tests/main.nf.test.snap index eb3a40d7d..1e76e10d6 100644 --- a/modules/nf-core/custom/tx2gene/tests/main.nf.test.snap +++ b/modules/nf-core/custom/tx2gene/tests/main.nf.test.snap @@ -2,19 +2,14 @@ "versions": { "content": [ [ - [ - { - "id": "test" - }, - "test.tx2gene.tsv:md5,0e2418a69d2eba45097ebffc2f700bfe" - ] + "versions.yml:md5,fb8145d7fbc6043ba031249b23ecda50" ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.01.0" }, - "timestamp": "2024-02-09T13:36:52.865995354" + "timestamp": "2024-02-26T13:14:18.218251" }, "tx2gene": { "content": [ @@ -29,9 +24,9 @@ ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.01.0" }, - "timestamp": "2024-02-09T13:36:52.853651325" + "timestamp": "2024-02-26T13:14:18.21054" }, "tx2gene - stub": { "content": [ @@ -46,25 +41,20 @@ ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.01.0" }, - "timestamp": "2024-02-09T13:37:06.627803799" + "timestamp": "2024-02-26T13:14:25.915434" }, "versions - stub": { "content": [ [ - [ - { - "id": "test" - }, - "test.tx2gene.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" - ] + "versions.yml:md5,5613eefbca41377128f1d8dc09b9fb60" ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.01.0" }, - "timestamp": "2024-02-09T13:37:06.632996139" + "timestamp": "2024-02-26T13:14:25.919243" } } \ No newline at end of file From fa6dd8e8853dd0b14d5dfeea32f25371efb33dfe Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Tue, 27 Feb 2024 14:49:19 +0000 Subject: [PATCH 102/634] Fix config selector for bbsplit indexing --- subworkflows/local/prepare_genome/nextflow.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/subworkflows/local/prepare_genome/nextflow.config b/subworkflows/local/prepare_genome/nextflow.config index 98a4b64fd..b62740973 100644 --- a/subworkflows/local/prepare_genome/nextflow.config +++ b/subworkflows/local/prepare_genome/nextflow.config @@ -102,7 +102,7 @@ process { if (!params.skip_bbsplit && params.bbsplit_fasta_list) { process { - withName: 'PREPARE_GENOME:BBMAP_BBSPLIT' { + withName: 'BBMAP_BBSPLIT' { ext.args = 'build=1' publishDir = [ path: { params.save_reference ? "${params.outdir}/genome/index" : params.outdir }, From b5b728b9f36c650aea2245cfd893f7e2cfd8942a Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Tue, 27 Feb 2024 15:07:09 +0000 Subject: [PATCH 103/634] Fix config selector for bbsplit indexing --- subworkflows/local/prepare_genome/nextflow.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/subworkflows/local/prepare_genome/nextflow.config b/subworkflows/local/prepare_genome/nextflow.config index b62740973..e02648197 100644 --- a/subworkflows/local/prepare_genome/nextflow.config +++ b/subworkflows/local/prepare_genome/nextflow.config @@ -102,7 +102,7 @@ process { if (!params.skip_bbsplit && params.bbsplit_fasta_list) { process { - withName: 'BBMAP_BBSPLIT' { + withName: '.*:PREPARE_GENOME:BBMAP_BBSPLIT' { ext.args = 'build=1' publishDir = [ path: { params.save_reference ? "${params.outdir}/genome/index" : params.outdir }, From 95465eb918c912f5b26a92cabc6e2f7015ab8d26 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Tue, 27 Feb 2024 16:04:13 +0000 Subject: [PATCH 104/634] Try to not overwrite --- modules/nf-core/bbmap/bbsplit/nextflow.config | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/nf-core/bbmap/bbsplit/nextflow.config b/modules/nf-core/bbmap/bbsplit/nextflow.config index da3ddaf31..d1dfd3729 100644 --- a/modules/nf-core/bbmap/bbsplit/nextflow.config +++ b/modules/nf-core/bbmap/bbsplit/nextflow.config @@ -1,7 +1,7 @@ if (!params.skip_bbsplit) { process { withName: 'BBMAP_BBSPLIT' { - ext.args = 'build=1 ambiguous2=all maxindel=150000' + ext.args = 'build=1 ambiguous2=all maxindel=150000 overwrite=false' publishDir = [ [ path: { "${params.outdir}/bbsplit" }, @@ -17,4 +17,4 @@ if (!params.skip_bbsplit) { ] } } -} \ No newline at end of file +} From b81fb5bb91c847900c2e42e69d48ddd253794b3b Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Tue, 27 Feb 2024 16:37:07 +0000 Subject: [PATCH 105/634] Try not to overwrite-better --- modules/nf-core/bbmap/bbsplit/nextflow.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/nf-core/bbmap/bbsplit/nextflow.config b/modules/nf-core/bbmap/bbsplit/nextflow.config index d1dfd3729..8d71e9d85 100644 --- a/modules/nf-core/bbmap/bbsplit/nextflow.config +++ b/modules/nf-core/bbmap/bbsplit/nextflow.config @@ -1,7 +1,7 @@ if (!params.skip_bbsplit) { process { withName: 'BBMAP_BBSPLIT' { - ext.args = 'build=1 ambiguous2=all maxindel=150000 overwrite=false' + ext.args = 'build=1 ambiguous2=all maxindel=150000 ow=f' publishDir = [ [ path: { "${params.outdir}/bbsplit" }, From 070b8171d6f4474a26a840b1cf345a13ce5d3e62 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Wed, 28 Feb 2024 10:19:51 +0000 Subject: [PATCH 106/634] Install module with hack --- modules.json | 4 +- modules/nf-core/bbmap/bbsplit/main.nf | 83 ++++++++++++------- .../nf-core/bbmap/bbsplit/tests/main.nf.test | 3 +- 3 files changed, 55 insertions(+), 35 deletions(-) diff --git a/modules.json b/modules.json index e88d66486..ba17a2209 100644 --- a/modules.json +++ b/modules.json @@ -6,8 +6,8 @@ "modules": { "nf-core": { "bbmap/bbsplit": { - "branch": "master", - "git_sha": "e2b2b102d1d2e3b553177ca00ad74dc8a0a42c46", + "branch": "fix_bbsplit", + "git_sha": "007d8204956159d1d48b81c6403c8e9f5fdbd459", "installed_by": ["modules"] }, "cat/fastq": { diff --git a/modules/nf-core/bbmap/bbsplit/main.nf b/modules/nf-core/bbmap/bbsplit/main.nf index 81460019a..56f1e4f61 100644 --- a/modules/nf-core/bbmap/bbsplit/main.nf +++ b/modules/nf-core/bbmap/bbsplit/main.nf @@ -20,6 +20,7 @@ process BBMAP_BBSPLIT { tuple val(meta), path('*primary*fastq.gz'), optional:true, emit: primary_fastq tuple val(meta), path('*fastq.gz') , optional:true, emit: all_fastq tuple val(meta), path('*txt') , optional:true, emit: stats + tuple val(meta), path('*.log') , optional:true, emit: log path "versions.yml" , emit: versions when: @@ -40,27 +41,21 @@ process BBMAP_BBSPLIT { other_ref_names.eachWithIndex { name, index -> other_refs << "ref_${name}=${other_ref_paths[index]}" } + + def fastq_in='' + def fastq_out='' + def index_files='' + def refstats_cmd='' + if (only_build_index) { + println("only building index") if (primary_ref && other_ref_names && other_ref_paths) { - """ - bbsplit.sh \\ - -Xmx${avail_mem}M \\ - ref_primary=$primary_ref \\ - ${other_refs.join(' ')} \\ - path=bbsplit \\ - threads=$task.cpus \\ - $args - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - bbmap: \$(bbversion.sh | grep -v "Duplicate cpuset") - END_VERSIONS - """ + index_files = 'ref_primary=' +primary_ref + ' ' + other_refs.join(' ') + ' path=bbsplit' } else { log.error 'ERROR: Please specify as input a primary fasta file along with names and paths to non-primary fasta files.' } } else { - def index_files = '' + index_files = '' if (index) { index_files = "path=$index" } else if (primary_ref && other_ref_names && other_ref_paths) { @@ -68,23 +63,47 @@ process BBMAP_BBSPLIT { } else { log.error 'ERROR: Please either specify a BBSplit index as input or a primary fasta file along with names and paths to non-primary fasta files.' } - def fastq_in = meta.single_end ? "in=${reads}" : "in=${reads[0]} in2=${reads[1]}" - def fastq_out = meta.single_end ? "basename=${prefix}_%.fastq.gz" : "basename=${prefix}_%_#.fastq.gz" - """ - bbsplit.sh \\ - -Xmx${avail_mem}M \\ - $index_files \\ - threads=$task.cpus \\ - $fastq_in \\ - $fastq_out \\ - refstats=${prefix}.stats.txt \\ - $args - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - bbmap: \$(bbversion.sh | grep -v "Duplicate cpuset") - END_VERSIONS - """ + fastq_in = meta.single_end ? "in=${reads}" : "in=${reads[0]} in2=${reads[1]}" + fastq_out = meta.single_end ? "basename=${prefix}_%.fastq.gz" : "basename=${prefix}_%_#.fastq.gz" + refstats_cmd = 'refstats=' + prefix + '.stats.txt' } + """ + + # When we stage in the index files the time stamps get disturbed, which + # bbsplit doesn't like. Fix the time stamps in its summaries. This needs to + # be done via Java to match what bbmap does + + if [ $index ]; then + for summary_file in \$(find $index/ref/genome -name summary.txt); do + src=\$(grep '^source' "\$summary_file" | cut -f2- -d\$'\\t' | sed 's|.*/bbsplit|bbsplit|') + mod=\$(echo "System.out.println(java.nio.file.Files.getLastModifiedTime(java.nio.file.Paths.get(\\"\$src\\")).toMillis());" | jshell -J-Djdk.lang.Process.launchMechanism=vfork -) + sed "s|^last modified.*|last modified\\t\$mod|" "\$summary_file" > \${summary_file}.tmp && mv \${summary_file}.tmp \${summary_file} + done + fi + + # Run BBSplit + + bbsplit.sh \\ + -Xmx${avail_mem}M \\ + $index_files \\ + threads=$task.cpus \\ + $fastq_in \\ + $fastq_out \\ + $refstats_cmd \\ + $args 2> >(tee ${prefix}.log >&2) + + # Summary files will have an absolute path that will make the index + # impossible to use in other processes- we can fix that + + for summary_file in \$(find bbsplit/ref/genome -name summary.txt); do + src=\$(grep '^source' "\$summary_file" | cut -f2- -d\$'\\t' | sed 's|.*/bbsplit|bbsplit|') + sed "s|^source.*|source\\t\$src|" "\$summary_file" > \${summary_file}.tmp && mv \${summary_file}.tmp \${summary_file} + done + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + bbmap: \$(bbversion.sh | grep -v "Duplicate cpuset") + END_VERSIONS + """ } diff --git a/modules/nf-core/bbmap/bbsplit/tests/main.nf.test b/modules/nf-core/bbmap/bbsplit/tests/main.nf.test index bb64daae1..8fb130abb 100644 --- a/modules/nf-core/bbmap/bbsplit/tests/main.nf.test +++ b/modules/nf-core/bbmap/bbsplit/tests/main.nf.test @@ -45,7 +45,7 @@ nextflow_process { [ 'human' ], // meta map file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr22/sequence/chr22_23800000-23980000.fa', checkIfExists: true) ]) - input[4] = true + input[4] = false """ } } @@ -81,6 +81,7 @@ nextflow_process { assertAll( { assert process.success }, + { assert path(process.out.log[0][1]).text.contains("If you wish to regenerate the index") }, { assert snapshot(filteredFiles).match("bbsplit_index_filtered_files")}, { assert filesExist : "One or more files to exclude do not exist" }, { assert snapshot(process.out.versions).match("versions")} From 1c19e522b8b538e2c82d89239222433821981e5f Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Wed, 28 Feb 2024 16:24:37 +0000 Subject: [PATCH 107/634] install from master --- modules.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules.json b/modules.json index ba17a2209..ce63618b1 100644 --- a/modules.json +++ b/modules.json @@ -6,8 +6,8 @@ "modules": { "nf-core": { "bbmap/bbsplit": { - "branch": "fix_bbsplit", - "git_sha": "007d8204956159d1d48b81c6403c8e9f5fdbd459", + "branch": "master", + "git_sha": "dcfa9a18a74300f7fb994cdbf518c981f22de73d", "installed_by": ["modules"] }, "cat/fastq": { From 699634b3f122e13b54936428461fd070e5e459f6 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Wed, 28 Feb 2024 16:28:57 +0000 Subject: [PATCH 108/634] Update CHANGELOG --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 25ca183d9..bb8d62886 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 - [PR #1216](https://github.com/nf-core/rnaseq/pull/1216) - Delocalise catadditionalfasta ([#1162](https://github.com/nf-core/rnaseq/issues/1162)) - [PR #1218](https://github.com/nf-core/rnaseq/pull/1218) - Template update for nf-core/tools v2.13 - [PR #1220](https://github.com/nf-core/rnaseq/pull/1220) - Initialise nf-test and add pipeline level test +- [PR #1226](https://github.com/nf-core/rnaseq/pull/1226) - Reuse bbsplit index and don't keep overwriting ([#1225](https://github.com/nf-core/rnaseq/issues/1225)) ### Parameters From 2795b22b69a175545703757dc874ddd57f6fea22 Mon Sep 17 00:00:00 2001 From: maxulysse Date: Thu, 29 Feb 2024 14:46:33 +0100 Subject: [PATCH 109/634] update configs --- nextflow.config | 14 ++++++++++++++ tests/nextflow.config | 2 ++ 2 files changed, 16 insertions(+) diff --git a/nextflow.config b/nextflow.config index 74108e825..a2807c3a0 100644 --- a/nextflow.config +++ b/nextflow.config @@ -12,6 +12,20 @@ params { // Input options input = null + // References files + additional_fasta = null + bbsplit_index = null + fasta = null + gene_bed = null + gff = null + gtf = null + hisat2_index = null + kallisto_index = null + rsem_index = null + salmon_index = null + star_index = null + transcript_fasta = null + // References genome = null splicesites = null diff --git a/tests/nextflow.config b/tests/nextflow.config index 551d106cb..7ece4771e 100644 --- a/tests/nextflow.config +++ b/tests/nextflow.config @@ -10,6 +10,8 @@ params { // Base directory for nf-core/rnaseq test data pipelines_testdata_base_path = 's3://ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15' + + validationSchemaIgnoreParams = 'genomes,igenomes_base,modules_testdata_base_path,pipelines_testdata_base_path' } // Impose sensible resource limits for testing From 78a4b72f4dacbd41c02392fa353b2b618daafec2 Mon Sep 17 00:00:00 2001 From: maxulysse Date: Thu, 29 Feb 2024 14:49:29 +0100 Subject: [PATCH 110/634] modules update: bbmap/bbsplit multiqc rseqc/all sortmerna untar --- modules.json | 22 +- modules/nf-core/bbmap/bbsplit/main.nf | 83 +++-- .../nf-core/bbmap/bbsplit/tests/main.nf.test | 3 +- modules/nf-core/multiqc/environment.yml | 2 +- modules/nf-core/multiqc/main.nf | 4 +- .../nf-core/multiqc/tests/main.nf.test.snap | 12 +- .../rseqc/inferexperiment/tests/main.nf.test | 12 +- .../inferexperiment/tests/main.nf.test.snap | 6 +- .../rseqc/innerdistance/tests/main.nf.test | 20 +- .../innerdistance/tests/main.nf.test.snap | 62 ++-- .../junctionannotation/tests/main.nf.test | 19 +- .../tests/main.nf.test.snap | 12 +- .../junctionsaturation/tests/main.nf.test | 15 +- .../tests/main.nf.test.snap | 18 +- .../rseqc/readdistribution/tests/main.nf.test | 8 +- .../readdistribution/tests/main.nf.test.snap | 4 +- .../rseqc/readduplication/tests/main.nf.test | 15 +- .../readduplication/tests/main.nf.test.snap | 30 +- modules/nf-core/rseqc/tin/tests/main.nf.test | 8 +- .../nf-core/rseqc/tin/tests/main.nf.test.snap | 4 +- modules/nf-core/sortmerna/main.nf | 95 +++--- modules/nf-core/sortmerna/meta.yml | 26 +- .../sortmerna/tests/indexing_only.config | 5 + modules/nf-core/sortmerna/tests/main.nf.test | 186 +++++++++++- .../nf-core/sortmerna/tests/main.nf.test.snap | 284 ++++++++++++++++-- .../sortmerna/tests/premade_index.config | 8 + modules/nf-core/untar/tests/main.nf.test | 8 - modules/nf-core/untar/tests/main.nf.test.snap | 12 +- 28 files changed, 771 insertions(+), 212 deletions(-) create mode 100644 modules/nf-core/sortmerna/tests/indexing_only.config create mode 100644 modules/nf-core/sortmerna/tests/premade_index.config diff --git a/modules.json b/modules.json index 0d7adf671..0f3cebbfd 100644 --- a/modules.json +++ b/modules.json @@ -7,7 +7,7 @@ "nf-core": { "bbmap/bbsplit": { "branch": "master", - "git_sha": "e2b2b102d1d2e3b553177ca00ad74dc8a0a42c46", + "git_sha": "dcfa9a18a74300f7fb994cdbf518c981f22de73d", "installed_by": ["modules"] }, "cat/fastq": { @@ -82,7 +82,7 @@ }, "multiqc": { "branch": "master", - "git_sha": "ccacf6f5de6df3bc6d73b665c1fd2933d8bbc290", + "git_sha": "b7ebe95761cd389603f9cc0e0dc384c0f663815a", "installed_by": ["modules"] }, "picard/markduplicates": { @@ -117,37 +117,37 @@ }, "rseqc/inferexperiment": { "branch": "master", - "git_sha": "41f4baa439663b9027727d83a3293db93bad3f8c", + "git_sha": "6c7d8f1d6247655e4bc4d97f37b68b2461f645f6", "installed_by": ["bam_rseqc"] }, "rseqc/innerdistance": { "branch": "master", - "git_sha": "41f4baa439663b9027727d83a3293db93bad3f8c", + "git_sha": "6c7d8f1d6247655e4bc4d97f37b68b2461f645f6", "installed_by": ["bam_rseqc"] }, "rseqc/junctionannotation": { "branch": "master", - "git_sha": "41f4baa439663b9027727d83a3293db93bad3f8c", + "git_sha": "6c7d8f1d6247655e4bc4d97f37b68b2461f645f6", "installed_by": ["bam_rseqc"] }, "rseqc/junctionsaturation": { "branch": "master", - "git_sha": "41f4baa439663b9027727d83a3293db93bad3f8c", + "git_sha": "6c7d8f1d6247655e4bc4d97f37b68b2461f645f6", "installed_by": ["bam_rseqc"] }, "rseqc/readdistribution": { "branch": "master", - "git_sha": "d5f5ce9474983fe0973b26c39728b5c57b13c8d4", + "git_sha": "6c7d8f1d6247655e4bc4d97f37b68b2461f645f6", "installed_by": ["bam_rseqc"] }, "rseqc/readduplication": { "branch": "master", - "git_sha": "41f4baa439663b9027727d83a3293db93bad3f8c", + "git_sha": "6c7d8f1d6247655e4bc4d97f37b68b2461f645f6", "installed_by": ["bam_rseqc"] }, "rseqc/tin": { "branch": "master", - "git_sha": "37aa78c23d809a01d6a1f2e6c0c034f00c2a0984", + "git_sha": "6c7d8f1d6247655e4bc4d97f37b68b2461f645f6", "installed_by": ["bam_rseqc"] }, "salmon/index": { @@ -191,7 +191,7 @@ }, "sortmerna": { "branch": "master", - "git_sha": "ad22467dff16284093e7335d5e77964e9bbc510b", + "git_sha": "df05c8db5195867c0bc7b92c1788115b66f0d17d", "installed_by": ["modules"] }, "star/align": { @@ -256,7 +256,7 @@ }, "untar": { "branch": "master", - "git_sha": "e719354ba77df0a1bd310836aa2039b45c29d620", + "git_sha": "5caf7640a9ef1d18d765d55339be751bb0969dfa", "installed_by": ["modules"] } } diff --git a/modules/nf-core/bbmap/bbsplit/main.nf b/modules/nf-core/bbmap/bbsplit/main.nf index 81460019a..56f1e4f61 100644 --- a/modules/nf-core/bbmap/bbsplit/main.nf +++ b/modules/nf-core/bbmap/bbsplit/main.nf @@ -20,6 +20,7 @@ process BBMAP_BBSPLIT { tuple val(meta), path('*primary*fastq.gz'), optional:true, emit: primary_fastq tuple val(meta), path('*fastq.gz') , optional:true, emit: all_fastq tuple val(meta), path('*txt') , optional:true, emit: stats + tuple val(meta), path('*.log') , optional:true, emit: log path "versions.yml" , emit: versions when: @@ -40,27 +41,21 @@ process BBMAP_BBSPLIT { other_ref_names.eachWithIndex { name, index -> other_refs << "ref_${name}=${other_ref_paths[index]}" } + + def fastq_in='' + def fastq_out='' + def index_files='' + def refstats_cmd='' + if (only_build_index) { + println("only building index") if (primary_ref && other_ref_names && other_ref_paths) { - """ - bbsplit.sh \\ - -Xmx${avail_mem}M \\ - ref_primary=$primary_ref \\ - ${other_refs.join(' ')} \\ - path=bbsplit \\ - threads=$task.cpus \\ - $args - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - bbmap: \$(bbversion.sh | grep -v "Duplicate cpuset") - END_VERSIONS - """ + index_files = 'ref_primary=' +primary_ref + ' ' + other_refs.join(' ') + ' path=bbsplit' } else { log.error 'ERROR: Please specify as input a primary fasta file along with names and paths to non-primary fasta files.' } } else { - def index_files = '' + index_files = '' if (index) { index_files = "path=$index" } else if (primary_ref && other_ref_names && other_ref_paths) { @@ -68,23 +63,47 @@ process BBMAP_BBSPLIT { } else { log.error 'ERROR: Please either specify a BBSplit index as input or a primary fasta file along with names and paths to non-primary fasta files.' } - def fastq_in = meta.single_end ? "in=${reads}" : "in=${reads[0]} in2=${reads[1]}" - def fastq_out = meta.single_end ? "basename=${prefix}_%.fastq.gz" : "basename=${prefix}_%_#.fastq.gz" - """ - bbsplit.sh \\ - -Xmx${avail_mem}M \\ - $index_files \\ - threads=$task.cpus \\ - $fastq_in \\ - $fastq_out \\ - refstats=${prefix}.stats.txt \\ - $args - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - bbmap: \$(bbversion.sh | grep -v "Duplicate cpuset") - END_VERSIONS - """ + fastq_in = meta.single_end ? "in=${reads}" : "in=${reads[0]} in2=${reads[1]}" + fastq_out = meta.single_end ? "basename=${prefix}_%.fastq.gz" : "basename=${prefix}_%_#.fastq.gz" + refstats_cmd = 'refstats=' + prefix + '.stats.txt' } + """ + + # When we stage in the index files the time stamps get disturbed, which + # bbsplit doesn't like. Fix the time stamps in its summaries. This needs to + # be done via Java to match what bbmap does + + if [ $index ]; then + for summary_file in \$(find $index/ref/genome -name summary.txt); do + src=\$(grep '^source' "\$summary_file" | cut -f2- -d\$'\\t' | sed 's|.*/bbsplit|bbsplit|') + mod=\$(echo "System.out.println(java.nio.file.Files.getLastModifiedTime(java.nio.file.Paths.get(\\"\$src\\")).toMillis());" | jshell -J-Djdk.lang.Process.launchMechanism=vfork -) + sed "s|^last modified.*|last modified\\t\$mod|" "\$summary_file" > \${summary_file}.tmp && mv \${summary_file}.tmp \${summary_file} + done + fi + + # Run BBSplit + + bbsplit.sh \\ + -Xmx${avail_mem}M \\ + $index_files \\ + threads=$task.cpus \\ + $fastq_in \\ + $fastq_out \\ + $refstats_cmd \\ + $args 2> >(tee ${prefix}.log >&2) + + # Summary files will have an absolute path that will make the index + # impossible to use in other processes- we can fix that + + for summary_file in \$(find bbsplit/ref/genome -name summary.txt); do + src=\$(grep '^source' "\$summary_file" | cut -f2- -d\$'\\t' | sed 's|.*/bbsplit|bbsplit|') + sed "s|^source.*|source\\t\$src|" "\$summary_file" > \${summary_file}.tmp && mv \${summary_file}.tmp \${summary_file} + done + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + bbmap: \$(bbversion.sh | grep -v "Duplicate cpuset") + END_VERSIONS + """ } diff --git a/modules/nf-core/bbmap/bbsplit/tests/main.nf.test b/modules/nf-core/bbmap/bbsplit/tests/main.nf.test index bb64daae1..8fb130abb 100644 --- a/modules/nf-core/bbmap/bbsplit/tests/main.nf.test +++ b/modules/nf-core/bbmap/bbsplit/tests/main.nf.test @@ -45,7 +45,7 @@ nextflow_process { [ 'human' ], // meta map file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr22/sequence/chr22_23800000-23980000.fa', checkIfExists: true) ]) - input[4] = true + input[4] = false """ } } @@ -81,6 +81,7 @@ nextflow_process { assertAll( { assert process.success }, + { assert path(process.out.log[0][1]).text.contains("If you wish to regenerate the index") }, { assert snapshot(filteredFiles).match("bbsplit_index_filtered_files")}, { assert filesExist : "One or more files to exclude do not exist" }, { assert snapshot(process.out.versions).match("versions")} diff --git a/modules/nf-core/multiqc/environment.yml b/modules/nf-core/multiqc/environment.yml index 2212096af..ca39fb67e 100644 --- a/modules/nf-core/multiqc/environment.yml +++ b/modules/nf-core/multiqc/environment.yml @@ -4,4 +4,4 @@ channels: - bioconda - defaults dependencies: - - bioconda::multiqc=1.20 + - bioconda::multiqc=1.21 diff --git a/modules/nf-core/multiqc/main.nf b/modules/nf-core/multiqc/main.nf index 354f4430f..47ac352f9 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.20--pyhdfd78af_0' : - 'biocontainers/multiqc:1.20--pyhdfd78af_0' }" + 'https://depot.galaxyproject.org/singularity/multiqc:1.21--pyhdfd78af_0' : + 'biocontainers/multiqc:1.21--pyhdfd78af_0' }" input: path multiqc_files, stageAs: "?/*" diff --git a/modules/nf-core/multiqc/tests/main.nf.test.snap b/modules/nf-core/multiqc/tests/main.nf.test.snap index c204b4881..bfebd8029 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,d320d4c37e349c5588e07e7a31cd4186" + "versions.yml:md5,21f35ee29416b9b3073c28733efe4b7d" ] ], "meta": { "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-02-14T09:28:51.744211298" + "timestamp": "2024-02-29T08:48:55.657331" }, "multiqc_stub": { "content": [ @@ -17,25 +17,25 @@ "multiqc_report.html", "multiqc_data", "multiqc_plots", - "versions.yml:md5,d320d4c37e349c5588e07e7a31cd4186" + "versions.yml:md5,21f35ee29416b9b3073c28733efe4b7d" ] ], "meta": { "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-02-14T09:29:28.847433492" + "timestamp": "2024-02-29T08:49:49.071937" }, "multiqc_versions_config": { "content": [ [ - "versions.yml:md5,d320d4c37e349c5588e07e7a31cd4186" + "versions.yml:md5,21f35ee29416b9b3073c28733efe4b7d" ] ], "meta": { "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-02-14T09:29:13.223621555" + "timestamp": "2024-02-29T08:49:25.457567" } } \ No newline at end of file diff --git a/modules/nf-core/rseqc/inferexperiment/tests/main.nf.test b/modules/nf-core/rseqc/inferexperiment/tests/main.nf.test index 97cd2cb9a..4234829a7 100644 --- a/modules/nf-core/rseqc/inferexperiment/tests/main.nf.test +++ b/modules/nf-core/rseqc/inferexperiment/tests/main.nf.test @@ -4,7 +4,7 @@ nextflow_process { script "../main.nf" process "RSEQC_INFEREXPERIMENT" config "./nextflow.config" - + tag "modules" tag "modules_nfcore" tag "rseqc" @@ -15,11 +15,11 @@ nextflow_process { when { process { """ - input[0] = [ + input[0] = Channel.of([ [ id:'test' ], // meta map - file(params.test_data['sarscov2']['illumina']['test_paired_end_sorted_bam'], checkIfExists: true) - ] - input[1] = file(params.test_data['sarscov2']['genome']['test_bed'], checkIfExists: true) + file(params.modules_testdata_base_path + "genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam", checkIfExists: true) + ]) + input[1] = Channel.of(file(params.modules_testdata_base_path + "genomics/sarscov2/genome/bed/test.bed", checkIfExists: true)) """ } } @@ -28,7 +28,5 @@ nextflow_process { assert process.success assert snapshot(process.out).match() } - } - } diff --git a/modules/nf-core/rseqc/inferexperiment/tests/main.nf.test.snap b/modules/nf-core/rseqc/inferexperiment/tests/main.nf.test.snap index 42ae74ff3..1283b47f1 100644 --- a/modules/nf-core/rseqc/inferexperiment/tests/main.nf.test.snap +++ b/modules/nf-core/rseqc/inferexperiment/tests/main.nf.test.snap @@ -26,6 +26,10 @@ ] } ], - "timestamp": "2023-12-14T17:25:08.399005243" + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-02-26T14:33:19.853327" } } \ No newline at end of file diff --git a/modules/nf-core/rseqc/innerdistance/tests/main.nf.test b/modules/nf-core/rseqc/innerdistance/tests/main.nf.test index ee8901422..0f07e3a87 100644 --- a/modules/nf-core/rseqc/innerdistance/tests/main.nf.test +++ b/modules/nf-core/rseqc/innerdistance/tests/main.nf.test @@ -15,27 +15,25 @@ nextflow_process { when { process { """ - input[0] = [ + input[0] = Channel.of([ [ id:'test' ], // meta map - file(params.test_data['sarscov2']['illumina']['test_paired_end_sorted_bam'], checkIfExists: true) - ] - input[1] = file(params.test_data['sarscov2']['genome']['test_bed12'], checkIfExists: true) + file(params.modules_testdata_base_path + "genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam", checkIfExists: true) + ]) + input[1] = Channel.of(file(params.modules_testdata_base_path + "genomics/sarscov2/genome/bed/test.bed12", checkIfExists: true)) """ } } - + then { assertAll( { assert process.success }, - { assert snapshot(process.out.distance).match("pe_distance") }, + { assert snapshot(file(process.out.pdf[0][1]).name).match("pdf") }, + { assert snapshot(process.out.distance).match("distance") }, { assert snapshot(process.out.freq).match("freq") }, - { assert snapshot(process.out.mean).match("mean") }, { assert snapshot(process.out.freq).match("rscript") }, - { assert snapshot(process.out.versions).match("pe_versions") }, - { assert snapshot(file(process.out.pdf[0][1]).name).match("pdf") } + { assert snapshot(process.out.mean).match("mean") }, + { assert snapshot(process.out.versions).match("versions") } ) } - } - } diff --git a/modules/nf-core/rseqc/innerdistance/tests/main.nf.test.snap b/modules/nf-core/rseqc/innerdistance/tests/main.nf.test.snap index c1e2d0e76..267a9a3ba 100644 --- a/modules/nf-core/rseqc/innerdistance/tests/main.nf.test.snap +++ b/modules/nf-core/rseqc/innerdistance/tests/main.nf.test.snap @@ -1,35 +1,59 @@ { - "pe_distance": { + "rscript": { "content": [ [ [ { "id": "test" }, - "test.inner_distance.txt:md5,a1acc9def0f64a5500d4c4cb47cbe32b" + "test.inner_distance_freq.txt:md5,3fc037501f5899b5da009c8ce02fc25e" ] ] ], - "timestamp": "2023-11-23T16:59:21.812491711" + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-02-26T14:33:42.467401" }, - "rscript": { + "pdf": { + "content": [ + "test.inner_distance_plot.pdf" + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-02-26T14:33:42.461959" + }, + "distance": { "content": [ [ [ { "id": "test" }, - "test.inner_distance_freq.txt:md5,3fc037501f5899b5da009c8ce02fc25e" + "test.inner_distance.txt:md5,a1acc9def0f64a5500d4c4cb47cbe32b" ] ] ], - "timestamp": "2023-11-23T16:59:21.847527889" + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-02-26T14:33:42.463083" }, - "pdf": { + "versions": { "content": [ - "test.inner_distance_plot.pdf" + [ + "versions.yml:md5,3ca19644c7f02a53db3ffe50c7706797" + ] ], - "timestamp": "2023-11-23T17:23:20.046679629" + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-02-26T14:33:42.474576" }, "mean": { "content": [ @@ -42,7 +66,11 @@ ] ] ], - "timestamp": "2023-11-23T16:59:21.839422659" + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-02-26T14:33:42.470638" }, "freq": { "content": [ @@ -55,14 +83,10 @@ ] ] ], - "timestamp": "2023-11-23T16:59:21.83183025" - }, - "pe_versions": { - "content": [ - [ - "versions.yml:md5,3ca19644c7f02a53db3ffe50c7706797" - ] - ], - "timestamp": "2023-12-14T17:22:27.076470855" + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-02-26T14:33:42.464983" } } \ No newline at end of file diff --git a/modules/nf-core/rseqc/junctionannotation/tests/main.nf.test b/modules/nf-core/rseqc/junctionannotation/tests/main.nf.test index ed2c27558..fd8cab96c 100644 --- a/modules/nf-core/rseqc/junctionannotation/tests/main.nf.test +++ b/modules/nf-core/rseqc/junctionannotation/tests/main.nf.test @@ -3,6 +3,7 @@ nextflow_process { name "Test Process RSEQC_JUNCTIONANNOTATION" script "../main.nf" process "RSEQC_JUNCTIONANNOTATION" + tag "modules" tag "modules_nfcore" tag "rseqc" @@ -13,11 +14,11 @@ nextflow_process { when { process { """ - input[0] = [ - [ id:'test', single_end: false ], // meta map - file(params.test_data['sarscov2']['illumina']['test_paired_end_sorted_bam'], checkIfExists: true) - ] - input[1] = file(params.test_data['sarscov2']['genome']['test_bed'], checkIfExists: true) + 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) + ]) + input[1] = Channel.of(file(params.modules_testdata_base_path + "genomics/sarscov2/genome/bed/test.bed", checkIfExists: true)) """ } } @@ -25,13 +26,11 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot(process.out.log).match("log") }, - { assert snapshot(process.out.versions).match("versions") }, + { assert process.out.rscript.get(0).get(1) ==~ ".*/test.junction_plot.r" }, { assert process.out.xls.get(0).get(1) ==~ ".*/test.junction.xls" }, - { assert process.out.rscript.get(0).get(1) ==~ ".*/test.junction_plot.r" } + { assert snapshot(process.out.log).match("log") }, + { assert snapshot(process.out.versions).match("versions") } ) } - } - } diff --git a/modules/nf-core/rseqc/junctionannotation/tests/main.nf.test.snap b/modules/nf-core/rseqc/junctionannotation/tests/main.nf.test.snap index 7d1d1823b..f24a00776 100644 --- a/modules/nf-core/rseqc/junctionannotation/tests/main.nf.test.snap +++ b/modules/nf-core/rseqc/junctionannotation/tests/main.nf.test.snap @@ -11,7 +11,11 @@ ] ] ], - "timestamp": "2023-12-14T18:56:11.636775765" + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-02-26T14:32:52.732937" }, "versions": { "content": [ @@ -19,6 +23,10 @@ "versions.yml:md5,091865c0ebd6de262c9b0968b5771091" ] ], - "timestamp": "2023-12-14T17:08:02.340160345" + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-02-26T14:32:52.734515" } } \ No newline at end of file diff --git a/modules/nf-core/rseqc/junctionsaturation/tests/main.nf.test b/modules/nf-core/rseqc/junctionsaturation/tests/main.nf.test index 347b5fccd..af801dd64 100644 --- a/modules/nf-core/rseqc/junctionsaturation/tests/main.nf.test +++ b/modules/nf-core/rseqc/junctionsaturation/tests/main.nf.test @@ -3,6 +3,7 @@ nextflow_process { name "Test Process RSEQC_JUNCTIONSATURATION" script "../main.nf" process "RSEQC_JUNCTIONSATURATION" + tag "modules" tag "modules_nfcore" tag "rseqc" @@ -13,11 +14,11 @@ nextflow_process { when { process { """ - input[0] = [ + input[0] = Channel.of([ [ id:'test', single_end: false ], // meta map - file(params.test_data['sarscov2']['illumina']['test_paired_end_sorted_bam'], checkIfExists: true) - ] - input[1] = file(params.test_data['sarscov2']['genome']['test_bed'], checkIfExists: true) + file(params.modules_testdata_base_path + "genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam", checkIfExists: true) + ]) + input[1] = file(params.modules_testdata_base_path + "genomics/sarscov2/genome/bed/test.bed", checkIfExists: true) """ } } @@ -25,12 +26,10 @@ nextflow_process { then { assertAll( { assert process.success }, + { assert snapshot(file(process.out.pdf[0][1]).name).match("pdf") }, { assert snapshot(process.out.rscript).match("rscript") }, - { assert snapshot(process.out.versions).match("versions") }, - { assert snapshot(file(process.out.pdf[0][1]).name).match("pdf") } + { assert snapshot(process.out.versions).match("versions") } ) } - } - } diff --git a/modules/nf-core/rseqc/junctionsaturation/tests/main.nf.test.snap b/modules/nf-core/rseqc/junctionsaturation/tests/main.nf.test.snap index 417109563..6d83eb5f2 100644 --- a/modules/nf-core/rseqc/junctionsaturation/tests/main.nf.test.snap +++ b/modules/nf-core/rseqc/junctionsaturation/tests/main.nf.test.snap @@ -11,13 +11,21 @@ ] ] ], - "timestamp": "2023-11-24T00:15:43.655261555" + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-02-26T14:32:24.018924" }, "pdf": { "content": [ "test.junctionSaturation_plot.pdf" ], - "timestamp": "2023-11-24T00:15:43.682673802" + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-02-26T14:32:24.011942" }, "versions": { "content": [ @@ -25,6 +33,10 @@ "versions.yml:md5,cd4638541a825dbd44e3cb65d2980aa1" ] ], - "timestamp": "2023-12-14T14:59:00.979242265" + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-02-26T14:32:24.021984" } } \ No newline at end of file diff --git a/modules/nf-core/rseqc/readdistribution/tests/main.nf.test b/modules/nf-core/rseqc/readdistribution/tests/main.nf.test index bd7245b76..8e630062f 100644 --- a/modules/nf-core/rseqc/readdistribution/tests/main.nf.test +++ b/modules/nf-core/rseqc/readdistribution/tests/main.nf.test @@ -13,11 +13,11 @@ 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/bam/test.paired_end.sorted.bam", checkIfExists: true) - ] - input[1] = file(params.modules_testdata_base_path + "genomics/sarscov2/genome/bed/test.bed12", checkIfExists: true) + ]) + input[1] = Channel.of(file(params.modules_testdata_base_path + "genomics/sarscov2/genome/bed/test.bed12", checkIfExists: true)) """ } } @@ -28,7 +28,5 @@ nextflow_process { { assert snapshot(process.out).match() } ) } - } - } diff --git a/modules/nf-core/rseqc/readdistribution/tests/main.nf.test.snap b/modules/nf-core/rseqc/readdistribution/tests/main.nf.test.snap index 91b417499..7b3090567 100644 --- a/modules/nf-core/rseqc/readdistribution/tests/main.nf.test.snap +++ b/modules/nf-core/rseqc/readdistribution/tests/main.nf.test.snap @@ -30,8 +30,8 @@ ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.01.0" }, - "timestamp": "2023-12-14T17:17:31.66536021" + "timestamp": "2024-02-26T15:38:36.441841" } } \ No newline at end of file diff --git a/modules/nf-core/rseqc/readduplication/tests/main.nf.test b/modules/nf-core/rseqc/readduplication/tests/main.nf.test index 93d0cccd6..d48e23b17 100644 --- a/modules/nf-core/rseqc/readduplication/tests/main.nf.test +++ b/modules/nf-core/rseqc/readduplication/tests/main.nf.test @@ -13,9 +13,10 @@ nextflow_process { when { process { """ - input[0] = [ [ id:'test', single_end: false ], // meta map - file(params.test_data['sarscov2']['illumina']['test_paired_end_sorted_bam'], checkIfExists: true) - ] + 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) + ]) """ } } @@ -23,14 +24,12 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot(process.out.seq_xls).match("seq_xls") }, + { assert snapshot(file(process.out.pdf[0][1]).name).match("pdf") }, { assert snapshot(process.out.pos_xls).match("pos_xls") }, { assert snapshot(process.out.rscript).match("rscript") }, - { assert snapshot(process.out.versions).match("versions") }, - { assert snapshot(file(process.out.pdf[0][1]).name).match("pdf") } + { assert snapshot(process.out.seq_xls).match("seq_xls") }, + { assert snapshot(process.out.versions).match("versions") } ) } - } - } diff --git a/modules/nf-core/rseqc/readduplication/tests/main.nf.test.snap b/modules/nf-core/rseqc/readduplication/tests/main.nf.test.snap index 28ffb87b0..5ff9f0b8b 100644 --- a/modules/nf-core/rseqc/readduplication/tests/main.nf.test.snap +++ b/modules/nf-core/rseqc/readduplication/tests/main.nf.test.snap @@ -11,7 +11,11 @@ ] ] ], - "timestamp": "2023-11-24T00:52:45.27809706" + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-02-26T15:43:14.989834" }, "rscript": { "content": [ @@ -25,13 +29,21 @@ ] ] ], - "timestamp": "2023-11-24T00:52:45.285457599" + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-02-26T15:43:15.045525" }, "pdf": { "content": [ "test.DupRate_plot.pdf" ], - "timestamp": "2023-11-24T00:52:45.304152477" + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-02-26T14:33:06.857254" }, "seq_xls": { "content": [ @@ -45,7 +57,11 @@ ] ] ], - "timestamp": "2023-11-24T00:52:45.262656562" + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-02-26T15:43:15.101953" }, "versions": { "content": [ @@ -53,6 +69,10 @@ "versions.yml:md5,8a0721f3247f97135eadb8eecbe142a1" ] ], - "timestamp": "2023-12-14T17:23:41.82098803" + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-02-26T14:33:06.877127" } } \ No newline at end of file diff --git a/modules/nf-core/rseqc/tin/tests/main.nf.test b/modules/nf-core/rseqc/tin/tests/main.nf.test index 10000f7e1..95c04d93c 100644 --- a/modules/nf-core/rseqc/tin/tests/main.nf.test +++ b/modules/nf-core/rseqc/tin/tests/main.nf.test @@ -13,12 +13,12 @@ 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/bam/test.paired_end.sorted.bam", checkIfExists: true), file(params.modules_testdata_base_path + "genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam.bai", checkIfExists: true) - ] - input[1] = file(params.modules_testdata_base_path + "genomics/sarscov2/genome/bed/test.bed12", checkIfExists: true) + ]) + input[1] = Channel.of(file(params.modules_testdata_base_path + "genomics/sarscov2/genome/bed/test.bed12", checkIfExists: true)) """ } } @@ -29,7 +29,5 @@ nextflow_process { { assert snapshot(process.out).match() } ) } - } - } diff --git a/modules/nf-core/rseqc/tin/tests/main.nf.test.snap b/modules/nf-core/rseqc/tin/tests/main.nf.test.snap index 49c94a8ed..d8db28a48 100644 --- a/modules/nf-core/rseqc/tin/tests/main.nf.test.snap +++ b/modules/nf-core/rseqc/tin/tests/main.nf.test.snap @@ -48,8 +48,8 @@ ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.01.0" }, - "timestamp": "2024-02-07T14:23:09.039471" + "timestamp": "2024-02-26T14:32:42.823857" } } \ No newline at end of file diff --git a/modules/nf-core/sortmerna/main.nf b/modules/nf-core/sortmerna/main.nf index 2712bf589..7c17e500c 100644 --- a/modules/nf-core/sortmerna/main.nf +++ b/modules/nf-core/sortmerna/main.nf @@ -9,48 +9,64 @@ process SORTMERNA { input: tuple val(meta), path(reads) - path fastas + tuple val(meta2), path(fastas) + tuple val(meta3), path(index) output: - tuple val(meta), path("*non_rRNA.fastq.gz"), emit: reads - tuple val(meta), path("*.log") , emit: log - path "versions.yml" , emit: versions + tuple val(meta), path("*non_rRNA.fastq.gz"), emit: reads, optional: true + tuple val(meta), path("*.log") , emit: log, optional: true + tuple val(meta2), path("idx") , emit: index, optional: true + 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 reads_input = reads instanceof List ? reads.collect{"--reads $it"}.join(' ') : "--reads $reads" - def n_fastq = reads instanceof List ? reads.size() : 1 - if ( n_fastq == 1 ) { - mv_cmd = "mv non_rRNA_reads.f*q.gz ${prefix}.non_rRNA.fastq.gz" - paired_cmd = '' - out2_cmd = '' - } else { - mv_cmd = """ - mv non_rRNA_reads_fwd.f*q.gz ${prefix}_1.non_rRNA.fastq.gz - mv non_rRNA_reads_rev.f*q.gz ${prefix}_2.non_rRNA.fastq.gz - """.stripIndent() - paired_cmd = "--paired_in" - out2_cmd = "--out2" + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + + def index_only = args.contains('--index 1')? true : false + def skip_index = args.contains('--index 0')? true : false + def paired_end = reads instanceof List + def paired_cmd = '' + def reads_args = '' + def out2_cmd = '' + def mv_cmd = '' + def reads_input = '' + def refs_input = '' + + if (! index_only){ + reads_args = '--aligned rRNA_reads --fastx --other non_rRNA_reads' + reads_input = paired_end ? reads.collect{"--reads $it"}.join(' ') : "--reads $reads" + def n_fastq = paired_end ? reads.size() : 1 + if ( n_fastq == 1 ) { + mv_cmd = """ + mv non_rRNA_reads.f*q.gz ${prefix}.non_rRNA.fastq.gz + mv rRNA_reads.log ${prefix}.sortmerna.log + """ + } else { + mv_cmd = """ + mv non_rRNA_reads_fwd.f*q.gz ${prefix}_1.non_rRNA.fastq.gz + mv non_rRNA_reads_rev.f*q.gz ${prefix}_2.non_rRNA.fastq.gz + mv rRNA_reads.log ${prefix}.sortmerna.log + """ + paired_cmd = "--paired_in" + out2_cmd = "--out2" + } } """ sortmerna \\ ${'--ref '+fastas.join(' --ref ')} \\ + $refs_input \\ $reads_input \\ --threads $task.cpus \\ --workdir . \\ - --aligned rRNA_reads \\ - --fastx \\ - --other non_rRNA_reads \\ + $reads_args \\ $paired_cmd \\ $out2_cmd \\ $args $mv_cmd - mv rRNA_reads.log ${prefix}.sortmerna.log cat <<-END_VERSIONS > versions.yml "${task.process}": @@ -59,20 +75,31 @@ process SORTMERNA { """ stub: - def args = task.ext.args ?: '' - def prefix = task.ext.prefix ?: "${meta.id}" - def reads_input = reads instanceof List ? reads.collect{"--reads $it"}.join(' ') : "--reads $reads" - def n_fastq = reads instanceof List ? reads.size() : 1 - if ( n_fastq == 1 ) { - mv_cmd = "touch ${prefix}.non_rRNA.fastq.gz" - } else { - mv_cmd = """ - touch ${prefix}_1.non_rRNA.fastq.gz - touch ${prefix}_2.non_rRNA.fastq.gz - """.stripIndent() + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + + def index_only = args.contains('--index 1')? true : false + def paired_end = reads instanceof List + def paired_cmd = '' + def out2_cmd = '' + def mv_cmd = '' + def reads_input = '' + + if (! index_only){ + reads_input = paired_end ? reads.collect{"--reads $it"}.join(' ') : "--reads $reads" + def n_fastq = paired_end ? reads.size() : 1 + if ( n_fastq == 1 ) { + mv_cmd = "touch ${prefix}.non_rRNA.fastq.gz" + } else { + mv_cmd = """ + touch ${prefix}_1.non_rRNA.fastq.gz + touch ${prefix}_2.non_rRNA.fastq.gz + """ + } } """ $mv_cmd + mkdir -p idx touch ${prefix}.sortmerna.log cat <<-END_VERSIONS > versions.yml diff --git a/modules/nf-core/sortmerna/meta.yml b/modules/nf-core/sortmerna/meta.yml index de0b18e57..c0a2a581f 100644 --- a/modules/nf-core/sortmerna/meta.yml +++ b/modules/nf-core/sortmerna/meta.yml @@ -23,16 +23,31 @@ input: description: | List of input FastQ files of size 1 and 2 for single-end and paired-end data, respectively. + - meta2: + type: map + description: | + Groovy Map containing reference information + e.g. [ id:'test' ] - fastas: type: file description: | Path to reference file(s) + - meta3: + type: map + description: | + Groovy Map containing index information + e.g. [ id:'test' ] + - index: + type: directory + description: | + Path to index directory of a previous sortmerna run output: - meta: type: map description: | Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] + e.g. [ id:'test', single_end:false ], or reference information from an + indexing-only run - reads: type: file description: The filtered fastq reads @@ -41,6 +56,15 @@ output: type: file description: SortMeRNA log file pattern: "*sortmerna.log" + - meta2: + type: map + description: | + Groovy Map containing reference information + e.g. [ id:'test' ] + - index: + type: directory + description: | + Path to index directory generated by sortmern - versions: type: file description: File containing software versions diff --git a/modules/nf-core/sortmerna/tests/indexing_only.config b/modules/nf-core/sortmerna/tests/indexing_only.config new file mode 100644 index 000000000..3e74a3229 --- /dev/null +++ b/modules/nf-core/sortmerna/tests/indexing_only.config @@ -0,0 +1,5 @@ +process { + withName: 'SORTMERNA' { + ext.args = '--index 1' + } +} diff --git a/modules/nf-core/sortmerna/tests/main.nf.test b/modules/nf-core/sortmerna/tests/main.nf.test index 40b5b55fc..73bc11950 100644 --- a/modules/nf-core/sortmerna/tests/main.nf.test +++ b/modules/nf-core/sortmerna/tests/main.nf.test @@ -7,6 +7,61 @@ nextflow_process { tag "modules_nfcore" tag "sortmerna" + test("sarscov2 indexing only") { + + config './indexing_only.config' + + when { + process { + """ + input[0] = Channel.of([[],[]]) + input[1] = [ [id:'test2'], // meta map + [ file(params.modules_testdata_base_path + "genomics/sarscov2/genome/genome.fasta", checkIfExists: true) ] + ] + input[2] = Channel.of([[],[]]) + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert ! process.out.reads }, + { assert snapshot(process.out.index).match("index_index_only") }, + { assert snapshot(process.out.versions).match("versions_index_only") } + ) + } + + } + + test("sarscov2 indexing only stub") { + + options '-stub' + config './indexing_only.config' + + when { + process { + """ + input[0] = Channel.of([[],[]]) + input[1] = [ [id:'test2'], // meta map + [ file(params.modules_testdata_base_path + "genomics/sarscov2/genome/genome.fasta", checkIfExists: true) ] + ] + input[2] = Channel.of([[],[]]) + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert ! process.out.reads }, + { assert snapshot(process.out.index).match("index_only_stub") }, + { assert snapshot(process.out.versions).match("versions_index_only_stub") } + ) + } + + } + test("sarscov2 single_end") { when { @@ -15,7 +70,10 @@ nextflow_process { input[0] = [ [ id:'test' ], // meta map [ file(params.modules_testdata_base_path + "genomics/sarscov2/illumina/fastq/test_1.fastq.gz", checkIfExists: true) ] ] - input[1] = [ file(params.modules_testdata_base_path + "genomics/sarscov2/genome/genome.fasta", checkIfExists: true) ] + input[1] = [ [id:'test2'], // meta map + [ file(params.modules_testdata_base_path + "genomics/sarscov2/genome/genome.fasta", checkIfExists: true) ] + ] + input[2] = Channel.of([[],[]]) """ } } @@ -34,6 +92,7 @@ nextflow_process { ).sort() ).match("sarscov2 single_end_match") }, + { assert snapshot(process.out.index).match("index_single_end") }, { assert snapshot(process.out.versions).match("versions_single_end") } ) } @@ -50,7 +109,10 @@ nextflow_process { input[0] = [ [ id:'test' ], // meta map [ file(params.modules_testdata_base_path + "genomics/sarscov2/illumina/fastq/test_1.fastq.gz", checkIfExists: true) ] ] - input[1] = [ file(params.modules_testdata_base_path + "genomics/sarscov2/genome/genome.fasta", checkIfExists: true) ] + input[1] = [ [id:'test2'], // meta map + [ file(params.modules_testdata_base_path + "genomics/sarscov2/genome/genome.fasta", checkIfExists: true) ] + ] + input[2] = Channel.of([[],[]]) """ } } @@ -67,6 +129,7 @@ nextflow_process { ).sort() ).match("sarscov2 single_end-for_stub_match") }, + { assert snapshot(process.out.index).match("index_single_end_stub") }, { assert snapshot(process.out.versions).match("versions_single_end_stub") } ) } @@ -85,7 +148,10 @@ nextflow_process { file(params.modules_testdata_base_path + "genomics/sarscov2/illumina/fastq/test_2.fastq.gz", checkIfExists: true) ] ] - input[1] = [ file(params.modules_testdata_base_path + "genomics/sarscov2/genome/genome.fasta", checkIfExists: true) ] + input[1] = [ [id:'test2'], // meta map + [ file(params.modules_testdata_base_path + "genomics/sarscov2/genome/genome.fasta", checkIfExists: true) ] + ] + input[2] = Channel.of([[],[]]) """ } } @@ -104,6 +170,7 @@ nextflow_process { ).sort() ).match("sarscov2 paired_end_match") }, + { assert snapshot(process.out.index).match("index_paired_end") }, { assert snapshot(process.out.versions).match("versions_paired_end") } ) } @@ -123,7 +190,10 @@ nextflow_process { file(params.modules_testdata_base_path + "genomics/sarscov2/illumina/fastq/test_2.fastq.gz", checkIfExists: true) ] ] - input[1] = [ file(params.modules_testdata_base_path + "genomics/sarscov2/genome/genome.fasta", checkIfExists: true) ] + input[1] = [ [id:'test2'], // meta map + [ file(params.modules_testdata_base_path + "genomics/sarscov2/genome/genome.fasta", checkIfExists: true) ] + ] + input[2] = Channel.of([[],[]]) """ } } @@ -140,10 +210,118 @@ nextflow_process { ).sort() ).match("sarscov2 paired_end-for_stub_match") }, + { assert snapshot(process.out.index).match("index_paired_end_stub") }, { assert snapshot(process.out.versions).match("versions_paired_end_stub") } ) } } + test("sarscov2 single_end premade_index") { + + config './premade_index.config' + + setup { + + run("SORTMERNA", alias: "SORTMERNA_INDEX") { + script "../main.nf" + process { + """ + input[0] = Channel.of([[],[]]) + input[1] = [ [id:'test2'], // meta map + [ file(params.modules_testdata_base_path + "genomics/sarscov2/genome/genome.fasta", checkIfExists: true) ] + ] + input[2] = Channel.of([[],[]]) + """ + } + } + } + + when { + process { + """ + input[0] = [ [ id:'test' ], // meta map + [ file(params.modules_testdata_base_path + "genomics/sarscov2/illumina/fastq/test_1.fastq.gz", checkIfExists: true) ] + ] + input[1] = [ [id:'test2'], // meta map + [ file(params.modules_testdata_base_path + "genomics/sarscov2/genome/genome.fasta", checkIfExists: true) ] + ] + input[2] = SORTMERNA_INDEX.out.index + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert process.out.reads }, + { assert file(process.out.log[0][1]).text.contains("Total reads passing E-value threshold = 100 (100.00)") }, + { + assert snapshot( + ( + [process.out.reads[0][0].toString()] + // meta + process.out.reads.collect { file(it[1]).getName() } + + process.out.log.collect { file(it[1]).getName() } + ).sort() + ).match("sarscov2 single_end_premade_index_match") + }, + { assert snapshot(process.out.index).match("index_single_end_premade_index") }, + { assert snapshot(process.out.versions).match("versions_single_end_premade_index") } + ) + } + } + + test("sarscov2 single_end premade_index stub") { + + config './premade_index.config' + options '-stub' + + setup { + + run("SORTMERNA", alias: "SORTMERNA_INDEX") { + script "../main.nf" + process { + """ + input[0] = Channel.of([[],[]]) + input[1] = [ [id:'test2'], // meta map + [ file(params.modules_testdata_base_path + "genomics/sarscov2/genome/genome.fasta", checkIfExists: true) ] + ] + input[2] = Channel.of([[],[]]) + """ + } + } + } + + when { + process { + """ + input[0] = [ [ id:'test' ], // meta map + [ file(params.modules_testdata_base_path + "genomics/sarscov2/illumina/fastq/test_1.fastq.gz", checkIfExists: true) ] + ] + input[1] = [ [id:'test2'], // meta map + [ file(params.modules_testdata_base_path + "genomics/sarscov2/genome/genome.fasta", checkIfExists: true) ] + ] + input[2] = SORTMERNA_INDEX.out.index + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert process.out.reads }, + { + assert snapshot( + ( + [process.out.reads[0][0].toString()] + // meta + process.out.reads.collect { file(it[1]).getName() } + + process.out.log.collect { file(it[1]).getName() } + ).sort() + ).match("sarscov2 single_end_premade_index_match_stub") + }, + { assert snapshot(process.out.index).match("index_single_end_premade_index_stub") }, + { assert snapshot(process.out.versions).match("versions_single_end_premade_index_stub") } + ) + } + } } diff --git a/modules/nf-core/sortmerna/tests/main.nf.test.snap b/modules/nf-core/sortmerna/tests/main.nf.test.snap index 3a25cd88d..86e84733b 100644 --- a/modules/nf-core/sortmerna/tests/main.nf.test.snap +++ b/modules/nf-core/sortmerna/tests/main.nf.test.snap @@ -1,4 +1,179 @@ { + "versions_paired_end_stub": { + "content": [ + [ + "versions.yml:md5,7df9d50209f351e1f75e05a1fad6ba4b" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-07T12:27:11.223149" + }, + "index_paired_end_stub": { + "content": [ + [ + [ + { + "id": "test2" + }, + [ + + ] + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-26T14:24:25.384097178" + }, + "versions_paired_end": { + "content": [ + [ + "versions.yml:md5,7df9d50209f351e1f75e05a1fad6ba4b" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-07T12:27:04.517155" + }, + "versions_single_end_stub": { + "content": [ + [ + "versions.yml:md5,7df9d50209f351e1f75e05a1fad6ba4b" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-01T12:10:35.228450189" + }, + "sarscov2 single_end_match": { + "content": [ + [ + "test.non_rRNA.fastq.gz", + "test.sortmerna.log", + "{id=test}" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-07T12:28:23.20327" + }, + "index_only_stub": { + "content": [ + [ + [ + { + "id": "test2" + }, + [ + + ] + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-26T15:00:47.128504164" + }, + "index_single_end_premade_index": { + "content": [ + [ + [ + { + "id": "test2" + }, + [ + "2415186086593376314.bursttrie_0.dat:md5,74f7f020e8d46e24a8a2e9c5fbcd564a", + "2415186086593376314.kmer_0.dat:md5,4a0bcb71b120f6a6949b7969292ef2e7", + "2415186086593376314.pos_0.dat:md5,bc2875e4cc4017707306565e396839ef", + "2415186086593376314.stats:md5,67c9d4c768f28a450fc82a2b5d43db5c" + ] + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-26T15:01:53.832643452" + }, + "versions_single_end_premade_index": { + "content": [ + [ + "versions.yml:md5,7df9d50209f351e1f75e05a1fad6ba4b" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-26T15:01:53.902154982" + }, + "sarscov2 paired_end-for_stub_match": { + "content": [ + [ + "{id=test}", + [ + "test_1.non_rRNA.fastq.gz", + "test_2.non_rRNA.fastq.gz" + ], + "test.sortmerna.log" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-07T12:28:56.063579" + }, + "index_paired_end": { + "content": [ + [ + [ + { + "id": "test2" + }, + [ + "2415186086593376314.bursttrie_0.dat:md5,74f7f020e8d46e24a8a2e9c5fbcd564a", + "2415186086593376314.kmer_0.dat:md5,4a0bcb71b120f6a6949b7969292ef2e7", + "2415186086593376314.pos_0.dat:md5,bc2875e4cc4017707306565e396839ef", + "2415186086593376314.stats:md5,67c9d4c768f28a450fc82a2b5d43db5c" + ] + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-26T14:24:14.272659781" + }, + "sarscov2 single_end_premade_index_match_stub": { + "content": [ + [ + "test.non_rRNA.fastq.gz", + "test.sortmerna.log", + "{id=test}" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-26T15:05:01.913287272" + }, "sarscov2 single_end-for_stub_match": { "content": [ [ @@ -30,31 +205,31 @@ }, "timestamp": "2024-02-07T12:28:49.914992" }, - "versions_paired_end_stub": { + "versions_single_end": { "content": [ [ - "versions.yml:md5,5a099f3eea59b9deee96deffcf3387f5" + "versions.yml:md5,7df9d50209f351e1f75e05a1fad6ba4b" ] ], "meta": { "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-02-07T12:27:11.223149" + "timestamp": "2024-02-26T14:36:27.14244294" }, - "versions_paired_end": { + "versions_index_only": { "content": [ [ - "versions.yml:md5,5a099f3eea59b9deee96deffcf3387f5" + "versions.yml:md5,7df9d50209f351e1f75e05a1fad6ba4b" ] ], "meta": { "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-02-07T12:27:04.517155" + "timestamp": "2024-02-26T15:00:35.609161481" }, - "versions_single_end": { + "versions_single_end_premade_index_stub": { "content": [ [ "versions.yml:md5,7df9d50209f351e1f75e05a1fad6ba4b" @@ -64,9 +239,28 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-02-01T12:10:22.534568982" + "timestamp": "2024-02-26T15:05:02.059858431" }, - "versions_single_end_stub": { + "index_single_end_stub": { + "content": [ + [ + [ + { + "id": "test2" + }, + [ + + ] + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-26T14:23:58.068772508" + }, + "versions_index_only_stub": { "content": [ [ "versions.yml:md5,7df9d50209f351e1f75e05a1fad6ba4b" @@ -76,37 +270,83 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-02-01T12:10:35.228450189" + "timestamp": "2024-02-26T15:00:47.169402699" }, - "sarscov2 single_end_match": { + "index_single_end_premade_index_stub": { "content": [ [ - "test.non_rRNA.fastq.gz", - "test.sortmerna.log", - "{id=test}" + [ + { + "id": "test2" + }, + [ + + ] + ] ] ], "meta": { "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-02-07T12:28:23.20327" + "timestamp": "2024-02-26T15:05:01.953316205" }, - "sarscov2 paired_end-for_stub_match": { + "index_single_end": { "content": [ [ - "{id=test}", [ - "test_1.non_rRNA.fastq.gz", - "test_2.non_rRNA.fastq.gz" - ], - "test.sortmerna.log" + { + "id": "test2" + }, + [ + "2415186086593376314.bursttrie_0.dat:md5,74f7f020e8d46e24a8a2e9c5fbcd564a", + "2415186086593376314.kmer_0.dat:md5,4a0bcb71b120f6a6949b7969292ef2e7", + "2415186086593376314.pos_0.dat:md5,bc2875e4cc4017707306565e396839ef", + "2415186086593376314.stats:md5,67c9d4c768f28a450fc82a2b5d43db5c" + ] + ] ] ], "meta": { "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-02-07T12:28:56.063579" + "timestamp": "2024-02-26T14:36:26.88061978" + }, + "index_index_only": { + "content": [ + [ + [ + { + "id": "test2" + }, + [ + "2415186086593376314.bursttrie_0.dat:md5,74f7f020e8d46e24a8a2e9c5fbcd564a", + "2415186086593376314.kmer_0.dat:md5,4a0bcb71b120f6a6949b7969292ef2e7", + "2415186086593376314.pos_0.dat:md5,bc2875e4cc4017707306565e396839ef", + "2415186086593376314.stats:md5,67c9d4c768f28a450fc82a2b5d43db5c" + ] + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-26T15:00:35.34089252" + }, + "sarscov2 single_end_premade_index_match": { + "content": [ + [ + "test.non_rRNA.fastq.gz", + "test.sortmerna.log", + "{id=test}" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-26T15:01:53.797737296" } } \ No newline at end of file diff --git a/modules/nf-core/sortmerna/tests/premade_index.config b/modules/nf-core/sortmerna/tests/premade_index.config new file mode 100644 index 000000000..ab86d2e62 --- /dev/null +++ b/modules/nf-core/sortmerna/tests/premade_index.config @@ -0,0 +1,8 @@ +process { + withName: 'SORTMERNA_INDEX' { + ext.args = '--index 1' + } + withName: 'SORTMERNA' { + ext.args = '--index 0' + } +} diff --git a/modules/nf-core/untar/tests/main.nf.test b/modules/nf-core/untar/tests/main.nf.test index 679e83c78..2a7c97bf8 100644 --- a/modules/nf-core/untar/tests/main.nf.test +++ b/modules/nf-core/untar/tests/main.nf.test @@ -3,17 +3,12 @@ nextflow_process { name "Test Process UNTAR" script "../main.nf" process "UNTAR" - tag "modules" tag "modules_nfcore" tag "untar" - test("test_untar") { when { - params { - outdir = "$outputDir" - } process { """ input[0] = [ [], file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/db/kraken2.tar.gz', checkIfExists: true) ] @@ -33,9 +28,6 @@ nextflow_process { test("test_untar_onlyfiles") { when { - params { - outdir = "$outputDir" - } process { """ input[0] = [ [], file(params.modules_testdata_base_path + 'generic/tar/hello.tar.gz', checkIfExists: true) ] diff --git a/modules/nf-core/untar/tests/main.nf.test.snap b/modules/nf-core/untar/tests/main.nf.test.snap index ace425766..64550292f 100644 --- a/modules/nf-core/untar/tests/main.nf.test.snap +++ b/modules/nf-core/untar/tests/main.nf.test.snap @@ -12,7 +12,11 @@ ] ] ], - "timestamp": "2023-10-18T11:56:46.878844" + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-28T11:49:41.320643" }, "test_untar": { "content": [ @@ -29,6 +33,10 @@ ] ] ], - "timestamp": "2023-10-18T11:56:08.16574" + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-28T11:49:33.795172" } } \ No newline at end of file From 8dd99193c2c6e50a320e66391b701b2a32a1c657 Mon Sep 17 00:00:00 2001 From: maxulysse Date: Thu, 29 Feb 2024 14:50:23 +0100 Subject: [PATCH 111/634] update exclusion --- .github/workflows/ci.yml | 6 ------ 1 file changed, 6 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 07fe6c762..5e239c323 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -202,11 +202,6 @@ jobs: - tags: "HISAT2_BUILD" - tags: "KALLISTO_INDEX" - tags: "PIPELINE" - - tags: "RSEQC_INFEREXPERIMENT" - - tags: "RSEQC_INNERDISTANCE" - - tags: "RSEQC_JUNCTIONANNOTATION" - - tags: "RSEQC_JUNCTIONSATURATION" - - tags: "RSEQC_READDUPLICATION" - tags: "SALMON_QUANT" - tags: "SUBREAD_FEATURECOUNTS" - tags: "STAR_ALIGN" @@ -214,7 +209,6 @@ jobs: - tags: "STRINGTIE_STRINGTIE" - tags: "TXIMETA_TXIMPORT" - tags: "UMITOOLS_PREPAREFORRSEM" - - tags: "UNTAR" steps: - name: Check out pipeline code From 595695fad7d196b69205922da6e12f67ed159645 Mon Sep 17 00:00:00 2001 From: maxulysse Date: Thu, 29 Feb 2024 16:11:19 +0100 Subject: [PATCH 112/634] update more modules and remove exclusions --- .github/workflows/ci.yml | 3 - modules.json | 12 +- .../nf-core/salmon/quant/tests/main.nf.test | 10 +- .../tximeta/tximport/tests/main.nf.test | 90 +++--- .../tximeta/tximport/tests/main.nf.test.snap | 6 +- .../fastq_align_hisat2/tests/main.nf.test | 128 ++++++++ .../tests/main.nf.test.snap | 288 ++++++++++++++++++ .../fastq_align_hisat2/tests/nextflow.config | 5 + .../nf-core/fastq_align_hisat2/tests/tags.yml | 2 + .../tests/main.function.nf.test | 2 +- .../tests/main.function.nf.test.snap | 12 +- .../tests/main.workflow.nf.test | 20 +- .../tests/nextflow.config | 2 +- .../tests/main.function.nf.test.snap | 42 ++- .../tests/main.workflow.nf.test.snap | 6 +- .../tests/main.nf.test | 2 +- 16 files changed, 538 insertions(+), 92 deletions(-) create mode 100644 subworkflows/nf-core/fastq_align_hisat2/tests/main.nf.test create mode 100644 subworkflows/nf-core/fastq_align_hisat2/tests/main.nf.test.snap create mode 100644 subworkflows/nf-core/fastq_align_hisat2/tests/nextflow.config create mode 100644 subworkflows/nf-core/fastq_align_hisat2/tests/tags.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 5e239c323..7808d8a36 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -199,15 +199,12 @@ jobs: exclude: - tags: "FASTQ_SUBSAMPLE_FQ_SALMON" - tags: "GFFREAD" - - tags: "HISAT2_BUILD" - tags: "KALLISTO_INDEX" - tags: "PIPELINE" - - tags: "SALMON_QUANT" - tags: "SUBREAD_FEATURECOUNTS" - tags: "STAR_ALIGN" - tags: "STAR_GENOMEGENERATE" - tags: "STRINGTIE_STRINGTIE" - - tags: "TXIMETA_TXIMPORT" - tags: "UMITOOLS_PREPAREFORRSEM" steps: diff --git a/modules.json b/modules.json index 0f3cebbfd..0191de343 100644 --- a/modules.json +++ b/modules.json @@ -157,7 +157,7 @@ }, "salmon/quant": { "branch": "master", - "git_sha": "ffc101e1b84ef3df2e4e4a966e84b3c513ae5693", + "git_sha": "03a8562231d575c313266c193a980594b941e3ea", "installed_by": ["fastq_subsample_fq_salmon", "modules"] }, "samtools/flagstat": { @@ -226,7 +226,7 @@ }, "tximeta/tximport": { "branch": "master", - "git_sha": "376bc3de6c2b763f21d55a7f5d8712d0efbf1b3a", + "git_sha": "03a8562231d575c313266c193a980594b941e3ea", "installed_by": ["modules"] }, "ucsc/bedclip": { @@ -299,7 +299,7 @@ }, "fastq_align_hisat2": { "branch": "master", - "git_sha": "cfd937a668919d948f6fcbf4218e79de50c2f36f", + "git_sha": "701ae347c4508fba1b7d65262596f278b6a11cb6", "installed_by": ["subworkflows"] }, "fastq_fastqc_umitools_fastp": { @@ -319,17 +319,17 @@ }, "utils_nextflow_pipeline": { "branch": "master", - "git_sha": "cd08c91373cd00a73255081340e4914485846ba1", + "git_sha": "5caf7640a9ef1d18d765d55339be751bb0969dfa", "installed_by": ["subworkflows"] }, "utils_nfcore_pipeline": { "branch": "master", - "git_sha": "262b17ed2aad591039f914951659177e6c39a8d8", + "git_sha": "5caf7640a9ef1d18d765d55339be751bb0969dfa", "installed_by": ["subworkflows"] }, "utils_nfvalidation_plugin": { "branch": "master", - "git_sha": "cd08c91373cd00a73255081340e4914485846ba1", + "git_sha": "5caf7640a9ef1d18d765d55339be751bb0969dfa", "installed_by": ["subworkflows"] } } diff --git a/modules/nf-core/salmon/quant/tests/main.nf.test b/modules/nf-core/salmon/quant/tests/main.nf.test index 703b8280a..04e61e2b3 100644 --- a/modules/nf-core/salmon/quant/tests/main.nf.test +++ b/modules/nf-core/salmon/quant/tests/main.nf.test @@ -96,7 +96,7 @@ nextflow_process { """ input[0] = Channel.of([ [ id:'test', single_end: true ], // 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) ] @@ -132,10 +132,10 @@ nextflow_process { input[0] = Channel.of([ [ id:'test', single_end:false ], // meta map [ - file(params.test_data['sarscov2']['illumina']['test_1_fastq_gz'], checkIfExists: true), - file(params.test_data['sarscov2']['illumina']['test_2_fastq_gz'], checkIfExists: true), - file(params.test_data['sarscov2']['illumina']['test2_1_fastq_gz'], checkIfExists: true), - file(params.test_data['sarscov2']['illumina']['test2_2_fastq_gz'], checkIfExists: true) + 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) ] ]) input[1] = SALMON_INDEX.out.index diff --git a/modules/nf-core/tximeta/tximport/tests/main.nf.test b/modules/nf-core/tximeta/tximport/tests/main.nf.test index 09e86d11d..5cf6af83e 100644 --- a/modules/nf-core/tximeta/tximport/tests/main.nf.test +++ b/modules/nf-core/tximeta/tximport/tests/main.nf.test @@ -12,31 +12,31 @@ nextflow_process { tag "untar" test("saccharomyces_cerevisiae - kallisto - gtf") { - - setup { + + setup { run("UNTAR") { script "../../../untar/main.nf" process { """ - input[0] = [ - [ id:'test'], // meta map - file(params.test_data['saccharomyces_cerevisiae']['genome']['kallisto_results'], checkIfExists: true) - ] + input[0] = Channel.of([ + [ id:'test'], // meta map + file(params.modules_testdata_base_path + 'genomics/eukaryotes/saccharomyces_cerevisiae/kallisto_results.tar.gz', checkIfExists: true) + ]) """ } } - run("CUSTOM_TX2GENE") { + run("CUSTOM_TX2GENE") { script "../../../custom/tx2gene/main.nf" process { """ - input[0] = [ - [ id:'test'], // meta map - file(params.test_data['saccharomyces_cerevisiae']['genome']['genome_gfp_gtf'], checkIfExists: true) - ] + input[0] = Channel.of([ + [ id:'test'], // meta map + file(params.modules_testdata_base_path + 'genomics/eukaryotes/saccharomyces_cerevisiae/genome_gfp.gtf', checkIfExists: true) + ]) input[1] = UNTAR.out.untar.map { meta, dir -> [ meta, dir.listFiles().collect() ] } input[2] = 'kallisto' - input[3] = 'gene_id' + input[3] = 'gene_id' input[4] = 'gene_name' """ } @@ -57,22 +57,21 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot(process.out.tpm_gene).match('tpm_gene_kallisto') }, { assert snapshot(process.out.counts_gene).match('counts_gene_kallisto') }, { assert snapshot(process.out.counts_gene_length_scaled).match('counts_gene_length_scaled_kallisto') }, { assert snapshot(process.out.counts_gene_scaled).match('counts_gene_scaled_kallisto') }, - { assert snapshot(process.out.lengths_gene).match('lengths_gene_kallisto') }, - { assert snapshot(process.out.tpm_transcript).match('tpm_transcript_kallisto') }, { assert snapshot(process.out.counts_transcript).match('counts_transcript_kallisto') }, + { assert snapshot(process.out.lengths_gene).match('lengths_gene_kallisto') }, { assert snapshot(process.out.lengths_transcript).match('lengths_transcript_kallisto') }, - { assert snapshot(process.out.versions).match('versions_kallisto') }, + { assert snapshot(process.out.tpm_gene).match('tpm_gene_kallisto') }, + { assert snapshot(process.out.tpm_transcript).match('tpm_transcript_kallisto') }, + { assert snapshot(process.out.versions).match('versions_kallisto') } ) } - } - + test("saccharomyces_cerevisiae - kallisto - gtf - stub") { - + options "-stub" when { @@ -88,45 +87,45 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot(process.out.tpm_gene).match('tpm_gene_kallisto -stub') }, { assert snapshot(process.out.counts_gene).match('counts_gene_kallisto - stub') }, { assert snapshot(process.out.counts_gene_length_scaled).match('counts_gene_length_scaled_kallisto - stub') }, { assert snapshot(process.out.counts_gene_scaled).match('counts_gene_scaled_kallisto - stub') }, - { assert snapshot(process.out.lengths_gene).match('lengths_gene_kallisto - stub') }, - { assert snapshot(process.out.tpm_transcript).match('tpm_transcript_kallisto - stub') }, { assert snapshot(process.out.counts_transcript).match('counts_transcript_kallisto - stub') }, + { assert snapshot(process.out.lengths_gene).match('lengths_gene_kallisto - stub') }, { assert snapshot(process.out.lengths_transcript).match('lengths_transcript_kallisto - stub') }, - { assert snapshot(process.out.versions).match('versions_kallisto - stub') }, + { assert snapshot(process.out.tpm_gene).match('tpm_gene_kallisto - stub') }, + { assert snapshot(process.out.tpm_transcript).match('tpm_transcript_kallisto - stub') }, + { assert snapshot(process.out.versions).match('versions_kallisto - stub') } ) } } test("saccharomyces_cerevisiae - salmon - gtf") { - - setup { + + setup { run("UNTAR") { script "../../../untar/main.nf" process { """ - input[0] = [ - [ id:'test'], // meta map - file(params.test_data['saccharomyces_cerevisiae']['genome']['salmon_results'], checkIfExists: true) - ] + input[0] = Channel.of([ + [ id:'test'], // meta map + file(params.modules_testdata_base_path + 'genomics/eukaryotes/saccharomyces_cerevisiae/salmon_results.tar.gz', checkIfExists: true) + ]) """ } } - run("CUSTOM_TX2GENE") { + run("CUSTOM_TX2GENE") { script "../../../custom/tx2gene/main.nf" process { """ - input[0] = [ - [ id:'test'], // meta map - file(params.test_data['saccharomyces_cerevisiae']['genome']['genome_gfp_gtf'], checkIfExists: true) - ] + input[0] = Channel.of([ + [ id:'test'], // meta map + file(params.modules_testdata_base_path + 'genomics/eukaryotes/saccharomyces_cerevisiae/genome_gfp.gtf', checkIfExists: true) + ]) input[1] = UNTAR.out.untar.map { meta, dir -> [ meta, dir.listFiles().collect() ] } input[2] = 'salmon' - input[3] = 'gene_id' + input[3] = 'gene_id' input[4] = 'gene_name' """ } @@ -147,22 +146,22 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot(process.out.tpm_gene).match('tpm_gene_salmon') }, { assert snapshot(process.out.counts_gene).match('counts_gene_salmon') }, { assert snapshot(process.out.counts_gene_length_scaled).match('counts_gene_length_scaled_salmon') }, { assert snapshot(process.out.counts_gene_scaled).match('counts_gene_scaled_salmon') }, - { assert snapshot(process.out.lengths_gene).match('lengths_gene_salmon') }, - { assert snapshot(process.out.tpm_transcript).match('tpm_transcript_salmon') }, { assert snapshot(process.out.counts_transcript).match('counts_transcript_salmon') }, + { assert snapshot(process.out.lengths_gene).match('lengths_gene_salmon') }, { assert snapshot(process.out.lengths_transcript).match('lengths_transcript_salmon') }, - { assert snapshot(process.out.versions).match('versions_salmon') }, + { assert snapshot(process.out.tpm_gene).match('tpm_gene_salmon') }, + { assert snapshot(process.out.tpm_transcript).match('tpm_transcript_salmon') }, + { assert snapshot(process.out.versions).match('versions_salmon') } ) } } - + test("saccharomyces_cerevisiae - salmon - gtf - stub") { - + options "-stub" when { @@ -178,18 +177,17 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot(process.out.tpm_gene).match('tpm_gene_salmon -stub') }, { assert snapshot(process.out.counts_gene).match('counts_gene_salmon - stub') }, { assert snapshot(process.out.counts_gene_length_scaled).match('counts_gene_length_scaled_salmon - stub') }, { assert snapshot(process.out.counts_gene_scaled).match('counts_gene_scaled_salmon - stub') }, - { assert snapshot(process.out.lengths_gene).match('lengths_gene_salmon - stub') }, - { assert snapshot(process.out.tpm_transcript).match('tpm_transcript_salmon - stub') }, { assert snapshot(process.out.counts_transcript).match('counts_transcript_salmon - stub') }, + { assert snapshot(process.out.lengths_gene).match('lengths_gene_salmon - stub') }, { assert snapshot(process.out.lengths_transcript).match('lengths_transcript_salmon - stub') }, - { assert snapshot(process.out.versions).match('versions_salmon - stub') }, + { assert snapshot(process.out.tpm_gene).match('tpm_gene_salmon - stub') }, + { assert snapshot(process.out.tpm_transcript).match('tpm_transcript_salmon - stub') }, + { assert snapshot(process.out.versions).match('versions_salmon - stub') } ) } - } } diff --git a/modules/nf-core/tximeta/tximport/tests/main.nf.test.snap b/modules/nf-core/tximeta/tximport/tests/main.nf.test.snap index 4961ac3ac..d2b120587 100644 --- a/modules/nf-core/tximeta/tximport/tests/main.nf.test.snap +++ b/modules/nf-core/tximeta/tximport/tests/main.nf.test.snap @@ -1,5 +1,5 @@ { - "tpm_gene_salmon -stub": { + "tpm_gene_salmon - stub": { "content": [ [ [ @@ -164,7 +164,7 @@ }, "timestamp": "2024-02-09T13:30:30.267269829" }, - "tpm_gene_kallisto -stub": { + "tpm_gene_kallisto - stub": { "content": [ [ [ @@ -591,4 +591,4 @@ }, "timestamp": "2024-02-09T13:30:55.694826803" } -} \ No newline at end of file +} diff --git a/subworkflows/nf-core/fastq_align_hisat2/tests/main.nf.test b/subworkflows/nf-core/fastq_align_hisat2/tests/main.nf.test new file mode 100644 index 000000000..b0c0ca512 --- /dev/null +++ b/subworkflows/nf-core/fastq_align_hisat2/tests/main.nf.test @@ -0,0 +1,128 @@ +nextflow_workflow { + + name "Test Subworkflow FASTQ_ALIGN_HISAT2" + script "../main.nf" + workflow "FASTQ_ALIGN_HISAT2" + config "./nextflow.config" + + tag "subworkflows" + tag "subworkflows_nfcore" + tag "subworkflows/fastq_align_hisat2" + + tag "hisat2/align" + tag "hisat2/build" + tag "hisat2/extractsplicesites" + + tag "samtools/flagstat" + tag "samtools/idxstats" + tag "samtools/index" + tag "samtools/sort" + tag "samtools/stats" + tag "subworkflows/bam_sort_stats_samtools" + + setup { + run("HISAT2_EXTRACTSPLICESITES") { + script "../../../../modules/nf-core/hisat2/extractsplicesites/main.nf" + process { + """ + input[0] = Channel.of([ + [id: 'test'], + file(params.modules_testdata_base_path + "genomics/sarscov2/genome/genome.gtf", checkIfExists: true) + ]) + """ + } + } + run("HISAT2_BUILD") { + script "../../../../modules/nf-core/hisat2/build/main.nf" + process { + """ + input[0] = Channel.of([ + [id: 'test'], + file(params.modules_testdata_base_path + "genomics/sarscov2/genome/genome.fasta", checkIfExists: true) + ]) + input[1] = Channel.of([ + [id: 'test'], + file(params.modules_testdata_base_path + "genomics/sarscov2/genome/genome.gtf", checkIfExists: true) + ]) + input[2] = HISAT2_EXTRACTSPLICESITES.out.txt + """ + } + } + } + + test("sarscov2 - bam - single_end") { + + when { + workflow { + """ + 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) + ] + ]) + input[1] = HISAT2_BUILD.out.index + input[2] = HISAT2_EXTRACTSPLICESITES.out.txt + input[3] = Channel.of([ + [ id:'test' ], + file(params.modules_testdata_base_path + "genomics/sarscov2/genome/genome.fasta", checkIfExists: true) + ]) + """ + } + } + + then { + assertAll( + { assert workflow.success}, + { assert snapshot(file(workflow.out.bai[0][1]).name).match("se - bai")}, + { assert snapshot(file(workflow.out.bam[0][1]).name).match("se - bam")}, + { assert snapshot(file(workflow.out.orig_bam[0][1]).name).match("se - orig_bam")}, + { assert snapshot(workflow.out.csi).match("se - csi")}, + { assert snapshot(workflow.out.fastq).match("se - fastq")}, + { assert snapshot(workflow.out.flagstat).match("se - flagstat")}, + { assert snapshot(workflow.out.idxstats).match("se - idxstats")}, + { assert snapshot(workflow.out.stats).match("se - stats")}, + { assert snapshot(workflow.out.summary).match("se - summary")}, + { assert snapshot(workflow.out.versions).match("se - versions")} + ) + } + } + test("sarscov2 - bam - paired_end") { + + when { + workflow { + """ + input[0] = Channel.of([ + [ id:'test', single_end:false ], + [ + 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) + ] + ]) + input[1] = HISAT2_BUILD.out.index + input[2] = HISAT2_EXTRACTSPLICESITES.out.txt + input[3] = Channel.of([ + [ id:'test' ], + file(params.modules_testdata_base_path + "genomics/sarscov2/genome/genome.fasta", checkIfExists: true) + ]) + """ + } + } + + then { + assertAll( + { assert workflow.success}, + { assert snapshot(file(workflow.out.bai[0][1]).name).match("pe - bai")}, + { assert snapshot(file(workflow.out.bam[0][1]).name).match("pe - bam")}, + { assert snapshot(file(workflow.out.orig_bam[0][1]).name).match("pe - orig_bam")}, + { assert snapshot(workflow.out.csi).match("pe - csi")}, + { assert snapshot(workflow.out.fastq).match("pe - fastq")}, + { assert snapshot(workflow.out.flagstat).match("pe - flagstat")}, + { assert snapshot(workflow.out.idxstats).match("pe - idxstats")}, + { assert snapshot(workflow.out.stats).match("pe - stats")}, + { assert snapshot(workflow.out.summary).match("pe - summary")}, + { assert snapshot(workflow.out.versions).match("pe - versions")} + ) + } + } +} diff --git a/subworkflows/nf-core/fastq_align_hisat2/tests/main.nf.test.snap b/subworkflows/nf-core/fastq_align_hisat2/tests/main.nf.test.snap new file mode 100644 index 000000000..d3f669275 --- /dev/null +++ b/subworkflows/nf-core/fastq_align_hisat2/tests/main.nf.test.snap @@ -0,0 +1,288 @@ +{ + "pe - stats": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test.stats:md5,ed4e2ba437f4819b7ab93a6df8dd5348" + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-02-29T13:28:06.091982" + }, + "pe - csi": { + "content": [ + [ + + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-02-29T13:28:06.081055" + }, + "se - bai": { + "content": [ + "test.sorted.bam.bai" + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-02-29T13:27:50.763127" + }, + "pe - flagstat": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test.flagstat:md5,2fa0d90162a1b655863796c2a6bd8f45" + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-02-29T13:28:06.08653" + }, + "pe - orig_bam": { + "content": [ + "test.bam" + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-02-29T13:28:06.077797" + }, + "se - bam": { + "content": [ + "test.sorted.bam" + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-02-29T13:27:50.773767" + }, + "se - summary": { + "content": [ + [ + [ + { + "id": "test", + "single_end": true + }, + "test.hisat2.summary.log:md5,7b8a9e61b7646da1089b041333c41a87" + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-02-29T13:27:50.818659" + }, + "pe - bam": { + "content": [ + "test.sorted.bam" + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-02-29T13:28:06.074968" + }, + "se - versions": { + "content": [ + [ + "versions.yml:md5,34be144fb97a11f1c581b39301f6f0d1", + "versions.yml:md5,4392ca9e255d9137e74a73a8d1e1559d", + "versions.yml:md5,651e735a2754f3be76b516f5fbf099b5", + "versions.yml:md5,912e1daa1e432f6b5ca601ab2294e37f", + "versions.yml:md5,9b7dd7f9a173fbf92f5e476451c840c1", + "versions.yml:md5,b4ccce0351e5718d36600858452dd4b1" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-02-29T13:27:50.826601" + }, + "pe - idxstats": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test.idxstats:md5,1adb27b52d4d64b826f48b59d61dcd4d" + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-02-29T13:28:06.089411" + }, + "pe - bai": { + "content": [ + "test.sorted.bam.bai" + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-02-29T13:28:06.071767" + }, + "pe - fastq": { + "content": [ + [ + + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-02-29T13:28:06.083598" + }, + "se - fastq": { + "content": [ + [ + + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-02-29T13:27:50.782981" + }, + "se - csi": { + "content": [ + [ + + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-02-29T13:27:50.77962" + }, + "se - idxstats": { + "content": [ + [ + [ + { + "id": "test", + "single_end": true + }, + "test.idxstats:md5,2a5df85e0d90e55bb2b359f6e05d5fbb" + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-02-29T13:27:50.798637" + }, + "se - orig_bam": { + "content": [ + "test.bam" + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-02-29T13:27:50.776773" + }, + "pe - summary": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test.hisat2.summary.log:md5,9839b31db795958cc4b70711a3414e9c" + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-02-29T13:28:06.095265" + }, + "pe - versions": { + "content": [ + [ + "versions.yml:md5,34be144fb97a11f1c581b39301f6f0d1", + "versions.yml:md5,4392ca9e255d9137e74a73a8d1e1559d", + "versions.yml:md5,651e735a2754f3be76b516f5fbf099b5", + "versions.yml:md5,912e1daa1e432f6b5ca601ab2294e37f", + "versions.yml:md5,9b7dd7f9a173fbf92f5e476451c840c1", + "versions.yml:md5,b4ccce0351e5718d36600858452dd4b1" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-02-29T13:28:06.098801" + }, + "se - flagstat": { + "content": [ + [ + [ + { + "id": "test", + "single_end": true + }, + "test.flagstat:md5,6de3bfde9582ad2532033832091f5c46" + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-02-29T13:27:50.786813" + }, + "se - stats": { + "content": [ + [ + [ + { + "id": "test", + "single_end": true + }, + "test.stats:md5,f712acf6108a70c3fb06ac51e5e76f15" + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-02-29T13:27:50.804219" + } +} \ No newline at end of file diff --git a/subworkflows/nf-core/fastq_align_hisat2/tests/nextflow.config b/subworkflows/nf-core/fastq_align_hisat2/tests/nextflow.config new file mode 100644 index 000000000..d2a119b55 --- /dev/null +++ b/subworkflows/nf-core/fastq_align_hisat2/tests/nextflow.config @@ -0,0 +1,5 @@ +process { + withName: SAMTOOLS_SORT { + ext.prefix = { "${meta.id}.sorted" } + } +} diff --git a/subworkflows/nf-core/fastq_align_hisat2/tests/tags.yml b/subworkflows/nf-core/fastq_align_hisat2/tests/tags.yml new file mode 100644 index 000000000..8993cde0c --- /dev/null +++ b/subworkflows/nf-core/fastq_align_hisat2/tests/tags.yml @@ -0,0 +1,2 @@ +subworkflows/fastq_align_hisat2: + - subworkflows/nf-core/fastq_align_hisat2/** diff --git a/subworkflows/nf-core/utils_nextflow_pipeline/tests/main.function.nf.test b/subworkflows/nf-core/utils_nextflow_pipeline/tests/main.function.nf.test index 8ed4310ca..68718e4f5 100644 --- a/subworkflows/nf-core/utils_nextflow_pipeline/tests/main.function.nf.test +++ b/subworkflows/nf-core/utils_nextflow_pipeline/tests/main.function.nf.test @@ -51,4 +51,4 @@ nextflow_function { ) } } -} \ No newline at end of file +} diff --git a/subworkflows/nf-core/utils_nextflow_pipeline/tests/main.function.nf.test.snap b/subworkflows/nf-core/utils_nextflow_pipeline/tests/main.function.nf.test.snap index db2030f8b..e3f0baf47 100644 --- a/subworkflows/nf-core/utils_nextflow_pipeline/tests/main.function.nf.test.snap +++ b/subworkflows/nf-core/utils_nextflow_pipeline/tests/main.function.nf.test.snap @@ -3,10 +3,18 @@ "content": [ "v9.9.9" ], - "timestamp": "2024-01-19T11:32:36.031083" + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-28T12:02:05.308243" }, "Test Function checkCondaChannels": { "content": null, - "timestamp": "2024-01-19T11:32:50.456" + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-28T12:02:12.425833" } } \ No newline at end of file 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 f7c54bc68..ca964ce8e 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 @@ -11,9 +11,6 @@ nextflow_workflow { test("Should run no inputs") { when { - params { - outdir = "tests/results" - } workflow { """ print_version = false @@ -39,9 +36,6 @@ nextflow_workflow { test("Should print version") { when { - params { - outdir = "tests/results" - } workflow { """ print_version = true @@ -68,19 +62,16 @@ nextflow_workflow { test("Should dump params") { when { - params { - outdir = "$outputDir" - } workflow { """ print_version = false dump_parameters = true - outdir = params.outdir + outdir = 'results' check_conda_channels = false input[0] = false input[1] = true - input[2] = params.outdir + input[2] = outdir input[3] = false """ } @@ -96,19 +87,16 @@ nextflow_workflow { test("Should not create params JSON if no output directory") { when { - params { - outdir = "$outputDir" - } workflow { """ print_version = false dump_parameters = true - outdir = params.outdir + outdir = null check_conda_channels = false input[0] = false input[1] = true - input[2] = null + input[2] = outdir input[3] = false """ } diff --git a/subworkflows/nf-core/utils_nextflow_pipeline/tests/nextflow.config b/subworkflows/nf-core/utils_nextflow_pipeline/tests/nextflow.config index 53574ffec..d0a926bf6 100644 --- a/subworkflows/nf-core/utils_nextflow_pipeline/tests/nextflow.config +++ b/subworkflows/nf-core/utils_nextflow_pipeline/tests/nextflow.config @@ -6,4 +6,4 @@ manifest { nextflowVersion = '!>=23.04.0' version = '9.9.9' doi = 'https://doi.org/10.5281/zenodo.5070524' -} \ No newline at end of file +} diff --git a/subworkflows/nf-core/utils_nfcore_pipeline/tests/main.function.nf.test.snap b/subworkflows/nf-core/utils_nfcore_pipeline/tests/main.function.nf.test.snap index 10f948e62..1037232c9 100644 --- a/subworkflows/nf-core/utils_nfcore_pipeline/tests/main.function.nf.test.snap +++ b/subworkflows/nf-core/utils_nfcore_pipeline/tests/main.function.nf.test.snap @@ -1,25 +1,41 @@ { "Test Function checkProfileProvided": { "content": null, - "timestamp": "2024-02-09T15:43:55.145717" + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-28T12:03:03.360873" }, "Test Function checkConfigProvided": { "content": [ true ], - "timestamp": "2024-01-19T11:34:13.548431224" + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-28T12:02:59.729647" }, "Test Function nfCoreLogo": { "content": [ "\n\n-\u001b[2m----------------------------------------------------\u001b[0m-\n \u001b[0;32m,--.\u001b[0;30m/\u001b[0;32m,-.\u001b[0m\n\u001b[0;34m ___ __ __ __ ___ \u001b[0;32m/,-._.--~'\u001b[0m\n\u001b[0;34m |\\ | |__ __ / ` / \\ |__) |__ \u001b[0;33m} {\u001b[0m\n\u001b[0;34m | \\| | \\__, \\__/ | \\ |___ \u001b[0;32m\\`-._,-`-,\u001b[0m\n \u001b[0;32m`._,._,'\u001b[0m\n\u001b[0;35m nextflow_workflow v9.9.9\u001b[0m\n-\u001b[2m----------------------------------------------------\u001b[0m-\n" ], - "timestamp": "2024-01-19T11:34:38.840454873" + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-28T12:03:10.562934" }, "Test Function workflowCitation": { "content": [ "If you use nextflow_workflow for your analysis please cite:\n\n* The pipeline\n https://doi.org/10.5281/zenodo.5070524\n\n* The nf-core framework\n https://doi.org/10.1038/s41587-020-0439-x\n\n* Software dependencies\n https://github.com/nextflow_workflow/blob/master/CITATIONS.md" ], - "timestamp": "2024-01-19T11:34:22.24352016" + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-28T12:03:07.019761" }, "Test Function without logColours": { "content": [ @@ -73,13 +89,21 @@ "biwhite": "" } ], - "timestamp": "2024-01-19T11:35:04.418416984" + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-28T12:03:17.969323" }, "Test Function dashedLine": { "content": [ "-\u001b[2m----------------------------------------------------\u001b[0m-" ], - "timestamp": "2024-01-19T11:34:55.420000755" + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-28T12:03:14.366181" }, "Test Function with logColours": { "content": [ @@ -133,6 +157,10 @@ "biwhite": "\u001b[1;97m" } ], - "timestamp": "2024-01-19T11:35:13.436366565" + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-28T12:03:21.714424" } } \ No newline at end of file diff --git a/subworkflows/nf-core/utils_nfcore_pipeline/tests/main.workflow.nf.test.snap b/subworkflows/nf-core/utils_nfcore_pipeline/tests/main.workflow.nf.test.snap index d07ce54c5..859d1030f 100644 --- a/subworkflows/nf-core/utils_nfcore_pipeline/tests/main.workflow.nf.test.snap +++ b/subworkflows/nf-core/utils_nfcore_pipeline/tests/main.workflow.nf.test.snap @@ -10,6 +10,10 @@ ] } ], - "timestamp": "2024-01-19T11:35:22.538940073" + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-28T12:03:25.726491" } } \ No newline at end of file diff --git a/subworkflows/nf-core/utils_nfvalidation_plugin/tests/main.nf.test b/subworkflows/nf-core/utils_nfvalidation_plugin/tests/main.nf.test index 517ee54e4..5784a33f2 100644 --- a/subworkflows/nf-core/utils_nfvalidation_plugin/tests/main.nf.test +++ b/subworkflows/nf-core/utils_nfvalidation_plugin/tests/main.nf.test @@ -197,4 +197,4 @@ nextflow_workflow { ) } } -} \ No newline at end of file +} From e4cf6d3e8a5b767dab66a9674e721218e760928c Mon Sep 17 00:00:00 2001 From: nf-core-bot Date: Thu, 29 Feb 2024 16:12:40 +0000 Subject: [PATCH 113/634] Template update for nf-core/tools version 2.13.1 --- .devcontainer/devcontainer.json | 10 +---- .github/CONTRIBUTING.md | 14 ++++--- .github/PULL_REQUEST_TEMPLATE.md | 2 +- .github/workflows/awsfulltest.yml | 4 +- .github/workflows/awstest.yml | 4 +- .github/workflows/ci.yml | 2 +- .github/workflows/download_pipeline.yml | 2 +- .github/workflows/linting.yml | 2 +- .github/workflows/release-announcements.yml | 2 +- .gitpod.yml | 6 +-- README.md | 3 +- modules.json | 8 ++-- modules/nf-core/multiqc/environment.yml | 2 +- modules/nf-core/multiqc/main.nf | 4 +- .../nf-core/multiqc/tests/main.nf.test.snap | 12 +++--- .../utils_nfcore_rnaseq_pipeline/main.nf | 10 +++-- .../tests/main.function.nf.test | 2 +- .../tests/main.function.nf.test.snap | 12 +++++- .../tests/main.workflow.nf.test | 20 ++------- .../tests/nextflow.config | 2 +- .../tests/main.function.nf.test.snap | 42 +++++++++++++++---- .../tests/main.workflow.nf.test.snap | 6 ++- .../tests/main.nf.test | 2 +- 23 files changed, 99 insertions(+), 74 deletions(-) diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 4ecfbfe33..b290e0901 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -10,15 +10,7 @@ "vscode": { // Set *default* container specific settings.json values on container create. "settings": { - "python.defaultInterpreterPath": "/opt/conda/bin/python", - "python.linting.enabled": true, - "python.linting.pylintEnabled": true, - "python.formatting.autopep8Path": "/opt/conda/bin/autopep8", - "python.formatting.yapfPath": "/opt/conda/bin/yapf", - "python.linting.flake8Path": "/opt/conda/bin/flake8", - "python.linting.pycodestylePath": "/opt/conda/bin/pycodestyle", - "python.linting.pydocstylePath": "/opt/conda/bin/pydocstyle", - "python.linting.pylintPath": "/opt/conda/bin/pylint" + "python.defaultInterpreterPath": "/opt/conda/bin/python" }, // Add the IDs of extensions you want installed when the container is created. diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index 82ce14f40..d784a8bbc 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -9,9 +9,8 @@ Please use the pre-filled template to save time. However, don't be put off by this template - other more general issues and suggestions are welcome! Contributions to the code are even more welcome ;) -:::info -If you need help using or modifying nf-core/rnaseq then the best place to ask is on the nf-core Slack [#rnaseq](https://nfcore.slack.com/channels/rnaseq) channel ([join our Slack here](https://nf-co.re/join/slack)). -::: +> [!NOTE] +> If you need help using or modifying nf-core/rnaseq then the best place to ask is on the nf-core Slack [#rnaseq](https://nfcore.slack.com/channels/rnaseq) channel ([join our Slack here](https://nf-co.re/join/slack)). ## Contribution workflow @@ -27,8 +26,11 @@ If you're not used to this workflow with git, you can start with some [docs from ## Tests -You can optionally test your changes by running the pipeline locally. Then it is recommended to use the `debug` profile to -receive warnings about process selectors and other debug info. Example: `nextflow run . -profile debug,test,docker --outdir `. +You have the option to test your changes locally by running the pipeline. For receiving warnings about process selectors and other `debug` information, it is recommended to use the debug profile. Execute all the tests with the following command: + +```bash +nf-test test --profile debug,test,docker --verbose +``` When you create a pull request with changes, [GitHub Actions](https://github.com/features/actions) will run automatic tests. Typically, pull-requests are only fully reviewed when these tests are passing, though of course we can help out before then. @@ -90,7 +92,7 @@ Once there, use `nf-core schema build` to add to `nextflow_schema.json`. 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. -The process resources can be passed on to the tool dynamically within the process with the `${task.cpu}` and `${task.memory}` variables in the `script:` block. +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. ### Naming schemes diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 5ed2fd931..a034e2fb0 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -18,7 +18,7 @@ Learn more about contributing: [CONTRIBUTING.md](https://github.com/nf-core/rnas - [ ] If you've added a new tool - have you followed the pipeline conventions in the [contribution docs](https://github.com/nf-core/rnaseq/tree/master/.github/CONTRIBUTING.md) - [ ] If necessary, also make a PR on the nf-core/rnaseq _branch_ on the [nf-core/test-datasets](https://github.com/nf-core/test-datasets) repository. - [ ] Make sure your code lints (`nf-core lint`). -- [ ] Ensure the test suite passes (`nextflow run . -profile test,docker --outdir `). +- [ ] Ensure the test suite passes (`nf-test test main.nf.test -profile test,docker`). - [ ] Check for unexpected warnings in debug mode (`nextflow run . -profile debug,test,docker --outdir `). - [ ] Usage Documentation in `docs/usage.md` is updated. - [ ] Output Documentation in `docs/output.md` is updated. diff --git a/.github/workflows/awsfulltest.yml b/.github/workflows/awsfulltest.yml index c0fd17d3f..9075bac51 100644 --- a/.github/workflows/awsfulltest.yml +++ b/.github/workflows/awsfulltest.yml @@ -14,7 +14,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Launch workflow via tower - uses: seqeralabs/action-tower-launch@922e5c8d5ac4e918107ec311d2ebbd65e5982b3d # v2 + uses: seqeralabs/action-tower-launch@v2 # TODO nf-core: You can customise AWS full pipeline tests as required # Add full size test data (but still relatively small datasets for few samples) # on the `test_full.config` test runs with only one set of parameters @@ -31,7 +31,7 @@ jobs: } profiles: test_full - - uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4 + - uses: actions/upload-artifact@v4 with: name: Tower debug log file path: | diff --git a/.github/workflows/awstest.yml b/.github/workflows/awstest.yml index 7565e9f9f..f0f09d0b3 100644 --- a/.github/workflows/awstest.yml +++ b/.github/workflows/awstest.yml @@ -12,7 +12,7 @@ jobs: steps: # Launch workflow using Tower CLI tool action - name: Launch workflow via tower - uses: seqeralabs/action-tower-launch@922e5c8d5ac4e918107ec311d2ebbd65e5982b3d # v2 + uses: seqeralabs/action-tower-launch@v2 with: workspace_id: ${{ secrets.TOWER_WORKSPACE_ID }} access_token: ${{ secrets.TOWER_ACCESS_TOKEN }} @@ -25,7 +25,7 @@ jobs: } profiles: test - - uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4 + - uses: actions/upload-artifact@v4 with: name: Tower debug log file path: | diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 21033e318..414e310d0 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -31,7 +31,7 @@ jobs: uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4 - name: Install Nextflow - uses: nf-core/setup-nextflow@b9f764e8ba5c76b712ace14ecbfcef0e40ae2dd8 # v1 + uses: nf-core/setup-nextflow@v1 with: version: "${{ matrix.NXF_VER }}" diff --git a/.github/workflows/download_pipeline.yml b/.github/workflows/download_pipeline.yml index f823210d6..08622fd51 100644 --- a/.github/workflows/download_pipeline.yml +++ b/.github/workflows/download_pipeline.yml @@ -28,7 +28,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Install Nextflow - uses: nf-core/setup-nextflow@b9f764e8ba5c76b712ace14ecbfcef0e40ae2dd8 # v1 + uses: nf-core/setup-nextflow@v1 - uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # v5 with: diff --git a/.github/workflows/linting.yml b/.github/workflows/linting.yml index 748b43119..073e18767 100644 --- a/.github/workflows/linting.yml +++ b/.github/workflows/linting.yml @@ -35,7 +35,7 @@ jobs: uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4 - name: Install Nextflow - uses: nf-core/setup-nextflow@b9f764e8ba5c76b712ace14ecbfcef0e40ae2dd8 # v1 + uses: nf-core/setup-nextflow@v1 - uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # v5 with: diff --git a/.github/workflows/release-announcements.yml b/.github/workflows/release-announcements.yml index c3674af2e..d468aeaae 100644 --- a/.github/workflows/release-announcements.yml +++ b/.github/workflows/release-announcements.yml @@ -12,7 +12,7 @@ jobs: - name: get topics and convert to hashtags id: get_topics run: | - curl -s https://nf-co.re/pipelines.json | jq -r '.remote_workflows[] | select(.name == "${{ github.repository }}") | .topics[]' | awk '{print "#"$0}' | tr '\n' ' ' > $GITHUB_OUTPUT + 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: diff --git a/.gitpod.yml b/.gitpod.yml index 363d5b1d4..105a1821a 100644 --- a/.gitpod.yml +++ b/.gitpod.yml @@ -10,13 +10,11 @@ tasks: vscode: extensions: # based on nf-core.nf-core-extensionpack - - codezombiech.gitignore # Language support for .gitignore files - # - cssho.vscode-svgviewer # SVG viewer - esbenp.prettier-vscode # Markdown/CommonMark linting and style checking for Visual Studio Code - - eamodio.gitlens # Quickly glimpse into whom, why, and when a line or code block was changed - 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/README.md b/README.md index acbfc45cf..714690eaf 100644 --- a/README.md +++ b/README.md @@ -7,12 +7,13 @@ [![GitHub Actions CI Status](https://github.com/nf-core/rnaseq/actions/workflows/ci.yml/badge.svg)](https://github.com/nf-core/rnaseq/actions/workflows/ci.yml) [![GitHub Actions Linting Status](https://github.com/nf-core/rnaseq/actions/workflows/linting.yml/badge.svg)](https://github.com/nf-core/rnaseq/actions/workflows/linting.yml)[![AWS CI](https://img.shields.io/badge/CI%20tests-full%20size-FF9900?labelColor=000000&logo=Amazon%20AWS)](https://nf-co.re/rnaseq/results)[![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/) [![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/) -[![Launch on Nextflow Tower](https://img.shields.io/badge/Launch%20%F0%9F%9A%80-Nextflow%20Tower-%234256e7)](https://tower.nf/launch?pipeline=https://github.com/nf-core/rnaseq) +[![Launch on Seqera Platform](https://img.shields.io/badge/Launch%20%F0%9F%9A%80-Seqera%20Platform-%234256e7)](https://tower.nf/launch?pipeline=https://github.com/nf-core/rnaseq) [![Get help on Slack](http://img.shields.io/badge/slack-nf--core%20%23rnaseq-4A154B?labelColor=000000&logo=slack)](https://nfcore.slack.com/channels/rnaseq)[![Follow on Twitter](http://img.shields.io/badge/twitter-%40nf__core-1DA1F2?labelColor=000000&logo=twitter)](https://twitter.com/nf_core)[![Follow on Mastodon](https://img.shields.io/badge/mastodon-nf__core-6364ff?labelColor=FFFFFF&logo=mastodon)](https://mstdn.science/@nf_core)[![Watch on YouTube](http://img.shields.io/badge/youtube-nf--core-FF0000?labelColor=000000&logo=youtube)](https://www.youtube.com/c/nf-core) diff --git a/modules.json b/modules.json index debc97f63..9e0494f02 100644 --- a/modules.json +++ b/modules.json @@ -12,7 +12,7 @@ }, "multiqc": { "branch": "master", - "git_sha": "ccacf6f5de6df3bc6d73b665c1fd2933d8bbc290", + "git_sha": "b7ebe95761cd389603f9cc0e0dc384c0f663815a", "installed_by": ["modules"] } } @@ -21,17 +21,17 @@ "nf-core": { "utils_nextflow_pipeline": { "branch": "master", - "git_sha": "cd08c91373cd00a73255081340e4914485846ba1", + "git_sha": "5caf7640a9ef1d18d765d55339be751bb0969dfa", "installed_by": ["subworkflows"] }, "utils_nfcore_pipeline": { "branch": "master", - "git_sha": "262b17ed2aad591039f914951659177e6c39a8d8", + "git_sha": "5caf7640a9ef1d18d765d55339be751bb0969dfa", "installed_by": ["subworkflows"] }, "utils_nfvalidation_plugin": { "branch": "master", - "git_sha": "cd08c91373cd00a73255081340e4914485846ba1", + "git_sha": "5caf7640a9ef1d18d765d55339be751bb0969dfa", "installed_by": ["subworkflows"] } } diff --git a/modules/nf-core/multiqc/environment.yml b/modules/nf-core/multiqc/environment.yml index 2212096af..ca39fb67e 100644 --- a/modules/nf-core/multiqc/environment.yml +++ b/modules/nf-core/multiqc/environment.yml @@ -4,4 +4,4 @@ channels: - bioconda - defaults dependencies: - - bioconda::multiqc=1.20 + - bioconda::multiqc=1.21 diff --git a/modules/nf-core/multiqc/main.nf b/modules/nf-core/multiqc/main.nf index 354f4430f..47ac352f9 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.20--pyhdfd78af_0' : - 'biocontainers/multiqc:1.20--pyhdfd78af_0' }" + 'https://depot.galaxyproject.org/singularity/multiqc:1.21--pyhdfd78af_0' : + 'biocontainers/multiqc:1.21--pyhdfd78af_0' }" input: path multiqc_files, stageAs: "?/*" diff --git a/modules/nf-core/multiqc/tests/main.nf.test.snap b/modules/nf-core/multiqc/tests/main.nf.test.snap index c204b4881..bfebd8029 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,d320d4c37e349c5588e07e7a31cd4186" + "versions.yml:md5,21f35ee29416b9b3073c28733efe4b7d" ] ], "meta": { "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-02-14T09:28:51.744211298" + "timestamp": "2024-02-29T08:48:55.657331" }, "multiqc_stub": { "content": [ @@ -17,25 +17,25 @@ "multiqc_report.html", "multiqc_data", "multiqc_plots", - "versions.yml:md5,d320d4c37e349c5588e07e7a31cd4186" + "versions.yml:md5,21f35ee29416b9b3073c28733efe4b7d" ] ], "meta": { "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-02-14T09:29:28.847433492" + "timestamp": "2024-02-29T08:49:49.071937" }, "multiqc_versions_config": { "content": [ [ - "versions.yml:md5,d320d4c37e349c5588e07e7a31cd4186" + "versions.yml:md5,21f35ee29416b9b3073c28733efe4b7d" ] ], "meta": { "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-02-14T09:29:13.223621555" + "timestamp": "2024-02-29T08:49:25.457567" } } \ No newline at end of file diff --git a/subworkflows/local/utils_nfcore_rnaseq_pipeline/main.nf b/subworkflows/local/utils_nfcore_rnaseq_pipeline/main.nf index dc90ad90c..5ded17618 100644 --- a/subworkflows/local/utils_nfcore_rnaseq_pipeline/main.nf +++ b/subworkflows/local/utils_nfcore_rnaseq_pipeline/main.nf @@ -1,5 +1,5 @@ // -// Subworkflow with functionality specific to the nf-core/pipeline pipeline +// Subworkflow with functionality specific to the nf-core/rnaseq pipeline // /* @@ -152,7 +152,9 @@ workflow PIPELINE_COMPLETION { // def validateInputParameters() { genomeExistsError() -}// +} + +// // Validate channels from input samplesheet // def validateInputSamplesheet(input) { @@ -190,7 +192,9 @@ def genomeExistsError() { "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" error(error_string) } -}// +} + +// // Generate methods description for MultiQC // def toolCitationText() { diff --git a/subworkflows/nf-core/utils_nextflow_pipeline/tests/main.function.nf.test b/subworkflows/nf-core/utils_nextflow_pipeline/tests/main.function.nf.test index 8ed4310ca..68718e4f5 100644 --- a/subworkflows/nf-core/utils_nextflow_pipeline/tests/main.function.nf.test +++ b/subworkflows/nf-core/utils_nextflow_pipeline/tests/main.function.nf.test @@ -51,4 +51,4 @@ nextflow_function { ) } } -} \ No newline at end of file +} diff --git a/subworkflows/nf-core/utils_nextflow_pipeline/tests/main.function.nf.test.snap b/subworkflows/nf-core/utils_nextflow_pipeline/tests/main.function.nf.test.snap index db2030f8b..e3f0baf47 100644 --- a/subworkflows/nf-core/utils_nextflow_pipeline/tests/main.function.nf.test.snap +++ b/subworkflows/nf-core/utils_nextflow_pipeline/tests/main.function.nf.test.snap @@ -3,10 +3,18 @@ "content": [ "v9.9.9" ], - "timestamp": "2024-01-19T11:32:36.031083" + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-28T12:02:05.308243" }, "Test Function checkCondaChannels": { "content": null, - "timestamp": "2024-01-19T11:32:50.456" + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-28T12:02:12.425833" } } \ No newline at end of file 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 f7c54bc68..ca964ce8e 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 @@ -11,9 +11,6 @@ nextflow_workflow { test("Should run no inputs") { when { - params { - outdir = "tests/results" - } workflow { """ print_version = false @@ -39,9 +36,6 @@ nextflow_workflow { test("Should print version") { when { - params { - outdir = "tests/results" - } workflow { """ print_version = true @@ -68,19 +62,16 @@ nextflow_workflow { test("Should dump params") { when { - params { - outdir = "$outputDir" - } workflow { """ print_version = false dump_parameters = true - outdir = params.outdir + outdir = 'results' check_conda_channels = false input[0] = false input[1] = true - input[2] = params.outdir + input[2] = outdir input[3] = false """ } @@ -96,19 +87,16 @@ nextflow_workflow { test("Should not create params JSON if no output directory") { when { - params { - outdir = "$outputDir" - } workflow { """ print_version = false dump_parameters = true - outdir = params.outdir + outdir = null check_conda_channels = false input[0] = false input[1] = true - input[2] = null + input[2] = outdir input[3] = false """ } diff --git a/subworkflows/nf-core/utils_nextflow_pipeline/tests/nextflow.config b/subworkflows/nf-core/utils_nextflow_pipeline/tests/nextflow.config index 53574ffec..d0a926bf6 100644 --- a/subworkflows/nf-core/utils_nextflow_pipeline/tests/nextflow.config +++ b/subworkflows/nf-core/utils_nextflow_pipeline/tests/nextflow.config @@ -6,4 +6,4 @@ manifest { nextflowVersion = '!>=23.04.0' version = '9.9.9' doi = 'https://doi.org/10.5281/zenodo.5070524' -} \ No newline at end of file +} diff --git a/subworkflows/nf-core/utils_nfcore_pipeline/tests/main.function.nf.test.snap b/subworkflows/nf-core/utils_nfcore_pipeline/tests/main.function.nf.test.snap index 10f948e62..1037232c9 100644 --- a/subworkflows/nf-core/utils_nfcore_pipeline/tests/main.function.nf.test.snap +++ b/subworkflows/nf-core/utils_nfcore_pipeline/tests/main.function.nf.test.snap @@ -1,25 +1,41 @@ { "Test Function checkProfileProvided": { "content": null, - "timestamp": "2024-02-09T15:43:55.145717" + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-28T12:03:03.360873" }, "Test Function checkConfigProvided": { "content": [ true ], - "timestamp": "2024-01-19T11:34:13.548431224" + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-28T12:02:59.729647" }, "Test Function nfCoreLogo": { "content": [ "\n\n-\u001b[2m----------------------------------------------------\u001b[0m-\n \u001b[0;32m,--.\u001b[0;30m/\u001b[0;32m,-.\u001b[0m\n\u001b[0;34m ___ __ __ __ ___ \u001b[0;32m/,-._.--~'\u001b[0m\n\u001b[0;34m |\\ | |__ __ / ` / \\ |__) |__ \u001b[0;33m} {\u001b[0m\n\u001b[0;34m | \\| | \\__, \\__/ | \\ |___ \u001b[0;32m\\`-._,-`-,\u001b[0m\n \u001b[0;32m`._,._,'\u001b[0m\n\u001b[0;35m nextflow_workflow v9.9.9\u001b[0m\n-\u001b[2m----------------------------------------------------\u001b[0m-\n" ], - "timestamp": "2024-01-19T11:34:38.840454873" + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-28T12:03:10.562934" }, "Test Function workflowCitation": { "content": [ "If you use nextflow_workflow for your analysis please cite:\n\n* The pipeline\n https://doi.org/10.5281/zenodo.5070524\n\n* The nf-core framework\n https://doi.org/10.1038/s41587-020-0439-x\n\n* Software dependencies\n https://github.com/nextflow_workflow/blob/master/CITATIONS.md" ], - "timestamp": "2024-01-19T11:34:22.24352016" + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-28T12:03:07.019761" }, "Test Function without logColours": { "content": [ @@ -73,13 +89,21 @@ "biwhite": "" } ], - "timestamp": "2024-01-19T11:35:04.418416984" + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-28T12:03:17.969323" }, "Test Function dashedLine": { "content": [ "-\u001b[2m----------------------------------------------------\u001b[0m-" ], - "timestamp": "2024-01-19T11:34:55.420000755" + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-28T12:03:14.366181" }, "Test Function with logColours": { "content": [ @@ -133,6 +157,10 @@ "biwhite": "\u001b[1;97m" } ], - "timestamp": "2024-01-19T11:35:13.436366565" + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-28T12:03:21.714424" } } \ No newline at end of file diff --git a/subworkflows/nf-core/utils_nfcore_pipeline/tests/main.workflow.nf.test.snap b/subworkflows/nf-core/utils_nfcore_pipeline/tests/main.workflow.nf.test.snap index d07ce54c5..859d1030f 100644 --- a/subworkflows/nf-core/utils_nfcore_pipeline/tests/main.workflow.nf.test.snap +++ b/subworkflows/nf-core/utils_nfcore_pipeline/tests/main.workflow.nf.test.snap @@ -10,6 +10,10 @@ ] } ], - "timestamp": "2024-01-19T11:35:22.538940073" + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-28T12:03:25.726491" } } \ No newline at end of file diff --git a/subworkflows/nf-core/utils_nfvalidation_plugin/tests/main.nf.test b/subworkflows/nf-core/utils_nfvalidation_plugin/tests/main.nf.test index 517ee54e4..5784a33f2 100644 --- a/subworkflows/nf-core/utils_nfvalidation_plugin/tests/main.nf.test +++ b/subworkflows/nf-core/utils_nfvalidation_plugin/tests/main.nf.test @@ -197,4 +197,4 @@ nextflow_workflow { ) } } -} \ No newline at end of file +} From 57699c3c24c6a54a28fd1060c14ef2ac55855791 Mon Sep 17 00:00:00 2001 From: maxulysse Date: Thu, 29 Feb 2024 17:27:35 +0100 Subject: [PATCH 114/634] fix hisat2 tests --- tests/nextflow.config | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tests/nextflow.config b/tests/nextflow.config index 7ece4771e..f84b2d02b 100644 --- a/tests/nextflow.config +++ b/tests/nextflow.config @@ -11,6 +11,9 @@ params { // Base directory for nf-core/rnaseq test data pipelines_testdata_base_path = 's3://ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15' + // for hisat2 + hisat2_build_memory = '3.GB' + validationSchemaIgnoreParams = 'genomes,igenomes_base,modules_testdata_base_path,pipelines_testdata_base_path' } From 486a2683b3886c2ef9b42b0d7f54a043c96d031c Mon Sep 17 00:00:00 2001 From: maxulysse Date: Thu, 29 Feb 2024 17:47:01 +0100 Subject: [PATCH 115/634] fix linting --- .github/CONTRIBUTING.md | 14 ++++++++------ .github/PULL_REQUEST_TEMPLATE.md | 2 +- .github/workflows/linting.yml | 2 +- 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index 82ce14f40..d784a8bbc 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -9,9 +9,8 @@ Please use the pre-filled template to save time. However, don't be put off by this template - other more general issues and suggestions are welcome! Contributions to the code are even more welcome ;) -:::info -If you need help using or modifying nf-core/rnaseq then the best place to ask is on the nf-core Slack [#rnaseq](https://nfcore.slack.com/channels/rnaseq) channel ([join our Slack here](https://nf-co.re/join/slack)). -::: +> [!NOTE] +> If you need help using or modifying nf-core/rnaseq then the best place to ask is on the nf-core Slack [#rnaseq](https://nfcore.slack.com/channels/rnaseq) channel ([join our Slack here](https://nf-co.re/join/slack)). ## Contribution workflow @@ -27,8 +26,11 @@ If you're not used to this workflow with git, you can start with some [docs from ## Tests -You can optionally test your changes by running the pipeline locally. Then it is recommended to use the `debug` profile to -receive warnings about process selectors and other debug info. Example: `nextflow run . -profile debug,test,docker --outdir `. +You have the option to test your changes locally by running the pipeline. For receiving warnings about process selectors and other `debug` information, it is recommended to use the debug profile. Execute all the tests with the following command: + +```bash +nf-test test --profile debug,test,docker --verbose +``` When you create a pull request with changes, [GitHub Actions](https://github.com/features/actions) will run automatic tests. Typically, pull-requests are only fully reviewed when these tests are passing, though of course we can help out before then. @@ -90,7 +92,7 @@ Once there, use `nf-core schema build` to add to `nextflow_schema.json`. 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. -The process resources can be passed on to the tool dynamically within the process with the `${task.cpu}` and `${task.memory}` variables in the `script:` block. +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. ### Naming schemes diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 5ed2fd931..a034e2fb0 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -18,7 +18,7 @@ Learn more about contributing: [CONTRIBUTING.md](https://github.com/nf-core/rnas - [ ] If you've added a new tool - have you followed the pipeline conventions in the [contribution docs](https://github.com/nf-core/rnaseq/tree/master/.github/CONTRIBUTING.md) - [ ] If necessary, also make a PR on the nf-core/rnaseq _branch_ on the [nf-core/test-datasets](https://github.com/nf-core/test-datasets) repository. - [ ] Make sure your code lints (`nf-core lint`). -- [ ] Ensure the test suite passes (`nextflow run . -profile test,docker --outdir `). +- [ ] Ensure the test suite passes (`nf-test test main.nf.test -profile test,docker`). - [ ] Check for unexpected warnings in debug mode (`nextflow run . -profile debug,test,docker --outdir `). - [ ] Usage Documentation in `docs/usage.md` is updated. - [ ] Output Documentation in `docs/output.md` is updated. diff --git a/.github/workflows/linting.yml b/.github/workflows/linting.yml index 748b43119..073e18767 100644 --- a/.github/workflows/linting.yml +++ b/.github/workflows/linting.yml @@ -35,7 +35,7 @@ jobs: uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4 - name: Install Nextflow - uses: nf-core/setup-nextflow@b9f764e8ba5c76b712ace14ecbfcef0e40ae2dd8 # v1 + uses: nf-core/setup-nextflow@v1 - uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # v5 with: From 0b5babbe0dbd0b17481706d05beda71f5026bb96 Mon Sep 17 00:00:00 2001 From: maxulysse Date: Thu, 29 Feb 2024 18:00:01 +0100 Subject: [PATCH 116/634] fix FASTQ_SUBSAMPLE_FQ_SALMON --- tests/nextflow.config | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/tests/nextflow.config b/tests/nextflow.config index f84b2d02b..89fefa4f3 100644 --- a/tests/nextflow.config +++ b/tests/nextflow.config @@ -14,7 +14,10 @@ params { // for hisat2 hisat2_build_memory = '3.GB' - validationSchemaIgnoreParams = 'genomes,igenomes_base,modules_testdata_base_path,pipelines_testdata_base_path' + validationSchemaIgnoreParams = 'genomes,igenomes_base,modules_testdata_base_path,pipelines_testdata_base_path' + + // TODO: check if we rather do this or disable publishdir for all processes when testing modules/subworkflows + outdir = 'results' } // Impose sensible resource limits for testing From 64969cd72ae82b1ce59c94be93ebd787b9fc4c80 Mon Sep 17 00:00:00 2001 From: maxulysse Date: Thu, 29 Feb 2024 18:10:42 +0100 Subject: [PATCH 117/634] restore even more excluded tests --- .github/workflows/ci.yml | 4 ---- 1 file changed, 4 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 7808d8a36..9ca177595 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -197,13 +197,9 @@ jobs: profile: - "docker" exclude: - - tags: "FASTQ_SUBSAMPLE_FQ_SALMON" - tags: "GFFREAD" - - tags: "KALLISTO_INDEX" - tags: "PIPELINE" - tags: "SUBREAD_FEATURECOUNTS" - - tags: "STAR_ALIGN" - - tags: "STAR_GENOMEGENERATE" - tags: "STRINGTIE_STRINGTIE" - tags: "UMITOOLS_PREPAREFORRSEM" From 0b133da911e2ee09a54c288ad47c211cfee5f57f Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Fri, 1 Mar 2024 09:25:39 +0000 Subject: [PATCH 118/634] Make README usage consistent with docs/usage.md --- README.md | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 156193b47..e418cc98b 100644 --- a/README.md +++ b/README.md @@ -80,10 +80,13 @@ Now, you can run the pipeline using: ```bash nextflow run nf-core/rnaseq \ - --input samplesheet.csv \ + --input \ --outdir \ - --genome GRCh37 \ - -profile + --gtf \ + --fasta \ + --igenomes_ignore \ + --genome null \ + -profile docker ``` > [!WARNING] From a2abe9d2579fa8ba01e4358b151a210821cc8a5d Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Fri, 1 Mar 2024 09:28:21 +0000 Subject: [PATCH 119/634] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index e418cc98b..452158956 100644 --- a/README.md +++ b/README.md @@ -86,7 +86,7 @@ nextflow run nf-core/rnaseq \ --fasta \ --igenomes_ignore \ --genome null \ - -profile docker + -profile ``` > [!WARNING] From 29f4b71be5dac6c4c6623d8e0a39b3a6023d3eae Mon Sep 17 00:00:00 2001 From: maxulysse Date: Fri, 1 Mar 2024 12:23:40 +0100 Subject: [PATCH 120/634] fix linting --- .nf-core.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.nf-core.yml b/.nf-core.yml index 4a8f73fda..765d2608a 100644 --- a/.nf-core.yml +++ b/.nf-core.yml @@ -4,6 +4,7 @@ lint: - assets/email_template.html - assets/email_template.txt - .gitignore + - .github/PULL_REQUEST_TEMPLATE.md files_exist: - conf/modules.config nextflow_config: From b688c96e93721b0515b7dddcbbd7427222641848 Mon Sep 17 00:00:00 2001 From: Maxime U Garcia Date: Fri, 1 Mar 2024 12:23:58 +0100 Subject: [PATCH 121/634] Update .github/PULL_REQUEST_TEMPLATE.md --- .github/PULL_REQUEST_TEMPLATE.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index a034e2fb0..66328a8d5 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -18,7 +18,7 @@ Learn more about contributing: [CONTRIBUTING.md](https://github.com/nf-core/rnas - [ ] If you've added a new tool - have you followed the pipeline conventions in the [contribution docs](https://github.com/nf-core/rnaseq/tree/master/.github/CONTRIBUTING.md) - [ ] If necessary, also make a PR on the nf-core/rnaseq _branch_ on the [nf-core/test-datasets](https://github.com/nf-core/test-datasets) repository. - [ ] Make sure your code lints (`nf-core lint`). -- [ ] Ensure the test suite passes (`nf-test test main.nf.test -profile test,docker`). +- [ ] Ensure the test suite passes (`nf-test test tests/ --verbose --profile +docker`). - [ ] Check for unexpected warnings in debug mode (`nextflow run . -profile debug,test,docker --outdir `). - [ ] Usage Documentation in `docs/usage.md` is updated. - [ ] Output Documentation in `docs/output.md` is updated. From 89b6dce84551ff41bdf391810d1b559443776ec5 Mon Sep 17 00:00:00 2001 From: maxulysse Date: Fri, 1 Mar 2024 12:35:57 +0100 Subject: [PATCH 122/634] update subwokflows/modules and exclusion --- .github/workflows/ci.yml | 1 - modules.json | 6 +- modules/nf-core/trimgalore/environment.yml | 1 + modules/nf-core/trimgalore/tests/main.nf.test | 14 +- .../trimgalore/tests/main.nf.test.snap | 154 ++--------- .../umitools/extract/tests/main.nf.test | 8 +- .../tests/main.nf.test | 147 +++++++++++ .../tests/main.nf.test.snap | 247 ++++++++++++++++++ .../tests/nextflow.config | 5 + .../tests/tags.yml | 2 + 10 files changed, 428 insertions(+), 157 deletions(-) create mode 100644 subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/tests/main.nf.test create mode 100644 subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/tests/main.nf.test.snap create mode 100644 subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/tests/nextflow.config create mode 100644 subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/tests/tags.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 9ca177595..01af5ada6 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -199,7 +199,6 @@ jobs: exclude: - tags: "GFFREAD" - tags: "PIPELINE" - - tags: "SUBREAD_FEATURECOUNTS" - tags: "STRINGTIE_STRINGTIE" - tags: "UMITOOLS_PREPAREFORRSEM" diff --git a/modules.json b/modules.json index 0191de343..4b0d5ed9e 100644 --- a/modules.json +++ b/modules.json @@ -221,7 +221,7 @@ }, "trimgalore": { "branch": "master", - "git_sha": "2e6c468e0ad43b23df71d7a7f130d5c0e0aa89e3", + "git_sha": "d2c5e76f291379f3dd403e48e46ed7e6ba5da744", "installed_by": ["fastq_fastqc_umitools_trimgalore"] }, "tximeta/tximport": { @@ -246,7 +246,7 @@ }, "umitools/extract": { "branch": "master", - "git_sha": "ff7e93715a2acecf3f143ec78c9858deba2984d0", + "git_sha": "d2c5e76f291379f3dd403e48e46ed7e6ba5da744", "installed_by": ["fastq_fastqc_umitools_fastp", "fastq_fastqc_umitools_trimgalore"] }, "umitools/prepareforrsem": { @@ -309,7 +309,7 @@ }, "fastq_fastqc_umitools_trimgalore": { "branch": "master", - "git_sha": "cfd937a668919d948f6fcbf4218e79de50c2f36f", + "git_sha": "d2c5e76f291379f3dd403e48e46ed7e6ba5da744", "installed_by": ["subworkflows"] }, "fastq_subsample_fq_salmon": { diff --git a/modules/nf-core/trimgalore/environment.yml b/modules/nf-core/trimgalore/environment.yml index 6cd0f51b3..17b39f4a5 100644 --- a/modules/nf-core/trimgalore/environment.yml +++ b/modules/nf-core/trimgalore/environment.yml @@ -5,3 +5,4 @@ channels: - defaults dependencies: - bioconda::trim-galore=0.6.7 + - bioconda::cutadapt=3.4 diff --git a/modules/nf-core/trimgalore/tests/main.nf.test b/modules/nf-core/trimgalore/tests/main.nf.test index 3e3819b6d..43904ac32 100644 --- a/modules/nf-core/trimgalore/tests/main.nf.test +++ b/modules/nf-core/trimgalore/tests/main.nf.test @@ -10,9 +10,6 @@ nextflow_process { test("test_trimgalore_single_end") { when { - params { - outdir = "$outputDir" - } process { """ input[0] = [ [ id:'test', single_end:true ], // meta map @@ -41,7 +38,8 @@ nextflow_process { { report1_lines.each { report1_line -> { assert path(process.out.log.get(0).get(1)).getText().contains(report1_line) } } - } + }, + { assert snapshot(process.out.versions).match() } ) } } @@ -49,13 +47,10 @@ nextflow_process { test("test_trimgalore_paired_end") { when { - params { - outdir = "$outputDir" - } process { """ input[0] = [ [ 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) ] @@ -100,7 +95,8 @@ nextflow_process { { report2_lines.each { report2_line -> { assert path(process.out.log.get(0).get(1).get(1)).getText().contains(report2_line) } } - } + }, + { assert snapshot(process.out.versions).match() } ) } } diff --git a/modules/nf-core/trimgalore/tests/main.nf.test.snap b/modules/nf-core/trimgalore/tests/main.nf.test.snap index 84feacca2..082c55004 100644 --- a/modules/nf-core/trimgalore/tests/main.nf.test.snap +++ b/modules/nf-core/trimgalore/tests/main.nf.test.snap @@ -1,148 +1,26 @@ { "test_trimgalore_single_end": { "content": [ - { - "0": [ - [ - { - "id": "test", - "single_end": true - }, - "test_trimmed.fq.gz:md5,e0a7516b8ea8d6467d6306acb2cd13c4" - ] - ], - "1": [ - [ - { - "id": "test", - "single_end": true - }, - "test.fastq.gz_trimming_report.txt:md5,a1ab3958205f1ddf48af623242b5b429" - ] - ], - "2": [ - - ], - "3": [ - - ], - "4": [ - - ], - "5": [ - "versions.yml:md5,47d966cbb31c80eb8f7fe860d55659b7" - ], - "html": [ - - ], - "log": [ - [ - { - "id": "test", - "single_end": true - }, - "test.fastq.gz_trimming_report.txt:md5,a1ab3958205f1ddf48af623242b5b429" - ] - ], - "reads": [ - [ - { - "id": "test", - "single_end": true - }, - "test_trimmed.fq.gz:md5,e0a7516b8ea8d6467d6306acb2cd13c4" - ] - ], - "unpaired": [ - - ], - "versions": [ - "versions.yml:md5,47d966cbb31c80eb8f7fe860d55659b7" - ], - "zip": [ - - ] - } + [ + "versions.yml:md5,47d966cbb31c80eb8f7fe860d55659b7" + ] ], - "timestamp": "2023-10-17T15:24:57.782141441" + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-02-29T16:33:20.401347" }, "test_trimgalore_paired_end": { "content": [ - { - "0": [ - [ - { - "id": "test", - "single_end": false - }, - [ - "test_1_val_1.fq.gz:md5,e0a7516b8ea8d6467d6306acb2cd13c4", - "test_2_val_2.fq.gz:md5,f3d61189e6d10202da7b8686f1dbb71b" - ] - ] - ], - "1": [ - [ - { - "id": "test", - "single_end": false - }, - [ - "test_1.fastq.gz_trimming_report.txt:md5,315d40465412f9909bbaabf52269274d", - "test_2.fastq.gz_trimming_report.txt:md5,34436303da1c78811103427a2fb57f7b" - ] - ] - ], - "2": [ - - ], - "3": [ - - ], - "4": [ - - ], - "5": [ - "versions.yml:md5,47d966cbb31c80eb8f7fe860d55659b7" - ], - "html": [ - - ], - "log": [ - [ - { - "id": "test", - "single_end": false - }, - [ - "test_1.fastq.gz_trimming_report.txt:md5,315d40465412f9909bbaabf52269274d", - "test_2.fastq.gz_trimming_report.txt:md5,34436303da1c78811103427a2fb57f7b" - ] - ] - ], - "reads": [ - [ - { - "id": "test", - "single_end": false - }, - [ - "test_1_val_1.fq.gz:md5,e0a7516b8ea8d6467d6306acb2cd13c4", - "test_2_val_2.fq.gz:md5,f3d61189e6d10202da7b8686f1dbb71b" - ] - ] - ], - "unpaired": [ - - ], - "versions": [ - "versions.yml:md5,47d966cbb31c80eb8f7fe860d55659b7" - ], - "zip": [ - - ] - } + [ + "versions.yml:md5,47d966cbb31c80eb8f7fe860d55659b7" + ] ], - "timestamp": "2023-10-17T15:25:08.513589909" + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-02-29T16:33:28.960497" } } \ No newline at end of file diff --git a/modules/nf-core/umitools/extract/tests/main.nf.test b/modules/nf-core/umitools/extract/tests/main.nf.test index 83a77a1b1..2a8eba150 100644 --- a/modules/nf-core/umitools/extract/tests/main.nf.test +++ b/modules/nf-core/umitools/extract/tests/main.nf.test @@ -12,9 +12,6 @@ nextflow_process { test("Should run without failures") { when { - params { - outdir = "$outputDir" - } process { """ input[0] = [ [ id:'test', single_end:true ], // meta map @@ -26,10 +23,9 @@ nextflow_process { then { assertAll ( - { assert process.success }, - { assert snapshot(process.out.versions).match("versions") } + { assert process.success }, + { assert snapshot(process.out.versions).match("versions") } ) } - } } \ No newline at end of file diff --git a/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/tests/main.nf.test b/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/tests/main.nf.test new file mode 100644 index 000000000..3a6cae860 --- /dev/null +++ b/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/tests/main.nf.test @@ -0,0 +1,147 @@ +nextflow_workflow { + + name "Test Subworkflow FASTQ_FASTQC_UMITOOLS_TRIMGALORE" + script "../main.nf" + workflow "FASTQ_FASTQC_UMITOOLS_TRIMGALORE" + config './nextflow.config' + + tag "subworkflows" + tag "subworkflows_nfcore" + tag "subworkflows/fastq_fastqc_umitools_trimgalore" + tag "fastqc" + tag "umitools/extract" + tag "trimgalore" + + tag "FASTQC" + tag "UMITOOLS_EXTRACT" + tag "TRIMGALORE" + + test("test single end read with UMI") { + + when { + workflow { + """ + input[0] = Channel.of([ + [ id:'test', single_end:true ], // meta map + [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true) ] + ]) + input[1] = false // skip_fastqc + input[2] = true // with_umi + input[3] = false // skip_umi_extract + input[4] = false // skip_trimming + input[5] = 1 // umi_discard_read + input[6] = 1 // min_trimmed_reads + """ + } + } + + then { + assertAll( + { assert workflow.success}, + { assert path(workflow.out.fastqc_html[0][1]).text.contains("
    ") }, + { assert snapshot(workflow.out.reads).match("se - reads") }, + { assert snapshot(workflow.out.trim_read_count).match("se - trim_read_count") }, + { assert snapshot(workflow.out.trim_unpaired).match("se - trim_unpaired") }, + { assert snapshot(workflow.out.versions).match("se - versions") } + ) + } + } + + test("test paired end read with UMI") { + + when { + workflow { + """ + 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) + ] + ]) + input[1] = false // skip_fastqc + input[2] = true // with_umi + input[3] = false // skip_umi_extract + input[4] = false // skip_trimming + input[5] = 1 // umi_discard_read + input[6] = 1 // min_trimmed_reads + """ + } + } + + then { + assertAll( + { assert workflow.success}, + { assert snapshot(workflow.out.reads).match("pe - reads") }, + { assert snapshot(workflow.out.trim_read_count).match("pe - trim_read_count") }, + { assert snapshot(workflow.out.trim_unpaired).match("pe - trim_unpaired") }, + { assert snapshot(workflow.out.versions).match("pe - versions") } + ) + } + } + test("test paired end read without UMI") { + + when { + workflow { + """ + 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) + ] + ]) + input[1] = false // skip_fastqc + input[2] = false // with_umi + input[3] = false // skip_umi_extract + input[4] = false // skip_trimming + input[5] = 1 // umi_discard_read + input[6] = 1 // min_trimmed_reads + """ + } + } + + then { + assertAll( + { assert workflow.success}, + { assert snapshot(workflow.out.reads).match("pe no umi - reads") }, + { assert snapshot(workflow.out.trim_read_count).match("pe no umi - trim_read_count") }, + { assert snapshot(workflow.out.trim_unpaired).match("pe no umi - trim_unpaired") }, + { assert snapshot(workflow.out.versions).match("pe no umi - versions") } + ) + } + } + + test("test skip all steps") { + + when { + workflow { + """ + 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) + ] + ]) + input[1] = true // skip_fastqc + input[2] = true // with_umi + input[3] = true // skip_umi_extract + input[4] = true // skip_trimming + input[5] = 0 // umi_discard_read + input[6] = 1 // min_trimmed_reads + """ + } + } + + then { + assertAll( + { assert workflow.success}, + { assert snapshot(workflow.out.reads).match("pe skip all - reads") }, + { assert snapshot(workflow.out.trim_read_count).match("pe skip all - trim_read_count") }, + { assert snapshot(workflow.out.trim_unpaired).match("pe skip all - trim_unpaired") }, + { assert snapshot(workflow.out.versions).match("pe skip all - versions") } + ) + } + } +} diff --git a/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/tests/main.nf.test.snap b/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/tests/main.nf.test.snap new file mode 100644 index 000000000..f7379500e --- /dev/null +++ b/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/tests/main.nf.test.snap @@ -0,0 +1,247 @@ +{ + "pe no umi - reads": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test_1_val_1.fq.gz:md5,566d44cca0d22c522d6cf0e50c7165dc", + "test_2_val_2.fq.gz:md5,3c023e8e890b897821df3dc98f48c2b3" + ] + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-02-29T14:41:48.470766" + }, + "pe skip all - trim_unpaired": { + "content": [ + [ + + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-02-29T14:41:59.820606" + }, + "pe skip all - versions": { + "content": [ + [ + + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-02-29T14:41:59.831239" + }, + "pe - trim_read_count": { + "content": [ + [ + [ + { + "id": "test", + "single_end": true + }, + 100.0 + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-02-29T14:41:28.817321" + }, + "se - trim_read_count": { + "content": [ + [ + [ + { + "id": "test", + "single_end": true + }, + 100.0 + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-02-29T14:41:05.520435" + }, + "se - trim_unpaired": { + "content": [ + [ + + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-02-29T14:41:05.535593" + }, + "pe no umi - trim_unpaired": { + "content": [ + [ + + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-02-29T14:41:48.49149" + }, + "pe - reads": { + "content": [ + [ + [ + { + "id": "test", + "single_end": true + }, + "test_trimmed.fq.gz:md5,9c58b78ac2c7b5ce9ca6b090eee1d39c" + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-02-29T14:41:28.810693" + }, + "se - reads": { + "content": [ + [ + [ + { + "id": "test", + "single_end": true + }, + "test_trimmed.fq.gz:md5,faae784affdd7d84e2fa9da9e9425229" + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-02-29T14:41:05.481086" + }, + "se - versions": { + "content": [ + [ + "versions.yml:md5,0a5b8fa83ba29cf645bf9e9471cca150", + "versions.yml:md5,3e4b7f058c0aa96ba41c3e4d6df6e839", + "versions.yml:md5,7e740129a23c5ac21c27476e30f8a6d2" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-02-29T14:41:05.551084" + }, + "pe skip all - reads": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + [ + "/nf-core/test-datasets/modules/data/genomics/sarscov2/illumina/fastq/test_1.fastq.gz", + "/nf-core/test-datasets/modules/data/genomics/sarscov2/illumina/fastq/test_2.fastq.gz" + ] + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-02-29T14:41:59.799159" + }, + "pe no umi - versions": { + "content": [ + [ + "versions.yml:md5,0a5b8fa83ba29cf645bf9e9471cca150", + "versions.yml:md5,7e740129a23c5ac21c27476e30f8a6d2" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-02-29T14:41:48.50189" + }, + "pe no umi - trim_read_count": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + 100.0 + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-02-29T14:41:48.482197" + }, + "pe - versions": { + "content": [ + [ + "versions.yml:md5,0a5b8fa83ba29cf645bf9e9471cca150", + "versions.yml:md5,3e4b7f058c0aa96ba41c3e4d6df6e839", + "versions.yml:md5,7e740129a23c5ac21c27476e30f8a6d2" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-02-29T14:41:28.837523" + }, + "pe skip all - trim_read_count": { + "content": [ + [ + + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-02-29T14:41:59.808588" + }, + "pe - trim_unpaired": { + "content": [ + [ + + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-02-29T14:41:28.824011" + } +} \ No newline at end of file diff --git a/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/tests/nextflow.config b/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/tests/nextflow.config new file mode 100644 index 000000000..06a7d07a7 --- /dev/null +++ b/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/tests/nextflow.config @@ -0,0 +1,5 @@ +process { + withName: UMITOOLS_EXTRACT { + ext.args = '--bc-pattern="NNNN"' + } +} diff --git a/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/tests/tags.yml b/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/tests/tags.yml new file mode 100644 index 000000000..5bf59db41 --- /dev/null +++ b/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/tests/tags.yml @@ -0,0 +1,2 @@ +subworkflows/fastq_fastqc_umitools_trimgalore: + - subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/** From a35722954371a5298c833f217709bc090d78aefc Mon Sep 17 00:00:00 2001 From: maxulysse Date: Fri, 1 Mar 2024 12:46:29 +0100 Subject: [PATCH 123/634] update CHANGELOG --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index bb8d62886..581304379 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 - [PR #1218](https://github.com/nf-core/rnaseq/pull/1218) - Template update for nf-core/tools v2.13 - [PR #1220](https://github.com/nf-core/rnaseq/pull/1220) - Initialise nf-test and add pipeline level test - [PR #1226](https://github.com/nf-core/rnaseq/pull/1226) - Reuse bbsplit index and don't keep overwriting ([#1225](https://github.com/nf-core/rnaseq/issues/1225)) +- [PR #1229](https://github.com/nf-core/rnaseq/pull/1229) - Template update for nf-core/tools v2.13.1 ### Parameters @@ -27,6 +28,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 | Dependency | Old version | New version | | ----------- | ----------- | ----------- | +| `multiqc` | 1.20 | 1.21 | | `picard` | 3.0.0 | 3.1.1 | | `samtools` | 1.17 | 1.18 | | `sortmerna` | 4.3.4 | 4.3.6 | From e0f61c9bb30f6ccf65ba029ceaa5310990adcda4 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Fri, 1 Mar 2024 13:57:39 +0000 Subject: [PATCH 124/634] re-enable prepareforrsem --- .github/workflows/ci.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 5181c7bf5..7a1fa649c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -199,7 +199,6 @@ jobs: - tags: "GFFREAD" - tags: "PIPELINE" - tags: "STRINGTIE_STRINGTIE" - - tags: "UMITOOLS_PREPAREFORRSEM" steps: - name: Check out pipeline code From 37a78af4b7d5c05e70504f2e07058b8e0cf8c31c Mon Sep 17 00:00:00 2001 From: maxulysse Date: Fri, 1 Mar 2024 15:09:10 +0100 Subject: [PATCH 125/634] let's remove all exclusion --- .github/workflows/ci.yml | 5 ----- 1 file changed, 5 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 7a1fa649c..4245be2f9 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -195,11 +195,6 @@ jobs: tags: ["${{ fromJson(needs.nf-test-changes.outputs.tags) }}"] profile: - "docker" - exclude: - - tags: "GFFREAD" - - tags: "PIPELINE" - - tags: "STRINGTIE_STRINGTIE" - steps: - name: Check out pipeline code uses: actions/checkout@v4 From 35ed7f6ba1175084c44b8ce956f122457330f88f Mon Sep 17 00:00:00 2001 From: maxulysse Date: Fri, 1 Mar 2024 15:38:55 +0100 Subject: [PATCH 126/634] update modules/subworkflows --- modules.json | 4 +- .../prepareforrsem/tests/main.nf.test | 8 +-- .../tests/main.nf.test | 1 - .../tests/main.nf.test.snap | 51 ++++++------------- 4 files changed, 21 insertions(+), 43 deletions(-) diff --git a/modules.json b/modules.json index 4b0d5ed9e..79a3f2adf 100644 --- a/modules.json +++ b/modules.json @@ -251,7 +251,7 @@ }, "umitools/prepareforrsem": { "branch": "master", - "git_sha": "f7304017cdf25dde84b3eb357d5b0c9ea91cfcb2", + "git_sha": "fac6cc9b2bc4042225bd9247ec03b413f764b47f", "installed_by": ["modules"] }, "untar": { @@ -309,7 +309,7 @@ }, "fastq_fastqc_umitools_trimgalore": { "branch": "master", - "git_sha": "d2c5e76f291379f3dd403e48e46ed7e6ba5da744", + "git_sha": "cb6defa0834eda9d6d3f967e981c819fc3e257bf", "installed_by": ["subworkflows"] }, "fastq_subsample_fq_salmon": { diff --git a/modules/nf-core/umitools/prepareforrsem/tests/main.nf.test b/modules/nf-core/umitools/prepareforrsem/tests/main.nf.test index d78158bae..aa31d6593 100644 --- a/modules/nf-core/umitools/prepareforrsem/tests/main.nf.test +++ b/modules/nf-core/umitools/prepareforrsem/tests/main.nf.test @@ -16,8 +16,8 @@ nextflow_process { """ input[0] = [ [ id:'test', single_end:false ], // meta map - file(params.test_data['sarscov2']['illumina']['test_paired_end_sorted_bam'], checkIfExists: true), - file(params.test_data['sarscov2']['illumina']['test_paired_end_sorted_bam_bai'], checkIfExists: true) + file(params.modules_testdata_base_path + "genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam", checkIfExists: true), + file(params.modules_testdata_base_path + "genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam.bai", checkIfExists: true) ] """ } @@ -42,8 +42,8 @@ nextflow_process { """ input[0] = [ [ id:'test', single_end:false ], // meta map - file(params.test_data['sarscov2']['illumina']['test_paired_end_sorted_bam'], checkIfExists: true), - file(params.test_data['sarscov2']['illumina']['test_paired_end_sorted_bam_bai'], checkIfExists: true) + file(params.modules_testdata_base_path + "genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam", checkIfExists: true), + file(params.modules_testdata_base_path + "genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam.bai", checkIfExists: true) ] """ } diff --git a/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/tests/main.nf.test b/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/tests/main.nf.test index 3a6cae860..79f71d2d4 100644 --- a/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/tests/main.nf.test +++ b/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/tests/main.nf.test @@ -137,7 +137,6 @@ nextflow_workflow { then { assertAll( { assert workflow.success}, - { assert snapshot(workflow.out.reads).match("pe skip all - reads") }, { assert snapshot(workflow.out.trim_read_count).match("pe skip all - trim_read_count") }, { assert snapshot(workflow.out.trim_unpaired).match("pe skip all - trim_unpaired") }, { assert snapshot(workflow.out.versions).match("pe skip all - versions") } diff --git a/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/tests/main.nf.test.snap b/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/tests/main.nf.test.snap index f7379500e..23b5fc9ea 100644 --- a/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/tests/main.nf.test.snap +++ b/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/tests/main.nf.test.snap @@ -18,7 +18,7 @@ "nf-test": "0.8.4", "nextflow": "24.01.0" }, - "timestamp": "2024-02-29T14:41:48.470766" + "timestamp": "2024-03-01T14:42:34.197155" }, "pe skip all - trim_unpaired": { "content": [ @@ -30,7 +30,7 @@ "nf-test": "0.8.4", "nextflow": "24.01.0" }, - "timestamp": "2024-02-29T14:41:59.820606" + "timestamp": "2024-03-01T14:42:44.569875" }, "pe skip all - versions": { "content": [ @@ -42,7 +42,7 @@ "nf-test": "0.8.4", "nextflow": "24.01.0" }, - "timestamp": "2024-02-29T14:41:59.831239" + "timestamp": "2024-03-01T14:42:44.578583" }, "pe - trim_read_count": { "content": [ @@ -60,7 +60,7 @@ "nf-test": "0.8.4", "nextflow": "24.01.0" }, - "timestamp": "2024-02-29T14:41:28.817321" + "timestamp": "2024-03-01T14:42:16.730434" }, "se - trim_read_count": { "content": [ @@ -78,7 +78,7 @@ "nf-test": "0.8.4", "nextflow": "24.01.0" }, - "timestamp": "2024-02-29T14:41:05.520435" + "timestamp": "2024-03-01T14:41:56.047953" }, "se - trim_unpaired": { "content": [ @@ -90,7 +90,7 @@ "nf-test": "0.8.4", "nextflow": "24.01.0" }, - "timestamp": "2024-02-29T14:41:05.535593" + "timestamp": "2024-03-01T14:41:56.052782" }, "pe no umi - trim_unpaired": { "content": [ @@ -102,7 +102,7 @@ "nf-test": "0.8.4", "nextflow": "24.01.0" }, - "timestamp": "2024-02-29T14:41:48.49149" + "timestamp": "2024-03-01T14:42:34.210238" }, "pe - reads": { "content": [ @@ -120,7 +120,7 @@ "nf-test": "0.8.4", "nextflow": "24.01.0" }, - "timestamp": "2024-02-29T14:41:28.810693" + "timestamp": "2024-03-01T14:42:16.720251" }, "se - reads": { "content": [ @@ -138,7 +138,7 @@ "nf-test": "0.8.4", "nextflow": "24.01.0" }, - "timestamp": "2024-02-29T14:41:05.481086" + "timestamp": "2024-03-01T14:41:56.033273" }, "se - versions": { "content": [ @@ -152,28 +152,7 @@ "nf-test": "0.8.4", "nextflow": "24.01.0" }, - "timestamp": "2024-02-29T14:41:05.551084" - }, - "pe skip all - reads": { - "content": [ - [ - [ - { - "id": "test", - "single_end": false - }, - [ - "/nf-core/test-datasets/modules/data/genomics/sarscov2/illumina/fastq/test_1.fastq.gz", - "/nf-core/test-datasets/modules/data/genomics/sarscov2/illumina/fastq/test_2.fastq.gz" - ] - ] - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" - }, - "timestamp": "2024-02-29T14:41:59.799159" + "timestamp": "2024-03-01T14:41:56.056939" }, "pe no umi - versions": { "content": [ @@ -186,7 +165,7 @@ "nf-test": "0.8.4", "nextflow": "24.01.0" }, - "timestamp": "2024-02-29T14:41:48.50189" + "timestamp": "2024-03-01T14:42:34.216606" }, "pe no umi - trim_read_count": { "content": [ @@ -204,7 +183,7 @@ "nf-test": "0.8.4", "nextflow": "24.01.0" }, - "timestamp": "2024-02-29T14:41:48.482197" + "timestamp": "2024-03-01T14:42:34.203868" }, "pe - versions": { "content": [ @@ -218,7 +197,7 @@ "nf-test": "0.8.4", "nextflow": "24.01.0" }, - "timestamp": "2024-02-29T14:41:28.837523" + "timestamp": "2024-03-01T14:42:16.758431" }, "pe skip all - trim_read_count": { "content": [ @@ -230,7 +209,7 @@ "nf-test": "0.8.4", "nextflow": "24.01.0" }, - "timestamp": "2024-02-29T14:41:59.808588" + "timestamp": "2024-03-01T14:42:44.557631" }, "pe - trim_unpaired": { "content": [ @@ -242,6 +221,6 @@ "nf-test": "0.8.4", "nextflow": "24.01.0" }, - "timestamp": "2024-02-29T14:41:28.824011" + "timestamp": "2024-03-01T14:42:16.743003" } } \ No newline at end of file From 17e133f1365fd16cc9318fdfff4562eb3183dbca Mon Sep 17 00:00:00 2001 From: maxulysse Date: Mon, 4 Mar 2024 12:48:44 +0100 Subject: [PATCH 127/634] fix UTILS --- tests/lib/UTILS.groovy | 6 +++--- tests/main.nf.test | 10 +++++----- tests/main.nf.test.snap | 8 ++++---- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/tests/lib/UTILS.groovy b/tests/lib/UTILS.groovy index 311403cc4..1bd58a496 100644 --- a/tests/lib/UTILS.groovy +++ b/tests/lib/UTILS.groovy @@ -1,8 +1,8 @@ -// Function to remove Nextflow version from software_versions.yml +// Function to remove Nextflow version from pipeline_software_mqc_versions.yml class UTILS { - public static String removeNextflowVersion(outputDir) { - def softwareVersions = path("$outputDir/pipeline_info/software_versions.yml").yaml + public static String removeNextflowVersion(pipeline_software_mqc_versions) { + def softwareVersions = path(pipeline_software_mqc_versions).yaml if (softwareVersions.containsKey("Workflow")) { softwareVersions.Workflow.remove("Nextflow") } diff --git a/tests/main.nf.test b/tests/main.nf.test index f451055ee..b117441ad 100644 --- a/tests/main.nf.test +++ b/tests/main.nf.test @@ -19,11 +19,8 @@ nextflow_pipeline { assertAll( { assert workflow.success }, - { assert snapshot(UTILS.removeNextflowVersion("$outputDir")).match("single_end_software_versions") }, - { assert snapshot(path("$outputDir/bbsplit/").list(), - path("$outputDir/salmon/").list(), - path("$outputDir/star_salmon/").list(), - path("$outputDir/trimgalore/").list()) }, + { assert snapshot(UTILS.removeNextflowVersion("$outputDir/pipeline_info/nf_core_rnaseq_software_mqc_versions.yml")).match("software_versions") }, + { assert new File("$outputDir/bbsplit/").exists() }, { assert new File("$outputDir/fastqc/RAP1_IAA_30M_REP1_1_fastqc.html").exists() }, { assert new File("$outputDir/fastqc/RAP1_IAA_30M_REP1_2_fastqc.html").exists() }, { assert new File("$outputDir/fastqc/RAP1_UNINDUCED_REP1_fastqc.html").exists() }, @@ -33,6 +30,9 @@ nextflow_pipeline { { assert new File("$outputDir/fastqc/WT_REP2_1_fastqc.html").exists() }, { assert new File("$outputDir/fastqc/WT_REP2_2_fastqc.html").exists() }, { assert new File("$outputDir/multiqc/star_salmon/multiqc_report.html").exists() } + { assert new File("$outputDir/salmon/").exists() }, + { assert new File("$outputDir/star_salmon/").exists() }, + { assert new File("$outputDir/trimgalore/").exists() } ) } } diff --git a/tests/main.nf.test.snap b/tests/main.nf.test.snap index 03c43cab5..227304a12 100644 --- a/tests/main.nf.test.snap +++ b/tests/main.nf.test.snap @@ -1,12 +1,12 @@ { - "single_end_software_versions": { + "software_versions": { "content": [ - "{BBMAP_BBSPLIT={bbmap=39.01}, BEDTOOLS_GENOMECOV={bedtools=2.30.0}, CAT_ADDITIONAL_FASTA={python=3.9.5}, CAT_FASTQ={cat=8.30}, CUSTOM_DUMPSOFTWAREVERSIONS={python=3.11.7, yaml=5.4.1}, CUSTOM_GETCHROMSIZES={getchromsizes=1.16.1}, DESEQ2_QC_PSEUDO={bioconductor-deseq2=1.28.0, r-base=4.0.3}, DESEQ2_QC_STAR_SALMON={bioconductor-deseq2=1.28.0, r-base=4.0.3}, DUPRADAR={bioconductor-dupradar=1.28.0, r-base=4.2.1}, FASTQC={fastqc=0.12.1}, FQ_SUBSAMPLE={fq=0.9.1 (2022-02-22)}, GTF2BED={perl=5.26.2}, GTF_FILTER={python=3.9.5}, GUNZIP_ADDITIONAL_FASTA={gunzip=1.10}, GUNZIP_GTF={gunzip=1.10}, MULTIQC_CUSTOM_BIOTYPE={python=3.9.5}, PICARD_MARKDUPLICATES={picard=3.0.0}, QUALIMAP_RNASEQ={qualimap=2.3}, RSEQC_BAMSTAT={rseqc=5.0.2}, RSEQC_INFEREXPERIMENT={rseqc=5.0.2}, RSEQC_INNERDISTANCE={rseqc=5.0.2}, RSEQC_JUNCTIONANNOTATION={rseqc=5.0.2}, RSEQC_JUNCTIONSATURATION={rseqc=5.0.2}, RSEQC_READDISTRIBUTION={rseqc=5.0.2}, RSEQC_READDUPLICATION={rseqc=5.0.2}, SALMON_QUANT={salmon=1.10.1}, SAMTOOLS_FLAGSTAT={samtools=1.17}, SAMTOOLS_IDXSTATS={samtools=1.17}, SAMTOOLS_INDEX={samtools=1.17}, SAMTOOLS_SORT={samtools=1.17}, SAMTOOLS_STATS={samtools=1.17}, SE_GENE={bioconductor-summarizedexperiment=1.24.0, r-base=4.1.1}, STAR_ALIGN={gawk=5.1.0, samtools=1.16.1, star=2.7.9a}, STAR_GENOMEGENERATE={gawk=5.1.0, samtools=1.16.1, star=2.7.9a}, STRINGTIE_STRINGTIE={stringtie=2.2.1}, SUBREAD_FEATURECOUNTS={subread=2.0.1}, TRIMGALORE={cutadapt=3.4, trimgalore=0.6.7}, TX2GENE={python=3.9.5}, TXIMPORT={bioconductor-tximeta=1.12.0, r-base=4.1.1}, UCSC_BEDCLIP={ucsc=377}, UCSC_BEDGRAPHTOBIGWIG={ucsc=445}, UNTAR_SALMON_INDEX={untar=1.30}, Workflow={nf-core/rnaseq=3.15.0dev}}" + "{BBMAP_BBSPLIT={bbmap=39.01}, BEDTOOLS_GENOMECOV={bedtools=2.30.0}, CAT_FASTQ={cat=8.3}, CUSTOM_CATADDITIONALFASTA={python=3.9.5}, CUSTOM_GETCHROMSIZES={getchromsizes=1.16.1}, CUSTOM_TX2GENE={python=3.9.5}, DESEQ2_QC_PSEUDO={r-base=4.0.3, bioconductor-deseq2=1.28.0}, DESEQ2_QC_STAR_SALMON={r-base=4.0.3, bioconductor-deseq2=1.28.0}, DUPRADAR={r-base=4.2.1, bioconductor-dupradar=1.28.0}, FASTQC={fastqc=0.12.1}, FQ_SUBSAMPLE={fq=0.9.1 (2022-02-22)}, GTF2BED={perl=5.26.2}, GTF_FILTER={python=3.9.5}, GUNZIP_ADDITIONAL_FASTA={gunzip=1.1}, GUNZIP_GTF={gunzip=1.1}, MULTIQC_CUSTOM_BIOTYPE={python=3.9.5}, PICARD_MARKDUPLICATES={picard=3.1.1}, QUALIMAP_RNASEQ={qualimap=2.3}, RSEQC_BAMSTAT={rseqc=5.0.2}, RSEQC_INFEREXPERIMENT={rseqc=5.0.2}, RSEQC_INNERDISTANCE={rseqc=5.0.2}, RSEQC_JUNCTIONANNOTATION={rseqc=5.0.2}, RSEQC_JUNCTIONSATURATION={rseqc=5.0.2}, RSEQC_READDISTRIBUTION={rseqc=5.0.2}, RSEQC_READDUPLICATION={rseqc=5.0.2}, SALMON_QUANT={salmon=1.10.1}, SAMTOOLS_FLAGSTAT={samtools=1.19.2}, SAMTOOLS_IDXSTATS={samtools=1.19.2}, SAMTOOLS_INDEX={samtools=1.19.2}, SAMTOOLS_SORT={samtools=1.19.2}, SAMTOOLS_STATS={samtools=1.19.2}, SE_GENE={r-base=4.3.2, bioconductor-summarizedexperiment=1.32.0}, STAR_ALIGN={star=2.7.10a, samtools=1.18, gawk=5.1.0}, STAR_GENOMEGENERATE={star=2.7.10a, samtools=1.18, gawk=5.1.0}, STRINGTIE_STRINGTIE={stringtie=2.2.1}, SUBREAD_FEATURECOUNTS={subread=2.0.1}, TRIMGALORE={trimgalore=0.6.7, cutadapt=3.4}, TXIMETA_TXIMPORT={r-base=4.3.2, bioconductor-tximeta=1.20.1}, UCSC_BEDCLIP={ucsc=377}, UCSC_BEDGRAPHTOBIGWIG={ucsc=445}, UNTAR_SALMON_INDEX={untar=1.3}, Workflow={nf-core/rnaseq=v3.15.0dev}}" ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.01.0" }, - "timestamp": "2024-02-09T16:13:24.846838" + "timestamp": "2024-03-04T12:40:26.161319" } } \ No newline at end of file From 0d937af467d60c026e9602ea5a64bd7db2f0c97b Mon Sep 17 00:00:00 2001 From: maxulysse Date: Mon, 4 Mar 2024 12:55:05 +0100 Subject: [PATCH 128/634] fix gffread and stringtie_stringtie tests --- modules.json | 4 +- modules/nf-core/gffread/tests/main.nf.test | 2 + .../gffread/tests/nextflow-gff3.config | 5 ++ .../stringtie/stringtie/tests/main.nf.test | 48 +++++++++++-------- .../stringtie/stringtie/tests/nextflow.config | 5 ++ 5 files changed, 42 insertions(+), 22 deletions(-) create mode 100644 modules/nf-core/gffread/tests/nextflow-gff3.config create mode 100644 modules/nf-core/stringtie/stringtie/tests/nextflow.config diff --git a/modules.json b/modules.json index 79a3f2adf..e8d1986a4 100644 --- a/modules.json +++ b/modules.json @@ -47,7 +47,7 @@ }, "gffread": { "branch": "master", - "git_sha": "575e1bc54b083fb15e7dd8b5fcc40bea60e8ce83", + "git_sha": "b1b959609bda44341120aed1766329909f54b8d0", "installed_by": ["modules"] }, "gunzip": { @@ -206,7 +206,7 @@ }, "stringtie/stringtie": { "branch": "master", - "git_sha": "5756b12b1fab0c07f05b9ad2d5d5c262b1a2c1ef", + "git_sha": "b1b959609bda44341120aed1766329909f54b8d0", "installed_by": ["modules"] }, "subread/featurecounts": { diff --git a/modules/nf-core/gffread/tests/main.nf.test b/modules/nf-core/gffread/tests/main.nf.test index bdbc96ae6..452aba1ba 100644 --- a/modules/nf-core/gffread/tests/main.nf.test +++ b/modules/nf-core/gffread/tests/main.nf.test @@ -38,6 +38,8 @@ nextflow_process { test("sarscov2-gff3-gff3") { + config "./nextflow-gff3.config" + when { params { outdir = "$outputDir" diff --git a/modules/nf-core/gffread/tests/nextflow-gff3.config b/modules/nf-core/gffread/tests/nextflow-gff3.config new file mode 100644 index 000000000..afe0830e5 --- /dev/null +++ b/modules/nf-core/gffread/tests/nextflow-gff3.config @@ -0,0 +1,5 @@ +process { + withName: GFFREAD { + ext.args = '' + } +} diff --git a/modules/nf-core/stringtie/stringtie/tests/main.nf.test b/modules/nf-core/stringtie/stringtie/tests/main.nf.test index b7281c62e..00efe8f1a 100644 --- a/modules/nf-core/stringtie/stringtie/tests/main.nf.test +++ b/modules/nf-core/stringtie/stringtie/tests/main.nf.test @@ -10,13 +10,15 @@ nextflow_process { test("sarscov2 [bam] - forward strandedness") { + config "./nextflow.config" + when { process { """ input[0] = [ [ id:'test', strandedness:'forward' ], // meta map [ file(params.modules_testdata_base_path + "genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam", checkIfExists: true) ] - ] + ] input[1] = [] """ } @@ -24,16 +26,18 @@ nextflow_process { then { assertAll( - { assert process.success }, - { assert snapshot(process.out.transcript_gtf).match("fs_transcript_gtf") }, - { assert snapshot(process.out.abundance).match("fs_abundance") }, - { assert snapshot(process.out.versions).match("fs_versions") } + { assert process.success }, + { assert snapshot(process.out.transcript_gtf).match("fs_transcript_gtf") }, + { assert snapshot(process.out.abundance).match("fs_abundance") }, + { assert snapshot(process.out.versions).match("fs_versions") } ) } } test("sarscov2 [bam] - forward strandedness + reference annotation") { + config "./nextflow.config" + when { process { """ @@ -49,23 +53,25 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot(process.out.transcript_gtf).match("fs_gtf_transcript_gtf") }, - { assert snapshot(process.out.abundance).match("fs_gtf_abundance") }, - { assert snapshot(process.out.ballgown).match("fs_gtf_ballgown") }, - { assert snapshot(process.out.versions).match("fs_gtf_versions") } + { assert snapshot(process.out.transcript_gtf).match("fs_gtf_transcript_gtf") }, + { assert snapshot(process.out.abundance).match("fs_gtf_abundance") }, + { assert snapshot(process.out.ballgown).match("fs_gtf_ballgown") }, + { assert snapshot(process.out.versions).match("fs_gtf_versions") } ) } } test("sarscov2 [bam] - reverse strandedness") { + config "./nextflow.config" + when { process { """ input[0] = [ [ id:'test', strandedness:'reverse' ], // meta map [ file(params.modules_testdata_base_path + "genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam", checkIfExists: true) ] - ] + ] input[1] = [] """ } @@ -73,23 +79,25 @@ nextflow_process { then { assertAll( - { assert process.success }, - { assert snapshot(process.out.transcript_gtf).match("rs_transcript_gtf") }, - { assert snapshot(process.out.abundance).match("rs_abundance") }, - { assert snapshot(process.out.versions).match("rs_versions") } + { assert process.success }, + { assert snapshot(process.out.transcript_gtf).match("rs_transcript_gtf") }, + { assert snapshot(process.out.abundance).match("rs_abundance") }, + { assert snapshot(process.out.versions).match("rs_versions") } ) } } test("sarscov2 [bam] - reverse strandedness + reference annotation") { + config "./nextflow.config" + when { process { """ input[0] = [ [ id:'test', strandedness:'reverse' ], // meta map [ file(params.modules_testdata_base_path + "genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam", checkIfExists: true) ] - ] + ] input[1] = file(params.modules_testdata_base_path + "genomics/sarscov2/genome/genome.gtf", checkIfExists: true) """ } @@ -97,11 +105,11 @@ nextflow_process { then { assertAll( - { assert process.success }, - { assert snapshot(process.out.transcript_gtf).match("rs_gtf_transcript_gtf") }, - { assert snapshot(process.out.abundance).match("rs_gtf_abundance") }, - { assert snapshot(process.out.ballgown).match("rs_gtf_ballgown") }, - { assert snapshot(process.out.versions).match("rs_gtf_versions") } + { assert process.success }, + { assert snapshot(process.out.transcript_gtf).match("rs_gtf_transcript_gtf") }, + { assert snapshot(process.out.abundance).match("rs_gtf_abundance") }, + { assert snapshot(process.out.ballgown).match("rs_gtf_ballgown") }, + { assert snapshot(process.out.versions).match("rs_gtf_versions") } ) } } diff --git a/modules/nf-core/stringtie/stringtie/tests/nextflow.config b/modules/nf-core/stringtie/stringtie/tests/nextflow.config new file mode 100644 index 000000000..e3aaa0999 --- /dev/null +++ b/modules/nf-core/stringtie/stringtie/tests/nextflow.config @@ -0,0 +1,5 @@ +process { + withName: 'STRINGTIE_STRINGTIE' { + ext.args = '' + } +} From 5e628720a9187e5ec844be0220e73ce1b742e47c Mon Sep 17 00:00:00 2001 From: maxulysse Date: Mon, 4 Mar 2024 15:20:46 +0100 Subject: [PATCH 129/634] syntax fix --- tests/main.nf.test | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/tests/main.nf.test b/tests/main.nf.test index b117441ad..1c517cd46 100644 --- a/tests/main.nf.test +++ b/tests/main.nf.test @@ -15,11 +15,8 @@ nextflow_pipeline { } then { - assert workflow.success - assertAll( { assert workflow.success }, - { assert snapshot(UTILS.removeNextflowVersion("$outputDir/pipeline_info/nf_core_rnaseq_software_mqc_versions.yml")).match("software_versions") }, { assert new File("$outputDir/bbsplit/").exists() }, { assert new File("$outputDir/fastqc/RAP1_IAA_30M_REP1_1_fastqc.html").exists() }, { assert new File("$outputDir/fastqc/RAP1_IAA_30M_REP1_2_fastqc.html").exists() }, @@ -32,8 +29,8 @@ nextflow_pipeline { { assert new File("$outputDir/multiqc/star_salmon/multiqc_report.html").exists() } { assert new File("$outputDir/salmon/").exists() }, { assert new File("$outputDir/star_salmon/").exists() }, - { assert new File("$outputDir/trimgalore/").exists() } - ) + { assert new File("$outputDir/trimgalore/").exists() }, + { assert snapshot(UTILS.removeNextflowVersion("$outputDir/pipeline_info/nf_core_rnaseq_software_mqc_versions.yml")).match("software_versions") } ) } } } From f5d9ceb8fed5e2c6c811c17156355b076499ac25 Mon Sep 17 00:00:00 2001 From: maxulysse Date: Mon, 4 Mar 2024 16:22:06 +0100 Subject: [PATCH 130/634] keep components from nf-core out of prettierignore due to patch possibility --- .prettierignore | 2 -- 1 file changed, 2 deletions(-) diff --git a/.prettierignore b/.prettierignore index 57a974e9a..437d763d0 100644 --- a/.prettierignore +++ b/.prettierignore @@ -10,5 +10,3 @@ testing/ testing* *.pyc bin/ -modules/nf-core/ -subworkflows/nf-core/ From fa7d4f44670164f9fc29646fd34ea10da990710d Mon Sep 17 00:00:00 2001 From: maxulysse Date: Mon, 4 Mar 2024 16:34:57 +0100 Subject: [PATCH 131/634] update umitools --- modules.json | 2 +- .../nf-core/umitools/dedup/tests/main.nf.test | 265 ++++++++++++++++++ .../umitools/dedup/tests/main.nf.test.snap | 176 ++++++++++++ .../umitools/dedup/tests/nextflow.config | 9 + modules/nf-core/umitools/dedup/tests/tags.yml | 2 + 5 files changed, 453 insertions(+), 1 deletion(-) create mode 100644 modules/nf-core/umitools/dedup/tests/main.nf.test create mode 100644 modules/nf-core/umitools/dedup/tests/main.nf.test.snap create mode 100644 modules/nf-core/umitools/dedup/tests/nextflow.config create mode 100644 modules/nf-core/umitools/dedup/tests/tags.yml diff --git a/modules.json b/modules.json index e8d1986a4..a708ec17b 100644 --- a/modules.json +++ b/modules.json @@ -241,7 +241,7 @@ }, "umitools/dedup": { "branch": "master", - "git_sha": "ff7e93715a2acecf3f143ec78c9858deba2984d0", + "git_sha": "fa64bfaac20061e3cb34ffe9a5d4b31728cf4dc5", "installed_by": ["bam_dedup_stats_samtools_umitools"] }, "umitools/extract": { diff --git a/modules/nf-core/umitools/dedup/tests/main.nf.test b/modules/nf-core/umitools/dedup/tests/main.nf.test new file mode 100644 index 000000000..ee34f3632 --- /dev/null +++ b/modules/nf-core/umitools/dedup/tests/main.nf.test @@ -0,0 +1,265 @@ +nextflow_process { + + name "Test Process UMITOOLS_DEDUP" + script "../main.nf" + process "UMITOOLS_DEDUP" + + tag "modules" + tag "modules_nfcore" + tag "umitools" + tag "umitools/dedup" + + tag "bwa/index" + tag "bwa/mem" + tag "samtools/index" + tag "umitools/extract" + + test("no umi") { + + config "./nextflow.config" + + when { + process { + """ + get_output_stats = false + + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + "genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam", checkIfExists: true), + file(params.modules_testdata_base_path + "genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam.bai", checkIfExists: true) + ] + input[1] = get_output_stats + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert path("${process.out.log[0][1]}").exists() }, + { assert snapshot(process.out.bam).match("no umi - bam") }, + { assert snapshot(process.out.versions).match("no umi - versions") } + ) + } + } + + test("se - no stats") { + config "./nextflow.config" + + setup { + run("UMITOOLS_EXTRACT") { + script "../../extract/main.nf" + process { + """ + input[0] = [ [ id:'test', single_end:true ], // meta map + [ file(params.modules_testdata_base_path + "genomics/sarscov2/illumina/fastq/test_1.fastq.gz", checkIfExists: true) ] + ] + """ + } + } + + run("BWA_INDEX") { + script "../../../bwa/index/main.nf" + process { + """ + input[0] = [ + [id: 'test'], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) + ] + """ + } + } + + run("BWA_MEM") { + script "../../../bwa/mem/main.nf" + process { + """ + input[0] = [ [ id:'test', single_end:true ], // meta map + [ file(params.modules_testdata_base_path + "genomics/sarscov2/illumina/fastq/test_1.fastq.gz", checkIfExists: true) ] + ] + input[1] = BWA_INDEX.out.index + input[2] = true + """ + } + } + + run("SAMTOOLS_INDEX") { + script "../../../samtools/index/main.nf" + process { + """ + input[0] = BWA_MEM.out.bam + """ + } + } + } + + when { + process { + """ + get_output_stats = false + + input[0] = BWA_MEM.out.bam.join(SAMTOOLS_INDEX.out.bai, by: [0]) + input[1] = get_output_stats + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert path("${process.out.log[0][1]}").exists() }, + { assert snapshot(process.out.bam).match("se no stats - bam") }, + { assert snapshot(process.out.versions).match("se no stats - versions") } + ) + } + } + + test("pe - no stats") { + config "./nextflow.config" + + setup { + run("UMITOOLS_EXTRACT") { + script "../../extract/main.nf" + process { + """ + input[0] = [ [ id:'test', single_end:true ], // 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) ] + ] + """ + } + } + + run("BWA_INDEX") { + script "../../../bwa/index/main.nf" + process { + """ + input[0] = [ + [id: 'test'], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) + ] + """ + } + } + + run("BWA_MEM") { + script "../../../bwa/mem/main.nf" + process { + """ + input[0] = [ [ id:'test', single_end:true ], // 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) ] + ] + input[1] = BWA_INDEX.out.index + input[2] = true + """ + } + } + + run("SAMTOOLS_INDEX") { + script "../../../samtools/index/main.nf" + process { + """ + input[0] = BWA_MEM.out.bam + """ + } + } + } + + when { + process { + """ + get_output_stats = false + + input[0] = BWA_MEM.out.bam.join(SAMTOOLS_INDEX.out.bai, by: [0]) + input[1] = get_output_stats + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert path("${process.out.log[0][1]}").exists() }, + { assert snapshot(process.out.bam).match("pe no stats - bam") }, + { assert snapshot(process.out.versions).match("pe no stats - versions") } + ) + } + } + + test("pe") { + config "./nextflow.config" + + setup { + run("UMITOOLS_EXTRACT") { + script "../../extract/main.nf" + process { + """ + input[0] = [ [ id:'test', single_end:true ], // 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) ] + ] + """ + } + } + + run("BWA_INDEX") { + script "../../../bwa/index/main.nf" + process { + """ + input[0] = [ + [id: 'test'], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) + ] + """ + } + } + + run("BWA_MEM") { + script "../../../bwa/mem/main.nf" + process { + """ + input[0] = [ [ id:'test', single_end:true ], // 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) ] + ] + input[1] = BWA_INDEX.out.index + input[2] = true + """ + } + } + + run("SAMTOOLS_INDEX") { + script "../../../samtools/index/main.nf" + process { + """ + input[0] = BWA_MEM.out.bam + """ + } + } + } + + when { + process { + """ + get_output_stats = true + + input[0] = BWA_MEM.out.bam.join(SAMTOOLS_INDEX.out.bai, by: [0]) + input[1] = get_output_stats + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert path("${process.out.log[0][1]}").exists() }, + { assert snapshot(process.out.bam).match("pe - bam") }, + { assert snapshot(process.out.tsv_edit_distance).match("pe - tsv_edit_distance") }, + { assert snapshot(process.out.tsv_per_umi).match("pe - tsv_per_umi") }, + { assert snapshot(process.out.tsv_umi_per_position).match("pe - tsv_umi_per_position") }, + { assert snapshot(process.out.versions).match("pe - versions") } + ) + } + } +} diff --git a/modules/nf-core/umitools/dedup/tests/main.nf.test.snap b/modules/nf-core/umitools/dedup/tests/main.nf.test.snap new file mode 100644 index 000000000..b0523ebe9 --- /dev/null +++ b/modules/nf-core/umitools/dedup/tests/main.nf.test.snap @@ -0,0 +1,176 @@ +{ + "pe no stats - bam": { + "content": [ + [ + [ + { + "id": "test", + "single_end": true + }, + "test.dedup.bam:md5,f05f85af8c18c1bf0a9d8e982302a179" + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-04T15:17:51.102291" + }, + "pe - tsv_per_umi": { + "content": [ + [ + [ + { + "id": "test", + "single_end": true + }, + "test.dedup_per_umi.tsv:md5,9b59b25634740ae3dd02a38b3aee1397" + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-04T15:18:18.259276" + }, + "pe - tsv_edit_distance": { + "content": [ + [ + [ + { + "id": "test", + "single_end": true + }, + "test.dedup_edit_distance.tsv:md5,2877cf9620128098210351d463e2079b" + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-04T15:18:18.251105" + }, + "no umi - versions": { + "content": [ + [ + "versions.yml:md5,e2f5146464c09bf7ae98c85ea5410e50" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-04T15:16:55.996597" + }, + "pe - tsv_umi_per_position": { + "content": [ + [ + [ + { + "id": "test", + "single_end": true + }, + "test.dedup_per_umi_per_position.tsv:md5,2e1a12e6f720510880068deddeefe063" + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-04T15:18:18.268872" + }, + "no umi - bam": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test.dedup.bam:md5,350e942a0d45e8356fa24bc8c47dc1ed" + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-04T15:16:55.988116" + }, + "se no stats - bam": { + "content": [ + [ + [ + { + "id": "test", + "single_end": true + }, + "test.dedup.bam:md5,cb1e038bc4d990683fa485d632550b54" + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-04T15:17:23.458528" + }, + "se no stats - versions": { + "content": [ + [ + "versions.yml:md5,e2f5146464c09bf7ae98c85ea5410e50" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-04T15:17:23.469933" + }, + "pe - versions": { + "content": [ + [ + "versions.yml:md5,e2f5146464c09bf7ae98c85ea5410e50" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-04T15:18:18.278616" + }, + "pe - bam": { + "content": [ + [ + [ + { + "id": "test", + "single_end": true + }, + "test.dedup.bam:md5,f05f85af8c18c1bf0a9d8e982302a179" + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-04T15:18:18.242891" + }, + "pe no stats - versions": { + "content": [ + [ + "versions.yml:md5,e2f5146464c09bf7ae98c85ea5410e50" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-04T15:17:51.120082" + } +} \ No newline at end of file diff --git a/modules/nf-core/umitools/dedup/tests/nextflow.config b/modules/nf-core/umitools/dedup/tests/nextflow.config new file mode 100644 index 000000000..e3bc6125f --- /dev/null +++ b/modules/nf-core/umitools/dedup/tests/nextflow.config @@ -0,0 +1,9 @@ +process { + withName: UMITOOLS_EXTRACT { + ext.args = '--bc-pattern="NNNN"' + } + + withName: UMITOOLS_DEDUP { + ext.prefix = { "${meta.id}.dedup" } + } +} diff --git a/modules/nf-core/umitools/dedup/tests/tags.yml b/modules/nf-core/umitools/dedup/tests/tags.yml new file mode 100644 index 000000000..5934c5cb7 --- /dev/null +++ b/modules/nf-core/umitools/dedup/tests/tags.yml @@ -0,0 +1,2 @@ +umitools/dedup: + - "modules/nf-core/umitools/dedup/**" From 941b1e54fbee0be557fd678bd0e11a71517d02bc Mon Sep 17 00:00:00 2001 From: maxulysse Date: Mon, 4 Mar 2024 16:46:45 +0100 Subject: [PATCH 132/634] only snapshot versions and assert success --- tests/main.nf.test | 21 +++++---------------- tests/main.nf.test.snap | 2 +- 2 files changed, 6 insertions(+), 17 deletions(-) diff --git a/tests/main.nf.test b/tests/main.nf.test index 1c517cd46..3dc8e5df8 100644 --- a/tests/main.nf.test +++ b/tests/main.nf.test @@ -10,27 +10,16 @@ nextflow_pipeline { when { params { outdir = "$outputDir" - input = 'https://raw.githubusercontent.com/nf-core/test-datasets/7f1614baeb0ddf66e60be78c3d9fa55440465ac8/samplesheet/v3.10/samplesheet_test.csv' + input = 'https://raw.githubusercontent.com/nf-core/test-datasets/7f1614baeb0ddf66e60be78c3d9fa55440465ac8/samplesheet/v3.10/samplesheet_test.csv' } } then { + assert workflow.success + assertAll( - { assert workflow.success }, - { assert new File("$outputDir/bbsplit/").exists() }, - { assert new File("$outputDir/fastqc/RAP1_IAA_30M_REP1_1_fastqc.html").exists() }, - { assert new File("$outputDir/fastqc/RAP1_IAA_30M_REP1_2_fastqc.html").exists() }, - { assert new File("$outputDir/fastqc/RAP1_UNINDUCED_REP1_fastqc.html").exists() }, - { assert new File("$outputDir/fastqc/RAP1_UNINDUCED_REP2_fastqc.html").exists() }, - { assert new File("$outputDir/fastqc/WT_REP1_1_fastqc.html").exists() }, - { assert new File("$outputDir/fastqc/WT_REP1_2_fastqc.html").exists() }, - { assert new File("$outputDir/fastqc/WT_REP2_1_fastqc.html").exists() }, - { assert new File("$outputDir/fastqc/WT_REP2_2_fastqc.html").exists() }, - { assert new File("$outputDir/multiqc/star_salmon/multiqc_report.html").exists() } - { assert new File("$outputDir/salmon/").exists() }, - { assert new File("$outputDir/star_salmon/").exists() }, - { assert new File("$outputDir/trimgalore/").exists() }, - { assert snapshot(UTILS.removeNextflowVersion("$outputDir/pipeline_info/nf_core_rnaseq_software_mqc_versions.yml")).match("software_versions") } ) + { assert snapshot(UTILS.removeNextflowVersion("$outputDir/pipeline_info/nf_core_rnaseq_software_mqc_versions.yml")).match("software_versions") } + ) } } } diff --git a/tests/main.nf.test.snap b/tests/main.nf.test.snap index 227304a12..b69b0c3e9 100644 --- a/tests/main.nf.test.snap +++ b/tests/main.nf.test.snap @@ -9,4 +9,4 @@ }, "timestamp": "2024-03-04T12:40:26.161319" } -} \ No newline at end of file +} From 8fee43440ff60802015beddabdaa9749824923cb Mon Sep 17 00:00:00 2001 From: maxulysse Date: Mon, 4 Mar 2024 16:47:25 +0100 Subject: [PATCH 133/634] restore old tests --- .github/workflows/ci.yml | 190 +++++++++++++++++++-------------------- 1 file changed, 95 insertions(+), 95 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 4245be2f9..a3ef985e6 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -20,101 +20,101 @@ concurrency: cancel-in-progress: false # TODO: Decide on strategy for #1221 jobs: - # star_salmon: - # name: Test STAR Salmon with workflow parameters - # if: ${{ (github.event_name != 'push' || (github.event_name == 'push' && github.repository == 'nf-core/rnaseq')) && !contains(github.event.head_commit.message, '[ci fast]') }} - # runs-on: ubuntu-latest - # strategy: - # matrix: - # parameters: - # - "--skip_qc" - # - "--skip_trimming" - # - "--gtf false" - # - "--star_index false" - # - "--transcript_fasta false" - # - "--min_mapped_reads 90" - # - "--with_umi" - # - "--with_umi --skip_trimming" - # - "--remove_ribo_rna --skip_qualimap" - # - "--bam_csi_index" - # - "--save_align_intermeds --save_reference" - # - "--featurecounts_group_type false" - # - "--trimmer fastp" - - # steps: - # - name: Check out pipeline code - # uses: actions/checkout@v4 - - # - name: Setup Nextflow - # uses: nf-core/setup-nextflow@v1.5 - - # - name: Run pipeline with STAR and various parameters - # run: | - # nextflow run ${GITHUB_WORKSPACE} -profile test,docker --aligner star_salmon ${{ matrix.parameters }} --outdir ./results - - # star_rsem: - # name: Test STAR RSEM with workflow parameters - # if: ${{ (github.event_name != 'push' || (github.event_name == 'push' && github.repository == 'nf-core/rnaseq')) && !contains(github.event.head_commit.message, '[ci fast]') }} - # runs-on: ubuntu-latest - # strategy: - # matrix: - # parameters: - # - "--skip_qc" - # - "--rsem_index false" - # steps: - # - name: Check out pipeline code - # uses: actions/checkout@v4 - - # - name: Setup Nextflow - # uses: nf-core/setup-nextflow@v1.5 - - # - name: Run pipeline with RSEM STAR and various parameters - # run: | - # nextflow run ${GITHUB_WORKSPACE} -profile test,docker --aligner star_rsem ${{ matrix.parameters }} --outdir ./results - - # hisat2: - # name: Test HISAT2 with workflow parameters - # if: ${{ (github.event_name != 'push' || (github.event_name == 'push' && github.repository == 'nf-core/rnaseq')) && !contains(github.event.head_commit.message, '[ci fast]') }} - # runs-on: ubuntu-latest - # strategy: - # matrix: - # parameters: - # - "--skip_qc" - # - "--hisat2_index false" - # steps: - # - name: Check out pipeline code - # uses: actions/checkout@v4 - - # - name: Setup Nextflow - # uses: nf-core/setup-nextflow@v1.5 - - # - name: Run pipeline with HISAT2 and various parameters - # run: | - # nextflow run ${GITHUB_WORKSPACE} -profile test,docker --aligner hisat2 ${{ matrix.parameters }} --outdir ./results - - # pseudo: - # name: Test Pseudoaligners with workflow parameters - # if: ${{ (github.event_name != 'push' || (github.event_name == 'push' && github.repository == 'nf-core/rnaseq')) && !contains(github.event.head_commit.message, '[ci fast]') }} - # runs-on: ubuntu-latest - # strategy: - # matrix: - # parameters: - # - "--pseudo_aligner salmon --skip_qc" - # - "--pseudo_aligner salmon --skip_alignment --skip_pseudo_alignment" - # - "--pseudo_aligner salmon --salmon_index false --transcript_fasta false" - # - "--pseudo_aligner kallisto --skip_qc" - # - "--pseudo_aligner kallisto --skip_alignment --skip_pseudo_alignment" - # - "--pseudo_aligner kallisto --kallisto_index false --transcript_fasta false" - # steps: - # - name: Check out pipeline code - # uses: actions/checkout@v4 - - # - name: Setup Nextflow - # uses: nf-core/setup-nextflow@v1.5 - - # - name: Run pipeline with Salmon or Kallisto and various parameters - # run: | - # nextflow run ${GITHUB_WORKSPACE} -profile test,docker ${{ matrix.parameters }} --outdir ./results + star_salmon: + name: Test STAR Salmon with workflow parameters + if: ${{ (github.event_name != 'push' || (github.event_name == 'push' && github.repository == 'nf-core/rnaseq')) && !contains(github.event.head_commit.message, '[ci fast]') }} + runs-on: ubuntu-latest + strategy: + matrix: + parameters: + - "--skip_qc" + - "--skip_trimming" + - "--gtf false" + - "--star_index false" + - "--transcript_fasta false" + - "--min_mapped_reads 90" + - "--with_umi" + - "--with_umi --skip_trimming" + - "--remove_ribo_rna --skip_qualimap" + - "--bam_csi_index" + - "--save_align_intermeds --save_reference" + - "--featurecounts_group_type false" + - "--trimmer fastp" + + steps: + - name: Check out pipeline code + uses: actions/checkout@v4 + + - name: Setup Nextflow + uses: nf-core/setup-nextflow@v1.5 + + - name: Run pipeline with STAR and various parameters + run: | + nextflow run ${GITHUB_WORKSPACE} -profile test,docker --aligner star_salmon ${{ matrix.parameters }} --outdir ./results + + star_rsem: + name: Test STAR RSEM with workflow parameters + if: ${{ (github.event_name != 'push' || (github.event_name == 'push' && github.repository == 'nf-core/rnaseq')) && !contains(github.event.head_commit.message, '[ci fast]') }} + runs-on: ubuntu-latest + strategy: + matrix: + parameters: + - "--skip_qc" + - "--rsem_index false" + steps: + - name: Check out pipeline code + uses: actions/checkout@v4 + + - name: Setup Nextflow + uses: nf-core/setup-nextflow@v1.5 + + - name: Run pipeline with RSEM STAR and various parameters + run: | + nextflow run ${GITHUB_WORKSPACE} -profile test,docker --aligner star_rsem ${{ matrix.parameters }} --outdir ./results + + hisat2: + name: Test HISAT2 with workflow parameters + if: ${{ (github.event_name != 'push' || (github.event_name == 'push' && github.repository == 'nf-core/rnaseq')) && !contains(github.event.head_commit.message, '[ci fast]') }} + runs-on: ubuntu-latest + strategy: + matrix: + parameters: + - "--skip_qc" + - "--hisat2_index false" + steps: + - name: Check out pipeline code + uses: actions/checkout@v4 + + - name: Setup Nextflow + uses: nf-core/setup-nextflow@v1.5 + + - name: Run pipeline with HISAT2 and various parameters + run: | + nextflow run ${GITHUB_WORKSPACE} -profile test,docker --aligner hisat2 ${{ matrix.parameters }} --outdir ./results + + pseudo: + name: Test Pseudoaligners with workflow parameters + if: ${{ (github.event_name != 'push' || (github.event_name == 'push' && github.repository == 'nf-core/rnaseq')) && !contains(github.event.head_commit.message, '[ci fast]') }} + runs-on: ubuntu-latest + strategy: + matrix: + parameters: + - "--pseudo_aligner salmon --skip_qc" + - "--pseudo_aligner salmon --skip_alignment --skip_pseudo_alignment" + - "--pseudo_aligner salmon --salmon_index false --transcript_fasta false" + - "--pseudo_aligner kallisto --skip_qc" + - "--pseudo_aligner kallisto --skip_alignment --skip_pseudo_alignment" + - "--pseudo_aligner kallisto --kallisto_index false --transcript_fasta false" + steps: + - name: Check out pipeline code + uses: actions/checkout@v4 + + - name: Setup Nextflow + uses: nf-core/setup-nextflow@v1.5 + + - name: Run pipeline with Salmon or Kallisto and various parameters + run: | + nextflow run ${GITHUB_WORKSPACE} -profile test,docker ${{ matrix.parameters }} --outdir ./results nf-test-changes: name: Check for changes From f241bfab00231b5c90f372cb39bb68e15c9bab01 Mon Sep 17 00:00:00 2001 From: maxulysse Date: Mon, 4 Mar 2024 18:21:00 +0100 Subject: [PATCH 134/634] fix umitools/dedup --- modules.json | 2 +- .../nf-core/umitools/dedup/tests/main.nf.test | 197 ++---------------- .../umitools/dedup/tests/main.nf.test.snap | 68 ++---- .../umitools/dedup/tests/nextflow.config | 4 - 4 files changed, 35 insertions(+), 236 deletions(-) diff --git a/modules.json b/modules.json index a708ec17b..79b221266 100644 --- a/modules.json +++ b/modules.json @@ -241,7 +241,7 @@ }, "umitools/dedup": { "branch": "master", - "git_sha": "fa64bfaac20061e3cb34ffe9a5d4b31728cf4dc5", + "git_sha": "3bd4f34e3093c2a16e6a8eefc22242b9b94641db", "installed_by": ["bam_dedup_stats_samtools_umitools"] }, "umitools/extract": { diff --git a/modules/nf-core/umitools/dedup/tests/main.nf.test b/modules/nf-core/umitools/dedup/tests/main.nf.test index ee34f3632..84698be42 100644 --- a/modules/nf-core/umitools/dedup/tests/main.nf.test +++ b/modules/nf-core/umitools/dedup/tests/main.nf.test @@ -9,13 +9,7 @@ nextflow_process { tag "umitools" tag "umitools/dedup" - tag "bwa/index" - tag "bwa/mem" - tag "samtools/index" - tag "umitools/extract" - - test("no umi") { - + test("se - no stats") { config "./nextflow.config" when { @@ -24,81 +18,10 @@ nextflow_process { get_output_stats = false input[0] = [ - [ id:'test', single_end:false ], // meta map - file(params.modules_testdata_base_path + "genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam", checkIfExists: true), - file(params.modules_testdata_base_path + "genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam.bai", checkIfExists: true) - ] - input[1] = get_output_stats - """ - } - } - - then { - assertAll( - { assert process.success }, - { assert path("${process.out.log[0][1]}").exists() }, - { assert snapshot(process.out.bam).match("no umi - bam") }, - { assert snapshot(process.out.versions).match("no umi - versions") } - ) - } - } - - test("se - no stats") { - config "./nextflow.config" - - setup { - run("UMITOOLS_EXTRACT") { - script "../../extract/main.nf" - process { - """ - input[0] = [ [ id:'test', single_end:true ], // meta map - [ file(params.modules_testdata_base_path + "genomics/sarscov2/illumina/fastq/test_1.fastq.gz", checkIfExists: true) ] + [ id:'test', single_end:true ], // meta map + file(params.modules_testdata_base_path + "genomics/sarscov2/illumina/bam/test.single_end.sorted.bam", checkIfExists: true), + file(params.modules_testdata_base_path + "genomics/sarscov2/illumina/bam/test.single_end.sorted.bam.bai", checkIfExists: true) ] - """ - } - } - - run("BWA_INDEX") { - script "../../../bwa/index/main.nf" - process { - """ - input[0] = [ - [id: 'test'], - file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) - ] - """ - } - } - - run("BWA_MEM") { - script "../../../bwa/mem/main.nf" - process { - """ - input[0] = [ [ id:'test', single_end:true ], // meta map - [ file(params.modules_testdata_base_path + "genomics/sarscov2/illumina/fastq/test_1.fastq.gz", checkIfExists: true) ] - ] - input[1] = BWA_INDEX.out.index - input[2] = true - """ - } - } - - run("SAMTOOLS_INDEX") { - script "../../../samtools/index/main.nf" - process { - """ - input[0] = BWA_MEM.out.bam - """ - } - } - } - - when { - process { - """ - get_output_stats = false - - input[0] = BWA_MEM.out.bam.join(SAMTOOLS_INDEX.out.bai, by: [0]) input[1] = get_output_stats """ } @@ -117,61 +40,16 @@ nextflow_process { test("pe - no stats") { config "./nextflow.config" - setup { - run("UMITOOLS_EXTRACT") { - script "../../extract/main.nf" - process { - """ - input[0] = [ [ id:'test', single_end:true ], // 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) ] - ] - """ - } - } - - run("BWA_INDEX") { - script "../../../bwa/index/main.nf" - process { - """ - input[0] = [ - [id: 'test'], - file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) - ] - """ - } - } - - run("BWA_MEM") { - script "../../../bwa/mem/main.nf" - process { - """ - input[0] = [ [ id:'test', single_end:true ], // 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) ] - ] - input[1] = BWA_INDEX.out.index - input[2] = true - """ - } - } - - run("SAMTOOLS_INDEX") { - script "../../../samtools/index/main.nf" - process { - """ - input[0] = BWA_MEM.out.bam - """ - } - } - } - when { process { """ get_output_stats = false - input[0] = BWA_MEM.out.bam.join(SAMTOOLS_INDEX.out.bai, by: [0]) + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + "genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam", checkIfExists: true), + file(params.modules_testdata_base_path + "genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam.bai", checkIfExists: true) + ] input[1] = get_output_stats """ } @@ -187,64 +65,19 @@ nextflow_process { } } - test("pe") { + test("pe - with stats") { config "./nextflow.config" - setup { - run("UMITOOLS_EXTRACT") { - script "../../extract/main.nf" - process { - """ - input[0] = [ [ id:'test', single_end:true ], // 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) ] - ] - """ - } - } - - run("BWA_INDEX") { - script "../../../bwa/index/main.nf" - process { - """ - input[0] = [ - [id: 'test'], - file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) - ] - """ - } - } - - run("BWA_MEM") { - script "../../../bwa/mem/main.nf" - process { - """ - input[0] = [ [ id:'test', single_end:true ], // 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) ] - ] - input[1] = BWA_INDEX.out.index - input[2] = true - """ - } - } - - run("SAMTOOLS_INDEX") { - script "../../../samtools/index/main.nf" - process { - """ - input[0] = BWA_MEM.out.bam - """ - } - } - } - when { process { """ get_output_stats = true - input[0] = BWA_MEM.out.bam.join(SAMTOOLS_INDEX.out.bai, by: [0]) + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + "genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam", checkIfExists: true), + file(params.modules_testdata_base_path + "genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam.bai", checkIfExists: true) + ] input[1] = get_output_stats """ } diff --git a/modules/nf-core/umitools/dedup/tests/main.nf.test.snap b/modules/nf-core/umitools/dedup/tests/main.nf.test.snap index b0523ebe9..bc3c8693c 100644 --- a/modules/nf-core/umitools/dedup/tests/main.nf.test.snap +++ b/modules/nf-core/umitools/dedup/tests/main.nf.test.snap @@ -5,9 +5,9 @@ [ { "id": "test", - "single_end": true + "single_end": false }, - "test.dedup.bam:md5,f05f85af8c18c1bf0a9d8e982302a179" + "test.dedup.bam:md5,350e942a0d45e8356fa24bc8c47dc1ed" ] ] ], @@ -15,7 +15,7 @@ "nf-test": "0.8.4", "nextflow": "24.01.0" }, - "timestamp": "2024-03-04T15:17:51.102291" + "timestamp": "2024-03-04T17:41:38.139428" }, "pe - tsv_per_umi": { "content": [ @@ -23,9 +23,9 @@ [ { "id": "test", - "single_end": true + "single_end": false }, - "test.dedup_per_umi.tsv:md5,9b59b25634740ae3dd02a38b3aee1397" + "test.dedup_per_umi.tsv:md5,8e6783a4a79437b095f095f2aefe7c01" ] ] ], @@ -33,7 +33,7 @@ "nf-test": "0.8.4", "nextflow": "24.01.0" }, - "timestamp": "2024-03-04T15:18:18.259276" + "timestamp": "2024-03-04T17:41:56.21078" }, "pe - tsv_edit_distance": { "content": [ @@ -41,9 +41,9 @@ [ { "id": "test", - "single_end": true + "single_end": false }, - "test.dedup_edit_distance.tsv:md5,2877cf9620128098210351d463e2079b" + "test.dedup_edit_distance.tsv:md5,65186b0964e2f8d970cc04d736d8b119" ] ] ], @@ -51,39 +51,9 @@ "nf-test": "0.8.4", "nextflow": "24.01.0" }, - "timestamp": "2024-03-04T15:18:18.251105" - }, - "no umi - versions": { - "content": [ - [ - "versions.yml:md5,e2f5146464c09bf7ae98c85ea5410e50" - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" - }, - "timestamp": "2024-03-04T15:16:55.996597" + "timestamp": "2024-03-04T17:41:56.203654" }, "pe - tsv_umi_per_position": { - "content": [ - [ - [ - { - "id": "test", - "single_end": true - }, - "test.dedup_per_umi_per_position.tsv:md5,2e1a12e6f720510880068deddeefe063" - ] - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" - }, - "timestamp": "2024-03-04T15:18:18.268872" - }, - "no umi - bam": { "content": [ [ [ @@ -91,7 +61,7 @@ "id": "test", "single_end": false }, - "test.dedup.bam:md5,350e942a0d45e8356fa24bc8c47dc1ed" + "test.dedup_per_umi_per_position.tsv:md5,9386db4a104b8e4e32f3ca4a84efa4ac" ] ] ], @@ -99,7 +69,7 @@ "nf-test": "0.8.4", "nextflow": "24.01.0" }, - "timestamp": "2024-03-04T15:16:55.988116" + "timestamp": "2024-03-04T17:41:56.217525" }, "se no stats - bam": { "content": [ @@ -109,7 +79,7 @@ "id": "test", "single_end": true }, - "test.dedup.bam:md5,cb1e038bc4d990683fa485d632550b54" + "test.dedup.bam:md5,c9da2ee4f07f5c6922251bd01d6bcb01" ] ] ], @@ -117,7 +87,7 @@ "nf-test": "0.8.4", "nextflow": "24.01.0" }, - "timestamp": "2024-03-04T15:17:23.458528" + "timestamp": "2024-03-04T17:41:16.383148" }, "se no stats - versions": { "content": [ @@ -129,7 +99,7 @@ "nf-test": "0.8.4", "nextflow": "24.01.0" }, - "timestamp": "2024-03-04T15:17:23.469933" + "timestamp": "2024-03-04T17:41:16.391241" }, "pe - versions": { "content": [ @@ -141,7 +111,7 @@ "nf-test": "0.8.4", "nextflow": "24.01.0" }, - "timestamp": "2024-03-04T15:18:18.278616" + "timestamp": "2024-03-04T17:41:56.226748" }, "pe - bam": { "content": [ @@ -149,9 +119,9 @@ [ { "id": "test", - "single_end": true + "single_end": false }, - "test.dedup.bam:md5,f05f85af8c18c1bf0a9d8e982302a179" + "test.dedup.bam:md5,350e942a0d45e8356fa24bc8c47dc1ed" ] ] ], @@ -159,7 +129,7 @@ "nf-test": "0.8.4", "nextflow": "24.01.0" }, - "timestamp": "2024-03-04T15:18:18.242891" + "timestamp": "2024-03-04T17:41:56.19652" }, "pe no stats - versions": { "content": [ @@ -171,6 +141,6 @@ "nf-test": "0.8.4", "nextflow": "24.01.0" }, - "timestamp": "2024-03-04T15:17:51.120082" + "timestamp": "2024-03-04T17:41:38.157629" } } \ No newline at end of file diff --git a/modules/nf-core/umitools/dedup/tests/nextflow.config b/modules/nf-core/umitools/dedup/tests/nextflow.config index e3bc6125f..da6652dc3 100644 --- a/modules/nf-core/umitools/dedup/tests/nextflow.config +++ b/modules/nf-core/umitools/dedup/tests/nextflow.config @@ -1,8 +1,4 @@ process { - withName: UMITOOLS_EXTRACT { - ext.args = '--bc-pattern="NNNN"' - } - withName: UMITOOLS_DEDUP { ext.prefix = { "${meta.id}.dedup" } } From 004f56db2819441c05e52d8bcbc0275862b2e6ed Mon Sep 17 00:00:00 2001 From: maxulysse Date: Mon, 4 Mar 2024 18:55:31 +0100 Subject: [PATCH 135/634] update sortmerna functionalities --- main.nf | 8 ++++- modules/nf-core/sortmerna/nextflow.config | 2 +- nextflow_schema.json | 8 +++++ subworkflows/local/prepare_genome/main.nf | 35 +++++++++++++++++++ .../local/prepare_genome/nextflow.config | 13 +++++++ workflows/rnaseq/main.nf | 23 ++++++++++-- 6 files changed, 85 insertions(+), 4 deletions(-) diff --git a/main.nf b/main.nf index 59001a4f1..1b98f2341 100755 --- a/main.nf +++ b/main.nf @@ -37,6 +37,7 @@ params.gtf = getGenomeAttribute('gtf') params.gff = getGenomeAttribute('gff') params.gene_bed = getGenomeAttribute('bed12') params.bbsplit_index = getGenomeAttribute('bbsplit') +params.sortmerna_index = getGenomeAttribute('sortmerna') params.star_index = getGenomeAttribute('star') params.hisat2_index = getGenomeAttribute('hisat2') params.rsem_index = getGenomeAttribute('rsem') @@ -70,18 +71,21 @@ workflow NFCORE_RNASEQ { params.gene_bed, params.splicesites, params.bbsplit_fasta_list, + params.ribo_database_manifest, params.star_index, params.rsem_index, params.salmon_index, params.kallisto_index, params.hisat2_index, params.bbsplit_index, + params.sortmerna_index, params.gencode, params.featurecounts_group_type, params.aligner, params.pseudo_aligner, params.skip_gtf_filter, params.skip_bbsplit, + !params.remove_ribo_rna, params.skip_alignment, params.skip_pseudo_alignment ) @@ -114,7 +118,9 @@ workflow NFCORE_RNASEQ { PREPARE_GENOME.out.salmon_index, PREPARE_GENOME.out.kallisto_index, PREPARE_GENOME.out.bbsplit_index, - PREPARE_GENOME.out.splicesites + PREPARE_GENOME.out.sortmerna_index, + PREPARE_GENOME.out.splicesites, + !params.remove_ribo_rna && params.remove_ribo_rna ) ch_versions = ch_versions.mix(RNASEQ.out.versions) diff --git a/modules/nf-core/sortmerna/nextflow.config b/modules/nf-core/sortmerna/nextflow.config index 8771660ce..8322435dc 100644 --- a/modules/nf-core/sortmerna/nextflow.config +++ b/modules/nf-core/sortmerna/nextflow.config @@ -1,7 +1,7 @@ if (params.remove_ribo_rna) { process { withName: 'SORTMERNA' { - ext.args = '--num_alignments 1 -v' + ext.args = '--num_alignments 1 -v --index 0' publishDir = [ [ path: { "${params.outdir}/sortmerna" }, diff --git a/nextflow_schema.json b/nextflow_schema.json index e5195cade..5a93d7060 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -267,6 +267,14 @@ "description": "Path to directory or tar.gz archive for pre-built BBSplit index.", "help_text": "The BBSplit index will have to be built at least once with this pipeline (see `--save_reference` to save index). It can then be provided via `--bbsplit_index` for future runs." }, + "sortmerna_index": { + "type": "string", + "format": "path", + "exists": true, + "fa_icon": "fas fa-bezier-curve", + "description": "Path to directory or tar.gz archive for pre-built sortmerna index.", + "help_text": "The sortmerna index will have to be built at least once with this pipeline (see `--save_reference` to save index). It can then be provided via `--sortmerna_index` for future runs." + }, "remove_ribo_rna": { "type": "boolean", "fa_icon": "fas fa-trash-alt", diff --git a/subworkflows/local/prepare_genome/main.nf b/subworkflows/local/prepare_genome/main.nf index 58a9b293c..f8fb8f2d1 100644 --- a/subworkflows/local/prepare_genome/main.nf +++ b/subworkflows/local/prepare_genome/main.nf @@ -10,6 +10,7 @@ include { GUNZIP as GUNZIP_TRANSCRIPT_FASTA } from '../../../modules/nf-core/gun include { GUNZIP as GUNZIP_ADDITIONAL_FASTA } from '../../../modules/nf-core/gunzip' include { UNTAR as UNTAR_BBSPLIT_INDEX } from '../../../modules/nf-core/untar' +include { UNTAR as UNTAR_SORTMERNA_INDEX } from '../../../modules/nf-core/untar' include { UNTAR as UNTAR_STAR_INDEX } from '../../../modules/nf-core/untar' include { UNTAR as UNTAR_RSEM_INDEX } from '../../../modules/nf-core/untar' include { UNTAR as UNTAR_HISAT2_INDEX } from '../../../modules/nf-core/untar' @@ -20,6 +21,7 @@ include { CUSTOM_CATADDITIONALFASTA } from '../../../modules/nf-core/cus include { CUSTOM_GETCHROMSIZES } from '../../../modules/nf-core/custom/getchromsizes' include { GFFREAD } from '../../../modules/nf-core/gffread' include { BBMAP_BBSPLIT } from '../../../modules/nf-core/bbmap/bbsplit' +include { SORTMERNA as SORTMERNA_INDEX } from '../../../modules/nf-core/sortmerna' include { STAR_GENOMEGENERATE } from '../../../modules/nf-core/star/genomegenerate' include { HISAT2_EXTRACTSPLICESITES } from '../../../modules/nf-core/hisat2/extractsplicesites' include { HISAT2_BUILD } from '../../../modules/nf-core/hisat2/build' @@ -43,18 +45,21 @@ workflow PREPARE_GENOME { gene_bed // file: /path/to/gene.bed splicesites // file: /path/to/splicesites.txt bbsplit_fasta_list // file: /path/to/bbsplit_fasta_list.txt + sortmerna_fasta_list // file: /path/to/sortmerna_fasta_list.txt star_index // directory: /path/to/star/index/ rsem_index // directory: /path/to/rsem/index/ salmon_index // directory: /path/to/salmon/index/ kallisto_index // directory: /path/to/kallisto/index/ hisat2_index // directory: /path/to/hisat2/index/ bbsplit_index // directory: /path/to/rsem/index/ + sortmerna_index // directory: /path/to/sortmerna/index/ gencode // boolean: whether the genome is from GENCODE featurecounts_group_type // string: The attribute type used to group feature types in the GTF file when generating the biotype plot with featureCounts aligner // string: Specifies the alignment algorithm to use - available options are 'star_salmon', 'star_rsem' and 'hisat2' pseudo_aligner // string: Specifies the pseudo aligner to use - available options are 'salmon'. Runs in addition to '--aligner' skip_gtf_filter // boolean: Skip filtering of GTF for valid scaffolds and/ or transcript IDs skip_bbsplit // boolean: Skip BBSplit for removal of non-reference genome reads + skip_sortmerna // boolean: Skip sortmerna for removal of non-reference genome reads skip_alignment // boolean: Skip all of the alignment-based processes within the pipeline skip_pseudo_alignment // boolean: Skip all of the pseudoalignment-based processes within the pipeline @@ -188,6 +193,7 @@ workflow PREPARE_GENOME { // def prepare_tool_indices = [] if (!skip_bbsplit) { prepare_tool_indices << 'bbsplit' } + if (!skip_sortmerna) { prepare_tool_indices << 'sortmerna' } if (!skip_alignment) { prepare_tool_indices << aligner } if (!skip_pseudo_alignment && pseudo_aligner) { prepare_tool_indices << pseudo_aligner } @@ -218,6 +224,34 @@ workflow PREPARE_GENOME { } } + // + // Uncompress sortmerna index or generate from scratch if required + // + ch_sortmerna_index = Channel.empty() + if ('sortmerna' in prepare_tool_indices) { + if (sortmerna_index) { + if (sortmerna_index.endsWith('.tar.gz')) { + ch_sortmerna_index = UNTAR_SORTMERNA_INDEX ( [ [:], sortmerna_index ] ).untar.map { it[1] } + ch_versions = ch_versions.mix(UNTAR_SORTMERNA_INDEX.out.versions) + } else { + ch_sortmerna_index = Channel.value(file(sortmerna_index)) + } + } else { + ch_sortmerna_fastas = Channel.from(file(sortmerna_fasta_list).readLines()) + .map { row -> file(row, checkIfExists: true) } + .collect() + .map{ ['rrna_refs', it] } + + SORTMERNA_INDEX ( + Channel.of([[],[]]), + ch_sortmerna_fastas, + Channel.of([[],[]]) + ) + ch_sortmerna_index = SORTMERNA_INDEX.out.index.first() + ch_versions = ch_versions.mix(SORTMERNA_INDEX.out.versions) + } + } + // // Uncompress STAR index or generate from scratch if required // @@ -336,6 +370,7 @@ workflow PREPARE_GENOME { chrom_sizes = ch_chrom_sizes // channel: path(genome.sizes) splicesites = ch_splicesites // channel: path(genome.splicesites.txt) bbsplit_index = ch_bbsplit_index // channel: path(bbsplit/index/) + sortmerna_index = ch_sortmerna_index // channel: path(sortmerna/index/) star_index = ch_star_index // channel: path(star/index/) rsem_index = ch_rsem_index // channel: path(rsem/index/) hisat2_index = ch_hisat2_index // channel: path(hisat2/index/) diff --git a/subworkflows/local/prepare_genome/nextflow.config b/subworkflows/local/prepare_genome/nextflow.config index e02648197..cb78cb9e3 100644 --- a/subworkflows/local/prepare_genome/nextflow.config +++ b/subworkflows/local/prepare_genome/nextflow.config @@ -112,3 +112,16 @@ if (!params.skip_bbsplit && params.bbsplit_fasta_list) { } } } + +if (params.remove_ribo_rna && params.ribo_database_manifest) { + process { + withName: 'SORTMERNA_INDEX' { + ext.args = '--index 1' + publishDir = [ + path: { params.save_reference ? "${params.outdir}/genome/sortmerna" : params.outdir }, + mode: params.publish_dir_mode, + saveAs: { filename -> filename.equals('versions.yml') ? null : params.save_reference ? filename : null } + ] + } + } +} diff --git a/workflows/rnaseq/main.nf b/workflows/rnaseq/main.nf index 5c7c2b964..0a8f2f9e9 100755 --- a/workflows/rnaseq/main.nf +++ b/workflows/rnaseq/main.nf @@ -44,6 +44,7 @@ include { SAMTOOLS_SORT } from '../../mod include { PRESEQ_LCEXTRAP } from '../../modules/nf-core/preseq/lcextrap' include { QUALIMAP_RNASEQ } from '../../modules/nf-core/qualimap/rnaseq' include { SORTMERNA } from '../../modules/nf-core/sortmerna' +include { SORTMERNA as SORTMERNA_INDEX } from '../../../modules/nf-core/sortmerna/main' include { STRINGTIE_STRINGTIE } from '../../modules/nf-core/stringtie/stringtie' include { SUBREAD_FEATURECOUNTS } from '../../modules/nf-core/subread/featurecounts' include { MULTIQC } from '../../modules/nf-core/multiqc' @@ -97,7 +98,9 @@ workflow RNASEQ { ch_salmon_index // channel: path(salmon/index/) ch_kallisto_index // channel: [ meta, path(kallisto/index/) ] ch_bbsplit_index // channel: path(bbsplit/index/) + ch_sortmerna_index // channel: path(sortmerna/index/) ch_splicesites // channel: path(genome.splicesites.txt) + make_sortmerna_index // boolean: Whether to create a sortmerna index before running sortmerna main: @@ -225,13 +228,29 @@ workflow RNASEQ { // // MODULE: Remove ribosomal RNA reads // + // Check rRNA databases for sortmerna if (params.remove_ribo_rna) { ch_ribo_db = file(params.ribo_database_manifest) - ch_sortmerna_fastas = Channel.from(ch_ribo_db.readLines()).map { row -> file(row, checkIfExists: true) }.collect() + if (ch_ribo_db.isEmpty()) {exit 1, "File provided with --ribo_database_manifest is empty: ${ch_ribo_db.getName()}!"} + + ch_sortmerna_fastas = Channel.from(ch_ribo_db.readLines()) + .map { row -> file(row, checkIfExists: true) } + .collect() + .map{ ['rrna_refs', it] } + + if (make_sortmerna_index) { + SORTMERNA_INDEX ( + [[],[]], + ch_sortmerna_fastas, + [[],[]] + ) + ch_sortmerna_index = SORTMERNA_INDEX.out.index.first() + } SORTMERNA ( ch_filtered_reads, - ch_sortmerna_fastas + ch_sortmerna_fastas, + ch_sortmerna_index ) .reads .set { ch_filtered_reads } From 1e043da1144b90952c94ef4eda7af35e016fe11f Mon Sep 17 00:00:00 2001 From: Maxime U Garcia Date: Mon, 4 Mar 2024 19:06:37 +0100 Subject: [PATCH 136/634] Update modules/nf-core/sortmerna/nextflow.config --- modules/nf-core/sortmerna/nextflow.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/nf-core/sortmerna/nextflow.config b/modules/nf-core/sortmerna/nextflow.config index 8322435dc..953da5a39 100644 --- a/modules/nf-core/sortmerna/nextflow.config +++ b/modules/nf-core/sortmerna/nextflow.config @@ -1,7 +1,7 @@ if (params.remove_ribo_rna) { process { withName: 'SORTMERNA' { - ext.args = '--num_alignments 1 -v --index 0' + ext.args = '--num_alignments 1 -v --index 0' publishDir = [ [ path: { "${params.outdir}/sortmerna" }, From 6694d694f9b43fb59b73d79b04e1cdbaf3d67ce2 Mon Sep 17 00:00:00 2001 From: maxulysse Date: Mon, 4 Mar 2024 19:16:36 +0100 Subject: [PATCH 137/634] empty index --- workflows/rnaseq/main.nf | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/workflows/rnaseq/main.nf b/workflows/rnaseq/main.nf index 5c7c2b964..441017458 100755 --- a/workflows/rnaseq/main.nf +++ b/workflows/rnaseq/main.nf @@ -231,7 +231,8 @@ workflow RNASEQ { SORTMERNA ( ch_filtered_reads, - ch_sortmerna_fastas + ch_sortmerna_fastas, + [] ) .reads .set { ch_filtered_reads } From 8a0776a286c8c50e38bdbac8344b1e0566e538d9 Mon Sep 17 00:00:00 2001 From: maxulysse Date: Mon, 4 Mar 2024 19:26:53 +0100 Subject: [PATCH 138/634] add meta map --- workflows/rnaseq/main.nf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/workflows/rnaseq/main.nf b/workflows/rnaseq/main.nf index 441017458..1944c442c 100755 --- a/workflows/rnaseq/main.nf +++ b/workflows/rnaseq/main.nf @@ -231,7 +231,7 @@ workflow RNASEQ { SORTMERNA ( ch_filtered_reads, - ch_sortmerna_fastas, + ch_sortmerna_fastas.map{ it -> [[id:'fasta'], it]}, [] ) .reads From 11d1a05b484a81dca0aaba3521cbc7cc0414a27c Mon Sep 17 00:00:00 2001 From: maxulysse Date: Mon, 4 Mar 2024 19:45:29 +0100 Subject: [PATCH 139/634] fix cardinality --- workflows/rnaseq/main.nf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/workflows/rnaseq/main.nf b/workflows/rnaseq/main.nf index 1944c442c..2b88c1aec 100755 --- a/workflows/rnaseq/main.nf +++ b/workflows/rnaseq/main.nf @@ -231,8 +231,8 @@ workflow RNASEQ { SORTMERNA ( ch_filtered_reads, - ch_sortmerna_fastas.map{ it -> [[id:'fasta'], it]}, - [] + ch_sortmerna_fastas.map{ it -> [ [ id:'fastas' ], it ] }, + [[],[]] ) .reads .set { ch_filtered_reads } From b42c8f690cf1380057fb2ebc4f57ba5366b94368 Mon Sep 17 00:00:00 2001 From: maxulysse Date: Mon, 4 Mar 2024 19:45:46 +0100 Subject: [PATCH 140/634] typo:tyop --- workflows/rnaseq/main.nf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/workflows/rnaseq/main.nf b/workflows/rnaseq/main.nf index 2b88c1aec..fdd90eace 100755 --- a/workflows/rnaseq/main.nf +++ b/workflows/rnaseq/main.nf @@ -232,7 +232,7 @@ workflow RNASEQ { SORTMERNA ( ch_filtered_reads, ch_sortmerna_fastas.map{ it -> [ [ id:'fastas' ], it ] }, - [[],[]] + [[:],[]] ) .reads .set { ch_filtered_reads } From d02c6f662ff12dc59228ae10d83c9a54c5a16ab2 Mon Sep 17 00:00:00 2001 From: maxulysse Date: Mon, 4 Mar 2024 20:11:32 +0100 Subject: [PATCH 141/634] update CHANGELOG --- CHANGELOG.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 581304379..c24a063e6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -21,9 +21,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [PR #1220](https://github.com/nf-core/rnaseq/pull/1220) - Initialise nf-test and add pipeline level test - [PR #1226](https://github.com/nf-core/rnaseq/pull/1226) - Reuse bbsplit index and don't keep overwriting ([#1225](https://github.com/nf-core/rnaseq/issues/1225)) - [PR #1229](https://github.com/nf-core/rnaseq/pull/1229) - Template update for nf-core/tools v2.13.1 +- [PR #1231](https://github.com/nf-core/rnaseq/pull/1231) - Add sortmerna index possibilities ### Parameters +| Old parameter | New parameter | +| ------------- | ------------------- | +| | `--sortmerna_index` | + ### Software dependencies | Dependency | Old version | New version | From d0941f139eec26e355fff13ceb18503b0ded2dde Mon Sep 17 00:00:00 2001 From: maxulysse Date: Tue, 5 Mar 2024 10:12:49 +0100 Subject: [PATCH 142/634] fix path --- workflows/rnaseq/main.nf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/workflows/rnaseq/main.nf b/workflows/rnaseq/main.nf index 0a8f2f9e9..8549f802e 100755 --- a/workflows/rnaseq/main.nf +++ b/workflows/rnaseq/main.nf @@ -44,7 +44,7 @@ include { SAMTOOLS_SORT } from '../../mod include { PRESEQ_LCEXTRAP } from '../../modules/nf-core/preseq/lcextrap' include { QUALIMAP_RNASEQ } from '../../modules/nf-core/qualimap/rnaseq' include { SORTMERNA } from '../../modules/nf-core/sortmerna' -include { SORTMERNA as SORTMERNA_INDEX } from '../../../modules/nf-core/sortmerna/main' +include { SORTMERNA as SORTMERNA_INDEX } from '../../modules/nf-core/sortmerna' include { STRINGTIE_STRINGTIE } from '../../modules/nf-core/stringtie/stringtie' include { SUBREAD_FEATURECOUNTS } from '../../modules/nf-core/subread/featurecounts' include { MULTIQC } from '../../modules/nf-core/multiqc' From 04b3581dcdc50326833fc65ae8539783bf820180 Mon Sep 17 00:00:00 2001 From: Maxime U Garcia Date: Tue, 5 Mar 2024 10:17:51 +0100 Subject: [PATCH 143/634] Update subworkflows/local/prepare_genome/main.nf Co-authored-by: Jonathan Manning --- subworkflows/local/prepare_genome/main.nf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/subworkflows/local/prepare_genome/main.nf b/subworkflows/local/prepare_genome/main.nf index f8fb8f2d1..ba2ee14dc 100644 --- a/subworkflows/local/prepare_genome/main.nf +++ b/subworkflows/local/prepare_genome/main.nf @@ -59,7 +59,7 @@ workflow PREPARE_GENOME { pseudo_aligner // string: Specifies the pseudo aligner to use - available options are 'salmon'. Runs in addition to '--aligner' skip_gtf_filter // boolean: Skip filtering of GTF for valid scaffolds and/ or transcript IDs skip_bbsplit // boolean: Skip BBSplit for removal of non-reference genome reads - skip_sortmerna // boolean: Skip sortmerna for removal of non-reference genome reads + skip_sortmerna // boolean: Skip sortmerna for removal of reads mapping to sequences in sortmerna_fasta_list skip_alignment // boolean: Skip all of the alignment-based processes within the pipeline skip_pseudo_alignment // boolean: Skip all of the pseudoalignment-based processes within the pipeline From 341fb5dea3e7bd5812a251fa082b0075de30c702 Mon Sep 17 00:00:00 2001 From: maxulysse Date: Tue, 5 Mar 2024 10:33:33 +0100 Subject: [PATCH 144/634] copy tests from star_genomegenerate --- .../star_genomegenerate_igenomes/main.nf | 5 +- .../tests/main.nf.test | 93 +++++++++++++++++++ .../tests/main.nf.test.snap | 90 ++++++++++++++++++ .../tests/tags.yml | 2 + 4 files changed, 188 insertions(+), 2 deletions(-) create mode 100644 modules/local/star_genomegenerate_igenomes/tests/main.nf.test create mode 100644 modules/local/star_genomegenerate_igenomes/tests/main.nf.test.snap create mode 100644 modules/local/star_genomegenerate_igenomes/tests/tags.yml diff --git a/modules/local/star_genomegenerate_igenomes/main.nf b/modules/local/star_genomegenerate_igenomes/main.nf index 7766faaaf..814bc7c8c 100644 --- a/modules/local/star_genomegenerate_igenomes/main.nf +++ b/modules/local/star_genomegenerate_igenomes/main.nf @@ -22,6 +22,7 @@ process STAR_GENOMEGENERATE_IGENOMES { def args = task.ext.args ?: '' def args_list = args.tokenize() def memory = task.memory ? "--limitGenomeGenerateRAM ${task.memory.toBytes() - 100000000}" : '' + def include_gtf = gtf ? "--sjdbGTFfile $gtf" : '' if (args_list.contains('--genomeSAindexNbases')) { """ mkdir star @@ -29,7 +30,7 @@ process STAR_GENOMEGENERATE_IGENOMES { --runMode genomeGenerate \\ --genomeDir star/ \\ --genomeFastaFiles $fasta \\ - --sjdbGTFfile $gtf \\ + $include_gtf \\ --runThreadN $task.cpus \\ $memory \\ $args @@ -51,7 +52,7 @@ process STAR_GENOMEGENERATE_IGENOMES { --runMode genomeGenerate \\ --genomeDir star/ \\ --genomeFastaFiles $fasta \\ - --sjdbGTFfile $gtf \\ + $include_gtf \\ --runThreadN $task.cpus \\ --genomeSAindexNbases \$NUM_BASES \\ $memory \\ diff --git a/modules/local/star_genomegenerate_igenomes/tests/main.nf.test b/modules/local/star_genomegenerate_igenomes/tests/main.nf.test new file mode 100644 index 000000000..f61c36883 --- /dev/null +++ b/modules/local/star_genomegenerate_igenomes/tests/main.nf.test @@ -0,0 +1,93 @@ +nextflow_process { + + name "Test Process STAR_GENOMEGENERATE_IGENOMES" + script "../main.nf" + process "STAR_GENOMEGENERATE_IGENOMES" + + tag "STAR_GENOMEGENERATE_IGENOMES" + + test("fasta_gtf") { + + when { + process { + """ + input[0] = Channel.of([file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true)]) + input[1] = Channel.of([file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.gtf', checkIfExists: true)]) + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(file(process.out.index[0][1]).listFiles().collect { it.getName() }.sort().toString()).match("fasta_gtf_index") }, + { assert snapshot(process.out.versions).match("fasta_gtf_versions") } + ) + } + } + + test("fasta_gtf_stub") { + + options '-stub' + + when { + process { + """ + input[0] = Channel.of([file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true)]) + input[1] = Channel.of([file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.gtf', checkIfExists: true)]) + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(file(process.out.index[0][1]).listFiles().collect { it.getName() }.sort().toString()).match("fasta_gtf_stub_index") }, + { assert snapshot(process.out.versions).match("fasta_gtf_stub_versions") } + ) + } + } + + test("fasta") { + + when { + process { + """ + input[0] = Channel.of([file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true)]) + input[1] = Channel.of([ ]) + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(file(process.out.index[0][1]).listFiles().collect { it.getName() }.sort().toString()).match("fasta_index") }, + { assert snapshot(process.out.versions).match("fasta_versions") } + ) + } + + } + + test("fasta_stub") { + + options '-stub' + + when { + process { + """ + input[0] = Channel.of([file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true)]) + input[1] = Channel.of([ ]) + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(file(process.out.index[0][1]).listFiles().collect { it.getName() }.sort().toString()).match("fasta_stub_index") }, + { assert snapshot(process.out.versions).match("fasta_stub_versions") } + ) + } + } +} diff --git a/modules/local/star_genomegenerate_igenomes/tests/main.nf.test.snap b/modules/local/star_genomegenerate_igenomes/tests/main.nf.test.snap new file mode 100644 index 000000000..4a3d6e033 --- /dev/null +++ b/modules/local/star_genomegenerate_igenomes/tests/main.nf.test.snap @@ -0,0 +1,90 @@ +{ + "fasta_gtf_versions": { + "content": [ + [ + "versions.yml:md5,562a70f12dd9e695449b59fbf604e98d" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-05T10:28:05.069709" + }, + "fasta_stub_versions": { + "content": [ + [ + "versions.yml:md5,562a70f12dd9e695449b59fbf604e98d" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-05T10:31:12.153651" + }, + "fasta_gtf_stub_index": { + "content": [ + "[]" + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-05T10:28:16.309869" + }, + "fasta_gtf_stub_versions": { + "content": [ + [ + "versions.yml:md5,562a70f12dd9e695449b59fbf604e98d" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-05T10:28:16.337298" + }, + "fasta_index": { + "content": [ + "[]" + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-05T10:30:56.504744" + }, + "fasta_versions": { + "content": [ + [ + "versions.yml:md5,562a70f12dd9e695449b59fbf604e98d" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-05T10:30:56.575367" + }, + "fasta_gtf_index": { + "content": [ + "[]" + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-05T10:28:05.031195" + }, + "fasta_stub_index": { + "content": [ + "[]" + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-05T10:31:12.12097" + } +} \ No newline at end of file diff --git a/modules/local/star_genomegenerate_igenomes/tests/tags.yml b/modules/local/star_genomegenerate_igenomes/tests/tags.yml new file mode 100644 index 000000000..2ea1d4211 --- /dev/null +++ b/modules/local/star_genomegenerate_igenomes/tests/tags.yml @@ -0,0 +1,2 @@ +STAR_GENOMEGENERATE_IGENOMES: + - modules/local/star_genomegenerate_igenomes/** From 4d9e2fb6a8dedf3026618864688ba597391e56cf Mon Sep 17 00:00:00 2001 From: maxulysse Date: Tue, 5 Mar 2024 11:09:02 +0100 Subject: [PATCH 145/634] more descriptive tests' names --- .../local/star_genomegenerate_igenomes/tests/main.nf.test | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/modules/local/star_genomegenerate_igenomes/tests/main.nf.test b/modules/local/star_genomegenerate_igenomes/tests/main.nf.test index f61c36883..e32eedafc 100644 --- a/modules/local/star_genomegenerate_igenomes/tests/main.nf.test +++ b/modules/local/star_genomegenerate_igenomes/tests/main.nf.test @@ -6,7 +6,7 @@ nextflow_process { tag "STAR_GENOMEGENERATE_IGENOMES" - test("fasta_gtf") { + test("fasta with gtf") { when { process { @@ -26,7 +26,7 @@ nextflow_process { } } - test("fasta_gtf_stub") { + test("fasta with gtf - stub") { options '-stub' @@ -48,7 +48,7 @@ nextflow_process { } } - test("fasta") { + test("fasta no gtf") { when { process { @@ -69,7 +69,7 @@ nextflow_process { } - test("fasta_stub") { + test("fasta no gtf - stub") { options '-stub' From 7fa04bb568f69aab1f90dd3c48294ec4e1c6b4c0 Mon Sep 17 00:00:00 2001 From: maxulysse Date: Tue, 5 Mar 2024 11:33:51 +0100 Subject: [PATCH 146/634] add nf-tests for star_align_igenomes --- .../star_align_igenomes/tests/main.nf.test | 265 ++++++++++++++++++ .../tests/nextflow.arriba.config | 14 + .../star_align_igenomes/tests/nextflow.config | 14 + .../tests/nextflow.starfusion.config | 14 + .../local/star_align_igenomes/tests/tags.yml | 2 + 5 files changed, 309 insertions(+) create mode 100644 modules/local/star_align_igenomes/tests/main.nf.test create mode 100644 modules/local/star_align_igenomes/tests/nextflow.arriba.config create mode 100644 modules/local/star_align_igenomes/tests/nextflow.config create mode 100644 modules/local/star_align_igenomes/tests/nextflow.starfusion.config create mode 100644 modules/local/star_align_igenomes/tests/tags.yml diff --git a/modules/local/star_align_igenomes/tests/main.nf.test b/modules/local/star_align_igenomes/tests/main.nf.test new file mode 100644 index 000000000..c9c5239de --- /dev/null +++ b/modules/local/star_align_igenomes/tests/main.nf.test @@ -0,0 +1,265 @@ +nextflow_process { + + name "Test Process STAR_ALIGN_IGENOMES" + script "../main.nf" + process "STAR_ALIGN_IGENOMES" + tag "STAR_ALIGN_IGENOMES" + tag "STAR_GENOMEGENERATE_IGENOMES_IGENOMES" + + setup { + run("STAR_GENOMEGENERATE_IGENOMES") { + script "../star_genomegenerate_igenomes/main.nf" + process { + """ + input[0] = Channel.of([ + [ id:'test_fasta' ], + [ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) ] + ]) + input[1] = Channel.of([ + [ id:'test_gtf' ], + [ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.gtf', checkIfExists: true) ] + ]) + """ + } + } + } + + test("homo_sapiens - single_end") { + config "./nextflow.config" + + when { + process { + """ + input[0] = Channel.of([ + [ id:'test', single_end:true ], // meta map + [ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/fastq/test_rnaseq_1.fastq.gz', checkIfExists: true) ] + ]) + input[1] = STAR_GENOMEGENERATE_IGENOMES.out.index + input[2] = Channel.of([ + [ id:'test_gtf' ], + [ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.gtf', checkIfExists: true) ] + ]) + input[3] = false + input[4] = 'illumina' + input[5] = false + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(file(process.out.log_final[0][1]).name).match("homo_sapiens - single_end - log_final") }, + { assert snapshot(file(process.out.log_out[0][1]).name).match("homo_sapiens - single_end - log_out") }, + { assert snapshot(process.out.bam).match("homo_sapiens - single_end - bam") }, + { assert snapshot(process.out.bam_sorted).match("homo_sapiens - single_end - bam_sorted") }, + { assert snapshot(process.out.bam_transcript).match("homo_sapiens - single_end - bam_transcript") }, + { assert snapshot(process.out.bam_unsorted).match("homo_sapiens - single_end - bam_unsorted") }, + { assert snapshot(process.out.bedgraph).match("homo_sapiens - single_end - bedgraph") }, + { assert snapshot(process.out.fastq).match("homo_sapiens - single_end - fastq") }, + { assert snapshot(process.out.junction).match("homo_sapiens - single_end - junction") }, + { assert snapshot(process.out.log_progress).match("homo_sapiens - single_end - log_progress") }, + { assert snapshot(process.out.read_per_gene_tab).match("homo_sapiens - single_end - read_per_gene_tab") }, + { assert snapshot(process.out.sam).match("homo_sapiens - single_end - sam") }, + { assert snapshot(process.out.spl_junc_tab).match("homo_sapiens - single_end - spl_junc_tab") }, + { assert snapshot(process.out.tab).match("homo_sapiens - single_end - tab") }, + { assert snapshot(process.out.wig).match("homo_sapiens - single_end - wig") }, + { assert snapshot(process.out.versions).match("homo_sapiens - single_end - versions") } + ) + } + } + + test("homo_sapiens - paired_end") { + config "./nextflow.config" + + when { + process { + """ + input[0] = Channel.of([ + [ id:'test', single_end:false ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/fastq/test_rnaseq_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/fastq/test_rnaseq_2.fastq.gz', checkIfExists: true) + ] + ]) + input[1] = STAR_GENOMEGENERATE_IGENOMES.out.index + input[2] = Channel.of([ + [ id:'test_gtf' ], + [ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.gtf', checkIfExists: true) ] + ]) + input[3] = false + input[4] = 'illumina' + input[5] = false + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(file(process.out.log_final[0][1]).name).match("homo_sapiens - paired_end - log_final") }, + { assert snapshot(file(process.out.log_out[0][1]).name).match("homo_sapiens - paired_end - log_out") }, + { assert snapshot(process.out.bam).match("homo_sapiens - paired_end - bam") }, + { assert snapshot(process.out.bam_sorted).match("homo_sapiens - paired_end - bam_sorted") }, + { assert snapshot(process.out.bam_transcript).match("homo_sapiens - paired_end - bam_transcript") }, + { assert snapshot(process.out.bam_unsorted).match("homo_sapiens - paired_end - bam_unsorted") }, + { assert snapshot(process.out.bedgraph).match("homo_sapiens - paired_end - bedgraph") }, + { assert snapshot(process.out.fastq).match("homo_sapiens - paired_end - fastq") }, + { assert snapshot(process.out.junction).match("homo_sapiens - paired_end - junction") }, + { assert snapshot(process.out.log_progress).match("homo_sapiens - paired_end - log_progress") }, + { assert snapshot(process.out.read_per_gene_tab).match("homo_sapiens - paired_end - read_per_gene_tab") }, + { assert snapshot(process.out.sam).match("homo_sapiens - paired_end - sam") }, + { assert snapshot(process.out.spl_junc_tab).match("homo_sapiens - paired_end - spl_junc_tab") }, + { assert snapshot(process.out.tab).match("homo_sapiens - paired_end - tab") }, + { assert snapshot(process.out.wig).match("homo_sapiens - paired_end - wig") }, + { assert snapshot(process.out.versions).match("homo_sapiens - paired_end - versions") } + ) + } + } + + test("homo_sapiens - paired_end - arriba") { + config "./nextflow.arriba.config" + + when { + process { + """ + input[0] = Channel.of([ + [ id:'test', single_end:false ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/fastq/test_rnaseq_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/fastq/test_rnaseq_2.fastq.gz', checkIfExists: true) + ] + ]) + input[1] = STAR_GENOMEGENERATE_IGENOMES.out.index + input[2] = Channel.of([ + [ id:'test_gtf' ], + [ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.gtf', checkIfExists: true) ] + ]) + input[3] = false + input[4] = 'illumina' + input[5] = false + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(file(process.out.log_final[0][1]).name).match("homo_sapiens - paired_end - arriba - log_final") }, + { assert snapshot(file(process.out.log_out[0][1]).name).match("homo_sapiens - paired_end - arriba - log_out") }, + { assert snapshot(file(process.out.log_progress[0][1]).name).match("homo_sapiens - paired_end - arriba - log_progress") }, + { assert snapshot(process.out.bam).match("homo_sapiens - paired_end - arriba - bam") }, + { assert snapshot(process.out.bam_sorted).match("homo_sapiens - paired_end - arriba - bam_sorted") }, + { assert snapshot(process.out.bam_transcript).match("homo_sapiens - paired_end - arriba - bam_transcript") }, + { assert snapshot(process.out.bam_unsorted).match("homo_sapiens - paired_end - arriba - bam_unsorted") }, + { assert snapshot(process.out.bedgraph).match("homo_sapiens - paired_end - arriba - bedgraph") }, + { assert snapshot(process.out.fastq).match("homo_sapiens - paired_end - arriba - fastq") }, + { assert snapshot(process.out.junction).match("homo_sapiens - paired_end - arriba - junction") }, + { assert snapshot(process.out.read_per_gene_tab).match("homo_sapiens - paired_end - arriba - read_per_gene_tab") }, + { assert snapshot(process.out.sam).match("homo_sapiens - paired_end - arriba - sam") }, + { assert snapshot(process.out.spl_junc_tab).match("homo_sapiens - paired_end - arriba - spl_junc_tab") }, + { assert snapshot(process.out.tab).match("homo_sapiens - paired_end - arriba - tab") }, + { assert snapshot(process.out.wig).match("homo_sapiens - paired_end - arriba - wig") }, + { assert snapshot(process.out.versions).match("homo_sapiens - paired_end - arriba - versions") } + ) + } + } + + test("homo_sapiens - paired_end - starfusion") { + config "./nextflow.starfusion.config" + + when { + process { + """ + input[0] = Channel.of([ + [ id:'test', single_end:false ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/fastq/test_rnaseq_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/fastq/test_rnaseq_2.fastq.gz', checkIfExists: true) + ] + ]) + input[1] = STAR_GENOMEGENERATE_IGENOMES.out.index + input[2] = Channel.of([ + [ id:'test_gtf' ], + [ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.gtf', checkIfExists: true) ] + ]) + input[3] = false + input[4] = 'illumina' + input[5] = false + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(file(process.out.log_final[0][1]).name).match("homo_sapiens - paired_end - starfusion - log_final") }, + { assert snapshot(file(process.out.log_out[0][1]).name).match("homo_sapiens - paired_end - starfusion - log_out") }, + { assert snapshot(file(process.out.log_progress[0][1]).name).match("homo_sapiens - paired_end - starfusion - log_progress") }, + { assert snapshot(process.out.bam).match("homo_sapiens - paired_end - starfusion - bam") }, + { assert snapshot(process.out.bam_sorted).match("homo_sapiens - paired_end - starfusion - bam_sorted") }, + { assert snapshot(process.out.bam_transcript).match("homo_sapiens - paired_end - starfusion - bam_transcript") }, + { assert snapshot(process.out.bam_unsorted).match("homo_sapiens - paired_end - starfusion - bam_unsorted") }, + { assert snapshot(process.out.bedgraph).match("homo_sapiens - paired_end - starfusion - bedgraph") }, + { assert snapshot(process.out.fastq).match("homo_sapiens - paired_end - starfusion - fastq") }, + { assert snapshot(process.out.junction).match("homo_sapiens - paired_end - starfusion - junction") }, + { assert snapshot(process.out.read_per_gene_tab).match("homo_sapiens - paired_end - starfusion - read_per_gene_tab") }, + { assert snapshot(process.out.sam).match("homo_sapiens - paired_end - starfusion - sam") }, + { assert snapshot(process.out.spl_junc_tab).match("homo_sapiens - paired_end - starfusion - spl_junc_tab") }, + { assert snapshot(process.out.tab).match("homo_sapiens - paired_end - starfusion - tab") }, + { assert snapshot(process.out.wig).match("homo_sapiens - paired_end - starfusion - wig") }, + { assert snapshot(process.out.versions).match("homo_sapiens - paired_end - starfusion - versions") } + ) + } + } + + test("homo_sapiens - paired_end - multiple") { + config "./nextflow.config" + + when { + process { + """ + input[0] = Channel.of([ + [ id:'test', single_end:false ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/fastq/test_rnaseq_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/fastq/test_rnaseq_2.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/fastq/test_rnaseq_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/fastq/test_rnaseq_2.fastq.gz', checkIfExists: true) + ] + ]) + input[1] = STAR_GENOMEGENERATE_IGENOMES.out.index + input[2] = Channel.of([ + [ id:'test_gtf' ], + [ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.gtf', checkIfExists: true) ] + ]) + input[3] = false + input[4] = 'illumina' + input[5] = false + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(file(process.out.log_final[0][1]).name).match("homo_sapiens - paired_end - multiple - log_final") }, + { assert snapshot(file(process.out.log_out[0][1]).name).match("homo_sapiens - paired_end - multiple - log_out") }, + { assert snapshot(file(process.out.log_progress[0][1]).name).match("homo_sapiens - paired_end - multiple - log_progress") }, + { assert snapshot(process.out.bam).match("homo_sapiens - paired_end - multiple - bam") }, + { assert snapshot(process.out.bam_sorted).match("homo_sapiens - paired_end - multiple - bam_sorted") }, + { assert snapshot(process.out.bam_transcript).match("homo_sapiens - paired_end - multiple - bam_transcript") }, + { assert snapshot(process.out.bam_unsorted).match("homo_sapiens - paired_end - multiple - bam_unsorted") }, + { assert snapshot(process.out.bedgraph).match("homo_sapiens - paired_end - multiple - bedgraph") }, + { assert snapshot(process.out.fastq).match("homo_sapiens - paired_end - multiple - fastq") }, + { assert snapshot(process.out.junction).match("homo_sapiens - paired_end - multiple - junction") }, + { assert snapshot(process.out.read_per_gene_tab).match("homo_sapiens - paired_end - multiple - read_per_gene_tab") }, + { assert snapshot(process.out.sam).match("homo_sapiens - paired_end - multiple - sam") }, + { assert snapshot(process.out.spl_junc_tab).match("homo_sapiens - paired_end - multiple - spl_junc_tab") }, + { assert snapshot(process.out.tab).match("homo_sapiens - paired_end - multiple - tab") }, + { assert snapshot(process.out.wig).match("homo_sapiens - paired_end - multiple - wig") }, + { assert snapshot(process.out.versions).match("homo_sapiens - paired_end - multiple - versions") } + ) + } + } +} diff --git a/modules/local/star_align_igenomes/tests/nextflow.arriba.config b/modules/local/star_align_igenomes/tests/nextflow.arriba.config new file mode 100644 index 000000000..2324b9e58 --- /dev/null +++ b/modules/local/star_align_igenomes/tests/nextflow.arriba.config @@ -0,0 +1,14 @@ +process { + + withName: STAR_GENOMEGENERATE { + ext.args = '--genomeSAindexNbases 9' + } + + withName: STAR_ALIGN { + ext.args = '--readFilesCommand zcat --outSAMtype BAM Unsorted --outSAMunmapped Within --outBAMcompression 0 --outFilterMultimapNmax 50 --peOverlapNbasesMin 10 --alignSplicedMateMapLminOverLmate 0.5 --alignSJstitchMismatchNmax 5 -1 5 5 --chimSegmentMin 10 --chimOutType WithinBAM HardClip --chimJunctionOverhangMin 10 --chimScoreDropMax 30 --chimScoreJunctionNonGTAG 0 --chimScoreSeparation 1 --chimSegmentReadGapMax 3 --chimMultimapNmax 50' + } + +} + +// Fix chown issue for the output star folder +docker.runOptions = '--platform=linux/amd64 -u $(id -u):$(id -g)' diff --git a/modules/local/star_align_igenomes/tests/nextflow.config b/modules/local/star_align_igenomes/tests/nextflow.config new file mode 100644 index 000000000..c4ac58088 --- /dev/null +++ b/modules/local/star_align_igenomes/tests/nextflow.config @@ -0,0 +1,14 @@ +process { + + withName: STAR_GENOMEGENERATE { + ext.args = '--genomeSAindexNbases 9' + } + + withName: STAR_ALIGN { + ext.args = '--readFilesCommand zcat --outSAMtype BAM SortedByCoordinate --outWigType bedGraph --outWigStrand Unstranded' + } + +} + +// Fix chown issue for the output star folder +docker.runOptions = '--platform=linux/amd64 -u $(id -u):$(id -g)' diff --git a/modules/local/star_align_igenomes/tests/nextflow.starfusion.config b/modules/local/star_align_igenomes/tests/nextflow.starfusion.config new file mode 100644 index 000000000..467b64977 --- /dev/null +++ b/modules/local/star_align_igenomes/tests/nextflow.starfusion.config @@ -0,0 +1,14 @@ +process { + + withName: STAR_GENOMEGENERATE { + ext.args = '--genomeSAindexNbases 9' + } + + withName: STAR_ALIGN { + ext.args = '--readFilesCommand zcat --outSAMtype BAM Unsorted --outReadsUnmapped None --twopassMode Basic --outSAMstrandField intronMotif --outSAMunmapped Within --chimSegmentMin 12 --chimJunctionOverhangMin 8 --chimOutJunctionFormat 1 --alignSJDBoverhangMin 10 --alignMatesGapMax 100000 --alignIntronMax 100000 --alignSJstitchMismatchNmax 5 -1 5 5 --chimMultimapScoreRange 3 --chimScoreJunctionNonGTAG -4 --chimMultimapNmax 20 --chimNonchimScoreDropMin 10 --peOverlapNbasesMin 12 --peOverlapMMp 0.1 --alignInsertionFlush Right --alignSplicedMateMapLminOverLmate 0 --alignSplicedMateMapLmin 30' + } + +} + +// Fix chown issue for the output star folder +docker.runOptions = '--platform=linux/amd64 -u $(id -u):$(id -g)' diff --git a/modules/local/star_align_igenomes/tests/tags.yml b/modules/local/star_align_igenomes/tests/tags.yml new file mode 100644 index 000000000..23008800b --- /dev/null +++ b/modules/local/star_align_igenomes/tests/tags.yml @@ -0,0 +1,2 @@ +STAR_ALIGN_IGENOMES: + - modules/local/star_align_igenomes/** From 968cf9c11ce1d27f23729bd16de679544c62db79 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Tue, 5 Mar 2024 12:07:08 +0000 Subject: [PATCH 147/634] Switch to genomecov from nf-core (with separate sort) --- modules.json | 10 ++ modules/local/bedtools_genomecov/main.nf | 53 -------- .../local/bedtools_genomecov/nextflow.config | 11 -- .../bedtools/genomecov/environment.yml | 7 ++ modules/nf-core/bedtools/genomecov/main.nf | 70 +++++++++++ modules/nf-core/bedtools/genomecov/meta.yml | 59 +++++++++ .../bedtools/genomecov/nextflow.config | 24 ++++ .../bedtools/genomecov/tests/main.nf.test | 118 ++++++++++++++++++ .../genomecov/tests/main.nf.test.snap | 95 ++++++++++++++ .../bedtools/genomecov/tests/nextflow.config | 7 ++ .../nf-core/bedtools/genomecov/tests/tags.yml | 2 + modules/nf-core/bedtools/sort/environment.yml | 7 ++ modules/nf-core/bedtools/sort/main.nf | 54 ++++++++ modules/nf-core/bedtools/sort/meta.yml | 54 ++++++++ workflows/rnaseq/main.nf | 32 ++++- 15 files changed, 533 insertions(+), 70 deletions(-) delete mode 100644 modules/local/bedtools_genomecov/main.nf delete mode 100644 modules/local/bedtools_genomecov/nextflow.config create mode 100644 modules/nf-core/bedtools/genomecov/environment.yml create mode 100644 modules/nf-core/bedtools/genomecov/main.nf create mode 100644 modules/nf-core/bedtools/genomecov/meta.yml create mode 100644 modules/nf-core/bedtools/genomecov/nextflow.config create mode 100644 modules/nf-core/bedtools/genomecov/tests/main.nf.test create mode 100644 modules/nf-core/bedtools/genomecov/tests/main.nf.test.snap create mode 100644 modules/nf-core/bedtools/genomecov/tests/nextflow.config create mode 100644 modules/nf-core/bedtools/genomecov/tests/tags.yml create mode 100644 modules/nf-core/bedtools/sort/environment.yml create mode 100644 modules/nf-core/bedtools/sort/main.nf create mode 100644 modules/nf-core/bedtools/sort/meta.yml diff --git a/modules.json b/modules.json index 79b221266..3b5d06405 100644 --- a/modules.json +++ b/modules.json @@ -10,6 +10,16 @@ "git_sha": "dcfa9a18a74300f7fb994cdbf518c981f22de73d", "installed_by": ["modules"] }, + "bedtools/genomecov": { + "branch": "master", + "git_sha": "575e1bc54b083fb15e7dd8b5fcc40bea60e8ce83", + "installed_by": ["modules"] + }, + "bedtools/sort": { + "branch": "master", + "git_sha": "575e1bc54b083fb15e7dd8b5fcc40bea60e8ce83", + "installed_by": ["modules"] + }, "cat/fastq": { "branch": "master", "git_sha": "0997b47c93c06b49aa7b3fefda87e728312cf2ca", diff --git a/modules/local/bedtools_genomecov/main.nf b/modules/local/bedtools_genomecov/main.nf deleted file mode 100644 index 0a0fb3c8b..000000000 --- a/modules/local/bedtools_genomecov/main.nf +++ /dev/null @@ -1,53 +0,0 @@ -process BEDTOOLS_GENOMECOV { - tag "$meta.id" - label 'process_medium' - - conda "bioconda::bedtools=2.30.0" - container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/bedtools:2.30.0--hc088bd4_0' : - 'biocontainers/bedtools:2.30.0--hc088bd4_0' }" - - input: - tuple val(meta), path(bam) - - output: - tuple val(meta), path("*.forward.bedGraph"), emit: bedgraph_forward - tuple val(meta), path("*.reverse.bedGraph"), emit: bedgraph_reverse - 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 prefix_forward = "${prefix}.forward" - def prefix_reverse = "${prefix}.reverse" - if (meta.strandedness == 'reverse') { - prefix_forward = "${prefix}.reverse" - prefix_reverse = "${prefix}.forward" - } - """ - bedtools \\ - genomecov \\ - -ibam $bam \\ - -bg \\ - -strand + \\ - $args \\ - | bedtools sort > ${prefix_forward}.bedGraph - - bedtools \\ - genomecov \\ - -ibam $bam \\ - -bg \\ - -strand - \\ - $args \\ - | bedtools sort > ${prefix_reverse}.bedGraph - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - bedtools: \$(bedtools --version | sed -e "s/bedtools v//g") - END_VERSIONS - """ -} diff --git a/modules/local/bedtools_genomecov/nextflow.config b/modules/local/bedtools_genomecov/nextflow.config deleted file mode 100644 index 85f3d34ae..000000000 --- a/modules/local/bedtools_genomecov/nextflow.config +++ /dev/null @@ -1,11 +0,0 @@ - -if (!params.skip_alignment && !params.skip_bigwig) { - process { - withName: 'BEDTOOLS_GENOMECOV' { - ext.args = '-split -du' - publishDir = [ - enabled: false - ] - } - } -} diff --git a/modules/nf-core/bedtools/genomecov/environment.yml b/modules/nf-core/bedtools/genomecov/environment.yml new file mode 100644 index 000000000..8fbe20c31 --- /dev/null +++ b/modules/nf-core/bedtools/genomecov/environment.yml @@ -0,0 +1,7 @@ +name: bedtools_genomecov +channels: + - conda-forge + - bioconda + - defaults +dependencies: + - bioconda::bedtools=2.31.1 diff --git a/modules/nf-core/bedtools/genomecov/main.nf b/modules/nf-core/bedtools/genomecov/main.nf new file mode 100644 index 000000000..7a4d9c453 --- /dev/null +++ b/modules/nf-core/bedtools/genomecov/main.nf @@ -0,0 +1,70 @@ +process BEDTOOLS_GENOMECOV { + tag "$meta.id" + label 'process_single' + + conda "${moduleDir}/environment.yml" + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/bedtools:2.31.1--hf5e1c6e_0' : + 'biocontainers/bedtools:2.31.1--hf5e1c6e_0' }" + + input: + tuple val(meta), path(intervals), val(scale) + path sizes + val extension + + output: + tuple val(meta), path("*.${extension}"), emit: genomecov + path "versions.yml" , emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + def args = task.ext.args ?: '' + def args_list = args.tokenize() + args += (scale > 0 && scale != 1) ? " -scale $scale" : "" + if (!args_list.contains('-bg') && (scale > 0 && scale != 1)) { + args += " -bg" + } + + def prefix = task.ext.prefix ?: "${meta.id}" + if (intervals.name =~ /\.bam/) { + """ + bedtools \\ + genomecov \\ + -ibam $intervals \\ + $args \\ + > ${prefix}.${extension} + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + bedtools: \$(bedtools --version | sed -e "s/bedtools v//g") + END_VERSIONS + """ + } else { + """ + bedtools \\ + genomecov \\ + -i $intervals \\ + -g $sizes \\ + $args \\ + > ${prefix}.${extension} + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + bedtools: \$(bedtools --version | sed -e "s/bedtools v//g") + END_VERSIONS + """ + } + + stub: + def prefix = task.ext.prefix ?: "${meta.id}" + """ + touch ${prefix}.${extension} + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + bedtools: \$(bedtools --version | sed -e "s/bedtools v//g") + END_VERSIONS + """ +} diff --git a/modules/nf-core/bedtools/genomecov/meta.yml b/modules/nf-core/bedtools/genomecov/meta.yml new file mode 100644 index 000000000..2b2385e3e --- /dev/null +++ b/modules/nf-core/bedtools/genomecov/meta.yml @@ -0,0 +1,59 @@ +name: bedtools_genomecov +description: Computes histograms (default), per-base reports (-d) and BEDGRAPH (-bg) summaries of feature coverage (e.g., aligned sequences) for a given genome. +keywords: + - bed + - bam + - genomecov + - bedtools + - histogram +tools: + - bedtools: + description: | + A set of tools for genomic analysis tasks, specifically enabling genome arithmetic (merge, count, complement) on various file types. + documentation: https://bedtools.readthedocs.io/en/latest/content/tools/genomecov.html + licence: ["MIT"] +input: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - intervals: + type: file + description: BAM/BED/GFF/VCF + pattern: "*.{bam|bed|gff|vcf}" + - scale: + type: integer + description: Number containing the scale factor for the output. Set to 1 to disable. Setting to a value other than 1 will also get the -bg bedgraph output format as this is required for this command switch + - sizes: + type: file + description: Tab-delimited table of chromosome names in the first column and chromosome sizes in the second column + - extension: + type: string + description: Extension of the output file (e. g., ".bg", ".bedgraph", ".txt", ".tab", etc.) It is set arbitrarily by the user and corresponds to the file format which depends on arguments. +output: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - genomecov: + type: file + description: Computed genome coverage file + pattern: "*.${extension}" + - versions: + type: file + description: File containing software versions + pattern: "versions.yml" +authors: + - "@edmundmiller" + - "@sruthipsuresh" + - "@drpatelh" + - "@sidorov-si" + - "@chris-cheshire" +maintainers: + - "@edmundmiller" + - "@sruthipsuresh" + - "@drpatelh" + - "@sidorov-si" + - "@chris-cheshire" diff --git a/modules/nf-core/bedtools/genomecov/nextflow.config b/modules/nf-core/bedtools/genomecov/nextflow.config new file mode 100644 index 000000000..91d441809 --- /dev/null +++ b/modules/nf-core/bedtools/genomecov/nextflow.config @@ -0,0 +1,24 @@ +if (!params.skip_alignment && !params.skip_bigwig) { + + process { + withName: 'BEDTOOLS_GENOMECOV_FW' { + ext.prefix = meta.strandedness == 'reverse' ? meta.id + '.reverse' : meta.id + '.forward' + ext.args = '-split -du -strand + -bg' + publishDir = [ + enabled: false + ] + } + withName: 'BEDTOOLS_GENOMECOV_REV' { + ext.prefix = meta.strandedness == 'reverse' ? meta.id + '.forward' : meta.id + '.reverse' + ext.args = '-split -du -strand - -bg' + publishDir = [ + enabled: false + ] + } + withName: 'BEDTOOLS_SORT_FW|BEDTOOLS_SORT_REV' { + publishDir = [ + enabled: false + ] + } + } +} diff --git a/modules/nf-core/bedtools/genomecov/tests/main.nf.test b/modules/nf-core/bedtools/genomecov/tests/main.nf.test new file mode 100644 index 000000000..21e69aed7 --- /dev/null +++ b/modules/nf-core/bedtools/genomecov/tests/main.nf.test @@ -0,0 +1,118 @@ +nextflow_process { + name "Test Process BEDTOOLS_GENOMECOV" + script "../main.nf" + process "BEDTOOLS_GENOMECOV" + config "./nextflow.config" + + tag "modules" + tag "modules_nfcore" + tag "bedtools" + tag "bedtools/genomecov" + + test("sarscov2 - no scale") { + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + file(params.test_data['sarscov2']['illumina']['test_paired_end_bam'], checkIfExists: true), + 1 + ] + // sizes + input[1] = [] + // extension + input[2] = "txt" + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match("no_scale") } + ) + } + + } + + test("sarscov2 - dummy sizes") { + when { + process { + """ + input[0] = [ + [ id:'test'], + file(params.test_data['sarscov2']['illumina']['test_paired_end_bam'], checkIfExists: true), + 0.5 + ] + // sizes + input[1] = file('dummy_chromosome_sizes') + // extension + input[2] = 'txt' + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match("dummy_sizes") } + ) + } + + } + + test("sarscov2 - scale") { + when { + process { + """ + input[0] = [ + [ id:'test'], + file(params.test_data['sarscov2']['genome']['baits_bed'], checkIfExists: true), + 0.5 + ] + // sizes + input[1] = file(params.test_data['sarscov2']['genome']['genome_sizes'], checkIfExists: true) + // extension + input[2] = 'txt' + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match("scale") } + ) + } + + } + + test("stub") { + options "-stub" + + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + file(params.test_data['sarscov2']['illumina']['test_paired_end_bam'], checkIfExists: true), + 1 + ] + // sizes + input[1] = [] + // extension + input[2] = 'txt' + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(file(process.out.genomecov[0][1]).name).match("stub") } + ) + } + + } + +} diff --git a/modules/nf-core/bedtools/genomecov/tests/main.nf.test.snap b/modules/nf-core/bedtools/genomecov/tests/main.nf.test.snap new file mode 100644 index 000000000..8f9191e4c --- /dev/null +++ b/modules/nf-core/bedtools/genomecov/tests/main.nf.test.snap @@ -0,0 +1,95 @@ +{ + "dummy_sizes": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.coverage.txt:md5,01291b6e1beab72e046653e709eb0e10" + ] + ], + "1": [ + "versions.yml:md5,5fd44452613992a6f71f2c73d2e117f2" + ], + "genomecov": [ + [ + { + "id": "test" + }, + "test.coverage.txt:md5,01291b6e1beab72e046653e709eb0e10" + ] + ], + "versions": [ + "versions.yml:md5,5fd44452613992a6f71f2c73d2e117f2" + ] + } + ], + "timestamp": "2023-12-05T17:35:58.35232" + }, + "no_scale": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.coverage.txt:md5,66083198daca6c001d328ba9616e9b53" + ] + ], + "1": [ + "versions.yml:md5,5fd44452613992a6f71f2c73d2e117f2" + ], + "genomecov": [ + [ + { + "id": "test" + }, + "test.coverage.txt:md5,66083198daca6c001d328ba9616e9b53" + ] + ], + "versions": [ + "versions.yml:md5,5fd44452613992a6f71f2c73d2e117f2" + ] + } + ], + "timestamp": "2023-12-05T17:35:51.142496" + }, + "stub": { + "content": [ + "test.coverage.txt" + ], + "timestamp": "2023-12-05T17:36:13.084709" + }, + "scale": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.coverage.txt:md5,de3c59c0ea123bcdbbad27bc0a0a601e" + ] + ], + "1": [ + "versions.yml:md5,5fd44452613992a6f71f2c73d2e117f2" + ], + "genomecov": [ + [ + { + "id": "test" + }, + "test.coverage.txt:md5,de3c59c0ea123bcdbbad27bc0a0a601e" + ] + ], + "versions": [ + "versions.yml:md5,5fd44452613992a6f71f2c73d2e117f2" + ] + } + ], + "timestamp": "2023-12-05T17:36:05.962006" + } +} \ No newline at end of file diff --git a/modules/nf-core/bedtools/genomecov/tests/nextflow.config b/modules/nf-core/bedtools/genomecov/tests/nextflow.config new file mode 100644 index 000000000..bdb74ae5a --- /dev/null +++ b/modules/nf-core/bedtools/genomecov/tests/nextflow.config @@ -0,0 +1,7 @@ +process { + + withName: BEDTOOLS_GENOMECOV { + ext.prefix = { "${meta.id}.coverage" } + } + +} diff --git a/modules/nf-core/bedtools/genomecov/tests/tags.yml b/modules/nf-core/bedtools/genomecov/tests/tags.yml new file mode 100644 index 000000000..55fce4780 --- /dev/null +++ b/modules/nf-core/bedtools/genomecov/tests/tags.yml @@ -0,0 +1,2 @@ +bedtools/genomecov: + - "modules/nf-core/bedtools/genomecov/**" diff --git a/modules/nf-core/bedtools/sort/environment.yml b/modules/nf-core/bedtools/sort/environment.yml new file mode 100644 index 000000000..87b2e4252 --- /dev/null +++ b/modules/nf-core/bedtools/sort/environment.yml @@ -0,0 +1,7 @@ +name: bedtools_sort +channels: + - conda-forge + - bioconda + - defaults +dependencies: + - bioconda::bedtools=2.31.1 diff --git a/modules/nf-core/bedtools/sort/main.nf b/modules/nf-core/bedtools/sort/main.nf new file mode 100644 index 000000000..b833150a1 --- /dev/null +++ b/modules/nf-core/bedtools/sort/main.nf @@ -0,0 +1,54 @@ +process BEDTOOLS_SORT { + tag "$meta.id" + label 'process_single' + + conda "${moduleDir}/environment.yml" + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/bedtools:2.31.1--hf5e1c6e_0' : + 'biocontainers/bedtools:2.31.1--hf5e1c6e_0' }" + + input: + tuple val(meta), path(intervals) + path genome_file + + output: + tuple val(meta), path("*.${extension}"), emit: sorted + 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 genome_cmd = genome_file ? "-g $genome_file" : "" + extension = task.ext.suffix ?: intervals.extension + if ("$intervals" == "${prefix}.${extension}") { + error "Input and output names are the same, use \"task.ext.prefix\" to disambiguate!" + } + """ + bedtools \\ + sort \\ + -i $intervals \\ + $genome_cmd \\ + $args \\ + > ${prefix}.${extension} + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + bedtools: \$(bedtools --version | sed -e "s/bedtools v//g") + END_VERSIONS + """ + + stub: + def prefix = task.ext.prefix ?: "${meta.id}" + extension = task.ext.suffix ?: intervals.extension + """ + touch ${prefix}.${extension} + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + bedtools: \$(bedtools --version | sed -e "s/bedtools v//g") + END_VERSIONS + """ +} diff --git a/modules/nf-core/bedtools/sort/meta.yml b/modules/nf-core/bedtools/sort/meta.yml new file mode 100644 index 000000000..7c915f5f9 --- /dev/null +++ b/modules/nf-core/bedtools/sort/meta.yml @@ -0,0 +1,54 @@ +name: bedtools_sort +description: Sorts a feature file by chromosome and other criteria. +keywords: + - bed + - sort + - bedtools + - chromosome +tools: + - bedtools: + description: | + A set of tools for genomic analysis tasks, specifically enabling genome arithmetic (merge, count, complement) on various file types. + documentation: https://bedtools.readthedocs.io/en/latest/content/tools/sort.html + licence: ["MIT"] +input: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - intervals: + type: file + description: BED/BEDGRAPH + pattern: "*.{bed|bedGraph}" + - genome_file: + type: file + description: | + Optional reference genome 2 column file that defines the expected chromosome order. + pattern: "*.{fai,txt,chromsizes}" +output: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - sorted: + type: file + description: Sorted output file + pattern: "*.${extension}" + - versions: + type: file + description: File containing software versions + pattern: "versions.yml" +authors: + - "@edmundmiller" + - "@sruthipsuresh" + - "@drpatelh" + - "@chris-cheshire" + - "@adamrtalbot" +maintainers: + - "@edmundmiller" + - "@sruthipsuresh" + - "@drpatelh" + - "@chris-cheshire" + - "@adamrtalbot" diff --git a/workflows/rnaseq/main.nf b/workflows/rnaseq/main.nf index 8549f802e..36f1e3117 100755 --- a/workflows/rnaseq/main.nf +++ b/workflows/rnaseq/main.nf @@ -7,7 +7,6 @@ // // MODULE: Loaded from modules/local/ // -include { BEDTOOLS_GENOMECOV } from '../../modules/local/bedtools_genomecov' include { DESEQ2_QC as DESEQ2_QC_STAR_SALMON } from '../../modules/local/deseq2_qc' include { DESEQ2_QC as DESEQ2_QC_RSEM } from '../../modules/local/deseq2_qc' include { DESEQ2_QC as DESEQ2_QC_PSEUDO } from '../../modules/local/deseq2_qc' @@ -39,6 +38,10 @@ include { getInferexperimentStrandedness } from '../../subworkflows/local/utils_ // MODULE: Installed directly from nf-core/modules // include { CAT_FASTQ } from '../../modules/nf-core/cat/fastq' +include { BEDTOOLS_GENOMECOV as BEDTOOLS_GENOMECOV_FW } from '../../modules/nf-core/bedtools/genomecov' +include { BEDTOOLS_GENOMECOV as BEDTOOLS_GENOMECOV_REV } from '../../modules/nf-core/bedtools/genomecov' +include { BEDTOOLS_SORT as BEDTOOLS_SORT_FW } from '../../modules/nf-core/bedtools/sort' +include { BEDTOOLS_SORT as BEDTOOLS_SORT_REV } from '../../modules/nf-core/bedtools/sort' include { BBMAP_BBSPLIT } from '../../modules/nf-core/bbmap/bbsplit' include { SAMTOOLS_SORT } from '../../modules/nf-core/samtools/sort' include { PRESEQ_LCEXTRAP } from '../../modules/nf-core/preseq/lcextrap' @@ -636,22 +639,39 @@ workflow RNASEQ { // if (!params.skip_alignment && !params.skip_bigwig) { - BEDTOOLS_GENOMECOV ( - ch_genome_bam + ch_genomecov_input = ch_genome_bam.map { meta, bam -> [ meta, bam, 1 ] } + + BEDTOOLS_GENOMECOV_FW ( + ch_genomecov_input, + [], + 'bedGraph' + ) + BEDTOOLS_SORT_FW ( + BEDTOOLS_GENOMECOV_FW.out.genomecov ) - ch_versions = ch_versions.mix(BEDTOOLS_GENOMECOV.out.versions.first()) + + BEDTOOLS_GENOMECOV_REV ( + ch_genomecov_input, + [], + 'bedGraph' + ) + BEDTOOLS_SORT_REV ( + BEDTOOLS_GENOMECOV_REV.out.genomecov + ) + + ch_versions = ch_versions.mix(BEDTOOLS_GENOMECOV_FW.out.versions.first()) // // SUBWORKFLOW: Convert bedGraph to bigWig // BEDGRAPH_BEDCLIP_BEDGRAPHTOBIGWIG_FORWARD ( - BEDTOOLS_GENOMECOV.out.bedgraph_forward, + BEDTOOLS_SORT_FW.out.sorted, ch_chrom_sizes ) ch_versions = ch_versions.mix(BEDGRAPH_BEDCLIP_BEDGRAPHTOBIGWIG_FORWARD.out.versions) BEDGRAPH_BEDCLIP_BEDGRAPHTOBIGWIG_REVERSE ( - BEDTOOLS_GENOMECOV.out.bedgraph_reverse, + BEDTOOLS_SORT_REV.out.sorted, ch_chrom_sizes ) } From e9a5ba8faba3ec9df36514bf30d97799eff229a1 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Tue, 5 Mar 2024 12:12:25 +0000 Subject: [PATCH 148/634] Fix config import --- workflows/rnaseq/nextflow.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/workflows/rnaseq/nextflow.config b/workflows/rnaseq/nextflow.config index f988d3d7c..5ec9c97b9 100644 --- a/workflows/rnaseq/nextflow.config +++ b/workflows/rnaseq/nextflow.config @@ -1,7 +1,7 @@ -includeConfig "../../modules/local/bedtools_genomecov/nextflow.config" includeConfig "../../modules/local/dupradar/nextflow.config" includeConfig "../../modules/local/multiqc_custom_biotype/nextflow.config" includeConfig "../../modules/nf-core/bbmap/bbsplit/nextflow.config" +includeConfig "../../modules/nf-core/bedtools/genomecov/nextflow.config" includeConfig "../../modules/nf-core/cat/fastq/nextflow.config" includeConfig "../../modules/nf-core/multiqc/nextflow.config" includeConfig "../../modules/nf-core/preseq/lcextrap/nextflow.config" From 66848be129d5c8450c8829970783d78120d3d485 Mon Sep 17 00:00:00 2001 From: maxulysse Date: Tue, 5 Mar 2024 14:02:50 +0100 Subject: [PATCH 149/634] push tests --- modules/local/star_align_igenomes/main.nf | 37 +- .../star_align_igenomes/tests/main.nf.test | 22 +- .../tests/main.nf.test.snap | 958 ++++++++++++++++++ .../tests/nextflow.arriba.config | 6 +- .../star_align_igenomes/tests/nextflow.config | 4 +- .../tests/nextflow.starfusion.config | 4 +- 6 files changed, 1007 insertions(+), 24 deletions(-) create mode 100644 modules/local/star_align_igenomes/tests/main.nf.test.snap diff --git a/modules/local/star_align_igenomes/main.nf b/modules/local/star_align_igenomes/main.nf index b412a7e5c..32f3cac29 100644 --- a/modules/local/star_align_igenomes/main.nf +++ b/modules/local/star_align_igenomes/main.nf @@ -8,7 +8,7 @@ process STAR_ALIGN_IGENOMES { 'biocontainers/mulled-v2-1fa26d1ce03c295fe2fdcf85831a92fbcbd7e8c2:59cdd445419f14abac76b31dd0d71217994cbcc9-0' }" input: - tuple val(meta), path(reads) + tuple val(meta), path(reads, stageAs: "input*/*") tuple val(meta2), path(index) tuple val(meta3), path(gtf) val star_ignore_sjdbgtf @@ -16,12 +16,12 @@ process STAR_ALIGN_IGENOMES { val seq_center output: - tuple val(meta), path('*d.out.bam') , emit: bam tuple val(meta), path('*Log.final.out') , emit: log_final tuple val(meta), path('*Log.out') , emit: log_out tuple val(meta), path('*Log.progress.out'), emit: log_progress path "versions.yml" , emit: versions + tuple val(meta), path('*d.out.bam') , optional:true, emit: bam tuple val(meta), path('*sortedByCoord.out.bam') , optional:true, emit: bam_sorted tuple val(meta), path('*toTranscriptome.out.bam'), optional:true, emit: bam_transcript tuple val(meta), path('*Aligned.unsort.out.bam') , optional:true, emit: bam_unsorted @@ -36,6 +36,8 @@ process STAR_ALIGN_IGENOMES { script: def args = task.ext.args ?: '' def prefix = task.ext.prefix ?: "${meta.id}" + def reads1 = [], reads2 = [] + meta.single_end ? [reads].flatten().each{reads1 << it} : reads.eachWithIndex{ v, ix -> ( ix & 1 ? reads2 : reads1) << v } def ignore_gtf = star_ignore_sjdbgtf ? '' : "--sjdbGTFfile $gtf" def seq_platform = seq_platform ? "'PL:$seq_platform'" : "" def seq_center = seq_center ? "--outSAMattrRGline ID:$prefix 'CN:$seq_center' 'SM:$prefix' $seq_platform " : "--outSAMattrRGline ID:$prefix 'SM:$prefix' $seq_platform " @@ -44,7 +46,7 @@ process STAR_ALIGN_IGENOMES { """ STAR \\ --genomeDir $index \\ - --readFilesIn $reads \\ + --readFilesIn ${reads1.join(",")} ${reads2.join(",")} \\ --runThreadN $task.cpus \\ --outFileNamePrefix $prefix. \\ $out_sam_type \\ @@ -70,4 +72,33 @@ process STAR_ALIGN_IGENOMES { gawk: \$(echo \$(gawk --version 2>&1) | sed 's/^.*GNU Awk //; s/, .*\$//') END_VERSIONS """ + + stub: + def prefix = task.ext.prefix ?: "${meta.id}" + """ + touch ${prefix}Xd.out.bam + touch ${prefix}.Log.final.out + touch ${prefix}.Log.out + touch ${prefix}.Log.progress.out + touch ${prefix}.sortedByCoord.out.bam + touch ${prefix}.toTranscriptome.out.bam + touch ${prefix}.Aligned.unsort.out.bam + touch ${prefix}.Aligned.sortedByCoord.out.bam + touch ${prefix}.unmapped_1.fastq.gz + touch ${prefix}.unmapped_2.fastq.gz + touch ${prefix}.tab + touch ${prefix}.SJ.out.tab + touch ${prefix}.ReadsPerGene.out.tab + touch ${prefix}.Chimeric.out.junction + touch ${prefix}.out.sam + touch ${prefix}.Signal.UniqueMultiple.str1.out.wig + touch ${prefix}.Signal.UniqueMultiple.str1.out.bg + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + star: \$(STAR --version | sed -e "s/STAR_//g") + samtools: \$(echo \$(samtools --version 2>&1) | sed 's/^.*samtools //; s/Using.*\$//') + gawk: \$(echo \$(gawk --version 2>&1) | sed 's/^.*GNU Awk //; s/, .*\$//') + END_VERSIONS + """ } diff --git a/modules/local/star_align_igenomes/tests/main.nf.test b/modules/local/star_align_igenomes/tests/main.nf.test index c9c5239de..5c7f33d2b 100644 --- a/modules/local/star_align_igenomes/tests/main.nf.test +++ b/modules/local/star_align_igenomes/tests/main.nf.test @@ -8,17 +8,11 @@ nextflow_process { setup { run("STAR_GENOMEGENERATE_IGENOMES") { - script "../star_genomegenerate_igenomes/main.nf" + script "../../star_genomegenerate_igenomes/main.nf" process { """ - input[0] = Channel.of([ - [ id:'test_fasta' ], - [ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) ] - ]) - input[1] = Channel.of([ - [ id:'test_gtf' ], - [ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.gtf', checkIfExists: true) ] - ]) + input[0] = Channel.of([file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true)]) + input[1] = Channel.of([file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.gtf', checkIfExists: true)]) """ } } @@ -34,7 +28,7 @@ nextflow_process { [ id:'test', single_end:true ], // meta map [ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/fastq/test_rnaseq_1.fastq.gz', checkIfExists: true) ] ]) - input[1] = STAR_GENOMEGENERATE_IGENOMES.out.index + input[1] = STAR_GENOMEGENERATE_IGENOMES.out.index.map{ [ [id:'star'], it ] } input[2] = Channel.of([ [ id:'test_gtf' ], [ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.gtf', checkIfExists: true) ] @@ -82,7 +76,7 @@ nextflow_process { file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/fastq/test_rnaseq_2.fastq.gz', checkIfExists: true) ] ]) - input[1] = STAR_GENOMEGENERATE_IGENOMES.out.index + input[1] = STAR_GENOMEGENERATE_IGENOMES.out.index.map{ [ [id:'star'], it ] } input[2] = Channel.of([ [ id:'test_gtf' ], [ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.gtf', checkIfExists: true) ] @@ -130,7 +124,7 @@ nextflow_process { file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/fastq/test_rnaseq_2.fastq.gz', checkIfExists: true) ] ]) - input[1] = STAR_GENOMEGENERATE_IGENOMES.out.index + input[1] = STAR_GENOMEGENERATE_IGENOMES.out.index.map{ [ [id:'star'], it ] } input[2] = Channel.of([ [ id:'test_gtf' ], [ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.gtf', checkIfExists: true) ] @@ -178,7 +172,7 @@ nextflow_process { file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/fastq/test_rnaseq_2.fastq.gz', checkIfExists: true) ] ]) - input[1] = STAR_GENOMEGENERATE_IGENOMES.out.index + input[1] = STAR_GENOMEGENERATE_IGENOMES.out.index.map{ [ [id:'star'], it ] } input[2] = Channel.of([ [ id:'test_gtf' ], [ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.gtf', checkIfExists: true) ] @@ -228,7 +222,7 @@ nextflow_process { file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/fastq/test_rnaseq_2.fastq.gz', checkIfExists: true) ] ]) - input[1] = STAR_GENOMEGENERATE_IGENOMES.out.index + input[1] = STAR_GENOMEGENERATE_IGENOMES.out.index.map{ [ [id:'star'], it ] } input[2] = Channel.of([ [ id:'test_gtf' ], [ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.gtf', checkIfExists: true) ] diff --git a/modules/local/star_align_igenomes/tests/main.nf.test.snap b/modules/local/star_align_igenomes/tests/main.nf.test.snap new file mode 100644 index 000000000..7dad647c0 --- /dev/null +++ b/modules/local/star_align_igenomes/tests/main.nf.test.snap @@ -0,0 +1,958 @@ +{ + "homo_sapiens - paired_end - multiple - bam_sorted": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test.Aligned.sortedByCoord.out.bam:md5,7b20152380dbc52ec23d2e95a7953710" + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-05T12:52:13.056684" + }, + "homo_sapiens - paired_end - multiple - wig": { + "content": null, + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-05T11:43:54.502911" + }, + "homo_sapiens - paired_end - arriba - tab": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test.SJ.out.tab:md5,5155c9fd1f787ad6d7d80987fb06219c" + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-05T12:48:07.200426" + }, + "homo_sapiens - single_end - wig": { + "content": null, + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-05T11:39:12.419461" + }, + "homo_sapiens - paired_end - sam": { + "content": [ + [ + + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-05T11:39:28.821547" + }, + "homo_sapiens - paired_end - arriba - versions": { + "content": [ + [ + "versions.yml:md5,957a57604ceb366b7af0123738e13559" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-05T12:48:07.267343" + }, + "homo_sapiens - paired_end - multiple - bedgraph": { + "content": null, + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-05T11:43:54.432752" + }, + "homo_sapiens - paired_end - read_per_gene_tab": { + "content": null, + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-05T11:39:28.81774" + }, + "homo_sapiens - paired_end - arriba - bedgraph": { + "content": null, + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-05T11:39:45.643743" + }, + "homo_sapiens - single_end - junction": { + "content": [ + [ + + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-05T11:39:12.406191" + }, + "homo_sapiens - paired_end - arriba - spl_junc_tab": { + "content": null, + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-05T11:39:45.65723" + }, + "homo_sapiens - single_end - sam": { + "content": [ + [ + + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-05T11:39:12.411481" + }, + "homo_sapiens - paired_end - fastq": { + "content": [ + [ + + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-05T11:39:28.810584" + }, + "homo_sapiens - single_end - versions": { + "content": [ + [ + "versions.yml:md5,957a57604ceb366b7af0123738e13559" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-05T12:40:00.104687" + }, + "homo_sapiens - paired_end - multiple - log_out": { + "content": [ + "test.Log.out" + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-05T12:52:12.894285" + }, + "homo_sapiens - paired_end - arriba - fastq": { + "content": [ + [ + + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-05T11:39:45.646457" + }, + "homo_sapiens - paired_end - multiple - junction": { + "content": [ + [ + + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-05T11:43:54.45332" + }, + "homo_sapiens - paired_end - multiple - spl_junc_tab": { + "content": null, + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-05T11:43:54.482358" + }, + "homo_sapiens - paired_end - starfusion - log_final": { + "content": [ + "test.Log.final.out" + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-05T12:44:02.475493" + }, + "homo_sapiens - paired_end - starfusion - fastq": { + "content": [ + [ + + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-05T11:41:39.262375" + }, + "homo_sapiens - paired_end - multiple - sam": { + "content": [ + [ + + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-05T11:43:54.472236" + }, + "homo_sapiens - paired_end - multiple - log_final": { + "content": [ + "test.Log.final.out" + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-05T12:52:12.865334" + }, + "homo_sapiens - paired_end - starfusion - bam": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test.Aligned.out.bam:md5,7806e69c537f72e494f9ce8e95f16355" + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-05T12:44:02.545949" + }, + "homo_sapiens - paired_end - arriba - junction": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test.Chimeric.out.junction:md5,62760fd60371d5bacae324c370358944" + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-05T12:48:07.133125" + }, + "homo_sapiens - single_end - bedgraph": { + "content": null, + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-05T11:39:12.402541" + }, + "homo_sapiens - paired_end - arriba - read_per_gene_tab": { + "content": null, + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-05T11:39:45.651485" + }, + "homo_sapiens - paired_end - starfusion - bam_sorted": { + "content": [ + [ + + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-05T11:41:39.217628" + }, + "homo_sapiens - single_end - bam_unsorted": { + "content": [ + [ + + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-05T11:39:12.400925" + }, + "homo_sapiens - paired_end - bam": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test.Aligned.sortedByCoord.out.bam:md5,b6cec9bba6b04b9b92eddbef128bdfbb" + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-05T12:40:45.530038" + }, + "homo_sapiens - paired_end - arriba - bam_transcript": { + "content": [ + [ + + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-05T11:39:45.63966" + }, + "homo_sapiens - paired_end - log_out": { + "content": [ + "test.Log.out" + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-05T12:40:45.492406" + }, + "homo_sapiens - paired_end - arriba - log_out": { + "content": [ + "test.Log.out" + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-05T12:48:06.975033" + }, + "homo_sapiens - paired_end - multiple - versions": { + "content": [ + [ + "versions.yml:md5,957a57604ceb366b7af0123738e13559" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-05T12:52:13.193701" + }, + "homo_sapiens - paired_end - starfusion - bam_transcript": { + "content": [ + [ + + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-05T11:41:39.224799" + }, + "homo_sapiens - paired_end - starfusion - tab": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test.SJ.out.tab:md5,19c3faa1bfa9a0cc5e4c45f17065b53a" + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-05T12:44:02.631643" + }, + "homo_sapiens - single_end - fastq": { + "content": [ + [ + + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-05T11:39:12.404069" + }, + "homo_sapiens - paired_end - tab": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test.SJ.out.tab:md5,844af19ab0fc8cd9a3f75228445aca0d" + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-05T12:40:45.687553" + }, + "homo_sapiens - paired_end - starfusion - bedgraph": { + "content": null, + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-05T11:41:39.254528" + }, + "homo_sapiens - single_end - bam_transcript": { + "content": [ + [ + + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-05T11:39:12.39955" + }, + "homo_sapiens - paired_end - versions": { + "content": [ + [ + "versions.yml:md5,957a57604ceb366b7af0123738e13559" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-05T12:40:45.748799" + }, + "homo_sapiens - paired_end - multiple - tab": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test.SJ.out.tab:md5,069877e053714e23010fe4e1c003b4a2" + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-05T12:52:13.125877" + }, + "homo_sapiens - single_end - bam": { + "content": [ + [ + [ + { + "id": "test", + "single_end": true + }, + "test.Aligned.sortedByCoord.out.bam:md5,e5060a8dd60584378786c588c3f25b4d" + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-05T12:39:59.959658" + }, + "homo_sapiens - paired_end - arriba - wig": { + "content": null, + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-05T11:39:45.663497" + }, + "homo_sapiens - paired_end - log_progress": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test.Log.progress.out:md5,b2bd061d6cbaaf3d6d3b1fed547f69b8" + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-05T12:40:45.630526" + }, + "homo_sapiens - paired_end - arriba - log_final": { + "content": [ + "test.Log.final.out" + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-05T12:48:06.951543" + }, + "homo_sapiens - paired_end - bam_unsorted": { + "content": [ + [ + + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-05T11:39:28.805957" + }, + "homo_sapiens - paired_end - arriba - sam": { + "content": [ + [ + + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-05T11:39:45.654389" + }, + "homo_sapiens - paired_end - multiple - bam": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test.Aligned.sortedByCoord.out.bam:md5,7b20152380dbc52ec23d2e95a7953710" + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-05T12:52:12.98725" + }, + "homo_sapiens - paired_end - multiple - fastq": { + "content": [ + [ + + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-05T11:43:54.445019" + }, + "homo_sapiens - single_end - bam_sorted": { + "content": [ + [ + [ + { + "id": "test", + "single_end": true + }, + "test.Aligned.sortedByCoord.out.bam:md5,e5060a8dd60584378786c588c3f25b4d" + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-05T12:39:59.996165" + }, + "homo_sapiens - paired_end - arriba - bam_sorted": { + "content": [ + [ + + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-05T11:39:45.637599" + }, + "homo_sapiens - paired_end - starfusion - junction": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test.Chimeric.out.junction:md5,c6d4d8c641ebb1c152a10da44f0dbf20" + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-05T12:44:02.589611" + }, + "homo_sapiens - single_end - tab": { + "content": [ + [ + [ + { + "id": "test", + "single_end": true + }, + "test.SJ.out.tab:md5,75a516ab950fb958f40b29996474949c" + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-05T12:40:00.069146" + }, + "homo_sapiens - paired_end - starfusion - versions": { + "content": [ + [ + "versions.yml:md5,957a57604ceb366b7af0123738e13559" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-05T12:44:02.672571" + }, + "homo_sapiens - paired_end - multiple - bam_unsorted": { + "content": [ + [ + + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-05T11:43:54.423849" + }, + "homo_sapiens - paired_end - arriba - log_progress": { + "content": [ + "test.Log.progress.out" + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-05T12:48:06.986955" + }, + "homo_sapiens - paired_end - bedgraph": { + "content": null, + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-05T11:39:28.808248" + }, + "homo_sapiens - paired_end - starfusion - bam_unsorted": { + "content": [ + [ + + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-05T11:41:39.247036" + }, + "homo_sapiens - paired_end - starfusion - read_per_gene_tab": { + "content": null, + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-05T11:41:39.285373" + }, + "homo_sapiens - paired_end - multiple - log_progress": { + "content": [ + "test.Log.progress.out" + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-05T12:52:12.923841" + }, + "homo_sapiens - paired_end - arriba - bam_unsorted": { + "content": [ + [ + + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-05T11:39:45.641672" + }, + "homo_sapiens - paired_end - bam_sorted": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test.Aligned.sortedByCoord.out.bam:md5,b6cec9bba6b04b9b92eddbef128bdfbb" + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-05T12:40:45.577077" + }, + "homo_sapiens - single_end - spl_junc_tab": { + "content": null, + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-05T11:39:12.4135" + }, + "homo_sapiens - paired_end - starfusion - spl_junc_tab": { + "content": null, + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-05T11:41:39.298186" + }, + "homo_sapiens - single_end - log_out": { + "content": [ + "test.Log.out" + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-05T12:39:59.921499" + }, + "homo_sapiens - paired_end - log_final": { + "content": [ + "test.Log.final.out" + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-05T12:40:45.485532" + }, + "homo_sapiens - paired_end - bam_transcript": { + "content": [ + [ + + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-05T11:39:28.803499" + }, + "homo_sapiens - single_end - log_final": { + "content": [ + "test.Log.final.out" + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-05T12:39:59.911473" + }, + "homo_sapiens - paired_end - starfusion - log_progress": { + "content": [ + "test.Log.progress.out" + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-05T12:44:02.502543" + }, + "homo_sapiens - paired_end - multiple - bam_transcript": { + "content": [ + [ + + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-05T11:43:54.413659" + }, + "homo_sapiens - paired_end - multiple - read_per_gene_tab": { + "content": null, + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-05T11:43:54.462815" + }, + "homo_sapiens - single_end - read_per_gene_tab": { + "content": null, + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-05T11:39:12.409493" + }, + "homo_sapiens - paired_end - junction": { + "content": [ + [ + + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-05T11:39:28.812836" + }, + "homo_sapiens - paired_end - spl_junc_tab": { + "content": null, + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-05T11:39:28.825946" + }, + "homo_sapiens - paired_end - starfusion - sam": { + "content": [ + [ + + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-05T11:41:39.291398" + }, + "homo_sapiens - paired_end - arriba - bam": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test.Aligned.out.bam:md5,28ecaa85a5dec1a18c877c85d874adf2" + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-05T12:48:07.064585" + }, + "homo_sapiens - single_end - log_progress": { + "content": [ + [ + [ + { + "id": "test", + "single_end": true + }, + "test.Log.progress.out:md5,b2bd061d6cbaaf3d6d3b1fed547f69b8" + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-05T12:40:00.033267" + }, + "homo_sapiens - paired_end - starfusion - wig": { + "content": null, + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-05T11:41:39.311386" + }, + "homo_sapiens - paired_end - wig": { + "content": null, + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-05T11:39:28.830843" + }, + "homo_sapiens - paired_end - starfusion - log_out": { + "content": [ + "test.Log.out" + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-05T12:44:02.489254" + } +} \ No newline at end of file diff --git a/modules/local/star_align_igenomes/tests/nextflow.arriba.config b/modules/local/star_align_igenomes/tests/nextflow.arriba.config index 2324b9e58..ece3c0cbf 100644 --- a/modules/local/star_align_igenomes/tests/nextflow.arriba.config +++ b/modules/local/star_align_igenomes/tests/nextflow.arriba.config @@ -1,11 +1,11 @@ process { - withName: STAR_GENOMEGENERATE { + withName: STAR_GENOMEGENERATE_IGENOMES { ext.args = '--genomeSAindexNbases 9' } - withName: STAR_ALIGN { - ext.args = '--readFilesCommand zcat --outSAMtype BAM Unsorted --outSAMunmapped Within --outBAMcompression 0 --outFilterMultimapNmax 50 --peOverlapNbasesMin 10 --alignSplicedMateMapLminOverLmate 0.5 --alignSJstitchMismatchNmax 5 -1 5 5 --chimSegmentMin 10 --chimOutType WithinBAM HardClip --chimJunctionOverhangMin 10 --chimScoreDropMax 30 --chimScoreJunctionNonGTAG 0 --chimScoreSeparation 1 --chimSegmentReadGapMax 3 --chimMultimapNmax 50' + withName: STAR_ALIGN_IGENOMES { + ext.args = '--readFilesCommand zcat --outSAMtype BAM Unsorted --outSAMunmapped Within --outBAMcompression 0 --outFilterMultimapNmax 50 --peOverlapNbasesMin 10 --alignSplicedMateMapLminOverLmate 0.5 --alignSJstitchMismatchNmax 5 -1 5 5 --chimSegmentMin 10 WithinBAM HardClip --chimJunctionOverhangMin 10 --chimScoreDropMax 30 --chimScoreJunctionNonGTAG 0 --chimScoreSeparation 1 --chimSegmentReadGapMax 3 --chimMultimapNmax 50 --chimOutType Junctions' } } diff --git a/modules/local/star_align_igenomes/tests/nextflow.config b/modules/local/star_align_igenomes/tests/nextflow.config index c4ac58088..7c663e414 100644 --- a/modules/local/star_align_igenomes/tests/nextflow.config +++ b/modules/local/star_align_igenomes/tests/nextflow.config @@ -1,10 +1,10 @@ process { - withName: STAR_GENOMEGENERATE { + withName: STAR_GENOMEGENERATE_IGENOMES { ext.args = '--genomeSAindexNbases 9' } - withName: STAR_ALIGN { + withName: STAR_ALIGN_IGENOMES { ext.args = '--readFilesCommand zcat --outSAMtype BAM SortedByCoordinate --outWigType bedGraph --outWigStrand Unstranded' } diff --git a/modules/local/star_align_igenomes/tests/nextflow.starfusion.config b/modules/local/star_align_igenomes/tests/nextflow.starfusion.config index 467b64977..922520ca2 100644 --- a/modules/local/star_align_igenomes/tests/nextflow.starfusion.config +++ b/modules/local/star_align_igenomes/tests/nextflow.starfusion.config @@ -1,10 +1,10 @@ process { - withName: STAR_GENOMEGENERATE { + withName: STAR_GENOMEGENERATE_IGENOMES { ext.args = '--genomeSAindexNbases 9' } - withName: STAR_ALIGN { + withName: STAR_ALIGN_IGENOMES { ext.args = '--readFilesCommand zcat --outSAMtype BAM Unsorted --outReadsUnmapped None --twopassMode Basic --outSAMstrandField intronMotif --outSAMunmapped Within --chimSegmentMin 12 --chimJunctionOverhangMin 8 --chimOutJunctionFormat 1 --alignSJDBoverhangMin 10 --alignMatesGapMax 100000 --alignIntronMax 100000 --alignSJstitchMismatchNmax 5 -1 5 5 --chimMultimapScoreRange 3 --chimScoreJunctionNonGTAG -4 --chimMultimapNmax 20 --chimNonchimScoreDropMin 10 --peOverlapNbasesMin 12 --peOverlapMMp 0.1 --alignInsertionFlush Right --alignSplicedMateMapLminOverLmate 0 --alignSplicedMateMapLmin 30' } From c624bfec0a5f88cb0adb5b07566f5911158dfaa6 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Tue, 5 Mar 2024 13:35:05 +0000 Subject: [PATCH 150/634] Add missing inputs, closures --- modules/nf-core/bedtools/genomecov/nextflow.config | 4 ++-- workflows/rnaseq/main.nf | 6 ++++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/modules/nf-core/bedtools/genomecov/nextflow.config b/modules/nf-core/bedtools/genomecov/nextflow.config index 91d441809..969f5858d 100644 --- a/modules/nf-core/bedtools/genomecov/nextflow.config +++ b/modules/nf-core/bedtools/genomecov/nextflow.config @@ -2,14 +2,14 @@ if (!params.skip_alignment && !params.skip_bigwig) { process { withName: 'BEDTOOLS_GENOMECOV_FW' { - ext.prefix = meta.strandedness == 'reverse' ? meta.id + '.reverse' : meta.id + '.forward' + ext.prefix = { meta.strandedness == 'reverse' ? meta.id + '.reverse' : meta.id + '.forward' } ext.args = '-split -du -strand + -bg' publishDir = [ enabled: false ] } withName: 'BEDTOOLS_GENOMECOV_REV' { - ext.prefix = meta.strandedness == 'reverse' ? meta.id + '.forward' : meta.id + '.reverse' + ext.prefix = { meta.strandedness == 'reverse' ? meta.id + '.forward' : meta.id + '.reverse' } ext.args = '-split -du -strand - -bg' publishDir = [ enabled: false diff --git a/workflows/rnaseq/main.nf b/workflows/rnaseq/main.nf index 36f1e3117..6c1e68617 100755 --- a/workflows/rnaseq/main.nf +++ b/workflows/rnaseq/main.nf @@ -647,7 +647,8 @@ workflow RNASEQ { 'bedGraph' ) BEDTOOLS_SORT_FW ( - BEDTOOLS_GENOMECOV_FW.out.genomecov + BEDTOOLS_GENOMECOV_FW.out.genomecov, + [] ) BEDTOOLS_GENOMECOV_REV ( @@ -656,7 +657,8 @@ workflow RNASEQ { 'bedGraph' ) BEDTOOLS_SORT_REV ( - BEDTOOLS_GENOMECOV_REV.out.genomecov + BEDTOOLS_GENOMECOV_REV.out.genomecov, + [] ) ch_versions = ch_versions.mix(BEDTOOLS_GENOMECOV_FW.out.versions.first()) From 5f9d3cef6f1c158a3e932b58ab70a30876982557 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Tue, 5 Mar 2024 13:41:36 +0000 Subject: [PATCH 151/634] Remove trailing whitespace --- workflows/rnaseq/main.nf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/workflows/rnaseq/main.nf b/workflows/rnaseq/main.nf index 6c1e68617..0c47c24b5 100755 --- a/workflows/rnaseq/main.nf +++ b/workflows/rnaseq/main.nf @@ -650,7 +650,7 @@ workflow RNASEQ { BEDTOOLS_GENOMECOV_FW.out.genomecov, [] ) - + BEDTOOLS_GENOMECOV_REV ( ch_genomecov_input, [], From e6677650ecb71646fcf30a4c198ce4dd4a4ed7a3 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Tue, 5 Mar 2024 16:24:58 +0000 Subject: [PATCH 152/634] genomecov from modules --- modules.json | 262 +++++++++++++----- modules/nf-core/bedtools/genomecov/main.nf | 4 + .../bedtools/genomecov/nextflow.config | 5 - .../bedtools/genomecov/tests/main.nf.test | 4 + modules/nf-core/bedtools/sort/environment.yml | 7 - modules/nf-core/bedtools/sort/main.nf | 54 ---- modules/nf-core/bedtools/sort/meta.yml | 54 ---- workflows/rnaseq/main.nf | 21 +- 8 files changed, 207 insertions(+), 204 deletions(-) delete mode 100644 modules/nf-core/bedtools/sort/environment.yml delete mode 100644 modules/nf-core/bedtools/sort/main.nf delete mode 100644 modules/nf-core/bedtools/sort/meta.yml diff --git a/modules.json b/modules.json index 3b5d06405..e8bdb6a48 100644 --- a/modules.json +++ b/modules.json @@ -8,177 +8,244 @@ "bbmap/bbsplit": { "branch": "master", "git_sha": "dcfa9a18a74300f7fb994cdbf518c981f22de73d", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "bedtools/genomecov": { "branch": "master", - "git_sha": "575e1bc54b083fb15e7dd8b5fcc40bea60e8ce83", - "installed_by": ["modules"] - }, - "bedtools/sort": { - "branch": "master", - "git_sha": "575e1bc54b083fb15e7dd8b5fcc40bea60e8ce83", - "installed_by": ["modules"] + "git_sha": "0ae53932f5025068a17f78539e3709907beffa2c", + "installed_by": [ + "modules" + ] }, "cat/fastq": { "branch": "master", "git_sha": "0997b47c93c06b49aa7b3fefda87e728312cf2ca", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "custom/catadditionalfasta": { "branch": "master", "git_sha": "ba6ec49354837595649acd84e7a867d59bf11ad0", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "custom/getchromsizes": { "branch": "master", "git_sha": "1b0ffa4e5aed5b7e3cd4311af31bd3b2c8345051", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "custom/tx2gene": { "branch": "master", "git_sha": "ec155021a9104441bf6a9bae3b55d1b5b0bfdb3a", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "fastp": { "branch": "master", "git_sha": "003920c7f9a8ae19b69a97171922880220bedf56", - "installed_by": ["fastq_fastqc_umitools_fastp", "modules"] + "installed_by": [ + "fastq_fastqc_umitools_fastp", + "modules" + ] }, "fastqc": { "branch": "master", "git_sha": "f4ae1d942bd50c5c0b9bd2de1393ce38315ba57c", - "installed_by": ["fastq_fastqc_umitools_fastp", "fastq_fastqc_umitools_trimgalore"] + "installed_by": [ + "fastq_fastqc_umitools_fastp", + "fastq_fastqc_umitools_trimgalore" + ] }, "fq/subsample": { "branch": "master", "git_sha": "59d1faf07ace4f7a00f7fa7778bce4e1f1dcdd63", - "installed_by": ["fastq_subsample_fq_salmon", "modules"] + "installed_by": [ + "fastq_subsample_fq_salmon", + "modules" + ] }, "gffread": { "branch": "master", "git_sha": "b1b959609bda44341120aed1766329909f54b8d0", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "gunzip": { "branch": "master", "git_sha": "3a5fef109d113b4997c9822198664ca5f2716208", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "hisat2/align": { "branch": "master", "git_sha": "400037f54de4b0c42712ec5a499d9fd9e66250d1", - "installed_by": ["fastq_align_hisat2"] + "installed_by": [ + "fastq_align_hisat2" + ] }, "hisat2/build": { "branch": "master", "git_sha": "400037f54de4b0c42712ec5a499d9fd9e66250d1", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "hisat2/extractsplicesites": { "branch": "master", "git_sha": "400037f54de4b0c42712ec5a499d9fd9e66250d1", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "kallisto/index": { "branch": "master", "git_sha": "de5811dd9ca15af1e131806001bcaae909e42021", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "kallisto/quant": { "branch": "master", "git_sha": "de5811dd9ca15af1e131806001bcaae909e42021", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "multiqc": { "branch": "master", "git_sha": "b7ebe95761cd389603f9cc0e0dc384c0f663815a", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "picard/markduplicates": { "branch": "master", "git_sha": "ec833ac4c29db6005d18baccf3306f557c46b006", - "installed_by": ["bam_markduplicates_picard"] + "installed_by": [ + "bam_markduplicates_picard" + ] }, "preseq/lcextrap": { "branch": "master", "git_sha": "9a88058962c0ee1715f2ad0e017c37e0cd75e532", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "qualimap/rnaseq": { "branch": "master", "git_sha": "6b0e4fe14ca1b12e131f64608f0bbaf36fd11451", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "rsem/calculateexpression": { "branch": "master", "git_sha": "7c82eda52cb493c4cf500e3fb7d1597a5d766165", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "rsem/preparereference": { "branch": "master", "git_sha": "301b088c7e9e00c4c80686411383f07173b54d69", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "rseqc/bamstat": { "branch": "master", "git_sha": "9eb22e4d3f28c274b7c498a1564581377349a242", - "installed_by": ["bam_rseqc"] + "installed_by": [ + "bam_rseqc" + ] }, "rseqc/inferexperiment": { "branch": "master", "git_sha": "6c7d8f1d6247655e4bc4d97f37b68b2461f645f6", - "installed_by": ["bam_rseqc"] + "installed_by": [ + "bam_rseqc" + ] }, "rseqc/innerdistance": { "branch": "master", "git_sha": "6c7d8f1d6247655e4bc4d97f37b68b2461f645f6", - "installed_by": ["bam_rseqc"] + "installed_by": [ + "bam_rseqc" + ] }, "rseqc/junctionannotation": { "branch": "master", "git_sha": "6c7d8f1d6247655e4bc4d97f37b68b2461f645f6", - "installed_by": ["bam_rseqc"] + "installed_by": [ + "bam_rseqc" + ] }, "rseqc/junctionsaturation": { "branch": "master", "git_sha": "6c7d8f1d6247655e4bc4d97f37b68b2461f645f6", - "installed_by": ["bam_rseqc"] + "installed_by": [ + "bam_rseqc" + ] }, "rseqc/readdistribution": { "branch": "master", "git_sha": "6c7d8f1d6247655e4bc4d97f37b68b2461f645f6", - "installed_by": ["bam_rseqc"] + "installed_by": [ + "bam_rseqc" + ] }, "rseqc/readduplication": { "branch": "master", "git_sha": "6c7d8f1d6247655e4bc4d97f37b68b2461f645f6", - "installed_by": ["bam_rseqc"] + "installed_by": [ + "bam_rseqc" + ] }, "rseqc/tin": { "branch": "master", "git_sha": "6c7d8f1d6247655e4bc4d97f37b68b2461f645f6", - "installed_by": ["bam_rseqc"] + "installed_by": [ + "bam_rseqc" + ] }, "salmon/index": { "branch": "master", "git_sha": "ffc101e1b84ef3df2e4e4a966e84b3c513ae5693", - "installed_by": ["fastq_subsample_fq_salmon"] + "installed_by": [ + "fastq_subsample_fq_salmon" + ] }, "salmon/quant": { "branch": "master", "git_sha": "03a8562231d575c313266c193a980594b941e3ea", - "installed_by": ["fastq_subsample_fq_salmon", "modules"] + "installed_by": [ + "fastq_subsample_fq_salmon", + "modules" + ] }, "samtools/flagstat": { "branch": "master", "git_sha": "f4596fe0bdc096cf53ec4497e83defdb3a94ff62", - "installed_by": ["bam_stats_samtools"] + "installed_by": [ + "bam_stats_samtools" + ] }, "samtools/idxstats": { "branch": "master", "git_sha": "f4596fe0bdc096cf53ec4497e83defdb3a94ff62", - "installed_by": ["bam_stats_samtools"] + "installed_by": [ + "bam_stats_samtools" + ] }, "samtools/index": { "branch": "master", @@ -192,82 +259,115 @@ "samtools/sort": { "branch": "master", "git_sha": "f4596fe0bdc096cf53ec4497e83defdb3a94ff62", - "installed_by": ["bam_sort_stats_samtools"] + "installed_by": [ + "bam_sort_stats_samtools" + ] }, "samtools/stats": { "branch": "master", "git_sha": "f4596fe0bdc096cf53ec4497e83defdb3a94ff62", - "installed_by": ["bam_stats_samtools"] + "installed_by": [ + "bam_stats_samtools" + ] }, "sortmerna": { "branch": "master", "git_sha": "df05c8db5195867c0bc7b92c1788115b66f0d17d", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "star/align": { "branch": "master", "git_sha": "a21faa6a3481af92a343a10926f59c189a2c16c9", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "star/genomegenerate": { "branch": "master", "git_sha": "a21faa6a3481af92a343a10926f59c189a2c16c9", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "stringtie/stringtie": { "branch": "master", "git_sha": "b1b959609bda44341120aed1766329909f54b8d0", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "subread/featurecounts": { "branch": "master", "git_sha": "e5265c217dcfbff7731c40623aaf07538fdd3e1c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "summarizedexperiment/summarizedexperiment": { "branch": "master", "git_sha": "874dace043f1400fddca70dc9786fa4e82e6f5ac", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "trimgalore": { "branch": "master", "git_sha": "d2c5e76f291379f3dd403e48e46ed7e6ba5da744", - "installed_by": ["fastq_fastqc_umitools_trimgalore"] + "installed_by": [ + "fastq_fastqc_umitools_trimgalore" + ] }, "tximeta/tximport": { "branch": "master", "git_sha": "03a8562231d575c313266c193a980594b941e3ea", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "ucsc/bedclip": { "branch": "master", "git_sha": "7c75d01997236f61b9b77399d9933cb36041f2c3", - "installed_by": ["bedgraph_bedclip_bedgraphtobigwig"] + "installed_by": [ + "bedgraph_bedclip_bedgraphtobigwig" + ] }, "ucsc/bedgraphtobigwig": { "branch": "master", "git_sha": "7c75d01997236f61b9b77399d9933cb36041f2c3", - "installed_by": ["bedgraph_bedclip_bedgraphtobigwig"] + "installed_by": [ + "bedgraph_bedclip_bedgraphtobigwig" + ] }, "umitools/dedup": { "branch": "master", "git_sha": "3bd4f34e3093c2a16e6a8eefc22242b9b94641db", - "installed_by": ["bam_dedup_stats_samtools_umitools"] + "installed_by": [ + "bam_dedup_stats_samtools_umitools" + ] }, "umitools/extract": { "branch": "master", "git_sha": "d2c5e76f291379f3dd403e48e46ed7e6ba5da744", - "installed_by": ["fastq_fastqc_umitools_fastp", "fastq_fastqc_umitools_trimgalore"] + "installed_by": [ + "fastq_fastqc_umitools_fastp", + "fastq_fastqc_umitools_trimgalore" + ] }, "umitools/prepareforrsem": { "branch": "master", "git_sha": "fac6cc9b2bc4042225bd9247ec03b413f764b47f", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "untar": { "branch": "master", "git_sha": "5caf7640a9ef1d18d765d55339be751bb0969dfa", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] } } }, @@ -276,22 +376,30 @@ "bam_dedup_stats_samtools_umitools": { "branch": "master", "git_sha": "f4596fe0bdc096cf53ec4497e83defdb3a94ff62", - "installed_by": ["subworkflows"] + "installed_by": [ + "subworkflows" + ] }, "bam_markduplicates_picard": { "branch": "master", "git_sha": "f4596fe0bdc096cf53ec4497e83defdb3a94ff62", - "installed_by": ["subworkflows"] + "installed_by": [ + "subworkflows" + ] }, "bam_rseqc": { "branch": "master", "git_sha": "9eb22e4d3f28c274b7c498a1564581377349a242", - "installed_by": ["subworkflows"] + "installed_by": [ + "subworkflows" + ] }, "bam_sort_stats_samtools": { "branch": "master", "git_sha": "f4596fe0bdc096cf53ec4497e83defdb3a94ff62", - "installed_by": ["fastq_align_hisat2"] + "installed_by": [ + "fastq_align_hisat2" + ] }, "bam_stats_samtools": { "branch": "master", @@ -305,45 +413,61 @@ "bedgraph_bedclip_bedgraphtobigwig": { "branch": "master", "git_sha": "a4bceac1aecee5aa0a5dbc601baf0e2e61013fb2", - "installed_by": ["subworkflows"] + "installed_by": [ + "subworkflows" + ] }, "fastq_align_hisat2": { "branch": "master", "git_sha": "701ae347c4508fba1b7d65262596f278b6a11cb6", - "installed_by": ["subworkflows"] + "installed_by": [ + "subworkflows" + ] }, "fastq_fastqc_umitools_fastp": { "branch": "master", "git_sha": "003920c7f9a8ae19b69a97171922880220bedf56", - "installed_by": ["subworkflows"] + "installed_by": [ + "subworkflows" + ] }, "fastq_fastqc_umitools_trimgalore": { "branch": "master", "git_sha": "cb6defa0834eda9d6d3f967e981c819fc3e257bf", - "installed_by": ["subworkflows"] + "installed_by": [ + "subworkflows" + ] }, "fastq_subsample_fq_salmon": { "branch": "master", "git_sha": "003920c7f9a8ae19b69a97171922880220bedf56", - "installed_by": ["subworkflows"] + "installed_by": [ + "subworkflows" + ] }, "utils_nextflow_pipeline": { "branch": "master", "git_sha": "5caf7640a9ef1d18d765d55339be751bb0969dfa", - "installed_by": ["subworkflows"] + "installed_by": [ + "subworkflows" + ] }, "utils_nfcore_pipeline": { "branch": "master", "git_sha": "5caf7640a9ef1d18d765d55339be751bb0969dfa", - "installed_by": ["subworkflows"] + "installed_by": [ + "subworkflows" + ] }, "utils_nfvalidation_plugin": { "branch": "master", "git_sha": "5caf7640a9ef1d18d765d55339be751bb0969dfa", - "installed_by": ["subworkflows"] + "installed_by": [ + "subworkflows" + ] } } } } } -} +} \ No newline at end of file diff --git a/modules/nf-core/bedtools/genomecov/main.nf b/modules/nf-core/bedtools/genomecov/main.nf index 7a4d9c453..954e8913d 100644 --- a/modules/nf-core/bedtools/genomecov/main.nf +++ b/modules/nf-core/bedtools/genomecov/main.nf @@ -11,6 +11,7 @@ process BEDTOOLS_GENOMECOV { tuple val(meta), path(intervals), val(scale) path sizes val extension + val sort output: tuple val(meta), path("*.${extension}"), emit: genomecov @@ -26,6 +27,7 @@ process BEDTOOLS_GENOMECOV { if (!args_list.contains('-bg') && (scale > 0 && scale != 1)) { args += " -bg" } + def sort_cmd = sort ? '| bedtools sort' : '' def prefix = task.ext.prefix ?: "${meta.id}" if (intervals.name =~ /\.bam/) { @@ -34,6 +36,7 @@ process BEDTOOLS_GENOMECOV { genomecov \\ -ibam $intervals \\ $args \\ + $sort_cmd \\ > ${prefix}.${extension} cat <<-END_VERSIONS > versions.yml @@ -48,6 +51,7 @@ process BEDTOOLS_GENOMECOV { -i $intervals \\ -g $sizes \\ $args \\ + $sort_cmd \\ > ${prefix}.${extension} cat <<-END_VERSIONS > versions.yml diff --git a/modules/nf-core/bedtools/genomecov/nextflow.config b/modules/nf-core/bedtools/genomecov/nextflow.config index 969f5858d..73571aa8d 100644 --- a/modules/nf-core/bedtools/genomecov/nextflow.config +++ b/modules/nf-core/bedtools/genomecov/nextflow.config @@ -15,10 +15,5 @@ if (!params.skip_alignment && !params.skip_bigwig) { enabled: false ] } - withName: 'BEDTOOLS_SORT_FW|BEDTOOLS_SORT_REV' { - publishDir = [ - enabled: false - ] - } } } diff --git a/modules/nf-core/bedtools/genomecov/tests/main.nf.test b/modules/nf-core/bedtools/genomecov/tests/main.nf.test index 21e69aed7..64ab4dfc0 100644 --- a/modules/nf-core/bedtools/genomecov/tests/main.nf.test +++ b/modules/nf-core/bedtools/genomecov/tests/main.nf.test @@ -22,6 +22,7 @@ nextflow_process { input[1] = [] // extension input[2] = "txt" + input[3] = true """ } } @@ -48,6 +49,7 @@ nextflow_process { input[1] = file('dummy_chromosome_sizes') // extension input[2] = 'txt' + input[3] = false """ } } @@ -74,6 +76,7 @@ nextflow_process { input[1] = file(params.test_data['sarscov2']['genome']['genome_sizes'], checkIfExists: true) // extension input[2] = 'txt' + input[3] = false """ } } @@ -102,6 +105,7 @@ nextflow_process { input[1] = [] // extension input[2] = 'txt' + input[3] = false """ } } diff --git a/modules/nf-core/bedtools/sort/environment.yml b/modules/nf-core/bedtools/sort/environment.yml deleted file mode 100644 index 87b2e4252..000000000 --- a/modules/nf-core/bedtools/sort/environment.yml +++ /dev/null @@ -1,7 +0,0 @@ -name: bedtools_sort -channels: - - conda-forge - - bioconda - - defaults -dependencies: - - bioconda::bedtools=2.31.1 diff --git a/modules/nf-core/bedtools/sort/main.nf b/modules/nf-core/bedtools/sort/main.nf deleted file mode 100644 index b833150a1..000000000 --- a/modules/nf-core/bedtools/sort/main.nf +++ /dev/null @@ -1,54 +0,0 @@ -process BEDTOOLS_SORT { - tag "$meta.id" - label 'process_single' - - conda "${moduleDir}/environment.yml" - container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/bedtools:2.31.1--hf5e1c6e_0' : - 'biocontainers/bedtools:2.31.1--hf5e1c6e_0' }" - - input: - tuple val(meta), path(intervals) - path genome_file - - output: - tuple val(meta), path("*.${extension}"), emit: sorted - 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 genome_cmd = genome_file ? "-g $genome_file" : "" - extension = task.ext.suffix ?: intervals.extension - if ("$intervals" == "${prefix}.${extension}") { - error "Input and output names are the same, use \"task.ext.prefix\" to disambiguate!" - } - """ - bedtools \\ - sort \\ - -i $intervals \\ - $genome_cmd \\ - $args \\ - > ${prefix}.${extension} - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - bedtools: \$(bedtools --version | sed -e "s/bedtools v//g") - END_VERSIONS - """ - - stub: - def prefix = task.ext.prefix ?: "${meta.id}" - extension = task.ext.suffix ?: intervals.extension - """ - touch ${prefix}.${extension} - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - bedtools: \$(bedtools --version | sed -e "s/bedtools v//g") - END_VERSIONS - """ -} diff --git a/modules/nf-core/bedtools/sort/meta.yml b/modules/nf-core/bedtools/sort/meta.yml deleted file mode 100644 index 7c915f5f9..000000000 --- a/modules/nf-core/bedtools/sort/meta.yml +++ /dev/null @@ -1,54 +0,0 @@ -name: bedtools_sort -description: Sorts a feature file by chromosome and other criteria. -keywords: - - bed - - sort - - bedtools - - chromosome -tools: - - bedtools: - description: | - A set of tools for genomic analysis tasks, specifically enabling genome arithmetic (merge, count, complement) on various file types. - documentation: https://bedtools.readthedocs.io/en/latest/content/tools/sort.html - licence: ["MIT"] -input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - intervals: - type: file - description: BED/BEDGRAPH - pattern: "*.{bed|bedGraph}" - - genome_file: - type: file - description: | - Optional reference genome 2 column file that defines the expected chromosome order. - pattern: "*.{fai,txt,chromsizes}" -output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - sorted: - type: file - description: Sorted output file - pattern: "*.${extension}" - - versions: - type: file - description: File containing software versions - pattern: "versions.yml" -authors: - - "@edmundmiller" - - "@sruthipsuresh" - - "@drpatelh" - - "@chris-cheshire" - - "@adamrtalbot" -maintainers: - - "@edmundmiller" - - "@sruthipsuresh" - - "@drpatelh" - - "@chris-cheshire" - - "@adamrtalbot" diff --git a/workflows/rnaseq/main.nf b/workflows/rnaseq/main.nf index 0c47c24b5..3e3a52bfb 100755 --- a/workflows/rnaseq/main.nf +++ b/workflows/rnaseq/main.nf @@ -40,8 +40,6 @@ include { getInferexperimentStrandedness } from '../../subworkflows/local/utils_ include { CAT_FASTQ } from '../../modules/nf-core/cat/fastq' include { BEDTOOLS_GENOMECOV as BEDTOOLS_GENOMECOV_FW } from '../../modules/nf-core/bedtools/genomecov' include { BEDTOOLS_GENOMECOV as BEDTOOLS_GENOMECOV_REV } from '../../modules/nf-core/bedtools/genomecov' -include { BEDTOOLS_SORT as BEDTOOLS_SORT_FW } from '../../modules/nf-core/bedtools/sort' -include { BEDTOOLS_SORT as BEDTOOLS_SORT_REV } from '../../modules/nf-core/bedtools/sort' include { BBMAP_BBSPLIT } from '../../modules/nf-core/bbmap/bbsplit' include { SAMTOOLS_SORT } from '../../modules/nf-core/samtools/sort' include { PRESEQ_LCEXTRAP } from '../../modules/nf-core/preseq/lcextrap' @@ -644,21 +642,14 @@ workflow RNASEQ { BEDTOOLS_GENOMECOV_FW ( ch_genomecov_input, [], - 'bedGraph' + 'bedGraph', + true ) - BEDTOOLS_SORT_FW ( - BEDTOOLS_GENOMECOV_FW.out.genomecov, - [] - ) - BEDTOOLS_GENOMECOV_REV ( ch_genomecov_input, [], - 'bedGraph' - ) - BEDTOOLS_SORT_REV ( - BEDTOOLS_GENOMECOV_REV.out.genomecov, - [] + 'bedGraph', + true ) ch_versions = ch_versions.mix(BEDTOOLS_GENOMECOV_FW.out.versions.first()) @@ -667,13 +658,13 @@ workflow RNASEQ { // SUBWORKFLOW: Convert bedGraph to bigWig // BEDGRAPH_BEDCLIP_BEDGRAPHTOBIGWIG_FORWARD ( - BEDTOOLS_SORT_FW.out.sorted, + BEDTOOLS_GENOMECOV_FW.out.genomecov, ch_chrom_sizes ) ch_versions = ch_versions.mix(BEDGRAPH_BEDCLIP_BEDGRAPHTOBIGWIG_FORWARD.out.versions) BEDGRAPH_BEDCLIP_BEDGRAPHTOBIGWIG_REVERSE ( - BEDTOOLS_SORT_REV.out.sorted, + BEDTOOLS_GENOMECOV_REV.out.genomecov, ch_chrom_sizes ) } From 11b11b2f9da66e1fe6b9ccb9eec34085c0377a09 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Tue, 5 Mar 2024 16:42:11 +0000 Subject: [PATCH 153/634] pretter on modules.json --- modules.json | 255 +++++++++++++-------------------------------------- 1 file changed, 63 insertions(+), 192 deletions(-) diff --git a/modules.json b/modules.json index e8bdb6a48..474772e5b 100644 --- a/modules.json +++ b/modules.json @@ -8,244 +8,172 @@ "bbmap/bbsplit": { "branch": "master", "git_sha": "dcfa9a18a74300f7fb994cdbf518c981f22de73d", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "bedtools/genomecov": { "branch": "master", "git_sha": "0ae53932f5025068a17f78539e3709907beffa2c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "cat/fastq": { "branch": "master", "git_sha": "0997b47c93c06b49aa7b3fefda87e728312cf2ca", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "custom/catadditionalfasta": { "branch": "master", "git_sha": "ba6ec49354837595649acd84e7a867d59bf11ad0", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "custom/getchromsizes": { "branch": "master", "git_sha": "1b0ffa4e5aed5b7e3cd4311af31bd3b2c8345051", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "custom/tx2gene": { "branch": "master", "git_sha": "ec155021a9104441bf6a9bae3b55d1b5b0bfdb3a", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "fastp": { "branch": "master", "git_sha": "003920c7f9a8ae19b69a97171922880220bedf56", - "installed_by": [ - "fastq_fastqc_umitools_fastp", - "modules" - ] + "installed_by": ["fastq_fastqc_umitools_fastp", "modules"] }, "fastqc": { "branch": "master", "git_sha": "f4ae1d942bd50c5c0b9bd2de1393ce38315ba57c", - "installed_by": [ - "fastq_fastqc_umitools_fastp", - "fastq_fastqc_umitools_trimgalore" - ] + "installed_by": ["fastq_fastqc_umitools_fastp", "fastq_fastqc_umitools_trimgalore"] }, "fq/subsample": { "branch": "master", "git_sha": "59d1faf07ace4f7a00f7fa7778bce4e1f1dcdd63", - "installed_by": [ - "fastq_subsample_fq_salmon", - "modules" - ] + "installed_by": ["fastq_subsample_fq_salmon", "modules"] }, "gffread": { "branch": "master", "git_sha": "b1b959609bda44341120aed1766329909f54b8d0", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "gunzip": { "branch": "master", "git_sha": "3a5fef109d113b4997c9822198664ca5f2716208", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "hisat2/align": { "branch": "master", "git_sha": "400037f54de4b0c42712ec5a499d9fd9e66250d1", - "installed_by": [ - "fastq_align_hisat2" - ] + "installed_by": ["fastq_align_hisat2"] }, "hisat2/build": { "branch": "master", "git_sha": "400037f54de4b0c42712ec5a499d9fd9e66250d1", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "hisat2/extractsplicesites": { "branch": "master", "git_sha": "400037f54de4b0c42712ec5a499d9fd9e66250d1", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "kallisto/index": { "branch": "master", "git_sha": "de5811dd9ca15af1e131806001bcaae909e42021", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "kallisto/quant": { "branch": "master", "git_sha": "de5811dd9ca15af1e131806001bcaae909e42021", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "multiqc": { "branch": "master", "git_sha": "b7ebe95761cd389603f9cc0e0dc384c0f663815a", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "picard/markduplicates": { "branch": "master", "git_sha": "ec833ac4c29db6005d18baccf3306f557c46b006", - "installed_by": [ - "bam_markduplicates_picard" - ] + "installed_by": ["bam_markduplicates_picard"] }, "preseq/lcextrap": { "branch": "master", "git_sha": "9a88058962c0ee1715f2ad0e017c37e0cd75e532", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "qualimap/rnaseq": { "branch": "master", "git_sha": "6b0e4fe14ca1b12e131f64608f0bbaf36fd11451", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "rsem/calculateexpression": { "branch": "master", "git_sha": "7c82eda52cb493c4cf500e3fb7d1597a5d766165", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "rsem/preparereference": { "branch": "master", "git_sha": "301b088c7e9e00c4c80686411383f07173b54d69", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "rseqc/bamstat": { "branch": "master", "git_sha": "9eb22e4d3f28c274b7c498a1564581377349a242", - "installed_by": [ - "bam_rseqc" - ] + "installed_by": ["bam_rseqc"] }, "rseqc/inferexperiment": { "branch": "master", "git_sha": "6c7d8f1d6247655e4bc4d97f37b68b2461f645f6", - "installed_by": [ - "bam_rseqc" - ] + "installed_by": ["bam_rseqc"] }, "rseqc/innerdistance": { "branch": "master", "git_sha": "6c7d8f1d6247655e4bc4d97f37b68b2461f645f6", - "installed_by": [ - "bam_rseqc" - ] + "installed_by": ["bam_rseqc"] }, "rseqc/junctionannotation": { "branch": "master", "git_sha": "6c7d8f1d6247655e4bc4d97f37b68b2461f645f6", - "installed_by": [ - "bam_rseqc" - ] + "installed_by": ["bam_rseqc"] }, "rseqc/junctionsaturation": { "branch": "master", "git_sha": "6c7d8f1d6247655e4bc4d97f37b68b2461f645f6", - "installed_by": [ - "bam_rseqc" - ] + "installed_by": ["bam_rseqc"] }, "rseqc/readdistribution": { "branch": "master", "git_sha": "6c7d8f1d6247655e4bc4d97f37b68b2461f645f6", - "installed_by": [ - "bam_rseqc" - ] + "installed_by": ["bam_rseqc"] }, "rseqc/readduplication": { "branch": "master", "git_sha": "6c7d8f1d6247655e4bc4d97f37b68b2461f645f6", - "installed_by": [ - "bam_rseqc" - ] + "installed_by": ["bam_rseqc"] }, "rseqc/tin": { "branch": "master", "git_sha": "6c7d8f1d6247655e4bc4d97f37b68b2461f645f6", - "installed_by": [ - "bam_rseqc" - ] + "installed_by": ["bam_rseqc"] }, "salmon/index": { "branch": "master", "git_sha": "ffc101e1b84ef3df2e4e4a966e84b3c513ae5693", - "installed_by": [ - "fastq_subsample_fq_salmon" - ] + "installed_by": ["fastq_subsample_fq_salmon"] }, "salmon/quant": { "branch": "master", "git_sha": "03a8562231d575c313266c193a980594b941e3ea", - "installed_by": [ - "fastq_subsample_fq_salmon", - "modules" - ] + "installed_by": ["fastq_subsample_fq_salmon", "modules"] }, "samtools/flagstat": { "branch": "master", "git_sha": "f4596fe0bdc096cf53ec4497e83defdb3a94ff62", - "installed_by": [ - "bam_stats_samtools" - ] + "installed_by": ["bam_stats_samtools"] }, "samtools/idxstats": { "branch": "master", "git_sha": "f4596fe0bdc096cf53ec4497e83defdb3a94ff62", - "installed_by": [ - "bam_stats_samtools" - ] + "installed_by": ["bam_stats_samtools"] }, "samtools/index": { "branch": "master", @@ -259,115 +187,82 @@ "samtools/sort": { "branch": "master", "git_sha": "f4596fe0bdc096cf53ec4497e83defdb3a94ff62", - "installed_by": [ - "bam_sort_stats_samtools" - ] + "installed_by": ["bam_sort_stats_samtools"] }, "samtools/stats": { "branch": "master", "git_sha": "f4596fe0bdc096cf53ec4497e83defdb3a94ff62", - "installed_by": [ - "bam_stats_samtools" - ] + "installed_by": ["bam_stats_samtools"] }, "sortmerna": { "branch": "master", "git_sha": "df05c8db5195867c0bc7b92c1788115b66f0d17d", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "star/align": { "branch": "master", "git_sha": "a21faa6a3481af92a343a10926f59c189a2c16c9", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "star/genomegenerate": { "branch": "master", "git_sha": "a21faa6a3481af92a343a10926f59c189a2c16c9", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "stringtie/stringtie": { "branch": "master", "git_sha": "b1b959609bda44341120aed1766329909f54b8d0", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "subread/featurecounts": { "branch": "master", "git_sha": "e5265c217dcfbff7731c40623aaf07538fdd3e1c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "summarizedexperiment/summarizedexperiment": { "branch": "master", "git_sha": "874dace043f1400fddca70dc9786fa4e82e6f5ac", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "trimgalore": { "branch": "master", "git_sha": "d2c5e76f291379f3dd403e48e46ed7e6ba5da744", - "installed_by": [ - "fastq_fastqc_umitools_trimgalore" - ] + "installed_by": ["fastq_fastqc_umitools_trimgalore"] }, "tximeta/tximport": { "branch": "master", "git_sha": "03a8562231d575c313266c193a980594b941e3ea", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "ucsc/bedclip": { "branch": "master", "git_sha": "7c75d01997236f61b9b77399d9933cb36041f2c3", - "installed_by": [ - "bedgraph_bedclip_bedgraphtobigwig" - ] + "installed_by": ["bedgraph_bedclip_bedgraphtobigwig"] }, "ucsc/bedgraphtobigwig": { "branch": "master", "git_sha": "7c75d01997236f61b9b77399d9933cb36041f2c3", - "installed_by": [ - "bedgraph_bedclip_bedgraphtobigwig" - ] + "installed_by": ["bedgraph_bedclip_bedgraphtobigwig"] }, "umitools/dedup": { "branch": "master", "git_sha": "3bd4f34e3093c2a16e6a8eefc22242b9b94641db", - "installed_by": [ - "bam_dedup_stats_samtools_umitools" - ] + "installed_by": ["bam_dedup_stats_samtools_umitools"] }, "umitools/extract": { "branch": "master", "git_sha": "d2c5e76f291379f3dd403e48e46ed7e6ba5da744", - "installed_by": [ - "fastq_fastqc_umitools_fastp", - "fastq_fastqc_umitools_trimgalore" - ] + "installed_by": ["fastq_fastqc_umitools_fastp", "fastq_fastqc_umitools_trimgalore"] }, "umitools/prepareforrsem": { "branch": "master", "git_sha": "fac6cc9b2bc4042225bd9247ec03b413f764b47f", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "untar": { "branch": "master", "git_sha": "5caf7640a9ef1d18d765d55339be751bb0969dfa", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] } } }, @@ -376,30 +271,22 @@ "bam_dedup_stats_samtools_umitools": { "branch": "master", "git_sha": "f4596fe0bdc096cf53ec4497e83defdb3a94ff62", - "installed_by": [ - "subworkflows" - ] + "installed_by": ["subworkflows"] }, "bam_markduplicates_picard": { "branch": "master", "git_sha": "f4596fe0bdc096cf53ec4497e83defdb3a94ff62", - "installed_by": [ - "subworkflows" - ] + "installed_by": ["subworkflows"] }, "bam_rseqc": { "branch": "master", "git_sha": "9eb22e4d3f28c274b7c498a1564581377349a242", - "installed_by": [ - "subworkflows" - ] + "installed_by": ["subworkflows"] }, "bam_sort_stats_samtools": { "branch": "master", "git_sha": "f4596fe0bdc096cf53ec4497e83defdb3a94ff62", - "installed_by": [ - "fastq_align_hisat2" - ] + "installed_by": ["fastq_align_hisat2"] }, "bam_stats_samtools": { "branch": "master", @@ -413,61 +300,45 @@ "bedgraph_bedclip_bedgraphtobigwig": { "branch": "master", "git_sha": "a4bceac1aecee5aa0a5dbc601baf0e2e61013fb2", - "installed_by": [ - "subworkflows" - ] + "installed_by": ["subworkflows"] }, "fastq_align_hisat2": { "branch": "master", "git_sha": "701ae347c4508fba1b7d65262596f278b6a11cb6", - "installed_by": [ - "subworkflows" - ] + "installed_by": ["subworkflows"] }, "fastq_fastqc_umitools_fastp": { "branch": "master", "git_sha": "003920c7f9a8ae19b69a97171922880220bedf56", - "installed_by": [ - "subworkflows" - ] + "installed_by": ["subworkflows"] }, "fastq_fastqc_umitools_trimgalore": { "branch": "master", "git_sha": "cb6defa0834eda9d6d3f967e981c819fc3e257bf", - "installed_by": [ - "subworkflows" - ] + "installed_by": ["subworkflows"] }, "fastq_subsample_fq_salmon": { "branch": "master", "git_sha": "003920c7f9a8ae19b69a97171922880220bedf56", - "installed_by": [ - "subworkflows" - ] + "installed_by": ["subworkflows"] }, "utils_nextflow_pipeline": { "branch": "master", "git_sha": "5caf7640a9ef1d18d765d55339be751bb0969dfa", - "installed_by": [ - "subworkflows" - ] + "installed_by": ["subworkflows"] }, "utils_nfcore_pipeline": { "branch": "master", "git_sha": "5caf7640a9ef1d18d765d55339be751bb0969dfa", - "installed_by": [ - "subworkflows" - ] + "installed_by": ["subworkflows"] }, "utils_nfvalidation_plugin": { "branch": "master", "git_sha": "5caf7640a9ef1d18d765d55339be751bb0969dfa", - "installed_by": [ - "subworkflows" - ] + "installed_by": ["subworkflows"] } } } } } -} \ No newline at end of file +} From 6db4979fc826bd2338a94b7679fe8c7aa2e048d3 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Tue, 5 Mar 2024 16:56:27 +0000 Subject: [PATCH 154/634] Fix tests --- modules.json | 4 ++-- modules/nf-core/bedtools/genomecov/tests/main.nf.test | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/modules.json b/modules.json index 474772e5b..5057a0c84 100644 --- a/modules.json +++ b/modules.json @@ -11,8 +11,8 @@ "installed_by": ["modules"] }, "bedtools/genomecov": { - "branch": "master", - "git_sha": "0ae53932f5025068a17f78539e3709907beffa2c", + "branch": "genomecov_test_path", + "git_sha": "4b142025d6634adbdd89d9c835d3628f334ea6ae", "installed_by": ["modules"] }, "cat/fastq": { diff --git a/modules/nf-core/bedtools/genomecov/tests/main.nf.test b/modules/nf-core/bedtools/genomecov/tests/main.nf.test index 64ab4dfc0..09ab61832 100644 --- a/modules/nf-core/bedtools/genomecov/tests/main.nf.test +++ b/modules/nf-core/bedtools/genomecov/tests/main.nf.test @@ -15,7 +15,7 @@ nextflow_process { """ input[0] = [ [ id:'test' ], // meta map - file(params.test_data['sarscov2']['illumina']['test_paired_end_bam'], checkIfExists: true), + file(params.modules_testdata_base_path + "genomics/sarscov2/illumina/bam/test.paired_end.bam", checkIfExists: true), 1 ] // sizes @@ -42,7 +42,7 @@ nextflow_process { """ input[0] = [ [ id:'test'], - file(params.test_data['sarscov2']['illumina']['test_paired_end_bam'], checkIfExists: true), + file(params.modules_testdata_base_path + "genomics/sarscov2/illumina/bam/test.paired_end.bam", checkIfExists: true), 0.5 ] // sizes @@ -69,7 +69,7 @@ nextflow_process { """ input[0] = [ [ id:'test'], - file(params.test_data['sarscov2']['genome']['baits_bed'], checkIfExists: true), + file(params.modules_testdata_base_path + "genomics/sarscov2/genome/bed/baits.bed", checkIfExists: true), 0.5 ] // sizes @@ -98,7 +98,7 @@ nextflow_process { """ input[0] = [ [ id:'test' ], // meta map - file(params.test_data['sarscov2']['illumina']['test_paired_end_bam'], checkIfExists: true), + file(params.modules_testdata_base_path + "genomics/sarscov2/illumina/bam/test.paired_end.bam", checkIfExists: true), 1 ] // sizes From 5e412b1e8efa8151e1bd42dd4f429dd9f8cac21b Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Tue, 5 Mar 2024 18:50:22 +0000 Subject: [PATCH 155/634] Bump modules --- modules.json | 6 +++--- modules/nf-core/bbmap/bbsplit/main.nf | 1 - 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/modules.json b/modules.json index 5057a0c84..92741e4d9 100644 --- a/modules.json +++ b/modules.json @@ -7,12 +7,12 @@ "nf-core": { "bbmap/bbsplit": { "branch": "master", - "git_sha": "dcfa9a18a74300f7fb994cdbf518c981f22de73d", + "git_sha": "ecc2139bc014be1d0117d6c69458d82fbfa3328f", "installed_by": ["modules"] }, "bedtools/genomecov": { - "branch": "genomecov_test_path", - "git_sha": "4b142025d6634adbdd89d9c835d3628f334ea6ae", + "branch": "master", + "git_sha": "7d6a3a41229ddbfc37d88f5f8590f77e8dfe8470", "installed_by": ["modules"] }, "cat/fastq": { diff --git a/modules/nf-core/bbmap/bbsplit/main.nf b/modules/nf-core/bbmap/bbsplit/main.nf index 56f1e4f61..1abb608c2 100644 --- a/modules/nf-core/bbmap/bbsplit/main.nf +++ b/modules/nf-core/bbmap/bbsplit/main.nf @@ -48,7 +48,6 @@ process BBMAP_BBSPLIT { def refstats_cmd='' if (only_build_index) { - println("only building index") if (primary_ref && other_ref_names && other_ref_paths) { index_files = 'ref_primary=' +primary_ref + ' ' + other_refs.join(' ') + ' path=bbsplit' } else { From 7c89af8d86d7ba9b37ae23caa014c1cdbb6a9e4c Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Tue, 5 Mar 2024 18:59:42 +0000 Subject: [PATCH 156/634] Fix final test data path- update modules.json later --- modules.json | 4 ++-- modules/nf-core/bedtools/genomecov/tests/main.nf.test | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/modules.json b/modules.json index 92741e4d9..1321ca536 100644 --- a/modules.json +++ b/modules.json @@ -11,8 +11,8 @@ "installed_by": ["modules"] }, "bedtools/genomecov": { - "branch": "master", - "git_sha": "7d6a3a41229ddbfc37d88f5f8590f77e8dfe8470", + "branch": "genomecov_test_path", + "git_sha": "d481ff3fb7f70c50425c2f6ed1e8fba60a2ae680", "installed_by": ["modules"] }, "cat/fastq": { diff --git a/modules/nf-core/bedtools/genomecov/tests/main.nf.test b/modules/nf-core/bedtools/genomecov/tests/main.nf.test index 09ab61832..4e825a03c 100644 --- a/modules/nf-core/bedtools/genomecov/tests/main.nf.test +++ b/modules/nf-core/bedtools/genomecov/tests/main.nf.test @@ -73,7 +73,7 @@ nextflow_process { 0.5 ] // sizes - input[1] = file(params.test_data['sarscov2']['genome']['genome_sizes'], checkIfExists: true) + input[1] = file(params.modules_testdata_base_path + "genomics/sarscov2/genome/genome.sizes", checkIfExists: true), // extension input[2] = 'txt' input[3] = false From 58fbfad27d8b099ca4f7dfbc9700503fd12181af Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Tue, 5 Mar 2024 19:01:01 +0000 Subject: [PATCH 157/634] Update CHANGELOG --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index c24a063e6..a244978c2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -22,6 +22,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [PR #1226](https://github.com/nf-core/rnaseq/pull/1226) - Reuse bbsplit index and don't keep overwriting ([#1225](https://github.com/nf-core/rnaseq/issues/1225)) - [PR #1229](https://github.com/nf-core/rnaseq/pull/1229) - Template update for nf-core/tools v2.13.1 - [PR #1231](https://github.com/nf-core/rnaseq/pull/1231) - Add sortmerna index possibilities +- [PR #1234](https://github.com/nf-core/rnaseq/pull/1234) - Switch to genomecov from nf-core ### Parameters From cbb9d5397b36fe02a8efeff579908dfa60352d83 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Tue, 5 Mar 2024 19:28:29 +0000 Subject: [PATCH 158/634] Final genomecov test fix --- modules.json | 4 ++-- modules/nf-core/bedtools/genomecov/tests/main.nf.test | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/modules.json b/modules.json index 1321ca536..b7a1250d8 100644 --- a/modules.json +++ b/modules.json @@ -11,8 +11,8 @@ "installed_by": ["modules"] }, "bedtools/genomecov": { - "branch": "genomecov_test_path", - "git_sha": "d481ff3fb7f70c50425c2f6ed1e8fba60a2ae680", + "branch": "master", + "git_sha": "81b90194ce9911dbd55bba2c65c6919f6677abc4", "installed_by": ["modules"] }, "cat/fastq": { diff --git a/modules/nf-core/bedtools/genomecov/tests/main.nf.test b/modules/nf-core/bedtools/genomecov/tests/main.nf.test index 4e825a03c..8213cff95 100644 --- a/modules/nf-core/bedtools/genomecov/tests/main.nf.test +++ b/modules/nf-core/bedtools/genomecov/tests/main.nf.test @@ -73,7 +73,7 @@ nextflow_process { 0.5 ] // sizes - input[1] = file(params.modules_testdata_base_path + "genomics/sarscov2/genome/genome.sizes", checkIfExists: true), + input[1] = file(params.modules_testdata_base_path + "genomics/sarscov2/genome/genome.sizes", checkIfExists: true) // extension input[2] = 'txt' input[3] = false From 18fcdbdefc85e316eb14ea5cfdfffb862491cfa8 Mon Sep 17 00:00:00 2001 From: Adam Talbot <12817534+adamrtalbot@users.noreply.github.com> Date: Wed, 6 Mar 2024 14:41:30 +0000 Subject: [PATCH 159/634] Add nf-tests for nf-core/rnaseq utility functions Changes: - Change function name from validateInputSamplesheet to checkSamplesAreConsistent to accurately reflect what the function is doing - Add nf-tests for all functions in UTILS_NFCORE_RNASEQ_PIPELINE --- .../utils_nfcore_rnaseq_pipeline/main.nf | 5 +- .../tests/main.function.nf.test | 750 ++++++++++++++++++ .../tests/main.function.nf.test.snap | 259 ++++++ workflows/rnaseq/main.nf | 4 +- 4 files changed, 1014 insertions(+), 4 deletions(-) create mode 100644 subworkflows/local/utils_nfcore_rnaseq_pipeline/tests/main.function.nf.test create mode 100644 subworkflows/local/utils_nfcore_rnaseq_pipeline/tests/main.function.nf.test.snap diff --git a/subworkflows/local/utils_nfcore_rnaseq_pipeline/main.nf b/subworkflows/local/utils_nfcore_rnaseq_pipeline/main.nf index 34aee9577..a8d1f01c8 100644 --- a/subworkflows/local/utils_nfcore_rnaseq_pipeline/main.nf +++ b/subworkflows/local/utils_nfcore_rnaseq_pipeline/main.nf @@ -122,9 +122,9 @@ workflow PIPELINE_COMPLETION { */ // -// Function to validate channels from input samplesheet +// Function to check samples are internally consistent after being grouped // -def validateInputSamplesheet(input) { +def checkSamplesAreConsistent(input) { def (metas, fastqs) = input[1..2] // Check that multiple runs of the same sample are of the same strandedness @@ -507,6 +507,7 @@ def getStarPercentMapped(params, align_log) { align_log.eachLine { line -> def matcher = line =~ pattern if (matcher) { + println matcher[0][1].toFloat() percent_aligned = matcher[0][1].toFloat() } } diff --git a/subworkflows/local/utils_nfcore_rnaseq_pipeline/tests/main.function.nf.test b/subworkflows/local/utils_nfcore_rnaseq_pipeline/tests/main.function.nf.test new file mode 100644 index 000000000..40dfe9b48 --- /dev/null +++ b/subworkflows/local/utils_nfcore_rnaseq_pipeline/tests/main.function.nf.test @@ -0,0 +1,750 @@ +nextflow_function { + + name "Test Functions" + script "../main.nf" + + test("Test Function checkSamplesAreConsistent success") { + + function "checkSamplesAreConsistent" + + when { + function { + """ + input[0] = [ + [], + [ + [ id: 'test', strandedness: 'unstranded', single_end: true ], + [ id: 'test', strandedness: 'unstranded', single_end: true ] + ], + [ + [ 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_1.fastq.gz', checkIfExists: true) ] + ] + ] + """ + } + } + + then { + assertAll( + { assert function.success }, + { assert snapshot(function.result).match() } + ) + } + + } + + test("Test Function checkSamplesAreConsistent invalid strandedness") { + + function "checkSamplesAreConsistent" + + when { + function { + """ + input[0] = [ + [], + [ + [ id: 'test', strandedness: 'unstranded', single_end: true ], + [ id: 'test', strandedness: 'stranded', single_end: true ] + ], + [ + [ 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_1.fastq.gz', checkIfExists: true) ] + ] + ] + """ + } + } + + then { + assertAll( + { assert function.failed }, + { assert snapshot(function.result).match() } + ) + } + + } + + test("Test Function checkSamplesAreConsistent invalid endedness") { + + function "checkSamplesAreConsistent" + + when { + function { + """ + input[0] = [ + [], + [ + [ id: 'test', strandedness: 'unstranded', single_end: true ], + [ id: 'test', strandedness: 'unstranded', single_end: false ] + ], + [ + [ 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_1.fastq.gz', checkIfExists: true) ] + ] + ] + """ + } + } + + then { + assertAll( + { assert function.failed }, + { assert snapshot(function.result).match() } + ) + } + + } + + + test("Test Function validateInputParameters success") { + // Needs more tests here to check for all options but there are a lot! + + function "validateInputParameters" + + when { + params { + fasta = "genome.fasta" + gtf = "genome.gtf" + gff = "genome.gff" + transcript_fasta = "transcripts.fasta" + skip_bbsplit = true + bbsplit_fasta_list = null + remove_ribo_rna = false + ribo_database_manifest = null + with_umi = false + skip_umi_extract = false + skip_alignment = false + aligner = "star" + skip_pseudo_alignment = false + pseudo_aligner = "salmon" + rsem_index = "rsem_index" + } + } + + then { + assertAll( + { assert function.success }, + { assert snapshot(function.result).match() } + ) + } + + } + + test("Test Function getGenomeAttribute finds attribute") { + + function "getGenomeAttribute" + + when { + params { + genome = "myTest" + genomes { + "myTest" { + myAttribute = "myValue" + } + } + } + function { + """ + // define inputs of the function here. Example: + input[0] = "myAttribute" + """ + } + } + + then { + assertAll( + { assert function.success }, + { assert snapshot(function.result).match() } + ) + } + + } + + test("Test Function getGenomeAttribute missing attribute") { + + function "getGenomeAttribute" + + when { + params { + genome = "myTest" + genomes { + "myTest" { + myAttribute = "myValue" + } + } + } + function { + """ + // define inputs of the function here. Example: + input[0] = "missingAttribute" + """ + } + } + + then { + assertAll( + { assert function.success }, + { assert snapshot(function.result).match() } + ) + } + + } + + test("Test Function genomeExistsError finds genome") { + + function "genomeExistsError" + + when { + params { + genome = "myTest" + genomes { + "myTest" { + myAttribute = "myValue" + } + } + } + } + + then { + assertAll( + { assert function.success }, + { assert snapshot(function.result).match() } + ) + } + + } + + test("Test Function genomeExistsError missing genome") { + + function "genomeExistsError" + + when { + params { + genome = "missingTest" + genomes { + "myTest" { + myAttribute = "myValue" + } + } + } + } + + then { + assertAll( + { assert function.failed }, + { assert snapshot(function.result).match() } + ) + } + + } + + + test("Test Function toolCitationText") { + + function "toolCitationText" + + then { + assertAll( + { assert function.success }, + { assert snapshot(function.result).match() } + ) + } + + } + + test("Test Function toolBibliographyText") { + + function "toolBibliographyText" + + then { + assertAll( + { assert function.success }, + { assert snapshot(function.result).match() } + ) + } + + } + + test("Test Function gtfGffWarn") { + + function "gtfGffWarn" + + when { + function { + """ + // define inputs of the function here. Example: + // input[0] = 1 + """ + } + } + + then { + assertAll( + { assert function.success }, + { assert snapshot(function.result).match() } + ) + } + + } + + + + test("Test Function ncbiGenomeWarn") { + + function "ncbiGenomeWarn" + + when { + function { + """ + // define inputs of the function here. Example: + // input[0] = 1 + """ + } + } + + then { + assertAll( + { assert function.success }, + { assert snapshot(function.result).match() } + ) + } + + } + + + + test("Test Function ucscGenomeWarn") { + + function "ucscGenomeWarn" + + when { + function { + """ + // define inputs of the function here. Example: + // input[0] = 1 + """ + } + } + + then { + assertAll( + { assert function.success }, + { assert snapshot(function.result).match() } + ) + } + + } + + + + test("Test Function transcriptsFastaWarn") { + + function "transcriptsFastaWarn" + + when { + function { + """ + // define inputs of the function here. Example: + // input[0] = 1 + """ + } + } + + then { + assertAll( + { assert function.success }, + { assert snapshot(function.result).match() } + ) + } + + } + + + + test("Test Function skipAlignmentWarn") { + + function "skipAlignmentWarn" + + when { + function { + """ + // define inputs of the function here. Example: + // input[0] = 1 + """ + } + } + + then { + assertAll( + { assert function.success }, + { assert snapshot(function.result).match() } + ) + } + + } + + + + test("Test Function rsemUmiError") { + + function "rsemUmiError" + + when { + function { + """ + // define inputs of the function here. Example: + // input[0] = 1 + """ + } + } + + then { + assertAll( + { assert function.failed }, + { assert snapshot(function.result).match() } + ) + } + + } + + + + test("Test Function rsemStarIndexWarn") { + + function "rsemStarIndexWarn" + + when { + function { + """ + // define inputs of the function here. Example: + // input[0] = 1 + """ + } + } + + then { + assertAll( + { assert function.success }, + { assert snapshot(function.result).match() } + ) + } + + } + + + test("Test Function rsemStarExtraArgumentsWarn") { + + function "rsemStarExtraArgumentsWarn" + + when { + function { + """ + // define inputs of the function here. Example: + // input[0] = 1 + """ + } + } + + then { + assertAll( + { assert function.success }, + { assert snapshot(function.result).match() } + ) + } + + } + + + test("Test Function additionaFastaIndexWarn") { + + function "additionaFastaIndexWarn" + + when { + function { + """ + // define inputs of the function here. Example: + input[0] = "mockIndex" + """ + } + } + + then { + assertAll( + { assert function.success }, + { assert snapshot(function.result).match() } + ) + } + + } + + test("Test Function checkMaxContigSize") { + + function "checkMaxContigSize" + + when { + function { + """ + // define inputs of the function here. Example: + input[0] = file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.fai', checkIfExists: true) + """ + } + } + + then { + assertAll( + { assert function.success }, + { assert snapshot(function.result).match() } + ) + } + + } + + + test("Test Function multiqcTsvFromList") { + + function "multiqcTsvFromList" + + when { + function { + """ + // Create a TSV of one entry + input[0] = [ 'test', 'value' ] + input[1] = [ 'id' , 'attribute'] + """ + } + } + + then { + assertAll( + { assert function.success }, + { assert snapshot(function.result).match() } + ) + } + + } + + + test("Test Function getSalmonInferredStrandedness unstranded") { + + function "getSalmonInferredStrandedness" + + when { + function { + """ + import groovy.json.JsonOutput + + def json_contents = JsonOutput.toJson([ + library_types: [ + "U" + ] + ]) + def jsonFile = file("${workDir}/salmonUnstranded.json") + jsonFile.write(json_contents) + + input[0] = jsonFile + """ + } + } + + then { + assertAll( + { assert function.success }, + { assert snapshot(function.result).match() } + ) + } + + } + + test("Test Function getSalmonInferredStrandedness forward") { + + function "getSalmonInferredStrandedness" + + when { + function { + """ + import groovy.json.JsonOutput + + def json_contents = JsonOutput.toJson([ + library_types: [ + "SF" + ] + ]) + def jsonFile = file("${workDir}/salmonForward.json") + jsonFile.write(json_contents) + + input[0] = jsonFile + """ + } + } + + then { + assertAll( + { assert function.success }, + { assert snapshot(function.result).match() } + ) + } + + } + + test("Test Function getSalmonInferredStrandedness reverse") { + + function "getSalmonInferredStrandedness" + + when { + function { + """ + import groovy.json.JsonOutput + + def json_contents = JsonOutput.toJson([ + library_types: [ + "SR" + ] + ]) + def jsonFile = file("${workDir}/salmonReverse.json") + jsonFile.write(json_contents) + + input[0] = jsonFile + """ + } + } + + then { + assertAll( + { assert function.success }, + { assert snapshot(function.result).match() } + ) + } + + } + + test("Test Function getStarPercentMapped pass") { + + function "getStarPercentMapped" + + when { + function { + """ + def alignLog = file("${workDir}/alignLog.txt") + alignLog.write("Uniquely mapped reads % | 95.6%") + + input[0] = [ + min_mapped_reads: 1.0 + ] + input[1] = alignLog + """ + } + } + + then { + assertAll( + { assert function.success }, + { assert function.result == [ 95.6, true ] } + ) + } + + } + + test("Test Function getStarPercentMapped fail") { + + function "getStarPercentMapped" + + when { + function { + """ + def alignLog = file("${workDir}/alignLog.txt") + alignLog.write("Uniquely mapped reads % | 10.2%") + + input[0] = [ + min_mapped_reads: 50.0 + ] + input[1] = alignLog + """ + } + } + + then { + assertAll( + { assert function.success }, + { assert function.result == [ 10.2, false ] } + ) + } + + } + + + test("Test Function biotypeInGtf success") { + + function "biotypeInGtf" + + when { + function { + """ + input[0] = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.gtf', checkIfExists: true) + input[1] = "gene_biotype" + """ + } + } + + then { + assertAll( + { assert function.success }, + { assert snapshot(function.result).match() } + ) + } + + } + + test("Test Function biotypeInGtf failed") { + + function "biotypeInGtf" + + when { + function { + """ + input[0] = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.gtf', checkIfExists: true) + input[1] = "NotAppearingInThisFile" + """ + } + } + + then { + assertAll( + { assert function.success }, + { assert snapshot(function.result).match() } + ) + } + + } + + test("Test Function getInferexperimentStrandedness") { + + function "getInferexperimentStrandedness" + + when { + function { + """ + def fileContents = [ + 'This is PairEnd Data', + 'Fraction of reads failed to determine: 0.1565', + 'Fraction of reads explained by "1++,1--,2+-,2-+": 0.0075', + 'Fraction of reads explained by "1+-,1-+,2++,2--": 0.8361' + ] + def inferExperimentFile = file("${workDir}/inferExperimentFile.txt") + inferExperimentFile.withWriter{ out -> + fileContents.each {out.println it} + } + + input[0] = inferExperimentFile + """ + } + } + + then { + assertAll( + { assert function.success }, + { assert snapshot(function.result).match() } + ) + } + } +} diff --git a/subworkflows/local/utils_nfcore_rnaseq_pipeline/tests/main.function.nf.test.snap b/subworkflows/local/utils_nfcore_rnaseq_pipeline/tests/main.function.nf.test.snap new file mode 100644 index 000000000..fdba25fac --- /dev/null +++ b/subworkflows/local/utils_nfcore_rnaseq_pipeline/tests/main.function.nf.test.snap @@ -0,0 +1,259 @@ +{ + "Test Function gtfGffWarn": { + "content": null, + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-03-06T14:33:11.163299" + }, + "Test Function biotypeInGtf success": { + "content": [ + true + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-03-06T14:34:03.414382" + }, + "Test Function toolBibliographyText": { + "content": [ + "
  • Andrews S, (2010) FastQC, URL: https://www.bioinformatics.babraham.ac.uk/projects/fastqc/).
  • Ewels, P., Magnusson, M., Lundin, S., & K\u00e4ller, M. (2016). MultiQC: summarize analysis results for multiple tools and samples in a single report. Bioinformatics , 32(19), 3047\u20133048. doi: /10.1093/bioinformatics/btw354
  • " + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-03-06T14:33:07.698845" + }, + "Test Function toolCitationText": { + "content": [ + "Tools used in the workflow included: FastQC (Andrews 2010), MultiQC (Ewels et al. 2016) ." + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-03-06T14:33:04.677913" + }, + "Test Function rsemUmiError": { + "content": null, + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-03-06T14:33:26.903306" + }, + "Test Function getGenomeAttribute missing attribute": { + "content": null, + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-03-06T14:32:55.635006" + }, + "Test Function getSalmonInferredStrandedness unstranded": { + "content": [ + "unstranded" + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-03-06T14:33:46.772392" + }, + "Test Function checkSamplesAreConsistent invalid strandedness": { + "content": null, + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-03-06T14:32:41.841561" + }, + "Test Function getSalmonInferredStrandedness reverse": { + "content": [ + "reverse" + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-03-06T14:33:52.860997" + }, + "Test Function biotypeInGtf failed": { + "content": [ + false + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-03-06T14:34:07.750259" + }, + "Test Function transcriptsFastaWarn": { + "content": null, + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-03-06T14:33:20.618971" + }, + "Test Function ucscGenomeWarn": { + "content": null, + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-03-06T14:33:17.405648" + }, + "Test Function skipAlignmentWarn": { + "content": null, + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-03-06T14:33:23.76368" + }, + "Test Function checkMaxContigSize": { + "content": null, + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-03-06T14:33:40.548126" + }, + "Test Function getGenomeAttribute finds attribute": { + "content": [ + "myValue" + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-03-06T14:32:52.593188" + }, + "Test Function multiqcTsvFromList": { + "content": [ + "id\tattribute\ntest\nvalue" + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-03-06T14:33:43.671826" + }, + "Test Function checkSamplesAreConsistent success": { + "content": [ + [ + { + "id": "test", + "strandedness": "unstranded", + "single_end": true + }, + [ + [ + "/ngi-igenomes/testdata/nf-core/modules/genomics/sarscov2/illumina/fastq/test_1.fastq.gz" + ], + [ + "/ngi-igenomes/testdata/nf-core/modules/genomics/sarscov2/illumina/fastq/test_1.fastq.gz" + ] + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-03-06T14:32:37.450298" + }, + "Test Function checkSamplesAreConsistent invalid endedness": { + "content": null, + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-03-06T14:32:46.420194" + }, + "Test Function genomeExistsError finds genome": { + "content": null, + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-03-06T14:32:58.626473" + }, + "Test Function additionaFastaIndexWarn": { + "content": null, + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-03-06T14:33:36.224496" + }, + "Test Function genomeExistsError missing genome": { + "content": null, + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-03-06T14:33:01.625542" + }, + "Test Function ncbiGenomeWarn": { + "content": null, + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-03-06T14:33:14.286665" + }, + "Test Function rsemStarExtraArgumentsWarn": { + "content": null, + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-03-06T14:33:33.141215" + }, + "Test Function validateInputParameters success": { + "content": null, + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-03-06T14:32:49.565504" + }, + "Test Function getSalmonInferredStrandedness forward": { + "content": [ + "forward" + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-03-06T14:33:49.794775" + }, + "Test Function rsemStarIndexWarn": { + "content": null, + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-03-06T14:33:30.02058" + }, + "Test Function getInferexperimentStrandedness": { + "content": [ + [ + "reverse", + 0.7499999832361937, + 83.60999822616577, + 15.649999678134918 + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-03-06T14:34:10.929416" + } +} \ No newline at end of file diff --git a/workflows/rnaseq/main.nf b/workflows/rnaseq/main.nf index 8549f802e..283c1544e 100755 --- a/workflows/rnaseq/main.nf +++ b/workflows/rnaseq/main.nf @@ -22,7 +22,7 @@ include { QUANTIFY_RSEM } from '../../subwor include { QUANTIFY_PSEUDO_ALIGNMENT as QUANTIFY_STAR_SALMON } from '../../subworkflows/local/quantify_pseudo_alignment' include { QUANTIFY_PSEUDO_ALIGNMENT } from '../../subworkflows/local/quantify_pseudo_alignment' -include { validateInputSamplesheet } from '../../subworkflows/local/utils_nfcore_rnaseq_pipeline' +include { checkSamplesAreConsistent } from '../../subworkflows/local/utils_nfcore_rnaseq_pipeline' include { multiqcTsvFromList } from '../../subworkflows/local/utils_nfcore_rnaseq_pipeline' include { getSalmonInferredStrandedness } from '../../subworkflows/local/utils_nfcore_rnaseq_pipeline' include { getStarPercentMapped } from '../../subworkflows/local/utils_nfcore_rnaseq_pipeline' @@ -121,7 +121,7 @@ workflow RNASEQ { } .groupTuple() .map { - validateInputSamplesheet(it) + checkSamplesAreConsistent(it) } .branch { meta, fastqs -> From c988ce02d0bfaec1fcb375afa025ecc751ce2f9c Mon Sep 17 00:00:00 2001 From: Adam Talbot <12817534+adamrtalbot@users.noreply.github.com> Date: Wed, 6 Mar 2024 15:35:22 +0000 Subject: [PATCH 160/634] Adds tests for nf-core/rnaseq utility subworkflows Changes: - Makes nextflow_schema.json a parameter so we can actually set it. Not exposed right now but will be. - Adds basic tests that check for correct running only. Defaults to lots of stuff off. We should extend this to check for more things but we're in a rush right now. --- main.nf | 2 + .../utils_nfcore_rnaseq_pipeline/main.nf | 6 ++- .../main.pipeline_completion.workflow.nf.test | 32 +++++++++++ ...in.pipeline_initialistion.workflow.nf.test | 54 +++++++++++++++++++ 4 files changed, 92 insertions(+), 2 deletions(-) create mode 100644 subworkflows/local/utils_nfcore_rnaseq_pipeline/tests/main.pipeline_completion.workflow.nf.test create mode 100644 subworkflows/local/utils_nfcore_rnaseq_pipeline/tests/main.pipeline_initialistion.workflow.nf.test diff --git a/main.nf b/main.nf index 1b98f2341..e257f047c 100755 --- a/main.nf +++ b/main.nf @@ -145,6 +145,7 @@ workflow { PIPELINE_INITIALISATION ( params.version, params.help, + "nextflow_schema.json", params.validate_params, params.monochrome_logs, args, @@ -160,6 +161,7 @@ workflow { // SUBWORKFLOW: Run completion tasks // PIPELINE_COMPLETION ( + "nextflow_schema.json", params.email, params.email_on_fail, params.plaintext_email, diff --git a/subworkflows/local/utils_nfcore_rnaseq_pipeline/main.nf b/subworkflows/local/utils_nfcore_rnaseq_pipeline/main.nf index a8d1f01c8..d8452e875 100644 --- a/subworkflows/local/utils_nfcore_rnaseq_pipeline/main.nf +++ b/subworkflows/local/utils_nfcore_rnaseq_pipeline/main.nf @@ -32,9 +32,10 @@ workflow PIPELINE_INITIALISATION { take: version // boolean: Display version and exit help // boolean: Display help text + schema // string: Path to the JSON schema file 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 + nextflow_cli_args // array: List of positional nextflow CLI args outdir // string: The output directory where the results will be saved main: @@ -61,7 +62,7 @@ workflow PIPELINE_INITIALISATION { pre_help_text, post_help_text, validate_params, - "nextflow_schema.json" + schema ) // @@ -87,6 +88,7 @@ workflow PIPELINE_INITIALISATION { workflow PIPELINE_COMPLETION { take: + schema // string: Path to the JSON schema file email // string: email address email_on_fail // string: email address sent on pipeline failure plaintext_email // boolean: Send plain-text email instead of HTML diff --git a/subworkflows/local/utils_nfcore_rnaseq_pipeline/tests/main.pipeline_completion.workflow.nf.test b/subworkflows/local/utils_nfcore_rnaseq_pipeline/tests/main.pipeline_completion.workflow.nf.test new file mode 100644 index 000000000..85de53a69 --- /dev/null +++ b/subworkflows/local/utils_nfcore_rnaseq_pipeline/tests/main.pipeline_completion.workflow.nf.test @@ -0,0 +1,32 @@ +nextflow_workflow { + + name "Test Workflow PIPELINE_COMPLETION" + script "../main.nf" + workflow "PIPELINE_COMPLETION" + + test("test PIPELINE_COMPLETION successfully completes") { + + when { + workflow { + """ + input[0] = "${projectDir}/nextflow_schema.json" // schema (string) + input[1] = null // email (string) + input[2] = null // email_on_fail (string) + input[3] = true // plaintext_email (boolean) + input[4] = "${outputDir}" // outputDir (string) + input[5] = true // monochrome_logs (boolean) + input[6] = null // hook_url (string) + input[7] = "${outputDir}/multiqc_report.html" // multiqc_report (string) + """ + } + } + + then { + assertAll( + { assert workflow.success} + ) + } + + } + +} diff --git a/subworkflows/local/utils_nfcore_rnaseq_pipeline/tests/main.pipeline_initialistion.workflow.nf.test b/subworkflows/local/utils_nfcore_rnaseq_pipeline/tests/main.pipeline_initialistion.workflow.nf.test new file mode 100644 index 000000000..e0b311d22 --- /dev/null +++ b/subworkflows/local/utils_nfcore_rnaseq_pipeline/tests/main.pipeline_initialistion.workflow.nf.test @@ -0,0 +1,54 @@ +nextflow_workflow { + + name "Test Workflow PIPELINE_INITIALISATION" + script "../main.nf" + workflow "PIPELINE_INITIALISATION" + + test("test PIPELINE_INITIALISATION successfully completes with valid parameters") { + + when { + params { + // parameters copied from test profile. + // We should be able to automatically import these somehow. + input = "https://raw.githubusercontent.com/nf-core/test-datasets/7f1614baeb0ddf66e60be78c3d9fa55440465ac8/samplesheet/v3.10/samplesheet_test.csv" + + // Genome references + fasta = "https://raw.githubusercontent.com/nf-core/test-datasets/7f1614baeb0ddf66e60be78c3d9fa55440465ac8/reference/genome.fasta" + gtf = "https://raw.githubusercontent.com/nf-core/test-datasets/7f1614baeb0ddf66e60be78c3d9fa55440465ac8/reference/genes_with_empty_tid.gtf.gz" + gff = "https://raw.githubusercontent.com/nf-core/test-datasets/7f1614baeb0ddf66e60be78c3d9fa55440465ac8/reference/genes.gff.gz" + transcript_fasta = "https://raw.githubusercontent.com/nf-core/test-datasets/7f1614baeb0ddf66e60be78c3d9fa55440465ac8/reference/transcriptome.fasta" + additional_fasta = "https://raw.githubusercontent.com/nf-core/test-datasets/7f1614baeb0ddf66e60be78c3d9fa55440465ac8/reference/gfp.fa.gz" + + bbsplit_fasta_list = "https://raw.githubusercontent.com/nf-core/test-datasets/7f1614baeb0ddf66e60be78c3d9fa55440465ac8/reference/bbsplit_fasta_list.txt" + hisat2_index = "https://raw.githubusercontent.com/nf-core/test-datasets/7f1614baeb0ddf66e60be78c3d9fa55440465ac8/reference/hisat2.tar.gz" + salmon_index = "https://raw.githubusercontent.com/nf-core/test-datasets/7f1614baeb0ddf66e60be78c3d9fa55440465ac8/reference/salmon.tar.gz" + rsem_index = "https://raw.githubusercontent.com/nf-core/test-datasets/7f1614baeb0ddf66e60be78c3d9fa55440465ac8/reference/rsem.tar.gz" + + // Other parameters + skip_bbsplit = false + pseudo_aligner = 'salmon' + umitools_bc_pattern = 'NNNN' + ribo_database_manifest = "${projectDir}/workflows/rnaseq/assets/rrna-db-defaults.txt" + } + workflow { + """ + input[0] = false // version (boolean) + input[1] = false // help (boolean) + input[2] = "${projectDir}/nextflow_schema.json" // schema (string) + input[3] = true // validate_parameters (boolean) + input[4] = true // monochrome_logs (boolean) + input[5] = args // args (array) + input[6] = file("$outputDir") // outdir (string) + """ + } + } + + then { + assertAll( + { assert workflow.success} + ) + } + + } + +} From fbb69929af474a2c77cd936975bd68051bfd756b Mon Sep 17 00:00:00 2001 From: Adam Talbot <12817534+adamrtalbot@users.noreply.github.com> Date: Wed, 6 Mar 2024 15:41:19 +0000 Subject: [PATCH 161/634] Fix using schema variable correctly in PIPELINE_COMPLETION --- subworkflows/local/utils_nfcore_rnaseq_pipeline/main.nf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/subworkflows/local/utils_nfcore_rnaseq_pipeline/main.nf b/subworkflows/local/utils_nfcore_rnaseq_pipeline/main.nf index d8452e875..7251c81dd 100644 --- a/subworkflows/local/utils_nfcore_rnaseq_pipeline/main.nf +++ b/subworkflows/local/utils_nfcore_rnaseq_pipeline/main.nf @@ -99,7 +99,7 @@ workflow PIPELINE_COMPLETION { main: - summary_params = paramsSummaryMap(workflow, parameters_schema: "nextflow_schema.json") + summary_params = paramsSummaryMap(workflow, parameters_schema: schema) // // Completion email and summary From 6bf28aedb10fcd7cbfa438b8a6b622358a6a80c0 Mon Sep 17 00:00:00 2001 From: Adam Talbot <12817534+adamrtalbot@users.noreply.github.com> Date: Wed, 6 Mar 2024 15:49:11 +0000 Subject: [PATCH 162/634] test tidy --- .../tests/main.function.nf.test | 76 ------------------- 1 file changed, 76 deletions(-) diff --git a/subworkflows/local/utils_nfcore_rnaseq_pipeline/tests/main.function.nf.test b/subworkflows/local/utils_nfcore_rnaseq_pipeline/tests/main.function.nf.test index 40dfe9b48..48f2ffd16 100644 --- a/subworkflows/local/utils_nfcore_rnaseq_pipeline/tests/main.function.nf.test +++ b/subworkflows/local/utils_nfcore_rnaseq_pipeline/tests/main.function.nf.test @@ -146,7 +146,6 @@ nextflow_function { } function { """ - // define inputs of the function here. Example: input[0] = "myAttribute" """ } @@ -176,7 +175,6 @@ nextflow_function { } function { """ - // define inputs of the function here. Example: input[0] = "missingAttribute" """ } @@ -270,15 +268,6 @@ nextflow_function { function "gtfGffWarn" - when { - function { - """ - // define inputs of the function here. Example: - // input[0] = 1 - """ - } - } - then { assertAll( { assert function.success }, @@ -294,15 +283,6 @@ nextflow_function { function "ncbiGenomeWarn" - when { - function { - """ - // define inputs of the function here. Example: - // input[0] = 1 - """ - } - } - then { assertAll( { assert function.success }, @@ -318,15 +298,6 @@ nextflow_function { function "ucscGenomeWarn" - when { - function { - """ - // define inputs of the function here. Example: - // input[0] = 1 - """ - } - } - then { assertAll( { assert function.success }, @@ -342,15 +313,6 @@ nextflow_function { function "transcriptsFastaWarn" - when { - function { - """ - // define inputs of the function here. Example: - // input[0] = 1 - """ - } - } - then { assertAll( { assert function.success }, @@ -366,15 +328,6 @@ nextflow_function { function "skipAlignmentWarn" - when { - function { - """ - // define inputs of the function here. Example: - // input[0] = 1 - """ - } - } - then { assertAll( { assert function.success }, @@ -390,15 +343,6 @@ nextflow_function { function "rsemUmiError" - when { - function { - """ - // define inputs of the function here. Example: - // input[0] = 1 - """ - } - } - then { assertAll( { assert function.failed }, @@ -414,15 +358,6 @@ nextflow_function { function "rsemStarIndexWarn" - when { - function { - """ - // define inputs of the function here. Example: - // input[0] = 1 - """ - } - } - then { assertAll( { assert function.success }, @@ -437,15 +372,6 @@ nextflow_function { function "rsemStarExtraArgumentsWarn" - when { - function { - """ - // define inputs of the function here. Example: - // input[0] = 1 - """ - } - } - then { assertAll( { assert function.success }, @@ -463,7 +389,6 @@ nextflow_function { when { function { """ - // define inputs of the function here. Example: input[0] = "mockIndex" """ } @@ -485,7 +410,6 @@ nextflow_function { when { function { """ - // define inputs of the function here. Example: input[0] = file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.fai', checkIfExists: true) """ } From 1c4033ea0809a367020198baebdccc6714a5e51b Mon Sep 17 00:00:00 2001 From: Adam Talbot <12817534+adamrtalbot@users.noreply.github.com> Date: Wed, 6 Mar 2024 15:53:16 +0000 Subject: [PATCH 163/634] Add nf-test to local module GTF_FILTER --- modules/local/gtf_filter/tests/main.nf.test | 27 +++++++++++++++++++ .../local/gtf_filter/tests/main.nf.test.snap | 25 +++++++++++++++++ 2 files changed, 52 insertions(+) create mode 100644 modules/local/gtf_filter/tests/main.nf.test create mode 100644 modules/local/gtf_filter/tests/main.nf.test.snap diff --git a/modules/local/gtf_filter/tests/main.nf.test b/modules/local/gtf_filter/tests/main.nf.test new file mode 100644 index 000000000..31044be1a --- /dev/null +++ b/modules/local/gtf_filter/tests/main.nf.test @@ -0,0 +1,27 @@ +nextflow_process { + + name "Test Process GTF_FILTER" + script "../main.nf" + process "GTF_FILTER" + + test("Should run without failures") { + + when { + process { + """ + input[0] = file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) + input[1] = file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.gtf', checkIfExists: true) + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + +} diff --git a/modules/local/gtf_filter/tests/main.nf.test.snap b/modules/local/gtf_filter/tests/main.nf.test.snap new file mode 100644 index 000000000..b763c249c --- /dev/null +++ b/modules/local/gtf_filter/tests/main.nf.test.snap @@ -0,0 +1,25 @@ +{ + "Should run without failures": { + "content": [ + { + "0": [ + "genome.filtered.gtf:md5,aa8b2aa1e0b5fbbba3b04d471e1b0535" + ], + "1": [ + "versions.yml:md5,4adf55ec05d247fd6d253459bd80856f" + ], + "genome_gtf": [ + "genome.filtered.gtf:md5,aa8b2aa1e0b5fbbba3b04d471e1b0535" + ], + "versions": [ + "versions.yml:md5,4adf55ec05d247fd6d253459bd80856f" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-03-06T15:52:37.977802" + } +} \ No newline at end of file From 2f90516539b3f516d6528da7aa0e6c87e92b7b51 Mon Sep 17 00:00:00 2001 From: Adam Talbot <12817534+adamrtalbot@users.noreply.github.com> Date: Wed, 6 Mar 2024 15:55:26 +0000 Subject: [PATCH 164/634] Update subworkflows/local/utils_nfcore_rnaseq_pipeline/main.nf --- subworkflows/local/utils_nfcore_rnaseq_pipeline/main.nf | 1 - 1 file changed, 1 deletion(-) diff --git a/subworkflows/local/utils_nfcore_rnaseq_pipeline/main.nf b/subworkflows/local/utils_nfcore_rnaseq_pipeline/main.nf index 7251c81dd..1264816a6 100644 --- a/subworkflows/local/utils_nfcore_rnaseq_pipeline/main.nf +++ b/subworkflows/local/utils_nfcore_rnaseq_pipeline/main.nf @@ -509,7 +509,6 @@ def getStarPercentMapped(params, align_log) { align_log.eachLine { line -> def matcher = line =~ pattern if (matcher) { - println matcher[0][1].toFloat() percent_aligned = matcher[0][1].toFloat() } } From d3a81dad73c82a461c2322a5c771718d88b2f4f5 Mon Sep 17 00:00:00 2001 From: Adam Talbot <12817534+adamrtalbot@users.noreply.github.com> Date: Wed, 6 Mar 2024 16:02:11 +0000 Subject: [PATCH 165/634] Fix concurrency error in Github CI workflow --- .github/workflows/ci.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a3ef985e6..597487bac 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -17,8 +17,7 @@ env: concurrency: group: "${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}" - cancel-in-progress: false # TODO: Decide on strategy for #1221 - + cancel-in-progress: true jobs: star_salmon: name: Test STAR Salmon with workflow parameters From 55679476be105e25487cd92ffd9044d369f920b7 Mon Sep 17 00:00:00 2001 From: Adam Talbot <12817534+adamrtalbot@users.noreply.github.com> Date: Wed, 6 Mar 2024 16:11:32 +0000 Subject: [PATCH 166/634] Add nf-test to preprocess_transcripts_fasta_gencode --- .../tests/main.nf.test | 26 +++++++++++++++++++ .../tests/main.nf.test.snap | 25 ++++++++++++++++++ 2 files changed, 51 insertions(+) create mode 100644 modules/local/preprocess_transcripts_fasta_gencode/tests/main.nf.test create mode 100644 modules/local/preprocess_transcripts_fasta_gencode/tests/main.nf.test.snap diff --git a/modules/local/preprocess_transcripts_fasta_gencode/tests/main.nf.test b/modules/local/preprocess_transcripts_fasta_gencode/tests/main.nf.test new file mode 100644 index 000000000..feb41ce1f --- /dev/null +++ b/modules/local/preprocess_transcripts_fasta_gencode/tests/main.nf.test @@ -0,0 +1,26 @@ +nextflow_process { + + name "Test Process PREPROCESS_TRANSCRIPTS_FASTA_GENCODE" + script "../main.nf" + process "PREPROCESS_TRANSCRIPTS_FASTA_GENCODE" + + test("sarscov2 fasta") { + + when { + process { + """ + input[0] = 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/local/preprocess_transcripts_fasta_gencode/tests/main.nf.test.snap b/modules/local/preprocess_transcripts_fasta_gencode/tests/main.nf.test.snap new file mode 100644 index 000000000..0bd47aab1 --- /dev/null +++ b/modules/local/preprocess_transcripts_fasta_gencode/tests/main.nf.test.snap @@ -0,0 +1,25 @@ +{ + "sarscov2 fasta": { + "content": [ + { + "0": [ + "genome.fixed.fa:md5,6e9fe4042a72f2345f644f239272b7e6" + ], + "1": [ + "versions.yml:md5,e2c7f636c472887a914b128d1444737e" + ], + "fasta": [ + "genome.fixed.fa:md5,6e9fe4042a72f2345f644f239272b7e6" + ], + "versions": [ + "versions.yml:md5,e2c7f636c472887a914b128d1444737e" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-03-06T16:11:04.533974" + } +} \ No newline at end of file From c04aad334ae610acea048b7d10b54d4b2608765e Mon Sep 17 00:00:00 2001 From: Adam Talbot <12817534+adamrtalbot@users.noreply.github.com> Date: Wed, 6 Mar 2024 16:17:50 +0000 Subject: [PATCH 167/634] Switch to generating custom FASTA file with gencode annotations --- .../tests/main.nf.test | 12 ++++++++++-- .../tests/main.nf.test.snap | 8 ++++---- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/modules/local/preprocess_transcripts_fasta_gencode/tests/main.nf.test b/modules/local/preprocess_transcripts_fasta_gencode/tests/main.nf.test index feb41ce1f..9585f8ae7 100644 --- a/modules/local/preprocess_transcripts_fasta_gencode/tests/main.nf.test +++ b/modules/local/preprocess_transcripts_fasta_gencode/tests/main.nf.test @@ -4,12 +4,20 @@ nextflow_process { script "../main.nf" process "PREPROCESS_TRANSCRIPTS_FASTA_GENCODE" - test("sarscov2 fasta") { + test("gencode fasta") { when { process { """ - input[0] = file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) + def fileContents = [ + '>chr22|removeme', + 'ACTCAAGATAATGATGAGTAAAGAATATATTTCTAACAACAAAAAGGAAATTTGATAGTA' + ] + def gencodeFasta = file("${workDir}/gencodeFasta.fasta") + gencodeFasta.withWriter{ out -> + fileContents.each {out.println it} + } + input[0] = gencodeFasta """ } } diff --git a/modules/local/preprocess_transcripts_fasta_gencode/tests/main.nf.test.snap b/modules/local/preprocess_transcripts_fasta_gencode/tests/main.nf.test.snap index 0bd47aab1..8c0580686 100644 --- a/modules/local/preprocess_transcripts_fasta_gencode/tests/main.nf.test.snap +++ b/modules/local/preprocess_transcripts_fasta_gencode/tests/main.nf.test.snap @@ -1,15 +1,15 @@ { - "sarscov2 fasta": { + "gencode fasta": { "content": [ { "0": [ - "genome.fixed.fa:md5,6e9fe4042a72f2345f644f239272b7e6" + "gencodeFasta.fixed.fa:md5,e9267fa40efc784cc92575b5ba8a441b" ], "1": [ "versions.yml:md5,e2c7f636c472887a914b128d1444737e" ], "fasta": [ - "genome.fixed.fa:md5,6e9fe4042a72f2345f644f239272b7e6" + "gencodeFasta.fixed.fa:md5,e9267fa40efc784cc92575b5ba8a441b" ], "versions": [ "versions.yml:md5,e2c7f636c472887a914b128d1444737e" @@ -20,6 +20,6 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-03-06T16:11:04.533974" + "timestamp": "2024-03-06T16:16:36.494744" } } \ No newline at end of file From d812921dd230ae0c97c74ece659a61fbecba1991 Mon Sep 17 00:00:00 2001 From: Adam Talbot <12817534+adamrtalbot@users.noreply.github.com> Date: Wed, 6 Mar 2024 16:30:54 +0000 Subject: [PATCH 168/634] bump snap --- tests/main.nf.test.snap | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/main.nf.test.snap b/tests/main.nf.test.snap index b69b0c3e9..75b9b5184 100644 --- a/tests/main.nf.test.snap +++ b/tests/main.nf.test.snap @@ -1,7 +1,7 @@ { "software_versions": { "content": [ - "{BBMAP_BBSPLIT={bbmap=39.01}, BEDTOOLS_GENOMECOV={bedtools=2.30.0}, CAT_FASTQ={cat=8.3}, CUSTOM_CATADDITIONALFASTA={python=3.9.5}, CUSTOM_GETCHROMSIZES={getchromsizes=1.16.1}, CUSTOM_TX2GENE={python=3.9.5}, DESEQ2_QC_PSEUDO={r-base=4.0.3, bioconductor-deseq2=1.28.0}, DESEQ2_QC_STAR_SALMON={r-base=4.0.3, bioconductor-deseq2=1.28.0}, DUPRADAR={r-base=4.2.1, bioconductor-dupradar=1.28.0}, FASTQC={fastqc=0.12.1}, FQ_SUBSAMPLE={fq=0.9.1 (2022-02-22)}, GTF2BED={perl=5.26.2}, GTF_FILTER={python=3.9.5}, GUNZIP_ADDITIONAL_FASTA={gunzip=1.1}, GUNZIP_GTF={gunzip=1.1}, MULTIQC_CUSTOM_BIOTYPE={python=3.9.5}, PICARD_MARKDUPLICATES={picard=3.1.1}, QUALIMAP_RNASEQ={qualimap=2.3}, RSEQC_BAMSTAT={rseqc=5.0.2}, RSEQC_INFEREXPERIMENT={rseqc=5.0.2}, RSEQC_INNERDISTANCE={rseqc=5.0.2}, RSEQC_JUNCTIONANNOTATION={rseqc=5.0.2}, RSEQC_JUNCTIONSATURATION={rseqc=5.0.2}, RSEQC_READDISTRIBUTION={rseqc=5.0.2}, RSEQC_READDUPLICATION={rseqc=5.0.2}, SALMON_QUANT={salmon=1.10.1}, SAMTOOLS_FLAGSTAT={samtools=1.19.2}, SAMTOOLS_IDXSTATS={samtools=1.19.2}, SAMTOOLS_INDEX={samtools=1.19.2}, SAMTOOLS_SORT={samtools=1.19.2}, SAMTOOLS_STATS={samtools=1.19.2}, SE_GENE={r-base=4.3.2, bioconductor-summarizedexperiment=1.32.0}, STAR_ALIGN={star=2.7.10a, samtools=1.18, gawk=5.1.0}, STAR_GENOMEGENERATE={star=2.7.10a, samtools=1.18, gawk=5.1.0}, STRINGTIE_STRINGTIE={stringtie=2.2.1}, SUBREAD_FEATURECOUNTS={subread=2.0.1}, TRIMGALORE={trimgalore=0.6.7, cutadapt=3.4}, TXIMETA_TXIMPORT={r-base=4.3.2, bioconductor-tximeta=1.20.1}, UCSC_BEDCLIP={ucsc=377}, UCSC_BEDGRAPHTOBIGWIG={ucsc=445}, UNTAR_SALMON_INDEX={untar=1.3}, Workflow={nf-core/rnaseq=v3.15.0dev}}" + "{BBMAP_BBSPLIT={bbmap=39.01}, BEDTOOLS_GENOMECOV={bedtools=2.31.1}, CAT_FASTQ={cat=8.3}, CUSTOM_CATADDITIONALFASTA={python=3.9.5}, CUSTOM_GETCHROMSIZES={getchromsizes=1.16.1}, CUSTOM_TX2GENE={python=3.9.5}, DESEQ2_QC_PSEUDO={r-base=4.0.3, bioconductor-deseq2=1.28.0}, DESEQ2_QC_STAR_SALMON={r-base=4.0.3, bioconductor-deseq2=1.28.0}, DUPRADAR={r-base=4.2.1, bioconductor-dupradar=1.28.0}, FASTQC={fastqc=0.12.1}, FQ_SUBSAMPLE={fq=0.9.1 (2022-02-22)}, GTF2BED={perl=5.26.2}, GTF_FILTER={python=3.9.5}, GUNZIP_ADDITIONAL_FASTA={gunzip=1.1}, GUNZIP_GTF={gunzip=1.1}, MULTIQC_CUSTOM_BIOTYPE={python=3.9.5}, PICARD_MARKDUPLICATES={picard=3.1.1}, QUALIMAP_RNASEQ={qualimap=2.3}, RSEQC_BAMSTAT={rseqc=5.0.2}, RSEQC_INFEREXPERIMENT={rseqc=5.0.2}, RSEQC_INNERDISTANCE={rseqc=5.0.2}, RSEQC_JUNCTIONANNOTATION={rseqc=5.0.2}, RSEQC_JUNCTIONSATURATION={rseqc=5.0.2}, RSEQC_READDISTRIBUTION={rseqc=5.0.2}, RSEQC_READDUPLICATION={rseqc=5.0.2}, SALMON_QUANT={salmon=1.10.1}, SAMTOOLS_FLAGSTAT={samtools=1.19.2}, SAMTOOLS_IDXSTATS={samtools=1.19.2}, SAMTOOLS_INDEX={samtools=1.19.2}, SAMTOOLS_SORT={samtools=1.19.2}, SAMTOOLS_STATS={samtools=1.19.2}, SE_GENE={r-base=4.3.2, bioconductor-summarizedexperiment=1.32.0}, STAR_ALIGN={star=2.7.10a, samtools=1.18, gawk=5.1.0}, STAR_GENOMEGENERATE={star=2.7.10a, samtools=1.18, gawk=5.1.0}, STRINGTIE_STRINGTIE={stringtie=2.2.1}, SUBREAD_FEATURECOUNTS={subread=2.0.1}, TRIMGALORE={trimgalore=0.6.7, cutadapt=3.4}, TXIMETA_TXIMPORT={r-base=4.3.2, bioconductor-tximeta=1.20.1}, UCSC_BEDCLIP={ucsc=377}, UCSC_BEDGRAPHTOBIGWIG={ucsc=445}, UNTAR_SALMON_INDEX={untar=1.3}, Workflow={nf-core/rnaseq=v3.15.0dev}}" ], "meta": { "nf-test": "0.8.4", @@ -9,4 +9,4 @@ }, "timestamp": "2024-03-04T12:40:26.161319" } -} +} \ No newline at end of file From a5b7b744a55c44b2dc684476645eadcfd5995663 Mon Sep 17 00:00:00 2001 From: Adam Talbot <12817534+adamrtalbot@users.noreply.github.com> Date: Wed, 6 Mar 2024 17:39:34 +0000 Subject: [PATCH 169/634] Update task name in snap --- tests/main.nf.test.snap | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/main.nf.test.snap b/tests/main.nf.test.snap index 75b9b5184..bf2350a18 100644 --- a/tests/main.nf.test.snap +++ b/tests/main.nf.test.snap @@ -1,7 +1,7 @@ { "software_versions": { "content": [ - "{BBMAP_BBSPLIT={bbmap=39.01}, BEDTOOLS_GENOMECOV={bedtools=2.31.1}, CAT_FASTQ={cat=8.3}, CUSTOM_CATADDITIONALFASTA={python=3.9.5}, CUSTOM_GETCHROMSIZES={getchromsizes=1.16.1}, CUSTOM_TX2GENE={python=3.9.5}, DESEQ2_QC_PSEUDO={r-base=4.0.3, bioconductor-deseq2=1.28.0}, DESEQ2_QC_STAR_SALMON={r-base=4.0.3, bioconductor-deseq2=1.28.0}, DUPRADAR={r-base=4.2.1, bioconductor-dupradar=1.28.0}, FASTQC={fastqc=0.12.1}, FQ_SUBSAMPLE={fq=0.9.1 (2022-02-22)}, GTF2BED={perl=5.26.2}, GTF_FILTER={python=3.9.5}, GUNZIP_ADDITIONAL_FASTA={gunzip=1.1}, GUNZIP_GTF={gunzip=1.1}, MULTIQC_CUSTOM_BIOTYPE={python=3.9.5}, PICARD_MARKDUPLICATES={picard=3.1.1}, QUALIMAP_RNASEQ={qualimap=2.3}, RSEQC_BAMSTAT={rseqc=5.0.2}, RSEQC_INFEREXPERIMENT={rseqc=5.0.2}, RSEQC_INNERDISTANCE={rseqc=5.0.2}, RSEQC_JUNCTIONANNOTATION={rseqc=5.0.2}, RSEQC_JUNCTIONSATURATION={rseqc=5.0.2}, RSEQC_READDISTRIBUTION={rseqc=5.0.2}, RSEQC_READDUPLICATION={rseqc=5.0.2}, SALMON_QUANT={salmon=1.10.1}, SAMTOOLS_FLAGSTAT={samtools=1.19.2}, SAMTOOLS_IDXSTATS={samtools=1.19.2}, SAMTOOLS_INDEX={samtools=1.19.2}, SAMTOOLS_SORT={samtools=1.19.2}, SAMTOOLS_STATS={samtools=1.19.2}, SE_GENE={r-base=4.3.2, bioconductor-summarizedexperiment=1.32.0}, STAR_ALIGN={star=2.7.10a, samtools=1.18, gawk=5.1.0}, STAR_GENOMEGENERATE={star=2.7.10a, samtools=1.18, gawk=5.1.0}, STRINGTIE_STRINGTIE={stringtie=2.2.1}, SUBREAD_FEATURECOUNTS={subread=2.0.1}, TRIMGALORE={trimgalore=0.6.7, cutadapt=3.4}, TXIMETA_TXIMPORT={r-base=4.3.2, bioconductor-tximeta=1.20.1}, UCSC_BEDCLIP={ucsc=377}, UCSC_BEDGRAPHTOBIGWIG={ucsc=445}, UNTAR_SALMON_INDEX={untar=1.3}, Workflow={nf-core/rnaseq=v3.15.0dev}}" + "{BBMAP_BBSPLIT={bbmap=39.01}, BEDTOOLS_GENOMECOV_FW={bedtools=2.31.1}, CAT_FASTQ={cat=8.3}, CUSTOM_CATADDITIONALFASTA={python=3.9.5}, CUSTOM_GETCHROMSIZES={getchromsizes=1.16.1}, CUSTOM_TX2GENE={python=3.9.5}, DESEQ2_QC_PSEUDO={r-base=4.0.3, bioconductor-deseq2=1.28.0}, DESEQ2_QC_STAR_SALMON={r-base=4.0.3, bioconductor-deseq2=1.28.0}, DUPRADAR={r-base=4.2.1, bioconductor-dupradar=1.28.0}, FASTQC={fastqc=0.12.1}, FQ_SUBSAMPLE={fq=0.9.1 (2022-02-22)}, GTF2BED={perl=5.26.2}, GTF_FILTER={python=3.9.5}, GUNZIP_ADDITIONAL_FASTA={gunzip=1.1}, GUNZIP_GTF={gunzip=1.1}, MULTIQC_CUSTOM_BIOTYPE={python=3.9.5}, PICARD_MARKDUPLICATES={picard=3.1.1}, QUALIMAP_RNASEQ={qualimap=2.3}, RSEQC_BAMSTAT={rseqc=5.0.2}, RSEQC_INFEREXPERIMENT={rseqc=5.0.2}, RSEQC_INNERDISTANCE={rseqc=5.0.2}, RSEQC_JUNCTIONANNOTATION={rseqc=5.0.2}, RSEQC_JUNCTIONSATURATION={rseqc=5.0.2}, RSEQC_READDISTRIBUTION={rseqc=5.0.2}, RSEQC_READDUPLICATION={rseqc=5.0.2}, SALMON_QUANT={salmon=1.10.1}, SAMTOOLS_FLAGSTAT={samtools=1.19.2}, SAMTOOLS_IDXSTATS={samtools=1.19.2}, SAMTOOLS_INDEX={samtools=1.19.2}, SAMTOOLS_SORT={samtools=1.19.2}, SAMTOOLS_STATS={samtools=1.19.2}, SE_GENE={r-base=4.3.2, bioconductor-summarizedexperiment=1.32.0}, STAR_ALIGN={star=2.7.10a, samtools=1.18, gawk=5.1.0}, STAR_GENOMEGENERATE={star=2.7.10a, samtools=1.18, gawk=5.1.0}, STRINGTIE_STRINGTIE={stringtie=2.2.1}, SUBREAD_FEATURECOUNTS={subread=2.0.1}, TRIMGALORE={trimgalore=0.6.7, cutadapt=3.4}, TXIMETA_TXIMPORT={r-base=4.3.2, bioconductor-tximeta=1.20.1}, UCSC_BEDCLIP={ucsc=377}, UCSC_BEDGRAPHTOBIGWIG={ucsc=445}, UNTAR_SALMON_INDEX={untar=1.3}, Workflow={nf-core/rnaseq=v3.15.0dev}}" ], "meta": { "nf-test": "0.8.4", From f8f493c5b6d4dc25185d834a9c641f2095a26a63 Mon Sep 17 00:00:00 2001 From: Adam Talbot <12817534+adamrtalbot@users.noreply.github.com> Date: Wed, 6 Mar 2024 18:01:11 +0000 Subject: [PATCH 170/634] fix snap --- tests/main.nf.test.snap | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/main.nf.test.snap b/tests/main.nf.test.snap index b69b0c3e9..bf2350a18 100644 --- a/tests/main.nf.test.snap +++ b/tests/main.nf.test.snap @@ -1,7 +1,7 @@ { "software_versions": { "content": [ - "{BBMAP_BBSPLIT={bbmap=39.01}, BEDTOOLS_GENOMECOV={bedtools=2.30.0}, CAT_FASTQ={cat=8.3}, CUSTOM_CATADDITIONALFASTA={python=3.9.5}, CUSTOM_GETCHROMSIZES={getchromsizes=1.16.1}, CUSTOM_TX2GENE={python=3.9.5}, DESEQ2_QC_PSEUDO={r-base=4.0.3, bioconductor-deseq2=1.28.0}, DESEQ2_QC_STAR_SALMON={r-base=4.0.3, bioconductor-deseq2=1.28.0}, DUPRADAR={r-base=4.2.1, bioconductor-dupradar=1.28.0}, FASTQC={fastqc=0.12.1}, FQ_SUBSAMPLE={fq=0.9.1 (2022-02-22)}, GTF2BED={perl=5.26.2}, GTF_FILTER={python=3.9.5}, GUNZIP_ADDITIONAL_FASTA={gunzip=1.1}, GUNZIP_GTF={gunzip=1.1}, MULTIQC_CUSTOM_BIOTYPE={python=3.9.5}, PICARD_MARKDUPLICATES={picard=3.1.1}, QUALIMAP_RNASEQ={qualimap=2.3}, RSEQC_BAMSTAT={rseqc=5.0.2}, RSEQC_INFEREXPERIMENT={rseqc=5.0.2}, RSEQC_INNERDISTANCE={rseqc=5.0.2}, RSEQC_JUNCTIONANNOTATION={rseqc=5.0.2}, RSEQC_JUNCTIONSATURATION={rseqc=5.0.2}, RSEQC_READDISTRIBUTION={rseqc=5.0.2}, RSEQC_READDUPLICATION={rseqc=5.0.2}, SALMON_QUANT={salmon=1.10.1}, SAMTOOLS_FLAGSTAT={samtools=1.19.2}, SAMTOOLS_IDXSTATS={samtools=1.19.2}, SAMTOOLS_INDEX={samtools=1.19.2}, SAMTOOLS_SORT={samtools=1.19.2}, SAMTOOLS_STATS={samtools=1.19.2}, SE_GENE={r-base=4.3.2, bioconductor-summarizedexperiment=1.32.0}, STAR_ALIGN={star=2.7.10a, samtools=1.18, gawk=5.1.0}, STAR_GENOMEGENERATE={star=2.7.10a, samtools=1.18, gawk=5.1.0}, STRINGTIE_STRINGTIE={stringtie=2.2.1}, SUBREAD_FEATURECOUNTS={subread=2.0.1}, TRIMGALORE={trimgalore=0.6.7, cutadapt=3.4}, TXIMETA_TXIMPORT={r-base=4.3.2, bioconductor-tximeta=1.20.1}, UCSC_BEDCLIP={ucsc=377}, UCSC_BEDGRAPHTOBIGWIG={ucsc=445}, UNTAR_SALMON_INDEX={untar=1.3}, Workflow={nf-core/rnaseq=v3.15.0dev}}" + "{BBMAP_BBSPLIT={bbmap=39.01}, BEDTOOLS_GENOMECOV_FW={bedtools=2.31.1}, CAT_FASTQ={cat=8.3}, CUSTOM_CATADDITIONALFASTA={python=3.9.5}, CUSTOM_GETCHROMSIZES={getchromsizes=1.16.1}, CUSTOM_TX2GENE={python=3.9.5}, DESEQ2_QC_PSEUDO={r-base=4.0.3, bioconductor-deseq2=1.28.0}, DESEQ2_QC_STAR_SALMON={r-base=4.0.3, bioconductor-deseq2=1.28.0}, DUPRADAR={r-base=4.2.1, bioconductor-dupradar=1.28.0}, FASTQC={fastqc=0.12.1}, FQ_SUBSAMPLE={fq=0.9.1 (2022-02-22)}, GTF2BED={perl=5.26.2}, GTF_FILTER={python=3.9.5}, GUNZIP_ADDITIONAL_FASTA={gunzip=1.1}, GUNZIP_GTF={gunzip=1.1}, MULTIQC_CUSTOM_BIOTYPE={python=3.9.5}, PICARD_MARKDUPLICATES={picard=3.1.1}, QUALIMAP_RNASEQ={qualimap=2.3}, RSEQC_BAMSTAT={rseqc=5.0.2}, RSEQC_INFEREXPERIMENT={rseqc=5.0.2}, RSEQC_INNERDISTANCE={rseqc=5.0.2}, RSEQC_JUNCTIONANNOTATION={rseqc=5.0.2}, RSEQC_JUNCTIONSATURATION={rseqc=5.0.2}, RSEQC_READDISTRIBUTION={rseqc=5.0.2}, RSEQC_READDUPLICATION={rseqc=5.0.2}, SALMON_QUANT={salmon=1.10.1}, SAMTOOLS_FLAGSTAT={samtools=1.19.2}, SAMTOOLS_IDXSTATS={samtools=1.19.2}, SAMTOOLS_INDEX={samtools=1.19.2}, SAMTOOLS_SORT={samtools=1.19.2}, SAMTOOLS_STATS={samtools=1.19.2}, SE_GENE={r-base=4.3.2, bioconductor-summarizedexperiment=1.32.0}, STAR_ALIGN={star=2.7.10a, samtools=1.18, gawk=5.1.0}, STAR_GENOMEGENERATE={star=2.7.10a, samtools=1.18, gawk=5.1.0}, STRINGTIE_STRINGTIE={stringtie=2.2.1}, SUBREAD_FEATURECOUNTS={subread=2.0.1}, TRIMGALORE={trimgalore=0.6.7, cutadapt=3.4}, TXIMETA_TXIMPORT={r-base=4.3.2, bioconductor-tximeta=1.20.1}, UCSC_BEDCLIP={ucsc=377}, UCSC_BEDGRAPHTOBIGWIG={ucsc=445}, UNTAR_SALMON_INDEX={untar=1.3}, Workflow={nf-core/rnaseq=v3.15.0dev}}" ], "meta": { "nf-test": "0.8.4", @@ -9,4 +9,4 @@ }, "timestamp": "2024-03-04T12:40:26.161319" } -} +} \ No newline at end of file From 9403a567a1ed07890e74498b32862e61bab6d8a2 Mon Sep 17 00:00:00 2001 From: maxulysse Date: Thu, 7 Mar 2024 11:44:12 +0100 Subject: [PATCH 171/634] add basic tests --- .../local/align_star/tests/main.nf.test | 131 +++++ .../local/align_star/tests/main.nf.test.snap | 488 ++++++++++++++++++ .../local/align_star/tests/nextflow.config | 12 + subworkflows/local/align_star/tests/tags.yml | 2 + 4 files changed, 633 insertions(+) create mode 100644 subworkflows/local/align_star/tests/main.nf.test create mode 100644 subworkflows/local/align_star/tests/main.nf.test.snap create mode 100644 subworkflows/local/align_star/tests/nextflow.config create mode 100644 subworkflows/local/align_star/tests/tags.yml diff --git a/subworkflows/local/align_star/tests/main.nf.test b/subworkflows/local/align_star/tests/main.nf.test new file mode 100644 index 000000000..21e81921b --- /dev/null +++ b/subworkflows/local/align_star/tests/main.nf.test @@ -0,0 +1,131 @@ +nextflow_workflow { + + name "Test Subworkflow ALIGN_STAR" + script "../main.nf" + workflow "ALIGN_STAR" + config "./nextflow.config" + + tag "ALIGN_STAR" + + tag "star/align" + tag "star/genomegenerate" + + tag "STAR_ALIGN_IGENOMES" + tag "STAR_GENOMEGENERATE_IGENOMES" + + tag "BAM_SORT_STATS_SAMTOOLS" + + test("star - no igenomes") { + + setup { + run("STAR_GENOMEGENERATE") { + script "../../../../modules/nf-core/star/genomegenerate/main.nf" + process { + """ + input[0] = Channel.of([ + [ id:'test_fasta' ], + [ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) ] + ]) + input[1] = Channel.of([ + [ id:'test_gtf' ], + [ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.gtf', checkIfExists: true) ] + ]) + """ + } + } + } + + when { + workflow { + """ + star_ignore_sjdbgtf = false + seq_platform = 'illumina' + seq_center = false + is_aws_igenome = false + + input[0] = Channel.of([ + [ id:'test', single_end:false ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/fastq/test_rnaseq_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/fastq/test_rnaseq_2.fastq.gz', checkIfExists: true) + ] + ]) + input[1] = STAR_GENOMEGENERATE.out.index + input[2] = Channel.of([ + [ id:'test_gtf' ], + [ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.gtf', checkIfExists: true) ] + ]) + input[3] = star_ignore_sjdbgtf + input[4] = seq_platform + input[5] = seq_center + input[6] = is_aws_igenome + input[7] = Channel.of([ + [ id:'test_fasta' ], + [ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) ] + ]) + """ + } + } + + then { + assertAll( + { assert workflow.success}, + { assert snapshot(workflow.out).match()} + ) + } + } + test("star - with igenomes") { + + setup { + run("STAR_GENOMEGENERATE_IGENOMES") { + script "../../../../modules/local/star_genomegenerate_igenomes/main.nf" + process { + """ + input[0] = Channel.of([file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true)]) + input[1] = Channel.of([file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.gtf', checkIfExists: true)]) + """ + } + } + } + + when { + workflow { + """ + star_ignore_sjdbgtf = false + seq_platform = 'illumina' + seq_center = false + is_aws_igenome = true + + input[0] = Channel.of([ + [ id:'test', single_end:false ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/fastq/test_rnaseq_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/fastq/test_rnaseq_2.fastq.gz', checkIfExists: true) + ] + ]) + input[1] = STAR_GENOMEGENERATE_IGENOMES.out.index.map{ [ [id:'star'], it ] } + input[2] = Channel.of([ + [ id:'test_gtf' ], + [ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.gtf', checkIfExists: true) ] + ]) + input[3] = star_ignore_sjdbgtf + input[4] = seq_platform + input[5] = seq_center + input[6] = is_aws_igenome + input[7] = Channel.of([ + [ id:'test_fasta' ], + [ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) ] + ]) + """ + } + } + + then { + assertAll( + { assert workflow.success}, + { assert snapshot(workflow.out).match()} + ) + } + } + +} diff --git a/subworkflows/local/align_star/tests/main.nf.test.snap b/subworkflows/local/align_star/tests/main.nf.test.snap new file mode 100644 index 000000000..5ad084e9e --- /dev/null +++ b/subworkflows/local/align_star/tests/main.nf.test.snap @@ -0,0 +1,488 @@ +{ + "star - with igenomes": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.Aligned.sortedByCoord.out.bam:md5,b6cec9bba6b04b9b92eddbef128bdfbb" + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": false + }, + "test.Log.final.out:md5,031062ec8398f51538afa790cd564f58" + ] + ], + "10": [ + + ], + "11": [ + [ + { + "id": "test", + "single_end": false + }, + "test.stats:md5,99fb9569a1b39fe38d7bd7d71daa8364" + ] + ], + "12": [ + [ + { + "id": "test", + "single_end": false + }, + "test.flagstat:md5,db0e25cd0b37d3030e807846c022199e" + ] + ], + "13": [ + [ + { + "id": "test", + "single_end": false + }, + "test.idxstats:md5,107ca94dd426cc44db316f0d402307c5" + ] + ], + "14": [ + "versions.yml:md5,c156b12646d8a51a4d59c42f8d833305", + "versions.yml:md5,d18a2907f84607859a6723fa33485378", + "versions.yml:md5,e3b043ba840d5bddde92f0bf1c91a5fc", + "versions.yml:md5,e902002dd55f6cca09ea62c9aa42ef0d", + "versions.yml:md5,f6b7635a2693b70fe6836c8e45ebba98", + "versions.yml:md5,f985768ea0cc88e2b533cc08538f3771" + ], + "2": [ + [ + { + "id": "test", + "single_end": false + }, + "test.Log.out:md5,39a5b9da108e3fffa73b9ff80c377845" + ] + ], + "3": [ + [ + { + "id": "test", + "single_end": false + }, + "test.Log.progress.out:md5,b2bd061d6cbaaf3d6d3b1fed547f69b8" + ] + ], + "4": [ + [ + { + "id": "test", + "single_end": false + }, + "test.Aligned.sortedByCoord.out.bam:md5,b6cec9bba6b04b9b92eddbef128bdfbb" + ] + ], + "5": [ + + ], + "6": [ + + ], + "7": [ + [ + { + "id": "test", + "single_end": false + }, + "test.SJ.out.tab:md5,844af19ab0fc8cd9a3f75228445aca0d" + ] + ], + "8": [ + [ + { + "id": "test", + "single_end": false + }, + "test.bam:md5,994a3ee28ad0faf247e5b931e017f9ed" + ] + ], + "9": [ + [ + { + "id": "test", + "single_end": false + }, + "test.bam.bai:md5,8bd17c254a618d5ef0cc2642abc00e40" + ] + ], + "bai": [ + [ + { + "id": "test", + "single_end": false + }, + "test.bam.bai:md5,8bd17c254a618d5ef0cc2642abc00e40" + ] + ], + "bam": [ + [ + { + "id": "test", + "single_end": false + }, + "test.bam:md5,994a3ee28ad0faf247e5b931e017f9ed" + ] + ], + "bam_sorted": [ + [ + { + "id": "test", + "single_end": false + }, + "test.Aligned.sortedByCoord.out.bam:md5,b6cec9bba6b04b9b92eddbef128bdfbb" + ] + ], + "bam_transcript": [ + + ], + "csi": [ + + ], + "fastq": [ + + ], + "flagstat": [ + [ + { + "id": "test", + "single_end": false + }, + "test.flagstat:md5,db0e25cd0b37d3030e807846c022199e" + ] + ], + "idxstats": [ + [ + { + "id": "test", + "single_end": false + }, + "test.idxstats:md5,107ca94dd426cc44db316f0d402307c5" + ] + ], + "log_final": [ + [ + { + "id": "test", + "single_end": false + }, + "test.Log.final.out:md5,031062ec8398f51538afa790cd564f58" + ] + ], + "log_out": [ + [ + { + "id": "test", + "single_end": false + }, + "test.Log.out:md5,39a5b9da108e3fffa73b9ff80c377845" + ] + ], + "log_progress": [ + [ + { + "id": "test", + "single_end": false + }, + "test.Log.progress.out:md5,b2bd061d6cbaaf3d6d3b1fed547f69b8" + ] + ], + "orig_bam": [ + [ + { + "id": "test", + "single_end": false + }, + "test.Aligned.sortedByCoord.out.bam:md5,b6cec9bba6b04b9b92eddbef128bdfbb" + ] + ], + "stats": [ + [ + { + "id": "test", + "single_end": false + }, + "test.stats:md5,99fb9569a1b39fe38d7bd7d71daa8364" + ] + ], + "tab": [ + [ + { + "id": "test", + "single_end": false + }, + "test.SJ.out.tab:md5,844af19ab0fc8cd9a3f75228445aca0d" + ] + ], + "versions": [ + "versions.yml:md5,c156b12646d8a51a4d59c42f8d833305", + "versions.yml:md5,d18a2907f84607859a6723fa33485378", + "versions.yml:md5,e3b043ba840d5bddde92f0bf1c91a5fc", + "versions.yml:md5,e902002dd55f6cca09ea62c9aa42ef0d", + "versions.yml:md5,f6b7635a2693b70fe6836c8e45ebba98", + "versions.yml:md5,f985768ea0cc88e2b533cc08538f3771" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-07T11:43:53.204834" + }, + "star - no igenomes": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.Aligned.sortedByCoord.out.bam:md5,b9ee1c607e07323bc1652ef3babb543f" + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": false + }, + "test.Log.final.out:md5,95912b3deb440b85de070cd278adc0d4" + ] + ], + "10": [ + + ], + "11": [ + [ + { + "id": "test", + "single_end": false + }, + "test.stats:md5,99fb9569a1b39fe38d7bd7d71daa8364" + ] + ], + "12": [ + [ + { + "id": "test", + "single_end": false + }, + "test.flagstat:md5,db0e25cd0b37d3030e807846c022199e" + ] + ], + "13": [ + [ + { + "id": "test", + "single_end": false + }, + "test.idxstats:md5,107ca94dd426cc44db316f0d402307c5" + ] + ], + "14": [ + "versions.yml:md5,35c1cc21d26d9d8f00e6ec87e97fb634", + "versions.yml:md5,c156b12646d8a51a4d59c42f8d833305", + "versions.yml:md5,d18a2907f84607859a6723fa33485378", + "versions.yml:md5,e902002dd55f6cca09ea62c9aa42ef0d", + "versions.yml:md5,f6b7635a2693b70fe6836c8e45ebba98", + "versions.yml:md5,f985768ea0cc88e2b533cc08538f3771" + ], + "2": [ + [ + { + "id": "test", + "single_end": false + }, + "test.Log.out:md5,f22b5b596fb89916a20f2d1b0009ac38" + ] + ], + "3": [ + [ + { + "id": "test", + "single_end": false + }, + "test.Log.progress.out:md5,b2bd061d6cbaaf3d6d3b1fed547f69b8" + ] + ], + "4": [ + [ + { + "id": "test", + "single_end": false + }, + "test.Aligned.sortedByCoord.out.bam:md5,b9ee1c607e07323bc1652ef3babb543f" + ] + ], + "5": [ + + ], + "6": [ + + ], + "7": [ + [ + { + "id": "test", + "single_end": false + }, + "test.SJ.out.tab:md5,844af19ab0fc8cd9a3f75228445aca0d" + ] + ], + "8": [ + [ + { + "id": "test", + "single_end": false + }, + "test.bam:md5,d3f9bc6f3f5c44bde7dd97dfa43f1803" + ] + ], + "9": [ + [ + { + "id": "test", + "single_end": false + }, + "test.bam.bai:md5,8bd17c254a618d5ef0cc2642abc00e40" + ] + ], + "bai": [ + [ + { + "id": "test", + "single_end": false + }, + "test.bam.bai:md5,8bd17c254a618d5ef0cc2642abc00e40" + ] + ], + "bam": [ + [ + { + "id": "test", + "single_end": false + }, + "test.bam:md5,d3f9bc6f3f5c44bde7dd97dfa43f1803" + ] + ], + "bam_sorted": [ + [ + { + "id": "test", + "single_end": false + }, + "test.Aligned.sortedByCoord.out.bam:md5,b9ee1c607e07323bc1652ef3babb543f" + ] + ], + "bam_transcript": [ + + ], + "csi": [ + + ], + "fastq": [ + + ], + "flagstat": [ + [ + { + "id": "test", + "single_end": false + }, + "test.flagstat:md5,db0e25cd0b37d3030e807846c022199e" + ] + ], + "idxstats": [ + [ + { + "id": "test", + "single_end": false + }, + "test.idxstats:md5,107ca94dd426cc44db316f0d402307c5" + ] + ], + "log_final": [ + [ + { + "id": "test", + "single_end": false + }, + "test.Log.final.out:md5,95912b3deb440b85de070cd278adc0d4" + ] + ], + "log_out": [ + [ + { + "id": "test", + "single_end": false + }, + "test.Log.out:md5,f22b5b596fb89916a20f2d1b0009ac38" + ] + ], + "log_progress": [ + [ + { + "id": "test", + "single_end": false + }, + "test.Log.progress.out:md5,b2bd061d6cbaaf3d6d3b1fed547f69b8" + ] + ], + "orig_bam": [ + [ + { + "id": "test", + "single_end": false + }, + "test.Aligned.sortedByCoord.out.bam:md5,b9ee1c607e07323bc1652ef3babb543f" + ] + ], + "stats": [ + [ + { + "id": "test", + "single_end": false + }, + "test.stats:md5,99fb9569a1b39fe38d7bd7d71daa8364" + ] + ], + "tab": [ + [ + { + "id": "test", + "single_end": false + }, + "test.SJ.out.tab:md5,844af19ab0fc8cd9a3f75228445aca0d" + ] + ], + "versions": [ + "versions.yml:md5,35c1cc21d26d9d8f00e6ec87e97fb634", + "versions.yml:md5,c156b12646d8a51a4d59c42f8d833305", + "versions.yml:md5,d18a2907f84607859a6723fa33485378", + "versions.yml:md5,e902002dd55f6cca09ea62c9aa42ef0d", + "versions.yml:md5,f6b7635a2693b70fe6836c8e45ebba98", + "versions.yml:md5,f985768ea0cc88e2b533cc08538f3771" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-07T11:42:52.236378" + } +} \ No newline at end of file diff --git a/subworkflows/local/align_star/tests/nextflow.config b/subworkflows/local/align_star/tests/nextflow.config new file mode 100644 index 000000000..2c26d74d6 --- /dev/null +++ b/subworkflows/local/align_star/tests/nextflow.config @@ -0,0 +1,12 @@ +process { + withName: 'STAR_GENOMEGENERATE.*' { + ext.args = '--genomeSAindexNbases 9' + } + + withName: 'STAR_ALIGN.*' { + ext.args = '--readFilesCommand zcat --outSAMtype BAM SortedByCoordinate --outWigType bedGraph --outWigStrand Unstranded' + } +} + +// Fix chown issue for the output star folder +docker.runOptions = '--platform=linux/amd64 -u $(id -u):$(id -g)' diff --git a/subworkflows/local/align_star/tests/tags.yml b/subworkflows/local/align_star/tests/tags.yml new file mode 100644 index 000000000..8993cde0c --- /dev/null +++ b/subworkflows/local/align_star/tests/tags.yml @@ -0,0 +1,2 @@ +subworkflows/fastq_align_hisat2: + - subworkflows/nf-core/fastq_align_hisat2/** From 53a1ef517b0aff625d773be0326c97bb040e1144 Mon Sep 17 00:00:00 2001 From: maxulysse Date: Thu, 7 Mar 2024 12:09:15 +0100 Subject: [PATCH 172/634] proper tests --- .../local/align_star/tests/main.nf.test | 32 +- .../local/align_star/tests/main.nf.test.snap | 924 +++++++++--------- 2 files changed, 484 insertions(+), 472 deletions(-) diff --git a/subworkflows/local/align_star/tests/main.nf.test b/subworkflows/local/align_star/tests/main.nf.test index 21e81921b..f42f90932 100644 --- a/subworkflows/local/align_star/tests/main.nf.test +++ b/subworkflows/local/align_star/tests/main.nf.test @@ -70,7 +70,21 @@ nextflow_workflow { then { assertAll( { assert workflow.success}, - { assert snapshot(workflow.out).match()} + { assert snapshot(file(workflow.out.log_final[0][1]).name).match("without igenomes - log_final") }, + { assert snapshot(file(workflow.out.log_out[0][1]).name).match("without igenomes - log_out") }, + { assert snapshot(workflow.out.bai).match("without igenomes - bai")}, + { assert snapshot(workflow.out.bam).match("without igenomes - bam")}, + { assert snapshot(workflow.out.bam_sorted).match("without igenomes - bam_sorted")}, + { assert snapshot(workflow.out.bam_transcript).match("without igenomes - bam_transcript")}, + { assert snapshot(workflow.out.csi).match("without igenomes - csi")}, + { assert snapshot(workflow.out.log_progress).match("without igenomes - log_progress")}, + { assert snapshot(workflow.out.fastq).match("without igenomes - fastq")}, + { assert snapshot(workflow.out.flagstat).match("without igenomes - flagstat")}, + { assert snapshot(workflow.out.idxstats).match("without igenomes - idxstats")}, + { assert snapshot(workflow.out.orig_bam).match("without igenomes - orig_bam")}, + { assert snapshot(workflow.out.stats).match("without igenomes - stats")}, + { assert snapshot(workflow.out.tab).match("without igenomes - tab")}, + { assert snapshot(workflow.out.versions).match("without igenomes - versions")} ) } } @@ -123,7 +137,21 @@ nextflow_workflow { then { assertAll( { assert workflow.success}, - { assert snapshot(workflow.out).match()} + { assert snapshot(file(workflow.out.log_final[0][1]).name).match("with igenomes - log_final") }, + { assert snapshot(file(workflow.out.log_out[0][1]).name).match("with igenomes - log_out") }, + { assert snapshot(workflow.out.bai).match("with igenomes - bai")}, + { assert snapshot(workflow.out.bam).match("with igenomes - bam")}, + { assert snapshot(workflow.out.bam_sorted).match("with igenomes - bam_sorted")}, + { assert snapshot(workflow.out.bam_transcript).match("with igenomes - bam_transcript")}, + { assert snapshot(workflow.out.csi).match("with igenomes - csi")}, + { assert snapshot(workflow.out.log_progress).match("with igenomes - log_progress")}, + { assert snapshot(workflow.out.fastq).match("with igenomes - fastq")}, + { assert snapshot(workflow.out.flagstat).match("with igenomes - flagstat")}, + { assert snapshot(workflow.out.idxstats).match("with igenomes - idxstats")}, + { assert snapshot(workflow.out.orig_bam).match("with igenomes - orig_bam")}, + { assert snapshot(workflow.out.stats).match("with igenomes - stats")}, + { assert snapshot(workflow.out.tab).match("with igenomes - tab")}, + { assert snapshot(workflow.out.versions).match("with igenomes - versions")} ) } } diff --git a/subworkflows/local/align_star/tests/main.nf.test.snap b/subworkflows/local/align_star/tests/main.nf.test.snap index 5ad084e9e..e349a06e1 100644 --- a/subworkflows/local/align_star/tests/main.nf.test.snap +++ b/subworkflows/local/align_star/tests/main.nf.test.snap @@ -1,488 +1,472 @@ { - "star - with igenomes": { + "without igenomes - log_progress": { "content": [ - { - "0": [ - [ - { - "id": "test", - "single_end": false - }, - "test.Aligned.sortedByCoord.out.bam:md5,b6cec9bba6b04b9b92eddbef128bdfbb" - ] - ], - "1": [ - [ - { - "id": "test", - "single_end": false - }, - "test.Log.final.out:md5,031062ec8398f51538afa790cd564f58" - ] - ], - "10": [ - - ], - "11": [ - [ - { - "id": "test", - "single_end": false - }, - "test.stats:md5,99fb9569a1b39fe38d7bd7d71daa8364" - ] - ], - "12": [ - [ - { - "id": "test", - "single_end": false - }, - "test.flagstat:md5,db0e25cd0b37d3030e807846c022199e" - ] - ], - "13": [ - [ - { - "id": "test", - "single_end": false - }, - "test.idxstats:md5,107ca94dd426cc44db316f0d402307c5" - ] - ], - "14": [ - "versions.yml:md5,c156b12646d8a51a4d59c42f8d833305", - "versions.yml:md5,d18a2907f84607859a6723fa33485378", - "versions.yml:md5,e3b043ba840d5bddde92f0bf1c91a5fc", - "versions.yml:md5,e902002dd55f6cca09ea62c9aa42ef0d", - "versions.yml:md5,f6b7635a2693b70fe6836c8e45ebba98", - "versions.yml:md5,f985768ea0cc88e2b533cc08538f3771" - ], - "2": [ - [ - { - "id": "test", - "single_end": false - }, - "test.Log.out:md5,39a5b9da108e3fffa73b9ff80c377845" - ] - ], - "3": [ - [ - { - "id": "test", - "single_end": false - }, - "test.Log.progress.out:md5,b2bd061d6cbaaf3d6d3b1fed547f69b8" - ] - ], - "4": [ - [ - { - "id": "test", - "single_end": false - }, - "test.Aligned.sortedByCoord.out.bam:md5,b6cec9bba6b04b9b92eddbef128bdfbb" - ] - ], - "5": [ - - ], - "6": [ - - ], - "7": [ - [ - { - "id": "test", - "single_end": false - }, - "test.SJ.out.tab:md5,844af19ab0fc8cd9a3f75228445aca0d" - ] - ], - "8": [ - [ - { - "id": "test", - "single_end": false - }, - "test.bam:md5,994a3ee28ad0faf247e5b931e017f9ed" - ] - ], - "9": [ - [ - { - "id": "test", - "single_end": false - }, - "test.bam.bai:md5,8bd17c254a618d5ef0cc2642abc00e40" - ] - ], - "bai": [ - [ - { - "id": "test", - "single_end": false - }, - "test.bam.bai:md5,8bd17c254a618d5ef0cc2642abc00e40" - ] - ], - "bam": [ - [ - { - "id": "test", - "single_end": false - }, - "test.bam:md5,994a3ee28ad0faf247e5b931e017f9ed" - ] - ], - "bam_sorted": [ - [ - { - "id": "test", - "single_end": false - }, - "test.Aligned.sortedByCoord.out.bam:md5,b6cec9bba6b04b9b92eddbef128bdfbb" - ] - ], - "bam_transcript": [ - - ], - "csi": [ - - ], - "fastq": [ - - ], - "flagstat": [ - [ - { - "id": "test", - "single_end": false - }, - "test.flagstat:md5,db0e25cd0b37d3030e807846c022199e" - ] - ], - "idxstats": [ - [ - { - "id": "test", - "single_end": false - }, - "test.idxstats:md5,107ca94dd426cc44db316f0d402307c5" - ] - ], - "log_final": [ - [ - { - "id": "test", - "single_end": false - }, - "test.Log.final.out:md5,031062ec8398f51538afa790cd564f58" - ] - ], - "log_out": [ - [ - { - "id": "test", - "single_end": false - }, - "test.Log.out:md5,39a5b9da108e3fffa73b9ff80c377845" - ] - ], - "log_progress": [ - [ - { - "id": "test", - "single_end": false - }, - "test.Log.progress.out:md5,b2bd061d6cbaaf3d6d3b1fed547f69b8" - ] - ], - "orig_bam": [ - [ - { - "id": "test", - "single_end": false - }, - "test.Aligned.sortedByCoord.out.bam:md5,b6cec9bba6b04b9b92eddbef128bdfbb" - ] - ], - "stats": [ - [ - { - "id": "test", - "single_end": false - }, - "test.stats:md5,99fb9569a1b39fe38d7bd7d71daa8364" - ] - ], - "tab": [ - [ - { - "id": "test", - "single_end": false - }, - "test.SJ.out.tab:md5,844af19ab0fc8cd9a3f75228445aca0d" - ] - ], - "versions": [ - "versions.yml:md5,c156b12646d8a51a4d59c42f8d833305", - "versions.yml:md5,d18a2907f84607859a6723fa33485378", - "versions.yml:md5,e3b043ba840d5bddde92f0bf1c91a5fc", - "versions.yml:md5,e902002dd55f6cca09ea62c9aa42ef0d", - "versions.yml:md5,f6b7635a2693b70fe6836c8e45ebba98", - "versions.yml:md5,f985768ea0cc88e2b533cc08538f3771" + [ + [ + { + "id": "test", + "single_end": false + }, + "test.Log.progress.out:md5,b2bd061d6cbaaf3d6d3b1fed547f69b8" ] - } + ] ], "meta": { "nf-test": "0.8.4", "nextflow": "24.01.0" }, - "timestamp": "2024-03-07T11:43:53.204834" + "timestamp": "2024-03-07T11:59:42.476234" }, - "star - no igenomes": { + "with igenomes - stats": { "content": [ - { - "0": [ - [ - { - "id": "test", - "single_end": false - }, - "test.Aligned.sortedByCoord.out.bam:md5,b9ee1c607e07323bc1652ef3babb543f" - ] - ], - "1": [ - [ - { - "id": "test", - "single_end": false - }, - "test.Log.final.out:md5,95912b3deb440b85de070cd278adc0d4" - ] - ], - "10": [ - - ], - "11": [ - [ - { - "id": "test", - "single_end": false - }, - "test.stats:md5,99fb9569a1b39fe38d7bd7d71daa8364" - ] - ], - "12": [ - [ - { - "id": "test", - "single_end": false - }, - "test.flagstat:md5,db0e25cd0b37d3030e807846c022199e" - ] - ], - "13": [ - [ - { - "id": "test", - "single_end": false - }, - "test.idxstats:md5,107ca94dd426cc44db316f0d402307c5" - ] - ], - "14": [ - "versions.yml:md5,35c1cc21d26d9d8f00e6ec87e97fb634", - "versions.yml:md5,c156b12646d8a51a4d59c42f8d833305", - "versions.yml:md5,d18a2907f84607859a6723fa33485378", - "versions.yml:md5,e902002dd55f6cca09ea62c9aa42ef0d", - "versions.yml:md5,f6b7635a2693b70fe6836c8e45ebba98", - "versions.yml:md5,f985768ea0cc88e2b533cc08538f3771" - ], - "2": [ - [ - { - "id": "test", - "single_end": false - }, - "test.Log.out:md5,f22b5b596fb89916a20f2d1b0009ac38" - ] - ], - "3": [ - [ - { - "id": "test", - "single_end": false - }, - "test.Log.progress.out:md5,b2bd061d6cbaaf3d6d3b1fed547f69b8" - ] - ], - "4": [ - [ - { - "id": "test", - "single_end": false - }, - "test.Aligned.sortedByCoord.out.bam:md5,b9ee1c607e07323bc1652ef3babb543f" - ] - ], - "5": [ - - ], - "6": [ - - ], - "7": [ - [ - { - "id": "test", - "single_end": false - }, - "test.SJ.out.tab:md5,844af19ab0fc8cd9a3f75228445aca0d" - ] - ], - "8": [ - [ - { - "id": "test", - "single_end": false - }, - "test.bam:md5,d3f9bc6f3f5c44bde7dd97dfa43f1803" - ] - ], - "9": [ - [ - { - "id": "test", - "single_end": false - }, - "test.bam.bai:md5,8bd17c254a618d5ef0cc2642abc00e40" - ] - ], - "bai": [ - [ - { - "id": "test", - "single_end": false - }, - "test.bam.bai:md5,8bd17c254a618d5ef0cc2642abc00e40" - ] - ], - "bam": [ - [ - { - "id": "test", - "single_end": false - }, - "test.bam:md5,d3f9bc6f3f5c44bde7dd97dfa43f1803" - ] - ], - "bam_sorted": [ - [ - { - "id": "test", - "single_end": false - }, - "test.Aligned.sortedByCoord.out.bam:md5,b9ee1c607e07323bc1652ef3babb543f" - ] - ], - "bam_transcript": [ - - ], - "csi": [ - - ], - "fastq": [ - - ], - "flagstat": [ - [ - { - "id": "test", - "single_end": false - }, - "test.flagstat:md5,db0e25cd0b37d3030e807846c022199e" - ] - ], - "idxstats": [ - [ - { - "id": "test", - "single_end": false - }, - "test.idxstats:md5,107ca94dd426cc44db316f0d402307c5" - ] - ], - "log_final": [ - [ - { - "id": "test", - "single_end": false - }, - "test.Log.final.out:md5,95912b3deb440b85de070cd278adc0d4" - ] - ], - "log_out": [ - [ - { - "id": "test", - "single_end": false - }, - "test.Log.out:md5,f22b5b596fb89916a20f2d1b0009ac38" - ] - ], - "log_progress": [ - [ - { - "id": "test", - "single_end": false - }, - "test.Log.progress.out:md5,b2bd061d6cbaaf3d6d3b1fed547f69b8" - ] - ], - "orig_bam": [ - [ - { - "id": "test", - "single_end": false - }, - "test.Aligned.sortedByCoord.out.bam:md5,b9ee1c607e07323bc1652ef3babb543f" - ] - ], - "stats": [ - [ - { - "id": "test", - "single_end": false - }, - "test.stats:md5,99fb9569a1b39fe38d7bd7d71daa8364" - ] - ], - "tab": [ - [ - { - "id": "test", - "single_end": false - }, - "test.SJ.out.tab:md5,844af19ab0fc8cd9a3f75228445aca0d" - ] - ], - "versions": [ - "versions.yml:md5,35c1cc21d26d9d8f00e6ec87e97fb634", - "versions.yml:md5,c156b12646d8a51a4d59c42f8d833305", - "versions.yml:md5,d18a2907f84607859a6723fa33485378", - "versions.yml:md5,e902002dd55f6cca09ea62c9aa42ef0d", - "versions.yml:md5,f6b7635a2693b70fe6836c8e45ebba98", - "versions.yml:md5,f985768ea0cc88e2b533cc08538f3771" + [ + [ + { + "id": "test", + "single_end": false + }, + "test.stats:md5,99fb9569a1b39fe38d7bd7d71daa8364" ] - } + ] ], "meta": { "nf-test": "0.8.4", "nextflow": "24.01.0" }, - "timestamp": "2024-03-07T11:42:52.236378" + "timestamp": "2024-03-07T12:00:35.123236" + }, + "with igenomes - flagstat": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test.flagstat:md5,db0e25cd0b37d3030e807846c022199e" + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-07T12:00:35.063991" + }, + "without igenomes - flagstat": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test.flagstat:md5,db0e25cd0b37d3030e807846c022199e" + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-07T11:59:42.500434" + }, + "with igenomes - csi": { + "content": [ + [ + + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-07T12:00:35.008879" + }, + "without igenomes - stats": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test.stats:md5,99fb9569a1b39fe38d7bd7d71daa8364" + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-07T11:59:42.539089" + }, + "with igenomes - bam_sorted": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test.Aligned.sortedByCoord.out.bam:md5,b6cec9bba6b04b9b92eddbef128bdfbb" + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-07T12:00:34.968826" + }, + "without igenomes - versions": { + "content": [ + [ + "versions.yml:md5,35c1cc21d26d9d8f00e6ec87e97fb634", + "versions.yml:md5,c156b12646d8a51a4d59c42f8d833305", + "versions.yml:md5,d18a2907f84607859a6723fa33485378", + "versions.yml:md5,e902002dd55f6cca09ea62c9aa42ef0d", + "versions.yml:md5,f6b7635a2693b70fe6836c8e45ebba98", + "versions.yml:md5,f985768ea0cc88e2b533cc08538f3771" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-07T11:59:42.575417" + }, + "without igenomes - bam_transcript": { + "content": [ + [ + + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-07T11:59:42.453855" + }, + "without igenomes - idxstats": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test.idxstats:md5,107ca94dd426cc44db316f0d402307c5" + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-07T11:59:42.511992" + }, + "with igenomes - fastq": { + "content": [ + [ + + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-07T12:00:35.046516" + }, + "without igenomes - log_out": { + "content": [ + "test.Log.out" + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-07T12:07:26.212398" + }, + "without igenomes - fastq": { + "content": [ + [ + + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-07T11:59:42.488954" + }, + "without igenomes - csi": { + "content": [ + [ + + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-07T11:59:42.464985" + }, + "with igenomes - versions": { + "content": [ + [ + "versions.yml:md5,c156b12646d8a51a4d59c42f8d833305", + "versions.yml:md5,d18a2907f84607859a6723fa33485378", + "versions.yml:md5,e3b043ba840d5bddde92f0bf1c91a5fc", + "versions.yml:md5,e902002dd55f6cca09ea62c9aa42ef0d", + "versions.yml:md5,f6b7635a2693b70fe6836c8e45ebba98", + "versions.yml:md5,f985768ea0cc88e2b533cc08538f3771" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-07T12:00:35.173761" + }, + "with igenomes - log_progress": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test.Log.progress.out:md5,b2bd061d6cbaaf3d6d3b1fed547f69b8" + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-07T12:00:35.028932" + }, + "with igenomes - bam_transcript": { + "content": [ + [ + + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-07T12:00:34.989058" + }, + "with igenomes - log_out": { + "content": [ + "test.Log.out" + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-07T12:04:22.59113" + }, + "without igenomes - tab": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test.SJ.out.tab:md5,844af19ab0fc8cd9a3f75228445aca0d" + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-07T11:59:42.557135" + }, + "without igenomes - bai": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test.bam.bai:md5,8bd17c254a618d5ef0cc2642abc00e40" + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-07T11:59:42.432603" + }, + "without igenomes - orig_bam": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test.Aligned.sortedByCoord.out.bam:md5,b9ee1c607e07323bc1652ef3babb543f" + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-07T11:59:42.523368" + }, + "without igenomes - log_final": { + "content": [ + "test.Log.final.out" + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-07T12:07:26.199" + }, + "without igenomes - bam": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test.bam:md5,d3f9bc6f3f5c44bde7dd97dfa43f1803" + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-07T11:59:42.436304" + }, + "with igenomes - orig_bam": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test.Aligned.sortedByCoord.out.bam:md5,b6cec9bba6b04b9b92eddbef128bdfbb" + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-07T12:00:35.100886" + }, + "with igenomes - idxstats": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test.idxstats:md5,107ca94dd426cc44db316f0d402307c5" + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-07T12:00:35.080603" + }, + "with igenomes - tab": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test.SJ.out.tab:md5,844af19ab0fc8cd9a3f75228445aca0d" + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-07T12:00:35.148353" + }, + "with igenomes - bam": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test.bam:md5,994a3ee28ad0faf247e5b931e017f9ed" + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-07T12:00:34.95178" + }, + "without igenomes - bam_sorted": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test.Aligned.sortedByCoord.out.bam:md5,b9ee1c607e07323bc1652ef3babb543f" + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-07T11:59:42.442171" + }, + "with igenomes - bai": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test.bam.bai:md5,8bd17c254a618d5ef0cc2642abc00e40" + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-07T12:00:34.937314" + }, + "with igenomes - log_final": { + "content": [ + "test.Log.final.out" + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-07T12:04:22.57863" } } \ No newline at end of file From 982e0ba1a795960e9e0d6a4f3cd9b7631d3dbdb7 Mon Sep 17 00:00:00 2001 From: maxulysse Date: Thu, 7 Mar 2024 12:53:43 +0100 Subject: [PATCH 173/634] properly fix genome params usage --- nextflow.config | 16 +--------------- 1 file changed, 1 insertion(+), 15 deletions(-) diff --git a/nextflow.config b/nextflow.config index a2807c3a0..e8c8f5473 100644 --- a/nextflow.config +++ b/nextflow.config @@ -12,20 +12,6 @@ params { // Input options input = null - // References files - additional_fasta = null - bbsplit_index = null - fasta = null - gene_bed = null - gff = null - gtf = null - hisat2_index = null - kallisto_index = null - rsem_index = null - salmon_index = null - star_index = null - transcript_fasta = null - // References genome = null splicesites = null @@ -143,7 +129,7 @@ params { // Schema validation default options validationFailUnrecognisedParams = false validationLenientMode = false - validationSchemaIgnoreParams = 'genomes,igenomes_base' + validationSchemaIgnoreParams = 'genomes,igenomes_base,additional_fasta,bbsplit_index,fasta,gene_bed,gff,gtf,hisat2_index,kallisto_index,rsem_index,salmon_index,star_index,transcript_fasta' validationShowHiddenParams = false validate_params = true From 2501af60a217ade2609221d4ca85caea4a2c3bbe Mon Sep 17 00:00:00 2001 From: Adam Talbot <12817534+adamrtalbot@users.noreply.github.com> Date: Thu, 7 Mar 2024 11:55:18 +0000 Subject: [PATCH 174/634] Add nf-tests for deseq2_qc local module --- modules/local/deseq2_qc/tests/main.nf.test | 87 +++++++++++++++++++ .../local/deseq2_qc/tests/main.nf.test.snap | 81 +++++++++++++++++ 2 files changed, 168 insertions(+) create mode 100644 modules/local/deseq2_qc/tests/main.nf.test create mode 100644 modules/local/deseq2_qc/tests/main.nf.test.snap diff --git a/modules/local/deseq2_qc/tests/main.nf.test b/modules/local/deseq2_qc/tests/main.nf.test new file mode 100644 index 000000000..3fa938d26 --- /dev/null +++ b/modules/local/deseq2_qc/tests/main.nf.test @@ -0,0 +1,87 @@ +nextflow_process { + + name "Test Process DESEQ2_QC" + script "../main.nf" + process "DESEQ2_QC" + + test("parse count data correctly") { + + when { + process { + """ + // Taken from example salmon merged data from -profile test + def fileContents = [ + 'gene_id gene_name RAP1_IAA_30M_REP1 RAP1_UNINDUCED_REP1 RAP1_UNINDUCED_REP2 WT_REP1 WT_REP2', + 'Gfp_transgene_gene Gfp_transgene_gene 0 0 0 0 0', + 'HRA1 HRA1 3.01943228500291 9.80701185810843 9.53274413980081 5.72894534769954 5.9648842559222', + 'snR18 snR18 2.15518528497702 20.2706605484032 10.1398196728994 5.78313737408605 5.79976683844901', + 'YAL001C TFC3 56.5487189493641 70.7846010387686 113.108816589334 60.5178622417112 30.2958040068545', + 'YAL002W VPS8 36.3862437592078 32.3965311942571 80.536128672497 63.6031126291227 25.2702744059695', + 'YAL003W EFB1 598.396699649099 887.339579289614 1856.66699260635 1049.93553354283 665.403243069765', + 'YAL004W YAL004W 388.410667489585 383.296795393227 203.744142706403 202.691892385957 251.440658667147', + 'YAL005C SSA1 5647.27979655766 5715.94369645599 12575.108029018 7775.42737695585 3903.66710060582', + 'YAL007C ERP2 44.6930487868818 60.9301400694571 143.68466075721 56.9486461946981 41.7805866183878', + 'YAL008W FUN14 13.1986081960994 18.7996646072737 26.552459043029 9.4087625308538 2.82245410144267', + 'YAL009W SPO7 13.5217762310537 15.8719804576371 20.113413795 8.67724034815225 4.82436501953514', + 'YAL010C MDM10 10.9410758413598 12.0839661783069 36.2679562039924 29.7986383847897 9.94377960724503', + 'YAL011W SWC3 12.0055027348268 24.9403272396788 35.9299792122994 19.9834911886444 18.0057148106317', + 'YAL012W CYS3 242.877787996136 236.466395413312 547.58060621785 378.571834233094 226.984289418222', + 'YAL013W DEP1 7.90662508175251 18.3153373366285 35.6289306191157 20.7248252538103 10.8672258295774', + 'YAL014C SYN8 15.4361922388434 21.2042068878003 44.5485583043788 26.9652946879967 16.3840947562552', + 'YAL015C NTG1 12.841137836752 12.2213888342821 28.5292052419374 7.89073247427083 5.92421903162791', + ] + def countFile = file("${workDir}/countFile.tsv") + countFile.withWriter{ out -> + fileContents.each {out.println it} + } + + def pcaHeaderFile = file("${workDir}/deseq2_pca_header.txt") + def pcaHeaderContents = ''' + #id: 'deseq2_pca' + #section_name: 'DESeq2 PCA plot' + #description: "PCA plot between samples in the experiment. + # These values are calculated using DESeq2 + # in the deseq2_qc.r script." + #plot_type: 'scatter' + #anchor: 'deseq2_pca' + #pconfig: + # title: 'DESeq2: Principal component plot' + # xlab: PC1 + # ylab: PC2 + '''.stripIndent().trim() + pcaHeaderFile.write(pcaHeaderContents) + + def clusteringHeaderFile = file("${workDir}/deseq2_clustering_header.txt") + def clusteringHeaderContents = ''' + #id: 'deseq2_clustering' + #section_name: 'DESeq2 sample similarity' + #description: "is generated from clustering by Euclidean distances between + # DESeq2 + # rlog values for each sample + # in the deseq2_qc.r script." + #plot_type: 'heatmap' + #anchor: 'deseq2_clustering' + #pconfig: + # title: 'DESeq2: Heatmap of the sample-to-sample distances' + # xlab: True + # reverseColors: True + '''.stripIndent().trim() + clusteringHeaderFile.write(clusteringHeaderContents) + + input[0] = countFile + input[1] = pcaHeaderFile + input[2] = clusteringHeaderFile + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + +} diff --git a/modules/local/deseq2_qc/tests/main.nf.test.snap b/modules/local/deseq2_qc/tests/main.nf.test.snap new file mode 100644 index 000000000..626fb065b --- /dev/null +++ b/modules/local/deseq2_qc/tests/main.nf.test.snap @@ -0,0 +1,81 @@ +{ + "parse count data correctly": { + "content": [ + { + "0": [ + "deseq2.plots.pdf:md5,066dd6e447a41b6a361b9c9776013b17" + ], + "1": [ + "deseq2.dds.RData:md5,c7c1872e7566321d0c3f7ca56c463088" + ], + "2": [ + "deseq2.pca.vals.txt:md5,4cda8e32ec39326c1350e77b4b607aad" + ], + "3": [ + + ], + "4": [ + "deseq2.sample.dists.txt:md5,1616ce40eb58ee75640efed219c6bbec" + ], + "5": [ + + ], + "6": [ + "R_sessionInfo.log:md5,fb0da0d7ad6994ed66a8e68348b19676" + ], + "7": [ + [ + "RAP1_IAA_30M_REP1.txt:md5,ce4ff0b74aeedc3dc12a764c3504c9df", + "RAP1_UNINDUCED_REP1.txt:md5,51c9b23be5e82670aceb14f7e58dd867", + "RAP1_UNINDUCED_REP2.txt:md5,2c56106abcd9d31980f672b6e2862ee8", + "WT_REP1.txt:md5,5e3fe5f7e9b7f300be43649a8b496352", + "WT_REP2.txt:md5,2ce093f2c2e92c1bde1cd3da91ac884c", + "deseq2.size_factors.RData:md5,51c6643a0f8a9edabbff8df0165451f2" + ] + ], + "8": [ + "versions.yml:md5,60f8e4f473397a4b5d1a3dc490c93ec5" + ], + "dists_multiqc": [ + + ], + "dists_txt": [ + "deseq2.sample.dists.txt:md5,1616ce40eb58ee75640efed219c6bbec" + ], + "log": [ + "R_sessionInfo.log:md5,fb0da0d7ad6994ed66a8e68348b19676" + ], + "pca_multiqc": [ + + ], + "pca_txt": [ + "deseq2.pca.vals.txt:md5,4cda8e32ec39326c1350e77b4b607aad" + ], + "pdf": [ + "deseq2.plots.pdf:md5,066dd6e447a41b6a361b9c9776013b17" + ], + "rdata": [ + "deseq2.dds.RData:md5,c7c1872e7566321d0c3f7ca56c463088" + ], + "size_factors": [ + [ + "RAP1_IAA_30M_REP1.txt:md5,ce4ff0b74aeedc3dc12a764c3504c9df", + "RAP1_UNINDUCED_REP1.txt:md5,51c9b23be5e82670aceb14f7e58dd867", + "RAP1_UNINDUCED_REP2.txt:md5,2c56106abcd9d31980f672b6e2862ee8", + "WT_REP1.txt:md5,5e3fe5f7e9b7f300be43649a8b496352", + "WT_REP2.txt:md5,2ce093f2c2e92c1bde1cd3da91ac884c", + "deseq2.size_factors.RData:md5,51c6643a0f8a9edabbff8df0165451f2" + ] + ], + "versions": [ + "versions.yml:md5,60f8e4f473397a4b5d1a3dc490c93ec5" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-03-07T11:47:31.43621" + } +} \ No newline at end of file From ff2ddbc860a75d04d8d9ba8a4ea2c9d2fa1cdbd2 Mon Sep 17 00:00:00 2001 From: Adam Talbot <12817534+adamrtalbot@users.noreply.github.com> Date: Thu, 7 Mar 2024 12:41:13 +0000 Subject: [PATCH 175/634] deseq2_qc: Move test data into separate files --- .../local/deseq2_qc/tests/data/countFile.tsv | 18 ++++ .../tests/data/deseq2_clustering_header.txt | 12 +++ .../tests/data/deseq2_pca_header.txt | 11 +++ modules/local/deseq2_qc/tests/main.nf.test | 77 +++------------ .../local/deseq2_qc/tests/main.nf.test.snap | 98 ++++++------------- 5 files changed, 82 insertions(+), 134 deletions(-) create mode 100644 modules/local/deseq2_qc/tests/data/countFile.tsv create mode 100644 modules/local/deseq2_qc/tests/data/deseq2_clustering_header.txt create mode 100644 modules/local/deseq2_qc/tests/data/deseq2_pca_header.txt diff --git a/modules/local/deseq2_qc/tests/data/countFile.tsv b/modules/local/deseq2_qc/tests/data/countFile.tsv new file mode 100644 index 000000000..d4129d651 --- /dev/null +++ b/modules/local/deseq2_qc/tests/data/countFile.tsv @@ -0,0 +1,18 @@ +gene_id gene_name RAP1_IAA_30M_REP1 RAP1_UNINDUCED_REP1 RAP1_UNINDUCED_REP2 WT_REP1 WT_REP2 +Gfp_transgene_gene Gfp_transgene_gene 0 0 0 0 0 +HRA1 HRA1 3.01943228500291 9.80701185810843 9.53274413980081 5.72894534769954 5.9648842559222 +snR18 snR18 2.15518528497702 20.2706605484032 10.1398196728994 5.78313737408605 5.79976683844901 +YAL001C TFC3 56.5487189493641 70.7846010387686 113.108816589334 60.5178622417112 30.2958040068545 +YAL002W VPS8 36.3862437592078 32.3965311942571 80.536128672497 63.6031126291227 25.2702744059695 +YAL003W EFB1 598.396699649099 887.339579289614 1856.66699260635 1049.93553354283 665.403243069765 +YAL004W YAL004W 388.410667489585 383.296795393227 203.744142706403 202.691892385957 251.440658667147 +YAL005C SSA1 5647.27979655766 5715.94369645599 12575.108029018 7775.42737695585 3903.66710060582 +YAL007C ERP2 44.6930487868818 60.9301400694571 143.68466075721 56.9486461946981 41.7805866183878 +YAL008W FUN14 13.1986081960994 18.7996646072737 26.552459043029 9.4087625308538 2.82245410144267 +YAL009W SPO7 13.5217762310537 15.8719804576371 20.113413795 8.67724034815225 4.82436501953514 +YAL010C MDM10 10.9410758413598 12.0839661783069 36.2679562039924 29.7986383847897 9.94377960724503 +YAL011W SWC3 12.0055027348268 24.9403272396788 35.9299792122994 19.9834911886444 18.0057148106317 +YAL012W CYS3 242.877787996136 236.466395413312 547.58060621785 378.571834233094 226.984289418222 +YAL013W DEP1 7.90662508175251 18.3153373366285 35.6289306191157 20.7248252538103 10.8672258295774 +YAL014C SYN8 15.4361922388434 21.2042068878003 44.5485583043788 26.9652946879967 16.3840947562552 +YAL015C NTG1 12.841137836752 12.2213888342821 28.5292052419374 7.89073247427083 5.92421903162791 diff --git a/modules/local/deseq2_qc/tests/data/deseq2_clustering_header.txt b/modules/local/deseq2_qc/tests/data/deseq2_clustering_header.txt new file mode 100644 index 000000000..04e10efa5 --- /dev/null +++ b/modules/local/deseq2_qc/tests/data/deseq2_clustering_header.txt @@ -0,0 +1,12 @@ +#id: 'deseq2_clustering' +#section_name: 'DESeq2 sample similarity' +#description: "is generated from clustering by Euclidean distances between +# DESeq2 +# rlog values for each sample +# in the deseq2_qc.r script." +#plot_type: 'heatmap' +#anchor: 'deseq2_clustering' +#pconfig: +# title: 'DESeq2: Heatmap of the sample-to-sample distances' +# xlab: True +# reverseColors: True diff --git a/modules/local/deseq2_qc/tests/data/deseq2_pca_header.txt b/modules/local/deseq2_qc/tests/data/deseq2_pca_header.txt new file mode 100644 index 000000000..636f9374d --- /dev/null +++ b/modules/local/deseq2_qc/tests/data/deseq2_pca_header.txt @@ -0,0 +1,11 @@ +#id: 'deseq2_pca' +#section_name: 'DESeq2 PCA plot' +#description: "PCA plot between samples in the experiment. +# These values are calculated using DESeq2 +# in the deseq2_qc.r script." +#plot_type: 'scatter' +#anchor: 'deseq2_pca' +#pconfig: +# title: 'DESeq2: Principal component plot' +# xlab: PC1 +# ylab: PC2 diff --git a/modules/local/deseq2_qc/tests/main.nf.test b/modules/local/deseq2_qc/tests/main.nf.test index 3fa938d26..bdd9ff3aa 100644 --- a/modules/local/deseq2_qc/tests/main.nf.test +++ b/modules/local/deseq2_qc/tests/main.nf.test @@ -9,76 +9,25 @@ nextflow_process { when { process { """ - // Taken from example salmon merged data from -profile test - def fileContents = [ - 'gene_id gene_name RAP1_IAA_30M_REP1 RAP1_UNINDUCED_REP1 RAP1_UNINDUCED_REP2 WT_REP1 WT_REP2', - 'Gfp_transgene_gene Gfp_transgene_gene 0 0 0 0 0', - 'HRA1 HRA1 3.01943228500291 9.80701185810843 9.53274413980081 5.72894534769954 5.9648842559222', - 'snR18 snR18 2.15518528497702 20.2706605484032 10.1398196728994 5.78313737408605 5.79976683844901', - 'YAL001C TFC3 56.5487189493641 70.7846010387686 113.108816589334 60.5178622417112 30.2958040068545', - 'YAL002W VPS8 36.3862437592078 32.3965311942571 80.536128672497 63.6031126291227 25.2702744059695', - 'YAL003W EFB1 598.396699649099 887.339579289614 1856.66699260635 1049.93553354283 665.403243069765', - 'YAL004W YAL004W 388.410667489585 383.296795393227 203.744142706403 202.691892385957 251.440658667147', - 'YAL005C SSA1 5647.27979655766 5715.94369645599 12575.108029018 7775.42737695585 3903.66710060582', - 'YAL007C ERP2 44.6930487868818 60.9301400694571 143.68466075721 56.9486461946981 41.7805866183878', - 'YAL008W FUN14 13.1986081960994 18.7996646072737 26.552459043029 9.4087625308538 2.82245410144267', - 'YAL009W SPO7 13.5217762310537 15.8719804576371 20.113413795 8.67724034815225 4.82436501953514', - 'YAL010C MDM10 10.9410758413598 12.0839661783069 36.2679562039924 29.7986383847897 9.94377960724503', - 'YAL011W SWC3 12.0055027348268 24.9403272396788 35.9299792122994 19.9834911886444 18.0057148106317', - 'YAL012W CYS3 242.877787996136 236.466395413312 547.58060621785 378.571834233094 226.984289418222', - 'YAL013W DEP1 7.90662508175251 18.3153373366285 35.6289306191157 20.7248252538103 10.8672258295774', - 'YAL014C SYN8 15.4361922388434 21.2042068878003 44.5485583043788 26.9652946879967 16.3840947562552', - 'YAL015C NTG1 12.841137836752 12.2213888342821 28.5292052419374 7.89073247427083 5.92421903162791', - ] - def countFile = file("${workDir}/countFile.tsv") - countFile.withWriter{ out -> - fileContents.each {out.println it} - } - - def pcaHeaderFile = file("${workDir}/deseq2_pca_header.txt") - def pcaHeaderContents = ''' - #id: 'deseq2_pca' - #section_name: 'DESeq2 PCA plot' - #description: "PCA plot between samples in the experiment. - # These values are calculated using DESeq2 - # in the deseq2_qc.r script." - #plot_type: 'scatter' - #anchor: 'deseq2_pca' - #pconfig: - # title: 'DESeq2: Principal component plot' - # xlab: PC1 - # ylab: PC2 - '''.stripIndent().trim() - pcaHeaderFile.write(pcaHeaderContents) - - def clusteringHeaderFile = file("${workDir}/deseq2_clustering_header.txt") - def clusteringHeaderContents = ''' - #id: 'deseq2_clustering' - #section_name: 'DESeq2 sample similarity' - #description: "is generated from clustering by Euclidean distances between - # DESeq2 - # rlog values for each sample - # in the deseq2_qc.r script." - #plot_type: 'heatmap' - #anchor: 'deseq2_clustering' - #pconfig: - # title: 'DESeq2: Heatmap of the sample-to-sample distances' - # xlab: True - # reverseColors: True - '''.stripIndent().trim() - clusteringHeaderFile.write(clusteringHeaderContents) - - input[0] = countFile - input[1] = pcaHeaderFile - input[2] = clusteringHeaderFile - """ + input[0] = file("${moduleTestDir}/data/countFile.tsv") + input[1] = file("${moduleTestDir}/data/deseq2_pca_header.txt") + input[2] = file("${moduleTestDir}/data/deseq2_clustering_header.txt") + """.stripIndent().trim() } } then { assertAll( { assert process.success }, - { assert snapshot(process.out).match() } + { assert snapshot( + process.out.dists_multiqc, + process.out.dists_txt, + process.out.log, + process.out.pca_multiqc, + process.out.pca_txt, + process.out.rdata, + process.out.size_factors + ).match() } ) } diff --git a/modules/local/deseq2_qc/tests/main.nf.test.snap b/modules/local/deseq2_qc/tests/main.nf.test.snap index 626fb065b..865b8d5b8 100644 --- a/modules/local/deseq2_qc/tests/main.nf.test.snap +++ b/modules/local/deseq2_qc/tests/main.nf.test.snap @@ -1,81 +1,39 @@ { "parse count data correctly": { "content": [ - { - "0": [ - "deseq2.plots.pdf:md5,066dd6e447a41b6a361b9c9776013b17" - ], - "1": [ - "deseq2.dds.RData:md5,c7c1872e7566321d0c3f7ca56c463088" - ], - "2": [ - "deseq2.pca.vals.txt:md5,4cda8e32ec39326c1350e77b4b607aad" - ], - "3": [ - - ], - "4": [ - "deseq2.sample.dists.txt:md5,1616ce40eb58ee75640efed219c6bbec" - ], - "5": [ - - ], - "6": [ - "R_sessionInfo.log:md5,fb0da0d7ad6994ed66a8e68348b19676" - ], - "7": [ - [ - "RAP1_IAA_30M_REP1.txt:md5,ce4ff0b74aeedc3dc12a764c3504c9df", - "RAP1_UNINDUCED_REP1.txt:md5,51c9b23be5e82670aceb14f7e58dd867", - "RAP1_UNINDUCED_REP2.txt:md5,2c56106abcd9d31980f672b6e2862ee8", - "WT_REP1.txt:md5,5e3fe5f7e9b7f300be43649a8b496352", - "WT_REP2.txt:md5,2ce093f2c2e92c1bde1cd3da91ac884c", - "deseq2.size_factors.RData:md5,51c6643a0f8a9edabbff8df0165451f2" - ] - ], - "8": [ - "versions.yml:md5,60f8e4f473397a4b5d1a3dc490c93ec5" - ], - "dists_multiqc": [ - - ], - "dists_txt": [ - "deseq2.sample.dists.txt:md5,1616ce40eb58ee75640efed219c6bbec" - ], - "log": [ - "R_sessionInfo.log:md5,fb0da0d7ad6994ed66a8e68348b19676" - ], - "pca_multiqc": [ - - ], - "pca_txt": [ - "deseq2.pca.vals.txt:md5,4cda8e32ec39326c1350e77b4b607aad" - ], - "pdf": [ - "deseq2.plots.pdf:md5,066dd6e447a41b6a361b9c9776013b17" - ], - "rdata": [ - "deseq2.dds.RData:md5,c7c1872e7566321d0c3f7ca56c463088" - ], - "size_factors": [ - [ - "RAP1_IAA_30M_REP1.txt:md5,ce4ff0b74aeedc3dc12a764c3504c9df", - "RAP1_UNINDUCED_REP1.txt:md5,51c9b23be5e82670aceb14f7e58dd867", - "RAP1_UNINDUCED_REP2.txt:md5,2c56106abcd9d31980f672b6e2862ee8", - "WT_REP1.txt:md5,5e3fe5f7e9b7f300be43649a8b496352", - "WT_REP2.txt:md5,2ce093f2c2e92c1bde1cd3da91ac884c", - "deseq2.size_factors.RData:md5,51c6643a0f8a9edabbff8df0165451f2" - ] - ], - "versions": [ - "versions.yml:md5,60f8e4f473397a4b5d1a3dc490c93ec5" + [ + + ], + [ + "deseq2.sample.dists.txt:md5,1616ce40eb58ee75640efed219c6bbec" + ], + [ + "R_sessionInfo.log:md5,fb0da0d7ad6994ed66a8e68348b19676" + ], + [ + + ], + [ + "deseq2.pca.vals.txt:md5,4cda8e32ec39326c1350e77b4b607aad" + ], + [ + "deseq2.dds.RData:md5,c7c1872e7566321d0c3f7ca56c463088" + ], + [ + [ + "RAP1_IAA_30M_REP1.txt:md5,ce4ff0b74aeedc3dc12a764c3504c9df", + "RAP1_UNINDUCED_REP1.txt:md5,51c9b23be5e82670aceb14f7e58dd867", + "RAP1_UNINDUCED_REP2.txt:md5,2c56106abcd9d31980f672b6e2862ee8", + "WT_REP1.txt:md5,5e3fe5f7e9b7f300be43649a8b496352", + "WT_REP2.txt:md5,2ce093f2c2e92c1bde1cd3da91ac884c", + "deseq2.size_factors.RData:md5,51c6643a0f8a9edabbff8df0165451f2" ] - } + ] ], "meta": { "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-03-07T11:47:31.43621" + "timestamp": "2024-03-07T12:34:51.582179" } } \ No newline at end of file From cc1bf2ca221865de5142dbf8f9217f7593097526 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Thu, 7 Mar 2024 12:58:22 +0000 Subject: [PATCH 176/634] Swtich to dupradar from nf-core --- modules.json | 5 + modules/local/dupradar/main.nf | 48 --- modules/nf-core/dupradar/environment.yml | 9 + modules/nf-core/dupradar/main.nf | 45 +++ modules/nf-core/dupradar/meta.yml | 85 +++++ .../dupradar/nextflow.config | 0 modules/nf-core/dupradar/templates/dupradar.r | 194 ++++++++++ modules/nf-core/dupradar/tests/main.nf.test | 148 +++++++ .../nf-core/dupradar/tests/main.nf.test.snap | 360 ++++++++++++++++++ .../nf-core/dupradar/tests/nextflow.config | 7 + modules/nf-core/dupradar/tests/tags.yml | 2 + workflows/rnaseq/main.nf | 4 +- 12 files changed, 857 insertions(+), 50 deletions(-) delete mode 100644 modules/local/dupradar/main.nf create mode 100644 modules/nf-core/dupradar/environment.yml create mode 100644 modules/nf-core/dupradar/main.nf create mode 100644 modules/nf-core/dupradar/meta.yml rename modules/{local => nf-core}/dupradar/nextflow.config (100%) create mode 100755 modules/nf-core/dupradar/templates/dupradar.r create mode 100644 modules/nf-core/dupradar/tests/main.nf.test create mode 100644 modules/nf-core/dupradar/tests/main.nf.test.snap create mode 100644 modules/nf-core/dupradar/tests/nextflow.config create mode 100644 modules/nf-core/dupradar/tests/tags.yml diff --git a/modules.json b/modules.json index b7a1250d8..4f22e32b8 100644 --- a/modules.json +++ b/modules.json @@ -35,6 +35,11 @@ "git_sha": "ec155021a9104441bf6a9bae3b55d1b5b0bfdb3a", "installed_by": ["modules"] }, + "dupradar": { + "branch": "dupradar", + "git_sha": "a9e8634e277e6fc381ffa1430717db5c54d9776e", + "installed_by": ["modules"] + }, "fastp": { "branch": "master", "git_sha": "003920c7f9a8ae19b69a97171922880220bedf56", diff --git a/modules/local/dupradar/main.nf b/modules/local/dupradar/main.nf deleted file mode 100644 index 9f9152d1e..000000000 --- a/modules/local/dupradar/main.nf +++ /dev/null @@ -1,48 +0,0 @@ -process DUPRADAR { - tag "$meta.id" - label 'process_long' - - conda "bioconda::bioconductor-dupradar=1.28.0" - container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/bioconductor-dupradar:1.28.0--r42hdfd78af_0' : - 'biocontainers/bioconductor-dupradar:1.28.0--r42hdfd78af_0' }" - - input: - tuple val(meta), path(bam) - path gtf - - output: - tuple val(meta), path("*.pdf") , emit: pdf - tuple val(meta), path("*.txt") , emit: txt - tuple val(meta), path("*_mqc.txt"), emit: multiqc - path "versions.yml" , emit: versions - - when: - task.ext.when == null || task.ext.when - - script: // This script is bundled with the pipeline, in nf-core/rnaseq/bin/ - def prefix = task.ext.prefix ?: "${meta.id}" - - def strandedness = 0 - if (meta.strandedness == 'forward') { - strandedness = 1 - } else if (meta.strandedness == 'reverse') { - strandedness = 2 - } - def paired_end = meta.single_end ? 'single' : 'paired' - """ - dupradar.r \\ - $bam \\ - $prefix \\ - $gtf \\ - $strandedness \\ - $paired_end \\ - $task.cpus - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - r-base: \$(echo \$(R --version 2>&1) | sed 's/^.*R version //; s/ .*\$//') - bioconductor-dupradar: \$(Rscript -e "library(dupRadar); cat(as.character(packageVersion('dupRadar')))") - END_VERSIONS - """ -} diff --git a/modules/nf-core/dupradar/environment.yml b/modules/nf-core/dupradar/environment.yml new file mode 100644 index 000000000..58b2bf11d --- /dev/null +++ b/modules/nf-core/dupradar/environment.yml @@ -0,0 +1,9 @@ +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json +name: "dupradar" +channels: + - conda-forge + - bioconda + - defaults +dependencies: + - "bioconda::bioconductor-dupradar=1.32.0" diff --git a/modules/nf-core/dupradar/main.nf b/modules/nf-core/dupradar/main.nf new file mode 100644 index 000000000..9e7157faf --- /dev/null +++ b/modules/nf-core/dupradar/main.nf @@ -0,0 +1,45 @@ +process DUPRADAR { + tag "$meta.id" + label 'process_long' + + conda "${moduleDir}/environment.yml" + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/bioconductor-dupradar:1.32.0--r43hdfd78af_0' : + 'biocontainers/bioconductor-dupradar:1.32.0--r43hdfd78af_0' }" + + input: + tuple val(meta), path(bam) + tuple val(meta2), path(gtf) + + output: + tuple val(meta), path("*_duprateExpDens.pdf") , emit: scatter2d + tuple val(meta), path("*_duprateExpBoxplot.pdf"), emit: boxplot + tuple val(meta), path("*_expressionHist.pdf") , emit: hist + tuple val(meta), path("*_dupMatrix.txt") , emit: dupmatrix + tuple val(meta), path("*_intercept_slope.txt") , emit: intercept_slope + tuple val(meta), path("*_mqc.txt") , emit: multiqc + tuple val(meta), path("*.R_sessionInfo.log") , emit: session_info + path "versions.yml" , emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + template 'dupradar.r' + + stub: + """ + touch ${meta.id}_duprateExpDens.pdf + touch ${meta.id}_duprateExpBoxplot.pdf + touch ${meta.id}_expressionHist.pdf + touch ${meta.id}_dupMatrix.txt + touch ${meta.id}_intercept_slope.txt + touch ${meta.id}_mqc.txt + touch ${meta.id}.R_sessionInfo.log + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + r: \$( R --version | sed '1!d; s/.*version //; s/ .*//' ) + END_VERSIONS + """ +} diff --git a/modules/nf-core/dupradar/meta.yml b/modules/nf-core/dupradar/meta.yml new file mode 100644 index 000000000..95960ae98 --- /dev/null +++ b/modules/nf-core/dupradar/meta.yml @@ -0,0 +1,85 @@ +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/meta-schema.json +name: "dupradar" +description: Assessment of duplication rates in RNA-Seq datasets +keywords: + - rnaseq + - duplication + - genomics +tools: + - "dupradar": + description: "Assessment of duplication rates in RNA-Seq datasets" + homepage: "https://bioconductor.org/packages/release/bioc/html/dupRadar.html" + documentation: "https://bioconductor.org/packages/release/bioc/vignettes/dupRadar/inst/doc/dupRadar.html" + tool_dev_url: "https://github.com/ssayols/dupRadar" + doi: "10.1186/s12859-016-1276-2" + licence: ["GPL v3"] + +input: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - bam: + type: file + description: BAM/SAM file containing read alignments + pattern: "*.{bam}" + - meta2: + type: map + description: | + Groovy Map containing reference information + e.g. [ id:'human' ] + - gtf: + type: file + description: Genomic features annotation in GTF or SAF + pattern: "*.{gtf}" + +output: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1', single_end:false ]` + - scatter2d: + type: file + description: PDF duplication rate against total read count plot + pattern: "*_duprateExpDens.pdf" + - boxplot: + type: file + description: | + PDF duplication rate ~ total reads per kilobase (RPK) boxplot + pattern: "*_duprateExpBoxplot.pdf" + - hist: + type: file + description: | + PDF expression histogram + pattern: "*.pdf" + - dupmatrix: + type: file + description: | + Text file containing tags falling on the features described in the GTF + file + pattern: "*_dupMatrix.txt" + - intercept_slope: + type: file + description: | + Text file containing intercept and slope from dupRadar modelling + pattern: "*_intercept_slope.txt" + - multiqc: + type: file + description: | + dupRadar files for passing to MultiQC + pattern: "*_multiqc.txt" + - session_info: + type: file + description: dump of R SessionInfo + pattern: "*.log" + - versions: + type: file + description: File containing software versions + pattern: "versions.yml" +authors: + - "@pinin4fjords" +maintainers: + - "@pinin4fjords" diff --git a/modules/local/dupradar/nextflow.config b/modules/nf-core/dupradar/nextflow.config similarity index 100% rename from modules/local/dupradar/nextflow.config rename to modules/nf-core/dupradar/nextflow.config diff --git a/modules/nf-core/dupradar/templates/dupradar.r b/modules/nf-core/dupradar/templates/dupradar.r new file mode 100755 index 000000000..ec20cb851 --- /dev/null +++ b/modules/nf-core/dupradar/templates/dupradar.r @@ -0,0 +1,194 @@ +#!/usr/bin/env Rscript + +# Written by Phil Ewels and released under the MIT license. +# Ported to nf-core/modules with template by Jonathan Manning + +#' Parse out options from a string without recourse to optparse +#' +#' @param x Long-form argument list like --opt1 val1 --opt2 val2 +#' +#' @return named list of options and values similar to optparse + +parse_args <- function(x){ + args_list <- unlist(strsplit(x, ' ?--')[[1]])[-1] + args_vals <- lapply(args_list, function(x) scan(text=x, what='character', quiet = TRUE)) + + # Ensure the option vectors are length 2 (key/ value) to catch empty ones + args_vals <- lapply(args_vals, function(z){ length(z) <- 2; z}) + + parsed_args <- structure(lapply(args_vals, function(x) x[2]), names = lapply(args_vals, function(x) x[1])) + parsed_args[! is.na(parsed_args)] +} + +################################################ +################################################ +## Pull in module inputs ## +################################################ +################################################ + +input_bam <- '$bam' +output_prefix = ifelse('$task.ext.prefix' == 'null', '$meta.id', '$task.ext.prefix') +annotation_gtf <- '$gtf' +threads <- $task.cpus +args_opt <- parse_args('$task.ext.args') +feature_type <- ifelse('feature_type' %in% names(args_opt), args_opt[['feature_type']], 'exon') + +stranded <- 0 +if ('${meta.strandedness}' == 'forward') { + stranded <- 1 +} else if ('${meta.strandedness}' == 'reverse') { + stranded <- 2 +} + +paired_end <- TRUE +if ('${meta.single_end}' == 'true'){ + paired_end <- FALSE +} + +# Debug messages (stderr) +message("Input bam : ", input_bam) +message("Input gtf : ", annotation_gtf) +message("Strandness : ", c("unstranded", "forward", "reverse")[stranded+1]) +message("paired/single : ", ifelse(paired_end, 'paired', 'single')) +message("feature type : ", ifelse(paired_end, 'paired', 'single')) +message("Nb threads : ", threads) +message("Output basename: ", output_prefix) + +# Load / install packages +library("dupRadar") +library("parallel") + +# Duplicate stats +dm <- analyzeDuprates(input_bam, annotation_gtf, stranded, paired_end, threads, GTF.featureType = feature_type, verbose = TRUE) +write.table(dm, file=paste(output_prefix, "_dupMatrix.txt", sep=""), quote=F, row.name=F, sep="\t") + +# 2D density scatter plot +pdf(paste0(output_prefix, "_duprateExpDens.pdf")) +duprateExpDensPlot(DupMat=dm) +title("Density scatter plot") +mtext(output_prefix, side=3) +dev.off() +fit <- duprateExpFit(DupMat=dm) +cat( + paste("- dupRadar Int (duprate at low read counts):", fit\$intercept), + paste("- dupRadar Sl (progression of the duplication rate):", fit\$slope), + fill=TRUE, labels=output_prefix, + file=paste0(output_prefix, "_intercept_slope.txt"), append=FALSE +) + +# Create a multiqc file dupInt +sample_name <- gsub("Aligned.sortedByCoord.out.markDups", "", output_prefix) +line="#id: DupInt +#plot_type: 'generalstats' +#pconfig: +# dupRadar_intercept: +# title: 'dupInt' +# namespace: 'DupRadar' +# description: 'Intercept value from DupRadar' +# max: 100 +# min: 0 +# scale: 'RdYlGn-rev' +# format: '{:.2f}%' +Sample dupRadar_intercept" + +write(line,file=paste0(output_prefix, "_dup_intercept_mqc.txt"),append=TRUE) +write(paste(sample_name, fit\$intercept),file=paste0(output_prefix, "_dup_intercept_mqc.txt"),append=TRUE) + +# Get numbers from dupRadar GLM +curve_x <- sort(log10(dm\$RPK)) +curve_y = 100*predict(fit\$glm, data.frame(x=curve_x), type="response") +# Remove all of the infinite values +infs = which(curve_x %in% c(-Inf,Inf)) +curve_x = curve_x[-infs] +curve_y = curve_y[-infs] +# Reduce number of data points +curve_x <- curve_x[seq(1, length(curve_x), 10)] +curve_y <- curve_y[seq(1, length(curve_y), 10)] +# Convert x values back to real counts +curve_x = 10^curve_x +# Write to file +line="#id: dupradar +#plot_type: 'linegraph' +#section_name: 'DupRadar' +#section_href: 'bioconductor.org/packages/release/bioc/html/dupRadar.html' +#description: \"provides duplication rate quality control for RNA-Seq datasets. Highly expressed genes can be expected to have a lot of duplicate reads, but high numbers of duplicates at low read counts can indicate low library complexity with technical duplication. +# This plot shows the general linear models - a summary of the gene duplication distributions. \" +#pconfig: +# title: 'DupRadar General Linear Model' +# xLog: True +# xlab: 'expression (reads/kbp)' +# ylab: '% duplicate reads' +# ymax: 100 +# ymin: 0 +# tt_label: '{point.x:.1f} reads/kbp: {point.y:,.2f}% duplicates' +# xPlotLines: +# - color: 'green' +# dashStyle: 'LongDash' +# label: +# style: {color: 'green'} +# text: '0.5 RPKM' +# verticalAlign: 'bottom' +# y: -65 +# value: 0.5 +# width: 1 +# - color: 'red' +# dashStyle: 'LongDash' +# label: +# style: {color: 'red'} +# text: '1 read/bp' +# verticalAlign: 'bottom' +# y: -65 +# value: 1000 +# width: 1" + +write(line,file=paste0(output_prefix, "_duprateExpDensCurve_mqc.txt"),append=TRUE) +write.table( + cbind(curve_x, curve_y), + file=paste0(output_prefix, "_duprateExpDensCurve_mqc.txt"), + quote=FALSE, row.names=FALSE, col.names=FALSE, append=TRUE, +) + +# Distribution of expression box plot +pdf(paste0(output_prefix, "_duprateExpBoxplot.pdf")) +duprateExpBoxplot(DupMat=dm) +title("Percent Duplication by Expression") +mtext(output_prefix, side=3) +dev.off() + +# Distribution of RPK values per gene +pdf(paste0(output_prefix, "_expressionHist.pdf")) +expressionHist(DupMat=dm) +title("Distribution of RPK values per gene") +mtext(output_prefix, side=3) +dev.off() + +################################################ +################################################ +## R SESSION INFO ## +################################################ +################################################ + +sink(paste(output_prefix, "R_sessionInfo.log", sep = '.')) +print(sessionInfo()) +sink() + +################################################ +################################################ +## VERSIONS FILE ## +################################################ +################################################ + +r.version <- strsplit(version[['version.string']], ' ')[[1]][3] +dupradar.version <- as.character(packageVersion('dupRadar')) + +writeLines( + c( + '"${task.process}":', + paste(' bioconductor-dupradar:', dupradar.version) + ), +'versions.yml') + +################################################ +################################################ +################################################ +################################################ diff --git a/modules/nf-core/dupradar/tests/main.nf.test b/modules/nf-core/dupradar/tests/main.nf.test new file mode 100644 index 000000000..f7f0933c8 --- /dev/null +++ b/modules/nf-core/dupradar/tests/main.nf.test @@ -0,0 +1,148 @@ +nextflow_process { + + name "Test Process DUPRADAR" + script "../main.nf" + process "DUPRADAR" + + tag "modules" + tag "modules_nfcore" + tag "dupradar" + + test("sarscov2 - bam - single_end") { + + config './nextflow.config' + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:true, strandedness:'forward' ], // meta map + file(params.modules_testdata_base_path + "genomics/sarscov2/illumina/bam/test.single_end.bam", checkIfExists: true) + ] + input[1] = [ + [ id:'sarscov2' ], // meta map + file(params.modules_testdata_base_path + "genomics/sarscov2/genome/genome.gtf", checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(file(process.out.scatter2d[0][1]).name).match('scatter_single_end') }, + { assert snapshot(file(process.out.boxplot[0][1]).name).match('boxplot_single_end') }, + { assert snapshot(file(process.out.hist[0][1]).name).match('hist_single_end') }, + { assert snapshot(process.out.dupmatrix).match('dupmatrix_single_end') }, + { assert snapshot(process.out.intercept_slopt).match('intercept_slope_single_end') }, + { assert snapshot(process.out.multiqc).match('multiqc_single_end') }, + { assert snapshot(process.out.versions).match('versions_single_end') } + ) + } + + } + + test("sarscov2 - bam - single_end - stub") { + + config './nextflow.config' + + options '-stub' + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:true, strandedness:'forward' ], // meta map + file(params.modules_testdata_base_path + "genomics/sarscov2/illumina/bam/test.single_end.bam", checkIfExists: true) + ] + input[1] = [ + [ id:'sarscov2' ], // meta map + file(params.modules_testdata_base_path + "genomics/sarscov2/genome/genome.gtf", checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(file(process.out.scatter2d[0][1]).name).match('scatter_single_end_stub') }, + { assert snapshot(file(process.out.boxplot[0][1]).name).match('boxplot_single_end_stub') }, + { assert snapshot(file(process.out.hist[0][1]).name).match('hist_single_end_stub') }, + { assert snapshot(process.out.dupmatrix).match('dupmatrix_single_end_stub') }, + { assert snapshot(process.out.intercept_slopt).match('intercept_slope_single_end_stub') }, + { assert snapshot(process.out.multiqc).match('multiqc_single_end_stub') }, + { assert snapshot(process.out.versions).match('versions_single_end_stub') } + ) + } + + } + + test("sarscov2 - bam - paired_end") { + + config './nextflow.config' + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false, strandedness:'forward' ], // meta map + file(params.modules_testdata_base_path + "genomics/sarscov2/illumina/bam/test.paired_end.bam", checkIfExists: true) + ] + input[1] = [ + [ id:'sarscov2' ], // meta map + file(params.modules_testdata_base_path + "genomics/sarscov2/genome/genome.gtf", checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(file(process.out.scatter2d[0][1]).name).match('scatter_paired_end') }, + { assert snapshot(file(process.out.boxplot[0][1]).name).match('boxplot_paired_end') }, + { assert snapshot(file(process.out.hist[0][1]).name).match('hist_paired_end') }, + { assert snapshot(process.out.dupmatrix).match('dupmatrix_paired_end') }, + { assert snapshot(process.out.intercept_slopt).match('intercept_slope_paired_end') }, + { assert snapshot(process.out.multiqc).match('multiqc_paired_end') }, + { assert snapshot(process.out.versions).match('versions_paired_end') } + ) + } + } + + test("sarscov2 - bam - paired_end - stub") { + + config './nextflow.config' + + options '-stub' + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false, strandedness:'forward' ], // meta map + file(params.modules_testdata_base_path + "genomics/sarscov2/illumina/bam/test.paired_end.bam", checkIfExists: true) + ] + input[1] = [ + [ id:'sarscov2' ], // meta map + file(params.modules_testdata_base_path + "genomics/sarscov2/genome/genome.gtf", checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(file(process.out.scatter2d[0][1]).name).match('scatter_paired_end_stub') }, + { assert snapshot(file(process.out.boxplot[0][1]).name).match('boxplot_paired_end_stub') }, + { assert snapshot(file(process.out.hist[0][1]).name).match('hist_paired_end_stub') }, + { assert snapshot(process.out.dupmatrix).match('dupmatrix_paired_end_stub') }, + { assert snapshot(process.out.intercept_slopt).match('intercept_slope_paired_end_stub') }, + { assert snapshot(process.out.multiqc).match('multiqc_paired_end_stub') }, + { assert snapshot(process.out.versions).match('versions_paired_end_stub') } + ) + } + } +} diff --git a/modules/nf-core/dupradar/tests/main.nf.test.snap b/modules/nf-core/dupradar/tests/main.nf.test.snap new file mode 100644 index 000000000..91d146f79 --- /dev/null +++ b/modules/nf-core/dupradar/tests/main.nf.test.snap @@ -0,0 +1,360 @@ +{ + "boxplot_single_end": { + "content": [ + "test_duprateExpBoxplot.pdf" + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-03-07T12:49:21.922039" + }, + "multiqc_single_end_stub": { + "content": [ + [ + [ + { + "id": "test", + "single_end": true, + "strandedness": "forward" + }, + "test_mqc.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-03-07T12:49:31.357222" + }, + "versions_paired_end_stub": { + "content": [ + [ + "versions.yml:md5,f952f507e96ca240a0001d474b78482c" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-03-07T12:49:51.574571" + }, + "multiqc_paired_end": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false, + "strandedness": "forward" + }, + [ + "test_dup_intercept_mqc.txt:md5,d69369924aeb9695b0e97e755e0d9ea3", + "test_duprateExpDensCurve_mqc.txt:md5,f4a50dc09de81219ed4449c11153ba6e" + ] + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-03-07T12:49:42.461093" + }, + "boxplot_paired_end_stub": { + "content": [ + "test_duprateExpBoxplot.pdf" + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-03-07T12:49:51.559905" + }, + "scatter_single_end": { + "content": [ + "test_duprateExpDens.pdf" + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-03-07T12:49:21.918598" + }, + "hist_single_end_stub": { + "content": [ + "test_expressionHist.pdf" + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-03-07T12:49:31.348502" + }, + "scatter_paired_end_stub": { + "content": [ + "test_duprateExpDens.pdf" + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-03-07T12:49:51.556467" + }, + "dupmatrix_single_end": { + "content": [ + [ + [ + { + "id": "test", + "single_end": true, + "strandedness": "forward" + }, + "test_dupMatrix.txt:md5,2beda4c140548a2b8c91bf6bde01ddc6" + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-03-07T12:49:21.924059" + }, + "dupmatrix_single_end_stub": { + "content": [ + [ + [ + { + "id": "test", + "single_end": true, + "strandedness": "forward" + }, + "test_dupMatrix.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-03-07T12:49:31.351859" + }, + "multiqc_single_end": { + "content": [ + [ + [ + { + "id": "test", + "single_end": true, + "strandedness": "forward" + }, + [ + "test_dup_intercept_mqc.txt:md5,7b6fb70cbede0d20ffa576a0cc0b249d", + "test_duprateExpDensCurve_mqc.txt:md5,49b44937123c14b622f346cb6156dd4f" + ] + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-03-07T12:49:21.928419" + }, + "versions_single_end": { + "content": [ + [ + "versions.yml:md5,cd524e9e74304c2930cf28e2d741d351" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-03-07T12:49:21.932714" + }, + "multiqc_paired_end_stub": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false, + "strandedness": "forward" + }, + "test_mqc.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-03-07T12:49:51.571145" + }, + "dupmatrix_paired_end_stub": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false, + "strandedness": "forward" + }, + "test_dupMatrix.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-03-07T12:49:51.565731" + }, + "boxplot_paired_end": { + "content": [ + "test_duprateExpBoxplot.pdf" + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-03-07T12:49:42.443805" + }, + "hist_paired_end": { + "content": [ + "test_expressionHist.pdf" + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-03-07T12:49:42.447054" + }, + "versions_paired_end": { + "content": [ + [ + "versions.yml:md5,cd524e9e74304c2930cf28e2d741d351" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-03-07T12:49:42.464002" + }, + "versions_single_end_stub": { + "content": [ + [ + "versions.yml:md5,f952f507e96ca240a0001d474b78482c" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-03-07T12:49:31.360295" + }, + "hist_single_end": { + "content": [ + "test_expressionHist.pdf" + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-03-07T12:49:21.923108" + }, + "boxplot_single_end_stub": { + "content": [ + "test_duprateExpBoxplot.pdf" + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-03-07T12:49:31.345725" + }, + "intercept_slope_paired_end": { + "content": null, + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-03-07T12:49:42.45859" + }, + "intercept_slope_single_end_stub": { + "content": null, + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-03-07T12:49:31.35476" + }, + "intercept_slope_paired_end_stub": { + "content": null, + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-03-07T12:49:51.568373" + }, + "hist_paired_end_stub": { + "content": [ + "test_expressionHist.pdf" + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-03-07T12:49:51.562908" + }, + "scatter_paired_end": { + "content": [ + "test_duprateExpDens.pdf" + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-03-07T12:49:42.44031" + }, + "dupmatrix_paired_end": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false, + "strandedness": "forward" + }, + "test_dupMatrix.txt:md5,5a327feaba56e5ea96a2cb7e8577e196" + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-03-07T12:49:42.456012" + }, + "intercept_slope_single_end": { + "content": null, + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-03-07T12:49:21.926193" + }, + "scatter_single_end_stub": { + "content": [ + "test_duprateExpDens.pdf" + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-03-07T12:49:31.342456" + } +} \ No newline at end of file diff --git a/modules/nf-core/dupradar/tests/nextflow.config b/modules/nf-core/dupradar/tests/nextflow.config new file mode 100644 index 000000000..1b44170a0 --- /dev/null +++ b/modules/nf-core/dupradar/tests/nextflow.config @@ -0,0 +1,7 @@ +process { + + withName: DUPRADAR { + ext.args = { "--feature_type CDS" } + } + +} diff --git a/modules/nf-core/dupradar/tests/tags.yml b/modules/nf-core/dupradar/tests/tags.yml new file mode 100644 index 000000000..255dc4ef3 --- /dev/null +++ b/modules/nf-core/dupradar/tests/tags.yml @@ -0,0 +1,2 @@ +dupradar: + - "modules/nf-core/dupradar/**" diff --git a/workflows/rnaseq/main.nf b/workflows/rnaseq/main.nf index 224597826..962b1a906 100755 --- a/workflows/rnaseq/main.nf +++ b/workflows/rnaseq/main.nf @@ -10,7 +10,6 @@ include { DESEQ2_QC as DESEQ2_QC_STAR_SALMON } from '../../modules/local/deseq2_qc' include { DESEQ2_QC as DESEQ2_QC_RSEM } from '../../modules/local/deseq2_qc' include { DESEQ2_QC as DESEQ2_QC_PSEUDO } from '../../modules/local/deseq2_qc' -include { DUPRADAR } from '../../modules/local/dupradar' include { MULTIQC_CUSTOM_BIOTYPE } from '../../modules/local/multiqc_custom_biotype' // @@ -41,6 +40,7 @@ include { CAT_FASTQ } from '../../mod include { BEDTOOLS_GENOMECOV as BEDTOOLS_GENOMECOV_FW } from '../../modules/nf-core/bedtools/genomecov' include { BEDTOOLS_GENOMECOV as BEDTOOLS_GENOMECOV_REV } from '../../modules/nf-core/bedtools/genomecov' include { BBMAP_BBSPLIT } from '../../modules/nf-core/bbmap/bbsplit' +include { DUPRADAR } from '../../modules/nf-core/dupradar' include { SAMTOOLS_SORT } from '../../modules/nf-core/samtools/sort' include { PRESEQ_LCEXTRAP } from '../../modules/nf-core/preseq/lcextrap' include { QUALIMAP_RNASEQ } from '../../modules/nf-core/qualimap/rnaseq' @@ -685,7 +685,7 @@ workflow RNASEQ { if (!params.skip_dupradar) { DUPRADAR ( ch_genome_bam, - ch_gtf + ch_gtf.map { [ [:], it ] } ) ch_multiqc_files = ch_multiqc_files.mix(DUPRADAR.out.multiqc.collect{it[1]}) ch_versions = ch_versions.mix(DUPRADAR.out.versions.first()) From 45942fb0112169ddca05bf0d150429364a4b2845 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Thu, 7 Mar 2024 13:11:56 +0000 Subject: [PATCH 177/634] Fix config import --- workflows/rnaseq/nextflow.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/workflows/rnaseq/nextflow.config b/workflows/rnaseq/nextflow.config index 5ec9c97b9..8e06b8211 100644 --- a/workflows/rnaseq/nextflow.config +++ b/workflows/rnaseq/nextflow.config @@ -1,8 +1,8 @@ -includeConfig "../../modules/local/dupradar/nextflow.config" includeConfig "../../modules/local/multiqc_custom_biotype/nextflow.config" includeConfig "../../modules/nf-core/bbmap/bbsplit/nextflow.config" includeConfig "../../modules/nf-core/bedtools/genomecov/nextflow.config" includeConfig "../../modules/nf-core/cat/fastq/nextflow.config" +includeConfig "../../modules/nf-core/dupradar/nextflow.config" includeConfig "../../modules/nf-core/multiqc/nextflow.config" includeConfig "../../modules/nf-core/preseq/lcextrap/nextflow.config" includeConfig "../../modules/nf-core/qualimap/rnaseq/nextflow.config" From 7bd2ba85cf9ea9d425d04c16f7c5acbed522bfdd Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Thu, 7 Mar 2024 13:25:34 +0000 Subject: [PATCH 178/634] Update changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index a244978c2..5639175b4 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 - [PR #1229](https://github.com/nf-core/rnaseq/pull/1229) - Template update for nf-core/tools v2.13.1 - [PR #1231](https://github.com/nf-core/rnaseq/pull/1231) - Add sortmerna index possibilities - [PR #1234](https://github.com/nf-core/rnaseq/pull/1234) - Switch to genomecov from nf-core +- [PR #1242](https://github.com/nf-core/rnaseq/pull/1234) - Switch to dupradar from nf-core ### Parameters From 36e85ae0a3d2c75c73d78fd0da895f43e7dcbbe8 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Thu, 7 Mar 2024 13:25:48 +0000 Subject: [PATCH 179/634] Install module from master --- modules.json | 4 +- modules/nf-core/dupradar/main.nf | 2 +- .../nf-core/dupradar/tests/main.nf.test.snap | 60 +++++++++---------- 3 files changed, 33 insertions(+), 33 deletions(-) diff --git a/modules.json b/modules.json index 4f22e32b8..8c086c900 100644 --- a/modules.json +++ b/modules.json @@ -36,8 +36,8 @@ "installed_by": ["modules"] }, "dupradar": { - "branch": "dupradar", - "git_sha": "a9e8634e277e6fc381ffa1430717db5c54d9776e", + "branch": "master", + "git_sha": "f632a6e25b05497477920183cff33ba72ab7b6fc", "installed_by": ["modules"] }, "fastp": { diff --git a/modules/nf-core/dupradar/main.nf b/modules/nf-core/dupradar/main.nf index 9e7157faf..6ed502bbe 100644 --- a/modules/nf-core/dupradar/main.nf +++ b/modules/nf-core/dupradar/main.nf @@ -39,7 +39,7 @@ process DUPRADAR { cat <<-END_VERSIONS > versions.yml "${task.process}": - r: \$( R --version | sed '1!d; s/.*version //; s/ .*//' ) + bioconductor-dupradar: \$(Rscript -e "library(dupRadar); cat(as.character(packageVersion('dupRadar')))") END_VERSIONS """ } diff --git a/modules/nf-core/dupradar/tests/main.nf.test.snap b/modules/nf-core/dupradar/tests/main.nf.test.snap index 91d146f79..e64aa7298 100644 --- a/modules/nf-core/dupradar/tests/main.nf.test.snap +++ b/modules/nf-core/dupradar/tests/main.nf.test.snap @@ -7,7 +7,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-03-07T12:49:21.922039" + "timestamp": "2024-03-07T13:07:33.021785925" }, "multiqc_single_end_stub": { "content": [ @@ -26,19 +26,19 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-03-07T12:49:31.357222" + "timestamp": "2024-03-07T13:07:43.36647107" }, "versions_paired_end_stub": { "content": [ [ - "versions.yml:md5,f952f507e96ca240a0001d474b78482c" + "versions.yml:md5,cd524e9e74304c2930cf28e2d741d351" ] ], "meta": { "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-03-07T12:49:51.574571" + "timestamp": "2024-03-07T13:08:05.545356706" }, "multiqc_paired_end": { "content": [ @@ -60,7 +60,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-03-07T12:49:42.461093" + "timestamp": "2024-03-07T13:07:55.730550241" }, "boxplot_paired_end_stub": { "content": [ @@ -70,7 +70,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-03-07T12:49:51.559905" + "timestamp": "2024-03-07T13:08:05.512885589" }, "scatter_single_end": { "content": [ @@ -80,7 +80,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-03-07T12:49:21.918598" + "timestamp": "2024-03-07T13:07:33.010955775" }, "hist_single_end_stub": { "content": [ @@ -90,7 +90,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-03-07T12:49:31.348502" + "timestamp": "2024-03-07T13:07:43.353498911" }, "scatter_paired_end_stub": { "content": [ @@ -100,7 +100,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-03-07T12:49:51.556467" + "timestamp": "2024-03-07T13:08:05.507974569" }, "dupmatrix_single_end": { "content": [ @@ -119,7 +119,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-03-07T12:49:21.924059" + "timestamp": "2024-03-07T13:07:33.027798024" }, "dupmatrix_single_end_stub": { "content": [ @@ -138,7 +138,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-03-07T12:49:31.351859" + "timestamp": "2024-03-07T13:07:43.358373221" }, "multiqc_single_end": { "content": [ @@ -160,7 +160,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-03-07T12:49:21.928419" + "timestamp": "2024-03-07T13:07:33.036463063" }, "versions_single_end": { "content": [ @@ -172,7 +172,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-03-07T12:49:21.932714" + "timestamp": "2024-03-07T13:07:33.043006923" }, "multiqc_paired_end_stub": { "content": [ @@ -191,7 +191,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-03-07T12:49:51.571145" + "timestamp": "2024-03-07T13:08:05.537047876" }, "dupmatrix_paired_end_stub": { "content": [ @@ -210,7 +210,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-03-07T12:49:51.565731" + "timestamp": "2024-03-07T13:08:05.527609018" }, "boxplot_paired_end": { "content": [ @@ -220,7 +220,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-03-07T12:49:42.443805" + "timestamp": "2024-03-07T13:07:55.709324683" }, "hist_paired_end": { "content": [ @@ -230,7 +230,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-03-07T12:49:42.447054" + "timestamp": "2024-03-07T13:07:55.713514333" }, "versions_paired_end": { "content": [ @@ -242,19 +242,19 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-03-07T12:49:42.464002" + "timestamp": "2024-03-07T13:07:55.737814831" }, "versions_single_end_stub": { "content": [ [ - "versions.yml:md5,f952f507e96ca240a0001d474b78482c" + "versions.yml:md5,cd524e9e74304c2930cf28e2d741d351" ] ], "meta": { "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-03-07T12:49:31.360295" + "timestamp": "2024-03-07T13:07:43.372024419" }, "hist_single_end": { "content": [ @@ -264,7 +264,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-03-07T12:49:21.923108" + "timestamp": "2024-03-07T13:07:33.024192244" }, "boxplot_single_end_stub": { "content": [ @@ -274,7 +274,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-03-07T12:49:31.345725" + "timestamp": "2024-03-07T13:07:43.349385822" }, "intercept_slope_paired_end": { "content": null, @@ -282,7 +282,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-03-07T12:49:42.45859" + "timestamp": "2024-03-07T13:07:55.723431072" }, "intercept_slope_single_end_stub": { "content": null, @@ -290,7 +290,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-03-07T12:49:31.35476" + "timestamp": "2024-03-07T13:07:43.36234388" }, "intercept_slope_paired_end_stub": { "content": null, @@ -298,7 +298,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-03-07T12:49:51.568373" + "timestamp": "2024-03-07T13:08:05.532566607" }, "hist_paired_end_stub": { "content": [ @@ -308,7 +308,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-03-07T12:49:51.562908" + "timestamp": "2024-03-07T13:08:05.518776728" }, "scatter_paired_end": { "content": [ @@ -318,7 +318,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-03-07T12:49:42.44031" + "timestamp": "2024-03-07T13:07:55.703114124" }, "dupmatrix_paired_end": { "content": [ @@ -337,7 +337,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-03-07T12:49:42.456012" + "timestamp": "2024-03-07T13:07:55.717362643" }, "intercept_slope_single_end": { "content": null, @@ -345,7 +345,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-03-07T12:49:21.926193" + "timestamp": "2024-03-07T13:07:33.033103464" }, "scatter_single_end_stub": { "content": [ @@ -355,6 +355,6 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-03-07T12:49:31.342456" + "timestamp": "2024-03-07T13:07:43.344100132" } } \ No newline at end of file From af38350db88478bef3651b869d202a8eb2336601 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Thu, 7 Mar 2024 13:30:27 +0000 Subject: [PATCH 180/634] delete script from old local module --- bin/dupradar.r | 153 ------------------------------------------------- 1 file changed, 153 deletions(-) delete mode 100755 bin/dupradar.r diff --git a/bin/dupradar.r b/bin/dupradar.r deleted file mode 100755 index 00119f550..000000000 --- a/bin/dupradar.r +++ /dev/null @@ -1,153 +0,0 @@ -#!/usr/bin/env Rscript - -# Written by Phil Ewels and released under the MIT license. - -# Command line argument processing -args = commandArgs(trailingOnly=TRUE) -if (length(args) < 5) { - stop("Usage: dupRadar.r ", call.=FALSE) -} -input_bam <- args[1] -output_prefix <- args[2] -annotation_gtf <- args[3] -stranded <- as.numeric(args[4]) -paired_end <- if(args[5]=='paired') TRUE else FALSE -threads <- as.numeric(args[6]) - -bamRegex <- "(.+)\\.bam$" - -if(!(grepl(bamRegex, input_bam) && file.exists(input_bam) && (!file.info(input_bam)$isdir))) stop("First argument '' must be an existing file (not a directory) with '.bam' extension...") -if(!(file.exists(annotation_gtf) && (!file.info(annotation_gtf)$isdir))) stop("Second argument '' must be an existing file (and not a directory)...") -if(is.na(stranded) || (!(stranded %in% (0:2)))) stop("Third argument must be a numeric value in 0(unstranded)/1(forward)/2(reverse)...") -if(is.na(threads) || (threads<=0)) stop("Fifth argument must be a strictly positive numeric value...") - -# Debug messages (stderr) -message("Input bam (Arg 1): ", input_bam) -message("Input gtf (Arg 2): ", annotation_gtf) -message("Strandness (Arg 3): ", c("unstranded", "forward", "reverse")[stranded+1]) -message("paired/single (Arg 4): ", ifelse(paired_end, 'paired', 'single')) -message("Nb threads (Arg 5): ", threads) -message("R package loc. (Arg 6): ", ifelse(length(args) > 4, args[5], "Not specified")) -message("Output basename : ", output_prefix) - - -# Load / install packages -if (length(args) > 5) { .libPaths( c( args[6], .libPaths() ) ) } -if (!require("dupRadar")){ - source("http://bioconductor.org/biocLite.R") - biocLite("dupRadar", suppressUpdates=TRUE) - library("dupRadar") -} -if (!require("parallel")) { - install.packages("parallel", dependencies=TRUE, repos='http://cloud.r-project.org/') - library("parallel") -} - -# Duplicate stats -dm <- analyzeDuprates(input_bam, annotation_gtf, stranded, paired_end, threads) -write.table(dm, file=paste(output_prefix, "_dupMatrix.txt", sep=""), quote=F, row.name=F, sep="\t") - -# 2D density scatter plot -pdf(paste0(output_prefix, "_duprateExpDens.pdf")) -duprateExpDensPlot(DupMat=dm) -title("Density scatter plot") -mtext(output_prefix, side=3) -dev.off() -fit <- duprateExpFit(DupMat=dm) -cat( - paste("- dupRadar Int (duprate at low read counts):", fit$intercept), - paste("- dupRadar Sl (progression of the duplication rate):", fit$slope), - fill=TRUE, labels=output_prefix, - file=paste0(output_prefix, "_intercept_slope.txt"), append=FALSE -) - -# Create a multiqc file dupInt -sample_name <- gsub("Aligned.sortedByCoord.out.markDups", "", output_prefix) -line="#id: DupInt -#plot_type: 'generalstats' -#pconfig: -# dupRadar_intercept: -# title: 'dupInt' -# namespace: 'DupRadar' -# description: 'Intercept value from DupRadar' -# max: 100 -# min: 0 -# scale: 'RdYlGn-rev' -# format: '{:.2f}%' -Sample dupRadar_intercept" - -write(line,file=paste0(output_prefix, "_dup_intercept_mqc.txt"),append=TRUE) -write(paste(sample_name, fit$intercept),file=paste0(output_prefix, "_dup_intercept_mqc.txt"),append=TRUE) - -# Get numbers from dupRadar GLM -curve_x <- sort(log10(dm$RPK)) -curve_y = 100*predict(fit$glm, data.frame(x=curve_x), type="response") -# Remove all of the infinite values -infs = which(curve_x %in% c(-Inf,Inf)) -curve_x = curve_x[-infs] -curve_y = curve_y[-infs] -# Reduce number of data points -curve_x <- curve_x[seq(1, length(curve_x), 10)] -curve_y <- curve_y[seq(1, length(curve_y), 10)] -# Convert x values back to real counts -curve_x = 10^curve_x -# Write to file -line="#id: dupradar -#plot_type: 'linegraph' -#section_name: 'DupRadar' -#section_href: 'bioconductor.org/packages/release/bioc/html/dupRadar.html' -#description: \"provides duplication rate quality control for RNA-Seq datasets. Highly expressed genes can be expected to have a lot of duplicate reads, but high numbers of duplicates at low read counts can indicate low library complexity with technical duplication. -# This plot shows the general linear models - a summary of the gene duplication distributions. \" -#pconfig: -# title: 'DupRadar General Linear Model' -# xLog: True -# xlab: 'expression (reads/kbp)' -# ylab: '% duplicate reads' -# ymax: 100 -# ymin: 0 -# tt_label: '{point.x:.1f} reads/kbp: {point.y:,.2f}% duplicates' -# xPlotLines: -# - color: 'green' -# dashStyle: 'LongDash' -# label: -# style: {color: 'green'} -# text: '0.5 RPKM' -# verticalAlign: 'bottom' -# y: -65 -# value: 0.5 -# width: 1 -# - color: 'red' -# dashStyle: 'LongDash' -# label: -# style: {color: 'red'} -# text: '1 read/bp' -# verticalAlign: 'bottom' -# y: -65 -# value: 1000 -# width: 1" - -write(line,file=paste0(output_prefix, "_duprateExpDensCurve_mqc.txt"),append=TRUE) -write.table( - cbind(curve_x, curve_y), - file=paste0(output_prefix, "_duprateExpDensCurve_mqc.txt"), - quote=FALSE, row.names=FALSE, col.names=FALSE, append=TRUE, -) - -# Distribution of expression box plot -pdf(paste0(output_prefix, "_duprateExpBoxplot.pdf")) -duprateExpBoxplot(DupMat=dm) -title("Percent Duplication by Expression") -mtext(output_prefix, side=3) -dev.off() - -# Distribution of RPK values per gene -pdf(paste0(output_prefix, "_expressionHist.pdf")) -expressionHist(DupMat=dm) -title("Distribution of RPK values per gene") -mtext(output_prefix, side=3) -dev.off() - -# Print sessioninfo to standard out -print(output_prefix) -citation("dupRadar") -sessionInfo() From 34a509cab9c29493e236c6f8cbb19acaf71d6dad Mon Sep 17 00:00:00 2001 From: maxulysse Date: Thu, 7 Mar 2024 15:00:32 +0100 Subject: [PATCH 181/634] update CHANGELOG --- CHANGELOG.md | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a244978c2..95d0cb2ef 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,10 +19,21 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [PR #1216](https://github.com/nf-core/rnaseq/pull/1216) - Delocalise catadditionalfasta ([#1162](https://github.com/nf-core/rnaseq/issues/1162)) - [PR #1218](https://github.com/nf-core/rnaseq/pull/1218) - Template update for nf-core/tools v2.13 - [PR #1220](https://github.com/nf-core/rnaseq/pull/1220) - Initialise nf-test and add pipeline level test +- [PR #1221](https://github.com/nf-core/rnaseq/pull/1221) - Use nf-test test for all nf-core components - [PR #1226](https://github.com/nf-core/rnaseq/pull/1226) - Reuse bbsplit index and don't keep overwriting ([#1225](https://github.com/nf-core/rnaseq/issues/1225)) - [PR #1229](https://github.com/nf-core/rnaseq/pull/1229) - Template update for nf-core/tools v2.13.1 - [PR #1231](https://github.com/nf-core/rnaseq/pull/1231) - Add sortmerna index possibilities -- [PR #1234](https://github.com/nf-core/rnaseq/pull/1234) - Switch to genomecov from nf-core +- [PR #1232](https://github.com/nf-core/rnaseq/pull/1232) - Add nf-test tests to star_genomegenerate_igenomes +- [PR #1233](https://github.com/nf-core/rnaseq/pull/1233) - Add nf-test tests to star_align_igenomes +- [PR #1234](https://github.com/nf-core/rnaseq/pull/1234) - Use genomecov from nf-core/modules +- [PR #1235](https://github.com/nf-core/rnaseq/pull/1235) - Add nf-test tests to gtf_filter +- [PR #1236](https://github.com/nf-core/rnaseq/pull/1236) - Add nf-test tests to utils_nfcore_rnaseq_pipeline +- [PR #1237](https://github.com/nf-core/rnaseq/pull/1237) - Fix concurrency error in Github CI workflow +- [PR #1238](https://github.com/nf-core/rnaseq/pull/1238) - Add nf-test tests to preprocess_transcripts_fasta_gencode +- [PR #1239](https://github.com/nf-core/rnaseq/pull/1239) - Add nf-test tests to align_star +- [PR #1240](https://github.com/nf-core/rnaseq/pull/1240) - Fix reference files params usage +- [PR #1241](https://github.com/nf-core/rnaseq/pull/1241) - Add nf-test tests to deseq2_qc +- [PR #1242](https://github.com/nf-core/rnaseq/pull/1242) - Use dupradar from nf-core/modules ### Parameters From dbbc40c5805dabb1213f5cf1c5d273c67d8ac906 Mon Sep 17 00:00:00 2001 From: Adam Talbot <12817534+adamrtalbot@users.noreply.github.com> Date: Thu, 7 Mar 2024 14:20:59 +0000 Subject: [PATCH 182/634] nf-test for module MULTIQC_CUSTOM_BIOTYPE --- .../tests/data/biotypes_header.txt | 11 +++++ .../tests/data/test.featureCounts.txt | 13 ++++++ .../multiqc_custom_biotype/tests/main.nf.test | 32 +++++++++++++++ .../tests/main.nf.test.snap | 41 +++++++++++++++++++ 4 files changed, 97 insertions(+) create mode 100644 modules/local/multiqc_custom_biotype/tests/data/biotypes_header.txt create mode 100644 modules/local/multiqc_custom_biotype/tests/data/test.featureCounts.txt create mode 100644 modules/local/multiqc_custom_biotype/tests/main.nf.test create mode 100644 modules/local/multiqc_custom_biotype/tests/main.nf.test.snap diff --git a/modules/local/multiqc_custom_biotype/tests/data/biotypes_header.txt b/modules/local/multiqc_custom_biotype/tests/data/biotypes_header.txt new file mode 100644 index 000000000..dff52c0f7 --- /dev/null +++ b/modules/local/multiqc_custom_biotype/tests/data/biotypes_header.txt @@ -0,0 +1,11 @@ +# id: 'biotype_counts' +# section_name: 'Biotype Counts' +# description: "shows reads overlapping genomic features of different biotypes, +# counted by featureCounts." +# plot_type: 'bargraph' +# anchor: 'featurecounts_biotype' +# pconfig: +# id: "featurecounts_biotype_plot" +# title: "featureCounts: Biotypes" +# xlab: "# Reads" +# cpswitch_counts_label: "Number of Reads" diff --git a/modules/local/multiqc_custom_biotype/tests/data/test.featureCounts.txt b/modules/local/multiqc_custom_biotype/tests/data/test.featureCounts.txt new file mode 100644 index 000000000..03b11cb15 --- /dev/null +++ b/modules/local/multiqc_custom_biotype/tests/data/test.featureCounts.txt @@ -0,0 +1,13 @@ +# Program:featureCounts v2.0.1; Command:"featureCounts" "-t" "CDS" "-T" "2" "-a" "genome.gtf" "-s" "1" "-o" "test.featureCounts.txt" "test.single_end.bam" +Geneid Chr Start End Strand Length test.single_end.bam +orf1ab MT192765.1;MT192765.1 259;13461 13461;21545 +;+ 21287 38 +S MT192765.1 21556 25374 + 3819 4 +ORF3a MT192765.1 25386 26210 + 825 0 +E MT192765.1 26238 26462 + 225 1 +M MT192765.1 26516 27181 + 666 1 +ORF6 MT192765.1 27195 27377 + 183 0 +ORF7a MT192765.1 27387 27749 + 363 0 +ORF7b MT192765.1 27749 27877 + 129 0 +ORF8 MT192765.1 27887 28249 + 363 0 +N MT192765.1 28267 29523 + 1257 2 +ORF10 MT192765.1 29551 29664 + 114 0 diff --git a/modules/local/multiqc_custom_biotype/tests/main.nf.test b/modules/local/multiqc_custom_biotype/tests/main.nf.test new file mode 100644 index 000000000..8306e4205 --- /dev/null +++ b/modules/local/multiqc_custom_biotype/tests/main.nf.test @@ -0,0 +1,32 @@ +nextflow_process { + + name "Test Process MULTIQC_CUSTOM_BIOTYPE" + script "../main.nf" + process "MULTIQC_CUSTOM_BIOTYPE" + + test("test") { + + when { + process { + """ + input[0] = Channel.of( + [ + [ id: 'test' ], + file("${moduleTestDir}/data/test.featureCounts.txt") + ] + ) + input[1] = file("${moduleTestDir}/data/biotypes_header.txt", checkIfExists: true) + """ + } + } + + then { + assertAll( + { assert process.success}, + { assert snapshot(process.out).match()} + ) + } + + } + +} diff --git a/modules/local/multiqc_custom_biotype/tests/main.nf.test.snap b/modules/local/multiqc_custom_biotype/tests/main.nf.test.snap new file mode 100644 index 000000000..76bc03304 --- /dev/null +++ b/modules/local/multiqc_custom_biotype/tests/main.nf.test.snap @@ -0,0 +1,41 @@ +{ + "test": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + [ + "test.biotype_counts_mqc.tsv:md5,d996f27aeec64370cade26717aa22e1e", + "test.biotype_counts_rrna_mqc.tsv:md5,405217e65a76b104b00bb41f6bf10a92" + ] + ] + ], + "1": [ + "versions.yml:md5,575b3b4c8a8a6e508c8ceeca41331b6b" + ], + "tsv": [ + [ + { + "id": "test" + }, + [ + "test.biotype_counts_mqc.tsv:md5,d996f27aeec64370cade26717aa22e1e", + "test.biotype_counts_rrna_mqc.tsv:md5,405217e65a76b104b00bb41f6bf10a92" + ] + ] + ], + "versions": [ + "versions.yml:md5,575b3b4c8a8a6e508c8ceeca41331b6b" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-03-07T14:18:53.570111" + } +} \ No newline at end of file From 74129960ad144419579ecc4c1005ddbdd513a436 Mon Sep 17 00:00:00 2001 From: maxulysse Date: Thu, 7 Mar 2024 15:24:55 +0100 Subject: [PATCH 183/634] update dupradar --- tests/main.nf.test.snap | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/main.nf.test.snap b/tests/main.nf.test.snap index bf2350a18..8c31b50a1 100644 --- a/tests/main.nf.test.snap +++ b/tests/main.nf.test.snap @@ -1,7 +1,7 @@ { "software_versions": { "content": [ - "{BBMAP_BBSPLIT={bbmap=39.01}, BEDTOOLS_GENOMECOV_FW={bedtools=2.31.1}, CAT_FASTQ={cat=8.3}, CUSTOM_CATADDITIONALFASTA={python=3.9.5}, CUSTOM_GETCHROMSIZES={getchromsizes=1.16.1}, CUSTOM_TX2GENE={python=3.9.5}, DESEQ2_QC_PSEUDO={r-base=4.0.3, bioconductor-deseq2=1.28.0}, DESEQ2_QC_STAR_SALMON={r-base=4.0.3, bioconductor-deseq2=1.28.0}, DUPRADAR={r-base=4.2.1, bioconductor-dupradar=1.28.0}, FASTQC={fastqc=0.12.1}, FQ_SUBSAMPLE={fq=0.9.1 (2022-02-22)}, GTF2BED={perl=5.26.2}, GTF_FILTER={python=3.9.5}, GUNZIP_ADDITIONAL_FASTA={gunzip=1.1}, GUNZIP_GTF={gunzip=1.1}, MULTIQC_CUSTOM_BIOTYPE={python=3.9.5}, PICARD_MARKDUPLICATES={picard=3.1.1}, QUALIMAP_RNASEQ={qualimap=2.3}, RSEQC_BAMSTAT={rseqc=5.0.2}, RSEQC_INFEREXPERIMENT={rseqc=5.0.2}, RSEQC_INNERDISTANCE={rseqc=5.0.2}, RSEQC_JUNCTIONANNOTATION={rseqc=5.0.2}, RSEQC_JUNCTIONSATURATION={rseqc=5.0.2}, RSEQC_READDISTRIBUTION={rseqc=5.0.2}, RSEQC_READDUPLICATION={rseqc=5.0.2}, SALMON_QUANT={salmon=1.10.1}, SAMTOOLS_FLAGSTAT={samtools=1.19.2}, SAMTOOLS_IDXSTATS={samtools=1.19.2}, SAMTOOLS_INDEX={samtools=1.19.2}, SAMTOOLS_SORT={samtools=1.19.2}, SAMTOOLS_STATS={samtools=1.19.2}, SE_GENE={r-base=4.3.2, bioconductor-summarizedexperiment=1.32.0}, STAR_ALIGN={star=2.7.10a, samtools=1.18, gawk=5.1.0}, STAR_GENOMEGENERATE={star=2.7.10a, samtools=1.18, gawk=5.1.0}, STRINGTIE_STRINGTIE={stringtie=2.2.1}, SUBREAD_FEATURECOUNTS={subread=2.0.1}, TRIMGALORE={trimgalore=0.6.7, cutadapt=3.4}, TXIMETA_TXIMPORT={r-base=4.3.2, bioconductor-tximeta=1.20.1}, UCSC_BEDCLIP={ucsc=377}, UCSC_BEDGRAPHTOBIGWIG={ucsc=445}, UNTAR_SALMON_INDEX={untar=1.3}, Workflow={nf-core/rnaseq=v3.15.0dev}}" + "{BBMAP_BBSPLIT={bbmap=39.01}, BEDTOOLS_GENOMECOV_FW={bedtools=2.31.1}, CAT_FASTQ={cat=8.3}, CUSTOM_CATADDITIONALFASTA={python=3.9.5}, CUSTOM_GETCHROMSIZES={getchromsizes=1.16.1}, CUSTOM_TX2GENE={python=3.9.5}, DESEQ2_QC_PSEUDO={r-base=4.0.3, bioconductor-deseq2=1.28.0}, DESEQ2_QC_STAR_SALMON={r-base=4.0.3, bioconductor-deseq2=1.28.0}, DUPRADAR={bioconductor-dupradar=1.32.0}, FASTQC={fastqc=0.12.1}, FQ_SUBSAMPLE={fq=0.9.1 (2022-02-22)}, GTF2BED={perl=5.26.2}, GTF_FILTER={python=3.9.5}, GUNZIP_ADDITIONAL_FASTA={gunzip=1.1}, GUNZIP_GTF={gunzip=1.1}, MULTIQC_CUSTOM_BIOTYPE={python=3.9.5}, PICARD_MARKDUPLICATES={picard=3.1.1}, QUALIMAP_RNASEQ={qualimap=2.3}, RSEQC_BAMSTAT={rseqc=5.0.2}, RSEQC_INFEREXPERIMENT={rseqc=5.0.2}, RSEQC_INNERDISTANCE={rseqc=5.0.2}, RSEQC_JUNCTIONANNOTATION={rseqc=5.0.2}, RSEQC_JUNCTIONSATURATION={rseqc=5.0.2}, RSEQC_READDISTRIBUTION={rseqc=5.0.2}, RSEQC_READDUPLICATION={rseqc=5.0.2}, SALMON_QUANT={salmon=1.10.1}, SAMTOOLS_FLAGSTAT={samtools=1.19.2}, SAMTOOLS_IDXSTATS={samtools=1.19.2}, SAMTOOLS_INDEX={samtools=1.19.2}, SAMTOOLS_SORT={samtools=1.19.2}, SAMTOOLS_STATS={samtools=1.19.2}, SE_GENE={r-base=4.3.2, bioconductor-summarizedexperiment=1.32.0}, STAR_ALIGN={star=2.7.10a, samtools=1.18, gawk=5.1.0}, STAR_GENOMEGENERATE={star=2.7.10a, samtools=1.18, gawk=5.1.0}, STRINGTIE_STRINGTIE={stringtie=2.2.1}, SUBREAD_FEATURECOUNTS={subread=2.0.1}, TRIMGALORE={trimgalore=0.6.7, cutadapt=3.4}, TXIMETA_TXIMPORT={r-base=4.3.2, bioconductor-tximeta=1.20.1}, UCSC_BEDCLIP={ucsc=377}, UCSC_BEDGRAPHTOBIGWIG={ucsc=445}, UNTAR_SALMON_INDEX={untar=1.3}, Workflow={nf-core/rnaseq=v3.15.0dev}}" ], "meta": { "nf-test": "0.8.4", @@ -9,4 +9,4 @@ }, "timestamp": "2024-03-04T12:40:26.161319" } -} \ No newline at end of file +} From f5768088753c2b49ea066a0040cdde6eb9a1dee3 Mon Sep 17 00:00:00 2001 From: Adam Talbot <12817534+adamrtalbot@users.noreply.github.com> Date: Thu, 7 Mar 2024 14:25:23 +0000 Subject: [PATCH 184/634] Make name more informative --- modules/local/multiqc_custom_biotype/tests/main.nf.test | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/local/multiqc_custom_biotype/tests/main.nf.test b/modules/local/multiqc_custom_biotype/tests/main.nf.test index 8306e4205..c839a521e 100644 --- a/modules/local/multiqc_custom_biotype/tests/main.nf.test +++ b/modules/local/multiqc_custom_biotype/tests/main.nf.test @@ -4,7 +4,7 @@ nextflow_process { script "../main.nf" process "MULTIQC_CUSTOM_BIOTYPE" - test("test") { + test("test sarscov2 count data succesfully completes") { when { process { From 2dcf569fd762677d473cbd6218eaff571bbfc1a5 Mon Sep 17 00:00:00 2001 From: Adam Talbot <12817534+adamrtalbot@users.noreply.github.com> Date: Thu, 7 Mar 2024 14:34:48 +0000 Subject: [PATCH 185/634] Add nf-test for local subworkflow QUANTIFY_RSEM --- .../local/quantify_rsem/tests/main.nf.test | 51 ++++++++ .../quantify_rsem/tests/main.nf.test.snap | 121 ++++++++++++++++++ .../local/quantify_rsem/tests/nextflow.config | 13 ++ 3 files changed, 185 insertions(+) create mode 100644 subworkflows/local/quantify_rsem/tests/main.nf.test create mode 100644 subworkflows/local/quantify_rsem/tests/main.nf.test.snap create mode 100644 subworkflows/local/quantify_rsem/tests/nextflow.config diff --git a/subworkflows/local/quantify_rsem/tests/main.nf.test b/subworkflows/local/quantify_rsem/tests/main.nf.test new file mode 100644 index 000000000..8fc7d7823 --- /dev/null +++ b/subworkflows/local/quantify_rsem/tests/main.nf.test @@ -0,0 +1,51 @@ +nextflow_workflow { + + name "Test Workflow QUANTIFY_RSEM" + script "../main.nf" + workflow "QUANTIFY_RSEM" + config "./nextflow.config" + + tag 'RSEM_CALCULATEEXPRESSION' + tag 'RSEM_MERGE_COUNTS' + tag 'BAM_SORT_STATS_SAMTOOLS' + + test("homo_sapiens") { + + setup { + run("RSEM_PREPAREREFERENCE") { + script "../../../../modules/nf-core/rsem/preparereference/main.nf" + process { + """ + input[0] = Channel.of(file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true)) + input[1] = Channel.of(file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.gtf', checkIfExists: true)) + """ + } + } + } + + when { + workflow { + """ + input[0] = Channel.of([ + [ id:'test', strandedness: 'forward' ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/fastq/test_rnaseq_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/fastq/test_rnaseq_2.fastq.gz', checkIfExists: true) + ] + ]) + input[1] = RSEM_PREPAREREFERENCE.out.index + input[2] = Channel.of(file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true)) + """ + } + } + + then { + assertAll( + { assert workflow.success}, + { assert snapshot(workflow.out).match()} + ) + } + + } + +} diff --git a/subworkflows/local/quantify_rsem/tests/main.nf.test.snap b/subworkflows/local/quantify_rsem/tests/main.nf.test.snap new file mode 100644 index 000000000..10f9b3086 --- /dev/null +++ b/subworkflows/local/quantify_rsem/tests/main.nf.test.snap @@ -0,0 +1,121 @@ +{ + "sarscov2": { + "content": [ + { + "0": [ + + ], + "1": [ + + ], + "10": [ + + ], + "11": [ + + ], + "12": [ + + ], + "13": [ + + ], + "14": [ + + ], + "15": [ + + ], + "16": [ + + ], + "17": [ + + ], + "2": [ + + ], + "3": [ + + ], + "4": [ + + ], + "5": [ + + ], + "6": [ + + ], + "7": [ + + ], + "8": [ + + ], + "9": [ + + ], + "bai": [ + + ], + "bam": [ + + ], + "bam_genome": [ + + ], + "bam_star": [ + + ], + "bam_transcript": [ + + ], + "counts_gene": [ + + ], + "counts_transcript": [ + + ], + "csi": [ + + ], + "flagstat": [ + + ], + "idxstats": [ + + ], + "logs": [ + + ], + "merged_counts_gene": [ + + ], + "merged_counts_transcript": [ + + ], + "merged_tpm_gene": [ + + ], + "merged_tpm_transcript": [ + + ], + "stat": [ + + ], + "stats": [ + + ], + "versions": [ + + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-03-07T14:32:58.87423" + } +} \ No newline at end of file diff --git a/subworkflows/local/quantify_rsem/tests/nextflow.config b/subworkflows/local/quantify_rsem/tests/nextflow.config new file mode 100644 index 000000000..b17a1cf2e --- /dev/null +++ b/subworkflows/local/quantify_rsem/tests/nextflow.config @@ -0,0 +1,13 @@ +process { + + publishDir = { "${params.outdir}/${task.process.tokenize(':')[-1].tokenize('_')[0].toLowerCase()}" } + + withName: RSEM_PREPAREREFERENCE { + ext.args = '--star' + } + + withName: RSEM_CALCULATEEXPRESSION { + ext.args = '--star --star-gzipped-read-file' + } + +} From 4d7e1073b324f9f70d786d7d0b74dd8a909091e0 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Thu, 7 Mar 2024 15:02:13 +0000 Subject: [PATCH 186/634] Add gtf2bed tests --- modules/local/gtf2bed/tests/main.nf.test | 31 +++++++++++++++++++ modules/local/gtf2bed/tests/main.nf.test.snap | 25 +++++++++++++++ modules/local/gtf2bed/tests/tags.yml | 2 ++ 3 files changed, 58 insertions(+) create mode 100644 modules/local/gtf2bed/tests/main.nf.test create mode 100644 modules/local/gtf2bed/tests/main.nf.test.snap create mode 100644 modules/local/gtf2bed/tests/tags.yml diff --git a/modules/local/gtf2bed/tests/main.nf.test b/modules/local/gtf2bed/tests/main.nf.test new file mode 100644 index 000000000..db4dac99f --- /dev/null +++ b/modules/local/gtf2bed/tests/main.nf.test @@ -0,0 +1,31 @@ +nextflow_process { + + name "Test Process GTF2BED" + script "../main.nf" + process "GTF2BED" + + tag "modules" + tag "modules_local" + tag "gtf2bed" + + test("sarscov2 - bam") { + + when { + process { + """ + input[0] = file(params.modules_testdata_base_path + "genomics/sarscov2/genome/genome.gtf", checkIfExists: true) + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + //TODO nf-core: Add all required assertions to verify the test output. + // See https://nf-co.re/docs/contributing/tutorials/nf-test_assertions for more information and examples. + ) + } + + } +} diff --git a/modules/local/gtf2bed/tests/main.nf.test.snap b/modules/local/gtf2bed/tests/main.nf.test.snap new file mode 100644 index 000000000..277ebdc23 --- /dev/null +++ b/modules/local/gtf2bed/tests/main.nf.test.snap @@ -0,0 +1,25 @@ +{ + "sarscov2 - bam": { + "content": [ + { + "0": [ + "genome.bed:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "1": [ + "versions.yml:md5,d04d815c224b980b6f3818d4b2fd4fe3" + ], + "bed": [ + "genome.bed:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "versions": [ + "versions.yml:md5,d04d815c224b980b6f3818d4b2fd4fe3" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-03-07T15:00:44.458214" + } +} \ No newline at end of file diff --git a/modules/local/gtf2bed/tests/tags.yml b/modules/local/gtf2bed/tests/tags.yml new file mode 100644 index 000000000..dfa350d75 --- /dev/null +++ b/modules/local/gtf2bed/tests/tags.yml @@ -0,0 +1,2 @@ +custom/gtf2bed: + - "modules/nf-core/custom/gtf2bed/**" From 8e2c89e69b6fee9a9a10af68824eab4d8c41b79b Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Thu, 7 Mar 2024 15:09:55 +0000 Subject: [PATCH 187/634] last tweaks --- CHANGELOG.md | 1 + modules/local/gtf2bed/tests/main.nf.test | 2 -- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 95d0cb2ef..4701d6876 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -34,6 +34,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [PR #1240](https://github.com/nf-core/rnaseq/pull/1240) - Fix reference files params usage - [PR #1241](https://github.com/nf-core/rnaseq/pull/1241) - Add nf-test tests to deseq2_qc - [PR #1242](https://github.com/nf-core/rnaseq/pull/1242) - Use dupradar from nf-core/modules +- [PR #1244](https://github.com/nf-core/rnaseq/pull/1244) - Add gtf2bed tests ### Parameters diff --git a/modules/local/gtf2bed/tests/main.nf.test b/modules/local/gtf2bed/tests/main.nf.test index db4dac99f..cfa9c48b0 100644 --- a/modules/local/gtf2bed/tests/main.nf.test +++ b/modules/local/gtf2bed/tests/main.nf.test @@ -22,8 +22,6 @@ nextflow_process { assertAll( { assert process.success }, { assert snapshot(process.out).match() } - //TODO nf-core: Add all required assertions to verify the test output. - // See https://nf-co.re/docs/contributing/tutorials/nf-test_assertions for more information and examples. ) } From 662b60d1d3b3b90a28a2bb3bc23d9023b50526b9 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Thu, 7 Mar 2024 15:21:11 +0000 Subject: [PATCH 188/634] Update tags.yml --- modules/local/gtf2bed/tests/tags.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/local/gtf2bed/tests/tags.yml b/modules/local/gtf2bed/tests/tags.yml index dfa350d75..6c4f871df 100644 --- a/modules/local/gtf2bed/tests/tags.yml +++ b/modules/local/gtf2bed/tests/tags.yml @@ -1,2 +1,2 @@ -custom/gtf2bed: - - "modules/nf-core/custom/gtf2bed/**" +gtf2bed: + - "modules/local/gtf2bed/**" From ad496d7c399c1b074b26eef52a58a933cf960c09 Mon Sep 17 00:00:00 2001 From: Adam Talbot <12817534+adamrtalbot@users.noreply.github.com> Date: Thu, 7 Mar 2024 16:46:51 +0000 Subject: [PATCH 189/634] Add nf-test to quantify_rsem local subworkflow --- .../quantify_rsem/tests/main.nf.test.snap | 119 ++++++++++++++++++ .../local/quantify_rsem/tests/nextflow.config | 7 +- 2 files changed, 123 insertions(+), 3 deletions(-) diff --git a/subworkflows/local/quantify_rsem/tests/main.nf.test.snap b/subworkflows/local/quantify_rsem/tests/main.nf.test.snap index 10f9b3086..b3a732547 100644 --- a/subworkflows/local/quantify_rsem/tests/main.nf.test.snap +++ b/subworkflows/local/quantify_rsem/tests/main.nf.test.snap @@ -117,5 +117,124 @@ "nextflow": "23.10.1" }, "timestamp": "2024-03-07T14:32:58.87423" + }, + "homo_sapiens": { + "content": [ + { + "0": [ + + ], + "1": [ + + ], + "10": [ + + ], + "11": [ + + ], + "12": [ + + ], + "13": [ + + ], + "14": [ + + ], + "15": [ + + ], + "16": [ + + ], + "17": [ + + ], + "2": [ + + ], + "3": [ + + ], + "4": [ + + ], + "5": [ + + ], + "6": [ + + ], + "7": [ + + ], + "8": [ + + ], + "9": [ + + ], + "bai": [ + + ], + "bam": [ + + ], + "bam_genome": [ + + ], + "bam_star": [ + + ], + "bam_transcript": [ + + ], + "counts_gene": [ + + ], + "counts_transcript": [ + + ], + "csi": [ + + ], + "flagstat": [ + + ], + "idxstats": [ + + ], + "logs": [ + + ], + "merged_counts_gene": [ + + ], + "merged_counts_transcript": [ + + ], + "merged_tpm_gene": [ + + ], + "merged_tpm_transcript": [ + + ], + "stat": [ + + ], + "stats": [ + + ], + "versions": [ + + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-03-07T16:07:39.346607" } } \ No newline at end of file diff --git a/subworkflows/local/quantify_rsem/tests/nextflow.config b/subworkflows/local/quantify_rsem/tests/nextflow.config index b17a1cf2e..922c09523 100644 --- a/subworkflows/local/quantify_rsem/tests/nextflow.config +++ b/subworkflows/local/quantify_rsem/tests/nextflow.config @@ -2,11 +2,12 @@ process { publishDir = { "${params.outdir}/${task.process.tokenize(':')[-1].tokenize('_')[0].toLowerCase()}" } - withName: RSEM_PREPAREREFERENCE { - ext.args = '--star' + // Needs the glob to force the config to be applied + withName: ".*RSEM_PREPAREREFERENCE" { + ext.args = "--star " } - withName: RSEM_CALCULATEEXPRESSION { + withName: "RSEM_CALCULATEEXPRESSION" { ext.args = '--star --star-gzipped-read-file' } From a3e25cd9758ec3e5cfe1787403b892ab14ad1ef4 Mon Sep 17 00:00:00 2001 From: Adam Talbot <12817534+adamrtalbot@users.noreply.github.com> Date: Thu, 7 Mar 2024 16:48:16 +0000 Subject: [PATCH 190/634] remove glob --- subworkflows/local/quantify_rsem/tests/nextflow.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/subworkflows/local/quantify_rsem/tests/nextflow.config b/subworkflows/local/quantify_rsem/tests/nextflow.config index 922c09523..171a28a6c 100644 --- a/subworkflows/local/quantify_rsem/tests/nextflow.config +++ b/subworkflows/local/quantify_rsem/tests/nextflow.config @@ -3,7 +3,7 @@ process { publishDir = { "${params.outdir}/${task.process.tokenize(':')[-1].tokenize('_')[0].toLowerCase()}" } // Needs the glob to force the config to be applied - withName: ".*RSEM_PREPAREREFERENCE" { + withName: "RSEM_PREPAREREFERENCE" { ext.args = "--star " } From 69be38ae19176dc1a4592bffe6f517aeb8812147 Mon Sep 17 00:00:00 2001 From: Adam Talbot <12817534+adamrtalbot@users.noreply.github.com> Date: Thu, 7 Mar 2024 16:51:34 +0000 Subject: [PATCH 191/634] Remove publishDir directive --- subworkflows/local/quantify_rsem/tests/nextflow.config | 2 -- 1 file changed, 2 deletions(-) diff --git a/subworkflows/local/quantify_rsem/tests/nextflow.config b/subworkflows/local/quantify_rsem/tests/nextflow.config index 171a28a6c..51fecdb1f 100644 --- a/subworkflows/local/quantify_rsem/tests/nextflow.config +++ b/subworkflows/local/quantify_rsem/tests/nextflow.config @@ -1,7 +1,5 @@ process { - publishDir = { "${params.outdir}/${task.process.tokenize(':')[-1].tokenize('_')[0].toLowerCase()}" } - // Needs the glob to force the config to be applied withName: "RSEM_PREPAREREFERENCE" { ext.args = "--star " From d0676b2039ec3dd133136b1e310e3c08f4e0c4c0 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Thu, 7 Mar 2024 17:51:21 +0000 Subject: [PATCH 192/634] Update snapshot --- .../quantify_rsem/tests/main.nf.test.snap | 231 +++++++----------- 1 file changed, 91 insertions(+), 140 deletions(-) diff --git a/subworkflows/local/quantify_rsem/tests/main.nf.test.snap b/subworkflows/local/quantify_rsem/tests/main.nf.test.snap index b3a732547..a1f7171db 100644 --- a/subworkflows/local/quantify_rsem/tests/main.nf.test.snap +++ b/subworkflows/local/quantify_rsem/tests/main.nf.test.snap @@ -1,131 +1,24 @@ { - "sarscov2": { - "content": [ - { - "0": [ - - ], - "1": [ - - ], - "10": [ - - ], - "11": [ - - ], - "12": [ - - ], - "13": [ - - ], - "14": [ - - ], - "15": [ - - ], - "16": [ - - ], - "17": [ - - ], - "2": [ - - ], - "3": [ - - ], - "4": [ - - ], - "5": [ - - ], - "6": [ - - ], - "7": [ - - ], - "8": [ - - ], - "9": [ - - ], - "bai": [ - - ], - "bam": [ - - ], - "bam_genome": [ - - ], - "bam_star": [ - - ], - "bam_transcript": [ - - ], - "counts_gene": [ - - ], - "counts_transcript": [ - - ], - "csi": [ - - ], - "flagstat": [ - - ], - "idxstats": [ - - ], - "logs": [ - - ], - "merged_counts_gene": [ - - ], - "merged_counts_transcript": [ - - ], - "merged_tpm_gene": [ - - ], - "merged_tpm_transcript": [ - - ], - "stat": [ - - ], - "stats": [ - - ], - "versions": [ - - ] - } - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-03-07T14:32:58.87423" - }, "homo_sapiens": { "content": [ { "0": [ - + [ + { + "id": "test", + "strandedness": "forward" + }, + "test.genes.results:md5,c7ec226f76736ea805771e73553ae359" + ] ], "1": [ - + [ + { + "id": "test", + "strandedness": "forward" + }, + "test.isoforms.results:md5,99f7f80aa505b44ca429fdebbd7dd5d8" + ] ], "10": [ @@ -137,25 +30,42 @@ ], "13": [ - + "rsem.merged.gene_counts.tsv:md5,f3b586000c97c89aec45360772e73df1" ], "14": [ - + "rsem.merged.gene_tpm.tsv:md5,e6ae3dfa9913a7c15b705ec27c376212" ], "15": [ - + "rsem.merged.transcript_counts.tsv:md5,235c002b811360183494a2aac74d1f5b" ], "16": [ - + "rsem.merged.transcript_tpm.tsv:md5,d38f22667e3b8012f1d783b8d5159ccc" ], "17": [ - + "versions.yml:md5,2aa5252eb2ffb409cf556a165d40f8a9", + "versions.yml:md5,ae1676b60b6335fff8f1188288103a1c" ], "2": [ - + [ + { + "id": "test", + "strandedness": "forward" + }, + [ + "test.cnt:md5,76249e6b2f3c104f414aae596ba2c2f4", + "test.model:md5,a7a4bc1734918ef5848604e3362b83e2", + "test.theta:md5,de2e4490c98cc5383a86ae8225fd0a28" + ] + ] ], "3": [ - + [ + { + "id": "test", + "strandedness": "forward" + }, + "test.log:md5,0854a613698cf8511b3b8db9ee9ad07e" + ] ], "4": [ @@ -164,7 +74,13 @@ ], "6": [ - + [ + { + "id": "test", + "strandedness": "forward" + }, + "test.transcript.bam:md5,ed681d39f5700ffc74d6321525330d93" + ] ], "7": [ @@ -188,13 +104,31 @@ ], "bam_transcript": [ - + [ + { + "id": "test", + "strandedness": "forward" + }, + "test.transcript.bam:md5,ed681d39f5700ffc74d6321525330d93" + ] ], "counts_gene": [ - + [ + { + "id": "test", + "strandedness": "forward" + }, + "test.genes.results:md5,c7ec226f76736ea805771e73553ae359" + ] ], "counts_transcript": [ - + [ + { + "id": "test", + "strandedness": "forward" + }, + "test.isoforms.results:md5,99f7f80aa505b44ca429fdebbd7dd5d8" + ] ], "csi": [ @@ -206,28 +140,45 @@ ], "logs": [ - + [ + { + "id": "test", + "strandedness": "forward" + }, + "test.log:md5,0854a613698cf8511b3b8db9ee9ad07e" + ] ], "merged_counts_gene": [ - + "rsem.merged.gene_counts.tsv:md5,f3b586000c97c89aec45360772e73df1" ], "merged_counts_transcript": [ - + "rsem.merged.transcript_counts.tsv:md5,235c002b811360183494a2aac74d1f5b" ], "merged_tpm_gene": [ - + "rsem.merged.gene_tpm.tsv:md5,e6ae3dfa9913a7c15b705ec27c376212" ], "merged_tpm_transcript": [ - + "rsem.merged.transcript_tpm.tsv:md5,d38f22667e3b8012f1d783b8d5159ccc" ], "stat": [ - + [ + { + "id": "test", + "strandedness": "forward" + }, + [ + "test.cnt:md5,76249e6b2f3c104f414aae596ba2c2f4", + "test.model:md5,a7a4bc1734918ef5848604e3362b83e2", + "test.theta:md5,de2e4490c98cc5383a86ae8225fd0a28" + ] + ] ], "stats": [ ], "versions": [ - + "versions.yml:md5,2aa5252eb2ffb409cf556a165d40f8a9", + "versions.yml:md5,ae1676b60b6335fff8f1188288103a1c" ] } ], @@ -235,6 +186,6 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-03-07T16:07:39.346607" + "timestamp": "2024-03-07T17:50:58.226946" } } \ No newline at end of file From 34d3abd93a45b839e45410e070babc9e12c5861d Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Thu, 7 Mar 2024 18:26:17 +0000 Subject: [PATCH 193/634] Don't snapshot logs --- .../local/quantify_rsem/tests/main.nf.test | 26 +- .../quantify_rsem/tests/main.nf.test.snap | 275 ++++++------------ 2 files changed, 120 insertions(+), 181 deletions(-) diff --git a/subworkflows/local/quantify_rsem/tests/main.nf.test b/subworkflows/local/quantify_rsem/tests/main.nf.test index 8fc7d7823..2e77c694a 100644 --- a/subworkflows/local/quantify_rsem/tests/main.nf.test +++ b/subworkflows/local/quantify_rsem/tests/main.nf.test @@ -41,11 +41,31 @@ nextflow_workflow { then { assertAll( - { assert workflow.success}, - { assert snapshot(workflow.out).match()} + { assert workflow.success }, + { assert snapshot( + workflow.out.counts_gene, + workflow.out.counts_transcript, + workflow.out.stat, + workflow.out.bam_star, + workflow.out.bam_genome, + workflow.out.bam_transcript, + workflow.out.counts_transcript, + workflow.out.bam, + workflow.out.bai, + workflow.out.csi, + workflow.out.stats, + workflow.out.flagstat, + workflow.out.idxstats, + workflow.out.merged_counts_gene, + workflow.out.merged_tpm_gene, + workflow.out.merged_counts_transcript, + workflow.out.merged_tpm_transcript, + workflow.out.versions + ).match() + }, + { assert snapshot(file(workflow.out.logs[0][1]).name).match('logs') } ) } - } } diff --git a/subworkflows/local/quantify_rsem/tests/main.nf.test.snap b/subworkflows/local/quantify_rsem/tests/main.nf.test.snap index a1f7171db..e3d6bd183 100644 --- a/subworkflows/local/quantify_rsem/tests/main.nf.test.snap +++ b/subworkflows/local/quantify_rsem/tests/main.nf.test.snap @@ -1,191 +1,110 @@ { + "logs": { + "content": [ + "test.log" + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-03-07T18:25:31.476361" + }, "homo_sapiens": { "content": [ - { - "0": [ - [ - { - "id": "test", - "strandedness": "forward" - }, - "test.genes.results:md5,c7ec226f76736ea805771e73553ae359" - ] - ], - "1": [ - [ - { - "id": "test", - "strandedness": "forward" - }, - "test.isoforms.results:md5,99f7f80aa505b44ca429fdebbd7dd5d8" - ] - ], - "10": [ - - ], - "11": [ - - ], - "12": [ - - ], - "13": [ - "rsem.merged.gene_counts.tsv:md5,f3b586000c97c89aec45360772e73df1" - ], - "14": [ - "rsem.merged.gene_tpm.tsv:md5,e6ae3dfa9913a7c15b705ec27c376212" - ], - "15": [ - "rsem.merged.transcript_counts.tsv:md5,235c002b811360183494a2aac74d1f5b" - ], - "16": [ - "rsem.merged.transcript_tpm.tsv:md5,d38f22667e3b8012f1d783b8d5159ccc" - ], - "17": [ - "versions.yml:md5,2aa5252eb2ffb409cf556a165d40f8a9", - "versions.yml:md5,ae1676b60b6335fff8f1188288103a1c" - ], - "2": [ - [ - { - "id": "test", - "strandedness": "forward" - }, - [ - "test.cnt:md5,76249e6b2f3c104f414aae596ba2c2f4", - "test.model:md5,a7a4bc1734918ef5848604e3362b83e2", - "test.theta:md5,de2e4490c98cc5383a86ae8225fd0a28" - ] - ] - ], - "3": [ - [ - { - "id": "test", - "strandedness": "forward" - }, - "test.log:md5,0854a613698cf8511b3b8db9ee9ad07e" - ] - ], - "4": [ - - ], - "5": [ - - ], - "6": [ - [ - { - "id": "test", - "strandedness": "forward" - }, - "test.transcript.bam:md5,ed681d39f5700ffc74d6321525330d93" - ] - ], - "7": [ - - ], - "8": [ - - ], - "9": [ - - ], - "bai": [ - - ], - "bam": [ - - ], - "bam_genome": [ - - ], - "bam_star": [ - - ], - "bam_transcript": [ - [ - { - "id": "test", - "strandedness": "forward" - }, - "test.transcript.bam:md5,ed681d39f5700ffc74d6321525330d93" - ] - ], - "counts_gene": [ - [ - { - "id": "test", - "strandedness": "forward" - }, - "test.genes.results:md5,c7ec226f76736ea805771e73553ae359" - ] - ], - "counts_transcript": [ - [ - { - "id": "test", - "strandedness": "forward" - }, - "test.isoforms.results:md5,99f7f80aa505b44ca429fdebbd7dd5d8" - ] - ], - "csi": [ - - ], - "flagstat": [ - - ], - "idxstats": [ - - ], - "logs": [ - [ - { - "id": "test", - "strandedness": "forward" - }, - "test.log:md5,0854a613698cf8511b3b8db9ee9ad07e" - ] - ], - "merged_counts_gene": [ - "rsem.merged.gene_counts.tsv:md5,f3b586000c97c89aec45360772e73df1" - ], - "merged_counts_transcript": [ - "rsem.merged.transcript_counts.tsv:md5,235c002b811360183494a2aac74d1f5b" - ], - "merged_tpm_gene": [ - "rsem.merged.gene_tpm.tsv:md5,e6ae3dfa9913a7c15b705ec27c376212" - ], - "merged_tpm_transcript": [ - "rsem.merged.transcript_tpm.tsv:md5,d38f22667e3b8012f1d783b8d5159ccc" - ], - "stat": [ + [ + [ + { + "id": "test", + "strandedness": "forward" + }, + "test.genes.results:md5,c7ec226f76736ea805771e73553ae359" + ] + ], + [ + [ + { + "id": "test", + "strandedness": "forward" + }, + "test.isoforms.results:md5,99f7f80aa505b44ca429fdebbd7dd5d8" + ] + ], + [ + [ + { + "id": "test", + "strandedness": "forward" + }, [ - { - "id": "test", - "strandedness": "forward" - }, - [ - "test.cnt:md5,76249e6b2f3c104f414aae596ba2c2f4", - "test.model:md5,a7a4bc1734918ef5848604e3362b83e2", - "test.theta:md5,de2e4490c98cc5383a86ae8225fd0a28" - ] + "test.cnt:md5,76249e6b2f3c104f414aae596ba2c2f4", + "test.model:md5,a7a4bc1734918ef5848604e3362b83e2", + "test.theta:md5,de2e4490c98cc5383a86ae8225fd0a28" ] - ], - "stats": [ - - ], - "versions": [ - "versions.yml:md5,2aa5252eb2ffb409cf556a165d40f8a9", - "versions.yml:md5,ae1676b60b6335fff8f1188288103a1c" ] - } + ], + [ + + ], + [ + + ], + [ + [ + { + "id": "test", + "strandedness": "forward" + }, + "test.transcript.bam:md5,ed681d39f5700ffc74d6321525330d93" + ] + ], + [ + [ + { + "id": "test", + "strandedness": "forward" + }, + "test.isoforms.results:md5,99f7f80aa505b44ca429fdebbd7dd5d8" + ] + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + "rsem.merged.gene_counts.tsv:md5,f3b586000c97c89aec45360772e73df1" + ], + [ + "rsem.merged.gene_tpm.tsv:md5,e6ae3dfa9913a7c15b705ec27c376212" + ], + [ + "rsem.merged.transcript_counts.tsv:md5,235c002b811360183494a2aac74d1f5b" + ], + [ + "rsem.merged.transcript_tpm.tsv:md5,d38f22667e3b8012f1d783b8d5159ccc" + ], + [ + "versions.yml:md5,2aa5252eb2ffb409cf556a165d40f8a9", + "versions.yml:md5,ae1676b60b6335fff8f1188288103a1c" + ] ], "meta": { "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-03-07T17:50:58.226946" + "timestamp": "2024-03-07T18:15:03.001083" } } \ No newline at end of file From 74853cebc4421b6ee593e3b855488ca68d7d72a4 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Thu, 7 Mar 2024 18:30:15 +0000 Subject: [PATCH 194/634] fix linting --- subworkflows/local/quantify_rsem/tests/main.nf.test | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/subworkflows/local/quantify_rsem/tests/main.nf.test b/subworkflows/local/quantify_rsem/tests/main.nf.test index 2e77c694a..ae8fcff3a 100644 --- a/subworkflows/local/quantify_rsem/tests/main.nf.test +++ b/subworkflows/local/quantify_rsem/tests/main.nf.test @@ -61,7 +61,7 @@ nextflow_workflow { workflow.out.merged_counts_transcript, workflow.out.merged_tpm_transcript, workflow.out.versions - ).match() + ).match() }, { assert snapshot(file(workflow.out.logs[0][1]).name).match('logs') } ) From e88b4ec297e195c19078addc1c9dc0caed4d80f2 Mon Sep 17 00:00:00 2001 From: Maxime U Garcia Date: Fri, 8 Mar 2024 09:26:38 +0100 Subject: [PATCH 195/634] Apply suggestions from code review --- modules/local/multiqc_custom_biotype/tests/main.nf.test | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/local/multiqc_custom_biotype/tests/main.nf.test b/modules/local/multiqc_custom_biotype/tests/main.nf.test index c839a521e..f5c02ef05 100644 --- a/modules/local/multiqc_custom_biotype/tests/main.nf.test +++ b/modules/local/multiqc_custom_biotype/tests/main.nf.test @@ -12,10 +12,10 @@ nextflow_process { input[0] = Channel.of( [ [ id: 'test' ], - file("${moduleTestDir}/data/test.featureCounts.txt") + file("${params.pipelines_testdata_base_path}/multiqc_custom_biotype/test.featureCounts.txt") ] ) - input[1] = file("${moduleTestDir}/data/biotypes_header.txt", checkIfExists: true) + input[1] = file("${params.pipelines_testdata_base_path}/multiqc_custom_biotype/biotypes_header.txt", checkIfExists: true) """ } } From 5f7c265d0ec1a37df5b7d1044af2374d5914c053 Mon Sep 17 00:00:00 2001 From: maxulysse Date: Fri, 8 Mar 2024 09:37:10 +0100 Subject: [PATCH 196/634] remove data --- .../tests/data/biotypes_header.txt | 11 ----------- .../tests/data/test.featureCounts.txt | 13 ------------- 2 files changed, 24 deletions(-) delete mode 100644 modules/local/multiqc_custom_biotype/tests/data/biotypes_header.txt delete mode 100644 modules/local/multiqc_custom_biotype/tests/data/test.featureCounts.txt diff --git a/modules/local/multiqc_custom_biotype/tests/data/biotypes_header.txt b/modules/local/multiqc_custom_biotype/tests/data/biotypes_header.txt deleted file mode 100644 index dff52c0f7..000000000 --- a/modules/local/multiqc_custom_biotype/tests/data/biotypes_header.txt +++ /dev/null @@ -1,11 +0,0 @@ -# id: 'biotype_counts' -# section_name: 'Biotype Counts' -# description: "shows reads overlapping genomic features of different biotypes, -# counted by featureCounts." -# plot_type: 'bargraph' -# anchor: 'featurecounts_biotype' -# pconfig: -# id: "featurecounts_biotype_plot" -# title: "featureCounts: Biotypes" -# xlab: "# Reads" -# cpswitch_counts_label: "Number of Reads" diff --git a/modules/local/multiqc_custom_biotype/tests/data/test.featureCounts.txt b/modules/local/multiqc_custom_biotype/tests/data/test.featureCounts.txt deleted file mode 100644 index 03b11cb15..000000000 --- a/modules/local/multiqc_custom_biotype/tests/data/test.featureCounts.txt +++ /dev/null @@ -1,13 +0,0 @@ -# Program:featureCounts v2.0.1; Command:"featureCounts" "-t" "CDS" "-T" "2" "-a" "genome.gtf" "-s" "1" "-o" "test.featureCounts.txt" "test.single_end.bam" -Geneid Chr Start End Strand Length test.single_end.bam -orf1ab MT192765.1;MT192765.1 259;13461 13461;21545 +;+ 21287 38 -S MT192765.1 21556 25374 + 3819 4 -ORF3a MT192765.1 25386 26210 + 825 0 -E MT192765.1 26238 26462 + 225 1 -M MT192765.1 26516 27181 + 666 1 -ORF6 MT192765.1 27195 27377 + 183 0 -ORF7a MT192765.1 27387 27749 + 363 0 -ORF7b MT192765.1 27749 27877 + 129 0 -ORF8 MT192765.1 27887 28249 + 363 0 -N MT192765.1 28267 29523 + 1257 2 -ORF10 MT192765.1 29551 29664 + 114 0 From 51e16b9d4f0a57d880e7612e3edfee8d1dd7379e Mon Sep 17 00:00:00 2001 From: maxulysse Date: Fri, 8 Mar 2024 09:37:27 +0100 Subject: [PATCH 197/634] proper path --- modules/local/multiqc_custom_biotype/tests/main.nf.test | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/local/multiqc_custom_biotype/tests/main.nf.test b/modules/local/multiqc_custom_biotype/tests/main.nf.test index f5c02ef05..216f73336 100644 --- a/modules/local/multiqc_custom_biotype/tests/main.nf.test +++ b/modules/local/multiqc_custom_biotype/tests/main.nf.test @@ -12,10 +12,10 @@ nextflow_process { input[0] = Channel.of( [ [ id: 'test' ], - file("${params.pipelines_testdata_base_path}/multiqc_custom_biotype/test.featureCounts.txt") + file(params.pipelines_testdata_base_path + 'multiqc_custom_biotype/test.featureCounts.txt', checkIfExists: true) ] ) - input[1] = file("${params.pipelines_testdata_base_path}/multiqc_custom_biotype/biotypes_header.txt", checkIfExists: true) + input[1] = file(params.pipelines_testdata_base_path + 'multiqc_custom_biotype/biotypes_header.txt', checkIfExists: true) """ } } From 67473b78b5099106d7286724e221600496ad3bfc Mon Sep 17 00:00:00 2001 From: maxulysse Date: Fri, 8 Mar 2024 09:37:37 +0100 Subject: [PATCH 198/634] fix path --- tests/nextflow.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/nextflow.config b/tests/nextflow.config index 89fefa4f3..6bf8f2929 100644 --- a/tests/nextflow.config +++ b/tests/nextflow.config @@ -9,7 +9,7 @@ params { modules_testdata_base_path = 's3://ngi-igenomes/testdata/nf-core/modules/' // Base directory for nf-core/rnaseq test data - pipelines_testdata_base_path = 's3://ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15' + pipelines_testdata_base_path = 's3://ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/' // for hisat2 hisat2_build_memory = '3.GB' From 6dea521476cc980dda4c185692332df4613bcbd5 Mon Sep 17 00:00:00 2001 From: maxulysse Date: Fri, 8 Mar 2024 09:38:13 +0100 Subject: [PATCH 199/634] regenerate snapshot --- .../local/multiqc_custom_biotype/tests/main.nf.test.snap | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/modules/local/multiqc_custom_biotype/tests/main.nf.test.snap b/modules/local/multiqc_custom_biotype/tests/main.nf.test.snap index 76bc03304..ae559097b 100644 --- a/modules/local/multiqc_custom_biotype/tests/main.nf.test.snap +++ b/modules/local/multiqc_custom_biotype/tests/main.nf.test.snap @@ -1,5 +1,5 @@ { - "test": { + "test sarscov2 count data succesfully completes": { "content": [ { "0": [ @@ -34,8 +34,8 @@ ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.01.0" }, - "timestamp": "2024-03-07T14:18:53.570111" + "timestamp": "2024-03-08T09:38:04.260609" } } \ No newline at end of file From c71189f6300ecc46f1a7e22812fb777dfea1fab8 Mon Sep 17 00:00:00 2001 From: Adam Talbot <12817534+adamrtalbot@users.noreply.github.com> Date: Fri, 8 Mar 2024 10:21:21 +0000 Subject: [PATCH 200/634] Add nf-test for quantify_psueudoalignment --- .../tests/main.nf.test | 128 ++++++++++++++++++ 1 file changed, 128 insertions(+) create mode 100644 subworkflows/local/quantify_pseudo_alignment/tests/main.nf.test diff --git a/subworkflows/local/quantify_pseudo_alignment/tests/main.nf.test b/subworkflows/local/quantify_pseudo_alignment/tests/main.nf.test new file mode 100644 index 000000000..e39aac852 --- /dev/null +++ b/subworkflows/local/quantify_pseudo_alignment/tests/main.nf.test @@ -0,0 +1,128 @@ +nextflow_workflow { + + name "Test Workflow QUANTIFY_PSEUDO_ALIGNMENT" + script "../main.nf" + workflow "QUANTIFY_PSEUDO_ALIGNMENT" + config './nextflow.config' + + tag 'SALMON_QUANT' + tag 'KALLISTO_QUANT' + tag 'CUSTOM_TX2GENE' + tag 'TXIMETA_TXIMPORT' + tag 'SUMMARIZEDEXPERIMENT_SUMMARIZEDEXPERIMENT' + + test("salmon") { + + setup { + run("SALMON_INDEX") { + script "../../../../modules/nf-core/salmon/index/main.nf" + process { + """ + input[0] = Channel.of([file(params.modules_testdata_base_path + "genomics/homo_sapiens/genome/genome.fasta", checkIfExists: true)]) + input[1] = Channel.of([file(params.modules_testdata_base_path + "genomics/sarscov2/genome/transcriptome.fasta", checkIfExists: true)]) + """ + } + } + } + + when { + workflow { + """ + def fileContents = [ + 'sample,fastq_1,fastq_2,strandedness', + 'test,s3://ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/genomics/sarscov2/illumina/fastq/test_1.fastq.gz,s3://ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/genomics/sarscov2/illumina/fastq/test_2.fastq.gz,auto' + ] + def samplesheetFile = file("${workDir}/samplesheetFile.txt") + samplesheetFile.withWriter{ out -> + fileContents.each {out.println it} + } + input[0] = samplesheetFile + input[1] = [ + [ id: 'meta' ], + [ + 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) + ] + ] + input[2] = SALMON_INDEX.out.index + input[3] = Channel.of(file(params.modules_testdata_base_path + "genomics/sarscov2/genome/transcriptome.fasta", checkIfExists: true)) + input[4] = Channel.of(file(params.modules_testdata_base_path + "genomics/sarscov2/genome/genome.gtf", checkIfExists: true)) + input[5] = 'gene_id' + input[6] = 'gene_name' + input[7] = 'salmon' + input[8] = true + input[9] = '' + input[10] = null + input[11] = null + """.stripIndent() + } + } + + then { + assertAll( + { assert workflow.success }, + { assert snapshot(workflow.out).match() } + ) + } + + } + + test("kallisto") { + + setup { + run("KALLISTO_INDEX") { + script "../../../../modules/nf-core/kallisto/index/main.nf" + process { + """ + input[0] = Channel.of([ + [ id:'transcriptome' ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/transcriptome.fasta', checkIfExists: true) + ]) + """ + } + } + } + + when { + workflow { + """ + def fileContents = [ + 'sample,fastq_1,fastq_2,strandedness', + 'test,SRR6357070_1.fastq.gz,SRR6357070_2.fastq.gz,auto' + ] + def samplesheetFile = file("${workDir}/samplesheetFile.txt") + samplesheetFile.withWriter{ out -> + fileContents.each {out.println it} + } + input[0] = samplesheetFile + input[1] = [ + [ id: 'meta' ], + [ + 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) + ] + ] + input[2] = KALLISTO_INDEX.out.index + input[3] = Channel.of(file(params.modules_testdata_base_path + "genomics/sarscov2/genome/transcriptome.fasta", checkIfExists: true)) + input[4] = Channel.of(file(params.modules_testdata_base_path + "genomics/sarscov2/genome/genome.gtf", checkIfExists: true)) + input[5] = 'gene_id' + input[6] = 'gene_name' + input[7] = 'kallisto' + input[8] = null + input[9] = null + input[10] = null + input[11] = null + """.stripIndent() + } + } + + then { + assertAll( + { assert workflow.success }, + { assert snapshot(workflow.out).match() } + ) + } + + } + +} From 8c68e1dbf96cc1da23d2883496a2d3ca41db0b3a Mon Sep 17 00:00:00 2001 From: Adam Talbot Date: Fri, 8 Mar 2024 11:47:28 +0000 Subject: [PATCH 201/634] Some improvements but not working :( --- .../tests/main.nf.test | 56 ++++++++----------- 1 file changed, 23 insertions(+), 33 deletions(-) diff --git a/subworkflows/local/quantify_pseudo_alignment/tests/main.nf.test b/subworkflows/local/quantify_pseudo_alignment/tests/main.nf.test index e39aac852..bcd1129f2 100644 --- a/subworkflows/local/quantify_pseudo_alignment/tests/main.nf.test +++ b/subworkflows/local/quantify_pseudo_alignment/tests/main.nf.test @@ -3,7 +3,6 @@ nextflow_workflow { name "Test Workflow QUANTIFY_PSEUDO_ALIGNMENT" script "../main.nf" workflow "QUANTIFY_PSEUDO_ALIGNMENT" - config './nextflow.config' tag 'SALMON_QUANT' tag 'KALLISTO_QUANT' @@ -11,7 +10,7 @@ nextflow_workflow { tag 'TXIMETA_TXIMPORT' tag 'SUMMARIZEDEXPERIMENT_SUMMARIZEDEXPERIMENT' - test("salmon") { + // test("salmon") { setup { run("SALMON_INDEX") { @@ -19,7 +18,7 @@ nextflow_workflow { process { """ input[0] = Channel.of([file(params.modules_testdata_base_path + "genomics/homo_sapiens/genome/genome.fasta", checkIfExists: true)]) - input[1] = Channel.of([file(params.modules_testdata_base_path + "genomics/sarscov2/genome/transcriptome.fasta", checkIfExists: true)]) + input[1] = Channel.of([file(params.modules_testdata_base_path + "genomics/homo_sapiens/genome/transcriptome.fasta", checkIfExists: true)]) """ } } @@ -28,25 +27,20 @@ nextflow_workflow { when { workflow { """ - def fileContents = [ - 'sample,fastq_1,fastq_2,strandedness', - 'test,s3://ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/genomics/sarscov2/illumina/fastq/test_1.fastq.gz,s3://ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/genomics/sarscov2/illumina/fastq/test_2.fastq.gz,auto' + input[0] = [ + [ id: 'samplesheet' ], + file(params.pipelines_testdata_base_path + '/csv/samplesheet_micro.csv', checkIfExists: true) ] - def samplesheetFile = file("${workDir}/samplesheetFile.txt") - samplesheetFile.withWriter{ out -> - fileContents.each {out.println it} - } - input[0] = samplesheetFile input[1] = [ [ id: 'meta' ], [ - 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/homo_sapiens/illumina/fastq/test_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/fastq/test_2.fastq.gz', checkIfExists: true) ] ] input[2] = SALMON_INDEX.out.index - input[3] = Channel.of(file(params.modules_testdata_base_path + "genomics/sarscov2/genome/transcriptome.fasta", checkIfExists: true)) - input[4] = Channel.of(file(params.modules_testdata_base_path + "genomics/sarscov2/genome/genome.gtf", checkIfExists: true)) + input[3] = Channel.of(file(params.modules_testdata_base_path + "genomics/homo_sapiens/genome/transcriptome.fasta", checkIfExists: true)) + input[4] = Channel.of(file(params.modules_testdata_base_path + "genomics/homo_sapiens/genome/genome.fasta", checkIfExists: true)) input[5] = 'gene_id' input[6] = 'gene_name' input[7] = 'salmon' @@ -54,7 +48,7 @@ nextflow_workflow { input[9] = '' input[10] = null input[11] = null - """.stripIndent() + """ } } @@ -76,43 +70,39 @@ nextflow_workflow { """ input[0] = Channel.of([ [ id:'transcriptome' ], // meta map - file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/transcriptome.fasta', checkIfExists: true) + file(params.modules_testdata_base_path + "genomics/homo_sapiens/genome/transcriptome.fasta", checkIfExists: true) ]) """ } } } + when { workflow { """ - def fileContents = [ - 'sample,fastq_1,fastq_2,strandedness', - 'test,SRR6357070_1.fastq.gz,SRR6357070_2.fastq.gz,auto' + input[0] = [ + [ id: 'samplesheet' ], + file(params.pipelines_testdata_base_path + '/csv/samplesheet_micro.csv', checkIfExists: true) ] - def samplesheetFile = file("${workDir}/samplesheetFile.txt") - samplesheetFile.withWriter{ out -> - fileContents.each {out.println it} - } - input[0] = samplesheetFile input[1] = [ - [ id: 'meta' ], + [ 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) + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/fastq/test_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/fastq/test_2.fastq.gz', checkIfExists: true) ] ] input[2] = KALLISTO_INDEX.out.index - input[3] = Channel.of(file(params.modules_testdata_base_path + "genomics/sarscov2/genome/transcriptome.fasta", checkIfExists: true)) - input[4] = Channel.of(file(params.modules_testdata_base_path + "genomics/sarscov2/genome/genome.gtf", checkIfExists: true)) + input[3] = Channel.of(file(params.modules_testdata_base_path + "genomics/homo_sapiens/genome/transcriptome.fasta", checkIfExists: true)) + input[4] = Channel.of(file(params.modules_testdata_base_path + "genomics/homo_sapiens/genome/genome.gtf", checkIfExists: true)) input[5] = 'gene_id' input[6] = 'gene_name' input[7] = 'kallisto' input[8] = null input[9] = null - input[10] = null - input[11] = null - """.stripIndent() + input[10] = [] + input[11] = [] + """ } } From bc57910fc114f0d9e106c57c7199ecce168196cf Mon Sep 17 00:00:00 2001 From: Adam Talbot Date: Fri, 8 Mar 2024 11:51:16 +0000 Subject: [PATCH 202/634] uncomment the comment --- subworkflows/local/quantify_pseudo_alignment/tests/main.nf.test | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/subworkflows/local/quantify_pseudo_alignment/tests/main.nf.test b/subworkflows/local/quantify_pseudo_alignment/tests/main.nf.test index bcd1129f2..9aebcdad7 100644 --- a/subworkflows/local/quantify_pseudo_alignment/tests/main.nf.test +++ b/subworkflows/local/quantify_pseudo_alignment/tests/main.nf.test @@ -10,7 +10,7 @@ nextflow_workflow { tag 'TXIMETA_TXIMPORT' tag 'SUMMARIZEDEXPERIMENT_SUMMARIZEDEXPERIMENT' - // test("salmon") { + test("salmon") { setup { run("SALMON_INDEX") { From 40c006d1a350cba3f8f4eab2b056960adb6e363e Mon Sep 17 00:00:00 2001 From: Adam Talbot Date: Fri, 8 Mar 2024 12:12:42 +0000 Subject: [PATCH 203/634] Swap to nf-core rnaseq test data (full path currently) --- .../tests/main.nf.test | 32 +++++++++---------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/subworkflows/local/quantify_pseudo_alignment/tests/main.nf.test b/subworkflows/local/quantify_pseudo_alignment/tests/main.nf.test index 9aebcdad7..6cf2cda28 100644 --- a/subworkflows/local/quantify_pseudo_alignment/tests/main.nf.test +++ b/subworkflows/local/quantify_pseudo_alignment/tests/main.nf.test @@ -17,8 +17,8 @@ nextflow_workflow { script "../../../../modules/nf-core/salmon/index/main.nf" process { """ - input[0] = Channel.of([file(params.modules_testdata_base_path + "genomics/homo_sapiens/genome/genome.fasta", checkIfExists: true)]) - input[1] = Channel.of([file(params.modules_testdata_base_path + "genomics/homo_sapiens/genome/transcriptome.fasta", checkIfExists: true)]) + input[0] = file("https://raw.githubusercontent.com/nf-core/test-datasets/7f1614baeb0ddf66e60be78c3d9fa55440465ac8/reference/genome.fasta", checkIfExists: true) + input[1] = file("https://raw.githubusercontent.com/nf-core/test-datasets/7f1614baeb0ddf66e60be78c3d9fa55440465ac8/reference/transcriptome.fasta", checkIfExists: true) """ } } @@ -29,23 +29,23 @@ nextflow_workflow { """ input[0] = [ [ id: 'samplesheet' ], - file(params.pipelines_testdata_base_path + '/csv/samplesheet_micro.csv', checkIfExists: true) + file("https://raw.githubusercontent.com/nf-core/test-datasets/7f1614baeb0ddf66e60be78c3d9fa55440465ac8/samplesheet/v3.10/samplesheet_test.csv", checkIfExists: true) ] input[1] = [ - [ id: 'meta' ], + [ id: 'test' ], [ - file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/fastq/test_1.fastq.gz', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/fastq/test_2.fastq.gz', checkIfExists: true) + file("https://raw.githubusercontent.com/nf-core/test-datasets/rnaseq/testdata/GSE110004/SRR6357070_1.fastq.gz", checkIfExists: true), + file("https://raw.githubusercontent.com/nf-core/test-datasets/rnaseq/testdata/GSE110004/SRR6357070_2.fastq.gz", checkIfExists: true) ] ] input[2] = SALMON_INDEX.out.index - input[3] = Channel.of(file(params.modules_testdata_base_path + "genomics/homo_sapiens/genome/transcriptome.fasta", checkIfExists: true)) - input[4] = Channel.of(file(params.modules_testdata_base_path + "genomics/homo_sapiens/genome/genome.fasta", checkIfExists: true)) + input[3] = Channel.of(file("https://raw.githubusercontent.com/nf-core/test-datasets/7f1614baeb0ddf66e60be78c3d9fa55440465ac8/reference/transcriptome.fasta", checkIfExists: true)) + input[4] = Channel.of(file("https://raw.githubusercontent.com/nf-core/test-datasets/7f1614baeb0ddf66e60be78c3d9fa55440465ac8/reference/genome.fasta", checkIfExists: true)) input[5] = 'gene_id' input[6] = 'gene_name' input[7] = 'salmon' - input[8] = true - input[9] = '' + input[8] = false + input[9] = 'A' input[10] = null input[11] = null """ @@ -70,7 +70,7 @@ nextflow_workflow { """ input[0] = Channel.of([ [ id:'transcriptome' ], // meta map - file(params.modules_testdata_base_path + "genomics/homo_sapiens/genome/transcriptome.fasta", checkIfExists: true) + file("https://raw.githubusercontent.com/nf-core/test-datasets/7f1614baeb0ddf66e60be78c3d9fa55440465ac8/reference/transcriptome.fasta", checkIfExists: true) ]) """ } @@ -83,18 +83,18 @@ nextflow_workflow { """ input[0] = [ [ id: 'samplesheet' ], - file(params.pipelines_testdata_base_path + '/csv/samplesheet_micro.csv', checkIfExists: true) + file("https://raw.githubusercontent.com/nf-core/test-datasets/7f1614baeb0ddf66e60be78c3d9fa55440465ac8/samplesheet/v3.10/samplesheet_test.csv", checkIfExists: true) ] input[1] = [ [ id: 'test' ], [ - file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/fastq/test_1.fastq.gz', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/fastq/test_2.fastq.gz', checkIfExists: true) + file("https://raw.githubusercontent.com/nf-core/test-datasets/rnaseq/testdata/GSE110004/SRR6357070_1.fastq.gz", checkIfExists: true), + file("https://raw.githubusercontent.com/nf-core/test-datasets/rnaseq/testdata/GSE110004/SRR6357070_2.fastq.gz", checkIfExists: true) ] ] input[2] = KALLISTO_INDEX.out.index - input[3] = Channel.of(file(params.modules_testdata_base_path + "genomics/homo_sapiens/genome/transcriptome.fasta", checkIfExists: true)) - input[4] = Channel.of(file(params.modules_testdata_base_path + "genomics/homo_sapiens/genome/genome.gtf", checkIfExists: true)) + input[3] = Channel.of(file("https://raw.githubusercontent.com/nf-core/test-datasets/7f1614baeb0ddf66e60be78c3d9fa55440465ac8/reference/transcriptome.fasta", checkIfExists: true)) + input[4] = Channel.of(file("https://raw.githubusercontent.com/nf-core/test-datasets/7f1614baeb0ddf66e60be78c3d9fa55440465ac8/reference/genome.fasta", checkIfExists: true)) input[5] = 'gene_id' input[6] = 'gene_name' input[7] = 'kallisto' From 9f2740334426d194367557255355fda58681f7f8 Mon Sep 17 00:00:00 2001 From: Adam Talbot <12817534+adamrtalbot@users.noreply.github.com> Date: Fri, 8 Mar 2024 12:34:15 +0000 Subject: [PATCH 204/634] Reference genome path mistake --- .../tests/main.nf.test | 26 +++++++++---------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/subworkflows/local/quantify_pseudo_alignment/tests/main.nf.test b/subworkflows/local/quantify_pseudo_alignment/tests/main.nf.test index 6cf2cda28..fcf86ee1e 100644 --- a/subworkflows/local/quantify_pseudo_alignment/tests/main.nf.test +++ b/subworkflows/local/quantify_pseudo_alignment/tests/main.nf.test @@ -17,8 +17,8 @@ nextflow_workflow { script "../../../../modules/nf-core/salmon/index/main.nf" process { """ - input[0] = file("https://raw.githubusercontent.com/nf-core/test-datasets/7f1614baeb0ddf66e60be78c3d9fa55440465ac8/reference/genome.fasta", checkIfExists: true) - input[1] = file("https://raw.githubusercontent.com/nf-core/test-datasets/7f1614baeb0ddf66e60be78c3d9fa55440465ac8/reference/transcriptome.fasta", checkIfExists: true) + input[0] = Channel.of([file(params.modules_testdata_base_path + "genomics/homo_sapiens/genome/genome.fasta", checkIfExists: true)]) + input[1] = Channel.of([file(params.modules_testdata_base_path + "genomics/homo_sapiens/genome/transcriptome.fasta", checkIfExists: true)]) """ } } @@ -29,18 +29,18 @@ nextflow_workflow { """ input[0] = [ [ id: 'samplesheet' ], - file("https://raw.githubusercontent.com/nf-core/test-datasets/7f1614baeb0ddf66e60be78c3d9fa55440465ac8/samplesheet/v3.10/samplesheet_test.csv", checkIfExists: true) + file(params.pipelines_testdata_base_path + '/csv/samplesheet_micro.csv', checkIfExists: true) ] input[1] = [ [ id: 'test' ], [ - file("https://raw.githubusercontent.com/nf-core/test-datasets/rnaseq/testdata/GSE110004/SRR6357070_1.fastq.gz", checkIfExists: true), - file("https://raw.githubusercontent.com/nf-core/test-datasets/rnaseq/testdata/GSE110004/SRR6357070_2.fastq.gz", checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/fastq/test_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/fastq/test_2.fastq.gz', checkIfExists: true) ] ] input[2] = SALMON_INDEX.out.index - input[3] = Channel.of(file("https://raw.githubusercontent.com/nf-core/test-datasets/7f1614baeb0ddf66e60be78c3d9fa55440465ac8/reference/transcriptome.fasta", checkIfExists: true)) - input[4] = Channel.of(file("https://raw.githubusercontent.com/nf-core/test-datasets/7f1614baeb0ddf66e60be78c3d9fa55440465ac8/reference/genome.fasta", checkIfExists: true)) + input[3] = Channel.of(file(params.modules_testdata_base_path + "genomics/homo_sapiens/genome/transcriptome.fasta", checkIfExists: true)) + input[4] = Channel.of(file(params.modules_testdata_base_path + "genomics/homo_sapiens/genome/genome.gtf", checkIfExists: true)) input[5] = 'gene_id' input[6] = 'gene_name' input[7] = 'salmon' @@ -70,7 +70,7 @@ nextflow_workflow { """ input[0] = Channel.of([ [ id:'transcriptome' ], // meta map - file("https://raw.githubusercontent.com/nf-core/test-datasets/7f1614baeb0ddf66e60be78c3d9fa55440465ac8/reference/transcriptome.fasta", checkIfExists: true) + file(params.modules_testdata_base_path + "genomics/homo_sapiens/genome/transcriptome.fasta", checkIfExists: true) ]) """ } @@ -83,18 +83,18 @@ nextflow_workflow { """ input[0] = [ [ id: 'samplesheet' ], - file("https://raw.githubusercontent.com/nf-core/test-datasets/7f1614baeb0ddf66e60be78c3d9fa55440465ac8/samplesheet/v3.10/samplesheet_test.csv", checkIfExists: true) + file(params.pipelines_testdata_base_path + '/csv/samplesheet_micro.csv', checkIfExists: true) ] input[1] = [ [ id: 'test' ], [ - file("https://raw.githubusercontent.com/nf-core/test-datasets/rnaseq/testdata/GSE110004/SRR6357070_1.fastq.gz", checkIfExists: true), - file("https://raw.githubusercontent.com/nf-core/test-datasets/rnaseq/testdata/GSE110004/SRR6357070_2.fastq.gz", checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/fastq/test_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/fastq/test_2.fastq.gz', checkIfExists: true) ] ] input[2] = KALLISTO_INDEX.out.index - input[3] = Channel.of(file("https://raw.githubusercontent.com/nf-core/test-datasets/7f1614baeb0ddf66e60be78c3d9fa55440465ac8/reference/transcriptome.fasta", checkIfExists: true)) - input[4] = Channel.of(file("https://raw.githubusercontent.com/nf-core/test-datasets/7f1614baeb0ddf66e60be78c3d9fa55440465ac8/reference/genome.fasta", checkIfExists: true)) + input[3] = Channel.of(file(params.modules_testdata_base_path + "genomics/homo_sapiens/genome/transcriptome.fasta", checkIfExists: true)) + input[4] = Channel.of(file(params.modules_testdata_base_path + "genomics/homo_sapiens/genome/genome.gtf", checkIfExists: true)) input[5] = 'gene_id' input[6] = 'gene_name' input[7] = 'kallisto' From 41e5ef2e0754aced39380e981410ddbf8cb8db49 Mon Sep 17 00:00:00 2001 From: maxulysse Date: Fri, 8 Mar 2024 15:54:08 +0100 Subject: [PATCH 205/634] remove unnecessary tags --- subworkflows/local/align_star/tests/tags.yml | 2 -- 1 file changed, 2 deletions(-) delete mode 100644 subworkflows/local/align_star/tests/tags.yml diff --git a/subworkflows/local/align_star/tests/tags.yml b/subworkflows/local/align_star/tests/tags.yml deleted file mode 100644 index 8993cde0c..000000000 --- a/subworkflows/local/align_star/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -subworkflows/fastq_align_hisat2: - - subworkflows/nf-core/fastq_align_hisat2/** From 7eb25079bec010e451d1de828cd627f089e5d67e Mon Sep 17 00:00:00 2001 From: maxulysse Date: Fri, 8 Mar 2024 16:00:19 +0100 Subject: [PATCH 206/634] prepare_genome: add basic nf-test tests --- .../local/prepare_genome/tests/main.nf.test | 94 +++++++++ .../prepare_genome/tests/main.nf.test.snap | 180 ++++++++++++++++++ .../prepare_genome/tests/nextflow.config | 24 +++ 3 files changed, 298 insertions(+) create mode 100644 subworkflows/local/prepare_genome/tests/main.nf.test create mode 100644 subworkflows/local/prepare_genome/tests/main.nf.test.snap create mode 100644 subworkflows/local/prepare_genome/tests/nextflow.config diff --git a/subworkflows/local/prepare_genome/tests/main.nf.test b/subworkflows/local/prepare_genome/tests/main.nf.test new file mode 100644 index 000000000..129b66127 --- /dev/null +++ b/subworkflows/local/prepare_genome/tests/main.nf.test @@ -0,0 +1,94 @@ +nextflow_workflow { + + name "Test Subworkflow PREPARE_GENOME" + script "../main.nf" + workflow "PREPARE_GENOME" + config "./nextflow.config" + + tag "PREPARE_GENOME" + + tag "BBMAP_BBSPLIT" + tag "CUSTOM_CATADDITIONALFASTA" + tag "CUSTOM_GETCHROMSIZES" + tag "GFFREAD" + tag "GTF2BED" + tag "GTF_FILTER" + tag "GUNZIP" + tag "HISAT2_BUILD" + tag "HISAT2_EXTRACTSPLICESITES" + tag "KALLISTO_INDEX" + tag "PREPROCESS_TRANSCRIPTS_FASTA_GENCODE" + tag "RSEM_PREPAREREFERENCE" + tag "RSEM_PREPAREREFERENCE" + tag "SALMON_INDEX" + tag "SORTMERNA" + tag "STAR_GENOMEGENERATE" + tag "STAR_GENOMEGENERATE_IGENOMES" + tag "UNTAR" + + test("star - with igenomes") { + + when { + workflow { + """ + gencode = false + featurecounts_group_type = 'gene_biotype' + aligner = 'star_salmon,star_rsem,hisat2' + pseudo_aligner = 'salmon' + skip_gtf_filter = true + skip_bbsplit = true + skip_sortmerna = true + skip_alignment = true + skip_pseudo_alignment = true + + input[0] = file(params.pipelines_testdata_base_path + 'reference/genome.fasta', checkIfExists: true) + input[1] = file(params.pipelines_testdata_base_path + 'reference/genes_with_empty_tid.gtf', checkIfExists: true) + input[2] = file(params.pipelines_testdata_base_path + 'reference/genes.gff', checkIfExists: true) + input[3] = file(params.pipelines_testdata_base_path + 'reference/gfp.fa', checkIfExists: true) + input[4] = file(params.pipelines_testdata_base_path + 'reference/transcriptome.fasta', checkIfExists: true) + input[5] = null + input[6] = null + input[7] = file(params.pipelines_testdata_base_path + 'reference/bbsplit_fasta_list.txt', checkIfExists: true) + input[8] = null + input[9] = null + input[10] = file(params.pipelines_testdata_base_path + 'reference/rsem.tar.gz', checkIfExists: true) + input[11] = file(params.pipelines_testdata_base_path + 'reference/salmon.tar.gz', checkIfExists: true) + input[12] = null + input[13] = file(params.pipelines_testdata_base_path + 'reference/hisat2.tar.gz', checkIfExists: true) + input[14] = null + input[15] = null + input[16] = gencode + input[17] = featurecounts_group_type + input[18] = aligner + input[19] = pseudo_aligner + input[20] = skip_gtf_filter + input[21] = skip_bbsplit + input[22] = skip_sortmerna + input[23] = skip_alignment + input[24] = skip_pseudo_alignment + """ + } + } + + then { + assertAll( + { assert workflow.success}, + { assert snapshot(file(workflow.out.transcript_fasta[0][1]).name).match("transcript_fasta") }, + { assert snapshot(file(workflow.out.salmon_index[0][1]).name).match("salmon_index") }, + { assert snapshot(workflow.out.fasta).match("fasta") }, + { assert snapshot(workflow.out.gtf).match("gtf") }, + { assert snapshot(workflow.out.fai).match("fai") }, + { assert snapshot(workflow.out.gene_bed).match("gene_bed") }, + { assert snapshot(workflow.out.chrom_sizes).match("chrom_sizes") }, + { assert snapshot(workflow.out.splicesites).match("splicesites") }, + { assert snapshot(workflow.out.bbsplit_index).match("bbsplit_index") }, + { assert snapshot(workflow.out.sortmerna_index).match("sortmerna_index") }, + { assert snapshot(workflow.out.star_index).match("star_index") }, + { assert snapshot(workflow.out.rsem_index).match("rsem_index") }, + { assert snapshot(workflow.out.hisat2_index).match("hisat2_index") }, + { assert snapshot(workflow.out.kallisto_index).match("kallisto_index") }, + { assert snapshot(workflow.out.versions).match("versions") } + ) + } + } +} diff --git a/subworkflows/local/prepare_genome/tests/main.nf.test.snap b/subworkflows/local/prepare_genome/tests/main.nf.test.snap new file mode 100644 index 000000000..57f9f9f51 --- /dev/null +++ b/subworkflows/local/prepare_genome/tests/main.nf.test.snap @@ -0,0 +1,180 @@ +{ + "bbsplit_index": { + "content": [ + [ + + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-08T15:59:35.434161" + }, + "gene_bed": { + "content": [ + [ + "genome_gfp.bed:md5,991993ebef1def1d5823632c21177ec3" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-08T15:59:35.394732" + }, + "fasta": { + "content": [ + [ + "genome_gfp.fasta:md5,e23e302af63736a199985a169fdac055" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-08T15:59:35.356464" + }, + "fai": { + "content": [ + [ + "genome_gfp.fasta.fai:md5,8fa54c6bd2ea6a369efbb8ab4f30156a" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-08T15:59:35.376112" + }, + "splicesites": { + "content": [ + [ + + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-08T15:59:35.424874" + }, + "chrom_sizes": { + "content": [ + [ + "genome_gfp.fasta.sizes:md5,9b755f8f349b14accefb4d859f84de26" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-08T15:59:35.412903" + }, + "star_index": { + "content": [ + [ + + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-08T15:59:35.452927" + }, + "versions": { + "content": [ + [ + "versions.yml:md5,1cd265cb86a23a27f683ffb2459f37f5", + "versions.yml:md5,58fa668eeacb984c10df6f856f2c9291", + "versions.yml:md5,71252f1a221be05593361acccb99506b" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-08T15:59:35.490956" + }, + "gtf": { + "content": [ + [ + "genome_gfp.gtf:md5,5e63cda3dcafc0d6ad0a738133af9d54" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-08T15:59:35.363682" + }, + "kallisto_index": { + "content": [ + [ + + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-08T15:59:35.481666" + }, + "sortmerna_index": { + "content": [ + [ + + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-08T15:59:35.44388" + }, + "transcript_fasta": { + "content": [ + "n" + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-08T15:59:35.35063" + }, + "salmon_index": { + "content": [ + "n" + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-08T15:59:35.353967" + }, + "rsem_index": { + "content": [ + [ + + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-08T15:59:35.462738" + }, + "hisat2_index": { + "content": [ + [ + + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-08T15:59:35.472712" + } +} \ No newline at end of file diff --git a/subworkflows/local/prepare_genome/tests/nextflow.config b/subworkflows/local/prepare_genome/tests/nextflow.config new file mode 100644 index 000000000..3fdd992f4 --- /dev/null +++ b/subworkflows/local/prepare_genome/tests/nextflow.config @@ -0,0 +1,24 @@ +process { + withName: 'GFFREAD' { + ext.args = '--keep-exon-attrs -F -T' + } + + withName: 'RSEM_PREPAREREFERENCE_GENOME' { + ext.args = '--star' + } + + withName: 'STAR_GENOMEGENERATE.*' { + ext.args = '--genomeSAindexNbases 9' + } + + withName: 'STAR_ALIGN.*' { + ext.args = '--readFilesCommand zcat --outSAMtype BAM SortedByCoordinate --outWigType bedGraph --outWigStrand Unstranded' + } + + withName: 'UNTAR_.*' { + ext.args2 = '--no-same-owner' + } +} + +// Fix chown issue for the output star folder +docker.runOptions = '--platform=linux/amd64 -u $(id -u):$(id -g)' From c827f74fb9cb4aa72d2ec0c37112d1d85442935d Mon Sep 17 00:00:00 2001 From: maxulysse Date: Fri, 8 Mar 2024 16:42:14 +0100 Subject: [PATCH 207/634] update samtools/sort module --- modules.json | 4 +- modules/nf-core/samtools/sort/main.nf | 28 ++++-- modules/nf-core/samtools/sort/meta.yml | 32 ++++-- .../nf-core/samtools/sort/tests/main.nf.test | 38 ++++++- .../samtools/sort/tests/main.nf.test.snap | 99 ++++++++++++++++++- .../samtools/sort/tests/nextflow.config | 3 +- .../nf-core/bam_sort_stats_samtools/main.nf | 2 +- 7 files changed, 181 insertions(+), 25 deletions(-) diff --git a/modules.json b/modules.json index 8c086c900..88382b1fc 100644 --- a/modules.json +++ b/modules.json @@ -191,7 +191,7 @@ }, "samtools/sort": { "branch": "master", - "git_sha": "f4596fe0bdc096cf53ec4497e83defdb3a94ff62", + "git_sha": "4352dbdb09ec40db71e9b172b97a01dcf5622c26", "installed_by": ["bam_sort_stats_samtools"] }, "samtools/stats": { @@ -290,7 +290,7 @@ }, "bam_sort_stats_samtools": { "branch": "master", - "git_sha": "f4596fe0bdc096cf53ec4497e83defdb3a94ff62", + "git_sha": "4352dbdb09ec40db71e9b172b97a01dcf5622c26", "installed_by": ["fastq_align_hisat2"] }, "bam_stats_samtools": { diff --git a/modules/nf-core/samtools/sort/main.nf b/modules/nf-core/samtools/sort/main.nf index cdd8305d3..fc374f980 100644 --- a/modules/nf-core/samtools/sort/main.nf +++ b/modules/nf-core/samtools/sort/main.nf @@ -8,11 +8,14 @@ process SAMTOOLS_SORT { 'biocontainers/samtools:1.19.2--h50ea8bc_0' }" input: - tuple val(meta), path(bam) + tuple val(meta) , path(bam) + tuple val(meta2), path(fasta) output: - tuple val(meta), path("*.bam"), emit: bam - tuple val(meta), path("*.csi"), emit: csi, optional: true + tuple val(meta), path("*.bam"), emit: bam, optional: true + tuple val(meta), path("*.cram"), emit: cram, optional: true + tuple val(meta), path("*.crai"), emit: crai, optional: true + tuple val(meta), path("*.csi"), emit: csi, optional: true path "versions.yml" , emit: versions when: @@ -21,14 +24,24 @@ process SAMTOOLS_SORT { script: def args = task.ext.args ?: '' def prefix = task.ext.prefix ?: "${meta.id}" + def extension = args.contains("--output-fmt sam") ? "sam" : + args.contains("--output-fmt cram") ? "cram" : + "bam" + def reference = fasta ? "--reference ${fasta}" : "" if ("$bam" == "${prefix}.bam") error "Input and output names are the same, use \"task.ext.prefix\" to disambiguate!" + """ + samtools cat \\ + --threads $task.cpus \\ + ${bam} \\ + | \\ samtools sort \\ $args \\ - -@ $task.cpus \\ - -o ${prefix}.bam \\ - -T $prefix \\ - $bam + -T ${prefix} \\ + --threads $task.cpus \\ + ${reference} \\ + -o ${prefix}.${extension} \\ + - cat <<-END_VERSIONS > versions.yml "${task.process}": @@ -40,6 +53,7 @@ process SAMTOOLS_SORT { def prefix = task.ext.prefix ?: "${meta.id}" """ touch ${prefix}.bam + touch ${prefix}.bam.csi cat <<-END_VERSIONS > versions.yml "${task.process}": diff --git a/modules/nf-core/samtools/sort/meta.yml b/modules/nf-core/samtools/sort/meta.yml index 2200de72f..341a7d0eb 100644 --- a/modules/nf-core/samtools/sort/meta.yml +++ b/modules/nf-core/samtools/sort/meta.yml @@ -23,8 +23,18 @@ input: e.g. [ id:'test', single_end:false ] - bam: type: file - description: BAM/CRAM/SAM file + description: BAM/CRAM/SAM file(s) pattern: "*.{bam,cram,sam}" + - meta2: + type: map + description: | + Groovy Map containing reference information + e.g. [ id:'genome' ] + - fasta: + type: file + description: Reference genome FASTA file + pattern: "*.{fa,fasta,fna}" + optional: true output: - meta: type: map @@ -33,19 +43,29 @@ output: e.g. [ id:'test', single_end:false ] - bam: type: file - description: Sorted BAM/CRAM/SAM file - pattern: "*.{bam,cram,sam}" - - versions: + description: Sorted BAM file + pattern: "*.{bam}" + - cram: type: file - description: File containing software versions - pattern: "versions.yml" + description: Sorted CRAM file + pattern: "*.{cram}" + - crai: + type: file + description: CRAM index file (optional) + pattern: "*.crai" - csi: type: file description: BAM index file (optional) pattern: "*.csi" + - versions: + type: file + description: File containing software versions + pattern: "versions.yml" authors: - "@drpatelh" - "@ewels" + - "@matthdsm" maintainers: - "@drpatelh" - "@ewels" + - "@matthdsm" diff --git a/modules/nf-core/samtools/sort/tests/main.nf.test b/modules/nf-core/samtools/sort/tests/main.nf.test index 31e24b88b..8360e2b1f 100644 --- a/modules/nf-core/samtools/sort/tests/main.nf.test +++ b/modules/nf-core/samtools/sort/tests/main.nf.test @@ -13,15 +13,43 @@ nextflow_process { config "./nextflow.config" when { - params { - outdir = "$outputDir" + 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.bam', checkIfExists: true) + ]) + input[1] = Channel.of([ + [ id:'fasta' ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) + ]) + """ } + } + + then { + assertAll ( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("cram") { + + config "./nextflow.config" + + 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.bam', checkIfExists: true) ]) + input[1] = Channel.of([ + [ id:'fasta' ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) + ]) """ } } @@ -37,7 +65,7 @@ nextflow_process { test("bam_stub") { config "./nextflow.config" - options "-stub-run" + options "-stub" when { params { @@ -49,6 +77,10 @@ nextflow_process { [ id:'test', single_end:false ], // meta map file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.bam', checkIfExists: true) ]) + input[1] = Channel.of([ + [ id:'fasta' ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) + ]) """ } } diff --git a/modules/nf-core/samtools/sort/tests/main.nf.test.snap b/modules/nf-core/samtools/sort/tests/main.nf.test.snap index a7cf02101..384776564 100644 --- a/modules/nf-core/samtools/sort/tests/main.nf.test.snap +++ b/modules/nf-core/samtools/sort/tests/main.nf.test.snap @@ -1,4 +1,69 @@ { + "cram": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.sorted.bam:md5,bc0b7c25da26384a006ed84cc9e4da23" + ] + ], + "1": [ + + ], + "2": [ + + ], + "3": [ + [ + { + "id": "test", + "single_end": false + }, + "test.sorted.bam.csi:md5,8d4e836c2fed6c0bf874d5e8cdba5831" + ] + ], + "4": [ + "versions.yml:md5,e6d43fefc9a8bff91c2ce6e3a1716eca" + ], + "bam": [ + [ + { + "id": "test", + "single_end": false + }, + "test.sorted.bam:md5,bc0b7c25da26384a006ed84cc9e4da23" + ] + ], + "crai": [ + + ], + "cram": [ + + ], + "csi": [ + [ + { + "id": "test", + "single_end": false + }, + "test.sorted.bam.csi:md5,8d4e836c2fed6c0bf874d5e8cdba5831" + ] + ], + "versions": [ + "versions.yml:md5,e6d43fefc9a8bff91c2ce6e3a1716eca" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-03-04T15:08:00.830294" + }, "bam_stub_bam": { "content": [ "test.sorted.bam" @@ -30,13 +95,25 @@ "id": "test", "single_end": false }, - "test.sorted.bam:md5,c6ea1346ec4aae007eb40b708935088c" + "test.sorted.bam:md5,bc0b7c25da26384a006ed84cc9e4da23" ] ], "1": [ ], "2": [ + + ], + "3": [ + [ + { + "id": "test", + "single_end": false + }, + "test.sorted.bam.csi:md5,8d4e836c2fed6c0bf874d5e8cdba5831" + ] + ], + "4": [ "versions.yml:md5,e6d43fefc9a8bff91c2ce6e3a1716eca" ], "bam": [ @@ -45,11 +122,23 @@ "id": "test", "single_end": false }, - "test.sorted.bam:md5,c6ea1346ec4aae007eb40b708935088c" + "test.sorted.bam:md5,bc0b7c25da26384a006ed84cc9e4da23" ] ], - "csi": [ + "crai": [ + + ], + "cram": [ + ], + "csi": [ + [ + { + "id": "test", + "single_end": false + }, + "test.sorted.bam.csi:md5,8d4e836c2fed6c0bf874d5e8cdba5831" + ] ], "versions": [ "versions.yml:md5,e6d43fefc9a8bff91c2ce6e3a1716eca" @@ -58,8 +147,8 @@ ], "meta": { "nf-test": "0.8.4", - "nextflow": "24.01.0" + "nextflow": "23.10.1" }, - "timestamp": "2024-02-13T16:14:52.736359271" + "timestamp": "2024-03-04T15:07:48.773803" } } \ No newline at end of file diff --git a/modules/nf-core/samtools/sort/tests/nextflow.config b/modules/nf-core/samtools/sort/tests/nextflow.config index d0f350868..f642771f5 100644 --- a/modules/nf-core/samtools/sort/tests/nextflow.config +++ b/modules/nf-core/samtools/sort/tests/nextflow.config @@ -1,7 +1,8 @@ process { withName: SAMTOOLS_SORT { - ext.prefix = { "${meta.id}.sorted" } + ext.prefix = { "${meta.id}.sorted" } + ext.args = "--write-index" } } diff --git a/subworkflows/nf-core/bam_sort_stats_samtools/main.nf b/subworkflows/nf-core/bam_sort_stats_samtools/main.nf index fc1c652b9..b716375b0 100644 --- a/subworkflows/nf-core/bam_sort_stats_samtools/main.nf +++ b/subworkflows/nf-core/bam_sort_stats_samtools/main.nf @@ -15,7 +15,7 @@ workflow BAM_SORT_STATS_SAMTOOLS { ch_versions = Channel.empty() - SAMTOOLS_SORT ( ch_bam ) + SAMTOOLS_SORT ( ch_bam, ch_fasta ) ch_versions = ch_versions.mix(SAMTOOLS_SORT.out.versions.first()) SAMTOOLS_INDEX ( SAMTOOLS_SORT.out.bam ) From 12f04418dc21946b1f6b0637ee35e757be38a54e Mon Sep 17 00:00:00 2001 From: maxulysse Date: Fri, 8 Mar 2024 16:44:36 +0100 Subject: [PATCH 208/634] fix samtools/sort usage --- workflows/rnaseq/main.nf | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/workflows/rnaseq/main.nf b/workflows/rnaseq/main.nf index 962b1a906..00a518d29 100755 --- a/workflows/rnaseq/main.nf +++ b/workflows/rnaseq/main.nf @@ -381,7 +381,8 @@ workflow RNASEQ { // Name sort BAM before passing to Salmon SAMTOOLS_SORT ( - BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS_TRANSCRIPTOME.out.bam + BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS_TRANSCRIPTOME.out.bam, + ch_fasta.map { [ [:], it ] } ) // Only run prepare_for_rsem.py on paired-end BAM files From 8551a0d4368dd82a2a5e8880d088805dc52865eb Mon Sep 17 00:00:00 2001 From: maxulysse Date: Fri, 8 Mar 2024 17:03:59 +0100 Subject: [PATCH 209/634] update local snaps --- .../local/align_star/tests/main.nf.test.snap | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/subworkflows/local/align_star/tests/main.nf.test.snap b/subworkflows/local/align_star/tests/main.nf.test.snap index e349a06e1..8cb85e980 100644 --- a/subworkflows/local/align_star/tests/main.nf.test.snap +++ b/subworkflows/local/align_star/tests/main.nf.test.snap @@ -295,7 +295,7 @@ "id": "test", "single_end": false }, - "test.bam.bai:md5,8bd17c254a618d5ef0cc2642abc00e40" + "test.bam.bai:md5,25b78d2e41dc31350004b7ab9e5c3618" ] ] ], @@ -303,7 +303,7 @@ "nf-test": "0.8.4", "nextflow": "24.01.0" }, - "timestamp": "2024-03-07T11:59:42.432603" + "timestamp": "2024-03-08T17:02:42.995047" }, "without igenomes - orig_bam": { "content": [ @@ -341,7 +341,7 @@ "id": "test", "single_end": false }, - "test.bam:md5,d3f9bc6f3f5c44bde7dd97dfa43f1803" + "test.bam:md5,f75b29383d9c16a466ae22dc676b3022" ] ] ], @@ -349,7 +349,7 @@ "nf-test": "0.8.4", "nextflow": "24.01.0" }, - "timestamp": "2024-03-07T11:59:42.436304" + "timestamp": "2024-03-08T17:02:43.076908" }, "with igenomes - orig_bam": { "content": [ @@ -413,7 +413,7 @@ "id": "test", "single_end": false }, - "test.bam:md5,994a3ee28ad0faf247e5b931e017f9ed" + "test.bam:md5,37c080a0d854fffee57360f2176670a8" ] ] ], @@ -421,7 +421,7 @@ "nf-test": "0.8.4", "nextflow": "24.01.0" }, - "timestamp": "2024-03-07T12:00:34.95178" + "timestamp": "2024-03-08T17:03:38.323083" }, "without igenomes - bam_sorted": { "content": [ @@ -449,7 +449,7 @@ "id": "test", "single_end": false }, - "test.bam.bai:md5,8bd17c254a618d5ef0cc2642abc00e40" + "test.bam.bai:md5,25b78d2e41dc31350004b7ab9e5c3618" ] ] ], @@ -457,7 +457,7 @@ "nf-test": "0.8.4", "nextflow": "24.01.0" }, - "timestamp": "2024-03-07T12:00:34.937314" + "timestamp": "2024-03-08T17:03:38.264526" }, "with igenomes - log_final": { "content": [ From 4a5c107bb788dc98ee86ddc313239e2ddc306a3b Mon Sep 17 00:00:00 2001 From: Adam Talbot <12817534+adamrtalbot@users.noreply.github.com> Date: Fri, 8 Mar 2024 16:57:03 +0000 Subject: [PATCH 210/634] Fix bugs in quantify_pseudoalignment Fixes: - a single sample will now work and not raise an error when trying to parse the count data - duplicate transcripts now work with Salmon (previously it dropped one of them) --- modules.json | 2 +- .../summarizedexperiment/main.nf | 2 +- .../templates/summarizedexperiment.r | 7 ++-- .../tests/main.nf.test.snap | 32 +++++++++---------- .../local/prepare_genome/nextflow.config | 3 +- .../tests/main.nf.test | 4 +-- 6 files changed, 25 insertions(+), 25 deletions(-) diff --git a/modules.json b/modules.json index 8c086c900..e04323423 100644 --- a/modules.json +++ b/modules.json @@ -226,7 +226,7 @@ }, "summarizedexperiment/summarizedexperiment": { "branch": "master", - "git_sha": "874dace043f1400fddca70dc9786fa4e82e6f5ac", + "git_sha": "92e403d44bee2574c7f4808e18c3b3efbe4fdb06", "installed_by": ["modules"] }, "trimgalore": { diff --git a/modules/nf-core/summarizedexperiment/summarizedexperiment/main.nf b/modules/nf-core/summarizedexperiment/summarizedexperiment/main.nf index 8d4ac483e..cc37092fd 100644 --- a/modules/nf-core/summarizedexperiment/summarizedexperiment/main.nf +++ b/modules/nf-core/summarizedexperiment/summarizedexperiment/main.nf @@ -30,7 +30,7 @@ process SUMMARIZEDEXPERIMENT_SUMMARIZEDEXPERIMENT { cat <<-END_VERSIONS > versions.yml "${task.process}": - r: \$( R --version | sed '1!d; s/.*version //; s/ .*//' ) + bioconductor-summarizedexperiment: \$(Rscript -e "library(SummarizedExperiment); cat(as.character(packageVersion('SummarizedExperiment')))") END_VERSIONS """ } diff --git a/modules/nf-core/summarizedexperiment/summarizedexperiment/templates/summarizedexperiment.r b/modules/nf-core/summarizedexperiment/summarizedexperiment/templates/summarizedexperiment.r index e2f74e632..a7f150058 100644 --- a/modules/nf-core/summarizedexperiment/summarizedexperiment/templates/summarizedexperiment.r +++ b/modules/nf-core/summarizedexperiment/summarizedexperiment/templates/summarizedexperiment.r @@ -154,7 +154,7 @@ if ('assay_names' %in% names(args_opt)){ assay_list <- lapply(matrix_files, function(m){ mat <- read_delim_flexible(m, row.names = 1, stringsAsFactors = FALSE) - mat[,sapply(mat, is.numeric)] + mat[,sapply(mat, is.numeric), drop = FALSE] }) checkRowColNames(assay_list) @@ -174,7 +174,7 @@ if ('$coldata' != ''){ ) assay_list <- lapply(assay_list, function(m){ - m[,rownames(coldata)] + m[,rownames(coldata), drop = FALSE] }) colData(se) <- DataFrame(coldata) @@ -190,7 +190,7 @@ if ('$rowdata' != ''){ ) assay_list <- lapply(assay_list, function(m){ - m[rownames(rowdata), ] + m[rownames(rowdata), , drop = FALSE] }) rowData(se) <- DataFrame(rowdata) @@ -232,7 +232,6 @@ summarizedexperiment.version <- as.character(packageVersion('SummarizedExperimen writeLines( c( '"${task.process}":', - paste(' r-base:', r.version), paste(' bioconductor-summarizedexperiment:', summarizedexperiment.version) ), 'versions.yml') diff --git a/modules/nf-core/summarizedexperiment/summarizedexperiment/tests/main.nf.test.snap b/modules/nf-core/summarizedexperiment/summarizedexperiment/tests/main.nf.test.snap index 769d37f94..6989f937e 100644 --- a/modules/nf-core/summarizedexperiment/summarizedexperiment/tests/main.nf.test.snap +++ b/modules/nf-core/summarizedexperiment/summarizedexperiment/tests/main.nf.test.snap @@ -36,14 +36,14 @@ "versions_single_matrix": { "content": [ [ - "versions.yml:md5,1fdcee094bb7ec091b4e445b933d0db3" + "versions.yml:md5,9fb424df9dedf0dc55c95215ae802bb9" ] ], "meta": { "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-02-09T14:03:08.335086603" + "timestamp": "2024-03-08T14:45:26.13363" }, "gene_log_multi_matrix_rowdata_stub": { "content": [ @@ -73,38 +73,38 @@ "versions_multi_matrix_rowdata_stub": { "content": [ [ - "versions.yml:md5,290f4dc3e123c9468040095de6ffe2e2" + "versions.yml:md5,9fb424df9dedf0dc55c95215ae802bb9" ] ], "meta": { "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-02-09T13:57:52.239867923" + "timestamp": "2024-03-08T14:46:04.546156" }, "versions_multi_matrix_stub": { "content": [ [ - "versions.yml:md5,290f4dc3e123c9468040095de6ffe2e2" + "versions.yml:md5,9fb424df9dedf0dc55c95215ae802bb9" ] ], "meta": { "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-02-09T13:58:07.911717413" + "timestamp": "2024-03-08T14:46:21.128541" }, "versions_multi_matrix_rowdata_coldata_stub": { "content": [ [ - "versions.yml:md5,290f4dc3e123c9468040095de6ffe2e2" + "versions.yml:md5,9fb424df9dedf0dc55c95215ae802bb9" ] ], "meta": { "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-02-09T13:57:39.554437332" + "timestamp": "2024-03-08T14:45:43.440258" }, "gene_log_multi_matrix": { "content": "7c35131fdd46dcdba6c71f7f11d5b2c7", @@ -142,26 +142,26 @@ "versions_single_matrix_stub": { "content": [ [ - "versions.yml:md5,290f4dc3e123c9468040095de6ffe2e2" + "versions.yml:md5,9fb424df9dedf0dc55c95215ae802bb9" ] ], "meta": { "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-02-09T13:58:23.263373495" + "timestamp": "2024-03-08T14:46:37.670798" }, "versions_multi_matrix_rowdata": { "content": [ [ - "versions.yml:md5,1fdcee094bb7ec091b4e445b933d0db3" + "versions.yml:md5,9fb424df9dedf0dc55c95215ae802bb9" ] ], "meta": { "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-02-09T14:02:24.434806727" + "timestamp": "2024-03-08T14:44:42.420728" }, "gene_log_multi_matrix_rowdata_coldata": { "content": "7c35131fdd46dcdba6c71f7f11d5b2c7", @@ -174,25 +174,25 @@ "versions_multi_matrix": { "content": [ [ - "versions.yml:md5,1fdcee094bb7ec091b4e445b933d0db3" + "versions.yml:md5,9fb424df9dedf0dc55c95215ae802bb9" ] ], "meta": { "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-02-09T14:02:46.374127565" + "timestamp": "2024-03-08T14:45:04.188507" }, "versions_multi_matrix_rowdata_coldata": { "content": [ [ - "versions.yml:md5,1fdcee094bb7ec091b4e445b933d0db3" + "versions.yml:md5,9fb424df9dedf0dc55c95215ae802bb9" ] ], "meta": { "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-02-09T14:02:01.257461683" + "timestamp": "2024-03-08T14:44:20.698714" } } \ No newline at end of file diff --git a/subworkflows/local/prepare_genome/nextflow.config b/subworkflows/local/prepare_genome/nextflow.config index cb78cb9e3..a1006a63e 100644 --- a/subworkflows/local/prepare_genome/nextflow.config +++ b/subworkflows/local/prepare_genome/nextflow.config @@ -39,7 +39,8 @@ process { withName: 'SALMON_INDEX' { ext.args = { [ params.gencode ? '--gencode' : '', - params.pseudo_aligner_kmer_size ? "-k ${params.pseudo_aligner_kmer_size}": '' + params.pseudo_aligner_kmer_size ? "-k ${params.pseudo_aligner_kmer_size}": '', + '--keepDuplicates' ].join(' ').trim() } publishDir = [ path: { params.save_reference ? "${params.outdir}/genome/index" : params.outdir }, diff --git a/subworkflows/local/quantify_pseudo_alignment/tests/main.nf.test b/subworkflows/local/quantify_pseudo_alignment/tests/main.nf.test index fcf86ee1e..30713d71e 100644 --- a/subworkflows/local/quantify_pseudo_alignment/tests/main.nf.test +++ b/subworkflows/local/quantify_pseudo_alignment/tests/main.nf.test @@ -29,7 +29,7 @@ nextflow_workflow { """ input[0] = [ [ id: 'samplesheet' ], - file(params.pipelines_testdata_base_path + '/csv/samplesheet_micro.csv', checkIfExists: true) + file("$moduleTestDir/samplesheet.csv", checkIfExists: true) ] input[1] = [ [ id: 'test' ], @@ -83,7 +83,7 @@ nextflow_workflow { """ input[0] = [ [ id: 'samplesheet' ], - file(params.pipelines_testdata_base_path + '/csv/samplesheet_micro.csv', checkIfExists: true) + file("$moduleTestDir/samplesheet.csv", checkIfExists: true) ] input[1] = [ [ id: 'test' ], From b179291b5e0df77396ab95f70fd08cea5d5fd4f2 Mon Sep 17 00:00:00 2001 From: Adam Talbot <12817534+adamrtalbot@users.noreply.github.com> Date: Fri, 8 Mar 2024 16:58:33 +0000 Subject: [PATCH 211/634] fixup --- .../tests/main.nf.test.snap | 646 ++++++++++++++++++ .../tests/samplesheet.csv | 2 + 2 files changed, 648 insertions(+) create mode 100644 subworkflows/local/quantify_pseudo_alignment/tests/main.nf.test.snap create mode 100644 subworkflows/local/quantify_pseudo_alignment/tests/samplesheet.csv diff --git a/subworkflows/local/quantify_pseudo_alignment/tests/main.nf.test.snap b/subworkflows/local/quantify_pseudo_alignment/tests/main.nf.test.snap new file mode 100644 index 000000000..6f5476435 --- /dev/null +++ b/subworkflows/local/quantify_pseudo_alignment/tests/main.nf.test.snap @@ -0,0 +1,646 @@ +{ + "kallisto": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + [ + "abundance.h5:md5,b9b0d0638edc9bdd798565337c76d199", + "abundance.tsv:md5,31b5bf33a3467ae5de3b4ef8ac797cf5", + "kallisto_quant.log:md5,b83608e31db11067d8ab5ad258fa2dd7", + "run_info.json:md5,b0cefe3809d1c1c0a24e56b92cb684e4" + ] + ] + ], + "1": [ + [ + { + "id": "test" + }, + "test.log:md5,b83608e31db11067d8ab5ad258fa2dd7" + ] + ], + "10": [ + [ + { + "id": "all_samples" + }, + "all_samples.SummarizedExperiment.rds:md5,ac8ef4704a4dbbbe5bbf549f25134289" + ] + ], + "11": [ + [ + { + "id": "all_samples" + }, + "all_samples.SummarizedExperiment.rds:md5,c4996a093cc81a81ffa89ac81d174088" + ] + ], + "12": [ + [ + { + "id": "all_samples" + }, + "all_samples.SummarizedExperiment.rds:md5,ce6e18045433beb5889bc90f2d2a210e" + ] + ], + "13": [ + [ + { + "id": "all_samples" + }, + "all_samples.transcript_counts.tsv:md5,c5a43880cd87d00ef40de5df9ca3afa7" + ] + ], + "14": [ + [ + { + "id": "all_samples" + }, + "all_samples.transcript_tpm.tsv:md5,de458e1c2a579e53bd7671c5176f5d0c" + ] + ], + "15": [ + [ + { + "id": "all_samples" + }, + "all_samples.SummarizedExperiment.rds:md5,8934d6979e01bdef0308830b442846af" + ] + ], + "16": [ + "versions.yml:md5,b44caeec65491d47e098c7ddaf024b96", + "versions.yml:md5,dbf98ec672f75a683c28dcf4121364d2", + "versions.yml:md5,e9e7d18c3de83f1113fb1ff0c55d35ed", + "versions.yml:md5,ea39658f8685118d81d42acd451e66ea" + ], + "2": [ + [ + { + "id": "all_samples" + }, + "all_samples.gene_tpm.tsv:md5,23fa0c64cfbd198806b53897de791b8b" + ] + ], + "3": [ + [ + { + "id": "all_samples" + }, + "all_samples.gene_counts.tsv:md5,4ba44e5ebc9ed0ca2ca008d10a1dddc3" + ] + ], + "4": [ + [ + { + "id": "all_samples" + }, + "all_samples.gene_lengths.tsv:md5,b031192af7a8f64dcc887978a69fdbb7" + ] + ], + "5": [ + [ + { + "id": "all_samples" + }, + "all_samples.gene_counts_length_scaled.tsv:md5,078746568e3fd0c995559352b661b2d9" + ] + ], + "6": [ + [ + { + "id": "all_samples" + }, + "all_samples.gene_counts_scaled.tsv:md5,df27cc69d4d66f36f23be79d8eb9692e" + ] + ], + "7": [ + [ + { + "id": "all_samples" + }, + "all_samples.transcript_tpm.tsv:md5,de458e1c2a579e53bd7671c5176f5d0c" + ] + ], + "8": [ + [ + { + "id": "all_samples" + }, + "all_samples.transcript_counts.tsv:md5,c5a43880cd87d00ef40de5df9ca3afa7" + ] + ], + "9": [ + [ + { + "id": "all_samples" + }, + "all_samples.transcript_lengths.tsv:md5,131952a97905469ab012f0f46e52405c" + ] + ], + "counts_gene": [ + [ + { + "id": "all_samples" + }, + "all_samples.gene_counts.tsv:md5,4ba44e5ebc9ed0ca2ca008d10a1dddc3" + ] + ], + "counts_gene_length_scaled": [ + [ + { + "id": "all_samples" + }, + "all_samples.gene_counts_length_scaled.tsv:md5,078746568e3fd0c995559352b661b2d9" + ] + ], + "counts_gene_scaled": [ + [ + { + "id": "all_samples" + }, + "all_samples.gene_counts_scaled.tsv:md5,df27cc69d4d66f36f23be79d8eb9692e" + ] + ], + "counts_transcript": [ + [ + { + "id": "all_samples" + }, + "all_samples.transcript_counts.tsv:md5,c5a43880cd87d00ef40de5df9ca3afa7" + ] + ], + "lengths_gene": [ + [ + { + "id": "all_samples" + }, + "all_samples.gene_lengths.tsv:md5,b031192af7a8f64dcc887978a69fdbb7" + ] + ], + "lengths_transcript": [ + [ + { + "id": "all_samples" + }, + "all_samples.transcript_lengths.tsv:md5,131952a97905469ab012f0f46e52405c" + ] + ], + "merged_counts_transcript": [ + [ + { + "id": "all_samples" + }, + "all_samples.transcript_counts.tsv:md5,c5a43880cd87d00ef40de5df9ca3afa7" + ] + ], + "merged_gene_rds": [ + [ + { + "id": "all_samples" + }, + "all_samples.SummarizedExperiment.rds:md5,ac8ef4704a4dbbbe5bbf549f25134289" + ] + ], + "merged_gene_rds_length_scaled": [ + [ + { + "id": "all_samples" + }, + "all_samples.SummarizedExperiment.rds:md5,c4996a093cc81a81ffa89ac81d174088" + ] + ], + "merged_gene_rds_scaled": [ + [ + { + "id": "all_samples" + }, + "all_samples.SummarizedExperiment.rds:md5,ce6e18045433beb5889bc90f2d2a210e" + ] + ], + "merged_tpm_transcript": [ + [ + { + "id": "all_samples" + }, + "all_samples.transcript_tpm.tsv:md5,de458e1c2a579e53bd7671c5176f5d0c" + ] + ], + "merged_transcript_rds": [ + [ + { + "id": "all_samples" + }, + "all_samples.SummarizedExperiment.rds:md5,8934d6979e01bdef0308830b442846af" + ] + ], + "multiqc": [ + [ + { + "id": "test" + }, + "test.log:md5,b83608e31db11067d8ab5ad258fa2dd7" + ] + ], + "results": [ + [ + { + "id": "test" + }, + [ + "abundance.h5:md5,b9b0d0638edc9bdd798565337c76d199", + "abundance.tsv:md5,31b5bf33a3467ae5de3b4ef8ac797cf5", + "kallisto_quant.log:md5,b83608e31db11067d8ab5ad258fa2dd7", + "run_info.json:md5,b0cefe3809d1c1c0a24e56b92cb684e4" + ] + ] + ], + "tpm_gene": [ + [ + { + "id": "all_samples" + }, + "all_samples.gene_tpm.tsv:md5,23fa0c64cfbd198806b53897de791b8b" + ] + ], + "tpm_transcript": [ + [ + { + "id": "all_samples" + }, + "all_samples.transcript_tpm.tsv:md5,de458e1c2a579e53bd7671c5176f5d0c" + ] + ], + "versions": [ + "versions.yml:md5,b44caeec65491d47e098c7ddaf024b96", + "versions.yml:md5,dbf98ec672f75a683c28dcf4121364d2", + "versions.yml:md5,e9e7d18c3de83f1113fb1ff0c55d35ed", + "versions.yml:md5,ea39658f8685118d81d42acd451e66ea" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-08T16:56:43.916141" + }, + "salmon": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + [ + [ + "ambig_info.tsv:md5,ed46d90e49ef998563fbd2dc4eadc3c1", + "expected_bias.gz:md5,3407f87245d0003e0ffbfdf6d8c04f20", + "fld.gz:md5,31a714befce1a2decabf7bc74be6ed6b", + "meta_info.json:md5,f1ec218691558c61711b86a2bef41e8f", + "observed_bias.gz:md5,92bcd0592d22a6a58d0360fc76103e56", + "observed_bias_3p.gz:md5,92bcd0592d22a6a58d0360fc76103e56" + ], + "cmd_info.json:md5,eb393e204863cc7a6cd5cca02a47a565", + [ + "flenDist.txt:md5,2de170bdc9f6fd237d286429b292bb28" + ], + "lib_format_counts.json:md5,3708b5d4a51f405a6872c72fb97fb53c", + [ + "salmon_quant.log:md5,b8ca3bbbc7b973f9d70809c4de735a6c" + ], + "quant.genes.sf:md5,54957d4655ea9cca3fe3d029acc5a408", + "quant.sf:md5,80edb064c68af623b0be89521b91c183" + ] + ] + ], + "1": [ + [ + { + "id": "test" + }, + [ + [ + "ambig_info.tsv:md5,ed46d90e49ef998563fbd2dc4eadc3c1", + "expected_bias.gz:md5,3407f87245d0003e0ffbfdf6d8c04f20", + "fld.gz:md5,31a714befce1a2decabf7bc74be6ed6b", + "meta_info.json:md5,f1ec218691558c61711b86a2bef41e8f", + "observed_bias.gz:md5,92bcd0592d22a6a58d0360fc76103e56", + "observed_bias_3p.gz:md5,92bcd0592d22a6a58d0360fc76103e56" + ], + "cmd_info.json:md5,eb393e204863cc7a6cd5cca02a47a565", + [ + "flenDist.txt:md5,2de170bdc9f6fd237d286429b292bb28" + ], + "lib_format_counts.json:md5,3708b5d4a51f405a6872c72fb97fb53c", + [ + "salmon_quant.log:md5,b8ca3bbbc7b973f9d70809c4de735a6c" + ], + "quant.genes.sf:md5,54957d4655ea9cca3fe3d029acc5a408", + "quant.sf:md5,80edb064c68af623b0be89521b91c183" + ] + ] + ], + "10": [ + [ + { + "id": "all_samples" + }, + "all_samples.SummarizedExperiment.rds:md5,e05d7ce3739c80257309952a4b1c251f" + ] + ], + "11": [ + [ + { + "id": "all_samples" + }, + "all_samples.SummarizedExperiment.rds:md5,2b6dbc0326c90db628a9733f9bb6b5f1" + ] + ], + "12": [ + [ + { + "id": "all_samples" + }, + "all_samples.SummarizedExperiment.rds:md5,fbc01e4fa624b18c65ce55a67caa5698" + ] + ], + "13": [ + [ + { + "id": "all_samples" + }, + "all_samples.transcript_counts.tsv:md5,2c3b86b4ea29be46db526e7a68360d14" + ] + ], + "14": [ + [ + { + "id": "all_samples" + }, + "all_samples.transcript_tpm.tsv:md5,cced012fcee17801187eaf5c11f2d34a" + ] + ], + "15": [ + [ + { + "id": "all_samples" + }, + "all_samples.SummarizedExperiment.rds:md5,43b6514ed16c63217423d39b0e95eed8" + ] + ], + "16": [ + "versions.yml:md5,4c3564e1ba17d8ce2b0ee784251ddd87", + "versions.yml:md5,b44caeec65491d47e098c7ddaf024b96", + "versions.yml:md5,dbf98ec672f75a683c28dcf4121364d2", + "versions.yml:md5,e9e7d18c3de83f1113fb1ff0c55d35ed" + ], + "2": [ + [ + { + "id": "all_samples" + }, + "all_samples.gene_tpm.tsv:md5,9711ed8364c3a1ea4fc87bd5e0780835" + ] + ], + "3": [ + [ + { + "id": "all_samples" + }, + "all_samples.gene_counts.tsv:md5,865a4706b8bf47f476d8298fdd344902" + ] + ], + "4": [ + [ + { + "id": "all_samples" + }, + "all_samples.gene_lengths.tsv:md5,cddf0fb583ca26f943d0d26d605d1d34" + ] + ], + "5": [ + [ + { + "id": "all_samples" + }, + "all_samples.gene_counts_length_scaled.tsv:md5,46194b28815747fe3c3d5a619fa994a7" + ] + ], + "6": [ + [ + { + "id": "all_samples" + }, + "all_samples.gene_counts_scaled.tsv:md5,38f4cee2c004d363750181bdc3facbea" + ] + ], + "7": [ + [ + { + "id": "all_samples" + }, + "all_samples.transcript_tpm.tsv:md5,cced012fcee17801187eaf5c11f2d34a" + ] + ], + "8": [ + [ + { + "id": "all_samples" + }, + "all_samples.transcript_counts.tsv:md5,2c3b86b4ea29be46db526e7a68360d14" + ] + ], + "9": [ + [ + { + "id": "all_samples" + }, + "all_samples.transcript_lengths.tsv:md5,e204181187d0b39735d0a92d1db2d2f7" + ] + ], + "counts_gene": [ + [ + { + "id": "all_samples" + }, + "all_samples.gene_counts.tsv:md5,865a4706b8bf47f476d8298fdd344902" + ] + ], + "counts_gene_length_scaled": [ + [ + { + "id": "all_samples" + }, + "all_samples.gene_counts_length_scaled.tsv:md5,46194b28815747fe3c3d5a619fa994a7" + ] + ], + "counts_gene_scaled": [ + [ + { + "id": "all_samples" + }, + "all_samples.gene_counts_scaled.tsv:md5,38f4cee2c004d363750181bdc3facbea" + ] + ], + "counts_transcript": [ + [ + { + "id": "all_samples" + }, + "all_samples.transcript_counts.tsv:md5,2c3b86b4ea29be46db526e7a68360d14" + ] + ], + "lengths_gene": [ + [ + { + "id": "all_samples" + }, + "all_samples.gene_lengths.tsv:md5,cddf0fb583ca26f943d0d26d605d1d34" + ] + ], + "lengths_transcript": [ + [ + { + "id": "all_samples" + }, + "all_samples.transcript_lengths.tsv:md5,e204181187d0b39735d0a92d1db2d2f7" + ] + ], + "merged_counts_transcript": [ + [ + { + "id": "all_samples" + }, + "all_samples.transcript_counts.tsv:md5,2c3b86b4ea29be46db526e7a68360d14" + ] + ], + "merged_gene_rds": [ + [ + { + "id": "all_samples" + }, + "all_samples.SummarizedExperiment.rds:md5,e05d7ce3739c80257309952a4b1c251f" + ] + ], + "merged_gene_rds_length_scaled": [ + [ + { + "id": "all_samples" + }, + "all_samples.SummarizedExperiment.rds:md5,2b6dbc0326c90db628a9733f9bb6b5f1" + ] + ], + "merged_gene_rds_scaled": [ + [ + { + "id": "all_samples" + }, + "all_samples.SummarizedExperiment.rds:md5,fbc01e4fa624b18c65ce55a67caa5698" + ] + ], + "merged_tpm_transcript": [ + [ + { + "id": "all_samples" + }, + "all_samples.transcript_tpm.tsv:md5,cced012fcee17801187eaf5c11f2d34a" + ] + ], + "merged_transcript_rds": [ + [ + { + "id": "all_samples" + }, + "all_samples.SummarizedExperiment.rds:md5,43b6514ed16c63217423d39b0e95eed8" + ] + ], + "multiqc": [ + [ + { + "id": "test" + }, + [ + [ + "ambig_info.tsv:md5,ed46d90e49ef998563fbd2dc4eadc3c1", + "expected_bias.gz:md5,3407f87245d0003e0ffbfdf6d8c04f20", + "fld.gz:md5,31a714befce1a2decabf7bc74be6ed6b", + "meta_info.json:md5,f1ec218691558c61711b86a2bef41e8f", + "observed_bias.gz:md5,92bcd0592d22a6a58d0360fc76103e56", + "observed_bias_3p.gz:md5,92bcd0592d22a6a58d0360fc76103e56" + ], + "cmd_info.json:md5,eb393e204863cc7a6cd5cca02a47a565", + [ + "flenDist.txt:md5,2de170bdc9f6fd237d286429b292bb28" + ], + "lib_format_counts.json:md5,3708b5d4a51f405a6872c72fb97fb53c", + [ + "salmon_quant.log:md5,b8ca3bbbc7b973f9d70809c4de735a6c" + ], + "quant.genes.sf:md5,54957d4655ea9cca3fe3d029acc5a408", + "quant.sf:md5,80edb064c68af623b0be89521b91c183" + ] + ] + ], + "results": [ + [ + { + "id": "test" + }, + [ + [ + "ambig_info.tsv:md5,ed46d90e49ef998563fbd2dc4eadc3c1", + "expected_bias.gz:md5,3407f87245d0003e0ffbfdf6d8c04f20", + "fld.gz:md5,31a714befce1a2decabf7bc74be6ed6b", + "meta_info.json:md5,f1ec218691558c61711b86a2bef41e8f", + "observed_bias.gz:md5,92bcd0592d22a6a58d0360fc76103e56", + "observed_bias_3p.gz:md5,92bcd0592d22a6a58d0360fc76103e56" + ], + "cmd_info.json:md5,eb393e204863cc7a6cd5cca02a47a565", + [ + "flenDist.txt:md5,2de170bdc9f6fd237d286429b292bb28" + ], + "lib_format_counts.json:md5,3708b5d4a51f405a6872c72fb97fb53c", + [ + "salmon_quant.log:md5,b8ca3bbbc7b973f9d70809c4de735a6c" + ], + "quant.genes.sf:md5,54957d4655ea9cca3fe3d029acc5a408", + "quant.sf:md5,80edb064c68af623b0be89521b91c183" + ] + ] + ], + "tpm_gene": [ + [ + { + "id": "all_samples" + }, + "all_samples.gene_tpm.tsv:md5,9711ed8364c3a1ea4fc87bd5e0780835" + ] + ], + "tpm_transcript": [ + [ + { + "id": "all_samples" + }, + "all_samples.transcript_tpm.tsv:md5,cced012fcee17801187eaf5c11f2d34a" + ] + ], + "versions": [ + "versions.yml:md5,4c3564e1ba17d8ce2b0ee784251ddd87", + "versions.yml:md5,b44caeec65491d47e098c7ddaf024b96", + "versions.yml:md5,dbf98ec672f75a683c28dcf4121364d2", + "versions.yml:md5,e9e7d18c3de83f1113fb1ff0c55d35ed" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-08T16:55:04.981225" + } +} \ No newline at end of file diff --git a/subworkflows/local/quantify_pseudo_alignment/tests/samplesheet.csv b/subworkflows/local/quantify_pseudo_alignment/tests/samplesheet.csv new file mode 100644 index 000000000..51134e109 --- /dev/null +++ b/subworkflows/local/quantify_pseudo_alignment/tests/samplesheet.csv @@ -0,0 +1,2 @@ +sample,fastq_1,fastq_2,strandedness +test,genomics/homo_sapiens/illumina/fastq/test_1.fastq.gz,genomics/homo_sapiens/illumina/fastq/test_2.fastq.gz,auto From 1b2b8a484547c8e6bee888ef162128669fee587e Mon Sep 17 00:00:00 2001 From: Adam Talbot <12817534+adamrtalbot@users.noreply.github.com> Date: Fri, 8 Mar 2024 18:02:45 +0000 Subject: [PATCH 212/634] Update to use samplesheet in test-datasets repo --- .../tests/main.nf.test | 4 +- .../tests/main.nf.test.snap | 68 +++++++++---------- .../tests/samplesheet.csv | 2 - 3 files changed, 36 insertions(+), 38 deletions(-) delete mode 100644 subworkflows/local/quantify_pseudo_alignment/tests/samplesheet.csv diff --git a/subworkflows/local/quantify_pseudo_alignment/tests/main.nf.test b/subworkflows/local/quantify_pseudo_alignment/tests/main.nf.test index 30713d71e..fcf86ee1e 100644 --- a/subworkflows/local/quantify_pseudo_alignment/tests/main.nf.test +++ b/subworkflows/local/quantify_pseudo_alignment/tests/main.nf.test @@ -29,7 +29,7 @@ nextflow_workflow { """ input[0] = [ [ id: 'samplesheet' ], - file("$moduleTestDir/samplesheet.csv", checkIfExists: true) + file(params.pipelines_testdata_base_path + '/csv/samplesheet_micro.csv', checkIfExists: true) ] input[1] = [ [ id: 'test' ], @@ -83,7 +83,7 @@ nextflow_workflow { """ input[0] = [ [ id: 'samplesheet' ], - file("$moduleTestDir/samplesheet.csv", checkIfExists: true) + file(params.pipelines_testdata_base_path + '/csv/samplesheet_micro.csv', checkIfExists: true) ] input[1] = [ [ id: 'test' ], diff --git a/subworkflows/local/quantify_pseudo_alignment/tests/main.nf.test.snap b/subworkflows/local/quantify_pseudo_alignment/tests/main.nf.test.snap index 6f5476435..4ed1d2fda 100644 --- a/subworkflows/local/quantify_pseudo_alignment/tests/main.nf.test.snap +++ b/subworkflows/local/quantify_pseudo_alignment/tests/main.nf.test.snap @@ -8,10 +8,10 @@ "id": "test" }, [ - "abundance.h5:md5,b9b0d0638edc9bdd798565337c76d199", + "abundance.h5:md5,b880b9c63426dae06931e9e33ac55ad3", "abundance.tsv:md5,31b5bf33a3467ae5de3b4ef8ac797cf5", "kallisto_quant.log:md5,b83608e31db11067d8ab5ad258fa2dd7", - "run_info.json:md5,b0cefe3809d1c1c0a24e56b92cb684e4" + "run_info.json:md5,049743ad4c3336e48baef0107d4b8634" ] ] ], @@ -28,7 +28,7 @@ { "id": "all_samples" }, - "all_samples.SummarizedExperiment.rds:md5,ac8ef4704a4dbbbe5bbf549f25134289" + "all_samples.SummarizedExperiment.rds:md5,ba4ff9c05eea56d71bb2de77ae960f9c" ] ], "11": [ @@ -36,7 +36,7 @@ { "id": "all_samples" }, - "all_samples.SummarizedExperiment.rds:md5,c4996a093cc81a81ffa89ac81d174088" + "all_samples.SummarizedExperiment.rds:md5,d8a8f1b178acd49dc04c6dabbc00bbab" ] ], "12": [ @@ -44,7 +44,7 @@ { "id": "all_samples" }, - "all_samples.SummarizedExperiment.rds:md5,ce6e18045433beb5889bc90f2d2a210e" + "all_samples.SummarizedExperiment.rds:md5,d535f7e33c2a7fd98aeedbfe23fc9cfe" ] ], "13": [ @@ -68,7 +68,7 @@ { "id": "all_samples" }, - "all_samples.SummarizedExperiment.rds:md5,8934d6979e01bdef0308830b442846af" + "all_samples.SummarizedExperiment.rds:md5,8f9dd4aea52190447454089f735159a4" ] ], "16": [ @@ -202,7 +202,7 @@ { "id": "all_samples" }, - "all_samples.SummarizedExperiment.rds:md5,ac8ef4704a4dbbbe5bbf549f25134289" + "all_samples.SummarizedExperiment.rds:md5,ba4ff9c05eea56d71bb2de77ae960f9c" ] ], "merged_gene_rds_length_scaled": [ @@ -210,7 +210,7 @@ { "id": "all_samples" }, - "all_samples.SummarizedExperiment.rds:md5,c4996a093cc81a81ffa89ac81d174088" + "all_samples.SummarizedExperiment.rds:md5,d8a8f1b178acd49dc04c6dabbc00bbab" ] ], "merged_gene_rds_scaled": [ @@ -218,7 +218,7 @@ { "id": "all_samples" }, - "all_samples.SummarizedExperiment.rds:md5,ce6e18045433beb5889bc90f2d2a210e" + "all_samples.SummarizedExperiment.rds:md5,d535f7e33c2a7fd98aeedbfe23fc9cfe" ] ], "merged_tpm_transcript": [ @@ -234,7 +234,7 @@ { "id": "all_samples" }, - "all_samples.SummarizedExperiment.rds:md5,8934d6979e01bdef0308830b442846af" + "all_samples.SummarizedExperiment.rds:md5,8f9dd4aea52190447454089f735159a4" ] ], "multiqc": [ @@ -251,10 +251,10 @@ "id": "test" }, [ - "abundance.h5:md5,b9b0d0638edc9bdd798565337c76d199", + "abundance.h5:md5,b880b9c63426dae06931e9e33ac55ad3", "abundance.tsv:md5,31b5bf33a3467ae5de3b4ef8ac797cf5", "kallisto_quant.log:md5,b83608e31db11067d8ab5ad258fa2dd7", - "run_info.json:md5,b0cefe3809d1c1c0a24e56b92cb684e4" + "run_info.json:md5,049743ad4c3336e48baef0107d4b8634" ] ] ], @@ -286,7 +286,7 @@ "nf-test": "0.8.4", "nextflow": "24.01.0" }, - "timestamp": "2024-03-08T16:56:43.916141" + "timestamp": "2024-03-08T17:56:59.579504" }, "salmon": { "content": [ @@ -300,8 +300,8 @@ [ "ambig_info.tsv:md5,ed46d90e49ef998563fbd2dc4eadc3c1", "expected_bias.gz:md5,3407f87245d0003e0ffbfdf6d8c04f20", - "fld.gz:md5,31a714befce1a2decabf7bc74be6ed6b", - "meta_info.json:md5,f1ec218691558c61711b86a2bef41e8f", + "fld.gz:md5,d88fca0b04b50208bd8d3862622ef482", + "meta_info.json:md5,fb4d3c6191d4737d62b8409c38deafdf", "observed_bias.gz:md5,92bcd0592d22a6a58d0360fc76103e56", "observed_bias_3p.gz:md5,92bcd0592d22a6a58d0360fc76103e56" ], @@ -311,7 +311,7 @@ ], "lib_format_counts.json:md5,3708b5d4a51f405a6872c72fb97fb53c", [ - "salmon_quant.log:md5,b8ca3bbbc7b973f9d70809c4de735a6c" + "salmon_quant.log:md5,d2e73dc4c68e64bb5c6189371a52271f" ], "quant.genes.sf:md5,54957d4655ea9cca3fe3d029acc5a408", "quant.sf:md5,80edb064c68af623b0be89521b91c183" @@ -327,8 +327,8 @@ [ "ambig_info.tsv:md5,ed46d90e49ef998563fbd2dc4eadc3c1", "expected_bias.gz:md5,3407f87245d0003e0ffbfdf6d8c04f20", - "fld.gz:md5,31a714befce1a2decabf7bc74be6ed6b", - "meta_info.json:md5,f1ec218691558c61711b86a2bef41e8f", + "fld.gz:md5,d88fca0b04b50208bd8d3862622ef482", + "meta_info.json:md5,fb4d3c6191d4737d62b8409c38deafdf", "observed_bias.gz:md5,92bcd0592d22a6a58d0360fc76103e56", "observed_bias_3p.gz:md5,92bcd0592d22a6a58d0360fc76103e56" ], @@ -338,7 +338,7 @@ ], "lib_format_counts.json:md5,3708b5d4a51f405a6872c72fb97fb53c", [ - "salmon_quant.log:md5,b8ca3bbbc7b973f9d70809c4de735a6c" + "salmon_quant.log:md5,d2e73dc4c68e64bb5c6189371a52271f" ], "quant.genes.sf:md5,54957d4655ea9cca3fe3d029acc5a408", "quant.sf:md5,80edb064c68af623b0be89521b91c183" @@ -350,7 +350,7 @@ { "id": "all_samples" }, - "all_samples.SummarizedExperiment.rds:md5,e05d7ce3739c80257309952a4b1c251f" + "all_samples.SummarizedExperiment.rds:md5,504f040f8916a0cb0d462fa4991ec4ee" ] ], "11": [ @@ -358,7 +358,7 @@ { "id": "all_samples" }, - "all_samples.SummarizedExperiment.rds:md5,2b6dbc0326c90db628a9733f9bb6b5f1" + "all_samples.SummarizedExperiment.rds:md5,f3082e7eba40fa82d018d3d3b94b83b7" ] ], "12": [ @@ -366,7 +366,7 @@ { "id": "all_samples" }, - "all_samples.SummarizedExperiment.rds:md5,fbc01e4fa624b18c65ce55a67caa5698" + "all_samples.SummarizedExperiment.rds:md5,477703064bec63ece90942f25121bda2" ] ], "13": [ @@ -390,7 +390,7 @@ { "id": "all_samples" }, - "all_samples.SummarizedExperiment.rds:md5,43b6514ed16c63217423d39b0e95eed8" + "all_samples.SummarizedExperiment.rds:md5,89eb7f54d7bb9690d1eab0c041d1aba1" ] ], "16": [ @@ -524,7 +524,7 @@ { "id": "all_samples" }, - "all_samples.SummarizedExperiment.rds:md5,e05d7ce3739c80257309952a4b1c251f" + "all_samples.SummarizedExperiment.rds:md5,504f040f8916a0cb0d462fa4991ec4ee" ] ], "merged_gene_rds_length_scaled": [ @@ -532,7 +532,7 @@ { "id": "all_samples" }, - "all_samples.SummarizedExperiment.rds:md5,2b6dbc0326c90db628a9733f9bb6b5f1" + "all_samples.SummarizedExperiment.rds:md5,f3082e7eba40fa82d018d3d3b94b83b7" ] ], "merged_gene_rds_scaled": [ @@ -540,7 +540,7 @@ { "id": "all_samples" }, - "all_samples.SummarizedExperiment.rds:md5,fbc01e4fa624b18c65ce55a67caa5698" + "all_samples.SummarizedExperiment.rds:md5,477703064bec63ece90942f25121bda2" ] ], "merged_tpm_transcript": [ @@ -556,7 +556,7 @@ { "id": "all_samples" }, - "all_samples.SummarizedExperiment.rds:md5,43b6514ed16c63217423d39b0e95eed8" + "all_samples.SummarizedExperiment.rds:md5,89eb7f54d7bb9690d1eab0c041d1aba1" ] ], "multiqc": [ @@ -568,8 +568,8 @@ [ "ambig_info.tsv:md5,ed46d90e49ef998563fbd2dc4eadc3c1", "expected_bias.gz:md5,3407f87245d0003e0ffbfdf6d8c04f20", - "fld.gz:md5,31a714befce1a2decabf7bc74be6ed6b", - "meta_info.json:md5,f1ec218691558c61711b86a2bef41e8f", + "fld.gz:md5,d88fca0b04b50208bd8d3862622ef482", + "meta_info.json:md5,fb4d3c6191d4737d62b8409c38deafdf", "observed_bias.gz:md5,92bcd0592d22a6a58d0360fc76103e56", "observed_bias_3p.gz:md5,92bcd0592d22a6a58d0360fc76103e56" ], @@ -579,7 +579,7 @@ ], "lib_format_counts.json:md5,3708b5d4a51f405a6872c72fb97fb53c", [ - "salmon_quant.log:md5,b8ca3bbbc7b973f9d70809c4de735a6c" + "salmon_quant.log:md5,d2e73dc4c68e64bb5c6189371a52271f" ], "quant.genes.sf:md5,54957d4655ea9cca3fe3d029acc5a408", "quant.sf:md5,80edb064c68af623b0be89521b91c183" @@ -595,8 +595,8 @@ [ "ambig_info.tsv:md5,ed46d90e49ef998563fbd2dc4eadc3c1", "expected_bias.gz:md5,3407f87245d0003e0ffbfdf6d8c04f20", - "fld.gz:md5,31a714befce1a2decabf7bc74be6ed6b", - "meta_info.json:md5,f1ec218691558c61711b86a2bef41e8f", + "fld.gz:md5,d88fca0b04b50208bd8d3862622ef482", + "meta_info.json:md5,fb4d3c6191d4737d62b8409c38deafdf", "observed_bias.gz:md5,92bcd0592d22a6a58d0360fc76103e56", "observed_bias_3p.gz:md5,92bcd0592d22a6a58d0360fc76103e56" ], @@ -606,7 +606,7 @@ ], "lib_format_counts.json:md5,3708b5d4a51f405a6872c72fb97fb53c", [ - "salmon_quant.log:md5,b8ca3bbbc7b973f9d70809c4de735a6c" + "salmon_quant.log:md5,d2e73dc4c68e64bb5c6189371a52271f" ], "quant.genes.sf:md5,54957d4655ea9cca3fe3d029acc5a408", "quant.sf:md5,80edb064c68af623b0be89521b91c183" @@ -641,6 +641,6 @@ "nf-test": "0.8.4", "nextflow": "24.01.0" }, - "timestamp": "2024-03-08T16:55:04.981225" + "timestamp": "2024-03-08T17:55:19.269014" } } \ No newline at end of file diff --git a/subworkflows/local/quantify_pseudo_alignment/tests/samplesheet.csv b/subworkflows/local/quantify_pseudo_alignment/tests/samplesheet.csv deleted file mode 100644 index 51134e109..000000000 --- a/subworkflows/local/quantify_pseudo_alignment/tests/samplesheet.csv +++ /dev/null @@ -1,2 +0,0 @@ -sample,fastq_1,fastq_2,strandedness -test,genomics/homo_sapiens/illumina/fastq/test_1.fastq.gz,genomics/homo_sapiens/illumina/fastq/test_2.fastq.gz,auto From 2fc7e4d11afe4f5dbb306f986e566c01b95483c4 Mon Sep 17 00:00:00 2001 From: Adam Talbot <12817534+adamrtalbot@users.noreply.github.com> Date: Fri, 8 Mar 2024 18:34:07 +0000 Subject: [PATCH 213/634] Omit variable files from snap --- .../tests/main.nf.test | 34 +- .../tests/main.nf.test.snap | 818 ++++-------------- 2 files changed, 224 insertions(+), 628 deletions(-) diff --git a/subworkflows/local/quantify_pseudo_alignment/tests/main.nf.test b/subworkflows/local/quantify_pseudo_alignment/tests/main.nf.test index fcf86ee1e..68916802d 100644 --- a/subworkflows/local/quantify_pseudo_alignment/tests/main.nf.test +++ b/subworkflows/local/quantify_pseudo_alignment/tests/main.nf.test @@ -55,7 +55,22 @@ nextflow_workflow { then { assertAll( { assert workflow.success }, - { assert snapshot(workflow.out).match() } + { assert snapshot( + workflow.out.tpm_gene, + workflow.out.counts_gene, + workflow.out.lengths_gene, + workflow.out.counts_gene_length_scaled, + workflow.out.tpm_transcript, + workflow.out.lengths_transcript, + workflow.out.merged_gene_rds, + workflow.out.merged_gene_rds_length_scaled, + workflow.out.merged_gene_rds_scaled, + workflow.out.merged_counts_transcript, + workflow.out.merged_tpm_transcript, + workflow.out.merged_transcript_rds, + // NOT multiqc, results, versions + ).match() + } ) } @@ -109,7 +124,22 @@ nextflow_workflow { then { assertAll( { assert workflow.success }, - { assert snapshot(workflow.out).match() } + { assert snapshot( + workflow.out.tpm_gene, + workflow.out.counts_gene, + workflow.out.lengths_gene, + workflow.out.counts_gene_length_scaled, + workflow.out.tpm_transcript, + workflow.out.lengths_transcript, + workflow.out.merged_gene_rds, + workflow.out.merged_gene_rds_length_scaled, + workflow.out.merged_gene_rds_scaled, + workflow.out.merged_counts_transcript, + workflow.out.merged_tpm_transcript, + workflow.out.merged_transcript_rds, + // NOT multiqc, results, versions + ).match() + } ) } diff --git a/subworkflows/local/quantify_pseudo_alignment/tests/main.nf.test.snap b/subworkflows/local/quantify_pseudo_alignment/tests/main.nf.test.snap index 4ed1d2fda..ce1ce36d6 100644 --- a/subworkflows/local/quantify_pseudo_alignment/tests/main.nf.test.snap +++ b/subworkflows/local/quantify_pseudo_alignment/tests/main.nf.test.snap @@ -1,646 +1,212 @@ { "kallisto": { "content": [ - { - "0": [ - [ - { - "id": "test" - }, - [ - "abundance.h5:md5,b880b9c63426dae06931e9e33ac55ad3", - "abundance.tsv:md5,31b5bf33a3467ae5de3b4ef8ac797cf5", - "kallisto_quant.log:md5,b83608e31db11067d8ab5ad258fa2dd7", - "run_info.json:md5,049743ad4c3336e48baef0107d4b8634" - ] - ] - ], - "1": [ - [ - { - "id": "test" - }, - "test.log:md5,b83608e31db11067d8ab5ad258fa2dd7" - ] - ], - "10": [ - [ - { - "id": "all_samples" - }, - "all_samples.SummarizedExperiment.rds:md5,ba4ff9c05eea56d71bb2de77ae960f9c" - ] - ], - "11": [ - [ - { - "id": "all_samples" - }, - "all_samples.SummarizedExperiment.rds:md5,d8a8f1b178acd49dc04c6dabbc00bbab" - ] - ], - "12": [ - [ - { - "id": "all_samples" - }, - "all_samples.SummarizedExperiment.rds:md5,d535f7e33c2a7fd98aeedbfe23fc9cfe" - ] - ], - "13": [ - [ - { - "id": "all_samples" - }, - "all_samples.transcript_counts.tsv:md5,c5a43880cd87d00ef40de5df9ca3afa7" - ] - ], - "14": [ - [ - { - "id": "all_samples" - }, - "all_samples.transcript_tpm.tsv:md5,de458e1c2a579e53bd7671c5176f5d0c" - ] - ], - "15": [ - [ - { - "id": "all_samples" - }, - "all_samples.SummarizedExperiment.rds:md5,8f9dd4aea52190447454089f735159a4" - ] - ], - "16": [ - "versions.yml:md5,b44caeec65491d47e098c7ddaf024b96", - "versions.yml:md5,dbf98ec672f75a683c28dcf4121364d2", - "versions.yml:md5,e9e7d18c3de83f1113fb1ff0c55d35ed", - "versions.yml:md5,ea39658f8685118d81d42acd451e66ea" - ], - "2": [ - [ - { - "id": "all_samples" - }, - "all_samples.gene_tpm.tsv:md5,23fa0c64cfbd198806b53897de791b8b" - ] - ], - "3": [ - [ - { - "id": "all_samples" - }, - "all_samples.gene_counts.tsv:md5,4ba44e5ebc9ed0ca2ca008d10a1dddc3" - ] - ], - "4": [ - [ - { - "id": "all_samples" - }, - "all_samples.gene_lengths.tsv:md5,b031192af7a8f64dcc887978a69fdbb7" - ] - ], - "5": [ - [ - { - "id": "all_samples" - }, - "all_samples.gene_counts_length_scaled.tsv:md5,078746568e3fd0c995559352b661b2d9" - ] - ], - "6": [ - [ - { - "id": "all_samples" - }, - "all_samples.gene_counts_scaled.tsv:md5,df27cc69d4d66f36f23be79d8eb9692e" - ] - ], - "7": [ - [ - { - "id": "all_samples" - }, - "all_samples.transcript_tpm.tsv:md5,de458e1c2a579e53bd7671c5176f5d0c" - ] - ], - "8": [ - [ - { - "id": "all_samples" - }, - "all_samples.transcript_counts.tsv:md5,c5a43880cd87d00ef40de5df9ca3afa7" - ] - ], - "9": [ - [ - { - "id": "all_samples" - }, - "all_samples.transcript_lengths.tsv:md5,131952a97905469ab012f0f46e52405c" - ] - ], - "counts_gene": [ - [ - { - "id": "all_samples" - }, - "all_samples.gene_counts.tsv:md5,4ba44e5ebc9ed0ca2ca008d10a1dddc3" - ] - ], - "counts_gene_length_scaled": [ - [ - { - "id": "all_samples" - }, - "all_samples.gene_counts_length_scaled.tsv:md5,078746568e3fd0c995559352b661b2d9" - ] - ], - "counts_gene_scaled": [ - [ - { - "id": "all_samples" - }, - "all_samples.gene_counts_scaled.tsv:md5,df27cc69d4d66f36f23be79d8eb9692e" - ] - ], - "counts_transcript": [ - [ - { - "id": "all_samples" - }, - "all_samples.transcript_counts.tsv:md5,c5a43880cd87d00ef40de5df9ca3afa7" - ] - ], - "lengths_gene": [ - [ - { - "id": "all_samples" - }, - "all_samples.gene_lengths.tsv:md5,b031192af7a8f64dcc887978a69fdbb7" - ] - ], - "lengths_transcript": [ - [ - { - "id": "all_samples" - }, - "all_samples.transcript_lengths.tsv:md5,131952a97905469ab012f0f46e52405c" - ] - ], - "merged_counts_transcript": [ - [ - { - "id": "all_samples" - }, - "all_samples.transcript_counts.tsv:md5,c5a43880cd87d00ef40de5df9ca3afa7" - ] - ], - "merged_gene_rds": [ - [ - { - "id": "all_samples" - }, - "all_samples.SummarizedExperiment.rds:md5,ba4ff9c05eea56d71bb2de77ae960f9c" - ] - ], - "merged_gene_rds_length_scaled": [ - [ - { - "id": "all_samples" - }, - "all_samples.SummarizedExperiment.rds:md5,d8a8f1b178acd49dc04c6dabbc00bbab" - ] - ], - "merged_gene_rds_scaled": [ - [ - { - "id": "all_samples" - }, - "all_samples.SummarizedExperiment.rds:md5,d535f7e33c2a7fd98aeedbfe23fc9cfe" - ] - ], - "merged_tpm_transcript": [ - [ - { - "id": "all_samples" - }, - "all_samples.transcript_tpm.tsv:md5,de458e1c2a579e53bd7671c5176f5d0c" - ] - ], - "merged_transcript_rds": [ - [ - { - "id": "all_samples" - }, - "all_samples.SummarizedExperiment.rds:md5,8f9dd4aea52190447454089f735159a4" - ] - ], - "multiqc": [ - [ - { - "id": "test" - }, - "test.log:md5,b83608e31db11067d8ab5ad258fa2dd7" - ] - ], - "results": [ - [ - { - "id": "test" - }, - [ - "abundance.h5:md5,b880b9c63426dae06931e9e33ac55ad3", - "abundance.tsv:md5,31b5bf33a3467ae5de3b4ef8ac797cf5", - "kallisto_quant.log:md5,b83608e31db11067d8ab5ad258fa2dd7", - "run_info.json:md5,049743ad4c3336e48baef0107d4b8634" - ] - ] - ], - "tpm_gene": [ - [ - { - "id": "all_samples" - }, - "all_samples.gene_tpm.tsv:md5,23fa0c64cfbd198806b53897de791b8b" - ] - ], - "tpm_transcript": [ - [ - { - "id": "all_samples" - }, - "all_samples.transcript_tpm.tsv:md5,de458e1c2a579e53bd7671c5176f5d0c" - ] - ], - "versions": [ - "versions.yml:md5,b44caeec65491d47e098c7ddaf024b96", - "versions.yml:md5,dbf98ec672f75a683c28dcf4121364d2", - "versions.yml:md5,e9e7d18c3de83f1113fb1ff0c55d35ed", - "versions.yml:md5,ea39658f8685118d81d42acd451e66ea" + [ + [ + { + "id": "all_samples" + }, + "all_samples.gene_tpm.tsv:md5,23fa0c64cfbd198806b53897de791b8b" ] - } + ], + [ + [ + { + "id": "all_samples" + }, + "all_samples.gene_counts.tsv:md5,4ba44e5ebc9ed0ca2ca008d10a1dddc3" + ] + ], + [ + [ + { + "id": "all_samples" + }, + "all_samples.gene_lengths.tsv:md5,b031192af7a8f64dcc887978a69fdbb7" + ] + ], + [ + [ + { + "id": "all_samples" + }, + "all_samples.gene_counts_length_scaled.tsv:md5,078746568e3fd0c995559352b661b2d9" + ] + ], + [ + [ + { + "id": "all_samples" + }, + "all_samples.transcript_tpm.tsv:md5,de458e1c2a579e53bd7671c5176f5d0c" + ] + ], + [ + [ + { + "id": "all_samples" + }, + "all_samples.transcript_lengths.tsv:md5,131952a97905469ab012f0f46e52405c" + ] + ], + [ + [ + { + "id": "all_samples" + }, + "all_samples.SummarizedExperiment.rds:md5,ba4ff9c05eea56d71bb2de77ae960f9c" + ] + ], + [ + [ + { + "id": "all_samples" + }, + "all_samples.SummarizedExperiment.rds:md5,d8a8f1b178acd49dc04c6dabbc00bbab" + ] + ], + [ + [ + { + "id": "all_samples" + }, + "all_samples.SummarizedExperiment.rds:md5,d535f7e33c2a7fd98aeedbfe23fc9cfe" + ] + ], + [ + [ + { + "id": "all_samples" + }, + "all_samples.transcript_counts.tsv:md5,c5a43880cd87d00ef40de5df9ca3afa7" + ] + ], + [ + [ + { + "id": "all_samples" + }, + "all_samples.transcript_tpm.tsv:md5,de458e1c2a579e53bd7671c5176f5d0c" + ] + ], + [ + [ + { + "id": "all_samples" + }, + "all_samples.SummarizedExperiment.rds:md5,8f9dd4aea52190447454089f735159a4" + ] + ] ], "meta": { "nf-test": "0.8.4", "nextflow": "24.01.0" }, - "timestamp": "2024-03-08T17:56:59.579504" + "timestamp": "2024-03-08T18:27:59.64478" }, "salmon": { "content": [ - { - "0": [ - [ - { - "id": "test" - }, - [ - [ - "ambig_info.tsv:md5,ed46d90e49ef998563fbd2dc4eadc3c1", - "expected_bias.gz:md5,3407f87245d0003e0ffbfdf6d8c04f20", - "fld.gz:md5,d88fca0b04b50208bd8d3862622ef482", - "meta_info.json:md5,fb4d3c6191d4737d62b8409c38deafdf", - "observed_bias.gz:md5,92bcd0592d22a6a58d0360fc76103e56", - "observed_bias_3p.gz:md5,92bcd0592d22a6a58d0360fc76103e56" - ], - "cmd_info.json:md5,eb393e204863cc7a6cd5cca02a47a565", - [ - "flenDist.txt:md5,2de170bdc9f6fd237d286429b292bb28" - ], - "lib_format_counts.json:md5,3708b5d4a51f405a6872c72fb97fb53c", - [ - "salmon_quant.log:md5,d2e73dc4c68e64bb5c6189371a52271f" - ], - "quant.genes.sf:md5,54957d4655ea9cca3fe3d029acc5a408", - "quant.sf:md5,80edb064c68af623b0be89521b91c183" - ] - ] - ], - "1": [ - [ - { - "id": "test" - }, - [ - [ - "ambig_info.tsv:md5,ed46d90e49ef998563fbd2dc4eadc3c1", - "expected_bias.gz:md5,3407f87245d0003e0ffbfdf6d8c04f20", - "fld.gz:md5,d88fca0b04b50208bd8d3862622ef482", - "meta_info.json:md5,fb4d3c6191d4737d62b8409c38deafdf", - "observed_bias.gz:md5,92bcd0592d22a6a58d0360fc76103e56", - "observed_bias_3p.gz:md5,92bcd0592d22a6a58d0360fc76103e56" - ], - "cmd_info.json:md5,eb393e204863cc7a6cd5cca02a47a565", - [ - "flenDist.txt:md5,2de170bdc9f6fd237d286429b292bb28" - ], - "lib_format_counts.json:md5,3708b5d4a51f405a6872c72fb97fb53c", - [ - "salmon_quant.log:md5,d2e73dc4c68e64bb5c6189371a52271f" - ], - "quant.genes.sf:md5,54957d4655ea9cca3fe3d029acc5a408", - "quant.sf:md5,80edb064c68af623b0be89521b91c183" - ] - ] - ], - "10": [ - [ - { - "id": "all_samples" - }, - "all_samples.SummarizedExperiment.rds:md5,504f040f8916a0cb0d462fa4991ec4ee" - ] - ], - "11": [ - [ - { - "id": "all_samples" - }, - "all_samples.SummarizedExperiment.rds:md5,f3082e7eba40fa82d018d3d3b94b83b7" - ] - ], - "12": [ - [ - { - "id": "all_samples" - }, - "all_samples.SummarizedExperiment.rds:md5,477703064bec63ece90942f25121bda2" - ] - ], - "13": [ - [ - { - "id": "all_samples" - }, - "all_samples.transcript_counts.tsv:md5,2c3b86b4ea29be46db526e7a68360d14" - ] - ], - "14": [ - [ - { - "id": "all_samples" - }, - "all_samples.transcript_tpm.tsv:md5,cced012fcee17801187eaf5c11f2d34a" - ] - ], - "15": [ - [ - { - "id": "all_samples" - }, - "all_samples.SummarizedExperiment.rds:md5,89eb7f54d7bb9690d1eab0c041d1aba1" - ] - ], - "16": [ - "versions.yml:md5,4c3564e1ba17d8ce2b0ee784251ddd87", - "versions.yml:md5,b44caeec65491d47e098c7ddaf024b96", - "versions.yml:md5,dbf98ec672f75a683c28dcf4121364d2", - "versions.yml:md5,e9e7d18c3de83f1113fb1ff0c55d35ed" - ], - "2": [ - [ - { - "id": "all_samples" - }, - "all_samples.gene_tpm.tsv:md5,9711ed8364c3a1ea4fc87bd5e0780835" - ] - ], - "3": [ - [ - { - "id": "all_samples" - }, - "all_samples.gene_counts.tsv:md5,865a4706b8bf47f476d8298fdd344902" - ] - ], - "4": [ - [ - { - "id": "all_samples" - }, - "all_samples.gene_lengths.tsv:md5,cddf0fb583ca26f943d0d26d605d1d34" - ] - ], - "5": [ - [ - { - "id": "all_samples" - }, - "all_samples.gene_counts_length_scaled.tsv:md5,46194b28815747fe3c3d5a619fa994a7" - ] - ], - "6": [ - [ - { - "id": "all_samples" - }, - "all_samples.gene_counts_scaled.tsv:md5,38f4cee2c004d363750181bdc3facbea" - ] - ], - "7": [ - [ - { - "id": "all_samples" - }, - "all_samples.transcript_tpm.tsv:md5,cced012fcee17801187eaf5c11f2d34a" - ] - ], - "8": [ - [ - { - "id": "all_samples" - }, - "all_samples.transcript_counts.tsv:md5,2c3b86b4ea29be46db526e7a68360d14" - ] - ], - "9": [ - [ - { - "id": "all_samples" - }, - "all_samples.transcript_lengths.tsv:md5,e204181187d0b39735d0a92d1db2d2f7" - ] - ], - "counts_gene": [ - [ - { - "id": "all_samples" - }, - "all_samples.gene_counts.tsv:md5,865a4706b8bf47f476d8298fdd344902" - ] - ], - "counts_gene_length_scaled": [ - [ - { - "id": "all_samples" - }, - "all_samples.gene_counts_length_scaled.tsv:md5,46194b28815747fe3c3d5a619fa994a7" - ] - ], - "counts_gene_scaled": [ - [ - { - "id": "all_samples" - }, - "all_samples.gene_counts_scaled.tsv:md5,38f4cee2c004d363750181bdc3facbea" - ] - ], - "counts_transcript": [ - [ - { - "id": "all_samples" - }, - "all_samples.transcript_counts.tsv:md5,2c3b86b4ea29be46db526e7a68360d14" - ] - ], - "lengths_gene": [ - [ - { - "id": "all_samples" - }, - "all_samples.gene_lengths.tsv:md5,cddf0fb583ca26f943d0d26d605d1d34" - ] - ], - "lengths_transcript": [ - [ - { - "id": "all_samples" - }, - "all_samples.transcript_lengths.tsv:md5,e204181187d0b39735d0a92d1db2d2f7" - ] - ], - "merged_counts_transcript": [ - [ - { - "id": "all_samples" - }, - "all_samples.transcript_counts.tsv:md5,2c3b86b4ea29be46db526e7a68360d14" - ] - ], - "merged_gene_rds": [ - [ - { - "id": "all_samples" - }, - "all_samples.SummarizedExperiment.rds:md5,504f040f8916a0cb0d462fa4991ec4ee" - ] - ], - "merged_gene_rds_length_scaled": [ - [ - { - "id": "all_samples" - }, - "all_samples.SummarizedExperiment.rds:md5,f3082e7eba40fa82d018d3d3b94b83b7" - ] - ], - "merged_gene_rds_scaled": [ - [ - { - "id": "all_samples" - }, - "all_samples.SummarizedExperiment.rds:md5,477703064bec63ece90942f25121bda2" - ] - ], - "merged_tpm_transcript": [ - [ - { - "id": "all_samples" - }, - "all_samples.transcript_tpm.tsv:md5,cced012fcee17801187eaf5c11f2d34a" - ] - ], - "merged_transcript_rds": [ - [ - { - "id": "all_samples" - }, - "all_samples.SummarizedExperiment.rds:md5,89eb7f54d7bb9690d1eab0c041d1aba1" - ] - ], - "multiqc": [ - [ - { - "id": "test" - }, - [ - [ - "ambig_info.tsv:md5,ed46d90e49ef998563fbd2dc4eadc3c1", - "expected_bias.gz:md5,3407f87245d0003e0ffbfdf6d8c04f20", - "fld.gz:md5,d88fca0b04b50208bd8d3862622ef482", - "meta_info.json:md5,fb4d3c6191d4737d62b8409c38deafdf", - "observed_bias.gz:md5,92bcd0592d22a6a58d0360fc76103e56", - "observed_bias_3p.gz:md5,92bcd0592d22a6a58d0360fc76103e56" - ], - "cmd_info.json:md5,eb393e204863cc7a6cd5cca02a47a565", - [ - "flenDist.txt:md5,2de170bdc9f6fd237d286429b292bb28" - ], - "lib_format_counts.json:md5,3708b5d4a51f405a6872c72fb97fb53c", - [ - "salmon_quant.log:md5,d2e73dc4c68e64bb5c6189371a52271f" - ], - "quant.genes.sf:md5,54957d4655ea9cca3fe3d029acc5a408", - "quant.sf:md5,80edb064c68af623b0be89521b91c183" - ] - ] - ], - "results": [ - [ - { - "id": "test" - }, - [ - [ - "ambig_info.tsv:md5,ed46d90e49ef998563fbd2dc4eadc3c1", - "expected_bias.gz:md5,3407f87245d0003e0ffbfdf6d8c04f20", - "fld.gz:md5,d88fca0b04b50208bd8d3862622ef482", - "meta_info.json:md5,fb4d3c6191d4737d62b8409c38deafdf", - "observed_bias.gz:md5,92bcd0592d22a6a58d0360fc76103e56", - "observed_bias_3p.gz:md5,92bcd0592d22a6a58d0360fc76103e56" - ], - "cmd_info.json:md5,eb393e204863cc7a6cd5cca02a47a565", - [ - "flenDist.txt:md5,2de170bdc9f6fd237d286429b292bb28" - ], - "lib_format_counts.json:md5,3708b5d4a51f405a6872c72fb97fb53c", - [ - "salmon_quant.log:md5,d2e73dc4c68e64bb5c6189371a52271f" - ], - "quant.genes.sf:md5,54957d4655ea9cca3fe3d029acc5a408", - "quant.sf:md5,80edb064c68af623b0be89521b91c183" - ] - ] - ], - "tpm_gene": [ - [ - { - "id": "all_samples" - }, - "all_samples.gene_tpm.tsv:md5,9711ed8364c3a1ea4fc87bd5e0780835" - ] - ], - "tpm_transcript": [ - [ - { - "id": "all_samples" - }, - "all_samples.transcript_tpm.tsv:md5,cced012fcee17801187eaf5c11f2d34a" - ] - ], - "versions": [ - "versions.yml:md5,4c3564e1ba17d8ce2b0ee784251ddd87", - "versions.yml:md5,b44caeec65491d47e098c7ddaf024b96", - "versions.yml:md5,dbf98ec672f75a683c28dcf4121364d2", - "versions.yml:md5,e9e7d18c3de83f1113fb1ff0c55d35ed" + [ + [ + { + "id": "all_samples" + }, + "all_samples.gene_tpm.tsv:md5,9711ed8364c3a1ea4fc87bd5e0780835" + ] + ], + [ + [ + { + "id": "all_samples" + }, + "all_samples.gene_counts.tsv:md5,865a4706b8bf47f476d8298fdd344902" + ] + ], + [ + [ + { + "id": "all_samples" + }, + "all_samples.gene_lengths.tsv:md5,cddf0fb583ca26f943d0d26d605d1d34" + ] + ], + [ + [ + { + "id": "all_samples" + }, + "all_samples.gene_counts_length_scaled.tsv:md5,46194b28815747fe3c3d5a619fa994a7" + ] + ], + [ + [ + { + "id": "all_samples" + }, + "all_samples.transcript_tpm.tsv:md5,cced012fcee17801187eaf5c11f2d34a" + ] + ], + [ + [ + { + "id": "all_samples" + }, + "all_samples.transcript_lengths.tsv:md5,e204181187d0b39735d0a92d1db2d2f7" + ] + ], + [ + [ + { + "id": "all_samples" + }, + "all_samples.SummarizedExperiment.rds:md5,504f040f8916a0cb0d462fa4991ec4ee" + ] + ], + [ + [ + { + "id": "all_samples" + }, + "all_samples.SummarizedExperiment.rds:md5,f3082e7eba40fa82d018d3d3b94b83b7" + ] + ], + [ + [ + { + "id": "all_samples" + }, + "all_samples.SummarizedExperiment.rds:md5,477703064bec63ece90942f25121bda2" + ] + ], + [ + [ + { + "id": "all_samples" + }, + "all_samples.transcript_counts.tsv:md5,2c3b86b4ea29be46db526e7a68360d14" + ] + ], + [ + [ + { + "id": "all_samples" + }, + "all_samples.transcript_tpm.tsv:md5,cced012fcee17801187eaf5c11f2d34a" + ] + ], + [ + [ + { + "id": "all_samples" + }, + "all_samples.SummarizedExperiment.rds:md5,89eb7f54d7bb9690d1eab0c041d1aba1" ] - } + ] ], "meta": { "nf-test": "0.8.4", "nextflow": "24.01.0" }, - "timestamp": "2024-03-08T17:55:19.269014" + "timestamp": "2024-03-08T18:25:28.293298" } } \ No newline at end of file From 6f5632c4e4fff5234f5ec1e54196a813fb427d1f Mon Sep 17 00:00:00 2001 From: Rob Syme Date: Sat, 9 Mar 2024 17:08:27 -0500 Subject: [PATCH 214/634] Initial attempt at nf-test for rsem_merge_counts --- .../rsem_merge_counts/tests/main.nf.test | 28 ++++++++++++ .../rsem_merge_counts/tests/main.nf.test.snap | 43 +++++++++++++++++++ .../local/rsem_merge_counts/tests/tags.yml | 2 + 3 files changed, 73 insertions(+) create mode 100644 modules/local/rsem_merge_counts/tests/main.nf.test create mode 100644 modules/local/rsem_merge_counts/tests/main.nf.test.snap create mode 100644 modules/local/rsem_merge_counts/tests/tags.yml diff --git a/modules/local/rsem_merge_counts/tests/main.nf.test b/modules/local/rsem_merge_counts/tests/main.nf.test new file mode 100644 index 000000000..6ceaf6d74 --- /dev/null +++ b/modules/local/rsem_merge_counts/tests/main.nf.test @@ -0,0 +1,28 @@ +nextflow_process { + + name "Test Process RSEM_MERGE_COUNTS" + script "../main.nf" + process "RSEM_MERGE_COUNTS" + tag "modules'" + tag "modules_local" + tag "rsem_merge_counts" + + test("Should run without failures") { + + when { + process { + """ + input[0] = file("${moduleTestDir}/data/genes/*") + input[1] = file("${moduleTestDir}/data/isoforms/*") + """ + } + } + + then { + assert process.success + assert snapshot(process.out).match() + } + + } + +} diff --git a/modules/local/rsem_merge_counts/tests/main.nf.test.snap b/modules/local/rsem_merge_counts/tests/main.nf.test.snap new file mode 100644 index 000000000..800263c1a --- /dev/null +++ b/modules/local/rsem_merge_counts/tests/main.nf.test.snap @@ -0,0 +1,43 @@ +{ + "Should run without failures": { + "content": [ + { + "0": [ + "rsem.merged.gene_counts.tsv:md5,7d1da94077dc2f90cfb2c793ca5b7446" + ], + "1": [ + "rsem.merged.gene_tpm.tsv:md5,39bad606eb012456bba1d995fe0feb5f" + ], + "2": [ + "rsem.merged.transcript_counts.tsv:md5,e40bba0aafc5904361513b3513c217ad" + ], + "3": [ + "rsem.merged.transcript_tpm.tsv:md5,abbaac45f9938716c58d604299ea284e" + ], + "4": [ + "versions.yml:md5,48ca3e12c91829af8019462b3f6aa29c" + ], + "counts_gene": [ + "rsem.merged.gene_counts.tsv:md5,7d1da94077dc2f90cfb2c793ca5b7446" + ], + "counts_transcript": [ + "rsem.merged.transcript_counts.tsv:md5,e40bba0aafc5904361513b3513c217ad" + ], + "tpm_gene": [ + "rsem.merged.gene_tpm.tsv:md5,39bad606eb012456bba1d995fe0feb5f" + ], + "tpm_transcript": [ + "rsem.merged.transcript_tpm.tsv:md5,abbaac45f9938716c58d604299ea284e" + ], + "versions": [ + "versions.yml:md5,48ca3e12c91829af8019462b3f6aa29c" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-03-09T17:13:37.377348" + } +} \ No newline at end of file diff --git a/modules/local/rsem_merge_counts/tests/tags.yml b/modules/local/rsem_merge_counts/tests/tags.yml new file mode 100644 index 000000000..e1d8e23f0 --- /dev/null +++ b/modules/local/rsem_merge_counts/tests/tags.yml @@ -0,0 +1,2 @@ +RSEM_MERGE_COUNTS: + - "modules/local/rsem_merge_counts/**" From e71d687602fd6fbd269fa5902e2406f7d765fe84 Mon Sep 17 00:00:00 2001 From: Rob Syme Date: Sat, 9 Mar 2024 17:20:25 -0500 Subject: [PATCH 215/634] Include test data --- .../tests/data/genes/RAP1_IAA_30M_REP1.genes.results | 7 +++++++ .../tests/data/genes/RAP1_UNINDUCED_REP1.genes.results | 7 +++++++ .../tests/data/genes/RAP1_UNINDUCED_REP2.genes.results | 7 +++++++ .../tests/data/isoforms/RAP1_IAA_30M_REP1.isoforms.results | 7 +++++++ .../data/isoforms/RAP1_UNINDUCED_REP1.isoforms.results | 7 +++++++ .../data/isoforms/RAP1_UNINDUCED_REP2.isoforms.results | 7 +++++++ 6 files changed, 42 insertions(+) create mode 100644 modules/local/rsem_merge_counts/tests/data/genes/RAP1_IAA_30M_REP1.genes.results create mode 100644 modules/local/rsem_merge_counts/tests/data/genes/RAP1_UNINDUCED_REP1.genes.results create mode 100644 modules/local/rsem_merge_counts/tests/data/genes/RAP1_UNINDUCED_REP2.genes.results create mode 100644 modules/local/rsem_merge_counts/tests/data/isoforms/RAP1_IAA_30M_REP1.isoforms.results create mode 100644 modules/local/rsem_merge_counts/tests/data/isoforms/RAP1_UNINDUCED_REP1.isoforms.results create mode 100644 modules/local/rsem_merge_counts/tests/data/isoforms/RAP1_UNINDUCED_REP2.isoforms.results diff --git a/modules/local/rsem_merge_counts/tests/data/genes/RAP1_IAA_30M_REP1.genes.results b/modules/local/rsem_merge_counts/tests/data/genes/RAP1_IAA_30M_REP1.genes.results new file mode 100644 index 000000000..29232f4ef --- /dev/null +++ b/modules/local/rsem_merge_counts/tests/data/genes/RAP1_IAA_30M_REP1.genes.results @@ -0,0 +1,7 @@ +gene_id transcript_id(s) length effective_length expected_count TPM FPKM +Gfp_transgene Gfp_transgene 729.00 562.01 0.00 0.00 0.00 +HRA1 HRA1 564.00 397.05 0.00 0.00 0.00 +YAL001C YAL001C 3483.00 3316.01 55.00 762.38 490.51 +YAL002W YAL002W 3825.00 3658.01 34.00 427.23 274.88 +YAL003W YAL003W 621.00 454.02 616.00 62363.08 40124.02 +YAL004W YAL004W 648.00 481.02 1.00 95.56 61.48 diff --git a/modules/local/rsem_merge_counts/tests/data/genes/RAP1_UNINDUCED_REP1.genes.results b/modules/local/rsem_merge_counts/tests/data/genes/RAP1_UNINDUCED_REP1.genes.results new file mode 100644 index 000000000..247455005 --- /dev/null +++ b/modules/local/rsem_merge_counts/tests/data/genes/RAP1_UNINDUCED_REP1.genes.results @@ -0,0 +1,7 @@ +gene_id transcript_id(s) length effective_length expected_count TPM FPKM +Gfp_transgene Gfp_transgene 729.00 630.96 0.00 0.00 0.00 +HRA1 HRA1 564.00 465.96 0.00 0.00 0.00 +YAL001C YAL001C 3483.00 3384.96 69.00 937.05 581.61 +YAL002W YAL002W 3825.00 3726.96 30.00 370.03 229.67 +YAL003W YAL003W 621.00 522.96 798.00 70145.06 43537.87 +YAL004W YAL004W 648.00 549.96 0.00 0.00 0.00 diff --git a/modules/local/rsem_merge_counts/tests/data/genes/RAP1_UNINDUCED_REP2.genes.results b/modules/local/rsem_merge_counts/tests/data/genes/RAP1_UNINDUCED_REP2.genes.results new file mode 100644 index 000000000..79ce88374 --- /dev/null +++ b/modules/local/rsem_merge_counts/tests/data/genes/RAP1_UNINDUCED_REP2.genes.results @@ -0,0 +1,7 @@ +gene_id transcript_id(s) length effective_length expected_count TPM FPKM +Gfp_transgene Gfp_transgene 729.00 630.86 0.00 0.00 0.00 +HRA1 HRA1 564.00 465.86 0.00 0.00 0.00 +YAL001C YAL001C 3483.00 3384.86 110.00 783.22 460.39 +YAL002W YAL002W 3825.00 3726.86 81.00 523.81 307.91 +YAL003W YAL003W 621.00 522.86 1673.00 77115.22 45329.76 +YAL004W YAL004W 648.00 549.86 0.00 0.00 0.00 diff --git a/modules/local/rsem_merge_counts/tests/data/isoforms/RAP1_IAA_30M_REP1.isoforms.results b/modules/local/rsem_merge_counts/tests/data/isoforms/RAP1_IAA_30M_REP1.isoforms.results new file mode 100644 index 000000000..80c4bb9c3 --- /dev/null +++ b/modules/local/rsem_merge_counts/tests/data/isoforms/RAP1_IAA_30M_REP1.isoforms.results @@ -0,0 +1,7 @@ +transcript_id gene_id length effective_length expected_count TPM FPKM IsoPct +Gfp_transgene Gfp_transgene 729 562.01 0.00 0.00 0.00 0.00 +HRA1 HRA1 564 397.05 0.00 0.00 0.00 0.00 +YAL001C YAL001C 3483 3316.01 55.00 762.38 490.51 100.00 +YAL002W YAL002W 3825 3658.01 34.00 427.23 274.88 100.00 +YAL003W YAL003W 621 454.02 616.00 62363.08 40124.02 100.00 +YAL004W YAL004W 648 481.02 1.00 95.56 61.48 100.00 diff --git a/modules/local/rsem_merge_counts/tests/data/isoforms/RAP1_UNINDUCED_REP1.isoforms.results b/modules/local/rsem_merge_counts/tests/data/isoforms/RAP1_UNINDUCED_REP1.isoforms.results new file mode 100644 index 000000000..24db5e716 --- /dev/null +++ b/modules/local/rsem_merge_counts/tests/data/isoforms/RAP1_UNINDUCED_REP1.isoforms.results @@ -0,0 +1,7 @@ +transcript_id gene_id length effective_length expected_count TPM FPKM IsoPct +Gfp_transgene Gfp_transgene 729 630.96 0.00 0.00 0.00 0.00 +HRA1 HRA1 564 465.96 0.00 0.00 0.00 0.00 +YAL001C YAL001C 3483 3384.96 69.00 937.05 581.61 100.00 +YAL002W YAL002W 3825 3726.96 30.00 370.03 229.67 100.00 +YAL003W YAL003W 621 522.96 798.00 70145.06 43537.87 100.00 +YAL004W YAL004W 648 549.96 0.00 0.00 0.00 0.00 diff --git a/modules/local/rsem_merge_counts/tests/data/isoforms/RAP1_UNINDUCED_REP2.isoforms.results b/modules/local/rsem_merge_counts/tests/data/isoforms/RAP1_UNINDUCED_REP2.isoforms.results new file mode 100644 index 000000000..19d5bde86 --- /dev/null +++ b/modules/local/rsem_merge_counts/tests/data/isoforms/RAP1_UNINDUCED_REP2.isoforms.results @@ -0,0 +1,7 @@ +transcript_id gene_id length effective_length expected_count TPM FPKM IsoPct +Gfp_transgene Gfp_transgene 729 630.86 0.00 0.00 0.00 0.00 +HRA1 HRA1 564 465.86 0.00 0.00 0.00 0.00 +YAL001C YAL001C 3483 3384.86 110.00 783.22 460.39 100.00 +YAL002W YAL002W 3825 3726.86 81.00 523.81 307.91 100.00 +YAL003W YAL003W 621 522.86 1673.00 77115.22 45329.76 100.00 +YAL004W YAL004W 648 549.86 0.00 0.00 0.00 0.00 From 049859c6dd65baef42a533d44017386964159b08 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Mon, 11 Mar 2024 10:18:03 +0000 Subject: [PATCH 216/634] [skip ci] update readme --- README.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/README.md b/README.md index 452158956..23c0a3056 100644 --- a/README.md +++ b/README.md @@ -84,8 +84,6 @@ nextflow run nf-core/rnaseq \ --outdir \ --gtf \ --fasta \ - --igenomes_ignore \ - --genome null \ -profile ``` From 292cbc9961d0457b9503bea03cc9276288a70049 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Mon, 11 Mar 2024 10:18:46 +0000 Subject: [PATCH 217/634] Update usage.md --- docs/usage.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/docs/usage.md b/docs/usage.md index 7b148c636..64ac29938 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -213,8 +213,6 @@ nextflow run \ --outdir \ --gtf \ --fasta \ - --igenomes_ignore \ - --genome null \ -profile docker ``` From e5ceb90b7d97d303457715da04dcf0185779d10b Mon Sep 17 00:00:00 2001 From: Adam Talbot <12817534+adamrtalbot@users.noreply.github.com> Date: Mon, 11 Mar 2024 10:39:37 +0000 Subject: [PATCH 218/634] Remove all tags.yml files --- modules/local/gtf2bed/tests/tags.yml | 2 -- modules/local/star_align_igenomes/tests/tags.yml | 2 -- modules/local/star_genomegenerate_igenomes/tests/tags.yml | 2 -- modules/nf-core/bbmap/bbsplit/tests/tags.yml | 2 -- modules/nf-core/bedtools/genomecov/tests/tags.yml | 2 -- modules/nf-core/cat/fastq/tests/tags.yml | 2 -- modules/nf-core/custom/catadditionalfasta/tests/tags.yml | 2 -- modules/nf-core/custom/getchromsizes/tests/tags.yml | 2 -- modules/nf-core/custom/tx2gene/tests/tags.yml | 2 -- modules/nf-core/dupradar/tests/tags.yml | 2 -- modules/nf-core/fastp/tests/tags.yml | 2 -- modules/nf-core/fastqc/tests/tags.yml | 2 -- modules/nf-core/fq/subsample/tests/tags.yml | 2 -- modules/nf-core/gffread/tests/tags.yml | 2 -- modules/nf-core/gunzip/tests/tags.yml | 2 -- modules/nf-core/hisat2/align/tests/tags.yml | 4 ---- modules/nf-core/hisat2/build/tests/tags.yml | 3 --- modules/nf-core/hisat2/extractsplicesites/tests/tags.yml | 2 -- modules/nf-core/kallisto/index/tests/tags.yml | 2 -- modules/nf-core/kallisto/quant/tests/tags.yml | 3 --- modules/nf-core/multiqc/tests/tags.yml | 2 -- modules/nf-core/picard/markduplicates/tests/tags.yml | 2 -- modules/nf-core/preseq/lcextrap/tests/tags.yml | 2 -- modules/nf-core/qualimap/rnaseq/tests/tags.yml | 2 -- modules/nf-core/rsem/calculateexpression/tests/tags.yml | 2 -- modules/nf-core/rsem/preparereference/tests/tags.yml | 2 -- modules/nf-core/rseqc/bamstat/tests/tags.yml | 2 -- modules/nf-core/rseqc/inferexperiment/tests/tags.yml | 2 -- modules/nf-core/rseqc/innerdistance/tests/tags.yml | 2 -- modules/nf-core/rseqc/junctionannotation/tests/tags.yml | 2 -- modules/nf-core/rseqc/junctionsaturation/tests/tags.yml | 2 -- modules/nf-core/rseqc/readdistribution/tests/tags.yml | 2 -- modules/nf-core/rseqc/readduplication/tests/tags.yml | 2 -- modules/nf-core/rseqc/tin/tests/tags.yml | 2 -- modules/nf-core/salmon/index/tests/tags.yml | 2 -- modules/nf-core/salmon/quant/tests/tags.yml | 2 -- modules/nf-core/samtools/flagstat/tests/tags.yml | 2 -- modules/nf-core/samtools/idxstats/tests/tags.yml | 2 -- modules/nf-core/samtools/index/tests/tags.yml | 2 -- modules/nf-core/samtools/sort/tests/tags.yml | 3 --- modules/nf-core/samtools/stats/tests/tags.yml | 2 -- modules/nf-core/sortmerna/tests/tags.yml | 2 -- modules/nf-core/star/align/tests/tags.yml | 2 -- modules/nf-core/star/genomegenerate/tests/tags.yml | 2 -- modules/nf-core/stringtie/stringtie/tests/tags.yml | 2 -- modules/nf-core/subread/featurecounts/tests/tags.yml | 2 -- .../summarizedexperiment/summarizedexperiment/tests/tags.yml | 2 -- modules/nf-core/trimgalore/tests/tags.yml | 2 -- modules/nf-core/tximeta/tximport/tests/tags.yml | 2 -- modules/nf-core/ucsc/bedclip/tests/tags.yml | 2 -- modules/nf-core/ucsc/bedgraphtobigwig/tests/tags.yml | 2 -- modules/nf-core/umitools/dedup/tests/tags.yml | 2 -- modules/nf-core/umitools/extract/tests/tags.yml | 2 -- modules/nf-core/umitools/prepareforrsem/tests/tags.yml | 2 -- modules/nf-core/untar/tests/tags.yml | 2 -- .../nf-core/bam_dedup_stats_samtools_umitools/tests/tags.yml | 2 -- subworkflows/nf-core/bam_markduplicates_picard/tests/tags.yml | 2 -- subworkflows/nf-core/bam_rseqc/tests/tags.yml | 2 -- subworkflows/nf-core/bam_sort_stats_samtools/tests/tags.yml | 2 -- subworkflows/nf-core/bam_stats_samtools/tests/tags.yml | 2 -- .../nf-core/bedgraph_bedclip_bedgraphtobigwig/tests/tags.yml | 2 -- subworkflows/nf-core/fastq_align_hisat2/tests/tags.yml | 2 -- .../nf-core/fastq_fastqc_umitools_fastp/tests/tags.yml | 2 -- .../nf-core/fastq_fastqc_umitools_trimgalore/tests/tags.yml | 2 -- subworkflows/nf-core/fastq_subsample_fq_salmon/tests/tags.yml | 2 -- subworkflows/nf-core/utils_nextflow_pipeline/tests/tags.yml | 2 -- subworkflows/nf-core/utils_nfcore_pipeline/tests/tags.yml | 2 -- subworkflows/nf-core/utils_nfvalidation_plugin/tests/tags.yml | 2 -- 68 files changed, 141 deletions(-) delete mode 100644 modules/local/gtf2bed/tests/tags.yml delete mode 100644 modules/local/star_align_igenomes/tests/tags.yml delete mode 100644 modules/local/star_genomegenerate_igenomes/tests/tags.yml delete mode 100644 modules/nf-core/bbmap/bbsplit/tests/tags.yml delete mode 100644 modules/nf-core/bedtools/genomecov/tests/tags.yml delete mode 100644 modules/nf-core/cat/fastq/tests/tags.yml delete mode 100644 modules/nf-core/custom/catadditionalfasta/tests/tags.yml delete mode 100644 modules/nf-core/custom/getchromsizes/tests/tags.yml delete mode 100644 modules/nf-core/custom/tx2gene/tests/tags.yml delete mode 100644 modules/nf-core/dupradar/tests/tags.yml delete mode 100644 modules/nf-core/fastp/tests/tags.yml delete mode 100644 modules/nf-core/fastqc/tests/tags.yml delete mode 100644 modules/nf-core/fq/subsample/tests/tags.yml delete mode 100644 modules/nf-core/gffread/tests/tags.yml delete mode 100644 modules/nf-core/gunzip/tests/tags.yml delete mode 100644 modules/nf-core/hisat2/align/tests/tags.yml delete mode 100644 modules/nf-core/hisat2/build/tests/tags.yml delete mode 100644 modules/nf-core/hisat2/extractsplicesites/tests/tags.yml delete mode 100644 modules/nf-core/kallisto/index/tests/tags.yml delete mode 100644 modules/nf-core/kallisto/quant/tests/tags.yml delete mode 100644 modules/nf-core/multiqc/tests/tags.yml delete mode 100644 modules/nf-core/picard/markduplicates/tests/tags.yml delete mode 100644 modules/nf-core/preseq/lcextrap/tests/tags.yml delete mode 100644 modules/nf-core/qualimap/rnaseq/tests/tags.yml delete mode 100644 modules/nf-core/rsem/calculateexpression/tests/tags.yml delete mode 100644 modules/nf-core/rsem/preparereference/tests/tags.yml delete mode 100644 modules/nf-core/rseqc/bamstat/tests/tags.yml delete mode 100644 modules/nf-core/rseqc/inferexperiment/tests/tags.yml delete mode 100644 modules/nf-core/rseqc/innerdistance/tests/tags.yml delete mode 100644 modules/nf-core/rseqc/junctionannotation/tests/tags.yml delete mode 100644 modules/nf-core/rseqc/junctionsaturation/tests/tags.yml delete mode 100644 modules/nf-core/rseqc/readdistribution/tests/tags.yml delete mode 100644 modules/nf-core/rseqc/readduplication/tests/tags.yml delete mode 100644 modules/nf-core/rseqc/tin/tests/tags.yml delete mode 100644 modules/nf-core/salmon/index/tests/tags.yml delete mode 100644 modules/nf-core/salmon/quant/tests/tags.yml delete mode 100644 modules/nf-core/samtools/flagstat/tests/tags.yml delete mode 100644 modules/nf-core/samtools/idxstats/tests/tags.yml delete mode 100644 modules/nf-core/samtools/index/tests/tags.yml delete mode 100644 modules/nf-core/samtools/sort/tests/tags.yml delete mode 100644 modules/nf-core/samtools/stats/tests/tags.yml delete mode 100644 modules/nf-core/sortmerna/tests/tags.yml delete mode 100644 modules/nf-core/star/align/tests/tags.yml delete mode 100644 modules/nf-core/star/genomegenerate/tests/tags.yml delete mode 100644 modules/nf-core/stringtie/stringtie/tests/tags.yml delete mode 100644 modules/nf-core/subread/featurecounts/tests/tags.yml delete mode 100644 modules/nf-core/summarizedexperiment/summarizedexperiment/tests/tags.yml delete mode 100644 modules/nf-core/trimgalore/tests/tags.yml delete mode 100644 modules/nf-core/tximeta/tximport/tests/tags.yml delete mode 100644 modules/nf-core/ucsc/bedclip/tests/tags.yml delete mode 100644 modules/nf-core/ucsc/bedgraphtobigwig/tests/tags.yml delete mode 100644 modules/nf-core/umitools/dedup/tests/tags.yml delete mode 100644 modules/nf-core/umitools/extract/tests/tags.yml delete mode 100644 modules/nf-core/umitools/prepareforrsem/tests/tags.yml delete mode 100644 modules/nf-core/untar/tests/tags.yml delete mode 100644 subworkflows/nf-core/bam_dedup_stats_samtools_umitools/tests/tags.yml delete mode 100644 subworkflows/nf-core/bam_markduplicates_picard/tests/tags.yml delete mode 100644 subworkflows/nf-core/bam_rseqc/tests/tags.yml delete mode 100644 subworkflows/nf-core/bam_sort_stats_samtools/tests/tags.yml delete mode 100644 subworkflows/nf-core/bam_stats_samtools/tests/tags.yml delete mode 100644 subworkflows/nf-core/bedgraph_bedclip_bedgraphtobigwig/tests/tags.yml delete mode 100644 subworkflows/nf-core/fastq_align_hisat2/tests/tags.yml delete mode 100644 subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/tags.yml delete mode 100644 subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/tests/tags.yml delete mode 100644 subworkflows/nf-core/fastq_subsample_fq_salmon/tests/tags.yml delete mode 100644 subworkflows/nf-core/utils_nextflow_pipeline/tests/tags.yml delete mode 100644 subworkflows/nf-core/utils_nfcore_pipeline/tests/tags.yml delete mode 100644 subworkflows/nf-core/utils_nfvalidation_plugin/tests/tags.yml diff --git a/modules/local/gtf2bed/tests/tags.yml b/modules/local/gtf2bed/tests/tags.yml deleted file mode 100644 index 6c4f871df..000000000 --- a/modules/local/gtf2bed/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -gtf2bed: - - "modules/local/gtf2bed/**" diff --git a/modules/local/star_align_igenomes/tests/tags.yml b/modules/local/star_align_igenomes/tests/tags.yml deleted file mode 100644 index 23008800b..000000000 --- a/modules/local/star_align_igenomes/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -STAR_ALIGN_IGENOMES: - - modules/local/star_align_igenomes/** diff --git a/modules/local/star_genomegenerate_igenomes/tests/tags.yml b/modules/local/star_genomegenerate_igenomes/tests/tags.yml deleted file mode 100644 index 2ea1d4211..000000000 --- a/modules/local/star_genomegenerate_igenomes/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -STAR_GENOMEGENERATE_IGENOMES: - - modules/local/star_genomegenerate_igenomes/** diff --git a/modules/nf-core/bbmap/bbsplit/tests/tags.yml b/modules/nf-core/bbmap/bbsplit/tests/tags.yml deleted file mode 100644 index f6943f95d..000000000 --- a/modules/nf-core/bbmap/bbsplit/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -bbmap/bbsplit: - - "modules/nf-core/bbmap/bbsplit/**" diff --git a/modules/nf-core/bedtools/genomecov/tests/tags.yml b/modules/nf-core/bedtools/genomecov/tests/tags.yml deleted file mode 100644 index 55fce4780..000000000 --- a/modules/nf-core/bedtools/genomecov/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -bedtools/genomecov: - - "modules/nf-core/bedtools/genomecov/**" diff --git a/modules/nf-core/cat/fastq/tests/tags.yml b/modules/nf-core/cat/fastq/tests/tags.yml deleted file mode 100644 index 6ac436140..000000000 --- a/modules/nf-core/cat/fastq/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -cat/fastq: - - modules/nf-core/cat/fastq/** diff --git a/modules/nf-core/custom/catadditionalfasta/tests/tags.yml b/modules/nf-core/custom/catadditionalfasta/tests/tags.yml deleted file mode 100644 index 8e73a0121..000000000 --- a/modules/nf-core/custom/catadditionalfasta/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -custom/catadditionalfasta: - - "modules/nf-core/custom/catadditionalfasta/**" diff --git a/modules/nf-core/custom/getchromsizes/tests/tags.yml b/modules/nf-core/custom/getchromsizes/tests/tags.yml deleted file mode 100644 index d89a805fd..000000000 --- a/modules/nf-core/custom/getchromsizes/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -custom/getchromsizes: - - modules/nf-core/custom/getchromsizes/** diff --git a/modules/nf-core/custom/tx2gene/tests/tags.yml b/modules/nf-core/custom/tx2gene/tests/tags.yml deleted file mode 100644 index 493fbc3b1..000000000 --- a/modules/nf-core/custom/tx2gene/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -custom/tx2gene: - - "modules/nf-core/custom/tx2gene/**" diff --git a/modules/nf-core/dupradar/tests/tags.yml b/modules/nf-core/dupradar/tests/tags.yml deleted file mode 100644 index 255dc4ef3..000000000 --- a/modules/nf-core/dupradar/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -dupradar: - - "modules/nf-core/dupradar/**" diff --git a/modules/nf-core/fastp/tests/tags.yml b/modules/nf-core/fastp/tests/tags.yml deleted file mode 100644 index c1afcce75..000000000 --- a/modules/nf-core/fastp/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -fastp: - - modules/nf-core/fastp/** diff --git a/modules/nf-core/fastqc/tests/tags.yml b/modules/nf-core/fastqc/tests/tags.yml deleted file mode 100644 index 7834294ba..000000000 --- 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/fq/subsample/tests/tags.yml b/modules/nf-core/fq/subsample/tests/tags.yml deleted file mode 100644 index 515643178..000000000 --- a/modules/nf-core/fq/subsample/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -fq/subsample: - - modules/nf-core/fq/subsample/** diff --git a/modules/nf-core/gffread/tests/tags.yml b/modules/nf-core/gffread/tests/tags.yml deleted file mode 100644 index 055760656..000000000 --- a/modules/nf-core/gffread/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -gffread: - - modules/nf-core/gffread/** diff --git a/modules/nf-core/gunzip/tests/tags.yml b/modules/nf-core/gunzip/tests/tags.yml deleted file mode 100644 index fd3f69154..000000000 --- a/modules/nf-core/gunzip/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -gunzip: - - modules/nf-core/gunzip/** diff --git a/modules/nf-core/hisat2/align/tests/tags.yml b/modules/nf-core/hisat2/align/tests/tags.yml deleted file mode 100644 index 3a46cc896..000000000 --- a/modules/nf-core/hisat2/align/tests/tags.yml +++ /dev/null @@ -1,4 +0,0 @@ -hisat2/align: - - modules/nf-core/hisat2/align/** - - modules/nf-core/hisat2/build/** - - modules/nf-core/hisat2/extractsplicesites/** diff --git a/modules/nf-core/hisat2/build/tests/tags.yml b/modules/nf-core/hisat2/build/tests/tags.yml deleted file mode 100644 index a7faecb27..000000000 --- a/modules/nf-core/hisat2/build/tests/tags.yml +++ /dev/null @@ -1,3 +0,0 @@ -hisat2/build: - - modules/nf-core/hisat2/build/** - - modules/nf-core/hisat2/extractsplicesites/** diff --git a/modules/nf-core/hisat2/extractsplicesites/tests/tags.yml b/modules/nf-core/hisat2/extractsplicesites/tests/tags.yml deleted file mode 100644 index 4b0ed4010..000000000 --- a/modules/nf-core/hisat2/extractsplicesites/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -hisat2/extractsplicesites: - - modules/nf-core/hisat2/extractsplicesites/** diff --git a/modules/nf-core/kallisto/index/tests/tags.yml b/modules/nf-core/kallisto/index/tests/tags.yml deleted file mode 100644 index 9f47b88a1..000000000 --- a/modules/nf-core/kallisto/index/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -kallisto/index: - - modules/nf-core/kallisto/index/** diff --git a/modules/nf-core/kallisto/quant/tests/tags.yml b/modules/nf-core/kallisto/quant/tests/tags.yml deleted file mode 100644 index 460936583..000000000 --- a/modules/nf-core/kallisto/quant/tests/tags.yml +++ /dev/null @@ -1,3 +0,0 @@ -kallisto/quant: - - modules/nf-core/kallisto/index/** - - modules/nf-core/kallisto/quant/** diff --git a/modules/nf-core/multiqc/tests/tags.yml b/modules/nf-core/multiqc/tests/tags.yml deleted file mode 100644 index bea6c0d37..000000000 --- a/modules/nf-core/multiqc/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -multiqc: - - modules/nf-core/multiqc/** diff --git a/modules/nf-core/picard/markduplicates/tests/tags.yml b/modules/nf-core/picard/markduplicates/tests/tags.yml deleted file mode 100644 index 4f213d620..000000000 --- a/modules/nf-core/picard/markduplicates/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -picard/markduplicates: - - modules/nf-core/picard/markduplicates/** diff --git a/modules/nf-core/preseq/lcextrap/tests/tags.yml b/modules/nf-core/preseq/lcextrap/tests/tags.yml deleted file mode 100644 index b9e25ea71..000000000 --- a/modules/nf-core/preseq/lcextrap/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -preseq/lcextrap: - - modules/nf-core/preseq/lcextrap/** diff --git a/modules/nf-core/qualimap/rnaseq/tests/tags.yml b/modules/nf-core/qualimap/rnaseq/tests/tags.yml deleted file mode 100644 index 74269debe..000000000 --- a/modules/nf-core/qualimap/rnaseq/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -qualimap/rnaseq: - - modules/nf-core/qualimap/rnaseq/** diff --git a/modules/nf-core/rsem/calculateexpression/tests/tags.yml b/modules/nf-core/rsem/calculateexpression/tests/tags.yml deleted file mode 100644 index 654756aa5..000000000 --- a/modules/nf-core/rsem/calculateexpression/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -rsem/calculateexpression: - - modules/nf-core/rsem/calculateexpression/** diff --git a/modules/nf-core/rsem/preparereference/tests/tags.yml b/modules/nf-core/rsem/preparereference/tests/tags.yml deleted file mode 100644 index 112904564..000000000 --- a/modules/nf-core/rsem/preparereference/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -rsem/preparereference: - - modules/nf-core/rsem/preparereference/** diff --git a/modules/nf-core/rseqc/bamstat/tests/tags.yml b/modules/nf-core/rseqc/bamstat/tests/tags.yml deleted file mode 100644 index ed9a41fa9..000000000 --- a/modules/nf-core/rseqc/bamstat/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -rseqc/bamstat: - - modules/nf-core/rseqc/bamstat/** diff --git a/modules/nf-core/rseqc/inferexperiment/tests/tags.yml b/modules/nf-core/rseqc/inferexperiment/tests/tags.yml deleted file mode 100644 index f9ba7e26a..000000000 --- a/modules/nf-core/rseqc/inferexperiment/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -rseqc/inferexperiment: - - modules/nf-core/rseqc/inferexperiment/** diff --git a/modules/nf-core/rseqc/innerdistance/tests/tags.yml b/modules/nf-core/rseqc/innerdistance/tests/tags.yml deleted file mode 100644 index 4a9d0acf9..000000000 --- a/modules/nf-core/rseqc/innerdistance/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -rseqc/innerdistance: - - modules/nf-core/rseqc/innerdistance/** diff --git a/modules/nf-core/rseqc/junctionannotation/tests/tags.yml b/modules/nf-core/rseqc/junctionannotation/tests/tags.yml deleted file mode 100644 index 5f719fb8d..000000000 --- a/modules/nf-core/rseqc/junctionannotation/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -rseqc/junctionannotation: - - modules/nf-core/rseqc/junctionannotation/** diff --git a/modules/nf-core/rseqc/junctionsaturation/tests/tags.yml b/modules/nf-core/rseqc/junctionsaturation/tests/tags.yml deleted file mode 100644 index 7022b59ad..000000000 --- a/modules/nf-core/rseqc/junctionsaturation/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -rseqc/junctionsaturation: - - modules/nf-core/rseqc/junctionsaturation/** diff --git a/modules/nf-core/rseqc/readdistribution/tests/tags.yml b/modules/nf-core/rseqc/readdistribution/tests/tags.yml deleted file mode 100644 index c0c477b6d..000000000 --- a/modules/nf-core/rseqc/readdistribution/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -rseqc/readdistribution: - - modules/nf-core/rseqc/readdistribution/** diff --git a/modules/nf-core/rseqc/readduplication/tests/tags.yml b/modules/nf-core/rseqc/readduplication/tests/tags.yml deleted file mode 100644 index fce3d35d4..000000000 --- a/modules/nf-core/rseqc/readduplication/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -rseqc/readduplication: - - modules/nf-core/rseqc/readduplication/** diff --git a/modules/nf-core/rseqc/tin/tests/tags.yml b/modules/nf-core/rseqc/tin/tests/tags.yml deleted file mode 100644 index 741bbd0c0..000000000 --- a/modules/nf-core/rseqc/tin/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -rseqc/tin: - - modules/nf-core/rseqc/tin/** diff --git a/modules/nf-core/salmon/index/tests/tags.yml b/modules/nf-core/salmon/index/tests/tags.yml deleted file mode 100644 index 02997890f..000000000 --- a/modules/nf-core/salmon/index/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -salmon/index: - - modules/nf-core/salmon/index/** diff --git a/modules/nf-core/salmon/quant/tests/tags.yml b/modules/nf-core/salmon/quant/tests/tags.yml deleted file mode 100644 index 048d81642..000000000 --- a/modules/nf-core/salmon/quant/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -salmon/quant: - - modules/nf-core/salmon/quant/** diff --git a/modules/nf-core/samtools/flagstat/tests/tags.yml b/modules/nf-core/samtools/flagstat/tests/tags.yml deleted file mode 100644 index 2d2b7255e..000000000 --- a/modules/nf-core/samtools/flagstat/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -samtools/flagstat: - - modules/nf-core/samtools/flagstat/** diff --git a/modules/nf-core/samtools/idxstats/tests/tags.yml b/modules/nf-core/samtools/idxstats/tests/tags.yml deleted file mode 100644 index d3057c61f..000000000 --- a/modules/nf-core/samtools/idxstats/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -samtools/idxstats: - - modules/nf-core/samtools/idxstats/** diff --git a/modules/nf-core/samtools/index/tests/tags.yml b/modules/nf-core/samtools/index/tests/tags.yml deleted file mode 100644 index e0f58a7a3..000000000 --- a/modules/nf-core/samtools/index/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -samtools/index: - - modules/nf-core/samtools/index/** diff --git a/modules/nf-core/samtools/sort/tests/tags.yml b/modules/nf-core/samtools/sort/tests/tags.yml deleted file mode 100644 index cd63ea208..000000000 --- a/modules/nf-core/samtools/sort/tests/tags.yml +++ /dev/null @@ -1,3 +0,0 @@ -samtools/sort: - - modules/nf-core/samtools/sort/** - - tests/modules/nf-core/samtools/sort/** diff --git a/modules/nf-core/samtools/stats/tests/tags.yml b/modules/nf-core/samtools/stats/tests/tags.yml deleted file mode 100644 index 7c28e30f3..000000000 --- a/modules/nf-core/samtools/stats/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -samtools/stats: - - modules/nf-core/samtools/stats/** diff --git a/modules/nf-core/sortmerna/tests/tags.yml b/modules/nf-core/sortmerna/tests/tags.yml deleted file mode 100644 index e088480c7..000000000 --- a/modules/nf-core/sortmerna/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -sortmerna: - - modules/nf-core/sortmerna/** diff --git a/modules/nf-core/star/align/tests/tags.yml b/modules/nf-core/star/align/tests/tags.yml deleted file mode 100644 index 8beace16e..000000000 --- a/modules/nf-core/star/align/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -star/align: - - modules/nf-core/star/align/** diff --git a/modules/nf-core/star/genomegenerate/tests/tags.yml b/modules/nf-core/star/genomegenerate/tests/tags.yml deleted file mode 100644 index 79f619bfe..000000000 --- a/modules/nf-core/star/genomegenerate/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -star/genomegenerate: - - modules/nf-core/star/genomegenerate/** diff --git a/modules/nf-core/stringtie/stringtie/tests/tags.yml b/modules/nf-core/stringtie/stringtie/tests/tags.yml deleted file mode 100644 index da9b051c3..000000000 --- a/modules/nf-core/stringtie/stringtie/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -stringtie/stringtie: - - modules/nf-core/stringtie/stringtie/** diff --git a/modules/nf-core/subread/featurecounts/tests/tags.yml b/modules/nf-core/subread/featurecounts/tests/tags.yml deleted file mode 100644 index 6d2534bf4..000000000 --- a/modules/nf-core/subread/featurecounts/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -subread/featurecounts: - - modules/nf-core/subread/featurecounts/** diff --git a/modules/nf-core/summarizedexperiment/summarizedexperiment/tests/tags.yml b/modules/nf-core/summarizedexperiment/summarizedexperiment/tests/tags.yml deleted file mode 100644 index 9856e958c..000000000 --- a/modules/nf-core/summarizedexperiment/summarizedexperiment/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -summarizedexperiment/summarizedexperiment: - - "modules/nf-core/summarizedexperiment/summarizedexperiment/**" diff --git a/modules/nf-core/trimgalore/tests/tags.yml b/modules/nf-core/trimgalore/tests/tags.yml deleted file mode 100644 index e9937691a..000000000 --- a/modules/nf-core/trimgalore/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -trimgalore: - - modules/nf-core/trimgalore/** diff --git a/modules/nf-core/tximeta/tximport/tests/tags.yml b/modules/nf-core/tximeta/tximport/tests/tags.yml deleted file mode 100644 index fc96a89e0..000000000 --- a/modules/nf-core/tximeta/tximport/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -tximeta/tximport: - - "modules/nf-core/tximeta/tximport/**" diff --git a/modules/nf-core/ucsc/bedclip/tests/tags.yml b/modules/nf-core/ucsc/bedclip/tests/tags.yml deleted file mode 100644 index 0fcc90e32..000000000 --- a/modules/nf-core/ucsc/bedclip/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -ucsc/bedclip: - - modules/nf-core/ucsc/bedclip/** diff --git a/modules/nf-core/ucsc/bedgraphtobigwig/tests/tags.yml b/modules/nf-core/ucsc/bedgraphtobigwig/tests/tags.yml deleted file mode 100644 index 481e8b8bf..000000000 --- a/modules/nf-core/ucsc/bedgraphtobigwig/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -ucsc/bedgraphtobigwig: - - modules/nf-core/ucsc/bedgraphtobigwig/** diff --git a/modules/nf-core/umitools/dedup/tests/tags.yml b/modules/nf-core/umitools/dedup/tests/tags.yml deleted file mode 100644 index 5934c5cb7..000000000 --- a/modules/nf-core/umitools/dedup/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -umitools/dedup: - - "modules/nf-core/umitools/dedup/**" diff --git a/modules/nf-core/umitools/extract/tests/tags.yml b/modules/nf-core/umitools/extract/tests/tags.yml deleted file mode 100644 index c3fb23de4..000000000 --- a/modules/nf-core/umitools/extract/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -umitools/extract: - - modules/nf-core/umitools/extract/** diff --git a/modules/nf-core/umitools/prepareforrsem/tests/tags.yml b/modules/nf-core/umitools/prepareforrsem/tests/tags.yml deleted file mode 100644 index 804c113dd..000000000 --- a/modules/nf-core/umitools/prepareforrsem/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -umitools/prepareforrsem: - - "modules/nf-core/umitools/prepareforrsem/**" diff --git a/modules/nf-core/untar/tests/tags.yml b/modules/nf-core/untar/tests/tags.yml deleted file mode 100644 index feb6f15c0..000000000 --- a/modules/nf-core/untar/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -untar: - - modules/nf-core/untar/** diff --git a/subworkflows/nf-core/bam_dedup_stats_samtools_umitools/tests/tags.yml b/subworkflows/nf-core/bam_dedup_stats_samtools_umitools/tests/tags.yml deleted file mode 100644 index bfd5e023e..000000000 --- a/subworkflows/nf-core/bam_dedup_stats_samtools_umitools/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -subworkflows/bam_dedup_stats_samtools_umitools: - - subworkflows/nf-core/bam_dedup_stats_samtools_umitools/** diff --git a/subworkflows/nf-core/bam_markduplicates_picard/tests/tags.yml b/subworkflows/nf-core/bam_markduplicates_picard/tests/tags.yml deleted file mode 100644 index 10b852706..000000000 --- a/subworkflows/nf-core/bam_markduplicates_picard/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -subworkflows/bam_markduplicates_picard: - - subworkflows/nf-core/bam_markduplicates_picard/** diff --git a/subworkflows/nf-core/bam_rseqc/tests/tags.yml b/subworkflows/nf-core/bam_rseqc/tests/tags.yml deleted file mode 100644 index c8dfce3a9..000000000 --- a/subworkflows/nf-core/bam_rseqc/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -subworkflows/bam_rseqc: - - subworkflows/nf-core/bam_rseqc/** diff --git a/subworkflows/nf-core/bam_sort_stats_samtools/tests/tags.yml b/subworkflows/nf-core/bam_sort_stats_samtools/tests/tags.yml deleted file mode 100644 index 30b69d6a4..000000000 --- a/subworkflows/nf-core/bam_sort_stats_samtools/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -subworkflows/bam_sort_stats_samtools: - - subworkflows/nf-core/bam_sort_stats_samtools/** diff --git a/subworkflows/nf-core/bam_stats_samtools/tests/tags.yml b/subworkflows/nf-core/bam_stats_samtools/tests/tags.yml deleted file mode 100644 index ec2f2d68f..000000000 --- a/subworkflows/nf-core/bam_stats_samtools/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -subworkflows/bam_stats_samtools: - - subworkflows/nf-core/bam_stats_samtools/** diff --git a/subworkflows/nf-core/bedgraph_bedclip_bedgraphtobigwig/tests/tags.yml b/subworkflows/nf-core/bedgraph_bedclip_bedgraphtobigwig/tests/tags.yml deleted file mode 100644 index 83a103035..000000000 --- a/subworkflows/nf-core/bedgraph_bedclip_bedgraphtobigwig/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -subworkflows/bedgraph_bedclip_bedgraphtobigwig: - - subworkflows/nf-core/bedgraph_bedclip_bedgraphtobigwig/** diff --git a/subworkflows/nf-core/fastq_align_hisat2/tests/tags.yml b/subworkflows/nf-core/fastq_align_hisat2/tests/tags.yml deleted file mode 100644 index 8993cde0c..000000000 --- a/subworkflows/nf-core/fastq_align_hisat2/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -subworkflows/fastq_align_hisat2: - - subworkflows/nf-core/fastq_align_hisat2/** diff --git a/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/tags.yml b/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/tags.yml deleted file mode 100644 index 84a4b5676..000000000 --- a/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -subworkflows/fastq_fastqc_umitools_fastp: - - subworkflows/nf-core/fastq_fastqc_umitools_fastp/** diff --git a/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/tests/tags.yml b/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/tests/tags.yml deleted file mode 100644 index 5bf59db41..000000000 --- a/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -subworkflows/fastq_fastqc_umitools_trimgalore: - - subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/** diff --git a/subworkflows/nf-core/fastq_subsample_fq_salmon/tests/tags.yml b/subworkflows/nf-core/fastq_subsample_fq_salmon/tests/tags.yml deleted file mode 100644 index cc809c524..000000000 --- a/subworkflows/nf-core/fastq_subsample_fq_salmon/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -subworkflows/fastq_subsample_fq_salmon: - - subworkflows/nf-core/fastq_subsample_fq_salmon/** diff --git a/subworkflows/nf-core/utils_nextflow_pipeline/tests/tags.yml b/subworkflows/nf-core/utils_nextflow_pipeline/tests/tags.yml deleted file mode 100644 index f84761125..000000000 --- a/subworkflows/nf-core/utils_nextflow_pipeline/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -subworkflows/utils_nextflow_pipeline: - - subworkflows/nf-core/utils_nextflow_pipeline/** diff --git a/subworkflows/nf-core/utils_nfcore_pipeline/tests/tags.yml b/subworkflows/nf-core/utils_nfcore_pipeline/tests/tags.yml deleted file mode 100644 index ac8523c9a..000000000 --- a/subworkflows/nf-core/utils_nfcore_pipeline/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -subworkflows/utils_nfcore_pipeline: - - subworkflows/nf-core/utils_nfcore_pipeline/** 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 60b1cfff4..000000000 --- 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/** From 42468b8e7a4c0954801938a98ddabd16ac942a97 Mon Sep 17 00:00:00 2001 From: Adam Talbot <12817534+adamrtalbot@users.noreply.github.com> Date: Mon, 11 Mar 2024 10:50:47 +0000 Subject: [PATCH 219/634] Replace deseq2qc paths --- modules/local/deseq2_qc/tests/main.nf.test | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/modules/local/deseq2_qc/tests/main.nf.test b/modules/local/deseq2_qc/tests/main.nf.test index bdd9ff3aa..69058e907 100644 --- a/modules/local/deseq2_qc/tests/main.nf.test +++ b/modules/local/deseq2_qc/tests/main.nf.test @@ -9,10 +9,10 @@ nextflow_process { when { process { """ - input[0] = file("${moduleTestDir}/data/countFile.tsv") - input[1] = file("${moduleTestDir}/data/deseq2_pca_header.txt") - input[2] = file("${moduleTestDir}/data/deseq2_clustering_header.txt") - """.stripIndent().trim() + input[0] = file("${params.pipelines_testdata_base_path}/deseq2qc/countFile.tsv") + input[1] = file("${params.pipelines_testdata_base_path}/deseq2qc/deseq2_pca_header.txt") + input[2] = file("${params.pipelines_testdata_base_path}/deseq2qc/deseq2_clustering_header.txt") + """ } } From 09a88afef82d8bb4a1371179d6097ce8271c0d38 Mon Sep 17 00:00:00 2001 From: Adam Talbot <12817534+adamrtalbot@users.noreply.github.com> Date: Mon, 11 Mar 2024 10:51:58 +0000 Subject: [PATCH 220/634] delete data files --- .../local/deseq2_qc/tests/data/countFile.tsv | 18 ------------------ .../tests/data/deseq2_clustering_header.txt | 12 ------------ .../deseq2_qc/tests/data/deseq2_pca_header.txt | 11 ----------- 3 files changed, 41 deletions(-) delete mode 100644 modules/local/deseq2_qc/tests/data/countFile.tsv delete mode 100644 modules/local/deseq2_qc/tests/data/deseq2_clustering_header.txt delete mode 100644 modules/local/deseq2_qc/tests/data/deseq2_pca_header.txt diff --git a/modules/local/deseq2_qc/tests/data/countFile.tsv b/modules/local/deseq2_qc/tests/data/countFile.tsv deleted file mode 100644 index d4129d651..000000000 --- a/modules/local/deseq2_qc/tests/data/countFile.tsv +++ /dev/null @@ -1,18 +0,0 @@ -gene_id gene_name RAP1_IAA_30M_REP1 RAP1_UNINDUCED_REP1 RAP1_UNINDUCED_REP2 WT_REP1 WT_REP2 -Gfp_transgene_gene Gfp_transgene_gene 0 0 0 0 0 -HRA1 HRA1 3.01943228500291 9.80701185810843 9.53274413980081 5.72894534769954 5.9648842559222 -snR18 snR18 2.15518528497702 20.2706605484032 10.1398196728994 5.78313737408605 5.79976683844901 -YAL001C TFC3 56.5487189493641 70.7846010387686 113.108816589334 60.5178622417112 30.2958040068545 -YAL002W VPS8 36.3862437592078 32.3965311942571 80.536128672497 63.6031126291227 25.2702744059695 -YAL003W EFB1 598.396699649099 887.339579289614 1856.66699260635 1049.93553354283 665.403243069765 -YAL004W YAL004W 388.410667489585 383.296795393227 203.744142706403 202.691892385957 251.440658667147 -YAL005C SSA1 5647.27979655766 5715.94369645599 12575.108029018 7775.42737695585 3903.66710060582 -YAL007C ERP2 44.6930487868818 60.9301400694571 143.68466075721 56.9486461946981 41.7805866183878 -YAL008W FUN14 13.1986081960994 18.7996646072737 26.552459043029 9.4087625308538 2.82245410144267 -YAL009W SPO7 13.5217762310537 15.8719804576371 20.113413795 8.67724034815225 4.82436501953514 -YAL010C MDM10 10.9410758413598 12.0839661783069 36.2679562039924 29.7986383847897 9.94377960724503 -YAL011W SWC3 12.0055027348268 24.9403272396788 35.9299792122994 19.9834911886444 18.0057148106317 -YAL012W CYS3 242.877787996136 236.466395413312 547.58060621785 378.571834233094 226.984289418222 -YAL013W DEP1 7.90662508175251 18.3153373366285 35.6289306191157 20.7248252538103 10.8672258295774 -YAL014C SYN8 15.4361922388434 21.2042068878003 44.5485583043788 26.9652946879967 16.3840947562552 -YAL015C NTG1 12.841137836752 12.2213888342821 28.5292052419374 7.89073247427083 5.92421903162791 diff --git a/modules/local/deseq2_qc/tests/data/deseq2_clustering_header.txt b/modules/local/deseq2_qc/tests/data/deseq2_clustering_header.txt deleted file mode 100644 index 04e10efa5..000000000 --- a/modules/local/deseq2_qc/tests/data/deseq2_clustering_header.txt +++ /dev/null @@ -1,12 +0,0 @@ -#id: 'deseq2_clustering' -#section_name: 'DESeq2 sample similarity' -#description: "is generated from clustering by Euclidean distances between -# DESeq2 -# rlog values for each sample -# in the deseq2_qc.r script." -#plot_type: 'heatmap' -#anchor: 'deseq2_clustering' -#pconfig: -# title: 'DESeq2: Heatmap of the sample-to-sample distances' -# xlab: True -# reverseColors: True diff --git a/modules/local/deseq2_qc/tests/data/deseq2_pca_header.txt b/modules/local/deseq2_qc/tests/data/deseq2_pca_header.txt deleted file mode 100644 index 636f9374d..000000000 --- a/modules/local/deseq2_qc/tests/data/deseq2_pca_header.txt +++ /dev/null @@ -1,11 +0,0 @@ -#id: 'deseq2_pca' -#section_name: 'DESeq2 PCA plot' -#description: "PCA plot between samples in the experiment. -# These values are calculated using DESeq2 -# in the deseq2_qc.r script." -#plot_type: 'scatter' -#anchor: 'deseq2_pca' -#pconfig: -# title: 'DESeq2: Principal component plot' -# xlab: PC1 -# ylab: PC2 From 6e4e6f724c1690a3a8169872a2aa283c618d4033 Mon Sep 17 00:00:00 2001 From: Adam Talbot <12817534+adamrtalbot@users.noreply.github.com> Date: Mon, 11 Mar 2024 10:55:39 +0000 Subject: [PATCH 221/634] Fix test data syntax for deseq2_qc module --- modules/local/deseq2_qc/tests/main.nf.test | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/modules/local/deseq2_qc/tests/main.nf.test b/modules/local/deseq2_qc/tests/main.nf.test index 69058e907..54bd97d77 100644 --- a/modules/local/deseq2_qc/tests/main.nf.test +++ b/modules/local/deseq2_qc/tests/main.nf.test @@ -9,9 +9,9 @@ nextflow_process { when { process { """ - input[0] = file("${params.pipelines_testdata_base_path}/deseq2qc/countFile.tsv") - input[1] = file("${params.pipelines_testdata_base_path}/deseq2qc/deseq2_pca_header.txt") - input[2] = file("${params.pipelines_testdata_base_path}/deseq2qc/deseq2_clustering_header.txt") + input[0] = file(params.pipelines_testdata_base_path + "/deseq2qc/countFile.tsv", checkIfExists: true) + input[1] = file(params.pipelines_testdata_base_path + "/deseq2qc/deseq2_pca_header.txt", checkIfExists: true) + input[2] = file(params.pipelines_testdata_base_path + "/deseq2qc/deseq2_clustering_header.txt", checkIfExists: true) """ } } From cb6cfb653588734e190727e6c57e4c667576f8a3 Mon Sep 17 00:00:00 2001 From: maxulysse Date: Mon, 11 Mar 2024 12:01:52 +0100 Subject: [PATCH 222/634] use a local getGenomeAttribute function --- main.nf | 44 +++++++++++++++++++++++++++++++------------- nextflow.config | 2 +- 2 files changed, 32 insertions(+), 14 deletions(-) diff --git a/main.nf b/main.nf index e257f047c..305fc74b3 100755 --- a/main.nf +++ b/main.nf @@ -11,19 +11,6 @@ nextflow.enable.dsl = 2 -/* -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - IMPORT FUNCTIONS / MODULES / SUBWORKFLOWS / WORKFLOWS -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -*/ - -include { RNASEQ } from './workflows/rnaseq' -include { PREPARE_GENOME } from './subworkflows/local/prepare_genome' -include { PIPELINE_INITIALISATION } from './subworkflows/local/utils_nfcore_rnaseq_pipeline' -include { PIPELINE_COMPLETION } from './subworkflows/local/utils_nfcore_rnaseq_pipeline' -include { getGenomeAttribute } from './subworkflows/local/utils_nfcore_rnaseq_pipeline' -include { checkMaxContigSize } from './subworkflows/local/utils_nfcore_rnaseq_pipeline' - /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ GENOME PARAMETER VALUES @@ -44,6 +31,18 @@ params.rsem_index = getGenomeAttribute('rsem') params.salmon_index = getGenomeAttribute('salmon') params.kallisto_index = getGenomeAttribute('kallisto') +/* +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + IMPORT FUNCTIONS / MODULES / SUBWORKFLOWS / WORKFLOWS +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +*/ + +include { RNASEQ } from './workflows/rnaseq' +include { PREPARE_GENOME } from './subworkflows/local/prepare_genome' +include { PIPELINE_INITIALISATION } from './subworkflows/local/utils_nfcore_rnaseq_pipeline' +include { PIPELINE_COMPLETION } from './subworkflows/local/utils_nfcore_rnaseq_pipeline' +include { checkMaxContigSize } from './subworkflows/local/utils_nfcore_rnaseq_pipeline' + /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ NAMED WORKFLOWS FOR PIPELINE @@ -172,6 +171,25 @@ workflow { ) } +/* +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + LOCAL FUNCTIONS +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +*/ + +// +// Get attribute from genome config file e.g. fasta +// + +def getGenomeAttribute(attribute) { + if (params.genomes && params.genome && params.genomes.containsKey(params.genome)) { + if (params.genomes[ params.genome ].containsKey(attribute)) { + return params.genomes[ params.genome ][ attribute ] + } + } + return null +} + /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ THE END diff --git a/nextflow.config b/nextflow.config index e8c8f5473..74108e825 100644 --- a/nextflow.config +++ b/nextflow.config @@ -129,7 +129,7 @@ params { // Schema validation default options validationFailUnrecognisedParams = false validationLenientMode = false - validationSchemaIgnoreParams = 'genomes,igenomes_base,additional_fasta,bbsplit_index,fasta,gene_bed,gff,gtf,hisat2_index,kallisto_index,rsem_index,salmon_index,star_index,transcript_fasta' + validationSchemaIgnoreParams = 'genomes,igenomes_base' validationShowHiddenParams = false validate_params = true From 17e059b20551e39584dd6115249860eb6b7db59f Mon Sep 17 00:00:00 2001 From: Adam Talbot <12817534+adamrtalbot@users.noreply.github.com> Date: Mon, 11 Mar 2024 11:16:25 +0000 Subject: [PATCH 223/634] CHANGELOG --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4701d6876..babf4b6d8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -35,6 +35,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [PR #1241](https://github.com/nf-core/rnaseq/pull/1241) - Add nf-test tests to deseq2_qc - [PR #1242](https://github.com/nf-core/rnaseq/pull/1242) - Use dupradar from nf-core/modules - [PR #1244](https://github.com/nf-core/rnaseq/pull/1244) - Add gtf2bed tests +- [PR #1250](https://github.com/nf-core/rnaseq/pull/1244) - Remove all tags.yml files because the testing system has changed ### Parameters From 0ad06dc503007a87e2b7d4a4aa0d7b789fe3d21f Mon Sep 17 00:00:00 2001 From: Maxime U Garcia Date: Mon, 11 Mar 2024 12:24:54 +0100 Subject: [PATCH 224/634] Update modules/local/rsem_merge_counts/tests/main.nf.test Co-authored-by: Adam Talbot <12817534+adamrtalbot@users.noreply.github.com> --- modules/local/rsem_merge_counts/tests/main.nf.test | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/local/rsem_merge_counts/tests/main.nf.test b/modules/local/rsem_merge_counts/tests/main.nf.test index 6ceaf6d74..1019ec08a 100644 --- a/modules/local/rsem_merge_counts/tests/main.nf.test +++ b/modules/local/rsem_merge_counts/tests/main.nf.test @@ -3,7 +3,7 @@ nextflow_process { name "Test Process RSEM_MERGE_COUNTS" script "../main.nf" process "RSEM_MERGE_COUNTS" - tag "modules'" + tag "modules" tag "modules_local" tag "rsem_merge_counts" From 6e5c91d12c22bee24d8b53b6c39dad7ee0701885 Mon Sep 17 00:00:00 2001 From: maxulysse Date: Mon, 11 Mar 2024 12:22:20 +0100 Subject: [PATCH 225/634] data to github --- .../tests/data/genes/RAP1_IAA_30M_REP1.genes.results | 7 ------- .../tests/data/genes/RAP1_UNINDUCED_REP1.genes.results | 7 ------- .../tests/data/genes/RAP1_UNINDUCED_REP2.genes.results | 7 ------- .../tests/data/isoforms/RAP1_IAA_30M_REP1.isoforms.results | 7 ------- .../data/isoforms/RAP1_UNINDUCED_REP1.isoforms.results | 7 ------- .../data/isoforms/RAP1_UNINDUCED_REP2.isoforms.results | 7 ------- 6 files changed, 42 deletions(-) delete mode 100644 modules/local/rsem_merge_counts/tests/data/genes/RAP1_IAA_30M_REP1.genes.results delete mode 100644 modules/local/rsem_merge_counts/tests/data/genes/RAP1_UNINDUCED_REP1.genes.results delete mode 100644 modules/local/rsem_merge_counts/tests/data/genes/RAP1_UNINDUCED_REP2.genes.results delete mode 100644 modules/local/rsem_merge_counts/tests/data/isoforms/RAP1_IAA_30M_REP1.isoforms.results delete mode 100644 modules/local/rsem_merge_counts/tests/data/isoforms/RAP1_UNINDUCED_REP1.isoforms.results delete mode 100644 modules/local/rsem_merge_counts/tests/data/isoforms/RAP1_UNINDUCED_REP2.isoforms.results diff --git a/modules/local/rsem_merge_counts/tests/data/genes/RAP1_IAA_30M_REP1.genes.results b/modules/local/rsem_merge_counts/tests/data/genes/RAP1_IAA_30M_REP1.genes.results deleted file mode 100644 index 29232f4ef..000000000 --- a/modules/local/rsem_merge_counts/tests/data/genes/RAP1_IAA_30M_REP1.genes.results +++ /dev/null @@ -1,7 +0,0 @@ -gene_id transcript_id(s) length effective_length expected_count TPM FPKM -Gfp_transgene Gfp_transgene 729.00 562.01 0.00 0.00 0.00 -HRA1 HRA1 564.00 397.05 0.00 0.00 0.00 -YAL001C YAL001C 3483.00 3316.01 55.00 762.38 490.51 -YAL002W YAL002W 3825.00 3658.01 34.00 427.23 274.88 -YAL003W YAL003W 621.00 454.02 616.00 62363.08 40124.02 -YAL004W YAL004W 648.00 481.02 1.00 95.56 61.48 diff --git a/modules/local/rsem_merge_counts/tests/data/genes/RAP1_UNINDUCED_REP1.genes.results b/modules/local/rsem_merge_counts/tests/data/genes/RAP1_UNINDUCED_REP1.genes.results deleted file mode 100644 index 247455005..000000000 --- a/modules/local/rsem_merge_counts/tests/data/genes/RAP1_UNINDUCED_REP1.genes.results +++ /dev/null @@ -1,7 +0,0 @@ -gene_id transcript_id(s) length effective_length expected_count TPM FPKM -Gfp_transgene Gfp_transgene 729.00 630.96 0.00 0.00 0.00 -HRA1 HRA1 564.00 465.96 0.00 0.00 0.00 -YAL001C YAL001C 3483.00 3384.96 69.00 937.05 581.61 -YAL002W YAL002W 3825.00 3726.96 30.00 370.03 229.67 -YAL003W YAL003W 621.00 522.96 798.00 70145.06 43537.87 -YAL004W YAL004W 648.00 549.96 0.00 0.00 0.00 diff --git a/modules/local/rsem_merge_counts/tests/data/genes/RAP1_UNINDUCED_REP2.genes.results b/modules/local/rsem_merge_counts/tests/data/genes/RAP1_UNINDUCED_REP2.genes.results deleted file mode 100644 index 79ce88374..000000000 --- a/modules/local/rsem_merge_counts/tests/data/genes/RAP1_UNINDUCED_REP2.genes.results +++ /dev/null @@ -1,7 +0,0 @@ -gene_id transcript_id(s) length effective_length expected_count TPM FPKM -Gfp_transgene Gfp_transgene 729.00 630.86 0.00 0.00 0.00 -HRA1 HRA1 564.00 465.86 0.00 0.00 0.00 -YAL001C YAL001C 3483.00 3384.86 110.00 783.22 460.39 -YAL002W YAL002W 3825.00 3726.86 81.00 523.81 307.91 -YAL003W YAL003W 621.00 522.86 1673.00 77115.22 45329.76 -YAL004W YAL004W 648.00 549.86 0.00 0.00 0.00 diff --git a/modules/local/rsem_merge_counts/tests/data/isoforms/RAP1_IAA_30M_REP1.isoforms.results b/modules/local/rsem_merge_counts/tests/data/isoforms/RAP1_IAA_30M_REP1.isoforms.results deleted file mode 100644 index 80c4bb9c3..000000000 --- a/modules/local/rsem_merge_counts/tests/data/isoforms/RAP1_IAA_30M_REP1.isoforms.results +++ /dev/null @@ -1,7 +0,0 @@ -transcript_id gene_id length effective_length expected_count TPM FPKM IsoPct -Gfp_transgene Gfp_transgene 729 562.01 0.00 0.00 0.00 0.00 -HRA1 HRA1 564 397.05 0.00 0.00 0.00 0.00 -YAL001C YAL001C 3483 3316.01 55.00 762.38 490.51 100.00 -YAL002W YAL002W 3825 3658.01 34.00 427.23 274.88 100.00 -YAL003W YAL003W 621 454.02 616.00 62363.08 40124.02 100.00 -YAL004W YAL004W 648 481.02 1.00 95.56 61.48 100.00 diff --git a/modules/local/rsem_merge_counts/tests/data/isoforms/RAP1_UNINDUCED_REP1.isoforms.results b/modules/local/rsem_merge_counts/tests/data/isoforms/RAP1_UNINDUCED_REP1.isoforms.results deleted file mode 100644 index 24db5e716..000000000 --- a/modules/local/rsem_merge_counts/tests/data/isoforms/RAP1_UNINDUCED_REP1.isoforms.results +++ /dev/null @@ -1,7 +0,0 @@ -transcript_id gene_id length effective_length expected_count TPM FPKM IsoPct -Gfp_transgene Gfp_transgene 729 630.96 0.00 0.00 0.00 0.00 -HRA1 HRA1 564 465.96 0.00 0.00 0.00 0.00 -YAL001C YAL001C 3483 3384.96 69.00 937.05 581.61 100.00 -YAL002W YAL002W 3825 3726.96 30.00 370.03 229.67 100.00 -YAL003W YAL003W 621 522.96 798.00 70145.06 43537.87 100.00 -YAL004W YAL004W 648 549.96 0.00 0.00 0.00 0.00 diff --git a/modules/local/rsem_merge_counts/tests/data/isoforms/RAP1_UNINDUCED_REP2.isoforms.results b/modules/local/rsem_merge_counts/tests/data/isoforms/RAP1_UNINDUCED_REP2.isoforms.results deleted file mode 100644 index 19d5bde86..000000000 --- a/modules/local/rsem_merge_counts/tests/data/isoforms/RAP1_UNINDUCED_REP2.isoforms.results +++ /dev/null @@ -1,7 +0,0 @@ -transcript_id gene_id length effective_length expected_count TPM FPKM IsoPct -Gfp_transgene Gfp_transgene 729 630.86 0.00 0.00 0.00 0.00 -HRA1 HRA1 564 465.86 0.00 0.00 0.00 0.00 -YAL001C YAL001C 3483 3384.86 110.00 783.22 460.39 100.00 -YAL002W YAL002W 3825 3726.86 81.00 523.81 307.91 100.00 -YAL003W YAL003W 621 522.86 1673.00 77115.22 45329.76 100.00 -YAL004W YAL004W 648 549.86 0.00 0.00 0.00 0.00 From 089d9afe9f5c5a0ef25e370431575396d91b3dc5 Mon Sep 17 00:00:00 2001 From: maxulysse Date: Mon, 11 Mar 2024 12:27:46 +0100 Subject: [PATCH 226/634] fix path --- modules/local/rsem_merge_counts/tests/main.nf.test | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/local/rsem_merge_counts/tests/main.nf.test b/modules/local/rsem_merge_counts/tests/main.nf.test index 1019ec08a..5ae5aa68b 100644 --- a/modules/local/rsem_merge_counts/tests/main.nf.test +++ b/modules/local/rsem_merge_counts/tests/main.nf.test @@ -12,8 +12,8 @@ nextflow_process { when { process { """ - input[0] = file("${moduleTestDir}/data/genes/*") - input[1] = file("${moduleTestDir}/data/isoforms/*") + input[0] = file(params.pipelines_testdata_base_path + "rsem_merge_counts/genes/*", checkIfExists: true) + input[1] = file(params.pipelines_testdata_base_path + "rsem_merge_counts/isoforms/*", checkIfExists: true) """ } } From 5b626271f2dc9522f8842ef1637a88d0fdb33cf7 Mon Sep 17 00:00:00 2001 From: Adam Talbot <12817534+adamrtalbot@users.noreply.github.com> Date: Mon, 11 Mar 2024 11:43:28 +0000 Subject: [PATCH 227/634] Add new testing strategy based on nf-test files Changes: - Workflow now parses repo for changed files with Python - Runs relevant tests by listing their nf-test files as the matrix of values - Uses tags to check for dependencies only Related to: https://github.com/nf-core/phageannotator/pull/97 https://github.com/nf-core/fetchngs/pull/300 --- .github/python/find_changed_files.py | 223 +++++++++++++++++++++++---- .github/python/include.yaml | 10 ++ .github/workflows/ci.yml | 69 +++------ 3 files changed, 222 insertions(+), 80 deletions(-) create mode 100644 .github/python/include.yaml diff --git a/.github/python/find_changed_files.py b/.github/python/find_changed_files.py index 6dc734498..2e24ab742 100644 --- a/.github/python/find_changed_files.py +++ b/.github/python/find_changed_files.py @@ -1,15 +1,17 @@ #!/usr/bin/env python -## This script is used to generate scan *.nf.test files for function/process/workflow name and return as a JSON list -# It is functionally similar to nf-test list but fills a gap until feature https://github.com/askimed/nf-test/issues/196 is added +# This script is used to identify *.nf.test files for changed functions/processs/workflows/pipelines and *.nf-test files +# with changed dependencies, then return as a JSON list import argparse import json import logging import re +import yaml from itertools import chain from pathlib import Path +from git import Repo def parse_args() -> argparse.Namespace: @@ -23,11 +25,40 @@ def parse_args() -> argparse.Namespace: description="Scan *.nf.test files for function/process/workflow name and return as a JSON list" ) parser.add_argument( - "-p", - "--paths", + "-r", + "--head_ref", + required=True, + help="Head reference branch (Source branch for a PR).", + ) + parser.add_argument( + "-b", + "--base_ref", + required=True, + help="Base reference branch (Target branch for a PR).", + ) + parser.add_argument( + "-x", + "--ignored_files", nargs="+", - default=["."], - help="List of directories or files to scan", + default=[ + ".git/*", + ".gitpod.yml", + ".prettierignore", + ".prettierrc.yml", + "*.md", + "*.png", + "modules.json", + "pyproject.toml", + "tower.yml", + ], + help="List of files or file substrings to ignore.", + ) + parser.add_argument( + "-i", + "--include", + type=Path, + default=".github/python/include.yaml", + help="Path to an include file containing a YAML of key value pairs to include in changed files. I.e., return the current directory if an important file is changed.", ) parser.add_argument( "-l", @@ -47,26 +78,109 @@ def parse_args() -> argparse.Namespace: return parser.parse_args() -def find_files(paths: list[str]) -> list[Path]: +def read_yaml_inverted(file_path: str) -> dict: """ - Find all files matching pattern *.nf.test recursively from a list of paths. + Read a YAML file and return its contents as a dictionary but reversed, i.e. the values become the keys and the keys become the values. Args: - paths (list): List of directories or files to scan. + file_path (str): The path to the YAML file. Returns: - list: List of files matching the pattern *.nf.test. + dict: The contents of the YAML file as a dictionary inverted. """ - # this is a bit clunky - result = [] - for path in paths: - path_obj = Path(path) + with open(file_path, "r") as f: + data = yaml.safe_load(f) + + # Invert dictionary of lists into contents of lists are keys, values are the original keys + # { "key": ["item1", "item2] } --> { "item1": "key", "item2": "key" } + return {value: key for key, values in data.items() for value in values} + + +def find_changed_files( + branch1: str, + branch2: str, + ignore: list[str], +) -> list[Path]: + """ + Find all *.nf.tests that are associated with files that have been changed between two specified branches. + + Args: + branch1 (str) : The first branch being compared + branch2 (str) : The second branch being compared + ignore (list) : List of files or file substrings to ignore. + + Returns: + list: List of files matching the pattern *.nf.test that have changed between branch2 and branch1. + """ + # create repo + repo = Repo(".") + # identify commit on branch1 + branch1_commit = repo.commit(branch1) + # identify commit on branch2 + branch2_commit = repo.commit(branch2) + # compare two branches + diff_index = branch1_commit.diff(branch2_commit) + + # Start empty list of changed files + changed_files = [] + + # For every file that has changed between commits + for file in diff_index: + # Get pathlib.Path object + filepath = Path(file.a_path) + # If file does not match any in the ignore list, add containing directory to changed_files + if not any(filepath.match(ignored_path) for ignored_path in ignore): + changed_files.append(filepath) + + # Uniqueify the results before returning for efficiency + return list(set(changed_files)) + + +def detect_include_files( + changed_files: list[Path], include_files: dict[str, str] +) -> list[Path]: + """ + Detects the include files based on the changed files. + + Args: + changed_files (list[Path]): List of paths to the changed files. + include_files (dict[str, str]): Key-value pairs to return if a certain file has changed. If a file in a directory has changed, it points to a different directory. + + Returns: + list[Path]: List of paths to representing the keys of the include_files dictionary, where a value matched a path in changed_files. + """ + new_changed_files = [] + for filepath in changed_files: + # If file is in the include_files, we return the key instead of the value + for include_path, include_key in include_files.items(): + if filepath.match(include_path): + new_changed_files.append(Path(include_key)) + return new_changed_files + + +def detect_nf_test_files(changed_files: list[Path]) -> list[Path]: + """ + Detects and returns a list of nf-test files from the given list of changed files. + + Args: + changed_files (list[Path]): A list of file paths. + + Returns: + list[Path]: A list of nf-test file paths. + """ + result: list[Path] = [] + for path in changed_files: # If Path is the exact nf-test file add to list: - if path_obj.match("*.nf.test"): - result.append(path_obj) + if path.match("*.nf.test") and path.exists(): + result.append(path) # Else recursively search for nf-test files: else: - for file in path_obj.rglob("*.nf.test"): + # Get the enclosing dir so files in the same dir can be found. + # e.g. + # dir/ + # ├─ main.nf + # ├─ main.nf.test + for file in path.parent.rglob("*.nf.test"): result.append(file) return result @@ -102,7 +216,7 @@ def process_files(files: list[Path]) -> list[str]: return result -def generate( +def convert_nf_test_files_to_test_types( lines: list[str], types: list[str] = ["function", "process", "workflow", "pipeline"] ) -> dict[str, list[str]]: """ @@ -115,15 +229,12 @@ def generate( Returns: dict: Dictionary with function, process and workflow lists. """ - result: dict[str, list[str]] = { - "function": [], - "process": [], - "workflow": [], - "pipeline": [], - } + # Populate empty dict from types + result: dict[str, list[str]] = {key: [] for key in types} + for line in lines: words = line.split() - if len(words) == 2: + if len(words) == 2 and re.match(r'^".*"$', words[1]): keyword = words[0] name = words[1].strip("'\"") # Strip both single and double quotes if keyword in types: @@ -131,16 +242,60 @@ def generate( return result +def find_changed_dependencies(paths: list[Path], tags: list[str]) -> list[Path]: + """ + Find all *.nf.test files with changed dependencies from a list of paths. + + Args: + paths (list): List of directories or files to scan. + tags (list): List of tags identified as having changes. + + Returns: + list: List of *.nf.test files with changed dependencies. + """ + + result: list[Path] = [] + + nf_test_files = detect_nf_test_files(paths) + + # find nf-test files with changed dependencies + for nf_test_file in nf_test_files: + with open(nf_test_file, "r") as f: + lines = f.readlines() + # Get all tags from nf-test file + # Make case insensitive with .casefold() + tags_in_nf_test_file = [ + tag.casefold() + for tag in convert_nf_test_files_to_test_types(lines, types=["tag"])[ + "tag" + ] + ] + # Check if tag in nf-test file appears in a tag. + # Use .casefold() to be case insensitive + if any(tag.casefold() in tags_in_nf_test_file for tag in tags): + result.append(nf_test_file) + + return result + + if __name__ == "__main__": # Utility stuff args = parse_args() logging.basicConfig(level=args.log_level) - # Parse nf-test files for targets of tests - files = find_files(args.paths) - lines = process_files(files) - result = generate(lines) + # Parse nf-test files for target test tags + changed_files = find_changed_files(args.head_ref, args.base_ref, args.ignored_files) + + # If an additional include YAML is added, we detect additional changed dirs to include + if args.include: + include_files = read_yaml_inverted(args.include) + changed_files = changed_files + detect_include_files( + changed_files, include_files + ) + nf_test_files = detect_nf_test_files(changed_files) + lines = process_files(nf_test_files) + result = convert_nf_test_files_to_test_types(lines) # Get only relevant results (specified by -t) # Unique using a set @@ -148,5 +303,13 @@ def generate( {item for sublist in map(result.get, args.types) for item in sublist} ) + # Parse files to identify nf-tests with changed dependencies + changed_dep_files = find_changed_dependencies([Path(".")], target_results) + + # Combine target nf-test files and nf-test files with changed dependencies + all_nf_tests = [ + str(test_path) for test_path in set(changed_dep_files + nf_test_files) + ] + # Print to stdout - print(json.dumps(target_results)) + print(json.dumps(all_nf_tests)) diff --git a/.github/python/include.yaml b/.github/python/include.yaml new file mode 100644 index 000000000..c3b692462 --- /dev/null +++ b/.github/python/include.yaml @@ -0,0 +1,10 @@ +".": + - .github/workflows/** + - nf-test.config + - nextflow.config +tests: + - assets/* + - bin/* + - conf/* + - main.nf + - nextflow_schema.json diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 597487bac..8cf431787 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -119,8 +119,7 @@ jobs: name: Check for changes runs-on: ubuntu-latest outputs: - changes: ${{ steps.changed_files.outputs.any_modified }} - tags: ${{ steps.list.outputs.tags }} + nf_test_files: ${{ steps.list.outputs.nf_test_files }} steps: - uses: actions/setup-python@v4 with: @@ -130,76 +129,46 @@ jobs: with: fetch-depth: 0 - - uses: tj-actions/changed-files@v42 - id: changed_files - with: - dir_names: "true" - output_renamed_files_as_deleted_and_added: "true" - # Define list of additional rules for testing paths - # Mostly, we define additional 'pipeline' or 'all' tests here - files_yaml: | - ".": - - .github/workflows/** - - nf-test.config - - nextflow.config - tests: - - assets/* - - bin/* - - conf/* - - main.nf - - nextflow_schema.json - - files_ignore: | - .git* - .gitpod.yml - .prettierignore - .prettierrc.yml - **.md - **.png - modules.json - pyproject.toml - tower.yml - - - name: print-changed-dirs + - name: Install Python dependencies run: | - echo ${{ steps.changed_files.outputs.any_modified }} - echo ${{ steps.changed_files.outputs.all_changed_files }} - echo ${{ steps.changed_files.outputs.changed_keys }} + python -m pip install --upgrade pip + pip install gitpython pyyaml - - name: nf-test list tags + - name: list nf_test_files id: list - if: ${{ steps.changed_files.outputs.any_modified }} run: | - echo tags=$(python \ + echo nf_test_files=$(python \ .github/python/find_changed_files.py \ -t pipeline workflow process \ - -p ${{ steps.changed_files.outputs.all_changed_files }} ${{ steps.changed_files.outputs.changed_keys }} \ + --head_ref ${{ github.sha }} \ + --base_ref origin/${{ github.base_ref }} \ ) >> $GITHUB_OUTPUT - - name: print-test-tags + - name: debug run: | - echo ${{ steps.list.outputs.tags }} + echo ${{ steps.list.outputs.nf_test_files }} test: - name: ${{ matrix.tags }} ${{ matrix.profile }} NF-${{ matrix.NXF_VER }} + name: ${{ matrix.nf_test_files }} ${{ matrix.profile }} NF-${{ matrix.NXF_VER }} needs: [nf-test-changes] - if: needs.nf-test-changes.outputs.changes + if: needs.changes.outputs.nf_test_files != '[]' runs-on: ubuntu-latest strategy: fail-fast: false matrix: NXF_VER: - # - "latest-everything" - - "23.04.0" - tags: ["${{ fromJson(needs.nf-test-changes.outputs.tags) }}"] + - "latest-everything" + - "23.04" + nf_test_files: ["${{ fromJson(needs.changes.outputs.nf_test_files) }}"] profile: - "docker" + steps: - name: Check out pipeline code uses: actions/checkout@v4 - - name: Setup Nextflow - uses: nf-core/setup-nextflow@v1.5 + - name: Install Nextflow + uses: nf-core/setup-nextflow@v2 with: version: "${{ matrix.NXF_VER }}" @@ -230,7 +199,7 @@ jobs: - name: Run nf-test run: | - nf-test test --verbose --tag ${{ matrix.tags }} --profile "+${{ matrix.profile }}" --junitxml=test.xml --tap=test.tap + nf-test test --verbose ${{ matrix.nf_test_files }} --profile "+${{ matrix.profile }}" --junitxml=test.xml --tap=test.tap - uses: pcolby/tap-summary@v1 with: From 8086dc1a640694e68fa827e7d3efdf62a9ba7b51 Mon Sep 17 00:00:00 2001 From: Adam Talbot <12817534+adamrtalbot@users.noreply.github.com> Date: Mon, 11 Mar 2024 11:48:26 +0000 Subject: [PATCH 228/634] CHANGELOG --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4701d6876..ce3fe6464 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -35,6 +35,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [PR #1241](https://github.com/nf-core/rnaseq/pull/1241) - Add nf-test tests to deseq2_qc - [PR #1242](https://github.com/nf-core/rnaseq/pull/1242) - Use dupradar from nf-core/modules - [PR #1244](https://github.com/nf-core/rnaseq/pull/1244) - Add gtf2bed tests +- [PR #1253](https://github.com/nf-core/rnaseq/pull/1253) - Use nf-test files as matrix to test over in CI/CD for efficiency ### Parameters From 41b142aafeceb15172ee05ebc567a29e1c78a477 Mon Sep 17 00:00:00 2001 From: Adam Talbot <12817534+adamrtalbot@users.noreply.github.com> Date: Mon, 11 Mar 2024 12:16:49 +0000 Subject: [PATCH 229/634] Update modules/local/deseq2_qc/tests/main.nf.test Co-authored-by: Maxime U Garcia --- modules/local/deseq2_qc/tests/main.nf.test | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/modules/local/deseq2_qc/tests/main.nf.test b/modules/local/deseq2_qc/tests/main.nf.test index 54bd97d77..f9319edab 100644 --- a/modules/local/deseq2_qc/tests/main.nf.test +++ b/modules/local/deseq2_qc/tests/main.nf.test @@ -9,9 +9,9 @@ nextflow_process { when { process { """ - input[0] = file(params.pipelines_testdata_base_path + "/deseq2qc/countFile.tsv", checkIfExists: true) - input[1] = file(params.pipelines_testdata_base_path + "/deseq2qc/deseq2_pca_header.txt", checkIfExists: true) - input[2] = file(params.pipelines_testdata_base_path + "/deseq2qc/deseq2_clustering_header.txt", checkIfExists: true) + input[0] = file(params.pipelines_testdata_base_path + "deseq2qc/countFile.tsv", checkIfExists: true) + input[1] = file(params.pipelines_testdata_base_path + "deseq2qc/deseq2_pca_header.txt", checkIfExists: true) + input[2] = file(params.pipelines_testdata_base_path + "deseq2qc/deseq2_clustering_header.txt", checkIfExists: true) """ } } From bf18531ad25cb06813d10fb16c7929fc5a29b1fe Mon Sep 17 00:00:00 2001 From: maxulysse Date: Mon, 11 Mar 2024 13:46:59 +0100 Subject: [PATCH 230/634] one idea --- main.nf | 60 +++++++------------ .../utils_nfcore_rnaseq_pipeline/main.nf | 13 ++-- 2 files changed, 26 insertions(+), 47 deletions(-) diff --git a/main.nf b/main.nf index 305fc74b3..919cf2b85 100755 --- a/main.nf +++ b/main.nf @@ -11,26 +11,6 @@ nextflow.enable.dsl = 2 -/* -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - GENOME PARAMETER VALUES -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -*/ - -params.fasta = getGenomeAttribute('fasta') -params.transcript_fasta = getGenomeAttribute('transcript_fasta') -params.additional_fasta = getGenomeAttribute('additional_fasta') -params.gtf = getGenomeAttribute('gtf') -params.gff = getGenomeAttribute('gff') -params.gene_bed = getGenomeAttribute('bed12') -params.bbsplit_index = getGenomeAttribute('bbsplit') -params.sortmerna_index = getGenomeAttribute('sortmerna') -params.star_index = getGenomeAttribute('star') -params.hisat2_index = getGenomeAttribute('hisat2') -params.rsem_index = getGenomeAttribute('rsem') -params.salmon_index = getGenomeAttribute('salmon') -params.kallisto_index = getGenomeAttribute('kallisto') - /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ IMPORT FUNCTIONS / MODULES / SUBWORKFLOWS / WORKFLOWS @@ -42,6 +22,27 @@ include { PREPARE_GENOME } from './subworkflows/local/prepare_genome' include { PIPELINE_INITIALISATION } from './subworkflows/local/utils_nfcore_rnaseq_pipeline' include { PIPELINE_COMPLETION } from './subworkflows/local/utils_nfcore_rnaseq_pipeline' include { checkMaxContigSize } from './subworkflows/local/utils_nfcore_rnaseq_pipeline' +include { getGenomeAttribute } from './subworkflows/local/utils_nfcore_rnaseq_pipeline' + +/* +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + GENOME PARAMETER VALUES +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +*/ + +getGenomeAttribute('additional_fasta', 'additional_fasta') +getGenomeAttribute('bbsplit', 'bbsplit_index') +getGenomeAttribute('bed12', 'gene_bed') +getGenomeAttribute('fasta', 'fasta') +getGenomeAttribute('gff', 'gff') +getGenomeAttribute('gtf', 'gtf') +getGenomeAttribute('hisat2', 'hisat2') +getGenomeAttribute('kallisto', 'kallisto_index') +getGenomeAttribute('rsem', 'rsem') +getGenomeAttribute('salmon', 'salmon') +getGenomeAttribute('sortmerna', 'sortmerna_index') +getGenomeAttribute('star', 'star_index') +getGenomeAttribute('transcript_fasta', 'transcript_fasta') /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -171,25 +172,6 @@ workflow { ) } -/* -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LOCAL FUNCTIONS -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -*/ - -// -// Get attribute from genome config file e.g. fasta -// - -def getGenomeAttribute(attribute) { - if (params.genomes && params.genome && params.genomes.containsKey(params.genome)) { - if (params.genomes[ params.genome ].containsKey(attribute)) { - return params.genomes[ params.genome ][ attribute ] - } - } - return null -} - /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ THE END diff --git a/subworkflows/local/utils_nfcore_rnaseq_pipeline/main.nf b/subworkflows/local/utils_nfcore_rnaseq_pipeline/main.nf index 1264816a6..bfdbf6bc8 100644 --- a/subworkflows/local/utils_nfcore_rnaseq_pipeline/main.nf +++ b/subworkflows/local/utils_nfcore_rnaseq_pipeline/main.nf @@ -254,15 +254,12 @@ def validateInputParameters() { } // -// Get attribute from genome config file e.g. fasta +// Get key from genome config file e.g. fasta, and initialize a params with the given attribute // -def getGenomeAttribute(attribute) { - if (params.genomes && params.genome && params.genomes.containsKey(params.genome)) { - if (params.genomes[ params.genome ].containsKey(attribute)) { - return params.genomes[ params.genome ][ attribute ] - } - } - return null +def getGenomeAttribute(key, attribute) { + if ((params.genomes && params.genome && params.genomes.containsKey(params.genome) && params.genomes[ params.genome ].containsKey(key) )) { + params."$attribute" = params.genomes[ params.genome ][ key ] + } else params."$attribute" = null } // From 5417f12734600609fab5bb4186d1b0af38632570 Mon Sep 17 00:00:00 2001 From: Adam Talbot <12817534+adamrtalbot@users.noreply.github.com> Date: Mon, 11 Mar 2024 14:14:19 +0000 Subject: [PATCH 231/634] Replace check if no failure with success() --- .github/workflows/ci.yml | 2 +- CHANGELOG.md | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 597487bac..1e7f0d0ac 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -256,7 +256,7 @@ jobs: if: always() steps: - name: All tests ok - if: ${{ !contains(needs.*.result, 'failure') }} + if: ${{ success() }} run: exit 0 - name: One or more tests failed if: ${{ contains(needs.*.result, 'failure') }} diff --git a/CHANGELOG.md b/CHANGELOG.md index 4701d6876..7488bc1da 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -35,6 +35,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [PR #1241](https://github.com/nf-core/rnaseq/pull/1241) - Add nf-test tests to deseq2_qc - [PR #1242](https://github.com/nf-core/rnaseq/pull/1242) - Use dupradar from nf-core/modules - [PR #1244](https://github.com/nf-core/rnaseq/pull/1244) - Add gtf2bed tests +- []() - Change CI/CD testing logic to pass if no nf-tests have been ran ### Parameters From fec6d8cab4840d3aaf1def26261bb5853b306f65 Mon Sep 17 00:00:00 2001 From: Adam Talbot <12817534+adamrtalbot@users.noreply.github.com> Date: Mon, 11 Mar 2024 15:45:44 +0000 Subject: [PATCH 232/634] Update CHANGELOG.md --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7488bc1da..1b838f21b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -35,7 +35,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [PR #1241](https://github.com/nf-core/rnaseq/pull/1241) - Add nf-test tests to deseq2_qc - [PR #1242](https://github.com/nf-core/rnaseq/pull/1242) - Use dupradar from nf-core/modules - [PR #1244](https://github.com/nf-core/rnaseq/pull/1244) - Add gtf2bed tests -- []() - Change CI/CD testing logic to pass if no nf-tests have been ran +- [PR #1228](https://github.com/nf-core/rnaseq/pull/1228) - Change CI/CD testing logic to pass if no nf-tests have been ran ### Parameters From da29edba0ae32b6d9579e7caea4a432cad881466 Mon Sep 17 00:00:00 2001 From: Adam Talbot <12817534+adamrtalbot@users.noreply.github.com> Date: Tue, 12 Mar 2024 10:33:47 +0000 Subject: [PATCH 233/634] SALMON tests keepDuplicates Changes: - SALMON_INDEX will keep duplicates - summarizedexperiment will handle the missing transcripts - Version numbers checked in QUANTIFY_PSEUDO_ALIGNMENT subworkflow --- modules.json | 2 +- .../templates/summarizedexperiment.r | 10 +----- .../local/prepare_genome/nextflow.config | 3 +- .../tests/main.nf.test | 4 +-- .../tests/main.nf.test.snap | 34 +++++++++++++------ .../tests/nextflow.config | 9 +++++ .../tests/nextflow.config | 1 + 7 files changed, 38 insertions(+), 25 deletions(-) create mode 100644 subworkflows/local/quantify_pseudo_alignment/tests/nextflow.config diff --git a/modules.json b/modules.json index c0af83c83..15390c5fe 100644 --- a/modules.json +++ b/modules.json @@ -226,7 +226,7 @@ }, "summarizedexperiment/summarizedexperiment": { "branch": "master", - "git_sha": "92e403d44bee2574c7f4808e18c3b3efbe4fdb06", + "git_sha": "05a252a330273c67795aed2b18e86c53c4c9382a", "installed_by": ["modules"] }, "trimgalore": { diff --git a/modules/nf-core/summarizedexperiment/summarizedexperiment/templates/summarizedexperiment.r b/modules/nf-core/summarizedexperiment/summarizedexperiment/templates/summarizedexperiment.r index a7f150058..58cd8473b 100644 --- a/modules/nf-core/summarizedexperiment/summarizedexperiment/templates/summarizedexperiment.r +++ b/modules/nf-core/summarizedexperiment/summarizedexperiment/templates/summarizedexperiment.r @@ -130,7 +130,7 @@ parse_metadata <- function(metadata_path, ids, metadata_id_col = NULL){ rownames(metadata) <- metadata[[metadata_id_col]] - metadata + metadata[ids,, drop=FALSE] } ################################################ @@ -173,10 +173,6 @@ if ('$coldata' != ''){ metadata_id_col = args_opt\$coldata_id_col ) - assay_list <- lapply(assay_list, function(m){ - m[,rownames(coldata), drop = FALSE] - }) - colData(se) <- DataFrame(coldata) } @@ -189,10 +185,6 @@ if ('$rowdata' != ''){ metadata_id_col = args_opt\$rowdata_id_col ) - assay_list <- lapply(assay_list, function(m){ - m[rownames(rowdata), , drop = FALSE] - }) - rowData(se) <- DataFrame(rowdata) } diff --git a/subworkflows/local/prepare_genome/nextflow.config b/subworkflows/local/prepare_genome/nextflow.config index a1006a63e..cb78cb9e3 100644 --- a/subworkflows/local/prepare_genome/nextflow.config +++ b/subworkflows/local/prepare_genome/nextflow.config @@ -39,8 +39,7 @@ process { withName: 'SALMON_INDEX' { ext.args = { [ params.gencode ? '--gencode' : '', - params.pseudo_aligner_kmer_size ? "-k ${params.pseudo_aligner_kmer_size}": '', - '--keepDuplicates' + params.pseudo_aligner_kmer_size ? "-k ${params.pseudo_aligner_kmer_size}": '' ].join(' ').trim() } publishDir = [ path: { params.save_reference ? "${params.outdir}/genome/index" : params.outdir }, diff --git a/subworkflows/local/quantify_pseudo_alignment/tests/main.nf.test b/subworkflows/local/quantify_pseudo_alignment/tests/main.nf.test index 68916802d..9309200d7 100644 --- a/subworkflows/local/quantify_pseudo_alignment/tests/main.nf.test +++ b/subworkflows/local/quantify_pseudo_alignment/tests/main.nf.test @@ -68,7 +68,7 @@ nextflow_workflow { workflow.out.merged_counts_transcript, workflow.out.merged_tpm_transcript, workflow.out.merged_transcript_rds, - // NOT multiqc, results, versions + workflow.out.versions ).match() } ) @@ -137,7 +137,7 @@ nextflow_workflow { workflow.out.merged_counts_transcript, workflow.out.merged_tpm_transcript, workflow.out.merged_transcript_rds, - // NOT multiqc, results, versions + workflow.out.versions ).match() } ) diff --git a/subworkflows/local/quantify_pseudo_alignment/tests/main.nf.test.snap b/subworkflows/local/quantify_pseudo_alignment/tests/main.nf.test.snap index ce1ce36d6..3c82cb297 100644 --- a/subworkflows/local/quantify_pseudo_alignment/tests/main.nf.test.snap +++ b/subworkflows/local/quantify_pseudo_alignment/tests/main.nf.test.snap @@ -94,15 +94,21 @@ { "id": "all_samples" }, - "all_samples.SummarizedExperiment.rds:md5,8f9dd4aea52190447454089f735159a4" + "all_samples.SummarizedExperiment.rds:md5,a681c620612c2496ea8294af38c7443e" ] + ], + [ + "versions.yml:md5,b44caeec65491d47e098c7ddaf024b96", + "versions.yml:md5,dbf98ec672f75a683c28dcf4121364d2", + "versions.yml:md5,e9e7d18c3de83f1113fb1ff0c55d35ed", + "versions.yml:md5,ea39658f8685118d81d42acd451e66ea" ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "24.01.0" + "nextflow": "24.02.0" }, - "timestamp": "2024-03-08T18:27:59.64478" + "timestamp": "2024-03-12T10:33:14.836979" }, "salmon": { "content": [ @@ -127,7 +133,7 @@ { "id": "all_samples" }, - "all_samples.gene_lengths.tsv:md5,cddf0fb583ca26f943d0d26d605d1d34" + "all_samples.gene_lengths.tsv:md5,158e17a7bda7827b3d528f379e81d2bd" ] ], [ @@ -143,7 +149,7 @@ { "id": "all_samples" }, - "all_samples.transcript_tpm.tsv:md5,cced012fcee17801187eaf5c11f2d34a" + "all_samples.transcript_tpm.tsv:md5,e0c16bf083ebb88bcfaf27cfba12d3e9" ] ], [ @@ -151,7 +157,7 @@ { "id": "all_samples" }, - "all_samples.transcript_lengths.tsv:md5,e204181187d0b39735d0a92d1db2d2f7" + "all_samples.transcript_lengths.tsv:md5,f39a15fea56a5a8e5776dcdda0c8f102" ] ], [ @@ -183,7 +189,7 @@ { "id": "all_samples" }, - "all_samples.transcript_counts.tsv:md5,2c3b86b4ea29be46db526e7a68360d14" + "all_samples.transcript_counts.tsv:md5,f68224a34261b93f432ef4f97dfabe15" ] ], [ @@ -191,7 +197,7 @@ { "id": "all_samples" }, - "all_samples.transcript_tpm.tsv:md5,cced012fcee17801187eaf5c11f2d34a" + "all_samples.transcript_tpm.tsv:md5,e0c16bf083ebb88bcfaf27cfba12d3e9" ] ], [ @@ -199,14 +205,20 @@ { "id": "all_samples" }, - "all_samples.SummarizedExperiment.rds:md5,89eb7f54d7bb9690d1eab0c041d1aba1" + "all_samples.SummarizedExperiment.rds:md5,8d52eafb09e5c901ed384c7e5403a0bc" ] + ], + [ + "versions.yml:md5,4c3564e1ba17d8ce2b0ee784251ddd87", + "versions.yml:md5,b44caeec65491d47e098c7ddaf024b96", + "versions.yml:md5,dbf98ec672f75a683c28dcf4121364d2", + "versions.yml:md5,e9e7d18c3de83f1113fb1ff0c55d35ed" ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "24.01.0" + "nextflow": "24.02.0" }, - "timestamp": "2024-03-08T18:25:28.293298" + "timestamp": "2024-03-12T10:31:15.969548" } } \ No newline at end of file diff --git a/subworkflows/local/quantify_pseudo_alignment/tests/nextflow.config b/subworkflows/local/quantify_pseudo_alignment/tests/nextflow.config new file mode 100644 index 000000000..701741690 --- /dev/null +++ b/subworkflows/local/quantify_pseudo_alignment/tests/nextflow.config @@ -0,0 +1,9 @@ +process { + withName: 'SALMON_INDEX' { + ext.args = { [ + params.gencode ? '--gencode' : '', + params.pseudo_aligner_kmer_size ? "-k ${params.pseudo_aligner_kmer_size}": '', + '--keepDuplicates' + ].join(' ').trim() } + } +} diff --git a/subworkflows/nf-core/fastq_subsample_fq_salmon/tests/nextflow.config b/subworkflows/nf-core/fastq_subsample_fq_salmon/tests/nextflow.config index 7fc4d632b..d20ca1d26 100644 --- a/subworkflows/nf-core/fastq_subsample_fq_salmon/tests/nextflow.config +++ b/subworkflows/nf-core/fastq_subsample_fq_salmon/tests/nextflow.config @@ -2,6 +2,7 @@ process { publishDir = { "${params.outdir}/${task.process.tokenize(':')[-1].tokenize('_')[0].toLowerCase()}" } + withName: FQ_SUBSAMPLE { ext.args = '--record-count 1000000 --seed 1' } From 5ac549f422834c039e95bf96e43a392c59cf31e1 Mon Sep 17 00:00:00 2001 From: maxulysse Date: Tue, 12 Mar 2024 11:53:26 +0100 Subject: [PATCH 234/634] collect input files --- modules/local/rsem_merge_counts/tests/main.nf.test | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/modules/local/rsem_merge_counts/tests/main.nf.test b/modules/local/rsem_merge_counts/tests/main.nf.test index 5ae5aa68b..0962a79b5 100644 --- a/modules/local/rsem_merge_counts/tests/main.nf.test +++ b/modules/local/rsem_merge_counts/tests/main.nf.test @@ -12,8 +12,16 @@ nextflow_process { when { process { """ - input[0] = file(params.pipelines_testdata_base_path + "rsem_merge_counts/genes/*", checkIfExists: true) - input[1] = file(params.pipelines_testdata_base_path + "rsem_merge_counts/isoforms/*", checkIfExists: true) + input[0] = Channel.of([ + file(params.pipelines_testdata_base_path + "rsem_merge_counts/genes/RAP1_IAA_30M_REP1.genes.results", checkIfExists: true), + file(params.pipelines_testdata_base_path + "rsem_merge_counts/genes/RAP1_UNINDUCED_REP1.genes.results", checkIfExists: true), + file(params.pipelines_testdata_base_path + "rsem_merge_counts/genes/RAP1_UNINDUCED_REP2.genes.results", checkIfExists: true) + ]).collect() + input[1] =Channel.of([ + file(params.pipelines_testdata_base_path + "rsem_merge_counts/isoforms/RAP1_IAA_30M_REP1.isoforms.results", checkIfExists: true), + file(params.pipelines_testdata_base_path + "rsem_merge_counts/isoforms/RAP1_UNINDUCED_REP1.isoforms.results", checkIfExists: true), + file(params.pipelines_testdata_base_path + "rsem_merge_counts/isoforms/RAP1_UNINDUCED_REP2.isoforms.results", checkIfExists: true) + ]).collect() """ } } From 0f90900714a4c992c289a10153b3ece889d4f004 Mon Sep 17 00:00:00 2001 From: Maxime U Garcia Date: Tue, 12 Mar 2024 11:58:31 +0100 Subject: [PATCH 235/634] Update modules/local/rsem_merge_counts/tests/main.nf.test Co-authored-by: Adam Talbot <12817534+adamrtalbot@users.noreply.github.com> --- modules/local/rsem_merge_counts/tests/main.nf.test | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/local/rsem_merge_counts/tests/main.nf.test b/modules/local/rsem_merge_counts/tests/main.nf.test index 0962a79b5..e6a3ea91e 100644 --- a/modules/local/rsem_merge_counts/tests/main.nf.test +++ b/modules/local/rsem_merge_counts/tests/main.nf.test @@ -17,7 +17,7 @@ nextflow_process { file(params.pipelines_testdata_base_path + "rsem_merge_counts/genes/RAP1_UNINDUCED_REP1.genes.results", checkIfExists: true), file(params.pipelines_testdata_base_path + "rsem_merge_counts/genes/RAP1_UNINDUCED_REP2.genes.results", checkIfExists: true) ]).collect() - input[1] =Channel.of([ + input[1] = Channel.of([ file(params.pipelines_testdata_base_path + "rsem_merge_counts/isoforms/RAP1_IAA_30M_REP1.isoforms.results", checkIfExists: true), file(params.pipelines_testdata_base_path + "rsem_merge_counts/isoforms/RAP1_UNINDUCED_REP1.isoforms.results", checkIfExists: true), file(params.pipelines_testdata_base_path + "rsem_merge_counts/isoforms/RAP1_UNINDUCED_REP2.isoforms.results", checkIfExists: true) From be63894880ff1f7d8a120e009f06d01f0423a816 Mon Sep 17 00:00:00 2001 From: maxulysse Date: Tue, 12 Mar 2024 11:59:37 +0100 Subject: [PATCH 236/634] forgot to commit this file deletion --- modules/local/rsem_merge_counts/tests/tags.yml | 2 -- 1 file changed, 2 deletions(-) delete mode 100644 modules/local/rsem_merge_counts/tests/tags.yml diff --git a/modules/local/rsem_merge_counts/tests/tags.yml b/modules/local/rsem_merge_counts/tests/tags.yml deleted file mode 100644 index e1d8e23f0..000000000 --- a/modules/local/rsem_merge_counts/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -RSEM_MERGE_COUNTS: - - "modules/local/rsem_merge_counts/**" From 49d8fff0bc627beb9902a7b7c14dc96bc2710165 Mon Sep 17 00:00:00 2001 From: Maxime U Garcia Date: Tue, 12 Mar 2024 12:16:20 +0100 Subject: [PATCH 237/634] Update modules/local/rsem_merge_counts/tests/main.nf.test --- modules/local/rsem_merge_counts/tests/main.nf.test | 3 --- 1 file changed, 3 deletions(-) diff --git a/modules/local/rsem_merge_counts/tests/main.nf.test b/modules/local/rsem_merge_counts/tests/main.nf.test index e6a3ea91e..9bb1caeb2 100644 --- a/modules/local/rsem_merge_counts/tests/main.nf.test +++ b/modules/local/rsem_merge_counts/tests/main.nf.test @@ -3,9 +3,6 @@ nextflow_process { name "Test Process RSEM_MERGE_COUNTS" script "../main.nf" process "RSEM_MERGE_COUNTS" - tag "modules" - tag "modules_local" - tag "rsem_merge_counts" test("Should run without failures") { From e4b19923f95a9bf1e1b2432351212045db38f2c3 Mon Sep 17 00:00:00 2001 From: Harshil Patel Date: Tue, 12 Mar 2024 14:58:25 +0000 Subject: [PATCH 238/634] Update CHANGELOG --- CHANGELOG.md | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8c2fa9b77..811235113 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,9 +7,24 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Credits +Special thanks to the following for their contributions to the release: + +- [Adam Talbot](https://github.com/adamrtalbot) +- [Edmund Miller](https://github.com/edmundmiller) +- [Jonathan Manning](https://github.com/pinin4fjords) +- [Laramie Lindsey](https://github.com/laramiellindsey) +- [Matthias Zepper](https://github.com/MatthiasZepper) +- [Maxime Garcia](https://github.com/maxulysse) +- [Rob Syme](https://github.com/robsyme) +- [Thomas Danhorn](https://github.com/tdanhorn) + +Thank you to everyone else that has contributed by reporting bugs, enhancements or in any other way, shape or form. + ### Enhancements & fixes - [PR #1186](https://github.com/nf-core/rnaseq/pull/1186) - Properly update qualimap/rnaseq module (ie not patch) +- [PR #1197](https://github.com/nf-core/rnaseq/pull/1197) - Delete lib directory and replace with utils\_\* subworkflows +- [PR #1199](https://github.com/nf-core/rnaseq/pull/1199) - Replace modules.config with more modular config files per module/subworkflow/workflow - [PR #1201](https://github.com/nf-core/rnaseq/pull/1201) - Template update for nf-core/tools v2.12 - [PR #1206](https://github.com/nf-core/rnaseq/pull/1206) - Remove `lib/` directory and `modules.config` - [PR #1210](https://github.com/nf-core/rnaseq/pull/1210) - Use pseudoalignment subworkflow components from nf-core/modules @@ -17,6 +32,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [PR #1213](https://github.com/nf-core/rnaseq/pull/1213) - Pass transcriptome fasta through to samtools stats - [PR #1214](https://github.com/nf-core/rnaseq/pull/1214) - Bump umitools + delocalise prepareforrsem ([#831](https://github.com/nf-core/rnaseq/issues/831)) - [PR #1216](https://github.com/nf-core/rnaseq/pull/1216) - Delocalise catadditionalfasta ([#1162](https://github.com/nf-core/rnaseq/issues/1162)) +- [PR #1217](https://github.com/nf-core/rnaseq/pull/1217) - Update Emiller88 => edmundmiller in README - [PR #1218](https://github.com/nf-core/rnaseq/pull/1218) - Template update for nf-core/tools v2.13 - [PR #1220](https://github.com/nf-core/rnaseq/pull/1220) - Initialise nf-test and add pipeline level test - [PR #1221](https://github.com/nf-core/rnaseq/pull/1221) - Use nf-test test for all nf-core components @@ -35,8 +51,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [PR #1240](https://github.com/nf-core/rnaseq/pull/1240) - Fix reference files params usage - [PR #1241](https://github.com/nf-core/rnaseq/pull/1241) - Add nf-test tests to deseq2_qc - [PR #1242](https://github.com/nf-core/rnaseq/pull/1242) - Use dupradar from nf-core/modules +- [PR #1243](https://github.com/nf-core/rnaseq/pull/1243) - Add nf-test for module MULTIQC_CUSTOM_BIOTYPE - [PR #1244](https://github.com/nf-core/rnaseq/pull/1244) - Add gtf2bed tests +- [PR #1245](https://github.com/nf-core/rnaseq/pull/1245) - nf test quantify rsem +- [PR #1246](https://github.com/nf-core/rnaseq/pull/1246) - nf-test quantify pseudoalignment +- [PR #1247](https://github.com/nf-core/rnaseq/pull/1247) - nf-test prepare_genome +- [PR #1249](https://github.com/nf-core/rnaseq/pull/1249) - Include nf-tests for rsem_merge_counts module - [PR #1250](https://github.com/nf-core/rnaseq/pull/1250) - Remove all tags.yml files because the testing system has changed +- [PR #1251](https://github.com/nf-core/rnaseq/pull/1251) - Replace deseq2qc paths ### Parameters @@ -48,10 +70,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 | Dependency | Old version | New version | | ----------- | ----------- | ----------- | +| `bedtools` | 2.30.0 | 2.31.1 | | `multiqc` | 1.20 | 1.21 | | `picard` | 3.0.0 | 3.1.1 | -| `samtools` | 1.17 | 1.18 | +| `samtools` | 1.17 | 1.19.2 | | `sortmerna` | 4.3.4 | 4.3.6 | +| `umi_tools` | 1.14 | 1.15 | > **NB:** Dependency has been **updated** if both old and new version information is present. > From 0feb8674458cbce1c00d68b76c769ff166b9d992 Mon Sep 17 00:00:00 2001 From: Adam Talbot <12817534+adamrtalbot@users.noreply.github.com> Date: Tue, 12 Mar 2024 16:28:45 +0000 Subject: [PATCH 239/634] Add more tests for PREPARE_GENOME Changes: - Adds a range of tests for lots of the PREPARE_GENOME parameters Closes #1256 --- subworkflows/local/prepare_genome/main.nf | 2 +- .../local/prepare_genome/tests/main.nf.test | 1330 ++++++++++++++- .../prepare_genome/tests/main.nf.test.snap | 1444 ++++++++++++++++- 3 files changed, 2699 insertions(+), 77 deletions(-) diff --git a/subworkflows/local/prepare_genome/main.nf b/subworkflows/local/prepare_genome/main.nf index ba2ee14dc..06748b350 100644 --- a/subworkflows/local/prepare_genome/main.nf +++ b/subworkflows/local/prepare_genome/main.nf @@ -51,7 +51,7 @@ workflow PREPARE_GENOME { salmon_index // directory: /path/to/salmon/index/ kallisto_index // directory: /path/to/kallisto/index/ hisat2_index // directory: /path/to/hisat2/index/ - bbsplit_index // directory: /path/to/rsem/index/ + bbsplit_index // directory: /path/to/bbsplit/index/ sortmerna_index // directory: /path/to/sortmerna/index/ gencode // boolean: whether the genome is from GENCODE featurecounts_group_type // string: The attribute type used to group feature types in the GTF file when generating the biotype plot with featureCounts diff --git a/subworkflows/local/prepare_genome/tests/main.nf.test b/subworkflows/local/prepare_genome/tests/main.nf.test index 129b66127..780fd1796 100644 --- a/subworkflows/local/prepare_genome/tests/main.nf.test +++ b/subworkflows/local/prepare_genome/tests/main.nf.test @@ -26,7 +26,7 @@ nextflow_workflow { tag "STAR_GENOMEGENERATE_IGENOMES" tag "UNTAR" - test("star - with igenomes") { + test("default options") { when { workflow { @@ -34,11 +34,1302 @@ nextflow_workflow { gencode = false featurecounts_group_type = 'gene_biotype' aligner = 'star_salmon,star_rsem,hisat2' - pseudo_aligner = 'salmon' - skip_gtf_filter = true + pseudo_aligner = 'salmon,kallisto' + skip_gtf_filter = false + skip_bbsplit = false + skip_sortmerna = true + skip_alignment = false + skip_pseudo_alignment = false + + input[0] = file(params.pipelines_testdata_base_path + 'reference/genome.fasta', checkIfExists: true) + input[1] = file(params.pipelines_testdata_base_path + 'reference/genes_with_empty_tid.gtf', checkIfExists: true) + input[2] = file(params.pipelines_testdata_base_path + 'reference/genes.gff', checkIfExists: true) + input[3] = file(params.pipelines_testdata_base_path + 'reference/gfp.fa', checkIfExists: true) + input[4] = file(params.pipelines_testdata_base_path + 'reference/transcriptome.fasta', checkIfExists: true) + input[5] = null + input[6] = null + input[7] = file(params.pipelines_testdata_base_path + 'reference/bbsplit_fasta_list.txt', checkIfExists: true) + input[8] = null + input[9] = null + input[10] = file(params.pipelines_testdata_base_path + 'reference/rsem.tar.gz', checkIfExists: true) + input[11] = file(params.pipelines_testdata_base_path + 'reference/salmon.tar.gz', checkIfExists: true) + input[12] = null + input[13] = file(params.pipelines_testdata_base_path + 'reference/hisat2.tar.gz', checkIfExists: true) + input[14] = null + input[15] = null + input[16] = gencode + input[17] = featurecounts_group_type + input[18] = aligner + input[19] = pseudo_aligner + input[20] = skip_gtf_filter + input[21] = skip_bbsplit + input[22] = skip_sortmerna + input[23] = skip_alignment + input[24] = skip_pseudo_alignment + """ + } + } + + then { + assertAll( + { assert workflow.success}, + { assert snapshot( + workflow.out.transcript_fasta, + workflow.out.salmon_index, + workflow.out.fasta, + workflow.out.gtf, + workflow.out.fai, + workflow.out.gene_bed, + workflow.out.chrom_sizes, + workflow.out.splicesites, + workflow.out.bbsplit_index, + workflow.out.sortmerna_index, + workflow.out.star_index, + workflow.out.rsem_index, + workflow.out.hisat2_index, + workflow.out.kallisto_index, + workflow.out.versions + ).match() } + ) + } + } + + test("gencode = false") { + + when { + workflow { + """ + gencode = false + featurecounts_group_type = 'gene_biotype' + aligner = 'star_salmon,star_rsem,hisat2' + pseudo_aligner = 'salmon,kallisto' + skip_gtf_filter = false + skip_bbsplit = false + skip_sortmerna = true + skip_alignment = false + skip_pseudo_alignment = false + + input[0] = file(params.pipelines_testdata_base_path + 'reference/genome.fasta', checkIfExists: true) + input[1] = file(params.pipelines_testdata_base_path + 'reference/genes_with_empty_tid.gtf', checkIfExists: true) + input[2] = file(params.pipelines_testdata_base_path + 'reference/genes.gff', checkIfExists: true) + input[3] = file(params.pipelines_testdata_base_path + 'reference/gfp.fa', checkIfExists: true) + input[4] = file(params.pipelines_testdata_base_path + 'reference/transcriptome.fasta', checkIfExists: true) + input[5] = null + input[6] = null + input[7] = file(params.pipelines_testdata_base_path + 'reference/bbsplit_fasta_list.txt', checkIfExists: true) + input[8] = null + input[9] = null + input[10] = file(params.pipelines_testdata_base_path + 'reference/rsem.tar.gz', checkIfExists: true) + input[11] = file(params.pipelines_testdata_base_path + 'reference/salmon.tar.gz', checkIfExists: true) + input[12] = null + input[13] = file(params.pipelines_testdata_base_path + 'reference/hisat2.tar.gz', checkIfExists: true) + input[14] = null + input[15] = null + input[16] = gencode + input[17] = featurecounts_group_type + input[18] = aligner + input[19] = pseudo_aligner + input[20] = skip_gtf_filter + input[21] = skip_bbsplit + input[22] = skip_sortmerna + input[23] = skip_alignment + input[24] = skip_pseudo_alignment + """ + } + } + + then { + assertAll( + { assert workflow.success}, + { assert snapshot( + workflow.out.transcript_fasta, + workflow.out.salmon_index, + workflow.out.fasta, + workflow.out.gtf, + workflow.out.fai, + workflow.out.gene_bed, + workflow.out.chrom_sizes, + workflow.out.splicesites, + workflow.out.bbsplit_index, + workflow.out.sortmerna_index, + workflow.out.star_index, + workflow.out.rsem_index, + workflow.out.hisat2_index, + workflow.out.kallisto_index, + workflow.out.versions + ).match() } + ) + } + } + + test("skip_gtf_filter") { + + when { + workflow { + """ + gencode = false + featurecounts_group_type = 'gene_biotype' + aligner = 'star_salmon,star_rsem,hisat2' + pseudo_aligner = 'salmon,kallisto' + skip_gtf_filter = true + skip_bbsplit = false + skip_sortmerna = true + skip_alignment = false + skip_pseudo_alignment = false + + input[0] = file(params.pipelines_testdata_base_path + 'reference/genome.fasta', checkIfExists: true) + input[1] = file(params.pipelines_testdata_base_path + 'reference/genes_with_empty_tid.gtf', checkIfExists: true) + input[2] = file(params.pipelines_testdata_base_path + 'reference/genes.gff', checkIfExists: true) + input[3] = file(params.pipelines_testdata_base_path + 'reference/gfp.fa', checkIfExists: true) + input[4] = file(params.pipelines_testdata_base_path + 'reference/transcriptome.fasta', checkIfExists: true) + input[5] = null + input[6] = null + input[7] = file(params.pipelines_testdata_base_path + 'reference/bbsplit_fasta_list.txt', checkIfExists: true) + input[8] = null + input[9] = null + input[10] = file(params.pipelines_testdata_base_path + 'reference/rsem.tar.gz', checkIfExists: true) + input[11] = file(params.pipelines_testdata_base_path + 'reference/salmon.tar.gz', checkIfExists: true) + input[12] = null + input[13] = file(params.pipelines_testdata_base_path + 'reference/hisat2.tar.gz', checkIfExists: true) + input[14] = null + input[15] = null + input[16] = gencode + input[17] = featurecounts_group_type + input[18] = aligner + input[19] = pseudo_aligner + input[20] = skip_gtf_filter + input[21] = skip_bbsplit + input[22] = skip_sortmerna + input[23] = skip_alignment + input[24] = skip_pseudo_alignment + """ + } + } + + then { + assertAll( + { assert workflow.success}, + { assert snapshot( + workflow.out.transcript_fasta, + workflow.out.salmon_index, + workflow.out.fasta, + workflow.out.gtf, + workflow.out.fai, + workflow.out.gene_bed, + workflow.out.chrom_sizes, + workflow.out.splicesites, + workflow.out.bbsplit_index, + workflow.out.sortmerna_index, + workflow.out.star_index, + workflow.out.rsem_index, + workflow.out.hisat2_index, + workflow.out.kallisto_index, + workflow.out.versions + ).match() } + ) + } + } + + test("skip_bbsplit") { + + when { + workflow { + """ + gencode = false + featurecounts_group_type = 'gene_biotype' + aligner = 'star_salmon,star_rsem,hisat2' + pseudo_aligner = 'salmon,kallisto' + skip_gtf_filter = false + skip_bbsplit = true + skip_sortmerna = true + skip_alignment = false + skip_pseudo_alignment = false + + input[0] = file(params.pipelines_testdata_base_path + 'reference/genome.fasta', checkIfExists: true) + input[1] = file(params.pipelines_testdata_base_path + 'reference/genes_with_empty_tid.gtf', checkIfExists: true) + input[2] = file(params.pipelines_testdata_base_path + 'reference/genes.gff', checkIfExists: true) + input[3] = file(params.pipelines_testdata_base_path + 'reference/gfp.fa', checkIfExists: true) + input[4] = file(params.pipelines_testdata_base_path + 'reference/transcriptome.fasta', checkIfExists: true) + input[5] = null + input[6] = null + input[7] = file(params.pipelines_testdata_base_path + 'reference/bbsplit_fasta_list.txt', checkIfExists: true) + input[8] = null + input[9] = null + input[10] = file(params.pipelines_testdata_base_path + 'reference/rsem.tar.gz', checkIfExists: true) + input[11] = file(params.pipelines_testdata_base_path + 'reference/salmon.tar.gz', checkIfExists: true) + input[12] = null + input[13] = file(params.pipelines_testdata_base_path + 'reference/hisat2.tar.gz', checkIfExists: true) + input[14] = null + input[15] = null + input[16] = gencode + input[17] = featurecounts_group_type + input[18] = aligner + input[19] = pseudo_aligner + input[20] = skip_gtf_filter + input[21] = skip_bbsplit + input[22] = skip_sortmerna + input[23] = skip_alignment + input[24] = skip_pseudo_alignment + """ + } + } + + then { + assertAll( + { assert workflow.success}, + { assert snapshot( + workflow.out.transcript_fasta, + workflow.out.salmon_index, + workflow.out.fasta, + workflow.out.gtf, + workflow.out.fai, + workflow.out.gene_bed, + workflow.out.chrom_sizes, + workflow.out.splicesites, + workflow.out.bbsplit_index, + workflow.out.sortmerna_index, + workflow.out.star_index, + workflow.out.rsem_index, + workflow.out.hisat2_index, + workflow.out.kallisto_index, + workflow.out.versions + ).match() } + ) + } + } + + test("skip_alignment") { + + when { + workflow { + """ + gencode = false + featurecounts_group_type = 'gene_biotype' + aligner = 'star_salmon,star_rsem,hisat2' + pseudo_aligner = 'salmon,kallisto' + skip_gtf_filter = false + skip_bbsplit = false + skip_sortmerna = true + skip_alignment = true + skip_pseudo_alignment = false + + input[0] = file(params.pipelines_testdata_base_path + 'reference/genome.fasta', checkIfExists: true) + input[1] = file(params.pipelines_testdata_base_path + 'reference/genes_with_empty_tid.gtf', checkIfExists: true) + input[2] = file(params.pipelines_testdata_base_path + 'reference/genes.gff', checkIfExists: true) + input[3] = file(params.pipelines_testdata_base_path + 'reference/gfp.fa', checkIfExists: true) + input[4] = file(params.pipelines_testdata_base_path + 'reference/transcriptome.fasta', checkIfExists: true) + input[5] = null + input[6] = null + input[7] = file(params.pipelines_testdata_base_path + 'reference/bbsplit_fasta_list.txt', checkIfExists: true) + input[8] = null + input[9] = null + input[10] = file(params.pipelines_testdata_base_path + 'reference/rsem.tar.gz', checkIfExists: true) + input[11] = file(params.pipelines_testdata_base_path + 'reference/salmon.tar.gz', checkIfExists: true) + input[12] = null + input[13] = file(params.pipelines_testdata_base_path + 'reference/hisat2.tar.gz', checkIfExists: true) + input[14] = null + input[15] = null + input[16] = gencode + input[17] = featurecounts_group_type + input[18] = aligner + input[19] = pseudo_aligner + input[20] = skip_gtf_filter + input[21] = skip_bbsplit + input[22] = skip_sortmerna + input[23] = skip_alignment + input[24] = skip_pseudo_alignment + """ + } + } + + then { + assertAll( + { assert workflow.success}, + { assert snapshot( + workflow.out.transcript_fasta, + workflow.out.salmon_index, + workflow.out.fasta, + workflow.out.gtf, + workflow.out.fai, + workflow.out.gene_bed, + workflow.out.chrom_sizes, + workflow.out.splicesites, + workflow.out.bbsplit_index, + workflow.out.sortmerna_index, + workflow.out.star_index, + workflow.out.rsem_index, + workflow.out.hisat2_index, + workflow.out.kallisto_index, + workflow.out.versions + ).match() } + ) + } + } + + test("skip_psuedo_alignment") { + + when { + workflow { + """ + gencode = false + featurecounts_group_type = 'gene_biotype' + aligner = 'star_salmon,star_rsem,hisat2' + pseudo_aligner = 'salmon,kallisto' + skip_gtf_filter = false + skip_bbsplit = false + skip_sortmerna = true + skip_alignment = false + skip_pseudo_alignment = true + + input[0] = file(params.pipelines_testdata_base_path + 'reference/genome.fasta', checkIfExists: true) + input[1] = file(params.pipelines_testdata_base_path + 'reference/genes_with_empty_tid.gtf', checkIfExists: true) + input[2] = file(params.pipelines_testdata_base_path + 'reference/genes.gff', checkIfExists: true) + input[3] = file(params.pipelines_testdata_base_path + 'reference/gfp.fa', checkIfExists: true) + input[4] = file(params.pipelines_testdata_base_path + 'reference/transcriptome.fasta', checkIfExists: true) + input[5] = null + input[6] = null + input[7] = file(params.pipelines_testdata_base_path + 'reference/bbsplit_fasta_list.txt', checkIfExists: true) + input[8] = null + input[9] = null + input[10] = file(params.pipelines_testdata_base_path + 'reference/rsem.tar.gz', checkIfExists: true) + input[11] = file(params.pipelines_testdata_base_path + 'reference/salmon.tar.gz', checkIfExists: true) + input[12] = null + input[13] = file(params.pipelines_testdata_base_path + 'reference/hisat2.tar.gz', checkIfExists: true) + input[14] = null + input[15] = null + input[16] = gencode + input[17] = featurecounts_group_type + input[18] = aligner + input[19] = pseudo_aligner + input[20] = skip_gtf_filter + input[21] = skip_bbsplit + input[22] = skip_sortmerna + input[23] = skip_alignment + input[24] = skip_pseudo_alignment + """ + } + } + + then { + assertAll( + { assert workflow.success}, + { assert snapshot( + workflow.out.transcript_fasta, + workflow.out.salmon_index, + workflow.out.fasta, + workflow.out.gtf, + workflow.out.fai, + workflow.out.gene_bed, + workflow.out.chrom_sizes, + workflow.out.splicesites, + workflow.out.bbsplit_index, + workflow.out.sortmerna_index, + workflow.out.star_index, + workflow.out.rsem_index, + workflow.out.hisat2_index, + workflow.out.kallisto_index, + workflow.out.versions + ).match() } + ) + } + } + + test("gtf = false") { + + when { + workflow { + """ + gencode = true + featurecounts_group_type = 'gene_biotype' + aligner = 'star_salmon,star_rsem,hisat2' + pseudo_aligner = 'salmon,kallisto' + skip_gtf_filter = false + skip_bbsplit = false + skip_sortmerna = true + skip_alignment = false + skip_pseudo_alignment = false + + input[0] = file(params.pipelines_testdata_base_path + 'reference/genome.fasta', checkIfExists: true) + input[1] = false + input[2] = file(params.pipelines_testdata_base_path + 'reference/genes.gff', checkIfExists: true) + input[3] = file(params.pipelines_testdata_base_path + 'reference/gfp.fa', checkIfExists: true) + input[4] = file(params.pipelines_testdata_base_path + 'reference/transcriptome.fasta', checkIfExists: true) + input[5] = null + input[6] = null + input[7] = file(params.pipelines_testdata_base_path + 'reference/bbsplit_fasta_list.txt', checkIfExists: true) + input[8] = null + input[9] = null + input[10] = file(params.pipelines_testdata_base_path + 'reference/rsem.tar.gz', checkIfExists: true) + input[11] = file(params.pipelines_testdata_base_path + 'reference/salmon.tar.gz', checkIfExists: true) + input[12] = null + input[13] = file(params.pipelines_testdata_base_path + 'reference/hisat2.tar.gz', checkIfExists: true) + input[14] = null + input[15] = null + input[16] = gencode + input[17] = featurecounts_group_type + input[18] = aligner + input[19] = pseudo_aligner + input[20] = skip_gtf_filter + input[21] = skip_bbsplit + input[22] = skip_sortmerna + input[23] = skip_alignment + input[24] = skip_pseudo_alignment + """ + } + } + + then { + assertAll( + { assert workflow.success}, + { assert snapshot( + workflow.out.transcript_fasta, + workflow.out.salmon_index, + workflow.out.fasta, + workflow.out.gtf, + workflow.out.fai, + workflow.out.gene_bed, + workflow.out.chrom_sizes, + workflow.out.splicesites, + workflow.out.bbsplit_index, + workflow.out.sortmerna_index, + workflow.out.star_index, + workflow.out.rsem_index, + workflow.out.hisat2_index, + workflow.out.kallisto_index, + workflow.out.versions + ).match() } + ) + } + } + + test("gff = false") { + + when { + workflow { + """ + gencode = false + featurecounts_group_type = 'gene_biotype' + aligner = 'star_salmon,star_rsem,hisat2' + pseudo_aligner = 'salmon,kallisto' + skip_gtf_filter = false + skip_bbsplit = false + skip_sortmerna = true + skip_alignment = false + skip_pseudo_alignment = false + + input[0] = file(params.pipelines_testdata_base_path + 'reference/genome.fasta', checkIfExists: true) + input[1] = file(params.pipelines_testdata_base_path + 'reference/genes_with_empty_tid.gtf', checkIfExists: true) + input[2] = false + input[3] = file(params.pipelines_testdata_base_path + 'reference/gfp.fa', checkIfExists: true) + input[4] = file(params.pipelines_testdata_base_path + 'reference/transcriptome.fasta', checkIfExists: true) + input[5] = null + input[6] = null + input[7] = file(params.pipelines_testdata_base_path + 'reference/bbsplit_fasta_list.txt', checkIfExists: true) + input[8] = null + input[9] = null + input[10] = file(params.pipelines_testdata_base_path + 'reference/rsem.tar.gz', checkIfExists: true) + input[11] = file(params.pipelines_testdata_base_path + 'reference/salmon.tar.gz', checkIfExists: true) + input[12] = null + input[13] = file(params.pipelines_testdata_base_path + 'reference/hisat2.tar.gz', checkIfExists: true) + input[14] = null + input[15] = null + input[16] = gencode + input[17] = featurecounts_group_type + input[18] = aligner + input[19] = pseudo_aligner + input[20] = skip_gtf_filter + input[21] = skip_bbsplit + input[22] = skip_sortmerna + input[23] = skip_alignment + input[24] = skip_pseudo_alignment + """ + } + } + + then { + assertAll( + { assert workflow.success}, + { assert snapshot( + workflow.out.transcript_fasta[0][1], + workflow.out.salmon_index[0][1], + workflow.out.fasta, + workflow.out.gtf, + workflow.out.fai, + workflow.out.gene_bed, + workflow.out.chrom_sizes, + workflow.out.splicesites, + workflow.out.bbsplit_index, + workflow.out.sortmerna_index, + workflow.out.star_index, + workflow.out.rsem_index, + workflow.out.hisat2_index, + workflow.out.kallisto_index, + workflow.out.versions + ).match() } + ) + } + } + + test("gfp = false") { + + when { + workflow { + """ + gencode = false + featurecounts_group_type = 'gene_biotype' + aligner = 'star_salmon,star_rsem,hisat2' + pseudo_aligner = 'salmon,kallisto' + skip_gtf_filter = false + skip_bbsplit = false + skip_sortmerna = true + skip_alignment = false + skip_pseudo_alignment = false + + input[0] = file(params.pipelines_testdata_base_path + 'reference/genome.fasta', checkIfExists: true) + input[1] = file(params.pipelines_testdata_base_path + 'reference/genes_with_empty_tid.gtf', checkIfExists: true) + input[2] = file(params.pipelines_testdata_base_path + 'reference/genes.gff', checkIfExists: true) + input[3] = false + input[4] = file(params.pipelines_testdata_base_path + 'reference/transcriptome.fasta', checkIfExists: true) + input[5] = null + input[6] = null + input[7] = file(params.pipelines_testdata_base_path + 'reference/bbsplit_fasta_list.txt', checkIfExists: true) + input[8] = null + input[9] = null + input[10] = file(params.pipelines_testdata_base_path + 'reference/rsem.tar.gz', checkIfExists: true) + input[11] = file(params.pipelines_testdata_base_path + 'reference/salmon.tar.gz', checkIfExists: true) + input[12] = null + input[13] = file(params.pipelines_testdata_base_path + 'reference/hisat2.tar.gz', checkIfExists: true) + input[14] = null + input[15] = null + input[16] = gencode + input[17] = featurecounts_group_type + input[18] = aligner + input[19] = pseudo_aligner + input[20] = skip_gtf_filter + input[21] = skip_bbsplit + input[22] = skip_sortmerna + input[23] = skip_alignment + input[24] = skip_pseudo_alignment + """ + } + } + + then { + assertAll( + { assert workflow.success}, + { assert snapshot( + workflow.out.transcript_fasta[0][1], + workflow.out.salmon_index[0][1], + workflow.out.fasta, + workflow.out.gtf, + workflow.out.fai, + workflow.out.gene_bed, + workflow.out.chrom_sizes, + workflow.out.splicesites, + workflow.out.bbsplit_index, + workflow.out.sortmerna_index, + workflow.out.star_index, + workflow.out.rsem_index, + workflow.out.hisat2_index, + workflow.out.kallisto_index, + workflow.out.versions + ).match() } + ) + } + } + + test("transcriptome = false") { + + when { + workflow { + """ + gencode = false + featurecounts_group_type = 'gene_biotype' + aligner = 'star_salmon,star_rsem,hisat2' + pseudo_aligner = 'salmon,kallisto' + skip_gtf_filter = false + skip_bbsplit = false + skip_sortmerna = true + skip_alignment = false + skip_pseudo_alignment = false + + input[0] = file(params.pipelines_testdata_base_path + 'reference/genome.fasta', checkIfExists: true) + input[1] = file(params.pipelines_testdata_base_path + 'reference/genes_with_empty_tid.gtf', checkIfExists: true) + input[2] = file(params.pipelines_testdata_base_path + 'reference/genes.gff', checkIfExists: true) + input[3] = file(params.pipelines_testdata_base_path + 'reference/gfp.fa', checkIfExists: true) + input[4] = false + input[5] = null + input[6] = null + input[7] = file(params.pipelines_testdata_base_path + 'reference/bbsplit_fasta_list.txt', checkIfExists: true) + input[8] = null + input[9] = null + input[10] = file(params.pipelines_testdata_base_path + 'reference/rsem.tar.gz', checkIfExists: true) + input[11] = file(params.pipelines_testdata_base_path + 'reference/salmon.tar.gz', checkIfExists: true) + input[12] = null + input[13] = file(params.pipelines_testdata_base_path + 'reference/hisat2.tar.gz', checkIfExists: true) + input[14] = null + input[15] = null + input[16] = gencode + input[17] = featurecounts_group_type + input[18] = aligner + input[19] = pseudo_aligner + input[20] = skip_gtf_filter + input[21] = skip_bbsplit + input[22] = skip_sortmerna + input[23] = skip_alignment + input[24] = skip_pseudo_alignment + """ + } + } + + then { + assertAll( + { assert workflow.success}, + { assert snapshot( + workflow.out.transcript_fasta[0][1], + workflow.out.salmon_index[0][1], + workflow.out.fasta, + workflow.out.gtf, + workflow.out.fai, + workflow.out.gene_bed, + workflow.out.chrom_sizes, + workflow.out.splicesites, + workflow.out.bbsplit_index, + workflow.out.sortmerna_index, + workflow.out.star_index, + workflow.out.rsem_index, + workflow.out.hisat2_index, + workflow.out.kallisto_index, + workflow.out.versions + ).match() } + ) + } + } + + test("with bed") { + + when { + workflow { + """ + gencode = false + featurecounts_group_type = 'gene_biotype' + aligner = 'star_salmon,star_rsem,hisat2' + pseudo_aligner = 'salmon,kallisto' + skip_gtf_filter = false + skip_bbsplit = false + skip_sortmerna = true + skip_alignment = false + skip_pseudo_alignment = false + + input[0] = file(params.pipelines_testdata_base_path + 'reference/genome.fasta', checkIfExists: true) + input[1] = file(params.pipelines_testdata_base_path + 'reference/genes_with_empty_tid.gtf', checkIfExists: true) + input[2] = file(params.pipelines_testdata_base_path + 'reference/genes.gff', checkIfExists: true) + input[3] = file(params.pipelines_testdata_base_path + 'reference/gfp.fa', checkIfExists: true) + input[4] = file(params.pipelines_testdata_base_path + 'reference/transcriptome.fasta', checkIfExists: true) + input[5] = file(params.pipelines_testdata_base_path + 'reference/ngscheckmate.bed', checkIfExists: true) + input[6] = null + input[7] = file(params.pipelines_testdata_base_path + 'reference/bbsplit_fasta_list.txt', checkIfExists: true) + input[8] = null + input[9] = null + input[10] = file(params.pipelines_testdata_base_path + 'reference/rsem.tar.gz', checkIfExists: true) + input[11] = file(params.pipelines_testdata_base_path + 'reference/salmon.tar.gz', checkIfExists: true) + input[12] = null + input[13] = file(params.pipelines_testdata_base_path + 'reference/hisat2.tar.gz', checkIfExists: true) + input[14] = null + input[15] = null + input[16] = gencode + input[17] = featurecounts_group_type + input[18] = aligner + input[19] = pseudo_aligner + input[20] = skip_gtf_filter + input[21] = skip_bbsplit + input[22] = skip_sortmerna + input[23] = skip_alignment + input[24] = skip_pseudo_alignment + """ + } + } + + then { + assertAll( + { assert workflow.success}, + { assert snapshot( + workflow.out.transcript_fasta, + workflow.out.salmon_index, + workflow.out.fasta, + workflow.out.gtf, + workflow.out.fai, + workflow.out.gene_bed, + workflow.out.chrom_sizes, + workflow.out.splicesites, + workflow.out.bbsplit_index, + workflow.out.sortmerna_index, + workflow.out.star_index, + workflow.out.rsem_index, + workflow.out.hisat2_index, + workflow.out.kallisto_index, + workflow.out.versions + ).match() } + ) + } + } + + test("rsem_index = false") { + + when { + workflow { + """ + gencode = false + featurecounts_group_type = 'gene_biotype' + aligner = 'star_salmon,star_rsem,hisat2' + pseudo_aligner = 'salmon,kallisto' + skip_gtf_filter = false + skip_bbsplit = false + skip_sortmerna = true + skip_alignment = false + skip_pseudo_alignment = false + + input[0] = file(params.pipelines_testdata_base_path + 'reference/genome.fasta', checkIfExists: true) + input[1] = file(params.pipelines_testdata_base_path + 'reference/genes_with_empty_tid.gtf', checkIfExists: true) + input[2] = file(params.pipelines_testdata_base_path + 'reference/genes.gff', checkIfExists: true) + input[3] = file(params.pipelines_testdata_base_path + 'reference/gfp.fa', checkIfExists: true) + input[4] = file(params.pipelines_testdata_base_path + 'reference/transcriptome.fasta', checkIfExists: true) + input[5] = null + input[6] = null + input[7] = file(params.pipelines_testdata_base_path + 'reference/bbsplit_fasta_list.txt', checkIfExists: true) + input[8] = null + input[9] = null + input[10] = false + input[11] = file(params.pipelines_testdata_base_path + 'reference/salmon.tar.gz', checkIfExists: true) + input[12] = null + input[13] = file(params.pipelines_testdata_base_path + 'reference/hisat2.tar.gz', checkIfExists: true) + input[14] = null + input[15] = null + input[16] = gencode + input[17] = featurecounts_group_type + input[18] = aligner + input[19] = pseudo_aligner + input[20] = skip_gtf_filter + input[21] = skip_bbsplit + input[22] = skip_sortmerna + input[23] = skip_alignment + input[24] = skip_pseudo_alignment + """ + } + } + + then { + assertAll( + { assert workflow.success}, + { assert snapshot( + workflow.out.transcript_fasta, + workflow.out.salmon_index, + workflow.out.fasta, + workflow.out.gtf, + workflow.out.fai, + workflow.out.gene_bed, + workflow.out.chrom_sizes, + workflow.out.splicesites, + workflow.out.bbsplit_index, + workflow.out.sortmerna_index, + workflow.out.star_index, + workflow.out.rsem_index, + workflow.out.hisat2_index, + workflow.out.kallisto_index, + workflow.out.versions + ).match() } + ) + } + } + + test("salmon_index = false") { + + when { + workflow { + """ + gencode = false + featurecounts_group_type = 'gene_biotype' + aligner = 'star_salmon,star_rsem,hisat2' + pseudo_aligner = 'salmon,kallisto' + skip_gtf_filter = false + skip_bbsplit = false + skip_sortmerna = true + skip_alignment = false + skip_pseudo_alignment = false + + input[0] = file(params.pipelines_testdata_base_path + 'reference/genome.fasta', checkIfExists: true) + input[1] = file(params.pipelines_testdata_base_path + 'reference/genes_with_empty_tid.gtf', checkIfExists: true) + input[2] = file(params.pipelines_testdata_base_path + 'reference/genes.gff', checkIfExists: true) + input[3] = file(params.pipelines_testdata_base_path + 'reference/gfp.fa', checkIfExists: true) + input[4] = file(params.pipelines_testdata_base_path + 'reference/transcriptome.fasta', checkIfExists: true) + input[5] = null + input[6] = null + input[7] = file(params.pipelines_testdata_base_path + 'reference/bbsplit_fasta_list.txt', checkIfExists: true) + input[8] = null + input[9] = null + input[10] = file(params.pipelines_testdata_base_path + 'reference/rsem.tar.gz', checkIfExists: true) + input[11] = false + input[12] = null + input[13] = file(params.pipelines_testdata_base_path + 'reference/hisat2.tar.gz', checkIfExists: true) + input[14] = null + input[15] = null + input[16] = gencode + input[17] = featurecounts_group_type + input[18] = aligner + input[19] = pseudo_aligner + input[20] = skip_gtf_filter + input[21] = skip_bbsplit + input[22] = skip_sortmerna + input[23] = skip_alignment + input[24] = skip_pseudo_alignment + """ + } + } + + then { + assertAll( + { assert workflow.success}, + { assert snapshot( + workflow.out.transcript_fasta, + workflow.out.salmon_index, + workflow.out.fasta, + workflow.out.gtf, + workflow.out.fai, + workflow.out.gene_bed, + workflow.out.chrom_sizes, + workflow.out.splicesites, + workflow.out.bbsplit_index, + workflow.out.sortmerna_index, + workflow.out.star_index, + workflow.out.rsem_index, + workflow.out.hisat2_index, + workflow.out.kallisto_index, + workflow.out.versions + ).match() } + ) + } + } + + test("hisat2_index = false") { + when { + workflow { + """ + gencode = false + featurecounts_group_type = 'gene_biotype' + aligner = 'star_salmon,star_rsem,hisat2' + pseudo_aligner = 'salmon,kallisto' + skip_gtf_filter = false + skip_bbsplit = false + skip_sortmerna = true + skip_alignment = false + skip_pseudo_alignment = false + + input[0] = file(params.pipelines_testdata_base_path + 'reference/genome.fasta', checkIfExists: true) + input[1] = file(params.pipelines_testdata_base_path + 'reference/genes_with_empty_tid.gtf', checkIfExists: true) + input[2] = file(params.pipelines_testdata_base_path + 'reference/genes.gff', checkIfExists: true) + input[3] = file(params.pipelines_testdata_base_path + 'reference/gfp.fa', checkIfExists: true) + input[4] = file(params.pipelines_testdata_base_path + 'reference/transcriptome.fasta', checkIfExists: true) + input[5] = null + input[6] = null + input[7] = file(params.pipelines_testdata_base_path + 'reference/bbsplit_fasta_list.txt', checkIfExists: true) + input[8] = null + input[9] = null + input[10] = file(params.pipelines_testdata_base_path + 'reference/rsem.tar.gz', checkIfExists: true) + input[11] = false + input[12] = null + input[13] = false + input[14] = null + input[15] = null + input[16] = gencode + input[17] = featurecounts_group_type + input[18] = aligner + input[19] = pseudo_aligner + input[20] = skip_gtf_filter + input[21] = skip_bbsplit + input[22] = skip_sortmerna + input[23] = skip_alignment + input[24] = skip_pseudo_alignment + """ + } + } + + then { + assertAll( + { assert workflow.success}, + { assert snapshot( + workflow.out.transcript_fasta, + workflow.out.salmon_index, + workflow.out.fasta, + workflow.out.gtf, + workflow.out.fai, + workflow.out.gene_bed, + workflow.out.chrom_sizes, + workflow.out.splicesites, + workflow.out.bbsplit_index, + workflow.out.sortmerna_index, + workflow.out.star_index, + workflow.out.rsem_index, + workflow.out.hisat2_index, + workflow.out.kallisto_index, + workflow.out.versions + ).match() } + ) + } + } + + test("gencode = true") { + + when { + workflow { + """ + gencode = true + featurecounts_group_type = 'gene_biotype' + aligner = 'star_salmon,star_rsem,hisat2' + pseudo_aligner = 'salmon,kallisto' + skip_gtf_filter = false + skip_bbsplit = false + skip_sortmerna = true + skip_alignment = false + skip_pseudo_alignment = false + + input[0] = file(params.pipelines_testdata_base_path + 'reference/genome.fasta', checkIfExists: true) + input[1] = file(params.pipelines_testdata_base_path + 'reference/genes_with_empty_tid.gtf', checkIfExists: true) + input[2] = file(params.pipelines_testdata_base_path + 'reference/genes.gff', checkIfExists: true) + input[3] = file(params.pipelines_testdata_base_path + 'reference/gfp.fa', checkIfExists: true) + input[4] = file(params.pipelines_testdata_base_path + 'reference/transcriptome.fasta', checkIfExists: true) + input[5] = null + input[6] = null + input[7] = file(params.pipelines_testdata_base_path + 'reference/bbsplit_fasta_list.txt', checkIfExists: true) + input[8] = null + input[9] = null + input[10] = file(params.pipelines_testdata_base_path + 'reference/rsem.tar.gz', checkIfExists: true) + input[11] = file(params.pipelines_testdata_base_path + 'reference/salmon.tar.gz', checkIfExists: true) + input[12] = null + input[13] = file(params.pipelines_testdata_base_path + 'reference/hisat2.tar.gz', checkIfExists: true) + input[14] = null + input[15] = null + input[16] = gencode + input[17] = featurecounts_group_type + input[18] = aligner + input[19] = pseudo_aligner + input[20] = skip_gtf_filter + input[21] = skip_bbsplit + input[22] = skip_sortmerna + input[23] = skip_alignment + input[24] = skip_pseudo_alignment + """ + } + } + + then { + assertAll( + { assert workflow.success}, + { assert snapshot( + workflow.out.transcript_fasta, + workflow.out.salmon_index, + workflow.out.fasta, + workflow.out.gtf, + workflow.out.fai, + workflow.out.gene_bed, + workflow.out.chrom_sizes, + workflow.out.splicesites, + workflow.out.bbsplit_index, + workflow.out.sortmerna_index, + workflow.out.star_index, + workflow.out.rsem_index, + workflow.out.hisat2_index, + workflow.out.kallisto_index, + workflow.out.versions + ).match() } + ) + } + } + + test("featurecounts_group_type = 'gene_type'") { + + when { + workflow { + """ + gencode = false + featurecounts_group_type = 'gene_type' + aligner = 'star_salmon,star_rsem,hisat2' + pseudo_aligner = 'salmon,kallisto' + skip_gtf_filter = false + skip_bbsplit = false + skip_sortmerna = true + skip_alignment = false + skip_pseudo_alignment = false + + input[0] = file(params.pipelines_testdata_base_path + 'reference/genome.fasta', checkIfExists: true) + input[1] = file(params.pipelines_testdata_base_path + 'reference/genes_with_empty_tid.gtf', checkIfExists: true) + input[2] = file(params.pipelines_testdata_base_path + 'reference/genes.gff', checkIfExists: true) + input[3] = file(params.pipelines_testdata_base_path + 'reference/gfp.fa', checkIfExists: true) + input[4] = file(params.pipelines_testdata_base_path + 'reference/transcriptome.fasta', checkIfExists: true) + input[5] = null + input[6] = null + input[7] = file(params.pipelines_testdata_base_path + 'reference/bbsplit_fasta_list.txt', checkIfExists: true) + input[8] = null + input[9] = null + input[10] = file(params.pipelines_testdata_base_path + 'reference/rsem.tar.gz', checkIfExists: true) + input[11] = file(params.pipelines_testdata_base_path + 'reference/salmon.tar.gz', checkIfExists: true) + input[12] = null + input[13] = file(params.pipelines_testdata_base_path + 'reference/hisat2.tar.gz', checkIfExists: true) + input[14] = null + input[15] = null + input[16] = gencode + input[17] = featurecounts_group_type + input[18] = aligner + input[19] = pseudo_aligner + input[20] = skip_gtf_filter + input[21] = skip_bbsplit + input[22] = skip_sortmerna + input[23] = skip_alignment + input[24] = skip_pseudo_alignment + """ + } + } + + then { + assertAll( + { assert workflow.success}, + { assert snapshot( + workflow.out.transcript_fasta, + workflow.out.salmon_index, + workflow.out.fasta, + workflow.out.gtf, + workflow.out.fai, + workflow.out.gene_bed, + workflow.out.chrom_sizes, + workflow.out.splicesites, + workflow.out.bbsplit_index, + workflow.out.sortmerna_index, + workflow.out.star_index, + workflow.out.rsem_index, + workflow.out.hisat2_index, + workflow.out.kallisto_index, + workflow.out.versions + ).match() } + ) + } + } + + test("skip_gtf_filter = true") { + + when { + workflow { + """ + gencode = false + featurecounts_group_type = 'gene_biotype' + aligner = 'star_salmon,star_rsem,hisat2' + pseudo_aligner = 'salmon,kallisto' + skip_gtf_filter = true + skip_bbsplit = false + skip_sortmerna = true + skip_alignment = false + skip_pseudo_alignment = false + + input[0] = file(params.pipelines_testdata_base_path + 'reference/genome.fasta', checkIfExists: true) + input[1] = file(params.pipelines_testdata_base_path + 'reference/genes_with_empty_tid.gtf', checkIfExists: true) + input[2] = file(params.pipelines_testdata_base_path + 'reference/genes.gff', checkIfExists: true) + input[3] = file(params.pipelines_testdata_base_path + 'reference/gfp.fa', checkIfExists: true) + input[4] = file(params.pipelines_testdata_base_path + 'reference/transcriptome.fasta', checkIfExists: true) + input[5] = null + input[6] = null + input[7] = file(params.pipelines_testdata_base_path + 'reference/bbsplit_fasta_list.txt', checkIfExists: true) + input[8] = null + input[9] = null + input[10] = file(params.pipelines_testdata_base_path + 'reference/rsem.tar.gz', checkIfExists: true) + input[11] = file(params.pipelines_testdata_base_path + 'reference/salmon.tar.gz', checkIfExists: true) + input[12] = null + input[13] = file(params.pipelines_testdata_base_path + 'reference/hisat2.tar.gz', checkIfExists: true) + input[14] = null + input[15] = null + input[16] = gencode + input[17] = featurecounts_group_type + input[18] = aligner + input[19] = pseudo_aligner + input[20] = skip_gtf_filter + input[21] = skip_bbsplit + input[22] = skip_sortmerna + input[23] = skip_alignment + input[24] = skip_pseudo_alignment + """ + } + } + + then { + assertAll( + { assert workflow.success}, + { assert snapshot( + workflow.out.transcript_fasta, + workflow.out.salmon_index, + workflow.out.fasta, + workflow.out.gtf, + workflow.out.fai, + workflow.out.gene_bed, + workflow.out.chrom_sizes, + workflow.out.splicesites, + workflow.out.bbsplit_index, + workflow.out.sortmerna_index, + workflow.out.star_index, + workflow.out.rsem_index, + workflow.out.hisat2_index, + workflow.out.kallisto_index, + workflow.out.versions + ).match() } + ) + } + } + + test("skip_bbsplit = true") { + + when { + workflow { + """ + gencode = false + featurecounts_group_type = 'gene_biotype' + aligner = 'star_salmon,star_rsem,hisat2' + pseudo_aligner = 'salmon,kallisto' + skip_gtf_filter = false skip_bbsplit = true skip_sortmerna = true + skip_alignment = false + skip_pseudo_alignment = false + + input[0] = file(params.pipelines_testdata_base_path + 'reference/genome.fasta', checkIfExists: true) + input[1] = file(params.pipelines_testdata_base_path + 'reference/genes_with_empty_tid.gtf', checkIfExists: true) + input[2] = file(params.pipelines_testdata_base_path + 'reference/genes.gff', checkIfExists: true) + input[3] = file(params.pipelines_testdata_base_path + 'reference/gfp.fa', checkIfExists: true) + input[4] = file(params.pipelines_testdata_base_path + 'reference/transcriptome.fasta', checkIfExists: true) + input[5] = null + input[6] = null + input[7] = file(params.pipelines_testdata_base_path + 'reference/bbsplit_fasta_list.txt', checkIfExists: true) + input[8] = null + input[9] = null + input[10] = file(params.pipelines_testdata_base_path + 'reference/rsem.tar.gz', checkIfExists: true) + input[11] = file(params.pipelines_testdata_base_path + 'reference/salmon.tar.gz', checkIfExists: true) + input[12] = null + input[13] = file(params.pipelines_testdata_base_path + 'reference/hisat2.tar.gz', checkIfExists: true) + input[14] = null + input[15] = null + input[16] = gencode + input[17] = featurecounts_group_type + input[18] = aligner + input[19] = pseudo_aligner + input[20] = skip_gtf_filter + input[21] = skip_bbsplit + input[22] = skip_sortmerna + input[23] = skip_alignment + input[24] = skip_pseudo_alignment + """ + } + } + + then { + assertAll( + { assert workflow.success}, + { assert snapshot( + workflow.out.transcript_fasta, + workflow.out.salmon_index, + workflow.out.fasta, + workflow.out.gtf, + workflow.out.fai, + workflow.out.gene_bed, + workflow.out.chrom_sizes, + workflow.out.splicesites, + workflow.out.bbsplit_index, + workflow.out.sortmerna_index, + workflow.out.star_index, + workflow.out.rsem_index, + workflow.out.hisat2_index, + workflow.out.kallisto_index, + workflow.out.versions + ).match() } + ) + } + } + + test("skip_alignment = true") { + + when { + workflow { + """ + gencode = false + featurecounts_group_type = 'gene_biotype' + aligner = 'star_salmon,star_rsem,hisat2' + pseudo_aligner = 'salmon,kallisto' + skip_gtf_filter = false + skip_bbsplit = false + skip_sortmerna = true skip_alignment = true + skip_pseudo_alignment = false + + input[0] = file(params.pipelines_testdata_base_path + 'reference/genome.fasta', checkIfExists: true) + input[1] = file(params.pipelines_testdata_base_path + 'reference/genes_with_empty_tid.gtf', checkIfExists: true) + input[2] = file(params.pipelines_testdata_base_path + 'reference/genes.gff', checkIfExists: true) + input[3] = file(params.pipelines_testdata_base_path + 'reference/gfp.fa', checkIfExists: true) + input[4] = file(params.pipelines_testdata_base_path + 'reference/transcriptome.fasta', checkIfExists: true) + input[5] = null + input[6] = null + input[7] = file(params.pipelines_testdata_base_path + 'reference/bbsplit_fasta_list.txt', checkIfExists: true) + input[8] = null + input[9] = null + input[10] = file(params.pipelines_testdata_base_path + 'reference/rsem.tar.gz', checkIfExists: true) + input[11] = file(params.pipelines_testdata_base_path + 'reference/salmon.tar.gz', checkIfExists: true) + input[12] = null + input[13] = file(params.pipelines_testdata_base_path + 'reference/hisat2.tar.gz', checkIfExists: true) + input[14] = null + input[15] = null + input[16] = gencode + input[17] = featurecounts_group_type + input[18] = aligner + input[19] = pseudo_aligner + input[20] = skip_gtf_filter + input[21] = skip_bbsplit + input[22] = skip_sortmerna + input[23] = skip_alignment + input[24] = skip_pseudo_alignment + """ + } + } + + then { + assertAll( + { assert workflow.success}, + { assert snapshot( + workflow.out.transcript_fasta, + workflow.out.salmon_index, + workflow.out.fasta, + workflow.out.gtf, + workflow.out.fai, + workflow.out.gene_bed, + workflow.out.chrom_sizes, + workflow.out.splicesites, + workflow.out.bbsplit_index, + workflow.out.sortmerna_index, + workflow.out.star_index, + workflow.out.rsem_index, + workflow.out.hisat2_index, + workflow.out.kallisto_index, + workflow.out.versions + ).match() } + ) + } + } + + test("skip_pseudoalignment = true") { + + when { + workflow { + """ + gencode = false + featurecounts_group_type = 'gene_biotype' + aligner = 'star_salmon,star_rsem,hisat2' + pseudo_aligner = 'salmon,kallisto' + skip_gtf_filter = false + skip_bbsplit = false + skip_sortmerna = true + skip_alignment = false skip_pseudo_alignment = true input[0] = file(params.pipelines_testdata_base_path + 'reference/genome.fasta', checkIfExists: true) @@ -73,22 +1364,25 @@ nextflow_workflow { then { assertAll( { assert workflow.success}, - { assert snapshot(file(workflow.out.transcript_fasta[0][1]).name).match("transcript_fasta") }, - { assert snapshot(file(workflow.out.salmon_index[0][1]).name).match("salmon_index") }, - { assert snapshot(workflow.out.fasta).match("fasta") }, - { assert snapshot(workflow.out.gtf).match("gtf") }, - { assert snapshot(workflow.out.fai).match("fai") }, - { assert snapshot(workflow.out.gene_bed).match("gene_bed") }, - { assert snapshot(workflow.out.chrom_sizes).match("chrom_sizes") }, - { assert snapshot(workflow.out.splicesites).match("splicesites") }, - { assert snapshot(workflow.out.bbsplit_index).match("bbsplit_index") }, - { assert snapshot(workflow.out.sortmerna_index).match("sortmerna_index") }, - { assert snapshot(workflow.out.star_index).match("star_index") }, - { assert snapshot(workflow.out.rsem_index).match("rsem_index") }, - { assert snapshot(workflow.out.hisat2_index).match("hisat2_index") }, - { assert snapshot(workflow.out.kallisto_index).match("kallisto_index") }, - { assert snapshot(workflow.out.versions).match("versions") } + { assert snapshot( + workflow.out.transcript_fasta, + workflow.out.salmon_index, + workflow.out.fasta, + workflow.out.gtf, + workflow.out.fai, + workflow.out.gene_bed, + workflow.out.chrom_sizes, + workflow.out.splicesites, + workflow.out.bbsplit_index, + workflow.out.sortmerna_index, + workflow.out.star_index, + workflow.out.rsem_index, + workflow.out.hisat2_index, + workflow.out.kallisto_index, + workflow.out.versions + ).match() } ) } } + } diff --git a/subworkflows/local/prepare_genome/tests/main.nf.test.snap b/subworkflows/local/prepare_genome/tests/main.nf.test.snap index 57f9f9f51..9dbf2869a 100644 --- a/subworkflows/local/prepare_genome/tests/main.nf.test.snap +++ b/subworkflows/local/prepare_genome/tests/main.nf.test.snap @@ -1,180 +1,1508 @@ { - "bbsplit_index": { + "gencode = true": { "content": [ + [ + "transcriptome.fixed.fa:md5,faf3a64453ae73983bbf2743387fbdf2" + ], + [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" + ], + [ + "genome_gfp.fasta:md5,e23e302af63736a199985a169fdac055" + ], + [ + "genome_gfp.gtf:md5,2593a0843dd97f0b7dfb62cdd2c21ab8" + ], + [ + "genome_gfp.fasta.fai:md5,8fa54c6bd2ea6a369efbb8ab4f30156a" + ], + [ + "genome_gfp.bed:md5,991993ebef1def1d5823632c21177ec3" + ], + [ + "genome_gfp.fasta.sizes:md5,9b755f8f349b14accefb4d859f84de26" + ], + [ + + ], + [ + [ + [ + [ + [ + "chr1.chrom.gz:md5,6c021771fa2b50a86bda7d6155e6db53", + "info.txt:md5,85ec90d24ffc18174e4e3ede54251ec3", + "merged_ref_8374379829187813017.fa.gz:md5,d2cc4eb47af667d0fb00a4334bdf0ecb", + "namelist.txt:md5,2d3a23e005f63d34a85297a5a4baf421", + "reflist.txt:md5,6450b0e7b5d010ebb7e5f65eb6871f61", + "scaffolds.txt.gz:md5,2c0b787b705a8d05cc1b307d4502381a", + "summary.txt:md5,d36ee40f8200aaa7d8fc8fe7123bda44" + ] + ], + [ + [ + "chr1_index_k13_c12_b1.block:md5,bf872e7d09627b6a4d13fc581d2b6cc8", + "chr1_index_k13_c12_b1.block2.gz:md5,f5c15e773b859516e9f72f73d0be18b4" + ] + ] + ] + ] + ], + [ + + ], [ + ], + [ + + ], + [ + + ], + [ + + ], + [ + "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", + "versions.yml:md5,1cd265cb86a23a27f683ffb2459f37f5", + "versions.yml:md5,58fa668eeacb984c10df6f856f2c9291", + "versions.yml:md5,71252f1a221be05593361acccb99506b", + "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", + "versions.yml:md5,961ab91198c4e6ec9d795b95e3f61fda" ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "24.01.0" + "nextflow": "23.10.1" }, - "timestamp": "2024-03-08T15:59:35.434161" + "timestamp": "2024-03-12T15:21:16.493446" }, - "gene_bed": { + "hisat2_index = false": { "content": [ + [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" + ], + [ + + ], + [ + "genome_gfp.fasta:md5,e23e302af63736a199985a169fdac055" + ], + [ + "genome_gfp.gtf:md5,c98b12c302f15731bfc36bcf297cfe28" + ], + [ + "genome_gfp.fasta.fai:md5,8fa54c6bd2ea6a369efbb8ab4f30156a" + ], [ "genome_gfp.bed:md5,991993ebef1def1d5823632c21177ec3" + ], + [ + "genome_gfp.fasta.sizes:md5,9b755f8f349b14accefb4d859f84de26" + ], + [ + + ], + [ + [ + [ + [ + [ + "chr1.chrom.gz:md5,6c021771fa2b50a86bda7d6155e6db53", + "info.txt:md5,08f56968686cad3ebe93fbdb5da4249e", + "merged_ref_8374379829187813017.fa.gz:md5,d2cc4eb47af667d0fb00a4334bdf0ecb", + "namelist.txt:md5,2d3a23e005f63d34a85297a5a4baf421", + "reflist.txt:md5,a6b119da9f9c6b6e64cde6f82bbfee87", + "scaffolds.txt.gz:md5,cb9e06f0b4362fd86bf77c36854a808a", + "summary.txt:md5,ef9d0b633aa7467eb56f808d84040a70" + ] + ], + [ + [ + "chr1_index_k13_c12_b1.block:md5,bf872e7d09627b6a4d13fc581d2b6cc8", + "chr1_index_k13_c12_b1.block2.gz:md5,f5c15e773b859516e9f72f73d0be18b4" + ] + ] + ] + ] + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", + "versions.yml:md5,1cd265cb86a23a27f683ffb2459f37f5", + "versions.yml:md5,58fa668eeacb984c10df6f856f2c9291", + "versions.yml:md5,71252f1a221be05593361acccb99506b", + "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a" ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "24.01.0" + "nextflow": "23.10.1" }, - "timestamp": "2024-03-08T15:59:35.394732" + "timestamp": "2024-03-12T15:20:22.232591" }, - "fasta": { + "featurecounts_group_type = 'gene_type'": { "content": [ + [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" + ], + [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" + ], [ "genome_gfp.fasta:md5,e23e302af63736a199985a169fdac055" - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" - }, - "timestamp": "2024-03-08T15:59:35.356464" - }, - "fai": { - "content": [ + ], + [ + "genome_gfp.gtf:md5,2593a0843dd97f0b7dfb62cdd2c21ab8" + ], [ "genome_gfp.fasta.fai:md5,8fa54c6bd2ea6a369efbb8ab4f30156a" + ], + [ + "genome_gfp.bed:md5,991993ebef1def1d5823632c21177ec3" + ], + [ + "genome_gfp.fasta.sizes:md5,9b755f8f349b14accefb4d859f84de26" + ], + [ + + ], + [ + [ + [ + [ + [ + "chr1.chrom.gz:md5,6c021771fa2b50a86bda7d6155e6db53", + "info.txt:md5,1491003ee5098cd2b485984457479d82", + "merged_ref_8374379829187813017.fa.gz:md5,d2cc4eb47af667d0fb00a4334bdf0ecb", + "namelist.txt:md5,2d3a23e005f63d34a85297a5a4baf421", + "reflist.txt:md5,e8c89b3c1d46e3a2af22aaa68b8d6f1e", + "scaffolds.txt.gz:md5,3ee84b1ed3ba994c790598092f334fb9", + "summary.txt:md5,c70aa2ebd776e93126fdb44ba3a4b5e2" + ] + ], + [ + [ + "chr1_index_k13_c12_b1.block:md5,bf872e7d09627b6a4d13fc581d2b6cc8", + "chr1_index_k13_c12_b1.block2.gz:md5,f5c15e773b859516e9f72f73d0be18b4" + ] + ] + ] + ] + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", + "versions.yml:md5,1cd265cb86a23a27f683ffb2459f37f5", + "versions.yml:md5,58fa668eeacb984c10df6f856f2c9291", + "versions.yml:md5,71252f1a221be05593361acccb99506b", + "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a" ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "24.01.0" + "nextflow": "23.10.1" }, - "timestamp": "2024-03-08T15:59:35.376112" + "timestamp": "2024-03-12T15:22:10.750628" }, - "splicesites": { + "skip_gtf_filter": { "content": [ + [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" + ], + [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" + ], + [ + "genome_gfp.fasta:md5,e23e302af63736a199985a169fdac055" + ], + [ + "genome_gfp.gtf:md5,5e63cda3dcafc0d6ad0a738133af9d54" + ], + [ + "genome_gfp.fasta.fai:md5,8fa54c6bd2ea6a369efbb8ab4f30156a" + ], + [ + "genome_gfp.bed:md5,991993ebef1def1d5823632c21177ec3" + ], + [ + "genome_gfp.fasta.sizes:md5,9b755f8f349b14accefb4d859f84de26" + ], + [ + + ], + [ + [ + [ + [ + [ + "chr1.chrom.gz:md5,6c021771fa2b50a86bda7d6155e6db53", + "info.txt:md5,d03ec3f27befb4e06129a2c11bef1900", + "merged_ref_8374379829187813017.fa.gz:md5,d2cc4eb47af667d0fb00a4334bdf0ecb", + "namelist.txt:md5,2d3a23e005f63d34a85297a5a4baf421", + "reflist.txt:md5,02fcff3f8208b5878176d1a99b6aca82", + "scaffolds.txt.gz:md5,a5354aef1f0ae7329cf878d363d375f3", + "summary.txt:md5,afcdc7852872772d8c772682cc16d084" + ] + ], + [ + [ + "chr1_index_k13_c12_b1.block:md5,bf872e7d09627b6a4d13fc581d2b6cc8", + "chr1_index_k13_c12_b1.block2.gz:md5,f5c15e773b859516e9f72f73d0be18b4" + ] + ] + ] + ] + ], [ + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", + "versions.yml:md5,1cd265cb86a23a27f683ffb2459f37f5", + "versions.yml:md5,58fa668eeacb984c10df6f856f2c9291", + "versions.yml:md5,71252f1a221be05593361acccb99506b" ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "24.01.0" + "nextflow": "23.10.1" }, - "timestamp": "2024-03-08T15:59:35.424874" + "timestamp": "2024-03-12T15:12:41.465629" }, - "chrom_sizes": { + "gtf = false": { "content": [ + [ + "transcriptome.fixed.fa:md5,faf3a64453ae73983bbf2743387fbdf2" + ], + [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" + ], + [ + "genome_gfp.fasta:md5,e23e302af63736a199985a169fdac055" + ], + [ + "genome_gfp.gtf:md5,34da4da0a8f3412d763db7853210d7c1" + ], + [ + "genome_gfp.fasta.fai:md5,8fa54c6bd2ea6a369efbb8ab4f30156a" + ], + [ + "genome_gfp.bed:md5,991993ebef1def1d5823632c21177ec3" + ], [ "genome_gfp.fasta.sizes:md5,9b755f8f349b14accefb4d859f84de26" + ], + [ + + ], + [ + [ + [ + [ + [ + "chr1.chrom.gz:md5,6c021771fa2b50a86bda7d6155e6db53", + "info.txt:md5,39bd42b860cf2ae6e9296fd8bbc99d50", + "merged_ref_8374379829187813017.fa.gz:md5,d2cc4eb47af667d0fb00a4334bdf0ecb", + "namelist.txt:md5,2d3a23e005f63d34a85297a5a4baf421", + "reflist.txt:md5,162ca746a092caf7c96b0f26ad10b473", + "scaffolds.txt.gz:md5,2787ce465d7bb72b2b25368a762c75d9", + "summary.txt:md5,235eb047a28998f94944da751a4b39f5" + ] + ], + [ + [ + "chr1_index_k13_c12_b1.block:md5,bf872e7d09627b6a4d13fc581d2b6cc8", + "chr1_index_k13_c12_b1.block2.gz:md5,f5c15e773b859516e9f72f73d0be18b4" + ] + ] + ] + ] + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + "versions.yml:md5,0a23f0be65eb55b48ae71fe6e69a25a9", + "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", + "versions.yml:md5,1cd265cb86a23a27f683ffb2459f37f5", + "versions.yml:md5,58fa668eeacb984c10df6f856f2c9291", + "versions.yml:md5,71252f1a221be05593361acccb99506b", + "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", + "versions.yml:md5,961ab91198c4e6ec9d795b95e3f61fda" ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "24.01.0" + "nextflow": "23.10.1" }, - "timestamp": "2024-03-08T15:59:35.412903" + "timestamp": "2024-03-12T15:15:05.038" }, - "star_index": { + "gfp = false": { "content": [ + "n", + "n", + [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/genome.fasta" + ], + [ + "genome.filtered.gtf:md5,ef6fccd153a21c329670462d602ed2d0" + ], + [ + "genome.fasta.fai:md5,2cd76d936cbfa386b14154506c2041b2" + ], + [ + "genome.filtered.bed:md5,e507dc33673e76c32abe344f4dc07952" + ], + [ + "genome.fasta.sizes:md5,29218009212157c49dbc6596621ec780" + ], + [ + + ], + [ + [ + [ + [ + [ + "chr1.chrom.gz:md5,f13e8a518175502a7080e4faa6e979d7", + "info.txt:md5,d225c9d34d772032f75888b3daa47786", + "merged_ref_8374379829187813017.fa.gz:md5,b8b1bd9eccad6ef6bab0afbf9cef7652", + "namelist.txt:md5,2d3a23e005f63d34a85297a5a4baf421", + "reflist.txt:md5,27662af90e020d3b7bf3626ffd7dc3da", + "scaffolds.txt.gz:md5,755ecf9c39455ed1ee46181810d4df54", + "summary.txt:md5,95abd980de55ca6f90e3bf0efc47d638" + ] + ], + [ + [ + "chr1_index_k13_c12_b1.block:md5,ef41bb3e410ac9c8d8fa64642ab21da2", + "chr1_index_k13_c12_b1.block2.gz:md5,63c9bad0f53336d948293fb145e42e8c" + ] + ] + ] + ] + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], [ + ], + [ + "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", + "versions.yml:md5,58fa668eeacb984c10df6f856f2c9291", + "versions.yml:md5,71252f1a221be05593361acccb99506b", + "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a" ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "24.01.0" + "nextflow": "23.10.1" }, - "timestamp": "2024-03-08T15:59:35.452927" + "timestamp": "2024-03-12T15:16:21.035673" }, - "versions": { + "skip_bbsplit": { "content": [ + [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" + ], + [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" + ], + [ + "genome_gfp.fasta:md5,e23e302af63736a199985a169fdac055" + ], + [ + "genome_gfp.gtf:md5,c98b12c302f15731bfc36bcf297cfe28" + ], + [ + "genome_gfp.fasta.fai:md5,8fa54c6bd2ea6a369efbb8ab4f30156a" + ], + [ + "genome_gfp.bed:md5,991993ebef1def1d5823632c21177ec3" + ], + [ + "genome_gfp.fasta.sizes:md5,9b755f8f349b14accefb4d859f84de26" + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], [ "versions.yml:md5,1cd265cb86a23a27f683ffb2459f37f5", "versions.yml:md5,58fa668eeacb984c10df6f856f2c9291", - "versions.yml:md5,71252f1a221be05593361acccb99506b" + "versions.yml:md5,71252f1a221be05593361acccb99506b", + "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a" ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "24.01.0" + "nextflow": "23.10.1" }, - "timestamp": "2024-03-08T15:59:35.490956" + "timestamp": "2024-03-12T15:13:05.995053" }, - "gtf": { + "skip_bbsplit = true": { "content": [ [ - "genome_gfp.gtf:md5,5e63cda3dcafc0d6ad0a738133af9d54" + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" + ], + [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" + ], + [ + "genome_gfp.fasta:md5,e23e302af63736a199985a169fdac055" + ], + [ + "genome_gfp.gtf:md5,c98b12c302f15731bfc36bcf297cfe28" + ], + [ + "genome_gfp.fasta.fai:md5,8fa54c6bd2ea6a369efbb8ab4f30156a" + ], + [ + "genome_gfp.bed:md5,991993ebef1def1d5823632c21177ec3" + ], + [ + "genome_gfp.fasta.sizes:md5,9b755f8f349b14accefb4d859f84de26" + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + "versions.yml:md5,1cd265cb86a23a27f683ffb2459f37f5", + "versions.yml:md5,58fa668eeacb984c10df6f856f2c9291", + "versions.yml:md5,71252f1a221be05593361acccb99506b", + "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a" ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "24.01.0" + "nextflow": "23.10.1" }, - "timestamp": "2024-03-08T15:59:35.363682" + "timestamp": "2024-03-12T15:23:48.042327" }, - "kallisto_index": { + "with bed": { "content": [ + [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" + ], + [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" + ], + [ + "genome_gfp.fasta:md5,e23e302af63736a199985a169fdac055" + ], + [ + "genome_gfp.gtf:md5,c98b12c302f15731bfc36bcf297cfe28" + ], + [ + "genome_gfp.fasta.fai:md5,8fa54c6bd2ea6a369efbb8ab4f30156a" + ], + [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/ngscheckmate.bed" + ], + [ + "genome_gfp.fasta.sizes:md5,9b755f8f349b14accefb4d859f84de26" + ], + [ + + ], + [ + [ + [ + [ + [ + "chr1.chrom.gz:md5,6c021771fa2b50a86bda7d6155e6db53", + "info.txt:md5,11927943cf09a36345b939575a745906", + "merged_ref_8374379829187813017.fa.gz:md5,d2cc4eb47af667d0fb00a4334bdf0ecb", + "namelist.txt:md5,2d3a23e005f63d34a85297a5a4baf421", + "reflist.txt:md5,b855cbcf1e3b688dbb65e205e0267f9e", + "scaffolds.txt.gz:md5,8776db261a14d046ed3c022930699649", + "summary.txt:md5,00a93fad4ddabcf81d2bec13050012fe" + ] + ], + [ + [ + "chr1_index_k13_c12_b1.block:md5,bf872e7d09627b6a4d13fc581d2b6cc8", + "chr1_index_k13_c12_b1.block2.gz:md5,f5c15e773b859516e9f72f73d0be18b4" + ] + ] + ] + ] + ], + [ + + ], + [ + + ], + [ + + ], [ + ], + [ + + ], + [ + "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", + "versions.yml:md5,1cd265cb86a23a27f683ffb2459f37f5", + "versions.yml:md5,58fa668eeacb984c10df6f856f2c9291", + "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a" ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "24.01.0" + "nextflow": "23.10.1" }, - "timestamp": "2024-03-08T15:59:35.481666" + "timestamp": "2024-03-12T15:17:55.274869" }, - "sortmerna_index": { + "skip_alignment": { "content": [ + [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" + ], + [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" + ], + [ + "genome_gfp.fasta:md5,e23e302af63736a199985a169fdac055" + ], + [ + "genome_gfp.gtf:md5,c98b12c302f15731bfc36bcf297cfe28" + ], + [ + "genome_gfp.fasta.fai:md5,8fa54c6bd2ea6a369efbb8ab4f30156a" + ], + [ + "genome_gfp.bed:md5,991993ebef1def1d5823632c21177ec3" + ], + [ + "genome_gfp.fasta.sizes:md5,9b755f8f349b14accefb4d859f84de26" + ], [ + ], + [ + [ + [ + [ + [ + "chr1.chrom.gz:md5,6c021771fa2b50a86bda7d6155e6db53", + "info.txt:md5,090c3a2263ae90eaea22d858afda3512", + "merged_ref_8374379829187813017.fa.gz:md5,d2cc4eb47af667d0fb00a4334bdf0ecb", + "namelist.txt:md5,2d3a23e005f63d34a85297a5a4baf421", + "reflist.txt:md5,66fd4adf802bd3475537f8a788a3a042", + "scaffolds.txt.gz:md5,faae7b3362c1c5e21185ba218399ab5d", + "summary.txt:md5,7794c1fb64164d892731177ce53fcf54" + ] + ], + [ + [ + "chr1_index_k13_c12_b1.block:md5,bf872e7d09627b6a4d13fc581d2b6cc8", + "chr1_index_k13_c12_b1.block2.gz:md5,f5c15e773b859516e9f72f73d0be18b4" + ] + ] + ] + ] + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", + "versions.yml:md5,1cd265cb86a23a27f683ffb2459f37f5", + "versions.yml:md5,58fa668eeacb984c10df6f856f2c9291", + "versions.yml:md5,71252f1a221be05593361acccb99506b", + "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a" ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "24.01.0" + "nextflow": "23.10.1" }, - "timestamp": "2024-03-08T15:59:35.44388" + "timestamp": "2024-03-12T15:13:44.580105" }, - "transcript_fasta": { + "gencode = false": { "content": [ - "n" - ], - "meta": { + [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" + ], + [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" + ], + [ + "genome_gfp.fasta:md5,e23e302af63736a199985a169fdac055" + ], + [ + "genome_gfp.gtf:md5,c98b12c302f15731bfc36bcf297cfe28" + ], + [ + "genome_gfp.fasta.fai:md5,8fa54c6bd2ea6a369efbb8ab4f30156a" + ], + [ + "genome_gfp.bed:md5,991993ebef1def1d5823632c21177ec3" + ], + [ + "genome_gfp.fasta.sizes:md5,9b755f8f349b14accefb4d859f84de26" + ], + [ + + ], + [ + [ + [ + [ + [ + "chr1.chrom.gz:md5,6c021771fa2b50a86bda7d6155e6db53", + "info.txt:md5,0694be7e35f2ab7eaa9cf63ec1e851d2", + "merged_ref_8374379829187813017.fa.gz:md5,d2cc4eb47af667d0fb00a4334bdf0ecb", + "namelist.txt:md5,2d3a23e005f63d34a85297a5a4baf421", + "reflist.txt:md5,3a969da349f755a9ac5ef183c943a56e", + "scaffolds.txt.gz:md5,413b8ea8c813049d987f114e9c0f4dff", + "summary.txt:md5,5f87cb937f49a30ff2c2ef79c7cf137a" + ] + ], + [ + [ + "chr1_index_k13_c12_b1.block:md5,bf872e7d09627b6a4d13fc581d2b6cc8", + "chr1_index_k13_c12_b1.block2.gz:md5,f5c15e773b859516e9f72f73d0be18b4" + ] + ] + ] + ] + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", + "versions.yml:md5,1cd265cb86a23a27f683ffb2459f37f5", + "versions.yml:md5,58fa668eeacb984c10df6f856f2c9291", + "versions.yml:md5,71252f1a221be05593361acccb99506b", + "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-03-12T15:12:08.702439" + }, + "gff = false": { + "content": [ + "n", + "n", + [ + "genome_gfp.fasta:md5,e23e302af63736a199985a169fdac055" + ], + [ + "genome_gfp.gtf:md5,c98b12c302f15731bfc36bcf297cfe28" + ], + [ + "genome_gfp.fasta.fai:md5,8fa54c6bd2ea6a369efbb8ab4f30156a" + ], + [ + "genome_gfp.bed:md5,991993ebef1def1d5823632c21177ec3" + ], + [ + "genome_gfp.fasta.sizes:md5,9b755f8f349b14accefb4d859f84de26" + ], + [ + + ], + [ + [ + [ + [ + [ + "chr1.chrom.gz:md5,6c021771fa2b50a86bda7d6155e6db53", + "info.txt:md5,0c510f3eac791c6292e3fa6a012cd8c1", + "merged_ref_8374379829187813017.fa.gz:md5,d2cc4eb47af667d0fb00a4334bdf0ecb", + "namelist.txt:md5,2d3a23e005f63d34a85297a5a4baf421", + "reflist.txt:md5,cce830133212071b99fb0dd3e9650381", + "scaffolds.txt.gz:md5,c11ae08ed6ab86ea33ff6fa54e90e4c4", + "summary.txt:md5,3723e9062c0eadc52700dca088da52c4" + ] + ], + [ + [ + "chr1_index_k13_c12_b1.block:md5,bf872e7d09627b6a4d13fc581d2b6cc8", + "chr1_index_k13_c12_b1.block2.gz:md5,f5c15e773b859516e9f72f73d0be18b4" + ] + ] + ] + ] + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", + "versions.yml:md5,1cd265cb86a23a27f683ffb2459f37f5", + "versions.yml:md5,58fa668eeacb984c10df6f856f2c9291", + "versions.yml:md5,71252f1a221be05593361acccb99506b", + "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a" + ] + ], + "meta": { "nf-test": "0.8.4", - "nextflow": "24.01.0" + "nextflow": "23.10.1" }, - "timestamp": "2024-03-08T15:59:35.35063" + "timestamp": "2024-03-12T15:15:46.144662" }, - "salmon_index": { + "default options": { "content": [ - "n" + [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" + ], + [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" + ], + [ + "genome_gfp.fasta:md5,e23e302af63736a199985a169fdac055" + ], + [ + "genome_gfp.gtf:md5,c98b12c302f15731bfc36bcf297cfe28" + ], + [ + "genome_gfp.fasta.fai:md5,8fa54c6bd2ea6a369efbb8ab4f30156a" + ], + [ + "genome_gfp.bed:md5,991993ebef1def1d5823632c21177ec3" + ], + [ + "genome_gfp.fasta.sizes:md5,9b755f8f349b14accefb4d859f84de26" + ], + [ + + ], + [ + [ + [ + [ + [ + "chr1.chrom.gz:md5,6c021771fa2b50a86bda7d6155e6db53", + "info.txt:md5,f53b61b7e09c4a2241a23da39499fa34", + "merged_ref_8374379829187813017.fa.gz:md5,d2cc4eb47af667d0fb00a4334bdf0ecb", + "namelist.txt:md5,2d3a23e005f63d34a85297a5a4baf421", + "reflist.txt:md5,a9b00d2e869775c164868f6a6dff8d56", + "scaffolds.txt.gz:md5,f3ed474169b21b408997cad884cf9c4c", + "summary.txt:md5,aaae9ddf8fc62cc2b9f230fa60ed9dbb" + ] + ], + [ + [ + "chr1_index_k13_c12_b1.block:md5,bf872e7d09627b6a4d13fc581d2b6cc8", + "chr1_index_k13_c12_b1.block2.gz:md5,f5c15e773b859516e9f72f73d0be18b4" + ] + ] + ] + ] + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", + "versions.yml:md5,1cd265cb86a23a27f683ffb2459f37f5", + "versions.yml:md5,58fa668eeacb984c10df6f856f2c9291", + "versions.yml:md5,71252f1a221be05593361acccb99506b", + "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a" + ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "24.01.0" + "nextflow": "23.10.1" }, - "timestamp": "2024-03-08T15:59:35.353967" + "timestamp": "2024-03-12T15:11:35.918506" }, - "rsem_index": { + "salmon_index = false": { "content": [ + [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" + ], [ + ], + [ + "genome_gfp.fasta:md5,e23e302af63736a199985a169fdac055" + ], + [ + "genome_gfp.gtf:md5,c98b12c302f15731bfc36bcf297cfe28" + ], + [ + "genome_gfp.fasta.fai:md5,8fa54c6bd2ea6a369efbb8ab4f30156a" + ], + [ + "genome_gfp.bed:md5,991993ebef1def1d5823632c21177ec3" + ], + [ + "genome_gfp.fasta.sizes:md5,9b755f8f349b14accefb4d859f84de26" + ], + [ + + ], + [ + [ + [ + [ + [ + "chr1.chrom.gz:md5,6c021771fa2b50a86bda7d6155e6db53", + "info.txt:md5,717a524a79e9e1330d76bdbd0b0a1ec2", + "merged_ref_8374379829187813017.fa.gz:md5,d2cc4eb47af667d0fb00a4334bdf0ecb", + "namelist.txt:md5,2d3a23e005f63d34a85297a5a4baf421", + "reflist.txt:md5,fdcc6a25fb0f17f94acb74dde8d69179", + "scaffolds.txt.gz:md5,68ceeaa9a7fc724b933e84906f23f9ca", + "summary.txt:md5,f9d0d08aff4947a0df60d5efb4ceac68" + ] + ], + [ + [ + "chr1_index_k13_c12_b1.block:md5,bf872e7d09627b6a4d13fc581d2b6cc8", + "chr1_index_k13_c12_b1.block2.gz:md5,f5c15e773b859516e9f72f73d0be18b4" + ] + ] + ] + ] + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", + "versions.yml:md5,1cd265cb86a23a27f683ffb2459f37f5", + "versions.yml:md5,58fa668eeacb984c10df6f856f2c9291", + "versions.yml:md5,71252f1a221be05593361acccb99506b", + "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a" ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "24.01.0" + "nextflow": "23.10.1" }, - "timestamp": "2024-03-08T15:59:35.462738" + "timestamp": "2024-03-12T15:19:32.573207" }, - "hisat2_index": { + "rsem_index = false": { "content": [ + [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" + ], + [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" + ], + [ + "genome_gfp.fasta:md5,e23e302af63736a199985a169fdac055" + ], + [ + "genome_gfp.gtf:md5,c98b12c302f15731bfc36bcf297cfe28" + ], + [ + "genome_gfp.fasta.fai:md5,8fa54c6bd2ea6a369efbb8ab4f30156a" + ], + [ + "genome_gfp.bed:md5,991993ebef1def1d5823632c21177ec3" + ], + [ + "genome_gfp.fasta.sizes:md5,9b755f8f349b14accefb4d859f84de26" + ], [ + ], + [ + [ + [ + [ + [ + "chr1.chrom.gz:md5,6c021771fa2b50a86bda7d6155e6db53", + "info.txt:md5,d5c613cca3a3388fe8f5cd1639d72657", + "merged_ref_8374379829187813017.fa.gz:md5,d2cc4eb47af667d0fb00a4334bdf0ecb", + "namelist.txt:md5,2d3a23e005f63d34a85297a5a4baf421", + "reflist.txt:md5,d7fdb0ebb82c9ae8a3c08b329ff8608d", + "scaffolds.txt.gz:md5,62d0502dbe487f7a04ca3291212059bd", + "summary.txt:md5,b0b6428be2456827424ad19db46ac708" + ] + ], + [ + [ + "chr1_index_k13_c12_b1.block:md5,bf872e7d09627b6a4d13fc581d2b6cc8", + "chr1_index_k13_c12_b1.block2.gz:md5,f5c15e773b859516e9f72f73d0be18b4" + ] + ] + ] + ] + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", + "versions.yml:md5,1cd265cb86a23a27f683ffb2459f37f5", + "versions.yml:md5,58fa668eeacb984c10df6f856f2c9291", + "versions.yml:md5,71252f1a221be05593361acccb99506b", + "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-03-12T15:18:43.459602" + }, + "skip_psuedo_alignment": { + "content": [ + [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" + ], + [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" + ], + [ + "genome_gfp.fasta:md5,e23e302af63736a199985a169fdac055" + ], + [ + "genome_gfp.gtf:md5,c98b12c302f15731bfc36bcf297cfe28" + ], + [ + "genome_gfp.fasta.fai:md5,8fa54c6bd2ea6a369efbb8ab4f30156a" + ], + [ + "genome_gfp.bed:md5,991993ebef1def1d5823632c21177ec3" + ], + [ + "genome_gfp.fasta.sizes:md5,9b755f8f349b14accefb4d859f84de26" + ], + [ + + ], + [ + [ + [ + [ + [ + "chr1.chrom.gz:md5,6c021771fa2b50a86bda7d6155e6db53", + "info.txt:md5,144d6c03b8399ebad24a733f737a55c5", + "merged_ref_8374379829187813017.fa.gz:md5,d2cc4eb47af667d0fb00a4334bdf0ecb", + "namelist.txt:md5,2d3a23e005f63d34a85297a5a4baf421", + "reflist.txt:md5,25bffd02476a48d84d09e8e0914e5635", + "scaffolds.txt.gz:md5,13eb05034a4772dc660364ff32e74312", + "summary.txt:md5,4c4aab87edcb9cda24452e925a275799" + ] + ], + [ + [ + "chr1_index_k13_c12_b1.block:md5,bf872e7d09627b6a4d13fc581d2b6cc8", + "chr1_index_k13_c12_b1.block2.gz:md5,f5c15e773b859516e9f72f73d0be18b4" + ] + ] + ] + ] + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", + "versions.yml:md5,1cd265cb86a23a27f683ffb2459f37f5", + "versions.yml:md5,58fa668eeacb984c10df6f856f2c9291", + "versions.yml:md5,71252f1a221be05593361acccb99506b", + "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-03-12T15:14:20.813464" + }, + "transcriptome = false": { + "content": [ + "U", + "n", + [ + "genome_gfp.fasta:md5,e23e302af63736a199985a169fdac055" + ], + [ + "genome_gfp.gtf:md5,c98b12c302f15731bfc36bcf297cfe28" + ], + [ + "genome_gfp.fasta.fai:md5,8fa54c6bd2ea6a369efbb8ab4f30156a" + ], + [ + "genome_gfp.bed:md5,991993ebef1def1d5823632c21177ec3" + ], + [ + "genome_gfp.fasta.sizes:md5,9b755f8f349b14accefb4d859f84de26" + ], + [ + + ], + [ + [ + [ + [ + [ + "chr1.chrom.gz:md5,6c021771fa2b50a86bda7d6155e6db53", + "info.txt:md5,d3074fc8de542e000e0f3f8321e37df2", + "merged_ref_8374379829187813017.fa.gz:md5,d2cc4eb47af667d0fb00a4334bdf0ecb", + "namelist.txt:md5,2d3a23e005f63d34a85297a5a4baf421", + "reflist.txt:md5,456cf5fae418c60f713a3fc2f58d1075", + "scaffolds.txt.gz:md5,9fb7dfbb36466da73b57c558012733f1", + "summary.txt:md5,f9417e61ce0c9ef89daee9fd8e576726" + ] + ], + [ + [ + "chr1_index_k13_c12_b1.block:md5,bf872e7d09627b6a4d13fc581d2b6cc8", + "chr1_index_k13_c12_b1.block2.gz:md5,f5c15e773b859516e9f72f73d0be18b4" + ] + ] + ] + ] + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", + "versions.yml:md5,1cd265cb86a23a27f683ffb2459f37f5", + "versions.yml:md5,58fa668eeacb984c10df6f856f2c9291", + "versions.yml:md5,71252f1a221be05593361acccb99506b", + "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", + "versions.yml:md5,918fe0b59c0986eb602ace85841c5ab3" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-03-12T15:17:07.467151" + }, + "skip_pseudoalignment = true": { + "content": [ + [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" + ], + [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" + ], + [ + "genome_gfp.fasta:md5,e23e302af63736a199985a169fdac055" + ], + [ + "genome_gfp.gtf:md5,c98b12c302f15731bfc36bcf297cfe28" + ], + [ + "genome_gfp.fasta.fai:md5,8fa54c6bd2ea6a369efbb8ab4f30156a" + ], + [ + "genome_gfp.bed:md5,991993ebef1def1d5823632c21177ec3" + ], + [ + "genome_gfp.fasta.sizes:md5,9b755f8f349b14accefb4d859f84de26" + ], + [ + + ], + [ + [ + [ + [ + [ + "chr1.chrom.gz:md5,6c021771fa2b50a86bda7d6155e6db53", + "info.txt:md5,8f2d112cb0c1cafffc1ca9c1a3e4d6c1", + "merged_ref_8374379829187813017.fa.gz:md5,d2cc4eb47af667d0fb00a4334bdf0ecb", + "namelist.txt:md5,2d3a23e005f63d34a85297a5a4baf421", + "reflist.txt:md5,025103f4762784aea6cdc4fbecf9c63d", + "scaffolds.txt.gz:md5,5a8b5e6362000796d53229b504c5ab8a", + "summary.txt:md5,f66c84c0153a8f5d5cbe5a49afb63762" + ] + ], + [ + [ + "chr1_index_k13_c12_b1.block:md5,bf872e7d09627b6a4d13fc581d2b6cc8", + "chr1_index_k13_c12_b1.block2.gz:md5,f5c15e773b859516e9f72f73d0be18b4" + ] + ] + ] + ] + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", + "versions.yml:md5,1cd265cb86a23a27f683ffb2459f37f5", + "versions.yml:md5,58fa668eeacb984c10df6f856f2c9291", + "versions.yml:md5,71252f1a221be05593361acccb99506b", + "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-03-12T15:25:40.901471" + }, + "skip_alignment = true": { + "content": [ + [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" + ], + [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" + ], + [ + "genome_gfp.fasta:md5,e23e302af63736a199985a169fdac055" + ], + [ + "genome_gfp.gtf:md5,c98b12c302f15731bfc36bcf297cfe28" + ], + [ + "genome_gfp.fasta.fai:md5,8fa54c6bd2ea6a369efbb8ab4f30156a" + ], + [ + "genome_gfp.bed:md5,991993ebef1def1d5823632c21177ec3" + ], + [ + "genome_gfp.fasta.sizes:md5,9b755f8f349b14accefb4d859f84de26" + ], + [ + + ], + [ + [ + [ + [ + [ + "chr1.chrom.gz:md5,6c021771fa2b50a86bda7d6155e6db53", + "info.txt:md5,80512ff9fb49f838c72841c9fe08f010", + "merged_ref_8374379829187813017.fa.gz:md5,d2cc4eb47af667d0fb00a4334bdf0ecb", + "namelist.txt:md5,2d3a23e005f63d34a85297a5a4baf421", + "reflist.txt:md5,eb91c4a96808b4de6e6c4b05c2ce5f94", + "scaffolds.txt.gz:md5,864ca414fa7f440fa2e9203413c625c4", + "summary.txt:md5,a66691df895d5ca7ca41dbae4a11e6e9" + ] + ], + [ + [ + "chr1_index_k13_c12_b1.block:md5,bf872e7d09627b6a4d13fc581d2b6cc8", + "chr1_index_k13_c12_b1.block2.gz:md5,f5c15e773b859516e9f72f73d0be18b4" + ] + ] + ] + ] + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", + "versions.yml:md5,1cd265cb86a23a27f683ffb2459f37f5", + "versions.yml:md5,58fa668eeacb984c10df6f856f2c9291", + "versions.yml:md5,71252f1a221be05593361acccb99506b", + "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-03-12T15:24:43.257567" + }, + "skip_gtf_filter = true": { + "content": [ + [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" + ], + [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" + ], + [ + "genome_gfp.fasta:md5,e23e302af63736a199985a169fdac055" + ], + [ + "genome_gfp.gtf:md5,5e63cda3dcafc0d6ad0a738133af9d54" + ], + [ + "genome_gfp.fasta.fai:md5,8fa54c6bd2ea6a369efbb8ab4f30156a" + ], + [ + "genome_gfp.bed:md5,991993ebef1def1d5823632c21177ec3" + ], + [ + "genome_gfp.fasta.sizes:md5,9b755f8f349b14accefb4d859f84de26" + ], + [ + + ], + [ + [ + [ + [ + [ + "chr1.chrom.gz:md5,6c021771fa2b50a86bda7d6155e6db53", + "info.txt:md5,2b17c0c0a058751c376c900c879bab28", + "merged_ref_8374379829187813017.fa.gz:md5,d2cc4eb47af667d0fb00a4334bdf0ecb", + "namelist.txt:md5,2d3a23e005f63d34a85297a5a4baf421", + "reflist.txt:md5,061e61f0617276541542a4e456774860", + "scaffolds.txt.gz:md5,43b4b546c9b06d7a009aa4fb1e5fa9c7", + "summary.txt:md5,c7d6b05d6b0087cf724af5859d9fa6ae" + ] + ], + [ + [ + "chr1_index_k13_c12_b1.block:md5,bf872e7d09627b6a4d13fc581d2b6cc8", + "chr1_index_k13_c12_b1.block2.gz:md5,f5c15e773b859516e9f72f73d0be18b4" + ] + ] + ] + ] + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", + "versions.yml:md5,1cd265cb86a23a27f683ffb2459f37f5", + "versions.yml:md5,58fa668eeacb984c10df6f856f2c9291", + "versions.yml:md5,71252f1a221be05593361acccb99506b" ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "24.01.0" + "nextflow": "23.10.1" }, - "timestamp": "2024-03-08T15:59:35.472712" + "timestamp": "2024-03-12T15:23:02.470249" } } \ No newline at end of file From af7401614445da184773b8d97dd7182b6c6179de Mon Sep 17 00:00:00 2001 From: Adam Talbot <12817534+adamrtalbot@users.noreply.github.com> Date: Tue, 12 Mar 2024 16:31:19 +0000 Subject: [PATCH 240/634] CHANGELOG --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8c2fa9b77..bf353e6e1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -37,6 +37,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [PR #1242](https://github.com/nf-core/rnaseq/pull/1242) - Use dupradar from nf-core/modules - [PR #1244](https://github.com/nf-core/rnaseq/pull/1244) - Add gtf2bed tests - [PR #1250](https://github.com/nf-core/rnaseq/pull/1250) - Remove all tags.yml files because the testing system has changed +- [PR #1261](https://github.com/nf-core/rnaseq/pull/1261) - Add more tests for PREPARE_GENOME ### Parameters From 7aeb72d912491ce9afca8888f176ac32551035ff Mon Sep 17 00:00:00 2001 From: Adam Talbot <12817534+adamrtalbot@users.noreply.github.com> Date: Tue, 12 Mar 2024 18:10:31 +0000 Subject: [PATCH 241/634] Remove existing tests that are duplicated by PUBLISH_GENOME tests --- .github/workflows/ci.yml | 7 ------- 1 file changed, 7 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 1e7f0d0ac..fcb53cc37 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -28,9 +28,6 @@ jobs: parameters: - "--skip_qc" - "--skip_trimming" - - "--gtf false" - - "--star_index false" - - "--transcript_fasta false" - "--min_mapped_reads 90" - "--with_umi" - "--with_umi --skip_trimming" @@ -59,7 +56,6 @@ jobs: matrix: parameters: - "--skip_qc" - - "--rsem_index false" steps: - name: Check out pipeline code uses: actions/checkout@v4 @@ -79,7 +75,6 @@ jobs: matrix: parameters: - "--skip_qc" - - "--hisat2_index false" steps: - name: Check out pipeline code uses: actions/checkout@v4 @@ -100,10 +95,8 @@ jobs: parameters: - "--pseudo_aligner salmon --skip_qc" - "--pseudo_aligner salmon --skip_alignment --skip_pseudo_alignment" - - "--pseudo_aligner salmon --salmon_index false --transcript_fasta false" - "--pseudo_aligner kallisto --skip_qc" - "--pseudo_aligner kallisto --skip_alignment --skip_pseudo_alignment" - - "--pseudo_aligner kallisto --kallisto_index false --transcript_fasta false" steps: - name: Check out pipeline code uses: actions/checkout@v4 From 1795f8eeebe80240b6f4d19a12f5d709783c2b5d Mon Sep 17 00:00:00 2001 From: Adam Talbot <12817534+adamrtalbot@users.noreply.github.com> Date: Tue, 12 Mar 2024 18:18:00 +0000 Subject: [PATCH 242/634] Try to fix CI pipeline AGAIN --- .github/workflows/ci.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 1e7f0d0ac..75b7557c6 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -139,7 +139,6 @@ jobs: # Mostly, we define additional 'pipeline' or 'all' tests here files_yaml: | ".": - - .github/workflows/** - nf-test.config - nextflow.config tests: @@ -256,7 +255,7 @@ jobs: if: always() steps: - name: All tests ok - if: ${{ success() }} + if: ${{ !failure() && !cancelled() }} run: exit 0 - name: One or more tests failed if: ${{ contains(needs.*.result, 'failure') }} From dcec9dba623dedb3977a36db594249dec5460f07 Mon Sep 17 00:00:00 2001 From: Adam Talbot <12817534+adamrtalbot@users.noreply.github.com> Date: Tue, 12 Mar 2024 18:25:18 +0000 Subject: [PATCH 243/634] Check for empty list --- .github/workflows/ci.yml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 75b7557c6..229dabbd1 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -250,12 +250,12 @@ jobs: confirm-pass: runs-on: ubuntu-latest - # needs: [test, star_salmon, star_rsem, hisat2, pseudo] - needs: [test] + # needs: + needs: [test, star_salmon, star_rsem, hisat2, pseudo, nf-test-changes, test] if: always() steps: - name: All tests ok - if: ${{ !failure() && !cancelled() }} + if: ${{ success() || needs.nf-test-changes.outputs.changes != '[]' }} run: exit 0 - name: One or more tests failed if: ${{ contains(needs.*.result, 'failure') }} @@ -264,5 +264,6 @@ jobs: - name: debug-print if: always() run: | + echo ${{ needs.nf-test-changes.outputs.changes }} echo "toJSON(needs) = ${{ toJSON(needs) }}" echo "toJSON(needs.*.result) = ${{ toJSON(needs.*.result) }}" From 8789e4fa314a2fc35735036b8a904ec8f3519a3f Mon Sep 17 00:00:00 2001 From: Adam Talbot <12817534+adamrtalbot@users.noreply.github.com> Date: Tue, 12 Mar 2024 18:27:12 +0000 Subject: [PATCH 244/634] Revert needs statement --- .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 229dabbd1..46d5a8959 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -250,8 +250,8 @@ jobs: confirm-pass: runs-on: ubuntu-latest - # needs: - needs: [test, star_salmon, star_rsem, hisat2, pseudo, nf-test-changes, test] + # needs: test, star_salmon, star_rsem, hisat2, pseudo + needs: [nf-test-changes, test] if: always() steps: - name: All tests ok From 21c23e231b6a0bb702e6df7af161798b00fbe0a2 Mon Sep 17 00:00:00 2001 From: Adam Talbot <12817534+adamrtalbot@users.noreply.github.com> Date: Tue, 12 Mar 2024 18:30:16 +0000 Subject: [PATCH 245/634] Trying something else... --- .github/workflows/ci.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 46d5a8959..e8e9d74c1 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -182,7 +182,7 @@ jobs: test: name: ${{ matrix.tags }} ${{ matrix.profile }} NF-${{ matrix.NXF_VER }} needs: [nf-test-changes] - if: needs.nf-test-changes.outputs.changes + if: needs.nf-test-changes.outputs.tags != '[]' runs-on: ubuntu-latest strategy: fail-fast: false @@ -251,11 +251,11 @@ jobs: confirm-pass: runs-on: ubuntu-latest # needs: test, star_salmon, star_rsem, hisat2, pseudo - needs: [nf-test-changes, test] + needs: [test] if: always() steps: - name: All tests ok - if: ${{ success() || needs.nf-test-changes.outputs.changes != '[]' }} + if: ${{ !contains(needs.*.result, 'failure') }} run: exit 0 - name: One or more tests failed if: ${{ contains(needs.*.result, 'failure') }} From 0df628a764bbc889f7ade737278adbbbbb18f001 Mon Sep 17 00:00:00 2001 From: Adam Talbot <12817534+adamrtalbot@users.noreply.github.com> Date: Tue, 12 Mar 2024 18:40:34 +0000 Subject: [PATCH 246/634] Add everything to test dep --- .github/workflows/ci.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index e8e9d74c1..501db5b33 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -250,8 +250,7 @@ jobs: confirm-pass: runs-on: ubuntu-latest - # needs: test, star_salmon, star_rsem, hisat2, pseudo - needs: [test] + needs: [test, star_salmon, star_rsem, hisat2, pseudo] if: always() steps: - name: All tests ok From 2de98543ccddff0ed3c7624a5eb477906b212cad Mon Sep 17 00:00:00 2001 From: Adam Talbot <12817534+adamrtalbot@users.noreply.github.com> Date: Wed, 13 Mar 2024 09:26:36 +0000 Subject: [PATCH 247/634] Fixup: Add GHA files back into include statement of Github workflow change detection --- .github/workflows/ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 501db5b33..98f49207f 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -139,6 +139,7 @@ jobs: # Mostly, we define additional 'pipeline' or 'all' tests here files_yaml: | ".": + - .github/workflows/** - nf-test.config - nextflow.config tests: From 40a64b38a67594650a14eb94120193c7d3065604 Mon Sep 17 00:00:00 2001 From: Harshil Patel Date: Wed, 13 Mar 2024 11:27:22 +0000 Subject: [PATCH 248/634] Add missing software updates to CHANGELOG --- CHANGELOG.md | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 811235113..4607594d8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -43,8 +43,8 @@ Thank you to everyone else that has contributed by reporting bugs, enhancements - [PR #1232](https://github.com/nf-core/rnaseq/pull/1232) - Add nf-test tests to star_genomegenerate_igenomes - [PR #1233](https://github.com/nf-core/rnaseq/pull/1233) - Add nf-test tests to star_align_igenomes - [PR #1234](https://github.com/nf-core/rnaseq/pull/1234) - Use genomecov from nf-core/modules -- [PR #1235](https://github.com/nf-core/rnaseq/pull/1235) - Add nf-test tests to gtf_filter -- [PR #1236](https://github.com/nf-core/rnaseq/pull/1236) - Add nf-test tests to utils_nfcore_rnaseq_pipeline +- [PR #1235](https://github.com/nf-core/rnaseq/pull/1235) - Add nf-test tests to utils_nfcore_rnaseq_pipeline tests +- [PR #1236](https://github.com/nf-core/rnaseq/pull/1236) - Add nf-test tests to gtf_filter - [PR #1237](https://github.com/nf-core/rnaseq/pull/1237) - Fix concurrency error in Github CI workflow - [PR #1238](https://github.com/nf-core/rnaseq/pull/1238) - Add nf-test tests to preprocess_transcripts_fasta_gencode - [PR #1239](https://github.com/nf-core/rnaseq/pull/1239) - Add nf-test tests to align_star @@ -68,14 +68,17 @@ Thank you to everyone else that has contributed by reporting bugs, enhancements ### Software dependencies -| Dependency | Old version | New version | -| ----------- | ----------- | ----------- | -| `bedtools` | 2.30.0 | 2.31.1 | -| `multiqc` | 1.20 | 1.21 | -| `picard` | 3.0.0 | 3.1.1 | -| `samtools` | 1.17 | 1.19.2 | -| `sortmerna` | 4.3.4 | 4.3.6 | -| `umi_tools` | 1.14 | 1.15 | +| Dependency | Old version | New version | +| ----------------------------------- | ----------- | ----------- | +| `bedtools` | 2.30.0 | 2.31.1 | +| `bioconductor-dupradar` | 1.28.0 | 1.32.0 | +| `bioconductor-summarizedexperiment` | 1.24.0 | 1.32.0 | +| `bioconductor-tximeta` | 1.12.0 | 1.20.1 | +| `multiqc` | 1.20 | 1.21 | +| `picard` | 3.0.0 | 3.1.1 | +| `samtools` | 1.17 | 1.19.2 | +| `sortmerna` | 4.3.4 | 4.3.6 | +| `umi_tools` | 1.14 | 1.15 | > **NB:** Dependency has been **updated** if both old and new version information is present. > From 3c6317b32e069069c1456c97de48b92386fd2fd9 Mon Sep 17 00:00:00 2001 From: Harshil Patel Date: Wed, 13 Mar 2024 11:28:31 +0000 Subject: [PATCH 249/634] Move aliased bedtools genomecov selectors to main workflow config --- .../bedtools/genomecov/nextflow.config | 19 ------------------- workflows/rnaseq/nextflow.config | 18 ++++++++++++++++-- 2 files changed, 16 insertions(+), 21 deletions(-) delete mode 100644 modules/nf-core/bedtools/genomecov/nextflow.config diff --git a/modules/nf-core/bedtools/genomecov/nextflow.config b/modules/nf-core/bedtools/genomecov/nextflow.config deleted file mode 100644 index 73571aa8d..000000000 --- a/modules/nf-core/bedtools/genomecov/nextflow.config +++ /dev/null @@ -1,19 +0,0 @@ -if (!params.skip_alignment && !params.skip_bigwig) { - - process { - withName: 'BEDTOOLS_GENOMECOV_FW' { - ext.prefix = { meta.strandedness == 'reverse' ? meta.id + '.reverse' : meta.id + '.forward' } - ext.args = '-split -du -strand + -bg' - publishDir = [ - enabled: false - ] - } - withName: 'BEDTOOLS_GENOMECOV_REV' { - ext.prefix = { meta.strandedness == 'reverse' ? meta.id + '.forward' : meta.id + '.reverse' } - ext.args = '-split -du -strand - -bg' - publishDir = [ - enabled: false - ] - } - } -} diff --git a/workflows/rnaseq/nextflow.config b/workflows/rnaseq/nextflow.config index 8e06b8211..38c67ed8c 100644 --- a/workflows/rnaseq/nextflow.config +++ b/workflows/rnaseq/nextflow.config @@ -1,6 +1,5 @@ includeConfig "../../modules/local/multiqc_custom_biotype/nextflow.config" includeConfig "../../modules/nf-core/bbmap/bbsplit/nextflow.config" -includeConfig "../../modules/nf-core/bedtools/genomecov/nextflow.config" includeConfig "../../modules/nf-core/cat/fastq/nextflow.config" includeConfig "../../modules/nf-core/dupradar/nextflow.config" includeConfig "../../modules/nf-core/multiqc/nextflow.config" @@ -268,9 +267,24 @@ if (!params.skip_alignment) { // // bigWig coverage options // - if (!params.skip_alignment && !params.skip_bigwig) { process { + withName: 'BEDTOOLS_GENOMECOV_FW' { + ext.prefix = { meta.strandedness == 'reverse' ? meta.id + '.reverse' : meta.id + '.forward' } + ext.args = '-split -du -strand + -bg' + publishDir = [ + enabled: false + ] + } + + withName: 'BEDTOOLS_GENOMECOV_REV' { + ext.prefix = { meta.strandedness == 'reverse' ? meta.id + '.forward' : meta.id + '.reverse' } + ext.args = '-split -du -strand - -bg' + publishDir = [ + enabled: false + ] + } + withName: '.*:BEDGRAPH_BEDCLIP_BEDGRAPHTOBIGWIG_FORWARD:UCSC_BEDCLIP' { ext.prefix = { "${meta.id}.clip.forward" } publishDir = [ From 7e06185caabfa6abc00ba714603ed848e94a4b9e Mon Sep 17 00:00:00 2001 From: Harshil Patel Date: Wed, 13 Mar 2024 11:29:48 +0000 Subject: [PATCH 250/634] Syntax updates --- subworkflows/local/prepare_genome/main.nf | 20 +++---- .../local/quantify_pseudo_alignment/main.nf | 56 ++++++++++++------- 2 files changed, 45 insertions(+), 31 deletions(-) diff --git a/subworkflows/local/prepare_genome/main.nf b/subworkflows/local/prepare_genome/main.nf index ba2ee14dc..15baeaf14 100644 --- a/subworkflows/local/prepare_genome/main.nf +++ b/subworkflows/local/prepare_genome/main.nf @@ -135,13 +135,13 @@ workflow PREPARE_GENOME { ch_add_fasta = Channel.value(file(additional_fasta)) } - CUSTOM_CATADDITIONALFASTA( - ch_fasta.combine(ch_gtf).map{fasta, gtf -> [[:], fasta, gtf]}, - ch_add_fasta.map{[[:], it]}, + CUSTOM_CATADDITIONALFASTA ( + ch_fasta.combine(ch_gtf).map { fasta, gtf -> [ [:], fasta, gtf ] }, + ch_add_fasta.map { [ [:], it ] }, biotype ) - ch_fasta = CUSTOM_CATADDITIONALFASTA.out.fasta.map{it[1]}.first() - ch_gtf = CUSTOM_CATADDITIONALFASTA.out.gtf.map{it[1]}.first() + ch_fasta = CUSTOM_CATADDITIONALFASTA.out.fasta.map { it[1] }.first() + ch_gtf = CUSTOM_CATADDITIONALFASTA.out.gtf.map { it[1] }.first() ch_versions = ch_versions.mix(CUSTOM_CATADDITIONALFASTA.out.versions) } @@ -232,7 +232,7 @@ workflow PREPARE_GENOME { if (sortmerna_index) { if (sortmerna_index.endsWith('.tar.gz')) { ch_sortmerna_index = UNTAR_SORTMERNA_INDEX ( [ [:], sortmerna_index ] ).untar.map { it[1] } - ch_versions = ch_versions.mix(UNTAR_SORTMERNA_INDEX.out.versions) + ch_versions = ch_versions.mix(UNTAR_SORTMERNA_INDEX.out.versions) } else { ch_sortmerna_index = Channel.value(file(sortmerna_index)) } @@ -240,12 +240,12 @@ workflow PREPARE_GENOME { ch_sortmerna_fastas = Channel.from(file(sortmerna_fasta_list).readLines()) .map { row -> file(row, checkIfExists: true) } .collect() - .map{ ['rrna_refs', it] } + .map { [ 'rrna_refs', it ] } SORTMERNA_INDEX ( - Channel.of([[],[]]), + Channel.of([ [],[] ]), ch_sortmerna_fastas, - Channel.of([[],[]]) + Channel.of([ [],[] ]) ) ch_sortmerna_index = SORTMERNA_INDEX.out.index.first() ch_versions = ch_versions.mix(SORTMERNA_INDEX.out.versions) @@ -356,7 +356,7 @@ workflow PREPARE_GENOME { } } else { if ('kallisto' in prepare_tool_indices) { - ch_kallisto_index = KALLISTO_INDEX ( ch_transcript_fasta.map{[ [:], it]} ).index + ch_kallisto_index = KALLISTO_INDEX ( ch_transcript_fasta.map { [ [:], it] } ).index ch_versions = ch_versions.mix(KALLISTO_INDEX.out.versions) } } diff --git a/subworkflows/local/quantify_pseudo_alignment/main.nf b/subworkflows/local/quantify_pseudo_alignment/main.nf index 36bab808e..2ad4c8a21 100644 --- a/subworkflows/local/quantify_pseudo_alignment/main.nf +++ b/subworkflows/local/quantify_pseudo_alignment/main.nf @@ -35,12 +35,26 @@ workflow QUANTIFY_PSEUDO_ALIGNMENT { // // NOTE: MultiQC needs Salmon outputs, but Kallisto logs if (pseudo_aligner == 'salmon') { - SALMON_QUANT ( reads, index, gtf, transcript_fasta, alignment_mode, lib_type ) + SALMON_QUANT ( + reads, + index, + gtf, + transcript_fasta, + alignment_mode, + lib_type + ) ch_pseudo_results = SALMON_QUANT.out.results ch_pseudo_multiqc = ch_pseudo_results ch_versions = ch_versions.mix(SALMON_QUANT.out.versions.first()) } else { - KALLISTO_QUANT ( reads, index, gtf, [], kallisto_quant_fraglen, kallisto_quant_fraglen_sd) + KALLISTO_QUANT ( + reads, + index, + gtf, + [], + kallisto_quant_fraglen, + kallisto_quant_fraglen_sd + ) ch_pseudo_results = KALLISTO_QUANT.out.results ch_pseudo_multiqc = KALLISTO_QUANT.out.log ch_versions = ch_versions.mix(KALLISTO_QUANT.out.versions.first()) @@ -48,7 +62,7 @@ workflow QUANTIFY_PSEUDO_ALIGNMENT { CUSTOM_TX2GENE ( gtf.map { [ [:], it ] }, - ch_pseudo_results.collect{it[1]}.map { [ [:], it ] }, + ch_pseudo_results.collect{ it[1] }.map { [ [:], it ] }, pseudo_aligner, gtf_id_attribute, gtf_extra_attribute @@ -56,7 +70,7 @@ workflow QUANTIFY_PSEUDO_ALIGNMENT { ch_versions = ch_versions.mix(CUSTOM_TX2GENE.out.versions) TXIMETA_TXIMPORT ( - ch_pseudo_results.collect{it[1]}.map { [ ['id': 'all_samples'], it ] }, + ch_pseudo_results.collect{ it[1] }.map { [ ['id': 'all_samples'], it ] }, CUSTOM_TX2GENE.out.tx2gene, pseudo_aligner ) @@ -88,25 +102,25 @@ workflow QUANTIFY_PSEUDO_ALIGNMENT { ) emit: - results = ch_pseudo_results // channel: [ val(meta), results_dir ] - multiqc = ch_pseudo_multiqc // channel: [ val(meta), files_for_multiqc ] - - tpm_gene = TXIMETA_TXIMPORT.out.tpm_gene // path *gene_tpm.tsv - counts_gene = TXIMETA_TXIMPORT.out.counts_gene // path *gene_counts.tsv - lengths_gene = TXIMETA_TXIMPORT.out.lengths_gene // path *gene_lengths.tsv - counts_gene_length_scaled = TXIMETA_TXIMPORT.out.counts_gene_length_scaled // path *gene_counts_length_scaled.tsv - counts_gene_scaled = TXIMETA_TXIMPORT.out.counts_gene_scaled // path *gene_counts_scaled.tsv - tpm_transcript = TXIMETA_TXIMPORT.out.tpm_transcript // path *gene_tpm.tsv - counts_transcript = TXIMETA_TXIMPORT.out.counts_transcript // path *transcript_counts.tsv - lengths_transcript = TXIMETA_TXIMPORT.out.lengths_transcript // path *transcript_lengths.tsv - - merged_gene_rds = SE_GENE.out.rds // path: *.rds - merged_gene_rds_length_scaled = SE_GENE_LENGTH_SCALED.out.rds // path: *.rds - merged_gene_rds_scaled = SE_GENE_SCALED.out.rds // path: *.rds + results = ch_pseudo_results // channel: [ val(meta), results_dir ] + multiqc = ch_pseudo_multiqc // channel: [ val(meta), files_for_multiqc ] + + tpm_gene = TXIMETA_TXIMPORT.out.tpm_gene // path: *gene_tpm.tsv + counts_gene = TXIMETA_TXIMPORT.out.counts_gene // path: *gene_counts.tsv + lengths_gene = TXIMETA_TXIMPORT.out.lengths_gene // path: *gene_lengths.tsv + counts_gene_length_scaled = TXIMETA_TXIMPORT.out.counts_gene_length_scaled // path: *gene_counts_length_scaled.tsv + counts_gene_scaled = TXIMETA_TXIMPORT.out.counts_gene_scaled // path: *gene_counts_scaled.tsv + tpm_transcript = TXIMETA_TXIMPORT.out.tpm_transcript // path: *gene_tpm.tsv + counts_transcript = TXIMETA_TXIMPORT.out.counts_transcript // path: *transcript_counts.tsv + lengths_transcript = TXIMETA_TXIMPORT.out.lengths_transcript // path: *transcript_lengths.tsv + + merged_gene_rds = SE_GENE.out.rds // path: *.rds + merged_gene_rds_length_scaled = SE_GENE_LENGTH_SCALED.out.rds // path: *.rds + merged_gene_rds_scaled = SE_GENE_SCALED.out.rds // path: *.rds merged_counts_transcript = TXIMETA_TXIMPORT.out.counts_transcript // path: *.transcript_counts.tsv merged_tpm_transcript = TXIMETA_TXIMPORT.out.tpm_transcript // path: *.transcript_tpm.tsv - merged_transcript_rds = SE_TRANSCRIPT.out.rds // path: *.rds + merged_transcript_rds = SE_TRANSCRIPT.out.rds // path: *.rds - versions = ch_versions // channel: [ versions.yml ] + versions = ch_versions // channel: [ versions.yml ] } From e0607065568a71e27338a2c6eec13ecdaf0fbdee Mon Sep 17 00:00:00 2001 From: Harshil Patel Date: Wed, 13 Mar 2024 11:30:51 +0000 Subject: [PATCH 251/634] Rename checkSamplesAreConsistent to checkSamplesAfterGrouping --- .../utils_nfcore_rnaseq_pipeline/main.nf | 6 +- .../tests/main.function.nf.test | 12 +-- .../tests/main.function.nf.test.snap | 6 +- workflows/rnaseq/main.nf | 75 ++++++++++--------- 4 files changed, 52 insertions(+), 47 deletions(-) diff --git a/subworkflows/local/utils_nfcore_rnaseq_pipeline/main.nf b/subworkflows/local/utils_nfcore_rnaseq_pipeline/main.nf index 1264816a6..e11ed2033 100644 --- a/subworkflows/local/utils_nfcore_rnaseq_pipeline/main.nf +++ b/subworkflows/local/utils_nfcore_rnaseq_pipeline/main.nf @@ -115,6 +115,10 @@ workflow PIPELINE_COMPLETION { imNotification(summary_params, hook_url) } } + + workflow.onError { + log.error "Pipeline failed. Please refer to troubleshooting docs: https://nf-co.re/docs/usage/troubleshooting" + } } /* @@ -126,7 +130,7 @@ workflow PIPELINE_COMPLETION { // // Function to check samples are internally consistent after being grouped // -def checkSamplesAreConsistent(input) { +def checkSamplesAfterGrouping(input) { def (metas, fastqs) = input[1..2] // Check that multiple runs of the same sample are of the same strandedness diff --git a/subworkflows/local/utils_nfcore_rnaseq_pipeline/tests/main.function.nf.test b/subworkflows/local/utils_nfcore_rnaseq_pipeline/tests/main.function.nf.test index 48f2ffd16..3bc86b908 100644 --- a/subworkflows/local/utils_nfcore_rnaseq_pipeline/tests/main.function.nf.test +++ b/subworkflows/local/utils_nfcore_rnaseq_pipeline/tests/main.function.nf.test @@ -3,9 +3,9 @@ nextflow_function { name "Test Functions" script "../main.nf" - test("Test Function checkSamplesAreConsistent success") { + test("Test Function checkSamplesAfterGrouping success") { - function "checkSamplesAreConsistent" + function "checkSamplesAfterGrouping" when { function { @@ -34,9 +34,9 @@ nextflow_function { } - test("Test Function checkSamplesAreConsistent invalid strandedness") { + test("Test Function checkSamplesAfterGrouping invalid strandedness") { - function "checkSamplesAreConsistent" + function "checkSamplesAfterGrouping" when { function { @@ -65,9 +65,9 @@ nextflow_function { } - test("Test Function checkSamplesAreConsistent invalid endedness") { + test("Test Function checkSamplesAfterGrouping invalid endedness") { - function "checkSamplesAreConsistent" + function "checkSamplesAfterGrouping" when { function { diff --git a/subworkflows/local/utils_nfcore_rnaseq_pipeline/tests/main.function.nf.test.snap b/subworkflows/local/utils_nfcore_rnaseq_pipeline/tests/main.function.nf.test.snap index fdba25fac..9eb15b85d 100644 --- a/subworkflows/local/utils_nfcore_rnaseq_pipeline/tests/main.function.nf.test.snap +++ b/subworkflows/local/utils_nfcore_rnaseq_pipeline/tests/main.function.nf.test.snap @@ -63,7 +63,7 @@ }, "timestamp": "2024-03-06T14:33:46.772392" }, - "Test Function checkSamplesAreConsistent invalid strandedness": { + "Test Function checkSamplesAfterGrouping invalid strandedness": { "content": null, "meta": { "nf-test": "0.8.4", @@ -143,7 +143,7 @@ }, "timestamp": "2024-03-06T14:33:43.671826" }, - "Test Function checkSamplesAreConsistent success": { + "Test Function checkSamplesAfterGrouping success": { "content": [ [ { @@ -167,7 +167,7 @@ }, "timestamp": "2024-03-06T14:32:37.450298" }, - "Test Function checkSamplesAreConsistent invalid endedness": { + "Test Function checkSamplesAfterGrouping invalid endedness": { "content": null, "meta": { "nf-test": "0.8.4", diff --git a/workflows/rnaseq/main.nf b/workflows/rnaseq/main.nf index 00a518d29..2627c6f7d 100755 --- a/workflows/rnaseq/main.nf +++ b/workflows/rnaseq/main.nf @@ -20,7 +20,7 @@ include { QUANTIFY_RSEM } from '../../subwor include { QUANTIFY_PSEUDO_ALIGNMENT as QUANTIFY_STAR_SALMON } from '../../subworkflows/local/quantify_pseudo_alignment' include { QUANTIFY_PSEUDO_ALIGNMENT } from '../../subworkflows/local/quantify_pseudo_alignment' -include { checkSamplesAreConsistent } from '../../subworkflows/local/utils_nfcore_rnaseq_pipeline' +include { checkSamplesAfterGrouping } from '../../subworkflows/local/utils_nfcore_rnaseq_pipeline' include { multiqcTsvFromList } from '../../subworkflows/local/utils_nfcore_rnaseq_pipeline' include { getSalmonInferredStrandedness } from '../../subworkflows/local/utils_nfcore_rnaseq_pipeline' include { getStarPercentMapped } from '../../subworkflows/local/utils_nfcore_rnaseq_pipeline' @@ -36,20 +36,20 @@ include { getInferexperimentStrandedness } from '../../subworkflows/local/utils_ // // MODULE: Installed directly from nf-core/modules // -include { CAT_FASTQ } from '../../modules/nf-core/cat/fastq' -include { BEDTOOLS_GENOMECOV as BEDTOOLS_GENOMECOV_FW } from '../../modules/nf-core/bedtools/genomecov' -include { BEDTOOLS_GENOMECOV as BEDTOOLS_GENOMECOV_REV } from '../../modules/nf-core/bedtools/genomecov' -include { BBMAP_BBSPLIT } from '../../modules/nf-core/bbmap/bbsplit' -include { DUPRADAR } from '../../modules/nf-core/dupradar' -include { SAMTOOLS_SORT } from '../../modules/nf-core/samtools/sort' -include { PRESEQ_LCEXTRAP } from '../../modules/nf-core/preseq/lcextrap' -include { QUALIMAP_RNASEQ } from '../../modules/nf-core/qualimap/rnaseq' -include { SORTMERNA } from '../../modules/nf-core/sortmerna' -include { SORTMERNA as SORTMERNA_INDEX } from '../../modules/nf-core/sortmerna' -include { STRINGTIE_STRINGTIE } from '../../modules/nf-core/stringtie/stringtie' -include { SUBREAD_FEATURECOUNTS } from '../../modules/nf-core/subread/featurecounts' -include { MULTIQC } from '../../modules/nf-core/multiqc' -include { UMITOOLS_PREPAREFORRSEM as UMITOOLS_PREPAREFORSALMON } from '../../modules/nf-core/umitools/prepareforrsem' +include { CAT_FASTQ } from '../../modules/nf-core/cat/fastq' +include { BBMAP_BBSPLIT } from '../../modules/nf-core/bbmap/bbsplit' +include { DUPRADAR } from '../../modules/nf-core/dupradar' +include { SAMTOOLS_SORT } from '../../modules/nf-core/samtools/sort' +include { UMITOOLS_PREPAREFORRSEM } from '../../modules/nf-core/umitools/prepareforrsem' +include { PRESEQ_LCEXTRAP } from '../../modules/nf-core/preseq/lcextrap' +include { QUALIMAP_RNASEQ } from '../../modules/nf-core/qualimap/rnaseq' +include { STRINGTIE_STRINGTIE } from '../../modules/nf-core/stringtie/stringtie' +include { SUBREAD_FEATURECOUNTS } from '../../modules/nf-core/subread/featurecounts' +include { MULTIQC } from '../../modules/nf-core/multiqc' +include { SORTMERNA } from '../../modules/nf-core/sortmerna' +include { SORTMERNA as SORTMERNA_INDEX } from '../../modules/nf-core/sortmerna' +include { BEDTOOLS_GENOMECOV as BEDTOOLS_GENOMECOV_FW } from '../../modules/nf-core/bedtools/genomecov' +include { BEDTOOLS_GENOMECOV as BEDTOOLS_GENOMECOV_REV } from '../../modules/nf-core/bedtools/genomecov' // // SUBWORKFLOW: Consisting entirely of nf-core/modules @@ -85,23 +85,23 @@ ch_dummy_file = ch_pca_header_multiqc workflow RNASEQ { take: - ch_samplesheet // channel: path(sample_sheet.csv) - ch_versions // channel: [ path(versions.yml) ] - ch_fasta // channel: path(genome.fasta) - ch_gtf // channel: path(genome.gtf) - ch_fai // channel: path(genome.fai) - ch_chrom_sizes // channel: path(genome.sizes) - ch_gene_bed // channel: path(gene.bed) - ch_transcript_fasta // channel: path(transcript.fasta) - ch_star_index // channel: path(star/index/) - ch_rsem_index // channel: path(rsem/index/) - ch_hisat2_index // channel: path(hisat2/index/) - ch_salmon_index // channel: path(salmon/index/) - ch_kallisto_index // channel: [ meta, path(kallisto/index/) ] - ch_bbsplit_index // channel: path(bbsplit/index/) - ch_sortmerna_index // channel: path(sortmerna/index/) - ch_splicesites // channel: path(genome.splicesites.txt) - make_sortmerna_index // boolean: Whether to create a sortmerna index before running sortmerna + ch_samplesheet // channel: path(sample_sheet.csv) + ch_versions // channel: [ path(versions.yml) ] + ch_fasta // channel: path(genome.fasta) + ch_gtf // channel: path(genome.gtf) + ch_fai // channel: path(genome.fai) + ch_chrom_sizes // channel: path(genome.sizes) + ch_gene_bed // channel: path(gene.bed) + ch_transcript_fasta // channel: path(transcript.fasta) + ch_star_index // channel: path(star/index/) + ch_rsem_index // channel: path(rsem/index/) + ch_hisat2_index // channel: path(hisat2/index/) + ch_salmon_index // channel: path(salmon/index/) + ch_kallisto_index // channel: [ meta, path(kallisto/index/) ] + ch_bbsplit_index // channel: path(bbsplit/index/) + ch_sortmerna_index // channel: path(sortmerna/index/) + ch_splicesites // channel: path(genome.splicesites.txt) + make_sortmerna_index // boolean: Whether to create an index before running sortmerna main: @@ -122,7 +122,7 @@ workflow RNASEQ { } .groupTuple() .map { - checkSamplesAreConsistent(it) + checkSamplesAfterGrouping(it) } .branch { meta, fastqs -> @@ -234,16 +234,17 @@ workflow RNASEQ { ch_ribo_db = file(params.ribo_database_manifest) if (ch_ribo_db.isEmpty()) {exit 1, "File provided with --ribo_database_manifest is empty: ${ch_ribo_db.getName()}!"} - ch_sortmerna_fastas = Channel.from(ch_ribo_db.readLines()) + Channel.from(ch_ribo_db.readLines()) .map { row -> file(row, checkIfExists: true) } .collect() - .map{ ['rrna_refs', it] } + .map { [ 'rrna_refs', it ] } + .set { ch_sortmerna_fastas } if (make_sortmerna_index) { SORTMERNA_INDEX ( - [[],[]], + [ [],[] ], ch_sortmerna_fastas, - [[],[]] + [ [],[] ] ) ch_sortmerna_index = SORTMERNA_INDEX.out.index.first() } From 379decc34f217714e5cb7d519ba74c35b50adb73 Mon Sep 17 00:00:00 2001 From: Harshil Patel Date: Wed, 13 Mar 2024 11:33:25 +0000 Subject: [PATCH 252/634] Update CHANGELOG --- CHANGELOG.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4607594d8..3bd574684 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -58,7 +58,8 @@ Thank you to everyone else that has contributed by reporting bugs, enhancements - [PR #1247](https://github.com/nf-core/rnaseq/pull/1247) - nf-test prepare_genome - [PR #1249](https://github.com/nf-core/rnaseq/pull/1249) - Include nf-tests for rsem_merge_counts module - [PR #1250](https://github.com/nf-core/rnaseq/pull/1250) - Remove all tags.yml files because the testing system has changed -- [PR #1251](https://github.com/nf-core/rnaseq/pull/1251) - Replace deseq2qc paths +- [PR #1251](https://github.com/nf-core/rnaseq/pull/1251) - Replace deseq2_qc paths +- [PR #1265](https://github.com/nf-core/rnaseq/pull/1265) - Small updates noticed during code review ### Parameters From 798acea228c82b005fd12f295b9b1513843f6506 Mon Sep 17 00:00:00 2001 From: Harshil Patel Date: Wed, 13 Mar 2024 11:34:49 +0000 Subject: [PATCH 253/634] Fix pre-commit lint --- .../local/quantify_pseudo_alignment/main.nf | 16 ++++++++-------- workflows/rnaseq/nextflow.config | 2 +- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/subworkflows/local/quantify_pseudo_alignment/main.nf b/subworkflows/local/quantify_pseudo_alignment/main.nf index 2ad4c8a21..1bd422396 100644 --- a/subworkflows/local/quantify_pseudo_alignment/main.nf +++ b/subworkflows/local/quantify_pseudo_alignment/main.nf @@ -41,19 +41,19 @@ workflow QUANTIFY_PSEUDO_ALIGNMENT { gtf, transcript_fasta, alignment_mode, - lib_type + lib_type ) ch_pseudo_results = SALMON_QUANT.out.results ch_pseudo_multiqc = ch_pseudo_results ch_versions = ch_versions.mix(SALMON_QUANT.out.versions.first()) } else { - KALLISTO_QUANT ( - reads, - index, - gtf, - [], - kallisto_quant_fraglen, - kallisto_quant_fraglen_sd + KALLISTO_QUANT ( + reads, + index, + gtf, + [], + kallisto_quant_fraglen, + kallisto_quant_fraglen_sd ) ch_pseudo_results = KALLISTO_QUANT.out.results ch_pseudo_multiqc = KALLISTO_QUANT.out.log diff --git a/workflows/rnaseq/nextflow.config b/workflows/rnaseq/nextflow.config index 38c67ed8c..1c0eb8b69 100644 --- a/workflows/rnaseq/nextflow.config +++ b/workflows/rnaseq/nextflow.config @@ -278,7 +278,7 @@ if (!params.skip_alignment && !params.skip_bigwig) { } withName: 'BEDTOOLS_GENOMECOV_REV' { - ext.prefix = { meta.strandedness == 'reverse' ? meta.id + '.forward' : meta.id + '.reverse' } + ext.prefix = { meta.strandedness == 'reverse' ? meta.id + '.forward' : meta.id + '.reverse' } ext.args = '-split -du -strand - -bg' publishDir = [ enabled: false From f8887de9c529c934878e012d717b54167e975bf4 Mon Sep 17 00:00:00 2001 From: Adam Talbot <12817534+adamrtalbot@users.noreply.github.com> Date: Wed, 13 Mar 2024 11:46:18 +0000 Subject: [PATCH 254/634] Update tests to omit snapshot of variable files --- .../local/prepare_genome/tests/main.nf.test | 40 +- .../prepare_genome/tests/main.nf.test.snap | 948 +++--------------- 2 files changed, 162 insertions(+), 826 deletions(-) diff --git a/subworkflows/local/prepare_genome/tests/main.nf.test b/subworkflows/local/prepare_genome/tests/main.nf.test index 780fd1796..4ecb450b8 100644 --- a/subworkflows/local/prepare_genome/tests/main.nf.test +++ b/subworkflows/local/prepare_genome/tests/main.nf.test @@ -82,7 +82,7 @@ nextflow_workflow { workflow.out.gene_bed, workflow.out.chrom_sizes, workflow.out.splicesites, - workflow.out.bbsplit_index, + // workflow.out.bbsplit_index, workflow.out.sortmerna_index, workflow.out.star_index, workflow.out.rsem_index, @@ -150,7 +150,7 @@ nextflow_workflow { workflow.out.gene_bed, workflow.out.chrom_sizes, workflow.out.splicesites, - workflow.out.bbsplit_index, + // workflow.out.bbsplit_index, workflow.out.sortmerna_index, workflow.out.star_index, workflow.out.rsem_index, @@ -218,7 +218,7 @@ nextflow_workflow { workflow.out.gene_bed, workflow.out.chrom_sizes, workflow.out.splicesites, - workflow.out.bbsplit_index, + // workflow.out.bbsplit_index, workflow.out.sortmerna_index, workflow.out.star_index, workflow.out.rsem_index, @@ -286,7 +286,7 @@ nextflow_workflow { workflow.out.gene_bed, workflow.out.chrom_sizes, workflow.out.splicesites, - workflow.out.bbsplit_index, + // workflow.out.bbsplit_index, workflow.out.sortmerna_index, workflow.out.star_index, workflow.out.rsem_index, @@ -354,7 +354,7 @@ nextflow_workflow { workflow.out.gene_bed, workflow.out.chrom_sizes, workflow.out.splicesites, - workflow.out.bbsplit_index, + // workflow.out.bbsplit_index, workflow.out.sortmerna_index, workflow.out.star_index, workflow.out.rsem_index, @@ -422,7 +422,7 @@ nextflow_workflow { workflow.out.gene_bed, workflow.out.chrom_sizes, workflow.out.splicesites, - workflow.out.bbsplit_index, + // workflow.out.bbsplit_index, workflow.out.sortmerna_index, workflow.out.star_index, workflow.out.rsem_index, @@ -490,7 +490,7 @@ nextflow_workflow { workflow.out.gene_bed, workflow.out.chrom_sizes, workflow.out.splicesites, - workflow.out.bbsplit_index, + // workflow.out.bbsplit_index, workflow.out.sortmerna_index, workflow.out.star_index, workflow.out.rsem_index, @@ -558,7 +558,7 @@ nextflow_workflow { workflow.out.gene_bed, workflow.out.chrom_sizes, workflow.out.splicesites, - workflow.out.bbsplit_index, + // workflow.out.bbsplit_index, workflow.out.sortmerna_index, workflow.out.star_index, workflow.out.rsem_index, @@ -626,7 +626,7 @@ nextflow_workflow { workflow.out.gene_bed, workflow.out.chrom_sizes, workflow.out.splicesites, - workflow.out.bbsplit_index, + // workflow.out.bbsplit_index, workflow.out.sortmerna_index, workflow.out.star_index, workflow.out.rsem_index, @@ -694,7 +694,7 @@ nextflow_workflow { workflow.out.gene_bed, workflow.out.chrom_sizes, workflow.out.splicesites, - workflow.out.bbsplit_index, + // workflow.out.bbsplit_index, workflow.out.sortmerna_index, workflow.out.star_index, workflow.out.rsem_index, @@ -762,7 +762,7 @@ nextflow_workflow { workflow.out.gene_bed, workflow.out.chrom_sizes, workflow.out.splicesites, - workflow.out.bbsplit_index, + // workflow.out.bbsplit_index, workflow.out.sortmerna_index, workflow.out.star_index, workflow.out.rsem_index, @@ -830,7 +830,7 @@ nextflow_workflow { workflow.out.gene_bed, workflow.out.chrom_sizes, workflow.out.splicesites, - workflow.out.bbsplit_index, + // workflow.out.bbsplit_index, workflow.out.sortmerna_index, workflow.out.star_index, workflow.out.rsem_index, @@ -898,7 +898,7 @@ nextflow_workflow { workflow.out.gene_bed, workflow.out.chrom_sizes, workflow.out.splicesites, - workflow.out.bbsplit_index, + // workflow.out.bbsplit_index, workflow.out.sortmerna_index, workflow.out.star_index, workflow.out.rsem_index, @@ -965,7 +965,7 @@ nextflow_workflow { workflow.out.gene_bed, workflow.out.chrom_sizes, workflow.out.splicesites, - workflow.out.bbsplit_index, + // workflow.out.bbsplit_index, workflow.out.sortmerna_index, workflow.out.star_index, workflow.out.rsem_index, @@ -1033,7 +1033,7 @@ nextflow_workflow { workflow.out.gene_bed, workflow.out.chrom_sizes, workflow.out.splicesites, - workflow.out.bbsplit_index, + // workflow.out.bbsplit_index, workflow.out.sortmerna_index, workflow.out.star_index, workflow.out.rsem_index, @@ -1101,7 +1101,7 @@ nextflow_workflow { workflow.out.gene_bed, workflow.out.chrom_sizes, workflow.out.splicesites, - workflow.out.bbsplit_index, + // workflow.out.bbsplit_index, workflow.out.sortmerna_index, workflow.out.star_index, workflow.out.rsem_index, @@ -1169,7 +1169,7 @@ nextflow_workflow { workflow.out.gene_bed, workflow.out.chrom_sizes, workflow.out.splicesites, - workflow.out.bbsplit_index, + // workflow.out.bbsplit_index, workflow.out.sortmerna_index, workflow.out.star_index, workflow.out.rsem_index, @@ -1237,7 +1237,7 @@ nextflow_workflow { workflow.out.gene_bed, workflow.out.chrom_sizes, workflow.out.splicesites, - workflow.out.bbsplit_index, + // workflow.out.bbsplit_index, workflow.out.sortmerna_index, workflow.out.star_index, workflow.out.rsem_index, @@ -1305,7 +1305,7 @@ nextflow_workflow { workflow.out.gene_bed, workflow.out.chrom_sizes, workflow.out.splicesites, - workflow.out.bbsplit_index, + // workflow.out.bbsplit_index, workflow.out.sortmerna_index, workflow.out.star_index, workflow.out.rsem_index, @@ -1373,7 +1373,7 @@ nextflow_workflow { workflow.out.gene_bed, workflow.out.chrom_sizes, workflow.out.splicesites, - workflow.out.bbsplit_index, + // workflow.out.bbsplit_index, workflow.out.sortmerna_index, workflow.out.star_index, workflow.out.rsem_index, diff --git a/subworkflows/local/prepare_genome/tests/main.nf.test.snap b/subworkflows/local/prepare_genome/tests/main.nf.test.snap index 9dbf2869a..e00381265 100644 --- a/subworkflows/local/prepare_genome/tests/main.nf.test.snap +++ b/subworkflows/local/prepare_genome/tests/main.nf.test.snap @@ -22,47 +22,12 @@ [ "genome_gfp.fasta.sizes:md5,9b755f8f349b14accefb4d859f84de26" ], - [ - - ], - [ - [ - [ - [ - [ - "chr1.chrom.gz:md5,6c021771fa2b50a86bda7d6155e6db53", - "info.txt:md5,85ec90d24ffc18174e4e3ede54251ec3", - "merged_ref_8374379829187813017.fa.gz:md5,d2cc4eb47af667d0fb00a4334bdf0ecb", - "namelist.txt:md5,2d3a23e005f63d34a85297a5a4baf421", - "reflist.txt:md5,6450b0e7b5d010ebb7e5f65eb6871f61", - "scaffolds.txt.gz:md5,2c0b787b705a8d05cc1b307d4502381a", - "summary.txt:md5,d36ee40f8200aaa7d8fc8fe7123bda44" - ] - ], - [ - [ - "chr1_index_k13_c12_b1.block:md5,bf872e7d09627b6a4d13fc581d2b6cc8", - "chr1_index_k13_c12_b1.block2.gz:md5,f5c15e773b859516e9f72f73d0be18b4" - ] - ] - ] - ] - ], - [ - - ], - [ - - ], - [ - - ], - [ - - ], - [ - - ], + [], + [], + [], + [], + [], + [], [ "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", "versions.yml:md5,1cd265cb86a23a27f683ffb2459f37f5", @@ -76,16 +41,14 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-03-12T15:21:16.493446" + "timestamp": "2024-03-13T11:39:26.998916" }, "hisat2_index = false": { "content": [ [ "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" ], - [ - - ], + [], [ "genome_gfp.fasta:md5,e23e302af63736a199985a169fdac055" ], @@ -101,47 +64,12 @@ [ "genome_gfp.fasta.sizes:md5,9b755f8f349b14accefb4d859f84de26" ], - [ - - ], - [ - [ - [ - [ - [ - "chr1.chrom.gz:md5,6c021771fa2b50a86bda7d6155e6db53", - "info.txt:md5,08f56968686cad3ebe93fbdb5da4249e", - "merged_ref_8374379829187813017.fa.gz:md5,d2cc4eb47af667d0fb00a4334bdf0ecb", - "namelist.txt:md5,2d3a23e005f63d34a85297a5a4baf421", - "reflist.txt:md5,a6b119da9f9c6b6e64cde6f82bbfee87", - "scaffolds.txt.gz:md5,cb9e06f0b4362fd86bf77c36854a808a", - "summary.txt:md5,ef9d0b633aa7467eb56f808d84040a70" - ] - ], - [ - [ - "chr1_index_k13_c12_b1.block:md5,bf872e7d09627b6a4d13fc581d2b6cc8", - "chr1_index_k13_c12_b1.block2.gz:md5,f5c15e773b859516e9f72f73d0be18b4" - ] - ] - ] - ] - ], - [ - - ], - [ - - ], - [ - - ], - [ - - ], - [ - - ], + [], + [], + [], + [], + [], + [], [ "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", "versions.yml:md5,1cd265cb86a23a27f683ffb2459f37f5", @@ -154,7 +82,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-03-12T15:20:22.232591" + "timestamp": "2024-03-13T11:38:55.160854" }, "featurecounts_group_type = 'gene_type'": { "content": [ @@ -179,47 +107,12 @@ [ "genome_gfp.fasta.sizes:md5,9b755f8f349b14accefb4d859f84de26" ], - [ - - ], - [ - [ - [ - [ - [ - "chr1.chrom.gz:md5,6c021771fa2b50a86bda7d6155e6db53", - "info.txt:md5,1491003ee5098cd2b485984457479d82", - "merged_ref_8374379829187813017.fa.gz:md5,d2cc4eb47af667d0fb00a4334bdf0ecb", - "namelist.txt:md5,2d3a23e005f63d34a85297a5a4baf421", - "reflist.txt:md5,e8c89b3c1d46e3a2af22aaa68b8d6f1e", - "scaffolds.txt.gz:md5,3ee84b1ed3ba994c790598092f334fb9", - "summary.txt:md5,c70aa2ebd776e93126fdb44ba3a4b5e2" - ] - ], - [ - [ - "chr1_index_k13_c12_b1.block:md5,bf872e7d09627b6a4d13fc581d2b6cc8", - "chr1_index_k13_c12_b1.block2.gz:md5,f5c15e773b859516e9f72f73d0be18b4" - ] - ] - ] - ] - ], - [ - - ], - [ - - ], - [ - - ], - [ - - ], - [ - - ], + [], + [], + [], + [], + [], + [], [ "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", "versions.yml:md5,1cd265cb86a23a27f683ffb2459f37f5", @@ -232,7 +125,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-03-12T15:22:10.750628" + "timestamp": "2024-03-13T11:39:58.190328" }, "skip_gtf_filter": { "content": [ @@ -257,47 +150,12 @@ [ "genome_gfp.fasta.sizes:md5,9b755f8f349b14accefb4d859f84de26" ], - [ - - ], - [ - [ - [ - [ - [ - "chr1.chrom.gz:md5,6c021771fa2b50a86bda7d6155e6db53", - "info.txt:md5,d03ec3f27befb4e06129a2c11bef1900", - "merged_ref_8374379829187813017.fa.gz:md5,d2cc4eb47af667d0fb00a4334bdf0ecb", - "namelist.txt:md5,2d3a23e005f63d34a85297a5a4baf421", - "reflist.txt:md5,02fcff3f8208b5878176d1a99b6aca82", - "scaffolds.txt.gz:md5,a5354aef1f0ae7329cf878d363d375f3", - "summary.txt:md5,afcdc7852872772d8c772682cc16d084" - ] - ], - [ - [ - "chr1_index_k13_c12_b1.block:md5,bf872e7d09627b6a4d13fc581d2b6cc8", - "chr1_index_k13_c12_b1.block2.gz:md5,f5c15e773b859516e9f72f73d0be18b4" - ] - ] - ] - ] - ], - [ - - ], - [ - - ], - [ - - ], - [ - - ], - [ - - ], + [], + [], + [], + [], + [], + [], [ "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", "versions.yml:md5,1cd265cb86a23a27f683ffb2459f37f5", @@ -309,7 +167,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-03-12T15:12:41.465629" + "timestamp": "2024-03-13T11:33:22.688771" }, "gtf = false": { "content": [ @@ -334,47 +192,12 @@ [ "genome_gfp.fasta.sizes:md5,9b755f8f349b14accefb4d859f84de26" ], - [ - - ], - [ - [ - [ - [ - [ - "chr1.chrom.gz:md5,6c021771fa2b50a86bda7d6155e6db53", - "info.txt:md5,39bd42b860cf2ae6e9296fd8bbc99d50", - "merged_ref_8374379829187813017.fa.gz:md5,d2cc4eb47af667d0fb00a4334bdf0ecb", - "namelist.txt:md5,2d3a23e005f63d34a85297a5a4baf421", - "reflist.txt:md5,162ca746a092caf7c96b0f26ad10b473", - "scaffolds.txt.gz:md5,2787ce465d7bb72b2b25368a762c75d9", - "summary.txt:md5,235eb047a28998f94944da751a4b39f5" - ] - ], - [ - [ - "chr1_index_k13_c12_b1.block:md5,bf872e7d09627b6a4d13fc581d2b6cc8", - "chr1_index_k13_c12_b1.block2.gz:md5,f5c15e773b859516e9f72f73d0be18b4" - ] - ] - ] - ] - ], - [ - - ], - [ - - ], - [ - - ], - [ - - ], - [ - - ], + [], + [], + [], + [], + [], + [], [ "versions.yml:md5,0a23f0be65eb55b48ae71fe6e69a25a9", "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", @@ -389,7 +212,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-03-12T15:15:05.038" + "timestamp": "2024-03-13T11:35:18.49994" }, "gfp = false": { "content": [ @@ -410,47 +233,12 @@ [ "genome.fasta.sizes:md5,29218009212157c49dbc6596621ec780" ], - [ - - ], - [ - [ - [ - [ - [ - "chr1.chrom.gz:md5,f13e8a518175502a7080e4faa6e979d7", - "info.txt:md5,d225c9d34d772032f75888b3daa47786", - "merged_ref_8374379829187813017.fa.gz:md5,b8b1bd9eccad6ef6bab0afbf9cef7652", - "namelist.txt:md5,2d3a23e005f63d34a85297a5a4baf421", - "reflist.txt:md5,27662af90e020d3b7bf3626ffd7dc3da", - "scaffolds.txt.gz:md5,755ecf9c39455ed1ee46181810d4df54", - "summary.txt:md5,95abd980de55ca6f90e3bf0efc47d638" - ] - ], - [ - [ - "chr1_index_k13_c12_b1.block:md5,ef41bb3e410ac9c8d8fa64642ab21da2", - "chr1_index_k13_c12_b1.block2.gz:md5,63c9bad0f53336d948293fb145e42e8c" - ] - ] - ] - ] - ], - [ - - ], - [ - - ], - [ - - ], - [ - - ], - [ - - ], + [], + [], + [], + [], + [], + [], [ "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", "versions.yml:md5,58fa668eeacb984c10df6f856f2c9291", @@ -462,7 +250,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-03-12T15:16:21.035673" + "timestamp": "2024-03-13T11:36:15.643314" }, "skip_bbsplit": { "content": [ @@ -487,27 +275,12 @@ [ "genome_gfp.fasta.sizes:md5,9b755f8f349b14accefb4d859f84de26" ], - [ - - ], - [ - - ], - [ - - ], - [ - - ], - [ - - ], - [ - - ], - [ - - ], + [], + [], + [], + [], + [], + [], [ "versions.yml:md5,1cd265cb86a23a27f683ffb2459f37f5", "versions.yml:md5,58fa668eeacb984c10df6f856f2c9291", @@ -519,7 +292,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-03-12T15:13:05.995053" + "timestamp": "2024-03-13T11:12:46.345567" }, "skip_bbsplit = true": { "content": [ @@ -544,27 +317,12 @@ [ "genome_gfp.fasta.sizes:md5,9b755f8f349b14accefb4d859f84de26" ], - [ - - ], - [ - - ], - [ - - ], - [ - - ], - [ - - ], - [ - - ], - [ - - ], + [], + [], + [], + [], + [], + [], [ "versions.yml:md5,1cd265cb86a23a27f683ffb2459f37f5", "versions.yml:md5,58fa668eeacb984c10df6f856f2c9291", @@ -576,7 +334,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-03-12T15:23:48.042327" + "timestamp": "2024-03-13T11:23:38.303812" }, "with bed": { "content": [ @@ -601,47 +359,12 @@ [ "genome_gfp.fasta.sizes:md5,9b755f8f349b14accefb4d859f84de26" ], - [ - - ], - [ - [ - [ - [ - [ - "chr1.chrom.gz:md5,6c021771fa2b50a86bda7d6155e6db53", - "info.txt:md5,11927943cf09a36345b939575a745906", - "merged_ref_8374379829187813017.fa.gz:md5,d2cc4eb47af667d0fb00a4334bdf0ecb", - "namelist.txt:md5,2d3a23e005f63d34a85297a5a4baf421", - "reflist.txt:md5,b855cbcf1e3b688dbb65e205e0267f9e", - "scaffolds.txt.gz:md5,8776db261a14d046ed3c022930699649", - "summary.txt:md5,00a93fad4ddabcf81d2bec13050012fe" - ] - ], - [ - [ - "chr1_index_k13_c12_b1.block:md5,bf872e7d09627b6a4d13fc581d2b6cc8", - "chr1_index_k13_c12_b1.block2.gz:md5,f5c15e773b859516e9f72f73d0be18b4" - ] - ] - ] - ] - ], - [ - - ], - [ - - ], - [ - - ], - [ - - ], - [ - - ], + [], + [], + [], + [], + [], + [], [ "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", "versions.yml:md5,1cd265cb86a23a27f683ffb2459f37f5", @@ -653,7 +376,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-03-12T15:17:55.274869" + "timestamp": "2024-03-13T11:37:21.338219" }, "skip_alignment": { "content": [ @@ -678,47 +401,12 @@ [ "genome_gfp.fasta.sizes:md5,9b755f8f349b14accefb4d859f84de26" ], - [ - - ], - [ - [ - [ - [ - [ - "chr1.chrom.gz:md5,6c021771fa2b50a86bda7d6155e6db53", - "info.txt:md5,090c3a2263ae90eaea22d858afda3512", - "merged_ref_8374379829187813017.fa.gz:md5,d2cc4eb47af667d0fb00a4334bdf0ecb", - "namelist.txt:md5,2d3a23e005f63d34a85297a5a4baf421", - "reflist.txt:md5,66fd4adf802bd3475537f8a788a3a042", - "scaffolds.txt.gz:md5,faae7b3362c1c5e21185ba218399ab5d", - "summary.txt:md5,7794c1fb64164d892731177ce53fcf54" - ] - ], - [ - [ - "chr1_index_k13_c12_b1.block:md5,bf872e7d09627b6a4d13fc581d2b6cc8", - "chr1_index_k13_c12_b1.block2.gz:md5,f5c15e773b859516e9f72f73d0be18b4" - ] - ] - ] - ] - ], - [ - - ], - [ - - ], - [ - - ], - [ - - ], - [ - - ], + [], + [], + [], + [], + [], + [], [ "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", "versions.yml:md5,1cd265cb86a23a27f683ffb2459f37f5", @@ -731,7 +419,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-03-12T15:13:44.580105" + "timestamp": "2024-03-13T11:34:12.785475" }, "gencode = false": { "content": [ @@ -756,47 +444,12 @@ [ "genome_gfp.fasta.sizes:md5,9b755f8f349b14accefb4d859f84de26" ], - [ - - ], - [ - [ - [ - [ - [ - "chr1.chrom.gz:md5,6c021771fa2b50a86bda7d6155e6db53", - "info.txt:md5,0694be7e35f2ab7eaa9cf63ec1e851d2", - "merged_ref_8374379829187813017.fa.gz:md5,d2cc4eb47af667d0fb00a4334bdf0ecb", - "namelist.txt:md5,2d3a23e005f63d34a85297a5a4baf421", - "reflist.txt:md5,3a969da349f755a9ac5ef183c943a56e", - "scaffolds.txt.gz:md5,413b8ea8c813049d987f114e9c0f4dff", - "summary.txt:md5,5f87cb937f49a30ff2c2ef79c7cf137a" - ] - ], - [ - [ - "chr1_index_k13_c12_b1.block:md5,bf872e7d09627b6a4d13fc581d2b6cc8", - "chr1_index_k13_c12_b1.block2.gz:md5,f5c15e773b859516e9f72f73d0be18b4" - ] - ] - ] - ] - ], - [ - - ], - [ - - ], - [ - - ], - [ - - ], - [ - - ], + [], + [], + [], + [], + [], + [], [ "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", "versions.yml:md5,1cd265cb86a23a27f683ffb2459f37f5", @@ -809,7 +462,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-03-12T15:12:08.702439" + "timestamp": "2024-03-13T11:32:54.452919" }, "gff = false": { "content": [ @@ -830,47 +483,12 @@ [ "genome_gfp.fasta.sizes:md5,9b755f8f349b14accefb4d859f84de26" ], - [ - - ], - [ - [ - [ - [ - [ - "chr1.chrom.gz:md5,6c021771fa2b50a86bda7d6155e6db53", - "info.txt:md5,0c510f3eac791c6292e3fa6a012cd8c1", - "merged_ref_8374379829187813017.fa.gz:md5,d2cc4eb47af667d0fb00a4334bdf0ecb", - "namelist.txt:md5,2d3a23e005f63d34a85297a5a4baf421", - "reflist.txt:md5,cce830133212071b99fb0dd3e9650381", - "scaffolds.txt.gz:md5,c11ae08ed6ab86ea33ff6fa54e90e4c4", - "summary.txt:md5,3723e9062c0eadc52700dca088da52c4" - ] - ], - [ - [ - "chr1_index_k13_c12_b1.block:md5,bf872e7d09627b6a4d13fc581d2b6cc8", - "chr1_index_k13_c12_b1.block2.gz:md5,f5c15e773b859516e9f72f73d0be18b4" - ] - ] - ] - ] - ], - [ - - ], - [ - - ], - [ - - ], - [ - - ], - [ - - ], + [], + [], + [], + [], + [], + [], [ "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", "versions.yml:md5,1cd265cb86a23a27f683ffb2459f37f5", @@ -883,7 +501,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-03-12T15:15:46.144662" + "timestamp": "2024-03-13T11:35:50.527041" }, "default options": { "content": [ @@ -908,47 +526,12 @@ [ "genome_gfp.fasta.sizes:md5,9b755f8f349b14accefb4d859f84de26" ], - [ - - ], - [ - [ - [ - [ - [ - "chr1.chrom.gz:md5,6c021771fa2b50a86bda7d6155e6db53", - "info.txt:md5,f53b61b7e09c4a2241a23da39499fa34", - "merged_ref_8374379829187813017.fa.gz:md5,d2cc4eb47af667d0fb00a4334bdf0ecb", - "namelist.txt:md5,2d3a23e005f63d34a85297a5a4baf421", - "reflist.txt:md5,a9b00d2e869775c164868f6a6dff8d56", - "scaffolds.txt.gz:md5,f3ed474169b21b408997cad884cf9c4c", - "summary.txt:md5,aaae9ddf8fc62cc2b9f230fa60ed9dbb" - ] - ], - [ - [ - "chr1_index_k13_c12_b1.block:md5,bf872e7d09627b6a4d13fc581d2b6cc8", - "chr1_index_k13_c12_b1.block2.gz:md5,f5c15e773b859516e9f72f73d0be18b4" - ] - ] - ] - ] - ], - [ - - ], - [ - - ], - [ - - ], - [ - - ], - [ - - ], + [], + [], + [], + [], + [], + [], [ "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", "versions.yml:md5,1cd265cb86a23a27f683ffb2459f37f5", @@ -961,16 +544,14 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-03-12T15:11:35.918506" + "timestamp": "2024-03-13T11:32:22.525706" }, "salmon_index = false": { "content": [ [ "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" ], - [ - - ], + [], [ "genome_gfp.fasta:md5,e23e302af63736a199985a169fdac055" ], @@ -986,47 +567,12 @@ [ "genome_gfp.fasta.sizes:md5,9b755f8f349b14accefb4d859f84de26" ], - [ - - ], - [ - [ - [ - [ - [ - "chr1.chrom.gz:md5,6c021771fa2b50a86bda7d6155e6db53", - "info.txt:md5,717a524a79e9e1330d76bdbd0b0a1ec2", - "merged_ref_8374379829187813017.fa.gz:md5,d2cc4eb47af667d0fb00a4334bdf0ecb", - "namelist.txt:md5,2d3a23e005f63d34a85297a5a4baf421", - "reflist.txt:md5,fdcc6a25fb0f17f94acb74dde8d69179", - "scaffolds.txt.gz:md5,68ceeaa9a7fc724b933e84906f23f9ca", - "summary.txt:md5,f9d0d08aff4947a0df60d5efb4ceac68" - ] - ], - [ - [ - "chr1_index_k13_c12_b1.block:md5,bf872e7d09627b6a4d13fc581d2b6cc8", - "chr1_index_k13_c12_b1.block2.gz:md5,f5c15e773b859516e9f72f73d0be18b4" - ] - ] - ] - ] - ], - [ - - ], - [ - - ], - [ - - ], - [ - - ], - [ - - ], + [], + [], + [], + [], + [], + [], [ "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", "versions.yml:md5,1cd265cb86a23a27f683ffb2459f37f5", @@ -1039,7 +585,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-03-12T15:19:32.573207" + "timestamp": "2024-03-13T11:38:24.083134" }, "rsem_index = false": { "content": [ @@ -1064,47 +610,12 @@ [ "genome_gfp.fasta.sizes:md5,9b755f8f349b14accefb4d859f84de26" ], - [ - - ], - [ - [ - [ - [ - [ - "chr1.chrom.gz:md5,6c021771fa2b50a86bda7d6155e6db53", - "info.txt:md5,d5c613cca3a3388fe8f5cd1639d72657", - "merged_ref_8374379829187813017.fa.gz:md5,d2cc4eb47af667d0fb00a4334bdf0ecb", - "namelist.txt:md5,2d3a23e005f63d34a85297a5a4baf421", - "reflist.txt:md5,d7fdb0ebb82c9ae8a3c08b329ff8608d", - "scaffolds.txt.gz:md5,62d0502dbe487f7a04ca3291212059bd", - "summary.txt:md5,b0b6428be2456827424ad19db46ac708" - ] - ], - [ - [ - "chr1_index_k13_c12_b1.block:md5,bf872e7d09627b6a4d13fc581d2b6cc8", - "chr1_index_k13_c12_b1.block2.gz:md5,f5c15e773b859516e9f72f73d0be18b4" - ] - ] - ] - ] - ], - [ - - ], - [ - - ], - [ - - ], - [ - - ], - [ - - ], + [], + [], + [], + [], + [], + [], [ "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", "versions.yml:md5,1cd265cb86a23a27f683ffb2459f37f5", @@ -1117,7 +628,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-03-12T15:18:43.459602" + "timestamp": "2024-03-13T11:37:52.068391" }, "skip_psuedo_alignment": { "content": [ @@ -1142,47 +653,12 @@ [ "genome_gfp.fasta.sizes:md5,9b755f8f349b14accefb4d859f84de26" ], - [ - - ], - [ - [ - [ - [ - [ - "chr1.chrom.gz:md5,6c021771fa2b50a86bda7d6155e6db53", - "info.txt:md5,144d6c03b8399ebad24a733f737a55c5", - "merged_ref_8374379829187813017.fa.gz:md5,d2cc4eb47af667d0fb00a4334bdf0ecb", - "namelist.txt:md5,2d3a23e005f63d34a85297a5a4baf421", - "reflist.txt:md5,25bffd02476a48d84d09e8e0914e5635", - "scaffolds.txt.gz:md5,13eb05034a4772dc660364ff32e74312", - "summary.txt:md5,4c4aab87edcb9cda24452e925a275799" - ] - ], - [ - [ - "chr1_index_k13_c12_b1.block:md5,bf872e7d09627b6a4d13fc581d2b6cc8", - "chr1_index_k13_c12_b1.block2.gz:md5,f5c15e773b859516e9f72f73d0be18b4" - ] - ] - ] - ] - ], - [ - - ], - [ - - ], - [ - - ], - [ - - ], - [ - - ], + [], + [], + [], + [], + [], + [], [ "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", "versions.yml:md5,1cd265cb86a23a27f683ffb2459f37f5", @@ -1195,7 +671,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-03-12T15:14:20.813464" + "timestamp": "2024-03-13T11:34:43.261537" }, "transcriptome = false": { "content": [ @@ -1216,47 +692,12 @@ [ "genome_gfp.fasta.sizes:md5,9b755f8f349b14accefb4d859f84de26" ], - [ - - ], - [ - [ - [ - [ - [ - "chr1.chrom.gz:md5,6c021771fa2b50a86bda7d6155e6db53", - "info.txt:md5,d3074fc8de542e000e0f3f8321e37df2", - "merged_ref_8374379829187813017.fa.gz:md5,d2cc4eb47af667d0fb00a4334bdf0ecb", - "namelist.txt:md5,2d3a23e005f63d34a85297a5a4baf421", - "reflist.txt:md5,456cf5fae418c60f713a3fc2f58d1075", - "scaffolds.txt.gz:md5,9fb7dfbb36466da73b57c558012733f1", - "summary.txt:md5,f9417e61ce0c9ef89daee9fd8e576726" - ] - ], - [ - [ - "chr1_index_k13_c12_b1.block:md5,bf872e7d09627b6a4d13fc581d2b6cc8", - "chr1_index_k13_c12_b1.block2.gz:md5,f5c15e773b859516e9f72f73d0be18b4" - ] - ] - ] - ] - ], - [ - - ], - [ - - ], - [ - - ], - [ - - ], - [ - - ], + [], + [], + [], + [], + [], + [], [ "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", "versions.yml:md5,1cd265cb86a23a27f683ffb2459f37f5", @@ -1270,7 +711,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-03-12T15:17:07.467151" + "timestamp": "2024-03-13T11:36:49.613539" }, "skip_pseudoalignment = true": { "content": [ @@ -1295,47 +736,12 @@ [ "genome_gfp.fasta.sizes:md5,9b755f8f349b14accefb4d859f84de26" ], - [ - - ], - [ - [ - [ - [ - [ - "chr1.chrom.gz:md5,6c021771fa2b50a86bda7d6155e6db53", - "info.txt:md5,8f2d112cb0c1cafffc1ca9c1a3e4d6c1", - "merged_ref_8374379829187813017.fa.gz:md5,d2cc4eb47af667d0fb00a4334bdf0ecb", - "namelist.txt:md5,2d3a23e005f63d34a85297a5a4baf421", - "reflist.txt:md5,025103f4762784aea6cdc4fbecf9c63d", - "scaffolds.txt.gz:md5,5a8b5e6362000796d53229b504c5ab8a", - "summary.txt:md5,f66c84c0153a8f5d5cbe5a49afb63762" - ] - ], - [ - [ - "chr1_index_k13_c12_b1.block:md5,bf872e7d09627b6a4d13fc581d2b6cc8", - "chr1_index_k13_c12_b1.block2.gz:md5,f5c15e773b859516e9f72f73d0be18b4" - ] - ] - ] - ] - ], - [ - - ], - [ - - ], - [ - - ], - [ - - ], - [ - - ], + [], + [], + [], + [], + [], + [], [ "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", "versions.yml:md5,1cd265cb86a23a27f683ffb2459f37f5", @@ -1348,7 +754,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-03-12T15:25:40.901471" + "timestamp": "2024-03-13T11:41:45.834084" }, "skip_alignment = true": { "content": [ @@ -1373,47 +779,12 @@ [ "genome_gfp.fasta.sizes:md5,9b755f8f349b14accefb4d859f84de26" ], - [ - - ], - [ - [ - [ - [ - [ - "chr1.chrom.gz:md5,6c021771fa2b50a86bda7d6155e6db53", - "info.txt:md5,80512ff9fb49f838c72841c9fe08f010", - "merged_ref_8374379829187813017.fa.gz:md5,d2cc4eb47af667d0fb00a4334bdf0ecb", - "namelist.txt:md5,2d3a23e005f63d34a85297a5a4baf421", - "reflist.txt:md5,eb91c4a96808b4de6e6c4b05c2ce5f94", - "scaffolds.txt.gz:md5,864ca414fa7f440fa2e9203413c625c4", - "summary.txt:md5,a66691df895d5ca7ca41dbae4a11e6e9" - ] - ], - [ - [ - "chr1_index_k13_c12_b1.block:md5,bf872e7d09627b6a4d13fc581d2b6cc8", - "chr1_index_k13_c12_b1.block2.gz:md5,f5c15e773b859516e9f72f73d0be18b4" - ] - ] - ] - ] - ], - [ - - ], - [ - - ], - [ - - ], - [ - - ], - [ - - ], + [], + [], + [], + [], + [], + [], [ "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", "versions.yml:md5,1cd265cb86a23a27f683ffb2459f37f5", @@ -1426,7 +797,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-03-12T15:24:43.257567" + "timestamp": "2024-03-13T11:41:15.442241" }, "skip_gtf_filter = true": { "content": [ @@ -1451,47 +822,12 @@ [ "genome_gfp.fasta.sizes:md5,9b755f8f349b14accefb4d859f84de26" ], - [ - - ], - [ - [ - [ - [ - [ - "chr1.chrom.gz:md5,6c021771fa2b50a86bda7d6155e6db53", - "info.txt:md5,2b17c0c0a058751c376c900c879bab28", - "merged_ref_8374379829187813017.fa.gz:md5,d2cc4eb47af667d0fb00a4334bdf0ecb", - "namelist.txt:md5,2d3a23e005f63d34a85297a5a4baf421", - "reflist.txt:md5,061e61f0617276541542a4e456774860", - "scaffolds.txt.gz:md5,43b4b546c9b06d7a009aa4fb1e5fa9c7", - "summary.txt:md5,c7d6b05d6b0087cf724af5859d9fa6ae" - ] - ], - [ - [ - "chr1_index_k13_c12_b1.block:md5,bf872e7d09627b6a4d13fc581d2b6cc8", - "chr1_index_k13_c12_b1.block2.gz:md5,f5c15e773b859516e9f72f73d0be18b4" - ] - ] - ] - ] - ], - [ - - ], - [ - - ], - [ - - ], - [ - - ], - [ - - ], + [], + [], + [], + [], + [], + [], [ "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", "versions.yml:md5,1cd265cb86a23a27f683ffb2459f37f5", @@ -1503,6 +839,6 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-03-12T15:23:02.470249" + "timestamp": "2024-03-13T11:40:24.672206" } } \ No newline at end of file From 9584d7059b651edc8fa4b5c8930e1fbd581a14ee Mon Sep 17 00:00:00 2001 From: Harshil Patel Date: Wed, 13 Mar 2024 11:53:31 +0000 Subject: [PATCH 255/634] Revert renaming UMITOOLS_PREPAREFORSALMON to UMITOOLS_PREPAREFORRSEM --- workflows/rnaseq/main.nf | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/workflows/rnaseq/main.nf b/workflows/rnaseq/main.nf index 2627c6f7d..08402cd0e 100755 --- a/workflows/rnaseq/main.nf +++ b/workflows/rnaseq/main.nf @@ -40,16 +40,16 @@ include { CAT_FASTQ } from '../../modules/nf-core/cat/fastq' include { BBMAP_BBSPLIT } from '../../modules/nf-core/bbmap/bbsplit' include { DUPRADAR } from '../../modules/nf-core/dupradar' include { SAMTOOLS_SORT } from '../../modules/nf-core/samtools/sort' -include { UMITOOLS_PREPAREFORRSEM } from '../../modules/nf-core/umitools/prepareforrsem' include { PRESEQ_LCEXTRAP } from '../../modules/nf-core/preseq/lcextrap' include { QUALIMAP_RNASEQ } from '../../modules/nf-core/qualimap/rnaseq' include { STRINGTIE_STRINGTIE } from '../../modules/nf-core/stringtie/stringtie' include { SUBREAD_FEATURECOUNTS } from '../../modules/nf-core/subread/featurecounts' include { MULTIQC } from '../../modules/nf-core/multiqc' -include { SORTMERNA } from '../../modules/nf-core/sortmerna' -include { SORTMERNA as SORTMERNA_INDEX } from '../../modules/nf-core/sortmerna' -include { BEDTOOLS_GENOMECOV as BEDTOOLS_GENOMECOV_FW } from '../../modules/nf-core/bedtools/genomecov' -include { BEDTOOLS_GENOMECOV as BEDTOOLS_GENOMECOV_REV } from '../../modules/nf-core/bedtools/genomecov' +include { UMITOOLS_PREPAREFORRSEM as UMITOOLS_PREPAREFORSALMON } from '../../modules/nf-core/umitools/prepareforrsem' +include { SORTMERNA } from '../../modules/nf-core/sortmerna' +include { SORTMERNA as SORTMERNA_INDEX } from '../../modules/nf-core/sortmerna' +include { BEDTOOLS_GENOMECOV as BEDTOOLS_GENOMECOV_FW } from '../../modules/nf-core/bedtools/genomecov' +include { BEDTOOLS_GENOMECOV as BEDTOOLS_GENOMECOV_REV } from '../../modules/nf-core/bedtools/genomecov' // // SUBWORKFLOW: Consisting entirely of nf-core/modules From 155c6358879c006ded8ecfd19b5bd2a3e8e77a19 Mon Sep 17 00:00:00 2001 From: Harshil Patel Date: Wed, 13 Mar 2024 17:58:26 +0000 Subject: [PATCH 256/634] Delete unecessary tags from nt.test files for modules --- modules/local/gtf2bed/tests/main.nf.test | 4 ---- modules/local/star_align_igenomes/tests/main.nf.test | 2 +- .../star_genomegenerate_igenomes/tests/main.nf.test | 2 -- modules/nf-core/bbmap/bbsplit/tests/main.nf.test | 4 ---- .../nf-core/bedtools/genomecov/tests/main.nf.test | 5 ----- modules/nf-core/cat/fastq/tests/main.nf.test | 4 ---- .../custom/catadditionalfasta/tests/main.nf.test | 5 ----- .../nf-core/custom/getchromsizes/tests/main.nf.test | 5 ----- modules/nf-core/custom/tx2gene/tests/main.nf.test | 7 +------ modules/nf-core/dupradar/tests/main.nf.test | 4 ---- modules/nf-core/fastp/tests/main.nf.test | 3 --- modules/nf-core/fastqc/tests/main.nf.test | 4 ---- modules/nf-core/fq/subsample/tests/main.nf.test | 5 ----- modules/nf-core/gffread/tests/main.nf.test | 4 ---- modules/nf-core/gunzip/tests/main.nf.test | 3 --- modules/nf-core/hisat2/align/tests/main.nf.test | 8 ++------ modules/nf-core/hisat2/build/tests/main.nf.test | 6 +----- .../hisat2/extractsplicesites/tests/main.nf.test | 4 ---- modules/nf-core/kallisto/index/tests/main.nf.test | 4 ---- modules/nf-core/kallisto/quant/tests/main.nf.test | 6 +----- modules/nf-core/multiqc/tests/main.nf.test | 4 ---- .../nf-core/picard/markduplicates/tests/main.nf.test | 4 ---- modules/nf-core/preseq/lcextrap/tests/main.nf.test | 4 ---- modules/nf-core/qualimap/rnaseq/tests/main.nf.test | 4 ---- .../rsem/calculateexpression/tests/main.nf.test | 8 ++------ .../nf-core/rsem/preparereference/tests/main.nf.test | 4 ---- modules/nf-core/rseqc/bamstat/tests/main.nf.test | 5 ----- .../nf-core/rseqc/inferexperiment/tests/main.nf.test | 5 ----- .../nf-core/rseqc/innerdistance/tests/main.nf.test | 5 ----- .../rseqc/junctionannotation/tests/main.nf.test | 5 ----- .../rseqc/junctionsaturation/tests/main.nf.test | 5 ----- .../rseqc/readdistribution/tests/main.nf.test | 4 ---- .../nf-core/rseqc/readduplication/tests/main.nf.test | 4 ---- modules/nf-core/rseqc/tin/tests/main.nf.test | 4 ---- modules/nf-core/salmon/index/tests/main.nf.test | 4 ---- modules/nf-core/salmon/quant/tests/main.nf.test | 6 +----- modules/nf-core/samtools/flagstat/tests/main.nf.test | 4 ---- modules/nf-core/samtools/idxstats/tests/main.nf.test | 4 ---- modules/nf-core/samtools/index/tests/main.nf.test | 4 ---- modules/nf-core/samtools/sort/tests/main.nf.test | 4 ---- modules/nf-core/samtools/stats/tests/main.nf.test | 4 ---- modules/nf-core/sortmerna/tests/main.nf.test | 3 --- modules/nf-core/star/align/tests/main.nf.test | 6 +----- .../nf-core/star/genomegenerate/tests/main.nf.test | 4 ---- .../nf-core/stringtie/stringtie/tests/main.nf.test | 4 ---- .../nf-core/subread/featurecounts/tests/main.nf.test | 4 ---- .../summarizedexperiment/tests/main.nf.test | 12 +++--------- modules/nf-core/trimgalore/tests/main.nf.test | 3 --- modules/nf-core/tximeta/tximport/tests/main.nf.test | 9 ++------- modules/nf-core/ucsc/bedclip/tests/main.nf.test | 4 ---- .../nf-core/ucsc/bedgraphtobigwig/tests/main.nf.test | 4 ---- modules/nf-core/umitools/dedup/tests/main.nf.test | 5 ----- modules/nf-core/umitools/extract/tests/main.nf.test | 4 ---- .../umitools/prepareforrsem/tests/main.nf.test | 5 ----- modules/nf-core/untar/tests/main.nf.test | 4 +--- 55 files changed, 16 insertions(+), 239 deletions(-) diff --git a/modules/local/gtf2bed/tests/main.nf.test b/modules/local/gtf2bed/tests/main.nf.test index cfa9c48b0..698714f8b 100644 --- a/modules/local/gtf2bed/tests/main.nf.test +++ b/modules/local/gtf2bed/tests/main.nf.test @@ -4,10 +4,6 @@ nextflow_process { script "../main.nf" process "GTF2BED" - tag "modules" - tag "modules_local" - tag "gtf2bed" - test("sarscov2 - bam") { when { diff --git a/modules/local/star_align_igenomes/tests/main.nf.test b/modules/local/star_align_igenomes/tests/main.nf.test index 5c7f33d2b..088796410 100644 --- a/modules/local/star_align_igenomes/tests/main.nf.test +++ b/modules/local/star_align_igenomes/tests/main.nf.test @@ -4,7 +4,7 @@ nextflow_process { script "../main.nf" process "STAR_ALIGN_IGENOMES" tag "STAR_ALIGN_IGENOMES" - tag "STAR_GENOMEGENERATE_IGENOMES_IGENOMES" + tag "STAR_GENOMEGENERATE_IGENOMES" setup { run("STAR_GENOMEGENERATE_IGENOMES") { diff --git a/modules/local/star_genomegenerate_igenomes/tests/main.nf.test b/modules/local/star_genomegenerate_igenomes/tests/main.nf.test index e32eedafc..aea6305c4 100644 --- a/modules/local/star_genomegenerate_igenomes/tests/main.nf.test +++ b/modules/local/star_genomegenerate_igenomes/tests/main.nf.test @@ -4,8 +4,6 @@ nextflow_process { script "../main.nf" process "STAR_GENOMEGENERATE_IGENOMES" - tag "STAR_GENOMEGENERATE_IGENOMES" - test("fasta with gtf") { when { diff --git a/modules/nf-core/bbmap/bbsplit/tests/main.nf.test b/modules/nf-core/bbmap/bbsplit/tests/main.nf.test index 8fb130abb..0257fedac 100644 --- a/modules/nf-core/bbmap/bbsplit/tests/main.nf.test +++ b/modules/nf-core/bbmap/bbsplit/tests/main.nf.test @@ -3,10 +3,6 @@ nextflow_process { name "Test Process BBMAP_BBSPLIT" script "../main.nf" process "BBMAP_BBSPLIT" - tag "modules" - tag "modules_nfcore" - tag "bbmap" - tag "bbmap/bbsplit" test("sarscov2_se_fastq_fasta_chr22_fasta") { diff --git a/modules/nf-core/bedtools/genomecov/tests/main.nf.test b/modules/nf-core/bedtools/genomecov/tests/main.nf.test index 8213cff95..fe1567d89 100644 --- a/modules/nf-core/bedtools/genomecov/tests/main.nf.test +++ b/modules/nf-core/bedtools/genomecov/tests/main.nf.test @@ -4,11 +4,6 @@ nextflow_process { process "BEDTOOLS_GENOMECOV" config "./nextflow.config" - tag "modules" - tag "modules_nfcore" - tag "bedtools" - tag "bedtools/genomecov" - test("sarscov2 - no scale") { when { process { diff --git a/modules/nf-core/cat/fastq/tests/main.nf.test b/modules/nf-core/cat/fastq/tests/main.nf.test index dab2e14c0..ab7cdada9 100644 --- a/modules/nf-core/cat/fastq/tests/main.nf.test +++ b/modules/nf-core/cat/fastq/tests/main.nf.test @@ -3,10 +3,6 @@ nextflow_process { name "Test Process CAT_FASTQ" script "../main.nf" process "CAT_FASTQ" - tag "modules" - tag "modules_nfcore" - tag "cat" - tag "cat/fastq" test("test_cat_fastq_single_end") { diff --git a/modules/nf-core/custom/catadditionalfasta/tests/main.nf.test b/modules/nf-core/custom/catadditionalfasta/tests/main.nf.test index 7905f231d..7cf230bd7 100644 --- a/modules/nf-core/custom/catadditionalfasta/tests/main.nf.test +++ b/modules/nf-core/custom/catadditionalfasta/tests/main.nf.test @@ -4,11 +4,6 @@ nextflow_process { script "../main.nf" process "CUSTOM_CATADDITIONALFASTA" - tag "modules" - tag "modules_nfcore" - tag "custom" - tag "custom/catadditionalfasta" - test("sarscov2 - fastq - gtf") { when { diff --git a/modules/nf-core/custom/getchromsizes/tests/main.nf.test b/modules/nf-core/custom/getchromsizes/tests/main.nf.test index 9f6b5640e..3b18914b1 100644 --- a/modules/nf-core/custom/getchromsizes/tests/main.nf.test +++ b/modules/nf-core/custom/getchromsizes/tests/main.nf.test @@ -4,11 +4,6 @@ nextflow_process { script "../main.nf" process "CUSTOM_GETCHROMSIZES" - tag "modules" - tag "modules_nfcore" - tag "custom" - tag "custom/getchromsizes" - test("test_custom_getchromsizes") { when { diff --git a/modules/nf-core/custom/tx2gene/tests/main.nf.test b/modules/nf-core/custom/tx2gene/tests/main.nf.test index b15592798..a3f0d0d64 100644 --- a/modules/nf-core/custom/tx2gene/tests/main.nf.test +++ b/modules/nf-core/custom/tx2gene/tests/main.nf.test @@ -3,12 +3,7 @@ nextflow_process { name "Test Process CUSTOM_TX2GENE" script "../main.nf" process "CUSTOM_TX2GENE" - - tag "modules" - tag "modules_nfcore" - tag "custom" - tag "custom/tx2gene" - tag "untar" + tag "UNTAR" setup { diff --git a/modules/nf-core/dupradar/tests/main.nf.test b/modules/nf-core/dupradar/tests/main.nf.test index f7f0933c8..e4bfcb917 100644 --- a/modules/nf-core/dupradar/tests/main.nf.test +++ b/modules/nf-core/dupradar/tests/main.nf.test @@ -4,10 +4,6 @@ nextflow_process { script "../main.nf" process "DUPRADAR" - tag "modules" - tag "modules_nfcore" - tag "dupradar" - test("sarscov2 - bam - single_end") { config './nextflow.config' diff --git a/modules/nf-core/fastp/tests/main.nf.test b/modules/nf-core/fastp/tests/main.nf.test index 9b3f9a38c..e67eacd6f 100644 --- a/modules/nf-core/fastp/tests/main.nf.test +++ b/modules/nf-core/fastp/tests/main.nf.test @@ -3,9 +3,6 @@ nextflow_process { name "Test Process FASTP" script "../main.nf" process "FASTP" - tag "modules" - tag "modules_nfcore" - tag "fastp" test("test_fastp_single_end") { diff --git a/modules/nf-core/fastqc/tests/main.nf.test b/modules/nf-core/fastqc/tests/main.nf.test index 70edae4d9..c69808d8c 100644 --- a/modules/nf-core/fastqc/tests/main.nf.test +++ b/modules/nf-core/fastqc/tests/main.nf.test @@ -4,10 +4,6 @@ nextflow_process { script "../main.nf" process "FASTQC" - tag "modules" - tag "modules_nfcore" - tag "fastqc" - test("sarscov2 single-end [fastq]") { when { diff --git a/modules/nf-core/fq/subsample/tests/main.nf.test b/modules/nf-core/fq/subsample/tests/main.nf.test index 285f30c77..c2817748c 100644 --- a/modules/nf-core/fq/subsample/tests/main.nf.test +++ b/modules/nf-core/fq/subsample/tests/main.nf.test @@ -4,11 +4,6 @@ nextflow_process { script "../main.nf" process "FQ_SUBSAMPLE" - tag "modules" - tag "modules_nfcore" - tag "fq" - tag "fq/subsample" - test("test_fq_subsample_no_args") { config "./nextflow_no_args.config" when { diff --git a/modules/nf-core/gffread/tests/main.nf.test b/modules/nf-core/gffread/tests/main.nf.test index 452aba1ba..82bb66925 100644 --- a/modules/nf-core/gffread/tests/main.nf.test +++ b/modules/nf-core/gffread/tests/main.nf.test @@ -4,10 +4,6 @@ nextflow_process { script "../main.nf" process "GFFREAD" - tag "gffread" - tag "modules_nfcore" - tag "modules" - test("sarscov2-gff3-gtf") { config "./nextflow.config" diff --git a/modules/nf-core/gunzip/tests/main.nf.test b/modules/nf-core/gunzip/tests/main.nf.test index 6406008ef..5ebf7ca24 100644 --- a/modules/nf-core/gunzip/tests/main.nf.test +++ b/modules/nf-core/gunzip/tests/main.nf.test @@ -3,9 +3,6 @@ nextflow_process { name "Test Process GUNZIP" script "../main.nf" process "GUNZIP" - tag "gunzip" - tag "modules_nfcore" - tag "modules" test("Should run without failures") { diff --git a/modules/nf-core/hisat2/align/tests/main.nf.test b/modules/nf-core/hisat2/align/tests/main.nf.test index 3a520e9a0..660647edb 100644 --- a/modules/nf-core/hisat2/align/tests/main.nf.test +++ b/modules/nf-core/hisat2/align/tests/main.nf.test @@ -3,12 +3,8 @@ nextflow_process { name "Test Process HISAT2_ALIGN" script "../main.nf" process "HISAT2_ALIGN" - tag "modules" - tag "modules_nfcore" - tag "hisat2" - tag "hisat2/align" - tag "hisat2/build" - tag "hisat2/extractsplicesites" + tag "HISAT2_BUILD" + tag "HISAT2_EXTRACTSPLICESITES" test("Single-End") { diff --git a/modules/nf-core/hisat2/build/tests/main.nf.test b/modules/nf-core/hisat2/build/tests/main.nf.test index 5b31debc4..05b71f08c 100644 --- a/modules/nf-core/hisat2/build/tests/main.nf.test +++ b/modules/nf-core/hisat2/build/tests/main.nf.test @@ -3,11 +3,7 @@ nextflow_process { name "Test Process HISAT2_BUILD" script "../main.nf" process "HISAT2_BUILD" - tag "modules" - tag "modules_nfcore" - tag "hisat2" - tag "hisat2/build" - tag "hisat2/extractsplicesites" + tag "HISAT2_EXTRACTSPLICESITES" test("Should run without failures") { diff --git a/modules/nf-core/hisat2/extractsplicesites/tests/main.nf.test b/modules/nf-core/hisat2/extractsplicesites/tests/main.nf.test index 72eb6d53b..10b8cf8e8 100644 --- a/modules/nf-core/hisat2/extractsplicesites/tests/main.nf.test +++ b/modules/nf-core/hisat2/extractsplicesites/tests/main.nf.test @@ -3,10 +3,6 @@ nextflow_process { name "Test Process HISAT2_EXTRACTSPLICESITES" script "../main.nf" process "HISAT2_EXTRACTSPLICESITES" - tag "modules" - tag "modules_nfcore" - tag "hisat2" - tag "hisat2/extractsplicesites" test("Should run without failures") { diff --git a/modules/nf-core/kallisto/index/tests/main.nf.test b/modules/nf-core/kallisto/index/tests/main.nf.test index 63469c5d5..7999daf41 100644 --- a/modules/nf-core/kallisto/index/tests/main.nf.test +++ b/modules/nf-core/kallisto/index/tests/main.nf.test @@ -3,10 +3,6 @@ nextflow_process { name "Test Process KALLISTO_INDEX" script "../main.nf" process "KALLISTO_INDEX" - tag "modules" - tag "modules_nfcore" - tag "kallisto" - tag "kallisto/index" test("sarscov2 transcriptome.fasta") { diff --git a/modules/nf-core/kallisto/quant/tests/main.nf.test b/modules/nf-core/kallisto/quant/tests/main.nf.test index ad7391270..dec8b8d4b 100644 --- a/modules/nf-core/kallisto/quant/tests/main.nf.test +++ b/modules/nf-core/kallisto/quant/tests/main.nf.test @@ -3,11 +3,7 @@ nextflow_process { name "Test Process KALLISTO_QUANT" script "../main.nf" process "KALLISTO_QUANT" - tag "modules" - tag "modules_nfcore" - tag "kallisto" - tag "kallisto/quant" - tag "kallisto/index" + tag "KALLISTO_INDEX" setup { run("KALLISTO_INDEX") { diff --git a/modules/nf-core/multiqc/tests/main.nf.test b/modules/nf-core/multiqc/tests/main.nf.test index f1c4242ef..813b438eb 100644 --- a/modules/nf-core/multiqc/tests/main.nf.test +++ b/modules/nf-core/multiqc/tests/main.nf.test @@ -4,10 +4,6 @@ nextflow_process { script "../main.nf" process "MULTIQC" - tag "modules" - tag "modules_nfcore" - tag "multiqc" - test("sarscov2 single-end [fastqc]") { when { diff --git a/modules/nf-core/picard/markduplicates/tests/main.nf.test b/modules/nf-core/picard/markduplicates/tests/main.nf.test index c5a29b4bd..f0caf0fa3 100644 --- a/modules/nf-core/picard/markduplicates/tests/main.nf.test +++ b/modules/nf-core/picard/markduplicates/tests/main.nf.test @@ -4,10 +4,6 @@ nextflow_process { script "../main.nf" process "PICARD_MARKDUPLICATES" config "./nextflow.config" - tag "modules" - tag "modules_nfcore" - tag "picard" - tag "picard/markduplicates" test("sarscov2 [unsorted bam]") { diff --git a/modules/nf-core/preseq/lcextrap/tests/main.nf.test b/modules/nf-core/preseq/lcextrap/tests/main.nf.test index aa12bc1ab..92750c9ed 100644 --- a/modules/nf-core/preseq/lcextrap/tests/main.nf.test +++ b/modules/nf-core/preseq/lcextrap/tests/main.nf.test @@ -3,10 +3,6 @@ nextflow_process { name "Test Process PRESEQ_LCEXTRAP" script "../main.nf" process "PRESEQ_LCEXTRAP" - tag "modules" - tag "modules_nfcore" - tag "preseq" - tag "preseq/lcextrap" test("sarscov2 - single_end") { when { diff --git a/modules/nf-core/qualimap/rnaseq/tests/main.nf.test b/modules/nf-core/qualimap/rnaseq/tests/main.nf.test index 4f02b8fba..42403c502 100644 --- a/modules/nf-core/qualimap/rnaseq/tests/main.nf.test +++ b/modules/nf-core/qualimap/rnaseq/tests/main.nf.test @@ -3,10 +3,6 @@ nextflow_process { name "Test Process QUALIMAP_RNASEQ" script "../main.nf" process "QUALIMAP_RNASEQ" - tag "modules" - tag "modules_nfcore" - tag "qualimap" - tag "qualimap/rnaseq" test("homo_sapiens [bam]") { diff --git a/modules/nf-core/rsem/calculateexpression/tests/main.nf.test b/modules/nf-core/rsem/calculateexpression/tests/main.nf.test index 63e1ebc0b..445e58d85 100644 --- a/modules/nf-core/rsem/calculateexpression/tests/main.nf.test +++ b/modules/nf-core/rsem/calculateexpression/tests/main.nf.test @@ -3,13 +3,9 @@ nextflow_process { name "Test Process RSEM_CALCULATEEXPRESSION" script "../main.nf" process "RSEM_CALCULATEEXPRESSION" + tag "RSEM_PREPAREREFERENCE" config "./nextflow.config" - tag "modules" - tag "modules_nfcore" - tag "rsem" - tag "rsem/calculateexpression" - tag "rsem/preparereference" - + test("homo_sapiens") { setup { diff --git a/modules/nf-core/rsem/preparereference/tests/main.nf.test b/modules/nf-core/rsem/preparereference/tests/main.nf.test index b4493d1ab..4353d4d9b 100644 --- a/modules/nf-core/rsem/preparereference/tests/main.nf.test +++ b/modules/nf-core/rsem/preparereference/tests/main.nf.test @@ -3,10 +3,6 @@ nextflow_process { name "Test Process RSEM_PREPAREREFERENCE" script "../main.nf" process "RSEM_PREPAREREFERENCE" - tag "modules" - tag "modules_nfcore" - tag "rsem" - tag "rsem/preparereference" test("homo_sapiens") { diff --git a/modules/nf-core/rseqc/bamstat/tests/main.nf.test b/modules/nf-core/rseqc/bamstat/tests/main.nf.test index 2f209b0a7..6a64b602b 100644 --- a/modules/nf-core/rseqc/bamstat/tests/main.nf.test +++ b/modules/nf-core/rseqc/bamstat/tests/main.nf.test @@ -4,11 +4,6 @@ nextflow_process { script "../main.nf" process "RSEQC_BAMSTAT" - tag "modules" - tag "modules_nfcore" - tag "rseqc" - tag "rseqc/bamstat" - config "./nextflow.config" test("sarscov2 - [meta] - bam") { diff --git a/modules/nf-core/rseqc/inferexperiment/tests/main.nf.test b/modules/nf-core/rseqc/inferexperiment/tests/main.nf.test index 4234829a7..6218de6d8 100644 --- a/modules/nf-core/rseqc/inferexperiment/tests/main.nf.test +++ b/modules/nf-core/rseqc/inferexperiment/tests/main.nf.test @@ -5,11 +5,6 @@ nextflow_process { process "RSEQC_INFEREXPERIMENT" config "./nextflow.config" - tag "modules" - tag "modules_nfcore" - tag "rseqc" - tag "rseqc/inferexperiment" - test("sarscov2 - [[meta] - bam] - bed") { when { diff --git a/modules/nf-core/rseqc/innerdistance/tests/main.nf.test b/modules/nf-core/rseqc/innerdistance/tests/main.nf.test index 0f07e3a87..2d4cc4fd6 100644 --- a/modules/nf-core/rseqc/innerdistance/tests/main.nf.test +++ b/modules/nf-core/rseqc/innerdistance/tests/main.nf.test @@ -5,11 +5,6 @@ nextflow_process { process "RSEQC_INNERDISTANCE" config "./nextflow.config" - tag "modules" - tag "modules_nfcore" - tag "rseqc" - tag "rseqc/innerdistance" - test("sarscov2 - [[meta] - bam] - bed") { when { diff --git a/modules/nf-core/rseqc/junctionannotation/tests/main.nf.test b/modules/nf-core/rseqc/junctionannotation/tests/main.nf.test index fd8cab96c..885d9a7b7 100644 --- a/modules/nf-core/rseqc/junctionannotation/tests/main.nf.test +++ b/modules/nf-core/rseqc/junctionannotation/tests/main.nf.test @@ -4,11 +4,6 @@ nextflow_process { script "../main.nf" process "RSEQC_JUNCTIONANNOTATION" - tag "modules" - tag "modules_nfcore" - tag "rseqc" - tag "rseqc/junctionannotation" - test("sarscov2 - paired end [bam]") { when { diff --git a/modules/nf-core/rseqc/junctionsaturation/tests/main.nf.test b/modules/nf-core/rseqc/junctionsaturation/tests/main.nf.test index af801dd64..b8b4381b4 100644 --- a/modules/nf-core/rseqc/junctionsaturation/tests/main.nf.test +++ b/modules/nf-core/rseqc/junctionsaturation/tests/main.nf.test @@ -4,11 +4,6 @@ nextflow_process { script "../main.nf" process "RSEQC_JUNCTIONSATURATION" - tag "modules" - tag "modules_nfcore" - tag "rseqc" - tag "rseqc/junctionsaturation" - test("sarscov2 paired-end [bam]") { when { diff --git a/modules/nf-core/rseqc/readdistribution/tests/main.nf.test b/modules/nf-core/rseqc/readdistribution/tests/main.nf.test index 8e630062f..d479d9f12 100644 --- a/modules/nf-core/rseqc/readdistribution/tests/main.nf.test +++ b/modules/nf-core/rseqc/readdistribution/tests/main.nf.test @@ -3,10 +3,6 @@ nextflow_process { name "Test Process RSEQC_READDISTRIBUTION" script "../main.nf" process "RSEQC_READDISTRIBUTION" - tag "modules" - tag "modules_nfcore" - tag "rseqc" - tag "rseqc/readdistribution" test("sarscov2 paired-end [bam]") { diff --git a/modules/nf-core/rseqc/readduplication/tests/main.nf.test b/modules/nf-core/rseqc/readduplication/tests/main.nf.test index d48e23b17..9c5675874 100644 --- a/modules/nf-core/rseqc/readduplication/tests/main.nf.test +++ b/modules/nf-core/rseqc/readduplication/tests/main.nf.test @@ -3,10 +3,6 @@ nextflow_process { name "Test Process RSEQC_READDUPLICATION" script "../main.nf" process "RSEQC_READDUPLICATION" - tag "modules" - tag "modules_nfcore" - tag "rseqc" - tag "rseqc/readduplication" test("sarscov2 paired-end [bam]") { diff --git a/modules/nf-core/rseqc/tin/tests/main.nf.test b/modules/nf-core/rseqc/tin/tests/main.nf.test index 95c04d93c..063d45674 100644 --- a/modules/nf-core/rseqc/tin/tests/main.nf.test +++ b/modules/nf-core/rseqc/tin/tests/main.nf.test @@ -3,10 +3,6 @@ nextflow_process { name "Test Process RSEQC_TIN" script "../main.nf" process "RSEQC_TIN" - tag "modules" - tag "modules_nfcore" - tag "rseqc" - tag "rseqc/tin" test("sarscov2 paired-end [bam]") { diff --git a/modules/nf-core/salmon/index/tests/main.nf.test b/modules/nf-core/salmon/index/tests/main.nf.test index 538b231b4..aaf2dbdb7 100644 --- a/modules/nf-core/salmon/index/tests/main.nf.test +++ b/modules/nf-core/salmon/index/tests/main.nf.test @@ -3,10 +3,6 @@ nextflow_process { name "Test Process SALMON_INDEX" script "../main.nf" process "SALMON_INDEX" - tag "modules" - tag "modules_nfcore" - tag "salmon" - tag "salmon/index" test("sarscov2") { diff --git a/modules/nf-core/salmon/quant/tests/main.nf.test b/modules/nf-core/salmon/quant/tests/main.nf.test index 04e61e2b3..fdc07db76 100644 --- a/modules/nf-core/salmon/quant/tests/main.nf.test +++ b/modules/nf-core/salmon/quant/tests/main.nf.test @@ -3,12 +3,8 @@ nextflow_process { name "Test Process SALMON_QUANT" script "../main.nf" process "SALMON_QUANT" + tag "SALMON_INDEX" config "./nextflow.config" - tag "modules" - tag "modules_nfcore" - tag "salmon" - tag "salmon/quant" - tag "salmon/index" setup { run("SALMON_INDEX") { diff --git a/modules/nf-core/samtools/flagstat/tests/main.nf.test b/modules/nf-core/samtools/flagstat/tests/main.nf.test index 24c3c04b0..4d3742361 100644 --- a/modules/nf-core/samtools/flagstat/tests/main.nf.test +++ b/modules/nf-core/samtools/flagstat/tests/main.nf.test @@ -3,10 +3,6 @@ nextflow_process { name "Test Process SAMTOOLS_FLAGSTAT" script "../main.nf" process "SAMTOOLS_FLAGSTAT" - tag "modules" - tag "modules_nfcore" - tag "samtools" - tag "samtools/flagstat" test("BAM") { diff --git a/modules/nf-core/samtools/idxstats/tests/main.nf.test b/modules/nf-core/samtools/idxstats/tests/main.nf.test index a2dcb27c7..e6c427053 100644 --- a/modules/nf-core/samtools/idxstats/tests/main.nf.test +++ b/modules/nf-core/samtools/idxstats/tests/main.nf.test @@ -3,10 +3,6 @@ nextflow_process { name "Test Process SAMTOOLS_IDXSTATS" script "../main.nf" process "SAMTOOLS_IDXSTATS" - tag "modules" - tag "modules_nfcore" - tag "samtools" - tag "samtools/idxstats" test("bam") { diff --git a/modules/nf-core/samtools/index/tests/main.nf.test b/modules/nf-core/samtools/index/tests/main.nf.test index bb7756d1c..e3f918965 100644 --- a/modules/nf-core/samtools/index/tests/main.nf.test +++ b/modules/nf-core/samtools/index/tests/main.nf.test @@ -3,10 +3,6 @@ nextflow_process { name "Test Process SAMTOOLS_INDEX" script "../main.nf" process "SAMTOOLS_INDEX" - tag "modules" - tag "modules_nfcore" - tag "samtools" - tag "samtools/index" test("bai") { diff --git a/modules/nf-core/samtools/sort/tests/main.nf.test b/modules/nf-core/samtools/sort/tests/main.nf.test index 8360e2b1f..728201ded 100644 --- a/modules/nf-core/samtools/sort/tests/main.nf.test +++ b/modules/nf-core/samtools/sort/tests/main.nf.test @@ -3,10 +3,6 @@ nextflow_process { name "Test Process SAMTOOLS_SORT" script "../main.nf" process "SAMTOOLS_SORT" - tag "modules" - tag "modules_nfcore" - tag "samtools" - tag "samtools/sort" test("bam") { diff --git a/modules/nf-core/samtools/stats/tests/main.nf.test b/modules/nf-core/samtools/stats/tests/main.nf.test index e3d5cb14c..a28964666 100644 --- a/modules/nf-core/samtools/stats/tests/main.nf.test +++ b/modules/nf-core/samtools/stats/tests/main.nf.test @@ -3,10 +3,6 @@ nextflow_process { name "Test Process SAMTOOLS_STATS" script "../main.nf" process "SAMTOOLS_STATS" - tag "modules" - tag "modules_nfcore" - tag "samtools" - tag "samtools/stats" test("bam") { diff --git a/modules/nf-core/sortmerna/tests/main.nf.test b/modules/nf-core/sortmerna/tests/main.nf.test index 73bc11950..4388cda0c 100644 --- a/modules/nf-core/sortmerna/tests/main.nf.test +++ b/modules/nf-core/sortmerna/tests/main.nf.test @@ -3,9 +3,6 @@ nextflow_process { name "Test Process SORTMERNA" script "../main.nf" process "SORTMERNA" - tag "modules" - tag "modules_nfcore" - tag "sortmerna" test("sarscov2 indexing only") { diff --git a/modules/nf-core/star/align/tests/main.nf.test b/modules/nf-core/star/align/tests/main.nf.test index 6ecd77863..8b34ae793 100644 --- a/modules/nf-core/star/align/tests/main.nf.test +++ b/modules/nf-core/star/align/tests/main.nf.test @@ -3,11 +3,7 @@ nextflow_process { name "Test Process STAR_ALIGN" script "../main.nf" process "STAR_ALIGN" - tag "modules" - tag "modules_nfcore" - tag "star" - tag "star/align" - tag "star/genomegenerate" + tag "STAR_GENOMEGENERATE" setup { run("STAR_GENOMEGENERATE") { diff --git a/modules/nf-core/star/genomegenerate/tests/main.nf.test b/modules/nf-core/star/genomegenerate/tests/main.nf.test index c17c8ba45..3467a3567 100644 --- a/modules/nf-core/star/genomegenerate/tests/main.nf.test +++ b/modules/nf-core/star/genomegenerate/tests/main.nf.test @@ -3,10 +3,6 @@ nextflow_process { name "Test Process STAR_GENOMEGENERATE" script "../main.nf" process "STAR_GENOMEGENERATE" - tag "modules" - tag "modules_nfcore" - tag "star" - tag "star/genomegenerate" test("fasta_gtf") { diff --git a/modules/nf-core/stringtie/stringtie/tests/main.nf.test b/modules/nf-core/stringtie/stringtie/tests/main.nf.test index 00efe8f1a..68baaf289 100644 --- a/modules/nf-core/stringtie/stringtie/tests/main.nf.test +++ b/modules/nf-core/stringtie/stringtie/tests/main.nf.test @@ -3,10 +3,6 @@ nextflow_process { name "Test Process STRINGTIE_STRINGTIE" script "../main.nf" process "STRINGTIE_STRINGTIE" - tag "modules" - tag "modules_nfcore" - tag "stringtie" - tag "stringtie/stringtie" test("sarscov2 [bam] - forward strandedness") { diff --git a/modules/nf-core/subread/featurecounts/tests/main.nf.test b/modules/nf-core/subread/featurecounts/tests/main.nf.test index 00d157d97..e8e0fa70e 100644 --- a/modules/nf-core/subread/featurecounts/tests/main.nf.test +++ b/modules/nf-core/subread/featurecounts/tests/main.nf.test @@ -4,10 +4,6 @@ nextflow_process { script "../main.nf" process "SUBREAD_FEATURECOUNTS" config "./nextflow.config" - tag "modules" - tag "modules_nfcore" - tag "subread" - tag "subread/featurecounts" test("sarscov2 [bam] - forward") { diff --git a/modules/nf-core/summarizedexperiment/summarizedexperiment/tests/main.nf.test b/modules/nf-core/summarizedexperiment/summarizedexperiment/tests/main.nf.test index b51a76cda..4dda21181 100644 --- a/modules/nf-core/summarizedexperiment/summarizedexperiment/tests/main.nf.test +++ b/modules/nf-core/summarizedexperiment/summarizedexperiment/tests/main.nf.test @@ -3,15 +3,9 @@ nextflow_process { name "Test Process SUMMARIZEDEXPERIMENT_SUMMARIZEDEXPERIMENT" script "../main.nf" process "SUMMARIZEDEXPERIMENT_SUMMARIZEDEXPERIMENT" - - tag "modules" - tag "modules_nfcore" - tag "custom/tx2gene" - tag "tximeta" - tag "tximeta/tximport" - tag "summarizedexperiment" - tag "summarizedexperiment/summarizedexperiment" - tag "untar" + tag "UNTAR" + tag "CUSTOM_TX2GENE" + tag "TXIMETA_TXIMPORT" setup { diff --git a/modules/nf-core/trimgalore/tests/main.nf.test b/modules/nf-core/trimgalore/tests/main.nf.test index 43904ac32..93e30325a 100644 --- a/modules/nf-core/trimgalore/tests/main.nf.test +++ b/modules/nf-core/trimgalore/tests/main.nf.test @@ -3,9 +3,6 @@ nextflow_process { name "Test Process TRIMGALORE" script "../main.nf" process "TRIMGALORE" - tag "modules" - tag "modules_nfcore" - tag "trimgalore" test("test_trimgalore_single_end") { diff --git a/modules/nf-core/tximeta/tximport/tests/main.nf.test b/modules/nf-core/tximeta/tximport/tests/main.nf.test index 5cf6af83e..8f27bc928 100644 --- a/modules/nf-core/tximeta/tximport/tests/main.nf.test +++ b/modules/nf-core/tximeta/tximport/tests/main.nf.test @@ -3,13 +3,8 @@ nextflow_process { name "Test Process TXIMETA_TXIMPORT" script "../main.nf" process "TXIMETA_TXIMPORT" - - tag "modules" - tag "modules_nfcore" - tag "custom/tx2gene" - tag "tximeta" - tag "tximeta/tximport" - tag "untar" + tag "UNTAR" + tag "CUSTOM_TX2GENE" test("saccharomyces_cerevisiae - kallisto - gtf") { diff --git a/modules/nf-core/ucsc/bedclip/tests/main.nf.test b/modules/nf-core/ucsc/bedclip/tests/main.nf.test index f26764529..f4fa61b5e 100644 --- a/modules/nf-core/ucsc/bedclip/tests/main.nf.test +++ b/modules/nf-core/ucsc/bedclip/tests/main.nf.test @@ -3,10 +3,6 @@ nextflow_process { name "Test Process UCSC_BEDCLIP" script "../main.nf" process "UCSC_BEDCLIP" - tag "modules" - tag "modules_nfcore" - tag "ucsc" - tag "ucsc/bedclip" test("sarscov2") { config "./nextflow.config" diff --git a/modules/nf-core/ucsc/bedgraphtobigwig/tests/main.nf.test b/modules/nf-core/ucsc/bedgraphtobigwig/tests/main.nf.test index a40ee2a32..61beea6b5 100644 --- a/modules/nf-core/ucsc/bedgraphtobigwig/tests/main.nf.test +++ b/modules/nf-core/ucsc/bedgraphtobigwig/tests/main.nf.test @@ -3,10 +3,6 @@ nextflow_process { name "Test Process UCSC_BEDGRAPHTOBIGWIG" script "../main.nf" process "UCSC_BEDGRAPHTOBIGWIG" - tag "modules" - tag "modules_nfcore" - tag "ucsc" - tag "ucsc/bedgraphtobigwig" test("Should run without failures") { diff --git a/modules/nf-core/umitools/dedup/tests/main.nf.test b/modules/nf-core/umitools/dedup/tests/main.nf.test index 84698be42..018bd293d 100644 --- a/modules/nf-core/umitools/dedup/tests/main.nf.test +++ b/modules/nf-core/umitools/dedup/tests/main.nf.test @@ -4,11 +4,6 @@ nextflow_process { script "../main.nf" process "UMITOOLS_DEDUP" - tag "modules" - tag "modules_nfcore" - tag "umitools" - tag "umitools/dedup" - test("se - no stats") { config "./nextflow.config" diff --git a/modules/nf-core/umitools/extract/tests/main.nf.test b/modules/nf-core/umitools/extract/tests/main.nf.test index 2a8eba150..4d9a01567 100644 --- a/modules/nf-core/umitools/extract/tests/main.nf.test +++ b/modules/nf-core/umitools/extract/tests/main.nf.test @@ -4,10 +4,6 @@ nextflow_process { script "../main.nf" process "UMITOOLS_EXTRACT" config "./nextflow.config" - tag "modules_nfcore" - tag "modules" - tag "umitools" - tag "umitools/extract" test("Should run without failures") { diff --git a/modules/nf-core/umitools/prepareforrsem/tests/main.nf.test b/modules/nf-core/umitools/prepareforrsem/tests/main.nf.test index aa31d6593..105093505 100644 --- a/modules/nf-core/umitools/prepareforrsem/tests/main.nf.test +++ b/modules/nf-core/umitools/prepareforrsem/tests/main.nf.test @@ -4,11 +4,6 @@ nextflow_process { script "../main.nf" process "UMITOOLS_PREPAREFORRSEM" - tag "modules" - tag "modules_nfcore" - tag "umitools" - tag "umitools/prepareforrsem" - test("sarscov2 - bam") { when { diff --git a/modules/nf-core/untar/tests/main.nf.test b/modules/nf-core/untar/tests/main.nf.test index 2a7c97bf8..2740dfbcf 100644 --- a/modules/nf-core/untar/tests/main.nf.test +++ b/modules/nf-core/untar/tests/main.nf.test @@ -3,9 +3,7 @@ nextflow_process { name "Test Process UNTAR" script "../main.nf" process "UNTAR" - tag "modules" - tag "modules_nfcore" - tag "untar" + test("test_untar") { when { From 67603dbb88cb9609d9d48c30b9838ad893432704 Mon Sep 17 00:00:00 2001 From: Harshil Patel Date: Wed, 13 Mar 2024 19:07:27 +0000 Subject: [PATCH 257/634] Delete unecessary tags from nt.test files for subworkflows --- .../local/align_star/tests/main.nf.test | 10 +-- .../local/prepare_genome/tests/main.nf.test | 3 - .../tests/main.nf.test | 12 ++-- .../local/quantify_rsem/tests/main.nf.test | 7 +- .../tests/main.function.nf.test | 1 + .../main.pipeline_completion.workflow.nf.test | 1 + .../tests/main.nf.test | 17 ++--- .../tests/main.nf.test | 16 +---- .../nf-core/bam_rseqc/tests/main.nf.test | 22 +++--- .../tests/main.nf.test | 16 ++--- .../bam_stats_samtools/tests/main.nf.test | 12 ++-- .../tests/main.nf.test | 10 +-- .../fastq_align_hisat2/tests/main.nf.test | 70 ++++++++----------- .../tests/main.nf.test | 10 +-- .../tests/main.nf.test | 7 -- .../tests/main.nf.test | 11 ++- .../tests/main.function.nf.test | 6 +- .../tests/main.workflow.nf.test | 3 - .../tests/main.function.nf.test | 7 +- .../tests/main.workflow.nf.test | 4 -- .../tests/main.nf.test | 6 -- 21 files changed, 84 insertions(+), 167 deletions(-) diff --git a/subworkflows/local/align_star/tests/main.nf.test b/subworkflows/local/align_star/tests/main.nf.test index f42f90932..9ad089fe0 100644 --- a/subworkflows/local/align_star/tests/main.nf.test +++ b/subworkflows/local/align_star/tests/main.nf.test @@ -5,14 +5,10 @@ nextflow_workflow { workflow "ALIGN_STAR" config "./nextflow.config" - tag "ALIGN_STAR" - - tag "star/align" - tag "star/genomegenerate" - - tag "STAR_ALIGN_IGENOMES" + tag "STAR_GENOMEGENERATE" tag "STAR_GENOMEGENERATE_IGENOMES" - + tag "STAR_ALIGN" + tag "STAR_ALIGN_IGENOMES" tag "BAM_SORT_STATS_SAMTOOLS" test("star - no igenomes") { diff --git a/subworkflows/local/prepare_genome/tests/main.nf.test b/subworkflows/local/prepare_genome/tests/main.nf.test index 129b66127..506ea4663 100644 --- a/subworkflows/local/prepare_genome/tests/main.nf.test +++ b/subworkflows/local/prepare_genome/tests/main.nf.test @@ -5,8 +5,6 @@ nextflow_workflow { workflow "PREPARE_GENOME" config "./nextflow.config" - tag "PREPARE_GENOME" - tag "BBMAP_BBSPLIT" tag "CUSTOM_CATADDITIONALFASTA" tag "CUSTOM_GETCHROMSIZES" @@ -19,7 +17,6 @@ nextflow_workflow { tag "KALLISTO_INDEX" tag "PREPROCESS_TRANSCRIPTS_FASTA_GENCODE" tag "RSEM_PREPAREREFERENCE" - tag "RSEM_PREPAREREFERENCE" tag "SALMON_INDEX" tag "SORTMERNA" tag "STAR_GENOMEGENERATE" diff --git a/subworkflows/local/quantify_pseudo_alignment/tests/main.nf.test b/subworkflows/local/quantify_pseudo_alignment/tests/main.nf.test index 9309200d7..cdeeb0206 100644 --- a/subworkflows/local/quantify_pseudo_alignment/tests/main.nf.test +++ b/subworkflows/local/quantify_pseudo_alignment/tests/main.nf.test @@ -4,11 +4,13 @@ nextflow_workflow { script "../main.nf" workflow "QUANTIFY_PSEUDO_ALIGNMENT" - tag 'SALMON_QUANT' - tag 'KALLISTO_QUANT' - tag 'CUSTOM_TX2GENE' - tag 'TXIMETA_TXIMPORT' - tag 'SUMMARIZEDEXPERIMENT_SUMMARIZEDEXPERIMENT' + tag "SALMON_INDEX" + tag "SALMON_QUANT" + tag "KALLISTO_INDEX" + tag "KALLISTO_QUANT" + tag "CUSTOM_TX2GENE" + tag "TXIMETA_TXIMPORT" + tag "SUMMARIZEDEXPERIMENT_SUMMARIZEDEXPERIMENT" test("salmon") { diff --git a/subworkflows/local/quantify_rsem/tests/main.nf.test b/subworkflows/local/quantify_rsem/tests/main.nf.test index ae8fcff3a..1a0dc38bc 100644 --- a/subworkflows/local/quantify_rsem/tests/main.nf.test +++ b/subworkflows/local/quantify_rsem/tests/main.nf.test @@ -5,9 +5,10 @@ nextflow_workflow { workflow "QUANTIFY_RSEM" config "./nextflow.config" - tag 'RSEM_CALCULATEEXPRESSION' - tag 'RSEM_MERGE_COUNTS' - tag 'BAM_SORT_STATS_SAMTOOLS' + tag "RSEM_PREPAREREFERENCE" + tag "RSEM_CALCULATEEXPRESSION" + tag "RSEM_MERGE_COUNTS" + tag "BAM_SORT_STATS_SAMTOOLS" test("homo_sapiens") { diff --git a/subworkflows/local/utils_nfcore_rnaseq_pipeline/tests/main.function.nf.test b/subworkflows/local/utils_nfcore_rnaseq_pipeline/tests/main.function.nf.test index 3bc86b908..37d5e6bbe 100644 --- a/subworkflows/local/utils_nfcore_rnaseq_pipeline/tests/main.function.nf.test +++ b/subworkflows/local/utils_nfcore_rnaseq_pipeline/tests/main.function.nf.test @@ -2,6 +2,7 @@ nextflow_function { name "Test Functions" script "../main.nf" + tag "UTILS_NFCORE_RNASEQ_PIPELINE" test("Test Function checkSamplesAfterGrouping success") { diff --git a/subworkflows/local/utils_nfcore_rnaseq_pipeline/tests/main.pipeline_completion.workflow.nf.test b/subworkflows/local/utils_nfcore_rnaseq_pipeline/tests/main.pipeline_completion.workflow.nf.test index 85de53a69..fb7e7a145 100644 --- a/subworkflows/local/utils_nfcore_rnaseq_pipeline/tests/main.pipeline_completion.workflow.nf.test +++ b/subworkflows/local/utils_nfcore_rnaseq_pipeline/tests/main.pipeline_completion.workflow.nf.test @@ -3,6 +3,7 @@ nextflow_workflow { name "Test Workflow PIPELINE_COMPLETION" script "../main.nf" workflow "PIPELINE_COMPLETION" + tag "UTILS_NFCORE_RNASEQ_PIPELINE" test("test PIPELINE_COMPLETION successfully completes") { diff --git a/subworkflows/nf-core/bam_dedup_stats_samtools_umitools/tests/main.nf.test b/subworkflows/nf-core/bam_dedup_stats_samtools_umitools/tests/main.nf.test index 476e7320e..ae36541fe 100644 --- a/subworkflows/nf-core/bam_dedup_stats_samtools_umitools/tests/main.nf.test +++ b/subworkflows/nf-core/bam_dedup_stats_samtools_umitools/tests/main.nf.test @@ -3,19 +3,10 @@ nextflow_workflow { name "Test Workflow BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS" script "../main.nf" workflow "BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS" - tag "subworkflows" - tag "subworkflows_nfcore" - tag "subworkflows/bam_dedup_stats_samtools_umitools" - tag "subworkflows/bam_stats_samtools" - tag "bam_dedup_stats_samtools_umitools" - tag "bam_stats_samtools" - tag "samtools" - tag "samtools/index" - tag "samtools/stats" - tag "samtools/idxstats" - tag "samtools/flagstat" - tag "umitools" - tag "umitools/dedup" + + tag "UMITOOLS_DEDUP" + tag "SAMTOOLS_INDEX" + tag "BAM_STATS_SAMTOOLS" test("sarscov2_bam_bai") { diff --git a/subworkflows/nf-core/bam_markduplicates_picard/tests/main.nf.test b/subworkflows/nf-core/bam_markduplicates_picard/tests/main.nf.test index d8d242908..bb3ef8f4d 100644 --- a/subworkflows/nf-core/bam_markduplicates_picard/tests/main.nf.test +++ b/subworkflows/nf-core/bam_markduplicates_picard/tests/main.nf.test @@ -4,19 +4,9 @@ nextflow_workflow { script "../main.nf" workflow "BAM_MARKDUPLICATES_PICARD" - tag "picard" - tag "picard/markduplicates" - tag "subworkflows" - tag "subworkflows_nfcore" - tag "bam_markduplicates_picard" - tag "subworkflows/bam_markduplicates_picard" - tag "subworkflows/bam_stats_samtools" - tag "bam_stats_samtools" - tag "samtools" - tag "samtools/flagstat" - tag "samtools/idxstats" - tag "samtools/index" - tag "samtools/stats" + tag "PICARD_MARKDUPLICATES" + tag "SAMTOOLS_INDEX" + tag "BAM_STATS_SAMTOOLS" test("sarscov2 - bam") { diff --git a/subworkflows/nf-core/bam_rseqc/tests/main.nf.test b/subworkflows/nf-core/bam_rseqc/tests/main.nf.test index cc1cea4ec..784f5dfbc 100644 --- a/subworkflows/nf-core/bam_rseqc/tests/main.nf.test +++ b/subworkflows/nf-core/bam_rseqc/tests/main.nf.test @@ -3,19 +3,15 @@ nextflow_workflow { name "Test Workflow BAM_RSEQC" script "../main.nf" workflow "BAM_RSEQC" - tag "subworkflows" - tag "subworkflows_nfcore" - tag "subworkflows/bam_rseqc" - tag "bam_rseqc" - tag "rseqc" - tag "rseqc/bamstat" - tag "rseqc/inferexperiment" - tag "rseqc/innerdistance" - tag "rseqc/junctionannotation" - tag "rseqc/junctionsaturation" - tag "rseqc/readdistribution" - tag "rseqc/readduplication" - tag "rseqc/tin" + + tag "RSEQC_BAMSTAT" + tag "RSEQC_INNERDISTANCE" + tag "RSEQC_INFEREXPERIMENT" + tag "RSEQC_JUNCTIONANNOTATION" + tag "RSEQC_JUNCTIONSATURATION" + tag "RSEQC_READDISTRIBUTION" + tag "RSEQC_READDUPLICATION" + tag "RSEQC_TIN" test("sarscov2 paired-end [bam]") { diff --git a/subworkflows/nf-core/bam_sort_stats_samtools/tests/main.nf.test b/subworkflows/nf-core/bam_sort_stats_samtools/tests/main.nf.test index 75b5b9345..18a971352 100644 --- a/subworkflows/nf-core/bam_sort_stats_samtools/tests/main.nf.test +++ b/subworkflows/nf-core/bam_sort_stats_samtools/tests/main.nf.test @@ -3,18 +3,10 @@ nextflow_workflow { name "Test Workflow BAM_SORT_STATS_SAMTOOLS" script "../main.nf" workflow "BAM_SORT_STATS_SAMTOOLS" - tag "subworkflows" - tag "subworkflows_nfcore" - tag "subworkflows/bam_sort_stats_samtools" - tag "bam_sort_stats_samtools" - tag "subworkflows/bam_stats_samtools" - tag "bam_stats_samtools" - tag "samtools" - tag "samtools/index" - tag "samtools/sort" - tag "samtools/stats" - tag "samtools/idxstats" - tag "samtools/flagstat" + + tag "SAMTOOLS_SORT" + tag "SAMTOOLS_INDEX" + tag "BAM_STATS_SAMTOOLS" test("test_bam_sort_stats_samtools_single_end") { diff --git a/subworkflows/nf-core/bam_stats_samtools/tests/main.nf.test b/subworkflows/nf-core/bam_stats_samtools/tests/main.nf.test index c8b21f280..0a6bff66a 100644 --- a/subworkflows/nf-core/bam_stats_samtools/tests/main.nf.test +++ b/subworkflows/nf-core/bam_stats_samtools/tests/main.nf.test @@ -3,14 +3,10 @@ nextflow_workflow { name "Test Workflow BAM_STATS_SAMTOOLS" script "../main.nf" workflow "BAM_STATS_SAMTOOLS" - tag "subworkflows" - tag "subworkflows_nfcore" - tag "bam_stats_samtools" - tag "subworkflows/bam_stats_samtools" - tag "samtools" - tag "samtools/flagstat" - tag "samtools/idxstats" - tag "samtools/stats" + + tag "SAMTOOLS_STATS" + tag "SAMTOOLS_IDXSTATS" + tag "SAMTOOLS_FLAGSTAT" test("test_bam_stats_samtools_single_end") { diff --git a/subworkflows/nf-core/bedgraph_bedclip_bedgraphtobigwig/tests/main.nf.test b/subworkflows/nf-core/bedgraph_bedclip_bedgraphtobigwig/tests/main.nf.test index 620bc8ba0..992ded0d1 100644 --- a/subworkflows/nf-core/bedgraph_bedclip_bedgraphtobigwig/tests/main.nf.test +++ b/subworkflows/nf-core/bedgraph_bedclip_bedgraphtobigwig/tests/main.nf.test @@ -4,14 +4,10 @@ nextflow_workflow { script "../main.nf" workflow "BEDGRAPH_BEDCLIP_BEDGRAPHTOBIGWIG" config "./nextflow.config" - tag "subworkflows" - tag "subworkflows_nfcore" - tag "subworkflows/bedgraph_bedclip_bedgraphtobigwig" - tag "bedgraph_bedclip_bedgraphtobigwig" - tag "ucsc" - tag "ucsc/bedclip" - tag "ucsc/bedgraphtobigwig" + tag "UCSC_BEDCLIP" + tag "UCSC_BEDGRAPHTOBIGWIG" + test("sarscov2 [bedgraph] [genome_sizes]") { when { diff --git a/subworkflows/nf-core/fastq_align_hisat2/tests/main.nf.test b/subworkflows/nf-core/fastq_align_hisat2/tests/main.nf.test index b0c0ca512..51f7e20d5 100644 --- a/subworkflows/nf-core/fastq_align_hisat2/tests/main.nf.test +++ b/subworkflows/nf-core/fastq_align_hisat2/tests/main.nf.test @@ -5,50 +5,40 @@ nextflow_workflow { workflow "FASTQ_ALIGN_HISAT2" config "./nextflow.config" - tag "subworkflows" - tag "subworkflows_nfcore" - tag "subworkflows/fastq_align_hisat2" + tag "HISAT2_EXTRACTSPLICESITES" + tag "HISAT2_BUILD" + tag "HISAT2_ALIGN" + tag "BAM_SORT_STATS_SAMTOOLS" - tag "hisat2/align" - tag "hisat2/build" - tag "hisat2/extractsplicesites" - - tag "samtools/flagstat" - tag "samtools/idxstats" - tag "samtools/index" - tag "samtools/sort" - tag "samtools/stats" - tag "subworkflows/bam_sort_stats_samtools" - - setup { - run("HISAT2_EXTRACTSPLICESITES") { - script "../../../../modules/nf-core/hisat2/extractsplicesites/main.nf" - process { - """ - input[0] = Channel.of([ - [id: 'test'], - file(params.modules_testdata_base_path + "genomics/sarscov2/genome/genome.gtf", checkIfExists: true) - ]) - """ - } + setup { + run("HISAT2_EXTRACTSPLICESITES") { + script "../../../../modules/nf-core/hisat2/extractsplicesites/main.nf" + process { + """ + input[0] = Channel.of([ + [id: 'test'], + file(params.modules_testdata_base_path + "genomics/sarscov2/genome/genome.gtf", checkIfExists: true) + ]) + """ } - run("HISAT2_BUILD") { - script "../../../../modules/nf-core/hisat2/build/main.nf" - process { - """ - input[0] = Channel.of([ - [id: 'test'], - file(params.modules_testdata_base_path + "genomics/sarscov2/genome/genome.fasta", checkIfExists: true) - ]) - input[1] = Channel.of([ - [id: 'test'], - file(params.modules_testdata_base_path + "genomics/sarscov2/genome/genome.gtf", checkIfExists: true) - ]) - input[2] = HISAT2_EXTRACTSPLICESITES.out.txt - """ - } + } + run("HISAT2_BUILD") { + script "../../../../modules/nf-core/hisat2/build/main.nf" + process { + """ + input[0] = Channel.of([ + [id: 'test'], + file(params.modules_testdata_base_path + "genomics/sarscov2/genome/genome.fasta", checkIfExists: true) + ]) + input[1] = Channel.of([ + [id: 'test'], + file(params.modules_testdata_base_path + "genomics/sarscov2/genome/genome.gtf", checkIfExists: true) + ]) + input[2] = HISAT2_EXTRACTSPLICESITES.out.txt + """ } } + } test("sarscov2 - bam - single_end") { diff --git a/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/main.nf.test b/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/main.nf.test index 8f1d82d39..7dc05d923 100644 --- a/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/main.nf.test +++ b/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/main.nf.test @@ -3,14 +3,10 @@ nextflow_workflow { name "Test Workflow FASTQ_FASTQC_UMITOOLS_FASTP" script "../main.nf" workflow "FASTQ_FASTQC_UMITOOLS_FASTP" - tag "subworkflows" - tag "subworkflows_nfcore" - tag "subworkflows/fastq_fastqc_umitools_fastp" - tag "fastq_fastqc_umitools_fastp" - tag "fastqc" - tag "umitools/extract" - tag "fastp" + tag "FASTQC" + tag "UMITOOLS_EXTRACT" + tag "FASTP" test("sarscov2 paired-end [fastq]") { diff --git a/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/tests/main.nf.test b/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/tests/main.nf.test index 79f71d2d4..10681e8a2 100644 --- a/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/tests/main.nf.test +++ b/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/tests/main.nf.test @@ -5,13 +5,6 @@ nextflow_workflow { workflow "FASTQ_FASTQC_UMITOOLS_TRIMGALORE" config './nextflow.config' - tag "subworkflows" - tag "subworkflows_nfcore" - tag "subworkflows/fastq_fastqc_umitools_trimgalore" - tag "fastqc" - tag "umitools/extract" - tag "trimgalore" - tag "FASTQC" tag "UMITOOLS_EXTRACT" tag "TRIMGALORE" diff --git a/subworkflows/nf-core/fastq_subsample_fq_salmon/tests/main.nf.test b/subworkflows/nf-core/fastq_subsample_fq_salmon/tests/main.nf.test index 6342449a1..949e6861b 100644 --- a/subworkflows/nf-core/fastq_subsample_fq_salmon/tests/main.nf.test +++ b/subworkflows/nf-core/fastq_subsample_fq_salmon/tests/main.nf.test @@ -4,13 +4,10 @@ nextflow_workflow { script "../main.nf" workflow "FASTQ_SUBSAMPLE_FQ_SALMON" config "./nextflow.config" - tag "subworkflows" - tag "subworkflows_nfcore" - tag "subworkflows/fastq_subsample_fq_salmon" - tag "fastq_subsample_fq_salmon" - tag "salmon/index" - tag "fq/subsample" - tag "salmon/quant" + + tag "SALMON_INDEX" + tag "FQ_SUBSAMPLE" + tag "SALMON_QUANT" test("homo_sapiens paired-end [fastq]") { diff --git a/subworkflows/nf-core/utils_nextflow_pipeline/tests/main.function.nf.test b/subworkflows/nf-core/utils_nextflow_pipeline/tests/main.function.nf.test index 68718e4f5..8b838192f 100644 --- a/subworkflows/nf-core/utils_nextflow_pipeline/tests/main.function.nf.test +++ b/subworkflows/nf-core/utils_nextflow_pipeline/tests/main.function.nf.test @@ -4,10 +4,8 @@ nextflow_function { name "Test Functions" script "subworkflows/nf-core/utils_nextflow_pipeline/main.nf" config "subworkflows/nf-core/utils_nextflow_pipeline/tests/nextflow.config" - tag 'subworkflows' - tag 'utils_nextflow_pipeline' - tag 'subworkflows/utils_nextflow_pipeline' - + tag "UTILS_NEXTFLOW_PIPELINE" + test("Test Function getWorkflowVersion") { function "getWorkflowVersion" 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 ca964ce8e..13782037c 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 @@ -4,9 +4,6 @@ nextflow_workflow { script "../main.nf" config "subworkflows/nf-core/utils_nextflow_pipeline/tests/nextflow.config" workflow "UTILS_NEXTFLOW_PIPELINE" - tag 'subworkflows' - tag 'utils_nextflow_pipeline' - tag 'subworkflows/utils_nextflow_pipeline' test("Should run no inputs") { diff --git a/subworkflows/nf-core/utils_nfcore_pipeline/tests/main.function.nf.test b/subworkflows/nf-core/utils_nfcore_pipeline/tests/main.function.nf.test index 1dc317f8f..41b8d19e2 100644 --- a/subworkflows/nf-core/utils_nfcore_pipeline/tests/main.function.nf.test +++ b/subworkflows/nf-core/utils_nfcore_pipeline/tests/main.function.nf.test @@ -3,11 +3,8 @@ nextflow_function { name "Test Functions" script "../main.nf" - config "subworkflows/nf-core/utils_nfcore_pipeline/tests/nextflow.config" - tag "subworkflows" - tag "subworkflows_nfcore" - tag "utils_nfcore_pipeline" - tag "subworkflows/utils_nfcore_pipeline" + config "subworkflows/nf-core/utils_nfcore_pipeline/tests/nextflow.config" + tag "UTILS_NFCORE_PIPELINE" test("Test Function checkConfigProvided") { diff --git a/subworkflows/nf-core/utils_nfcore_pipeline/tests/main.workflow.nf.test b/subworkflows/nf-core/utils_nfcore_pipeline/tests/main.workflow.nf.test index 8940d32d1..ff1ae72a9 100644 --- a/subworkflows/nf-core/utils_nfcore_pipeline/tests/main.workflow.nf.test +++ b/subworkflows/nf-core/utils_nfcore_pipeline/tests/main.workflow.nf.test @@ -4,10 +4,6 @@ nextflow_workflow { script "../main.nf" config "subworkflows/nf-core/utils_nfcore_pipeline/tests/nextflow.config" workflow "UTILS_NFCORE_PIPELINE" - tag "subworkflows" - tag "subworkflows_nfcore" - tag "utils_nfcore_pipeline" - tag "subworkflows/utils_nfcore_pipeline" test("Should run without failures") { diff --git a/subworkflows/nf-core/utils_nfvalidation_plugin/tests/main.nf.test b/subworkflows/nf-core/utils_nfvalidation_plugin/tests/main.nf.test index 5784a33f2..5649654e6 100644 --- a/subworkflows/nf-core/utils_nfvalidation_plugin/tests/main.nf.test +++ b/subworkflows/nf-core/utils_nfvalidation_plugin/tests/main.nf.test @@ -3,12 +3,6 @@ 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") { From 7b6397352deaa4bfb56a83c3e12a6eb0969f3404 Mon Sep 17 00:00:00 2001 From: Harshil Patel Date: Wed, 13 Mar 2024 19:16:04 +0000 Subject: [PATCH 258/634] Update CHANGELOG --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3bd574684..a8ad30d25 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -60,6 +60,7 @@ Thank you to everyone else that has contributed by reporting bugs, enhancements - [PR #1250](https://github.com/nf-core/rnaseq/pull/1250) - Remove all tags.yml files because the testing system has changed - [PR #1251](https://github.com/nf-core/rnaseq/pull/1251) - Replace deseq2_qc paths - [PR #1265](https://github.com/nf-core/rnaseq/pull/1265) - Small updates noticed during code review +- [PR #1266](https://github.com/nf-core/rnaseq/pull/1266) - Delete unecessary tags from nf.test files for modules and subworkflows ### Parameters From c169f3534694d9277834d81d65aa917fac7b75de Mon Sep 17 00:00:00 2001 From: Adam Talbot <12817534+adamrtalbot@users.noreply.github.com> Date: Thu, 14 Mar 2024 12:29:59 +0000 Subject: [PATCH 259/634] Remove indexing on output channels --- .../local/prepare_genome/tests/main.nf.test | 12 +- .../prepare_genome/tests/main.nf.test.snap | 518 +++++++++++++----- 2 files changed, 393 insertions(+), 137 deletions(-) diff --git a/subworkflows/local/prepare_genome/tests/main.nf.test b/subworkflows/local/prepare_genome/tests/main.nf.test index 4ecb450b8..a553b00dd 100644 --- a/subworkflows/local/prepare_genome/tests/main.nf.test +++ b/subworkflows/local/prepare_genome/tests/main.nf.test @@ -550,8 +550,8 @@ nextflow_workflow { assertAll( { assert workflow.success}, { assert snapshot( - workflow.out.transcript_fasta[0][1], - workflow.out.salmon_index[0][1], + workflow.out.transcript_fasta, + workflow.out.salmon_index, workflow.out.fasta, workflow.out.gtf, workflow.out.fai, @@ -618,8 +618,8 @@ nextflow_workflow { assertAll( { assert workflow.success}, { assert snapshot( - workflow.out.transcript_fasta[0][1], - workflow.out.salmon_index[0][1], + workflow.out.transcript_fasta, + workflow.out.salmon_index, workflow.out.fasta, workflow.out.gtf, workflow.out.fai, @@ -686,8 +686,8 @@ nextflow_workflow { assertAll( { assert workflow.success}, { assert snapshot( - workflow.out.transcript_fasta[0][1], - workflow.out.salmon_index[0][1], + workflow.out.transcript_fasta, + workflow.out.salmon_index, workflow.out.fasta, workflow.out.gtf, workflow.out.fai, diff --git a/subworkflows/local/prepare_genome/tests/main.nf.test.snap b/subworkflows/local/prepare_genome/tests/main.nf.test.snap index e00381265..2121a7ee5 100644 --- a/subworkflows/local/prepare_genome/tests/main.nf.test.snap +++ b/subworkflows/local/prepare_genome/tests/main.nf.test.snap @@ -22,12 +22,24 @@ [ "genome_gfp.fasta.sizes:md5,9b755f8f349b14accefb4d859f84de26" ], - [], - [], - [], - [], - [], - [], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], [ "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", "versions.yml:md5,1cd265cb86a23a27f683ffb2459f37f5", @@ -48,7 +60,9 @@ [ "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" ], - [], + [ + + ], [ "genome_gfp.fasta:md5,e23e302af63736a199985a169fdac055" ], @@ -64,12 +78,24 @@ [ "genome_gfp.fasta.sizes:md5,9b755f8f349b14accefb4d859f84de26" ], - [], - [], - [], - [], - [], - [], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], [ "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", "versions.yml:md5,1cd265cb86a23a27f683ffb2459f37f5", @@ -107,12 +133,24 @@ [ "genome_gfp.fasta.sizes:md5,9b755f8f349b14accefb4d859f84de26" ], - [], - [], - [], - [], - [], - [], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], [ "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", "versions.yml:md5,1cd265cb86a23a27f683ffb2459f37f5", @@ -150,12 +188,24 @@ [ "genome_gfp.fasta.sizes:md5,9b755f8f349b14accefb4d859f84de26" ], - [], - [], - [], - [], - [], - [], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], [ "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", "versions.yml:md5,1cd265cb86a23a27f683ffb2459f37f5", @@ -192,12 +242,24 @@ [ "genome_gfp.fasta.sizes:md5,9b755f8f349b14accefb4d859f84de26" ], - [], - [], - [], - [], - [], - [], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], [ "versions.yml:md5,0a23f0be65eb55b48ae71fe6e69a25a9", "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", @@ -216,8 +278,12 @@ }, "gfp = false": { "content": [ - "n", - "n", + [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" + ], + [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" + ], [ "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/genome.fasta" ], @@ -233,12 +299,24 @@ [ "genome.fasta.sizes:md5,29218009212157c49dbc6596621ec780" ], - [], - [], - [], - [], - [], - [], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], [ "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", "versions.yml:md5,58fa668eeacb984c10df6f856f2c9291", @@ -250,7 +328,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-03-13T11:36:15.643314" + "timestamp": "2024-03-13T17:43:51.41041" }, "skip_bbsplit": { "content": [ @@ -275,12 +353,24 @@ [ "genome_gfp.fasta.sizes:md5,9b755f8f349b14accefb4d859f84de26" ], - [], - [], - [], - [], - [], - [], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], [ "versions.yml:md5,1cd265cb86a23a27f683ffb2459f37f5", "versions.yml:md5,58fa668eeacb984c10df6f856f2c9291", @@ -317,12 +407,24 @@ [ "genome_gfp.fasta.sizes:md5,9b755f8f349b14accefb4d859f84de26" ], - [], - [], - [], - [], - [], - [], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], [ "versions.yml:md5,1cd265cb86a23a27f683ffb2459f37f5", "versions.yml:md5,58fa668eeacb984c10df6f856f2c9291", @@ -359,12 +461,24 @@ [ "genome_gfp.fasta.sizes:md5,9b755f8f349b14accefb4d859f84de26" ], - [], - [], - [], - [], - [], - [], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], [ "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", "versions.yml:md5,1cd265cb86a23a27f683ffb2459f37f5", @@ -401,12 +515,24 @@ [ "genome_gfp.fasta.sizes:md5,9b755f8f349b14accefb4d859f84de26" ], - [], - [], - [], - [], - [], - [], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], [ "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", "versions.yml:md5,1cd265cb86a23a27f683ffb2459f37f5", @@ -444,12 +570,24 @@ [ "genome_gfp.fasta.sizes:md5,9b755f8f349b14accefb4d859f84de26" ], - [], - [], - [], - [], - [], - [], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], [ "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", "versions.yml:md5,1cd265cb86a23a27f683ffb2459f37f5", @@ -466,8 +604,12 @@ }, "gff = false": { "content": [ - "n", - "n", + [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" + ], + [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" + ], [ "genome_gfp.fasta:md5,e23e302af63736a199985a169fdac055" ], @@ -483,12 +625,24 @@ [ "genome_gfp.fasta.sizes:md5,9b755f8f349b14accefb4d859f84de26" ], - [], - [], - [], - [], - [], - [], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], [ "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", "versions.yml:md5,1cd265cb86a23a27f683ffb2459f37f5", @@ -501,7 +655,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-03-13T11:35:50.527041" + "timestamp": "2024-03-13T17:43:27.87968" }, "default options": { "content": [ @@ -526,12 +680,24 @@ [ "genome_gfp.fasta.sizes:md5,9b755f8f349b14accefb4d859f84de26" ], - [], - [], - [], - [], - [], - [], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], [ "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", "versions.yml:md5,1cd265cb86a23a27f683ffb2459f37f5", @@ -551,7 +717,9 @@ [ "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" ], - [], + [ + + ], [ "genome_gfp.fasta:md5,e23e302af63736a199985a169fdac055" ], @@ -567,12 +735,24 @@ [ "genome_gfp.fasta.sizes:md5,9b755f8f349b14accefb4d859f84de26" ], - [], - [], - [], - [], - [], - [], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], [ "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", "versions.yml:md5,1cd265cb86a23a27f683ffb2459f37f5", @@ -610,12 +790,24 @@ [ "genome_gfp.fasta.sizes:md5,9b755f8f349b14accefb4d859f84de26" ], - [], - [], - [], - [], - [], - [], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], [ "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", "versions.yml:md5,1cd265cb86a23a27f683ffb2459f37f5", @@ -653,12 +845,24 @@ [ "genome_gfp.fasta.sizes:md5,9b755f8f349b14accefb4d859f84de26" ], - [], - [], - [], - [], - [], - [], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], [ "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", "versions.yml:md5,1cd265cb86a23a27f683ffb2459f37f5", @@ -675,8 +879,12 @@ }, "transcriptome = false": { "content": [ - "U", - "n", + [ + "genome.transcripts.fa:md5,b89a3e02ad30ba3fd600f98c8e2f58d4" + ], + [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" + ], [ "genome_gfp.fasta:md5,e23e302af63736a199985a169fdac055" ], @@ -692,12 +900,24 @@ [ "genome_gfp.fasta.sizes:md5,9b755f8f349b14accefb4d859f84de26" ], - [], - [], - [], - [], - [], - [], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], [ "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", "versions.yml:md5,1cd265cb86a23a27f683ffb2459f37f5", @@ -711,7 +931,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-03-13T11:36:49.613539" + "timestamp": "2024-03-13T17:44:23.836038" }, "skip_pseudoalignment = true": { "content": [ @@ -736,12 +956,24 @@ [ "genome_gfp.fasta.sizes:md5,9b755f8f349b14accefb4d859f84de26" ], - [], - [], - [], - [], - [], - [], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], [ "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", "versions.yml:md5,1cd265cb86a23a27f683ffb2459f37f5", @@ -779,12 +1011,24 @@ [ "genome_gfp.fasta.sizes:md5,9b755f8f349b14accefb4d859f84de26" ], - [], - [], - [], - [], - [], - [], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], [ "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", "versions.yml:md5,1cd265cb86a23a27f683ffb2459f37f5", @@ -822,12 +1066,24 @@ [ "genome_gfp.fasta.sizes:md5,9b755f8f349b14accefb4d859f84de26" ], - [], - [], - [], - [], - [], - [], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], [ "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", "versions.yml:md5,1cd265cb86a23a27f683ffb2459f37f5", From 4d1a32eba9d44d7e220ac96c2f30a8b3e8a90861 Mon Sep 17 00:00:00 2001 From: Adam Talbot <12817534+adamrtalbot@users.noreply.github.com> Date: Fri, 15 Mar 2024 14:09:59 +0000 Subject: [PATCH 260/634] Update snap --- tests/main.nf.test.snap | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/main.nf.test.snap b/tests/main.nf.test.snap index 8c31b50a1..1170c2912 100644 --- a/tests/main.nf.test.snap +++ b/tests/main.nf.test.snap @@ -1,7 +1,7 @@ { "software_versions": { "content": [ - "{BBMAP_BBSPLIT={bbmap=39.01}, BEDTOOLS_GENOMECOV_FW={bedtools=2.31.1}, CAT_FASTQ={cat=8.3}, CUSTOM_CATADDITIONALFASTA={python=3.9.5}, CUSTOM_GETCHROMSIZES={getchromsizes=1.16.1}, CUSTOM_TX2GENE={python=3.9.5}, DESEQ2_QC_PSEUDO={r-base=4.0.3, bioconductor-deseq2=1.28.0}, DESEQ2_QC_STAR_SALMON={r-base=4.0.3, bioconductor-deseq2=1.28.0}, DUPRADAR={bioconductor-dupradar=1.32.0}, FASTQC={fastqc=0.12.1}, FQ_SUBSAMPLE={fq=0.9.1 (2022-02-22)}, GTF2BED={perl=5.26.2}, GTF_FILTER={python=3.9.5}, GUNZIP_ADDITIONAL_FASTA={gunzip=1.1}, GUNZIP_GTF={gunzip=1.1}, MULTIQC_CUSTOM_BIOTYPE={python=3.9.5}, PICARD_MARKDUPLICATES={picard=3.1.1}, QUALIMAP_RNASEQ={qualimap=2.3}, RSEQC_BAMSTAT={rseqc=5.0.2}, RSEQC_INFEREXPERIMENT={rseqc=5.0.2}, RSEQC_INNERDISTANCE={rseqc=5.0.2}, RSEQC_JUNCTIONANNOTATION={rseqc=5.0.2}, RSEQC_JUNCTIONSATURATION={rseqc=5.0.2}, RSEQC_READDISTRIBUTION={rseqc=5.0.2}, RSEQC_READDUPLICATION={rseqc=5.0.2}, SALMON_QUANT={salmon=1.10.1}, SAMTOOLS_FLAGSTAT={samtools=1.19.2}, SAMTOOLS_IDXSTATS={samtools=1.19.2}, SAMTOOLS_INDEX={samtools=1.19.2}, SAMTOOLS_SORT={samtools=1.19.2}, SAMTOOLS_STATS={samtools=1.19.2}, SE_GENE={r-base=4.3.2, bioconductor-summarizedexperiment=1.32.0}, STAR_ALIGN={star=2.7.10a, samtools=1.18, gawk=5.1.0}, STAR_GENOMEGENERATE={star=2.7.10a, samtools=1.18, gawk=5.1.0}, STRINGTIE_STRINGTIE={stringtie=2.2.1}, SUBREAD_FEATURECOUNTS={subread=2.0.1}, TRIMGALORE={trimgalore=0.6.7, cutadapt=3.4}, TXIMETA_TXIMPORT={r-base=4.3.2, bioconductor-tximeta=1.20.1}, UCSC_BEDCLIP={ucsc=377}, UCSC_BEDGRAPHTOBIGWIG={ucsc=445}, UNTAR_SALMON_INDEX={untar=1.3}, Workflow={nf-core/rnaseq=v3.15.0dev}}" + "{BBMAP_BBSPLIT={bbmap=39.01}, BEDTOOLS_GENOMECOV_FW={bedtools=2.31.1}, CAT_FASTQ={cat=8.3}, CUSTOM_CATADDITIONALFASTA={python=3.9.5}, CUSTOM_GETCHROMSIZES={getchromsizes=1.16.1}, CUSTOM_TX2GENE={python=3.9.5}, DESEQ2_QC_PSEUDO={r-base=4.0.3, bioconductor-deseq2=1.28.0}, DESEQ2_QC_STAR_SALMON={r-base=4.0.3, bioconductor-deseq2=1.28.0}, DUPRADAR={bioconductor-dupradar=1.32.0}, FASTQC={fastqc=0.12.1}, FQ_SUBSAMPLE={fq=0.9.1 (2022-02-22)}, GTF2BED={perl=5.26.2}, GTF_FILTER={python=3.9.5}, GUNZIP_ADDITIONAL_FASTA={gunzip=1.1}, GUNZIP_GTF={gunzip=1.1}, MULTIQC_CUSTOM_BIOTYPE={python=3.9.5}, PICARD_MARKDUPLICATES={picard=3.1.1}, QUALIMAP_RNASEQ={qualimap=2.3}, RSEQC_BAMSTAT={rseqc=5.0.2}, RSEQC_INFEREXPERIMENT={rseqc=5.0.2}, RSEQC_INNERDISTANCE={rseqc=5.0.2}, RSEQC_JUNCTIONANNOTATION={rseqc=5.0.2}, RSEQC_JUNCTIONSATURATION={rseqc=5.0.2}, RSEQC_READDISTRIBUTION={rseqc=5.0.2}, RSEQC_READDUPLICATION={rseqc=5.0.2}, SALMON_QUANT={salmon=1.10.1}, SAMTOOLS_FLAGSTAT={samtools=1.19.2}, SAMTOOLS_IDXSTATS={samtools=1.19.2}, SAMTOOLS_INDEX={samtools=1.19.2}, SAMTOOLS_SORT={samtools=1.19.2}, SAMTOOLS_STATS={samtools=1.19.2}, SE_GENE={bioconductor-summarizedexperiment=1.32.0}, STAR_ALIGN={star=2.7.10a, samtools=1.18, gawk=5.1.0}, STAR_GENOMEGENERATE={star=2.7.10a, samtools=1.18, gawk=5.1.0}, STRINGTIE_STRINGTIE={stringtie=2.2.1}, SUBREAD_FEATURECOUNTS={subread=2.0.1}, TRIMGALORE={trimgalore=0.6.7, cutadapt=3.4}, TXIMETA_TXIMPORT={r-base=4.3.2, bioconductor-tximeta=1.20.1}, UCSC_BEDCLIP={ucsc=377}, UCSC_BEDGRAPHTOBIGWIG={ucsc=445}, UNTAR_SALMON_INDEX={untar=1.3}, Workflow={nf-core/rnaseq=v3.15.0dev}}" ], "meta": { "nf-test": "0.8.4", @@ -9,4 +9,4 @@ }, "timestamp": "2024-03-04T12:40:26.161319" } -} +} \ No newline at end of file From f40086539798012436f39dfb3d73c1c2733a099c Mon Sep 17 00:00:00 2001 From: Adam Talbot <12817534+adamrtalbot@users.noreply.github.com> Date: Fri, 15 Mar 2024 14:14:29 +0000 Subject: [PATCH 261/634] Bug fixes and improvements --- .github/python/find_changed_files.py | 6 ++++-- .github/python/include.yaml | 16 ++++++++-------- .nf-core.yml | 1 + 3 files changed, 13 insertions(+), 10 deletions(-) diff --git a/.github/python/find_changed_files.py b/.github/python/find_changed_files.py index 2e24ab742..c0c617527 100644 --- a/.github/python/find_changed_files.py +++ b/.github/python/find_changed_files.py @@ -265,14 +265,16 @@ def find_changed_dependencies(paths: list[Path], tags: list[str]) -> list[Path]: # Get all tags from nf-test file # Make case insensitive with .casefold() tags_in_nf_test_file = [ - tag.casefold() + tag.casefold().replace("/", "_") for tag in convert_nf_test_files_to_test_types(lines, types=["tag"])[ "tag" ] ] # Check if tag in nf-test file appears in a tag. # Use .casefold() to be case insensitive - if any(tag.casefold() in tags_in_nf_test_file for tag in tags): + if any( + tag.casefold().replace("/", "_") in tags_in_nf_test_file for tag in tags + ): result.append(nf_test_file) return result diff --git a/.github/python/include.yaml b/.github/python/include.yaml index c3b692462..a3629f4c4 100644 --- a/.github/python/include.yaml +++ b/.github/python/include.yaml @@ -1,10 +1,10 @@ ".": - - .github/workflows/** - - nf-test.config - - nextflow.config + - ./.github/workflows/** + - ./nf-test.config + - ./nextflow.config tests: - - assets/* - - bin/* - - conf/* - - main.nf - - nextflow_schema.json + - ./assets/* + - ./bin/* + - ./conf/* + - ./main.nf + - ./nextflow_schema.json diff --git a/.nf-core.yml b/.nf-core.yml index 765d2608a..b9bb77501 100644 --- a/.nf-core.yml +++ b/.nf-core.yml @@ -1,5 +1,6 @@ repository_type: pipeline lint: + actions_ci: false files_unchanged: - assets/email_template.html - assets/email_template.txt From 48e154a167f31c5ce126ec760b0303de2ec3a86b Mon Sep 17 00:00:00 2001 From: Adam Talbot <12817534+adamrtalbot@users.noreply.github.com> Date: Fri, 15 Mar 2024 16:59:41 +0000 Subject: [PATCH 262/634] Remove R from Snap --- tests/main.nf.test.snap | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/main.nf.test.snap b/tests/main.nf.test.snap index 8c31b50a1..1170c2912 100644 --- a/tests/main.nf.test.snap +++ b/tests/main.nf.test.snap @@ -1,7 +1,7 @@ { "software_versions": { "content": [ - "{BBMAP_BBSPLIT={bbmap=39.01}, BEDTOOLS_GENOMECOV_FW={bedtools=2.31.1}, CAT_FASTQ={cat=8.3}, CUSTOM_CATADDITIONALFASTA={python=3.9.5}, CUSTOM_GETCHROMSIZES={getchromsizes=1.16.1}, CUSTOM_TX2GENE={python=3.9.5}, DESEQ2_QC_PSEUDO={r-base=4.0.3, bioconductor-deseq2=1.28.0}, DESEQ2_QC_STAR_SALMON={r-base=4.0.3, bioconductor-deseq2=1.28.0}, DUPRADAR={bioconductor-dupradar=1.32.0}, FASTQC={fastqc=0.12.1}, FQ_SUBSAMPLE={fq=0.9.1 (2022-02-22)}, GTF2BED={perl=5.26.2}, GTF_FILTER={python=3.9.5}, GUNZIP_ADDITIONAL_FASTA={gunzip=1.1}, GUNZIP_GTF={gunzip=1.1}, MULTIQC_CUSTOM_BIOTYPE={python=3.9.5}, PICARD_MARKDUPLICATES={picard=3.1.1}, QUALIMAP_RNASEQ={qualimap=2.3}, RSEQC_BAMSTAT={rseqc=5.0.2}, RSEQC_INFEREXPERIMENT={rseqc=5.0.2}, RSEQC_INNERDISTANCE={rseqc=5.0.2}, RSEQC_JUNCTIONANNOTATION={rseqc=5.0.2}, RSEQC_JUNCTIONSATURATION={rseqc=5.0.2}, RSEQC_READDISTRIBUTION={rseqc=5.0.2}, RSEQC_READDUPLICATION={rseqc=5.0.2}, SALMON_QUANT={salmon=1.10.1}, SAMTOOLS_FLAGSTAT={samtools=1.19.2}, SAMTOOLS_IDXSTATS={samtools=1.19.2}, SAMTOOLS_INDEX={samtools=1.19.2}, SAMTOOLS_SORT={samtools=1.19.2}, SAMTOOLS_STATS={samtools=1.19.2}, SE_GENE={r-base=4.3.2, bioconductor-summarizedexperiment=1.32.0}, STAR_ALIGN={star=2.7.10a, samtools=1.18, gawk=5.1.0}, STAR_GENOMEGENERATE={star=2.7.10a, samtools=1.18, gawk=5.1.0}, STRINGTIE_STRINGTIE={stringtie=2.2.1}, SUBREAD_FEATURECOUNTS={subread=2.0.1}, TRIMGALORE={trimgalore=0.6.7, cutadapt=3.4}, TXIMETA_TXIMPORT={r-base=4.3.2, bioconductor-tximeta=1.20.1}, UCSC_BEDCLIP={ucsc=377}, UCSC_BEDGRAPHTOBIGWIG={ucsc=445}, UNTAR_SALMON_INDEX={untar=1.3}, Workflow={nf-core/rnaseq=v3.15.0dev}}" + "{BBMAP_BBSPLIT={bbmap=39.01}, BEDTOOLS_GENOMECOV_FW={bedtools=2.31.1}, CAT_FASTQ={cat=8.3}, CUSTOM_CATADDITIONALFASTA={python=3.9.5}, CUSTOM_GETCHROMSIZES={getchromsizes=1.16.1}, CUSTOM_TX2GENE={python=3.9.5}, DESEQ2_QC_PSEUDO={r-base=4.0.3, bioconductor-deseq2=1.28.0}, DESEQ2_QC_STAR_SALMON={r-base=4.0.3, bioconductor-deseq2=1.28.0}, DUPRADAR={bioconductor-dupradar=1.32.0}, FASTQC={fastqc=0.12.1}, FQ_SUBSAMPLE={fq=0.9.1 (2022-02-22)}, GTF2BED={perl=5.26.2}, GTF_FILTER={python=3.9.5}, GUNZIP_ADDITIONAL_FASTA={gunzip=1.1}, GUNZIP_GTF={gunzip=1.1}, MULTIQC_CUSTOM_BIOTYPE={python=3.9.5}, PICARD_MARKDUPLICATES={picard=3.1.1}, QUALIMAP_RNASEQ={qualimap=2.3}, RSEQC_BAMSTAT={rseqc=5.0.2}, RSEQC_INFEREXPERIMENT={rseqc=5.0.2}, RSEQC_INNERDISTANCE={rseqc=5.0.2}, RSEQC_JUNCTIONANNOTATION={rseqc=5.0.2}, RSEQC_JUNCTIONSATURATION={rseqc=5.0.2}, RSEQC_READDISTRIBUTION={rseqc=5.0.2}, RSEQC_READDUPLICATION={rseqc=5.0.2}, SALMON_QUANT={salmon=1.10.1}, SAMTOOLS_FLAGSTAT={samtools=1.19.2}, SAMTOOLS_IDXSTATS={samtools=1.19.2}, SAMTOOLS_INDEX={samtools=1.19.2}, SAMTOOLS_SORT={samtools=1.19.2}, SAMTOOLS_STATS={samtools=1.19.2}, SE_GENE={bioconductor-summarizedexperiment=1.32.0}, STAR_ALIGN={star=2.7.10a, samtools=1.18, gawk=5.1.0}, STAR_GENOMEGENERATE={star=2.7.10a, samtools=1.18, gawk=5.1.0}, STRINGTIE_STRINGTIE={stringtie=2.2.1}, SUBREAD_FEATURECOUNTS={subread=2.0.1}, TRIMGALORE={trimgalore=0.6.7, cutadapt=3.4}, TXIMETA_TXIMPORT={r-base=4.3.2, bioconductor-tximeta=1.20.1}, UCSC_BEDCLIP={ucsc=377}, UCSC_BEDGRAPHTOBIGWIG={ucsc=445}, UNTAR_SALMON_INDEX={untar=1.3}, Workflow={nf-core/rnaseq=v3.15.0dev}}" ], "meta": { "nf-test": "0.8.4", @@ -9,4 +9,4 @@ }, "timestamp": "2024-03-04T12:40:26.161319" } -} +} \ No newline at end of file From 3d73f2c971563788832621b47d2012c1a7ad4848 Mon Sep 17 00:00:00 2001 From: Adam Talbot <12817534+adamrtalbot@users.noreply.github.com> Date: Tue, 19 Mar 2024 13:45:37 +0000 Subject: [PATCH 263/634] Update trimming subworkflow to include more tests --- modules.json | 4 +- modules/nf-core/fastp/main.nf | 2 +- modules/nf-core/fastp/tests/main.nf.test | 21 +- modules/nf-core/fastp/tests/main.nf.test.snap | 10 +- .../fastp/tests/nextflow.interleaved.config | 5 + ...low.config => nextflow.save_failed.config} | 3 +- modules/nf-core/fastp/tests/tags.yml | 2 + .../tests/main.nf.test | 526 +++++++++++++++++- .../tests/main.nf.test.snap | 464 ++++++++++++++- .../tests/nextflow.config | 11 + .../tests/nextflow.save_trimmed.config | 6 + .../tests/tags.yml | 2 + 12 files changed, 1004 insertions(+), 52 deletions(-) create mode 100644 modules/nf-core/fastp/tests/nextflow.interleaved.config rename modules/nf-core/fastp/tests/{nextflow.config => nextflow.save_failed.config} (50%) create mode 100644 modules/nf-core/fastp/tests/tags.yml create mode 100644 subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/nextflow.config create mode 100644 subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/nextflow.save_trimmed.config create mode 100644 subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/tags.yml diff --git a/modules.json b/modules.json index 15390c5fe..d9043be57 100644 --- a/modules.json +++ b/modules.json @@ -42,7 +42,7 @@ }, "fastp": { "branch": "master", - "git_sha": "003920c7f9a8ae19b69a97171922880220bedf56", + "git_sha": "95cf5fe0194c7bf5cb0e3027a2eb7e7c89385080", "installed_by": ["fastq_fastqc_umitools_fastp", "modules"] }, "fastqc": { @@ -314,7 +314,7 @@ }, "fastq_fastqc_umitools_fastp": { "branch": "master", - "git_sha": "003920c7f9a8ae19b69a97171922880220bedf56", + "git_sha": "95cf5fe0194c7bf5cb0e3027a2eb7e7c89385080", "installed_by": ["subworkflows"] }, "fastq_fastqc_umitools_trimgalore": { diff --git a/modules/nf-core/fastp/main.nf b/modules/nf-core/fastp/main.nf index 2a3b679e3..4fc19b744 100644 --- a/modules/nf-core/fastp/main.nf +++ b/modules/nf-core/fastp/main.nf @@ -29,7 +29,7 @@ process FASTP { def args = task.ext.args ?: '' def prefix = task.ext.prefix ?: "${meta.id}" def adapter_list = adapter_fasta ? "--adapter_fasta ${adapter_fasta}" : "" - def fail_fastq = save_trimmed_fail && meta.single_end ? "--failed_out ${prefix}.fail.fastq.gz" : save_trimmed_fail && !meta.single_end ? "--unpaired1 ${prefix}_1.fail.fastq.gz --unpaired2 ${prefix}_2.fail.fastq.gz" : '' + def fail_fastq = save_trimmed_fail && meta.single_end ? "--failed_out ${prefix}.fail.fastq.gz" : save_trimmed_fail && !meta.single_end ? "--failed_out ${prefix}.paired.fail.fastq.gz --unpaired1 ${prefix}_1.fail.fastq.gz --unpaired2 ${prefix}_2.fail.fastq.gz" : '' // Added soft-links to original fastqs for consistent naming in MultiQC // Use single ended for interleaved. Add --interleaved_in in config. if ( task.ext.args?.contains('--interleaved_in') ) { diff --git a/modules/nf-core/fastp/tests/main.nf.test b/modules/nf-core/fastp/tests/main.nf.test index e67eacd6f..6f1f48978 100644 --- a/modules/nf-core/fastp/tests/main.nf.test +++ b/modules/nf-core/fastp/tests/main.nf.test @@ -3,6 +3,9 @@ nextflow_process { name "Test Process FASTP" script "../main.nf" process "FASTP" + tag "modules" + tag "modules_nfcore" + tag "fastp" test("test_fastp_single_end") { @@ -248,7 +251,8 @@ nextflow_process { } test("fastp test_fastp_interleaved") { - config './nextflow.config' + + config './nextflow.interleaved.config' when { params { outdir = "$outputDir" @@ -274,7 +278,7 @@ nextflow_process { def html_text = [ "Q20 bases:
    ") }, - { assert snapshot(workflow.out.reads).match("se - reads") }, - { assert snapshot(workflow.out.trim_read_count).match("se - trim_read_count") }, - { assert snapshot(workflow.out.trim_unpaired).match("se - trim_unpaired") }, - { assert snapshot(workflow.out.versions).match("se - versions") } + { assert snapshot( + workflow.out.reads, + workflow.out.trim_read_count, + workflow.out.trim_unpaired, + workflow.out.versions).match() } ) } } @@ -61,10 +62,11 @@ nextflow_workflow { then { assertAll( { assert workflow.success}, - { assert snapshot(workflow.out.reads).match("pe - reads") }, - { assert snapshot(workflow.out.trim_read_count).match("pe - trim_read_count") }, - { assert snapshot(workflow.out.trim_unpaired).match("pe - trim_unpaired") }, - { assert snapshot(workflow.out.versions).match("pe - versions") } + { assert snapshot( + workflow.out.reads, + workflow.out.trim_read_count, + workflow.out.trim_unpaired, + workflow.out.versions).match() } ) } } @@ -93,10 +95,11 @@ nextflow_workflow { then { assertAll( { assert workflow.success}, - { assert snapshot(workflow.out.reads).match("pe no umi - reads") }, - { assert snapshot(workflow.out.trim_read_count).match("pe no umi - trim_read_count") }, - { assert snapshot(workflow.out.trim_unpaired).match("pe no umi - trim_unpaired") }, - { assert snapshot(workflow.out.versions).match("pe no umi - versions") } + { assert snapshot( + workflow.out.reads, + workflow.out.trim_read_count, + workflow.out.trim_unpaired, + workflow.out.versions).match() } ) } } @@ -126,9 +129,134 @@ nextflow_workflow { then { assertAll( { assert workflow.success}, - { assert snapshot(workflow.out.trim_read_count).match("pe skip all - trim_read_count") }, - { assert snapshot(workflow.out.trim_unpaired).match("pe skip all - trim_unpaired") }, - { assert snapshot(workflow.out.versions).match("pe skip all - versions") } + { assert snapshot( + workflow.out.trim_read_count, + workflow.out.trim_unpaired, + workflow.out.versions).match() } + ) + } + } + + test("test single end read with UMI - stub") { + + options "-stub" + + when { + workflow { + """ + input[0] = Channel.of([ + [ id:'test', single_end:true ], // meta map + [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true) ] + ]) + input[1] = false // skip_fastqc + input[2] = true // with_umi + input[3] = false // skip_umi_extract + input[4] = false // skip_trimming + input[5] = 1 // umi_discard_read + input[6] = 1 // min_trimmed_reads + """ + } + } + + then { + assertAll( + { assert workflow.success}, + { assert snapshot(workflow.out).match() } + ) + } + } + + test("test paired end read with UMI - stub") { + + options "-stub" + + when { + workflow { + """ + 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) + ] + ]) + input[1] = false // skip_fastqc + input[2] = true // with_umi + input[3] = false // skip_umi_extract + input[4] = false // skip_trimming + input[5] = 1 // umi_discard_read + input[6] = 1 // min_trimmed_reads + """ + } + } + + then { + assertAll( + { assert workflow.success}, + { assert snapshot(workflow.out).match() } + ) + } + } + test("test paired end read without UMI - stub") { + + options "-stub" + + when { + workflow { + """ + 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) + ] + ]) + input[1] = false // skip_fastqc + input[2] = false // with_umi + input[3] = false // skip_umi_extract + input[4] = false // skip_trimming + input[5] = 1 // umi_discard_read + input[6] = 1 // min_trimmed_reads + """ + } + } + + then { + assertAll( + { assert workflow.success}, + { assert snapshot(workflow.out).match() } + ) + } + } + + test("test skip all steps - stub") { + + options "-stub" + + when { + workflow { + """ + 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) + ] + ]) + input[1] = true // skip_fastqc + input[2] = true // with_umi + input[3] = true // skip_umi_extract + input[4] = true // skip_trimming + input[5] = 0 // umi_discard_read + input[6] = 1 // min_trimmed_reads + """ + } + } + + then { + assertAll( + { assert workflow.success}, + { assert snapshot(workflow.out).match() } ) } } diff --git a/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/tests/main.nf.test.snap b/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/tests/main.nf.test.snap index 23b5fc9ea..a674546ec 100644 --- a/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/tests/main.nf.test.snap +++ b/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/tests/main.nf.test.snap @@ -1,110 +1,393 @@ { - "pe no umi - reads": { + "test paired end read with UMI - stub": { "content": [ - [ - [ - { - "id": "test", - "single_end": false - }, + { + "0": [ + + ], + "1": [ [ - "test_1_val_1.fq.gz:md5,566d44cca0d22c522d6cf0e50c7165dc", - "test_2_val_2.fq.gz:md5,3c023e8e890b897821df3dc98f48c2b3" + { + "id": "test", + "single_end": false + }, + "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + [ + { + "id": "test", + "single_end": false + }, + "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "3": [ + [ + { + "id": "test", + "single_end": false + }, + "test.umi_extract.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "4": [ + + ], + "5": [ + + ], + "6": [ + + ], + "7": [ + [ + { + "id": "test", + "single_end": true + }, + "test.fastq.gz_trimming_report.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "8": [ + [ + { + "id": "test", + "single_end": true + }, + 0 + ] + ], + "9": [ + "versions.yml:md5,0a5b8fa83ba29cf645bf9e9471cca150", + "versions.yml:md5,3e4b7f058c0aa96ba41c3e4d6df6e839", + "versions.yml:md5,7e740129a23c5ac21c27476e30f8a6d2" + ], + "fastqc_html": [ + [ + { + "id": "test", + "single_end": false + }, + "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "fastqc_zip": [ + [ + { + "id": "test", + "single_end": false + }, + "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "reads": [ + + ], + "trim_html": [ + + ], + "trim_log": [ + [ + { + "id": "test", + "single_end": true + }, + "test.fastq.gz_trimming_report.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "trim_read_count": [ + [ + { + "id": "test", + "single_end": true + }, + 0 ] + ], + "trim_unpaired": [ + + ], + "trim_zip": [ + + ], + "umi_log": [ + [ + { + "id": "test", + "single_end": false + }, + "test.umi_extract.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,0a5b8fa83ba29cf645bf9e9471cca150", + "versions.yml:md5,3e4b7f058c0aa96ba41c3e4d6df6e839", + "versions.yml:md5,7e740129a23c5ac21c27476e30f8a6d2" ] - ] + } ], "meta": { "nf-test": "0.8.4", - "nextflow": "24.01.0" + "nextflow": "24.04.2" }, - "timestamp": "2024-03-01T14:42:34.197155" + "timestamp": "2024-07-03T14:13:53.031608" }, - "pe skip all - trim_unpaired": { + "test paired end read without UMI - stub": { "content": [ - [ - - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" - }, - "timestamp": "2024-03-01T14:42:44.569875" - }, - "pe skip all - versions": { - "content": [ - [ - - ] + { + "0": [ + + ], + "1": [ + [ + { + "id": "test", + "single_end": false + }, + "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + [ + { + "id": "test", + "single_end": false + }, + "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "3": [ + + ], + "4": [ + + ], + "5": [ + + ], + "6": [ + + ], + "7": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test_1.fastq.gz_trimming_report.txt:md5,d41d8cd98f00b204e9800998ecf8427e", + "test_2.fastq.gz_trimming_report.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "8": [ + [ + { + "id": "test", + "single_end": false + }, + 0 + ] + ], + "9": [ + "versions.yml:md5,0a5b8fa83ba29cf645bf9e9471cca150", + "versions.yml:md5,7e740129a23c5ac21c27476e30f8a6d2" + ], + "fastqc_html": [ + [ + { + "id": "test", + "single_end": false + }, + "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "fastqc_zip": [ + [ + { + "id": "test", + "single_end": false + }, + "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "reads": [ + + ], + "trim_html": [ + + ], + "trim_log": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test_1.fastq.gz_trimming_report.txt:md5,d41d8cd98f00b204e9800998ecf8427e", + "test_2.fastq.gz_trimming_report.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "trim_read_count": [ + [ + { + "id": "test", + "single_end": false + }, + 0 + ] + ], + "trim_unpaired": [ + + ], + "trim_zip": [ + + ], + "umi_log": [ + + ], + "versions": [ + "versions.yml:md5,0a5b8fa83ba29cf645bf9e9471cca150", + "versions.yml:md5,7e740129a23c5ac21c27476e30f8a6d2" + ] + } ], "meta": { "nf-test": "0.8.4", - "nextflow": "24.01.0" + "nextflow": "24.04.2" }, - "timestamp": "2024-03-01T14:42:44.578583" + "timestamp": "2024-07-03T14:14:06.231746" }, - "pe - trim_read_count": { + "test paired end read without UMI": { "content": [ [ [ { "id": "test", - "single_end": true + "single_end": false }, - 100.0 + [ + "test_1_val_1.fq.gz:md5,566d44cca0d22c522d6cf0e50c7165dc", + "test_2_val_2.fq.gz:md5,3c023e8e890b897821df3dc98f48c2b3" + ] ] - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" - }, - "timestamp": "2024-03-01T14:42:16.730434" - }, - "se - trim_read_count": { - "content": [ + ], [ [ { "id": "test", - "single_end": true + "single_end": false }, 100.0 ] - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" - }, - "timestamp": "2024-03-01T14:41:56.047953" - }, - "se - trim_unpaired": { - "content": [ + ], [ + ], + [ + "versions.yml:md5,0a5b8fa83ba29cf645bf9e9471cca150", + "versions.yml:md5,7e740129a23c5ac21c27476e30f8a6d2" ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "24.01.0" + "nextflow": "24.04.2" }, - "timestamp": "2024-03-01T14:41:56.052782" + "timestamp": "2024-07-03T14:13:11.46458" }, - "pe no umi - trim_unpaired": { + "test skip all steps - stub": { "content": [ - [ - - ] + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "/nf-core/test-datasets/modules/data/genomics/sarscov2/illumina/fastq/test_1.fastq.gz", + "/nf-core/test-datasets/modules/data/genomics/sarscov2/illumina/fastq/test_2.fastq.gz" + ] + ] + ], + "1": [ + + ], + "2": [ + + ], + "3": [ + + ], + "4": [ + + ], + "5": [ + + ], + "6": [ + + ], + "7": [ + + ], + "8": [ + + ], + "9": [ + + ], + "fastqc_html": [ + + ], + "fastqc_zip": [ + + ], + "reads": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "/nf-core/test-datasets/modules/data/genomics/sarscov2/illumina/fastq/test_1.fastq.gz", + "/nf-core/test-datasets/modules/data/genomics/sarscov2/illumina/fastq/test_2.fastq.gz" + ] + ] + ], + "trim_html": [ + + ], + "trim_log": [ + + ], + "trim_read_count": [ + + ], + "trim_unpaired": [ + + ], + "trim_zip": [ + + ], + "umi_log": [ + + ], + "versions": [ + + ] + } ], "meta": { "nf-test": "0.8.4", - "nextflow": "24.01.0" + "nextflow": "24.04.2" }, - "timestamp": "2024-03-01T14:42:34.210238" + "timestamp": "2024-07-03T14:14:15.060475" }, - "pe - reads": { + "test single end read with UMI": { "content": [ [ [ @@ -112,36 +395,21 @@ "id": "test", "single_end": true }, - "test_trimmed.fq.gz:md5,9c58b78ac2c7b5ce9ca6b090eee1d39c" + "test_trimmed.fq.gz:md5,faae784affdd7d84e2fa9da9e9425229" ] - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" - }, - "timestamp": "2024-03-01T14:42:16.720251" - }, - "se - reads": { - "content": [ + ], [ [ { "id": "test", "single_end": true }, - "test_trimmed.fq.gz:md5,faae784affdd7d84e2fa9da9e9425229" + 100.0 ] - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" - }, - "timestamp": "2024-03-01T14:41:56.033273" - }, - "se - versions": { - "content": [ + ], + [ + + ], [ "versions.yml:md5,0a5b8fa83ba29cf645bf9e9471cca150", "versions.yml:md5,3e4b7f058c0aa96ba41c3e4d6df6e839", @@ -150,43 +418,33 @@ ], "meta": { "nf-test": "0.8.4", - "nextflow": "24.01.0" + "nextflow": "24.04.2" }, - "timestamp": "2024-03-01T14:41:56.056939" + "timestamp": "2024-07-03T14:12:37.894066" }, - "pe no umi - versions": { + "test paired end read with UMI": { "content": [ [ - "versions.yml:md5,0a5b8fa83ba29cf645bf9e9471cca150", - "versions.yml:md5,7e740129a23c5ac21c27476e30f8a6d2" - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" - }, - "timestamp": "2024-03-01T14:42:34.216606" - }, - "pe no umi - trim_read_count": { - "content": [ + [ + { + "id": "test", + "single_end": true + }, + "test_trimmed.fq.gz:md5,9c58b78ac2c7b5ce9ca6b090eee1d39c" + ] + ], [ [ { "id": "test", - "single_end": false + "single_end": true }, 100.0 ] - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" - }, - "timestamp": "2024-03-01T14:42:34.203868" - }, - "pe - versions": { - "content": [ + ], + [ + + ], [ "versions.yml:md5,0a5b8fa83ba29cf645bf9e9471cca150", "versions.yml:md5,3e4b7f058c0aa96ba41c3e4d6df6e839", @@ -195,32 +453,161 @@ ], "meta": { "nf-test": "0.8.4", - "nextflow": "24.01.0" + "nextflow": "24.04.2" }, - "timestamp": "2024-03-01T14:42:16.758431" + "timestamp": "2024-07-03T14:12:56.665213" }, - "pe skip all - trim_read_count": { + "test skip all steps": { "content": [ [ + ], + [ + + ], + [ + ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "24.01.0" + "nextflow": "24.04.2" }, - "timestamp": "2024-03-01T14:42:44.557631" + "timestamp": "2024-07-03T14:13:22.584359" }, - "pe - trim_unpaired": { + "test single end read with UMI - stub": { "content": [ - [ - - ] + { + "0": [ + + ], + "1": [ + [ + { + "id": "test", + "single_end": true + }, + "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + [ + { + "id": "test", + "single_end": true + }, + "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "3": [ + [ + { + "id": "test", + "single_end": true + }, + "test.umi_extract.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "4": [ + + ], + "5": [ + + ], + "6": [ + + ], + "7": [ + [ + { + "id": "test", + "single_end": true + }, + "test.fastq.gz_trimming_report.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "8": [ + [ + { + "id": "test", + "single_end": true + }, + 0 + ] + ], + "9": [ + "versions.yml:md5,0a5b8fa83ba29cf645bf9e9471cca150", + "versions.yml:md5,3e4b7f058c0aa96ba41c3e4d6df6e839", + "versions.yml:md5,7e740129a23c5ac21c27476e30f8a6d2" + ], + "fastqc_html": [ + [ + { + "id": "test", + "single_end": true + }, + "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "fastqc_zip": [ + [ + { + "id": "test", + "single_end": true + }, + "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "reads": [ + + ], + "trim_html": [ + + ], + "trim_log": [ + [ + { + "id": "test", + "single_end": true + }, + "test.fastq.gz_trimming_report.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "trim_read_count": [ + [ + { + "id": "test", + "single_end": true + }, + 0 + ] + ], + "trim_unpaired": [ + + ], + "trim_zip": [ + + ], + "umi_log": [ + [ + { + "id": "test", + "single_end": true + }, + "test.umi_extract.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,0a5b8fa83ba29cf645bf9e9471cca150", + "versions.yml:md5,3e4b7f058c0aa96ba41c3e4d6df6e839", + "versions.yml:md5,7e740129a23c5ac21c27476e30f8a6d2" + ] + } ], "meta": { "nf-test": "0.8.4", - "nextflow": "24.01.0" + "nextflow": "24.04.2" }, - "timestamp": "2024-03-01T14:42:16.743003" + "timestamp": "2024-07-03T14:13:37.957993" } } \ No newline at end of file diff --git a/subworkflows/nf-core/fastq_subsample_fq_salmon/tests/main.nf.test b/subworkflows/nf-core/fastq_subsample_fq_salmon/tests/main.nf.test index 0a4b29706..077d9c758 100644 --- a/subworkflows/nf-core/fastq_subsample_fq_salmon/tests/main.nf.test +++ b/subworkflows/nf-core/fastq_subsample_fq_salmon/tests/main.nf.test @@ -43,16 +43,61 @@ nextflow_workflow { def readlines2 = path(workflow.out.reads[0][1][1]).linesGzip assertAll( { assert workflow.success }, - { assert snapshot(readlines1[0..5]).match("test_reads_1_lines") }, - { assert snapshot(readlines1.size()).match("test_reads_1_size") }, - { assert snapshot(readlines2[0..5]).match("test_reads_2_lines") }, - { assert snapshot(readlines2.size()).match("test_reads_2_size") }, - { assert snapshot(workflow.out.versions).match("versions") }, - { assert snapshot(workflow.out.lib_format_counts).match("lib_format_counts") }, - { assert workflow.out.index }, + { assert workflow.out.json_info }, { assert workflow.out.results }, - { assert workflow.out.json_info } + { assert snapshot( + readlines1[0..5], + readlines1.size(), + readlines2[0..5], + readlines2.size(), + workflow.out.lib_format_counts, + workflow.out.versions).match() } + ) + } + } + + test("homo_sapiens paired-end [fastq] - stub") { + + options "-stub" + + setup { + run("SALMON_INDEX") { + script "../../../../modules/nf-core/salmon/index/main.nf" + process { + """ + input[0] = Channel.of(file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true)) // genome_fasta + input[1] = Channel.of(file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/transcriptome.fasta', checkIfExists: true)) // transcriptome_fasta + """ + } + } + } + + when { + workflow { + """ + make_index = false + + input[0] = Channel.of([ + [ id:'test', single_end:false ], // meta map + [ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/fastq/test_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/fastq/test_2.fastq.gz', checkIfExists: true) ] + ]) + input[1] = Channel.of(file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true)) // genome_fasta + input[2] = Channel.of(file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/transcriptome.fasta', checkIfExists: true)) // transcriptome_fasta + input[3] = Channel.of(file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.gtf', checkIfExists: true)) // genome_gtf + input[4] = SALMON_INDEX.out.index + input[5] = make_index + """ + } + } + + then { + def readlines1 = path(workflow.out.reads[0][1][0]).linesGzip + def readlines2 = path(workflow.out.reads[0][1][1]).linesGzip + assertAll( + { assert workflow.success }, + { assert snapshot(workflow.out).match() } ) } } diff --git a/subworkflows/nf-core/fastq_subsample_fq_salmon/tests/main.nf.test.snap b/subworkflows/nf-core/fastq_subsample_fq_salmon/tests/main.nf.test.snap index 8bef73cc4..e0c944f31 100644 --- a/subworkflows/nf-core/fastq_subsample_fq_salmon/tests/main.nf.test.snap +++ b/subworkflows/nf-core/fastq_subsample_fq_salmon/tests/main.nf.test.snap @@ -1,28 +1,5 @@ { - "test_reads_1_size": { - "content": [ - 1066944 - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-06-14T10:32:16.109988" - }, - "versions": { - "content": [ - [ - "versions.yml:md5,12c0d1f67c2afb97470ae0974e5e01bb", - "versions.yml:md5,885fde9e7beac002b3a17b66b92db4bd" - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-06-14T10:32:16.112471" - }, - "test_reads_1_lines": { + "homo_sapiens paired-end [fastq]": { "content": [ [ "@normal#21#998579#1/1", @@ -31,16 +8,8 @@ "102302000331;3333;23133320233330*33/233333333333333/313232333/3;3;3/333000;11/00;;01//103*1032323233", "@normal#21#998572#2/1", "CTCCTCTCCTTCTACCTGCTGGGGTTGCTTGTCAGTAGCGGGCAAGGTCGGAGTGTTGCGCTTTATTGCATTTACTTTCCCTCCCCCTTCCACCCGGCCA" - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-06-14T10:32:16.108208" - }, - "test_reads_2_lines": { - "content": [ + ], + 1066944, [ "@normal#21#998579#1/2", "AAAAAAAAAGAAGAAGCAGAAGCTGTTTCCCTGGATATCCTGCTCACCGATTCCCCTCTCCAATTCTGTATTTTCCCTTCTCTTATTTAAGGGTCTCCAC", @@ -48,26 +17,8 @@ "023333233332333310333302333211/3333;0300;*/;000/32;201003031/22;21333032;;11/23030322;2332333313/030", "@normal#21#998572#2/2", "TTCCCCTCTCCAATTGAGTATTTTCCCTTCTCTTATTTAAGGGTCTCCACACAAACAGATACAATTTTAGGGACAGCTAGGAGAAAGAACGAAAATAATAA" - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-06-14T10:32:16.111188" - }, - "test_reads_2_size": { - "content": [ - 1066944 - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-06-14T10:32:16.111792" - }, - "lib_format_counts": { - "content": [ + ], + 1066944, [ [ { @@ -76,12 +27,155 @@ }, "test_lib_format_counts.json:md5,0b0e2dc090e5ad88f9a9d6dbe9c3e4a0" ] + ], + [ + "versions.yml:md5,12c0d1f67c2afb97470ae0974e5e01bb", + "versions.yml:md5,885fde9e7beac002b3a17b66b92db4bd" ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-03T15:08:35.832206" + }, + "homo_sapiens paired-end [fastq] - stub": { + "content": [ + { + "0": [ + [ + "complete_ref_lens.bin:md5,d41d8cd98f00b204e9800998ecf8427e", + "ctable.bin:md5,d41d8cd98f00b204e9800998ecf8427e", + "ctg_offsets.bin:md5,d41d8cd98f00b204e9800998ecf8427e", + "duplicate_clusters.tsv:md5,d41d8cd98f00b204e9800998ecf8427e", + "info.json:md5,d41d8cd98f00b204e9800998ecf8427e", + "mphf.bin:md5,d41d8cd98f00b204e9800998ecf8427e", + "pos.bin:md5,d41d8cd98f00b204e9800998ecf8427e", + "pre_indexing.log:md5,d41d8cd98f00b204e9800998ecf8427e", + "rank.bin:md5,d41d8cd98f00b204e9800998ecf8427e", + "refAccumLengths.bin:md5,d41d8cd98f00b204e9800998ecf8427e", + "ref_indexing.log:md5,d41d8cd98f00b204e9800998ecf8427e", + "reflengths.bin:md5,d41d8cd98f00b204e9800998ecf8427e", + "refseq.bin:md5,d41d8cd98f00b204e9800998ecf8427e", + "seq.bin:md5,d41d8cd98f00b204e9800998ecf8427e", + "versionInfo.json:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test_R1.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "test_R2.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ] + ], + "2": [ + [ + { + "id": "test", + "single_end": false + }, + [ + + ] + ] + ], + "3": [ + [ + { + "id": "test", + "single_end": false + }, + "test_meta_info.json:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "4": [ + [ + { + "id": "test", + "single_end": false + }, + "test_lib_format_counts.json:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "5": [ + "versions.yml:md5,12c0d1f67c2afb97470ae0974e5e01bb", + "versions.yml:md5,885fde9e7beac002b3a17b66b92db4bd" + ], + "index": [ + [ + "complete_ref_lens.bin:md5,d41d8cd98f00b204e9800998ecf8427e", + "ctable.bin:md5,d41d8cd98f00b204e9800998ecf8427e", + "ctg_offsets.bin:md5,d41d8cd98f00b204e9800998ecf8427e", + "duplicate_clusters.tsv:md5,d41d8cd98f00b204e9800998ecf8427e", + "info.json:md5,d41d8cd98f00b204e9800998ecf8427e", + "mphf.bin:md5,d41d8cd98f00b204e9800998ecf8427e", + "pos.bin:md5,d41d8cd98f00b204e9800998ecf8427e", + "pre_indexing.log:md5,d41d8cd98f00b204e9800998ecf8427e", + "rank.bin:md5,d41d8cd98f00b204e9800998ecf8427e", + "refAccumLengths.bin:md5,d41d8cd98f00b204e9800998ecf8427e", + "ref_indexing.log:md5,d41d8cd98f00b204e9800998ecf8427e", + "reflengths.bin:md5,d41d8cd98f00b204e9800998ecf8427e", + "refseq.bin:md5,d41d8cd98f00b204e9800998ecf8427e", + "seq.bin:md5,d41d8cd98f00b204e9800998ecf8427e", + "versionInfo.json:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "json_info": [ + [ + { + "id": "test", + "single_end": false + }, + "test_meta_info.json:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "lib_format_counts": [ + [ + { + "id": "test", + "single_end": false + }, + "test_lib_format_counts.json:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "reads": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test_R1.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "test_R2.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ] + ], + "results": [ + [ + { + "id": "test", + "single_end": false + }, + [ + + ] + ] + ], + "versions": [ + "versions.yml:md5,12c0d1f67c2afb97470ae0974e5e01bb", + "versions.yml:md5,885fde9e7beac002b3a17b66b92db4bd" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" }, - "timestamp": "2024-06-14T10:32:16.114075" + "timestamp": "2024-07-03T15:08:56.819" } } \ No newline at end of file diff --git a/subworkflows/nf-core/quantify_pseudo_alignment/tests/main.nf.test b/subworkflows/nf-core/quantify_pseudo_alignment/tests/main.nf.test index 21004870a..d0a59629e 100644 --- a/subworkflows/nf-core/quantify_pseudo_alignment/tests/main.nf.test +++ b/subworkflows/nf-core/quantify_pseudo_alignment/tests/main.nf.test @@ -50,24 +50,23 @@ nextflow_workflow { assertAll( { assert workflow.success }, { assert snapshot( - workflow.out.tpm_gene, + file(workflow.out.merged_gene_rds[0][1]).name, + file(workflow.out.merged_gene_rds_length_scaled[0][1]).name, + file(workflow.out.merged_gene_rds_scaled[0][1]).name, + file(workflow.out.merged_transcript_rds[0][1]).name, workflow.out.counts_gene, - workflow.out.lengths_gene, workflow.out.counts_gene_length_scaled, - workflow.out.tpm_transcript, + workflow.out.lengths_gene, workflow.out.lengths_transcript, workflow.out.merged_counts_transcript, workflow.out.merged_tpm_transcript, - workflow.out.versions, - file(workflow.out.merged_gene_rds[0][1]).name, - file(workflow.out.merged_gene_rds_length_scaled[0][1]).name, - file(workflow.out.merged_gene_rds_scaled[0][1]).name, - file(workflow.out.merged_transcript_rds[0][1]).name + workflow.out.tpm_gene, + workflow.out.tpm_transcript, + workflow.out.versions ).match() } ) } - } test("kallisto") { @@ -86,7 +85,6 @@ nextflow_workflow { } } - when { workflow { """ @@ -119,22 +117,126 @@ nextflow_workflow { assertAll( { assert workflow.success }, { assert snapshot( - workflow.out.tpm_gene, - workflow.out.counts_gene, - workflow.out.lengths_gene, - workflow.out.counts_gene_length_scaled, - workflow.out.tpm_transcript, - workflow.out.lengths_transcript, - workflow.out.versions, file(workflow.out.merged_gene_rds[0][1]).name, file(workflow.out.merged_gene_rds_length_scaled[0][1]).name, file(workflow.out.merged_gene_rds_scaled[0][1]).name, - file(workflow.out.merged_transcript_rds[0][1]).name + file(workflow.out.merged_transcript_rds[0][1]).name, + workflow.out.counts_gene, + workflow.out.counts_gene_length_scaled, + workflow.out.lengths_gene, + workflow.out.lengths_transcript, + workflow.out.tpm_gene, + workflow.out.tpm_transcript, + workflow.out.versions ).match() } ) } + } + + test("salmon - stub") { + + options "-stub" + + setup { + run("SALMON_INDEX") { + script "../../../../modules/nf-core/salmon/index/main.nf" + process { + """ + input[0] = Channel.of([file(params.modules_testdata_base_path + "genomics/homo_sapiens/genome/genome.fasta", checkIfExists: true)]) + input[1] = Channel.of([file(params.modules_testdata_base_path + "genomics/homo_sapiens/genome/transcriptome.fasta", checkIfExists: true)]) + """ + } + } + } + + when { + workflow { + """ + input[0] = [ + [ id: 'samplesheet' ], + file(params.modules_testdata_base_path + '/genomics/sarscov2/illumina/csv/samplesheet_micro.csv', checkIfExists: true) + ] + input[1] = [ + [ id: 'test' ], + [ + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/fastq/test_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/fastq/test_2.fastq.gz', checkIfExists: true) + ] + ] + input[2] = SALMON_INDEX.out.index + input[3] = Channel.of(file(params.modules_testdata_base_path + "genomics/homo_sapiens/genome/transcriptome.fasta", checkIfExists: true)) + input[4] = Channel.of(file(params.modules_testdata_base_path + "genomics/homo_sapiens/genome/genome.gtf", checkIfExists: true)) + input[5] = 'gene_id' + input[6] = 'gene_name' + input[7] = 'salmon' + input[8] = false + input[9] = 'A' + input[10] = null + input[11] = null + """ + } + } + then { + assertAll( + { assert workflow.success }, + { assert snapshot(workflow.out).match()} + ) + } } + test("kallisto - stub") { + + options "-stub" + + setup { + run("KALLISTO_INDEX") { + script "../../../../modules/nf-core/kallisto/index/main.nf" + process { + """ + input[0] = Channel.of([ + [ id:'transcriptome' ], // meta map + file(params.modules_testdata_base_path + "genomics/homo_sapiens/genome/transcriptome.fasta", checkIfExists: true) + ]) + """ + } + } + } + + when { + workflow { + """ + input[0] = [ + [ id: 'samplesheet' ], + file(params.modules_testdata_base_path + '/genomics/sarscov2/illumina/csv/samplesheet_micro.csv', checkIfExists: true) + ] + input[1] = [ + [ id: 'test' ], + [ + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/fastq/test_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/fastq/test_2.fastq.gz', checkIfExists: true) + ] + ] + input[2] = KALLISTO_INDEX.out.index + input[3] = Channel.of(file(params.modules_testdata_base_path + "genomics/homo_sapiens/genome/transcriptome.fasta", checkIfExists: true)) + input[4] = Channel.of(file(params.modules_testdata_base_path + "genomics/homo_sapiens/genome/genome.gtf", checkIfExists: true)) + input[5] = 'gene_id' + input[6] = 'gene_name' + input[7] = 'kallisto' + input[8] = null + input[9] = null + input[10] = [] + input[11] = [] + """ + } + } + + then { + assertAll( + { assert workflow.success }, + { assert snapshot(workflow.out).match()} + ) + } + } } diff --git a/subworkflows/nf-core/quantify_pseudo_alignment/tests/main.nf.test.snap b/subworkflows/nf-core/quantify_pseudo_alignment/tests/main.nf.test.snap index c5f435665..4db35cced 100644 --- a/subworkflows/nf-core/quantify_pseudo_alignment/tests/main.nf.test.snap +++ b/subworkflows/nf-core/quantify_pseudo_alignment/tests/main.nf.test.snap @@ -1,12 +1,16 @@ { "kallisto": { "content": [ + "all_samples.SummarizedExperiment.rds", + "all_samples.SummarizedExperiment.rds", + "all_samples.SummarizedExperiment.rds", + "all_samples.SummarizedExperiment.rds", [ [ { "id": "all_samples" }, - "all_samples.gene_tpm.tsv:md5,23fa0c64cfbd198806b53897de791b8b" + "all_samples.gene_counts.tsv:md5,4ba44e5ebc9ed0ca2ca008d10a1dddc3" ] ], [ @@ -14,7 +18,7 @@ { "id": "all_samples" }, - "all_samples.gene_counts.tsv:md5,4ba44e5ebc9ed0ca2ca008d10a1dddc3" + "all_samples.gene_counts_length_scaled.tsv:md5,078746568e3fd0c995559352b661b2d9" ] ], [ @@ -30,7 +34,7 @@ { "id": "all_samples" }, - "all_samples.gene_counts_length_scaled.tsv:md5,078746568e3fd0c995559352b661b2d9" + "all_samples.transcript_lengths.tsv:md5,131952a97905469ab012f0f46e52405c" ] ], [ @@ -38,7 +42,7 @@ { "id": "all_samples" }, - "all_samples.transcript_tpm.tsv:md5,de458e1c2a579e53bd7671c5176f5d0c" + "all_samples.gene_tpm.tsv:md5,23fa0c64cfbd198806b53897de791b8b" ] ], [ @@ -46,7 +50,7 @@ { "id": "all_samples" }, - "all_samples.transcript_lengths.tsv:md5,131952a97905469ab012f0f46e52405c" + "all_samples.transcript_tpm.tsv:md5,de458e1c2a579e53bd7671c5176f5d0c" ] ], [ @@ -54,26 +58,532 @@ "versions.yml:md5,d5243289a32cde9e90e20f1a202bb566", "versions.yml:md5,e9e7d18c3de83f1113fb1ff0c55d35ed", "versions.yml:md5,ea39658f8685118d81d42acd451e66ea" - ], - "all_samples.SummarizedExperiment.rds", - "all_samples.SummarizedExperiment.rds", - "all_samples.SummarizedExperiment.rds", - "all_samples.SummarizedExperiment.rds" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-03T15:36:19.861809" + }, + "salmon - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + [ + + ] + ] + ], + "1": [ + [ + { + "id": "test" + }, + [ + + ] + ] + ], + "10": [ + [ + { + "id": "all_samples" + }, + "all_samples.SummarizedExperiment.rds:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "11": [ + [ + { + "id": "all_samples" + }, + "all_samples.SummarizedExperiment.rds:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "12": [ + [ + { + "id": "all_samples" + }, + "all_samples.SummarizedExperiment.rds:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "13": [ + [ + { + "id": "all_samples" + }, + "all_samples.SummarizedExperiment.rds:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "14": [ + "versions.yml:md5,4c3564e1ba17d8ce2b0ee784251ddd87", + "versions.yml:md5,7afb76ee798ceb1e5dff5879d28ef85a", + "versions.yml:md5,d5243289a32cde9e90e20f1a202bb566", + "versions.yml:md5,e9e7d18c3de83f1113fb1ff0c55d35ed" + ], + "2": [ + [ + { + "id": "all_samples" + }, + "all_samples.gene_tpm.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "3": [ + [ + { + "id": "all_samples" + }, + "all_samples.gene_counts.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "4": [ + [ + { + "id": "all_samples" + }, + "all_samples.gene_lengths.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "5": [ + [ + { + "id": "all_samples" + }, + "all_samples.gene_counts_length_scaled.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "6": [ + [ + { + "id": "all_samples" + }, + "all_samples.gene_counts_scaled.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "7": [ + [ + { + "id": "all_samples" + }, + "all_samples.transcript_tpm.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "8": [ + [ + { + "id": "all_samples" + }, + "all_samples.transcript_counts.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "9": [ + [ + { + "id": "all_samples" + }, + "all_samples.transcript_lengths.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "counts_gene": [ + [ + { + "id": "all_samples" + }, + "all_samples.gene_counts.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "counts_gene_length_scaled": [ + [ + { + "id": "all_samples" + }, + "all_samples.gene_counts_length_scaled.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "counts_gene_scaled": [ + [ + { + "id": "all_samples" + }, + "all_samples.gene_counts_scaled.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "counts_transcript": [ + [ + { + "id": "all_samples" + }, + "all_samples.transcript_counts.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "lengths_gene": [ + [ + { + "id": "all_samples" + }, + "all_samples.gene_lengths.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "lengths_transcript": [ + [ + { + "id": "all_samples" + }, + "all_samples.transcript_lengths.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "merged_gene_rds": [ + [ + { + "id": "all_samples" + }, + "all_samples.SummarizedExperiment.rds:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "merged_gene_rds_length_scaled": [ + [ + { + "id": "all_samples" + }, + "all_samples.SummarizedExperiment.rds:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "merged_gene_rds_scaled": [ + [ + { + "id": "all_samples" + }, + "all_samples.SummarizedExperiment.rds:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "merged_transcript_rds": [ + [ + { + "id": "all_samples" + }, + "all_samples.SummarizedExperiment.rds:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "multiqc": [ + [ + { + "id": "test" + }, + [ + + ] + ] + ], + "results": [ + [ + { + "id": "test" + }, + [ + + ] + ] + ], + "tpm_gene": [ + [ + { + "id": "all_samples" + }, + "all_samples.gene_tpm.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "tpm_transcript": [ + [ + { + "id": "all_samples" + }, + "all_samples.transcript_tpm.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,4c3564e1ba17d8ce2b0ee784251ddd87", + "versions.yml:md5,7afb76ee798ceb1e5dff5879d28ef85a", + "versions.yml:md5,d5243289a32cde9e90e20f1a202bb566", + "versions.yml:md5,e9e7d18c3de83f1113fb1ff0c55d35ed" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-03T15:36:55.281379" + }, + "kallisto - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + [ + + ] + ] + ], + "1": [ + [ + { + "id": "test" + }, + "test.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "10": [ + [ + { + "id": "all_samples" + }, + "all_samples.SummarizedExperiment.rds:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "11": [ + [ + { + "id": "all_samples" + }, + "all_samples.SummarizedExperiment.rds:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "12": [ + [ + { + "id": "all_samples" + }, + "all_samples.SummarizedExperiment.rds:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "13": [ + [ + { + "id": "all_samples" + }, + "all_samples.SummarizedExperiment.rds:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "14": [ + "versions.yml:md5,7afb76ee798ceb1e5dff5879d28ef85a", + "versions.yml:md5,d5243289a32cde9e90e20f1a202bb566", + "versions.yml:md5,e9e7d18c3de83f1113fb1ff0c55d35ed", + "versions.yml:md5,ea39658f8685118d81d42acd451e66ea" + ], + "2": [ + [ + { + "id": "all_samples" + }, + "all_samples.gene_tpm.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "3": [ + [ + { + "id": "all_samples" + }, + "all_samples.gene_counts.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "4": [ + [ + { + "id": "all_samples" + }, + "all_samples.gene_lengths.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "5": [ + [ + { + "id": "all_samples" + }, + "all_samples.gene_counts_length_scaled.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "6": [ + [ + { + "id": "all_samples" + }, + "all_samples.gene_counts_scaled.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "7": [ + [ + { + "id": "all_samples" + }, + "all_samples.transcript_tpm.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "8": [ + [ + { + "id": "all_samples" + }, + "all_samples.transcript_counts.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "9": [ + [ + { + "id": "all_samples" + }, + "all_samples.transcript_lengths.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "counts_gene": [ + [ + { + "id": "all_samples" + }, + "all_samples.gene_counts.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "counts_gene_length_scaled": [ + [ + { + "id": "all_samples" + }, + "all_samples.gene_counts_length_scaled.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "counts_gene_scaled": [ + [ + { + "id": "all_samples" + }, + "all_samples.gene_counts_scaled.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "counts_transcript": [ + [ + { + "id": "all_samples" + }, + "all_samples.transcript_counts.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "lengths_gene": [ + [ + { + "id": "all_samples" + }, + "all_samples.gene_lengths.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "lengths_transcript": [ + [ + { + "id": "all_samples" + }, + "all_samples.transcript_lengths.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "merged_gene_rds": [ + [ + { + "id": "all_samples" + }, + "all_samples.SummarizedExperiment.rds:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "merged_gene_rds_length_scaled": [ + [ + { + "id": "all_samples" + }, + "all_samples.SummarizedExperiment.rds:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "merged_gene_rds_scaled": [ + [ + { + "id": "all_samples" + }, + "all_samples.SummarizedExperiment.rds:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "merged_transcript_rds": [ + [ + { + "id": "all_samples" + }, + "all_samples.SummarizedExperiment.rds:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "multiqc": [ + [ + { + "id": "test" + }, + "test.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "results": [ + [ + { + "id": "test" + }, + [ + + ] + ] + ], + "tpm_gene": [ + [ + { + "id": "all_samples" + }, + "all_samples.gene_tpm.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "tpm_transcript": [ + [ + { + "id": "all_samples" + }, + "all_samples.transcript_tpm.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,7afb76ee798ceb1e5dff5879d28ef85a", + "versions.yml:md5,d5243289a32cde9e90e20f1a202bb566", + "versions.yml:md5,e9e7d18c3de83f1113fb1ff0c55d35ed", + "versions.yml:md5,ea39658f8685118d81d42acd451e66ea" + ] + } ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.2" }, - "timestamp": "2024-05-28T12:54:12.855884" + "timestamp": "2024-07-03T15:37:29.239014" }, "salmon": { "content": [ + "all_samples.SummarizedExperiment.rds", + "all_samples.SummarizedExperiment.rds", + "all_samples.SummarizedExperiment.rds", + "all_samples.SummarizedExperiment.rds", [ [ { "id": "all_samples" }, - "all_samples.gene_tpm.tsv:md5,9711ed8364c3a1ea4fc87bd5e0780835" + "all_samples.gene_counts.tsv:md5,865a4706b8bf47f476d8298fdd344902" ] ], [ @@ -81,7 +591,7 @@ { "id": "all_samples" }, - "all_samples.gene_counts.tsv:md5,865a4706b8bf47f476d8298fdd344902" + "all_samples.gene_counts_length_scaled.tsv:md5,46194b28815747fe3c3d5a619fa994a7" ] ], [ @@ -97,15 +607,17 @@ { "id": "all_samples" }, - "all_samples.gene_counts_length_scaled.tsv:md5,46194b28815747fe3c3d5a619fa994a7" + "all_samples.transcript_lengths.tsv:md5,f39a15fea56a5a8e5776dcdda0c8f102" ] ], + null, + null, [ [ { "id": "all_samples" }, - "all_samples.transcript_tpm.tsv:md5,e0c16bf083ebb88bcfaf27cfba12d3e9" + "all_samples.gene_tpm.tsv:md5,9711ed8364c3a1ea4fc87bd5e0780835" ] ], [ @@ -113,26 +625,20 @@ { "id": "all_samples" }, - "all_samples.transcript_lengths.tsv:md5,f39a15fea56a5a8e5776dcdda0c8f102" + "all_samples.transcript_tpm.tsv:md5,e0c16bf083ebb88bcfaf27cfba12d3e9" ] ], - null, - null, [ "versions.yml:md5,4c3564e1ba17d8ce2b0ee784251ddd87", "versions.yml:md5,b44caeec65491d47e098c7ddaf024b96", "versions.yml:md5,d5243289a32cde9e90e20f1a202bb566", "versions.yml:md5,e9e7d18c3de83f1113fb1ff0c55d35ed" - ], - "all_samples.SummarizedExperiment.rds", - "all_samples.SummarizedExperiment.rds", - "all_samples.SummarizedExperiment.rds", - "all_samples.SummarizedExperiment.rds" + ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.2" }, - "timestamp": "2024-05-28T12:53:39.46319" + "timestamp": "2024-07-03T15:35:48.954002" } } \ No newline at end of file From eb08f2fa73372d994300ea2474f688bfa691fc6b Mon Sep 17 00:00:00 2001 From: maxulysse Date: Wed, 3 Jul 2024 19:47:25 +0200 Subject: [PATCH 435/634] simplify snapshot for stub --- .../local/align_star/tests/main.nf.test | 34 +- .../local/align_star/tests/main.nf.test.snap | 836 +++- .../local/prepare_genome/tests/main.nf.test | 340 +- .../prepare_genome/tests/main.nf.test.snap | 4162 ++++++++++++----- 4 files changed, 3586 insertions(+), 1786 deletions(-) diff --git a/subworkflows/local/align_star/tests/main.nf.test b/subworkflows/local/align_star/tests/main.nf.test index 3f86c01a5..3894e0eab 100644 --- a/subworkflows/local/align_star/tests/main.nf.test +++ b/subworkflows/local/align_star/tests/main.nf.test @@ -206,22 +206,7 @@ nextflow_workflow { then { assertAll( { assert workflow.success}, - { assert snapshot( - file(workflow.out.log_final[0][1]).name, - file(workflow.out.log_out[0][1]).name, - workflow.out.bai, - workflow.out.bam, - workflow.out.bam_sorted, - workflow.out.bam_transcript, - workflow.out.csi, - workflow.out.log_progress, - workflow.out.fastq, - workflow.out.flagstat, - workflow.out.idxstats, - workflow.out.orig_bam, - workflow.out.stats, - workflow.out.tab, - workflow.out.versions).match()} + { assert snapshot(workflow.out).match()} ) } } @@ -277,22 +262,7 @@ nextflow_workflow { then { assertAll( { assert workflow.success}, - { assert snapshot( - file(workflow.out.log_final[0][1]).name, - file(workflow.out.log_out[0][1]).name, - workflow.out.bai, - workflow.out.bam, - workflow.out.bam_sorted, - workflow.out.bam_transcript, - workflow.out.csi, - workflow.out.log_progress, - workflow.out.fastq, - workflow.out.flagstat, - workflow.out.idxstats, - workflow.out.orig_bam, - workflow.out.stats, - workflow.out.tab, - workflow.out.versions).match()} + { assert snapshot(workflow.out).match()} ) } } diff --git a/subworkflows/local/align_star/tests/main.nf.test.snap b/subworkflows/local/align_star/tests/main.nf.test.snap index 2c5a527a5..b16ec1528 100644 --- a/subworkflows/local/align_star/tests/main.nf.test.snap +++ b/subworkflows/local/align_star/tests/main.nf.test.snap @@ -106,148 +106,314 @@ "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-07-03T10:42:50.176094" + "timestamp": "2024-07-03T19:13:41.194686" }, "star - no igenomes - stub": { "content": [ - "test.Log.final.out", - "test.Log.out", - [ - [ - { - "id": "test", - "single_end": false - }, - "test.bam.bai:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - [ - [ - { - "id": "test", - "single_end": false - }, - "test.bam:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - [ - [ - { - "id": "test", - "single_end": false - }, + { + "0": [ [ - "test.Aligned.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e", - "test.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + { + "id": "test", + "single_end": false + }, + [ + "test.Aligned.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e", + "testXd.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] ] - ] - ], - [ - [ - { - "id": "test", - "single_end": false - }, - "test.toTranscriptome.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - [ - [ - { - "id": "test", - "single_end": false - }, - "test.bam.csi:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - [ - [ - { - "id": "test", - "single_end": false - }, - "test.Log.progress.out:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - [ - [ - { - "id": "test", - "single_end": false - }, + ], + "1": [ [ - "/home/max/tests/6e361e57e6a3bdc7a9658b65cbbacd6/work/15/f5d31a04cce8dd4fdb0d695c29d4b7/test.unmapped_1.fastq.gz", - "/home/max/tests/6e361e57e6a3bdc7a9658b65cbbacd6/work/15/f5d31a04cce8dd4fdb0d695c29d4b7/test.unmapped_2.fastq.gz" + { + "id": "test", + "single_end": false + }, + "test.Log.final.out:md5,d41d8cd98f00b204e9800998ecf8427e" ] - ] - ], - [ - [ - { - "id": "test", - "single_end": false - }, - "test.flagstat:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - [ - [ - { - "id": "test", - "single_end": false - }, - "test.idxstats:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - [ - [ - { - "id": "test", - "single_end": false - }, + ], + "10": [ [ - "test.Aligned.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e", - "test.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e", - "testXd.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + { + "id": "test", + "single_end": false + }, + "test.bam.csi:md5,d41d8cd98f00b204e9800998ecf8427e" ] - ] - ], - [ - [ - { - "id": "test", - "single_end": false - }, - "test.stats:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - [ - [ - { - "id": "test", - "single_end": false - }, + ], + "11": [ [ - "test.ReadsPerGene.out.tab:md5,d41d8cd98f00b204e9800998ecf8427e", - "test.SJ.out.tab:md5,d41d8cd98f00b204e9800998ecf8427e", - "test.tab:md5,d41d8cd98f00b204e9800998ecf8427e" + { + "id": "test", + "single_end": false + }, + "test.stats:md5,d41d8cd98f00b204e9800998ecf8427e" ] - ] - ], - [ - "versions.yml:md5,06693106908e6f8f38a2c30accf7067d", - "versions.yml:md5,35c1cc21d26d9d8f00e6ec87e97fb634", - "versions.yml:md5,369619588c8c294b74dca9058a151b11", - "versions.yml:md5,78069d4515b04251f758ac52a49d9971", - "versions.yml:md5,b6a22ef369a375445a8f9313721b8092", - "versions.yml:md5,feaf798d368c662a7a1cea87a24a7434" - ] + ], + "12": [ + [ + { + "id": "test", + "single_end": false + }, + "test.flagstat:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "13": [ + [ + { + "id": "test", + "single_end": false + }, + "test.idxstats:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "14": [ + "versions.yml:md5,06693106908e6f8f38a2c30accf7067d", + "versions.yml:md5,35c1cc21d26d9d8f00e6ec87e97fb634", + "versions.yml:md5,369619588c8c294b74dca9058a151b11", + "versions.yml:md5,78069d4515b04251f758ac52a49d9971", + "versions.yml:md5,b6a22ef369a375445a8f9313721b8092", + "versions.yml:md5,feaf798d368c662a7a1cea87a24a7434" + ], + "2": [ + [ + { + "id": "test", + "single_end": false + }, + "test.Log.out:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "3": [ + [ + { + "id": "test", + "single_end": false + }, + "test.Log.progress.out:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "4": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test.Aligned.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "5": [ + [ + { + "id": "test", + "single_end": false + }, + "test.toTranscriptome.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "6": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "/home/max/tests/6e361e57e6a3bdc7a9658b65cbbacd6/work/73/6a2c722d1aa03bee231bf0cd682855/test.unmapped_1.fastq.gz", + "/home/max/tests/6e361e57e6a3bdc7a9658b65cbbacd6/work/73/6a2c722d1aa03bee231bf0cd682855/test.unmapped_2.fastq.gz" + ] + ] + ], + "7": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test.ReadsPerGene.out.tab:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.SJ.out.tab:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.tab:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "8": [ + [ + { + "id": "test", + "single_end": false + }, + "test.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "9": [ + [ + { + "id": "test", + "single_end": false + }, + "test.bam.bai:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "bai": [ + [ + { + "id": "test", + "single_end": false + }, + "test.bam.bai:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "bam": [ + [ + { + "id": "test", + "single_end": false + }, + "test.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "bam_sorted": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test.Aligned.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "bam_transcript": [ + [ + { + "id": "test", + "single_end": false + }, + "test.toTranscriptome.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "csi": [ + [ + { + "id": "test", + "single_end": false + }, + "test.bam.csi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "fastq": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "/home/max/tests/6e361e57e6a3bdc7a9658b65cbbacd6/work/73/6a2c722d1aa03bee231bf0cd682855/test.unmapped_1.fastq.gz", + "/home/max/tests/6e361e57e6a3bdc7a9658b65cbbacd6/work/73/6a2c722d1aa03bee231bf0cd682855/test.unmapped_2.fastq.gz" + ] + ] + ], + "flagstat": [ + [ + { + "id": "test", + "single_end": false + }, + "test.flagstat:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "idxstats": [ + [ + { + "id": "test", + "single_end": false + }, + "test.idxstats:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "log_final": [ + [ + { + "id": "test", + "single_end": false + }, + "test.Log.final.out:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "log_out": [ + [ + { + "id": "test", + "single_end": false + }, + "test.Log.out:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "log_progress": [ + [ + { + "id": "test", + "single_end": false + }, + "test.Log.progress.out:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "orig_bam": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test.Aligned.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e", + "testXd.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "stats": [ + [ + { + "id": "test", + "single_end": false + }, + "test.stats:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "tab": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test.ReadsPerGene.out.tab:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.SJ.out.tab:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.tab:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "versions": [ + "versions.yml:md5,06693106908e6f8f38a2c30accf7067d", + "versions.yml:md5,35c1cc21d26d9d8f00e6ec87e97fb634", + "versions.yml:md5,369619588c8c294b74dca9058a151b11", + "versions.yml:md5,78069d4515b04251f758ac52a49d9971", + "versions.yml:md5,b6a22ef369a375445a8f9313721b8092", + "versions.yml:md5,feaf798d368c662a7a1cea87a24a7434" + ] + } ], "meta": { "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-07-03T10:43:10.186065" + "timestamp": "2024-07-03T19:14:02.551656" }, "star - no igenomes": { "content": [ @@ -356,147 +522,313 @@ "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-07-03T10:41:54.293096" + "timestamp": "2024-07-03T19:12:49.496188" }, "star - with igenomes - stub": { "content": [ - "test.Log.final.out", - "test.Log.out", - [ - [ - { - "id": "test", - "single_end": false - }, - "test.bam.bai:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - [ - [ - { - "id": "test", - "single_end": false - }, - "test.bam:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - [ - [ - { - "id": "test", - "single_end": false - }, + { + "0": [ [ - "test.Aligned.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e", - "test.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + { + "id": "test", + "single_end": false + }, + [ + "test.Aligned.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e", + "testXd.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] ] - ] - ], - [ - [ - { - "id": "test", - "single_end": false - }, - "test.toTranscriptome.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - [ - [ - { - "id": "test", - "single_end": false - }, - "test.bam.csi:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - [ - [ - { - "id": "test", - "single_end": false - }, - "test.Log.progress.out:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - [ - [ - { - "id": "test", - "single_end": false - }, + ], + "1": [ [ - "/home/max/tests/6efdcb422a49d8bf15b844d59e0dc8a1/work/fa/b5d0173593fa74664b340bb2e08e07/test.unmapped_1.fastq.gz", - "/home/max/tests/6efdcb422a49d8bf15b844d59e0dc8a1/work/fa/b5d0173593fa74664b340bb2e08e07/test.unmapped_2.fastq.gz" + { + "id": "test", + "single_end": false + }, + "test.Log.final.out:md5,d41d8cd98f00b204e9800998ecf8427e" ] - ] - ], - [ - [ - { - "id": "test", - "single_end": false - }, - "test.flagstat:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - [ - [ - { - "id": "test", - "single_end": false - }, - "test.idxstats:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - [ - [ - { - "id": "test", - "single_end": false - }, + ], + "10": [ [ - "test.Aligned.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e", - "test.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e", - "testXd.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + { + "id": "test", + "single_end": false + }, + "test.bam.csi:md5,d41d8cd98f00b204e9800998ecf8427e" ] - ] - ], - [ - [ - { - "id": "test", - "single_end": false - }, - "test.stats:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - [ - [ - { - "id": "test", - "single_end": false - }, + ], + "11": [ [ - "test.ReadsPerGene.out.tab:md5,d41d8cd98f00b204e9800998ecf8427e", - "test.SJ.out.tab:md5,d41d8cd98f00b204e9800998ecf8427e", - "test.tab:md5,d41d8cd98f00b204e9800998ecf8427e" + { + "id": "test", + "single_end": false + }, + "test.stats:md5,d41d8cd98f00b204e9800998ecf8427e" ] - ] - ], - [ - "versions.yml:md5,06693106908e6f8f38a2c30accf7067d", - "versions.yml:md5,369619588c8c294b74dca9058a151b11", - "versions.yml:md5,78069d4515b04251f758ac52a49d9971", - "versions.yml:md5,b6a22ef369a375445a8f9313721b8092", - "versions.yml:md5,e3b043ba840d5bddde92f0bf1c91a5fc", - "versions.yml:md5,feaf798d368c662a7a1cea87a24a7434" - ] + ], + "12": [ + [ + { + "id": "test", + "single_end": false + }, + "test.flagstat:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "13": [ + [ + { + "id": "test", + "single_end": false + }, + "test.idxstats:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "14": [ + "versions.yml:md5,06693106908e6f8f38a2c30accf7067d", + "versions.yml:md5,369619588c8c294b74dca9058a151b11", + "versions.yml:md5,78069d4515b04251f758ac52a49d9971", + "versions.yml:md5,b6a22ef369a375445a8f9313721b8092", + "versions.yml:md5,e3b043ba840d5bddde92f0bf1c91a5fc", + "versions.yml:md5,feaf798d368c662a7a1cea87a24a7434" + ], + "2": [ + [ + { + "id": "test", + "single_end": false + }, + "test.Log.out:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "3": [ + [ + { + "id": "test", + "single_end": false + }, + "test.Log.progress.out:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "4": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test.Aligned.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "5": [ + [ + { + "id": "test", + "single_end": false + }, + "test.toTranscriptome.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "6": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "/home/max/tests/6efdcb422a49d8bf15b844d59e0dc8a1/work/c5/785c660b2dd25edba26620a8b08b62/test.unmapped_1.fastq.gz", + "/home/max/tests/6efdcb422a49d8bf15b844d59e0dc8a1/work/c5/785c660b2dd25edba26620a8b08b62/test.unmapped_2.fastq.gz" + ] + ] + ], + "7": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test.ReadsPerGene.out.tab:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.SJ.out.tab:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.tab:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "8": [ + [ + { + "id": "test", + "single_end": false + }, + "test.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "9": [ + [ + { + "id": "test", + "single_end": false + }, + "test.bam.bai:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "bai": [ + [ + { + "id": "test", + "single_end": false + }, + "test.bam.bai:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "bam": [ + [ + { + "id": "test", + "single_end": false + }, + "test.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "bam_sorted": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test.Aligned.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "bam_transcript": [ + [ + { + "id": "test", + "single_end": false + }, + "test.toTranscriptome.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "csi": [ + [ + { + "id": "test", + "single_end": false + }, + "test.bam.csi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "fastq": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "/home/max/tests/6efdcb422a49d8bf15b844d59e0dc8a1/work/c5/785c660b2dd25edba26620a8b08b62/test.unmapped_1.fastq.gz", + "/home/max/tests/6efdcb422a49d8bf15b844d59e0dc8a1/work/c5/785c660b2dd25edba26620a8b08b62/test.unmapped_2.fastq.gz" + ] + ] + ], + "flagstat": [ + [ + { + "id": "test", + "single_end": false + }, + "test.flagstat:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "idxstats": [ + [ + { + "id": "test", + "single_end": false + }, + "test.idxstats:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "log_final": [ + [ + { + "id": "test", + "single_end": false + }, + "test.Log.final.out:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "log_out": [ + [ + { + "id": "test", + "single_end": false + }, + "test.Log.out:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "log_progress": [ + [ + { + "id": "test", + "single_end": false + }, + "test.Log.progress.out:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "orig_bam": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test.Aligned.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e", + "testXd.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "stats": [ + [ + { + "id": "test", + "single_end": false + }, + "test.stats:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "tab": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test.ReadsPerGene.out.tab:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.SJ.out.tab:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.tab:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "versions": [ + "versions.yml:md5,06693106908e6f8f38a2c30accf7067d", + "versions.yml:md5,369619588c8c294b74dca9058a151b11", + "versions.yml:md5,78069d4515b04251f758ac52a49d9971", + "versions.yml:md5,b6a22ef369a375445a8f9313721b8092", + "versions.yml:md5,e3b043ba840d5bddde92f0bf1c91a5fc", + "versions.yml:md5,feaf798d368c662a7a1cea87a24a7434" + ] + } ], "meta": { "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-07-03T10:43:34.421071" + "timestamp": "2024-07-03T19:14:26.732738" } } \ No newline at end of file diff --git a/subworkflows/local/prepare_genome/tests/main.nf.test b/subworkflows/local/prepare_genome/tests/main.nf.test index 54fe460e8..9930f8f3f 100644 --- a/subworkflows/local/prepare_genome/tests/main.nf.test +++ b/subworkflows/local/prepare_genome/tests/main.nf.test @@ -1394,22 +1394,7 @@ nextflow_workflow { then { assertAll( { assert workflow.success}, - { assert snapshot( - workflow.out.transcript_fasta, - workflow.out.salmon_index, - workflow.out.fasta, - workflow.out.gtf, - workflow.out.fai, - workflow.out.gene_bed, - workflow.out.chrom_sizes, - workflow.out.splicesites, - workflow.out.sortmerna_index, - workflow.out.star_index, - workflow.out.rsem_index, - workflow.out.hisat2_index, - workflow.out.kallisto_index, - workflow.out.versions - ).match() } + { assert snapshot(workflow.out).match() } ) } } @@ -1463,22 +1448,7 @@ nextflow_workflow { then { assertAll( { assert workflow.success}, - { assert snapshot( - workflow.out.transcript_fasta, - workflow.out.salmon_index, - workflow.out.fasta, - workflow.out.gtf, - workflow.out.fai, - workflow.out.gene_bed, - workflow.out.chrom_sizes, - workflow.out.splicesites, - workflow.out.sortmerna_index, - workflow.out.star_index, - workflow.out.rsem_index, - workflow.out.hisat2_index, - workflow.out.kallisto_index, - workflow.out.versions - ).match() } + { assert snapshot(workflow.out).match() } ) } } @@ -1532,22 +1502,7 @@ nextflow_workflow { then { assertAll( { assert workflow.success}, - { assert snapshot( - workflow.out.transcript_fasta, - workflow.out.salmon_index, - workflow.out.fasta, - workflow.out.gtf, - workflow.out.fai, - workflow.out.gene_bed, - workflow.out.chrom_sizes, - workflow.out.splicesites, - workflow.out.sortmerna_index, - workflow.out.star_index, - workflow.out.rsem_index, - workflow.out.hisat2_index, - workflow.out.kallisto_index, - workflow.out.versions - ).match() } + { assert snapshot(workflow.out).match() } ) } } @@ -1601,22 +1556,7 @@ nextflow_workflow { then { assertAll( { assert workflow.success}, - { assert snapshot( - workflow.out.transcript_fasta, - workflow.out.salmon_index, - workflow.out.fasta, - workflow.out.gtf, - workflow.out.fai, - workflow.out.gene_bed, - workflow.out.chrom_sizes, - workflow.out.splicesites, - workflow.out.sortmerna_index, - workflow.out.star_index, - workflow.out.rsem_index, - workflow.out.hisat2_index, - workflow.out.kallisto_index, - workflow.out.versions - ).match() } + { assert snapshot(workflow.out).match() } ) } } @@ -1670,22 +1610,7 @@ nextflow_workflow { then { assertAll( { assert workflow.success}, - { assert snapshot( - workflow.out.transcript_fasta, - workflow.out.salmon_index, - workflow.out.fasta, - workflow.out.gtf, - workflow.out.fai, - workflow.out.gene_bed, - workflow.out.chrom_sizes, - workflow.out.splicesites, - workflow.out.sortmerna_index, - workflow.out.star_index, - workflow.out.rsem_index, - workflow.out.hisat2_index, - workflow.out.kallisto_index, - workflow.out.versions - ).match() } + { assert snapshot(workflow.out).match() } ) } } @@ -1739,22 +1664,7 @@ nextflow_workflow { then { assertAll( { assert workflow.success}, - { assert snapshot( - workflow.out.transcript_fasta, - workflow.out.salmon_index, - workflow.out.fasta, - workflow.out.gtf, - workflow.out.fai, - workflow.out.gene_bed, - workflow.out.chrom_sizes, - workflow.out.splicesites, - workflow.out.sortmerna_index, - workflow.out.star_index, - workflow.out.rsem_index, - workflow.out.hisat2_index, - workflow.out.kallisto_index, - workflow.out.versions - ).match() } + { assert snapshot(workflow.out).match() } ) } } @@ -1808,22 +1718,7 @@ nextflow_workflow { then { assertAll( { assert workflow.success}, - { assert snapshot( - workflow.out.transcript_fasta, - workflow.out.salmon_index, - workflow.out.fasta, - workflow.out.gtf, - workflow.out.fai, - workflow.out.gene_bed, - workflow.out.chrom_sizes, - workflow.out.splicesites, - workflow.out.sortmerna_index, - workflow.out.star_index, - workflow.out.rsem_index, - workflow.out.hisat2_index, - workflow.out.kallisto_index, - workflow.out.versions - ).match() } + { assert snapshot(workflow.out).match() } ) } } @@ -1877,22 +1772,7 @@ nextflow_workflow { then { assertAll( { assert workflow.success}, - { assert snapshot( - workflow.out.transcript_fasta, - workflow.out.salmon_index, - workflow.out.fasta, - workflow.out.gtf, - workflow.out.fai, - workflow.out.gene_bed, - workflow.out.chrom_sizes, - workflow.out.splicesites, - workflow.out.sortmerna_index, - workflow.out.star_index, - workflow.out.rsem_index, - workflow.out.hisat2_index, - workflow.out.kallisto_index, - workflow.out.versions - ).match() } + { assert snapshot(workflow.out).match() } ) } } @@ -1946,22 +1826,7 @@ nextflow_workflow { then { assertAll( { assert workflow.success}, - { assert snapshot( - workflow.out.transcript_fasta, - workflow.out.salmon_index, - workflow.out.fasta, - workflow.out.gtf, - workflow.out.fai, - workflow.out.gene_bed, - workflow.out.chrom_sizes, - workflow.out.splicesites, - workflow.out.sortmerna_index, - workflow.out.star_index, - workflow.out.rsem_index, - workflow.out.hisat2_index, - workflow.out.kallisto_index, - workflow.out.versions - ).match() } + { assert snapshot(workflow.out).match() } ) } } @@ -2015,22 +1880,7 @@ nextflow_workflow { then { assertAll( { assert workflow.success}, - { assert snapshot( - workflow.out.transcript_fasta, - workflow.out.salmon_index, - workflow.out.fasta, - workflow.out.gtf, - workflow.out.fai, - workflow.out.gene_bed, - workflow.out.chrom_sizes, - workflow.out.splicesites, - workflow.out.sortmerna_index, - workflow.out.star_index, - workflow.out.rsem_index, - workflow.out.hisat2_index, - workflow.out.kallisto_index, - workflow.out.versions - ).match() } + { assert snapshot(workflow.out).match() } ) } } @@ -2084,22 +1934,7 @@ nextflow_workflow { then { assertAll( { assert workflow.success}, - { assert snapshot( - workflow.out.transcript_fasta, - workflow.out.salmon_index, - workflow.out.fasta, - workflow.out.gtf, - workflow.out.fai, - workflow.out.gene_bed, - workflow.out.chrom_sizes, - workflow.out.splicesites, - workflow.out.sortmerna_index, - workflow.out.star_index, - workflow.out.rsem_index, - workflow.out.hisat2_index, - workflow.out.kallisto_index, - workflow.out.versions - ).match() } + { assert snapshot(workflow.out).match() } ) } } @@ -2153,22 +1988,7 @@ nextflow_workflow { then { assertAll( { assert workflow.success}, - { assert snapshot( - workflow.out.transcript_fasta, - workflow.out.salmon_index, - workflow.out.fasta, - workflow.out.gtf, - workflow.out.fai, - workflow.out.gene_bed, - workflow.out.chrom_sizes, - workflow.out.splicesites, - workflow.out.sortmerna_index, - workflow.out.star_index, - workflow.out.rsem_index, - workflow.out.hisat2_index, - workflow.out.kallisto_index, - workflow.out.versions - ).match() } + { assert snapshot(workflow.out).match() } ) } } @@ -2222,22 +2042,7 @@ nextflow_workflow { then { assertAll( { assert workflow.success}, - { assert snapshot( - workflow.out.transcript_fasta, - workflow.out.salmon_index, - workflow.out.fasta, - workflow.out.gtf, - workflow.out.fai, - workflow.out.gene_bed, - workflow.out.chrom_sizes, - workflow.out.splicesites, - workflow.out.sortmerna_index, - workflow.out.star_index, - workflow.out.rsem_index, - workflow.out.hisat2_index, - workflow.out.kallisto_index, - workflow.out.versions - ).match() } + { assert snapshot(workflow.out).match() } ) } } @@ -2291,22 +2096,7 @@ nextflow_workflow { then { assertAll( { assert workflow.success}, - { assert snapshot( - workflow.out.transcript_fasta, - workflow.out.salmon_index, - workflow.out.fasta, - workflow.out.gtf, - workflow.out.fai, - workflow.out.gene_bed, - workflow.out.chrom_sizes, - workflow.out.splicesites, - workflow.out.sortmerna_index, - workflow.out.star_index, - workflow.out.rsem_index, - workflow.out.hisat2_index, - workflow.out.kallisto_index, - workflow.out.versions - ).match() } + { assert snapshot(workflow.out).match() } ) } } @@ -2360,22 +2150,7 @@ nextflow_workflow { then { assertAll( { assert workflow.success}, - { assert snapshot( - workflow.out.transcript_fasta, - workflow.out.salmon_index, - workflow.out.fasta, - workflow.out.gtf, - workflow.out.fai, - workflow.out.gene_bed, - workflow.out.chrom_sizes, - workflow.out.splicesites, - workflow.out.sortmerna_index, - workflow.out.star_index, - workflow.out.rsem_index, - workflow.out.hisat2_index, - workflow.out.kallisto_index, - workflow.out.versions - ).match() } + { assert snapshot(workflow.out).match() } ) } } @@ -2429,22 +2204,7 @@ nextflow_workflow { then { assertAll( { assert workflow.success}, - { assert snapshot( - workflow.out.transcript_fasta, - workflow.out.salmon_index, - workflow.out.fasta, - workflow.out.gtf, - workflow.out.fai, - workflow.out.gene_bed, - workflow.out.chrom_sizes, - workflow.out.splicesites, - workflow.out.sortmerna_index, - workflow.out.star_index, - workflow.out.rsem_index, - workflow.out.hisat2_index, - workflow.out.kallisto_index, - workflow.out.versions - ).match() } + { assert snapshot(workflow.out).match() } ) } } @@ -2498,22 +2258,7 @@ nextflow_workflow { then { assertAll( { assert workflow.success}, - { assert snapshot( - workflow.out.transcript_fasta, - workflow.out.salmon_index, - workflow.out.fasta, - workflow.out.gtf, - workflow.out.fai, - workflow.out.gene_bed, - workflow.out.chrom_sizes, - workflow.out.splicesites, - workflow.out.sortmerna_index, - workflow.out.star_index, - workflow.out.rsem_index, - workflow.out.hisat2_index, - workflow.out.kallisto_index, - workflow.out.versions - ).match() } + { assert snapshot(workflow.out).match() } ) } } @@ -2567,22 +2312,7 @@ nextflow_workflow { then { assertAll( { assert workflow.success}, - { assert snapshot( - workflow.out.transcript_fasta, - workflow.out.salmon_index, - workflow.out.fasta, - workflow.out.gtf, - workflow.out.fai, - workflow.out.gene_bed, - workflow.out.chrom_sizes, - workflow.out.splicesites, - workflow.out.sortmerna_index, - workflow.out.star_index, - workflow.out.rsem_index, - workflow.out.hisat2_index, - workflow.out.kallisto_index, - workflow.out.versions - ).match() } + { assert snapshot(workflow.out).match() } ) } } @@ -2636,22 +2366,7 @@ nextflow_workflow { then { assertAll( { assert workflow.success}, - { assert snapshot( - workflow.out.transcript_fasta, - workflow.out.salmon_index, - workflow.out.fasta, - workflow.out.gtf, - workflow.out.fai, - workflow.out.gene_bed, - workflow.out.chrom_sizes, - workflow.out.splicesites, - workflow.out.sortmerna_index, - workflow.out.star_index, - workflow.out.rsem_index, - workflow.out.hisat2_index, - workflow.out.kallisto_index, - workflow.out.versions - ).match() } + { assert snapshot(workflow.out).match() } ) } } @@ -2705,22 +2420,7 @@ nextflow_workflow { then { assertAll( { assert workflow.success}, - { assert snapshot( - workflow.out.transcript_fasta, - workflow.out.salmon_index, - workflow.out.fasta, - workflow.out.gtf, - workflow.out.fai, - workflow.out.gene_bed, - workflow.out.chrom_sizes, - workflow.out.splicesites, - workflow.out.sortmerna_index, - workflow.out.star_index, - workflow.out.rsem_index, - workflow.out.hisat2_index, - workflow.out.kallisto_index, - workflow.out.versions - ).match() } + { assert snapshot(workflow.out).match() } ) } } diff --git a/subworkflows/local/prepare_genome/tests/main.nf.test.snap b/subworkflows/local/prepare_genome/tests/main.nf.test.snap index b43963ea7..49e63111f 100644 --- a/subworkflows/local/prepare_genome/tests/main.nf.test.snap +++ b/subworkflows/local/prepare_genome/tests/main.nf.test.snap @@ -1,57 +1,150 @@ { "skip_gtf_filter = true - stub": { "content": [ - [ - "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" - ], - [ - "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" - ], - [ - "genome_transcriptome.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - [ - "genome_transcriptome.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - [ - "genome_transcriptome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - [ - "genome_transcriptome.bed:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - [ - "genome_transcriptome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - [ - - ], - [ - - ], - [ - - ], - [ - - ], - [ - - ], - [ - - ], - [ - "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", - "versions.yml:md5,71252f1a221be05593361acccb99506b", - "versions.yml:md5,bc99889446f02427c166b3219b793672", - "versions.yml:md5,cc8f32b7c37c35a075d38cb773004eaa" - ] + { + "0": [ + "genome_transcriptome.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "1": [ + "genome_transcriptome.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "10": [ + + ], + "11": [ + + ], + "12": [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" + ], + "13": [ + + ], + "14": [ + "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", + "versions.yml:md5,71252f1a221be05593361acccb99506b", + "versions.yml:md5,bc99889446f02427c166b3219b793672", + "versions.yml:md5,cc8f32b7c37c35a075d38cb773004eaa" + ], + "2": [ + "genome_transcriptome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "3": [ + "genome_transcriptome.bed:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "4": [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" + ], + "5": [ + "genome_transcriptome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "6": [ + + ], + "7": [ + [ + [ + [ + [ + "chr1.chrom.gz:md5,4752b2fa140165e41b5d0be484b2180c", + "info.txt:md5,ff21ca1661c3715cf51c8bed9c521ba4", + "merged_ref_8374379829187813017.fa.gz:md5,5b42850f6d96e66571ae9d29f74505de", + "namelist.txt:md5,2d3a23e005f63d34a85297a5a4baf421", + "reflist.txt:md5,ed5a2571a3d7d1e82ba69b3de48ca20e", + "scaffolds.txt.gz:md5,83f7385941b559ab887587737e4b6973", + "summary.txt:md5,0ad80f6094fb7dfc688602537af01a1f" + ] + ], + [ + [ + "chr1_index_k13_c13_b1.block:md5,900a1be9d0cd47826eb9fefe8c8c96b1", + "chr1_index_k13_c13_b1.block2.gz:md5,eefc669b62e2cb94dbb94031a7bde4fd" + ] + ] + ] + ] + ], + "8": [ + + ], + "9": [ + + ], + "bbsplit_index": [ + [ + [ + [ + [ + "chr1.chrom.gz:md5,4752b2fa140165e41b5d0be484b2180c", + "info.txt:md5,ff21ca1661c3715cf51c8bed9c521ba4", + "merged_ref_8374379829187813017.fa.gz:md5,5b42850f6d96e66571ae9d29f74505de", + "namelist.txt:md5,2d3a23e005f63d34a85297a5a4baf421", + "reflist.txt:md5,ed5a2571a3d7d1e82ba69b3de48ca20e", + "scaffolds.txt.gz:md5,83f7385941b559ab887587737e4b6973", + "summary.txt:md5,0ad80f6094fb7dfc688602537af01a1f" + ] + ], + [ + [ + "chr1_index_k13_c13_b1.block:md5,900a1be9d0cd47826eb9fefe8c8c96b1", + "chr1_index_k13_c13_b1.block2.gz:md5,eefc669b62e2cb94dbb94031a7bde4fd" + ] + ] + ] + ] + ], + "chrom_sizes": [ + "genome_transcriptome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "fai": [ + "genome_transcriptome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "fasta": [ + "genome_transcriptome.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "gene_bed": [ + "genome_transcriptome.bed:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "gtf": [ + "genome_transcriptome.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "hisat2_index": [ + + ], + "kallisto_index": [ + + ], + "rsem_index": [ + + ], + "salmon_index": [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" + ], + "sortmerna_index": [ + + ], + "splicesites": [ + + ], + "star_index": [ + + ], + "transcript_fasta": [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" + ], + "versions": [ + "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", + "versions.yml:md5,71252f1a221be05593361acccb99506b", + "versions.yml:md5,bc99889446f02427c166b3219b793672", + "versions.yml:md5,cc8f32b7c37c35a075d38cb773004eaa" + ] + } ], "meta": { "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-07-03T11:03:49.482635" + "timestamp": "2024-07-03T19:39:03.795766" }, "skip_gtf_filter": { "content": [ @@ -103,229 +196,605 @@ ], "meta": { "nf-test": "0.8.4", - "nextflow": "24.04.1" + "nextflow": "24.04.2" }, - "timestamp": "2024-06-20T18:13:30.196042" + "timestamp": "2024-07-03T19:15:45.003106" }, "gencode = false - stub": { "content": [ - [ - "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" - ], - [ - "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" - ], - [ - "genome_transcriptome.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - [ - "genome_transcriptome.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - [ - "genome_transcriptome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - [ - "genome_transcriptome.bed:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - [ - "genome_transcriptome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - [ - - ], - [ - - ], - [ - - ], - [ - - ], - [ - - ], - [ - - ], - [ - "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", - "versions.yml:md5,71252f1a221be05593361acccb99506b", - "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", - "versions.yml:md5,bc99889446f02427c166b3219b793672", - "versions.yml:md5,cc8f32b7c37c35a075d38cb773004eaa" - ] + { + "0": [ + "genome_transcriptome.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "1": [ + "genome_transcriptome.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "10": [ + + ], + "11": [ + + ], + "12": [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" + ], + "13": [ + + ], + "14": [ + "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", + "versions.yml:md5,71252f1a221be05593361acccb99506b", + "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", + "versions.yml:md5,bc99889446f02427c166b3219b793672", + "versions.yml:md5,cc8f32b7c37c35a075d38cb773004eaa" + ], + "2": [ + "genome_transcriptome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "3": [ + "genome_transcriptome.bed:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "4": [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" + ], + "5": [ + "genome_transcriptome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "6": [ + + ], + "7": [ + [ + [ + [ + [ + "chr1.chrom.gz:md5,4752b2fa140165e41b5d0be484b2180c", + "info.txt:md5,f6995be9f1b4620d245d877677813899", + "merged_ref_8374379829187813017.fa.gz:md5,5b42850f6d96e66571ae9d29f74505de", + "namelist.txt:md5,2d3a23e005f63d34a85297a5a4baf421", + "reflist.txt:md5,619cf9500c8d08a4a1c4492c86cc2cc6", + "scaffolds.txt.gz:md5,ba5a8e2f33600a6096cd78e278dc4177", + "summary.txt:md5,c70ab9debd60bb845aaf2d967e4e2d42" + ] + ], + [ + [ + "chr1_index_k13_c13_b1.block:md5,900a1be9d0cd47826eb9fefe8c8c96b1", + "chr1_index_k13_c13_b1.block2.gz:md5,eefc669b62e2cb94dbb94031a7bde4fd" + ] + ] + ] + ] + ], + "8": [ + + ], + "9": [ + + ], + "bbsplit_index": [ + [ + [ + [ + [ + "chr1.chrom.gz:md5,4752b2fa140165e41b5d0be484b2180c", + "info.txt:md5,f6995be9f1b4620d245d877677813899", + "merged_ref_8374379829187813017.fa.gz:md5,5b42850f6d96e66571ae9d29f74505de", + "namelist.txt:md5,2d3a23e005f63d34a85297a5a4baf421", + "reflist.txt:md5,619cf9500c8d08a4a1c4492c86cc2cc6", + "scaffolds.txt.gz:md5,ba5a8e2f33600a6096cd78e278dc4177", + "summary.txt:md5,c70ab9debd60bb845aaf2d967e4e2d42" + ] + ], + [ + [ + "chr1_index_k13_c13_b1.block:md5,900a1be9d0cd47826eb9fefe8c8c96b1", + "chr1_index_k13_c13_b1.block2.gz:md5,eefc669b62e2cb94dbb94031a7bde4fd" + ] + ] + ] + ] + ], + "chrom_sizes": [ + "genome_transcriptome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "fai": [ + "genome_transcriptome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "fasta": [ + "genome_transcriptome.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "gene_bed": [ + "genome_transcriptome.bed:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "gtf": [ + "genome_transcriptome.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "hisat2_index": [ + + ], + "kallisto_index": [ + + ], + "rsem_index": [ + + ], + "salmon_index": [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" + ], + "sortmerna_index": [ + + ], + "splicesites": [ + + ], + "star_index": [ + + ], + "transcript_fasta": [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" + ], + "versions": [ + "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", + "versions.yml:md5,71252f1a221be05593361acccb99506b", + "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", + "versions.yml:md5,bc99889446f02427c166b3219b793672", + "versions.yml:md5,cc8f32b7c37c35a075d38cb773004eaa" + ] + } ], "meta": { "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-07-03T10:58:02.396852" + "timestamp": "2024-07-03T19:23:29.154378" }, "gff = false - stub": { "content": [ - [ - "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" - ], - [ - "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" - ], - [ - "genome_transcriptome.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - [ - "genome_transcriptome.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - [ - "genome_transcriptome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - [ - "genome_transcriptome.bed:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - [ - "genome_transcriptome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - [ - - ], - [ - - ], - [ - - ], - [ - - ], - [ - - ], - [ - - ], - [ - "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", - "versions.yml:md5,71252f1a221be05593361acccb99506b", - "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", - "versions.yml:md5,bc99889446f02427c166b3219b793672", - "versions.yml:md5,cc8f32b7c37c35a075d38cb773004eaa" - ] + { + "0": [ + "genome_transcriptome.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "1": [ + "genome_transcriptome.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "10": [ + + ], + "11": [ + + ], + "12": [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" + ], + "13": [ + + ], + "14": [ + "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", + "versions.yml:md5,71252f1a221be05593361acccb99506b", + "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", + "versions.yml:md5,bc99889446f02427c166b3219b793672", + "versions.yml:md5,cc8f32b7c37c35a075d38cb773004eaa" + ], + "2": [ + "genome_transcriptome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "3": [ + "genome_transcriptome.bed:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "4": [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" + ], + "5": [ + "genome_transcriptome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "6": [ + + ], + "7": [ + [ + [ + [ + [ + "chr1.chrom.gz:md5,4752b2fa140165e41b5d0be484b2180c", + "info.txt:md5,728011f382bc05efff4c18b1acb8818d", + "merged_ref_8374379829187813017.fa.gz:md5,5b42850f6d96e66571ae9d29f74505de", + "namelist.txt:md5,2d3a23e005f63d34a85297a5a4baf421", + "reflist.txt:md5,b82f80d913d5a32e3a6d0a4b2f08d1e9", + "scaffolds.txt.gz:md5,154edf7156f585a464c8d70655ae9da4", + "summary.txt:md5,fdbca2f815e370c347993b6e1cd73d92" + ] + ], + [ + [ + "chr1_index_k13_c13_b1.block:md5,900a1be9d0cd47826eb9fefe8c8c96b1", + "chr1_index_k13_c13_b1.block2.gz:md5,eefc669b62e2cb94dbb94031a7bde4fd" + ] + ] + ] + ] + ], + "8": [ + + ], + "9": [ + + ], + "bbsplit_index": [ + [ + [ + [ + [ + "chr1.chrom.gz:md5,4752b2fa140165e41b5d0be484b2180c", + "info.txt:md5,728011f382bc05efff4c18b1acb8818d", + "merged_ref_8374379829187813017.fa.gz:md5,5b42850f6d96e66571ae9d29f74505de", + "namelist.txt:md5,2d3a23e005f63d34a85297a5a4baf421", + "reflist.txt:md5,b82f80d913d5a32e3a6d0a4b2f08d1e9", + "scaffolds.txt.gz:md5,154edf7156f585a464c8d70655ae9da4", + "summary.txt:md5,fdbca2f815e370c347993b6e1cd73d92" + ] + ], + [ + [ + "chr1_index_k13_c13_b1.block:md5,900a1be9d0cd47826eb9fefe8c8c96b1", + "chr1_index_k13_c13_b1.block2.gz:md5,eefc669b62e2cb94dbb94031a7bde4fd" + ] + ] + ] + ] + ], + "chrom_sizes": [ + "genome_transcriptome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "fai": [ + "genome_transcriptome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "fasta": [ + "genome_transcriptome.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "gene_bed": [ + "genome_transcriptome.bed:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "gtf": [ + "genome_transcriptome.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "hisat2_index": [ + + ], + "kallisto_index": [ + + ], + "rsem_index": [ + + ], + "salmon_index": [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" + ], + "sortmerna_index": [ + + ], + "splicesites": [ + + ], + "star_index": [ + + ], + "transcript_fasta": [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" + ], + "versions": [ + "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", + "versions.yml:md5,71252f1a221be05593361acccb99506b", + "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", + "versions.yml:md5,bc99889446f02427c166b3219b793672", + "versions.yml:md5,cc8f32b7c37c35a075d38cb773004eaa" + ] + } ], "meta": { "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-07-03T11:00:22.950255" + "timestamp": "2024-07-03T19:27:31.747271" }, "skip_pseudoalignment = true - stub": { "content": [ - [ - "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" - ], - [ - "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" - ], - [ - "genome_transcriptome.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - [ - "genome_transcriptome.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - [ - "genome_transcriptome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - [ - "genome_transcriptome.bed:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - [ - "genome_transcriptome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - [ - - ], - [ - - ], - [ - - ], - [ - - ], - [ - - ], - [ - - ], - [ - "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", - "versions.yml:md5,71252f1a221be05593361acccb99506b", - "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", - "versions.yml:md5,bc99889446f02427c166b3219b793672", - "versions.yml:md5,cc8f32b7c37c35a075d38cb773004eaa" - ] + { + "0": [ + "genome_transcriptome.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "1": [ + "genome_transcriptome.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "10": [ + + ], + "11": [ + + ], + "12": [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" + ], + "13": [ + + ], + "14": [ + "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", + "versions.yml:md5,71252f1a221be05593361acccb99506b", + "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", + "versions.yml:md5,bc99889446f02427c166b3219b793672", + "versions.yml:md5,cc8f32b7c37c35a075d38cb773004eaa" + ], + "2": [ + "genome_transcriptome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "3": [ + "genome_transcriptome.bed:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "4": [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" + ], + "5": [ + "genome_transcriptome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "6": [ + + ], + "7": [ + [ + [ + [ + [ + "chr1.chrom.gz:md5,4752b2fa140165e41b5d0be484b2180c", + "info.txt:md5,6a55f1924c832d886e6b7eb87036af1c", + "merged_ref_8374379829187813017.fa.gz:md5,5b42850f6d96e66571ae9d29f74505de", + "namelist.txt:md5,2d3a23e005f63d34a85297a5a4baf421", + "reflist.txt:md5,7e60f60ac09e56c770375e42c0db189c", + "scaffolds.txt.gz:md5,4ad2145d816844900d53995b1ace9910", + "summary.txt:md5,1b00923bbe3ba56635d1fc491933ea88" + ] + ], + [ + [ + "chr1_index_k13_c13_b1.block:md5,900a1be9d0cd47826eb9fefe8c8c96b1", + "chr1_index_k13_c13_b1.block2.gz:md5,eefc669b62e2cb94dbb94031a7bde4fd" + ] + ] + ] + ] + ], + "8": [ + + ], + "9": [ + + ], + "bbsplit_index": [ + [ + [ + [ + [ + "chr1.chrom.gz:md5,4752b2fa140165e41b5d0be484b2180c", + "info.txt:md5,6a55f1924c832d886e6b7eb87036af1c", + "merged_ref_8374379829187813017.fa.gz:md5,5b42850f6d96e66571ae9d29f74505de", + "namelist.txt:md5,2d3a23e005f63d34a85297a5a4baf421", + "reflist.txt:md5,7e60f60ac09e56c770375e42c0db189c", + "scaffolds.txt.gz:md5,4ad2145d816844900d53995b1ace9910", + "summary.txt:md5,1b00923bbe3ba56635d1fc491933ea88" + ] + ], + [ + [ + "chr1_index_k13_c13_b1.block:md5,900a1be9d0cd47826eb9fefe8c8c96b1", + "chr1_index_k13_c13_b1.block2.gz:md5,eefc669b62e2cb94dbb94031a7bde4fd" + ] + ] + ] + ] + ], + "chrom_sizes": [ + "genome_transcriptome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "fai": [ + "genome_transcriptome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "fasta": [ + "genome_transcriptome.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "gene_bed": [ + "genome_transcriptome.bed:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "gtf": [ + "genome_transcriptome.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "hisat2_index": [ + + ], + "kallisto_index": [ + + ], + "rsem_index": [ + + ], + "salmon_index": [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" + ], + "sortmerna_index": [ + + ], + "splicesites": [ + + ], + "star_index": [ + + ], + "transcript_fasta": [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" + ], + "versions": [ + "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", + "versions.yml:md5,71252f1a221be05593361acccb99506b", + "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", + "versions.yml:md5,bc99889446f02427c166b3219b793672", + "versions.yml:md5,cc8f32b7c37c35a075d38cb773004eaa" + ] + } ], "meta": { "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-07-03T11:04:58.786648" + "timestamp": "2024-07-03T19:44:32.636525" }, "featurecounts_group_type = 'gene_type' - stub": { "content": [ - [ - "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" - ], - [ - "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" - ], - [ - "genome_transcriptome.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - [ - "genome_transcriptome.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - [ - "genome_transcriptome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - [ - "genome_transcriptome.bed:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - [ - "genome_transcriptome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - [ - - ], - [ - - ], - [ - - ], - [ - - ], - [ - - ], - [ - - ], - [ - "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", - "versions.yml:md5,71252f1a221be05593361acccb99506b", - "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", - "versions.yml:md5,bc99889446f02427c166b3219b793672", - "versions.yml:md5,cc8f32b7c37c35a075d38cb773004eaa" - ] + { + "0": [ + "genome_transcriptome.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "1": [ + "genome_transcriptome.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "10": [ + + ], + "11": [ + + ], + "12": [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" + ], + "13": [ + + ], + "14": [ + "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", + "versions.yml:md5,71252f1a221be05593361acccb99506b", + "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", + "versions.yml:md5,bc99889446f02427c166b3219b793672", + "versions.yml:md5,cc8f32b7c37c35a075d38cb773004eaa" + ], + "2": [ + "genome_transcriptome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "3": [ + "genome_transcriptome.bed:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "4": [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" + ], + "5": [ + "genome_transcriptome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "6": [ + + ], + "7": [ + [ + [ + [ + [ + "chr1.chrom.gz:md5,4752b2fa140165e41b5d0be484b2180c", + "info.txt:md5,0be88ce559437c1c1487895db50b72fa", + "merged_ref_8374379829187813017.fa.gz:md5,5b42850f6d96e66571ae9d29f74505de", + "namelist.txt:md5,2d3a23e005f63d34a85297a5a4baf421", + "reflist.txt:md5,e0bac54f247bc8cbaeb7f590436cb755", + "scaffolds.txt.gz:md5,64be7ab10dbb6be4a6dfbecb3c12f8d4", + "summary.txt:md5,b2d42a7d6781509f1f5f987e61250c0e" + ] + ], + [ + [ + "chr1_index_k13_c13_b1.block:md5,900a1be9d0cd47826eb9fefe8c8c96b1", + "chr1_index_k13_c13_b1.block2.gz:md5,eefc669b62e2cb94dbb94031a7bde4fd" + ] + ] + ] + ] + ], + "8": [ + + ], + "9": [ + + ], + "bbsplit_index": [ + [ + [ + [ + [ + "chr1.chrom.gz:md5,4752b2fa140165e41b5d0be484b2180c", + "info.txt:md5,0be88ce559437c1c1487895db50b72fa", + "merged_ref_8374379829187813017.fa.gz:md5,5b42850f6d96e66571ae9d29f74505de", + "namelist.txt:md5,2d3a23e005f63d34a85297a5a4baf421", + "reflist.txt:md5,e0bac54f247bc8cbaeb7f590436cb755", + "scaffolds.txt.gz:md5,64be7ab10dbb6be4a6dfbecb3c12f8d4", + "summary.txt:md5,b2d42a7d6781509f1f5f987e61250c0e" + ] + ], + [ + [ + "chr1_index_k13_c13_b1.block:md5,900a1be9d0cd47826eb9fefe8c8c96b1", + "chr1_index_k13_c13_b1.block2.gz:md5,eefc669b62e2cb94dbb94031a7bde4fd" + ] + ] + ] + ] + ], + "chrom_sizes": [ + "genome_transcriptome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "fai": [ + "genome_transcriptome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "fasta": [ + "genome_transcriptome.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "gene_bed": [ + "genome_transcriptome.bed:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "gtf": [ + "genome_transcriptome.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "hisat2_index": [ + + ], + "kallisto_index": [ + + ], + "rsem_index": [ + + ], + "salmon_index": [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" + ], + "sortmerna_index": [ + + ], + "splicesites": [ + + ], + "star_index": [ + + ], + "transcript_fasta": [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" + ], + "versions": [ + "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", + "versions.yml:md5,71252f1a221be05593361acccb99506b", + "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", + "versions.yml:md5,bc99889446f02427c166b3219b793672", + "versions.yml:md5,cc8f32b7c37c35a075d38cb773004eaa" + ] + } ], "meta": { "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-07-03T11:03:27.557216" + "timestamp": "2024-07-03T19:37:24.728833" }, "gtf = false": { "content": [ @@ -380,9 +849,9 @@ ], "meta": { "nf-test": "0.8.4", - "nextflow": "24.04.1" + "nextflow": "24.04.2" }, - "timestamp": "2024-06-20T18:14:42.913968" + "timestamp": "2024-07-03T19:17:19.742633" }, "gfp = false": { "content": [ @@ -434,9 +903,9 @@ ], "meta": { "nf-test": "0.8.4", - "nextflow": "24.04.1" + "nextflow": "24.04.2" }, - "timestamp": "2024-06-20T18:15:16.551347" + "timestamp": "2024-07-03T19:18:06.890333" }, "skip_bbsplit = true": { "content": [ @@ -450,831 +919,7 @@ "genome_gfp.fasta:md5,e23e302af63736a199985a169fdac055" ], [ - "genome_gfp.gtf:md5,c98b12c302f15731bfc36bcf297cfe28" - ], - [ - "genome_gfp.fasta.fai:md5,8fa54c6bd2ea6a369efbb8ab4f30156a" - ], - [ - "genome_gfp.bed:md5,991993ebef1def1d5823632c21177ec3" - ], - [ - "genome_gfp.fasta.sizes:md5,9b755f8f349b14accefb4d859f84de26" - ], - [ - - ], - [ - - ], - [ - - ], - [ - - ], - [ - - ], - [ - - ], - [ - "versions.yml:md5,1cd265cb86a23a27f683ffb2459f37f5", - "versions.yml:md5,71252f1a221be05593361acccb99506b", - "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", - "versions.yml:md5,bc99889446f02427c166b3219b793672" - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.1" - }, - "timestamp": "2024-06-20T18:17:57.14732" - }, - "salmon_index = false - stub": { - "content": [ - [ - "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" - ], - [ - - ], - [ - "genome_transcriptome.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - [ - "genome_transcriptome.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - [ - "genome_transcriptome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - [ - "genome_transcriptome.bed:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - [ - "genome_transcriptome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - [ - - ], - [ - - ], - [ - - ], - [ - - ], - [ - - ], - [ - - ], - [ - "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", - "versions.yml:md5,71252f1a221be05593361acccb99506b", - "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", - "versions.yml:md5,bc99889446f02427c166b3219b793672", - "versions.yml:md5,cc8f32b7c37c35a075d38cb773004eaa" - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" - }, - "timestamp": "2024-07-03T11:02:14.826294" - }, - "skip_alignment": { - "content": [ - [ - "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" - ], - [ - "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" - ], - [ - "genome_gfp.fasta:md5,e23e302af63736a199985a169fdac055" - ], - [ - "genome_gfp.gtf:md5,c98b12c302f15731bfc36bcf297cfe28" - ], - [ - "genome_gfp.fasta.fai:md5,8fa54c6bd2ea6a369efbb8ab4f30156a" - ], - [ - "genome_gfp.bed:md5,991993ebef1def1d5823632c21177ec3" - ], - [ - "genome_gfp.fasta.sizes:md5,9b755f8f349b14accefb4d859f84de26" - ], - [ - - ], - [ - - ], - [ - - ], - [ - - ], - [ - - ], - [ - - ], - [ - "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", - "versions.yml:md5,1cd265cb86a23a27f683ffb2459f37f5", - "versions.yml:md5,71252f1a221be05593361acccb99506b", - "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", - "versions.yml:md5,bc99889446f02427c166b3219b793672" - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.1" - }, - "timestamp": "2024-06-20T18:14:04.612027" - }, - "gfp = false - stub": { - "content": [ - [ - "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" - ], - [ - "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" - ], - [ - "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/genome.fasta" - ], - [ - "genome.filtered.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - [ - "genome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - [ - "genome.filtered.bed:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - [ - "genome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - [ - - ], - [ - - ], - [ - - ], - [ - - ], - [ - - ], - [ - - ], - [ - "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", - "versions.yml:md5,71252f1a221be05593361acccb99506b", - "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", - "versions.yml:md5,bc99889446f02427c166b3219b793672" - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" - }, - "timestamp": "2024-07-03T11:00:46.397617" - }, - "gencode = false": { - "content": [ - [ - "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" - ], - [ - "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" - ], - [ - "genome_gfp.fasta:md5,e23e302af63736a199985a169fdac055" - ], - [ - "genome_gfp.gtf:md5,c98b12c302f15731bfc36bcf297cfe28" - ], - [ - "genome_gfp.fasta.fai:md5,8fa54c6bd2ea6a369efbb8ab4f30156a" - ], - [ - "genome_gfp.bed:md5,991993ebef1def1d5823632c21177ec3" - ], - [ - "genome_gfp.fasta.sizes:md5,9b755f8f349b14accefb4d859f84de26" - ], - [ - - ], - [ - - ], - [ - - ], - [ - - ], - [ - - ], - [ - - ], - [ - "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", - "versions.yml:md5,1cd265cb86a23a27f683ffb2459f37f5", - "versions.yml:md5,71252f1a221be05593361acccb99506b", - "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", - "versions.yml:md5,bc99889446f02427c166b3219b793672" - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.1" - }, - "timestamp": "2024-06-20T18:13:13.483047" - }, - "default options": { - "content": [ - [ - "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" - ], - [ - "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" - ], - [ - "genome_gfp.fasta:md5,e23e302af63736a199985a169fdac055" - ], - [ - "genome_gfp.gtf:md5,c98b12c302f15731bfc36bcf297cfe28" - ], - [ - "genome_gfp.fasta.fai:md5,8fa54c6bd2ea6a369efbb8ab4f30156a" - ], - [ - "genome_gfp.bed:md5,991993ebef1def1d5823632c21177ec3" - ], - [ - "genome_gfp.fasta.sizes:md5,9b755f8f349b14accefb4d859f84de26" - ], - [ - - ], - [ - - ], - [ - - ], - [ - - ], - [ - - ], - [ - - ], - [ - "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", - "versions.yml:md5,1cd265cb86a23a27f683ffb2459f37f5", - "versions.yml:md5,71252f1a221be05593361acccb99506b", - "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", - "versions.yml:md5,bc99889446f02427c166b3219b793672" - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.1" - }, - "timestamp": "2024-06-20T18:12:54.779065" - }, - "gencode = true - stub": { - "content": [ - [ - "transcriptome.fixed.fa:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - [ - "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" - ], - [ - "genome_transcriptome.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - [ - "genome_transcriptome.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - [ - "genome_transcriptome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - [ - "genome_transcriptome.bed:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - [ - "genome_transcriptome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - [ - - ], - [ - - ], - [ - - ], - [ - - ], - [ - - ], - [ - - ], - [ - "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", - "versions.yml:md5,71252f1a221be05593361acccb99506b", - "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", - "versions.yml:md5,961ab91198c4e6ec9d795b95e3f61fda", - "versions.yml:md5,bc99889446f02427c166b3219b793672", - "versions.yml:md5,cc8f32b7c37c35a075d38cb773004eaa" - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" - }, - "timestamp": "2024-07-03T11:03:04.549888" - }, - "skip_alignment - stub": { - "content": [ - [ - "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" - ], - [ - "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" - ], - [ - "genome_transcriptome.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - [ - "genome_transcriptome.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - [ - "genome_transcriptome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - [ - "genome_transcriptome.bed:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - [ - "genome_transcriptome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - [ - - ], - [ - - ], - [ - - ], - [ - - ], - [ - - ], - [ - - ], - [ - "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", - "versions.yml:md5,71252f1a221be05593361acccb99506b", - "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", - "versions.yml:md5,bc99889446f02427c166b3219b793672", - "versions.yml:md5,cc8f32b7c37c35a075d38cb773004eaa" - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" - }, - "timestamp": "2024-07-03T10:59:08.39617" - }, - "skip_bbsplit = true - stub": { - "content": [ - [ - "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" - ], - [ - "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" - ], - [ - "genome_transcriptome.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - [ - "genome_transcriptome.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - [ - "genome_transcriptome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - [ - "genome_transcriptome.bed:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - [ - "genome_transcriptome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - [ - - ], - [ - - ], - [ - - ], - [ - - ], - [ - - ], - [ - - ], - [ - "versions.yml:md5,71252f1a221be05593361acccb99506b", - "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", - "versions.yml:md5,bc99889446f02427c166b3219b793672", - "versions.yml:md5,cc8f32b7c37c35a075d38cb773004eaa" - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" - }, - "timestamp": "2024-07-03T11:04:11.263136" - }, - "transcriptome = false": { - "content": [ - [ - "genome.transcripts.fa:md5,b89a3e02ad30ba3fd600f98c8e2f58d4" - ], - [ - "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" - ], - [ - "genome_gfp.fasta:md5,e23e302af63736a199985a169fdac055" - ], - [ - "genome_gfp.gtf:md5,c98b12c302f15731bfc36bcf297cfe28" - ], - [ - "genome_gfp.fasta.fai:md5,8fa54c6bd2ea6a369efbb8ab4f30156a" - ], - [ - "genome_gfp.bed:md5,991993ebef1def1d5823632c21177ec3" - ], - [ - "genome_gfp.fasta.sizes:md5,9b755f8f349b14accefb4d859f84de26" - ], - [ - - ], - [ - - ], - [ - - ], - [ - - ], - [ - - ], - [ - - ], - [ - "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", - "versions.yml:md5,1cd265cb86a23a27f683ffb2459f37f5", - "versions.yml:md5,71252f1a221be05593361acccb99506b", - "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", - "versions.yml:md5,918fe0b59c0986eb602ace85841c5ab3", - "versions.yml:md5,bc99889446f02427c166b3219b793672" - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.1" - }, - "timestamp": "2024-06-20T18:15:34.269049" - }, - "skip_pseudoalignment = true": { - "content": [ - [ - "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" - ], - [ - "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" - ], - [ - "genome_gfp.fasta:md5,e23e302af63736a199985a169fdac055" - ], - [ - "genome_gfp.gtf:md5,c98b12c302f15731bfc36bcf297cfe28" - ], - [ - "genome_gfp.fasta.fai:md5,8fa54c6bd2ea6a369efbb8ab4f30156a" - ], - [ - "genome_gfp.bed:md5,991993ebef1def1d5823632c21177ec3" - ], - [ - "genome_gfp.fasta.sizes:md5,9b755f8f349b14accefb4d859f84de26" - ], - [ - - ], - [ - - ], - [ - - ], - [ - - ], - [ - - ], - [ - - ], - [ - "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", - "versions.yml:md5,1cd265cb86a23a27f683ffb2459f37f5", - "versions.yml:md5,71252f1a221be05593361acccb99506b", - "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", - "versions.yml:md5,bc99889446f02427c166b3219b793672" - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.1" - }, - "timestamp": "2024-06-20T18:18:35.783312" - }, - "skip_gtf_filter - stub": { - "content": [ - [ - "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" - ], - [ - "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" - ], - [ - "genome_transcriptome.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - [ - "genome_transcriptome.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - [ - "genome_transcriptome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - [ - "genome_transcriptome.bed:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - [ - "genome_transcriptome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - [ - - ], - [ - - ], - [ - - ], - [ - - ], - [ - - ], - [ - - ], - [ - "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", - "versions.yml:md5,71252f1a221be05593361acccb99506b", - "versions.yml:md5,bc99889446f02427c166b3219b793672", - "versions.yml:md5,cc8f32b7c37c35a075d38cb773004eaa" - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" - }, - "timestamp": "2024-07-03T10:58:24.03187" - }, - "gencode = true": { - "content": [ - [ - "transcriptome.fixed.fa:md5,faf3a64453ae73983bbf2743387fbdf2" - ], - [ - "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" - ], - [ - "genome_gfp.fasta:md5,e23e302af63736a199985a169fdac055" - ], - [ - "genome_gfp.gtf:md5,2593a0843dd97f0b7dfb62cdd2c21ab8" - ], - [ - "genome_gfp.fasta.fai:md5,8fa54c6bd2ea6a369efbb8ab4f30156a" - ], - [ - "genome_gfp.bed:md5,991993ebef1def1d5823632c21177ec3" - ], - [ - "genome_gfp.fasta.sizes:md5,9b755f8f349b14accefb4d859f84de26" - ], - [ - - ], - [ - - ], - [ - - ], - [ - - ], - [ - - ], - [ - - ], - [ - "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", - "versions.yml:md5,1cd265cb86a23a27f683ffb2459f37f5", - "versions.yml:md5,71252f1a221be05593361acccb99506b", - "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", - "versions.yml:md5,961ab91198c4e6ec9d795b95e3f61fda", - "versions.yml:md5,bc99889446f02427c166b3219b793672" - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.1" - }, - "timestamp": "2024-06-20T18:17:05.661629" - }, - "hisat2_index = false": { - "content": [ - [ - "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" - ], - [ - - ], - [ - "genome_gfp.fasta:md5,e23e302af63736a199985a169fdac055" - ], - [ - "genome_gfp.gtf:md5,c98b12c302f15731bfc36bcf297cfe28" - ], - [ - "genome_gfp.fasta.fai:md5,8fa54c6bd2ea6a369efbb8ab4f30156a" - ], - [ - "genome_gfp.bed:md5,991993ebef1def1d5823632c21177ec3" - ], - [ - "genome_gfp.fasta.sizes:md5,9b755f8f349b14accefb4d859f84de26" - ], - [ - - ], - [ - - ], - [ - - ], - [ - - ], - [ - - ], - [ - - ], - [ - "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", - "versions.yml:md5,1cd265cb86a23a27f683ffb2459f37f5", - "versions.yml:md5,71252f1a221be05593361acccb99506b", - "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", - "versions.yml:md5,bc99889446f02427c166b3219b793672" - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.1" - }, - "timestamp": "2024-06-20T18:16:45.642259" - }, - "rsem_index = false - stub": { - "content": [ - [ - "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" - ], - [ - "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" - ], - [ - "genome_transcriptome.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - [ - "genome_transcriptome.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - [ - "genome_transcriptome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - [ - "genome_transcriptome.bed:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - [ - "genome_transcriptome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - [ - - ], - [ - - ], - [ - - ], - [ - - ], - [ - - ], - [ - - ], - [ - "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", - "versions.yml:md5,71252f1a221be05593361acccb99506b", - "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", - "versions.yml:md5,bc99889446f02427c166b3219b793672", - "versions.yml:md5,cc8f32b7c37c35a075d38cb773004eaa" - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" - }, - "timestamp": "2024-07-03T11:01:53.55074" - }, - "featurecounts_group_type = 'gene_type'": { - "content": [ - [ - "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" - ], - [ - "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" - ], - [ - "genome_gfp.fasta:md5,e23e302af63736a199985a169fdac055" - ], - [ - "genome_gfp.gtf:md5,2593a0843dd97f0b7dfb62cdd2c21ab8" + "genome_gfp.gtf:md5,c98b12c302f15731bfc36bcf297cfe28" ], [ "genome_gfp.fasta.fai:md5,8fa54c6bd2ea6a369efbb8ab4f30156a" @@ -1304,7 +949,6 @@ ], [ - "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", "versions.yml:md5,1cd265cb86a23a27f683ffb2459f37f5", "versions.yml:md5,71252f1a221be05593361acccb99506b", "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", @@ -1313,11 +957,160 @@ ], "meta": { "nf-test": "0.8.4", - "nextflow": "24.04.1" + "nextflow": "24.04.2" }, - "timestamp": "2024-06-20T18:17:22.714024" + "timestamp": "2024-07-03T19:21:45.41666" }, - "with bed - stub": { + "salmon_index = false - stub": { + "content": [ + { + "0": [ + "genome_transcriptome.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "1": [ + "genome_transcriptome.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "10": [ + + ], + "11": [ + + ], + "12": [ + + ], + "13": [ + + ], + "14": [ + "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", + "versions.yml:md5,71252f1a221be05593361acccb99506b", + "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", + "versions.yml:md5,bc99889446f02427c166b3219b793672", + "versions.yml:md5,cc8f32b7c37c35a075d38cb773004eaa" + ], + "2": [ + "genome_transcriptome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "3": [ + "genome_transcriptome.bed:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "4": [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" + ], + "5": [ + "genome_transcriptome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "6": [ + + ], + "7": [ + [ + [ + [ + [ + "chr1.chrom.gz:md5,4752b2fa140165e41b5d0be484b2180c", + "info.txt:md5,bf3c9d0cb29c9b7f0389112dd11343db", + "merged_ref_8374379829187813017.fa.gz:md5,5b42850f6d96e66571ae9d29f74505de", + "namelist.txt:md5,2d3a23e005f63d34a85297a5a4baf421", + "reflist.txt:md5,fc824ec5e2f11d87c2119973f9037462", + "scaffolds.txt.gz:md5,669e27fe4d0f3486c2fb4b5fa9a490d2", + "summary.txt:md5,5ee81fd517a9ea0f68a3b2f52511b642" + ] + ], + [ + [ + "chr1_index_k13_c13_b1.block:md5,900a1be9d0cd47826eb9fefe8c8c96b1", + "chr1_index_k13_c13_b1.block2.gz:md5,eefc669b62e2cb94dbb94031a7bde4fd" + ] + ] + ] + ] + ], + "8": [ + + ], + "9": [ + + ], + "bbsplit_index": [ + [ + [ + [ + [ + "chr1.chrom.gz:md5,4752b2fa140165e41b5d0be484b2180c", + "info.txt:md5,bf3c9d0cb29c9b7f0389112dd11343db", + "merged_ref_8374379829187813017.fa.gz:md5,5b42850f6d96e66571ae9d29f74505de", + "namelist.txt:md5,2d3a23e005f63d34a85297a5a4baf421", + "reflist.txt:md5,fc824ec5e2f11d87c2119973f9037462", + "scaffolds.txt.gz:md5,669e27fe4d0f3486c2fb4b5fa9a490d2", + "summary.txt:md5,5ee81fd517a9ea0f68a3b2f52511b642" + ] + ], + [ + [ + "chr1_index_k13_c13_b1.block:md5,900a1be9d0cd47826eb9fefe8c8c96b1", + "chr1_index_k13_c13_b1.block2.gz:md5,eefc669b62e2cb94dbb94031a7bde4fd" + ] + ] + ] + ] + ], + "chrom_sizes": [ + "genome_transcriptome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "fai": [ + "genome_transcriptome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "fasta": [ + "genome_transcriptome.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "gene_bed": [ + "genome_transcriptome.bed:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "gtf": [ + "genome_transcriptome.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "hisat2_index": [ + + ], + "kallisto_index": [ + + ], + "rsem_index": [ + + ], + "salmon_index": [ + + ], + "sortmerna_index": [ + + ], + "splicesites": [ + + ], + "star_index": [ + + ], + "transcript_fasta": [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" + ], + "versions": [ + "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", + "versions.yml:md5,71252f1a221be05593361acccb99506b", + "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", + "versions.yml:md5,bc99889446f02427c166b3219b793672", + "versions.yml:md5,cc8f32b7c37c35a075d38cb773004eaa" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-03T19:32:51.953735" + }, + "skip_alignment": { "content": [ [ "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" @@ -1326,19 +1119,19 @@ "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" ], [ - "genome_transcriptome.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" + "genome_gfp.fasta:md5,e23e302af63736a199985a169fdac055" ], [ - "genome_transcriptome.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" + "genome_gfp.gtf:md5,c98b12c302f15731bfc36bcf297cfe28" ], [ - "genome_transcriptome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" + "genome_gfp.fasta.fai:md5,8fa54c6bd2ea6a369efbb8ab4f30156a" ], [ - "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/ngscheckmate.bed" + "genome_gfp.bed:md5,991993ebef1def1d5823632c21177ec3" ], [ - "genome_transcriptome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" + "genome_gfp.fasta.sizes:md5,9b755f8f349b14accefb4d859f84de26" ], [ @@ -1360,18 +1153,166 @@ ], [ "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", + "versions.yml:md5,1cd265cb86a23a27f683ffb2459f37f5", + "versions.yml:md5,71252f1a221be05593361acccb99506b", "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", - "versions.yml:md5,bc99889446f02427c166b3219b793672", - "versions.yml:md5,cc8f32b7c37c35a075d38cb773004eaa" + "versions.yml:md5,bc99889446f02427c166b3219b793672" ] ], "meta": { "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-07-03T11:01:31.850549" + "timestamp": "2024-07-03T19:16:32.139593" }, - "skip_bbsplit": { + "gfp = false - stub": { + "content": [ + { + "0": [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/genome.fasta" + ], + "1": [ + "genome.filtered.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "10": [ + + ], + "11": [ + + ], + "12": [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" + ], + "13": [ + + ], + "14": [ + "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", + "versions.yml:md5,71252f1a221be05593361acccb99506b", + "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", + "versions.yml:md5,bc99889446f02427c166b3219b793672" + ], + "2": [ + "genome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "3": [ + "genome.filtered.bed:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "4": [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" + ], + "5": [ + "genome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "6": [ + + ], + "7": [ + [ + [ + [ + [ + "chr1.chrom.gz:md5,f13e8a518175502a7080e4faa6e979d7", + "info.txt:md5,20203c48e35dd890040194d2a1900585", + "merged_ref_8374379829187813017.fa.gz:md5,b8b1bd9eccad6ef6bab0afbf9cef7652", + "namelist.txt:md5,2d3a23e005f63d34a85297a5a4baf421", + "reflist.txt:md5,3ca45f5b545ba9a791f02801d92cb016", + "scaffolds.txt.gz:md5,ce75cea9860d283d47f6544651fa500f", + "summary.txt:md5,377ed2dc597233890de8824bf15caa3e" + ] + ], + [ + [ + "chr1_index_k13_c12_b1.block:md5,ef41bb3e410ac9c8d8fa64642ab21da2", + "chr1_index_k13_c12_b1.block2.gz:md5,63c9bad0f53336d948293fb145e42e8c" + ] + ] + ] + ] + ], + "8": [ + + ], + "9": [ + + ], + "bbsplit_index": [ + [ + [ + [ + [ + "chr1.chrom.gz:md5,f13e8a518175502a7080e4faa6e979d7", + "info.txt:md5,20203c48e35dd890040194d2a1900585", + "merged_ref_8374379829187813017.fa.gz:md5,b8b1bd9eccad6ef6bab0afbf9cef7652", + "namelist.txt:md5,2d3a23e005f63d34a85297a5a4baf421", + "reflist.txt:md5,3ca45f5b545ba9a791f02801d92cb016", + "scaffolds.txt.gz:md5,ce75cea9860d283d47f6544651fa500f", + "summary.txt:md5,377ed2dc597233890de8824bf15caa3e" + ] + ], + [ + [ + "chr1_index_k13_c12_b1.block:md5,ef41bb3e410ac9c8d8fa64642ab21da2", + "chr1_index_k13_c12_b1.block2.gz:md5,63c9bad0f53336d948293fb145e42e8c" + ] + ] + ] + ] + ], + "chrom_sizes": [ + "genome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "fai": [ + "genome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "fasta": [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/genome.fasta" + ], + "gene_bed": [ + "genome.filtered.bed:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "gtf": [ + "genome.filtered.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "hisat2_index": [ + + ], + "kallisto_index": [ + + ], + "rsem_index": [ + + ], + "salmon_index": [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" + ], + "sortmerna_index": [ + + ], + "splicesites": [ + + ], + "star_index": [ + + ], + "transcript_fasta": [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" + ], + "versions": [ + "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", + "versions.yml:md5,71252f1a221be05593361acccb99506b", + "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", + "versions.yml:md5,bc99889446f02427c166b3219b793672" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-03T19:28:25.628623" + }, + "gencode = false": { "content": [ [ "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" @@ -1413,6 +1354,7 @@ ], [ + "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", "versions.yml:md5,1cd265cb86a23a27f683ffb2459f37f5", "versions.yml:md5,71252f1a221be05593361acccb99506b", "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", @@ -1421,11 +1363,11 @@ ], "meta": { "nf-test": "0.8.4", - "nextflow": "24.04.1" + "nextflow": "24.04.2" }, - "timestamp": "2024-06-20T18:13:46.28042" + "timestamp": "2024-07-03T19:15:21.650799" }, - "skip_psuedo_alignment - stub": { + "default options": { "content": [ [ "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" @@ -1434,19 +1376,19 @@ "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" ], [ - "genome_transcriptome.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" + "genome_gfp.fasta:md5,e23e302af63736a199985a169fdac055" ], [ - "genome_transcriptome.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" + "genome_gfp.gtf:md5,c98b12c302f15731bfc36bcf297cfe28" ], [ - "genome_transcriptome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" + "genome_gfp.fasta.fai:md5,8fa54c6bd2ea6a369efbb8ab4f30156a" ], [ - "genome_transcriptome.bed:md5,d41d8cd98f00b204e9800998ecf8427e" + "genome_gfp.bed:md5,991993ebef1def1d5823632c21177ec3" ], [ - "genome_transcriptome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" + "genome_gfp.fasta.sizes:md5,9b755f8f349b14accefb4d859f84de26" ], [ @@ -1468,22 +1410,429 @@ ], [ "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", + "versions.yml:md5,1cd265cb86a23a27f683ffb2459f37f5", "versions.yml:md5,71252f1a221be05593361acccb99506b", "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", - "versions.yml:md5,bc99889446f02427c166b3219b793672", - "versions.yml:md5,cc8f32b7c37c35a075d38cb773004eaa" + "versions.yml:md5,bc99889446f02427c166b3219b793672" ] ], "meta": { "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-07-03T10:59:34.532745" + "timestamp": "2024-07-03T19:14:58.879047" }, - "with bed": { + "gencode = true - stub": { + "content": [ + { + "0": [ + "genome_transcriptome.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "1": [ + "genome_transcriptome.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "10": [ + + ], + "11": [ + + ], + "12": [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" + ], + "13": [ + + ], + "14": [ + "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", + "versions.yml:md5,71252f1a221be05593361acccb99506b", + "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", + "versions.yml:md5,961ab91198c4e6ec9d795b95e3f61fda", + "versions.yml:md5,bc99889446f02427c166b3219b793672", + "versions.yml:md5,cc8f32b7c37c35a075d38cb773004eaa" + ], + "2": [ + "genome_transcriptome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "3": [ + "genome_transcriptome.bed:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "4": [ + "transcriptome.fixed.fa:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "5": [ + "genome_transcriptome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "6": [ + + ], + "7": [ + [ + [ + [ + [ + "chr1.chrom.gz:md5,4752b2fa140165e41b5d0be484b2180c", + "info.txt:md5,60a0dde12e2cfaccec8237e06983f667", + "merged_ref_8374379829187813017.fa.gz:md5,5b42850f6d96e66571ae9d29f74505de", + "namelist.txt:md5,2d3a23e005f63d34a85297a5a4baf421", + "reflist.txt:md5,c83c42a89990e73c3d3d0076b62bf8eb", + "scaffolds.txt.gz:md5,ecd1d6db45a75a62780a0dd548f33fb7", + "summary.txt:md5,26394dcbc43ad157332ad04e57de8b5d" + ] + ], + [ + [ + "chr1_index_k13_c13_b1.block:md5,900a1be9d0cd47826eb9fefe8c8c96b1", + "chr1_index_k13_c13_b1.block2.gz:md5,eefc669b62e2cb94dbb94031a7bde4fd" + ] + ] + ] + ] + ], + "8": [ + + ], + "9": [ + + ], + "bbsplit_index": [ + [ + [ + [ + [ + "chr1.chrom.gz:md5,4752b2fa140165e41b5d0be484b2180c", + "info.txt:md5,60a0dde12e2cfaccec8237e06983f667", + "merged_ref_8374379829187813017.fa.gz:md5,5b42850f6d96e66571ae9d29f74505de", + "namelist.txt:md5,2d3a23e005f63d34a85297a5a4baf421", + "reflist.txt:md5,c83c42a89990e73c3d3d0076b62bf8eb", + "scaffolds.txt.gz:md5,ecd1d6db45a75a62780a0dd548f33fb7", + "summary.txt:md5,26394dcbc43ad157332ad04e57de8b5d" + ] + ], + [ + [ + "chr1_index_k13_c13_b1.block:md5,900a1be9d0cd47826eb9fefe8c8c96b1", + "chr1_index_k13_c13_b1.block2.gz:md5,eefc669b62e2cb94dbb94031a7bde4fd" + ] + ] + ] + ] + ], + "chrom_sizes": [ + "genome_transcriptome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "fai": [ + "genome_transcriptome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "fasta": [ + "genome_transcriptome.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "gene_bed": [ + "genome_transcriptome.bed:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "gtf": [ + "genome_transcriptome.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "hisat2_index": [ + + ], + "kallisto_index": [ + + ], + "rsem_index": [ + + ], + "salmon_index": [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" + ], + "sortmerna_index": [ + + ], + "splicesites": [ + + ], + "star_index": [ + + ], + "transcript_fasta": [ + "transcriptome.fixed.fa:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "versions": [ + "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", + "versions.yml:md5,71252f1a221be05593361acccb99506b", + "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", + "versions.yml:md5,961ab91198c4e6ec9d795b95e3f61fda", + "versions.yml:md5,bc99889446f02427c166b3219b793672", + "versions.yml:md5,cc8f32b7c37c35a075d38cb773004eaa" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-03T19:35:49.545122" + }, + "skip_alignment - stub": { + "content": [ + { + "0": [ + "genome_transcriptome.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "1": [ + "genome_transcriptome.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "10": [ + + ], + "11": [ + + ], + "12": [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" + ], + "13": [ + + ], + "14": [ + "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", + "versions.yml:md5,71252f1a221be05593361acccb99506b", + "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", + "versions.yml:md5,bc99889446f02427c166b3219b793672", + "versions.yml:md5,cc8f32b7c37c35a075d38cb773004eaa" + ], + "2": [ + "genome_transcriptome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "3": [ + "genome_transcriptome.bed:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "4": [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" + ], + "5": [ + "genome_transcriptome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "6": [ + + ], + "7": [ + [ + [ + [ + [ + "chr1.chrom.gz:md5,4752b2fa140165e41b5d0be484b2180c", + "info.txt:md5,7edc9a52f4853753935d8f6ca68d4fe8", + "merged_ref_8374379829187813017.fa.gz:md5,5b42850f6d96e66571ae9d29f74505de", + "namelist.txt:md5,2d3a23e005f63d34a85297a5a4baf421", + "reflist.txt:md5,2766c2f885412fa0f771437717d86e19", + "scaffolds.txt.gz:md5,82e8ff4c12d6d73dc62aff221d9041a7", + "summary.txt:md5,a127795da9210b8ab751554e6fbe4185" + ] + ], + [ + [ + "chr1_index_k13_c13_b1.block:md5,900a1be9d0cd47826eb9fefe8c8c96b1", + "chr1_index_k13_c13_b1.block2.gz:md5,eefc669b62e2cb94dbb94031a7bde4fd" + ] + ] + ] + ] + ], + "8": [ + + ], + "9": [ + + ], + "bbsplit_index": [ + [ + [ + [ + [ + "chr1.chrom.gz:md5,4752b2fa140165e41b5d0be484b2180c", + "info.txt:md5,7edc9a52f4853753935d8f6ca68d4fe8", + "merged_ref_8374379829187813017.fa.gz:md5,5b42850f6d96e66571ae9d29f74505de", + "namelist.txt:md5,2d3a23e005f63d34a85297a5a4baf421", + "reflist.txt:md5,2766c2f885412fa0f771437717d86e19", + "scaffolds.txt.gz:md5,82e8ff4c12d6d73dc62aff221d9041a7", + "summary.txt:md5,a127795da9210b8ab751554e6fbe4185" + ] + ], + [ + [ + "chr1_index_k13_c13_b1.block:md5,900a1be9d0cd47826eb9fefe8c8c96b1", + "chr1_index_k13_c13_b1.block2.gz:md5,eefc669b62e2cb94dbb94031a7bde4fd" + ] + ] + ] + ] + ], + "chrom_sizes": [ + "genome_transcriptome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "fai": [ + "genome_transcriptome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "fasta": [ + "genome_transcriptome.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "gene_bed": [ + "genome_transcriptome.bed:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "gtf": [ + "genome_transcriptome.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "hisat2_index": [ + + ], + "kallisto_index": [ + + ], + "rsem_index": [ + + ], + "salmon_index": [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" + ], + "sortmerna_index": [ + + ], + "splicesites": [ + + ], + "star_index": [ + + ], + "transcript_fasta": [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" + ], + "versions": [ + "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", + "versions.yml:md5,71252f1a221be05593361acccb99506b", + "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", + "versions.yml:md5,bc99889446f02427c166b3219b793672", + "versions.yml:md5,cc8f32b7c37c35a075d38cb773004eaa" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-03T19:25:15.611876" + }, + "skip_bbsplit = true - stub": { + "content": [ + { + "0": [ + "genome_transcriptome.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "1": [ + "genome_transcriptome.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "10": [ + + ], + "11": [ + + ], + "12": [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" + ], + "13": [ + + ], + "14": [ + "versions.yml:md5,71252f1a221be05593361acccb99506b", + "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", + "versions.yml:md5,bc99889446f02427c166b3219b793672", + "versions.yml:md5,cc8f32b7c37c35a075d38cb773004eaa" + ], + "2": [ + "genome_transcriptome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "3": [ + "genome_transcriptome.bed:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "4": [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" + ], + "5": [ + "genome_transcriptome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "6": [ + + ], + "7": [ + + ], + "8": [ + + ], + "9": [ + + ], + "bbsplit_index": [ + + ], + "chrom_sizes": [ + "genome_transcriptome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "fai": [ + "genome_transcriptome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "fasta": [ + "genome_transcriptome.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "gene_bed": [ + "genome_transcriptome.bed:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "gtf": [ + "genome_transcriptome.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "hisat2_index": [ + + ], + "kallisto_index": [ + + ], + "rsem_index": [ + + ], + "salmon_index": [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" + ], + "sortmerna_index": [ + + ], + "splicesites": [ + + ], + "star_index": [ + + ], + "transcript_fasta": [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" + ], + "versions": [ + "versions.yml:md5,71252f1a221be05593361acccb99506b", + "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", + "versions.yml:md5,bc99889446f02427c166b3219b793672", + "versions.yml:md5,cc8f32b7c37c35a075d38cb773004eaa" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-03T19:40:48.402507" + }, + "transcriptome = false": { "content": [ [ - "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" + "genome.transcripts.fa:md5,b89a3e02ad30ba3fd600f98c8e2f58d4" ], [ "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" @@ -1498,7 +1847,7 @@ "genome_gfp.fasta.fai:md5,8fa54c6bd2ea6a369efbb8ab4f30156a" ], [ - "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/ngscheckmate.bed" + "genome_gfp.bed:md5,991993ebef1def1d5823632c21177ec3" ], [ "genome_gfp.fasta.sizes:md5,9b755f8f349b14accefb4d859f84de26" @@ -1524,38 +1873,40 @@ [ "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", "versions.yml:md5,1cd265cb86a23a27f683ffb2459f37f5", + "versions.yml:md5,71252f1a221be05593361acccb99506b", "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", + "versions.yml:md5,918fe0b59c0986eb602ace85841c5ab3", "versions.yml:md5,bc99889446f02427c166b3219b793672" ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "24.04.1" + "nextflow": "24.04.2" }, - "timestamp": "2024-06-20T18:15:52.284517" + "timestamp": "2024-07-03T19:18:30.8944" }, - "gtf = false - stub": { + "skip_pseudoalignment = true": { "content": [ [ - "transcriptome.fixed.fa:md5,d41d8cd98f00b204e9800998ecf8427e" + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" ], [ "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" ], [ - "genome_transcriptome.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" + "genome_gfp.fasta:md5,e23e302af63736a199985a169fdac055" ], [ - "genome_transcriptome.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" + "genome_gfp.gtf:md5,c98b12c302f15731bfc36bcf297cfe28" ], [ - "genome_transcriptome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" + "genome_gfp.fasta.fai:md5,8fa54c6bd2ea6a369efbb8ab4f30156a" ], [ - "genome_transcriptome.bed:md5,d41d8cd98f00b204e9800998ecf8427e" + "genome_gfp.bed:md5,991993ebef1def1d5823632c21177ec3" ], [ - "genome_transcriptome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" + "genome_gfp.fasta.sizes:md5,9b755f8f349b14accefb4d859f84de26" ], [ @@ -1577,24 +1928,169 @@ ], [ "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", - "versions.yml:md5,2a3ed31ad34b8864fb9278dcdef596ec", + "versions.yml:md5,1cd265cb86a23a27f683ffb2459f37f5", "versions.yml:md5,71252f1a221be05593361acccb99506b", "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", - "versions.yml:md5,961ab91198c4e6ec9d795b95e3f61fda", - "versions.yml:md5,bc99889446f02427c166b3219b793672", - "versions.yml:md5,cc8f32b7c37c35a075d38cb773004eaa" + "versions.yml:md5,bc99889446f02427c166b3219b793672" ] ], "meta": { "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-07-03T10:59:58.494014" + "timestamp": "2024-07-03T19:22:33.169752" }, - "gff = false": { + "skip_gtf_filter - stub": { + "content": [ + { + "0": [ + "genome_transcriptome.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "1": [ + "genome_transcriptome.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "10": [ + + ], + "11": [ + + ], + "12": [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" + ], + "13": [ + + ], + "14": [ + "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", + "versions.yml:md5,71252f1a221be05593361acccb99506b", + "versions.yml:md5,bc99889446f02427c166b3219b793672", + "versions.yml:md5,cc8f32b7c37c35a075d38cb773004eaa" + ], + "2": [ + "genome_transcriptome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "3": [ + "genome_transcriptome.bed:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "4": [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" + ], + "5": [ + "genome_transcriptome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "6": [ + + ], + "7": [ + [ + [ + [ + [ + "chr1.chrom.gz:md5,4752b2fa140165e41b5d0be484b2180c", + "info.txt:md5,c734dcf084bc6dd494a8b690e0dcdc6c", + "merged_ref_8374379829187813017.fa.gz:md5,5b42850f6d96e66571ae9d29f74505de", + "namelist.txt:md5,2d3a23e005f63d34a85297a5a4baf421", + "reflist.txt:md5,f6300ff903c2b825768d75f56034995e", + "scaffolds.txt.gz:md5,329588397103b0cc3c10cff474962a71", + "summary.txt:md5,0fc17bed55593811b58c240dc63232c6" + ] + ], + [ + [ + "chr1_index_k13_c13_b1.block:md5,900a1be9d0cd47826eb9fefe8c8c96b1", + "chr1_index_k13_c13_b1.block2.gz:md5,eefc669b62e2cb94dbb94031a7bde4fd" + ] + ] + ] + ] + ], + "8": [ + + ], + "9": [ + + ], + "bbsplit_index": [ + [ + [ + [ + [ + "chr1.chrom.gz:md5,4752b2fa140165e41b5d0be484b2180c", + "info.txt:md5,c734dcf084bc6dd494a8b690e0dcdc6c", + "merged_ref_8374379829187813017.fa.gz:md5,5b42850f6d96e66571ae9d29f74505de", + "namelist.txt:md5,2d3a23e005f63d34a85297a5a4baf421", + "reflist.txt:md5,f6300ff903c2b825768d75f56034995e", + "scaffolds.txt.gz:md5,329588397103b0cc3c10cff474962a71", + "summary.txt:md5,0fc17bed55593811b58c240dc63232c6" + ] + ], + [ + [ + "chr1_index_k13_c13_b1.block:md5,900a1be9d0cd47826eb9fefe8c8c96b1", + "chr1_index_k13_c13_b1.block2.gz:md5,eefc669b62e2cb94dbb94031a7bde4fd" + ] + ] + ] + ] + ], + "chrom_sizes": [ + "genome_transcriptome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "fai": [ + "genome_transcriptome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "fasta": [ + "genome_transcriptome.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "gene_bed": [ + "genome_transcriptome.bed:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "gtf": [ + "genome_transcriptome.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "hisat2_index": [ + + ], + "kallisto_index": [ + + ], + "rsem_index": [ + + ], + "salmon_index": [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" + ], + "sortmerna_index": [ + + ], + "splicesites": [ + + ], + "star_index": [ + + ], + "transcript_fasta": [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" + ], + "versions": [ + "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", + "versions.yml:md5,71252f1a221be05593361acccb99506b", + "versions.yml:md5,bc99889446f02427c166b3219b793672", + "versions.yml:md5,cc8f32b7c37c35a075d38cb773004eaa" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-03T19:24:03.597076" + }, + "gencode = true": { "content": [ [ - "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" + "transcriptome.fixed.fa:md5,faf3a64453ae73983bbf2743387fbdf2" ], [ "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" @@ -1603,7 +2099,7 @@ "genome_gfp.fasta:md5,e23e302af63736a199985a169fdac055" ], [ - "genome_gfp.gtf:md5,c98b12c302f15731bfc36bcf297cfe28" + "genome_gfp.gtf:md5,2593a0843dd97f0b7dfb62cdd2c21ab8" ], [ "genome_gfp.fasta.fai:md5,8fa54c6bd2ea6a369efbb8ab4f30156a" @@ -1637,37 +2133,38 @@ "versions.yml:md5,1cd265cb86a23a27f683ffb2459f37f5", "versions.yml:md5,71252f1a221be05593361acccb99506b", "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", + "versions.yml:md5,961ab91198c4e6ec9d795b95e3f61fda", "versions.yml:md5,bc99889446f02427c166b3219b793672" ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "24.04.1" + "nextflow": "24.04.2" }, - "timestamp": "2024-06-20T18:15:00.759762" + "timestamp": "2024-07-03T19:20:32.664472" }, - "default options - stub": { + "hisat2_index = false": { "content": [ [ "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" ], [ - "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" + ], [ - "genome_transcriptome.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" + "genome_gfp.fasta:md5,e23e302af63736a199985a169fdac055" ], [ - "genome_transcriptome.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" + "genome_gfp.gtf:md5,c98b12c302f15731bfc36bcf297cfe28" ], [ - "genome_transcriptome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" + "genome_gfp.fasta.fai:md5,8fa54c6bd2ea6a369efbb8ab4f30156a" ], [ - "genome_transcriptome.bed:md5,d41d8cd98f00b204e9800998ecf8427e" + "genome_gfp.bed:md5,991993ebef1def1d5823632c21177ec3" ], [ - "genome_transcriptome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" + "genome_gfp.fasta.sizes:md5,9b755f8f349b14accefb4d859f84de26" ], [ @@ -1689,31 +2186,180 @@ ], [ "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", + "versions.yml:md5,1cd265cb86a23a27f683ffb2459f37f5", "versions.yml:md5,71252f1a221be05593361acccb99506b", "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", - "versions.yml:md5,bc99889446f02427c166b3219b793672", - "versions.yml:md5,cc8f32b7c37c35a075d38cb773004eaa" + "versions.yml:md5,bc99889446f02427c166b3219b793672" ] ], "meta": { "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-07-03T10:57:35.951638" + "timestamp": "2024-07-03T19:20:06.853577" }, - "salmon_index = false": { + "rsem_index = false - stub": { + "content": [ + { + "0": [ + "genome_transcriptome.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "1": [ + "genome_transcriptome.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "10": [ + + ], + "11": [ + + ], + "12": [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" + ], + "13": [ + + ], + "14": [ + "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", + "versions.yml:md5,71252f1a221be05593361acccb99506b", + "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", + "versions.yml:md5,bc99889446f02427c166b3219b793672", + "versions.yml:md5,cc8f32b7c37c35a075d38cb773004eaa" + ], + "2": [ + "genome_transcriptome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "3": [ + "genome_transcriptome.bed:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "4": [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" + ], + "5": [ + "genome_transcriptome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "6": [ + + ], + "7": [ + [ + [ + [ + [ + "chr1.chrom.gz:md5,4752b2fa140165e41b5d0be484b2180c", + "info.txt:md5,04f0154cab7282674a27a4c997936259", + "merged_ref_8374379829187813017.fa.gz:md5,5b42850f6d96e66571ae9d29f74505de", + "namelist.txt:md5,2d3a23e005f63d34a85297a5a4baf421", + "reflist.txt:md5,6e49d2250beb10332aeadedd9cfed0a2", + "scaffolds.txt.gz:md5,95fdcee61964305f9fb33b90cfefe5c2", + "summary.txt:md5,a21bc2bb4acfc87bc04f4119b790c3d4" + ] + ], + [ + [ + "chr1_index_k13_c13_b1.block:md5,900a1be9d0cd47826eb9fefe8c8c96b1", + "chr1_index_k13_c13_b1.block2.gz:md5,eefc669b62e2cb94dbb94031a7bde4fd" + ] + ] + ] + ] + ], + "8": [ + + ], + "9": [ + + ], + "bbsplit_index": [ + [ + [ + [ + [ + "chr1.chrom.gz:md5,4752b2fa140165e41b5d0be484b2180c", + "info.txt:md5,04f0154cab7282674a27a4c997936259", + "merged_ref_8374379829187813017.fa.gz:md5,5b42850f6d96e66571ae9d29f74505de", + "namelist.txt:md5,2d3a23e005f63d34a85297a5a4baf421", + "reflist.txt:md5,6e49d2250beb10332aeadedd9cfed0a2", + "scaffolds.txt.gz:md5,95fdcee61964305f9fb33b90cfefe5c2", + "summary.txt:md5,a21bc2bb4acfc87bc04f4119b790c3d4" + ] + ], + [ + [ + "chr1_index_k13_c13_b1.block:md5,900a1be9d0cd47826eb9fefe8c8c96b1", + "chr1_index_k13_c13_b1.block2.gz:md5,eefc669b62e2cb94dbb94031a7bde4fd" + ] + ] + ] + ] + ], + "chrom_sizes": [ + "genome_transcriptome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "fai": [ + "genome_transcriptome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "fasta": [ + "genome_transcriptome.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "gene_bed": [ + "genome_transcriptome.bed:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "gtf": [ + "genome_transcriptome.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "hisat2_index": [ + + ], + "kallisto_index": [ + + ], + "rsem_index": [ + + ], + "salmon_index": [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" + ], + "sortmerna_index": [ + + ], + "splicesites": [ + + ], + "star_index": [ + + ], + "transcript_fasta": [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" + ], + "versions": [ + "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", + "versions.yml:md5,71252f1a221be05593361acccb99506b", + "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", + "versions.yml:md5,bc99889446f02427c166b3219b793672", + "versions.yml:md5,cc8f32b7c37c35a075d38cb773004eaa" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-03T19:31:36.420669" + }, + "featurecounts_group_type = 'gene_type'": { "content": [ [ "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" ], [ - + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" ], [ "genome_gfp.fasta:md5,e23e302af63736a199985a169fdac055" ], [ - "genome_gfp.gtf:md5,c98b12c302f15731bfc36bcf297cfe28" + "genome_gfp.gtf:md5,2593a0843dd97f0b7dfb62cdd2c21ab8" ], [ "genome_gfp.fasta.fai:md5,8fa54c6bd2ea6a369efbb8ab4f30156a" @@ -1752,11 +2398,158 @@ ], "meta": { "nf-test": "0.8.4", - "nextflow": "24.04.1" + "nextflow": "24.04.2" }, - "timestamp": "2024-06-20T18:16:27.229869" + "timestamp": "2024-07-03T19:20:57.049579" }, - "rsem_index = false": { + "with bed - stub": { + "content": [ + { + "0": [ + "genome_transcriptome.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "1": [ + "genome_transcriptome.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "10": [ + + ], + "11": [ + + ], + "12": [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" + ], + "13": [ + + ], + "14": [ + "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", + "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", + "versions.yml:md5,bc99889446f02427c166b3219b793672", + "versions.yml:md5,cc8f32b7c37c35a075d38cb773004eaa" + ], + "2": [ + "genome_transcriptome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "3": [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/ngscheckmate.bed" + ], + "4": [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" + ], + "5": [ + "genome_transcriptome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "6": [ + + ], + "7": [ + [ + [ + [ + [ + "chr1.chrom.gz:md5,4752b2fa140165e41b5d0be484b2180c", + "info.txt:md5,a707c68fb073e20c734bf0978ec8d7fa", + "merged_ref_8374379829187813017.fa.gz:md5,5b42850f6d96e66571ae9d29f74505de", + "namelist.txt:md5,2d3a23e005f63d34a85297a5a4baf421", + "reflist.txt:md5,c18b8bc1876d0a3dbb19dd03d33f9c94", + "scaffolds.txt.gz:md5,699024aa20e942f34214a5e42f6a7333", + "summary.txt:md5,143f603b0db8e7dfdc666e626808b139" + ] + ], + [ + [ + "chr1_index_k13_c13_b1.block:md5,900a1be9d0cd47826eb9fefe8c8c96b1", + "chr1_index_k13_c13_b1.block2.gz:md5,eefc669b62e2cb94dbb94031a7bde4fd" + ] + ] + ] + ] + ], + "8": [ + + ], + "9": [ + + ], + "bbsplit_index": [ + [ + [ + [ + [ + "chr1.chrom.gz:md5,4752b2fa140165e41b5d0be484b2180c", + "info.txt:md5,a707c68fb073e20c734bf0978ec8d7fa", + "merged_ref_8374379829187813017.fa.gz:md5,5b42850f6d96e66571ae9d29f74505de", + "namelist.txt:md5,2d3a23e005f63d34a85297a5a4baf421", + "reflist.txt:md5,c18b8bc1876d0a3dbb19dd03d33f9c94", + "scaffolds.txt.gz:md5,699024aa20e942f34214a5e42f6a7333", + "summary.txt:md5,143f603b0db8e7dfdc666e626808b139" + ] + ], + [ + [ + "chr1_index_k13_c13_b1.block:md5,900a1be9d0cd47826eb9fefe8c8c96b1", + "chr1_index_k13_c13_b1.block2.gz:md5,eefc669b62e2cb94dbb94031a7bde4fd" + ] + ] + ] + ] + ], + "chrom_sizes": [ + "genome_transcriptome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "fai": [ + "genome_transcriptome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "fasta": [ + "genome_transcriptome.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "gene_bed": [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/ngscheckmate.bed" + ], + "gtf": [ + "genome_transcriptome.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "hisat2_index": [ + + ], + "kallisto_index": [ + + ], + "rsem_index": [ + + ], + "salmon_index": [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" + ], + "sortmerna_index": [ + + ], + "splicesites": [ + + ], + "star_index": [ + + ], + "transcript_fasta": [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" + ], + "versions": [ + "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", + "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", + "versions.yml:md5,bc99889446f02427c166b3219b793672", + "versions.yml:md5,cc8f32b7c37c35a075d38cb773004eaa" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-03T19:30:28.759718" + }, + "skip_bbsplit": { "content": [ [ "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" @@ -1798,7 +2591,6 @@ ], [ - "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", "versions.yml:md5,1cd265cb86a23a27f683ffb2459f37f5", "versions.yml:md5,71252f1a221be05593361acccb99506b", "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", @@ -1807,11 +2599,160 @@ ], "meta": { "nf-test": "0.8.4", - "nextflow": "24.04.1" + "nextflow": "24.04.2" }, - "timestamp": "2024-06-20T18:16:09.968836" + "timestamp": "2024-07-03T19:16:08.147358" }, - "skip_alignment = true - stub": { + "skip_psuedo_alignment - stub": { + "content": [ + { + "0": [ + "genome_transcriptome.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "1": [ + "genome_transcriptome.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "10": [ + + ], + "11": [ + + ], + "12": [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" + ], + "13": [ + + ], + "14": [ + "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", + "versions.yml:md5,71252f1a221be05593361acccb99506b", + "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", + "versions.yml:md5,bc99889446f02427c166b3219b793672", + "versions.yml:md5,cc8f32b7c37c35a075d38cb773004eaa" + ], + "2": [ + "genome_transcriptome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "3": [ + "genome_transcriptome.bed:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "4": [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" + ], + "5": [ + "genome_transcriptome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "6": [ + + ], + "7": [ + [ + [ + [ + [ + "chr1.chrom.gz:md5,4752b2fa140165e41b5d0be484b2180c", + "info.txt:md5,2babb5d568e2fbefe8ac6cb8e2ef727b", + "merged_ref_8374379829187813017.fa.gz:md5,5b42850f6d96e66571ae9d29f74505de", + "namelist.txt:md5,2d3a23e005f63d34a85297a5a4baf421", + "reflist.txt:md5,5dec7e6c795da517fe5ed3ddea82637b", + "scaffolds.txt.gz:md5,b3434738a19d7c0a28090c9d714c0e7a", + "summary.txt:md5,aa86e1078f1c2117f6db7c79d6dbc48d" + ] + ], + [ + [ + "chr1_index_k13_c13_b1.block:md5,900a1be9d0cd47826eb9fefe8c8c96b1", + "chr1_index_k13_c13_b1.block2.gz:md5,eefc669b62e2cb94dbb94031a7bde4fd" + ] + ] + ] + ] + ], + "8": [ + + ], + "9": [ + + ], + "bbsplit_index": [ + [ + [ + [ + [ + "chr1.chrom.gz:md5,4752b2fa140165e41b5d0be484b2180c", + "info.txt:md5,2babb5d568e2fbefe8ac6cb8e2ef727b", + "merged_ref_8374379829187813017.fa.gz:md5,5b42850f6d96e66571ae9d29f74505de", + "namelist.txt:md5,2d3a23e005f63d34a85297a5a4baf421", + "reflist.txt:md5,5dec7e6c795da517fe5ed3ddea82637b", + "scaffolds.txt.gz:md5,b3434738a19d7c0a28090c9d714c0e7a", + "summary.txt:md5,aa86e1078f1c2117f6db7c79d6dbc48d" + ] + ], + [ + [ + "chr1_index_k13_c13_b1.block:md5,900a1be9d0cd47826eb9fefe8c8c96b1", + "chr1_index_k13_c13_b1.block2.gz:md5,eefc669b62e2cb94dbb94031a7bde4fd" + ] + ] + ] + ] + ], + "chrom_sizes": [ + "genome_transcriptome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "fai": [ + "genome_transcriptome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "fasta": [ + "genome_transcriptome.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "gene_bed": [ + "genome_transcriptome.bed:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "gtf": [ + "genome_transcriptome.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "hisat2_index": [ + + ], + "kallisto_index": [ + + ], + "rsem_index": [ + + ], + "salmon_index": [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" + ], + "sortmerna_index": [ + + ], + "splicesites": [ + + ], + "star_index": [ + + ], + "transcript_fasta": [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" + ], + "versions": [ + "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", + "versions.yml:md5,71252f1a221be05593361acccb99506b", + "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", + "versions.yml:md5,bc99889446f02427c166b3219b793672", + "versions.yml:md5,cc8f32b7c37c35a075d38cb773004eaa" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-03T19:25:56.804428" + }, + "with bed": { "content": [ [ "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" @@ -1820,19 +2761,19 @@ "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" ], [ - "genome_transcriptome.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" + "genome_gfp.fasta:md5,e23e302af63736a199985a169fdac055" ], [ - "genome_transcriptome.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" + "genome_gfp.gtf:md5,c98b12c302f15731bfc36bcf297cfe28" ], [ - "genome_transcriptome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" + "genome_gfp.fasta.fai:md5,8fa54c6bd2ea6a369efbb8ab4f30156a" ], [ - "genome_transcriptome.bed:md5,d41d8cd98f00b204e9800998ecf8427e" + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/ngscheckmate.bed" ], [ - "genome_transcriptome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" + "genome_gfp.fasta.sizes:md5,9b755f8f349b14accefb4d859f84de26" ], [ @@ -1854,19 +2795,171 @@ ], [ "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", - "versions.yml:md5,71252f1a221be05593361acccb99506b", + "versions.yml:md5,1cd265cb86a23a27f683ffb2459f37f5", "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", - "versions.yml:md5,bc99889446f02427c166b3219b793672", - "versions.yml:md5,cc8f32b7c37c35a075d38cb773004eaa" + "versions.yml:md5,bc99889446f02427c166b3219b793672" ] ], "meta": { "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-07-03T11:04:34.49836" + "timestamp": "2024-07-03T19:18:54.706918" }, - "skip_psuedo_alignment": { + "gtf = false - stub": { + "content": [ + { + "0": [ + "genome_transcriptome.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "1": [ + "genome_transcriptome.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "10": [ + + ], + "11": [ + + ], + "12": [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" + ], + "13": [ + + ], + "14": [ + "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", + "versions.yml:md5,2a3ed31ad34b8864fb9278dcdef596ec", + "versions.yml:md5,71252f1a221be05593361acccb99506b", + "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", + "versions.yml:md5,961ab91198c4e6ec9d795b95e3f61fda", + "versions.yml:md5,bc99889446f02427c166b3219b793672", + "versions.yml:md5,cc8f32b7c37c35a075d38cb773004eaa" + ], + "2": [ + "genome_transcriptome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "3": [ + "genome_transcriptome.bed:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "4": [ + "transcriptome.fixed.fa:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "5": [ + "genome_transcriptome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "6": [ + + ], + "7": [ + [ + [ + [ + [ + "chr1.chrom.gz:md5,4752b2fa140165e41b5d0be484b2180c", + "info.txt:md5,61fba7e25d2c8347086259ddd65997a0", + "merged_ref_8374379829187813017.fa.gz:md5,5b42850f6d96e66571ae9d29f74505de", + "namelist.txt:md5,2d3a23e005f63d34a85297a5a4baf421", + "reflist.txt:md5,fb29bdb9252ee3efbb54db1e04393e24", + "scaffolds.txt.gz:md5,969acd41e45b0bba5eef0bdc60ca57d4", + "summary.txt:md5,4a1a806513d093b54e1d10f9b62af37f" + ] + ], + [ + [ + "chr1_index_k13_c13_b1.block:md5,900a1be9d0cd47826eb9fefe8c8c96b1", + "chr1_index_k13_c13_b1.block2.gz:md5,eefc669b62e2cb94dbb94031a7bde4fd" + ] + ] + ] + ] + ], + "8": [ + + ], + "9": [ + + ], + "bbsplit_index": [ + [ + [ + [ + [ + "chr1.chrom.gz:md5,4752b2fa140165e41b5d0be484b2180c", + "info.txt:md5,61fba7e25d2c8347086259ddd65997a0", + "merged_ref_8374379829187813017.fa.gz:md5,5b42850f6d96e66571ae9d29f74505de", + "namelist.txt:md5,2d3a23e005f63d34a85297a5a4baf421", + "reflist.txt:md5,fb29bdb9252ee3efbb54db1e04393e24", + "scaffolds.txt.gz:md5,969acd41e45b0bba5eef0bdc60ca57d4", + "summary.txt:md5,4a1a806513d093b54e1d10f9b62af37f" + ] + ], + [ + [ + "chr1_index_k13_c13_b1.block:md5,900a1be9d0cd47826eb9fefe8c8c96b1", + "chr1_index_k13_c13_b1.block2.gz:md5,eefc669b62e2cb94dbb94031a7bde4fd" + ] + ] + ] + ] + ], + "chrom_sizes": [ + "genome_transcriptome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "fai": [ + "genome_transcriptome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "fasta": [ + "genome_transcriptome.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "gene_bed": [ + "genome_transcriptome.bed:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "gtf": [ + "genome_transcriptome.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "hisat2_index": [ + + ], + "kallisto_index": [ + + ], + "rsem_index": [ + + ], + "salmon_index": [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" + ], + "sortmerna_index": [ + + ], + "splicesites": [ + + ], + "star_index": [ + + ], + "transcript_fasta": [ + "transcriptome.fixed.fa:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "versions": [ + "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", + "versions.yml:md5,2a3ed31ad34b8864fb9278dcdef596ec", + "versions.yml:md5,71252f1a221be05593361acccb99506b", + "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", + "versions.yml:md5,961ab91198c4e6ec9d795b95e3f61fda", + "versions.yml:md5,bc99889446f02427c166b3219b793672", + "versions.yml:md5,cc8f32b7c37c35a075d38cb773004eaa" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-03T19:26:41.30825" + }, + "gff = false": { "content": [ [ "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" @@ -1917,32 +3010,181 @@ ], "meta": { "nf-test": "0.8.4", - "nextflow": "24.04.1" + "nextflow": "24.04.2" }, - "timestamp": "2024-06-20T18:14:22.598093" + "timestamp": "2024-07-03T19:17:45.167724" }, - "transcriptome = false - stub": { + "default options - stub": { + "content": [ + { + "0": [ + "genome_transcriptome.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "1": [ + "genome_transcriptome.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "10": [ + + ], + "11": [ + + ], + "12": [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" + ], + "13": [ + + ], + "14": [ + "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", + "versions.yml:md5,71252f1a221be05593361acccb99506b", + "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", + "versions.yml:md5,bc99889446f02427c166b3219b793672", + "versions.yml:md5,cc8f32b7c37c35a075d38cb773004eaa" + ], + "2": [ + "genome_transcriptome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "3": [ + "genome_transcriptome.bed:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "4": [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" + ], + "5": [ + "genome_transcriptome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "6": [ + + ], + "7": [ + [ + [ + [ + [ + "chr1.chrom.gz:md5,4752b2fa140165e41b5d0be484b2180c", + "info.txt:md5,88a5bfeac69be028011b4a37ae09f929", + "merged_ref_8374379829187813017.fa.gz:md5,5b42850f6d96e66571ae9d29f74505de", + "namelist.txt:md5,2d3a23e005f63d34a85297a5a4baf421", + "reflist.txt:md5,c25665399773569ce9c3f11063ba214a", + "scaffolds.txt.gz:md5,6b76512de5822586c8831fe231a39381", + "summary.txt:md5,73342adf14bf98697d138065ac948c8b" + ] + ], + [ + [ + "chr1_index_k13_c13_b1.block:md5,900a1be9d0cd47826eb9fefe8c8c96b1", + "chr1_index_k13_c13_b1.block2.gz:md5,eefc669b62e2cb94dbb94031a7bde4fd" + ] + ] + ] + ] + ], + "8": [ + + ], + "9": [ + + ], + "bbsplit_index": [ + [ + [ + [ + [ + "chr1.chrom.gz:md5,4752b2fa140165e41b5d0be484b2180c", + "info.txt:md5,88a5bfeac69be028011b4a37ae09f929", + "merged_ref_8374379829187813017.fa.gz:md5,5b42850f6d96e66571ae9d29f74505de", + "namelist.txt:md5,2d3a23e005f63d34a85297a5a4baf421", + "reflist.txt:md5,c25665399773569ce9c3f11063ba214a", + "scaffolds.txt.gz:md5,6b76512de5822586c8831fe231a39381", + "summary.txt:md5,73342adf14bf98697d138065ac948c8b" + ] + ], + [ + [ + "chr1_index_k13_c13_b1.block:md5,900a1be9d0cd47826eb9fefe8c8c96b1", + "chr1_index_k13_c13_b1.block2.gz:md5,eefc669b62e2cb94dbb94031a7bde4fd" + ] + ] + ] + ] + ], + "chrom_sizes": [ + "genome_transcriptome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "fai": [ + "genome_transcriptome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "fasta": [ + "genome_transcriptome.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "gene_bed": [ + "genome_transcriptome.bed:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "gtf": [ + "genome_transcriptome.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "hisat2_index": [ + + ], + "kallisto_index": [ + + ], + "rsem_index": [ + + ], + "salmon_index": [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" + ], + "sortmerna_index": [ + + ], + "splicesites": [ + + ], + "star_index": [ + + ], + "transcript_fasta": [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" + ], + "versions": [ + "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", + "versions.yml:md5,71252f1a221be05593361acccb99506b", + "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", + "versions.yml:md5,bc99889446f02427c166b3219b793672", + "versions.yml:md5,cc8f32b7c37c35a075d38cb773004eaa" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-03T19:22:59.47915" + }, + "salmon_index = false": { "content": [ [ - "genome.transcripts.fa:md5,d41d8cd98f00b204e9800998ecf8427e" + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" ], [ - "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" + ], [ - "genome_transcriptome.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" + "genome_gfp.fasta:md5,e23e302af63736a199985a169fdac055" ], [ - "genome_transcriptome.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" + "genome_gfp.gtf:md5,c98b12c302f15731bfc36bcf297cfe28" ], [ - "genome_transcriptome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" + "genome_gfp.fasta.fai:md5,8fa54c6bd2ea6a369efbb8ab4f30156a" ], [ - "genome_transcriptome.bed:md5,d41d8cd98f00b204e9800998ecf8427e" + "genome_gfp.bed:md5,991993ebef1def1d5823632c21177ec3" ], [ - "genome_transcriptome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" + "genome_gfp.fasta.sizes:md5,9b755f8f349b14accefb4d859f84de26" ], [ @@ -1964,20 +3206,19 @@ ], [ "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", + "versions.yml:md5,1cd265cb86a23a27f683ffb2459f37f5", "versions.yml:md5,71252f1a221be05593361acccb99506b", "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", - "versions.yml:md5,918fe0b59c0986eb602ace85841c5ab3", - "versions.yml:md5,bc99889446f02427c166b3219b793672", - "versions.yml:md5,cc8f32b7c37c35a075d38cb773004eaa" + "versions.yml:md5,bc99889446f02427c166b3219b793672" ] ], "meta": { "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-07-03T11:01:10.499079" + "timestamp": "2024-07-03T19:19:42.999843" }, - "skip_alignment = true": { + "rsem_index = false": { "content": [ [ "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" @@ -2028,11 +3269,160 @@ ], "meta": { "nf-test": "0.8.4", - "nextflow": "24.04.1" + "nextflow": "24.04.2" }, - "timestamp": "2024-06-20T18:18:16.883006" + "timestamp": "2024-07-03T19:19:19.357926" }, - "skip_gtf_filter = true": { + "skip_alignment = true - stub": { + "content": [ + { + "0": [ + "genome_transcriptome.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "1": [ + "genome_transcriptome.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "10": [ + + ], + "11": [ + + ], + "12": [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" + ], + "13": [ + + ], + "14": [ + "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", + "versions.yml:md5,71252f1a221be05593361acccb99506b", + "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", + "versions.yml:md5,bc99889446f02427c166b3219b793672", + "versions.yml:md5,cc8f32b7c37c35a075d38cb773004eaa" + ], + "2": [ + "genome_transcriptome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "3": [ + "genome_transcriptome.bed:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "4": [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" + ], + "5": [ + "genome_transcriptome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "6": [ + + ], + "7": [ + [ + [ + [ + [ + "chr1.chrom.gz:md5,4752b2fa140165e41b5d0be484b2180c", + "info.txt:md5,4c65c7670278194087bd2c7ac9bd686f", + "merged_ref_8374379829187813017.fa.gz:md5,5b42850f6d96e66571ae9d29f74505de", + "namelist.txt:md5,2d3a23e005f63d34a85297a5a4baf421", + "reflist.txt:md5,26b3c900e7da46d22b19771d14fb3823", + "scaffolds.txt.gz:md5,971996ad3d861a0209ec09c14a8b5e66", + "summary.txt:md5,ae32379d5a400175e4f062c174b87206" + ] + ], + [ + [ + "chr1_index_k13_c13_b1.block:md5,900a1be9d0cd47826eb9fefe8c8c96b1", + "chr1_index_k13_c13_b1.block2.gz:md5,eefc669b62e2cb94dbb94031a7bde4fd" + ] + ] + ] + ] + ], + "8": [ + + ], + "9": [ + + ], + "bbsplit_index": [ + [ + [ + [ + [ + "chr1.chrom.gz:md5,4752b2fa140165e41b5d0be484b2180c", + "info.txt:md5,4c65c7670278194087bd2c7ac9bd686f", + "merged_ref_8374379829187813017.fa.gz:md5,5b42850f6d96e66571ae9d29f74505de", + "namelist.txt:md5,2d3a23e005f63d34a85297a5a4baf421", + "reflist.txt:md5,26b3c900e7da46d22b19771d14fb3823", + "scaffolds.txt.gz:md5,971996ad3d861a0209ec09c14a8b5e66", + "summary.txt:md5,ae32379d5a400175e4f062c174b87206" + ] + ], + [ + [ + "chr1_index_k13_c13_b1.block:md5,900a1be9d0cd47826eb9fefe8c8c96b1", + "chr1_index_k13_c13_b1.block2.gz:md5,eefc669b62e2cb94dbb94031a7bde4fd" + ] + ] + ] + ] + ], + "chrom_sizes": [ + "genome_transcriptome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "fai": [ + "genome_transcriptome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "fasta": [ + "genome_transcriptome.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "gene_bed": [ + "genome_transcriptome.bed:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "gtf": [ + "genome_transcriptome.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "hisat2_index": [ + + ], + "kallisto_index": [ + + ], + "rsem_index": [ + + ], + "salmon_index": [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" + ], + "sortmerna_index": [ + + ], + "splicesites": [ + + ], + "star_index": [ + + ], + "transcript_fasta": [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" + ], + "versions": [ + "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", + "versions.yml:md5,71252f1a221be05593361acccb99506b", + "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", + "versions.yml:md5,bc99889446f02427c166b3219b793672", + "versions.yml:md5,cc8f32b7c37c35a075d38cb773004eaa" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-03T19:42:40.042867" + }, + "skip_psuedo_alignment": { "content": [ [ "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" @@ -2044,7 +3434,7 @@ "genome_gfp.fasta:md5,e23e302af63736a199985a169fdac055" ], [ - "genome_gfp.gtf:md5,5e63cda3dcafc0d6ad0a738133af9d54" + "genome_gfp.gtf:md5,c98b12c302f15731bfc36bcf297cfe28" ], [ "genome_gfp.fasta.fai:md5,8fa54c6bd2ea6a369efbb8ab4f30156a" @@ -2077,37 +3467,189 @@ "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", "versions.yml:md5,1cd265cb86a23a27f683ffb2459f37f5", "versions.yml:md5,71252f1a221be05593361acccb99506b", + "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", "versions.yml:md5,bc99889446f02427c166b3219b793672" ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "24.04.1" + "nextflow": "24.04.2" }, - "timestamp": "2024-06-20T18:17:39.358651" + "timestamp": "2024-07-03T19:16:56.725751" }, - "hisat2_index = false - stub": { + "transcriptome = false - stub": { + "content": [ + { + "0": [ + "genome_transcriptome.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "1": [ + "genome_transcriptome.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "10": [ + + ], + "11": [ + + ], + "12": [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" + ], + "13": [ + + ], + "14": [ + "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", + "versions.yml:md5,71252f1a221be05593361acccb99506b", + "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", + "versions.yml:md5,918fe0b59c0986eb602ace85841c5ab3", + "versions.yml:md5,bc99889446f02427c166b3219b793672", + "versions.yml:md5,cc8f32b7c37c35a075d38cb773004eaa" + ], + "2": [ + "genome_transcriptome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "3": [ + "genome_transcriptome.bed:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "4": [ + "genome.transcripts.fa:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "5": [ + "genome_transcriptome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "6": [ + + ], + "7": [ + [ + [ + [ + [ + "chr1.chrom.gz:md5,4752b2fa140165e41b5d0be484b2180c", + "info.txt:md5,8c9893a92606b06d11fe5307f37c20b2", + "merged_ref_8374379829187813017.fa.gz:md5,5b42850f6d96e66571ae9d29f74505de", + "namelist.txt:md5,2d3a23e005f63d34a85297a5a4baf421", + "reflist.txt:md5,4fbb1b499e9ecb4ec4f8703d35b102c2", + "scaffolds.txt.gz:md5,a394044886c68c0525135ce2c77b6827", + "summary.txt:md5,17fe3cc447f59e811784cf6da6db80f6" + ] + ], + [ + [ + "chr1_index_k13_c13_b1.block:md5,900a1be9d0cd47826eb9fefe8c8c96b1", + "chr1_index_k13_c13_b1.block2.gz:md5,eefc669b62e2cb94dbb94031a7bde4fd" + ] + ] + ] + ] + ], + "8": [ + + ], + "9": [ + + ], + "bbsplit_index": [ + [ + [ + [ + [ + "chr1.chrom.gz:md5,4752b2fa140165e41b5d0be484b2180c", + "info.txt:md5,8c9893a92606b06d11fe5307f37c20b2", + "merged_ref_8374379829187813017.fa.gz:md5,5b42850f6d96e66571ae9d29f74505de", + "namelist.txt:md5,2d3a23e005f63d34a85297a5a4baf421", + "reflist.txt:md5,4fbb1b499e9ecb4ec4f8703d35b102c2", + "scaffolds.txt.gz:md5,a394044886c68c0525135ce2c77b6827", + "summary.txt:md5,17fe3cc447f59e811784cf6da6db80f6" + ] + ], + [ + [ + "chr1_index_k13_c13_b1.block:md5,900a1be9d0cd47826eb9fefe8c8c96b1", + "chr1_index_k13_c13_b1.block2.gz:md5,eefc669b62e2cb94dbb94031a7bde4fd" + ] + ] + ] + ] + ], + "chrom_sizes": [ + "genome_transcriptome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "fai": [ + "genome_transcriptome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "fasta": [ + "genome_transcriptome.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "gene_bed": [ + "genome_transcriptome.bed:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "gtf": [ + "genome_transcriptome.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "hisat2_index": [ + + ], + "kallisto_index": [ + + ], + "rsem_index": [ + + ], + "salmon_index": [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" + ], + "sortmerna_index": [ + + ], + "splicesites": [ + + ], + "star_index": [ + + ], + "transcript_fasta": [ + "genome.transcripts.fa:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "versions": [ + "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", + "versions.yml:md5,71252f1a221be05593361acccb99506b", + "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", + "versions.yml:md5,918fe0b59c0986eb602ace85841c5ab3", + "versions.yml:md5,bc99889446f02427c166b3219b793672", + "versions.yml:md5,cc8f32b7c37c35a075d38cb773004eaa" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-03T19:29:24.893589" + }, + "skip_alignment = true": { "content": [ [ "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" ], [ - + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" ], [ - "genome_transcriptome.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" + "genome_gfp.fasta:md5,e23e302af63736a199985a169fdac055" ], [ - "genome_transcriptome.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" + "genome_gfp.gtf:md5,c98b12c302f15731bfc36bcf297cfe28" ], [ - "genome_transcriptome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" + "genome_gfp.fasta.fai:md5,8fa54c6bd2ea6a369efbb8ab4f30156a" ], [ - "genome_transcriptome.bed:md5,d41d8cd98f00b204e9800998ecf8427e" + "genome_gfp.bed:md5,991993ebef1def1d5823632c21177ec3" ], [ - "genome_transcriptome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" + "genome_gfp.fasta.sizes:md5,9b755f8f349b14accefb4d859f84de26" ], [ @@ -2129,19 +3671,19 @@ ], [ "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", + "versions.yml:md5,1cd265cb86a23a27f683ffb2459f37f5", "versions.yml:md5,71252f1a221be05593361acccb99506b", "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", - "versions.yml:md5,bc99889446f02427c166b3219b793672", - "versions.yml:md5,cc8f32b7c37c35a075d38cb773004eaa" + "versions.yml:md5,bc99889446f02427c166b3219b793672" ] ], "meta": { "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-07-03T11:02:39.443965" + "timestamp": "2024-07-03T19:22:08.9618" }, - "skip_bbsplit - stub": { + "skip_gtf_filter = true": { "content": [ [ "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" @@ -2150,19 +3692,19 @@ "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" ], [ - "genome_transcriptome.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" + "genome_gfp.fasta:md5,e23e302af63736a199985a169fdac055" ], [ - "genome_transcriptome.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" + "genome_gfp.gtf:md5,5e63cda3dcafc0d6ad0a738133af9d54" ], [ - "genome_transcriptome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" + "genome_gfp.fasta.fai:md5,8fa54c6bd2ea6a369efbb8ab4f30156a" ], [ - "genome_transcriptome.bed:md5,d41d8cd98f00b204e9800998ecf8427e" + "genome_gfp.bed:md5,991993ebef1def1d5823632c21177ec3" ], [ - "genome_transcriptome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" + "genome_gfp.fasta.sizes:md5,9b755f8f349b14accefb4d859f84de26" ], [ @@ -2183,16 +3725,272 @@ ], [ + "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", + "versions.yml:md5,1cd265cb86a23a27f683ffb2459f37f5", "versions.yml:md5,71252f1a221be05593361acccb99506b", - "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", - "versions.yml:md5,bc99889446f02427c166b3219b793672", - "versions.yml:md5,cc8f32b7c37c35a075d38cb773004eaa" + "versions.yml:md5,bc99889446f02427c166b3219b793672" ] ], "meta": { "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-07-03T10:58:46.540136" + "timestamp": "2024-07-03T19:21:18.583526" + }, + "hisat2_index = false - stub": { + "content": [ + { + "0": [ + "genome_transcriptome.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "1": [ + "genome_transcriptome.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "10": [ + + ], + "11": [ + + ], + "12": [ + + ], + "13": [ + + ], + "14": [ + "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", + "versions.yml:md5,71252f1a221be05593361acccb99506b", + "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", + "versions.yml:md5,bc99889446f02427c166b3219b793672", + "versions.yml:md5,cc8f32b7c37c35a075d38cb773004eaa" + ], + "2": [ + "genome_transcriptome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "3": [ + "genome_transcriptome.bed:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "4": [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" + ], + "5": [ + "genome_transcriptome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "6": [ + + ], + "7": [ + [ + [ + [ + [ + "chr1.chrom.gz:md5,4752b2fa140165e41b5d0be484b2180c", + "info.txt:md5,bca170be315dc0e69e4f87d4b859471f", + "merged_ref_8374379829187813017.fa.gz:md5,5b42850f6d96e66571ae9d29f74505de", + "namelist.txt:md5,2d3a23e005f63d34a85297a5a4baf421", + "reflist.txt:md5,85765f3dc5ca92f0302cff2216a8fd43", + "scaffolds.txt.gz:md5,586126dbdc545a0fd51637b8a5405bd8", + "summary.txt:md5,25dd7644a61b6f13f16ebf80153a3fa9" + ] + ], + [ + [ + "chr1_index_k13_c13_b1.block:md5,900a1be9d0cd47826eb9fefe8c8c96b1", + "chr1_index_k13_c13_b1.block2.gz:md5,eefc669b62e2cb94dbb94031a7bde4fd" + ] + ] + ] + ] + ], + "8": [ + + ], + "9": [ + + ], + "bbsplit_index": [ + [ + [ + [ + [ + "chr1.chrom.gz:md5,4752b2fa140165e41b5d0be484b2180c", + "info.txt:md5,bca170be315dc0e69e4f87d4b859471f", + "merged_ref_8374379829187813017.fa.gz:md5,5b42850f6d96e66571ae9d29f74505de", + "namelist.txt:md5,2d3a23e005f63d34a85297a5a4baf421", + "reflist.txt:md5,85765f3dc5ca92f0302cff2216a8fd43", + "scaffolds.txt.gz:md5,586126dbdc545a0fd51637b8a5405bd8", + "summary.txt:md5,25dd7644a61b6f13f16ebf80153a3fa9" + ] + ], + [ + [ + "chr1_index_k13_c13_b1.block:md5,900a1be9d0cd47826eb9fefe8c8c96b1", + "chr1_index_k13_c13_b1.block2.gz:md5,eefc669b62e2cb94dbb94031a7bde4fd" + ] + ] + ] + ] + ], + "chrom_sizes": [ + "genome_transcriptome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "fai": [ + "genome_transcriptome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "fasta": [ + "genome_transcriptome.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "gene_bed": [ + "genome_transcriptome.bed:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "gtf": [ + "genome_transcriptome.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "hisat2_index": [ + + ], + "kallisto_index": [ + + ], + "rsem_index": [ + + ], + "salmon_index": [ + + ], + "sortmerna_index": [ + + ], + "splicesites": [ + + ], + "star_index": [ + + ], + "transcript_fasta": [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" + ], + "versions": [ + "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", + "versions.yml:md5,71252f1a221be05593361acccb99506b", + "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", + "versions.yml:md5,bc99889446f02427c166b3219b793672", + "versions.yml:md5,cc8f32b7c37c35a075d38cb773004eaa" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-03T19:34:19.689533" + }, + "skip_bbsplit - stub": { + "content": [ + { + "0": [ + "genome_transcriptome.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "1": [ + "genome_transcriptome.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "10": [ + + ], + "11": [ + + ], + "12": [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" + ], + "13": [ + + ], + "14": [ + "versions.yml:md5,71252f1a221be05593361acccb99506b", + "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", + "versions.yml:md5,bc99889446f02427c166b3219b793672", + "versions.yml:md5,cc8f32b7c37c35a075d38cb773004eaa" + ], + "2": [ + "genome_transcriptome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "3": [ + "genome_transcriptome.bed:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "4": [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" + ], + "5": [ + "genome_transcriptome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "6": [ + + ], + "7": [ + + ], + "8": [ + + ], + "9": [ + + ], + "bbsplit_index": [ + + ], + "chrom_sizes": [ + "genome_transcriptome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "fai": [ + "genome_transcriptome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "fasta": [ + "genome_transcriptome.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "gene_bed": [ + "genome_transcriptome.bed:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "gtf": [ + "genome_transcriptome.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "hisat2_index": [ + + ], + "kallisto_index": [ + + ], + "rsem_index": [ + + ], + "salmon_index": [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" + ], + "sortmerna_index": [ + + ], + "splicesites": [ + + ], + "star_index": [ + + ], + "transcript_fasta": [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" + ], + "versions": [ + "versions.yml:md5,71252f1a221be05593361acccb99506b", + "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", + "versions.yml:md5,bc99889446f02427c166b3219b793672", + "versions.yml:md5,cc8f32b7c37c35a075d38cb773004eaa" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-03T19:24:38.592099" } } \ No newline at end of file From c956f6f2b8b5d0965cf8d54bc953eca1ffa025ae Mon Sep 17 00:00:00 2001 From: maxulysse Date: Wed, 3 Jul 2024 19:54:18 +0200 Subject: [PATCH 436/634] add stubs for subworkflow local quantify_rsem --- .../local/quantify_rsem/tests/main.nf.test | 24 +- .../quantify_rsem/tests/main.nf.test.snap | 387 +++++++++++++----- 2 files changed, 281 insertions(+), 130 deletions(-) diff --git a/subworkflows/local/quantify_rsem/tests/main.nf.test b/subworkflows/local/quantify_rsem/tests/main.nf.test index ccd7a128c..bba6f4372 100644 --- a/subworkflows/local/quantify_rsem/tests/main.nf.test +++ b/subworkflows/local/quantify_rsem/tests/main.nf.test @@ -90,7 +90,7 @@ nextflow_workflow { ] ]) input[1] = RSEM_PREPAREREFERENCE.out.index - input[2] = Channel.of(file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true)) + input[2] = Channel.of([[id:'test'], file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true)]) """ } } @@ -98,27 +98,7 @@ nextflow_workflow { then { assertAll( { assert workflow.success }, - { assert snapshot( - file(workflow.out.logs[0][1]).name, - workflow.out.counts_gene, - workflow.out.counts_transcript, - workflow.out.stat, - workflow.out.bam_star, - workflow.out.bam_genome, - workflow.out.bam_transcript, - workflow.out.counts_transcript, - workflow.out.bam, - workflow.out.bai, - workflow.out.csi, - workflow.out.stats, - workflow.out.flagstat, - workflow.out.idxstats, - workflow.out.merged_counts_gene, - workflow.out.merged_tpm_gene, - workflow.out.merged_counts_transcript, - workflow.out.merged_tpm_transcript, - workflow.out.versions - ).match()} + { assert snapshot(workflow.out).match()} ) } } diff --git a/subworkflows/local/quantify_rsem/tests/main.nf.test.snap b/subworkflows/local/quantify_rsem/tests/main.nf.test.snap index f87877733..b8fe0d163 100644 --- a/subworkflows/local/quantify_rsem/tests/main.nf.test.snap +++ b/subworkflows/local/quantify_rsem/tests/main.nf.test.snap @@ -1,119 +1,290 @@ { "homo_sapiens - stub": { "content": [ - "test.log", - [ - [ - { - "id": "test", - "strandedness": "forward" - }, - "test.genes.results:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - [ - [ - { - "id": "test", - "strandedness": "forward" - }, - "test.isoforms.results:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - [ - [ - { - "id": "test", - "strandedness": "forward" - }, - "test.stat:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - [ - [ - { - "id": "test", - "strandedness": "forward" - }, - "test.STAR.genome.bam:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - [ - [ - { - "id": "test", - "strandedness": "forward" - }, - "test.genome.bam:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - [ - [ - { - "id": "test", - "strandedness": "forward" - }, - "test.transcript.bam:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - [ - [ - { - "id": "test", - "strandedness": "forward" - }, - "test.isoforms.results:md5,d41d8cd98f00b204e9800998ecf8427e" + { + "0": [ + [ + { + "id": "test", + "strandedness": "forward" + }, + "test.genes.results:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + [ + { + "id": "test", + "strandedness": "forward" + }, + "test.isoforms.results:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "10": [ + [ + { + "id": "test", + "strandedness": "forward" + }, + "test.stats:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "11": [ + [ + { + "id": "test", + "strandedness": "forward" + }, + "test.flagstat:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "12": [ + [ + { + "id": "test", + "strandedness": "forward" + }, + "test.idxstats:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "13": [ + "rsem.merged.gene_counts.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "14": [ + "rsem.merged.gene_tpm.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "15": [ + "rsem.merged.transcript_counts.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "16": [ + "rsem.merged.transcript_tpm.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "17": [ + "versions.yml:md5,2aa5252eb2ffb409cf556a165d40f8a9", + "versions.yml:md5,3399809728955f4654ab781f37ea42d3", + "versions.yml:md5,4219f710ca21b71a7c7db6b02ac19bb3", + "versions.yml:md5,912c613bca84f899b3e890985ecc6fc2", + "versions.yml:md5,a4755dd9acbfa60dbc38e172ffda193f", + "versions.yml:md5,ae1676b60b6335fff8f1188288103a1c", + "versions.yml:md5,f645ee5b20a4e89c6ed48fdc27c21791" + ], + "2": [ + [ + { + "id": "test", + "strandedness": "forward" + }, + "test.stat:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "3": [ + [ + { + "id": "test", + "strandedness": "forward" + }, + "test.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "4": [ + [ + { + "id": "test", + "strandedness": "forward" + }, + "test.STAR.genome.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "5": [ + [ + { + "id": "test", + "strandedness": "forward" + }, + "test.genome.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "6": [ + [ + { + "id": "test", + "strandedness": "forward" + }, + "test.transcript.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "7": [ + [ + { + "id": "test", + "strandedness": "forward" + }, + "test.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "8": [ + [ + { + "id": "test", + "strandedness": "forward" + }, + "test.bam.bai:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "9": [ + [ + { + "id": "test", + "strandedness": "forward" + }, + "test.bam.csi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "bai": [ + [ + { + "id": "test", + "strandedness": "forward" + }, + "test.bam.bai:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "bam": [ + [ + { + "id": "test", + "strandedness": "forward" + }, + "test.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "bam_genome": [ + [ + { + "id": "test", + "strandedness": "forward" + }, + "test.genome.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "bam_star": [ + [ + { + "id": "test", + "strandedness": "forward" + }, + "test.STAR.genome.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "bam_transcript": [ + [ + { + "id": "test", + "strandedness": "forward" + }, + "test.transcript.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "counts_gene": [ + [ + { + "id": "test", + "strandedness": "forward" + }, + "test.genes.results:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "counts_transcript": [ + [ + { + "id": "test", + "strandedness": "forward" + }, + "test.isoforms.results:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "csi": [ + [ + { + "id": "test", + "strandedness": "forward" + }, + "test.bam.csi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "flagstat": [ + [ + { + "id": "test", + "strandedness": "forward" + }, + "test.flagstat:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "idxstats": [ + [ + { + "id": "test", + "strandedness": "forward" + }, + "test.idxstats:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "logs": [ + [ + { + "id": "test", + "strandedness": "forward" + }, + "test.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "merged_counts_gene": [ + "rsem.merged.gene_counts.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "merged_counts_transcript": [ + "rsem.merged.transcript_counts.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "merged_tpm_gene": [ + "rsem.merged.gene_tpm.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "merged_tpm_transcript": [ + "rsem.merged.transcript_tpm.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "stat": [ + [ + { + "id": "test", + "strandedness": "forward" + }, + "test.stat:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "stats": [ + [ + { + "id": "test", + "strandedness": "forward" + }, + "test.stats:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,2aa5252eb2ffb409cf556a165d40f8a9", + "versions.yml:md5,3399809728955f4654ab781f37ea42d3", + "versions.yml:md5,4219f710ca21b71a7c7db6b02ac19bb3", + "versions.yml:md5,912c613bca84f899b3e890985ecc6fc2", + "versions.yml:md5,a4755dd9acbfa60dbc38e172ffda193f", + "versions.yml:md5,ae1676b60b6335fff8f1188288103a1c", + "versions.yml:md5,f645ee5b20a4e89c6ed48fdc27c21791" ] - ], - [ - - ], - [ - - ], - [ - - ], - [ - - ], - [ - - ], - [ - - ], - [ - - ], - [ - - ], - [ - - ], - [ - - ], - [ - "versions.yml:md5,ae1676b60b6335fff8f1188288103a1c" - ] + } ], "meta": { "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-07-03T11:09:12.443079" - }, - "logs": { - "content": [ - "test.log" - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-03-07T18:25:31.476361" + "timestamp": "2024-07-03T19:53:42.558374" }, "homo_sapiens": { "content": [ @@ -212,6 +383,6 @@ "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-07-03T11:08:53.123014" + "timestamp": "2024-07-03T19:53:14.561568" } } \ No newline at end of file From bf5797f9ebd7c18cc6051d22389708d1c482b0eb Mon Sep 17 00:00:00 2001 From: maxulysse Date: Wed, 3 Jul 2024 20:16:19 +0200 Subject: [PATCH 437/634] update default snapshot --- tests/default.nf.test | 47 ++++++++++++++++++++++++++------------ tests/default.nf.test.snap | 21 +++++------------ 2 files changed, 38 insertions(+), 30 deletions(-) diff --git a/tests/default.nf.test b/tests/default.nf.test index b086c6db3..b790c4d9e 100644 --- a/tests/default.nf.test +++ b/tests/default.nf.test @@ -14,24 +14,41 @@ nextflow_pipeline { then { assertAll( { assert workflow.success }, - { assert snapshot(UTILS.removeNextflowVersion("$outputDir/pipeline_info/nf_core_rnaseq_software_mqc_versions.yml")).match("software_versions") }, { assert snapshot( - path("${params.outdir}/salmon/salmon.merged.transcript_counts.tsv"), - path("${params.outdir}/custom/out/genome_gfp.fasta"), - path("${params.outdir}/custom/out/genome_gfp.gtf"), - path("${params.outdir}/star_salmon/bigwig/RAP1_IAA_30M_REP1.forward.bigWig"), - path("${params.outdir}/star_salmon/bigwig/RAP1_IAA_30M_REP1.reverse.bigWig"), - path("${params.outdir}/star_salmon/bigwig/RAP1_UNINDUCED_REP1.forward.bigWig"), - path("${params.outdir}/star_salmon/bigwig/RAP1_UNINDUCED_REP1.reverse.bigWig"), - path("${params.outdir}/star_salmon/bigwig/RAP1_UNINDUCED_REP2.forward.bigWig"), - path("${params.outdir}/star_salmon/bigwig/RAP1_UNINDUCED_REP2.reverse.bigWig"), - path("${params.outdir}/star_salmon/bigwig/WT_REP1.forward.bigWig"), - path("${params.outdir}/star_salmon/bigwig/WT_REP1.reverse.bigWig"), - path("${params.outdir}/star_salmon/bigwig/WT_REP2.forward.bigWig"), - path("${params.outdir}/star_salmon/bigwig/WT_REP2.reverse.bigWig") - ).match("output_files") + UTILS.removeNextflowVersion("$outputDir/pipeline_info/nf_core_rnaseq_software_mqc_versions.yml"), + path("${params.outdir}/custom/out/genome_gfp.fasta"), + path("${params.outdir}/custom/out/genome_gfp.gtf"), + path("${params.outdir}/salmon/salmon.merged.transcript_counts.tsv"), + path("${params.outdir}/star_salmon/bigwig/RAP1_IAA_30M_REP1.forward.bigWig"), + path("${params.outdir}/star_salmon/bigwig/RAP1_IAA_30M_REP1.reverse.bigWig"), + path("${params.outdir}/star_salmon/bigwig/RAP1_UNINDUCED_REP1.forward.bigWig"), + path("${params.outdir}/star_salmon/bigwig/RAP1_UNINDUCED_REP1.reverse.bigWig"), + path("${params.outdir}/star_salmon/bigwig/RAP1_UNINDUCED_REP2.forward.bigWig"), + path("${params.outdir}/star_salmon/bigwig/RAP1_UNINDUCED_REP2.reverse.bigWig"), + path("${params.outdir}/star_salmon/bigwig/WT_REP1.forward.bigWig"), + path("${params.outdir}/star_salmon/bigwig/WT_REP1.reverse.bigWig"), + path("${params.outdir}/star_salmon/bigwig/WT_REP2.forward.bigWig"), + path("${params.outdir}/star_salmon/bigwig/WT_REP2.reverse.bigWig")).match() } ) } } + + test("Params: default - stub") { + + options "-stub" + + when { + params { + outdir = "$outputDir" + } + } + + then { + assertAll( + { assert workflow.success }, + { assert snapshot(workflow.out).match() } + ) + } + } } diff --git a/tests/default.nf.test.snap b/tests/default.nf.test.snap index 83b22815a..a5ae50f64 100644 --- a/tests/default.nf.test.snap +++ b/tests/default.nf.test.snap @@ -1,9 +1,10 @@ { - "output_files": { + "Params: default": { "content": [ - "salmon.merged.transcript_counts.tsv:md5,ff0f5be09ca7a322672c0074ba35da17", + "{BBMAP_BBSPLIT={bbmap=39.01}, BEDTOOLS_GENOMECOV_FW={bedtools=2.31.1}, CAT_FASTQ={cat=8.3}, CUSTOM_CATADDITIONALFASTA={python=3.9.5}, CUSTOM_GETCHROMSIZES={getchromsizes=1.2}, CUSTOM_TX2GENE={python=3.9.5}, DESEQ2_QC_PSEUDO={r-base=4.0.3, bioconductor-deseq2=1.28.0}, DESEQ2_QC_STAR_SALMON={r-base=4.0.3, bioconductor-deseq2=1.28.0}, DUPRADAR={bioconductor-dupradar=1.32.0}, FASTQC={fastqc=0.12.1}, FQ_SUBSAMPLE={fq=0.9.1 (2022-02-22)}, GTF2BED={perl=5.26.2}, GTF_FILTER={python=3.9.5}, GUNZIP_ADDITIONAL_FASTA={gunzip=1.1}, GUNZIP_GTF={gunzip=1.1}, MULTIQC_CUSTOM_BIOTYPE={python=3.9.5}, PICARD_MARKDUPLICATES={picard=3.1.1}, QUALIMAP_RNASEQ={qualimap=2.3}, RSEQC_BAMSTAT={rseqc=5.0.2}, RSEQC_INFEREXPERIMENT={rseqc=5.0.2}, RSEQC_INNERDISTANCE={rseqc=5.0.2}, RSEQC_JUNCTIONANNOTATION={rseqc=5.0.2}, RSEQC_JUNCTIONSATURATION={rseqc=5.0.2}, RSEQC_READDISTRIBUTION={rseqc=5.0.2}, RSEQC_READDUPLICATION={rseqc=5.0.2}, SALMON_QUANT={salmon=1.10.1}, SAMTOOLS_FLAGSTAT={samtools=1.2}, SAMTOOLS_IDXSTATS={samtools=1.2}, SAMTOOLS_INDEX={samtools=1.2}, SAMTOOLS_SORT={samtools=1.2}, SAMTOOLS_STATS={samtools=1.2}, SE_GENE={bioconductor-summarizedexperiment=1.32.0}, STAR_ALIGN={star=2.7.10a, samtools=1.18, gawk=5.1.0}, STAR_GENOMEGENERATE={star=2.7.10a, samtools=1.18, gawk=5.1.0}, STRINGTIE_STRINGTIE={stringtie=2.2.1}, SUBREAD_FEATURECOUNTS={subread=2.0.1}, TRIMGALORE={trimgalore=0.6.7, cutadapt=3.4}, TXIMETA_TXIMPORT={bioconductor-tximeta=1.20.1}, UCSC_BEDCLIP={ucsc=377}, UCSC_BEDGRAPHTOBIGWIG={ucsc=445}, UNTAR_SALMON_INDEX={untar=1.3}, Workflow={nf-core/rnaseq=v3.15.0dev}}", "genome_gfp.fasta:md5,e23e302af63736a199985a169fdac055", "genome_gfp.gtf:md5,c98b12c302f15731bfc36bcf297cfe28", + "salmon.merged.transcript_counts.tsv:md5,2023d27cee50a4044aed3274bf07e55f", "RAP1_IAA_30M_REP1.forward.bigWig:md5,0abafd7a9f9035469c003fd3dabd73e8", "RAP1_IAA_30M_REP1.reverse.bigWig:md5,0f1e9ac71fc0b99785f06ecb860ef00e", "RAP1_UNINDUCED_REP1.forward.bigWig:md5,09e8d65e21ac92e9a3b78afe3acdf28b", @@ -17,18 +18,8 @@ ], "meta": { "nf-test": "0.8.4", - "nextflow": "24.04.1" + "nextflow": "24.04.2" }, - "timestamp": "2024-06-27T15:38:12.586958" - }, - "software_versions": { - "content": [ - "{BBMAP_BBSPLIT={bbmap=39.01}, BEDTOOLS_GENOMECOV_FW={bedtools=2.31.1}, CAT_FASTQ={cat=8.3}, CUSTOM_CATADDITIONALFASTA={python=3.9.5}, CUSTOM_GETCHROMSIZES={getchromsizes=1.2}, CUSTOM_TX2GENE={python=3.9.5}, DESEQ2_QC_PSEUDO={r-base=4.0.3, bioconductor-deseq2=1.28.0}, DESEQ2_QC_STAR_SALMON={r-base=4.0.3, bioconductor-deseq2=1.28.0}, DUPRADAR={bioconductor-dupradar=1.32.0}, FASTQC={fastqc=0.12.1}, FQ_SUBSAMPLE={fq=0.9.1 (2022-02-22)}, GTF2BED={perl=5.26.2}, GTF_FILTER={python=3.9.5}, GUNZIP_ADDITIONAL_FASTA={gunzip=1.1}, GUNZIP_GTF={gunzip=1.1}, MULTIQC_CUSTOM_BIOTYPE={python=3.9.5}, PICARD_MARKDUPLICATES={picard=3.1.1}, QUALIMAP_RNASEQ={qualimap=2.3}, RSEQC_BAMSTAT={rseqc=5.0.2}, RSEQC_INFEREXPERIMENT={rseqc=5.0.2}, RSEQC_INNERDISTANCE={rseqc=5.0.2}, RSEQC_JUNCTIONANNOTATION={rseqc=5.0.2}, RSEQC_JUNCTIONSATURATION={rseqc=5.0.2}, RSEQC_READDISTRIBUTION={rseqc=5.0.2}, RSEQC_READDUPLICATION={rseqc=5.0.2}, SALMON_QUANT={salmon=1.10.1}, SAMTOOLS_FLAGSTAT={samtools=1.2}, SAMTOOLS_IDXSTATS={samtools=1.2}, SAMTOOLS_INDEX={samtools=1.2}, SAMTOOLS_SORT={samtools=1.2}, SAMTOOLS_STATS={samtools=1.2}, SE_GENE={bioconductor-summarizedexperiment=1.32.0}, STAR_ALIGN={star=2.7.10a, samtools=1.18, gawk=5.1.0}, STAR_GENOMEGENERATE={star=2.7.10a, samtools=1.18, gawk=5.1.0}, STRINGTIE_STRINGTIE={stringtie=2.2.1}, SUBREAD_FEATURECOUNTS={subread=2.0.1}, TRIMGALORE={trimgalore=0.6.7, cutadapt=3.4}, TXIMETA_TXIMPORT={bioconductor-tximeta=1.20.1}, UCSC_BEDCLIP={ucsc=377}, UCSC_BEDGRAPHTOBIGWIG={ucsc=445}, UNTAR_SALMON_INDEX={untar=1.3}, Workflow={nf-core/rnaseq=v3.15.0dev}}" - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.1" - }, - "timestamp": "2024-06-27T15:38:12.576022" + "timestamp": "2024-07-03T20:09:15.070821" } -} \ No newline at end of file +} From a2443e749c85d8796a6c77f830f80bdb09c9d72f Mon Sep 17 00:00:00 2001 From: Matthias Zepper Date: Wed, 22 May 2024 14:14:56 +0200 Subject: [PATCH 438/634] Modify FastQC output publishing to comply with the paths in MultiQC config. --- .../nf-core/fastq_fastqc_umitools_fastp/nextflow.config | 7 ++++++- .../fastq_fastqc_umitools_trimgalore/nextflow.config | 7 ++++++- workflows/rnaseq/assets/multiqc/multiqc_config.yml | 1 + 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/subworkflows/nf-core/fastq_fastqc_umitools_fastp/nextflow.config b/subworkflows/nf-core/fastq_fastqc_umitools_fastp/nextflow.config index 061689d5f..564299abc 100644 --- a/subworkflows/nf-core/fastq_fastqc_umitools_fastp/nextflow.config +++ b/subworkflows/nf-core/fastq_fastqc_umitools_fastp/nextflow.config @@ -3,12 +3,17 @@ if (!(params.skip_fastqc || params.skip_qc)) { process { withName: '.*:FASTQ_FASTQC_UMITOOLS_FASTP:FASTQC_RAW' { ext.args = '--quiet' + publishDir = [ + path: { "${params.outdir}/fastqc/raw" }, + mode: params.publish_dir_mode, + saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + ] } withName: '.*:FASTQ_FASTQC_UMITOOLS_FASTP:FASTQC_TRIM' { ext.args = '--quiet' publishDir = [ - path: { "${params.outdir}/${params.trimmer}/fastqc" }, + path: { "${params.outdir}/fastqc/trim" }, mode: params.publish_dir_mode, saveAs: { filename -> filename.equals('versions.yml') ? null : filename } ] diff --git a/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/nextflow.config b/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/nextflow.config index 6de6b513d..63a1eee09 100644 --- a/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/nextflow.config +++ b/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/nextflow.config @@ -3,6 +3,11 @@ if (!(params.skip_fastqc || params.skip_qc)) { process { withName: '.*:FASTQ_FASTQC_UMITOOLS_TRIMGALORE:FASTQC' { ext.args = '--quiet' + publishDir = [ + path: { "${params.outdir}/fastqc/raw" }, + mode: params.publish_dir_mode, + saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + ] } } } @@ -34,7 +39,7 @@ if (!params.skip_trimming) { } publishDir = [ [ - path: { "${params.outdir}/${params.trimmer}/fastqc" }, + path: { "${params.outdir}/fastqc/trim" }, mode: params.publish_dir_mode, pattern: "*.{html,zip}" ], diff --git a/workflows/rnaseq/assets/multiqc/multiqc_config.yml b/workflows/rnaseq/assets/multiqc/multiqc_config.yml index 47bd0a770..12eb0a097 100644 --- a/workflows/rnaseq/assets/multiqc/multiqc_config.yml +++ b/workflows/rnaseq/assets/multiqc/multiqc_config.yml @@ -21,6 +21,7 @@ run_modules: - star - hisat2 - rsem + - umi-tools - salmon - kallisto - samtools From 00d6113af153c51d17da288787f672e9f5927df8 Mon Sep 17 00:00:00 2001 From: Matthias Zepper Date: Wed, 29 May 2024 21:09:07 +0200 Subject: [PATCH 439/634] MultiQC config updates. --- workflows/rnaseq/assets/multiqc/multiqc_config.yml | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/workflows/rnaseq/assets/multiqc/multiqc_config.yml b/workflows/rnaseq/assets/multiqc/multiqc_config.yml index 12eb0a097..1974c45e6 100644 --- a/workflows/rnaseq/assets/multiqc/multiqc_config.yml +++ b/workflows/rnaseq/assets/multiqc/multiqc_config.yml @@ -21,7 +21,7 @@ run_modules: - star - hisat2 - rsem - - umi-tools + - umitools - salmon - kallisto - samtools @@ -43,20 +43,25 @@ top_modules: - "salmon_deseq2_clustering" - "biotype_counts" - "dupradar" + - "umitools" module_order: - fastqc: name: "FastQC (raw)" + anchor: "fastqc_raw" info: "This section of the report shows FastQC results before adapter trimming." path_filters: - - "./fastqc/raw/*.zip" + - "**/raw/*.zip" - cutadapt - fastp - fastqc: name: "FastQC (trimmed)" + anchor: "fastqc_trimmed" info: "This section of the report shows FastQC results after adapter trimming." path_filters: - - "./fastqc/trim/*.zip" + - "**/trim/*.zip" + + # Don't show % Dups in the General Stats table (we have this from Picard) table_columns_visible: From 7dade35a4a73c3b1d4af1c150ae3e40a23d1e3c5 Mon Sep 17 00:00:00 2001 From: Matthias Zepper Date: Mon, 3 Jun 2024 16:29:05 +0200 Subject: [PATCH 440/634] Linting. --- workflows/rnaseq/assets/multiqc/multiqc_config.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/workflows/rnaseq/assets/multiqc/multiqc_config.yml b/workflows/rnaseq/assets/multiqc/multiqc_config.yml index 1974c45e6..0e7330d65 100644 --- a/workflows/rnaseq/assets/multiqc/multiqc_config.yml +++ b/workflows/rnaseq/assets/multiqc/multiqc_config.yml @@ -61,8 +61,6 @@ module_order: path_filters: - "**/trim/*.zip" - - # Don't show % Dups in the General Stats table (we have this from Picard) table_columns_visible: fastqc: From 1bf9390fd1418909c6f2211fe1cb7592054a1a3f Mon Sep 17 00:00:00 2001 From: Matthias Zepper Date: Mon, 3 Jun 2024 19:15:45 +0200 Subject: [PATCH 441/634] Use the correct module names to supress the Percent Duplicate column in the General Stats table of MultiQC. --- workflows/rnaseq/assets/multiqc/multiqc_config.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/workflows/rnaseq/assets/multiqc/multiqc_config.yml b/workflows/rnaseq/assets/multiqc/multiqc_config.yml index 0e7330d65..a4acea7c7 100644 --- a/workflows/rnaseq/assets/multiqc/multiqc_config.yml +++ b/workflows/rnaseq/assets/multiqc/multiqc_config.yml @@ -63,7 +63,9 @@ module_order: # Don't show % Dups in the General Stats table (we have this from Picard) table_columns_visible: - fastqc: + "FastQC (raw)": + percent_duplicates: False + "FastQC (trimmed)": percent_duplicates: False extra_fn_clean_exts: From 850cb4cd84f6e313ac21fde14e40dd7d615b14e1 Mon Sep 17 00:00:00 2001 From: Matthias Zepper Date: Wed, 5 Jun 2024 18:21:00 +0200 Subject: [PATCH 442/634] Publish logfiles from umi-tools dedup steps. --- workflows/rnaseq/assets/multiqc/multiqc_config.yml | 2 +- workflows/rnaseq/nextflow.config | 12 +++++++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/workflows/rnaseq/assets/multiqc/multiqc_config.yml b/workflows/rnaseq/assets/multiqc/multiqc_config.yml index a4acea7c7..91a858775 100644 --- a/workflows/rnaseq/assets/multiqc/multiqc_config.yml +++ b/workflows/rnaseq/assets/multiqc/multiqc_config.yml @@ -43,7 +43,6 @@ top_modules: - "salmon_deseq2_clustering" - "biotype_counts" - "dupradar" - - "umitools" module_order: - fastqc: @@ -153,6 +152,7 @@ sp: picard/wgs_metrics: skip: true + # See https://github.com/ewels/MultiQC_TestData/blob/master/data/custom_content/with_config/table_headerconfig/multiqc_config.yaml custom_data: fail_trimmed_samples: diff --git a/workflows/rnaseq/nextflow.config b/workflows/rnaseq/nextflow.config index b603e12cd..c7eeac733 100644 --- a/workflows/rnaseq/nextflow.config +++ b/workflows/rnaseq/nextflow.config @@ -89,7 +89,7 @@ if (!params.skip_alignment && params.aligner == 'star_salmon') { ext.prefix = { "${meta.id}.umi_dedup.transcriptome.filtered" } publishDir = [ [ - path: { "${params.outdir}/${params.aligner}/umitools/log" }, + path: { "${params.outdir}/${params.aligner}/umitools/prepare_for_salmon_log" }, mode: params.publish_dir_mode, pattern: '*.log' ], @@ -144,6 +144,11 @@ if (!params.skip_alignment && params.aligner == 'star_salmon') { mode: params.publish_dir_mode, pattern: '*.tsv' ], + [ + path: { "${params.outdir}/${params.aligner}/umitools/transcriptomic_dedup_log" }, + mode: params.publish_dir_mode, + pattern: '*.log' + ], [ path: { params.save_align_intermeds || params.save_umi_intermeds ? "${params.outdir}/${params.aligner}" : params.outdir }, mode: params.publish_dir_mode, @@ -233,6 +238,11 @@ if (!params.skip_alignment) { mode: params.publish_dir_mode, pattern: '*.tsv' ], + [ + path: { "${params.outdir}/${params.aligner}/umitools/genomic_dedup_log" }, + mode: params.publish_dir_mode, + pattern: '*.log' + ], [ path: { params.save_align_intermeds || params.with_umi || params.save_umi_intermeds ? "${params.outdir}/${params.aligner}" : params.outdir }, mode: params.publish_dir_mode, From 2cb8effc2f7ac90383a68680e0a0b257959b511c Mon Sep 17 00:00:00 2001 From: Matthias Zepper Date: Wed, 5 Jun 2024 18:49:02 +0200 Subject: [PATCH 443/634] Modify subworkflow bam_dedup_stats_samtools_umitools to publish dedup logs. --- workflows/rnaseq/main.nf | 3 +++ 1 file changed, 3 insertions(+) diff --git a/workflows/rnaseq/main.nf b/workflows/rnaseq/main.nf index 288ed8c60..98790cd0e 100755 --- a/workflows/rnaseq/main.nf +++ b/workflows/rnaseq/main.nf @@ -372,6 +372,7 @@ workflow RNASEQ { ) ch_genome_bam = BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS_GENOME.out.bam ch_genome_bam_index = BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS_GENOME.out.bai + ch_multiqc_files = ch_multiqc_files.mix(BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS_GENOME.out.deduplog.collect{it[1]}) ch_multiqc_files = ch_multiqc_files.mix(BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS_GENOME.out.stats.collect{it[1]}) ch_multiqc_files = ch_multiqc_files.mix(BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS_GENOME.out.flagstat.collect{it[1]}) ch_multiqc_files = ch_multiqc_files.mix(BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS_GENOME.out.idxstats.collect{it[1]}) @@ -394,6 +395,7 @@ workflow RNASEQ { ch_transcriptome_sorted_bam.join(ch_transcriptome_sorted_bai, by: [0]), params.umitools_dedup_stats ) + ch_multiqc_files = ch_multiqc_files.mix(BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS_TRANSCRIPTOME.out.deduplog.collect{it[1]}) // Name sort BAM before passing to Salmon SAMTOOLS_SORT ( @@ -525,6 +527,7 @@ workflow RNASEQ { ) ch_genome_bam = BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS_GENOME.out.bam ch_genome_bam_index = BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS_GENOME.out.bai + ch_multiqc_files = ch_multiqc_files.mix(BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS_GENOME.out.deduplog.collect{it[1]}) ch_multiqc_files = ch_multiqc_files.mix(BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS_GENOME.out.stats.collect{it[1]}) ch_multiqc_files = ch_multiqc_files.mix(BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS_GENOME.out.flagstat.collect{it[1]}) ch_multiqc_files = ch_multiqc_files.mix(BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS_GENOME.out.idxstats.collect{it[1]}) From 6648b359f45c4dffa545009b29ba4bd3c7a86f3e Mon Sep 17 00:00:00 2001 From: Matthias Zepper Date: Mon, 10 Jun 2024 19:53:50 +0000 Subject: [PATCH 444/634] Update bam_dedup_stats_samtools_umitools subworkflow and MultiQC module. --- modules/nf-core/multiqc/tests/main.nf.test | 4 ++++ modules/nf-core/multiqc/tests/tags.yml | 2 ++ .../tests/main.nf.test | 13 +++++++++++++ .../tests/tags.yml | 2 ++ 4 files changed, 21 insertions(+) create mode 100644 modules/nf-core/multiqc/tests/tags.yml create mode 100644 subworkflows/nf-core/bam_dedup_stats_samtools_umitools/tests/tags.yml diff --git a/modules/nf-core/multiqc/tests/main.nf.test b/modules/nf-core/multiqc/tests/main.nf.test index 813b438eb..f1c4242ef 100644 --- a/modules/nf-core/multiqc/tests/main.nf.test +++ b/modules/nf-core/multiqc/tests/main.nf.test @@ -4,6 +4,10 @@ nextflow_process { script "../main.nf" process "MULTIQC" + tag "modules" + tag "modules_nfcore" + tag "multiqc" + test("sarscov2 single-end [fastqc]") { when { diff --git a/modules/nf-core/multiqc/tests/tags.yml b/modules/nf-core/multiqc/tests/tags.yml new file mode 100644 index 000000000..bea6c0d37 --- /dev/null +++ b/modules/nf-core/multiqc/tests/tags.yml @@ -0,0 +1,2 @@ +multiqc: + - modules/nf-core/multiqc/** diff --git a/subworkflows/nf-core/bam_dedup_stats_samtools_umitools/tests/main.nf.test b/subworkflows/nf-core/bam_dedup_stats_samtools_umitools/tests/main.nf.test index 1a95c0bb5..cc9c57c04 100644 --- a/subworkflows/nf-core/bam_dedup_stats_samtools_umitools/tests/main.nf.test +++ b/subworkflows/nf-core/bam_dedup_stats_samtools_umitools/tests/main.nf.test @@ -3,6 +3,19 @@ nextflow_workflow { name "Test Workflow BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS" script "../main.nf" workflow "BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS" + tag "subworkflows" + tag "subworkflows_nfcore" + tag "subworkflows/bam_dedup_stats_samtools_umitools" + tag "subworkflows/bam_stats_samtools" + tag "bam_dedup_stats_samtools_umitools" + tag "bam_stats_samtools" + tag "samtools" + tag "samtools/index" + tag "samtools/stats" + tag "samtools/idxstats" + tag "samtools/flagstat" + tag "umitools" + tag "umitools/dedup" test("sarscov2_bam_bai") { diff --git a/subworkflows/nf-core/bam_dedup_stats_samtools_umitools/tests/tags.yml b/subworkflows/nf-core/bam_dedup_stats_samtools_umitools/tests/tags.yml new file mode 100644 index 000000000..bfd5e023e --- /dev/null +++ b/subworkflows/nf-core/bam_dedup_stats_samtools_umitools/tests/tags.yml @@ -0,0 +1,2 @@ +subworkflows/bam_dedup_stats_samtools_umitools: + - subworkflows/nf-core/bam_dedup_stats_samtools_umitools/** From 2924f9e02c75bb178305823c935ee306a7a0db97 Mon Sep 17 00:00:00 2001 From: Matthias Zepper Date: Mon, 10 Jun 2024 20:04:41 +0000 Subject: [PATCH 445/634] Add UMI information for Watchmaker mRNA Library Prep Kit. --- docs/usage.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/usage.md b/docs/usage.md index cf9c607dc..dce15907e 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -152,6 +152,7 @@ The `--umitools_grouping_method` parameter affects [how similar, but non-identic | In sequence | [Lexogen QuantSeq® 3’ mRNA-Seq V2 FWD](https://www.lexogen.com/quantseq-3mrna-sequencing) + [UMI Second Strand Synthesis Module](https://faqs.lexogen.com/faq/how-can-i-add-umis-to-my-quantseq-libraries) | `--with_umi --umitools_extract_method "regex" --umitools_bc_pattern "^(?P.{6})(?P.{4}).*"` | | In sequence | [Lexogen CORALL® Total RNA-Seq V1](https://www.lexogen.com/corall-total-rna-seq/)
    > _mind [Appendix H](https://www.lexogen.com/wp-content/uploads/2020/04/095UG190V0130_CORALL-Total-RNA-Seq_2020-03-31.pdf) regarding optional trimming_ | `--with_umi --umitools_extract_method "regex" --umitools_bc_pattern "^(?P.{12}).*"`
    Optional: `--clip_r2 9 --three_prime_clip_r2 12` | | In sequence | [Takara Bio SMARTer® Stranded Total RNA-Seq Kit v3](https://www.takarabio.com/documents/User%20Manual/SMARTer%20Stranded%20Total%20RNA/SMARTer%20Stranded%20Total%20RNA-Seq%20Kit%20v3%20-%20Pico%20Input%20Mammalian%20User%20Manual-a_114949.pdf) | `--with_umi --umitools_extract_method "regex" --umitools_bc_pattern2 "^(?P.{8})(?P.{6}).*"` | +| In sequence | [Watchmaker mRNA Library Prep Kit](https://watchmakergenomics.com/wp-content/uploads/2023/11/M223_mRNA-Library-Prep-Kit-_UG_WMUG214_v1-1-0823.pdf) with [Twist UMI Adapter System](https://www.twistbioscience.com/sites/default/files/resources/2023-03/DOC-001337_TechNote-ProcessingSequencingDataUtilizingUMI-REV1-singles.pdf) | `--with_umi --umitools_extract_method "regex" --umitools_bc_pattern "^(?P.{5})(?P.{2}).*" --umitools_bc_pattern2 "^(?P.{5})(?P.{2}).*"` | > _No warranty for the accuracy or completeness of the parameters is implied_ From 8a4aa8a4022ab479953c5330b987a7893fffddfa Mon Sep 17 00:00:00 2001 From: Matthias Zepper Date: Tue, 11 Jun 2024 15:52:09 +0200 Subject: [PATCH 446/634] Publish the UMI-tools extract logs for MultiQC. --- workflows/rnaseq/main.nf | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/workflows/rnaseq/main.nf b/workflows/rnaseq/main.nf index 98790cd0e..aeb859ada 100755 --- a/workflows/rnaseq/main.nf +++ b/workflows/rnaseq/main.nf @@ -163,9 +163,10 @@ workflow RNASEQ { ) ch_filtered_reads = FASTQ_FASTQC_UMITOOLS_TRIMGALORE.out.reads ch_trim_read_count = FASTQ_FASTQC_UMITOOLS_TRIMGALORE.out.trim_read_count - ch_multiqc_files = ch_multiqc_files.mix(FASTQ_FASTQC_UMITOOLS_TRIMGALORE.out.fastqc_zip.collect{it[1]}) - ch_multiqc_files = ch_multiqc_files.mix(FASTQ_FASTQC_UMITOOLS_TRIMGALORE.out.trim_zip.collect{it[1]}) - ch_multiqc_files = ch_multiqc_files.mix(FASTQ_FASTQC_UMITOOLS_TRIMGALORE.out.trim_log.collect{it[1]}) + ch_multiqc_files = ch_multiqc_files.mix(FASTQ_FASTQC_UMITOOLS_TRIMGALORE.out.fastqc_zip.collect{it[1]}) // FastQC report - untrimmed + ch_multiqc_files = ch_multiqc_files.mix(FASTQ_FASTQC_UMITOOLS_TRIMGALORE.out.log.collect{it[1]}) // umi-tools extract logs + ch_multiqc_files = ch_multiqc_files.mix(FASTQ_FASTQC_UMITOOLS_TRIMGALORE.out.trim_zip.collect{it[1]}) // FastQC report - trimmed + ch_multiqc_files = ch_multiqc_files.mix(FASTQ_FASTQC_UMITOOLS_TRIMGALORE.out.trim_log.collect{it[1]}) // Trim Galore! trimming report ch_versions = ch_versions.mix(FASTQ_FASTQC_UMITOOLS_TRIMGALORE.out.versions) } @@ -190,6 +191,7 @@ workflow RNASEQ { ch_multiqc_files = ch_multiqc_files.mix(FASTQ_FASTQC_UMITOOLS_FASTP.out.fastqc_raw_zip.collect{it[1]}) ch_multiqc_files = ch_multiqc_files.mix(FASTQ_FASTQC_UMITOOLS_FASTP.out.fastqc_trim_zip.collect{it[1]}) ch_multiqc_files = ch_multiqc_files.mix(FASTQ_FASTQC_UMITOOLS_FASTP.out.trim_json.collect{it[1]}) + ch_multiqc_files = ch_multiqc_files.mix(FASTQ_FASTQC_UMITOOLS_FASTP.out.umi_log.collect{it[1]}) // umi-tools extract logs ch_versions = ch_versions.mix(FASTQ_FASTQC_UMITOOLS_FASTP.out.versions) } @@ -395,7 +397,6 @@ workflow RNASEQ { ch_transcriptome_sorted_bam.join(ch_transcriptome_sorted_bai, by: [0]), params.umitools_dedup_stats ) - ch_multiqc_files = ch_multiqc_files.mix(BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS_TRANSCRIPTOME.out.deduplog.collect{it[1]}) // Name sort BAM before passing to Salmon SAMTOOLS_SORT ( From af1b91c3faa908ebff8b8a8d9e40ac2ab33d896a Mon Sep 17 00:00:00 2001 From: Matthias Zepper Date: Tue, 11 Jun 2024 17:29:31 +0200 Subject: [PATCH 447/634] The output channel of fastq_fastqc_umitools_trimgalore/fastp is called 'umi_log' and not 'log'. The meta.yml is wrong. --- workflows/rnaseq/main.nf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/workflows/rnaseq/main.nf b/workflows/rnaseq/main.nf index aeb859ada..4eefce0ed 100755 --- a/workflows/rnaseq/main.nf +++ b/workflows/rnaseq/main.nf @@ -164,7 +164,7 @@ workflow RNASEQ { ch_filtered_reads = FASTQ_FASTQC_UMITOOLS_TRIMGALORE.out.reads ch_trim_read_count = FASTQ_FASTQC_UMITOOLS_TRIMGALORE.out.trim_read_count ch_multiqc_files = ch_multiqc_files.mix(FASTQ_FASTQC_UMITOOLS_TRIMGALORE.out.fastqc_zip.collect{it[1]}) // FastQC report - untrimmed - ch_multiqc_files = ch_multiqc_files.mix(FASTQ_FASTQC_UMITOOLS_TRIMGALORE.out.log.collect{it[1]}) // umi-tools extract logs + ch_multiqc_files = ch_multiqc_files.mix(FASTQ_FASTQC_UMITOOLS_TRIMGALORE.out.umi_log.collect{it[1]}) // umi-tools extract logs ch_multiqc_files = ch_multiqc_files.mix(FASTQ_FASTQC_UMITOOLS_TRIMGALORE.out.trim_zip.collect{it[1]}) // FastQC report - trimmed ch_multiqc_files = ch_multiqc_files.mix(FASTQ_FASTQC_UMITOOLS_TRIMGALORE.out.trim_log.collect{it[1]}) // Trim Galore! trimming report ch_versions = ch_versions.mix(FASTQ_FASTQC_UMITOOLS_TRIMGALORE.out.versions) From df3118273d33ffdfe0003374e183a0c8edfcecf4 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Thu, 20 Jun 2024 14:54:17 +0100 Subject: [PATCH 448/634] Mark FASTQC outputs with suffixes --- .../nf-core/fastq_fastqc_umitools_fastp/nextflow.config | 2 ++ .../nf-core/fastq_fastqc_umitools_trimgalore/nextflow.config | 1 + workflows/rnaseq/assets/multiqc/multiqc_config.yml | 4 ++-- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/subworkflows/nf-core/fastq_fastqc_umitools_fastp/nextflow.config b/subworkflows/nf-core/fastq_fastqc_umitools_fastp/nextflow.config index 564299abc..38685f1d0 100644 --- a/subworkflows/nf-core/fastq_fastqc_umitools_fastp/nextflow.config +++ b/subworkflows/nf-core/fastq_fastqc_umitools_fastp/nextflow.config @@ -3,6 +3,7 @@ if (!(params.skip_fastqc || params.skip_qc)) { process { withName: '.*:FASTQ_FASTQC_UMITOOLS_FASTP:FASTQC_RAW' { ext.args = '--quiet' + ext.prefix = { "${meta.id}_raw" } publishDir = [ path: { "${params.outdir}/fastqc/raw" }, mode: params.publish_dir_mode, @@ -12,6 +13,7 @@ if (!(params.skip_fastqc || params.skip_qc)) { withName: '.*:FASTQ_FASTQC_UMITOOLS_FASTP:FASTQC_TRIM' { ext.args = '--quiet' + ext.prefix = { "${meta.id}_trimmed" } publishDir = [ path: { "${params.outdir}/fastqc/trim" }, mode: params.publish_dir_mode, diff --git a/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/nextflow.config b/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/nextflow.config index 63a1eee09..c3937d2c4 100644 --- a/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/nextflow.config +++ b/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/nextflow.config @@ -3,6 +3,7 @@ if (!(params.skip_fastqc || params.skip_qc)) { process { withName: '.*:FASTQ_FASTQC_UMITOOLS_TRIMGALORE:FASTQC' { ext.args = '--quiet' + ext.prefix = { "${meta.id}_raw" } publishDir = [ path: { "${params.outdir}/fastqc/raw" }, mode: params.publish_dir_mode, diff --git a/workflows/rnaseq/assets/multiqc/multiqc_config.yml b/workflows/rnaseq/assets/multiqc/multiqc_config.yml index 91a858775..9b5facaa4 100644 --- a/workflows/rnaseq/assets/multiqc/multiqc_config.yml +++ b/workflows/rnaseq/assets/multiqc/multiqc_config.yml @@ -50,7 +50,7 @@ module_order: anchor: "fastqc_raw" info: "This section of the report shows FastQC results before adapter trimming." path_filters: - - "**/raw/*.zip" + - "*_raw_fastqc.zip" - cutadapt - fastp - fastqc: @@ -58,7 +58,7 @@ module_order: anchor: "fastqc_trimmed" info: "This section of the report shows FastQC results after adapter trimming." path_filters: - - "**/trim/*.zip" + - "*_trimmed_fastqc.zip" # Don't show % Dups in the General Stats table (we have this from Picard) table_columns_visible: From 8bca15a803e388d8172171a5292684af1561ab98 Mon Sep 17 00:00:00 2001 From: Matthias Zepper Date: Tue, 2 Jul 2024 16:42:43 +0200 Subject: [PATCH 449/634] @aanil (Anandashankar Anil) correctly pointed out that some MultiQC configuration parameters used in the config were deprecated. --- modules/nf-core/dupradar/templates/dupradar.r | 6 ------ .../rnaseq/assets/multiqc/deseq2_clustering_header.txt | 1 + workflows/rnaseq/assets/multiqc/multiqc_config.yml | 7 ++++--- 3 files changed, 5 insertions(+), 9 deletions(-) diff --git a/modules/nf-core/dupradar/templates/dupradar.r b/modules/nf-core/dupradar/templates/dupradar.r index 95e7b4d88..7653e5873 100755 --- a/modules/nf-core/dupradar/templates/dupradar.r +++ b/modules/nf-core/dupradar/templates/dupradar.r @@ -124,19 +124,13 @@ line="#id: dupradar # - color: 'green' # dash: 'LongDash' # label: -# style: {color: 'green'} # text: '0.5 RPKM' -# verticalAlign: 'bottom' -# y: -65 # value: 0.5 # width: 1 # - color: 'red' # dash: 'LongDash' # label: -# style: {color: 'red'} # text: '1 read/bp' -# verticalAlign: 'bottom' -# y: -65 # value: 1000 # width: 1" diff --git a/workflows/rnaseq/assets/multiqc/deseq2_clustering_header.txt b/workflows/rnaseq/assets/multiqc/deseq2_clustering_header.txt index c7bef7392..5e9ded7db 100644 --- a/workflows/rnaseq/assets/multiqc/deseq2_clustering_header.txt +++ b/workflows/rnaseq/assets/multiqc/deseq2_clustering_header.txt @@ -8,4 +8,5 @@ #anchor: 'deseq2_clustering' #pconfig: # title: 'DESeq2: Heatmap of the sample-to-sample distances' +# xlog: True # reverse_colors: True diff --git a/workflows/rnaseq/assets/multiqc/multiqc_config.yml b/workflows/rnaseq/assets/multiqc/multiqc_config.yml index 9b5facaa4..b892f7987 100644 --- a/workflows/rnaseq/assets/multiqc/multiqc_config.yml +++ b/workflows/rnaseq/assets/multiqc/multiqc_config.yml @@ -1,13 +1,14 @@ report_comment: > This report has been generated by the nf-core/rnaseq analysis pipeline. For information about how to interpret these results, please see the documentation. report_section_order: - "nf-core-rnaseq-methods-description": + "nf-core-rnaseq-methods-description-module": order: -1000 - software_versions: + "software_versions-module": order: -1001 - "nf-core-rnaseq-summary": + "nf-core-rnaseq-summary-module": order: -1002 + export_plots: true disable_version_detection: true From 6178e8cfa543cd1ef28d459b0ede11690c36fbc7 Mon Sep 17 00:00:00 2001 From: Matthias Zepper Date: Wed, 3 Jul 2024 14:23:33 +0200 Subject: [PATCH 450/634] Linting --- docs/usage.md | 14 +++++++------- workflows/rnaseq/assets/multiqc/multiqc_config.yml | 2 -- 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/docs/usage.md b/docs/usage.md index dce15907e..7aba570d4 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -146,13 +146,13 @@ The `--umitools_grouping_method` parameter affects [how similar, but non-identic #### Examples: -| UMI type | Source | Pipeline parameters | -| ------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- | -| In read name | [Illumina BCL convert >3.7.5](https://emea.support.illumina.com/content/dam/illumina-support/documents/documentation/software_documentation/bcl_convert/bcl-convert-v3-7-5-software-guide-1000000163594-00.pdf) | `--with_umi --skip_umi_extract --umitools_umi_separator ":"` | -| In sequence | [Lexogen QuantSeq® 3’ mRNA-Seq V2 FWD](https://www.lexogen.com/quantseq-3mrna-sequencing) + [UMI Second Strand Synthesis Module](https://faqs.lexogen.com/faq/how-can-i-add-umis-to-my-quantseq-libraries) | `--with_umi --umitools_extract_method "regex" --umitools_bc_pattern "^(?P.{6})(?P.{4}).*"` | -| In sequence | [Lexogen CORALL® Total RNA-Seq V1](https://www.lexogen.com/corall-total-rna-seq/)
    > _mind [Appendix H](https://www.lexogen.com/wp-content/uploads/2020/04/095UG190V0130_CORALL-Total-RNA-Seq_2020-03-31.pdf) regarding optional trimming_ | `--with_umi --umitools_extract_method "regex" --umitools_bc_pattern "^(?P.{12}).*"`
    Optional: `--clip_r2 9 --three_prime_clip_r2 12` | -| In sequence | [Takara Bio SMARTer® Stranded Total RNA-Seq Kit v3](https://www.takarabio.com/documents/User%20Manual/SMARTer%20Stranded%20Total%20RNA/SMARTer%20Stranded%20Total%20RNA-Seq%20Kit%20v3%20-%20Pico%20Input%20Mammalian%20User%20Manual-a_114949.pdf) | `--with_umi --umitools_extract_method "regex" --umitools_bc_pattern2 "^(?P.{8})(?P.{6}).*"` | -| In sequence | [Watchmaker mRNA Library Prep Kit](https://watchmakergenomics.com/wp-content/uploads/2023/11/M223_mRNA-Library-Prep-Kit-_UG_WMUG214_v1-1-0823.pdf) with [Twist UMI Adapter System](https://www.twistbioscience.com/sites/default/files/resources/2023-03/DOC-001337_TechNote-ProcessingSequencingDataUtilizingUMI-REV1-singles.pdf) | `--with_umi --umitools_extract_method "regex" --umitools_bc_pattern "^(?P.{5})(?P.{2}).*" --umitools_bc_pattern2 "^(?P.{5})(?P.{2}).*"` | +| UMI type | Source | Pipeline parameters | +| ------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| In read name | [Illumina BCL convert >3.7.5](https://emea.support.illumina.com/content/dam/illumina-support/documents/documentation/software_documentation/bcl_convert/bcl-convert-v3-7-5-software-guide-1000000163594-00.pdf) | `--with_umi --skip_umi_extract --umitools_umi_separator ":"` | +| In sequence | [Lexogen QuantSeq® 3’ mRNA-Seq V2 FWD](https://www.lexogen.com/quantseq-3mrna-sequencing) + [UMI Second Strand Synthesis Module](https://faqs.lexogen.com/faq/how-can-i-add-umis-to-my-quantseq-libraries) | `--with_umi --umitools_extract_method "regex" --umitools_bc_pattern "^(?P.{6})(?P.{4}).*"` | +| In sequence | [Lexogen CORALL® Total RNA-Seq V1](https://www.lexogen.com/corall-total-rna-seq/)
    > _mind [Appendix H](https://www.lexogen.com/wp-content/uploads/2020/04/095UG190V0130_CORALL-Total-RNA-Seq_2020-03-31.pdf) regarding optional trimming_ | `--with_umi --umitools_extract_method "regex" --umitools_bc_pattern "^(?P.{12}).*"`
    Optional: `--clip_r2 9 --three_prime_clip_r2 12` | +| In sequence | [Takara Bio SMARTer® Stranded Total RNA-Seq Kit v3](https://www.takarabio.com/documents/User%20Manual/SMARTer%20Stranded%20Total%20RNA/SMARTer%20Stranded%20Total%20RNA-Seq%20Kit%20v3%20-%20Pico%20Input%20Mammalian%20User%20Manual-a_114949.pdf) | `--with_umi --umitools_extract_method "regex" --umitools_bc_pattern2 "^(?P.{8})(?P.{6}).*"` | +| In sequence | [Watchmaker mRNA Library Prep Kit](https://watchmakergenomics.com/wp-content/uploads/2023/11/M223_mRNA-Library-Prep-Kit-_UG_WMUG214_v1-1-0823.pdf) with [Twist UMI Adapter System](https://www.twistbioscience.com/sites/default/files/resources/2023-03/DOC-001337_TechNote-ProcessingSequencingDataUtilizingUMI-REV1-singles.pdf) | `--with_umi --umitools_extract_method "regex" --umitools_bc_pattern "^(?P.{5})(?P.{2}).*" --umitools_bc_pattern2 "^(?P.{5})(?P.{2}).*"` | > _No warranty for the accuracy or completeness of the parameters is implied_ diff --git a/workflows/rnaseq/assets/multiqc/multiqc_config.yml b/workflows/rnaseq/assets/multiqc/multiqc_config.yml index b892f7987..c47a2e067 100644 --- a/workflows/rnaseq/assets/multiqc/multiqc_config.yml +++ b/workflows/rnaseq/assets/multiqc/multiqc_config.yml @@ -8,7 +8,6 @@ report_section_order: "nf-core-rnaseq-summary-module": order: -1002 - export_plots: true disable_version_detection: true @@ -153,7 +152,6 @@ sp: picard/wgs_metrics: skip: true - # See https://github.com/ewels/MultiQC_TestData/blob/master/data/custom_content/with_config/table_headerconfig/multiqc_config.yaml custom_data: fail_trimmed_samples: From 4dc5b67d2cabe50b38c574c4228a69f8427bdcc6 Mon Sep 17 00:00:00 2001 From: Matthias Zepper Date: Thu, 4 Jul 2024 11:45:19 +0200 Subject: [PATCH 451/634] Changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3da552eb6..750a30fbb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -82,6 +82,7 @@ Thank you to everyone else that has contributed by reporting bugs, enhancements - [PR #1304](https://github.com/nf-core/rnaseq/pull/1304) - Remove redundant gene TPM outputs - [PR #1306](https://github.com/nf-core/rnaseq/pull/1306) - Overhaul strandedness detection / comparison - [PR #1307](https://github.com/nf-core/rnaseq/pull/1307) - Clarify infer strandedness step in subway map and text +- [PR #1308](https://github.com/nf-core/rnaseq/pull/1308) - Various MultiQC issues: FastQC sections for raw and trimmed reads // umi-tools dedup and extraction plots, custom content styling. - [PR #1309](https://github.com/nf-core/rnaseq/pull/1309) - Document FASTP sampling - [PR #1310](https://github.com/nf-core/rnaseq/pull/1310) - Reinstate pseudoalignment subworkflow config - [PR #1312](https://github.com/nf-core/rnaseq/pull/1312) - Fix issues with unzipping of GTF/ GFF files without absolute paths From 37780ad64d67bee39f58e9289030d3561122ac47 Mon Sep 17 00:00:00 2001 From: maxulysse Date: Thu, 4 Jul 2024 12:27:16 +0200 Subject: [PATCH 452/634] add plugin --- nf-test.config | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/nf-test.config b/nf-test.config index f126b460a..0f4cac519 100644 --- a/nf-test.config +++ b/nf-test.config @@ -9,4 +9,9 @@ config { configFile "tests/nextflow.config" profile "test" + + // load the necessary plugins + plugins { + load "nft-bam@0.3.0" + } } From 150ac0b8ca84a8d651c06e03dddf220fe8a7f652 Mon Sep 17 00:00:00 2001 From: maxulysse Date: Thu, 4 Jul 2024 15:30:48 +0200 Subject: [PATCH 453/634] update all subworkflows --- modules.json | 4 +- .../tests/main.nf.test | 4 +- .../tests/main.nf.test.snap | 4 +- .../tests/main.nf.test | 4 +- .../tests/main.nf.test.snap | 155 ++++-------------- 5 files changed, 39 insertions(+), 132 deletions(-) diff --git a/modules.json b/modules.json index 6258955a8..c953f7e09 100644 --- a/modules.json +++ b/modules.json @@ -315,12 +315,12 @@ }, "fastq_fastqc_umitools_fastp": { "branch": "master", - "git_sha": "fbe341e9af0bb98533757f536b26d38507d31724", + "git_sha": "f3aef88fcb3101e404b8385dbabaaba06f898dc4", "installed_by": ["subworkflows"] }, "fastq_fastqc_umitools_trimgalore": { "branch": "master", - "git_sha": "fbe341e9af0bb98533757f536b26d38507d31724", + "git_sha": "f3aef88fcb3101e404b8385dbabaaba06f898dc4", "installed_by": ["subworkflows"] }, "fastq_subsample_fq_salmon": { diff --git a/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/main.nf.test b/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/main.nf.test index eaa6706f9..a60dbe305 100644 --- a/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/main.nf.test +++ b/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/main.nf.test @@ -345,9 +345,7 @@ nextflow_workflow { { assert !workflow.out.trim_html }, { assert !workflow.out.trim_log }, { assert snapshot( - // Because the input file is passed to the output file, we have to do check the filename only - file(workflow.out.reads.get(0).get(1).get(0)).name, - file(workflow.out.reads.get(0).get(1).get(1)).name, + // If we skip trimming then input is output, so not snapshotting workflow.out.adapter_seq, workflow.out.reads.get(0).get(0), // Reads meta map workflow.out.trim_json, diff --git a/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/main.nf.test.snap b/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/main.nf.test.snap index c151e08f4..426f3b930 100644 --- a/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/main.nf.test.snap +++ b/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/main.nf.test.snap @@ -687,8 +687,6 @@ }, "skip_trimming": { "content": [ - "test_1.fastq.gz", - "test_2.fastq.gz", [ ], @@ -719,7 +717,7 @@ "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-07-03T15:58:56.986224" + "timestamp": "2024-07-04T14:06:02.495425" }, "with_umi": { "content": [ diff --git a/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/tests/main.nf.test b/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/tests/main.nf.test index e777930ff..3fffd234b 100644 --- a/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/tests/main.nf.test +++ b/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/tests/main.nf.test @@ -255,8 +255,8 @@ nextflow_workflow { then { assertAll( - { assert workflow.success}, - { assert snapshot(workflow.out).match() } + { assert workflow.success} + // No snapshot when skipping all as output is input ) } } diff --git a/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/tests/main.nf.test.snap b/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/tests/main.nf.test.snap index a674546ec..f38ae9941 100644 --- a/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/tests/main.nf.test.snap +++ b/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/tests/main.nf.test.snap @@ -3,7 +3,7 @@ "content": [ { "0": [ - + ], "1": [ [ @@ -33,13 +33,13 @@ ] ], "4": [ - + ], "5": [ - + ], "6": [ - + ], "7": [ [ @@ -83,10 +83,10 @@ ] ], "reads": [ - + ], "trim_html": [ - + ], "trim_log": [ [ @@ -107,10 +107,10 @@ ] ], "trim_unpaired": [ - + ], "trim_zip": [ - + ], "umi_log": [ [ @@ -138,7 +138,7 @@ "content": [ { "0": [ - + ], "1": [ [ @@ -159,16 +159,16 @@ ] ], "3": [ - + ], "4": [ - + ], "5": [ - + ], "6": [ - + ], "7": [ [ @@ -214,10 +214,10 @@ ] ], "reads": [ - + ], "trim_html": [ - + ], "trim_log": [ [ @@ -241,13 +241,13 @@ ] ], "trim_unpaired": [ - + ], "trim_zip": [ - + ], "umi_log": [ - + ], "versions": [ "versions.yml:md5,0a5b8fa83ba29cf645bf9e9471cca150", @@ -285,7 +285,7 @@ ] ], [ - + ], [ "versions.yml:md5,0a5b8fa83ba29cf645bf9e9471cca150", @@ -298,95 +298,6 @@ }, "timestamp": "2024-07-03T14:13:11.46458" }, - "test skip all steps - stub": { - "content": [ - { - "0": [ - [ - { - "id": "test", - "single_end": false - }, - [ - "/nf-core/test-datasets/modules/data/genomics/sarscov2/illumina/fastq/test_1.fastq.gz", - "/nf-core/test-datasets/modules/data/genomics/sarscov2/illumina/fastq/test_2.fastq.gz" - ] - ] - ], - "1": [ - - ], - "2": [ - - ], - "3": [ - - ], - "4": [ - - ], - "5": [ - - ], - "6": [ - - ], - "7": [ - - ], - "8": [ - - ], - "9": [ - - ], - "fastqc_html": [ - - ], - "fastqc_zip": [ - - ], - "reads": [ - [ - { - "id": "test", - "single_end": false - }, - [ - "/nf-core/test-datasets/modules/data/genomics/sarscov2/illumina/fastq/test_1.fastq.gz", - "/nf-core/test-datasets/modules/data/genomics/sarscov2/illumina/fastq/test_2.fastq.gz" - ] - ] - ], - "trim_html": [ - - ], - "trim_log": [ - - ], - "trim_read_count": [ - - ], - "trim_unpaired": [ - - ], - "trim_zip": [ - - ], - "umi_log": [ - - ], - "versions": [ - - ] - } - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" - }, - "timestamp": "2024-07-03T14:14:15.060475" - }, "test single end read with UMI": { "content": [ [ @@ -408,7 +319,7 @@ ] ], [ - + ], [ "versions.yml:md5,0a5b8fa83ba29cf645bf9e9471cca150", @@ -443,7 +354,7 @@ ] ], [ - + ], [ "versions.yml:md5,0a5b8fa83ba29cf645bf9e9471cca150", @@ -460,13 +371,13 @@ "test skip all steps": { "content": [ [ - + ], [ - + ], [ - + ] ], "meta": { @@ -479,7 +390,7 @@ "content": [ { "0": [ - + ], "1": [ [ @@ -509,13 +420,13 @@ ] ], "4": [ - + ], "5": [ - + ], "6": [ - + ], "7": [ [ @@ -559,10 +470,10 @@ ] ], "reads": [ - + ], "trim_html": [ - + ], "trim_log": [ [ @@ -583,10 +494,10 @@ ] ], "trim_unpaired": [ - + ], "trim_zip": [ - + ], "umi_log": [ [ @@ -610,4 +521,4 @@ }, "timestamp": "2024-07-03T14:13:37.957993" } -} \ No newline at end of file +} From 9fd07daacbd0b474ad4332cffdad09d03252bf02 Mon Sep 17 00:00:00 2001 From: maxulysse Date: Thu, 4 Jul 2024 15:48:13 +0200 Subject: [PATCH 454/634] do not snapshot fastq in stub --- .../local/align_star/tests/main.nf.test | 32 +- .../local/align_star/tests/main.nf.test.snap | 848 ++++++------------ 2 files changed, 292 insertions(+), 588 deletions(-) diff --git a/subworkflows/local/align_star/tests/main.nf.test b/subworkflows/local/align_star/tests/main.nf.test index 3894e0eab..35b3236e8 100644 --- a/subworkflows/local/align_star/tests/main.nf.test +++ b/subworkflows/local/align_star/tests/main.nf.test @@ -206,7 +206,21 @@ nextflow_workflow { then { assertAll( { assert workflow.success}, - { assert snapshot(workflow.out).match()} + { assert snapshot( + workflow.out.bai, + workflow.out.bam, + workflow.out.bam_sorted, + workflow.out.bam_transcript, + workflow.out.csi, + workflow.out.flagstat, + workflow.out.idxstats, + workflow.out.log_final, + workflow.out.log_out, + workflow.out.log_progress, + workflow.out.orig_bam, + workflow.out.stats, + workflow.out.tab, + workflow.out.versions).match()} ) } } @@ -262,7 +276,21 @@ nextflow_workflow { then { assertAll( { assert workflow.success}, - { assert snapshot(workflow.out).match()} + { assert snapshot( + workflow.out.bai, + workflow.out.bam, + workflow.out.bam_sorted, + workflow.out.bam_transcript, + workflow.out.csi, + workflow.out.flagstat, + workflow.out.idxstats, + workflow.out.log_final, + workflow.out.log_out, + workflow.out.log_progress, + workflow.out.orig_bam, + workflow.out.stats, + workflow.out.tab, + workflow.out.versions).match()} ) } } diff --git a/subworkflows/local/align_star/tests/main.nf.test.snap b/subworkflows/local/align_star/tests/main.nf.test.snap index b16ec1528..19689cc0c 100644 --- a/subworkflows/local/align_star/tests/main.nf.test.snap +++ b/subworkflows/local/align_star/tests/main.nf.test.snap @@ -110,310 +110,148 @@ }, "star - no igenomes - stub": { "content": [ - { - "0": [ - [ - { - "id": "test", - "single_end": false - }, - [ - "test.Aligned.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e", - "test.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e", - "testXd.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ] - ], - "1": [ - [ - { - "id": "test", - "single_end": false - }, - "test.Log.final.out:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "10": [ - [ - { - "id": "test", - "single_end": false - }, - "test.bam.csi:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "11": [ - [ - { - "id": "test", - "single_end": false - }, - "test.stats:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "12": [ - [ - { - "id": "test", - "single_end": false - }, - "test.flagstat:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "13": [ - [ - { - "id": "test", - "single_end": false - }, - "test.idxstats:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "14": [ - "versions.yml:md5,06693106908e6f8f38a2c30accf7067d", - "versions.yml:md5,35c1cc21d26d9d8f00e6ec87e97fb634", - "versions.yml:md5,369619588c8c294b74dca9058a151b11", - "versions.yml:md5,78069d4515b04251f758ac52a49d9971", - "versions.yml:md5,b6a22ef369a375445a8f9313721b8092", - "versions.yml:md5,feaf798d368c662a7a1cea87a24a7434" - ], - "2": [ - [ - { - "id": "test", - "single_end": false - }, - "test.Log.out:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "3": [ - [ - { - "id": "test", - "single_end": false - }, - "test.Log.progress.out:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "4": [ - [ - { - "id": "test", - "single_end": false - }, - [ - "test.Aligned.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e", - "test.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ] - ], - "5": [ - [ - { - "id": "test", - "single_end": false - }, - "test.toTranscriptome.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "6": [ - [ - { - "id": "test", - "single_end": false - }, - [ - "/home/max/tests/6e361e57e6a3bdc7a9658b65cbbacd6/work/73/6a2c722d1aa03bee231bf0cd682855/test.unmapped_1.fastq.gz", - "/home/max/tests/6e361e57e6a3bdc7a9658b65cbbacd6/work/73/6a2c722d1aa03bee231bf0cd682855/test.unmapped_2.fastq.gz" - ] - ] - ], - "7": [ - [ - { - "id": "test", - "single_end": false - }, - [ - "test.ReadsPerGene.out.tab:md5,d41d8cd98f00b204e9800998ecf8427e", - "test.SJ.out.tab:md5,d41d8cd98f00b204e9800998ecf8427e", - "test.tab:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ] - ], - "8": [ - [ - { - "id": "test", - "single_end": false - }, - "test.bam:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "9": [ - [ - { - "id": "test", - "single_end": false - }, - "test.bam.bai:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "bai": [ - [ - { - "id": "test", - "single_end": false - }, - "test.bam.bai:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "bam": [ - [ - { - "id": "test", - "single_end": false - }, - "test.bam:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "bam_sorted": [ - [ - { - "id": "test", - "single_end": false - }, - [ - "test.Aligned.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e", - "test.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ] - ], - "bam_transcript": [ - [ - { - "id": "test", - "single_end": false - }, - "test.toTranscriptome.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "csi": [ - [ - { - "id": "test", - "single_end": false - }, - "test.bam.csi:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "fastq": [ - [ - { - "id": "test", - "single_end": false - }, - [ - "/home/max/tests/6e361e57e6a3bdc7a9658b65cbbacd6/work/73/6a2c722d1aa03bee231bf0cd682855/test.unmapped_1.fastq.gz", - "/home/max/tests/6e361e57e6a3bdc7a9658b65cbbacd6/work/73/6a2c722d1aa03bee231bf0cd682855/test.unmapped_2.fastq.gz" - ] - ] - ], - "flagstat": [ - [ - { - "id": "test", - "single_end": false - }, - "test.flagstat:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "idxstats": [ - [ - { - "id": "test", - "single_end": false - }, - "test.idxstats:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "log_final": [ - [ - { - "id": "test", - "single_end": false - }, - "test.Log.final.out:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "log_out": [ - [ - { - "id": "test", - "single_end": false - }, - "test.Log.out:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "log_progress": [ - [ - { - "id": "test", - "single_end": false - }, - "test.Log.progress.out:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "orig_bam": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test.bam.bai:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, [ - { - "id": "test", - "single_end": false - }, - [ - "test.Aligned.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e", - "test.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e", - "testXd.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e" - ] + "test.Aligned.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e" ] - ], - "stats": [ + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test.toTranscriptome.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test.bam.csi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test.flagstat:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test.idxstats:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test.Log.final.out:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test.Log.out:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test.Log.progress.out:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, [ - { - "id": "test", - "single_end": false - }, - "test.stats:md5,d41d8cd98f00b204e9800998ecf8427e" + "test.Aligned.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e", + "testXd.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e" ] - ], - "tab": [ + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test.stats:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, [ - { - "id": "test", - "single_end": false - }, - [ - "test.ReadsPerGene.out.tab:md5,d41d8cd98f00b204e9800998ecf8427e", - "test.SJ.out.tab:md5,d41d8cd98f00b204e9800998ecf8427e", - "test.tab:md5,d41d8cd98f00b204e9800998ecf8427e" - ] + "test.ReadsPerGene.out.tab:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.SJ.out.tab:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.tab:md5,d41d8cd98f00b204e9800998ecf8427e" ] - ], - "versions": [ - "versions.yml:md5,06693106908e6f8f38a2c30accf7067d", - "versions.yml:md5,35c1cc21d26d9d8f00e6ec87e97fb634", - "versions.yml:md5,369619588c8c294b74dca9058a151b11", - "versions.yml:md5,78069d4515b04251f758ac52a49d9971", - "versions.yml:md5,b6a22ef369a375445a8f9313721b8092", - "versions.yml:md5,feaf798d368c662a7a1cea87a24a7434" - ] - } + ] + ], + [ + "versions.yml:md5,06693106908e6f8f38a2c30accf7067d", + "versions.yml:md5,35c1cc21d26d9d8f00e6ec87e97fb634", + "versions.yml:md5,369619588c8c294b74dca9058a151b11", + "versions.yml:md5,78069d4515b04251f758ac52a49d9971", + "versions.yml:md5,b6a22ef369a375445a8f9313721b8092", + "versions.yml:md5,feaf798d368c662a7a1cea87a24a7434" + ] ], "meta": { "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-07-03T19:14:02.551656" + "timestamp": "2024-07-04T15:46:28.887728" }, "star - no igenomes": { "content": [ @@ -526,309 +364,147 @@ }, "star - with igenomes - stub": { "content": [ - { - "0": [ - [ - { - "id": "test", - "single_end": false - }, - [ - "test.Aligned.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e", - "test.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e", - "testXd.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ] - ], - "1": [ - [ - { - "id": "test", - "single_end": false - }, - "test.Log.final.out:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "10": [ - [ - { - "id": "test", - "single_end": false - }, - "test.bam.csi:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "11": [ - [ - { - "id": "test", - "single_end": false - }, - "test.stats:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "12": [ - [ - { - "id": "test", - "single_end": false - }, - "test.flagstat:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "13": [ - [ - { - "id": "test", - "single_end": false - }, - "test.idxstats:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "14": [ - "versions.yml:md5,06693106908e6f8f38a2c30accf7067d", - "versions.yml:md5,369619588c8c294b74dca9058a151b11", - "versions.yml:md5,78069d4515b04251f758ac52a49d9971", - "versions.yml:md5,b6a22ef369a375445a8f9313721b8092", - "versions.yml:md5,e3b043ba840d5bddde92f0bf1c91a5fc", - "versions.yml:md5,feaf798d368c662a7a1cea87a24a7434" - ], - "2": [ - [ - { - "id": "test", - "single_end": false - }, - "test.Log.out:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "3": [ - [ - { - "id": "test", - "single_end": false - }, - "test.Log.progress.out:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "4": [ - [ - { - "id": "test", - "single_end": false - }, - [ - "test.Aligned.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e", - "test.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ] - ], - "5": [ - [ - { - "id": "test", - "single_end": false - }, - "test.toTranscriptome.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "6": [ - [ - { - "id": "test", - "single_end": false - }, - [ - "/home/max/tests/6efdcb422a49d8bf15b844d59e0dc8a1/work/c5/785c660b2dd25edba26620a8b08b62/test.unmapped_1.fastq.gz", - "/home/max/tests/6efdcb422a49d8bf15b844d59e0dc8a1/work/c5/785c660b2dd25edba26620a8b08b62/test.unmapped_2.fastq.gz" - ] - ] - ], - "7": [ - [ - { - "id": "test", - "single_end": false - }, - [ - "test.ReadsPerGene.out.tab:md5,d41d8cd98f00b204e9800998ecf8427e", - "test.SJ.out.tab:md5,d41d8cd98f00b204e9800998ecf8427e", - "test.tab:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ] - ], - "8": [ - [ - { - "id": "test", - "single_end": false - }, - "test.bam:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "9": [ - [ - { - "id": "test", - "single_end": false - }, - "test.bam.bai:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "bai": [ - [ - { - "id": "test", - "single_end": false - }, - "test.bam.bai:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "bam": [ - [ - { - "id": "test", - "single_end": false - }, - "test.bam:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "bam_sorted": [ - [ - { - "id": "test", - "single_end": false - }, - [ - "test.Aligned.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e", - "test.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ] - ], - "bam_transcript": [ - [ - { - "id": "test", - "single_end": false - }, - "test.toTranscriptome.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "csi": [ - [ - { - "id": "test", - "single_end": false - }, - "test.bam.csi:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "fastq": [ - [ - { - "id": "test", - "single_end": false - }, - [ - "/home/max/tests/6efdcb422a49d8bf15b844d59e0dc8a1/work/c5/785c660b2dd25edba26620a8b08b62/test.unmapped_1.fastq.gz", - "/home/max/tests/6efdcb422a49d8bf15b844d59e0dc8a1/work/c5/785c660b2dd25edba26620a8b08b62/test.unmapped_2.fastq.gz" - ] - ] - ], - "flagstat": [ - [ - { - "id": "test", - "single_end": false - }, - "test.flagstat:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "idxstats": [ - [ - { - "id": "test", - "single_end": false - }, - "test.idxstats:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "log_final": [ - [ - { - "id": "test", - "single_end": false - }, - "test.Log.final.out:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "log_out": [ - [ - { - "id": "test", - "single_end": false - }, - "test.Log.out:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "log_progress": [ - [ - { - "id": "test", - "single_end": false - }, - "test.Log.progress.out:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "orig_bam": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test.bam.bai:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, [ - { - "id": "test", - "single_end": false - }, - [ - "test.Aligned.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e", - "test.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e", - "testXd.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e" - ] + "test.Aligned.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e" ] - ], - "stats": [ + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test.toTranscriptome.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test.bam.csi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test.flagstat:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test.idxstats:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test.Log.final.out:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test.Log.out:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test.Log.progress.out:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, [ - { - "id": "test", - "single_end": false - }, - "test.stats:md5,d41d8cd98f00b204e9800998ecf8427e" + "test.Aligned.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e", + "testXd.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e" ] - ], - "tab": [ + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test.stats:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, [ - { - "id": "test", - "single_end": false - }, - [ - "test.ReadsPerGene.out.tab:md5,d41d8cd98f00b204e9800998ecf8427e", - "test.SJ.out.tab:md5,d41d8cd98f00b204e9800998ecf8427e", - "test.tab:md5,d41d8cd98f00b204e9800998ecf8427e" - ] + "test.ReadsPerGene.out.tab:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.SJ.out.tab:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.tab:md5,d41d8cd98f00b204e9800998ecf8427e" ] - ], - "versions": [ - "versions.yml:md5,06693106908e6f8f38a2c30accf7067d", - "versions.yml:md5,369619588c8c294b74dca9058a151b11", - "versions.yml:md5,78069d4515b04251f758ac52a49d9971", - "versions.yml:md5,b6a22ef369a375445a8f9313721b8092", - "versions.yml:md5,e3b043ba840d5bddde92f0bf1c91a5fc", - "versions.yml:md5,feaf798d368c662a7a1cea87a24a7434" - ] - } + ] + ], + [ + "versions.yml:md5,06693106908e6f8f38a2c30accf7067d", + "versions.yml:md5,369619588c8c294b74dca9058a151b11", + "versions.yml:md5,78069d4515b04251f758ac52a49d9971", + "versions.yml:md5,b6a22ef369a375445a8f9313721b8092", + "versions.yml:md5,e3b043ba840d5bddde92f0bf1c91a5fc", + "versions.yml:md5,feaf798d368c662a7a1cea87a24a7434" + ] ], "meta": { "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-07-03T19:14:26.732738" + "timestamp": "2024-07-04T15:46:52.513122" } } \ No newline at end of file From 2cdeea17cb17ed365b553788c8649fed14384214 Mon Sep 17 00:00:00 2001 From: maxulysse Date: Thu, 4 Jul 2024 16:41:23 +0200 Subject: [PATCH 455/634] pipeline level stub --- tests/default.nf.test | 18 +++++++++++++++++- tests/default.nf.test.snap | 16 +++++++++++++--- 2 files changed, 30 insertions(+), 4 deletions(-) diff --git a/tests/default.nf.test b/tests/default.nf.test index b790c4d9e..9c4058785 100644 --- a/tests/default.nf.test +++ b/tests/default.nf.test @@ -47,7 +47,23 @@ nextflow_pipeline { then { assertAll( { assert workflow.success }, - { assert snapshot(workflow.out).match() } + { assert snapshot( + UTILS.removeNextflowVersion("$outputDir/pipeline_info/nf_core_rnaseq_software_mqc_versions.yml"), + // path("${params.outdir}/custom/out/genome_gfp.fasta"), + // path("${params.outdir}/custom/out/genome_gfp.gtf"), + // path("${params.outdir}/salmon/salmon.merged.transcript_counts.tsv"), + // path("${params.outdir}/star_salmon/bigwig/RAP1_IAA_30M_REP1.forward.bigWig"), + // path("${params.outdir}/star_salmon/bigwig/RAP1_IAA_30M_REP1.reverse.bigWig"), + // path("${params.outdir}/star_salmon/bigwig/RAP1_UNINDUCED_REP1.forward.bigWig"), + // path("${params.outdir}/star_salmon/bigwig/RAP1_UNINDUCED_REP1.reverse.bigWig"), + // path("${params.outdir}/star_salmon/bigwig/RAP1_UNINDUCED_REP2.forward.bigWig"), + // path("${params.outdir}/star_salmon/bigwig/RAP1_UNINDUCED_REP2.reverse.bigWig"), + // path("${params.outdir}/star_salmon/bigwig/WT_REP1.forward.bigWig"), + // path("${params.outdir}/star_salmon/bigwig/WT_REP1.reverse.bigWig"), + // path("${params.outdir}/star_salmon/bigwig/WT_REP2.forward.bigWig"), + // path("${params.outdir}/star_salmon/bigwig/WT_REP2.reverse.bigWig") + ).match() + } ) } } diff --git a/tests/default.nf.test.snap b/tests/default.nf.test.snap index a5ae50f64..9c423280b 100644 --- a/tests/default.nf.test.snap +++ b/tests/default.nf.test.snap @@ -1,10 +1,20 @@ { + "Params: default - stub": { + "content": [ + "{BBMAP_BBSPLIT={bbmap=39.01}, CAT_FASTQ={cat=8.3}, CUSTOM_CATADDITIONALFASTA={python=null}, CUSTOM_GETCHROMSIZES={getchromsizes=1.2}, FASTQC={fastqc=0.12.1}, GTF2BED={perl=5.26.2}, GTF_FILTER={python=3.9.5}, GUNZIP_ADDITIONAL_FASTA={gunzip=1.1}, GUNZIP_GTF={gunzip=1.1}, STAR_GENOMEGENERATE={star=2.7.10a, samtools=1.18, gawk=5.1.0}, TRIMGALORE={trimgalore=0.6.7, cutadapt=3.4}, UNTAR_SALMON_INDEX={untar=1.3}, Workflow={nf-core/rnaseq=v3.15.0dev}}" + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-04T16:40:43.259347" + }, "Params: default": { "content": [ "{BBMAP_BBSPLIT={bbmap=39.01}, BEDTOOLS_GENOMECOV_FW={bedtools=2.31.1}, CAT_FASTQ={cat=8.3}, CUSTOM_CATADDITIONALFASTA={python=3.9.5}, CUSTOM_GETCHROMSIZES={getchromsizes=1.2}, CUSTOM_TX2GENE={python=3.9.5}, DESEQ2_QC_PSEUDO={r-base=4.0.3, bioconductor-deseq2=1.28.0}, DESEQ2_QC_STAR_SALMON={r-base=4.0.3, bioconductor-deseq2=1.28.0}, DUPRADAR={bioconductor-dupradar=1.32.0}, FASTQC={fastqc=0.12.1}, FQ_SUBSAMPLE={fq=0.9.1 (2022-02-22)}, GTF2BED={perl=5.26.2}, GTF_FILTER={python=3.9.5}, GUNZIP_ADDITIONAL_FASTA={gunzip=1.1}, GUNZIP_GTF={gunzip=1.1}, MULTIQC_CUSTOM_BIOTYPE={python=3.9.5}, PICARD_MARKDUPLICATES={picard=3.1.1}, QUALIMAP_RNASEQ={qualimap=2.3}, RSEQC_BAMSTAT={rseqc=5.0.2}, RSEQC_INFEREXPERIMENT={rseqc=5.0.2}, RSEQC_INNERDISTANCE={rseqc=5.0.2}, RSEQC_JUNCTIONANNOTATION={rseqc=5.0.2}, RSEQC_JUNCTIONSATURATION={rseqc=5.0.2}, RSEQC_READDISTRIBUTION={rseqc=5.0.2}, RSEQC_READDUPLICATION={rseqc=5.0.2}, SALMON_QUANT={salmon=1.10.1}, SAMTOOLS_FLAGSTAT={samtools=1.2}, SAMTOOLS_IDXSTATS={samtools=1.2}, SAMTOOLS_INDEX={samtools=1.2}, SAMTOOLS_SORT={samtools=1.2}, SAMTOOLS_STATS={samtools=1.2}, SE_GENE={bioconductor-summarizedexperiment=1.32.0}, STAR_ALIGN={star=2.7.10a, samtools=1.18, gawk=5.1.0}, STAR_GENOMEGENERATE={star=2.7.10a, samtools=1.18, gawk=5.1.0}, STRINGTIE_STRINGTIE={stringtie=2.2.1}, SUBREAD_FEATURECOUNTS={subread=2.0.1}, TRIMGALORE={trimgalore=0.6.7, cutadapt=3.4}, TXIMETA_TXIMPORT={bioconductor-tximeta=1.20.1}, UCSC_BEDCLIP={ucsc=377}, UCSC_BEDGRAPHTOBIGWIG={ucsc=445}, UNTAR_SALMON_INDEX={untar=1.3}, Workflow={nf-core/rnaseq=v3.15.0dev}}", "genome_gfp.fasta:md5,e23e302af63736a199985a169fdac055", "genome_gfp.gtf:md5,c98b12c302f15731bfc36bcf297cfe28", - "salmon.merged.transcript_counts.tsv:md5,2023d27cee50a4044aed3274bf07e55f", + "salmon.merged.transcript_counts.tsv:md5,ff0f5be09ca7a322672c0074ba35da17", "RAP1_IAA_30M_REP1.forward.bigWig:md5,0abafd7a9f9035469c003fd3dabd73e8", "RAP1_IAA_30M_REP1.reverse.bigWig:md5,0f1e9ac71fc0b99785f06ecb860ef00e", "RAP1_UNINDUCED_REP1.forward.bigWig:md5,09e8d65e21ac92e9a3b78afe3acdf28b", @@ -20,6 +30,6 @@ "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-07-03T20:09:15.070821" + "timestamp": "2024-07-04T16:22:13.448933" } -} +} \ No newline at end of file From 3c78a6a39651a1d32571be469bdb5cb6a705209b Mon Sep 17 00:00:00 2001 From: maxulysse Date: Thu, 4 Jul 2024 17:11:26 +0200 Subject: [PATCH 456/634] fix stub test for prepare_genome --- .../local/prepare_genome/tests/main.nf.test | 310 +- .../prepare_genome/tests/main.nf.test.snap | 3600 +++++------------ 2 files changed, 1244 insertions(+), 2666 deletions(-) diff --git a/subworkflows/local/prepare_genome/tests/main.nf.test b/subworkflows/local/prepare_genome/tests/main.nf.test index 9930f8f3f..4ef118242 100644 --- a/subworkflows/local/prepare_genome/tests/main.nf.test +++ b/subworkflows/local/prepare_genome/tests/main.nf.test @@ -340,7 +340,7 @@ nextflow_workflow { } } - test("skip_psuedo_alignment") { + test("skip_pseudo_alignment") { when { workflow { @@ -1394,7 +1394,22 @@ nextflow_workflow { then { assertAll( { assert workflow.success}, - { assert snapshot(workflow.out).match() } + { assert snapshot( + workflow.out.chrom_sizes, + workflow.out.fai, + workflow.out.fasta, + workflow.out.gene_bed, + workflow.out.gtf, + workflow.out.hisat2_index, + workflow.out.kallisto_index, + workflow.out.rsem_index, + workflow.out.salmon_index, + workflow.out.sortmerna_index, + workflow.out.splicesites, + workflow.out.star_index, + workflow.out.transcript_fasta, + workflow.out.versions + ).match() } ) } } @@ -1448,7 +1463,22 @@ nextflow_workflow { then { assertAll( { assert workflow.success}, - { assert snapshot(workflow.out).match() } + { assert snapshot( + workflow.out.chrom_sizes, + workflow.out.fai, + workflow.out.fasta, + workflow.out.gene_bed, + workflow.out.gtf, + workflow.out.hisat2_index, + workflow.out.kallisto_index, + workflow.out.rsem_index, + workflow.out.salmon_index, + workflow.out.sortmerna_index, + workflow.out.splicesites, + workflow.out.star_index, + workflow.out.transcript_fasta, + workflow.out.versions + ).match() } ) } } @@ -1502,7 +1532,22 @@ nextflow_workflow { then { assertAll( { assert workflow.success}, - { assert snapshot(workflow.out).match() } + { assert snapshot( + workflow.out.chrom_sizes, + workflow.out.fai, + workflow.out.fasta, + workflow.out.gene_bed, + workflow.out.gtf, + workflow.out.hisat2_index, + workflow.out.kallisto_index, + workflow.out.rsem_index, + workflow.out.salmon_index, + workflow.out.sortmerna_index, + workflow.out.splicesites, + workflow.out.star_index, + workflow.out.transcript_fasta, + workflow.out.versions + ).match() } ) } } @@ -1610,12 +1655,27 @@ nextflow_workflow { then { assertAll( { assert workflow.success}, - { assert snapshot(workflow.out).match() } + { assert snapshot( + workflow.out.chrom_sizes, + workflow.out.fai, + workflow.out.fasta, + workflow.out.gene_bed, + workflow.out.gtf, + workflow.out.hisat2_index, + workflow.out.kallisto_index, + workflow.out.rsem_index, + workflow.out.salmon_index, + workflow.out.sortmerna_index, + workflow.out.splicesites, + workflow.out.star_index, + workflow.out.transcript_fasta, + workflow.out.versions + ).match() } ) } } - test("skip_psuedo_alignment - stub") { + test("skip_pseudo_alignment - stub") { options "-stub" @@ -1664,7 +1724,22 @@ nextflow_workflow { then { assertAll( { assert workflow.success}, - { assert snapshot(workflow.out).match() } + { assert snapshot( + workflow.out.chrom_sizes, + workflow.out.fai, + workflow.out.fasta, + workflow.out.gene_bed, + workflow.out.gtf, + workflow.out.hisat2_index, + workflow.out.kallisto_index, + workflow.out.rsem_index, + workflow.out.salmon_index, + workflow.out.sortmerna_index, + workflow.out.splicesites, + workflow.out.star_index, + workflow.out.transcript_fasta, + workflow.out.versions + ).match() } ) } } @@ -1718,7 +1793,22 @@ nextflow_workflow { then { assertAll( { assert workflow.success}, - { assert snapshot(workflow.out).match() } + { assert snapshot( + workflow.out.chrom_sizes, + workflow.out.fai, + workflow.out.fasta, + workflow.out.gene_bed, + workflow.out.gtf, + workflow.out.hisat2_index, + workflow.out.kallisto_index, + workflow.out.rsem_index, + workflow.out.salmon_index, + workflow.out.sortmerna_index, + workflow.out.splicesites, + workflow.out.star_index, + workflow.out.transcript_fasta, + workflow.out.versions + ).match() } ) } } @@ -1772,7 +1862,22 @@ nextflow_workflow { then { assertAll( { assert workflow.success}, - { assert snapshot(workflow.out).match() } + { assert snapshot( + workflow.out.chrom_sizes, + workflow.out.fai, + workflow.out.fasta, + workflow.out.gene_bed, + workflow.out.gtf, + workflow.out.hisat2_index, + workflow.out.kallisto_index, + workflow.out.rsem_index, + workflow.out.salmon_index, + workflow.out.sortmerna_index, + workflow.out.splicesites, + workflow.out.star_index, + workflow.out.transcript_fasta, + workflow.out.versions + ).match() } ) } } @@ -1826,7 +1931,22 @@ nextflow_workflow { then { assertAll( { assert workflow.success}, - { assert snapshot(workflow.out).match() } + { assert snapshot( + workflow.out.chrom_sizes, + workflow.out.fai, + workflow.out.fasta, + workflow.out.gene_bed, + workflow.out.gtf, + workflow.out.hisat2_index, + workflow.out.kallisto_index, + workflow.out.rsem_index, + workflow.out.salmon_index, + workflow.out.sortmerna_index, + workflow.out.splicesites, + workflow.out.star_index, + workflow.out.transcript_fasta, + workflow.out.versions + ).match() } ) } } @@ -1880,7 +2000,22 @@ nextflow_workflow { then { assertAll( { assert workflow.success}, - { assert snapshot(workflow.out).match() } + { assert snapshot( + workflow.out.chrom_sizes, + workflow.out.fai, + workflow.out.fasta, + workflow.out.gene_bed, + workflow.out.gtf, + workflow.out.hisat2_index, + workflow.out.kallisto_index, + workflow.out.rsem_index, + workflow.out.salmon_index, + workflow.out.sortmerna_index, + workflow.out.splicesites, + workflow.out.star_index, + workflow.out.transcript_fasta, + workflow.out.versions + ).match() } ) } } @@ -1934,7 +2069,22 @@ nextflow_workflow { then { assertAll( { assert workflow.success}, - { assert snapshot(workflow.out).match() } + { assert snapshot( + workflow.out.chrom_sizes, + workflow.out.fai, + workflow.out.fasta, + workflow.out.gene_bed, + workflow.out.gtf, + workflow.out.hisat2_index, + workflow.out.kallisto_index, + workflow.out.rsem_index, + workflow.out.salmon_index, + workflow.out.sortmerna_index, + workflow.out.splicesites, + workflow.out.star_index, + workflow.out.transcript_fasta, + workflow.out.versions + ).match() } ) } } @@ -1988,7 +2138,22 @@ nextflow_workflow { then { assertAll( { assert workflow.success}, - { assert snapshot(workflow.out).match() } + { assert snapshot( + workflow.out.chrom_sizes, + workflow.out.fai, + workflow.out.fasta, + workflow.out.gene_bed, + workflow.out.gtf, + workflow.out.hisat2_index, + workflow.out.kallisto_index, + workflow.out.rsem_index, + workflow.out.salmon_index, + workflow.out.sortmerna_index, + workflow.out.splicesites, + workflow.out.star_index, + workflow.out.transcript_fasta, + workflow.out.versions + ).match() } ) } } @@ -2042,7 +2207,22 @@ nextflow_workflow { then { assertAll( { assert workflow.success}, - { assert snapshot(workflow.out).match() } + { assert snapshot( + workflow.out.chrom_sizes, + workflow.out.fai, + workflow.out.fasta, + workflow.out.gene_bed, + workflow.out.gtf, + workflow.out.hisat2_index, + workflow.out.kallisto_index, + workflow.out.rsem_index, + workflow.out.salmon_index, + workflow.out.sortmerna_index, + workflow.out.splicesites, + workflow.out.star_index, + workflow.out.transcript_fasta, + workflow.out.versions + ).match() } ) } } @@ -2096,7 +2276,22 @@ nextflow_workflow { then { assertAll( { assert workflow.success}, - { assert snapshot(workflow.out).match() } + { assert snapshot( + workflow.out.chrom_sizes, + workflow.out.fai, + workflow.out.fasta, + workflow.out.gene_bed, + workflow.out.gtf, + workflow.out.hisat2_index, + workflow.out.kallisto_index, + workflow.out.rsem_index, + workflow.out.salmon_index, + workflow.out.sortmerna_index, + workflow.out.splicesites, + workflow.out.star_index, + workflow.out.transcript_fasta, + workflow.out.versions + ).match() } ) } } @@ -2150,7 +2345,22 @@ nextflow_workflow { then { assertAll( { assert workflow.success}, - { assert snapshot(workflow.out).match() } + { assert snapshot( + workflow.out.chrom_sizes, + workflow.out.fai, + workflow.out.fasta, + workflow.out.gene_bed, + workflow.out.gtf, + workflow.out.hisat2_index, + workflow.out.kallisto_index, + workflow.out.rsem_index, + workflow.out.salmon_index, + workflow.out.sortmerna_index, + workflow.out.splicesites, + workflow.out.star_index, + workflow.out.transcript_fasta, + workflow.out.versions + ).match() } ) } } @@ -2204,7 +2414,22 @@ nextflow_workflow { then { assertAll( { assert workflow.success}, - { assert snapshot(workflow.out).match() } + { assert snapshot( + workflow.out.chrom_sizes, + workflow.out.fai, + workflow.out.fasta, + workflow.out.gene_bed, + workflow.out.gtf, + workflow.out.hisat2_index, + workflow.out.kallisto_index, + workflow.out.rsem_index, + workflow.out.salmon_index, + workflow.out.sortmerna_index, + workflow.out.splicesites, + workflow.out.star_index, + workflow.out.transcript_fasta, + workflow.out.versions + ).match() } ) } } @@ -2258,7 +2483,22 @@ nextflow_workflow { then { assertAll( { assert workflow.success}, - { assert snapshot(workflow.out).match() } + { assert snapshot( + workflow.out.chrom_sizes, + workflow.out.fai, + workflow.out.fasta, + workflow.out.gene_bed, + workflow.out.gtf, + workflow.out.hisat2_index, + workflow.out.kallisto_index, + workflow.out.rsem_index, + workflow.out.salmon_index, + workflow.out.sortmerna_index, + workflow.out.splicesites, + workflow.out.star_index, + workflow.out.transcript_fasta, + workflow.out.versions + ).match() } ) } } @@ -2366,7 +2606,22 @@ nextflow_workflow { then { assertAll( { assert workflow.success}, - { assert snapshot(workflow.out).match() } + { assert snapshot( + workflow.out.chrom_sizes, + workflow.out.fai, + workflow.out.fasta, + workflow.out.gene_bed, + workflow.out.gtf, + workflow.out.hisat2_index, + workflow.out.kallisto_index, + workflow.out.rsem_index, + workflow.out.salmon_index, + workflow.out.sortmerna_index, + workflow.out.splicesites, + workflow.out.star_index, + workflow.out.transcript_fasta, + workflow.out.versions + ).match() } ) } } @@ -2420,7 +2675,22 @@ nextflow_workflow { then { assertAll( { assert workflow.success}, - { assert snapshot(workflow.out).match() } + { assert snapshot( + workflow.out.chrom_sizes, + workflow.out.fai, + workflow.out.fasta, + workflow.out.gene_bed, + workflow.out.gtf, + workflow.out.hisat2_index, + workflow.out.kallisto_index, + workflow.out.rsem_index, + workflow.out.salmon_index, + workflow.out.sortmerna_index, + workflow.out.splicesites, + workflow.out.star_index, + workflow.out.transcript_fasta, + workflow.out.versions + ).match() } ) } } diff --git a/subworkflows/local/prepare_genome/tests/main.nf.test.snap b/subworkflows/local/prepare_genome/tests/main.nf.test.snap index 49e63111f..e0d3c690b 100644 --- a/subworkflows/local/prepare_genome/tests/main.nf.test.snap +++ b/subworkflows/local/prepare_genome/tests/main.nf.test.snap @@ -1,150 +1,112 @@ { "skip_gtf_filter = true - stub": { "content": [ - { - "0": [ - "genome_transcriptome.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "1": [ - "genome_transcriptome.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "10": [ - - ], - "11": [ - - ], - "12": [ - "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" - ], - "13": [ - - ], - "14": [ - "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", - "versions.yml:md5,71252f1a221be05593361acccb99506b", - "versions.yml:md5,bc99889446f02427c166b3219b793672", - "versions.yml:md5,cc8f32b7c37c35a075d38cb773004eaa" - ], - "2": [ - "genome_transcriptome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "3": [ - "genome_transcriptome.bed:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "4": [ - "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" - ], - "5": [ - "genome_transcriptome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "6": [ - - ], - "7": [ - [ - [ - [ - [ - "chr1.chrom.gz:md5,4752b2fa140165e41b5d0be484b2180c", - "info.txt:md5,ff21ca1661c3715cf51c8bed9c521ba4", - "merged_ref_8374379829187813017.fa.gz:md5,5b42850f6d96e66571ae9d29f74505de", - "namelist.txt:md5,2d3a23e005f63d34a85297a5a4baf421", - "reflist.txt:md5,ed5a2571a3d7d1e82ba69b3de48ca20e", - "scaffolds.txt.gz:md5,83f7385941b559ab887587737e4b6973", - "summary.txt:md5,0ad80f6094fb7dfc688602537af01a1f" - ] - ], - [ - [ - "chr1_index_k13_c13_b1.block:md5,900a1be9d0cd47826eb9fefe8c8c96b1", - "chr1_index_k13_c13_b1.block2.gz:md5,eefc669b62e2cb94dbb94031a7bde4fd" - ] - ] - ] - ] - ], - "8": [ - - ], - "9": [ - - ], - "bbsplit_index": [ - [ - [ - [ - [ - "chr1.chrom.gz:md5,4752b2fa140165e41b5d0be484b2180c", - "info.txt:md5,ff21ca1661c3715cf51c8bed9c521ba4", - "merged_ref_8374379829187813017.fa.gz:md5,5b42850f6d96e66571ae9d29f74505de", - "namelist.txt:md5,2d3a23e005f63d34a85297a5a4baf421", - "reflist.txt:md5,ed5a2571a3d7d1e82ba69b3de48ca20e", - "scaffolds.txt.gz:md5,83f7385941b559ab887587737e4b6973", - "summary.txt:md5,0ad80f6094fb7dfc688602537af01a1f" - ] - ], - [ - [ - "chr1_index_k13_c13_b1.block:md5,900a1be9d0cd47826eb9fefe8c8c96b1", - "chr1_index_k13_c13_b1.block2.gz:md5,eefc669b62e2cb94dbb94031a7bde4fd" - ] - ] - ] - ] - ], - "chrom_sizes": [ - "genome_transcriptome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "fai": [ - "genome_transcriptome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "fasta": [ - "genome_transcriptome.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "gene_bed": [ - "genome_transcriptome.bed:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "gtf": [ - "genome_transcriptome.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "hisat2_index": [ - - ], - "kallisto_index": [ - - ], - "rsem_index": [ - - ], - "salmon_index": [ - "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" - ], - "sortmerna_index": [ - - ], - "splicesites": [ - - ], - "star_index": [ - - ], - "transcript_fasta": [ - "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" - ], - "versions": [ - "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", - "versions.yml:md5,71252f1a221be05593361acccb99506b", - "versions.yml:md5,bc99889446f02427c166b3219b793672", - "versions.yml:md5,cc8f32b7c37c35a075d38cb773004eaa" - ] - } + [ + "genome_transcriptome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + "genome_transcriptome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + "genome_transcriptome.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + "genome_transcriptome.bed:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + "genome_transcriptome.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + + ], + [ + + ], + [ + + ], + [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" + ], + [ + + ], + [ + + ], + [ + + ], + [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" + ], + [ + "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", + "versions.yml:md5,71252f1a221be05593361acccb99506b", + "versions.yml:md5,bc99889446f02427c166b3219b793672", + "versions.yml:md5,cc8f32b7c37c35a075d38cb773004eaa" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-04T17:03:34.032908" + }, + "skip_pseudo_alignment - stub": { + "content": [ + [ + "genome_transcriptome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + "genome_transcriptome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + "genome_transcriptome.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + "genome_transcriptome.bed:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + "genome_transcriptome.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + + ], + [ + + ], + [ + + ], + [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" + ], + [ + + ], + [ + + ], + [ + + ], + [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" + ], + [ + "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", + "versions.yml:md5,71252f1a221be05593361acccb99506b", + "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", + "versions.yml:md5,bc99889446f02427c166b3219b793672", + "versions.yml:md5,cc8f32b7c37c35a075d38cb773004eaa" + ] ], "meta": { "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-07-03T19:39:03.795766" + "timestamp": "2024-07-04T16:59:05.328944" }, "skip_gtf_filter": { "content": [ @@ -202,599 +164,223 @@ }, "gencode = false - stub": { "content": [ - { - "0": [ - "genome_transcriptome.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "1": [ - "genome_transcriptome.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "10": [ - - ], - "11": [ - - ], - "12": [ - "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" - ], - "13": [ - - ], - "14": [ - "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", - "versions.yml:md5,71252f1a221be05593361acccb99506b", - "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", - "versions.yml:md5,bc99889446f02427c166b3219b793672", - "versions.yml:md5,cc8f32b7c37c35a075d38cb773004eaa" - ], - "2": [ - "genome_transcriptome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "3": [ - "genome_transcriptome.bed:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "4": [ - "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" - ], - "5": [ - "genome_transcriptome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "6": [ - - ], - "7": [ - [ - [ - [ - [ - "chr1.chrom.gz:md5,4752b2fa140165e41b5d0be484b2180c", - "info.txt:md5,f6995be9f1b4620d245d877677813899", - "merged_ref_8374379829187813017.fa.gz:md5,5b42850f6d96e66571ae9d29f74505de", - "namelist.txt:md5,2d3a23e005f63d34a85297a5a4baf421", - "reflist.txt:md5,619cf9500c8d08a4a1c4492c86cc2cc6", - "scaffolds.txt.gz:md5,ba5a8e2f33600a6096cd78e278dc4177", - "summary.txt:md5,c70ab9debd60bb845aaf2d967e4e2d42" - ] - ], - [ - [ - "chr1_index_k13_c13_b1.block:md5,900a1be9d0cd47826eb9fefe8c8c96b1", - "chr1_index_k13_c13_b1.block2.gz:md5,eefc669b62e2cb94dbb94031a7bde4fd" - ] - ] - ] - ] - ], - "8": [ - - ], - "9": [ - - ], - "bbsplit_index": [ - [ - [ - [ - [ - "chr1.chrom.gz:md5,4752b2fa140165e41b5d0be484b2180c", - "info.txt:md5,f6995be9f1b4620d245d877677813899", - "merged_ref_8374379829187813017.fa.gz:md5,5b42850f6d96e66571ae9d29f74505de", - "namelist.txt:md5,2d3a23e005f63d34a85297a5a4baf421", - "reflist.txt:md5,619cf9500c8d08a4a1c4492c86cc2cc6", - "scaffolds.txt.gz:md5,ba5a8e2f33600a6096cd78e278dc4177", - "summary.txt:md5,c70ab9debd60bb845aaf2d967e4e2d42" - ] - ], - [ - [ - "chr1_index_k13_c13_b1.block:md5,900a1be9d0cd47826eb9fefe8c8c96b1", - "chr1_index_k13_c13_b1.block2.gz:md5,eefc669b62e2cb94dbb94031a7bde4fd" - ] - ] - ] - ] - ], - "chrom_sizes": [ - "genome_transcriptome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "fai": [ - "genome_transcriptome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "fasta": [ - "genome_transcriptome.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "gene_bed": [ - "genome_transcriptome.bed:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "gtf": [ - "genome_transcriptome.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "hisat2_index": [ - - ], - "kallisto_index": [ - - ], - "rsem_index": [ - - ], - "salmon_index": [ - "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" - ], - "sortmerna_index": [ - - ], - "splicesites": [ - - ], - "star_index": [ - - ], - "transcript_fasta": [ - "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" - ], - "versions": [ - "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", - "versions.yml:md5,71252f1a221be05593361acccb99506b", - "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", - "versions.yml:md5,bc99889446f02427c166b3219b793672", - "versions.yml:md5,cc8f32b7c37c35a075d38cb773004eaa" - ] - } + [ + "genome_transcriptome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + "genome_transcriptome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + "genome_transcriptome.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + "genome_transcriptome.bed:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + "genome_transcriptome.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + + ], + [ + + ], + [ + + ], + [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" + ], + [ + + ], + [ + + ], + [ + + ], + [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" + ], + [ + "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", + "versions.yml:md5,71252f1a221be05593361acccb99506b", + "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", + "versions.yml:md5,bc99889446f02427c166b3219b793672", + "versions.yml:md5,cc8f32b7c37c35a075d38cb773004eaa" + ] ], "meta": { "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-07-03T19:23:29.154378" + "timestamp": "2024-07-04T16:57:20.218814" }, "gff = false - stub": { "content": [ - { - "0": [ - "genome_transcriptome.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "1": [ - "genome_transcriptome.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "10": [ - - ], - "11": [ - - ], - "12": [ - "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" - ], - "13": [ - - ], - "14": [ - "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", - "versions.yml:md5,71252f1a221be05593361acccb99506b", - "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", - "versions.yml:md5,bc99889446f02427c166b3219b793672", - "versions.yml:md5,cc8f32b7c37c35a075d38cb773004eaa" - ], - "2": [ - "genome_transcriptome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "3": [ - "genome_transcriptome.bed:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "4": [ - "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" - ], - "5": [ - "genome_transcriptome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "6": [ - - ], - "7": [ - [ - [ - [ - [ - "chr1.chrom.gz:md5,4752b2fa140165e41b5d0be484b2180c", - "info.txt:md5,728011f382bc05efff4c18b1acb8818d", - "merged_ref_8374379829187813017.fa.gz:md5,5b42850f6d96e66571ae9d29f74505de", - "namelist.txt:md5,2d3a23e005f63d34a85297a5a4baf421", - "reflist.txt:md5,b82f80d913d5a32e3a6d0a4b2f08d1e9", - "scaffolds.txt.gz:md5,154edf7156f585a464c8d70655ae9da4", - "summary.txt:md5,fdbca2f815e370c347993b6e1cd73d92" - ] - ], - [ - [ - "chr1_index_k13_c13_b1.block:md5,900a1be9d0cd47826eb9fefe8c8c96b1", - "chr1_index_k13_c13_b1.block2.gz:md5,eefc669b62e2cb94dbb94031a7bde4fd" - ] - ] - ] - ] - ], - "8": [ - - ], - "9": [ - - ], - "bbsplit_index": [ - [ - [ - [ - [ - "chr1.chrom.gz:md5,4752b2fa140165e41b5d0be484b2180c", - "info.txt:md5,728011f382bc05efff4c18b1acb8818d", - "merged_ref_8374379829187813017.fa.gz:md5,5b42850f6d96e66571ae9d29f74505de", - "namelist.txt:md5,2d3a23e005f63d34a85297a5a4baf421", - "reflist.txt:md5,b82f80d913d5a32e3a6d0a4b2f08d1e9", - "scaffolds.txt.gz:md5,154edf7156f585a464c8d70655ae9da4", - "summary.txt:md5,fdbca2f815e370c347993b6e1cd73d92" - ] - ], - [ - [ - "chr1_index_k13_c13_b1.block:md5,900a1be9d0cd47826eb9fefe8c8c96b1", - "chr1_index_k13_c13_b1.block2.gz:md5,eefc669b62e2cb94dbb94031a7bde4fd" - ] - ] - ] - ] - ], - "chrom_sizes": [ - "genome_transcriptome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "fai": [ - "genome_transcriptome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "fasta": [ - "genome_transcriptome.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "gene_bed": [ - "genome_transcriptome.bed:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "gtf": [ - "genome_transcriptome.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "hisat2_index": [ - - ], - "kallisto_index": [ - - ], - "rsem_index": [ - - ], - "salmon_index": [ - "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" - ], - "sortmerna_index": [ - - ], - "splicesites": [ - - ], - "star_index": [ - - ], - "transcript_fasta": [ - "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" - ], - "versions": [ - "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", - "versions.yml:md5,71252f1a221be05593361acccb99506b", - "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", - "versions.yml:md5,bc99889446f02427c166b3219b793672", - "versions.yml:md5,cc8f32b7c37c35a075d38cb773004eaa" - ] - } + [ + "genome_transcriptome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + "genome_transcriptome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + "genome_transcriptome.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + "genome_transcriptome.bed:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + "genome_transcriptome.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + + ], + [ + + ], + [ + + ], + [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" + ], + [ + + ], + [ + + ], + [ + + ], + [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" + ], + [ + "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", + "versions.yml:md5,71252f1a221be05593361acccb99506b", + "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", + "versions.yml:md5,bc99889446f02427c166b3219b793672", + "versions.yml:md5,cc8f32b7c37c35a075d38cb773004eaa" + ] ], "meta": { "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-07-03T19:27:31.747271" + "timestamp": "2024-07-04T16:59:55.589832" }, "skip_pseudoalignment = true - stub": { "content": [ - { - "0": [ - "genome_transcriptome.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "1": [ - "genome_transcriptome.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "10": [ - - ], - "11": [ - - ], - "12": [ - "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" - ], - "13": [ - - ], - "14": [ - "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", - "versions.yml:md5,71252f1a221be05593361acccb99506b", - "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", - "versions.yml:md5,bc99889446f02427c166b3219b793672", - "versions.yml:md5,cc8f32b7c37c35a075d38cb773004eaa" - ], - "2": [ - "genome_transcriptome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "3": [ - "genome_transcriptome.bed:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "4": [ - "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" - ], - "5": [ - "genome_transcriptome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "6": [ - - ], - "7": [ - [ - [ - [ - [ - "chr1.chrom.gz:md5,4752b2fa140165e41b5d0be484b2180c", - "info.txt:md5,6a55f1924c832d886e6b7eb87036af1c", - "merged_ref_8374379829187813017.fa.gz:md5,5b42850f6d96e66571ae9d29f74505de", - "namelist.txt:md5,2d3a23e005f63d34a85297a5a4baf421", - "reflist.txt:md5,7e60f60ac09e56c770375e42c0db189c", - "scaffolds.txt.gz:md5,4ad2145d816844900d53995b1ace9910", - "summary.txt:md5,1b00923bbe3ba56635d1fc491933ea88" - ] - ], - [ - [ - "chr1_index_k13_c13_b1.block:md5,900a1be9d0cd47826eb9fefe8c8c96b1", - "chr1_index_k13_c13_b1.block2.gz:md5,eefc669b62e2cb94dbb94031a7bde4fd" - ] - ] - ] - ] - ], - "8": [ - - ], - "9": [ - - ], - "bbsplit_index": [ - [ - [ - [ - [ - "chr1.chrom.gz:md5,4752b2fa140165e41b5d0be484b2180c", - "info.txt:md5,6a55f1924c832d886e6b7eb87036af1c", - "merged_ref_8374379829187813017.fa.gz:md5,5b42850f6d96e66571ae9d29f74505de", - "namelist.txt:md5,2d3a23e005f63d34a85297a5a4baf421", - "reflist.txt:md5,7e60f60ac09e56c770375e42c0db189c", - "scaffolds.txt.gz:md5,4ad2145d816844900d53995b1ace9910", - "summary.txt:md5,1b00923bbe3ba56635d1fc491933ea88" - ] - ], - [ - [ - "chr1_index_k13_c13_b1.block:md5,900a1be9d0cd47826eb9fefe8c8c96b1", - "chr1_index_k13_c13_b1.block2.gz:md5,eefc669b62e2cb94dbb94031a7bde4fd" - ] - ] - ] - ] - ], - "chrom_sizes": [ - "genome_transcriptome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "fai": [ - "genome_transcriptome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "fasta": [ - "genome_transcriptome.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "gene_bed": [ - "genome_transcriptome.bed:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "gtf": [ - "genome_transcriptome.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "hisat2_index": [ - - ], - "kallisto_index": [ - - ], - "rsem_index": [ - - ], - "salmon_index": [ - "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" - ], - "sortmerna_index": [ - - ], - "splicesites": [ - - ], - "star_index": [ - - ], - "transcript_fasta": [ - "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" - ], - "versions": [ - "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", - "versions.yml:md5,71252f1a221be05593361acccb99506b", - "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", - "versions.yml:md5,bc99889446f02427c166b3219b793672", - "versions.yml:md5,cc8f32b7c37c35a075d38cb773004eaa" - ] - } + [ + "genome_transcriptome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + "genome_transcriptome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + "genome_transcriptome.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + "genome_transcriptome.bed:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + "genome_transcriptome.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + + ], + [ + + ], + [ + + ], + [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" + ], + [ + + ], + [ + + ], + [ + + ], + [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" + ], + [ + "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", + "versions.yml:md5,71252f1a221be05593361acccb99506b", + "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", + "versions.yml:md5,bc99889446f02427c166b3219b793672", + "versions.yml:md5,cc8f32b7c37c35a075d38cb773004eaa" + ] ], "meta": { "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-07-03T19:44:32.636525" + "timestamp": "2024-07-04T17:04:46.509423" }, "featurecounts_group_type = 'gene_type' - stub": { "content": [ - { - "0": [ - "genome_transcriptome.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "1": [ - "genome_transcriptome.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "10": [ - - ], - "11": [ - - ], - "12": [ - "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" - ], - "13": [ - - ], - "14": [ - "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", - "versions.yml:md5,71252f1a221be05593361acccb99506b", - "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", - "versions.yml:md5,bc99889446f02427c166b3219b793672", - "versions.yml:md5,cc8f32b7c37c35a075d38cb773004eaa" - ], - "2": [ - "genome_transcriptome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "3": [ - "genome_transcriptome.bed:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "4": [ - "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" - ], - "5": [ - "genome_transcriptome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "6": [ - - ], - "7": [ - [ - [ - [ - [ - "chr1.chrom.gz:md5,4752b2fa140165e41b5d0be484b2180c", - "info.txt:md5,0be88ce559437c1c1487895db50b72fa", - "merged_ref_8374379829187813017.fa.gz:md5,5b42850f6d96e66571ae9d29f74505de", - "namelist.txt:md5,2d3a23e005f63d34a85297a5a4baf421", - "reflist.txt:md5,e0bac54f247bc8cbaeb7f590436cb755", - "scaffolds.txt.gz:md5,64be7ab10dbb6be4a6dfbecb3c12f8d4", - "summary.txt:md5,b2d42a7d6781509f1f5f987e61250c0e" - ] - ], - [ - [ - "chr1_index_k13_c13_b1.block:md5,900a1be9d0cd47826eb9fefe8c8c96b1", - "chr1_index_k13_c13_b1.block2.gz:md5,eefc669b62e2cb94dbb94031a7bde4fd" - ] - ] - ] - ] - ], - "8": [ - - ], - "9": [ - - ], - "bbsplit_index": [ - [ - [ - [ - [ - "chr1.chrom.gz:md5,4752b2fa140165e41b5d0be484b2180c", - "info.txt:md5,0be88ce559437c1c1487895db50b72fa", - "merged_ref_8374379829187813017.fa.gz:md5,5b42850f6d96e66571ae9d29f74505de", - "namelist.txt:md5,2d3a23e005f63d34a85297a5a4baf421", - "reflist.txt:md5,e0bac54f247bc8cbaeb7f590436cb755", - "scaffolds.txt.gz:md5,64be7ab10dbb6be4a6dfbecb3c12f8d4", - "summary.txt:md5,b2d42a7d6781509f1f5f987e61250c0e" - ] - ], - [ - [ - "chr1_index_k13_c13_b1.block:md5,900a1be9d0cd47826eb9fefe8c8c96b1", - "chr1_index_k13_c13_b1.block2.gz:md5,eefc669b62e2cb94dbb94031a7bde4fd" - ] - ] - ] - ] - ], - "chrom_sizes": [ - "genome_transcriptome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "fai": [ - "genome_transcriptome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "fasta": [ - "genome_transcriptome.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "gene_bed": [ - "genome_transcriptome.bed:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "gtf": [ - "genome_transcriptome.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "hisat2_index": [ - - ], - "kallisto_index": [ - - ], - "rsem_index": [ - - ], - "salmon_index": [ - "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" - ], - "sortmerna_index": [ - - ], - "splicesites": [ - - ], - "star_index": [ - - ], - "transcript_fasta": [ - "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" - ], - "versions": [ - "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", - "versions.yml:md5,71252f1a221be05593361acccb99506b", - "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", - "versions.yml:md5,bc99889446f02427c166b3219b793672", - "versions.yml:md5,cc8f32b7c37c35a075d38cb773004eaa" - ] - } + [ + "genome_transcriptome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + "genome_transcriptome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + "genome_transcriptome.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + "genome_transcriptome.bed:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + "genome_transcriptome.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + + ], + [ + + ], + [ + + ], + [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" + ], + [ + + ], + [ + + ], + [ + + ], + [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" + ], + [ + "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", + "versions.yml:md5,71252f1a221be05593361acccb99506b", + "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", + "versions.yml:md5,bc99889446f02427c166b3219b793672", + "versions.yml:md5,cc8f32b7c37c35a075d38cb773004eaa" + ] ], "meta": { "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-07-03T19:37:24.728833" + "timestamp": "2024-07-04T17:03:09.069637" }, "gtf = false": { "content": [ @@ -963,152 +549,58 @@ }, "salmon_index = false - stub": { "content": [ - { - "0": [ - "genome_transcriptome.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "1": [ - "genome_transcriptome.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "10": [ - - ], - "11": [ - - ], - "12": [ - - ], - "13": [ - - ], - "14": [ - "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", - "versions.yml:md5,71252f1a221be05593361acccb99506b", - "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", - "versions.yml:md5,bc99889446f02427c166b3219b793672", - "versions.yml:md5,cc8f32b7c37c35a075d38cb773004eaa" - ], - "2": [ - "genome_transcriptome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "3": [ - "genome_transcriptome.bed:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "4": [ - "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" - ], - "5": [ - "genome_transcriptome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "6": [ - - ], - "7": [ - [ - [ - [ - [ - "chr1.chrom.gz:md5,4752b2fa140165e41b5d0be484b2180c", - "info.txt:md5,bf3c9d0cb29c9b7f0389112dd11343db", - "merged_ref_8374379829187813017.fa.gz:md5,5b42850f6d96e66571ae9d29f74505de", - "namelist.txt:md5,2d3a23e005f63d34a85297a5a4baf421", - "reflist.txt:md5,fc824ec5e2f11d87c2119973f9037462", - "scaffolds.txt.gz:md5,669e27fe4d0f3486c2fb4b5fa9a490d2", - "summary.txt:md5,5ee81fd517a9ea0f68a3b2f52511b642" - ] - ], - [ - [ - "chr1_index_k13_c13_b1.block:md5,900a1be9d0cd47826eb9fefe8c8c96b1", - "chr1_index_k13_c13_b1.block2.gz:md5,eefc669b62e2cb94dbb94031a7bde4fd" - ] - ] - ] - ] - ], - "8": [ - - ], - "9": [ - - ], - "bbsplit_index": [ - [ - [ - [ - [ - "chr1.chrom.gz:md5,4752b2fa140165e41b5d0be484b2180c", - "info.txt:md5,bf3c9d0cb29c9b7f0389112dd11343db", - "merged_ref_8374379829187813017.fa.gz:md5,5b42850f6d96e66571ae9d29f74505de", - "namelist.txt:md5,2d3a23e005f63d34a85297a5a4baf421", - "reflist.txt:md5,fc824ec5e2f11d87c2119973f9037462", - "scaffolds.txt.gz:md5,669e27fe4d0f3486c2fb4b5fa9a490d2", - "summary.txt:md5,5ee81fd517a9ea0f68a3b2f52511b642" - ] - ], - [ - [ - "chr1_index_k13_c13_b1.block:md5,900a1be9d0cd47826eb9fefe8c8c96b1", - "chr1_index_k13_c13_b1.block2.gz:md5,eefc669b62e2cb94dbb94031a7bde4fd" - ] - ] - ] - ] - ], - "chrom_sizes": [ - "genome_transcriptome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "fai": [ - "genome_transcriptome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "fasta": [ - "genome_transcriptome.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "gene_bed": [ - "genome_transcriptome.bed:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "gtf": [ - "genome_transcriptome.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "hisat2_index": [ - - ], - "kallisto_index": [ - - ], - "rsem_index": [ - - ], - "salmon_index": [ - - ], - "sortmerna_index": [ - - ], - "splicesites": [ - - ], - "star_index": [ - - ], - "transcript_fasta": [ - "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" - ], - "versions": [ - "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", - "versions.yml:md5,71252f1a221be05593361acccb99506b", - "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", - "versions.yml:md5,bc99889446f02427c166b3219b793672", - "versions.yml:md5,cc8f32b7c37c35a075d38cb773004eaa" - ] - } + [ + "genome_transcriptome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + "genome_transcriptome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + "genome_transcriptome.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + "genome_transcriptome.bed:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + "genome_transcriptome.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" + ], + [ + "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", + "versions.yml:md5,71252f1a221be05593361acccb99506b", + "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", + "versions.yml:md5,bc99889446f02427c166b3219b793672", + "versions.yml:md5,cc8f32b7c37c35a075d38cb773004eaa" + ] ], "meta": { "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-07-03T19:32:51.953735" + "timestamp": "2024-07-04T17:01:54.475669" }, "skip_alignment": { "content": [ @@ -1167,150 +659,57 @@ }, "gfp = false - stub": { "content": [ - { - "0": [ - "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/genome.fasta" - ], - "1": [ - "genome.filtered.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "10": [ - - ], - "11": [ - - ], - "12": [ - "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" - ], - "13": [ - - ], - "14": [ - "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", - "versions.yml:md5,71252f1a221be05593361acccb99506b", - "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", - "versions.yml:md5,bc99889446f02427c166b3219b793672" - ], - "2": [ - "genome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "3": [ - "genome.filtered.bed:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "4": [ - "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" - ], - "5": [ - "genome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "6": [ - - ], - "7": [ - [ - [ - [ - [ - "chr1.chrom.gz:md5,f13e8a518175502a7080e4faa6e979d7", - "info.txt:md5,20203c48e35dd890040194d2a1900585", - "merged_ref_8374379829187813017.fa.gz:md5,b8b1bd9eccad6ef6bab0afbf9cef7652", - "namelist.txt:md5,2d3a23e005f63d34a85297a5a4baf421", - "reflist.txt:md5,3ca45f5b545ba9a791f02801d92cb016", - "scaffolds.txt.gz:md5,ce75cea9860d283d47f6544651fa500f", - "summary.txt:md5,377ed2dc597233890de8824bf15caa3e" - ] - ], - [ - [ - "chr1_index_k13_c12_b1.block:md5,ef41bb3e410ac9c8d8fa64642ab21da2", - "chr1_index_k13_c12_b1.block2.gz:md5,63c9bad0f53336d948293fb145e42e8c" - ] - ] - ] - ] - ], - "8": [ - - ], - "9": [ - - ], - "bbsplit_index": [ - [ - [ - [ - [ - "chr1.chrom.gz:md5,f13e8a518175502a7080e4faa6e979d7", - "info.txt:md5,20203c48e35dd890040194d2a1900585", - "merged_ref_8374379829187813017.fa.gz:md5,b8b1bd9eccad6ef6bab0afbf9cef7652", - "namelist.txt:md5,2d3a23e005f63d34a85297a5a4baf421", - "reflist.txt:md5,3ca45f5b545ba9a791f02801d92cb016", - "scaffolds.txt.gz:md5,ce75cea9860d283d47f6544651fa500f", - "summary.txt:md5,377ed2dc597233890de8824bf15caa3e" - ] - ], - [ - [ - "chr1_index_k13_c12_b1.block:md5,ef41bb3e410ac9c8d8fa64642ab21da2", - "chr1_index_k13_c12_b1.block2.gz:md5,63c9bad0f53336d948293fb145e42e8c" - ] - ] - ] - ] - ], - "chrom_sizes": [ - "genome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "fai": [ - "genome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "fasta": [ - "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/genome.fasta" - ], - "gene_bed": [ - "genome.filtered.bed:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "gtf": [ - "genome.filtered.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "hisat2_index": [ - - ], - "kallisto_index": [ - - ], - "rsem_index": [ - - ], - "salmon_index": [ - "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" - ], - "sortmerna_index": [ - - ], - "splicesites": [ - - ], - "star_index": [ - - ], - "transcript_fasta": [ - "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" - ], - "versions": [ - "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", - "versions.yml:md5,71252f1a221be05593361acccb99506b", - "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", - "versions.yml:md5,bc99889446f02427c166b3219b793672" - ] - } + [ + "genome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + "genome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/genome.fasta" + ], + [ + "genome.filtered.bed:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + "genome.filtered.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + + ], + [ + + ], + [ + + ], + [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" + ], + [ + + ], + [ + + ], + [ + + ], + [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" + ], + [ + "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", + "versions.yml:md5,71252f1a221be05593361acccb99506b", + "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", + "versions.yml:md5,bc99889446f02427c166b3219b793672" + ] ], "meta": { "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-07-03T19:28:25.628623" + "timestamp": "2024-07-04T17:00:21.318155" }, "gencode = false": { "content": [ @@ -1424,303 +823,114 @@ }, "gencode = true - stub": { "content": [ - { - "0": [ - "genome_transcriptome.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "1": [ - "genome_transcriptome.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "10": [ - - ], - "11": [ - - ], - "12": [ - "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" - ], - "13": [ - - ], - "14": [ - "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", - "versions.yml:md5,71252f1a221be05593361acccb99506b", - "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", - "versions.yml:md5,961ab91198c4e6ec9d795b95e3f61fda", - "versions.yml:md5,bc99889446f02427c166b3219b793672", - "versions.yml:md5,cc8f32b7c37c35a075d38cb773004eaa" - ], - "2": [ - "genome_transcriptome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "3": [ - "genome_transcriptome.bed:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "4": [ - "transcriptome.fixed.fa:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "5": [ - "genome_transcriptome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "6": [ - - ], - "7": [ - [ - [ - [ - [ - "chr1.chrom.gz:md5,4752b2fa140165e41b5d0be484b2180c", - "info.txt:md5,60a0dde12e2cfaccec8237e06983f667", - "merged_ref_8374379829187813017.fa.gz:md5,5b42850f6d96e66571ae9d29f74505de", - "namelist.txt:md5,2d3a23e005f63d34a85297a5a4baf421", - "reflist.txt:md5,c83c42a89990e73c3d3d0076b62bf8eb", - "scaffolds.txt.gz:md5,ecd1d6db45a75a62780a0dd548f33fb7", - "summary.txt:md5,26394dcbc43ad157332ad04e57de8b5d" - ] - ], - [ - [ - "chr1_index_k13_c13_b1.block:md5,900a1be9d0cd47826eb9fefe8c8c96b1", - "chr1_index_k13_c13_b1.block2.gz:md5,eefc669b62e2cb94dbb94031a7bde4fd" - ] - ] - ] - ] - ], - "8": [ - - ], - "9": [ - - ], - "bbsplit_index": [ - [ - [ - [ - [ - "chr1.chrom.gz:md5,4752b2fa140165e41b5d0be484b2180c", - "info.txt:md5,60a0dde12e2cfaccec8237e06983f667", - "merged_ref_8374379829187813017.fa.gz:md5,5b42850f6d96e66571ae9d29f74505de", - "namelist.txt:md5,2d3a23e005f63d34a85297a5a4baf421", - "reflist.txt:md5,c83c42a89990e73c3d3d0076b62bf8eb", - "scaffolds.txt.gz:md5,ecd1d6db45a75a62780a0dd548f33fb7", - "summary.txt:md5,26394dcbc43ad157332ad04e57de8b5d" - ] - ], - [ - [ - "chr1_index_k13_c13_b1.block:md5,900a1be9d0cd47826eb9fefe8c8c96b1", - "chr1_index_k13_c13_b1.block2.gz:md5,eefc669b62e2cb94dbb94031a7bde4fd" - ] - ] - ] - ] - ], - "chrom_sizes": [ - "genome_transcriptome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "fai": [ - "genome_transcriptome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "fasta": [ - "genome_transcriptome.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "gene_bed": [ - "genome_transcriptome.bed:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "gtf": [ - "genome_transcriptome.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "hisat2_index": [ - - ], - "kallisto_index": [ - - ], - "rsem_index": [ - - ], - "salmon_index": [ - "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" - ], - "sortmerna_index": [ - - ], - "splicesites": [ - - ], - "star_index": [ - - ], - "transcript_fasta": [ - "transcriptome.fixed.fa:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "versions": [ - "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", - "versions.yml:md5,71252f1a221be05593361acccb99506b", - "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", - "versions.yml:md5,961ab91198c4e6ec9d795b95e3f61fda", - "versions.yml:md5,bc99889446f02427c166b3219b793672", - "versions.yml:md5,cc8f32b7c37c35a075d38cb773004eaa" - ] - } + [ + "genome_transcriptome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + "genome_transcriptome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + "genome_transcriptome.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + "genome_transcriptome.bed:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + "genome_transcriptome.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + + ], + [ + + ], + [ + + ], + [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" + ], + [ + + ], + [ + + ], + [ + + ], + [ + "transcriptome.fixed.fa:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", + "versions.yml:md5,71252f1a221be05593361acccb99506b", + "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", + "versions.yml:md5,961ab91198c4e6ec9d795b95e3f61fda", + "versions.yml:md5,bc99889446f02427c166b3219b793672", + "versions.yml:md5,cc8f32b7c37c35a075d38cb773004eaa" + ] ], "meta": { "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-07-03T19:35:49.545122" + "timestamp": "2024-07-04T17:02:45.316528" }, "skip_alignment - stub": { "content": [ - { - "0": [ - "genome_transcriptome.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "1": [ - "genome_transcriptome.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "10": [ - - ], - "11": [ - - ], - "12": [ - "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" - ], - "13": [ - - ], - "14": [ - "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", - "versions.yml:md5,71252f1a221be05593361acccb99506b", - "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", - "versions.yml:md5,bc99889446f02427c166b3219b793672", - "versions.yml:md5,cc8f32b7c37c35a075d38cb773004eaa" - ], - "2": [ - "genome_transcriptome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "3": [ - "genome_transcriptome.bed:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "4": [ - "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" - ], - "5": [ - "genome_transcriptome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "6": [ - - ], - "7": [ - [ - [ - [ - [ - "chr1.chrom.gz:md5,4752b2fa140165e41b5d0be484b2180c", - "info.txt:md5,7edc9a52f4853753935d8f6ca68d4fe8", - "merged_ref_8374379829187813017.fa.gz:md5,5b42850f6d96e66571ae9d29f74505de", - "namelist.txt:md5,2d3a23e005f63d34a85297a5a4baf421", - "reflist.txt:md5,2766c2f885412fa0f771437717d86e19", - "scaffolds.txt.gz:md5,82e8ff4c12d6d73dc62aff221d9041a7", - "summary.txt:md5,a127795da9210b8ab751554e6fbe4185" - ] - ], - [ - [ - "chr1_index_k13_c13_b1.block:md5,900a1be9d0cd47826eb9fefe8c8c96b1", - "chr1_index_k13_c13_b1.block2.gz:md5,eefc669b62e2cb94dbb94031a7bde4fd" - ] - ] - ] - ] - ], - "8": [ - - ], - "9": [ - - ], - "bbsplit_index": [ - [ - [ - [ - [ - "chr1.chrom.gz:md5,4752b2fa140165e41b5d0be484b2180c", - "info.txt:md5,7edc9a52f4853753935d8f6ca68d4fe8", - "merged_ref_8374379829187813017.fa.gz:md5,5b42850f6d96e66571ae9d29f74505de", - "namelist.txt:md5,2d3a23e005f63d34a85297a5a4baf421", - "reflist.txt:md5,2766c2f885412fa0f771437717d86e19", - "scaffolds.txt.gz:md5,82e8ff4c12d6d73dc62aff221d9041a7", - "summary.txt:md5,a127795da9210b8ab751554e6fbe4185" - ] - ], - [ - [ - "chr1_index_k13_c13_b1.block:md5,900a1be9d0cd47826eb9fefe8c8c96b1", - "chr1_index_k13_c13_b1.block2.gz:md5,eefc669b62e2cb94dbb94031a7bde4fd" - ] - ] - ] - ] - ], - "chrom_sizes": [ - "genome_transcriptome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "fai": [ - "genome_transcriptome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "fasta": [ - "genome_transcriptome.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "gene_bed": [ - "genome_transcriptome.bed:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "gtf": [ - "genome_transcriptome.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "hisat2_index": [ - - ], - "kallisto_index": [ - - ], - "rsem_index": [ - - ], - "salmon_index": [ - "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" - ], - "sortmerna_index": [ - - ], - "splicesites": [ - - ], - "star_index": [ - - ], - "transcript_fasta": [ - "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" - ], - "versions": [ - "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", - "versions.yml:md5,71252f1a221be05593361acccb99506b", - "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", - "versions.yml:md5,bc99889446f02427c166b3219b793672", - "versions.yml:md5,cc8f32b7c37c35a075d38cb773004eaa" - ] - } + [ + "genome_transcriptome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + "genome_transcriptome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + "genome_transcriptome.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + "genome_transcriptome.bed:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + "genome_transcriptome.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + + ], + [ + + ], + [ + + ], + [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" + ], + [ + + ], + [ + + ], + [ + + ], + [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" + ], + [ + "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", + "versions.yml:md5,71252f1a221be05593361acccb99506b", + "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", + "versions.yml:md5,bc99889446f02427c166b3219b793672", + "versions.yml:md5,cc8f32b7c37c35a075d38cb773004eaa" + ] ], "meta": { "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-07-03T19:25:15.611876" + "timestamp": "2024-07-04T16:58:40.569654" }, "skip_bbsplit = true - stub": { "content": [ @@ -1827,12 +1037,177 @@ "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-07-03T19:40:48.402507" + "timestamp": "2024-07-03T19:40:48.402507" + }, + "transcriptome = false": { + "content": [ + [ + "genome.transcripts.fa:md5,b89a3e02ad30ba3fd600f98c8e2f58d4" + ], + [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" + ], + [ + "genome_gfp.fasta:md5,e23e302af63736a199985a169fdac055" + ], + [ + "genome_gfp.gtf:md5,c98b12c302f15731bfc36bcf297cfe28" + ], + [ + "genome_gfp.fasta.fai:md5,8fa54c6bd2ea6a369efbb8ab4f30156a" + ], + [ + "genome_gfp.bed:md5,991993ebef1def1d5823632c21177ec3" + ], + [ + "genome_gfp.fasta.sizes:md5,9b755f8f349b14accefb4d859f84de26" + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", + "versions.yml:md5,1cd265cb86a23a27f683ffb2459f37f5", + "versions.yml:md5,71252f1a221be05593361acccb99506b", + "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", + "versions.yml:md5,918fe0b59c0986eb602ace85841c5ab3", + "versions.yml:md5,bc99889446f02427c166b3219b793672" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-03T19:18:30.8944" + }, + "skip_pseudoalignment = true": { + "content": [ + [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" + ], + [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" + ], + [ + "genome_gfp.fasta:md5,e23e302af63736a199985a169fdac055" + ], + [ + "genome_gfp.gtf:md5,c98b12c302f15731bfc36bcf297cfe28" + ], + [ + "genome_gfp.fasta.fai:md5,8fa54c6bd2ea6a369efbb8ab4f30156a" + ], + [ + "genome_gfp.bed:md5,991993ebef1def1d5823632c21177ec3" + ], + [ + "genome_gfp.fasta.sizes:md5,9b755f8f349b14accefb4d859f84de26" + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", + "versions.yml:md5,1cd265cb86a23a27f683ffb2459f37f5", + "versions.yml:md5,71252f1a221be05593361acccb99506b", + "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", + "versions.yml:md5,bc99889446f02427c166b3219b793672" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-03T19:22:33.169752" }, - "transcriptome = false": { + "skip_gtf_filter - stub": { "content": [ [ - "genome.transcripts.fa:md5,b89a3e02ad30ba3fd600f98c8e2f58d4" + "genome_transcriptome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + "genome_transcriptome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + "genome_transcriptome.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + "genome_transcriptome.bed:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + "genome_transcriptome.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + + ], + [ + + ], + [ + + ], + [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" + ], + [ + + ], + [ + + ], + [ + + ], + [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" + ], + [ + "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", + "versions.yml:md5,71252f1a221be05593361acccb99506b", + "versions.yml:md5,bc99889446f02427c166b3219b793672", + "versions.yml:md5,cc8f32b7c37c35a075d38cb773004eaa" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-04T16:57:47.201179" + }, + "gencode = true": { + "content": [ + [ + "transcriptome.fixed.fa:md5,faf3a64453ae73983bbf2743387fbdf2" ], [ "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" @@ -1841,7 +1216,7 @@ "genome_gfp.fasta:md5,e23e302af63736a199985a169fdac055" ], [ - "genome_gfp.gtf:md5,c98b12c302f15731bfc36bcf297cfe28" + "genome_gfp.gtf:md5,2593a0843dd97f0b7dfb62cdd2c21ab8" ], [ "genome_gfp.fasta.fai:md5,8fa54c6bd2ea6a369efbb8ab4f30156a" @@ -1875,7 +1250,7 @@ "versions.yml:md5,1cd265cb86a23a27f683ffb2459f37f5", "versions.yml:md5,71252f1a221be05593361acccb99506b", "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", - "versions.yml:md5,918fe0b59c0986eb602ace85841c5ab3", + "versions.yml:md5,961ab91198c4e6ec9d795b95e3f61fda", "versions.yml:md5,bc99889446f02427c166b3219b793672" ] ], @@ -1883,15 +1258,15 @@ "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-07-03T19:18:30.8944" + "timestamp": "2024-07-03T19:20:32.664472" }, - "skip_pseudoalignment = true": { + "hisat2_index = false": { "content": [ [ "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" ], [ - "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" + ], [ "genome_gfp.fasta:md5,e23e302af63736a199985a169fdac055" @@ -1938,183 +1313,146 @@ "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-07-03T19:22:33.169752" + "timestamp": "2024-07-03T19:20:06.853577" }, - "skip_gtf_filter - stub": { + "rsem_index = false - stub": { "content": [ - { - "0": [ - "genome_transcriptome.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "1": [ - "genome_transcriptome.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "10": [ - - ], - "11": [ - - ], - "12": [ - "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" - ], - "13": [ - - ], - "14": [ - "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", - "versions.yml:md5,71252f1a221be05593361acccb99506b", - "versions.yml:md5,bc99889446f02427c166b3219b793672", - "versions.yml:md5,cc8f32b7c37c35a075d38cb773004eaa" - ], - "2": [ - "genome_transcriptome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "3": [ - "genome_transcriptome.bed:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "4": [ - "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" - ], - "5": [ - "genome_transcriptome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "6": [ - - ], - "7": [ - [ - [ - [ - [ - "chr1.chrom.gz:md5,4752b2fa140165e41b5d0be484b2180c", - "info.txt:md5,c734dcf084bc6dd494a8b690e0dcdc6c", - "merged_ref_8374379829187813017.fa.gz:md5,5b42850f6d96e66571ae9d29f74505de", - "namelist.txt:md5,2d3a23e005f63d34a85297a5a4baf421", - "reflist.txt:md5,f6300ff903c2b825768d75f56034995e", - "scaffolds.txt.gz:md5,329588397103b0cc3c10cff474962a71", - "summary.txt:md5,0fc17bed55593811b58c240dc63232c6" - ] - ], - [ - [ - "chr1_index_k13_c13_b1.block:md5,900a1be9d0cd47826eb9fefe8c8c96b1", - "chr1_index_k13_c13_b1.block2.gz:md5,eefc669b62e2cb94dbb94031a7bde4fd" - ] - ] - ] - ] - ], - "8": [ - - ], - "9": [ - - ], - "bbsplit_index": [ - [ - [ - [ - [ - "chr1.chrom.gz:md5,4752b2fa140165e41b5d0be484b2180c", - "info.txt:md5,c734dcf084bc6dd494a8b690e0dcdc6c", - "merged_ref_8374379829187813017.fa.gz:md5,5b42850f6d96e66571ae9d29f74505de", - "namelist.txt:md5,2d3a23e005f63d34a85297a5a4baf421", - "reflist.txt:md5,f6300ff903c2b825768d75f56034995e", - "scaffolds.txt.gz:md5,329588397103b0cc3c10cff474962a71", - "summary.txt:md5,0fc17bed55593811b58c240dc63232c6" - ] - ], - [ - [ - "chr1_index_k13_c13_b1.block:md5,900a1be9d0cd47826eb9fefe8c8c96b1", - "chr1_index_k13_c13_b1.block2.gz:md5,eefc669b62e2cb94dbb94031a7bde4fd" - ] - ] - ] - ] - ], - "chrom_sizes": [ - "genome_transcriptome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "fai": [ - "genome_transcriptome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "fasta": [ - "genome_transcriptome.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "gene_bed": [ - "genome_transcriptome.bed:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "gtf": [ - "genome_transcriptome.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "hisat2_index": [ - - ], - "kallisto_index": [ - - ], - "rsem_index": [ - - ], - "salmon_index": [ - "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" - ], - "sortmerna_index": [ - - ], - "splicesites": [ - - ], - "star_index": [ - - ], - "transcript_fasta": [ - "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" - ], - "versions": [ - "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", - "versions.yml:md5,71252f1a221be05593361acccb99506b", - "versions.yml:md5,bc99889446f02427c166b3219b793672", - "versions.yml:md5,cc8f32b7c37c35a075d38cb773004eaa" - ] - } + [ + "genome_transcriptome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + "genome_transcriptome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + "genome_transcriptome.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + "genome_transcriptome.bed:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + "genome_transcriptome.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + + ], + [ + + ], + [ + + ], + [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" + ], + [ + + ], + [ + + ], + [ + + ], + [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" + ], + [ + "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", + "versions.yml:md5,71252f1a221be05593361acccb99506b", + "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", + "versions.yml:md5,bc99889446f02427c166b3219b793672", + "versions.yml:md5,cc8f32b7c37c35a075d38cb773004eaa" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-04T17:01:29.423708" + }, + "featurecounts_group_type = 'gene_type'": { + "content": [ + [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" + ], + [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" + ], + [ + "genome_gfp.fasta:md5,e23e302af63736a199985a169fdac055" + ], + [ + "genome_gfp.gtf:md5,2593a0843dd97f0b7dfb62cdd2c21ab8" + ], + [ + "genome_gfp.fasta.fai:md5,8fa54c6bd2ea6a369efbb8ab4f30156a" + ], + [ + "genome_gfp.bed:md5,991993ebef1def1d5823632c21177ec3" + ], + [ + "genome_gfp.fasta.sizes:md5,9b755f8f349b14accefb4d859f84de26" + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", + "versions.yml:md5,1cd265cb86a23a27f683ffb2459f37f5", + "versions.yml:md5,71252f1a221be05593361acccb99506b", + "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", + "versions.yml:md5,bc99889446f02427c166b3219b793672" + ] ], "meta": { "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-07-03T19:24:03.597076" + "timestamp": "2024-07-03T19:20:57.049579" }, - "gencode = true": { + "with bed - stub": { "content": [ [ - "transcriptome.fixed.fa:md5,faf3a64453ae73983bbf2743387fbdf2" + "genome_transcriptome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" ], [ - "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" + "genome_transcriptome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" ], [ - "genome_gfp.fasta:md5,e23e302af63736a199985a169fdac055" + "genome_transcriptome.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" ], [ - "genome_gfp.gtf:md5,2593a0843dd97f0b7dfb62cdd2c21ab8" + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/ngscheckmate.bed" ], [ - "genome_gfp.fasta.fai:md5,8fa54c6bd2ea6a369efbb8ab4f30156a" + "genome_transcriptome.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" ], [ - "genome_gfp.bed:md5,991993ebef1def1d5823632c21177ec3" + ], [ - "genome_gfp.fasta.sizes:md5,9b755f8f349b14accefb4d859f84de26" + ], [ ], [ - + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" ], [ @@ -2126,30 +1464,28 @@ ], [ - + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" ], [ "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", - "versions.yml:md5,1cd265cb86a23a27f683ffb2459f37f5", - "versions.yml:md5,71252f1a221be05593361acccb99506b", "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", - "versions.yml:md5,961ab91198c4e6ec9d795b95e3f61fda", - "versions.yml:md5,bc99889446f02427c166b3219b793672" + "versions.yml:md5,bc99889446f02427c166b3219b793672", + "versions.yml:md5,cc8f32b7c37c35a075d38cb773004eaa" ] ], "meta": { "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-07-03T19:20:32.664472" + "timestamp": "2024-07-04T17:01:05.223077" }, - "hisat2_index = false": { + "skip_pseudo_alignment": { "content": [ [ "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" ], [ - + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" ], [ "genome_gfp.fasta:md5,e23e302af63736a199985a169fdac055" @@ -2196,158 +1532,9 @@ "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-07-03T19:20:06.853577" - }, - "rsem_index = false - stub": { - "content": [ - { - "0": [ - "genome_transcriptome.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "1": [ - "genome_transcriptome.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "10": [ - - ], - "11": [ - - ], - "12": [ - "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" - ], - "13": [ - - ], - "14": [ - "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", - "versions.yml:md5,71252f1a221be05593361acccb99506b", - "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", - "versions.yml:md5,bc99889446f02427c166b3219b793672", - "versions.yml:md5,cc8f32b7c37c35a075d38cb773004eaa" - ], - "2": [ - "genome_transcriptome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "3": [ - "genome_transcriptome.bed:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "4": [ - "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" - ], - "5": [ - "genome_transcriptome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "6": [ - - ], - "7": [ - [ - [ - [ - [ - "chr1.chrom.gz:md5,4752b2fa140165e41b5d0be484b2180c", - "info.txt:md5,04f0154cab7282674a27a4c997936259", - "merged_ref_8374379829187813017.fa.gz:md5,5b42850f6d96e66571ae9d29f74505de", - "namelist.txt:md5,2d3a23e005f63d34a85297a5a4baf421", - "reflist.txt:md5,6e49d2250beb10332aeadedd9cfed0a2", - "scaffolds.txt.gz:md5,95fdcee61964305f9fb33b90cfefe5c2", - "summary.txt:md5,a21bc2bb4acfc87bc04f4119b790c3d4" - ] - ], - [ - [ - "chr1_index_k13_c13_b1.block:md5,900a1be9d0cd47826eb9fefe8c8c96b1", - "chr1_index_k13_c13_b1.block2.gz:md5,eefc669b62e2cb94dbb94031a7bde4fd" - ] - ] - ] - ] - ], - "8": [ - - ], - "9": [ - - ], - "bbsplit_index": [ - [ - [ - [ - [ - "chr1.chrom.gz:md5,4752b2fa140165e41b5d0be484b2180c", - "info.txt:md5,04f0154cab7282674a27a4c997936259", - "merged_ref_8374379829187813017.fa.gz:md5,5b42850f6d96e66571ae9d29f74505de", - "namelist.txt:md5,2d3a23e005f63d34a85297a5a4baf421", - "reflist.txt:md5,6e49d2250beb10332aeadedd9cfed0a2", - "scaffolds.txt.gz:md5,95fdcee61964305f9fb33b90cfefe5c2", - "summary.txt:md5,a21bc2bb4acfc87bc04f4119b790c3d4" - ] - ], - [ - [ - "chr1_index_k13_c13_b1.block:md5,900a1be9d0cd47826eb9fefe8c8c96b1", - "chr1_index_k13_c13_b1.block2.gz:md5,eefc669b62e2cb94dbb94031a7bde4fd" - ] - ] - ] - ] - ], - "chrom_sizes": [ - "genome_transcriptome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "fai": [ - "genome_transcriptome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "fasta": [ - "genome_transcriptome.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "gene_bed": [ - "genome_transcriptome.bed:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "gtf": [ - "genome_transcriptome.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "hisat2_index": [ - - ], - "kallisto_index": [ - - ], - "rsem_index": [ - - ], - "salmon_index": [ - "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" - ], - "sortmerna_index": [ - - ], - "splicesites": [ - - ], - "star_index": [ - - ], - "transcript_fasta": [ - "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" - ], - "versions": [ - "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", - "versions.yml:md5,71252f1a221be05593361acccb99506b", - "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", - "versions.yml:md5,bc99889446f02427c166b3219b793672", - "versions.yml:md5,cc8f32b7c37c35a075d38cb773004eaa" - ] - } - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" - }, - "timestamp": "2024-07-03T19:31:36.420669" + "timestamp": "2024-07-03T19:16:56.725751" }, - "featurecounts_group_type = 'gene_type'": { + "skip_bbsplit": { "content": [ [ "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" @@ -2359,7 +1546,7 @@ "genome_gfp.fasta:md5,e23e302af63736a199985a169fdac055" ], [ - "genome_gfp.gtf:md5,2593a0843dd97f0b7dfb62cdd2c21ab8" + "genome_gfp.gtf:md5,c98b12c302f15731bfc36bcf297cfe28" ], [ "genome_gfp.fasta.fai:md5,8fa54c6bd2ea6a369efbb8ab4f30156a" @@ -2389,167 +1576,19 @@ ], [ - "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", "versions.yml:md5,1cd265cb86a23a27f683ffb2459f37f5", "versions.yml:md5,71252f1a221be05593361acccb99506b", "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", - "versions.yml:md5,bc99889446f02427c166b3219b793672" - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" - }, - "timestamp": "2024-07-03T19:20:57.049579" - }, - "with bed - stub": { - "content": [ - { - "0": [ - "genome_transcriptome.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "1": [ - "genome_transcriptome.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "10": [ - - ], - "11": [ - - ], - "12": [ - "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" - ], - "13": [ - - ], - "14": [ - "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", - "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", - "versions.yml:md5,bc99889446f02427c166b3219b793672", - "versions.yml:md5,cc8f32b7c37c35a075d38cb773004eaa" - ], - "2": [ - "genome_transcriptome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "3": [ - "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/ngscheckmate.bed" - ], - "4": [ - "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" - ], - "5": [ - "genome_transcriptome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "6": [ - - ], - "7": [ - [ - [ - [ - [ - "chr1.chrom.gz:md5,4752b2fa140165e41b5d0be484b2180c", - "info.txt:md5,a707c68fb073e20c734bf0978ec8d7fa", - "merged_ref_8374379829187813017.fa.gz:md5,5b42850f6d96e66571ae9d29f74505de", - "namelist.txt:md5,2d3a23e005f63d34a85297a5a4baf421", - "reflist.txt:md5,c18b8bc1876d0a3dbb19dd03d33f9c94", - "scaffolds.txt.gz:md5,699024aa20e942f34214a5e42f6a7333", - "summary.txt:md5,143f603b0db8e7dfdc666e626808b139" - ] - ], - [ - [ - "chr1_index_k13_c13_b1.block:md5,900a1be9d0cd47826eb9fefe8c8c96b1", - "chr1_index_k13_c13_b1.block2.gz:md5,eefc669b62e2cb94dbb94031a7bde4fd" - ] - ] - ] - ] - ], - "8": [ - - ], - "9": [ - - ], - "bbsplit_index": [ - [ - [ - [ - [ - "chr1.chrom.gz:md5,4752b2fa140165e41b5d0be484b2180c", - "info.txt:md5,a707c68fb073e20c734bf0978ec8d7fa", - "merged_ref_8374379829187813017.fa.gz:md5,5b42850f6d96e66571ae9d29f74505de", - "namelist.txt:md5,2d3a23e005f63d34a85297a5a4baf421", - "reflist.txt:md5,c18b8bc1876d0a3dbb19dd03d33f9c94", - "scaffolds.txt.gz:md5,699024aa20e942f34214a5e42f6a7333", - "summary.txt:md5,143f603b0db8e7dfdc666e626808b139" - ] - ], - [ - [ - "chr1_index_k13_c13_b1.block:md5,900a1be9d0cd47826eb9fefe8c8c96b1", - "chr1_index_k13_c13_b1.block2.gz:md5,eefc669b62e2cb94dbb94031a7bde4fd" - ] - ] - ] - ] - ], - "chrom_sizes": [ - "genome_transcriptome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "fai": [ - "genome_transcriptome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "fasta": [ - "genome_transcriptome.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "gene_bed": [ - "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/ngscheckmate.bed" - ], - "gtf": [ - "genome_transcriptome.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "hisat2_index": [ - - ], - "kallisto_index": [ - - ], - "rsem_index": [ - - ], - "salmon_index": [ - "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" - ], - "sortmerna_index": [ - - ], - "splicesites": [ - - ], - "star_index": [ - - ], - "transcript_fasta": [ - "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" - ], - "versions": [ - "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", - "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", - "versions.yml:md5,bc99889446f02427c166b3219b793672", - "versions.yml:md5,cc8f32b7c37c35a075d38cb773004eaa" - ] - } + "versions.yml:md5,bc99889446f02427c166b3219b793672" + ] ], "meta": { "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-07-03T19:30:28.759718" + "timestamp": "2024-07-03T19:16:08.147358" }, - "skip_bbsplit": { + "with bed": { "content": [ [ "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" @@ -2567,7 +1606,7 @@ "genome_gfp.fasta.fai:md5,8fa54c6bd2ea6a369efbb8ab4f30156a" ], [ - "genome_gfp.bed:md5,991993ebef1def1d5823632c21177ec3" + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/ngscheckmate.bed" ], [ "genome_gfp.fasta.sizes:md5,9b755f8f349b14accefb4d859f84de26" @@ -2591,8 +1630,8 @@ ], [ + "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", "versions.yml:md5,1cd265cb86a23a27f683ffb2459f37f5", - "versions.yml:md5,71252f1a221be05593361acccb99506b", "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", "versions.yml:md5,bc99889446f02427c166b3219b793672" ] @@ -2601,158 +1640,66 @@ "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-07-03T19:16:08.147358" + "timestamp": "2024-07-03T19:18:54.706918" }, - "skip_psuedo_alignment - stub": { + "gtf = false - stub": { "content": [ - { - "0": [ - "genome_transcriptome.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "1": [ - "genome_transcriptome.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "10": [ - - ], - "11": [ - - ], - "12": [ - "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" - ], - "13": [ - - ], - "14": [ - "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", - "versions.yml:md5,71252f1a221be05593361acccb99506b", - "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", - "versions.yml:md5,bc99889446f02427c166b3219b793672", - "versions.yml:md5,cc8f32b7c37c35a075d38cb773004eaa" - ], - "2": [ - "genome_transcriptome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "3": [ - "genome_transcriptome.bed:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "4": [ - "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" - ], - "5": [ - "genome_transcriptome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "6": [ - - ], - "7": [ - [ - [ - [ - [ - "chr1.chrom.gz:md5,4752b2fa140165e41b5d0be484b2180c", - "info.txt:md5,2babb5d568e2fbefe8ac6cb8e2ef727b", - "merged_ref_8374379829187813017.fa.gz:md5,5b42850f6d96e66571ae9d29f74505de", - "namelist.txt:md5,2d3a23e005f63d34a85297a5a4baf421", - "reflist.txt:md5,5dec7e6c795da517fe5ed3ddea82637b", - "scaffolds.txt.gz:md5,b3434738a19d7c0a28090c9d714c0e7a", - "summary.txt:md5,aa86e1078f1c2117f6db7c79d6dbc48d" - ] - ], - [ - [ - "chr1_index_k13_c13_b1.block:md5,900a1be9d0cd47826eb9fefe8c8c96b1", - "chr1_index_k13_c13_b1.block2.gz:md5,eefc669b62e2cb94dbb94031a7bde4fd" - ] - ] - ] - ] - ], - "8": [ - - ], - "9": [ - - ], - "bbsplit_index": [ - [ - [ - [ - [ - "chr1.chrom.gz:md5,4752b2fa140165e41b5d0be484b2180c", - "info.txt:md5,2babb5d568e2fbefe8ac6cb8e2ef727b", - "merged_ref_8374379829187813017.fa.gz:md5,5b42850f6d96e66571ae9d29f74505de", - "namelist.txt:md5,2d3a23e005f63d34a85297a5a4baf421", - "reflist.txt:md5,5dec7e6c795da517fe5ed3ddea82637b", - "scaffolds.txt.gz:md5,b3434738a19d7c0a28090c9d714c0e7a", - "summary.txt:md5,aa86e1078f1c2117f6db7c79d6dbc48d" - ] - ], - [ - [ - "chr1_index_k13_c13_b1.block:md5,900a1be9d0cd47826eb9fefe8c8c96b1", - "chr1_index_k13_c13_b1.block2.gz:md5,eefc669b62e2cb94dbb94031a7bde4fd" - ] - ] - ] - ] - ], - "chrom_sizes": [ - "genome_transcriptome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "fai": [ - "genome_transcriptome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "fasta": [ - "genome_transcriptome.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "gene_bed": [ - "genome_transcriptome.bed:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "gtf": [ - "genome_transcriptome.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "hisat2_index": [ - - ], - "kallisto_index": [ - - ], - "rsem_index": [ - - ], - "salmon_index": [ - "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" - ], - "sortmerna_index": [ - - ], - "splicesites": [ - - ], - "star_index": [ - - ], - "transcript_fasta": [ - "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" - ], - "versions": [ - "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", - "versions.yml:md5,71252f1a221be05593361acccb99506b", - "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", - "versions.yml:md5,bc99889446f02427c166b3219b793672", - "versions.yml:md5,cc8f32b7c37c35a075d38cb773004eaa" - ] - } + [ + "genome_transcriptome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + "genome_transcriptome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + "genome_transcriptome.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + "genome_transcriptome.bed:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + "genome_transcriptome.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + + ], + [ + + ], + [ + + ], + [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" + ], + [ + + ], + [ + + ], + [ + + ], + [ + "transcriptome.fixed.fa:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", + "versions.yml:md5,2a3ed31ad34b8864fb9278dcdef596ec", + "versions.yml:md5,71252f1a221be05593361acccb99506b", + "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", + "versions.yml:md5,961ab91198c4e6ec9d795b95e3f61fda", + "versions.yml:md5,bc99889446f02427c166b3219b793672", + "versions.yml:md5,cc8f32b7c37c35a075d38cb773004eaa" + ] ], "meta": { "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-07-03T19:25:56.804428" + "timestamp": "2024-07-04T16:59:30.478197" }, - "with bed": { + "gff = false": { "content": [ [ "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" @@ -2770,7 +1717,7 @@ "genome_gfp.fasta.fai:md5,8fa54c6bd2ea6a369efbb8ab4f30156a" ], [ - "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/ngscheckmate.bed" + "genome_gfp.bed:md5,991993ebef1def1d5823632c21177ec3" ], [ "genome_gfp.fasta.sizes:md5,9b755f8f349b14accefb4d859f84de26" @@ -2796,6 +1743,7 @@ [ "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", "versions.yml:md5,1cd265cb86a23a27f683ffb2459f37f5", + "versions.yml:md5,71252f1a221be05593361acccb99506b", "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", "versions.yml:md5,bc99889446f02427c166b3219b793672" ] @@ -2804,189 +1752,36 @@ "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-07-03T19:18:54.706918" - }, - "gtf = false - stub": { - "content": [ - { - "0": [ - "genome_transcriptome.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "1": [ - "genome_transcriptome.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "10": [ - - ], - "11": [ - - ], - "12": [ - "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" - ], - "13": [ - - ], - "14": [ - "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", - "versions.yml:md5,2a3ed31ad34b8864fb9278dcdef596ec", - "versions.yml:md5,71252f1a221be05593361acccb99506b", - "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", - "versions.yml:md5,961ab91198c4e6ec9d795b95e3f61fda", - "versions.yml:md5,bc99889446f02427c166b3219b793672", - "versions.yml:md5,cc8f32b7c37c35a075d38cb773004eaa" - ], - "2": [ - "genome_transcriptome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "3": [ - "genome_transcriptome.bed:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "4": [ - "transcriptome.fixed.fa:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "5": [ - "genome_transcriptome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "6": [ - - ], - "7": [ - [ - [ - [ - [ - "chr1.chrom.gz:md5,4752b2fa140165e41b5d0be484b2180c", - "info.txt:md5,61fba7e25d2c8347086259ddd65997a0", - "merged_ref_8374379829187813017.fa.gz:md5,5b42850f6d96e66571ae9d29f74505de", - "namelist.txt:md5,2d3a23e005f63d34a85297a5a4baf421", - "reflist.txt:md5,fb29bdb9252ee3efbb54db1e04393e24", - "scaffolds.txt.gz:md5,969acd41e45b0bba5eef0bdc60ca57d4", - "summary.txt:md5,4a1a806513d093b54e1d10f9b62af37f" - ] - ], - [ - [ - "chr1_index_k13_c13_b1.block:md5,900a1be9d0cd47826eb9fefe8c8c96b1", - "chr1_index_k13_c13_b1.block2.gz:md5,eefc669b62e2cb94dbb94031a7bde4fd" - ] - ] - ] - ] - ], - "8": [ - - ], - "9": [ - - ], - "bbsplit_index": [ - [ - [ - [ - [ - "chr1.chrom.gz:md5,4752b2fa140165e41b5d0be484b2180c", - "info.txt:md5,61fba7e25d2c8347086259ddd65997a0", - "merged_ref_8374379829187813017.fa.gz:md5,5b42850f6d96e66571ae9d29f74505de", - "namelist.txt:md5,2d3a23e005f63d34a85297a5a4baf421", - "reflist.txt:md5,fb29bdb9252ee3efbb54db1e04393e24", - "scaffolds.txt.gz:md5,969acd41e45b0bba5eef0bdc60ca57d4", - "summary.txt:md5,4a1a806513d093b54e1d10f9b62af37f" - ] - ], - [ - [ - "chr1_index_k13_c13_b1.block:md5,900a1be9d0cd47826eb9fefe8c8c96b1", - "chr1_index_k13_c13_b1.block2.gz:md5,eefc669b62e2cb94dbb94031a7bde4fd" - ] - ] - ] - ] - ], - "chrom_sizes": [ - "genome_transcriptome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "fai": [ - "genome_transcriptome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "fasta": [ - "genome_transcriptome.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "gene_bed": [ - "genome_transcriptome.bed:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "gtf": [ - "genome_transcriptome.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "hisat2_index": [ - - ], - "kallisto_index": [ - - ], - "rsem_index": [ - - ], - "salmon_index": [ - "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" - ], - "sortmerna_index": [ - - ], - "splicesites": [ - - ], - "star_index": [ - - ], - "transcript_fasta": [ - "transcriptome.fixed.fa:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "versions": [ - "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", - "versions.yml:md5,2a3ed31ad34b8864fb9278dcdef596ec", - "versions.yml:md5,71252f1a221be05593361acccb99506b", - "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", - "versions.yml:md5,961ab91198c4e6ec9d795b95e3f61fda", - "versions.yml:md5,bc99889446f02427c166b3219b793672", - "versions.yml:md5,cc8f32b7c37c35a075d38cb773004eaa" - ] - } - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" - }, - "timestamp": "2024-07-03T19:26:41.30825" + "timestamp": "2024-07-03T19:17:45.167724" }, - "gff = false": { + "default options - stub": { "content": [ [ - "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" + "genome_transcriptome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" ], [ - "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" + "genome_transcriptome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" ], [ - "genome_gfp.fasta:md5,e23e302af63736a199985a169fdac055" + "genome_transcriptome.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" ], [ - "genome_gfp.gtf:md5,c98b12c302f15731bfc36bcf297cfe28" + "genome_transcriptome.bed:md5,d41d8cd98f00b204e9800998ecf8427e" ], [ - "genome_gfp.fasta.fai:md5,8fa54c6bd2ea6a369efbb8ab4f30156a" + "genome_transcriptome.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" ], [ - "genome_gfp.bed:md5,991993ebef1def1d5823632c21177ec3" + ], [ - "genome_gfp.fasta.sizes:md5,9b755f8f349b14accefb4d859f84de26" + ], [ ], [ - + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" ], [ @@ -2998,170 +1793,21 @@ ], [ - + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" ], [ "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", - "versions.yml:md5,1cd265cb86a23a27f683ffb2459f37f5", "versions.yml:md5,71252f1a221be05593361acccb99506b", "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", - "versions.yml:md5,bc99889446f02427c166b3219b793672" + "versions.yml:md5,bc99889446f02427c166b3219b793672", + "versions.yml:md5,cc8f32b7c37c35a075d38cb773004eaa" ] ], "meta": { "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-07-03T19:17:45.167724" - }, - "default options - stub": { - "content": [ - { - "0": [ - "genome_transcriptome.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "1": [ - "genome_transcriptome.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "10": [ - - ], - "11": [ - - ], - "12": [ - "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" - ], - "13": [ - - ], - "14": [ - "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", - "versions.yml:md5,71252f1a221be05593361acccb99506b", - "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", - "versions.yml:md5,bc99889446f02427c166b3219b793672", - "versions.yml:md5,cc8f32b7c37c35a075d38cb773004eaa" - ], - "2": [ - "genome_transcriptome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "3": [ - "genome_transcriptome.bed:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "4": [ - "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" - ], - "5": [ - "genome_transcriptome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "6": [ - - ], - "7": [ - [ - [ - [ - [ - "chr1.chrom.gz:md5,4752b2fa140165e41b5d0be484b2180c", - "info.txt:md5,88a5bfeac69be028011b4a37ae09f929", - "merged_ref_8374379829187813017.fa.gz:md5,5b42850f6d96e66571ae9d29f74505de", - "namelist.txt:md5,2d3a23e005f63d34a85297a5a4baf421", - "reflist.txt:md5,c25665399773569ce9c3f11063ba214a", - "scaffolds.txt.gz:md5,6b76512de5822586c8831fe231a39381", - "summary.txt:md5,73342adf14bf98697d138065ac948c8b" - ] - ], - [ - [ - "chr1_index_k13_c13_b1.block:md5,900a1be9d0cd47826eb9fefe8c8c96b1", - "chr1_index_k13_c13_b1.block2.gz:md5,eefc669b62e2cb94dbb94031a7bde4fd" - ] - ] - ] - ] - ], - "8": [ - - ], - "9": [ - - ], - "bbsplit_index": [ - [ - [ - [ - [ - "chr1.chrom.gz:md5,4752b2fa140165e41b5d0be484b2180c", - "info.txt:md5,88a5bfeac69be028011b4a37ae09f929", - "merged_ref_8374379829187813017.fa.gz:md5,5b42850f6d96e66571ae9d29f74505de", - "namelist.txt:md5,2d3a23e005f63d34a85297a5a4baf421", - "reflist.txt:md5,c25665399773569ce9c3f11063ba214a", - "scaffolds.txt.gz:md5,6b76512de5822586c8831fe231a39381", - "summary.txt:md5,73342adf14bf98697d138065ac948c8b" - ] - ], - [ - [ - "chr1_index_k13_c13_b1.block:md5,900a1be9d0cd47826eb9fefe8c8c96b1", - "chr1_index_k13_c13_b1.block2.gz:md5,eefc669b62e2cb94dbb94031a7bde4fd" - ] - ] - ] - ] - ], - "chrom_sizes": [ - "genome_transcriptome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "fai": [ - "genome_transcriptome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "fasta": [ - "genome_transcriptome.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "gene_bed": [ - "genome_transcriptome.bed:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "gtf": [ - "genome_transcriptome.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "hisat2_index": [ - - ], - "kallisto_index": [ - - ], - "rsem_index": [ - - ], - "salmon_index": [ - "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" - ], - "sortmerna_index": [ - - ], - "splicesites": [ - - ], - "star_index": [ - - ], - "transcript_fasta": [ - "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" - ], - "versions": [ - "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", - "versions.yml:md5,71252f1a221be05593361acccb99506b", - "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", - "versions.yml:md5,bc99889446f02427c166b3219b793672", - "versions.yml:md5,cc8f32b7c37c35a075d38cb773004eaa" - ] - } - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" - }, - "timestamp": "2024-07-03T19:22:59.47915" + "timestamp": "2024-07-04T16:56:58.012938" }, "salmon_index = false": { "content": [ @@ -3275,181 +1921,87 @@ }, "skip_alignment = true - stub": { "content": [ - { - "0": [ - "genome_transcriptome.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "1": [ - "genome_transcriptome.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "10": [ - - ], - "11": [ - - ], - "12": [ - "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" - ], - "13": [ - - ], - "14": [ - "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", - "versions.yml:md5,71252f1a221be05593361acccb99506b", - "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", - "versions.yml:md5,bc99889446f02427c166b3219b793672", - "versions.yml:md5,cc8f32b7c37c35a075d38cb773004eaa" - ], - "2": [ - "genome_transcriptome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "3": [ - "genome_transcriptome.bed:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "4": [ - "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" - ], - "5": [ - "genome_transcriptome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "6": [ - - ], - "7": [ - [ - [ - [ - [ - "chr1.chrom.gz:md5,4752b2fa140165e41b5d0be484b2180c", - "info.txt:md5,4c65c7670278194087bd2c7ac9bd686f", - "merged_ref_8374379829187813017.fa.gz:md5,5b42850f6d96e66571ae9d29f74505de", - "namelist.txt:md5,2d3a23e005f63d34a85297a5a4baf421", - "reflist.txt:md5,26b3c900e7da46d22b19771d14fb3823", - "scaffolds.txt.gz:md5,971996ad3d861a0209ec09c14a8b5e66", - "summary.txt:md5,ae32379d5a400175e4f062c174b87206" - ] - ], - [ - [ - "chr1_index_k13_c13_b1.block:md5,900a1be9d0cd47826eb9fefe8c8c96b1", - "chr1_index_k13_c13_b1.block2.gz:md5,eefc669b62e2cb94dbb94031a7bde4fd" - ] - ] - ] - ] - ], - "8": [ - - ], - "9": [ - - ], - "bbsplit_index": [ - [ - [ - [ - [ - "chr1.chrom.gz:md5,4752b2fa140165e41b5d0be484b2180c", - "info.txt:md5,4c65c7670278194087bd2c7ac9bd686f", - "merged_ref_8374379829187813017.fa.gz:md5,5b42850f6d96e66571ae9d29f74505de", - "namelist.txt:md5,2d3a23e005f63d34a85297a5a4baf421", - "reflist.txt:md5,26b3c900e7da46d22b19771d14fb3823", - "scaffolds.txt.gz:md5,971996ad3d861a0209ec09c14a8b5e66", - "summary.txt:md5,ae32379d5a400175e4f062c174b87206" - ] - ], - [ - [ - "chr1_index_k13_c13_b1.block:md5,900a1be9d0cd47826eb9fefe8c8c96b1", - "chr1_index_k13_c13_b1.block2.gz:md5,eefc669b62e2cb94dbb94031a7bde4fd" - ] - ] - ] - ] - ], - "chrom_sizes": [ - "genome_transcriptome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "fai": [ - "genome_transcriptome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "fasta": [ - "genome_transcriptome.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "gene_bed": [ - "genome_transcriptome.bed:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "gtf": [ - "genome_transcriptome.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "hisat2_index": [ - - ], - "kallisto_index": [ - - ], - "rsem_index": [ - - ], - "salmon_index": [ - "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" - ], - "sortmerna_index": [ - - ], - "splicesites": [ - - ], - "star_index": [ - - ], - "transcript_fasta": [ - "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" - ], - "versions": [ - "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", - "versions.yml:md5,71252f1a221be05593361acccb99506b", - "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", - "versions.yml:md5,bc99889446f02427c166b3219b793672", - "versions.yml:md5,cc8f32b7c37c35a075d38cb773004eaa" - ] - } + [ + "genome_transcriptome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + "genome_transcriptome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + "genome_transcriptome.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + "genome_transcriptome.bed:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + "genome_transcriptome.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + + ], + [ + + ], + [ + + ], + [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" + ], + [ + + ], + [ + + ], + [ + + ], + [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" + ], + [ + "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", + "versions.yml:md5,71252f1a221be05593361acccb99506b", + "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", + "versions.yml:md5,bc99889446f02427c166b3219b793672", + "versions.yml:md5,cc8f32b7c37c35a075d38cb773004eaa" + ] ], "meta": { "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-07-03T19:42:40.042867" + "timestamp": "2024-07-04T17:04:20.276533" }, - "skip_psuedo_alignment": { + "transcriptome = false - stub": { "content": [ [ - "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" + "genome_transcriptome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" ], [ - "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" + "genome_transcriptome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" ], [ - "genome_gfp.fasta:md5,e23e302af63736a199985a169fdac055" + "genome_transcriptome.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" ], [ - "genome_gfp.gtf:md5,c98b12c302f15731bfc36bcf297cfe28" + "genome_transcriptome.bed:md5,d41d8cd98f00b204e9800998ecf8427e" ], [ - "genome_gfp.fasta.fai:md5,8fa54c6bd2ea6a369efbb8ab4f30156a" + "genome_transcriptome.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" ], [ - "genome_gfp.bed:md5,991993ebef1def1d5823632c21177ec3" + ], [ - "genome_gfp.fasta.sizes:md5,9b755f8f349b14accefb4d859f84de26" + ], [ ], [ - + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" ], [ @@ -3461,172 +2013,22 @@ ], [ - + "genome.transcripts.fa:md5,d41d8cd98f00b204e9800998ecf8427e" ], [ "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", - "versions.yml:md5,1cd265cb86a23a27f683ffb2459f37f5", "versions.yml:md5,71252f1a221be05593361acccb99506b", "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", - "versions.yml:md5,bc99889446f02427c166b3219b793672" + "versions.yml:md5,918fe0b59c0986eb602ace85841c5ab3", + "versions.yml:md5,bc99889446f02427c166b3219b793672", + "versions.yml:md5,cc8f32b7c37c35a075d38cb773004eaa" ] ], "meta": { "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-07-03T19:16:56.725751" - }, - "transcriptome = false - stub": { - "content": [ - { - "0": [ - "genome_transcriptome.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "1": [ - "genome_transcriptome.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "10": [ - - ], - "11": [ - - ], - "12": [ - "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" - ], - "13": [ - - ], - "14": [ - "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", - "versions.yml:md5,71252f1a221be05593361acccb99506b", - "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", - "versions.yml:md5,918fe0b59c0986eb602ace85841c5ab3", - "versions.yml:md5,bc99889446f02427c166b3219b793672", - "versions.yml:md5,cc8f32b7c37c35a075d38cb773004eaa" - ], - "2": [ - "genome_transcriptome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "3": [ - "genome_transcriptome.bed:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "4": [ - "genome.transcripts.fa:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "5": [ - "genome_transcriptome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "6": [ - - ], - "7": [ - [ - [ - [ - [ - "chr1.chrom.gz:md5,4752b2fa140165e41b5d0be484b2180c", - "info.txt:md5,8c9893a92606b06d11fe5307f37c20b2", - "merged_ref_8374379829187813017.fa.gz:md5,5b42850f6d96e66571ae9d29f74505de", - "namelist.txt:md5,2d3a23e005f63d34a85297a5a4baf421", - "reflist.txt:md5,4fbb1b499e9ecb4ec4f8703d35b102c2", - "scaffolds.txt.gz:md5,a394044886c68c0525135ce2c77b6827", - "summary.txt:md5,17fe3cc447f59e811784cf6da6db80f6" - ] - ], - [ - [ - "chr1_index_k13_c13_b1.block:md5,900a1be9d0cd47826eb9fefe8c8c96b1", - "chr1_index_k13_c13_b1.block2.gz:md5,eefc669b62e2cb94dbb94031a7bde4fd" - ] - ] - ] - ] - ], - "8": [ - - ], - "9": [ - - ], - "bbsplit_index": [ - [ - [ - [ - [ - "chr1.chrom.gz:md5,4752b2fa140165e41b5d0be484b2180c", - "info.txt:md5,8c9893a92606b06d11fe5307f37c20b2", - "merged_ref_8374379829187813017.fa.gz:md5,5b42850f6d96e66571ae9d29f74505de", - "namelist.txt:md5,2d3a23e005f63d34a85297a5a4baf421", - "reflist.txt:md5,4fbb1b499e9ecb4ec4f8703d35b102c2", - "scaffolds.txt.gz:md5,a394044886c68c0525135ce2c77b6827", - "summary.txt:md5,17fe3cc447f59e811784cf6da6db80f6" - ] - ], - [ - [ - "chr1_index_k13_c13_b1.block:md5,900a1be9d0cd47826eb9fefe8c8c96b1", - "chr1_index_k13_c13_b1.block2.gz:md5,eefc669b62e2cb94dbb94031a7bde4fd" - ] - ] - ] - ] - ], - "chrom_sizes": [ - "genome_transcriptome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "fai": [ - "genome_transcriptome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "fasta": [ - "genome_transcriptome.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "gene_bed": [ - "genome_transcriptome.bed:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "gtf": [ - "genome_transcriptome.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "hisat2_index": [ - - ], - "kallisto_index": [ - - ], - "rsem_index": [ - - ], - "salmon_index": [ - "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" - ], - "sortmerna_index": [ - - ], - "splicesites": [ - - ], - "star_index": [ - - ], - "transcript_fasta": [ - "genome.transcripts.fa:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "versions": [ - "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", - "versions.yml:md5,71252f1a221be05593361acccb99506b", - "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", - "versions.yml:md5,918fe0b59c0986eb602ace85841c5ab3", - "versions.yml:md5,bc99889446f02427c166b3219b793672", - "versions.yml:md5,cc8f32b7c37c35a075d38cb773004eaa" - ] - } - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" - }, - "timestamp": "2024-07-03T19:29:24.893589" + "timestamp": "2024-07-04T17:00:43.920677" }, "skip_alignment = true": { "content": [ @@ -3739,152 +2141,58 @@ }, "hisat2_index = false - stub": { "content": [ - { - "0": [ - "genome_transcriptome.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "1": [ - "genome_transcriptome.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "10": [ - - ], - "11": [ - - ], - "12": [ - - ], - "13": [ - - ], - "14": [ - "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", - "versions.yml:md5,71252f1a221be05593361acccb99506b", - "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", - "versions.yml:md5,bc99889446f02427c166b3219b793672", - "versions.yml:md5,cc8f32b7c37c35a075d38cb773004eaa" - ], - "2": [ - "genome_transcriptome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "3": [ - "genome_transcriptome.bed:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "4": [ - "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" - ], - "5": [ - "genome_transcriptome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "6": [ - - ], - "7": [ - [ - [ - [ - [ - "chr1.chrom.gz:md5,4752b2fa140165e41b5d0be484b2180c", - "info.txt:md5,bca170be315dc0e69e4f87d4b859471f", - "merged_ref_8374379829187813017.fa.gz:md5,5b42850f6d96e66571ae9d29f74505de", - "namelist.txt:md5,2d3a23e005f63d34a85297a5a4baf421", - "reflist.txt:md5,85765f3dc5ca92f0302cff2216a8fd43", - "scaffolds.txt.gz:md5,586126dbdc545a0fd51637b8a5405bd8", - "summary.txt:md5,25dd7644a61b6f13f16ebf80153a3fa9" - ] - ], - [ - [ - "chr1_index_k13_c13_b1.block:md5,900a1be9d0cd47826eb9fefe8c8c96b1", - "chr1_index_k13_c13_b1.block2.gz:md5,eefc669b62e2cb94dbb94031a7bde4fd" - ] - ] - ] - ] - ], - "8": [ - - ], - "9": [ - - ], - "bbsplit_index": [ - [ - [ - [ - [ - "chr1.chrom.gz:md5,4752b2fa140165e41b5d0be484b2180c", - "info.txt:md5,bca170be315dc0e69e4f87d4b859471f", - "merged_ref_8374379829187813017.fa.gz:md5,5b42850f6d96e66571ae9d29f74505de", - "namelist.txt:md5,2d3a23e005f63d34a85297a5a4baf421", - "reflist.txt:md5,85765f3dc5ca92f0302cff2216a8fd43", - "scaffolds.txt.gz:md5,586126dbdc545a0fd51637b8a5405bd8", - "summary.txt:md5,25dd7644a61b6f13f16ebf80153a3fa9" - ] - ], - [ - [ - "chr1_index_k13_c13_b1.block:md5,900a1be9d0cd47826eb9fefe8c8c96b1", - "chr1_index_k13_c13_b1.block2.gz:md5,eefc669b62e2cb94dbb94031a7bde4fd" - ] - ] - ] - ] - ], - "chrom_sizes": [ - "genome_transcriptome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "fai": [ - "genome_transcriptome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "fasta": [ - "genome_transcriptome.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "gene_bed": [ - "genome_transcriptome.bed:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "gtf": [ - "genome_transcriptome.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "hisat2_index": [ - - ], - "kallisto_index": [ - - ], - "rsem_index": [ - - ], - "salmon_index": [ - - ], - "sortmerna_index": [ - - ], - "splicesites": [ - - ], - "star_index": [ - - ], - "transcript_fasta": [ - "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" - ], - "versions": [ - "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", - "versions.yml:md5,71252f1a221be05593361acccb99506b", - "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", - "versions.yml:md5,bc99889446f02427c166b3219b793672", - "versions.yml:md5,cc8f32b7c37c35a075d38cb773004eaa" - ] - } + [ + "genome_transcriptome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + "genome_transcriptome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + "genome_transcriptome.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + "genome_transcriptome.bed:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + "genome_transcriptome.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" + ], + [ + "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", + "versions.yml:md5,71252f1a221be05593361acccb99506b", + "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", + "versions.yml:md5,bc99889446f02427c166b3219b793672", + "versions.yml:md5,cc8f32b7c37c35a075d38cb773004eaa" + ] ], "meta": { "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-07-03T19:34:19.689533" + "timestamp": "2024-07-04T17:02:19.539518" }, "skip_bbsplit - stub": { "content": [ From c572fc049c2cc61e27ac6818ea727453e73b16f4 Mon Sep 17 00:00:00 2001 From: maxulysse Date: Thu, 4 Jul 2024 17:14:01 +0200 Subject: [PATCH 457/634] update all subworkflows --- modules.json | 2 +- .../tests/main.nf.test | 15 +- .../tests/main.nf.test.snap | 179 +++++------------- 3 files changed, 66 insertions(+), 130 deletions(-) diff --git a/modules.json b/modules.json index c953f7e09..70a757758 100644 --- a/modules.json +++ b/modules.json @@ -315,7 +315,7 @@ }, "fastq_fastqc_umitools_fastp": { "branch": "master", - "git_sha": "f3aef88fcb3101e404b8385dbabaaba06f898dc4", + "git_sha": "9070d95e10a580a53629d3e32a8137fe87bba1e3", "installed_by": ["subworkflows"] }, "fastq_fastqc_umitools_trimgalore": { diff --git a/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/main.nf.test b/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/main.nf.test index a60dbe305..eb944b7d5 100644 --- a/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/main.nf.test +++ b/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/main.nf.test @@ -806,7 +806,20 @@ nextflow_workflow { then { assertAll( { assert workflow.success }, - { assert snapshot(workflow.out).match() } + { assert snapshot( + workflow.out.adapter_seq, + workflow.out.fastqc_raw_html, + workflow.out.fastqc_raw_zip, + workflow.out.fastqc_trim_html, + workflow.out.fastqc_trim_zip, + workflow.out.trim_html, + workflow.out.trim_json, + workflow.out.trim_log, + workflow.out.trim_read_count, + workflow.out.trim_reads_fail, + workflow.out.trim_reads_merged, + workflow.out.umi_log, + workflow.out.versions).match() } ) } } diff --git a/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/main.nf.test.snap b/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/main.nf.test.snap index 426f3b930..5b995aad5 100644 --- a/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/main.nf.test.snap +++ b/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/main.nf.test.snap @@ -482,140 +482,63 @@ }, "skip_trimming - stub": { "content": [ - { - "0": [ - [ - { - "id": "test", - "single_end": false - }, - [ - "/nf-core/test-datasets/modules/data/genomics/sarscov2/illumina/fastq/test_1.fastq.gz", - "/nf-core/test-datasets/modules/data/genomics/sarscov2/illumina/fastq/test_2.fastq.gz" - ] - ] - ], - "1": [ - [ - { - "id": "test", - "single_end": false - }, - "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "10": [ - - ], - "11": [ - - ], - "12": [ - - ], - "13": [ - "versions.yml:md5,f3dcaae948e8eed92b4a5557b4c6668e" - ], - "2": [ - [ - { - "id": "test", - "single_end": false - }, - "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "3": [ - - ], - "4": [ - - ], - "5": [ - - ], - "6": [ - - ], - "7": [ - - ], - "8": [ - - ], - "9": [ - - ], - "adapter_seq": [ - - ], - "fastqc_raw_html": [ - [ - { - "id": "test", - "single_end": false - }, - "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "fastqc_raw_zip": [ - [ - { - "id": "test", - "single_end": false - }, - "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "fastqc_trim_html": [ - - ], - "fastqc_trim_zip": [ - - ], - "reads": [ - [ - { - "id": "test", - "single_end": false - }, - [ - "/nf-core/test-datasets/modules/data/genomics/sarscov2/illumina/fastq/test_1.fastq.gz", - "/nf-core/test-datasets/modules/data/genomics/sarscov2/illumina/fastq/test_2.fastq.gz" - ] - ] - ], - "trim_html": [ - - ], - "trim_json": [ - - ], - "trim_log": [ - - ], - "trim_read_count": [ - - ], - "trim_reads_fail": [ - - ], - "trim_reads_merged": [ - - ], - "umi_log": [ - - ], - "versions": [ - "versions.yml:md5,f3dcaae948e8eed92b4a5557b4c6668e" + [ + + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" ] - } + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + "versions.yml:md5,f3dcaae948e8eed92b4a5557b4c6668e" + ] ], "meta": { "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-07-03T16:01:03.169826" + "timestamp": "2024-07-04T16:05:39.721894" }, "save_merged": { "content": [ From df9efba5a39211fe3e68945a6106daa9ed42d66f Mon Sep 17 00:00:00 2001 From: maxulysse Date: Fri, 5 Jul 2024 10:47:52 +0200 Subject: [PATCH 458/634] correctly align --- .../local/prepare_genome/tests/main.nf.test | 40 +++++++++---------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/subworkflows/local/prepare_genome/tests/main.nf.test b/subworkflows/local/prepare_genome/tests/main.nf.test index 4ef118242..fd8dc5154 100644 --- a/subworkflows/local/prepare_genome/tests/main.nf.test +++ b/subworkflows/local/prepare_genome/tests/main.nf.test @@ -561,11 +561,11 @@ nextflow_workflow { input[2] = file(params.pipelines_testdata_base_path + 'reference/genes.gff', checkIfExists: true) input[3] = false input[4] = file(params.pipelines_testdata_base_path + 'reference/transcriptome.fasta', checkIfExists: true) - input[5] = null - input[6] = null - input[7] = file(params.pipelines_testdata_base_path + 'reference/bbsplit_fasta_list.txt', checkIfExists: true) - input[8] = null - input[9] = null + input[5] = null + input[6] = null + input[7] = file(params.pipelines_testdata_base_path + 'reference/bbsplit_fasta_list.txt', checkIfExists: true) + input[8] = null + input[9] = null input[10] = file(params.pipelines_testdata_base_path + 'reference/rsem.tar.gz', checkIfExists: true) input[11] = file(params.pipelines_testdata_base_path + 'reference/salmon.tar.gz', checkIfExists: true) input[12] = null @@ -628,11 +628,11 @@ nextflow_workflow { input[2] = file(params.pipelines_testdata_base_path + 'reference/genes.gff', checkIfExists: true) input[3] = file(params.pipelines_testdata_base_path + 'reference/gfp.fa', checkIfExists: true) input[4] = false - input[5] = null - input[6] = null - input[7] = file(params.pipelines_testdata_base_path + 'reference/bbsplit_fasta_list.txt', checkIfExists: true) - input[8] = null - input[9] = null + input[5] = null + input[6] = null + input[7] = file(params.pipelines_testdata_base_path + 'reference/bbsplit_fasta_list.txt', checkIfExists: true) + input[8] = null + input[9] = null input[10] = file(params.pipelines_testdata_base_path + 'reference/rsem.tar.gz', checkIfExists: true) input[11] = file(params.pipelines_testdata_base_path + 'reference/salmon.tar.gz', checkIfExists: true) input[12] = null @@ -1904,11 +1904,11 @@ nextflow_workflow { input[2] = file(params.pipelines_testdata_base_path + 'reference/genes.gff', checkIfExists: true) input[3] = false input[4] = file(params.pipelines_testdata_base_path + 'reference/transcriptome.fasta', checkIfExists: true) - input[5] = null - input[6] = null - input[7] = file(params.pipelines_testdata_base_path + 'reference/bbsplit_fasta_list.txt', checkIfExists: true) - input[8] = null - input[9] = null + input[5] = null + input[6] = null + input[7] = file(params.pipelines_testdata_base_path + 'reference/bbsplit_fasta_list.txt', checkIfExists: true) + input[8] = null + input[9] = null input[10] = file(params.pipelines_testdata_base_path + 'reference/rsem.tar.gz', checkIfExists: true) input[11] = file(params.pipelines_testdata_base_path + 'reference/salmon.tar.gz', checkIfExists: true) input[12] = null @@ -1973,11 +1973,11 @@ nextflow_workflow { input[2] = file(params.pipelines_testdata_base_path + 'reference/genes.gff', checkIfExists: true) input[3] = file(params.pipelines_testdata_base_path + 'reference/gfp.fa', checkIfExists: true) input[4] = false - input[5] = null - input[6] = null - input[7] = file(params.pipelines_testdata_base_path + 'reference/bbsplit_fasta_list.txt', checkIfExists: true) - input[8] = null - input[9] = null + input[5] = null + input[6] = null + input[7] = file(params.pipelines_testdata_base_path + 'reference/bbsplit_fasta_list.txt', checkIfExists: true) + input[8] = null + input[9] = null input[10] = file(params.pipelines_testdata_base_path + 'reference/rsem.tar.gz', checkIfExists: true) input[11] = file(params.pipelines_testdata_base_path + 'reference/salmon.tar.gz', checkIfExists: true) input[12] = null From 3edd994224ebfbfe390df7156310f0a129a6b8eb Mon Sep 17 00:00:00 2001 From: Adam Talbot <12817534+adamrtalbot@users.noreply.github.com> Date: Fri, 5 Jul 2024 16:24:36 +0100 Subject: [PATCH 459/634] Use nf-core/setup-nf-test action for portability --- .github/workflows/ci.yml | 15 +-------------- 1 file changed, 1 insertion(+), 14 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 0363c9cd3..b6747cce5 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -70,20 +70,7 @@ jobs: python -m pip install --upgrade pip pip install pdiff - - name: Cache nf-test installation - id: cache-software - uses: actions/cache@v3 - with: - path: | - /usr/local/bin/nf-test - /home/runner/.nf-test/nf-test.jar - key: ${{ runner.os }}-${{ env.NFT_VER }}-nftest - - - name: Install nf-test - if: steps.cache-software.outputs.cache-hit != 'true' - run: | - wget -qO- https://code.askimed.com/install/nf-test | bash - sudo mv nf-test /usr/local/bin/ + - uses: nf-core/setup-nf-test@v1 - name: Run nf-test run: | From 9f3bd8a271cc47e9db40c6dcf0165129527c3a25 Mon Sep 17 00:00:00 2001 From: Adam Talbot <12817534+adamrtalbot@users.noreply.github.com> Date: Fri, 5 Jul 2024 16:26:51 +0100 Subject: [PATCH 460/634] changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3da552eb6..112d848d8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -98,6 +98,7 @@ Thank you to everyone else that has contributed by reporting bugs, enhancements - [PR #1330](https://github.com/nf-core/rnaseq/pull/1330) - Update all nf-core/modules and subworkflows - [PR #1331](https://github.com/nf-core/rnaseq/pull/1331) - Adding stubs for local modules - [PR #1334](https://github.com/nf-core/rnaseq/pull/1334) - Update all nf-core/modules and subworkflows with stubs +- [PR #1336](https://github.com/nf-core/rnaseq/pull/1334) - Use nf-core/setup-nf-test to install nf-test from cache during CI/CD ### Parameters From bc7d7a51ceaeef2804aec0ca1262bc767e1cd8de Mon Sep 17 00:00:00 2001 From: maxulysse Date: Tue, 9 Jul 2024 09:24:54 +0200 Subject: [PATCH 461/634] update all modules --- modules.json | 18 +- modules/nf-core/bbmap/bbsplit/main.nf | 16 +- .../nf-core/bbmap/bbsplit/tests/main.nf.test | 49 +- .../bbmap/bbsplit/tests/main.nf.test.snap | 95 +-- .../bedtools/genomecov/tests/main.nf.test | 78 +- .../genomecov/tests/main.nf.test.snap | 131 ++- modules/nf-core/cat/fastq/main.nf | 10 +- modules/nf-core/cat/fastq/tests/main.nf.test | 136 ++- .../nf-core/cat/fastq/tests/main.nf.test.snap | 207 +++++ .../catadditionalfasta/tests/main.nf.test | 8 +- .../tests/main.nf.test.snap | 36 +- modules/nf-core/custom/getchromsizes/main.nf | 3 + .../custom/getchromsizes/tests/main.nf.test | 51 +- .../getchromsizes/tests/main.nf.test.snap | 120 +++ .../nf-core/custom/tx2gene/tests/main.nf.test | 45 +- .../custom/tx2gene/tests/main.nf.test.snap | 96 ++- modules/nf-core/dupradar/dupradar.diff | 130 --- modules/nf-core/dupradar/main.nf | 3 +- modules/nf-core/dupradar/templates/dupradar.r | 9 +- modules/nf-core/dupradar/tests/main.nf.test | 76 +- .../nf-core/dupradar/tests/main.nf.test.snap | 632 +++++++------- modules/nf-core/fastp/main.nf | 6 +- modules/nf-core/fastp/tests/main.nf.test | 371 +++++---- modules/nf-core/fastp/tests/main.nf.test.snap | 781 +++++++++++++----- .../preseq/lcextrap/tests/main.nf.test | 4 - .../nf-core/salmon/quant/tests/main.nf.test | 2 +- modules/nf-core/sortmerna/tests/main.nf.test | 2 +- .../tests/main.nf.test | 9 + .../tests/main.nf.test.snap | 26 +- 29 files changed, 2061 insertions(+), 1089 deletions(-) delete mode 100644 modules/nf-core/dupradar/dupradar.diff diff --git a/modules.json b/modules.json index 70a757758..a539ea341 100644 --- a/modules.json +++ b/modules.json @@ -7,43 +7,43 @@ "nf-core": { "bbmap/bbsplit": { "branch": "master", - "git_sha": "2c6b1144ed58b6184ad58fc4e6b6a90219b4bf4f", + "git_sha": "1ceaa8ba4d0fd886dbca0e545815d905b7407de7", "installed_by": ["modules"] }, "bedtools/genomecov": { "branch": "master", - "git_sha": "81b90194ce9911dbd55bba2c65c6919f6677abc4", + "git_sha": "1ceaa8ba4d0fd886dbca0e545815d905b7407de7", "installed_by": ["modules"] }, "cat/fastq": { "branch": "master", - "git_sha": "4fc983ad0b30e6e32696fa7d980c76c7bfe1c03e", + "git_sha": "1ceaa8ba4d0fd886dbca0e545815d905b7407de7", "installed_by": ["modules"] }, "custom/catadditionalfasta": { "branch": "master", - "git_sha": "2c6b1144ed58b6184ad58fc4e6b6a90219b4bf4f", + "git_sha": "1ceaa8ba4d0fd886dbca0e545815d905b7407de7", "installed_by": ["modules"] }, "custom/getchromsizes": { "branch": "master", - "git_sha": "41a4135c502b42ede663af87efa70a96ecbd7cb9", + "git_sha": "1ceaa8ba4d0fd886dbca0e545815d905b7407de7", "installed_by": ["modules"] }, "custom/tx2gene": { "branch": "master", - "git_sha": "82024cf6325d2ee194e7f056d841ecad2f6856e9", + "git_sha": "1ceaa8ba4d0fd886dbca0e545815d905b7407de7", "installed_by": ["modules", "quantify_pseudo_alignment"] }, "dupradar": { "branch": "master", - "git_sha": "f632a6e25b05497477920183cff33ba72ab7b6fc", + "git_sha": "1ceaa8ba4d0fd886dbca0e545815d905b7407de7", "installed_by": ["modules"], "patch": "modules/nf-core/dupradar/dupradar.diff" }, "fastp": { "branch": "master", - "git_sha": "b90b5cd93149a1b3be263d916c7234fe0708a71c", + "git_sha": "1ceaa8ba4d0fd886dbca0e545815d905b7407de7", "installed_by": ["fastq_fastqc_umitools_fastp", "modules"] }, "fastqc": { @@ -315,7 +315,7 @@ }, "fastq_fastqc_umitools_fastp": { "branch": "master", - "git_sha": "9070d95e10a580a53629d3e32a8137fe87bba1e3", + "git_sha": "1ceaa8ba4d0fd886dbca0e545815d905b7407de7", "installed_by": ["subworkflows"] }, "fastq_fastqc_umitools_trimgalore": { diff --git a/modules/nf-core/bbmap/bbsplit/main.nf b/modules/nf-core/bbmap/bbsplit/main.nf index 57bf6398a..f308f6983 100644 --- a/modules/nf-core/bbmap/bbsplit/main.nf +++ b/modules/nf-core/bbmap/bbsplit/main.nf @@ -54,7 +54,6 @@ process BBMAP_BBSPLIT { log.error 'ERROR: Please specify as input a primary fasta file along with names and paths to non-primary fasta files.' } } else { - index_files = '' if (index) { index_files = "path=$index" } else if (primary_ref && other_ref_names && other_ref_paths) { @@ -109,14 +108,19 @@ process BBMAP_BBSPLIT { def prefix = task.ext.prefix ?: "${meta.id}" def other_refs = '' other_ref_names.eachWithIndex { name, index -> - other_refs += "echo '' | gzip > ${prefix}_primary_${name}.fastq.gz" + other_refs += "echo '' | gzip > ${prefix}_${name}.fastq.gz" } """ - mkdir bbsplit + if [ ! -d bbsplit ]; then + mkdir bbsplit + fi + + if ! (${only_build_index}); then + echo '' | gzip > ${prefix}_primary.fastq.gz + ${other_refs} + touch ${prefix}.stats.txt + fi - echo '' | gzip > ${prefix}_primary.fastq.gz - ${other_refs} - touch ${prefix}.stats.txt touch ${prefix}.log cat <<-END_VERSIONS > versions.yml diff --git a/modules/nf-core/bbmap/bbsplit/tests/main.nf.test b/modules/nf-core/bbmap/bbsplit/tests/main.nf.test index b878366b3..0674d247f 100644 --- a/modules/nf-core/bbmap/bbsplit/tests/main.nf.test +++ b/modules/nf-core/bbmap/bbsplit/tests/main.nf.test @@ -3,20 +3,13 @@ nextflow_process { name "Test Process BBMAP_BBSPLIT" script "../main.nf" process "BBMAP_BBSPLIT" - tag "modules" - tag "modules_nfcore" - tag "bbmap" - tag "bbmap/bbsplit" test("sarscov2_se_fastq_fasta_chr22_fasta - index") { when { - params { - outdir = "$outputDir" - } process { """ - input[0] = [[:],[]] + input[0] = [[:], []] input[1] = [] input[2] = Channel.of(file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true)) input[3] = Channel.of([ @@ -43,12 +36,9 @@ nextflow_process { options "-stub" when { - params { - outdir = "$outputDir" - } process { """ - input[0] = [[:],[]] + input[0] = [[:], []] input[1] = [] input[2] = Channel.of(file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true)) input[3] = Channel.of([ @@ -76,7 +66,7 @@ nextflow_process { script "../main.nf" process { """ - input[0] = [[:],[]] + input[0] = [[:], []] input[1] = [] input[2] = Channel.of(file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true)) input[3] = Channel.of([ @@ -90,9 +80,6 @@ nextflow_process { } when { - params { - outdir = "$outputDir" - } process { """ input[0] = Channel.of([ @@ -142,9 +129,11 @@ nextflow_process { assertAll( { assert process.success }, { assert path(process.out.log[0][1]).text.contains("If you wish to regenerate the index") }, - { assert snapshot(filteredFiles).match("bbsplit_index_filtered_files")}, { assert filesExist : "One or more files to exclude do not exist" }, - { assert snapshot(process.out.versions).match("versions")} + { assert snapshot( + filteredFiles, + process.out.versions + ).match()} ) } } @@ -153,17 +142,33 @@ nextflow_process { options "-stub" - when { - params { - outdir = "$outputDir" + setup { + + run("BBMAP_BBSPLIT", alias: "BBMAP_BBSPLIT_INDEX") { + script "../main.nf" + process { + """ + input[0] = [[:], []] + input[1] = [] + input[2] = Channel.of(file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true)) + input[3] = Channel.of([ + [ 'human' ], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr22/sequence/chr22_23800000-23980000.fa', checkIfExists: true) + ]) + input[4] = true + """ + } } + } + + when { process { """ input[0] = Channel.of([ [ id:'test', single_end:true ], // meta map file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true) ]) - input[1] = [] + input[1] = BBMAP_BBSPLIT_INDEX.out.index input[2] = Channel.of(file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true)) input[3] = Channel.of([ [ 'human' ], // meta map diff --git a/modules/nf-core/bbmap/bbsplit/tests/main.nf.test.snap b/modules/nf-core/bbmap/bbsplit/tests/main.nf.test.snap index 6a4889aaa..0d648d7d6 100644 --- a/modules/nf-core/bbmap/bbsplit/tests/main.nf.test.snap +++ b/modules/nf-core/bbmap/bbsplit/tests/main.nf.test.snap @@ -1,5 +1,5 @@ { - "bbsplit_index_filtered_files": { + "sarscov2_se_fastq_fasta_chr22_fasta": { "content": [ [ "chr1.chrom.gz:md5,8fec4c63ec642613ad10adf4cc2e6ade", @@ -7,25 +7,16 @@ "chr1_index_k13_c13_b1.block2.gz:md5,2556b45206835a0ff7078d683b5fd6e2", "merged_ref_9222711925172838098.fa.gz:md5,983cef447fb28394b88a5b49b3579f0c", "namelist.txt:md5,45e7a4cdc7a11a39ada56844ca3a1e30" - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-02-01T17:15:59.705013452" - }, - "versions": { - "content": [ + ], [ "versions.yml:md5,cb7f0e697ab2537f8ced951bfade90d4" ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.2" }, - "timestamp": "2024-02-01T17:11:22.441753642" + "timestamp": "2024-07-05T11:41:32.116928" }, "sarscov2_se_fastq_fasta_chr22_fasta - index": { "content": [ @@ -37,7 +28,7 @@ "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-06-20T16:41:29.784895" + "timestamp": "2024-07-05T11:41:06.072212" }, "sarscov2_se_fastq_fasta_chr22_fasta - index - stub": { "content": [ @@ -48,34 +39,13 @@ ] ], "1": [ - [ - { - - }, - [ - "null_primary.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", - "null_primary_human.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" - ] - ] + ], "2": [ - [ - { - - }, - [ - "null_primary.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", - "null_primary_human.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" - ] - ] + ], "3": [ - [ - { - - }, - "null.stats.txt:md5,d41d8cd98f00b204e9800998ecf8427e" - ] + ], "4": [ [ @@ -89,15 +59,7 @@ "versions.yml:md5,cb7f0e697ab2537f8ced951bfade90d4" ], "all_fastq": [ - [ - { - - }, - [ - "null_primary.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", - "null_primary_human.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" - ] - ] + ], "index": [ [ @@ -113,23 +75,10 @@ ] ], "primary_fastq": [ - [ - { - - }, - [ - "null_primary.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", - "null_primary_human.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" - ] - ] + ], "stats": [ - [ - { - - }, - "null.stats.txt:md5,d41d8cd98f00b204e9800998ecf8427e" - ] + ], "versions": [ "versions.yml:md5,cb7f0e697ab2537f8ced951bfade90d4" @@ -140,7 +89,7 @@ "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-06-20T18:49:27.280432" + "timestamp": "2024-07-05T11:45:21.48352" }, "sarscov2_se_fastq_fasta_chr22_fasta - stub": { "content": [ @@ -156,10 +105,7 @@ "id": "test", "single_end": true }, - [ - "test_primary.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", - "test_primary_human.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" - ] + "test_primary.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] ], "2": [ @@ -169,8 +115,8 @@ "single_end": true }, [ - "test_primary.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", - "test_primary_human.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + "test_human.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "test_primary.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] ] ], @@ -202,8 +148,8 @@ "single_end": true }, [ - "test_primary.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", - "test_primary_human.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + "test_human.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "test_primary.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] ] ], @@ -227,10 +173,7 @@ "id": "test", "single_end": true }, - [ - "test_primary.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", - "test_primary_human.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" - ] + "test_primary.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] ], "stats": [ @@ -251,6 +194,6 @@ "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-06-20T16:16:05.793544" + "timestamp": "2024-07-05T11:51:38.805111" } } \ No newline at end of file diff --git a/modules/nf-core/bedtools/genomecov/tests/main.nf.test b/modules/nf-core/bedtools/genomecov/tests/main.nf.test index fe1567d89..b8caa1e11 100644 --- a/modules/nf-core/bedtools/genomecov/tests/main.nf.test +++ b/modules/nf-core/bedtools/genomecov/tests/main.nf.test @@ -4,10 +4,10 @@ nextflow_process { process "BEDTOOLS_GENOMECOV" config "./nextflow.config" - test("sarscov2 - no scale") { + test("sarscov2 - no scale") { when { process { - """ + """ input[0] = [ [ id:'test' ], // meta map file(params.modules_testdata_base_path + "genomics/sarscov2/illumina/bam/test.paired_end.bam", checkIfExists: true), @@ -25,16 +25,15 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot(process.out).match("no_scale") } + { assert snapshot(process.out).match() } ) } - } test("sarscov2 - dummy sizes") { when { process { - """ + """ input[0] = [ [ id:'test'], file(params.modules_testdata_base_path + "genomics/sarscov2/illumina/bam/test.paired_end.bam", checkIfExists: true), @@ -52,16 +51,15 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot(process.out).match("dummy_sizes") } + { assert snapshot(process.out).match() } ) } - } test("sarscov2 - scale") { when { process { - """ + """ input[0] = [ [ id:'test'], file(params.modules_testdata_base_path + "genomics/sarscov2/genome/bed/baits.bed", checkIfExists: true), @@ -79,18 +77,17 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot(process.out).match("scale") } + { assert snapshot(process.out).match() } ) } - } - test("stub") { + test("sarscov2 - no scale - stub") { options "-stub" when { process { - """ + """ input[0] = [ [ id:'test' ], // meta map file(params.modules_testdata_base_path + "genomics/sarscov2/illumina/bam/test.paired_end.bam", checkIfExists: true), @@ -99,6 +96,34 @@ nextflow_process { // sizes input[1] = [] // extension + input[2] = "txt" + input[3] = true + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("sarscov2 - dummy sizes - stub") { + options "-stub" + + when { + process { + """ + input[0] = [ + [ id:'test'], + file(params.modules_testdata_base_path + "genomics/sarscov2/illumina/bam/test.paired_end.bam", checkIfExists: true), + 0.5 + ] + // sizes + input[1] = file('dummy_chromosome_sizes') + // extension input[2] = 'txt' input[3] = false """ @@ -108,10 +133,37 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot(file(process.out.genomecov[0][1]).name).match("stub") } + { assert snapshot(process.out).match() } ) } + } + + test("sarscov2 - scale - stub") { + options "-stub" + when { + process { + """ + input[0] = [ + [ id:'test'], + file(params.modules_testdata_base_path + "genomics/sarscov2/genome/bed/baits.bed", checkIfExists: true), + 0.5 + ] + // sizes + input[1] = file(params.modules_testdata_base_path + "genomics/sarscov2/genome/genome.sizes", checkIfExists: true) + // extension + input[2] = 'txt' + input[3] = false + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } } } diff --git a/modules/nf-core/bedtools/genomecov/tests/main.nf.test.snap b/modules/nf-core/bedtools/genomecov/tests/main.nf.test.snap index 8f9191e4c..da6dbe875 100644 --- a/modules/nf-core/bedtools/genomecov/tests/main.nf.test.snap +++ b/modules/nf-core/bedtools/genomecov/tests/main.nf.test.snap @@ -1,5 +1,5 @@ { - "dummy_sizes": { + "sarscov2 - dummy sizes": { "content": [ { "0": [ @@ -26,9 +26,13 @@ ] } ], - "timestamp": "2023-12-05T17:35:58.35232" + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-05T11:59:33.898146" }, - "no_scale": { + "sarscov2 - no scale - stub": { "content": [ { "0": [ @@ -36,7 +40,7 @@ { "id": "test" }, - "test.coverage.txt:md5,66083198daca6c001d328ba9616e9b53" + "test.coverage.txt:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "1": [ @@ -47,7 +51,7 @@ { "id": "test" }, - "test.coverage.txt:md5,66083198daca6c001d328ba9616e9b53" + "test.coverage.txt:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "versions": [ @@ -55,15 +59,46 @@ ] } ], - "timestamp": "2023-12-05T17:35:51.142496" + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-05T11:59:52.483371" }, - "stub": { + "sarscov2 - scale": { "content": [ - "test.coverage.txt" + { + "0": [ + [ + { + "id": "test" + }, + "test.coverage.txt:md5,de3c59c0ea123bcdbbad27bc0a0a601e" + ] + ], + "1": [ + "versions.yml:md5,5fd44452613992a6f71f2c73d2e117f2" + ], + "genomecov": [ + [ + { + "id": "test" + }, + "test.coverage.txt:md5,de3c59c0ea123bcdbbad27bc0a0a601e" + ] + ], + "versions": [ + "versions.yml:md5,5fd44452613992a6f71f2c73d2e117f2" + ] + } ], - "timestamp": "2023-12-05T17:36:13.084709" + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-05T11:59:43.69501" }, - "scale": { + "sarscov2 - scale - stub": { "content": [ { "0": [ @@ -71,7 +106,7 @@ { "id": "test" }, - "test.coverage.txt:md5,de3c59c0ea123bcdbbad27bc0a0a601e" + "test.coverage.txt:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "1": [ @@ -82,7 +117,73 @@ { "id": "test" }, - "test.coverage.txt:md5,de3c59c0ea123bcdbbad27bc0a0a601e" + "test.coverage.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,5fd44452613992a6f71f2c73d2e117f2" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-05T12:00:09.930036" + }, + "sarscov2 - no scale": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.coverage.txt:md5,66083198daca6c001d328ba9616e9b53" + ] + ], + "1": [ + "versions.yml:md5,5fd44452613992a6f71f2c73d2e117f2" + ], + "genomecov": [ + [ + { + "id": "test" + }, + "test.coverage.txt:md5,66083198daca6c001d328ba9616e9b53" + ] + ], + "versions": [ + "versions.yml:md5,5fd44452613992a6f71f2c73d2e117f2" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-05T11:59:25.448817" + }, + "sarscov2 - dummy sizes - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.coverage.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + "versions.yml:md5,5fd44452613992a6f71f2c73d2e117f2" + ], + "genomecov": [ + [ + { + "id": "test" + }, + "test.coverage.txt:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "versions": [ @@ -90,6 +191,10 @@ ] } ], - "timestamp": "2023-12-05T17:36:05.962006" + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-05T12:00:01.086433" } } \ No newline at end of file diff --git a/modules/nf-core/cat/fastq/main.nf b/modules/nf-core/cat/fastq/main.nf index f132b2adc..b68e5f911 100644 --- a/modules/nf-core/cat/fastq/main.nf +++ b/modules/nf-core/cat/fastq/main.nf @@ -53,9 +53,9 @@ process CAT_FASTQ { def prefix = task.ext.prefix ?: "${meta.id}" def readList = reads instanceof List ? reads.collect{ it.toString() } : [reads.toString()] if (meta.single_end) { - if (readList.size > 1) { + if (readList.size >= 1) { """ - touch ${prefix}.merged.fastq.gz + echo '' | gzip > ${prefix}.merged.fastq.gz cat <<-END_VERSIONS > versions.yml "${task.process}": @@ -64,10 +64,10 @@ process CAT_FASTQ { """ } } else { - if (readList.size > 2) { + if (readList.size >= 2) { """ - touch ${prefix}_1.merged.fastq.gz - touch ${prefix}_2.merged.fastq.gz + echo '' | gzip > ${prefix}_1.merged.fastq.gz + echo '' | gzip > ${prefix}_2.merged.fastq.gz cat <<-END_VERSIONS > versions.yml "${task.process}": diff --git a/modules/nf-core/cat/fastq/tests/main.nf.test b/modules/nf-core/cat/fastq/tests/main.nf.test index 7236c6cd9..6cc7aad15 100644 --- a/modules/nf-core/cat/fastq/tests/main.nf.test +++ b/modules/nf-core/cat/fastq/tests/main.nf.test @@ -9,9 +9,6 @@ nextflow_process { test("test_cat_fastq_single_end") { when { - params { - outdir = "$outputDir" - } process { """ input[0] = Channel.of([ @@ -34,9 +31,6 @@ nextflow_process { test("test_cat_fastq_paired_end") { when { - params { - outdir = "$outputDir" - } process { """ input[0] = Channel.of([ @@ -61,9 +55,6 @@ nextflow_process { test("test_cat_fastq_single_end_same_name") { when { - params { - outdir = "$outputDir" - } process { """ input[0] = Channel.of([ @@ -86,9 +77,6 @@ nextflow_process { test("test_cat_fastq_paired_end_same_name") { when { - params { - outdir = "$outputDir" - } process { """ input[0] = Channel.of([ @@ -113,9 +101,129 @@ nextflow_process { test("test_cat_fastq_single_end_single_file") { when { - params { - outdir = "$outputDir" + process { + """ + input[0] = Channel.of([ + [ id:'test', 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 snapshot(process.out).match() } + ) + } + } + + test("test_cat_fastq_single_end - stub") { + + options "-stub" + + when { + process { + """ + input[0] = Channel.of([ + [ id:'test', single_end:true ], // 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 snapshot(process.out).match() } + ) + } + } + + test("test_cat_fastq_paired_end - stub") { + + options "-stub" + + 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 snapshot(process.out).match() } + ) + } + } + + test("test_cat_fastq_single_end_same_name - stub") { + + options "-stub" + + when { + process { + """ + input[0] = Channel.of([ + [ id:'test', single_end:true ], // 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_1.fastq.gz', checkIfExists: true)] + ]) + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("test_cat_fastq_paired_end_same_name - stub") { + + options "-stub" + + 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/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(process.out).match() } + ) + } + } + + test("test_cat_fastq_single_end_single_file - stub") { + + options "-stub" + + when { process { """ input[0] = Channel.of([ diff --git a/modules/nf-core/cat/fastq/tests/main.nf.test.snap b/modules/nf-core/cat/fastq/tests/main.nf.test.snap index 43dfe28fc..aec119a94 100644 --- a/modules/nf-core/cat/fastq/tests/main.nf.test.snap +++ b/modules/nf-core/cat/fastq/tests/main.nf.test.snap @@ -28,6 +28,10 @@ ] } ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, "timestamp": "2024-01-17T17:30:39.816981" }, "test_cat_fastq_single_end_same_name": { @@ -59,6 +63,10 @@ ] } ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, "timestamp": "2024-01-17T17:32:35.229332" }, "test_cat_fastq_single_end_single_file": { @@ -90,6 +98,10 @@ ] } ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, "timestamp": "2024-01-17T17:34:00.058829" }, "test_cat_fastq_paired_end_same_name": { @@ -127,8 +139,123 @@ ] } ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, "timestamp": "2024-01-17T17:33:33.031555" }, + "test_cat_fastq_single_end - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": true + }, + "test.merged.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "1": [ + "versions.yml:md5,d42d6e24d67004608495883e00bd501b" + ], + "reads": [ + [ + { + "id": "test", + "single_end": true + }, + "test.merged.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "versions": [ + "versions.yml:md5,d42d6e24d67004608495883e00bd501b" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-05T12:07:28.244999" + }, + "test_cat_fastq_paired_end_same_name - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test_1.merged.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "test_2.merged.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ] + ], + "1": [ + "versions.yml:md5,d42d6e24d67004608495883e00bd501b" + ], + "reads": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test_1.merged.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "test_2.merged.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ] + ], + "versions": [ + "versions.yml:md5,d42d6e24d67004608495883e00bd501b" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-05T12:07:57.070911" + }, + "test_cat_fastq_single_end_same_name - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": true + }, + "test.merged.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "1": [ + "versions.yml:md5,d42d6e24d67004608495883e00bd501b" + ], + "reads": [ + [ + { + "id": "test", + "single_end": true + }, + "test.merged.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "versions": [ + "versions.yml:md5,d42d6e24d67004608495883e00bd501b" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-05T12:07:46.796254" + }, "test_cat_fastq_paired_end": { "content": [ { @@ -164,6 +291,86 @@ ] } ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, "timestamp": "2024-01-17T17:32:02.270935" + }, + "test_cat_fastq_paired_end - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test_1.merged.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "test_2.merged.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ] + ], + "1": [ + "versions.yml:md5,d42d6e24d67004608495883e00bd501b" + ], + "reads": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test_1.merged.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "test_2.merged.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ] + ], + "versions": [ + "versions.yml:md5,d42d6e24d67004608495883e00bd501b" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-05T12:07:37.807553" + }, + "test_cat_fastq_single_end_single_file - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": true + }, + "test.merged.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "1": [ + "versions.yml:md5,d42d6e24d67004608495883e00bd501b" + ], + "reads": [ + [ + { + "id": "test", + "single_end": true + }, + "test.merged.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "versions": [ + "versions.yml:md5,d42d6e24d67004608495883e00bd501b" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-05T12:14:51.861264" } } \ No newline at end of file diff --git a/modules/nf-core/custom/catadditionalfasta/tests/main.nf.test b/modules/nf-core/custom/catadditionalfasta/tests/main.nf.test index 70227f1c5..878c05d16 100644 --- a/modules/nf-core/custom/catadditionalfasta/tests/main.nf.test +++ b/modules/nf-core/custom/catadditionalfasta/tests/main.nf.test @@ -26,9 +26,11 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot(process.out.fasta).match("fasta") }, - { assert snapshot(process.out.gtf).match("gtf") }, - { assert snapshot(process.out.versions).match("versions") } + { assert snapshot( + process.out.fasta, + process.out.gtf, + process.out.versions + ).match() } ) } } diff --git a/modules/nf-core/custom/catadditionalfasta/tests/main.nf.test.snap b/modules/nf-core/custom/catadditionalfasta/tests/main.nf.test.snap index 9e49a90c9..4767fd9a0 100644 --- a/modules/nf-core/custom/catadditionalfasta/tests/main.nf.test.snap +++ b/modules/nf-core/custom/catadditionalfasta/tests/main.nf.test.snap @@ -1,17 +1,5 @@ { - "versions": { - "content": [ - [ - "versions.yml:md5,26f47339777a265af57338ac7f0f8798" - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" - }, - "timestamp": "2023-12-20T20:52:55.242485" - }, - "gtf": { + "sarscov2 - fastq - gtf": { "content": [ [ [ @@ -19,33 +7,27 @@ "id": "test", "single_end": false }, - "genome_transcriptome.gtf:md5,bc88d95e7f27540e6b9906105d5be361" + "genome_transcriptome.fasta:md5,6a20c1a2e465519320a0d01f338f5cb5" ] - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" - }, - "timestamp": "2023-12-20T19:46:31.839377" - }, - "fasta": { - "content": [ + ], [ [ { "id": "test", "single_end": false }, - "genome_transcriptome.fasta:md5,6a20c1a2e465519320a0d01f338f5cb5" + "genome_transcriptome.gtf:md5,bc88d95e7f27540e6b9906105d5be361" ] + ], + [ + "versions.yml:md5,26f47339777a265af57338ac7f0f8798" ] ], "meta": { "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2023-12-20T19:42:47.12194" + "timestamp": "2024-07-05T12:19:28.965471" }, "sarscov2 - fastq - gtf - stub": { "content": [ @@ -98,6 +80,6 @@ "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-06-20T17:10:38.966949" + "timestamp": "2024-07-05T12:19:38.549677" } } \ No newline at end of file diff --git a/modules/nf-core/custom/getchromsizes/main.nf b/modules/nf-core/custom/getchromsizes/main.nf index 581f4b77d..3edf7c221 100644 --- a/modules/nf-core/custom/getchromsizes/main.nf +++ b/modules/nf-core/custom/getchromsizes/main.nf @@ -35,6 +35,9 @@ process CUSTOM_GETCHROMSIZES { """ touch ${fasta}.fai touch ${fasta}.sizes + if [[ "${fasta.extension}" == "gz" ]]; then + touch ${fasta}.gzi + fi cat <<-END_VERSIONS > versions.yml "${task.process}": diff --git a/modules/nf-core/custom/getchromsizes/tests/main.nf.test b/modules/nf-core/custom/getchromsizes/tests/main.nf.test index 3b18914b1..2dadc1a55 100644 --- a/modules/nf-core/custom/getchromsizes/tests/main.nf.test +++ b/modules/nf-core/custom/getchromsizes/tests/main.nf.test @@ -7,9 +7,6 @@ nextflow_process { test("test_custom_getchromsizes") { when { - params { - outdir = "$outputDir" - } process { """ input[0] = Channel.of([ @@ -26,15 +23,11 @@ nextflow_process { { assert snapshot(process.out).match() } ) } - } test("test_custom_getchromsizes_bgzip") { when { - params { - outdir = "$outputDir" - } process { """ input[0] = Channel.of([ @@ -51,7 +44,51 @@ nextflow_process { { assert snapshot(process.out).match() } ) } + } + + test("test_custom_getchromsizes - stub") { + + options "-stub" + + when { + process { + """ + input[0] = Channel.of([ + [ id:'test' ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) + ]) + """ + } + } + then { + assertAll ( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } } + test("test_custom_getchromsizes_bgzip - stub") { + + options "-stub" + + when { + process { + """ + input[0] = Channel.of([ + [ id:'test' ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.gz', checkIfExists: true) + ]) + """ + } + } + + then { + assertAll ( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } } diff --git a/modules/nf-core/custom/getchromsizes/tests/main.nf.test.snap b/modules/nf-core/custom/getchromsizes/tests/main.nf.test.snap index 3c53d4624..c37b284d7 100644 --- a/modules/nf-core/custom/getchromsizes/tests/main.nf.test.snap +++ b/modules/nf-core/custom/getchromsizes/tests/main.nf.test.snap @@ -1,4 +1,69 @@ { + "test_custom_getchromsizes_bgzip - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "genome.fasta.gz.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + [ + { + "id": "test" + }, + "genome.fasta.gz.fai:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + [ + { + "id": "test" + }, + "genome.fasta.gz.gzi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "3": [ + "versions.yml:md5,0d5a7c33bddcb1edad6bf0705b258e6f" + ], + "fai": [ + [ + { + "id": "test" + }, + "genome.fasta.gz.fai:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "gzi": [ + [ + { + "id": "test" + }, + "genome.fasta.gz.gzi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "sizes": [ + [ + { + "id": "test" + }, + "genome.fasta.gz.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,0d5a7c33bddcb1edad6bf0705b258e6f" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-05T12:38:36.927106" + }, "test_custom_getchromsizes": { "content": [ { @@ -118,5 +183,60 @@ "nextflow": "24.04.2" }, "timestamp": "2024-06-20T13:23:06.241379" + }, + "test_custom_getchromsizes - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "genome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + [ + { + "id": "test" + }, + "genome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + + ], + "3": [ + "versions.yml:md5,0d5a7c33bddcb1edad6bf0705b258e6f" + ], + "fai": [ + [ + { + "id": "test" + }, + "genome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "gzi": [ + + ], + "sizes": [ + [ + { + "id": "test" + }, + "genome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,0d5a7c33bddcb1edad6bf0705b258e6f" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-05T12:24:05.697845" } } \ No newline at end of file diff --git a/modules/nf-core/custom/tx2gene/tests/main.nf.test b/modules/nf-core/custom/tx2gene/tests/main.nf.test index 8a7a6d1b2..e56a0b8fe 100644 --- a/modules/nf-core/custom/tx2gene/tests/main.nf.test +++ b/modules/nf-core/custom/tx2gene/tests/main.nf.test @@ -4,22 +4,21 @@ nextflow_process { script "../main.nf" process "CUSTOM_TX2GENE" - setup { + test("saccharomyces_cerevisiae - gtf") { - run("UNTAR") { - script "../../../untar/main.nf" - process { - """ - input[0] = Channel.of([ - [ id:'test'], // meta map - file(params.modules_testdata_base_path + 'genomics/eukaryotes/saccharomyces_cerevisiae/kallisto_results.tar.gz', checkIfExists: true) - ]) - """ + setup { + run("UNTAR") { + script "../../../untar/main.nf" + process { + """ + input[0] = Channel.of([ + [ id:'test'], // meta map + file(params.modules_testdata_base_path + 'genomics/eukaryotes/saccharomyces_cerevisiae/kallisto_results.tar.gz', checkIfExists: true) + ]) + """ + } } } - } - - test("saccharomyces_cerevisiae - gtf") { when { process { @@ -39,8 +38,7 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot(process.out.tx2gene).match('tx2gene') }, - { assert snapshot(process.out.versions).match('versions') } + { assert snapshot(process.out).match() } ) } } @@ -49,6 +47,20 @@ nextflow_process { options "-stub" + setup { + run("UNTAR") { + script "../../../untar/main.nf" + process { + """ + input[0] = Channel.of([ + [ id:'test'], // meta map + file(params.modules_testdata_base_path + 'genomics/eukaryotes/saccharomyces_cerevisiae/kallisto_results.tar.gz', checkIfExists: true) + ]) + """ + } + } + } + when { process { """ @@ -67,8 +79,7 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot(process.out.tx2gene).match('tx2gene - stub') }, - { assert snapshot(process.out.versions).match('versions - stub') } + { assert snapshot(process.out).match() } ) } } diff --git a/modules/nf-core/custom/tx2gene/tests/main.nf.test.snap b/modules/nf-core/custom/tx2gene/tests/main.nf.test.snap index 1e76e10d6..7bc258353 100644 --- a/modules/nf-core/custom/tx2gene/tests/main.nf.test.snap +++ b/modules/nf-core/custom/tx2gene/tests/main.nf.test.snap @@ -1,60 +1,68 @@ { - "versions": { + "saccharomyces_cerevisiae - gtf": { "content": [ - [ - "versions.yml:md5,fb8145d7fbc6043ba031249b23ecda50" - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" - }, - "timestamp": "2024-02-26T13:14:18.218251" - }, - "tx2gene": { - "content": [ - [ - [ - { - "id": "test" - }, - "test.tx2gene.tsv:md5,0e2418a69d2eba45097ebffc2f700bfe" + { + "0": [ + [ + { + "id": "test" + }, + "test.tx2gene.tsv:md5,0e2418a69d2eba45097ebffc2f700bfe" + ] + ], + "1": [ + "versions.yml:md5,fb8145d7fbc6043ba031249b23ecda50" + ], + "tx2gene": [ + [ + { + "id": "test" + }, + "test.tx2gene.tsv:md5,0e2418a69d2eba45097ebffc2f700bfe" + ] + ], + "versions": [ + "versions.yml:md5,fb8145d7fbc6043ba031249b23ecda50" ] - ] + } ], "meta": { "nf-test": "0.8.4", - "nextflow": "24.01.0" + "nextflow": "24.04.2" }, - "timestamp": "2024-02-26T13:14:18.21054" + "timestamp": "2024-07-05T13:13:11.305047" }, - "tx2gene - stub": { + "saccharomyces_cerevisiae - gtf - stub": { "content": [ - [ - [ - { - "id": "test" - }, - "test.tx2gene.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + { + "0": [ + [ + { + "id": "test" + }, + "test.tx2gene.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + "versions.yml:md5,5613eefbca41377128f1d8dc09b9fb60" + ], + "tx2gene": [ + [ + { + "id": "test" + }, + "test.tx2gene.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,5613eefbca41377128f1d8dc09b9fb60" ] - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" - }, - "timestamp": "2024-02-26T13:14:25.915434" - }, - "versions - stub": { - "content": [ - [ - "versions.yml:md5,5613eefbca41377128f1d8dc09b9fb60" - ] + } ], "meta": { "nf-test": "0.8.4", - "nextflow": "24.01.0" + "nextflow": "24.04.2" }, - "timestamp": "2024-02-26T13:14:25.919243" + "timestamp": "2024-07-05T13:13:24.237507" } } \ No newline at end of file diff --git a/modules/nf-core/dupradar/dupradar.diff b/modules/nf-core/dupradar/dupradar.diff deleted file mode 100644 index c24bc6570..000000000 --- a/modules/nf-core/dupradar/dupradar.diff +++ /dev/null @@ -1,130 +0,0 @@ -Changes in module 'nf-core/dupradar' ---- /dev/null -+++ modules/nf-core/dupradar/nextflow.config -@@ -0,0 +1,35 @@ -+if (!params.skip_alignment && !params.skip_qc) { -+ if (!params.skip_dupradar) { -+ process { -+ withName: 'DUPRADAR' { -+ publishDir = [ -+ [ -+ path: { "${params.outdir}/${params.aligner}/dupradar/scatter_plot" }, -+ mode: params.publish_dir_mode, -+ pattern: "*Dens.pdf" -+ ], -+ [ -+ path: { "${params.outdir}/${params.aligner}/dupradar/box_plot" }, -+ mode: params.publish_dir_mode, -+ pattern: "*Boxplot.pdf" -+ ], -+ [ -+ path: { "${params.outdir}/${params.aligner}/dupradar/histogram" }, -+ mode: params.publish_dir_mode, -+ pattern: "*Hist.pdf" -+ ], -+ [ -+ path: { "${params.outdir}/${params.aligner}/dupradar/gene_data" }, -+ mode: params.publish_dir_mode, -+ pattern: "*Matrix.txt" -+ ], -+ [ -+ path: { "${params.outdir}/${params.aligner}/dupradar/intercepts_slope" }, -+ mode: params.publish_dir_mode, -+ pattern: "*slope.txt" -+ ] -+ ] -+ } -+ } -+ } -+} - ---- modules/nf-core/dupradar/tests/main.nf.test.snap -+++ modules/nf-core/dupradar/tests/main.nf.test.snap -@@ -50,8 +50,8 @@ - "strandedness": "forward" - }, - [ -- "test_dup_intercept_mqc.txt:md5,d69369924aeb9695b0e97e755e0d9ea3", -- "test_duprateExpDensCurve_mqc.txt:md5,f4a50dc09de81219ed4449c11153ba6e" -+ "test_dup_intercept_mqc.txt:md5,002855b42a71aa0f407ef7fa19df9ac3", -+ "test_duprateExpDensCurve_mqc.txt:md5,5c6ab345e3e0089d409624d6a4bf4e40" - ] - ] - ] -@@ -150,8 +150,8 @@ - "strandedness": "forward" - }, - [ -- "test_dup_intercept_mqc.txt:md5,7b6fb70cbede0d20ffa576a0cc0b249d", -- "test_duprateExpDensCurve_mqc.txt:md5,49b44937123c14b622f346cb6156dd4f" -+ "test_dup_intercept_mqc.txt:md5,11961f0962ffc70e42aa57a12984e0fc", -+ "test_duprateExpDensCurve_mqc.txt:md5,eb742e354c8d5d6bed8d2ebac087f0ac" - ] - ] - ] -@@ -357,4 +357,4 @@ - }, - "timestamp": "2024-03-07T13:07:43.344100132" - } --}+} - ---- modules/nf-core/dupradar/tests/main.nf.test -+++ modules/nf-core/dupradar/tests/main.nf.test -@@ -3,10 +3,6 @@ - name "Test Process DUPRADAR" - script "../main.nf" - process "DUPRADAR" -- -- tag "modules" -- tag "modules_nfcore" -- tag "dupradar" - - test("sarscov2 - bam - single_end") { - - ---- modules/nf-core/dupradar/templates/dupradar.r -+++ modules/nf-core/dupradar/templates/dupradar.r -@@ -88,7 +88,6 @@ - # max: 100 - # min: 0 - # scale: 'RdYlGn-rev' --# format: '{:.2f}%' - Sample dupRadar_intercept" - - write(line,file=paste0(output_prefix, "_dup_intercept_mqc.txt"),append=TRUE) -@@ -115,15 +114,15 @@ - # This plot shows the general linear models - a summary of the gene duplication distributions. \" - #pconfig: - # title: 'DupRadar General Linear Model' --# xLog: True -+# xlog: True - # xlab: 'expression (reads/kbp)' - # ylab: '% duplicate reads' - # ymax: 100 - # ymin: 0 - # tt_label: '{point.x:.1f} reads/kbp: {point.y:,.2f}% duplicates' --# xPlotLines: -+# x_lines: - # - color: 'green' --# dashStyle: 'LongDash' -+# dash: 'LongDash' - # label: - # style: {color: 'green'} - # text: '0.5 RPKM' -@@ -132,7 +131,7 @@ - # value: 0.5 - # width: 1 - # - color: 'red' --# dashStyle: 'LongDash' -+# dash: 'LongDash' - # label: - # style: {color: 'red'} - # text: '1 read/bp' - ---- modules/nf-core/dupradar/tests/tags.yml -+++ /dev/null -@@ -1,2 +0,0 @@ --dupradar: -- - "modules/nf-core/dupradar/**" - -************************************************************ diff --git a/modules/nf-core/dupradar/main.nf b/modules/nf-core/dupradar/main.nf index 6ed502bbe..8f3665a67 100644 --- a/modules/nf-core/dupradar/main.nf +++ b/modules/nf-core/dupradar/main.nf @@ -34,7 +34,8 @@ process DUPRADAR { touch ${meta.id}_expressionHist.pdf touch ${meta.id}_dupMatrix.txt touch ${meta.id}_intercept_slope.txt - touch ${meta.id}_mqc.txt + touch ${meta.id}_dup_intercept_mqc.txt + touch ${meta.id}_duprateExpDensCurve_mqc.txt touch ${meta.id}.R_sessionInfo.log cat <<-END_VERSIONS > versions.yml diff --git a/modules/nf-core/dupradar/templates/dupradar.r b/modules/nf-core/dupradar/templates/dupradar.r index 95e7b4d88..ec20cb851 100755 --- a/modules/nf-core/dupradar/templates/dupradar.r +++ b/modules/nf-core/dupradar/templates/dupradar.r @@ -88,6 +88,7 @@ line="#id: DupInt # max: 100 # min: 0 # scale: 'RdYlGn-rev' +# format: '{:.2f}%' Sample dupRadar_intercept" write(line,file=paste0(output_prefix, "_dup_intercept_mqc.txt"),append=TRUE) @@ -114,15 +115,15 @@ line="#id: dupradar # This plot shows the general linear models - a summary of the gene duplication distributions. \" #pconfig: # title: 'DupRadar General Linear Model' -# xlog: True +# xLog: True # xlab: 'expression (reads/kbp)' # ylab: '% duplicate reads' # ymax: 100 # ymin: 0 # tt_label: '{point.x:.1f} reads/kbp: {point.y:,.2f}% duplicates' -# x_lines: +# xPlotLines: # - color: 'green' -# dash: 'LongDash' +# dashStyle: 'LongDash' # label: # style: {color: 'green'} # text: '0.5 RPKM' @@ -131,7 +132,7 @@ line="#id: dupradar # value: 0.5 # width: 1 # - color: 'red' -# dash: 'LongDash' +# dashStyle: 'LongDash' # label: # style: {color: 'red'} # text: '1 read/bp' diff --git a/modules/nf-core/dupradar/tests/main.nf.test b/modules/nf-core/dupradar/tests/main.nf.test index e4bfcb917..60f8dfb7d 100644 --- a/modules/nf-core/dupradar/tests/main.nf.test +++ b/modules/nf-core/dupradar/tests/main.nf.test @@ -7,15 +7,15 @@ nextflow_process { test("sarscov2 - bam - single_end") { config './nextflow.config' - + when { process { """ - input[0] = [ + input[0] = [ [ id:'test', single_end:true, strandedness:'forward' ], // meta map file(params.modules_testdata_base_path + "genomics/sarscov2/illumina/bam/test.single_end.bam", checkIfExists: true) ] - input[1] = [ + input[1] = [ [ id:'sarscov2' ], // meta map file(params.modules_testdata_base_path + "genomics/sarscov2/genome/genome.gtf", checkIfExists: true) ] @@ -26,32 +26,33 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot(file(process.out.scatter2d[0][1]).name).match('scatter_single_end') }, - { assert snapshot(file(process.out.boxplot[0][1]).name).match('boxplot_single_end') }, - { assert snapshot(file(process.out.hist[0][1]).name).match('hist_single_end') }, - { assert snapshot(process.out.dupmatrix).match('dupmatrix_single_end') }, - { assert snapshot(process.out.intercept_slopt).match('intercept_slope_single_end') }, - { assert snapshot(process.out.multiqc).match('multiqc_single_end') }, - { assert snapshot(process.out.versions).match('versions_single_end') } + { assert snapshot( + file(process.out.boxplot[0][1]).name, + file(process.out.hist[0][1]).name, + file(process.out.scatter2d[0][1]).name, + process.out.dupmatrix, + process.out.intercept_slopt, + process.out.multiqc, + process.out.versions + ).match() } ) } - } - + test("sarscov2 - bam - single_end - stub") { config './nextflow.config' - + options '-stub' when { process { """ - input[0] = [ + input[0] = [ [ id:'test', single_end:true, strandedness:'forward' ], // meta map file(params.modules_testdata_base_path + "genomics/sarscov2/illumina/bam/test.single_end.bam", checkIfExists: true) ] - input[1] = [ + input[1] = [ [ id:'sarscov2' ], // meta map file(params.modules_testdata_base_path + "genomics/sarscov2/genome/genome.gtf", checkIfExists: true) ] @@ -62,16 +63,9 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot(file(process.out.scatter2d[0][1]).name).match('scatter_single_end_stub') }, - { assert snapshot(file(process.out.boxplot[0][1]).name).match('boxplot_single_end_stub') }, - { assert snapshot(file(process.out.hist[0][1]).name).match('hist_single_end_stub') }, - { assert snapshot(process.out.dupmatrix).match('dupmatrix_single_end_stub') }, - { assert snapshot(process.out.intercept_slopt).match('intercept_slope_single_end_stub') }, - { assert snapshot(process.out.multiqc).match('multiqc_single_end_stub') }, - { assert snapshot(process.out.versions).match('versions_single_end_stub') } + { assert snapshot(process.out).match() } ) } - } test("sarscov2 - bam - paired_end") { @@ -81,11 +75,11 @@ nextflow_process { when { process { """ - input[0] = [ + input[0] = [ [ id:'test', single_end:false, strandedness:'forward' ], // meta map file(params.modules_testdata_base_path + "genomics/sarscov2/illumina/bam/test.paired_end.bam", checkIfExists: true) ] - input[1] = [ + input[1] = [ [ id:'sarscov2' ], // meta map file(params.modules_testdata_base_path + "genomics/sarscov2/genome/genome.gtf", checkIfExists: true) ] @@ -96,31 +90,33 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot(file(process.out.scatter2d[0][1]).name).match('scatter_paired_end') }, - { assert snapshot(file(process.out.boxplot[0][1]).name).match('boxplot_paired_end') }, - { assert snapshot(file(process.out.hist[0][1]).name).match('hist_paired_end') }, - { assert snapshot(process.out.dupmatrix).match('dupmatrix_paired_end') }, - { assert snapshot(process.out.intercept_slopt).match('intercept_slope_paired_end') }, - { assert snapshot(process.out.multiqc).match('multiqc_paired_end') }, - { assert snapshot(process.out.versions).match('versions_paired_end') } + { assert snapshot( + file(process.out.boxplot[0][1]).name, + file(process.out.hist[0][1]).name, + file(process.out.scatter2d[0][1]).name, + process.out.dupmatrix, + process.out.intercept_slopt, + process.out.multiqc, + process.out.versions + ).match() } ) } } - + test("sarscov2 - bam - paired_end - stub") { config './nextflow.config' options '-stub' - + when { process { """ - input[0] = [ + input[0] = [ [ id:'test', single_end:false, strandedness:'forward' ], // meta map file(params.modules_testdata_base_path + "genomics/sarscov2/illumina/bam/test.paired_end.bam", checkIfExists: true) ] - input[1] = [ + input[1] = [ [ id:'sarscov2' ], // meta map file(params.modules_testdata_base_path + "genomics/sarscov2/genome/genome.gtf", checkIfExists: true) ] @@ -131,13 +127,7 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot(file(process.out.scatter2d[0][1]).name).match('scatter_paired_end_stub') }, - { assert snapshot(file(process.out.boxplot[0][1]).name).match('boxplot_paired_end_stub') }, - { assert snapshot(file(process.out.hist[0][1]).name).match('hist_paired_end_stub') }, - { assert snapshot(process.out.dupmatrix).match('dupmatrix_paired_end_stub') }, - { assert snapshot(process.out.intercept_slopt).match('intercept_slope_paired_end_stub') }, - { assert snapshot(process.out.multiqc).match('multiqc_paired_end_stub') }, - { assert snapshot(process.out.versions).match('versions_paired_end_stub') } + { assert snapshot(process.out).match() } ) } } diff --git a/modules/nf-core/dupradar/tests/main.nf.test.snap b/modules/nf-core/dupradar/tests/main.nf.test.snap index 79587a439..0b38d4be1 100644 --- a/modules/nf-core/dupradar/tests/main.nf.test.snap +++ b/modules/nf-core/dupradar/tests/main.nf.test.snap @@ -1,16 +1,9 @@ { - "boxplot_single_end": { - "content": [ - "test_duprateExpBoxplot.pdf" - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-03-07T13:07:33.021785925" - }, - "multiqc_single_end_stub": { + "sarscov2 - bam - single_end": { "content": [ + "test_duprateExpBoxplot.pdf", + "test_expressionHist.pdf", + "test_duprateExpDens.pdf", [ [ { @@ -18,164 +11,201 @@ "single_end": true, "strandedness": "forward" }, - "test_mqc.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + "test_dupMatrix.txt:md5,2beda4c140548a2b8c91bf6bde01ddc6" ] - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-03-07T13:07:43.36647107" - }, - "versions_paired_end_stub": { - "content": [ - [ - "versions.yml:md5,cd524e9e74304c2930cf28e2d741d351" - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-03-07T13:08:05.545356706" - }, - "multiqc_paired_end": { - "content": [ + ], + null, [ [ { "id": "test", - "single_end": false, + "single_end": true, "strandedness": "forward" }, [ - "test_dup_intercept_mqc.txt:md5,002855b42a71aa0f407ef7fa19df9ac3", - "test_duprateExpDensCurve_mqc.txt:md5,5c6ab345e3e0089d409624d6a4bf4e40" + "test_dup_intercept_mqc.txt:md5,7b6fb70cbede0d20ffa576a0cc0b249d", + "test_duprateExpDensCurve_mqc.txt:md5,49b44937123c14b622f346cb6156dd4f" ] ] - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-03-07T13:07:55.730550241" - }, - "boxplot_paired_end_stub": { - "content": [ - "test_duprateExpBoxplot.pdf" - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-03-07T13:08:05.512885589" - }, - "scatter_single_end": { - "content": [ - "test_duprateExpDens.pdf" - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-03-07T13:07:33.010955775" - }, - "hist_single_end_stub": { - "content": [ - "test_expressionHist.pdf" - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-03-07T13:07:43.353498911" - }, - "scatter_paired_end_stub": { - "content": [ - "test_duprateExpDens.pdf" - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-03-07T13:08:05.507974569" - }, - "dupmatrix_single_end": { - "content": [ - [ - [ - { - "id": "test", - "single_end": true, - "strandedness": "forward" - }, - "test_dupMatrix.txt:md5,2beda4c140548a2b8c91bf6bde01ddc6" - ] - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-03-07T13:07:33.027798024" - }, - "dupmatrix_single_end_stub": { - "content": [ + ], [ - [ - { - "id": "test", - "single_end": true, - "strandedness": "forward" - }, - "test_dupMatrix.txt:md5,d41d8cd98f00b204e9800998ecf8427e" - ] + "versions.yml:md5,cd524e9e74304c2930cf28e2d741d351" ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.2" }, - "timestamp": "2024-03-07T13:07:43.358373221" + "timestamp": "2024-07-05T13:26:49.615507" }, - "multiqc_single_end": { + "sarscov2 - bam - single_end - stub": { "content": [ - [ - [ - { - "id": "test", - "single_end": true, - "strandedness": "forward" - }, + { + "0": [ + [ + { + "id": "test", + "single_end": true, + "strandedness": "forward" + }, + "test_duprateExpDens.pdf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ [ - "test_dup_intercept_mqc.txt:md5,11961f0962ffc70e42aa57a12984e0fc", - "test_duprateExpDensCurve_mqc.txt:md5,eb742e354c8d5d6bed8d2ebac087f0ac" + { + "id": "test", + "single_end": true, + "strandedness": "forward" + }, + "test_duprateExpBoxplot.pdf:md5,d41d8cd98f00b204e9800998ecf8427e" ] + ], + "2": [ + [ + { + "id": "test", + "single_end": true, + "strandedness": "forward" + }, + "test_expressionHist.pdf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "3": [ + [ + { + "id": "test", + "single_end": true, + "strandedness": "forward" + }, + "test_dupMatrix.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "4": [ + [ + { + "id": "test", + "single_end": true, + "strandedness": "forward" + }, + "test_intercept_slope.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "5": [ + [ + { + "id": "test", + "single_end": true, + "strandedness": "forward" + }, + [ + "test_dup_intercept_mqc.txt:md5,d41d8cd98f00b204e9800998ecf8427e", + "test_duprateExpDensCurve_mqc.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "6": [ + [ + { + "id": "test", + "single_end": true, + "strandedness": "forward" + }, + "test.R_sessionInfo.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "7": [ + "versions.yml:md5,cd524e9e74304c2930cf28e2d741d351" + ], + "boxplot": [ + [ + { + "id": "test", + "single_end": true, + "strandedness": "forward" + }, + "test_duprateExpBoxplot.pdf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "dupmatrix": [ + [ + { + "id": "test", + "single_end": true, + "strandedness": "forward" + }, + "test_dupMatrix.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "hist": [ + [ + { + "id": "test", + "single_end": true, + "strandedness": "forward" + }, + "test_expressionHist.pdf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "intercept_slope": [ + [ + { + "id": "test", + "single_end": true, + "strandedness": "forward" + }, + "test_intercept_slope.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "multiqc": [ + [ + { + "id": "test", + "single_end": true, + "strandedness": "forward" + }, + [ + "test_dup_intercept_mqc.txt:md5,d41d8cd98f00b204e9800998ecf8427e", + "test_duprateExpDensCurve_mqc.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "scatter2d": [ + [ + { + "id": "test", + "single_end": true, + "strandedness": "forward" + }, + "test_duprateExpDens.pdf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "session_info": [ + [ + { + "id": "test", + "single_end": true, + "strandedness": "forward" + }, + "test.R_sessionInfo.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,cd524e9e74304c2930cf28e2d741d351" ] - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-03-07T13:07:33.036463063" - }, - "versions_single_end": { - "content": [ - [ - "versions.yml:md5,cd524e9e74304c2930cf28e2d741d351" - ] + } ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.2" }, - "timestamp": "2024-03-07T13:07:33.043006923" + "timestamp": "2024-07-05T13:27:00.623697" }, - "multiqc_paired_end_stub": { + "sarscov2 - bam - paired_end": { "content": [ + "test_duprateExpBoxplot.pdf", + "test_expressionHist.pdf", + "test_duprateExpDens.pdf", [ [ { @@ -183,18 +213,10 @@ "single_end": false, "strandedness": "forward" }, - "test_mqc.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + "test_dupMatrix.txt:md5,5a327feaba56e5ea96a2cb7e8577e196" ] - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-03-07T13:08:05.537047876" - }, - "dupmatrix_paired_end_stub": { - "content": [ + ], + null, [ [ { @@ -202,159 +224,183 @@ "single_end": false, "strandedness": "forward" }, - "test_dupMatrix.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + [ + "test_dup_intercept_mqc.txt:md5,d69369924aeb9695b0e97e755e0d9ea3", + "test_duprateExpDensCurve_mqc.txt:md5,f4a50dc09de81219ed4449c11153ba6e" + ] ] - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-03-07T13:08:05.527609018" - }, - "boxplot_paired_end": { - "content": [ - "test_duprateExpBoxplot.pdf" - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-03-07T13:07:55.709324683" - }, - "hist_paired_end": { - "content": [ - "test_expressionHist.pdf" - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-03-07T13:07:55.713514333" - }, - "versions_paired_end": { - "content": [ + ], [ "versions.yml:md5,cd524e9e74304c2930cf28e2d741d351" ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-03-07T13:07:55.737814831" - }, - "versions_single_end_stub": { - "content": [ - [ - "versions.yml:md5,cd524e9e74304c2930cf28e2d741d351" - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-03-07T13:07:43.372024419" - }, - "hist_single_end": { - "content": [ - "test_expressionHist.pdf" - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-03-07T13:07:33.024192244" - }, - "boxplot_single_end_stub": { - "content": [ - "test_duprateExpBoxplot.pdf" - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-03-07T13:07:43.349385822" - }, - "intercept_slope_paired_end": { - "content": null, - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-03-07T13:07:55.723431072" - }, - "intercept_slope_single_end_stub": { - "content": null, - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-03-07T13:07:43.36234388" - }, - "intercept_slope_paired_end_stub": { - "content": null, - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-03-07T13:08:05.532566607" - }, - "hist_paired_end_stub": { - "content": [ - "test_expressionHist.pdf" - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.2" }, - "timestamp": "2024-03-07T13:08:05.518776728" + "timestamp": "2024-07-05T13:27:11.791811" }, - "scatter_paired_end": { + "sarscov2 - bam - paired_end - stub": { "content": [ - "test_duprateExpDens.pdf" - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-03-07T13:07:55.703114124" - }, - "dupmatrix_paired_end": { - "content": [ - [ - [ - { - "id": "test", - "single_end": false, - "strandedness": "forward" - }, - "test_dupMatrix.txt:md5,5a327feaba56e5ea96a2cb7e8577e196" + { + "0": [ + [ + { + "id": "test", + "single_end": false, + "strandedness": "forward" + }, + "test_duprateExpDens.pdf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": false, + "strandedness": "forward" + }, + "test_duprateExpBoxplot.pdf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + [ + { + "id": "test", + "single_end": false, + "strandedness": "forward" + }, + "test_expressionHist.pdf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "3": [ + [ + { + "id": "test", + "single_end": false, + "strandedness": "forward" + }, + "test_dupMatrix.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "4": [ + [ + { + "id": "test", + "single_end": false, + "strandedness": "forward" + }, + "test_intercept_slope.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "5": [ + [ + { + "id": "test", + "single_end": false, + "strandedness": "forward" + }, + [ + "test_dup_intercept_mqc.txt:md5,d41d8cd98f00b204e9800998ecf8427e", + "test_duprateExpDensCurve_mqc.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "6": [ + [ + { + "id": "test", + "single_end": false, + "strandedness": "forward" + }, + "test.R_sessionInfo.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "7": [ + "versions.yml:md5,cd524e9e74304c2930cf28e2d741d351" + ], + "boxplot": [ + [ + { + "id": "test", + "single_end": false, + "strandedness": "forward" + }, + "test_duprateExpBoxplot.pdf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "dupmatrix": [ + [ + { + "id": "test", + "single_end": false, + "strandedness": "forward" + }, + "test_dupMatrix.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "hist": [ + [ + { + "id": "test", + "single_end": false, + "strandedness": "forward" + }, + "test_expressionHist.pdf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "intercept_slope": [ + [ + { + "id": "test", + "single_end": false, + "strandedness": "forward" + }, + "test_intercept_slope.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "multiqc": [ + [ + { + "id": "test", + "single_end": false, + "strandedness": "forward" + }, + [ + "test_dup_intercept_mqc.txt:md5,d41d8cd98f00b204e9800998ecf8427e", + "test_duprateExpDensCurve_mqc.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "scatter2d": [ + [ + { + "id": "test", + "single_end": false, + "strandedness": "forward" + }, + "test_duprateExpDens.pdf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "session_info": [ + [ + { + "id": "test", + "single_end": false, + "strandedness": "forward" + }, + "test.R_sessionInfo.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,cd524e9e74304c2930cf28e2d741d351" ] - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-03-07T13:07:55.717362643" - }, - "intercept_slope_single_end": { - "content": null, - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-03-07T13:07:33.033103464" - }, - "scatter_single_end_stub": { - "content": [ - "test_duprateExpDens.pdf" + } ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.2" }, - "timestamp": "2024-03-07T13:07:43.344100132" + "timestamp": "2024-07-05T13:27:22.967266" } -} +} \ No newline at end of file diff --git a/modules/nf-core/fastp/main.nf b/modules/nf-core/fastp/main.nf index df60ff61e..e1b9f5656 100644 --- a/modules/nf-core/fastp/main.nf +++ b/modules/nf-core/fastp/main.nf @@ -106,14 +106,16 @@ process FASTP { stub: def prefix = task.ext.prefix ?: "${meta.id}" def is_single_output = task.ext.args?.contains('--interleaved_in') || meta.single_end - def touch_reads = (is_single_output && !discard_trimmed_pass) ? "echo '' | gzip > ${prefix}.fastp.fastq.gz" : "echo '' | gzip > ${prefix}_1.fastp.fastq.gz ; echo '' | gzip > ${prefix}_2.fastp.fastq.gz" + def touch_reads = (discard_trimmed_pass) ? "" : (is_single_output) ? "echo '' | gzip > ${prefix}.fastp.fastq.gz" : "echo '' | gzip > ${prefix}_1.fastp.fastq.gz ; echo '' | gzip > ${prefix}_2.fastp.fastq.gz" def touch_merged = (!is_single_output && save_merged) ? "echo '' | gzip > ${prefix}.merged.fastq.gz" : "" + def touch_fail_fastq = (!save_trimmed_fail) ? "" : meta.single_end ? "echo '' | gzip > ${prefix}.fail.fastq.gz" : "echo '' | gzip > ${prefix}.paired.fail.fastq.gz ; echo '' | gzip > ${prefix}_1.fail.fastq.gz ; echo '' | gzip > ${prefix}_2.fail.fastq.gz" """ $touch_reads + $touch_fail_fastq + $touch_merged touch "${prefix}.fastp.json" touch "${prefix}.fastp.html" touch "${prefix}.fastp.log" - $touch_merged cat <<-END_VERSIONS > versions.yml "${task.process}": diff --git a/modules/nf-core/fastp/tests/main.nf.test b/modules/nf-core/fastp/tests/main.nf.test index ed5fa5ed6..c4e119aff 100644 --- a/modules/nf-core/fastp/tests/main.nf.test +++ b/modules/nf-core/fastp/tests/main.nf.test @@ -25,28 +25,33 @@ nextflow_process { then { assertAll( { assert process.success }, + { assert path(process.out.html.get(0).get(1)).getText().contains("single end (151 cycles)") }, + { assert path(process.out.log.get(0).get(1)).getText().contains("reads passed filter: 99") }, { assert snapshot( - process.out.reads, process.out.json, - process.out.versions).match() }, - { assert process.out.reads_fail == [] }, - { assert process.out.reads_merged == [] }, - { assert path(process.out.log.get(0).get(1)).getText().contains("reads passed filter: 99") }, - { assert path(process.out.html.get(0).get(1)).getText().contains("single end (151 cycles)") } + process.out.reads, + process.out.reads_fail, + process.out.reads_merged, + process.out.versions).match() } ) } } - test("test_fastp_single_end-stub") { - - options '-stub' + test("test_fastp_paired_end") { when { + process { """ + adapter_fasta = [] + save_trimmed_pass = true + save_trimmed_fail = false + save_merged = false + 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) ] + [ 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) ] ]) input[1] = [] input[2] = false @@ -57,29 +62,29 @@ nextflow_process { } then { - assertAll( { assert process.success }, - { assert snapshot(process.out).match() } + { assert path(process.out.html.get(0).get(1)).getText().contains("The input has little adapter percentage (~0.000000%), probably it's trimmed before.") }, + { assert path(process.out.log.get(0).get(1)).getText().contains("Q30 bases: 12281(88.3716%)") }, + { assert snapshot( + process.out.json, + process.out.reads, + process.out.reads_fail, + process.out.reads_merged, + process.out.versions).match() } ) } } - test("test_fastp_paired_end") { + test("fastp test_fastp_interleaved") { + config './nextflow.interleaved.config' when { - process { """ - adapter_fasta = [] - save_trimmed_pass = true - save_trimmed_fail = false - save_merged = false - 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) ] + [ id:'test', single_end:true ], // meta map + [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_interleaved.fastq.gz', checkIfExists: true) ] ]) input[1] = [] input[2] = false @@ -92,34 +97,31 @@ nextflow_process { then { assertAll( { assert process.success }, + { assert path(process.out.html.get(0).get(1)).getText().contains("paired end (151 cycles + 151 cycles)") }, + { assert path(process.out.log.get(0).get(1)).getText().contains("reads passed filter: 162") }, + { assert process.out.reads_fail == [] }, + { assert process.out.reads_merged == [] }, { assert snapshot( process.out.reads, process.out.json, - process.out.versions).match() }, - { assert process.out.reads_fail == [] }, - { assert process.out.reads_merged == [] }, - { assert path(process.out.log.get(0).get(1)).getText().contains("Q30 bases: 12281(88.3716%)") }, - { assert path(process.out.html.get(0).get(1)).getText().contains("The input has little adapter percentage (~0.000000%), probably it's trimmed before.") } + process.out.versions).match() } ) } } - test("test_fastp_paired_end - stub") { - - options '-stub' + test("test_fastp_single_end_trim_fail") { 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) ] + [ id:'test', single_end:true ], // meta map + [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true) ] ]) input[1] = [] input[2] = false - input[3] = false + input[3] = true input[4] = false """ } @@ -128,24 +130,32 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot(process.out).match() }, + { assert path(process.out.html.get(0).get(1)).getText().contains("single end (151 cycles)") }, + { assert path(process.out.log.get(0).get(1)).getText().contains("reads passed filter: 99") }, + { assert snapshot( + process.out.json, + process.out.reads, + process.out.reads_fail, + process.out.reads_merged, + process.out.versions).match() } ) } } - test("fastp test_fastp_interleaved") { + test("test_fastp_paired_end_trim_fail") { - config './nextflow.interleaved.config' + config './nextflow.save_failed.config' when { process { """ input[0] = Channel.of([ - [ id:'test', single_end:true ], // meta map - [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_interleaved.fastq.gz', checkIfExists: true) ] + [ 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)] ]) input[1] = [] input[2] = false - input[3] = false + input[3] = true input[4] = false """ } @@ -154,35 +164,32 @@ nextflow_process { then { assertAll( { assert process.success }, + { assert path(process.out.html.get(0).get(1)).getText().contains("The input has little adapter percentage (~0.000000%), probably it's trimmed before.") }, + { assert path(process.out.log.get(0).get(1)).getText().contains("reads passed filter: 162") }, { assert snapshot( process.out.reads, + process.out.reads_fail, + process.out.reads_merged, process.out.json, - process.out.versions).match() }, - { assert process.out.reads_fail == [] }, - { assert process.out.reads_merged == [] }, - { assert path(process.out.log.get(0).get(1)).getText().contains("reads passed filter: 162") }, - { assert path(process.out.html.get(0).get(1)).getText().contains("paired end (151 cycles + 151 cycles)") } + process.out.versions).match() } ) } } - test("fastp test_fastp_interleaved - stub") { - - options '-stub' + test("test_fastp_paired_end_merged") { - config './nextflow.interleaved.config' when { - process { """ input[0] = Channel.of([ - [ id:'test', single_end:true ], // meta map - [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_interleaved.fastq.gz', checkIfExists: true) ] + [ 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) ] ]) input[1] = [] input[2] = false input[3] = false - input[4] = false + input[4] = true """ } } @@ -190,25 +197,32 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot(process.out).match() }, + { assert path(process.out.html.get(0).get(1)).getText().contains("The input has little adapter percentage (~0.000000%), probably it's trimmed before.") }, + { assert path(process.out.log.get(0).get(1)).getText().contains("total reads: 75") }, + { assert snapshot( + process.out.json, + process.out.reads, + process.out.reads_fail, + process.out.reads_merged, + process.out.versions).match() }, ) } } - test("test_fastp_single_end_trim_fail") { + test("test_fastp_paired_end_merged_adapterlist") { when { - process { """ input[0] = Channel.of([ - [ id:'test', single_end:true ], // meta map - [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true) ] + [ 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) ] ]) - input[1] = [] + input[1] = Channel.of([ file(params.modules_testdata_base_path + 'delete_me/fastp/adapters.fasta', checkIfExists: true) ]) input[2] = false - input[3] = true - input[4] = false + input[3] = false + input[4] = true """ } } @@ -216,32 +230,30 @@ nextflow_process { then { assertAll( { assert process.success }, + { assert path(process.out.html.get(0).get(1)).getText().contains("
    ") }, + { assert path(process.out.log.get(0).get(1)).getText().contains("total bases: 13683") }, { assert snapshot( + process.out.json, process.out.reads, process.out.reads_fail, - process.out.json, - process.out.versions).match() }, - { assert process.out.reads_merged == [] }, - { assert path(process.out.log.get(0).get(1)).getText().contains("reads passed filter: 99") }, - { assert path(process.out.html.get(0).get(1)).getText().contains("single end (151 cycles)") }, + process.out.reads_merged, + process.out.versions).match() } ) } } - test("test_fastp_paired_end_trim_fail") { + test("test_fastp_single_end_qc_only") { - config './nextflow.save_failed.config' 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)] + [ id:'test', single_end:true ], + [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true) ] ]) input[1] = [] - input[2] = false - input[3] = true + input[2] = true + input[3] = false input[4] = false """ } @@ -250,19 +262,22 @@ nextflow_process { then { assertAll( { assert process.success }, + { assert path(process.out.html.get(0).get(1)).getText().contains("single end (151 cycles)") }, + { assert path(process.out.log.get(0).get(1)).getText().contains("reads passed filter: 99") }, { assert snapshot( + process.out.json, + process.out.reads, process.out.reads, process.out.reads_fail, - process.out.json, - process.out.versions).match() }, - { assert process.out.reads_merged == [] }, - { assert path(process.out.log.get(0).get(1)).getText().contains("reads passed filter: 162") }, - { assert path(process.out.html.get(0).get(1)).getText().contains("The input has little adapter percentage (~0.000000%), probably it's trimmed before.") } + process.out.reads_fail, + process.out.reads_merged, + process.out.reads_merged, + process.out.versions).match() } ) } } - test("test_fastp_paired_end_merged") { + test("test_fastp_paired_end_qc_only") { when { process { @@ -273,9 +288,9 @@ nextflow_process { file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true) ] ]) input[1] = [] - input[2] = false + input[2] = true input[3] = false - input[4] = true + input[4] = false """ } } @@ -283,34 +298,37 @@ nextflow_process { then { assertAll( { assert process.success }, + { assert path(process.out.html.get(0).get(1)).getText().contains("The input has little adapter percentage (~0.000000%), probably it's trimmed before.") }, + { assert path(process.out.log.get(0).get(1)).getText().contains("Q30 bases: 12281(88.3716%)") }, { assert snapshot( + process.out.json, process.out.reads, + process.out.reads, + process.out.reads_fail, + process.out.reads_fail, process.out.reads_merged, - process.out.json, - process.out.versions).match() }, - { assert process.out.reads_fail == [] }, - { assert path(process.out.log.get(0).get(1)).getText().contains("total reads: 75") }, - { assert path(process.out.html.get(0).get(1)).getText().contains("The input has little adapter percentage (~0.000000%), probably it's trimmed before.") } + process.out.reads_merged, + process.out.versions).match() } ) } } - test("test_fastp_paired_end_merged-stub") { + test("test_fastp_single_end - stub") { - options '-stub' + options "-stub" 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) ] + [ id:'test', single_end:true ], + [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true) ] ]) input[1] = [] input[2] = false input[3] = false - input[4] = true + input[4] = false """ } } @@ -318,25 +336,33 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot(process.out).match() }, + { assert snapshot(process.out).match() } ) } } - test("test_fastp_paired_end_merged_adapterlist") { + test("test_fastp_paired_end - stub") { + + options "-stub" when { + process { """ + adapter_fasta = [] + save_trimmed_pass = true + save_trimmed_fail = false + save_merged = false + 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) ] ]) - input[1] = Channel.of([ file(params.modules_testdata_base_path + 'delete_me/fastp/adapters.fasta', checkIfExists: true) ]) + input[1] = [] input[2] = false input[3] = false - input[4] = true + input[4] = false """ } } @@ -344,29 +370,25 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot( - process.out.reads, - process.out.reads_merged, - process.out.json, - process.out.versions).match() }, - { assert process.out.reads_fail == [] }, - { assert path(process.out.log.get(0).get(1)).getText().contains("total bases: 13683") }, - { assert path(process.out.html.get(0).get(1)).getText().contains("
    ") } + { assert snapshot(process.out).match() } ) } } - test("test_fastp_single_end_qc_only") { + test("fastp - stub test_fastp_interleaved") { + + options "-stub" + config './nextflow.interleaved.config' 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) ] + [ id:'test', single_end:true ], // meta map + [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_interleaved.fastq.gz', checkIfExists: true) ] ]) input[1] = [] - input[2] = true + input[2] = false input[3] = false input[4] = false """ @@ -376,55 +398,101 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot( - process.out.reads, - process.out.reads_fail, - process.out.reads_merged, - process.out.json, - process.out.versions).match() }, - { assert process.out.reads == [] }, - { assert process.out.reads_fail == [] }, - { assert process.out.reads_merged == [] }, - { assert path(process.out.log.get(0).get(1)).getText().contains("reads passed filter: 99") }, - { assert path(process.out.html.get(0).get(1)).getText().contains("single end (151 cycles)") }, + { assert snapshot(process.out).match() } ) } } - test("test_fastp_single_end_qc_only-stub") { + test("test_fastp_single_end_trim_fail - stub") { - options '-stub' + options "-stub" when { + process { """ input[0] = Channel.of([ - [ id:'test', single_end:true ], + [ id:'test', single_end:true ], // meta map [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true) ] ]) input[1] = [] - input[2] = true - input[3] = false + input[2] = false + input[3] = true input[4] = false """ } } then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("test_fastp_paired_end_trim_fail - stub") { + options "-stub" + + config './nextflow.save_failed.config' + 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)] + ]) + input[1] = [] + input[2] = false + input[3] = true + input[4] = false + """ + } + } + + then { assertAll( { assert process.success }, - { assert snapshot(process.out).match() }, + { assert snapshot(process.out).match() } ) } } - test("test_fastp_paired_end_qc_only") { + test("test_fastp_paired_end_merged - stub") { + + options "-stub" when { - params { - outdir = "$outputDir" + 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) ] + ]) + input[1] = [] + input[2] = false + input[3] = false + input[4] = true + """ } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("test_fastp_paired_end_merged_adapterlist - stub") { + + options "-stub" + + when { process { """ input[0] = Channel.of([ @@ -432,6 +500,33 @@ nextflow_process { [ 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) ] ]) + input[1] = Channel.of([ file(params.modules_testdata_base_path + 'delete_me/fastp/adapters.fasta', checkIfExists: true) ]) + input[2] = false + input[3] = false + input[4] = true + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("test_fastp_single_end_qc_only - 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) ] + ]) input[1] = [] input[2] = true input[3] = false @@ -443,24 +538,14 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot( - process.out.reads, - process.out.reads_merged, - process.out.reads_fail, - process.out.json, - process.out.versions).match() }, - { assert process.out.reads == [] }, - { assert process.out.reads_fail == [] }, - { assert process.out.reads_merged == [] }, - { assert path(process.out.log.get(0).get(1)).getText().contains("Q30 bases: 12281(88.3716%)") }, - { assert path(process.out.html.get(0).get(1)).getText().contains("The input has little adapter percentage (~0.000000%), probably it's trimmed before.") }, + { assert snapshot(process.out).match() } ) } } - test("test_fastp_paired_end_qc_only-stub") { + test("test_fastp_paired_end_qc_only - stub") { - options '-stub' + options "-stub" when { process { @@ -481,7 +566,7 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot(process.out).match() }, + { assert snapshot(process.out).match() } ) } } diff --git a/modules/nf-core/fastp/tests/main.nf.test.snap b/modules/nf-core/fastp/tests/main.nf.test.snap index b609b9a2a..54be7e45f 100644 --- a/modules/nf-core/fastp/tests/main.nf.test.snap +++ b/modules/nf-core/fastp/tests/main.nf.test.snap @@ -1,24 +1,15 @@ { - "test_fastp_paired_end_qc_only-stub": { + "test_fastp_single_end_qc_only - stub": { "content": [ { "0": [ - [ - { - "id": "test", - "single_end": false - }, - [ - "test_1.fastp.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", - "test_2.fastp.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" - ] - ] + ], "1": [ [ { "id": "test", - "single_end": false + "single_end": true }, "test.fastp.json:md5,d41d8cd98f00b204e9800998ecf8427e" ] @@ -27,7 +18,7 @@ [ { "id": "test", - "single_end": false + "single_end": true }, "test.fastp.html:md5,d41d8cd98f00b204e9800998ecf8427e" ] @@ -36,7 +27,7 @@ [ { "id": "test", - "single_end": false + "single_end": true }, "test.fastp.log:md5,d41d8cd98f00b204e9800998ecf8427e" ] @@ -54,7 +45,7 @@ [ { "id": "test", - "single_end": false + "single_end": true }, "test.fastp.html:md5,d41d8cd98f00b204e9800998ecf8427e" ] @@ -63,7 +54,7 @@ [ { "id": "test", - "single_end": false + "single_end": true }, "test.fastp.json:md5,d41d8cd98f00b204e9800998ecf8427e" ] @@ -72,22 +63,13 @@ [ { "id": "test", - "single_end": false + "single_end": true }, "test.fastp.log:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "reads": [ - [ - { - "id": "test", - "single_end": false - }, - [ - "test_1.fastp.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", - "test_2.fastp.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" - ] - ] + ], "reads_fail": [ @@ -104,10 +86,19 @@ "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-06-08T05:42:26.603745039" + "timestamp": "2024-07-05T14:31:10.841098" }, "test_fastp_paired_end": { "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test.fastp.json:md5,1e0f8e27e71728e2b63fc64086be95cd" + ] + ], [ [ { @@ -119,6 +110,48 @@ "test_2.fastp.fastq.gz:md5,25cbdca08e2083dbd4f0502de6b62f39" ] ] + ], + [ + + ], + [ + + ], + [ + "versions.yml:md5,48ffc994212fb1fc9f83a74fa69c9f02" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-05T13:43:28.665779" + }, + "test_fastp_paired_end_merged_adapterlist": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test.fastp.json:md5,5914ca3f21ce162123a824e33e8564f6" + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test_1.fastp.fastq.gz:md5,54b726a55e992a869fd3fa778afe1672", + "test_2.fastp.fastq.gz:md5,29d3b33b869f7b63417b8ff07bb128ba" + ] + ] + ], + [ + ], [ [ @@ -126,7 +159,95 @@ "id": "test", "single_end": false }, - "test.fastp.json:md5,1e0f8e27e71728e2b63fc64086be95cd" + "test.merged.fastq.gz:md5,c873bb1ab3fa859dcc47306465e749d5" + ] + ], + [ + "versions.yml:md5,48ffc994212fb1fc9f83a74fa69c9f02" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-05T13:44:18.210375" + }, + "test_fastp_single_end_qc_only": { + "content": [ + [ + [ + { + "id": "test", + "single_end": true + }, + "test.fastp.json:md5,5cc5f01e449309e0e689ed6f51a2294a" + ] + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + "versions.yml:md5,48ffc994212fb1fc9f83a74fa69c9f02" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-05T13:44:27.380974" + }, + "test_fastp_paired_end_trim_fail": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test_1.fastp.fastq.gz:md5,6ff32a64c5188b9a9192be1398c262c7", + "test_2.fastp.fastq.gz:md5,db0cb7c9977e94ac2b4b446ebd017a8a" + ] + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test.paired.fail.fastq.gz:md5,409b687c734cedd7a1fec14d316e1366", + "test_1.fail.fastq.gz:md5,4f273cf3159c13f79e8ffae12f5661f6", + "test_2.fail.fastq.gz:md5,f97b9edefb5649aab661fbc9e71fc995" + ] + ] + ], + [ + + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test.fastp.json:md5,4c3268ddb50ea5b33125984776aa3519" ] ], [ @@ -137,9 +258,9 @@ "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-06-10T13:02:09.747686552" + "timestamp": "2024-07-05T13:43:58.749589" }, - "fastp test_fastp_interleaved - stub": { + "fastp - stub test_fastp_interleaved": { "content": [ { "0": [ @@ -238,97 +359,248 @@ "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-06-10T13:03:09.374379128" + "timestamp": "2024-07-05T13:50:00.270029" }, - "test_fastp_paired_end_merged_adapterlist": { + "test_fastp_single_end - stub": { "content": [ - [ - [ - { - "id": "test", - "single_end": false - }, + { + "0": [ [ - "test_1.fastp.fastq.gz:md5,54b726a55e992a869fd3fa778afe1672", - "test_2.fastp.fastq.gz:md5,29d3b33b869f7b63417b8ff07bb128ba" + { + "id": "test", + "single_end": true + }, + "test.fastp.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] + ], + "1": [ + [ + { + "id": "test", + "single_end": true + }, + "test.fastp.json:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + [ + { + "id": "test", + "single_end": true + }, + "test.fastp.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "3": [ + [ + { + "id": "test", + "single_end": true + }, + "test.fastp.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "4": [ + + ], + "5": [ + + ], + "6": [ + "versions.yml:md5,48ffc994212fb1fc9f83a74fa69c9f02" + ], + "html": [ + [ + { + "id": "test", + "single_end": true + }, + "test.fastp.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "json": [ + [ + { + "id": "test", + "single_end": true + }, + "test.fastp.json:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "log": [ + [ + { + "id": "test", + "single_end": true + }, + "test.fastp.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "reads": [ + [ + { + "id": "test", + "single_end": true + }, + "test.fastp.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "reads_fail": [ + + ], + "reads_merged": [ + + ], + "versions": [ + "versions.yml:md5,48ffc994212fb1fc9f83a74fa69c9f02" ] - ], - [ - [ - { - "id": "test", - "single_end": false - }, - "test.merged.fastq.gz:md5,c873bb1ab3fa859dcc47306465e749d5" - ] - ], - [ - [ - { - "id": "test", - "single_end": false - }, - "test.fastp.json:md5,5914ca3f21ce162123a824e33e8564f6" - ] - ], - [ - "versions.yml:md5,48ffc994212fb1fc9f83a74fa69c9f02" - ] + } ], "meta": { "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-06-10T13:04:47.637461379" + "timestamp": "2024-07-05T13:49:42.502789" }, - "test_fastp_single_end_qc_only": { + "test_fastp_paired_end_merged_adapterlist - stub": { "content": [ - [ - - ], - [ - - ], - [ - - ], - [ - [ - { - "id": "test", - "single_end": true - }, - "test.fastp.json:md5,5cc5f01e449309e0e689ed6f51a2294a" + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test_1.fastp.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "test_2.fastp.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": false + }, + "test.fastp.json:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + [ + { + "id": "test", + "single_end": false + }, + "test.fastp.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "3": [ + [ + { + "id": "test", + "single_end": false + }, + "test.fastp.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "4": [ + + ], + "5": [ + [ + { + "id": "test", + "single_end": false + }, + "test.merged.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "6": [ + "versions.yml:md5,48ffc994212fb1fc9f83a74fa69c9f02" + ], + "html": [ + [ + { + "id": "test", + "single_end": false + }, + "test.fastp.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "json": [ + [ + { + "id": "test", + "single_end": false + }, + "test.fastp.json:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "log": [ + [ + { + "id": "test", + "single_end": false + }, + "test.fastp.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "reads": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test_1.fastp.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "test_2.fastp.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ] + ], + "reads_fail": [ + + ], + "reads_merged": [ + [ + { + "id": "test", + "single_end": false + }, + "test.merged.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "versions": [ + "versions.yml:md5,48ffc994212fb1fc9f83a74fa69c9f02" ] - ], - [ - "versions.yml:md5,48ffc994212fb1fc9f83a74fa69c9f02" - ] + } ], "meta": { "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-06-10T20:11:50.885505279" + "timestamp": "2024-07-05T13:54:53.458252" }, - "test_fastp_single_end-stub": { + "test_fastp_paired_end_merged - stub": { "content": [ { "0": [ [ { "id": "test", - "single_end": true + "single_end": false }, - "test.fastp.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + [ + "test_1.fastp.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "test_2.fastp.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] ] ], "1": [ [ { "id": "test", - "single_end": true + "single_end": false }, "test.fastp.json:md5,d41d8cd98f00b204e9800998ecf8427e" ] @@ -337,7 +609,7 @@ [ { "id": "test", - "single_end": true + "single_end": false }, "test.fastp.html:md5,d41d8cd98f00b204e9800998ecf8427e" ] @@ -346,7 +618,7 @@ [ { "id": "test", - "single_end": true + "single_end": false }, "test.fastp.log:md5,d41d8cd98f00b204e9800998ecf8427e" ] @@ -355,7 +627,13 @@ ], "5": [ - + [ + { + "id": "test", + "single_end": false + }, + "test.merged.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] ], "6": [ "versions.yml:md5,48ffc994212fb1fc9f83a74fa69c9f02" @@ -364,7 +642,7 @@ [ { "id": "test", - "single_end": true + "single_end": false }, "test.fastp.html:md5,d41d8cd98f00b204e9800998ecf8427e" ] @@ -373,7 +651,7 @@ [ { "id": "test", - "single_end": true + "single_end": false }, "test.fastp.json:md5,d41d8cd98f00b204e9800998ecf8427e" ] @@ -382,7 +660,7 @@ [ { "id": "test", - "single_end": true + "single_end": false }, "test.fastp.log:md5,d41d8cd98f00b204e9800998ecf8427e" ] @@ -391,16 +669,25 @@ [ { "id": "test", - "single_end": true + "single_end": false }, - "test.fastp.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + [ + "test_1.fastp.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "test_2.fastp.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] ] ], "reads_fail": [ ], "reads_merged": [ - + [ + { + "id": "test", + "single_end": false + }, + "test.merged.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] ], "versions": [ "versions.yml:md5,48ffc994212fb1fc9f83a74fa69c9f02" @@ -411,9 +698,9 @@ "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-06-10T13:01:55.987280865" + "timestamp": "2024-07-05T13:50:27.689379" }, - "test_fastp_paired_end_trim_fail": { + "test_fastp_paired_end_merged": { "content": [ [ [ @@ -421,10 +708,7 @@ "id": "test", "single_end": false }, - [ - "test_1.fastp.fastq.gz:md5,6ff32a64c5188b9a9192be1398c262c7", - "test_2.fastp.fastq.gz:md5,db0cb7c9977e94ac2b4b446ebd017a8a" - ] + "test.fastp.json:md5,b712fd68ed0322f4bec49ff2a5237fcc" ] ], [ @@ -434,11 +718,13 @@ "single_end": false }, [ - "test.paired.fail.fastq.gz:md5,409b687c734cedd7a1fec14d316e1366", - "test_1.fail.fastq.gz:md5,4f273cf3159c13f79e8ffae12f5661f6", - "test_2.fail.fastq.gz:md5,f97b9edefb5649aab661fbc9e71fc995" + "test_1.fastp.fastq.gz:md5,54b726a55e992a869fd3fa778afe1672", + "test_2.fastp.fastq.gz:md5,29d3b33b869f7b63417b8ff07bb128ba" ] ] + ], + [ + ], [ [ @@ -446,7 +732,7 @@ "id": "test", "single_end": false }, - "test.fastp.json:md5,4c3268ddb50ea5b33125984776aa3519" + "test.merged.fastq.gz:md5,c873bb1ab3fa859dcc47306465e749d5" ] ], [ @@ -457,7 +743,7 @@ "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-06-10T13:03:46.458766801" + "timestamp": "2024-07-05T13:44:08.68476" }, "test_fastp_paired_end - stub": { "content": [ @@ -564,52 +850,19 @@ "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-06-08T05:36:36.446112695" + "timestamp": "2024-07-05T13:49:51.679221" }, - "test_fastp_paired_end_merged": { + "test_fastp_single_end": { "content": [ [ [ { "id": "test", - "single_end": false - }, - [ - "test_1.fastp.fastq.gz:md5,54b726a55e992a869fd3fa778afe1672", - "test_2.fastp.fastq.gz:md5,29d3b33b869f7b63417b8ff07bb128ba" - ] - ] - ], - [ - [ - { - "id": "test", - "single_end": false - }, - "test.merged.fastq.gz:md5,c873bb1ab3fa859dcc47306465e749d5" - ] - ], - [ - [ - { - "id": "test", - "single_end": false + "single_end": true }, - "test.fastp.json:md5,b712fd68ed0322f4bec49ff2a5237fcc" + "test.fastp.json:md5,c852d7a6dba5819e4ac8d9673bedcacc" ] ], - [ - "versions.yml:md5,48ffc994212fb1fc9f83a74fa69c9f02" - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" - }, - "timestamp": "2024-06-10T13:04:09.964580373" - }, - "test_fastp_single_end": { - "content": [ [ [ { @@ -620,13 +873,10 @@ ] ], [ - [ - { - "id": "test", - "single_end": true - }, - "test.fastp.json:md5,c852d7a6dba5819e4ac8d9673bedcacc" - ] + + ], + [ + ], [ "versions.yml:md5,48ffc994212fb1fc9f83a74fa69c9f02" @@ -636,28 +886,25 @@ "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-06-10T13:01:34.044931225" + "timestamp": "2024-07-05T13:43:18.834322" }, - "test_fastp_paired_end_merged-stub": { + "test_fastp_single_end_trim_fail - stub": { "content": [ { "0": [ [ { "id": "test", - "single_end": false + "single_end": true }, - [ - "test_1.fastp.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", - "test_2.fastp.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" - ] + "test.fastp.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] ], "1": [ [ { "id": "test", - "single_end": false + "single_end": true }, "test.fastp.json:md5,d41d8cd98f00b204e9800998ecf8427e" ] @@ -666,7 +913,7 @@ [ { "id": "test", - "single_end": false + "single_end": true }, "test.fastp.html:md5,d41d8cd98f00b204e9800998ecf8427e" ] @@ -675,22 +922,22 @@ [ { "id": "test", - "single_end": false + "single_end": true }, "test.fastp.log:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "4": [ - - ], - "5": [ [ { "id": "test", - "single_end": false + "single_end": true }, - "test.merged.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + "test.fail.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] + ], + "5": [ + ], "6": [ "versions.yml:md5,48ffc994212fb1fc9f83a74fa69c9f02" @@ -699,7 +946,7 @@ [ { "id": "test", - "single_end": false + "single_end": true }, "test.fastp.html:md5,d41d8cd98f00b204e9800998ecf8427e" ] @@ -708,7 +955,7 @@ [ { "id": "test", - "single_end": false + "single_end": true }, "test.fastp.json:md5,d41d8cd98f00b204e9800998ecf8427e" ] @@ -717,7 +964,7 @@ [ { "id": "test", - "single_end": false + "single_end": true }, "test.fastp.log:md5,d41d8cd98f00b204e9800998ecf8427e" ] @@ -726,25 +973,22 @@ [ { "id": "test", - "single_end": false + "single_end": true }, - [ - "test_1.fastp.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", - "test_2.fastp.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" - ] + "test.fastp.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] ], "reads_fail": [ - - ], - "reads_merged": [ [ { "id": "test", - "single_end": false + "single_end": true }, - "test.merged.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + "test.fail.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] + ], + "reads_merged": [ + ], "versions": [ "versions.yml:md5,48ffc994212fb1fc9f83a74fa69c9f02" @@ -755,16 +999,16 @@ "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-06-08T05:39:42.022707162" + "timestamp": "2024-07-05T14:05:36.898142" }, - "test_fastp_single_end_qc_only-stub": { + "test_fastp_paired_end_trim_fail - stub": { "content": [ { "0": [ [ { "id": "test", - "single_end": true + "single_end": false }, [ "test_1.fastp.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", @@ -776,7 +1020,7 @@ [ { "id": "test", - "single_end": true + "single_end": false }, "test.fastp.json:md5,d41d8cd98f00b204e9800998ecf8427e" ] @@ -785,7 +1029,7 @@ [ { "id": "test", - "single_end": true + "single_end": false }, "test.fastp.html:md5,d41d8cd98f00b204e9800998ecf8427e" ] @@ -794,13 +1038,23 @@ [ { "id": "test", - "single_end": true + "single_end": false }, "test.fastp.log:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "4": [ - + [ + { + "id": "test", + "single_end": false + }, + [ + "test.paired.fail.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "test_1.fail.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "test_2.fail.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ] ], "5": [ @@ -812,7 +1066,7 @@ [ { "id": "test", - "single_end": true + "single_end": false }, "test.fastp.html:md5,d41d8cd98f00b204e9800998ecf8427e" ] @@ -821,7 +1075,7 @@ [ { "id": "test", - "single_end": true + "single_end": false }, "test.fastp.json:md5,d41d8cd98f00b204e9800998ecf8427e" ] @@ -830,7 +1084,7 @@ [ { "id": "test", - "single_end": true + "single_end": false }, "test.fastp.log:md5,d41d8cd98f00b204e9800998ecf8427e" ] @@ -839,7 +1093,7 @@ [ { "id": "test", - "single_end": true + "single_end": false }, [ "test_1.fastp.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", @@ -848,7 +1102,17 @@ ] ], "reads_fail": [ - + [ + { + "id": "test", + "single_end": false + }, + [ + "test.paired.fail.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "test_1.fail.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "test_2.fail.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ] ], "reads_merged": [ @@ -862,7 +1126,7 @@ "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-06-10T13:05:31.722431847" + "timestamp": "2024-07-05T14:05:49.212847" }, "fastp test_fastp_interleaved": { "content": [ @@ -892,7 +1156,7 @@ "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-06-07T22:35:04.608948751" + "timestamp": "2024-07-05T13:43:38.910832" }, "test_fastp_single_end_trim_fail": { "content": [ @@ -902,7 +1166,7 @@ "id": "test", "single_end": true }, - "test.fastp.fastq.gz:md5,67b2bbae47f073e05a97a9c2edce23c7" + "test.fastp.json:md5,9a7ee180f000e8d00c7fb67f06293eb5" ] ], [ @@ -911,7 +1175,7 @@ "id": "test", "single_end": true }, - "test.fail.fastq.gz:md5,3e4aaadb66a5b8fc9b881bf39c227abd" + "test.fastp.fastq.gz:md5,67b2bbae47f073e05a97a9c2edce23c7" ] ], [ @@ -920,8 +1184,11 @@ "id": "test", "single_end": true }, - "test.fastp.json:md5,9a7ee180f000e8d00c7fb67f06293eb5" + "test.fail.fastq.gz:md5,3e4aaadb66a5b8fc9b881bf39c227abd" ] + ], + [ + ], [ "versions.yml:md5,48ffc994212fb1fc9f83a74fa69c9f02" @@ -931,10 +1198,19 @@ "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-06-10T13:03:23.130471376" + "timestamp": "2024-07-05T13:43:48.22378" }, "test_fastp_paired_end_qc_only": { "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test.fastp.json:md5,623064a45912dac6f2b64e3f2e9901df" + ] + ], [ ], @@ -945,13 +1221,13 @@ ], [ - [ - { - "id": "test", - "single_end": false - }, - "test.fastp.json:md5,623064a45912dac6f2b64e3f2e9901df" - ] + + ], + [ + + ], + [ + ], [ "versions.yml:md5,48ffc994212fb1fc9f83a74fa69c9f02" @@ -961,6 +1237,95 @@ "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-06-10T20:12:14.00927619" + "timestamp": "2024-07-05T13:44:36.334938" + }, + "test_fastp_paired_end_qc_only - stub": { + "content": [ + { + "0": [ + + ], + "1": [ + [ + { + "id": "test", + "single_end": false + }, + "test.fastp.json:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + [ + { + "id": "test", + "single_end": false + }, + "test.fastp.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "3": [ + [ + { + "id": "test", + "single_end": false + }, + "test.fastp.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "4": [ + + ], + "5": [ + + ], + "6": [ + "versions.yml:md5,48ffc994212fb1fc9f83a74fa69c9f02" + ], + "html": [ + [ + { + "id": "test", + "single_end": false + }, + "test.fastp.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "json": [ + [ + { + "id": "test", + "single_end": false + }, + "test.fastp.json:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "log": [ + [ + { + "id": "test", + "single_end": false + }, + "test.fastp.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "reads": [ + + ], + "reads_fail": [ + + ], + "reads_merged": [ + + ], + "versions": [ + "versions.yml:md5,48ffc994212fb1fc9f83a74fa69c9f02" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-05T14:31:27.096468" } } \ No newline at end of file diff --git a/modules/nf-core/preseq/lcextrap/tests/main.nf.test b/modules/nf-core/preseq/lcextrap/tests/main.nf.test index d1af1f0ed..50e44157e 100644 --- a/modules/nf-core/preseq/lcextrap/tests/main.nf.test +++ b/modules/nf-core/preseq/lcextrap/tests/main.nf.test @@ -3,10 +3,6 @@ nextflow_process { name "Test Process PRESEQ_LCEXTRAP" script "../main.nf" process "PRESEQ_LCEXTRAP" - tag "modules" - tag "modules_nfcore" - tag "preseq" - tag "preseq/lcextrap" test("sarscov2 - single_end") { when { diff --git a/modules/nf-core/salmon/quant/tests/main.nf.test b/modules/nf-core/salmon/quant/tests/main.nf.test index 1bd264e96..24d8dd700 100644 --- a/modules/nf-core/salmon/quant/tests/main.nf.test +++ b/modules/nf-core/salmon/quant/tests/main.nf.test @@ -4,7 +4,7 @@ nextflow_process { script "../main.nf" process "SALMON_QUANT" config "./nextflow.config" - + setup { run("SALMON_INDEX") { script "../../../salmon/index/main.nf" diff --git a/modules/nf-core/sortmerna/tests/main.nf.test b/modules/nf-core/sortmerna/tests/main.nf.test index 4388cda0c..1954bdfb0 100644 --- a/modules/nf-core/sortmerna/tests/main.nf.test +++ b/modules/nf-core/sortmerna/tests/main.nf.test @@ -5,7 +5,7 @@ nextflow_process { process "SORTMERNA" test("sarscov2 indexing only") { - + config './indexing_only.config' when { diff --git a/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/main.nf.test b/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/main.nf.test index eb944b7d5..48ba5f48b 100644 --- a/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/main.nf.test +++ b/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/main.nf.test @@ -5,6 +5,15 @@ nextflow_workflow { workflow "FASTQ_FASTQC_UMITOOLS_FASTP" config './nextflow.config' + tag "subworkflows" + tag "subworkflows_nfcore" + tag "subworkflows/fastq_fastqc_umitools_fastp" + tag "fastq_fastqc_umitools_fastp" + tag "fastqc" + tag "umitools/extract" + tag "fastp" + + test("sarscov2 paired-end [fastq]") { when { diff --git a/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/main.nf.test.snap b/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/main.nf.test.snap index 5b995aad5..37cd050ab 100644 --- a/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/main.nf.test.snap +++ b/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/main.nf.test.snap @@ -2039,7 +2039,17 @@ ] ], "8": [ - + [ + { + "id": "test", + "single_end": false + }, + [ + "test.paired.fail.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "test_1.fail.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "test_2.fail.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ] ], "9": [ @@ -2138,7 +2148,17 @@ ] ], "trim_reads_fail": [ - + [ + { + "id": "test", + "single_end": false + }, + [ + "test.paired.fail.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "test_1.fail.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "test_2.fail.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ] ], "trim_reads_merged": [ @@ -2157,7 +2177,7 @@ "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-07-03T16:01:15.380539" + "timestamp": "2024-07-05T16:30:39.079822" }, "skip_umi_extract - stub": { "content": [ From 4555a2786ca3b4739031a4e393a004b935303756 Mon Sep 17 00:00:00 2001 From: Matthias Zepper Date: Tue, 9 Jul 2024 18:17:24 +0200 Subject: [PATCH 462/634] Undo changes to modules/nf-core/dupradar/templates/dupradar.r from Harshil Patel and me, since they should be fixed upstream in the modules directory. Reset state of file to cc1bf2ca221865de5142dbf8f9217f7593097526. --- modules/nf-core/dupradar/templates/dupradar.r | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/modules/nf-core/dupradar/templates/dupradar.r b/modules/nf-core/dupradar/templates/dupradar.r index 7653e5873..ec20cb851 100755 --- a/modules/nf-core/dupradar/templates/dupradar.r +++ b/modules/nf-core/dupradar/templates/dupradar.r @@ -88,6 +88,7 @@ line="#id: DupInt # max: 100 # min: 0 # scale: 'RdYlGn-rev' +# format: '{:.2f}%' Sample dupRadar_intercept" write(line,file=paste0(output_prefix, "_dup_intercept_mqc.txt"),append=TRUE) @@ -114,23 +115,29 @@ line="#id: dupradar # This plot shows the general linear models - a summary of the gene duplication distributions. \" #pconfig: # title: 'DupRadar General Linear Model' -# xlog: True +# xLog: True # xlab: 'expression (reads/kbp)' # ylab: '% duplicate reads' # ymax: 100 # ymin: 0 # tt_label: '{point.x:.1f} reads/kbp: {point.y:,.2f}% duplicates' -# x_lines: +# xPlotLines: # - color: 'green' -# dash: 'LongDash' +# dashStyle: 'LongDash' # label: +# style: {color: 'green'} # text: '0.5 RPKM' +# verticalAlign: 'bottom' +# y: -65 # value: 0.5 # width: 1 # - color: 'red' -# dash: 'LongDash' +# dashStyle: 'LongDash' # label: +# style: {color: 'red'} # text: '1 read/bp' +# verticalAlign: 'bottom' +# y: -65 # value: 1000 # width: 1" From eb4e36285139767d0cc7e31ddd614774b80cfed7 Mon Sep 17 00:00:00 2001 From: Adam Talbot <12817534+adamrtalbot@users.noreply.github.com> Date: Tue, 9 Jul 2024 17:25:18 +0100 Subject: [PATCH 463/634] Update Azure Batch guidance MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Updated Azure Batch guidance to use a machine that would actually work 🤦 . Do we even need this? Can we just remove this section? --- docs/usage.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/usage.md b/docs/usage.md index cf9c607dc..d9138d439 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -413,7 +413,7 @@ If you have any questions or issues please send us a message on [Slack](https:// ## 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. +We recommend providing a compute `params.vm_type` of `Standard_E16d_v5` 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). From c6c8bccc81b86be0c5def13df80e7cedd0086df9 Mon Sep 17 00:00:00 2001 From: Luke Zappia Date: Wed, 10 Jul 2024 08:03:32 +0200 Subject: [PATCH 464/634] Add suggestions from @MatthiasZepper Co-authored-by: Matthias Zepper <6963520+MatthiasZepper@users.noreply.github.com> --- docs/usage.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/usage.md b/docs/usage.md index c3fa4679d..636d5de37 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -219,9 +219,9 @@ Notes: #### Reference genome -It is recommended to provide the most complete reference genome for your species, without additional loci (haplotypes) or patches. For model organisms such as mouse or human, this is the "primary assembly," which includes the reference chromosomes and some additional scaffolds. For the human assembly GRCh38 (hg38), use the `GRCh38.primary_assembly.genome.fa.gz` file from GENCODE or the `Homo_sapiens.GRCh38.dna.primary_assembly.fa.gz` file from Ensembl. These files cover the largest portion of the reference genome without including multiple copies of the same sequence, which can confuse aligners like STAR. +It is recommended to provide the most complete reference genome for your species, without additional loci (haplotypes) or patches. For model organisms such as mouse or human, this is the "primary assembly", which includes the reference chromosomes and some additional scaffolds. For the human assembly GRCh38 (hg38), use the `GRCh38.primary_assembly.genome.fa.gz` file from GENCODE or the `Homo_sapiens.GRCh38.dna.primary_assembly.fa.gz` file from Ensembl. These files cover the largest portion of the reference genome without including multiple copies of the same sequence, which would result in heavy mapping quality penalties. -Most other species (e.g., fly, cow, dog) do not have a primary assembly. In these cases, use the complete reference sequence, or "toplevel" assembly. The main difference between the primary and toplevel assemblies is the inclusion of alternative loci (haplotypes), which typically do not exist for species outside of mouse and human. +For most other species (e.g., fly, cow, dog), no primary assembly is published. This reflects inadequately characterized genomic variation and a lower degree of curation, meaning that there are no established alternative loci (haplotypes), and that the toplevel file is equivalent to a primary assembly. Therefore, while the toplevel assembly may be utilized for these organisms, it is nonetheless advisable to verify the absence of N-padded haplotype or patch regions first. #### Gene annotation From 5f3c4711a9b597d313b3ed222164e9ca77a50664 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Wed, 10 Jul 2024 12:19:17 +0100 Subject: [PATCH 465/634] bump module and temporarily patch for https://github.com/nf-core/modules/pull/5943 --- modules.json | 2 +- modules/nf-core/dupradar/dupradar.diff | 146 ++-- modules/nf-core/dupradar/main.nf | 3 +- modules/nf-core/dupradar/templates/dupradar.r | 15 +- modules/nf-core/dupradar/tests/main.nf.test | 76 +-- .../nf-core/dupradar/tests/main.nf.test.snap | 624 ++++++++++-------- 6 files changed, 442 insertions(+), 424 deletions(-) diff --git a/modules.json b/modules.json index 506e788c2..7b01cd255 100644 --- a/modules.json +++ b/modules.json @@ -37,7 +37,7 @@ }, "dupradar": { "branch": "master", - "git_sha": "f632a6e25b05497477920183cff33ba72ab7b6fc", + "git_sha": "1ceaa8ba4d0fd886dbca0e545815d905b7407de7", "installed_by": ["modules"], "patch": "modules/nf-core/dupradar/dupradar.diff" }, diff --git a/modules/nf-core/dupradar/dupradar.diff b/modules/nf-core/dupradar/dupradar.diff index c24bc6570..7c73b0779 100644 --- a/modules/nf-core/dupradar/dupradar.diff +++ b/modules/nf-core/dupradar/dupradar.diff @@ -1,87 +1,75 @@ Changes in module 'nf-core/dupradar' ---- /dev/null -+++ modules/nf-core/dupradar/nextflow.config -@@ -0,0 +1,35 @@ -+if (!params.skip_alignment && !params.skip_qc) { -+ if (!params.skip_dupradar) { -+ process { -+ withName: 'DUPRADAR' { -+ publishDir = [ -+ [ -+ path: { "${params.outdir}/${params.aligner}/dupradar/scatter_plot" }, -+ mode: params.publish_dir_mode, -+ pattern: "*Dens.pdf" -+ ], -+ [ -+ path: { "${params.outdir}/${params.aligner}/dupradar/box_plot" }, -+ mode: params.publish_dir_mode, -+ pattern: "*Boxplot.pdf" -+ ], -+ [ -+ path: { "${params.outdir}/${params.aligner}/dupradar/histogram" }, -+ mode: params.publish_dir_mode, -+ pattern: "*Hist.pdf" -+ ], -+ [ -+ path: { "${params.outdir}/${params.aligner}/dupradar/gene_data" }, -+ mode: params.publish_dir_mode, -+ pattern: "*Matrix.txt" -+ ], -+ [ -+ path: { "${params.outdir}/${params.aligner}/dupradar/intercepts_slope" }, -+ mode: params.publish_dir_mode, -+ pattern: "*slope.txt" -+ ] -+ ] -+ } -+ } -+ } -+} - --- modules/nf-core/dupradar/tests/main.nf.test.snap +++ modules/nf-core/dupradar/tests/main.nf.test.snap -@@ -50,8 +50,8 @@ +@@ -23,8 +23,8 @@ "strandedness": "forward" }, [ -- "test_dup_intercept_mqc.txt:md5,d69369924aeb9695b0e97e755e0d9ea3", -- "test_duprateExpDensCurve_mqc.txt:md5,f4a50dc09de81219ed4449c11153ba6e" -+ "test_dup_intercept_mqc.txt:md5,002855b42a71aa0f407ef7fa19df9ac3", -+ "test_duprateExpDensCurve_mqc.txt:md5,5c6ab345e3e0089d409624d6a4bf4e40" +- "test_dup_intercept_mqc.txt:md5,7b6fb70cbede0d20ffa576a0cc0b249d", +- "test_duprateExpDensCurve_mqc.txt:md5,49b44937123c14b622f346cb6156dd4f" ++ "test_dup_intercept_mqc.txt:md5,11961f0962ffc70e42aa57a12984e0fc", ++ "test_duprateExpDensCurve_mqc.txt:md5,f7d3432ef52047336b156446281aa6ac" ] ] - ] -@@ -150,8 +150,8 @@ + ], +@@ -34,9 +34,9 @@ + ], + "meta": { + "nf-test": "0.8.4", +- "nextflow": "24.04.2" ++ "nextflow": "23.10.1" + }, +- "timestamp": "2024-07-05T13:26:49.615507" ++ "timestamp": "2024-07-10T10:42:05.747232" + }, + "sarscov2 - bam - single_end - stub": { + "content": [ +@@ -197,9 +197,9 @@ + ], + "meta": { + "nf-test": "0.8.4", +- "nextflow": "24.04.2" ++ "nextflow": "23.10.1" + }, +- "timestamp": "2024-07-05T13:27:00.623697" ++ "timestamp": "2024-07-10T10:42:17.275909" + }, + "sarscov2 - bam - paired_end": { + "content": [ +@@ -225,8 +225,8 @@ "strandedness": "forward" }, [ -- "test_dup_intercept_mqc.txt:md5,7b6fb70cbede0d20ffa576a0cc0b249d", -- "test_duprateExpDensCurve_mqc.txt:md5,49b44937123c14b622f346cb6156dd4f" -+ "test_dup_intercept_mqc.txt:md5,11961f0962ffc70e42aa57a12984e0fc", -+ "test_duprateExpDensCurve_mqc.txt:md5,eb742e354c8d5d6bed8d2ebac087f0ac" +- "test_dup_intercept_mqc.txt:md5,d69369924aeb9695b0e97e755e0d9ea3", +- "test_duprateExpDensCurve_mqc.txt:md5,f4a50dc09de81219ed4449c11153ba6e" ++ "test_dup_intercept_mqc.txt:md5,002855b42a71aa0f407ef7fa19df9ac3", ++ "test_duprateExpDensCurve_mqc.txt:md5,e797d8e256c5b2ab3aad1801360f1a77" ] ] - ] -@@ -357,4 +357,4 @@ + ], +@@ -236,9 +236,9 @@ + ], + "meta": { + "nf-test": "0.8.4", +- "nextflow": "24.04.2" ++ "nextflow": "23.10.1" + }, +- "timestamp": "2024-07-05T13:27:11.791811" ++ "timestamp": "2024-07-10T10:42:29.772268" + }, + "sarscov2 - bam - paired_end - stub": { + "content": [ +@@ -399,8 +399,8 @@ + ], + "meta": { + "nf-test": "0.8.4", +- "nextflow": "24.04.2" ++ "nextflow": "23.10.1" }, - "timestamp": "2024-03-07T13:07:43.344100132" +- "timestamp": "2024-07-05T13:27:22.967266" ++ "timestamp": "2024-07-10T10:42:41.326491" } --}+} - ---- modules/nf-core/dupradar/tests/main.nf.test -+++ modules/nf-core/dupradar/tests/main.nf.test -@@ -3,10 +3,6 @@ - name "Test Process DUPRADAR" - script "../main.nf" - process "DUPRADAR" -- -- tag "modules" -- tag "modules_nfcore" -- tag "dupradar" - - test("sarscov2 - bam - single_end") { - - + } --- modules/nf-core/dupradar/templates/dupradar.r +++ modules/nf-core/dupradar/templates/dupradar.r @@ -88,7 +88,6 @@ @@ -92,7 +80,7 @@ Changes in module 'nf-core/dupradar' Sample dupRadar_intercept" write(line,file=paste0(output_prefix, "_dup_intercept_mqc.txt"),append=TRUE) -@@ -115,15 +114,15 @@ +@@ -115,29 +114,23 @@ # This plot shows the general linear models - a summary of the gene duplication distributions. \" #pconfig: # title: 'DupRadar General Linear Model' @@ -109,22 +97,22 @@ Changes in module 'nf-core/dupradar' -# dashStyle: 'LongDash' +# dash: 'LongDash' # label: - # style: {color: 'green'} +-# style: {color: 'green'} # text: '0.5 RPKM' -@@ -132,7 +131,7 @@ +-# verticalAlign: 'bottom' +-# y: -65 # value: 0.5 # width: 1 # - color: 'red' -# dashStyle: 'LongDash' +# dash: 'LongDash' # label: - # style: {color: 'red'} +-# style: {color: 'red'} # text: '1 read/bp' - ---- modules/nf-core/dupradar/tests/tags.yml -+++ /dev/null -@@ -1,2 +0,0 @@ --dupradar: -- - "modules/nf-core/dupradar/**" +-# verticalAlign: 'bottom' +-# y: -65 + # value: 1000 + # width: 1" + ************************************************************ diff --git a/modules/nf-core/dupradar/main.nf b/modules/nf-core/dupradar/main.nf index 6ed502bbe..8f3665a67 100644 --- a/modules/nf-core/dupradar/main.nf +++ b/modules/nf-core/dupradar/main.nf @@ -34,7 +34,8 @@ process DUPRADAR { touch ${meta.id}_expressionHist.pdf touch ${meta.id}_dupMatrix.txt touch ${meta.id}_intercept_slope.txt - touch ${meta.id}_mqc.txt + touch ${meta.id}_dup_intercept_mqc.txt + touch ${meta.id}_duprateExpDensCurve_mqc.txt touch ${meta.id}.R_sessionInfo.log cat <<-END_VERSIONS > versions.yml diff --git a/modules/nf-core/dupradar/templates/dupradar.r b/modules/nf-core/dupradar/templates/dupradar.r index ec20cb851..7653e5873 100755 --- a/modules/nf-core/dupradar/templates/dupradar.r +++ b/modules/nf-core/dupradar/templates/dupradar.r @@ -88,7 +88,6 @@ line="#id: DupInt # max: 100 # min: 0 # scale: 'RdYlGn-rev' -# format: '{:.2f}%' Sample dupRadar_intercept" write(line,file=paste0(output_prefix, "_dup_intercept_mqc.txt"),append=TRUE) @@ -115,29 +114,23 @@ line="#id: dupradar # This plot shows the general linear models - a summary of the gene duplication distributions. \" #pconfig: # title: 'DupRadar General Linear Model' -# xLog: True +# xlog: True # xlab: 'expression (reads/kbp)' # ylab: '% duplicate reads' # ymax: 100 # ymin: 0 # tt_label: '{point.x:.1f} reads/kbp: {point.y:,.2f}% duplicates' -# xPlotLines: +# x_lines: # - color: 'green' -# dashStyle: 'LongDash' +# dash: 'LongDash' # label: -# style: {color: 'green'} # text: '0.5 RPKM' -# verticalAlign: 'bottom' -# y: -65 # value: 0.5 # width: 1 # - color: 'red' -# dashStyle: 'LongDash' +# dash: 'LongDash' # label: -# style: {color: 'red'} # text: '1 read/bp' -# verticalAlign: 'bottom' -# y: -65 # value: 1000 # width: 1" diff --git a/modules/nf-core/dupradar/tests/main.nf.test b/modules/nf-core/dupradar/tests/main.nf.test index e4bfcb917..60f8dfb7d 100644 --- a/modules/nf-core/dupradar/tests/main.nf.test +++ b/modules/nf-core/dupradar/tests/main.nf.test @@ -7,15 +7,15 @@ nextflow_process { test("sarscov2 - bam - single_end") { config './nextflow.config' - + when { process { """ - input[0] = [ + input[0] = [ [ id:'test', single_end:true, strandedness:'forward' ], // meta map file(params.modules_testdata_base_path + "genomics/sarscov2/illumina/bam/test.single_end.bam", checkIfExists: true) ] - input[1] = [ + input[1] = [ [ id:'sarscov2' ], // meta map file(params.modules_testdata_base_path + "genomics/sarscov2/genome/genome.gtf", checkIfExists: true) ] @@ -26,32 +26,33 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot(file(process.out.scatter2d[0][1]).name).match('scatter_single_end') }, - { assert snapshot(file(process.out.boxplot[0][1]).name).match('boxplot_single_end') }, - { assert snapshot(file(process.out.hist[0][1]).name).match('hist_single_end') }, - { assert snapshot(process.out.dupmatrix).match('dupmatrix_single_end') }, - { assert snapshot(process.out.intercept_slopt).match('intercept_slope_single_end') }, - { assert snapshot(process.out.multiqc).match('multiqc_single_end') }, - { assert snapshot(process.out.versions).match('versions_single_end') } + { assert snapshot( + file(process.out.boxplot[0][1]).name, + file(process.out.hist[0][1]).name, + file(process.out.scatter2d[0][1]).name, + process.out.dupmatrix, + process.out.intercept_slopt, + process.out.multiqc, + process.out.versions + ).match() } ) } - } - + test("sarscov2 - bam - single_end - stub") { config './nextflow.config' - + options '-stub' when { process { """ - input[0] = [ + input[0] = [ [ id:'test', single_end:true, strandedness:'forward' ], // meta map file(params.modules_testdata_base_path + "genomics/sarscov2/illumina/bam/test.single_end.bam", checkIfExists: true) ] - input[1] = [ + input[1] = [ [ id:'sarscov2' ], // meta map file(params.modules_testdata_base_path + "genomics/sarscov2/genome/genome.gtf", checkIfExists: true) ] @@ -62,16 +63,9 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot(file(process.out.scatter2d[0][1]).name).match('scatter_single_end_stub') }, - { assert snapshot(file(process.out.boxplot[0][1]).name).match('boxplot_single_end_stub') }, - { assert snapshot(file(process.out.hist[0][1]).name).match('hist_single_end_stub') }, - { assert snapshot(process.out.dupmatrix).match('dupmatrix_single_end_stub') }, - { assert snapshot(process.out.intercept_slopt).match('intercept_slope_single_end_stub') }, - { assert snapshot(process.out.multiqc).match('multiqc_single_end_stub') }, - { assert snapshot(process.out.versions).match('versions_single_end_stub') } + { assert snapshot(process.out).match() } ) } - } test("sarscov2 - bam - paired_end") { @@ -81,11 +75,11 @@ nextflow_process { when { process { """ - input[0] = [ + input[0] = [ [ id:'test', single_end:false, strandedness:'forward' ], // meta map file(params.modules_testdata_base_path + "genomics/sarscov2/illumina/bam/test.paired_end.bam", checkIfExists: true) ] - input[1] = [ + input[1] = [ [ id:'sarscov2' ], // meta map file(params.modules_testdata_base_path + "genomics/sarscov2/genome/genome.gtf", checkIfExists: true) ] @@ -96,31 +90,33 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot(file(process.out.scatter2d[0][1]).name).match('scatter_paired_end') }, - { assert snapshot(file(process.out.boxplot[0][1]).name).match('boxplot_paired_end') }, - { assert snapshot(file(process.out.hist[0][1]).name).match('hist_paired_end') }, - { assert snapshot(process.out.dupmatrix).match('dupmatrix_paired_end') }, - { assert snapshot(process.out.intercept_slopt).match('intercept_slope_paired_end') }, - { assert snapshot(process.out.multiqc).match('multiqc_paired_end') }, - { assert snapshot(process.out.versions).match('versions_paired_end') } + { assert snapshot( + file(process.out.boxplot[0][1]).name, + file(process.out.hist[0][1]).name, + file(process.out.scatter2d[0][1]).name, + process.out.dupmatrix, + process.out.intercept_slopt, + process.out.multiqc, + process.out.versions + ).match() } ) } } - + test("sarscov2 - bam - paired_end - stub") { config './nextflow.config' options '-stub' - + when { process { """ - input[0] = [ + input[0] = [ [ id:'test', single_end:false, strandedness:'forward' ], // meta map file(params.modules_testdata_base_path + "genomics/sarscov2/illumina/bam/test.paired_end.bam", checkIfExists: true) ] - input[1] = [ + input[1] = [ [ id:'sarscov2' ], // meta map file(params.modules_testdata_base_path + "genomics/sarscov2/genome/genome.gtf", checkIfExists: true) ] @@ -131,13 +127,7 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot(file(process.out.scatter2d[0][1]).name).match('scatter_paired_end_stub') }, - { assert snapshot(file(process.out.boxplot[0][1]).name).match('boxplot_paired_end_stub') }, - { assert snapshot(file(process.out.hist[0][1]).name).match('hist_paired_end_stub') }, - { assert snapshot(process.out.dupmatrix).match('dupmatrix_paired_end_stub') }, - { assert snapshot(process.out.intercept_slopt).match('intercept_slope_paired_end_stub') }, - { assert snapshot(process.out.multiqc).match('multiqc_paired_end_stub') }, - { assert snapshot(process.out.versions).match('versions_paired_end_stub') } + { assert snapshot(process.out).match() } ) } } diff --git a/modules/nf-core/dupradar/tests/main.nf.test.snap b/modules/nf-core/dupradar/tests/main.nf.test.snap index 79587a439..d509ea890 100644 --- a/modules/nf-core/dupradar/tests/main.nf.test.snap +++ b/modules/nf-core/dupradar/tests/main.nf.test.snap @@ -1,16 +1,9 @@ { - "boxplot_single_end": { - "content": [ - "test_duprateExpBoxplot.pdf" - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-03-07T13:07:33.021785925" - }, - "multiqc_single_end_stub": { + "sarscov2 - bam - single_end": { "content": [ + "test_duprateExpBoxplot.pdf", + "test_expressionHist.pdf", + "test_duprateExpDens.pdf", [ [ { @@ -18,164 +11,201 @@ "single_end": true, "strandedness": "forward" }, - "test_mqc.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + "test_dupMatrix.txt:md5,2beda4c140548a2b8c91bf6bde01ddc6" ] - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-03-07T13:07:43.36647107" - }, - "versions_paired_end_stub": { - "content": [ - [ - "versions.yml:md5,cd524e9e74304c2930cf28e2d741d351" - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-03-07T13:08:05.545356706" - }, - "multiqc_paired_end": { - "content": [ + ], + null, [ [ { "id": "test", - "single_end": false, + "single_end": true, "strandedness": "forward" }, [ - "test_dup_intercept_mqc.txt:md5,002855b42a71aa0f407ef7fa19df9ac3", - "test_duprateExpDensCurve_mqc.txt:md5,5c6ab345e3e0089d409624d6a4bf4e40" + "test_dup_intercept_mqc.txt:md5,11961f0962ffc70e42aa57a12984e0fc", + "test_duprateExpDensCurve_mqc.txt:md5,f7d3432ef52047336b156446281aa6ac" ] ] - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-03-07T13:07:55.730550241" - }, - "boxplot_paired_end_stub": { - "content": [ - "test_duprateExpBoxplot.pdf" - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-03-07T13:08:05.512885589" - }, - "scatter_single_end": { - "content": [ - "test_duprateExpDens.pdf" - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-03-07T13:07:33.010955775" - }, - "hist_single_end_stub": { - "content": [ - "test_expressionHist.pdf" - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-03-07T13:07:43.353498911" - }, - "scatter_paired_end_stub": { - "content": [ - "test_duprateExpDens.pdf" - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-03-07T13:08:05.507974569" - }, - "dupmatrix_single_end": { - "content": [ - [ - [ - { - "id": "test", - "single_end": true, - "strandedness": "forward" - }, - "test_dupMatrix.txt:md5,2beda4c140548a2b8c91bf6bde01ddc6" - ] - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-03-07T13:07:33.027798024" - }, - "dupmatrix_single_end_stub": { - "content": [ + ], [ - [ - { - "id": "test", - "single_end": true, - "strandedness": "forward" - }, - "test_dupMatrix.txt:md5,d41d8cd98f00b204e9800998ecf8427e" - ] + "versions.yml:md5,cd524e9e74304c2930cf28e2d741d351" ] ], "meta": { "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-03-07T13:07:43.358373221" + "timestamp": "2024-07-10T10:42:05.747232" }, - "multiqc_single_end": { + "sarscov2 - bam - single_end - stub": { "content": [ - [ - [ - { - "id": "test", - "single_end": true, - "strandedness": "forward" - }, + { + "0": [ [ - "test_dup_intercept_mqc.txt:md5,11961f0962ffc70e42aa57a12984e0fc", - "test_duprateExpDensCurve_mqc.txt:md5,eb742e354c8d5d6bed8d2ebac087f0ac" + { + "id": "test", + "single_end": true, + "strandedness": "forward" + }, + "test_duprateExpDens.pdf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": true, + "strandedness": "forward" + }, + "test_duprateExpBoxplot.pdf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + [ + { + "id": "test", + "single_end": true, + "strandedness": "forward" + }, + "test_expressionHist.pdf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "3": [ + [ + { + "id": "test", + "single_end": true, + "strandedness": "forward" + }, + "test_dupMatrix.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "4": [ + [ + { + "id": "test", + "single_end": true, + "strandedness": "forward" + }, + "test_intercept_slope.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "5": [ + [ + { + "id": "test", + "single_end": true, + "strandedness": "forward" + }, + [ + "test_dup_intercept_mqc.txt:md5,d41d8cd98f00b204e9800998ecf8427e", + "test_duprateExpDensCurve_mqc.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "6": [ + [ + { + "id": "test", + "single_end": true, + "strandedness": "forward" + }, + "test.R_sessionInfo.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "7": [ + "versions.yml:md5,cd524e9e74304c2930cf28e2d741d351" + ], + "boxplot": [ + [ + { + "id": "test", + "single_end": true, + "strandedness": "forward" + }, + "test_duprateExpBoxplot.pdf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "dupmatrix": [ + [ + { + "id": "test", + "single_end": true, + "strandedness": "forward" + }, + "test_dupMatrix.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "hist": [ + [ + { + "id": "test", + "single_end": true, + "strandedness": "forward" + }, + "test_expressionHist.pdf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "intercept_slope": [ + [ + { + "id": "test", + "single_end": true, + "strandedness": "forward" + }, + "test_intercept_slope.txt:md5,d41d8cd98f00b204e9800998ecf8427e" ] + ], + "multiqc": [ + [ + { + "id": "test", + "single_end": true, + "strandedness": "forward" + }, + [ + "test_dup_intercept_mqc.txt:md5,d41d8cd98f00b204e9800998ecf8427e", + "test_duprateExpDensCurve_mqc.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "scatter2d": [ + [ + { + "id": "test", + "single_end": true, + "strandedness": "forward" + }, + "test_duprateExpDens.pdf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "session_info": [ + [ + { + "id": "test", + "single_end": true, + "strandedness": "forward" + }, + "test.R_sessionInfo.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,cd524e9e74304c2930cf28e2d741d351" ] - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-03-07T13:07:33.036463063" - }, - "versions_single_end": { - "content": [ - [ - "versions.yml:md5,cd524e9e74304c2930cf28e2d741d351" - ] + } ], "meta": { "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-03-07T13:07:33.043006923" + "timestamp": "2024-07-10T10:42:17.275909" }, - "multiqc_paired_end_stub": { + "sarscov2 - bam - paired_end": { "content": [ + "test_duprateExpBoxplot.pdf", + "test_expressionHist.pdf", + "test_duprateExpDens.pdf", [ [ { @@ -183,18 +213,10 @@ "single_end": false, "strandedness": "forward" }, - "test_mqc.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + "test_dupMatrix.txt:md5,5a327feaba56e5ea96a2cb7e8577e196" ] - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-03-07T13:08:05.537047876" - }, - "dupmatrix_paired_end_stub": { - "content": [ + ], + null, [ [ { @@ -202,38 +224,12 @@ "single_end": false, "strandedness": "forward" }, - "test_dupMatrix.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + [ + "test_dup_intercept_mqc.txt:md5,002855b42a71aa0f407ef7fa19df9ac3", + "test_duprateExpDensCurve_mqc.txt:md5,e797d8e256c5b2ab3aad1801360f1a77" + ] ] - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-03-07T13:08:05.527609018" - }, - "boxplot_paired_end": { - "content": [ - "test_duprateExpBoxplot.pdf" - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-03-07T13:07:55.709324683" - }, - "hist_paired_end": { - "content": [ - "test_expressionHist.pdf" - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-03-07T13:07:55.713514333" - }, - "versions_paired_end": { - "content": [ + ], [ "versions.yml:md5,cd524e9e74304c2930cf28e2d741d351" ] @@ -242,119 +238,169 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-03-07T13:07:55.737814831" - }, - "versions_single_end_stub": { - "content": [ - [ - "versions.yml:md5,cd524e9e74304c2930cf28e2d741d351" - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-03-07T13:07:43.372024419" - }, - "hist_single_end": { - "content": [ - "test_expressionHist.pdf" - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-03-07T13:07:33.024192244" - }, - "boxplot_single_end_stub": { - "content": [ - "test_duprateExpBoxplot.pdf" - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-03-07T13:07:43.349385822" - }, - "intercept_slope_paired_end": { - "content": null, - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-03-07T13:07:55.723431072" - }, - "intercept_slope_single_end_stub": { - "content": null, - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-03-07T13:07:43.36234388" - }, - "intercept_slope_paired_end_stub": { - "content": null, - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-03-07T13:08:05.532566607" - }, - "hist_paired_end_stub": { - "content": [ - "test_expressionHist.pdf" - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-03-07T13:08:05.518776728" - }, - "scatter_paired_end": { - "content": [ - "test_duprateExpDens.pdf" - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-03-07T13:07:55.703114124" + "timestamp": "2024-07-10T10:42:29.772268" }, - "dupmatrix_paired_end": { + "sarscov2 - bam - paired_end - stub": { "content": [ - [ - [ - { - "id": "test", - "single_end": false, - "strandedness": "forward" - }, - "test_dupMatrix.txt:md5,5a327feaba56e5ea96a2cb7e8577e196" + { + "0": [ + [ + { + "id": "test", + "single_end": false, + "strandedness": "forward" + }, + "test_duprateExpDens.pdf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": false, + "strandedness": "forward" + }, + "test_duprateExpBoxplot.pdf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + [ + { + "id": "test", + "single_end": false, + "strandedness": "forward" + }, + "test_expressionHist.pdf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "3": [ + [ + { + "id": "test", + "single_end": false, + "strandedness": "forward" + }, + "test_dupMatrix.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "4": [ + [ + { + "id": "test", + "single_end": false, + "strandedness": "forward" + }, + "test_intercept_slope.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "5": [ + [ + { + "id": "test", + "single_end": false, + "strandedness": "forward" + }, + [ + "test_dup_intercept_mqc.txt:md5,d41d8cd98f00b204e9800998ecf8427e", + "test_duprateExpDensCurve_mqc.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "6": [ + [ + { + "id": "test", + "single_end": false, + "strandedness": "forward" + }, + "test.R_sessionInfo.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "7": [ + "versions.yml:md5,cd524e9e74304c2930cf28e2d741d351" + ], + "boxplot": [ + [ + { + "id": "test", + "single_end": false, + "strandedness": "forward" + }, + "test_duprateExpBoxplot.pdf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "dupmatrix": [ + [ + { + "id": "test", + "single_end": false, + "strandedness": "forward" + }, + "test_dupMatrix.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "hist": [ + [ + { + "id": "test", + "single_end": false, + "strandedness": "forward" + }, + "test_expressionHist.pdf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "intercept_slope": [ + [ + { + "id": "test", + "single_end": false, + "strandedness": "forward" + }, + "test_intercept_slope.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "multiqc": [ + [ + { + "id": "test", + "single_end": false, + "strandedness": "forward" + }, + [ + "test_dup_intercept_mqc.txt:md5,d41d8cd98f00b204e9800998ecf8427e", + "test_duprateExpDensCurve_mqc.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "scatter2d": [ + [ + { + "id": "test", + "single_end": false, + "strandedness": "forward" + }, + "test_duprateExpDens.pdf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "session_info": [ + [ + { + "id": "test", + "single_end": false, + "strandedness": "forward" + }, + "test.R_sessionInfo.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,cd524e9e74304c2930cf28e2d741d351" ] - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-03-07T13:07:55.717362643" - }, - "intercept_slope_single_end": { - "content": null, - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-03-07T13:07:33.033103464" - }, - "scatter_single_end_stub": { - "content": [ - "test_duprateExpDens.pdf" + } ], "meta": { "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-03-07T13:07:43.344100132" + "timestamp": "2024-07-10T10:42:41.326491" } -} +} \ No newline at end of file From 1931c057f66c3a17725f5809219f868a22fccca4 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Wed, 10 Jul 2024 13:18:53 +0100 Subject: [PATCH 466/634] Correct the diff --- modules/nf-core/dupradar/dupradar.diff | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/modules/nf-core/dupradar/dupradar.diff b/modules/nf-core/dupradar/dupradar.diff index 7c73b0779..28df384e9 100644 --- a/modules/nf-core/dupradar/dupradar.diff +++ b/modules/nf-core/dupradar/dupradar.diff @@ -70,6 +70,20 @@ Changes in module 'nf-core/dupradar' + "timestamp": "2024-07-10T10:42:41.326491" } } +--- modules/nf-core/dupradar/tests/main.nf.test ++++ modules/nf-core/dupradar/tests/main.nf.test +@@ -3,10 +3,6 @@ + name "Test Process DUPRADAR" + script "../main.nf" + process "DUPRADAR" +- +- tag "modules" +- tag "modules_nfcore" +- tag "dupradar" + + test("sarscov2 - bam - single_end") { + + --- modules/nf-core/dupradar/templates/dupradar.r +++ modules/nf-core/dupradar/templates/dupradar.r @@ -88,7 +88,6 @@ From 923021636532495fb887fa474db6e380d9a7f158 Mon Sep 17 00:00:00 2001 From: Matthias Zepper Date: Wed, 10 Jul 2024 20:00:30 +0200 Subject: [PATCH 467/634] Update MultiQC to v1.23 --- modules.json | 2 +- modules/nf-core/multiqc/environment.yml | 2 +- modules/nf-core/multiqc/main.nf | 4 ++-- modules/nf-core/multiqc/tests/main.nf.test.snap | 12 ++++++------ 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/modules.json b/modules.json index 7b01cd255..deedf133a 100644 --- a/modules.json +++ b/modules.json @@ -93,7 +93,7 @@ }, "multiqc": { "branch": "master", - "git_sha": "314d742bdb357a1df5f9b88427b3b6ac78aa33f7", + "git_sha": "45d482f013f7da8a3e050e855f04ada418d91c3c", "installed_by": ["modules"] }, "picard/markduplicates": { diff --git a/modules/nf-core/multiqc/environment.yml b/modules/nf-core/multiqc/environment.yml index ecb7dd7b2..2121492d6 100644 --- a/modules/nf-core/multiqc/environment.yml +++ b/modules/nf-core/multiqc/environment.yml @@ -4,4 +4,4 @@ channels: - bioconda - defaults dependencies: - - bioconda::multiqc=1.22.3 + - bioconda::multiqc=1.23 diff --git a/modules/nf-core/multiqc/main.nf b/modules/nf-core/multiqc/main.nf index 2581a4963..ac624e869 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.22.3--pyhdfd78af_0' : - 'biocontainers/multiqc:1.22.3--pyhdfd78af_0' }" + 'https://depot.galaxyproject.org/singularity/multiqc:1.23--pyhdfd78af_0' : + 'biocontainers/multiqc:1.23--pyhdfd78af_0' }" input: path multiqc_files, stageAs: "?/*" diff --git a/modules/nf-core/multiqc/tests/main.nf.test.snap b/modules/nf-core/multiqc/tests/main.nf.test.snap index 0a4760e42..45e95e5de 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,bf3b209659477254bb8fa5a9405f9984" + "versions.yml:md5,87904cd321df21fac35d18f0fc01bb19" ] ], "meta": { "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-06-25T12:31:21.878452033" + "timestamp": "2024-07-10T12:41:34.562023" }, "multiqc_stub": { "content": [ @@ -17,25 +17,25 @@ "multiqc_report.html", "multiqc_data", "multiqc_plots", - "versions.yml:md5,bf3b209659477254bb8fa5a9405f9984" + "versions.yml:md5,87904cd321df21fac35d18f0fc01bb19" ] ], "meta": { "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-06-25T12:32:02.322196503" + "timestamp": "2024-07-10T11:27:11.933869532" }, "multiqc_versions_config": { "content": [ [ - "versions.yml:md5,bf3b209659477254bb8fa5a9405f9984" + "versions.yml:md5,87904cd321df21fac35d18f0fc01bb19" ] ], "meta": { "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-06-25T12:31:50.064227638" + "timestamp": "2024-07-10T11:26:56.709849369" } } \ No newline at end of file From bb3986647018301d7539c59eae34ad3b66eda21f Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Thu, 11 Jul 2024 10:41:21 +0100 Subject: [PATCH 468/634] Demote titles to return structure to previous --- docs/usage.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/usage.md b/docs/usage.md index 636d5de37..a5d50cdeb 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -241,13 +241,13 @@ GFF (General Feature Format) is a tab-separated text file format for representin More information and links to further resources are [available from Ensembl](https://www.ensembl.org/info/website/upload/gff.html). ::: -### Reference transcriptome +#### Reference transcriptome In addition to the reference genome sequence and annotation, you can provide a reference transcriptome FASTA file. These files can be obtained from GENCODE or Ensembl. However, these sequences only cover the reference chromosomes and can cause inconsistencies if you are using a primary or toplevel genome assembly and annotation. We recommend not providing a transcriptome FASTA file and instead allowing the pipeline to create it from the provided genome and annotation. Similar to aligner indexes, you can save the created transcriptome FASTA and BED files to a central location for future pipeline runs. This helps avoid redundant computation and having multiple copies on your system. Ensure that all genome, annotation, transcriptome, and index versions match to maintain consistency. -### Indices +#### Indices By default, indices are generated dynamically by the workflow for tools such as STAR and Salmon. Since indexing is an expensive process in time and resources you should ensure that it is only done once, by retaining the indices generated from each batch of reference files: @@ -258,7 +258,7 @@ Once you have the indices from a workflow run you should save them somewhere cen Remember to note the genome and annotation versions as well as the versions of the software used for indexing, as an index created with one version may not be compatible with other versions. -### GENCODE +#### GENCODE If you are using [GENCODE](https://www.gencodegenes.org/) reference genome files please specify the `--gencode` parameter because the format of these files is slightly different to ENSEMBL genome files: @@ -267,7 +267,7 @@ If you are using [GENCODE](https://www.gencodegenes.org/) reference genome files As well as the standard annotations, GENCODE also provides "basic" annotations, which include only representative transcripts, but we do not recommend using these. -### Prokaryotic genome annotations +#### Prokaryotic genome annotations This pipeline uses featureCounts to generate QC metrics based on [biotype](http://www.ensembl.org/info/genome/genebuild/biotypes.html) information available within GFF/GTF genome annotation files. The format of these annotation files can vary significantly depending on the source of the annotation and the type of organism. The default settings in the pipeline are tailored towards Ensembl GTF annotations available for eukaryotic genomes. Prokaryotic genome annotations tend to be distributed in GFF format which are structured differently in terms of the feature naming conventions. There are a number of ways you can tune the behaviour of the pipeline to cater for differences/absence of biotype information: From 8e42ab11714bdb7e06347236911f92f22d02bec5 Mon Sep 17 00:00:00 2001 From: Matthias Zepper Date: Thu, 11 Jul 2024 12:23:51 +0200 Subject: [PATCH 469/634] Update dupradar from modules repo and remove patch. --- modules.json | 2 +- modules/nf-core/dupradar/dupradar.diff | 132 ------------------ modules/nf-core/dupradar/tests/main.nf.test | 4 + .../nf-core/dupradar/tests/main.nf.test.snap | 24 ++-- modules/nf-core/dupradar/tests/tags.yml | 2 + 5 files changed, 19 insertions(+), 145 deletions(-) delete mode 100644 modules/nf-core/dupradar/dupradar.diff create mode 100644 modules/nf-core/dupradar/tests/tags.yml diff --git a/modules.json b/modules.json index deedf133a..d40aeb2cc 100644 --- a/modules.json +++ b/modules.json @@ -37,7 +37,7 @@ }, "dupradar": { "branch": "master", - "git_sha": "1ceaa8ba4d0fd886dbca0e545815d905b7407de7", + "git_sha": "0c827c36c24afcff8c87099b4a9ccb10e9574b28", "installed_by": ["modules"], "patch": "modules/nf-core/dupradar/dupradar.diff" }, diff --git a/modules/nf-core/dupradar/dupradar.diff b/modules/nf-core/dupradar/dupradar.diff deleted file mode 100644 index 28df384e9..000000000 --- a/modules/nf-core/dupradar/dupradar.diff +++ /dev/null @@ -1,132 +0,0 @@ -Changes in module 'nf-core/dupradar' ---- modules/nf-core/dupradar/tests/main.nf.test.snap -+++ modules/nf-core/dupradar/tests/main.nf.test.snap -@@ -23,8 +23,8 @@ - "strandedness": "forward" - }, - [ -- "test_dup_intercept_mqc.txt:md5,7b6fb70cbede0d20ffa576a0cc0b249d", -- "test_duprateExpDensCurve_mqc.txt:md5,49b44937123c14b622f346cb6156dd4f" -+ "test_dup_intercept_mqc.txt:md5,11961f0962ffc70e42aa57a12984e0fc", -+ "test_duprateExpDensCurve_mqc.txt:md5,f7d3432ef52047336b156446281aa6ac" - ] - ] - ], -@@ -34,9 +34,9 @@ - ], - "meta": { - "nf-test": "0.8.4", -- "nextflow": "24.04.2" -+ "nextflow": "23.10.1" - }, -- "timestamp": "2024-07-05T13:26:49.615507" -+ "timestamp": "2024-07-10T10:42:05.747232" - }, - "sarscov2 - bam - single_end - stub": { - "content": [ -@@ -197,9 +197,9 @@ - ], - "meta": { - "nf-test": "0.8.4", -- "nextflow": "24.04.2" -+ "nextflow": "23.10.1" - }, -- "timestamp": "2024-07-05T13:27:00.623697" -+ "timestamp": "2024-07-10T10:42:17.275909" - }, - "sarscov2 - bam - paired_end": { - "content": [ -@@ -225,8 +225,8 @@ - "strandedness": "forward" - }, - [ -- "test_dup_intercept_mqc.txt:md5,d69369924aeb9695b0e97e755e0d9ea3", -- "test_duprateExpDensCurve_mqc.txt:md5,f4a50dc09de81219ed4449c11153ba6e" -+ "test_dup_intercept_mqc.txt:md5,002855b42a71aa0f407ef7fa19df9ac3", -+ "test_duprateExpDensCurve_mqc.txt:md5,e797d8e256c5b2ab3aad1801360f1a77" - ] - ] - ], -@@ -236,9 +236,9 @@ - ], - "meta": { - "nf-test": "0.8.4", -- "nextflow": "24.04.2" -+ "nextflow": "23.10.1" - }, -- "timestamp": "2024-07-05T13:27:11.791811" -+ "timestamp": "2024-07-10T10:42:29.772268" - }, - "sarscov2 - bam - paired_end - stub": { - "content": [ -@@ -399,8 +399,8 @@ - ], - "meta": { - "nf-test": "0.8.4", -- "nextflow": "24.04.2" -+ "nextflow": "23.10.1" - }, -- "timestamp": "2024-07-05T13:27:22.967266" -+ "timestamp": "2024-07-10T10:42:41.326491" - } - } ---- modules/nf-core/dupradar/tests/main.nf.test -+++ modules/nf-core/dupradar/tests/main.nf.test -@@ -3,10 +3,6 @@ - name "Test Process DUPRADAR" - script "../main.nf" - process "DUPRADAR" -- -- tag "modules" -- tag "modules_nfcore" -- tag "dupradar" - - test("sarscov2 - bam - single_end") { - - ---- modules/nf-core/dupradar/templates/dupradar.r -+++ modules/nf-core/dupradar/templates/dupradar.r -@@ -88,7 +88,6 @@ - # max: 100 - # min: 0 - # scale: 'RdYlGn-rev' --# format: '{:.2f}%' - Sample dupRadar_intercept" - - write(line,file=paste0(output_prefix, "_dup_intercept_mqc.txt"),append=TRUE) -@@ -115,29 +114,23 @@ - # This plot shows the general linear models - a summary of the gene duplication distributions. \" - #pconfig: - # title: 'DupRadar General Linear Model' --# xLog: True -+# xlog: True - # xlab: 'expression (reads/kbp)' - # ylab: '% duplicate reads' - # ymax: 100 - # ymin: 0 - # tt_label: '{point.x:.1f} reads/kbp: {point.y:,.2f}% duplicates' --# xPlotLines: -+# x_lines: - # - color: 'green' --# dashStyle: 'LongDash' -+# dash: 'LongDash' - # label: --# style: {color: 'green'} - # text: '0.5 RPKM' --# verticalAlign: 'bottom' --# y: -65 - # value: 0.5 - # width: 1 - # - color: 'red' --# dashStyle: 'LongDash' -+# dash: 'LongDash' - # label: --# style: {color: 'red'} - # text: '1 read/bp' --# verticalAlign: 'bottom' --# y: -65 - # value: 1000 - # width: 1" - - -************************************************************ diff --git a/modules/nf-core/dupradar/tests/main.nf.test b/modules/nf-core/dupradar/tests/main.nf.test index 60f8dfb7d..ef213df9f 100644 --- a/modules/nf-core/dupradar/tests/main.nf.test +++ b/modules/nf-core/dupradar/tests/main.nf.test @@ -4,6 +4,10 @@ nextflow_process { script "../main.nf" process "DUPRADAR" + tag "modules" + tag "modules_nfcore" + tag "dupradar" + test("sarscov2 - bam - single_end") { config './nextflow.config' diff --git a/modules/nf-core/dupradar/tests/main.nf.test.snap b/modules/nf-core/dupradar/tests/main.nf.test.snap index d509ea890..0b38d4be1 100644 --- a/modules/nf-core/dupradar/tests/main.nf.test.snap +++ b/modules/nf-core/dupradar/tests/main.nf.test.snap @@ -23,8 +23,8 @@ "strandedness": "forward" }, [ - "test_dup_intercept_mqc.txt:md5,11961f0962ffc70e42aa57a12984e0fc", - "test_duprateExpDensCurve_mqc.txt:md5,f7d3432ef52047336b156446281aa6ac" + "test_dup_intercept_mqc.txt:md5,7b6fb70cbede0d20ffa576a0cc0b249d", + "test_duprateExpDensCurve_mqc.txt:md5,49b44937123c14b622f346cb6156dd4f" ] ] ], @@ -34,9 +34,9 @@ ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.2" }, - "timestamp": "2024-07-10T10:42:05.747232" + "timestamp": "2024-07-05T13:26:49.615507" }, "sarscov2 - bam - single_end - stub": { "content": [ @@ -197,9 +197,9 @@ ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.2" }, - "timestamp": "2024-07-10T10:42:17.275909" + "timestamp": "2024-07-05T13:27:00.623697" }, "sarscov2 - bam - paired_end": { "content": [ @@ -225,8 +225,8 @@ "strandedness": "forward" }, [ - "test_dup_intercept_mqc.txt:md5,002855b42a71aa0f407ef7fa19df9ac3", - "test_duprateExpDensCurve_mqc.txt:md5,e797d8e256c5b2ab3aad1801360f1a77" + "test_dup_intercept_mqc.txt:md5,d69369924aeb9695b0e97e755e0d9ea3", + "test_duprateExpDensCurve_mqc.txt:md5,f4a50dc09de81219ed4449c11153ba6e" ] ] ], @@ -236,9 +236,9 @@ ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.2" }, - "timestamp": "2024-07-10T10:42:29.772268" + "timestamp": "2024-07-05T13:27:11.791811" }, "sarscov2 - bam - paired_end - stub": { "content": [ @@ -399,8 +399,8 @@ ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.2" }, - "timestamp": "2024-07-10T10:42:41.326491" + "timestamp": "2024-07-05T13:27:22.967266" } } \ No newline at end of file diff --git a/modules/nf-core/dupradar/tests/tags.yml b/modules/nf-core/dupradar/tests/tags.yml new file mode 100644 index 000000000..255dc4ef3 --- /dev/null +++ b/modules/nf-core/dupradar/tests/tags.yml @@ -0,0 +1,2 @@ +dupradar: + - "modules/nf-core/dupradar/**" From b78a6535c703e308a71b8065c6591cbbdab0e03e Mon Sep 17 00:00:00 2001 From: maxulysse Date: Thu, 11 Jul 2024 12:30:37 +0200 Subject: [PATCH 470/634] use seqera containers --- modules/nf-core/untar/main.nf | 4 +- modules/nf-core/untar/tests/main.nf.test | 43 ++++- modules/nf-core/untar/tests/main.nf.test.snap | 148 +++++++++++++++--- 3 files changed, 172 insertions(+), 23 deletions(-) diff --git a/modules/nf-core/untar/main.nf b/modules/nf-core/untar/main.nf index 8a75bb957..e87262245 100644 --- a/modules/nf-core/untar/main.nf +++ b/modules/nf-core/untar/main.nf @@ -4,8 +4,8 @@ process UNTAR { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/ubuntu:20.04' : - 'nf-core/ubuntu:20.04' }" + 'https://depot.galaxyproject.org/singularity/ubuntu:24.04' : + 'nf-core/ubuntu:24.04' }" input: tuple val(meta), path(archive) diff --git a/modules/nf-core/untar/tests/main.nf.test b/modules/nf-core/untar/tests/main.nf.test index 2740dfbcf..f556118ff 100644 --- a/modules/nf-core/untar/tests/main.nf.test +++ b/modules/nf-core/untar/tests/main.nf.test @@ -17,10 +17,9 @@ nextflow_process { then { assertAll ( { assert process.success }, - { assert snapshot(process.out.untar).match("test_untar") }, + { assert snapshot(process.out).match() }, ) } - } test("test_untar_onlyfiles") { @@ -36,10 +35,48 @@ nextflow_process { then { assertAll ( { assert process.success }, - { assert snapshot(process.out.untar).match("test_untar_onlyfiles") }, + { assert snapshot(process.out).match() }, ) } + } + + test("test_untar - stub") { + options "-stub" + + when { + process { + """ + input[0] = [ [], file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/db/kraken2.tar.gz', checkIfExists: true) ] + """ + } + } + + then { + assertAll ( + { assert process.success }, + { assert snapshot(process.out).match() }, + ) + } } + test("test_untar_onlyfiles - stub") { + + options "-stub" + + when { + process { + """ + input[0] = [ [], file(params.modules_testdata_base_path + 'generic/tar/hello.tar.gz', checkIfExists: true) ] + """ + } + } + + then { + assertAll ( + { assert process.success }, + { assert snapshot(process.out).match() }, + ) + } + } } diff --git a/modules/nf-core/untar/tests/main.nf.test.snap b/modules/nf-core/untar/tests/main.nf.test.snap index 64550292f..d03a7d3c9 100644 --- a/modules/nf-core/untar/tests/main.nf.test.snap +++ b/modules/nf-core/untar/tests/main.nf.test.snap @@ -1,42 +1,154 @@ { "test_untar_onlyfiles": { "content": [ - [ - [ + { + "0": [ [ - - ], + [ + + ], + [ + "hello.txt:md5,e59ff97941044f85df5297e1c302d260" + ] + ] + ], + "1": [ + "versions.yml:md5,0cd92d20f9dfdad1f4fac382631cef03" + ], + "untar": [ + [ + [ + + ], + [ + "hello.txt:md5,e59ff97941044f85df5297e1c302d260" + ] + ] + ], + "versions": [ + "versions.yml:md5,0cd92d20f9dfdad1f4fac382631cef03" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.3" + }, + "timestamp": "2024-07-11T10:40:48.001369" + }, + "test_untar_onlyfiles - stub": { + "content": [ + { + "0": [ + [ + [ + + ], + [ + "file.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "1": [ + "versions.yml:md5,0cd92d20f9dfdad1f4fac382631cef03" + ], + "untar": [ [ - "hello.txt:md5,e59ff97941044f85df5297e1c302d260" + [ + + ], + [ + "file.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] ] + ], + "versions": [ + "versions.yml:md5,0cd92d20f9dfdad1f4fac382631cef03" ] - ] + } ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.3" }, - "timestamp": "2024-02-28T11:49:41.320643" + "timestamp": "2024-07-11T10:41:14.953989" + }, + "test_untar - stub": { + "content": [ + { + "0": [ + [ + [ + + ], + [ + "file.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "1": [ + "versions.yml:md5,0cd92d20f9dfdad1f4fac382631cef03" + ], + "untar": [ + [ + [ + + ], + [ + "file.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "versions": [ + "versions.yml:md5,0cd92d20f9dfdad1f4fac382631cef03" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.3" + }, + "timestamp": "2024-07-11T10:41:01.619275" }, "test_untar": { "content": [ - [ - [ + { + "0": [ [ - - ], + [ + + ], + [ + "hash.k2d:md5,8b8598468f54a7087c203ad0190555d9", + "opts.k2d:md5,a033d00cf6759407010b21700938f543", + "taxo.k2d:md5,094d5891cdccf2f1468088855c214b2c" + ] + ] + ], + "1": [ + "versions.yml:md5,0cd92d20f9dfdad1f4fac382631cef03" + ], + "untar": [ [ - "hash.k2d:md5,8b8598468f54a7087c203ad0190555d9", - "opts.k2d:md5,a033d00cf6759407010b21700938f543", - "taxo.k2d:md5,094d5891cdccf2f1468088855c214b2c" + [ + + ], + [ + "hash.k2d:md5,8b8598468f54a7087c203ad0190555d9", + "opts.k2d:md5,a033d00cf6759407010b21700938f543", + "taxo.k2d:md5,094d5891cdccf2f1468088855c214b2c" + ] ] + ], + "versions": [ + "versions.yml:md5,0cd92d20f9dfdad1f4fac382631cef03" ] - ] + } ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.3" }, - "timestamp": "2024-02-28T11:49:33.795172" + "timestamp": "2024-07-11T10:40:32.530882" } } \ No newline at end of file From d2d21cffc705f71113466700b95ccbd0d268eb43 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Thu, 11 Jul 2024 12:47:39 +0000 Subject: [PATCH 471/634] Update module for snapshot fix --- modules.json | 5 ++--- modules/nf-core/dupradar/tests/main.nf.test.snap | 16 ++++++++-------- 2 files changed, 10 insertions(+), 11 deletions(-) diff --git a/modules.json b/modules.json index d40aeb2cc..320ddb009 100644 --- a/modules.json +++ b/modules.json @@ -37,9 +37,8 @@ }, "dupradar": { "branch": "master", - "git_sha": "0c827c36c24afcff8c87099b4a9ccb10e9574b28", - "installed_by": ["modules"], - "patch": "modules/nf-core/dupradar/dupradar.diff" + "git_sha": "055416736dcb4955960ecc17dea61eb41b68c024", + "installed_by": ["modules"] }, "fastp": { "branch": "master", diff --git a/modules/nf-core/dupradar/tests/main.nf.test.snap b/modules/nf-core/dupradar/tests/main.nf.test.snap index 0b38d4be1..dc7aba4a5 100644 --- a/modules/nf-core/dupradar/tests/main.nf.test.snap +++ b/modules/nf-core/dupradar/tests/main.nf.test.snap @@ -23,8 +23,8 @@ "strandedness": "forward" }, [ - "test_dup_intercept_mqc.txt:md5,7b6fb70cbede0d20ffa576a0cc0b249d", - "test_duprateExpDensCurve_mqc.txt:md5,49b44937123c14b622f346cb6156dd4f" + "test_dup_intercept_mqc.txt:md5,11961f0962ffc70e42aa57a12984e0fc", + "test_duprateExpDensCurve_mqc.txt:md5,f7d3432ef52047336b156446281aa6ac" ] ] ], @@ -36,7 +36,7 @@ "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-07-05T13:26:49.615507" + "timestamp": "2024-07-11T11:21:44.31238184" }, "sarscov2 - bam - single_end - stub": { "content": [ @@ -199,7 +199,7 @@ "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-07-05T13:27:00.623697" + "timestamp": "2024-07-11T11:21:56.741878886" }, "sarscov2 - bam - paired_end": { "content": [ @@ -225,8 +225,8 @@ "strandedness": "forward" }, [ - "test_dup_intercept_mqc.txt:md5,d69369924aeb9695b0e97e755e0d9ea3", - "test_duprateExpDensCurve_mqc.txt:md5,f4a50dc09de81219ed4449c11153ba6e" + "test_dup_intercept_mqc.txt:md5,002855b42a71aa0f407ef7fa19df9ac3", + "test_duprateExpDensCurve_mqc.txt:md5,e797d8e256c5b2ab3aad1801360f1a77" ] ] ], @@ -238,7 +238,7 @@ "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-07-05T13:27:11.791811" + "timestamp": "2024-07-11T11:22:10.053957095" }, "sarscov2 - bam - paired_end - stub": { "content": [ @@ -401,6 +401,6 @@ "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-07-05T13:27:22.967266" + "timestamp": "2024-07-11T11:22:22.134058061" } } \ No newline at end of file From 1c7566973d40c6bae6bd572cd840c0317d29cf4f Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Thu, 11 Jul 2024 17:38:04 +0000 Subject: [PATCH 472/634] Fix prefixes for FASTQC --- .../nf-core/fastq_fastqc_umitools_trimgalore/nextflow.config | 1 + workflows/rnaseq/assets/multiqc/multiqc_config.yml | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/nextflow.config b/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/nextflow.config index c3937d2c4..46c7a72b6 100644 --- a/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/nextflow.config +++ b/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/nextflow.config @@ -38,6 +38,7 @@ if (!params.skip_trimming) { // Convert the map back to a list and then to a single string final_args_map.collect { key, value -> "${key} ${value}" }.join(' ').trim() } + ext.prefix = { "${meta.id}_trimmed" } publishDir = [ [ path: { "${params.outdir}/fastqc/trim" }, diff --git a/workflows/rnaseq/assets/multiqc/multiqc_config.yml b/workflows/rnaseq/assets/multiqc/multiqc_config.yml index c47a2e067..6af9a02e4 100644 --- a/workflows/rnaseq/assets/multiqc/multiqc_config.yml +++ b/workflows/rnaseq/assets/multiqc/multiqc_config.yml @@ -50,7 +50,7 @@ module_order: anchor: "fastqc_raw" info: "This section of the report shows FastQC results before adapter trimming." path_filters: - - "*_raw_fastqc.zip" + - "*_raw*fastqc.zip" - cutadapt - fastp - fastqc: @@ -58,7 +58,7 @@ module_order: anchor: "fastqc_trimmed" info: "This section of the report shows FastQC results after adapter trimming." path_filters: - - "*_trimmed_fastqc.zip" + - "*_trimmed*fastqc.zip" # Don't show % Dups in the General Stats table (we have this from Picard) table_columns_visible: From 8759ed7269164119a8d80f9120a56a1127a39ac0 Mon Sep 17 00:00:00 2001 From: maxulysse Date: Fri, 12 Jul 2024 15:50:49 +0200 Subject: [PATCH 473/634] update all modules/subworkflows + remove tags --- modules.json | 12 +++---- .../custom/tx2gene/tests/main.nf.test.snap | 4 +-- modules/nf-core/dupradar/tests/tags.yml | 2 -- modules/nf-core/gunzip/environment.yml | 4 ++- modules/nf-core/gunzip/main.nf | 4 +-- modules/nf-core/multiqc/tests/tags.yml | 2 -- .../picard/markduplicates/environment.yml | 2 +- modules/nf-core/picard/markduplicates/main.nf | 4 +-- .../markduplicates/tests/main.nf.test.snap | 36 +++++++++---------- .../tests/main.nf.test.snap | 32 ++++++++--------- modules/nf-core/untar/environment.yml | 4 +-- modules/nf-core/untar/main.nf | 29 ++++++++++++--- modules/nf-core/untar/tests/main.nf.test.snap | 36 ++++++++++--------- .../tests/tags.yml | 2 -- .../tests/main.nf.test.snap | 26 +++++++------- 15 files changed, 109 insertions(+), 90 deletions(-) delete mode 100644 modules/nf-core/dupradar/tests/tags.yml delete mode 100644 modules/nf-core/multiqc/tests/tags.yml delete mode 100644 subworkflows/nf-core/bam_dedup_stats_samtools_umitools/tests/tags.yml diff --git a/modules.json b/modules.json index abb619933..dd250fcbb 100644 --- a/modules.json +++ b/modules.json @@ -32,7 +32,7 @@ }, "custom/tx2gene": { "branch": "master", - "git_sha": "1ceaa8ba4d0fd886dbca0e545815d905b7407de7", + "git_sha": "4e5f4687318f24ba944a13609d3ea6ebd890737d", "installed_by": ["modules", "quantify_pseudo_alignment"] }, "dupradar": { @@ -62,7 +62,7 @@ }, "gunzip": { "branch": "master", - "git_sha": "a7231cbccb86535529e33859e05d19ac93f3ea04", + "git_sha": "4e5f4687318f24ba944a13609d3ea6ebd890737d", "installed_by": ["modules"] }, "hisat2/align": { @@ -97,7 +97,7 @@ }, "picard/markduplicates": { "branch": "master", - "git_sha": "1943aa60f7490c3d6740e8872e6e69122ccc8087", + "git_sha": "0dee12b56ccecc416d6f7a1ccd85fd571eab3307", "installed_by": ["bam_markduplicates_picard"] }, "preseq/lcextrap": { @@ -226,7 +226,7 @@ }, "summarizedexperiment/summarizedexperiment": { "branch": "master", - "git_sha": "31751460f9ce9552846e13fdeec6953dcb47132d", + "git_sha": "4e5f4687318f24ba944a13609d3ea6ebd890737d", "installed_by": ["modules", "quantify_pseudo_alignment"] }, "trimgalore": { @@ -266,7 +266,7 @@ }, "untar": { "branch": "master", - "git_sha": "5caf7640a9ef1d18d765d55339be751bb0969dfa", + "git_sha": "4e5f4687318f24ba944a13609d3ea6ebd890737d", "installed_by": ["modules"] } } @@ -280,7 +280,7 @@ }, "bam_markduplicates_picard": { "branch": "master", - "git_sha": "0eacd714effe5aac1c1de26593873960b3346cab", + "git_sha": "0dee12b56ccecc416d6f7a1ccd85fd571eab3307", "installed_by": ["subworkflows"] }, "bam_rseqc": { diff --git a/modules/nf-core/custom/tx2gene/tests/main.nf.test.snap b/modules/nf-core/custom/tx2gene/tests/main.nf.test.snap index 7bc258353..c19f10f71 100644 --- a/modules/nf-core/custom/tx2gene/tests/main.nf.test.snap +++ b/modules/nf-core/custom/tx2gene/tests/main.nf.test.snap @@ -61,8 +61,8 @@ ], "meta": { "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nextflow": "24.04.3" }, - "timestamp": "2024-07-05T13:13:24.237507" + "timestamp": "2024-07-10T15:15:34.064489" } } \ No newline at end of file diff --git a/modules/nf-core/dupradar/tests/tags.yml b/modules/nf-core/dupradar/tests/tags.yml deleted file mode 100644 index 255dc4ef3..000000000 --- a/modules/nf-core/dupradar/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -dupradar: - - "modules/nf-core/dupradar/**" diff --git a/modules/nf-core/gunzip/environment.yml b/modules/nf-core/gunzip/environment.yml index 25910b340..dfc02a7b5 100644 --- a/modules/nf-core/gunzip/environment.yml +++ b/modules/nf-core/gunzip/environment.yml @@ -4,4 +4,6 @@ channels: - bioconda - defaults dependencies: - - conda-forge::sed=4.7 + - conda-forge::grep=3.11 + - conda-forge::sed=4.8 + - conda-forge::tar=1.34 diff --git a/modules/nf-core/gunzip/main.nf b/modules/nf-core/gunzip/main.nf index 4ae609fb1..5e67e3b9b 100644 --- a/modules/nf-core/gunzip/main.nf +++ b/modules/nf-core/gunzip/main.nf @@ -4,8 +4,8 @@ process GUNZIP { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/ubuntu:20.04' : - 'nf-core/ubuntu:20.04' }" + 'https://depot.galaxyproject.org/singularity/ubuntu:22.04' : + 'nf-core/ubuntu:22.04' }" input: tuple val(meta), path(archive) diff --git a/modules/nf-core/multiqc/tests/tags.yml b/modules/nf-core/multiqc/tests/tags.yml deleted file mode 100644 index bea6c0d37..000000000 --- a/modules/nf-core/multiqc/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -multiqc: - - modules/nf-core/multiqc/** diff --git a/modules/nf-core/picard/markduplicates/environment.yml b/modules/nf-core/picard/markduplicates/environment.yml index 58b795f54..a27db1186 100644 --- a/modules/nf-core/picard/markduplicates/environment.yml +++ b/modules/nf-core/picard/markduplicates/environment.yml @@ -4,4 +4,4 @@ channels: - bioconda - defaults dependencies: - - bioconda::picard=3.1.1 + - bioconda::picard=3.2.0 diff --git a/modules/nf-core/picard/markduplicates/main.nf b/modules/nf-core/picard/markduplicates/main.nf index ad0b29636..cf18ac35c 100644 --- a/modules/nf-core/picard/markduplicates/main.nf +++ b/modules/nf-core/picard/markduplicates/main.nf @@ -4,8 +4,8 @@ process PICARD_MARKDUPLICATES { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/picard:3.1.1--hdfd78af_0' : - 'biocontainers/picard:3.1.1--hdfd78af_0' }" + 'https://depot.galaxyproject.org/singularity/picard:3.2.0--hdfd78af_0' : + 'biocontainers/picard:3.2.0--hdfd78af_0' }" input: tuple val(meta), path(reads) diff --git a/modules/nf-core/picard/markduplicates/tests/main.nf.test.snap b/modules/nf-core/picard/markduplicates/tests/main.nf.test.snap index eb17111e4..24a57d0e3 100644 --- a/modules/nf-core/picard/markduplicates/tests/main.nf.test.snap +++ b/modules/nf-core/picard/markduplicates/tests/main.nf.test.snap @@ -2,14 +2,14 @@ "sorted_bam_versions": { "content": [ [ - "versions.yml:md5,b699af51b1956f3810f8a7c066e0ab17" + "versions.yml:md5,33dd4b32140e801e0d2e50aeefd0788d" ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.2" }, - "timestamp": "2024-03-20T15:31:50.928021" + "timestamp": "2024-07-10T09:49:13.838237323" }, "unsorted_bam_name": { "content": [ @@ -25,29 +25,29 @@ "content": [ [ "## htsjdk.samtools.metrics.StringHeader", - "# MarkDuplicates --INPUT test.paired_end.sorted.cram --OUTPUT test.marked.cram --METRICS_FILE test.marked.MarkDuplicates.metrics.txt --ASSUME_SORT_ORDER queryname --REFERENCE_SEQUENCE genome.fasta --MAX_SEQUENCES_FOR_DISK_READ_ENDS_MAP 50000 --MAX_FILE_HANDLES_FOR_READ_ENDS_MAP 8000 --SORTING_COLLECTION_SIZE_RATIO 0.25 --TAG_DUPLICATE_SET_MEMBERS false --REMOVE_SEQUENCING_DUPLICATES false --TAGGING_POLICY DontTag --CLEAR_DT true --DUPLEX_UMI false --FLOW_MODE false --FLOW_QUALITY_SUM_STRATEGY false --USE_END_IN_UNPAIRED_READS false --USE_UNPAIRED_CLIPPED_END false --UNPAIRED_END_UNCERTAINTY 0 --FLOW_SKIP_FIRST_N_FLOWS 0 --FLOW_Q_IS_KNOWN_END false --FLOW_EFFECTIVE_QUALITY_THRESHOLD 15 --ADD_PG_TAG_TO_READS true --REMOVE_DUPLICATES false --ASSUME_SORTED false --DUPLICATE_SCORING_STRATEGY SUM_OF_BASE_QUALITIES --PROGRAM_RECORD_ID MarkDuplicates --PROGRAM_GROUP_NAME MarkDuplicates --READ_NAME_REGEX --OPTICAL_DUPLICATE_PIXEL_DISTANCE 100 --MAX_OPTICAL_DUPLICATE_SET_SIZE 300000 --VERBOSITY INFO --QUIET false --VALIDATION_STRINGENCY STRICT --COMPRESSION_LEVEL 5 --MAX_RECORDS_IN_RAM 500000 --CREATE_INDEX false --CREATE_MD5_FILE false --help false --version false --showHidden false --USE_JDK_DEFLATER false --USE_JDK_INFLATER false", + "# MarkDuplicates --INPUT test.paired_end.sorted.cram --OUTPUT test.marked.cram --METRICS_FILE test.marked.MarkDuplicates.metrics.txt --ASSUME_SORT_ORDER queryname --REFERENCE_SEQUENCE genome.fasta --MAX_SEQUENCES_FOR_DISK_READ_ENDS_MAP 50000 --MAX_FILE_HANDLES_FOR_READ_ENDS_MAP 8000 --SORTING_COLLECTION_SIZE_RATIO 0.25 --TAG_DUPLICATE_SET_MEMBERS false --REMOVE_SEQUENCING_DUPLICATES false --TAGGING_POLICY DontTag --CLEAR_DT true --DUPLEX_UMI false --FLOW_MODE false --FLOW_DUP_STRATEGY FLOW_QUALITY_SUM_STRATEGY --USE_END_IN_UNPAIRED_READS false --USE_UNPAIRED_CLIPPED_END false --UNPAIRED_END_UNCERTAINTY 0 --UNPAIRED_START_UNCERTAINTY 0 --FLOW_SKIP_FIRST_N_FLOWS 0 --FLOW_Q_IS_KNOWN_END false --FLOW_EFFECTIVE_QUALITY_THRESHOLD 15 --ADD_PG_TAG_TO_READS true --REMOVE_DUPLICATES false --ASSUME_SORTED false --DUPLICATE_SCORING_STRATEGY SUM_OF_BASE_QUALITIES --PROGRAM_RECORD_ID MarkDuplicates --PROGRAM_GROUP_NAME MarkDuplicates --READ_NAME_REGEX --OPTICAL_DUPLICATE_PIXEL_DISTANCE 100 --MAX_OPTICAL_DUPLICATE_SET_SIZE 300000 --VERBOSITY INFO --QUIET false --VALIDATION_STRINGENCY STRICT --COMPRESSION_LEVEL 5 --MAX_RECORDS_IN_RAM 500000 --CREATE_INDEX false --CREATE_MD5_FILE false --help false --version false --showHidden false --USE_JDK_DEFLATER false --USE_JDK_INFLATER false", "## htsjdk.samtools.metrics.StringHeader" ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.2" }, - "timestamp": "2024-03-20T15:25:47.518152" + "timestamp": "2024-07-10T09:49:32.685023439" }, "sorted_bam_metrics": { "content": [ [ "## htsjdk.samtools.metrics.StringHeader", - "# MarkDuplicates --INPUT test.paired_end.sorted.bam --OUTPUT test.marked.bam --METRICS_FILE test.marked.MarkDuplicates.metrics.txt --ASSUME_SORT_ORDER queryname --MAX_SEQUENCES_FOR_DISK_READ_ENDS_MAP 50000 --MAX_FILE_HANDLES_FOR_READ_ENDS_MAP 8000 --SORTING_COLLECTION_SIZE_RATIO 0.25 --TAG_DUPLICATE_SET_MEMBERS false --REMOVE_SEQUENCING_DUPLICATES false --TAGGING_POLICY DontTag --CLEAR_DT true --DUPLEX_UMI false --FLOW_MODE false --FLOW_QUALITY_SUM_STRATEGY false --USE_END_IN_UNPAIRED_READS false --USE_UNPAIRED_CLIPPED_END false --UNPAIRED_END_UNCERTAINTY 0 --FLOW_SKIP_FIRST_N_FLOWS 0 --FLOW_Q_IS_KNOWN_END false --FLOW_EFFECTIVE_QUALITY_THRESHOLD 15 --ADD_PG_TAG_TO_READS true --REMOVE_DUPLICATES false --ASSUME_SORTED false --DUPLICATE_SCORING_STRATEGY SUM_OF_BASE_QUALITIES --PROGRAM_RECORD_ID MarkDuplicates --PROGRAM_GROUP_NAME MarkDuplicates --READ_NAME_REGEX --OPTICAL_DUPLICATE_PIXEL_DISTANCE 100 --MAX_OPTICAL_DUPLICATE_SET_SIZE 300000 --VERBOSITY INFO --QUIET false --VALIDATION_STRINGENCY STRICT --COMPRESSION_LEVEL 5 --MAX_RECORDS_IN_RAM 500000 --CREATE_INDEX false --CREATE_MD5_FILE false --help false --version false --showHidden false --USE_JDK_DEFLATER false --USE_JDK_INFLATER false", + "# MarkDuplicates --INPUT test.paired_end.sorted.bam --OUTPUT test.marked.bam --METRICS_FILE test.marked.MarkDuplicates.metrics.txt --ASSUME_SORT_ORDER queryname --MAX_SEQUENCES_FOR_DISK_READ_ENDS_MAP 50000 --MAX_FILE_HANDLES_FOR_READ_ENDS_MAP 8000 --SORTING_COLLECTION_SIZE_RATIO 0.25 --TAG_DUPLICATE_SET_MEMBERS false --REMOVE_SEQUENCING_DUPLICATES false --TAGGING_POLICY DontTag --CLEAR_DT true --DUPLEX_UMI false --FLOW_MODE false --FLOW_DUP_STRATEGY FLOW_QUALITY_SUM_STRATEGY --USE_END_IN_UNPAIRED_READS false --USE_UNPAIRED_CLIPPED_END false --UNPAIRED_END_UNCERTAINTY 0 --UNPAIRED_START_UNCERTAINTY 0 --FLOW_SKIP_FIRST_N_FLOWS 0 --FLOW_Q_IS_KNOWN_END false --FLOW_EFFECTIVE_QUALITY_THRESHOLD 15 --ADD_PG_TAG_TO_READS true --REMOVE_DUPLICATES false --ASSUME_SORTED false --DUPLICATE_SCORING_STRATEGY SUM_OF_BASE_QUALITIES --PROGRAM_RECORD_ID MarkDuplicates --PROGRAM_GROUP_NAME MarkDuplicates --READ_NAME_REGEX --OPTICAL_DUPLICATE_PIXEL_DISTANCE 100 --MAX_OPTICAL_DUPLICATE_SET_SIZE 300000 --VERBOSITY INFO --QUIET false --VALIDATION_STRINGENCY STRICT --COMPRESSION_LEVEL 5 --MAX_RECORDS_IN_RAM 500000 --CREATE_INDEX false --CREATE_MD5_FILE false --help false --version false --showHidden false --USE_JDK_DEFLATER false --USE_JDK_INFLATER false", "## htsjdk.samtools.metrics.StringHeader" ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.2" }, - "timestamp": "2024-03-21T11:39:10.318331" + "timestamp": "2024-07-10T09:49:13.788936246" }, "cram_name": { "content": [ @@ -62,40 +62,40 @@ "cram_versions": { "content": [ [ - "versions.yml:md5,b699af51b1956f3810f8a7c066e0ab17" + "versions.yml:md5,33dd4b32140e801e0d2e50aeefd0788d" ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.2" }, - "timestamp": "2024-01-19T10:27:03.26989" + "timestamp": "2024-07-10T09:49:32.731312566" }, "unsorted_bam_versions": { "content": [ [ - "versions.yml:md5,b699af51b1956f3810f8a7c066e0ab17" + "versions.yml:md5,33dd4b32140e801e0d2e50aeefd0788d" ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.2" }, - "timestamp": "2024-03-20T15:31:24.040403" + "timestamp": "2024-07-10T09:48:57.466503381" }, "unsorted_bam_metrics": { "content": [ [ "## htsjdk.samtools.metrics.StringHeader", - "# MarkDuplicates --INPUT test.paired_end.bam --OUTPUT test.marked.bam --METRICS_FILE test.marked.MarkDuplicates.metrics.txt --ASSUME_SORT_ORDER queryname --MAX_SEQUENCES_FOR_DISK_READ_ENDS_MAP 50000 --MAX_FILE_HANDLES_FOR_READ_ENDS_MAP 8000 --SORTING_COLLECTION_SIZE_RATIO 0.25 --TAG_DUPLICATE_SET_MEMBERS false --REMOVE_SEQUENCING_DUPLICATES false --TAGGING_POLICY DontTag --CLEAR_DT true --DUPLEX_UMI false --FLOW_MODE false --FLOW_QUALITY_SUM_STRATEGY false --USE_END_IN_UNPAIRED_READS false --USE_UNPAIRED_CLIPPED_END false --UNPAIRED_END_UNCERTAINTY 0 --FLOW_SKIP_FIRST_N_FLOWS 0 --FLOW_Q_IS_KNOWN_END false --FLOW_EFFECTIVE_QUALITY_THRESHOLD 15 --ADD_PG_TAG_TO_READS true --REMOVE_DUPLICATES false --ASSUME_SORTED false --DUPLICATE_SCORING_STRATEGY SUM_OF_BASE_QUALITIES --PROGRAM_RECORD_ID MarkDuplicates --PROGRAM_GROUP_NAME MarkDuplicates --READ_NAME_REGEX --OPTICAL_DUPLICATE_PIXEL_DISTANCE 100 --MAX_OPTICAL_DUPLICATE_SET_SIZE 300000 --VERBOSITY INFO --QUIET false --VALIDATION_STRINGENCY STRICT --COMPRESSION_LEVEL 5 --MAX_RECORDS_IN_RAM 500000 --CREATE_INDEX false --CREATE_MD5_FILE false --help false --version false --showHidden false --USE_JDK_DEFLATER false --USE_JDK_INFLATER false", + "# MarkDuplicates --INPUT test.paired_end.bam --OUTPUT test.marked.bam --METRICS_FILE test.marked.MarkDuplicates.metrics.txt --ASSUME_SORT_ORDER queryname --MAX_SEQUENCES_FOR_DISK_READ_ENDS_MAP 50000 --MAX_FILE_HANDLES_FOR_READ_ENDS_MAP 8000 --SORTING_COLLECTION_SIZE_RATIO 0.25 --TAG_DUPLICATE_SET_MEMBERS false --REMOVE_SEQUENCING_DUPLICATES false --TAGGING_POLICY DontTag --CLEAR_DT true --DUPLEX_UMI false --FLOW_MODE false --FLOW_DUP_STRATEGY FLOW_QUALITY_SUM_STRATEGY --USE_END_IN_UNPAIRED_READS false --USE_UNPAIRED_CLIPPED_END false --UNPAIRED_END_UNCERTAINTY 0 --UNPAIRED_START_UNCERTAINTY 0 --FLOW_SKIP_FIRST_N_FLOWS 0 --FLOW_Q_IS_KNOWN_END false --FLOW_EFFECTIVE_QUALITY_THRESHOLD 15 --ADD_PG_TAG_TO_READS true --REMOVE_DUPLICATES false --ASSUME_SORTED false --DUPLICATE_SCORING_STRATEGY SUM_OF_BASE_QUALITIES --PROGRAM_RECORD_ID MarkDuplicates --PROGRAM_GROUP_NAME MarkDuplicates --READ_NAME_REGEX --OPTICAL_DUPLICATE_PIXEL_DISTANCE 100 --MAX_OPTICAL_DUPLICATE_SET_SIZE 300000 --VERBOSITY INFO --QUIET false --VALIDATION_STRINGENCY STRICT --COMPRESSION_LEVEL 5 --MAX_RECORDS_IN_RAM 500000 --CREATE_INDEX false --CREATE_MD5_FILE false --help false --version false --showHidden false --USE_JDK_DEFLATER false --USE_JDK_INFLATER false", "## htsjdk.samtools.metrics.StringHeader" ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.2" }, - "timestamp": "2024-03-21T10:51:12.831787" + "timestamp": "2024-07-10T09:48:57.387579606" }, "sorted_bam_name": { "content": [ diff --git a/modules/nf-core/summarizedexperiment/summarizedexperiment/tests/main.nf.test.snap b/modules/nf-core/summarizedexperiment/summarizedexperiment/tests/main.nf.test.snap index 6989f937e..1460532c7 100644 --- a/modules/nf-core/summarizedexperiment/summarizedexperiment/tests/main.nf.test.snap +++ b/modules/nf-core/summarizedexperiment/summarizedexperiment/tests/main.nf.test.snap @@ -12,9 +12,9 @@ ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.3" }, - "timestamp": "2024-02-09T13:57:39.545403663" + "timestamp": "2024-07-11T16:41:31.796715" }, "gene_log_single_matrix_stub": { "content": [ @@ -29,9 +29,9 @@ ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.3" }, - "timestamp": "2024-02-09T13:58:23.258210775" + "timestamp": "2024-07-11T16:42:47.12955" }, "versions_single_matrix": { "content": [ @@ -58,9 +58,9 @@ ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.3" }, - "timestamp": "2024-02-09T13:57:52.234643863" + "timestamp": "2024-07-11T16:41:54.028064" }, "gene_log_multi_matrix_rowdata": { "content": "7c35131fdd46dcdba6c71f7f11d5b2c7", @@ -78,9 +78,9 @@ ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.3" }, - "timestamp": "2024-03-08T14:46:04.546156" + "timestamp": "2024-07-11T16:41:54.080728" }, "versions_multi_matrix_stub": { "content": [ @@ -90,9 +90,9 @@ ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.3" }, - "timestamp": "2024-03-08T14:46:21.128541" + "timestamp": "2024-07-11T16:42:21.425746" }, "versions_multi_matrix_rowdata_coldata_stub": { "content": [ @@ -102,9 +102,9 @@ ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.3" }, - "timestamp": "2024-03-08T14:45:43.440258" + "timestamp": "2024-07-11T16:41:31.837174" }, "gene_log_multi_matrix": { "content": "7c35131fdd46dcdba6c71f7f11d5b2c7", @@ -127,9 +127,9 @@ ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.3" }, - "timestamp": "2024-02-09T13:58:07.904228634" + "timestamp": "2024-07-11T16:42:21.370562" }, "gene_log_single_matrix": { "content": "7c35131fdd46dcdba6c71f7f11d5b2c7", @@ -147,9 +147,9 @@ ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.3" }, - "timestamp": "2024-03-08T14:46:37.670798" + "timestamp": "2024-07-11T16:42:47.173221" }, "versions_multi_matrix_rowdata": { "content": [ diff --git a/modules/nf-core/untar/environment.yml b/modules/nf-core/untar/environment.yml index 0c9cbb101..4f498244a 100644 --- a/modules/nf-core/untar/environment.yml +++ b/modules/nf-core/untar/environment.yml @@ -1,11 +1,9 @@ name: untar - channels: - conda-forge - bioconda - defaults - dependencies: - conda-forge::grep=3.11 - - conda-forge::sed=4.7 + - conda-forge::sed=4.8 - conda-forge::tar=1.34 diff --git a/modules/nf-core/untar/main.nf b/modules/nf-core/untar/main.nf index e87262245..9bd8f5546 100644 --- a/modules/nf-core/untar/main.nf +++ b/modules/nf-core/untar/main.nf @@ -4,8 +4,8 @@ process UNTAR { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/ubuntu:24.04' : - 'nf-core/ubuntu:24.04' }" + 'https://depot.galaxyproject.org/singularity/ubuntu:22.04' : + 'nf-core/ubuntu:22.04' }" input: tuple val(meta), path(archive) @@ -52,8 +52,29 @@ process UNTAR { stub: prefix = task.ext.prefix ?: ( meta.id ? "${meta.id}" : archive.toString().replaceFirst(/\.[^\.]+(.gz)?$/, "")) """ - mkdir $prefix - touch ${prefix}/file.txt + mkdir ${prefix} + ## Dry-run untaring the archive to get the files and place all in prefix + if [[ \$(tar -taf ${archive} | grep -o -P "^.*?\\/" | uniq | wc -l) -eq 1 ]]; then + for i in `tar -tf ${archive}`; + do + if [[ \$(echo "\${i}" | grep -E "/\$") == "" ]]; + then + touch \${i} + else + mkdir -p \${i} + fi + done + else + for i in `tar -tf ${archive}`; + do + if [[ \$(echo "\${i}" | grep -E "/\$") == "" ]]; + then + touch ${prefix}/\${i} + else + mkdir -p ${prefix}/\${i} + fi + done + fi cat <<-END_VERSIONS > versions.yml "${task.process}": diff --git a/modules/nf-core/untar/tests/main.nf.test.snap b/modules/nf-core/untar/tests/main.nf.test.snap index d03a7d3c9..ceb91b792 100644 --- a/modules/nf-core/untar/tests/main.nf.test.snap +++ b/modules/nf-core/untar/tests/main.nf.test.snap @@ -13,7 +13,7 @@ ] ], "1": [ - "versions.yml:md5,0cd92d20f9dfdad1f4fac382631cef03" + "versions.yml:md5,6063247258c56fd271d076bb04dd7536" ], "untar": [ [ @@ -26,7 +26,7 @@ ] ], "versions": [ - "versions.yml:md5,0cd92d20f9dfdad1f4fac382631cef03" + "versions.yml:md5,6063247258c56fd271d076bb04dd7536" ] } ], @@ -34,7 +34,7 @@ "nf-test": "0.8.4", "nextflow": "24.04.3" }, - "timestamp": "2024-07-11T10:40:48.001369" + "timestamp": "2024-07-10T12:04:28.231047" }, "test_untar_onlyfiles - stub": { "content": [ @@ -45,12 +45,12 @@ ], [ - "file.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + "hello.txt:md5,d41d8cd98f00b204e9800998ecf8427e" ] ] ], "1": [ - "versions.yml:md5,0cd92d20f9dfdad1f4fac382631cef03" + "versions.yml:md5,6063247258c56fd271d076bb04dd7536" ], "untar": [ [ @@ -58,12 +58,12 @@ ], [ - "file.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + "hello.txt:md5,d41d8cd98f00b204e9800998ecf8427e" ] ] ], "versions": [ - "versions.yml:md5,0cd92d20f9dfdad1f4fac382631cef03" + "versions.yml:md5,6063247258c56fd271d076bb04dd7536" ] } ], @@ -71,7 +71,7 @@ "nf-test": "0.8.4", "nextflow": "24.04.3" }, - "timestamp": "2024-07-11T10:41:14.953989" + "timestamp": "2024-07-10T12:04:45.773103" }, "test_untar - stub": { "content": [ @@ -82,12 +82,14 @@ ], [ - "file.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + "hash.k2d:md5,d41d8cd98f00b204e9800998ecf8427e", + "opts.k2d:md5,d41d8cd98f00b204e9800998ecf8427e", + "taxo.k2d:md5,d41d8cd98f00b204e9800998ecf8427e" ] ] ], "1": [ - "versions.yml:md5,0cd92d20f9dfdad1f4fac382631cef03" + "versions.yml:md5,6063247258c56fd271d076bb04dd7536" ], "untar": [ [ @@ -95,12 +97,14 @@ ], [ - "file.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + "hash.k2d:md5,d41d8cd98f00b204e9800998ecf8427e", + "opts.k2d:md5,d41d8cd98f00b204e9800998ecf8427e", + "taxo.k2d:md5,d41d8cd98f00b204e9800998ecf8427e" ] ] ], "versions": [ - "versions.yml:md5,0cd92d20f9dfdad1f4fac382631cef03" + "versions.yml:md5,6063247258c56fd271d076bb04dd7536" ] } ], @@ -108,7 +112,7 @@ "nf-test": "0.8.4", "nextflow": "24.04.3" }, - "timestamp": "2024-07-11T10:41:01.619275" + "timestamp": "2024-07-10T12:04:36.777441" }, "test_untar": { "content": [ @@ -126,7 +130,7 @@ ] ], "1": [ - "versions.yml:md5,0cd92d20f9dfdad1f4fac382631cef03" + "versions.yml:md5,6063247258c56fd271d076bb04dd7536" ], "untar": [ [ @@ -141,7 +145,7 @@ ] ], "versions": [ - "versions.yml:md5,0cd92d20f9dfdad1f4fac382631cef03" + "versions.yml:md5,6063247258c56fd271d076bb04dd7536" ] } ], @@ -149,6 +153,6 @@ "nf-test": "0.8.4", "nextflow": "24.04.3" }, - "timestamp": "2024-07-11T10:40:32.530882" + "timestamp": "2024-07-10T12:04:19.377674" } } \ No newline at end of file diff --git a/subworkflows/nf-core/bam_dedup_stats_samtools_umitools/tests/tags.yml b/subworkflows/nf-core/bam_dedup_stats_samtools_umitools/tests/tags.yml deleted file mode 100644 index bfd5e023e..000000000 --- a/subworkflows/nf-core/bam_dedup_stats_samtools_umitools/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -subworkflows/bam_dedup_stats_samtools_umitools: - - subworkflows/nf-core/bam_dedup_stats_samtools_umitools/** diff --git a/subworkflows/nf-core/bam_markduplicates_picard/tests/main.nf.test.snap b/subworkflows/nf-core/bam_markduplicates_picard/tests/main.nf.test.snap index e2e4a947c..8ff332c8b 100644 --- a/subworkflows/nf-core/bam_markduplicates_picard/tests/main.nf.test.snap +++ b/subworkflows/nf-core/bam_markduplicates_picard/tests/main.nf.test.snap @@ -2,15 +2,15 @@ "homo_sapiens - cram": { "content": [ "test.cram", - "test.cram.crai:md5,78d47ba01ac4e05f3ae1e353902a989e", + "test.cram.crai:md5,cb5268070f99cdd0d86f43613e5fc7db", "test.flagstat:md5,93b0ef463df947ede1f42ff60396c34d", "test.idxstats:md5,e179601fa7b8ebce81ac3765206f6c15", "test.stats:md5,372a7d9d9081aa009b21343a913beb14", [ "versions.yml:md5,0d170c963555870ac9a0d438bf6c2f93", "versions.yml:md5,3729819c49e6d8eed9ada247e5d77de1", - "versions.yml:md5,966dcea920866a87b55e665563864fc9", "versions.yml:md5,a62ca6eb27e59dd6f03a93fa8656e656", + "versions.yml:md5,adb00ecc904d3a27f552c360ac35a8a9", "versions.yml:md5,fcf804c605f455127f2449403d70390c" ] ], @@ -18,7 +18,7 @@ "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-07-03T11:55:09.400487" + "timestamp": "2024-07-10T09:50:25.483402093" }, "sarscov2 - bam - stub": { "content": [ @@ -101,8 +101,8 @@ "9": [ "versions.yml:md5,0d170c963555870ac9a0d438bf6c2f93", "versions.yml:md5,3729819c49e6d8eed9ada247e5d77de1", - "versions.yml:md5,966dcea920866a87b55e665563864fc9", "versions.yml:md5,a62ca6eb27e59dd6f03a93fa8656e656", + "versions.yml:md5,adb00ecc904d3a27f552c360ac35a8a9", "versions.yml:md5,fcf804c605f455127f2449403d70390c" ], "bai": [ @@ -183,8 +183,8 @@ "versions": [ "versions.yml:md5,0d170c963555870ac9a0d438bf6c2f93", "versions.yml:md5,3729819c49e6d8eed9ada247e5d77de1", - "versions.yml:md5,966dcea920866a87b55e665563864fc9", "versions.yml:md5,a62ca6eb27e59dd6f03a93fa8656e656", + "versions.yml:md5,adb00ecc904d3a27f552c360ac35a8a9", "versions.yml:md5,fcf804c605f455127f2449403d70390c" ] } @@ -193,7 +193,7 @@ "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-07-03T11:55:22.514635" + "timestamp": "2024-07-10T09:50:45.745539171" }, "homo_sapiens - cram - stub": { "content": [ @@ -268,8 +268,8 @@ "9": [ "versions.yml:md5,0d170c963555870ac9a0d438bf6c2f93", "versions.yml:md5,3729819c49e6d8eed9ada247e5d77de1", - "versions.yml:md5,966dcea920866a87b55e665563864fc9", "versions.yml:md5,a62ca6eb27e59dd6f03a93fa8656e656", + "versions.yml:md5,adb00ecc904d3a27f552c360ac35a8a9", "versions.yml:md5,fcf804c605f455127f2449403d70390c" ], "bai": [ @@ -342,8 +342,8 @@ "versions": [ "versions.yml:md5,0d170c963555870ac9a0d438bf6c2f93", "versions.yml:md5,3729819c49e6d8eed9ada247e5d77de1", - "versions.yml:md5,966dcea920866a87b55e665563864fc9", "versions.yml:md5,a62ca6eb27e59dd6f03a93fa8656e656", + "versions.yml:md5,adb00ecc904d3a27f552c360ac35a8a9", "versions.yml:md5,fcf804c605f455127f2449403d70390c" ] } @@ -352,20 +352,20 @@ "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-07-03T11:55:37.258086" + "timestamp": "2024-07-10T09:51:17.13987629" }, "sarscov2 - bam": { "content": [ - "test.bam:md5,3091fe6ba1b7530f382fe40b9fd8f45b", - "test.bam.bai:md5,4d3ae8d013444b55e17aa0149a2ab404", + "test.bam:md5,d1a53820e4a6e42ca8aceab51d74cf57", + "test.bam.bai:md5,be9485a644813773fb893a0a6b9b977c", "test.flagstat:md5,4f7ffd1e6a5e85524d443209ac97d783", "test.idxstats:md5,df60a8c8d6621100d05178c93fb053a2", "test.stats:md5,cca83e4fc9406fc3875b5e60055d6574", [ "versions.yml:md5,0d170c963555870ac9a0d438bf6c2f93", "versions.yml:md5,3729819c49e6d8eed9ada247e5d77de1", - "versions.yml:md5,966dcea920866a87b55e665563864fc9", "versions.yml:md5,a62ca6eb27e59dd6f03a93fa8656e656", + "versions.yml:md5,adb00ecc904d3a27f552c360ac35a8a9", "versions.yml:md5,fcf804c605f455127f2449403d70390c" ] ], @@ -373,6 +373,6 @@ "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-07-03T11:54:53.226702" + "timestamp": "2024-07-10T09:50:01.597322113" } } \ No newline at end of file From cb31b886e153b81215d71a529fa8fb56a01e8dc5 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Fri, 12 Jul 2024 14:02:22 +0000 Subject: [PATCH 474/634] Apply a blanket renaming in multiqc to catch inconsistent naming paired and unpaired --- modules.json | 4 ++-- modules/nf-core/multiqc/main.nf | 3 +++ modules/nf-core/multiqc/meta.yml | 7 +++++++ modules/nf-core/multiqc/tests/main.nf.test | 3 +++ workflows/rnaseq/main.nf | 12 +++++++++++- 5 files changed, 26 insertions(+), 3 deletions(-) diff --git a/modules.json b/modules.json index 320ddb009..34c17a2eb 100644 --- a/modules.json +++ b/modules.json @@ -91,8 +91,8 @@ "installed_by": ["modules", "quantify_pseudo_alignment"] }, "multiqc": { - "branch": "master", - "git_sha": "45d482f013f7da8a3e050e855f04ada418d91c3c", + "branch": "multiqc_rename_input", + "git_sha": "6123a870eda29fb2c8d6034cf396e576d41e2b70", "installed_by": ["modules"] }, "picard/markduplicates": { diff --git a/modules/nf-core/multiqc/main.nf b/modules/nf-core/multiqc/main.nf index ac624e869..80a5efaa6 100644 --- a/modules/nf-core/multiqc/main.nf +++ b/modules/nf-core/multiqc/main.nf @@ -11,6 +11,7 @@ process MULTIQC { path(multiqc_config) path(extra_multiqc_config) path(multiqc_logo) + path(replace_names) output: path "*multiqc_report.html", emit: report @@ -26,6 +27,7 @@ process MULTIQC { 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 replace = replace_names ? "--replace-names ${replace_names}" : '' """ multiqc \\ --force \\ @@ -33,6 +35,7 @@ process MULTIQC { $config \\ $extra_config \\ $logo \\ + $replace \\ . cat <<-END_VERSIONS > versions.yml diff --git a/modules/nf-core/multiqc/meta.yml b/modules/nf-core/multiqc/meta.yml index 45a9bc35e..6de07593c 100644 --- a/modules/nf-core/multiqc/meta.yml +++ b/modules/nf-core/multiqc/meta.yml @@ -29,6 +29,13 @@ input: 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}" output: - report: type: file diff --git a/modules/nf-core/multiqc/tests/main.nf.test b/modules/nf-core/multiqc/tests/main.nf.test index f1c4242ef..c54f7df3f 100644 --- a/modules/nf-core/multiqc/tests/main.nf.test +++ b/modules/nf-core/multiqc/tests/main.nf.test @@ -17,6 +17,7 @@ nextflow_process { input[1] = [] input[2] = [] input[3] = [] + input[4] = [] """ } } @@ -41,6 +42,7 @@ 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] = [] """ } } @@ -66,6 +68,7 @@ nextflow_process { input[1] = [] input[2] = [] input[3] = [] + input[4] = [] """ } } diff --git a/workflows/rnaseq/main.nf b/workflows/rnaseq/main.nf index 4eefce0ed..b0cc2ba1e 100755 --- a/workflows/rnaseq/main.nf +++ b/workflows/rnaseq/main.nf @@ -114,6 +114,9 @@ workflow RNASEQ { // Channel .fromSamplesheet("input") + .set{ ch_samples } + + ch_samples .map { meta, fastq_1, fastq_2 -> if (!fastq_2) { @@ -857,6 +860,7 @@ workflow RNASEQ { // MODULE: MultiQC // ch_multiqc_report = Channel.empty() + if (!params.skip_multiqc) { ch_multiqc_config = Channel.fromPath("$projectDir/workflows/rnaseq/assets/multiqc/multiqc_config.yml", checkIfExists: true) ch_multiqc_custom_config = params.multiqc_config ? Channel.fromPath(params.multiqc_config) : Channel.empty() @@ -865,12 +869,18 @@ workflow RNASEQ { 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_files = ch_multiqc_files.mix(ch_collated_versions) + ch_name_replacements = ch_samples + .map{ + it[1].name.split('\\.')[0] + "\t" + it[0].id + } + .collectFile(name: 'name_replacement.txt', newLine: true) MULTIQC ( ch_multiqc_files.collect(), ch_multiqc_config.toList(), ch_multiqc_custom_config.toList(), - ch_multiqc_logo.toList() + ch_multiqc_logo.toList(), + ch_name_replacements ) ch_multiqc_report = MULTIQC.out.report } From 6dcf3fd0b09e8431414bdeae3512e58e158db342 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Fri, 12 Jul 2024 14:09:35 +0000 Subject: [PATCH 475/634] Switch renaming to exact matches --- workflows/rnaseq/assets/multiqc/multiqc_config.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/workflows/rnaseq/assets/multiqc/multiqc_config.yml b/workflows/rnaseq/assets/multiqc/multiqc_config.yml index 6af9a02e4..2bf39b16c 100644 --- a/workflows/rnaseq/assets/multiqc/multiqc_config.yml +++ b/workflows/rnaseq/assets/multiqc/multiqc_config.yml @@ -10,6 +10,7 @@ report_section_order: export_plots: true disable_version_detection: true +sample_names_replace_exact: true # Run only these modules run_modules: From 5c1db07f117a1d55dd09e417ee47676267da1b13 Mon Sep 17 00:00:00 2001 From: maxulysse Date: Fri, 12 Jul 2024 16:35:29 +0200 Subject: [PATCH 476/634] update snapshot --- tests/default.nf.test.snap | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/tests/default.nf.test.snap b/tests/default.nf.test.snap index 9c423280b..4f7ed2f21 100644 --- a/tests/default.nf.test.snap +++ b/tests/default.nf.test.snap @@ -1,17 +1,17 @@ { "Params: default - stub": { "content": [ - "{BBMAP_BBSPLIT={bbmap=39.01}, CAT_FASTQ={cat=8.3}, CUSTOM_CATADDITIONALFASTA={python=null}, CUSTOM_GETCHROMSIZES={getchromsizes=1.2}, FASTQC={fastqc=0.12.1}, GTF2BED={perl=5.26.2}, GTF_FILTER={python=3.9.5}, GUNZIP_ADDITIONAL_FASTA={gunzip=1.1}, GUNZIP_GTF={gunzip=1.1}, STAR_GENOMEGENERATE={star=2.7.10a, samtools=1.18, gawk=5.1.0}, TRIMGALORE={trimgalore=0.6.7, cutadapt=3.4}, UNTAR_SALMON_INDEX={untar=1.3}, Workflow={nf-core/rnaseq=v3.15.0dev}}" + "{BBMAP_BBSPLIT={bbmap=39.01}, CAT_FASTQ={cat=8.3}, CUSTOM_CATADDITIONALFASTA={python=null}, CUSTOM_GETCHROMSIZES={getchromsizes=1.2}, FASTQC={fastqc=0.12.1}, GTF2BED={perl=5.26.2}, GTF_FILTER={python=3.9.5}, GUNZIP_ADDITIONAL_FASTA={gunzip=1.1}, GUNZIP_GTF={gunzip=1.1}, STAR_GENOMEGENERATE={star=2.7.10a, samtools=1.18, gawk=5.1.0}, TRIMGALORE={trimgalore=0.6.7, cutadapt=3.4}, UNTAR_SALMON_INDEX={untar=1.34}, Workflow={nf-core/rnaseq=v3.15.0dev}}" ], "meta": { "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nextflow": "24.04.3" }, - "timestamp": "2024-07-04T16:40:43.259347" + "timestamp": "2024-07-12T16:33:33.623985" }, "Params: default": { "content": [ - "{BBMAP_BBSPLIT={bbmap=39.01}, BEDTOOLS_GENOMECOV_FW={bedtools=2.31.1}, CAT_FASTQ={cat=8.3}, CUSTOM_CATADDITIONALFASTA={python=3.9.5}, CUSTOM_GETCHROMSIZES={getchromsizes=1.2}, CUSTOM_TX2GENE={python=3.9.5}, DESEQ2_QC_PSEUDO={r-base=4.0.3, bioconductor-deseq2=1.28.0}, DESEQ2_QC_STAR_SALMON={r-base=4.0.3, bioconductor-deseq2=1.28.0}, DUPRADAR={bioconductor-dupradar=1.32.0}, FASTQC={fastqc=0.12.1}, FQ_SUBSAMPLE={fq=0.9.1 (2022-02-22)}, GTF2BED={perl=5.26.2}, GTF_FILTER={python=3.9.5}, GUNZIP_ADDITIONAL_FASTA={gunzip=1.1}, GUNZIP_GTF={gunzip=1.1}, MULTIQC_CUSTOM_BIOTYPE={python=3.9.5}, PICARD_MARKDUPLICATES={picard=3.1.1}, QUALIMAP_RNASEQ={qualimap=2.3}, RSEQC_BAMSTAT={rseqc=5.0.2}, RSEQC_INFEREXPERIMENT={rseqc=5.0.2}, RSEQC_INNERDISTANCE={rseqc=5.0.2}, RSEQC_JUNCTIONANNOTATION={rseqc=5.0.2}, RSEQC_JUNCTIONSATURATION={rseqc=5.0.2}, RSEQC_READDISTRIBUTION={rseqc=5.0.2}, RSEQC_READDUPLICATION={rseqc=5.0.2}, SALMON_QUANT={salmon=1.10.1}, SAMTOOLS_FLAGSTAT={samtools=1.2}, SAMTOOLS_IDXSTATS={samtools=1.2}, SAMTOOLS_INDEX={samtools=1.2}, SAMTOOLS_SORT={samtools=1.2}, SAMTOOLS_STATS={samtools=1.2}, SE_GENE={bioconductor-summarizedexperiment=1.32.0}, STAR_ALIGN={star=2.7.10a, samtools=1.18, gawk=5.1.0}, STAR_GENOMEGENERATE={star=2.7.10a, samtools=1.18, gawk=5.1.0}, STRINGTIE_STRINGTIE={stringtie=2.2.1}, SUBREAD_FEATURECOUNTS={subread=2.0.1}, TRIMGALORE={trimgalore=0.6.7, cutadapt=3.4}, TXIMETA_TXIMPORT={bioconductor-tximeta=1.20.1}, UCSC_BEDCLIP={ucsc=377}, UCSC_BEDGRAPHTOBIGWIG={ucsc=445}, UNTAR_SALMON_INDEX={untar=1.3}, Workflow={nf-core/rnaseq=v3.15.0dev}}", + "{BBMAP_BBSPLIT={bbmap=39.01}, BEDTOOLS_GENOMECOV_FW={bedtools=2.31.1}, CAT_FASTQ={cat=8.3}, CUSTOM_CATADDITIONALFASTA={python=3.9.5}, CUSTOM_GETCHROMSIZES={getchromsizes=1.2}, CUSTOM_TX2GENE={python=3.9.5}, DESEQ2_QC_PSEUDO={r-base=4.0.3, bioconductor-deseq2=1.28.0}, DESEQ2_QC_STAR_SALMON={r-base=4.0.3, bioconductor-deseq2=1.28.0}, DUPRADAR={bioconductor-dupradar=1.32.0}, FASTQC={fastqc=0.12.1}, FQ_SUBSAMPLE={fq=0.9.1 (2022-02-22)}, GTF2BED={perl=5.26.2}, GTF_FILTER={python=3.9.5}, GUNZIP_ADDITIONAL_FASTA={gunzip=1.1}, GUNZIP_GTF={gunzip=1.1}, MULTIQC_CUSTOM_BIOTYPE={python=3.9.5}, PICARD_MARKDUPLICATES={picard=3.2.0-1-g3948afb6b}, QUALIMAP_RNASEQ={qualimap=2.3}, RSEQC_BAMSTAT={rseqc=5.0.2}, RSEQC_INFEREXPERIMENT={rseqc=5.0.2}, RSEQC_INNERDISTANCE={rseqc=5.0.2}, RSEQC_JUNCTIONANNOTATION={rseqc=5.0.2}, RSEQC_JUNCTIONSATURATION={rseqc=5.0.2}, RSEQC_READDISTRIBUTION={rseqc=5.0.2}, RSEQC_READDUPLICATION={rseqc=5.0.2}, SALMON_QUANT={salmon=1.10.1}, SAMTOOLS_FLAGSTAT={samtools=1.2}, SAMTOOLS_IDXSTATS={samtools=1.2}, SAMTOOLS_INDEX={samtools=1.2}, SAMTOOLS_SORT={samtools=1.2}, SAMTOOLS_STATS={samtools=1.2}, SE_GENE={bioconductor-summarizedexperiment=1.32.0}, STAR_ALIGN={star=2.7.10a, samtools=1.18, gawk=5.1.0}, STAR_GENOMEGENERATE={star=2.7.10a, samtools=1.18, gawk=5.1.0}, STRINGTIE_STRINGTIE={stringtie=2.2.1}, SUBREAD_FEATURECOUNTS={subread=2.0.1}, TRIMGALORE={trimgalore=0.6.7, cutadapt=3.4}, TXIMETA_TXIMPORT={bioconductor-tximeta=1.20.1}, UCSC_BEDCLIP={ucsc=377}, UCSC_BEDGRAPHTOBIGWIG={ucsc=445}, UNTAR_SALMON_INDEX={untar=1.34}, Workflow={nf-core/rnaseq=v3.15.0dev}}", "genome_gfp.fasta:md5,e23e302af63736a199985a169fdac055", "genome_gfp.gtf:md5,c98b12c302f15731bfc36bcf297cfe28", "salmon.merged.transcript_counts.tsv:md5,ff0f5be09ca7a322672c0074ba35da17", @@ -28,8 +28,8 @@ ], "meta": { "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nextflow": "24.04.3" }, - "timestamp": "2024-07-04T16:22:13.448933" + "timestamp": "2024-07-12T16:32:22.039132" } } \ No newline at end of file From e12ea636c6f90ea8d17b2d0d03df751245449050 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Fri, 12 Jul 2024 17:01:40 +0000 Subject: [PATCH 477/634] Bump multiqc module --- modules.json | 4 ++-- modules/nf-core/multiqc/main.nf | 3 +++ modules/nf-core/multiqc/meta.yml | 6 ++++++ modules/nf-core/multiqc/tests/main.nf.test | 3 +++ 4 files changed, 14 insertions(+), 2 deletions(-) diff --git a/modules.json b/modules.json index 34c17a2eb..b0125259a 100644 --- a/modules.json +++ b/modules.json @@ -91,8 +91,8 @@ "installed_by": ["modules", "quantify_pseudo_alignment"] }, "multiqc": { - "branch": "multiqc_rename_input", - "git_sha": "6123a870eda29fb2c8d6034cf396e576d41e2b70", + "branch": "master", + "git_sha": "b80f5fd12ff7c43938f424dd76392a2704fa2396", "installed_by": ["modules"] }, "picard/markduplicates": { diff --git a/modules/nf-core/multiqc/main.nf b/modules/nf-core/multiqc/main.nf index 80a5efaa6..459dfea5b 100644 --- a/modules/nf-core/multiqc/main.nf +++ b/modules/nf-core/multiqc/main.nf @@ -12,6 +12,7 @@ process MULTIQC { path(extra_multiqc_config) path(multiqc_logo) path(replace_names) + path(sample_names) output: path "*multiqc_report.html", emit: report @@ -28,6 +29,7 @@ process MULTIQC { def extra_config = extra_multiqc_config ? "--config $extra_multiqc_config" : '' 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 \\ @@ -36,6 +38,7 @@ process MULTIQC { $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 6de07593c..382c08cbc 100644 --- a/modules/nf-core/multiqc/meta.yml +++ b/modules/nf-core/multiqc/meta.yml @@ -36,6 +36,12 @@ input: 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 diff --git a/modules/nf-core/multiqc/tests/main.nf.test b/modules/nf-core/multiqc/tests/main.nf.test index c54f7df3f..6aa27f4c9 100644 --- a/modules/nf-core/multiqc/tests/main.nf.test +++ b/modules/nf-core/multiqc/tests/main.nf.test @@ -18,6 +18,7 @@ nextflow_process { input[2] = [] input[3] = [] input[4] = [] + input[5] = [] """ } } @@ -43,6 +44,7 @@ nextflow_process { input[2] = [] input[3] = [] input[4] = [] + input[5] = [] """ } } @@ -69,6 +71,7 @@ nextflow_process { input[2] = [] input[3] = [] input[4] = [] + input[5] = [] """ } } From 47484f617e33dee70a9e730a1836edb44afecd53 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Fri, 12 Jul 2024 17:02:46 +0000 Subject: [PATCH 478/634] Separate rename patterns for forward and reverse --- workflows/rnaseq/main.nf | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/workflows/rnaseq/main.nf b/workflows/rnaseq/main.nf index b0cc2ba1e..667df95c6 100755 --- a/workflows/rnaseq/main.nf +++ b/workflows/rnaseq/main.nf @@ -869,10 +869,23 @@ workflow RNASEQ { 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_files = ch_multiqc_files.mix(ch_collated_versions) + + // Derive a set of rename patterns such that any sample names derived + // from input fastqs in MultiQC are replaced with specified sample name + // strings + ch_name_replacements = ch_samples .map{ - it[1].name.split('\\.')[0] + "\t" + it[0].id + def read1 = it[1].name.split('\\.')[0] + "\t" + it[0].id + '_1' + def read2 = '' + if (it[2] ){ + read2 = it[2].name.split('\\.')[0] + "\t" + it[0].id + '_2' + } + return [[read1, read2]] } + .transpose() + .filter { it[0] != ''} + .map{it[0]} .collectFile(name: 'name_replacement.txt', newLine: true) MULTIQC ( @@ -880,7 +893,8 @@ workflow RNASEQ { ch_multiqc_config.toList(), ch_multiqc_custom_config.toList(), ch_multiqc_logo.toList(), - ch_name_replacements + ch_name_replacements, + [] ) ch_multiqc_report = MULTIQC.out.report } From 6fccd133155431b5c4d79b21f20219e5b1bb3036 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Fri, 12 Jul 2024 17:13:07 +0000 Subject: [PATCH 479/634] update CHANGELOG --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 750a30fbb..560d60f00 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -99,6 +99,7 @@ Thank you to everyone else that has contributed by reporting bugs, enhancements - [PR #1330](https://github.com/nf-core/rnaseq/pull/1330) - Update all nf-core/modules and subworkflows - [PR #1331](https://github.com/nf-core/rnaseq/pull/1331) - Adding stubs for local modules - [PR #1334](https://github.com/nf-core/rnaseq/pull/1334) - Update all nf-core/modules and subworkflows with stubs +- [PR #1341](https://github.com/nf-core/rnaseq/pull/1341) - Add wholesale rename in the MultiQC report ### Parameters From c465f90b36a0d2ecc622ea65e6ad12312bd0d2e3 Mon Sep 17 00:00:00 2001 From: Adam Talbot <12817534+adamrtalbot@users.noreply.github.com> Date: Fri, 12 Jul 2024 18:16:10 +0100 Subject: [PATCH 480/634] Remove Azure specific guidance No longer necessary. --- docs/usage.md | 8 -------- 1 file changed, 8 deletions(-) diff --git a/docs/usage.md b/docs/usage.md index d9138d439..ff2571dd6 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -410,14 +410,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_E16d_v5` 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. From 17444ffa293ddfd997c021c091fa66d0d50012b0 Mon Sep 17 00:00:00 2001 From: Adam Talbot <12817534+adamrtalbot@users.noreply.github.com> Date: Fri, 12 Jul 2024 18:46:29 +0100 Subject: [PATCH 481/634] Update CHANGELOG.md --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 750a30fbb..687a6ac6e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -99,6 +99,7 @@ Thank you to everyone else that has contributed by reporting bugs, enhancements - [PR #1330](https://github.com/nf-core/rnaseq/pull/1330) - Update all nf-core/modules and subworkflows - [PR #1331](https://github.com/nf-core/rnaseq/pull/1331) - Adding stubs for local modules - [PR #1334](https://github.com/nf-core/rnaseq/pull/1334) - Update all nf-core/modules and subworkflows with stubs +- [PR #1340](https://github.com/nf-core/rnaseq/pull/1340) - Remove out-of-date Azure specific guidance ### Parameters From 39071b9032a298eeb593fa545750171b5bc35201 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Mon, 15 Jul 2024 08:41:10 +0000 Subject: [PATCH 482/634] simplify logic to generate renaming table --- workflows/rnaseq/main.nf | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/workflows/rnaseq/main.nf b/workflows/rnaseq/main.nf index 667df95c6..4161ac6a1 100755 --- a/workflows/rnaseq/main.nf +++ b/workflows/rnaseq/main.nf @@ -875,17 +875,16 @@ workflow RNASEQ { // strings ch_name_replacements = ch_samples - .map{ - def read1 = it[1].name.split('\\.')[0] + "\t" + it[0].id + '_1' - def read2 = '' - if (it[2] ){ - read2 = it[2].name.split('\\.')[0] + "\t" + it[0].id + '_2' + .map{ meta, reads1, reads2 -> + def name1 = file(reads1).simpleName + "\t" + meta.id + '_1' + if (reads2 ){ + def name2 = file(reads2).simpleName + "\t" + meta.id + '_2' + return [ name1, name2 ] + } else{ + return name1 } - return [[read1, read2]] } - .transpose() - .filter { it[0] != ''} - .map{it[0]} + .flatten() .collectFile(name: 'name_replacement.txt', newLine: true) MULTIQC ( From c016418870b960aa626ca59ed01d2680016411bd Mon Sep 17 00:00:00 2001 From: Matthias Zepper Date: Mon, 15 Jul 2024 11:40:43 +0200 Subject: [PATCH 483/634] Update CHANGELOG --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index dfeded678..519cea90a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,7 @@ Special thanks to the following for their contributions to the release: - [Edmund Miller](https://github.com/edmundmiller) - [Jonathan Manning](https://github.com/pinin4fjords) - [Laramie Lindsey](https://github.com/laramiellindsey) +- [Luke Zappia](https://github.com/lazappi) - [Matthias Zepper](https://github.com/MatthiasZepper) - [Maxime Garcia](https://github.com/maxulysse) - [Rob Syme](https://github.com/robsyme) @@ -85,6 +86,7 @@ Thank you to everyone else that has contributed by reporting bugs, enhancements - [PR #1309](https://github.com/nf-core/rnaseq/pull/1309) - Document FASTP sampling - [PR #1310](https://github.com/nf-core/rnaseq/pull/1310) - Reinstate pseudoalignment subworkflow config - [PR #1312](https://github.com/nf-core/rnaseq/pull/1312) - Fix issues with unzipping of GTF/ GFF files without absolute paths +- [PR #1314](https://github.com/nf-core/rnaseq/pull/1314) - Add reference genome recommendations to usage docs - [PR #1317](https://github.com/nf-core/rnaseq/pull/1317) - Strip problematic ifEmpty() - [PR #1319](https://github.com/nf-core/rnaseq/pull/1319) - Reinstate oncomplete error messages - [PR #1321](https://github.com/nf-core/rnaseq/pull/1321) - Remove push and release triggers from CI From a09053085d0650a3c35760bd7700759b2aedba8f Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Mon, 15 Jul 2024 14:32:17 +0000 Subject: [PATCH 484/634] Make name replacement specific to samples without tech reps --- workflows/rnaseq/main.nf | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/workflows/rnaseq/main.nf b/workflows/rnaseq/main.nf index 4161ac6a1..2b1cb004c 100755 --- a/workflows/rnaseq/main.nf +++ b/workflows/rnaseq/main.nf @@ -114,9 +114,6 @@ workflow RNASEQ { // Channel .fromSamplesheet("input") - .set{ ch_samples } - - ch_samples .map { meta, fastq_1, fastq_2 -> if (!fastq_2) { @@ -870,15 +867,15 @@ workflow RNASEQ { 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) - // Derive a set of rename patterns such that any sample names derived - // from input fastqs in MultiQC are replaced with specified sample name - // strings + // Generate replacements based on sample names to ensure MultiQC + // renames sequence files correctly if they didn't go through + // CAT_FASTQ. - ch_name_replacements = ch_samples - .map{ meta, reads1, reads2 -> - def name1 = file(reads1).simpleName + "\t" + meta.id + '_1' - if (reads2 ){ - def name2 = file(reads2).simpleName + "\t" + meta.id + '_2' + ch_name_replacements = ch_fastq.single + .map{ meta, reads -> + def name1 = file(reads[0]).simpleName + "\t" + meta.id + '_1' + if (reads[1] ){ + def name2 = file(reads[1]).simpleName + "\t" + meta.id + '_2' return [ name1, name2 ] } else{ return name1 From 182f5232f240b2882d84ed010eea66651a045f6c Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Mon, 15 Jul 2024 16:01:08 +0100 Subject: [PATCH 485/634] Clarify comment --- workflows/rnaseq/main.nf | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/workflows/rnaseq/main.nf b/workflows/rnaseq/main.nf index 2b1cb004c..589e779ce 100755 --- a/workflows/rnaseq/main.nf +++ b/workflows/rnaseq/main.nf @@ -866,10 +866,9 @@ workflow RNASEQ { 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_files = ch_multiqc_files.mix(ch_collated_versions) - - // Generate replacements based on sample names to ensure MultiQC - // renames sequence files correctly if they didn't go through - // CAT_FASTQ. + + // Provide MultiQC with rename patterns to ensure it uses sample names + // for single-techrep samples not processed by CAT_FASTQ. ch_name_replacements = ch_fastq.single .map{ meta, reads -> From d7ed3530729d7851cbd2ba1e3bebb0abbd0a4c85 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Mon, 15 Jul 2024 16:03:19 +0100 Subject: [PATCH 486/634] Update main.nf --- workflows/rnaseq/main.nf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/workflows/rnaseq/main.nf b/workflows/rnaseq/main.nf index 589e779ce..30eac1986 100755 --- a/workflows/rnaseq/main.nf +++ b/workflows/rnaseq/main.nf @@ -866,7 +866,7 @@ workflow RNASEQ { 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_files = ch_multiqc_files.mix(ch_collated_versions) - + // Provide MultiQC with rename patterns to ensure it uses sample names // for single-techrep samples not processed by CAT_FASTQ. From f35f51b686f01d9dcd61517d15dd65dd0673d867 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Mon, 15 Jul 2024 16:10:17 +0100 Subject: [PATCH 487/634] Update CHANGELOG.md --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e244a8f41..0a114c42a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -100,7 +100,7 @@ Thank you to everyone else that has contributed by reporting bugs, enhancements - [PR #1331](https://github.com/nf-core/rnaseq/pull/1331) - Adding stubs for local modules - [PR #1334](https://github.com/nf-core/rnaseq/pull/1334) - Update all nf-core/modules and subworkflows with stubs - [PR #1340](https://github.com/nf-core/rnaseq/pull/1340) - Remove out-of-date Azure specific guidance -- [PR #1341](https://github.com/nf-core/rnaseq/pull/1341) - Add wholesale rename in the MultiQC report +- [PR #1341](https://github.com/nf-core/rnaseq/pull/1341) - Add rename in the MultiQC report for samples without techreps ### Parameters From 731538691d49544b92c78bdc6d9547026eba2419 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Tue, 16 Jul 2024 10:58:40 +0000 Subject: [PATCH 488/634] Factor out preprocessing logic to nf-core subworkflow --- main.nf | 1 + modules.json | 15 +- subworkflows/local/prepare_genome/main.nf | 7 +- .../utils_nfcore_rnaseq_pipeline/main.nf | 58 +--- .../main.nf | 320 ++++++++++++++++++ .../meta.yml | 132 ++++++++ .../tests/main.nf.test | 135 ++++++++ .../tests/main.nf.test.snap | 112 ++++++ .../tests/nextflow.config | 27 ++ .../tests/tags.yml | 2 + workflows/rnaseq/main.nf | 225 ++---------- 11 files changed, 779 insertions(+), 255 deletions(-) create mode 100644 subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/main.nf create mode 100644 subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/meta.yml create mode 100644 subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/tests/main.nf.test create mode 100644 subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/tests/main.nf.test.snap create mode 100644 subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/tests/nextflow.config create mode 100644 subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/tests/tags.yml diff --git a/main.nf b/main.nf index d3de0ae0b..152c320e4 100755 --- a/main.nf +++ b/main.nf @@ -117,6 +117,7 @@ workflow NFCORE_RNASEQ { PREPARE_GENOME.out.salmon_index, PREPARE_GENOME.out.kallisto_index, PREPARE_GENOME.out.bbsplit_index, + PREPARE_GENOME.out.ribo_db, PREPARE_GENOME.out.sortmerna_index, PREPARE_GENOME.out.splicesites, !params.remove_ribo_rna && params.remove_ribo_rna diff --git a/modules.json b/modules.json index b0125259a..346597902 100644 --- a/modules.json +++ b/modules.json @@ -8,7 +8,7 @@ "bbmap/bbsplit": { "branch": "master", "git_sha": "2c6b1144ed58b6184ad58fc4e6b6a90219b4bf4f", - "installed_by": ["modules"] + "installed_by": ["fastq_qc_trim_filter_setstrandedness", "modules"] }, "bedtools/genomecov": { "branch": "master", @@ -18,7 +18,7 @@ "cat/fastq": { "branch": "master", "git_sha": "4fc983ad0b30e6e32696fa7d980c76c7bfe1c03e", - "installed_by": ["modules"] + "installed_by": ["fastq_qc_trim_filter_setstrandedness", "modules"] }, "custom/catadditionalfasta": { "branch": "master", @@ -202,7 +202,7 @@ "sortmerna": { "branch": "master", "git_sha": "df05c8db5195867c0bc7b92c1788115b66f0d17d", - "installed_by": ["modules"] + "installed_by": ["fastq_qc_trim_filter_setstrandedness", "modules"] }, "star/align": { "branch": "master", @@ -315,17 +315,22 @@ "fastq_fastqc_umitools_fastp": { "branch": "master", "git_sha": "db35d26edeafacf9906a517827df621a29adc13d", - "installed_by": ["subworkflows"] + "installed_by": ["fastq_qc_trim_filter_setstrandedness", "subworkflows"] }, "fastq_fastqc_umitools_trimgalore": { "branch": "master", "git_sha": "cb6defa0834eda9d6d3f967e981c819fc3e257bf", + "installed_by": ["fastq_qc_trim_filter_setstrandedness", "subworkflows"] + }, + "fastq_qc_trim_filter_setstrandedness": { + "branch": "master", + "git_sha": "81ed776ec05bf9ae89da3442c29b5c5c7afa807b", "installed_by": ["subworkflows"] }, "fastq_subsample_fq_salmon": { "branch": "master", "git_sha": "727232afb8294b53dd9d05bfe469b70cce1675bb", - "installed_by": ["subworkflows"] + "installed_by": ["fastq_qc_trim_filter_setstrandedness", "subworkflows"] }, "quantify_pseudo_alignment": { "branch": "master", diff --git a/subworkflows/local/prepare_genome/main.nf b/subworkflows/local/prepare_genome/main.nf index 1e4ee46fd..050395442 100644 --- a/subworkflows/local/prepare_genome/main.nf +++ b/subworkflows/local/prepare_genome/main.nf @@ -228,7 +228,11 @@ workflow PREPARE_GENOME { // Uncompress sortmerna index or generate from scratch if required // ch_sortmerna_index = Channel.empty() + ch_ribo_db = Channel.empty() + if ('sortmerna' in prepare_tool_indices) { + ch_ribo_db = file(sortmerna_fasta_list) + if (sortmerna_index) { if (sortmerna_index.endsWith('.tar.gz')) { ch_sortmerna_index = UNTAR_SORTMERNA_INDEX ( [ [:], sortmerna_index ] ).untar.map { it[1] } @@ -237,7 +241,7 @@ workflow PREPARE_GENOME { ch_sortmerna_index = Channel.value(file(sortmerna_index)) } } else { - ch_sortmerna_fastas = Channel.from(file(sortmerna_fasta_list).readLines()) + ch_sortmerna_fastas = Channel.from(ch_ribo_db.readLines()) .map { row -> file(row, checkIfExists: true) } .collect() .map { [ 'rrna_refs', it ] } @@ -370,6 +374,7 @@ workflow PREPARE_GENOME { chrom_sizes = ch_chrom_sizes // channel: path(genome.sizes) splicesites = ch_splicesites // channel: path(genome.splicesites.txt) bbsplit_index = ch_bbsplit_index // channel: path(bbsplit/index/) + ribo_db = ch_ribo_db // channel: path(sortmerna_fasta_list) sortmerna_index = ch_sortmerna_index // channel: path(sortmerna/index/) star_index = ch_star_index // channel: path(star/index/) rsem_index = ch_rsem_index // channel: path(rsem/index/) diff --git a/subworkflows/local/utils_nfcore_rnaseq_pipeline/main.nf b/subworkflows/local/utils_nfcore_rnaseq_pipeline/main.nf index fe080ce13..8022a5c1b 100644 --- a/subworkflows/local/utils_nfcore_rnaseq_pipeline/main.nf +++ b/subworkflows/local/utils_nfcore_rnaseq_pipeline/main.nf @@ -20,6 +20,7 @@ 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 { logColours } from '../../nf-core/utils_nfcore_pipeline' +include { calculateStrandedness } from '../../nf-core/fastq_qc_trim_filter_setstrandedness' /* ======================================================================================== @@ -548,63 +549,6 @@ def biotypeInGtf(gtf_file, biotype) { } } -// -// Function to determine library type by comparing type counts. Consistent -// between Salmon and RSeQC -// -def calculateStrandedness(forwardFragments, reverseFragments, unstrandedFragments, stranded_threshold=0.8, unstranded_threshold=0.1) { - def totalFragments = forwardFragments + reverseFragments + unstrandedFragments - def totalStrandedFragments = forwardFragments + reverseFragments - - def library_strandedness = 'undetermined' - if (totalStrandedFragments > 0) { - def forwardProportion = forwardFragments / (totalStrandedFragments as double) - def reverseProportion = reverseFragments / (totalStrandedFragments as double) - def proportionDifference = Math.abs(forwardProportion - reverseProportion) - - if (forwardProportion >= stranded_threshold) { - strandedness = 'forward' - } else if (reverseProportion >= stranded_threshold) { - strandedness = 'reverse' - } else if (proportionDifference <= unstranded_threshold) { - strandedness = 'unstranded' - } - } - - return [ - inferred_strandedness: strandedness, - forwardFragments: (forwardFragments / (totalFragments as double)) * 100, - reverseFragments: (reverseFragments / (totalFragments as double)) * 100, - unstrandedFragments: (unstrandedFragments / (totalFragments as double)) * 100 - ] -} - -// -// Function that parses Salmon quant 'lib_format_counts.json' output file to get inferred strandedness -// -def getSalmonInferredStrandedness(json_file, stranded_threshold = 0.8, unstranded_threshold = 0.1) { - // Parse the JSON content of the file - def libCounts = new JsonSlurper().parseText(json_file.text) - - // Calculate the counts for forward and reverse strand fragments - def forwardKeys = ['SF', 'ISF', 'MSF', 'OSF'] - def reverseKeys = ['SR', 'ISR', 'MSR', 'OSR'] - - // Calculate unstranded fragments (IU and U) - // NOTE: this is here for completeness, but actually all fragments have a - // strandedness (even if the overall library does not), so all these values - // will be '0'. See - // https://groups.google.com/g/sailfish-users/c/yxzBDv6NB6I - def unstrandedKeys = ['IU', 'U', 'MU'] - - def forwardFragments = forwardKeys.collect { libCounts[it] ?: 0 }.sum() - def reverseFragments = reverseKeys.collect { libCounts[it] ?: 0 }.sum() - def unstrandedFragments = unstrandedKeys.collect { libCounts[it] ?: 0 }.sum() - - // Use shared calculation function to determine strandedness - return calculateStrandedness(forwardFragments, reverseFragments, unstrandedFragments, stranded_threshold, unstranded_threshold) -} - // // Function that parses RSeQC infer_experiment output file to get inferred strandedness // diff --git a/subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/main.nf b/subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/main.nf new file mode 100644 index 000000000..a17fc0b2b --- /dev/null +++ b/subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/main.nf @@ -0,0 +1,320 @@ +import groovy.json.JsonSlurper + +include { BBMAP_BBSPLIT } from '../../../modules/nf-core/bbmap/bbsplit' +include { CAT_FASTQ } from '../../../modules/nf-core/cat/fastq/main' +include { SORTMERNA } from '../../../modules/nf-core/sortmerna/main' +include { SORTMERNA as SORTMERNA_INDEX } from '../../../modules/nf-core/sortmerna/main' + +include { FASTQ_SUBSAMPLE_FQ_SALMON } from '../fastq_subsample_fq_salmon' +include { FASTQ_FASTQC_UMITOOLS_TRIMGALORE } from '../fastq_fastqc_umitools_trimgalore' +include { FASTQ_FASTQC_UMITOOLS_FASTP } from '../fastq_fastqc_umitools_fastp' + +def pass_trimmed_reads = [:] + +// +// Function to determine library type by comparing type counts. +// + +// +def calculateStrandedness(forwardFragments, reverseFragments, unstrandedFragments, stranded_threshold=0.8, unstranded_threshold=0.1) { + def totalFragments = forwardFragments + reverseFragments + unstrandedFragments + def totalStrandedFragments = forwardFragments + reverseFragments + + def library_strandedness = 'undetermined' + if (totalStrandedFragments > 0) { + def forwardProportion = forwardFragments / (totalStrandedFragments as double) + def reverseProportion = reverseFragments / (totalStrandedFragments as double) + def proportionDifference = Math.abs(forwardProportion - reverseProportion) + + if (forwardProportion >= stranded_threshold) { + strandedness = 'forward' + } else if (reverseProportion >= stranded_threshold) { + strandedness = 'reverse' + } else if (proportionDifference <= unstranded_threshold) { + strandedness = 'unstranded' + } + } + + return [ + inferred_strandedness: strandedness, + forwardFragments: (forwardFragments / (totalFragments as double)) * 100, + reverseFragments: (reverseFragments / (totalFragments as double)) * 100, + unstrandedFragments: (unstrandedFragments / (totalFragments as double)) * 100 + ] +} + +// +// Function that parses Salmon quant 'lib_format_counts.json' output file to get inferred strandedness +// +def getSalmonInferredStrandedness(json_file, stranded_threshold = 0.8, unstranded_threshold = 0.1) { + // Parse the JSON content of the file + def libCounts = new JsonSlurper().parseText(json_file.text) + + // Calculate the counts for forward and reverse strand fragments + def forwardKeys = ['SF', 'ISF', 'MSF', 'OSF'] + def reverseKeys = ['SR', 'ISR', 'MSR', 'OSR'] + + // Calculate unstranded fragments (IU and U) + // NOTE: this is here for completeness, but actually all fragments have a + // strandedness (even if the overall library does not), so all these values + // will be '0'. See + // https://groups.google.com/g/sailfish-users/c/yxzBDv6NB6I + def unstrandedKeys = ['IU', 'U', 'MU'] + + def forwardFragments = forwardKeys.collect { libCounts[it] ?: 0 }.sum() + def reverseFragments = reverseKeys.collect { libCounts[it] ?: 0 }.sum() + def unstrandedFragments = unstrandedKeys.collect { libCounts[it] ?: 0 }.sum() + + // Use shared calculation function to determine strandedness + return calculateStrandedness(forwardFragments, reverseFragments, unstrandedFragments, stranded_threshold, unstranded_threshold) +} + +// +// Create MultiQC tsv custom content from a list of values +// +public static String multiqcTsvFromList(tsv_data, header) { + def tsv_string = "" + if (tsv_data.size() > 0) { + tsv_string += "${header.join('\t')}\n" + tsv_string += tsv_data.join('\n') + } + return tsv_string +} + +workflow FASTQ_QC_TRIM_FILTER_SETSTRANDEDNESS { + + take: + ch_reads // channel: [ val(meta), [ reads ] ] + ch_fasta // channel: /path/to/genome.fasta + ch_transcript_fasta // channel: /path/to/transcript.fasta + ch_gtf // channel: /path/to/genome.gtf + ch_salmon_index // channel: /path/to/salmon/index/ (optional) + ch_sortmerna_index // channel: /path/to/sortmerna/index/ (optional) + ch_bbsplit_index // channel: /path/to/bbsplit/index/ (optional) + ch_ribo_db // channel: /path/to/ Text file containing paths to fasta files (one per line) that will be used to create the database for SortMeRNA. (optional) + skip_bbsplit // boolean: Skip BBSplit for removal of non-reference genome reads. + skip_fastqc // boolean: true/false + skip_trimming // boolean: true/false + skip_umi_extract // boolean: true/false + make_salmon_index // boolean: Whether to create salmon index before running salmon quant + make_sortmerna_index // boolean: Whether to create a sortmerna index before running sortmerna + trimmer // string (enum): 'fastp' or 'trimgalore' + min_trimmed_reads // integer: > 0 + save_trimmed // boolean: true/false + remove_ribo_rna // boolean: true/false: whether to run sortmerna to remove rrnas + with_umi // boolean: true/false: Enable UMI-based read deduplication. + umi_discard_read // integer: 0, 1 or 2 + stranded_threshold // float: The fraction of stranded reads that must be assigned to a strandedness for confident assignment. Must be at least 0.5 + unstranded_threshold // float: The difference in fraction of stranded reads assigned to 'forward' and 'reverse' below which a sample is classified as 'unstranded' + + main: + + ch_versions = Channel.empty() + ch_filtered_reads = Channel.empty() + ch_trim_read_count = Channel.empty() + ch_multiqc_files = Channel.empty() + + ch_reads + .branch { + meta, fastqs -> + single : fastqs.size() == 1 + return [ meta, fastqs.flatten() ] + multiple: fastqs.size() > 1 + return [ meta, fastqs.flatten() ] + } + .set { ch_fastq } + + // + // MODULE: Concatenate FastQ files from same sample if required + // + CAT_FASTQ ( + ch_fastq.multiple + ) + .reads + .mix(ch_fastq.single) + .set { ch_filtered_reads } + + ch_versions = ch_versions.mix(CAT_FASTQ.out.versions.first().ifEmpty(null)) + + // + // SUBWORKFLOW: Read QC, extract UMI and trim adapters with TrimGalore! + // + if (trimmer == 'trimgalore') { + FASTQ_FASTQC_UMITOOLS_TRIMGALORE ( + ch_filtered_reads, + skip_fastqc, + with_umi, + skip_umi_extract, + skip_trimming, + umi_discard_read, + min_trimmed_reads + ) + ch_filtered_reads = FASTQ_FASTQC_UMITOOLS_TRIMGALORE.out.reads + ch_trim_read_count = FASTQ_FASTQC_UMITOOLS_TRIMGALORE.out.trim_read_count + + ch_versions = ch_versions.mix(FASTQ_FASTQC_UMITOOLS_TRIMGALORE.out.versions) + ch_multiqc_files = FASTQ_FASTQC_UMITOOLS_TRIMGALORE.out.fastqc_zip + .mix(FASTQ_FASTQC_UMITOOLS_TRIMGALORE.out.trim_zip) + .mix(FASTQ_FASTQC_UMITOOLS_TRIMGALORE.out.trim_log) + .mix(ch_multiqc_files) + } + + // + // SUBWORKFLOW: Read QC, extract UMI and trim adapters with fastp + // + if (trimmer == 'fastp') { + FASTQ_FASTQC_UMITOOLS_FASTP ( + ch_filtered_reads, + skip_fastqc, + with_umi, + skip_umi_extract, + umi_discard_read, + skip_trimming, + [], + save_trimmed, + save_trimmed, + min_trimmed_reads + ) + ch_filtered_reads = FASTQ_FASTQC_UMITOOLS_FASTP.out.reads + ch_trim_read_count = FASTQ_FASTQC_UMITOOLS_FASTP.out.trim_read_count + + ch_versions = ch_versions.mix(FASTQ_FASTQC_UMITOOLS_FASTP.out.versions) + ch_multiqc_files = FASTQ_FASTQC_UMITOOLS_FASTP.out.fastqc_raw_zip + .mix(FASTQ_FASTQC_UMITOOLS_FASTP.out.fastqc_trim_zip) + .mix(FASTQ_FASTQC_UMITOOLS_FASTP.out.trim_json.map{tuple(it[0], [it[1]])}) + .mix(ch_multiqc_files) + } + + // + // Get list of samples that failed trimming threshold for MultiQC report + // + + ch_trim_read_count + .map { + meta, num_reads -> + pass_trimmed_reads[meta.id] = true + if (num_reads <= min_trimmed_reads.toFloat()) { + pass_trimmed_reads[meta.id] = false + return [ "$meta.id\t$num_reads" ] + } + } + .collect() + .map { + tsv_data -> + def header = ["Sample", "Reads after trimming"] + multiqcTsvFromList(tsv_data, header) + } + .set { ch_fail_trimming_multiqc } + + ch_multiqc_files = ch_multiqc_files + .mix( + ch_fail_trimming_multiqc.collectFile(name: 'fail_trimmed_samples_mqc.tsv') + ) + + // + // MODULE: Remove genome contaminant reads + // + if (!skip_bbsplit) { + BBMAP_BBSPLIT ( + ch_filtered_reads, + ch_bbsplit_index, + [], + [ [], [] ], + false + ) + + BBMAP_BBSPLIT.out.primary_fastq + .set { ch_filtered_reads } + + ch_versions = ch_versions.mix(BBMAP_BBSPLIT.out.versions.first()) + } + + // + // MODULE: Remove ribosomal RNA reads + // + if (remove_ribo_rna) { + ch_sortmerna_fastas = Channel.from(ch_ribo_db.readLines()) + .map { row -> file(row, checkIfExists: true) } + .collect() + .map{ ['rrna_refs', it] } + + if (make_sortmerna_index) { + SORTMERNA_INDEX ( + [[],[]], + ch_sortmerna_fastas, + [[],[]] + ) + ch_sortmerna_index = SORTMERNA_INDEX.out.index.first() + } + + SORTMERNA ( + ch_filtered_reads, + ch_sortmerna_fastas, + ch_sortmerna_index + ) + + SORTMERNA.out.reads + .set { ch_filtered_reads } + + ch_multiqc_files = ch_multiqc_files + .mix(SORTMERNA.out.log) + + ch_versions = ch_versions.mix(SORTMERNA.out.versions.first()) + } + + // Branch FastQ channels if 'auto' specified to infer strandedness + ch_filtered_reads + .branch { + meta, fastq -> + auto_strand : meta.strandedness == 'auto' + return [ meta, fastq ] + known_strand: meta.strandedness != 'auto' + return [ meta, fastq ] + } + .set { ch_strand_fastq } + + // + // SUBWORKFLOW: Sub-sample FastQ files and pseudoalign with Salmon to auto-infer strandedness + // + // Return empty channel if ch_strand_fastq.auto_strand is empty so salmon index isn't created + + ch_fasta + .combine(ch_strand_fastq.auto_strand) + .map { it.first() } + .first() + .set { ch_genome_fasta } + + FASTQ_SUBSAMPLE_FQ_SALMON ( + ch_strand_fastq.auto_strand, + ch_genome_fasta, + ch_transcript_fasta, + ch_gtf, + ch_salmon_index, + make_salmon_index + ) + ch_versions = ch_versions.mix(FASTQ_SUBSAMPLE_FQ_SALMON.out.versions) + + FASTQ_SUBSAMPLE_FQ_SALMON + .out + .lib_format_counts + .join(ch_strand_fastq.auto_strand) + .map { + meta, json, reads -> + def salmon_strand_analysis = getSalmonInferredStrandedness(json, stranded_threshold=stranded_threshold, unstranded_threshold=unstranded_threshold) + strandedness = salmon_strand_analysis.inferred_strandedness + if (strandedness == 'undetermined') { + strandedness = 'unstranded' + } + return [ meta + [ strandedness: strandedness, salmon_strand_analysis: salmon_strand_analysis ], reads ] + } + .mix(ch_strand_fastq.known_strand) + .set { ch_strand_inferred_fastq } + + emit: + + reads = ch_strand_inferred_fastq + trim_read_count = ch_trim_read_count + + multiqc_files = ch_multiqc_files.transpose().map{it[1]} + versions = ch_versions // channel: [ versions.yml ] +} diff --git a/subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/meta.yml b/subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/meta.yml new file mode 100644 index 000000000..cf7cd885f --- /dev/null +++ b/subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/meta.yml @@ -0,0 +1,132 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/subworkflows/yaml-schema.json +name: "fastq_qc_trim_filter_setstrandedness" +description: Basic FASTQ preprocessing for RNA-seq +keywords: + - fastq + - rnaseq + - rrna + - trimming + - subsample + - strandedness +components: + - bbmap/bbsplit + - samtools/sort + - samtools/index + - cat + - cat/fastq + - sortmerna + - fastq_subsample_fq_salmon + - fastq_fastqc_umitools_trimgalore + - fastq_fastqc_umitools_fastp +input: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test' ] + - ch_reads: + type: file + description: | + Channel with input FastQ files of size 1 and 2 for single-end and + paired-end data, respectively. + - ch_fasta: + type: file + description: Channel with genome sequence in fasta format + - ch_transcript_fasta: + type: file + description: Channel with transcriptome sequence in fasta format + - ch_gtf: + type: file + description: Channel with features in GTF format + - ch_salmon_index: + type: file + description: Directory containing Salmon index + - ch_sortmerna_index: + type: file + description: Directory containing sortmerna index + - ch_bbsplit_index: + type: file + description: Path to directory or tar.gz archive for pre-built BBSplit index + - ch_ribo_db: + type: file + description: | + Channel with text file containing paths to fasta files (one per line) + that will be used to create the database for SortMeRNA + - skip_bbsplit: + type: boolean + description: Whether to skip BBSplit for removal of non-reference genome reads + - skip_fastqc: + type: boolean + description: Whether to skip FastQC + - skip_trimming: + type: boolean + description: Whether to skip trimming + - skip_umi_extract: + type: boolean + description: | + Skip the UMI extraction from the read in case the UMIs have been moved + to the headers in advance of the pipeline run + - make_salmon_index: + type: boolean + description: Whether to create salmon index before running salmon quant + - make_sortmerna_index: + type: boolean + description: Whether to create sortmerna index before running sortmerna + - trimmer: + type: string + description: | + Specifies the trimming tool to use - available options are 'trimgalore' + and 'fastp' + - min_trimmed_reads: + type: integer + description: | + Minimum number of trimmed reads below which samples are removed from + further processing + - save_trimmed: + type: boolean + description: Save the trimmed FastQ files in the results directory? + - remove_ribo_rna: + type: boolean + description: Enable the removal of reads derived from ribosomal RNA using SortMeRNA? + - with_umi: + type: boolean + description: Enable UMI-based read deduplication + - umi_discard_read: + type: integer + description: | + After UMI barcode extraction discard either R1 or R2 by setting this + parameter to 1 or 2, respectively + - stranded_threshold: + type: float + min: 0.5 + description: | + The fraction of stranded reads that must be assigned to a strandedness + for confident assignment. Must be at least 0.5. + - unstranded_threshold: + type: float + description: | + The difference in fraction of stranded reads assigned to 'forward' and + 'reverse' below which a sample is classified as 'unstranded'. + +output: + - reads: + type: file + description: Preprocessed fastq reads + pattern: "*.{fq,fastq}{,.gz}" + - multiqc_files: + type: file + description: MultiQC-compatible output files from tools used in prepreocessing + pattern: "*" + - trim_read_count: + type: integer + description: Number of reads remaining after trimming for all input samples + - versions: + type: file + description: | + File containing software versions + Structure: [ path(versions.yml) ] + pattern: "versions.yml" +authors: + - "@pinin4fjords" +maintainers: + - "@pinin4fjords" diff --git a/subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/tests/main.nf.test b/subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/tests/main.nf.test new file mode 100644 index 000000000..b58ff098e --- /dev/null +++ b/subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/tests/main.nf.test @@ -0,0 +1,135 @@ +nextflow_workflow { + + name "Test Subworkflow FASTQ_QC_TRIM_FILTER_SETSTRANDEDNESS" + script "../main.nf" + workflow "FASTQ_QC_TRIM_FILTER_SETSTRANDEDNESS" + config "./nextflow.config" + + tag "subworkflows" + tag "subworkflows_nfcore" + tag "subworkflows/fastq_qc_trim_filter_setstrandedness" + + tag "bbmap/bbsplit" + tag "cat" + tag "cat/fastq" + tag "fastqc" + tag "sortmerna" + tag "subworkflows/fastq_fastqc_umitools_trimgalore" + tag "subworkflows/fastq_fastqc_umitools_fastp" + tag "subworkflows/fastq_subsample_fq_salmon" + + + + test("homo_sapiens paired-end [fastq] fastp") { + + when { + workflow { + """ + ch_reads = Channel.of([ + [ id:'test', single_end:false, strandedness:'auto' ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/fastq/test_rnaseq_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/fastq/test_rnaseq_2.fastq.gz', checkIfExists: true) + ] + ]) + + ch_ribo_db = file('ribo_db.txt') + ch_ribo_db.append('https://raw.githubusercontent.com/biocore/sortmerna/v4.3.4/data/rRNA_databases/rfam-5.8s-database-id98.fasta') + + input[0] = ch_reads + input[1] = Channel.of(file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true)) // ch_fasta + input[2] = Channel.of(file(params.modules_testdata_base_path + "genomics/homo_sapiens/genome/transcriptome.fasta", checkIfExists: true)) // ch_transcript_fasta + input[3] = Channel.of(file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.gtf', checkIfExists: true)) // ch_gtf + input[4] = [] // ch_salmon_index + input[5] = [] // ch_sortmerna_index + input[6] = [] // ch_bbsplit_index + input[7] = ch_ribo_db // ch_ribo_db + input[8] = true // skip_bbsplit + input[9] = false // skip_fastqc + input[10] = false // skip_trimming + input[11] = true // skip_umi_extract + input[12] = true // make_salmon_index + input[13] = true // make_sortmerna_index + input[14] = 'fastp' // trimmer + input[15] = 10 // min_trimmed_reads + input[16] = true // save_trimmed + input[17] = true // remove_ribo_rna + input[18] = false // with_umi + input[19] = 0 // umi_discard_read + """ + } + } + + then { + def pelines1 = path(workflow.out.reads[0][1][0]).linesGzip + def pelines2 = path(workflow.out.reads[0][1][1]).linesGzip + assertAll( + { assert workflow.success}, + { assert snapshot(pelines1).md5().match("fastp_test_pe_reads_1_lines") }, + { assert snapshot(pelines1.size()).match("fastp_test_pe_reads_1_size") }, + { assert snapshot(pelines2).md5().match("fastp_test_pe_reads_2_lines") }, + { assert snapshot(pelines2.size()).match("fastp_test_pe_reads_2_size") }, + { assert snapshot(workflow.out.trim_read_count).match("fastp_read_count") } + // This doesn't work- 'cat' changes between Conda and Docker - + // leaving it here until we find a way to address that + // { assert snapshot(workflow.out.versions).match("fastp_versions") } + ) + } + } + test("homo_sapiens paired-end [fastq] trimgalore") { + + when { + workflow { + """ + ch_reads = Channel.of([ + [ id:'test', single_end:false, strandedness:'auto' ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/fastq/test_rnaseq_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/fastq/test_rnaseq_2.fastq.gz', checkIfExists: true) + ] + ]) + + ch_ribo_db = file('ribo_db.txt') + ch_ribo_db.append('https://raw.githubusercontent.com/biocore/sortmerna/v4.3.4/data/rRNA_databases/rfam-5.8s-database-id98.fasta') + + input[0] = ch_reads + input[1] = Channel.of(file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true)) // ch_fasta + input[2] = Channel.of(file(params.modules_testdata_base_path + "genomics/homo_sapiens/genome/transcriptome.fasta", checkIfExists: true)) // ch_transcript_fasta + input[3] = Channel.of(file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.gtf', checkIfExists: true)) // ch_gtf + input[4] = [] // ch_salmon_index + input[5] = [] // ch_sortmerna_index + input[6] = [] // ch_bbsplit_index + input[7] = ch_ribo_db // ch_ribo_db + input[8] = true // skip_bbsplit + input[9] = false // skip_fastqc + input[10] = false // skip_trimming + input[11] = true // skip_umi_extract + input[12] = true // make_salmon_index + input[13] = true // make_sortmerna_index + input[14] = 'fastp' // trimmer + input[15] = 10 // min_trimmed_reads + input[16] = true // save_trimmed + input[17] = true // remove_ribo_rna + input[18] = false // with_umi + input[19] = 0 // umi_discard_read + """ + } + } + + then { + def pelines1 = path(workflow.out.reads[0][1][0]).linesGzip + def pelines2 = path(workflow.out.reads[0][1][1]).linesGzip + assertAll( + { assert workflow.success}, + { assert snapshot(pelines1).md5().match("trimgalore_test_pe_reads_1_lines") }, + { assert snapshot(pelines1.size()).match("trimgalore_test_pe_reads_1_size") }, + { assert snapshot(pelines2).md5().match("trimgalore_test_pe_reads_2_lines") }, + { assert snapshot(pelines2.size()).match("trimgalore_test_pe_reads_2_size") }, + { assert snapshot(workflow.out.trim_read_count).match("trimgalore_read_count") } + // This doesn't work- 'cat' changes between Conda and Docker - + // leaving it here until we find a way to address that + //{ assert snapshot(workflow.out.versions).match("trimgalore_versions") } + ) + } + } +} diff --git a/subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/tests/main.nf.test.snap b/subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/tests/main.nf.test.snap new file mode 100644 index 000000000..21bdb2492 --- /dev/null +++ b/subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/tests/main.nf.test.snap @@ -0,0 +1,112 @@ +{ + "fastp_read_count": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false, + "strandedness": "auto" + }, + 3022 + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-24T16:19:13.057802" + }, + "trimgalore_test_pe_reads_2_lines": { + "content": "eccf3e9e74589ff01c77fce7f4548e41", + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-24T17:44:07.667653" + }, + "fastp_test_pe_reads_1_size": { + "content": [ + 4508 + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-24T17:43:46.173892" + }, + "trimgalore_test_pe_reads_1_size": { + "content": [ + 4508 + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-24T17:44:07.642318" + }, + "trimgalore_test_pe_reads_1_lines": { + "content": "3868fc1caf09367141d2bbf47e158823", + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-24T17:44:07.641186" + }, + "fastp_test_pe_reads_2_lines": { + "content": "eccf3e9e74589ff01c77fce7f4548e41", + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-24T17:43:46.235022" + }, + "fastp_test_pe_reads_2_size": { + "content": [ + 4508 + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-24T17:43:46.242006" + }, + "trimgalore_test_pe_reads_2_size": { + "content": [ + 4508 + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-24T17:44:07.668644" + }, + "fastp_test_pe_reads_1_lines": { + "content": "3868fc1caf09367141d2bbf47e158823", + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-24T17:43:46.161535" + }, + "trimgalore_read_count": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false, + "strandedness": "auto" + }, + 3022 + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-24T17:44:07.669435" + } +} \ No newline at end of file diff --git a/subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/tests/nextflow.config b/subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/tests/nextflow.config new file mode 100644 index 000000000..9e33e4b33 --- /dev/null +++ b/subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/tests/nextflow.config @@ -0,0 +1,27 @@ +// +// Read subsampling and strand inferring options +// + +process { + withName: 'FQ_SUBSAMPLE' { + ext.args = '--record-count 1000000 --seed 1' + ext.prefix = { "${meta.id}.subsampled" } + publishDir = [ + enabled: false + ] + } + + withName: '.*:FASTQ_SUBSAMPLE_FQ_SALMON:SALMON_QUANT' { + ext.args = '--skipQuant --minAssignedFrags 1' + publishDir = [ + enabled: false + ] + } + withName: 'SORTMERNA' { + ext.args = '--index 0' + } + withName: 'SORTMERNA_INDEX' { + ext.args = '--index 1' + } +} + diff --git a/subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/tests/tags.yml b/subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/tests/tags.yml new file mode 100644 index 000000000..cafd4a33d --- /dev/null +++ b/subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/tests/tags.yml @@ -0,0 +1,2 @@ +subworkflows/preprocess_rnaseq: + - subworkflows/nf-core/preprocess_rnaseq/** diff --git a/workflows/rnaseq/main.nf b/workflows/rnaseq/main.nf index 30eac1986..f4075b1c3 100755 --- a/workflows/rnaseq/main.nf +++ b/workflows/rnaseq/main.nf @@ -19,7 +19,6 @@ include { ALIGN_STAR } from '../../subworkflows/local/align_star' include { QUANTIFY_RSEM } from '../../subworkflows/local/quantify_rsem' include { checkSamplesAfterGrouping } from '../../subworkflows/local/utils_nfcore_rnaseq_pipeline' include { multiqcTsvFromList } from '../../subworkflows/local/utils_nfcore_rnaseq_pipeline' -include { getSalmonInferredStrandedness } from '../../subworkflows/local/utils_nfcore_rnaseq_pipeline' include { getStarPercentMapped } from '../../subworkflows/local/utils_nfcore_rnaseq_pipeline' include { biotypeInGtf } from '../../subworkflows/local/utils_nfcore_rnaseq_pipeline' include { getInferexperimentStrandedness } from '../../subworkflows/local/utils_nfcore_rnaseq_pipeline' @@ -68,6 +67,7 @@ include { BEDGRAPH_BEDCLIP_BEDGRAPHTOBIGWIG as BEDGRAPH_BEDCLIP_BEDGRAPHTOBIGWIG include { BEDGRAPH_BEDCLIP_BEDGRAPHTOBIGWIG as BEDGRAPH_BEDCLIP_BEDGRAPHTOBIGWIG_REVERSE } from '../../subworkflows/nf-core/bedgraph_bedclip_bedgraphtobigwig' include { QUANTIFY_PSEUDO_ALIGNMENT as QUANTIFY_STAR_SALMON } from '../../subworkflows/nf-core/quantify_pseudo_alignment' include { QUANTIFY_PSEUDO_ALIGNMENT } from '../../subworkflows/nf-core/quantify_pseudo_alignment' +include { FASTQ_QC_TRIM_FILTER_SETSTRANDEDNESS } from '../../subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness' /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -98,6 +98,7 @@ workflow RNASEQ { ch_salmon_index // channel: path(salmon/index/) ch_kallisto_index // channel: [ meta, path(kallisto/index/) ] ch_bbsplit_index // channel: path(bbsplit/index/) + ch_ribo_db // channel: path(sortmerna_fasta_list) ch_sortmerna_index // channel: path(sortmerna/index/) ch_splicesites // channel: path(genome.splicesites.txt) make_sortmerna_index // boolean: Whether to create an index before running sortmerna @@ -126,203 +127,40 @@ workflow RNASEQ { .map { checkSamplesAfterGrouping(it) } - .branch { - meta, fastqs -> - single : fastqs.size() == 1 - return [ meta, fastqs.flatten() ] - multiple: fastqs.size() > 1 - return [ meta, fastqs.flatten() ] - } - .set { ch_fastq } - - // - // MODULE: Concatenate FastQ files from same sample if required - // - CAT_FASTQ ( - ch_fastq.multiple - ) - .reads - .mix(ch_fastq.single) - .set { ch_cat_fastq } - ch_versions = ch_versions.mix(CAT_FASTQ.out.versions.first()) - - // - // SUBWORKFLOW: Read QC, extract UMI and trim adapters with TrimGalore! - // - ch_filtered_reads = Channel.empty() - ch_trim_read_count = Channel.empty() - if (params.trimmer == 'trimgalore') { - FASTQ_FASTQC_UMITOOLS_TRIMGALORE ( - ch_cat_fastq, - params.skip_fastqc || params.skip_qc, - params.with_umi, - params.skip_umi_extract, - params.skip_trimming, - params.umi_discard_read, - params.min_trimmed_reads - ) - ch_filtered_reads = FASTQ_FASTQC_UMITOOLS_TRIMGALORE.out.reads - ch_trim_read_count = FASTQ_FASTQC_UMITOOLS_TRIMGALORE.out.trim_read_count - ch_multiqc_files = ch_multiqc_files.mix(FASTQ_FASTQC_UMITOOLS_TRIMGALORE.out.fastqc_zip.collect{it[1]}) // FastQC report - untrimmed - ch_multiqc_files = ch_multiqc_files.mix(FASTQ_FASTQC_UMITOOLS_TRIMGALORE.out.umi_log.collect{it[1]}) // umi-tools extract logs - ch_multiqc_files = ch_multiqc_files.mix(FASTQ_FASTQC_UMITOOLS_TRIMGALORE.out.trim_zip.collect{it[1]}) // FastQC report - trimmed - ch_multiqc_files = ch_multiqc_files.mix(FASTQ_FASTQC_UMITOOLS_TRIMGALORE.out.trim_log.collect{it[1]}) // Trim Galore! trimming report - ch_versions = ch_versions.mix(FASTQ_FASTQC_UMITOOLS_TRIMGALORE.out.versions) - } + .set{ ch_fastq } // - // SUBWORKFLOW: Read QC, extract UMI and trim adapters with fastp + // Run RNA-seq FASTQ preprocessing subworkflow // - if (params.trimmer == 'fastp') { - FASTQ_FASTQC_UMITOOLS_FASTP ( - ch_cat_fastq, - params.skip_fastqc || params.skip_qc, - params.with_umi, - params.skip_umi_extract, - params.umi_discard_read, - params.skip_trimming, - [], - params.save_trimmed, - params.save_trimmed, - params.min_trimmed_reads - ) - ch_filtered_reads = FASTQ_FASTQC_UMITOOLS_FASTP.out.reads - ch_trim_read_count = FASTQ_FASTQC_UMITOOLS_FASTP.out.trim_read_count - ch_multiqc_files = ch_multiqc_files.mix(FASTQ_FASTQC_UMITOOLS_FASTP.out.fastqc_raw_zip.collect{it[1]}) - ch_multiqc_files = ch_multiqc_files.mix(FASTQ_FASTQC_UMITOOLS_FASTP.out.fastqc_trim_zip.collect{it[1]}) - ch_multiqc_files = ch_multiqc_files.mix(FASTQ_FASTQC_UMITOOLS_FASTP.out.trim_json.collect{it[1]}) - ch_multiqc_files = ch_multiqc_files.mix(FASTQ_FASTQC_UMITOOLS_FASTP.out.umi_log.collect{it[1]}) // umi-tools extract logs - ch_versions = ch_versions.mix(FASTQ_FASTQC_UMITOOLS_FASTP.out.versions) - } - - // Save trim status for workflow summary - ch_trim_status = ch_trim_read_count - .map { - meta, num_reads -> - return [ meta.id, num_reads > params.min_trimmed_reads.toFloat() ] - } - // - // Get list of samples that failed trimming threshold for MultiQC report - // - ch_trim_read_count - .map { - meta, num_reads -> - if (num_reads <= params.min_trimmed_reads.toFloat()) { - return [ "$meta.id\t$num_reads" ] - } - } - .collect() - .map { - tsv_data -> - def header = ["Sample", "Reads after trimming"] - multiqcTsvFromList(tsv_data, header) - } - .set { ch_fail_trimming_multiqc } - ch_multiqc_files = ch_multiqc_files.mix(ch_fail_trimming_multiqc.collectFile(name: 'fail_trimmed_samples_mqc.tsv')) - - // - // MODULE: Remove genome contaminant reads - // - if (!params.skip_bbsplit) { - BBMAP_BBSPLIT ( - ch_filtered_reads, - ch_bbsplit_index, - [], - [ [], [] ], - false - ) - .primary_fastq - .set { ch_filtered_reads } - ch_versions = ch_versions.mix(BBMAP_BBSPLIT.out.versions.first()) - } - - // - // MODULE: Remove ribosomal RNA reads - // - // Check rRNA databases for sortmerna - if (params.remove_ribo_rna) { - ch_ribo_db = file(params.ribo_database_manifest) - if (ch_ribo_db.isEmpty()) {exit 1, "File provided with --ribo_database_manifest is empty: ${ch_ribo_db.getName()}!"} - - Channel.from(ch_ribo_db.readLines()) - .map { row -> file(row, checkIfExists: true) } - .collect() - .map { [ 'rrna_refs', it ] } - .set { ch_sortmerna_fastas } - - if (make_sortmerna_index) { - SORTMERNA_INDEX ( - [ [],[] ], - ch_sortmerna_fastas, - [ [],[] ] - ) - ch_sortmerna_index = SORTMERNA_INDEX.out.index.first() - } - - SORTMERNA ( - ch_filtered_reads, - ch_sortmerna_fastas, - ch_sortmerna_index - ) - .reads - .set { ch_filtered_reads } - - ch_multiqc_files = ch_multiqc_files.mix(SORTMERNA.out.log.collect{it[1]}) - ch_versions = ch_versions.mix(SORTMERNA.out.versions.first()) - } - - // - // SUBWORKFLOW: Sub-sample FastQ files and pseudoalign with Salmon to auto-infer strandedness - // - - // Branch FastQ channels if 'auto' specified to infer strandedness - ch_filtered_reads - .branch { - meta, fastq -> - auto_strand : meta.strandedness == 'auto' - return [ meta, fastq ] - known_strand: meta.strandedness != 'auto' - return [ meta, fastq ] - } - .set { ch_strand_fastq } - - // Return empty channel if ch_strand_fastq.auto_strand is empty so salmon index isn't created - ch_fasta - .combine(ch_strand_fastq.auto_strand) - .map { it.first() } - .first() - .set { ch_genome_fasta } - - def prepare_tool_indices = [] - if (!params.skip_pseudo_alignment && params.pseudo_aligner) { - prepare_tool_indices << params.pseudo_aligner - } - FASTQ_SUBSAMPLE_FQ_SALMON ( - ch_strand_fastq.auto_strand, - ch_genome_fasta, + FASTQ_QC_TRIM_FILTER_SETSTRANDEDNESS ( + ch_fastq, + ch_fasta, ch_transcript_fasta, ch_gtf, ch_salmon_index, - !params.salmon_index && !('salmon' in prepare_tool_indices) + ch_sortmerna_index, + ch_bbsplit_index, + ch_ribo_db, + params.skip_bbsplit, + params.skip_fastqc || params.skip_qc, + params.skip_trimming, + params.skip_umi_extract, + !params.salmon_index && params.pseudo_aligner == 'salmon' && !skip_pseudo_alignment, + !params.sortmerna_index && params.remove_ribo_rna, + params.trimmer, + params.min_trimmed_reads, + params.save_trimmed, + params.remove_ribo_rna, + params.with_umi, + params.umi_discard_read, + params.stranded_threshold, + params.unstranded_threshold ) - ch_versions = ch_versions.mix(FASTQ_SUBSAMPLE_FQ_SALMON.out.versions) - FASTQ_SUBSAMPLE_FQ_SALMON - .out - .lib_format_counts - .join(ch_strand_fastq.auto_strand) - .map { - meta, json, reads -> - def salmon_strand_analysis = getSalmonInferredStrandedness(json, stranded_threshold=params.stranded_threshold, unstranded_threshold=params.unstranded_threshold) - strandedness = salmon_strand_analysis.inferred_strandedness - if (strandedness == 'undetermined') { - strandedness = 'unstranded' - } - return [ meta + [ strandedness: strandedness, salmon_strand_analysis: salmon_strand_analysis ], reads ] - } - .mix(ch_strand_fastq.known_strand) - .set { ch_strand_inferred_filtered_fastq } + ch_multiqc_files = ch_multiqc_files.mix(FASTQ_QC_TRIM_FILTER_SETSTRANDEDNESS.out.multiqc_files) + ch_versions = ch_versions.mix(FASTQ_QC_TRIM_FILTER_SETSTRANDEDNESS.out.versions) + ch_strand_inferred_filtered_fastq = FASTQ_QC_TRIM_FILTER_SETSTRANDEDNESS.out.reads // // SUBWORKFLOW: Alignment with STAR and gene/transcript quantification with Salmon @@ -870,11 +708,14 @@ workflow RNASEQ { // Provide MultiQC with rename patterns to ensure it uses sample names // for single-techrep samples not processed by CAT_FASTQ. - ch_name_replacements = ch_fastq.single + ch_name_replacements = ch_fastq + .filter{ meta, reads -> + reads.size() == 1 + } .map{ meta, reads -> - def name1 = file(reads[0]).simpleName + "\t" + meta.id + '_1' + def name1 = file(reads[0][0]).simpleName + "\t" + meta.id + '_1' if (reads[1] ){ - def name2 = file(reads[1]).simpleName + "\t" + meta.id + '_2' + def name2 = file(reads[0][1]).simpleName + "\t" + meta.id + '_2' return [ name1, name2 ] } else{ return name1 From 2389882790283afd7fdc2b3cf9fd2b53ea5d5b31 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Tue, 16 Jul 2024 11:09:37 +0000 Subject: [PATCH 489/634] update changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index b1e40c3cb..ac293d86a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -104,6 +104,7 @@ Thank you to everyone else that has contributed by reporting bugs, enhancements - [PR #1336](https://github.com/nf-core/rnaseq/pull/1334) - Use nf-core/setup-nf-test to install nf-test from cache during CI/CD - [PR #1340](https://github.com/nf-core/rnaseq/pull/1340) - Remove out-of-date Azure specific guidance - [PR #1341](https://github.com/nf-core/rnaseq/pull/1341) - Add rename in the MultiQC report for samples without techreps +- [PR #1342](https://github.com/nf-core/rnaseq/pull/1342) - Factor out preprocessing ### Parameters From 4d308443227a6431e118456c2700a3f20bdab2df Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Wed, 17 Jul 2024 09:16:57 +0100 Subject: [PATCH 490/634] Update RNAseq preprocessing swf --- .../nf-core/fastq_qc_trim_filter_setstrandedness/main.nf | 6 +++--- .../fastq_qc_trim_filter_setstrandedness/tests/main.nf.test | 4 ++++ 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/main.nf b/subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/main.nf index a17fc0b2b..ac8217ee9 100644 --- a/subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/main.nf +++ b/subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/main.nf @@ -104,7 +104,7 @@ workflow FASTQ_QC_TRIM_FILTER_SETSTRANDEDNESS { remove_ribo_rna // boolean: true/false: whether to run sortmerna to remove rrnas with_umi // boolean: true/false: Enable UMI-based read deduplication. umi_discard_read // integer: 0, 1 or 2 - stranded_threshold // float: The fraction of stranded reads that must be assigned to a strandedness for confident assignment. Must be at least 0.5 + stranded_threshold // float: The fraction of stranded reads that must be assigned to a strandedness for confident assignment. Must be at least 0.5 unstranded_threshold // float: The difference in fraction of stranded reads assigned to 'forward' and 'reverse' below which a sample is classified as 'unstranded' main: @@ -296,8 +296,8 @@ workflow FASTQ_QC_TRIM_FILTER_SETSTRANDEDNESS { FASTQ_SUBSAMPLE_FQ_SALMON .out - .lib_format_counts - .join(ch_strand_fastq.auto_strand) + .lib_format_counts + .join(ch_strand_fastq.auto_strand) .map { meta, json, reads -> def salmon_strand_analysis = getSalmonInferredStrandedness(json, stranded_threshold=stranded_threshold, unstranded_threshold=unstranded_threshold) diff --git a/subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/tests/main.nf.test b/subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/tests/main.nf.test index b58ff098e..ad5eef725 100644 --- a/subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/tests/main.nf.test +++ b/subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/tests/main.nf.test @@ -56,6 +56,8 @@ nextflow_workflow { input[17] = true // remove_ribo_rna input[18] = false // with_umi input[19] = 0 // umi_discard_read + input[20] = 0.8 // stranded_threshold + input[21] = 0.1 // unstranded_threshold """ } } @@ -112,6 +114,8 @@ nextflow_workflow { input[17] = true // remove_ribo_rna input[18] = false // with_umi input[19] = 0 // umi_discard_read + input[20] = 0.8 // stranded_threshold + input[21] = 0.1 // unstranded_threshold """ } } From 9e8f1e0b4d3a98b0e07e48377f363beeb689e8fc Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Wed, 17 Jul 2024 08:26:58 +0000 Subject: [PATCH 491/634] update modules.json --- modules.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules.json b/modules.json index 346597902..860d54c94 100644 --- a/modules.json +++ b/modules.json @@ -324,7 +324,7 @@ }, "fastq_qc_trim_filter_setstrandedness": { "branch": "master", - "git_sha": "81ed776ec05bf9ae89da3442c29b5c5c7afa807b", + "git_sha": "0a8d33545937d7ab061d0fd2499dc23891ddb6e0", "installed_by": ["subworkflows"] }, "fastq_subsample_fq_salmon": { From 6a22103bdd6615ebf53c661e20b7b3f7166e6d3f Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Wed, 17 Jul 2024 09:20:38 +0000 Subject: [PATCH 492/634] fix up ribo db wiring --- main.nf | 2 +- subworkflows/local/prepare_genome/main.nf | 12 +++++------- .../fastq_qc_trim_filter_setstrandedness/main.nf | 5 ++--- .../fastq_qc_trim_filter_setstrandedness/meta.yml | 6 +++--- 4 files changed, 11 insertions(+), 14 deletions(-) diff --git a/main.nf b/main.nf index 152c320e4..a0a6f1c7d 100755 --- a/main.nf +++ b/main.nf @@ -117,7 +117,7 @@ workflow NFCORE_RNASEQ { PREPARE_GENOME.out.salmon_index, PREPARE_GENOME.out.kallisto_index, PREPARE_GENOME.out.bbsplit_index, - PREPARE_GENOME.out.ribo_db, + PREPARE_GENOME.out.rrna_fastas, PREPARE_GENOME.out.sortmerna_index, PREPARE_GENOME.out.splicesites, !params.remove_ribo_rna && params.remove_ribo_rna diff --git a/subworkflows/local/prepare_genome/main.nf b/subworkflows/local/prepare_genome/main.nf index 050395442..92f8cc04a 100644 --- a/subworkflows/local/prepare_genome/main.nf +++ b/subworkflows/local/prepare_genome/main.nf @@ -228,10 +228,10 @@ workflow PREPARE_GENOME { // Uncompress sortmerna index or generate from scratch if required // ch_sortmerna_index = Channel.empty() - ch_ribo_db = Channel.empty() + ch_rrna_fastas = Channel.empty() if ('sortmerna' in prepare_tool_indices) { - ch_ribo_db = file(sortmerna_fasta_list) + ribo_db = file(sortmerna_fasta_list) if (sortmerna_index) { if (sortmerna_index.endsWith('.tar.gz')) { @@ -241,14 +241,12 @@ workflow PREPARE_GENOME { ch_sortmerna_index = Channel.value(file(sortmerna_index)) } } else { - ch_sortmerna_fastas = Channel.from(ch_ribo_db.readLines()) + ch_rrna_fastas = Channel.from(ribo_db.readLines()) .map { row -> file(row, checkIfExists: true) } - .collect() - .map { [ 'rrna_refs', it ] } SORTMERNA_INDEX ( Channel.of([ [],[] ]), - ch_sortmerna_fastas, + ch_rrna_fastas.collect().map { [ 'rrna_refs', it ] }, Channel.of([ [],[] ]) ) ch_sortmerna_index = SORTMERNA_INDEX.out.index.first() @@ -374,7 +372,7 @@ workflow PREPARE_GENOME { chrom_sizes = ch_chrom_sizes // channel: path(genome.sizes) splicesites = ch_splicesites // channel: path(genome.splicesites.txt) bbsplit_index = ch_bbsplit_index // channel: path(bbsplit/index/) - ribo_db = ch_ribo_db // channel: path(sortmerna_fasta_list) + rrna_fastas = ch_rrna_fastas // channel: path(sortmerna_fasta_list) sortmerna_index = ch_sortmerna_index // channel: path(sortmerna/index/) star_index = ch_star_index // channel: path(star/index/) rsem_index = ch_rsem_index // channel: path(rsem/index/) diff --git a/subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/main.nf b/subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/main.nf index ac8217ee9..0651753e1 100644 --- a/subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/main.nf +++ b/subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/main.nf @@ -91,7 +91,7 @@ workflow FASTQ_QC_TRIM_FILTER_SETSTRANDEDNESS { ch_salmon_index // channel: /path/to/salmon/index/ (optional) ch_sortmerna_index // channel: /path/to/sortmerna/index/ (optional) ch_bbsplit_index // channel: /path/to/bbsplit/index/ (optional) - ch_ribo_db // channel: /path/to/ Text file containing paths to fasta files (one per line) that will be used to create the database for SortMeRNA. (optional) + ch_rrna_fastas // channel: one or more fasta files containing rrna sequencs passed to SortMeRNA (optional) skip_bbsplit // boolean: Skip BBSplit for removal of non-reference genome reads. skip_fastqc // boolean: true/false skip_trimming // boolean: true/false @@ -233,8 +233,7 @@ workflow FASTQ_QC_TRIM_FILTER_SETSTRANDEDNESS { // MODULE: Remove ribosomal RNA reads // if (remove_ribo_rna) { - ch_sortmerna_fastas = Channel.from(ch_ribo_db.readLines()) - .map { row -> file(row, checkIfExists: true) } + ch_sortmerna_fastas = ch_rrna_fastas .collect() .map{ ['rrna_refs', it] } diff --git a/subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/meta.yml b/subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/meta.yml index cf7cd885f..6f92f56a0 100644 --- a/subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/meta.yml +++ b/subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/meta.yml @@ -47,11 +47,11 @@ input: - ch_bbsplit_index: type: file description: Path to directory or tar.gz archive for pre-built BBSplit index - - ch_ribo_db: + - ch_rrna_fastas: type: file description: | - Channel with text file containing paths to fasta files (one per line) - that will be used to create the database for SortMeRNA + Channel containing one or more FASTA files containing rRNA sequences + for use with SortMeRNA - skip_bbsplit: type: boolean description: Whether to skip BBSplit for removal of non-reference genome reads From 2447c6b76771860ed00900419f2e5bf4fa841a51 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Wed, 17 Jul 2024 09:26:48 +0000 Subject: [PATCH 493/634] Install swf from branch for now --- modules.json | 4 ++-- .../nf-core/fastq_qc_trim_filter_setstrandedness/main.nf | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/modules.json b/modules.json index 860d54c94..310fb392e 100644 --- a/modules.json +++ b/modules.json @@ -323,8 +323,8 @@ "installed_by": ["fastq_qc_trim_filter_setstrandedness", "subworkflows"] }, "fastq_qc_trim_filter_setstrandedness": { - "branch": "master", - "git_sha": "0a8d33545937d7ab061d0fd2499dc23891ddb6e0", + "branch": "rrna_prerpo_rrna_should_be_channel", + "git_sha": "d1e4c1977912284d6c4c1a1b351968cb6fcf1b6d", "installed_by": ["subworkflows"] }, "fastq_subsample_fq_salmon": { diff --git a/subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/main.nf b/subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/main.nf index 0651753e1..cd69166f3 100644 --- a/subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/main.nf +++ b/subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/main.nf @@ -91,7 +91,7 @@ workflow FASTQ_QC_TRIM_FILTER_SETSTRANDEDNESS { ch_salmon_index // channel: /path/to/salmon/index/ (optional) ch_sortmerna_index // channel: /path/to/sortmerna/index/ (optional) ch_bbsplit_index // channel: /path/to/bbsplit/index/ (optional) - ch_rrna_fastas // channel: one or more fasta files containing rrna sequencs passed to SortMeRNA (optional) + ch_rrna_fastas // channel: one or more fasta files containing rrna sequences to be passed to SortMeRNA (optional) skip_bbsplit // boolean: Skip BBSplit for removal of non-reference genome reads. skip_fastqc // boolean: true/false skip_trimming // boolean: true/false From 3da0bc3ec5c0c6259dc1537230d24b070351366b Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Wed, 17 Jul 2024 09:43:04 +0000 Subject: [PATCH 494/634] Fix tests --- .../tests/main.nf.test | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/tests/main.nf.test b/subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/tests/main.nf.test index ad5eef725..038af9e30 100644 --- a/subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/tests/main.nf.test +++ b/subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/tests/main.nf.test @@ -33,9 +33,6 @@ nextflow_workflow { ] ]) - ch_ribo_db = file('ribo_db.txt') - ch_ribo_db.append('https://raw.githubusercontent.com/biocore/sortmerna/v4.3.4/data/rRNA_databases/rfam-5.8s-database-id98.fasta') - input[0] = ch_reads input[1] = Channel.of(file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true)) // ch_fasta input[2] = Channel.of(file(params.modules_testdata_base_path + "genomics/homo_sapiens/genome/transcriptome.fasta", checkIfExists: true)) // ch_transcript_fasta @@ -43,7 +40,7 @@ nextflow_workflow { input[4] = [] // ch_salmon_index input[5] = [] // ch_sortmerna_index input[6] = [] // ch_bbsplit_index - input[7] = ch_ribo_db // ch_ribo_db + input[7] = Channel.of(file('https://raw.githubusercontent.com/biocore/sortmerna/v4.3.4/data/rRNA_databases/rfam-5.8s-database-id98.fasta', checkIfExists: true)) // ch_rrna_fastas input[8] = true // skip_bbsplit input[9] = false // skip_fastqc input[10] = false // skip_trimming @@ -91,9 +88,6 @@ nextflow_workflow { ] ]) - ch_ribo_db = file('ribo_db.txt') - ch_ribo_db.append('https://raw.githubusercontent.com/biocore/sortmerna/v4.3.4/data/rRNA_databases/rfam-5.8s-database-id98.fasta') - input[0] = ch_reads input[1] = Channel.of(file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true)) // ch_fasta input[2] = Channel.of(file(params.modules_testdata_base_path + "genomics/homo_sapiens/genome/transcriptome.fasta", checkIfExists: true)) // ch_transcript_fasta @@ -101,7 +95,7 @@ nextflow_workflow { input[4] = [] // ch_salmon_index input[5] = [] // ch_sortmerna_index input[6] = [] // ch_bbsplit_index - input[7] = ch_ribo_db // ch_ribo_db + input[7] = Channel.of(file('https://raw.githubusercontent.com/biocore/sortmerna/v4.3.4/data/rRNA_databases/rfam-5.8s-database-id98.fasta', checkIfExists: true)) // ch_rrna_fastas input[8] = true // skip_bbsplit input[9] = false // skip_fastqc input[10] = false // skip_trimming From 259dccfed00a19a18911739ec2031ea2b502ccea Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Wed, 17 Jul 2024 09:45:10 +0000 Subject: [PATCH 495/634] Update modules.json --- modules.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules.json b/modules.json index 310fb392e..f16d62bbf 100644 --- a/modules.json +++ b/modules.json @@ -324,7 +324,7 @@ }, "fastq_qc_trim_filter_setstrandedness": { "branch": "rrna_prerpo_rrna_should_be_channel", - "git_sha": "d1e4c1977912284d6c4c1a1b351968cb6fcf1b6d", + "git_sha": "d41517e03cd875b9b469a0d27e31c7afd9d2250f", "installed_by": ["subworkflows"] }, "fastq_subsample_fq_salmon": { From fe950ba0b07aa2103ae250bfd24afb64104ebcbf Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Wed, 17 Jul 2024 10:32:50 +0000 Subject: [PATCH 496/634] Move strandedness function testing to swf --- modules.json | 2 +- .../tests/main.function.nf.test | 109 ---------------- .../tests/main.function.nf.test.snap | 45 ------- .../tests/main.function.nf.test | 118 ++++++++++++++++++ .../tests/main.function.nf.test.snap | 47 +++++++ .../tests/main.nf.test | 2 + .../tests/main.nf.test.snap | 40 +++--- 7 files changed, 188 insertions(+), 175 deletions(-) create mode 100644 subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/tests/main.function.nf.test create mode 100644 subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/tests/main.function.nf.test.snap diff --git a/modules.json b/modules.json index f16d62bbf..9d8b94799 100644 --- a/modules.json +++ b/modules.json @@ -324,7 +324,7 @@ }, "fastq_qc_trim_filter_setstrandedness": { "branch": "rrna_prerpo_rrna_should_be_channel", - "git_sha": "d41517e03cd875b9b469a0d27e31c7afd9d2250f", + "git_sha": "e9fde2d1f5d38e2ed61c217aef44e23e8ed07103", "installed_by": ["subworkflows"] }, "fastq_subsample_fq_salmon": { diff --git a/subworkflows/local/utils_nfcore_rnaseq_pipeline/tests/main.function.nf.test b/subworkflows/local/utils_nfcore_rnaseq_pipeline/tests/main.function.nf.test index c809b2117..8390034c5 100644 --- a/subworkflows/local/utils_nfcore_rnaseq_pipeline/tests/main.function.nf.test +++ b/subworkflows/local/utils_nfcore_rnaseq_pipeline/tests/main.function.nf.test @@ -390,115 +390,6 @@ nextflow_function { } - test("Test Function getSalmonInferredStrandedness unstranded") { - - function "getSalmonInferredStrandedness" - - when { - function { - """ - import groovy.json.JsonOutput - - // Define the JSON contents for the test - def json_contents = JsonOutput.toJson([ - "SF": 0, - "SR": 0, - "ISF": 100, - "ISR": 100, - "IU": 0, - "U": 0 - ]) - def jsonFile = file("${workDir}/salmonUnstranded.json") - jsonFile.write(json_contents) - - input[0] = jsonFile - input[1] = 0.8 - input[2] = 0.1 - """ - } - } - - then { - assertAll( - { assert function.success }, - { assert snapshot(function.result).match() } - ) - } - - } - - test("Test Function getSalmonInferredStrandedness forward") { - - function "getSalmonInferredStrandedness" - - when { - function { - """ - import groovy.json.JsonOutput - - def json_contents = JsonOutput.toJson([ - "SF": 0, - "SR": 0, - "ISF": 100, - "ISR": 0, - "IU": 0, - "U": 0 - ]) - def jsonFile = file("${workDir}/salmonForward.json") - jsonFile.write(json_contents) - - input[0] = jsonFile - input[1] = 0.8 - input[2] = 0.1 - """ - } - } - - then { - assertAll( - { assert function.success }, - { assert snapshot(function.result).match() } - ) - } - - } - - test("Test Function getSalmonInferredStrandedness reverse") { - - function "getSalmonInferredStrandedness" - - when { - function { - """ - import groovy.json.JsonOutput - - def json_contents = JsonOutput.toJson([ - "SF": 0, - "SR": 0, - "ISF": 0, - "ISR": 100, - "IU": 0, - "U": 0 - ]) - def jsonFile = file("${workDir}/salmonReverse.json") - jsonFile.write(json_contents) - - input[0] = jsonFile - input[1] = 0.8 - input[2] = 0.1 - """ - } - } - - then { - assertAll( - { assert function.success }, - { assert snapshot(function.result).match() } - ) - } - - } - test("Test Function getStarPercentMapped pass") { function "getStarPercentMapped" diff --git a/subworkflows/local/utils_nfcore_rnaseq_pipeline/tests/main.function.nf.test.snap b/subworkflows/local/utils_nfcore_rnaseq_pipeline/tests/main.function.nf.test.snap index dd632fbc3..ed2d57860 100644 --- a/subworkflows/local/utils_nfcore_rnaseq_pipeline/tests/main.function.nf.test.snap +++ b/subworkflows/local/utils_nfcore_rnaseq_pipeline/tests/main.function.nf.test.snap @@ -45,36 +45,6 @@ }, "timestamp": "2024-03-06T14:33:26.903306" }, - "Test Function getSalmonInferredStrandedness unstranded": { - "content": [ - { - "inferred_strandedness": "unstranded", - "forwardFragments": 50.0, - "reverseFragments": 50.0, - "unstrandedFragments": 0.0 - } - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-06-18T14:29:54.96715" - }, - "Test Function getSalmonInferredStrandedness reverse": { - "content": [ - { - "inferred_strandedness": "reverse", - "forwardFragments": 0.0, - "reverseFragments": 100.0, - "unstrandedFragments": 0.0 - } - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-06-18T14:30:11.417381" - }, "Test Function checkSamplesAfterGrouping invalid strandedness": { "content": null, "meta": { @@ -215,21 +185,6 @@ }, "timestamp": "2024-03-06T14:32:49.565504" }, - "Test Function getSalmonInferredStrandedness forward": { - "content": [ - { - "inferred_strandedness": "forward", - "forwardFragments": 100.0, - "reverseFragments": 0.0, - "unstrandedFragments": 0.0 - } - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-06-18T14:30:03.301262" - }, "Test Function rsemStarIndexWarn": { "content": null, "meta": { diff --git a/subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/tests/main.function.nf.test b/subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/tests/main.function.nf.test new file mode 100644 index 000000000..57fcd302b --- /dev/null +++ b/subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/tests/main.function.nf.test @@ -0,0 +1,118 @@ +nextflow_function { + + name "Test Functions" + script "../main.nf" + + // + // Test function for deriving strandedness from Salmon numbers + // + + test("Test Function getSalmonInferredStrandedness unstranded") { + + function "getSalmonInferredStrandedness" + + when { + function { + """ + import groovy.json.JsonOutput + + // Define the JSON contents for the test + def json_contents = JsonOutput.toJson([ + "SF": 0, + "SR": 0, + "ISF": 100, + "ISR": 100, + "IU": 0, + "U": 0 + ]) + def jsonFile = file("${workDir}/salmonUnstranded.json") + jsonFile.write(json_contents) + + input[0] = jsonFile + input[1] = 0.8 + input[2] = 0.1 + """ + } + } + + then { + assertAll( + { assert function.success }, + { assert snapshot(function.result).match() } + ) + } + + } + + test("Test Function getSalmonInferredStrandedness forward") { + + function "getSalmonInferredStrandedness" + + when { + function { + """ + import groovy.json.JsonOutput + + def json_contents = JsonOutput.toJson([ + "SF": 0, + "SR": 0, + "ISF": 100, + "ISR": 0, + "IU": 0, + "U": 0 + ]) + def jsonFile = file("${workDir}/salmonForward.json") + jsonFile.write(json_contents) + + input[0] = jsonFile + input[1] = 0.8 + input[2] = 0.1 + """ + } + } + + then { + assertAll( + { assert function.success }, + { assert snapshot(function.result).match() } + ) + } + + } + + test("Test Function getSalmonInferredStrandedness reverse") { + + function "getSalmonInferredStrandedness" + + when { + function { + """ + import groovy.json.JsonOutput + + def json_contents = JsonOutput.toJson([ + "SF": 0, + "SR": 0, + "ISF": 0, + "ISR": 100, + "IU": 0, + "U": 0 + ]) + def jsonFile = file("${workDir}/salmonReverse.json") + jsonFile.write(json_contents) + + input[0] = jsonFile + input[1] = 0.8 + input[2] = 0.1 + """ + } + } + + then { + assertAll( + { assert function.success }, + { assert snapshot(function.result).match() } + ) + } + + } +} diff --git a/subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/tests/main.function.nf.test.snap b/subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/tests/main.function.nf.test.snap new file mode 100644 index 000000000..4b4e2e874 --- /dev/null +++ b/subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/tests/main.function.nf.test.snap @@ -0,0 +1,47 @@ +{ + "Test Function getSalmonInferredStrandedness forward": { + "content": [ + { + "inferred_strandedness": "forward", + "forwardFragments": 100.0, + "reverseFragments": 0.0, + "unstrandedFragments": 0.0 + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.3" + }, + "timestamp": "2024-07-17T10:28:59.284820592" + }, + "Test Function getSalmonInferredStrandedness unstranded": { + "content": [ + { + "inferred_strandedness": "unstranded", + "forwardFragments": 50.0, + "reverseFragments": 50.0, + "unstrandedFragments": 0.0 + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.3" + }, + "timestamp": "2024-07-17T10:28:47.514036696" + }, + "Test Function getSalmonInferredStrandedness reverse": { + "content": [ + { + "inferred_strandedness": "reverse", + "forwardFragments": 0.0, + "reverseFragments": 100.0, + "unstrandedFragments": 0.0 + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.3" + }, + "timestamp": "2024-07-17T10:29:11.43961965" + } +} \ No newline at end of file diff --git a/subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/tests/main.nf.test b/subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/tests/main.nf.test index 038af9e30..5242f2bee 100644 --- a/subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/tests/main.nf.test +++ b/subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/tests/main.nf.test @@ -130,4 +130,6 @@ nextflow_workflow { ) } } + + } diff --git a/subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/tests/main.nf.test.snap b/subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/tests/main.nf.test.snap index 21bdb2492..985349317 100644 --- a/subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/tests/main.nf.test.snap +++ b/subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/tests/main.nf.test.snap @@ -14,17 +14,17 @@ ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.3" }, - "timestamp": "2024-02-24T16:19:13.057802" + "timestamp": "2024-07-17T10:24:00.044553245" }, "trimgalore_test_pe_reads_2_lines": { "content": "eccf3e9e74589ff01c77fce7f4548e41", "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.3" }, - "timestamp": "2024-02-24T17:44:07.667653" + "timestamp": "2024-07-17T10:24:26.838793051" }, "fastp_test_pe_reads_1_size": { "content": [ @@ -32,9 +32,9 @@ ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.3" }, - "timestamp": "2024-02-24T17:43:46.173892" + "timestamp": "2024-07-17T10:23:59.889337984" }, "trimgalore_test_pe_reads_1_size": { "content": [ @@ -42,25 +42,25 @@ ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.3" }, - "timestamp": "2024-02-24T17:44:07.642318" + "timestamp": "2024-07-17T10:24:26.778599725" }, "trimgalore_test_pe_reads_1_lines": { "content": "3868fc1caf09367141d2bbf47e158823", "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.3" }, - "timestamp": "2024-02-24T17:44:07.641186" + "timestamp": "2024-07-17T10:24:26.774975135" }, "fastp_test_pe_reads_2_lines": { "content": "eccf3e9e74589ff01c77fce7f4548e41", "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.3" }, - "timestamp": "2024-02-24T17:43:46.235022" + "timestamp": "2024-07-17T10:23:59.997625278" }, "fastp_test_pe_reads_2_size": { "content": [ @@ -68,9 +68,9 @@ ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.3" }, - "timestamp": "2024-02-24T17:43:46.242006" + "timestamp": "2024-07-17T10:24:00.042449965" }, "trimgalore_test_pe_reads_2_size": { "content": [ @@ -78,17 +78,17 @@ ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.3" }, - "timestamp": "2024-02-24T17:44:07.668644" + "timestamp": "2024-07-17T10:24:26.841434261" }, "fastp_test_pe_reads_1_lines": { "content": "3868fc1caf09367141d2bbf47e158823", "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.3" }, - "timestamp": "2024-02-24T17:43:46.161535" + "timestamp": "2024-07-17T10:23:59.882844295" }, "trimgalore_read_count": { "content": [ @@ -105,8 +105,8 @@ ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.3" }, - "timestamp": "2024-02-24T17:44:07.669435" + "timestamp": "2024-07-17T10:24:26.84402498" } } \ No newline at end of file From 6bb1a791ad4ec46f563686957a99682da79db06e Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Wed, 17 Jul 2024 12:12:14 +0100 Subject: [PATCH 497/634] Install from modules master --- modules.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules.json b/modules.json index 9d8b94799..8d89cfcbb 100644 --- a/modules.json +++ b/modules.json @@ -323,8 +323,8 @@ "installed_by": ["fastq_qc_trim_filter_setstrandedness", "subworkflows"] }, "fastq_qc_trim_filter_setstrandedness": { - "branch": "rrna_prerpo_rrna_should_be_channel", - "git_sha": "e9fde2d1f5d38e2ed61c217aef44e23e8ed07103", + "branch": "master", + "git_sha": "b86de50ab60c19ab40e70a4501820f4cb307050b", "installed_by": ["subworkflows"] }, "fastq_subsample_fq_salmon": { From 1049fa57dd5cb93efb48f4a3d4733d44b54812fb Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Wed, 17 Jul 2024 13:16:21 +0000 Subject: [PATCH 498/634] Strip preprocessing components relocated to subworkflows --- workflows/rnaseq/main.nf | 7 ------- 1 file changed, 7 deletions(-) diff --git a/workflows/rnaseq/main.nf b/workflows/rnaseq/main.nf index f4075b1c3..896159378 100755 --- a/workflows/rnaseq/main.nf +++ b/workflows/rnaseq/main.nf @@ -32,8 +32,6 @@ include { getInferexperimentStrandedness } from '../../subworkflows/local/utils_ // // MODULE: Installed directly from nf-core/modules // -include { CAT_FASTQ } from '../../modules/nf-core/cat/fastq' -include { BBMAP_BBSPLIT } from '../../modules/nf-core/bbmap/bbsplit' include { DUPRADAR } from '../../modules/nf-core/dupradar' include { SAMTOOLS_SORT } from '../../modules/nf-core/samtools/sort' include { PRESEQ_LCEXTRAP } from '../../modules/nf-core/preseq/lcextrap' @@ -42,8 +40,6 @@ include { STRINGTIE_STRINGTIE } from '../../modules/nf-core/stringtie/string include { SUBREAD_FEATURECOUNTS } from '../../modules/nf-core/subread/featurecounts' include { MULTIQC } from '../../modules/nf-core/multiqc' include { UMITOOLS_PREPAREFORRSEM as UMITOOLS_PREPAREFORSALMON } from '../../modules/nf-core/umitools/prepareforrsem' -include { SORTMERNA } from '../../modules/nf-core/sortmerna' -include { SORTMERNA as SORTMERNA_INDEX } from '../../modules/nf-core/sortmerna' include { BEDTOOLS_GENOMECOV as BEDTOOLS_GENOMECOV_FW } from '../../modules/nf-core/bedtools/genomecov' include { BEDTOOLS_GENOMECOV as BEDTOOLS_GENOMECOV_REV } from '../../modules/nf-core/bedtools/genomecov' @@ -54,9 +50,6 @@ include { paramsSummaryMap } from 'plugin/nf-validation' include { fromSamplesheet } from 'plugin/nf-validation' include { paramsSummaryMultiqc } from '../../subworkflows/nf-core/utils_nfcore_pipeline' include { softwareVersionsToYAML } from '../../subworkflows/nf-core/utils_nfcore_pipeline' -include { FASTQ_SUBSAMPLE_FQ_SALMON } from '../../subworkflows/nf-core/fastq_subsample_fq_salmon' -include { FASTQ_FASTQC_UMITOOLS_TRIMGALORE } from '../../subworkflows/nf-core/fastq_fastqc_umitools_trimgalore' -include { FASTQ_FASTQC_UMITOOLS_FASTP } from '../../subworkflows/nf-core/fastq_fastqc_umitools_fastp' include { FASTQ_ALIGN_HISAT2 } from '../../subworkflows/nf-core/fastq_align_hisat2' include { BAM_SORT_STATS_SAMTOOLS } from '../../subworkflows/nf-core/bam_sort_stats_samtools' include { BAM_MARKDUPLICATES_PICARD } from '../../subworkflows/nf-core/bam_markduplicates_picard' From 42d80faa153d6000c58ae16874733388632d5ed3 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Fri, 19 Jul 2024 14:13:14 +0100 Subject: [PATCH 499/634] Fix the new call to preprocessing subworkflow --- workflows/rnaseq/main.nf | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/workflows/rnaseq/main.nf b/workflows/rnaseq/main.nf index 896159378..88fcd78fb 100755 --- a/workflows/rnaseq/main.nf +++ b/workflows/rnaseq/main.nf @@ -139,7 +139,7 @@ workflow RNASEQ { params.skip_fastqc || params.skip_qc, params.skip_trimming, params.skip_umi_extract, - !params.salmon_index && params.pseudo_aligner == 'salmon' && !skip_pseudo_alignment, + !params.salmon_index && params.pseudo_aligner == 'salmon' && !params.skip_pseudo_alignment, !params.sortmerna_index && params.remove_ribo_rna, params.trimmer, params.min_trimmed_reads, @@ -169,6 +169,7 @@ workflow RNASEQ { is_aws_igenome = true } } + print(is_aws_igenome) ALIGN_STAR ( ch_strand_inferred_filtered_fastq, From b8160d43f5cb1664ff5c8ca0a29b97fc8123ea97 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Fri, 19 Jul 2024 14:13:14 +0100 Subject: [PATCH 500/634] Fix the new call to preprocessing subworkflow --- workflows/rnaseq/main.nf | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/workflows/rnaseq/main.nf b/workflows/rnaseq/main.nf index 896159378..88fcd78fb 100755 --- a/workflows/rnaseq/main.nf +++ b/workflows/rnaseq/main.nf @@ -139,7 +139,7 @@ workflow RNASEQ { params.skip_fastqc || params.skip_qc, params.skip_trimming, params.skip_umi_extract, - !params.salmon_index && params.pseudo_aligner == 'salmon' && !skip_pseudo_alignment, + !params.salmon_index && params.pseudo_aligner == 'salmon' && !params.skip_pseudo_alignment, !params.sortmerna_index && params.remove_ribo_rna, params.trimmer, params.min_trimmed_reads, @@ -169,6 +169,7 @@ workflow RNASEQ { is_aws_igenome = true } } + print(is_aws_igenome) ALIGN_STAR ( ch_strand_inferred_filtered_fastq, From 3e293a8bddb4cb483196c76e5cce4e9244b17c51 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Fri, 19 Jul 2024 16:02:14 +0100 Subject: [PATCH 501/634] Fix the new call to preprocessing subworkflow --- modules.json | 2 +- .../nf-core/fastq_qc_trim_filter_setstrandedness/main.nf | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/modules.json b/modules.json index 8d89cfcbb..f197e3f65 100644 --- a/modules.json +++ b/modules.json @@ -324,7 +324,7 @@ }, "fastq_qc_trim_filter_setstrandedness": { "branch": "master", - "git_sha": "b86de50ab60c19ab40e70a4501820f4cb307050b", + "git_sha": "22c8d535286728605ccd229e5d1bb014cb965f8f", "installed_by": ["subworkflows"] }, "fastq_subsample_fq_salmon": { diff --git a/subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/main.nf b/subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/main.nf index cd69166f3..db73488f1 100644 --- a/subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/main.nf +++ b/subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/main.nf @@ -134,7 +134,7 @@ workflow FASTQ_QC_TRIM_FILTER_SETSTRANDEDNESS { .mix(ch_fastq.single) .set { ch_filtered_reads } - ch_versions = ch_versions.mix(CAT_FASTQ.out.versions.first().ifEmpty(null)) + ch_versions = ch_versions.mix(CAT_FASTQ.out.versions.first()) // // SUBWORKFLOW: Read QC, extract UMI and trim adapters with TrimGalore! From 6c8aa0bba8edb2c9b8a9446401ca9ec146101e32 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Fri, 19 Jul 2024 16:03:41 +0100 Subject: [PATCH 502/634] Remove print --- workflows/rnaseq/main.nf | 1 - 1 file changed, 1 deletion(-) diff --git a/workflows/rnaseq/main.nf b/workflows/rnaseq/main.nf index 88fcd78fb..7bf5d36e0 100755 --- a/workflows/rnaseq/main.nf +++ b/workflows/rnaseq/main.nf @@ -169,7 +169,6 @@ workflow RNASEQ { is_aws_igenome = true } } - print(is_aws_igenome) ALIGN_STAR ( ch_strand_inferred_filtered_fastq, From 4ed0cc6768e680c360081fbe23a7fc508b9b9ba1 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Fri, 19 Jul 2024 16:11:53 +0100 Subject: [PATCH 503/634] update changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index ac293d86a..e62628fc6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -105,6 +105,7 @@ Thank you to everyone else that has contributed by reporting bugs, enhancements - [PR #1340](https://github.com/nf-core/rnaseq/pull/1340) - Remove out-of-date Azure specific guidance - [PR #1341](https://github.com/nf-core/rnaseq/pull/1341) - Add rename in the MultiQC report for samples without techreps - [PR #1342](https://github.com/nf-core/rnaseq/pull/1342) - Factor out preprocessing +- [PR #1345](https://github.com/nf-core/rnaseq/pull/1345) - Fix preprocessing call ### Parameters From 8b28fee18e1f4fdfb96cf5c041c12d367a62d3e4 Mon Sep 17 00:00:00 2001 From: maxulysse Date: Mon, 22 Jul 2024 09:38:01 +0200 Subject: [PATCH 504/634] update nf-test to 0.9.0 --- .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 b6747cce5..8346f837c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -5,7 +5,7 @@ on: env: NXF_ANSI_LOG: false - NFT_VER: "0.8.4" + NFT_VER: "0.9.0" NFT_WORKDIR: "~" NFT_DIFF: "pdiff" NFT_DIFF_ARGS: "--line-numbers --expand-tabs=2" From 3eaf7a4b05ae3ef13d51b03a99531cceb02a17fc Mon Sep 17 00:00:00 2001 From: maxulysse Date: Mon, 22 Jul 2024 09:38:41 +0200 Subject: [PATCH 505/634] sort --- modules/local/deseq2_qc/main.nf | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/modules/local/deseq2_qc/main.nf b/modules/local/deseq2_qc/main.nf index 7ff5877bb..7aa81e9b5 100644 --- a/modules/local/deseq2_qc/main.nf +++ b/modules/local/deseq2_qc/main.nf @@ -63,16 +63,16 @@ process DESEQ2_QC { def label_lower = args2.toLowerCase() prefix = task.ext.prefix ?: "deseq2" """ - mkdir size_factors touch ${label_lower}.pca.vals_mqc.tsv touch ${label_lower}.sample.dists_mqc.tsv - touch ${prefix}.plots.pdf touch ${prefix}.dds.RData touch ${prefix}.pca.vals.txt + touch ${prefix}.plots.pdf touch ${prefix}.sample.dists.txt touch R_sessionInfo.log - touch size_factors/${prefix}.size_factors.RData + mkdir size_factors + touch size_factors/${prefix}.size_factors.RData for i in `head $counts -n 1 | cut -f3-`; do touch size_factors/\${i}.size_factors.RData From 86bac632b33663471626b419c470e7d59632d6bd Mon Sep 17 00:00:00 2001 From: maxulysse Date: Mon, 22 Jul 2024 09:42:49 +0200 Subject: [PATCH 506/634] update all modules/subworkflows + remove tags --- modules.json | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/modules.json b/modules.json index adb0ccf1d..046cd0cf5 100644 --- a/modules.json +++ b/modules.json @@ -7,7 +7,7 @@ "nf-core": { "bbmap/bbsplit": { "branch": "master", - "git_sha": "2c6b1144ed58b6184ad58fc4e6b6a90219b4bf4f", + "git_sha": "1ceaa8ba4d0fd886dbca0e545815d905b7407de7", "installed_by": ["fastq_qc_trim_filter_setstrandedness", "modules"] }, "bedtools/genomecov": { @@ -17,7 +17,7 @@ }, "cat/fastq": { "branch": "master", - "git_sha": "4fc983ad0b30e6e32696fa7d980c76c7bfe1c03e", + "git_sha": "1ceaa8ba4d0fd886dbca0e545815d905b7407de7", "installed_by": ["fastq_qc_trim_filter_setstrandedness", "modules"] }, "custom/catadditionalfasta": { @@ -314,12 +314,12 @@ }, "fastq_fastqc_umitools_fastp": { "branch": "master", - "git_sha": "db35d26edeafacf9906a517827df621a29adc13d", + "git_sha": "1ceaa8ba4d0fd886dbca0e545815d905b7407de7", "installed_by": ["fastq_qc_trim_filter_setstrandedness", "subworkflows"] }, "fastq_fastqc_umitools_trimgalore": { "branch": "master", - "git_sha": "cb6defa0834eda9d6d3f967e981c819fc3e257bf", + "git_sha": "f3aef88fcb3101e404b8385dbabaaba06f898dc4", "installed_by": ["fastq_qc_trim_filter_setstrandedness", "subworkflows"] }, "fastq_qc_trim_filter_setstrandedness": { @@ -329,7 +329,7 @@ }, "fastq_subsample_fq_salmon": { "branch": "master", - "git_sha": "727232afb8294b53dd9d05bfe469b70cce1675bb", + "git_sha": "fbe341e9af0bb98533757f536b26d38507d31724", "installed_by": ["fastq_qc_trim_filter_setstrandedness", "subworkflows"] }, "quantify_pseudo_alignment": { From ee285c8feb2410a131183c39f858c1d822e723fe Mon Sep 17 00:00:00 2001 From: maxulysse Date: Mon, 22 Jul 2024 09:45:56 +0200 Subject: [PATCH 507/634] remove tags --- .../tests/main.nf.test | 15 --------------- .../tests/tags.yml | 2 -- 2 files changed, 17 deletions(-) delete mode 100644 subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/tests/tags.yml diff --git a/subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/tests/main.nf.test b/subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/tests/main.nf.test index 5242f2bee..c752e176c 100644 --- a/subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/tests/main.nf.test +++ b/subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/tests/main.nf.test @@ -5,21 +5,6 @@ nextflow_workflow { workflow "FASTQ_QC_TRIM_FILTER_SETSTRANDEDNESS" config "./nextflow.config" - tag "subworkflows" - tag "subworkflows_nfcore" - tag "subworkflows/fastq_qc_trim_filter_setstrandedness" - - tag "bbmap/bbsplit" - tag "cat" - tag "cat/fastq" - tag "fastqc" - tag "sortmerna" - tag "subworkflows/fastq_fastqc_umitools_trimgalore" - tag "subworkflows/fastq_fastqc_umitools_fastp" - tag "subworkflows/fastq_subsample_fq_salmon" - - - test("homo_sapiens paired-end [fastq] fastp") { when { diff --git a/subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/tests/tags.yml b/subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/tests/tags.yml deleted file mode 100644 index cafd4a33d..000000000 --- a/subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -subworkflows/preprocess_rnaseq: - - subworkflows/nf-core/preprocess_rnaseq/** From 88286cdc758a60f0db4d6feeda5105ed699b05f0 Mon Sep 17 00:00:00 2001 From: maxulysse Date: Mon, 22 Jul 2024 10:49:24 +0200 Subject: [PATCH 508/634] keep card 3.1.1 that does not break CI due to weird RG --- modules.json | 3 +- .../picard/markduplicates/environment.yml | 2 +- modules/nf-core/picard/markduplicates/main.nf | 4 +- .../markduplicates/picard-markduplicates.diff | 45 +++++++++++++++++++ 4 files changed, 50 insertions(+), 4 deletions(-) create mode 100644 modules/nf-core/picard/markduplicates/picard-markduplicates.diff diff --git a/modules.json b/modules.json index 046cd0cf5..07c14db24 100644 --- a/modules.json +++ b/modules.json @@ -98,7 +98,8 @@ "picard/markduplicates": { "branch": "master", "git_sha": "0dee12b56ccecc416d6f7a1ccd85fd571eab3307", - "installed_by": ["bam_markduplicates_picard"] + "installed_by": ["bam_markduplicates_picard"], + "patch": "modules/nf-core/picard/markduplicates/picard-markduplicates.diff" }, "preseq/lcextrap": { "branch": "master", diff --git a/modules/nf-core/picard/markduplicates/environment.yml b/modules/nf-core/picard/markduplicates/environment.yml index a27db1186..58b795f54 100644 --- a/modules/nf-core/picard/markduplicates/environment.yml +++ b/modules/nf-core/picard/markduplicates/environment.yml @@ -4,4 +4,4 @@ channels: - bioconda - defaults dependencies: - - bioconda::picard=3.2.0 + - bioconda::picard=3.1.1 diff --git a/modules/nf-core/picard/markduplicates/main.nf b/modules/nf-core/picard/markduplicates/main.nf index cf18ac35c..ad0b29636 100644 --- a/modules/nf-core/picard/markduplicates/main.nf +++ b/modules/nf-core/picard/markduplicates/main.nf @@ -4,8 +4,8 @@ process PICARD_MARKDUPLICATES { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/picard:3.2.0--hdfd78af_0' : - 'biocontainers/picard:3.2.0--hdfd78af_0' }" + 'https://depot.galaxyproject.org/singularity/picard:3.1.1--hdfd78af_0' : + 'biocontainers/picard:3.1.1--hdfd78af_0' }" input: tuple val(meta), path(reads) diff --git a/modules/nf-core/picard/markduplicates/picard-markduplicates.diff b/modules/nf-core/picard/markduplicates/picard-markduplicates.diff new file mode 100644 index 000000000..579283f9c --- /dev/null +++ b/modules/nf-core/picard/markduplicates/picard-markduplicates.diff @@ -0,0 +1,45 @@ +Changes in module 'nf-core/picard/markduplicates' +--- modules/nf-core/picard/markduplicates/main.nf ++++ modules/nf-core/picard/markduplicates/main.nf +@@ -4,8 +4,8 @@ + + conda "${moduleDir}/environment.yml" + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? +- 'https://depot.galaxyproject.org/singularity/picard:3.2.0--hdfd78af_0' : +- 'biocontainers/picard:3.2.0--hdfd78af_0' }" ++ 'https://depot.galaxyproject.org/singularity/picard:3.1.1--hdfd78af_0' : ++ 'biocontainers/picard:3.1.1--hdfd78af_0' }" + + input: + tuple val(meta), path(reads) + +--- modules/nf-core/picard/markduplicates/environment.yml ++++ modules/nf-core/picard/markduplicates/environment.yml +@@ -4,4 +4,4 @@ + - bioconda + - defaults + dependencies: +- - bioconda::picard=3.2.0 ++ - bioconda::picard=3.1.1 + +--- modules/nf-core/picard/markduplicates/tests/main.nf.test ++++ modules/nf-core/picard/markduplicates/tests/main.nf.test +@@ -4,10 +4,6 @@ + script "../main.nf" + process "PICARD_MARKDUPLICATES" + config "./nextflow.config" +- tag "modules" +- tag "modules_nfcore" +- tag "picard" +- tag "picard/markduplicates" + + test("sarscov2 [unsorted bam]") { + + +--- modules/nf-core/picard/markduplicates/tests/tags.yml ++++ /dev/null +@@ -1,2 +0,0 @@ +-picard/markduplicates: +- - modules/nf-core/picard/markduplicates/** + +************************************************************ From f5adb7a1d92e21090d3f8784a217564e44bed34d Mon Sep 17 00:00:00 2001 From: maxulysse Date: Mon, 22 Jul 2024 13:53:14 +0200 Subject: [PATCH 509/634] update snapshot --- .../prepare_genome/tests/main.nf.test.snap | 32 +++++++++++++------ 1 file changed, 22 insertions(+), 10 deletions(-) diff --git a/subworkflows/local/prepare_genome/tests/main.nf.test.snap b/subworkflows/local/prepare_genome/tests/main.nf.test.snap index e0d3c690b..88d78c211 100644 --- a/subworkflows/local/prepare_genome/tests/main.nf.test.snap +++ b/subworkflows/local/prepare_genome/tests/main.nf.test.snap @@ -948,12 +948,15 @@ ], "12": [ - "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" + ], "13": [ - + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" ], "14": [ + + ], + "15": [ "versions.yml:md5,71252f1a221be05593361acccb99506b", "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", "versions.yml:md5,bc99889446f02427c166b3219b793672", @@ -1006,6 +1009,9 @@ ], "kallisto_index": [ + ], + "rrna_fastas": [ + ], "rsem_index": [ @@ -1034,10 +1040,10 @@ } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.0", + "nextflow": "24.04.3" }, - "timestamp": "2024-07-03T19:40:48.402507" + "timestamp": "2024-07-22T12:56:12.856413" }, "transcriptome = false": { "content": [ @@ -2210,12 +2216,15 @@ ], "12": [ - "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" + ], "13": [ - + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" ], "14": [ + + ], + "15": [ "versions.yml:md5,71252f1a221be05593361acccb99506b", "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", "versions.yml:md5,bc99889446f02427c166b3219b793672", @@ -2268,6 +2277,9 @@ ], "kallisto_index": [ + ], + "rrna_fastas": [ + ], "rsem_index": [ @@ -2296,9 +2308,9 @@ } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.0", + "nextflow": "24.04.3" }, - "timestamp": "2024-07-03T19:24:38.592099" + "timestamp": "2024-07-22T12:50:45.029123" } } \ No newline at end of file From d1c19be07246f8e758953429d32a19db49ca1d13 Mon Sep 17 00:00:00 2001 From: maxulysse Date: Mon, 22 Jul 2024 15:17:56 +0200 Subject: [PATCH 510/634] update snapshot --- tests/default.nf.test.snap | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/default.nf.test.snap b/tests/default.nf.test.snap index 4f7ed2f21..7371218e8 100644 --- a/tests/default.nf.test.snap +++ b/tests/default.nf.test.snap @@ -11,7 +11,7 @@ }, "Params: default": { "content": [ - "{BBMAP_BBSPLIT={bbmap=39.01}, BEDTOOLS_GENOMECOV_FW={bedtools=2.31.1}, CAT_FASTQ={cat=8.3}, CUSTOM_CATADDITIONALFASTA={python=3.9.5}, CUSTOM_GETCHROMSIZES={getchromsizes=1.2}, CUSTOM_TX2GENE={python=3.9.5}, DESEQ2_QC_PSEUDO={r-base=4.0.3, bioconductor-deseq2=1.28.0}, DESEQ2_QC_STAR_SALMON={r-base=4.0.3, bioconductor-deseq2=1.28.0}, DUPRADAR={bioconductor-dupradar=1.32.0}, FASTQC={fastqc=0.12.1}, FQ_SUBSAMPLE={fq=0.9.1 (2022-02-22)}, GTF2BED={perl=5.26.2}, GTF_FILTER={python=3.9.5}, GUNZIP_ADDITIONAL_FASTA={gunzip=1.1}, GUNZIP_GTF={gunzip=1.1}, MULTIQC_CUSTOM_BIOTYPE={python=3.9.5}, PICARD_MARKDUPLICATES={picard=3.2.0-1-g3948afb6b}, QUALIMAP_RNASEQ={qualimap=2.3}, RSEQC_BAMSTAT={rseqc=5.0.2}, RSEQC_INFEREXPERIMENT={rseqc=5.0.2}, RSEQC_INNERDISTANCE={rseqc=5.0.2}, RSEQC_JUNCTIONANNOTATION={rseqc=5.0.2}, RSEQC_JUNCTIONSATURATION={rseqc=5.0.2}, RSEQC_READDISTRIBUTION={rseqc=5.0.2}, RSEQC_READDUPLICATION={rseqc=5.0.2}, SALMON_QUANT={salmon=1.10.1}, SAMTOOLS_FLAGSTAT={samtools=1.2}, SAMTOOLS_IDXSTATS={samtools=1.2}, SAMTOOLS_INDEX={samtools=1.2}, SAMTOOLS_SORT={samtools=1.2}, SAMTOOLS_STATS={samtools=1.2}, SE_GENE={bioconductor-summarizedexperiment=1.32.0}, STAR_ALIGN={star=2.7.10a, samtools=1.18, gawk=5.1.0}, STAR_GENOMEGENERATE={star=2.7.10a, samtools=1.18, gawk=5.1.0}, STRINGTIE_STRINGTIE={stringtie=2.2.1}, SUBREAD_FEATURECOUNTS={subread=2.0.1}, TRIMGALORE={trimgalore=0.6.7, cutadapt=3.4}, TXIMETA_TXIMPORT={bioconductor-tximeta=1.20.1}, UCSC_BEDCLIP={ucsc=377}, UCSC_BEDGRAPHTOBIGWIG={ucsc=445}, UNTAR_SALMON_INDEX={untar=1.34}, Workflow={nf-core/rnaseq=v3.15.0dev}}", + "{BBMAP_BBSPLIT={bbmap=39.01}, BEDTOOLS_GENOMECOV_FW={bedtools=2.31.1}, CAT_FASTQ={cat=8.3}, CUSTOM_CATADDITIONALFASTA={python=3.9.5}, CUSTOM_GETCHROMSIZES={getchromsizes=1.2}, CUSTOM_TX2GENE={python=3.9.5}, DESEQ2_QC_PSEUDO={r-base=4.0.3, bioconductor-deseq2=1.28.0}, DESEQ2_QC_STAR_SALMON={r-base=4.0.3, bioconductor-deseq2=1.28.0}, DUPRADAR={bioconductor-dupradar=1.32.0}, FASTQC={fastqc=0.12.1}, FQ_SUBSAMPLE={fq=0.9.1 (2022-02-22)}, GTF2BED={perl=5.26.2}, GTF_FILTER={python=3.9.5}, GUNZIP_ADDITIONAL_FASTA={gunzip=1.1}, GUNZIP_GTF={gunzip=1.1}, MULTIQC_CUSTOM_BIOTYPE={python=3.9.5}, PICARD_MARKDUPLICATES={picard=3.1.1}, QUALIMAP_RNASEQ={qualimap=2.3}, RSEQC_BAMSTAT={rseqc=5.0.2}, RSEQC_INFEREXPERIMENT={rseqc=5.0.2}, RSEQC_INNERDISTANCE={rseqc=5.0.2}, RSEQC_JUNCTIONANNOTATION={rseqc=5.0.2}, RSEQC_JUNCTIONSATURATION={rseqc=5.0.2}, RSEQC_READDISTRIBUTION={rseqc=5.0.2}, RSEQC_READDUPLICATION={rseqc=5.0.2}, SALMON_QUANT={salmon=1.10.1}, SAMTOOLS_FLAGSTAT={samtools=1.2}, SAMTOOLS_IDXSTATS={samtools=1.2}, SAMTOOLS_INDEX={samtools=1.2}, SAMTOOLS_SORT={samtools=1.2}, SAMTOOLS_STATS={samtools=1.2}, SE_GENE={bioconductor-summarizedexperiment=1.32.0}, STAR_ALIGN={star=2.7.10a, samtools=1.18, gawk=5.1.0}, STAR_GENOMEGENERATE={star=2.7.10a, samtools=1.18, gawk=5.1.0}, STRINGTIE_STRINGTIE={stringtie=2.2.1}, SUBREAD_FEATURECOUNTS={subread=2.0.1}, TRIMGALORE={trimgalore=0.6.7, cutadapt=3.4}, TXIMETA_TXIMPORT={bioconductor-tximeta=1.20.1}, UCSC_BEDCLIP={ucsc=377}, UCSC_BEDGRAPHTOBIGWIG={ucsc=445}, UNTAR_SALMON_INDEX={untar=1.34}, Workflow={nf-core/rnaseq=v3.15.0dev}}", "genome_gfp.fasta:md5,e23e302af63736a199985a169fdac055", "genome_gfp.gtf:md5,c98b12c302f15731bfc36bcf297cfe28", "salmon.merged.transcript_counts.tsv:md5,ff0f5be09ca7a322672c0074ba35da17", @@ -32,4 +32,4 @@ }, "timestamp": "2024-07-12T16:32:22.039132" } -} \ No newline at end of file +} From f94beb35fc25b9d032b457309c2c17668a0be7cf Mon Sep 17 00:00:00 2001 From: maxulysse Date: Mon, 22 Jul 2024 19:17:39 +0200 Subject: [PATCH 511/634] update all modules + subworkflows / remove tags + path markduplicates --- modules.json | 34 +- modules/nf-core/fastqc/tests/main.nf.test | 225 +- .../nf-core/fastqc/tests/main.nf.test.snap | 370 ++- .../markduplicates/picard-markduplicates.diff | 20 - .../picard/markduplicates/tests/main.nf.test | 99 +- .../markduplicates/tests/main.nf.test.snap | 267 +- .../qualimap/rnaseq/tests/main.nf.test | 37 +- .../qualimap/rnaseq/tests/main.nf.test.snap | 49 +- .../samtools/flagstat/tests/main.nf.test | 28 +- .../samtools/flagstat/tests/main.nf.test.snap | 78 +- .../samtools/idxstats/tests/main.nf.test | 29 +- .../samtools/idxstats/tests/main.nf.test.snap | 78 +- modules/nf-core/samtools/index/main.nf | 7 +- .../nf-core/samtools/index/tests/main.nf.test | 87 +- .../samtools/index/tests/main.nf.test.snap | 264 +- modules/nf-core/samtools/sort/main.nf | 14 +- .../nf-core/samtools/sort/tests/main.nf.test | 54 +- .../samtools/sort/tests/main.nf.test.snap | 202 +- .../samtools/sort/tests/nextflow_cram.config | 8 + .../nf-core/samtools/stats/tests/main.nf.test | 57 +- .../samtools/stats/tests/main.nf.test.snap | 82 +- modules/nf-core/star/align/main.nf | 4 +- modules/nf-core/star/align/tests/main.nf.test | 523 +++- .../star/align/tests/main.nf.test.snap | 2288 +++++++++++++---- .../star/genomegenerate/tests/main.nf.test | 39 +- .../genomegenerate/tests/main.nf.test.snap | 182 +- .../stringtie/stringtie/tests/main.nf.test | 138 +- .../stringtie/tests/main.nf.test.snap | 504 +++- .../stringtie/stringtie/tests/nextflow.config | 5 - .../ucsc/bedgraphtobigwig/tests/main.nf.test | 26 +- .../bedgraphtobigwig/tests/main.nf.test.snap | 39 +- .../tests/main.nf.test.snap | 22 +- .../tests/main.nf.test.snap | 72 +- .../tests/main.nf.test.snap | 56 +- .../tests/main.nf.test.snap | 108 +- .../tests/main.nf.test.snap | 106 +- 36 files changed, 4719 insertions(+), 1482 deletions(-) create mode 100644 modules/nf-core/samtools/sort/tests/nextflow_cram.config delete mode 100644 modules/nf-core/stringtie/stringtie/tests/nextflow.config diff --git a/modules.json b/modules.json index 07c14db24..75defb0e9 100644 --- a/modules.json +++ b/modules.json @@ -47,7 +47,7 @@ }, "fastqc": { "branch": "master", - "git_sha": "285a50500f9e02578d90b3ce6382ea3c30216acd", + "git_sha": "46eca555142d6e597729fcb682adcc791796f514", "installed_by": ["fastq_fastqc_umitools_fastp", "fastq_fastqc_umitools_trimgalore"] }, "fq/subsample": { @@ -97,7 +97,7 @@ }, "picard/markduplicates": { "branch": "master", - "git_sha": "0dee12b56ccecc416d6f7a1ccd85fd571eab3307", + "git_sha": "46eca555142d6e597729fcb682adcc791796f514", "installed_by": ["bam_markduplicates_picard"], "patch": "modules/nf-core/picard/markduplicates/picard-markduplicates.diff" }, @@ -108,7 +108,7 @@ }, "qualimap/rnaseq": { "branch": "master", - "git_sha": "6b0e4fe14ca1b12e131f64608f0bbaf36fd11451", + "git_sha": "46eca555142d6e597729fcb682adcc791796f514", "installed_by": ["modules"] }, "rsem/calculateexpression": { @@ -173,17 +173,17 @@ }, "samtools/flagstat": { "branch": "master", - "git_sha": "04fbbc7c43cebc0b95d5b126f6d9fe4effa33519", + "git_sha": "46eca555142d6e597729fcb682adcc791796f514", "installed_by": ["bam_stats_samtools"] }, "samtools/idxstats": { "branch": "master", - "git_sha": "04fbbc7c43cebc0b95d5b126f6d9fe4effa33519", + "git_sha": "46eca555142d6e597729fcb682adcc791796f514", "installed_by": ["bam_stats_samtools"] }, "samtools/index": { "branch": "master", - "git_sha": "04fbbc7c43cebc0b95d5b126f6d9fe4effa33519", + "git_sha": "46eca555142d6e597729fcb682adcc791796f514", "installed_by": [ "bam_dedup_stats_samtools_umitools", "bam_markduplicates_picard", @@ -192,12 +192,12 @@ }, "samtools/sort": { "branch": "master", - "git_sha": "04fbbc7c43cebc0b95d5b126f6d9fe4effa33519", + "git_sha": "46eca555142d6e597729fcb682adcc791796f514", "installed_by": ["bam_sort_stats_samtools"] }, "samtools/stats": { "branch": "master", - "git_sha": "04fbbc7c43cebc0b95d5b126f6d9fe4effa33519", + "git_sha": "46eca555142d6e597729fcb682adcc791796f514", "installed_by": ["bam_stats_samtools"] }, "sortmerna": { @@ -207,17 +207,17 @@ }, "star/align": { "branch": "master", - "git_sha": "a21faa6a3481af92a343a10926f59c189a2c16c9", + "git_sha": "46eca555142d6e597729fcb682adcc791796f514", "installed_by": ["modules"] }, "star/genomegenerate": { "branch": "master", - "git_sha": "a21faa6a3481af92a343a10926f59c189a2c16c9", + "git_sha": "46eca555142d6e597729fcb682adcc791796f514", "installed_by": ["modules"] }, "stringtie/stringtie": { "branch": "master", - "git_sha": "b1b959609bda44341120aed1766329909f54b8d0", + "git_sha": "46eca555142d6e597729fcb682adcc791796f514", "installed_by": ["modules"] }, "subread/featurecounts": { @@ -247,7 +247,7 @@ }, "ucsc/bedgraphtobigwig": { "branch": "master", - "git_sha": "7c75d01997236f61b9b77399d9933cb36041f2c3", + "git_sha": "46eca555142d6e597729fcb682adcc791796f514", "installed_by": ["bedgraph_bedclip_bedgraphtobigwig"] }, "umitools/dedup": { @@ -276,12 +276,12 @@ "nf-core": { "bam_dedup_stats_samtools_umitools": { "branch": "master", - "git_sha": "0eacd714effe5aac1c1de26593873960b3346cab", + "git_sha": "46eca555142d6e597729fcb682adcc791796f514", "installed_by": ["subworkflows"] }, "bam_markduplicates_picard": { "branch": "master", - "git_sha": "0dee12b56ccecc416d6f7a1ccd85fd571eab3307", + "git_sha": "46eca555142d6e597729fcb682adcc791796f514", "installed_by": ["subworkflows"] }, "bam_rseqc": { @@ -291,7 +291,7 @@ }, "bam_sort_stats_samtools": { "branch": "master", - "git_sha": "0eacd714effe5aac1c1de26593873960b3346cab", + "git_sha": "46eca555142d6e597729fcb682adcc791796f514", "installed_by": ["fastq_align_hisat2"] }, "bam_stats_samtools": { @@ -315,12 +315,12 @@ }, "fastq_fastqc_umitools_fastp": { "branch": "master", - "git_sha": "1ceaa8ba4d0fd886dbca0e545815d905b7407de7", + "git_sha": "46eca555142d6e597729fcb682adcc791796f514", "installed_by": ["fastq_qc_trim_filter_setstrandedness", "subworkflows"] }, "fastq_fastqc_umitools_trimgalore": { "branch": "master", - "git_sha": "f3aef88fcb3101e404b8385dbabaaba06f898dc4", + "git_sha": "46eca555142d6e597729fcb682adcc791796f514", "installed_by": ["fastq_qc_trim_filter_setstrandedness", "subworkflows"] }, "fastq_qc_trim_filter_setstrandedness": { diff --git a/modules/nf-core/fastqc/tests/main.nf.test b/modules/nf-core/fastqc/tests/main.nf.test index c69808d8c..a67f92777 100644 --- a/modules/nf-core/fastqc/tests/main.nf.test +++ b/modules/nf-core/fastqc/tests/main.nf.test @@ -19,17 +19,14 @@ nextflow_process { 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("
    ") }, - - { assert snapshot(process.out.versions).match("fastqc_versions_single") } + { 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("") }, + { assert snapshot(process.out.versions).match() } ) } } @@ -50,16 +47,14 @@ nextflow_process { 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("") }, - { assert path(process.out.html[0][1][1]).text.contains("") }, - - { assert snapshot(process.out.versions).match("fastqc_versions_paired") } + { 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("") }, + { assert path(process.out.html[0][1][1]).text.contains("") }, + { assert snapshot(process.out.versions).match() } ) } } @@ -79,13 +74,11 @@ nextflow_process { 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("") }, - - { assert snapshot(process.out.versions).match("fastqc_versions_interleaved") } + { 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("") }, + { assert snapshot(process.out.versions).match() } ) } } @@ -105,13 +98,11 @@ nextflow_process { 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("") }, - - { assert snapshot(process.out.versions).match("fastqc_versions_bam") } + { 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("") }, + { assert snapshot(process.out.versions).match() } ) } } @@ -134,22 +125,20 @@ nextflow_process { 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("") }, - { assert path(process.out.html[0][1][1]).text.contains("") }, - { assert path(process.out.html[0][1][2]).text.contains("") }, - { assert path(process.out.html[0][1][3]).text.contains("") }, - - { assert snapshot(process.out.versions).match("fastqc_versions_multiple") } + { 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("") }, + { assert path(process.out.html[0][1][1]).text.contains("") }, + { assert path(process.out.html[0][1][2]).text.contains("") }, + { assert path(process.out.html[0][1][3]).text.contains("") }, + { assert snapshot(process.out.versions).match() } ) } } @@ -169,21 +158,18 @@ nextflow_process { 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("") }, - - { assert snapshot(process.out.versions).match("fastqc_versions_custom_prefix") } + { 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("") }, + { assert snapshot(process.out.versions).match() } ) } } test("sarscov2 single-end [fastq] - stub") { - options "-stub" - + options "-stub" when { process { """ @@ -197,12 +183,123 @@ nextflow_process { 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") } + { assert process.success }, + { assert snapshot(process.out).match() } ) } } + test("sarscov2 paired-end [fastq] - stub") { + + options "-stub" + 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 snapshot(process.out).match() } + ) + } + } + + test("sarscov2 interleaved [fastq] - stub") { + + options "-stub" + 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 snapshot(process.out).match() } + ) + } + } + + test("sarscov2 paired-end [bam] - stub") { + + options "-stub" + 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 snapshot(process.out).match() } + ) + } + } + + test("sarscov2 multiple [fastq] - stub") { + + options "-stub" + 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 snapshot(process.out).match() } + ) + } + } + + test("sarscov2 custom_prefix - stub") { + + options "-stub" + 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 snapshot(process.out).match() } + ) + } + } } diff --git a/modules/nf-core/fastqc/tests/main.nf.test.snap b/modules/nf-core/fastqc/tests/main.nf.test.snap index 86f7c3115..d5db3092f 100644 --- a/modules/nf-core/fastqc/tests/main.nf.test.snap +++ b/modules/nf-core/fastqc/tests/main.nf.test.snap @@ -1,88 +1,392 @@ { - "fastqc_versions_interleaved": { + "sarscov2 custom_prefix": { "content": [ [ "versions.yml:md5,e1cc25ca8af856014824abd842e93978" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.0", + "nextflow": "24.04.3" }, - "timestamp": "2024-01-31T17:40:07.293713" + "timestamp": "2024-07-22T11:02:16.374038" }, - "fastqc_stub": { + "sarscov2 single-end [fastq] - stub": { "content": [ - [ - "test.html", - "test.zip", - "versions.yml:md5,e1cc25ca8af856014824abd842e93978" - ] + { + "0": [ + [ + { + "id": "test", + "single_end": true + }, + "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": true + }, + "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + "versions.yml:md5,e1cc25ca8af856014824abd842e93978" + ], + "html": [ + [ + { + "id": "test", + "single_end": true + }, + "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,e1cc25ca8af856014824abd842e93978" + ], + "zip": [ + [ + { + "id": "test", + "single_end": true + }, + "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.3" + }, + "timestamp": "2024-07-22T11:02:24.993809" + }, + "sarscov2 custom_prefix - stub": { + "content": [ + { + "0": [ + [ + { + "id": "mysample", + "single_end": true + }, + "mysample.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + [ + { + "id": "mysample", + "single_end": true + }, + "mysample.zip:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + "versions.yml:md5,e1cc25ca8af856014824abd842e93978" + ], + "html": [ + [ + { + "id": "mysample", + "single_end": true + }, + "mysample.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,e1cc25ca8af856014824abd842e93978" + ], + "zip": [ + [ + { + "id": "mysample", + "single_end": true + }, + "mysample.zip:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.0", + "nextflow": "24.04.3" }, - "timestamp": "2024-01-31T17:31:01.425198" + "timestamp": "2024-07-22T11:03:10.93942" }, - "fastqc_versions_multiple": { + "sarscov2 interleaved [fastq]": { "content": [ [ "versions.yml:md5,e1cc25ca8af856014824abd842e93978" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.0", + "nextflow": "24.04.3" }, - "timestamp": "2024-01-31T17:40:55.797907" + "timestamp": "2024-07-22T11:01:42.355718" }, - "fastqc_versions_bam": { + "sarscov2 paired-end [bam]": { "content": [ [ "versions.yml:md5,e1cc25ca8af856014824abd842e93978" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.0", + "nextflow": "24.04.3" }, - "timestamp": "2024-01-31T17:40:26.795862" + "timestamp": "2024-07-22T11:01:53.276274" }, - "fastqc_versions_single": { + "sarscov2 multiple [fastq]": { "content": [ [ "versions.yml:md5,e1cc25ca8af856014824abd842e93978" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.0", + "nextflow": "24.04.3" }, - "timestamp": "2024-01-31T17:39:27.043675" + "timestamp": "2024-07-22T11:02:05.527626" }, - "fastqc_versions_paired": { + "sarscov2 paired-end [fastq]": { "content": [ [ "versions.yml:md5,e1cc25ca8af856014824abd842e93978" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.0", + "nextflow": "24.04.3" + }, + "timestamp": "2024-07-22T11:01:31.188871" + }, + "sarscov2 paired-end [fastq] - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": false + }, + "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + "versions.yml:md5,e1cc25ca8af856014824abd842e93978" + ], + "html": [ + [ + { + "id": "test", + "single_end": false + }, + "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,e1cc25ca8af856014824abd842e93978" + ], + "zip": [ + [ + { + "id": "test", + "single_end": false + }, + "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.3" + }, + "timestamp": "2024-07-22T11:02:34.273566" + }, + "sarscov2 multiple [fastq] - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": false + }, + "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + "versions.yml:md5,e1cc25ca8af856014824abd842e93978" + ], + "html": [ + [ + { + "id": "test", + "single_end": false + }, + "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,e1cc25ca8af856014824abd842e93978" + ], + "zip": [ + [ + { + "id": "test", + "single_end": false + }, + "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.3" }, - "timestamp": "2024-01-31T17:39:47.584191" + "timestamp": "2024-07-22T11:03:02.304411" }, - "fastqc_versions_custom_prefix": { + "sarscov2 single-end [fastq]": { "content": [ [ "versions.yml:md5,e1cc25ca8af856014824abd842e93978" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.0", + "nextflow": "24.04.3" + }, + "timestamp": "2024-07-22T11:01:19.095607" + }, + "sarscov2 interleaved [fastq] - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": false + }, + "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + "versions.yml:md5,e1cc25ca8af856014824abd842e93978" + ], + "html": [ + [ + { + "id": "test", + "single_end": false + }, + "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,e1cc25ca8af856014824abd842e93978" + ], + "zip": [ + [ + { + "id": "test", + "single_end": false + }, + "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.3" + }, + "timestamp": "2024-07-22T11:02:44.640184" + }, + "sarscov2 paired-end [bam] - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": false + }, + "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + "versions.yml:md5,e1cc25ca8af856014824abd842e93978" + ], + "html": [ + [ + { + "id": "test", + "single_end": false + }, + "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,e1cc25ca8af856014824abd842e93978" + ], + "zip": [ + [ + { + "id": "test", + "single_end": false + }, + "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.3" }, - "timestamp": "2024-01-31T17:41:14.576531" + "timestamp": "2024-07-22T11:02:53.550742" } } \ No newline at end of file diff --git a/modules/nf-core/picard/markduplicates/picard-markduplicates.diff b/modules/nf-core/picard/markduplicates/picard-markduplicates.diff index 579283f9c..bf684640d 100644 --- a/modules/nf-core/picard/markduplicates/picard-markduplicates.diff +++ b/modules/nf-core/picard/markduplicates/picard-markduplicates.diff @@ -22,24 +22,4 @@ Changes in module 'nf-core/picard/markduplicates' - - bioconda::picard=3.2.0 + - bioconda::picard=3.1.1 ---- modules/nf-core/picard/markduplicates/tests/main.nf.test -+++ modules/nf-core/picard/markduplicates/tests/main.nf.test -@@ -4,10 +4,6 @@ - script "../main.nf" - process "PICARD_MARKDUPLICATES" - config "./nextflow.config" -- tag "modules" -- tag "modules_nfcore" -- tag "picard" -- tag "picard/markduplicates" - - test("sarscov2 [unsorted bam]") { - - ---- modules/nf-core/picard/markduplicates/tests/tags.yml -+++ /dev/null -@@ -1,2 +0,0 @@ --picard/markduplicates: -- - modules/nf-core/picard/markduplicates/** - ************************************************************ diff --git a/modules/nf-core/picard/markduplicates/tests/main.nf.test b/modules/nf-core/picard/markduplicates/tests/main.nf.test index 04eff3581..1abea33e3 100644 --- a/modules/nf-core/picard/markduplicates/tests/main.nf.test +++ b/modules/nf-core/picard/markduplicates/tests/main.nf.test @@ -23,9 +23,11 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot(file(process.out.bam[0][1]).name).match("unsorted_bam_name") }, - { assert snapshot(path(process.out.metrics.get(0).get(1)).readLines()[0..2]).match("unsorted_bam_metrics") }, - { assert snapshot(process.out.versions).match("unsorted_bam_versions") } + { assert snapshot( + file(process.out.bam[0][1]).name, + path(process.out.metrics.get(0).get(1)).readLines()[0..2], + process.out.versions) + .match() } ) } } @@ -48,9 +50,11 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot(file(process.out.bam[0][1]).name).match("sorted_bam_name") }, - { assert snapshot(path(process.out.metrics.get(0).get(1)).readLines()[0..2]).match("sorted_bam_metrics") }, - { assert snapshot(process.out.versions).match("sorted_bam_versions") } + { assert snapshot( + file(process.out.bam[0][1]).name, + path(process.out.metrics.get(0).get(1)).readLines()[0..2], + process.out.versions) + .match() } ) } } @@ -79,9 +83,86 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot(file(process.out.cram[0][1]).name).match("cram_name") }, - { assert snapshot(path(process.out.metrics.get(0).get(1)).readLines()[0..2]).match("cram_metrics") }, - { assert snapshot(process.out.versions).match("cram_versions") } + { assert snapshot( + file(process.out.cram[0][1]).name, + path(process.out.metrics.get(0).get(1)).readLines()[0..2], + process.out.versions) + .match() } + ) + } + } + + test("sarscov2 [unsorted bam] - stub") { + options "-stub" + 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.bam', checkIfExists: true) + ]) + input[1] = [ [:], [] ] + input[2] = [ [:], [] ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("sarscov2 [sorted bam] - stub") { + options "-stub" + 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) + ]) + input[1] = [ [:], [] ] + input[2] = [ [:], [] ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("homo_sapiens [cram] - stub") { + options "-stub" + when { + process { + """ + input[0] = Channel.of([ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/cram/test.paired_end.sorted.cram', checkIfExists: true) + ]) + input[1] = Channel.of([ + [ id:'genome' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) + ]) + input[2] = Channel.of([ + [ id:'genome' ], + 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/picard/markduplicates/tests/main.nf.test.snap b/modules/nf-core/picard/markduplicates/tests/main.nf.test.snap index 24a57d0e3..8b37e65b1 100644 --- a/modules/nf-core/picard/markduplicates/tests/main.nf.test.snap +++ b/modules/nf-core/picard/markduplicates/tests/main.nf.test.snap @@ -1,110 +1,251 @@ { - "sorted_bam_versions": { + "sarscov2 [sorted bam] - stub": { "content": [ - [ - "versions.yml:md5,33dd4b32140e801e0d2e50aeefd0788d" - ] + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.marked.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + + ], + "2": [ + + ], + "3": [ + [ + { + "id": "test", + "single_end": false + }, + "test.marked.MarkDuplicates.metrics.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "4": [ + "versions.yml:md5,33dd4b32140e801e0d2e50aeefd0788d" + ], + "bai": [ + + ], + "bam": [ + [ + { + "id": "test", + "single_end": false + }, + "test.marked.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "cram": [ + + ], + "metrics": [ + [ + { + "id": "test", + "single_end": false + }, + "test.marked.MarkDuplicates.metrics.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,33dd4b32140e801e0d2e50aeefd0788d" + ] + } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.0", + "nextflow": "24.04.3" }, - "timestamp": "2024-07-10T09:49:13.838237323" + "timestamp": "2024-07-22T11:56:32.025869" }, - "unsorted_bam_name": { + "sarscov2 [unsorted bam] - stub": { "content": [ - "test.marked.bam" + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.marked.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + + ], + "2": [ + + ], + "3": [ + [ + { + "id": "test", + "single_end": false + }, + "test.marked.MarkDuplicates.metrics.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "4": [ + "versions.yml:md5,33dd4b32140e801e0d2e50aeefd0788d" + ], + "bai": [ + + ], + "bam": [ + [ + { + "id": "test", + "single_end": false + }, + "test.marked.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "cram": [ + + ], + "metrics": [ + [ + { + "id": "test", + "single_end": false + }, + "test.marked.MarkDuplicates.metrics.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,33dd4b32140e801e0d2e50aeefd0788d" + ] + } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.0", + "nextflow": "24.04.3" }, - "timestamp": "2024-01-19T10:26:28.100755" + "timestamp": "2024-07-22T11:56:20.497105" }, - "cram_metrics": { + "sarscov2 [unsorted bam]": { "content": [ + "test.marked.bam", [ "## htsjdk.samtools.metrics.StringHeader", - "# MarkDuplicates --INPUT test.paired_end.sorted.cram --OUTPUT test.marked.cram --METRICS_FILE test.marked.MarkDuplicates.metrics.txt --ASSUME_SORT_ORDER queryname --REFERENCE_SEQUENCE genome.fasta --MAX_SEQUENCES_FOR_DISK_READ_ENDS_MAP 50000 --MAX_FILE_HANDLES_FOR_READ_ENDS_MAP 8000 --SORTING_COLLECTION_SIZE_RATIO 0.25 --TAG_DUPLICATE_SET_MEMBERS false --REMOVE_SEQUENCING_DUPLICATES false --TAGGING_POLICY DontTag --CLEAR_DT true --DUPLEX_UMI false --FLOW_MODE false --FLOW_DUP_STRATEGY FLOW_QUALITY_SUM_STRATEGY --USE_END_IN_UNPAIRED_READS false --USE_UNPAIRED_CLIPPED_END false --UNPAIRED_END_UNCERTAINTY 0 --UNPAIRED_START_UNCERTAINTY 0 --FLOW_SKIP_FIRST_N_FLOWS 0 --FLOW_Q_IS_KNOWN_END false --FLOW_EFFECTIVE_QUALITY_THRESHOLD 15 --ADD_PG_TAG_TO_READS true --REMOVE_DUPLICATES false --ASSUME_SORTED false --DUPLICATE_SCORING_STRATEGY SUM_OF_BASE_QUALITIES --PROGRAM_RECORD_ID MarkDuplicates --PROGRAM_GROUP_NAME MarkDuplicates --READ_NAME_REGEX --OPTICAL_DUPLICATE_PIXEL_DISTANCE 100 --MAX_OPTICAL_DUPLICATE_SET_SIZE 300000 --VERBOSITY INFO --QUIET false --VALIDATION_STRINGENCY STRICT --COMPRESSION_LEVEL 5 --MAX_RECORDS_IN_RAM 500000 --CREATE_INDEX false --CREATE_MD5_FILE false --help false --version false --showHidden false --USE_JDK_DEFLATER false --USE_JDK_INFLATER false", + "# MarkDuplicates --INPUT test.paired_end.bam --OUTPUT test.marked.bam --METRICS_FILE test.marked.MarkDuplicates.metrics.txt --ASSUME_SORT_ORDER queryname --MAX_SEQUENCES_FOR_DISK_READ_ENDS_MAP 50000 --MAX_FILE_HANDLES_FOR_READ_ENDS_MAP 8000 --SORTING_COLLECTION_SIZE_RATIO 0.25 --TAG_DUPLICATE_SET_MEMBERS false --REMOVE_SEQUENCING_DUPLICATES false --TAGGING_POLICY DontTag --CLEAR_DT true --DUPLEX_UMI false --FLOW_MODE false --FLOW_DUP_STRATEGY FLOW_QUALITY_SUM_STRATEGY --USE_END_IN_UNPAIRED_READS false --USE_UNPAIRED_CLIPPED_END false --UNPAIRED_END_UNCERTAINTY 0 --UNPAIRED_START_UNCERTAINTY 0 --FLOW_SKIP_FIRST_N_FLOWS 0 --FLOW_Q_IS_KNOWN_END false --FLOW_EFFECTIVE_QUALITY_THRESHOLD 15 --ADD_PG_TAG_TO_READS true --REMOVE_DUPLICATES false --ASSUME_SORTED false --DUPLICATE_SCORING_STRATEGY SUM_OF_BASE_QUALITIES --PROGRAM_RECORD_ID MarkDuplicates --PROGRAM_GROUP_NAME MarkDuplicates --READ_NAME_REGEX --OPTICAL_DUPLICATE_PIXEL_DISTANCE 100 --MAX_OPTICAL_DUPLICATE_SET_SIZE 300000 --VERBOSITY INFO --QUIET false --VALIDATION_STRINGENCY STRICT --COMPRESSION_LEVEL 5 --MAX_RECORDS_IN_RAM 500000 --CREATE_INDEX false --CREATE_MD5_FILE false --help false --version false --showHidden false --USE_JDK_DEFLATER false --USE_JDK_INFLATER false", "## htsjdk.samtools.metrics.StringHeader" + ], + [ + "versions.yml:md5,33dd4b32140e801e0d2e50aeefd0788d" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.0", + "nextflow": "24.04.3" }, - "timestamp": "2024-07-10T09:49:32.685023439" + "timestamp": "2024-07-22T11:50:14.881666" }, - "sorted_bam_metrics": { + "sarscov2 [sorted bam]": { "content": [ + "test.marked.bam", [ "## htsjdk.samtools.metrics.StringHeader", "# MarkDuplicates --INPUT test.paired_end.sorted.bam --OUTPUT test.marked.bam --METRICS_FILE test.marked.MarkDuplicates.metrics.txt --ASSUME_SORT_ORDER queryname --MAX_SEQUENCES_FOR_DISK_READ_ENDS_MAP 50000 --MAX_FILE_HANDLES_FOR_READ_ENDS_MAP 8000 --SORTING_COLLECTION_SIZE_RATIO 0.25 --TAG_DUPLICATE_SET_MEMBERS false --REMOVE_SEQUENCING_DUPLICATES false --TAGGING_POLICY DontTag --CLEAR_DT true --DUPLEX_UMI false --FLOW_MODE false --FLOW_DUP_STRATEGY FLOW_QUALITY_SUM_STRATEGY --USE_END_IN_UNPAIRED_READS false --USE_UNPAIRED_CLIPPED_END false --UNPAIRED_END_UNCERTAINTY 0 --UNPAIRED_START_UNCERTAINTY 0 --FLOW_SKIP_FIRST_N_FLOWS 0 --FLOW_Q_IS_KNOWN_END false --FLOW_EFFECTIVE_QUALITY_THRESHOLD 15 --ADD_PG_TAG_TO_READS true --REMOVE_DUPLICATES false --ASSUME_SORTED false --DUPLICATE_SCORING_STRATEGY SUM_OF_BASE_QUALITIES --PROGRAM_RECORD_ID MarkDuplicates --PROGRAM_GROUP_NAME MarkDuplicates --READ_NAME_REGEX --OPTICAL_DUPLICATE_PIXEL_DISTANCE 100 --MAX_OPTICAL_DUPLICATE_SET_SIZE 300000 --VERBOSITY INFO --QUIET false --VALIDATION_STRINGENCY STRICT --COMPRESSION_LEVEL 5 --MAX_RECORDS_IN_RAM 500000 --CREATE_INDEX false --CREATE_MD5_FILE false --help false --version false --showHidden false --USE_JDK_DEFLATER false --USE_JDK_INFLATER false", "## htsjdk.samtools.metrics.StringHeader" - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" - }, - "timestamp": "2024-07-10T09:49:13.788936246" - }, - "cram_name": { - "content": [ - "test.marked.cram" - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-03-20T15:25:47.459663" - }, - "cram_versions": { - "content": [ + ], [ "versions.yml:md5,33dd4b32140e801e0d2e50aeefd0788d" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.0", + "nextflow": "24.04.3" }, - "timestamp": "2024-07-10T09:49:32.731312566" + "timestamp": "2024-07-22T11:52:03.11428" }, - "unsorted_bam_versions": { - "content": [ - [ - "versions.yml:md5,33dd4b32140e801e0d2e50aeefd0788d" - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" - }, - "timestamp": "2024-07-10T09:48:57.466503381" - }, - "unsorted_bam_metrics": { + "homo_sapiens [cram]": { "content": [ + "test.marked.cram", [ "## htsjdk.samtools.metrics.StringHeader", - "# MarkDuplicates --INPUT test.paired_end.bam --OUTPUT test.marked.bam --METRICS_FILE test.marked.MarkDuplicates.metrics.txt --ASSUME_SORT_ORDER queryname --MAX_SEQUENCES_FOR_DISK_READ_ENDS_MAP 50000 --MAX_FILE_HANDLES_FOR_READ_ENDS_MAP 8000 --SORTING_COLLECTION_SIZE_RATIO 0.25 --TAG_DUPLICATE_SET_MEMBERS false --REMOVE_SEQUENCING_DUPLICATES false --TAGGING_POLICY DontTag --CLEAR_DT true --DUPLEX_UMI false --FLOW_MODE false --FLOW_DUP_STRATEGY FLOW_QUALITY_SUM_STRATEGY --USE_END_IN_UNPAIRED_READS false --USE_UNPAIRED_CLIPPED_END false --UNPAIRED_END_UNCERTAINTY 0 --UNPAIRED_START_UNCERTAINTY 0 --FLOW_SKIP_FIRST_N_FLOWS 0 --FLOW_Q_IS_KNOWN_END false --FLOW_EFFECTIVE_QUALITY_THRESHOLD 15 --ADD_PG_TAG_TO_READS true --REMOVE_DUPLICATES false --ASSUME_SORTED false --DUPLICATE_SCORING_STRATEGY SUM_OF_BASE_QUALITIES --PROGRAM_RECORD_ID MarkDuplicates --PROGRAM_GROUP_NAME MarkDuplicates --READ_NAME_REGEX --OPTICAL_DUPLICATE_PIXEL_DISTANCE 100 --MAX_OPTICAL_DUPLICATE_SET_SIZE 300000 --VERBOSITY INFO --QUIET false --VALIDATION_STRINGENCY STRICT --COMPRESSION_LEVEL 5 --MAX_RECORDS_IN_RAM 500000 --CREATE_INDEX false --CREATE_MD5_FILE false --help false --version false --showHidden false --USE_JDK_DEFLATER false --USE_JDK_INFLATER false", + "# MarkDuplicates --INPUT test.paired_end.sorted.cram --OUTPUT test.marked.cram --METRICS_FILE test.marked.MarkDuplicates.metrics.txt --ASSUME_SORT_ORDER queryname --REFERENCE_SEQUENCE genome.fasta --MAX_SEQUENCES_FOR_DISK_READ_ENDS_MAP 50000 --MAX_FILE_HANDLES_FOR_READ_ENDS_MAP 8000 --SORTING_COLLECTION_SIZE_RATIO 0.25 --TAG_DUPLICATE_SET_MEMBERS false --REMOVE_SEQUENCING_DUPLICATES false --TAGGING_POLICY DontTag --CLEAR_DT true --DUPLEX_UMI false --FLOW_MODE false --FLOW_DUP_STRATEGY FLOW_QUALITY_SUM_STRATEGY --USE_END_IN_UNPAIRED_READS false --USE_UNPAIRED_CLIPPED_END false --UNPAIRED_END_UNCERTAINTY 0 --UNPAIRED_START_UNCERTAINTY 0 --FLOW_SKIP_FIRST_N_FLOWS 0 --FLOW_Q_IS_KNOWN_END false --FLOW_EFFECTIVE_QUALITY_THRESHOLD 15 --ADD_PG_TAG_TO_READS true --REMOVE_DUPLICATES false --ASSUME_SORTED false --DUPLICATE_SCORING_STRATEGY SUM_OF_BASE_QUALITIES --PROGRAM_RECORD_ID MarkDuplicates --PROGRAM_GROUP_NAME MarkDuplicates --READ_NAME_REGEX --OPTICAL_DUPLICATE_PIXEL_DISTANCE 100 --MAX_OPTICAL_DUPLICATE_SET_SIZE 300000 --VERBOSITY INFO --QUIET false --VALIDATION_STRINGENCY STRICT --COMPRESSION_LEVEL 5 --MAX_RECORDS_IN_RAM 500000 --CREATE_INDEX false --CREATE_MD5_FILE false --help false --version false --showHidden false --USE_JDK_DEFLATER false --USE_JDK_INFLATER false", "## htsjdk.samtools.metrics.StringHeader" + ], + [ + "versions.yml:md5,33dd4b32140e801e0d2e50aeefd0788d" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.0", + "nextflow": "24.04.3" }, - "timestamp": "2024-07-10T09:48:57.387579606" + "timestamp": "2024-07-22T11:53:05.403139" }, - "sorted_bam_name": { + "homo_sapiens [cram] - stub": { "content": [ - "test.marked.bam" + { + "0": [ + + ], + "1": [ + + ], + "2": [ + [ + { + "id": "test", + "single_end": false + }, + "test.marked.cram:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "3": [ + [ + { + "id": "test", + "single_end": false + }, + "test.marked.MarkDuplicates.metrics.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "4": [ + "versions.yml:md5,33dd4b32140e801e0d2e50aeefd0788d" + ], + "bai": [ + + ], + "bam": [ + + ], + "cram": [ + [ + { + "id": "test", + "single_end": false + }, + "test.marked.cram:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "metrics": [ + [ + { + "id": "test", + "single_end": false + }, + "test.marked.MarkDuplicates.metrics.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,33dd4b32140e801e0d2e50aeefd0788d" + ] + } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.0", + "nextflow": "24.04.3" }, - "timestamp": "2024-01-19T10:26:45.080116" + "timestamp": "2024-07-22T11:56:43.438188" } } \ No newline at end of file diff --git a/modules/nf-core/qualimap/rnaseq/tests/main.nf.test b/modules/nf-core/qualimap/rnaseq/tests/main.nf.test index 42403c502..ff4197eeb 100644 --- a/modules/nf-core/qualimap/rnaseq/tests/main.nf.test +++ b/modules/nf-core/qualimap/rnaseq/tests/main.nf.test @@ -5,11 +5,38 @@ nextflow_process { process "QUALIMAP_RNASEQ" test("homo_sapiens [bam]") { - when { - params { - outdir = "$outputDir" + 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) + ]) + input[1] = Channel.of([ + [ id:'test_fasta_gtf' ], // meta map + [ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.gtf', checkIfExists: true) ] + ]) + """ } + } + + then { + assertAll ( + { assert process.success }, + { assert snapshot( + file("${process.out.results[0][1]}/qualimapReport.html").name, + path("${process.out.results[0][1]}/rnaseq_qc_results.txt"), + process.out.versions + ).match() } + ) + } + } + + test("homo_sapiens [bam] - stub") { + + options "-stub" + + when { process { """ input[0] = Channel.of([ @@ -27,9 +54,7 @@ nextflow_process { then { assertAll ( { assert process.success }, - { assert path("${process.out.results[0][1]}/qualimapReport.html").exists() }, - { assert snapshot(path("${process.out.results[0][1]}/rnaseq_qc_results.txt")).match("rnaseq_qc_results") }, - { assert snapshot(process.out.versions).match("versions") } + { assert snapshot(process.out).match() } ) } } diff --git a/modules/nf-core/qualimap/rnaseq/tests/main.nf.test.snap b/modules/nf-core/qualimap/rnaseq/tests/main.nf.test.snap index 7d1c72811..682462639 100644 --- a/modules/nf-core/qualimap/rnaseq/tests/main.nf.test.snap +++ b/modules/nf-core/qualimap/rnaseq/tests/main.nf.test.snap @@ -1,16 +1,55 @@ { - "rnaseq_qc_results": { + "homo_sapiens [bam] - stub": { "content": [ - "rnaseq_qc_results.txt:md5,b77878cac45beaa79a892af54aad2da3" + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + [ + + ] + ] + ], + "1": [ + "versions.yml:md5,a6868ab89f7d31361a7791db2dea98e7" + ], + "results": [ + [ + { + "id": "test", + "single_end": false + }, + [ + + ] + ] + ], + "versions": [ + "versions.yml:md5,a6868ab89f7d31361a7791db2dea98e7" + ] + } ], - "timestamp": "2024-01-19T12:07:55.509784" + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.3" + }, + "timestamp": "2024-07-22T11:27:41.158111" }, - "versions": { + "homo_sapiens [bam]": { "content": [ + "qualimapReport.html", + "rnaseq_qc_results.txt:md5,b77878cac45beaa79a892af54aad2da3", [ "versions.yml:md5,a6868ab89f7d31361a7791db2dea98e7" ] ], - "timestamp": "2024-01-19T12:07:55.512116" + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.3" + }, + "timestamp": "2024-07-22T11:27:30.782304" } } \ No newline at end of file diff --git a/modules/nf-core/samtools/flagstat/tests/main.nf.test b/modules/nf-core/samtools/flagstat/tests/main.nf.test index 4d3742361..b899f1fc7 100644 --- a/modules/nf-core/samtools/flagstat/tests/main.nf.test +++ b/modules/nf-core/samtools/flagstat/tests/main.nf.test @@ -7,9 +7,30 @@ nextflow_process { test("BAM") { when { - params { - outdir = "$outputDir" + 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), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam.bai', checkIfExists: true) + ]) + """ } + } + + then { + assertAll ( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("BAM - stub") { + + options "-stub" + + when { process { """ input[0] = Channel.of([ @@ -24,8 +45,7 @@ nextflow_process { then { assertAll ( { assert process.success }, - { assert snapshot(process.out.flagstat).match("flagstat") }, - { assert snapshot(process.out.versions).match("versions") } + { assert snapshot(process.out).match() } ) } } diff --git a/modules/nf-core/samtools/flagstat/tests/main.nf.test.snap b/modules/nf-core/samtools/flagstat/tests/main.nf.test.snap index e9f85efa9..23989c612 100644 --- a/modules/nf-core/samtools/flagstat/tests/main.nf.test.snap +++ b/modules/nf-core/samtools/flagstat/tests/main.nf.test.snap @@ -1,32 +1,72 @@ { - "flagstat": { + "BAM - stub": { "content": [ - [ - [ - { - "id": "test", - "single_end": false - }, - "test.flagstat:md5,4f7ffd1e6a5e85524d443209ac97d783" + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.flagstat:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + "versions.yml:md5,f606681ef971cbb548a4d9e3fbabdbc2" + ], + "flagstat": [ + [ + { + "id": "test", + "single_end": false + }, + "test.flagstat:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,f606681ef971cbb548a4d9e3fbabdbc2" ] - ] + } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.04.3" + "nf-test": "0.9.0", + "nextflow": "24.04.3" }, - "timestamp": "2024-02-12T18:31:37.783927" + "timestamp": "2024-07-22T14:17:28.002887" }, - "versions": { + "BAM": { "content": [ - [ - "versions.yml:md5,f606681ef971cbb548a4d9e3fbabdbc2" - ] + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.flagstat:md5,4f7ffd1e6a5e85524d443209ac97d783" + ] + ], + "1": [ + "versions.yml:md5,f606681ef971cbb548a4d9e3fbabdbc2" + ], + "flagstat": [ + [ + { + "id": "test", + "single_end": false + }, + "test.flagstat:md5,4f7ffd1e6a5e85524d443209ac97d783" + ] + ], + "versions": [ + "versions.yml:md5,f606681ef971cbb548a4d9e3fbabdbc2" + ] + } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.0", + "nextflow": "24.04.3" }, - "timestamp": "2024-05-28T15:41:52.516253882" + "timestamp": "2024-07-22T14:17:13.330971" } } \ No newline at end of file diff --git a/modules/nf-core/samtools/idxstats/tests/main.nf.test b/modules/nf-core/samtools/idxstats/tests/main.nf.test index e6c427053..bf4c31047 100644 --- a/modules/nf-core/samtools/idxstats/tests/main.nf.test +++ b/modules/nf-core/samtools/idxstats/tests/main.nf.test @@ -7,9 +7,6 @@ nextflow_process { test("bam") { when { - params { - outdir = "$outputDir" - } process { """ input[0] = Channel.of([ @@ -24,9 +21,29 @@ nextflow_process { then { assertAll ( { assert process.success }, - { assert snapshot(process.out.idxstats).match("idxstats") }, - { assert snapshot(process.out.versions).match("versions") } + { assert snapshot(process.out).match() } ) } } -} + + test("bam - stub") { + options "-stub" + 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), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam.bai', checkIfExists: true) + ]) + """ + } + } + + then { + assertAll ( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + }} diff --git a/modules/nf-core/samtools/idxstats/tests/main.nf.test.snap b/modules/nf-core/samtools/idxstats/tests/main.nf.test.snap index 4eacdb90f..a5ac8104e 100644 --- a/modules/nf-core/samtools/idxstats/tests/main.nf.test.snap +++ b/modules/nf-core/samtools/idxstats/tests/main.nf.test.snap @@ -1,32 +1,72 @@ { - "versions": { + "bam - stub": { "content": [ - [ - "versions.yml:md5,7acbcb2a8ec6436ba7b2916d3ff13351" - ] + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.idxstats:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + "versions.yml:md5,7acbcb2a8ec6436ba7b2916d3ff13351" + ], + "idxstats": [ + [ + { + "id": "test", + "single_end": false + }, + "test.idxstats:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,7acbcb2a8ec6436ba7b2916d3ff13351" + ] + } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.0", + "nextflow": "24.04.3" }, - "timestamp": "2024-05-28T15:46:46.617989517" + "timestamp": "2024-07-22T14:17:56.180093" }, - "idxstats": { + "bam": { "content": [ - [ - [ - { - "id": "test", - "single_end": false - }, - "test.idxstats:md5,df60a8c8d6621100d05178c93fb053a2" + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.idxstats:md5,df60a8c8d6621100d05178c93fb053a2" + ] + ], + "1": [ + "versions.yml:md5,7acbcb2a8ec6436ba7b2916d3ff13351" + ], + "idxstats": [ + [ + { + "id": "test", + "single_end": false + }, + "test.idxstats:md5,df60a8c8d6621100d05178c93fb053a2" + ] + ], + "versions": [ + "versions.yml:md5,7acbcb2a8ec6436ba7b2916d3ff13351" ] - ] + } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.04.3" + "nf-test": "0.9.0", + "nextflow": "24.04.3" }, - "timestamp": "2024-02-12T18:36:41.561026" + "timestamp": "2024-07-22T14:17:41.408704" } } \ No newline at end of file diff --git a/modules/nf-core/samtools/index/main.nf b/modules/nf-core/samtools/index/main.nf index b523c21b4..e002585b9 100644 --- a/modules/nf-core/samtools/index/main.nf +++ b/modules/nf-core/samtools/index/main.nf @@ -35,10 +35,11 @@ process SAMTOOLS_INDEX { """ stub: + def args = task.ext.args ?: '' + def extension = file(input).getExtension() == 'cram' ? + "crai" : args.contains("-c") ? "csi" : "bai" """ - touch ${input}.bai - touch ${input}.crai - touch ${input}.csi + touch ${input}.${extension} cat <<-END_VERSIONS > versions.yml "${task.process}": diff --git a/modules/nf-core/samtools/index/tests/main.nf.test b/modules/nf-core/samtools/index/tests/main.nf.test index e3f918965..b59a25b38 100644 --- a/modules/nf-core/samtools/index/tests/main.nf.test +++ b/modules/nf-core/samtools/index/tests/main.nf.test @@ -5,11 +5,7 @@ nextflow_process { process "SAMTOOLS_INDEX" test("bai") { - when { - params { - outdir = "$outputDir" - } process { """ input[0] = Channel.of([ @@ -23,18 +19,13 @@ nextflow_process { then { assertAll ( { assert process.success }, - { assert snapshot(process.out.bai).match("bai") }, - { assert snapshot(process.out.versions).match("bai_versions") } + { assert snapshot(process.out).match() } ) } } test("crai") { - when { - params { - outdir = "$outputDir" - } process { """ input[0] = Channel.of([ @@ -48,20 +39,83 @@ nextflow_process { then { assertAll ( { assert process.success }, - { assert snapshot(process.out.crai).match("crai") }, - { assert snapshot(process.out.versions).match("crai_versions") } + { assert snapshot(process.out).match() } ) } } test("csi") { - config "./csi.nextflow.config" when { - params { - outdir = "$outputDir" + 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 snapshot( + file(process.out.csi[0][1]).name, + process.out.versions + ).match() } + ) + } + } + + test("bai - stub") { + options "-stub" + 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 snapshot(process.out).match() } + ) + } + } + + test("crai - stub") { + options "-stub" + when { + process { + """ + input[0] = Channel.of([ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/cram/test.paired_end.recalibrated.sorted.cram', checkIfExists: true) + ]) + """ } + } + + then { + assertAll ( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("csi - stub") { + options "-stub" + config "./csi.nextflow.config" + + when { process { """ input[0] = Channel.of([ @@ -75,8 +129,7 @@ nextflow_process { then { assertAll ( { assert process.success }, - { assert path(process.out.csi.get(0).get(1)).exists() }, - { assert snapshot(process.out.versions).match("csi_versions") } + { assert snapshot(process.out).match() } ) } } 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 52756e85c..799d199ce 100644 --- a/modules/nf-core/samtools/index/tests/main.nf.test.snap +++ b/modules/nf-core/samtools/index/tests/main.nf.test.snap @@ -1,74 +1,250 @@ { - "crai_versions": { + "csi - stub": { "content": [ - [ - "versions.yml:md5,802c9776d9c5e95314e888cf18e96d77" - ] + { + "0": [ + + ], + "1": [ + [ + { + "id": "test", + "single_end": false + }, + "test.paired_end.sorted.bam.csi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + + ], + "3": [ + "versions.yml:md5,802c9776d9c5e95314e888cf18e96d77" + ], + "bai": [ + + ], + "crai": [ + + ], + "csi": [ + [ + { + "id": "test", + "single_end": false + }, + "test.paired_end.sorted.bam.csi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,802c9776d9c5e95314e888cf18e96d77" + ] + } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.0", + "nextflow": "24.04.3" }, - "timestamp": "2024-05-28T15:42:04.203740976" + "timestamp": "2024-07-22T16:51:53.9057" }, - "csi_versions": { + "crai - stub": { "content": [ - [ - "versions.yml:md5,802c9776d9c5e95314e888cf18e96d77" - ] + { + "0": [ + + ], + "1": [ + + ], + "2": [ + [ + { + "id": "test", + "single_end": false + }, + "test.paired_end.recalibrated.sorted.cram.crai:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "3": [ + "versions.yml:md5,802c9776d9c5e95314e888cf18e96d77" + ], + "bai": [ + + ], + "crai": [ + [ + { + "id": "test", + "single_end": false + }, + "test.paired_end.recalibrated.sorted.cram.crai:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "csi": [ + + ], + "versions": [ + "versions.yml:md5,802c9776d9c5e95314e888cf18e96d77" + ] + } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.0", + "nextflow": "24.04.3" }, - "timestamp": "2024-05-28T15:42:09.57475878" + "timestamp": "2024-07-22T16:51:45.931558" }, - "crai": { + "bai - stub": { "content": [ - [ - [ - { - "id": "test", - "single_end": false - }, - "test.paired_end.recalibrated.sorted.cram.crai:md5,14bc3bd5c89cacc8f4541f9062429029" + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.paired_end.sorted.bam.bai:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + + ], + "2": [ + + ], + "3": [ + "versions.yml:md5,802c9776d9c5e95314e888cf18e96d77" + ], + "bai": [ + [ + { + "id": "test", + "single_end": false + }, + "test.paired_end.sorted.bam.bai:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "crai": [ + + ], + "csi": [ + + ], + "versions": [ + "versions.yml:md5,802c9776d9c5e95314e888cf18e96d77" ] - ] + } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.04.3" + "nf-test": "0.9.0", + "nextflow": "24.04.3" }, - "timestamp": "2024-02-12T18:41:38.446424" + "timestamp": "2024-07-22T16:51:34.807525" }, - "bai": { + "csi": { "content": [ + "test.paired_end.sorted.bam.csi", [ - [ - { - "id": "test", - "single_end": false - }, - "test.paired_end.sorted.bam.bai:md5,704c10dd1326482448ca3073fdebc2f4" - ] + "versions.yml:md5,802c9776d9c5e95314e888cf18e96d77" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.04.3" + "nf-test": "0.9.0", + "nextflow": "24.04.3" }, - "timestamp": "2024-02-12T18:40:46.579747" + "timestamp": "2024-07-22T16:52:55.688799" }, - "bai_versions": { + "crai": { "content": [ - [ - "versions.yml:md5,802c9776d9c5e95314e888cf18e96d77" - ] + { + "0": [ + + ], + "1": [ + + ], + "2": [ + [ + { + "id": "test", + "single_end": false + }, + "test.paired_end.recalibrated.sorted.cram.crai:md5,14bc3bd5c89cacc8f4541f9062429029" + ] + ], + "3": [ + "versions.yml:md5,802c9776d9c5e95314e888cf18e96d77" + ], + "bai": [ + + ], + "crai": [ + [ + { + "id": "test", + "single_end": false + }, + "test.paired_end.recalibrated.sorted.cram.crai:md5,14bc3bd5c89cacc8f4541f9062429029" + ] + ], + "csi": [ + + ], + "versions": [ + "versions.yml:md5,802c9776d9c5e95314e888cf18e96d77" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.3" + }, + "timestamp": "2024-07-22T16:51:17.609533" + }, + "bai": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.paired_end.sorted.bam.bai:md5,704c10dd1326482448ca3073fdebc2f4" + ] + ], + "1": [ + + ], + "2": [ + + ], + "3": [ + "versions.yml:md5,802c9776d9c5e95314e888cf18e96d77" + ], + "bai": [ + [ + { + "id": "test", + "single_end": false + }, + "test.paired_end.sorted.bam.bai:md5,704c10dd1326482448ca3073fdebc2f4" + ] + ], + "crai": [ + + ], + "csi": [ + + ], + "versions": [ + "versions.yml:md5,802c9776d9c5e95314e888cf18e96d77" + ] + } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.0", + "nextflow": "24.04.3" }, - "timestamp": "2024-05-28T15:41:57.929287369" + "timestamp": "2024-07-22T16:51:04.16585" } } \ No newline at end of file diff --git a/modules/nf-core/samtools/sort/main.nf b/modules/nf-core/samtools/sort/main.nf index 596c6f7e9..8e019099c 100644 --- a/modules/nf-core/samtools/sort/main.nf +++ b/modules/nf-core/samtools/sort/main.nf @@ -50,10 +50,20 @@ process SAMTOOLS_SORT { """ stub: + def args = task.ext.args ?: '' def prefix = task.ext.prefix ?: "${meta.id}" + def extension = args.contains("--output-fmt sam") ? "sam" : + args.contains("--output-fmt cram") ? "cram" : + "bam" """ - touch ${prefix}.bam - touch ${prefix}.bam.csi + touch ${prefix}.${extension} + if [ "${extension}" == "bam" ]; + then + touch ${prefix}.${extension}.csi + elif [ "${extension}" == "cram" ]; + then + touch ${prefix}.${extension}.crai + fi cat <<-END_VERSIONS > versions.yml "${task.process}": diff --git a/modules/nf-core/samtools/sort/tests/main.nf.test b/modules/nf-core/samtools/sort/tests/main.nf.test index cb97ca66b..41c2fca7f 100644 --- a/modules/nf-core/samtools/sort/tests/main.nf.test +++ b/modules/nf-core/samtools/sort/tests/main.nf.test @@ -28,16 +28,16 @@ nextflow_process { { assert process.success }, { assert snapshot( process.out.bam, - process.out.csi.collect { it.collect { it instanceof Map ? it : file(it).name } } - ).match("test_bam") - } + process.out.csi.collect { it.collect { it instanceof Map ? it : file(it).name } }, + process.out.versions + ).match()} ) } } test("cram") { - config "./nextflow.config" + config "./nextflow_cram.config" when { process { @@ -58,23 +58,20 @@ nextflow_process { assertAll ( { assert process.success }, { assert snapshot( - process.out.bam, - process.out.csi.collect { it.collect { it instanceof Map ? it : file(it).name } } - ).match("test_cram") - } + process.out.cram.collect { it.collect { it instanceof Map ? it : file(it).name } }, + process.out.crai.collect { it.collect { it instanceof Map ? it : file(it).name } }, + process.out.versions + ).match()} ) } } - test("bam_stub") { + test("bam - stub") { - config "./nextflow.config" options "-stub" + config "./nextflow.config" when { - params { - outdir = "$outputDir" - } process { """ input[0] = Channel.of([ @@ -92,8 +89,35 @@ nextflow_process { then { assertAll ( { assert process.success }, - { assert snapshot(file(process.out.bam[0][1]).name).match("bam_stub_bam") }, - { assert snapshot(process.out.versions).match("bam_stub_versions") } + { assert snapshot(process.out).match() } + ) + } + } + + test("cram - stub") { + + options "-stub" + config "./nextflow_cram.config" + + when { + process { + """ + input[0] = Channel.of([ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/cram/test.paired_end.sorted.cram', checkIfExists: true) + ]) + input[1] = Channel.of([ + [ id:'fasta' ], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) + ]) + """ + } + } + + then { + assertAll ( + { assert process.success }, + { assert snapshot(process.out).match() } ) } } diff --git a/modules/nf-core/samtools/sort/tests/main.nf.test.snap b/modules/nf-core/samtools/sort/tests/main.nf.test.snap index 5a27de1d1..da38d5d15 100644 --- a/modules/nf-core/samtools/sort/tests/main.nf.test.snap +++ b/modules/nf-core/samtools/sort/tests/main.nf.test.snap @@ -7,54 +7,159 @@ "id": "test", "single_end": false }, - "test.sorted.bam:md5,21c992d59615936b99f2ad008aa54400" + "test.sorted.cram" ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test.sorted.cram.crai" + ] + ], + [ + "versions.yml:md5,7a360de20e1d7a6f15a5e8fbe0a9c062" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.0", + "nextflow": "24.04.3" }, - "timestamp": "2024-05-31T08:13:54.512837189" + "timestamp": "2024-07-22T17:19:37.196205" }, - "bam_stub_bam": { + "bam - stub": { "content": [ - "test.sorted.bam" + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.sorted.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + + ], + "2": [ + + ], + "3": [ + [ + { + "id": "test", + "single_end": false + }, + "test.sorted.bam.csi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "4": [ + "versions.yml:md5,7a360de20e1d7a6f15a5e8fbe0a9c062" + ], + "bam": [ + [ + { + "id": "test", + "single_end": false + }, + "test.sorted.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "crai": [ + + ], + "cram": [ + + ], + "csi": [ + [ + { + "id": "test", + "single_end": false + }, + "test.sorted.bam.csi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,7a360de20e1d7a6f15a5e8fbe0a9c062" + ] + } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.0", + "nextflow": "24.04.3" }, - "timestamp": "2024-05-31T07:29:00.761845507" + "timestamp": "2024-07-22T15:54:46.580756" }, - "test_cram": { + "cram - stub": { "content": [ - [ - [ - { - "id": "test", - "single_end": false - }, - "test.sorted.bam:md5,22b2093be34a7637f5fbc84272b89d06" - ] - ], - [ - [ - { - "id": "test", - "single_end": false - }, - "test.sorted.bam.csi" + { + "0": [ + + ], + "1": [ + [ + { + "id": "test", + "single_end": false + }, + "test.sorted.cram:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + [ + { + "id": "test", + "single_end": false + }, + "test.sorted.cram.crai:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "3": [ + + ], + "4": [ + "versions.yml:md5,7a360de20e1d7a6f15a5e8fbe0a9c062" + ], + "bam": [ + + ], + "crai": [ + [ + { + "id": "test", + "single_end": false + }, + "test.sorted.cram.crai:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "cram": [ + [ + { + "id": "test", + "single_end": false + }, + "test.sorted.cram:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "csi": [ + + ], + "versions": [ + "versions.yml:md5,7a360de20e1d7a6f15a5e8fbe0a9c062" ] - ] + } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.0", + "nextflow": "24.04.3" }, - "timestamp": "2024-05-31T09:16:51.924951855" + "timestamp": "2024-07-22T15:57:30.505698" }, - "test_bam": { + "bam": { "content": [ [ [ @@ -73,42 +178,15 @@ }, "test.sorted.bam.csi" ] - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" - }, - "timestamp": "2024-05-31T08:28:12.15952312" - }, - "bam_stub_versions": { - "content": [ + ], [ "versions.yml:md5,7a360de20e1d7a6f15a5e8fbe0a9c062" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" - }, - "timestamp": "2024-05-31T07:29:00.765038811" - }, - "bam": { - "content": [ - [ - [ - { - "id": "test", - "single_end": false - }, - "test.sorted.bam:md5,21c992d59615936b99f2ad008aa54400" - ] - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.0", + "nextflow": "24.04.3" }, - "timestamp": "2024-05-31T08:13:48.538030517" + "timestamp": "2024-07-22T15:54:25.872954" } } \ No newline at end of file diff --git a/modules/nf-core/samtools/sort/tests/nextflow_cram.config b/modules/nf-core/samtools/sort/tests/nextflow_cram.config new file mode 100644 index 000000000..3a8c0188b --- /dev/null +++ b/modules/nf-core/samtools/sort/tests/nextflow_cram.config @@ -0,0 +1,8 @@ +process { + + withName: SAMTOOLS_SORT { + ext.prefix = { "${meta.id}.sorted" } + ext.args = "--write-index --output-fmt cram" + } + +} diff --git a/modules/nf-core/samtools/stats/tests/main.nf.test b/modules/nf-core/samtools/stats/tests/main.nf.test index a28964666..f4dc5bbf0 100644 --- a/modules/nf-core/samtools/stats/tests/main.nf.test +++ b/modules/nf-core/samtools/stats/tests/main.nf.test @@ -7,9 +7,6 @@ nextflow_process { test("bam") { when { - params { - outdir = "$outputDir" - } process { """ input[0] = Channel.of([ @@ -33,9 +30,59 @@ nextflow_process { test("cram") { when { - params { - outdir = "$outputDir" + process { + """ + input[0] = Channel.of([ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/cram/test.paired_end.recalibrated.sorted.cram', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/cram/test.paired_end.recalibrated.sorted.cram.crai', checkIfExists: true) + ]) + input[1] = Channel.of([ + [ id:'genome' ], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) + ]) + """ } + } + + then { + assertAll( + {assert process.success}, + {assert snapshot(process.out).match()} + ) + } + } + + test("bam - stub") { + + options "-stub" + + 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), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam.bai', checkIfExists: true) + ]) + input[1] = [[],[]] + """ + } + } + + then { + assertAll( + {assert process.success}, + {assert snapshot(process.out).match()} + ) + } + } + + test("cram - stub") { + + options "-stub" + + when { process { """ input[0] = Channel.of([ diff --git a/modules/nf-core/samtools/stats/tests/main.nf.test.snap b/modules/nf-core/samtools/stats/tests/main.nf.test.snap index 2747fd6c6..3828f3788 100644 --- a/modules/nf-core/samtools/stats/tests/main.nf.test.snap +++ b/modules/nf-core/samtools/stats/tests/main.nf.test.snap @@ -29,10 +29,80 @@ } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.0", + "nextflow": "24.04.3" }, - "timestamp": "2024-05-28T15:45:24.403941966" + "timestamp": "2024-07-22T14:20:24.885816" + }, + "bam - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.stats:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + "versions.yml:md5,b3b70b126f867fdbb7dcea5e36e49d4a" + ], + "stats": [ + [ + { + "id": "test", + "single_end": false + }, + "test.stats:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,b3b70b126f867fdbb7dcea5e36e49d4a" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.3" + }, + "timestamp": "2024-07-22T14:20:39.310713" + }, + "cram - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.stats:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + "versions.yml:md5,b3b70b126f867fdbb7dcea5e36e49d4a" + ], + "stats": [ + [ + { + "id": "test", + "single_end": false + }, + "test.stats:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,b3b70b126f867fdbb7dcea5e36e49d4a" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.3" + }, + "timestamp": "2024-07-22T14:21:04.771199" }, "bam": { "content": [ @@ -64,9 +134,9 @@ } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.0", + "nextflow": "24.04.3" }, - "timestamp": "2024-05-28T15:45:06.711251947" + "timestamp": "2024-07-22T14:19:06.645466" } } \ No newline at end of file diff --git a/modules/nf-core/star/align/main.nf b/modules/nf-core/star/align/main.nf index 8e9c48b1c..ae67e0040 100644 --- a/modules/nf-core/star/align/main.nf +++ b/modules/nf-core/star/align/main.nf @@ -81,6 +81,8 @@ process STAR_ALIGN { stub: def prefix = task.ext.prefix ?: "${meta.id}" """ + echo "" | gzip > ${prefix}.unmapped_1.fastq.gz + echo "" | gzip > ${prefix}.unmapped_2.fastq.gz touch ${prefix}Xd.out.bam touch ${prefix}.Log.final.out touch ${prefix}.Log.out @@ -89,8 +91,6 @@ process STAR_ALIGN { touch ${prefix}.toTranscriptome.out.bam touch ${prefix}.Aligned.unsort.out.bam touch ${prefix}.Aligned.sortedByCoord.out.bam - touch ${prefix}.unmapped_1.fastq.gz - touch ${prefix}.unmapped_2.fastq.gz touch ${prefix}.tab touch ${prefix}.SJ.out.tab touch ${prefix}.ReadsPerGene.out.tab diff --git a/modules/nf-core/star/align/tests/main.nf.test b/modules/nf-core/star/align/tests/main.nf.test index 4cd6f2a52..69f655ef4 100644 --- a/modules/nf-core/star/align/tests/main.nf.test +++ b/modules/nf-core/star/align/tests/main.nf.test @@ -4,27 +4,367 @@ nextflow_process { script "../main.nf" process "STAR_ALIGN" - setup { - run("STAR_GENOMEGENERATE") { - script "../../../star/genomegenerate/main.nf" + test("homo_sapiens - single_end") { + config "./nextflow.config" + + setup { + run("STAR_GENOMEGENERATE") { + script "../../../star/genomegenerate/main.nf" + process { + """ + input[0] = Channel.of([ + [ id:'test_fasta' ], + [ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) ] + ]) + input[1] = Channel.of([ + [ id:'test_gtf' ], + [ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.gtf', checkIfExists: true) ] + ]) + """ + } + } + } + + when { process { """ input[0] = Channel.of([ - [ id:'test_fasta' ], - [ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) ] + [ id:'test', single_end:true ], // meta map + [ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/fastq/test_rnaseq_1.fastq.gz', checkIfExists: true) ] ]) - input[1] = Channel.of([ + input[1] = STAR_GENOMEGENERATE.out.index + input[2] = Channel.of([ [ id:'test_gtf' ], [ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.gtf', checkIfExists: true) ] ]) + input[3] = false + input[4] = 'illumina' + input[5] = false """ } } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + file(process.out.log_final[0][1]).name, + file(process.out.log_out[0][1]).name, + file(process.out.log_progress[0][1]).name, + process.out.bam, + process.out.bam_sorted, + process.out.bam_transcript, + process.out.bam_unsorted, + process.out.bedgraph, + process.out.fastq, + process.out.junction, + process.out.read_per_gene_tab, + process.out.sam, + process.out.spl_junc_tab, + process.out.tab, + process.out.wig, + process.out.versions + ).match() } + ) + } } - test("homo_sapiens - single_end") { + test("homo_sapiens - paired_end") { + config "./nextflow.config" + + setup { + run("STAR_GENOMEGENERATE") { + script "../../../star/genomegenerate/main.nf" + process { + """ + input[0] = Channel.of([ + [ id:'test_fasta' ], + [ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) ] + ]) + input[1] = Channel.of([ + [ id:'test_gtf' ], + [ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.gtf', checkIfExists: true) ] + ]) + """ + } + } + } + + when { + process { + """ + input[0] = Channel.of([ + [ id:'test', single_end:false ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/fastq/test_rnaseq_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/fastq/test_rnaseq_2.fastq.gz', checkIfExists: true) + ] + ]) + input[1] = STAR_GENOMEGENERATE.out.index + input[2] = Channel.of([ + [ id:'test_gtf' ], + [ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.gtf', checkIfExists: true) ] + ]) + input[3] = false + input[4] = 'illumina' + input[5] = false + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + file(process.out.log_final[0][1]).name, + file(process.out.log_out[0][1]).name, + file(process.out.log_progress[0][1]).name, + process.out.bam, + process.out.bam_sorted, + process.out.bam_transcript, + process.out.bam_unsorted, + process.out.bedgraph, + process.out.fastq, + process.out.junction, + process.out.read_per_gene_tab, + process.out.sam, + process.out.spl_junc_tab, + process.out.tab, + process.out.wig, + process.out.versions + ).match() } + ) + } + } + + test("homo_sapiens - paired_end - arriba") { + config "./nextflow.arriba.config" + + setup { + run("STAR_GENOMEGENERATE") { + script "../../../star/genomegenerate/main.nf" + process { + """ + input[0] = Channel.of([ + [ id:'test_fasta' ], + [ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) ] + ]) + input[1] = Channel.of([ + [ id:'test_gtf' ], + [ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.gtf', checkIfExists: true) ] + ]) + """ + } + } + } + + when { + process { + """ + input[0] = Channel.of([ + [ id:'test', single_end:false ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/fastq/test_rnaseq_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/fastq/test_rnaseq_2.fastq.gz', checkIfExists: true) + ] + ]) + input[1] = STAR_GENOMEGENERATE.out.index + input[2] = Channel.of([ + [ id:'test_gtf' ], + [ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.gtf', checkIfExists: true) ] + ]) + input[3] = false + input[4] = 'illumina' + input[5] = false + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + file(process.out.log_final[0][1]).name, + file(process.out.log_out[0][1]).name, + file(process.out.log_progress[0][1]).name, + process.out.bam, + process.out.bam_sorted, + process.out.bam_transcript, + process.out.bam_unsorted, + process.out.bedgraph, + process.out.fastq, + process.out.junction, + process.out.read_per_gene_tab, + process.out.sam, + process.out.spl_junc_tab, + process.out.tab, + process.out.wig, + process.out.versions + ).match() } + ) + } + } + + test("homo_sapiens - paired_end - starfusion") { + config "./nextflow.starfusion.config" + + setup { + run("STAR_GENOMEGENERATE") { + script "../../../star/genomegenerate/main.nf" + process { + """ + input[0] = Channel.of([ + [ id:'test_fasta' ], + [ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) ] + ]) + input[1] = Channel.of([ + [ id:'test_gtf' ], + [ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.gtf', checkIfExists: true) ] + ]) + """ + } + } + } + + when { + process { + """ + input[0] = Channel.of([ + [ id:'test', single_end:false ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/fastq/test_rnaseq_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/fastq/test_rnaseq_2.fastq.gz', checkIfExists: true) + ] + ]) + input[1] = STAR_GENOMEGENERATE.out.index + input[2] = Channel.of([ + [ id:'test_gtf' ], + [ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.gtf', checkIfExists: true) ] + ]) + input[3] = false + input[4] = 'illumina' + input[5] = false + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + file(process.out.log_final[0][1]).name, + file(process.out.log_out[0][1]).name, + file(process.out.log_progress[0][1]).name, + process.out.bam, + process.out.bam_sorted, + process.out.bam_transcript, + process.out.bam_unsorted, + process.out.bedgraph, + process.out.fastq, + process.out.junction, + process.out.read_per_gene_tab, + process.out.sam, + process.out.spl_junc_tab, + process.out.tab, + process.out.wig, + process.out.versions + ).match() } + ) + } + } + + test("homo_sapiens - paired_end - multiple") { config "./nextflow.config" + setup { + run("STAR_GENOMEGENERATE") { + script "../../../star/genomegenerate/main.nf" + process { + """ + input[0] = Channel.of([ + [ id:'test_fasta' ], + [ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) ] + ]) + input[1] = Channel.of([ + [ id:'test_gtf' ], + [ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.gtf', checkIfExists: true) ] + ]) + """ + } + } + } + + when { + process { + """ + input[0] = Channel.of([ + [ id:'test', single_end:false ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/fastq/test_rnaseq_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/fastq/test_rnaseq_2.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/fastq/test_rnaseq_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/fastq/test_rnaseq_2.fastq.gz', checkIfExists: true) + ] + ]) + input[1] = STAR_GENOMEGENERATE.out.index + input[2] = Channel.of([ + [ id:'test_gtf' ], + [ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.gtf', checkIfExists: true) ] + ]) + input[3] = false + input[4] = 'illumina' + input[5] = false + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + file(process.out.log_final[0][1]).name, + file(process.out.log_out[0][1]).name, + file(process.out.log_progress[0][1]).name, + process.out.bam, + process.out.bam_sorted, + process.out.bam_transcript, + process.out.bam_unsorted, + process.out.bedgraph, + process.out.fastq, + process.out.junction, + process.out.read_per_gene_tab, + process.out.sam, + process.out.spl_junc_tab, + process.out.tab, + process.out.wig, + process.out.versions + ).match() } + ) + } + } + + test("homo_sapiens - single_end - stub") { + options "-stub" + config "./nextflow.config" + + setup { + run("STAR_GENOMEGENERATE") { + script "../../../star/genomegenerate/main.nf" + process { + """ + input[0] = Channel.of([ + [ id:'test_fasta' ], + [ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) ] + ]) + input[1] = Channel.of([ + [ id:'test_gtf' ], + [ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.gtf', checkIfExists: true) ] + ]) + """ + } + } + } + when { process { """ @@ -47,29 +387,33 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot(file(process.out.log_final[0][1]).name).match("homo_sapiens - single_end - log_final") }, - { assert snapshot(file(process.out.log_out[0][1]).name).match("homo_sapiens - single_end - log_out") }, - { assert snapshot(process.out.bam).match("homo_sapiens - single_end - bam") }, - { assert snapshot(process.out.bam_sorted).match("homo_sapiens - single_end - bam_sorted") }, - { assert snapshot(process.out.bam_transcript).match("homo_sapiens - single_end - bam_transcript") }, - { assert snapshot(process.out.bam_unsorted).match("homo_sapiens - single_end - bam_unsorted") }, - { assert snapshot(process.out.bedgraph).match("homo_sapiens - single_end - bedgraph") }, - { assert snapshot(process.out.fastq).match("homo_sapiens - single_end - fastq") }, - { assert snapshot(process.out.junction).match("homo_sapiens - single_end - junction") }, - { assert snapshot(process.out.log_progress).match("homo_sapiens - single_end - log_progress") }, - { assert snapshot(process.out.read_per_gene_tab).match("homo_sapiens - single_end - read_per_gene_tab") }, - { assert snapshot(process.out.sam).match("homo_sapiens - single_end - sam") }, - { assert snapshot(process.out.spl_junc_tab).match("homo_sapiens - single_end - spl_junc_tab") }, - { assert snapshot(process.out.tab).match("homo_sapiens - single_end - tab") }, - { assert snapshot(process.out.wig).match("homo_sapiens - single_end - wig") }, - { assert snapshot(process.out.versions).match("homo_sapiens - single_end - versions") } + { assert snapshot(process.out).match() } ) } } - test("homo_sapiens - paired_end") { + test("homo_sapiens - paired_end - stub") { + options "-stub" config "./nextflow.config" + setup { + run("STAR_GENOMEGENERATE") { + script "../../../star/genomegenerate/main.nf" + process { + """ + input[0] = Channel.of([ + [ id:'test_fasta' ], + [ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) ] + ]) + input[1] = Channel.of([ + [ id:'test_gtf' ], + [ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.gtf', checkIfExists: true) ] + ]) + """ + } + } + } + when { process { """ @@ -95,29 +439,33 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot(file(process.out.log_final[0][1]).name).match("homo_sapiens - paired_end - log_final") }, - { assert snapshot(file(process.out.log_out[0][1]).name).match("homo_sapiens - paired_end - log_out") }, - { assert snapshot(process.out.bam).match("homo_sapiens - paired_end - bam") }, - { assert snapshot(process.out.bam_sorted).match("homo_sapiens - paired_end - bam_sorted") }, - { assert snapshot(process.out.bam_transcript).match("homo_sapiens - paired_end - bam_transcript") }, - { assert snapshot(process.out.bam_unsorted).match("homo_sapiens - paired_end - bam_unsorted") }, - { assert snapshot(process.out.bedgraph).match("homo_sapiens - paired_end - bedgraph") }, - { assert snapshot(process.out.fastq).match("homo_sapiens - paired_end - fastq") }, - { assert snapshot(process.out.junction).match("homo_sapiens - paired_end - junction") }, - { assert snapshot(process.out.log_progress).match("homo_sapiens - paired_end - log_progress") }, - { assert snapshot(process.out.read_per_gene_tab).match("homo_sapiens - paired_end - read_per_gene_tab") }, - { assert snapshot(process.out.sam).match("homo_sapiens - paired_end - sam") }, - { assert snapshot(process.out.spl_junc_tab).match("homo_sapiens - paired_end - spl_junc_tab") }, - { assert snapshot(process.out.tab).match("homo_sapiens - paired_end - tab") }, - { assert snapshot(process.out.wig).match("homo_sapiens - paired_end - wig") }, - { assert snapshot(process.out.versions).match("homo_sapiens - paired_end - versions") } + { assert snapshot(process.out).match() } ) } } - test("homo_sapiens - paired_end - arriba") { + test("homo_sapiens - paired_end - arriba - stub") { + options "-stub" config "./nextflow.arriba.config" + setup { + run("STAR_GENOMEGENERATE") { + script "../../../star/genomegenerate/main.nf" + process { + """ + input[0] = Channel.of([ + [ id:'test_fasta' ], + [ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) ] + ]) + input[1] = Channel.of([ + [ id:'test_gtf' ], + [ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.gtf', checkIfExists: true) ] + ]) + """ + } + } + } + when { process { """ @@ -143,29 +491,33 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot(file(process.out.log_final[0][1]).name).match("homo_sapiens - paired_end - arriba - log_final") }, - { assert snapshot(file(process.out.log_out[0][1]).name).match("homo_sapiens - paired_end - arriba - log_out") }, - { assert snapshot(file(process.out.log_progress[0][1]).name).match("homo_sapiens - paired_end - arriba - log_progress") }, - { assert snapshot(process.out.bam).match("homo_sapiens - paired_end - arriba - bam") }, - { assert snapshot(process.out.bam_sorted).match("homo_sapiens - paired_end - arriba - bam_sorted") }, - { assert snapshot(process.out.bam_transcript).match("homo_sapiens - paired_end - arriba - bam_transcript") }, - { assert snapshot(process.out.bam_unsorted).match("homo_sapiens - paired_end - arriba - bam_unsorted") }, - { assert snapshot(process.out.bedgraph).match("homo_sapiens - paired_end - arriba - bedgraph") }, - { assert snapshot(process.out.fastq).match("homo_sapiens - paired_end - arriba - fastq") }, - { assert snapshot(process.out.junction).match("homo_sapiens - paired_end - arriba - junction") }, - { assert snapshot(process.out.read_per_gene_tab).match("homo_sapiens - paired_end - arriba - read_per_gene_tab") }, - { assert snapshot(process.out.sam).match("homo_sapiens - paired_end - arriba - sam") }, - { assert snapshot(process.out.spl_junc_tab).match("homo_sapiens - paired_end - arriba - spl_junc_tab") }, - { assert snapshot(process.out.tab).match("homo_sapiens - paired_end - arriba - tab") }, - { assert snapshot(process.out.wig).match("homo_sapiens - paired_end - arriba - wig") }, - { assert snapshot(process.out.versions).match("homo_sapiens - paired_end - arriba - versions") } + { assert snapshot(process.out).match() } ) } } - test("homo_sapiens - paired_end - starfusion") { + test("homo_sapiens - paired_end - starfusion - stub") { + options "-stub" config "./nextflow.starfusion.config" + setup { + run("STAR_GENOMEGENERATE") { + script "../../../star/genomegenerate/main.nf" + process { + """ + input[0] = Channel.of([ + [ id:'test_fasta' ], + [ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) ] + ]) + input[1] = Channel.of([ + [ id:'test_gtf' ], + [ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.gtf', checkIfExists: true) ] + ]) + """ + } + } + } + when { process { """ @@ -191,29 +543,33 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot(file(process.out.log_final[0][1]).name).match("homo_sapiens - paired_end - starfusion - log_final") }, - { assert snapshot(file(process.out.log_out[0][1]).name).match("homo_sapiens - paired_end - starfusion - log_out") }, - { assert snapshot(file(process.out.log_progress[0][1]).name).match("homo_sapiens - paired_end - starfusion - log_progress") }, - { assert snapshot(process.out.bam).match("homo_sapiens - paired_end - starfusion - bam") }, - { assert snapshot(process.out.bam_sorted).match("homo_sapiens - paired_end - starfusion - bam_sorted") }, - { assert snapshot(process.out.bam_transcript).match("homo_sapiens - paired_end - starfusion - bam_transcript") }, - { assert snapshot(process.out.bam_unsorted).match("homo_sapiens - paired_end - starfusion - bam_unsorted") }, - { assert snapshot(process.out.bedgraph).match("homo_sapiens - paired_end - starfusion - bedgraph") }, - { assert snapshot(process.out.fastq).match("homo_sapiens - paired_end - starfusion - fastq") }, - { assert snapshot(process.out.junction).match("homo_sapiens - paired_end - starfusion - junction") }, - { assert snapshot(process.out.read_per_gene_tab).match("homo_sapiens - paired_end - starfusion - read_per_gene_tab") }, - { assert snapshot(process.out.sam).match("homo_sapiens - paired_end - starfusion - sam") }, - { assert snapshot(process.out.spl_junc_tab).match("homo_sapiens - paired_end - starfusion - spl_junc_tab") }, - { assert snapshot(process.out.tab).match("homo_sapiens - paired_end - starfusion - tab") }, - { assert snapshot(process.out.wig).match("homo_sapiens - paired_end - starfusion - wig") }, - { assert snapshot(process.out.versions).match("homo_sapiens - paired_end - starfusion - versions") } + { assert snapshot(process.out).match() } ) } } - test("homo_sapiens - paired_end - multiple") { + test("homo_sapiens - paired_end - multiple - stub") { + options "-stub" config "./nextflow.config" + setup { + run("STAR_GENOMEGENERATE") { + script "../../../star/genomegenerate/main.nf" + process { + """ + input[0] = Channel.of([ + [ id:'test_fasta' ], + [ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) ] + ]) + input[1] = Channel.of([ + [ id:'test_gtf' ], + [ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.gtf', checkIfExists: true) ] + ]) + """ + } + } + } + when { process { """ @@ -241,22 +597,7 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot(file(process.out.log_final[0][1]).name).match("homo_sapiens - paired_end - multiple - log_final") }, - { assert snapshot(file(process.out.log_out[0][1]).name).match("homo_sapiens - paired_end - multiple - log_out") }, - { assert snapshot(file(process.out.log_progress[0][1]).name).match("homo_sapiens - paired_end - multiple - log_progress") }, - { assert snapshot(process.out.bam).match("homo_sapiens - paired_end - multiple - bam") }, - { assert snapshot(process.out.bam_sorted).match("homo_sapiens - paired_end - multiple - bam_sorted") }, - { assert snapshot(process.out.bam_transcript).match("homo_sapiens - paired_end - multiple - bam_transcript") }, - { assert snapshot(process.out.bam_unsorted).match("homo_sapiens - paired_end - multiple - bam_unsorted") }, - { assert snapshot(process.out.bedgraph).match("homo_sapiens - paired_end - multiple - bedgraph") }, - { assert snapshot(process.out.fastq).match("homo_sapiens - paired_end - multiple - fastq") }, - { assert snapshot(process.out.junction).match("homo_sapiens - paired_end - multiple - junction") }, - { assert snapshot(process.out.read_per_gene_tab).match("homo_sapiens - paired_end - multiple - read_per_gene_tab") }, - { assert snapshot(process.out.sam).match("homo_sapiens - paired_end - multiple - sam") }, - { assert snapshot(process.out.spl_junc_tab).match("homo_sapiens - paired_end - multiple - spl_junc_tab") }, - { assert snapshot(process.out.tab).match("homo_sapiens - paired_end - multiple - tab") }, - { assert snapshot(process.out.wig).match("homo_sapiens - paired_end - multiple - wig") }, - { assert snapshot(process.out.versions).match("homo_sapiens - paired_end - multiple - versions") } + { assert snapshot(process.out).match() } ) } } diff --git a/modules/nf-core/star/align/tests/main.nf.test.snap b/modules/nf-core/star/align/tests/main.nf.test.snap index 08edb914b..c814eb56c 100644 --- a/modules/nf-core/star/align/tests/main.nf.test.snap +++ b/modules/nf-core/star/align/tests/main.nf.test.snap @@ -1,382 +1,1170 @@ { - "homo_sapiens - paired_end - multiple - bam_sorted": { + "homo_sapiens - single_end - stub": { "content": [ - [ - [ - { - "id": "test", - "single_end": false - }, - "test.Aligned.sortedByCoord.out.bam:md5,ab07c21d63ab0a6c07d171d213c81d5a" + { + "0": [ + [ + { + "id": "test", + "single_end": true + }, + "test.Log.final.out:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": true + }, + "test.Log.out:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "10": [ + [ + { + "id": "test", + "single_end": true + }, + "test.SJ.out.tab:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "11": [ + [ + { + "id": "test", + "single_end": true + }, + "test.ReadsPerGene.out.tab:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "12": [ + [ + { + "id": "test", + "single_end": true + }, + "test.Chimeric.out.junction:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "13": [ + [ + { + "id": "test", + "single_end": true + }, + "test.out.sam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "14": [ + [ + { + "id": "test", + "single_end": true + }, + "test.Signal.UniqueMultiple.str1.out.wig:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "15": [ + [ + { + "id": "test", + "single_end": true + }, + "test.Signal.UniqueMultiple.str1.out.bg:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + [ + { + "id": "test", + "single_end": true + }, + "test.Log.progress.out:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "3": [ + "versions.yml:md5,2e6b6d8809f5a17f38f4d27c45dcb22f" + ], + "4": [ + [ + { + "id": "test", + "single_end": true + }, + [ + "test.Aligned.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e", + "testXd.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "5": [ + [ + { + "id": "test", + "single_end": true + }, + [ + "test.Aligned.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "6": [ + [ + { + "id": "test", + "single_end": true + }, + "test.toTranscriptome.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "7": [ + [ + { + "id": "test", + "single_end": true + }, + "test.Aligned.unsort.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "8": [ + [ + { + "id": "test", + "single_end": true + }, + [ + "test.unmapped_1.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "test.unmapped_2.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ] + ], + "9": [ + [ + { + "id": "test", + "single_end": true + }, + [ + "test.ReadsPerGene.out.tab:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.SJ.out.tab:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.tab:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "bam": [ + [ + { + "id": "test", + "single_end": true + }, + [ + "test.Aligned.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e", + "testXd.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "bam_sorted": [ + [ + { + "id": "test", + "single_end": true + }, + [ + "test.Aligned.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "bam_transcript": [ + [ + { + "id": "test", + "single_end": true + }, + "test.toTranscriptome.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "bam_unsorted": [ + [ + { + "id": "test", + "single_end": true + }, + "test.Aligned.unsort.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "bedgraph": [ + [ + { + "id": "test", + "single_end": true + }, + "test.Signal.UniqueMultiple.str1.out.bg:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "fastq": [ + [ + { + "id": "test", + "single_end": true + }, + [ + "test.unmapped_1.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "test.unmapped_2.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ] + ], + "junction": [ + [ + { + "id": "test", + "single_end": true + }, + "test.Chimeric.out.junction:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "log_final": [ + [ + { + "id": "test", + "single_end": true + }, + "test.Log.final.out:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "log_out": [ + [ + { + "id": "test", + "single_end": true + }, + "test.Log.out:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "log_progress": [ + [ + { + "id": "test", + "single_end": true + }, + "test.Log.progress.out:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "read_per_gene_tab": [ + [ + { + "id": "test", + "single_end": true + }, + "test.ReadsPerGene.out.tab:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "sam": [ + [ + { + "id": "test", + "single_end": true + }, + "test.out.sam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "spl_junc_tab": [ + [ + { + "id": "test", + "single_end": true + }, + "test.SJ.out.tab:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "tab": [ + [ + { + "id": "test", + "single_end": true + }, + [ + "test.ReadsPerGene.out.tab:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.SJ.out.tab:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.tab:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "versions": [ + "versions.yml:md5,2e6b6d8809f5a17f38f4d27c45dcb22f" + ], + "wig": [ + [ + { + "id": "test", + "single_end": true + }, + "test.Signal.UniqueMultiple.str1.out.wig:md5,d41d8cd98f00b204e9800998ecf8427e" + ] ] - ] + } ], - "timestamp": "2023-12-04T18:01:19.968225733" + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.3" + }, + "timestamp": "2024-07-22T15:16:04.712114" }, - "homo_sapiens - paired_end - multiple - wig": { + "homo_sapiens - paired_end - arriba - stub": { "content": [ - [ - - ] + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.Log.final.out:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": false + }, + "test.Log.out:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "10": [ + [ + { + "id": "test", + "single_end": false + }, + "test.SJ.out.tab:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "11": [ + [ + { + "id": "test", + "single_end": false + }, + "test.ReadsPerGene.out.tab:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "12": [ + [ + { + "id": "test", + "single_end": false + }, + "test.Chimeric.out.junction:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "13": [ + [ + { + "id": "test", + "single_end": false + }, + "test.out.sam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "14": [ + [ + { + "id": "test", + "single_end": false + }, + "test.Signal.UniqueMultiple.str1.out.wig:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "15": [ + [ + { + "id": "test", + "single_end": false + }, + "test.Signal.UniqueMultiple.str1.out.bg:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + [ + { + "id": "test", + "single_end": false + }, + "test.Log.progress.out:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "3": [ + "versions.yml:md5,2e6b6d8809f5a17f38f4d27c45dcb22f" + ], + "4": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test.Aligned.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e", + "testXd.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "5": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test.Aligned.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "6": [ + [ + { + "id": "test", + "single_end": false + }, + "test.toTranscriptome.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "7": [ + [ + { + "id": "test", + "single_end": false + }, + "test.Aligned.unsort.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "8": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test.unmapped_1.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "test.unmapped_2.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ] + ], + "9": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test.ReadsPerGene.out.tab:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.SJ.out.tab:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.tab:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "bam": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test.Aligned.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e", + "testXd.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "bam_sorted": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test.Aligned.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "bam_transcript": [ + [ + { + "id": "test", + "single_end": false + }, + "test.toTranscriptome.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "bam_unsorted": [ + [ + { + "id": "test", + "single_end": false + }, + "test.Aligned.unsort.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "bedgraph": [ + [ + { + "id": "test", + "single_end": false + }, + "test.Signal.UniqueMultiple.str1.out.bg:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "fastq": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test.unmapped_1.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "test.unmapped_2.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ] + ], + "junction": [ + [ + { + "id": "test", + "single_end": false + }, + "test.Chimeric.out.junction:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "log_final": [ + [ + { + "id": "test", + "single_end": false + }, + "test.Log.final.out:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "log_out": [ + [ + { + "id": "test", + "single_end": false + }, + "test.Log.out:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "log_progress": [ + [ + { + "id": "test", + "single_end": false + }, + "test.Log.progress.out:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "read_per_gene_tab": [ + [ + { + "id": "test", + "single_end": false + }, + "test.ReadsPerGene.out.tab:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "sam": [ + [ + { + "id": "test", + "single_end": false + }, + "test.out.sam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "spl_junc_tab": [ + [ + { + "id": "test", + "single_end": false + }, + "test.SJ.out.tab:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "tab": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test.ReadsPerGene.out.tab:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.SJ.out.tab:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.tab:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "versions": [ + "versions.yml:md5,2e6b6d8809f5a17f38f4d27c45dcb22f" + ], + "wig": [ + [ + { + "id": "test", + "single_end": false + }, + "test.Signal.UniqueMultiple.str1.out.wig:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + } ], - "timestamp": "2023-11-23T13:29:01.857804" + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.3" + }, + "timestamp": "2024-07-22T15:16:28.874293" }, - "homo_sapiens - paired_end - arriba - tab": { + "homo_sapiens - single_end": { "content": [ + "test.Log.final.out", + "test.Log.out", + "test.Log.progress.out", [ [ { "id": "test", - "single_end": false + "single_end": true }, - "test.SJ.out.tab:md5,5155c9fd1f787ad6d7d80987fb06219c" + "test.Aligned.sortedByCoord.out.bam:md5,c6cfaccaf91bc7fdabed3cfe236d4535" ] - ] - ], - "timestamp": "2023-12-04T17:56:12.347549723" - }, - "homo_sapiens - single_end - wig": { - "content": [ + ], [ - - ] - ], - "timestamp": "2023-11-23T13:22:55.24701" - }, - "homo_sapiens - paired_end - sam": { - "content": [ + [ + { + "id": "test", + "single_end": true + }, + "test.Aligned.sortedByCoord.out.bam:md5,c6cfaccaf91bc7fdabed3cfe236d4535" + ] + ], [ - ] - ], - "timestamp": "2023-11-23T13:23:33.383818" - }, - "homo_sapiens - paired_end - arriba - versions": { - "content": [ + ], [ - "versions.yml:md5,2e6b6d8809f5a17f38f4d27c45dcb22f" - ] - ], - "timestamp": "2023-12-04T17:56:12.431212643" - }, - "homo_sapiens - paired_end - multiple - bedgraph": { - "content": [ + + ], [ [ { "id": "test", - "single_end": false + "single_end": true }, [ - "test.Signal.Unique.str1.out.bg:md5,d7bf8b70b436ca048a62513e1d0ece3a", - "test.Signal.UniqueMultiple.str1.out.bg:md5,686d58493b9eb445b56ace4d67f76ef6" + "test.Signal.Unique.str1.out.bg:md5,c56fc1472776fb927eaf62d973da5f9a", + "test.Signal.UniqueMultiple.str1.out.bg:md5,e93373cf6f2a2a9506e2efdb260cdd4f" ] ] - ] - ], - "timestamp": "2023-12-04T18:01:20.07119229" - }, - "homo_sapiens - paired_end - read_per_gene_tab": { - "content": [ + ], [ - ] - ], - "timestamp": "2023-11-23T13:23:33.368841" - }, - "homo_sapiens - paired_end - arriba - bedgraph": { - "content": [ + ], [ - ] - ], - "timestamp": "2023-11-23T13:25:07.102537" - }, - "homo_sapiens - single_end - junction": { - "content": [ + ], [ - ] - ], - "timestamp": "2023-11-23T13:22:55.185369" - }, - "homo_sapiens - paired_end - arriba - spl_junc_tab": { - "content": [ + ], + [ + + ], [ [ { "id": "test", - "single_end": false + "single_end": true }, - "test.SJ.out.tab:md5,5155c9fd1f787ad6d7d80987fb06219c" + "test.SJ.out.tab:md5,75a516ab950fb958f40b29996474949c" ] - ] - ], - "timestamp": "2023-12-04T17:56:12.268388251" - }, - "homo_sapiens - single_end - sam": { - "content": [ + ], [ - - ] - ], - "timestamp": "2023-11-23T13:22:55.216183" - }, - "homo_sapiens - paired_end - fastq": { - "content": [ + [ + { + "id": "test", + "single_end": true + }, + "test.SJ.out.tab:md5,75a516ab950fb958f40b29996474949c" + ] + ], [ - ] - ], - "timestamp": "2023-11-23T13:23:33.327236" - }, - "homo_sapiens - single_end - versions": { - "content": [ + ], [ "versions.yml:md5,2e6b6d8809f5a17f38f4d27c45dcb22f" ] ], - "timestamp": "2023-12-04T17:53:26.664210196" - }, - "homo_sapiens - paired_end - multiple - log_out": { - "content": [ - "test.Log.out" - ], - "timestamp": "2023-11-23T13:29:01.022176" - }, - "homo_sapiens - paired_end - arriba - fastq": { - "content": [ - [ - - ] - ], - "timestamp": "2023-11-23T13:25:07.15277" - }, - "homo_sapiens - paired_end - multiple - junction": { - "content": [ - [ - - ] - ], - "timestamp": "2023-11-23T13:29:01.52923" + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.3" + }, + "timestamp": "2024-07-22T18:02:34.35338" }, - "homo_sapiens - paired_end - multiple - spl_junc_tab": { + "homo_sapiens - paired_end": { "content": [ + "test.Log.final.out", + "test.Log.out", + "test.Log.progress.out", [ [ { "id": "test", "single_end": false }, - "test.SJ.out.tab:md5,069877e053714e23010fe4e1c003b4a2" + "test.Aligned.sortedByCoord.out.bam:md5,b9ee1c607e07323bc1652ef3babb543f" ] - ] - ], - "timestamp": "2023-12-04T18:01:20.189486201" - }, - "homo_sapiens - paired_end - starfusion - log_final": { - "content": [ - "test.Log.final.out" - ], - "timestamp": "2023-11-23T13:27:55.905883" - }, - "homo_sapiens - paired_end - starfusion - fastq": { - "content": [ - [ - - ] - ], - "timestamp": "2023-11-23T13:27:56.192302" - }, - "homo_sapiens - paired_end - multiple - sam": { - "content": [ - [ - - ] - ], - "timestamp": "2023-11-23T13:29:01.661837" - }, - "homo_sapiens - paired_end - multiple - log_final": { - "content": [ - "test.Log.final.out" - ], - "timestamp": "2023-11-23T13:29:00.966417" - }, - "homo_sapiens - paired_end - starfusion - bam": { - "content": [ + ], [ [ { "id": "test", "single_end": false }, - "test.Aligned.out.bam:md5,bcad07b838f6762fc01eea52b5cd3f84" + "test.Aligned.sortedByCoord.out.bam:md5,b9ee1c607e07323bc1652ef3babb543f" ] - ] - ], - "timestamp": "2023-12-04T17:59:58.53235164" - }, - "homo_sapiens - paired_end - arriba - junction": { - "content": [ + ], [ - ] - ], - "timestamp": "2023-11-23T13:25:07.202776" - }, - "homo_sapiens - single_end - bedgraph": { - "content": [ + ], + [ + + ], [ [ { "id": "test", - "single_end": true + "single_end": false }, [ - "test.Signal.Unique.str1.out.bg:md5,c56fc1472776fb927eaf62d973da5f9a", - "test.Signal.UniqueMultiple.str1.out.bg:md5,e93373cf6f2a2a9506e2efdb260cdd4f" + "test.Signal.Unique.str1.out.bg:md5,d7bf8b70b436ca048a62513e1d0ece3a", + "test.Signal.UniqueMultiple.str1.out.bg:md5,686d58493b9eb445b56ace4d67f76ef6" ] ] - ] - ], - "timestamp": "2023-12-04T17:53:26.394863748" - }, - "homo_sapiens - paired_end - arriba - read_per_gene_tab": { - "content": [ + ], [ - ] - ], - "timestamp": "2023-11-23T13:25:07.251962" - }, - "homo_sapiens - paired_end - starfusion - bam_sorted": { - "content": [ + ], [ - ] - ], - "timestamp": "2023-11-23T13:27:56.040843" - }, - "homo_sapiens - single_end - bam_unsorted": { - "content": [ + ], [ - ] - ], - "timestamp": "2023-11-23T13:22:55.154172" - }, - "homo_sapiens - paired_end - bam": { - "content": [ + ], + [ + + ], [ [ { "id": "test", "single_end": false }, - "test.Aligned.sortedByCoord.out.bam:md5,b9ee1c607e07323bc1652ef3babb543f" + "test.SJ.out.tab:md5,844af19ab0fc8cd9a3f75228445aca0d" ] - ] - ], - "timestamp": "2023-12-04T17:54:11.934832258" - }, - "homo_sapiens - paired_end - arriba - bam_transcript": { - "content": [ + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test.SJ.out.tab:md5,844af19ab0fc8cd9a3f75228445aca0d" + ] + ], [ - ] - ], - "timestamp": "2023-11-23T13:25:06.998817" - }, - "homo_sapiens - paired_end - log_out": { - "content": [ - "test.Log.out" - ], - "timestamp": "2023-11-23T13:23:33.259699" - }, - "homo_sapiens - paired_end - arriba - log_out": { - "content": [ - "test.Log.out" - ], - "timestamp": "2023-11-23T13:25:06.849451" - }, - "homo_sapiens - paired_end - multiple - versions": { - "content": [ + ], [ "versions.yml:md5,2e6b6d8809f5a17f38f4d27c45dcb22f" ] ], - "timestamp": "2023-12-04T18:01:20.393705142" + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.3" + }, + "timestamp": "2024-07-22T18:03:16.701923" }, - "homo_sapiens - paired_end - starfusion - bam_transcript": { + "homo_sapiens - paired_end - multiple - stub": { "content": [ - [ - - ] + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.Log.final.out:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": false + }, + "test.Log.out:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "10": [ + [ + { + "id": "test", + "single_end": false + }, + "test.SJ.out.tab:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "11": [ + [ + { + "id": "test", + "single_end": false + }, + "test.ReadsPerGene.out.tab:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "12": [ + [ + { + "id": "test", + "single_end": false + }, + "test.Chimeric.out.junction:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "13": [ + [ + { + "id": "test", + "single_end": false + }, + "test.out.sam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "14": [ + [ + { + "id": "test", + "single_end": false + }, + "test.Signal.UniqueMultiple.str1.out.wig:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "15": [ + [ + { + "id": "test", + "single_end": false + }, + "test.Signal.UniqueMultiple.str1.out.bg:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + [ + { + "id": "test", + "single_end": false + }, + "test.Log.progress.out:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "3": [ + "versions.yml:md5,2e6b6d8809f5a17f38f4d27c45dcb22f" + ], + "4": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test.Aligned.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e", + "testXd.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "5": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test.Aligned.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "6": [ + [ + { + "id": "test", + "single_end": false + }, + "test.toTranscriptome.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "7": [ + [ + { + "id": "test", + "single_end": false + }, + "test.Aligned.unsort.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "8": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test.unmapped_1.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "test.unmapped_2.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ] + ], + "9": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test.ReadsPerGene.out.tab:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.SJ.out.tab:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.tab:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "bam": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test.Aligned.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e", + "testXd.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "bam_sorted": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test.Aligned.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "bam_transcript": [ + [ + { + "id": "test", + "single_end": false + }, + "test.toTranscriptome.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "bam_unsorted": [ + [ + { + "id": "test", + "single_end": false + }, + "test.Aligned.unsort.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "bedgraph": [ + [ + { + "id": "test", + "single_end": false + }, + "test.Signal.UniqueMultiple.str1.out.bg:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "fastq": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test.unmapped_1.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "test.unmapped_2.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ] + ], + "junction": [ + [ + { + "id": "test", + "single_end": false + }, + "test.Chimeric.out.junction:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "log_final": [ + [ + { + "id": "test", + "single_end": false + }, + "test.Log.final.out:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "log_out": [ + [ + { + "id": "test", + "single_end": false + }, + "test.Log.out:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "log_progress": [ + [ + { + "id": "test", + "single_end": false + }, + "test.Log.progress.out:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "read_per_gene_tab": [ + [ + { + "id": "test", + "single_end": false + }, + "test.ReadsPerGene.out.tab:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "sam": [ + [ + { + "id": "test", + "single_end": false + }, + "test.out.sam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "spl_junc_tab": [ + [ + { + "id": "test", + "single_end": false + }, + "test.SJ.out.tab:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "tab": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test.ReadsPerGene.out.tab:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.SJ.out.tab:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.tab:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "versions": [ + "versions.yml:md5,2e6b6d8809f5a17f38f4d27c45dcb22f" + ], + "wig": [ + [ + { + "id": "test", + "single_end": false + }, + "test.Signal.UniqueMultiple.str1.out.wig:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + } ], - "timestamp": "2023-11-23T13:27:56.082408" + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.3" + }, + "timestamp": "2024-07-22T15:16:51.360287" }, - "homo_sapiens - paired_end - starfusion - tab": { + "homo_sapiens - paired_end - multiple": { "content": [ + "test.Log.final.out", + "test.Log.out", + "test.Log.progress.out", [ [ { "id": "test", "single_end": false }, - "test.SJ.out.tab:md5,19c3faa1bfa9a0cc5e4c45f17065b53a" + "test.Aligned.sortedByCoord.out.bam:md5,ab07c21d63ab0a6c07d171d213c81d5a" ] - ] - ], - "timestamp": "2023-12-04T17:59:58.818041322" - }, - "homo_sapiens - single_end - fastq": { - "content": [ + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test.Aligned.sortedByCoord.out.bam:md5,ab07c21d63ab0a6c07d171d213c81d5a" + ] + ], [ - ] - ], - "timestamp": "2023-11-23T13:22:55.175307" - }, - "homo_sapiens - paired_end - tab": { - "content": [ + ], + [ + + ], [ [ { "id": "test", "single_end": false }, - "test.SJ.out.tab:md5,844af19ab0fc8cd9a3f75228445aca0d" + [ + "test.Signal.Unique.str1.out.bg:md5,d7bf8b70b436ca048a62513e1d0ece3a", + "test.Signal.UniqueMultiple.str1.out.bg:md5,686d58493b9eb445b56ace4d67f76ef6" + ] ] - ] - ], - "timestamp": "2023-12-04T17:54:12.255481058" - }, - "homo_sapiens - paired_end - starfusion - bedgraph": { - "content": [ + ], [ - ] - ], - "timestamp": "2023-11-23T13:27:56.155413" - }, - "homo_sapiens - single_end - bam_transcript": { - "content": [ + ], [ - ] - ], - "timestamp": "2023-11-23T13:22:55.144852" - }, - "homo_sapiens - paired_end - versions": { - "content": [ + ], [ - "versions.yml:md5,2e6b6d8809f5a17f38f4d27c45dcb22f" - ] - ], - "timestamp": "2023-12-04T17:54:12.343840482" - }, - "homo_sapiens - paired_end - multiple - tab": { - "content": [ + + ], + [ + + ], [ [ { @@ -385,385 +1173,801 @@ }, "test.SJ.out.tab:md5,069877e053714e23010fe4e1c003b4a2" ] - ] - ], - "timestamp": "2023-12-04T18:01:20.291692062" - }, - "homo_sapiens - single_end - bam": { - "content": [ + ], [ [ { "id": "test", - "single_end": true + "single_end": false }, - "test.Aligned.sortedByCoord.out.bam:md5,c6cfaccaf91bc7fdabed3cfe236d4535" + "test.SJ.out.tab:md5,069877e053714e23010fe4e1c003b4a2" ] - ] - ], - "timestamp": "2023-12-04T17:53:26.265642675" - }, - "homo_sapiens - paired_end - arriba - wig": { - "content": [ + ], [ + ], + [ + "versions.yml:md5,2e6b6d8809f5a17f38f4d27c45dcb22f" ] ], - "timestamp": "2023-11-23T13:25:07.444214" + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.3" + }, + "timestamp": "2024-07-22T13:13:28.987438" }, - "homo_sapiens - paired_end - log_progress": { + "homo_sapiens - paired_end - stub": { "content": [ - [ - [ - { - "id": "test", - "single_end": false - }, - "test.Log.progress.out:md5,b2bd061d6cbaaf3d6d3b1fed547f69b8" + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.Log.final.out:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": false + }, + "test.Log.out:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "10": [ + [ + { + "id": "test", + "single_end": false + }, + "test.SJ.out.tab:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "11": [ + [ + { + "id": "test", + "single_end": false + }, + "test.ReadsPerGene.out.tab:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "12": [ + [ + { + "id": "test", + "single_end": false + }, + "test.Chimeric.out.junction:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "13": [ + [ + { + "id": "test", + "single_end": false + }, + "test.out.sam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "14": [ + [ + { + "id": "test", + "single_end": false + }, + "test.Signal.UniqueMultiple.str1.out.wig:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "15": [ + [ + { + "id": "test", + "single_end": false + }, + "test.Signal.UniqueMultiple.str1.out.bg:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + [ + { + "id": "test", + "single_end": false + }, + "test.Log.progress.out:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "3": [ + "versions.yml:md5,2e6b6d8809f5a17f38f4d27c45dcb22f" + ], + "4": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test.Aligned.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e", + "testXd.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "5": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test.Aligned.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "6": [ + [ + { + "id": "test", + "single_end": false + }, + "test.toTranscriptome.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "7": [ + [ + { + "id": "test", + "single_end": false + }, + "test.Aligned.unsort.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "8": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test.unmapped_1.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "test.unmapped_2.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ] + ], + "9": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test.ReadsPerGene.out.tab:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.SJ.out.tab:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.tab:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "bam": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test.Aligned.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e", + "testXd.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "bam_sorted": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test.Aligned.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "bam_transcript": [ + [ + { + "id": "test", + "single_end": false + }, + "test.toTranscriptome.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "bam_unsorted": [ + [ + { + "id": "test", + "single_end": false + }, + "test.Aligned.unsort.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "bedgraph": [ + [ + { + "id": "test", + "single_end": false + }, + "test.Signal.UniqueMultiple.str1.out.bg:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "fastq": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test.unmapped_1.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "test.unmapped_2.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ] + ], + "junction": [ + [ + { + "id": "test", + "single_end": false + }, + "test.Chimeric.out.junction:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "log_final": [ + [ + { + "id": "test", + "single_end": false + }, + "test.Log.final.out:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "log_out": [ + [ + { + "id": "test", + "single_end": false + }, + "test.Log.out:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "log_progress": [ + [ + { + "id": "test", + "single_end": false + }, + "test.Log.progress.out:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "read_per_gene_tab": [ + [ + { + "id": "test", + "single_end": false + }, + "test.ReadsPerGene.out.tab:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "sam": [ + [ + { + "id": "test", + "single_end": false + }, + "test.out.sam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "spl_junc_tab": [ + [ + { + "id": "test", + "single_end": false + }, + "test.SJ.out.tab:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "tab": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test.ReadsPerGene.out.tab:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.SJ.out.tab:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.tab:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "versions": [ + "versions.yml:md5,2e6b6d8809f5a17f38f4d27c45dcb22f" + ], + "wig": [ + [ + { + "id": "test", + "single_end": false + }, + "test.Signal.UniqueMultiple.str1.out.wig:md5,d41d8cd98f00b204e9800998ecf8427e" + ] ] - ] - ], - "timestamp": "2023-12-04T17:54:12.126063825" - }, - "homo_sapiens - paired_end - arriba - log_final": { - "content": [ - "test.Log.final.out" - ], - "timestamp": "2023-11-23T13:25:06.829799" - }, - "homo_sapiens - paired_end - bam_unsorted": { - "content": [ - [ - - ] - ], - "timestamp": "2023-11-23T13:23:33.300509" - }, - "homo_sapiens - paired_end - arriba - sam": { - "content": [ - [ - - ] + } ], - "timestamp": "2023-11-23T13:25:07.300383" + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.3" + }, + "timestamp": "2024-07-22T15:16:16.798018" }, - "homo_sapiens - paired_end - multiple - bam": { + "homo_sapiens - paired_end - starfusion": { "content": [ + "test.Log.final.out", + "test.Log.out", + "test.Log.progress.out", [ [ { "id": "test", "single_end": false }, - "test.Aligned.sortedByCoord.out.bam:md5,ab07c21d63ab0a6c07d171d213c81d5a" + "test.Aligned.out.bam:md5,bcad07b838f6762fc01eea52b5cd3f84" ] - ] - ], - "timestamp": "2023-12-04T18:01:19.851247126" - }, - "homo_sapiens - paired_end - multiple - fastq": { - "content": [ + ], [ - ] - ], - "timestamp": "2023-11-23T13:29:01.462257" - }, - "homo_sapiens - single_end - bam_sorted": { - "content": [ - [ - [ - { - "id": "test", - "single_end": true - }, - "test.Aligned.sortedByCoord.out.bam:md5,c6cfaccaf91bc7fdabed3cfe236d4535" - ] - ] - ], - "timestamp": "2023-12-04T17:53:26.335457371" - }, - "homo_sapiens - paired_end - arriba - bam_sorted": { - "content": [ + ], [ - ] - ], - "timestamp": "2023-11-23T13:25:06.94699" - }, - "homo_sapiens - paired_end - starfusion - junction": { - "content": [ - [ - [ - { - "id": "test", - "single_end": false - }, - "test.Chimeric.out.junction:md5,c10ef219f4a30e83711b995bc5e40dba" - ] - ] - ], - "timestamp": "2023-12-04T17:59:58.641115828" - }, - "homo_sapiens - single_end - tab": { - "content": [ + ], [ - [ - { - "id": "test", - "single_end": true - }, - "test.SJ.out.tab:md5,75a516ab950fb958f40b29996474949c" - ] - ] - ], - "timestamp": "2023-12-04T17:53:26.580593434" - }, - "homo_sapiens - paired_end - starfusion - versions": { - "content": [ + + ], [ - "versions.yml:md5,2e6b6d8809f5a17f38f4d27c45dcb22f" - ] - ], - "timestamp": "2023-12-04T17:59:58.907317103" - }, - "homo_sapiens - paired_end - multiple - bam_unsorted": { - "content": [ + + ], [ - ] - ], - "timestamp": "2023-11-23T13:29:01.330463" - }, - "homo_sapiens - paired_end - arriba - log_progress": { - "content": [ - "test.Log.progress.out" - ], - "timestamp": "2023-11-23T13:25:06.86866" - }, - "homo_sapiens - paired_end - bedgraph": { - "content": [ + ], [ [ { "id": "test", "single_end": false }, - [ - "test.Signal.Unique.str1.out.bg:md5,d7bf8b70b436ca048a62513e1d0ece3a", - "test.Signal.UniqueMultiple.str1.out.bg:md5,686d58493b9eb445b56ace4d67f76ef6" - ] + "test.Chimeric.out.junction:md5,c10ef219f4a30e83711b995bc5e40dba" ] - ] - ], - "timestamp": "2023-12-04T17:54:12.064121304" - }, - "homo_sapiens - paired_end - starfusion - bam_unsorted": { - "content": [ - [ - - ] - ], - "timestamp": "2023-11-23T13:27:56.118974" - }, - "homo_sapiens - paired_end - starfusion - read_per_gene_tab": { - "content": [ + ], [ - ] - ], - "timestamp": "2023-11-23T13:27:56.264699" - }, - "homo_sapiens - paired_end - multiple - log_progress": { - "content": [ - "test.Log.progress.out" - ], - "timestamp": "2023-11-23T13:29:01.076947" - }, - "homo_sapiens - paired_end - arriba - bam_unsorted": { - "content": [ + ], [ - ] - ], - "timestamp": "2023-11-23T13:25:07.050409" - }, - "homo_sapiens - paired_end - bam_sorted": { - "content": [ + ], [ [ { "id": "test", "single_end": false }, - "test.Aligned.sortedByCoord.out.bam:md5,b9ee1c607e07323bc1652ef3babb543f" + "test.SJ.out.tab:md5,19c3faa1bfa9a0cc5e4c45f17065b53a" ] - ] - ], - "timestamp": "2023-12-04T17:54:12.002180537" - }, - "homo_sapiens - single_end - spl_junc_tab": { - "content": [ + ], [ [ { "id": "test", - "single_end": true + "single_end": false }, - "test.SJ.out.tab:md5,75a516ab950fb958f40b29996474949c" + "test.SJ.out.tab:md5,19c3faa1bfa9a0cc5e4c45f17065b53a" ] + ], + [ + + ], + [ + "versions.yml:md5,2e6b6d8809f5a17f38f4d27c45dcb22f" ] ], - "timestamp": "2023-12-04T17:53:26.50932751" + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.3" + }, + "timestamp": "2024-07-22T13:10:55.371956" }, - "homo_sapiens - paired_end - starfusion - spl_junc_tab": { + "homo_sapiens - paired_end - arriba": { "content": [ + "test.Log.final.out", + "test.Log.out", + "test.Log.progress.out", [ [ { "id": "test", "single_end": false }, - "test.SJ.out.tab:md5,19c3faa1bfa9a0cc5e4c45f17065b53a" + "test.Aligned.out.bam:md5,c1b1747f5873f2d17762725636e891d5" ] - ] - ], - "timestamp": "2023-12-04T17:59:58.731699486" - }, - "homo_sapiens - single_end - log_out": { - "content": [ - "test.Log.out" - ], - "timestamp": "2023-11-23T13:22:55.126286" - }, - "homo_sapiens - paired_end - log_final": { - "content": [ - "test.Log.final.out" - ], - "timestamp": "2023-11-23T13:23:33.253884" - }, - "homo_sapiens - single_end - log_final": { - "content": [ - "test.Log.final.out" - ], - "timestamp": "2023-11-23T13:22:55.11799" - }, - "homo_sapiens - paired_end - bam_transcript": { - "content": [ + ], [ - ] - ], - "timestamp": "2023-11-23T13:23:33.287684" - }, - "homo_sapiens - paired_end - starfusion - log_progress": { - "content": [ - "test.Log.progress.out" - ], - "timestamp": "2023-11-23T13:27:55.971484" - }, - "homo_sapiens - paired_end - multiple - bam_transcript": { - "content": [ + ], [ - ] - ], - "timestamp": "2023-11-23T13:29:01.264176" - }, - "homo_sapiens - paired_end - multiple - read_per_gene_tab": { - "content": [ + ], [ - ] - ], - "timestamp": "2023-11-23T13:29:01.596406" - }, - "homo_sapiens - single_end - read_per_gene_tab": { - "content": [ + ], [ - ] - ], - "timestamp": "2023-11-23T13:22:55.205936" - }, - "homo_sapiens - paired_end - junction": { - "content": [ + ], [ - ] - ], - "timestamp": "2023-11-23T13:23:33.340653" - }, - "homo_sapiens - paired_end - spl_junc_tab": { - "content": [ + ], [ - [ - { - "id": "test", - "single_end": false - }, - "test.SJ.out.tab:md5,844af19ab0fc8cd9a3f75228445aca0d" - ] - ] - ], - "timestamp": "2023-12-04T17:54:12.185730856" - }, - "homo_sapiens - paired_end - starfusion - sam": { - "content": [ + + ], [ - ] - ], - "timestamp": "2023-11-23T13:27:56.300637" - }, - "homo_sapiens - paired_end - arriba - bam": { - "content": [ + ], + [ + + ], [ [ { "id": "test", "single_end": false }, - "test.Aligned.out.bam:md5,c1b1747f5873f2d17762725636e891d5" + "test.SJ.out.tab:md5,5155c9fd1f787ad6d7d80987fb06219c" ] - ] - ], - "timestamp": "2023-12-04T17:56:12.190560178" - }, - "homo_sapiens - single_end - log_progress": { - "content": [ + ], [ [ { "id": "test", - "single_end": true + "single_end": false }, - "test.Log.progress.out:md5,b2bd061d6cbaaf3d6d3b1fed547f69b8" + "test.SJ.out.tab:md5,5155c9fd1f787ad6d7d80987fb06219c" ] - ] - ], - "timestamp": "2023-12-04T17:53:26.450352138" - }, - "homo_sapiens - paired_end - starfusion - wig": { - "content": [ + ], [ - ] - ], - "timestamp": "2023-11-23T13:27:56.422018" - }, - "homo_sapiens - paired_end - wig": { - "content": [ + ], [ - + "versions.yml:md5,2e6b6d8809f5a17f38f4d27c45dcb22f" ] ], - "timestamp": "2023-11-23T13:23:33.429457" + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.3" + }, + "timestamp": "2024-07-22T13:05:10.7534" }, - "homo_sapiens - paired_end - starfusion - log_out": { + "homo_sapiens - paired_end - starfusion - stub": { "content": [ - "test.Log.out" + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.Log.final.out:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": false + }, + "test.Log.out:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "10": [ + [ + { + "id": "test", + "single_end": false + }, + "test.SJ.out.tab:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "11": [ + [ + { + "id": "test", + "single_end": false + }, + "test.ReadsPerGene.out.tab:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "12": [ + [ + { + "id": "test", + "single_end": false + }, + "test.Chimeric.out.junction:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "13": [ + [ + { + "id": "test", + "single_end": false + }, + "test.out.sam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "14": [ + [ + { + "id": "test", + "single_end": false + }, + "test.Signal.UniqueMultiple.str1.out.wig:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "15": [ + [ + { + "id": "test", + "single_end": false + }, + "test.Signal.UniqueMultiple.str1.out.bg:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + [ + { + "id": "test", + "single_end": false + }, + "test.Log.progress.out:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "3": [ + "versions.yml:md5,2e6b6d8809f5a17f38f4d27c45dcb22f" + ], + "4": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test.Aligned.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e", + "testXd.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "5": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test.Aligned.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "6": [ + [ + { + "id": "test", + "single_end": false + }, + "test.toTranscriptome.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "7": [ + [ + { + "id": "test", + "single_end": false + }, + "test.Aligned.unsort.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "8": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test.unmapped_1.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "test.unmapped_2.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ] + ], + "9": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test.ReadsPerGene.out.tab:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.SJ.out.tab:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.tab:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "bam": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test.Aligned.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e", + "testXd.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "bam_sorted": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test.Aligned.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "bam_transcript": [ + [ + { + "id": "test", + "single_end": false + }, + "test.toTranscriptome.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "bam_unsorted": [ + [ + { + "id": "test", + "single_end": false + }, + "test.Aligned.unsort.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "bedgraph": [ + [ + { + "id": "test", + "single_end": false + }, + "test.Signal.UniqueMultiple.str1.out.bg:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "fastq": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test.unmapped_1.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "test.unmapped_2.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ] + ], + "junction": [ + [ + { + "id": "test", + "single_end": false + }, + "test.Chimeric.out.junction:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "log_final": [ + [ + { + "id": "test", + "single_end": false + }, + "test.Log.final.out:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "log_out": [ + [ + { + "id": "test", + "single_end": false + }, + "test.Log.out:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "log_progress": [ + [ + { + "id": "test", + "single_end": false + }, + "test.Log.progress.out:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "read_per_gene_tab": [ + [ + { + "id": "test", + "single_end": false + }, + "test.ReadsPerGene.out.tab:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "sam": [ + [ + { + "id": "test", + "single_end": false + }, + "test.out.sam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "spl_junc_tab": [ + [ + { + "id": "test", + "single_end": false + }, + "test.SJ.out.tab:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "tab": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test.ReadsPerGene.out.tab:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.SJ.out.tab:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.tab:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "versions": [ + "versions.yml:md5,2e6b6d8809f5a17f38f4d27c45dcb22f" + ], + "wig": [ + [ + { + "id": "test", + "single_end": false + }, + "test.Signal.UniqueMultiple.str1.out.wig:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + } ], - "timestamp": "2023-11-23T13:27:55.93945" + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.3" + }, + "timestamp": "2024-07-22T15:16:40.64399" } } \ No newline at end of file diff --git a/modules/nf-core/star/genomegenerate/tests/main.nf.test b/modules/nf-core/star/genomegenerate/tests/main.nf.test index 3467a3567..fed98212d 100644 --- a/modules/nf-core/star/genomegenerate/tests/main.nf.test +++ b/modules/nf-core/star/genomegenerate/tests/main.nf.test @@ -24,15 +24,15 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot(file(process.out.index[0][1]).listFiles().collect { it.getName() }.sort().toString()).match("fasta_gtf_index") }, - { assert snapshot(process.out.versions).match("fasta_gtf_versions") } + { assert snapshot( + file(process.out.index[0][1]).listFiles().collect { it.getName() }.sort().toString(), + process.out.versions) + .match() } ) } } - test("fasta_gtf_stub") { - - options '-stub' + test("fasta") { when { process { @@ -41,10 +41,7 @@ nextflow_process { [ id:'test_fasta' ], [ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) ] ]) - input[1] = Channel.of([ - [ id:'test_gtf' ], - [ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.gtf', checkIfExists: true) ] - ]) + input[1] = Channel.of([ [], [] ]) """ } } @@ -52,13 +49,17 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot(file(process.out.index[0][1]).listFiles().collect { it.getName() }.sort().toString()).match("fasta_gtf_stub_index") }, - { assert snapshot(process.out.versions).match("fasta_gtf_stub_versions") } + { assert snapshot( + file(process.out.index[0][1]).listFiles().collect { it.getName() }.sort().toString(), + process.out.versions + ).match() } ) } } - test("fasta") { + test("fasta_gtf_stub") { + + options '-stub' when { process { @@ -67,7 +68,10 @@ nextflow_process { [ id:'test_fasta' ], [ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) ] ]) - input[1] = Channel.of([ [], [] ]) + input[1] = Channel.of([ + [ id:'test_gtf' ], + [ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.gtf', checkIfExists: true) ] + ]) """ } } @@ -75,11 +79,9 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot(file(process.out.index[0][1]).listFiles().collect { it.getName() }.sort().toString()).match("fasta_index") }, - { assert snapshot(process.out.versions).match("fasta_versions") } + { assert snapshot(process.out).match() } ) } - } test("fasta_stub") { @@ -101,11 +103,8 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot(file(process.out.index[0][1]).listFiles().collect { it.getName() }.sort().toString()).match("fasta_stub_index") }, - { assert snapshot(process.out.versions).match("fasta_stub_versions") } + { assert snapshot(process.out).match() } ) } - } - } diff --git a/modules/nf-core/star/genomegenerate/tests/main.nf.test.snap b/modules/nf-core/star/genomegenerate/tests/main.nf.test.snap index 5653d6e6c..207f4b4f5 100644 --- a/modules/nf-core/star/genomegenerate/tests/main.nf.test.snap +++ b/modules/nf-core/star/genomegenerate/tests/main.nf.test.snap @@ -1,90 +1,148 @@ { - "fasta_gtf_versions": { + "fasta_gtf": { "content": [ + "[Genome, Log.out, SA, SAindex, chrLength.txt, chrName.txt, chrNameLength.txt, chrStart.txt, exonGeTrInfo.tab, exonInfo.tab, geneInfo.tab, genomeParameters.txt, sjdbInfo.txt, sjdbList.fromGTF.out.tab, sjdbList.out.tab, transcriptInfo.tab]", [ "versions.yml:md5,46b8f1f34bb7f23892cd1eb249ed4d7f" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.04.3" + "nf-test": "0.9.0", + "nextflow": "24.04.3" }, - "timestamp": "2024-02-01T15:54:31.798555" + "timestamp": "2024-07-22T14:55:35.478401" }, - "fasta_stub_versions": { + "fasta_gtf_stub": { "content": [ - [ - "versions.yml:md5,46b8f1f34bb7f23892cd1eb249ed4d7f" - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.04.3" - }, - "timestamp": "2024-02-01T15:55:07.521209" - }, - "fasta_gtf_stub_index": { - "content": [ - "[Genome, Log.out, SA, SAindex, chrLength.txt, chrName.txt, chrNameLength.txt, chrStart.txt, exonGeTrInfo.tab, exonInfo.tab, geneInfo.tab, genomeParameters.txt, sjdbInfo.txt, sjdbList.fromGTF.out.tab, sjdbList.out.tab, transcriptInfo.tab]" - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.04.3" - }, - "timestamp": "2024-02-01T15:54:46.478098" - }, - "fasta_gtf_stub_versions": { - "content": [ - [ - "versions.yml:md5,46b8f1f34bb7f23892cd1eb249ed4d7f" - ] + { + "0": [ + [ + { + "id": "test_fasta" + }, + [ + "Genome:md5,d41d8cd98f00b204e9800998ecf8427e", + "Log.out:md5,d41d8cd98f00b204e9800998ecf8427e", + "SA:md5,d41d8cd98f00b204e9800998ecf8427e", + "SAindex:md5,d41d8cd98f00b204e9800998ecf8427e", + "chrLength.txt:md5,d41d8cd98f00b204e9800998ecf8427e", + "chrName.txt:md5,d41d8cd98f00b204e9800998ecf8427e", + "chrNameLength.txt:md5,d41d8cd98f00b204e9800998ecf8427e", + "chrStart.txt:md5,d41d8cd98f00b204e9800998ecf8427e", + "exonGeTrInfo.tab:md5,d41d8cd98f00b204e9800998ecf8427e", + "exonInfo.tab:md5,d41d8cd98f00b204e9800998ecf8427e", + "geneInfo.tab:md5,d41d8cd98f00b204e9800998ecf8427e", + "genomeParameters.txt:md5,d41d8cd98f00b204e9800998ecf8427e", + "sjdbInfo.txt:md5,d41d8cd98f00b204e9800998ecf8427e", + "sjdbList.fromGTF.out.tab:md5,d41d8cd98f00b204e9800998ecf8427e", + "sjdbList.out.tab:md5,d41d8cd98f00b204e9800998ecf8427e", + "transcriptInfo.tab:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "1": [ + "versions.yml:md5,46b8f1f34bb7f23892cd1eb249ed4d7f" + ], + "index": [ + [ + { + "id": "test_fasta" + }, + [ + "Genome:md5,d41d8cd98f00b204e9800998ecf8427e", + "Log.out:md5,d41d8cd98f00b204e9800998ecf8427e", + "SA:md5,d41d8cd98f00b204e9800998ecf8427e", + "SAindex:md5,d41d8cd98f00b204e9800998ecf8427e", + "chrLength.txt:md5,d41d8cd98f00b204e9800998ecf8427e", + "chrName.txt:md5,d41d8cd98f00b204e9800998ecf8427e", + "chrNameLength.txt:md5,d41d8cd98f00b204e9800998ecf8427e", + "chrStart.txt:md5,d41d8cd98f00b204e9800998ecf8427e", + "exonGeTrInfo.tab:md5,d41d8cd98f00b204e9800998ecf8427e", + "exonInfo.tab:md5,d41d8cd98f00b204e9800998ecf8427e", + "geneInfo.tab:md5,d41d8cd98f00b204e9800998ecf8427e", + "genomeParameters.txt:md5,d41d8cd98f00b204e9800998ecf8427e", + "sjdbInfo.txt:md5,d41d8cd98f00b204e9800998ecf8427e", + "sjdbList.fromGTF.out.tab:md5,d41d8cd98f00b204e9800998ecf8427e", + "sjdbList.out.tab:md5,d41d8cd98f00b204e9800998ecf8427e", + "transcriptInfo.tab:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "versions": [ + "versions.yml:md5,46b8f1f34bb7f23892cd1eb249ed4d7f" + ] + } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.04.3" + "nf-test": "0.9.0", + "nextflow": "24.04.3" }, - "timestamp": "2024-02-01T15:54:46.491657" + "timestamp": "2024-07-22T14:55:57.247585" }, - "fasta_index": { + "fasta_stub": { "content": [ - "[Genome, Log.out, SA, SAindex, chrLength.txt, chrName.txt, chrNameLength.txt, chrStart.txt, genomeParameters.txt]" + { + "0": [ + [ + { + "id": "test_fasta" + }, + [ + "Genome:md5,d41d8cd98f00b204e9800998ecf8427e", + "Log.out:md5,d41d8cd98f00b204e9800998ecf8427e", + "SA:md5,d41d8cd98f00b204e9800998ecf8427e", + "SAindex:md5,d41d8cd98f00b204e9800998ecf8427e", + "chrLength.txt:md5,d41d8cd98f00b204e9800998ecf8427e", + "chrName.txt:md5,d41d8cd98f00b204e9800998ecf8427e", + "chrNameLength.txt:md5,d41d8cd98f00b204e9800998ecf8427e", + "chrStart.txt:md5,d41d8cd98f00b204e9800998ecf8427e", + "genomeParameters.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "1": [ + "versions.yml:md5,46b8f1f34bb7f23892cd1eb249ed4d7f" + ], + "index": [ + [ + { + "id": "test_fasta" + }, + [ + "Genome:md5,d41d8cd98f00b204e9800998ecf8427e", + "Log.out:md5,d41d8cd98f00b204e9800998ecf8427e", + "SA:md5,d41d8cd98f00b204e9800998ecf8427e", + "SAindex:md5,d41d8cd98f00b204e9800998ecf8427e", + "chrLength.txt:md5,d41d8cd98f00b204e9800998ecf8427e", + "chrName.txt:md5,d41d8cd98f00b204e9800998ecf8427e", + "chrNameLength.txt:md5,d41d8cd98f00b204e9800998ecf8427e", + "chrStart.txt:md5,d41d8cd98f00b204e9800998ecf8427e", + "genomeParameters.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "versions": [ + "versions.yml:md5,46b8f1f34bb7f23892cd1eb249ed4d7f" + ] + } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.04.3" + "nf-test": "0.9.0", + "nextflow": "24.04.3" }, - "timestamp": "2024-02-01T15:54:57.552329" + "timestamp": "2024-07-22T14:56:07.01742" }, - "fasta_versions": { + "fasta": { "content": [ + "[Genome, Log.out, SA, SAindex, chrLength.txt, chrName.txt, chrNameLength.txt, chrStart.txt, genomeParameters.txt]", [ "versions.yml:md5,46b8f1f34bb7f23892cd1eb249ed4d7f" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.04.3" - }, - "timestamp": "2024-02-01T15:54:57.560541" - }, - "fasta_gtf_index": { - "content": [ - "[Genome, Log.out, SA, SAindex, chrLength.txt, chrName.txt, chrNameLength.txt, chrStart.txt, exonGeTrInfo.tab, exonInfo.tab, geneInfo.tab, genomeParameters.txt, sjdbInfo.txt, sjdbList.fromGTF.out.tab, sjdbList.out.tab, transcriptInfo.tab]" - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.04.3" - }, - "timestamp": "2024-02-01T15:54:31.786814" - }, - "fasta_stub_index": { - "content": [ - "[Genome, Log.out, SA, SAindex, chrLength.txt, chrName.txt, chrNameLength.txt, chrStart.txt, genomeParameters.txt]" - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.04.3" + "nf-test": "0.9.0", + "nextflow": "24.04.3" }, - "timestamp": "2024-02-01T15:55:07.517472" + "timestamp": "2024-07-22T14:55:45.48784" } } \ No newline at end of file diff --git a/modules/nf-core/stringtie/stringtie/tests/main.nf.test b/modules/nf-core/stringtie/stringtie/tests/main.nf.test index 68baaf289..26be5425a 100644 --- a/modules/nf-core/stringtie/stringtie/tests/main.nf.test +++ b/modules/nf-core/stringtie/stringtie/tests/main.nf.test @@ -6,8 +6,6 @@ nextflow_process { test("sarscov2 [bam] - forward strandedness") { - config "./nextflow.config" - when { process { """ @@ -23,17 +21,17 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot(process.out.transcript_gtf).match("fs_transcript_gtf") }, - { assert snapshot(process.out.abundance).match("fs_abundance") }, - { assert snapshot(process.out.versions).match("fs_versions") } + { assert snapshot( + process.out.abundance, + process.out.transcript_gtf, + process.out.versions + ).match() } ) } } test("sarscov2 [bam] - forward strandedness + reference annotation") { - config "./nextflow.config" - when { process { """ @@ -49,18 +47,18 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot(process.out.transcript_gtf).match("fs_gtf_transcript_gtf") }, - { assert snapshot(process.out.abundance).match("fs_gtf_abundance") }, - { assert snapshot(process.out.ballgown).match("fs_gtf_ballgown") }, - { assert snapshot(process.out.versions).match("fs_gtf_versions") } + { assert snapshot( + process.out.abundance, + process.out.ballgown, + process.out.transcript_gtf, + process.out.versions + ).match() } ) } } test("sarscov2 [bam] - reverse strandedness") { - config "./nextflow.config" - when { process { """ @@ -76,16 +74,117 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot(process.out.transcript_gtf).match("rs_transcript_gtf") }, - { assert snapshot(process.out.abundance).match("rs_abundance") }, - { assert snapshot(process.out.versions).match("rs_versions") } + { assert snapshot( + process.out.abundance, + process.out.transcript_gtf, + process.out.versions + ).match() } ) } } test("sarscov2 [bam] - reverse strandedness + reference annotation") { - config "./nextflow.config" + when { + process { + """ + input[0] = [ + [ id:'test', strandedness:'reverse' ], // meta map + [ file(params.modules_testdata_base_path + "genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam", checkIfExists: true) ] + ] + input[1] = file(params.modules_testdata_base_path + "genomics/sarscov2/genome/genome.gtf", checkIfExists: true) + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + process.out.abundance, + process.out.ballgown, + process.out.transcript_gtf, + process.out.versions + ).match() } + ) + } + } + + test("sarscov2 [bam] - forward strandedness - stub") { + + options "-stub" + + when { + process { + """ + input[0] = [ + [ id:'test', strandedness:'forward' ], // meta map + [ file(params.modules_testdata_base_path + "genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam", checkIfExists: true) ] + ] + input[1] = [] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("sarscov2 [bam] - forward strandedness + reference annotation - stub") { + + options "-stub" + + when { + process { + """ + input[0] = [ + [ id:'test', strandedness:'forward' ], // meta map + [ file(params.modules_testdata_base_path + "genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam", checkIfExists: true) ] + ] + input[1] = file(params.modules_testdata_base_path + "genomics/sarscov2/genome/genome.gtf", checkIfExists: true) + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("sarscov2 [bam] - reverse strandedness - stub") { + + options "-stub" + + when { + process { + """ + input[0] = [ + [ id:'test', strandedness:'reverse' ], // meta map + [ file(params.modules_testdata_base_path + "genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam", checkIfExists: true) ] + ] + input[1] = [] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("sarscov2 [bam] - reverse strandedness + reference annotation - stub") { + + options "-stub" when { process { @@ -102,10 +201,7 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot(process.out.transcript_gtf).match("rs_gtf_transcript_gtf") }, - { assert snapshot(process.out.abundance).match("rs_gtf_abundance") }, - { assert snapshot(process.out.ballgown).match("rs_gtf_ballgown") }, - { assert snapshot(process.out.versions).match("rs_gtf_versions") } + { assert snapshot(process.out).match() } ) } } diff --git a/modules/nf-core/stringtie/stringtie/tests/main.nf.test.snap b/modules/nf-core/stringtie/stringtie/tests/main.nf.test.snap index bf7516364..124dd4cbe 100644 --- a/modules/nf-core/stringtie/stringtie/tests/main.nf.test.snap +++ b/modules/nf-core/stringtie/stringtie/tests/main.nf.test.snap @@ -1,5 +1,5 @@ { - "fs_abundance": { + "sarscov2 [bam] - forward strandedness + reference annotation": { "content": [ [ [ @@ -7,49 +7,44 @@ "id": "test", "strandedness": "forward" }, - "test.gene.abundance.txt:md5,d6f5c8cadb8458f1df0427cf790246e3" + "test.gene.abundance.txt:md5,7d8bce7f2a922e367cedccae7267c22e" ] - ] - ], - "timestamp": "2023-11-23T13:55:41.032044613" - }, - "fs_transcript_gtf": { - "content": [ + ], [ [ { "id": "test", "strandedness": "forward" }, - "test.transcripts.gtf:md5,569137af5be452413086b50653a97203" + [ + "e2t.ctab:md5,e981c0038295ae54b63cedb1083f1540", + "e_data.ctab:md5,6b4cf69bc03f3f69890f972a0e8b7471", + "i2t.ctab:md5,8a117c8aa4334b4c2d4711932b006fb4", + "i_data.ctab:md5,be3abe09740603213f83d50dcf81427f", + "t_data.ctab:md5,3b66c065da73ae0dd41cc332eff6a818" + ] ] - ] - ], - "timestamp": "2023-11-23T13:55:41.017978904" - }, - "rs_abundance": { - "content": [ + ], [ [ { "id": "test", - "strandedness": "reverse" + "strandedness": "forward" }, - "test.gene.abundance.txt:md5,d6f5c8cadb8458f1df0427cf790246e3" + "test.transcripts.gtf:md5,f56cf8aba2c4a5673bc7963ba5f12d04" ] - ] - ], - "timestamp": "2023-11-23T13:56:13.601112933" - }, - "fs_gtf_versions": { - "content": [ + ], [ "versions.yml:md5,3410e8ac349d18c85ddee89337851d38" ] ], - "timestamp": "2023-11-23T13:56:00.523797974" + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.3" + }, + "timestamp": "2024-07-22T12:33:44.299962" }, - "fs_gtf_transcript_gtf": { + "sarscov2 [bam] - forward strandedness": { "content": [ [ [ @@ -57,50 +52,395 @@ "id": "test", "strandedness": "forward" }, - "test.transcripts.gtf:md5,f56cf8aba2c4a5673bc7963ba5f12d04" + "test.gene.abundance.txt:md5,d6f5c8cadb8458f1df0427cf790246e3" + ] + ], + [ + [ + { + "id": "test", + "strandedness": "forward" + }, + "test.transcripts.gtf:md5,569137af5be452413086b50653a97203" ] + ], + [ + "versions.yml:md5,3410e8ac349d18c85ddee89337851d38" ] ], - "timestamp": "2023-11-23T13:56:00.475164879" + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.3" + }, + "timestamp": "2024-07-22T12:33:35.177738" }, - "rs_versions": { + "sarscov2 [bam] - forward strandedness - stub": { "content": [ - [ - "versions.yml:md5,3410e8ac349d18c85ddee89337851d38" - ] + { + "0": [ + [ + { + "id": "test", + "strandedness": "forward" + }, + "test.transcripts.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + [ + { + "id": "test", + "strandedness": "forward" + }, + "test.gene.abundance.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + [ + { + "id": "test", + "strandedness": "forward" + }, + "test.coverage.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "3": [ + [ + { + "id": "test", + "strandedness": "forward" + }, + "test.ballgown:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "4": [ + "versions.yml:md5,3410e8ac349d18c85ddee89337851d38" + ], + "abundance": [ + [ + { + "id": "test", + "strandedness": "forward" + }, + "test.gene.abundance.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "ballgown": [ + [ + { + "id": "test", + "strandedness": "forward" + }, + "test.ballgown:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "coverage_gtf": [ + [ + { + "id": "test", + "strandedness": "forward" + }, + "test.coverage.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "transcript_gtf": [ + [ + { + "id": "test", + "strandedness": "forward" + }, + "test.transcripts.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,3410e8ac349d18c85ddee89337851d38" + ] + } ], - "timestamp": "2023-11-23T13:56:13.623892691" + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.3" + }, + "timestamp": "2024-07-22T12:36:32.885078" }, - "rs_gtf_transcript_gtf": { + "sarscov2 [bam] - forward strandedness + reference annotation - stub": { "content": [ - [ - [ - { - "id": "test", - "strandedness": "reverse" - }, - "test.transcripts.gtf:md5,bb346053a8c156b803b055133376c7fa" + { + "0": [ + [ + { + "id": "test", + "strandedness": "forward" + }, + "test.transcripts.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + [ + { + "id": "test", + "strandedness": "forward" + }, + "test.gene.abundance.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + [ + { + "id": "test", + "strandedness": "forward" + }, + "test.coverage.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "3": [ + [ + { + "id": "test", + "strandedness": "forward" + }, + "test.ballgown:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "4": [ + "versions.yml:md5,3410e8ac349d18c85ddee89337851d38" + ], + "abundance": [ + [ + { + "id": "test", + "strandedness": "forward" + }, + "test.gene.abundance.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "ballgown": [ + [ + { + "id": "test", + "strandedness": "forward" + }, + "test.ballgown:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "coverage_gtf": [ + [ + { + "id": "test", + "strandedness": "forward" + }, + "test.coverage.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "transcript_gtf": [ + [ + { + "id": "test", + "strandedness": "forward" + }, + "test.transcripts.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,3410e8ac349d18c85ddee89337851d38" ] - ] + } ], - "timestamp": "2023-11-23T13:56:22.693599559" + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.3" + }, + "timestamp": "2024-07-22T12:36:43.325777" }, - "fs_gtf_abundance": { + "sarscov2 [bam] - reverse strandedness + reference annotation - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "strandedness": "reverse" + }, + "test.transcripts.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + [ + { + "id": "test", + "strandedness": "reverse" + }, + "test.gene.abundance.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + [ + { + "id": "test", + "strandedness": "reverse" + }, + "test.coverage.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "3": [ + [ + { + "id": "test", + "strandedness": "reverse" + }, + "test.ballgown:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "4": [ + "versions.yml:md5,3410e8ac349d18c85ddee89337851d38" + ], + "abundance": [ + [ + { + "id": "test", + "strandedness": "reverse" + }, + "test.gene.abundance.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "ballgown": [ + [ + { + "id": "test", + "strandedness": "reverse" + }, + "test.ballgown:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "coverage_gtf": [ + [ + { + "id": "test", + "strandedness": "reverse" + }, + "test.coverage.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "transcript_gtf": [ + [ + { + "id": "test", + "strandedness": "reverse" + }, + "test.transcripts.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,3410e8ac349d18c85ddee89337851d38" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.3" + }, + "timestamp": "2024-07-22T12:37:06.085936" + }, + "sarscov2 [bam] - reverse strandedness - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "strandedness": "reverse" + }, + "test.transcripts.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + [ + { + "id": "test", + "strandedness": "reverse" + }, + "test.gene.abundance.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + [ + { + "id": "test", + "strandedness": "reverse" + }, + "test.coverage.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "3": [ + [ + { + "id": "test", + "strandedness": "reverse" + }, + "test.ballgown:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "4": [ + "versions.yml:md5,3410e8ac349d18c85ddee89337851d38" + ], + "abundance": [ + [ + { + "id": "test", + "strandedness": "reverse" + }, + "test.gene.abundance.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "ballgown": [ + [ + { + "id": "test", + "strandedness": "reverse" + }, + "test.ballgown:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "coverage_gtf": [ + [ + { + "id": "test", + "strandedness": "reverse" + }, + "test.coverage.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "transcript_gtf": [ + [ + { + "id": "test", + "strandedness": "reverse" + }, + "test.transcripts.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,3410e8ac349d18c85ddee89337851d38" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.3" + }, + "timestamp": "2024-07-22T12:36:53.837578" + }, + "sarscov2 [bam] - reverse strandedness + reference annotation": { "content": [ [ [ { "id": "test", - "strandedness": "forward" + "strandedness": "reverse" }, - "test.gene.abundance.txt:md5,7d8bce7f2a922e367cedccae7267c22e" + "test.gene.abundance.txt:md5,7385b870b955dae2c2ab78a70cf05cce" ] - ] - ], - "timestamp": "2023-11-23T13:56:00.482135418" - }, - "rs_gtf_ballgown": { - "content": [ + ], [ [ { @@ -115,72 +455,54 @@ "t_data.ctab:md5,3b66c065da73ae0dd41cc332eff6a818" ] ] - ] - ], - "timestamp": "2023-11-23T13:56:22.715698347" - }, - "rs_transcript_gtf": { - "content": [ + ], [ [ { "id": "test", "strandedness": "reverse" }, - "test.transcripts.gtf:md5,31c34aec2bf36bb0ea3c16c2afeeeb1f" + "test.transcripts.gtf:md5,bb346053a8c156b803b055133376c7fa" ] - ] - ], - "timestamp": "2023-11-23T13:56:13.590054035" - }, - "rs_gtf_versions": { - "content": [ + ], [ "versions.yml:md5,3410e8ac349d18c85ddee89337851d38" ] ], - "timestamp": "2023-11-23T13:56:22.725513476" + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.3" + }, + "timestamp": "2024-07-22T12:34:03.114695" }, - "fs_gtf_ballgown": { + "sarscov2 [bam] - reverse strandedness": { "content": [ [ [ { "id": "test", - "strandedness": "forward" + "strandedness": "reverse" }, - [ - "e2t.ctab:md5,e981c0038295ae54b63cedb1083f1540", - "e_data.ctab:md5,6b4cf69bc03f3f69890f972a0e8b7471", - "i2t.ctab:md5,8a117c8aa4334b4c2d4711932b006fb4", - "i_data.ctab:md5,be3abe09740603213f83d50dcf81427f", - "t_data.ctab:md5,3b66c065da73ae0dd41cc332eff6a818" - ] + "test.gene.abundance.txt:md5,d6f5c8cadb8458f1df0427cf790246e3" ] - ] - ], - "timestamp": "2023-11-23T13:56:00.494299817" - }, - "fs_versions": { - "content": [ - [ - "versions.yml:md5,3410e8ac349d18c85ddee89337851d38" - ] - ], - "timestamp": "2023-11-23T13:55:41.049417582" - }, - "rs_gtf_abundance": { - "content": [ + ], [ [ { "id": "test", "strandedness": "reverse" }, - "test.gene.abundance.txt:md5,7385b870b955dae2c2ab78a70cf05cce" + "test.transcripts.gtf:md5,31c34aec2bf36bb0ea3c16c2afeeeb1f" ] + ], + [ + "versions.yml:md5,3410e8ac349d18c85ddee89337851d38" ] ], - "timestamp": "2023-11-23T13:56:22.701059059" + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.3" + }, + "timestamp": "2024-07-22T12:33:52.874479" } -} +} \ No newline at end of file diff --git a/modules/nf-core/stringtie/stringtie/tests/nextflow.config b/modules/nf-core/stringtie/stringtie/tests/nextflow.config deleted file mode 100644 index e3aaa0999..000000000 --- a/modules/nf-core/stringtie/stringtie/tests/nextflow.config +++ /dev/null @@ -1,5 +0,0 @@ -process { - withName: 'STRINGTIE_STRINGTIE' { - ext.args = '' - } -} diff --git a/modules/nf-core/ucsc/bedgraphtobigwig/tests/main.nf.test b/modules/nf-core/ucsc/bedgraphtobigwig/tests/main.nf.test index 61beea6b5..d5dbe4a37 100644 --- a/modules/nf-core/ucsc/bedgraphtobigwig/tests/main.nf.test +++ b/modules/nf-core/ucsc/bedgraphtobigwig/tests/main.nf.test @@ -5,11 +5,7 @@ nextflow_process { process "UCSC_BEDGRAPHTOBIGWIG" test("Should run without failures") { - when { - params { - outdir = "$outputDir" - } process { """ input[0] = Channel.of([ @@ -27,7 +23,27 @@ nextflow_process { { assert snapshot(process.out).match() } ) } - } + test("stub") { + options "-stub" + when { + process { + """ + input[0] = Channel.of([ + [ id:'test' ], // meta map + file(params.modules_testdata_base_path + "genomics/sarscov2/illumina/bedgraph/test.bedgraph", checkIfExists: true) + ]) + input[1] = Channel.of(file(params.modules_testdata_base_path + "genomics/sarscov2/genome/genome.sizes", checkIfExists: true)) + """ + } + } + + then { + assertAll ( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } } diff --git a/modules/nf-core/ucsc/bedgraphtobigwig/tests/main.nf.test.snap b/modules/nf-core/ucsc/bedgraphtobigwig/tests/main.nf.test.snap index 526f0e261..7b0181583 100644 --- a/modules/nf-core/ucsc/bedgraphtobigwig/tests/main.nf.test.snap +++ b/modules/nf-core/ucsc/bedgraphtobigwig/tests/main.nf.test.snap @@ -1,4 +1,37 @@ { + "stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.bigWig:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + "versions.yml:md5,93b027527145a243903a3c687c3453b8" + ], + "bigwig": [ + [ + { + "id": "test" + }, + "test.bigWig:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,93b027527145a243903a3c687c3453b8" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.3" + }, + "timestamp": "2024-07-22T12:06:05.176746" + }, "Should run without failures": { "content": [ { @@ -27,9 +60,9 @@ } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.0", + "nextflow": "24.04.3" }, - "timestamp": "2023-10-18T04:06:47.826602" + "timestamp": "2024-07-22T12:05:56.658148" } } \ No newline at end of file diff --git a/subworkflows/nf-core/bam_dedup_stats_samtools_umitools/tests/main.nf.test.snap b/subworkflows/nf-core/bam_dedup_stats_samtools_umitools/tests/main.nf.test.snap index 4be4640e2..4fd70b5f3 100644 --- a/subworkflows/nf-core/bam_dedup_stats_samtools_umitools/tests/main.nf.test.snap +++ b/subworkflows/nf-core/bam_dedup_stats_samtools_umitools/tests/main.nf.test.snap @@ -67,12 +67,7 @@ ] ], "3": [ - [ - { - "id": "test" - }, - "test.bam.csi:md5,d41d8cd98f00b204e9800998ecf8427e" - ] + ], "4": [ [ @@ -122,12 +117,7 @@ ] ], "csi": [ - [ - { - "id": "test" - }, - "test.bam.csi:md5,d41d8cd98f00b204e9800998ecf8427e" - ] + ], "deduplog": [ [ @@ -171,9 +161,9 @@ } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.0", + "nextflow": "24.04.3" }, - "timestamp": "2024-07-03T11:53:25.735454" + "timestamp": "2024-07-22T16:34:35.959581" } -} \ No newline at end of file +} diff --git a/subworkflows/nf-core/bam_markduplicates_picard/tests/main.nf.test.snap b/subworkflows/nf-core/bam_markduplicates_picard/tests/main.nf.test.snap index 8ff332c8b..aecaef935 100644 --- a/subworkflows/nf-core/bam_markduplicates_picard/tests/main.nf.test.snap +++ b/subworkflows/nf-core/bam_markduplicates_picard/tests/main.nf.test.snap @@ -54,22 +54,10 @@ ] ], "4": [ - [ - { - "id": "test", - "single_end": false - }, - "test.bam.crai:md5,d41d8cd98f00b204e9800998ecf8427e" - ] + ], "5": [ - [ - { - "id": "test", - "single_end": false - }, - "test.bam.csi:md5,d41d8cd98f00b204e9800998ecf8427e" - ] + ], "6": [ [ @@ -124,25 +112,13 @@ ] ], "crai": [ - [ - { - "id": "test", - "single_end": false - }, - "test.bam.crai:md5,d41d8cd98f00b204e9800998ecf8427e" - ] + ], "cram": [ ], "csi": [ - [ - { - "id": "test", - "single_end": false - }, - "test.bam.csi:md5,d41d8cd98f00b204e9800998ecf8427e" - ] + ], "flagstat": [ [ @@ -190,10 +166,10 @@ } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.0", + "nextflow": "24.04.3" }, - "timestamp": "2024-07-10T09:50:45.745539171" + "timestamp": "2024-07-22T17:40:02.492073" }, "homo_sapiens - cram - stub": { "content": [ @@ -218,12 +194,7 @@ ] ], "3": [ - [ - { - "id": "test" - }, - "test.cram.bai:md5,d41d8cd98f00b204e9800998ecf8427e" - ] + ], "4": [ [ @@ -234,12 +205,7 @@ ] ], "5": [ - [ - { - "id": "test" - }, - "test.cram.csi:md5,d41d8cd98f00b204e9800998ecf8427e" - ] + ], "6": [ [ @@ -273,12 +239,7 @@ "versions.yml:md5,fcf804c605f455127f2449403d70390c" ], "bai": [ - [ - { - "id": "test" - }, - "test.cram.bai:md5,d41d8cd98f00b204e9800998ecf8427e" - ] + ], "bam": [ @@ -300,12 +261,7 @@ ] ], "csi": [ - [ - { - "id": "test" - }, - "test.cram.csi:md5,d41d8cd98f00b204e9800998ecf8427e" - ] + ], "flagstat": [ [ @@ -349,10 +305,10 @@ } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.0", + "nextflow": "24.04.3" }, - "timestamp": "2024-07-10T09:51:17.13987629" + "timestamp": "2024-07-22T17:40:24.423583" }, "sarscov2 - bam": { "content": [ diff --git a/subworkflows/nf-core/bam_sort_stats_samtools/tests/main.nf.test.snap b/subworkflows/nf-core/bam_sort_stats_samtools/tests/main.nf.test.snap index 044536f91..b7f4da177 100644 --- a/subworkflows/nf-core/bam_sort_stats_samtools/tests/main.nf.test.snap +++ b/subworkflows/nf-core/bam_sort_stats_samtools/tests/main.nf.test.snap @@ -37,10 +37,10 @@ ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.0", + "nextflow": "24.04.3" }, - "timestamp": "2024-07-03T12:20:38.911799" + "timestamp": "2024-07-22T17:02:44.34964" }, "test_bam_sort_stats_samtools_paired_end": { "content": [ @@ -80,10 +80,10 @@ ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.0", + "nextflow": "24.04.3" }, - "timestamp": "2024-07-03T12:20:51.171967" + "timestamp": "2024-07-22T17:03:02.583095" }, "test_bam_sort_stats_samtools_single_end - stub": { "content": [ @@ -107,13 +107,7 @@ ] ], "2": [ - [ - { - "id": "test", - "single_end": false - }, - "test.bam.csi:md5,d41d8cd98f00b204e9800998ecf8427e" - ] + ], "3": [ [ @@ -168,13 +162,7 @@ ] ], "csi": [ - [ - { - "id": "test", - "single_end": false - }, - "test.bam.csi:md5,d41d8cd98f00b204e9800998ecf8427e" - ] + ], "flagstat": [ [ @@ -213,10 +201,10 @@ } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.0", + "nextflow": "24.04.3" }, - "timestamp": "2024-07-03T12:13:52.386146" + "timestamp": "2024-07-22T17:03:22.328703" }, "test_bam_sort_stats_samtools_paired_end - stub": { "content": [ @@ -240,13 +228,7 @@ ] ], "2": [ - [ - { - "id": "test", - "single_end": false - }, - "test.bam.csi:md5,d41d8cd98f00b204e9800998ecf8427e" - ] + ], "3": [ [ @@ -301,13 +283,7 @@ ] ], "csi": [ - [ - { - "id": "test", - "single_end": false - }, - "test.bam.csi:md5,d41d8cd98f00b204e9800998ecf8427e" - ] + ], "flagstat": [ [ @@ -346,9 +322,9 @@ } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.0", + "nextflow": "24.04.3" }, - "timestamp": "2024-07-03T12:14:06.231663" + "timestamp": "2024-07-22T17:03:38.833662" } } \ No newline at end of file diff --git a/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/main.nf.test.snap b/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/main.nf.test.snap index 37cd050ab..e7d1f51ed 100644 --- a/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/main.nf.test.snap +++ b/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/main.nf.test.snap @@ -54,10 +54,10 @@ ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.0", + "nextflow": "24.04.3" }, - "timestamp": "2024-07-03T15:57:53.714055" + "timestamp": "2024-07-22T16:56:01.933832" }, "save_trimmed_fail": { "content": [ @@ -126,10 +126,10 @@ ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.0", + "nextflow": "24.04.3" }, - "timestamp": "2024-07-03T15:59:13.933952" + "timestamp": "2024-07-22T16:57:38.736" }, "skip_umi_extract": { "content": [ @@ -188,10 +188,10 @@ ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.0", + "nextflow": "24.04.3" }, - "timestamp": "2024-07-03T15:58:30.162096" + "timestamp": "2024-07-22T16:56:47.905105" }, "umi_discard_read = 2": { "content": [ @@ -250,10 +250,10 @@ ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.0", + "nextflow": "24.04.3" }, - "timestamp": "2024-07-03T15:58:45.606298" + "timestamp": "2024-07-22T16:57:05.436744" }, "umi_discard_read = 2 - stub": { "content": [ @@ -475,10 +475,10 @@ } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.0", + "nextflow": "24.04.3" }, - "timestamp": "2024-07-03T16:00:52.777129" + "timestamp": "2024-07-22T16:59:27.273892" }, "skip_trimming - stub": { "content": [ @@ -535,10 +535,10 @@ ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.0", + "nextflow": "24.04.3" }, - "timestamp": "2024-07-04T16:05:39.721894" + "timestamp": "2024-07-22T16:59:39.247758" }, "save_merged": { "content": [ @@ -603,10 +603,10 @@ ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.0", + "nextflow": "24.04.3" }, - "timestamp": "2024-07-03T15:56:20.635871" + "timestamp": "2024-07-22T16:57:57.472342" }, "skip_trimming": { "content": [ @@ -637,10 +637,10 @@ ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.0", + "nextflow": "24.04.3" }, - "timestamp": "2024-07-04T14:06:02.495425" + "timestamp": "2024-07-22T16:57:19.875543" }, "with_umi": { "content": [ @@ -694,10 +694,10 @@ ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.0", + "nextflow": "24.04.3" }, - "timestamp": "2024-07-03T15:58:15.584817" + "timestamp": "2024-07-22T16:56:26.778625" }, "min_trimmed_reads = 26": { "content": [ @@ -762,10 +762,10 @@ ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.0", + "nextflow": "24.04.3" }, - "timestamp": "2024-07-03T15:59:48.175299" + "timestamp": "2024-07-22T16:58:16.36697" }, "min_trimmed_reads = 26 - stub": { "content": [ @@ -999,10 +999,10 @@ } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.0", + "nextflow": "24.04.3" }, - "timestamp": "2024-07-03T16:01:38.786828" + "timestamp": "2024-07-22T17:00:16.524361" }, "with_umi - stub": { "content": [ @@ -1232,10 +1232,10 @@ } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.0", + "nextflow": "24.04.3" }, - "timestamp": "2024-07-03T16:00:28.205236" + "timestamp": "2024-07-22T16:58:56.42517" }, "skip_fastqc - stub": { "content": [ @@ -1405,10 +1405,10 @@ } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.0", + "nextflow": "24.04.3" }, - "timestamp": "2024-07-03T16:00:12.650202" + "timestamp": "2024-07-22T16:58:41.207281" }, "save_merged - stub": { "content": [ @@ -1642,10 +1642,10 @@ } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.0", + "nextflow": "24.04.3" }, - "timestamp": "2024-07-03T16:01:27.746285" + "timestamp": "2024-07-22T17:00:03.695409" }, "sarscov2 paired-end [fastq]": { "content": [ @@ -1704,10 +1704,10 @@ ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.0", + "nextflow": "24.04.3" }, - "timestamp": "2024-07-03T15:57:43.06088" + "timestamp": "2024-07-22T16:55:50.614571" }, "sarscov2 paired-end [fastq] - stub": { "content": [ @@ -1929,10 +1929,10 @@ } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.0", + "nextflow": "24.04.3" }, - "timestamp": "2024-07-03T16:00:01.063973" + "timestamp": "2024-07-22T16:58:29.296468" }, "save_trimmed_fail - stub": { "content": [ @@ -2174,10 +2174,10 @@ } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.0", + "nextflow": "24.04.3" }, - "timestamp": "2024-07-05T16:30:39.079822" + "timestamp": "2024-07-22T16:59:51.615894" }, "skip_umi_extract - stub": { "content": [ @@ -2399,9 +2399,9 @@ } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.0", + "nextflow": "24.04.3" }, - "timestamp": "2024-07-03T16:00:39.257562" + "timestamp": "2024-07-22T16:59:12.592278" } } \ No newline at end of file diff --git a/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/tests/main.nf.test.snap b/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/tests/main.nf.test.snap index f38ae9941..034591495 100644 --- a/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/tests/main.nf.test.snap +++ b/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/tests/main.nf.test.snap @@ -3,7 +3,7 @@ "content": [ { "0": [ - + ], "1": [ [ @@ -33,13 +33,13 @@ ] ], "4": [ - + ], "5": [ - + ], "6": [ - + ], "7": [ [ @@ -83,10 +83,10 @@ ] ], "reads": [ - + ], "trim_html": [ - + ], "trim_log": [ [ @@ -107,10 +107,10 @@ ] ], "trim_unpaired": [ - + ], "trim_zip": [ - + ], "umi_log": [ [ @@ -129,16 +129,16 @@ } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.0", + "nextflow": "24.04.3" }, - "timestamp": "2024-07-03T14:13:53.031608" + "timestamp": "2024-07-22T17:06:34.919444" }, "test paired end read without UMI - stub": { "content": [ { "0": [ - + ], "1": [ [ @@ -159,16 +159,16 @@ ] ], "3": [ - + ], "4": [ - + ], "5": [ - + ], "6": [ - + ], "7": [ [ @@ -214,10 +214,10 @@ ] ], "reads": [ - + ], "trim_html": [ - + ], "trim_log": [ [ @@ -241,13 +241,13 @@ ] ], "trim_unpaired": [ - + ], "trim_zip": [ - + ], "umi_log": [ - + ], "versions": [ "versions.yml:md5,0a5b8fa83ba29cf645bf9e9471cca150", @@ -256,10 +256,10 @@ } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.0", + "nextflow": "24.04.3" }, - "timestamp": "2024-07-03T14:14:06.231746" + "timestamp": "2024-07-22T17:06:51.765414" }, "test paired end read without UMI": { "content": [ @@ -285,7 +285,7 @@ ] ], [ - + ], [ "versions.yml:md5,0a5b8fa83ba29cf645bf9e9471cca150", @@ -293,10 +293,10 @@ ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.0", + "nextflow": "24.04.3" }, - "timestamp": "2024-07-03T14:13:11.46458" + "timestamp": "2024-07-22T17:05:37.366404" }, "test single end read with UMI": { "content": [ @@ -319,7 +319,7 @@ ] ], [ - + ], [ "versions.yml:md5,0a5b8fa83ba29cf645bf9e9471cca150", @@ -328,10 +328,10 @@ ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.0", + "nextflow": "24.04.3" }, - "timestamp": "2024-07-03T14:12:37.894066" + "timestamp": "2024-07-22T17:04:53.072227" }, "test paired end read with UMI": { "content": [ @@ -354,7 +354,7 @@ ] ], [ - + ], [ "versions.yml:md5,0a5b8fa83ba29cf645bf9e9471cca150", @@ -363,34 +363,34 @@ ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.0", + "nextflow": "24.04.3" }, - "timestamp": "2024-07-03T14:12:56.665213" + "timestamp": "2024-07-22T17:05:16.709704" }, "test skip all steps": { "content": [ [ - + ], [ - + ], [ - + ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.0", + "nextflow": "24.04.3" }, - "timestamp": "2024-07-03T14:13:22.584359" + "timestamp": "2024-07-22T17:05:49.455992" }, "test single end read with UMI - stub": { "content": [ { "0": [ - + ], "1": [ [ @@ -420,13 +420,13 @@ ] ], "4": [ - + ], "5": [ - + ], "6": [ - + ], "7": [ [ @@ -470,10 +470,10 @@ ] ], "reads": [ - + ], "trim_html": [ - + ], "trim_log": [ [ @@ -494,10 +494,10 @@ ] ], "trim_unpaired": [ - + ], "trim_zip": [ - + ], "umi_log": [ [ @@ -516,9 +516,9 @@ } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.0", + "nextflow": "24.04.3" }, - "timestamp": "2024-07-03T14:13:37.957993" + "timestamp": "2024-07-22T17:06:09.844235" } } From 784aeb2ed5f19bb54629e13cea20e02ce9afc6d3 Mon Sep 17 00:00:00 2001 From: maxulysse Date: Mon, 22 Jul 2024 19:45:55 +0200 Subject: [PATCH 512/634] update snapshots --- .../markduplicates/tests/main.nf.test.snap | 36 +++++++++---------- .../local/align_star/tests/main.nf.test.snap | 28 +++++---------- .../quantify_rsem/tests/main.nf.test.snap | 22 +++--------- .../tests/main.nf.test.snap | 34 +++++++++--------- 4 files changed, 48 insertions(+), 72 deletions(-) diff --git a/modules/nf-core/picard/markduplicates/tests/main.nf.test.snap b/modules/nf-core/picard/markduplicates/tests/main.nf.test.snap index 8b37e65b1..1a6598aa9 100644 --- a/modules/nf-core/picard/markduplicates/tests/main.nf.test.snap +++ b/modules/nf-core/picard/markduplicates/tests/main.nf.test.snap @@ -27,7 +27,7 @@ ] ], "4": [ - "versions.yml:md5,33dd4b32140e801e0d2e50aeefd0788d" + "versions.yml:md5,b699af51b1956f3810f8a7c066e0ab17" ], "bai": [ @@ -54,7 +54,7 @@ ] ], "versions": [ - "versions.yml:md5,33dd4b32140e801e0d2e50aeefd0788d" + "versions.yml:md5,b699af51b1956f3810f8a7c066e0ab17" ] } ], @@ -62,7 +62,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.3" }, - "timestamp": "2024-07-22T11:56:32.025869" + "timestamp": "2024-07-22T19:34:20.663558" }, "sarscov2 [unsorted bam] - stub": { "content": [ @@ -92,7 +92,7 @@ ] ], "4": [ - "versions.yml:md5,33dd4b32140e801e0d2e50aeefd0788d" + "versions.yml:md5,b699af51b1956f3810f8a7c066e0ab17" ], "bai": [ @@ -119,7 +119,7 @@ ] ], "versions": [ - "versions.yml:md5,33dd4b32140e801e0d2e50aeefd0788d" + "versions.yml:md5,b699af51b1956f3810f8a7c066e0ab17" ] } ], @@ -127,61 +127,61 @@ "nf-test": "0.9.0", "nextflow": "24.04.3" }, - "timestamp": "2024-07-22T11:56:20.497105" + "timestamp": "2024-07-22T19:34:01.021052" }, "sarscov2 [unsorted bam]": { "content": [ "test.marked.bam", [ "## htsjdk.samtools.metrics.StringHeader", - "# MarkDuplicates --INPUT test.paired_end.bam --OUTPUT test.marked.bam --METRICS_FILE test.marked.MarkDuplicates.metrics.txt --ASSUME_SORT_ORDER queryname --MAX_SEQUENCES_FOR_DISK_READ_ENDS_MAP 50000 --MAX_FILE_HANDLES_FOR_READ_ENDS_MAP 8000 --SORTING_COLLECTION_SIZE_RATIO 0.25 --TAG_DUPLICATE_SET_MEMBERS false --REMOVE_SEQUENCING_DUPLICATES false --TAGGING_POLICY DontTag --CLEAR_DT true --DUPLEX_UMI false --FLOW_MODE false --FLOW_DUP_STRATEGY FLOW_QUALITY_SUM_STRATEGY --USE_END_IN_UNPAIRED_READS false --USE_UNPAIRED_CLIPPED_END false --UNPAIRED_END_UNCERTAINTY 0 --UNPAIRED_START_UNCERTAINTY 0 --FLOW_SKIP_FIRST_N_FLOWS 0 --FLOW_Q_IS_KNOWN_END false --FLOW_EFFECTIVE_QUALITY_THRESHOLD 15 --ADD_PG_TAG_TO_READS true --REMOVE_DUPLICATES false --ASSUME_SORTED false --DUPLICATE_SCORING_STRATEGY SUM_OF_BASE_QUALITIES --PROGRAM_RECORD_ID MarkDuplicates --PROGRAM_GROUP_NAME MarkDuplicates --READ_NAME_REGEX --OPTICAL_DUPLICATE_PIXEL_DISTANCE 100 --MAX_OPTICAL_DUPLICATE_SET_SIZE 300000 --VERBOSITY INFO --QUIET false --VALIDATION_STRINGENCY STRICT --COMPRESSION_LEVEL 5 --MAX_RECORDS_IN_RAM 500000 --CREATE_INDEX false --CREATE_MD5_FILE false --help false --version false --showHidden false --USE_JDK_DEFLATER false --USE_JDK_INFLATER false", + "# MarkDuplicates --INPUT test.paired_end.bam --OUTPUT test.marked.bam --METRICS_FILE test.marked.MarkDuplicates.metrics.txt --ASSUME_SORT_ORDER queryname --MAX_SEQUENCES_FOR_DISK_READ_ENDS_MAP 50000 --MAX_FILE_HANDLES_FOR_READ_ENDS_MAP 8000 --SORTING_COLLECTION_SIZE_RATIO 0.25 --TAG_DUPLICATE_SET_MEMBERS false --REMOVE_SEQUENCING_DUPLICATES false --TAGGING_POLICY DontTag --CLEAR_DT true --DUPLEX_UMI false --FLOW_MODE false --FLOW_QUALITY_SUM_STRATEGY false --USE_END_IN_UNPAIRED_READS false --USE_UNPAIRED_CLIPPED_END false --UNPAIRED_END_UNCERTAINTY 0 --FLOW_SKIP_FIRST_N_FLOWS 0 --FLOW_Q_IS_KNOWN_END false --FLOW_EFFECTIVE_QUALITY_THRESHOLD 15 --ADD_PG_TAG_TO_READS true --REMOVE_DUPLICATES false --ASSUME_SORTED false --DUPLICATE_SCORING_STRATEGY SUM_OF_BASE_QUALITIES --PROGRAM_RECORD_ID MarkDuplicates --PROGRAM_GROUP_NAME MarkDuplicates --READ_NAME_REGEX --OPTICAL_DUPLICATE_PIXEL_DISTANCE 100 --MAX_OPTICAL_DUPLICATE_SET_SIZE 300000 --VERBOSITY INFO --QUIET false --VALIDATION_STRINGENCY STRICT --COMPRESSION_LEVEL 5 --MAX_RECORDS_IN_RAM 500000 --CREATE_INDEX false --CREATE_MD5_FILE false --help false --version false --showHidden false --USE_JDK_DEFLATER false --USE_JDK_INFLATER false", "## htsjdk.samtools.metrics.StringHeader" ], [ - "versions.yml:md5,33dd4b32140e801e0d2e50aeefd0788d" + "versions.yml:md5,b699af51b1956f3810f8a7c066e0ab17" ] ], "meta": { "nf-test": "0.9.0", "nextflow": "24.04.3" }, - "timestamp": "2024-07-22T11:50:14.881666" + "timestamp": "2024-07-22T19:32:49.777427" }, "sarscov2 [sorted bam]": { "content": [ "test.marked.bam", [ "## htsjdk.samtools.metrics.StringHeader", - "# MarkDuplicates --INPUT test.paired_end.sorted.bam --OUTPUT test.marked.bam --METRICS_FILE test.marked.MarkDuplicates.metrics.txt --ASSUME_SORT_ORDER queryname --MAX_SEQUENCES_FOR_DISK_READ_ENDS_MAP 50000 --MAX_FILE_HANDLES_FOR_READ_ENDS_MAP 8000 --SORTING_COLLECTION_SIZE_RATIO 0.25 --TAG_DUPLICATE_SET_MEMBERS false --REMOVE_SEQUENCING_DUPLICATES false --TAGGING_POLICY DontTag --CLEAR_DT true --DUPLEX_UMI false --FLOW_MODE false --FLOW_DUP_STRATEGY FLOW_QUALITY_SUM_STRATEGY --USE_END_IN_UNPAIRED_READS false --USE_UNPAIRED_CLIPPED_END false --UNPAIRED_END_UNCERTAINTY 0 --UNPAIRED_START_UNCERTAINTY 0 --FLOW_SKIP_FIRST_N_FLOWS 0 --FLOW_Q_IS_KNOWN_END false --FLOW_EFFECTIVE_QUALITY_THRESHOLD 15 --ADD_PG_TAG_TO_READS true --REMOVE_DUPLICATES false --ASSUME_SORTED false --DUPLICATE_SCORING_STRATEGY SUM_OF_BASE_QUALITIES --PROGRAM_RECORD_ID MarkDuplicates --PROGRAM_GROUP_NAME MarkDuplicates --READ_NAME_REGEX --OPTICAL_DUPLICATE_PIXEL_DISTANCE 100 --MAX_OPTICAL_DUPLICATE_SET_SIZE 300000 --VERBOSITY INFO --QUIET false --VALIDATION_STRINGENCY STRICT --COMPRESSION_LEVEL 5 --MAX_RECORDS_IN_RAM 500000 --CREATE_INDEX false --CREATE_MD5_FILE false --help false --version false --showHidden false --USE_JDK_DEFLATER false --USE_JDK_INFLATER false", + "# MarkDuplicates --INPUT test.paired_end.sorted.bam --OUTPUT test.marked.bam --METRICS_FILE test.marked.MarkDuplicates.metrics.txt --ASSUME_SORT_ORDER queryname --MAX_SEQUENCES_FOR_DISK_READ_ENDS_MAP 50000 --MAX_FILE_HANDLES_FOR_READ_ENDS_MAP 8000 --SORTING_COLLECTION_SIZE_RATIO 0.25 --TAG_DUPLICATE_SET_MEMBERS false --REMOVE_SEQUENCING_DUPLICATES false --TAGGING_POLICY DontTag --CLEAR_DT true --DUPLEX_UMI false --FLOW_MODE false --FLOW_QUALITY_SUM_STRATEGY false --USE_END_IN_UNPAIRED_READS false --USE_UNPAIRED_CLIPPED_END false --UNPAIRED_END_UNCERTAINTY 0 --FLOW_SKIP_FIRST_N_FLOWS 0 --FLOW_Q_IS_KNOWN_END false --FLOW_EFFECTIVE_QUALITY_THRESHOLD 15 --ADD_PG_TAG_TO_READS true --REMOVE_DUPLICATES false --ASSUME_SORTED false --DUPLICATE_SCORING_STRATEGY SUM_OF_BASE_QUALITIES --PROGRAM_RECORD_ID MarkDuplicates --PROGRAM_GROUP_NAME MarkDuplicates --READ_NAME_REGEX --OPTICAL_DUPLICATE_PIXEL_DISTANCE 100 --MAX_OPTICAL_DUPLICATE_SET_SIZE 300000 --VERBOSITY INFO --QUIET false --VALIDATION_STRINGENCY STRICT --COMPRESSION_LEVEL 5 --MAX_RECORDS_IN_RAM 500000 --CREATE_INDEX false --CREATE_MD5_FILE false --help false --version false --showHidden false --USE_JDK_DEFLATER false --USE_JDK_INFLATER false", "## htsjdk.samtools.metrics.StringHeader" ], [ - "versions.yml:md5,33dd4b32140e801e0d2e50aeefd0788d" + "versions.yml:md5,b699af51b1956f3810f8a7c066e0ab17" ] ], "meta": { "nf-test": "0.9.0", "nextflow": "24.04.3" }, - "timestamp": "2024-07-22T11:52:03.11428" + "timestamp": "2024-07-22T19:33:14.462596" }, "homo_sapiens [cram]": { "content": [ "test.marked.cram", [ "## htsjdk.samtools.metrics.StringHeader", - "# MarkDuplicates --INPUT test.paired_end.sorted.cram --OUTPUT test.marked.cram --METRICS_FILE test.marked.MarkDuplicates.metrics.txt --ASSUME_SORT_ORDER queryname --REFERENCE_SEQUENCE genome.fasta --MAX_SEQUENCES_FOR_DISK_READ_ENDS_MAP 50000 --MAX_FILE_HANDLES_FOR_READ_ENDS_MAP 8000 --SORTING_COLLECTION_SIZE_RATIO 0.25 --TAG_DUPLICATE_SET_MEMBERS false --REMOVE_SEQUENCING_DUPLICATES false --TAGGING_POLICY DontTag --CLEAR_DT true --DUPLEX_UMI false --FLOW_MODE false --FLOW_DUP_STRATEGY FLOW_QUALITY_SUM_STRATEGY --USE_END_IN_UNPAIRED_READS false --USE_UNPAIRED_CLIPPED_END false --UNPAIRED_END_UNCERTAINTY 0 --UNPAIRED_START_UNCERTAINTY 0 --FLOW_SKIP_FIRST_N_FLOWS 0 --FLOW_Q_IS_KNOWN_END false --FLOW_EFFECTIVE_QUALITY_THRESHOLD 15 --ADD_PG_TAG_TO_READS true --REMOVE_DUPLICATES false --ASSUME_SORTED false --DUPLICATE_SCORING_STRATEGY SUM_OF_BASE_QUALITIES --PROGRAM_RECORD_ID MarkDuplicates --PROGRAM_GROUP_NAME MarkDuplicates --READ_NAME_REGEX --OPTICAL_DUPLICATE_PIXEL_DISTANCE 100 --MAX_OPTICAL_DUPLICATE_SET_SIZE 300000 --VERBOSITY INFO --QUIET false --VALIDATION_STRINGENCY STRICT --COMPRESSION_LEVEL 5 --MAX_RECORDS_IN_RAM 500000 --CREATE_INDEX false --CREATE_MD5_FILE false --help false --version false --showHidden false --USE_JDK_DEFLATER false --USE_JDK_INFLATER false", + "# MarkDuplicates --INPUT test.paired_end.sorted.cram --OUTPUT test.marked.cram --METRICS_FILE test.marked.MarkDuplicates.metrics.txt --ASSUME_SORT_ORDER queryname --REFERENCE_SEQUENCE genome.fasta --MAX_SEQUENCES_FOR_DISK_READ_ENDS_MAP 50000 --MAX_FILE_HANDLES_FOR_READ_ENDS_MAP 8000 --SORTING_COLLECTION_SIZE_RATIO 0.25 --TAG_DUPLICATE_SET_MEMBERS false --REMOVE_SEQUENCING_DUPLICATES false --TAGGING_POLICY DontTag --CLEAR_DT true --DUPLEX_UMI false --FLOW_MODE false --FLOW_QUALITY_SUM_STRATEGY false --USE_END_IN_UNPAIRED_READS false --USE_UNPAIRED_CLIPPED_END false --UNPAIRED_END_UNCERTAINTY 0 --FLOW_SKIP_FIRST_N_FLOWS 0 --FLOW_Q_IS_KNOWN_END false --FLOW_EFFECTIVE_QUALITY_THRESHOLD 15 --ADD_PG_TAG_TO_READS true --REMOVE_DUPLICATES false --ASSUME_SORTED false --DUPLICATE_SCORING_STRATEGY SUM_OF_BASE_QUALITIES --PROGRAM_RECORD_ID MarkDuplicates --PROGRAM_GROUP_NAME MarkDuplicates --READ_NAME_REGEX --OPTICAL_DUPLICATE_PIXEL_DISTANCE 100 --MAX_OPTICAL_DUPLICATE_SET_SIZE 300000 --VERBOSITY INFO --QUIET false --VALIDATION_STRINGENCY STRICT --COMPRESSION_LEVEL 5 --MAX_RECORDS_IN_RAM 500000 --CREATE_INDEX false --CREATE_MD5_FILE false --help false --version false --showHidden false --USE_JDK_DEFLATER false --USE_JDK_INFLATER false", "## htsjdk.samtools.metrics.StringHeader" ], [ - "versions.yml:md5,33dd4b32140e801e0d2e50aeefd0788d" + "versions.yml:md5,b699af51b1956f3810f8a7c066e0ab17" ] ], "meta": { "nf-test": "0.9.0", "nextflow": "24.04.3" }, - "timestamp": "2024-07-22T11:53:05.403139" + "timestamp": "2024-07-22T19:33:40.215159" }, "homo_sapiens [cram] - stub": { "content": [ @@ -211,7 +211,7 @@ ] ], "4": [ - "versions.yml:md5,33dd4b32140e801e0d2e50aeefd0788d" + "versions.yml:md5,b699af51b1956f3810f8a7c066e0ab17" ], "bai": [ @@ -238,7 +238,7 @@ ] ], "versions": [ - "versions.yml:md5,33dd4b32140e801e0d2e50aeefd0788d" + "versions.yml:md5,b699af51b1956f3810f8a7c066e0ab17" ] } ], @@ -246,6 +246,6 @@ "nf-test": "0.9.0", "nextflow": "24.04.3" }, - "timestamp": "2024-07-22T11:56:43.438188" + "timestamp": "2024-07-22T19:34:51.753515" } } \ No newline at end of file diff --git a/subworkflows/local/align_star/tests/main.nf.test.snap b/subworkflows/local/align_star/tests/main.nf.test.snap index 19689cc0c..e3a4b2e03 100644 --- a/subworkflows/local/align_star/tests/main.nf.test.snap +++ b/subworkflows/local/align_star/tests/main.nf.test.snap @@ -150,13 +150,7 @@ ] ], [ - [ - { - "id": "test", - "single_end": false - }, - "test.bam.csi:md5,d41d8cd98f00b204e9800998ecf8427e" - ] + ], [ [ @@ -248,10 +242,10 @@ ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.0", + "nextflow": "24.04.3" }, - "timestamp": "2024-07-04T15:46:28.887728" + "timestamp": "2024-07-22T19:43:30.675108" }, "star - no igenomes": { "content": [ @@ -404,13 +398,7 @@ ] ], [ - [ - { - "id": "test", - "single_end": false - }, - "test.bam.csi:md5,d41d8cd98f00b204e9800998ecf8427e" - ] + ], [ [ @@ -502,9 +490,9 @@ ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.0", + "nextflow": "24.04.3" }, - "timestamp": "2024-07-04T15:46:52.513122" + "timestamp": "2024-07-22T19:43:56.680384" } } \ No newline at end of file diff --git a/subworkflows/local/quantify_rsem/tests/main.nf.test.snap b/subworkflows/local/quantify_rsem/tests/main.nf.test.snap index b8fe0d163..847be5d62 100644 --- a/subworkflows/local/quantify_rsem/tests/main.nf.test.snap +++ b/subworkflows/local/quantify_rsem/tests/main.nf.test.snap @@ -132,13 +132,7 @@ ] ], "9": [ - [ - { - "id": "test", - "strandedness": "forward" - }, - "test.bam.csi:md5,d41d8cd98f00b204e9800998ecf8427e" - ] + ], "bai": [ [ @@ -204,13 +198,7 @@ ] ], "csi": [ - [ - { - "id": "test", - "strandedness": "forward" - }, - "test.bam.csi:md5,d41d8cd98f00b204e9800998ecf8427e" - ] + ], "flagstat": [ [ @@ -281,10 +269,10 @@ } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.0", + "nextflow": "24.04.3" }, - "timestamp": "2024-07-03T19:53:42.558374" + "timestamp": "2024-07-22T19:32:06.579549" }, "homo_sapiens": { "content": [ diff --git a/subworkflows/nf-core/bam_markduplicates_picard/tests/main.nf.test.snap b/subworkflows/nf-core/bam_markduplicates_picard/tests/main.nf.test.snap index aecaef935..32788a18c 100644 --- a/subworkflows/nf-core/bam_markduplicates_picard/tests/main.nf.test.snap +++ b/subworkflows/nf-core/bam_markduplicates_picard/tests/main.nf.test.snap @@ -2,23 +2,23 @@ "homo_sapiens - cram": { "content": [ "test.cram", - "test.cram.crai:md5,cb5268070f99cdd0d86f43613e5fc7db", + "test.cram.crai:md5,78d47ba01ac4e05f3ae1e353902a989e", "test.flagstat:md5,93b0ef463df947ede1f42ff60396c34d", "test.idxstats:md5,e179601fa7b8ebce81ac3765206f6c15", "test.stats:md5,372a7d9d9081aa009b21343a913beb14", [ "versions.yml:md5,0d170c963555870ac9a0d438bf6c2f93", "versions.yml:md5,3729819c49e6d8eed9ada247e5d77de1", + "versions.yml:md5,966dcea920866a87b55e665563864fc9", "versions.yml:md5,a62ca6eb27e59dd6f03a93fa8656e656", - "versions.yml:md5,adb00ecc904d3a27f552c360ac35a8a9", "versions.yml:md5,fcf804c605f455127f2449403d70390c" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.0", + "nextflow": "24.04.3" }, - "timestamp": "2024-07-10T09:50:25.483402093" + "timestamp": "2024-07-22T19:28:15.15911" }, "sarscov2 - bam - stub": { "content": [ @@ -89,8 +89,8 @@ "9": [ "versions.yml:md5,0d170c963555870ac9a0d438bf6c2f93", "versions.yml:md5,3729819c49e6d8eed9ada247e5d77de1", + "versions.yml:md5,966dcea920866a87b55e665563864fc9", "versions.yml:md5,a62ca6eb27e59dd6f03a93fa8656e656", - "versions.yml:md5,adb00ecc904d3a27f552c360ac35a8a9", "versions.yml:md5,fcf804c605f455127f2449403d70390c" ], "bai": [ @@ -159,8 +159,8 @@ "versions": [ "versions.yml:md5,0d170c963555870ac9a0d438bf6c2f93", "versions.yml:md5,3729819c49e6d8eed9ada247e5d77de1", + "versions.yml:md5,966dcea920866a87b55e665563864fc9", "versions.yml:md5,a62ca6eb27e59dd6f03a93fa8656e656", - "versions.yml:md5,adb00ecc904d3a27f552c360ac35a8a9", "versions.yml:md5,fcf804c605f455127f2449403d70390c" ] } @@ -169,7 +169,7 @@ "nf-test": "0.9.0", "nextflow": "24.04.3" }, - "timestamp": "2024-07-22T17:40:02.492073" + "timestamp": "2024-07-22T19:28:40.128144" }, "homo_sapiens - cram - stub": { "content": [ @@ -234,8 +234,8 @@ "9": [ "versions.yml:md5,0d170c963555870ac9a0d438bf6c2f93", "versions.yml:md5,3729819c49e6d8eed9ada247e5d77de1", + "versions.yml:md5,966dcea920866a87b55e665563864fc9", "versions.yml:md5,a62ca6eb27e59dd6f03a93fa8656e656", - "versions.yml:md5,adb00ecc904d3a27f552c360ac35a8a9", "versions.yml:md5,fcf804c605f455127f2449403d70390c" ], "bai": [ @@ -298,8 +298,8 @@ "versions": [ "versions.yml:md5,0d170c963555870ac9a0d438bf6c2f93", "versions.yml:md5,3729819c49e6d8eed9ada247e5d77de1", + "versions.yml:md5,966dcea920866a87b55e665563864fc9", "versions.yml:md5,a62ca6eb27e59dd6f03a93fa8656e656", - "versions.yml:md5,adb00ecc904d3a27f552c360ac35a8a9", "versions.yml:md5,fcf804c605f455127f2449403d70390c" ] } @@ -308,27 +308,27 @@ "nf-test": "0.9.0", "nextflow": "24.04.3" }, - "timestamp": "2024-07-22T17:40:24.423583" + "timestamp": "2024-07-22T19:29:04.075263" }, "sarscov2 - bam": { "content": [ - "test.bam:md5,d1a53820e4a6e42ca8aceab51d74cf57", - "test.bam.bai:md5,be9485a644813773fb893a0a6b9b977c", + "test.bam:md5,3091fe6ba1b7530f382fe40b9fd8f45b", + "test.bam.bai:md5,4d3ae8d013444b55e17aa0149a2ab404", "test.flagstat:md5,4f7ffd1e6a5e85524d443209ac97d783", "test.idxstats:md5,df60a8c8d6621100d05178c93fb053a2", "test.stats:md5,cca83e4fc9406fc3875b5e60055d6574", [ "versions.yml:md5,0d170c963555870ac9a0d438bf6c2f93", "versions.yml:md5,3729819c49e6d8eed9ada247e5d77de1", + "versions.yml:md5,966dcea920866a87b55e665563864fc9", "versions.yml:md5,a62ca6eb27e59dd6f03a93fa8656e656", - "versions.yml:md5,adb00ecc904d3a27f552c360ac35a8a9", "versions.yml:md5,fcf804c605f455127f2449403d70390c" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.0", + "nextflow": "24.04.3" }, - "timestamp": "2024-07-10T09:50:01.597322113" + "timestamp": "2024-07-22T19:27:47.343274" } } \ No newline at end of file From 30afc0e105b62f161baa9b53407cfc602f4e3bae Mon Sep 17 00:00:00 2001 From: maxulysse Date: Mon, 22 Jul 2024 20:09:06 +0200 Subject: [PATCH 513/634] update stringtie_stringtie --- modules.json | 2 +- modules/nf-core/stringtie/stringtie/tests/main.nf.test | 1 + modules/nf-core/stringtie/stringtie/tests/nextflow.config | 5 +++++ 3 files changed, 7 insertions(+), 1 deletion(-) create mode 100644 modules/nf-core/stringtie/stringtie/tests/nextflow.config diff --git a/modules.json b/modules.json index 75defb0e9..5f2113653 100644 --- a/modules.json +++ b/modules.json @@ -217,7 +217,7 @@ }, "stringtie/stringtie": { "branch": "master", - "git_sha": "46eca555142d6e597729fcb682adcc791796f514", + "git_sha": "c789476080a150f87066ca3ed42a622339a26c0b", "installed_by": ["modules"] }, "subread/featurecounts": { diff --git a/modules/nf-core/stringtie/stringtie/tests/main.nf.test b/modules/nf-core/stringtie/stringtie/tests/main.nf.test index 26be5425a..dc315a314 100644 --- a/modules/nf-core/stringtie/stringtie/tests/main.nf.test +++ b/modules/nf-core/stringtie/stringtie/tests/main.nf.test @@ -3,6 +3,7 @@ nextflow_process { name "Test Process STRINGTIE_STRINGTIE" script "../main.nf" process "STRINGTIE_STRINGTIE" + config "./nextflow.config" test("sarscov2 [bam] - forward strandedness") { diff --git a/modules/nf-core/stringtie/stringtie/tests/nextflow.config b/modules/nf-core/stringtie/stringtie/tests/nextflow.config new file mode 100644 index 000000000..e3aaa0999 --- /dev/null +++ b/modules/nf-core/stringtie/stringtie/tests/nextflow.config @@ -0,0 +1,5 @@ +process { + withName: 'STRINGTIE_STRINGTIE' { + ext.args = '' + } +} From 58cee5894c6a9d2e301ae467181cedd3a15f13b6 Mon Sep 17 00:00:00 2001 From: maxulysse Date: Mon, 22 Jul 2024 20:11:34 +0200 Subject: [PATCH 514/634] update snapshots for fastq_align_hisat2 --- modules.json | 2 +- .../tests/main.nf.test.snap | 44 +++++-------------- 2 files changed, 11 insertions(+), 35 deletions(-) diff --git a/modules.json b/modules.json index 5f2113653..dbf8e49c3 100644 --- a/modules.json +++ b/modules.json @@ -310,7 +310,7 @@ }, "fastq_align_hisat2": { "branch": "master", - "git_sha": "0eacd714effe5aac1c1de26593873960b3346cab", + "git_sha": "c789476080a150f87066ca3ed42a622339a26c0b", "installed_by": ["subworkflows"] }, "fastq_fastqc_umitools_fastp": { diff --git a/subworkflows/nf-core/fastq_align_hisat2/tests/main.nf.test.snap b/subworkflows/nf-core/fastq_align_hisat2/tests/main.nf.test.snap index 5d7e48bce..408dabff0 100644 --- a/subworkflows/nf-core/fastq_align_hisat2/tests/main.nf.test.snap +++ b/subworkflows/nf-core/fastq_align_hisat2/tests/main.nf.test.snap @@ -104,13 +104,7 @@ ] ], "5": [ - [ - { - "id": "test", - "single_end": true - }, - "test.sorted.bam.csi:md5,d41d8cd98f00b204e9800998ecf8427e" - ] + ], "6": [ [ @@ -166,13 +160,7 @@ ] ], "csi": [ - [ - { - "id": "test", - "single_end": true - }, - "test.sorted.bam.csi:md5,d41d8cd98f00b204e9800998ecf8427e" - ] + ], "fastq": [ @@ -233,10 +221,10 @@ } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.0", + "nextflow": "24.04.3" }, - "timestamp": "2024-07-03T12:36:44.15748" + "timestamp": "2024-07-22T19:36:23.861012" }, "sarscov2 - bam - paired_end": { "content": [ @@ -343,13 +331,7 @@ ] ], "5": [ - [ - { - "id": "test", - "single_end": false - }, - "test.sorted.bam.csi:md5,d41d8cd98f00b204e9800998ecf8427e" - ] + ], "6": [ [ @@ -405,13 +387,7 @@ ] ], "csi": [ - [ - { - "id": "test", - "single_end": false - }, - "test.sorted.bam.csi:md5,d41d8cd98f00b204e9800998ecf8427e" - ] + ], "fastq": [ @@ -472,9 +448,9 @@ } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.0", + "nextflow": "24.04.3" }, - "timestamp": "2024-07-03T12:36:59.553237" + "timestamp": "2024-07-22T19:36:44.894976" } } \ No newline at end of file From 586058b81b37481451d7f0be1d45ccc5927947a4 Mon Sep 17 00:00:00 2001 From: maxulysse Date: Mon, 22 Jul 2024 20:15:52 +0200 Subject: [PATCH 515/634] add proper stubs and tests for local star_*_igenomes modules --- modules/local/star_align_igenomes/main.nf | 4 +- .../star_align_igenomes/tests/main.nf.test | 457 +++- .../tests/main.nf.test.snap | 2102 +++++++++++------ .../star_genomegenerate_igenomes/main.nf | 3 +- .../tests/main.nf.test | 32 +- .../tests/main.nf.test.snap | 162 +- 6 files changed, 1821 insertions(+), 939 deletions(-) diff --git a/modules/local/star_align_igenomes/main.nf b/modules/local/star_align_igenomes/main.nf index 04068f142..7bda3df84 100644 --- a/modules/local/star_align_igenomes/main.nf +++ b/modules/local/star_align_igenomes/main.nf @@ -76,6 +76,8 @@ process STAR_ALIGN_IGENOMES { stub: def prefix = task.ext.prefix ?: "${meta.id}" """ + echo "" | gzip > ${prefix}.unmapped_1.fastq.gz + echo "" | gzip > ${prefix}.unmapped_2.fastq.gz touch ${prefix}Xd.out.bam touch ${prefix}.Log.final.out touch ${prefix}.Log.out @@ -84,8 +86,6 @@ process STAR_ALIGN_IGENOMES { touch ${prefix}.toTranscriptome.out.bam touch ${prefix}.Aligned.unsort.out.bam touch ${prefix}.Aligned.sortedByCoord.out.bam - touch ${prefix}.unmapped_1.fastq.gz - touch ${prefix}.unmapped_2.fastq.gz touch ${prefix}.tab touch ${prefix}.SJ.out.tab touch ${prefix}.ReadsPerGene.out.tab diff --git a/modules/local/star_align_igenomes/tests/main.nf.test b/modules/local/star_align_igenomes/tests/main.nf.test index 8255c1732..37f65930a 100644 --- a/modules/local/star_align_igenomes/tests/main.nf.test +++ b/modules/local/star_align_igenomes/tests/main.nf.test @@ -4,20 +4,324 @@ nextflow_process { script "../main.nf" process "STAR_ALIGN_IGENOMES" - setup { - run("STAR_GENOMEGENERATE_IGENOMES") { - script "../../star_genomegenerate_igenomes/main.nf" + test("homo_sapiens - single_end") { + config "./nextflow.config" + setup { + run("STAR_GENOMEGENERATE_IGENOMES") { + script "../../star_genomegenerate_igenomes/main.nf" + process { + """ + input[0] = Channel.of([file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true)]) + input[1] = Channel.of([file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.gtf', checkIfExists: true)]) + """ + } + } + } + + when { process { """ - input[0] = Channel.of([file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true)]) - input[1] = Channel.of([file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.gtf', checkIfExists: true)]) + input[0] = Channel.of([ + [ id:'test', single_end:true ], // meta map + [ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/fastq/test_rnaseq_1.fastq.gz', checkIfExists: true) ] + ]) + input[1] = STAR_GENOMEGENERATE_IGENOMES.out.index.map{ [ [id:'star'], it ] } + input[2] = Channel.of([ + [ id:'test_gtf' ], + [ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.gtf', checkIfExists: true) ] + ]) + input[3] = false + input[4] = 'illumina' + input[5] = false """ } } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + file(process.out.log_final[0][1]).name, + file(process.out.log_out[0][1]).name, + file(process.out.log_progress[0][1]).name, + process.out.bam, + process.out.bam_sorted, + process.out.bam_transcript, + process.out.bam_unsorted, + process.out.bedgraph, + process.out.fastq, + process.out.junction, + process.out.read_per_gene_tab, + process.out.sam, + process.out.spl_junc_tab, + process.out.tab, + process.out.wig, + process.out.versions + ).match() } + ) + } } - test("homo_sapiens - single_end") { + test("homo_sapiens - paired_end") { config "./nextflow.config" + setup { + run("STAR_GENOMEGENERATE_IGENOMES") { + script "../../star_genomegenerate_igenomes/main.nf" + process { + """ + input[0] = Channel.of([file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true)]) + input[1] = Channel.of([file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.gtf', checkIfExists: true)]) + """ + } + } + } + + when { + process { + """ + input[0] = Channel.of([ + [ id:'test', single_end:false ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/fastq/test_rnaseq_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/fastq/test_rnaseq_2.fastq.gz', checkIfExists: true) + ] + ]) + input[1] = STAR_GENOMEGENERATE_IGENOMES.out.index.map{ [ [id:'star'], it ] } + input[2] = Channel.of([ + [ id:'test_gtf' ], + [ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.gtf', checkIfExists: true) ] + ]) + input[3] = false + input[4] = 'illumina' + input[5] = false + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + file(process.out.log_final[0][1]).name, + file(process.out.log_out[0][1]).name, + file(process.out.log_progress[0][1]).name, + process.out.bam, + process.out.bam_sorted, + process.out.bam_transcript, + process.out.bam_unsorted, + process.out.bedgraph, + process.out.fastq, + process.out.junction, + process.out.read_per_gene_tab, + process.out.sam, + process.out.spl_junc_tab, + process.out.tab, + process.out.wig, + process.out.versions + ).match() } + ) + } + } + + test("homo_sapiens - paired_end - arriba") { + config "./nextflow.arriba.config" + setup { + run("STAR_GENOMEGENERATE_IGENOMES") { + script "../../star_genomegenerate_igenomes/main.nf" + process { + """ + input[0] = Channel.of([file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true)]) + input[1] = Channel.of([file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.gtf', checkIfExists: true)]) + """ + } + } + } + + when { + process { + """ + input[0] = Channel.of([ + [ id:'test', single_end:false ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/fastq/test_rnaseq_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/fastq/test_rnaseq_2.fastq.gz', checkIfExists: true) + ] + ]) + input[1] = STAR_GENOMEGENERATE_IGENOMES.out.index.map{ [ [id:'star'], it ] } + input[2] = Channel.of([ + [ id:'test_gtf' ], + [ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.gtf', checkIfExists: true) ] + ]) + input[3] = false + input[4] = 'illumina' + input[5] = false + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + file(process.out.log_final[0][1]).name, + file(process.out.log_out[0][1]).name, + file(process.out.log_progress[0][1]).name, + process.out.bam, + process.out.bam_sorted, + process.out.bam_transcript, + process.out.bam_unsorted, + process.out.bedgraph, + process.out.fastq, + process.out.junction, + process.out.read_per_gene_tab, + process.out.sam, + process.out.spl_junc_tab, + process.out.tab, + process.out.wig, + process.out.versions + ).match() } + ) + } + } + + test("homo_sapiens - paired_end - starfusion") { + config "./nextflow.starfusion.config" + setup { + run("STAR_GENOMEGENERATE_IGENOMES") { + script "../../star_genomegenerate_igenomes/main.nf" + process { + """ + input[0] = Channel.of([file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true)]) + input[1] = Channel.of([file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.gtf', checkIfExists: true)]) + """ + } + } + } + + when { + process { + """ + input[0] = Channel.of([ + [ id:'test', single_end:false ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/fastq/test_rnaseq_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/fastq/test_rnaseq_2.fastq.gz', checkIfExists: true) + ] + ]) + input[1] = STAR_GENOMEGENERATE_IGENOMES.out.index.map{ [ [id:'star'], it ] } + input[2] = Channel.of([ + [ id:'test_gtf' ], + [ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.gtf', checkIfExists: true) ] + ]) + input[3] = false + input[4] = 'illumina' + input[5] = false + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + file(process.out.log_final[0][1]).name, + file(process.out.log_out[0][1]).name, + file(process.out.log_progress[0][1]).name, + process.out.bam, + process.out.bam_sorted, + process.out.bam_transcript, + process.out.bam_unsorted, + process.out.bedgraph, + process.out.fastq, + process.out.junction, + process.out.read_per_gene_tab, + process.out.sam, + process.out.spl_junc_tab, + process.out.tab, + process.out.wig, + process.out.versions + ).match() } + ) + } + } + + test("homo_sapiens - paired_end - multiple") { + config "./nextflow.config" + setup { + run("STAR_GENOMEGENERATE_IGENOMES") { + script "../../star_genomegenerate_igenomes/main.nf" + process { + """ + input[0] = Channel.of([file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true)]) + input[1] = Channel.of([file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.gtf', checkIfExists: true)]) + """ + } + } + } + + when { + process { + """ + input[0] = Channel.of([ + [ id:'test', single_end:false ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/fastq/test_rnaseq_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/fastq/test_rnaseq_2.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/fastq/test_rnaseq_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/fastq/test_rnaseq_2.fastq.gz', checkIfExists: true) + ] + ]) + input[1] = STAR_GENOMEGENERATE_IGENOMES.out.index.map{ [ [id:'star'], it ] } + input[2] = Channel.of([ + [ id:'test_gtf' ], + [ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.gtf', checkIfExists: true) ] + ]) + input[3] = false + input[4] = 'illumina' + input[5] = false + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + file(process.out.log_final[0][1]).name, + file(process.out.log_out[0][1]).name, + file(process.out.log_progress[0][1]).name, + process.out.bam, + process.out.bam_sorted, + process.out.bam_transcript, + process.out.bam_unsorted, + process.out.bedgraph, + process.out.fastq, + process.out.junction, + process.out.read_per_gene_tab, + process.out.sam, + process.out.spl_junc_tab, + process.out.tab, + process.out.wig, + process.out.versions + ).match() } + ) + } + } + + test("homo_sapiens - single_end - stub") { + options "-stub" + config "./nextflow.config" + setup { + run("STAR_GENOMEGENERATE_IGENOMES") { + script "../../star_genomegenerate_igenomes/main.nf" + process { + """ + input[0] = Channel.of([file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true)]) + input[1] = Channel.of([file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.gtf', checkIfExists: true)]) + """ + } + } + } when { process { @@ -41,28 +345,25 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot(file(process.out.log_final[0][1]).name).match("homo_sapiens - single_end - log_final") }, - { assert snapshot(file(process.out.log_out[0][1]).name).match("homo_sapiens - single_end - log_out") }, - { assert snapshot(process.out.bam).match("homo_sapiens - single_end - bam") }, - { assert snapshot(process.out.bam_sorted).match("homo_sapiens - single_end - bam_sorted") }, - { assert snapshot(process.out.bam_transcript).match("homo_sapiens - single_end - bam_transcript") }, - { assert snapshot(process.out.bam_unsorted).match("homo_sapiens - single_end - bam_unsorted") }, - { assert snapshot(process.out.bedgraph).match("homo_sapiens - single_end - bedgraph") }, - { assert snapshot(process.out.fastq).match("homo_sapiens - single_end - fastq") }, - { assert snapshot(process.out.junction).match("homo_sapiens - single_end - junction") }, - { assert snapshot(process.out.log_progress).match("homo_sapiens - single_end - log_progress") }, - { assert snapshot(process.out.read_per_gene_tab).match("homo_sapiens - single_end - read_per_gene_tab") }, - { assert snapshot(process.out.sam).match("homo_sapiens - single_end - sam") }, - { assert snapshot(process.out.spl_junc_tab).match("homo_sapiens - single_end - spl_junc_tab") }, - { assert snapshot(process.out.tab).match("homo_sapiens - single_end - tab") }, - { assert snapshot(process.out.wig).match("homo_sapiens - single_end - wig") }, - { assert snapshot(process.out.versions).match("homo_sapiens - single_end - versions") } + { assert snapshot(process.out).match() } ) } } - test("homo_sapiens - paired_end") { + test("homo_sapiens - paired_end - stub") { + options "-stub" config "./nextflow.config" + setup { + run("STAR_GENOMEGENERATE_IGENOMES") { + script "../../star_genomegenerate_igenomes/main.nf" + process { + """ + input[0] = Channel.of([file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true)]) + input[1] = Channel.of([file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.gtf', checkIfExists: true)]) + """ + } + } + } when { process { @@ -89,28 +390,25 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot(file(process.out.log_final[0][1]).name).match("homo_sapiens - paired_end - log_final") }, - { assert snapshot(file(process.out.log_out[0][1]).name).match("homo_sapiens - paired_end - log_out") }, - { assert snapshot(process.out.bam).match("homo_sapiens - paired_end - bam") }, - { assert snapshot(process.out.bam_sorted).match("homo_sapiens - paired_end - bam_sorted") }, - { assert snapshot(process.out.bam_transcript).match("homo_sapiens - paired_end - bam_transcript") }, - { assert snapshot(process.out.bam_unsorted).match("homo_sapiens - paired_end - bam_unsorted") }, - { assert snapshot(process.out.bedgraph).match("homo_sapiens - paired_end - bedgraph") }, - { assert snapshot(process.out.fastq).match("homo_sapiens - paired_end - fastq") }, - { assert snapshot(process.out.junction).match("homo_sapiens - paired_end - junction") }, - { assert snapshot(process.out.log_progress).match("homo_sapiens - paired_end - log_progress") }, - { assert snapshot(process.out.read_per_gene_tab).match("homo_sapiens - paired_end - read_per_gene_tab") }, - { assert snapshot(process.out.sam).match("homo_sapiens - paired_end - sam") }, - { assert snapshot(process.out.spl_junc_tab).match("homo_sapiens - paired_end - spl_junc_tab") }, - { assert snapshot(process.out.tab).match("homo_sapiens - paired_end - tab") }, - { assert snapshot(process.out.wig).match("homo_sapiens - paired_end - wig") }, - { assert snapshot(process.out.versions).match("homo_sapiens - paired_end - versions") } + { assert snapshot(process.out).match() } ) } } - test("homo_sapiens - paired_end - arriba") { + test("homo_sapiens - paired_end - arriba - stub") { + options "-stub" config "./nextflow.arriba.config" + setup { + run("STAR_GENOMEGENERATE_IGENOMES") { + script "../../star_genomegenerate_igenomes/main.nf" + process { + """ + input[0] = Channel.of([file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true)]) + input[1] = Channel.of([file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.gtf', checkIfExists: true)]) + """ + } + } + } when { process { @@ -137,28 +435,25 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot(file(process.out.log_final[0][1]).name).match("homo_sapiens - paired_end - arriba - log_final") }, - { assert snapshot(file(process.out.log_out[0][1]).name).match("homo_sapiens - paired_end - arriba - log_out") }, - { assert snapshot(file(process.out.log_progress[0][1]).name).match("homo_sapiens - paired_end - arriba - log_progress") }, - { assert snapshot(process.out.bam).match("homo_sapiens - paired_end - arriba - bam") }, - { assert snapshot(process.out.bam_sorted).match("homo_sapiens - paired_end - arriba - bam_sorted") }, - { assert snapshot(process.out.bam_transcript).match("homo_sapiens - paired_end - arriba - bam_transcript") }, - { assert snapshot(process.out.bam_unsorted).match("homo_sapiens - paired_end - arriba - bam_unsorted") }, - { assert snapshot(process.out.bedgraph).match("homo_sapiens - paired_end - arriba - bedgraph") }, - { assert snapshot(process.out.fastq).match("homo_sapiens - paired_end - arriba - fastq") }, - { assert snapshot(process.out.junction).match("homo_sapiens - paired_end - arriba - junction") }, - { assert snapshot(process.out.read_per_gene_tab).match("homo_sapiens - paired_end - arriba - read_per_gene_tab") }, - { assert snapshot(process.out.sam).match("homo_sapiens - paired_end - arriba - sam") }, - { assert snapshot(process.out.spl_junc_tab).match("homo_sapiens - paired_end - arriba - spl_junc_tab") }, - { assert snapshot(process.out.tab).match("homo_sapiens - paired_end - arriba - tab") }, - { assert snapshot(process.out.wig).match("homo_sapiens - paired_end - arriba - wig") }, - { assert snapshot(process.out.versions).match("homo_sapiens - paired_end - arriba - versions") } + { assert snapshot(process.out).match() } ) } } - test("homo_sapiens - paired_end - starfusion") { + test("homo_sapiens - paired_end - starfusion - stub") { + options "-stub" config "./nextflow.starfusion.config" + setup { + run("STAR_GENOMEGENERATE_IGENOMES") { + script "../../star_genomegenerate_igenomes/main.nf" + process { + """ + input[0] = Channel.of([file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true)]) + input[1] = Channel.of([file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.gtf', checkIfExists: true)]) + """ + } + } + } when { process { @@ -185,28 +480,25 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot(file(process.out.log_final[0][1]).name).match("homo_sapiens - paired_end - starfusion - log_final") }, - { assert snapshot(file(process.out.log_out[0][1]).name).match("homo_sapiens - paired_end - starfusion - log_out") }, - { assert snapshot(file(process.out.log_progress[0][1]).name).match("homo_sapiens - paired_end - starfusion - log_progress") }, - { assert snapshot(process.out.bam).match("homo_sapiens - paired_end - starfusion - bam") }, - { assert snapshot(process.out.bam_sorted).match("homo_sapiens - paired_end - starfusion - bam_sorted") }, - { assert snapshot(process.out.bam_transcript).match("homo_sapiens - paired_end - starfusion - bam_transcript") }, - { assert snapshot(process.out.bam_unsorted).match("homo_sapiens - paired_end - starfusion - bam_unsorted") }, - { assert snapshot(process.out.bedgraph).match("homo_sapiens - paired_end - starfusion - bedgraph") }, - { assert snapshot(process.out.fastq).match("homo_sapiens - paired_end - starfusion - fastq") }, - { assert snapshot(process.out.junction).match("homo_sapiens - paired_end - starfusion - junction") }, - { assert snapshot(process.out.read_per_gene_tab).match("homo_sapiens - paired_end - starfusion - read_per_gene_tab") }, - { assert snapshot(process.out.sam).match("homo_sapiens - paired_end - starfusion - sam") }, - { assert snapshot(process.out.spl_junc_tab).match("homo_sapiens - paired_end - starfusion - spl_junc_tab") }, - { assert snapshot(process.out.tab).match("homo_sapiens - paired_end - starfusion - tab") }, - { assert snapshot(process.out.wig).match("homo_sapiens - paired_end - starfusion - wig") }, - { assert snapshot(process.out.versions).match("homo_sapiens - paired_end - starfusion - versions") } + { assert snapshot(process.out).match() } ) } } - test("homo_sapiens - paired_end - multiple") { + test("homo_sapiens - paired_end - multiple - stub") { + options "-stub" config "./nextflow.config" + setup { + run("STAR_GENOMEGENERATE_IGENOMES") { + script "../../star_genomegenerate_igenomes/main.nf" + process { + """ + input[0] = Channel.of([file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true)]) + input[1] = Channel.of([file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.gtf', checkIfExists: true)]) + """ + } + } + } when { process { @@ -235,22 +527,7 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot(file(process.out.log_final[0][1]).name).match("homo_sapiens - paired_end - multiple - log_final") }, - { assert snapshot(file(process.out.log_out[0][1]).name).match("homo_sapiens - paired_end - multiple - log_out") }, - { assert snapshot(file(process.out.log_progress[0][1]).name).match("homo_sapiens - paired_end - multiple - log_progress") }, - { assert snapshot(process.out.bam).match("homo_sapiens - paired_end - multiple - bam") }, - { assert snapshot(process.out.bam_sorted).match("homo_sapiens - paired_end - multiple - bam_sorted") }, - { assert snapshot(process.out.bam_transcript).match("homo_sapiens - paired_end - multiple - bam_transcript") }, - { assert snapshot(process.out.bam_unsorted).match("homo_sapiens - paired_end - multiple - bam_unsorted") }, - { assert snapshot(process.out.bedgraph).match("homo_sapiens - paired_end - multiple - bedgraph") }, - { assert snapshot(process.out.fastq).match("homo_sapiens - paired_end - multiple - fastq") }, - { assert snapshot(process.out.junction).match("homo_sapiens - paired_end - multiple - junction") }, - { assert snapshot(process.out.read_per_gene_tab).match("homo_sapiens - paired_end - multiple - read_per_gene_tab") }, - { assert snapshot(process.out.sam).match("homo_sapiens - paired_end - multiple - sam") }, - { assert snapshot(process.out.spl_junc_tab).match("homo_sapiens - paired_end - multiple - spl_junc_tab") }, - { assert snapshot(process.out.tab).match("homo_sapiens - paired_end - multiple - tab") }, - { assert snapshot(process.out.wig).match("homo_sapiens - paired_end - multiple - wig") }, - { assert snapshot(process.out.versions).match("homo_sapiens - paired_end - multiple - versions") } + { assert snapshot(process.out).match() } ) } } diff --git a/modules/local/star_align_igenomes/tests/main.nf.test.snap b/modules/local/star_align_igenomes/tests/main.nf.test.snap index 7dad647c0..5a0b193b1 100644 --- a/modules/local/star_align_igenomes/tests/main.nf.test.snap +++ b/modules/local/star_align_igenomes/tests/main.nf.test.snap @@ -1,324 +1,565 @@ { - "homo_sapiens - paired_end - multiple - bam_sorted": { + "homo_sapiens - single_end - stub": { "content": [ - [ - [ - { - "id": "test", - "single_end": false - }, - "test.Aligned.sortedByCoord.out.bam:md5,7b20152380dbc52ec23d2e95a7953710" + { + "0": [ + [ + { + "id": "test", + "single_end": true + }, + "test.Log.final.out:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": true + }, + "test.Log.out:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "10": [ + [ + { + "id": "test", + "single_end": true + }, + "test.Chimeric.out.junction:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "11": [ + [ + { + "id": "test", + "single_end": true + }, + "test.out.sam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + [ + { + "id": "test", + "single_end": true + }, + "test.Log.progress.out:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "3": [ + "versions.yml:md5,957a57604ceb366b7af0123738e13559" + ], + "4": [ + [ + { + "id": "test", + "single_end": true + }, + [ + "test.Aligned.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e", + "testXd.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "5": [ + [ + { + "id": "test", + "single_end": true + }, + [ + "test.Aligned.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "6": [ + [ + { + "id": "test", + "single_end": true + }, + "test.toTranscriptome.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "7": [ + [ + { + "id": "test", + "single_end": true + }, + "test.Aligned.unsort.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "8": [ + [ + { + "id": "test", + "single_end": true + }, + [ + "test.unmapped_1.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "test.unmapped_2.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ] + ], + "9": [ + [ + { + "id": "test", + "single_end": true + }, + [ + "test.ReadsPerGene.out.tab:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.SJ.out.tab:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.tab:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "bam": [ + [ + { + "id": "test", + "single_end": true + }, + [ + "test.Aligned.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e", + "testXd.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "bam_sorted": [ + [ + { + "id": "test", + "single_end": true + }, + [ + "test.Aligned.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "bam_transcript": [ + [ + { + "id": "test", + "single_end": true + }, + "test.toTranscriptome.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "bam_unsorted": [ + [ + { + "id": "test", + "single_end": true + }, + "test.Aligned.unsort.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "fastq": [ + [ + { + "id": "test", + "single_end": true + }, + [ + "test.unmapped_1.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "test.unmapped_2.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ] + ], + "junction": [ + [ + { + "id": "test", + "single_end": true + }, + "test.Chimeric.out.junction:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "log_final": [ + [ + { + "id": "test", + "single_end": true + }, + "test.Log.final.out:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "log_out": [ + [ + { + "id": "test", + "single_end": true + }, + "test.Log.out:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "log_progress": [ + [ + { + "id": "test", + "single_end": true + }, + "test.Log.progress.out:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "sam": [ + [ + { + "id": "test", + "single_end": true + }, + "test.out.sam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "tab": [ + [ + { + "id": "test", + "single_end": true + }, + [ + "test.ReadsPerGene.out.tab:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.SJ.out.tab:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.tab:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "versions": [ + "versions.yml:md5,957a57604ceb366b7af0123738e13559" ] - ] + } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" + "nf-test": "0.9.0", + "nextflow": "24.04.3" }, - "timestamp": "2024-03-05T12:52:13.056684" + "timestamp": "2024-07-22T20:12:37.024869" }, - "homo_sapiens - paired_end - multiple - wig": { - "content": null, + "homo_sapiens - paired_end - arriba - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.Log.final.out:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": false + }, + "test.Log.out:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "10": [ + [ + { + "id": "test", + "single_end": false + }, + "test.Chimeric.out.junction:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "11": [ + [ + { + "id": "test", + "single_end": false + }, + "test.out.sam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + [ + { + "id": "test", + "single_end": false + }, + "test.Log.progress.out:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "3": [ + "versions.yml:md5,957a57604ceb366b7af0123738e13559" + ], + "4": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test.Aligned.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e", + "testXd.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "5": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test.Aligned.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "6": [ + [ + { + "id": "test", + "single_end": false + }, + "test.toTranscriptome.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "7": [ + [ + { + "id": "test", + "single_end": false + }, + "test.Aligned.unsort.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "8": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test.unmapped_1.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "test.unmapped_2.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ] + ], + "9": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test.ReadsPerGene.out.tab:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.SJ.out.tab:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.tab:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "bam": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test.Aligned.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e", + "testXd.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "bam_sorted": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test.Aligned.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "bam_transcript": [ + [ + { + "id": "test", + "single_end": false + }, + "test.toTranscriptome.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "bam_unsorted": [ + [ + { + "id": "test", + "single_end": false + }, + "test.Aligned.unsort.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "fastq": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test.unmapped_1.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "test.unmapped_2.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ] + ], + "junction": [ + [ + { + "id": "test", + "single_end": false + }, + "test.Chimeric.out.junction:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "log_final": [ + [ + { + "id": "test", + "single_end": false + }, + "test.Log.final.out:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "log_out": [ + [ + { + "id": "test", + "single_end": false + }, + "test.Log.out:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "log_progress": [ + [ + { + "id": "test", + "single_end": false + }, + "test.Log.progress.out:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "sam": [ + [ + { + "id": "test", + "single_end": false + }, + "test.out.sam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "tab": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test.ReadsPerGene.out.tab:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.SJ.out.tab:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.tab:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "versions": [ + "versions.yml:md5,957a57604ceb366b7af0123738e13559" + ] + } + ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" + "nf-test": "0.9.0", + "nextflow": "24.04.3" }, - "timestamp": "2024-03-05T11:43:54.502911" + "timestamp": "2024-07-22T20:13:17.56838" }, - "homo_sapiens - paired_end - arriba - tab": { + "homo_sapiens - single_end": { "content": [ + "test.Log.final.out", + "test.Log.out", + "test.Log.progress.out", [ [ { "id": "test", - "single_end": false + "single_end": true }, - "test.SJ.out.tab:md5,5155c9fd1f787ad6d7d80987fb06219c" + "test.Aligned.sortedByCoord.out.bam:md5,e5060a8dd60584378786c588c3f25b4d" ] - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" - }, - "timestamp": "2024-03-05T12:48:07.200426" - }, - "homo_sapiens - single_end - wig": { - "content": null, - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" - }, - "timestamp": "2024-03-05T11:39:12.419461" - }, - "homo_sapiens - paired_end - sam": { - "content": [ + ], [ - - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" - }, - "timestamp": "2024-03-05T11:39:28.821547" - }, - "homo_sapiens - paired_end - arriba - versions": { - "content": [ - [ - "versions.yml:md5,957a57604ceb366b7af0123738e13559" - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" - }, - "timestamp": "2024-03-05T12:48:07.267343" - }, - "homo_sapiens - paired_end - multiple - bedgraph": { - "content": null, - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" - }, - "timestamp": "2024-03-05T11:43:54.432752" - }, - "homo_sapiens - paired_end - read_per_gene_tab": { - "content": null, - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" - }, - "timestamp": "2024-03-05T11:39:28.81774" - }, - "homo_sapiens - paired_end - arriba - bedgraph": { - "content": null, - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" - }, - "timestamp": "2024-03-05T11:39:45.643743" - }, - "homo_sapiens - single_end - junction": { - "content": [ - [ - - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" - }, - "timestamp": "2024-03-05T11:39:12.406191" - }, - "homo_sapiens - paired_end - arriba - spl_junc_tab": { - "content": null, - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" - }, - "timestamp": "2024-03-05T11:39:45.65723" - }, - "homo_sapiens - single_end - sam": { - "content": [ - [ - - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" - }, - "timestamp": "2024-03-05T11:39:12.411481" - }, - "homo_sapiens - paired_end - fastq": { - "content": [ + [ + { + "id": "test", + "single_end": true + }, + "test.Aligned.sortedByCoord.out.bam:md5,e5060a8dd60584378786c588c3f25b4d" + ] + ], [ - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" - }, - "timestamp": "2024-03-05T11:39:28.810584" - }, - "homo_sapiens - single_end - versions": { - "content": [ - [ - "versions.yml:md5,957a57604ceb366b7af0123738e13559" - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" - }, - "timestamp": "2024-03-05T12:40:00.104687" - }, - "homo_sapiens - paired_end - multiple - log_out": { - "content": [ - "test.Log.out" - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" - }, - "timestamp": "2024-03-05T12:52:12.894285" - }, - "homo_sapiens - paired_end - arriba - fastq": { - "content": [ + ], [ - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" - }, - "timestamp": "2024-03-05T11:39:45.646457" - }, - "homo_sapiens - paired_end - multiple - junction": { - "content": [ + ], + null, [ - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" - }, - "timestamp": "2024-03-05T11:43:54.45332" - }, - "homo_sapiens - paired_end - multiple - spl_junc_tab": { - "content": null, - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" - }, - "timestamp": "2024-03-05T11:43:54.482358" - }, - "homo_sapiens - paired_end - starfusion - log_final": { - "content": [ - "test.Log.final.out" - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" - }, - "timestamp": "2024-03-05T12:44:02.475493" - }, - "homo_sapiens - paired_end - starfusion - fastq": { - "content": [ + ], [ - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" - }, - "timestamp": "2024-03-05T11:41:39.262375" - }, - "homo_sapiens - paired_end - multiple - sam": { - "content": [ + ], + null, [ - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" - }, - "timestamp": "2024-03-05T11:43:54.472236" - }, - "homo_sapiens - paired_end - multiple - log_final": { - "content": [ - "test.Log.final.out" - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" - }, - "timestamp": "2024-03-05T12:52:12.865334" - }, - "homo_sapiens - paired_end - starfusion - bam": { - "content": [ + ], + null, [ [ { "id": "test", - "single_end": false + "single_end": true }, - "test.Aligned.out.bam:md5,7806e69c537f72e494f9ce8e95f16355" + "test.SJ.out.tab:md5,75a516ab950fb958f40b29996474949c" ] + ], + null, + [ + "versions.yml:md5,957a57604ceb366b7af0123738e13559" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" + "nf-test": "0.9.0", + "nextflow": "24.04.3" }, - "timestamp": "2024-03-05T12:44:02.545949" + "timestamp": "2024-07-22T20:04:35.055193" }, - "homo_sapiens - paired_end - arriba - junction": { + "homo_sapiens - paired_end": { "content": [ + "test.Log.final.out", + "test.Log.out", + "test.Log.progress.out", [ [ { "id": "test", "single_end": false }, - "test.Chimeric.out.junction:md5,62760fd60371d5bacae324c370358944" + "test.Aligned.sortedByCoord.out.bam:md5,b6cec9bba6b04b9b92eddbef128bdfbb" ] - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" - }, - "timestamp": "2024-03-05T12:48:07.133125" - }, - "homo_sapiens - single_end - bedgraph": { - "content": null, - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" - }, - "timestamp": "2024-03-05T11:39:12.402541" - }, - "homo_sapiens - paired_end - arriba - read_per_gene_tab": { - "content": null, - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" - }, - "timestamp": "2024-03-05T11:39:45.651485" - }, - "homo_sapiens - paired_end - starfusion - bam_sorted": { - "content": [ - [ - - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" - }, - "timestamp": "2024-03-05T11:41:39.217628" - }, - "homo_sapiens - single_end - bam_unsorted": { - "content": [ - [ - - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" - }, - "timestamp": "2024-03-05T11:39:12.400925" - }, - "homo_sapiens - paired_end - bam": { - "content": [ + ], [ [ { @@ -327,102 +568,25 @@ }, "test.Aligned.sortedByCoord.out.bam:md5,b6cec9bba6b04b9b92eddbef128bdfbb" ] - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" - }, - "timestamp": "2024-03-05T12:40:45.530038" - }, - "homo_sapiens - paired_end - arriba - bam_transcript": { - "content": [ + ], [ - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" - }, - "timestamp": "2024-03-05T11:39:45.63966" - }, - "homo_sapiens - paired_end - log_out": { - "content": [ - "test.Log.out" - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" - }, - "timestamp": "2024-03-05T12:40:45.492406" - }, - "homo_sapiens - paired_end - arriba - log_out": { - "content": [ - "test.Log.out" - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" - }, - "timestamp": "2024-03-05T12:48:06.975033" - }, - "homo_sapiens - paired_end - multiple - versions": { - "content": [ + ], [ - "versions.yml:md5,957a57604ceb366b7af0123738e13559" - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" - }, - "timestamp": "2024-03-05T12:52:13.193701" - }, - "homo_sapiens - paired_end - starfusion - bam_transcript": { - "content": [ + + ], + null, [ - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" - }, - "timestamp": "2024-03-05T11:41:39.224799" - }, - "homo_sapiens - paired_end - starfusion - tab": { - "content": [ + ], [ - [ - { - "id": "test", - "single_end": false - }, - "test.SJ.out.tab:md5,19c3faa1bfa9a0cc5e4c45f17065b53a" - ] - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" - }, - "timestamp": "2024-03-05T12:44:02.631643" - }, - "homo_sapiens - single_end - fastq": { - "content": [ + + ], + null, [ - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" - }, - "timestamp": "2024-03-05T11:39:12.404069" - }, - "homo_sapiens - paired_end - tab": { - "content": [ + ], + null, [ [ { @@ -431,204 +595,592 @@ }, "test.SJ.out.tab:md5,844af19ab0fc8cd9a3f75228445aca0d" ] - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" - }, - "timestamp": "2024-03-05T12:40:45.687553" - }, - "homo_sapiens - paired_end - starfusion - bedgraph": { - "content": null, - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" - }, - "timestamp": "2024-03-05T11:41:39.254528" - }, - "homo_sapiens - single_end - bam_transcript": { - "content": [ - [ - - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" - }, - "timestamp": "2024-03-05T11:39:12.39955" - }, - "homo_sapiens - paired_end - versions": { - "content": [ + ], + null, [ "versions.yml:md5,957a57604ceb366b7af0123738e13559" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" + "nf-test": "0.9.0", + "nextflow": "24.04.3" }, - "timestamp": "2024-03-05T12:40:45.748799" + "timestamp": "2024-07-22T20:05:25.626464" }, - "homo_sapiens - paired_end - multiple - tab": { + "homo_sapiens - paired_end - multiple - stub": { "content": [ - [ - [ - { - "id": "test", - "single_end": false - }, - "test.SJ.out.tab:md5,069877e053714e23010fe4e1c003b4a2" + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.Log.final.out:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": false + }, + "test.Log.out:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "10": [ + [ + { + "id": "test", + "single_end": false + }, + "test.Chimeric.out.junction:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "11": [ + [ + { + "id": "test", + "single_end": false + }, + "test.out.sam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + [ + { + "id": "test", + "single_end": false + }, + "test.Log.progress.out:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "3": [ + "versions.yml:md5,957a57604ceb366b7af0123738e13559" + ], + "4": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test.Aligned.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e", + "testXd.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "5": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test.Aligned.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "6": [ + [ + { + "id": "test", + "single_end": false + }, + "test.toTranscriptome.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "7": [ + [ + { + "id": "test", + "single_end": false + }, + "test.Aligned.unsort.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "8": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test.unmapped_1.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "test.unmapped_2.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ] + ], + "9": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test.ReadsPerGene.out.tab:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.SJ.out.tab:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.tab:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "bam": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test.Aligned.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e", + "testXd.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "bam_sorted": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test.Aligned.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "bam_transcript": [ + [ + { + "id": "test", + "single_end": false + }, + "test.toTranscriptome.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "bam_unsorted": [ + [ + { + "id": "test", + "single_end": false + }, + "test.Aligned.unsort.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "fastq": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test.unmapped_1.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "test.unmapped_2.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ] + ], + "junction": [ + [ + { + "id": "test", + "single_end": false + }, + "test.Chimeric.out.junction:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "log_final": [ + [ + { + "id": "test", + "single_end": false + }, + "test.Log.final.out:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "log_out": [ + [ + { + "id": "test", + "single_end": false + }, + "test.Log.out:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "log_progress": [ + [ + { + "id": "test", + "single_end": false + }, + "test.Log.progress.out:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "sam": [ + [ + { + "id": "test", + "single_end": false + }, + "test.out.sam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "tab": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test.ReadsPerGene.out.tab:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.SJ.out.tab:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.tab:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "versions": [ + "versions.yml:md5,957a57604ceb366b7af0123738e13559" ] - ] + } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" + "nf-test": "0.9.0", + "nextflow": "24.04.3" }, - "timestamp": "2024-03-05T12:52:13.125877" + "timestamp": "2024-07-22T20:14:00.135162" }, - "homo_sapiens - single_end - bam": { + "homo_sapiens - paired_end - multiple": { "content": [ + "test.Log.final.out", + "test.Log.out", + "test.Log.progress.out", [ [ { "id": "test", - "single_end": true + "single_end": false }, - "test.Aligned.sortedByCoord.out.bam:md5,e5060a8dd60584378786c588c3f25b4d" + "test.Aligned.sortedByCoord.out.bam:md5,7b20152380dbc52ec23d2e95a7953710" ] - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" - }, - "timestamp": "2024-03-05T12:39:59.959658" - }, - "homo_sapiens - paired_end - arriba - wig": { - "content": null, - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" - }, - "timestamp": "2024-03-05T11:39:45.663497" - }, - "homo_sapiens - paired_end - log_progress": { - "content": [ + ], [ [ { "id": "test", "single_end": false }, - "test.Log.progress.out:md5,b2bd061d6cbaaf3d6d3b1fed547f69b8" + "test.Aligned.sortedByCoord.out.bam:md5,7b20152380dbc52ec23d2e95a7953710" ] - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" - }, - "timestamp": "2024-03-05T12:40:45.630526" - }, - "homo_sapiens - paired_end - arriba - log_final": { - "content": [ - "test.Log.final.out" - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" - }, - "timestamp": "2024-03-05T12:48:06.951543" - }, - "homo_sapiens - paired_end - bam_unsorted": { - "content": [ + ], [ - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" - }, - "timestamp": "2024-03-05T11:39:28.805957" - }, - "homo_sapiens - paired_end - arriba - sam": { - "content": [ + ], [ - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" - }, - "timestamp": "2024-03-05T11:39:45.654389" - }, - "homo_sapiens - paired_end - multiple - bam": { - "content": [ + ], + null, + [ + + ], + [ + + ], + null, + [ + + ], + null, [ [ { "id": "test", "single_end": false }, - "test.Aligned.sortedByCoord.out.bam:md5,7b20152380dbc52ec23d2e95a7953710" + "test.SJ.out.tab:md5,069877e053714e23010fe4e1c003b4a2" ] + ], + null, + [ + "versions.yml:md5,957a57604ceb366b7af0123738e13559" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" + "nf-test": "0.9.0", + "nextflow": "24.04.3" }, - "timestamp": "2024-03-05T12:52:12.98725" + "timestamp": "2024-07-22T20:12:16.618713" }, - "homo_sapiens - paired_end - multiple - fastq": { + "homo_sapiens - paired_end - stub": { "content": [ - [ - - ] + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.Log.final.out:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": false + }, + "test.Log.out:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "10": [ + [ + { + "id": "test", + "single_end": false + }, + "test.Chimeric.out.junction:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "11": [ + [ + { + "id": "test", + "single_end": false + }, + "test.out.sam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + [ + { + "id": "test", + "single_end": false + }, + "test.Log.progress.out:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "3": [ + "versions.yml:md5,957a57604ceb366b7af0123738e13559" + ], + "4": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test.Aligned.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e", + "testXd.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "5": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test.Aligned.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "6": [ + [ + { + "id": "test", + "single_end": false + }, + "test.toTranscriptome.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "7": [ + [ + { + "id": "test", + "single_end": false + }, + "test.Aligned.unsort.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "8": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test.unmapped_1.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "test.unmapped_2.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ] + ], + "9": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test.ReadsPerGene.out.tab:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.SJ.out.tab:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.tab:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "bam": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test.Aligned.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e", + "testXd.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "bam_sorted": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test.Aligned.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "bam_transcript": [ + [ + { + "id": "test", + "single_end": false + }, + "test.toTranscriptome.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "bam_unsorted": [ + [ + { + "id": "test", + "single_end": false + }, + "test.Aligned.unsort.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "fastq": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test.unmapped_1.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "test.unmapped_2.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ] + ], + "junction": [ + [ + { + "id": "test", + "single_end": false + }, + "test.Chimeric.out.junction:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "log_final": [ + [ + { + "id": "test", + "single_end": false + }, + "test.Log.final.out:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "log_out": [ + [ + { + "id": "test", + "single_end": false + }, + "test.Log.out:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "log_progress": [ + [ + { + "id": "test", + "single_end": false + }, + "test.Log.progress.out:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "sam": [ + [ + { + "id": "test", + "single_end": false + }, + "test.out.sam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "tab": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test.ReadsPerGene.out.tab:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.SJ.out.tab:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.tab:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "versions": [ + "versions.yml:md5,957a57604ceb366b7af0123738e13559" + ] + } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" + "nf-test": "0.9.0", + "nextflow": "24.04.3" }, - "timestamp": "2024-03-05T11:43:54.445019" + "timestamp": "2024-07-22T20:12:56.326797" }, - "homo_sapiens - single_end - bam_sorted": { + "homo_sapiens - paired_end - starfusion": { "content": [ + "test.Log.final.out", + "test.Log.out", + "test.Log.progress.out", [ [ { "id": "test", - "single_end": true + "single_end": false }, - "test.Aligned.sortedByCoord.out.bam:md5,e5060a8dd60584378786c588c3f25b4d" + "test.Aligned.out.bam:md5,7806e69c537f72e494f9ce8e95f16355" ] - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" - }, - "timestamp": "2024-03-05T12:39:59.996165" - }, - "homo_sapiens - paired_end - arriba - bam_sorted": { - "content": [ + ], [ - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" - }, - "timestamp": "2024-03-05T11:39:45.637599" - }, - "homo_sapiens - paired_end - starfusion - junction": { - "content": [ + ], + [ + + ], + [ + + ], + null, + [ + + ], [ [ { @@ -637,322 +1189,334 @@ }, "test.Chimeric.out.junction:md5,c6d4d8c641ebb1c152a10da44f0dbf20" ] - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" - }, - "timestamp": "2024-03-05T12:44:02.589611" - }, - "homo_sapiens - single_end - tab": { - "content": [ + ], + null, + [ + + ], + null, [ [ { "id": "test", - "single_end": true + "single_end": false }, - "test.SJ.out.tab:md5,75a516ab950fb958f40b29996474949c" + "test.SJ.out.tab:md5,19c3faa1bfa9a0cc5e4c45f17065b53a" ] - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" - }, - "timestamp": "2024-03-05T12:40:00.069146" - }, - "homo_sapiens - paired_end - starfusion - versions": { - "content": [ + ], + null, [ "versions.yml:md5,957a57604ceb366b7af0123738e13559" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" + "nf-test": "0.9.0", + "nextflow": "24.04.3" }, - "timestamp": "2024-03-05T12:44:02.672571" + "timestamp": "2024-07-22T20:10:49.022723" }, - "homo_sapiens - paired_end - multiple - bam_unsorted": { - "content": [ - [ - - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" - }, - "timestamp": "2024-03-05T11:43:54.423849" - }, - "homo_sapiens - paired_end - arriba - log_progress": { - "content": [ - "test.Log.progress.out" - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" - }, - "timestamp": "2024-03-05T12:48:06.986955" - }, - "homo_sapiens - paired_end - bedgraph": { - "content": null, - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" - }, - "timestamp": "2024-03-05T11:39:28.808248" - }, - "homo_sapiens - paired_end - starfusion - bam_unsorted": { - "content": [ - [ - - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" - }, - "timestamp": "2024-03-05T11:41:39.247036" - }, - "homo_sapiens - paired_end - starfusion - read_per_gene_tab": { - "content": null, - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" - }, - "timestamp": "2024-03-05T11:41:39.285373" - }, - "homo_sapiens - paired_end - multiple - log_progress": { - "content": [ - "test.Log.progress.out" - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" - }, - "timestamp": "2024-03-05T12:52:12.923841" - }, - "homo_sapiens - paired_end - arriba - bam_unsorted": { - "content": [ - [ - - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" - }, - "timestamp": "2024-03-05T11:39:45.641672" - }, - "homo_sapiens - paired_end - bam_sorted": { + "homo_sapiens - paired_end - arriba": { "content": [ + "test.Log.final.out", + "test.Log.out", + "test.Log.progress.out", [ [ { "id": "test", "single_end": false }, - "test.Aligned.sortedByCoord.out.bam:md5,b6cec9bba6b04b9b92eddbef128bdfbb" + "test.Aligned.out.bam:md5,28ecaa85a5dec1a18c877c85d874adf2" ] - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" - }, - "timestamp": "2024-03-05T12:40:45.577077" - }, - "homo_sapiens - single_end - spl_junc_tab": { - "content": null, - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" - }, - "timestamp": "2024-03-05T11:39:12.4135" - }, - "homo_sapiens - paired_end - starfusion - spl_junc_tab": { - "content": null, - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" - }, - "timestamp": "2024-03-05T11:41:39.298186" - }, - "homo_sapiens - single_end - log_out": { - "content": [ - "test.Log.out" - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" - }, - "timestamp": "2024-03-05T12:39:59.921499" - }, - "homo_sapiens - paired_end - log_final": { - "content": [ - "test.Log.final.out" - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" - }, - "timestamp": "2024-03-05T12:40:45.485532" - }, - "homo_sapiens - paired_end - bam_transcript": { - "content": [ + ], [ - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" - }, - "timestamp": "2024-03-05T11:39:28.803499" - }, - "homo_sapiens - single_end - log_final": { - "content": [ - "test.Log.final.out" - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" - }, - "timestamp": "2024-03-05T12:39:59.911473" - }, - "homo_sapiens - paired_end - starfusion - log_progress": { - "content": [ - "test.Log.progress.out" - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" - }, - "timestamp": "2024-03-05T12:44:02.502543" - }, - "homo_sapiens - paired_end - multiple - bam_transcript": { - "content": [ + ], [ - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" - }, - "timestamp": "2024-03-05T11:43:54.413659" - }, - "homo_sapiens - paired_end - multiple - read_per_gene_tab": { - "content": null, - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" - }, - "timestamp": "2024-03-05T11:43:54.462815" - }, - "homo_sapiens - single_end - read_per_gene_tab": { - "content": null, - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" - }, - "timestamp": "2024-03-05T11:39:12.409493" - }, - "homo_sapiens - paired_end - junction": { - "content": [ + ], [ - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" - }, - "timestamp": "2024-03-05T11:39:28.812836" - }, - "homo_sapiens - paired_end - spl_junc_tab": { - "content": null, - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" - }, - "timestamp": "2024-03-05T11:39:28.825946" - }, - "homo_sapiens - paired_end - starfusion - sam": { - "content": [ + ], + null, [ - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" - }, - "timestamp": "2024-03-05T11:41:39.291398" - }, - "homo_sapiens - paired_end - arriba - bam": { - "content": [ + ], [ [ { "id": "test", "single_end": false }, - "test.Aligned.out.bam:md5,28ecaa85a5dec1a18c877c85d874adf2" + "test.Chimeric.out.junction:md5,62760fd60371d5bacae324c370358944" ] - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" - }, - "timestamp": "2024-03-05T12:48:07.064585" - }, - "homo_sapiens - single_end - log_progress": { - "content": [ + ], + null, + [ + + ], + null, [ [ { "id": "test", - "single_end": true + "single_end": false }, - "test.Log.progress.out:md5,b2bd061d6cbaaf3d6d3b1fed547f69b8" + "test.SJ.out.tab:md5,5155c9fd1f787ad6d7d80987fb06219c" ] + ], + null, + [ + "versions.yml:md5,957a57604ceb366b7af0123738e13559" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" + "nf-test": "0.9.0", + "nextflow": "24.04.3" }, - "timestamp": "2024-03-05T12:40:00.033267" + "timestamp": "2024-07-22T20:07:19.724256" }, - "homo_sapiens - paired_end - starfusion - wig": { - "content": null, - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" - }, - "timestamp": "2024-03-05T11:41:39.311386" - }, - "homo_sapiens - paired_end - wig": { - "content": null, - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" - }, - "timestamp": "2024-03-05T11:39:28.830843" - }, - "homo_sapiens - paired_end - starfusion - log_out": { + "homo_sapiens - paired_end - starfusion - stub": { "content": [ - "test.Log.out" + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.Log.final.out:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": false + }, + "test.Log.out:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "10": [ + [ + { + "id": "test", + "single_end": false + }, + "test.Chimeric.out.junction:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "11": [ + [ + { + "id": "test", + "single_end": false + }, + "test.out.sam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + [ + { + "id": "test", + "single_end": false + }, + "test.Log.progress.out:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "3": [ + "versions.yml:md5,957a57604ceb366b7af0123738e13559" + ], + "4": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test.Aligned.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e", + "testXd.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "5": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test.Aligned.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "6": [ + [ + { + "id": "test", + "single_end": false + }, + "test.toTranscriptome.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "7": [ + [ + { + "id": "test", + "single_end": false + }, + "test.Aligned.unsort.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "8": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test.unmapped_1.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "test.unmapped_2.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ] + ], + "9": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test.ReadsPerGene.out.tab:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.SJ.out.tab:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.tab:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "bam": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test.Aligned.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e", + "testXd.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "bam_sorted": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test.Aligned.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "bam_transcript": [ + [ + { + "id": "test", + "single_end": false + }, + "test.toTranscriptome.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "bam_unsorted": [ + [ + { + "id": "test", + "single_end": false + }, + "test.Aligned.unsort.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "fastq": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test.unmapped_1.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "test.unmapped_2.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ] + ], + "junction": [ + [ + { + "id": "test", + "single_end": false + }, + "test.Chimeric.out.junction:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "log_final": [ + [ + { + "id": "test", + "single_end": false + }, + "test.Log.final.out:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "log_out": [ + [ + { + "id": "test", + "single_end": false + }, + "test.Log.out:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "log_progress": [ + [ + { + "id": "test", + "single_end": false + }, + "test.Log.progress.out:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "sam": [ + [ + { + "id": "test", + "single_end": false + }, + "test.out.sam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "tab": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test.ReadsPerGene.out.tab:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.SJ.out.tab:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.tab:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "versions": [ + "versions.yml:md5,957a57604ceb366b7af0123738e13559" + ] + } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" + "nf-test": "0.9.0", + "nextflow": "24.04.3" }, - "timestamp": "2024-03-05T12:44:02.489254" + "timestamp": "2024-07-22T20:13:37.606866" } } \ No newline at end of file diff --git a/modules/local/star_genomegenerate_igenomes/main.nf b/modules/local/star_genomegenerate_igenomes/main.nf index e36e04179..4e2fcf6bf 100644 --- a/modules/local/star_genomegenerate_igenomes/main.nf +++ b/modules/local/star_genomegenerate_igenomes/main.nf @@ -115,4 +115,5 @@ process STAR_GENOMEGENERATE_IGENOMES { gawk: \$(echo \$(gawk --version 2>&1) | sed 's/^.*GNU Awk //; s/, .*\$//') END_VERSIONS """ - }} + } +} diff --git a/modules/local/star_genomegenerate_igenomes/tests/main.nf.test b/modules/local/star_genomegenerate_igenomes/tests/main.nf.test index aea6305c4..d3bd71891 100644 --- a/modules/local/star_genomegenerate_igenomes/tests/main.nf.test +++ b/modules/local/star_genomegenerate_igenomes/tests/main.nf.test @@ -18,21 +18,21 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot(file(process.out.index[0][1]).listFiles().collect { it.getName() }.sort().toString()).match("fasta_gtf_index") }, - { assert snapshot(process.out.versions).match("fasta_gtf_versions") } + { assert snapshot( + file(process.out.index[0][1]).listFiles().collect { it.getName() }.sort().toString(), + process.out.versions + ).match() } ) } } - test("fasta with gtf - stub") { - - options '-stub' + test("fasta no gtf") { when { process { """ input[0] = Channel.of([file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true)]) - input[1] = Channel.of([file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.gtf', checkIfExists: true)]) + input[1] = Channel.of([ ]) """ } } @@ -40,19 +40,24 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot(file(process.out.index[0][1]).listFiles().collect { it.getName() }.sort().toString()).match("fasta_gtf_stub_index") }, - { assert snapshot(process.out.versions).match("fasta_gtf_stub_versions") } + { assert snapshot( + file(process.out.index[0][1]).listFiles().collect { it.getName() }.sort().toString(), + process.out.versions + ).match() } ) } + } - test("fasta no gtf") { + test("fasta with gtf - stub") { + + options '-stub' when { process { """ input[0] = Channel.of([file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true)]) - input[1] = Channel.of([ ]) + input[1] = Channel.of([file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.gtf', checkIfExists: true)]) """ } } @@ -60,11 +65,9 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot(file(process.out.index[0][1]).listFiles().collect { it.getName() }.sort().toString()).match("fasta_index") }, - { assert snapshot(process.out.versions).match("fasta_versions") } + { assert snapshot(process.out).match() } ) } - } test("fasta no gtf - stub") { @@ -83,8 +86,7 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot(file(process.out.index[0][1]).listFiles().collect { it.getName() }.sort().toString()).match("fasta_stub_index") }, - { assert snapshot(process.out.versions).match("fasta_stub_versions") } + { assert snapshot(process.out).match() } ) } } diff --git a/modules/local/star_genomegenerate_igenomes/tests/main.nf.test.snap b/modules/local/star_genomegenerate_igenomes/tests/main.nf.test.snap index 4a3d6e033..1ba924611 100644 --- a/modules/local/star_genomegenerate_igenomes/tests/main.nf.test.snap +++ b/modules/local/star_genomegenerate_igenomes/tests/main.nf.test.snap @@ -1,90 +1,128 @@ { - "fasta_gtf_versions": { + "fasta with gtf": { "content": [ + "[]", [ "versions.yml:md5,562a70f12dd9e695449b59fbf604e98d" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" + "nf-test": "0.9.0", + "nextflow": "24.04.3" }, - "timestamp": "2024-03-05T10:28:05.069709" + "timestamp": "2024-07-22T20:14:17.250178" }, - "fasta_stub_versions": { + "fasta no gtf - stub": { "content": [ - [ - "versions.yml:md5,562a70f12dd9e695449b59fbf604e98d" - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" - }, - "timestamp": "2024-03-05T10:31:12.153651" - }, - "fasta_gtf_stub_index": { - "content": [ - "[]" - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" - }, - "timestamp": "2024-03-05T10:28:16.309869" - }, - "fasta_gtf_stub_versions": { - "content": [ - [ - "versions.yml:md5,562a70f12dd9e695449b59fbf604e98d" - ] + { + "0": [ + [ + "Genome:md5,d41d8cd98f00b204e9800998ecf8427e", + "Log.out:md5,d41d8cd98f00b204e9800998ecf8427e", + "SA:md5,d41d8cd98f00b204e9800998ecf8427e", + "SAindex:md5,d41d8cd98f00b204e9800998ecf8427e", + "chrLength.txt:md5,d41d8cd98f00b204e9800998ecf8427e", + "chrName.txt:md5,d41d8cd98f00b204e9800998ecf8427e", + "chrNameLength.txt:md5,d41d8cd98f00b204e9800998ecf8427e", + "chrStart.txt:md5,d41d8cd98f00b204e9800998ecf8427e", + "genomeParameters.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + "versions.yml:md5,562a70f12dd9e695449b59fbf604e98d" + ], + "index": [ + [ + "Genome:md5,d41d8cd98f00b204e9800998ecf8427e", + "Log.out:md5,d41d8cd98f00b204e9800998ecf8427e", + "SA:md5,d41d8cd98f00b204e9800998ecf8427e", + "SAindex:md5,d41d8cd98f00b204e9800998ecf8427e", + "chrLength.txt:md5,d41d8cd98f00b204e9800998ecf8427e", + "chrName.txt:md5,d41d8cd98f00b204e9800998ecf8427e", + "chrNameLength.txt:md5,d41d8cd98f00b204e9800998ecf8427e", + "chrStart.txt:md5,d41d8cd98f00b204e9800998ecf8427e", + "genomeParameters.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,562a70f12dd9e695449b59fbf604e98d" + ] + } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" + "nf-test": "0.9.0", + "nextflow": "24.04.3" }, - "timestamp": "2024-03-05T10:28:16.337298" + "timestamp": "2024-07-22T20:15:09.671637" }, - "fasta_index": { - "content": [ - "[]" - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" - }, - "timestamp": "2024-03-05T10:30:56.504744" - }, - "fasta_versions": { + "fasta no gtf": { "content": [ + "[]", [ "versions.yml:md5,562a70f12dd9e695449b59fbf604e98d" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" - }, - "timestamp": "2024-03-05T10:30:56.575367" - }, - "fasta_gtf_index": { - "content": [ - "[]" - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" + "nf-test": "0.9.0", + "nextflow": "24.04.3" }, - "timestamp": "2024-03-05T10:28:05.031195" + "timestamp": "2024-07-22T20:14:35.674278" }, - "fasta_stub_index": { + "fasta with gtf - stub": { "content": [ - "[]" + { + "0": [ + [ + "Genome:md5,d41d8cd98f00b204e9800998ecf8427e", + "Log.out:md5,d41d8cd98f00b204e9800998ecf8427e", + "SA:md5,d41d8cd98f00b204e9800998ecf8427e", + "SAindex:md5,d41d8cd98f00b204e9800998ecf8427e", + "chrLength.txt:md5,d41d8cd98f00b204e9800998ecf8427e", + "chrName.txt:md5,d41d8cd98f00b204e9800998ecf8427e", + "chrNameLength.txt:md5,d41d8cd98f00b204e9800998ecf8427e", + "chrStart.txt:md5,d41d8cd98f00b204e9800998ecf8427e", + "exonGeTrInfo.tab:md5,d41d8cd98f00b204e9800998ecf8427e", + "exonInfo.tab:md5,d41d8cd98f00b204e9800998ecf8427e", + "geneInfo.tab:md5,d41d8cd98f00b204e9800998ecf8427e", + "genomeParameters.txt:md5,d41d8cd98f00b204e9800998ecf8427e", + "sjdbInfo.txt:md5,d41d8cd98f00b204e9800998ecf8427e", + "sjdbList.fromGTF.out.tab:md5,d41d8cd98f00b204e9800998ecf8427e", + "sjdbList.out.tab:md5,d41d8cd98f00b204e9800998ecf8427e", + "transcriptInfo.tab:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + "versions.yml:md5,562a70f12dd9e695449b59fbf604e98d" + ], + "index": [ + [ + "Genome:md5,d41d8cd98f00b204e9800998ecf8427e", + "Log.out:md5,d41d8cd98f00b204e9800998ecf8427e", + "SA:md5,d41d8cd98f00b204e9800998ecf8427e", + "SAindex:md5,d41d8cd98f00b204e9800998ecf8427e", + "chrLength.txt:md5,d41d8cd98f00b204e9800998ecf8427e", + "chrName.txt:md5,d41d8cd98f00b204e9800998ecf8427e", + "chrNameLength.txt:md5,d41d8cd98f00b204e9800998ecf8427e", + "chrStart.txt:md5,d41d8cd98f00b204e9800998ecf8427e", + "exonGeTrInfo.tab:md5,d41d8cd98f00b204e9800998ecf8427e", + "exonInfo.tab:md5,d41d8cd98f00b204e9800998ecf8427e", + "geneInfo.tab:md5,d41d8cd98f00b204e9800998ecf8427e", + "genomeParameters.txt:md5,d41d8cd98f00b204e9800998ecf8427e", + "sjdbInfo.txt:md5,d41d8cd98f00b204e9800998ecf8427e", + "sjdbList.fromGTF.out.tab:md5,d41d8cd98f00b204e9800998ecf8427e", + "sjdbList.out.tab:md5,d41d8cd98f00b204e9800998ecf8427e", + "transcriptInfo.tab:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,562a70f12dd9e695449b59fbf604e98d" + ] + } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" + "nf-test": "0.9.0", + "nextflow": "24.04.3" }, - "timestamp": "2024-03-05T10:31:12.12097" + "timestamp": "2024-07-22T20:14:52.732323" } } \ No newline at end of file From 61def1627e0346f4dbb4cc57426a7fc07d0458e7 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Wed, 7 Aug 2024 11:59:30 +0100 Subject: [PATCH 516/634] Bump resource bucket for genomecov --- modules/nf-core/bedtools/genomecov/main.nf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/nf-core/bedtools/genomecov/main.nf b/modules/nf-core/bedtools/genomecov/main.nf index 954e8913d..f9433be98 100644 --- a/modules/nf-core/bedtools/genomecov/main.nf +++ b/modules/nf-core/bedtools/genomecov/main.nf @@ -1,6 +1,6 @@ process BEDTOOLS_GENOMECOV { tag "$meta.id" - label 'process_single' + label 'process_low' conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? From 1e611b1a70fa65e5273dcdbdf75eda9ce2828f97 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Wed, 7 Aug 2024 13:10:08 +0100 Subject: [PATCH 517/634] Revert "Bump resource bucket for genomecov" This reverts commit 61def1627e0346f4dbb4cc57426a7fc07d0458e7. --- modules/nf-core/bedtools/genomecov/main.nf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/nf-core/bedtools/genomecov/main.nf b/modules/nf-core/bedtools/genomecov/main.nf index f9433be98..954e8913d 100644 --- a/modules/nf-core/bedtools/genomecov/main.nf +++ b/modules/nf-core/bedtools/genomecov/main.nf @@ -1,6 +1,6 @@ process BEDTOOLS_GENOMECOV { tag "$meta.id" - label 'process_low' + label 'process_single' conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? From 0af6da7ff6c2977b6279fcc9676cddb5a40eda85 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Wed, 7 Aug 2024 13:11:49 +0100 Subject: [PATCH 518/634] Update bedtools/genomecov for lower-resource sort --- modules.json | 2 +- modules/nf-core/bedtools/genomecov/main.nf | 11 +- .../bedtools/genomecov/tests/main.nf.test | 83 +++++++++-- .../genomecov/tests/main.nf.test.snap | 131 ++++++++++++++++-- 4 files changed, 196 insertions(+), 31 deletions(-) diff --git a/modules.json b/modules.json index f197e3f65..87e2d176c 100644 --- a/modules.json +++ b/modules.json @@ -12,7 +12,7 @@ }, "bedtools/genomecov": { "branch": "master", - "git_sha": "81b90194ce9911dbd55bba2c65c6919f6677abc4", + "git_sha": "9ba6b02bbcb322ff4265cc51fca0ee5d8420b929", "installed_by": ["modules"] }, "cat/fastq": { diff --git a/modules/nf-core/bedtools/genomecov/main.nf b/modules/nf-core/bedtools/genomecov/main.nf index 954e8913d..8403c5303 100644 --- a/modules/nf-core/bedtools/genomecov/main.nf +++ b/modules/nf-core/bedtools/genomecov/main.nf @@ -4,8 +4,8 @@ process BEDTOOLS_GENOMECOV { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/bedtools:2.31.1--hf5e1c6e_0' : - 'biocontainers/bedtools:2.31.1--hf5e1c6e_0' }" + 'oras://community.wave.seqera.io/library/bedtools_coreutils:ba273c06a3909a15': + 'community.wave.seqera.io/library/bedtools_coreutils:a623c13f66d5262b' }" input: tuple val(meta), path(intervals), val(scale) @@ -21,13 +21,16 @@ process BEDTOOLS_GENOMECOV { task.ext.when == null || task.ext.when script: - def args = task.ext.args ?: '' + def args = task.ext.args ?: '' def args_list = args.tokenize() args += (scale > 0 && scale != 1) ? " -scale $scale" : "" if (!args_list.contains('-bg') && (scale > 0 && scale != 1)) { args += " -bg" } - def sort_cmd = sort ? '| bedtools sort' : '' + // Sorts output file by chromosome and position using additional options for performance and consistency + // See https://www.biostars.org/p/66927/ for further details + def buffer = task.memory ? "--buffer-size=${task.memory.toGiga().intdiv(2)}G" : '' + def sort_cmd = sort ? "| LC_ALL=C sort --parallel=$task.cpus $buffer -k1,1 -k2,2n" : '' def prefix = task.ext.prefix ?: "${meta.id}" if (intervals.name =~ /\.bam/) { diff --git a/modules/nf-core/bedtools/genomecov/tests/main.nf.test b/modules/nf-core/bedtools/genomecov/tests/main.nf.test index fe1567d89..16a03492c 100644 --- a/modules/nf-core/bedtools/genomecov/tests/main.nf.test +++ b/modules/nf-core/bedtools/genomecov/tests/main.nf.test @@ -4,10 +4,15 @@ nextflow_process { process "BEDTOOLS_GENOMECOV" config "./nextflow.config" - test("sarscov2 - no scale") { + tag "modules" + tag "modules_nfcore" + tag "bedtools" + tag "bedtools/genomecov" + + test("sarscov2 - no scale") { when { process { - """ + """ input[0] = [ [ id:'test' ], // meta map file(params.modules_testdata_base_path + "genomics/sarscov2/illumina/bam/test.paired_end.bam", checkIfExists: true), @@ -25,16 +30,15 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot(process.out).match("no_scale") } + { assert snapshot(process.out).match() } ) } - } test("sarscov2 - dummy sizes") { when { process { - """ + """ input[0] = [ [ id:'test'], file(params.modules_testdata_base_path + "genomics/sarscov2/illumina/bam/test.paired_end.bam", checkIfExists: true), @@ -52,16 +56,15 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot(process.out).match("dummy_sizes") } + { assert snapshot(process.out).match() } ) } - } test("sarscov2 - scale") { when { process { - """ + """ input[0] = [ [ id:'test'], file(params.modules_testdata_base_path + "genomics/sarscov2/genome/bed/baits.bed", checkIfExists: true), @@ -79,18 +82,17 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot(process.out).match("scale") } + { assert snapshot(process.out).match() } ) } - } - test("stub") { + test("sarscov2 - no scale - stub") { options "-stub" when { process { - """ + """ input[0] = [ [ id:'test' ], // meta map file(params.modules_testdata_base_path + "genomics/sarscov2/illumina/bam/test.paired_end.bam", checkIfExists: true), @@ -99,6 +101,34 @@ nextflow_process { // sizes input[1] = [] // extension + input[2] = "txt" + input[3] = true + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("sarscov2 - dummy sizes - stub") { + options "-stub" + + when { + process { + """ + input[0] = [ + [ id:'test'], + file(params.modules_testdata_base_path + "genomics/sarscov2/illumina/bam/test.paired_end.bam", checkIfExists: true), + 0.5 + ] + // sizes + input[1] = file('dummy_chromosome_sizes') + // extension input[2] = 'txt' input[3] = false """ @@ -108,10 +138,37 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot(file(process.out.genomecov[0][1]).name).match("stub") } + { assert snapshot(process.out).match() } ) } + } + + test("sarscov2 - scale - stub") { + options "-stub" + when { + process { + """ + input[0] = [ + [ id:'test'], + file(params.modules_testdata_base_path + "genomics/sarscov2/genome/bed/baits.bed", checkIfExists: true), + 0.5 + ] + // sizes + input[1] = file(params.modules_testdata_base_path + "genomics/sarscov2/genome/genome.sizes", checkIfExists: true) + // extension + input[2] = 'txt' + input[3] = false + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } } } diff --git a/modules/nf-core/bedtools/genomecov/tests/main.nf.test.snap b/modules/nf-core/bedtools/genomecov/tests/main.nf.test.snap index 8f9191e4c..da6dbe875 100644 --- a/modules/nf-core/bedtools/genomecov/tests/main.nf.test.snap +++ b/modules/nf-core/bedtools/genomecov/tests/main.nf.test.snap @@ -1,5 +1,5 @@ { - "dummy_sizes": { + "sarscov2 - dummy sizes": { "content": [ { "0": [ @@ -26,9 +26,13 @@ ] } ], - "timestamp": "2023-12-05T17:35:58.35232" + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-05T11:59:33.898146" }, - "no_scale": { + "sarscov2 - no scale - stub": { "content": [ { "0": [ @@ -36,7 +40,7 @@ { "id": "test" }, - "test.coverage.txt:md5,66083198daca6c001d328ba9616e9b53" + "test.coverage.txt:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "1": [ @@ -47,7 +51,7 @@ { "id": "test" }, - "test.coverage.txt:md5,66083198daca6c001d328ba9616e9b53" + "test.coverage.txt:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "versions": [ @@ -55,15 +59,46 @@ ] } ], - "timestamp": "2023-12-05T17:35:51.142496" + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-05T11:59:52.483371" }, - "stub": { + "sarscov2 - scale": { "content": [ - "test.coverage.txt" + { + "0": [ + [ + { + "id": "test" + }, + "test.coverage.txt:md5,de3c59c0ea123bcdbbad27bc0a0a601e" + ] + ], + "1": [ + "versions.yml:md5,5fd44452613992a6f71f2c73d2e117f2" + ], + "genomecov": [ + [ + { + "id": "test" + }, + "test.coverage.txt:md5,de3c59c0ea123bcdbbad27bc0a0a601e" + ] + ], + "versions": [ + "versions.yml:md5,5fd44452613992a6f71f2c73d2e117f2" + ] + } ], - "timestamp": "2023-12-05T17:36:13.084709" + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-05T11:59:43.69501" }, - "scale": { + "sarscov2 - scale - stub": { "content": [ { "0": [ @@ -71,7 +106,7 @@ { "id": "test" }, - "test.coverage.txt:md5,de3c59c0ea123bcdbbad27bc0a0a601e" + "test.coverage.txt:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "1": [ @@ -82,7 +117,73 @@ { "id": "test" }, - "test.coverage.txt:md5,de3c59c0ea123bcdbbad27bc0a0a601e" + "test.coverage.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,5fd44452613992a6f71f2c73d2e117f2" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-05T12:00:09.930036" + }, + "sarscov2 - no scale": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.coverage.txt:md5,66083198daca6c001d328ba9616e9b53" + ] + ], + "1": [ + "versions.yml:md5,5fd44452613992a6f71f2c73d2e117f2" + ], + "genomecov": [ + [ + { + "id": "test" + }, + "test.coverage.txt:md5,66083198daca6c001d328ba9616e9b53" + ] + ], + "versions": [ + "versions.yml:md5,5fd44452613992a6f71f2c73d2e117f2" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-05T11:59:25.448817" + }, + "sarscov2 - dummy sizes - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.coverage.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + "versions.yml:md5,5fd44452613992a6f71f2c73d2e117f2" + ], + "genomecov": [ + [ + { + "id": "test" + }, + "test.coverage.txt:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "versions": [ @@ -90,6 +191,10 @@ ] } ], - "timestamp": "2023-12-05T17:36:05.962006" + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-05T12:00:01.086433" } } \ No newline at end of file From add81e84e4bb7c9b7c3f90fb6d36de2563047e48 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Wed, 7 Aug 2024 13:27:00 +0100 Subject: [PATCH 519/634] Update changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index e62628fc6..ffc3b4db4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -106,6 +106,7 @@ Thank you to everyone else that has contributed by reporting bugs, enhancements - [PR #1341](https://github.com/nf-core/rnaseq/pull/1341) - Add rename in the MultiQC report for samples without techreps - [PR #1342](https://github.com/nf-core/rnaseq/pull/1342) - Factor out preprocessing - [PR #1345](https://github.com/nf-core/rnaseq/pull/1345) - Fix preprocessing call +- [PR #1350](https://github.com/nf-core/rnaseq/pull/1350) - Reduce resource usage for sort process in bedtools/genomecov ### Parameters From 5c0adce452cdef9f7a004b9b9d5540527349f087 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Wed, 7 Aug 2024 16:48:50 +0100 Subject: [PATCH 520/634] Try multiqc fixes --- .../rnaseq/assets/multiqc/multiqc_config.yml | 23 +++++++++---------- workflows/rnaseq/main.nf | 11 ++++++--- 2 files changed, 19 insertions(+), 15 deletions(-) diff --git a/workflows/rnaseq/assets/multiqc/multiqc_config.yml b/workflows/rnaseq/assets/multiqc/multiqc_config.yml index 2bf39b16c..6cc0d62ba 100644 --- a/workflows/rnaseq/assets/multiqc/multiqc_config.yml +++ b/workflows/rnaseq/assets/multiqc/multiqc_config.yml @@ -32,20 +32,19 @@ run_modules: - qualimap # Order of modules -top_modules: - - "fail_trimmed_samples" - - "fail_mapped_samples" - - "fail_strand_check" - - "star_rsem_deseq2_pca" - - "star_rsem_deseq2_clustering" - - "star_salmon_deseq2_pca" - - "star_salmon_deseq2_clustering" - - "salmon_deseq2_pca" - - "salmon_deseq2_clustering" - - "biotype_counts" - - "dupradar" module_order: + - fail_trimmed_samples + - fail_mapped_samples + - fail_strand_check + - star_rsem_deseq2_pca + - star_rsem_deseq2_clustering + - star_salmon_deseq2_pca + - star_salmon_deseq2_clustering + - salmon_deseq2_pca + - salmon_deseq2_clustering + - biotype_counts + - dupradar - fastqc: name: "FastQC (raw)" anchor: "fastqc_raw" diff --git a/workflows/rnaseq/main.nf b/workflows/rnaseq/main.nf index 7bf5d36e0..b729aefcc 100755 --- a/workflows/rnaseq/main.nf +++ b/workflows/rnaseq/main.nf @@ -697,9 +697,12 @@ workflow RNASEQ { 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_files = ch_multiqc_files.mix(ch_collated_versions) + multiqc_custom_methods_description = params.multiqc_methods_description ? file(params.multiqc_methods_description) : file("$projectDir/workflows/rnaseq/assets/multiqc/methods_description_template.yml", checkIfExists: true) + ch_multiqc_files = ch_multiqc_files.mix(Channel.from(multiqc_custom_methods_description)) // Provide MultiQC with rename patterns to ensure it uses sample names - // for single-techrep samples not processed by CAT_FASTQ. + // for single-techrep samples not processed by CAT_FASTQ, and trims out + // _raw or _trimmed ch_name_replacements = ch_fastq .filter{ meta, reads -> @@ -707,11 +710,13 @@ workflow RNASEQ { } .map{ meta, reads -> def name1 = file(reads[0][0]).simpleName + "\t" + meta.id + '_1' + def fastqcnames1 = meta.id + "_raw_1\t" + meta.id + "_1\n" + meta.id + "_trimmed_1\t" + meta.id + "_1" if (reads[1] ){ def name2 = file(reads[0][1]).simpleName + "\t" + meta.id + '_2' - return [ name1, name2 ] + def fastqcnames2 = meta.id + "_raw_2\t" + meta.id + "_2\n" + meta.id + "_trimmed_2\t" + meta.id + "_2" + return [ name1, name2, fastqcnames1, fastqcnames2 ] } else{ - return name1 + return [ name1, fastqcnames1 ] } } .flatten() From 97a4530a784bd450717915ed5d9b3341be866ebb Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Thu, 8 Aug 2024 11:25:30 +0000 Subject: [PATCH 521/634] Fix rename patterns --- workflows/rnaseq/main.nf | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/workflows/rnaseq/main.nf b/workflows/rnaseq/main.nf index b729aefcc..721d9b77c 100755 --- a/workflows/rnaseq/main.nf +++ b/workflows/rnaseq/main.nf @@ -705,18 +705,16 @@ workflow RNASEQ { // _raw or _trimmed ch_name_replacements = ch_fastq - .filter{ meta, reads -> - reads.size() == 1 - } .map{ meta, reads -> def name1 = file(reads[0][0]).simpleName + "\t" + meta.id + '_1' - def fastqcnames1 = meta.id + "_raw_1\t" + meta.id + "_1\n" + meta.id + "_trimmed_1\t" + meta.id + "_1" - if (reads[1] ){ + def fastqcnames = meta.id + "_raw\t" + meta.id + "\n" + meta.id + "_trimmed\t" + meta.id + if (reads[0][1] ){ def name2 = file(reads[0][1]).simpleName + "\t" + meta.id + '_2' + def fastqcnames1 = meta.id + "_raw_1\t" + meta.id + "_1\n" + meta.id + "_trimmed_1\t" + meta.id + "_1" def fastqcnames2 = meta.id + "_raw_2\t" + meta.id + "_2\n" + meta.id + "_trimmed_2\t" + meta.id + "_2" return [ name1, name2, fastqcnames1, fastqcnames2 ] } else{ - return [ name1, fastqcnames1 ] + return [ name1, fastqcnames ] } } .flatten() From 25f3628415364480d03788106760aab982ad0e07 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Thu, 8 Aug 2024 16:28:04 +0000 Subject: [PATCH 522/634] Import tsv func from nf-core subworkflow --- .../utils_nfcore_rnaseq_pipeline/main.nf | 12 ---------- .../tests/main.function.nf.test | 23 ------------------- .../tests/main.function.nf.test.snap | 10 -------- workflows/rnaseq/main.nf | 2 +- 4 files changed, 1 insertion(+), 46 deletions(-) diff --git a/subworkflows/local/utils_nfcore_rnaseq_pipeline/main.nf b/subworkflows/local/utils_nfcore_rnaseq_pipeline/main.nf index 8022a5c1b..b2b890479 100644 --- a/subworkflows/local/utils_nfcore_rnaseq_pipeline/main.nf +++ b/subworkflows/local/utils_nfcore_rnaseq_pipeline/main.nf @@ -493,18 +493,6 @@ def checkMaxContigSize(fai_file) { } } -// -// Create MultiQC tsv custom content from a list of values -// -def multiqcTsvFromList(tsv_data, header) { - def tsv_string = "" - if (tsv_data.size() > 0) { - tsv_string += "${header.join('\t')}\n" - tsv_string += tsv_data.join('\n') - } - return tsv_string -} - // // Function that parses and returns the alignment rate from the STAR log output // diff --git a/subworkflows/local/utils_nfcore_rnaseq_pipeline/tests/main.function.nf.test b/subworkflows/local/utils_nfcore_rnaseq_pipeline/tests/main.function.nf.test index 8390034c5..b394aadb7 100644 --- a/subworkflows/local/utils_nfcore_rnaseq_pipeline/tests/main.function.nf.test +++ b/subworkflows/local/utils_nfcore_rnaseq_pipeline/tests/main.function.nf.test @@ -367,29 +367,6 @@ nextflow_function { } - test("Test Function multiqcTsvFromList") { - - function "multiqcTsvFromList" - - when { - function { - """ - // Create a TSV of one entry - input[0] = [ 'test', 'value' ] - input[1] = [ 'id' , 'attribute'] - """ - } - } - - then { - assertAll( - { assert function.success }, - { assert snapshot(function.result).match() } - ) - } - - } - test("Test Function getStarPercentMapped pass") { function "getStarPercentMapped" diff --git a/subworkflows/local/utils_nfcore_rnaseq_pipeline/tests/main.function.nf.test.snap b/subworkflows/local/utils_nfcore_rnaseq_pipeline/tests/main.function.nf.test.snap index ed2d57860..9deb0bca3 100644 --- a/subworkflows/local/utils_nfcore_rnaseq_pipeline/tests/main.function.nf.test.snap +++ b/subworkflows/local/utils_nfcore_rnaseq_pipeline/tests/main.function.nf.test.snap @@ -95,16 +95,6 @@ }, "timestamp": "2024-03-06T14:33:40.548126" }, - "Test Function multiqcTsvFromList": { - "content": [ - "id\tattribute\ntest\nvalue" - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-03-06T14:33:43.671826" - }, "Test Function checkSamplesAfterGrouping success": { "content": [ [ diff --git a/workflows/rnaseq/main.nf b/workflows/rnaseq/main.nf index 721d9b77c..994915433 100755 --- a/workflows/rnaseq/main.nf +++ b/workflows/rnaseq/main.nf @@ -18,7 +18,7 @@ include { MULTIQC_CUSTOM_BIOTYPE } from '../../modules/local/multiqc include { ALIGN_STAR } from '../../subworkflows/local/align_star' include { QUANTIFY_RSEM } from '../../subworkflows/local/quantify_rsem' include { checkSamplesAfterGrouping } from '../../subworkflows/local/utils_nfcore_rnaseq_pipeline' -include { multiqcTsvFromList } from '../../subworkflows/local/utils_nfcore_rnaseq_pipeline' +include { multiqcTsvFromList } from '../../subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness' include { getStarPercentMapped } from '../../subworkflows/local/utils_nfcore_rnaseq_pipeline' include { biotypeInGtf } from '../../subworkflows/local/utils_nfcore_rnaseq_pipeline' include { getInferexperimentStrandedness } from '../../subworkflows/local/utils_nfcore_rnaseq_pipeline' From 566369211f82be9856625d99573d56b2cabb3c39 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Thu, 8 Aug 2024 17:52:29 +0000 Subject: [PATCH 523/634] Better define ordering --- .../rnaseq/assets/multiqc/multiqc_config.yml | 57 +++++++++++++++---- 1 file changed, 46 insertions(+), 11 deletions(-) diff --git a/workflows/rnaseq/assets/multiqc/multiqc_config.yml b/workflows/rnaseq/assets/multiqc/multiqc_config.yml index 6cc0d62ba..0cdc029db 100644 --- a/workflows/rnaseq/assets/multiqc/multiqc_config.yml +++ b/workflows/rnaseq/assets/multiqc/multiqc_config.yml @@ -1,6 +1,52 @@ report_comment: > This report has been generated by the nf-core/rnaseq analysis pipeline. For information about how to interpret these results, please see the documentation. report_section_order: + sample-status: + order: 1104 + fail_trimmed_samples-module: + order: 1103 + fail_mapped_samples-module: + order: 1102 + fail_strand_check-module: + order: 1101 + featurecounts_biotype: + order: 1100 + sample-relationships: + order: 1099 + dupradar-module: + order: 1089 + star_salmon_deseq2_pca: + order: 1098 + star_salmon_deseq2_clustering: + order: 1087 + salmon_deseq2_pca: + order: 1086 + salmon_deseq2_clustering: + order: 1085 + star_rsem_deseq2_pca: + order: 1084 + star_rsem_deseq2_clustering: + order: 1083 + picard: + order: 1082 + qualimap: + order: 1081 + rseqc: + order: 1070 + salmon: + order: 1079 + samtools: + order: 1078 + star: + order: 1077 + fastqc_raw: + order: 1002 + cutadapt: + order: 1001 + fastp: + order: 1001 + fastqc_trimmed: + order: 1000 "nf-core-rnaseq-methods-description-module": order: -1000 "software_versions-module": @@ -34,17 +80,6 @@ run_modules: # Order of modules module_order: - - fail_trimmed_samples - - fail_mapped_samples - - fail_strand_check - - star_rsem_deseq2_pca - - star_rsem_deseq2_clustering - - star_salmon_deseq2_pca - - star_salmon_deseq2_clustering - - salmon_deseq2_pca - - salmon_deseq2_clustering - - biotype_counts - - dupradar - fastqc: name: "FastQC (raw)" anchor: "fastqc_raw" From 7dc68d6bcb073c356f9c7c049932fcfad7a0d7f3 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Thu, 8 Aug 2024 17:54:20 +0000 Subject: [PATCH 524/634] Add new header, define some sections, reinstate trimming status reporting --- .../multiqc/deseq2_clustering_header.txt | 3 ++ .../assets/multiqc/deseq2_pca_header.txt | 3 ++ .../assets/multiqc/sample_status_header.txt | 3 ++ workflows/rnaseq/main.nf | 41 +++++++++++++++---- 4 files changed, 43 insertions(+), 7 deletions(-) create mode 100644 workflows/rnaseq/assets/multiqc/sample_status_header.txt diff --git a/workflows/rnaseq/assets/multiqc/deseq2_clustering_header.txt b/workflows/rnaseq/assets/multiqc/deseq2_clustering_header.txt index 5e9ded7db..f2f5dc852 100644 --- a/workflows/rnaseq/assets/multiqc/deseq2_clustering_header.txt +++ b/workflows/rnaseq/assets/multiqc/deseq2_clustering_header.txt @@ -4,6 +4,9 @@ # DESeq2 # rlog values for each sample # in the deseq2_qc.r script." +#parent_id: 'sample-relationships' +#parent_name: 'Sample relationships' +#parent_description: 'Plots interrogating sample relationships, based on final count matrices' #plot_type: 'heatmap' #anchor: 'deseq2_clustering' #pconfig: diff --git a/workflows/rnaseq/assets/multiqc/deseq2_pca_header.txt b/workflows/rnaseq/assets/multiqc/deseq2_pca_header.txt index 636f9374d..cb20ce49b 100644 --- a/workflows/rnaseq/assets/multiqc/deseq2_pca_header.txt +++ b/workflows/rnaseq/assets/multiqc/deseq2_pca_header.txt @@ -3,6 +3,9 @@ #description: "PCA plot between samples in the experiment. # These values are calculated using DESeq2 # in the deseq2_qc.r script." +#parent_id: 'sample-relationships' +#parent_name: 'Sample relationships' +#parent_description: 'Plots interrogating sample relationships, based on final count matrices' #plot_type: 'scatter' #anchor: 'deseq2_pca' #pconfig: diff --git a/workflows/rnaseq/assets/multiqc/sample_status_header.txt b/workflows/rnaseq/assets/multiqc/sample_status_header.txt new file mode 100644 index 000000000..0a76ff8b9 --- /dev/null +++ b/workflows/rnaseq/assets/multiqc/sample_status_header.txt @@ -0,0 +1,3 @@ +#parent_id: 'sample-status' +#parent_name: 'Sample status checks' +#parent_description: 'Reports on sample strandedness status, and any failures in trimming or mapping' diff --git a/workflows/rnaseq/main.nf b/workflows/rnaseq/main.nf index 994915433..f357f8a02 100755 --- a/workflows/rnaseq/main.nf +++ b/workflows/rnaseq/main.nf @@ -69,10 +69,11 @@ include { FASTQ_QC_TRIM_FILTER_SETSTRANDEDNESS } from '../../subwor */ // Header files for MultiQC -ch_pca_header_multiqc = file("$projectDir/workflows/rnaseq/assets/multiqc/deseq2_pca_header.txt", checkIfExists: true) -ch_clustering_header_multiqc = file("$projectDir/workflows/rnaseq/assets/multiqc/deseq2_clustering_header.txt", checkIfExists: true) -ch_biotypes_header_multiqc = file("$projectDir/workflows/rnaseq/assets/multiqc/biotypes_header.txt", checkIfExists: true) -ch_dummy_file = ch_pca_header_multiqc +ch_pca_header_multiqc = file("$projectDir/workflows/rnaseq/assets/multiqc/deseq2_pca_header.txt", checkIfExists: true) +sample_status_header_multiqc = file("$projectDir/workflows/rnaseq/assets/multiqc/sample_status_header.txt", checkIfExists: true) +ch_clustering_header_multiqc = file("$projectDir/workflows/rnaseq/assets/multiqc/deseq2_clustering_header.txt", checkIfExists: true) +ch_biotypes_header_multiqc = file("$projectDir/workflows/rnaseq/assets/multiqc/biotypes_header.txt", checkIfExists: true) +ch_dummy_file = ch_pca_header_multiqc workflow RNASEQ { @@ -152,8 +153,34 @@ workflow RNASEQ { ) ch_multiqc_files = ch_multiqc_files.mix(FASTQ_QC_TRIM_FILTER_SETSTRANDEDNESS.out.multiqc_files) - ch_versions = ch_versions.mix(FASTQ_QC_TRIM_FILTER_SETSTRANDEDNESS.out.versions) + ich_versions = ch_versions.mix(FASTQ_QC_TRIM_FILTER_SETSTRANDEDNESS.out.versions) ch_strand_inferred_filtered_fastq = FASTQ_QC_TRIM_FILTER_SETSTRANDEDNESS.out.reads + ch_trim_read_count = FASTQ_QC_TRIM_FILTER_SETSTRANDEDNESS.out.trim_read_count + + ch_trim_status = ch_trim_read_count + .map { + meta, num_reads -> + return [ meta.id, num_reads > params.min_trimmed_reads.toFloat() ] + } + // + // Get list of samples that failed trimming threshold for MultiQC report + // + ch_trim_read_count + .map { + meta, num_reads -> + if (num_reads <= params.min_trimmed_reads.toFloat()) { + return [ "$meta.id\t$num_reads" ] + } + } + .collect() + .map { + tsv_data -> + def header = ["Sample", "Reads after trimming"] + sample_status_header_multiqc.text + multiqcTsvFromList(tsv_data, header) + } + .set { ch_fail_trimming_multiqc } + + ch_multiqc_files = ch_multiqc_files.mix(ch_fail_trimming_multiqc.collectFile(name: 'fail_trimmed_samples_mqc.tsv')) // // SUBWORKFLOW: Alignment with STAR and gene/transcript quantification with Salmon @@ -410,7 +437,7 @@ workflow RNASEQ { .map { tsv_data -> def header = ["Sample", "STAR uniquely mapped reads (%)"] - multiqcTsvFromList(tsv_data, header) + sample_status_header_multiqc.text + multiqcTsvFromList(tsv_data, header) } .set { ch_fail_mapping_multiqc } ch_multiqc_files = ch_multiqc_files.mix(ch_fail_mapping_multiqc.collectFile(name: 'fail_mapped_samples_mqc.tsv')) @@ -628,7 +655,7 @@ workflow RNASEQ { "Antisense (%)", "Unstranded (%)" ] - multiqcTsvFromList(tsv_data, header) + sample_status_header_multiqc.text + multiqcTsvFromList(tsv_data, header) } .set { ch_fail_strand_multiqc } From 56a8d773643e236e28e92554251c31a191db7667 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Fri, 9 Aug 2024 14:18:08 +0000 Subject: [PATCH 525/634] Fix up methods and versions passed to MultiQC --- workflows/rnaseq/main.nf | 33 ++++++++++++++++++++++++++------- 1 file changed, 26 insertions(+), 7 deletions(-) diff --git a/workflows/rnaseq/main.nf b/workflows/rnaseq/main.nf index f357f8a02..e5e2de5ca 100755 --- a/workflows/rnaseq/main.nf +++ b/workflows/rnaseq/main.nf @@ -22,6 +22,7 @@ include { multiqcTsvFromList } from '../../subworkflows/nf-core/fast include { getStarPercentMapped } from '../../subworkflows/local/utils_nfcore_rnaseq_pipeline' include { biotypeInGtf } from '../../subworkflows/local/utils_nfcore_rnaseq_pipeline' include { getInferexperimentStrandedness } from '../../subworkflows/local/utils_nfcore_rnaseq_pipeline' +include { methodsDescriptionText } from '../../subworkflows/local/utils_nfcore_rnaseq_pipeline' /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -153,7 +154,7 @@ workflow RNASEQ { ) ch_multiqc_files = ch_multiqc_files.mix(FASTQ_QC_TRIM_FILTER_SETSTRANDEDNESS.out.multiqc_files) - ich_versions = ch_versions.mix(FASTQ_QC_TRIM_FILTER_SETSTRANDEDNESS.out.versions) + ch_versions = ch_versions.mix(FASTQ_QC_TRIM_FILTER_SETSTRANDEDNESS.out.versions) ch_strand_inferred_filtered_fastq = FASTQ_QC_TRIM_FILTER_SETSTRANDEDNESS.out.reads ch_trim_read_count = FASTQ_QC_TRIM_FILTER_SETSTRANDEDNESS.out.trim_read_count @@ -717,15 +718,33 @@ workflow RNASEQ { ch_multiqc_report = Channel.empty() if (!params.skip_multiqc) { + + // Load MultiQC configuration files ch_multiqc_config = Channel.fromPath("$projectDir/workflows/rnaseq/assets/multiqc/multiqc_config.yml", checkIfExists: true) ch_multiqc_custom_config = params.multiqc_config ? Channel.fromPath(params.multiqc_config) : Channel.empty() ch_multiqc_logo = params.multiqc_logo ? Channel.fromPath(params.multiqc_logo) : 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_files = ch_multiqc_files.mix(ch_collated_versions) - multiqc_custom_methods_description = params.multiqc_methods_description ? file(params.multiqc_methods_description) : file("$projectDir/workflows/rnaseq/assets/multiqc/methods_description_template.yml", checkIfExists: true) - ch_multiqc_files = ch_multiqc_files.mix(Channel.from(multiqc_custom_methods_description)) + + // Prepare the workflow summary + ch_workflow_summary = Channel.value( + paramsSummaryMultiqc( + paramsSummaryMap(workflow, parameters_schema: "nextflow_schema.json") + ) + ).collectFile(name: 'workflow_summary_mqc.yaml') + + // Prepare the methods section + ch_methods_description = Channel.value( + methodsDescriptionText( + params.multiqc_methods_description + ? file(params.multiqc_methods_description) + : file("$projectDir/workflows/rnaseq/assets/multiqc/methods_description_template.yml", checkIfExists: true) + ) + ).collectFile(name: 'methods_description_mqc.yaml') + + // Add summary, versions, and methods to the MultiQC input file list + ch_multiqc_files = ch_multiqc_files + .mix(ch_workflow_summary) + .mix(ch_collated_versions) + .mix(ch_methods_description) // Provide MultiQC with rename patterns to ensure it uses sample names // for single-techrep samples not processed by CAT_FASTQ, and trims out From be5825cd1faf54e1d892e7fecdaa334f13a77439 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Fri, 9 Aug 2024 14:18:52 +0000 Subject: [PATCH 526/634] Attempt a rational fixed ordering of sections --- .../rnaseq/assets/multiqc/multiqc_config.yml | 83 +++++++++++-------- 1 file changed, 50 insertions(+), 33 deletions(-) diff --git a/workflows/rnaseq/assets/multiqc/multiqc_config.yml b/workflows/rnaseq/assets/multiqc/multiqc_config.yml index 0cdc029db..eaaf1dca8 100644 --- a/workflows/rnaseq/assets/multiqc/multiqc_config.yml +++ b/workflows/rnaseq/assets/multiqc/multiqc_config.yml @@ -1,52 +1,69 @@ report_comment: > This report has been generated by the nf-core/rnaseq analysis pipeline. For information about how to interpret these results, please see the documentation. report_section_order: + # Important checks and failures sample-status: - order: 1104 + order: 5004 fail_trimmed_samples-module: - order: 1103 + order: 5003 fail_mapped_samples-module: - order: 1102 + order: 5002 fail_strand_check-module: - order: 1101 + order: 5001 + # Preprocessing and pre-alignment QC + fastqc_raw: + order: 4004 + cutadapt: + order: 4003 + fastp: + order: 4003 + fastqc_trimmed: + order: 4002 + # Alignment + star: + order: 3000 + hisat2: + order: 3000 + # Post-alignment QC + samtools: + order: 3000 + dupradar-module: + order: 3000 featurecounts_biotype: - order: 1100 + order: 3000 + picard: + order: 3000 + preseq: + order: 3000 + qualimap: + order: 3000 + rseqc: + order: 3000 + umitools: + order: 3000 + # Quantification + rsem: + order: 2000 + salmon: + order: 2000 + kallisto: + order: 2000 + # Post-quantification QC sample-relationships: - order: 1099 - dupradar-module: - order: 1089 + order: 1006 star_salmon_deseq2_pca: - order: 1098 + order: 1005 star_salmon_deseq2_clustering: - order: 1087 + order: 1004 salmon_deseq2_pca: - order: 1086 + order: 1003 salmon_deseq2_clustering: - order: 1085 - star_rsem_deseq2_pca: - order: 1084 - star_rsem_deseq2_clustering: - order: 1083 - picard: - order: 1082 - qualimap: - order: 1081 - rseqc: - order: 1070 - salmon: - order: 1079 - samtools: - order: 1078 - star: - order: 1077 - fastqc_raw: order: 1002 - cutadapt: - order: 1001 - fastp: + star_rsem_deseq2_pca: order: 1001 - fastqc_trimmed: + star_rsem_deseq2_clustering: order: 1000 + # Summaries "nf-core-rnaseq-methods-description-module": order: -1000 "software_versions-module": From f87b6454c1490cb7bd8e758d02521187be909a5c Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Fri, 9 Aug 2024 14:35:39 +0000 Subject: [PATCH 527/634] Temp fix pending suworkflow update --- .../nf-core/fastq_qc_trim_filter_setstrandedness/main.nf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/main.nf b/subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/main.nf index db73488f1..4c7b25f8e 100644 --- a/subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/main.nf +++ b/subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/main.nf @@ -72,7 +72,7 @@ def getSalmonInferredStrandedness(json_file, stranded_threshold = 0.8, unstrande // // Create MultiQC tsv custom content from a list of values // -public static String multiqcTsvFromList(tsv_data, header) { +def multiqcTsvFromList(tsv_data, header) { def tsv_string = "" if (tsv_data.size() > 0) { tsv_string += "${header.join('\t')}\n" From e5c02077a6c5a636efecdb23f2f28f8d4816d38c Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Fri, 9 Aug 2024 14:48:16 +0000 Subject: [PATCH 528/634] update subworkflow from nf-core --- modules.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules.json b/modules.json index 87e2d176c..f2cb6089f 100644 --- a/modules.json +++ b/modules.json @@ -324,7 +324,7 @@ }, "fastq_qc_trim_filter_setstrandedness": { "branch": "master", - "git_sha": "22c8d535286728605ccd229e5d1bb014cb965f8f", + "git_sha": "8c47be6a114b82a6e6d2f5320b3b5c67579956c0", "installed_by": ["subworkflows"] }, "fastq_subsample_fq_salmon": { From d8585775171a3e85ff62eb01da3a66b9951dff3c Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Fri, 9 Aug 2024 15:00:47 +0000 Subject: [PATCH 529/634] update changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index ffc3b4db4..8eb573cf8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -107,6 +107,7 @@ Thank you to everyone else that has contributed by reporting bugs, enhancements - [PR #1342](https://github.com/nf-core/rnaseq/pull/1342) - Factor out preprocessing - [PR #1345](https://github.com/nf-core/rnaseq/pull/1345) - Fix preprocessing call - [PR #1350](https://github.com/nf-core/rnaseq/pull/1350) - Reduce resource usage for sort process in bedtools/genomecov +- [PR #1352](https://github.com/nf-core/rnaseq/pull/1352) - Assorted fixes to MultiQC usage ### Parameters From 4abc514e63bc24f685c49275c0507aff1dca30cb Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Thu, 15 Aug 2024 17:07:22 +0100 Subject: [PATCH 530/634] correct conditional for salmon indexing in proprocessing workflow --- workflows/rnaseq/main.nf | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/workflows/rnaseq/main.nf b/workflows/rnaseq/main.nf index 7bf5d36e0..facd42e5f 100755 --- a/workflows/rnaseq/main.nf +++ b/workflows/rnaseq/main.nf @@ -126,6 +126,10 @@ workflow RNASEQ { // Run RNA-seq FASTQ preprocessing subworkflow // + // The subworkflow only has to do Salmon indexing if it discovers 'auto' + // samples, and if we haven't already made one elsewhere + salmon_index_available = params.salmon_index || (!params.skip_pseudo_alignment && params.pseudo_aligner == 'salmon') + FASTQ_QC_TRIM_FILTER_SETSTRANDEDNESS ( ch_fastq, ch_fasta, @@ -139,7 +143,7 @@ workflow RNASEQ { params.skip_fastqc || params.skip_qc, params.skip_trimming, params.skip_umi_extract, - !params.salmon_index && params.pseudo_aligner == 'salmon' && !params.skip_pseudo_alignment, + !salmon_index_available, !params.sortmerna_index && params.remove_ribo_rna, params.trimmer, params.min_trimmed_reads, From 0e6d601a123c71e678cedc6df9a20396b006a50d Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Thu, 15 Aug 2024 17:16:42 +0100 Subject: [PATCH 531/634] Update CHANGELOG.md --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index ffc3b4db4..c7b25a6d9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 Special thanks to the following for their contributions to the release: - [Adam Talbot](https://github.com/adamrtalbot) +- [David Carlson](https://github.com/davidecarlson) - [Edmund Miller](https://github.com/edmundmiller) - [Jonathan Manning](https://github.com/pinin4fjords) - [Laramie Lindsey](https://github.com/laramiellindsey) @@ -107,6 +108,7 @@ Thank you to everyone else that has contributed by reporting bugs, enhancements - [PR #1342](https://github.com/nf-core/rnaseq/pull/1342) - Factor out preprocessing - [PR #1345](https://github.com/nf-core/rnaseq/pull/1345) - Fix preprocessing call - [PR #1350](https://github.com/nf-core/rnaseq/pull/1350) - Reduce resource usage for sort process in bedtools/genomecov +- [PR #1353](https://github.com/nf-core/rnaseq/pull/1353) - Correct conditional for salmon indexing in preprocessing workflow ### Parameters From f77e71420a86c062e1d79a314dad576f433c8b7e Mon Sep 17 00:00:00 2001 From: maxulysse Date: Fri, 16 Aug 2024 11:04:01 +0200 Subject: [PATCH 532/634] proper sha for module bedtools/genomecov --- modules.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules.json b/modules.json index dbf8e49c3..744d874be 100644 --- a/modules.json +++ b/modules.json @@ -12,7 +12,7 @@ }, "bedtools/genomecov": { "branch": "master", - "git_sha": "1ceaa8ba4d0fd886dbca0e545815d905b7407de7", + "git_sha": "9ba6b02bbcb322ff4265cc51fca0ee5d8420b929", "installed_by": ["modules"] }, "cat/fastq": { From 200d4bdcdd0881cc852a9e715a1b4ba1bb54dbcf Mon Sep 17 00:00:00 2001 From: maxulysse Date: Fri, 16 Aug 2024 13:50:46 +0200 Subject: [PATCH 533/634] update samtools/stats module + rm tags --- modules.json | 2 +- modules/nf-core/samtools/stats/tests/main.nf.test | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/modules.json b/modules.json index 744d874be..966788e83 100644 --- a/modules.json +++ b/modules.json @@ -197,7 +197,7 @@ }, "samtools/stats": { "branch": "master", - "git_sha": "46eca555142d6e597729fcb682adcc791796f514", + "git_sha": "1fe379cf6e6c1e6fa5e32bcbeefea0f1e874dac6", "installed_by": ["bam_stats_samtools"] }, "sortmerna": { diff --git a/modules/nf-core/samtools/stats/tests/main.nf.test b/modules/nf-core/samtools/stats/tests/main.nf.test index f4dc5bbf0..6416ae127 100644 --- a/modules/nf-core/samtools/stats/tests/main.nf.test +++ b/modules/nf-core/samtools/stats/tests/main.nf.test @@ -39,7 +39,7 @@ nextflow_process { ]) input[1] = Channel.of([ [ id:'genome' ], // meta map - file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/genome.fasta', checkIfExists: true) ]) """ } @@ -92,7 +92,7 @@ nextflow_process { ]) input[1] = Channel.of([ [ id:'genome' ], // meta map - file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/genome.fasta', checkIfExists: true) ]) """ } From cdbfcda67d809809268a8baf4eb98361fe1b3366 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Mon, 19 Aug 2024 17:20:30 +0100 Subject: [PATCH 534/634] Update multiqc for prefix usage --- modules.json | 2 +- modules/nf-core/multiqc/main.nf | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/modules.json b/modules.json index f2cb6089f..fb80ac3a7 100644 --- a/modules.json +++ b/modules.json @@ -92,7 +92,7 @@ }, "multiqc": { "branch": "master", - "git_sha": "b80f5fd12ff7c43938f424dd76392a2704fa2396", + "git_sha": "a9d770c76d4d8c1e570c897c22ac3b8497a1e5b7", "installed_by": ["modules"] }, "picard/markduplicates": { diff --git a/modules/nf-core/multiqc/main.nf b/modules/nf-core/multiqc/main.nf index 459dfea5b..5dfc75102 100644 --- a/modules/nf-core/multiqc/main.nf +++ b/modules/nf-core/multiqc/main.nf @@ -25,6 +25,7 @@ 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}"'/ : '' @@ -35,6 +36,7 @@ process MULTIQC { --force \\ $args \\ $config \\ + $prefix \\ $extra_config \\ $logo \\ $replace \\ From 23717f3ecc842844a476f260395798a29b39593a Mon Sep 17 00:00:00 2001 From: maxulysse Date: Mon, 19 Aug 2024 18:59:49 +0200 Subject: [PATCH 535/634] tiny updates on subway map --- docs/images/nf-core-rnaseq_metro_map_grey.png | Bin 301297 -> 295653 bytes docs/images/nf-core-rnaseq_metro_map_grey.svg | 6118 +++++++++++------ 2 files changed, 4130 insertions(+), 1988 deletions(-) diff --git a/docs/images/nf-core-rnaseq_metro_map_grey.png b/docs/images/nf-core-rnaseq_metro_map_grey.png index 6a1754acd718da42ccef0407c1a28a437b900ce9..a9509822ed082620bb0e1c836ac2382b74e57542 100644 GIT binary patch literal 295653 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

    U%2+5(NqqFPB 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 z zA*hh*{{Pte4tTEn{p}w@NrMO_m62814M`fxi0tf?Y$~KeWTZkxMn(x` -kdcv{ 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

    7ZLc^sC5WYiDNwl-YOs(KOo; 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 o}bdX*QU=4Y@DM*$)K2I(^= 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

    fyZ8`RiL#c)`uc^T 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 literal 295653 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

    U%2+5(NqqFPB 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 z zA*hh*{{Pte4tTEn{p}w@NrMO_m62814M`fxi0tf?Y$~KeWTZkxMn(x` -kdcv{ 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 only)4. Post-processingGTFFASTA4. Post-processingFASTQGTFFASTAFASTQcatfastqcatfastqTrimGalore!TrimGalore!SortMeRNASortMeRNAFastQCFastQCinferstrandedness(fq, Salmon)inferstrandedness(fq, Salmon)BBSplitBBSplitUMI-toolsextractUMI-toolsextractFastQCFastQCFastPFastP11 + style="fill:#ffffff;stroke:#000000;stroke-width:2.64583;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;paint-order:stroke markers fill" />QualimaprnaseqDESeq2(PCA only) From 49fb5a8ea26670029c0d32fdf97e09c353b4ec70 Mon Sep 17 00:00:00 2001 From: maxulysse Date: Mon, 19 Aug 2024 19:04:39 +0200 Subject: [PATCH 537/634] tiny fixes --- docs/images/nf-core-rnaseq_metro_map_grey.png | Bin 294991 -> 291676 bytes docs/images/nf-core-rnaseq_metro_map_grey.svg | 375 +++++++++--------- 2 files changed, 186 insertions(+), 189 deletions(-) diff --git a/docs/images/nf-core-rnaseq_metro_map_grey.png b/docs/images/nf-core-rnaseq_metro_map_grey.png index 7d7645894957d4278a2a266240dd4fdcbebbb2af..d2c0403152816497c4faa954cc4ffa72b29cc75d 100644 GIT binary patch literal 291676 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ÔKWzQCK2eTE$)2{JJ^1!T4u1Tb#@RLIg-&#I>4s@orq4 z@OYN@Fyd^4{@S7RAlQoUi}w?_qyWrC;mX1gA@RSiM(~E$RD_dw)4#@BN5lG6Wjsu8u2EK*3r-rL^Dtj=vfbWwt6p_jy8CX!@Shk^8lLaXX zZj=qLGRGYWDtY`IG1Ezh&9Q+>u0v1?dx;G9f4RNIv@M zT=tR)?3npm;v~kS2fLNOxZH8%diS@H6Hfjlu}4yp0n>S@r(Z6t*(kqh)1l~X@iJm` zT)Hmp6NWm>ETRwo+!kQF{j~=Lmd6=$TD|gfZ;xbL=O{~X2#Zm+E4fh+edOn_o#)q| z6W!%;<-PUer}S&>_f?ONtMcE`J`&nRN8!5r&LCK)2t!Zlu2av(w_XbBUE<->U#pXz6xA-}4*Z!=t*YCm; zBk@%k8X6jGU5EZ%xTp{{W5nPQ(ZR>X#q}RPBw)Q#w(vG~1UVD~%n4TOM)|hJZ|%=_ zKP1X;-!`I;2B;M33JOY-q2kF1D#P<6BX!Q?sZdg9Sr!CrFt!E*bDF}tabEgswr3J; z?Vmq?z@z;=KIw+bhDzqb9dxm)WGvR8Xv9Df7z_t-lm}`z*!Cb4H`Nu&Xz&1cV00hP zp17~FS4G73BXKpVFlOUBA*EG7yMcPgk5{7rNI22u2IHJW7^(`OY_>W+??;Jr?QZMk z#Z^|1A5%hyx33BqQ{d@6F8SHONMR3`MU}V%Hv{U44pc4$&-h1-xyqL^fpm%d^-fAk z8oZ?T@doq?;>vsI^3OfJ@JU(mh#D{f3!DHXSOqB(&fsR99$|S~;4m>XG-OB(L8pd$ z)K7I@58WfmaIt33&Iv0E3#BLa?*p1LQ!r!P>b|_0NrXXdKSryZ1T)Aecj~luCcMQT zKPrn94*ux47Liik8uR0#CIWC+EjYYM(vH{durPzgyY>^fM>N0(2QPEr5B|guODBjI zP();FXM`{Z)z0)+w}$+1720!0pD#jg@7tHd7X!RaB#UkYSpF<^{QFnX!gSr~-fJ1h z#=5@u2l+(^M8}k|q$m0>+WhgcHl|7Jf6MTIzx76myjUWS?51h%gY&W1x^?L}PWEie z@blZCJNk3wyVHr1#@r*tN8N9U_U?LeboVXMH`Nd2ABr6x>#p3daDL)#s=MoJjUkyz z<>`|u3ZHgvfR=j0kUaukQ0swEM@_GAa<@?4hq&{|wlOt6|LNnezX9?)RQB3GPL~jE zP>~*AXFhH`2aKOD?7jRXZ0F+|BVT{~SZBMc1gowINMt?#ac5^~Bwu_+HCD$yi<5X@ zX|A7Cb-rg6C54275ZhCPE z?btLVnL%CdOqw_M+gl#4mnD{hxJ>91QB?5VPfyafnh`^bLX;FJM3fyJC2{<+2|oq= z)Ln9(6NQUsjx>7JeU6_gDem-ndbxMIGZ#*LLlcnRlnFcsuZtuoPrdno*t&u4sfYVy zh3~&69!5aeDi>UVvXaRqO;45|&eZ_WMA;l0JH&byro)1 zx23%vF+}y#MJG({C(;rgA#&$LLD-KcVviSx_R#T zFvliO-Nofq*Uj}dB*xp*GTeEa;Xv~^Px!+Z*Hj1ZTcwjf0#{a^iKuy&F8O#a9!NA6 zYteXM&=RMAQTIiW6I=W{*XPF>&!HNln^yA)25J%qvO&R3Rxd|)0PwG`fQRNp_cUMI zk+s)eSXA(j{xFc__}f$DGeq5ah%81Iyd8Gt%|`2+0?M%?;5l9J&-X9y*F(5K3gs<+D9Gvc=F$xxDX{QEZ^oi89) zGH$NDb9`gTW1{88*9Y2ZZxWrA;;IK<@rK^Ri<*pjAZo3Z%n%GvayEU78a(fj(P5V_^PYE zseUmyLoF#rB>wjm$As5ko2b8^@eeM0f-*uqTCn6spb4Er;<+Wu-tBu&Hnfy3mYHqTe+_9}ZHes{ng|jzrMa$m) zt*`4?m|@{=Y+rFeE6?K8P17$mJi*G-gW-G$HlG38-Q2R9u`ONPW1Hx2n^c^_L~rE_ zm?KR)o1{*_LX3yB0ftzVa!bdN>uocGUb_RL2sE8QMH0Jz1Lu!T-tp(-J+E0k200Pmv2jqjpqBats~E9LC# zM`gEq;Mos(-Jf2rfyV%TlYNfN0wwBQ=S?6h=NWfKF@g0e7H=a{1OxqS$~03theOIltJfyz3?SJ@jwX>W!T-I|?zEJNgeO zVh{4NK`4SxmLO=~hmd35i()buJsRYIvRa^X@3~GUL{{jEup#=JAZVb_xuGUdu@}v2 z$^}pYea@Y`cVFPTA}DnnqUCVn0r3LBu>p%tFu=JX^@9ZdHOIQs@axA>nPCs@@w#;i11a&0Wh{oCJmb$aV#+Q*8>A9EHV#tRN<$No@y6D*C zWUJX+I`m>EO)xp&U#&7_-3=|g;1hv7P8K-n045(ppci^f3-nqR z3o}fa2d^&1ZiAi2$P9&};QmHiCs-2z#vr~r2s9IUA9GyA{^fv|t?|0x;fcZiBJDqP zG!0dF+F@NZL7VVuGa{!Q4%(+_<|a@v4 zMnj=|!lUhYO_TrtfA$fiy#qv8gTq1Etn!~Pb4UAVhW6?k$Z%#M(;XZSQd-ihem}bi z91oxGfpYfIV#si&uzw3dVo?ae3{rv2y{H=eV(G(hcM&BTHeW$WiGJyueFqM#vAK0;Bd%W5;FMd(!a5rc z$3SJlTMztNRNu$Gg4-4r`r%DiUHnt@&^ zXn06>psWgK5JmT)q1FJ!=%*JT5D6|_FbCj%n7~$kMf7v0F$YAtPzu+gsn*PWk4+N+ z-8}^8BD9R`?Cc~fwbiRCMQtbR)~$J6*4aW}O9ZrMdwY7OehwUtSZ)G%_bwY?#9%C9 zc!_ZR*|TS=3%T;k)}P15)bQ<45F%jpI${7d;U~b*f(Gw*;P)+(+ig;z;NTO#_d~fF zfGb2J3Ph`!r@srIpX^Bh(g7^Yi|-FYvuzF_gGBxjpTe$-eR9n)J6i!Uy?pcLEJnfX z*qAw5@(N*QFI!t1LHR=nRABnl1V>5(t`9ZPX-Kq8MPp@XWF&I+@RMrehSUWv@DMlb z-{%nWm-k}@cml`H!h(WS)b%IDboksilH(p%2V+dS&lXaGr=Hl8!CQWp;PL-jsa+d{ z3+Fj4%*|^6D8$LROM{8gRgR2{k5@3Dy@$FCUX;3cPMHW#%w(v4`?j!thy+QZC*S3> z?A4%{3=tppg$*h~i+hMr!F5MM7@>PnK679aCu;pZ93;?Y{sgTH_`DI98rx8bZM%}# zUi)_pDC$9ssr*WYfV;1+4^{`IZ(X3EAzf>F{hE~~9WiD|yf>LN@1J2}1_=tRsTE`^ z^v8J0kyw1dc-UmW{fp*hZSlK$Y(8s!7v~na>XvUnZk6L(@Vz)TcKZ&?t4>@XnXiQK z3=3;zdDZF79S=biT5m``NXXaJ2^}NhM0PPlMSXpCSlH-z1O<-{q)dz19f9ENIOO%} zT&GMhfFnX__s*RsrDVSi4@35RAgPy4MKp;jgmv`SMAyl0PazQD-6Il$;|VxDJ-$l4 z8@V-)FXq0tSNJ=+9cjp^%%dDCWzIuLjYz>1FhJ)d{0s-}n(uoNQmT~p7mgJ=9DM+< zDb_h8^KlATRqzn1T4KAyq5c92)Oj2stkyUI)%TeztN{j3(8u)e&+rMd_os|1tjE(9 zJa8ZZ1K}8XpXr-ho;l-(4xB`tq9cEuB+nVGzJp8s2^z*sP03oEHL{pP1<)Ip7N1V_ zSf@2EWN5F*6^9-g$3sr{*^3uj0Rmt=_1{bPJh8aqF#WEt*zoTIWcI7dt`hp2Xq5VH z^~v@B(E=Fa6;ZWJc0xB)hpVfprNtWSJ*1FaD_p8(GQG=ggv@dtVg%Zz8>CM1MImfD zCjLF*F7g(o&c5D+Vqo>UbppG0>oFK!U7oiAUiouwjy`JLF68EUVZ2K4BB^rBI~^m7v$&g@oS%6voyN+_eJs#&`)lB;(?0tY37y zLhUo(zkDHCxB5`V#`7uv5~yNWj63sctS0(3J3@|HvagL5FKNW<@u)sCKV zV9@a%xeCDZ9LHNB8eiyQJaIAHjg0+Y_uQjR53CJq`{R+=21e@;l2@_L(TL5*O&|Ht z+spXj7XncU%ZGo1CQDoSmb^Il3sBZhP;z6o0HNfDhgC+bUbnW6;LreY_!$oI+}zwg zs%pehg34`z8Q|s1)oyNcN;G!(_Q*BGeYAa5@$A}bz@#^B-Kv2IFL>DyS6B3oUey(k z4aqZi!owATu;NBz(ej7o4^+gjK<}sjIxT$Yv0Idn9;Mk5aY$?O6388nvxB*mP*RuwNUYjlf}nzCTNKD+?DFc`_8>a9){igK4O- zz5>p}2aAM47Wfqwcx_{2mMX8u>C=g^%($-f_n9ZjUOK{13HjLVCr?~czaX|T@C&`I zc0GUxp-wVEcwdw6i`pZ5*|I^tV*DLGM8OnNeP6t|9vd6GvBDQMBorUV6%{G?h8Af* zpwXd`kr2Z|N%NYY#s*W*AoVKn^Gnc`i|9U3#QK9sO()guJh&5p{$vqD{|sjaiU`~8 z$Gl`Re9%4|5xBTEZQ1e`4ROIT(0#r@lI>1*RQFwsL%|!C#V88wk95?}K&ZF*;(qwi z_iT;r>HW>Xe@2bU%gThgB5{}o+Gc#-;|rPaI<9?+y1J|&MRYN?(5=t?DDR7q;NUY* zRewZ484f%YIoX=2)R6SN6Ah_=7!H>$Kt?htja**XtVaMMK|x9_^GKbp!4kSO!nE*X z#sG97DEY?P@83{jh>3|g3hX>(wF4ZHtRJxUh?tUs{$DSB%7Yy_gRSs#k;0iwlLODH z9xc)i!Pmf^oMZ4ep@42(E%@bkHDsumJplmBBMX+*w{bg zlpH(-Sjd}~_dR};Xow*d!s0*yj=bgjI1&aoza_!Ir0PW7g{m7hS_WEnzE4qiLHexj zVuo8*WkntX0a2oboLhKvV3OokDs~JLnQmO16Qqdg?p`aKvnQ(_rN?a@FH3UBFf4%=xP6K1ls>PN4j(Yzw7U9AOih9JY z3(BeKzhDEgL68JdELF}ACmzgfZ#eF!0{Tge3{9~<&9X(1!9njRvn1Qzl%Ej&vbJ*ALr_nm$MS?1)DZ+CYmr@ zC$9l)5n(#=q;QY|ws>A0*z)+__mafLs(Aru5%~eqVe6sQMMIK>vKX}sHwQJ%v_Kx;vJS`ynLDqQ5xM+o-Z$RaP;cuEPLlNe zie+31WKbEt4hotFIO+g#reYt0*o<1VGNp#_is-g*C)|NsS3RQ+!&D%8eOq$g_~xx4 z*6Uwqzkp)?3s!83u1ZDLB1~5C(2-?9(5 z8-+~jcWBg^IQKkM?zc2I*HpCvn%D{qAD2R>=S_sA;pk_^|H!SfKwukClVmsCW=(@zP#nTcDeZG3o(3hmtY|DK~s`cvu6F zq$=j=SF`gaK&;M3w}*n04_n+9&vfbqX2#aX1GGVC8j1}YoDsNZI4RICfc75i%I`n- zMY$L<6Lhh&7ZRi_U+9E7@ZT|j5;N0hWjU}DP>1FD^BNiI(Y9dUF`)*jDd|npn0#{^ zImtK}m8^6MEL2E9K3o?le|>oC5 zRwNP@TzOC=XB$7204yN>ekB`kZ<^mUY%kaU`xfzlmd}7qp2Dmi++RC8f%WaW{LK)* zOaI}ObWAx0V1mc5$zKH71n^kY-Yy+8X zG7n;$$o^3)5laTJX!nNQ(X9O2xBCN^sSdxS4L1>}Xs8h(ZZ-HSF9ro`5^8yl3U6@v zWGUivkU3cmB|rrTm#ymf8=7)-7PT-#6I>DO;qXYZkHmWqGBhZ#*$cH9%FP|v-8if7 zKs3Paz6e(YE|qoA35Lw#q9ITox@y&kTUaOA|NPJY?8kqv^qsyW=LiE5i2w`ACn9uA ziTjp_UxU>nG2M+;0^@K@(k207u_ov0X4j!bVm+}6E)yx_hCzcf5o|p)JnW3UiklHj zy5aTfhsv%{ne%MlP6G|qM%h>|l!?E_--k+DHw$%=`RSMf8i($m+7VbjIuR&2MYQDk zciuob#1|~5brGClQ2s5W zJdEMEjy`v~{U|p{awzD>x^sv8rG6R!#jm>%d?+KxCZI_G@@rgKN)}u%bBV^E7^K81 z%F0N01(1S_VL(w!Au9lSL{|67N--CmcAPN^Pn(YHKdWj=Pb?1LxNxlv<2*#Cehu0s z3JT61q@l{mZv zS{sKAKzx7i?V-~%QMHQ1e}iSkI?;D^;XG_|*MO_Q4`T&QALz$S-G78NCzbHVp4)7+np&55=M|JDMz2VR)99r7IqCKmRw zh;^d!^7l}!0_}VOJ5s&J_pcY#+CFuGr@S5Z?Cfafq_m`@IleXDZVkLaa9rYeOcbI% z<0VFKK0(2wT<0t;x0hfqP2-pHjuoFVjM*^I{^Zf<5C4zz635iMU651eqQxs7~V(2mrz2!0!t~ePDj> z+%e4RA%kK~Z)Bm{<&C0&YV!qz6)0^Ug%{NS z4Z|_Zdx=m78;Rc5lmW>y5+x1w^&nL;u8g5;*b6okGlgi{T$+&9YifVb6+N>K)0-Xq z{88P~hUEIrzl%E;-~p8{Pzzv`9h`oj5Hm$4Z4qOgu)!lPNO@Ukc9W_Cq}0y*!F(#5 zXXL&_v^t0v&1_v{TC^eW8LsAIcwqp%wF zvNZ&2Wb{~?2klqo-7mYcsozWz#01A8dF<3Q#XwR3FCvpBa6h%KQng~M!eVV zl6psF4_1*51G9@AT6aYK{X;U>o#F?=29)A03>`SIlzM~P=k3{z+Y+1-RgzGBgFftwY>P|**qy0^bJ5Rc;& zz_;;`g>r0!cbH!uRE6sShz*}FVWKRwKfQT#8_zS?5|2>>)MEWKehZs~3??>OBb*y3 zPSmeozm#UBF(nAL8$7r(7cZKr+vIK#MKdw_sS`rkh*c+Ia6~}UvsMx6c(~)PjYf7s z9*m!s0x{^cO+rF~j3S3kAygWs7E)S~3<~=vA-!(b!X z__*8TMu=0P^qAUmAL%zktWBIkO3ZSHaQu3_!rUTKJ$XDOgJV%*y-7Z3W}AQu8MA2y zK;;?Gp1ZftNvXgLh3Ojcb3W^f7bZd+uz~~?5@KT|t(#e&xkk0!`YivGIMMxR;oIoMM>TRG&2EPw2t<#v z)YP|u0WFJHKX8^#EhNXq%`1)nDW66;hkcpr*5(2Tk*pfLUU}iBxyKd$$+N(pqp6UF;pS1>3^aleVGX}Ac*5!8#F6u;8wg+@bk!KuI8<-6GIIgHH+>TNz@Y*cBN*{@ zDZ$k5w(b-E@oCz1yR`Il@LWDR7)*{CM8~7|a0UAP%?B1i{87$Tw6sAJ55nN3 z!axkQIE*w6=5P@fdQ7FULZaru+nbiAsxJ4jCeFNFD}ym+Bw2E?bLYQ^GcbvUX|gw< zu_=dP{A*<|ARklmz(81ikZ8~??dx;>0g38EDte2h#emyR`#}M>j*kc+R=*^ zL&$#GYu%bP&w-erdO~ShFO~n-bhos$w%mcYR0QW)-UhxVD_pa#wKcz(oIDkJO5!wi}LdBA=I@+54C@o4TUd4gg&A+$&KiRE zg}AVOX<(uwjQcdWdSQV+QA#Er-NYp)g|o|M`H{g(fC&vnsS}k~U<#MI(haB2nAJo-Ww7&qz7;CU;Htn{LVs^u*ENzfTP>ev- zNiD=*3`fCcq%(DO8T{_R6zY`uJn`%Y`h3D6*M4j%KS9$<;x^$5vcW=N z99W|W?-22DplBgl=mF}O_;_`A%M7>eafr2e-3(&`u&q#@N95a0p9B|tY2~oqP0cSMCc)>NrI!Yvi{N)?g+ULo{~{8AtfaxYhyTRozM5mfU_Y= zyA-tq)WK#E(a}4&j?KyjfX;l2VgubkFkBI6XRwfpFfgk<<`hP)6!0aWqR_0kd>*si zn?Ri68$c9W2{VdN;(dM}!rjkL`mE#{W{K9zNK2C>cGOQCZL~KDI|Fym49;|E^BT%P zWqKIe4N+>p#+#cD!&_47Hn|P5W9CQ6Q0u~qdX)ACELg$P5L>TV?E#Jj#$#5ySFUr_ z-U}ssn~p5+#16@4f$f$8{GPbYQGo{J%#aGEZi~se!Yp1u#;E9nhIkKOC$ruLbjkD} z3?GCHv(3{BRWt+ua7R+3DhFxX;7djGYj_`OgCU@%r=NL5qoINyC|f^o3y%Db1b^8b zI|AXDzJ;>(PC`N`Iw61_BY98z-Xs1UGI08-a7; zjLxZ_a@=sJpviqvBdzXh2$p+mjMfGagZ7S3ZN4D?P+OY0j!kJN`PIpP`K~~ijfWkAp|g>19XLr zAOjjcj7|t$fClI&!gPh5x81mLgSb(_v7|g6>u4lW&k@Y#0z8o(_+BY!$z|a?F75l2mDo~F*ES{4U|LR0(=&y$fuHn z&IE@5@fAIb;7AEJB_q{rcR`ScQxnldML{2-XW(d!xQoMw$OCbtIbFV-2||c3@7nLO zQYei8`|&CDyn7dgjRv>Q_=O!F`j~<^_?>TG#B2RkOG_)4D@_!Jx$9)RgfB zYim7QPni*Xi*Jp)K;4kUKa$A?^<#|Kwd#JS_ z#tUnAy?M?12@Hbt3W4PBCb zO|JPMMxcGN?$hb2_wVcHlClT;og&lz8kHpgR6l4K&-d414Aq;PE$wR)zmsWac2DM6`JlTK{w!zbtCQ&}=(mUY+ zQ2=nZBiPU25fE^i07>BZcaF0*HlY*o;B>LpAZAU6(v8p6&hCtjjo>O< zQIUj7+b&U8LlkMqyov_x>Gybb-}iC+kN@v?9N*)6-`9N=pU?aK8t3_3r)#*>%I^z0 zuUfT=zCnKfuwlO+o%o*?V6ng?m-59!y;As2v@|<%a&k8A(~k{mplSykoNl+;#pRgG zSatPngpYfFXt25Qol8|^-qt?h|A3C(1MMtqMIPziDeQ6BwzntRzcBlBX7CV$IK=a` zUZvxMs;DOTXzFht(|<%CxOIZVHuU2%d^3ORg$t+;^_MPwaZ@++5Caz+Jgs zAl9m}JHGehJYb%#VSc?XsfL8!y?%2xaO%e_x@M3K=$a%jg<~&Zf~InuQe_Wo`DU@G z8}S{*fT_IefkM1{N$bFAMz=>% z?_aa?IWVDsyMjHjPtw}YnE34~*K$H(DzpbT+#KuWB669)Awu^Obgprej3C_6v|l>h ztT&_l3{LeSosHN`QA0ep$mZ9Hd;R&Q#(o*A(GKCHIv@7WH=g_oVoSKmy7xGd)AoBj zHNRfz-&J{eCTF9saYbQm6%A_Y58)CuaM|vX+pGHEnrtyh}8B z1^-pB42U#$=x^r`yThvfRu?(raO||o;$q9chJuisqO?VD>fiADG{c%RidNEaTgMI$ zK&<)i8DdkkIlUDQ1yN;n?$Ga9@rk2H)&6Me28EuNe$P&;$KNy5@iXcgksk!iuh`w5 z|L-h5?!2pNv^APot*M*XYu`{+sZ{xBcMxho_O2Mfcr>KTJa}G!kkAFkC?}8g1Ku&A z-V-Il(G|mk};}V*tcQ=`-`+2C&feI6amHKL*mFyJzW>w60 zd3@?r@J)qLg+XdPlueX%?N#jbgVm2B&Fc3`P5RE4qSVdVo0kRcb&2>ef90bC^BbRz zzu0{4-nlO^p=wf+o;`aCsRp+y{d&x%Rj*#ZuHhd2m-tPIm%QWWO_vz}1;yBf)69P5 zWtavXeSMiD_ZpuD3MV!1F7fbW2m+CkBeH|T8=q4Ih>`N@gCgA^qc1Ve+`8bPX~NHo zPVaY(&mVAm>$~6cH*Q_!5P0JJ-8*+QANW$43&Sq9H&lm#{4lHX)%!*88YP>Q1m#XH zo3S{PD@yp94d2|O#wnl?4(`c4AZ$Rau3JA30oV$Qg4;Nvd#GQ9W_H${`#H5wH|o> z9+_Z9DRknbTFrEox&kl<_$q>^BrZi?#6hy)^&>ROzKcl`Eb3a{vQdP|aOMQo)VL`3 z>{)Q{UNs!8tfq%C^oK@dPMQ6hXrk5PP$ zI=2=s$M9SzLly=4-la}}aTUY-E7CGEGu!Pe()fIrTgp;RWTS{NrQDA_hb_+5toru- zdp_DG$`&)8By)$vOm0cd@<}%b-c_xoUQ6=)tN*?Z0mjDL#u2Nb{^4+MMpDyCc2!YP z0m9v1dr8Jv{T7*SA@sm6!DZ_D#M5#r?f{q0zj<@2p4NnQi~N4P8N=b;*}vkmV2VU1 zdaf=Cz=Km$H~O-eL?jN*ufCHqHZ}2a&3J(Z(DVX{mKaH|XWi9Z4GNMyc?3La7_{QS z5gX^u;g6HO#{Yrpi!50ozmmx(T5yy_gI=c{rU^4OJ2aeb-O~L0`c>OX`OPGMk<`g$aipzJYJ~v*~K}BgCFU>=+PYD zYn)X*-ClLjWt)YRh5>u`cJ0JiS|&kJCn)#m5%KHXkJ9LG{rXCe8a3+uH{Vmq$tE}e z+}+)0IyeyfrHY5ts$I5Ld+XgDCzEC-Le;pIU(Glttu z91QB2QiU}>dYRuE!w(%AGHP!*A`$w~4nUmtO;mHW^yfxfe;NsBXVY(F7EiDEbOsgv z3Q{pPz^2)AS*K2&#C+;yIVB|}!l=)<*^Uy;)AADA7jr308@$qstSYyRFW&0ou5QRP zThV3t0g0TOk4NnC=@Lv2u7@%Qi|6V)V63-Wv|>T?@`obEnaR);aO}eZx*(CbC#mUr z9||O79WGTx?f|!WmX;w7N7DHoRJH0|#r&BX95ej)~08&wYVTycIy_qc4own?a{XUGhtBGw9hg1QYdC9wO%fxGyxQTz9s z+1V)~1B}n>fH4Eh&-IcwmFa$ik?_;v7Y^sgnzEXTZ_~9Mbm;zxeqS}fhJ9w#FPLNM zC7hPqIAmKI>B95fIB&^aXKuT(k6q|mgx1ioAKo1pnq%kBD~E=L0)}bY<@>e$8lye$ z14kH%+S+YbLqj{A{Cv(>Etg%ma(!mXOYTwi7Zg{)B>&Q?$r3M*emA*A?E#>tn4DYM zAiidnyuADkeoE8RyCAg*$Bwllc16tTYn*%)L8SJX8t&<_?fPQrx%(Yx_Xdbm)6Z(0r11 zM=%sCcJ18Rp|Q{BmX?=){l#H(chh0?6bj3_v18IV{dlXfNYnlI>B;4>CKnojTI#+{ z5b?-yhCB4vZP;-3)9;FVZEPcvrta3pxhY_~;OnaNd9wdVRddP|l6l*5pZNfL-)tse zL?A=2ICQ%Q*wA$uU}&kiG?_qd?UHi#S4U5*{YR6N<@k!p)XIQ?~C|#R{Fl zg9}*FiNA;H>kD)DtxbBmx&Z(hm$!21h-YDFY`199UfiA2ae)t@vy5o z`FE$jdhe&-!g~=V@fVaDug5I^05L)~s2! zi+6I&=|p|cbu(NVrmy`x4A+M$@NP^e{peW{Cq@tdoa46E-_3ZwP5TsNGV!g)xl9B? z-c&xdWWSl=rCBjE=X)S@z02$6)ZRUP&MaPQD z+_>L{oBMxQXzxa3v=oB{#eijQXEBm~>?2^_b&sN-#_Vy6X<@mpI}tajcm0tWWVpjH z&Rp?6hKZMAZV@P@7>c5Id@YA0DV);{_qD6u9T2^L|8c?}MC>ou?zEeIdj-g=EmRLp z$Xpq<c+!`8?@1|5QQR#Mh0DoSYr*?mYAs zjep#!^h5FSFhko=Oe*Q3udy{;CBvyZazTsr{W!$MRMn^vOHNr!wb32b z@HcNUHIPv(w|qaVbvejCYm6V?mn9vamqv0ipP-xg2PN0$bsLHHEL{O6F##;{eRZC+ zQYCyPIr24^L!oUW9VIYPO4h1pw~=ePWi`0S^|OfFIha2j6ARdX)r11 z*NEjWUW-2%e*0y?P7-1F!3V*thTmD%Evqbs%RSO08VnG=0Hw9yoTi#e0uXm|;+=ysI4T>iOO>QE)BWzzy(uYry@QkWwm}O@yB+lgas7&g zuI2Zy&D@|O2Elw|5_bmU?XPY5(Sv&*b+#b14c6lF2oDRB7<+1-J03OX%)IvD7KI`0 z_P2M?lU7*Pb7O0r9AOBgLronQ0(i6Yj*csmMNFF-JTJbh+gA54T}4gc(Ltj|(CGkg z25`5TcTftKN;Q@&$vIc?t{L^_KwVuq&f5BlfapqFnm92h1f0>bk8^dK#$iO}Asuhs zzpsE1blb&?V*qGoc+Ma6PnIS%0kaSIzYA6`hwP#Z4SScAltdz?PBw-%5;*$P0!D?V zrpWVGMY6vn_tB#s6Z-G_&_;r3LdlyWWF-@c0&Z1JZB5jp`faAZELyQ5;C0wv3o=H0 zO?RF)=yBtO8L`8q0NB5NZPDPDw!80&#Y))OY(Kv~ ze}1IP`1BiR{43gSL>ZiIE^sT2RQ5SH;(qag7~x}LUzj}sH@hcSk?6a*EKxbit-;dC zefG-EkzVg9twxpXcG!P3|7Ose@mt7ECI4~W3U?{XlyQrSe=L|jeV0alm{!y=-yaZt z&_n}reztbjo+}Iu<)Nyx936+#?u#0Xd}g(BDT!BBrhsx*eEzk-&Mp8#gG0k=)~zKv zLxyNQHvBPhV3QNEtYcM%Rov@z!c-uf?RO#HA;WncLy_aa(M35Qsg1IMur5}3N zy!;738zTpzKR8dTV~Tv(JD#k1Q~H;Iw<}MdI5E}GqD%h?y*R}+ZpZdipMTx};N8WM zAYH|bsqS|j2i52Bey2?!f8XNC&BT-rmxkSgkSd-q=(C!!kNQCxTjWME;2?Qa`}ftXHgV`FInC#wTw`{HvAxI_BCS5XKoU+g zyjXhJVvLtBUmpEq)2G)eitB-%x&mQnHy#Ihal8KAyw5Od0udq1!OFxWj`sU~7EW$% zi~aS&@$&#bxr(BHqJB#X_xdeWFgG!g0;dSOz3?vV%+8+F==-SQ zaCmtPk2Uh0^;mt$SNMWk?>OM%+%Lv{(EB#w+kwVtPL1DZggxD;u9wL=khdg0^Ut&KF>2!yUBM4Luo3w+6c(N?LZqqYBcXM^SLsp{*E{|M!krOoi z;zjK*;TVpz-xqRVqTr1GtKNDu%}NN2*V^w{pXdOjs7h3e-U5OPUy^L)WN}98p#P2! zn9ijHH+S9S^P9RlNB5b1<}05`O||y4MPF>&@R>{6WZ}Z=rOd)^myyxidE}3;73o{% zWOkI3%VTat@GtObU#6R%k)1Yug*6IbqleAS2GReVw!SpXa@Ocg^t(kDQ&UnxDPr^3 z%dAIm@`x*g+KL%o>E*eKz;B3%uGk*<-)m%?9Cy0OhBFxI?&UQ75t{W?B0@)8p>+91 zCjW}^oR#WvjV<}zVpi8BKUykXH;A?iBK*RDhJFQ~yUFb^OXutiH`u7R({wOuS8YDz+{0?=r#+o~Uf(aVue<%-Cfs5>oQ~l?=JrM$ZCIJ3T=erqy&X_Z0)m>*VF9WZ&a~vJls@8j^jNcjkCMS)+zt}QQ zfzyRN`P9;qhgvCtr$r50@Z?D!yas81O>SEswxgqnJF>4g@YwuoWZ~u0Yb@Ih zx}JXRns0Q!TP)ipHH9In2|e}|)h5nQZJJn+>sBU}vh}dz{?d$WtuZ{CyXpJp3)Au`ziF`W;O3)loSz9%~McijmKI+O64B zul$n+z{oa^t#u6<`!1$!u{|+l)P>s~O6@Dce(gB0WX+m=AP&>rozdQixhP^H0%C5F zH&EAG)L5cY$nMye{uBxEz7aF*Q#C9>HN{kD;pJz~zbTjL0BC)N~T)*)-q;6^u&+=l0xZoJTuMQkDyE<7EoaIl+d<*<`G}NZUjHt z?}^>4Gb23^jaoN+r^K>PGSk@;2u$;rk59<3i4Zd${j!eEpEGB_>(0!xn~LuoZ5ME~ z^o4teZ&D(`Wo%wr`Ko(rD{8k+cTcKFA5qTFtK|w-HQ1fH`$%*PGsW#E#l$Vuh%?yU zde0SQAWB+|FG+yRkVM9rclO7`97EJvy8EKg=)CLVzj;{3kLddPdZYEtv5v+L?iQUa zIYKN)k2L=NEw5`A*+P?R#2?U72L}g-Ri5nLX~(G5-8pYY$~d|?$kDFn!o=Fmo*l&P zSId9(S+6Qx9p&q6SS!gDvzBmc6Xho@?yDzhh?WX1ub|>fKEG9B6drQHWXhBszWeXE zS#))1B>~2>cX>H*B9|=J=wKS6y$9 ze!nupJJVpMz5O<->5v}0%&XQ(mlF+IwRH9LYNAFMt!wDg+S)oCAuz8}xD0;YE0?dC zRbHGT*Zi?9^LG^?%}N1#sIbvQw1U}?t23*k5)it4wo#gw~ z*s!~0rtdfJQm6C8S|Jw(&5>rtl=rYlpJJz|D{h={xa`CBiT6Jx9o7~rFZn=3gp#dI zGeqa@1;cc7I#O2LfB5ip`R~flkM^e@tQhS=U29Z7sOLwer z>MmcnbszujM@Gw_{N1Ic_CmMN@HZDgbf_n|=>y`rgxu2T5S(q(kUCT!+dx*pHKc+^ zG^FqNg?M)3w^l9f(A^8uLQFFCBU24+1gGBaAcUeb{%YzfQRJbsm-tp?^_H&czkk;1 z{ldK6(K9MK+JNfp-&e0*l4DSKIPG1_=&6&>W}Qk&f$Qt29^R1#?k0GMB)EfXiuZ0Z zKKk)QZz7~?f#fG$qO)=Rm!qU;3#D??XB!4aQS#5lY&NH7A3IL5`WHLh)=LB*Fz3hN z6ulqn9C*Q=k`}e&050&wxs4wZ($e|{`@wAZz7usWp)DlATEhPTs^EBlaZON5M!kR1ognIbYxVfzg$qgQ z2iJ6@Cy$@(*WZ6*^>{=HUypMog#y4u_-IYJ*KDwtYlJgUy)`U)Rk%s!i%JF!-2KS6 ze@{K-QI(dGQlhwX%jrskirx57n1M2=aHSU=KiVNtBki>|CE^wMgT zxe)bU2t*^ser0tK?=e77MrBobw;=8$U ztrk9JdA4dL;CNyNov86>cTF^v#ArBvQDfp0P{E01<>i)dOpJfNUp7r+J$rHG#<#)ubR6#%qcogRb==5`4yk(DFxq#@ZN>O$?)H! zNl80E!qz=XzUMR0(xx;ght~h0)0mMXHQhVKW`V#Q!wDnmh3FqH8}BcE`mdSZjMla4E>iV|B z=Oqv6GNE6KE-$6Q5kk4WL&h=m;3tA8NuiUwhk9o6>t3;0>2J<(lEc|V{wTb6Z=e3@ zHIs)S?4iP~{_qVL%;rp1G#nL@NJ%wpmsWi#tW7A~iwh8_+cP$anT^e!?lv#@4X7HG zv|sNJzBUnFCh%RPD1ViWo4YMcUm^ugX4lwdeP-B48)~y#%Bq+y_eD;TC{!6T{{ymJ zL+%!mv6pVQPVc5JLx~yTwjk})DYdF!A0N)pJUFQS#SPpPB7oc_@Gisw2|m(C?iIoL z8nxTJe$z&Yy_AS361cVSI@ul#)@(NMk-)PFea6NK{RQOBcItCsAyfqqM_X$eA?Sg; z4x#Keza=cor8z_N^dd@9OM0Abq}MQ|M3EAKYdIso4Y{}$Ezj zqe^i>4{Gjq{PgKvn9z`RbnrLo`yS(~u;7ALuPd>)IXuBh??Ema;QLoMtntn{k(ikK z^rE6h6I1}o@OF+FJ8Hn-J;N$muwm*k@2VZiV%$jjrYsa@co`S1~j z)gGZldlz>UZUqd%$9X448{VphXf}gu2bQ;A%8t@dKgfBgPRcz{kGNByB@<|v7G26* z(s?K(Gu>w(Vk$AZ<<40>D^sQQg|DG_EUQ>&QVBDIIT28fow)hqM<25M6unAW7R*a) z2SCVL7cO8HnYN;)PryWfAK^Bvv6urwAJ=qoRaFmOcB1q|00*do_Hc`^zuJdVpvDBg z8QI@4f)CpLcryJyl_$5RVpLR=-WxYDw#xi6Q5W4PfcY)!tU?WJeLsI%S9?=l=qH~% zdBU?+`_Oc7_RRV74@OOSf^3@{@%N;C3McEiMO#Kx>d#I05B7vi3_)YXhEgX>2c(G0 zDHmIq3|%>w%yE9TkackgwY)6oV0+!+^TdMRZKN{?Ae}h|CSp}rbbhC9UoV!4q{gv` zdjI}|2YFzoA?ubBE(DEt`jdeJH+|CTbcb_40M#}OEI_$&EB7lx84vwT=lhQyO+|sE z(7SgC)sk@PbL{S${35k2wXP&4jbi{EdZ``c2^+Us+sB{;s zG|*BzEi|{mK#X4fbndI)c;vThO^>POT$B{H8!S8thbLT~{l?`S=1I^&u1mo_L3bBs z4AMOSb2dnQ*~Ezx&wG@2q60SryhC&@Pe&}!Nrae^!uqIQ4|-O;6_j}fNlLs;g#h`P zMP{gp8y~FtR*(qBN8xKB5jnFChGS+$lEGEJz@ACNMe@YeR{`xmL|$kOC+2*BM%}C^D)y(a_{Jg6E`cf z^fccTafA&-)PdU2lpd5KephR&x5UM7J|)<2*PC6s^ciW<@LPzxWnX|;iYdVq!lEjl zKff=nCK}(QD0!ZM^nd{aAg=q0p9Dej@zW9#!H}AcBDnmoEmUgxm|W?&oi`c|vVxvguBju4e{F*u4JA%7w|RXZ9Rq8y`#> zltiIJK68-z5CT<*D7l4cdq}DVn>jdir-i)1MV%DG>z}dogm1~@eK_Y_&{xzgvbMFo ziP6PkrnDKQ!m?)b2nf-2hwpLSu3f)Ah__@leYzM`MYfJy|37Gh820h>I9yEpq{(Vs z6BjX5xhzW%s{8uyK$3{SK_Y=P)6@wL$kxzNE_ob;J8;Rg9-}q+L$H(uKqrSC$o?_c48104uC+GC5+GO^GAk>;UktO zohV5kKJ1QA(CxC@NUK%kS*RZpQ^_~;aE58#R<0b*_3#p^SBR(?aV~;%oYIaTH_P1grw_V~xnt_{8x#rA zN)?itjtN{#kU|Kg`yg-})#tCJofY@0juj?DrOGi(vymMyJL$+iP!TbX76FF|=M6{R z>+6f*IG1~PJkl$_W}%tS{&YVvRLEyY7F>9G^rfp;yBD=E^3d%`746F)^;Uj_qb{O} zW8ctUDJGnyLSk6keIk=H@1oTqK5Cy__d$;HChc|x_Yvl0kWUF*D%Y>k`0>-vJO+gp zemS>!)H`A@50+m!pfpgdwV7_M8z<~NlZB$k?TNnd(5FF z7jINn_QsJ3{bx3JZZE~9Be+1a7pdzT>*qf%D@)zqG4v&+E<)FC#WP0%(TZZlaKbN6 zV8gRjVug5|Eb)HcPEC4*sNfTP<*2J(Hy><5m~p6m6I-koBG_r$7ZG_g_$nzcJ(1An zvo$5bx68{C|8k+W34Sq6M>#^0mGb;DA?66Pq&=RFF1c95`72~iE2c(sOD#GvIh~{N z&wjz98F%)?i6GRaB5KU=%gMB~t~^chKf)Ip2xC zUx#yxC-7@Q=xP8aqnBEsr=oMx|NQR7u=!W@#R&AwC~dwa+6xwGI^Ey)prDck0A$xoN3)nq_WN_1^kUov4f^Q?JG~so ztSFVCfRt97y?V~hw6vi(W5~6aMSo9jN;|<9q91ucS9%JX<3M_3yYv#t31XHmtQt5=AoaKiVYYnu z0x^1~-}*sHK0ZE%i@p5=;_m&nVf#Rlh`Ccj`y&*jnVE*-w;=kkf2E;C7jA;NL$KH| zQVjQ!2k;m-ZX9MYe-2R;a_(6N4~3QjZ~xnpkmX8mhsYrFT(vXjQ70*ROgSZ<;B8_0-4x>3rh z03>W%f3{4^Tum$Fp4DDq{CiN};z_+(t75Du8jJzZ+w@W8F@CXQ*WtYzDJEE=#P3Bj zGJNF7LcXLRw(y|0qf3$aqX=~2_=fM zkerRuxXUEL8i#v{(4AztF2VB7sGg9FE1+RDXW$A5i1@i4WjZ2*`J5P}>pe03>?-bk z?^G1FM`Q8&L~J(sF_5u*0-cQe5bBiyk)gD}qZk5n+ zef{{VyKp3dB)9-LC7xH72;FbR1*A^-`~-3Ea6BDDIgc>7ebLg)^XJW-oZ=i4-GL*E zFFU6#mdpf3-oL*m71nl!J4zN@y@^7*=G>o`<7ZL`aJIevEN5JhAua{7JVKEno z16c!k=mKb`W;!~GAa${4!LgXXrNW-29}=5!yIl7~nFi3gf%S>tWL;1hmVRM-4P52? zq8slSv(8Q0IYq)r={QXwW?_X3fMU`&wzx#t&c~?N95|$;-K8zM#lLeQ+LNr>X1D(_ zR(;dH&#%in^MhZyY0G!*8bqCg{H_~EB~oEg`J;f}L2Cg5Cn`bWM!Ykn$Oy`LlHECS zp&d`*eDW2k!j!jy)k>I|JSjw6yIpog&da1gMZ4|f_B zPSK!6M1cbl8C4o7D=V)hoeEoaKUN%vbRXbjXAh51VoVf4!QwZ^KkF8e$cZf)H!h*D z*w~J=nY$SDSo0nrF^2HuKoenoph4>T`dw%P z3s_Qi^X7G8kN)-VeJS>meY@VH>ESyvk(-*Q1z`^mTP<*!I6$+qM$`W;VIcaszan8* z@enBDb45?Z<`H6EyqluKBA%DuW4}US8rM8grXdJ7K|e5SNmDKp(V!(Z+4SkR=fztJ ze1Gx;yDi=>4mxe7JcGnVb$l|7{3Jp)s)2>~JUBn~C7Yy_HBGA3C6s+_`j>oF8t#?AU}`%fi| z?27JIOtf9%?3`C@G}nQXYtq)A7OKzr{_&-eU}Qz;n){|+U%U-{G+)iT@NJtW9V*V4 zPy4clpa7fF0}?PXQ63q{2EjKdY5^VgCPigMVGq0PkzAZ&G&hzwNrv%_hYua}D#BXb zzX9eO^$y@7&evTyJ;ArL2+AP#X8TMX8MQRiYC=mL63t-zuVQ91Ke6OuMnasYj8FHzJAgQ_3 z$&RyT3B~32Yn=OSy-wWe!5z}(+sWro~RO3{Db5kFLFQO?#qObxreV6;f{ z?mePm@Wo*DU4+BQK0CrD<1X*>*OCAHdYvf0p6EOr@~2WMDb6?hHjiSX8qN%kPRx^Q zdtkZ&RNg%fxgu}&&OiUq(!Z$qhi4Pj$85@Igd73+pojfVRe#A^{P6D@VjvtPtebj8*ifTu>bY?aD>C%<0Tm?x@ zV%5#nvPp_!Mlj^?!-{{z1CT(Bl~>sCU!&#~bPq8iLs51JdbDb$1nf;J#GEPD*L~FeVZImttd;dniO~p;s!?)pZ4ShAjBqfwXjNg+&;7bhBE$7#==NlU?WU5N6k zxVC8o5?l!nq?Q1Y{_4B>r?mCUfRo44*H%D2bNVA)3RCMALO9geqs+`GZ3 zOEKvf<9Zc-$o~6^oVF6qh4$b~Ngf|)?khv5z@5aoonE&&XB33{(UT`TNCdu&tZU!d z=Rvr!s|mT|NW3ZJ1Q6qS_wT~SvZl3dZRqubVi=ERpQHV6|9hodGAtz+uuwnN$oz&IQsirVp>^eH!^jibk zC$&H~F(DyzX*VE9grHRB%zO}xWDUQG7u-&5Z{q4F=U>fPGe-J)kvO1Q7mEQakkswf zhN?I|Y&Ayb14rJ0twH?|Or4mi4|s_9sTUsoI4B<(gs^*aPjD;=R#o5_q_5_Zd{FWN z7DVgCrV0Ha5ZEDtlOSR4(Wz%I4C%PF1CLS#>`~7YY6ki{qF$*mLMcsLz?K(Z?+06b zMD$74-)(Wler+h!md}F~O80BqYIrCrYCGG^=(M9$7JqQ_G7X?~ zkofa8EhYvEIsqbDl1nFfpSo<=qaI@C_&V(!FnKRibtMvNNdPPL5ofON*(1+2DKBCE zqcmHHR#KYaLP<^VLy&&I>p^1-f&VzUWF#UG5LHZk{qyI~sS?{uASOhg`bXqd!yPH{ zhrTVqiR`JN+)0F?ie?+X(NqK)NN7ajm@rLI%^OxJ(H;Ru?Xn&=H(f$$==Pmb7oFs( z2VOLv-RKs0Mejd+2*j4S2=pELoC`UZU;w1?++L{T)uQ^i3qbZ?*~UE);g$w zK+z>jh#8`$sOdQ|2o%!r)G3T8y&bO+=1iN=Q6iA1%jXVx*r z4Q-`Fl1?@xVNbQEv%qs*bH%%h0yZ~T#MlCAy-R&oZNP7?o=(ny3XY5WI{BJlQzZ6FOGMt-nl~m0rT}~gtfx(#I=iZI$yYqLbOHg;WH6Hv=b+yE zqo_2(0ffrJV*RZvjKK5Zvf1Od%9#+zT>3LFY~KPu1#1bsa^>&qTbur{)52yVp?>bb z8CbUbDo~YB3w88_e04l&k`lC}Fj$cl*j}QBo`=V^r*!Z4i0J4Wm+#VP|D!lcN3_DQ@@n{&O7<968d>xOo?Y>E|5!GKw=sKqqdQuI-|Ffgze^k7&2Svaj)s z8T+ErA~YvVP^JHq_yZ&5WBCd81b5YTj~uPcmlQ*|MJQo&PXv16(*m_^N3>KnnzBGs z`mzuqB2LBHVX>K$8x}~8WL??f?K3%>DGfBBE&YwsZDIzrf(eKz<8jDwr?S!#AB`A2 zItV0&S~U#KAQg@)EXJqR+SH?8@_L*>kM8RbaFc5?-h0EI%8QTg-_OOGm;LV=;B)V7 z+kWrqy@N*VqP$9_MQ+p-gW%-@NcqeKT^Cb_-k^@>6bCYS@MI#^t{MhNI zu6D0&g}r+T|0hw?y6f5?T@$dqqI&TEv;ZeL2)j30LUewEM)(jtZ}36BVdUnMWKHaO z^5-xv>xZ3VZ?3F_7dX>3{2$gq@zv8AGVR)WaPLi(84cOPBHo586Zw}yzkUl}t>=g* z|K#Nz;icm!?+QpF@sEk=p`9{z)Trn#KRF@Ss(Z(!8dyI%Mh$3+@JckjA1KK(;Mp-g zWZo?zWh|Hm82cLH2{GSJIIO4|w;?nWofRXp&QI0o{UU6}DZrOLe=*^oqKndT^>KruToQoRP`RY%5`o5-744ly32_7F| zUD*8Zri7Umh8FE=Ja=-y@4tMcP7*rJNakCUmX_Izu`oTQgvp&ah!c zTwWmRJ4AAMWJU*tALn~-o(AN=9bmph+TYEV(sJdVz#l1a5{hK9n9l`9=?6D%2DN_f zFx}XSIcz%jPM*E6$5;+uuzb0WN~LdmzUS}XKh_wYNl1_ab*8Esh|`IEFOqtNyM@r= zuum{Sinm+7`TpC~BuqEBKr!#^WK0wW?bG`0_fvyW;`sjjst6df9T6G_FArkgDt{qK z1dvf2Fkm15Gm1P@Od|kRwdc=ex?;y}k6=qUsQ5PmbR(p1PV|>`{3R?uE#E(_q*Ip> z;tXm8x5J%F_Sb?`#828ZtMWd=!1f6+g%6Z;s#=fCB;M33!+qAxw2{4=(IWTtRU13Tu`U_7PvMT zGw<==ja075N@Sf2;9khigBMWW4<{H;^7QW9EgLaJh{87bcr%4KNV62&6{5|%?}#uG zZeUSvA3ofl+A07%EaFY?)z7cVp{@{Z7m}mI(`%3qI5n~n#k2-VM#+(W4~opCU&Hpv zE-1Nu`{k=wav;h~h~O2#CQawC)10`KQX5EOiJP0u{P|VmPR}7>W-Wq001ct4K(eEG zC_5#^<3bglOe=YP1M!lPp59;=x4eBe9u4+!-j9gGb1Zb_y#YcAREybFeYo0K%0fpE z)uzj!^=sEu#h?IQA$~7^VysR13nbg+LRn&V+77X=jzx>jEGj$dmQc=Os|z1Mi@uV$ zpfF%SH>BH0I`W@C?@z50Gw%zcJ9q&z{AjSn$PDijaAF;A6y80l_Vw$M!i?5M*E=vM_&zbc#IkjFlRhOlOhf<%@C=dch1%0j1q`?%&2f*+>@< ztVv6HF>qQp31~)}L9cR>`wX|q9<#*@ZHnNFrn}B}JvnQY*5+@-vy8rmG z*yi*RMpXuUu7YRJ`mrVjI0{20q}wQ+6wF3xYj+TQBhrlE;InL`SOVrwK8-}4%7UME z0#7mUSEwNC0j?w|*&Bpx4Ng^U=+Lf6?%_fN6Gl3Uy3ZmsrqtTP#wp$+7apt81O+fn zrL`D6*04t0uSw3_1JV+4B>dr=g3VhW6~?3>QF}Mi>23~xTfoYEW#JS;y3D+&eOxM* zayI8OGX>7eiGhHqD_GugNEc2LfoCOKq_a=sCvNV6gGBh?I7tkAzph1kG^M2fP(8hE zP){5vLS70KBz886BfC|$k9*z_2@I1V5OsYz1v|``Gu!ZwXZd9kiWB++!9Sq*O}ulD zr;v_kG1CUWk3e@NM&5NDS#5e3UhuG7xhVdmUu4vh*}FF?sZ-akX+;m(0c!HpWz^Oe zLQ;m+UgG{7uKR@%<^c@V?agYO%6lp{F9of$&3Zs~R?WwQX!OB^CBbK-c_rc^=J3$| ze1UqjXhpHe0U|Mp5gF=3hU{6e3r4;d7NE;Le*OAoSv=f$L3Y5a@mzGmO2b2{>+ftn zk|Vq}URb?Y)20YAL@wjgIhnFj%$nZ~O{k%(8)EcbJWHJWrCEZ5pd&_?WX!d|M+rW3 zyLkl70*z?hMTysdF#`t%e3YwP6@Kk3>I}=u^MX>CGNrw+U=iqHB)zo@G6jKFgK>l( zJ}g@2<4~{Zklg6%`b@|d!_AP!Oqn}3_KwoV2twm>(fI;$2sVKmS(q_dH;A*n9;t+w z2Q!TUdk*Q+1jV(dlNGo)e?Pji=Vs)7f zkGy(u=hZ$ID!lc5{l`V0S@vV4uuf5;8FQrYw1m-?65l<0XHyCPnZf&3Pq%Y)ETnW& zQ|^SDGzj^QfTAMwvp_6=n+a1|R} zw1uJ|J4B$jRDd`uHx zk1AWDu*}vab5jbg2yFPV469ajl=9~~C8gs&Qu(`UvVFfPP5$+t->0W^;uQlg`7nFNrW3=Qt_|gnyo@S z1%J0`Lq-c4V@J1IWXzoP?Ia{C2jQI**+C!rPh=M&4GDgCJVC^$gJeT?YhUo>`3tiP zvjRJ7X(h@2S_s_oPH^{ONz0dY?yo6-E=Y94^q!h79j1=z7QE*+LaDI39Sa~JXIPbS zMTv?Uad};8Ez>Po4zyUY=AWLCapzX!^>Z(+9cU1&SxGQnJ89{VOG4m4kG&}A^)otC%U@^xE0(vue_!3J3nE}4 z-3@tpLoiB0>s9_2GCCHaL$V3A;A%{y%J3ml@7vnO7Vt~fQtnZrI}XlVfdx7wtE-$` z0Et)zK@=4p@!oSZm7GB@K|5nMP0I4D+{VdM6DH{DKnD&3b2pLkxpx^LhPfLzr=Cx| zztK1`>4Do-ttw(CZqxbMdyaf4^Ok8soEUz|Lu{+E7kLlTV`xV=DYYJU7= zBSBQgJfTYSkralmrA!lHSQ9!3Cdhm$_e*+4#>0F5$6? zp1Jp(Dsmbc=ZT9MBi?-qT=h&Ro?u9}6)6w0zi2!~lbhW26)QXg43QdmSLzQsZ0B#S z_3?Ly7KjoWsRKOFyU9ns1)C<6h2`!so@(uSvF5g6Z4dvTb^i|1*6u!SC$?nnej)DU z{nPBKu=dl|51_-VJ2YBMjl8;E-oL`&I}DSOfy_Y;!^jOoG*U#j$ zpcM~w?8rDQ1GHRwjZ_qJ*1*-$ny;y8#`c{LE~l^6^;2tWO|U0*Oc3{y5Idu=NcmjR z_W&hP#Jh;~?p(HO2`7lFGB8bk{@)C!Eo<6({~bBhMlsgE{Y>MePIDDh%7RsH1og2g ztLVJExsTRj*LT+kK2q2`aJ`J8V&L_o{_P3LePz9=EtVqkx$a+unvLgrtTb5n?&;VO z>)zd&^kc%0$~RRS%#A4Q#{2NG8o3aZii)*v^v;4jT>K%ore@x7_!Dsb&5yBi_R$Hb zUh)JIOu`=Jtbhn;0&hYsSllV2@`}0DK=&rZR}y-~gPOS{G$iW1mDoKM;Wwq~DiYER z1pRus@ffx?5gAUsgp+emxjoT~yLL0l*%^NQCiQMe=X)3cg-ToG1)_U+TTz zx_qJPUO9n)7)_6L-rm(sO}CXAb~#;LKLne@F3iNBiav( z*fe!h=UuHEnRIgcR}>-0+%|9&7Oi=ZR4H@9|KU`n5|#wZjOGgmf$vG|4kii2$zSJ- zh>m;oZgO`t;gD|Om(aURNxW{wrODkoC;7OwPsX`(W&jB98Ga`@7T@2&tzfqako{nv zcu7U08B-ZxgZn;P_&sMT=MfrYo#-|Ms`?N1)MWuPTh*%~p3Oi=mps}9eX&OSTdjLH zK#|jA2#s>;D$xO;FT3TVz6%QF*3+$M6|sCfzJ01k9hsMxM>@-C$CeNLnYr!y8rQ|B zC@I-5%TP;ND$=2TE`D~QTd~gtvU#pC@YfiWYQHnA4q!1KsI&cFxq<4n;4-5wL#&x9c;rze1|ckQoiKRRo-7>GGa> z7tGb;Owk4IK&6hb2}fzffpf!F9t1>niEu1Oc#hIxI0ahfS8-~^P4pgoJTXy5B1i^K zi-O|fke^50-Q3D989M3Lft(3+YtyhZXU-Uq9j2b5)M-bmRW;~!*bW629#g(@8E>TD zj{Z@wSZ-}Jn2G^=ctoUj-cwQxF3PL-7D1;G)(s!Nr5ZN@NQwRc=o@~-z`M>ubVIZl z0%yP!iX2d4?B;Y!*=FtK1r(YQoxE8tR1lG0qWIE|-{=;qy)WCV#AgbCxc3KA{FY#H zph^%b2&A`zYWAm8z-LXj_$;K|d^*+f(5)1~XC7s^4cvMLoLk60PH!8D_61d)#zj=r zRx+bGeU=kKNEvWz*#bw$KWwqWtiJ0mFNg`PL?OOl=tcXheh}__vPU%mDCaIMNV{Xz zzvTx;wLoM*hdX-mBZ*wy&BbChwi6YeDfKL7u=k8+{x#>D?Y0XrjgR?$_AR@MwD9Nz@_( z0v1cXzuorC&(Qp&k62fA<9$J=Q`^71lGPx`_1U?Bul4Wq>*FcKr|EqWdRs1~Oh4oc zile|+a-TgrR4=oUO(JZ(b)P90LUK=tu9|7hiqF~my;;f{KMd!)R8~|dEE~IYhPSci z`=7`_JZ8O#ro!XaO#fZjb#wWSSH2kp6a%(P)7+@H#HSY8uuT=OGkc*I&EcRQhbH?i zT5W%7-0=3JUFd1eexKd-V=AaRs`44DZ+k~lBfDMRSd!A5I#ej$cn7$0f%NZ$uKWEZ zr!9Q+LdlN>Wse{4#DOqaHhW`>I$*CPxMAR(Z~JI_zz1HFQAuae{MiQt?mz`Ci&Gtg*3CgM_jLyU2Rb53r$_rr0vA@k4S+ zMG^UiMx)o5)v72{jvhO<&AA}R838t|zc5+}ZE|S+AMVd*NvA^r2QGR%MHTn-=~H;7 z4b}%n%F!xmS8hR z#NMl%5lKa^^nec-xx0;sHT>L<#mmKyStpB%$Jl zM<7X1qaKaw8vJNfVY@y^3vnTL5Y za^xJ&>>a#IysZVHSFVf`)g+X_OPYt&Yn6-re$9F{0pH!v4GFfRy~Sr8JdmKUV2YN^ zd1uPRBuds)0*5cBspjanl3?i$BP_n-2@IJoi_1xFv7~M%5*{fA6|ppTZ~=g%QcbL7 zvkD{(ns-#6<1=+MRgU?ex-w(Iiny25Tf&%h-}Gf5(YA+i1Ppsb%JL?>wGhiRpSn3HmTAD-oHH*P{`&PHp#< ze9|z<4J>Q)6{2_(v$vA1nuQzG~G ztg)*qCSk|c0NUv$W{r-SmTNOLX z6ox0FCSU&S$|ypJw_##5q5Pmy9ksXnjT|Y{gs{SslJ_DR-RnE834M7NNouI`Ai#7= z+NtR11YAcQA+7Lh(8uP=?&6hXz>lp`=-IP_KzJG&j`34b5!^tOFDzuqu43MXcfV4R zlRI?({Mw3M62(VlJE%_C?tzZWLl4QostbUOjbrNJ>C&^Wv1TUzlWo+6fGk2Jz*x6H zt+i)5FV6PO<2yA!ArtL4313-%&RcuKWQQSL-8gFkIRWg8p1aL5$Z#`W|<(BwhHV_QC- zYHofM33~M2q}0^iMizwri4?KInz zc5vHuM^D%(MdJluWqEppQ`&g{+L^=J?65iz?O)V3VX|1Q5wH1 z<;G9oujBmK_~mUsG!MvQcCyqJ#}o@s1dFaArIQk$!jkkLD0sPc?v42oH7ZWWc0N%86UOIvl(P!F7UD3Ut&0n7UngOrVU0wYtTo*GvzkH-|nK1)Sb zA~JJN8*kICVa%p;h&STCmniBvudFUipXBpedF3HX!wt_buUjUZ@(>8(kbr-)^}b-8 z(M#>XvR$>y;XUVd?yWQGak>36QtUdFyqKZoU0Asat6-k3I zQ0y)@^`?eNZCU|8gD`8*-8n4JK_C96mr_I}RlfaRqbnOl)U~t|uYD&h&9NKA*=DYv z7k^51thWpl1$dem4P}{l;^fK50lm-~h>0!}f>zjUq<_(?YO`nsYgRG>rq9%W;;uD$ zG6+TwJLE%79?uc-hpTPVHD|EOsXLuKaH6PZzIt+DFgC+sSXU*u7zmc}XH*1wO|cnS zMSZRh^(u``p70xqtcA*1%5&w?WdCuN1e&)LuM^u(esgKH_ zT}DT~o5nPt;N=oTH{OAV!PwQ)sAOD+L|D!~^jM5z$2rqkl=JifgeczV^tJBLp@sbU$Gs8cvy%E`KUyFw1`jwwa6P!_U>?U zz8gOi{we>(iz6S~*;-jeC{}>^kubtL2~Y;6su!^cP}1gXGUsz(ON0maVwP_ytNdR zQ1fp5aA(s!g%4-h^^=;iP(QYaFNr{;hV_UAIEZ4H_Ihf>vQ`(hmdiS69xA&$J^CKG zb>ZKmtotw7(2#_LV;3AWX$426cL=2iym%@&=hC?J0~j6;9OY+ zEvFmmeVum5s&?IZ?JN%rO_7#*-{Q*_cmx#d%Y#tUsKe8s+Ti}b0h#DF?yTXe&(ycY zzLuPRvZwDw~oUgfJ`sYJxnI>c&QGm0jeIom+i-rPi>{$T&SLm3sD^rrJI>qYL^0 zPtVk-D&ti`i1RFFR>wiQrI$IbWFC#d6HV;%(Ed3S5cpgf&fGHx+KqO6JCPr}sKeYKP+Dij^vZ7rF{<1Y|vj zd%F4BJF)M0o2jk_>&~KZ5Ls_vsm`lb*}UCfA6t0m)q#Ttr~h*n5>*T|++IUw|G-_p z?i@3Rf{&Sr1>rfA#r{6pNzP#l2B$Q~yB$kOvAR2$y9AFqlI$J6Gdz|rXTptf%9~Gq zDm2(J)8jb5(JUK3Y1dO(xtjIvedz1y&L1}PP>{3Ks=DjbToE2Dh5@{u@>J-{7tRdd zqgt3}395ox0H=n8)iXW@>oR{7tH8-MTV?M#6;x)3Wp=!AC{Mj zOC(~POSMI?<1}lZb=@q5IkF$7C5?;DzGG}`n5^3)jgNbr&|A@^IXIXh9&rDy7Ruya zVZH{XJ#=9UHMkmV3*;ARD^f*yCT-&;QtRJvW@U0VB zW%U`7xsO_Ds=dElWikq2YNB4C$M*w+12>)7rG3)H!#-rukw#4+Z+0vA%UI-8u6DU& z?!wO7V?O%M>>!udO4FsnJhpU9cRfl;T5^5{SOtdB8>frXH!wTlY$T#xl0Pi#%@P-9@N&{gp(8}xQ%m%_)hd|W3P zYyLHsKiri4J@{LpYqIColLTdPbBPS!3opW^nBCkWm|B8CL0>2V}S$^j0 zp56WrVebLf^Zx(;zlyYs>=8<`vvOopWM`F<)lz1u5TYfcGLn_O_io76AX+vJbQB^K z5+S92w@2rk>-)X_*Y~>q=lXum_wzYN_3rh0J|E-$xZm%OIvblMiD1j9SG$q3+Kuc! z9flk<`P&O3!h(*xKZwHRh;_4#Nw*k^MtXmn`S_|AT!_Td&6-bCdf=$tz#cwY{R#c8 zvL7tE;dpV@}v)XiT(%@`MoAqZh9HJb~EeWpN?uEL%?yA9#E4AuZYBp)s zY}DJji2iIZkt%KTo9jdev`|iW-e$zJDMAsuY+(W|Q)TTF$;Y%vi?8q|V@Tx0w1@$# zxsOl((A4k-;c^^ZuTLjR&mOTI)DPk3U%d^;R z2Bf_;Ko!V9y!ytZ)1JAl#y0EGsh;7=Bkr2?vq*HR>BMxOaq7$Mr(R}9j|I0oACTPl z0XPDD;}no zuUx5nsrRuP1FYK9Ue5^E4QhhTuMEr4lH(MNT@{Img%2JCU# zWNU(^d{k};%$)ED*%zc_eO>FkC&?mw-On=A$|1eQO-tBXK=Qm)(Gs1UVPfc2cT$f| zuiDi2w?GRQ9DfY_l*cj@-j#^kA#qeYQC4u)=v^7y^U1DT&SbdP#M1%gpxKnjlm(sV zzHbsOsR9|NQx`-gi4QeN4C9`>f)Kv7vU8 zf@|^NmOW!aI?OW&>x#JyL=NYDIZogo0yzX!us1yj(ige@9 zK9jn1?(DL6fAJm7U@fB^-&#)2(TnLk{=n1bBlCCdx~OtS3)4Xt4-5LfC?Dbdp`_dLjNJz&7ziDt%ImRVdgo0+rB zGu~nT{ISah6SKv!=1AYcHbYl3gKjz+Fivbp>a7DIYQ44)Xvn&sErW>GUzYGs1YeAD z1GR}EHPdMtYW7RIhK@NI+GgO!q#13Fq7@aT z9pnB4n1o2x&;rYbVVDFR2QaCYY6Xo-5SHW&+%~v)cGZ5@XV2EH=2MQR^bOjnT_49p zgNCpAw>)oVZnEu$zn53k2fU{uw~KKA8m43e3!VT-u;aXWX{SP;$NKiG>%d&t;#l&U zQh%?h21KtnRIsWFJl1BgxfSy*+MYwz_4_W73-)-aG;uzcUOam?vZSW}@9!NLq)H#d=a#J&GL->w%6RdMA}Xa)TqG}D5=~yRFSBF%#-4UM_JB^X z4#fcuF=57wrKi*Agk_~S^cbDG>j13);Zp{_e$bIE@t4(`VYlD;Ib_2vr6Wj=XU$E( z4`j{=R$9G^fW#xVRXs~9oH^z0Q^sSD*Zl#c7T+DfM;(X_0)X+ao$YG}4O!cCNBTQt z-U5t37(%c$I?FJ$Y)AKpl@&h+S+;^9Yv0vi_wz)Ho@PGN`}FROltvo65f&DS@LECu zBDVYy?h~W}n>_`%EHDSCrqd_VX1KG}-plEC?yR}+ehhz@7C-s=<_=f4w`qG)6Pilv zz=H(t^s57gkh+8bekI4n;?h&(cn&x&`>Hp3Pj#AD-+GyyUkFNk@Xe|-Z* zLi?V>sUY#WOtgMYA#|ouR*7uCEy7Y9SWTk~D{FL3Tpj)l{I;}z;q#bv4Y%OVz!*Gy zLFY=SVk5>Dkji1^t=u|f>KMkjt@=19y=h?ax*2m3B6E1Z_0Z36taD9&`t-oLb7QrV z5>=0W6j~BYF%^eP3b1pnf}e55I|eVtq3UYbbB*K$24}{}Hr4Q|?Z0$fvcequmV@9E zP}r@fm>OfRBJ+ikbY=X%ew}% zso+&kBoA9laR7Ou0eNc`X3Uf!9_V{4eNUb~J^IWodQDmPj4I)DCz!Jzy^N^8Ieh8_ z4z#oCY&_VswtwxQYTDY`s9Kz`SrpN;l8X|{6x3IQ(pVabOoNCn5Q<8K+XL(aSXojF zj5y=wWn0%n*d!Z}a1p7oDu-$w!jt3|7J&`O?tYPNV*vo#7DLJj@j{ex=hu3_{T z-BGfxC*}a7%33b$-JG`->=jx|Z(wsy>unk>=Ye;aTwka&mHQ-4&Y;W?*4Gxc9vHMU zf84~04Va_^bLn66)AA~={;-`H>(53~culg@ZO+^AlM?d_#8Uvr19tYvLgH&ERlZsHCL@2Xj=8VPlmPx2ysw7k6th9uMXYZ8Rt*`i*>#z5c|h&aK5CfsQGO z(hD)vqv%=VIFah&#@5+&?hpXgS5O1FzlTu1LHrW`Dn}=$Kn%VhRA?hbn6;sE@i>gE zv4<5s_yltkb}Guk5waC_K5Kx$E@4PPb zUoz#|u&R=pnNT^aO%$dc5Be@qa)~pPuz-)$i1DvHP8ALvggamJfj&Ee`*L<4qUjR% zFi=DAq_8}D`aM z8_x&pcf#5Wpj?){3rr&{Lyu6IaKC4;c_#7R!rb^3P-0dC$)f}sGjP_-JslWa=$SDCWM2$h27A zPy~*Qar7S7^Yh-G08<}4c(6!M5I>9jbX2dM@DPPNOkE;icGW1??R8>LupIi~&o6Iu zO7FELg~g0Q{+4wnRF2MOW-W2|y-9BNcdmw)WDBF|}d_o`+7sjyJ=g5sJ7T!D6Amgc%dQNU3fs4`4FI3&p9 z{liuni)k~^TWonjZPu-OcQK2CmMTSV@!tj;nJG9xP_tz*k9dFRC*ix%<_vEQXRv&F zh$Fr;n3KC`bp@&k=wNj$An8rrq-bEiN#3sS+@Djozv5y-T{?2?m=k=alAi|p^(yh9 zZ$UT%Slv|mVv^OAOY>_D+;9Kphi%E2v13CgYIh}{P!nvjId2h}MmKOI)N$s_8k}ekC3Nm#knuU_NwcEAh=9ghQXKp!3Qh z3*&9Nj(-P^5xqH?$Y-8iM-hq@5lUvAjOU`(YA6!|#RIsf-&rS-Y4a4qR_`Z1R67yp z-1=K@MhDUe$^e6t!9v%O4Hw~Ze~{?~DgzNkxM;Z;zRBjb=(Ji+cgKGiBTy|+;wzG0;!#JWYOw4tpe4!mN zPrB^)r|&bIg~bHbrbF{BK@>&Mf`YlY2>8X3`OIydW8KzDQMX|w?Cq3E(y@>MYQ5Vh zd4{P*#GV?54<8=+Xjc;u^x{hDINQN>BYWu8CszxUIq4dLp1$i`l}!iAV9XxbkikGq zoQPqe3efWh+QFUB7E{?zFx1pk35g*HccT`|_yMR$G9B~LlTGHLMCf$UhM7B>k5eVr zN$p0SR@UAVQU}!^`Lj++_^haR?Jd~+b~LdB?YAsd6DfAHQ0IOfQDPX|kH+GTcaqnr zZ7jri`T%o9Fvje&OoW+}4qLTEG92*J(HX~{cI6DCq8_9K@9CtgMfv=?S4c2m!A3jW)~ifN(nNtVcfiFiyhbT$&zvVEL`_>Lnn^ z&E>;rZ@CahR}FJAyuFob$$Z3!;Jd!EUIxW#v&Ks&;NCE3qI2s62H-*gZw^b8wgjd; z#;qNsKfvox>&VlmPrK1&DhAz0xQM{Vcg4pxbs&taWiF5%>#GYk#H`yKY)s69YU-M- zF9bdb1b7ik8^O1vB_Nitbt(SYv&pAiWP7WaF9AirA`Y-CN9G=+79<5Xqq2LUO5^B> zk0SbBZo5VTPqq$lL45oeqr=NalZ zI=#5xqW7ku_bzx%1aJGbr1{r zAOsXQS&%qFqc@1%~%VKN@5M6wMb^BO%*`{%!Pna0f6JA(orgV5nH>`{)3J2eCeQMEzwHR@yv0$yCv zed5pB@=cwz|}V zG?(U-dRJ@$Do^jLku_k#c4!;$P#npBB3|N%%iE&lablzD8N*HNZSdCH;WiMoFy+sM zAZ$BNnuI2p76jaBIrP@elP?T8r0(TZZsdJ_7u(j$cBx+Re*V zF@vKaE|)AXsgBJJ29J&;zcUvHO05q$O!kmc*$bTom! z#j?M-8Pd1gYqwp%QCKS);jA_-CK5LwfqnUFWZ>$r1{|T4<&{a-D%KFZ? z335`qBzE3X>MiPhA)(T>peWnODIS6*ky2g+&Fs$}{=>y@;N4$MbgYZkownV%FrMGw zChY~Ea5z3}gnfvbHE9~ES1(WVzeer-R!@u$n3}GpXJSFT8pR^(ul-jJut)exE{Xs% zt2fT3#*-D}$Y}E&_XY*2k9KaYqw&#bBD)X<6QRU7c25t(B-c4}#OnCu?abdo>Ec13 zvnb4eZIU->hPNIjIFdXu%?BOgwrwm&;&n-fiTuw-&O0aZXV~)a)moprtoWk9I(VUPC4W=9ZiEp zy&^zW&h2buRD>O5TK|_)EN%NEoR0~MrUUayrzl0d z&#xjCu>l|r(+|MlJNnvBk$pIxL8t+5p0Ylje35~w1JsGU#SEH9Kkc|q+y}aJ8GEYD z+Wq_YPuso|AT~V07ZphQ;z5;I;dqKQ_@VG!>2(iUeH;r?c=~Mt++j8gXLr>5iT8)j z@Q#G}jGGnY-N`rKfde0+Xi&`aHKGGlbu^RU=E6|c1{ev~cO;t_ZLc8W)l2f=(1GVm zu4E+Y)Mq@i=#ccswG^uNAP~n%e~y_xHMT9EZe?p5Os0r5uVIn+IWOSEY_sgz8y|Or z5GGWeyyjQ237Xd3nI@Gvnt}<}>*SAld8;V;Y0)<|@*(EwJ2m^dq>FyN#N^+;AhT8B zWk>-q#-Pe_tIs>yjoCHv!w(35$>nxkJ9S#Qd-v{XnS0RnYz~i8SbQ-k%xTZZhd6l1 z`3!hJrOG|@=W5yEn5O#(Y===uTfx~$Km-cr*sOO{i_~*p=*AWHotXY%# zyp){iqzZl5>(Rr9zfMhGb4uGQ>R|ct5BQr3!p!I49>;llaz?yWb5NfAxF zdGQwXNyr4UTLoQ=gg2@#Da@V)-Lb0dB94RDDU=tdb@dt;j`~s>Y6|q%klG-f9-6OL zb*jfV+e%;&xdb3H-NN8y%dSowUCT62CwZE~d2NOa!$GI!v};|*`%trySP@S?8(&bL ziP*ob`pF+ND9GOSRqctW;?9@D^!-qE=6&A*)p&CyBI@9&X4X)&a*;AA<`I2Uw*JQj zSa;1LXU`H7x4h-#gNZ|{hpkhps$nMAeIN|fO5_9=SGO? zWD(n|i{>0vyMbGq(Igut_W~s{!rHnloAMO9^FYo*ivOdn%Z37diH|j-RF&ZDsd*u; zA5#fmI`!+{nyblL_W+1o;&6nruOYvJIPg(`+H@Y?vpakaz{y>%^1uz&^nEtI z;>psbOLO7*8((5`P%a1D_-sjsT6K8)|Ge9L-qDd_n?@wE+b~{YUkCHb2|?vg4vaO~ zdj1|{*N~|xfB_-ZTEE?|PWwzbJy|=7#_{CEc^XeTI|1pTV6|VlVcSg<5)pg43if)7rf67y+1sGve(_gU3>Ehcln4wP?uJP{8&aozB6tQ%HZYYKr7BTQWw zpUjWhxF4$n@{f(r94>~{#7-@xS>@2F(+%T|r6YwL%kesgcW5x`&DXQM?@hJd4!Q>) zRIF}=umJK1;)F#5o<2kPCJ@PVmj_o)M*5R{sQLD^+w|JH-sb<@Ps0?fx41mwn<51o za$uoafxYd(mC^` z4yO^x@hHts&R^fAHU5sx8juX1dHajL>j#(GI9|Me$YA&RB--qd-6AFGhC+8(%SVHB zCs!G$IS&3m+{bPr$CQN`S2*`b6mMM}M?ynHJD(&|3D*yA3|F55()A#?^{ZHi|>zn`Y zkN%&hX>Iy{yuJVZv_~~;-}8r3(E%eKeXO(;1~vf{${D|!h!~A+0axu|HA!NiXW|-9 z%a62-ttFBuuBJ*=B}CflS^RIz8eg$f@K8D~MKPLkL8HoQscwkue+P+I6yZiNmK0Q; z=BUb)4RfrxJI$RAqe2RxoTgL&WO&-A5dwxb)H8~Lt69M2$NsZAPMtPwJp*`Mf{|+&|?O&^zatEb43BTfXVLXTkD?%KmWbD zx4Tzi{P?b~XU`)&{O%ep=miWpW2N)c`r^sC1<4L7fPr*GqK(zlD6=wul;9xb1?w0DR! zM9kfK{keBC9Tb_cB03m;v|F~yAAg{|0HhC!DO4|@f3fivxKL3*xrhxW?{wn&QdHjr zj}TaqSFj+CwpVuZz0>b`6plI&uDU|ekMqb`yE|o_zhMO;iV%7%dWuu)}BS&;vh5ciWJNX69San;psHF&7h@6)0Fymw$+R@eI;8&zrhhu?k zp<2xc7UfRQfipR~S6be?dpEc!Z171dK#w}>T>y*tW1wMDd*TnwF z_!3k9Lm7Pn&flg37b-3#?yA+ReV=@rr}Z{&EgCXZKDx`BSe7qIt(-e@!2)A+MzN{R z`++}sAcEyU4XrZX%UVd%mBE3c3>a{u#`1lY#*90lQDUU=@uLY5r7AF#ZwHQU;_7nm`lp`OqR42ciQ+lX9J`GIzHu5;5YveUR(n9G^bLOBG%vbKFG_c& zNo8kz$)DT-@NyX=6T~J54-~mA4&>5x8@s2siUO+P6yiz(ONjxC*;OE!7kbz{q>0JcXexWpg9H zm1rlgnNDcT_#t?M4=<4Ax9deQu1GzCqr2>nE7<|XRXnWQcj>Z*(gUP3uj3`4GBGoQ z4b8+f+Po!AhG7Ryh1)MrJm}WRZB35wd%-amrxE&ehdFaJA)sDq^ci?sPAmNZi~VW? zoY|C}#g+_sy%pXqIK?4=ggC#stQ=asR6WVb0WeW`We4iil>s8#_+-TemLMeyVcRw-qLU8*8&!yb->bwQJg})q!LU0JC4r^ zl|$w?7&1X{J<+drRjA+EQAE3hK_&S0T{>?d@s%*S@a=2T+r!~(;~*@_K(cj@>Fh8e_@29zf4&wa3IRX8(UWhb<;zZHOo5wG z7bmi;-0k*$D*$A~Z-gH24c}zjz}RD7yoSiYg8V$}?B<=+Aa%2FWpcc|wxP&8fz&;D zQDRCFklbM=K9xIqdph0d|0T1$CThX#d2Rai*;!sm|0rVFydMnLKDyQ9BlrxA%lMQ8 zf;Q#tKu9UP-1*;cN_^H?u>pY#>l$nE7kq%t-$u54edw_J!BbXy(oTGKul7GFFnI>e zL>BXKcww?=2N_Gxxuc!vydJ!IVYH;I29DYyFa%Lkh2Xku$u=^NDLwBaFb_di@!bfZ z0C`q{tx<6$`9eq)Fp0#1P`;3&Qxi6XEKYT4(M3l?+%Nv!w=9cqVDmO_(SikC)l8k| z3;=a6-hpUO9LaKge@@?EC*m$4GBWxSQ3bV*I4aUc2~`RtD5HYRaT{RL5sxPDN@zpk zAa%rm9Ts9U&J`4=ayV2XDVAmQM1Zz$W<}w124ycHJ-s0k2WHB{5CV#vK585*fx!bL zThwgQP2nz?14cLkUoi@b4*f|S{#90X3%MYwQ?kp% zO^dND*7Iu$pRfiIE1)6px^4GEk`^mTS1Xe#tz=31Q zr7&+vu6@q{8Yjg^@Yki7>-jsoDjJryvuasZ`)Iy>#q!E7?I!(c`!tNEiR~{nK@p|# z!p>swMPIObE^^*tAUehcwZZ4)B~YCU^HH>r8Qr_$5Qt+UNProLAEZHf(gIpW!Sl(k}Pbyv5!Zt!rO!4Qs&B@LCF46$ehjqP@D^J`MZM9gS z#C%w<+oFXyyvR!w?JwS7_a?-SH_8nzCb#aT+quru1jPD*@mNAi%=Ok_~cL(amOsmOz1SZW}N_ z$|%(cepeHZ{{W0gFdsUAF+bN;S`KzTo$>9|v7-kqme_UOy#(J>gxi?ebHg%e@SPf0mWv_xp^Y-vx#9l{vls&@dtdy() zvp*Lwqyh@voOBO{0)N1Knk-iJpMqImv@+Z>#nQ~~}T7i%h5TgalnEno3N zxrGK%M7RyJ1U6yl)%p^;$&}^oE9O7LCc0@F-#a-LY6VdCN`?bW=fsGaf=&Vgl*<_# zCZjZD*17}DqD-QA9D&dvu;><}CW@$eCDZR14jQz-WIzPhUiQI)zN8*LSung2EitBIA~z>-I?SG}0VxbOK)Axfj~B0i!oosmaf-!YuO4L$IVCd)XTLwRrZ)H2)0uQ!+4{`9i|_1HIj<4eF;Z*@ zW+K>e)qXH~%E1r==la|Qyu8IIB_KHiDa@*v8#wA1nl)(Nd_6D?PS4`lYqZ;gr^=1p z^nya8C+Ac0N$(Mm{J0GI!fYHDksY*sD@l~x!g`4y8LbK8v zb*#Vqspzn2ezH^DwxA-H{VNA@n^cs4r&G$N%XdgQF#TX= zsVTCgC|C_g?pz)`#vVJ9-g)$vc_=ufib7Gf;HR3T(*C}`x7zk6T^=S^S}v?<`m`mq zg=W?T?6wMf-J$y-DmO42I4x@Vt_hX#+5Rr2@W9 zutOUraMa~n`!#yk9p~zs^?oKBuseZVDC*^GgHWEkBbN#s&an0oX3;Fxb~*a(D4EcS zCJ34AP1-LN#lP}TFQT^+JjLPOCiziG$!0ds9QBUAQI}#FD?nv9pPZ>yE7f zV>ZkDY0n~R4=6o%My(6sCc0buTGG0$I5ltB&?aBh#g=EIHuc}O!2k;X%d^G7? z=c9A$mDHq;Of3}ik+)N)G)!*{!0%uk8}gz?i~dW)G+Y@(H9nf0_Jsr(XT# z6SvNexczecj9P28?%1zid#G*$?V+v#-(PO8eeH{0+5LMpuT9*rE6-^?vDa2?zK{Zg_ev`Wx_r(P{(581m)WM7op!`N3fur#l}Qd~TW^=QkM^@Wje zE8Lz|fMSH-V+F5gwb~C%Q3KSn2o*A0XXQ`f%+ZvzB<30d@3^R#AU1|bz-*x}PrRFV zv9rzMfVhpc?qVp&10YRYuzMCDOaWr}8ww6d&;?jdX+r%}k~a=L7o9_c$a6QPbOqi_ zPVGDK&oqrzt8@m>y{Wd^1H(g=82s2McPjHOu%>uO!CdVci*IGZ zxPxF(GJmwlAZR5-ABRU_mu5ZZRyS=q;#T^{bLaWfQ3rOyHJia7>g`wFyC8W}igR!O zivCmg`A2_^elYMB)m)W2A{-!j@xD%5Qi|Sgw~tbG%N8p>pzYO(EhA*fG+wyTC7xz^ zin!y4f0)e~40H&kt!J{Rp;|HT<{%rtvQNF}%ETWV$Ej71bM;K^>e z10nFdoW-j*idbLy>@qI#gd|%WI%q(Z-pj2jz?Xs?$t*qh5H88Rr z*_6)L2&O;l2wb0IM=4|UM&<`CDDi3i?hV`xr6J;h^ch-j4_q##G7Lb3{340>c#DLp zlH4zdUNg;3{7U#ftJIp?+-{-Au+p(brocQ*go|Fd$2pRb3U__k?H+69=QmJ!pC4!Q_d77izAnCxGc#u;_$waRurm^IfH2RbXY=FSQS6ayHDrwgPDWW5 z-F7?JPmA@L{6T3puwpUV&?>?S<;z3JI3|C~ue!aNJS#otLtP>Cxq z*2V)nUbWsjaBikx7yDP1^?^kzE|gGOjCx1mYy~QHCh`*}pW}Z$6iDwCP~X464wU8< zB#nrIvCJ7EQi|`P*3K@a=x1eGJcGAL=WWoxe}Cyap6;4#%#|hYVOiCYgr?^2UpeJP zbNv6g4UvQV!pEJQ*m1|tB@-uwr8u)|wFd53p;*{8=cnGLPry3T-mPd*yBf&nKCGDC(y^*r=pEVroB4YNb8)m!L)>E`9(q3G*53P%spIOabZI7bu? zQ%|A;lqlz({Re&uwlc2Kimb!UXH?UXDLs_)||gyuaozkF1u~CFXrC& z>@6SmPS5Ras)wl?K@Lb@Atdn(GwhR?LEkqivYTfV&3t`M& zO`-8hQuRKSw$-w6_L7>WF^BU{h339eHTjsvQ>W+-e0-aWKZM?$s(%HdpkO4thVQ&%wDHz=wtGfe^8jc#6!1=O&$w z{S4}3^rF+C(RG9NYyN=Jsg<p645+oFxfA*ML6ido4^ zde1QBRepXD@FOks(6Ckw!z#l)<9gCWtidx)iSSM6gwFlH6S z0Oq3sIAT&Tr=9Di;vHYtf6zTvv;qhgHtPvL| z9@?op7gAMM?a#)_?Tp^)uI%mMaWf=mGU^e*H&KJGe^jTlk*RNp5hrgIiqPsS@B9sMWf;% ze00^YoUmN{W$Qshl?8q@L&OyI*C$ zXn!epT9d~k=BA&T>%RV}+LD{9<>`~}x)1Vq)|2XL#B`Q{IS~c3E_=4du0E@DEffhc z^ED1Cif)UQm+sjqF*keV_^cG$X7nm&*U3V}#q-m7#*5E2ZQ1hWfyKqqeQiEXvs~l9 zFVVf9lCZ)4^R#gtw;BBP*TfHc_NYxoF+{4rfVdJc(m5eFpg8x#b793#aG)g&{Pycq zf_BWSxNzNjx4o*XIJ~t6K@FAAsQVF3M@ektU6(7bQq|J$0K3U1SYAYfKmch=q0!LC zn|xw4An+p7E+(2HEi+qlXN`@C&Bcw1w~emfng;XjyplGLFswIiUQrM4jC|jMb^iBm ztL?kZ25*{PwcXaAX1l#FISKt;Dg*u_dw)RzCEx1@AHVp(3}S!S-aN01Hx6D-&{DRB zUwCb7s$$AM2LXt&GP!``5w}KXk!i2*m#r4pn$+`+PFw>UH!t+gdXc?RKh1mgNiX;Tn%D>pliUOWDP|& zBEg*)`|9dOmVB>anRff{aYP8&bU3QV-(;vG&lg<&vf11q0WY1cHL^TJ{)%Z-MA^zc zge~M8qjemfP~#AnhOj%(?o;khN37r?=6Md*I9b~z>g1t=ErymHB`Cc=lkxPaIklMp zz-B>hmpmCV`Ngjed#_x0LJ26H0_E$S`HO@!3Vt|#M1A`$+-uF$Ug?c1s~@~L(be?c z3tEkoj0CrKgB*f&C!ek9f8-o3#R01ubEkrTNc2Mj67lE~lN>O__X4FYc%Ebe;fsDN};Iaw~O4#|W_wWcE=5N5^b<$GPabnMN@XYNm4!0{5{ ztfL6-YS+Fa=(hJ6UbLXg5Vs^zr^Q!G{%JLF;#P<0?r$zD70>q@Y#Pxjy1u`EM!50* zs&Y1LiPRf-o!=z%KD&S_D;|lD%k(_^Ev$BmFghF1|JnzMag=zn%3T_lBbJg{zuxPW zBUWs#lfhpT;7y66TKY0((9HPq>C*-QT!?sM@yk9`FB};dCiXf$FT-@xvir2r*PByvY_xCjgQgINrhLk`j4{8z+otD} z(cCPV9{RAq!?juCnzA|0#7)|v+4HDqU4Os08sg5_y5*z+;lK9oE&o%#$RvlI(8h4tI>hN`!9Ys zZx(p%^P9?+)z#G}UF%px@Lm$@yQdg|g)@G9U{vxApVG|(&W(<%Cb31MmHQT3qhVY= znRkUBwKS|JMLZAO!K}1=MIT~H!)bAD*b-C4f|ym4rY(JveWW)?U*MU2)Tu5T@&1#? zA&hp6`K6=ExwyBMH8MkiW(MeC8^D)U?VfJdOwhl;Pi$x0ll#(u%3O#^wDM)#!%MO)*@>2QGP)rZCLT^!zFQl3}4+Ai3j5zk41|TfzDqp zUB0Gf)0-{N!(n06DDXdSp7;8iZ&<(nA*&&k_~ZNi)^eL=J*co65iL9`C~f`wml@vH zjs%REG4FI=Q{RdZ0JyL_7?H`Y#n{n!b?oi}*&ZBMF{O0pYOUsUmP6DJ{F9nKhPc;T zcT)?N1TwXUB$|uGmo3F$rw@N&#vXp}9pCd;Ve|u0DMFSLeThuZMjzB`&_I^!(4HP5 z(~4{O>7TXBV=BS4SI`KEWiYohh*kGDjjenB6?T$6BZXfHJ)XFVB|94n9{eGhyvFTW z^PEi5u~R46ASDwIM7<8*E{AGYB%cQPgV7k|(iAW@k#W$bJ$vqkM_#z#yzz>wf4va% zFs)})5elxeH;)0l)DvV_DSh91{>1u4lLC}MJIWciJ0{eH!yyyw-ANm2p4RqTV-9_d zYc_;mI-*6nMM%u6`znxHvTEhB-p?%GW_r}XjAOjD!v24;OAcPEqe`Rfig&3s)02cc z2eM3ulR2kU>UBOM7-f0F%RzKufO@Vw!DSSknS1Fy)X@w(P_QQ_7hjzJ`divMH-wAR z(|D4vh^l18QulccrouZA!?=CmDor6)BJOeCyQbXXfH0hWZx6D0u&2+h&=26Qksq>` zgjO~MN|A{ts|#1r?CSUUP~cO${D9uMEykTXjdr|}+2U8im%p&cmo;3JC*xsxK~k31 zF2G|qEtkY6LHrON=)GW87?^w0Fq4cn}9nQ=#c!oyisiJil10DZ22>D zUvJMqm(0kBi1F?Fjj2K$ldl~+crfAq?ki=JnFJK}4bja`d~i4A!C%jTnGy~(ROG}} ze{dz?m+?-EFyAPSPGEdp%#=)ezwu@9NZa>8A6Q-tv{~K1-1R!_%fJe?itDuEa*rv> zhMJqNa`3R49@Xab$&-<$?M+`M4b^DX^WcIB=TAc3;6p0`9L2b=B^y}_LJbOo#f(iP z+QzT=>K59n%NXXOFw&+Y{>$z8#PNs220e!&87e+uh$5Jt$hG95I6;l5H5Z&tXxnN} zNIJ4E>#27OhyX!E2a>DosOO<+yrXi8uDb?aeuCha>^4#yCeP`eJt&hpT&DeJS`f?X zFLG7&|2vCTUJL-}6RJZNXHQ+!cW+rSgrZXMo^zsW>@QV%_8_Ete3q=M^de(~xGEV6 z#T%L70L2w+FWt|cX)3|8q91~+)$ni+@-W3Q2GH?Y|If!f$(`M3qbV~ElA}dB3ls#Y zC2f9xwiHI~{>AYg4pgMbCzQy*T;^FVJ6Pw7tHsbQN(3X|Oh8otMRzbqKwgKXUeSw{*x6g7vlH60iR?_@cW?&0HK;%4Ha3l%jhiw!?li)G zT4T}&m#Js?thZZ$kJ+h+v4f_mU+sJTXUSu-dDFC_w6v_OTG*_i&45aHRdD?8hFA7G zcYdqqk|jwS2UTDX&>tkSDNqSK#v~s3vzVLE@|t~rwvZnsP8O-DqvW@QGIDP5WX?jKmSLT}Q4e}?=o9!pu@h#fP)X93}4kn-rV=M1TIqMm!0S#_Rz zaTQb4ykid2r;DfDlqt;=?<i&BF;RPGFje+kFXwi1%2*bgs?smJ+n|In{z)Ux{T1?s( zyRi|C!;rGo-)(%)<=uOoox3J&Nyxl@vnX_8V%OLge*}13LkWAW&aSYq_|MkOnly31 z-)2Xjg){e7D~`Ev!B(%vw!>{!JzZn`>}lOzH_tL*Gs0`?OSk-E-wrq5Ho@B3B`qUn z$S9_jvgkktbxZA;S|A6%r8-9O4sXF#g)gBGB+Qtf#bZhI8$}e>5pQW?7$dhi;aJi4 zvTldw{rdHj{bx)RXFh>_{p?4lf)g!zd+1|PlsN2xC*MRaC22zQakzi!+wGTOXF^*r zw6!B+b$iZTj-mTH?l7_4rI);(NDU_(Xk-rx=ptkB!u?*%PQEfYkDd@idR`4;!ttgk zL3UOHO^F2LiECee2H1WJxcnlN zA0R@}k?GGK=N9|xwYH7cM1xHZoHKxX^-lIK?(VV}E#2FZ}1Yx#o!WqTRz^I~R{=y+UcJF=z=hvl85I6NJbN)sSJur=2t)fL^68XI+7U2F5}0z>W;ABl1|4d< zuey8o@le z?z)ia+CjYAfx(w4%n zk@NIF{k&iq$wq<92h?3g@x$b|YuqJ~@y5$hQ>#hdWqDXuus%iyeO)ZXe;Ki|tXHDSfhH&b7E?s4W*Ws%0n1Sq zLMR_jTPY+&j4IkcjjRy>p!kNp?0RVT4>C!l>bRMnZapWgZ{q;jnGMbk#WaDz4R)%I z36HF|*Qr^v%Cn5D2eU?QApSM8J(M(x0AbPbvtbV%;CKtd3SGQS@AEv>nRE7D**u1p znleg7|H1e8ZRT&GcfW%3GMoW2V`+6vp&RKBMClPevK1iwP2J6ZX;u0vVh*eHyyu`fZgT#X+NKV$OZ!5VGBokfnj*~2v>>HTI1YmuvlLI$%r_WS6`oFewR>U3pOLgrQpW& zg}fu2``0=6&zU<{OZENb^?wCiU!+^PtcWV&%&O_>-il0TupI%Cj7AB%U{OH%@177} zP1-$K$}PP zr-45Qb7~c;FZ_Ve=s}IWp`(s);biC^MxOD z@f^RAO`r#@Zs3Gi^auh~GHoE1s=#1nD${ZOsJH%YX|`PhSU%X2fT(V2x8T}GhZe>2 zSr4LN`MbV!q2*if?i0lha3zGFHi~yq@64olmo3x}+MTZK-MY1Ur0seEkyo&Zzr(4!cwr($@Z3b z%I8jbeCyWX=VyA9|D26MfPN1TYnopj!@AI-7oGjto*;Vi!bZv-EqT&nCy2|KR$wUe z)w&HDOq`*|uem9AN+D>Ut4^a$@$gr{>8!5R1 zD`QB?g*kD0FJHb?@>-v|a(|)x_BzFWsVo@BYeq~@OblcL6yvy?pp`1gY5hIh98Hds zHL6e*rJbb5fUXjk@tdDl#8z1NjO)jUeJT5u;xpYkGFY$Qz?-s$5Z>*#`z6E;BfcY>Q$@aQ&Uep z&+PAAY~C&66=A4nxOdxC*9Ux=7glTAI)l6cKi@xU?Nj#Y(tCoD^e4oUMh?}IN7wlW zO#L~PjzajH04S6K!kr~tpZR8CZC!G9+i(N-NyCO!P4xM7ViyP0Qe@XM6S73khwNwr z{fdiuJfI4zk{)azS<+==n|dMo_2<%XUv$s8zi-`bCn)l}2UO;+tdsSIw;NUSgd(Kg zMh=H97>cSrC|%i?K=Lu$j{(n*-Yn;K`E7j+YG$A-lf#w`wyu1=E;RHG&r9tI`D5$+ zEy%%+joaU4#~n32>ma?FG=ql8*`qXCrM5rc%6vo%AF@Riiw^?E^%r-_*HIqTq;9m{ zGIr;#T~4eUgsz&}Z*EoJsByCE$%$)`I>GFUn#0w|VjSu9x_mS@O*kg*i}pH2+8!*_ z`3I5Xbzj^#@V5pyusK8kMfe;x40NL73~}4;32jp z3pL}bZ)pKK)p6sbi$%PFpPScwe~LY|6=u?m3S(`UJr9E-RtdAuypKg52n~tnv6w7C zxlOoprv|?efk@025N$(_n`JigG?Yarh;ZWNCI(m3szbnI5rl~C_0+LOjXJs7TbJwW zk}}LbOc|^(VNL4Ly2W)wb+cnflkmaMo=)vLd+&2Luq8=tJka z?IuqS;c32RHkm%Z({b8I(NZt>W2Wd+l0GRWc0T;nzyrHaoeF>47XcGLaNhK;t@1uC zwND#5p{?%V3KiPG_EW3gX!4*PK&+4ss(an78t6!<82k%Dzt|4B$CeJ86Oqb7Sn>JR zh)~IMIkAz^FF)P@cf~R8PfygnIREdpoQ4Q}T^9i-08ygi^%Oi(R$jWaWbfz(05l@; z5@dmN3nza3n_~C{0)B|C3MjOGuU?ZrECAMxM@rTHmEsch@3E}9&(~XTO<5!Vt+Fk=e-IX(b+=i=tEzCe4@E`Q zGuRZotqUcaV3&&b%w4DG@MW>r4KsP{YC=h49{vjI35*9v0O^D6HU#Ea$@1R~(rgVM;)N|Wj>KK?+)pYgmYzVVNJ0sV82U$ux8 z#T1^nRJ`yUwBgi)P#&f=AN8{i4YWGcB-vy~Ncu-tP#b)O5B2o<{bzkn-mm!|7a)4p zEp%s9J`1_)y2hR;>A5QGQoip!=OJb$|3xA>i%S9nU8~+^@-?v{La_$7P!$f47!g9C zf9Vyi(W*b8a>K9by#lHp;6HyW&M|Cc_0zEG$$FRZk`kgcK|exOT{XPxgqR;%@^|&4 z6LY+(Reke+|5iEX%e>d(3SWmbv9Uay%zI9fEB3? z7&Uz*>&0H$+X?jA%G!E0N(ugY>1FlbZ+*QTdX1M}^-m4`@3EJsF$xP(J6Z%S>J||S zET!_qgf~+!x+YMesVLC0AUi$nH-FO}8fnm26{V})^#Fh{*%wNw36BOZ6ed*_(@nmf z)dI4V5PN`zS4arEe-bvxhEe&vjA2ZGKK>CM(=haYsE;W9YFAl`it1g7M}{fuc$IiK zX>x3p-b4a!RXNnQ?Bqc2yiKiv<9@3BV+DDB;j3 z!l5AO>c%?e*_*M}n?m5r)u#WQ_m}n2M0~lbnSMxLw+)&h{cWSR-M7L>>f*)4H!>$< z^T^q6wtWuqif1K?4}L{eg*%=5`Lo@ZpQq2`KZV9!RiTJT>U*q!sYqkFt91XU8$*fV z2Z;@I9jCr}aZJEPhtfCFqKl9RDl5E>{FsZYb)W=wQ+n)QEkij5M8ROLW1eW4og~EMWJNzK=WDS#_)e!?bI@B z^6-O0LR1u)_I?oLm3B&bx~#K}wVBxp{SnOQKAu%S#<6$gED7|Wy*`%{*tG4qed}>& zyK!l6ZB~_HW-#jk1-+w#L;OBWA|t+}abfkBeuA>7ree}O#Qdh+6XsTNho5PEf+-A= zE!0}m1GGvRjeLFo#NFt8KJDJU4JBUGK+>x!;_JxFIJ9#w{|Xb*u|L}IOg2O zSjJ=kOV`IRg;!UkH}TC3i(gA?AX{LS0AYoKiQf8T6z&f^mk zTAw%-8+Xv?i+kG3Rsd@z1~I3AS|gPmztOe@ALuc5CtVibuSGCkjr;~G$xmLzZP4G% zs7Ews0oPZa>SAUh>i_^KJTMquEl|5`@`0qHM(3K)AJz!a4L)O|9aqJm7LzQ^UQT)G z=Oc$!eV8MCdG^BUC4<-==;_@URmZi?31ylsSt-!H}e#35qS{{3~7 z*`P`{>^f~5HF>-euw=oLCCJZ3k+FO}awwXZ#H1uqSn*xx2Ub8I;rGc|R`zjioF0it z?Hlx%l-RBS&Gqhn`}tE{KW-Rf>Q(Sp2tm}YckOP~$tt}@IThi?`kRJ#pQNX|xOwll zYLZFj8}@M0S7^LZuG9RFbB-f@S)XP7CG*?L0=(OEX1_?j)~a5}0bFX6PniE3-16c+ z_>N08Gc&Q~m`&7m_;wN9l584N^5$gZ&?cCP{*C9b_5St|hEkBtMci;I| zl;+EOd7Q~Xd&NbPdHcU{`nn1&P9G7aDh$CAnMGD<(}nzin4v>*pzz(%DIXwP3sR0M z&fH+r&1GzgSPy(W#9&iAft6v)#N=Pee=7~i@APL+SWawvr!Ee-31y>?T5=-az)A#C z8O~sw25Q0^6C{j!EE^dHds!|$3&Xi^nKQa-l9OM7Lm262-@jiQ?S$9Wkk9Ym<9e4g zH=o%iCerl)_rYF*m?@y25WB#mX-pSIT?vT=lwc)88hDy^ZcVr2*$t-K3fzc+!uy=K zL0Fe;>#`f|1CbNosM?%69IEC#y!Uw*+K|=|=K}icOL+)wO)E_-W=Ivx>()?}VIRQ| z>QZKE%V_LS=jNlC%6)Y!NZe!aMZ~ZsWnd08RD38j!Z%{B&9Oybq?TlcDnYecHG#`P z4iTe?iOl&H9-e=GdjZT+H%6krWfUVdkvRP^Y*takZJ4hT+kK_D=ICkN)^Q}tDjMNj zdv~-<{broN{2Go2vXY_X94XTXqH|Z;at?|}O;GNs7QRV0hX9A2u=)j~$uUpqboJP$PRE6HY34d>=Q%>6kZ z%y&bXxb*NZdGkYfMSTBz&l~FLJs6ds;_vcs0-xbmEoQJyg-FKhVTO2!D&su>yI09uTI1VX4pc2KCd%*Z4=L30atb!OSDI#gJM+A8d5~rL z#M|#@9L{;)mqEI%vIMTSY@&cd27}smBY+)0Lx0nVZcKcHBFoJxED=1J`XFme3TXhl zihbKkbI}>S!bnL%h~oXOPM3#RP;LA>Q7tcF0BxkI0v}fm^tqMdJ)YKYMiD)H!qwBA z=9FNICXN@>XjxO^%mf~;($Y@v>Ut0 zc`bb^|NIOz?x-BVju+_Ofe7I`6(+nV>8n4xcv`JnOM5My`@rF*b{A(-{XlA}Yjhs{ zCZh{x3VX*~gXhmQ7);h*Lv;ri0iW^YeOSpKVD=1uv{uKo`puf98ZSCU@57L@a97Y5 zJgaYmur-)}YRc59Z)kMHe(FY!ZkXOR0+f=cG83~xC4k>!26$AUo9w`5Q|~&Nc2G_b zV{bT2CmPgHC^FRvR7wDxgu2*UPi#Nb#lax}#hR?1tu?n-=CHA%zVRtt(8%a8PG4g8 z#IulcMiFxYM>7+?-e_SM={fTP(KeBPs99AZ_VW{;eJsh>y8L-1_5{qKe*G>u|Lg(= zEV2L`)3=FDJX$qcC%bf*1+ooHjn{6evFNqmIEQ9>!*05ZA3B9u9ZC|jcvddABEo1XR7K}aiq5s=V-LsfPw}=-LNVP?HIZ$o zMUp~)zSe~s0}a&fi^YV1^8eS~naAavwr%{j6X8L&CSqcUvX)^gWz0|#rBo`EY9uO4 zyF`|mh9Oa*QMR-SEmB(0BqSk~l*&?(5~XN=zgP3j`#zud-}m2l{(0oN-Tjv9Io(Oo_-zVaqTBF^SB1Ut?ih7HA=U0!gUe#ye zU7_3YUN*K7H`6N#ckko6VF@%Xd2{-JdA|)H=QsfF=bfqEKZfzbUTz~ZGjs3qX;Y@$ zB##%ln%3_hV3@7Q64CaU?)}-Mll3gPUx|Ca-_VuZct=q65o?T2^yxM&)Q={9xdfqN z58@$|inNw`qR8C--X$U(?_oX zjiFPC^X(1<;7}Qv{ahwJ6qcA(ir#Xwhd{%?fT-YaV>$PUgQ;&H=b(T9OL$x#*(#EJ zU~~Ni=hAQ+AgJ2RGh{dk8PK7Ggt;KvLgc{oPsm%dwCCay_Xn5mZvQ!hRdPEsGr-nL z|G@a#ZOp2HWILuVP)ODRNxW!E;8Zz>1E(lMBo(wgU2;jI#t;qPVBGyk(z;~|&#I9P z_eJQz@;pQFMC*bktIEXbF4?ll#{r>+iZW{BvAn>#rw8(>Z$Q8GN**}A7DMBqX5m9w z%Q#LLy^8};TGcuxJ3Ctp;H0_GqfU2R=`ULuPa^zUw%D`n#XL;-Eh1vro!WUjMf($4 zlD|S^IaDa-VPwenvgrF-Z)y3sLNcNA%s{rz{>=uUV_=rHTB^=tF6f`Gs93*WBC8o< zWW#GO*r2@J}j0#;eR8~GOH8a2i zTHI(X;Aw_1_=t6peg8a=e&<&}5bN`qN+bd*$K8mLBYD)lfKkO;&%^8+tlXRi&sdqCf3l7@;vB6S7s zNKGE~QD56W@WEfgV#wPc!@W@`Rj|B?6B|m*gN351+#4KUxcs75#S#V1>K6CAk8^F& zvSsfRpX-&W@oz~Krgm5eDo*UOhWae&)Rloo9bV^8^!mE+@W40@@=Otc1=>lTbB8~- zt&t0A5<(bp-=tA|vt>TGy)Q-*ugGP6B(f5>rWzSh@*$atx8o7gF}_#+W?w&7MWVz= zW;fWaY{UEL*#=sg!Xg7n3-iV;bo(g5pMlzK*ycRKyQsiaR1%AH>cP0Uz~jf3DhLGA zGd3(N>){PrBZ@!sN`+rO;#iiS4@8orWx1*HP2qnFh;)+>W;!wxdGW2*_nAVS{|pi5 zM4GvPtwiyTgPu%a2GsDtE0BHCqSJQeN`QLF-S{^ggQIu1PxjonG2-?*H@EBS(@4et zqGCS^MM7ppXF*(yu*z#1{QMrc>H43eQ%`UCOx@w9A$KR+nlO*nrD1Nnj9m_p_QD2XO(a)dY=rVB)TP6SxT*YQWx z$rLWdI~+37r;=bVl0 z50hzK$@>VN?ogpJ-dQ4f<;y{xUB{#JKW1nDBRyYWZk z@`tBcF(P9Uesm0t%)5waSNDoJm~gkIowy*xU!o6NwH`}XX`NdD{MqA-jrXQ8V4`*_ zdOo;SKR-YD(K5QukGe0Xa~BVH51bi~6%b^%I4bLD__RJL-Eu1r3qxVDPSf%}wzd^B zZzS?}KL~bN>^X8|yi=_6lW!hrl^Qh2`iMID^Z6x1B-mS}KauaXtFRxDf8@?r6%{w* zru1xhFk-iwO33WEfZncAbT;o$&AIwL=^<#?A7}!3n(HKP< zEO1nUuvB$37bP4cu&&Xs-ct23XCuzrF`m#XZHPf zO}$tXccdY_F{kEf5%L&dw!?J5Ffn}y$X?8YQ7bz->j5>zn0RChQi0Wnm*Gi)x7h#z zJk8+`pnR(=y-JZ|SSw6f!M*ea`w@Q+jpHRPaao>gVetjqiNl*D9 zLqYAQ1M`VN^AnM3(Z3yY32cSaviqPvefrFxW4wB7L`;U7IB$8`r2+ZSpGS?VO*E_L zd~TxV2y43r;vrnJQOWlSOS#^0->xWDj#)lOfFd%{Oj)WYzVsHYcZ&TtzuL}JBt~~o zWI9zplw%&|YmO-a8c152b`|*BHD#5%w%5PqW`~X)E5!jMSk7|dn!Q$`C3bn-*;UO6 zot<4cO^EIdNyCF1Xlkq*zjnFaZG#F3*Rpx^-w9znWiyrKB8!gtyoSz;E0ZG>1ciWfFSqYVpuf!x_YdGwSK`nk|HU)FI@wgo_1eM=R3;(-t%hb zb9fB1HW1WX&H)bYUKG+MOz44*!&n`V`)3q=W)$L0qLjJqA-kseSg7y$6io+>UD_w2 zdi<+hwyo47S+>b&>&bu7nHx&mRDT~|)|W#62D_yx2A#X?^DpMwhpAPTJH3gO;lz5D zz*NNwDoLr!%h1Mb-Fo#&#etdxAiG<2z29u9jFqEBaF+Gmp(C$k36oe9YrVBJ$sv6j zRyxl9Noe~8;0(V9`6q;nqOFDxb#q-GA{ZwzIH#1U$0bvI+H__39vUt^ zbyU{T?#jKN{ER$vi{|l?uhitTTxv}eCUqEjJRu*nCG$P;tzhLvROZolrm zsx3N7=o@AuX9&Fm^Us)`0~DoJbocATzg(R)Ue_=&b$nMBu9r2kn^anEh;Ky=i7-oQ zlJtMa@kWN{;gYoOQAYC$O)v{4o{gvC+-s;Ptcu9^_aKhmK`-FWPoIBOvy*Mi{u?p1eplAnZUahFI1*|yU z_tM-QPuB-aBQTJR%0698g!YcqklrDn1 zfo2%{47@T6xf!i-RQeO{Mtz#>P_aF9KL#hFX$YbrUS4z@iq=+uFUa1ArjAVunkAMa zPo?zkJtd!Z)sa_R82&_v^OIY`21Q<*D(@MQmgcp$teRXPX5Uf3KMZq*pzIXBK1z)m zMYmSFsMFEa@1*XiNWx2ZbLvmC!BM(99tc z_aM2Y^sw|2;ju7c)Qq)aqLfetm>n3H{<7z0G4+V#mF!8X@7L51vu<~N1Ad|p$3m(m z2INWn{QZ5vEhy{?PRJb0>?$+rIGpZV|DF2{b& zhclJaR3rd=uh8iKg$SoOA>FG@NCIk;xj&(8K{W(O-E&U}(?OuS3fnrmm-W&YC}V~I z21Ps1=NZy9!$8qmA(y#I9=dv)Kx#QhgaMUV87cubP^^oWdEh>f2ZnnIW1c=0ALlG} z(i-1BXdu zPp&2jRN|!FV|_CIplbr|<}cY~cW(|8I8s_^%_mHWR#o@-yc-1~Z}3;3;9h>-AINt{ zd^4}zYuwPG66&{Z*SagThe;e&XGT&ZiY|1DPr51&2ylrKj1?+|00K*d`L*;MI@ngo z8eyscX~n=i+*4fs7$GN@d)RUN_Qt-hBZM0rU=@*S+EWDnVmc!*5R+GXJCvs@P4Ue~ z57&Gmv_k=sr%%O{wz5xqPlD#(>p2>{)E9A^#4TP+RmJ9<+iClCoOEbwMY>2DBDATZ z9n|C^7mCKbo7sY%lt*pUXSwr-(vtx_q8)R?d=MRUhjXp?35yD2?5=B}lSuZ-8R5y<>X5FdxfwbH5Ue9);(5|0O_Dj+NInsS?Mr->(^U`O)XuTWkm5otajpJ*E-KH z<3PiYuN*sLx*9u^Sz zTsP=yYQSp0z@rxf>|V<`KbYOi^4=89)q!4}>zn6!F0wFu;1TlW{R}FNTF1Qk19R$k zKKv3*k}Ukviu+3VuhYx?QKCfhub;FRYZ>kzJ9pz53M>_}>hWG1f@bX7+$k#Zm9(na zFW2!b4|7geKP$_JmMJH{Nxk-RnUPTdoo7mswha!f_8KOZnJWjyW^{VYnc%7Xog?u( zH$(lHACU@x{dnffN37$s5Qit7@!HrJRSs1p%yaw{luWK@0x@V*jwWm?*(COmNSrJ! zsE$s}wDdt0;asvM303!xRX?1sZWDRA3U&%c#>VzI7K|mX)6pIQ0JRC!s}*Tf0{%hq zy8!gDs+^cqatS4B*u{%Aq;Q3RF-nnD=S*QjCl&NAQLhVUDa26Vzr7>t$R)0HaEKif z{#}B|&*9&e`_F}e{AtOO_chU%3x5gqx`^SBPE_P!)@k{I`d;-;w<*@bI6iXn@>Wp9 z*tQh+)=)dUCptFees2i|+T_mPGney6s**sz%;cK#j10Tn1h8~Of6EARt0{`<42d8| zx5KzBrRtRZ!%a6RAD?GIY2QV-!V`r_Wo>FRX5{VL zoNAW;bjjU2+oy978kw3#lJ88>&{zw$Qb-@irl>%VhZx~#s%(Dt$ncgMYIT{BBQK(D zjE1MI0hcLrua<+}u|w=rW&U}vq!gp0YPB-H<}FaAs>~u!+(_6Zn9s4(A|oR1Cd5b$ z9=v+Znp5r$JZJEp8QMq!9}yfXoxaBqK`s99cXKP#x{`PU;rWpWGYd*OlZrP7UbBSf zFu)RuyiO^=?O}lH%wK?JFZL;;DpP^;M-Hw{UU>iBy~p&#IcLkco{(M0vPcAQ$K6L? zFFfBsE2mA}GiiG(>1_eBPPoCTlO|OrY|z%zDu zq&_Uyt;?%vW?FGKUn%hzGn$Wsi=e|J3p9nNn7?4GFT=*Vro#NOHG99dczT`+={=(ai|A&M88s@Lv~?rX!CPr0%3ToRcaQq$ z!Q#s0^IljddtOWb^L_60yrM|_`>k&-~dN*=G%?z3Q7!?~^NFKSoe<{7#xxJ$=-}tZq z-zQyoh1gPuBL%Q3Ko1bj1*uf3;tJi4hBBZA+_YZ^7^E&Xl4 zTeVMr4L|jRYb?o{o!yLKqedB5*SSC2teP95Zsz*JIY_|{4rC2?XX;qJ1GFpwIG^NP z2g%&?>s!x*ZfrEIwp#0kn_O(+<#mpVZfYNI_DXqqK=vt}!qQ`AFD3yEQn0bLJvH=D zxXsB69+!4;36Z${Y-Gd6mDE+eiZN_-JzTvL)AzHn>8+c*SUdg~fDefjAM*JYb*^zu zyzL*L`Aq<&!BKO@Arx!P^X}YWdd(_J3Jd>b5aF$?*@q^%5#&1_sPCAKH#sOLjHFI< zUSIS%{A)%=1~tI?`FT)UmX}~1S^3Wa1!-+tU+lsn&vjQ@e^a8~{A|Ov1*g}fc_hLS zC}U2w%zoVpnZWJXG=#J5gU^)0AWqWeluTTtTJ3pQk4VQ4bhZRjxz0uGlk=JoMEEl3 z>g;Gjy%ZG}XMmc~fB}fY1Z|bfw-YBWBEzh5htZxq^H@+&IES+sV#ha@ArOgiEpuPO zK5k{L+VAfGziWEBYQ^cIwo5Z8kf8_a0XX|smDbNWLyye79-@y;3%I zu5Xl7RSR_wcd@4~u1kL5kRd-IczeMW%O59Ao_uOpJ$gVLU0n`~nZvW#SF_zsj5*;w z=)6*)K;-klW_pOwb(SuTFzOLO;h$0+;`yL!&g|I<*w_&$mii+W2_xhec>EEc{Cc!R z(%yA_cBRfwlNYzH{j@GhOS5CA`jOv$n^`xzW{uV?6&0iUv@apdBTtTS&yq2I3%gRp zP|XJ(2y1^oe7F#8NFuI6@oL|HZ<18z5nbt1RF_m9%P*KZZCZ|@=J5--vLIi7do_Dp z{2?L5-Bg~Qw$`&wWtn|2t(0O1k^{#ll)H<=Vfb({RfjICN7K;)6tGqTLPFMtfB7IL z9m_4;Wj-VIqYq`PQovXwPT_c$L?B|aH3d=KWR$%5$pzoyFJBfs#2>SSP z60HK7V7)#+UXpm{Rq+AWNdqFQ+&soL#=a5FYsjymz;g`bvK^8D#McG}UJkNwIXU3! zpYJ{#MZWwF)u(gpn=vCt+TIyCY?xIbMT1#X(NdL5zJbaXQGlQ91UndY3JSl-DX&@Q zq_ywQ{yNUU%Ici^T2PnD9SfAIwKxv++|xZXR^*jWomc9#moYHR6>@0=vG&6}$S%@p zLV;mfYU9Hn0zyL_1KrmQwAj^BDFOwOv_yv&3-bMo9FnHZpKqF{(T3&5x#=aIl>x>H z*Z`}4t=Q`xnrQM`dmpE%-CAB$ss;(k4AbZ&a9~)>B;#Jo%4(aQIZS~C? z{XaihHp32%G;mXRNXJ{R+SC#`T2zB8NlW84U&h$4YF53=GENz)OQFE}TovpXb>_^? z81Kg1dC>>~{5S1-h)>Z^BKi`WIJy-I%&*iJ$A=@U+0t^u1)CCatiwm-rhh(EZX18P zq4eOPLr+PzkgqEYcWXFQ8EEG4cut<$h5=*9e@@o9bq$gpG-z%P9HCMh5)Un8+Q+T8 zyxTb$$h=D3&G<28{E=}UZzl{tRhr}&ipgCpmug4Hu*aLDOFk1XqGMtn)Xre(1UsbM zYe*g-B{lnXQ><d%3@EDzPNz)fZ5dvRuS zdj()p58U4uUsFI1qAkMCu@xGT;Lj&23BM^_ooy;M_m3~An27a@~eYrtv?c((%8*f`6MeYMol0%R06YtyX#l%RgF^0*70; zlJr(N2%Q7ch>NwNcRgF1DL?^yXLZGQi;fC z2~|2#Q>8ydK00>%_yuku#ATS4UiW&Sj5n$9TrM!hWshC-aqK`zU@`~510gH5DkK$nwZRKm_$j>H|9ITqKsBw~S8 znA>w4S?B${JY)2R$`F!k_6&)vGVh=#2G$~+94$1i&m(G68TbiKF$`co9xs`HjHXb) zT4VS)c7-p=`vpj)6WOo_N(GD6S;)@tIu_gRP10C6DkM*U`y$_^hd;DnblzW;+w3^h z7I=J)fRq+1*`uWS9jpu!$aIk6gsY`12QA}f6_u2XOiWHp8tsx&S6N*>jbsvDH@2}w zoc`2z+GG&iMZhHaW=8`fqcE!X4gxcGf4xHKiu%GKJ5S$$k}Co=Ah`>}PiD=n#gSFd z=6^G|PrrVlO}`B3UUn6i`xpP|!vO|@kbvVE#uNrT+ts95_RDMWwhO-Tn#L}VI|uvF zL#wE)9B4S)iQQ6ZSLD3lwD7LIfpX&EQgU7dmW}D z6s18dq29vdU0BVNu!EHki)cn49ynmopcv;bFHhcSB{8vQ4U^jHYijNmsZdlUQhLML$UeQn2c)r4`O~;De8y=j?d&y$W{&E0ugOSSDc3qxjDB%) zA%`(syEYcZ7s-f4?aP0E_T{-1v#sR%vnC;gv)Q_*XJ?0^1zv)}*zihch)nZG|azJKw5 zeqN$6G_E_T`R6Zp%3F8W6#xAERrBwQ|L5nAd;b3d{;yAC7)rzndwZs`gKM Ki(?n9_xUg9^6Opz literal 294991 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�!OK67 zj8K7W%j>W}vOHRqEyxX{LuWU)n2+nP^d5`G!$@0yXMLL2Y5AfO3n@y3E(DngoIGC;=A^@N7Nqe9QVO?YIlFr2?Odj|41;gS3RJ zCL04_!FlhBF$L}BG(fm3H9Yh6{UMt9vi(}q_bri??IHQkBG(NR=;HzkFKfD91|Dvt zGS9F*6~7N7pVcc+ob4 zFQxRDa_D0VM*dJZKZhXJEV}<8@ms0Y)w zKMo6Q0tp7N6gINbK&%Nj0C?`6xcEtsD~^|FX#aGnqkw@0FbotFMU=Nj?l*XAFl(P+sC`1zrc@~L^Qiq6t^05)Tk?ItKmpR{HquSfs+h6?n98^_rsGdJSwdS>-BRWAy zji0GxTIkkjz|ozrtGib}Iy!1#rs{OeO~?#+iJM7zdbGT@s|2b+eu<&+1-O{Q1Vd!c2fgADBFn&na$c_zGZf^L1j|3 zEMc@KoxylqqDPGae8kx>2&OHR_VB}v3p5wu#BbZL`LK~3TDuIVUcl9bh>=)t6a0^PJ z#;wFZwW0M&>N6{i#aCH0Zt@#Hecv7xbxuk#oEOcRbVos#>9R8a1Lv>8*DoB#v1BDL z9PY^X6hJ)z!yr3D^~po~)n=v1;P{Ji)8pgb@YMz5u+4i=74A z1mC$ZxCCF@BEl9KlWL?`X0wI08!+;)Kr|lQ!zRMj&TDkAUE>L|MJK<;eaH5tDD}9! z>bv=_^hv;4)67L`z{~iykk=ub!s6_x1)ROXZ@KtWv*6Kj*p#h6{~g^AFYf>hfD~HS zBiNUk*}u{Q?g2fRmhO5|iXkYk`6z?&F5Q8yTyO;%Zhy5frY{h#4C}@2dWu(be~cZx9k9sHj= z7ln?lHz%$(jf6{AZZ;Uj*2F74iBJ~cM%0Dmh3Ef)Fif(+!kLx=0s_t2*damiA;`Xx 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

    fyZ8`RiL#c)`uc^T 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 diff --git a/docs/images/nf-core-rnaseq_metro_map_grey.svg b/docs/images/nf-core-rnaseq_metro_map_grey.svg index 7b96ca318..7b55ae7e5 100644 --- a/docs/images/nf-core-rnaseq_metro_map_grey.svg +++ b/docs/images/nf-core-rnaseq_metro_map_grey.svg @@ -10,8 +10,8 @@ inkscape:version="1.3.2 (1:1.3.2+202311252150+091e20ef0f)" sodipodi:docname="nf-core-rnaseq_metro_map_grey.svg" inkscape:export-filename="nf-core-rnaseq_metro_map_grey.png" - inkscape:export-xdpi="90" - inkscape:export-ydpi="90" + inkscape:export-xdpi="89" + inkscape:export-ydpi="89" xml:space="preserve" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" @@ -2782,9 +2782,9 @@ borderopacity="1.0" inkscape:pageopacity="0.0" inkscape:pageshadow="2" - inkscape:zoom="0.28500001" - inkscape:cx="1854.3859" - inkscape:cy="503.50875" + inkscape:zoom="0.57000002" + inkscape:cx="1418.421" + inkscape:cy="572.807" inkscape:document-units="mm" inkscape:current-layer="layer1" showgrid="false" @@ -4402,22 +4402,22 @@ xml:space="preserve" style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:7.05556px;line-height:1.25;font-family:'DejaVu Sans Mono';-inkscape-font-specification:'DejaVu Sans Mono Bold';letter-spacing:0px;stroke-width:0.264583" x="488.79016" - y="-40.910248" + y="-40.523674" id="text101">SAMtoolsSAMtools(sort, index, stats)BAIBAI22STARSTARSalmonSalmonHISAT2HISAT2RSEMRSEMUMI-toolsdedupTSVUMI-toolsdedupTSV(PCA only) + id="tspan84">(PCA only) From fd5ba8c50e668c686351c675a272492dbdda2ac6 Mon Sep 17 00:00:00 2001 From: maxulysse Date: Mon, 19 Aug 2024 19:06:39 +0200 Subject: [PATCH 538/634] update CHANGELOG --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index c7b25a6d9..02baf01d6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -109,6 +109,7 @@ Thank you to everyone else that has contributed by reporting bugs, enhancements - [PR #1345](https://github.com/nf-core/rnaseq/pull/1345) - Fix preprocessing call - [PR #1350](https://github.com/nf-core/rnaseq/pull/1350) - Reduce resource usage for sort process in bedtools/genomecov - [PR #1353](https://github.com/nf-core/rnaseq/pull/1353) - Correct conditional for salmon indexing in preprocessing workflow +- [PR #1355](https://github.com/nf-core/rnaseq/pull/1355) - Fix curves on subway map ### Parameters From bd83a81554f68f98c0b9f5c7e1cc52250ffd2f6d Mon Sep 17 00:00:00 2001 From: Maxime U Garcia Date: Mon, 19 Aug 2024 19:18:07 +0200 Subject: [PATCH 539/634] Update CHANGELOG.md --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 02baf01d6..7531eea43 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -109,7 +109,7 @@ Thank you to everyone else that has contributed by reporting bugs, enhancements - [PR #1345](https://github.com/nf-core/rnaseq/pull/1345) - Fix preprocessing call - [PR #1350](https://github.com/nf-core/rnaseq/pull/1350) - Reduce resource usage for sort process in bedtools/genomecov - [PR #1353](https://github.com/nf-core/rnaseq/pull/1353) - Correct conditional for salmon indexing in preprocessing workflow -- [PR #1355](https://github.com/nf-core/rnaseq/pull/1355) - Fix curves on subway map +- [PR #1355](https://github.com/nf-core/rnaseq/pull/1355) - Make all curves on subway map better looking, and all lines now have the same width ### Parameters From cbbe64a408cc71aa7d0b8db93fae0a5bea615cca Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Tue, 20 Aug 2024 09:33:34 +0100 Subject: [PATCH 540/634] Bump multiqc --- modules.json | 2 +- modules/nf-core/multiqc/environment.yml | 2 +- modules/nf-core/multiqc/main.nf | 4 ++-- modules/nf-core/multiqc/tests/main.nf.test.snap | 8 ++++---- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/modules.json b/modules.json index fb80ac3a7..93774f80e 100644 --- a/modules.json +++ b/modules.json @@ -92,7 +92,7 @@ }, "multiqc": { "branch": "master", - "git_sha": "a9d770c76d4d8c1e570c897c22ac3b8497a1e5b7", + "git_sha": "878d2adbb911aa6e15c06a4d1e93d01bd6f26c74", "installed_by": ["modules"] }, "picard/markduplicates": { diff --git a/modules/nf-core/multiqc/environment.yml b/modules/nf-core/multiqc/environment.yml index 2121492d6..0eb9d9c90 100644 --- a/modules/nf-core/multiqc/environment.yml +++ b/modules/nf-core/multiqc/environment.yml @@ -4,4 +4,4 @@ channels: - bioconda - defaults dependencies: - - bioconda::multiqc=1.23 + - bioconda::multiqc=1.24 diff --git a/modules/nf-core/multiqc/main.nf b/modules/nf-core/multiqc/main.nf index 5dfc75102..9790c23cf 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.23--pyhdfd78af_0' : - 'biocontainers/multiqc:1.23--pyhdfd78af_0' }" + 'https://depot.galaxyproject.org/singularity/multiqc:1.24--pyhdfd78af_0' : + 'biocontainers/multiqc:1.24--pyhdfd78af_0' }" input: path multiqc_files, stageAs: "?/*" diff --git a/modules/nf-core/multiqc/tests/main.nf.test.snap b/modules/nf-core/multiqc/tests/main.nf.test.snap index 45e95e5de..ef35f6d57 100644 --- a/modules/nf-core/multiqc/tests/main.nf.test.snap +++ b/modules/nf-core/multiqc/tests/main.nf.test.snap @@ -2,7 +2,7 @@ "multiqc_versions_single": { "content": [ [ - "versions.yml:md5,87904cd321df21fac35d18f0fc01bb19" + "versions.yml:md5,0c5c5c2a79011c26b34b0b0e80b7c8e2" ] ], "meta": { @@ -17,7 +17,7 @@ "multiqc_report.html", "multiqc_data", "multiqc_plots", - "versions.yml:md5,87904cd321df21fac35d18f0fc01bb19" + "versions.yml:md5,0c5c5c2a79011c26b34b0b0e80b7c8e2" ] ], "meta": { @@ -29,7 +29,7 @@ "multiqc_versions_config": { "content": [ [ - "versions.yml:md5,87904cd321df21fac35d18f0fc01bb19" + "versions.yml:md5,0c5c5c2a79011c26b34b0b0e80b7c8e2" ] ], "meta": { @@ -38,4 +38,4 @@ }, "timestamp": "2024-07-10T11:26:56.709849369" } -} \ No newline at end of file +} From 03daccda42e45d7cb7fd20d32898d6df047c0615 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Tue, 20 Aug 2024 09:52:41 +0100 Subject: [PATCH 541/634] Unset multiqc prefix for testing --- tests/nextflow.config | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tests/nextflow.config b/tests/nextflow.config index 6bf8f2929..f28a117d2 100644 --- a/tests/nextflow.config +++ b/tests/nextflow.config @@ -27,6 +27,9 @@ process { memory = 3.GB time = 2.h } + withName: 'MULTIQC' { + ext.prefix = null + } } // Impose same minimum Nextflow version as the pipeline for testing From 10a73f51a8cd5d6e3024ae9b6730cda5e7a8fdcf Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Tue, 20 Aug 2024 10:31:53 +0100 Subject: [PATCH 542/634] Update workflows/rnaseq/main.nf Co-authored-by: Adam Talbot <12817534+adamrtalbot@users.noreply.github.com> --- workflows/rnaseq/main.nf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/workflows/rnaseq/main.nf b/workflows/rnaseq/main.nf index 48547a4f3..0b702e641 100755 --- a/workflows/rnaseq/main.nf +++ b/workflows/rnaseq/main.nf @@ -71,7 +71,7 @@ include { FASTQ_QC_TRIM_FILTER_SETSTRANDEDNESS } from '../../subwor // Header files for MultiQC ch_pca_header_multiqc = file("$projectDir/workflows/rnaseq/assets/multiqc/deseq2_pca_header.txt", checkIfExists: true) -sample_status_header_multiqc = file("$projectDir/workflows/rnaseq/assets/multiqc/sample_status_header.txt", checkIfExists: true) +sample_status_header_multiqc = file("$projectDir/workflows/rnaseq/assets/multiqc/sample_status_header.txt", checkIfExists: true) ch_clustering_header_multiqc = file("$projectDir/workflows/rnaseq/assets/multiqc/deseq2_clustering_header.txt", checkIfExists: true) ch_biotypes_header_multiqc = file("$projectDir/workflows/rnaseq/assets/multiqc/biotypes_header.txt", checkIfExists: true) ch_dummy_file = ch_pca_header_multiqc From 3088bde94632f48bcf74eec5a6122fbbf257060f Mon Sep 17 00:00:00 2001 From: maxulysse Date: Tue, 20 Aug 2024 14:56:20 +0200 Subject: [PATCH 543/634] clean up stub tests --- tests/default.nf.test | 18 +----------------- 1 file changed, 1 insertion(+), 17 deletions(-) diff --git a/tests/default.nf.test b/tests/default.nf.test index 9c4058785..fb4fc2f29 100644 --- a/tests/default.nf.test +++ b/tests/default.nf.test @@ -47,23 +47,7 @@ nextflow_pipeline { then { assertAll( { assert workflow.success }, - { assert snapshot( - UTILS.removeNextflowVersion("$outputDir/pipeline_info/nf_core_rnaseq_software_mqc_versions.yml"), - // path("${params.outdir}/custom/out/genome_gfp.fasta"), - // path("${params.outdir}/custom/out/genome_gfp.gtf"), - // path("${params.outdir}/salmon/salmon.merged.transcript_counts.tsv"), - // path("${params.outdir}/star_salmon/bigwig/RAP1_IAA_30M_REP1.forward.bigWig"), - // path("${params.outdir}/star_salmon/bigwig/RAP1_IAA_30M_REP1.reverse.bigWig"), - // path("${params.outdir}/star_salmon/bigwig/RAP1_UNINDUCED_REP1.forward.bigWig"), - // path("${params.outdir}/star_salmon/bigwig/RAP1_UNINDUCED_REP1.reverse.bigWig"), - // path("${params.outdir}/star_salmon/bigwig/RAP1_UNINDUCED_REP2.forward.bigWig"), - // path("${params.outdir}/star_salmon/bigwig/RAP1_UNINDUCED_REP2.reverse.bigWig"), - // path("${params.outdir}/star_salmon/bigwig/WT_REP1.forward.bigWig"), - // path("${params.outdir}/star_salmon/bigwig/WT_REP1.reverse.bigWig"), - // path("${params.outdir}/star_salmon/bigwig/WT_REP2.forward.bigWig"), - // path("${params.outdir}/star_salmon/bigwig/WT_REP2.reverse.bigWig") - ).match() - } + { assert snapshot(UTILS.removeNextflowVersion("$outputDir/pipeline_info/nf_core_rnaseq_software_mqc_versions.yml")).match() } ) } } From 93bb601eaa3dadc50c88032beedc7a79d33d8c48 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Tue, 20 Aug 2024 15:21:34 +0100 Subject: [PATCH 544/634] Fix anchor issue in multiqc --- workflows/rnaseq/assets/multiqc/multiqc_config.yml | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/workflows/rnaseq/assets/multiqc/multiqc_config.yml b/workflows/rnaseq/assets/multiqc/multiqc_config.yml index eaaf1dca8..75367a073 100644 --- a/workflows/rnaseq/assets/multiqc/multiqc_config.yml +++ b/workflows/rnaseq/assets/multiqc/multiqc_config.yml @@ -11,13 +11,13 @@ report_section_order: fail_strand_check-module: order: 5001 # Preprocessing and pre-alignment QC - fastqc_raw: + fastqc: order: 4004 cutadapt: order: 4003 fastp: order: 4003 - fastqc_trimmed: + fastqc-1: order: 4002 # Alignment star: @@ -99,7 +99,6 @@ run_modules: module_order: - fastqc: name: "FastQC (raw)" - anchor: "fastqc_raw" info: "This section of the report shows FastQC results before adapter trimming." path_filters: - "*_raw*fastqc.zip" @@ -107,7 +106,6 @@ module_order: - fastp - fastqc: name: "FastQC (trimmed)" - anchor: "fastqc_trimmed" info: "This section of the report shows FastQC results after adapter trimming." path_filters: - "*_trimmed*fastqc.zip" From 9a00dbeb9ae8942a439469f2baf7f52ea007b82d Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Tue, 20 Aug 2024 15:27:01 +0100 Subject: [PATCH 545/634] Update CHANGELOG.md --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 035a5f808..dad3ea168 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -111,6 +111,7 @@ Thank you to everyone else that has contributed by reporting bugs, enhancements - [PR #1353](https://github.com/nf-core/rnaseq/pull/1353) - Correct conditional for salmon indexing in preprocessing workflow - [PR #1352](https://github.com/nf-core/rnaseq/pull/1352) - Assorted fixes to MultiQC usage - [PR #1355](https://github.com/nf-core/rnaseq/pull/1355) - Make all curves on subway map better looking, and all lines now have the same width +- [PR #1357](https://github.com/nf-core/rnaseq/pull/1357) - Fix anchor issue in multiqc ### Parameters From 56539ac7a8a033df1580fcaf0862e030f075fd38 Mon Sep 17 00:00:00 2001 From: maxulysse Date: Tue, 20 Aug 2024 17:49:15 +0200 Subject: [PATCH 546/634] update CHANGELOG --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index dad3ea168..7e06350e8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -102,6 +102,7 @@ Thank you to everyone else that has contributed by reporting bugs, enhancements - [PR #1330](https://github.com/nf-core/rnaseq/pull/1330) - Update all nf-core/modules and subworkflows - [PR #1331](https://github.com/nf-core/rnaseq/pull/1331) - Adding stubs for local modules - [PR #1334](https://github.com/nf-core/rnaseq/pull/1334) - Update all nf-core/modules and subworkflows with stubs +- [PR #1335](https://github.com/nf-core/rnaseq/pull/1335) - Adding stubs at all levels - [PR #1336](https://github.com/nf-core/rnaseq/pull/1334) - Use nf-core/setup-nf-test to install nf-test from cache during CI/CD - [PR #1340](https://github.com/nf-core/rnaseq/pull/1340) - Remove out-of-date Azure specific guidance - [PR #1341](https://github.com/nf-core/rnaseq/pull/1341) - Add rename in the MultiQC report for samples without techreps @@ -137,6 +138,7 @@ Thank you to everyone else that has contributed by reporting bugs, enhancements | `samtools` | 1.17 | 1.20 | | `sortmerna` | 4.3.4 | 4.3.6 | | `umi_tools` | 1.14 | 1.15 | +| `untar` | 1.3 | 1.34 | > **NB:** Dependency has been **updated** if both old and new version information is present. > From 7c189dececed995a7c215615104e9661511b6da2 Mon Sep 17 00:00:00 2001 From: maxulysse Date: Tue, 20 Aug 2024 18:55:48 +0200 Subject: [PATCH 547/634] Animate subway map --- docs/images/nf-core-rnaseq_metro_map_grey.svg | 5650 +++++++++-------- 1 file changed, 2893 insertions(+), 2757 deletions(-) diff --git a/docs/images/nf-core-rnaseq_metro_map_grey.svg b/docs/images/nf-core-rnaseq_metro_map_grey.svg index 7b55ae7e5..c49117c96 100644 --- a/docs/images/nf-core-rnaseq_metro_map_grey.svg +++ b/docs/images/nf-core-rnaseq_metro_map_grey.svg @@ -2782,9 +2782,9 @@ borderopacity="1.0" inkscape:pageopacity="0.0" inkscape:pageshadow="2" - inkscape:zoom="0.57000002" - inkscape:cx="1418.421" - inkscape:cy="572.807" + inkscape:zoom="0.40305088" + inkscape:cx="851.00918" + inkscape:cy="857.21188" inkscape:document-units="mm" inkscape:current-layer="layer1" showgrid="false" @@ -2823,2796 +2823,2932 @@ inkscape:groupmode="layer" id="layer1" transform="translate(64.401787,107.17563)">1catfastqSTAGE2. Genome alignment & quantification3. Pseudo-alignment & quantification1. Pre-processing4. Post-processing3SalmonKallistoMultiQCTSV5RSeQC(multiple modules)Preseq4SAMtools(sort, index, stats)BEDtoolsgenomecovbedGraphToBigWig GermlineSarek BIGWIGHTMLHTML ExomedupRadar GermlineSarek BAMBAI ExomeTSV GermlineSarek 1catfastqSTAGE2. Genome alignment & quantification3. Pseudo-alignment & quantification1. Pre-processing4. Post-processing3SalmonKallistoMultiQC5RSeQC(multiple modules)Preseq4SAMtools(sort, index, stats)BEDtoolsgenomecovbedGraphToBigWigStringTiepicardMarkDuplicatesdupRadarMultiQCPseudo-aligner: Salmon, Quantification: SalmonAligner: HISAT2, Quantification: NoneQualimaprnaseqDESeq2(PCA only) + id="tspan145" + x="169.25996" + y="120.60331" + style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:5.64444px;font-family:'Maven Pro';-inkscape-font-specification:'Maven Pro Bold';text-align:start;text-anchor:start;fill:#000000;stroke:none;stroke-width:0.264583;stroke-opacity:1">Aligner: STAR, Quantification: Salmon (default)Pseudo-aligner: Kallisto, Quantification: KallistoAligner: STAR, Quantification: RSEMMETHODLicense:STAGE2. Genome alignment & quantification3. Pseudo-alignment & quantification5. Final QC1. Pre-processing4. Post-processingcatfastqTrimGalore!SortMeRNAFastQCinferstrandedness(fq, Salmon)BBSplitUMI-toolsextractFastQCFastP12STARSalmonHISAT2RSEMUMI-toolsdedupQualimaprnaseqDESeq2(PCA only) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From a68cb69a2a789b98ea42ea1c44da42bf5b770173 Mon Sep 17 00:00:00 2001 From: maxulysse Date: Tue, 20 Aug 2024 19:07:28 +0200 Subject: [PATCH 548/634] update snapshot --- tests/default.nf.test.snap | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/default.nf.test.snap b/tests/default.nf.test.snap index 7371218e8..7ea1dbd4c 100644 --- a/tests/default.nf.test.snap +++ b/tests/default.nf.test.snap @@ -14,7 +14,7 @@ "{BBMAP_BBSPLIT={bbmap=39.01}, BEDTOOLS_GENOMECOV_FW={bedtools=2.31.1}, CAT_FASTQ={cat=8.3}, CUSTOM_CATADDITIONALFASTA={python=3.9.5}, CUSTOM_GETCHROMSIZES={getchromsizes=1.2}, CUSTOM_TX2GENE={python=3.9.5}, DESEQ2_QC_PSEUDO={r-base=4.0.3, bioconductor-deseq2=1.28.0}, DESEQ2_QC_STAR_SALMON={r-base=4.0.3, bioconductor-deseq2=1.28.0}, DUPRADAR={bioconductor-dupradar=1.32.0}, FASTQC={fastqc=0.12.1}, FQ_SUBSAMPLE={fq=0.9.1 (2022-02-22)}, GTF2BED={perl=5.26.2}, GTF_FILTER={python=3.9.5}, GUNZIP_ADDITIONAL_FASTA={gunzip=1.1}, GUNZIP_GTF={gunzip=1.1}, MULTIQC_CUSTOM_BIOTYPE={python=3.9.5}, PICARD_MARKDUPLICATES={picard=3.1.1}, QUALIMAP_RNASEQ={qualimap=2.3}, RSEQC_BAMSTAT={rseqc=5.0.2}, RSEQC_INFEREXPERIMENT={rseqc=5.0.2}, RSEQC_INNERDISTANCE={rseqc=5.0.2}, RSEQC_JUNCTIONANNOTATION={rseqc=5.0.2}, RSEQC_JUNCTIONSATURATION={rseqc=5.0.2}, RSEQC_READDISTRIBUTION={rseqc=5.0.2}, RSEQC_READDUPLICATION={rseqc=5.0.2}, SALMON_QUANT={salmon=1.10.1}, SAMTOOLS_FLAGSTAT={samtools=1.2}, SAMTOOLS_IDXSTATS={samtools=1.2}, SAMTOOLS_INDEX={samtools=1.2}, SAMTOOLS_SORT={samtools=1.2}, SAMTOOLS_STATS={samtools=1.2}, SE_GENE={bioconductor-summarizedexperiment=1.32.0}, STAR_ALIGN={star=2.7.10a, samtools=1.18, gawk=5.1.0}, STAR_GENOMEGENERATE={star=2.7.10a, samtools=1.18, gawk=5.1.0}, STRINGTIE_STRINGTIE={stringtie=2.2.1}, SUBREAD_FEATURECOUNTS={subread=2.0.1}, TRIMGALORE={trimgalore=0.6.7, cutadapt=3.4}, TXIMETA_TXIMPORT={bioconductor-tximeta=1.20.1}, UCSC_BEDCLIP={ucsc=377}, UCSC_BEDGRAPHTOBIGWIG={ucsc=445}, UNTAR_SALMON_INDEX={untar=1.34}, Workflow={nf-core/rnaseq=v3.15.0dev}}", "genome_gfp.fasta:md5,e23e302af63736a199985a169fdac055", "genome_gfp.gtf:md5,c98b12c302f15731bfc36bcf297cfe28", - "salmon.merged.transcript_counts.tsv:md5,ff0f5be09ca7a322672c0074ba35da17", + "salmon.merged.transcript_counts.tsv:md5,2023d27cee50a4044aed3274bf07e55f", "RAP1_IAA_30M_REP1.forward.bigWig:md5,0abafd7a9f9035469c003fd3dabd73e8", "RAP1_IAA_30M_REP1.reverse.bigWig:md5,0f1e9ac71fc0b99785f06ecb860ef00e", "RAP1_UNINDUCED_REP1.forward.bigWig:md5,09e8d65e21ac92e9a3b78afe3acdf28b", From 1b34d1e158a3d85758398c105509455d4bd10b57 Mon Sep 17 00:00:00 2001 From: maxulysse Date: Wed, 21 Aug 2024 10:18:38 +0200 Subject: [PATCH 549/634] update snapshot --- tests/default.nf.test.snap | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/default.nf.test.snap b/tests/default.nf.test.snap index 7ea1dbd4c..7371218e8 100644 --- a/tests/default.nf.test.snap +++ b/tests/default.nf.test.snap @@ -14,7 +14,7 @@ "{BBMAP_BBSPLIT={bbmap=39.01}, BEDTOOLS_GENOMECOV_FW={bedtools=2.31.1}, CAT_FASTQ={cat=8.3}, CUSTOM_CATADDITIONALFASTA={python=3.9.5}, CUSTOM_GETCHROMSIZES={getchromsizes=1.2}, CUSTOM_TX2GENE={python=3.9.5}, DESEQ2_QC_PSEUDO={r-base=4.0.3, bioconductor-deseq2=1.28.0}, DESEQ2_QC_STAR_SALMON={r-base=4.0.3, bioconductor-deseq2=1.28.0}, DUPRADAR={bioconductor-dupradar=1.32.0}, FASTQC={fastqc=0.12.1}, FQ_SUBSAMPLE={fq=0.9.1 (2022-02-22)}, GTF2BED={perl=5.26.2}, GTF_FILTER={python=3.9.5}, GUNZIP_ADDITIONAL_FASTA={gunzip=1.1}, GUNZIP_GTF={gunzip=1.1}, MULTIQC_CUSTOM_BIOTYPE={python=3.9.5}, PICARD_MARKDUPLICATES={picard=3.1.1}, QUALIMAP_RNASEQ={qualimap=2.3}, RSEQC_BAMSTAT={rseqc=5.0.2}, RSEQC_INFEREXPERIMENT={rseqc=5.0.2}, RSEQC_INNERDISTANCE={rseqc=5.0.2}, RSEQC_JUNCTIONANNOTATION={rseqc=5.0.2}, RSEQC_JUNCTIONSATURATION={rseqc=5.0.2}, RSEQC_READDISTRIBUTION={rseqc=5.0.2}, RSEQC_READDUPLICATION={rseqc=5.0.2}, SALMON_QUANT={salmon=1.10.1}, SAMTOOLS_FLAGSTAT={samtools=1.2}, SAMTOOLS_IDXSTATS={samtools=1.2}, SAMTOOLS_INDEX={samtools=1.2}, SAMTOOLS_SORT={samtools=1.2}, SAMTOOLS_STATS={samtools=1.2}, SE_GENE={bioconductor-summarizedexperiment=1.32.0}, STAR_ALIGN={star=2.7.10a, samtools=1.18, gawk=5.1.0}, STAR_GENOMEGENERATE={star=2.7.10a, samtools=1.18, gawk=5.1.0}, STRINGTIE_STRINGTIE={stringtie=2.2.1}, SUBREAD_FEATURECOUNTS={subread=2.0.1}, TRIMGALORE={trimgalore=0.6.7, cutadapt=3.4}, TXIMETA_TXIMPORT={bioconductor-tximeta=1.20.1}, UCSC_BEDCLIP={ucsc=377}, UCSC_BEDGRAPHTOBIGWIG={ucsc=445}, UNTAR_SALMON_INDEX={untar=1.34}, Workflow={nf-core/rnaseq=v3.15.0dev}}", "genome_gfp.fasta:md5,e23e302af63736a199985a169fdac055", "genome_gfp.gtf:md5,c98b12c302f15731bfc36bcf297cfe28", - "salmon.merged.transcript_counts.tsv:md5,2023d27cee50a4044aed3274bf07e55f", + "salmon.merged.transcript_counts.tsv:md5,ff0f5be09ca7a322672c0074ba35da17", "RAP1_IAA_30M_REP1.forward.bigWig:md5,0abafd7a9f9035469c003fd3dabd73e8", "RAP1_IAA_30M_REP1.reverse.bigWig:md5,0f1e9ac71fc0b99785f06ecb860ef00e", "RAP1_UNINDUCED_REP1.forward.bigWig:md5,09e8d65e21ac92e9a3b78afe3acdf28b", From 402829080a088ac4b2b8d429e01aeabdd094e136 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Wed, 21 Aug 2024 11:02:32 +0100 Subject: [PATCH 550/634] Update test_full.config to restore a static URI for megatests --- conf/test_full.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conf/test_full.config b/conf/test_full.config index 49ce794d3..d63a1f676 100644 --- a/conf/test_full.config +++ b/conf/test_full.config @@ -15,7 +15,7 @@ params { config_profile_description = 'Full test dataset to check pipeline function' // Parameters for full-size test - input = params.pipelines_testdata_base_path + 'samplesheet/v3.10/samplesheet_full.csv' + input = 'https://raw.githubusercontent.com/nf-core/test-datasets/rnaseq/samplesheet/v3.10/samplesheet_full.csv' genome = 'GRCh37' pseudo_aligner = 'salmon' } From d5da4bc7b4303be051e7a33e4ff41ca2a5113558 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Wed, 21 Aug 2024 11:03:40 +0100 Subject: [PATCH 551/634] Update CHANGELOG.md --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7e06350e8..5294f57b3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -113,6 +113,7 @@ Thank you to everyone else that has contributed by reporting bugs, enhancements - [PR #1352](https://github.com/nf-core/rnaseq/pull/1352) - Assorted fixes to MultiQC usage - [PR #1355](https://github.com/nf-core/rnaseq/pull/1355) - Make all curves on subway map better looking, and all lines now have the same width - [PR #1357](https://github.com/nf-core/rnaseq/pull/1357) - Fix anchor issue in multiqc +- [PR #1358](https://github.com/nf-core/rnaseq/pull/1358) - Update test_full.config to restore a static URI for megatests ### Parameters From bef25b6f9a364cd19f8ecd0e5890e655e33f0cfa Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Wed, 21 Aug 2024 11:17:44 +0100 Subject: [PATCH 552/634] use permalink --- conf/test_full.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conf/test_full.config b/conf/test_full.config index d63a1f676..320b8156f 100644 --- a/conf/test_full.config +++ b/conf/test_full.config @@ -15,7 +15,7 @@ params { config_profile_description = 'Full test dataset to check pipeline function' // Parameters for full-size test - input = 'https://raw.githubusercontent.com/nf-core/test-datasets/rnaseq/samplesheet/v3.10/samplesheet_full.csv' + input = 'https://raw.githubusercontent.com/nf-core/test-datasets/626c8fab639062eade4b10747e919341cbf9b41a/samplesheet/v3.10/samplesheet_full.csv' genome = 'GRCh37' pseudo_aligner = 'salmon' } From 065f5ad5ad2f82567bdbd6692a2eeb5402cf2a98 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Wed, 21 Aug 2024 16:09:00 +0100 Subject: [PATCH 553/634] Same for minimal tests --- conf/test.config | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/conf/test.config b/conf/test.config index 84e3bdc8a..a82437c3e 100644 --- a/conf/test.config +++ b/conf/test.config @@ -20,19 +20,19 @@ params { max_time = '6.h' // Input data - input = params.pipelines_testdata_base_path + 'samplesheet/v3.10/samplesheet_test.csv' + input = 'https://raw.githubusercontent.com/nf-core/test-datasets/626c8fab639062eade4b10747e919341cbf9b41a/reference/samplesheet/v3.10/samplesheet_test.csv' // Genome references - fasta = params.pipelines_testdata_base_path + 'reference/genome.fasta' - gtf = params.pipelines_testdata_base_path + 'reference/genes_with_empty_tid.gtf.gz' - gff = params.pipelines_testdata_base_path + 'reference/genes.gff.gz' - transcript_fasta = params.pipelines_testdata_base_path + 'reference/transcriptome.fasta' - additional_fasta = params.pipelines_testdata_base_path + 'reference/gfp.fa.gz' - - bbsplit_fasta_list = params.pipelines_testdata_base_path + 'reference/bbsplit_fasta_list.txt' - hisat2_index = params.pipelines_testdata_base_path + 'reference/hisat2.tar.gz' - salmon_index = params.pipelines_testdata_base_path + 'reference/salmon.tar.gz' - rsem_index = params.pipelines_testdata_base_path + 'reference/rsem.tar.gz' + fasta = 'https://raw.githubusercontent.com/nf-core/test-datasets/626c8fab639062eade4b10747e919341cbf9b41a/reference/reference/genome.fasta' + gtf = 'https://raw.githubusercontent.com/nf-core/test-datasets/626c8fab639062eade4b10747e919341cbf9b41a/reference/reference/genes_with_empty_tid.gtf.gz' + gff = 'https://raw.githubusercontent.com/nf-core/test-datasets/626c8fab639062eade4b10747e919341cbf9b41a/reference/reference/genes.gff.gz' + transcript_fasta = 'https://raw.githubusercontent.com/nf-core/test-datasets/626c8fab639062eade4b10747e919341cbf9b41a/reference/reference/transcriptome.fasta' + additional_fasta = 'https://raw.githubusercontent.com/nf-core/test-datasets/626c8fab639062eade4b10747e919341cbf9b41a/reference/reference/gfp.fa.gz' + + bbsplit_fasta_list = 'https://raw.githubusercontent.com/nf-core/test-datasets/626c8fab639062eade4b10747e919341cbf9b41a/reference/reference/bbsplit_fasta_list.txt' + hisat2_index = 'https://raw.githubusercontent.com/nf-core/test-datasets/626c8fab639062eade4b10747e919341cbf9b41a/reference/reference/hisat2.tar.gz' + salmon_index = 'https://raw.githubusercontent.com/nf-core/test-datasets/626c8fab639062eade4b10747e919341cbf9b41a/reference/reference/salmon.tar.gz' + rsem_index = 'https://raw.githubusercontent.com/nf-core/test-datasets/626c8fab639062eade4b10747e919341cbf9b41a/reference/reference/rsem.tar.gz' // Other parameters skip_bbsplit = false From 04b147bd488a35d40290db0965dbf7c606648e5d Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Wed, 21 Aug 2024 16:10:41 +0100 Subject: [PATCH 554/634] Update CHANGELOG.md --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5294f57b3..a45025384 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -113,7 +113,7 @@ Thank you to everyone else that has contributed by reporting bugs, enhancements - [PR #1352](https://github.com/nf-core/rnaseq/pull/1352) - Assorted fixes to MultiQC usage - [PR #1355](https://github.com/nf-core/rnaseq/pull/1355) - Make all curves on subway map better looking, and all lines now have the same width - [PR #1357](https://github.com/nf-core/rnaseq/pull/1357) - Fix anchor issue in multiqc -- [PR #1358](https://github.com/nf-core/rnaseq/pull/1358) - Update test_full.config to restore a static URI for megatests +- [PR #1358](https://github.com/nf-core/rnaseq/pull/1358) - Update test profiles to restore a static URI for megatests ### Parameters From 8d11ea19f118bb984eadbbdb1ccf2adfc52d7536 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Wed, 21 Aug 2024 16:16:36 +0100 Subject: [PATCH 555/634] fix double reference --- conf/test.config | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/conf/test.config b/conf/test.config index a82437c3e..d5b9b87c3 100644 --- a/conf/test.config +++ b/conf/test.config @@ -23,16 +23,16 @@ params { input = 'https://raw.githubusercontent.com/nf-core/test-datasets/626c8fab639062eade4b10747e919341cbf9b41a/reference/samplesheet/v3.10/samplesheet_test.csv' // Genome references - fasta = 'https://raw.githubusercontent.com/nf-core/test-datasets/626c8fab639062eade4b10747e919341cbf9b41a/reference/reference/genome.fasta' - gtf = 'https://raw.githubusercontent.com/nf-core/test-datasets/626c8fab639062eade4b10747e919341cbf9b41a/reference/reference/genes_with_empty_tid.gtf.gz' - gff = 'https://raw.githubusercontent.com/nf-core/test-datasets/626c8fab639062eade4b10747e919341cbf9b41a/reference/reference/genes.gff.gz' - transcript_fasta = 'https://raw.githubusercontent.com/nf-core/test-datasets/626c8fab639062eade4b10747e919341cbf9b41a/reference/reference/transcriptome.fasta' - additional_fasta = 'https://raw.githubusercontent.com/nf-core/test-datasets/626c8fab639062eade4b10747e919341cbf9b41a/reference/reference/gfp.fa.gz' - - bbsplit_fasta_list = 'https://raw.githubusercontent.com/nf-core/test-datasets/626c8fab639062eade4b10747e919341cbf9b41a/reference/reference/bbsplit_fasta_list.txt' - hisat2_index = 'https://raw.githubusercontent.com/nf-core/test-datasets/626c8fab639062eade4b10747e919341cbf9b41a/reference/reference/hisat2.tar.gz' - salmon_index = 'https://raw.githubusercontent.com/nf-core/test-datasets/626c8fab639062eade4b10747e919341cbf9b41a/reference/reference/salmon.tar.gz' - rsem_index = 'https://raw.githubusercontent.com/nf-core/test-datasets/626c8fab639062eade4b10747e919341cbf9b41a/reference/reference/rsem.tar.gz' + fasta = 'https://raw.githubusercontent.com/nf-core/test-datasets/626c8fab639062eade4b10747e919341cbf9b41a/reference/genome.fasta' + gtf = 'https://raw.githubusercontent.com/nf-core/test-datasets/626c8fab639062eade4b10747e919341cbf9b41a/reference/genes_with_empty_tid.gtf.gz' + gff = 'https://raw.githubusercontent.com/nf-core/test-datasets/626c8fab639062eade4b10747e919341cbf9b41a/reference/genes.gff.gz' + transcript_fasta = 'https://raw.githubusercontent.com/nf-core/test-datasets/626c8fab639062eade4b10747e919341cbf9b41a/reference/transcriptome.fasta' + additional_fasta = 'https://raw.githubusercontent.com/nf-core/test-datasets/626c8fab639062eade4b10747e919341cbf9b41a/reference/gfp.fa.gz' + + bbsplit_fasta_list = 'https://raw.githubusercontent.com/nf-core/test-datasets/626c8fab639062eade4b10747e919341cbf9b41a/reference/bbsplit_fasta_list.txt' + hisat2_index = 'https://raw.githubusercontent.com/nf-core/test-datasets/626c8fab639062eade4b10747e919341cbf9b41a/reference/hisat2.tar.gz' + salmon_index = 'https://raw.githubusercontent.com/nf-core/test-datasets/626c8fab639062eade4b10747e919341cbf9b41a/reference/salmon.tar.gz' + rsem_index = 'https://raw.githubusercontent.com/nf-core/test-datasets/626c8fab639062eade4b10747e919341cbf9b41a/reference/rsem.tar.gz' // Other parameters skip_bbsplit = false From eff73a971d21db6280c7ca002c79dc73af4a7df1 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Wed, 21 Aug 2024 16:21:43 +0100 Subject: [PATCH 556/634] Fix input --- conf/test.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conf/test.config b/conf/test.config index d5b9b87c3..f7a9fca91 100644 --- a/conf/test.config +++ b/conf/test.config @@ -20,7 +20,7 @@ params { max_time = '6.h' // Input data - input = 'https://raw.githubusercontent.com/nf-core/test-datasets/626c8fab639062eade4b10747e919341cbf9b41a/reference/samplesheet/v3.10/samplesheet_test.csv' + input = 'https://raw.githubusercontent.com/nf-core/test-datasets/626c8fab639062eade4b10747e919341cbf9b41a/samplesheet/v3.10/samplesheet_test.csv' // Genome references fasta = 'https://raw.githubusercontent.com/nf-core/test-datasets/626c8fab639062eade4b10747e919341cbf9b41a/reference/genome.fasta' From 446422753e6fc94a179a255129a2e49e090f6358 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Wed, 21 Aug 2024 17:15:50 +0100 Subject: [PATCH 557/634] Revert multiqc workaround due to fix --- modules.json | 4 ++-- modules/nf-core/multiqc/environment.yml | 2 +- modules/nf-core/multiqc/main.nf | 4 ++-- modules/nf-core/multiqc/tests/main.nf.test.snap | 6 +++--- workflows/rnaseq/assets/multiqc/multiqc_config.yml | 6 ++++-- 5 files changed, 12 insertions(+), 10 deletions(-) diff --git a/modules.json b/modules.json index a01086438..93933d0ff 100644 --- a/modules.json +++ b/modules.json @@ -91,8 +91,8 @@ "installed_by": ["modules", "quantify_pseudo_alignment"] }, "multiqc": { - "branch": "master", - "git_sha": "878d2adbb911aa6e15c06a4d1e93d01bd6f26c74", + "branch": "bump-multiqc", + "git_sha": "717aa5a675ab1726a6374724847c4e6e1a52386e", "installed_by": ["modules"] }, "picard/markduplicates": { diff --git a/modules/nf-core/multiqc/environment.yml b/modules/nf-core/multiqc/environment.yml index 0eb9d9c90..a31464c97 100644 --- a/modules/nf-core/multiqc/environment.yml +++ b/modules/nf-core/multiqc/environment.yml @@ -4,4 +4,4 @@ channels: - bioconda - defaults dependencies: - - bioconda::multiqc=1.24 + - bioconda::multiqc=1.24.1 diff --git a/modules/nf-core/multiqc/main.nf b/modules/nf-core/multiqc/main.nf index 9790c23cf..d5365800d 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--pyhdfd78af_0' : - 'biocontainers/multiqc:1.24--pyhdfd78af_0' }" + 'https://depot.galaxyproject.org/singularity/multiqc:1.24.1--pyhdfd78af_0' : + 'biocontainers/multiqc:1.24.1--pyhdfd78af_0' }" input: path multiqc_files, stageAs: "?/*" diff --git a/modules/nf-core/multiqc/tests/main.nf.test.snap b/modules/nf-core/multiqc/tests/main.nf.test.snap index ef35f6d57..83fa080c8 100644 --- a/modules/nf-core/multiqc/tests/main.nf.test.snap +++ b/modules/nf-core/multiqc/tests/main.nf.test.snap @@ -2,7 +2,7 @@ "multiqc_versions_single": { "content": [ [ - "versions.yml:md5,0c5c5c2a79011c26b34b0b0e80b7c8e2" + "versions.yml:md5,6eb13f3b11bbcbfc98ad3166420ff760" ] ], "meta": { @@ -17,7 +17,7 @@ "multiqc_report.html", "multiqc_data", "multiqc_plots", - "versions.yml:md5,0c5c5c2a79011c26b34b0b0e80b7c8e2" + "versions.yml:md5,6eb13f3b11bbcbfc98ad3166420ff760" ] ], "meta": { @@ -29,7 +29,7 @@ "multiqc_versions_config": { "content": [ [ - "versions.yml:md5,0c5c5c2a79011c26b34b0b0e80b7c8e2" + "versions.yml:md5,6eb13f3b11bbcbfc98ad3166420ff760" ] ], "meta": { diff --git a/workflows/rnaseq/assets/multiqc/multiqc_config.yml b/workflows/rnaseq/assets/multiqc/multiqc_config.yml index 75367a073..49d3939e2 100644 --- a/workflows/rnaseq/assets/multiqc/multiqc_config.yml +++ b/workflows/rnaseq/assets/multiqc/multiqc_config.yml @@ -11,13 +11,13 @@ report_section_order: fail_strand_check-module: order: 5001 # Preprocessing and pre-alignment QC - fastqc: + fastqc_raw: order: 4004 cutadapt: order: 4003 fastp: order: 4003 - fastqc-1: + fastqc_trimmed: order: 4002 # Alignment star: @@ -98,6 +98,7 @@ run_modules: module_order: - fastqc: + anchor: "fastqc_raw" name: "FastQC (raw)" info: "This section of the report shows FastQC results before adapter trimming." path_filters: @@ -105,6 +106,7 @@ module_order: - cutadapt - fastp - fastqc: + anchor: "fastqc_trimmed" name: "FastQC (trimmed)" info: "This section of the report shows FastQC results after adapter trimming." path_filters: From 9130eeabb4d86096ef7d3255a837398750f83398 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Wed, 21 Aug 2024 17:19:00 +0100 Subject: [PATCH 558/634] Update changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index a45025384..8aad42051 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -114,6 +114,7 @@ Thank you to everyone else that has contributed by reporting bugs, enhancements - [PR #1355](https://github.com/nf-core/rnaseq/pull/1355) - Make all curves on subway map better looking, and all lines now have the same width - [PR #1357](https://github.com/nf-core/rnaseq/pull/1357) - Fix anchor issue in multiqc - [PR #1358](https://github.com/nf-core/rnaseq/pull/1358) - Update test profiles to restore a static URI for megatests +- [PR #1359](https://github.com/nf-core/rnaseq/pull/1359) - Update MultiQC and revert workaround ### Parameters From 27d80918770cf144ef340c98d5c3b80b0c1e42e8 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Wed, 21 Aug 2024 17:19:52 +0100 Subject: [PATCH 559/634] Update changelog --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8aad42051..15922dcac 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -114,7 +114,7 @@ Thank you to everyone else that has contributed by reporting bugs, enhancements - [PR #1355](https://github.com/nf-core/rnaseq/pull/1355) - Make all curves on subway map better looking, and all lines now have the same width - [PR #1357](https://github.com/nf-core/rnaseq/pull/1357) - Fix anchor issue in multiqc - [PR #1358](https://github.com/nf-core/rnaseq/pull/1358) - Update test profiles to restore a static URI for megatests -- [PR #1359](https://github.com/nf-core/rnaseq/pull/1359) - Update MultiQC and revert workaround +- [PR #1359](https://github.com/nf-core/rnaseq/pull/1359) - Update MultiQC and revert unnecessary workaround ### Parameters From 852dae10d21f745c61cbf36227ba0b31e7b45af7 Mon Sep 17 00:00:00 2001 From: maxulysse Date: Wed, 21 Aug 2024 19:50:05 +0200 Subject: [PATCH 560/634] snapshot all files contents by default --- tests/default.nf.test | 895 ++++++++++++++++++++++++++++++++++++- tests/default.nf.test.snap | 90 +++- 2 files changed, 956 insertions(+), 29 deletions(-) diff --git a/tests/default.nf.test b/tests/default.nf.test index fb4fc2f29..9ad92c2be 100644 --- a/tests/default.nf.test +++ b/tests/default.nf.test @@ -15,10 +15,457 @@ nextflow_pipeline { assertAll( { assert workflow.success }, { assert snapshot( - UTILS.removeNextflowVersion("$outputDir/pipeline_info/nf_core_rnaseq_software_mqc_versions.yml"), + path("${params.outdir}/bbsplit/RAP1_IAA_30M_REP1.stats.txt"), + path("${params.outdir}/bbsplit/RAP1_UNINDUCED_REP1.stats.txt"), + path("${params.outdir}/bbsplit/RAP1_UNINDUCED_REP2.stats.txt"), + path("${params.outdir}/bbsplit/WT_REP1.stats.txt"), + path("${params.outdir}/bbsplit/WT_REP2.stats.txt") + ).match("bbsplit") }, + { assert snapshot( path("${params.outdir}/custom/out/genome_gfp.fasta"), - path("${params.outdir}/custom/out/genome_gfp.gtf"), + path("${params.outdir}/custom/out/genome_gfp.gtf") + ).match("references") }, + { assert snapshot( + path("${params.outdir}/fastqc/raw/RAP1_IAA_30M_REP1_raw_1_fastqc.html"), + path("${params.outdir}/fastqc/raw/RAP1_IAA_30M_REP1_raw_1_fastqc.zip"), + path("${params.outdir}/fastqc/raw/RAP1_IAA_30M_REP1_raw_2_fastqc.html"), + path("${params.outdir}/fastqc/raw/RAP1_IAA_30M_REP1_raw_2_fastqc.zip"), + path("${params.outdir}/fastqc/raw/RAP1_UNINDUCED_REP1_raw_fastqc.html"), + path("${params.outdir}/fastqc/raw/RAP1_UNINDUCED_REP1_raw_fastqc.zip"), + path("${params.outdir}/fastqc/raw/RAP1_UNINDUCED_REP2_raw_fastqc.html"), + path("${params.outdir}/fastqc/raw/RAP1_UNINDUCED_REP2_raw_fastqc.zip"), + path("${params.outdir}/fastqc/raw/WT_REP1_raw_1_fastqc.html"), + path("${params.outdir}/fastqc/raw/WT_REP1_raw_1_fastqc.zip"), + path("${params.outdir}/fastqc/raw/WT_REP1_raw_2_fastqc.html"), + path("${params.outdir}/fastqc/raw/WT_REP1_raw_2_fastqc.zip"), + path("${params.outdir}/fastqc/raw/WT_REP2_raw_1_fastqc.html"), + path("${params.outdir}/fastqc/raw/WT_REP2_raw_1_fastqc.zip"), + path("${params.outdir}/fastqc/raw/WT_REP2_raw_2_fastqc.html"), + path("${params.outdir}/fastqc/raw/WT_REP2_raw_2_fastqc.zip") + ).match("fastqc/raw") }, + { assert snapshot( + path("${params.outdir}/fastqc/trim/RAP1_IAA_30M_REP1_trimmed_1_val_1_fastqc.html"), + path("${params.outdir}/fastqc/trim/RAP1_IAA_30M_REP1_trimmed_1_val_1_fastqc.zip"), + path("${params.outdir}/fastqc/trim/RAP1_IAA_30M_REP1_trimmed_2_val_2_fastqc.html"), + path("${params.outdir}/fastqc/trim/RAP1_IAA_30M_REP1_trimmed_2_val_2_fastqc.zip"), + path("${params.outdir}/fastqc/trim/RAP1_UNINDUCED_REP1_trimmed_trimmed_fastqc.html"), + path("${params.outdir}/fastqc/trim/RAP1_UNINDUCED_REP1_trimmed_trimmed_fastqc.zip"), + path("${params.outdir}/fastqc/trim/RAP1_UNINDUCED_REP2_trimmed_trimmed_fastqc.html"), + path("${params.outdir}/fastqc/trim/RAP1_UNINDUCED_REP2_trimmed_trimmed_fastqc.zip"), + path("${params.outdir}/fastqc/trim/WT_REP1_trimmed_1_val_1_fastqc.html"), + path("${params.outdir}/fastqc/trim/WT_REP1_trimmed_1_val_1_fastqc.zip"), + path("${params.outdir}/fastqc/trim/WT_REP1_trimmed_2_val_2_fastqc.html"), + path("${params.outdir}/fastqc/trim/WT_REP1_trimmed_2_val_2_fastqc.zip"), + path("${params.outdir}/fastqc/trim/WT_REP2_trimmed_1_val_1_fastqc.html"), + path("${params.outdir}/fastqc/trim/WT_REP2_trimmed_1_val_1_fastqc.zip"), + path("${params.outdir}/fastqc/trim/WT_REP2_trimmed_2_val_2_fastqc.html"), + path("${params.outdir}/fastqc/trim/WT_REP2_trimmed_2_val_2_fastqc.zip") + ).match("fastqc/trim") }, + { assert snapshot( + path("${params.outdir}/multiqc/star_salmon/multiqc_report_data/cutadapt_filtered_reads_plot.txt"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_data/cutadapt_trimmed_sequences_plot_3_Counts.txt"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_data/cutadapt_trimmed_sequences_plot_3_Obs_Exp.txt"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_data/fastqc_adapter_content_plot.txt"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_data/fastqc_overrepresented_sequences_plot-1.txt"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_data/fastqc_overrepresented_sequences_plot.txt"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_data/fastqc_per_base_n_content_plot-1.txt"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_data/fastqc_per_base_n_content_plot.txt"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_data/fastqc_per_base_sequence_quality_plot-1.txt"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_data/fastqc_per_base_sequence_quality_plot.txt"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_data/fastqc_per_sequence_gc_content_plot-1_Counts.txt"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_data/fastqc_per_sequence_gc_content_plot-1_Percentages.txt"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_data/fastqc_per_sequence_gc_content_plot_Counts.txt"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_data/fastqc_per_sequence_gc_content_plot_Percentages.txt"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_data/fastqc_per_sequence_quality_scores_plot-1.txt"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_data/fastqc_per_sequence_quality_scores_plot.txt"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_data/fastqc_sequence_counts_plot-1.txt"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_data/fastqc_sequence_counts_plot.txt"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_data/fastqc_sequence_duplication_levels_plot-1.txt"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_data/fastqc_sequence_duplication_levels_plot.txt"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_data/fastqc_sequence_length_distribution_plot.txt"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_data/fastqc-status-check-heatmap-1.txt"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_data/fastqc-status-check-heatmap.txt"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_data/fastqc_top_overrepresented_sequences_table-1.txt"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_data/fastqc_top_overrepresented_sequences_table.txt"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_data/junction_saturation_known.txt"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_data/junction_saturation_novel.txt"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_data/multiqc_citations.txt"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_data/multiqc_cutadapt.txt"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_data/multiqc_data.json"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_data/multiqc_dupradar-section-plot.txt"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_data/multiqc_fail_strand_check_table.txt"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_data/multiqc_fastqc_1.txt"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_data/multiqc_fastqc.txt"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_data/multiqc_featurecounts_biotype_plot.txt"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_data/multiqc_general_stats.txt"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_data/multiqc_picard_dups.txt"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_data/multiqc_rseqc_bam_stat.txt"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_data/multiqc_rseqc_infer_experiment.txt"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_data/multiqc_rseqc_junction_annotation.txt"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_data/multiqc_rseqc_read_distribution.txt"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_data/multiqc_salmon_deseq2_clustering-plot_1.txt"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_data/multiqc_salmon_deseq2_clustering-plot_2.txt"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_data/multiqc_salmon_deseq2_clustering-plot_3.txt"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_data/multiqc_salmon_deseq2_clustering-plot_4.txt"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_data/multiqc_salmon_deseq2_clustering-plot.txt"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_data/multiqc_salmon_deseq2_pca-plot.txt"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_data/multiqc_salmon.txt"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_data/multiqc_samtools_flagstat.txt"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_data/multiqc_samtools_idxstats.txt"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_data/multiqc_samtools_stats.txt"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_data/multiqc_software_versions.txt"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_data/multiqc_sources.txt"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_data/multiqc_star_salmon_deseq2_clustering-plot_1.txt"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_data/multiqc_star_salmon_deseq2_clustering-plot_2.txt"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_data/multiqc_star_salmon_deseq2_clustering-plot_3.txt"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_data/multiqc_star_salmon_deseq2_clustering-plot_4.txt"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_data/multiqc_star_salmon_deseq2_clustering-plot.txt"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_data/multiqc_star_salmon_deseq2_pca-plot.txt"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_data/multiqc_star.txt"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_data/picard_deduplication.txt"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_data/picard_histogram_1.txt"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_data/picard_histogram_2.txt"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_data/picard_histogram.txt"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_data/qualimap_gene_coverage_profile_Counts.txt"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_data/qualimap_gene_coverage_profile_Normalised.txt"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_data/qualimap_genomic_origin.txt"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_data/qualimap_rnaseq_cov_hist.txt"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_data/qualimap_rnaseq_genome_results.txt"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_data/rseqc_bam_stat.txt"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_data/rseqc_infer_experiment_plot.txt"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_data/rseqc_inner_distance_plot_Counts.txt"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_data/rseqc_inner_distance_plot_Percentages.txt"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_data/rseqc_inner_distance.txt"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_data/rseqc_junction_annotation_junctions_plot_Events.txt"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_data/rseqc_junction_annotation_junctions_plot_Junctions.txt"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_data/rseqc_junction_saturation_all.txt"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_data/rseqc_junction_saturation_plot_All_Junctions.txt"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_data/rseqc_junction_saturation_plot_Known_Junctions.txt"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_data/rseqc_junction_saturation_plot_Novel_Junctions.txt"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_data/rseqc_read_distribution_plot.txt"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_data/rseqc_read_dups_plot.txt"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_data/rseqc_read_dups.txt"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_data/salmon_plot.txt"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_data/samtools_alignment_plot.txt"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_data/samtools-flagstat-dp_Percentage_of_total.txt"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_data/samtools-flagstat-dp_Read_counts.txt"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_data/samtools-idxstats-mapped-reads-plot_Normalised_Counts.txt"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_data/samtools-idxstats-mapped-reads-plot_Observed_over_Expected_Counts.txt"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_data/samtools-idxstats-mapped-reads-plot_Raw_Counts.txt"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_data/samtools-stats-dp.txt"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_data/star_alignment_plot.txt"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_data/star_summary_table.txt") + ).match("multiqc_report_data") }, + { assert snapshot( + path("${params.outdir}/multiqc/star_salmon/multiqc_report.html"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/pdf/cutadapt_filtered_reads_plot-cnt.pdf"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/pdf/cutadapt_filtered_reads_plot-pct.pdf"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/pdf/cutadapt_trimmed_sequences_plot_3_Counts.pdf"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/pdf/cutadapt_trimmed_sequences_plot_3_Obs_Exp.pdf"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/pdf/dupradar-section-plot.pdf"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/pdf/fail_strand_check_table.pdf"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/pdf/fastqc_adapter_content_plot.pdf"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/pdf/fastqc_overrepresented_sequences_plot-1.pdf"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/pdf/fastqc_overrepresented_sequences_plot.pdf"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/pdf/fastqc_per_base_n_content_plot-1.pdf"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/pdf/fastqc_per_base_n_content_plot.pdf"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/pdf/fastqc_per_base_sequence_quality_plot-1.pdf"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/pdf/fastqc_per_base_sequence_quality_plot.pdf"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/pdf/fastqc_per_sequence_gc_content_plot-1_Counts.pdf"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/pdf/fastqc_per_sequence_gc_content_plot-1_Percentages.pdf"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/pdf/fastqc_per_sequence_gc_content_plot_Counts.pdf"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/pdf/fastqc_per_sequence_gc_content_plot_Percentages.pdf"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/pdf/fastqc_per_sequence_quality_scores_plot-1.pdf"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/pdf/fastqc_per_sequence_quality_scores_plot.pdf"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/pdf/fastqc_sequence_counts_plot-1-cnt.pdf"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/pdf/fastqc_sequence_counts_plot-1-pct.pdf"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/pdf/fastqc_sequence_counts_plot-cnt.pdf"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/pdf/fastqc_sequence_counts_plot-pct.pdf"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/pdf/fastqc_sequence_duplication_levels_plot-1.pdf"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/pdf/fastqc_sequence_duplication_levels_plot.pdf"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/pdf/fastqc_sequence_length_distribution_plot.pdf"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/pdf/fastqc-status-check-heatmap-1.pdf"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/pdf/fastqc-status-check-heatmap.pdf"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/pdf/fastqc_top_overrepresented_sequences_table-1.pdf"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/pdf/fastqc_top_overrepresented_sequences_table.pdf"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/pdf/featurecounts_biotype_plot-cnt.pdf"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/pdf/featurecounts_biotype_plot-pct.pdf"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/pdf/general_stats_table.pdf"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/pdf/picard_deduplication-cnt.pdf"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/pdf/picard_deduplication-pct.pdf"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/pdf/qualimap_gene_coverage_profile_Counts.pdf"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/pdf/qualimap_gene_coverage_profile_Normalised.pdf"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/pdf/qualimap_genomic_origin-cnt.pdf"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/pdf/qualimap_genomic_origin-pct.pdf"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/pdf/rseqc_bam_stat.pdf"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/pdf/rseqc_infer_experiment_plot.pdf"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/pdf/rseqc_inner_distance_plot_Counts.pdf"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/pdf/rseqc_inner_distance_plot_Percentages.pdf"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/pdf/rseqc_junction_annotation_junctions_plot_Events-cnt.pdf"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/pdf/rseqc_junction_annotation_junctions_plot_Events-pct.pdf"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/pdf/rseqc_junction_annotation_junctions_plot_Junctions-cnt.pdf"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/pdf/rseqc_junction_annotation_junctions_plot_Junctions-pct.pdf"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/pdf/rseqc_junction_saturation_plot_All_Junctions.pdf"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/pdf/rseqc_junction_saturation_plot_Known_Junctions.pdf"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/pdf/rseqc_junction_saturation_plot_Novel_Junctions.pdf"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/pdf/rseqc_read_distribution_plot-cnt.pdf"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/pdf/rseqc_read_distribution_plot-pct.pdf"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/pdf/rseqc_read_dups_plot.pdf"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/pdf/salmon_deseq2_clustering-plot.pdf"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/pdf/salmon_deseq2_pca-plot.pdf"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/pdf/salmon_plot.pdf"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/pdf/samtools_alignment_plot-cnt.pdf"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/pdf/samtools_alignment_plot-pct.pdf"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/pdf/samtools-flagstat-dp_Percentage_of_total.pdf"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/pdf/samtools-flagstat-dp_Read_counts.pdf"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/pdf/samtools-idxstats-mapped-reads-plot_Normalised_Counts-cnt.pdf"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/pdf/samtools-idxstats-mapped-reads-plot_Normalised_Counts-log.pdf"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/pdf/samtools-idxstats-mapped-reads-plot_Observed_over_Expected_Counts-cnt.pdf"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/pdf/samtools-idxstats-mapped-reads-plot_Observed_over_Expected_Counts-log.pdf"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/pdf/samtools-idxstats-mapped-reads-plot_Raw_Counts-cnt.pdf"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/pdf/samtools-idxstats-mapped-reads-plot_Raw_Counts-log.pdf"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/pdf/samtools-stats-dp.pdf"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/pdf/star_alignment_plot-cnt.pdf"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/pdf/star_alignment_plot-pct.pdf"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/pdf/star_salmon_deseq2_clustering-plot.pdf"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/pdf/star_salmon_deseq2_pca-plot.pdf"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/pdf/star_summary_table.pdf"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/png/cutadapt_filtered_reads_plot-cnt.png"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/png/cutadapt_filtered_reads_plot-pct.png"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/png/cutadapt_trimmed_sequences_plot_3_Counts.png"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/png/cutadapt_trimmed_sequences_plot_3_Obs_Exp.png"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/png/dupradar-section-plot.png"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/png/fail_strand_check_table.png"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/png/fastqc_adapter_content_plot.png"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/png/fastqc_overrepresented_sequences_plot-1.png"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/png/fastqc_overrepresented_sequences_plot.png"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/png/fastqc_per_base_n_content_plot-1.png"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/png/fastqc_per_base_n_content_plot.png"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/png/fastqc_per_base_sequence_quality_plot-1.png"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/png/fastqc_per_base_sequence_quality_plot.png"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/png/fastqc_per_sequence_gc_content_plot-1_Counts.png"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/png/fastqc_per_sequence_gc_content_plot-1_Percentages.png"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/png/fastqc_per_sequence_gc_content_plot_Counts.png"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/png/fastqc_per_sequence_gc_content_plot_Percentages.png"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/png/fastqc_per_sequence_quality_scores_plot-1.png"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/png/fastqc_per_sequence_quality_scores_plot.png"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/png/fastqc_sequence_counts_plot-1-cnt.png"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/png/fastqc_sequence_counts_plot-1-pct.png"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/png/fastqc_sequence_counts_plot-cnt.png"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/png/fastqc_sequence_counts_plot-pct.png"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/png/fastqc_sequence_duplication_levels_plot-1.png"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/png/fastqc_sequence_duplication_levels_plot.png"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/png/fastqc_sequence_length_distribution_plot.png"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/png/fastqc-status-check-heatmap-1.png"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/png/fastqc-status-check-heatmap.png"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/png/fastqc_top_overrepresented_sequences_table-1.png"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/png/fastqc_top_overrepresented_sequences_table.png"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/png/featurecounts_biotype_plot-cnt.png"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/png/featurecounts_biotype_plot-pct.png"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/png/general_stats_table.png"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/png/picard_deduplication-cnt.png"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/png/picard_deduplication-pct.png"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/png/qualimap_gene_coverage_profile_Counts.png"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/png/qualimap_gene_coverage_profile_Normalised.png"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/png/qualimap_genomic_origin-cnt.png"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/png/qualimap_genomic_origin-pct.png"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/png/rseqc_bam_stat.png"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/png/rseqc_infer_experiment_plot.png"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/png/rseqc_inner_distance_plot_Counts.png"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/png/rseqc_inner_distance_plot_Percentages.png"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/png/rseqc_junction_annotation_junctions_plot_Events-cnt.png"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/png/rseqc_junction_annotation_junctions_plot_Events-pct.png"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/png/rseqc_junction_annotation_junctions_plot_Junctions-cnt.png"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/png/rseqc_junction_annotation_junctions_plot_Junctions-pct.png"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/png/rseqc_junction_saturation_plot_All_Junctions.png"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/png/rseqc_junction_saturation_plot_Known_Junctions.png"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/png/rseqc_junction_saturation_plot_Novel_Junctions.png"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/png/rseqc_read_distribution_plot-cnt.png"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/png/rseqc_read_distribution_plot-pct.png"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/png/rseqc_read_dups_plot.png"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/png/salmon_deseq2_clustering-plot.png"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/png/salmon_deseq2_pca-plot.png"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/png/salmon_plot.png"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/png/samtools_alignment_plot-cnt.png"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/png/samtools_alignment_plot-pct.png"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/png/samtools-flagstat-dp_Percentage_of_total.png"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/png/samtools-flagstat-dp_Read_counts.png"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/png/samtools-idxstats-mapped-reads-plot_Normalised_Counts-cnt.png"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/png/samtools-idxstats-mapped-reads-plot_Normalised_Counts-log.png"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/png/samtools-idxstats-mapped-reads-plot_Observed_over_Expected_Counts-cnt.png"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/png/samtools-idxstats-mapped-reads-plot_Observed_over_Expected_Counts-log.png"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/png/samtools-idxstats-mapped-reads-plot_Raw_Counts-cnt.png"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/png/samtools-idxstats-mapped-reads-plot_Raw_Counts-log.png"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/png/samtools-stats-dp.png"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/png/star_alignment_plot-cnt.png"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/png/star_alignment_plot-pct.png"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/png/star_salmon_deseq2_clustering-plot.png"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/png/star_salmon_deseq2_pca-plot.png"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/png/star_summary_table.png"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/svg/cutadapt_filtered_reads_plot-cnt.svg"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/svg/cutadapt_filtered_reads_plot-pct.svg"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/svg/cutadapt_trimmed_sequences_plot_3_Counts.svg"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/svg/cutadapt_trimmed_sequences_plot_3_Obs_Exp.svg"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/svg/dupradar-section-plot.svg"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/svg/fail_strand_check_table.svg"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/svg/fastqc_adapter_content_plot.svg"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/svg/fastqc_overrepresented_sequences_plot-1.svg"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/svg/fastqc_overrepresented_sequences_plot.svg"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/svg/fastqc_per_base_n_content_plot-1.svg"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/svg/fastqc_per_base_n_content_plot.svg"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/svg/fastqc_per_base_sequence_quality_plot-1.svg"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/svg/fastqc_per_base_sequence_quality_plot.svg"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/svg/fastqc_per_sequence_gc_content_plot-1_Counts.svg"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/svg/fastqc_per_sequence_gc_content_plot-1_Percentages.svg"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/svg/fastqc_per_sequence_gc_content_plot_Counts.svg"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/svg/fastqc_per_sequence_gc_content_plot_Percentages.svg"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/svg/fastqc_per_sequence_quality_scores_plot-1.svg"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/svg/fastqc_per_sequence_quality_scores_plot.svg"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/svg/fastqc_sequence_counts_plot-1-cnt.svg"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/svg/fastqc_sequence_counts_plot-1-pct.svg"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/svg/fastqc_sequence_counts_plot-cnt.svg"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/svg/fastqc_sequence_counts_plot-pct.svg"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/svg/fastqc_sequence_duplication_levels_plot-1.svg"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/svg/fastqc_sequence_duplication_levels_plot.svg"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/svg/fastqc_sequence_length_distribution_plot.svg"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/svg/fastqc-status-check-heatmap-1.svg"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/svg/fastqc-status-check-heatmap.svg"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/svg/fastqc_top_overrepresented_sequences_table-1.svg"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/svg/fastqc_top_overrepresented_sequences_table.svg"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/svg/featurecounts_biotype_plot-cnt.svg"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/svg/featurecounts_biotype_plot-pct.svg"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/svg/general_stats_table.svg"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/svg/picard_deduplication-cnt.svg"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/svg/picard_deduplication-pct.svg"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/svg/qualimap_gene_coverage_profile_Counts.svg"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/svg/qualimap_gene_coverage_profile_Normalised.svg"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/svg/qualimap_genomic_origin-cnt.svg"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/svg/qualimap_genomic_origin-pct.svg"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/svg/rseqc_bam_stat.svg"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/svg/rseqc_infer_experiment_plot.svg"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/svg/rseqc_inner_distance_plot_Counts.svg"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/svg/rseqc_inner_distance_plot_Percentages.svg"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/svg/rseqc_junction_annotation_junctions_plot_Events-cnt.svg"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/svg/rseqc_junction_annotation_junctions_plot_Events-pct.svg"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/svg/rseqc_junction_annotation_junctions_plot_Junctions-cnt.svg"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/svg/rseqc_junction_annotation_junctions_plot_Junctions-pct.svg"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/svg/rseqc_junction_saturation_plot_All_Junctions.svg"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/svg/rseqc_junction_saturation_plot_Known_Junctions.svg"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/svg/rseqc_junction_saturation_plot_Novel_Junctions.svg"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/svg/rseqc_read_distribution_plot-cnt.svg"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/svg/rseqc_read_distribution_plot-pct.svg"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/svg/rseqc_read_dups_plot.svg"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/svg/salmon_deseq2_clustering-plot.svg"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/svg/salmon_deseq2_pca-plot.svg"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/svg/salmon_plot.svg"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/svg/samtools_alignment_plot-cnt.svg"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/svg/samtools_alignment_plot-pct.svg"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/svg/samtools-flagstat-dp_Percentage_of_total.svg"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/svg/samtools-flagstat-dp_Read_counts.svg"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/svg/samtools-idxstats-mapped-reads-plot_Normalised_Counts-cnt.svg"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/svg/samtools-idxstats-mapped-reads-plot_Normalised_Counts-log.svg"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/svg/samtools-idxstats-mapped-reads-plot_Observed_over_Expected_Counts-cnt.svg"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/svg/samtools-idxstats-mapped-reads-plot_Observed_over_Expected_Counts-log.svg"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/svg/samtools-idxstats-mapped-reads-plot_Raw_Counts-cnt.svg"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/svg/samtools-idxstats-mapped-reads-plot_Raw_Counts-log.svg"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/svg/samtools-stats-dp.svg"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/svg/star_alignment_plot-cnt.svg"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/svg/star_alignment_plot-pct.svg"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/svg/star_salmon_deseq2_clustering-plot.svg"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/svg/star_salmon_deseq2_pca-plot.svg"), + path("${params.outdir}/multiqc/star_salmon/multiqc_report_plots/svg/star_summary_table.svg") + ).match("multiqc_report_plots") }, + { assert snapshot( + path("${params.outdir}/salmon/deseq2_qc/deseq2.dds.RData"), + path("${params.outdir}/salmon/deseq2_qc/deseq2.pca.vals.txt"), + path("${params.outdir}/salmon/deseq2_qc/deseq2.plots.pdf"), + path("${params.outdir}/salmon/deseq2_qc/deseq2.sample.dists.txt"), + path("${params.outdir}/salmon/deseq2_qc/R_sessionInfo.log"), + path("${params.outdir}/salmon/deseq2_qc/size_factors/deseq2.size_factors.RData"), + path("${params.outdir}/salmon/deseq2_qc/size_factors/RAP1_IAA_30M_REP1.txt"), + path("${params.outdir}/salmon/deseq2_qc/size_factors/RAP1_UNINDUCED_REP1.txt"), + path("${params.outdir}/salmon/deseq2_qc/size_factors/RAP1_UNINDUCED_REP2.txt"), + path("${params.outdir}/salmon/deseq2_qc/size_factors/WT_REP1.txt"), + path("${params.outdir}/salmon/deseq2_qc/size_factors/WT_REP2.txt") + ).match("salmon/deseq2_qc") }, + { assert snapshot( + path("${params.outdir}/salmon/RAP1_IAA_30M_REP1/aux_info/ambig_info.tsv"), + path("${params.outdir}/salmon/RAP1_IAA_30M_REP1/aux_info/expected_bias.gz"), + path("${params.outdir}/salmon/RAP1_IAA_30M_REP1/aux_info/fld.gz"), + path("${params.outdir}/salmon/RAP1_IAA_30M_REP1/aux_info/meta_info.json"), + path("${params.outdir}/salmon/RAP1_IAA_30M_REP1/aux_info/observed_bias_3p.gz"), + path("${params.outdir}/salmon/RAP1_IAA_30M_REP1/aux_info/observed_bias.gz"), + path("${params.outdir}/salmon/RAP1_IAA_30M_REP1/cmd_info.json"), + path("${params.outdir}/salmon/RAP1_IAA_30M_REP1/lib_format_counts.json"), + path("${params.outdir}/salmon/RAP1_IAA_30M_REP1/libParams/flenDist.txt"), + path("${params.outdir}/salmon/RAP1_IAA_30M_REP1/logs/salmon_quant.log"), + path("${params.outdir}/salmon/RAP1_IAA_30M_REP1/quant.genes.sf"), + path("${params.outdir}/salmon/RAP1_IAA_30M_REP1/quant.sf"), + path("${params.outdir}/salmon/RAP1_UNINDUCED_REP1/aux_info/ambig_info.tsv"), + path("${params.outdir}/salmon/RAP1_UNINDUCED_REP1/aux_info/expected_bias.gz"), + path("${params.outdir}/salmon/RAP1_UNINDUCED_REP1/aux_info/fld.gz"), + path("${params.outdir}/salmon/RAP1_UNINDUCED_REP1/aux_info/meta_info.json"), + path("${params.outdir}/salmon/RAP1_UNINDUCED_REP1/aux_info/observed_bias_3p.gz"), + path("${params.outdir}/salmon/RAP1_UNINDUCED_REP1/aux_info/observed_bias.gz"), + path("${params.outdir}/salmon/RAP1_UNINDUCED_REP1/cmd_info.json"), + path("${params.outdir}/salmon/RAP1_UNINDUCED_REP1/lib_format_counts.json"), + path("${params.outdir}/salmon/RAP1_UNINDUCED_REP1/libParams/flenDist.txt"), + path("${params.outdir}/salmon/RAP1_UNINDUCED_REP1/logs/salmon_quant.log"), + path("${params.outdir}/salmon/RAP1_UNINDUCED_REP1/quant.genes.sf"), + path("${params.outdir}/salmon/RAP1_UNINDUCED_REP1/quant.sf"), + path("${params.outdir}/salmon/RAP1_UNINDUCED_REP2/aux_info/ambig_info.tsv"), + path("${params.outdir}/salmon/RAP1_UNINDUCED_REP2/aux_info/expected_bias.gz"), + path("${params.outdir}/salmon/RAP1_UNINDUCED_REP2/aux_info/fld.gz"), + path("${params.outdir}/salmon/RAP1_UNINDUCED_REP2/aux_info/meta_info.json"), + path("${params.outdir}/salmon/RAP1_UNINDUCED_REP2/aux_info/observed_bias_3p.gz"), + path("${params.outdir}/salmon/RAP1_UNINDUCED_REP2/aux_info/observed_bias.gz"), + path("${params.outdir}/salmon/RAP1_UNINDUCED_REP2/cmd_info.json"), + path("${params.outdir}/salmon/RAP1_UNINDUCED_REP2/lib_format_counts.json"), + path("${params.outdir}/salmon/RAP1_UNINDUCED_REP2/libParams/flenDist.txt"), + path("${params.outdir}/salmon/RAP1_UNINDUCED_REP2/logs/salmon_quant.log"), + path("${params.outdir}/salmon/RAP1_UNINDUCED_REP2/quant.genes.sf"), + path("${params.outdir}/salmon/RAP1_UNINDUCED_REP2/quant.sf"), + path("${params.outdir}/salmon/WT_REP1/aux_info/ambig_info.tsv"), + path("${params.outdir}/salmon/WT_REP1/aux_info/expected_bias.gz"), + path("${params.outdir}/salmon/WT_REP1/aux_info/fld.gz"), + path("${params.outdir}/salmon/WT_REP1/aux_info/meta_info.json"), + path("${params.outdir}/salmon/WT_REP1/aux_info/observed_bias_3p.gz"), + path("${params.outdir}/salmon/WT_REP1/aux_info/observed_bias.gz"), + path("${params.outdir}/salmon/WT_REP1/cmd_info.json"), + path("${params.outdir}/salmon/WT_REP1/lib_format_counts.json"), + path("${params.outdir}/salmon/WT_REP1/libParams/flenDist.txt"), + path("${params.outdir}/salmon/WT_REP1/logs/salmon_quant.log"), + path("${params.outdir}/salmon/WT_REP1/quant.genes.sf"), + path("${params.outdir}/salmon/WT_REP1/quant.sf"), + path("${params.outdir}/salmon/WT_REP2/aux_info/ambig_info.tsv"), + path("${params.outdir}/salmon/WT_REP2/aux_info/expected_bias.gz"), + path("${params.outdir}/salmon/WT_REP2/aux_info/fld.gz"), + path("${params.outdir}/salmon/WT_REP2/aux_info/meta_info.json"), + path("${params.outdir}/salmon/WT_REP2/aux_info/observed_bias_3p.gz"), + path("${params.outdir}/salmon/WT_REP2/aux_info/observed_bias.gz"), + path("${params.outdir}/salmon/WT_REP2/cmd_info.json"), + path("${params.outdir}/salmon/WT_REP2/lib_format_counts.json"), + path("${params.outdir}/salmon/WT_REP2/libParams/flenDist.txt"), + path("${params.outdir}/salmon/WT_REP2/logs/salmon_quant.log"), + path("${params.outdir}/salmon/WT_REP2/quant.genes.sf"), + path("${params.outdir}/salmon/WT_REP2/quant.sf") + ).match("salmon_quant") }, + { assert snapshot( + path("${params.outdir}/salmon/salmon.merged.gene_counts_length_scaled.SummarizedExperiment.rds"), + path("${params.outdir}/salmon/salmon.merged.gene_counts_length_scaled.tsv"), + path("${params.outdir}/salmon/salmon.merged.gene_counts_scaled.SummarizedExperiment.rds"), + path("${params.outdir}/salmon/salmon.merged.gene_counts_scaled.tsv"), + path("${params.outdir}/salmon/salmon.merged.gene_counts.SummarizedExperiment.rds"), + path("${params.outdir}/salmon/salmon.merged.gene_counts.tsv"), + path("${params.outdir}/salmon/salmon.merged.gene_lengths.tsv"), + path("${params.outdir}/salmon/salmon.merged.gene_tpm.tsv"), + path("${params.outdir}/salmon/salmon.merged.transcript_counts.SummarizedExperiment.rds"), path("${params.outdir}/salmon/salmon.merged.transcript_counts.tsv"), + path("${params.outdir}/salmon/salmon.merged.transcript_lengths.tsv"), + path("${params.outdir}/salmon/salmon.merged.transcript_tpm.tsv"), + path("${params.outdir}/salmon/tx2gene.tsv") + ).match("salmon") }, + { assert snapshot( path("${params.outdir}/star_salmon/bigwig/RAP1_IAA_30M_REP1.forward.bigWig"), path("${params.outdir}/star_salmon/bigwig/RAP1_IAA_30M_REP1.reverse.bigWig"), path("${params.outdir}/star_salmon/bigwig/RAP1_UNINDUCED_REP1.forward.bigWig"), @@ -28,8 +475,422 @@ nextflow_pipeline { path("${params.outdir}/star_salmon/bigwig/WT_REP1.forward.bigWig"), path("${params.outdir}/star_salmon/bigwig/WT_REP1.reverse.bigWig"), path("${params.outdir}/star_salmon/bigwig/WT_REP2.forward.bigWig"), - path("${params.outdir}/star_salmon/bigwig/WT_REP2.reverse.bigWig")).match() - } + path("${params.outdir}/star_salmon/bigwig/WT_REP2.reverse.bigWig") + ).match("star_salmon/bigwig") }, + { assert snapshot( + path("${params.outdir}/star_salmon/deseq2_qc/deseq2.dds.RData"), + path("${params.outdir}/star_salmon/deseq2_qc/deseq2.pca.vals.txt"), + path("${params.outdir}/star_salmon/deseq2_qc/deseq2.plots.pdf"), + path("${params.outdir}/star_salmon/deseq2_qc/deseq2.sample.dists.txt"), + path("${params.outdir}/star_salmon/deseq2_qc/R_sessionInfo.log"), + path("${params.outdir}/star_salmon/deseq2_qc/size_factors/deseq2.size_factors.RData"), + path("${params.outdir}/star_salmon/deseq2_qc/size_factors/RAP1_IAA_30M_REP1.txt"), + path("${params.outdir}/star_salmon/deseq2_qc/size_factors/RAP1_UNINDUCED_REP1.txt"), + path("${params.outdir}/star_salmon/deseq2_qc/size_factors/RAP1_UNINDUCED_REP2.txt"), + path("${params.outdir}/star_salmon/deseq2_qc/size_factors/WT_REP1.txt"), + path("${params.outdir}/star_salmon/deseq2_qc/size_factors/WT_REP2.txt") + ).match("star_salmon/deseq2_qc") }, + { assert snapshot( + path("${params.outdir}/star_salmon/dupradar/box_plot/RAP1_IAA_30M_REP1_duprateExpBoxplot.pdf"), + path("${params.outdir}/star_salmon/dupradar/box_plot/RAP1_UNINDUCED_REP1_duprateExpBoxplot.pdf"), + path("${params.outdir}/star_salmon/dupradar/box_plot/RAP1_UNINDUCED_REP2_duprateExpBoxplot.pdf"), + path("${params.outdir}/star_salmon/dupradar/box_plot/WT_REP1_duprateExpBoxplot.pdf"), + path("${params.outdir}/star_salmon/dupradar/box_plot/WT_REP2_duprateExpBoxplot.pdf"), + path("${params.outdir}/star_salmon/dupradar/gene_data/RAP1_IAA_30M_REP1_dupMatrix.txt"), + path("${params.outdir}/star_salmon/dupradar/gene_data/RAP1_UNINDUCED_REP1_dupMatrix.txt"), + path("${params.outdir}/star_salmon/dupradar/gene_data/RAP1_UNINDUCED_REP2_dupMatrix.txt"), + path("${params.outdir}/star_salmon/dupradar/gene_data/WT_REP1_dupMatrix.txt"), + path("${params.outdir}/star_salmon/dupradar/gene_data/WT_REP2_dupMatrix.txt"), + path("${params.outdir}/star_salmon/dupradar/histogram/RAP1_IAA_30M_REP1_expressionHist.pdf"), + path("${params.outdir}/star_salmon/dupradar/histogram/RAP1_UNINDUCED_REP1_expressionHist.pdf"), + path("${params.outdir}/star_salmon/dupradar/histogram/RAP1_UNINDUCED_REP2_expressionHist.pdf"), + path("${params.outdir}/star_salmon/dupradar/histogram/WT_REP1_expressionHist.pdf"), + path("${params.outdir}/star_salmon/dupradar/histogram/WT_REP2_expressionHist.pdf"), + path("${params.outdir}/star_salmon/dupradar/intercepts_slope/RAP1_IAA_30M_REP1_intercept_slope.txt"), + path("${params.outdir}/star_salmon/dupradar/intercepts_slope/RAP1_UNINDUCED_REP1_intercept_slope.txt"), + path("${params.outdir}/star_salmon/dupradar/intercepts_slope/RAP1_UNINDUCED_REP2_intercept_slope.txt"), + path("${params.outdir}/star_salmon/dupradar/intercepts_slope/WT_REP1_intercept_slope.txt"), + path("${params.outdir}/star_salmon/dupradar/intercepts_slope/WT_REP2_intercept_slope.txt"), + path("${params.outdir}/star_salmon/dupradar/scatter_plot/RAP1_IAA_30M_REP1_duprateExpDens.pdf"), + path("${params.outdir}/star_salmon/dupradar/scatter_plot/RAP1_UNINDUCED_REP1_duprateExpDens.pdf"), + path("${params.outdir}/star_salmon/dupradar/scatter_plot/RAP1_UNINDUCED_REP2_duprateExpDens.pdf"), + path("${params.outdir}/star_salmon/dupradar/scatter_plot/WT_REP1_duprateExpDens.pdf"), + path("${params.outdir}/star_salmon/dupradar/scatter_plot/WT_REP2_duprateExpDens.pdf") + ).match("star_salmon/dupradar") }, + { assert snapshot( + path("${params.outdir}/star_salmon/featurecounts/RAP1_IAA_30M_REP1.biotype_counts_mqc.tsv"), + path("${params.outdir}/star_salmon/featurecounts/RAP1_IAA_30M_REP1.biotype_counts_rrna_mqc.tsv"), + path("${params.outdir}/star_salmon/featurecounts/RAP1_IAA_30M_REP1.featureCounts.txt"), + path("${params.outdir}/star_salmon/featurecounts/RAP1_IAA_30M_REP1.featureCounts.txt.summary"), + path("${params.outdir}/star_salmon/featurecounts/RAP1_UNINDUCED_REP1.biotype_counts_mqc.tsv"), + path("${params.outdir}/star_salmon/featurecounts/RAP1_UNINDUCED_REP1.biotype_counts_rrna_mqc.tsv"), + path("${params.outdir}/star_salmon/featurecounts/RAP1_UNINDUCED_REP1.featureCounts.txt"), + path("${params.outdir}/star_salmon/featurecounts/RAP1_UNINDUCED_REP1.featureCounts.txt.summary"), + path("${params.outdir}/star_salmon/featurecounts/RAP1_UNINDUCED_REP2.biotype_counts_mqc.tsv"), + path("${params.outdir}/star_salmon/featurecounts/RAP1_UNINDUCED_REP2.biotype_counts_rrna_mqc.tsv"), + path("${params.outdir}/star_salmon/featurecounts/RAP1_UNINDUCED_REP2.featureCounts.txt"), + path("${params.outdir}/star_salmon/featurecounts/RAP1_UNINDUCED_REP2.featureCounts.txt.summary"), + path("${params.outdir}/star_salmon/featurecounts/WT_REP1.biotype_counts_mqc.tsv"), + path("${params.outdir}/star_salmon/featurecounts/WT_REP1.biotype_counts_rrna_mqc.tsv"), + path("${params.outdir}/star_salmon/featurecounts/WT_REP1.featureCounts.txt"), + path("${params.outdir}/star_salmon/featurecounts/WT_REP1.featureCounts.txt.summary"), + path("${params.outdir}/star_salmon/featurecounts/WT_REP2.biotype_counts_mqc.tsv"), + path("${params.outdir}/star_salmon/featurecounts/WT_REP2.biotype_counts_rrna_mqc.tsv"), + path("${params.outdir}/star_salmon/featurecounts/WT_REP2.featureCounts.txt"), + path("${params.outdir}/star_salmon/featurecounts/WT_REP2.featureCounts.txt.summary") + ).match("star_salmon/featurecounts") }, + { assert snapshot( + path("${params.outdir}/star_salmon/log/RAP1_IAA_30M_REP1.Log.final.out"), + path("${params.outdir}/star_salmon/log/RAP1_IAA_30M_REP1.Log.out"), + path("${params.outdir}/star_salmon/log/RAP1_IAA_30M_REP1.Log.progress.out"), + path("${params.outdir}/star_salmon/log/RAP1_IAA_30M_REP1.SJ.out.tab"), + path("${params.outdir}/star_salmon/log/RAP1_UNINDUCED_REP1.Log.final.out"), + path("${params.outdir}/star_salmon/log/RAP1_UNINDUCED_REP1.Log.out"), + path("${params.outdir}/star_salmon/log/RAP1_UNINDUCED_REP1.Log.progress.out"), + path("${params.outdir}/star_salmon/log/RAP1_UNINDUCED_REP1.SJ.out.tab"), + path("${params.outdir}/star_salmon/log/RAP1_UNINDUCED_REP2.Log.final.out"), + path("${params.outdir}/star_salmon/log/RAP1_UNINDUCED_REP2.Log.out"), + path("${params.outdir}/star_salmon/log/RAP1_UNINDUCED_REP2.Log.progress.out"), + path("${params.outdir}/star_salmon/log/RAP1_UNINDUCED_REP2.SJ.out.tab"), + path("${params.outdir}/star_salmon/log/WT_REP1.Log.final.out"), + path("${params.outdir}/star_salmon/log/WT_REP1.Log.out"), + path("${params.outdir}/star_salmon/log/WT_REP1.Log.progress.out"), + path("${params.outdir}/star_salmon/log/WT_REP1.SJ.out.tab"), + path("${params.outdir}/star_salmon/log/WT_REP2.Log.final.out"), + path("${params.outdir}/star_salmon/log/WT_REP2.Log.out"), + path("${params.outdir}/star_salmon/log/WT_REP2.Log.progress.out"), + path("${params.outdir}/star_salmon/log/WT_REP2.SJ.out.tab") + ).match("star_salmon/log") }, + { assert snapshot( + path("${params.outdir}/star_salmon/picard_metrics/RAP1_IAA_30M_REP1.markdup.sorted.MarkDuplicates.metrics.txt"), + path("${params.outdir}/star_salmon/picard_metrics/RAP1_UNINDUCED_REP1.markdup.sorted.MarkDuplicates.metrics.txt"), + path("${params.outdir}/star_salmon/picard_metrics/RAP1_UNINDUCED_REP2.markdup.sorted.MarkDuplicates.metrics.txt"), + path("${params.outdir}/star_salmon/picard_metrics/WT_REP1.markdup.sorted.MarkDuplicates.metrics.txt"), + path("${params.outdir}/star_salmon/picard_metrics/WT_REP2.markdup.sorted.MarkDuplicates.metrics.txt") + ).match("star_salmon/picard_metrics") }, + { assert snapshot( + path("${params.outdir}/star_salmon/qualimap/RAP1_IAA_30M_REP1/images_qualimapReport/Coverage Profile Along Genes (High).png"), + path("${params.outdir}/star_salmon/qualimap/RAP1_IAA_30M_REP1/images_qualimapReport/Coverage Profile Along Genes (Low).png"), + path("${params.outdir}/star_salmon/qualimap/RAP1_IAA_30M_REP1/images_qualimapReport/Coverage Profile Along Genes (Total).png"), + path("${params.outdir}/star_salmon/qualimap/RAP1_IAA_30M_REP1/images_qualimapReport/Junction Analysis.png"), + path("${params.outdir}/star_salmon/qualimap/RAP1_IAA_30M_REP1/images_qualimapReport/Reads Genomic Origin.png"), + path("${params.outdir}/star_salmon/qualimap/RAP1_IAA_30M_REP1/images_qualimapReport/Transcript coverage histogram.png"), + path("${params.outdir}/star_salmon/qualimap/RAP1_IAA_30M_REP1/qualimapReport.html"), + path("${params.outdir}/star_salmon/qualimap/RAP1_IAA_30M_REP1/raw_data_qualimapReport/coverage_profile_along_genes_(high).txt"), + path("${params.outdir}/star_salmon/qualimap/RAP1_IAA_30M_REP1/raw_data_qualimapReport/coverage_profile_along_genes_(low).txt"), + path("${params.outdir}/star_salmon/qualimap/RAP1_IAA_30M_REP1/raw_data_qualimapReport/coverage_profile_along_genes_(total).txt"), + path("${params.outdir}/star_salmon/qualimap/RAP1_IAA_30M_REP1/rnaseq_qc_results.txt"), + path("${params.outdir}/star_salmon/qualimap/RAP1_UNINDUCED_REP1/images_qualimapReport/Coverage Profile Along Genes (High).png"), + path("${params.outdir}/star_salmon/qualimap/RAP1_UNINDUCED_REP1/images_qualimapReport/Coverage Profile Along Genes (Low).png"), + path("${params.outdir}/star_salmon/qualimap/RAP1_UNINDUCED_REP1/images_qualimapReport/Coverage Profile Along Genes (Total).png"), + path("${params.outdir}/star_salmon/qualimap/RAP1_UNINDUCED_REP1/images_qualimapReport/Junction Analysis.png"), + path("${params.outdir}/star_salmon/qualimap/RAP1_UNINDUCED_REP1/images_qualimapReport/Reads Genomic Origin.png"), + path("${params.outdir}/star_salmon/qualimap/RAP1_UNINDUCED_REP1/images_qualimapReport/Transcript coverage histogram.png"), + path("${params.outdir}/star_salmon/qualimap/RAP1_UNINDUCED_REP1/qualimapReport.html"), + path("${params.outdir}/star_salmon/qualimap/RAP1_UNINDUCED_REP1/raw_data_qualimapReport/coverage_profile_along_genes_(high).txt"), + path("${params.outdir}/star_salmon/qualimap/RAP1_UNINDUCED_REP1/raw_data_qualimapReport/coverage_profile_along_genes_(low).txt"), + path("${params.outdir}/star_salmon/qualimap/RAP1_UNINDUCED_REP1/raw_data_qualimapReport/coverage_profile_along_genes_(total).txt"), + path("${params.outdir}/star_salmon/qualimap/RAP1_UNINDUCED_REP1/rnaseq_qc_results.txt"), + path("${params.outdir}/star_salmon/qualimap/RAP1_UNINDUCED_REP2/images_qualimapReport/Coverage Profile Along Genes (High).png"), + path("${params.outdir}/star_salmon/qualimap/RAP1_UNINDUCED_REP2/images_qualimapReport/Coverage Profile Along Genes (Low).png"), + path("${params.outdir}/star_salmon/qualimap/RAP1_UNINDUCED_REP2/images_qualimapReport/Coverage Profile Along Genes (Total).png"), + path("${params.outdir}/star_salmon/qualimap/RAP1_UNINDUCED_REP2/images_qualimapReport/Junction Analysis.png"), + path("${params.outdir}/star_salmon/qualimap/RAP1_UNINDUCED_REP2/images_qualimapReport/Reads Genomic Origin.png"), + path("${params.outdir}/star_salmon/qualimap/RAP1_UNINDUCED_REP2/images_qualimapReport/Transcript coverage histogram.png"), + path("${params.outdir}/star_salmon/qualimap/RAP1_UNINDUCED_REP2/qualimapReport.html"), + path("${params.outdir}/star_salmon/qualimap/RAP1_UNINDUCED_REP2/raw_data_qualimapReport/coverage_profile_along_genes_(high).txt"), + path("${params.outdir}/star_salmon/qualimap/RAP1_UNINDUCED_REP2/raw_data_qualimapReport/coverage_profile_along_genes_(low).txt"), + path("${params.outdir}/star_salmon/qualimap/RAP1_UNINDUCED_REP2/raw_data_qualimapReport/coverage_profile_along_genes_(total).txt"), + path("${params.outdir}/star_salmon/qualimap/RAP1_UNINDUCED_REP2/rnaseq_qc_results.txt"), + path("${params.outdir}/star_salmon/qualimap/WT_REP1/images_qualimapReport/Coverage Profile Along Genes (High).png"), + path("${params.outdir}/star_salmon/qualimap/WT_REP1/images_qualimapReport/Coverage Profile Along Genes (Low).png"), + path("${params.outdir}/star_salmon/qualimap/WT_REP1/images_qualimapReport/Coverage Profile Along Genes (Total).png"), + path("${params.outdir}/star_salmon/qualimap/WT_REP1/images_qualimapReport/Junction Analysis.png"), + path("${params.outdir}/star_salmon/qualimap/WT_REP1/images_qualimapReport/Reads Genomic Origin.png"), + path("${params.outdir}/star_salmon/qualimap/WT_REP1/images_qualimapReport/Transcript coverage histogram.png"), + path("${params.outdir}/star_salmon/qualimap/WT_REP1/qualimapReport.html"), + path("${params.outdir}/star_salmon/qualimap/WT_REP1/raw_data_qualimapReport/coverage_profile_along_genes_(high).txt"), + path("${params.outdir}/star_salmon/qualimap/WT_REP1/raw_data_qualimapReport/coverage_profile_along_genes_(low).txt"), + path("${params.outdir}/star_salmon/qualimap/WT_REP1/raw_data_qualimapReport/coverage_profile_along_genes_(total).txt"), + path("${params.outdir}/star_salmon/qualimap/WT_REP1/rnaseq_qc_results.txt"), + path("${params.outdir}/star_salmon/qualimap/WT_REP2/images_qualimapReport/Coverage Profile Along Genes (High).png"), + path("${params.outdir}/star_salmon/qualimap/WT_REP2/images_qualimapReport/Coverage Profile Along Genes (Low).png"), + path("${params.outdir}/star_salmon/qualimap/WT_REP2/images_qualimapReport/Coverage Profile Along Genes (Total).png"), + path("${params.outdir}/star_salmon/qualimap/WT_REP2/images_qualimapReport/Junction Analysis.png"), + path("${params.outdir}/star_salmon/qualimap/WT_REP2/images_qualimapReport/Reads Genomic Origin.png"), + path("${params.outdir}/star_salmon/qualimap/WT_REP2/images_qualimapReport/Transcript coverage histogram.png"), + path("${params.outdir}/star_salmon/qualimap/WT_REP2/qualimapReport.html"), + path("${params.outdir}/star_salmon/qualimap/WT_REP2/raw_data_qualimapReport/coverage_profile_along_genes_(high).txt"), + path("${params.outdir}/star_salmon/qualimap/WT_REP2/raw_data_qualimapReport/coverage_profile_along_genes_(low).txt"), + path("${params.outdir}/star_salmon/qualimap/WT_REP2/raw_data_qualimapReport/coverage_profile_along_genes_(total).txt"), + path("${params.outdir}/star_salmon/qualimap/WT_REP2/rnaseq_qc_results.txt") + ).match("star_salmon/qualimap") }, + { assert snapshot( + path("${params.outdir}/star_salmon/rseqc/bam_stat/RAP1_IAA_30M_REP1.bam_stat.txt"), + path("${params.outdir}/star_salmon/rseqc/bam_stat/RAP1_UNINDUCED_REP1.bam_stat.txt"), + path("${params.outdir}/star_salmon/rseqc/bam_stat/RAP1_UNINDUCED_REP2.bam_stat.txt"), + path("${params.outdir}/star_salmon/rseqc/bam_stat/WT_REP1.bam_stat.txt"), + path("${params.outdir}/star_salmon/rseqc/bam_stat/WT_REP2.bam_stat.txt"), + path("${params.outdir}/star_salmon/rseqc/infer_experiment/RAP1_IAA_30M_REP1.infer_experiment.txt"), + path("${params.outdir}/star_salmon/rseqc/infer_experiment/RAP1_UNINDUCED_REP1.infer_experiment.txt"), + path("${params.outdir}/star_salmon/rseqc/infer_experiment/RAP1_UNINDUCED_REP2.infer_experiment.txt"), + path("${params.outdir}/star_salmon/rseqc/infer_experiment/WT_REP1.infer_experiment.txt"), + path("${params.outdir}/star_salmon/rseqc/infer_experiment/WT_REP2.infer_experiment.txt"), + path("${params.outdir}/star_salmon/rseqc/inner_distance/pdf/RAP1_IAA_30M_REP1.inner_distance_plot.pdf"), + path("${params.outdir}/star_salmon/rseqc/inner_distance/pdf/WT_REP1.inner_distance_plot.pdf"), + path("${params.outdir}/star_salmon/rseqc/inner_distance/pdf/WT_REP2.inner_distance_plot.pdf"), + path("${params.outdir}/star_salmon/rseqc/inner_distance/rscript/RAP1_IAA_30M_REP1.inner_distance_plot.r"), + path("${params.outdir}/star_salmon/rseqc/inner_distance/rscript/WT_REP1.inner_distance_plot.r"), + path("${params.outdir}/star_salmon/rseqc/inner_distance/rscript/WT_REP2.inner_distance_plot.r"), + path("${params.outdir}/star_salmon/rseqc/inner_distance/txt/RAP1_IAA_30M_REP1.inner_distance_freq.txt"), + path("${params.outdir}/star_salmon/rseqc/inner_distance/txt/RAP1_IAA_30M_REP1.inner_distance_mean.txt"), + path("${params.outdir}/star_salmon/rseqc/inner_distance/txt/RAP1_IAA_30M_REP1.inner_distance.txt"), + path("${params.outdir}/star_salmon/rseqc/inner_distance/txt/WT_REP1.inner_distance_freq.txt"), + path("${params.outdir}/star_salmon/rseqc/inner_distance/txt/WT_REP1.inner_distance_mean.txt"), + path("${params.outdir}/star_salmon/rseqc/inner_distance/txt/WT_REP1.inner_distance.txt"), + path("${params.outdir}/star_salmon/rseqc/inner_distance/txt/WT_REP2.inner_distance_freq.txt"), + path("${params.outdir}/star_salmon/rseqc/inner_distance/txt/WT_REP2.inner_distance_mean.txt"), + path("${params.outdir}/star_salmon/rseqc/inner_distance/txt/WT_REP2.inner_distance.txt"), + path("${params.outdir}/star_salmon/rseqc/junction_annotation/bed/RAP1_IAA_30M_REP1.junction.bed"), + path("${params.outdir}/star_salmon/rseqc/junction_annotation/bed/RAP1_IAA_30M_REP1.junction.Interact.bed"), + path("${params.outdir}/star_salmon/rseqc/junction_annotation/bed/RAP1_UNINDUCED_REP1.junction.bed"), + path("${params.outdir}/star_salmon/rseqc/junction_annotation/bed/RAP1_UNINDUCED_REP1.junction.Interact.bed"), + path("${params.outdir}/star_salmon/rseqc/junction_annotation/bed/RAP1_UNINDUCED_REP2.junction.bed"), + path("${params.outdir}/star_salmon/rseqc/junction_annotation/bed/RAP1_UNINDUCED_REP2.junction.Interact.bed"), + path("${params.outdir}/star_salmon/rseqc/junction_annotation/bed/WT_REP1.junction.bed"), + path("${params.outdir}/star_salmon/rseqc/junction_annotation/bed/WT_REP1.junction.Interact.bed"), + path("${params.outdir}/star_salmon/rseqc/junction_annotation/bed/WT_REP2.junction.bed"), + path("${params.outdir}/star_salmon/rseqc/junction_annotation/bed/WT_REP2.junction.Interact.bed"), + path("${params.outdir}/star_salmon/rseqc/junction_annotation/log/RAP1_IAA_30M_REP1.junction_annotation.log"), + path("${params.outdir}/star_salmon/rseqc/junction_annotation/log/RAP1_UNINDUCED_REP1.junction_annotation.log"), + path("${params.outdir}/star_salmon/rseqc/junction_annotation/log/RAP1_UNINDUCED_REP2.junction_annotation.log"), + path("${params.outdir}/star_salmon/rseqc/junction_annotation/log/WT_REP1.junction_annotation.log"), + path("${params.outdir}/star_salmon/rseqc/junction_annotation/log/WT_REP2.junction_annotation.log"), + path("${params.outdir}/star_salmon/rseqc/junction_annotation/pdf/RAP1_IAA_30M_REP1.splice_events.pdf"), + path("${params.outdir}/star_salmon/rseqc/junction_annotation/pdf/RAP1_IAA_30M_REP1.splice_junction.pdf"), + path("${params.outdir}/star_salmon/rseqc/junction_annotation/pdf/RAP1_UNINDUCED_REP1.splice_events.pdf"), + path("${params.outdir}/star_salmon/rseqc/junction_annotation/pdf/RAP1_UNINDUCED_REP1.splice_junction.pdf"), + path("${params.outdir}/star_salmon/rseqc/junction_annotation/pdf/RAP1_UNINDUCED_REP2.splice_events.pdf"), + path("${params.outdir}/star_salmon/rseqc/junction_annotation/pdf/RAP1_UNINDUCED_REP2.splice_junction.pdf"), + path("${params.outdir}/star_salmon/rseqc/junction_annotation/pdf/WT_REP1.splice_events.pdf"), + path("${params.outdir}/star_salmon/rseqc/junction_annotation/pdf/WT_REP1.splice_junction.pdf"), + path("${params.outdir}/star_salmon/rseqc/junction_annotation/pdf/WT_REP2.splice_events.pdf"), + path("${params.outdir}/star_salmon/rseqc/junction_annotation/pdf/WT_REP2.splice_junction.pdf"), + path("${params.outdir}/star_salmon/rseqc/junction_annotation/rscript/RAP1_IAA_30M_REP1.junction_plot.r"), + path("${params.outdir}/star_salmon/rseqc/junction_annotation/rscript/RAP1_UNINDUCED_REP1.junction_plot.r"), + path("${params.outdir}/star_salmon/rseqc/junction_annotation/rscript/RAP1_UNINDUCED_REP2.junction_plot.r"), + path("${params.outdir}/star_salmon/rseqc/junction_annotation/rscript/WT_REP1.junction_plot.r"), + path("${params.outdir}/star_salmon/rseqc/junction_annotation/rscript/WT_REP2.junction_plot.r"), + path("${params.outdir}/star_salmon/rseqc/junction_annotation/xls/RAP1_IAA_30M_REP1.junction.xls"), + path("${params.outdir}/star_salmon/rseqc/junction_annotation/xls/RAP1_UNINDUCED_REP1.junction.xls"), + path("${params.outdir}/star_salmon/rseqc/junction_annotation/xls/RAP1_UNINDUCED_REP2.junction.xls"), + path("${params.outdir}/star_salmon/rseqc/junction_annotation/xls/WT_REP1.junction.xls"), + path("${params.outdir}/star_salmon/rseqc/junction_annotation/xls/WT_REP2.junction.xls"), + path("${params.outdir}/star_salmon/rseqc/junction_saturation/pdf/RAP1_IAA_30M_REP1.junctionSaturation_plot.pdf"), + path("${params.outdir}/star_salmon/rseqc/junction_saturation/pdf/RAP1_UNINDUCED_REP1.junctionSaturation_plot.pdf"), + path("${params.outdir}/star_salmon/rseqc/junction_saturation/pdf/RAP1_UNINDUCED_REP2.junctionSaturation_plot.pdf"), + path("${params.outdir}/star_salmon/rseqc/junction_saturation/pdf/WT_REP1.junctionSaturation_plot.pdf"), + path("${params.outdir}/star_salmon/rseqc/junction_saturation/pdf/WT_REP2.junctionSaturation_plot.pdf"), + path("${params.outdir}/star_salmon/rseqc/junction_saturation/rscript/RAP1_IAA_30M_REP1.junctionSaturation_plot.r"), + path("${params.outdir}/star_salmon/rseqc/junction_saturation/rscript/RAP1_UNINDUCED_REP1.junctionSaturation_plot.r"), + path("${params.outdir}/star_salmon/rseqc/junction_saturation/rscript/RAP1_UNINDUCED_REP2.junctionSaturation_plot.r"), + path("${params.outdir}/star_salmon/rseqc/junction_saturation/rscript/WT_REP1.junctionSaturation_plot.r"), + path("${params.outdir}/star_salmon/rseqc/junction_saturation/rscript/WT_REP2.junctionSaturation_plot.r"), + path("${params.outdir}/star_salmon/rseqc/read_distribution/RAP1_IAA_30M_REP1.read_distribution.txt"), + path("${params.outdir}/star_salmon/rseqc/read_distribution/RAP1_UNINDUCED_REP1.read_distribution.txt"), + path("${params.outdir}/star_salmon/rseqc/read_distribution/RAP1_UNINDUCED_REP2.read_distribution.txt"), + path("${params.outdir}/star_salmon/rseqc/read_distribution/WT_REP1.read_distribution.txt"), + path("${params.outdir}/star_salmon/rseqc/read_distribution/WT_REP2.read_distribution.txt"), + path("${params.outdir}/star_salmon/rseqc/read_duplication/pdf/RAP1_IAA_30M_REP1.DupRate_plot.pdf"), + path("${params.outdir}/star_salmon/rseqc/read_duplication/pdf/RAP1_UNINDUCED_REP1.DupRate_plot.pdf"), + path("${params.outdir}/star_salmon/rseqc/read_duplication/pdf/RAP1_UNINDUCED_REP2.DupRate_plot.pdf"), + path("${params.outdir}/star_salmon/rseqc/read_duplication/pdf/WT_REP1.DupRate_plot.pdf"), + path("${params.outdir}/star_salmon/rseqc/read_duplication/pdf/WT_REP2.DupRate_plot.pdf"), + path("${params.outdir}/star_salmon/rseqc/read_duplication/rscript/RAP1_IAA_30M_REP1.DupRate_plot.r"), + path("${params.outdir}/star_salmon/rseqc/read_duplication/rscript/RAP1_UNINDUCED_REP1.DupRate_plot.r"), + path("${params.outdir}/star_salmon/rseqc/read_duplication/rscript/RAP1_UNINDUCED_REP2.DupRate_plot.r"), + path("${params.outdir}/star_salmon/rseqc/read_duplication/rscript/WT_REP1.DupRate_plot.r"), + path("${params.outdir}/star_salmon/rseqc/read_duplication/rscript/WT_REP2.DupRate_plot.r"), + path("${params.outdir}/star_salmon/rseqc/read_duplication/xls/RAP1_IAA_30M_REP1.pos.DupRate.xls"), + path("${params.outdir}/star_salmon/rseqc/read_duplication/xls/RAP1_IAA_30M_REP1.seq.DupRate.xls"), + path("${params.outdir}/star_salmon/rseqc/read_duplication/xls/RAP1_UNINDUCED_REP1.pos.DupRate.xls"), + path("${params.outdir}/star_salmon/rseqc/read_duplication/xls/RAP1_UNINDUCED_REP1.seq.DupRate.xls"), + path("${params.outdir}/star_salmon/rseqc/read_duplication/xls/RAP1_UNINDUCED_REP2.pos.DupRate.xls"), + path("${params.outdir}/star_salmon/rseqc/read_duplication/xls/RAP1_UNINDUCED_REP2.seq.DupRate.xls"), + path("${params.outdir}/star_salmon/rseqc/read_duplication/xls/WT_REP1.pos.DupRate.xls"), + path("${params.outdir}/star_salmon/rseqc/read_duplication/xls/WT_REP1.seq.DupRate.xls"), + path("${params.outdir}/star_salmon/rseqc/read_duplication/xls/WT_REP2.pos.DupRate.xls"), + path("${params.outdir}/star_salmon/rseqc/read_duplication/xls/WT_REP2.seq.DupRate.xls") + ).match("star_salmon/rseqc") }, + { assert snapshot( + path("${params.outdir}/star_salmon/salmon.merged.gene_counts_length_scaled.SummarizedExperiment.rds"), + path("${params.outdir}/star_salmon/salmon.merged.gene_counts_length_scaled.tsv"), + path("${params.outdir}/star_salmon/salmon.merged.gene_counts_scaled.SummarizedExperiment.rds"), + path("${params.outdir}/star_salmon/salmon.merged.gene_counts_scaled.tsv"), + path("${params.outdir}/star_salmon/salmon.merged.gene_counts.SummarizedExperiment.rds"), + path("${params.outdir}/star_salmon/salmon.merged.gene_counts.tsv"), + path("${params.outdir}/star_salmon/salmon.merged.gene_lengths.tsv"), + path("${params.outdir}/star_salmon/salmon.merged.gene_tpm.tsv"), + path("${params.outdir}/star_salmon/salmon.merged.transcript_counts.SummarizedExperiment.rds"), + path("${params.outdir}/star_salmon/salmon.merged.transcript_counts.tsv"), + path("${params.outdir}/star_salmon/salmon.merged.transcript_lengths.tsv"), + path("${params.outdir}/star_salmon/salmon.merged.transcript_tpm.tsv") + ).match("star_salmon/salmon") }, + { assert snapshot( + path("${params.outdir}/star_salmon/samtools_stats/RAP1_IAA_30M_REP1.markdup.sorted.bam.flagstat"), + path("${params.outdir}/star_salmon/samtools_stats/RAP1_IAA_30M_REP1.markdup.sorted.bam.idxstats"), + path("${params.outdir}/star_salmon/samtools_stats/RAP1_IAA_30M_REP1.markdup.sorted.bam.stats"), + path("${params.outdir}/star_salmon/samtools_stats/RAP1_IAA_30M_REP1.sorted.bam.flagstat"), + path("${params.outdir}/star_salmon/samtools_stats/RAP1_IAA_30M_REP1.sorted.bam.idxstats"), + path("${params.outdir}/star_salmon/samtools_stats/RAP1_IAA_30M_REP1.sorted.bam.stats"), + path("${params.outdir}/star_salmon/samtools_stats/RAP1_UNINDUCED_REP1.markdup.sorted.bam.flagstat"), + path("${params.outdir}/star_salmon/samtools_stats/RAP1_UNINDUCED_REP1.markdup.sorted.bam.idxstats"), + path("${params.outdir}/star_salmon/samtools_stats/RAP1_UNINDUCED_REP1.markdup.sorted.bam.stats"), + path("${params.outdir}/star_salmon/samtools_stats/RAP1_UNINDUCED_REP1.sorted.bam.flagstat"), + path("${params.outdir}/star_salmon/samtools_stats/RAP1_UNINDUCED_REP1.sorted.bam.idxstats"), + path("${params.outdir}/star_salmon/samtools_stats/RAP1_UNINDUCED_REP1.sorted.bam.stats"), + path("${params.outdir}/star_salmon/samtools_stats/RAP1_UNINDUCED_REP2.markdup.sorted.bam.flagstat"), + path("${params.outdir}/star_salmon/samtools_stats/RAP1_UNINDUCED_REP2.markdup.sorted.bam.idxstats"), + path("${params.outdir}/star_salmon/samtools_stats/RAP1_UNINDUCED_REP2.markdup.sorted.bam.stats"), + path("${params.outdir}/star_salmon/samtools_stats/RAP1_UNINDUCED_REP2.sorted.bam.flagstat"), + path("${params.outdir}/star_salmon/samtools_stats/RAP1_UNINDUCED_REP2.sorted.bam.idxstats"), + path("${params.outdir}/star_salmon/samtools_stats/RAP1_UNINDUCED_REP2.sorted.bam.stats"), + path("${params.outdir}/star_salmon/samtools_stats/WT_REP1.markdup.sorted.bam.flagstat"), + path("${params.outdir}/star_salmon/samtools_stats/WT_REP1.markdup.sorted.bam.idxstats"), + path("${params.outdir}/star_salmon/samtools_stats/WT_REP1.markdup.sorted.bam.stats"), + path("${params.outdir}/star_salmon/samtools_stats/WT_REP1.sorted.bam.flagstat"), + path("${params.outdir}/star_salmon/samtools_stats/WT_REP1.sorted.bam.idxstats"), + path("${params.outdir}/star_salmon/samtools_stats/WT_REP1.sorted.bam.stats"), + path("${params.outdir}/star_salmon/samtools_stats/WT_REP2.markdup.sorted.bam.flagstat"), + path("${params.outdir}/star_salmon/samtools_stats/WT_REP2.markdup.sorted.bam.idxstats"), + path("${params.outdir}/star_salmon/samtools_stats/WT_REP2.markdup.sorted.bam.stats"), + path("${params.outdir}/star_salmon/samtools_stats/WT_REP2.sorted.bam.flagstat"), + path("${params.outdir}/star_salmon/samtools_stats/WT_REP2.sorted.bam.idxstats"), + path("${params.outdir}/star_salmon/samtools_stats/WT_REP2.sorted.bam.stats") + ).match("star_salmon/samtools_stats") }, + { assert snapshot( + path("${params.outdir}/star_salmon/stringtie/RAP1_IAA_30M_REP1.ballgown/e2t.ctab"), + path("${params.outdir}/star_salmon/stringtie/RAP1_IAA_30M_REP1.ballgown/e_data.ctab"), + path("${params.outdir}/star_salmon/stringtie/RAP1_IAA_30M_REP1.ballgown/i2t.ctab"), + path("${params.outdir}/star_salmon/stringtie/RAP1_IAA_30M_REP1.ballgown/i_data.ctab"), + path("${params.outdir}/star_salmon/stringtie/RAP1_IAA_30M_REP1.ballgown/t_data.ctab"), + path("${params.outdir}/star_salmon/stringtie/RAP1_IAA_30M_REP1.coverage.gtf"), + path("${params.outdir}/star_salmon/stringtie/RAP1_IAA_30M_REP1.gene.abundance.txt"), + path("${params.outdir}/star_salmon/stringtie/RAP1_IAA_30M_REP1.transcripts.gtf"), + path("${params.outdir}/star_salmon/stringtie/RAP1_UNINDUCED_REP1.ballgown/e2t.ctab"), + path("${params.outdir}/star_salmon/stringtie/RAP1_UNINDUCED_REP1.ballgown/e_data.ctab"), + path("${params.outdir}/star_salmon/stringtie/RAP1_UNINDUCED_REP1.ballgown/i2t.ctab"), + path("${params.outdir}/star_salmon/stringtie/RAP1_UNINDUCED_REP1.ballgown/i_data.ctab"), + path("${params.outdir}/star_salmon/stringtie/RAP1_UNINDUCED_REP1.ballgown/t_data.ctab"), + path("${params.outdir}/star_salmon/stringtie/RAP1_UNINDUCED_REP1.coverage.gtf"), + path("${params.outdir}/star_salmon/stringtie/RAP1_UNINDUCED_REP1.gene.abundance.txt"), + path("${params.outdir}/star_salmon/stringtie/RAP1_UNINDUCED_REP1.transcripts.gtf"), + path("${params.outdir}/star_salmon/stringtie/RAP1_UNINDUCED_REP2.ballgown/e2t.ctab"), + path("${params.outdir}/star_salmon/stringtie/RAP1_UNINDUCED_REP2.ballgown/e_data.ctab"), + path("${params.outdir}/star_salmon/stringtie/RAP1_UNINDUCED_REP2.ballgown/i2t.ctab"), + path("${params.outdir}/star_salmon/stringtie/RAP1_UNINDUCED_REP2.ballgown/i_data.ctab"), + path("${params.outdir}/star_salmon/stringtie/RAP1_UNINDUCED_REP2.ballgown/t_data.ctab"), + path("${params.outdir}/star_salmon/stringtie/RAP1_UNINDUCED_REP2.coverage.gtf"), + path("${params.outdir}/star_salmon/stringtie/RAP1_UNINDUCED_REP2.gene.abundance.txt"), + path("${params.outdir}/star_salmon/stringtie/RAP1_UNINDUCED_REP2.transcripts.gtf"), + path("${params.outdir}/star_salmon/stringtie/WT_REP1.ballgown/e2t.ctab"), + path("${params.outdir}/star_salmon/stringtie/WT_REP1.ballgown/e_data.ctab"), + path("${params.outdir}/star_salmon/stringtie/WT_REP1.ballgown/i2t.ctab"), + path("${params.outdir}/star_salmon/stringtie/WT_REP1.ballgown/i_data.ctab"), + path("${params.outdir}/star_salmon/stringtie/WT_REP1.ballgown/t_data.ctab"), + path("${params.outdir}/star_salmon/stringtie/WT_REP1.coverage.gtf"), + path("${params.outdir}/star_salmon/stringtie/WT_REP1.gene.abundance.txt"), + path("${params.outdir}/star_salmon/stringtie/WT_REP1.transcripts.gtf"), + path("${params.outdir}/star_salmon/stringtie/WT_REP2.ballgown/e2t.ctab"), + path("${params.outdir}/star_salmon/stringtie/WT_REP2.ballgown/e_data.ctab"), + path("${params.outdir}/star_salmon/stringtie/WT_REP2.ballgown/i2t.ctab"), + path("${params.outdir}/star_salmon/stringtie/WT_REP2.ballgown/i_data.ctab"), + path("${params.outdir}/star_salmon/stringtie/WT_REP2.ballgown/t_data.ctab"), + path("${params.outdir}/star_salmon/stringtie/WT_REP2.coverage.gtf"), + path("${params.outdir}/star_salmon/stringtie/WT_REP2.gene.abundance.txt"), + path("${params.outdir}/star_salmon/stringtie/WT_REP2.transcripts.gtf") + ).match("star_salmon/stringtie") }, + { assert snapshot( + path("${params.outdir}/star_salmon/tx2gene.tsv"), + path("${params.outdir}/star_salmon/RAP1_IAA_30M_REP1/aux_info/ambig_info.tsv"), + path("${params.outdir}/star_salmon/RAP1_IAA_30M_REP1/aux_info/expected_bias.gz"), + path("${params.outdir}/star_salmon/RAP1_IAA_30M_REP1/aux_info/fld.gz"), + path("${params.outdir}/star_salmon/RAP1_IAA_30M_REP1/aux_info/meta_info.json"), + path("${params.outdir}/star_salmon/RAP1_IAA_30M_REP1/aux_info/observed_bias_3p.gz"), + path("${params.outdir}/star_salmon/RAP1_IAA_30M_REP1/aux_info/observed_bias.gz"), + path("${params.outdir}/star_salmon/RAP1_IAA_30M_REP1/cmd_info.json"), + path("${params.outdir}/star_salmon/RAP1_IAA_30M_REP1/libParams/flenDist.txt"), + path("${params.outdir}/star_salmon/RAP1_IAA_30M_REP1/logs/salmon_quant.log"), + path("${params.outdir}/star_salmon/RAP1_IAA_30M_REP1.markdup.sorted.bam"), + path("${params.outdir}/star_salmon/RAP1_IAA_30M_REP1.markdup.sorted.bam.bai"), + path("${params.outdir}/star_salmon/RAP1_IAA_30M_REP1/quant.genes.sf"), + path("${params.outdir}/star_salmon/RAP1_IAA_30M_REP1/quant.sf"), + path("${params.outdir}/star_salmon/RAP1_UNINDUCED_REP1/aux_info/ambig_info.tsv"), + path("${params.outdir}/star_salmon/RAP1_UNINDUCED_REP1/aux_info/expected_bias.gz"), + path("${params.outdir}/star_salmon/RAP1_UNINDUCED_REP1/aux_info/fld.gz"), + path("${params.outdir}/star_salmon/RAP1_UNINDUCED_REP1/aux_info/meta_info.json"), + path("${params.outdir}/star_salmon/RAP1_UNINDUCED_REP1/aux_info/observed_bias_3p.gz"), + path("${params.outdir}/star_salmon/RAP1_UNINDUCED_REP1/aux_info/observed_bias.gz"), + path("${params.outdir}/star_salmon/RAP1_UNINDUCED_REP1/cmd_info.json"), + path("${params.outdir}/star_salmon/RAP1_UNINDUCED_REP1/libParams/flenDist.txt"), + path("${params.outdir}/star_salmon/RAP1_UNINDUCED_REP1/logs/salmon_quant.log"), + path("${params.outdir}/star_salmon/RAP1_UNINDUCED_REP1.markdup.sorted.bam"), + path("${params.outdir}/star_salmon/RAP1_UNINDUCED_REP1.markdup.sorted.bam.bai"), + path("${params.outdir}/star_salmon/RAP1_UNINDUCED_REP1/quant.genes.sf"), + path("${params.outdir}/star_salmon/RAP1_UNINDUCED_REP1/quant.sf"), + path("${params.outdir}/star_salmon/RAP1_UNINDUCED_REP2/aux_info/ambig_info.tsv"), + path("${params.outdir}/star_salmon/RAP1_UNINDUCED_REP2/aux_info/expected_bias.gz"), + path("${params.outdir}/star_salmon/RAP1_UNINDUCED_REP2/aux_info/fld.gz"), + path("${params.outdir}/star_salmon/RAP1_UNINDUCED_REP2/aux_info/meta_info.json"), + path("${params.outdir}/star_salmon/RAP1_UNINDUCED_REP2/aux_info/observed_bias_3p.gz"), + path("${params.outdir}/star_salmon/RAP1_UNINDUCED_REP2/aux_info/observed_bias.gz"), + path("${params.outdir}/star_salmon/RAP1_UNINDUCED_REP2/cmd_info.json"), + path("${params.outdir}/star_salmon/RAP1_UNINDUCED_REP2/libParams/flenDist.txt"), + path("${params.outdir}/star_salmon/RAP1_UNINDUCED_REP2/logs/salmon_quant.log"), + path("${params.outdir}/star_salmon/RAP1_UNINDUCED_REP2.markdup.sorted.bam"), + path("${params.outdir}/star_salmon/RAP1_UNINDUCED_REP2.markdup.sorted.bam.bai"), + path("${params.outdir}/star_salmon/RAP1_UNINDUCED_REP2/quant.genes.sf"), + path("${params.outdir}/star_salmon/RAP1_UNINDUCED_REP2/quant.sf"), + path("${params.outdir}/star_salmon/WT_REP1/aux_info/ambig_info.tsv"), + path("${params.outdir}/star_salmon/WT_REP1/aux_info/expected_bias.gz"), + path("${params.outdir}/star_salmon/WT_REP1/aux_info/fld.gz"), + path("${params.outdir}/star_salmon/WT_REP1/aux_info/meta_info.json"), + path("${params.outdir}/star_salmon/WT_REP1/aux_info/observed_bias_3p.gz"), + path("${params.outdir}/star_salmon/WT_REP1/aux_info/observed_bias.gz"), + path("${params.outdir}/star_salmon/WT_REP1/cmd_info.json"), + path("${params.outdir}/star_salmon/WT_REP1/libParams/flenDist.txt"), + path("${params.outdir}/star_salmon/WT_REP1/logs/salmon_quant.log"), + path("${params.outdir}/star_salmon/WT_REP1.markdup.sorted.bam"), + path("${params.outdir}/star_salmon/WT_REP1.markdup.sorted.bam.bai"), + path("${params.outdir}/star_salmon/WT_REP1/quant.genes.sf"), + path("${params.outdir}/star_salmon/WT_REP1/quant.sf"), + path("${params.outdir}/star_salmon/WT_REP2/aux_info/ambig_info.tsv"), + path("${params.outdir}/star_salmon/WT_REP2/aux_info/expected_bias.gz"), + path("${params.outdir}/star_salmon/WT_REP2/aux_info/fld.gz"), + path("${params.outdir}/star_salmon/WT_REP2/aux_info/meta_info.json"), + path("${params.outdir}/star_salmon/WT_REP2/aux_info/observed_bias_3p.gz"), + path("${params.outdir}/star_salmon/WT_REP2/aux_info/observed_bias.gz"), + path("${params.outdir}/star_salmon/WT_REP2/cmd_info.json"), + path("${params.outdir}/star_salmon/WT_REP2/libParams/flenDist.txt"), + path("${params.outdir}/star_salmon/WT_REP2/logs/salmon_quant.log"), + path("${params.outdir}/star_salmon/WT_REP2.markdup.sorted.bam"), + path("${params.outdir}/star_salmon/WT_REP2.markdup.sorted.bam.bai"), + path("${params.outdir}/star_salmon/WT_REP2/quant.genes.sf"), + path("${params.outdir}/star_salmon/WT_REP2/quant.sf") + ).match("star_salmon") }, + { assert snapshot( + path("${params.outdir}/trimgalore/RAP1_IAA_30M_REP1_trimmed_1.fastq.gz_trimming_report.txt"), + path("${params.outdir}/trimgalore/RAP1_IAA_30M_REP1_trimmed_2.fastq.gz_trimming_report.txt"), + path("${params.outdir}/trimgalore/RAP1_UNINDUCED_REP1_trimmed.fastq.gz_trimming_report.txt"), + path("${params.outdir}/trimgalore/RAP1_UNINDUCED_REP2_trimmed.fastq.gz_trimming_report.txt"), + path("${params.outdir}/trimgalore/WT_REP1_trimmed_1.fastq.gz_trimming_report.txt"), + path("${params.outdir}/trimgalore/WT_REP1_trimmed_2.fastq.gz_trimming_report.txt"), + path("${params.outdir}/trimgalore/WT_REP2_trimmed_1.fastq.gz_trimming_report.txt"), + path("${params.outdir}/trimgalore/WT_REP2_trimmed_2.fastq.gz_trimming_report.txt") + ).match("trimgalore") }, + { assert snapshot( + UTILS.removeNextflowVersion("$outputDir/pipeline_info/nf_core_rnaseq_software_mqc_versions.yml") + ).match("versions") } ) } } @@ -47,8 +908,32 @@ nextflow_pipeline { then { assertAll( { assert workflow.success }, - { assert snapshot(UTILS.removeNextflowVersion("$outputDir/pipeline_info/nf_core_rnaseq_software_mqc_versions.yml")).match() } + { assert snapshot( + UTILS.removeNextflowVersion("$outputDir/pipeline_info/nf_core_rnaseq_software_mqc_versions.yml"), + file("${params.outdir}/custom/out/genome_gfp.fasta").name, + file("${params.outdir}/custom/out/genome_gfp.gtf").name, + file("${params.outdir}/fastqc/raw/RAP1_IAA_30M_REP1_raw.html").name, + file("${params.outdir}/fastqc/raw/RAP1_IAA_30M_REP1_raw.zip").name, + file("${params.outdir}/fastqc/raw/RAP1_UNINDUCED_REP1_raw.html").name, + file("${params.outdir}/fastqc/raw/RAP1_UNINDUCED_REP1_raw.zip").name, + file("${params.outdir}/fastqc/raw/RAP1_UNINDUCED_REP2_raw.html").name, + file("${params.outdir}/fastqc/raw/RAP1_UNINDUCED_REP2_raw.zip").name, + file("${params.outdir}/fastqc/raw/WT_REP1_raw.html").name, + file("${params.outdir}/fastqc/raw/WT_REP1_raw.zip").name, + file("${params.outdir}/fastqc/raw/WT_REP2_raw.html").name, + file("${params.outdir}/fastqc/raw/WT_REP2_raw.zip").name, + file("${params.outdir}/multiqc/star_salmon/multiqc_report.html").name, + file("${params.outdir}/trimgalore/RAP1_IAA_30M_REP1_trimmed_1.fastq.gz_trimming_report.txt").name, + file("${params.outdir}/trimgalore/RAP1_IAA_30M_REP1_trimmed_2.fastq.gz_trimming_report.txt").name, + file("${params.outdir}/trimgalore/RAP1_UNINDUCED_REP1_trimmed.fastq.gz_trimming_report.txt").name, + file("${params.outdir}/trimgalore/RAP1_UNINDUCED_REP2_trimmed.fastq.gz_trimming_report.txt").name, + file("${params.outdir}/trimgalore/WT_REP1_trimmed_1.fastq.gz_trimming_report.txt").name, + file("${params.outdir}/trimgalore/WT_REP1_trimmed_2.fastq.gz_trimming_report.txt").name, + file("${params.outdir}/trimgalore/WT_REP2_trimmed_1.fastq.gz_trimming_report.txt").name, + file("${params.outdir}/trimgalore/WT_REP2_trimmed_2.fastq.gz_trimming_report.txt").name + ).match() } ) } } + } diff --git a/tests/default.nf.test.snap b/tests/default.nf.test.snap index 7371218e8..db3779ee9 100644 --- a/tests/default.nf.test.snap +++ b/tests/default.nf.test.snap @@ -1,35 +1,77 @@ { - "Params: default - stub": { + "references": { "content": [ - "{BBMAP_BBSPLIT={bbmap=39.01}, CAT_FASTQ={cat=8.3}, CUSTOM_CATADDITIONALFASTA={python=null}, CUSTOM_GETCHROMSIZES={getchromsizes=1.2}, FASTQC={fastqc=0.12.1}, GTF2BED={perl=5.26.2}, GTF_FILTER={python=3.9.5}, GUNZIP_ADDITIONAL_FASTA={gunzip=1.1}, GUNZIP_GTF={gunzip=1.1}, STAR_GENOMEGENERATE={star=2.7.10a, samtools=1.18, gawk=5.1.0}, TRIMGALORE={trimgalore=0.6.7, cutadapt=3.4}, UNTAR_SALMON_INDEX={untar=1.34}, Workflow={nf-core/rnaseq=v3.15.0dev}}" + "genome_gfp.fasta:md5,e23e302af63736a199985a169fdac055", + "genome_gfp.gtf:md5,c98b12c302f15731bfc36bcf297cfe28" ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.3" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-07-12T16:33:33.623985" + "timestamp": "2024-08-21T19:22:22.006847" }, - "Params: default": { + "fastqc/trim": { "content": [ - "{BBMAP_BBSPLIT={bbmap=39.01}, BEDTOOLS_GENOMECOV_FW={bedtools=2.31.1}, CAT_FASTQ={cat=8.3}, CUSTOM_CATADDITIONALFASTA={python=3.9.5}, CUSTOM_GETCHROMSIZES={getchromsizes=1.2}, CUSTOM_TX2GENE={python=3.9.5}, DESEQ2_QC_PSEUDO={r-base=4.0.3, bioconductor-deseq2=1.28.0}, DESEQ2_QC_STAR_SALMON={r-base=4.0.3, bioconductor-deseq2=1.28.0}, DUPRADAR={bioconductor-dupradar=1.32.0}, FASTQC={fastqc=0.12.1}, FQ_SUBSAMPLE={fq=0.9.1 (2022-02-22)}, GTF2BED={perl=5.26.2}, GTF_FILTER={python=3.9.5}, GUNZIP_ADDITIONAL_FASTA={gunzip=1.1}, GUNZIP_GTF={gunzip=1.1}, MULTIQC_CUSTOM_BIOTYPE={python=3.9.5}, PICARD_MARKDUPLICATES={picard=3.1.1}, QUALIMAP_RNASEQ={qualimap=2.3}, RSEQC_BAMSTAT={rseqc=5.0.2}, RSEQC_INFEREXPERIMENT={rseqc=5.0.2}, RSEQC_INNERDISTANCE={rseqc=5.0.2}, RSEQC_JUNCTIONANNOTATION={rseqc=5.0.2}, RSEQC_JUNCTIONSATURATION={rseqc=5.0.2}, RSEQC_READDISTRIBUTION={rseqc=5.0.2}, RSEQC_READDUPLICATION={rseqc=5.0.2}, SALMON_QUANT={salmon=1.10.1}, SAMTOOLS_FLAGSTAT={samtools=1.2}, SAMTOOLS_IDXSTATS={samtools=1.2}, SAMTOOLS_INDEX={samtools=1.2}, SAMTOOLS_SORT={samtools=1.2}, SAMTOOLS_STATS={samtools=1.2}, SE_GENE={bioconductor-summarizedexperiment=1.32.0}, STAR_ALIGN={star=2.7.10a, samtools=1.18, gawk=5.1.0}, STAR_GENOMEGENERATE={star=2.7.10a, samtools=1.18, gawk=5.1.0}, STRINGTIE_STRINGTIE={stringtie=2.2.1}, SUBREAD_FEATURECOUNTS={subread=2.0.1}, TRIMGALORE={trimgalore=0.6.7, cutadapt=3.4}, TXIMETA_TXIMPORT={bioconductor-tximeta=1.20.1}, UCSC_BEDCLIP={ucsc=377}, UCSC_BEDGRAPHTOBIGWIG={ucsc=445}, UNTAR_SALMON_INDEX={untar=1.34}, Workflow={nf-core/rnaseq=v3.15.0dev}}", - "genome_gfp.fasta:md5,e23e302af63736a199985a169fdac055", - "genome_gfp.gtf:md5,c98b12c302f15731bfc36bcf297cfe28", - "salmon.merged.transcript_counts.tsv:md5,ff0f5be09ca7a322672c0074ba35da17", - "RAP1_IAA_30M_REP1.forward.bigWig:md5,0abafd7a9f9035469c003fd3dabd73e8", - "RAP1_IAA_30M_REP1.reverse.bigWig:md5,0f1e9ac71fc0b99785f06ecb860ef00e", - "RAP1_UNINDUCED_REP1.forward.bigWig:md5,09e8d65e21ac92e9a3b78afe3acdf28b", - "RAP1_UNINDUCED_REP1.reverse.bigWig:md5,8b002d23911f95f1c5b9965c2e7d0737", - "RAP1_UNINDUCED_REP2.forward.bigWig:md5,eede9cac23d47c4685dc13507e97bfb9", - "RAP1_UNINDUCED_REP2.reverse.bigWig:md5,a835e0ac51231016c52de94c18ebd466", - "WT_REP1.forward.bigWig:md5,92ad01ddd1dbb7f6d7e2eae23df58c7c", - "WT_REP1.reverse.bigWig:md5,dcac37ef5fff108afd0632388919dcf7", - "WT_REP2.forward.bigWig:md5,d10cbea27b82745b46077191d3ff2820", - "WT_REP2.reverse.bigWig:md5,2b3a15b511efdbc838574200ee2bec0c" + "RAP1_IAA_30M_REP1_trimmed_1_val_1_fastqc.html:md5,be3df48707a8e573984eefc5c14a03d5", + "RAP1_IAA_30M_REP1_trimmed_1_val_1_fastqc.zip:md5,83d97092d77748d5041cbb5d4e138543", + "RAP1_IAA_30M_REP1_trimmed_2_val_2_fastqc.html:md5,16162c5f476b57fb7b3ac10f3e016b0e", + "RAP1_IAA_30M_REP1_trimmed_2_val_2_fastqc.zip:md5,fff332745d9186d7ea2c01d9b9aa4442", + "RAP1_UNINDUCED_REP1_trimmed_trimmed_fastqc.html:md5,bce21c8b85bcc591723927356d17109c", + "RAP1_UNINDUCED_REP1_trimmed_trimmed_fastqc.zip:md5,a005818480609e511fdc516bde8000c9", + "RAP1_UNINDUCED_REP2_trimmed_trimmed_fastqc.html:md5,87ec232cb87031475c24820324421dee", + "RAP1_UNINDUCED_REP2_trimmed_trimmed_fastqc.zip:md5,c714ace4a101fa73462f149ef222003e", + "WT_REP1_trimmed_1_val_1_fastqc.html:md5,747c6ed7dbb2ddea2a231b9fd8726c4c", + "WT_REP1_trimmed_1_val_1_fastqc.zip:md5,88e604365901240bb21dd6e8cd803926", + "WT_REP1_trimmed_2_val_2_fastqc.html:md5,3a0f2595881efe2b1b014f731bb03869", + "WT_REP1_trimmed_2_val_2_fastqc.zip:md5,dbef90ece043fd51bdaa52658e9ee12c", + "WT_REP2_trimmed_1_val_1_fastqc.html:md5,bee0baae4f120d669067d2e6824567f6", + "WT_REP2_trimmed_1_val_1_fastqc.zip:md5,bf4a8372297789a3e4f7662368ac74df", + "WT_REP2_trimmed_2_val_2_fastqc.html:md5,4cc6923a6f76d7ad99d6727f66bcd094", + "WT_REP2_trimmed_2_val_2_fastqc.zip:md5,8d0ea8b64a9524a5dfd9ac20de431868" + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-21T19:46:35.901089" + }, + "bbsplit": { + "content": [ + "RAP1_IAA_30M_REP1.stats.txt:md5,a87292c6f7166096166a9015c2e63dac", + "RAP1_UNINDUCED_REP1.stats.txt:md5,781e49024150a8313779c574b58ad035", + "RAP1_UNINDUCED_REP2.stats.txt:md5,e455d0163bf2d988224b0c0092605213", + "WT_REP1.stats.txt:md5,6eab6936804c1157d5e1c61c0562d7de", + "WT_REP2.stats.txt:md5,002ddf6b828d34979652a40f05462843" + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-21T19:46:35.032801" + }, + "fastqc/raw": { + "content": [ + "RAP1_IAA_30M_REP1_raw_1_fastqc.html:md5,b55cd1ea7b117a32c460e1fe6b075929", + "RAP1_IAA_30M_REP1_raw_1_fastqc.zip:md5,295b8bbb4a9b74c4152d578c959d42d6", + "RAP1_IAA_30M_REP1_raw_2_fastqc.html:md5,08f90dff9def052b80348669f501c0cc", + "RAP1_IAA_30M_REP1_raw_2_fastqc.zip:md5,c7ee8233a262dac8a9badea6dc07354a", + "RAP1_UNINDUCED_REP1_raw_fastqc.html:md5,84540e07fa0432f7f74aaa6ceacfa6d7", + "RAP1_UNINDUCED_REP1_raw_fastqc.zip:md5,59452db3bb13c9b0553d08238999ef89", + "RAP1_UNINDUCED_REP2_raw_fastqc.html:md5,d7f09428c8cb2af7657693f240909311", + "RAP1_UNINDUCED_REP2_raw_fastqc.zip:md5,8b91abb96d701ccff806037d94e5df1d", + "WT_REP1_raw_1_fastqc.html:md5,69a660d60b9d62c642a139b7d573d864", + "WT_REP1_raw_1_fastqc.zip:md5,1f647b63c2127a95d2df865e9e2d9bc7", + "WT_REP1_raw_2_fastqc.html:md5,51ee2fee5589e2e4697814d6d6f4204d", + "WT_REP1_raw_2_fastqc.zip:md5,1bed4b9ee323facbcfc2612026535c5a", + "WT_REP2_raw_1_fastqc.html:md5,aa156ab425f971a742cd607ece05e307", + "WT_REP2_raw_1_fastqc.zip:md5,9eb10fd06e0e854ed9cedb5c18034931", + "WT_REP2_raw_2_fastqc.html:md5,60ad56bc57db84ff236b4af22d7f9b7c", + "WT_REP2_raw_2_fastqc.zip:md5,7725dfcabd958c3838e1b018bbd6948f" ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.3" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-07-12T16:32:22.039132" + "timestamp": "2024-08-21T19:46:35.355529" } -} +} \ No newline at end of file From 1087b2622d252e81af56433762e5eacd3c7bed39 Mon Sep 17 00:00:00 2001 From: maxulysse Date: Wed, 21 Aug 2024 19:53:13 +0200 Subject: [PATCH 561/634] animate metro map --- README.md | 2 +- docs/images/nf-core-rnaseq_metro_map_grey.svg | 5650 ++++++++-------- ...nf-core-rnaseq_metro_map_grey_animated.svg | 5754 +++++++++++++++++ 3 files changed, 8512 insertions(+), 2894 deletions(-) create mode 100644 docs/images/nf-core-rnaseq_metro_map_grey_animated.svg diff --git a/README.md b/README.md index 411dfd3f4..2c1e9f0dc 100644 --- a/README.md +++ b/README.md @@ -20,7 +20,7 @@ **nf-core/rnaseq** is a bioinformatics pipeline that can be used to analyse RNA sequencing data obtained from organisms with a reference genome and annotation. It takes a samplesheet and FASTQ files as input, performs quality control (QC), trimming and (pseudo-)alignment, and produces a gene expression matrix and extensive QC report. -![nf-core/rnaseq metro map](docs/images/nf-core-rnaseq_metro_map_grey.png) +![nf-core/rnaseq metro map](docs/images/nf-core-rnaseq_metro_map_grey_animated.svg) 1. Merge re-sequenced FastQ files ([`cat`](http://www.linfo.org/cat.html)) 2. Auto-infer strandedness by subsampling and pseudoalignment ([`fq`](https://github.com/stjude-rust-labs/fq), [`Salmon`](https://combine-lab.github.io/salmon/)) diff --git a/docs/images/nf-core-rnaseq_metro_map_grey.svg b/docs/images/nf-core-rnaseq_metro_map_grey.svg index c49117c96..7b55ae7e5 100644 --- a/docs/images/nf-core-rnaseq_metro_map_grey.svg +++ b/docs/images/nf-core-rnaseq_metro_map_grey.svg @@ -2782,9 +2782,9 @@ borderopacity="1.0" inkscape:pageopacity="0.0" inkscape:pageshadow="2" - inkscape:zoom="0.40305088" - inkscape:cx="851.00918" - inkscape:cy="857.21188" + inkscape:zoom="0.57000002" + inkscape:cx="1418.421" + inkscape:cy="572.807" inkscape:document-units="mm" inkscape:current-layer="layer1" showgrid="false" @@ -2823,2932 +2823,2796 @@ inkscape:groupmode="layer" id="layer1" transform="translate(64.401787,107.17563)">

    $group

    \n" summary_section += "
    \n" - for (param in group_params.keySet()) { + group_params.keySet().sort().each { param -> summary_section += "
    $param
    ${group_params.get(param) ?: 'N/A'}
    \n" } summary_section += "
    \n" } } - String yaml_file_text = "id: '${workflow.manifest.name.replace('/','-')}-summary'\n" + 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" @@ -161,7 +160,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 +179,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 +187,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" @@ -287,7 +286,7 @@ def completionEmail(summary_params, email, email_on_fail, plaintext_email, outdi } def summary = [:] - for (group in summary_params.keySet()) { + summary_params.keySet().sort().each { group -> summary << summary_params[group] } @@ -344,10 +343,10 @@ def completionEmail(summary_params, email, email_on_fail, plaintext_email, outdi 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) { throw 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 } @@ -364,13 +363,13 @@ def completionEmail(summary_params, email, email_on_fail, plaintext_email, outdi // 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,7 +377,7 @@ 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}-" @@ -395,7 +394,7 @@ def completionSummary(monochrome_logs=true) { // def imNotification(summary_params, hook_url) { def summary = [:] - for (group in summary_params.keySet()) { + summary_params.keySet().sort().each { group -> summary << summary_params[group] } From d513df52486937b333fe975a3f1826a34c467a75 Mon Sep 17 00:00:00 2001 From: maxulysse Date: Wed, 28 Aug 2024 10:30:36 +0200 Subject: [PATCH 613/634] use proper script for dupradar --- modules/nf-core/dupradar/templates/dupradar.r | 9 ++++----- modules/nf-core/dupradar/tests/main.nf.test | 4 ---- 2 files changed, 4 insertions(+), 9 deletions(-) diff --git a/modules/nf-core/dupradar/templates/dupradar.r b/modules/nf-core/dupradar/templates/dupradar.r index cbaeded13..7653e5873 100755 --- a/modules/nf-core/dupradar/templates/dupradar.r +++ b/modules/nf-core/dupradar/templates/dupradar.r @@ -88,7 +88,6 @@ line="#id: DupInt # max: 100 # min: 0 # scale: 'RdYlGn-rev' -# format: '{:.2f}%' Sample dupRadar_intercept" write(line,file=paste0(output_prefix, "_dup_intercept_mqc.txt"),append=TRUE) @@ -115,21 +114,21 @@ line="#id: dupradar # This plot shows the general linear models - a summary of the gene duplication distributions. \" #pconfig: # title: 'DupRadar General Linear Model' -# xLog: True +# xlog: True # xlab: 'expression (reads/kbp)' # ylab: '% duplicate reads' # ymax: 100 # ymin: 0 # tt_label: '{point.x:.1f} reads/kbp: {point.y:,.2f}% duplicates' -# xPlotLines: +# x_lines: # - color: 'green' -# dashStyle: 'LongDash' +# dash: 'LongDash' # label: # text: '0.5 RPKM' # value: 0.5 # width: 1 # - color: 'red' -# dashStyle: 'LongDash' +# dash: 'LongDash' # label: # text: '1 read/bp' # value: 1000 diff --git a/modules/nf-core/dupradar/tests/main.nf.test b/modules/nf-core/dupradar/tests/main.nf.test index ef213df9f..60f8dfb7d 100644 --- a/modules/nf-core/dupradar/tests/main.nf.test +++ b/modules/nf-core/dupradar/tests/main.nf.test @@ -4,10 +4,6 @@ nextflow_process { script "../main.nf" process "DUPRADAR" - tag "modules" - tag "modules_nfcore" - tag "dupradar" - test("sarscov2 - bam - single_end") { config './nextflow.config' From 4f35611373a9c301b29bd9209c08be5960f2e740 Mon Sep 17 00:00:00 2001 From: maxulysse Date: Wed, 28 Aug 2024 10:33:45 +0200 Subject: [PATCH 614/634] no need for tags --- modules/nf-core/multiqc/tests/main.nf.test | 5 ----- 1 file changed, 5 deletions(-) diff --git a/modules/nf-core/multiqc/tests/main.nf.test b/modules/nf-core/multiqc/tests/main.nf.test index 33316a7dd..f815b6de3 100644 --- a/modules/nf-core/multiqc/tests/main.nf.test +++ b/modules/nf-core/multiqc/tests/main.nf.test @@ -3,11 +3,6 @@ nextflow_process { name "Test Process MULTIQC" script "../main.nf" process "MULTIQC" - - tag "modules" - tag "modules_nfcore" - tag "multiqc" - config "./nextflow.config" test("sarscov2 single-end [fastqc]") { From 6688d46e60edc6b74977ae6d1ce152a3442f0866 Mon Sep 17 00:00:00 2001 From: maxulysse Date: Wed, 28 Aug 2024 10:35:45 +0200 Subject: [PATCH 615/634] no need for tags --- .../tests/main.nf.test | 13 ------------- .../fastq_fastqc_umitools_fastp/tests/main.nf.test | 9 --------- 2 files changed, 22 deletions(-) diff --git a/subworkflows/nf-core/bam_dedup_stats_samtools_umitools/tests/main.nf.test b/subworkflows/nf-core/bam_dedup_stats_samtools_umitools/tests/main.nf.test index 9d38022b4..ab541cb88 100644 --- a/subworkflows/nf-core/bam_dedup_stats_samtools_umitools/tests/main.nf.test +++ b/subworkflows/nf-core/bam_dedup_stats_samtools_umitools/tests/main.nf.test @@ -3,19 +3,6 @@ nextflow_workflow { name "Test Workflow BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS" script "../main.nf" workflow "BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS" - tag "subworkflows" - tag "subworkflows_nfcore" - tag "subworkflows/bam_dedup_stats_samtools_umitools" - tag "subworkflows/bam_stats_samtools" - tag "bam_dedup_stats_samtools_umitools" - tag "bam_stats_samtools" - tag "samtools" - tag "samtools/index" - tag "samtools/stats" - tag "samtools/idxstats" - tag "samtools/flagstat" - tag "umitools" - tag "umitools/dedup" test("sarscov2_bam_bai") { diff --git a/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/main.nf.test b/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/main.nf.test index 48ba5f48b..eb944b7d5 100644 --- a/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/main.nf.test +++ b/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/main.nf.test @@ -5,15 +5,6 @@ nextflow_workflow { workflow "FASTQ_FASTQC_UMITOOLS_FASTP" config './nextflow.config' - tag "subworkflows" - tag "subworkflows_nfcore" - tag "subworkflows/fastq_fastqc_umitools_fastp" - tag "fastq_fastqc_umitools_fastp" - tag "fastqc" - tag "umitools/extract" - tag "fastp" - - test("sarscov2 paired-end [fastq]") { when { From 73504a672612375f47241302ae911bc63aefef66 Mon Sep 17 00:00:00 2001 From: maxulysse Date: Wed, 28 Aug 2024 10:38:08 +0200 Subject: [PATCH 616/634] update CHANGELOG --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 147e7d42c..3f70cfaf9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -118,6 +118,8 @@ Thank you to everyone else that has contributed by reporting bugs, enhancements - [PR #1360](https://github.com/nf-core/rnaseq/pull/1360) - More complete snapshots for pipeline level tests - [PR #1361](https://github.com/nf-core/rnaseq/pull/1361) - Animate subway map - [PR #1362](https://github.com/nf-core/rnaseq/pull/1362) - Move multiqc module prefix for nf-test to module +- [PR #1363](https://github.com/nf-core/rnaseq/pull/1363) - Minor updates of nf-core modules and subworkflows +- [PR #1363](https://github.com/nf-core/rnaseq/pull/1363) - Update dupradar script ### Parameters From 0c4dc96315ee89a9761ede2a9e2cc8983ba34d87 Mon Sep 17 00:00:00 2001 From: Pieter Moris <13552343+pmoris@users.noreply.github.com> Date: Thu, 29 Aug 2024 13:10:18 +0200 Subject: [PATCH 617/634] Clarify docs on different tximport count files --- docs/output.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/output.md b/docs/output.md index f713c311b..2360e1325 100644 --- a/docs/output.md +++ b/docs/output.md @@ -725,11 +725,11 @@ Transcripts with large inferential uncertainty won't be assigned the exact numbe The [tximport](https://bioconductor.org/packages/release/bioc/html/tximport.html) package is used in this pipeline to summarise the results generated by Salmon or Kallisto into matrices for use with downstream differential analysis packages. We use tximport with different options to summarize count and TPM quantifications at the gene- and transcript-level. Please see [#499](https://github.com/nf-core/rnaseq/issues/499) for discussion and links regarding which counts are suitable for different types of analysis. -According to the `txtimport` documentation you can do one of the following: +According to the [`txtimport` documentation](https://bioconductor.org/packages/release/bioc/vignettes/tximport/inst/doc/tximport.html#Downstream_DGE_in_Bioconductor) you can do one of the following: -- Use bias corrected counts with an offset: import all the salmon files with `tximport` and then use `DESeq2` with `dds <- DESeqDataSetFromTximport(txi, sampleTable, ~condition)` to correct for changes to the average transcript length across samples. -- Use bias corrected counts without an offset: load and use `salmon.merged.gene_counts_length_scaled.tsv` or `salmon.merged.gene_counts_scaled.tsv` directly as you would with a regular counts matrix. -- Use bias uncorrected counts: load and use the `txi$counts` matrix (or `salmon.merged.gene_counts.tsv`) with `DESeq2`. This does not correct for potential differential isoform usage. Alternatively, if you have 3’ tagged RNA-seq data this is the most suitable method. +- Use the original (bias-uncorrected) counts _with an offset_: import all the salmon `quant.sf` files with `tximport` and then use `DESeq2` with `dds <- DESeqDataSetFromTximport(txi, sampleTable, ~condition)` to automatically correct for changes to the average transcript length across samples by calculating a gene-level offset. +- Use bias-corrected counts _without an offset_: load and use `salmon.merged.gene_counts_length_scaled.tsv` or `salmon.merged.gene_counts_scaled.tsv` directly as you would with a regular gene-level counts matrix. These files were created using the `tximport` argument `countsFromAbundance="scaledTPM"` or `"lengthScaledTPM"` to scale counts to library size or to library size and average transcript length respectively, forgoing the need for an offset matrix. +- Use the original (bias-uncorrected) counts _without an offset_: load and use the `txi$counts` matrix (or `salmon.merged.gene_counts.tsv`) with `DESeq2`. This is generally **not** recommended, since it does not correct for potential differential isoform usage (the offset). However, if you have 3’ tagged RNA-seq data, then this _is_ the most suitable method, because the counts do not exhibit any length bias. > **NB:** The default Salmon parameters and a k-mer size of 31 are used to create the index. As [documented here](https://salmon.readthedocs.io/en/latest/salmon.html#preparing-transcriptome-indices-mapping-based-mode) and [discussed here](https://github.com/COMBINE-lab/salmon/issues/482#issuecomment-583799668), a k-mer size off 31 works well with reads that are 75bp or longer. From d00cd973c17bee702233bedf481cba4c7e6525ee Mon Sep 17 00:00:00 2001 From: Pieter Moris <13552343+pmoris@users.noreply.github.com> Date: Thu, 29 Aug 2024 14:08:53 +0200 Subject: [PATCH 618/634] Clarify design formula and blind dispersion estimation --- bin/deseq2_qc.r | 7 ++++--- docs/output.md | 2 ++ 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/bin/deseq2_qc.r b/bin/deseq2_qc.r index 14bd48f70..6ef42cd94 100755 --- a/bin/deseq2_qc.r +++ b/bin/deseq2_qc.r @@ -92,7 +92,8 @@ if (decompose) { DDSFile <- paste(opt$outprefix,".dds.RData",sep="") counts <- count.table[,samples.vec,drop=FALSE] -dds <- DESeqDataSetFromMatrix(countData=round(counts), colData=coldata, design=~ 1) +# `design=~1` creates intercept-only model, equivalent to setting `blind=TRUE` for transformation. +dds <- DESeqDataSetFromMatrix(countData=round(counts), colData=coldata, design=~1) dds <- estimateSizeFactors(dds) if (min(dim(count.table))<=1) { # No point if only one sample, or one gene save(dds,file=DDSFile) @@ -102,10 +103,10 @@ if (min(dim(count.table))<=1) { # No point if only one sample, or one gene } if (!opt$vst) { vst_name <- "rlog" - rld <- rlog(dds) + rld <- rlog(dds, blind=TRUE) # blind=TRUE is the default and already implied by design=~1 } else { vst_name <- "vst" - rld <- varianceStabilizingTransformation(dds) + rld <- varianceStabilizingTransformation(dds, blind=TRUE) } assay(dds, vst_name) <- assay(rld) diff --git a/docs/output.md b/docs/output.md index f713c311b..829f1d83d 100644 --- a/docs/output.md +++ b/docs/output.md @@ -642,6 +642,8 @@ The script included in the pipeline uses DESeq2 to normalise read counts across By default, the pipeline uses the `vst` transformation which is more suited to larger experiments. You can set the parameter `--deseq2_vst false` if you wish to use the DESeq2 native `rlog` option. See [DESeq2 docs](http://bioconductor.org/packages/devel/bioc/vignettes/DESeq2/inst/doc/DESeq2.html#data-transformations-and-visualization) for a more detailed explanation. +Both types of transformation are performed blind, i.e. using across-all-samples variability, without using any prior information on experimental groups (equivalent to using an intercept-only design), as recommended by the [DESeq2 docs](https://www.bioconductor.org/packages/release/bioc/vignettes/DESeq2/inst/doc/DESeq2.html#blind-dispersion-estimation). + The PCA plots are generated based alternately on the top five hundred most variable genes, or all genes. The former is the conventional approach that is more likely to pick up strong effects (ie the biological signal) and the latter, when different, is picking up a weaker but consistent effect that is synchronised across many transcripts. We project both of these onto the first two PCs (shown in the top row of the figure below), which is the best two dimensional representation of the variation between samples. We also explore higher components in terms of experimental factors inferred from sample names. If your sample naming convention follows a strict policy of using underscores to delimit values of experimental factors (for example `WT_UNTREATED_REP1`) and all names have the same number of underscores (so excluding `WT_TREATED_10ml_REP1` from being compatible with the previous label), then any of these factors that are informative (ie label some but not all samples the same) then we individually plot upto the first five PCs, per experimental level, for each of the experimental factors. From d78a5d63e3f77a0a9417c093d55a1547f94e12cf Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Tue, 3 Sep 2024 14:11:30 +0100 Subject: [PATCH 619/634] Update docs/output.md --- docs/output.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/output.md b/docs/output.md index 2360e1325..8ffccc798 100644 --- a/docs/output.md +++ b/docs/output.md @@ -727,7 +727,7 @@ The [tximport](https://bioconductor.org/packages/release/bioc/html/tximport.html According to the [`txtimport` documentation](https://bioconductor.org/packages/release/bioc/vignettes/tximport/inst/doc/tximport.html#Downstream_DGE_in_Bioconductor) you can do one of the following: -- Use the original (bias-uncorrected) counts _with an offset_: import all the salmon `quant.sf` files with `tximport` and then use `DESeq2` with `dds <- DESeqDataSetFromTximport(txi, sampleTable, ~condition)` to automatically correct for changes to the average transcript length across samples by calculating a gene-level offset. +- Use the original (bias-uncorrected) counts _with an offset_: import all the salmon `quant.sf` files with `tximport` and then use `DESeq2` with `dds <- DESeqDataSetFromTximport(txi, sampleTable, ~condition)` to automatically construct an object with gene-level offsets in-built, which can be used by DESeq2 to automatically account for effective gene length effects across conditions. It's also possible to use the `.gene_lengths.tsv` matrices output by this workflow to make your own object the same way- which is what [the nf-core differentialabundance workflow does](https://nf-co.re/differentialabundance/1.5.0/docs/usage#outputs-from-nf-corernaseq-and-other-tximport-processed-results). See the [DESeq2 module](https://github.com/nf-core/modules/blob/c8f7f481bf2ccd8f9c7f2d499d94e74d4b9e23ab/modules/nf-core/deseq2/differential/templates/deseq_de.R#L323) for the implementation details. - Use bias-corrected counts _without an offset_: load and use `salmon.merged.gene_counts_length_scaled.tsv` or `salmon.merged.gene_counts_scaled.tsv` directly as you would with a regular gene-level counts matrix. These files were created using the `tximport` argument `countsFromAbundance="scaledTPM"` or `"lengthScaledTPM"` to scale counts to library size or to library size and average transcript length respectively, forgoing the need for an offset matrix. - Use the original (bias-uncorrected) counts _without an offset_: load and use the `txi$counts` matrix (or `salmon.merged.gene_counts.tsv`) with `DESeq2`. This is generally **not** recommended, since it does not correct for potential differential isoform usage (the offset). However, if you have 3’ tagged RNA-seq data, then this _is_ the most suitable method, because the counts do not exhibit any length bias. From 4f0aa71c0ba815d21dacd7f359afc3c6b1df88a5 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Tue, 3 Sep 2024 14:16:38 +0100 Subject: [PATCH 620/634] Update docs/output.md --- docs/output.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/output.md b/docs/output.md index 8ffccc798..8073e94dc 100644 --- a/docs/output.md +++ b/docs/output.md @@ -728,7 +728,7 @@ The [tximport](https://bioconductor.org/packages/release/bioc/html/tximport.html According to the [`txtimport` documentation](https://bioconductor.org/packages/release/bioc/vignettes/tximport/inst/doc/tximport.html#Downstream_DGE_in_Bioconductor) you can do one of the following: - Use the original (bias-uncorrected) counts _with an offset_: import all the salmon `quant.sf` files with `tximport` and then use `DESeq2` with `dds <- DESeqDataSetFromTximport(txi, sampleTable, ~condition)` to automatically construct an object with gene-level offsets in-built, which can be used by DESeq2 to automatically account for effective gene length effects across conditions. It's also possible to use the `.gene_lengths.tsv` matrices output by this workflow to make your own object the same way- which is what [the nf-core differentialabundance workflow does](https://nf-co.re/differentialabundance/1.5.0/docs/usage#outputs-from-nf-corernaseq-and-other-tximport-processed-results). See the [DESeq2 module](https://github.com/nf-core/modules/blob/c8f7f481bf2ccd8f9c7f2d499d94e74d4b9e23ab/modules/nf-core/deseq2/differential/templates/deseq_de.R#L323) for the implementation details. -- Use bias-corrected counts _without an offset_: load and use `salmon.merged.gene_counts_length_scaled.tsv` or `salmon.merged.gene_counts_scaled.tsv` directly as you would with a regular gene-level counts matrix. These files were created using the `tximport` argument `countsFromAbundance="scaledTPM"` or `"lengthScaledTPM"` to scale counts to library size or to library size and average transcript length respectively, forgoing the need for an offset matrix. +- Use bias-corrected counts _without an offset_: load and use `salmon.merged.gene_counts_length_scaled.tsv` or `salmon.merged.gene_counts_scaled.tsv` directly as you would with a regular gene-level counts matrix. These files were created using the `tximport` argument `countsFromAbundance="scaledTPM"` or `"lengthScaledTPM"` to scale counts to library size or to library size and average transcript length respectively. - Use the original (bias-uncorrected) counts _without an offset_: load and use the `txi$counts` matrix (or `salmon.merged.gene_counts.tsv`) with `DESeq2`. This is generally **not** recommended, since it does not correct for potential differential isoform usage (the offset). However, if you have 3’ tagged RNA-seq data, then this _is_ the most suitable method, because the counts do not exhibit any length bias. > **NB:** The default Salmon parameters and a k-mer size of 31 are used to create the index. As [documented here](https://salmon.readthedocs.io/en/latest/salmon.html#preparing-transcriptome-indices-mapping-based-mode) and [discussed here](https://github.com/COMBINE-lab/salmon/issues/482#issuecomment-583799668), a k-mer size off 31 works well with reads that are 75bp or longer. From 803e02da2ae94dd5e36ab02f6467f09fdf8b7d76 Mon Sep 17 00:00:00 2001 From: Pieter Moris <13552343+pmoris@users.noreply.github.com> Date: Tue, 3 Sep 2024 15:42:20 +0200 Subject: [PATCH 621/634] Update output.md Clarify output files: - add gene_lengths description - clarify that scaled output files contain estimated counts from abundances --- docs/output.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/docs/output.md b/docs/output.md index 8073e94dc..c1f375990 100644 --- a/docs/output.md +++ b/docs/output.md @@ -682,9 +682,10 @@ The principal output files are the same between Salmon and Kallsto: - `.merged.gene_counts.tsv`: Matrix of gene-level raw counts across all samples. - `.gene_tpm.tsv`: Matrix of gene-level TPM values across all samples. - `.gene_counts.rds`: RDS object that can be loaded in R that contains a [SummarizedExperiment](https://bioconductor.org/packages/release/bioc/html/SummarizedExperiment.html) container with the TPM (`abundance`), estimated counts (`counts`) and transcript length (`length`) in the assays slot for genes. - - `.merged.gene_counts_scaled.tsv`: Matrix of gene-level library size-scaled counts across all samples. + - `.merged.gene_lengths.tsv`: Matrix of average within-sample transcript lengths for each gene across all samples, which can be used as an offset for gene-level analysis. + - `.merged.gene_counts_scaled.tsv`: Matrix of gene-level library size-scaled estimated counts from abundances across all samples. - `.merged.gene_counts_scaled.rds`: RDS object that can be loaded in R that contains a [SummarizedExperiment](https://bioconductor.org/packages/release/bioc/html/SummarizedExperiment.html) container with the TPM (`abundance`), estimated library size-scaled counts (`counts`) and transcript length (`length`) in the assays slot for genes. - - `.merged.gene_counts_length_scaled.tsv`: Matrix of gene-level length-scaled counts across all samples. + - `.merged.gene_counts_length_scaled.tsv`: Matrix of gene-level length-scaled estimated counts from abundances across all samples. - `.merged.gene_counts_length_scaled.rds`: RDS object that can be loaded in R that contains a [SummarizedExperiment](https://bioconductor.org/packages/release/bioc/html/SummarizedExperiment.html) container with the TPM (`abundance`), estimated length-scaled counts (`counts`) and transcript length (`length`) in the assays slot for genes. - `.merged.transcript_counts.tsv`: Matrix of isoform-level raw counts across all samples. - `.merged.transcript_tpm.tsv`: Matrix of isoform-level TPM values across all samples. @@ -727,7 +728,7 @@ The [tximport](https://bioconductor.org/packages/release/bioc/html/tximport.html According to the [`txtimport` documentation](https://bioconductor.org/packages/release/bioc/vignettes/tximport/inst/doc/tximport.html#Downstream_DGE_in_Bioconductor) you can do one of the following: -- Use the original (bias-uncorrected) counts _with an offset_: import all the salmon `quant.sf` files with `tximport` and then use `DESeq2` with `dds <- DESeqDataSetFromTximport(txi, sampleTable, ~condition)` to automatically construct an object with gene-level offsets in-built, which can be used by DESeq2 to automatically account for effective gene length effects across conditions. It's also possible to use the `.gene_lengths.tsv` matrices output by this workflow to make your own object the same way- which is what [the nf-core differentialabundance workflow does](https://nf-co.re/differentialabundance/1.5.0/docs/usage#outputs-from-nf-corernaseq-and-other-tximport-processed-results). See the [DESeq2 module](https://github.com/nf-core/modules/blob/c8f7f481bf2ccd8f9c7f2d499d94e74d4b9e23ab/modules/nf-core/deseq2/differential/templates/deseq_de.R#L323) for the implementation details. +- Use the original (bias-uncorrected) counts _with an offset_: import all the salmon `quant.sf` files with `tximport` and then use `DESeq2` with `dds <- DESeqDataSetFromTximport(txi, sampleTable, ~condition)` to automatically construct an object with gene-level offsets in-built, which can be used by DESeq2 to automatically account for effective gene length effects across conditions. It's also possible to combine the `.merged.gene_counts.tsv` and `.gene_lengths.tsv` matrices output by this workflow to make your own object the same way - which is what [the nf-core differentialabundance workflow does](https://nf-co.re/differentialabundance/1.5.0/docs/usage#outputs-from-nf-corernaseq-and-other-tximport-processed-results). See the [DESeq2 module](https://github.com/nf-core/modules/blob/c8f7f481bf2ccd8f9c7f2d499d94e74d4b9e23ab/modules/nf-core/deseq2/differential/templates/deseq_de.R#L323) for the implementation details. - Use bias-corrected counts _without an offset_: load and use `salmon.merged.gene_counts_length_scaled.tsv` or `salmon.merged.gene_counts_scaled.tsv` directly as you would with a regular gene-level counts matrix. These files were created using the `tximport` argument `countsFromAbundance="scaledTPM"` or `"lengthScaledTPM"` to scale counts to library size or to library size and average transcript length respectively. - Use the original (bias-uncorrected) counts _without an offset_: load and use the `txi$counts` matrix (or `salmon.merged.gene_counts.tsv`) with `DESeq2`. This is generally **not** recommended, since it does not correct for potential differential isoform usage (the offset). However, if you have 3’ tagged RNA-seq data, then this _is_ the most suitable method, because the counts do not exhibit any length bias. From 144c11fb9e4d9138e575a504ed3c5254a7158e40 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Tue, 3 Sep 2024 15:27:35 +0100 Subject: [PATCH 622/634] Update CHANGELOG.md --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3f70cfaf9..d8d15cea3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,6 +17,7 @@ Special thanks to the following for their contributions to the release: - [Luke Zappia](https://github.com/lazappi) - [Matthias Zepper](https://github.com/MatthiasZepper) - [Maxime Garcia](https://github.com/maxulysse) +- [Pieter Moris](https://github.com/pmoris) - [Rob Syme](https://github.com/robsyme) - [Thomas Danhorn](https://github.com/tdanhorn) @@ -120,6 +121,7 @@ Thank you to everyone else that has contributed by reporting bugs, enhancements - [PR #1362](https://github.com/nf-core/rnaseq/pull/1362) - Move multiqc module prefix for nf-test to module - [PR #1363](https://github.com/nf-core/rnaseq/pull/1363) - Minor updates of nf-core modules and subworkflows - [PR #1363](https://github.com/nf-core/rnaseq/pull/1363) - Update dupradar script +- [PR #1366](https://github.com/nf-core/rnaseq/pull/1366) - Clarify docs on different tximport count files ### Parameters From 6450fbf515bbcba10c6617dbcb9645f23889a351 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Tue, 3 Sep 2024 15:28:55 +0100 Subject: [PATCH 623/634] Remove restatement of params defaults --- bin/deseq2_qc.r | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bin/deseq2_qc.r b/bin/deseq2_qc.r index 6ef42cd94..d55180400 100755 --- a/bin/deseq2_qc.r +++ b/bin/deseq2_qc.r @@ -103,10 +103,10 @@ if (min(dim(count.table))<=1) { # No point if only one sample, or one gene } if (!opt$vst) { vst_name <- "rlog" - rld <- rlog(dds, blind=TRUE) # blind=TRUE is the default and already implied by design=~1 + rld <- rlog(dds) } else { vst_name <- "vst" - rld <- varianceStabilizingTransformation(dds, blind=TRUE) + rld <- varianceStabilizingTransformation(dds) } assay(dds, vst_name) <- assay(rld) From 760e83fb8768442626b205bcb8cbca6876b8833b Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Tue, 3 Sep 2024 15:30:35 +0100 Subject: [PATCH 624/634] Update CHANGELOG.md --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3f70cfaf9..973ad740a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -120,6 +120,7 @@ Thank you to everyone else that has contributed by reporting bugs, enhancements - [PR #1362](https://github.com/nf-core/rnaseq/pull/1362) - Move multiqc module prefix for nf-test to module - [PR #1363](https://github.com/nf-core/rnaseq/pull/1363) - Minor updates of nf-core modules and subworkflows - [PR #1363](https://github.com/nf-core/rnaseq/pull/1363) - Update dupradar script +- [PR #1367](https://github.com/nf-core/rnaseq/pull/1367) - Clarify design formula and blind dispersion estimation ### Parameters From dff00b6682f634aa7ad815daef87207da5069b96 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Tue, 3 Sep 2024 15:40:59 +0100 Subject: [PATCH 625/634] Apply suggestions from code review --- docs/output.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/output.md b/docs/output.md index c1f375990..e4c9beb3a 100644 --- a/docs/output.md +++ b/docs/output.md @@ -682,10 +682,10 @@ The principal output files are the same between Salmon and Kallsto: - `.merged.gene_counts.tsv`: Matrix of gene-level raw counts across all samples. - `.gene_tpm.tsv`: Matrix of gene-level TPM values across all samples. - `.gene_counts.rds`: RDS object that can be loaded in R that contains a [SummarizedExperiment](https://bioconductor.org/packages/release/bioc/html/SummarizedExperiment.html) container with the TPM (`abundance`), estimated counts (`counts`) and transcript length (`length`) in the assays slot for genes. - - `.merged.gene_lengths.tsv`: Matrix of average within-sample transcript lengths for each gene across all samples, which can be used as an offset for gene-level analysis. - - `.merged.gene_counts_scaled.tsv`: Matrix of gene-level library size-scaled estimated counts from abundances across all samples. + - `.merged.gene_lengths.tsv`: Matrix of average within-sample transcript lengths for each gene across all samples. + - `.merged.gene_counts_scaled.tsv`: Matrix of gene-level library size-scaled estimated counts across all samples. - `.merged.gene_counts_scaled.rds`: RDS object that can be loaded in R that contains a [SummarizedExperiment](https://bioconductor.org/packages/release/bioc/html/SummarizedExperiment.html) container with the TPM (`abundance`), estimated library size-scaled counts (`counts`) and transcript length (`length`) in the assays slot for genes. - - `.merged.gene_counts_length_scaled.tsv`: Matrix of gene-level length-scaled estimated counts from abundances across all samples. + - `.merged.gene_counts_length_scaled.tsv`: Matrix of gene-level length-scaled estimated counts across all samples. - `.merged.gene_counts_length_scaled.rds`: RDS object that can be loaded in R that contains a [SummarizedExperiment](https://bioconductor.org/packages/release/bioc/html/SummarizedExperiment.html) container with the TPM (`abundance`), estimated length-scaled counts (`counts`) and transcript length (`length`) in the assays slot for genes. - `.merged.transcript_counts.tsv`: Matrix of isoform-level raw counts across all samples. - `.merged.transcript_tpm.tsv`: Matrix of isoform-level TPM values across all samples. From a266448f55dc0cd1d7fe1351ac70f5e41752f66b Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Tue, 3 Sep 2024 18:16:32 +0100 Subject: [PATCH 626/634] Bump versions --- CHANGELOG.md | 2 +- nextflow.config | 2 +- workflows/rnaseq/assets/multiqc/multiqc_config.yml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0e3467b63..2494ba6db 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). -## v3.15.0dev - [date] +## [[3.15.0](https://github.com/nf-core/rnaseq/releases/tag/3.15.0)] - 2024-09-04 ### Credits diff --git a/nextflow.config b/nextflow.config index 1c46d7c2e..1771272d4 100644 --- a/nextflow.config +++ b/nextflow.config @@ -340,7 +340,7 @@ manifest { description = """RNA sequencing analysis pipeline for gene/isoform quantification and extensive quality control.""" mainScript = 'main.nf' nextflowVersion = '!>=23.04.0' - version = '3.15.0dev' + version = '3.15.0' doi = 'https://doi.org/10.5281/zenodo.1400710' } diff --git a/workflows/rnaseq/assets/multiqc/multiqc_config.yml b/workflows/rnaseq/assets/multiqc/multiqc_config.yml index 49d3939e2..136e03f1c 100644 --- a/workflows/rnaseq/assets/multiqc/multiqc_config.yml +++ b/workflows/rnaseq/assets/multiqc/multiqc_config.yml @@ -1,5 +1,5 @@ report_comment: > - This report has been generated by the nf-core/rnaseq analysis pipeline. For information about how to interpret these results, please see the documentation. + This report has been generated by the nf-core/rnaseq analysis pipeline. For information about how to interpret these results, please see the documentation. report_section_order: # Important checks and failures sample-status: From 65162d437492d78e583f4824826314d2852ff394 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Tue, 3 Sep 2024 18:23:34 +0100 Subject: [PATCH 627/634] Bump modules --- modules.json | 4 ++-- modules/nf-core/multiqc/main.nf | 2 +- modules/nf-core/multiqc/tests/main.nf.test | 5 +++++ modules/nf-core/tximeta/tximport/templates/tximport.r | 1 - modules/nf-core/tximeta/tximport/tests/main.nf.test | 7 +++++++ 5 files changed, 15 insertions(+), 4 deletions(-) diff --git a/modules.json b/modules.json index 3b8875999..c5561e558 100644 --- a/modules.json +++ b/modules.json @@ -92,7 +92,7 @@ }, "multiqc": { "branch": "master", - "git_sha": "fe9614c5d1d9820dae56a5e30a07ba336db45835", + "git_sha": "19ca321db5d8bd48923262c2eca6422359633491", "installed_by": ["modules"] }, "picard/markduplicates": { @@ -237,7 +237,7 @@ }, "tximeta/tximport": { "branch": "master", - "git_sha": "5d095e8413da1f4c72b7d07ce87f75c09482486f", + "git_sha": "af778cca88b2a983152bdf2d80634e52dd1ef80f", "installed_by": ["modules", "quantify_pseudo_alignment"] }, "ucsc/bedclip": { diff --git a/modules/nf-core/multiqc/main.nf b/modules/nf-core/multiqc/main.nf index d5365800d..ceaec139e 100644 --- a/modules/nf-core/multiqc/main.nf +++ b/modules/nf-core/multiqc/main.nf @@ -28,7 +28,7 @@ process MULTIQC { 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}" : '' """ diff --git a/modules/nf-core/multiqc/tests/main.nf.test b/modules/nf-core/multiqc/tests/main.nf.test index f815b6de3..33316a7dd 100644 --- a/modules/nf-core/multiqc/tests/main.nf.test +++ b/modules/nf-core/multiqc/tests/main.nf.test @@ -3,6 +3,11 @@ nextflow_process { name "Test Process MULTIQC" script "../main.nf" process "MULTIQC" + + tag "modules" + tag "modules_nfcore" + tag "multiqc" + config "./nextflow.config" test("sarscov2 single-end [fastqc]") { diff --git a/modules/nf-core/tximeta/tximport/templates/tximport.r b/modules/nf-core/tximeta/tximport/templates/tximport.r index 40d79eb93..510cfac59 100755 --- a/modules/nf-core/tximeta/tximport/templates/tximport.r +++ b/modules/nf-core/tximeta/tximport/templates/tximport.r @@ -153,7 +153,6 @@ if ("tx2gene" %in% names(transcript_info) && !is.null(transcript_info\$tx2gene)) gi.s <- summarizeToGene(txi, tx2gene = tx2gene, countsFromAbundance = "scaledTPM") gene_info <- transcript_info\$gene[match(rownames(gi[[1]]), transcript_info\$gene[["gene_id"]]),] - rownames(gene_info) <- gene_info[["tx"]] col_data_frame <- DataFrame(coldata) diff --git a/modules/nf-core/tximeta/tximport/tests/main.nf.test b/modules/nf-core/tximeta/tximport/tests/main.nf.test index 782030fb8..5cf6af83e 100644 --- a/modules/nf-core/tximeta/tximport/tests/main.nf.test +++ b/modules/nf-core/tximeta/tximport/tests/main.nf.test @@ -4,6 +4,13 @@ nextflow_process { script "../main.nf" process "TXIMETA_TXIMPORT" + tag "modules" + tag "modules_nfcore" + tag "custom/tx2gene" + tag "tximeta" + tag "tximeta/tximport" + tag "untar" + test("saccharomyces_cerevisiae - kallisto - gtf") { setup { From b4d37350f7a6f5904599efd0537838a5e267b868 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Tue, 3 Sep 2024 19:25:04 +0100 Subject: [PATCH 628/634] Remove tags from tests Co-authored-by: Maxime U Garcia --- modules/nf-core/multiqc/tests/main.nf.test | 5 ----- modules/nf-core/tximeta/tximport/tests/main.nf.test | 7 ------- 2 files changed, 12 deletions(-) diff --git a/modules/nf-core/multiqc/tests/main.nf.test b/modules/nf-core/multiqc/tests/main.nf.test index 33316a7dd..f815b6de3 100644 --- a/modules/nf-core/multiqc/tests/main.nf.test +++ b/modules/nf-core/multiqc/tests/main.nf.test @@ -3,11 +3,6 @@ nextflow_process { name "Test Process MULTIQC" script "../main.nf" process "MULTIQC" - - tag "modules" - tag "modules_nfcore" - tag "multiqc" - config "./nextflow.config" test("sarscov2 single-end [fastqc]") { diff --git a/modules/nf-core/tximeta/tximport/tests/main.nf.test b/modules/nf-core/tximeta/tximport/tests/main.nf.test index 5cf6af83e..782030fb8 100644 --- a/modules/nf-core/tximeta/tximport/tests/main.nf.test +++ b/modules/nf-core/tximeta/tximport/tests/main.nf.test @@ -4,13 +4,6 @@ nextflow_process { script "../main.nf" process "TXIMETA_TXIMPORT" - tag "modules" - tag "modules_nfcore" - tag "custom/tx2gene" - tag "tximeta" - tag "tximeta/tximport" - tag "untar" - test("saccharomyces_cerevisiae - kallisto - gtf") { setup { From 9b1c08a6b89eb772fec69205f04d1ec3c4ed86ad Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Tue, 3 Sep 2024 19:29:01 +0100 Subject: [PATCH 629/634] Fix version in snapshot --- tests/default.nf.test.snap | 4 ++-- tests/featurecounts_group_type.nf.test.snap | 4 ++-- tests/hisat2.nf.test.snap | 4 ++-- tests/kallisto.nf.test.snap | 4 ++-- tests/min_mapped_reads.nf.test.snap | 4 ++-- tests/remove_ribo_rna.nf.test.snap | 4 ++-- tests/salmon.nf.test.snap | 4 ++-- tests/skip_qc.nf.test.snap | 4 ++-- tests/skip_trimming.nf.test.snap | 2 +- tests/star_rsem.nf.test.snap | 4 ++-- 10 files changed, 19 insertions(+), 19 deletions(-) diff --git a/tests/default.nf.test.snap b/tests/default.nf.test.snap index e625d1637..9be7dfb04 100644 --- a/tests/default.nf.test.snap +++ b/tests/default.nf.test.snap @@ -266,7 +266,7 @@ }, "Params: default - stub": { "content": [ - "{BBMAP_BBSPLIT={bbmap=39.01}, CAT_FASTQ={cat=8.3}, CUSTOM_CATADDITIONALFASTA={python=null}, CUSTOM_GETCHROMSIZES={getchromsizes=1.2}, FASTQC={fastqc=0.12.1}, GTF2BED={perl=5.26.2}, GTF_FILTER={python=3.9.5}, GUNZIP_ADDITIONAL_FASTA={gunzip=1.1}, GUNZIP_GTF={gunzip=1.1}, STAR_GENOMEGENERATE={star=2.7.10a, samtools=1.18, gawk=5.1.0}, TRIMGALORE={trimgalore=0.6.7, cutadapt=3.4}, UNTAR_SALMON_INDEX={untar=1.34}, Workflow={nf-core/rnaseq=v3.15.0dev}}", + "{BBMAP_BBSPLIT={bbmap=39.01}, CAT_FASTQ={cat=8.3}, CUSTOM_CATADDITIONALFASTA={python=null}, CUSTOM_GETCHROMSIZES={getchromsizes=1.2}, FASTQC={fastqc=0.12.1}, GTF2BED={perl=5.26.2}, GTF_FILTER={python=3.9.5}, GUNZIP_ADDITIONAL_FASTA={gunzip=1.1}, GUNZIP_GTF={gunzip=1.1}, STAR_GENOMEGENERATE={star=2.7.10a, samtools=1.18, gawk=5.1.0}, TRIMGALORE={trimgalore=0.6.7, cutadapt=3.4}, UNTAR_SALMON_INDEX={untar=1.34}, Workflow={nf-core/rnaseq=v3.15.0}}", "genome_transcriptome.fasta", "genome_transcriptome.gtf", "RAP1_IAA_30M_REP1_raw.html", @@ -932,7 +932,7 @@ }, "versions": { "content": [ - "{BBMAP_BBSPLIT={bbmap=39.01}, BEDTOOLS_GENOMECOV_FW={bedtools=2.31.1}, CAT_FASTQ={cat=8.3}, CUSTOM_CATADDITIONALFASTA={python=3.9.5}, CUSTOM_GETCHROMSIZES={getchromsizes=1.2}, CUSTOM_TX2GENE={python=3.9.5}, DESEQ2_QC_PSEUDO={r-base=4.0.3, bioconductor-deseq2=1.28.0}, DESEQ2_QC_STAR_SALMON={r-base=4.0.3, bioconductor-deseq2=1.28.0}, DUPRADAR={bioconductor-dupradar=1.32.0}, FASTQC={fastqc=0.12.1}, FQ_SUBSAMPLE={fq=0.9.1 (2022-02-22)}, GTF2BED={perl=5.26.2}, GTF_FILTER={python=3.9.5}, GUNZIP_ADDITIONAL_FASTA={gunzip=1.1}, GUNZIP_GTF={gunzip=1.1}, MULTIQC_CUSTOM_BIOTYPE={python=3.9.5}, PICARD_MARKDUPLICATES={picard=3.1.1}, QUALIMAP_RNASEQ={qualimap=2.3}, RSEQC_BAMSTAT={rseqc=5.0.2}, RSEQC_INFEREXPERIMENT={rseqc=5.0.2}, RSEQC_INNERDISTANCE={rseqc=5.0.2}, RSEQC_JUNCTIONANNOTATION={rseqc=5.0.2}, RSEQC_JUNCTIONSATURATION={rseqc=5.0.2}, RSEQC_READDISTRIBUTION={rseqc=5.0.2}, RSEQC_READDUPLICATION={rseqc=5.0.2}, SALMON_QUANT={salmon=1.10.1}, SAMTOOLS_FLAGSTAT={samtools=1.2}, SAMTOOLS_IDXSTATS={samtools=1.2}, SAMTOOLS_INDEX={samtools=1.2}, SAMTOOLS_SORT={samtools=1.2}, SAMTOOLS_STATS={samtools=1.2}, SE_GENE={bioconductor-summarizedexperiment=1.32.0}, STAR_ALIGN={star=2.7.10a, samtools=1.18, gawk=5.1.0}, STAR_GENOMEGENERATE={star=2.7.10a, samtools=1.18, gawk=5.1.0}, STRINGTIE_STRINGTIE={stringtie=2.2.1}, SUBREAD_FEATURECOUNTS={subread=2.0.1}, TRIMGALORE={trimgalore=0.6.7, cutadapt=3.4}, TXIMETA_TXIMPORT={bioconductor-tximeta=1.20.1}, UCSC_BEDCLIP={ucsc=377}, UCSC_BEDGRAPHTOBIGWIG={ucsc=445}, UNTAR_SALMON_INDEX={untar=1.34}, Workflow={nf-core/rnaseq=v3.15.0dev}}" + "{BBMAP_BBSPLIT={bbmap=39.01}, BEDTOOLS_GENOMECOV_FW={bedtools=2.31.1}, CAT_FASTQ={cat=8.3}, CUSTOM_CATADDITIONALFASTA={python=3.9.5}, CUSTOM_GETCHROMSIZES={getchromsizes=1.2}, CUSTOM_TX2GENE={python=3.9.5}, DESEQ2_QC_PSEUDO={r-base=4.0.3, bioconductor-deseq2=1.28.0}, DESEQ2_QC_STAR_SALMON={r-base=4.0.3, bioconductor-deseq2=1.28.0}, DUPRADAR={bioconductor-dupradar=1.32.0}, FASTQC={fastqc=0.12.1}, FQ_SUBSAMPLE={fq=0.9.1 (2022-02-22)}, GTF2BED={perl=5.26.2}, GTF_FILTER={python=3.9.5}, GUNZIP_ADDITIONAL_FASTA={gunzip=1.1}, GUNZIP_GTF={gunzip=1.1}, MULTIQC_CUSTOM_BIOTYPE={python=3.9.5}, PICARD_MARKDUPLICATES={picard=3.1.1}, QUALIMAP_RNASEQ={qualimap=2.3}, RSEQC_BAMSTAT={rseqc=5.0.2}, RSEQC_INFEREXPERIMENT={rseqc=5.0.2}, RSEQC_INNERDISTANCE={rseqc=5.0.2}, RSEQC_JUNCTIONANNOTATION={rseqc=5.0.2}, RSEQC_JUNCTIONSATURATION={rseqc=5.0.2}, RSEQC_READDISTRIBUTION={rseqc=5.0.2}, RSEQC_READDUPLICATION={rseqc=5.0.2}, SALMON_QUANT={salmon=1.10.1}, SAMTOOLS_FLAGSTAT={samtools=1.2}, SAMTOOLS_IDXSTATS={samtools=1.2}, SAMTOOLS_INDEX={samtools=1.2}, SAMTOOLS_SORT={samtools=1.2}, SAMTOOLS_STATS={samtools=1.2}, SE_GENE={bioconductor-summarizedexperiment=1.32.0}, STAR_ALIGN={star=2.7.10a, samtools=1.18, gawk=5.1.0}, STAR_GENOMEGENERATE={star=2.7.10a, samtools=1.18, gawk=5.1.0}, STRINGTIE_STRINGTIE={stringtie=2.2.1}, SUBREAD_FEATURECOUNTS={subread=2.0.1}, TRIMGALORE={trimgalore=0.6.7, cutadapt=3.4}, TXIMETA_TXIMPORT={bioconductor-tximeta=1.20.1}, UCSC_BEDCLIP={ucsc=377}, UCSC_BEDGRAPHTOBIGWIG={ucsc=445}, UNTAR_SALMON_INDEX={untar=1.34}, Workflow={nf-core/rnaseq=v3.15.0}}" ], "meta": { "nf-test": "0.9.0", diff --git a/tests/featurecounts_group_type.nf.test.snap b/tests/featurecounts_group_type.nf.test.snap index b1160d39d..a7e6910dd 100644 --- a/tests/featurecounts_group_type.nf.test.snap +++ b/tests/featurecounts_group_type.nf.test.snap @@ -747,7 +747,7 @@ }, "versions": { "content": [ - "{BBMAP_BBSPLIT={bbmap=39.01}, BEDTOOLS_GENOMECOV_FW={bedtools=2.31.1}, CAT_FASTQ={cat=8.3}, CUSTOM_CATADDITIONALFASTA={python=3.9.5}, CUSTOM_GETCHROMSIZES={getchromsizes=1.2}, CUSTOM_TX2GENE={python=3.9.5}, DESEQ2_QC_PSEUDO={r-base=4.0.3, bioconductor-deseq2=1.28.0}, DESEQ2_QC_STAR_SALMON={r-base=4.0.3, bioconductor-deseq2=1.28.0}, DUPRADAR={bioconductor-dupradar=1.32.0}, FASTQC={fastqc=0.12.1}, FQ_SUBSAMPLE={fq=0.9.1 (2022-02-22)}, GTF2BED={perl=5.26.2}, GTF_FILTER={python=3.9.5}, GUNZIP_ADDITIONAL_FASTA={gunzip=1.1}, GUNZIP_GTF={gunzip=1.1}, PICARD_MARKDUPLICATES={picard=3.1.1}, QUALIMAP_RNASEQ={qualimap=2.3}, RSEQC_BAMSTAT={rseqc=5.0.2}, RSEQC_INFEREXPERIMENT={rseqc=5.0.2}, RSEQC_INNERDISTANCE={rseqc=5.0.2}, RSEQC_JUNCTIONANNOTATION={rseqc=5.0.2}, RSEQC_JUNCTIONSATURATION={rseqc=5.0.2}, RSEQC_READDISTRIBUTION={rseqc=5.0.2}, RSEQC_READDUPLICATION={rseqc=5.0.2}, SALMON_QUANT={salmon=1.10.1}, SAMTOOLS_FLAGSTAT={samtools=1.2}, SAMTOOLS_IDXSTATS={samtools=1.2}, SAMTOOLS_INDEX={samtools=1.2}, SAMTOOLS_SORT={samtools=1.2}, SAMTOOLS_STATS={samtools=1.2}, SE_GENE={bioconductor-summarizedexperiment=1.32.0}, STAR_ALIGN={star=2.7.10a, samtools=1.18, gawk=5.1.0}, STAR_GENOMEGENERATE={star=2.7.10a, samtools=1.18, gawk=5.1.0}, STRINGTIE_STRINGTIE={stringtie=2.2.1}, TRIMGALORE={trimgalore=0.6.7, cutadapt=3.4}, TXIMETA_TXIMPORT={bioconductor-tximeta=1.20.1}, UCSC_BEDCLIP={ucsc=377}, UCSC_BEDGRAPHTOBIGWIG={ucsc=445}, UNTAR_SALMON_INDEX={untar=1.34}, Workflow={nf-core/rnaseq=v3.15.0dev}}" + "{BBMAP_BBSPLIT={bbmap=39.01}, BEDTOOLS_GENOMECOV_FW={bedtools=2.31.1}, CAT_FASTQ={cat=8.3}, CUSTOM_CATADDITIONALFASTA={python=3.9.5}, CUSTOM_GETCHROMSIZES={getchromsizes=1.2}, CUSTOM_TX2GENE={python=3.9.5}, DESEQ2_QC_PSEUDO={r-base=4.0.3, bioconductor-deseq2=1.28.0}, DESEQ2_QC_STAR_SALMON={r-base=4.0.3, bioconductor-deseq2=1.28.0}, DUPRADAR={bioconductor-dupradar=1.32.0}, FASTQC={fastqc=0.12.1}, FQ_SUBSAMPLE={fq=0.9.1 (2022-02-22)}, GTF2BED={perl=5.26.2}, GTF_FILTER={python=3.9.5}, GUNZIP_ADDITIONAL_FASTA={gunzip=1.1}, GUNZIP_GTF={gunzip=1.1}, PICARD_MARKDUPLICATES={picard=3.1.1}, QUALIMAP_RNASEQ={qualimap=2.3}, RSEQC_BAMSTAT={rseqc=5.0.2}, RSEQC_INFEREXPERIMENT={rseqc=5.0.2}, RSEQC_INNERDISTANCE={rseqc=5.0.2}, RSEQC_JUNCTIONANNOTATION={rseqc=5.0.2}, RSEQC_JUNCTIONSATURATION={rseqc=5.0.2}, RSEQC_READDISTRIBUTION={rseqc=5.0.2}, RSEQC_READDUPLICATION={rseqc=5.0.2}, SALMON_QUANT={salmon=1.10.1}, SAMTOOLS_FLAGSTAT={samtools=1.2}, SAMTOOLS_IDXSTATS={samtools=1.2}, SAMTOOLS_INDEX={samtools=1.2}, SAMTOOLS_SORT={samtools=1.2}, SAMTOOLS_STATS={samtools=1.2}, SE_GENE={bioconductor-summarizedexperiment=1.32.0}, STAR_ALIGN={star=2.7.10a, samtools=1.18, gawk=5.1.0}, STAR_GENOMEGENERATE={star=2.7.10a, samtools=1.18, gawk=5.1.0}, STRINGTIE_STRINGTIE={stringtie=2.2.1}, TRIMGALORE={trimgalore=0.6.7, cutadapt=3.4}, TXIMETA_TXIMPORT={bioconductor-tximeta=1.20.1}, UCSC_BEDCLIP={ucsc=377}, UCSC_BEDGRAPHTOBIGWIG={ucsc=445}, UNTAR_SALMON_INDEX={untar=1.34}, Workflow={nf-core/rnaseq=v3.15.0}}" ], "meta": { "nf-test": "0.9.0", @@ -757,7 +757,7 @@ }, "Params: --featurecounts_group_type false - stub": { "content": [ - "{BBMAP_BBSPLIT={bbmap=39.01}, CAT_FASTQ={cat=8.3}, CUSTOM_CATADDITIONALFASTA={python=null}, CUSTOM_GETCHROMSIZES={getchromsizes=1.2}, FASTQC={fastqc=0.12.1}, GTF2BED={perl=5.26.2}, GTF_FILTER={python=3.9.5}, GUNZIP_ADDITIONAL_FASTA={gunzip=1.1}, GUNZIP_GTF={gunzip=1.1}, STAR_GENOMEGENERATE={star=2.7.10a, samtools=1.18, gawk=5.1.0}, TRIMGALORE={trimgalore=0.6.7, cutadapt=3.4}, UNTAR_SALMON_INDEX={untar=1.34}, Workflow={nf-core/rnaseq=v3.15.0dev}}", + "{BBMAP_BBSPLIT={bbmap=39.01}, CAT_FASTQ={cat=8.3}, CUSTOM_CATADDITIONALFASTA={python=null}, CUSTOM_GETCHROMSIZES={getchromsizes=1.2}, FASTQC={fastqc=0.12.1}, GTF2BED={perl=5.26.2}, GTF_FILTER={python=3.9.5}, GUNZIP_ADDITIONAL_FASTA={gunzip=1.1}, GUNZIP_GTF={gunzip=1.1}, STAR_GENOMEGENERATE={star=2.7.10a, samtools=1.18, gawk=5.1.0}, TRIMGALORE={trimgalore=0.6.7, cutadapt=3.4}, UNTAR_SALMON_INDEX={untar=1.34}, Workflow={nf-core/rnaseq=v3.15.0}}", "genome_transcriptome.fasta", "genome_transcriptome.gtf", "RAP1_IAA_30M_REP1_raw.html", diff --git a/tests/hisat2.nf.test.snap b/tests/hisat2.nf.test.snap index 4e82775d6..db5ac14e1 100644 --- a/tests/hisat2.nf.test.snap +++ b/tests/hisat2.nf.test.snap @@ -631,7 +631,7 @@ }, "Params: --aligner hisat2 - stub": { "content": [ - "{BBMAP_BBSPLIT={bbmap=39.01}, CAT_FASTQ={cat=8.3}, CUSTOM_CATADDITIONALFASTA={python=null}, CUSTOM_GETCHROMSIZES={getchromsizes=1.2}, FASTQC={fastqc=0.12.1}, GTF2BED={perl=5.26.2}, GTF_FILTER={python=3.9.5}, GUNZIP_ADDITIONAL_FASTA={gunzip=1.1}, GUNZIP_GTF={gunzip=1.1}, HISAT2_EXTRACTSPLICESITES={hisat2=2.2.1}, TRIMGALORE={trimgalore=0.6.7, cutadapt=3.4}, UNTAR_HISAT2_INDEX={untar=1.34}, UNTAR_SALMON_INDEX={untar=1.34}, Workflow={nf-core/rnaseq=v3.15.0dev}}", + "{BBMAP_BBSPLIT={bbmap=39.01}, CAT_FASTQ={cat=8.3}, CUSTOM_CATADDITIONALFASTA={python=null}, CUSTOM_GETCHROMSIZES={getchromsizes=1.2}, FASTQC={fastqc=0.12.1}, GTF2BED={perl=5.26.2}, GTF_FILTER={python=3.9.5}, GUNZIP_ADDITIONAL_FASTA={gunzip=1.1}, GUNZIP_GTF={gunzip=1.1}, HISAT2_EXTRACTSPLICESITES={hisat2=2.2.1}, TRIMGALORE={trimgalore=0.6.7, cutadapt=3.4}, UNTAR_HISAT2_INDEX={untar=1.34}, UNTAR_SALMON_INDEX={untar=1.34}, Workflow={nf-core/rnaseq=v3.15.0}}", "genome_transcriptome.fasta", "genome_transcriptome.gtf", "RAP1_IAA_30M_REP1_raw.html", @@ -726,7 +726,7 @@ }, "versions": { "content": [ - "{BBMAP_BBSPLIT={bbmap=39.01}, BEDTOOLS_GENOMECOV_FW={bedtools=2.31.1}, CAT_FASTQ={cat=8.3}, CUSTOM_CATADDITIONALFASTA={python=3.9.5}, CUSTOM_GETCHROMSIZES={getchromsizes=1.2}, CUSTOM_TX2GENE={python=3.9.5}, DESEQ2_QC_PSEUDO={r-base=4.0.3, bioconductor-deseq2=1.28.0}, DUPRADAR={bioconductor-dupradar=1.32.0}, FASTQC={fastqc=0.12.1}, FQ_SUBSAMPLE={fq=0.9.1 (2022-02-22)}, GTF2BED={perl=5.26.2}, GTF_FILTER={python=3.9.5}, GUNZIP_ADDITIONAL_FASTA={gunzip=1.1}, GUNZIP_GTF={gunzip=1.1}, HISAT2_ALIGN={hisat2=2.2.1, samtools=1.16.1}, HISAT2_EXTRACTSPLICESITES={hisat2=2.2.1}, MULTIQC_CUSTOM_BIOTYPE={python=3.9.5}, PICARD_MARKDUPLICATES={picard=3.1.1}, QUALIMAP_RNASEQ={qualimap=2.3}, RSEQC_BAMSTAT={rseqc=5.0.2}, RSEQC_INFEREXPERIMENT={rseqc=5.0.2}, RSEQC_INNERDISTANCE={rseqc=5.0.2}, RSEQC_JUNCTIONANNOTATION={rseqc=5.0.2}, RSEQC_JUNCTIONSATURATION={rseqc=5.0.2}, RSEQC_READDISTRIBUTION={rseqc=5.0.2}, RSEQC_READDUPLICATION={rseqc=5.0.2}, SALMON_QUANT={salmon=1.10.1}, SAMTOOLS_FLAGSTAT={samtools=1.2}, SAMTOOLS_IDXSTATS={samtools=1.2}, SAMTOOLS_INDEX={samtools=1.2}, SAMTOOLS_SORT={samtools=1.2}, SAMTOOLS_STATS={samtools=1.2}, SE_GENE={bioconductor-summarizedexperiment=1.32.0}, STRINGTIE_STRINGTIE={stringtie=2.2.1}, SUBREAD_FEATURECOUNTS={subread=2.0.1}, TRIMGALORE={trimgalore=0.6.7, cutadapt=3.4}, TXIMETA_TXIMPORT={bioconductor-tximeta=1.20.1}, UCSC_BEDCLIP={ucsc=377}, UCSC_BEDGRAPHTOBIGWIG={ucsc=445}, UNTAR_HISAT2_INDEX={untar=1.34}, UNTAR_SALMON_INDEX={untar=1.34}, Workflow={nf-core/rnaseq=v3.15.0dev}}" + "{BBMAP_BBSPLIT={bbmap=39.01}, BEDTOOLS_GENOMECOV_FW={bedtools=2.31.1}, CAT_FASTQ={cat=8.3}, CUSTOM_CATADDITIONALFASTA={python=3.9.5}, CUSTOM_GETCHROMSIZES={getchromsizes=1.2}, CUSTOM_TX2GENE={python=3.9.5}, DESEQ2_QC_PSEUDO={r-base=4.0.3, bioconductor-deseq2=1.28.0}, DUPRADAR={bioconductor-dupradar=1.32.0}, FASTQC={fastqc=0.12.1}, FQ_SUBSAMPLE={fq=0.9.1 (2022-02-22)}, GTF2BED={perl=5.26.2}, GTF_FILTER={python=3.9.5}, GUNZIP_ADDITIONAL_FASTA={gunzip=1.1}, GUNZIP_GTF={gunzip=1.1}, HISAT2_ALIGN={hisat2=2.2.1, samtools=1.16.1}, HISAT2_EXTRACTSPLICESITES={hisat2=2.2.1}, MULTIQC_CUSTOM_BIOTYPE={python=3.9.5}, PICARD_MARKDUPLICATES={picard=3.1.1}, QUALIMAP_RNASEQ={qualimap=2.3}, RSEQC_BAMSTAT={rseqc=5.0.2}, RSEQC_INFEREXPERIMENT={rseqc=5.0.2}, RSEQC_INNERDISTANCE={rseqc=5.0.2}, RSEQC_JUNCTIONANNOTATION={rseqc=5.0.2}, RSEQC_JUNCTIONSATURATION={rseqc=5.0.2}, RSEQC_READDISTRIBUTION={rseqc=5.0.2}, RSEQC_READDUPLICATION={rseqc=5.0.2}, SALMON_QUANT={salmon=1.10.1}, SAMTOOLS_FLAGSTAT={samtools=1.2}, SAMTOOLS_IDXSTATS={samtools=1.2}, SAMTOOLS_INDEX={samtools=1.2}, SAMTOOLS_SORT={samtools=1.2}, SAMTOOLS_STATS={samtools=1.2}, SE_GENE={bioconductor-summarizedexperiment=1.32.0}, STRINGTIE_STRINGTIE={stringtie=2.2.1}, SUBREAD_FEATURECOUNTS={subread=2.0.1}, TRIMGALORE={trimgalore=0.6.7, cutadapt=3.4}, TXIMETA_TXIMPORT={bioconductor-tximeta=1.20.1}, UCSC_BEDCLIP={ucsc=377}, UCSC_BEDGRAPHTOBIGWIG={ucsc=445}, UNTAR_HISAT2_INDEX={untar=1.34}, UNTAR_SALMON_INDEX={untar=1.34}, Workflow={nf-core/rnaseq=v3.15.0}}" ], "meta": { "nf-test": "0.9.0", diff --git a/tests/kallisto.nf.test.snap b/tests/kallisto.nf.test.snap index 2d7d3ba40..809f4e0f2 100644 --- a/tests/kallisto.nf.test.snap +++ b/tests/kallisto.nf.test.snap @@ -103,7 +103,7 @@ }, "versions": { "content": [ - "{BBMAP_BBSPLIT={bbmap=39.01}, CAT_FASTQ={cat=8.3}, CUSTOM_CATADDITIONALFASTA={python=3.9.5}, CUSTOM_GETCHROMSIZES={getchromsizes=1.2}, CUSTOM_TX2GENE={python=3.9.5}, FQ_SUBSAMPLE={fq=0.9.1 (2022-02-22)}, GTF2BED={perl=5.26.2}, GTF_FILTER={python=3.9.5}, GUNZIP_ADDITIONAL_FASTA={gunzip=1.1}, GUNZIP_GTF={gunzip=1.1}, KALLISTO_INDEX={kallisto=0.48.0}, KALLISTO_QUANT={kallisto=0.48.0}, SALMON_QUANT={salmon=1.10.1}, SE_GENE={bioconductor-summarizedexperiment=1.32.0}, TRIMGALORE={trimgalore=0.6.7, cutadapt=3.4}, TXIMETA_TXIMPORT={bioconductor-tximeta=1.20.1}, UNTAR_SALMON_INDEX={untar=1.34}, Workflow={nf-core/rnaseq=v3.15.0dev}}" + "{BBMAP_BBSPLIT={bbmap=39.01}, CAT_FASTQ={cat=8.3}, CUSTOM_CATADDITIONALFASTA={python=3.9.5}, CUSTOM_GETCHROMSIZES={getchromsizes=1.2}, CUSTOM_TX2GENE={python=3.9.5}, FQ_SUBSAMPLE={fq=0.9.1 (2022-02-22)}, GTF2BED={perl=5.26.2}, GTF_FILTER={python=3.9.5}, GUNZIP_ADDITIONAL_FASTA={gunzip=1.1}, GUNZIP_GTF={gunzip=1.1}, KALLISTO_INDEX={kallisto=0.48.0}, KALLISTO_QUANT={kallisto=0.48.0}, SALMON_QUANT={salmon=1.10.1}, SE_GENE={bioconductor-summarizedexperiment=1.32.0}, TRIMGALORE={trimgalore=0.6.7, cutadapt=3.4}, TXIMETA_TXIMPORT={bioconductor-tximeta=1.20.1}, UNTAR_SALMON_INDEX={untar=1.34}, Workflow={nf-core/rnaseq=v3.15.0}}" ], "meta": { "nf-test": "0.9.0", @@ -219,7 +219,7 @@ }, "Params: --pseudo_aligner kallisto --skip_qc --skip_alignment - stub": { "content": [ - "{BBMAP_BBSPLIT={bbmap=39.01}, CAT_FASTQ={cat=8.3}, CUSTOM_CATADDITIONALFASTA={python=null}, CUSTOM_GETCHROMSIZES={getchromsizes=1.2}, GTF2BED={perl=5.26.2}, GTF_FILTER={python=3.9.5}, GUNZIP_ADDITIONAL_FASTA={gunzip=1.1}, GUNZIP_GTF={gunzip=1.1}, KALLISTO_INDEX={kallisto=0.48.0}, TRIMGALORE={trimgalore=0.6.7, cutadapt=3.4}, UNTAR_SALMON_INDEX={untar=1.34}, Workflow={nf-core/rnaseq=v3.15.0dev}}", + "{BBMAP_BBSPLIT={bbmap=39.01}, CAT_FASTQ={cat=8.3}, CUSTOM_CATADDITIONALFASTA={python=null}, CUSTOM_GETCHROMSIZES={getchromsizes=1.2}, GTF2BED={perl=5.26.2}, GTF_FILTER={python=3.9.5}, GUNZIP_ADDITIONAL_FASTA={gunzip=1.1}, GUNZIP_GTF={gunzip=1.1}, KALLISTO_INDEX={kallisto=0.48.0}, TRIMGALORE={trimgalore=0.6.7, cutadapt=3.4}, UNTAR_SALMON_INDEX={untar=1.34}, Workflow={nf-core/rnaseq=v3.15.0}}", "genome_transcriptome.fasta", "genome_transcriptome.gtf", "multiqc_report.html", diff --git a/tests/min_mapped_reads.nf.test.snap b/tests/min_mapped_reads.nf.test.snap index 99789ff7c..941a21a58 100644 --- a/tests/min_mapped_reads.nf.test.snap +++ b/tests/min_mapped_reads.nf.test.snap @@ -447,7 +447,7 @@ }, "Params: --min_mapped_reads 90 - stub": { "content": [ - "{BBMAP_BBSPLIT={bbmap=39.01}, CAT_FASTQ={cat=8.3}, CUSTOM_CATADDITIONALFASTA={python=null}, CUSTOM_GETCHROMSIZES={getchromsizes=1.2}, FASTQC={fastqc=0.12.1}, GTF2BED={perl=5.26.2}, GTF_FILTER={python=3.9.5}, GUNZIP_ADDITIONAL_FASTA={gunzip=1.1}, GUNZIP_GTF={gunzip=1.1}, STAR_GENOMEGENERATE={star=2.7.10a, samtools=1.18, gawk=5.1.0}, TRIMGALORE={trimgalore=0.6.7, cutadapt=3.4}, UNTAR_SALMON_INDEX={untar=1.34}, Workflow={nf-core/rnaseq=v3.15.0dev}}", + "{BBMAP_BBSPLIT={bbmap=39.01}, CAT_FASTQ={cat=8.3}, CUSTOM_CATADDITIONALFASTA={python=null}, CUSTOM_GETCHROMSIZES={getchromsizes=1.2}, FASTQC={fastqc=0.12.1}, GTF2BED={perl=5.26.2}, GTF_FILTER={python=3.9.5}, GUNZIP_ADDITIONAL_FASTA={gunzip=1.1}, GUNZIP_GTF={gunzip=1.1}, STAR_GENOMEGENERATE={star=2.7.10a, samtools=1.18, gawk=5.1.0}, TRIMGALORE={trimgalore=0.6.7, cutadapt=3.4}, UNTAR_SALMON_INDEX={untar=1.34}, Workflow={nf-core/rnaseq=v3.15.0}}", "genome_transcriptome.fasta", "genome_transcriptome.gtf", "RAP1_IAA_30M_REP1_raw.html", @@ -854,7 +854,7 @@ }, "versions": { "content": [ - "{BBMAP_BBSPLIT={bbmap=39.01}, BEDTOOLS_GENOMECOV_FW={bedtools=2.31.1}, CAT_FASTQ={cat=8.3}, CUSTOM_CATADDITIONALFASTA={python=3.9.5}, CUSTOM_GETCHROMSIZES={getchromsizes=1.2}, CUSTOM_TX2GENE={python=3.9.5}, DESEQ2_QC_PSEUDO={r-base=4.0.3, bioconductor-deseq2=1.28.0}, DESEQ2_QC_STAR_SALMON={r-base=4.0.3, bioconductor-deseq2=1.28.0}, DUPRADAR={bioconductor-dupradar=1.32.0}, FASTQC={fastqc=0.12.1}, FQ_SUBSAMPLE={fq=0.9.1 (2022-02-22)}, GTF2BED={perl=5.26.2}, GTF_FILTER={python=3.9.5}, GUNZIP_ADDITIONAL_FASTA={gunzip=1.1}, GUNZIP_GTF={gunzip=1.1}, MULTIQC_CUSTOM_BIOTYPE={python=3.9.5}, PICARD_MARKDUPLICATES={picard=3.1.1}, QUALIMAP_RNASEQ={qualimap=2.3}, RSEQC_BAMSTAT={rseqc=5.0.2}, RSEQC_INFEREXPERIMENT={rseqc=5.0.2}, RSEQC_INNERDISTANCE={rseqc=5.0.2}, RSEQC_JUNCTIONANNOTATION={rseqc=5.0.2}, RSEQC_JUNCTIONSATURATION={rseqc=5.0.2}, RSEQC_READDISTRIBUTION={rseqc=5.0.2}, RSEQC_READDUPLICATION={rseqc=5.0.2}, SALMON_QUANT={salmon=1.10.1}, SAMTOOLS_FLAGSTAT={samtools=1.2}, SAMTOOLS_IDXSTATS={samtools=1.2}, SAMTOOLS_INDEX={samtools=1.2}, SAMTOOLS_SORT={samtools=1.2}, SAMTOOLS_STATS={samtools=1.2}, SE_GENE={bioconductor-summarizedexperiment=1.32.0}, STAR_ALIGN={star=2.7.10a, samtools=1.18, gawk=5.1.0}, STAR_GENOMEGENERATE={star=2.7.10a, samtools=1.18, gawk=5.1.0}, STRINGTIE_STRINGTIE={stringtie=2.2.1}, SUBREAD_FEATURECOUNTS={subread=2.0.1}, TRIMGALORE={trimgalore=0.6.7, cutadapt=3.4}, TXIMETA_TXIMPORT={bioconductor-tximeta=1.20.1}, UCSC_BEDCLIP={ucsc=377}, UCSC_BEDGRAPHTOBIGWIG={ucsc=445}, UNTAR_SALMON_INDEX={untar=1.34}, Workflow={nf-core/rnaseq=v3.15.0dev}}" + "{BBMAP_BBSPLIT={bbmap=39.01}, BEDTOOLS_GENOMECOV_FW={bedtools=2.31.1}, CAT_FASTQ={cat=8.3}, CUSTOM_CATADDITIONALFASTA={python=3.9.5}, CUSTOM_GETCHROMSIZES={getchromsizes=1.2}, CUSTOM_TX2GENE={python=3.9.5}, DESEQ2_QC_PSEUDO={r-base=4.0.3, bioconductor-deseq2=1.28.0}, DESEQ2_QC_STAR_SALMON={r-base=4.0.3, bioconductor-deseq2=1.28.0}, DUPRADAR={bioconductor-dupradar=1.32.0}, FASTQC={fastqc=0.12.1}, FQ_SUBSAMPLE={fq=0.9.1 (2022-02-22)}, GTF2BED={perl=5.26.2}, GTF_FILTER={python=3.9.5}, GUNZIP_ADDITIONAL_FASTA={gunzip=1.1}, GUNZIP_GTF={gunzip=1.1}, MULTIQC_CUSTOM_BIOTYPE={python=3.9.5}, PICARD_MARKDUPLICATES={picard=3.1.1}, QUALIMAP_RNASEQ={qualimap=2.3}, RSEQC_BAMSTAT={rseqc=5.0.2}, RSEQC_INFEREXPERIMENT={rseqc=5.0.2}, RSEQC_INNERDISTANCE={rseqc=5.0.2}, RSEQC_JUNCTIONANNOTATION={rseqc=5.0.2}, RSEQC_JUNCTIONSATURATION={rseqc=5.0.2}, RSEQC_READDISTRIBUTION={rseqc=5.0.2}, RSEQC_READDUPLICATION={rseqc=5.0.2}, SALMON_QUANT={salmon=1.10.1}, SAMTOOLS_FLAGSTAT={samtools=1.2}, SAMTOOLS_IDXSTATS={samtools=1.2}, SAMTOOLS_INDEX={samtools=1.2}, SAMTOOLS_SORT={samtools=1.2}, SAMTOOLS_STATS={samtools=1.2}, SE_GENE={bioconductor-summarizedexperiment=1.32.0}, STAR_ALIGN={star=2.7.10a, samtools=1.18, gawk=5.1.0}, STAR_GENOMEGENERATE={star=2.7.10a, samtools=1.18, gawk=5.1.0}, STRINGTIE_STRINGTIE={stringtie=2.2.1}, SUBREAD_FEATURECOUNTS={subread=2.0.1}, TRIMGALORE={trimgalore=0.6.7, cutadapt=3.4}, TXIMETA_TXIMPORT={bioconductor-tximeta=1.20.1}, UCSC_BEDCLIP={ucsc=377}, UCSC_BEDGRAPHTOBIGWIG={ucsc=445}, UNTAR_SALMON_INDEX={untar=1.34}, Workflow={nf-core/rnaseq=v3.15.0}}" ], "meta": { "nf-test": "0.9.0", diff --git a/tests/remove_ribo_rna.nf.test.snap b/tests/remove_ribo_rna.nf.test.snap index a90fd3388..73cd09c7c 100644 --- a/tests/remove_ribo_rna.nf.test.snap +++ b/tests/remove_ribo_rna.nf.test.snap @@ -498,7 +498,7 @@ }, "Params: --remove_ribo_rna - stub": { "content": [ - "{BBMAP_BBSPLIT={bbmap=39.01}, CAT_FASTQ={cat=8.3}, CUSTOM_CATADDITIONALFASTA={python=null}, CUSTOM_GETCHROMSIZES={getchromsizes=1.2}, FASTQC={fastqc=0.12.1}, GTF2BED={perl=5.26.2}, GTF_FILTER={python=3.9.5}, GUNZIP_ADDITIONAL_FASTA={gunzip=1.1}, GUNZIP_GTF={gunzip=1.1}, SORTMERNA_INDEX={sortmerna=4.3.6}, STAR_GENOMEGENERATE={star=2.7.10a, samtools=1.18, gawk=5.1.0}, TRIMGALORE={trimgalore=0.6.7, cutadapt=3.4}, UNTAR_SALMON_INDEX={untar=1.34}, Workflow={nf-core/rnaseq=v3.15.0dev}}", + "{BBMAP_BBSPLIT={bbmap=39.01}, CAT_FASTQ={cat=8.3}, CUSTOM_CATADDITIONALFASTA={python=null}, CUSTOM_GETCHROMSIZES={getchromsizes=1.2}, FASTQC={fastqc=0.12.1}, GTF2BED={perl=5.26.2}, GTF_FILTER={python=3.9.5}, GUNZIP_ADDITIONAL_FASTA={gunzip=1.1}, GUNZIP_GTF={gunzip=1.1}, SORTMERNA_INDEX={sortmerna=4.3.6}, STAR_GENOMEGENERATE={star=2.7.10a, samtools=1.18, gawk=5.1.0}, TRIMGALORE={trimgalore=0.6.7, cutadapt=3.4}, UNTAR_SALMON_INDEX={untar=1.34}, Workflow={nf-core/rnaseq=v3.15.0}}", "genome_transcriptome.fasta", "genome_transcriptome.gtf", "RAP1_IAA_30M_REP1_raw.html", @@ -954,7 +954,7 @@ }, "versions": { "content": [ - "{BBMAP_BBSPLIT={bbmap=39.01}, BEDTOOLS_GENOMECOV_FW={bedtools=2.31.1}, CAT_FASTQ={cat=8.3}, CUSTOM_CATADDITIONALFASTA={python=3.9.5}, CUSTOM_GETCHROMSIZES={getchromsizes=1.2}, CUSTOM_TX2GENE={python=3.9.5}, DESEQ2_QC_PSEUDO={r-base=4.0.3, bioconductor-deseq2=1.28.0}, DESEQ2_QC_STAR_SALMON={r-base=4.0.3, bioconductor-deseq2=1.28.0}, DUPRADAR={bioconductor-dupradar=1.32.0}, FASTQC={fastqc=0.12.1}, FQ_SUBSAMPLE={fq=0.9.1 (2022-02-22)}, GTF2BED={perl=5.26.2}, GTF_FILTER={python=3.9.5}, GUNZIP_ADDITIONAL_FASTA={gunzip=1.1}, GUNZIP_GTF={gunzip=1.1}, MULTIQC_CUSTOM_BIOTYPE={python=3.9.5}, PICARD_MARKDUPLICATES={picard=3.1.1}, QUALIMAP_RNASEQ={qualimap=2.3}, RSEQC_BAMSTAT={rseqc=5.0.2}, RSEQC_INFEREXPERIMENT={rseqc=5.0.2}, RSEQC_INNERDISTANCE={rseqc=5.0.2}, RSEQC_JUNCTIONANNOTATION={rseqc=5.0.2}, RSEQC_JUNCTIONSATURATION={rseqc=5.0.2}, RSEQC_READDISTRIBUTION={rseqc=5.0.2}, RSEQC_READDUPLICATION={rseqc=5.0.2}, SALMON_QUANT={salmon=1.10.1}, SAMTOOLS_FLAGSTAT={samtools=1.2}, SAMTOOLS_IDXSTATS={samtools=1.2}, SAMTOOLS_INDEX={samtools=1.2}, SAMTOOLS_SORT={samtools=1.2}, SAMTOOLS_STATS={samtools=1.2}, SE_GENE={bioconductor-summarizedexperiment=1.32.0}, SORTMERNA={sortmerna=4.3.6}, SORTMERNA_INDEX={sortmerna=4.3.6}, STAR_ALIGN={star=2.7.10a, samtools=1.18, gawk=5.1.0}, STAR_GENOMEGENERATE={star=2.7.10a, samtools=1.18, gawk=5.1.0}, STRINGTIE_STRINGTIE={stringtie=2.2.1}, SUBREAD_FEATURECOUNTS={subread=2.0.1}, TRIMGALORE={trimgalore=0.6.7, cutadapt=3.4}, TXIMETA_TXIMPORT={bioconductor-tximeta=1.20.1}, UCSC_BEDCLIP={ucsc=377}, UCSC_BEDGRAPHTOBIGWIG={ucsc=445}, UNTAR_SALMON_INDEX={untar=1.34}, Workflow={nf-core/rnaseq=v3.15.0dev}}" + "{BBMAP_BBSPLIT={bbmap=39.01}, BEDTOOLS_GENOMECOV_FW={bedtools=2.31.1}, CAT_FASTQ={cat=8.3}, CUSTOM_CATADDITIONALFASTA={python=3.9.5}, CUSTOM_GETCHROMSIZES={getchromsizes=1.2}, CUSTOM_TX2GENE={python=3.9.5}, DESEQ2_QC_PSEUDO={r-base=4.0.3, bioconductor-deseq2=1.28.0}, DESEQ2_QC_STAR_SALMON={r-base=4.0.3, bioconductor-deseq2=1.28.0}, DUPRADAR={bioconductor-dupradar=1.32.0}, FASTQC={fastqc=0.12.1}, FQ_SUBSAMPLE={fq=0.9.1 (2022-02-22)}, GTF2BED={perl=5.26.2}, GTF_FILTER={python=3.9.5}, GUNZIP_ADDITIONAL_FASTA={gunzip=1.1}, GUNZIP_GTF={gunzip=1.1}, MULTIQC_CUSTOM_BIOTYPE={python=3.9.5}, PICARD_MARKDUPLICATES={picard=3.1.1}, QUALIMAP_RNASEQ={qualimap=2.3}, RSEQC_BAMSTAT={rseqc=5.0.2}, RSEQC_INFEREXPERIMENT={rseqc=5.0.2}, RSEQC_INNERDISTANCE={rseqc=5.0.2}, RSEQC_JUNCTIONANNOTATION={rseqc=5.0.2}, RSEQC_JUNCTIONSATURATION={rseqc=5.0.2}, RSEQC_READDISTRIBUTION={rseqc=5.0.2}, RSEQC_READDUPLICATION={rseqc=5.0.2}, SALMON_QUANT={salmon=1.10.1}, SAMTOOLS_FLAGSTAT={samtools=1.2}, SAMTOOLS_IDXSTATS={samtools=1.2}, SAMTOOLS_INDEX={samtools=1.2}, SAMTOOLS_SORT={samtools=1.2}, SAMTOOLS_STATS={samtools=1.2}, SE_GENE={bioconductor-summarizedexperiment=1.32.0}, SORTMERNA={sortmerna=4.3.6}, SORTMERNA_INDEX={sortmerna=4.3.6}, STAR_ALIGN={star=2.7.10a, samtools=1.18, gawk=5.1.0}, STAR_GENOMEGENERATE={star=2.7.10a, samtools=1.18, gawk=5.1.0}, STRINGTIE_STRINGTIE={stringtie=2.2.1}, SUBREAD_FEATURECOUNTS={subread=2.0.1}, TRIMGALORE={trimgalore=0.6.7, cutadapt=3.4}, TXIMETA_TXIMPORT={bioconductor-tximeta=1.20.1}, UCSC_BEDCLIP={ucsc=377}, UCSC_BEDGRAPHTOBIGWIG={ucsc=445}, UNTAR_SALMON_INDEX={untar=1.34}, Workflow={nf-core/rnaseq=v3.15.0}}" ], "meta": { "nf-test": "0.9.0", diff --git a/tests/salmon.nf.test.snap b/tests/salmon.nf.test.snap index 6865c5f3c..93f7cc786 100644 --- a/tests/salmon.nf.test.snap +++ b/tests/salmon.nf.test.snap @@ -61,7 +61,7 @@ }, "versions": { "content": [ - "{BBMAP_BBSPLIT={bbmap=39.01}, CAT_FASTQ={cat=8.3}, CUSTOM_CATADDITIONALFASTA={python=3.9.5}, CUSTOM_GETCHROMSIZES={getchromsizes=1.2}, CUSTOM_TX2GENE={python=3.9.5}, FQ_SUBSAMPLE={fq=0.9.1 (2022-02-22)}, GTF2BED={perl=5.26.2}, GTF_FILTER={python=3.9.5}, GUNZIP_ADDITIONAL_FASTA={gunzip=1.1}, GUNZIP_GTF={gunzip=1.1}, SALMON_QUANT={salmon=1.10.1}, SE_GENE={bioconductor-summarizedexperiment=1.32.0}, TRIMGALORE={trimgalore=0.6.7, cutadapt=3.4}, TXIMETA_TXIMPORT={bioconductor-tximeta=1.20.1}, UNTAR_SALMON_INDEX={untar=1.34}, Workflow={nf-core/rnaseq=v3.15.0dev}}" + "{BBMAP_BBSPLIT={bbmap=39.01}, CAT_FASTQ={cat=8.3}, CUSTOM_CATADDITIONALFASTA={python=3.9.5}, CUSTOM_GETCHROMSIZES={getchromsizes=1.2}, CUSTOM_TX2GENE={python=3.9.5}, FQ_SUBSAMPLE={fq=0.9.1 (2022-02-22)}, GTF2BED={perl=5.26.2}, GTF_FILTER={python=3.9.5}, GUNZIP_ADDITIONAL_FASTA={gunzip=1.1}, GUNZIP_GTF={gunzip=1.1}, SALMON_QUANT={salmon=1.10.1}, SE_GENE={bioconductor-summarizedexperiment=1.32.0}, TRIMGALORE={trimgalore=0.6.7, cutadapt=3.4}, TXIMETA_TXIMPORT={bioconductor-tximeta=1.20.1}, UNTAR_SALMON_INDEX={untar=1.34}, Workflow={nf-core/rnaseq=v3.15.0}}" ], "meta": { "nf-test": "0.9.0", @@ -265,7 +265,7 @@ }, "Params: --pseudo_aligner salmon --skip_qc --skip_alignment - stub": { "content": [ - "{BBMAP_BBSPLIT={bbmap=39.01}, CAT_FASTQ={cat=8.3}, CUSTOM_CATADDITIONALFASTA={python=null}, CUSTOM_GETCHROMSIZES={getchromsizes=1.2}, GTF2BED={perl=5.26.2}, GTF_FILTER={python=3.9.5}, GUNZIP_ADDITIONAL_FASTA={gunzip=1.1}, GUNZIP_GTF={gunzip=1.1}, TRIMGALORE={trimgalore=0.6.7, cutadapt=3.4}, UNTAR_SALMON_INDEX={untar=1.34}, Workflow={nf-core/rnaseq=v3.15.0dev}}", + "{BBMAP_BBSPLIT={bbmap=39.01}, CAT_FASTQ={cat=8.3}, CUSTOM_CATADDITIONALFASTA={python=null}, CUSTOM_GETCHROMSIZES={getchromsizes=1.2}, GTF2BED={perl=5.26.2}, GTF_FILTER={python=3.9.5}, GUNZIP_ADDITIONAL_FASTA={gunzip=1.1}, GUNZIP_GTF={gunzip=1.1}, TRIMGALORE={trimgalore=0.6.7, cutadapt=3.4}, UNTAR_SALMON_INDEX={untar=1.34}, Workflow={nf-core/rnaseq=v3.15.0}}", "genome_transcriptome.fasta", "genome_transcriptome.gtf", "RAP1_IAA_30M_REP1_raw.html", diff --git a/tests/skip_qc.nf.test.snap b/tests/skip_qc.nf.test.snap index 397229679..563f4913e 100644 --- a/tests/skip_qc.nf.test.snap +++ b/tests/skip_qc.nf.test.snap @@ -157,7 +157,7 @@ }, "Params: --skip_qc - stub": { "content": [ - "{BBMAP_BBSPLIT={bbmap=39.01}, CAT_FASTQ={cat=8.3}, CUSTOM_CATADDITIONALFASTA={python=null}, CUSTOM_GETCHROMSIZES={getchromsizes=1.2}, GTF2BED={perl=5.26.2}, GTF_FILTER={python=3.9.5}, GUNZIP_ADDITIONAL_FASTA={gunzip=1.1}, GUNZIP_GTF={gunzip=1.1}, STAR_GENOMEGENERATE={star=2.7.10a, samtools=1.18, gawk=5.1.0}, TRIMGALORE={trimgalore=0.6.7, cutadapt=3.4}, UNTAR_SALMON_INDEX={untar=1.34}, Workflow={nf-core/rnaseq=v3.15.0dev}}", + "{BBMAP_BBSPLIT={bbmap=39.01}, CAT_FASTQ={cat=8.3}, CUSTOM_CATADDITIONALFASTA={python=null}, CUSTOM_GETCHROMSIZES={getchromsizes=1.2}, GTF2BED={perl=5.26.2}, GTF_FILTER={python=3.9.5}, GUNZIP_ADDITIONAL_FASTA={gunzip=1.1}, GUNZIP_GTF={gunzip=1.1}, STAR_GENOMEGENERATE={star=2.7.10a, samtools=1.18, gawk=5.1.0}, TRIMGALORE={trimgalore=0.6.7, cutadapt=3.4}, UNTAR_SALMON_INDEX={untar=1.34}, Workflow={nf-core/rnaseq=v3.15.0}}", "genome_transcriptome.fasta", "genome_transcriptome.gtf", "RAP1_IAA_30M_REP1_raw.html", @@ -477,7 +477,7 @@ }, "versions": { "content": [ - "{BBMAP_BBSPLIT={bbmap=39.01}, BEDTOOLS_GENOMECOV_FW={bedtools=2.31.1}, CAT_FASTQ={cat=8.3}, CUSTOM_CATADDITIONALFASTA={python=3.9.5}, CUSTOM_GETCHROMSIZES={getchromsizes=1.2}, CUSTOM_TX2GENE={python=3.9.5}, FQ_SUBSAMPLE={fq=0.9.1 (2022-02-22)}, GTF2BED={perl=5.26.2}, GTF_FILTER={python=3.9.5}, GUNZIP_ADDITIONAL_FASTA={gunzip=1.1}, GUNZIP_GTF={gunzip=1.1}, PICARD_MARKDUPLICATES={picard=3.1.1}, SALMON_QUANT={salmon=1.10.1}, SAMTOOLS_FLAGSTAT={samtools=1.2}, SAMTOOLS_IDXSTATS={samtools=1.2}, SAMTOOLS_INDEX={samtools=1.2}, SAMTOOLS_SORT={samtools=1.2}, SAMTOOLS_STATS={samtools=1.2}, SE_GENE={bioconductor-summarizedexperiment=1.32.0}, STAR_ALIGN={star=2.7.10a, samtools=1.18, gawk=5.1.0}, STAR_GENOMEGENERATE={star=2.7.10a, samtools=1.18, gawk=5.1.0}, STRINGTIE_STRINGTIE={stringtie=2.2.1}, TRIMGALORE={trimgalore=0.6.7, cutadapt=3.4}, TXIMETA_TXIMPORT={bioconductor-tximeta=1.20.1}, UCSC_BEDCLIP={ucsc=377}, UCSC_BEDGRAPHTOBIGWIG={ucsc=445}, UNTAR_SALMON_INDEX={untar=1.34}, Workflow={nf-core/rnaseq=v3.15.0dev}}" + "{BBMAP_BBSPLIT={bbmap=39.01}, BEDTOOLS_GENOMECOV_FW={bedtools=2.31.1}, CAT_FASTQ={cat=8.3}, CUSTOM_CATADDITIONALFASTA={python=3.9.5}, CUSTOM_GETCHROMSIZES={getchromsizes=1.2}, CUSTOM_TX2GENE={python=3.9.5}, FQ_SUBSAMPLE={fq=0.9.1 (2022-02-22)}, GTF2BED={perl=5.26.2}, GTF_FILTER={python=3.9.5}, GUNZIP_ADDITIONAL_FASTA={gunzip=1.1}, GUNZIP_GTF={gunzip=1.1}, PICARD_MARKDUPLICATES={picard=3.1.1}, SALMON_QUANT={salmon=1.10.1}, SAMTOOLS_FLAGSTAT={samtools=1.2}, SAMTOOLS_IDXSTATS={samtools=1.2}, SAMTOOLS_INDEX={samtools=1.2}, SAMTOOLS_SORT={samtools=1.2}, SAMTOOLS_STATS={samtools=1.2}, SE_GENE={bioconductor-summarizedexperiment=1.32.0}, STAR_ALIGN={star=2.7.10a, samtools=1.18, gawk=5.1.0}, STAR_GENOMEGENERATE={star=2.7.10a, samtools=1.18, gawk=5.1.0}, STRINGTIE_STRINGTIE={stringtie=2.2.1}, TRIMGALORE={trimgalore=0.6.7, cutadapt=3.4}, TXIMETA_TXIMPORT={bioconductor-tximeta=1.20.1}, UCSC_BEDCLIP={ucsc=377}, UCSC_BEDGRAPHTOBIGWIG={ucsc=445}, UNTAR_SALMON_INDEX={untar=1.34}, Workflow={nf-core/rnaseq=v3.15.0}}" ], "meta": { "nf-test": "0.9.0", diff --git a/tests/skip_trimming.nf.test.snap b/tests/skip_trimming.nf.test.snap index f71775121..da3e572cc 100644 --- a/tests/skip_trimming.nf.test.snap +++ b/tests/skip_trimming.nf.test.snap @@ -751,7 +751,7 @@ }, "versions": { "content": [ - "{BBMAP_BBSPLIT={bbmap=39.01}, BEDTOOLS_GENOMECOV_FW={bedtools=2.31.1}, CAT_FASTQ={cat=8.3}, CUSTOM_CATADDITIONALFASTA={python=3.9.5}, CUSTOM_GETCHROMSIZES={getchromsizes=1.2}, CUSTOM_TX2GENE={python=3.9.5}, DESEQ2_QC_PSEUDO={r-base=4.0.3, bioconductor-deseq2=1.28.0}, DESEQ2_QC_STAR_SALMON={r-base=4.0.3, bioconductor-deseq2=1.28.0}, DUPRADAR={bioconductor-dupradar=1.32.0}, FASTQC={fastqc=0.12.1}, FQ_SUBSAMPLE={fq=0.9.1 (2022-02-22)}, GTF2BED={perl=5.26.2}, GTF_FILTER={python=3.9.5}, GUNZIP_ADDITIONAL_FASTA={gunzip=1.1}, GUNZIP_GTF={gunzip=1.1}, MULTIQC_CUSTOM_BIOTYPE={python=3.9.5}, PICARD_MARKDUPLICATES={picard=3.1.1}, QUALIMAP_RNASEQ={qualimap=2.3}, RSEQC_BAMSTAT={rseqc=5.0.2}, RSEQC_INFEREXPERIMENT={rseqc=5.0.2}, RSEQC_INNERDISTANCE={rseqc=5.0.2}, RSEQC_JUNCTIONANNOTATION={rseqc=5.0.2}, RSEQC_JUNCTIONSATURATION={rseqc=5.0.2}, RSEQC_READDISTRIBUTION={rseqc=5.0.2}, RSEQC_READDUPLICATION={rseqc=5.0.2}, SALMON_QUANT={salmon=1.10.1}, SAMTOOLS_FLAGSTAT={samtools=1.2}, SAMTOOLS_IDXSTATS={samtools=1.2}, SAMTOOLS_INDEX={samtools=1.2}, SAMTOOLS_SORT={samtools=1.2}, SAMTOOLS_STATS={samtools=1.2}, SE_GENE={bioconductor-summarizedexperiment=1.32.0}, STAR_ALIGN={star=2.7.10a, samtools=1.18, gawk=5.1.0}, STAR_GENOMEGENERATE={star=2.7.10a, samtools=1.18, gawk=5.1.0}, STRINGTIE_STRINGTIE={stringtie=2.2.1}, SUBREAD_FEATURECOUNTS={subread=2.0.1}, TXIMETA_TXIMPORT={bioconductor-tximeta=1.20.1}, UCSC_BEDCLIP={ucsc=377}, UCSC_BEDGRAPHTOBIGWIG={ucsc=445}, UNTAR_SALMON_INDEX={untar=1.34}, Workflow={nf-core/rnaseq=v3.15.0dev}}" + "{BBMAP_BBSPLIT={bbmap=39.01}, BEDTOOLS_GENOMECOV_FW={bedtools=2.31.1}, CAT_FASTQ={cat=8.3}, CUSTOM_CATADDITIONALFASTA={python=3.9.5}, CUSTOM_GETCHROMSIZES={getchromsizes=1.2}, CUSTOM_TX2GENE={python=3.9.5}, DESEQ2_QC_PSEUDO={r-base=4.0.3, bioconductor-deseq2=1.28.0}, DESEQ2_QC_STAR_SALMON={r-base=4.0.3, bioconductor-deseq2=1.28.0}, DUPRADAR={bioconductor-dupradar=1.32.0}, FASTQC={fastqc=0.12.1}, FQ_SUBSAMPLE={fq=0.9.1 (2022-02-22)}, GTF2BED={perl=5.26.2}, GTF_FILTER={python=3.9.5}, GUNZIP_ADDITIONAL_FASTA={gunzip=1.1}, GUNZIP_GTF={gunzip=1.1}, MULTIQC_CUSTOM_BIOTYPE={python=3.9.5}, PICARD_MARKDUPLICATES={picard=3.1.1}, QUALIMAP_RNASEQ={qualimap=2.3}, RSEQC_BAMSTAT={rseqc=5.0.2}, RSEQC_INFEREXPERIMENT={rseqc=5.0.2}, RSEQC_INNERDISTANCE={rseqc=5.0.2}, RSEQC_JUNCTIONANNOTATION={rseqc=5.0.2}, RSEQC_JUNCTIONSATURATION={rseqc=5.0.2}, RSEQC_READDISTRIBUTION={rseqc=5.0.2}, RSEQC_READDUPLICATION={rseqc=5.0.2}, SALMON_QUANT={salmon=1.10.1}, SAMTOOLS_FLAGSTAT={samtools=1.2}, SAMTOOLS_IDXSTATS={samtools=1.2}, SAMTOOLS_INDEX={samtools=1.2}, SAMTOOLS_SORT={samtools=1.2}, SAMTOOLS_STATS={samtools=1.2}, SE_GENE={bioconductor-summarizedexperiment=1.32.0}, STAR_ALIGN={star=2.7.10a, samtools=1.18, gawk=5.1.0}, STAR_GENOMEGENERATE={star=2.7.10a, samtools=1.18, gawk=5.1.0}, STRINGTIE_STRINGTIE={stringtie=2.2.1}, SUBREAD_FEATURECOUNTS={subread=2.0.1}, TXIMETA_TXIMPORT={bioconductor-tximeta=1.20.1}, UCSC_BEDCLIP={ucsc=377}, UCSC_BEDGRAPHTOBIGWIG={ucsc=445}, UNTAR_SALMON_INDEX={untar=1.34}, Workflow={nf-core/rnaseq=v3.15.0}}" ], "meta": { "nf-test": "0.9.0", diff --git a/tests/star_rsem.nf.test.snap b/tests/star_rsem.nf.test.snap index 4d66a38db..945d18f11 100644 --- a/tests/star_rsem.nf.test.snap +++ b/tests/star_rsem.nf.test.snap @@ -766,7 +766,7 @@ }, "Params: --aligner star_rsem - stub": { "content": [ - "{BBMAP_BBSPLIT={bbmap=39.01}, CAT_FASTQ={cat=8.3}, CUSTOM_CATADDITIONALFASTA={python=null}, CUSTOM_GETCHROMSIZES={getchromsizes=1.2}, FASTQC={fastqc=0.12.1}, GTF2BED={perl=5.26.2}, GTF_FILTER={python=3.9.5}, GUNZIP_ADDITIONAL_FASTA={gunzip=1.1}, GUNZIP_GTF={gunzip=1.1}, TRIMGALORE={trimgalore=0.6.7, cutadapt=3.4}, UNTAR_RSEM_INDEX={untar=1.34}, UNTAR_SALMON_INDEX={untar=1.34}, Workflow={nf-core/rnaseq=v3.15.0dev}}", + "{BBMAP_BBSPLIT={bbmap=39.01}, CAT_FASTQ={cat=8.3}, CUSTOM_CATADDITIONALFASTA={python=null}, CUSTOM_GETCHROMSIZES={getchromsizes=1.2}, FASTQC={fastqc=0.12.1}, GTF2BED={perl=5.26.2}, GTF_FILTER={python=3.9.5}, GUNZIP_ADDITIONAL_FASTA={gunzip=1.1}, GUNZIP_GTF={gunzip=1.1}, TRIMGALORE={trimgalore=0.6.7, cutadapt=3.4}, UNTAR_RSEM_INDEX={untar=1.34}, UNTAR_SALMON_INDEX={untar=1.34}, Workflow={nf-core/rnaseq=v3.15.0}}", "genome_transcriptome.fasta", "genome_transcriptome.gtf", "RAP1_IAA_30M_REP1_raw.html", @@ -797,7 +797,7 @@ }, "versions": { "content": [ - "{BBMAP_BBSPLIT={bbmap=39.01}, BEDTOOLS_GENOMECOV_FW={bedtools=2.31.1}, CAT_FASTQ={cat=8.3}, CUSTOM_CATADDITIONALFASTA={python=3.9.5}, CUSTOM_GETCHROMSIZES={getchromsizes=1.2}, CUSTOM_TX2GENE={python=3.9.5}, DESEQ2_QC_PSEUDO={r-base=4.0.3, bioconductor-deseq2=1.28.0}, DESEQ2_QC_RSEM={r-base=4.0.3, bioconductor-deseq2=1.28.0}, DUPRADAR={bioconductor-dupradar=1.32.0}, FASTQC={fastqc=0.12.1}, FQ_SUBSAMPLE={fq=0.9.1 (2022-02-22)}, GTF2BED={perl=5.26.2}, GTF_FILTER={python=3.9.5}, GUNZIP_ADDITIONAL_FASTA={gunzip=1.1}, GUNZIP_GTF={gunzip=1.1}, MULTIQC_CUSTOM_BIOTYPE={python=3.9.5}, PICARD_MARKDUPLICATES={picard=3.1.1}, QUALIMAP_RNASEQ={qualimap=2.3}, RSEM_CALCULATEEXPRESSION={rsem=1.3.1, star=2.7.10a}, RSEM_MERGE_COUNTS={sed=4.7}, RSEQC_BAMSTAT={rseqc=5.0.2}, RSEQC_INFEREXPERIMENT={rseqc=5.0.2}, RSEQC_INNERDISTANCE={rseqc=5.0.2}, RSEQC_JUNCTIONANNOTATION={rseqc=5.0.2}, RSEQC_JUNCTIONSATURATION={rseqc=5.0.2}, RSEQC_READDISTRIBUTION={rseqc=5.0.2}, RSEQC_READDUPLICATION={rseqc=5.0.2}, SALMON_QUANT={salmon=1.10.1}, SAMTOOLS_FLAGSTAT={samtools=1.2}, SAMTOOLS_IDXSTATS={samtools=1.2}, SAMTOOLS_INDEX={samtools=1.2}, SAMTOOLS_SORT={samtools=1.2}, SAMTOOLS_STATS={samtools=1.2}, SE_GENE={bioconductor-summarizedexperiment=1.32.0}, STRINGTIE_STRINGTIE={stringtie=2.2.1}, SUBREAD_FEATURECOUNTS={subread=2.0.1}, TRIMGALORE={trimgalore=0.6.7, cutadapt=3.4}, TXIMETA_TXIMPORT={bioconductor-tximeta=1.20.1}, UCSC_BEDCLIP={ucsc=377}, UCSC_BEDGRAPHTOBIGWIG={ucsc=445}, UNTAR_RSEM_INDEX={untar=1.34}, UNTAR_SALMON_INDEX={untar=1.34}, Workflow={nf-core/rnaseq=v3.15.0dev}}" + "{BBMAP_BBSPLIT={bbmap=39.01}, BEDTOOLS_GENOMECOV_FW={bedtools=2.31.1}, CAT_FASTQ={cat=8.3}, CUSTOM_CATADDITIONALFASTA={python=3.9.5}, CUSTOM_GETCHROMSIZES={getchromsizes=1.2}, CUSTOM_TX2GENE={python=3.9.5}, DESEQ2_QC_PSEUDO={r-base=4.0.3, bioconductor-deseq2=1.28.0}, DESEQ2_QC_RSEM={r-base=4.0.3, bioconductor-deseq2=1.28.0}, DUPRADAR={bioconductor-dupradar=1.32.0}, FASTQC={fastqc=0.12.1}, FQ_SUBSAMPLE={fq=0.9.1 (2022-02-22)}, GTF2BED={perl=5.26.2}, GTF_FILTER={python=3.9.5}, GUNZIP_ADDITIONAL_FASTA={gunzip=1.1}, GUNZIP_GTF={gunzip=1.1}, MULTIQC_CUSTOM_BIOTYPE={python=3.9.5}, PICARD_MARKDUPLICATES={picard=3.1.1}, QUALIMAP_RNASEQ={qualimap=2.3}, RSEM_CALCULATEEXPRESSION={rsem=1.3.1, star=2.7.10a}, RSEM_MERGE_COUNTS={sed=4.7}, RSEQC_BAMSTAT={rseqc=5.0.2}, RSEQC_INFEREXPERIMENT={rseqc=5.0.2}, RSEQC_INNERDISTANCE={rseqc=5.0.2}, RSEQC_JUNCTIONANNOTATION={rseqc=5.0.2}, RSEQC_JUNCTIONSATURATION={rseqc=5.0.2}, RSEQC_READDISTRIBUTION={rseqc=5.0.2}, RSEQC_READDUPLICATION={rseqc=5.0.2}, SALMON_QUANT={salmon=1.10.1}, SAMTOOLS_FLAGSTAT={samtools=1.2}, SAMTOOLS_IDXSTATS={samtools=1.2}, SAMTOOLS_INDEX={samtools=1.2}, SAMTOOLS_SORT={samtools=1.2}, SAMTOOLS_STATS={samtools=1.2}, SE_GENE={bioconductor-summarizedexperiment=1.32.0}, STRINGTIE_STRINGTIE={stringtie=2.2.1}, SUBREAD_FEATURECOUNTS={subread=2.0.1}, TRIMGALORE={trimgalore=0.6.7, cutadapt=3.4}, TXIMETA_TXIMPORT={bioconductor-tximeta=1.20.1}, UCSC_BEDCLIP={ucsc=377}, UCSC_BEDGRAPHTOBIGWIG={ucsc=445}, UNTAR_RSEM_INDEX={untar=1.34}, UNTAR_SALMON_INDEX={untar=1.34}, Workflow={nf-core/rnaseq=v3.15.0}}" ], "meta": { "nf-test": "0.9.0", From 9fc9a3515cd735cac228a44b9e80b9d563d17a5a Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Wed, 4 Sep 2024 09:59:50 +0100 Subject: [PATCH 630/634] Apply Maxime's suggestions to changelog --- CHANGELOG.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2494ba6db..b9f69044a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -25,6 +25,7 @@ Thank you to everyone else that has contributed by reporting bugs, enhancements ### Enhancements & fixes +- [PR #1180](https://github.com/nf-core/rnaseq/pull/1180) - Bump pipeline version to 3.15.0dev - [PR #1186](https://github.com/nf-core/rnaseq/pull/1186) - Properly update qualimap/rnaseq module (ie not patch) - [PR #1197](https://github.com/nf-core/rnaseq/pull/1197) - Delete lib directory and replace with utils\_\* subworkflows - [PR #1199](https://github.com/nf-core/rnaseq/pull/1199) - Replace modules.config with more modular config files per module/subworkflow/workflow @@ -75,7 +76,7 @@ Thank you to everyone else that has contributed by reporting bugs, enhancements - [PR #1272](https://github.com/nf-core/rnaseq/pull/1272) - Simple pipeline level nf-tests - [PR #1274](https://github.com/nf-core/rnaseq/pull/1274) - Update bam_markduplicates_picard subworkflow - [PR #1278](https://github.com/nf-core/rnaseq/pull/1278) - Delocalise pseudo quant workflow -- [PR #1279](https://github.com/nf-core/rnaseq/pull/1279) - Add psueudoaligner pipeline level tests to test suite +- [PR #1279](https://github.com/nf-core/rnaseq/pull/1279) - Add pseudoaligner pipeline level tests to test suite - [PR #1280](https://github.com/nf-core/rnaseq/pull/1280) - Reorganise pipeline level tests into flat directory structure - [PR #1282](https://github.com/nf-core/rnaseq/pull/1282) - Fix CHANGELOG error - [PR #1283](https://github.com/nf-core/rnaseq/pull/1283) - Add output files to nf-test snapshot @@ -104,14 +105,14 @@ Thank you to everyone else that has contributed by reporting bugs, enhancements - [PR #1331](https://github.com/nf-core/rnaseq/pull/1331) - Adding stubs for local modules - [PR #1334](https://github.com/nf-core/rnaseq/pull/1334) - Update all nf-core/modules and subworkflows with stubs - [PR #1335](https://github.com/nf-core/rnaseq/pull/1335) - Adding stubs at all levels -- [PR #1336](https://github.com/nf-core/rnaseq/pull/1334) - Use nf-core/setup-nf-test to install nf-test from cache during CI/CD +- [PR #1336](https://github.com/nf-core/rnaseq/pull/1336) - Use nf-core/setup-nf-test to install nf-test from cache during CI/CD - [PR #1340](https://github.com/nf-core/rnaseq/pull/1340) - Remove out-of-date Azure specific guidance - [PR #1341](https://github.com/nf-core/rnaseq/pull/1341) - Add rename in the MultiQC report for samples without techreps - [PR #1342](https://github.com/nf-core/rnaseq/pull/1342) - Factor out preprocessing - [PR #1345](https://github.com/nf-core/rnaseq/pull/1345) - Fix preprocessing call - [PR #1350](https://github.com/nf-core/rnaseq/pull/1350) - Reduce resource usage for sort process in bedtools/genomecov -- [PR #1353](https://github.com/nf-core/rnaseq/pull/1353) - Correct conditional for salmon indexing in preprocessing workflow - [PR #1352](https://github.com/nf-core/rnaseq/pull/1352) - Assorted fixes to MultiQC usage +- [PR #1353](https://github.com/nf-core/rnaseq/pull/1353) - Correct conditional for salmon indexing in preprocessing workflow - [PR #1355](https://github.com/nf-core/rnaseq/pull/1355) - Make all curves on subway map better looking, and all lines now have the same width - [PR #1357](https://github.com/nf-core/rnaseq/pull/1357) - Fix anchor issue in multiqc - [PR #1358](https://github.com/nf-core/rnaseq/pull/1358) - Update test profiles to restore a static URI for megatests From 90a1e838cc98fd7558f18cb2dd106e9589d1660d Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Wed, 4 Sep 2024 10:03:12 +0100 Subject: [PATCH 631/634] Add new PRs to changelog --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index b9f69044a..c5505b5cc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -124,6 +124,8 @@ Thank you to everyone else that has contributed by reporting bugs, enhancements - [PR #1363](https://github.com/nf-core/rnaseq/pull/1363) - Update dupradar script - [PR #1366](https://github.com/nf-core/rnaseq/pull/1366) - Clarify docs on different tximport count files - [PR #1367](https://github.com/nf-core/rnaseq/pull/1367) - Clarify design formula and blind dispersion estimation +- [PR #1370](https://github.com/nf-core/rnaseq/pull/1370) - Bump versions for 3.15.0 +- [PR #1371](https://github.com/nf-core/rnaseq/pull/1371) - Apply Maxime's changelog edits ### Parameters From 2b32127a1d9641d22b69e63fbe92045c4f6b5b36 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Wed, 4 Sep 2024 10:06:56 +0100 Subject: [PATCH 632/634] Bump CI --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c5505b5cc..23eb1fe16 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -125,7 +125,7 @@ Thank you to everyone else that has contributed by reporting bugs, enhancements - [PR #1366](https://github.com/nf-core/rnaseq/pull/1366) - Clarify docs on different tximport count files - [PR #1367](https://github.com/nf-core/rnaseq/pull/1367) - Clarify design formula and blind dispersion estimation - [PR #1370](https://github.com/nf-core/rnaseq/pull/1370) - Bump versions for 3.15.0 -- [PR #1371](https://github.com/nf-core/rnaseq/pull/1371) - Apply Maxime's changelog edits +- [PR #1371](https://github.com/nf-core/rnaseq/pull/1371) - Apply Maxime's CHANGELOG edits ### Parameters From 11f0c738d582870a18ba47c7cab3e5eaae140d5c Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Wed, 4 Sep 2024 11:09:15 +0100 Subject: [PATCH 633/634] Bump tximeta/tximport for gene table rownames fix --- modules.json | 2 +- modules/nf-core/tximeta/tximport/templates/tximport.r | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/modules.json b/modules.json index c5561e558..6e266bc86 100644 --- a/modules.json +++ b/modules.json @@ -237,7 +237,7 @@ }, "tximeta/tximport": { "branch": "master", - "git_sha": "af778cca88b2a983152bdf2d80634e52dd1ef80f", + "git_sha": "d612c281cf2fae62cdd79c70a22fc6349108570c", "installed_by": ["modules", "quantify_pseudo_alignment"] }, "ucsc/bedclip": { diff --git a/modules/nf-core/tximeta/tximport/templates/tximport.r b/modules/nf-core/tximeta/tximport/templates/tximport.r index 510cfac59..e8235c8b0 100755 --- a/modules/nf-core/tximeta/tximport/templates/tximport.r +++ b/modules/nf-core/tximeta/tximport/templates/tximport.r @@ -153,7 +153,7 @@ if ("tx2gene" %in% names(transcript_info) && !is.null(transcript_info\$tx2gene)) gi.s <- summarizeToGene(txi, tx2gene = tx2gene, countsFromAbundance = "scaledTPM") gene_info <- transcript_info\$gene[match(rownames(gi[[1]]), transcript_info\$gene[["gene_id"]]),] - + rownames(gene_info) <- NULL col_data_frame <- DataFrame(coldata) # Create gene-level SummarizedExperiment objects From 59988f8ba3a555303632c95a0e78192d2faa9e1a Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Wed, 4 Sep 2024 11:11:45 +0100 Subject: [PATCH 634/634] Update changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 23eb1fe16..2c3d147f3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -126,6 +126,7 @@ Thank you to everyone else that has contributed by reporting bugs, enhancements - [PR #1367](https://github.com/nf-core/rnaseq/pull/1367) - Clarify design formula and blind dispersion estimation - [PR #1370](https://github.com/nf-core/rnaseq/pull/1370) - Bump versions for 3.15.0 - [PR #1371](https://github.com/nf-core/rnaseq/pull/1371) - Apply Maxime's CHANGELOG edits +- [PR #1372](https://github.com/nf-core/rnaseq/pull/1372) - Bump tximeta/tximport for gene table row names fix ### Parameters

    2@o893y$qEB#p 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 diff --git a/docs/images/nf-core-rnaseq_metro_map_grey.svg b/docs/images/nf-core-rnaseq_metro_map_grey.svg index 46be07297..f383d6895 100644 --- a/docs/images/nf-core-rnaseq_metro_map_grey.svg +++ b/docs/images/nf-core-rnaseq_metro_map_grey.svg @@ -10,8 +10,8 @@ inkscape:version="1.3.2 (1:1.3.2+202311252150+091e20ef0f)" sodipodi:docname="nf-core-rnaseq_metro_map_grey.svg" inkscape:export-filename="nf-core-rnaseq_metro_map_grey.png" - inkscape:export-xdpi="89" - inkscape:export-ydpi="89" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90" xml:space="preserve" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" @@ -648,16 +648,2143 @@ id="clipPath1278">23SalmonKallistoMultiQCGTFFASTA1catfastqTSV5RSeQC(multiple modules)PreseqdupRadarDESeq2(PCA only)MultiQCQualimaprnaseqSTARSalmonHISAT2RSEM4SAMtools(sort, index, stats)BEDtoolsgenomecovbedGraphToBigWigUMI-toolsdedupStringTiepicardMarkDuplicatesTSVBAMBAIBIGWIGHTMLHTMLPseudo-aligner: Salmon, Quantification: SalmonAligner: HISAT2, Quantification: NoneAligner: STAR, Quantification: Salmon (default)Pseudo-aligner: Kallisto, Quantification: KallistoAligner: STAR, Quantification: RSEMMETHODSTAGE2. Genome alignment & quantification3. Pseudo-alignment & quantification5. Final QC1. Pre-processing4. Post-processingLicense:

    Process Name \\", - " \\ Software Version
    CUSTOM_DUMPSOFTWAREVERSIONSpython3.11.7
    yaml5.4.1
    TOOL1tool10.11.9
    TOOL2tool21.9
    WorkflowNextflow
    File typeConventional base calls
    File typeConventional base calls
    File typeConventional base calls
    File typeConventional base calls
    File typeConventional base calls
    File typeConventional base calls
    File typeConventional base calls
    File typeConventional base calls
    File typeConventional base calls
    25.719000 K (93.033098%)", "paired end (151 cycles + 151 cycles)"] def log_text = [ "Q20 bases: 12922(92.9841%)", - "reads passed filter: 198"] + "reads passed filter: 162"] def read_lines = [ "@ERR5069949.2151832 NS500628:121:HK3MMAFX2:2:21208:10793:15304/1", "TCATAAACCAAAGCACTCACAGTGTCAACAATTTCAGCAGGACAACGCCGACAAGTTCCGAGGAACATGTCTGGACCTATAGTTTTCATAAGTCTACACACTGAATTGAAATATTCTGGTTCTAGTGTGCCCTTAGTTAGCAATGTGCGT", "AAAAAAEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEAAEEEEAEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEAAEEEEE - { assert path(process.out.reads_fail.get(0).get(1).get(1)).linesGzip.contains(failed_read2_line) } + { assert path(process.out.reads_fail.get(0).get(1).get(2)).linesGzip.contains(failed_read2_line) } } }, { html_text.each { html_part -> diff --git a/modules/nf-core/fastp/tests/main.nf.test.snap b/modules/nf-core/fastp/tests/main.nf.test.snap index b4c0e1dd8..3e8762889 100644 --- a/modules/nf-core/fastp/tests/main.nf.test.snap +++ b/modules/nf-core/fastp/tests/main.nf.test.snap @@ -7,7 +7,7 @@ "id": "test", "single_end": true }, - "test.fastp.json:md5,168f516f7bd4b7b6c32da7cba87299a4" + "test.fastp.json:md5,b24e0624df5cc0b11cd5ba21b726fb22" ] ] ], @@ -15,7 +15,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-01-17T18:08:06.123035" + "timestamp": "2024-03-18T16:19:15.063001" }, "test_fastp_paired_end_merged-for_stub_match": { "content": [ @@ -65,7 +65,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-01-17T18:06:00.223817" + "timestamp": "2024-03-18T16:18:43.526412" }, "versions_paired_end": { "content": [ @@ -112,7 +112,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-02-01T12:03:37.827323085" + "timestamp": "2024-03-18T16:19:15.111894" }, "test_fastp_paired_end_merged_match": { "content": [ @@ -283,7 +283,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-02-01T11:57:30.791982648" + "timestamp": "2024-03-18T16:18:43.580336" }, "versions_paired_end_merged_adapterlist": { "content": [ diff --git a/modules/nf-core/fastp/tests/nextflow.interleaved.config b/modules/nf-core/fastp/tests/nextflow.interleaved.config new file mode 100644 index 000000000..4be8dbd2c --- /dev/null +++ b/modules/nf-core/fastp/tests/nextflow.interleaved.config @@ -0,0 +1,5 @@ +process { + withName: FASTP { + ext.args = "--interleaved_in -e 30" + } +} diff --git a/modules/nf-core/fastp/tests/nextflow.config b/modules/nf-core/fastp/tests/nextflow.save_failed.config similarity index 50% rename from modules/nf-core/fastp/tests/nextflow.config rename to modules/nf-core/fastp/tests/nextflow.save_failed.config index 0f7849ad9..53b61b0c1 100644 --- a/modules/nf-core/fastp/tests/nextflow.config +++ b/modules/nf-core/fastp/tests/nextflow.save_failed.config @@ -1,6 +1,5 @@ process { - withName: FASTP { - ext.args = "--interleaved_in" + ext.args = "-e 30" } } diff --git a/modules/nf-core/fastp/tests/tags.yml b/modules/nf-core/fastp/tests/tags.yml new file mode 100644 index 000000000..c1afcce75 --- /dev/null +++ b/modules/nf-core/fastp/tests/tags.yml @@ -0,0 +1,2 @@ +fastp: + - modules/nf-core/fastp/** diff --git a/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/main.nf.test b/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/main.nf.test index 7dc05d923..857474153 100644 --- a/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/main.nf.test +++ b/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/main.nf.test @@ -3,10 +3,16 @@ nextflow_workflow { name "Test Workflow FASTQ_FASTQC_UMITOOLS_FASTP" script "../main.nf" workflow "FASTQ_FASTQC_UMITOOLS_FASTP" + config './nextflow.config' + + tag "subworkflows" + tag "subworkflows_nfcore" + tag "subworkflows/fastq_fastqc_umitools_fastp" + tag "fastq_fastqc_umitools_fastp" + tag "fastqc" + tag "umitools/extract" + tag "fastp" - tag "FASTQC" - tag "UMITOOLS_EXTRACT" - tag "FASTP" test("sarscov2 paired-end [fastq]") { @@ -25,8 +31,10 @@ nextflow_workflow { 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/test_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true) + ] ]) input[1] = skip_fastqc input[2] = with_umi @@ -44,17 +52,503 @@ nextflow_workflow { then { assertAll( { assert workflow.success }, - { assert snapshot(workflow.out.reads).match("reads") }, - { assert snapshot(workflow.out.umi_log).match("umi_log") }, - { assert snapshot(workflow.out.trim_json).match("trim_json") }, - { assert snapshot(workflow.out.trim_reads_fail).match("trim_reads_fail") }, - { assert snapshot(workflow.out.trim_reads_merged).match("trim_reads_merged") }, - { assert snapshot(workflow.out.adapter_seq).match("adapter_seq") }, - { assert snapshot(workflow.out.trim_read_count).match("trim_read_count") }, - { assert snapshot(workflow.out.versions).match("versions") }, - - { assert workflow.out.fastqc_raw_html }, - { assert workflow.out.fastqc_raw_zip }, + { assert snapshot( + workflow.out.reads, + workflow.out.umi_log, + workflow.out.trim_json, + workflow.out.trim_reads_fail, + workflow.out.trim_reads_merged, + workflow.out.adapter_seq, + workflow.out.trim_read_count, + workflow.out.versions + ).match() + }, + + { assert workflow.out.fastqc_raw_html}, + { assert workflow.out.fastqc_raw_zip}, + { assert workflow.out.trim_html }, + { assert workflow.out.trim_log }, + { assert workflow.out.fastqc_trim_html }, + { assert workflow.out.fastqc_trim_zip } + ) + } + } + + test("skip_fastqc") { + + when { + workflow { + """ + skip_fastqc = true + with_umi = false + skip_umi_extract = false + umi_discard_read = 1 + skip_trimming = false + adapter_fasta = [] + save_trimmed_fail = false + save_merged = false + min_trimmed_reads = 1 + + 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) + ] + ]) + input[1] = skip_fastqc + input[2] = with_umi + input[3] = skip_umi_extract + input[4] = umi_discard_read + input[5] = skip_trimming + input[6] = adapter_fasta + input[7] = save_trimmed_fail + input[8] = save_merged + input[9] = min_trimmed_reads + """ + } + } + + then { + assertAll( + { assert workflow.success }, + { assert snapshot( + workflow.out.reads, + workflow.out.umi_log, + workflow.out.trim_json, + workflow.out.trim_reads_fail, + workflow.out.trim_reads_merged, + workflow.out.adapter_seq, + workflow.out.trim_read_count, + workflow.out.versions + ).match() + }, + + { assert !workflow.out.fastqc_raw_html}, + { assert !workflow.out.fastqc_raw_zip}, + { assert workflow.out.trim_html }, + { assert workflow.out.trim_log }, + { assert !workflow.out.fastqc_trim_html }, + { assert !workflow.out.fastqc_trim_zip } + ) + } + } + + test("with_umi") { + + when { + workflow { + """ + skip_fastqc = false + with_umi = true + skip_umi_extract = false + umi_discard_read = 1 + skip_trimming = false + adapter_fasta = [] + save_trimmed_fail = false + save_merged = false + min_trimmed_reads = 1 + + 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) + ] + ]) + input[1] = skip_fastqc + input[2] = with_umi + input[3] = skip_umi_extract + input[4] = umi_discard_read + input[5] = skip_trimming + input[6] = adapter_fasta + input[7] = save_trimmed_fail + input[8] = save_merged + input[9] = min_trimmed_reads + """ + } + } + + then { + assertAll( + { assert workflow.success }, + { assert snapshot( + workflow.out.reads, + workflow.out.trim_json, + workflow.out.trim_reads_fail, + workflow.out.trim_reads_merged, + workflow.out.adapter_seq, + workflow.out.trim_read_count, + workflow.out.versions + ).match() + }, + + { assert workflow.out.fastqc_raw_html}, + { assert workflow.out.fastqc_raw_zip}, + { assert workflow.out.trim_html }, + { assert workflow.out.trim_log }, + { assert workflow.out.fastqc_trim_html }, + { assert workflow.out.fastqc_trim_zip } + ) + } + } + + + test("skip_umi_extract") { + + when { + workflow { + """ + skip_fastqc = false + with_umi = true + skip_umi_extract = true + umi_discard_read = 1 + skip_trimming = false + adapter_fasta = [] + save_trimmed_fail = false + save_merged = false + min_trimmed_reads = 1 + + 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) + ] + ]) + input[1] = skip_fastqc + input[2] = with_umi + input[3] = skip_umi_extract + input[4] = umi_discard_read + input[5] = skip_trimming + input[6] = adapter_fasta + input[7] = save_trimmed_fail + input[8] = save_merged + input[9] = min_trimmed_reads + """ + } + } + + then { + assertAll( + { assert workflow.success }, + { assert snapshot( + workflow.out.reads, + workflow.out.umi_log, + workflow.out.trim_json, + workflow.out.trim_reads_fail, + workflow.out.trim_reads_merged, + workflow.out.adapter_seq, + workflow.out.trim_read_count, + workflow.out.versions + ).match() + }, + + { assert workflow.out.fastqc_raw_html}, + { assert workflow.out.fastqc_raw_zip}, + { assert workflow.out.trim_html }, + { assert workflow.out.trim_log }, + { assert workflow.out.fastqc_trim_html }, + { assert workflow.out.fastqc_trim_zip } + ) + } + } + + test("umi_discard_read = 2") { + + when { + workflow { + """ + skip_fastqc = false + with_umi = true + skip_umi_extract = true + umi_discard_read = 2 + skip_trimming = false + adapter_fasta = [] + save_trimmed_fail = false + save_merged = false + min_trimmed_reads = 1 + + 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) + ] + ]) + input[1] = skip_fastqc + input[2] = with_umi + input[3] = skip_umi_extract + input[4] = umi_discard_read + input[5] = skip_trimming + input[6] = adapter_fasta + input[7] = save_trimmed_fail + input[8] = save_merged + input[9] = min_trimmed_reads + """ + } + } + + then { + assertAll( + { assert workflow.success }, + { assert snapshot( + workflow.out.reads, + workflow.out.umi_log, + workflow.out.trim_json, + workflow.out.trim_reads_fail, + workflow.out.trim_reads_merged, + workflow.out.adapter_seq, + workflow.out.trim_read_count, + workflow.out.versions + ).match() + }, + + { assert workflow.out.fastqc_raw_html}, + { assert workflow.out.fastqc_raw_zip}, + { assert workflow.out.trim_html }, + { assert workflow.out.trim_log }, + { assert workflow.out.fastqc_trim_html }, + { assert workflow.out.fastqc_trim_zip } + ) + } + } + + test("skip_trimming") { + + when { + workflow { + """ + skip_fastqc = false + with_umi = false + skip_umi_extract = false + umi_discard_read = 1 + skip_trimming = true + adapter_fasta = [] + save_trimmed_fail = false + save_merged = false + min_trimmed_reads = 1 + + 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) + ] + ]) + input[1] = skip_fastqc + input[2] = with_umi + input[3] = skip_umi_extract + input[4] = umi_discard_read + input[5] = skip_trimming + input[6] = adapter_fasta + input[7] = save_trimmed_fail + input[8] = save_merged + input[9] = min_trimmed_reads + """ + } + } + + then { + assertAll( + { assert workflow.success }, + { assert snapshot( + workflow.out.reads, + workflow.out.umi_log, + workflow.out.trim_json, + workflow.out.trim_reads_fail, + workflow.out.trim_reads_merged, + workflow.out.adapter_seq, + workflow.out.trim_read_count, + workflow.out.versions + ).match() + }, + + { assert workflow.out.fastqc_raw_html}, + { assert workflow.out.fastqc_raw_zip}, + { assert !workflow.out.trim_html }, + { assert !workflow.out.trim_log }, + { assert !workflow.out.fastqc_trim_html }, + { assert !workflow.out.fastqc_trim_zip } + ) + } + } + + test("save_trimmed_fail") { + + config './nextflow.save_trimmed.config' + + when { + workflow { + """ + skip_fastqc = false + with_umi = false + skip_umi_extract = false + umi_discard_read = 1 + skip_trimming = false + adapter_fasta = [] + save_trimmed_fail = true + save_merged = false + min_trimmed_reads = 1 + + 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) + ] + ]) + input[1] = skip_fastqc + input[2] = with_umi + input[3] = skip_umi_extract + input[4] = umi_discard_read + input[5] = skip_trimming + input[6] = adapter_fasta + input[7] = save_trimmed_fail + input[8] = save_merged + input[9] = min_trimmed_reads + """ + } + } + + then { + assertAll( + { assert workflow.success }, + { assert snapshot( + workflow.out.reads, + workflow.out.umi_log, + workflow.out.trim_json, + workflow.out.trim_reads_fail, + workflow.out.trim_reads_merged, + workflow.out.adapter_seq, + workflow.out.trim_read_count, + workflow.out.versions + ).match() + }, + + { assert workflow.out.fastqc_raw_html}, + { assert workflow.out.fastqc_raw_zip}, + { assert workflow.out.trim_html }, + { assert workflow.out.trim_log }, + { assert workflow.out.fastqc_trim_html }, + { assert workflow.out.fastqc_trim_zip } + ) + } + } + + test("save_merged") { + + when { + workflow { + """ + skip_fastqc = false + with_umi = false + skip_umi_extract = false + umi_discard_read = 1 + skip_trimming = false + adapter_fasta = [] + save_trimmed_fail = false + save_merged = true + min_trimmed_reads = 1 + + 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) + ] + ]) + input[1] = skip_fastqc + input[2] = with_umi + input[3] = skip_umi_extract + input[4] = umi_discard_read + input[5] = skip_trimming + input[6] = adapter_fasta + input[7] = save_trimmed_fail + input[8] = save_merged + input[9] = min_trimmed_reads + """ + } + } + + then { + assertAll( + { assert workflow.success }, + { assert snapshot( + workflow.out.reads, + workflow.out.umi_log, + workflow.out.trim_json, + workflow.out.trim_reads_fail, + workflow.out.trim_reads_merged, + workflow.out.adapter_seq, + workflow.out.trim_read_count, + workflow.out.versions + ).match() + }, + + { assert workflow.out.fastqc_raw_html}, + { assert workflow.out.fastqc_raw_zip}, + { assert workflow.out.trim_html }, + { assert workflow.out.trim_log }, + { assert workflow.out.fastqc_trim_html }, + { assert workflow.out.fastqc_trim_zip } + ) + } + } + + test("min_trimmed_reads = 26") { + // Subworkflow should stop after FASTP which trims down to 25 reads + + when { + workflow { + """ + skip_fastqc = false + with_umi = false + skip_umi_extract = false + umi_discard_read = 1 + skip_trimming = false + adapter_fasta = [] + save_trimmed_fail = false + save_merged = true + min_trimmed_reads = 26 + + 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) + ] + ]) + input[1] = skip_fastqc + input[2] = with_umi + input[3] = skip_umi_extract + input[4] = umi_discard_read + input[5] = skip_trimming + input[6] = adapter_fasta + input[7] = save_trimmed_fail + input[8] = save_merged + input[9] = min_trimmed_reads + """ + } + } + + then { + assertAll( + { assert workflow.success }, + { assert snapshot( + workflow.out.reads, + workflow.out.umi_log, + workflow.out.trim_json, + workflow.out.trim_reads_fail, + workflow.out.trim_reads_merged, + workflow.out.adapter_seq, + workflow.out.trim_read_count, + workflow.out.versions + ).match() + }, + + { assert workflow.out.fastqc_raw_html}, + { assert workflow.out.fastqc_raw_zip}, { assert workflow.out.trim_html }, { assert workflow.out.trim_log }, { assert workflow.out.fastqc_trim_html }, diff --git a/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/main.nf.test.snap b/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/main.nf.test.snap index 89ba8da19..1be6597ec 100644 --- a/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/main.nf.test.snap +++ b/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/main.nf.test.snap @@ -1,30 +1,186 @@ { - "trim_reads_merged": { + "skip_fastqc": { "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test_1.fastp.fastq.gz:md5,67b2bbae47f073e05a97a9c2edce23c7", + "test_2.fastp.fastq.gz:md5,25cbdca08e2083dbd4f0502de6b62f39" + ] + ] + ], [ + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test.fastp.json:md5,1e0f8e27e71728e2b63fc64086be95cd" + ] + ], + [ + + ], + [ + + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "unspecified" + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + 198 + ] + ], + [ + "versions.yml:md5,85bd0117e5778fff18e3920972a296ad" ] ], "meta": { "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-01-12T08:38:50.041635573" + "timestamp": "2024-03-18T16:53:49.315194" }, - "trim_reads_fail": { + "save_trimmed_fail": { "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test_1.fastp.fastq.gz:md5,6ff32a64c5188b9a9192be1398c262c7", + "test_2.fastp.fastq.gz:md5,db0cb7c9977e94ac2b4b446ebd017a8a" + ] + ] + ], + [ + + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test.fastp.json:md5,4c3268ddb50ea5b33125984776aa3519" + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test.paired.fail.fastq.gz:md5,409b687c734cedd7a1fec14d316e1366", + "test_1.fail.fastq.gz:md5,4f273cf3159c13f79e8ffae12f5661f6", + "test_2.fail.fastq.gz:md5,f97b9edefb5649aab661fbc9e71fc995" + ] + ] + ], [ + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "unspecified" + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + 162 + ] + ], + [ + "versions.yml:md5,85bd0117e5778fff18e3920972a296ad", + "versions.yml:md5,c50aa59475ab901bc6f9a2cf7b1a14e0", + "versions.yml:md5,f3dcaae948e8eed92b4a5557b4c6668e" ] ], "meta": { "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-01-12T08:38:50.033284693" + "timestamp": "2024-03-18T16:51:45.34934" }, - "versions": { + "skip_umi_extract": { "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test_1.fastp.fastq.gz:md5,67b2bbae47f073e05a97a9c2edce23c7", + "test_2.fastp.fastq.gz:md5,25cbdca08e2083dbd4f0502de6b62f39" + ] + ] + ], + [ + + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test.fastp.json:md5,1e0f8e27e71728e2b63fc64086be95cd" + ] + ], + [ + + ], + [ + + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "unspecified" + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + 198 + ] + ], [ "versions.yml:md5,85bd0117e5778fff18e3920972a296ad", "versions.yml:md5,c50aa59475ab901bc6f9a2cf7b1a14e0", @@ -35,10 +191,25 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-01-12T08:38:50.121510557" + "timestamp": "2024-03-18T12:07:40.34249" }, - "trim_json": { + "umi_discard_read = 2": { "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test_1.fastp.fastq.gz:md5,67b2bbae47f073e05a97a9c2edce23c7", + "test_2.fastp.fastq.gz:md5,25cbdca08e2083dbd4f0502de6b62f39" + ] + ] + ], + [ + + ], [ [ { @@ -47,16 +218,81 @@ }, "test.fastp.json:md5,1e0f8e27e71728e2b63fc64086be95cd" ] + ], + [ + + ], + [ + + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "unspecified" + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + 198 + ] + ], + [ + "versions.yml:md5,85bd0117e5778fff18e3920972a296ad", + "versions.yml:md5,c50aa59475ab901bc6f9a2cf7b1a14e0", + "versions.yml:md5,f3dcaae948e8eed92b4a5557b4c6668e" ] ], "meta": { "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-01-12T08:38:50.024410724" + "timestamp": "2024-03-18T12:08:24.141938" }, - "adapter_seq": { + "save_merged": { "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test_1.fastp.fastq.gz:md5,54b726a55e992a869fd3fa778afe1672", + "test_2.fastp.fastq.gz:md5,29d3b33b869f7b63417b8ff07bb128ba" + ] + ] + ], + [ + + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test.fastp.json:md5,b712fd68ed0322f4bec49ff2a5237fcc" + ] + ], + [ + + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test.merged.fastq.gz:md5,c873bb1ab3fa859dcc47306465e749d5" + ] + ], [ [ { @@ -65,15 +301,71 @@ }, "unspecified" ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + 75 + ] + ], + [ + "versions.yml:md5,85bd0117e5778fff18e3920972a296ad", + "versions.yml:md5,c50aa59475ab901bc6f9a2cf7b1a14e0", + "versions.yml:md5,f3dcaae948e8eed92b4a5557b4c6668e" ] ], "meta": { "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-01-12T08:38:50.08674429" + "timestamp": "2024-03-18T12:10:18.546963" }, - "reads": { + "skip_trimming": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + [ + "/nf-core/test-datasets/modules/data/genomics/sarscov2/illumina/fastq/test_1.fastq.gz", + "/nf-core/test-datasets/modules/data/genomics/sarscov2/illumina/fastq/test_2.fastq.gz" + ] + ] + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + "versions.yml:md5,f3dcaae948e8eed92b4a5557b4c6668e" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-03-18T12:08:51.217937" + }, + "sarscov2 paired-end [fastq]": { "content": [ [ [ @@ -86,42 +378,178 @@ "test_2.fastp.fastq.gz:md5,25cbdca08e2083dbd4f0502de6b62f39" ] ] + ], + [ + + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test.fastp.json:md5,1e0f8e27e71728e2b63fc64086be95cd" + ] + ], + [ + + ], + [ + + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "unspecified" + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + 198 + ] + ], + [ + "versions.yml:md5,85bd0117e5778fff18e3920972a296ad", + "versions.yml:md5,c50aa59475ab901bc6f9a2cf7b1a14e0", + "versions.yml:md5,f3dcaae948e8eed92b4a5557b4c6668e" ] ], "meta": { "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-01-12T08:38:49.994419936" + "timestamp": "2024-03-18T16:53:39.139038" }, - "umi_log": { + "min_trimmed_reads = 26": { "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test_1.fastp.fastq.gz:md5,54b726a55e992a869fd3fa778afe1672", + "test_2.fastp.fastq.gz:md5,29d3b33b869f7b63417b8ff07bb128ba" + ] + ] + ], [ + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test.fastp.json:md5,b712fd68ed0322f4bec49ff2a5237fcc" + ] + ], + [ + + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test.merged.fastq.gz:md5,c873bb1ab3fa859dcc47306465e749d5" + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "unspecified" + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + 75 + ] + ], + [ + "versions.yml:md5,85bd0117e5778fff18e3920972a296ad", + "versions.yml:md5,c50aa59475ab901bc6f9a2cf7b1a14e0", + "versions.yml:md5,f3dcaae948e8eed92b4a5557b4c6668e" ] ], "meta": { "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-01-12T08:38:50.017720214" + "timestamp": "2024-03-18T11:52:23.849945" }, - "trim_read_count": { + "with_umi": { "content": [ [ [ { "id": "test", - "single_end": false + "single_end": true }, - 198 + "test.fastp.fastq.gz:md5,ba8c6c3a7ce718d9a2c5857e2edf53bc" + ] + ], + [ + [ + { + "id": "test", + "single_end": true + }, + "test.fastp.json:md5,d39c5c6d9a2e35fb60d26ced46569af6" + ] + ], + [ + + ], + [ + + ], + [ + [ + { + "id": "test", + "single_end": true + }, + "" ] + ], + [ + [ + { + "id": "test", + "single_end": true + }, + 99 + ] + ], + [ + "versions.yml:md5,01f264f78de3c6d893c449cc6d3cd721", + "versions.yml:md5,85bd0117e5778fff18e3920972a296ad", + "versions.yml:md5,c50aa59475ab901bc6f9a2cf7b1a14e0", + "versions.yml:md5,f3dcaae948e8eed92b4a5557b4c6668e" ] ], "meta": { "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-01-12T08:38:50.102326089" + "timestamp": "2024-03-18T17:31:09.193212" } } \ No newline at end of file diff --git a/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/nextflow.config b/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/nextflow.config new file mode 100644 index 000000000..12f7b2573 --- /dev/null +++ b/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/nextflow.config @@ -0,0 +1,11 @@ +process { + + withName: UMITOOLS_EXTRACT { + ext.args = '--bc-pattern="NNNN" --bc-pattern2="NNNN"' + } + + withName: UMICOLLAPSE { + ext.prefix = { "${meta.id}.dedup" } + } + +} \ No newline at end of file diff --git a/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/nextflow.save_trimmed.config b/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/nextflow.save_trimmed.config new file mode 100644 index 000000000..2430e9d5f --- /dev/null +++ b/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/nextflow.save_trimmed.config @@ -0,0 +1,6 @@ +process { + // Make filtering more aggressive to make more reads fail + withName: FASTP { + ext.args = "-e 30" + } +} \ No newline at end of file diff --git a/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/tags.yml b/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/tags.yml new file mode 100644 index 000000000..84a4b5676 --- /dev/null +++ b/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/tags.yml @@ -0,0 +1,2 @@ +subworkflows/fastq_fastqc_umitools_fastp: + - subworkflows/nf-core/fastq_fastqc_umitools_fastp/** From 2179ef9f0df233b69a8c5be253ca09344012d912 Mon Sep 17 00:00:00 2001 From: Adam Talbot <12817534+adamrtalbot@users.noreply.github.com> Date: Tue, 19 Mar 2024 17:50:21 +0000 Subject: [PATCH 264/634] Bump subworkflow version --- modules.json | 2 +- .../tests/main.nf.test | 41 ++++++++++--------- .../tests/main.nf.test.snap | 20 ++++----- 3 files changed, 30 insertions(+), 33 deletions(-) diff --git a/modules.json b/modules.json index d9043be57..9f8734c97 100644 --- a/modules.json +++ b/modules.json @@ -314,7 +314,7 @@ }, "fastq_fastqc_umitools_fastp": { "branch": "master", - "git_sha": "95cf5fe0194c7bf5cb0e3027a2eb7e7c89385080", + "git_sha": "cabcc0dadf8366aa7a9930066a7b3dd90d9825d5", "installed_by": ["subworkflows"] }, "fastq_fastqc_umitools_trimgalore": { diff --git a/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/main.nf.test b/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/main.nf.test index 857474153..961b5b4ff 100644 --- a/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/main.nf.test +++ b/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/main.nf.test @@ -64,8 +64,8 @@ nextflow_workflow { ).match() }, - { assert workflow.out.fastqc_raw_html}, - { assert workflow.out.fastqc_raw_zip}, + { assert workflow.out.fastqc_raw_html }, + { assert workflow.out.fastqc_raw_zip }, { assert workflow.out.trim_html }, { assert workflow.out.trim_log }, { assert workflow.out.fastqc_trim_html }, @@ -124,8 +124,8 @@ nextflow_workflow { ).match() }, - { assert !workflow.out.fastqc_raw_html}, - { assert !workflow.out.fastqc_raw_zip}, + { assert !workflow.out.fastqc_raw_html }, + { assert !workflow.out.fastqc_raw_zip }, { assert workflow.out.trim_html }, { assert workflow.out.trim_log }, { assert !workflow.out.fastqc_trim_html }, @@ -183,8 +183,8 @@ nextflow_workflow { ).match() }, - { assert workflow.out.fastqc_raw_html}, - { assert workflow.out.fastqc_raw_zip}, + { assert workflow.out.fastqc_raw_html }, + { assert workflow.out.fastqc_raw_zip }, { assert workflow.out.trim_html }, { assert workflow.out.trim_log }, { assert workflow.out.fastqc_trim_html }, @@ -244,8 +244,8 @@ nextflow_workflow { ).match() }, - { assert workflow.out.fastqc_raw_html}, - { assert workflow.out.fastqc_raw_zip}, + { assert workflow.out.fastqc_raw_html }, + { assert workflow.out.fastqc_raw_zip }, { assert workflow.out.trim_html }, { assert workflow.out.trim_log }, { assert workflow.out.fastqc_trim_html }, @@ -304,8 +304,8 @@ nextflow_workflow { ).match() }, - { assert workflow.out.fastqc_raw_html}, - { assert workflow.out.fastqc_raw_zip}, + { assert workflow.out.fastqc_raw_html }, + { assert workflow.out.fastqc_raw_zip }, { assert workflow.out.trim_html }, { assert workflow.out.trim_log }, { assert workflow.out.fastqc_trim_html }, @@ -353,7 +353,10 @@ nextflow_workflow { assertAll( { assert workflow.success }, { assert snapshot( - workflow.out.reads, + workflow.out.reads.get(0).get(0), // Reads meta map + // Because the input file is passed to the output file, we have to do check the filename only + file(workflow.out.reads.get(0).get(1).get(0)).name, + file(workflow.out.reads.get(0).get(1).get(1)).name, workflow.out.umi_log, workflow.out.trim_json, workflow.out.trim_reads_fail, @@ -364,8 +367,8 @@ nextflow_workflow { ).match() }, - { assert workflow.out.fastqc_raw_html}, - { assert workflow.out.fastqc_raw_zip}, + { assert workflow.out.fastqc_raw_html }, + { assert workflow.out.fastqc_raw_zip }, { assert !workflow.out.trim_html }, { assert !workflow.out.trim_log }, { assert !workflow.out.fastqc_trim_html }, @@ -426,8 +429,8 @@ nextflow_workflow { ).match() }, - { assert workflow.out.fastqc_raw_html}, - { assert workflow.out.fastqc_raw_zip}, + { assert workflow.out.fastqc_raw_html }, + { assert workflow.out.fastqc_raw_zip }, { assert workflow.out.trim_html }, { assert workflow.out.trim_log }, { assert workflow.out.fastqc_trim_html }, @@ -486,8 +489,8 @@ nextflow_workflow { ).match() }, - { assert workflow.out.fastqc_raw_html}, - { assert workflow.out.fastqc_raw_zip}, + { assert workflow.out.fastqc_raw_html }, + { assert workflow.out.fastqc_raw_zip }, { assert workflow.out.trim_html }, { assert workflow.out.trim_log }, { assert workflow.out.fastqc_trim_html }, @@ -547,8 +550,8 @@ nextflow_workflow { ).match() }, - { assert workflow.out.fastqc_raw_html}, - { assert workflow.out.fastqc_raw_zip}, + { assert workflow.out.fastqc_raw_html }, + { assert workflow.out.fastqc_raw_zip }, { assert workflow.out.trim_html }, { assert workflow.out.trim_log }, { assert workflow.out.fastqc_trim_html }, diff --git a/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/main.nf.test.snap b/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/main.nf.test.snap index 1be6597ec..3e11d9ec3 100644 --- a/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/main.nf.test.snap +++ b/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/main.nf.test.snap @@ -325,18 +325,12 @@ }, "skip_trimming": { "content": [ - [ - [ - { - "id": "test", - "single_end": false - }, - [ - "/nf-core/test-datasets/modules/data/genomics/sarscov2/illumina/fastq/test_1.fastq.gz", - "/nf-core/test-datasets/modules/data/genomics/sarscov2/illumina/fastq/test_2.fastq.gz" - ] - ] - ], + { + "id": "test", + "single_end": false + }, + "test_1.fastq.gz", + "test_2.fastq.gz", [ ], @@ -363,7 +357,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-03-18T12:08:51.217937" + "timestamp": "2024-03-19T15:49:26.574759" }, "sarscov2 paired-end [fastq]": { "content": [ From c84a589037d9bec436d25c8be39d54888ccf6944 Mon Sep 17 00:00:00 2001 From: maxulysse Date: Wed, 20 Mar 2024 13:40:21 +0100 Subject: [PATCH 265/634] move getGenomeAttribute to main.nf --- main.nf | 44 +++++++++++++------ .../utils_nfcore_rnaseq_pipeline/main.nf | 9 ---- 2 files changed, 31 insertions(+), 22 deletions(-) diff --git a/main.nf b/main.nf index 919cf2b85..0ea7b6a9f 100755 --- a/main.nf +++ b/main.nf @@ -11,19 +11,6 @@ nextflow.enable.dsl = 2 -/* -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - IMPORT FUNCTIONS / MODULES / SUBWORKFLOWS / WORKFLOWS -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -*/ - -include { RNASEQ } from './workflows/rnaseq' -include { PREPARE_GENOME } from './subworkflows/local/prepare_genome' -include { PIPELINE_INITIALISATION } from './subworkflows/local/utils_nfcore_rnaseq_pipeline' -include { PIPELINE_COMPLETION } from './subworkflows/local/utils_nfcore_rnaseq_pipeline' -include { checkMaxContigSize } from './subworkflows/local/utils_nfcore_rnaseq_pipeline' -include { getGenomeAttribute } from './subworkflows/local/utils_nfcore_rnaseq_pipeline' - /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ GENOME PARAMETER VALUES @@ -44,6 +31,18 @@ getGenomeAttribute('sortmerna', 'sortmerna_index') getGenomeAttribute('star', 'star_index') getGenomeAttribute('transcript_fasta', 'transcript_fasta') +/* +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + IMPORT FUNCTIONS / MODULES / SUBWORKFLOWS / WORKFLOWS +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +*/ + +include { RNASEQ } from './workflows/rnaseq' +include { PREPARE_GENOME } from './subworkflows/local/prepare_genome' +include { PIPELINE_INITIALISATION } from './subworkflows/local/utils_nfcore_rnaseq_pipeline' +include { PIPELINE_COMPLETION } from './subworkflows/local/utils_nfcore_rnaseq_pipeline' +include { checkMaxContigSize } from './subworkflows/local/utils_nfcore_rnaseq_pipeline' + /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ NAMED WORKFLOWS FOR PIPELINE @@ -172,6 +171,25 @@ workflow { ) } +/* +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + FUNCTIONS +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +*/ + +// +// Get attribute from genome config file e.g. fasta +// + +def getGenomeAttribute(attribute) { + if (params.genomes && params.genome && params.genomes.containsKey(params.genome)) { + if (params.genomes[ params.genome ].containsKey(attribute)) { + return params.genomes[ params.genome ][ attribute ] + } + } + return null +} + /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ THE END diff --git a/subworkflows/local/utils_nfcore_rnaseq_pipeline/main.nf b/subworkflows/local/utils_nfcore_rnaseq_pipeline/main.nf index bfdbf6bc8..a2b42d583 100644 --- a/subworkflows/local/utils_nfcore_rnaseq_pipeline/main.nf +++ b/subworkflows/local/utils_nfcore_rnaseq_pipeline/main.nf @@ -253,15 +253,6 @@ def validateInputParameters() { } } -// -// Get key from genome config file e.g. fasta, and initialize a params with the given attribute -// -def getGenomeAttribute(key, attribute) { - if ((params.genomes && params.genome && params.genomes.containsKey(params.genome) && params.genomes[ params.genome ].containsKey(key) )) { - params."$attribute" = params.genomes[ params.genome ][ key ] - } else params."$attribute" = null -} - // // Exit pipeline if incorrect --genome key provided // From c49f446f65f28751f04fe812a223fa01ce69f1a3 Mon Sep 17 00:00:00 2001 From: Adam Talbot <12817534+adamrtalbot@users.noreply.github.com> Date: Thu, 21 Mar 2024 08:08:07 +0000 Subject: [PATCH 266/634] Add direct replacements for existing tests Additions: - Runs simple tests for workflows - Directly replaces existing tests in .github/workflows - No checks for outputs or contents --- tests/{main.nf.test => main.default.nf.test} | 2 +- ...nf.test.snap => main.default.nf.test.snap} | 0 tests/main.featurecounts_group_type.nf.test | 22 +++++++++++++++++++ tests/main.min_mapped_reads_90.nf.test | 22 +++++++++++++++++++ tests/main.remove_ribo_rna.nf.test | 22 +++++++++++++++++++ tests/main.skip_qc.nf.test | 22 +++++++++++++++++++ tests/main.skip_trimming.nf.test | 22 +++++++++++++++++++ 7 files changed, 111 insertions(+), 1 deletion(-) rename tests/{main.nf.test => main.default.nf.test} (94%) rename tests/{main.nf.test.snap => main.default.nf.test.snap} (100%) create mode 100644 tests/main.featurecounts_group_type.nf.test create mode 100644 tests/main.min_mapped_reads_90.nf.test create mode 100644 tests/main.remove_ribo_rna.nf.test create mode 100644 tests/main.skip_qc.nf.test create mode 100644 tests/main.skip_trimming.nf.test diff --git a/tests/main.nf.test b/tests/main.default.nf.test similarity index 94% rename from tests/main.nf.test rename to tests/main.default.nf.test index 3dc8e5df8..f40b97a49 100644 --- a/tests/main.nf.test +++ b/tests/main.default.nf.test @@ -5,7 +5,7 @@ nextflow_pipeline { tag "rnaseq" tag "PIPELINE" - test("Run with profile test") { + test("Default profile test") { when { params { diff --git a/tests/main.nf.test.snap b/tests/main.default.nf.test.snap similarity index 100% rename from tests/main.nf.test.snap rename to tests/main.default.nf.test.snap diff --git a/tests/main.featurecounts_group_type.nf.test b/tests/main.featurecounts_group_type.nf.test new file mode 100644 index 000000000..ed5fa654c --- /dev/null +++ b/tests/main.featurecounts_group_type.nf.test @@ -0,0 +1,22 @@ +nextflow_pipeline { + + name "Test pipeline" + script "../main.nf" + tag "rnaseq" + tag "PIPELINE" + + test("--featurecounts_group_type false") { + + when { + params { + outdir = "$outputDir" + input = 'https://raw.githubusercontent.com/nf-core/test-datasets/7f1614baeb0ddf66e60be78c3d9fa55440465ac8/samplesheet/v3.10/samplesheet_test.csv' + featurecounts_group_type = false + } + } + + then { + assert workflow.success + } + } +} diff --git a/tests/main.min_mapped_reads_90.nf.test b/tests/main.min_mapped_reads_90.nf.test new file mode 100644 index 000000000..8a3a48d88 --- /dev/null +++ b/tests/main.min_mapped_reads_90.nf.test @@ -0,0 +1,22 @@ +nextflow_pipeline { + + name "Test pipeline" + script "../main.nf" + tag "rnaseq" + tag "PIPELINE" + + test("--min_mapped_reads 90") { + + when { + params { + outdir = "$outputDir" + input = 'https://raw.githubusercontent.com/nf-core/test-datasets/7f1614baeb0ddf66e60be78c3d9fa55440465ac8/samplesheet/v3.10/samplesheet_test.csv' + min_mapped_reads = 90 + } + } + + then { + assert workflow.success + } + } +} diff --git a/tests/main.remove_ribo_rna.nf.test b/tests/main.remove_ribo_rna.nf.test new file mode 100644 index 000000000..51f8fbdef --- /dev/null +++ b/tests/main.remove_ribo_rna.nf.test @@ -0,0 +1,22 @@ +nextflow_pipeline { + + name "Test pipeline" + script "../main.nf" + tag "rnaseq" + tag "PIPELINE" + + test("--remove_ribo_rna") { + + when { + params { + outdir = "$outputDir" + input = 'https://raw.githubusercontent.com/nf-core/test-datasets/7f1614baeb0ddf66e60be78c3d9fa55440465ac8/samplesheet/v3.10/samplesheet_test.csv' + remove_ribo_rna = true + } + } + + then { + assert workflow.success + } + } +} diff --git a/tests/main.skip_qc.nf.test b/tests/main.skip_qc.nf.test new file mode 100644 index 000000000..34cc1711b --- /dev/null +++ b/tests/main.skip_qc.nf.test @@ -0,0 +1,22 @@ +nextflow_pipeline { + + name "Test pipeline" + script "../main.nf" + tag "rnaseq" + tag "PIPELINE" + + test("--skip_qc") { + + when { + params { + outdir = "$outputDir" + input = 'https://raw.githubusercontent.com/nf-core/test-datasets/7f1614baeb0ddf66e60be78c3d9fa55440465ac8/samplesheet/v3.10/samplesheet_test.csv' + skip_qc = true + } + } + + then { + assert workflow.success + } + } +} diff --git a/tests/main.skip_trimming.nf.test b/tests/main.skip_trimming.nf.test new file mode 100644 index 000000000..24fa9cbb8 --- /dev/null +++ b/tests/main.skip_trimming.nf.test @@ -0,0 +1,22 @@ +nextflow_pipeline { + + name "Test pipeline" + script "../main.nf" + tag "rnaseq" + tag "PIPELINE" + + test("--skip_trimming") { + + when { + params { + outdir = "$outputDir" + input = 'https://raw.githubusercontent.com/nf-core/test-datasets/7f1614baeb0ddf66e60be78c3d9fa55440465ac8/samplesheet/v3.10/samplesheet_test.csv' + skip_qc = true + } + } + + then { + assert workflow.success + } + } +} From 4d9acbbd0fcd0a1e91cd68ebb3ab331f64a204c1 Mon Sep 17 00:00:00 2001 From: Adam Talbot <12817534+adamrtalbot@users.noreply.github.com> Date: Thu, 21 Mar 2024 08:24:47 +0000 Subject: [PATCH 267/634] Reorganised into discrete folders --- tests/{main.default.nf.test => default/main.nf.test} | 0 tests/{main.default.nf.test.snap => default/main.nf.test.snap} | 0 .../main.nf.test} | 0 .../main.nf.test} | 0 .../main.nf.test} | 0 tests/{main.skip_qc.nf.test => skip_qc/main.nf.test} | 0 tests/{main.skip_trimming.nf.test => skip_trimming/main.nf.test} | 0 7 files changed, 0 insertions(+), 0 deletions(-) rename tests/{main.default.nf.test => default/main.nf.test} (100%) rename tests/{main.default.nf.test.snap => default/main.nf.test.snap} (100%) rename tests/{main.featurecounts_group_type.nf.test => featurecounts/main.nf.test} (100%) rename tests/{main.min_mapped_reads_90.nf.test => min_mapped_reads/main.nf.test} (100%) rename tests/{main.remove_ribo_rna.nf.test => remove_ribo_rna/main.nf.test} (100%) rename tests/{main.skip_qc.nf.test => skip_qc/main.nf.test} (100%) rename tests/{main.skip_trimming.nf.test => skip_trimming/main.nf.test} (100%) diff --git a/tests/main.default.nf.test b/tests/default/main.nf.test similarity index 100% rename from tests/main.default.nf.test rename to tests/default/main.nf.test diff --git a/tests/main.default.nf.test.snap b/tests/default/main.nf.test.snap similarity index 100% rename from tests/main.default.nf.test.snap rename to tests/default/main.nf.test.snap diff --git a/tests/main.featurecounts_group_type.nf.test b/tests/featurecounts/main.nf.test similarity index 100% rename from tests/main.featurecounts_group_type.nf.test rename to tests/featurecounts/main.nf.test diff --git a/tests/main.min_mapped_reads_90.nf.test b/tests/min_mapped_reads/main.nf.test similarity index 100% rename from tests/main.min_mapped_reads_90.nf.test rename to tests/min_mapped_reads/main.nf.test diff --git a/tests/main.remove_ribo_rna.nf.test b/tests/remove_ribo_rna/main.nf.test similarity index 100% rename from tests/main.remove_ribo_rna.nf.test rename to tests/remove_ribo_rna/main.nf.test diff --git a/tests/main.skip_qc.nf.test b/tests/skip_qc/main.nf.test similarity index 100% rename from tests/main.skip_qc.nf.test rename to tests/skip_qc/main.nf.test diff --git a/tests/main.skip_trimming.nf.test b/tests/skip_trimming/main.nf.test similarity index 100% rename from tests/main.skip_trimming.nf.test rename to tests/skip_trimming/main.nf.test From 08e89ebbf168fe40dccb3d8fb3e9a5c9433def4a Mon Sep 17 00:00:00 2001 From: Adam Talbot <12817534+adamrtalbot@users.noreply.github.com> Date: Thu, 21 Mar 2024 08:26:56 +0000 Subject: [PATCH 268/634] More all tests into subdirectory for more organisation --- tests/{ => tests}/default/main.nf.test | 0 tests/{ => tests}/default/main.nf.test.snap | 0 tests/{ => tests}/featurecounts/main.nf.test | 0 tests/{ => tests}/min_mapped_reads/main.nf.test | 0 tests/{ => tests}/remove_ribo_rna/main.nf.test | 0 tests/{ => tests}/skip_qc/main.nf.test | 0 tests/{ => tests}/skip_trimming/main.nf.test | 0 7 files changed, 0 insertions(+), 0 deletions(-) rename tests/{ => tests}/default/main.nf.test (100%) rename tests/{ => tests}/default/main.nf.test.snap (100%) rename tests/{ => tests}/featurecounts/main.nf.test (100%) rename tests/{ => tests}/min_mapped_reads/main.nf.test (100%) rename tests/{ => tests}/remove_ribo_rna/main.nf.test (100%) rename tests/{ => tests}/skip_qc/main.nf.test (100%) rename tests/{ => tests}/skip_trimming/main.nf.test (100%) diff --git a/tests/default/main.nf.test b/tests/tests/default/main.nf.test similarity index 100% rename from tests/default/main.nf.test rename to tests/tests/default/main.nf.test diff --git a/tests/default/main.nf.test.snap b/tests/tests/default/main.nf.test.snap similarity index 100% rename from tests/default/main.nf.test.snap rename to tests/tests/default/main.nf.test.snap diff --git a/tests/featurecounts/main.nf.test b/tests/tests/featurecounts/main.nf.test similarity index 100% rename from tests/featurecounts/main.nf.test rename to tests/tests/featurecounts/main.nf.test diff --git a/tests/min_mapped_reads/main.nf.test b/tests/tests/min_mapped_reads/main.nf.test similarity index 100% rename from tests/min_mapped_reads/main.nf.test rename to tests/tests/min_mapped_reads/main.nf.test diff --git a/tests/remove_ribo_rna/main.nf.test b/tests/tests/remove_ribo_rna/main.nf.test similarity index 100% rename from tests/remove_ribo_rna/main.nf.test rename to tests/tests/remove_ribo_rna/main.nf.test diff --git a/tests/skip_qc/main.nf.test b/tests/tests/skip_qc/main.nf.test similarity index 100% rename from tests/skip_qc/main.nf.test rename to tests/tests/skip_qc/main.nf.test diff --git a/tests/skip_trimming/main.nf.test b/tests/tests/skip_trimming/main.nf.test similarity index 100% rename from tests/skip_trimming/main.nf.test rename to tests/tests/skip_trimming/main.nf.test From 967563bdb2dff00f982f692f0a6bd6f54700a033 Mon Sep 17 00:00:00 2001 From: Adam Talbot <12817534+adamrtalbot@users.noreply.github.com> Date: Thu, 21 Mar 2024 08:29:33 +0000 Subject: [PATCH 269/634] remove redundant tests --- .github/workflows/ci.yml | 67 ---------------------------------------- 1 file changed, 67 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 92b3345d7..86e2d8739 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -19,73 +19,6 @@ concurrency: group: "${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}" cancel-in-progress: true jobs: - star_salmon: - name: Test STAR Salmon with workflow parameters - if: ${{ (github.event_name != 'push' || (github.event_name == 'push' && github.repository == 'nf-core/rnaseq')) && !contains(github.event.head_commit.message, '[ci fast]') }} - runs-on: ubuntu-latest - strategy: - matrix: - parameters: - - "--skip_qc" - - "--skip_trimming" - - "--min_mapped_reads 90" - - "--with_umi" - - "--with_umi --skip_trimming" - - "--remove_ribo_rna --skip_qualimap" - - "--bam_csi_index" - - "--save_align_intermeds --save_reference" - - "--featurecounts_group_type false" - - "--trimmer fastp" - - steps: - - name: Check out pipeline code - uses: actions/checkout@v4 - - - name: Setup Nextflow - uses: nf-core/setup-nextflow@v1.5 - - - name: Run pipeline with STAR and various parameters - run: | - nextflow run ${GITHUB_WORKSPACE} -profile test,docker --aligner star_salmon ${{ matrix.parameters }} --outdir ./results - - star_rsem: - name: Test STAR RSEM with workflow parameters - if: ${{ (github.event_name != 'push' || (github.event_name == 'push' && github.repository == 'nf-core/rnaseq')) && !contains(github.event.head_commit.message, '[ci fast]') }} - runs-on: ubuntu-latest - strategy: - matrix: - parameters: - - "--skip_qc" - steps: - - name: Check out pipeline code - uses: actions/checkout@v4 - - - name: Setup Nextflow - uses: nf-core/setup-nextflow@v1.5 - - - name: Run pipeline with RSEM STAR and various parameters - run: | - nextflow run ${GITHUB_WORKSPACE} -profile test,docker --aligner star_rsem ${{ matrix.parameters }} --outdir ./results - - hisat2: - name: Test HISAT2 with workflow parameters - if: ${{ (github.event_name != 'push' || (github.event_name == 'push' && github.repository == 'nf-core/rnaseq')) && !contains(github.event.head_commit.message, '[ci fast]') }} - runs-on: ubuntu-latest - strategy: - matrix: - parameters: - - "--skip_qc" - steps: - - name: Check out pipeline code - uses: actions/checkout@v4 - - - name: Setup Nextflow - uses: nf-core/setup-nextflow@v1.5 - - - name: Run pipeline with HISAT2 and various parameters - run: | - nextflow run ${GITHUB_WORKSPACE} -profile test,docker --aligner hisat2 ${{ matrix.parameters }} --outdir ./results - pseudo: name: Test Pseudoaligners with workflow parameters if: ${{ (github.event_name != 'push' || (github.event_name == 'push' && github.repository == 'nf-core/rnaseq')) && !contains(github.event.head_commit.message, '[ci fast]') }} From c2861cc76fc15769476176cae31a7aad852e0632 Mon Sep 17 00:00:00 2001 From: Adam Talbot <12817534+adamrtalbot@users.noreply.github.com> Date: Thu, 21 Mar 2024 08:36:45 +0000 Subject: [PATCH 270/634] Remove invalid dependencies from GHA confirm-pass --- .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 86e2d8739..a61d32c16 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -177,7 +177,7 @@ jobs: confirm-pass: runs-on: ubuntu-latest - needs: [test, star_salmon, star_rsem, hisat2, pseudo] + needs: [test, pseudo] if: always() steps: - name: All tests ok From c00917c482b89a9ad89cad9849d475de8bcab04e Mon Sep 17 00:00:00 2001 From: Adam Talbot <12817534+adamrtalbot@users.noreply.github.com> Date: Thu, 21 Mar 2024 10:31:17 +0000 Subject: [PATCH 271/634] Correct pipeline test path --- tests/tests/default/main.nf.test | 2 +- tests/tests/featurecounts/main.nf.test | 2 +- tests/tests/min_mapped_reads/main.nf.test | 2 +- tests/tests/remove_ribo_rna/main.nf.test | 2 +- tests/tests/skip_qc/main.nf.test | 2 +- tests/tests/skip_trimming/main.nf.test | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/tests/tests/default/main.nf.test b/tests/tests/default/main.nf.test index f40b97a49..227f54458 100644 --- a/tests/tests/default/main.nf.test +++ b/tests/tests/default/main.nf.test @@ -1,7 +1,7 @@ nextflow_pipeline { name "Test pipeline" - script "../main.nf" + script "../../main.nf" tag "rnaseq" tag "PIPELINE" diff --git a/tests/tests/featurecounts/main.nf.test b/tests/tests/featurecounts/main.nf.test index ed5fa654c..5985a686a 100644 --- a/tests/tests/featurecounts/main.nf.test +++ b/tests/tests/featurecounts/main.nf.test @@ -1,7 +1,7 @@ nextflow_pipeline { name "Test pipeline" - script "../main.nf" + script "../../main.nf" tag "rnaseq" tag "PIPELINE" diff --git a/tests/tests/min_mapped_reads/main.nf.test b/tests/tests/min_mapped_reads/main.nf.test index 8a3a48d88..49b83ad19 100644 --- a/tests/tests/min_mapped_reads/main.nf.test +++ b/tests/tests/min_mapped_reads/main.nf.test @@ -1,7 +1,7 @@ nextflow_pipeline { name "Test pipeline" - script "../main.nf" + script "../../main.nf" tag "rnaseq" tag "PIPELINE" diff --git a/tests/tests/remove_ribo_rna/main.nf.test b/tests/tests/remove_ribo_rna/main.nf.test index 51f8fbdef..2d9ba1fc4 100644 --- a/tests/tests/remove_ribo_rna/main.nf.test +++ b/tests/tests/remove_ribo_rna/main.nf.test @@ -1,7 +1,7 @@ nextflow_pipeline { name "Test pipeline" - script "../main.nf" + script "../../main.nf" tag "rnaseq" tag "PIPELINE" diff --git a/tests/tests/skip_qc/main.nf.test b/tests/tests/skip_qc/main.nf.test index 34cc1711b..84db3c9e8 100644 --- a/tests/tests/skip_qc/main.nf.test +++ b/tests/tests/skip_qc/main.nf.test @@ -1,7 +1,7 @@ nextflow_pipeline { name "Test pipeline" - script "../main.nf" + script "../../main.nf" tag "rnaseq" tag "PIPELINE" diff --git a/tests/tests/skip_trimming/main.nf.test b/tests/tests/skip_trimming/main.nf.test index 24fa9cbb8..b51fdfa6a 100644 --- a/tests/tests/skip_trimming/main.nf.test +++ b/tests/tests/skip_trimming/main.nf.test @@ -1,7 +1,7 @@ nextflow_pipeline { name "Test pipeline" - script "../main.nf" + script "../../main.nf" tag "rnaseq" tag "PIPELINE" From 622d8c6194306643a114ad4b74ad471050a30727 Mon Sep 17 00:00:00 2001 From: Adam Talbot <12817534+adamrtalbot@users.noreply.github.com> Date: Thu, 21 Mar 2024 16:00:37 +0000 Subject: [PATCH 272/634] Relative path AGAIN --- tests/tests/default/main.nf.test | 2 +- tests/tests/featurecounts/main.nf.test | 2 +- tests/tests/min_mapped_reads/main.nf.test | 2 +- tests/tests/remove_ribo_rna/main.nf.test | 2 +- tests/tests/skip_qc/main.nf.test | 2 +- tests/tests/skip_trimming/main.nf.test | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/tests/tests/default/main.nf.test b/tests/tests/default/main.nf.test index 227f54458..403e9f5f9 100644 --- a/tests/tests/default/main.nf.test +++ b/tests/tests/default/main.nf.test @@ -1,7 +1,7 @@ nextflow_pipeline { name "Test pipeline" - script "../../main.nf" + script "../../../main.nf" tag "rnaseq" tag "PIPELINE" diff --git a/tests/tests/featurecounts/main.nf.test b/tests/tests/featurecounts/main.nf.test index 5985a686a..bc51fe2e0 100644 --- a/tests/tests/featurecounts/main.nf.test +++ b/tests/tests/featurecounts/main.nf.test @@ -1,7 +1,7 @@ nextflow_pipeline { name "Test pipeline" - script "../../main.nf" + script "../../../main.nf" tag "rnaseq" tag "PIPELINE" diff --git a/tests/tests/min_mapped_reads/main.nf.test b/tests/tests/min_mapped_reads/main.nf.test index 49b83ad19..d0e1dfe36 100644 --- a/tests/tests/min_mapped_reads/main.nf.test +++ b/tests/tests/min_mapped_reads/main.nf.test @@ -1,7 +1,7 @@ nextflow_pipeline { name "Test pipeline" - script "../../main.nf" + script "../../../main.nf" tag "rnaseq" tag "PIPELINE" diff --git a/tests/tests/remove_ribo_rna/main.nf.test b/tests/tests/remove_ribo_rna/main.nf.test index 2d9ba1fc4..a242a8da4 100644 --- a/tests/tests/remove_ribo_rna/main.nf.test +++ b/tests/tests/remove_ribo_rna/main.nf.test @@ -1,7 +1,7 @@ nextflow_pipeline { name "Test pipeline" - script "../../main.nf" + script "../../../main.nf" tag "rnaseq" tag "PIPELINE" diff --git a/tests/tests/skip_qc/main.nf.test b/tests/tests/skip_qc/main.nf.test index 84db3c9e8..788ed432e 100644 --- a/tests/tests/skip_qc/main.nf.test +++ b/tests/tests/skip_qc/main.nf.test @@ -1,7 +1,7 @@ nextflow_pipeline { name "Test pipeline" - script "../../main.nf" + script "../../../main.nf" tag "rnaseq" tag "PIPELINE" diff --git a/tests/tests/skip_trimming/main.nf.test b/tests/tests/skip_trimming/main.nf.test index b51fdfa6a..f23703f35 100644 --- a/tests/tests/skip_trimming/main.nf.test +++ b/tests/tests/skip_trimming/main.nf.test @@ -1,7 +1,7 @@ nextflow_pipeline { name "Test pipeline" - script "../../main.nf" + script "../../../main.nf" tag "rnaseq" tag "PIPELINE" From e79a5870c22c8e7781ac342ca61bfa7b8b0fb143 Mon Sep 17 00:00:00 2001 From: Adam Talbot <12817534+adamrtalbot@users.noreply.github.com> Date: Fri, 22 Mar 2024 11:41:50 +0000 Subject: [PATCH 273/634] Update bam_markduplicates_picard subworkflow --- modules.json | 8 +- modules/nf-core/fastp/main.nf | 2 +- modules/nf-core/fastp/tests/main.nf.test | 21 +- modules/nf-core/fastp/tests/main.nf.test.snap | 10 +- modules/nf-core/fastp/tests/nextflow.config | 6 - modules/nf-core/picard/markduplicates/main.nf | 23 +- .../nf-core/picard/markduplicates/meta.yml | 10 +- .../picard/markduplicates/tests/main.nf.test | 26 +- .../markduplicates/tests/main.nf.test.snap | 56 +- .../nf-core/bam_markduplicates_picard/main.nf | 28 +- .../bam_markduplicates_picard/meta.yml | 20 +- .../tests/main.nf.test | 20 +- .../tests/main.nf.test.snap | 14 +- .../tests/main.nf.test | 523 +++++++++++++++++- .../tests/main.nf.test.snap | 458 ++++++++++++++- 15 files changed, 1101 insertions(+), 124 deletions(-) delete mode 100644 modules/nf-core/fastp/tests/nextflow.config diff --git a/modules.json b/modules.json index 15390c5fe..677ab814f 100644 --- a/modules.json +++ b/modules.json @@ -42,7 +42,7 @@ }, "fastp": { "branch": "master", - "git_sha": "003920c7f9a8ae19b69a97171922880220bedf56", + "git_sha": "95cf5fe0194c7bf5cb0e3027a2eb7e7c89385080", "installed_by": ["fastq_fastqc_umitools_fastp", "modules"] }, "fastqc": { @@ -97,7 +97,7 @@ }, "picard/markduplicates": { "branch": "master", - "git_sha": "ec833ac4c29db6005d18baccf3306f557c46b006", + "git_sha": "1943aa60f7490c3d6740e8872e6e69122ccc8087", "installed_by": ["bam_markduplicates_picard"] }, "preseq/lcextrap": { @@ -280,7 +280,7 @@ }, "bam_markduplicates_picard": { "branch": "master", - "git_sha": "f4596fe0bdc096cf53ec4497e83defdb3a94ff62", + "git_sha": "1943aa60f7490c3d6740e8872e6e69122ccc8087", "installed_by": ["subworkflows"] }, "bam_rseqc": { @@ -314,7 +314,7 @@ }, "fastq_fastqc_umitools_fastp": { "branch": "master", - "git_sha": "003920c7f9a8ae19b69a97171922880220bedf56", + "git_sha": "cabcc0dadf8366aa7a9930066a7b3dd90d9825d5", "installed_by": ["subworkflows"] }, "fastq_fastqc_umitools_trimgalore": { diff --git a/modules/nf-core/fastp/main.nf b/modules/nf-core/fastp/main.nf index 2a3b679e3..4fc19b744 100644 --- a/modules/nf-core/fastp/main.nf +++ b/modules/nf-core/fastp/main.nf @@ -29,7 +29,7 @@ process FASTP { def args = task.ext.args ?: '' def prefix = task.ext.prefix ?: "${meta.id}" def adapter_list = adapter_fasta ? "--adapter_fasta ${adapter_fasta}" : "" - def fail_fastq = save_trimmed_fail && meta.single_end ? "--failed_out ${prefix}.fail.fastq.gz" : save_trimmed_fail && !meta.single_end ? "--unpaired1 ${prefix}_1.fail.fastq.gz --unpaired2 ${prefix}_2.fail.fastq.gz" : '' + def fail_fastq = save_trimmed_fail && meta.single_end ? "--failed_out ${prefix}.fail.fastq.gz" : save_trimmed_fail && !meta.single_end ? "--failed_out ${prefix}.paired.fail.fastq.gz --unpaired1 ${prefix}_1.fail.fastq.gz --unpaired2 ${prefix}_2.fail.fastq.gz" : '' // Added soft-links to original fastqs for consistent naming in MultiQC // Use single ended for interleaved. Add --interleaved_in in config. if ( task.ext.args?.contains('--interleaved_in') ) { diff --git a/modules/nf-core/fastp/tests/main.nf.test b/modules/nf-core/fastp/tests/main.nf.test index e67eacd6f..6f1f48978 100644 --- a/modules/nf-core/fastp/tests/main.nf.test +++ b/modules/nf-core/fastp/tests/main.nf.test @@ -3,6 +3,9 @@ nextflow_process { name "Test Process FASTP" script "../main.nf" process "FASTP" + tag "modules" + tag "modules_nfcore" + tag "fastp" test("test_fastp_single_end") { @@ -248,7 +251,8 @@ nextflow_process { } test("fastp test_fastp_interleaved") { - config './nextflow.config' + + config './nextflow.interleaved.config' when { params { outdir = "$outputDir" @@ -274,7 +278,7 @@ nextflow_process { def html_text = [ "Q20 bases:25.719000 K (93.033098%)", "paired end (151 cycles + 151 cycles)"] def log_text = [ "Q20 bases: 12922(92.9841%)", - "reads passed filter: 198"] + "reads passed filter: 162"] def read_lines = [ "@ERR5069949.2151832 NS500628:121:HK3MMAFX2:2:21208:10793:15304/1", "TCATAAACCAAAGCACTCACAGTGTCAACAATTTCAGCAGGACAACGCCGACAAGTTCCGAGGAACATGTCTGGACCTATAGTTTTCATAAGTCTACACACTGAATTGAAATATTCTGGTTCTAGTGTGCCCTTAGTTAGCAATGTGCGT", "AAAAAAEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEAAEEEEAEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEAAEEEEE - { assert path(process.out.reads_fail.get(0).get(1).get(1)).linesGzip.contains(failed_read2_line) } + { assert path(process.out.reads_fail.get(0).get(1).get(2)).linesGzip.contains(failed_read2_line) } } }, { html_text.each { html_part -> diff --git a/modules/nf-core/fastp/tests/main.nf.test.snap b/modules/nf-core/fastp/tests/main.nf.test.snap index b4c0e1dd8..3e8762889 100644 --- a/modules/nf-core/fastp/tests/main.nf.test.snap +++ b/modules/nf-core/fastp/tests/main.nf.test.snap @@ -7,7 +7,7 @@ "id": "test", "single_end": true }, - "test.fastp.json:md5,168f516f7bd4b7b6c32da7cba87299a4" + "test.fastp.json:md5,b24e0624df5cc0b11cd5ba21b726fb22" ] ] ], @@ -15,7 +15,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-01-17T18:08:06.123035" + "timestamp": "2024-03-18T16:19:15.063001" }, "test_fastp_paired_end_merged-for_stub_match": { "content": [ @@ -65,7 +65,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-01-17T18:06:00.223817" + "timestamp": "2024-03-18T16:18:43.526412" }, "versions_paired_end": { "content": [ @@ -112,7 +112,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-02-01T12:03:37.827323085" + "timestamp": "2024-03-18T16:19:15.111894" }, "test_fastp_paired_end_merged_match": { "content": [ @@ -283,7 +283,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-02-01T11:57:30.791982648" + "timestamp": "2024-03-18T16:18:43.580336" }, "versions_paired_end_merged_adapterlist": { "content": [ diff --git a/modules/nf-core/fastp/tests/nextflow.config b/modules/nf-core/fastp/tests/nextflow.config deleted file mode 100644 index 0f7849ad9..000000000 --- a/modules/nf-core/fastp/tests/nextflow.config +++ /dev/null @@ -1,6 +0,0 @@ -process { - - withName: FASTP { - ext.args = "--interleaved_in" - } -} diff --git a/modules/nf-core/picard/markduplicates/main.nf b/modules/nf-core/picard/markduplicates/main.nf index 80930cc41..ad0b29636 100644 --- a/modules/nf-core/picard/markduplicates/main.nf +++ b/modules/nf-core/picard/markduplicates/main.nf @@ -8,13 +8,14 @@ process PICARD_MARKDUPLICATES { 'biocontainers/picard:3.1.1--hdfd78af_0' }" input: - tuple val(meta), path(bam) + tuple val(meta), path(reads) tuple val(meta2), path(fasta) tuple val(meta3), path(fai) output: - tuple val(meta), path("*.bam") , emit: bam - tuple val(meta), path("*.bai") , optional:true, emit: bai + tuple val(meta), path("*.bam") , emit: bam, optional: true + tuple val(meta), path("*.bai") , emit: bai, optional: true + tuple val(meta), path("*.cram"), emit: cram, optional: true tuple val(meta), path("*.metrics.txt"), emit: metrics path "versions.yml" , emit: versions @@ -24,6 +25,8 @@ process PICARD_MARKDUPLICATES { script: def args = task.ext.args ?: '' def prefix = task.ext.prefix ?: "${meta.id}" + def suffix = task.ext.suffix ?: "${reads.getExtension()}" + def reference = fasta ? "--REFERENCE_SEQUENCE ${fasta}" : "" def avail_mem = 3072 if (!task.memory) { log.info '[Picard MarkDuplicates] Available memory not known - defaulting to 3GB. Specify process memory requirements to change this.' @@ -31,16 +34,16 @@ process PICARD_MARKDUPLICATES { avail_mem = (task.memory.mega*0.8).intValue() } - if ("$bam" == "${prefix}.bam") error "Input and output names are the same, use \"task.ext.prefix\" to disambiguate!" + if ("$reads" == "${prefix}.${suffix}") error "Input and output names are the same, use \"task.ext.prefix\" to disambiguate!" """ picard \\ -Xmx${avail_mem}M \\ MarkDuplicates \\ $args \\ - --INPUT $bam \\ - --OUTPUT ${prefix}.bam \\ - --REFERENCE_SEQUENCE $fasta \\ + --INPUT $reads \\ + --OUTPUT ${prefix}.${suffix} \\ + $reference \\ --METRICS_FILE ${prefix}.MarkDuplicates.metrics.txt cat <<-END_VERSIONS > versions.yml @@ -51,10 +54,10 @@ process PICARD_MARKDUPLICATES { stub: def prefix = task.ext.prefix ?: "${meta.id}" - if ("$bam" == "${prefix}.bam") error "Input and output names are the same, use \"task.ext.prefix\" to disambiguate!" + def suffix = task.ext.suffix ?: "${reads.getExtension()}" + if ("$reads" == "${prefix}.${suffix}") error "Input and output names are the same, use \"task.ext.prefix\" to disambiguate!" """ - touch ${prefix}.bam - touch ${prefix}.bam.bai + touch ${prefix}.${suffix} touch ${prefix}.MarkDuplicates.metrics.txt cat <<-END_VERSIONS > versions.yml diff --git a/modules/nf-core/picard/markduplicates/meta.yml b/modules/nf-core/picard/markduplicates/meta.yml index 1ab90c075..1f0ffe16c 100644 --- a/modules/nf-core/picard/markduplicates/meta.yml +++ b/modules/nf-core/picard/markduplicates/meta.yml @@ -21,9 +21,9 @@ input: description: | Groovy Map containing sample information e.g. [ id:'test', single_end:false ] - - bam: + - reads: type: file - description: BAM file + description: Sequence reads file, can be SAM/BAM/CRAM format pattern: "*.{bam,cram,sam}" - meta2: type: map @@ -32,7 +32,7 @@ input: e.g. [ id:'genome' ] - fasta: type: file - description: Reference genome fasta file + description: Reference genome fasta file, required for CRAM input pattern: "*.{fasta,fa}" - meta3: type: map @@ -57,6 +57,10 @@ output: type: file description: An optional BAM index file. If desired, --CREATE_INDEX must be passed as a flag pattern: "*.{bai}" + - cram: + type: file + description: Output CRAM file + pattern: "*.{cram}" - metrics: type: file description: Duplicate metrics file generated by picard diff --git a/modules/nf-core/picard/markduplicates/tests/main.nf.test b/modules/nf-core/picard/markduplicates/tests/main.nf.test index f0caf0fa3..e3e97f6cc 100644 --- a/modules/nf-core/picard/markduplicates/tests/main.nf.test +++ b/modules/nf-core/picard/markduplicates/tests/main.nf.test @@ -4,6 +4,10 @@ nextflow_process { script "../main.nf" process "PICARD_MARKDUPLICATES" config "./nextflow.config" + tag "modules" + tag "modules_nfcore" + tag "picard" + tag "picard/markduplicates" test("sarscov2 [unsorted bam]") { @@ -14,14 +18,8 @@ nextflow_process { [ id:'test', single_end:false ], // meta map file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.bam', checkIfExists: true) ]) - input[1] = Channel.of([ - [ id:'genome' ], - file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) - ]) - input[2] = Channel.of([ - [ id:'genome' ], - file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.fai', checkIfExists: true) - ]) + input[1] = [ [:], [] ] + input[2] = [ [:], [] ] """ } } @@ -45,14 +43,8 @@ nextflow_process { [ id:'test', single_end:false ], // meta map file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true) ]) - input[1] = Channel.of([ - [ id:'genome' ], - file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) - ]) - input[2] = Channel.of([ - [ id:'genome' ], - file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.fai', checkIfExists: true) - ]) + input[1] = [ [:], [] ] + input[2] = [ [:], [] ] """ } } @@ -91,7 +83,7 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot(file(process.out.bam[0][1]).name).match("cram_name") }, + { assert snapshot(file(process.out.cram[0][1]).name).match("cram_name") }, { assert snapshot(path(process.out.metrics.get(0).get(1)).readLines()[0..2]).match("cram_metrics") }, { assert snapshot(process.out.versions).match("cram_versions") } ) diff --git a/modules/nf-core/picard/markduplicates/tests/main.nf.test.snap b/modules/nf-core/picard/markduplicates/tests/main.nf.test.snap index 31c9130dc..eb17111e4 100644 --- a/modules/nf-core/picard/markduplicates/tests/main.nf.test.snap +++ b/modules/nf-core/picard/markduplicates/tests/main.nf.test.snap @@ -5,39 +5,59 @@ "versions.yml:md5,b699af51b1956f3810f8a7c066e0ab17" ] ], - "timestamp": "2024-01-19T10:26:45.092349" + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-03-20T15:31:50.928021" }, "unsorted_bam_name": { "content": [ "test.marked.bam" ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, "timestamp": "2024-01-19T10:26:28.100755" }, "cram_metrics": { "content": [ [ "## htsjdk.samtools.metrics.StringHeader", - "# MarkDuplicates --INPUT test.paired_end.sorted.cram --OUTPUT test.marked.bam --METRICS_FILE test.marked.MarkDuplicates.metrics.txt --ASSUME_SORT_ORDER queryname --REFERENCE_SEQUENCE genome.fasta --MAX_SEQUENCES_FOR_DISK_READ_ENDS_MAP 50000 --MAX_FILE_HANDLES_FOR_READ_ENDS_MAP 8000 --SORTING_COLLECTION_SIZE_RATIO 0.25 --TAG_DUPLICATE_SET_MEMBERS false --REMOVE_SEQUENCING_DUPLICATES false --TAGGING_POLICY DontTag --CLEAR_DT true --DUPLEX_UMI false --FLOW_MODE false --FLOW_QUALITY_SUM_STRATEGY false --USE_END_IN_UNPAIRED_READS false --USE_UNPAIRED_CLIPPED_END false --UNPAIRED_END_UNCERTAINTY 0 --FLOW_SKIP_FIRST_N_FLOWS 0 --FLOW_Q_IS_KNOWN_END false --FLOW_EFFECTIVE_QUALITY_THRESHOLD 15 --ADD_PG_TAG_TO_READS true --REMOVE_DUPLICATES false --ASSUME_SORTED false --DUPLICATE_SCORING_STRATEGY SUM_OF_BASE_QUALITIES --PROGRAM_RECORD_ID MarkDuplicates --PROGRAM_GROUP_NAME MarkDuplicates --READ_NAME_REGEX --OPTICAL_DUPLICATE_PIXEL_DISTANCE 100 --MAX_OPTICAL_DUPLICATE_SET_SIZE 300000 --VERBOSITY INFO --QUIET false --VALIDATION_STRINGENCY STRICT --COMPRESSION_LEVEL 5 --MAX_RECORDS_IN_RAM 500000 --CREATE_INDEX false --CREATE_MD5_FILE false --help false --version false --showHidden false --USE_JDK_DEFLATER false --USE_JDK_INFLATER false", + "# MarkDuplicates --INPUT test.paired_end.sorted.cram --OUTPUT test.marked.cram --METRICS_FILE test.marked.MarkDuplicates.metrics.txt --ASSUME_SORT_ORDER queryname --REFERENCE_SEQUENCE genome.fasta --MAX_SEQUENCES_FOR_DISK_READ_ENDS_MAP 50000 --MAX_FILE_HANDLES_FOR_READ_ENDS_MAP 8000 --SORTING_COLLECTION_SIZE_RATIO 0.25 --TAG_DUPLICATE_SET_MEMBERS false --REMOVE_SEQUENCING_DUPLICATES false --TAGGING_POLICY DontTag --CLEAR_DT true --DUPLEX_UMI false --FLOW_MODE false --FLOW_QUALITY_SUM_STRATEGY false --USE_END_IN_UNPAIRED_READS false --USE_UNPAIRED_CLIPPED_END false --UNPAIRED_END_UNCERTAINTY 0 --FLOW_SKIP_FIRST_N_FLOWS 0 --FLOW_Q_IS_KNOWN_END false --FLOW_EFFECTIVE_QUALITY_THRESHOLD 15 --ADD_PG_TAG_TO_READS true --REMOVE_DUPLICATES false --ASSUME_SORTED false --DUPLICATE_SCORING_STRATEGY SUM_OF_BASE_QUALITIES --PROGRAM_RECORD_ID MarkDuplicates --PROGRAM_GROUP_NAME MarkDuplicates --READ_NAME_REGEX --OPTICAL_DUPLICATE_PIXEL_DISTANCE 100 --MAX_OPTICAL_DUPLICATE_SET_SIZE 300000 --VERBOSITY INFO --QUIET false --VALIDATION_STRINGENCY STRICT --COMPRESSION_LEVEL 5 --MAX_RECORDS_IN_RAM 500000 --CREATE_INDEX false --CREATE_MD5_FILE false --help false --version false --showHidden false --USE_JDK_DEFLATER false --USE_JDK_INFLATER false", "## htsjdk.samtools.metrics.StringHeader" ] ], - "timestamp": "2024-01-19T10:27:03.253071" + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-03-20T15:25:47.518152" }, "sorted_bam_metrics": { "content": [ [ "## htsjdk.samtools.metrics.StringHeader", - "# MarkDuplicates --INPUT test.paired_end.sorted.bam --OUTPUT test.marked.bam --METRICS_FILE test.marked.MarkDuplicates.metrics.txt --ASSUME_SORT_ORDER queryname --REFERENCE_SEQUENCE genome.fasta --MAX_SEQUENCES_FOR_DISK_READ_ENDS_MAP 50000 --MAX_FILE_HANDLES_FOR_READ_ENDS_MAP 8000 --SORTING_COLLECTION_SIZE_RATIO 0.25 --TAG_DUPLICATE_SET_MEMBERS false --REMOVE_SEQUENCING_DUPLICATES false --TAGGING_POLICY DontTag --CLEAR_DT true --DUPLEX_UMI false --FLOW_MODE false --FLOW_QUALITY_SUM_STRATEGY false --USE_END_IN_UNPAIRED_READS false --USE_UNPAIRED_CLIPPED_END false --UNPAIRED_END_UNCERTAINTY 0 --FLOW_SKIP_FIRST_N_FLOWS 0 --FLOW_Q_IS_KNOWN_END false --FLOW_EFFECTIVE_QUALITY_THRESHOLD 15 --ADD_PG_TAG_TO_READS true --REMOVE_DUPLICATES false --ASSUME_SORTED false --DUPLICATE_SCORING_STRATEGY SUM_OF_BASE_QUALITIES --PROGRAM_RECORD_ID MarkDuplicates --PROGRAM_GROUP_NAME MarkDuplicates --READ_NAME_REGEX --OPTICAL_DUPLICATE_PIXEL_DISTANCE 100 --MAX_OPTICAL_DUPLICATE_SET_SIZE 300000 --VERBOSITY INFO --QUIET false --VALIDATION_STRINGENCY STRICT --COMPRESSION_LEVEL 5 --MAX_RECORDS_IN_RAM 500000 --CREATE_INDEX false --CREATE_MD5_FILE false --help false --version false --showHidden false --USE_JDK_DEFLATER false --USE_JDK_INFLATER false", + "# MarkDuplicates --INPUT test.paired_end.sorted.bam --OUTPUT test.marked.bam --METRICS_FILE test.marked.MarkDuplicates.metrics.txt --ASSUME_SORT_ORDER queryname --MAX_SEQUENCES_FOR_DISK_READ_ENDS_MAP 50000 --MAX_FILE_HANDLES_FOR_READ_ENDS_MAP 8000 --SORTING_COLLECTION_SIZE_RATIO 0.25 --TAG_DUPLICATE_SET_MEMBERS false --REMOVE_SEQUENCING_DUPLICATES false --TAGGING_POLICY DontTag --CLEAR_DT true --DUPLEX_UMI false --FLOW_MODE false --FLOW_QUALITY_SUM_STRATEGY false --USE_END_IN_UNPAIRED_READS false --USE_UNPAIRED_CLIPPED_END false --UNPAIRED_END_UNCERTAINTY 0 --FLOW_SKIP_FIRST_N_FLOWS 0 --FLOW_Q_IS_KNOWN_END false --FLOW_EFFECTIVE_QUALITY_THRESHOLD 15 --ADD_PG_TAG_TO_READS true --REMOVE_DUPLICATES false --ASSUME_SORTED false --DUPLICATE_SCORING_STRATEGY SUM_OF_BASE_QUALITIES --PROGRAM_RECORD_ID MarkDuplicates --PROGRAM_GROUP_NAME MarkDuplicates --READ_NAME_REGEX --OPTICAL_DUPLICATE_PIXEL_DISTANCE 100 --MAX_OPTICAL_DUPLICATE_SET_SIZE 300000 --VERBOSITY INFO --QUIET false --VALIDATION_STRINGENCY STRICT --COMPRESSION_LEVEL 5 --MAX_RECORDS_IN_RAM 500000 --CREATE_INDEX false --CREATE_MD5_FILE false --help false --version false --showHidden false --USE_JDK_DEFLATER false --USE_JDK_INFLATER false", "## htsjdk.samtools.metrics.StringHeader" ] ], - "timestamp": "2024-01-19T10:26:45.086503" + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-03-21T11:39:10.318331" }, "cram_name": { "content": [ - "test.marked.bam" + "test.marked.cram" ], - "timestamp": "2024-01-19T10:27:03.241617" + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-03-20T15:25:47.459663" }, "cram_versions": { "content": [ @@ -45,6 +65,10 @@ "versions.yml:md5,b699af51b1956f3810f8a7c066e0ab17" ] ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, "timestamp": "2024-01-19T10:27:03.26989" }, "unsorted_bam_versions": { @@ -53,22 +77,34 @@ "versions.yml:md5,b699af51b1956f3810f8a7c066e0ab17" ] ], - "timestamp": "2024-01-19T10:26:28.159071" + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-03-20T15:31:24.040403" }, "unsorted_bam_metrics": { "content": [ [ "## htsjdk.samtools.metrics.StringHeader", - "# MarkDuplicates --INPUT test.paired_end.bam --OUTPUT test.marked.bam --METRICS_FILE test.marked.MarkDuplicates.metrics.txt --ASSUME_SORT_ORDER queryname --REFERENCE_SEQUENCE genome.fasta --MAX_SEQUENCES_FOR_DISK_READ_ENDS_MAP 50000 --MAX_FILE_HANDLES_FOR_READ_ENDS_MAP 8000 --SORTING_COLLECTION_SIZE_RATIO 0.25 --TAG_DUPLICATE_SET_MEMBERS false --REMOVE_SEQUENCING_DUPLICATES false --TAGGING_POLICY DontTag --CLEAR_DT true --DUPLEX_UMI false --FLOW_MODE false --FLOW_QUALITY_SUM_STRATEGY false --USE_END_IN_UNPAIRED_READS false --USE_UNPAIRED_CLIPPED_END false --UNPAIRED_END_UNCERTAINTY 0 --FLOW_SKIP_FIRST_N_FLOWS 0 --FLOW_Q_IS_KNOWN_END false --FLOW_EFFECTIVE_QUALITY_THRESHOLD 15 --ADD_PG_TAG_TO_READS true --REMOVE_DUPLICATES false --ASSUME_SORTED false --DUPLICATE_SCORING_STRATEGY SUM_OF_BASE_QUALITIES --PROGRAM_RECORD_ID MarkDuplicates --PROGRAM_GROUP_NAME MarkDuplicates --READ_NAME_REGEX --OPTICAL_DUPLICATE_PIXEL_DISTANCE 100 --MAX_OPTICAL_DUPLICATE_SET_SIZE 300000 --VERBOSITY INFO --QUIET false --VALIDATION_STRINGENCY STRICT --COMPRESSION_LEVEL 5 --MAX_RECORDS_IN_RAM 500000 --CREATE_INDEX false --CREATE_MD5_FILE false --help false --version false --showHidden false --USE_JDK_DEFLATER false --USE_JDK_INFLATER false", + "# MarkDuplicates --INPUT test.paired_end.bam --OUTPUT test.marked.bam --METRICS_FILE test.marked.MarkDuplicates.metrics.txt --ASSUME_SORT_ORDER queryname --MAX_SEQUENCES_FOR_DISK_READ_ENDS_MAP 50000 --MAX_FILE_HANDLES_FOR_READ_ENDS_MAP 8000 --SORTING_COLLECTION_SIZE_RATIO 0.25 --TAG_DUPLICATE_SET_MEMBERS false --REMOVE_SEQUENCING_DUPLICATES false --TAGGING_POLICY DontTag --CLEAR_DT true --DUPLEX_UMI false --FLOW_MODE false --FLOW_QUALITY_SUM_STRATEGY false --USE_END_IN_UNPAIRED_READS false --USE_UNPAIRED_CLIPPED_END false --UNPAIRED_END_UNCERTAINTY 0 --FLOW_SKIP_FIRST_N_FLOWS 0 --FLOW_Q_IS_KNOWN_END false --FLOW_EFFECTIVE_QUALITY_THRESHOLD 15 --ADD_PG_TAG_TO_READS true --REMOVE_DUPLICATES false --ASSUME_SORTED false --DUPLICATE_SCORING_STRATEGY SUM_OF_BASE_QUALITIES --PROGRAM_RECORD_ID MarkDuplicates --PROGRAM_GROUP_NAME MarkDuplicates --READ_NAME_REGEX --OPTICAL_DUPLICATE_PIXEL_DISTANCE 100 --MAX_OPTICAL_DUPLICATE_SET_SIZE 300000 --VERBOSITY INFO --QUIET false --VALIDATION_STRINGENCY STRICT --COMPRESSION_LEVEL 5 --MAX_RECORDS_IN_RAM 500000 --CREATE_INDEX false --CREATE_MD5_FILE false --help false --version false --showHidden false --USE_JDK_DEFLATER false --USE_JDK_INFLATER false", "## htsjdk.samtools.metrics.StringHeader" ] ], - "timestamp": "2024-01-19T10:26:28.143979" + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-03-21T10:51:12.831787" }, "sorted_bam_name": { "content": [ "test.marked.bam" ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, "timestamp": "2024-01-19T10:26:45.080116" } } \ No newline at end of file diff --git a/subworkflows/nf-core/bam_markduplicates_picard/main.nf b/subworkflows/nf-core/bam_markduplicates_picard/main.nf index de8130fb5..2de059b84 100644 --- a/subworkflows/nf-core/bam_markduplicates_picard/main.nf +++ b/subworkflows/nf-core/bam_markduplicates_picard/main.nf @@ -9,7 +9,7 @@ include { BAM_STATS_SAMTOOLS } from '../bam_stats_samtools/main' workflow BAM_MARKDUPLICATES_PICARD { take: - ch_bam // channel: [ val(meta), path(bam) ] + ch_reads // channel: [ val(meta), path(reads) ] ch_fasta // channel: [ path(fasta) ] ch_fai // channel: [ path(fai) ] @@ -17,27 +17,33 @@ workflow BAM_MARKDUPLICATES_PICARD { ch_versions = Channel.empty() - PICARD_MARKDUPLICATES ( ch_bam, ch_fasta, ch_fai ) + PICARD_MARKDUPLICATES ( ch_reads, ch_fasta, ch_fai ) ch_versions = ch_versions.mix(PICARD_MARKDUPLICATES.out.versions.first()) - SAMTOOLS_INDEX ( PICARD_MARKDUPLICATES.out.bam ) + ch_markdup = PICARD_MARKDUPLICATES.out.bam.mix(PICARD_MARKDUPLICATES.out.cram) + + SAMTOOLS_INDEX ( ch_markdup ) ch_versions = ch_versions.mix(SAMTOOLS_INDEX.out.versions.first()) - ch_bam_bai = PICARD_MARKDUPLICATES.out.bam - .join(SAMTOOLS_INDEX.out.bai, by: [0], remainder: true) - .join(SAMTOOLS_INDEX.out.csi, by: [0], remainder: true) - .map{meta, bam, bai, csi -> - if (bai) [ meta, bam, bai ] - else [ meta, bam, csi ] + ch_reads_index = ch_markdup + .join(SAMTOOLS_INDEX.out.bai, by: [0], remainder: true) + .join(SAMTOOLS_INDEX.out.crai, by: [0], remainder: true) + .join(SAMTOOLS_INDEX.out.csi, by: [0], remainder: true) + .map{meta, reads, bai, crai, csi -> + if (bai) [ meta, reads, bai ] + else if (crai) [ meta, reads, crai ] + else [ meta, reads, csi ] } - BAM_STATS_SAMTOOLS ( ch_bam_bai, ch_fasta ) + BAM_STATS_SAMTOOLS ( ch_reads_index, ch_fasta ) ch_versions = ch_versions.mix(BAM_STATS_SAMTOOLS.out.versions) emit: bam = PICARD_MARKDUPLICATES.out.bam // channel: [ val(meta), path(bam) ] - metrics = PICARD_MARKDUPLICATES.out.metrics // channel: [ val(meta), path(bam) ] + cram = PICARD_MARKDUPLICATES.out.cram // channel: [ val(meta), path(cram) ] + metrics = PICARD_MARKDUPLICATES.out.metrics // channel: [ val(meta), path(metrics) ] bai = SAMTOOLS_INDEX.out.bai // channel: [ val(meta), path(bai) ] + crai = SAMTOOLS_INDEX.out.crai // channel: [ val(meta), path(crai) ] csi = SAMTOOLS_INDEX.out.csi // channel: [ val(meta), path(csi) ] stats = BAM_STATS_SAMTOOLS.out.stats // channel: [ val(meta), path(stats) ] diff --git a/subworkflows/nf-core/bam_markduplicates_picard/meta.yml b/subworkflows/nf-core/bam_markduplicates_picard/meta.yml index fe63068e6..433d35b2b 100644 --- a/subworkflows/nf-core/bam_markduplicates_picard/meta.yml +++ b/subworkflows/nf-core/bam_markduplicates_picard/meta.yml @@ -14,13 +14,13 @@ components: - samtools/flagstat - bam_stats_samtools input: - - ch_bam: + - ch_reads: description: | - BAM/CRAM/SAM file - Structure: [ val(meta), path(bam) ] + Sequence reads in BAM/CRAM/SAM format + Structure: [ val(meta), path(reads) ] - ch_fasta: description: | - Reference genome fasta file + Reference genome fasta file required for CRAM input Structure: [ path(fasta) ] - ch_fasta: description: | @@ -29,12 +29,20 @@ input: output: - bam: description: | - processed BAM/CRAM/SAM file + processed BAM/SAM file Structure: [ val(meta), path(bam) ] - bai: description: | - BAM/CRAM/SAM samtools index + BAM/SAM samtools index Structure: [ val(meta), path(bai) ] + - cram: + description: | + processed CRAM file + Structure: [ val(meta), path(cram) ] + - crai: + description: | + CRAM samtools index + Structure: [ val(meta), path(crai) ] - csi: description: | CSI samtools index diff --git a/subworkflows/nf-core/bam_markduplicates_picard/tests/main.nf.test b/subworkflows/nf-core/bam_markduplicates_picard/tests/main.nf.test index bb3ef8f4d..5ef337dc5 100644 --- a/subworkflows/nf-core/bam_markduplicates_picard/tests/main.nf.test +++ b/subworkflows/nf-core/bam_markduplicates_picard/tests/main.nf.test @@ -4,9 +4,19 @@ nextflow_workflow { script "../main.nf" workflow "BAM_MARKDUPLICATES_PICARD" - tag "PICARD_MARKDUPLICATES" - tag "SAMTOOLS_INDEX" - tag "BAM_STATS_SAMTOOLS" + tag "picard" + tag "picard/markduplicates" + tag "subworkflows" + tag "subworkflows_nfcore" + tag "bam_markduplicates_picard" + tag "subworkflows/bam_markduplicates_picard" + tag "subworkflows/bam_stats_samtools" + tag "bam_stats_samtools" + tag "samtools" + tag "samtools/flagstat" + tag "samtools/idxstats" + tag "samtools/index" + tag "samtools/stats" test("sarscov2 - bam") { @@ -69,8 +79,8 @@ nextflow_workflow { assertAll( { assert workflow.success}, { assert snapshot( - path(workflow.out.bam[0][1]), - path(workflow.out.bai[0][1]), + file(workflow.out.cram[0][1]).name, + path(workflow.out.crai[0][1]), path(workflow.out.flagstat[0][1]), path(workflow.out.idxstats[0][1]), path(workflow.out.stats[0][1]), diff --git a/subworkflows/nf-core/bam_markduplicates_picard/tests/main.nf.test.snap b/subworkflows/nf-core/bam_markduplicates_picard/tests/main.nf.test.snap index 2f02f747a..caf4ac8ad 100644 --- a/subworkflows/nf-core/bam_markduplicates_picard/tests/main.nf.test.snap +++ b/subworkflows/nf-core/bam_markduplicates_picard/tests/main.nf.test.snap @@ -1,17 +1,17 @@ { "homo_sapiens - cram": { "content": [ - "test.bam:md5,6641dc05efa8384a061f378d86d922cd", - "test.bam.bai:md5,c41c60d8a94adebe53b6df80b6e90d38", + "test.cram", + "test.cram.crai:md5,78d47ba01ac4e05f3ae1e353902a989e", "test.flagstat:md5,93b0ef463df947ede1f42ff60396c34d", "test.idxstats:md5,e179601fa7b8ebce81ac3765206f6c15", - "test.stats:md5,9ac28e327a7797d7bb6a5922fde59ed1" + "test.stats:md5,c2f74a4d9b2377bcf4f4f184da3801af" ], "meta": { "nf-test": "0.8.4", - "nextflow": "24.01.0" + "nextflow": "23.10.1" }, - "timestamp": "2024-02-13T16:46:16.302755774" + "timestamp": "2024-03-20T20:45:38.364189" }, "sarscov2 - bam": { "content": [ @@ -23,8 +23,8 @@ ], "meta": { "nf-test": "0.8.4", - "nextflow": "24.01.0" + "nextflow": "23.10.1" }, - "timestamp": "2024-02-13T16:46:02.942115679" + "timestamp": "2024-03-21T11:38:08.434529" } } \ No newline at end of file diff --git a/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/main.nf.test b/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/main.nf.test index 7dc05d923..961b5b4ff 100644 --- a/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/main.nf.test +++ b/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/main.nf.test @@ -3,10 +3,16 @@ nextflow_workflow { name "Test Workflow FASTQ_FASTQC_UMITOOLS_FASTP" script "../main.nf" workflow "FASTQ_FASTQC_UMITOOLS_FASTP" + config './nextflow.config' + + tag "subworkflows" + tag "subworkflows_nfcore" + tag "subworkflows/fastq_fastqc_umitools_fastp" + tag "fastq_fastqc_umitools_fastp" + tag "fastqc" + tag "umitools/extract" + tag "fastp" - tag "FASTQC" - tag "UMITOOLS_EXTRACT" - tag "FASTP" test("sarscov2 paired-end [fastq]") { @@ -25,8 +31,10 @@ nextflow_workflow { 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/test_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true) + ] ]) input[1] = skip_fastqc input[2] = with_umi @@ -44,14 +52,503 @@ nextflow_workflow { then { assertAll( { assert workflow.success }, - { assert snapshot(workflow.out.reads).match("reads") }, - { assert snapshot(workflow.out.umi_log).match("umi_log") }, - { assert snapshot(workflow.out.trim_json).match("trim_json") }, - { assert snapshot(workflow.out.trim_reads_fail).match("trim_reads_fail") }, - { assert snapshot(workflow.out.trim_reads_merged).match("trim_reads_merged") }, - { assert snapshot(workflow.out.adapter_seq).match("adapter_seq") }, - { assert snapshot(workflow.out.trim_read_count).match("trim_read_count") }, - { assert snapshot(workflow.out.versions).match("versions") }, + { assert snapshot( + workflow.out.reads, + workflow.out.umi_log, + workflow.out.trim_json, + workflow.out.trim_reads_fail, + workflow.out.trim_reads_merged, + workflow.out.adapter_seq, + workflow.out.trim_read_count, + workflow.out.versions + ).match() + }, + + { assert workflow.out.fastqc_raw_html }, + { assert workflow.out.fastqc_raw_zip }, + { assert workflow.out.trim_html }, + { assert workflow.out.trim_log }, + { assert workflow.out.fastqc_trim_html }, + { assert workflow.out.fastqc_trim_zip } + ) + } + } + + test("skip_fastqc") { + + when { + workflow { + """ + skip_fastqc = true + with_umi = false + skip_umi_extract = false + umi_discard_read = 1 + skip_trimming = false + adapter_fasta = [] + save_trimmed_fail = false + save_merged = false + min_trimmed_reads = 1 + + 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) + ] + ]) + input[1] = skip_fastqc + input[2] = with_umi + input[3] = skip_umi_extract + input[4] = umi_discard_read + input[5] = skip_trimming + input[6] = adapter_fasta + input[7] = save_trimmed_fail + input[8] = save_merged + input[9] = min_trimmed_reads + """ + } + } + + then { + assertAll( + { assert workflow.success }, + { assert snapshot( + workflow.out.reads, + workflow.out.umi_log, + workflow.out.trim_json, + workflow.out.trim_reads_fail, + workflow.out.trim_reads_merged, + workflow.out.adapter_seq, + workflow.out.trim_read_count, + workflow.out.versions + ).match() + }, + + { assert !workflow.out.fastqc_raw_html }, + { assert !workflow.out.fastqc_raw_zip }, + { assert workflow.out.trim_html }, + { assert workflow.out.trim_log }, + { assert !workflow.out.fastqc_trim_html }, + { assert !workflow.out.fastqc_trim_zip } + ) + } + } + + test("with_umi") { + + when { + workflow { + """ + skip_fastqc = false + with_umi = true + skip_umi_extract = false + umi_discard_read = 1 + skip_trimming = false + adapter_fasta = [] + save_trimmed_fail = false + save_merged = false + min_trimmed_reads = 1 + + 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) + ] + ]) + input[1] = skip_fastqc + input[2] = with_umi + input[3] = skip_umi_extract + input[4] = umi_discard_read + input[5] = skip_trimming + input[6] = adapter_fasta + input[7] = save_trimmed_fail + input[8] = save_merged + input[9] = min_trimmed_reads + """ + } + } + + then { + assertAll( + { assert workflow.success }, + { assert snapshot( + workflow.out.reads, + workflow.out.trim_json, + workflow.out.trim_reads_fail, + workflow.out.trim_reads_merged, + workflow.out.adapter_seq, + workflow.out.trim_read_count, + workflow.out.versions + ).match() + }, + + { assert workflow.out.fastqc_raw_html }, + { assert workflow.out.fastqc_raw_zip }, + { assert workflow.out.trim_html }, + { assert workflow.out.trim_log }, + { assert workflow.out.fastqc_trim_html }, + { assert workflow.out.fastqc_trim_zip } + ) + } + } + + + test("skip_umi_extract") { + + when { + workflow { + """ + skip_fastqc = false + with_umi = true + skip_umi_extract = true + umi_discard_read = 1 + skip_trimming = false + adapter_fasta = [] + save_trimmed_fail = false + save_merged = false + min_trimmed_reads = 1 + + 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) + ] + ]) + input[1] = skip_fastqc + input[2] = with_umi + input[3] = skip_umi_extract + input[4] = umi_discard_read + input[5] = skip_trimming + input[6] = adapter_fasta + input[7] = save_trimmed_fail + input[8] = save_merged + input[9] = min_trimmed_reads + """ + } + } + + then { + assertAll( + { assert workflow.success }, + { assert snapshot( + workflow.out.reads, + workflow.out.umi_log, + workflow.out.trim_json, + workflow.out.trim_reads_fail, + workflow.out.trim_reads_merged, + workflow.out.adapter_seq, + workflow.out.trim_read_count, + workflow.out.versions + ).match() + }, + + { assert workflow.out.fastqc_raw_html }, + { assert workflow.out.fastqc_raw_zip }, + { assert workflow.out.trim_html }, + { assert workflow.out.trim_log }, + { assert workflow.out.fastqc_trim_html }, + { assert workflow.out.fastqc_trim_zip } + ) + } + } + + test("umi_discard_read = 2") { + + when { + workflow { + """ + skip_fastqc = false + with_umi = true + skip_umi_extract = true + umi_discard_read = 2 + skip_trimming = false + adapter_fasta = [] + save_trimmed_fail = false + save_merged = false + min_trimmed_reads = 1 + + 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) + ] + ]) + input[1] = skip_fastqc + input[2] = with_umi + input[3] = skip_umi_extract + input[4] = umi_discard_read + input[5] = skip_trimming + input[6] = adapter_fasta + input[7] = save_trimmed_fail + input[8] = save_merged + input[9] = min_trimmed_reads + """ + } + } + + then { + assertAll( + { assert workflow.success }, + { assert snapshot( + workflow.out.reads, + workflow.out.umi_log, + workflow.out.trim_json, + workflow.out.trim_reads_fail, + workflow.out.trim_reads_merged, + workflow.out.adapter_seq, + workflow.out.trim_read_count, + workflow.out.versions + ).match() + }, + + { assert workflow.out.fastqc_raw_html }, + { assert workflow.out.fastqc_raw_zip }, + { assert workflow.out.trim_html }, + { assert workflow.out.trim_log }, + { assert workflow.out.fastqc_trim_html }, + { assert workflow.out.fastqc_trim_zip } + ) + } + } + + test("skip_trimming") { + + when { + workflow { + """ + skip_fastqc = false + with_umi = false + skip_umi_extract = false + umi_discard_read = 1 + skip_trimming = true + adapter_fasta = [] + save_trimmed_fail = false + save_merged = false + min_trimmed_reads = 1 + + 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) + ] + ]) + input[1] = skip_fastqc + input[2] = with_umi + input[3] = skip_umi_extract + input[4] = umi_discard_read + input[5] = skip_trimming + input[6] = adapter_fasta + input[7] = save_trimmed_fail + input[8] = save_merged + input[9] = min_trimmed_reads + """ + } + } + + then { + assertAll( + { assert workflow.success }, + { assert snapshot( + workflow.out.reads.get(0).get(0), // Reads meta map + // Because the input file is passed to the output file, we have to do check the filename only + file(workflow.out.reads.get(0).get(1).get(0)).name, + file(workflow.out.reads.get(0).get(1).get(1)).name, + workflow.out.umi_log, + workflow.out.trim_json, + workflow.out.trim_reads_fail, + workflow.out.trim_reads_merged, + workflow.out.adapter_seq, + workflow.out.trim_read_count, + workflow.out.versions + ).match() + }, + + { assert workflow.out.fastqc_raw_html }, + { assert workflow.out.fastqc_raw_zip }, + { assert !workflow.out.trim_html }, + { assert !workflow.out.trim_log }, + { assert !workflow.out.fastqc_trim_html }, + { assert !workflow.out.fastqc_trim_zip } + ) + } + } + + test("save_trimmed_fail") { + + config './nextflow.save_trimmed.config' + + when { + workflow { + """ + skip_fastqc = false + with_umi = false + skip_umi_extract = false + umi_discard_read = 1 + skip_trimming = false + adapter_fasta = [] + save_trimmed_fail = true + save_merged = false + min_trimmed_reads = 1 + + 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) + ] + ]) + input[1] = skip_fastqc + input[2] = with_umi + input[3] = skip_umi_extract + input[4] = umi_discard_read + input[5] = skip_trimming + input[6] = adapter_fasta + input[7] = save_trimmed_fail + input[8] = save_merged + input[9] = min_trimmed_reads + """ + } + } + + then { + assertAll( + { assert workflow.success }, + { assert snapshot( + workflow.out.reads, + workflow.out.umi_log, + workflow.out.trim_json, + workflow.out.trim_reads_fail, + workflow.out.trim_reads_merged, + workflow.out.adapter_seq, + workflow.out.trim_read_count, + workflow.out.versions + ).match() + }, + + { assert workflow.out.fastqc_raw_html }, + { assert workflow.out.fastqc_raw_zip }, + { assert workflow.out.trim_html }, + { assert workflow.out.trim_log }, + { assert workflow.out.fastqc_trim_html }, + { assert workflow.out.fastqc_trim_zip } + ) + } + } + + test("save_merged") { + + when { + workflow { + """ + skip_fastqc = false + with_umi = false + skip_umi_extract = false + umi_discard_read = 1 + skip_trimming = false + adapter_fasta = [] + save_trimmed_fail = false + save_merged = true + min_trimmed_reads = 1 + + 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) + ] + ]) + input[1] = skip_fastqc + input[2] = with_umi + input[3] = skip_umi_extract + input[4] = umi_discard_read + input[5] = skip_trimming + input[6] = adapter_fasta + input[7] = save_trimmed_fail + input[8] = save_merged + input[9] = min_trimmed_reads + """ + } + } + + then { + assertAll( + { assert workflow.success }, + { assert snapshot( + workflow.out.reads, + workflow.out.umi_log, + workflow.out.trim_json, + workflow.out.trim_reads_fail, + workflow.out.trim_reads_merged, + workflow.out.adapter_seq, + workflow.out.trim_read_count, + workflow.out.versions + ).match() + }, + + { assert workflow.out.fastqc_raw_html }, + { assert workflow.out.fastqc_raw_zip }, + { assert workflow.out.trim_html }, + { assert workflow.out.trim_log }, + { assert workflow.out.fastqc_trim_html }, + { assert workflow.out.fastqc_trim_zip } + ) + } + } + + test("min_trimmed_reads = 26") { + // Subworkflow should stop after FASTP which trims down to 25 reads + + when { + workflow { + """ + skip_fastqc = false + with_umi = false + skip_umi_extract = false + umi_discard_read = 1 + skip_trimming = false + adapter_fasta = [] + save_trimmed_fail = false + save_merged = true + min_trimmed_reads = 26 + + 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) + ] + ]) + input[1] = skip_fastqc + input[2] = with_umi + input[3] = skip_umi_extract + input[4] = umi_discard_read + input[5] = skip_trimming + input[6] = adapter_fasta + input[7] = save_trimmed_fail + input[8] = save_merged + input[9] = min_trimmed_reads + """ + } + } + + then { + assertAll( + { assert workflow.success }, + { assert snapshot( + workflow.out.reads, + workflow.out.umi_log, + workflow.out.trim_json, + workflow.out.trim_reads_fail, + workflow.out.trim_reads_merged, + workflow.out.adapter_seq, + workflow.out.trim_read_count, + workflow.out.versions + ).match() + }, { assert workflow.out.fastqc_raw_html }, { assert workflow.out.fastqc_raw_zip }, diff --git a/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/main.nf.test.snap b/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/main.nf.test.snap index 89ba8da19..3e11d9ec3 100644 --- a/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/main.nf.test.snap +++ b/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/main.nf.test.snap @@ -1,30 +1,186 @@ { - "trim_reads_merged": { + "skip_fastqc": { "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test_1.fastp.fastq.gz:md5,67b2bbae47f073e05a97a9c2edce23c7", + "test_2.fastp.fastq.gz:md5,25cbdca08e2083dbd4f0502de6b62f39" + ] + ] + ], + [ + + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test.fastp.json:md5,1e0f8e27e71728e2b63fc64086be95cd" + ] + ], [ + ], + [ + + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "unspecified" + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + 198 + ] + ], + [ + "versions.yml:md5,85bd0117e5778fff18e3920972a296ad" ] ], "meta": { "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-01-12T08:38:50.041635573" + "timestamp": "2024-03-18T16:53:49.315194" }, - "trim_reads_fail": { + "save_trimmed_fail": { "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test_1.fastp.fastq.gz:md5,6ff32a64c5188b9a9192be1398c262c7", + "test_2.fastp.fastq.gz:md5,db0cb7c9977e94ac2b4b446ebd017a8a" + ] + ] + ], [ + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test.fastp.json:md5,4c3268ddb50ea5b33125984776aa3519" + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test.paired.fail.fastq.gz:md5,409b687c734cedd7a1fec14d316e1366", + "test_1.fail.fastq.gz:md5,4f273cf3159c13f79e8ffae12f5661f6", + "test_2.fail.fastq.gz:md5,f97b9edefb5649aab661fbc9e71fc995" + ] + ] + ], + [ + + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "unspecified" + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + 162 + ] + ], + [ + "versions.yml:md5,85bd0117e5778fff18e3920972a296ad", + "versions.yml:md5,c50aa59475ab901bc6f9a2cf7b1a14e0", + "versions.yml:md5,f3dcaae948e8eed92b4a5557b4c6668e" ] ], "meta": { "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-01-12T08:38:50.033284693" + "timestamp": "2024-03-18T16:51:45.34934" }, - "versions": { + "skip_umi_extract": { "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test_1.fastp.fastq.gz:md5,67b2bbae47f073e05a97a9c2edce23c7", + "test_2.fastp.fastq.gz:md5,25cbdca08e2083dbd4f0502de6b62f39" + ] + ] + ], + [ + + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test.fastp.json:md5,1e0f8e27e71728e2b63fc64086be95cd" + ] + ], + [ + + ], + [ + + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "unspecified" + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + 198 + ] + ], [ "versions.yml:md5,85bd0117e5778fff18e3920972a296ad", "versions.yml:md5,c50aa59475ab901bc6f9a2cf7b1a14e0", @@ -35,10 +191,25 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-01-12T08:38:50.121510557" + "timestamp": "2024-03-18T12:07:40.34249" }, - "trim_json": { + "umi_discard_read = 2": { "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test_1.fastp.fastq.gz:md5,67b2bbae47f073e05a97a9c2edce23c7", + "test_2.fastp.fastq.gz:md5,25cbdca08e2083dbd4f0502de6b62f39" + ] + ] + ], + [ + + ], [ [ { @@ -47,16 +218,81 @@ }, "test.fastp.json:md5,1e0f8e27e71728e2b63fc64086be95cd" ] + ], + [ + + ], + [ + + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "unspecified" + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + 198 + ] + ], + [ + "versions.yml:md5,85bd0117e5778fff18e3920972a296ad", + "versions.yml:md5,c50aa59475ab901bc6f9a2cf7b1a14e0", + "versions.yml:md5,f3dcaae948e8eed92b4a5557b4c6668e" ] ], "meta": { "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-01-12T08:38:50.024410724" + "timestamp": "2024-03-18T12:08:24.141938" }, - "adapter_seq": { + "save_merged": { "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test_1.fastp.fastq.gz:md5,54b726a55e992a869fd3fa778afe1672", + "test_2.fastp.fastq.gz:md5,29d3b33b869f7b63417b8ff07bb128ba" + ] + ] + ], + [ + + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test.fastp.json:md5,b712fd68ed0322f4bec49ff2a5237fcc" + ] + ], + [ + + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test.merged.fastq.gz:md5,c873bb1ab3fa859dcc47306465e749d5" + ] + ], [ [ { @@ -65,15 +301,65 @@ }, "unspecified" ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + 75 + ] + ], + [ + "versions.yml:md5,85bd0117e5778fff18e3920972a296ad", + "versions.yml:md5,c50aa59475ab901bc6f9a2cf7b1a14e0", + "versions.yml:md5,f3dcaae948e8eed92b4a5557b4c6668e" ] ], "meta": { "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-01-12T08:38:50.08674429" + "timestamp": "2024-03-18T12:10:18.546963" }, - "reads": { + "skip_trimming": { + "content": [ + { + "id": "test", + "single_end": false + }, + "test_1.fastq.gz", + "test_2.fastq.gz", + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + "versions.yml:md5,f3dcaae948e8eed92b4a5557b4c6668e" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-03-19T15:49:26.574759" + }, + "sarscov2 paired-end [fastq]": { "content": [ [ [ @@ -86,42 +372,178 @@ "test_2.fastp.fastq.gz:md5,25cbdca08e2083dbd4f0502de6b62f39" ] ] + ], + [ + + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test.fastp.json:md5,1e0f8e27e71728e2b63fc64086be95cd" + ] + ], + [ + + ], + [ + + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "unspecified" + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + 198 + ] + ], + [ + "versions.yml:md5,85bd0117e5778fff18e3920972a296ad", + "versions.yml:md5,c50aa59475ab901bc6f9a2cf7b1a14e0", + "versions.yml:md5,f3dcaae948e8eed92b4a5557b4c6668e" ] ], "meta": { "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-01-12T08:38:49.994419936" + "timestamp": "2024-03-18T16:53:39.139038" }, - "umi_log": { + "min_trimmed_reads = 26": { "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test_1.fastp.fastq.gz:md5,54b726a55e992a869fd3fa778afe1672", + "test_2.fastp.fastq.gz:md5,29d3b33b869f7b63417b8ff07bb128ba" + ] + ] + ], [ + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test.fastp.json:md5,b712fd68ed0322f4bec49ff2a5237fcc" + ] + ], + [ + + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test.merged.fastq.gz:md5,c873bb1ab3fa859dcc47306465e749d5" + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "unspecified" + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + 75 + ] + ], + [ + "versions.yml:md5,85bd0117e5778fff18e3920972a296ad", + "versions.yml:md5,c50aa59475ab901bc6f9a2cf7b1a14e0", + "versions.yml:md5,f3dcaae948e8eed92b4a5557b4c6668e" ] ], "meta": { "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-01-12T08:38:50.017720214" + "timestamp": "2024-03-18T11:52:23.849945" }, - "trim_read_count": { + "with_umi": { "content": [ [ [ { "id": "test", - "single_end": false + "single_end": true }, - 198 + "test.fastp.fastq.gz:md5,ba8c6c3a7ce718d9a2c5857e2edf53bc" + ] + ], + [ + [ + { + "id": "test", + "single_end": true + }, + "test.fastp.json:md5,d39c5c6d9a2e35fb60d26ced46569af6" ] + ], + [ + + ], + [ + + ], + [ + [ + { + "id": "test", + "single_end": true + }, + "" + ] + ], + [ + [ + { + "id": "test", + "single_end": true + }, + 99 + ] + ], + [ + "versions.yml:md5,01f264f78de3c6d893c449cc6d3cd721", + "versions.yml:md5,85bd0117e5778fff18e3920972a296ad", + "versions.yml:md5,c50aa59475ab901bc6f9a2cf7b1a14e0", + "versions.yml:md5,f3dcaae948e8eed92b4a5557b4c6668e" ] ], "meta": { "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-01-12T08:38:50.102326089" + "timestamp": "2024-03-18T17:31:09.193212" } } \ No newline at end of file From c544945dde7aac23cf0b888a8fd59acbec4387b8 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Wed, 3 Apr 2024 20:15:29 +0100 Subject: [PATCH 274/634] Delocalise pseudo quant workflow --- modules.json | 15 +- .../quantify_pseudo_alignment/nextflow.config | 67 ------- .../tests/nextflow.config | 9 - .../quantify_pseudo_alignment/main.nf | 3 - .../quantify_pseudo_alignment/meta.yml | 174 ++++++++++++++++++ .../tests/main.nf.test | 44 ++--- .../tests/main.nf.test.snap | 122 ++---------- .../quantify_pseudo_alignment/tests/tags.yml | 2 + workflows/rnaseq/main.nf | 4 +- 9 files changed, 229 insertions(+), 211 deletions(-) delete mode 100644 subworkflows/local/quantify_pseudo_alignment/nextflow.config delete mode 100644 subworkflows/local/quantify_pseudo_alignment/tests/nextflow.config rename subworkflows/{local => nf-core}/quantify_pseudo_alignment/main.nf (96%) create mode 100644 subworkflows/nf-core/quantify_pseudo_alignment/meta.yml rename subworkflows/{local => nf-core}/quantify_pseudo_alignment/tests/main.nf.test (78%) rename subworkflows/{local => nf-core}/quantify_pseudo_alignment/tests/main.nf.test.snap (52%) create mode 100644 subworkflows/nf-core/quantify_pseudo_alignment/tests/tags.yml diff --git a/modules.json b/modules.json index 9f8734c97..9bd5a1e41 100644 --- a/modules.json +++ b/modules.json @@ -33,7 +33,7 @@ "custom/tx2gene": { "branch": "master", "git_sha": "ec155021a9104441bf6a9bae3b55d1b5b0bfdb3a", - "installed_by": ["modules"] + "installed_by": ["modules", "quantify_pseudo_alignment"] }, "dupradar": { "branch": "master", @@ -88,7 +88,7 @@ "kallisto/quant": { "branch": "master", "git_sha": "de5811dd9ca15af1e131806001bcaae909e42021", - "installed_by": ["modules"] + "installed_by": ["modules", "quantify_pseudo_alignment"] }, "multiqc": { "branch": "master", @@ -168,7 +168,7 @@ "salmon/quant": { "branch": "master", "git_sha": "03a8562231d575c313266c193a980594b941e3ea", - "installed_by": ["fastq_subsample_fq_salmon", "modules"] + "installed_by": ["fastq_subsample_fq_salmon", "modules", "quantify_pseudo_alignment"] }, "samtools/flagstat": { "branch": "master", @@ -227,7 +227,7 @@ "summarizedexperiment/summarizedexperiment": { "branch": "master", "git_sha": "05a252a330273c67795aed2b18e86c53c4c9382a", - "installed_by": ["modules"] + "installed_by": ["modules", "quantify_pseudo_alignment"] }, "trimgalore": { "branch": "master", @@ -237,7 +237,7 @@ "tximeta/tximport": { "branch": "master", "git_sha": "03a8562231d575c313266c193a980594b941e3ea", - "installed_by": ["modules"] + "installed_by": ["modules", "quantify_pseudo_alignment"] }, "ucsc/bedclip": { "branch": "master", @@ -327,6 +327,11 @@ "git_sha": "003920c7f9a8ae19b69a97171922880220bedf56", "installed_by": ["subworkflows"] }, + "quantify_pseudo_alignment": { + "branch": "master", + "git_sha": "bca4985339b3ba879f457565806deb2377873b83", + "installed_by": ["subworkflows"] + }, "utils_nextflow_pipeline": { "branch": "master", "git_sha": "5caf7640a9ef1d18d765d55339be751bb0969dfa", diff --git a/subworkflows/local/quantify_pseudo_alignment/nextflow.config b/subworkflows/local/quantify_pseudo_alignment/nextflow.config deleted file mode 100644 index 16c0c50d3..000000000 --- a/subworkflows/local/quantify_pseudo_alignment/nextflow.config +++ /dev/null @@ -1,67 +0,0 @@ -if (!params.skip_pseudo_alignment && params.pseudo_aligner == 'salmon') { - process { - withName: '.*:QUANTIFY_PSEUDO_ALIGNMENT:SALMON_QUANT' { - ext.args = { params.extra_salmon_quant_args ?: '' } - publishDir = [ - path: { "${params.outdir}/${params.pseudo_aligner}" }, - mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') || filename.endsWith('_meta_info.json') ? null : filename } - ] - } - } -} - -if (!params.skip_pseudo_alignment && params.pseudo_aligner == 'kallisto') { - process { - withName: '.*:QUANTIFY_PSEUDO_ALIGNMENT:KALLISTO_QUANT' { - ext.args = params.extra_kallisto_quant_args ?: '' - publishDir = [ - path: { "${params.outdir}/${params.pseudo_aligner}" }, - mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') || filename.endsWith('.run_info.json') || filename.endsWith('.log') ? null : filename } - ] - } - } -} - -if (!params.skip_pseudo_alignment && params.pseudo_aligner) { - process { - withName: '.*:QUANTIFY_PSEUDO_ALIGNMENT:CUSTOM_TX2GENE' { - publishDir = [ - path: { "${params.outdir}/${params.pseudo_aligner}" }, - mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } - ] - } - - withName: '.*:QUANTIFY_PSEUDO_ALIGNMENT:TXIMETA_TXIMPORT' { - ext.prefix = { "${quant_type}.merged" } - publishDir = [ - path: { "${params.outdir}/${params.pseudo_aligner}" }, - mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } - ] - } - - withName: '.*:QUANTIFY_PSEUDO_ALIGNMENT:SE_.*' { - ext.args = '--assay_names counts,abundance' - publishDir = [ - path: { "${params.outdir}/${params.pseudo_aligner}" }, - mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') || filename.endsWith('.log') ? null : filename } - ] - } - withName: '.*:QUANTIFY_PSEUDO_ALIGNMENT:SE_GENE' { - ext.prefix = { "${params.pseudo_aligner}.merged.gene_counts" } - } - withName: '.*:QUANTIFY_PSEUDO_ALIGNMENT:SE_GENE_SCALED' { - ext.prefix = { "${params.pseudo_aligner}.merged.gene_counts_scaled" } - } - withName: '.*:QUANTIFY_PSEUDO_ALIGNMENT:SE_GENE_LENGTH_SCALED' { - ext.prefix = { "${params.pseudo_aligner}.merged.gene_counts_length_scaled" } - } - withName: '.*:QUANTIFY_PSEUDO_ALIGNMENT:SE_TRANSCRIPT' { - ext.prefix = { "${params.pseudo_aligner}.merged.transcript_counts" } - } - } -} diff --git a/subworkflows/local/quantify_pseudo_alignment/tests/nextflow.config b/subworkflows/local/quantify_pseudo_alignment/tests/nextflow.config deleted file mode 100644 index 701741690..000000000 --- a/subworkflows/local/quantify_pseudo_alignment/tests/nextflow.config +++ /dev/null @@ -1,9 +0,0 @@ -process { - withName: 'SALMON_INDEX' { - ext.args = { [ - params.gencode ? '--gencode' : '', - params.pseudo_aligner_kmer_size ? "-k ${params.pseudo_aligner_kmer_size}": '', - '--keepDuplicates' - ].join(' ').trim() } - } -} diff --git a/subworkflows/local/quantify_pseudo_alignment/main.nf b/subworkflows/nf-core/quantify_pseudo_alignment/main.nf similarity index 96% rename from subworkflows/local/quantify_pseudo_alignment/main.nf rename to subworkflows/nf-core/quantify_pseudo_alignment/main.nf index 1bd422396..b245b9bad 100644 --- a/subworkflows/local/quantify_pseudo_alignment/main.nf +++ b/subworkflows/nf-core/quantify_pseudo_alignment/main.nf @@ -117,9 +117,6 @@ workflow QUANTIFY_PSEUDO_ALIGNMENT { merged_gene_rds = SE_GENE.out.rds // path: *.rds merged_gene_rds_length_scaled = SE_GENE_LENGTH_SCALED.out.rds // path: *.rds merged_gene_rds_scaled = SE_GENE_SCALED.out.rds // path: *.rds - - merged_counts_transcript = TXIMETA_TXIMPORT.out.counts_transcript // path: *.transcript_counts.tsv - merged_tpm_transcript = TXIMETA_TXIMPORT.out.tpm_transcript // path: *.transcript_tpm.tsv merged_transcript_rds = SE_TRANSCRIPT.out.rds // path: *.rds versions = ch_versions // channel: [ versions.yml ] diff --git a/subworkflows/nf-core/quantify_pseudo_alignment/meta.yml b/subworkflows/nf-core/quantify_pseudo_alignment/meta.yml new file mode 100644 index 000000000..419bd3cc3 --- /dev/null +++ b/subworkflows/nf-core/quantify_pseudo_alignment/meta.yml @@ -0,0 +1,174 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/subworkflows/yaml-schema.json +name: "quantify_pseudo_alignment" +description: Perform quantification with Salmon or Kallisto to produce count tables and SummarizedExperiment objects +keywords: + - rnaseq + - quantification + - kallisto + - salmon +components: + - custom/tx2gene + - kallisto/quant + - salmon/quant + - summarizedexperiment/summarizedexperiment + - tximeta/tximport +input: + - meta: + type: map + description: | + Groovy Map containing study-level sample sheet information. e.g. [ + id:'SRP1234' ]. + - samplesheet: + type: file + description: | + Sample sheet, to be baked into the `colData` of summarizedexperiment + objects. + pattern: "*.{csv,tsv}" + - reads: + type: file + description: | + Channel with input FastQ files of size 1 and 2 for single-end and + paired-end data, respectively. OR a transcriptome-level BAM file if + running Salmon in alignment mode. + - index: + type: path + description: | + Path to Salmon or Kallisto index in the tool-appropriate form. + - gtf: + type: file + description: | + Channel with features in GTF format. Passed to pseudoaligners and used + to generate transcript/ gene mappings. + - gtf_id_attribute: + type: string + description: | + Attribute in GTF file corresponding to the gene identifier. + - gtf_extra_attribute: + type: string + description: GTF alternative gene attribute (e.g. gene_name) + - pseudo_aligner: + type: string + description: Pseudoaligner, `kallisto` or `salmon`. + - alignment_mode: + type: boolean + description: | + If running Salmon, run in alignment mode (`true` or `false`). + - lib_type: + type: string + description: String to override Salmon library type. + - kallisto_quant_fraglen: + type: integer + description: | + Estimated fragment length. Required if running Kallisto with + single-ended reads. + - kallisto_quant_fraglen_sd: + type: integer + description: | + Estimated standard error for fragment length required by Kallisto in + single-end mode. + +output: + - meta: + type: map + description: | + Groovy Map containing study-level sample sheet information. e.g. [ + id:'SRP1234' ]. + - results: + type: file + description: | + Channel containing sample-wise results directories from the + pseudoaligner. + - multiqc: + type: file + description: | + Channel containing those pseudoaligner outputs readable by MultiQC for + passing to workflow-level reporting. + - tpm_gene: + type: file + description: | + Gene-level matrix of abundance values in TPM. + pattern: "*.gene_tpm.tsv" + - counts_gene: + type: file + description: | + Gene-level matrix of unadjusted estimated counts from tximport + (`countsFromAbundance = 'no'`). + pattern: "*.gene_counts.tsv" + - lengths_gene: + type: file + description: | + Gene-level matrix of length values for modelling in downstream + analysis. + pattern: "gene_lengths.tsv" + - counts_gene_length_scaled: + type: file + description: | + Gene-level matrix of estimated counts, generated from abundance (TPM) + values by scaling to library size, additionally scaled using the + average transcript length, averaged over samples and to library size, + using tximport `countsFromAbundance = 'lengthScaledTPM'`. + pattern: "*.gene_counts_length_scaled.tsv" + - counts_gene_scaled: + type: file + description: | + Gene-level matrix of estimated counts, generated from abundance (TPM) + values by scaling to library size with tximport `countsFromAbundance = + 'scaledTPM'`. + pattern: "*.gene_counts_length_scaled.tsv" + - tpm_transcript: + type: file + description: | + Transcript-level matrix of abundance values in TPM. + pattern: "*.transcript_tpm.tsv" + - counts_transcript: + type: file + description: | + Transcript-level matrix of unadjusted estimated counts from tximport + (`countsFromAbundance = 'no'`). + pattern: "*.transcript_counts.tsv" + - lengths_transcript: + type: file + description: | + Transcript-level matrix of length values for modelling in downstream + analysis. + pattern: "transcript_lengths.tsv" + - merged_gene_rds: + type: file + description: | + Serialised SummarizedExperiment object containing gene level TPM + abundance values and counts generated from tximport with + `countsFromAbundance = 'no'`. + pattern: "*.rds" + - merged_gene_rds_length_scaled: + type: file + description: | + Serialised SummarizedExperiment object containing gene level TPM + abundance values and counts generated from tximport with + `countsFromAbundance='lengthScaledTPM'`. + pattern: "*.rds" + - merged_gene_rds_scaled: + type: file + description: | + Serialised SummarizedExperiment object containing gene level TPM + abundance values and counts generated from tximport with + `countsFromAbundance='scaledTPM'`. + pattern: "*.rds" + - merged_transcript_rds: + type: file + description: | + Serialised SummarizedExperiment object containing transcript level TPM + abundance values and counts generated from tximport with + `countsFromAbundance = 'no'`. + pattern: "*.rds" + - versions: + type: file + description: | + File containing software versions + Structure: [ path(versions.yml) ] + pattern: "versions.yml" +authors: + - "@pinin4fjords" + - "@adamrtalbot" +maintainers: + - "@pinin4fjords" + - "@adamrtalbot" diff --git a/subworkflows/local/quantify_pseudo_alignment/tests/main.nf.test b/subworkflows/nf-core/quantify_pseudo_alignment/tests/main.nf.test similarity index 78% rename from subworkflows/local/quantify_pseudo_alignment/tests/main.nf.test rename to subworkflows/nf-core/quantify_pseudo_alignment/tests/main.nf.test index cdeeb0206..26441b1ec 100644 --- a/subworkflows/local/quantify_pseudo_alignment/tests/main.nf.test +++ b/subworkflows/nf-core/quantify_pseudo_alignment/tests/main.nf.test @@ -4,13 +4,17 @@ nextflow_workflow { script "../main.nf" workflow "QUANTIFY_PSEUDO_ALIGNMENT" - tag "SALMON_INDEX" - tag "SALMON_QUANT" - tag "KALLISTO_INDEX" - tag "KALLISTO_QUANT" - tag "CUSTOM_TX2GENE" - tag "TXIMETA_TXIMPORT" - tag "SUMMARIZEDEXPERIMENT_SUMMARIZEDEXPERIMENT" + tag "subworkflows" + tag "subworkflows_nfcore" + tag "subworkflows/quantify_pseudo_alignment" + + tag "salmon/index" + tag "salmon/quant" + tag "kallisto/index" + tag "kallisto/quant" + tag "custom/tx2gene" + tag "tximeta/tximport" + tag "summarizedexperiment/summarizedexperiment" test("salmon") { @@ -31,7 +35,7 @@ nextflow_workflow { """ input[0] = [ [ id: 'samplesheet' ], - file(params.pipelines_testdata_base_path + '/csv/samplesheet_micro.csv', checkIfExists: true) + file(params.modules_testdata_base_path + '/genomics/sarscov2/illumina/csv/samplesheet_micro.csv', checkIfExists: true) ] input[1] = [ [ id: 'test' ], @@ -64,13 +68,13 @@ nextflow_workflow { workflow.out.counts_gene_length_scaled, workflow.out.tpm_transcript, workflow.out.lengths_transcript, - workflow.out.merged_gene_rds, - workflow.out.merged_gene_rds_length_scaled, - workflow.out.merged_gene_rds_scaled, workflow.out.merged_counts_transcript, workflow.out.merged_tpm_transcript, - workflow.out.merged_transcript_rds, - workflow.out.versions + workflow.out.versions, + file(workflow.out.merged_gene_rds[0][1]).name, + file(workflow.out.merged_gene_rds_length_scaled[0][1]).name, + file(workflow.out.merged_gene_rds_scaled[0][1]).name, + file(workflow.out.merged_transcript_rds[0][1]).name ).match() } ) @@ -100,7 +104,7 @@ nextflow_workflow { """ input[0] = [ [ id: 'samplesheet' ], - file(params.pipelines_testdata_base_path + '/csv/samplesheet_micro.csv', checkIfExists: true) + file(params.modules_testdata_base_path + '/genomics/sarscov2/illumina/csv/samplesheet_micro.csv', checkIfExists: true) ] input[1] = [ [ id: 'test' ], @@ -133,13 +137,11 @@ nextflow_workflow { workflow.out.counts_gene_length_scaled, workflow.out.tpm_transcript, workflow.out.lengths_transcript, - workflow.out.merged_gene_rds, - workflow.out.merged_gene_rds_length_scaled, - workflow.out.merged_gene_rds_scaled, - workflow.out.merged_counts_transcript, - workflow.out.merged_tpm_transcript, - workflow.out.merged_transcript_rds, - workflow.out.versions + workflow.out.versions, + file(workflow.out.merged_gene_rds[0][1]).name, + file(workflow.out.merged_gene_rds_length_scaled[0][1]).name, + file(workflow.out.merged_gene_rds_scaled[0][1]).name, + file(workflow.out.merged_transcript_rds[0][1]).name ).match() } ) diff --git a/subworkflows/local/quantify_pseudo_alignment/tests/main.nf.test.snap b/subworkflows/nf-core/quantify_pseudo_alignment/tests/main.nf.test.snap similarity index 52% rename from subworkflows/local/quantify_pseudo_alignment/tests/main.nf.test.snap rename to subworkflows/nf-core/quantify_pseudo_alignment/tests/main.nf.test.snap index 3c82cb297..90d1e421c 100644 --- a/subworkflows/local/quantify_pseudo_alignment/tests/main.nf.test.snap +++ b/subworkflows/nf-core/quantify_pseudo_alignment/tests/main.nf.test.snap @@ -49,66 +49,22 @@ "all_samples.transcript_lengths.tsv:md5,131952a97905469ab012f0f46e52405c" ] ], - [ - [ - { - "id": "all_samples" - }, - "all_samples.SummarizedExperiment.rds:md5,ba4ff9c05eea56d71bb2de77ae960f9c" - ] - ], - [ - [ - { - "id": "all_samples" - }, - "all_samples.SummarizedExperiment.rds:md5,d8a8f1b178acd49dc04c6dabbc00bbab" - ] - ], - [ - [ - { - "id": "all_samples" - }, - "all_samples.SummarizedExperiment.rds:md5,d535f7e33c2a7fd98aeedbfe23fc9cfe" - ] - ], - [ - [ - { - "id": "all_samples" - }, - "all_samples.transcript_counts.tsv:md5,c5a43880cd87d00ef40de5df9ca3afa7" - ] - ], - [ - [ - { - "id": "all_samples" - }, - "all_samples.transcript_tpm.tsv:md5,de458e1c2a579e53bd7671c5176f5d0c" - ] - ], - [ - [ - { - "id": "all_samples" - }, - "all_samples.SummarizedExperiment.rds:md5,a681c620612c2496ea8294af38c7443e" - ] - ], [ "versions.yml:md5,b44caeec65491d47e098c7ddaf024b96", - "versions.yml:md5,dbf98ec672f75a683c28dcf4121364d2", + "versions.yml:md5,d5243289a32cde9e90e20f1a202bb566", "versions.yml:md5,e9e7d18c3de83f1113fb1ff0c55d35ed", "versions.yml:md5,ea39658f8685118d81d42acd451e66ea" - ] + ], + "all_samples.SummarizedExperiment.rds", + "all_samples.SummarizedExperiment.rds", + "all_samples.SummarizedExperiment.rds", + "all_samples.SummarizedExperiment.rds" ], "meta": { "nf-test": "0.8.4", - "nextflow": "24.02.0" + "nextflow": "23.10.1" }, - "timestamp": "2024-03-12T10:33:14.836979" + "timestamp": "2024-04-03T17:29:13.487959" }, "salmon": { "content": [ @@ -160,65 +116,23 @@ "all_samples.transcript_lengths.tsv:md5,f39a15fea56a5a8e5776dcdda0c8f102" ] ], - [ - [ - { - "id": "all_samples" - }, - "all_samples.SummarizedExperiment.rds:md5,504f040f8916a0cb0d462fa4991ec4ee" - ] - ], - [ - [ - { - "id": "all_samples" - }, - "all_samples.SummarizedExperiment.rds:md5,f3082e7eba40fa82d018d3d3b94b83b7" - ] - ], - [ - [ - { - "id": "all_samples" - }, - "all_samples.SummarizedExperiment.rds:md5,477703064bec63ece90942f25121bda2" - ] - ], - [ - [ - { - "id": "all_samples" - }, - "all_samples.transcript_counts.tsv:md5,f68224a34261b93f432ef4f97dfabe15" - ] - ], - [ - [ - { - "id": "all_samples" - }, - "all_samples.transcript_tpm.tsv:md5,e0c16bf083ebb88bcfaf27cfba12d3e9" - ] - ], - [ - [ - { - "id": "all_samples" - }, - "all_samples.SummarizedExperiment.rds:md5,8d52eafb09e5c901ed384c7e5403a0bc" - ] - ], + null, + null, [ "versions.yml:md5,4c3564e1ba17d8ce2b0ee784251ddd87", "versions.yml:md5,b44caeec65491d47e098c7ddaf024b96", - "versions.yml:md5,dbf98ec672f75a683c28dcf4121364d2", + "versions.yml:md5,d5243289a32cde9e90e20f1a202bb566", "versions.yml:md5,e9e7d18c3de83f1113fb1ff0c55d35ed" - ] + ], + "all_samples.SummarizedExperiment.rds", + "all_samples.SummarizedExperiment.rds", + "all_samples.SummarizedExperiment.rds", + "all_samples.SummarizedExperiment.rds" ], "meta": { "nf-test": "0.8.4", - "nextflow": "24.02.0" + "nextflow": "23.10.1" }, - "timestamp": "2024-03-12T10:31:15.969548" + "timestamp": "2024-04-03T17:28:43.74907" } } \ No newline at end of file diff --git a/subworkflows/nf-core/quantify_pseudo_alignment/tests/tags.yml b/subworkflows/nf-core/quantify_pseudo_alignment/tests/tags.yml new file mode 100644 index 000000000..f4e48df36 --- /dev/null +++ b/subworkflows/nf-core/quantify_pseudo_alignment/tests/tags.yml @@ -0,0 +1,2 @@ +subworkflows/quantify_pseudo_alignment: + - subworkflows/nf-core/quantify_pseudo_alignment/** diff --git a/workflows/rnaseq/main.nf b/workflows/rnaseq/main.nf index 08402cd0e..b679a4b34 100755 --- a/workflows/rnaseq/main.nf +++ b/workflows/rnaseq/main.nf @@ -17,8 +17,6 @@ include { MULTIQC_CUSTOM_BIOTYPE } from '../../modules/local/multiqc // include { ALIGN_STAR } from '../../subworkflows/local/align_star' include { QUANTIFY_RSEM } from '../../subworkflows/local/quantify_rsem' -include { QUANTIFY_PSEUDO_ALIGNMENT as QUANTIFY_STAR_SALMON } from '../../subworkflows/local/quantify_pseudo_alignment' -include { QUANTIFY_PSEUDO_ALIGNMENT } from '../../subworkflows/local/quantify_pseudo_alignment' include { checkSamplesAfterGrouping } from '../../subworkflows/local/utils_nfcore_rnaseq_pipeline' include { multiqcTsvFromList } from '../../subworkflows/local/utils_nfcore_rnaseq_pipeline' @@ -69,6 +67,8 @@ include { BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS as BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS include { BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS as BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS_TRANSCRIPTOME } from '../../subworkflows/nf-core/bam_dedup_stats_samtools_umitools' include { BEDGRAPH_BEDCLIP_BEDGRAPHTOBIGWIG as BEDGRAPH_BEDCLIP_BEDGRAPHTOBIGWIG_FORWARD } from '../../subworkflows/nf-core/bedgraph_bedclip_bedgraphtobigwig' include { BEDGRAPH_BEDCLIP_BEDGRAPHTOBIGWIG as BEDGRAPH_BEDCLIP_BEDGRAPHTOBIGWIG_REVERSE } from '../../subworkflows/nf-core/bedgraph_bedclip_bedgraphtobigwig' +include { QUANTIFY_PSEUDO_ALIGNMENT as QUANTIFY_STAR_SALMON } from '../../subworkflows/nf-core/quantify_pseudo_alignment' +include { QUANTIFY_PSEUDO_ALIGNMENT } from '../../subworkflows/nf-core/quantify_pseudo_alignment' /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ From 9fcad99282af1fbcb5ed4227fb8174ede3847c77 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Wed, 3 Apr 2024 20:18:09 +0100 Subject: [PATCH 275/634] Update changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index eded09804..ed8c7d9c9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -62,6 +62,7 @@ Thank you to everyone else that has contributed by reporting bugs, enhancements - [PR #1261](https://github.com/nf-core/rnaseq/pull/1261) - Add more tests for PREPARE_GENOME - [PR #1265](https://github.com/nf-core/rnaseq/pull/1265) - Small updates noticed during code review - [PR #1266](https://github.com/nf-core/rnaseq/pull/1266) - Delete unecessary tags from nf.test files for modules and subworkflows +- [PR #1278](https://github.com/nf-core/rnaseq/pull/1278) - Delocalise pseudo quant workflow ### Parameters From cf5a43b75aaeeb8edc34db6736a749abf31d3d38 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Thu, 4 Apr 2024 10:36:07 +0100 Subject: [PATCH 276/634] Bump tximport for reproducible versions --- modules.json | 2 +- modules/nf-core/tximeta/tximport/main.nf | 2 +- .../tximeta/tximport/templates/tximport.r | 1 - .../tximeta/tximport/tests/main.nf.test | 9 +- .../tximeta/tximport/tests/main.nf.test.snap | 146 +++++++++--------- 5 files changed, 82 insertions(+), 78 deletions(-) diff --git a/modules.json b/modules.json index 9bd5a1e41..a1e38a008 100644 --- a/modules.json +++ b/modules.json @@ -236,7 +236,7 @@ }, "tximeta/tximport": { "branch": "master", - "git_sha": "03a8562231d575c313266c193a980594b941e3ea", + "git_sha": "c275c3baac6df8f0c7c500760a0cf014ce7b525d", "installed_by": ["modules", "quantify_pseudo_alignment"] }, "ucsc/bedclip": { diff --git a/modules/nf-core/tximeta/tximport/main.nf b/modules/nf-core/tximeta/tximport/main.nf index af3cf44fe..b0cce8536 100644 --- a/modules/nf-core/tximeta/tximport/main.nf +++ b/modules/nf-core/tximeta/tximport/main.nf @@ -41,7 +41,7 @@ process TXIMETA_TXIMPORT { cat <<-END_VERSIONS > versions.yml "${task.process}": - r: \$( R --version | sed '1!d; s/.*version //; s/ .*//' ) + bioconductor-tximeta: \$(Rscript -e "library(tximeta); cat(as.character(packageVersion('tximeta')))") END_VERSIONS """ } diff --git a/modules/nf-core/tximeta/tximport/templates/tximport.r b/modules/nf-core/tximeta/tximport/templates/tximport.r index 722d0daf4..92f1a9e8d 100755 --- a/modules/nf-core/tximeta/tximport/templates/tximport.r +++ b/modules/nf-core/tximeta/tximport/templates/tximport.r @@ -210,7 +210,6 @@ tximeta.version <- as.character(packageVersion('tximeta')) writeLines( c( '"${task.process}":', - paste(' r-base:', r.version), paste(' bioconductor-tximeta:', tximeta.version) ), 'versions.yml') diff --git a/modules/nf-core/tximeta/tximport/tests/main.nf.test b/modules/nf-core/tximeta/tximport/tests/main.nf.test index 8f27bc928..5cf6af83e 100644 --- a/modules/nf-core/tximeta/tximport/tests/main.nf.test +++ b/modules/nf-core/tximeta/tximport/tests/main.nf.test @@ -3,8 +3,13 @@ nextflow_process { name "Test Process TXIMETA_TXIMPORT" script "../main.nf" process "TXIMETA_TXIMPORT" - tag "UNTAR" - tag "CUSTOM_TX2GENE" + + tag "modules" + tag "modules_nfcore" + tag "custom/tx2gene" + tag "tximeta" + tag "tximeta/tximport" + tag "untar" test("saccharomyces_cerevisiae - kallisto - gtf") { diff --git a/modules/nf-core/tximeta/tximport/tests/main.nf.test.snap b/modules/nf-core/tximeta/tximport/tests/main.nf.test.snap index d2b120587..fe972d09e 100644 --- a/modules/nf-core/tximeta/tximport/tests/main.nf.test.snap +++ b/modules/nf-core/tximeta/tximport/tests/main.nf.test.snap @@ -1,21 +1,4 @@ { - "tpm_gene_salmon - stub": { - "content": [ - [ - [ - [ - - ], - "[].gene_tpm.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-02-09T13:31:05.203366546" - }, "tpm_transcript_salmon - stub": { "content": [ [ @@ -31,7 +14,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-02-09T13:31:05.238815422" + "timestamp": "2024-03-11T11:35:54.169267" }, "lengths_gene_kallisto - stub": { "content": [ @@ -48,7 +31,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-02-09T13:30:39.169986951" + "timestamp": "2024-03-11T11:35:20.838048" }, "counts_gene_scaled_salmon - stub": { "content": [ @@ -65,7 +48,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-02-09T13:31:05.224281753" + "timestamp": "2024-03-11T11:35:54.139493" }, "counts_gene_kallisto - stub": { "content": [ @@ -82,7 +65,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-02-09T13:30:39.141099674" + "timestamp": "2024-03-11T11:35:20.823542" }, "lengths_transcript_salmon - stub": { "content": [ @@ -99,19 +82,19 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-02-09T13:31:05.255932841" + "timestamp": "2024-03-11T11:35:54.157265" }, "versions_salmon - stub": { "content": [ [ - "versions.yml:md5,721fc5c3bfa6792e8982f2662908b836" + "versions.yml:md5,6ff317cceddc686f84d79cb976e1e28b" ] ], "meta": { "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-02-09T13:31:05.26533312" + "timestamp": "2024-03-11T11:35:54.175019" }, "counts_gene_length_scaled_kallisto": { "content": [ @@ -128,7 +111,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-02-09T13:30:30.246852231" + "timestamp": "2024-03-11T11:35:04.116135" }, "lengths_transcript_salmon": { "content": [ @@ -145,7 +128,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-02-09T13:30:55.717395151" + "timestamp": "2024-03-11T11:35:37.664041" }, "counts_transcript_kallisto": { "content": [ @@ -162,24 +145,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-02-09T13:30:30.267269829" - }, - "tpm_gene_kallisto - stub": { - "content": [ - [ - [ - [ - - ], - "[].gene_tpm.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-02-09T13:30:39.133021984" + "timestamp": "2024-03-11T11:35:04.162273" }, "counts_transcript_kallisto - stub": { "content": [ @@ -196,7 +162,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-02-09T13:30:39.191224569" + "timestamp": "2024-03-11T11:35:20.834743" }, "counts_transcript_salmon": { "content": [ @@ -213,7 +179,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-02-09T13:30:55.711194061" + "timestamp": "2024-03-11T11:35:37.652813" }, "lengths_gene_salmon - stub": { "content": [ @@ -230,7 +196,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-02-09T13:31:05.231479353" + "timestamp": "2024-03-11T11:35:54.151603" }, "tpm_gene_salmon": { "content": [ @@ -247,7 +213,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-02-09T13:30:55.676380215" + "timestamp": "2024-03-11T11:35:37.669821" }, "tpm_transcript_salmon": { "content": [ @@ -264,7 +230,24 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-02-09T13:30:55.705920722" + "timestamp": "2024-03-11T11:35:37.674895" + }, + "tpm_gene_salmon - stub": { + "content": [ + [ + [ + [ + + ], + "[].gene_tpm.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-03-11T11:35:54.163303" }, "lengths_transcript_kallisto": { "content": [ @@ -281,7 +264,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-02-09T13:30:30.274231188" + "timestamp": "2024-03-11T11:35:04.1686" }, "counts_gene_length_scaled_kallisto - stub": { "content": [ @@ -298,7 +281,24 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-02-09T13:30:39.151132722" + "timestamp": "2024-03-11T11:35:20.827742" + }, + "tpm_gene_kallisto - stub": { + "content": [ + [ + [ + [ + + ], + "[].gene_tpm.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-03-11T11:35:20.846428" }, "counts_transcript_salmon - stub": { "content": [ @@ -315,7 +315,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-02-09T13:31:05.247380891" + "timestamp": "2024-03-11T11:35:54.145564" }, "counts_gene_scaled_kallisto": { "content": [ @@ -332,7 +332,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-02-09T13:30:30.251356171" + "timestamp": "2024-03-11T11:35:04.159638" }, "counts_gene_salmon": { "content": [ @@ -349,19 +349,19 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-02-09T13:30:55.685043764" + "timestamp": "2024-03-11T11:35:37.636972" }, "versions_salmon": { "content": [ [ - "versions.yml:md5,a6476f297a8e9396f4cfc151cd7f25ed" + "versions.yml:md5,6ff317cceddc686f84d79cb976e1e28b" ] ], "meta": { "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-02-09T13:30:55.73053927" + "timestamp": "2024-03-11T11:35:37.680246" }, "counts_gene_length_scaled_salmon": { "content": [ @@ -378,7 +378,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-02-09T13:30:55.689830703" + "timestamp": "2024-03-11T11:35:37.642848" }, "tpm_gene_kallisto": { "content": [ @@ -395,7 +395,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-02-09T13:30:30.240422122" + "timestamp": "2024-03-11T11:35:04.172531" }, "lengths_transcript_kallisto - stub": { "content": [ @@ -412,7 +412,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-02-09T13:30:39.201244158" + "timestamp": "2024-03-11T11:35:20.842475" }, "lengths_gene_kallisto": { "content": [ @@ -429,7 +429,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-02-09T13:30:30.25633664" + "timestamp": "2024-03-11T11:35:04.16551" }, "counts_gene_scaled_kallisto - stub": { "content": [ @@ -446,7 +446,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-02-09T13:30:39.160095512" + "timestamp": "2024-03-11T11:35:20.831518" }, "tpm_transcript_kallisto": { "content": [ @@ -463,7 +463,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-02-09T13:30:30.2613952" + "timestamp": "2024-03-11T11:35:04.177955" }, "lengths_gene_salmon": { "content": [ @@ -480,7 +480,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-02-09T13:30:55.700155703" + "timestamp": "2024-03-11T11:35:37.658624" }, "counts_gene_length_scaled_salmon - stub": { "content": [ @@ -497,7 +497,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-02-09T13:31:05.217581894" + "timestamp": "2024-03-11T11:35:54.13369" }, "counts_gene_kallisto": { "content": [ @@ -514,19 +514,19 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-02-09T13:30:30.243833201" + "timestamp": "2024-03-11T11:35:04.113216" }, "versions_kallisto": { "content": [ [ - "versions.yml:md5,a6476f297a8e9396f4cfc151cd7f25ed" + "versions.yml:md5,6ff317cceddc686f84d79cb976e1e28b" ] ], "meta": { "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-02-09T13:30:30.280881588" + "timestamp": "2024-03-11T11:35:04.181904" }, "counts_gene_salmon - stub": { "content": [ @@ -543,19 +543,19 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-02-09T13:31:05.210758835" + "timestamp": "2024-03-11T11:35:54.127272" }, "versions_kallisto - stub": { "content": [ [ - "versions.yml:md5,721fc5c3bfa6792e8982f2662908b836" + "versions.yml:md5,6ff317cceddc686f84d79cb976e1e28b" ] ], "meta": { "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-02-09T13:30:39.210884587" + "timestamp": "2024-03-11T11:35:20.86053" }, "tpm_transcript_kallisto - stub": { "content": [ @@ -572,7 +572,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-02-09T13:30:39.18051906" + "timestamp": "2024-03-11T11:35:20.856075" }, "counts_gene_scaled_salmon": { "content": [ @@ -589,6 +589,6 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-02-09T13:30:55.694826803" + "timestamp": "2024-03-11T11:35:37.647691" } -} +} \ No newline at end of file From 2ba5358a24a46f4793fbba6eaf8a531f5bbf99f6 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Thu, 4 Apr 2024 10:48:16 +0100 Subject: [PATCH 277/634] Bump subworkflow for linting --- modules.json | 4 +- modules/nf-core/picard/markduplicates/main.nf | 23 ++++---- .../nf-core/picard/markduplicates/meta.yml | 10 +++- .../picard/markduplicates/tests/main.nf.test | 26 +++------ .../markduplicates/tests/main.nf.test.snap | 56 +++++++++++++++---- .../nf-core/bam_markduplicates_picard/main.nf | 28 ++++++---- .../bam_markduplicates_picard/meta.yml | 20 +++++-- .../tests/main.nf.test | 20 +++++-- .../tests/main.nf.test.snap | 14 ++--- 9 files changed, 130 insertions(+), 71 deletions(-) diff --git a/modules.json b/modules.json index a1e38a008..48bc856ac 100644 --- a/modules.json +++ b/modules.json @@ -97,7 +97,7 @@ }, "picard/markduplicates": { "branch": "master", - "git_sha": "ec833ac4c29db6005d18baccf3306f557c46b006", + "git_sha": "1943aa60f7490c3d6740e8872e6e69122ccc8087", "installed_by": ["bam_markduplicates_picard"] }, "preseq/lcextrap": { @@ -280,7 +280,7 @@ }, "bam_markduplicates_picard": { "branch": "master", - "git_sha": "f4596fe0bdc096cf53ec4497e83defdb3a94ff62", + "git_sha": "1943aa60f7490c3d6740e8872e6e69122ccc8087", "installed_by": ["subworkflows"] }, "bam_rseqc": { diff --git a/modules/nf-core/picard/markduplicates/main.nf b/modules/nf-core/picard/markduplicates/main.nf index 80930cc41..ad0b29636 100644 --- a/modules/nf-core/picard/markduplicates/main.nf +++ b/modules/nf-core/picard/markduplicates/main.nf @@ -8,13 +8,14 @@ process PICARD_MARKDUPLICATES { 'biocontainers/picard:3.1.1--hdfd78af_0' }" input: - tuple val(meta), path(bam) + tuple val(meta), path(reads) tuple val(meta2), path(fasta) tuple val(meta3), path(fai) output: - tuple val(meta), path("*.bam") , emit: bam - tuple val(meta), path("*.bai") , optional:true, emit: bai + tuple val(meta), path("*.bam") , emit: bam, optional: true + tuple val(meta), path("*.bai") , emit: bai, optional: true + tuple val(meta), path("*.cram"), emit: cram, optional: true tuple val(meta), path("*.metrics.txt"), emit: metrics path "versions.yml" , emit: versions @@ -24,6 +25,8 @@ process PICARD_MARKDUPLICATES { script: def args = task.ext.args ?: '' def prefix = task.ext.prefix ?: "${meta.id}" + def suffix = task.ext.suffix ?: "${reads.getExtension()}" + def reference = fasta ? "--REFERENCE_SEQUENCE ${fasta}" : "" def avail_mem = 3072 if (!task.memory) { log.info '[Picard MarkDuplicates] Available memory not known - defaulting to 3GB. Specify process memory requirements to change this.' @@ -31,16 +34,16 @@ process PICARD_MARKDUPLICATES { avail_mem = (task.memory.mega*0.8).intValue() } - if ("$bam" == "${prefix}.bam") error "Input and output names are the same, use \"task.ext.prefix\" to disambiguate!" + if ("$reads" == "${prefix}.${suffix}") error "Input and output names are the same, use \"task.ext.prefix\" to disambiguate!" """ picard \\ -Xmx${avail_mem}M \\ MarkDuplicates \\ $args \\ - --INPUT $bam \\ - --OUTPUT ${prefix}.bam \\ - --REFERENCE_SEQUENCE $fasta \\ + --INPUT $reads \\ + --OUTPUT ${prefix}.${suffix} \\ + $reference \\ --METRICS_FILE ${prefix}.MarkDuplicates.metrics.txt cat <<-END_VERSIONS > versions.yml @@ -51,10 +54,10 @@ process PICARD_MARKDUPLICATES { stub: def prefix = task.ext.prefix ?: "${meta.id}" - if ("$bam" == "${prefix}.bam") error "Input and output names are the same, use \"task.ext.prefix\" to disambiguate!" + def suffix = task.ext.suffix ?: "${reads.getExtension()}" + if ("$reads" == "${prefix}.${suffix}") error "Input and output names are the same, use \"task.ext.prefix\" to disambiguate!" """ - touch ${prefix}.bam - touch ${prefix}.bam.bai + touch ${prefix}.${suffix} touch ${prefix}.MarkDuplicates.metrics.txt cat <<-END_VERSIONS > versions.yml diff --git a/modules/nf-core/picard/markduplicates/meta.yml b/modules/nf-core/picard/markduplicates/meta.yml index 1ab90c075..1f0ffe16c 100644 --- a/modules/nf-core/picard/markduplicates/meta.yml +++ b/modules/nf-core/picard/markduplicates/meta.yml @@ -21,9 +21,9 @@ input: description: | Groovy Map containing sample information e.g. [ id:'test', single_end:false ] - - bam: + - reads: type: file - description: BAM file + description: Sequence reads file, can be SAM/BAM/CRAM format pattern: "*.{bam,cram,sam}" - meta2: type: map @@ -32,7 +32,7 @@ input: e.g. [ id:'genome' ] - fasta: type: file - description: Reference genome fasta file + description: Reference genome fasta file, required for CRAM input pattern: "*.{fasta,fa}" - meta3: type: map @@ -57,6 +57,10 @@ output: type: file description: An optional BAM index file. If desired, --CREATE_INDEX must be passed as a flag pattern: "*.{bai}" + - cram: + type: file + description: Output CRAM file + pattern: "*.{cram}" - metrics: type: file description: Duplicate metrics file generated by picard diff --git a/modules/nf-core/picard/markduplicates/tests/main.nf.test b/modules/nf-core/picard/markduplicates/tests/main.nf.test index f0caf0fa3..e3e97f6cc 100644 --- a/modules/nf-core/picard/markduplicates/tests/main.nf.test +++ b/modules/nf-core/picard/markduplicates/tests/main.nf.test @@ -4,6 +4,10 @@ nextflow_process { script "../main.nf" process "PICARD_MARKDUPLICATES" config "./nextflow.config" + tag "modules" + tag "modules_nfcore" + tag "picard" + tag "picard/markduplicates" test("sarscov2 [unsorted bam]") { @@ -14,14 +18,8 @@ nextflow_process { [ id:'test', single_end:false ], // meta map file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.bam', checkIfExists: true) ]) - input[1] = Channel.of([ - [ id:'genome' ], - file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) - ]) - input[2] = Channel.of([ - [ id:'genome' ], - file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.fai', checkIfExists: true) - ]) + input[1] = [ [:], [] ] + input[2] = [ [:], [] ] """ } } @@ -45,14 +43,8 @@ nextflow_process { [ id:'test', single_end:false ], // meta map file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true) ]) - input[1] = Channel.of([ - [ id:'genome' ], - file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) - ]) - input[2] = Channel.of([ - [ id:'genome' ], - file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.fai', checkIfExists: true) - ]) + input[1] = [ [:], [] ] + input[2] = [ [:], [] ] """ } } @@ -91,7 +83,7 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot(file(process.out.bam[0][1]).name).match("cram_name") }, + { assert snapshot(file(process.out.cram[0][1]).name).match("cram_name") }, { assert snapshot(path(process.out.metrics.get(0).get(1)).readLines()[0..2]).match("cram_metrics") }, { assert snapshot(process.out.versions).match("cram_versions") } ) diff --git a/modules/nf-core/picard/markduplicates/tests/main.nf.test.snap b/modules/nf-core/picard/markduplicates/tests/main.nf.test.snap index 31c9130dc..eb17111e4 100644 --- a/modules/nf-core/picard/markduplicates/tests/main.nf.test.snap +++ b/modules/nf-core/picard/markduplicates/tests/main.nf.test.snap @@ -5,39 +5,59 @@ "versions.yml:md5,b699af51b1956f3810f8a7c066e0ab17" ] ], - "timestamp": "2024-01-19T10:26:45.092349" + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-03-20T15:31:50.928021" }, "unsorted_bam_name": { "content": [ "test.marked.bam" ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, "timestamp": "2024-01-19T10:26:28.100755" }, "cram_metrics": { "content": [ [ "## htsjdk.samtools.metrics.StringHeader", - "# MarkDuplicates --INPUT test.paired_end.sorted.cram --OUTPUT test.marked.bam --METRICS_FILE test.marked.MarkDuplicates.metrics.txt --ASSUME_SORT_ORDER queryname --REFERENCE_SEQUENCE genome.fasta --MAX_SEQUENCES_FOR_DISK_READ_ENDS_MAP 50000 --MAX_FILE_HANDLES_FOR_READ_ENDS_MAP 8000 --SORTING_COLLECTION_SIZE_RATIO 0.25 --TAG_DUPLICATE_SET_MEMBERS false --REMOVE_SEQUENCING_DUPLICATES false --TAGGING_POLICY DontTag --CLEAR_DT true --DUPLEX_UMI false --FLOW_MODE false --FLOW_QUALITY_SUM_STRATEGY false --USE_END_IN_UNPAIRED_READS false --USE_UNPAIRED_CLIPPED_END false --UNPAIRED_END_UNCERTAINTY 0 --FLOW_SKIP_FIRST_N_FLOWS 0 --FLOW_Q_IS_KNOWN_END false --FLOW_EFFECTIVE_QUALITY_THRESHOLD 15 --ADD_PG_TAG_TO_READS true --REMOVE_DUPLICATES false --ASSUME_SORTED false --DUPLICATE_SCORING_STRATEGY SUM_OF_BASE_QUALITIES --PROGRAM_RECORD_ID MarkDuplicates --PROGRAM_GROUP_NAME MarkDuplicates --READ_NAME_REGEX --OPTICAL_DUPLICATE_PIXEL_DISTANCE 100 --MAX_OPTICAL_DUPLICATE_SET_SIZE 300000 --VERBOSITY INFO --QUIET false --VALIDATION_STRINGENCY STRICT --COMPRESSION_LEVEL 5 --MAX_RECORDS_IN_RAM 500000 --CREATE_INDEX false --CREATE_MD5_FILE false --help false --version false --showHidden false --USE_JDK_DEFLATER false --USE_JDK_INFLATER false", + "# MarkDuplicates --INPUT test.paired_end.sorted.cram --OUTPUT test.marked.cram --METRICS_FILE test.marked.MarkDuplicates.metrics.txt --ASSUME_SORT_ORDER queryname --REFERENCE_SEQUENCE genome.fasta --MAX_SEQUENCES_FOR_DISK_READ_ENDS_MAP 50000 --MAX_FILE_HANDLES_FOR_READ_ENDS_MAP 8000 --SORTING_COLLECTION_SIZE_RATIO 0.25 --TAG_DUPLICATE_SET_MEMBERS false --REMOVE_SEQUENCING_DUPLICATES false --TAGGING_POLICY DontTag --CLEAR_DT true --DUPLEX_UMI false --FLOW_MODE false --FLOW_QUALITY_SUM_STRATEGY false --USE_END_IN_UNPAIRED_READS false --USE_UNPAIRED_CLIPPED_END false --UNPAIRED_END_UNCERTAINTY 0 --FLOW_SKIP_FIRST_N_FLOWS 0 --FLOW_Q_IS_KNOWN_END false --FLOW_EFFECTIVE_QUALITY_THRESHOLD 15 --ADD_PG_TAG_TO_READS true --REMOVE_DUPLICATES false --ASSUME_SORTED false --DUPLICATE_SCORING_STRATEGY SUM_OF_BASE_QUALITIES --PROGRAM_RECORD_ID MarkDuplicates --PROGRAM_GROUP_NAME MarkDuplicates --READ_NAME_REGEX --OPTICAL_DUPLICATE_PIXEL_DISTANCE 100 --MAX_OPTICAL_DUPLICATE_SET_SIZE 300000 --VERBOSITY INFO --QUIET false --VALIDATION_STRINGENCY STRICT --COMPRESSION_LEVEL 5 --MAX_RECORDS_IN_RAM 500000 --CREATE_INDEX false --CREATE_MD5_FILE false --help false --version false --showHidden false --USE_JDK_DEFLATER false --USE_JDK_INFLATER false", "## htsjdk.samtools.metrics.StringHeader" ] ], - "timestamp": "2024-01-19T10:27:03.253071" + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-03-20T15:25:47.518152" }, "sorted_bam_metrics": { "content": [ [ "## htsjdk.samtools.metrics.StringHeader", - "# MarkDuplicates --INPUT test.paired_end.sorted.bam --OUTPUT test.marked.bam --METRICS_FILE test.marked.MarkDuplicates.metrics.txt --ASSUME_SORT_ORDER queryname --REFERENCE_SEQUENCE genome.fasta --MAX_SEQUENCES_FOR_DISK_READ_ENDS_MAP 50000 --MAX_FILE_HANDLES_FOR_READ_ENDS_MAP 8000 --SORTING_COLLECTION_SIZE_RATIO 0.25 --TAG_DUPLICATE_SET_MEMBERS false --REMOVE_SEQUENCING_DUPLICATES false --TAGGING_POLICY DontTag --CLEAR_DT true --DUPLEX_UMI false --FLOW_MODE false --FLOW_QUALITY_SUM_STRATEGY false --USE_END_IN_UNPAIRED_READS false --USE_UNPAIRED_CLIPPED_END false --UNPAIRED_END_UNCERTAINTY 0 --FLOW_SKIP_FIRST_N_FLOWS 0 --FLOW_Q_IS_KNOWN_END false --FLOW_EFFECTIVE_QUALITY_THRESHOLD 15 --ADD_PG_TAG_TO_READS true --REMOVE_DUPLICATES false --ASSUME_SORTED false --DUPLICATE_SCORING_STRATEGY SUM_OF_BASE_QUALITIES --PROGRAM_RECORD_ID MarkDuplicates --PROGRAM_GROUP_NAME MarkDuplicates --READ_NAME_REGEX --OPTICAL_DUPLICATE_PIXEL_DISTANCE 100 --MAX_OPTICAL_DUPLICATE_SET_SIZE 300000 --VERBOSITY INFO --QUIET false --VALIDATION_STRINGENCY STRICT --COMPRESSION_LEVEL 5 --MAX_RECORDS_IN_RAM 500000 --CREATE_INDEX false --CREATE_MD5_FILE false --help false --version false --showHidden false --USE_JDK_DEFLATER false --USE_JDK_INFLATER false", + "# MarkDuplicates --INPUT test.paired_end.sorted.bam --OUTPUT test.marked.bam --METRICS_FILE test.marked.MarkDuplicates.metrics.txt --ASSUME_SORT_ORDER queryname --MAX_SEQUENCES_FOR_DISK_READ_ENDS_MAP 50000 --MAX_FILE_HANDLES_FOR_READ_ENDS_MAP 8000 --SORTING_COLLECTION_SIZE_RATIO 0.25 --TAG_DUPLICATE_SET_MEMBERS false --REMOVE_SEQUENCING_DUPLICATES false --TAGGING_POLICY DontTag --CLEAR_DT true --DUPLEX_UMI false --FLOW_MODE false --FLOW_QUALITY_SUM_STRATEGY false --USE_END_IN_UNPAIRED_READS false --USE_UNPAIRED_CLIPPED_END false --UNPAIRED_END_UNCERTAINTY 0 --FLOW_SKIP_FIRST_N_FLOWS 0 --FLOW_Q_IS_KNOWN_END false --FLOW_EFFECTIVE_QUALITY_THRESHOLD 15 --ADD_PG_TAG_TO_READS true --REMOVE_DUPLICATES false --ASSUME_SORTED false --DUPLICATE_SCORING_STRATEGY SUM_OF_BASE_QUALITIES --PROGRAM_RECORD_ID MarkDuplicates --PROGRAM_GROUP_NAME MarkDuplicates --READ_NAME_REGEX --OPTICAL_DUPLICATE_PIXEL_DISTANCE 100 --MAX_OPTICAL_DUPLICATE_SET_SIZE 300000 --VERBOSITY INFO --QUIET false --VALIDATION_STRINGENCY STRICT --COMPRESSION_LEVEL 5 --MAX_RECORDS_IN_RAM 500000 --CREATE_INDEX false --CREATE_MD5_FILE false --help false --version false --showHidden false --USE_JDK_DEFLATER false --USE_JDK_INFLATER false", "## htsjdk.samtools.metrics.StringHeader" ] ], - "timestamp": "2024-01-19T10:26:45.086503" + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-03-21T11:39:10.318331" }, "cram_name": { "content": [ - "test.marked.bam" + "test.marked.cram" ], - "timestamp": "2024-01-19T10:27:03.241617" + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-03-20T15:25:47.459663" }, "cram_versions": { "content": [ @@ -45,6 +65,10 @@ "versions.yml:md5,b699af51b1956f3810f8a7c066e0ab17" ] ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, "timestamp": "2024-01-19T10:27:03.26989" }, "unsorted_bam_versions": { @@ -53,22 +77,34 @@ "versions.yml:md5,b699af51b1956f3810f8a7c066e0ab17" ] ], - "timestamp": "2024-01-19T10:26:28.159071" + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-03-20T15:31:24.040403" }, "unsorted_bam_metrics": { "content": [ [ "## htsjdk.samtools.metrics.StringHeader", - "# MarkDuplicates --INPUT test.paired_end.bam --OUTPUT test.marked.bam --METRICS_FILE test.marked.MarkDuplicates.metrics.txt --ASSUME_SORT_ORDER queryname --REFERENCE_SEQUENCE genome.fasta --MAX_SEQUENCES_FOR_DISK_READ_ENDS_MAP 50000 --MAX_FILE_HANDLES_FOR_READ_ENDS_MAP 8000 --SORTING_COLLECTION_SIZE_RATIO 0.25 --TAG_DUPLICATE_SET_MEMBERS false --REMOVE_SEQUENCING_DUPLICATES false --TAGGING_POLICY DontTag --CLEAR_DT true --DUPLEX_UMI false --FLOW_MODE false --FLOW_QUALITY_SUM_STRATEGY false --USE_END_IN_UNPAIRED_READS false --USE_UNPAIRED_CLIPPED_END false --UNPAIRED_END_UNCERTAINTY 0 --FLOW_SKIP_FIRST_N_FLOWS 0 --FLOW_Q_IS_KNOWN_END false --FLOW_EFFECTIVE_QUALITY_THRESHOLD 15 --ADD_PG_TAG_TO_READS true --REMOVE_DUPLICATES false --ASSUME_SORTED false --DUPLICATE_SCORING_STRATEGY SUM_OF_BASE_QUALITIES --PROGRAM_RECORD_ID MarkDuplicates --PROGRAM_GROUP_NAME MarkDuplicates --READ_NAME_REGEX --OPTICAL_DUPLICATE_PIXEL_DISTANCE 100 --MAX_OPTICAL_DUPLICATE_SET_SIZE 300000 --VERBOSITY INFO --QUIET false --VALIDATION_STRINGENCY STRICT --COMPRESSION_LEVEL 5 --MAX_RECORDS_IN_RAM 500000 --CREATE_INDEX false --CREATE_MD5_FILE false --help false --version false --showHidden false --USE_JDK_DEFLATER false --USE_JDK_INFLATER false", + "# MarkDuplicates --INPUT test.paired_end.bam --OUTPUT test.marked.bam --METRICS_FILE test.marked.MarkDuplicates.metrics.txt --ASSUME_SORT_ORDER queryname --MAX_SEQUENCES_FOR_DISK_READ_ENDS_MAP 50000 --MAX_FILE_HANDLES_FOR_READ_ENDS_MAP 8000 --SORTING_COLLECTION_SIZE_RATIO 0.25 --TAG_DUPLICATE_SET_MEMBERS false --REMOVE_SEQUENCING_DUPLICATES false --TAGGING_POLICY DontTag --CLEAR_DT true --DUPLEX_UMI false --FLOW_MODE false --FLOW_QUALITY_SUM_STRATEGY false --USE_END_IN_UNPAIRED_READS false --USE_UNPAIRED_CLIPPED_END false --UNPAIRED_END_UNCERTAINTY 0 --FLOW_SKIP_FIRST_N_FLOWS 0 --FLOW_Q_IS_KNOWN_END false --FLOW_EFFECTIVE_QUALITY_THRESHOLD 15 --ADD_PG_TAG_TO_READS true --REMOVE_DUPLICATES false --ASSUME_SORTED false --DUPLICATE_SCORING_STRATEGY SUM_OF_BASE_QUALITIES --PROGRAM_RECORD_ID MarkDuplicates --PROGRAM_GROUP_NAME MarkDuplicates --READ_NAME_REGEX --OPTICAL_DUPLICATE_PIXEL_DISTANCE 100 --MAX_OPTICAL_DUPLICATE_SET_SIZE 300000 --VERBOSITY INFO --QUIET false --VALIDATION_STRINGENCY STRICT --COMPRESSION_LEVEL 5 --MAX_RECORDS_IN_RAM 500000 --CREATE_INDEX false --CREATE_MD5_FILE false --help false --version false --showHidden false --USE_JDK_DEFLATER false --USE_JDK_INFLATER false", "## htsjdk.samtools.metrics.StringHeader" ] ], - "timestamp": "2024-01-19T10:26:28.143979" + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-03-21T10:51:12.831787" }, "sorted_bam_name": { "content": [ "test.marked.bam" ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, "timestamp": "2024-01-19T10:26:45.080116" } } \ No newline at end of file diff --git a/subworkflows/nf-core/bam_markduplicates_picard/main.nf b/subworkflows/nf-core/bam_markduplicates_picard/main.nf index de8130fb5..2de059b84 100644 --- a/subworkflows/nf-core/bam_markduplicates_picard/main.nf +++ b/subworkflows/nf-core/bam_markduplicates_picard/main.nf @@ -9,7 +9,7 @@ include { BAM_STATS_SAMTOOLS } from '../bam_stats_samtools/main' workflow BAM_MARKDUPLICATES_PICARD { take: - ch_bam // channel: [ val(meta), path(bam) ] + ch_reads // channel: [ val(meta), path(reads) ] ch_fasta // channel: [ path(fasta) ] ch_fai // channel: [ path(fai) ] @@ -17,27 +17,33 @@ workflow BAM_MARKDUPLICATES_PICARD { ch_versions = Channel.empty() - PICARD_MARKDUPLICATES ( ch_bam, ch_fasta, ch_fai ) + PICARD_MARKDUPLICATES ( ch_reads, ch_fasta, ch_fai ) ch_versions = ch_versions.mix(PICARD_MARKDUPLICATES.out.versions.first()) - SAMTOOLS_INDEX ( PICARD_MARKDUPLICATES.out.bam ) + ch_markdup = PICARD_MARKDUPLICATES.out.bam.mix(PICARD_MARKDUPLICATES.out.cram) + + SAMTOOLS_INDEX ( ch_markdup ) ch_versions = ch_versions.mix(SAMTOOLS_INDEX.out.versions.first()) - ch_bam_bai = PICARD_MARKDUPLICATES.out.bam - .join(SAMTOOLS_INDEX.out.bai, by: [0], remainder: true) - .join(SAMTOOLS_INDEX.out.csi, by: [0], remainder: true) - .map{meta, bam, bai, csi -> - if (bai) [ meta, bam, bai ] - else [ meta, bam, csi ] + ch_reads_index = ch_markdup + .join(SAMTOOLS_INDEX.out.bai, by: [0], remainder: true) + .join(SAMTOOLS_INDEX.out.crai, by: [0], remainder: true) + .join(SAMTOOLS_INDEX.out.csi, by: [0], remainder: true) + .map{meta, reads, bai, crai, csi -> + if (bai) [ meta, reads, bai ] + else if (crai) [ meta, reads, crai ] + else [ meta, reads, csi ] } - BAM_STATS_SAMTOOLS ( ch_bam_bai, ch_fasta ) + BAM_STATS_SAMTOOLS ( ch_reads_index, ch_fasta ) ch_versions = ch_versions.mix(BAM_STATS_SAMTOOLS.out.versions) emit: bam = PICARD_MARKDUPLICATES.out.bam // channel: [ val(meta), path(bam) ] - metrics = PICARD_MARKDUPLICATES.out.metrics // channel: [ val(meta), path(bam) ] + cram = PICARD_MARKDUPLICATES.out.cram // channel: [ val(meta), path(cram) ] + metrics = PICARD_MARKDUPLICATES.out.metrics // channel: [ val(meta), path(metrics) ] bai = SAMTOOLS_INDEX.out.bai // channel: [ val(meta), path(bai) ] + crai = SAMTOOLS_INDEX.out.crai // channel: [ val(meta), path(crai) ] csi = SAMTOOLS_INDEX.out.csi // channel: [ val(meta), path(csi) ] stats = BAM_STATS_SAMTOOLS.out.stats // channel: [ val(meta), path(stats) ] diff --git a/subworkflows/nf-core/bam_markduplicates_picard/meta.yml b/subworkflows/nf-core/bam_markduplicates_picard/meta.yml index fe63068e6..433d35b2b 100644 --- a/subworkflows/nf-core/bam_markduplicates_picard/meta.yml +++ b/subworkflows/nf-core/bam_markduplicates_picard/meta.yml @@ -14,13 +14,13 @@ components: - samtools/flagstat - bam_stats_samtools input: - - ch_bam: + - ch_reads: description: | - BAM/CRAM/SAM file - Structure: [ val(meta), path(bam) ] + Sequence reads in BAM/CRAM/SAM format + Structure: [ val(meta), path(reads) ] - ch_fasta: description: | - Reference genome fasta file + Reference genome fasta file required for CRAM input Structure: [ path(fasta) ] - ch_fasta: description: | @@ -29,12 +29,20 @@ input: output: - bam: description: | - processed BAM/CRAM/SAM file + processed BAM/SAM file Structure: [ val(meta), path(bam) ] - bai: description: | - BAM/CRAM/SAM samtools index + BAM/SAM samtools index Structure: [ val(meta), path(bai) ] + - cram: + description: | + processed CRAM file + Structure: [ val(meta), path(cram) ] + - crai: + description: | + CRAM samtools index + Structure: [ val(meta), path(crai) ] - csi: description: | CSI samtools index diff --git a/subworkflows/nf-core/bam_markduplicates_picard/tests/main.nf.test b/subworkflows/nf-core/bam_markduplicates_picard/tests/main.nf.test index bb3ef8f4d..5ef337dc5 100644 --- a/subworkflows/nf-core/bam_markduplicates_picard/tests/main.nf.test +++ b/subworkflows/nf-core/bam_markduplicates_picard/tests/main.nf.test @@ -4,9 +4,19 @@ nextflow_workflow { script "../main.nf" workflow "BAM_MARKDUPLICATES_PICARD" - tag "PICARD_MARKDUPLICATES" - tag "SAMTOOLS_INDEX" - tag "BAM_STATS_SAMTOOLS" + tag "picard" + tag "picard/markduplicates" + tag "subworkflows" + tag "subworkflows_nfcore" + tag "bam_markduplicates_picard" + tag "subworkflows/bam_markduplicates_picard" + tag "subworkflows/bam_stats_samtools" + tag "bam_stats_samtools" + tag "samtools" + tag "samtools/flagstat" + tag "samtools/idxstats" + tag "samtools/index" + tag "samtools/stats" test("sarscov2 - bam") { @@ -69,8 +79,8 @@ nextflow_workflow { assertAll( { assert workflow.success}, { assert snapshot( - path(workflow.out.bam[0][1]), - path(workflow.out.bai[0][1]), + file(workflow.out.cram[0][1]).name, + path(workflow.out.crai[0][1]), path(workflow.out.flagstat[0][1]), path(workflow.out.idxstats[0][1]), path(workflow.out.stats[0][1]), diff --git a/subworkflows/nf-core/bam_markduplicates_picard/tests/main.nf.test.snap b/subworkflows/nf-core/bam_markduplicates_picard/tests/main.nf.test.snap index 2f02f747a..caf4ac8ad 100644 --- a/subworkflows/nf-core/bam_markduplicates_picard/tests/main.nf.test.snap +++ b/subworkflows/nf-core/bam_markduplicates_picard/tests/main.nf.test.snap @@ -1,17 +1,17 @@ { "homo_sapiens - cram": { "content": [ - "test.bam:md5,6641dc05efa8384a061f378d86d922cd", - "test.bam.bai:md5,c41c60d8a94adebe53b6df80b6e90d38", + "test.cram", + "test.cram.crai:md5,78d47ba01ac4e05f3ae1e353902a989e", "test.flagstat:md5,93b0ef463df947ede1f42ff60396c34d", "test.idxstats:md5,e179601fa7b8ebce81ac3765206f6c15", - "test.stats:md5,9ac28e327a7797d7bb6a5922fde59ed1" + "test.stats:md5,c2f74a4d9b2377bcf4f4f184da3801af" ], "meta": { "nf-test": "0.8.4", - "nextflow": "24.01.0" + "nextflow": "23.10.1" }, - "timestamp": "2024-02-13T16:46:16.302755774" + "timestamp": "2024-03-20T20:45:38.364189" }, "sarscov2 - bam": { "content": [ @@ -23,8 +23,8 @@ ], "meta": { "nf-test": "0.8.4", - "nextflow": "24.01.0" + "nextflow": "23.10.1" }, - "timestamp": "2024-02-13T16:46:02.942115679" + "timestamp": "2024-03-21T11:38:08.434529" } } \ No newline at end of file From e54864b8bcb008b0a512b0f23a091800360fd1fe Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Thu, 4 Apr 2024 10:59:15 +0100 Subject: [PATCH 278/634] Restore missing files --- .../picard/markduplicates/tests/tags.yml | 2 + .../nf-core/tximeta/tximport/tests/tags.yml | 2 + .../bam_markduplicates_picard/tests/tags.yml | 2 + .../quantify_pseudo_alignment/nextflow.config | 67 +++++++++++++++++++ 4 files changed, 73 insertions(+) create mode 100644 modules/nf-core/picard/markduplicates/tests/tags.yml create mode 100644 modules/nf-core/tximeta/tximport/tests/tags.yml create mode 100644 subworkflows/nf-core/bam_markduplicates_picard/tests/tags.yml create mode 100644 subworkflows/nf-core/quantify_pseudo_alignment/nextflow.config diff --git a/modules/nf-core/picard/markduplicates/tests/tags.yml b/modules/nf-core/picard/markduplicates/tests/tags.yml new file mode 100644 index 000000000..4f213d620 --- /dev/null +++ b/modules/nf-core/picard/markduplicates/tests/tags.yml @@ -0,0 +1,2 @@ +picard/markduplicates: + - modules/nf-core/picard/markduplicates/** diff --git a/modules/nf-core/tximeta/tximport/tests/tags.yml b/modules/nf-core/tximeta/tximport/tests/tags.yml new file mode 100644 index 000000000..fc96a89e0 --- /dev/null +++ b/modules/nf-core/tximeta/tximport/tests/tags.yml @@ -0,0 +1,2 @@ +tximeta/tximport: + - "modules/nf-core/tximeta/tximport/**" diff --git a/subworkflows/nf-core/bam_markduplicates_picard/tests/tags.yml b/subworkflows/nf-core/bam_markduplicates_picard/tests/tags.yml new file mode 100644 index 000000000..10b852706 --- /dev/null +++ b/subworkflows/nf-core/bam_markduplicates_picard/tests/tags.yml @@ -0,0 +1,2 @@ +subworkflows/bam_markduplicates_picard: + - subworkflows/nf-core/bam_markduplicates_picard/** diff --git a/subworkflows/nf-core/quantify_pseudo_alignment/nextflow.config b/subworkflows/nf-core/quantify_pseudo_alignment/nextflow.config new file mode 100644 index 000000000..16c0c50d3 --- /dev/null +++ b/subworkflows/nf-core/quantify_pseudo_alignment/nextflow.config @@ -0,0 +1,67 @@ +if (!params.skip_pseudo_alignment && params.pseudo_aligner == 'salmon') { + process { + withName: '.*:QUANTIFY_PSEUDO_ALIGNMENT:SALMON_QUANT' { + ext.args = { params.extra_salmon_quant_args ?: '' } + publishDir = [ + path: { "${params.outdir}/${params.pseudo_aligner}" }, + mode: params.publish_dir_mode, + saveAs: { filename -> filename.equals('versions.yml') || filename.endsWith('_meta_info.json') ? null : filename } + ] + } + } +} + +if (!params.skip_pseudo_alignment && params.pseudo_aligner == 'kallisto') { + process { + withName: '.*:QUANTIFY_PSEUDO_ALIGNMENT:KALLISTO_QUANT' { + ext.args = params.extra_kallisto_quant_args ?: '' + publishDir = [ + path: { "${params.outdir}/${params.pseudo_aligner}" }, + mode: params.publish_dir_mode, + saveAs: { filename -> filename.equals('versions.yml') || filename.endsWith('.run_info.json') || filename.endsWith('.log') ? null : filename } + ] + } + } +} + +if (!params.skip_pseudo_alignment && params.pseudo_aligner) { + process { + withName: '.*:QUANTIFY_PSEUDO_ALIGNMENT:CUSTOM_TX2GENE' { + publishDir = [ + path: { "${params.outdir}/${params.pseudo_aligner}" }, + mode: params.publish_dir_mode, + saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + ] + } + + withName: '.*:QUANTIFY_PSEUDO_ALIGNMENT:TXIMETA_TXIMPORT' { + ext.prefix = { "${quant_type}.merged" } + publishDir = [ + path: { "${params.outdir}/${params.pseudo_aligner}" }, + mode: params.publish_dir_mode, + saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + ] + } + + withName: '.*:QUANTIFY_PSEUDO_ALIGNMENT:SE_.*' { + ext.args = '--assay_names counts,abundance' + publishDir = [ + path: { "${params.outdir}/${params.pseudo_aligner}" }, + mode: params.publish_dir_mode, + saveAs: { filename -> filename.equals('versions.yml') || filename.endsWith('.log') ? null : filename } + ] + } + withName: '.*:QUANTIFY_PSEUDO_ALIGNMENT:SE_GENE' { + ext.prefix = { "${params.pseudo_aligner}.merged.gene_counts" } + } + withName: '.*:QUANTIFY_PSEUDO_ALIGNMENT:SE_GENE_SCALED' { + ext.prefix = { "${params.pseudo_aligner}.merged.gene_counts_scaled" } + } + withName: '.*:QUANTIFY_PSEUDO_ALIGNMENT:SE_GENE_LENGTH_SCALED' { + ext.prefix = { "${params.pseudo_aligner}.merged.gene_counts_length_scaled" } + } + withName: '.*:QUANTIFY_PSEUDO_ALIGNMENT:SE_TRANSCRIPT' { + ext.prefix = { "${params.pseudo_aligner}.merged.transcript_counts" } + } + } +} From fc33902c371c227a9767b896b8d6f6c1d4a85e2b Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Thu, 4 Apr 2024 11:17:17 +0100 Subject: [PATCH 279/634] Strip tags.ymls --- modules/nf-core/fastp/tests/tags.yml | 2 -- modules/nf-core/picard/markduplicates/tests/tags.yml | 2 -- modules/nf-core/tximeta/tximport/tests/tags.yml | 2 -- subworkflows/nf-core/bam_markduplicates_picard/tests/tags.yml | 2 -- subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/tags.yml | 2 -- subworkflows/nf-core/quantify_pseudo_alignment/tests/tags.yml | 2 -- 6 files changed, 12 deletions(-) delete mode 100644 modules/nf-core/fastp/tests/tags.yml delete mode 100644 modules/nf-core/picard/markduplicates/tests/tags.yml delete mode 100644 modules/nf-core/tximeta/tximport/tests/tags.yml delete mode 100644 subworkflows/nf-core/bam_markduplicates_picard/tests/tags.yml delete mode 100644 subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/tags.yml delete mode 100644 subworkflows/nf-core/quantify_pseudo_alignment/tests/tags.yml diff --git a/modules/nf-core/fastp/tests/tags.yml b/modules/nf-core/fastp/tests/tags.yml deleted file mode 100644 index c1afcce75..000000000 --- a/modules/nf-core/fastp/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -fastp: - - modules/nf-core/fastp/** diff --git a/modules/nf-core/picard/markduplicates/tests/tags.yml b/modules/nf-core/picard/markduplicates/tests/tags.yml deleted file mode 100644 index 4f213d620..000000000 --- a/modules/nf-core/picard/markduplicates/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -picard/markduplicates: - - modules/nf-core/picard/markduplicates/** diff --git a/modules/nf-core/tximeta/tximport/tests/tags.yml b/modules/nf-core/tximeta/tximport/tests/tags.yml deleted file mode 100644 index fc96a89e0..000000000 --- a/modules/nf-core/tximeta/tximport/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -tximeta/tximport: - - "modules/nf-core/tximeta/tximport/**" diff --git a/subworkflows/nf-core/bam_markduplicates_picard/tests/tags.yml b/subworkflows/nf-core/bam_markduplicates_picard/tests/tags.yml deleted file mode 100644 index 10b852706..000000000 --- a/subworkflows/nf-core/bam_markduplicates_picard/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -subworkflows/bam_markduplicates_picard: - - subworkflows/nf-core/bam_markduplicates_picard/** diff --git a/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/tags.yml b/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/tags.yml deleted file mode 100644 index 84a4b5676..000000000 --- a/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -subworkflows/fastq_fastqc_umitools_fastp: - - subworkflows/nf-core/fastq_fastqc_umitools_fastp/** diff --git a/subworkflows/nf-core/quantify_pseudo_alignment/tests/tags.yml b/subworkflows/nf-core/quantify_pseudo_alignment/tests/tags.yml deleted file mode 100644 index f4e48df36..000000000 --- a/subworkflows/nf-core/quantify_pseudo_alignment/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -subworkflows/quantify_pseudo_alignment: - - subworkflows/nf-core/quantify_pseudo_alignment/** From e01e195c8df12df6eca9f3c4ea5d6e5ba7a6804d Mon Sep 17 00:00:00 2001 From: Adam Talbot <12817534+adamrtalbot@users.noreply.github.com> Date: Tue, 9 Apr 2024 10:18:29 +0100 Subject: [PATCH 280/634] Remove r-base from software versions --- tests/tests/default/main.nf.test.snap | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/tests/default/main.nf.test.snap b/tests/tests/default/main.nf.test.snap index 1170c2912..299628d72 100644 --- a/tests/tests/default/main.nf.test.snap +++ b/tests/tests/default/main.nf.test.snap @@ -1,7 +1,7 @@ { "software_versions": { "content": [ - "{BBMAP_BBSPLIT={bbmap=39.01}, BEDTOOLS_GENOMECOV_FW={bedtools=2.31.1}, CAT_FASTQ={cat=8.3}, CUSTOM_CATADDITIONALFASTA={python=3.9.5}, CUSTOM_GETCHROMSIZES={getchromsizes=1.16.1}, CUSTOM_TX2GENE={python=3.9.5}, DESEQ2_QC_PSEUDO={r-base=4.0.3, bioconductor-deseq2=1.28.0}, DESEQ2_QC_STAR_SALMON={r-base=4.0.3, bioconductor-deseq2=1.28.0}, DUPRADAR={bioconductor-dupradar=1.32.0}, FASTQC={fastqc=0.12.1}, FQ_SUBSAMPLE={fq=0.9.1 (2022-02-22)}, GTF2BED={perl=5.26.2}, GTF_FILTER={python=3.9.5}, GUNZIP_ADDITIONAL_FASTA={gunzip=1.1}, GUNZIP_GTF={gunzip=1.1}, MULTIQC_CUSTOM_BIOTYPE={python=3.9.5}, PICARD_MARKDUPLICATES={picard=3.1.1}, QUALIMAP_RNASEQ={qualimap=2.3}, RSEQC_BAMSTAT={rseqc=5.0.2}, RSEQC_INFEREXPERIMENT={rseqc=5.0.2}, RSEQC_INNERDISTANCE={rseqc=5.0.2}, RSEQC_JUNCTIONANNOTATION={rseqc=5.0.2}, RSEQC_JUNCTIONSATURATION={rseqc=5.0.2}, RSEQC_READDISTRIBUTION={rseqc=5.0.2}, RSEQC_READDUPLICATION={rseqc=5.0.2}, SALMON_QUANT={salmon=1.10.1}, SAMTOOLS_FLAGSTAT={samtools=1.19.2}, SAMTOOLS_IDXSTATS={samtools=1.19.2}, SAMTOOLS_INDEX={samtools=1.19.2}, SAMTOOLS_SORT={samtools=1.19.2}, SAMTOOLS_STATS={samtools=1.19.2}, SE_GENE={bioconductor-summarizedexperiment=1.32.0}, STAR_ALIGN={star=2.7.10a, samtools=1.18, gawk=5.1.0}, STAR_GENOMEGENERATE={star=2.7.10a, samtools=1.18, gawk=5.1.0}, STRINGTIE_STRINGTIE={stringtie=2.2.1}, SUBREAD_FEATURECOUNTS={subread=2.0.1}, TRIMGALORE={trimgalore=0.6.7, cutadapt=3.4}, TXIMETA_TXIMPORT={r-base=4.3.2, bioconductor-tximeta=1.20.1}, UCSC_BEDCLIP={ucsc=377}, UCSC_BEDGRAPHTOBIGWIG={ucsc=445}, UNTAR_SALMON_INDEX={untar=1.3}, Workflow={nf-core/rnaseq=v3.15.0dev}}" + "{BBMAP_BBSPLIT={bbmap=39.01}, BEDTOOLS_GENOMECOV_FW={bedtools=2.31.1}, CAT_FASTQ={cat=8.3}, CUSTOM_CATADDITIONALFASTA={python=3.9.5}, CUSTOM_GETCHROMSIZES={getchromsizes=1.16.1}, CUSTOM_TX2GENE={python=3.9.5}, DESEQ2_QC_PSEUDO={r-base=4.0.3, bioconductor-deseq2=1.28.0}, DESEQ2_QC_STAR_SALMON={r-base=4.0.3, bioconductor-deseq2=1.28.0}, DUPRADAR={bioconductor-dupradar=1.32.0}, FASTQC={fastqc=0.12.1}, FQ_SUBSAMPLE={fq=0.9.1 (2022-02-22)}, GTF2BED={perl=5.26.2}, GTF_FILTER={python=3.9.5}, GUNZIP_ADDITIONAL_FASTA={gunzip=1.1}, GUNZIP_GTF={gunzip=1.1}, MULTIQC_CUSTOM_BIOTYPE={python=3.9.5}, PICARD_MARKDUPLICATES={picard=3.1.1}, QUALIMAP_RNASEQ={qualimap=2.3}, RSEQC_BAMSTAT={rseqc=5.0.2}, RSEQC_INFEREXPERIMENT={rseqc=5.0.2}, RSEQC_INNERDISTANCE={rseqc=5.0.2}, RSEQC_JUNCTIONANNOTATION={rseqc=5.0.2}, RSEQC_JUNCTIONSATURATION={rseqc=5.0.2}, RSEQC_READDISTRIBUTION={rseqc=5.0.2}, RSEQC_READDUPLICATION={rseqc=5.0.2}, SALMON_QUANT={salmon=1.10.1}, SAMTOOLS_FLAGSTAT={samtools=1.19.2}, SAMTOOLS_IDXSTATS={samtools=1.19.2}, SAMTOOLS_INDEX={samtools=1.19.2}, SAMTOOLS_SORT={samtools=1.19.2}, SAMTOOLS_STATS={samtools=1.19.2}, SE_GENE={bioconductor-summarizedexperiment=1.32.0}, STAR_ALIGN={star=2.7.10a, samtools=1.18, gawk=5.1.0}, STAR_GENOMEGENERATE={star=2.7.10a, samtools=1.18, gawk=5.1.0}, STRINGTIE_STRINGTIE={stringtie=2.2.1}, SUBREAD_FEATURECOUNTS={subread=2.0.1}, TRIMGALORE={trimgalore=0.6.7, cutadapt=3.4}, TXIMETA_TXIMPORT={bioconductor-tximeta=1.20.1}, UCSC_BEDCLIP={ucsc=377}, UCSC_BEDGRAPHTOBIGWIG={ucsc=445}, UNTAR_SALMON_INDEX={untar=1.3}, Workflow={nf-core/rnaseq=v3.15.0dev}}" ], "meta": { "nf-test": "0.8.4", From 6e6a25425af1327de1842f1bea666dc7401121ec Mon Sep 17 00:00:00 2001 From: Adam Talbot <12817534+adamrtalbot@users.noreply.github.com> Date: Tue, 9 Apr 2024 10:20:30 +0100 Subject: [PATCH 281/634] Move repo tests config to tests/config --- nf-test.config | 2 +- tests/nextflow.config | 41 ----------------------------------------- 2 files changed, 1 insertion(+), 42 deletions(-) delete mode 100644 tests/nextflow.config diff --git a/nf-test.config b/nf-test.config index f126b460a..59b868801 100644 --- a/nf-test.config +++ b/nf-test.config @@ -6,7 +6,7 @@ config { workDir System.getenv("NFT_WORKDIR") ?: ".nf-test" // Location of an optional nextflow.config file specific for executing pipeline tests - configFile "tests/nextflow.config" + configFile "tests/config/nextflow.config" profile "test" } diff --git a/tests/nextflow.config b/tests/nextflow.config deleted file mode 100644 index 6bf8f2929..000000000 --- a/tests/nextflow.config +++ /dev/null @@ -1,41 +0,0 @@ -/* -======================================================================================== - Nextflow config file for running tests -======================================================================================== -*/ - -params { - // Base directory for nf-core/modules test data - modules_testdata_base_path = 's3://ngi-igenomes/testdata/nf-core/modules/' - - // Base directory for nf-core/rnaseq test data - pipelines_testdata_base_path = 's3://ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/' - - // for hisat2 - hisat2_build_memory = '3.GB' - - validationSchemaIgnoreParams = 'genomes,igenomes_base,modules_testdata_base_path,pipelines_testdata_base_path' - - // TODO: check if we rather do this or disable publishdir for all processes when testing modules/subworkflows - outdir = 'results' -} - -// Impose sensible resource limits for testing -process { - withName: '.*' { - cpus = 2 - memory = 3.GB - time = 2.h - } -} - -// Impose same minimum Nextflow version as the pipeline for testing -manifest { - nextflowVersion = '!>=23.04.0' -} - -// Disable all Nextflow reporting options -timeline { enabled = false } -report { enabled = false } -trace { enabled = false } -dag { enabled = false } From 76473d28d23ebb4320e39d433f9e6ec955f020b9 Mon Sep 17 00:00:00 2001 From: Adam Talbot <12817534+adamrtalbot@users.noreply.github.com> Date: Tue, 9 Apr 2024 11:57:33 +0100 Subject: [PATCH 282/634] Add test config --- tests/config/nextflow.config | 41 ++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 tests/config/nextflow.config diff --git a/tests/config/nextflow.config b/tests/config/nextflow.config new file mode 100644 index 000000000..6bf8f2929 --- /dev/null +++ b/tests/config/nextflow.config @@ -0,0 +1,41 @@ +/* +======================================================================================== + Nextflow config file for running tests +======================================================================================== +*/ + +params { + // Base directory for nf-core/modules test data + modules_testdata_base_path = 's3://ngi-igenomes/testdata/nf-core/modules/' + + // Base directory for nf-core/rnaseq test data + pipelines_testdata_base_path = 's3://ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/' + + // for hisat2 + hisat2_build_memory = '3.GB' + + validationSchemaIgnoreParams = 'genomes,igenomes_base,modules_testdata_base_path,pipelines_testdata_base_path' + + // TODO: check if we rather do this or disable publishdir for all processes when testing modules/subworkflows + outdir = 'results' +} + +// Impose sensible resource limits for testing +process { + withName: '.*' { + cpus = 2 + memory = 3.GB + time = 2.h + } +} + +// Impose same minimum Nextflow version as the pipeline for testing +manifest { + nextflowVersion = '!>=23.04.0' +} + +// Disable all Nextflow reporting options +timeline { enabled = false } +report { enabled = false } +trace { enabled = false } +dag { enabled = false } From 6f3b92567947e6e1f9802017145644e891e768d0 Mon Sep 17 00:00:00 2001 From: Adam Talbot <12817534+adamrtalbot@users.noreply.github.com> Date: Tue, 9 Apr 2024 17:28:24 +0100 Subject: [PATCH 283/634] Add psueudoaligner pipeline level tests to test suite --- .github/workflows/ci.yml | 22 -------------------- tests/tests/kallisto/main.nf.test | 28 ++++++++++++++++++++++++++ tests/tests/kallisto/main.nf.test.snap | 12 +++++++++++ tests/tests/salmon/main.nf.test | 28 ++++++++++++++++++++++++++ tests/tests/salmon/main.nf.test.snap | 12 +++++++++++ 5 files changed, 80 insertions(+), 22 deletions(-) create mode 100644 tests/tests/kallisto/main.nf.test create mode 100644 tests/tests/kallisto/main.nf.test.snap create mode 100644 tests/tests/salmon/main.nf.test create mode 100644 tests/tests/salmon/main.nf.test.snap diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a61d32c16..2bcea8bc5 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -19,28 +19,6 @@ concurrency: group: "${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}" cancel-in-progress: true jobs: - pseudo: - name: Test Pseudoaligners with workflow parameters - if: ${{ (github.event_name != 'push' || (github.event_name == 'push' && github.repository == 'nf-core/rnaseq')) && !contains(github.event.head_commit.message, '[ci fast]') }} - runs-on: ubuntu-latest - strategy: - matrix: - parameters: - - "--pseudo_aligner salmon --skip_qc" - - "--pseudo_aligner salmon --skip_alignment --skip_pseudo_alignment" - - "--pseudo_aligner kallisto --skip_qc" - - "--pseudo_aligner kallisto --skip_alignment --skip_pseudo_alignment" - steps: - - name: Check out pipeline code - uses: actions/checkout@v4 - - - name: Setup Nextflow - uses: nf-core/setup-nextflow@v1.5 - - - name: Run pipeline with Salmon or Kallisto and various parameters - run: | - nextflow run ${GITHUB_WORKSPACE} -profile test,docker ${{ matrix.parameters }} --outdir ./results - nf-test-changes: name: Check for changes runs-on: ubuntu-latest diff --git a/tests/tests/kallisto/main.nf.test b/tests/tests/kallisto/main.nf.test new file mode 100644 index 000000000..e36b4cb9c --- /dev/null +++ b/tests/tests/kallisto/main.nf.test @@ -0,0 +1,28 @@ +nextflow_pipeline { + + name "Test pipeline" + script "../../../main.nf" + tag "rnaseq" + tag "PIPELINE" + + test("Default profile test") { + + when { + params { + outdir = "$outputDir" + input = 'https://raw.githubusercontent.com/nf-core/test-datasets/7f1614baeb0ddf66e60be78c3d9fa55440465ac8/samplesheet/v3.10/samplesheet_test.csv' + pseudo_aligner = 'kallisto' + skip_qc = true + skip_alignment = true + } + } + + then { + assert workflow.success + + assertAll( + { assert snapshot(UTILS.removeNextflowVersion("$outputDir/pipeline_info/nf_core_rnaseq_software_mqc_versions.yml")).match("software_versions") } + ) + } + } +} diff --git a/tests/tests/kallisto/main.nf.test.snap b/tests/tests/kallisto/main.nf.test.snap new file mode 100644 index 000000000..299628d72 --- /dev/null +++ b/tests/tests/kallisto/main.nf.test.snap @@ -0,0 +1,12 @@ +{ + "software_versions": { + "content": [ + "{BBMAP_BBSPLIT={bbmap=39.01}, BEDTOOLS_GENOMECOV_FW={bedtools=2.31.1}, CAT_FASTQ={cat=8.3}, CUSTOM_CATADDITIONALFASTA={python=3.9.5}, CUSTOM_GETCHROMSIZES={getchromsizes=1.16.1}, CUSTOM_TX2GENE={python=3.9.5}, DESEQ2_QC_PSEUDO={r-base=4.0.3, bioconductor-deseq2=1.28.0}, DESEQ2_QC_STAR_SALMON={r-base=4.0.3, bioconductor-deseq2=1.28.0}, DUPRADAR={bioconductor-dupradar=1.32.0}, FASTQC={fastqc=0.12.1}, FQ_SUBSAMPLE={fq=0.9.1 (2022-02-22)}, GTF2BED={perl=5.26.2}, GTF_FILTER={python=3.9.5}, GUNZIP_ADDITIONAL_FASTA={gunzip=1.1}, GUNZIP_GTF={gunzip=1.1}, MULTIQC_CUSTOM_BIOTYPE={python=3.9.5}, PICARD_MARKDUPLICATES={picard=3.1.1}, QUALIMAP_RNASEQ={qualimap=2.3}, RSEQC_BAMSTAT={rseqc=5.0.2}, RSEQC_INFEREXPERIMENT={rseqc=5.0.2}, RSEQC_INNERDISTANCE={rseqc=5.0.2}, RSEQC_JUNCTIONANNOTATION={rseqc=5.0.2}, RSEQC_JUNCTIONSATURATION={rseqc=5.0.2}, RSEQC_READDISTRIBUTION={rseqc=5.0.2}, RSEQC_READDUPLICATION={rseqc=5.0.2}, SALMON_QUANT={salmon=1.10.1}, SAMTOOLS_FLAGSTAT={samtools=1.19.2}, SAMTOOLS_IDXSTATS={samtools=1.19.2}, SAMTOOLS_INDEX={samtools=1.19.2}, SAMTOOLS_SORT={samtools=1.19.2}, SAMTOOLS_STATS={samtools=1.19.2}, SE_GENE={bioconductor-summarizedexperiment=1.32.0}, STAR_ALIGN={star=2.7.10a, samtools=1.18, gawk=5.1.0}, STAR_GENOMEGENERATE={star=2.7.10a, samtools=1.18, gawk=5.1.0}, STRINGTIE_STRINGTIE={stringtie=2.2.1}, SUBREAD_FEATURECOUNTS={subread=2.0.1}, TRIMGALORE={trimgalore=0.6.7, cutadapt=3.4}, TXIMETA_TXIMPORT={bioconductor-tximeta=1.20.1}, UCSC_BEDCLIP={ucsc=377}, UCSC_BEDGRAPHTOBIGWIG={ucsc=445}, UNTAR_SALMON_INDEX={untar=1.3}, Workflow={nf-core/rnaseq=v3.15.0dev}}" + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-04T12:40:26.161319" + } +} \ No newline at end of file diff --git a/tests/tests/salmon/main.nf.test b/tests/tests/salmon/main.nf.test new file mode 100644 index 000000000..72f8fd4e7 --- /dev/null +++ b/tests/tests/salmon/main.nf.test @@ -0,0 +1,28 @@ +nextflow_pipeline { + + name "Test pipeline" + script "../../../main.nf" + tag "rnaseq" + tag "PIPELINE" + + test("Default profile test") { + + when { + params { + outdir = "$outputDir" + input = 'https://raw.githubusercontent.com/nf-core/test-datasets/7f1614baeb0ddf66e60be78c3d9fa55440465ac8/samplesheet/v3.10/samplesheet_test.csv' + pseudo_aligner = 'salmon' + skip_qc = true + skip_alignment = true + } + } + + then { + assert workflow.success + + assertAll( + { assert snapshot(UTILS.removeNextflowVersion("$outputDir/pipeline_info/nf_core_rnaseq_software_mqc_versions.yml")).match("software_versions") } + ) + } + } +} diff --git a/tests/tests/salmon/main.nf.test.snap b/tests/tests/salmon/main.nf.test.snap new file mode 100644 index 000000000..299628d72 --- /dev/null +++ b/tests/tests/salmon/main.nf.test.snap @@ -0,0 +1,12 @@ +{ + "software_versions": { + "content": [ + "{BBMAP_BBSPLIT={bbmap=39.01}, BEDTOOLS_GENOMECOV_FW={bedtools=2.31.1}, CAT_FASTQ={cat=8.3}, CUSTOM_CATADDITIONALFASTA={python=3.9.5}, CUSTOM_GETCHROMSIZES={getchromsizes=1.16.1}, CUSTOM_TX2GENE={python=3.9.5}, DESEQ2_QC_PSEUDO={r-base=4.0.3, bioconductor-deseq2=1.28.0}, DESEQ2_QC_STAR_SALMON={r-base=4.0.3, bioconductor-deseq2=1.28.0}, DUPRADAR={bioconductor-dupradar=1.32.0}, FASTQC={fastqc=0.12.1}, FQ_SUBSAMPLE={fq=0.9.1 (2022-02-22)}, GTF2BED={perl=5.26.2}, GTF_FILTER={python=3.9.5}, GUNZIP_ADDITIONAL_FASTA={gunzip=1.1}, GUNZIP_GTF={gunzip=1.1}, MULTIQC_CUSTOM_BIOTYPE={python=3.9.5}, PICARD_MARKDUPLICATES={picard=3.1.1}, QUALIMAP_RNASEQ={qualimap=2.3}, RSEQC_BAMSTAT={rseqc=5.0.2}, RSEQC_INFEREXPERIMENT={rseqc=5.0.2}, RSEQC_INNERDISTANCE={rseqc=5.0.2}, RSEQC_JUNCTIONANNOTATION={rseqc=5.0.2}, RSEQC_JUNCTIONSATURATION={rseqc=5.0.2}, RSEQC_READDISTRIBUTION={rseqc=5.0.2}, RSEQC_READDUPLICATION={rseqc=5.0.2}, SALMON_QUANT={salmon=1.10.1}, SAMTOOLS_FLAGSTAT={samtools=1.19.2}, SAMTOOLS_IDXSTATS={samtools=1.19.2}, SAMTOOLS_INDEX={samtools=1.19.2}, SAMTOOLS_SORT={samtools=1.19.2}, SAMTOOLS_STATS={samtools=1.19.2}, SE_GENE={bioconductor-summarizedexperiment=1.32.0}, STAR_ALIGN={star=2.7.10a, samtools=1.18, gawk=5.1.0}, STAR_GENOMEGENERATE={star=2.7.10a, samtools=1.18, gawk=5.1.0}, STRINGTIE_STRINGTIE={stringtie=2.2.1}, SUBREAD_FEATURECOUNTS={subread=2.0.1}, TRIMGALORE={trimgalore=0.6.7, cutadapt=3.4}, TXIMETA_TXIMPORT={bioconductor-tximeta=1.20.1}, UCSC_BEDCLIP={ucsc=377}, UCSC_BEDGRAPHTOBIGWIG={ucsc=445}, UNTAR_SALMON_INDEX={untar=1.3}, Workflow={nf-core/rnaseq=v3.15.0dev}}" + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-03-04T12:40:26.161319" + } +} \ No newline at end of file From eea41e7e68a750a0bcac37cd8eb37fa6eb6d98af Mon Sep 17 00:00:00 2001 From: Adam Talbot <12817534+adamrtalbot@users.noreply.github.com> Date: Tue, 9 Apr 2024 17:30:48 +0100 Subject: [PATCH 284/634] CI fixup --- .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 2bcea8bc5..947b1a745 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -155,7 +155,7 @@ jobs: confirm-pass: runs-on: ubuntu-latest - needs: [test, pseudo] + needs: [test] if: always() steps: - name: All tests ok From 4299d4714062e7637d008825e9f6e1a0d65c1cba Mon Sep 17 00:00:00 2001 From: Adam Talbot <12817534+adamrtalbot@users.noreply.github.com> Date: Wed, 10 Apr 2024 10:32:14 +0100 Subject: [PATCH 285/634] Correct snaps for pseudoalignment --- tests/tests/kallisto/main.nf.test.snap | 6 +++--- tests/tests/salmon/main.nf.test.snap | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/tests/tests/kallisto/main.nf.test.snap b/tests/tests/kallisto/main.nf.test.snap index 299628d72..2deb6fb8d 100644 --- a/tests/tests/kallisto/main.nf.test.snap +++ b/tests/tests/kallisto/main.nf.test.snap @@ -1,12 +1,12 @@ { "software_versions": { "content": [ - "{BBMAP_BBSPLIT={bbmap=39.01}, BEDTOOLS_GENOMECOV_FW={bedtools=2.31.1}, CAT_FASTQ={cat=8.3}, CUSTOM_CATADDITIONALFASTA={python=3.9.5}, CUSTOM_GETCHROMSIZES={getchromsizes=1.16.1}, CUSTOM_TX2GENE={python=3.9.5}, DESEQ2_QC_PSEUDO={r-base=4.0.3, bioconductor-deseq2=1.28.0}, DESEQ2_QC_STAR_SALMON={r-base=4.0.3, bioconductor-deseq2=1.28.0}, DUPRADAR={bioconductor-dupradar=1.32.0}, FASTQC={fastqc=0.12.1}, FQ_SUBSAMPLE={fq=0.9.1 (2022-02-22)}, GTF2BED={perl=5.26.2}, GTF_FILTER={python=3.9.5}, GUNZIP_ADDITIONAL_FASTA={gunzip=1.1}, GUNZIP_GTF={gunzip=1.1}, MULTIQC_CUSTOM_BIOTYPE={python=3.9.5}, PICARD_MARKDUPLICATES={picard=3.1.1}, QUALIMAP_RNASEQ={qualimap=2.3}, RSEQC_BAMSTAT={rseqc=5.0.2}, RSEQC_INFEREXPERIMENT={rseqc=5.0.2}, RSEQC_INNERDISTANCE={rseqc=5.0.2}, RSEQC_JUNCTIONANNOTATION={rseqc=5.0.2}, RSEQC_JUNCTIONSATURATION={rseqc=5.0.2}, RSEQC_READDISTRIBUTION={rseqc=5.0.2}, RSEQC_READDUPLICATION={rseqc=5.0.2}, SALMON_QUANT={salmon=1.10.1}, SAMTOOLS_FLAGSTAT={samtools=1.19.2}, SAMTOOLS_IDXSTATS={samtools=1.19.2}, SAMTOOLS_INDEX={samtools=1.19.2}, SAMTOOLS_SORT={samtools=1.19.2}, SAMTOOLS_STATS={samtools=1.19.2}, SE_GENE={bioconductor-summarizedexperiment=1.32.0}, STAR_ALIGN={star=2.7.10a, samtools=1.18, gawk=5.1.0}, STAR_GENOMEGENERATE={star=2.7.10a, samtools=1.18, gawk=5.1.0}, STRINGTIE_STRINGTIE={stringtie=2.2.1}, SUBREAD_FEATURECOUNTS={subread=2.0.1}, TRIMGALORE={trimgalore=0.6.7, cutadapt=3.4}, TXIMETA_TXIMPORT={bioconductor-tximeta=1.20.1}, UCSC_BEDCLIP={ucsc=377}, UCSC_BEDGRAPHTOBIGWIG={ucsc=445}, UNTAR_SALMON_INDEX={untar=1.3}, Workflow={nf-core/rnaseq=v3.15.0dev}}" + "{BBMAP_BBSPLIT={bbmap=39.01}, CAT_FASTQ={cat=8.3}, CUSTOM_CATADDITIONALFASTA={python=3.9.5}, CUSTOM_GETCHROMSIZES={getchromsizes=1.16.1}, CUSTOM_TX2GENE={python=3.9.5}, FQ_SUBSAMPLE={fq=0.9.1 (2022-02-22)}, GTF2BED={perl=5.26.2}, GTF_FILTER={python=3.9.5}, GUNZIP_ADDITIONAL_FASTA={gunzip=1.1}, GUNZIP_GTF={gunzip=1.1}, KALLISTO_INDEX={kallisto=0.48.0}, KALLISTO_QUANT={kallisto=0.48.0}, SALMON_QUANT={salmon=1.10.1}, SE_GENE={bioconductor-summarizedexperiment=1.32.0}, TRIMGALORE={trimgalore=0.6.7, cutadapt=3.4}, TXIMETA_TXIMPORT={bioconductor-tximeta=1.20.1}, UNTAR_SALMON_INDEX={untar=1.3}, Workflow={nf-core/rnaseq=v3.15.0dev}}" ], "meta": { "nf-test": "0.8.4", - "nextflow": "24.01.0" + "nextflow": "23.10.1" }, - "timestamp": "2024-03-04T12:40:26.161319" + "timestamp": "2024-04-10T10:13:15.867122" } } \ No newline at end of file diff --git a/tests/tests/salmon/main.nf.test.snap b/tests/tests/salmon/main.nf.test.snap index 299628d72..831b1e14b 100644 --- a/tests/tests/salmon/main.nf.test.snap +++ b/tests/tests/salmon/main.nf.test.snap @@ -1,12 +1,12 @@ { "software_versions": { "content": [ - "{BBMAP_BBSPLIT={bbmap=39.01}, BEDTOOLS_GENOMECOV_FW={bedtools=2.31.1}, CAT_FASTQ={cat=8.3}, CUSTOM_CATADDITIONALFASTA={python=3.9.5}, CUSTOM_GETCHROMSIZES={getchromsizes=1.16.1}, CUSTOM_TX2GENE={python=3.9.5}, DESEQ2_QC_PSEUDO={r-base=4.0.3, bioconductor-deseq2=1.28.0}, DESEQ2_QC_STAR_SALMON={r-base=4.0.3, bioconductor-deseq2=1.28.0}, DUPRADAR={bioconductor-dupradar=1.32.0}, FASTQC={fastqc=0.12.1}, FQ_SUBSAMPLE={fq=0.9.1 (2022-02-22)}, GTF2BED={perl=5.26.2}, GTF_FILTER={python=3.9.5}, GUNZIP_ADDITIONAL_FASTA={gunzip=1.1}, GUNZIP_GTF={gunzip=1.1}, MULTIQC_CUSTOM_BIOTYPE={python=3.9.5}, PICARD_MARKDUPLICATES={picard=3.1.1}, QUALIMAP_RNASEQ={qualimap=2.3}, RSEQC_BAMSTAT={rseqc=5.0.2}, RSEQC_INFEREXPERIMENT={rseqc=5.0.2}, RSEQC_INNERDISTANCE={rseqc=5.0.2}, RSEQC_JUNCTIONANNOTATION={rseqc=5.0.2}, RSEQC_JUNCTIONSATURATION={rseqc=5.0.2}, RSEQC_READDISTRIBUTION={rseqc=5.0.2}, RSEQC_READDUPLICATION={rseqc=5.0.2}, SALMON_QUANT={salmon=1.10.1}, SAMTOOLS_FLAGSTAT={samtools=1.19.2}, SAMTOOLS_IDXSTATS={samtools=1.19.2}, SAMTOOLS_INDEX={samtools=1.19.2}, SAMTOOLS_SORT={samtools=1.19.2}, SAMTOOLS_STATS={samtools=1.19.2}, SE_GENE={bioconductor-summarizedexperiment=1.32.0}, STAR_ALIGN={star=2.7.10a, samtools=1.18, gawk=5.1.0}, STAR_GENOMEGENERATE={star=2.7.10a, samtools=1.18, gawk=5.1.0}, STRINGTIE_STRINGTIE={stringtie=2.2.1}, SUBREAD_FEATURECOUNTS={subread=2.0.1}, TRIMGALORE={trimgalore=0.6.7, cutadapt=3.4}, TXIMETA_TXIMPORT={bioconductor-tximeta=1.20.1}, UCSC_BEDCLIP={ucsc=377}, UCSC_BEDGRAPHTOBIGWIG={ucsc=445}, UNTAR_SALMON_INDEX={untar=1.3}, Workflow={nf-core/rnaseq=v3.15.0dev}}" + "{BBMAP_BBSPLIT={bbmap=39.01}, CAT_FASTQ={cat=8.3}, CUSTOM_CATADDITIONALFASTA={python=3.9.5}, CUSTOM_GETCHROMSIZES={getchromsizes=1.16.1}, CUSTOM_TX2GENE={python=3.9.5}, FQ_SUBSAMPLE={fq=0.9.1 (2022-02-22)}, GTF2BED={perl=5.26.2}, GTF_FILTER={python=3.9.5}, GUNZIP_ADDITIONAL_FASTA={gunzip=1.1}, GUNZIP_GTF={gunzip=1.1}, SALMON_QUANT={salmon=1.10.1}, SE_GENE={bioconductor-summarizedexperiment=1.32.0}, TRIMGALORE={trimgalore=0.6.7, cutadapt=3.4}, TXIMETA_TXIMPORT={bioconductor-tximeta=1.20.1}, UNTAR_SALMON_INDEX={untar=1.3}, Workflow={nf-core/rnaseq=v3.15.0dev}}" ], "meta": { "nf-test": "0.8.4", - "nextflow": "24.01.0" + "nextflow": "23.10.1" }, - "timestamp": "2024-03-04T12:40:26.161319" + "timestamp": "2024-04-10T10:31:20.108379" } } \ No newline at end of file From d6206f412a574531096340073c70c7f98ea2f07e Mon Sep 17 00:00:00 2001 From: Adam Talbot <12817534+adamrtalbot@users.noreply.github.com> Date: Wed, 10 Apr 2024 11:33:45 +0100 Subject: [PATCH 286/634] Reorganise pipeline tests into flat structure Changes: - Move all test files from tests/tests/ to test/*.nf.test - Makes structure more flat and discovery easier at the cost of looking more untidy. - To be discussed in PR! --- CHANGELOG.md | 1 + nf-test.config | 2 +- .../default/main.nf.test => default.main.nf.test} | 4 ++-- .../main.nf.test.snap => default.main.nf.test.snap} | 0 .../main.nf.test => featurecounts.main.nf.test} | 4 ++-- .../main.nf.test => kallisto.main.nf.nf.test} | 8 ++------ .../main.nf.test => min_mapped_reads.main.nf.test} | 4 ++-- tests/{config => }/nextflow.config | 0 .../main.nf.test => remove_ribo_rna.main.nf.test} | 4 ++-- .../salmon/main.nf.test => salmon.main.nf.test} | 8 ++------ .../skip_qc/main.nf.test => skip_qc.main.nf.test} | 4 ++-- .../main.nf.test => skip_trimming.main.nf.test} | 4 ++-- tests/tests/kallisto/main.nf.test.snap | 12 ------------ tests/tests/salmon/main.nf.test.snap | 12 ------------ 14 files changed, 18 insertions(+), 49 deletions(-) rename tests/{tests/default/main.nf.test => default.main.nf.test} (89%) rename tests/{tests/default/main.nf.test.snap => default.main.nf.test.snap} (100%) rename tests/{tests/featurecounts/main.nf.test => featurecounts.main.nf.test} (84%) rename tests/{tests/kallisto/main.nf.test => kallisto.main.nf.nf.test} (67%) rename tests/{tests/min_mapped_reads/main.nf.test => min_mapped_reads.main.nf.test} (86%) rename tests/{config => }/nextflow.config (100%) rename tests/{tests/remove_ribo_rna/main.nf.test => remove_ribo_rna.main.nf.test} (86%) rename tests/{tests/salmon/main.nf.test => salmon.main.nf.test} (67%) rename tests/{tests/skip_qc/main.nf.test => skip_qc.main.nf.test} (87%) rename tests/{tests/skip_trimming/main.nf.test => skip_trimming.main.nf.test} (86%) delete mode 100644 tests/tests/kallisto/main.nf.test.snap delete mode 100644 tests/tests/salmon/main.nf.test.snap diff --git a/CHANGELOG.md b/CHANGELOG.md index fd5a2d557..81e1eb46e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -64,6 +64,7 @@ Thank you to everyone else that has contributed by reporting bugs, enhancements - [PR #1266](https://github.com/nf-core/rnaseq/pull/1266) - Delete unecessary tags from nf.test files for modules and subworkflows - [PR #1253](https://github.com/nf-core/rnaseq/pull/1253) - Use nf-test files as matrix to test over in CI/CD for efficiency - [PR #1278](https://github.com/nf-core/rnaseq/pull/1278) - Delocalise pseudo quant workflow +- [PR ####](https://github.com/nf-core/rnaseq/pull/####) - Reorganise pipeline level tests into flat directory structure ### Parameters diff --git a/nf-test.config b/nf-test.config index 59b868801..f126b460a 100644 --- a/nf-test.config +++ b/nf-test.config @@ -6,7 +6,7 @@ config { workDir System.getenv("NFT_WORKDIR") ?: ".nf-test" // Location of an optional nextflow.config file specific for executing pipeline tests - configFile "tests/config/nextflow.config" + configFile "tests/nextflow.config" profile "test" } diff --git a/tests/tests/default/main.nf.test b/tests/default.main.nf.test similarity index 89% rename from tests/tests/default/main.nf.test rename to tests/default.main.nf.test index 403e9f5f9..88e760c25 100644 --- a/tests/tests/default/main.nf.test +++ b/tests/default.main.nf.test @@ -1,7 +1,7 @@ nextflow_pipeline { - name "Test pipeline" - script "../../../main.nf" + name "Test pipeline with default settings" + script "../main.nf" tag "rnaseq" tag "PIPELINE" diff --git a/tests/tests/default/main.nf.test.snap b/tests/default.main.nf.test.snap similarity index 100% rename from tests/tests/default/main.nf.test.snap rename to tests/default.main.nf.test.snap diff --git a/tests/tests/featurecounts/main.nf.test b/tests/featurecounts.main.nf.test similarity index 84% rename from tests/tests/featurecounts/main.nf.test rename to tests/featurecounts.main.nf.test index bc51fe2e0..30362d3fb 100644 --- a/tests/tests/featurecounts/main.nf.test +++ b/tests/featurecounts.main.nf.test @@ -1,7 +1,7 @@ nextflow_pipeline { - name "Test pipeline" - script "../../../main.nf" + name "Test pipeline with featureCounts with group type false" + script "../main.nf" tag "rnaseq" tag "PIPELINE" diff --git a/tests/tests/kallisto/main.nf.test b/tests/kallisto.main.nf.nf.test similarity index 67% rename from tests/tests/kallisto/main.nf.test rename to tests/kallisto.main.nf.nf.test index e36b4cb9c..732cd82b1 100644 --- a/tests/tests/kallisto/main.nf.test +++ b/tests/kallisto.main.nf.nf.test @@ -1,7 +1,7 @@ nextflow_pipeline { - name "Test pipeline" - script "../../../main.nf" + name "Test pipeline using Kallisto" + script "../main.nf" tag "rnaseq" tag "PIPELINE" @@ -19,10 +19,6 @@ nextflow_pipeline { then { assert workflow.success - - assertAll( - { assert snapshot(UTILS.removeNextflowVersion("$outputDir/pipeline_info/nf_core_rnaseq_software_mqc_versions.yml")).match("software_versions") } - ) } } } diff --git a/tests/tests/min_mapped_reads/main.nf.test b/tests/min_mapped_reads.main.nf.test similarity index 86% rename from tests/tests/min_mapped_reads/main.nf.test rename to tests/min_mapped_reads.main.nf.test index d0e1dfe36..8c8366bbb 100644 --- a/tests/tests/min_mapped_reads/main.nf.test +++ b/tests/min_mapped_reads.main.nf.test @@ -1,7 +1,7 @@ nextflow_pipeline { - name "Test pipeline" - script "../../../main.nf" + name "Test pipeline with min_mapped_reads = 90" + script "../main.nf" tag "rnaseq" tag "PIPELINE" diff --git a/tests/config/nextflow.config b/tests/nextflow.config similarity index 100% rename from tests/config/nextflow.config rename to tests/nextflow.config diff --git a/tests/tests/remove_ribo_rna/main.nf.test b/tests/remove_ribo_rna.main.nf.test similarity index 86% rename from tests/tests/remove_ribo_rna/main.nf.test rename to tests/remove_ribo_rna.main.nf.test index a242a8da4..955dde7cf 100644 --- a/tests/tests/remove_ribo_rna/main.nf.test +++ b/tests/remove_ribo_rna.main.nf.test @@ -1,7 +1,7 @@ nextflow_pipeline { - name "Test pipeline" - script "../../../main.nf" + name "Test pipeline with ribosomal RNA removal" + script "../main.nf" tag "rnaseq" tag "PIPELINE" diff --git a/tests/tests/salmon/main.nf.test b/tests/salmon.main.nf.test similarity index 67% rename from tests/tests/salmon/main.nf.test rename to tests/salmon.main.nf.test index 72f8fd4e7..d26c839c3 100644 --- a/tests/tests/salmon/main.nf.test +++ b/tests/salmon.main.nf.test @@ -1,7 +1,7 @@ nextflow_pipeline { - name "Test pipeline" - script "../../../main.nf" + name "Test pipeline using Salmon" + script "../main.nf" tag "rnaseq" tag "PIPELINE" @@ -19,10 +19,6 @@ nextflow_pipeline { then { assert workflow.success - - assertAll( - { assert snapshot(UTILS.removeNextflowVersion("$outputDir/pipeline_info/nf_core_rnaseq_software_mqc_versions.yml")).match("software_versions") } - ) } } } diff --git a/tests/tests/skip_qc/main.nf.test b/tests/skip_qc.main.nf.test similarity index 87% rename from tests/tests/skip_qc/main.nf.test rename to tests/skip_qc.main.nf.test index 788ed432e..1979a1b8d 100644 --- a/tests/tests/skip_qc/main.nf.test +++ b/tests/skip_qc.main.nf.test @@ -1,7 +1,7 @@ nextflow_pipeline { - name "Test pipeline" - script "../../../main.nf" + name "Test pipeline with QC disabled" + script "../main.nf" tag "rnaseq" tag "PIPELINE" diff --git a/tests/tests/skip_trimming/main.nf.test b/tests/skip_trimming.main.nf.test similarity index 86% rename from tests/tests/skip_trimming/main.nf.test rename to tests/skip_trimming.main.nf.test index f23703f35..8272e0adc 100644 --- a/tests/tests/skip_trimming/main.nf.test +++ b/tests/skip_trimming.main.nf.test @@ -1,7 +1,7 @@ nextflow_pipeline { - name "Test pipeline" - script "../../../main.nf" + name "Test pipeline with trimming disabled" + script "../main.nf" tag "rnaseq" tag "PIPELINE" diff --git a/tests/tests/kallisto/main.nf.test.snap b/tests/tests/kallisto/main.nf.test.snap deleted file mode 100644 index 2deb6fb8d..000000000 --- a/tests/tests/kallisto/main.nf.test.snap +++ /dev/null @@ -1,12 +0,0 @@ -{ - "software_versions": { - "content": [ - "{BBMAP_BBSPLIT={bbmap=39.01}, CAT_FASTQ={cat=8.3}, CUSTOM_CATADDITIONALFASTA={python=3.9.5}, CUSTOM_GETCHROMSIZES={getchromsizes=1.16.1}, CUSTOM_TX2GENE={python=3.9.5}, FQ_SUBSAMPLE={fq=0.9.1 (2022-02-22)}, GTF2BED={perl=5.26.2}, GTF_FILTER={python=3.9.5}, GUNZIP_ADDITIONAL_FASTA={gunzip=1.1}, GUNZIP_GTF={gunzip=1.1}, KALLISTO_INDEX={kallisto=0.48.0}, KALLISTO_QUANT={kallisto=0.48.0}, SALMON_QUANT={salmon=1.10.1}, SE_GENE={bioconductor-summarizedexperiment=1.32.0}, TRIMGALORE={trimgalore=0.6.7, cutadapt=3.4}, TXIMETA_TXIMPORT={bioconductor-tximeta=1.20.1}, UNTAR_SALMON_INDEX={untar=1.3}, Workflow={nf-core/rnaseq=v3.15.0dev}}" - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-04-10T10:13:15.867122" - } -} \ No newline at end of file diff --git a/tests/tests/salmon/main.nf.test.snap b/tests/tests/salmon/main.nf.test.snap deleted file mode 100644 index 831b1e14b..000000000 --- a/tests/tests/salmon/main.nf.test.snap +++ /dev/null @@ -1,12 +0,0 @@ -{ - "software_versions": { - "content": [ - "{BBMAP_BBSPLIT={bbmap=39.01}, CAT_FASTQ={cat=8.3}, CUSTOM_CATADDITIONALFASTA={python=3.9.5}, CUSTOM_GETCHROMSIZES={getchromsizes=1.16.1}, CUSTOM_TX2GENE={python=3.9.5}, FQ_SUBSAMPLE={fq=0.9.1 (2022-02-22)}, GTF2BED={perl=5.26.2}, GTF_FILTER={python=3.9.5}, GUNZIP_ADDITIONAL_FASTA={gunzip=1.1}, GUNZIP_GTF={gunzip=1.1}, SALMON_QUANT={salmon=1.10.1}, SE_GENE={bioconductor-summarizedexperiment=1.32.0}, TRIMGALORE={trimgalore=0.6.7, cutadapt=3.4}, TXIMETA_TXIMPORT={bioconductor-tximeta=1.20.1}, UNTAR_SALMON_INDEX={untar=1.3}, Workflow={nf-core/rnaseq=v3.15.0dev}}" - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-04-10T10:31:20.108379" - } -} \ No newline at end of file From d1c636a7b6c1f78134faabde63c77d4241b027ad Mon Sep 17 00:00:00 2001 From: Adam Talbot <12817534+adamrtalbot@users.noreply.github.com> Date: Wed, 10 Apr 2024 14:54:28 +0100 Subject: [PATCH 287/634] Use profile test --input parameter --- .../tests/main.pipeline_initialistion.workflow.nf.test | 4 ---- tests/default.main.nf.test | 9 ++++----- tests/featurecounts.main.nf.test | 1 - tests/kallisto.main.nf.nf.test | 1 - tests/min_mapped_reads.main.nf.test | 1 - tests/remove_ribo_rna.main.nf.test | 1 - tests/salmon.main.nf.test | 1 - tests/skip_qc.main.nf.test | 1 - tests/skip_trimming.main.nf.test | 1 - 9 files changed, 4 insertions(+), 16 deletions(-) diff --git a/subworkflows/local/utils_nfcore_rnaseq_pipeline/tests/main.pipeline_initialistion.workflow.nf.test b/subworkflows/local/utils_nfcore_rnaseq_pipeline/tests/main.pipeline_initialistion.workflow.nf.test index e0b311d22..c1db3fda8 100644 --- a/subworkflows/local/utils_nfcore_rnaseq_pipeline/tests/main.pipeline_initialistion.workflow.nf.test +++ b/subworkflows/local/utils_nfcore_rnaseq_pipeline/tests/main.pipeline_initialistion.workflow.nf.test @@ -8,10 +8,6 @@ nextflow_workflow { when { params { - // parameters copied from test profile. - // We should be able to automatically import these somehow. - input = "https://raw.githubusercontent.com/nf-core/test-datasets/7f1614baeb0ddf66e60be78c3d9fa55440465ac8/samplesheet/v3.10/samplesheet_test.csv" - // Genome references fasta = "https://raw.githubusercontent.com/nf-core/test-datasets/7f1614baeb0ddf66e60be78c3d9fa55440465ac8/reference/genome.fasta" gtf = "https://raw.githubusercontent.com/nf-core/test-datasets/7f1614baeb0ddf66e60be78c3d9fa55440465ac8/reference/genes_with_empty_tid.gtf.gz" diff --git a/tests/default.main.nf.test b/tests/default.main.nf.test index 88e760c25..46e973b11 100644 --- a/tests/default.main.nf.test +++ b/tests/default.main.nf.test @@ -7,12 +7,11 @@ nextflow_pipeline { test("Default profile test") { - when { - params { - outdir = "$outputDir" - input = 'https://raw.githubusercontent.com/nf-core/test-datasets/7f1614baeb0ddf66e60be78c3d9fa55440465ac8/samplesheet/v3.10/samplesheet_test.csv' - } + when { + params { + outdir = "$outputDir" } + } then { assert workflow.success diff --git a/tests/featurecounts.main.nf.test b/tests/featurecounts.main.nf.test index 30362d3fb..cb978a8c6 100644 --- a/tests/featurecounts.main.nf.test +++ b/tests/featurecounts.main.nf.test @@ -10,7 +10,6 @@ nextflow_pipeline { when { params { outdir = "$outputDir" - input = 'https://raw.githubusercontent.com/nf-core/test-datasets/7f1614baeb0ddf66e60be78c3d9fa55440465ac8/samplesheet/v3.10/samplesheet_test.csv' featurecounts_group_type = false } } diff --git a/tests/kallisto.main.nf.nf.test b/tests/kallisto.main.nf.nf.test index 732cd82b1..4a9d30cd5 100644 --- a/tests/kallisto.main.nf.nf.test +++ b/tests/kallisto.main.nf.nf.test @@ -10,7 +10,6 @@ nextflow_pipeline { when { params { outdir = "$outputDir" - input = 'https://raw.githubusercontent.com/nf-core/test-datasets/7f1614baeb0ddf66e60be78c3d9fa55440465ac8/samplesheet/v3.10/samplesheet_test.csv' pseudo_aligner = 'kallisto' skip_qc = true skip_alignment = true diff --git a/tests/min_mapped_reads.main.nf.test b/tests/min_mapped_reads.main.nf.test index 8c8366bbb..6d59bfafd 100644 --- a/tests/min_mapped_reads.main.nf.test +++ b/tests/min_mapped_reads.main.nf.test @@ -10,7 +10,6 @@ nextflow_pipeline { when { params { outdir = "$outputDir" - input = 'https://raw.githubusercontent.com/nf-core/test-datasets/7f1614baeb0ddf66e60be78c3d9fa55440465ac8/samplesheet/v3.10/samplesheet_test.csv' min_mapped_reads = 90 } } diff --git a/tests/remove_ribo_rna.main.nf.test b/tests/remove_ribo_rna.main.nf.test index 955dde7cf..b4e54a509 100644 --- a/tests/remove_ribo_rna.main.nf.test +++ b/tests/remove_ribo_rna.main.nf.test @@ -10,7 +10,6 @@ nextflow_pipeline { when { params { outdir = "$outputDir" - input = 'https://raw.githubusercontent.com/nf-core/test-datasets/7f1614baeb0ddf66e60be78c3d9fa55440465ac8/samplesheet/v3.10/samplesheet_test.csv' remove_ribo_rna = true } } diff --git a/tests/salmon.main.nf.test b/tests/salmon.main.nf.test index d26c839c3..a19210f0d 100644 --- a/tests/salmon.main.nf.test +++ b/tests/salmon.main.nf.test @@ -10,7 +10,6 @@ nextflow_pipeline { when { params { outdir = "$outputDir" - input = 'https://raw.githubusercontent.com/nf-core/test-datasets/7f1614baeb0ddf66e60be78c3d9fa55440465ac8/samplesheet/v3.10/samplesheet_test.csv' pseudo_aligner = 'salmon' skip_qc = true skip_alignment = true diff --git a/tests/skip_qc.main.nf.test b/tests/skip_qc.main.nf.test index 1979a1b8d..f9a34fd8f 100644 --- a/tests/skip_qc.main.nf.test +++ b/tests/skip_qc.main.nf.test @@ -10,7 +10,6 @@ nextflow_pipeline { when { params { outdir = "$outputDir" - input = 'https://raw.githubusercontent.com/nf-core/test-datasets/7f1614baeb0ddf66e60be78c3d9fa55440465ac8/samplesheet/v3.10/samplesheet_test.csv' skip_qc = true } } diff --git a/tests/skip_trimming.main.nf.test b/tests/skip_trimming.main.nf.test index 8272e0adc..8a9bf5a9d 100644 --- a/tests/skip_trimming.main.nf.test +++ b/tests/skip_trimming.main.nf.test @@ -10,7 +10,6 @@ nextflow_pipeline { when { params { outdir = "$outputDir" - input = 'https://raw.githubusercontent.com/nf-core/test-datasets/7f1614baeb0ddf66e60be78c3d9fa55440465ac8/samplesheet/v3.10/samplesheet_test.csv' skip_qc = true } } From c259f30ed2067355acfbdeb735e6ade04296e47d Mon Sep 17 00:00:00 2001 From: Adam Talbot <12817534+adamrtalbot@users.noreply.github.com> Date: Wed, 10 Apr 2024 14:55:04 +0100 Subject: [PATCH 288/634] indentation --- tests/default.main.nf.test | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/default.main.nf.test b/tests/default.main.nf.test index 46e973b11..edfb96d70 100644 --- a/tests/default.main.nf.test +++ b/tests/default.main.nf.test @@ -7,11 +7,11 @@ nextflow_pipeline { test("Default profile test") { - when { - params { - outdir = "$outputDir" + when { + params { + outdir = "$outputDir" + } } - } then { assert workflow.success From 7323bb13273f0bec763574d7e0f35ddd3ad6e60c Mon Sep 17 00:00:00 2001 From: Adam Talbot <12817534+adamrtalbot@users.noreply.github.com> Date: Wed, 10 Apr 2024 17:58:39 +0100 Subject: [PATCH 289/634] Fixup CHANGELOG --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 81e1eb46e..2c8cbccbc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -64,7 +64,7 @@ Thank you to everyone else that has contributed by reporting bugs, enhancements - [PR #1266](https://github.com/nf-core/rnaseq/pull/1266) - Delete unecessary tags from nf.test files for modules and subworkflows - [PR #1253](https://github.com/nf-core/rnaseq/pull/1253) - Use nf-test files as matrix to test over in CI/CD for efficiency - [PR #1278](https://github.com/nf-core/rnaseq/pull/1278) - Delocalise pseudo quant workflow -- [PR ####](https://github.com/nf-core/rnaseq/pull/####) - Reorganise pipeline level tests into flat directory structure +- [PR #1280](https://github.com/nf-core/rnaseq/pull/1280) - Reorganise pipeline level tests into flat directory structure ### Parameters From 2f42e75ec6a062fbc6d86f949e7d5616cda49552 Mon Sep 17 00:00:00 2001 From: Adam Talbot <12817534+adamrtalbot@users.noreply.github.com> Date: Wed, 10 Apr 2024 17:03:07 +0000 Subject: [PATCH 290/634] Increase contents of default.main.nf.test.snap Changes: - Adds output files to nf-test snapshot - Used files that are important for downstream analysis to ensure that the snapshot is useful for testing - Should help stability of pipeline --- CHANGELOG.md | 3 ++- tests/default.main.nf.test | 33 ++++++++++++++++++++++++++++++-- tests/default.main.nf.test.snap | 34 +++++++++++++++++++++++++++++++++ 3 files changed, 67 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 81e1eb46e..1b9396deb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -64,7 +64,8 @@ Thank you to everyone else that has contributed by reporting bugs, enhancements - [PR #1266](https://github.com/nf-core/rnaseq/pull/1266) - Delete unecessary tags from nf.test files for modules and subworkflows - [PR #1253](https://github.com/nf-core/rnaseq/pull/1253) - Use nf-test files as matrix to test over in CI/CD for efficiency - [PR #1278](https://github.com/nf-core/rnaseq/pull/1278) - Delocalise pseudo quant workflow -- [PR ####](https://github.com/nf-core/rnaseq/pull/####) - Reorganise pipeline level tests into flat directory structure +- [PR #1280](https://github.com/nf-core/rnaseq/pull/1280) - Reorganise pipeline level tests into flat directory structure +- [PR #####](https://github.com/nf-core/rnaseq/pull/####) - Add output files to nf-test snapshot ### Parameters diff --git a/tests/default.main.nf.test b/tests/default.main.nf.test index edfb96d70..01a374869 100644 --- a/tests/default.main.nf.test +++ b/tests/default.main.nf.test @@ -14,10 +14,39 @@ nextflow_pipeline { } then { - assert workflow.success + assertAll( - { assert snapshot(UTILS.removeNextflowVersion("$outputDir/pipeline_info/nf_core_rnaseq_software_mqc_versions.yml")).match("software_versions") } + { assert workflow.success }, + { assert snapshot(UTILS.removeNextflowVersion("$outputDir/pipeline_info/nf_core_rnaseq_software_mqc_versions.yml")).match("software_versions") }, + { assert snapshot( + path("${params.outdir}/bbsplit/RAP1_IAA_30M_REP1.stats.txt"), + path("${params.outdir}/bbsplit/RAP1_UNINDUCED_REP1.stats.txt"), + path("${params.outdir}/bbsplit/RAP1_UNINDUCED_REP2.stats.txt"), + path("${params.outdir}/bbsplit/WT_REP1.stats.txt"), + path("${params.outdir}/bbsplit/WT_REP2.stats.txt"), + path("${params.outdir}/salmon/salmon.merged.transcript_counts.tsv"), + path("${params.outdir}/salmon/salmon.merged.transcript_lengths.tsv"), + path("${params.outdir}/salmon/salmon.merged.transcript_tpm.tsv"), + path("${params.outdir}/custom/out/genome_gfp.fasta"), + path("${params.outdir}/custom/out/genome_gfp.gtf"), + path("${params.outdir}/star_salmon/bigwig/RAP1_IAA_30M_REP1.forward.bigWig"), + path("${params.outdir}/star_salmon/bigwig/RAP1_IAA_30M_REP1.reverse.bigWig"), + path("${params.outdir}/star_salmon/bigwig/RAP1_UNINDUCED_REP1.forward.bigWig"), + path("${params.outdir}/star_salmon/bigwig/RAP1_UNINDUCED_REP1.reverse.bigWig"), + path("${params.outdir}/star_salmon/bigwig/RAP1_UNINDUCED_REP2.forward.bigWig"), + path("${params.outdir}/star_salmon/bigwig/RAP1_UNINDUCED_REP2.reverse.bigWig"), + path("${params.outdir}/star_salmon/bigwig/WT_REP1.forward.bigWig"), + path("${params.outdir}/star_salmon/bigwig/WT_REP1.reverse.bigWig"), + path("${params.outdir}/star_salmon/bigwig/WT_REP2.forward.bigWig"), + path("${params.outdir}/star_salmon/bigwig/WT_REP2.reverse.bigWig"), + path("${params.outdir}/star_salmon/RAP1_IAA_30M_REP1.markdup.sorted.bam"), + path("${params.outdir}/star_salmon/RAP1_UNINDUCED_REP1.markdup.sorted.bam"), + path("${params.outdir}/star_salmon/RAP1_UNINDUCED_REP2.markdup.sorted.bam"), + path("${params.outdir}/star_salmon/WT_REP1.markdup.sorted.bam"), + path("${params.outdir}/star_salmon/WT_REP2.markdup.sorted.bam") + ).match("output_files") + } ) } } diff --git a/tests/default.main.nf.test.snap b/tests/default.main.nf.test.snap index 299628d72..dc6628a4d 100644 --- a/tests/default.main.nf.test.snap +++ b/tests/default.main.nf.test.snap @@ -1,4 +1,38 @@ { + "output_files": { + "content": [ + "RAP1_IAA_30M_REP1.stats.txt:md5,a87292c6f7166096166a9015c2e63dac", + "RAP1_UNINDUCED_REP1.stats.txt:md5,781e49024150a8313779c574b58ad035", + "RAP1_UNINDUCED_REP2.stats.txt:md5,e455d0163bf2d988224b0c0092605213", + "WT_REP1.stats.txt:md5,6eab6936804c1157d5e1c61c0562d7de", + "WT_REP2.stats.txt:md5,002ddf6b828d34979652a40f05462843", + "salmon.merged.transcript_counts.tsv:md5,ff0f5be09ca7a322672c0074ba35da17", + "salmon.merged.transcript_lengths.tsv:md5,5d8b6275766ddceaf00bc704447f86ba", + "salmon.merged.transcript_tpm.tsv:md5,74c9bc32d53219e07b7d4e10e6c007b3", + "genome_gfp.fasta:md5,e23e302af63736a199985a169fdac055", + "genome_gfp.gtf:md5,c98b12c302f15731bfc36bcf297cfe28", + "RAP1_IAA_30M_REP1.forward.bigWig:md5,0abafd7a9f9035469c003fd3dabd73e8", + "RAP1_IAA_30M_REP1.reverse.bigWig:md5,0f1e9ac71fc0b99785f06ecb860ef00e", + "RAP1_UNINDUCED_REP1.forward.bigWig:md5,09e8d65e21ac92e9a3b78afe3acdf28b", + "RAP1_UNINDUCED_REP1.reverse.bigWig:md5,8b002d23911f95f1c5b9965c2e7d0737", + "RAP1_UNINDUCED_REP2.forward.bigWig:md5,eede9cac23d47c4685dc13507e97bfb9", + "RAP1_UNINDUCED_REP2.reverse.bigWig:md5,a835e0ac51231016c52de94c18ebd466", + "WT_REP1.forward.bigWig:md5,92ad01ddd1dbb7f6d7e2eae23df58c7c", + "WT_REP1.reverse.bigWig:md5,dcac37ef5fff108afd0632388919dcf7", + "WT_REP2.forward.bigWig:md5,d10cbea27b82745b46077191d3ff2820", + "WT_REP2.reverse.bigWig:md5,2b3a15b511efdbc838574200ee2bec0c", + "RAP1_IAA_30M_REP1.markdup.sorted.bam:md5,21c43660bc4ad0c6bffa509dc275b336", + "RAP1_UNINDUCED_REP1.markdup.sorted.bam:md5,9ff074bb032c507eaab240b2de426721", + "RAP1_UNINDUCED_REP2.markdup.sorted.bam:md5,8be419214c011b5c46d36d0fe3160895", + "WT_REP1.markdup.sorted.bam:md5,c5b69c0480c4fa14fa54f3e3a7f49b23", + "WT_REP2.markdup.sorted.bam:md5,452ccf76f181d11795c54674f1e9e731" + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-04-10T17:00:50.416385567" + }, "software_versions": { "content": [ "{BBMAP_BBSPLIT={bbmap=39.01}, BEDTOOLS_GENOMECOV_FW={bedtools=2.31.1}, CAT_FASTQ={cat=8.3}, CUSTOM_CATADDITIONALFASTA={python=3.9.5}, CUSTOM_GETCHROMSIZES={getchromsizes=1.16.1}, CUSTOM_TX2GENE={python=3.9.5}, DESEQ2_QC_PSEUDO={r-base=4.0.3, bioconductor-deseq2=1.28.0}, DESEQ2_QC_STAR_SALMON={r-base=4.0.3, bioconductor-deseq2=1.28.0}, DUPRADAR={bioconductor-dupradar=1.32.0}, FASTQC={fastqc=0.12.1}, FQ_SUBSAMPLE={fq=0.9.1 (2022-02-22)}, GTF2BED={perl=5.26.2}, GTF_FILTER={python=3.9.5}, GUNZIP_ADDITIONAL_FASTA={gunzip=1.1}, GUNZIP_GTF={gunzip=1.1}, MULTIQC_CUSTOM_BIOTYPE={python=3.9.5}, PICARD_MARKDUPLICATES={picard=3.1.1}, QUALIMAP_RNASEQ={qualimap=2.3}, RSEQC_BAMSTAT={rseqc=5.0.2}, RSEQC_INFEREXPERIMENT={rseqc=5.0.2}, RSEQC_INNERDISTANCE={rseqc=5.0.2}, RSEQC_JUNCTIONANNOTATION={rseqc=5.0.2}, RSEQC_JUNCTIONSATURATION={rseqc=5.0.2}, RSEQC_READDISTRIBUTION={rseqc=5.0.2}, RSEQC_READDUPLICATION={rseqc=5.0.2}, SALMON_QUANT={salmon=1.10.1}, SAMTOOLS_FLAGSTAT={samtools=1.19.2}, SAMTOOLS_IDXSTATS={samtools=1.19.2}, SAMTOOLS_INDEX={samtools=1.19.2}, SAMTOOLS_SORT={samtools=1.19.2}, SAMTOOLS_STATS={samtools=1.19.2}, SE_GENE={bioconductor-summarizedexperiment=1.32.0}, STAR_ALIGN={star=2.7.10a, samtools=1.18, gawk=5.1.0}, STAR_GENOMEGENERATE={star=2.7.10a, samtools=1.18, gawk=5.1.0}, STRINGTIE_STRINGTIE={stringtie=2.2.1}, SUBREAD_FEATURECOUNTS={subread=2.0.1}, TRIMGALORE={trimgalore=0.6.7, cutadapt=3.4}, TXIMETA_TXIMPORT={bioconductor-tximeta=1.20.1}, UCSC_BEDCLIP={ucsc=377}, UCSC_BEDGRAPHTOBIGWIG={ucsc=445}, UNTAR_SALMON_INDEX={untar=1.3}, Workflow={nf-core/rnaseq=v3.15.0dev}}" From 651c755748918a040a648c8ac570014fa2b856be Mon Sep 17 00:00:00 2001 From: Adam Talbot <12817534+adamrtalbot@users.noreply.github.com> Date: Wed, 10 Apr 2024 17:04:07 +0000 Subject: [PATCH 291/634] CHANGELOG --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1b9396deb..4b04986a7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -65,7 +65,7 @@ Thank you to everyone else that has contributed by reporting bugs, enhancements - [PR #1253](https://github.com/nf-core/rnaseq/pull/1253) - Use nf-test files as matrix to test over in CI/CD for efficiency - [PR #1278](https://github.com/nf-core/rnaseq/pull/1278) - Delocalise pseudo quant workflow - [PR #1280](https://github.com/nf-core/rnaseq/pull/1280) - Reorganise pipeline level tests into flat directory structure -- [PR #####](https://github.com/nf-core/rnaseq/pull/####) - Add output files to nf-test snapshot +- [PR #1283](https://github.com/nf-core/rnaseq/pull/1283) - Add output files to nf-test snapshot ### Parameters From 9d281ab847b638b629504bf2a768c3e845464f1f Mon Sep 17 00:00:00 2001 From: Adam Talbot <12817534+adamrtalbot@users.noreply.github.com> Date: Thu, 11 Apr 2024 10:50:30 +0000 Subject: [PATCH 292/634] Remove variable files from default pipeline snapshot --- tests/default.main.nf.test | 9 +-------- tests/default.main.nf.test.snap | 11 ++--------- 2 files changed, 3 insertions(+), 17 deletions(-) diff --git a/tests/default.main.nf.test b/tests/default.main.nf.test index 01a374869..9bf0f8b31 100644 --- a/tests/default.main.nf.test +++ b/tests/default.main.nf.test @@ -26,8 +26,6 @@ nextflow_pipeline { path("${params.outdir}/bbsplit/WT_REP1.stats.txt"), path("${params.outdir}/bbsplit/WT_REP2.stats.txt"), path("${params.outdir}/salmon/salmon.merged.transcript_counts.tsv"), - path("${params.outdir}/salmon/salmon.merged.transcript_lengths.tsv"), - path("${params.outdir}/salmon/salmon.merged.transcript_tpm.tsv"), path("${params.outdir}/custom/out/genome_gfp.fasta"), path("${params.outdir}/custom/out/genome_gfp.gtf"), path("${params.outdir}/star_salmon/bigwig/RAP1_IAA_30M_REP1.forward.bigWig"), @@ -39,12 +37,7 @@ nextflow_pipeline { path("${params.outdir}/star_salmon/bigwig/WT_REP1.forward.bigWig"), path("${params.outdir}/star_salmon/bigwig/WT_REP1.reverse.bigWig"), path("${params.outdir}/star_salmon/bigwig/WT_REP2.forward.bigWig"), - path("${params.outdir}/star_salmon/bigwig/WT_REP2.reverse.bigWig"), - path("${params.outdir}/star_salmon/RAP1_IAA_30M_REP1.markdup.sorted.bam"), - path("${params.outdir}/star_salmon/RAP1_UNINDUCED_REP1.markdup.sorted.bam"), - path("${params.outdir}/star_salmon/RAP1_UNINDUCED_REP2.markdup.sorted.bam"), - path("${params.outdir}/star_salmon/WT_REP1.markdup.sorted.bam"), - path("${params.outdir}/star_salmon/WT_REP2.markdup.sorted.bam") + path("${params.outdir}/star_salmon/bigwig/WT_REP2.reverse.bigWig") ).match("output_files") } ) diff --git a/tests/default.main.nf.test.snap b/tests/default.main.nf.test.snap index dc6628a4d..cfe620654 100644 --- a/tests/default.main.nf.test.snap +++ b/tests/default.main.nf.test.snap @@ -7,8 +7,6 @@ "WT_REP1.stats.txt:md5,6eab6936804c1157d5e1c61c0562d7de", "WT_REP2.stats.txt:md5,002ddf6b828d34979652a40f05462843", "salmon.merged.transcript_counts.tsv:md5,ff0f5be09ca7a322672c0074ba35da17", - "salmon.merged.transcript_lengths.tsv:md5,5d8b6275766ddceaf00bc704447f86ba", - "salmon.merged.transcript_tpm.tsv:md5,74c9bc32d53219e07b7d4e10e6c007b3", "genome_gfp.fasta:md5,e23e302af63736a199985a169fdac055", "genome_gfp.gtf:md5,c98b12c302f15731bfc36bcf297cfe28", "RAP1_IAA_30M_REP1.forward.bigWig:md5,0abafd7a9f9035469c003fd3dabd73e8", @@ -20,18 +18,13 @@ "WT_REP1.forward.bigWig:md5,92ad01ddd1dbb7f6d7e2eae23df58c7c", "WT_REP1.reverse.bigWig:md5,dcac37ef5fff108afd0632388919dcf7", "WT_REP2.forward.bigWig:md5,d10cbea27b82745b46077191d3ff2820", - "WT_REP2.reverse.bigWig:md5,2b3a15b511efdbc838574200ee2bec0c", - "RAP1_IAA_30M_REP1.markdup.sorted.bam:md5,21c43660bc4ad0c6bffa509dc275b336", - "RAP1_UNINDUCED_REP1.markdup.sorted.bam:md5,9ff074bb032c507eaab240b2de426721", - "RAP1_UNINDUCED_REP2.markdup.sorted.bam:md5,8be419214c011b5c46d36d0fe3160895", - "WT_REP1.markdup.sorted.bam:md5,c5b69c0480c4fa14fa54f3e3a7f49b23", - "WT_REP2.markdup.sorted.bam:md5,452ccf76f181d11795c54674f1e9e731" + "WT_REP2.reverse.bigWig:md5,2b3a15b511efdbc838574200ee2bec0c" ], "meta": { "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-04-10T17:00:50.416385567" + "timestamp": "2024-04-11T10:33:44.217825304" }, "software_versions": { "content": [ From 4c0ac4cbd4478747f0d6709c41c42c4c7dd02dfb Mon Sep 17 00:00:00 2001 From: Adam Talbot <12817534+adamrtalbot@users.noreply.github.com> Date: Thu, 11 Apr 2024 13:16:33 +0000 Subject: [PATCH 293/634] update snap --- tests/default.main.nf.test.snap | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/default.main.nf.test.snap b/tests/default.main.nf.test.snap index cfe620654..76204eed5 100644 --- a/tests/default.main.nf.test.snap +++ b/tests/default.main.nf.test.snap @@ -5,7 +5,7 @@ "RAP1_UNINDUCED_REP1.stats.txt:md5,781e49024150a8313779c574b58ad035", "RAP1_UNINDUCED_REP2.stats.txt:md5,e455d0163bf2d988224b0c0092605213", "WT_REP1.stats.txt:md5,6eab6936804c1157d5e1c61c0562d7de", - "WT_REP2.stats.txt:md5,002ddf6b828d34979652a40f05462843", + "WT_REP2.stats.txt:md5,f6df7d4d9a5b553209f31dec2a30f92b", "salmon.merged.transcript_counts.tsv:md5,ff0f5be09ca7a322672c0074ba35da17", "genome_gfp.fasta:md5,e23e302af63736a199985a169fdac055", "genome_gfp.gtf:md5,c98b12c302f15731bfc36bcf297cfe28", @@ -24,7 +24,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-04-11T10:33:44.217825304" + "timestamp": "2024-04-11T13:15:25.54128645" }, "software_versions": { "content": [ From b903195e5ce299e2aa70c5ec319b630daf96bf56 Mon Sep 17 00:00:00 2001 From: Adam Talbot <12817534+adamrtalbot@users.noreply.github.com> Date: Thu, 11 Apr 2024 15:00:15 +0000 Subject: [PATCH 294/634] Remove more from snaps --- tests/default.main.nf.test | 5 ----- tests/default.main.nf.test.snap | 7 +------ 2 files changed, 1 insertion(+), 11 deletions(-) diff --git a/tests/default.main.nf.test b/tests/default.main.nf.test index 9bf0f8b31..46e11692b 100644 --- a/tests/default.main.nf.test +++ b/tests/default.main.nf.test @@ -20,11 +20,6 @@ nextflow_pipeline { { assert workflow.success }, { assert snapshot(UTILS.removeNextflowVersion("$outputDir/pipeline_info/nf_core_rnaseq_software_mqc_versions.yml")).match("software_versions") }, { assert snapshot( - path("${params.outdir}/bbsplit/RAP1_IAA_30M_REP1.stats.txt"), - path("${params.outdir}/bbsplit/RAP1_UNINDUCED_REP1.stats.txt"), - path("${params.outdir}/bbsplit/RAP1_UNINDUCED_REP2.stats.txt"), - path("${params.outdir}/bbsplit/WT_REP1.stats.txt"), - path("${params.outdir}/bbsplit/WT_REP2.stats.txt"), path("${params.outdir}/salmon/salmon.merged.transcript_counts.tsv"), path("${params.outdir}/custom/out/genome_gfp.fasta"), path("${params.outdir}/custom/out/genome_gfp.gtf"), diff --git a/tests/default.main.nf.test.snap b/tests/default.main.nf.test.snap index 76204eed5..c221fd786 100644 --- a/tests/default.main.nf.test.snap +++ b/tests/default.main.nf.test.snap @@ -1,11 +1,6 @@ { "output_files": { "content": [ - "RAP1_IAA_30M_REP1.stats.txt:md5,a87292c6f7166096166a9015c2e63dac", - "RAP1_UNINDUCED_REP1.stats.txt:md5,781e49024150a8313779c574b58ad035", - "RAP1_UNINDUCED_REP2.stats.txt:md5,e455d0163bf2d988224b0c0092605213", - "WT_REP1.stats.txt:md5,6eab6936804c1157d5e1c61c0562d7de", - "WT_REP2.stats.txt:md5,f6df7d4d9a5b553209f31dec2a30f92b", "salmon.merged.transcript_counts.tsv:md5,ff0f5be09ca7a322672c0074ba35da17", "genome_gfp.fasta:md5,e23e302af63736a199985a169fdac055", "genome_gfp.gtf:md5,c98b12c302f15731bfc36bcf297cfe28", @@ -24,7 +19,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-04-11T13:15:25.54128645" + "timestamp": "2024-04-11T14:39:58.637279952" }, "software_versions": { "content": [ From d62e208bbe9853bd7ffeb481d7d8204cd4de675e Mon Sep 17 00:00:00 2001 From: maxulysse Date: Fri, 12 Apr 2024 09:56:19 +0200 Subject: [PATCH 295/634] feat(igenomes): update name as in template --- nextflow.config | 2 +- nextflow_schema.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/nextflow.config b/nextflow.config index 74108e825..4f91dea55 100644 --- a/nextflow.config +++ b/nextflow.config @@ -23,7 +23,7 @@ params { featurecounts_group_type = 'gene_biotype' gencode = false save_reference = false - igenomes_base = 's3://ngi-igenomes/igenomes' + igenomes_base = 's3://ngi-igenomes/igenomes/' igenomes_ignore = false // UMI handling diff --git a/nextflow_schema.json b/nextflow_schema.json index 5a93d7060..eb0182606 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -200,7 +200,7 @@ "type": "string", "format": "directory-path", "description": "Directory / URL base for iGenomes references.", - "default": "s3://ngi-igenomes/igenomes", + "default": "s3://ngi-igenomes/igenomes/", "fa_icon": "fas fa-cloud-download-alt", "hidden": true }, From a54300aea7d420d1c7a24e2638f4f57e19f21468 Mon Sep 17 00:00:00 2001 From: maxulysse Date: Fri, 12 Apr 2024 09:57:00 +0200 Subject: [PATCH 296/634] feat(references): fix usage of igenomes references --- main.nf | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/main.nf b/main.nf index 0ea7b6a9f..5a3f57700 100755 --- a/main.nf +++ b/main.nf @@ -17,19 +17,19 @@ nextflow.enable.dsl = 2 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ -getGenomeAttribute('additional_fasta', 'additional_fasta') -getGenomeAttribute('bbsplit', 'bbsplit_index') -getGenomeAttribute('bed12', 'gene_bed') -getGenomeAttribute('fasta', 'fasta') -getGenomeAttribute('gff', 'gff') -getGenomeAttribute('gtf', 'gtf') -getGenomeAttribute('hisat2', 'hisat2') -getGenomeAttribute('kallisto', 'kallisto_index') -getGenomeAttribute('rsem', 'rsem') -getGenomeAttribute('salmon', 'salmon') -getGenomeAttribute('sortmerna', 'sortmerna_index') -getGenomeAttribute('star', 'star_index') -getGenomeAttribute('transcript_fasta', 'transcript_fasta') +params.additional_fasta = getGenomeAttribute('additional_fasta') +params.bbsplit_index = getGenomeAttribute('bbsplit') +params.gene_bed = getGenomeAttribute('bed12') +params.fasta = getGenomeAttribute('fasta') +params.gff = getGenomeAttribute('gff') +params.gtf = getGenomeAttribute('gtf') +params.hisat2_index = getGenomeAttribute('hisat2') +params.kallisto_index = getGenomeAttribute('kallisto') +params.rsem_index = getGenomeAttribute('rsem') +params.salmon_index = getGenomeAttribute('salmon') +params.sortmerna_index = getGenomeAttribute('sortmerna') +params.star_index = getGenomeAttribute('star') +params.transcript_fasta = getGenomeAttribute('transcript_fasta') /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -181,7 +181,7 @@ workflow { // Get attribute from genome config file e.g. fasta // -def getGenomeAttribute(attribute) { +def getGenomeAttribute(attribute, key) { if (params.genomes && params.genome && params.genomes.containsKey(params.genome)) { if (params.genomes[ params.genome ].containsKey(attribute)) { return params.genomes[ params.genome ][ attribute ] From 8f3603acea5ce716133ad9ede9e45005288e3de5 Mon Sep 17 00:00:00 2001 From: maxulysse Date: Fri, 12 Apr 2024 17:26:13 +0200 Subject: [PATCH 297/634] no need for key --- main.nf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/main.nf b/main.nf index 5a3f57700..768161c4b 100755 --- a/main.nf +++ b/main.nf @@ -181,7 +181,7 @@ workflow { // Get attribute from genome config file e.g. fasta // -def getGenomeAttribute(attribute, key) { +def getGenomeAttribute(attribute) { if (params.genomes && params.genome && params.genomes.containsKey(params.genome)) { if (params.genomes[ params.genome ].containsKey(attribute)) { return params.genomes[ params.genome ][ attribute ] From 17767e1db512832f1bcdd0fae9c859205f4bc623 Mon Sep 17 00:00:00 2001 From: maxulysse Date: Fri, 12 Apr 2024 17:55:03 +0200 Subject: [PATCH 298/634] remove tests for functionned removed --- .../tests/main.function.nf.test | 58 ------------------- .../tests/main.function.nf.test.snap | 20 +------ 2 files changed, 1 insertion(+), 77 deletions(-) diff --git a/subworkflows/local/utils_nfcore_rnaseq_pipeline/tests/main.function.nf.test b/subworkflows/local/utils_nfcore_rnaseq_pipeline/tests/main.function.nf.test index 37d5e6bbe..4d76295df 100644 --- a/subworkflows/local/utils_nfcore_rnaseq_pipeline/tests/main.function.nf.test +++ b/subworkflows/local/utils_nfcore_rnaseq_pipeline/tests/main.function.nf.test @@ -132,64 +132,6 @@ nextflow_function { } - test("Test Function getGenomeAttribute finds attribute") { - - function "getGenomeAttribute" - - when { - params { - genome = "myTest" - genomes { - "myTest" { - myAttribute = "myValue" - } - } - } - function { - """ - input[0] = "myAttribute" - """ - } - } - - then { - assertAll( - { assert function.success }, - { assert snapshot(function.result).match() } - ) - } - - } - - test("Test Function getGenomeAttribute missing attribute") { - - function "getGenomeAttribute" - - when { - params { - genome = "myTest" - genomes { - "myTest" { - myAttribute = "myValue" - } - } - } - function { - """ - input[0] = "missingAttribute" - """ - } - } - - then { - assertAll( - { assert function.success }, - { assert snapshot(function.result).match() } - ) - } - - } - test("Test Function genomeExistsError finds genome") { function "genomeExistsError" diff --git a/subworkflows/local/utils_nfcore_rnaseq_pipeline/tests/main.function.nf.test.snap b/subworkflows/local/utils_nfcore_rnaseq_pipeline/tests/main.function.nf.test.snap index 9eb15b85d..ebd318d68 100644 --- a/subworkflows/local/utils_nfcore_rnaseq_pipeline/tests/main.function.nf.test.snap +++ b/subworkflows/local/utils_nfcore_rnaseq_pipeline/tests/main.function.nf.test.snap @@ -45,14 +45,6 @@ }, "timestamp": "2024-03-06T14:33:26.903306" }, - "Test Function getGenomeAttribute missing attribute": { - "content": null, - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-03-06T14:32:55.635006" - }, "Test Function getSalmonInferredStrandedness unstranded": { "content": [ "unstranded" @@ -123,16 +115,6 @@ }, "timestamp": "2024-03-06T14:33:40.548126" }, - "Test Function getGenomeAttribute finds attribute": { - "content": [ - "myValue" - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-03-06T14:32:52.593188" - }, "Test Function multiqcTsvFromList": { "content": [ "id\tattribute\ntest\nvalue" @@ -256,4 +238,4 @@ }, "timestamp": "2024-03-06T14:34:10.929416" } -} \ No newline at end of file +} From fbaef17db03a4126fc4d0cfbdbe821e343cfba6e Mon Sep 17 00:00:00 2001 From: Matthias Zepper Date: Fri, 8 Mar 2024 21:33:36 +0100 Subject: [PATCH 299/634] Improve the extra_args parameter consolidation so it can override presets from the config. --- subworkflows/local/align_star/nextflow.config | 40 ++++++++++++------- .../nextflow.config | 14 +++++-- 2 files changed, 36 insertions(+), 18 deletions(-) diff --git a/subworkflows/local/align_star/nextflow.config b/subworkflows/local/align_star/nextflow.config index 68bfef562..a7eb7683c 100644 --- a/subworkflows/local/align_star/nextflow.config +++ b/subworkflows/local/align_star/nextflow.config @@ -1,20 +1,32 @@ if (!params.skip_alignment && params.aligner == 'star_salmon') { process { withName: '.*:ALIGN_STAR:STAR_ALIGN|.*:ALIGN_STAR:STAR_ALIGN_IGENOMES' { - ext.args = { [ - '--quantMode TranscriptomeSAM', - '--twopassMode Basic', - '--outSAMtype BAM Unsorted', - '--readFilesCommand zcat', - '--runRNGseed 0', - '--outFilterMultimapNmax 20', - '--alignSJDBoverhangMin 1', - '--outSAMattributes NH HI AS NM MD', - '--quantTranscriptomeBan Singleend', - '--outSAMstrandField intronMotif', - params.save_unaligned ? '--outReadsUnmapped Fastx' : '', - params.extra_star_align_args ? params.extra_star_align_args.split("\\s(?=--)") : '' - ].flatten().unique(false).join(' ').trim() } + ext.args = { + def preset_args = [ + '--quantMode TranscriptomeSAM', + '--twopassMode Basic', + '--outSAMtype BAM Unsorted', + '--readFilesCommand zcat', + '--runRNGseed 0', + '--outFilterMultimapNmax 20', + '--alignSJDBoverhangMin 1', + '--outSAMattributes NH HI AS NM MD', + '--quantTranscriptomeBan Singleend', + '--outSAMstrandField intronMotif', + params.save_unaligned ? '--outReadsUnmapped Fastx' : '' + ] + + def extra_args = params.extra_star_align_args ? params.extra_star_align_args.split("\\s(?=--)").unique() : [] + + extra_args.each { extra_arg -> + def extra_arg_key = extra_arg.split(' ')[0] + preset_args = preset_args.findAll { !it.startsWith(extra_arg_key) } + preset_args.add(extra_arg) + } + + preset_args.join(' ').trim() + } + publishDir = [ [ path: { "${params.outdir}/${params.aligner}/log" }, diff --git a/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/nextflow.config b/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/nextflow.config index 7279111e5..875813b91 100644 --- a/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/nextflow.config +++ b/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/nextflow.config @@ -13,10 +13,16 @@ if (!params.skip_trimming) { process { withName: '.*:FASTQ_FASTQC_UMITOOLS_TRIMGALORE:TRIMGALORE' { ext.args = { - [ - "--fastqc_args '-t ${task.cpus}'", - params.extra_trimgalore_args ? params.extra_trimgalore_args.split("\\s(?=--)") : '' - ].flatten().unique(false).join(' ').trim() + def preset_args = ["--fastqc_args '-t ${task.cpus}'"] + def extra_args = params.extra_trimgalore_args ? params.extra_trimgalore_args.split("\\s(?=--)").unique() : [] + + extra_args.each { extra_arg -> + def extra_arg_key = extra_arg.split(' ')[0] + preset_args = preset_args.findAll { !it.startsWith(extra_arg_key) } + preset_args.add(extra_arg) + } + + preset_args.join(' ').trim() } publishDir = [ [ From 0d7e0f529bdb8fbbd489f56693c95f48400ff5c4 Mon Sep 17 00:00:00 2001 From: Matthias Zepper Date: Fri, 8 Mar 2024 21:56:36 +0100 Subject: [PATCH 300/634] Changelog update. --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4b04986a7..a3ae93973 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -56,6 +56,7 @@ Thank you to everyone else that has contributed by reporting bugs, enhancements - [PR #1245](https://github.com/nf-core/rnaseq/pull/1245) - nf test quantify rsem - [PR #1246](https://github.com/nf-core/rnaseq/pull/1246) - nf-test quantify pseudoalignment - [PR #1247](https://github.com/nf-core/rnaseq/pull/1247) - nf-test prepare_genome +- [PR #1248](https://github.com/nf-core/rnaseq/pull/1248) - Improved ext.args consolidation for STAR and TRIMGALORE extra_args parameters - [PR #1249](https://github.com/nf-core/rnaseq/pull/1249) - Include nf-tests for rsem_merge_counts module - [PR #1250](https://github.com/nf-core/rnaseq/pull/1250) - Remove all tags.yml files because the testing system has changed - [PR #1251](https://github.com/nf-core/rnaseq/pull/1251) - Replace deseq2qc paths From 934019e2271f9abf79aff968277f0700eacf215a Mon Sep 17 00:00:00 2001 From: Matthias Zepper Date: Tue, 16 Apr 2024 19:57:24 +0200 Subject: [PATCH 301/634] Implement Jonathan Manning's map-method for extra argument consolidation for the local STAR alignment subworkflow. --- subworkflows/local/align_star/nextflow.config | 45 ++++++++++--------- 1 file changed, 25 insertions(+), 20 deletions(-) diff --git a/subworkflows/local/align_star/nextflow.config b/subworkflows/local/align_star/nextflow.config index a7eb7683c..4cecc6c3a 100644 --- a/subworkflows/local/align_star/nextflow.config +++ b/subworkflows/local/align_star/nextflow.config @@ -2,29 +2,34 @@ if (!params.skip_alignment && params.aligner == 'star_salmon') { process { withName: '.*:ALIGN_STAR:STAR_ALIGN|.*:ALIGN_STAR:STAR_ALIGN_IGENOMES' { ext.args = { - def preset_args = [ - '--quantMode TranscriptomeSAM', - '--twopassMode Basic', - '--outSAMtype BAM Unsorted', - '--readFilesCommand zcat', - '--runRNGseed 0', - '--outFilterMultimapNmax 20', - '--alignSJDBoverhangMin 1', - '--outSAMattributes NH HI AS NM MD', - '--quantTranscriptomeBan Singleend', - '--outSAMstrandField intronMotif', - params.save_unaligned ? '--outReadsUnmapped Fastx' : '' - ] + // Function to convert argument strings into a map + def argsToMap(String args) { + args.split("\\s(?=--)").collectEntries { + def (key, value) = it.trim().split(/\s+/, 2) + [(key): value] + } + } - def extra_args = params.extra_star_align_args ? params.extra_star_align_args.split("\\s(?=--)").unique() : [] + // Initialize the map with preconfigured values + def preset_args_map = argsToMap(""" + --quantMode TranscriptomeSAM + --twopassMode Basic + --outSAMtype BAM Unsorted + --readFilesCommand zcat + --runRNGseed 0 + --outFilterMultimapNmax 20 + --alignSJDBoverhangMin 1 + --outSAMattributes NH HI AS NM MD + --quantTranscriptomeBan Singleend + --outSAMstrandField intronMotif + ${params.save_unaligned ? '--outReadsUnmapped Fastx' : ''} + """.trim()) - extra_args.each { extra_arg -> - def extra_arg_key = extra_arg.split(' ')[0] - preset_args = preset_args.findAll { !it.startsWith(extra_arg_key) } - preset_args.add(extra_arg) - } + // Consolidate the extra arguments + def final_args_map = preset_args_map + (params.extra_star_align_args ? argsToMap(params.extra_star_align_args) : [:]) - preset_args.join(' ').trim() + // Convert the map back to a list and then to a single string + final_args_map.collect { key, value -> "${key} ${value}" }.join(' ').trim() } publishDir = [ From 802758588323a62ffc2c0b708c35c3571322b1f9 Mon Sep 17 00:00:00 2001 From: Matthias Zepper Date: Tue, 16 Apr 2024 19:58:12 +0200 Subject: [PATCH 302/634] Implement Jonathan Manning's map-method for extra argument consolidation for the FastQC-UMItools-Trimgalore subworkflow.. --- .../nextflow.config | 24 ++++++++++++------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/nextflow.config b/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/nextflow.config index 875813b91..15682cffa 100644 --- a/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/nextflow.config +++ b/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/nextflow.config @@ -13,16 +13,24 @@ if (!params.skip_trimming) { process { withName: '.*:FASTQ_FASTQC_UMITOOLS_TRIMGALORE:TRIMGALORE' { ext.args = { - def preset_args = ["--fastqc_args '-t ${task.cpus}'"] - def extra_args = params.extra_trimgalore_args ? params.extra_trimgalore_args.split("\\s(?=--)").unique() : [] - - extra_args.each { extra_arg -> - def extra_arg_key = extra_arg.split(' ')[0] - preset_args = preset_args.findAll { !it.startsWith(extra_arg_key) } - preset_args.add(extra_arg) + // Function to convert argument strings into a map + def argsToMap(String args) { + args.split("\\s(?=--)").collectEntries { + def (key, value) = it.trim().split(/\s+/, 2) + [(key): value] + } } - preset_args.join(' ').trim() + // Initialize the map with preconfigured values + def preset_args_map = argsToMap(""" + --fastqc_args '-t ${task.cpus}' + """.trim()) + + // Consolidate the extra arguments + def final_args_map = preset_args_map + (params.extra_trimgalore_args ? argsToMap(params.extra_trimgalore_args) : [:]) + + // Convert the map back to a list and then to a single string + final_args_map.collect { key, value -> "${key} ${value}" }.join(' ').trim() } publishDir = [ [ From 6ab2e44636d513ca6ad2e8e9fea539c9173febc0 Mon Sep 17 00:00:00 2001 From: Matthias Zepper <6963520+MatthiasZepper@users.noreply.github.com> Date: Wed, 17 Apr 2024 12:24:43 +0200 Subject: [PATCH 303/634] Apply @pinin4fjords (Jonathan Manning)'s suggestions from code review Co-authored-by: Jonathan Manning --- subworkflows/local/align_star/nextflow.config | 6 +++--- .../fastq_fastqc_umitools_trimgalore/nextflow.config | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/subworkflows/local/align_star/nextflow.config b/subworkflows/local/align_star/nextflow.config index 4cecc6c3a..119eb6e4a 100644 --- a/subworkflows/local/align_star/nextflow.config +++ b/subworkflows/local/align_star/nextflow.config @@ -3,10 +3,10 @@ if (!params.skip_alignment && params.aligner == 'star_salmon') { withName: '.*:ALIGN_STAR:STAR_ALIGN|.*:ALIGN_STAR:STAR_ALIGN_IGENOMES' { ext.args = { // Function to convert argument strings into a map - def argsToMap(String args) { + def argsToMap = { String args -> args.split("\\s(?=--)").collectEntries { - def (key, value) = it.trim().split(/\s+/, 2) - [(key): value] + def parts = it.trim().split(/\s+/, 2) + [(parts.first()): parts.last()] } } diff --git a/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/nextflow.config b/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/nextflow.config index 15682cffa..6de6b513d 100644 --- a/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/nextflow.config +++ b/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/nextflow.config @@ -14,10 +14,10 @@ if (!params.skip_trimming) { withName: '.*:FASTQ_FASTQC_UMITOOLS_TRIMGALORE:TRIMGALORE' { ext.args = { // Function to convert argument strings into a map - def argsToMap(String args) { + def argsToMap = { String args -> args.split("\\s(?=--)").collectEntries { - def (key, value) = it.trim().split(/\s+/, 2) - [(key): value] + def parts = it.trim().split(/\s+/, 2) + [(parts.first()): parts.last()] } } From 6ca35a94f0f6ae1bd4913aa0114f36c0ed02300b Mon Sep 17 00:00:00 2001 From: maxulysse Date: Mon, 6 May 2024 10:28:23 +0200 Subject: [PATCH 304/634] fix(subworkflow): update utils_nfcore_pipeline --- CHANGELOG.md | 1 + modules.json | 2 +- subworkflows/nf-core/utils_nfcore_pipeline/main.nf | 8 +++++++- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a3ae93973..2408ad56d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -67,6 +67,7 @@ Thank you to everyone else that has contributed by reporting bugs, enhancements - [PR #1278](https://github.com/nf-core/rnaseq/pull/1278) - Delocalise pseudo quant workflow - [PR #1280](https://github.com/nf-core/rnaseq/pull/1280) - Reorganise pipeline level tests into flat directory structure - [PR #1283](https://github.com/nf-core/rnaseq/pull/1283) - Add output files to nf-test snapshot +- [PR #1293](https://github.com/nf-core/rnaseq/pull/1293) - Update subworkflow utils_nfcore_pipeline ### Parameters diff --git a/modules.json b/modules.json index 48bc856ac..bc5950fcb 100644 --- a/modules.json +++ b/modules.json @@ -339,7 +339,7 @@ }, "utils_nfcore_pipeline": { "branch": "master", - "git_sha": "5caf7640a9ef1d18d765d55339be751bb0969dfa", + "git_sha": "92de218a329bfc9a9033116eb5f65fd270e72ba3", "installed_by": ["subworkflows"] }, "utils_nfvalidation_plugin": { diff --git a/subworkflows/nf-core/utils_nfcore_pipeline/main.nf b/subworkflows/nf-core/utils_nfcore_pipeline/main.nf index a8b55d6fe..14558c392 100644 --- a/subworkflows/nf-core/utils_nfcore_pipeline/main.nf +++ b/subworkflows/nf-core/utils_nfcore_pipeline/main.nf @@ -65,9 +65,15 @@ def checkProfileProvided(nextflow_cli_args) { // Citation string for pipeline // def workflowCitation() { + def temp_doi_ref = "" + String[] 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" + - " ${workflow.manifest.doi}\n\n" + + temp_doi_ref + "\n" + "* The nf-core framework\n" + " https://doi.org/10.1038/s41587-020-0439-x\n\n" + "* Software dependencies\n" + From e99cdbca88855a353a80d6c8a55835312c37f64f Mon Sep 17 00:00:00 2001 From: nf-core-bot Date: Wed, 8 May 2024 14:00:59 +0000 Subject: [PATCH 305/634] Template update for nf-core/tools version 2.14.0 --- .editorconfig | 6 +- .github/PULL_REQUEST_TEMPLATE.md | 2 +- .github/workflows/awsfulltest.yml | 10 +- .github/workflows/awstest.yml | 12 +- .github/workflows/ci.yml | 4 +- .github/workflows/download_pipeline.yml | 22 ++- .github/workflows/fix-linting.yml | 6 +- .github/workflows/linting.yml | 18 +- .github/workflows/linting_comment.yml | 2 +- .github/workflows/release-announcements.yml | 6 +- .nf-core.yml | 1 + .pre-commit-config.yaml | 3 + README.md | 2 +- conf/base.config | 3 - conf/modules.config | 8 - conf/test.config | 2 +- conf/test_full.config | 2 +- docs/usage.md | 2 + modules.json | 4 +- modules/nf-core/fastqc/main.nf | 6 + nextflow.config | 176 +++++++++--------- nextflow_schema.json | 7 + pyproject.toml | 15 -- .../utils_nfcore_rnaseq_pipeline/main.nf | 16 +- .../nf-core/utils_nfcore_pipeline/main.nf | 8 +- workflows/rnaseq.nf | 46 +++-- 26 files changed, 220 insertions(+), 169 deletions(-) delete mode 100644 pyproject.toml diff --git a/.editorconfig b/.editorconfig index dd9ffa538..72dda289a 100644 --- a/.editorconfig +++ b/.editorconfig @@ -28,10 +28,6 @@ indent_style = unset [/assets/email*] indent_size = unset -# ignore Readme -[README.md] -indent_style = unset - -# ignore python +# ignore python and markdown [*.{py,md}] indent_style = unset diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index a034e2fb0..5ed2fd931 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -18,7 +18,7 @@ Learn more about contributing: [CONTRIBUTING.md](https://github.com/nf-core/rnas - [ ] If you've added a new tool - have you followed the pipeline conventions in the [contribution docs](https://github.com/nf-core/rnaseq/tree/master/.github/CONTRIBUTING.md) - [ ] If necessary, also make a PR on the nf-core/rnaseq _branch_ on the [nf-core/test-datasets](https://github.com/nf-core/test-datasets) repository. - [ ] Make sure your code lints (`nf-core lint`). -- [ ] Ensure the test suite passes (`nf-test test main.nf.test -profile test,docker`). +- [ ] 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. - [ ] Output Documentation in `docs/output.md` is updated. diff --git a/.github/workflows/awsfulltest.yml b/.github/workflows/awsfulltest.yml index 9075bac51..37d6f369b 100644 --- a/.github/workflows/awsfulltest.yml +++ b/.github/workflows/awsfulltest.yml @@ -8,12 +8,12 @@ on: types: [published] workflow_dispatch: jobs: - run-tower: + run-platform: name: Run AWS full tests if: github.repository == 'nf-core/rnaseq' runs-on: ubuntu-latest steps: - - name: Launch workflow via tower + - name: Launch workflow via Seqera Platform uses: seqeralabs/action-tower-launch@v2 # TODO nf-core: You can customise AWS full pipeline tests as required # Add full size test data (but still relatively small datasets for few samples) @@ -33,7 +33,7 @@ jobs: - uses: actions/upload-artifact@v4 with: - name: Tower debug log file + name: Seqera Platform debug log file path: | - tower_action_*.log - tower_action_*.json + seqera_platform_action_*.log + seqera_platform_action_*.json diff --git a/.github/workflows/awstest.yml b/.github/workflows/awstest.yml index f0f09d0b3..95bfa9ef4 100644 --- a/.github/workflows/awstest.yml +++ b/.github/workflows/awstest.yml @@ -5,13 +5,13 @@ name: nf-core AWS test on: workflow_dispatch: jobs: - run-tower: + run-platform: name: Run AWS tests if: github.repository == 'nf-core/rnaseq' runs-on: ubuntu-latest steps: - # Launch workflow using Tower CLI tool action - - name: Launch workflow via tower + # Launch workflow using Seqera Platform CLI tool action + - name: Launch workflow via Seqera Platform uses: seqeralabs/action-tower-launch@v2 with: workspace_id: ${{ secrets.TOWER_WORKSPACE_ID }} @@ -27,7 +27,7 @@ jobs: - uses: actions/upload-artifact@v4 with: - name: Tower debug log file + name: Seqera Platform debug log file path: | - tower_action_*.log - tower_action_*.json + seqera_platform_action_*.log + seqera_platform_action_*.json diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 414e310d0..0c9f57c95 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -28,10 +28,10 @@ jobs: - "latest-everything" steps: - name: Check out pipeline code - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4 + uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4 - name: Install Nextflow - uses: nf-core/setup-nextflow@v1 + uses: nf-core/setup-nextflow@v2 with: version: "${{ matrix.NXF_VER }}" diff --git a/.github/workflows/download_pipeline.yml b/.github/workflows/download_pipeline.yml index 08622fd51..2d20d6442 100644 --- a/.github/workflows/download_pipeline.yml +++ b/.github/workflows/download_pipeline.yml @@ -14,6 +14,8 @@ on: pull_request: types: - opened + - edited + - synchronize branches: - master pull_request_target: @@ -28,11 +30,14 @@ jobs: runs-on: ubuntu-latest steps: - name: Install Nextflow - uses: nf-core/setup-nextflow@v1 + uses: nf-core/setup-nextflow@v2 - - uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # v5 + - name: Disk space cleanup + uses: jlumbroso/free-disk-space@54081f138730dfa15788a46383842cd2f914a1be # v1.3.1 + + - uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5 with: - python-version: "3.11" + python-version: "3.12" architecture: "x64" - uses: eWaterCycle/setup-singularity@931d4e31109e875b13309ae1d07c70ca8fbc8537 # v7 with: @@ -65,8 +70,17 @@ jobs: - name: Inspect download run: tree ./${{ env.REPOTITLE_LOWERCASE }} - - name: Run the downloaded pipeline + - name: Run the downloaded pipeline (stub) + id: stub_run_pipeline + continue-on-error: true env: NXF_SINGULARITY_CACHEDIR: ./ 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_HOME_MOUNT: true + run: nextflow run ./${{ env.REPOTITLE_LOWERCASE }}/$( sed 's/\W/_/g' <<< ${{ env.REPO_BRANCH }}) -profile test,singularity --outdir ./results diff --git a/.github/workflows/fix-linting.yml b/.github/workflows/fix-linting.yml index e6802cfaf..1d7eed3bb 100644 --- a/.github/workflows/fix-linting.yml +++ b/.github/workflows/fix-linting.yml @@ -13,7 +13,7 @@ jobs: runs-on: ubuntu-latest steps: # Use the @nf-core-bot token to check out so we can push later - - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4 + - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4 with: token: ${{ secrets.nf_core_bot_auth_token }} @@ -32,9 +32,9 @@ jobs: GITHUB_TOKEN: ${{ secrets.nf_core_bot_auth_token }} # Install and run pre-commit - - uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # v5 + - uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5 with: - python-version: 3.11 + python-version: "3.12" - name: Install pre-commit run: pip install pre-commit diff --git a/.github/workflows/linting.yml b/.github/workflows/linting.yml index 073e18767..a3fb25414 100644 --- a/.github/workflows/linting.yml +++ b/.github/workflows/linting.yml @@ -14,12 +14,12 @@ jobs: pre-commit: runs-on: ubuntu-latest steps: - - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4 + - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4 - - name: Set up Python 3.11 - uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # v5 + - name: Set up Python 3.12 + uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5 with: - python-version: 3.11 + python-version: "3.12" cache: "pip" - name: Install pre-commit @@ -32,14 +32,14 @@ jobs: runs-on: ubuntu-latest steps: - name: Check out pipeline code - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4 + uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4 - name: Install Nextflow - uses: nf-core/setup-nextflow@v1 + uses: nf-core/setup-nextflow@v2 - - uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # v5 + - uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5 with: - python-version: "3.11" + python-version: "3.12" architecture: "x64" - name: Install dependencies @@ -60,7 +60,7 @@ jobs: - name: Upload linting log file artifact if: ${{ always() }} - uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4 + uses: actions/upload-artifact@65462800fd760344b1a7b4382951275a0abb4808 # v4 with: name: linting-logs path: | diff --git a/.github/workflows/linting_comment.yml b/.github/workflows/linting_comment.yml index b706875fc..40acc23f5 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@f6b0bace624032e30a85a8fd9c1a7f8f611f5737 # v3 + uses: dawidd6/action-download-artifact@09f2f74827fd3a8607589e5ad7f9398816f540fe # v3 with: workflow: linting.yml workflow_conclusion: completed diff --git a/.github/workflows/release-announcements.yml b/.github/workflows/release-announcements.yml index d468aeaae..03ecfcf72 100644 --- a/.github/workflows/release-announcements.yml +++ b/.github/workflows/release-announcements.yml @@ -12,7 +12,7 @@ jobs: - name: get topics and convert to hashtags id: get_topics run: | - 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 + 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: @@ -25,13 +25,13 @@ jobs: Please see the changelog: ${{ github.event.release.html_url }} - ${{ steps.get_topics.outputs.GITHUB_OUTPUT }} #nfcore #openscience #nextflow #bioinformatics + ${{ steps.get_topics.outputs.topics }} #nfcore #openscience #nextflow #bioinformatics send-tweet: runs-on: ubuntu-latest steps: - - uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # v5 + - uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5 with: python-version: "3.10" - name: Install dependencies diff --git a/.nf-core.yml b/.nf-core.yml index 3805dc81c..d6daa4034 100644 --- a/.nf-core.yml +++ b/.nf-core.yml @@ -1 +1,2 @@ repository_type: pipeline +nf_core_version: "2.14.0" diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index af57081f6..4dc0f1dcd 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -3,6 +3,9 @@ repos: rev: "v3.1.0" hooks: - id: prettier + additional_dependencies: + - prettier@3.2.5 + - repo: https://github.com/editorconfig-checker/editorconfig-checker.python rev: "2.7.3" hooks: diff --git a/README.md b/README.md index 714690eaf..d067db739 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,7 @@ [![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/) -[![Launch on Seqera Platform](https://img.shields.io/badge/Launch%20%F0%9F%9A%80-Seqera%20Platform-%234256e7)](https://tower.nf/launch?pipeline=https://github.com/nf-core/rnaseq) +[![Launch on Seqera Platform](https://img.shields.io/badge/Launch%20%F0%9F%9A%80-Seqera%20Platform-%234256e7)](https://cloud.seqera.io/launch?pipeline=https://github.com/nf-core/rnaseq) [![Get help on Slack](http://img.shields.io/badge/slack-nf--core%20%23rnaseq-4A154B?labelColor=000000&logo=slack)](https://nfcore.slack.com/channels/rnaseq)[![Follow on Twitter](http://img.shields.io/badge/twitter-%40nf__core-1DA1F2?labelColor=000000&logo=twitter)](https://twitter.com/nf_core)[![Follow on Mastodon](https://img.shields.io/badge/mastodon-nf__core-6364ff?labelColor=FFFFFF&logo=mastodon)](https://mstdn.science/@nf_core)[![Watch on YouTube](http://img.shields.io/badge/youtube-nf--core-FF0000?labelColor=000000&logo=youtube)](https://www.youtube.com/c/nf-core) diff --git a/conf/base.config b/conf/base.config index a034808b0..62976e730 100644 --- a/conf/base.config +++ b/conf/base.config @@ -59,7 +59,4 @@ process { errorStrategy = 'retry' maxRetries = 2 } - withName:CUSTOM_DUMPSOFTWAREVERSIONS { - cache = false - } } diff --git a/conf/modules.config b/conf/modules.config index e3ea8fa6c..d203d2b6e 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -22,14 +22,6 @@ process { ext.args = '--quiet' } - withName: CUSTOM_DUMPSOFTWAREVERSIONS { - publishDir = [ - path: { "${params.outdir}/pipeline_info" }, - mode: params.publish_dir_mode, - pattern: '*_versions.yml' - ] - } - withName: 'MULTIQC' { ext.args = { params.multiqc_title ? "--title \"$params.multiqc_title\"" : '' } publishDir = [ diff --git a/conf/test.config b/conf/test.config index afd91ab36..d23e84f89 100644 --- a/conf/test.config +++ b/conf/test.config @@ -22,7 +22,7 @@ params { // 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 - input = 'https://raw.githubusercontent.com/nf-core/test-datasets/viralrecon/samplesheet/samplesheet_test_illumina_amplicon.csv' + input = params.pipelines_testdata_base_path + 'viralrecon/samplesheet/samplesheet_test_illumina_amplicon.csv' // Genome references genome = 'R64-1-1' diff --git a/conf/test_full.config b/conf/test_full.config index 505808b89..602feb125 100644 --- a/conf/test_full.config +++ b/conf/test_full.config @@ -17,7 +17,7 @@ params { // Input data for full size test // TODO nf-core: Specify the paths to your full test data ( on nf-core/test-datasets or directly in repositories, e.g. SRA) // TODO nf-core: Give any required params for the test so that command line flags are not needed - input = 'https://raw.githubusercontent.com/nf-core/test-datasets/viralrecon/samplesheet/samplesheet_full_illumina_amplicon.csv' + input = params.pipelines_testdata_base_path + 'viralrecon/samplesheet/samplesheet_full_illumina_amplicon.csv' // Genome references genome = 'R64-1-1' diff --git a/docs/usage.md b/docs/usage.md index 07cf6cc79..8ab7744b6 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -156,6 +156,8 @@ If `-profile` is not specified, the pipeline will run locally and expect all sof - A generic configuration profile to be used with [Charliecloud](https://hpc.github.io/charliecloud/) - `apptainer` - A generic configuration profile to be used with [Apptainer](https://apptainer.org/) +- `wave` + - A generic configuration profile to enable [Wave](https://seqera.io/wave/) containers. Use together with one of the above (requires Nextflow ` 24.03.0-edge` or later). - `conda` - A generic configuration profile to be used with [Conda](https://conda.io/docs/). Please only use Conda as a last resort i.e. when it's not possible to run the pipeline with Docker, Singularity, Podman, Shifter, Charliecloud, or Apptainer. diff --git a/modules.json b/modules.json index 9e0494f02..088b5058a 100644 --- a/modules.json +++ b/modules.json @@ -7,7 +7,7 @@ "nf-core": { "fastqc": { "branch": "master", - "git_sha": "f4ae1d942bd50c5c0b9bd2de1393ce38315ba57c", + "git_sha": "285a50500f9e02578d90b3ce6382ea3c30216acd", "installed_by": ["modules"] }, "multiqc": { @@ -26,7 +26,7 @@ }, "utils_nfcore_pipeline": { "branch": "master", - "git_sha": "5caf7640a9ef1d18d765d55339be751bb0969dfa", + "git_sha": "92de218a329bfc9a9033116eb5f65fd270e72ba3", "installed_by": ["subworkflows"] }, "utils_nfvalidation_plugin": { diff --git a/modules/nf-core/fastqc/main.nf b/modules/nf-core/fastqc/main.nf index 9e19a74c5..d79f1c862 100644 --- a/modules/nf-core/fastqc/main.nf +++ b/modules/nf-core/fastqc/main.nf @@ -25,6 +25,11 @@ process FASTQC { 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 @@ -33,6 +38,7 @@ process FASTQC { fastqc \\ $args \\ --threads $task.cpus \\ + --memory $fastqc_memory \\ $renamed_files cat <<-END_VERSIONS > versions.yml diff --git a/nextflow.config b/nextflow.config index 8b58d85e4..f1f5b4a38 100644 --- a/nextflow.config +++ b/nextflow.config @@ -16,7 +16,8 @@ params { genome = null igenomes_base = 's3://ngi-igenomes/igenomes/' igenomes_ignore = false - fasta = null// MultiQC options + + // MultiQC options multiqc_config = null multiqc_title = null multiqc_logo = null @@ -24,15 +25,16 @@ params { multiqc_methods_description = null // Boilerplate options - outdir = null - publish_dir_mode = 'copy' - email = null - email_on_fail = null - plaintext_email = false - monochrome_logs = false - hook_url = null - help = false - version = false + outdir = null + publish_dir_mode = 'copy' + email = null + email_on_fail = null + plaintext_email = false + monochrome_logs = false + hook_url = null + help = false + version = false + pipelines_testdata_base_path = 'https://raw.githubusercontent.com/nf-core/test-datasets/' // Config options config_profile_name = null @@ -68,103 +70,109 @@ try { } // Load nf-core/rnaseq custom profiles from different institutions. -// Warning: Uncomment only if a pipeline-specific institutional config already exists on nf-core/configs! -// try { -// includeConfig "${params.custom_config_base}/pipeline/rnaseq.config" -// } catch (Exception e) { -// System.err.println("WARNING: Could not load nf-core/config/rnaseq profiles: ${params.custom_config_base}/pipeline/rnaseq.config") -// } +try { + includeConfig "${params.custom_config_base}/pipeline/rnaseq.config" +} catch (Exception e) { + System.err.println("WARNING: Could not load nf-core/config/rnaseq profiles: ${params.custom_config_base}/pipeline/rnaseq.config") +} profiles { debug { - dumpHashes = true - process.beforeScript = 'echo $HOSTNAME' - cleanup = false + dumpHashes = true + process.beforeScript = 'echo $HOSTNAME' + cleanup = false nextflow.enable.configProcessNamesValidation = true } conda { - conda.enabled = true - docker.enabled = false - singularity.enabled = false - podman.enabled = false - shifter.enabled = false - charliecloud.enabled = false - channels = ['conda-forge', 'bioconda', 'defaults'] - apptainer.enabled = false + conda.enabled = true + docker.enabled = false + singularity.enabled = false + podman.enabled = false + shifter.enabled = false + charliecloud.enabled = false + conda.channels = ['conda-forge', 'bioconda', 'defaults'] + apptainer.enabled = false } mamba { - conda.enabled = true - conda.useMamba = true - docker.enabled = false - singularity.enabled = false - podman.enabled = false - shifter.enabled = false - charliecloud.enabled = false - apptainer.enabled = false + conda.enabled = true + conda.useMamba = true + docker.enabled = false + singularity.enabled = false + podman.enabled = false + shifter.enabled = false + charliecloud.enabled = false + apptainer.enabled = false } docker { - docker.enabled = true - conda.enabled = false - singularity.enabled = false - podman.enabled = false - shifter.enabled = false - charliecloud.enabled = false - apptainer.enabled = false - docker.runOptions = '-u $(id -u):$(id -g)' + docker.enabled = true + conda.enabled = false + singularity.enabled = false + podman.enabled = false + shifter.enabled = false + charliecloud.enabled = false + apptainer.enabled = false + docker.runOptions = '-u $(id -u):$(id -g)' } arm { - docker.runOptions = '-u $(id -u):$(id -g) --platform=linux/amd64' + docker.runOptions = '-u $(id -u):$(id -g) --platform=linux/amd64' } singularity { - singularity.enabled = true - singularity.autoMounts = true - conda.enabled = false - docker.enabled = false - podman.enabled = false - shifter.enabled = false - charliecloud.enabled = false - apptainer.enabled = false + singularity.enabled = true + singularity.autoMounts = true + conda.enabled = false + docker.enabled = false + podman.enabled = false + shifter.enabled = false + charliecloud.enabled = false + apptainer.enabled = false } podman { - podman.enabled = true - conda.enabled = false - docker.enabled = false - singularity.enabled = false - shifter.enabled = false - charliecloud.enabled = false - apptainer.enabled = false + podman.enabled = true + conda.enabled = false + docker.enabled = false + singularity.enabled = false + shifter.enabled = false + charliecloud.enabled = false + apptainer.enabled = false } shifter { - shifter.enabled = true - conda.enabled = false - docker.enabled = false - singularity.enabled = false - podman.enabled = false - charliecloud.enabled = false - apptainer.enabled = false + shifter.enabled = true + conda.enabled = false + docker.enabled = false + singularity.enabled = false + podman.enabled = false + charliecloud.enabled = false + apptainer.enabled = false } charliecloud { - charliecloud.enabled = true - conda.enabled = false - docker.enabled = false - singularity.enabled = false - podman.enabled = false - shifter.enabled = false - apptainer.enabled = false + charliecloud.enabled = true + conda.enabled = false + docker.enabled = false + singularity.enabled = false + podman.enabled = false + shifter.enabled = false + apptainer.enabled = false } apptainer { - apptainer.enabled = true - apptainer.autoMounts = true - conda.enabled = false - docker.enabled = false - singularity.enabled = false - podman.enabled = false - shifter.enabled = false - charliecloud.enabled = false + apptainer.enabled = true + apptainer.autoMounts = true + conda.enabled = false + docker.enabled = false + singularity.enabled = false + podman.enabled = false + shifter.enabled = false + charliecloud.enabled = false + } + wave { + apptainer.ociAutoPull = true + singularity.ociAutoPull = true + wave.enabled = true + wave.freeze = true + wave.strategy = 'conda,container' } gitpod { - executor.name = 'local' - executor.cpus = 4 - executor.memory = 8.GB + executor.name = 'local' + executor.cpus = 4 + executor.memory = 8.GB } test { includeConfig 'conf/test.config' } test_full { includeConfig 'conf/test_full.config' } diff --git a/nextflow_schema.json b/nextflow_schema.json index 18f6d03b9..13656263e 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -265,6 +265,13 @@ "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", + "description": "Base URL or local path to location of pipeline test dataset files", + "default": "https://raw.githubusercontent.com/nf-core/test-datasets/", + "hidden": true } } } diff --git a/pyproject.toml b/pyproject.toml deleted file mode 100644 index 56110621e..000000000 --- a/pyproject.toml +++ /dev/null @@ -1,15 +0,0 @@ -# Config file for Python. Mostly used to configure linting of bin/*.py with Ruff. -# Should be kept the same as nf-core/tools to avoid fighting with template synchronisation. -[tool.ruff] -line-length = 120 -target-version = "py38" -cache-dir = "~/.cache/ruff" - -[tool.ruff.lint] -select = ["I", "E1", "E4", "E7", "E9", "F", "UP", "N"] - -[tool.ruff.lint.isort] -known-first-party = ["nf_core"] - -[tool.ruff.lint.per-file-ignores] -"__init__.py" = ["E402", "F401"] diff --git a/subworkflows/local/utils_nfcore_rnaseq_pipeline/main.nf b/subworkflows/local/utils_nfcore_rnaseq_pipeline/main.nf index 5ded17618..a20c37b15 100644 --- a/subworkflows/local/utils_nfcore_rnaseq_pipeline/main.nf +++ b/subworkflows/local/utils_nfcore_rnaseq_pipeline/main.nf @@ -140,6 +140,10 @@ workflow PIPELINE_COMPLETION { imNotification(summary_params, hook_url) } } + + workflow.onError { + log.error "Pipeline failed. Please refer to troubleshooting docs: https://nf-co.re/docs/usage/troubleshooting" + } } /* @@ -230,8 +234,16 @@ def methodsDescriptionText(mqc_methods_yaml) { meta["manifest_map"] = workflow.manifest.toMap() // Pipeline DOI - meta["doi_text"] = meta.manifest_map.doi ? "(doi: ${meta.manifest_map.doi})" : "" - 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.
  • " + if (meta.manifest_map.doi) { + // 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 + 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(" ", "")}), " + 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.
  • " // Tool references meta["tool_citations"] = "" diff --git a/subworkflows/nf-core/utils_nfcore_pipeline/main.nf b/subworkflows/nf-core/utils_nfcore_pipeline/main.nf index a8b55d6fe..14558c392 100644 --- a/subworkflows/nf-core/utils_nfcore_pipeline/main.nf +++ b/subworkflows/nf-core/utils_nfcore_pipeline/main.nf @@ -65,9 +65,15 @@ def checkProfileProvided(nextflow_cli_args) { // Citation string for pipeline // def workflowCitation() { + def temp_doi_ref = "" + String[] 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" + - " ${workflow.manifest.doi}\n\n" + + temp_doi_ref + "\n" + "* The nf-core framework\n" + " https://doi.org/10.1038/s41587-020-0439-x\n\n" + "* Software dependencies\n" + diff --git a/workflows/rnaseq.nf b/workflows/rnaseq.nf index 845eb6ab4..d7cc4e3b2 100644 --- a/workflows/rnaseq.nf +++ b/workflows/rnaseq.nf @@ -40,22 +40,44 @@ workflow RNASEQ { // Collate and save software versions // softwareVersionsToYAML(ch_versions) - .collectFile(storeDir: "${params.outdir}/pipeline_info", name: 'nf_core_pipeline_software_mqc_versions.yml', sort: true, newLine: true) - .set { ch_collated_versions } + .collectFile( + storeDir: "${params.outdir}/pipeline_info", + name: 'nf_core_pipeline_software_mqc_versions.yml', + sort: true, + newLine: true + ).set { ch_collated_versions } // // MODULE: MultiQC // - ch_multiqc_config = Channel.fromPath("$projectDir/assets/multiqc_config.yml", checkIfExists: true) - ch_multiqc_custom_config = params.multiqc_config ? Channel.fromPath(params.multiqc_config, checkIfExists: true) : Channel.empty() - ch_multiqc_logo = params.multiqc_logo ? Channel.fromPath(params.multiqc_logo, checkIfExists: true) : Channel.empty() - summary_params = paramsSummaryMap(workflow, parameters_schema: "nextflow_schema.json") - ch_workflow_summary = Channel.value(paramsSummaryMultiqc(summary_params)) - ch_multiqc_custom_methods_description = params.multiqc_methods_description ? file(params.multiqc_methods_description, checkIfExists: true) : file("$projectDir/assets/methods_description_template.yml", checkIfExists: true) - ch_methods_description = Channel.value(methodsDescriptionText(ch_multiqc_custom_methods_description)) - ch_multiqc_files = ch_multiqc_files.mix(ch_workflow_summary.collectFile(name: 'workflow_summary_mqc.yaml')) - ch_multiqc_files = ch_multiqc_files.mix(ch_collated_versions) - ch_multiqc_files = ch_multiqc_files.mix(ch_methods_description.collectFile(name: 'methods_description_mqc.yaml', sort: false)) + ch_multiqc_config = Channel.fromPath( + "$projectDir/assets/multiqc_config.yml", checkIfExists: true) + ch_multiqc_custom_config = params.multiqc_config ? + Channel.fromPath(params.multiqc_config, checkIfExists: true) : + Channel.empty() + ch_multiqc_logo = params.multiqc_logo ? + Channel.fromPath(params.multiqc_logo, checkIfExists: true) : + Channel.empty() + + summary_params = paramsSummaryMap( + workflow, parameters_schema: "nextflow_schema.json") + ch_workflow_summary = Channel.value(paramsSummaryMultiqc(summary_params)) + + ch_multiqc_custom_methods_description = params.multiqc_methods_description ? + file(params.multiqc_methods_description, checkIfExists: true) : + file("$projectDir/assets/methods_description_template.yml", checkIfExists: true) + ch_methods_description = Channel.value( + methodsDescriptionText(ch_multiqc_custom_methods_description)) + + ch_multiqc_files = ch_multiqc_files.mix( + ch_workflow_summary.collectFile(name: 'workflow_summary_mqc.yaml')) + ch_multiqc_files = ch_multiqc_files.mix(ch_collated_versions) + ch_multiqc_files = ch_multiqc_files.mix( + ch_methods_description.collectFile( + name: 'methods_description_mqc.yaml', + sort: true + ) + ) MULTIQC ( ch_multiqc_files.collect(), From eecf64e1f291a1aedbb23d96e95a3cdadd4640dc Mon Sep 17 00:00:00 2001 From: nf-core-bot Date: Thu, 9 May 2024 11:42:56 +0000 Subject: [PATCH 306/634] Template update for nf-core/tools version 2.14.1 --- .github/workflows/linting.yml | 1 - .nf-core.yml | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/linting.yml b/.github/workflows/linting.yml index a3fb25414..1fcafe880 100644 --- a/.github/workflows/linting.yml +++ b/.github/workflows/linting.yml @@ -20,7 +20,6 @@ jobs: uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5 with: python-version: "3.12" - cache: "pip" - name: Install pre-commit run: pip install pre-commit diff --git a/.nf-core.yml b/.nf-core.yml index d6daa4034..e0b85a77f 100644 --- a/.nf-core.yml +++ b/.nf-core.yml @@ -1,2 +1,2 @@ repository_type: pipeline -nf_core_version: "2.14.0" +nf_core_version: "2.14.1" From 27b150366aa8dd5218596507aaa9948d63ddd10b Mon Sep 17 00:00:00 2001 From: Harshil Patel Date: Mon, 13 May 2024 12:09:44 +0100 Subject: [PATCH 307/634] Update CHANGELOG --- CHANGELOG.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2408ad56d..bf7a588ab 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -60,14 +60,15 @@ Thank you to everyone else that has contributed by reporting bugs, enhancements - [PR #1249](https://github.com/nf-core/rnaseq/pull/1249) - Include nf-tests for rsem_merge_counts module - [PR #1250](https://github.com/nf-core/rnaseq/pull/1250) - Remove all tags.yml files because the testing system has changed - [PR #1251](https://github.com/nf-core/rnaseq/pull/1251) - Replace deseq2qc paths +- [PR #1253](https://github.com/nf-core/rnaseq/pull/1253) - Use nf-test files as matrix to test over in CI/CD for efficiency - [PR #1261](https://github.com/nf-core/rnaseq/pull/1261) - Add more tests for PREPARE_GENOME - [PR #1265](https://github.com/nf-core/rnaseq/pull/1265) - Small updates noticed during code review - [PR #1266](https://github.com/nf-core/rnaseq/pull/1266) - Delete unecessary tags from nf.test files for modules and subworkflows -- [PR #1253](https://github.com/nf-core/rnaseq/pull/1253) - Use nf-test files as matrix to test over in CI/CD for efficiency - [PR #1278](https://github.com/nf-core/rnaseq/pull/1278) - Delocalise pseudo quant workflow - [PR #1280](https://github.com/nf-core/rnaseq/pull/1280) - Reorganise pipeline level tests into flat directory structure - [PR #1283](https://github.com/nf-core/rnaseq/pull/1283) - Add output files to nf-test snapshot - [PR #1293](https://github.com/nf-core/rnaseq/pull/1293) - Update subworkflow utils_nfcore_pipeline +- [PR #1297](https://github.com/nf-core/rnaseq/pull/1297) - Important! Template update for nf-core/tools v2.14.1 ### Parameters From 28493ee950ed989875c5a764f4dd320816b5c03c Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Thu, 16 May 2024 15:19:07 +0100 Subject: [PATCH 308/634] Update tximport subworkflow and module --- modules.json | 8 +- modules/nf-core/salmon/quant/main.nf | 12 + .../nf-core/salmon/quant/tests/main.nf.test | 142 +++++++++++- .../salmon/quant/tests/main.nf.test.snap | 75 +++++++ .../templates/summarizedexperiment.r | 3 + .../summarizedexperiment/tests/main.nf.test | 12 +- modules/nf-core/tximeta/tximport/main.nf | 4 + .../tximeta/tximport/tests/main.nf.test | 8 + .../tximeta/tximport/tests/main.nf.test.snap | 208 +++++++++++++++--- .../nf-core/quantify_pseudo_alignment/main.nf | 2 + .../tests/main.nf.test | 4 + .../tests/main.nf.test.snap | 36 ++- 12 files changed, 468 insertions(+), 46 deletions(-) diff --git a/modules.json b/modules.json index 0bf4e4448..33e37e6db 100644 --- a/modules.json +++ b/modules.json @@ -167,7 +167,7 @@ }, "salmon/quant": { "branch": "master", - "git_sha": "03a8562231d575c313266c193a980594b941e3ea", + "git_sha": "cb6b2b94fc40dea58f0b1e3dd095f3dd24f2ac8a", "installed_by": ["fastq_subsample_fq_salmon", "modules", "quantify_pseudo_alignment"] }, "samtools/flagstat": { @@ -226,7 +226,7 @@ }, "summarizedexperiment/summarizedexperiment": { "branch": "master", - "git_sha": "05a252a330273c67795aed2b18e86c53c4c9382a", + "git_sha": "31751460f9ce9552846e13fdeec6953dcb47132d", "installed_by": ["modules", "quantify_pseudo_alignment"] }, "trimgalore": { @@ -236,7 +236,7 @@ }, "tximeta/tximport": { "branch": "master", - "git_sha": "c275c3baac6df8f0c7c500760a0cf014ce7b525d", + "git_sha": "689323f8f89a120469b4c898cf7f19f758c3080e", "installed_by": ["modules", "quantify_pseudo_alignment"] }, "ucsc/bedclip": { @@ -329,7 +329,7 @@ }, "quantify_pseudo_alignment": { "branch": "master", - "git_sha": "bca4985339b3ba879f457565806deb2377873b83", + "git_sha": "0c3275555f670ac32270175390a14fa676404bac", "installed_by": ["subworkflows"] }, "utils_nextflow_pipeline": { diff --git a/modules/nf-core/salmon/quant/main.nf b/modules/nf-core/salmon/quant/main.nf index e115d39cf..e177b42ac 100644 --- a/modules/nf-core/salmon/quant/main.nf +++ b/modules/nf-core/salmon/quant/main.nf @@ -76,4 +76,16 @@ process SALMON_QUANT { salmon: \$(echo \$(salmon --version) | sed -e "s/salmon //g") END_VERSIONS """ + + stub: + prefix = task.ext.prefix ?: "${meta.id}" + """ + mkdir ${prefix} + touch ${prefix}_meta_info.json + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + salmon: \$(echo \$(salmon --version) | sed -e "s/salmon //g") + END_VERSIONS + """ } diff --git a/modules/nf-core/salmon/quant/tests/main.nf.test b/modules/nf-core/salmon/quant/tests/main.nf.test index fdc07db76..b387fac2a 100644 --- a/modules/nf-core/salmon/quant/tests/main.nf.test +++ b/modules/nf-core/salmon/quant/tests/main.nf.test @@ -3,8 +3,12 @@ nextflow_process { name "Test Process SALMON_QUANT" script "../main.nf" process "SALMON_QUANT" - tag "SALMON_INDEX" config "./nextflow.config" + tag "modules" + tag "modules_nfcore" + tag "salmon" + tag "salmon/quant" + tag "salmon/index" setup { run("SALMON_INDEX") { @@ -50,6 +54,38 @@ nextflow_process { } + test("sarscov2 - single_end stub") { + options "-stub" + when { + params { + outdir = "$outputDir" + } + process { + """ + input[0] = Channel.of([ + [ id:'test', single_end: true ], // meta map + [ file(params.modules_testdata_base_path + "genomics/sarscov2/illumina/fastq/test_1.fastq.gz", checkIfExists: true) ] + ]) + input[1] = SALMON_INDEX.out.index + input[2] = Channel.of([file(params.modules_testdata_base_path + "genomics/sarscov2/genome/genome.gtf", checkIfExists: true)]) + input[3] = Channel.of([file(params.modules_testdata_base_path + "genomics/sarscov2/genome/transcriptome.fasta", checkIfExists: true)]) + input[4] = false + input[5] = '' + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert path(process.out.json_info.get(0).get(1)).exists() }, + { assert path(process.out.results.get(0).get(1)).exists() }, + { assert snapshot(process.out.versions).match("versions_single_end_stub") } + ) + } + + } + test("sarscov2 - single_end lib type A") { when { @@ -82,6 +118,38 @@ nextflow_process { } + test("sarscov2 - single_end lib type A stub") { + options "-stub" + when { + params { + outdir = "$outputDir" + } + process { + """ + input[0] = Channel.of([ + [ id:'test', single_end: true ], // meta map + [ file(params.modules_testdata_base_path + "genomics/sarscov2/illumina/fastq/test_1.fastq.gz", checkIfExists: true) ] + ]) + input[1] = SALMON_INDEX.out.index + input[2] = Channel.of([file(params.modules_testdata_base_path + "genomics/sarscov2/genome/genome.gtf", checkIfExists: true)]) + input[3] = Channel.of([file(params.modules_testdata_base_path + "genomics/sarscov2/genome/transcriptome.fasta", checkIfExists: true)]) + input[4] = false + input[5] = 'A' + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert path(process.out.json_info.get(0).get(1)).exists() }, + { assert path(process.out.results.get(0).get(1)).exists() }, + { assert snapshot(process.out.versions).match("versions_single_end_lib_type_a_stub") } + ) + } + + } + test("sarscov2 - pair_end") { when { @@ -117,6 +185,41 @@ nextflow_process { } + test("sarscov2 - pair_end stub") { + options "-stub" + when { + params { + outdir = "$outputDir" + } + process { + """ + input[0] = Channel.of([ + [ id:'test', single_end: true ], // 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) + ] + ]) + input[1] = SALMON_INDEX.out.index + input[2] = Channel.of([file(params.modules_testdata_base_path + "genomics/sarscov2/genome/genome.gtf", checkIfExists: true)]) + input[3] = Channel.of([file(params.modules_testdata_base_path + "genomics/sarscov2/genome/transcriptome.fasta", checkIfExists: true)]) + input[4] = false + input[5] = '' + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert path(process.out.json_info.get(0).get(1)).exists() }, + { assert path(process.out.results.get(0).get(1)).exists() }, + { assert snapshot(process.out.versions).match("versions_pair_end stub") } + ) + } + + } + test("sarscov2 - pair_end multiple") { when { @@ -153,4 +256,41 @@ nextflow_process { } } + + test("sarscov2 - pair_end multiple stub") { + options "-stub" + when { + params { + outdir = "$outputDir" + } + 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) + ] + ]) + input[1] = SALMON_INDEX.out.index + input[2] = Channel.of([file(params.modules_testdata_base_path + "genomics/sarscov2/genome/genome.gtf", checkIfExists: true)]) + input[3] = Channel.of([file(params.modules_testdata_base_path + "genomics/sarscov2/genome/transcriptome.fasta", checkIfExists: true)]) + input[4] = false + input[5] = '' + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert path(process.out.json_info.get(0).get(1)).exists() }, + { assert path(process.out.results.get(0).get(1)).exists() }, + { assert snapshot(process.out.versions).match("versions_pair_end_multiple_stub") } + ) + } + + } } diff --git a/modules/nf-core/salmon/quant/tests/main.nf.test.snap b/modules/nf-core/salmon/quant/tests/main.nf.test.snap index a1ec792e0..a80bc8aa8 100644 --- a/modules/nf-core/salmon/quant/tests/main.nf.test.snap +++ b/modules/nf-core/salmon/quant/tests/main.nf.test.snap @@ -1,4 +1,43 @@ { + "versions_single_end_lib_type_a_stub": { + "content": [ + [ + "versions.yml:md5,80eb3d2ad36960c7e9263f81ede9d263" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-04-24T14:34:21.647863" + }, + "versions_pair_end_multiple_stub": { + "content": [ + [ + "versions.yml:md5,80eb3d2ad36960c7e9263f81ede9d263" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-04-24T14:34:48.03415" + }, + "sarscov2 - single_end stub": { + "content": [ + [ + + ], + [ + + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-04-23T09:34:16.444372" + }, "versions_single_end": { "content": [ [ @@ -23,6 +62,42 @@ }, "timestamp": "2024-02-06T17:10:56.121713" }, + "versions_pair_end_stub": { + "content": [ + [ + + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-04-23T08:38:01.276656" + }, + "versions_pair_end stub": { + "content": [ + [ + "versions.yml:md5,80eb3d2ad36960c7e9263f81ede9d263" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-04-24T14:34:36.570127" + }, + "versions_single_end_stub": { + "content": [ + [ + "versions.yml:md5,80eb3d2ad36960c7e9263f81ede9d263" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-04-24T14:28:01.864343" + }, "versions_single_end_lib_type_a": { "content": [ [ diff --git a/modules/nf-core/summarizedexperiment/summarizedexperiment/templates/summarizedexperiment.r b/modules/nf-core/summarizedexperiment/summarizedexperiment/templates/summarizedexperiment.r index 58cd8473b..6c705350a 100644 --- a/modules/nf-core/summarizedexperiment/summarizedexperiment/templates/summarizedexperiment.r +++ b/modules/nf-core/summarizedexperiment/summarizedexperiment/templates/summarizedexperiment.r @@ -121,6 +121,9 @@ parse_metadata <- function(metadata_path, ids, metadata_id_col = NULL){ metadata_id_col <- findColumnWithAllEntries(ids, metadata) } + # Remove any all-NA columns + metadata <- metadata[, colSums(is.na(metadata)) != nrow(metadata)] + # Allow for duplicate rows by the id column metadata <- aggregate( . ~ metadata[[metadata_id_col]], diff --git a/modules/nf-core/summarizedexperiment/summarizedexperiment/tests/main.nf.test b/modules/nf-core/summarizedexperiment/summarizedexperiment/tests/main.nf.test index 4dda21181..b51a76cda 100644 --- a/modules/nf-core/summarizedexperiment/summarizedexperiment/tests/main.nf.test +++ b/modules/nf-core/summarizedexperiment/summarizedexperiment/tests/main.nf.test @@ -3,9 +3,15 @@ nextflow_process { name "Test Process SUMMARIZEDEXPERIMENT_SUMMARIZEDEXPERIMENT" script "../main.nf" process "SUMMARIZEDEXPERIMENT_SUMMARIZEDEXPERIMENT" - tag "UNTAR" - tag "CUSTOM_TX2GENE" - tag "TXIMETA_TXIMPORT" + + tag "modules" + tag "modules_nfcore" + tag "custom/tx2gene" + tag "tximeta" + tag "tximeta/tximport" + tag "summarizedexperiment" + tag "summarizedexperiment/summarizedexperiment" + tag "untar" setup { diff --git a/modules/nf-core/tximeta/tximport/main.nf b/modules/nf-core/tximeta/tximport/main.nf index b0cce8536..6d9ab8d78 100644 --- a/modules/nf-core/tximeta/tximport/main.nf +++ b/modules/nf-core/tximeta/tximport/main.nf @@ -13,6 +13,8 @@ process TXIMETA_TXIMPORT { output: tuple val(meta), path("*gene_tpm.tsv") , emit: tpm_gene + tuple val(meta), path("*gene_tpm_scaled.tsv") , emit: tpm_gene_scaled + tuple val(meta), path("*gene_tpm_length_scaled.tsv") , emit: tpm_gene_length_scaled tuple val(meta), path("*gene_counts.tsv") , emit: counts_gene tuple val(meta), path("*gene_counts_length_scaled.tsv"), emit: counts_gene_length_scaled tuple val(meta), path("*gene_counts_scaled.tsv") , emit: counts_gene_scaled @@ -31,6 +33,8 @@ process TXIMETA_TXIMPORT { stub: """ touch ${meta.id}.gene_tpm.tsv + touch ${meta.id}.gene_tpm_scaled.tsv + touch ${meta.id}.gene_tpm_length_scaled.tsv touch ${meta.id}.gene_counts.tsv touch ${meta.id}.gene_counts_length_scaled.tsv touch ${meta.id}.gene_counts_scaled.tsv diff --git a/modules/nf-core/tximeta/tximport/tests/main.nf.test b/modules/nf-core/tximeta/tximport/tests/main.nf.test index 5cf6af83e..e332e0b75 100644 --- a/modules/nf-core/tximeta/tximport/tests/main.nf.test +++ b/modules/nf-core/tximeta/tximport/tests/main.nf.test @@ -64,6 +64,8 @@ nextflow_process { { assert snapshot(process.out.lengths_gene).match('lengths_gene_kallisto') }, { assert snapshot(process.out.lengths_transcript).match('lengths_transcript_kallisto') }, { assert snapshot(process.out.tpm_gene).match('tpm_gene_kallisto') }, + { assert snapshot(process.out.tpm_gene_scaled).match('tpm_gene_scaled_kallisto') }, + { assert snapshot(process.out.tpm_gene_length_scaled).match('tpm_gene_length_scaled_kallisto') }, { assert snapshot(process.out.tpm_transcript).match('tpm_transcript_kallisto') }, { assert snapshot(process.out.versions).match('versions_kallisto') } ) @@ -94,6 +96,8 @@ nextflow_process { { assert snapshot(process.out.lengths_gene).match('lengths_gene_kallisto - stub') }, { assert snapshot(process.out.lengths_transcript).match('lengths_transcript_kallisto - stub') }, { assert snapshot(process.out.tpm_gene).match('tpm_gene_kallisto - stub') }, + { assert snapshot(process.out.tpm_gene_scaled).match('tpm_gene_scaled_kallisto - stub') }, + { assert snapshot(process.out.tpm_gene_length_scaled).match('tpm_gene_length_scaled_kallisto - stub') }, { assert snapshot(process.out.tpm_transcript).match('tpm_transcript_kallisto - stub') }, { assert snapshot(process.out.versions).match('versions_kallisto - stub') } ) @@ -153,6 +157,8 @@ nextflow_process { { assert snapshot(process.out.lengths_gene).match('lengths_gene_salmon') }, { assert snapshot(process.out.lengths_transcript).match('lengths_transcript_salmon') }, { assert snapshot(process.out.tpm_gene).match('tpm_gene_salmon') }, + { assert snapshot(process.out.tpm_gene_scaled).match('tpm_gene_scaled_salmon') }, + { assert snapshot(process.out.tpm_gene_length_scaled).match('tpm_gene_length_scaled_salmon') }, { assert snapshot(process.out.tpm_transcript).match('tpm_transcript_salmon') }, { assert snapshot(process.out.versions).match('versions_salmon') } ) @@ -184,6 +190,8 @@ nextflow_process { { assert snapshot(process.out.lengths_gene).match('lengths_gene_salmon - stub') }, { assert snapshot(process.out.lengths_transcript).match('lengths_transcript_salmon - stub') }, { assert snapshot(process.out.tpm_gene).match('tpm_gene_salmon - stub') }, + { assert snapshot(process.out.tpm_gene_scaled).match('tpm_gene_scaled_salmon - stub') }, + { assert snapshot(process.out.tpm_gene_length_scaled).match('tpm_gene_length_scaled_salmon - stub') }, { assert snapshot(process.out.tpm_transcript).match('tpm_transcript_salmon - stub') }, { assert snapshot(process.out.versions).match('versions_salmon - stub') } ) diff --git a/modules/nf-core/tximeta/tximport/tests/main.nf.test.snap b/modules/nf-core/tximeta/tximport/tests/main.nf.test.snap index fe972d09e..bd3e6ac81 100644 --- a/modules/nf-core/tximeta/tximport/tests/main.nf.test.snap +++ b/modules/nf-core/tximeta/tximport/tests/main.nf.test.snap @@ -1,4 +1,21 @@ { + "tpm_gene_scaled_salmon - stub": { + "content": [ + [ + [ + [ + + ], + "[].gene_tpm_scaled.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-05-15T17:06:10.039734" + }, "tpm_transcript_salmon - stub": { "content": [ [ @@ -14,7 +31,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-03-11T11:35:54.169267" + "timestamp": "2024-05-15T17:06:10.054273" }, "lengths_gene_kallisto - stub": { "content": [ @@ -31,7 +48,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-03-11T11:35:20.838048" + "timestamp": "2024-05-15T17:05:34.844905" }, "counts_gene_scaled_salmon - stub": { "content": [ @@ -48,7 +65,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-03-11T11:35:54.139493" + "timestamp": "2024-05-15T17:06:10.004285" }, "counts_gene_kallisto - stub": { "content": [ @@ -65,7 +82,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-03-11T11:35:20.823542" + "timestamp": "2024-05-15T17:05:34.830142" }, "lengths_transcript_salmon - stub": { "content": [ @@ -82,7 +99,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-03-11T11:35:54.157265" + "timestamp": "2024-05-15T17:06:10.024984" }, "versions_salmon - stub": { "content": [ @@ -94,7 +111,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-03-11T11:35:54.175019" + "timestamp": "2024-05-15T17:06:10.06179" }, "counts_gene_length_scaled_kallisto": { "content": [ @@ -111,7 +128,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-03-11T11:35:04.116135" + "timestamp": "2024-05-15T17:05:18.069055" }, "lengths_transcript_salmon": { "content": [ @@ -128,7 +145,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-03-11T11:35:37.664041" + "timestamp": "2024-05-15T17:05:51.926442" }, "counts_transcript_kallisto": { "content": [ @@ -145,7 +162,24 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-03-11T11:35:04.162273" + "timestamp": "2024-05-15T17:05:18.072017" + }, + "tpm_gene_scaled_salmon": { + "content": [ + [ + [ + { + "id": "test" + }, + "test.gene_tpm_scaled.tsv:md5,6076364cc78741a4f8bc8935a045d13d" + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-05-15T17:05:51.939292" }, "counts_transcript_kallisto - stub": { "content": [ @@ -162,7 +196,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-03-11T11:35:20.834743" + "timestamp": "2024-05-15T17:05:34.841028" }, "counts_transcript_salmon": { "content": [ @@ -179,7 +213,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-03-11T11:35:37.652813" + "timestamp": "2024-05-15T17:05:51.914566" }, "lengths_gene_salmon - stub": { "content": [ @@ -196,7 +230,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-03-11T11:35:54.151603" + "timestamp": "2024-05-15T17:06:10.017072" }, "tpm_gene_salmon": { "content": [ @@ -213,7 +247,24 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-03-11T11:35:37.669821" + "timestamp": "2024-05-15T17:05:51.932867" + }, + "tpm_gene_length_scaled_salmon": { + "content": [ + [ + [ + { + "id": "test" + }, + "test.gene_tpm_length_scaled.tsv:md5,6076364cc78741a4f8bc8935a045d13d" + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-05-15T17:05:51.946446" }, "tpm_transcript_salmon": { "content": [ @@ -230,7 +281,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-03-11T11:35:37.674895" + "timestamp": "2024-05-15T17:05:51.953143" }, "tpm_gene_salmon - stub": { "content": [ @@ -247,7 +298,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-03-11T11:35:54.163303" + "timestamp": "2024-05-15T17:06:10.032111" }, "lengths_transcript_kallisto": { "content": [ @@ -264,7 +315,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-03-11T11:35:04.1686" + "timestamp": "2024-05-15T17:05:18.075618" }, "counts_gene_length_scaled_kallisto - stub": { "content": [ @@ -281,7 +332,24 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-03-11T11:35:20.827742" + "timestamp": "2024-05-15T17:05:34.833979" + }, + "tpm_gene_scaled_kallisto - stub": { + "content": [ + [ + [ + [ + + ], + "[].gene_tpm_scaled.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-05-15T17:05:34.85604" }, "tpm_gene_kallisto - stub": { "content": [ @@ -298,7 +366,41 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-03-11T11:35:20.846428" + "timestamp": "2024-05-15T17:05:34.852369" + }, + "tpm_gene_length_scaled_salmon - stub": { + "content": [ + [ + [ + [ + + ], + "[].gene_tpm_length_scaled.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-05-15T17:06:10.046936" + }, + "tpm_gene_length_scaled_kallisto": { + "content": [ + [ + [ + { + "id": "test" + }, + "test.gene_tpm_length_scaled.tsv:md5,85d108269769ae0d841247b9b9ed922d" + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-05-15T17:05:18.083493" }, "counts_transcript_salmon - stub": { "content": [ @@ -315,7 +417,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-03-11T11:35:54.145564" + "timestamp": "2024-05-15T17:06:10.010515" }, "counts_gene_scaled_kallisto": { "content": [ @@ -332,7 +434,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-03-11T11:35:04.159638" + "timestamp": "2024-05-15T17:05:18.070165" }, "counts_gene_salmon": { "content": [ @@ -349,7 +451,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-03-11T11:35:37.636972" + "timestamp": "2024-05-15T17:05:51.897485" }, "versions_salmon": { "content": [ @@ -361,7 +463,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-03-11T11:35:37.680246" + "timestamp": "2024-05-15T17:05:51.960123" }, "counts_gene_length_scaled_salmon": { "content": [ @@ -378,7 +480,24 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-03-11T11:35:37.642848" + "timestamp": "2024-05-15T17:05:51.903299" + }, + "tpm_gene_scaled_kallisto": { + "content": [ + [ + [ + { + "id": "test" + }, + "test.gene_tpm_scaled.tsv:md5,85d108269769ae0d841247b9b9ed922d" + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-05-15T17:05:18.080714" }, "tpm_gene_kallisto": { "content": [ @@ -395,7 +514,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-03-11T11:35:04.172531" + "timestamp": "2024-05-15T17:05:18.078242" }, "lengths_transcript_kallisto - stub": { "content": [ @@ -412,7 +531,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-03-11T11:35:20.842475" + "timestamp": "2024-05-15T17:05:34.848752" }, "lengths_gene_kallisto": { "content": [ @@ -429,7 +548,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-03-11T11:35:04.16551" + "timestamp": "2024-05-15T17:05:18.073669" }, "counts_gene_scaled_kallisto - stub": { "content": [ @@ -446,7 +565,24 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-03-11T11:35:20.831518" + "timestamp": "2024-05-15T17:05:34.837599" + }, + "tpm_gene_length_scaled_kallisto - stub": { + "content": [ + [ + [ + [ + + ], + "[].gene_tpm_length_scaled.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-05-15T17:05:34.859965" }, "tpm_transcript_kallisto": { "content": [ @@ -463,7 +599,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-03-11T11:35:04.177955" + "timestamp": "2024-05-15T17:05:18.086227" }, "lengths_gene_salmon": { "content": [ @@ -480,7 +616,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-03-11T11:35:37.658624" + "timestamp": "2024-05-15T17:05:51.920866" }, "counts_gene_length_scaled_salmon - stub": { "content": [ @@ -497,7 +633,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-03-11T11:35:54.13369" + "timestamp": "2024-05-15T17:06:09.998062" }, "counts_gene_kallisto": { "content": [ @@ -514,7 +650,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-03-11T11:35:04.113216" + "timestamp": "2024-05-15T17:05:18.066975" }, "versions_kallisto": { "content": [ @@ -526,7 +662,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-03-11T11:35:04.181904" + "timestamp": "2024-05-15T17:05:18.089743" }, "counts_gene_salmon - stub": { "content": [ @@ -543,7 +679,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-03-11T11:35:54.127272" + "timestamp": "2024-05-15T17:06:09.989799" }, "versions_kallisto - stub": { "content": [ @@ -555,7 +691,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-03-11T11:35:20.86053" + "timestamp": "2024-05-15T17:05:34.86895" }, "tpm_transcript_kallisto - stub": { "content": [ @@ -572,7 +708,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-03-11T11:35:20.856075" + "timestamp": "2024-05-15T17:05:34.864527" }, "counts_gene_scaled_salmon": { "content": [ @@ -589,6 +725,6 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-03-11T11:35:37.647691" + "timestamp": "2024-05-15T17:05:51.908075" } } \ No newline at end of file diff --git a/subworkflows/nf-core/quantify_pseudo_alignment/main.nf b/subworkflows/nf-core/quantify_pseudo_alignment/main.nf index b245b9bad..4d9e6c819 100644 --- a/subworkflows/nf-core/quantify_pseudo_alignment/main.nf +++ b/subworkflows/nf-core/quantify_pseudo_alignment/main.nf @@ -106,6 +106,8 @@ workflow QUANTIFY_PSEUDO_ALIGNMENT { multiqc = ch_pseudo_multiqc // channel: [ val(meta), files_for_multiqc ] tpm_gene = TXIMETA_TXIMPORT.out.tpm_gene // path: *gene_tpm.tsv + tpm_gene_scaled = TXIMETA_TXIMPORT.out.tpm_gene_scaled // path: *gene_tpm_scaled.tsv + tpm_gene_length_scaled = TXIMETA_TXIMPORT.out.tpm_gene_length_scaled // path: *gene_tpm_length_scaled.tsv counts_gene = TXIMETA_TXIMPORT.out.counts_gene // path: *gene_counts.tsv lengths_gene = TXIMETA_TXIMPORT.out.lengths_gene // path: *gene_lengths.tsv counts_gene_length_scaled = TXIMETA_TXIMPORT.out.counts_gene_length_scaled // path: *gene_counts_length_scaled.tsv diff --git a/subworkflows/nf-core/quantify_pseudo_alignment/tests/main.nf.test b/subworkflows/nf-core/quantify_pseudo_alignment/tests/main.nf.test index 26441b1ec..aed0b162d 100644 --- a/subworkflows/nf-core/quantify_pseudo_alignment/tests/main.nf.test +++ b/subworkflows/nf-core/quantify_pseudo_alignment/tests/main.nf.test @@ -63,6 +63,8 @@ nextflow_workflow { { assert workflow.success }, { assert snapshot( workflow.out.tpm_gene, + workflow.out.tpm_gene_scaled, + workflow.out.tpm_gene_length_scaled, workflow.out.counts_gene, workflow.out.lengths_gene, workflow.out.counts_gene_length_scaled, @@ -132,6 +134,8 @@ nextflow_workflow { { assert workflow.success }, { assert snapshot( workflow.out.tpm_gene, + workflow.out.tpm_gene_scaled, + workflow.out.tpm_gene_length_scaled, workflow.out.counts_gene, workflow.out.lengths_gene, workflow.out.counts_gene_length_scaled, diff --git a/subworkflows/nf-core/quantify_pseudo_alignment/tests/main.nf.test.snap b/subworkflows/nf-core/quantify_pseudo_alignment/tests/main.nf.test.snap index 90d1e421c..4c0b1daee 100644 --- a/subworkflows/nf-core/quantify_pseudo_alignment/tests/main.nf.test.snap +++ b/subworkflows/nf-core/quantify_pseudo_alignment/tests/main.nf.test.snap @@ -9,6 +9,22 @@ "all_samples.gene_tpm.tsv:md5,23fa0c64cfbd198806b53897de791b8b" ] ], + [ + [ + { + "id": "all_samples" + }, + "all_samples.gene_tpm_scaled.tsv:md5,23fa0c64cfbd198806b53897de791b8b" + ] + ], + [ + [ + { + "id": "all_samples" + }, + "all_samples.gene_tpm_length_scaled.tsv:md5,23fa0c64cfbd198806b53897de791b8b" + ] + ], [ [ { @@ -64,7 +80,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-04-03T17:29:13.487959" + "timestamp": "2024-05-16T11:00:38.264567" }, "salmon": { "content": [ @@ -76,6 +92,22 @@ "all_samples.gene_tpm.tsv:md5,9711ed8364c3a1ea4fc87bd5e0780835" ] ], + [ + [ + { + "id": "all_samples" + }, + "all_samples.gene_tpm_scaled.tsv:md5,9711ed8364c3a1ea4fc87bd5e0780835" + ] + ], + [ + [ + { + "id": "all_samples" + }, + "all_samples.gene_tpm_length_scaled.tsv:md5,9711ed8364c3a1ea4fc87bd5e0780835" + ] + ], [ [ { @@ -133,6 +165,6 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-04-03T17:28:43.74907" + "timestamp": "2024-05-16T11:00:09.117121" } } \ No newline at end of file From 13741494ca29b6638bc8e19723ff09e4e1e06d83 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Thu, 16 May 2024 15:24:30 +0100 Subject: [PATCH 309/634] Update Changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index bf7a588ab..7205428bf 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -69,6 +69,7 @@ Thank you to everyone else that has contributed by reporting bugs, enhancements - [PR #1283](https://github.com/nf-core/rnaseq/pull/1283) - Add output files to nf-test snapshot - [PR #1293](https://github.com/nf-core/rnaseq/pull/1293) - Update subworkflow utils_nfcore_pipeline - [PR #1297](https://github.com/nf-core/rnaseq/pull/1297) - Important! Template update for nf-core/tools v2.14.1 +- [PR #1302](https://github.com/nf-core/rnaseq/pull/1302) - Add missing files from Tximport processing ### Parameters From 4e719dcd3112b2b47674c0349dd8493939a724f2 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Tue, 28 May 2024 18:01:59 +0100 Subject: [PATCH 310/634] Remove extra unnecessary tpm outputs --- modules.json | 4 +- modules/nf-core/tximeta/tximport/main.nf | 4 - .../tximeta/tximport/templates/tximport.r | 2 - .../tximeta/tximport/tests/main.nf.test | 8 - .../tximeta/tximport/tests/main.nf.test.snap | 208 +++--------------- .../nf-core/quantify_pseudo_alignment/main.nf | 2 - .../tests/main.nf.test | 4 - .../tests/main.nf.test.snap | 36 +-- 8 files changed, 40 insertions(+), 228 deletions(-) diff --git a/modules.json b/modules.json index 33e37e6db..090b2f725 100644 --- a/modules.json +++ b/modules.json @@ -236,7 +236,7 @@ }, "tximeta/tximport": { "branch": "master", - "git_sha": "689323f8f89a120469b4c898cf7f19f758c3080e", + "git_sha": "5d095e8413da1f4c72b7d07ce87f75c09482486f", "installed_by": ["modules", "quantify_pseudo_alignment"] }, "ucsc/bedclip": { @@ -329,7 +329,7 @@ }, "quantify_pseudo_alignment": { "branch": "master", - "git_sha": "0c3275555f670ac32270175390a14fa676404bac", + "git_sha": "5d095e8413da1f4c72b7d07ce87f75c09482486f", "installed_by": ["subworkflows"] }, "utils_nextflow_pipeline": { diff --git a/modules/nf-core/tximeta/tximport/main.nf b/modules/nf-core/tximeta/tximport/main.nf index 6d9ab8d78..b0cce8536 100644 --- a/modules/nf-core/tximeta/tximport/main.nf +++ b/modules/nf-core/tximeta/tximport/main.nf @@ -13,8 +13,6 @@ process TXIMETA_TXIMPORT { output: tuple val(meta), path("*gene_tpm.tsv") , emit: tpm_gene - tuple val(meta), path("*gene_tpm_scaled.tsv") , emit: tpm_gene_scaled - tuple val(meta), path("*gene_tpm_length_scaled.tsv") , emit: tpm_gene_length_scaled tuple val(meta), path("*gene_counts.tsv") , emit: counts_gene tuple val(meta), path("*gene_counts_length_scaled.tsv"), emit: counts_gene_length_scaled tuple val(meta), path("*gene_counts_scaled.tsv") , emit: counts_gene_scaled @@ -33,8 +31,6 @@ process TXIMETA_TXIMPORT { stub: """ touch ${meta.id}.gene_tpm.tsv - touch ${meta.id}.gene_tpm_scaled.tsv - touch ${meta.id}.gene_tpm_length_scaled.tsv touch ${meta.id}.gene_counts.tsv touch ${meta.id}.gene_counts_length_scaled.tsv touch ${meta.id}.gene_counts_scaled.tsv diff --git a/modules/nf-core/tximeta/tximport/templates/tximport.r b/modules/nf-core/tximeta/tximport/templates/tximport.r index 92f1a9e8d..40d79eb93 100755 --- a/modules/nf-core/tximeta/tximport/templates/tximport.r +++ b/modules/nf-core/tximeta/tximport/templates/tximport.r @@ -169,9 +169,7 @@ if ("tx2gene" %in% names(transcript_info) && !is.null(transcript_info\$tx2gene)) list(obj = gse, slot = "length", suffix = "gene_lengths.tsv"), list(obj = gse, slot = "abundance", suffix = "gene_tpm.tsv"), list(obj = gse, slot = "counts", suffix = "gene_counts.tsv"), - list(obj = gse.ls, slot = "abundance", suffix = "gene_tpm_length_scaled.tsv"), list(obj = gse.ls, slot = "counts", suffix = "gene_counts_length_scaled.tsv"), - list(obj = gse.s, slot = "abundance", suffix = "gene_tpm_scaled.tsv"), list(obj = gse.s, slot = "counts", suffix = "gene_counts_scaled.tsv") )) } diff --git a/modules/nf-core/tximeta/tximport/tests/main.nf.test b/modules/nf-core/tximeta/tximport/tests/main.nf.test index e332e0b75..5cf6af83e 100644 --- a/modules/nf-core/tximeta/tximport/tests/main.nf.test +++ b/modules/nf-core/tximeta/tximport/tests/main.nf.test @@ -64,8 +64,6 @@ nextflow_process { { assert snapshot(process.out.lengths_gene).match('lengths_gene_kallisto') }, { assert snapshot(process.out.lengths_transcript).match('lengths_transcript_kallisto') }, { assert snapshot(process.out.tpm_gene).match('tpm_gene_kallisto') }, - { assert snapshot(process.out.tpm_gene_scaled).match('tpm_gene_scaled_kallisto') }, - { assert snapshot(process.out.tpm_gene_length_scaled).match('tpm_gene_length_scaled_kallisto') }, { assert snapshot(process.out.tpm_transcript).match('tpm_transcript_kallisto') }, { assert snapshot(process.out.versions).match('versions_kallisto') } ) @@ -96,8 +94,6 @@ nextflow_process { { assert snapshot(process.out.lengths_gene).match('lengths_gene_kallisto - stub') }, { assert snapshot(process.out.lengths_transcript).match('lengths_transcript_kallisto - stub') }, { assert snapshot(process.out.tpm_gene).match('tpm_gene_kallisto - stub') }, - { assert snapshot(process.out.tpm_gene_scaled).match('tpm_gene_scaled_kallisto - stub') }, - { assert snapshot(process.out.tpm_gene_length_scaled).match('tpm_gene_length_scaled_kallisto - stub') }, { assert snapshot(process.out.tpm_transcript).match('tpm_transcript_kallisto - stub') }, { assert snapshot(process.out.versions).match('versions_kallisto - stub') } ) @@ -157,8 +153,6 @@ nextflow_process { { assert snapshot(process.out.lengths_gene).match('lengths_gene_salmon') }, { assert snapshot(process.out.lengths_transcript).match('lengths_transcript_salmon') }, { assert snapshot(process.out.tpm_gene).match('tpm_gene_salmon') }, - { assert snapshot(process.out.tpm_gene_scaled).match('tpm_gene_scaled_salmon') }, - { assert snapshot(process.out.tpm_gene_length_scaled).match('tpm_gene_length_scaled_salmon') }, { assert snapshot(process.out.tpm_transcript).match('tpm_transcript_salmon') }, { assert snapshot(process.out.versions).match('versions_salmon') } ) @@ -190,8 +184,6 @@ nextflow_process { { assert snapshot(process.out.lengths_gene).match('lengths_gene_salmon - stub') }, { assert snapshot(process.out.lengths_transcript).match('lengths_transcript_salmon - stub') }, { assert snapshot(process.out.tpm_gene).match('tpm_gene_salmon - stub') }, - { assert snapshot(process.out.tpm_gene_scaled).match('tpm_gene_scaled_salmon - stub') }, - { assert snapshot(process.out.tpm_gene_length_scaled).match('tpm_gene_length_scaled_salmon - stub') }, { assert snapshot(process.out.tpm_transcript).match('tpm_transcript_salmon - stub') }, { assert snapshot(process.out.versions).match('versions_salmon - stub') } ) diff --git a/modules/nf-core/tximeta/tximport/tests/main.nf.test.snap b/modules/nf-core/tximeta/tximport/tests/main.nf.test.snap index bd3e6ac81..3cd0ee9e4 100644 --- a/modules/nf-core/tximeta/tximport/tests/main.nf.test.snap +++ b/modules/nf-core/tximeta/tximport/tests/main.nf.test.snap @@ -1,21 +1,4 @@ { - "tpm_gene_scaled_salmon - stub": { - "content": [ - [ - [ - [ - - ], - "[].gene_tpm_scaled.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-05-15T17:06:10.039734" - }, "tpm_transcript_salmon - stub": { "content": [ [ @@ -31,7 +14,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-05-15T17:06:10.054273" + "timestamp": "2024-05-28T12:35:50.683744" }, "lengths_gene_kallisto - stub": { "content": [ @@ -48,7 +31,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-05-15T17:05:34.844905" + "timestamp": "2024-05-28T12:35:16.126128" }, "counts_gene_scaled_salmon - stub": { "content": [ @@ -65,7 +48,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-05-15T17:06:10.004285" + "timestamp": "2024-05-28T12:35:50.654405" }, "counts_gene_kallisto - stub": { "content": [ @@ -82,7 +65,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-05-15T17:05:34.830142" + "timestamp": "2024-05-28T12:35:16.112898" }, "lengths_transcript_salmon - stub": { "content": [ @@ -99,7 +82,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-05-15T17:06:10.024984" + "timestamp": "2024-05-28T12:35:50.67148" }, "versions_salmon - stub": { "content": [ @@ -111,7 +94,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-05-15T17:06:10.06179" + "timestamp": "2024-05-28T12:35:50.690592" }, "counts_gene_length_scaled_kallisto": { "content": [ @@ -128,7 +111,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-05-15T17:05:18.069055" + "timestamp": "2024-05-28T12:34:59.621599" }, "lengths_transcript_salmon": { "content": [ @@ -145,7 +128,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-05-15T17:05:51.926442" + "timestamp": "2024-05-28T12:35:32.876208" }, "counts_transcript_kallisto": { "content": [ @@ -162,24 +145,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-05-15T17:05:18.072017" - }, - "tpm_gene_scaled_salmon": { - "content": [ - [ - [ - { - "id": "test" - }, - "test.gene_tpm_scaled.tsv:md5,6076364cc78741a4f8bc8935a045d13d" - ] - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-05-15T17:05:51.939292" + "timestamp": "2024-05-28T12:34:59.62725" }, "counts_transcript_kallisto - stub": { "content": [ @@ -196,7 +162,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-05-15T17:05:34.841028" + "timestamp": "2024-05-28T12:35:16.122852" }, "counts_transcript_salmon": { "content": [ @@ -213,7 +179,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-05-15T17:05:51.914566" + "timestamp": "2024-05-28T12:35:32.866731" }, "lengths_gene_salmon - stub": { "content": [ @@ -230,7 +196,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-05-15T17:06:10.017072" + "timestamp": "2024-05-28T12:35:50.6654" }, "tpm_gene_salmon": { "content": [ @@ -247,24 +213,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-05-15T17:05:51.932867" - }, - "tpm_gene_length_scaled_salmon": { - "content": [ - [ - [ - { - "id": "test" - }, - "test.gene_tpm_length_scaled.tsv:md5,6076364cc78741a4f8bc8935a045d13d" - ] - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-05-15T17:05:51.946446" + "timestamp": "2024-05-28T12:35:32.881193" }, "tpm_transcript_salmon": { "content": [ @@ -281,7 +230,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-05-15T17:05:51.953143" + "timestamp": "2024-05-28T12:35:32.886363" }, "tpm_gene_salmon - stub": { "content": [ @@ -298,7 +247,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-05-15T17:06:10.032111" + "timestamp": "2024-05-28T12:35:50.677538" }, "lengths_transcript_kallisto": { "content": [ @@ -315,7 +264,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-05-15T17:05:18.075618" + "timestamp": "2024-05-28T12:34:59.632822" }, "counts_gene_length_scaled_kallisto - stub": { "content": [ @@ -332,24 +281,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-05-15T17:05:34.833979" - }, - "tpm_gene_scaled_kallisto - stub": { - "content": [ - [ - [ - [ - - ], - "[].gene_tpm_scaled.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-05-15T17:05:34.85604" + "timestamp": "2024-05-28T12:35:16.11652" }, "tpm_gene_kallisto - stub": { "content": [ @@ -366,41 +298,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-05-15T17:05:34.852369" - }, - "tpm_gene_length_scaled_salmon - stub": { - "content": [ - [ - [ - [ - - ], - "[].gene_tpm_length_scaled.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-05-15T17:06:10.046936" - }, - "tpm_gene_length_scaled_kallisto": { - "content": [ - [ - [ - { - "id": "test" - }, - "test.gene_tpm_length_scaled.tsv:md5,85d108269769ae0d841247b9b9ed922d" - ] - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-05-15T17:05:18.083493" + "timestamp": "2024-05-28T12:35:16.133742" }, "counts_transcript_salmon - stub": { "content": [ @@ -417,7 +315,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-05-15T17:06:10.010515" + "timestamp": "2024-05-28T12:35:50.660144" }, "counts_gene_scaled_kallisto": { "content": [ @@ -434,7 +332,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-05-15T17:05:18.070165" + "timestamp": "2024-05-28T12:34:59.624732" }, "counts_gene_salmon": { "content": [ @@ -451,7 +349,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-05-15T17:05:51.897485" + "timestamp": "2024-05-28T12:35:32.852188" }, "versions_salmon": { "content": [ @@ -463,7 +361,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-05-15T17:05:51.960123" + "timestamp": "2024-05-28T12:35:32.892224" }, "counts_gene_length_scaled_salmon": { "content": [ @@ -480,24 +378,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-05-15T17:05:51.903299" - }, - "tpm_gene_scaled_kallisto": { - "content": [ - [ - [ - { - "id": "test" - }, - "test.gene_tpm_scaled.tsv:md5,85d108269769ae0d841247b9b9ed922d" - ] - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-05-15T17:05:18.080714" + "timestamp": "2024-05-28T12:35:32.857451" }, "tpm_gene_kallisto": { "content": [ @@ -514,7 +395,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-05-15T17:05:18.078242" + "timestamp": "2024-05-28T12:34:59.636454" }, "lengths_transcript_kallisto - stub": { "content": [ @@ -531,7 +412,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-05-15T17:05:34.848752" + "timestamp": "2024-05-28T12:35:16.129712" }, "lengths_gene_kallisto": { "content": [ @@ -548,7 +429,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-05-15T17:05:18.073669" + "timestamp": "2024-05-28T12:34:59.630042" }, "counts_gene_scaled_kallisto - stub": { "content": [ @@ -565,24 +446,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-05-15T17:05:34.837599" - }, - "tpm_gene_length_scaled_kallisto - stub": { - "content": [ - [ - [ - [ - - ], - "[].gene_tpm_length_scaled.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-05-15T17:05:34.859965" + "timestamp": "2024-05-28T12:35:16.119638" }, "tpm_transcript_kallisto": { "content": [ @@ -599,7 +463,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-05-15T17:05:18.086227" + "timestamp": "2024-05-28T12:34:59.639525" }, "lengths_gene_salmon": { "content": [ @@ -616,7 +480,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-05-15T17:05:51.920866" + "timestamp": "2024-05-28T12:35:32.871162" }, "counts_gene_length_scaled_salmon - stub": { "content": [ @@ -633,7 +497,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-05-15T17:06:09.998062" + "timestamp": "2024-05-28T12:35:50.605613" }, "counts_gene_kallisto": { "content": [ @@ -650,7 +514,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-05-15T17:05:18.066975" + "timestamp": "2024-05-28T12:34:59.61832" }, "versions_kallisto": { "content": [ @@ -662,7 +526,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-05-15T17:05:18.089743" + "timestamp": "2024-05-28T12:34:59.642751" }, "counts_gene_salmon - stub": { "content": [ @@ -679,7 +543,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-05-15T17:06:09.989799" + "timestamp": "2024-05-28T12:35:50.598457" }, "versions_kallisto - stub": { "content": [ @@ -691,7 +555,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-05-15T17:05:34.86895" + "timestamp": "2024-05-28T12:35:16.141689" }, "tpm_transcript_kallisto - stub": { "content": [ @@ -708,7 +572,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-05-15T17:05:34.864527" + "timestamp": "2024-05-28T12:35:16.137716" }, "counts_gene_scaled_salmon": { "content": [ @@ -725,6 +589,6 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-05-15T17:05:51.908075" + "timestamp": "2024-05-28T12:35:32.862272" } } \ No newline at end of file diff --git a/subworkflows/nf-core/quantify_pseudo_alignment/main.nf b/subworkflows/nf-core/quantify_pseudo_alignment/main.nf index 4d9e6c819..b245b9bad 100644 --- a/subworkflows/nf-core/quantify_pseudo_alignment/main.nf +++ b/subworkflows/nf-core/quantify_pseudo_alignment/main.nf @@ -106,8 +106,6 @@ workflow QUANTIFY_PSEUDO_ALIGNMENT { multiqc = ch_pseudo_multiqc // channel: [ val(meta), files_for_multiqc ] tpm_gene = TXIMETA_TXIMPORT.out.tpm_gene // path: *gene_tpm.tsv - tpm_gene_scaled = TXIMETA_TXIMPORT.out.tpm_gene_scaled // path: *gene_tpm_scaled.tsv - tpm_gene_length_scaled = TXIMETA_TXIMPORT.out.tpm_gene_length_scaled // path: *gene_tpm_length_scaled.tsv counts_gene = TXIMETA_TXIMPORT.out.counts_gene // path: *gene_counts.tsv lengths_gene = TXIMETA_TXIMPORT.out.lengths_gene // path: *gene_lengths.tsv counts_gene_length_scaled = TXIMETA_TXIMPORT.out.counts_gene_length_scaled // path: *gene_counts_length_scaled.tsv diff --git a/subworkflows/nf-core/quantify_pseudo_alignment/tests/main.nf.test b/subworkflows/nf-core/quantify_pseudo_alignment/tests/main.nf.test index aed0b162d..26441b1ec 100644 --- a/subworkflows/nf-core/quantify_pseudo_alignment/tests/main.nf.test +++ b/subworkflows/nf-core/quantify_pseudo_alignment/tests/main.nf.test @@ -63,8 +63,6 @@ nextflow_workflow { { assert workflow.success }, { assert snapshot( workflow.out.tpm_gene, - workflow.out.tpm_gene_scaled, - workflow.out.tpm_gene_length_scaled, workflow.out.counts_gene, workflow.out.lengths_gene, workflow.out.counts_gene_length_scaled, @@ -134,8 +132,6 @@ nextflow_workflow { { assert workflow.success }, { assert snapshot( workflow.out.tpm_gene, - workflow.out.tpm_gene_scaled, - workflow.out.tpm_gene_length_scaled, workflow.out.counts_gene, workflow.out.lengths_gene, workflow.out.counts_gene_length_scaled, diff --git a/subworkflows/nf-core/quantify_pseudo_alignment/tests/main.nf.test.snap b/subworkflows/nf-core/quantify_pseudo_alignment/tests/main.nf.test.snap index 4c0b1daee..c5f435665 100644 --- a/subworkflows/nf-core/quantify_pseudo_alignment/tests/main.nf.test.snap +++ b/subworkflows/nf-core/quantify_pseudo_alignment/tests/main.nf.test.snap @@ -9,22 +9,6 @@ "all_samples.gene_tpm.tsv:md5,23fa0c64cfbd198806b53897de791b8b" ] ], - [ - [ - { - "id": "all_samples" - }, - "all_samples.gene_tpm_scaled.tsv:md5,23fa0c64cfbd198806b53897de791b8b" - ] - ], - [ - [ - { - "id": "all_samples" - }, - "all_samples.gene_tpm_length_scaled.tsv:md5,23fa0c64cfbd198806b53897de791b8b" - ] - ], [ [ { @@ -80,7 +64,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-05-16T11:00:38.264567" + "timestamp": "2024-05-28T12:54:12.855884" }, "salmon": { "content": [ @@ -92,22 +76,6 @@ "all_samples.gene_tpm.tsv:md5,9711ed8364c3a1ea4fc87bd5e0780835" ] ], - [ - [ - { - "id": "all_samples" - }, - "all_samples.gene_tpm_scaled.tsv:md5,9711ed8364c3a1ea4fc87bd5e0780835" - ] - ], - [ - [ - { - "id": "all_samples" - }, - "all_samples.gene_tpm_length_scaled.tsv:md5,9711ed8364c3a1ea4fc87bd5e0780835" - ] - ], [ [ { @@ -165,6 +133,6 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-05-16T11:00:09.117121" + "timestamp": "2024-05-28T12:53:39.46319" } } \ No newline at end of file From deded7b77b3bafe20c2cd8c8d76c6a9264401ff6 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Tue, 28 May 2024 18:07:19 +0100 Subject: [PATCH 311/634] Update CHANGELOG --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7205428bf..a3247cd95 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -70,6 +70,7 @@ Thank you to everyone else that has contributed by reporting bugs, enhancements - [PR #1293](https://github.com/nf-core/rnaseq/pull/1293) - Update subworkflow utils_nfcore_pipeline - [PR #1297](https://github.com/nf-core/rnaseq/pull/1297) - Important! Template update for nf-core/tools v2.14.1 - [PR #1302](https://github.com/nf-core/rnaseq/pull/1302) - Add missing files from Tximport processing +- [PR #1304](https://github.com/nf-core/rnaseq/pull/1304) - https://github.com/nf-core/rnaseq/pull/1304 ### Parameters From 2a86507c1da2a28344f58863596f737f2c5b4c8c Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Tue, 28 May 2024 18:08:12 +0100 Subject: [PATCH 312/634] Update CHANGELOG --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a3247cd95..c8f5df860 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -70,7 +70,7 @@ Thank you to everyone else that has contributed by reporting bugs, enhancements - [PR #1293](https://github.com/nf-core/rnaseq/pull/1293) - Update subworkflow utils_nfcore_pipeline - [PR #1297](https://github.com/nf-core/rnaseq/pull/1297) - Important! Template update for nf-core/tools v2.14.1 - [PR #1302](https://github.com/nf-core/rnaseq/pull/1302) - Add missing files from Tximport processing -- [PR #1304](https://github.com/nf-core/rnaseq/pull/1304) - https://github.com/nf-core/rnaseq/pull/1304 +- [PR #1304](https://github.com/nf-core/rnaseq/pull/1304) - Remove redundant gene TPM outputs ### Parameters From 0cfb662e8b1ecaee6e21010fa8b0cd118262157d Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Wed, 29 May 2024 13:03:27 +0100 Subject: [PATCH 313/634] Check RSeQC strandedness without reference to undetermined --- .../local/utils_nfcore_rnaseq_pipeline/main.nf | 10 ++++++---- workflows/rnaseq/main.nf | 2 +- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/subworkflows/local/utils_nfcore_rnaseq_pipeline/main.nf b/subworkflows/local/utils_nfcore_rnaseq_pipeline/main.nf index d42ba7edd..21585310a 100644 --- a/subworkflows/local/utils_nfcore_rnaseq_pipeline/main.nf +++ b/subworkflows/local/utils_nfcore_rnaseq_pipeline/main.nf @@ -547,7 +547,7 @@ def biotypeInGtf(gtf_file, biotype) { // // Function that parses and returns the predicted strandedness from the RSeQC infer_experiment.py output // -def getInferexperimentStrandedness(inferexperiment_file, cutoff=30) { +def getInferexperimentStrandedness(inferexperiment_file, cutoff_ratio=5) { def sense = 0 def antisense = 0 def undetermined = 0 @@ -564,9 +564,11 @@ def getInferexperimentStrandedness(inferexperiment_file, cutoff=30) { if (pe_antisense_matcher) antisense = pe_antisense_matcher[0][1].toFloat() * 100 } def strandedness = 'unstranded' - if (sense >= 100-cutoff) { - strandedness = 'forward' - } else if (antisense >= 100-cutoff) { + ratio = sense / antisense + + if (ratio >= cutoff_ratio) { + strandedness = 'forward'i + } else if ((1 / ratio) >= cutoff_ratio) { strandedness = 'reverse' } return [ strandedness, sense, antisense, undetermined ] diff --git a/workflows/rnaseq/main.nf b/workflows/rnaseq/main.nf index b679a4b34..9c1ab2495 100755 --- a/workflows/rnaseq/main.nf +++ b/workflows/rnaseq/main.nf @@ -723,7 +723,7 @@ workflow RNASEQ { .inferexperiment_txt .map { meta, strand_log -> - def inferred_strand = getInferexperimentStrandedness(strand_log, 30) + def inferred_strand = getInferexperimentStrandedness(strand_log, 5) if (meta.strandedness != inferred_strand[0]) { return [ "$meta.id\t$meta.strandedness\t${inferred_strand.join('\t')}" ] } From 5ce89ae977e4017c63f6887034c469dae54ca763 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Wed, 29 May 2024 14:27:14 +0100 Subject: [PATCH 314/634] Update subworkflows/local/utils_nfcore_rnaseq_pipeline/main.nf Co-authored-by: Harshil Patel --- subworkflows/local/utils_nfcore_rnaseq_pipeline/main.nf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/subworkflows/local/utils_nfcore_rnaseq_pipeline/main.nf b/subworkflows/local/utils_nfcore_rnaseq_pipeline/main.nf index 21585310a..d8ecb78a7 100644 --- a/subworkflows/local/utils_nfcore_rnaseq_pipeline/main.nf +++ b/subworkflows/local/utils_nfcore_rnaseq_pipeline/main.nf @@ -567,7 +567,7 @@ def getInferexperimentStrandedness(inferexperiment_file, cutoff_ratio=5) { ratio = sense / antisense if (ratio >= cutoff_ratio) { - strandedness = 'forward'i + strandedness = 'forward' } else if ((1 / ratio) >= cutoff_ratio) { strandedness = 'reverse' } From afa81b439f02b26adb5ee4aa1955d5173b001638 Mon Sep 17 00:00:00 2001 From: maxulysse Date: Wed, 29 May 2024 18:58:47 +0200 Subject: [PATCH 315/634] close #1095 --- CHANGELOG.md | 1 + README.md | 2 +- docs/images/nf-core-rnaseq_metro_map_grey.png | Bin 306439 -> 301186 bytes docs/images/nf-core-rnaseq_metro_map_grey.svg | 66 +++++------------- 4 files changed, 21 insertions(+), 48 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c8f5df860..d68bf1fdb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -71,6 +71,7 @@ Thank you to everyone else that has contributed by reporting bugs, enhancements - [PR #1297](https://github.com/nf-core/rnaseq/pull/1297) - Important! Template update for nf-core/tools v2.14.1 - [PR #1302](https://github.com/nf-core/rnaseq/pull/1302) - Add missing files from Tximport processing - [PR #1304](https://github.com/nf-core/rnaseq/pull/1304) - Remove redundant gene TPM outputs +- [PR #1307](https://github.com/nf-core/rnaseq/pull/1307) - Clarify infer strandedness step in subway map and text ### Parameters diff --git a/README.md b/README.md index 49343645d..411dfd3f4 100644 --- a/README.md +++ b/README.md @@ -23,7 +23,7 @@ ![nf-core/rnaseq metro map](docs/images/nf-core-rnaseq_metro_map_grey.png) 1. Merge re-sequenced FastQ files ([`cat`](http://www.linfo.org/cat.html)) -2. Sub-sample FastQ files and auto-infer strandedness ([`fq`](https://github.com/stjude-rust-labs/fq), [`Salmon`](https://combine-lab.github.io/salmon/)) +2. Auto-infer strandedness by subsampling and pseudoalignment ([`fq`](https://github.com/stjude-rust-labs/fq), [`Salmon`](https://combine-lab.github.io/salmon/)) 3. Read QC ([`FastQC`](https://www.bioinformatics.babraham.ac.uk/projects/fastqc/)) 4. UMI extraction ([`UMI-tools`](https://github.com/CGATOxford/UMI-tools)) 5. Adapter and quality trimming ([`Trim Galore!`](https://www.bioinformatics.babraham.ac.uk/projects/trim_galore/)) diff --git a/docs/images/nf-core-rnaseq_metro_map_grey.png b/docs/images/nf-core-rnaseq_metro_map_grey.png index 0dbf23f813a973ad93dd85994bf5b497f4fdd8c0..e867c2d170b5f0be7bb149d3d89806eafa232652 100644 GIT binary patch literal 301186 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
    7ZLc^sC5WYiDNwl-YOs(KOo; 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

    6W9ylcKw`&d~en_jzMwM*Dhn9o<$ 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

    BC#dfPcqY8R6XV>T}vQpXT5ByDVpA3d6uo}T_r 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 Yr~225a*95lQurEaHfGo{6Q`B`2Z)vckN^Mx literal 306439 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 z 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

    6w1U>n`%7H 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

    qh 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 Rv|N&fUzpEJ_}q5ye*t&(T5JFS diff --git a/docs/images/nf-core-rnaseq_metro_map_grey.svg b/docs/images/nf-core-rnaseq_metro_map_grey.svg index b17e5844c..04bed193f 100644 --- a/docs/images/nf-core-rnaseq_metro_map_grey.svg +++ b/docs/images/nf-core-rnaseq_metro_map_grey.svg @@ -7,7 +7,7 @@ viewBox="0 0 646.4851 269.92565" version="1.1" id="svg8" - inkscape:version="1.3 (1:1.3+202307231459+0e150ed6c4)" + inkscape:version="1.3.2 (1:1.3.2+202311252150+091e20ef0f)" sodipodi:docname="nf-core-rnaseq_metro_map_grey.svg" inkscape:export-filename="nf-core-rnaseq_metro_map_grey.png" inkscape:export-xdpi="89" @@ -655,9 +655,9 @@ borderopacity="1.0" inkscape:pageopacity="0.0" inkscape:pageshadow="2" - inkscape:zoom="1.14" - inkscape:cx="1333.7719" - inkscape:cy="345.17543" + inkscape:zoom="0.40305087" + inkscape:cx="1043.2926" + inkscape:cy="219.57526" inkscape:document-units="mm" inkscape:current-layer="layer1" showgrid="false" @@ -1575,38 +1575,18 @@ xml:space="preserve" style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:7.05556px;line-height:1.25;font-family:'DejaVu Sans Mono';-inkscape-font-specification:'DejaVu Sans Mono Bold';letter-spacing:0px;stroke-width:0.264583" x="9.9873886" - y="-38.873566" + y="-4.1848483" id="text2523">catcatfastqsubsamplefastq(fq)fastqSortMeRNAFastQCinferstrandedness(Salmon)(Salmon, fq)BBSplit Date: Thu, 30 May 2024 15:59:08 +0100 Subject: [PATCH 316/634] Document FASTP sampling --- docs/usage.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/docs/usage.md b/docs/usage.md index 89ef06d8b..bc8db4dc7 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -55,6 +55,14 @@ An [example samplesheet](../assets/samplesheet.csv) has been provided with the p > **NB:** The `group` and `replicate` columns were replaced with a single `sample` column as of v3.1 of the pipeline. The `sample` column is essentially a concatenation of the `group` and `replicate` columns, however it now also offers more flexibility in instances where replicate information is not required e.g. when sequencing clinical samples. If all values of `sample` have the same number of underscores, fields defined by these underscore-separated names may be used in the PCA plots produced by the pipeline, to regain the ability to represent different groupings. +## FASTQ sampling + +If you would like to reduce the number of reads used in the analysis, for example to test pipeline operation with limited resource usage, you can make use of the FASTP option for trimming (see below). FASTP has an option to take the first `n` reads of input FASTQ file(s), so this can be used to reduce the reads passed to subsequent steps. For example, to pass only the first 10,000 reads for trimming you would set input paramters like: + +``` +--trimmer fastp --extra_fastp_args '--reads_to_process 10000' +``` + ## Adapter trimming options [Trim Galore!](https://www.bioinformatics.babraham.ac.uk/projects/trim_galore/) is a wrapper tool around Cutadapt and FastQC to peform quality and adapter trimming on FastQ files. Trim Galore! will automatically detect and trim the appropriate adapter sequence. It is the default trimming tool used by this pipeline, however you can use fastp instead by specifying the `--trimmer fastp` parameter. [fastp](https://github.com/OpenGene/fastp) is a tool designed to provide fast, all-in-one preprocessing for FastQ files. It has been developed in C++ with multithreading support to achieve higher performance. You can specify additional options for Trim Galore! and fastp via the `--extra_trimgalore_args` and `--extra_fastp_args` parameters, respectively. From cdc8f53f3515b1a7e982006a1b2a282a9fdffafb Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Thu, 30 May 2024 16:01:53 +0100 Subject: [PATCH 317/634] Update CHANGELOG --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index c8f5df860..fa556b37e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -71,6 +71,7 @@ Thank you to everyone else that has contributed by reporting bugs, enhancements - [PR #1297](https://github.com/nf-core/rnaseq/pull/1297) - Important! Template update for nf-core/tools v2.14.1 - [PR #1302](https://github.com/nf-core/rnaseq/pull/1302) - Add missing files from Tximport processing - [PR #1304](https://github.com/nf-core/rnaseq/pull/1304) - Remove redundant gene TPM outputs +- [PR #1309](https://github.com/nf-core/rnaseq/pull/1309) - Document FASTP sampling ### Parameters From 01c76fe2da7dd3e5f1cd32ec13e817341800e5dc Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Thu, 30 May 2024 16:48:32 +0100 Subject: [PATCH 318/634] Add missing subworkflow config import --- workflows/rnaseq/nextflow.config | 1 + 1 file changed, 1 insertion(+) diff --git a/workflows/rnaseq/nextflow.config b/workflows/rnaseq/nextflow.config index 1c0eb8b69..463aacd59 100644 --- a/workflows/rnaseq/nextflow.config +++ b/workflows/rnaseq/nextflow.config @@ -10,6 +10,7 @@ includeConfig "../../modules/nf-core/stringtie/stringtie/nextflow.config" includeConfig "../../modules/nf-core/subread/featurecounts/nextflow.config" includeConfig "../../subworkflows/local/align_star/nextflow.config" includeConfig "../../subworkflows/local/quantify_rsem/nextflow.config" +includeConfig "../../subworkflows/local/quantify_pseudo_alignment/nextflow.config" includeConfig "../../subworkflows/nf-core/bam_markduplicates_picard/nextflow.config" includeConfig "../../subworkflows/nf-core/bam_rseqc/nextflow.config" includeConfig "../../subworkflows/nf-core/fastq_align_hisat2/nextflow.config" From 645abe48968bd6cfd56c0832baeb23918d4bfc3f Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Thu, 30 May 2024 17:06:52 +0100 Subject: [PATCH 319/634] correctly reference quantification subworkflow config --- workflows/rnaseq/nextflow.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/workflows/rnaseq/nextflow.config b/workflows/rnaseq/nextflow.config index 463aacd59..657b483a6 100644 --- a/workflows/rnaseq/nextflow.config +++ b/workflows/rnaseq/nextflow.config @@ -10,7 +10,7 @@ includeConfig "../../modules/nf-core/stringtie/stringtie/nextflow.config" includeConfig "../../modules/nf-core/subread/featurecounts/nextflow.config" includeConfig "../../subworkflows/local/align_star/nextflow.config" includeConfig "../../subworkflows/local/quantify_rsem/nextflow.config" -includeConfig "../../subworkflows/local/quantify_pseudo_alignment/nextflow.config" +includeConfig "../../subworkflows/nf-core/quantify_pseudo_alignment/nextflow.config" includeConfig "../../subworkflows/nf-core/bam_markduplicates_picard/nextflow.config" includeConfig "../../subworkflows/nf-core/bam_rseqc/nextflow.config" includeConfig "../../subworkflows/nf-core/fastq_align_hisat2/nextflow.config" From 5bef11b969acb2f2091eb6c84745580b5f70b527 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Thu, 30 May 2024 17:21:01 +0100 Subject: [PATCH 320/634] update changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index c8f5df860..485f6f5c6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -71,6 +71,7 @@ Thank you to everyone else that has contributed by reporting bugs, enhancements - [PR #1297](https://github.com/nf-core/rnaseq/pull/1297) - Important! Template update for nf-core/tools v2.14.1 - [PR #1302](https://github.com/nf-core/rnaseq/pull/1302) - Add missing files from Tximport processing - [PR #1304](https://github.com/nf-core/rnaseq/pull/1304) - Remove redundant gene TPM outputs +- [PR #1310](https://github.com/nf-core/rnaseq/pull/1310) - Reinstate pseudoalignment subworkflow config ### Parameters From eef9910b0feb1c84995b2b7ce05d2d1407e2f515 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Fri, 31 May 2024 09:52:28 +0100 Subject: [PATCH 321/634] Fix issues with unzipping of GTF/ GFF files --- subworkflows/local/prepare_genome/main.nf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/subworkflows/local/prepare_genome/main.nf b/subworkflows/local/prepare_genome/main.nf index b048b5274..7f8b5102b 100644 --- a/subworkflows/local/prepare_genome/main.nf +++ b/subworkflows/local/prepare_genome/main.nf @@ -82,14 +82,14 @@ workflow PREPARE_GENOME { if (gtf || gff) { if (gtf) { if (gtf.endsWith('.gz')) { - ch_gtf = GUNZIP_GTF ( [ [:], gtf ] ).gunzip.map { it[1] } + ch_gtf = GUNZIP_GTF ( [ [:], file(gtf) ] ).gunzip.map { it[1] } ch_versions = ch_versions.mix(GUNZIP_GTF.out.versions) } else { ch_gtf = Channel.value(file(gtf)) } } else if (gff) { if (gff.endsWith('.gz')) { - ch_gff = GUNZIP_GFF ( [ [:], gff ] ).gunzip.map { it[1] } + ch_gff = GUNZIP_GFF ( [ [:], file(gff) ] ).gunzip.map { it[1] } ch_versions = ch_versions.mix(GUNZIP_GFF.out.versions) } else { ch_gff = Channel.value(file(gff)) From 11b68dd38ddb64807ce23b30f84d9afb6d8ed49e Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Fri, 31 May 2024 09:54:54 +0100 Subject: [PATCH 322/634] Update changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index c8f5df860..ae016e65f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -71,6 +71,7 @@ Thank you to everyone else that has contributed by reporting bugs, enhancements - [PR #1297](https://github.com/nf-core/rnaseq/pull/1297) - Important! Template update for nf-core/tools v2.14.1 - [PR #1302](https://github.com/nf-core/rnaseq/pull/1302) - Add missing files from Tximport processing - [PR #1304](https://github.com/nf-core/rnaseq/pull/1304) - Remove redundant gene TPM outputs +- [PR #1312](https://github.com/nf-core/rnaseq/pull/1312) - Fix issues with unzipping of GTF/ GFF files without absolute paths ### Parameters From f018a0cf87c634a6a2eeb34d64a554a6fa852be0 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Fri, 31 May 2024 10:47:12 +0100 Subject: [PATCH 323/634] Same for other zipped reference inputs --- subworkflows/local/prepare_genome/main.nf | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/subworkflows/local/prepare_genome/main.nf b/subworkflows/local/prepare_genome/main.nf index 7f8b5102b..393022ef7 100644 --- a/subworkflows/local/prepare_genome/main.nf +++ b/subworkflows/local/prepare_genome/main.nf @@ -70,7 +70,7 @@ workflow PREPARE_GENOME { // Uncompress genome fasta file if required // if (fasta.endsWith('.gz')) { - ch_fasta = GUNZIP_FASTA ( [ [:], fasta ] ).gunzip.map { it[1] } + ch_fasta = GUNZIP_FASTA ( [ [:], file(fasta) ] ).gunzip.map { it[1] } ch_versions = ch_versions.mix(GUNZIP_FASTA.out.versions) } else { ch_fasta = Channel.value(file(fasta)) @@ -129,7 +129,7 @@ workflow PREPARE_GENOME { def biotype = gencode ? "gene_type" : featurecounts_group_type if (additional_fasta) { if (additional_fasta.endsWith('.gz')) { - ch_add_fasta = GUNZIP_ADDITIONAL_FASTA ( [ [:], additional_fasta ] ).gunzip.map { it[1] } + ch_add_fasta = GUNZIP_ADDITIONAL_FASTA ( [ [:], file(additional_fasta) ] ).gunzip.map { it[1] } ch_versions = ch_versions.mix(GUNZIP_ADDITIONAL_FASTA.out.versions) } else { ch_add_fasta = Channel.value(file(additional_fasta)) @@ -150,7 +150,7 @@ workflow PREPARE_GENOME { // if (gene_bed) { if (gene_bed.endsWith('.gz')) { - ch_gene_bed = GUNZIP_GENE_BED ( [ [:], gene_bed ] ).gunzip.map { it[1] } + ch_gene_bed = GUNZIP_GENE_BED ( [ [:], file(gene_bed) ] ).gunzip.map { it[1] } ch_versions = ch_versions.mix(GUNZIP_GENE_BED.out.versions) } else { ch_gene_bed = Channel.value(file(gene_bed)) @@ -165,7 +165,7 @@ workflow PREPARE_GENOME { // if (transcript_fasta) { if (transcript_fasta.endsWith('.gz')) { - ch_transcript_fasta = GUNZIP_TRANSCRIPT_FASTA ( [ [:], transcript_fasta ] ).gunzip.map { it[1] } + ch_transcript_fasta = GUNZIP_TRANSCRIPT_FASTA ( [ [:], file(transcript_fasta) ] ).gunzip.map { it[1] } ch_versions = ch_versions.mix(GUNZIP_TRANSCRIPT_FASTA.out.versions) } else { ch_transcript_fasta = Channel.value(file(transcript_fasta)) From d40544285d222be26c0bdef92c5449dddcd9781b Mon Sep 17 00:00:00 2001 From: Luke Zappia Date: Tue, 11 Jun 2024 10:04:46 +0200 Subject: [PATCH 324/634] Add reference files section to usage docs --- docs/usage.md | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/docs/usage.md b/docs/usage.md index 7b148c636..701f7f324 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -55,6 +55,46 @@ An [example samplesheet](../assets/samplesheet.csv) has been provided with the p > **NB:** The `group` and `replicate` columns were replaced with a single `sample` column as of v3.1 of the pipeline. The `sample` column is essentially a concatenation of the `group` and `replicate` columns, however it now also offers more flexibility in instances where replicate information is not required e.g. when sequencing clinical samples. If all values of `sample` have the same number of underscores, fields defined by these underscore-separated names may be used in the PCA plots produced by the pipeline, to regain the ability to represent different groupings. +## Reference files + +The only reference files required by the pipeline are a FASTA file with the reference genome sequence and a GTF/GFF file with a gene annotation. All other reference files can be created from those by the pipeline. However, selecting the appropriate reference genome and annotation to use analysis can still be difficult. Here we provide some advice on what is expected by the pipeline: + +:::note +**GENCODE vs ENSEMBL** + +Two of the most common sources of genomic references are GENCODE (for mouse and human) and ENSEMBL (for many organisms). There has been an effort to standardise information between the two sources and now the references [should be consistent](https://www.gencodegenes.org/pages/faq.html) regardless of where they are obtained from (for mouse and human). + +However, while the information is consistent, there are still some practical differences. ENSEMBL prefixes chromosome names with `chr` (e.g. `chr1`, `chr1`, ...) while GENCODE uses simple `1`, `2`, etc. There can also be different names used for sequences outside the reference chromosomes. GENCODE also attaches version identifiers to gene and transcript names (e.g. `ENSG00000254647.1`). For these reasons, resources from the two sources cannot be mixed and it is important to stick to one reference source. Some of the steps in the pipeline expect an ENSEMBL reference by default so it is important to set the `--gencode` option if your reference comes from GENCODE. +::: + +### Reference genome + +It is recommended to provide the most complete reference genome for your species, without additional loci (haplotypes) or patches. For models organisms such as mouse or human this is the so-called "primary assembly" which includes the reference chromosomes as well as some additional scaffolds. For human assembly GRCh38 (hg38) this would be the `GRCh38.primary_assembly.genome.fa.gz` file from GENCODE or the `Homo_sapiens.GRCh38.dna.primary_assembly.fa.gz` file from ENSEMBL. These files are preferred as they cover the largest amount of the reference genome without including multiple copies of the same sequence which can confuse aligners such as STAR. Most other species (fly, cow, dog etc.) do not have a primary assembly, in which case the complete reference sequence, or "toplevel" assembly, should be used. The difference between the two is the inclusion of alternative loci (haplotypes) but these do not typically exist for species outside mouse and human. + +### Gene annotation + +Gene annotations are updated more frequently than the reference genome sequence and there are more options to consider here. Because annotations can be updated frequently, you should rely on sources that include well-defined, versioned releases such as ENSEMBL or GENCODE. We generally recommend using the most recent release in order to have the latest and most up-to-date gene annotations. However, if you are planning to combine your data with a dataset that was processed in the past you may want to use the annotation version that was used previously for greater consistency. Once you have decided on a release to use, you can then select an annotation file. This should be the most comprehensive annotation that matches the reference genome you are using. So if you are using the human primary assembly you would want the comprehensive annotation for the primary assembly (the `gencode.{release}.primary_assembly.annotation.gtf.gz` file from GENCODE or the `Homo_sapiens.GRCh38.{release}.gtf.gz` file from ENSEMBL). For something like fly, you would want the annotation matching the toplevel assembly (e.g. `Drosophila_melanogaster.BDGP6.46.{release}.gtf.gz` from ENSEMBL). As well as the comprehensive annotations for the primary and toplevel assemblies, and just the reference chromomes, GENCODE also provides "basic" annotations which only include representative transcripts, but we do not recommend using these. + +Gene annotations typically provide a primary identifier for each feature as well as a more common name. For example, the ENSEMBL ID `ENSG00000254647` corresponds to the `INS` gene which encodes the insulin protein. While the gene names may be more familiar and easier to understand it is important to retain and use the primary identifiers as the are unique for a given annotation and are much easier to map between annotation versions or sources. + +To take advantage of all the quality control modules implemented in the pipeline, the gene annotation should include a `gene_biotype` field which describes the function of each feature (protein coding, long non-coding etc.). This is usually the case for annotations from GENCODE or ENSEMBL but may not be if your annotation comes from another source. If your annotation does not include this field, please set the `--skip_biotype_qc` option to avoid running the steps that rely on it. + +:::note +**GTF vs GFF** + +GFF (General Feature Format) is a tab-separated text file format for representing genomic annotations. GTF (General Transfer Format) is a specific implementation of this format corresponding to GFF version 2. The pipeline can accept both GFF and GTF but any GFF files will be converted to GFF so if a GTF is available for your annotation of choice it is better to provide that directly. + +More information and links to further resources are [available from ENSEMBL](https://www.ensembl.org/info/website/upload/gff.html). +::: + +### Reference transcriptome + +As well as the reference genome sequence and annotation it is possible to provide a reference transcriptome FASTA file. These can be obtained from GENCODE or ENSEMBL but it is important to note that the sequences they provide only cover the reference chromosome and can result in inconsistencies if you have provided a primary or toplevel genome assembly and annotation. For this reason, we recommend to not provide a transcriptome FASTA and instead let the pipeline create it from the provided genome and annotation. As with the aligner indexes, it is possible to save the created transcriptome FASTA and BED files to a central location and provide it to future pipeline runs in order to avoid having multiple copies on your system but it is important to make sure that all genome, annotation, transcriptome and index versions match. + +### Indexes + +Creating the index files required for the alignment and/or pseudoalignment steps can be computationally intensive and the files they produce are quite large. To avoid repeating this work and having multiple redundant files we recommend saving the indexes using the `--save_reference` option and moving them to a central location where they can be accessed by future pipeline runs. When doing this, it is important to record the genome and annotations versions they correspond to so you can easily locate the correct index to use and the program version as an index produced with one version may not have a format compatible with other versions. + ## Adapter trimming options [Trim Galore!](https://www.bioinformatics.babraham.ac.uk/projects/trim_galore/) is a wrapper tool around Cutadapt and FastQC to peform quality and adapter trimming on FastQ files. Trim Galore! will automatically detect and trim the appropriate adapter sequence. It is the default trimming tool used by this pipeline, however you can use fastp instead by specifying the `--trimmer fastp` parameter. [fastp](https://github.com/OpenGene/fastp) is a tool designed to provide fast, all-in-one preprocessing for FastQ files. It has been developed in C++ with multithreading support to achieve higher performance. You can specify additional options for Trim Galore! and fastp via the `--extra_trimgalore_args` and `--extra_fastp_args` parameters, respectively. From 6b529261b815435d4049dca20db8f7b1224c781f Mon Sep 17 00:00:00 2001 From: Luke Zappia Date: Tue, 11 Jun 2024 10:08:32 +0200 Subject: [PATCH 325/634] Adjust line breaks Sentence per line to allow easier commenting. --- docs/usage.md | 50 ++++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 40 insertions(+), 10 deletions(-) diff --git a/docs/usage.md b/docs/usage.md index 701f7f324..ce2290071 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -57,43 +57,73 @@ An [example samplesheet](../assets/samplesheet.csv) has been provided with the p ## Reference files -The only reference files required by the pipeline are a FASTA file with the reference genome sequence and a GTF/GFF file with a gene annotation. All other reference files can be created from those by the pipeline. However, selecting the appropriate reference genome and annotation to use analysis can still be difficult. Here we provide some advice on what is expected by the pipeline: +The only reference files required by the pipeline are a FASTA file with the reference genome sequence and a GTF/GFF file with a gene annotation. All other reference files can be created from those by the pipeline. +However, selecting the appropriate reference genome and annotation to use analysis can still be difficult. +Here we provide some advice on what is expected by the pipeline: :::note **GENCODE vs ENSEMBL** -Two of the most common sources of genomic references are GENCODE (for mouse and human) and ENSEMBL (for many organisms). There has been an effort to standardise information between the two sources and now the references [should be consistent](https://www.gencodegenes.org/pages/faq.html) regardless of where they are obtained from (for mouse and human). +Two of the most common sources of genomic references are GENCODE (for mouse and human) and ENSEMBL (for many organisms). +There has been an effort to standardise information between the two sources and now the references [should be consistent](https://www.gencodegenes.org/pages/faq.html) regardless of where they are obtained from (for mouse and human). -However, while the information is consistent, there are still some practical differences. ENSEMBL prefixes chromosome names with `chr` (e.g. `chr1`, `chr1`, ...) while GENCODE uses simple `1`, `2`, etc. There can also be different names used for sequences outside the reference chromosomes. GENCODE also attaches version identifiers to gene and transcript names (e.g. `ENSG00000254647.1`). For these reasons, resources from the two sources cannot be mixed and it is important to stick to one reference source. Some of the steps in the pipeline expect an ENSEMBL reference by default so it is important to set the `--gencode` option if your reference comes from GENCODE. +However, while the information is consistent, there are still some practical differences. +ENSEMBL prefixes chromosome names with `chr` (e.g. `chr1`, `chr1`, ...) while GENCODE uses simple `1`, `2`, etc. +There can also be different names used for sequences outside the reference chromosomes. +GENCODE also attaches version identifiers to gene and transcript names (e.g. `ENSG00000254647.1`). +For these reasons, resources from the two sources cannot be mixed and it is important to stick to one reference source. Some of the steps in the pipeline expect an ENSEMBL reference by default so it is important to set the `--gencode` option if your reference comes from GENCODE. ::: ### Reference genome -It is recommended to provide the most complete reference genome for your species, without additional loci (haplotypes) or patches. For models organisms such as mouse or human this is the so-called "primary assembly" which includes the reference chromosomes as well as some additional scaffolds. For human assembly GRCh38 (hg38) this would be the `GRCh38.primary_assembly.genome.fa.gz` file from GENCODE or the `Homo_sapiens.GRCh38.dna.primary_assembly.fa.gz` file from ENSEMBL. These files are preferred as they cover the largest amount of the reference genome without including multiple copies of the same sequence which can confuse aligners such as STAR. Most other species (fly, cow, dog etc.) do not have a primary assembly, in which case the complete reference sequence, or "toplevel" assembly, should be used. The difference between the two is the inclusion of alternative loci (haplotypes) but these do not typically exist for species outside mouse and human. +It is recommended to provide the most complete reference genome for your species, without additional loci (haplotypes) or patches. +For models organisms such as mouse or human this is the so-called "primary assembly" which includes the reference chromosomes as well as some additional scaffolds. +For human assembly GRCh38 (hg38) this would be the `GRCh38.primary_assembly.genome.fa.gz` file from GENCODE or the `Homo_sapiens.GRCh38.dna.primary_assembly.fa.gz` file from ENSEMBL. +These files are preferred as they cover the largest amount of the reference genome without including multiple copies of the same sequence which can confuse aligners such as STAR. Most other species (fly, cow, dog etc.) do not have a primary assembly, in which case the complete reference sequence, or "toplevel" assembly, should be used. +The difference between the two is the inclusion of alternative loci (haplotypes) but these do not typically exist for species outside mouse and human. ### Gene annotation -Gene annotations are updated more frequently than the reference genome sequence and there are more options to consider here. Because annotations can be updated frequently, you should rely on sources that include well-defined, versioned releases such as ENSEMBL or GENCODE. We generally recommend using the most recent release in order to have the latest and most up-to-date gene annotations. However, if you are planning to combine your data with a dataset that was processed in the past you may want to use the annotation version that was used previously for greater consistency. Once you have decided on a release to use, you can then select an annotation file. This should be the most comprehensive annotation that matches the reference genome you are using. So if you are using the human primary assembly you would want the comprehensive annotation for the primary assembly (the `gencode.{release}.primary_assembly.annotation.gtf.gz` file from GENCODE or the `Homo_sapiens.GRCh38.{release}.gtf.gz` file from ENSEMBL). For something like fly, you would want the annotation matching the toplevel assembly (e.g. `Drosophila_melanogaster.BDGP6.46.{release}.gtf.gz` from ENSEMBL). As well as the comprehensive annotations for the primary and toplevel assemblies, and just the reference chromomes, GENCODE also provides "basic" annotations which only include representative transcripts, but we do not recommend using these. +Gene annotations are updated more frequently than the reference genome sequence and there are more options to consider here. +Because annotations can be updated frequently, you should rely on sources that include well-defined, versioned releases such as ENSEMBL or GENCODE. +We generally recommend using the most recent release in order to have the latest and most up-to-date gene annotations. +However, if you are planning to combine your data with a dataset that was processed in the past you may want to use the annotation version that was used previously for greater consistency. +Once you have decided on a release to use, you can then select an annotation file. +This should be the most comprehensive annotation that matches the reference genome you are using. +So if you are using the human primary assembly you would want the comprehensive annotation for the primary assembly (the `gencode.{release}.primary_assembly.annotation.gtf.gz` file from GENCODE or the `Homo_sapiens.GRCh38.{release}.gtf.gz` file from ENSEMBL). +For something like fly, you would want the annotation matching the toplevel assembly (e.g. `Drosophila_melanogaster.BDGP6.46.{release}.gtf.gz` from ENSEMBL). +As well as the comprehensive annotations for the primary and toplevel assemblies, and just the reference chromomes, GENCODE also provides "basic" annotations which only include representative transcripts, but we do not recommend using these. -Gene annotations typically provide a primary identifier for each feature as well as a more common name. For example, the ENSEMBL ID `ENSG00000254647` corresponds to the `INS` gene which encodes the insulin protein. While the gene names may be more familiar and easier to understand it is important to retain and use the primary identifiers as the are unique for a given annotation and are much easier to map between annotation versions or sources. +Gene annotations typically provide a primary identifier for each feature as well as a more common name. +For example, the ENSEMBL ID `ENSG00000254647` corresponds to the `INS` gene which encodes the insulin protein. +While the gene names may be more familiar and easier to understand it is important to retain and use the primary identifiers as the are unique for a given annotation and are much easier to map between annotation versions or sources. -To take advantage of all the quality control modules implemented in the pipeline, the gene annotation should include a `gene_biotype` field which describes the function of each feature (protein coding, long non-coding etc.). This is usually the case for annotations from GENCODE or ENSEMBL but may not be if your annotation comes from another source. If your annotation does not include this field, please set the `--skip_biotype_qc` option to avoid running the steps that rely on it. +To take advantage of all the quality control modules implemented in the pipeline, the gene annotation should include a `gene_biotype` field which describes the function of each feature (protein coding, long non-coding etc.). +This is usually the case for annotations from GENCODE or ENSEMBL but may not be if your annotation comes from another source. +If your annotation does not include this field, please set the `--skip_biotype_qc` option to avoid running the steps that rely on it. :::note **GTF vs GFF** -GFF (General Feature Format) is a tab-separated text file format for representing genomic annotations. GTF (General Transfer Format) is a specific implementation of this format corresponding to GFF version 2. The pipeline can accept both GFF and GTF but any GFF files will be converted to GFF so if a GTF is available for your annotation of choice it is better to provide that directly. +GFF (General Feature Format) is a tab-separated text file format for representing genomic annotations. +GTF (General Transfer Format) is a specific implementation of this format corresponding to GFF version 2. +The pipeline can accept both GFF and GTF but any GFF files will be converted to GFF so if a GTF is available for your annotation of choice it is better to provide that directly. More information and links to further resources are [available from ENSEMBL](https://www.ensembl.org/info/website/upload/gff.html). ::: ### Reference transcriptome -As well as the reference genome sequence and annotation it is possible to provide a reference transcriptome FASTA file. These can be obtained from GENCODE or ENSEMBL but it is important to note that the sequences they provide only cover the reference chromosome and can result in inconsistencies if you have provided a primary or toplevel genome assembly and annotation. For this reason, we recommend to not provide a transcriptome FASTA and instead let the pipeline create it from the provided genome and annotation. As with the aligner indexes, it is possible to save the created transcriptome FASTA and BED files to a central location and provide it to future pipeline runs in order to avoid having multiple copies on your system but it is important to make sure that all genome, annotation, transcriptome and index versions match. +As well as the reference genome sequence and annotation it is possible to provide a reference transcriptome FASTA file. +These can be obtained from GENCODE or ENSEMBL but it is important to note that the sequences they provide only cover the reference chromosome and can result in inconsistencies if you have provided a primary or toplevel genome assembly and annotation. +For this reason, we recommend to not provide a transcriptome FASTA and instead let the pipeline create it from the provided genome and annotation. +As with the aligner indexes, it is possible to save the created transcriptome FASTA and BED files to a central location and provide it to future pipeline runs in order to avoid having multiple copies on your system but it is important to make sure that all genome, annotation, transcriptome and index versions match. ### Indexes -Creating the index files required for the alignment and/or pseudoalignment steps can be computationally intensive and the files they produce are quite large. To avoid repeating this work and having multiple redundant files we recommend saving the indexes using the `--save_reference` option and moving them to a central location where they can be accessed by future pipeline runs. When doing this, it is important to record the genome and annotations versions they correspond to so you can easily locate the correct index to use and the program version as an index produced with one version may not have a format compatible with other versions. +Creating the index files required for the alignment and/or pseudoalignment steps can be computationally intensive and the files they produce are quite large. +To avoid repeating this work and having multiple redundant files we recommend saving the indexes using the `--save_reference` option and moving them to a central location where they can be accessed by future pipeline runs. +When doing this, it is important to record the genome and annotations versions they correspond to so you can easily locate the correct index to use and the program version as an index produced with one version may not have a format compatible with other versions. ## Adapter trimming options From 26a329b3ee9be03ae045c4e40d972f302077f1a9 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Wed, 12 Jun 2024 12:10:23 +0100 Subject: [PATCH 326/634] fix strand message --- workflows/rnaseq/assets/multiqc/multiqc_config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/workflows/rnaseq/assets/multiqc/multiqc_config.yml b/workflows/rnaseq/assets/multiqc/multiqc_config.yml index 712674f29..a2498b319 100644 --- a/workflows/rnaseq/assets/multiqc/multiqc_config.yml +++ b/workflows/rnaseq/assets/multiqc/multiqc_config.yml @@ -169,7 +169,7 @@ custom_data: format: "{:.2f}" fail_strand_check: section_name: "WARNING: Fail Strand Check" - description: "List of samples that failed the strandedness check between that provided in the samplesheet and calculated by the RSeQC infer_experiment.py tool." + description: "List of samples that failed the strandedness check between that provided in the samplesheet (or detected via an 'auto' strandedness) and calculated by the RSeQC infer_experiment.py tool." plot_type: "table" pconfig: id: "fail_strand_check_table" From 865a9f16e28130f3fd3afb74babf30bce0fd1e61 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Wed, 12 Jun 2024 17:18:31 +0100 Subject: [PATCH 327/634] Strip problematic ifEmpty() --- workflows/rnaseq/main.nf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/workflows/rnaseq/main.nf b/workflows/rnaseq/main.nf index b679a4b34..13c5bf118 100755 --- a/workflows/rnaseq/main.nf +++ b/workflows/rnaseq/main.nf @@ -142,7 +142,7 @@ workflow RNASEQ { .reads .mix(ch_fastq.single) .set { ch_cat_fastq } - ch_versions = ch_versions.mix(CAT_FASTQ.out.versions.first().ifEmpty(null)) + ch_versions = ch_versions.mix(CAT_FASTQ.out.versions.first()) // // SUBWORKFLOW: Read QC, extract UMI and trim adapters with TrimGalore! From a8eb811cc44a19f58cf83803e314d111f10ca1f7 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Wed, 12 Jun 2024 17:25:18 +0100 Subject: [PATCH 328/634] Update CHANGELOG --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index c8f5df860..438e71d99 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -71,6 +71,7 @@ Thank you to everyone else that has contributed by reporting bugs, enhancements - [PR #1297](https://github.com/nf-core/rnaseq/pull/1297) - Important! Template update for nf-core/tools v2.14.1 - [PR #1302](https://github.com/nf-core/rnaseq/pull/1302) - Add missing files from Tximport processing - [PR #1304](https://github.com/nf-core/rnaseq/pull/1304) - Remove redundant gene TPM outputs +- [PR #1317](https://github.com/nf-core/rnaseq/pull/1317) - Strip problematic ifEmpty() ### Parameters From 1bbf1fe47849fe0f30d5d90358756cbb8a15892c Mon Sep 17 00:00:00 2001 From: Luke Zappia Date: Fri, 14 Jun 2024 11:47:39 +0200 Subject: [PATCH 329/634] Apply suggestions from code review Co-authored-by: Jonathan Manning --- docs/usage.md | 55 +++++++++++++++------------------------------------ 1 file changed, 16 insertions(+), 39 deletions(-) diff --git a/docs/usage.md b/docs/usage.md index f12bb95ee..48638fdfd 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -57,68 +57,45 @@ An [example samplesheet](../assets/samplesheet.csv) has been provided with the p ## Reference files -The only reference files required by the pipeline are a FASTA file with the reference genome sequence and a GTF/GFF file with a gene annotation. All other reference files can be created from those by the pipeline. -However, selecting the appropriate reference genome and annotation to use analysis can still be difficult. -Here we provide some advice on what is expected by the pipeline: +The pipeline has a number of options for reference files provided for maximum flexibility, but most can be generated dynamically and need not be supplied. The minimal requirement is two reference files: a FASTA file containing the reference genome sequence and a GTF/GFF file with gene annotations. Further guidance is provided below. :::note -**GENCODE vs ENSEMBL** +**Consistent reference resource usage** -Two of the most common sources of genomic references are GENCODE (for mouse and human) and ENSEMBL (for many organisms). -There has been an effort to standardise information between the two sources and now the references [should be consistent](https://www.gencodegenes.org/pages/faq.html) regardless of where they are obtained from (for mouse and human). - -However, while the information is consistent, there are still some practical differences. -ENSEMBL prefixes chromosome names with `chr` (e.g. `chr1`, `chr1`, ...) while GENCODE uses simple `1`, `2`, etc. -There can also be different names used for sequences outside the reference chromosomes. -GENCODE also attaches version identifiers to gene and transcript names (e.g. `ENSG00000254647.1`). -For these reasons, resources from the two sources cannot be mixed and it is important to stick to one reference source. Some of the steps in the pipeline expect an ENSEMBL reference by default so it is important to set the `--gencode` option if your reference comes from GENCODE. +When supplying reference files as discussed below, it is important to be consistent in the reference resource used (Ensembl, Gencode, UCSC etc), since differences in conventions between these resources can make their files incompatible. For example, UCSC prefixes chromosomes with `chr`, while Ensembl does not, so a GTF file from Ensembl should not be supplied alongside a genome FASTA from UCSC. ::: ### Reference genome -It is recommended to provide the most complete reference genome for your species, without additional loci (haplotypes) or patches. -For models organisms such as mouse or human this is the so-called "primary assembly" which includes the reference chromosomes as well as some additional scaffolds. -For human assembly GRCh38 (hg38) this would be the `GRCh38.primary_assembly.genome.fa.gz` file from GENCODE or the `Homo_sapiens.GRCh38.dna.primary_assembly.fa.gz` file from ENSEMBL. -These files are preferred as they cover the largest amount of the reference genome without including multiple copies of the same sequence which can confuse aligners such as STAR. Most other species (fly, cow, dog etc.) do not have a primary assembly, in which case the complete reference sequence, or "toplevel" assembly, should be used. -The difference between the two is the inclusion of alternative loci (haplotypes) but these do not typically exist for species outside mouse and human. +It is recommended to provide the most complete reference genome for your species, without additional loci (haplotypes) or patches. For model organisms such as mouse or human, this is the "primary assembly," which includes the reference chromosomes and some additional scaffolds. For the human assembly GRCh38 (hg38), use the `GRCh38.primary_assembly.genome.fa.gz` file from GENCODE or the `Homo_sapiens.GRCh38.dna.primary_assembly.fa.gz` file from ENSEMBL. These files cover the largest portion of the reference genome without including multiple copies of the same sequence, which can confuse aligners like STAR. + +Most other species (e.g., fly, cow, dog) do not have a primary assembly. In these cases, use the complete reference sequence, or "toplevel" assembly. The main difference between the primary and toplevel assemblies is the inclusion of alternative loci (haplotypes), which typically do not exist for species outside of mouse and human. ### Gene annotation -Gene annotations are updated more frequently than the reference genome sequence and there are more options to consider here. -Because annotations can be updated frequently, you should rely on sources that include well-defined, versioned releases such as ENSEMBL or GENCODE. -We generally recommend using the most recent release in order to have the latest and most up-to-date gene annotations. -However, if you are planning to combine your data with a dataset that was processed in the past you may want to use the annotation version that was used previously for greater consistency. -Once you have decided on a release to use, you can then select an annotation file. -This should be the most comprehensive annotation that matches the reference genome you are using. -So if you are using the human primary assembly you would want the comprehensive annotation for the primary assembly (the `gencode.{release}.primary_assembly.annotation.gtf.gz` file from GENCODE or the `Homo_sapiens.GRCh38.{release}.gtf.gz` file from ENSEMBL). -For something like fly, you would want the annotation matching the toplevel assembly (e.g. `Drosophila_melanogaster.BDGP6.46.{release}.gtf.gz` from ENSEMBL). -As well as the comprehensive annotations for the primary and toplevel assemblies, and just the reference chromomes, GENCODE also provides "basic" annotations which only include representative transcripts, but we do not recommend using these. +Gene annotations are updated more frequently than the reference genome sequence, so you much choose an appropriate annotation version (e.g. Ensembl release) We recommend using sources with well-defined, versioned releases such as ENSEMBL or GENCODE. Generally, it is best to use the most recent release for the latest gene annotations. However, if you are combining your data with older datasets, use the annotation version previously used for consistency. + +Once you have chosen a release, select the annotation file that matches your reference genome. For the human primary assembly, use the comprehensive annotation (e.g., `gencode.{release}.primary_assembly.annotation.gtf.gz` from GENCODE or `Homo_sapiens.GRCh38.{release}.gtf.gz` from ENSEMBL). For other species, like fly, use the annotation matching the toplevel assembly (e.g., `Drosophila_melanogaster.BDGP6.46.{release}.gtf.gz` from ENSEMBL). + +GENCODE also provides "basic" annotations, which include only representative transcripts, but we do not recommend using these. -Gene annotations typically provide a primary identifier for each feature as well as a more common name. -For example, the ENSEMBL ID `ENSG00000254647` corresponds to the `INS` gene which encodes the insulin protein. -While the gene names may be more familiar and easier to understand it is important to retain and use the primary identifiers as the are unique for a given annotation and are much easier to map between annotation versions or sources. +Gene annotations provide a primary identifier for each feature as well as a common name. For example, the ENSEMBL ID `ENSG00000254647` corresponds to the `INS` gene, which encodes the insulin protein. While gene names are more familiar, it is crucial to retain and use the primary identifiers as they are unique and easier to map between annotation versions or sources. -To take advantage of all the quality control modules implemented in the pipeline, the gene annotation should include a `gene_biotype` field which describes the function of each feature (protein coding, long non-coding etc.). -This is usually the case for annotations from GENCODE or ENSEMBL but may not be if your annotation comes from another source. -If your annotation does not include this field, please set the `--skip_biotype_qc` option to avoid running the steps that rely on it. +To take advantage of all the quality control modules implemented in the pipeline, the gene annotation should include a `gene_biotype` field which describes the function of each feature (protein coding, long non-coding etc.). This is usually the case for annotations from GENCODE or ENSEMBL but may not be if your annotation comes from another source. If your annotation does not include this field, please set the `--skip_biotype_qc` option to avoid running the steps that rely on it. :::note **GTF vs GFF** -GFF (General Feature Format) is a tab-separated text file format for representing genomic annotations. -GTF (General Transfer Format) is a specific implementation of this format corresponding to GFF version 2. -The pipeline can accept both GFF and GTF but any GFF files will be converted to GFF so if a GTF is available for your annotation of choice it is better to provide that directly. +GFF (General Feature Format) is a tab-separated text file format for representing genomic annotations, while GTF (General Transfer Format) is a specific implementation of this format corresponding to GFF version 2. The pipeline can accept both GFF and GTF but any GFF files will be converted to GTF so if a GTF is available for your annotation of choice it is better to provide that directly. More information and links to further resources are [available from ENSEMBL](https://www.ensembl.org/info/website/upload/gff.html). ::: ### Reference transcriptome -As well as the reference genome sequence and annotation it is possible to provide a reference transcriptome FASTA file. -These can be obtained from GENCODE or ENSEMBL but it is important to note that the sequences they provide only cover the reference chromosome and can result in inconsistencies if you have provided a primary or toplevel genome assembly and annotation. -For this reason, we recommend to not provide a transcriptome FASTA and instead let the pipeline create it from the provided genome and annotation. -As with the aligner indexes, it is possible to save the created transcriptome FASTA and BED files to a central location and provide it to future pipeline runs in order to avoid having multiple copies on your system but it is important to make sure that all genome, annotation, transcriptome and index versions match. +In addition to the reference genome sequence and annotation, you can provide a reference transcriptome FASTA file. These files can be obtained from GENCODE or ENSEMBL. However, these sequences only cover the reference chromosomes and can cause inconsistencies if you are using a primary or toplevel genome assembly and annotation. +We recommend not providing a transcriptome FASTA file and instead allowing the pipeline to create it from the provided genome and annotation. Similar to aligner indexes, you can save the created transcriptome FASTA and BED files to a central location for future pipeline runs. This helps avoid multiple copies on your system. Ensure that all genome, annotation, transcriptome, and index versions match to maintain consistency. ### Indexes Creating the index files required for the alignment and/or pseudoalignment steps can be computationally intensive and the files they produce are quite large. From 500c673b364c19e7e762dbfdedb7cbbb885d0b9a Mon Sep 17 00:00:00 2001 From: Luke Zappia Date: Fri, 14 Jun 2024 12:21:48 +0200 Subject: [PATCH 330/634] Move reference guidance to existing sections --- docs/usage.md | 93 ++++++++++++++++++++++++--------------------------- 1 file changed, 43 insertions(+), 50 deletions(-) diff --git a/docs/usage.md b/docs/usage.md index 48638fdfd..e381addb8 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -55,53 +55,6 @@ An [example samplesheet](../assets/samplesheet.csv) has been provided with the p > **NB:** The `group` and `replicate` columns were replaced with a single `sample` column as of v3.1 of the pipeline. The `sample` column is essentially a concatenation of the `group` and `replicate` columns, however it now also offers more flexibility in instances where replicate information is not required e.g. when sequencing clinical samples. If all values of `sample` have the same number of underscores, fields defined by these underscore-separated names may be used in the PCA plots produced by the pipeline, to regain the ability to represent different groupings. -## Reference files - -The pipeline has a number of options for reference files provided for maximum flexibility, but most can be generated dynamically and need not be supplied. The minimal requirement is two reference files: a FASTA file containing the reference genome sequence and a GTF/GFF file with gene annotations. Further guidance is provided below. - -:::note -**Consistent reference resource usage** - -When supplying reference files as discussed below, it is important to be consistent in the reference resource used (Ensembl, Gencode, UCSC etc), since differences in conventions between these resources can make their files incompatible. For example, UCSC prefixes chromosomes with `chr`, while Ensembl does not, so a GTF file from Ensembl should not be supplied alongside a genome FASTA from UCSC. -::: - -### Reference genome - -It is recommended to provide the most complete reference genome for your species, without additional loci (haplotypes) or patches. For model organisms such as mouse or human, this is the "primary assembly," which includes the reference chromosomes and some additional scaffolds. For the human assembly GRCh38 (hg38), use the `GRCh38.primary_assembly.genome.fa.gz` file from GENCODE or the `Homo_sapiens.GRCh38.dna.primary_assembly.fa.gz` file from ENSEMBL. These files cover the largest portion of the reference genome without including multiple copies of the same sequence, which can confuse aligners like STAR. - -Most other species (e.g., fly, cow, dog) do not have a primary assembly. In these cases, use the complete reference sequence, or "toplevel" assembly. The main difference between the primary and toplevel assemblies is the inclusion of alternative loci (haplotypes), which typically do not exist for species outside of mouse and human. - -### Gene annotation - -Gene annotations are updated more frequently than the reference genome sequence, so you much choose an appropriate annotation version (e.g. Ensembl release) We recommend using sources with well-defined, versioned releases such as ENSEMBL or GENCODE. Generally, it is best to use the most recent release for the latest gene annotations. However, if you are combining your data with older datasets, use the annotation version previously used for consistency. - -Once you have chosen a release, select the annotation file that matches your reference genome. For the human primary assembly, use the comprehensive annotation (e.g., `gencode.{release}.primary_assembly.annotation.gtf.gz` from GENCODE or `Homo_sapiens.GRCh38.{release}.gtf.gz` from ENSEMBL). For other species, like fly, use the annotation matching the toplevel assembly (e.g., `Drosophila_melanogaster.BDGP6.46.{release}.gtf.gz` from ENSEMBL). - -GENCODE also provides "basic" annotations, which include only representative transcripts, but we do not recommend using these. - -Gene annotations provide a primary identifier for each feature as well as a common name. For example, the ENSEMBL ID `ENSG00000254647` corresponds to the `INS` gene, which encodes the insulin protein. While gene names are more familiar, it is crucial to retain and use the primary identifiers as they are unique and easier to map between annotation versions or sources. - -To take advantage of all the quality control modules implemented in the pipeline, the gene annotation should include a `gene_biotype` field which describes the function of each feature (protein coding, long non-coding etc.). This is usually the case for annotations from GENCODE or ENSEMBL but may not be if your annotation comes from another source. If your annotation does not include this field, please set the `--skip_biotype_qc` option to avoid running the steps that rely on it. - -:::note -**GTF vs GFF** - -GFF (General Feature Format) is a tab-separated text file format for representing genomic annotations, while GTF (General Transfer Format) is a specific implementation of this format corresponding to GFF version 2. The pipeline can accept both GFF and GTF but any GFF files will be converted to GTF so if a GTF is available for your annotation of choice it is better to provide that directly. - -More information and links to further resources are [available from ENSEMBL](https://www.ensembl.org/info/website/upload/gff.html). -::: - -### Reference transcriptome - -In addition to the reference genome sequence and annotation, you can provide a reference transcriptome FASTA file. These files can be obtained from GENCODE or ENSEMBL. However, these sequences only cover the reference chromosomes and can cause inconsistencies if you are using a primary or toplevel genome assembly and annotation. - -We recommend not providing a transcriptome FASTA file and instead allowing the pipeline to create it from the provided genome and annotation. Similar to aligner indexes, you can save the created transcriptome FASTA and BED files to a central location for future pipeline runs. This helps avoid multiple copies on your system. Ensure that all genome, annotation, transcriptome, and index versions match to maintain consistency. -### Indexes - -Creating the index files required for the alignment and/or pseudoalignment steps can be computationally intensive and the files they produce are quite large. -To avoid repeating this work and having multiple redundant files we recommend saving the indexes using the `--save_reference` option and moving them to a central location where they can be accessed by future pipeline runs. -When doing this, it is important to record the genome and annotations versions they correspond to so you can easily locate the correct index to use and the program version as an index produced with one version may not have a format compatible with other versions. - ## Adapter trimming options [Trim Galore!](https://www.bioinformatics.babraham.ac.uk/projects/trim_galore/) is a wrapper tool around Cutadapt and FastQC to peform quality and adapter trimming on FastQ files. Trim Galore! will automatically detect and trim the appropriate adapter sequence. It is the default trimming tool used by this pipeline, however you can use fastp instead by specifying the `--trimmer fastp` parameter. [fastp](https://github.com/OpenGene/fastp) is a tool designed to provide fast, all-in-one preprocessing for FastQ files. It has been developed in C++ with multithreading support to achieve higher performance. You can specify additional options for Trim Galore! and fastp via the `--extra_trimgalore_args` and `--extra_fastp_args` parameters, respectively. @@ -184,6 +137,12 @@ If unique molecular identifiers were used to prepare the library, add the follow Please refer to the [nf-core website](https://nf-co.re/usage/reference_genomes) for general usage docs and guidelines regarding reference genomes. +:::note +**Consistent reference resource usage** + +When supplying reference files as discussed below, it is important to be consistent in the reference resource used (Ensembl, GENCODE, UCSC etc), since differences in conventions between these resources can make their files incompatible. For example, UCSC prefixes chromosomes with `chr`, while Ensembl does not, so a GTF file from Ensembl should not be supplied alongside a genome FASTA from UCSC. GENCODE also attaches version identifiers to gene and transcript names (e.g. `ENSG00000254647.1`) while Ensembl does not. +::: + ### Explicit reference file specification (recommended) The minimum reference genome requirements for this pipeline are a FASTA and GTF file, all other files required to run the pipeline can be generated from these files. For example, the latest reference files for human can be derived from Ensembl like: @@ -205,7 +164,39 @@ Notes: - If `--additional_fasta` is provided then the features in this file (e.g. ERCC spike-ins) will be automatically concatenated onto both the reference FASTA file as well as the GTF annotation before building the appropriate indices. - When using `--aligner star_rsem`, both the STAR and RSEM indices should be present in the path specified by `--rsem_index` (see [#568](https://github.com/nf-core/rnaseq/issues/568)). -#### Indices +### Reference genome + +It is recommended to provide the most complete reference genome for your species, without additional loci (haplotypes) or patches. For model organisms such as mouse or human, this is the "primary assembly," which includes the reference chromosomes and some additional scaffolds. For the human assembly GRCh38 (hg38), use the `GRCh38.primary_assembly.genome.fa.gz` file from GENCODE or the `Homo_sapiens.GRCh38.dna.primary_assembly.fa.gz` file from Ensembl. These files cover the largest portion of the reference genome without including multiple copies of the same sequence, which can confuse aligners like STAR. + +Most other species (e.g., fly, cow, dog) do not have a primary assembly. In these cases, use the complete reference sequence, or "toplevel" assembly. The main difference between the primary and toplevel assemblies is the inclusion of alternative loci (haplotypes), which typically do not exist for species outside of mouse and human. + +### Gene annotation + +Gene annotations are updated more frequently than the reference genome sequence, so you much choose an appropriate annotation version (e.g. Ensembl release) We recommend using sources with well-defined, versioned releases such as ENSEMBL or GENCODE. Generally, it is best to use the most recent release for the latest gene annotations. However, if you are combining your data with older datasets, use the annotation version previously used for consistency. + +Once you have chosen a release, select the annotation file that matches your reference genome. For the human primary assembly, use the comprehensive annotation (e.g., `gencode.{release}.primary_assembly.annotation.gtf.gz` from GENCODE or `Homo_sapiens.GRCh38.{release}.gtf.gz` from Ensembl). For other species, like fly, use the annotation matching the toplevel assembly (e.g., `Drosophila_melanogaster.BDGP6.46.{release}.gtf.gz` from Ensembl). + +GENCODE also provides "basic" annotations, which include only representative transcripts, but we do not recommend using these. + +Gene annotations provide a primary identifier for each feature as well as a common name. For example, the Ensembl ID `ENSG00000254647` corresponds to the `INS` gene, which encodes the insulin protein. While gene names are more familiar, it is crucial to retain and use the primary identifiers as they are unique and easier to map between annotation versions or sources. + +To take advantage of all the quality control modules implemented in the pipeline, the gene annotation should include a `gene_biotype` field which describes the function of each feature (protein coding, long non-coding etc.). This is usually the case for annotations from GENCODE or Ensembl but may not be if your annotation comes from another source. If your annotation does not include this field, please set the `--skip_biotype_qc` option to avoid running the steps that rely on it. + +:::note +**GTF vs GFF** + +GFF (General Feature Format) is a tab-separated text file format for representing genomic annotations, while GTF (General Transfer Format) is a specific implementation of this format corresponding to GFF version 2. The pipeline can accept both GFF and GTF but any GFF files will be converted to GTF so if a GTF is available for your annotation of choice it is better to provide that directly. + +More information and links to further resources are [available from Ensembl](https://www.ensembl.org/info/website/upload/gff.html). +::: + +### Reference transcriptome + +In addition to the reference genome sequence and annotation, you can provide a reference transcriptome FASTA file. These files can be obtained from GENCODE or Ensembl. However, these sequences only cover the reference chromosomes and can cause inconsistencies if you are using a primary or toplevel genome assembly and annotation. + +We recommend not providing a transcriptome FASTA file and instead allowing the pipeline to create it from the provided genome and annotation. Similar to aligner indexes, you can save the created transcriptome FASTA and BED files to a central location for future pipeline runs. This helps avoid redundant computation and having multiple copies on your system. Ensure that all genome, annotation, transcriptome, and index versions match to maintain consistency. + +### Indices By default, indices are generated dynamically by the workflow for tools such as STAR and Salmon. Since indexing is an expensive process in time and resources you should ensure that it is only done once, by retaining the indices generated from each batch of reference files: @@ -214,14 +205,16 @@ By default, indices are generated dynamically by the workflow for tools such as Once you have the indices from a workflow run you should save them somewhere central and reuse them in subsequent runs using custom config files or command line parameters such as `--star_index '/path/to/STAR/index/'`. -#### Gencode +When doing this, it is important to record the genome and annotations versions they correspond to so you can easily locate the correct index to use and the program version as an index produced with one version may not have a format compatible with other versions. + +### GENCODE If you are using [GENCODE](https://www.gencodegenes.org/) reference genome files please specify the `--gencode` parameter because the format of these files is slightly different to ENSEMBL genome files: - The `--gtf_group_features_type` parameter will automatically be set to `gene_type` as opposed to `gene_biotype`, respectively. - If you are running Salmon, the `--gencode` flag will also be passed to the index building step to overcome parsing issues resulting from the transcript IDs in GENCODE fasta files being separated by vertical pipes (`|`) instead of spaces (see [this issue](https://github.com/COMBINE-lab/salmon/issues/15)). -#### Prokaryotic genome annotations +### Prokaryotic genome annotations This pipeline uses featureCounts to generate QC metrics based on [biotype](http://www.ensembl.org/info/genome/genebuild/biotypes.html) information available within GFF/GTF genome annotation files. The format of these annotation files can vary significantly depending on the source of the annotation and the type of organism. The default settings in the pipeline are tailored towards Ensembl GTF annotations available for eukaryotic genomes. Prokaryotic genome annotations tend to be distributed in GFF format which are structured differently in terms of the feature naming conventions. There are a number of ways you can tune the behaviour of the pipeline to cater for differences/absence of biotype information: From 4c4afd099d20297979e04637972dd1c90c973cd3 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Fri, 14 Jun 2024 11:27:44 +0100 Subject: [PATCH 331/634] Update Salmon --- modules.json | 4 +- modules/nf-core/salmon/index/main.nf | 25 ++++ .../nf-core/salmon/index/tests/main.nf.test | 28 ++++ .../salmon/index/tests/main.nf.test.snap | 12 ++ modules/nf-core/salmon/quant/main.nf | 11 +- .../nf-core/salmon/quant/tests/main.nf.test | 40 ++++-- .../salmon/quant/tests/main.nf.test.snap | 123 ++++++++++++------ .../nf-core/fastq_subsample_fq_salmon/main.nf | 11 +- .../tests/main.nf.test | 12 +- .../tests/main.nf.test.snap | 28 +++- .../tests/nextflow.config | 1 - 11 files changed, 228 insertions(+), 67 deletions(-) diff --git a/modules.json b/modules.json index 090b2f725..ff57df99a 100644 --- a/modules.json +++ b/modules.json @@ -167,7 +167,7 @@ }, "salmon/quant": { "branch": "master", - "git_sha": "cb6b2b94fc40dea58f0b1e3dd095f3dd24f2ac8a", + "git_sha": "727232afb8294b53dd9d05bfe469b70cce1675bb", "installed_by": ["fastq_subsample_fq_salmon", "modules", "quantify_pseudo_alignment"] }, "samtools/flagstat": { @@ -324,7 +324,7 @@ }, "fastq_subsample_fq_salmon": { "branch": "master", - "git_sha": "003920c7f9a8ae19b69a97171922880220bedf56", + "git_sha": "727232afb8294b53dd9d05bfe469b70cce1675bb", "installed_by": ["subworkflows"] }, "quantify_pseudo_alignment": { diff --git a/modules/nf-core/salmon/index/main.nf b/modules/nf-core/salmon/index/main.nf index 88d9cf14a..e755d9a34 100644 --- a/modules/nf-core/salmon/index/main.nf +++ b/modules/nf-core/salmon/index/main.nf @@ -44,4 +44,29 @@ process SALMON_INDEX { salmon: \$(echo \$(salmon --version) | sed -e "s/salmon //g") END_VERSIONS """ + + stub: + """ + mkdir salmon + touch salmon/complete_ref_lens.bin + touch salmon/ctable.bin + touch salmon/ctg_offsets.bin + touch salmon/duplicate_clusters.tsv + touch salmon/info.json + touch salmon/mphf.bin + touch salmon/pos.bin + touch salmon/pre_indexing.log + touch salmon/rank.bin + touch salmon/refAccumLengths.bin + touch salmon/ref_indexing.log + touch salmon/reflengths.bin + touch salmon/refseq.bin + touch salmon/seq.bin + touch salmon/versionInfo.json + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + salmon: \$(echo \$(salmon --version) | sed -e "s/salmon //g") + END_VERSIONS + """ } diff --git a/modules/nf-core/salmon/index/tests/main.nf.test b/modules/nf-core/salmon/index/tests/main.nf.test index aaf2dbdb7..16b3c1a79 100644 --- a/modules/nf-core/salmon/index/tests/main.nf.test +++ b/modules/nf-core/salmon/index/tests/main.nf.test @@ -3,6 +3,10 @@ nextflow_process { name "Test Process SALMON_INDEX" script "../main.nf" process "SALMON_INDEX" + tag "modules" + tag "modules_nfcore" + tag "salmon" + tag "salmon/index" test("sarscov2") { @@ -28,4 +32,28 @@ nextflow_process { } + test("sarscov2 stub") { + options "-stub" + when { + params { + outdir = "$outputDir" + } + process { + """ + input[0] = Channel.of([file(params.modules_testdata_base_path + "genomics/homo_sapiens/genome/genome.fasta", checkIfExists: true)]) + input[1] = Channel.of([file(params.modules_testdata_base_path + "genomics/sarscov2/genome/transcriptome.fasta", checkIfExists: true)]) + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert path(process.out.index.get(0)).exists() }, + { assert snapshot(process.out.versions).match("versions stub") } + ) + } + + } + } \ No newline at end of file diff --git a/modules/nf-core/salmon/index/tests/main.nf.test.snap b/modules/nf-core/salmon/index/tests/main.nf.test.snap index 94edf3903..703e455c5 100644 --- a/modules/nf-core/salmon/index/tests/main.nf.test.snap +++ b/modules/nf-core/salmon/index/tests/main.nf.test.snap @@ -10,5 +10,17 @@ "nextflow": "23.10.1" }, "timestamp": "2023-11-22T14:26:33.32036" + }, + "versions stub": { + "content": [ + [ + "versions.yml:md5,563eeafb4577be0b13801d7021c0bf42" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-04-23T09:47:58.828124" } } \ No newline at end of file diff --git a/modules/nf-core/salmon/quant/main.nf b/modules/nf-core/salmon/quant/main.nf index e177b42ac..6c528b240 100644 --- a/modules/nf-core/salmon/quant/main.nf +++ b/modules/nf-core/salmon/quant/main.nf @@ -16,9 +16,10 @@ process SALMON_QUANT { val lib_type output: - tuple val(meta), path("${prefix}") , emit: results - tuple val(meta), path("*info.json"), emit: json_info, optional: true - path "versions.yml" , emit: versions + tuple val(meta), path("${prefix}") , emit: results + tuple val(meta), path("*info.json") , emit: json_info, optional: true + tuple val(meta), path("*lib_format_counts.json"), emit: lib_format_counts, optional: true + path "versions.yml" , emit: versions when: task.ext.when == null || task.ext.when @@ -70,6 +71,9 @@ process SALMON_QUANT { if [ -f $prefix/aux_info/meta_info.json ]; then cp $prefix/aux_info/meta_info.json "${prefix}_meta_info.json" fi + if [ -f $prefix/lib_format_counts.json ]; then + cp $prefix/lib_format_counts.json "${prefix}_lib_format_counts.json" + fi cat <<-END_VERSIONS > versions.yml "${task.process}": @@ -82,6 +86,7 @@ process SALMON_QUANT { """ mkdir ${prefix} touch ${prefix}_meta_info.json + touch ${prefix}_lib_format_counts.json cat <<-END_VERSIONS > versions.yml "${task.process}": diff --git a/modules/nf-core/salmon/quant/tests/main.nf.test b/modules/nf-core/salmon/quant/tests/main.nf.test index b387fac2a..2964cc3d0 100644 --- a/modules/nf-core/salmon/quant/tests/main.nf.test +++ b/modules/nf-core/salmon/quant/tests/main.nf.test @@ -48,7 +48,10 @@ nextflow_process { { assert process.success }, { assert path(process.out.json_info.get(0).get(1)).exists() }, { assert path(process.out.results.get(0).get(1)).exists() }, - { assert snapshot(process.out.versions).match("versions_single_end") } + { assert snapshot( + process.out.versions, + process.out.lib_format_counts + ).match() } ) } @@ -80,7 +83,10 @@ nextflow_process { { assert process.success }, { assert path(process.out.json_info.get(0).get(1)).exists() }, { assert path(process.out.results.get(0).get(1)).exists() }, - { assert snapshot(process.out.versions).match("versions_single_end_stub") } + { assert snapshot( + process.out.versions, + process.out.lib_format_counts + ).match() } ) } @@ -112,7 +118,10 @@ nextflow_process { { assert process.success }, { assert path(process.out.json_info.get(0).get(1)).exists() }, { assert path(process.out.results.get(0).get(1)).exists() }, - { assert snapshot(process.out.versions).match("versions_single_end_lib_type_a") } + { assert snapshot( + process.out.versions, + process.out.lib_format_counts + ).match() } ) } @@ -144,7 +153,10 @@ nextflow_process { { assert process.success }, { assert path(process.out.json_info.get(0).get(1)).exists() }, { assert path(process.out.results.get(0).get(1)).exists() }, - { assert snapshot(process.out.versions).match("versions_single_end_lib_type_a_stub") } + { assert snapshot( + process.out.versions, + process.out.lib_format_counts + ).match() } ) } @@ -179,7 +191,10 @@ nextflow_process { { assert process.success }, { assert path(process.out.json_info.get(0).get(1)).exists() }, { assert path(process.out.results.get(0).get(1)).exists() }, - { assert snapshot(process.out.versions).match("versions_pair_end") } + { assert snapshot( + process.out.versions, + process.out.lib_format_counts + ).match() } ) } @@ -214,7 +229,10 @@ nextflow_process { { assert process.success }, { assert path(process.out.json_info.get(0).get(1)).exists() }, { assert path(process.out.results.get(0).get(1)).exists() }, - { assert snapshot(process.out.versions).match("versions_pair_end stub") } + { assert snapshot( + process.out.versions, + process.out.lib_format_counts + ).match() } ) } @@ -251,7 +269,10 @@ nextflow_process { { assert process.success }, { assert path(process.out.json_info.get(0).get(1)).exists() }, { assert path(process.out.results.get(0).get(1)).exists() }, - { assert snapshot(process.out.versions).match("versions_pair_end_multiple") } + { assert snapshot( + process.out.versions, + process.out.lib_format_counts + ).match() } ) } @@ -288,7 +309,10 @@ nextflow_process { { assert process.success }, { assert path(process.out.json_info.get(0).get(1)).exists() }, { assert path(process.out.results.get(0).get(1)).exists() }, - { assert snapshot(process.out.versions).match("versions_pair_end_multiple_stub") } + { assert snapshot( + process.out.versions, + process.out.lib_format_counts + ).match() } ) } diff --git a/modules/nf-core/salmon/quant/tests/main.nf.test.snap b/modules/nf-core/salmon/quant/tests/main.nf.test.snap index a80bc8aa8..547ce2de1 100644 --- a/modules/nf-core/salmon/quant/tests/main.nf.test.snap +++ b/modules/nf-core/salmon/quant/tests/main.nf.test.snap @@ -1,125 +1,170 @@ { - "versions_single_end_lib_type_a_stub": { + "sarscov2 - single_end": { "content": [ [ "versions.yml:md5,80eb3d2ad36960c7e9263f81ede9d263" - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-04-24T14:34:21.647863" - }, - "versions_pair_end_multiple_stub": { - "content": [ + ], [ - "versions.yml:md5,80eb3d2ad36960c7e9263f81ede9d263" + [ + { + "id": "test", + "single_end": true + }, + "test_lib_format_counts.json:md5,c7999dfccd32c090d94e5951522eecd4" + ] ] ], "meta": { "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-04-24T14:34:48.03415" + "timestamp": "2024-06-14T09:51:22.424672" }, "sarscov2 - single_end stub": { "content": [ [ - + "versions.yml:md5,80eb3d2ad36960c7e9263f81ede9d263" ], [ - + [ + { + "id": "test", + "single_end": true + }, + "test_lib_format_counts.json:md5,d41d8cd98f00b204e9800998ecf8427e" + ] ] ], "meta": { "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-04-23T09:34:16.444372" + "timestamp": "2024-06-14T09:51:32.292277" }, - "versions_single_end": { + "sarscov2 - single_end lib type A": { "content": [ [ "versions.yml:md5,80eb3d2ad36960c7e9263f81ede9d263" + ], + [ + [ + { + "id": "test", + "single_end": true + }, + "test_lib_format_counts.json:md5,c7999dfccd32c090d94e5951522eecd4" + ] ] ], "meta": { "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-02-01T11:51:01.865730832" + "timestamp": "2024-06-14T09:51:42.656382" }, - "versions_pair_end": { + "sarscov2 - pair_end multiple": { "content": [ [ "versions.yml:md5,80eb3d2ad36960c7e9263f81ede9d263" - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-02-06T17:10:56.121713" - }, - "versions_pair_end_stub": { - "content": [ + ], [ - + [ + { + "id": "test", + "single_end": false + }, + "test_lib_format_counts.json:md5,4a2ee0fac91a4a3471872808d8bd3ff8" + ] ] ], "meta": { "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-04-23T08:38:01.276656" + "timestamp": "2024-06-14T09:52:33.03647" }, - "versions_pair_end stub": { + "sarscov2 - pair_end multiple stub": { "content": [ [ "versions.yml:md5,80eb3d2ad36960c7e9263f81ede9d263" + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test_lib_format_counts.json:md5,d41d8cd98f00b204e9800998ecf8427e" + ] ] ], "meta": { "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-04-24T14:34:36.570127" + "timestamp": "2024-06-14T09:52:43.388379" }, - "versions_single_end_stub": { + "sarscov2 - single_end lib type A stub": { "content": [ [ "versions.yml:md5,80eb3d2ad36960c7e9263f81ede9d263" + ], + [ + [ + { + "id": "test", + "single_end": true + }, + "test_lib_format_counts.json:md5,d41d8cd98f00b204e9800998ecf8427e" + ] ] ], "meta": { "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-04-24T14:28:01.864343" + "timestamp": "2024-06-14T09:51:52.612664" }, - "versions_single_end_lib_type_a": { + "sarscov2 - pair_end": { "content": [ [ "versions.yml:md5,80eb3d2ad36960c7e9263f81ede9d263" + ], + [ + [ + { + "id": "test", + "single_end": true + }, + "test_lib_format_counts.json:md5,e9516e73c9fb39145513b2a41a0af95f" + ] ] ], "meta": { "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-02-06T17:09:14.898351" + "timestamp": "2024-06-14T09:52:05.577881" }, - "versions_pair_end_multiple": { + "sarscov2 - pair_end stub": { "content": [ [ "versions.yml:md5,80eb3d2ad36960c7e9263f81ede9d263" + ], + [ + [ + { + "id": "test", + "single_end": true + }, + "test_lib_format_counts.json:md5,d41d8cd98f00b204e9800998ecf8427e" + ] ] ], "meta": { "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-02-06T17:11:07.846643" + "timestamp": "2024-06-14T09:52:15.286461" } } \ No newline at end of file diff --git a/subworkflows/nf-core/fastq_subsample_fq_salmon/main.nf b/subworkflows/nf-core/fastq_subsample_fq_salmon/main.nf index 0ac3e53a3..bac581cfa 100644 --- a/subworkflows/nf-core/fastq_subsample_fq_salmon/main.nf +++ b/subworkflows/nf-core/fastq_subsample_fq_salmon/main.nf @@ -43,12 +43,13 @@ workflow FASTQ_SUBSAMPLE_FQ_SALMON { ch_versions = ch_versions.mix(SALMON_QUANT.out.versions.first()) emit: - index = ch_index // channel: [ index ] + index = ch_index // channel: [ index ] - reads = FQ_SUBSAMPLE.out.fastq // channel: [ val(meta), fastq ] + reads = FQ_SUBSAMPLE.out.fastq // channel: [ val(meta), fastq ] - results = SALMON_QUANT.out.results // channel: [ val(meta), results_dir ] - json_info = SALMON_QUANT.out.json_info // channel: [ val(meta), json_info + results = SALMON_QUANT.out.results // channel: [ val(meta), results_dir ] + json_info = SALMON_QUANT.out.json_info // channel: [ val(meta), json_info + lib_format_counts = SALMON_QUANT.out.lib_format_counts // channel: [ val(meta), json_info - versions = ch_versions // channel: [ versions.yml ] + versions = ch_versions // channel: [ versions.yml ] } diff --git a/subworkflows/nf-core/fastq_subsample_fq_salmon/tests/main.nf.test b/subworkflows/nf-core/fastq_subsample_fq_salmon/tests/main.nf.test index 949e6861b..308c82685 100644 --- a/subworkflows/nf-core/fastq_subsample_fq_salmon/tests/main.nf.test +++ b/subworkflows/nf-core/fastq_subsample_fq_salmon/tests/main.nf.test @@ -4,10 +4,13 @@ nextflow_workflow { script "../main.nf" workflow "FASTQ_SUBSAMPLE_FQ_SALMON" config "./nextflow.config" - - tag "SALMON_INDEX" - tag "FQ_SUBSAMPLE" - tag "SALMON_QUANT" + tag "subworkflows" + tag "subworkflows_nfcore" + tag "subworkflows/fastq_subsample_fq_salmon" + tag "fastq_subsample_fq_salmon" + tag "salmon/index" + tag "fq/subsample" + tag "salmon/quant" test("homo_sapiens paired-end [fastq]") { @@ -52,6 +55,7 @@ nextflow_workflow { { assert snapshot(readlines2[0..5]).match("test_reads_2_lines") }, { assert snapshot(readlines2.size()).match("test_reads_2_size") }, { assert snapshot(workflow.out.versions).match("versions") }, + { assert snapshot(workflow.out.lib_format_counts).match("lib_format_counts") }, { assert workflow.out.index }, { assert workflow.out.results }, diff --git a/subworkflows/nf-core/fastq_subsample_fq_salmon/tests/main.nf.test.snap b/subworkflows/nf-core/fastq_subsample_fq_salmon/tests/main.nf.test.snap index e5905aba9..8bef73cc4 100644 --- a/subworkflows/nf-core/fastq_subsample_fq_salmon/tests/main.nf.test.snap +++ b/subworkflows/nf-core/fastq_subsample_fq_salmon/tests/main.nf.test.snap @@ -7,7 +7,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-01-11T10:33:54.747992124" + "timestamp": "2024-06-14T10:32:16.109988" }, "versions": { "content": [ @@ -20,7 +20,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2023-11-26T16:41:10.396971682" + "timestamp": "2024-06-14T10:32:16.112471" }, "test_reads_1_lines": { "content": [ @@ -37,7 +37,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-01-11T10:33:54.730250665" + "timestamp": "2024-06-14T10:32:16.108208" }, "test_reads_2_lines": { "content": [ @@ -54,7 +54,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-01-11T10:33:54.756723613" + "timestamp": "2024-06-14T10:32:16.111188" }, "test_reads_2_size": { "content": [ @@ -64,6 +64,24 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-01-11T10:33:54.763399473" + "timestamp": "2024-06-14T10:32:16.111792" + }, + "lib_format_counts": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test_lib_format_counts.json:md5,0b0e2dc090e5ad88f9a9d6dbe9c3e4a0" + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-06-14T10:32:16.114075" } } \ No newline at end of file diff --git a/subworkflows/nf-core/fastq_subsample_fq_salmon/tests/nextflow.config b/subworkflows/nf-core/fastq_subsample_fq_salmon/tests/nextflow.config index d20ca1d26..7fc4d632b 100644 --- a/subworkflows/nf-core/fastq_subsample_fq_salmon/tests/nextflow.config +++ b/subworkflows/nf-core/fastq_subsample_fq_salmon/tests/nextflow.config @@ -2,7 +2,6 @@ process { publishDir = { "${params.outdir}/${task.process.tokenize(':')[-1].tokenize('_')[0].toLowerCase()}" } - withName: FQ_SUBSAMPLE { ext.args = '--record-count 1000000 --seed 1' } From 2a5414c83debcbc65ef70f4475e1dc76ab532540 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Fri, 14 Jun 2024 11:31:36 +0100 Subject: [PATCH 332/634] Add strandedness detection threshold parameter --- nextflow.config | 1 + nextflow_schema.json | 8 +++++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/nextflow.config b/nextflow.config index ca0d3a7e6..ad22990ad 100644 --- a/nextflow.config +++ b/nextflow.config @@ -78,6 +78,7 @@ params { skip_markduplicates = false skip_alignment = false skip_pseudo_alignment = false + strand_predict_threshold = 0.8 // QC skip_qc = false diff --git a/nextflow_schema.json b/nextflow_schema.json index 36ff330f1..b04c2184f 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -411,7 +411,7 @@ }, "min_mapped_reads": { "type": "number", - "default": 5.0, + "default": 5, "fa_icon": "fas fa-percentage", "description": "Minimum percentage of uniquely mapped reads below which samples are removed from further processing.", "help_text": "Some downstream steps in the pipeline will fail if this threshold is too low." @@ -452,6 +452,12 @@ "description": "In single-end mode, Kallisto requires an estimated standard error for fragment length. Specify a default value for that here. TODO: use existing RSeQC results to do this dynamically.", "default": 200, "fa_icon": "fas fa-sort-amount-up-alt" + }, + "strand_predict_threshold": { + "type": "number", + "default": 0.8, + "description": "The fraction of stranded reads that must be assigned to a strandedness for confident assignment.", + "help_text": "To be assigned as unstranded, read fractions must be different by less than 1- this value. Samples not convincingly assigned as stranded or unstranded will be assigned as 'undetermined'. These will be treated as unstranded but flagged as potential problems in the final MultiQC report." } } }, From 8ccffc96bc7ca84f4d82a4989e885c05c48a8cdc Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Fri, 14 Jun 2024 11:34:32 +0100 Subject: [PATCH 333/634] Add a consistent library type check between Salmon and RSeQC. Make the strand check results standard --- .../utils_nfcore_rnaseq_pipeline/main.nf | 106 +++++++++++------- .../rnaseq/assets/multiqc/multiqc_config.yml | 4 +- workflows/rnaseq/main.nf | 36 +++++- 3 files changed, 101 insertions(+), 45 deletions(-) diff --git a/subworkflows/local/utils_nfcore_rnaseq_pipeline/main.nf b/subworkflows/local/utils_nfcore_rnaseq_pipeline/main.nf index d8ecb78a7..bfbac31b3 100644 --- a/subworkflows/local/utils_nfcore_rnaseq_pipeline/main.nf +++ b/subworkflows/local/utils_nfcore_rnaseq_pipeline/main.nf @@ -482,24 +482,6 @@ def multiqcTsvFromList(tsv_data, header) { return tsv_string } -// -// Function that parses Salmon quant 'meta_info.json' output file to get inferred strandedness -// -def getSalmonInferredStrandedness(json_file) { - def lib_type = new JsonSlurper().parseText(json_file.text).get('library_types')[0] - def strandedness = 'reverse' - if (lib_type) { - if (lib_type in ['U', 'IU']) { - strandedness = 'unstranded' - } else if (lib_type in ['SF', 'ISF']) { - strandedness = 'forward' - } else if (lib_type in ['SR', 'ISR']) { - strandedness = 'reverse' - } - } - return strandedness -} - // // Function that parses and returns the alignment rate from the STAR log output // @@ -545,31 +527,79 @@ def biotypeInGtf(gtf_file, biotype) { } // -// Function that parses and returns the predicted strandedness from the RSeQC infer_experiment.py output +// Function to determine library type by comparing type counts. Consistent +// between Salmon and RSeQC +// + +def calculateStrandedness(forwardFragments, reverseFragments, undeterminedFragments, threshold) { + def totalFragments = forwardFragments + reverseFragments + undeterminedFragments + def totalStrandedFragments = forwardFragments + reverseFragments + + def strandedness = 'undetermined' + if (totalStrandedFragments > 0) { + def forwardProportion = forwardFragments / (totalStrandedFragments as double) + def reverseProportion = reverseFragments / (totalStrandedFragments as double) + def proportionDifference = Math.abs(forwardProportion - reverseProportion) + + if (forwardProportion >= threshold) { + strandedness = 'forward' + } else if (reverseProportion >= threshold) { + strandedness = 'reverse' + } else if (proportionDifference <= (1 - threshold)) { + strandedness = 'unstranded' + } + } + + return [ + inferred_strandedness: strandedness, + forwardFragments: forwardFragments / (totalFragments as double), + reverseFragments: reverseFragments / (totalFragments as double), + undeterminedFragments: undeterminedFragments / (totalFragments as double) + ] +} + +// +// Function that parses Salmon quant 'lib_format_counts.json' output file to get inferred strandedness +// + +def getSalmonInferredStrandedness(json_file, threshold = 0.9) { + // Parse the JSON content of the file + def libCounts = new JsonSlurper().parseText(json_file.text) + + // Calculate the counts for forward and reverse strand fragments + def forwardFragments = libCounts['SF'] + libCounts['ISF'] + def reverseFragments = libCounts['SR'] + libCounts['ISR'] + // Calculate undetermined fragments (IU and U) + def undeterminedFragments = libCounts['IU'] + libCounts['U'] + + // Use shared calculation function to determine strandedness + return calculateStrandedness(forwardFragments, reverseFragments, undeterminedFragments, threshold) +} + +// +// Function that parses RSeQC infer_experiment output file to get inferred strandedness // -def getInferexperimentStrandedness(inferexperiment_file, cutoff_ratio=5) { - def sense = 0 - def antisense = 0 - def undetermined = 0 + +def getInferexperimentStrandedness(inferexperiment_file, threshold = 0.9) { + def forwardFragments = 0 + def reverseFragments = 0 + def undeterminedFragments = 0 + inferexperiment_file.eachLine { line -> def undetermined_matcher = line =~ /Fraction of reads failed to determine:\s([\d\.]+)/ - def se_sense_matcher = line =~ /Fraction of reads explained by "\++,--":\s([\d\.]+)/ + def se_sense_matcher = line =~ /Fraction of reads explained by "\++,--":\s([\d\.]+)/ def se_antisense_matcher = line =~ /Fraction of reads explained by "\+-,-\+":\s([\d\.]+)/ - def pe_sense_matcher = line =~ /Fraction of reads explained by "1\++,1--,2\+-,2-\+":\s([\d\.]+)/ + def pe_sense_matcher = line =~ /Fraction of reads explained by "1\++,1--,2\+-,2-\+":\s([\d\.]+)/ def pe_antisense_matcher = line =~ /Fraction of reads explained by "1\+-,1-\+,2\+\+,2--":\s([\d\.]+)/ - if (undetermined_matcher) undetermined = undetermined_matcher[0][1].toFloat() * 100 - if (se_sense_matcher) sense = se_sense_matcher[0][1].toFloat() * 100 - if (se_antisense_matcher) antisense = se_antisense_matcher[0][1].toFloat() * 100 - if (pe_sense_matcher) sense = pe_sense_matcher[0][1].toFloat() * 100 - if (pe_antisense_matcher) antisense = pe_antisense_matcher[0][1].toFloat() * 100 + + if (undetermined_matcher) undeterminedFragments = undetermined_matcher[0][1].toFloat() * 100 + if (se_sense_matcher) forwardFragments = se_sense_matcher[0][1].toFloat() * 100 + if (se_antisense_matcher) reverseFragments = se_antisense_matcher[0][1].toFloat() * 100 + if (pe_sense_matcher) forwardFragments = pe_sense_matcher[0][1].toFloat() * 100 + if (pe_antisense_matcher) reverseFragments = pe_antisense_matcher[0][1].toFloat() * 100 } - def strandedness = 'unstranded' - ratio = sense / antisense - if (ratio >= cutoff_ratio) { - strandedness = 'forward' - } else if ((1 / ratio) >= cutoff_ratio) { - strandedness = 'reverse' - } - return [ strandedness, sense, antisense, undetermined ] + // Use shared calculation function to determine strandedness + return calculateStrandedness(forwardFragments, reverseFragments, undeterminedFragments, threshold) } + diff --git a/workflows/rnaseq/assets/multiqc/multiqc_config.yml b/workflows/rnaseq/assets/multiqc/multiqc_config.yml index a2498b319..c5d9d46e9 100644 --- a/workflows/rnaseq/assets/multiqc/multiqc_config.yml +++ b/workflows/rnaseq/assets/multiqc/multiqc_config.yml @@ -168,8 +168,8 @@ custom_data: namespace: "Samples failed mapping threshold" format: "{:.2f}" fail_strand_check: - section_name: "WARNING: Fail Strand Check" - description: "List of samples that failed the strandedness check between that provided in the samplesheet (or detected via an 'auto' strandedness) and calculated by the RSeQC infer_experiment.py tool." + section_name: "Strand Check" + description: "This table shows library starandedness as provided in the sample sheet, inferred from a read sample by Salmon (where 'auto' was used in the sample sheet), and inferred by the RSeQC RSeQC infer_experiment.py tool from genomic alignments. A 'cross' status symbol indicated where a mismatch occurs between what was supplied (or inferred by Salmon) and the RSeQC result." plot_type: "table" pconfig: id: "fail_strand_check_table" diff --git a/workflows/rnaseq/main.nf b/workflows/rnaseq/main.nf index 29aba4ced..c4a31b3d7 100755 --- a/workflows/rnaseq/main.nf +++ b/workflows/rnaseq/main.nf @@ -299,10 +299,15 @@ workflow RNASEQ { FASTQ_SUBSAMPLE_FQ_SALMON .out - .json_info + .lib_format_counts .join(ch_strand_fastq.auto_strand) .map { meta, json, reads -> - return [ meta + [ strandedness: getSalmonInferredStrandedness(json) ], reads ] + def salmon_strand_analysis = getSalmonInferredStrandedness(json, threshold = params.strand_predict_threshold) + strandedness = salmon_strand_analysis.inferred_strandedness + if ( strandedness == 'undetermined' ){ + strandedness = 'unstranded' + } + return [ meta + [ strandedness: strandedness, salmon_strand_analysis: salmon_strand_analysis ], reads ] } .mix(ch_strand_fastq.known_strand) .set { ch_strand_inferred_filtered_fastq } @@ -723,17 +728,38 @@ workflow RNASEQ { .inferexperiment_txt .map { meta, strand_log -> - def inferred_strand = getInferexperimentStrandedness(strand_log, 5) - if (meta.strandedness != inferred_strand[0]) { - return [ "$meta.id\t$meta.strandedness\t${inferred_strand.join('\t')}" ] + def rseqc_inferred_strand = getInferexperimentStrandedness(strand_log, threshold = params.strand_predict_threshold) + if (meta.salmon_strand_analysis){ + if (meta.salmon_strand_analysis.inferred_strandedness != rseqc_inferred_strand.inferred_strandedness) { + status = "❌" // Cross mark + } else { + status = "✅" // Check mark + } + return [ + [ + "$status $meta.id \tauto\tSalmon\t${meta.salmon_strand_analysis.values().join('\t')}", + "$status $meta.id\tauto\tRSeQC\t${rseqc_inferred_strand.values().join('\t')}" + ] + ] + } + else{ + if (meta.strandedness != rseqc_inferred_strand[0]) { + status = "❌" // Cross mark + } else { + status = "✅" // Check mark + } + + return [ "$status $meta.id\t$meta.strandedness\tRSeQC\t${rseqc_inferred_strand.values().join('\t')}" ] } } + .flatten() .collect() .map { tsv_data -> def header = [ "Sample", "Provided strandedness", + "Strand inference method", "Inferred strandedness", "Sense (%)", "Antisense (%)", From c6b91a9c6aa67f447018dc33544113a818b2b3a1 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Fri, 14 Jun 2024 11:55:14 +0100 Subject: [PATCH 334/634] Amend for undetermined --- workflows/rnaseq/assets/multiqc/multiqc_config.yml | 2 +- workflows/rnaseq/main.nf | 8 ++++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/workflows/rnaseq/assets/multiqc/multiqc_config.yml b/workflows/rnaseq/assets/multiqc/multiqc_config.yml index c5d9d46e9..409af9ba8 100644 --- a/workflows/rnaseq/assets/multiqc/multiqc_config.yml +++ b/workflows/rnaseq/assets/multiqc/multiqc_config.yml @@ -169,7 +169,7 @@ custom_data: format: "{:.2f}" fail_strand_check: section_name: "Strand Check" - description: "This table shows library starandedness as provided in the sample sheet, inferred from a read sample by Salmon (where 'auto' was used in the sample sheet), and inferred by the RSeQC RSeQC infer_experiment.py tool from genomic alignments. A 'cross' status symbol indicated where a mismatch occurs between what was supplied (or inferred by Salmon) and the RSeQC result." + description: "This table shows library starandedness as provided in the sample sheet, inferred from a read sample by Salmon (where 'auto' was used in the sample sheet), and inferred by the RSeQC RSeQC infer_experiment.py tool from genomic alignments. A 'cross' status symbol indicate where a mismatch occurs between what was supplied (or inferred by Salmon) and the RSeQC result. Libraries with 'undetermined' strandedness are also flagged, since this can indicate QC problems, including possible DNA contamination." plot_type: "table" pconfig: id: "fail_strand_check_table" diff --git a/workflows/rnaseq/main.nf b/workflows/rnaseq/main.nf index c4a31b3d7..db408cef9 100755 --- a/workflows/rnaseq/main.nf +++ b/workflows/rnaseq/main.nf @@ -729,8 +729,12 @@ workflow RNASEQ { .map { meta, strand_log -> def rseqc_inferred_strand = getInferexperimentStrandedness(strand_log, threshold = params.strand_predict_threshold) + rseqc_strandedness = rseqc_inferred_strand.inferred_strandedness + if (meta.salmon_strand_analysis){ - if (meta.salmon_strand_analysis.inferred_strandedness != rseqc_inferred_strand.inferred_strandedness) { + salmon_strandedness = meta.salmon_strand_analysis.inferred_strandedness + + if (salmon_strandedness != rseqc_strandedness || rseqc_strandedness == 'undetermined' || salmon_strandedness == 'undetermined') { status = "❌" // Cross mark } else { status = "✅" // Check mark @@ -743,7 +747,7 @@ workflow RNASEQ { ] } else{ - if (meta.strandedness != rseqc_inferred_strand[0]) { + if (meta.strandedness != rseqc_strandedness) { status = "❌" // Cross mark } else { status = "✅" // Check mark From ab0c62b14f67bdc867817024ab0f6c05d98a2736 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Fri, 14 Jun 2024 13:49:43 +0100 Subject: [PATCH 335/634] Constraint strand detection threshold --- nextflow_schema.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/nextflow_schema.json b/nextflow_schema.json index b04c2184f..12606fcf9 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -455,8 +455,10 @@ }, "strand_predict_threshold": { "type": "number", + "minimum": 0.5, + "maximum": 1.0, "default": 0.8, - "description": "The fraction of stranded reads that must be assigned to a strandedness for confident assignment.", + "description": "The fraction of stranded reads that must be assigned to a strandedness for confident assignment. Must be at least 0.5.", "help_text": "To be assigned as unstranded, read fractions must be different by less than 1- this value. Samples not convincingly assigned as stranded or unstranded will be assigned as 'undetermined'. These will be treated as unstranded but flagged as potential problems in the final MultiQC report." } } From 38bdb9e832ce46fa01401358ffba958fb7fed286 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Fri, 14 Jun 2024 13:53:23 +0100 Subject: [PATCH 336/634] Consistent defaults --- subworkflows/local/utils_nfcore_rnaseq_pipeline/main.nf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/subworkflows/local/utils_nfcore_rnaseq_pipeline/main.nf b/subworkflows/local/utils_nfcore_rnaseq_pipeline/main.nf index bfbac31b3..fc2451ffd 100644 --- a/subworkflows/local/utils_nfcore_rnaseq_pipeline/main.nf +++ b/subworkflows/local/utils_nfcore_rnaseq_pipeline/main.nf @@ -562,7 +562,7 @@ def calculateStrandedness(forwardFragments, reverseFragments, undeterminedFragme // Function that parses Salmon quant 'lib_format_counts.json' output file to get inferred strandedness // -def getSalmonInferredStrandedness(json_file, threshold = 0.9) { +def getSalmonInferredStrandedness(json_file, threshold = 0.8) { // Parse the JSON content of the file def libCounts = new JsonSlurper().parseText(json_file.text) @@ -580,7 +580,7 @@ def getSalmonInferredStrandedness(json_file, threshold = 0.9) { // Function that parses RSeQC infer_experiment output file to get inferred strandedness // -def getInferexperimentStrandedness(inferexperiment_file, threshold = 0.9) { +def getInferexperimentStrandedness(inferexperiment_file, threshold = 0.8) { def forwardFragments = 0 def reverseFragments = 0 def undeterminedFragments = 0 From db2aaa843d638adb8ed2ec3f1356bf826259db01 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Mon, 17 Jun 2024 13:12:23 +0100 Subject: [PATCH 337/634] Reinstate onComplete messages --- main.nf | 8 +- .../utils_nfcore_rnaseq_pipeline/main.nf | 76 ++++++++++++++++--- workflows/rnaseq/main.nf | 35 ++++++++- 3 files changed, 108 insertions(+), 11 deletions(-) diff --git a/main.nf b/main.nf index 768161c4b..8a0c86d7b 100755 --- a/main.nf +++ b/main.nf @@ -124,6 +124,9 @@ workflow NFCORE_RNASEQ { ch_versions = ch_versions.mix(RNASEQ.out.versions) emit: + trim_status = RNASEQ.out.trim_status // channel: [id, boolean] + map_status = RNASEQ.out.map_status // channel: [id, boolean] + strand_status = RNASEQ.out.strand_status // channel: [id, boolean] multiqc_report = RNASEQ.out.multiqc_report // channel: /path/to/multiqc_report.html versions = ch_versions // channel: [version1, version2, ...] } @@ -167,7 +170,10 @@ workflow { params.outdir, params.monochrome_logs, params.hook_url, - NFCORE_RNASEQ.out.multiqc_report + NFCORE_RNASEQ.out.multiqc_report, + NFCORE_RNASEQ.out.trim_status, + NFCORE_RNASEQ.out.map_status, + NFCORE_RNASEQ.out.strand_status ) } diff --git a/subworkflows/local/utils_nfcore_rnaseq_pipeline/main.nf b/subworkflows/local/utils_nfcore_rnaseq_pipeline/main.nf index d42ba7edd..9c2bf3c13 100644 --- a/subworkflows/local/utils_nfcore_rnaseq_pipeline/main.nf +++ b/subworkflows/local/utils_nfcore_rnaseq_pipeline/main.nf @@ -20,6 +20,7 @@ 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 { logColours } from '../../nf-core/utils_nfcore_pipeline' /* ======================================================================================== @@ -85,22 +86,44 @@ workflow PIPELINE_INITIALISATION { ======================================================================================== */ +def pass_mapped_reads = [:] +def pass_trimmed_reads = [:] +def pass_strand_check = [:] + workflow PIPELINE_COMPLETION { take: - schema // string: Path to the JSON schema file - 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 + schema // string: Path to the JSON schema file + 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 + trim_status // map: pass/fail status per sample for trimming + map_status // map: pass/fail status per sample for mapping + strand_status // map: pass/fail status per sample for strandedness check main: summary_params = paramsSummaryMap(workflow, parameters_schema: schema) + trim_status + .map{ + id, status -> pass_trimmed_reads[id] = status + } + + map_status + .map{ + id, status -> pass_mapped_reads[id] = status + } + + strand_status + .map{ + id, status -> pass_strand_check[id] = status + } + // // Completion email and summary // @@ -109,7 +132,7 @@ workflow PIPELINE_COMPLETION { completionEmail(summary_params, email, email_on_fail, plaintext_email, outdir, monochrome_logs, multiqc_report.toList()) } - completionSummary(monochrome_logs) + rnaseqSummary(monochrome_logs=monochrome_logs, pass_mapped_reads=pass_mapped_reads, pass_trimmed_reads=pass_trimmed_reads, pass_strand_check=pass_strand_check) if (hook_url) { imNotification(summary_params, hook_url) @@ -571,3 +594,38 @@ def getInferexperimentStrandedness(inferexperiment_file, cutoff=30) { } return [ strandedness, sense, antisense, undetermined ] } + +// +// Print pipeline summary on completion +// +def rnaseqSummary(monochrome_logs=true, pass_mapped_reads=[:], pass_trimmed_reads=[:], pass_strand_check=[:]) { + def colors = logColours(monochrome_logs) + + def fail_mapped_count = pass_mapped_reads.count { key, value -> value == false } + def fail_trimmed_count = pass_trimmed_reads.count { key, value -> value == false } + def fail_strand_count = pass_strand_check.count { key, value -> value == false } + if (workflow.success) { + def color = colors.green + def status = [] + if (workflow.stats.ignoredCount != 0) { + color = colors.yellow + status += ['with errored process(es)'] + } + if (fail_mapped_count > 0 || fail_trimmed_count > 0 || fail_strand_count > 0) { + color = colors.yellow + status += ['with skipped sampl(es)'] + } + log.info "-${colors.purple}[$workflow.manifest.name]${color} Pipeline completed successfully ${status.join(', ')}${colors.reset}-" + if (fail_trimmed_count > 0) { + log.info "-${colors.purple}[$workflow.manifest.name]${colors.red} Please check MultiQC report: ${fail_trimmed_count}/${pass_trimmed_reads.size()} samples skipped since they failed ${params.min_trimmed_reads} trimmed read threshold.${colors.reset}-" + } + if (fail_mapped_count > 0) { + log.info "-${colors.purple}[$workflow.manifest.name]${colors.red} Please check MultiQC report: ${fail_mapped_count}/${pass_mapped_reads.size()} samples skipped since they failed STAR ${params.min_mapped_reads}% mapped threshold.${colors.reset}-" + } + if (fail_strand_count > 0) { + log.info "-${colors.purple}[$workflow.manifest.name]${colors.red} Please check MultiQC report: ${fail_strand_count}/${pass_strand_check.size()} samples failed strandedness check.${colors.reset}-" + } + } else { + log.info "-${colors.purple}[$workflow.manifest.name]${colors.red} Pipeline completed with errors${colors.reset}-" + } +} diff --git a/workflows/rnaseq/main.nf b/workflows/rnaseq/main.nf index 13c5bf118..bb048eff4 100755 --- a/workflows/rnaseq/main.nf +++ b/workflows/rnaseq/main.nf @@ -106,6 +106,9 @@ workflow RNASEQ { main: ch_multiqc_files = Channel.empty() + ch_trim_status = Channel.empty() + ch_map_status = Channel.empty() + ch_strand_status = Channel.empty() // // Create channel from input file provided through params.input @@ -191,6 +194,13 @@ workflow RNASEQ { ch_versions = ch_versions.mix(FASTQ_FASTQC_UMITOOLS_FASTP.out.versions) } + // Save trim status for workflow summary + + ch_trim_status = ch_trim_read_count + .map { + meta, num_reads -> + return [ meta.id, num_reads > params.min_trimmed_reads.toFloat() ] + } // // Get list of samples that failed trimming threshold for MultiQC report // @@ -528,6 +538,13 @@ workflow RNASEQ { .map { meta, align_log -> [ meta ] + getStarPercentMapped(params, align_log) } .set { ch_percent_mapped } + // Save status for workflow summary + ch_map_status = ch_percent_mapped + .map { + meta, mapped, pass -> + return [ meta.id, pass ] + } + ch_genome_bam .join(ch_percent_mapped, by: [0]) .map { meta, ofile, mapped, pass -> if (pass) [ meta, ofile ] } @@ -718,12 +735,25 @@ workflow RNASEQ { ch_multiqc_files = ch_multiqc_files.mix(BAM_RSEQC.out.tin_txt.collect{it[1]}) ch_versions = ch_versions.mix(BAM_RSEQC.out.versions) - BAM_RSEQC + ch_inferexperiment_strand = BAM_RSEQC .out .inferexperiment_txt .map { meta, strand_log -> def inferred_strand = getInferexperimentStrandedness(strand_log, 30) + return [ meta, inferred_strand ] + } + + // Save status for workflow summary + ch_strand_status = ch_inferexperiment_strand + .map{ + meta, inferred_strand -> + return [ meta.id, meta.strandedness == inferred_strand[0]] + } + + ch_inferexperiment_strand + .map{ + meta, inferred_strand -> if (meta.strandedness != inferred_strand[0]) { return [ "$meta.id\t$meta.strandedness\t${inferred_strand.join('\t')}" ] } @@ -817,6 +847,9 @@ workflow RNASEQ { } emit: + trim_status = ch_trim_status // channel: [id, boolean] + map_status = ch_map_status // channel: [id, boolean] + strand_status = ch_strand_status // channel: [id, boolean] multiqc_report = ch_multiqc_report // channel: /path/to/multiqc_report.html versions = ch_versions // channel: [ path(versions.yml) ] } From cacebad5857cacaf2fc1e6821b355d7c204cf05e Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Mon, 17 Jun 2024 13:48:41 +0100 Subject: [PATCH 338/634] Appease linting --- workflows/rnaseq/main.nf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/workflows/rnaseq/main.nf b/workflows/rnaseq/main.nf index bb048eff4..2240c9357 100755 --- a/workflows/rnaseq/main.nf +++ b/workflows/rnaseq/main.nf @@ -742,7 +742,7 @@ workflow RNASEQ { meta, strand_log -> def inferred_strand = getInferexperimentStrandedness(strand_log, 30) return [ meta, inferred_strand ] - } + } // Save status for workflow summary ch_strand_status = ch_inferexperiment_strand From 2a38654b1881c0a9813392b5d99419e5ac3f74bc Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Mon, 17 Jun 2024 14:15:10 +0100 Subject: [PATCH 339/634] update CHANGELOG --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 438e71d99..591b7ef79 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -72,6 +72,7 @@ Thank you to everyone else that has contributed by reporting bugs, enhancements - [PR #1302](https://github.com/nf-core/rnaseq/pull/1302) - Add missing files from Tximport processing - [PR #1304](https://github.com/nf-core/rnaseq/pull/1304) - Remove redundant gene TPM outputs - [PR #1317](https://github.com/nf-core/rnaseq/pull/1317) - Strip problematic ifEmpty() +- [PR #1319](https://github.com/nf-core/rnaseq/pull/1319) - Reinstate oncomplete error messages ### Parameters From ec65b3ea75cc182ceaca18ebdf35c82a652ddaf6 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Mon, 17 Jun 2024 14:20:57 +0100 Subject: [PATCH 340/634] strandedness failure doesn't skip --- subworkflows/local/utils_nfcore_rnaseq_pipeline/main.nf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/subworkflows/local/utils_nfcore_rnaseq_pipeline/main.nf b/subworkflows/local/utils_nfcore_rnaseq_pipeline/main.nf index 9c2bf3c13..e8523f8db 100644 --- a/subworkflows/local/utils_nfcore_rnaseq_pipeline/main.nf +++ b/subworkflows/local/utils_nfcore_rnaseq_pipeline/main.nf @@ -611,7 +611,7 @@ def rnaseqSummary(monochrome_logs=true, pass_mapped_reads=[:], pass_trimmed_read color = colors.yellow status += ['with errored process(es)'] } - if (fail_mapped_count > 0 || fail_trimmed_count > 0 || fail_strand_count > 0) { + if (fail_mapped_count > 0 || fail_trimmed_count > 0) { color = colors.yellow status += ['with skipped sampl(es)'] } From 74c4fe37056458e3795194e0eb49e5ab8d31dd3f Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Mon, 17 Jun 2024 15:57:04 +0100 Subject: [PATCH 341/634] Fix PIPELINE_COMPLETEION test --- .../tests/main.pipeline_completion.workflow.nf.test | 3 +++ 1 file changed, 3 insertions(+) diff --git a/subworkflows/local/utils_nfcore_rnaseq_pipeline/tests/main.pipeline_completion.workflow.nf.test b/subworkflows/local/utils_nfcore_rnaseq_pipeline/tests/main.pipeline_completion.workflow.nf.test index fb7e7a145..c7e862c38 100644 --- a/subworkflows/local/utils_nfcore_rnaseq_pipeline/tests/main.pipeline_completion.workflow.nf.test +++ b/subworkflows/local/utils_nfcore_rnaseq_pipeline/tests/main.pipeline_completion.workflow.nf.test @@ -18,6 +18,9 @@ nextflow_workflow { input[5] = true // monochrome_logs (boolean) input[6] = null // hook_url (string) input[7] = "${outputDir}/multiqc_report.html" // multiqc_report (string) + input[8] = Channel.of(['test_sample', true]) + input[9] = Channel.of(['test_sample', true]) + input[10] = Channel.of(['test_sample', true]) """ } } From 22cd0f814a6dee67244f2fc290700296bc0734cc Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Mon, 17 Jun 2024 16:04:50 +0100 Subject: [PATCH 342/634] Don't need non-custom completion summary --- subworkflows/local/utils_nfcore_rnaseq_pipeline/main.nf | 1 - 1 file changed, 1 deletion(-) diff --git a/subworkflows/local/utils_nfcore_rnaseq_pipeline/main.nf b/subworkflows/local/utils_nfcore_rnaseq_pipeline/main.nf index e8523f8db..5ffd628ff 100644 --- a/subworkflows/local/utils_nfcore_rnaseq_pipeline/main.nf +++ b/subworkflows/local/utils_nfcore_rnaseq_pipeline/main.nf @@ -14,7 +14,6 @@ include { UTILS_NFVALIDATION_PLUGIN } from '../../nf-core/utils_nfvalidation_plu include { paramsSummaryMap } from 'plugin/nf-validation' include { UTILS_NEXTFLOW_PIPELINE } from '../../nf-core/utils_nextflow_pipeline' 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' From 9aadd4ae93ad974b30005b630b93d50799669eef Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Mon, 17 Jun 2024 18:27:51 +0100 Subject: [PATCH 343/634] Fix up after merge --- .../rnaseq/assets/multiqc/multiqc_config.yml | 8 +++--- workflows/rnaseq/main.nf | 28 +++++++++---------- 2 files changed, 17 insertions(+), 19 deletions(-) diff --git a/workflows/rnaseq/assets/multiqc/multiqc_config.yml b/workflows/rnaseq/assets/multiqc/multiqc_config.yml index 409af9ba8..521fb5e76 100644 --- a/workflows/rnaseq/assets/multiqc/multiqc_config.yml +++ b/workflows/rnaseq/assets/multiqc/multiqc_config.yml @@ -168,11 +168,11 @@ custom_data: namespace: "Samples failed mapping threshold" format: "{:.2f}" fail_strand_check: - section_name: "Strand Check" - description: "This table shows library starandedness as provided in the sample sheet, inferred from a read sample by Salmon (where 'auto' was used in the sample sheet), and inferred by the RSeQC RSeQC infer_experiment.py tool from genomic alignments. A 'cross' status symbol indicate where a mismatch occurs between what was supplied (or inferred by Salmon) and the RSeQC result. Libraries with 'undetermined' strandedness are also flagged, since this can indicate QC problems, including possible DNA contamination." + section_name: "Strandedness Checks" + description: "This table shows library starandedness as provided in the sample sheet, inferred from a read sample by Salmon (where 'auto' was used in the sample sheet), and inferred by the RSeQC RSeQC infer_experiment.py tool from genomic alignments. Match between suplied (or inferred by Salmon) and RSeQC are indicated by ✅, a ❌ status symbol indicates where a mismatch. Libraries with 'undetermined' strandedness are also flagged, since this can indicate QC problems, including possible genomic DNA contamination." plot_type: "table" pconfig: id: "fail_strand_check_table" - table_title: "Samples failed strandedness check" - namespace: "Samples failed strandedness check" + table_title: "Samples trandedness check" + namespace: "Samples strandedness check" format: "{:.2f}" diff --git a/workflows/rnaseq/main.nf b/workflows/rnaseq/main.nf index e73f6d2dd..0ab80ae35 100755 --- a/workflows/rnaseq/main.nf +++ b/workflows/rnaseq/main.nf @@ -313,10 +313,10 @@ workflow RNASEQ { .join(ch_strand_fastq.auto_strand) .map { meta, json, reads -> def salmon_strand_analysis = getSalmonInferredStrandedness(json, threshold = params.strand_predict_threshold) - strandedness = salmon_strand_analysis.inferred_strandedness + strandedness = salmon_strand_analysis.inferred_strandedness if ( strandedness == 'undetermined' ){ strandedness = 'unstranded' - } + } return [ meta + [ strandedness: strandedness, salmon_strand_analysis: salmon_strand_analysis ], reads ] } .mix(ch_strand_fastq.known_strand) @@ -741,16 +741,15 @@ workflow RNASEQ { ch_versions = ch_versions.mix(BAM_RSEQC.out.versions) // Compare predicted supplied or Salmon-predicted strand with what we get from RSeQC - ch_strand_comparison = BAM_RSEQC - .out - .inferexperiment_txt + ch_strand_comparison = BAM_RSEQC.out.inferexperiment_txt .map { meta, strand_log -> def rseqc_inferred_strand = getInferexperimentStrandedness(strand_log, threshold = params.strand_predict_threshold) rseqc_strandedness = rseqc_inferred_strand.inferred_strandedness - - status = false - mark = "❌" // Cross mark + + def status = false + def mark = "❌" // Cross mark + def multiqc_lines = [] if (meta.salmon_strand_analysis){ salmon_strandedness = meta.salmon_strand_analysis.inferred_strandedness @@ -758,12 +757,11 @@ workflow RNASEQ { if (salmon_strandedness == rseqc_strandedness && rseqc_strandedness != 'undetermined'){ status = true mark = "✅" // Check mark - } + } multiqc_lines = [ "$mark $meta.id \tauto\tSalmon (used)\t${meta.salmon_strand_analysis.values().join('\t')}", "$mark $meta.id\tauto\tRSeQC\t${rseqc_inferred_strand.values().join('\t')}" ] - ] } else{ if (meta.strandedness == rseqc_strandedness) { @@ -771,16 +769,16 @@ workflow RNASEQ { mark = "✅" // Check mark } - multiqc_lines [ "$status $meta.id\t$meta.strandedness\tRSeQC\t${rseqc_inferred_strand.values().join('\t')}" ] + multiqc_lines = [ "$mark $meta.id\t$meta.strandedness\tRSeQC\t${rseqc_inferred_strand.values().join('\t')}" ] } - return [ meta, status, multiqc_lines ] + return [ meta, status, multiqc_lines ] } .multiMap{ meta, status, multiqc_lines -> status: [ meta.id, status ] - multiqc_lines = multiqc_lines + multiqc_lines: multiqc_lines } - - // Take the lines formatted for MultiQC and output + + // Take the lines formatted for MultiQC and output ch_strand_comparison.multiqc_lines .flatten() .collect() From 82724b895638caec9e26fba40e28031f4ad323ca Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Mon, 17 Jun 2024 18:33:27 +0100 Subject: [PATCH 344/634] Fix for linting --- subworkflows/local/utils_nfcore_rnaseq_pipeline/main.nf | 7 ++++--- workflows/rnaseq/main.nf | 6 +++--- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/subworkflows/local/utils_nfcore_rnaseq_pipeline/main.nf b/subworkflows/local/utils_nfcore_rnaseq_pipeline/main.nf index cfb3b643f..fe3a080d1 100644 --- a/subworkflows/local/utils_nfcore_rnaseq_pipeline/main.nf +++ b/subworkflows/local/utils_nfcore_rnaseq_pipeline/main.nf @@ -587,7 +587,7 @@ def calculateStrandedness(forwardFragments, reverseFragments, undeterminedFragme def getSalmonInferredStrandedness(json_file, threshold = 0.8) { // Parse the JSON content of the file def libCounts = new JsonSlurper().parseText(json_file.text) - + // Calculate the counts for forward and reverse strand fragments def forwardFragments = libCounts['SF'] + libCounts['ISF'] def reverseFragments = libCounts['SR'] + libCounts['ISR'] @@ -613,7 +613,7 @@ def getInferexperimentStrandedness(inferexperiment_file, threshold = 0.8) { def se_antisense_matcher = line =~ /Fraction of reads explained by "\+-,-\+":\s([\d\.]+)/ def pe_sense_matcher = line =~ /Fraction of reads explained by "1\++,1--,2\+-,2-\+":\s([\d\.]+)/ def pe_antisense_matcher = line =~ /Fraction of reads explained by "1\+-,1-\+,2\+\+,2--":\s([\d\.]+)/ - + if (undetermined_matcher) undeterminedFragments = undetermined_matcher[0][1].toFloat() * 100 if (se_sense_matcher) forwardFragments = se_sense_matcher[0][1].toFloat() * 100 if (se_antisense_matcher) reverseFragments = se_antisense_matcher[0][1].toFloat() * 100 @@ -658,4 +658,5 @@ def rnaseqSummary(monochrome_logs=true, pass_mapped_reads=[:], pass_trimmed_read } else { log.info "-${colors.purple}[$workflow.manifest.name]${colors.red} Pipeline completed with errors${colors.reset}-" } -} \ No newline at end of file +} + diff --git a/workflows/rnaseq/main.nf b/workflows/rnaseq/main.nf index 0ab80ae35..ed5476d94 100755 --- a/workflows/rnaseq/main.nf +++ b/workflows/rnaseq/main.nf @@ -759,9 +759,9 @@ workflow RNASEQ { mark = "✅" // Check mark } multiqc_lines = [ - "$mark $meta.id \tauto\tSalmon (used)\t${meta.salmon_strand_analysis.values().join('\t')}", - "$mark $meta.id\tauto\tRSeQC\t${rseqc_inferred_strand.values().join('\t')}" - ] + $mark $meta.id \tauto\tSalmon (used)\t${meta.salmon_strand_analysis.values().join('\t')}", + "$mark $meta.id\tauto\tRSeQC\t${rseqc_inferred_strand.values().join('\t')}" + ] } else{ if (meta.strandedness == rseqc_strandedness) { From c4d3535bc824f768a457b7a964172aece805dac9 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Mon, 17 Jun 2024 18:35:04 +0100 Subject: [PATCH 345/634] update CHANGELOG --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 591b7ef79..cf8875c07 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -73,6 +73,7 @@ Thank you to everyone else that has contributed by reporting bugs, enhancements - [PR #1304](https://github.com/nf-core/rnaseq/pull/1304) - Remove redundant gene TPM outputs - [PR #1317](https://github.com/nf-core/rnaseq/pull/1317) - Strip problematic ifEmpty() - [PR #1319](https://github.com/nf-core/rnaseq/pull/1319) - Reinstate oncomplete error messages +- [PR #1306](https://github.com/nf-core/rnaseq/pull/1306) - Overhaul strandedness detection / comparison ### Parameters From 9dd6d6d8b2f1f5c4a8fdb3be460c2d158e196b0f Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Mon, 17 Jun 2024 18:37:44 +0100 Subject: [PATCH 346/634] Fix the fix --- workflows/rnaseq/main.nf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/workflows/rnaseq/main.nf b/workflows/rnaseq/main.nf index ed5476d94..dceb58084 100755 --- a/workflows/rnaseq/main.nf +++ b/workflows/rnaseq/main.nf @@ -759,7 +759,7 @@ workflow RNASEQ { mark = "✅" // Check mark } multiqc_lines = [ - $mark $meta.id \tauto\tSalmon (used)\t${meta.salmon_strand_analysis.values().join('\t')}", + "$mark $meta.id \tauto\tSalmon (used)\t${meta.salmon_strand_analysis.values().join('\t')}", "$mark $meta.id\tauto\tRSeQC\t${rseqc_inferred_strand.values().join('\t')}" ] } From 451cb64c92311beb2ab9747f0de15a3c17098f93 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Mon, 17 Jun 2024 18:41:01 +0100 Subject: [PATCH 347/634] fix typos --- conf/test.config | 2 +- workflows/rnaseq/assets/multiqc/multiqc_config.yml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/conf/test.config b/conf/test.config index 84e3bdc8a..8ec00ad13 100644 --- a/conf/test.config +++ b/conf/test.config @@ -20,7 +20,7 @@ params { max_time = '6.h' // Input data - input = params.pipelines_testdata_base_path + 'samplesheet/v3.10/samplesheet_test.csv' + input = '/Users/jonathan.manning/projects/rnaseq/samplesheet_test.csv' // Genome references fasta = params.pipelines_testdata_base_path + 'reference/genome.fasta' diff --git a/workflows/rnaseq/assets/multiqc/multiqc_config.yml b/workflows/rnaseq/assets/multiqc/multiqc_config.yml index 521fb5e76..4fac672f3 100644 --- a/workflows/rnaseq/assets/multiqc/multiqc_config.yml +++ b/workflows/rnaseq/assets/multiqc/multiqc_config.yml @@ -169,10 +169,10 @@ custom_data: format: "{:.2f}" fail_strand_check: section_name: "Strandedness Checks" - description: "This table shows library starandedness as provided in the sample sheet, inferred from a read sample by Salmon (where 'auto' was used in the sample sheet), and inferred by the RSeQC RSeQC infer_experiment.py tool from genomic alignments. Match between suplied (or inferred by Salmon) and RSeQC are indicated by ✅, a ❌ status symbol indicates where a mismatch. Libraries with 'undetermined' strandedness are also flagged, since this can indicate QC problems, including possible genomic DNA contamination." + description: "This table shows library strandedness as provided in the sample sheet, inferred from a read sample by Salmon (where 'auto' was used in the sample sheet), and inferred by the RSeQC RSeQC infer_experiment.py tool from genomic alignments. Match between suplied (or inferred by Salmon) and RSeQC are indicated by ✅, a ❌ status symbol indicates where a mismatch. Libraries with 'undetermined' strandedness are also flagged, since this can indicate QC problems, including possible genomic DNA contamination." plot_type: "table" pconfig: id: "fail_strand_check_table" - table_title: "Samples trandedness check" + table_title: "Samples strandedness check" namespace: "Samples strandedness check" format: "{:.2f}" From 3df6ec8e0ffc419d97c0a9a81a4fed488152e21a Mon Sep 17 00:00:00 2001 From: nf-core-bot Date: Mon, 17 Jun 2024 17:41:35 +0000 Subject: [PATCH 348/634] [automated] Fix linting with Prettier --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index cf8875c07..bd85b429b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -73,7 +73,7 @@ Thank you to everyone else that has contributed by reporting bugs, enhancements - [PR #1304](https://github.com/nf-core/rnaseq/pull/1304) - Remove redundant gene TPM outputs - [PR #1317](https://github.com/nf-core/rnaseq/pull/1317) - Strip problematic ifEmpty() - [PR #1319](https://github.com/nf-core/rnaseq/pull/1319) - Reinstate oncomplete error messages -- [PR #1306](https://github.com/nf-core/rnaseq/pull/1306) - Overhaul strandedness detection / comparison +- [PR #1306](https://github.com/nf-core/rnaseq/pull/1306) - Overhaul strandedness detection / comparison ### Parameters From 007bde2b22e057e702d86c54d174083f45aa4d3b Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Mon, 17 Jun 2024 18:44:45 +0100 Subject: [PATCH 349/634] Fix module lint error --- modules.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules.json b/modules.json index ff57df99a..0279448ce 100644 --- a/modules.json +++ b/modules.json @@ -162,7 +162,7 @@ }, "salmon/index": { "branch": "master", - "git_sha": "ffc101e1b84ef3df2e4e4a966e84b3c513ae5693", + "git_sha": "cb6b2b94fc40dea58f0b1e3dd095f3dd24f2ac8a", "installed_by": ["fastq_subsample_fq_salmon"] }, "salmon/quant": { From 002ebbd3a53c11ce2cf681325586e605dee2140a Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Mon, 17 Jun 2024 18:45:54 +0100 Subject: [PATCH 350/634] revert config changed in error --- conf/test.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conf/test.config b/conf/test.config index 8ec00ad13..84e3bdc8a 100644 --- a/conf/test.config +++ b/conf/test.config @@ -20,7 +20,7 @@ params { max_time = '6.h' // Input data - input = '/Users/jonathan.manning/projects/rnaseq/samplesheet_test.csv' + input = params.pipelines_testdata_base_path + 'samplesheet/v3.10/samplesheet_test.csv' // Genome references fasta = params.pipelines_testdata_base_path + 'reference/genome.fasta' From 1977f6dfb082997f760e1dffd52f8fe978e7c7ba Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Mon, 17 Jun 2024 18:58:05 +0100 Subject: [PATCH 351/634] Fix conditionality --- workflows/rnaseq/main.nf | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/workflows/rnaseq/main.nf b/workflows/rnaseq/main.nf index dceb58084..ef5e431b2 100755 --- a/workflows/rnaseq/main.nf +++ b/workflows/rnaseq/main.nf @@ -778,6 +778,9 @@ workflow RNASEQ { multiqc_lines: multiqc_lines } + // Store the statuses for output + ch_strand_status = ch_strand_comparison.status + // Take the lines formatted for MultiQC and output ch_strand_comparison.multiqc_lines .flatten() @@ -872,11 +875,11 @@ workflow RNASEQ { } emit: - trim_status = ch_trim_status // channel: [id, boolean] - map_status = ch_map_status // channel: [id, boolean] - strand_status = ch_strand_comparison.status // channel: [id, boolean] - multiqc_report = ch_multiqc_report // channel: /path/to/multiqc_report.html - versions = ch_versions // channel: [ path(versions.yml) ] + trim_status = ch_trim_status // channel: [id, boolean] + map_status = ch_map_status // channel: [id, boolean] + strand_status = ch_strand_status // channel: [id, boolean] + multiqc_report = ch_multiqc_report // channel: /path/to/multiqc_report.html + versions = ch_versions // channel: [ path(versions.yml) ] } /* From bc6189f09954c0d00a71ac43b2ccf69ef22bbd82 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Tue, 18 Jun 2024 11:54:07 +0100 Subject: [PATCH 352/634] Clarify stranded/ unstraded at library level, include other library types in strand totals --- .../utils_nfcore_rnaseq_pipeline/main.nf | 41 +++++++++++-------- 1 file changed, 23 insertions(+), 18 deletions(-) diff --git a/subworkflows/local/utils_nfcore_rnaseq_pipeline/main.nf b/subworkflows/local/utils_nfcore_rnaseq_pipeline/main.nf index fe3a080d1..5382a11c5 100644 --- a/subworkflows/local/utils_nfcore_rnaseq_pipeline/main.nf +++ b/subworkflows/local/utils_nfcore_rnaseq_pipeline/main.nf @@ -553,21 +553,21 @@ def biotypeInGtf(gtf_file, biotype) { // between Salmon and RSeQC // -def calculateStrandedness(forwardFragments, reverseFragments, undeterminedFragments, threshold) { - def totalFragments = forwardFragments + reverseFragments + undeterminedFragments +def calculateStrandedness(forwardFragments, reverseFragments, unstrandedFragments, stranded_threshold=0.8, unstranded_threshold=0.1) { + def totalFragments = forwardFragments + reverseFragments + unstrandedFragments def totalStrandedFragments = forwardFragments + reverseFragments - def strandedness = 'undetermined' + def library_strandedness = 'undetermined' if (totalStrandedFragments > 0) { def forwardProportion = forwardFragments / (totalStrandedFragments as double) def reverseProportion = reverseFragments / (totalStrandedFragments as double) def proportionDifference = Math.abs(forwardProportion - reverseProportion) - if (forwardProportion >= threshold) { + if (forwardProportion >= stranded_threshold) { strandedness = 'forward' - } else if (reverseProportion >= threshold) { + } else if (reverseProportion >= stranded_threshold) { strandedness = 'reverse' - } else if (proportionDifference <= (1 - threshold)) { + } else if (proportionDifference <= unstranded_threshold) { strandedness = 'unstranded' } } @@ -576,7 +576,7 @@ def calculateStrandedness(forwardFragments, reverseFragments, undeterminedFragme inferred_strandedness: strandedness, forwardFragments: forwardFragments / (totalFragments as double), reverseFragments: reverseFragments / (totalFragments as double), - undeterminedFragments: undeterminedFragments / (totalFragments as double) + unstrandedFragments: unstrandedFragments / (totalFragments as double) ] } @@ -584,37 +584,42 @@ def calculateStrandedness(forwardFragments, reverseFragments, undeterminedFragme // Function that parses Salmon quant 'lib_format_counts.json' output file to get inferred strandedness // -def getSalmonInferredStrandedness(json_file, threshold = 0.8) { +def getSalmonInferredStrandedness(json_file, stranded_threshold = 0.8, unstranded_threshold = 0.1) { // Parse the JSON content of the file def libCounts = new JsonSlurper().parseText(json_file.text) // Calculate the counts for forward and reverse strand fragments - def forwardFragments = libCounts['SF'] + libCounts['ISF'] - def reverseFragments = libCounts['SR'] + libCounts['ISR'] - // Calculate undetermined fragments (IU and U) - def undeterminedFragments = libCounts['IU'] + libCounts['U'] + def forwardFragments = libCounts['SF'] + libCounts['ISF'] + libCounts['MSF'] + libCounts['OSF'] + def reverseFragments = libCounts['SR'] + libCounts['ISR'] + libCounts['MSR'] + libCounts['OSR'] + + // Calculate unstranded fragments (IU and U) + // NOTE: this is here for completeness, but actually all fragments have a + // strandedness (even if the overall library does not), so all these values + // will be '0'. See + // https://groups.google.com/g/sailfish-users/c/yxzBDv6NB6I + def unstrandedFragments = libCounts['IU'] + libCounts['U'] + libCounts['MU'] // Use shared calculation function to determine strandedness - return calculateStrandedness(forwardFragments, reverseFragments, undeterminedFragments, threshold) + return calculateStrandedness(forwardFragments, reverseFragments, unstrandedFragments, stranded_threshold, unstranded_threshold) } // // Function that parses RSeQC infer_experiment output file to get inferred strandedness // -def getInferexperimentStrandedness(inferexperiment_file, threshold = 0.8) { +def getInferexperimentStrandedness(inferexperiment_file, stranded_threshold = 0.8, unstranded_threshold = 0.1) { def forwardFragments = 0 def reverseFragments = 0 - def undeterminedFragments = 0 + def unstrandedFragments = 0 inferexperiment_file.eachLine { line -> - def undetermined_matcher = line =~ /Fraction of reads failed to determine:\s([\d\.]+)/ + def unstranded_matcher = line =~ /Fraction of reads failed to determine:\s([\d\.]+)/ def se_sense_matcher = line =~ /Fraction of reads explained by "\++,--":\s([\d\.]+)/ def se_antisense_matcher = line =~ /Fraction of reads explained by "\+-,-\+":\s([\d\.]+)/ def pe_sense_matcher = line =~ /Fraction of reads explained by "1\++,1--,2\+-,2-\+":\s([\d\.]+)/ def pe_antisense_matcher = line =~ /Fraction of reads explained by "1\+-,1-\+,2\+\+,2--":\s([\d\.]+)/ - if (undetermined_matcher) undeterminedFragments = undetermined_matcher[0][1].toFloat() * 100 + if (unstranded_matcher) unstrandedFragments = unstranded_matcher[0][1].toFloat() * 100 if (se_sense_matcher) forwardFragments = se_sense_matcher[0][1].toFloat() * 100 if (se_antisense_matcher) reverseFragments = se_antisense_matcher[0][1].toFloat() * 100 if (pe_sense_matcher) forwardFragments = pe_sense_matcher[0][1].toFloat() * 100 @@ -622,7 +627,7 @@ def getInferexperimentStrandedness(inferexperiment_file, threshold = 0.8) { } // Use shared calculation function to determine strandedness - return calculateStrandedness(forwardFragments, reverseFragments, undeterminedFragments, threshold) + return calculateStrandedness(forwardFragments, reverseFragments, unstrandedFragments, stranded_threshold, unstranded_threshold) } // From 62ed423cfea599f7a86a83cbf8e13d0cdfb7a66e Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Tue, 18 Jun 2024 13:14:40 +0100 Subject: [PATCH 353/634] Allow for missing keys in salmon library counts for testing --- .../local/utils_nfcore_rnaseq_pipeline/main.nf | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/subworkflows/local/utils_nfcore_rnaseq_pipeline/main.nf b/subworkflows/local/utils_nfcore_rnaseq_pipeline/main.nf index 5382a11c5..a4f330adf 100644 --- a/subworkflows/local/utils_nfcore_rnaseq_pipeline/main.nf +++ b/subworkflows/local/utils_nfcore_rnaseq_pipeline/main.nf @@ -589,15 +589,19 @@ def getSalmonInferredStrandedness(json_file, stranded_threshold = 0.8, unstrande def libCounts = new JsonSlurper().parseText(json_file.text) // Calculate the counts for forward and reverse strand fragments - def forwardFragments = libCounts['SF'] + libCounts['ISF'] + libCounts['MSF'] + libCounts['OSF'] - def reverseFragments = libCounts['SR'] + libCounts['ISR'] + libCounts['MSR'] + libCounts['OSR'] + def forwardKeys = ['SF', 'ISF', 'MSF', 'OSF'] + def reverseKeys = ['SR', 'ISR', 'MSR', 'OSR'] // Calculate unstranded fragments (IU and U) // NOTE: this is here for completeness, but actually all fragments have a // strandedness (even if the overall library does not), so all these values // will be '0'. See // https://groups.google.com/g/sailfish-users/c/yxzBDv6NB6I - def unstrandedFragments = libCounts['IU'] + libCounts['U'] + libCounts['MU'] + def unstrandedKeys = ['IU', 'U', 'MU'] + + def forwardFragments = forwardKeys.collect { libCounts[it] ?: 0 }.sum() + def reverseFragments = reverseKeys.collect { libCounts[it] ?: 0 }.sum() + def unstrandedFragments = unstrandedKeys.collect { libCounts[it] ?: 0 }.sum() // Use shared calculation function to determine strandedness return calculateStrandedness(forwardFragments, reverseFragments, unstrandedFragments, stranded_threshold, unstranded_threshold) From b4760ce02b6fa2202989b3ed102b3f03c604dcff Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Tue, 18 Jun 2024 13:15:12 +0100 Subject: [PATCH 354/634] Fix function tests --- .../tests/main.function.nf.test | 33 +- .../tests/main.function.nf.test.snap | 532 ++++++++++++------ 2 files changed, 393 insertions(+), 172 deletions(-) diff --git a/subworkflows/local/utils_nfcore_rnaseq_pipeline/tests/main.function.nf.test b/subworkflows/local/utils_nfcore_rnaseq_pipeline/tests/main.function.nf.test index 4d76295df..d1f904e8d 100644 --- a/subworkflows/local/utils_nfcore_rnaseq_pipeline/tests/main.function.nf.test +++ b/subworkflows/local/utils_nfcore_rnaseq_pipeline/tests/main.function.nf.test @@ -391,7 +391,6 @@ nextflow_function { } - test("Test Function getSalmonInferredStrandedness unstranded") { function "getSalmonInferredStrandedness" @@ -401,15 +400,21 @@ nextflow_function { """ import groovy.json.JsonOutput + // Define the JSON contents for the test def json_contents = JsonOutput.toJson([ - library_types: [ - "U" - ] + "SF": 0, + "SR": 0, + "ISF": 100, + "ISR": 100, + "IU": 0, + "U": 0 ]) def jsonFile = file("${workDir}/salmonUnstranded.json") jsonFile.write(json_contents) input[0] = jsonFile + input[1] = 0.8 + input[2] = 0.1 """ } } @@ -433,9 +438,12 @@ nextflow_function { import groovy.json.JsonOutput def json_contents = JsonOutput.toJson([ - library_types: [ - "SF" - ] + "SF": 0, + "SR": 0, + "ISF": 100, + "ISR": 0, + "IU": 0, + "U": 0 ]) def jsonFile = file("${workDir}/salmonForward.json") jsonFile.write(json_contents) @@ -464,9 +472,12 @@ nextflow_function { import groovy.json.JsonOutput def json_contents = JsonOutput.toJson([ - library_types: [ - "SR" - ] + "SF": 0, + "SR": 0, + "ISF": 0, + "ISR": 100, + "IU": 0, + "U": 0 ]) def jsonFile = file("${workDir}/salmonReverse.json") jsonFile.write(json_contents) @@ -584,7 +595,7 @@ nextflow_function { } - test("Test Function getInferexperimentStrandedness") { + test("Test Function getInferexperimentStrandedness reverse") { function "getInferexperimentStrandedness" diff --git a/subworkflows/local/utils_nfcore_rnaseq_pipeline/tests/main.function.nf.test.snap b/subworkflows/local/utils_nfcore_rnaseq_pipeline/tests/main.function.nf.test.snap index ebd318d68..2a9586b91 100644 --- a/subworkflows/local/utils_nfcore_rnaseq_pipeline/tests/main.function.nf.test.snap +++ b/subworkflows/local/utils_nfcore_rnaseq_pipeline/tests/main.function.nf.test.snap @@ -1,21 +1,79 @@ { - "Test Function gtfGffWarn": { - "content": null, + "Test Function checkSamplesAfterGrouping invalid endedness": [ + [ + "execution_report_2024-06-18_12-41-20.html:md5,7f1fb0c459b4248ddee2e774460622c4", + "execution_timeline_2024-06-18_12-41-20.html:md5,b9af3d34d5ca4c25d4dbf338742fbab8", + "execution_trace_2024-04-22_18-48-28.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-05-30_16-13-37.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-05-30_16-15-27.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-41-20.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-42-01.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-42-34.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-43-18.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-45-39.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-46-09.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-46-56.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-47-34.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-49-28.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-50-19.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-52-44.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "pipeline_dag_2024-06-18_12-41-20.html:md5,a34dde54205547b2f74a814976b9eb24" + ] + ], + "Test Function gtfGffWarn": [ + [ + "execution_report_2024-06-18_12-41-20.html:md5,7f1fb0c459b4248ddee2e774460622c4", + "execution_timeline_2024-06-18_12-41-20.html:md5,b9af3d34d5ca4c25d4dbf338742fbab8", + "execution_trace_2024-04-22_18-48-28.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-05-30_16-13-37.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-05-30_16-15-27.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-41-20.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-42-01.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-42-34.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-43-18.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-45-39.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-46-09.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-46-56.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-47-34.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-49-28.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-50-19.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-52-44.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "pipeline_dag_2024-06-18_12-41-20.html:md5,a34dde54205547b2f74a814976b9eb24" + ] + ], + "Test Function biotypeInGtf success": { + "content": [ + true + ], "meta": { "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-03-06T14:33:11.163299" + "timestamp": "2024-06-18T13:13:47.34837" }, - "Test Function biotypeInGtf success": { + "Test Function checkSamplesAfterGrouping success": { "content": [ - true + [ + { + "id": "test", + "strandedness": "unstranded", + "single_end": true + }, + [ + [ + "/ngi-igenomes/testdata/nf-core/modules/genomics/sarscov2/illumina/fastq/test_1.fastq.gz" + ], + [ + "/ngi-igenomes/testdata/nf-core/modules/genomics/sarscov2/illumina/fastq/test_1.fastq.gz" + ] + ] + ] ], "meta": { "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-03-06T14:34:03.414382" + "timestamp": "2024-06-18T13:10:27.043746" }, "Test Function toolBibliographyText": { "content": [ @@ -25,7 +83,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-03-06T14:33:07.698845" + "timestamp": "2024-06-18T13:11:26.247587" }, "Test Function toolCitationText": { "content": [ @@ -35,43 +93,58 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-03-06T14:33:04.677913" - }, - "Test Function rsemUmiError": { - "content": null, - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-03-06T14:33:26.903306" + "timestamp": "2024-06-18T13:11:18.036509" }, + "Test Function rsemUmiError": [ + [ + "execution_report_2024-06-18_12-41-20.html:md5,7f1fb0c459b4248ddee2e774460622c4", + "execution_timeline_2024-06-18_12-41-20.html:md5,b9af3d34d5ca4c25d4dbf338742fbab8", + "execution_trace_2024-04-22_18-48-28.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-05-30_16-13-37.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-05-30_16-15-27.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-41-20.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-42-01.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-42-34.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-43-18.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-45-39.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-46-09.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-46-56.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-47-34.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-49-28.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-50-19.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-52-44.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "pipeline_dag_2024-06-18_12-41-20.html:md5,a34dde54205547b2f74a814976b9eb24" + ] + ], "Test Function getSalmonInferredStrandedness unstranded": { "content": [ - "unstranded" + { + "inferred_strandedness": "unstranded", + "forwardFragments": 0.5, + "reverseFragments": 0.5, + "unstrandedFragments": 0.0 + } ], "meta": { "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-03-06T14:33:46.772392" - }, - "Test Function checkSamplesAfterGrouping invalid strandedness": { - "content": null, - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-03-06T14:32:41.841561" + "timestamp": "2024-06-18T13:13:05.924663" }, "Test Function getSalmonInferredStrandedness reverse": { "content": [ - "reverse" + { + "inferred_strandedness": "reverse", + "forwardFragments": 0.0, + "reverseFragments": 1.0, + "unstrandedFragments": 0.0 + } ], "meta": { "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-03-06T14:33:52.860997" + "timestamp": "2024-06-18T13:13:22.16482" }, "Test Function biotypeInGtf failed": { "content": [ @@ -81,40 +154,113 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-03-06T14:34:07.750259" - }, - "Test Function transcriptsFastaWarn": { - "content": null, - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-03-06T14:33:20.618971" - }, - "Test Function ucscGenomeWarn": { - "content": null, - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-03-06T14:33:17.405648" - }, - "Test Function skipAlignmentWarn": { - "content": null, - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-03-06T14:33:23.76368" - }, - "Test Function checkMaxContigSize": { - "content": null, - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-03-06T14:33:40.548126" + "timestamp": "2024-06-18T13:13:56.573221" }, + "Test Function checkSamplesAfterGrouping invalid strandedness": [ + [ + "execution_report_2024-06-18_12-41-20.html:md5,7f1fb0c459b4248ddee2e774460622c4", + "execution_timeline_2024-06-18_12-41-20.html:md5,b9af3d34d5ca4c25d4dbf338742fbab8", + "execution_trace_2024-04-22_18-48-28.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-05-30_16-13-37.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-05-30_16-15-27.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-41-20.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-42-01.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-42-34.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-43-18.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-45-39.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-46-09.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-46-56.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-47-34.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-49-28.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-50-19.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-52-44.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "pipeline_dag_2024-06-18_12-41-20.html:md5,a34dde54205547b2f74a814976b9eb24" + ] + ], + "Test Function transcriptsFastaWarn": [ + [ + "execution_report_2024-06-18_12-41-20.html:md5,7f1fb0c459b4248ddee2e774460622c4", + "execution_timeline_2024-06-18_12-41-20.html:md5,b9af3d34d5ca4c25d4dbf338742fbab8", + "execution_trace_2024-04-22_18-48-28.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-05-30_16-13-37.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-05-30_16-15-27.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-41-20.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-42-01.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-42-34.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-43-18.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-45-39.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-46-09.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-46-56.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-47-34.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-49-28.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-50-19.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-52-44.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "pipeline_dag_2024-06-18_12-41-20.html:md5,a34dde54205547b2f74a814976b9eb24" + ] + ], + "Test Function ucscGenomeWarn": [ + [ + "execution_report_2024-06-18_12-41-20.html:md5,7f1fb0c459b4248ddee2e774460622c4", + "execution_timeline_2024-06-18_12-41-20.html:md5,b9af3d34d5ca4c25d4dbf338742fbab8", + "execution_trace_2024-04-22_18-48-28.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-05-30_16-13-37.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-05-30_16-15-27.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-41-20.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-42-01.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-42-34.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-43-18.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-45-39.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-46-09.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-46-56.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-47-34.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-49-28.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-50-19.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-52-44.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "pipeline_dag_2024-06-18_12-41-20.html:md5,a34dde54205547b2f74a814976b9eb24" + ] + ], + "Test Function skipAlignmentWarn": [ + [ + "execution_report_2024-06-18_12-41-20.html:md5,7f1fb0c459b4248ddee2e774460622c4", + "execution_timeline_2024-06-18_12-41-20.html:md5,b9af3d34d5ca4c25d4dbf338742fbab8", + "execution_trace_2024-04-22_18-48-28.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-05-30_16-13-37.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-05-30_16-15-27.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-41-20.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-42-01.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-42-34.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-43-18.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-45-39.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-46-09.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-46-56.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-47-34.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-49-28.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-50-19.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-52-44.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "pipeline_dag_2024-06-18_12-41-20.html:md5,a34dde54205547b2f74a814976b9eb24" + ] + ], + "Test Function checkMaxContigSize": [ + [ + "execution_report_2024-06-18_12-41-20.html:md5,7f1fb0c459b4248ddee2e774460622c4", + "execution_timeline_2024-06-18_12-41-20.html:md5,b9af3d34d5ca4c25d4dbf338742fbab8", + "execution_trace_2024-04-22_18-48-28.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-05-30_16-13-37.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-05-30_16-15-27.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-41-20.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-42-01.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-42-34.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-43-18.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-45-39.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-46-09.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-46-56.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-47-34.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-49-28.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-50-19.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-52-44.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "pipeline_dag_2024-06-18_12-41-20.html:md5,a34dde54205547b2f74a814976b9eb24" + ] + ], "Test Function multiqcTsvFromList": { "content": [ "id\tattribute\ntest\nvalue" @@ -123,119 +269,183 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-03-06T14:33:43.671826" + "timestamp": "2024-06-18T13:12:57.654517" }, - "Test Function checkSamplesAfterGrouping success": { + "Test Function genomeExistsError finds genome": [ + [ + "execution_report_2024-06-18_12-41-20.html:md5,7f1fb0c459b4248ddee2e774460622c4", + "execution_timeline_2024-06-18_12-41-20.html:md5,b9af3d34d5ca4c25d4dbf338742fbab8", + "execution_trace_2024-04-22_18-48-28.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-05-30_16-13-37.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-05-30_16-15-27.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-41-20.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-42-01.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-42-34.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-43-18.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-45-39.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-46-09.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-46-56.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-47-34.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-49-28.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-50-19.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-52-44.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "pipeline_dag_2024-06-18_12-41-20.html:md5,a34dde54205547b2f74a814976b9eb24" + ] + ], + "Test Function additionaFastaIndexWarn": [ + [ + "execution_report_2024-06-18_12-41-20.html:md5,7f1fb0c459b4248ddee2e774460622c4", + "execution_timeline_2024-06-18_12-41-20.html:md5,b9af3d34d5ca4c25d4dbf338742fbab8", + "execution_trace_2024-04-22_18-48-28.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-05-30_16-13-37.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-05-30_16-15-27.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-41-20.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-42-01.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-42-34.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-43-18.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-45-39.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-46-09.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-46-56.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-47-34.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-49-28.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-50-19.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-52-44.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "pipeline_dag_2024-06-18_12-41-20.html:md5,a34dde54205547b2f74a814976b9eb24" + ] + ], + "Test Function genomeExistsError missing genome": [ + [ + "execution_report_2024-06-18_12-41-20.html:md5,7f1fb0c459b4248ddee2e774460622c4", + "execution_timeline_2024-06-18_12-41-20.html:md5,b9af3d34d5ca4c25d4dbf338742fbab8", + "execution_trace_2024-04-22_18-48-28.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-05-30_16-13-37.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-05-30_16-15-27.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-41-20.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-42-01.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-42-34.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-43-18.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-45-39.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-46-09.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-46-56.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-47-34.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-49-28.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-50-19.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-52-44.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "pipeline_dag_2024-06-18_12-41-20.html:md5,a34dde54205547b2f74a814976b9eb24" + ] + ], + "Test Function ncbiGenomeWarn": [ + [ + "execution_report_2024-06-18_12-41-20.html:md5,7f1fb0c459b4248ddee2e774460622c4", + "execution_timeline_2024-06-18_12-41-20.html:md5,b9af3d34d5ca4c25d4dbf338742fbab8", + "execution_trace_2024-04-22_18-48-28.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-05-30_16-13-37.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-05-30_16-15-27.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-41-20.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-42-01.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-42-34.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-43-18.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-45-39.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-46-09.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-46-56.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-47-34.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-49-28.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-50-19.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-52-44.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "pipeline_dag_2024-06-18_12-41-20.html:md5,a34dde54205547b2f74a814976b9eb24" + ] + ], + "Test Function rsemStarExtraArgumentsWarn": [ + [ + "execution_report_2024-06-18_12-41-20.html:md5,7f1fb0c459b4248ddee2e774460622c4", + "execution_timeline_2024-06-18_12-41-20.html:md5,b9af3d34d5ca4c25d4dbf338742fbab8", + "execution_trace_2024-04-22_18-48-28.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-05-30_16-13-37.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-05-30_16-15-27.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-41-20.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-42-01.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-42-34.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-43-18.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-45-39.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-46-09.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-46-56.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-47-34.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-49-28.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-50-19.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-52-44.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "pipeline_dag_2024-06-18_12-41-20.html:md5,a34dde54205547b2f74a814976b9eb24" + ] + ], + "Test Function getInferexperimentStrandedness reverse": { "content": [ - [ - { - "id": "test", - "strandedness": "unstranded", - "single_end": true - }, - [ - [ - "/ngi-igenomes/testdata/nf-core/modules/genomics/sarscov2/illumina/fastq/test_1.fastq.gz" - ], - [ - "/ngi-igenomes/testdata/nf-core/modules/genomics/sarscov2/illumina/fastq/test_1.fastq.gz" - ] - ] - ] + { + "inferred_strandedness": "reverse", + "forwardFragments": 0.0074992500657742505, + "reverseFragments": 0.8360163982823675, + "unstrandedFragments": 0.1564843516518582 + } ], "meta": { "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-03-06T14:32:37.450298" - }, - "Test Function checkSamplesAfterGrouping invalid endedness": { - "content": null, - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-03-06T14:32:46.420194" - }, - "Test Function genomeExistsError finds genome": { - "content": null, - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-03-06T14:32:58.626473" - }, - "Test Function additionaFastaIndexWarn": { - "content": null, - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-03-06T14:33:36.224496" - }, - "Test Function genomeExistsError missing genome": { - "content": null, - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-03-06T14:33:01.625542" - }, - "Test Function ncbiGenomeWarn": { - "content": null, - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-03-06T14:33:14.286665" - }, - "Test Function rsemStarExtraArgumentsWarn": { - "content": null, - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-03-06T14:33:33.141215" - }, - "Test Function validateInputParameters success": { - "content": null, - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-03-06T14:32:49.565504" + "timestamp": "2024-06-18T13:14:04.695285" }, + "Test Function validateInputParameters success": [ + [ + "execution_report_2024-06-18_12-41-20.html:md5,7f1fb0c459b4248ddee2e774460622c4", + "execution_timeline_2024-06-18_12-41-20.html:md5,b9af3d34d5ca4c25d4dbf338742fbab8", + "execution_trace_2024-04-22_18-48-28.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-05-30_16-13-37.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-05-30_16-15-27.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-41-20.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-42-01.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-42-34.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-43-18.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-45-39.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-46-09.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-46-56.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-47-34.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-49-28.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-50-19.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-52-44.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "pipeline_dag_2024-06-18_12-41-20.html:md5,a34dde54205547b2f74a814976b9eb24" + ] + ], "Test Function getSalmonInferredStrandedness forward": { "content": [ - "forward" + { + "inferred_strandedness": "forward", + "forwardFragments": 1.0, + "reverseFragments": 0.0, + "unstrandedFragments": 0.0 + } ], "meta": { "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-03-06T14:33:49.794775" + "timestamp": "2024-06-18T13:13:14.043488" }, - "Test Function rsemStarIndexWarn": { - "content": null, - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-03-06T14:33:30.02058" - }, - "Test Function getInferexperimentStrandedness": { - "content": [ - [ - "reverse", - 0.7499999832361937, - 83.60999822616577, - 15.649999678134918 - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-03-06T14:34:10.929416" - } -} + "Test Function rsemStarIndexWarn": [ + [ + "execution_report_2024-06-18_12-41-20.html:md5,7f1fb0c459b4248ddee2e774460622c4", + "execution_timeline_2024-06-18_12-41-20.html:md5,b9af3d34d5ca4c25d4dbf338742fbab8", + "execution_trace_2024-04-22_18-48-28.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-05-30_16-13-37.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-05-30_16-15-27.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-41-20.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-42-01.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-42-34.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-43-18.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-45-39.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-46-09.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-46-56.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-47-34.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-49-28.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-50-19.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "execution_trace_2024-06-18_12-52-44.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", + "pipeline_dag_2024-06-18_12-41-20.html:md5,a34dde54205547b2f74a814976b9eb24" + ] + ] +} \ No newline at end of file From 1bddbfb6650ba1935332a80c5c132efb5228e36a Mon Sep 17 00:00:00 2001 From: Adam Talbot <12817534+adamrtalbot@users.noreply.github.com> Date: Tue, 18 Jun 2024 14:01:45 +0100 Subject: [PATCH 355/634] Update ci.yml --- .github/workflows/ci.yml | 5 ----- 1 file changed, 5 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 16ccbe6c3..22c410430 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,12 +1,7 @@ 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] env: NXF_ANSI_LOG: false From 2ded8c046bf1a725908930da39a49f0e29e85f1b Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Tue, 18 Jun 2024 14:37:49 +0100 Subject: [PATCH 356/634] Auto updating snapshot broke things for unaffected tests. So manually insert snapshots from the only tests I do want to update --- .../tests/main.function.nf.test | 6 + .../tests/main.function.nf.test.snap | 511 ++++++------------ 2 files changed, 164 insertions(+), 353 deletions(-) diff --git a/subworkflows/local/utils_nfcore_rnaseq_pipeline/tests/main.function.nf.test b/subworkflows/local/utils_nfcore_rnaseq_pipeline/tests/main.function.nf.test index d1f904e8d..2e71f9990 100644 --- a/subworkflows/local/utils_nfcore_rnaseq_pipeline/tests/main.function.nf.test +++ b/subworkflows/local/utils_nfcore_rnaseq_pipeline/tests/main.function.nf.test @@ -449,6 +449,8 @@ nextflow_function { jsonFile.write(json_contents) input[0] = jsonFile + input[1] = 0.8 + input[2] = 0.1 """ } } @@ -483,6 +485,8 @@ nextflow_function { jsonFile.write(json_contents) input[0] = jsonFile + input[1] = 0.8 + input[2] = 0.1 """ } } @@ -614,6 +618,8 @@ nextflow_function { } input[0] = inferExperimentFile + input[1] = 0.8 + input[2] = 0.1 """ } } diff --git a/subworkflows/local/utils_nfcore_rnaseq_pipeline/tests/main.function.nf.test.snap b/subworkflows/local/utils_nfcore_rnaseq_pipeline/tests/main.function.nf.test.snap index 2a9586b91..05439458d 100644 --- a/subworkflows/local/utils_nfcore_rnaseq_pipeline/tests/main.function.nf.test.snap +++ b/subworkflows/local/utils_nfcore_rnaseq_pipeline/tests/main.function.nf.test.snap @@ -1,79 +1,21 @@ { - "Test Function checkSamplesAfterGrouping invalid endedness": [ - [ - "execution_report_2024-06-18_12-41-20.html:md5,7f1fb0c459b4248ddee2e774460622c4", - "execution_timeline_2024-06-18_12-41-20.html:md5,b9af3d34d5ca4c25d4dbf338742fbab8", - "execution_trace_2024-04-22_18-48-28.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-05-30_16-13-37.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-05-30_16-15-27.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-41-20.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-42-01.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-42-34.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-43-18.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-45-39.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-46-09.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-46-56.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-47-34.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-49-28.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-50-19.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-52-44.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "pipeline_dag_2024-06-18_12-41-20.html:md5,a34dde54205547b2f74a814976b9eb24" - ] - ], - "Test Function gtfGffWarn": [ - [ - "execution_report_2024-06-18_12-41-20.html:md5,7f1fb0c459b4248ddee2e774460622c4", - "execution_timeline_2024-06-18_12-41-20.html:md5,b9af3d34d5ca4c25d4dbf338742fbab8", - "execution_trace_2024-04-22_18-48-28.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-05-30_16-13-37.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-05-30_16-15-27.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-41-20.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-42-01.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-42-34.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-43-18.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-45-39.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-46-09.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-46-56.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-47-34.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-49-28.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-50-19.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-52-44.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "pipeline_dag_2024-06-18_12-41-20.html:md5,a34dde54205547b2f74a814976b9eb24" - ] - ], - "Test Function biotypeInGtf success": { - "content": [ - true - ], + "Test Function gtfGffWarn": { + "content": null, "meta": { "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-06-18T13:13:47.34837" + "timestamp": "2024-03-06T14:33:11.163299" }, - "Test Function checkSamplesAfterGrouping success": { + "Test Function biotypeInGtf success": { "content": [ - [ - { - "id": "test", - "strandedness": "unstranded", - "single_end": true - }, - [ - [ - "/ngi-igenomes/testdata/nf-core/modules/genomics/sarscov2/illumina/fastq/test_1.fastq.gz" - ], - [ - "/ngi-igenomes/testdata/nf-core/modules/genomics/sarscov2/illumina/fastq/test_1.fastq.gz" - ] - ] - ] + true ], "meta": { "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-06-18T13:10:27.043746" + "timestamp": "2024-03-06T14:34:03.414382" }, "Test Function toolBibliographyText": { "content": [ @@ -83,7 +25,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-06-18T13:11:26.247587" + "timestamp": "2024-03-06T14:33:07.698845" }, "Test Function toolCitationText": { "content": [ @@ -93,29 +35,16 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-06-18T13:11:18.036509" + "timestamp": "2024-03-06T14:33:04.677913" + }, + "Test Function rsemUmiError": { + "content": null, + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-03-06T14:33:26.903306" }, - "Test Function rsemUmiError": [ - [ - "execution_report_2024-06-18_12-41-20.html:md5,7f1fb0c459b4248ddee2e774460622c4", - "execution_timeline_2024-06-18_12-41-20.html:md5,b9af3d34d5ca4c25d4dbf338742fbab8", - "execution_trace_2024-04-22_18-48-28.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-05-30_16-13-37.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-05-30_16-15-27.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-41-20.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-42-01.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-42-34.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-43-18.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-45-39.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-46-09.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-46-56.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-47-34.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-49-28.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-50-19.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-52-44.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "pipeline_dag_2024-06-18_12-41-20.html:md5,a34dde54205547b2f74a814976b9eb24" - ] - ], "Test Function getSalmonInferredStrandedness unstranded": { "content": [ { @@ -129,7 +58,7 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-06-18T13:13:05.924663" + "timestamp": "2024-06-18T14:29:54.96715" }, "Test Function getSalmonInferredStrandedness reverse": { "content": [ @@ -144,7 +73,15 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-06-18T13:13:22.16482" + "timestamp": "2024-06-18T14:30:11.417381" + }, + "Test Function checkSamplesAfterGrouping invalid strandedness": { + "content": null, + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-03-06T14:32:41.841561" }, "Test Function biotypeInGtf failed": { "content": [ @@ -154,113 +91,40 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-06-18T13:13:56.573221" + "timestamp": "2024-03-06T14:34:07.750259" + }, + "Test Function transcriptsFastaWarn": { + "content": null, + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-03-06T14:33:20.618971" + }, + "Test Function ucscGenomeWarn": { + "content": null, + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-03-06T14:33:17.405648" + }, + "Test Function skipAlignmentWarn": { + "content": null, + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-03-06T14:33:23.76368" + }, + "Test Function checkMaxContigSize": { + "content": null, + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-03-06T14:33:40.548126" }, - "Test Function checkSamplesAfterGrouping invalid strandedness": [ - [ - "execution_report_2024-06-18_12-41-20.html:md5,7f1fb0c459b4248ddee2e774460622c4", - "execution_timeline_2024-06-18_12-41-20.html:md5,b9af3d34d5ca4c25d4dbf338742fbab8", - "execution_trace_2024-04-22_18-48-28.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-05-30_16-13-37.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-05-30_16-15-27.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-41-20.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-42-01.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-42-34.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-43-18.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-45-39.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-46-09.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-46-56.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-47-34.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-49-28.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-50-19.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-52-44.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "pipeline_dag_2024-06-18_12-41-20.html:md5,a34dde54205547b2f74a814976b9eb24" - ] - ], - "Test Function transcriptsFastaWarn": [ - [ - "execution_report_2024-06-18_12-41-20.html:md5,7f1fb0c459b4248ddee2e774460622c4", - "execution_timeline_2024-06-18_12-41-20.html:md5,b9af3d34d5ca4c25d4dbf338742fbab8", - "execution_trace_2024-04-22_18-48-28.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-05-30_16-13-37.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-05-30_16-15-27.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-41-20.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-42-01.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-42-34.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-43-18.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-45-39.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-46-09.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-46-56.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-47-34.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-49-28.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-50-19.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-52-44.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "pipeline_dag_2024-06-18_12-41-20.html:md5,a34dde54205547b2f74a814976b9eb24" - ] - ], - "Test Function ucscGenomeWarn": [ - [ - "execution_report_2024-06-18_12-41-20.html:md5,7f1fb0c459b4248ddee2e774460622c4", - "execution_timeline_2024-06-18_12-41-20.html:md5,b9af3d34d5ca4c25d4dbf338742fbab8", - "execution_trace_2024-04-22_18-48-28.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-05-30_16-13-37.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-05-30_16-15-27.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-41-20.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-42-01.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-42-34.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-43-18.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-45-39.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-46-09.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-46-56.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-47-34.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-49-28.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-50-19.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-52-44.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "pipeline_dag_2024-06-18_12-41-20.html:md5,a34dde54205547b2f74a814976b9eb24" - ] - ], - "Test Function skipAlignmentWarn": [ - [ - "execution_report_2024-06-18_12-41-20.html:md5,7f1fb0c459b4248ddee2e774460622c4", - "execution_timeline_2024-06-18_12-41-20.html:md5,b9af3d34d5ca4c25d4dbf338742fbab8", - "execution_trace_2024-04-22_18-48-28.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-05-30_16-13-37.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-05-30_16-15-27.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-41-20.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-42-01.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-42-34.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-43-18.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-45-39.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-46-09.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-46-56.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-47-34.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-49-28.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-50-19.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-52-44.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "pipeline_dag_2024-06-18_12-41-20.html:md5,a34dde54205547b2f74a814976b9eb24" - ] - ], - "Test Function checkMaxContigSize": [ - [ - "execution_report_2024-06-18_12-41-20.html:md5,7f1fb0c459b4248ddee2e774460622c4", - "execution_timeline_2024-06-18_12-41-20.html:md5,b9af3d34d5ca4c25d4dbf338742fbab8", - "execution_trace_2024-04-22_18-48-28.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-05-30_16-13-37.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-05-30_16-15-27.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-41-20.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-42-01.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-42-34.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-43-18.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-45-39.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-46-09.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-46-56.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-47-34.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-49-28.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-50-19.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-52-44.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "pipeline_dag_2024-06-18_12-41-20.html:md5,a34dde54205547b2f74a814976b9eb24" - ] - ], "Test Function multiqcTsvFromList": { "content": [ "id\tattribute\ntest\nvalue" @@ -269,149 +133,88 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-06-18T13:12:57.654517" + "timestamp": "2024-03-06T14:33:43.671826" }, - "Test Function genomeExistsError finds genome": [ - [ - "execution_report_2024-06-18_12-41-20.html:md5,7f1fb0c459b4248ddee2e774460622c4", - "execution_timeline_2024-06-18_12-41-20.html:md5,b9af3d34d5ca4c25d4dbf338742fbab8", - "execution_trace_2024-04-22_18-48-28.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-05-30_16-13-37.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-05-30_16-15-27.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-41-20.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-42-01.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-42-34.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-43-18.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-45-39.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-46-09.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-46-56.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-47-34.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-49-28.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-50-19.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-52-44.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "pipeline_dag_2024-06-18_12-41-20.html:md5,a34dde54205547b2f74a814976b9eb24" - ] - ], - "Test Function additionaFastaIndexWarn": [ - [ - "execution_report_2024-06-18_12-41-20.html:md5,7f1fb0c459b4248ddee2e774460622c4", - "execution_timeline_2024-06-18_12-41-20.html:md5,b9af3d34d5ca4c25d4dbf338742fbab8", - "execution_trace_2024-04-22_18-48-28.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-05-30_16-13-37.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-05-30_16-15-27.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-41-20.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-42-01.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-42-34.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-43-18.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-45-39.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-46-09.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-46-56.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-47-34.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-49-28.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-50-19.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-52-44.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "pipeline_dag_2024-06-18_12-41-20.html:md5,a34dde54205547b2f74a814976b9eb24" - ] - ], - "Test Function genomeExistsError missing genome": [ - [ - "execution_report_2024-06-18_12-41-20.html:md5,7f1fb0c459b4248ddee2e774460622c4", - "execution_timeline_2024-06-18_12-41-20.html:md5,b9af3d34d5ca4c25d4dbf338742fbab8", - "execution_trace_2024-04-22_18-48-28.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-05-30_16-13-37.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-05-30_16-15-27.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-41-20.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-42-01.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-42-34.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-43-18.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-45-39.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-46-09.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-46-56.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-47-34.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-49-28.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-50-19.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-52-44.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "pipeline_dag_2024-06-18_12-41-20.html:md5,a34dde54205547b2f74a814976b9eb24" - ] - ], - "Test Function ncbiGenomeWarn": [ - [ - "execution_report_2024-06-18_12-41-20.html:md5,7f1fb0c459b4248ddee2e774460622c4", - "execution_timeline_2024-06-18_12-41-20.html:md5,b9af3d34d5ca4c25d4dbf338742fbab8", - "execution_trace_2024-04-22_18-48-28.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-05-30_16-13-37.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-05-30_16-15-27.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-41-20.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-42-01.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-42-34.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-43-18.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-45-39.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-46-09.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-46-56.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-47-34.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-49-28.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-50-19.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-52-44.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "pipeline_dag_2024-06-18_12-41-20.html:md5,a34dde54205547b2f74a814976b9eb24" - ] - ], - "Test Function rsemStarExtraArgumentsWarn": [ - [ - "execution_report_2024-06-18_12-41-20.html:md5,7f1fb0c459b4248ddee2e774460622c4", - "execution_timeline_2024-06-18_12-41-20.html:md5,b9af3d34d5ca4c25d4dbf338742fbab8", - "execution_trace_2024-04-22_18-48-28.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-05-30_16-13-37.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-05-30_16-15-27.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-41-20.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-42-01.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-42-34.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-43-18.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-45-39.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-46-09.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-46-56.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-47-34.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-49-28.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-50-19.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-52-44.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "pipeline_dag_2024-06-18_12-41-20.html:md5,a34dde54205547b2f74a814976b9eb24" - ] - ], - "Test Function getInferexperimentStrandedness reverse": { + "Test Function checkSamplesAfterGrouping success": { "content": [ - { - "inferred_strandedness": "reverse", - "forwardFragments": 0.0074992500657742505, - "reverseFragments": 0.8360163982823675, - "unstrandedFragments": 0.1564843516518582 - } + [ + { + "id": "test", + "strandedness": "unstranded", + "single_end": true + }, + [ + [ + "/ngi-igenomes/testdata/nf-core/modules/genomics/sarscov2/illumina/fastq/test_1.fastq.gz" + ], + [ + "/ngi-igenomes/testdata/nf-core/modules/genomics/sarscov2/illumina/fastq/test_1.fastq.gz" + ] + ] + ] ], "meta": { "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-06-18T13:14:04.695285" + "timestamp": "2024-03-06T14:32:37.450298" + }, + "Test Function checkSamplesAfterGrouping invalid endedness": { + "content": null, + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-03-06T14:32:46.420194" + }, + "Test Function genomeExistsError finds genome": { + "content": null, + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-03-06T14:32:58.626473" + }, + "Test Function additionaFastaIndexWarn": { + "content": null, + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-03-06T14:33:36.224496" + }, + "Test Function genomeExistsError missing genome": { + "content": null, + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-03-06T14:33:01.625542" + }, + "Test Function ncbiGenomeWarn": { + "content": null, + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-03-06T14:33:14.286665" + }, + "Test Function rsemStarExtraArgumentsWarn": { + "content": null, + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-03-06T14:33:33.141215" + }, + "Test Function validateInputParameters success": { + "content": null, + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-03-06T14:32:49.565504" }, - "Test Function validateInputParameters success": [ - [ - "execution_report_2024-06-18_12-41-20.html:md5,7f1fb0c459b4248ddee2e774460622c4", - "execution_timeline_2024-06-18_12-41-20.html:md5,b9af3d34d5ca4c25d4dbf338742fbab8", - "execution_trace_2024-04-22_18-48-28.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-05-30_16-13-37.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-05-30_16-15-27.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-41-20.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-42-01.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-42-34.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-43-18.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-45-39.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-46-09.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-46-56.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-47-34.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-49-28.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-50-19.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-52-44.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "pipeline_dag_2024-06-18_12-41-20.html:md5,a34dde54205547b2f74a814976b9eb24" - ] - ], "Test Function getSalmonInferredStrandedness forward": { "content": [ { @@ -425,27 +228,29 @@ "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-06-18T13:13:14.043488" + "timestamp": "2024-06-18T14:30:03.301262" + }, + "Test Function rsemStarIndexWarn": { + "content": null, + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-03-06T14:33:30.02058" }, - "Test Function rsemStarIndexWarn": [ - [ - "execution_report_2024-06-18_12-41-20.html:md5,7f1fb0c459b4248ddee2e774460622c4", - "execution_timeline_2024-06-18_12-41-20.html:md5,b9af3d34d5ca4c25d4dbf338742fbab8", - "execution_trace_2024-04-22_18-48-28.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-05-30_16-13-37.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-05-30_16-15-27.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-41-20.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-42-01.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-42-34.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-43-18.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-45-39.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-46-09.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-46-56.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-47-34.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-49-28.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-50-19.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "execution_trace_2024-06-18_12-52-44.txt:md5,8ad4a81ac400f067841cbfb3f18e6889", - "pipeline_dag_2024-06-18_12-41-20.html:md5,a34dde54205547b2f74a814976b9eb24" - ] - ] -} \ No newline at end of file + "Test Function getInferexperimentStrandedness reverse": { + "content": [ + { + "inferred_strandedness": "reverse", + "forwardFragments": 0.0074992500657742505, + "reverseFragments": 0.8360163982823675, + "unstrandedFragments": 0.1564843516518582 + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-06-18T14:30:53.743529" + } +} From 7645c07ecbf1c9542d4f8514eb843266b2f341d5 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Tue, 18 Jun 2024 15:18:01 +0100 Subject: [PATCH 357/634] Add existence checks --- subworkflows/local/prepare_genome/main.nf | 24 +++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/subworkflows/local/prepare_genome/main.nf b/subworkflows/local/prepare_genome/main.nf index 393022ef7..9b7d9c597 100644 --- a/subworkflows/local/prepare_genome/main.nf +++ b/subworkflows/local/prepare_genome/main.nf @@ -70,10 +70,10 @@ workflow PREPARE_GENOME { // Uncompress genome fasta file if required // if (fasta.endsWith('.gz')) { - ch_fasta = GUNZIP_FASTA ( [ [:], file(fasta) ] ).gunzip.map { it[1] } + ch_fasta = GUNZIP_FASTA ( [ [:], file(fasta, checkIfExists: true) ] ).gunzip.map { it[1] } ch_versions = ch_versions.mix(GUNZIP_FASTA.out.versions) } else { - ch_fasta = Channel.value(file(fasta)) + ch_fasta = Channel.value(file(fasta, checkIfExists: true)) } // @@ -82,17 +82,17 @@ workflow PREPARE_GENOME { if (gtf || gff) { if (gtf) { if (gtf.endsWith('.gz')) { - ch_gtf = GUNZIP_GTF ( [ [:], file(gtf) ] ).gunzip.map { it[1] } + ch_gtf = GUNZIP_GTF ( [ [:], file(gtf, checkIfExists: true) ] ).gunzip.map { it[1] } ch_versions = ch_versions.mix(GUNZIP_GTF.out.versions) } else { - ch_gtf = Channel.value(file(gtf)) + ch_gtf = Channel.value(file(gtf, checkIfExists: true)) } } else if (gff) { if (gff.endsWith('.gz')) { - ch_gff = GUNZIP_GFF ( [ [:], file(gff) ] ).gunzip.map { it[1] } + ch_gff = GUNZIP_GFF ( [ [:], file(gff, checkIfExists: true) ] ).gunzip.map { it[1] } ch_versions = ch_versions.mix(GUNZIP_GFF.out.versions) } else { - ch_gff = Channel.value(file(gff)) + ch_gff = Channel.value(file(gff, checkIfExists: true)) } ch_gtf = GFFREAD ( ch_gff ).gtf ch_versions = ch_versions.mix(GFFREAD.out.versions) @@ -129,10 +129,10 @@ workflow PREPARE_GENOME { def biotype = gencode ? "gene_type" : featurecounts_group_type if (additional_fasta) { if (additional_fasta.endsWith('.gz')) { - ch_add_fasta = GUNZIP_ADDITIONAL_FASTA ( [ [:], file(additional_fasta) ] ).gunzip.map { it[1] } + ch_add_fasta = GUNZIP_ADDITIONAL_FASTA ( [ [:], file(additional_fasta, checkIfExists: true) ] ).gunzip.map { it[1] } ch_versions = ch_versions.mix(GUNZIP_ADDITIONAL_FASTA.out.versions) } else { - ch_add_fasta = Channel.value(file(additional_fasta)) + ch_add_fasta = Channel.value(file(additional_fasta, checkIfExists: true)) } CUSTOM_CATADDITIONALFASTA ( @@ -150,10 +150,10 @@ workflow PREPARE_GENOME { // if (gene_bed) { if (gene_bed.endsWith('.gz')) { - ch_gene_bed = GUNZIP_GENE_BED ( [ [:], file(gene_bed) ] ).gunzip.map { it[1] } + ch_gene_bed = GUNZIP_GENE_BED ( [ [:], file(gene_bed, checkIfExists: true) ] ).gunzip.map { it[1] } ch_versions = ch_versions.mix(GUNZIP_GENE_BED.out.versions) } else { - ch_gene_bed = Channel.value(file(gene_bed)) + ch_gene_bed = Channel.value(file(gene_bed, checkIfExists: true)) } } else { ch_gene_bed = GTF2BED ( ch_gtf ).bed @@ -165,10 +165,10 @@ workflow PREPARE_GENOME { // if (transcript_fasta) { if (transcript_fasta.endsWith('.gz')) { - ch_transcript_fasta = GUNZIP_TRANSCRIPT_FASTA ( [ [:], file(transcript_fasta) ] ).gunzip.map { it[1] } + ch_transcript_fasta = GUNZIP_TRANSCRIPT_FASTA ( [ [:], file(transcript_fasta, checkIfExists: true) ] ).gunzip.map { it[1] } ch_versions = ch_versions.mix(GUNZIP_TRANSCRIPT_FASTA.out.versions) } else { - ch_transcript_fasta = Channel.value(file(transcript_fasta)) + ch_transcript_fasta = Channel.value(file(transcript_fasta, checkIfExists: true)) } if (gencode) { PREPROCESS_TRANSCRIPTS_FASTA_GENCODE ( ch_transcript_fasta ) From 9640d17e62bb7834841d6a78c94525bc340136ab Mon Sep 17 00:00:00 2001 From: maxulysse Date: Tue, 18 Jun 2024 16:30:17 +0200 Subject: [PATCH 358/634] correct order --- docs/images/nf-core-rnaseq_metro_map_grey.png | Bin 301186 -> 301297 bytes docs/images/nf-core-rnaseq_metro_map_grey.svg | 8 ++++---- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/images/nf-core-rnaseq_metro_map_grey.png b/docs/images/nf-core-rnaseq_metro_map_grey.png index e867c2d170b5f0be7bb149d3d89806eafa232652..6a1754acd718da42ccef0407c1a28a437b900ce9 100644 GIT binary patch delta 248861 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

    0M`MQ3uB{j=)M;00YRY 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

    MPyQ zcaJ~lt&*&GSMfosbYX>Ts$uEU^%XUPGx*HETsOVeG{`x(MfSqHYaVPIjbny-6$NrF za&Lw&$xXHY(d*{z%@UOO@+h!$o{&hAz!ypEEz34Dr~8T?_8x%JkoGbs-$aF@lH(1q zegZy3?G+gL7Z~oOe6o`ZVAV)hBP^?;9YGka?wPuwdcBx|WtB z?-xMmBK7dMH2e3p4xE#aC~E$^Dct*U;VJALA*!IeWNtCzXi4`O&W~PqMYm{KJlv&d zkO++iW^g7GM+s@Tfcj>Pm|`gj6sEwf`(Yc_7mbQMlvDFl5`D(KI?Lq!0_-)ZQ7&`n zTK@hB^5$m~Vg;&p*snepDLbKdJnbz8vrlXp>d{`|cw1|InA+wJdo&dwO`! z*-n(p;+L&D((1o`)87?R`7j}#1R1bpmI$INM2R{m`#v_OC&2(t;!-z~_yAK{W&C;i z^v2K5Eek=tRjt!FYJtA#mHl6U6Pl&|{O>YS0VxS|n)$$kF+{4Vz%*ts2yej(#E zqYB@C504-z6M*aceE0**QdoCv2 zZ_LF(Z)0nl7|Awn3_yTi z6mKUeO@{cu4ODtox8X(qKH3)CfyC7~Mc^{Z_&dg?^YiAgmbHgL zTK*b1j&$J}Sh+7r@&`0#?op}b%a=p+Qf>GiAZ`~hEzwPzs+-gQ`*I@L|Ij}bpeUYl z+<`6J*OTS~#4p2h1^1a8#6TGyj{~$;ee#TEX!g6de%NKtHAcP`PU~?6H8sX}w}YTd zPovN7mQwSz+VRG<(TU`91d9Nx4C6SGYoN#@3nqXix{b~dSW;X!6h-$T3$Un3lcxAy zY$9RD5UYIm6^e9U{#9h9D_Q}H+6Fn=fLZYb|M&iB^UQlJw5-8SQ%ScWlR?*ABE~RG z*v7liLXr3mk)jDvJo`5l^Q||(Ou16Hei!JmFRCCAISauu-C}QD3(V-Rg9N% z9c9Ml8r49_qmU>6M7UENtj%ypgYhU}l)pH_@xr0)oduCB9*sIMloWaQ_5q_hhrW9V zTe=mG*1R^12Z|#%T*7`KLZZ=uU0Z)l08%*9HTq-6S73e*!i#OVZNNhU4$e68&ssxq zAa_6cN3wJJl|(ktW5pdtEcCc?$QU6<42scdl*94miIfjhBFo{*cJEED%b=8_!jGDL zjct>jUa+#;?Dmrn*SjFgxt9bFBv(Wx(OE;|G^XSfA|fF)sM0R|ZM$RIKZKu0KAtZ_ zt;X3mslA1W0IrKq^_$g^$O>ITHvpJ>c$6(F;ua!=W+pt|H*DB|l5Yu=vCx4RLZV^= zIMOlx_c+r;&A5~6^p?=>arU{)_jd&k17`%zd2$pG7?n@JEy8hl1_}fg=|*Wg4RtLh zDKm&#VdQfv=R7r(N{tc|1ineJGp= z4r23TSS+kd=)AT?X)EIQsxPG@K~geSKkoatZ{F}1%6{8|Et7{lN&s`V9E`dzaSW;! zxV#16Os>rQJ@?q61{)4IA)zdKZ186Yt?I~;ylIbn9b}nY=acd*r{#`%+6x;o8MckqemS*gPuh1J}o4nIh{UzwIqdw8y-3| z^BJx=6dI;Ms4h-Pjg9nb)Z{X`*J8x?i}6k)JucP+|NgWIlrU0sZ%p}44UN?yOHC&J z$L&?RQgfHCGMT~(uZMyz5St}~L5~e`a?i@kQ)8DPR%q>Gf5NB+Z*VVapVh=5eXm7UyDM&7> zpCcyb1*?LZE*Lvp)xA=3b<)qXW^6#2HyrPJ$!73PaA0rL}b(i<|67o`795F`G2}c4Q^-3_(@x&VvlwNh3Ka>$r&j7tjFFXOfe$|j4BE!dF6k7rQuk=}Q%amY z-nrIyH#$ss8pIvk->fPcWP%XYAt;0D>g%;6?62y4{`|Qz+eH?8z==++-|yKA@0qeu zOcMGwP}tDy+5B^lO3Rz5Yiq+#3`@AFS%I6HyhuZ8#$f`=eS{ilt-A9zo(qnodLtb4B$Hk0w6A?n#pu zXx)7e6-(0P3vbbc2r1p!E@NJz<+~H#)EUrn44C0H>v}3>hAj`~^@Llq#hP zrW;hmC47jKT10INpt+}HIC6fDS9+AEP#lV&>!UP{Va zwnFZwlrKuzdGHM&wI#HzU%~qp+^`ENHjgyU-iV}_vv?g##Kb036>2E8`sp$Ka0Jd` zG>1Z0RW2=fHu{ShJZ^bk>T)rq5R?6Fe9ljCAUOM)Gj7*po+1ZMx?A-6!Hk8q^bHJ9 zR3?Rtkc=3;Zu5`rPvH8> zk#tBs==IVGm_U5`??dD7TdUoyJ$y{!!Ho~>g;^ojJZ3~o^m3Nl2|i6tcDi-0RHdQd zXO8m9pvX$x333=Kd0wduXcwoI9>(8cG($RV@~@mJET4x0kOsqXB9ZDE9`aCbYen(# z@bK82Jn8A@$8aOm1va&?LR+LAqdNn>*k^Ndx6)~kvljrdORhXiE?ycM7m_5PfAy*m z1WSSm0`o(M6yhtMmzB-Fbm>y0VftExYMe#YxENh1<iRL1fzl!mHnn*Ako|N1&YeY;A0PW*o4p5HS@=YI z#l*zaUVR|G6RZ}HjB{ApbqFA#Dgy60=*pGJA!<{yjc0Ola^g@W%R<;WL(?;37Rm>7 zK;d|4;fprRoAB@m?}0OTkh=2k-tjsvpN@8jxQ@8}%nL2z*(zN)wA4J#ottD?5$BK6 z<32RS15%Ha@DlIBz>5kp;6LV_c4{}Z#l2EfWsRMi_$k92U-SaM{VQBF@=;}(|GitP z`5VU{$(xwH_x4u$VCisuM%9&9V;jjK;`c{ijoI(NkDMIxEbfQW$0DPUaEbq&b8M%o z{qxd^<3-1bL$KY5J!o32?y*kZzy9@Q;g8Q)OsF%Ilm>KknFAA=gx_16cYFBbr{jQG z=;N1oOz!HnM0)=7;b^)hL2~oNUOxN!#NYn!Uux=ZT?ZD7w!@w6Ml8*;kn%5ce_u`d zzkh#3-z~AY>Jho?e_ztyzr2Y3xAfre|NQ-r(68K+cvnU~PCU49`MC#q_X~8nW;ab> zaR2*dk!RQH&u(5Ez994{*QAZ1r@1EaEh+2Waj=u!`}Wp<4ZYE;*V)5yE_;=T_}0*` zT$5HZjRR8d^uv7bXp2+3glvYr4|=hs8U4lo`_2CT6S-y+(%H}nubP;mZ|at?)0y(3A(kC&sU4P3Iw6zqxT^tDYus!O8Nf##YCPxD0?|+I~wrJ z$w}@L1Ktxm%s;nBbdy=p!}foM%K!VlMXv>uR{om6_Wtvw^e;(&q#Igy^8SBr9o}{} zw+P#&sw-~)&kdMe6@+D>B${|?o;e#s{q4U$9A89)mvH{SPeZ%6x^l?Oi;Dkx+kiQw zd2f}}U(?Rc;S<02&Sa&z*&4yXYuEIxD&BuTSsw61A9@n#D;Uig(1MEXW8CF8tT431Rkw zecyig@G=(dZm?W-jEl5VgZRzd{6Ru3+Dz05pAtpIxyeHW2*TVA4^bge+$}~^jMa2t z=(Its_KBt8Z4t!j{T2c!cG>Q9tNc z0(j4zw^K9*7l~4e$#{mMK3zh$YnyHmGfv*noTGc8kNv8jolnfAb=>yr2I9G{Ya0}` zMyBC>+9^50Feb~xlK%Fk`TcN-C!=z>06FmW&CQ*i0T{TuY9I-7Ma)wuZQP9|}RTZPbP1-aQSC zjh+ai-X5W~7=0>35C)WhY>g*1=&Iszj8KYJ^)jnj>en##fp1pE9yyUEpL%koSAQIo z+;vo2vC*!y%)jPO8Jv>Y6_?*276MN&8Cu<>cYX6*F-JVFuoMjy9RS{qmxT)ma-c0I$n#G7js+CW< z#!_;;fm-bagz*XHOffHR)?^kUu=0=x>)8Qm03Ukg7r=;EEL3ZXCr_?Jb-3(e+4qzA zgE}HDE-_#k@xY?zTm;~S4o+krI^=xmglvekurCS<6wuNl4iCcsNzr>N(Gd~`g&7bs zIY%XI@gZ`yp`oF~ZJ~wCLVtjNBws;&Yw_vHO3Etf&Vrw6J)Q!jbZ&<};A?9u7mja; z;6xq?d4+|A6*zly)h}?K%Io&Dz?M0L#pc{N>DXF9p|{YghzkD5mr~|#ycXH6xc6ZNC`S*%ERe3eW7vm{?LcKlN1<4 z%i`@U9jSn>_h9b%l)n|tQ^)x~9IAs*7Ebe~9=$XH0@g9M$_!9t0g@{UWX7E_H&+MT zhAu;`rPI&8l~Dbjeepsm<|Q)5=Kw?A4CeMMX`<1u95*3?h2LFni;9XO1cSZ=P&Sl+$#3l&wW74CFQbz2v4nc6OVs1yOjn-> zp=7MO7jT18ViOW+>AYfF7>2u?HTJU&7{@tPSO#FP>H^_^5W1CRg`|B4C!IX;#pA&gwyk@W7?a?w}Bi^$^>dT>g~->5&<);?g9qwpyE=$?qjD zRmXo65zoCdM>IPy#9Z!4S;X$m8#dWi1Zj)WG>z z>}xPkD(^BdokgQTWY!K#@Y%0*V#?t+o?(##z-b}km#3lerm;|xTw{8zps%DP2g8me zIU{blYcK}*;t&I)D{lD{I2I8DYSMm(FRjRS{Y%$q5(u#xtN|trcq_9Yp77Sb53EXZFGXm|5fTKpO30oWq5U zBiIoMLI+Z?UZ~FifIKD~7?;J98?h~(Ks3xjBZ}%lb48{Lmv5kWBlH9^&%5}R!*4KN z@0;)>4A$l}Xoqhg=3zUU2o`|1dJKF&huT*1Mj{;_ObDHfO918IL5Zwnr_*37R%Zy8Pz40nC@O`3UbLQaB!HSy^--kKpMx-9gzj5a! zhr=HopOglIWIyN!S9JIFDdBga>4-Ayb^e!s4Zkm<{&2mp`JKnq7tMdn&S0nED5y36 zkZZv{6wbpUP8CfetMTMQ@N~&G*r^UPheKOeJjO&9JVFmt%JA^uNH87!*&p6bbHw-; zxMpc#f@WNRl*H2F((GP zf!o6uffsdfHBo?A!E@{Lmh0GD5#me%d}U(|g-pN_35myf_Q^>}o<^goYhfkRDU?noo&j;6u1i`B9l*56GKlrsHwHURq3qAwGCFeqc`n z9(LpwO=ihEb+G{3WZJYt`Zjk8H#W}WC%?UAgWwDT>LK9tYp|~BhVY`jn0S~gcq1K# ztD5w?7!Sq%W@h*NG;W-t6KB!B;CM7R`Hn<0q@Fkc6kJI~r2#t6LO5Ep8nd=ujD@HW z2gYQRF*g-$K3*dM@dNv~1SJa1epvQzxEAt8OH(@Jo}WX?h6|~g+!;?}PuMO9x%6&& zu(}v;T4pA*L{9FyLYU~kIyJ6X&^ge*E(gtY9<(Mmn>Sq5k{5@eRrg_MQ&3P)Oalb5 z|D+WT-U8kvpNkjQOZ!|P>*+LW=-I+xzo7~Aih0)>cX-i~{FM8GkDlaQVE`N|b&=waiEx5^Q@FL@ah z@+&3W`oJ?BL@DnCuanptZ4fVpcK{E)v9P77$qP*FI;+ZAK+Bv4+UEht5tRr5PdYJP z2ta~mr+COYbWsdoC7@z9z0J&SN-&82iOsU?-geHRU%vNweyh0-ERwTR z>f3AwBr`k_HPg3`u|k;gp31^x;Dc{z$ZGBC#~4c39(1tK-fjEP{}^v{*?M?q>>SF# zsT}SO(&a3q2vVTgX0ibJdCp22#?4o5u$v^a?avh!n7P(n-Lm7#qSUb5ZMVBWL??cU zhzb01Hu&8!huGGGe?&9KHmqo`SRDA`;yIs)2)m{dJc0O(IMdN{k-EzNG?n5{Y64$j za)uftJY~S62p}1ddiCRCrUYvnRLV-#K#$Qz&B^C=4xOBFx<9(h0fl|f3{!1Bz-##x z@Bzdqw+ikpJQ~(u==8Es*HXHDB&)__0HuNrvI2-Yhwebpf7r|FH3Mk`m>xh!fCRUH z`#G6~%1d_In zvNer)F-0yV(S*@zmy=l9-_-1fdkz8B2C{bT<{)a2I>_01JM3+36>u?V3i`5?GC0)y z-6N14iefkz38@?67~l&XHJ5}~N~LR5BeZCSNpXcKHf(xeY`?#Ya6Rw^#zGt-M~d&_ zYJ!d9Qn#3QVC!JU6fdg@%T}3TW-pQ*V>XTL`3|p4XlplPcoIF!p6t^OP{s0r?y_-6 z$?BVKGWN^J7>7!J1sXr#(<^PV{$w7Zqkp*P`KHdSbJ%QruG+l&ei8ysb}7R&ce2pK zV;Mdu!7A&q!AzAveAv~i93qdN2S@`{y`1>6*1?;rbn*9P;ed)oLTuT zBG7Q)!tj{O!RN*^JTHVL&C=0Q#X^y&HY?I$I+zBHqRcb%e_X<<`Yru!t!Lc~YM_clX* zlV364f5%iAmU}=zKtbE)H^N)bNEpPe+OR?YWEKwluCA^X-G>ZZ-Q3`MgtKy3j6mNlJKYHMY93J?e?;`_Dt2*%&lJugT>w z1Juj-*dUWTm7DuH`bS&%VwJfRVDcPwSJ&X+T*-o#Z{Jq9c7UGh{uP6&&;6#*+m{z} zkIa1%P&B{i;)=8bH)i@gyD{aq`~RcSb82rE`sk&?NzxT5OHW7+PuWW;>Sz-iP}rrp4zFc>B|0g= zgpF3n{1^-o2?(4Ae7|2u?}wd^`-YlBai7tqH*b1_Duj6(qqo}cp0Itzdblp?@L7ng zJv?$sQ#6Qtj+B2ISKv^h+JOb8VG^JQAxaqW>Z-!Ap|n^CZGt?60xa@}ARHpP4M4vp z=gNj{`{OWHB#?1N^!i3N;khk}(XXD!3+8Q)6<)NwQH+Zrd^+0Y&JY(KeA^2?QO>_eDCs@{VD@^uMJQctcV)ls9fuO0`B~H%y%Os_j zpPmel^8j-A$e7EmH-l*&cntoIQlTA_?XI#$AlxK%4c9MPKl9&bI2@~M1EtC@D2`F_ z>o$g>L3c4)lb;A!3+y5Q6`V(G8iT7|-_Sq}0ThNngt<&HjI`YI1c*zhtKFe- z5%oGGemWs@&Hwh0MbuW;qsUT(r+=+wBuWG12Ry#hiww2e_SxkMj)6WcW9m?@dn{QvH=BTi~#9A!hL&-`05aewvZz z#dCjNRZ><4HRN|zB7LE>UDN3J?NG&gc{J^b!AV8T=z)hK%LGK>cuG@EcdM6_Cd~L) zzN4jObXA_l=QhwrVGG{ukC$#}Q;X1oN%i(8o*HK={t8eMUHQR@iPnb~4`R1hW!>3| zHiGy>G9<|Mp70rSBnN@Q7AQV0d{~-^c;*pM}aQD)7Ckc!2ltZ z4Vbq86N#A?ku9TrduiBX%a$#W66JyaC2qPMT5U9sbFN-wxG?pGnu1&8h-xZ0Ju`?^ z$jk$Hf?D4jzuQ~iwXbu!eP@#Mj=@p!u zr!MYd7kYSI|CD0ta!DzEclB z-oR2Y28mb*ts`6GNOrny0|(8Yi?ndmLe1H;xne_KQ$xcN$er^*7)xfa6OCC3zqT;h znGhJd!!jO;V~78`#&|$#tnY9JR6Y59!v*Xv@W4o&7y&$@wETW%)*w~2%$a@{>|QQF z!^2**?_kN$FI9!lXsl>vFh9u(-8GqWcr~ENUz%gJaPy)EpLRLj9Ovli+ZpqwD*T;^ z>5We#&#dM>I3k43+S@gIRbBS8j>j4~QdN4U&)2_%Yd8i%xcFZm(f@pUdKKR`NPE%H zr2#eoSc>|V4Z1XP_E;tfI{TcG`Y7i8nYRZ{2r z7<2L6&6+#U?VCPFPTrMynGdoht^<&23Pf`>xL=Z#m6A9LCpU{d2tmS2B0ZUoY?@z$SxM|!d}SMX7Vg$j~`wE;RU>^c+) zNRrnfOy+XS=K>L8!aE3K1!CsZ_igqWSfePG_h3+giV3>4Ilq2vB0zk@M;Kzne7Q_M zC$o~uEK|r06qq49E7Bk(+M*q+n&^C%+<2~k=I6$8d^IqO9hGB^moHNLTsPJ4mra;55v+!CJK2n#ot;`BYt5FAK=tr#``+f=PvEZES2qe^i0pG&d019TZSMPf+N=K1hO7rZ?ywR#aIbaI zdP_bU&4py8Y|dm{11L2Pzv=Gp=XdL}{;|v*?+10hFP1p&tgE4w$+!HXI=z{^dVAn68;|*d?@K(9!LWg8ksLW=4=OaJR)bh8j>q#C9#oW+!W6q zL}9v7A5CMjZt3H+S>~w;b;$94`Iif2puw~Senjgd+TMR_fWNo5`;Pmd`OlSCJk@P@ z$@pXV8j@~^gORIx3DDkiP#k!OVMHe2FZ<&XI|~t}bdIg6DZ=RLN?gV@Hea`y{)HRe zjR%#ix;%4pnZ(@lN#-ES6pJ_}oGS4)x5vJAj{Z_mpxn1*{Z-knK8Qyf(CsKYIy&CV zS4Cw6Q9Gjq*Qi&*42D1+-;O~SF_ni$z<5HmTc)z;8D0yjO+GIMuAZJK457xahw%(j zMip{;;jVPovEvi?4r$g`c;u1&6=(sZIeIXE65E5um90^J^fPXIU+0%aI5TK`decey zLI~~7VfC>UG0xi}6Cl~}#c&sQH5d)a4=FfFFH-GDMuM=14-5&J0u?B=`FMTb(A269 zS;3Q45I`^Smw@<4nmKLSG;mS8ughqM@Jr`E;8ke2F90Fjm@Zs(tgF41eCF%y`_!BSdJO=DBYADg$fu|=Hy-KcYAymo0i)Mh7D8!HV#~2ZR z>wJ)jSYx>FFVF=b4a1WG<{l@2uL-1U~jr5x-H6KtF!-%jlxHG&CRXM z7O-KS9e9lVntwsYu2hZKvq1r28)Um>b@iUYF`MDo;hUGYjbKS=uJYw@W0x(yhZclD z^Enw|7@o|+nD{lQL5VX!Q2YMW$GNI{pB*3%LzyMu7I#Z1VHz$1v0`ws!D~Y3FtqD0 zz*>2^;d}z9hqQ1*k6We}L83A2C~yj~Xm?$jv1rQz_)2;?s}5m1^$PUII5(uN@u!kR6-CRPJya z>IQPe6p>KjpEG9(*Dp9iN9O%nrhUfClkwDdeVZu)`qBx;I)1J>NNuI36_28U+a;)h zu<7rO9pGH{?fYMZXpm7#BrBT+DMCgGS=l99DGg~L+!_ekv&dHVDx=8E&PXXV z2t}nq6iNNhPw(&juj6=+=Xf8F@xAZ+b6?{;&+ELBQxx3w|m?yN&~`Nk{E@d>OSd5x3eN^%(I$^Gjl;`}1ev)RQ@#Sc$iI z!?r2?g#403@bxO*7X3fR+BlW*eM4T!M*uUbLla-(@>CQzA{9S?jbu%@>JnhM8?#Mn zeSM~=mS;{ZL^VL0;AE3r z3-D2MTNfZ+JaEo(8}BFg+|}TRG=;cK;vEf^?WtyY;EAt-&RLD3ycubYFc1V2U0A>% zI~OXXChU*B8exQ|sr8)+pb4%N4gaN{8=_cQ2iIYJEMcZkR`HRzF7JD-A98IHFc8ei zWSO$}9J{{0J|WP_lsM38!)Na@5%NWgJ^))=9rxmGZ=4&et<9>1$-D_NdX`Zw(5 zQZJ~lJLx#i86l^gs`!*^UF^BE8{q-x>q2II3Tjk#sj@!3bz3;z*yoL$V>Gq*%_dPY z8vEpCA-ZcgtFgcyQEYM<3(IE9g$u~T#N48I5xL6&P+R)u=Hol)*`q$F>9cO%?ve~f z3eBl`&_vn$Z)2_q@GIF6Sl`*XzyB{D7{&`$R7L3iB2;;OZ8bh@0Qz8UfGs}BNSE*}g_}kJ&eD@p!gL&1-TH5XGSrW0Q zaMwp58c)~X8b`(y(dm;AMeIm7W*d@)i`ZgCLOt<s)a`*2<97m>N?0Shfg^IV?k%DaF2_m+4w>v&GanFYTcip6$ zZjm^a0@&HvF^0jYLtA*@#<%KiY*g@=l37Z$i`;P8)on>H#)f8gdljtQX7qeQ`G`j4NY7h!U|ap~bhV`n~%3V8XbSVy-m(NORtIQ+du459^<`*?fH!Thj#_W8kY z)6+;mYu*62*(URKXN`=EjHtu)EEr_s0XO`BH`pa$emebcD%~;$sEAG+b}jg#FDj5@ z80`iHXC3(-khvD#>6jf}Z6S%kWMsJ&RxxD75OM^11*7}NZrGT3Ha;bV4lY-70Ui-V zJ^rl7#-=hTG9lp_)`H#Lpf~;wS|Qx9G;r8h_+2elc@H8f%;-HG8$T?lN$Or}=#Zc@ zC(g3NU%%RjW$F$y#5!S07xF2qOl3HL%pm}P-@SO|Da7U^tf9vj zm|VbD3t&S{48o@H42hK}jbKsK-^CZVXS+$Ylub;NH{$345W7@SaUsYW;~fdsf}%xu zpM&Dk+Bz^vh$cdGq2R{LL;Ha!_^WhNm2sDMUU-26-RjPpXOt08oY_N$H88zOf+A`t zvS19@x0Nj)l*j-jwvuH9QnQ$^m}14`u*pqMN3n?^wOk&@Tt$yVNy|L<#Pp3HUCy*z zU#}&FkdP;@G^r~XS%(eV5>zZJFnon`ago}>{)cZh zE8f#*bZ8a*=eCEMtKkQzPIB0Y)giIVe}EC8;REZmoT^QpA^B~L@4$aJwRF1%02nMp z*!W;A3QwV9Yu}BG2$cmy|h{b-jgikXo8NOJje)}>3ysxq=cgQBUyDTcVJ zgAikJfHE}<{l-DQ(x8x#tsl4&K4E#hR3zIzEZwMi@%ZbS9QYOCKnDLP!zBICacuq5 z=PJeB7dw0F%a<=ua+Mv;>4ncW_H5sc=jXZ>7x+*5yd`^i#2u}=(Glg=QjP+Zz0AX(GnY@At|>N&FbmMR^HM;* z@xicGNI>7_`Omg_$5Ttut^lcGfjtBaTBXkR@4-aU>(>trtzBtq8Be&5d22OC?B_>8 z+Jcj(Nd;k;hfK!gTTx}KSO-E1E;-oqVPuHAL;maQszAg*)|dDHE)5I_2!^ZKtI8+B zjt-AII&`($=<9&-k{ERNMbb7G{y8`0u<>5BIh32a!jxn5ty{Og%71rw)y3aB-;|U3P9@JIM{uxf!9BBV zTE#M{YRNw#aqJ3|!?H;Hfv98STd!O;@g^M*2I$goycN!kq(${rd%D}rmyCQli2?rZ z4J}vmPS;j1mua>_WKwZ_Bf|+-Yp|Ci{6!B$ho)%GST*uqjd97N?UWP7n$_D&C6x%5v61vO9OK zBU{;#xdK)H{^sn<9e87Z9Ceo*&za|)FdbWm6)H4=@t{#yHIaoRv~OrtHiB@Ya5c=d zG*hau`uK{LM~?`y>Rfc=<;@uKMpqvMP7aMvIEVw*1^lcitEB3w=|2tlT&%yF#J@&m zds1Qd%-(ojuabZj$tt6P)96_BQdIcB>X%&*ciioER^(0;AUvsy@t_3WUHu-Nak{FE zspsGZlO8&rTU1QYirjqq7SGow!{#mq)3@*(RJ<>HZ2rN)UCHe-(5_xXidROCK6?H^Ti?(v9tAZ_N~qN5dRFL?EodPoj@8`TCkzDor7|(f;J30Hi(#~ z|Ex4B0Kh-{`}r}4+7r45lTbaW)NY8`Hu@!P@5GC~8AiRd+XlkpKI!+fk>hc}&OZ|J z@{X4rx zh5Kd(PFLMu*M5iM{-_*U?`OAfZNHfzGcQdgGIZ6&`d?oLg$^J0H&?1L%(lw@4fdt! zO^I>Qi#79UkAs6ZCVHcsAZP&4+P#>_H_NxU#JFs=fQrgtp6`&5En_K3-+6`_yVjG# zL?f%sk+j|``J%X*4{*gkZ7Au5UY&J;i8p?djz+Y>-ykzMXc~=?2%HI<>=(q2&CviY zTNBDUQVNnGI<1qVud$1UEc-~vlT3(?=7dn;)Q<#ge;6n`{qW&K#7r%|6Cfk}p>(AZ zZjGZ)N&mbPYRm`vkl_$L$&dMkg*9IMq;iwsgLp|3(Ek+dZ3h31MW&BONo{5NVjia! z`KxEzR_NFjx+|PdOZHlyjz8KxL3@-k!({u5J$VNtzfF(bte2TCGxGBCy3}D9DK7IU z4rgiWz&J_;qOc67RR6GlMgk9nGrF73aizXBQCdRX=vuGlq*Q*y6+fQ;s`2m$h&Np}NtlnuGUATR?Y)J z?Ok7(AHI3u7aAV8?D?M~a_jl}9j@fZ$Hq3vC}`DPu;hnZKR@vY#3vEs8Y%lcT|V^l z+qYtu0Y7we=!$gv0Y(Mj8MGx|A zW6)ec7qtvGm-jFo4*9CsdvHY3OHy0~#~!h`c_4P1y{MU^A)^ReM|%CqHjN2Sfli%( zm!USpT;_A8yY0_<&Fs@|@pnCOX|(#lM}gVXe2&NWCu$^&P6)Jow7g>Yx}~5;-l!=S z16a6Dd{CLqj?rX21!0DObp6{C1c;WP1W2%Uuun}ddFVA;`oRj%b{I*Y@8Rp`JUDvjA?bdR87L;Adx-zMNp`x-ZEZ5W~@A;)ctBU7A8HEo@t_2^= z55A@-5uB}P#KjenHW@qrC(@87dVpLQWnOrtAxiOMa9(f zkkP^!whbzdUw4C9Aw&AOI;u;7iHXUTieXn@y76j^s=K>8YE%oSwTAnljx2oKypfA_ z3M96D1!quj@{RrYCidwRA@0VBPOSvZ4gO)-W3j4-gGJ`P_=u)I(vt0PxbgAYbzS)g z*=JJqh${x4!&a}D)KwOpo^9{$-U|@JaZ9I!$SN6~QgKa~T~mZcLIlZqIMm^nI=GD5OIwZ{}a?b}GxGNK7CEG#6X0U14K`3VQEZ~%B?^C#n3!4|rx_ujp_S&8Wv@a@&!o0AXSPwN0KR?Cq+KhD4gy44? zC{|gx%j*a7IFIIzwOFgBRl|(CLl$0O;4po0m<3m_t{wDk-kUsS^)$oL7B~&?1D%j; zG2#x>f6j@!I2N)ox=vuq#>C5W`Q^#EkqYzCIK%62zHW^)e%xzNo^$TopQv3|8`33T zi!HcN+6R|^ew*J{**g9Xfm&|!W}~X<{g#nBSttY2MbdSG%%3pKy}}rY`rf^FT2Dwx zOS}D^b0Y}Br*Y5eF&4zpCiut=ZBRb^_N|y=#^8$=@rxIMPm|_j@^eVH;aSWEAjF0w zrTu$)>VJ5_B|+xasUBU%P0h^Ae1o0jTQp}@vKMmm@38IR}8GfG2MotBL`Yt{` zzKKttj{mj+aM|IsoZM95i9o&R z6t6I&nY7X6{X_bpa;IGP7BpkT)4qfUIL+KQ>Ma9y)^u!hvlfgbu5f^^V{8vFWk>C& zBi{T34acDv1@v?+G*k<73m(e+t|v|qT^>Brx#HsDw0?|2;|C2@2|=~ry-GnWfD23M zOIUh}m)4@eYJ4^`y3@$rf@y^`T0G- ztcitn&(A!_{c!A@ot=v-Dgt3t{+wkex!oJbKB>pLsu&Q%q~*&Wp==`ydC1xYO+gDQ ztABGGfRD(=8@y8L=H?aYfeTF+r$!h<5D%+$l*z~}6ljLZDv_6`Jbr%RyQ;oXN}7_k zJAS-l|}4hOmG4zba+{d*#_&6Ylk45I40FS70S+IDuU1MO(7fe^i%k~DK-X-IgG zhWFM-*7E+D3E%zNcUI(H39X%>58u15$7Wrc;nFliKG=I)pCrT*<^7)zyH5BGI@MZni>J*T+T1+p9qd;nZndlCb{5^rKXWSv z`!-9CM*7_9b#LOS`m{D|Xy5aXQ}WU)im8U}r}Oqsi7i|EH>72=^r%r|FKuDdv%rhH zzHi~D2408@nO}FKc3t^<;`4~n>joOLDDI7pbMlhW^Qw)JFZbb3Jn*Ocu|GR}|Ig9rfaq;XSX!(dYkR^&aumNHtQh9sk{(QEK&-M_&=9~ z$bBQ-Cu5mGnfrInU0y+}ru5r1?!^9_GS^mL8#ehV^IBjzi$dMskrD~|gECFA zZ(D2hpR`ST98I)kplufS{AO`3WyFYyYpO>9+0A~aW3=SPh|#fADq|Uo(-*Ba_0y(3 z&RY6xP+3!3=rPvjm=K>F!vA$^h(Ylx7Q@d&`Xc(pE{9rH|2ZCDba}-_ZaqWl34_4@ zb=xDlp|_MG<1EO{Faf;#1LEax^S@cw-*5)r&q`xw^(TH>*RNm4{thAHT&$dY-dz@_ z*!$Y=5$CF`pAiX#zWcZ?snH-^?H?FOgLDEAcq2-f$f)$25kg$LQ;lDaM6~&B7&Mpu zN~KYeZ@gPuDs;cTwO;#3Ln`v^9R{Nw&Tn!x3{4umr~a-9zk07UB+#$uN)X@Y_KOoX znU&AHE2Tr#ysc^m7Z~a35c-&ul$5ZbO+ZG55X;*7X8T)L={hEO39!;9uk@YNoa))* zZKX2!n?J15WOi!!`~2jBoxS~KT%t1NJy+c0p{K;dsKS;oX;e@hc=&DMvZjQHo1vRV zMkKd=biR=~U3=o&59^ab$r&!MbLTGh$t5HjlDiig<@(>_N}jT28w79!Yf}^E$a(bw zpar3Xf{#)_HR3K<3~Q-isG6N?8=sK#`g7hC{tf+}Xyd?i6#+ z$!82k*$xiZ^j93cRUH-4G8*}xZ}+%((E(0C$3_V+^6%TbZXNKPym!SY`?&6uSdMZe zm(O+;<3w8`c3sVe^wi}O>_HrbQR|v|PR?k^8W!cQQm*Ooc(gAwAu)N`&@1nwr3(jk zWQk5|9NW0L!jY9lp&-$udLNe92a9&_cd(hNQCU(dW=70f^apjpMl)YR?E251Y+X2gvfZ7vl>>EYvfR`rGk zRXW->87V$Cwu_8?9>m!n(yMh%1l-4}noJ$#T+`<*-}?&XdKakQlE-~yocVo&&RsfX zGDyw6Wd#$2QDnn^{VTsmliVi9qj1k6>rNK&QsbF0`n-I47LEy*b8=j?*fbbF zuOKzwe_!F&zl35<4>bHjPR)6jz>%IaMky8MZJu*m#SUjJ0(EIZYbmcYLGuF=CMYbd z`R;P_OSbuAoF3P_iVjRu#j~Zyl)=ng!+71X^=#;#U@^a6gx@V^zCTs;QegJaog!=q zO*!{uahNb&*(;XDK=b@dF)u6ZS*F;*SEqvc#oNkEJ^g`4=p~`W*e`ei+OxqgC+qRsdx8a5w;X| z8OMVb$ovdSN|QnJ!|5qL}pI@#48ZYf;Lp;$SzB2B6 zBosH2mgaQFK0;`$#vE9uMUA&-&;sUCBO#!0`?CW1DQn#kt$Bgik<*3jhc}cO3T@^K z*?J~2*RJ&X)J3HP>o0zl<091O(O(Z5j_7ZQ-=zm96Z$V_@;KM>@;ZPcv@#d?h!IKL z^G+AtZtl^PR+EC3`7(B0M@8RF{!g8c9wkfrj`M|sW@vc&H2P^=vShP=E1OmL_v1zu z$~xZ{iLp5u-O)d|r;z6on;3snq_&fyZ{Wg3CtF*x1oapnnHEU3sr5}Nf2_>XWu@v- zG^<#d<3#+%P4sSTBSi;jKmFFw7=n7UaYod2D9f%tPzsYrYWo>@m{rP@;`BbS#@p;? z5Tg8*bv2GDT!{OPeIkaSD~xA9p?^kc>^7($a3}SYdx!DtLRQreWxfriT1n;b3a)$e zrp9E^>*7W7PA8Q|zZIVtYRENN^!=co(L1FQ!W$03P5eG(R+-HnTa+0Yti}1Y?(@fn zjp?0KhC>h|Gjrg7{s?GsH)_y%$UD$MKUbIUUAtqeWJc29@*B&ewoK@#?mr{r=6<5RY!$J?#EtJJwFQDBK- zDO+GoGEK$(SE~8KsrDnMuSRUy{h$8uf4{!%kNvi-(xkNWChWXTw|vc!`DOS5lw zZW8G*e3{Hl3J?mQ)&U)hqcE#WRuh7EpJ<76-ZGkSy{i8=qVB6meahBps;#~mlXL1K=l)!%e=r`E+ zR5+2N@VZ*N`lXP}=H_N1@wsufpmZ$8kabL#=Hq)~=C77SF;`ex+D0s+>Bu}D>v1hp zEqRGtss~rDn)34H%Wa*V%|xy9LiZLfk;}vv>%PX;)Tlh}?ChZaeYexJ2al05tLgAU z8k%Bw6U6L$acneFi0OK5QpeL@IdO7TU#~x^^rj7(Vi9vH_v-6E{rtKmU)JODJLA7g z?)g7iVd=&cLv)J8zKdS49c<|A3@uxjpRa%ZeD#pePd?Zy6+_!l7H*)e?RV=IUpaO1 zH7klYvVs(gdA0RoWKY;TIr&3ug?g@J9R2AEvKI#B6L`JP(bZiX8N!JM;obZFID#|* z1K-@VhkLh})afUN%rxtzQdXBdt~J?fXBmI<$fAZ!M$+ETYttzQw;aie@c1^LWpFjk z<7k?iGPJe$-;&F{HkA6Gs8PF^lZ<(5_OJS`cTLl>#>{8p6HD>0zcr1ih5Oq*&R&g} z-t+$+Kx2Kl7+!*&9{ZcSZY=|jv>uzBP!0me7;!y*;zTGCS~_qj+CTT#uC6c9;rHd7 zB8zvo2eJG#sWlWMgRFSMI&T(u%;lfBWrHH{R~emP)1}I zcUufETZzSW42ks*4#qve^X2(Qw<~yWq~85nbGSJGy>XiUsV~C+%Uca4dnWx58%7Ht z>90qq!f$z`5&m_5w2nr3}w1#KI3rnElJ)5oYHz-jHu2=?h5 z!>ASiJ4E2A#zd2mUj$&9A0)1guU@Ukl#ZhB@5=Uan93718#ssM8X6kJV*mdA`*Pd1 z{eIRc!);W}5|MWBcR=Rj32k=)4c0r-fFV#0N}1L|5x)K8t6_z8>*zP1rHqQjcJ>}> zjd<*`Y~{*kpl`Z;McTr~p@FNKG8A`m%uWGm)z10F9i&<5ySTIBNvq$8(Q>|h$%7tb zZ=A_uaFadG*%{u>52uXW&OSbC%G!enOSC{)AI$|Lvwc(d8HD&c``SE!e^KeB)Ha2wL|Z2W5)<9L9KFK?7J_@glZV839c^8sUHumc&r zU87UBM~;|_-uRU1{m}C}6Oj5P01ZJT0xw;n10UWW zbcmOi7hH<@7`vn%ut;b%7$8SJe*Dvx8{EHbC^Djssejb*gj*w-WAOHi!DzkxqFyV=%lGA`K9|J2qDjVUp+niYQIN!0)RrtHu_ z7t>b3W5;GZ_-dAjo#YHWp{2-Gv9yRk)}y6V6bNAz@B0bGk?2W`8O>e1-2fzc9bTj^==*Q zbg_J3caqA{zWy|mMRs*cf?s4HdkTso;`fIeX?p?y=ZlY5d-1wqr%)kHi7^p zhMfg$HT&k#u795r0jVhhw z0OF_%jo?xm#Bnc*WZK@>UtvzzPMzY1C*0CV?MH)nQsIcfb~rO+6*QQGZ68k&O+EU; zs$1}^0bQ;pwVHv3UNI1dCr?>MUY;Aj%31D(hri7yuMZ9jqnsC}%gf8*GQl$y`;!|A70n@6F|2fM{ISbieU^um@KdOnv=>qxfh z`__!Jb2-vD=xD&=o<#s_V><70J?p@O`bTrMs&+x_>iZNV&VP9ogj0N%^VK_PxB{UM zCb0@^nv3;lw;|B=fqhZbi2kvEh_iPXUi#BtUhU{&e2Td;TTIrk+jSVh1^6}-%>s!@aSPAdwXvV(=*ax0RQ(-vs3H&~DHv+= zk+LY^#tom+aoGvHF_TIdf7jHH3dO5NjC1jui2kUiriN_5)mjnj{SG{)BIjq)jL&*z z;zdYBy9l09tdDUxIJ0F`BfEag)42KZN4hq<$=f&;c(CknBhBrrX~5`*8+?yWW+bn* zwJ5tMw74_j1#{HNyNNg(#IqG`a@o#8s~Ybea1pv6>UG<1Rg;F$`&p9_q9ZtjS(ZEx zxb0sSQQV6E7J2IzGrP=pFSXv<$=hd?_4M>~UcCnCVmg|3Tz#r1#?nXN!|FROh%J>A z&Y;`A`Md92?m_#un8Kq&)icp)C@R^2(Gp)w_K+rkY7yG) zshNpU@YX0PE!m*rT?gC?D^%!dSmL%D@2s-2vSRo?9i0XcDyYjY;TzL@7k?!!pvw$} zUyhnYY&v?eteaE;Q>(#A6|b44@a*b&@nSE+9%gQCsaJHjx09cq`tn){+v)0>n*80* z?1bqx$|@3hP-!FF9U9}XL>+{?tfsHOGQXg}2!aS6p6s|VurF&drAE&m&Wuz?w#D_R zjE;^%!nYLdRoUG#x_Pb36BE=?5Nw3;GB5~#jTq7*{xeS>Cl#~nVKC~P`0ybOitlUy zn`tla+_^If-jDDZXV0C(uEJ5licKgyt{u`G*;?H#ZLw~lW5npL>5ZTFPYtQ)UtS?# zFxj)M?L7n#EfBS|dmj>sjgP-`eyCU(zb0Iy|5?F7Y7JQ!E+r*(`tKhfycdZljvPJO zdgI|A7>$${owBpLgb|s$3#?sBBokT%V|At=i@1AC+<)yB$E7gW#vKOsC=ja?iABnI z5#Ivv(Nd`qgF9T38-M{eta1^;ty+ZqjIkWDjR3`3m-U)LPclt5Y zR1Cz`pESVe3{Vh>pCvB#*m1Ki)}*_$v+vmaXz4wyCycW_kYg-DMus3;BpbPj32aYK z4=bO|KD=Qu7cci=O3-pP4$(ftG_T>WLaSpb$NqltFBK;9-)o_a>h^W1#+-pIED~sb z;G`9dqE_U{!9y-7W}6 z7@_>i6@Okp_iO#p=7zO%>@3$*Md2Ysr8H#-2N^&NaKJ{s>4ALefx+1mH5|uAKrAz0 zoiGpFTE)?7SvPk-;07*5t=@l$jcvyiasNbqU4nqXA)*4mb+tv~9EF+1o&+t<;YJ31 zWk4iX0WFb18Ij-?BrxKk(x+5Y`Zdr}gyHe}4`C(A(skoLyNVJciWpH-0EA$}D@hOg zKc~S{Svs*j_uY@2Ux1)dtL)f@y9x+;%h=c`wx#~+;E)+`UX9xHR53~e1EK&349G%q zOcjp48p^la3hDP6t35SxX!0ANMkmIsvCHJ3_G?BLt9U%ort&l$iSJled9@+D$>w2o zHBhV&oM2)RgXxVC6Gjv#u!ngB#!hk5M-ZW#;gsS^p$2rPuSdCwg+64ckFNDdOc>8* zdeS0XFCo)-*dKZab71q#pm9g510kWi0#%NZcrq5DqyBXO(w)CVDW!Wa+>?sWeKNz_ zG=d{QyxwW^zXpSy9%0^xZ0N>BK$trR2MshNp5$fB?zrhw&U^Rlv4=hoBTDb9yMsUf z1Ff0Ieq?SnscgRbI0aRSz*JNSZU+@P`k?in~OU>%f5n`u0EYi!7q3&?{Fo z()PWCWX1LTY23ln$bYnH;p~wpSHdM&u0Dpr9XN^M=iyQS#p5%tq2893z{M(L7cwbX zmHiw`Suje;jGN9(BYwSDco2Y*6W~-$QK494)7s2H41tt%*TFu;Vc&Z~M*|W524@mV z5JZYHKij#F&+1`wBM0$ZS6elXABHfnB6BI6Xw)E`Aou0?@em|sI~cSSSH#EDr(hWY zZf?IrMtV9ia>V?|Flt1*qOC;pC)XO*|Lnh%{ly=yP+QvJm?y2hfC)UJNU52B&x@rk z6bl}p?NAQzb|R~EeTm`^0$nC_xgN70xxqadVqgglAB=!!0sxwzgh0u#G6`nV-6^Vj z5%nQc!2Ajmrpd~^)sTB2A*;7+^u;!LC>-h$sh(hfmv}Ja3~!>PBH$3m@0SY5-W~Cj z>|Xo`x4Qe?!2H*fe+CkLW$)W`Zs7-I_{-#vf+oZK(ph0oi|O(HL&x*|mvRAOjZ z>w9|GkxGca%D@>fvKXBxF$!&J!^jWADUtpXjXYTlt6~S)jD7sJop_rUD&ULQzKD4f ziwD$MaeRB1Xb#so{$cV0p>!r9OhgVIUfxC=WlUK(M4yANVF-H1(_yEOy_c(`gabHE zN8jqP_={+fFF{H77Qp}u82w{ox#8yW_Vee?8*_J|97g}Mp4NY4b;Ks|*$+>dX|QMv zM%T{06F!y~sZod~CVyZ)h@2rZFM|S%NkFxtVRQ;<%?%!eFr12Si}Ji`a_@5N*JmYV zW$%R5_iAZz--t0^y-mM#KKI3|Y&B);x?GV6_68Rf5H2toBkgO~j>G53dfn4+)xjAV z&FTvstb4q#>{fQmh+FJaZ&-<~4yRCsa1Uq!7yu8_I#A@i`~>Z8!=~0Kde)#8AWYv7 zDeU1W2Ah1hNNYG%zXiMD)Y7sZblckx^v?^`yyfofkdupO%0Ta?b)Mv52tQX~y8nuv z*)UspnmiJc$Af9%ggMEi_mKOg5^pP*eBV?!Vdc1n!tffAI}$5B`Ke<1$Ew||l}@28 zPj}bqhkkpRDN`&b`S)YR)rer=$BZE9089l$D;ghmb#=v&wcrR&KhuR&v-#Xdld|wO z+);LNl3ogaW{XbpodGtsM1MPPkvchBIwx$ z+Da~Sv1}nLc+fbQeu>u>CMNf&;@vQff=UU<9(FmDa=vay3qS-?wCRts7}rAKyuyEGTJEaFxv=Hq#0%^49 z{e{qZda{4BJ^|Md#7FKCj~P4$b$pBgUn`>+gXNezT0{Kf@891+o8My9-go?7nszU> zYUvUTLv6zR{v+oGRi9rbSy4{-b`Lb~D5s9bIz}VS9;{G_3;F{~5EGefw5lt9{P^Lq z@I#vBNe?q~Nwm8C7Y~0M83yk@;M2aDZ^s$oBWtAqK_Uu}E$(E74b@-W_;)%Qz-_F} zHCyYB2!sZa3PRo=#Q~C&lfyzt#Uq|XunA}Npzl^7m8B@ zOAWj+G|$q@BMY{+wsldiI3ftb%{8a|e$P$da}Zf3gu1CkMd6_4bVYJVG$PO?nnGf@ zffxWiQEWGb9Ms;C!v;?-Kkw43_EHFyQf=>{Uz`9tI9_QcwR#kyM`C9~f+COCJ{Rta*u@LPV>F)2dLIE=I)@&wYT3ZZgxJUS4O)(SbbF zIb($ZIgBy7QHTPVUgx$vH;eQMdjyjkn)I!*>P0ZH%38!6EiCugkf{RzwcV8{fFji} z$P#TX8Zu0V1{1GE++dm?ZcPR{lVdGdX|RhV8%+FS=hKNa2WCIK4nMwLUh^3FDjWyO z-98Rm!BLQu`Rwwh=GZ|`XzMOmu*ks7WV}121!X(=)sX)S$;jxx+j`+$@NeO&krME) z4OnNS_!98+C?F7Ge}Io+ncj~Q-jc$!sq4iOi^qc@N~f@F`myLE+J@S2O!DV<0yV}j zJ<_I#k+m#g-sycJqM`&-22@C`y<;7@JomRJ@{<(X%r79cX4_JZK05s-F_g*+^363%;pG3zC!cJs1dOI5_~cM+&&I!0jOiC4BffO0=1|! zQa?V`bH{-}Z^JL?kIxNjbD1`db&zPwRTg7p`F(cwT@u%U3-qtSu6BOo4ALyVd-n?P zKc$E-&vH14Qx-4@qBB6x(TE}i!(QR&a_Ay#t{GmifAZ{E%&mMg;nJl`=-2N!vt-Eo z`wE-^vOInmneQ5fu!PY;e+Z)ep9UgzqR4B}H~EBO3jbNEz8TMstVt!FH@Lg$IAbK% zqI(O%-%7`rJhsBxvM4~qM+odEH9i+%;xmH7GiiGYqjC5RK=R0xl%D7nm~;Z2@I$#w zmRaE3DMFLKRLM;hvx4RD2t7hf9ca_h)$oM0EqaFlOYm^qCvZl$Ibs86us8?x6nyl^ zKn)SK`YA6v>^21;R9>q7Hc@V&=z$bD0O&}`^mmElCjU`0MhOOKn47NwLynTnu1yT6 z$vTk%F044AcHk2tynyia2eML*9pVKVg&39wB;J0^Uj_IA0MDe6L_2md33Fkx&+t$H-i_y2EvpsONp{fXnPPZ=x7KDd+{U0 zHVY#^Jbub5sI04+7sX`<98a7mnB|a#fF(&phBeXpC1#rA95a$E(pSKR%EQB>?%6Xg zQtmE1g=dpPLnpqtwW75aJ3#ER$cg6?!deQ;9^bZCGaaLj`b&Ejotc^73X98EjY;6cmUT5me6p z2s`M1m;nN`V%a0{e+>hZLhPgxwjNoD+ut6w91~0{czF};kDUE8^mlQ?#Ug@t;e(Nv zkQ_211_eP#cAwzhUonwzYRUTb>lbh^VccG<(drt(a*0cj9f5bbJ5GF$@RK10t?9#W z-`3~eBspy}_oh>K_(|4tfR!koiI2PVUe znu4p)Sp@*r0Z>j^B@OL>S_(ml@WANX>{~99MggN1onbA@qS_o?U8HGAtd($`fWxcZ zW_MWVBKf3(sKt{{Jn(SeTj;aX2IcU7(Bvqc9;NeARRz`6e$$^Ywx9|Mk>)2dK${-uLcGkEU>C3n_=E{+EeyK#z^gzZ z&rmel&H2DD_=RFdkN5^b)WsOfapCV%wB@TeVI9ton=!golHn8*#H4)_N=1vP(CNy5 z`hFb>TJVt1@nmDr>eZ`B&2v38lry{_>9Y*zhsH%iu!<_RvzvRvw&)^SysQ_g0bm3k4WMGWwQ|j>&PR{`xM%- z>)h(-T5phvib_h9d)zkh;P7xZ%tSqM4!{cA(q-0=;WQwA5*LTiUlJ1t7$BsW1cpvA zjV%PU?^8hLk(sfN0}2Fa5!v7yK>BiJZW?CsZXGz6DIAlxhc-RteeUsNm1JQ_McrCq z#8phNwV&(;$%Y{yhZNbSakU%C$@~;dbvjRiTKQ2UuA+gwOuAp)QX+*P{3ycMiLIw- zfTcD=x252(qCe%Mt*1Apw+$`JurS@&`1oDN7@%_YphuH3|DeFgKx;s&6J3op6McVpnD66AJ|b`PM2 zfmMs;`9s1mXThAO*9C>I9{*{thb4T? zVV|7W%t@2q^{&I0E4x2U??n9k83qpd7$fED(B<|@zneFO2K?~ZIknC=(@q(^$*Ui% zZ5rhi@9cu$CRB3ARVG2f~Y|_rc1uB`@B^onb5G zN5}B&WQNCUzMW@n@A^V3c@-zEVQ_FAE~*jgK|2>07GU;RBNCT-7k7%78xYhEpiqC? zc$Bek5%;DCPFvP0i5J|t)8e_|pYo+W1O?f_kv)-*?4a-=QaB9J`zc3amAC?{tWAyM z8ao(6SzKP>7tec^fpzJ(w;IoJ@OH&ZpJm`Nz&t!YLjd$a;Pb80)5oH4Y8eC!%H`zcwP2ZukQ0O|Bu|PvgA6L>-J9}IhNTcAU=Zo}n6nH*3=jjv zKRC;<9$4a$_<^$wd=yI4N#Fg4PZ`C8C$8Iev~I^22v;2bKF|DRh+l3QwZH!7ERdxm zoLjclkAHW2|9CAiAw~m9^4Y}#&>Uo)6+}k5CTJQ7hJSFn17!ooc=J_H3~j;&QmB^_ zQCH>5}?EyJKr@+G}?svL!jL zIfo&+fm(1RJ8H9nH;<2xkD?-6wkX|R;@bHs)V2dX?wa+t5IyCuf<sRnw^8*AQ#|i^hIJIb zU)qX@8CiiRqWop=Oxlzj3&GXx>`| zC?5eT8tIT&Q^Ph=0F$_qu2I+I5V!u8lRY%{|`H)g?1i z(q2@Bz;P_z{mj|3O9WI)2pH=@UA%Z#B^p!V|ItX1)fY5BR45K8n#jGT&9l^lS0;)` z)LrKL-aq;AsLDdh`D+Ra*gY)z{{*;MSr!tk5#~l@6AbNil+elzD%T<0IO<)mS)!VG z=<}oJ&&!wZ>Bu@nw`ud{k{(NAk^QAl0?_=w@1zm~fddov5J|*d_auwII*Jzu0IMP& zx1tn46UZzu#9RPlnJNR%l>QelDtd$yF(X3YKI~bs586vW3~r@+PA58VIg!mbxX6;S zK6urV9k*Rpp9X!Ia8;zRbRUf2%=b$VmzB8r;H!qwJ~m5B$`U(qj&!)vO=prOqV(mU zOk)~P$n+Vl_wU~)oroFgNDq6cqZF6^ix(^tf$D+U5Zfs%AGdYbadv_oJkcez@0C!- z#9bsz8{ol%q7IUiB_9Vvyi{W)tHo-r3@V@6-ENvrD|QN`J9#E-ddkZ#hSCN0O)cA{ zid1gpY6I;EKFYXM_s`$+?s3-`OoNZ5OV-n&Cu4}{ z<~K2M6=w^!yy92=s9ZFrLb7u8FBF*_e+m*lPfkpi`E$ zaa5|(Bq4oz)whz|+x8pyB4l;9VmbgLYCuWv3YQq1ds4G4)-^w0MJ9zEt9^4!aus%n ziHThkq54rBj6!WfIwW9Kmhut3HHY72`Lp_NkIhTvDmO9m^aQ+ir@;V~P%(5rfWjSM zPDdNt^o(v8U^|*!)Kp}9HQ`nPw&b4i$?euM`g&)&^s&>t@5c`xApJ}BF^iG?fo`mr zlFS|9((*h6?5?RZk=ou@a{=>T66HnUa7vaW!VX{*g#qS89^uhh%8S0MiQN=0_LpDm zZ&ki%s+f(RkzUQl%x%y1PyXVFz4yy@U(EZj65&`&#{a4? z4h&cpmz015kYBgmh5qLczP@H5=>v;fMnod5;+gFPW9DR%1k+Aa|!f>fpmUvTPC~ydJduV)7g!zQ27HzXPprXtz)WBXZ0)+s7a)$O z(Qr1KQLWHg4f4V9lM<30a!1H+K=YT_H?b0D1F$7DKhP9{&|Jan0=2*!tetQa`DtEY z#R!}oof;Ez$X*orZog(+&QGbkairn#5<&%hgq-KJBbZ*Z+*7G$8q8IxjQZH-Rk4kF#%bH%njPwr%72pxPb1{V%O zJ0dza4BXyEEH{Anqs1fZu%O~h*yh3kAs?I?8@2pS|ypmI@i z5Z%kRj65CI!qs9t2=lS6I3#Q;Dc$?th(87hOj-e4cS-bH zur`wymd;g9#!oLigEEOMzoikc*yn$8qFfR8I{x^;$%i;>;m{JrC@Re6FOtVTIGngg z9qS7g8Gz;7)iO+qU2Yl0p(az%XjUG9sY}hsXtW&Ei5%<0Dhw!)HbT1v=(q(kx00hz z1Th<}A;u*LZWaxrlu@BryBqOJ&a2B(zNEQBrhT6&pz0P(QxLH`Y533Y&$Sh&!nyaU z01TeIC>2e$DSnLk4}*#YUbuIg85l5Df44P zcxJ723QKUyxc`XJ)XeOXo)-%q%7bqTqz9|Yq(@eLykVODPKafr4Zlw56Ll}IosuPo zEI$009s}QvQhWr6Atnhe%3aqILi>wsC)GAnU9AkQ!QQNgQ1LaHg&6@;ZNv^fvO)}R z3D8vi&&Lgup7FsXh%8&e`wX_z4kwRL`Y+D|WS;yBkg^W!3!Fr=qF!ZI`+8&G->mRZ z5UPUuuCA4+ml38BakF7bLz~yD#>+?s6pPELa_8f{4AaZxoZ4Q#Onlgk?v8lQVzl?( zVP&EuZpSiKCvJ7}_QO?Cf0jYb*T|-1XdHzWnU}dYbL}!x5_tJ5_*Z%wnePHxSXWo) zC$c9#04*EYQBS;a(1JLk5GgJ#RR`Jv;0b-O?jed#4x~FME`J$S(+CTxW?;T0*bamj z4wH?ib5HRZo&PU&-UY>ZY5TgHtjm^Zz`Tj(8OyK5&E^DcyHk)NU{o#90ce!oV#A^z z&|RA6mNtleA9M6@gBh5D`4GmnS63A&fq^GzB_zcW@S%X2+GPZ~!CX#Aiyb?LZr-?& zhKNHJTm$CB#6B{IKY$nwiCFpw^HGyS+mI)AprD|&a^58MAox7}cj>)Si^iZhetZQp zZc=pkmTA0H_O>>=fPerJ^zy{+q1eX8BRYH`|5yvwau1J;G(<&sQv^qaA6*h_Dx*yi zOk46&M=(|oWi(lphxL*ho`q>ac?b~_S>OeLfkk)DH*_3*Ua;z2a#aw0MLWMK6?wS5$(I zZbNwZiWMt1|4GQJt7Y; z#e28+m7n+fH^A;}9Wy;$?m0|+EGs;DG){(1W3$!-XTOMDj2ms_K4 zISq0F1bPW4l?g}(R@)_m(LPx_cK0BD!U(_~NrWu%Lsq~cglBBKWn(hQhW<*b9+EXP zPiK|+`b3;{Bv8Uh-yHzq6uX31t!6`J_DN8|7Y{)J1?`|j`Kfn{Y4~hHNRR-$0yG8f z7PdK=7J8z`hB|>PDx_#M^|XisyR{OX_Kjnuc&B& z&_w4Dw^pPwLu${GTY#zWeuiknqSVL^f+ZpnLOQ&$s|D-C`u!=SCVW2@%LGTK+VEgL zmgGuQ7JG2ahy@u$E3uzZs+mSnA3;2XA~XuZAd+?=hZlFv^-cAS*N5@i;2aa$b{Mh_ zBF4W{gv3$GnlK1z@)4lJ{?dn7AuauM?Ogj%AR^sHz&_Z3U>7tKyo48HAc!H}*jWao zpc$f7Pzjd)#^lY)(G!KA^=g78ja?|{#9}7CcD+tf`je9t}9MWw=m4$U|5&2=X&-v>!^OA zAn9Y1yPE=nxSLLzurty{re9;!+U=5exsF~(cG=^fEy)ju9)IaI(mO+qpI&+3{12*Y z^6{68Uwz(;ON$M=78zWAc_%Y9l?F3QM}UQEiN_Vj>EPJczmqR|=YS!6GX3HIA{O&^ zr*gn;?%x^k+$4TBDDG^J9$kvlA!2Ii{jY)@#Dv&bEvX}S8nlpR3Bg+{0u`D z_+(22+)7Hy%LB^Gu?N{M)LM-v;1V!Ogbx8OinUGiHFzpI?L!vCUk33nETSeoogVs# ze@j}=E1<0;sx>74_NGB@Zf@XEdy)Q8L6D2V&@Z$+wsn4V>sRenQ={<&(4};@pmc2g z1%A)CArJJc+}5o^FWWmh+yDqcDw%-;hVV#)=5!P-e1qy9oCsQwZXh77S7okPA=a{4 zTwXr*nwet-of?Wb;_-}vTV7rs5_>Z5zJ7C@p&0RknR?&J8xtSjhy!r@_H8(5UsX4H zg=8~~91i7S1HKO0aWBYcqWs2kGa84vh~*SFO5E~o2 z5#_9(a7q2(;7wQf&@|%6(P(hSe;YHEy9~uPQLq52!r52>z7$2{+q|M0!IK%T;Ac*c zHm|7mU0m1R-Y%!0um|0T_I+`2WF8F^gtSz|TI{S{i$&Sj7_Q&GEt;QC<+uKUu2Dd6 z!;h_VupAj#_YC!gej@G`h=D+?`4aT_0PY9Uu%`QW22wzlvivW$-aDY@{r~%aHzZ^< zY>uR)>|JK4RAwn;R&p{jLUvw}Qc+s63Lzu29DB6~P8p$O$1$?9Np;;G&gXM|f7kE2 zu0O8N_j5jn-o4(>*W>wk+}C5j^UlwIXd2hEyd5$~k`K8t)m1o1WG-HC3Jt3y9pWO@ zLI+EFm%O|V1NU>NWV(Yrk%NGkvCE9>hT%&44l1IE*Yzs{^N!YcGC|Klb1%F;rzAPK ztL)%KQ5fMBJc4hDx*7zPNmxuOVgQCyljr;PB8t<$+kjhUWOaY80GK$VyNmgjWbRYt zc~#Ld97sxf3WEEkQH0}w{zj47&!0aJd$3_v@o~jn!>p&PqhtBT2HS<P(R~fPzMBD20L)uqbk(gS`Lz72R2H@_~<4RHPI&a9mH@+xyYV02)x1B+Px_;P7&E zvyFV*Qt1Bi_#9S|oW8u(d#Ke+Xq}K1SLo56PjYQ%;85Al%xraFU=4aVVc?7w@BOut z?p1f3WHPyfb%otGa+ti!X#2*Y(?Y$ma1F}5^#A!)8V^v$Mb_=u*d}46QInuFeq@Nt z#SYDyH3J(-Go9P;cd0dScwj$bL>2=i;K6kg?`O=MIjEh1o)@<1hQ!JxM^3a?GY+?v zzKG1mfEM$RYD<7Uq1&~mPoM7ebkpF39xalRl4SEU3k~X8J&l?+V@6T#k)Ico+}zw$ zlsvnR9vxXD-r$Pq;4x$L;g)W{Gc6l#_wVD9s#)FWKyHw_3QEU@?B7j^aqYeY@rKumE-|62PTl@J=f1WCOF3YkWJ$w2*%he@MZeQdC8~0BzoxQ(z?Yrou zKjW0rY^dgw>~dv#pa;(-!ntp^<9{bt{0 z_izn^8aJNwUaYa%?Y>6C&GW-GG_`-Pgj$2c;7y)IdkTS zE;~J4U1~ecSo+)2O=QVlvo~irmjTRk3Sr4f_dA=K?oWGo;u3``qIy}sKmIy-GIHn6 zjUPWQP+8IDh@hEqH#IFSA$gnq!8QDIk==-s@OSkmB_NgePXxGwU4MMqvgYH552?)C z26HD~UgdX$6X`H5wabRVtM}0qU^A75ho#ZS9CEt-8RR~{>en(f9Zw)0tvzoM)v}0) zEn+FzFH$sA_o1ldx%mk8vUYUTrMSr!8-f(v*y(Zm(g4PD;5J*7;XJa@Q>N6@(9jSK zI#qJ_WqpI%&!aysv$ojmexI}U>#E4f@ifR+kucisPAldmF5n{zoaUqZ-xNFSY5CH) z=e!;ZG<$I|=I~OAcm$z4#_6Y&H83=r{sjlzrC;Fb$zdBYVnj?#j4bjK>3^{o4|dVV z&)tn_*TlvTY-U*oQ^&FoMU&)Eep4Yr!U_l1e*P$jL!Na161*ihx4_&YANSf$X`qpR zrsWMF!75JF(8}D@?x6!)f1x5gsv-x{Jrb*Z0WhFYuNU1I6`fQD$SL zi+_-QX^>({S7#a+s{Fss^ABy=aCYw8IkzTSBBlWVP3@wi%JZDz61@f!rhKupJ`a#f zxElLNa|Uux*P%me3Z+dSFWjf)>U!JxVp0ET13nD0v8loJ>E`aP=Ii^#{Lw%j1acnU z2So$y)1O~vwR;n^&QX5UnO#Xq4zZ*!0!h})_i=V{>55lJ-dMT}6->skt7}#UiNRx} zTgE>Kn*amSfOZGCA2R69NGrNB|IEK<0vvqlvje!*az|vOQ=k2BsQ%dQ?QllNW4*9^vl@QQjr?m zAQwG*ZX+peRYMS4M;tb3*)rbz#3ZvAr7v)_>{&(>FIoUna}$!cTXQML*bbgLb>}Zx zGiK{;|F)~rqlfpKwxh>$gX%`sRneFA4$j>N0Va+zl_6ar08A=w5sOY*F3Btjzz#9# z$*JADjSvJr2Di2V=>e%PZuG|=vK07gh#PMh|KgQCJL+0YXP59Smm|^jp5J=<_U(wO z7v)PukZ(5P)@4Oum&n@tiau_hC&AvKp`oKEOmLWT=*W=~r$Vwk3>r0xnhrXZU)eVC z@L?T(Yr9dShN9Z0u81ld_+eGdM`y0qxCP$c{6q7Wm;cVoQ#16Lfl=%XVb&@)Uatn) zn%wcYI#+Mo)(l1{fhqNa1=k*sE@>O-70S2wHwZbP)Cg}f+Q})Z{BW^MkrE#0QqX5evtwW6C&fPfZ=4bWaN|*tMZ3bFXiz{sDE)aHKxVpcnli?oEl!0vcnR)5E@|@zht@cR@3L!kUxv| zi6wisjGtuB1pxs~gH5Zeca0eMC;TnJAxg*~rX`umX3gTn)!ERpZzGW8y7L8MS=*xpcR9rxgyvhCN|wg7Oq|GR6=Qtg#TSAbajTuQbsG zv*@apzp-Jz`Hxk_Z4GL>Pn(ues}FlWvoE=}@9^Ob-7P4meZ&9m zEQfl)RML_+Fwv`2jEC%F*xN{UVTp9rZyy*dffi?jb$4!$J z&*E88`Ey+^)T-Xd7I>hp$UO1F3eRo9)7UyGet=(}SF@EKS}5Oz235KJ`d*EiRZH8I|(-`TmWVxW`gKNS%{gs%zZZhsk@tHq|2!jn#SOkMY0CezcID{Jp8o*RwOBm@@vayW z2fMg5#J6j0V9=}?KKuF|TvOJ*IS+;&p1KdJ>m?JZgf&8tJ3KmJF22S_jcj9;%Rm0v z-lyfdkLB7rI>yzfXWtFi_EzlzM3Mpf?2>>rYxqX(AJ1R7uub%9WX>%HxqwJss{A@J zWhM7)cpaHBAt?g5_eYv_Gvl5YHiq3PT9YR~(CRZWWIS}r$S1u3J|4BvT7(d9J%)8RyxS<2vCIEeQBf@lMBR&N-wa%DfHzJy|% zoF2izBzs@e1M4W3c@yAf<0?UN%}#fy91!uYpiwc7`1oI)8)!?gMBtn~-@5Xp6^@P! zlc0rk1cSM%(=pVWX*BAfODysGn;-HE;j!qO+n+q`Ja%k0BYqe3)_pG4O#H{Wk@aYQ zDB`F5M3ss!hee{tY>(jvP(=33qR?xu@7e0kO;+uttFn4 z9axv{>M&q{Jb$+)K^OMzD<1kqrq#@Jf*urPY-(o@He zA4s0QWadn>A5~rxQ>z=(re||?8Pwax&sAFd&iA;mbTy$X&AeXo8gFTnQj6GLpq{)G z;iQVtL_8<;P~nkRz)A{UZO9B#xR}hS6$U#&>J)a5>@n_ zor}-fx~t7!dmqqgH6F_l8z$Uvl#``AMwRiJJK!0s3tqIbwA@;{ls0rVXw+bu(i%#Q z8oVy0+U;fy=5pnL=4}}R1l5J)u?Z~$KKkTcyY}p}F3Sf^Pmf~YIhcS^E&8_hFytWitq{Zp2pjb~B`Qk3QTUl8p4(_Xh zVPaK!o$Cq}&azy+x$Ek>hOY+laCf6E%VdTwuw9(LK7PhrZ*N9dE6m7C-Uo4EBBUL= z$8sIWlRy%#^=3*VHhZz{7qy1wY0nV!D;=3X5d z*B^x|ceF_evm+#iLa}TAex+vj?%naPMud+9l4cAHA`_+XRS{yLEPhsQN>Gp%!dBYb zjeuBm=)1|?x)R}dH~Wh20e4lIhfX$(APQgZG- z2$N?OJL6rxO%;K6Tu3N@lGsr&YS6+YIrp2|yvX;4THdacG<+QWab?rG>S!=l2|ZqV z-Ektja?5Xzn;Lm3gbPhhDKr|P>^sl2eEUeb+)A!dO#82YO$p26KXXr{EuMnAv}x0R zE!buWbi=aAtOdi0{564p%+KaeO5l|9tFt2N;s7QC z0rpS{rqSma>V;U8Xo%am#Rgu}$6yt0$~cSb`9e|zpS&9O&BDT>L1dVn@nCF$d|gJH zXGj!2w?E)*0GF?irp9f@(W6yt(?(9G5n-Ira=^+hu};;>HNh>tTpe3EE`C67-n_?@ zx6GTutI@JqO`O;qM;~-l+w{MXw99^M^!If?uA)b3VY;1ws|mF_4Rdh#z+OI~_>qID zj0>tzoH#l=Td$oP+F~%%xh$d_@9LTWz&CpASX;3!zJEC4XE#cpGIW#Cb_&lP97M9s zk?(dLKZuWgo7RTCtCzE14F1tC54Q{VuVqedCKlXCT0&b1*nc@ zZAz>|G|e@8%_(fHliW~5aXib2GpktTq5?s%zP=TPgRsAZ)}}9S+*WSa*jZpY{c3T= zWg;7+bx{2u+BTK$c<_&0xp25~E&f$Z4swpCC>fA#u)U4B)U@ueTQY|fBZF+j3PP{m+)luhFd zVlLwYT#faf!0j!q`em8v(NzbQT9yws>tW|!OAXkDCzP3!Q_9}}e78ClKD9HV1y07Iensd zR1s=(D_l>WHWWok`2C@Qfq|@2m4Cc!GG~aDjPA2$T}gg5M)UlRMer!hbb(A{8L;Mr zzVRL2{v+UT&a|$c-Wn#0nAlkM^2xH=_S7&7S8aOjHp-oKLjSmy7)1uRtK?Y~=$;fd zf^No|%>B^y>u-?Xv7t%V!S4UmFwC1078+`_b1OUqnJ-=N-9?>^-?q(RM;kNX47(8{ zY#_=-xWn0qPN{wKg$%d+KjR^;TsFuz*i4Xxgg&>smerH)t`jEIR;Es!Dj*402m*q^ zygzK?8+3FG?SkBplBS2R6d+n0;D`b(0{TKT#Vv3FC#2iFe*3mbPV|7j{uf>j3IY4X3)*4QG`m4h1i z+@$GmzKkwcHU-la2ms7(!qG){=tyL&W_yD`&kDbBR~E(3DoF0ep|!1ggglLF$Tq)} z+0BB@)hhcRO-^NOM;;Rw9}nl&+5FHZtQ6|F}q?L_Oq5`8vd_Gd-I+O9rM87Ti zhG!3_HPPa$;J^h?R{8c&EZ6@xygc{h5k_)ATH$J;MeNLqBtYVd79)wz(G?7vP5Z_6 zspX5(^2`l#HB=Fq^Pps&`9hls6UcQfOY536Z5sJP8RV#Rz*|lF3(C(mOzD8T^7V{t z^n@#4;1%$ggaZe(sYJ*OpLj;>OH6#iWyAAsTPEd_3Mb%Z+qP{nfg8?=j6cptPfJT9 zlEoJK6fWTgYKxVXU+&hf2&5c6J9lZtw|d-MGm2A86e_*F!{%NF{PmvxvF=UeFambA zjb5!(erc>*jFoLozlqpy)2ME_sc-n-5XyXXc=Q4%-%a7dqht3%RhHlNhh~*;f zwSNO-&D4vdriDJ8ZN?uJd1Ax4V+>4@qgdeVAtV6DTNdE1uA;9$2AD(^J*h zx^k26HcLbS`xn(T?5w$*%ZdAJaCXYxmE~EDT{?}k;myE!YX7u1=m;N9z5nvh2gi?{t0hy--BeT$5fCr<`SI>ODHDmw?`o-w&%$rZlsD%0UfJ*9ZY ztXb(8jCnb%J@*_v8jjIt!4>tZZF6MMW5|syTcXp#q5*M9t1;`V>@5#*svRzm5_L4) zo?MY69#H;_Do@GAy_}pqAOSrGw7T*lja4yXrChT{{eoXbY-wx{WTa-Q5ji1e2|LC)*9Rkp`u-O!LT44Rix+Rq^H&hq8BNsS)TFAFMXSuqd8tDuO3Zd1v@)j?kE+}lp&r^$9C{+$S4 z`fG{edG4Km7d{no{wbVjX8LCW0kXM6%}+kObNBAJ87A{!y8%c0mr@~uXlZMzB&7h%+U~83tNHmLUJPdIXN4o-eg@K$ zTF$9y9Bxk)HEy@+m-4-8U^vRG;n`~Q<^~ag?oGty1byUG^ylo^vyoIqjm+R_*#D!mB1IOg^1Jp_P>Q|klM(y63IrwH^p2Tt-+DWfV>yJ zR+S17AofmZ1D{zT*o&hIp76gR85qJqtY$Z$^WvJF_^~)zBd;2&`7@DwFl@;61oYGJ z;Y3?oTbWlRnNhKF(%9rTS$yTV&{9b!DVzX@))xwhya~$!*={Clo6o){FzC)>;;*uh zN#%aqK|Ss@_r6`GXNpdfE-F6i=q5|Yz(Dp|cxQ+0%Qjh;&sR6vF}dpOppHjw-Mnen zYv+j*-B+$$`GH_GU>7yC9h(n5I2x?*R;@!KET1lY)h$DYBt8@MD zYuAuFuEF=KiqKh!u>Q{3!neF1dDW8VXIk$$xcaF%&BI#_3A&H%PVDN=uBb*1vn^8v4s56O*zM~%=rA#=?_ zp`fOsX0|D>V;FJ>jR~S&y9?bBDn{9fRe&yS+CSH}#(B@>31OSr#VyL;mm}{l{$y2@ z_khLA0{Pi)a3Bl1_MuRqs@AHTbPzzL zY1es^AsxOyUEjG2ehyJi`dhEe7~&rPNjfug{zsDTcTId z71CIwuo&kkOsi4fuE*^DYCj#DukV81&SS<1Ox2Z-huEzNP-J^PSbeK*?-uhu z7^Osp9ime`)c?|=r(+fmckQEPZZnku>}|)+opS(4g0G$k4XrKdBHgrx{kY&Z>Y0Wz zdi=hzy=pms?ddBJAzD{FCaF|emYFdyS%nw88#b=jyP_sDX3q{Ncrk=(&)`h69{?02 zSp30*_Ij75*BI`kyNZ5MdU>+QBC2}ybxc7LgitYN^rq>2S;kMs7&ed?#9(h#$kO;w z@2X{JN6#wD4x<%yLyRoQYsn+zN6arMerf{rSY95glku35mM%nMCbI0kc`uEs>u9RO zXslj1i3W|cASt6Nt4VWI^M7VL?eFedv@r3_rFiel=gb|=0i#yVI*@CtWut%YruQ(F z==|gFH~gdDQmZQ5n~Ri9O*7tj-{RsLzP(pnx&tuXbdE0}tE=fhKxgWJ(nz@aF7WB^ z-3j9RquFSnt!U;7YjH68CmM(72?y!PGk6~yA#GP%`2+hT96#QGe>j9r z=2FGGzScH2E|zCwa63Ub!*Qn~SAuXbR(-)RK;gDbJe#y8-scxU2s)3*xG|h*;@g8n z7-wK0BPwg=_hu|XbQGRyJ8G0tp9yDgzz-~?65~e{Y;#rWqena297iNO6y3usO}k?W z^!sQUUmZs<^^^dqEDT#}Dq1YTtpUh(@l8|sLB8P4YRW*p5A;bwq*Hl#4VpD`csOSA zmn^XqILB9pWyRL%kf^#V7;w%v_i5 zh!|TLUd;54ionvG4=6y9&m{cpzV%oE9+qQ}5k*1rt zR9UI~@%-}Fg=QbmXO)%*TaCLnfZ9ng;wI1LWS#BQ_U0ild$QVCn~3gI3Ks)tqRU!0>o|L`qv(@z5s!WO8z3$xxUw+#J@{pAbkH-8*o# zLM>|i1hj|<-YFGB+}(ex^5@JMVO@y3!?dz76E=eh))$3fgcdp(Zd}}Anqq`?DO-H} z{o8ZLm%N`c^6fH~GqF&QN@2t+lq}f20HxmE8{WL}*85gbQBlfyG#Q+5E(No-(Q(Hy zV`R}BMs}x}cGiNJ|8hRQFBw?vS&8HYA<**(~mw^SE(RUWJ|( zvnJWYe0^#eU6>Zr`RA`I&;C{;sati5Je1I~)DtMUu_V&*vMAAKV*6*eujo6=)6;p* zhV~6d=UzHRg=ll;K*)+(8C^t6M%$pW^JsTUJNV;|*4ytV*&XP3{%C^UD{7&5fbk2C zYkz-cyKiwp{%^H9#ZUD(M(Vs%yOdhYZris{ObjXT_MCdv_RjQ4ccwesGu`v+6Ec87 zye#eGrz&G8boBMOCL}$XmMU@<7uHfP{^3+%!5LK+3*8XkWhUBoXmmBCquLKWME$GdFD9sJw`I8RwD zAX@UguSerB$U z>D1IebF%0I;NH{t(Dv)fk@D0&u>r26K0$i-?@uCAGxCeFsefNllpJj7q`MA#xxh+P z-xP%Vv#py<9#eGL_06L<@Sg(UP|M>ij;9ov!Ln0YQ0BGK=#g68eFx6nA#JM?cfVjD zeM}KIKDFtd_f@^7O+zRXo?c#eucS}Zg{ga1jWUeuwI*%~(Yqa=rsUK+doAf6NafJA zHvmpFH|CVC8~`Qja;XZCAviRYHHQX(ero|)qvoLDa~?nVueQ1MCMCCAS#*5zg4YY< zIUlnrldb6$MC$|G?Ni>~%*+#cED97(6?9Hh)Wvb% zhc#Qj>f3`Q5OcTK68E8Xlc30jqdZS1Qb_Li1w0cm2UEKw9(tH|ZnVB(_BW@r#psKp zl<4RX{ppYurapTw*)c(J6!!oPljZawdyU*w3-Z@t z!?yx)+N1#W)=*U4)Y=EWwcS6%RhJTMn!H|AQ~mnAc6qnyWBEaQvv#iQ_9nI1J}b1) z2l;Jj&js0z&szLAo3SdKD20t2u)B6{8qR)~ymikn+S)OFv~kStl~wYAQEvkFnv@y? zn~p!XXy(aIaTIS5n?ACA1$kpsW+SVo$_BY|Qm(Dqfeau5dY_%Rf$Ghzx-B-kxVboQ zVCbdx0MPrN)~Gl?_)g0aj$dl=>&@(NAa`FgLR*F$zRqnZWEm88|L^&W*DwA2QWuSC z=8wK4nHK-iqQ&qkhLirq>-=;O2i&`Nj~9tv&=-S{!zp{Efl|CXj4-u`T}cqE)`uO7 z-I5AFPBm;WKU1H^YVRDUL(BauO3i#%NA@@UYHa0ew4KVli$O{>8GHixbXESdmD2~l z3w0Z1kX&+#UCiAYvAugU^PV|-POtx~x*5m7gIel&k*R>_#n;Si! zDW86boR^a||N95`ku`_j=vjE|Ecua zE zs+QFicQq?u+Pn(h?Diebn_N7a^2l`O$8!jBuUy_#@$G%In&rV=XDJ$9}&eR^8t$u+UojAr``9Ad00rI zW>rj0&m4B$F*vBI{k{5y7~AwVgW(>!GH5UOUIx+- z018&77#6Q%KXRO&?Ma)(U5<7;-S_LypE_>u6;jB6vKck9NxO*LzWu7MYrD`fd_h|a zB^=7D`doH{FCm>tDbDo*Bo7pb@!DL7Mu5cVs(kPfT0i@r-2mQ`7EZO*1>tC;u}wq> zF;AzPY8>x)ArVv6&HVy)?k_z4#@Bb@LXC_rzUH?vK@5GTOor)@zv{&Se!I9#edti6 zhV$QCNqk%W`Li|GwWVLlPh{ltv4!WSBH>urm1W9WmIHXrM^}|F`ukkzr52U)hxgr6 zKhdD8(~q=|8-L`$fycuO%U-{Z+5$SUqlK5=sWIn_it>WrSkP9raQUmlRlZ_-<*ePo z)P0?vC%4-f%h?53{2eb&!vErLJuLQYCH z5aR_Kc$=W;j5A*UI>NVsS-WV`2Z2yWfUQ--hIUH2B%|V zml_b;=}3_@t!@?*S1~Kz!A31=gO%Bv)e9h1MMcKAHgo33#QH^@x>0^ymU=G^`*|he zUYtKRYYSrqidWj$IBW6*{{d z9~eL-DSXw$|LMYGq4y?bFr{=$o$TnC*0i11m$EcQrXv>xb5T$Qf|e; zIbp&CG2hYZ6E!#al~2*PoSfW7d?TrdcP(PSTfKe1Gw96XFCFbaC|}=BR7DL6PU;iE z2|}EtZ!x&z9~*O$Cmt^A-X?HzN>bAM=+_-umQ7p`!1vv5k_2{ryo_HCptGJTPA{Ch zGOkwD>ximV$)$x!hl6LY+5KMmTHdPP(p{s!)8ddGkbZni7kBm8&QtSWjmrJA>)jZ#U0BSyA*NG=Q%TX`WDo6EpHdf(Ie4^{EOkK{ zHUCa>!Re!ZBWF&Wr8L`o+qlm0))jSnreUk+J&axG{`%j|j^*TnNlCzxZ2U+U9#}+3 ze!9KDYDCTC6@PgA&_=So3yeq7^H4c6F&$mL=YbFBVFhgq&H8-Xs916;r#<=a-I|nVAuOiTQKpZ+-khel4(HJ!jetV z7igmPD(ZIDO}IdwpD{gNd`g)!G2l$X=+_(h6DX8($1k_GUVDFl_n^~gR7~ql&-s>; zzl$$o)1}UR^XjX3$er%iKlJ*GljpSi1qTlsG(R=Q4{X+lMeE^BY$Hp(rW5ZfWOm&2 zUMbO@>R#oW_9%sXZpX zOs)4}wufbL6C6u}U0t_&)%L2tO=N>fC$Eoj+AX-_wSH)zR6%W=I! z#<`d(huR*0Tiwv_6nMO~8;y7kBnn)-hWLM}HBqxOa`tvIYW{ULEtKP=NgL>n7<=@* zj9gH_Sbs58-C59m4 zIik)nPgWr&6b5EPm=ZSIcje*>U%EbRyLbcm#k`TrM)dOS7~(uJX49swY#@)LGpk?Bnz2o?yg(lhh-g~%>gD6_`&!( zjhkh96{CNfUcF+YZL&MvHMTj`A$oVW5rp|1X`{YfG$A3s=6r*_vL7#gkBZ<@1Eo^JHM(upyHJGT`j>-&U9E0S0GB zeEPBS*RM|nP5LdJzvM-MyFn zs80yT2cfF~2_KU`j=t4;mw)El&2L{;mu?&=^5Yq|lN!2i-m)baUTa+04qFam-C7Nc zbBVMmr_WO!1Em9j(;=lwPRo`pc3)>Q&k`^1Fsr_LRA*(e?ePwzEo7$j=aoQHmj!xw zXwE1a6Z;p!OXFdC>@D)ZPni-|Zhy)faTlH-HM^s$do))Y-Op`GD~VGTRZUdN*p#Nt zZ^!GG+$$t{j#8s&82WsU4E289r^^FuHoHGxBsT}GbJ?P}jkPdC@;Bz~9Ri3dOk)0k zFK0V@9t^2mK_be2Ykw58W@8NJOdK>wjWIy>`#n!Cir>SBY|Y~3Qq4r|nXfvksQ;$B zPvKUM`f~F{v|qI#!oM?p&BlD`s#y2()vbLyhO-*Ip$2?gH-9y|w#j>27K-pWD(?ym zY?P``r%vIT2R6ko98vNJF1y>H#iZHkUBGy+-}4-nHa0ViFS)fBl*ysxStuXf+0C0Y znIG3p71GxpkXoFfZ{JQnn6azF&DD`OBO+Eu!C#UE*VKF|05x8vPG&*JGulb z?0QE6)g_08`%qjcMI|NU&Q~KPeDdsBrrG6tTs&yt^`6*IPN^zN+>J=uZt>O_aBvt} ziZkmt^XeLEMAfRt?I@u|+-&O@X?XzzN7K7oSOajInIk<%$*IYCxxv*7kDba>z_n|o zRj6j)!hQDaI{sxdq6r(P=sAsbaPoI`#0UJ<@y*iqMn>w;z|Sm6<2NaJT~dJFT^Rxr zMYqk2G4{}1Xt6YGb}HEe@M^PVf zm6ao&%I~k{-$qeyiO6um>A53XLhnZ>tsH~ZHU7^V}T zRrje2|Au&9-;derkEoM2`dX-;bMCx37Z2e`Uqn(+IOf2pDgUiU{O0y#Ij?I2a8FjiI)&tD_4U)U-Ea@8!Kl zc;NVszd|Cvd7I**JZ=tJ`L%K(t(7cmV#tN9Yg1M>yZsC|H>)c~bBa@HVBP;MyFwe4 zzv_!`3XNJl-D0+y=qhxss3>Lq8GXM{&SDusk}9erem44h9iRw$o&~StQ+77}`ax+iz{HZK%SYRmlg3hBs*3cp4Ur@t0Tir)vrMaCU$&`-DWKqNI^bV+k$5J|kz7 zI3)TM5g}}7)-!2r&I4F^VPaRTsAv}A&FPRpBuR1}J9eyuz2Ql=yQZxI@jBwtJmtg* z*?r&`xC6i$*_6KqGoLqjUyU`l}~ zYX8j^i~l^v|H{rZK1EcDw>N5yamPNU3Zk6gERWS<+Ax4Gu^J;HML{*y*|OJ7E_!L~ ze3w6JsIaV-%ZJ))i^G@<4n#8bFCLT_0;J@ zTc=nwOXlkPE3Wh$y26~|HE-jfkj5PxlXT=rN3k4l-(JV+=0-oX0o!`d3rER#J2%T# z(ggDM`tkjf7Go9HM-{R#YEg$@plvSM`2+^Xl>E`8N$$b9qZ`w?`Sbmucuo(elZR!r z#_xrydf#=kzq&2*ReY0?@6x9Yom)bOY|!WVn5tz+!X%RVnJdI%CayDkrvQV5(Yagu zMrM(4(I!P)lIPF&Z96h97(AU=8+IwgME7%UIQ!1wL3m4-*-rEDc-CUI@1jK?XalcY zjOAhkn1bRbYC=o3>%f6v;~Mre59{4ja3f!?LqC|B-@)6Cix{a($gxX5Lv?a%)~I3j z*XJ^3@gGcyBGzrA5sYr;Md7y1Cnp>h81g&$hx2Kjd36^~>Y~c4|B-6n?Ea1i2-;-h z3q5CAmkn_dA#)}k2*xS92VW6+{#F9fKX&g}R~D_d z!!$#LiwH@T(M6R0Fm}UEotQo0P7Or9HxK@Y8bFlUzF{$$4(|MdnLkWnOSG@3B0i2q zU;G_Mju2kvC-RBhu8)dVYP@6)5@J1R`U)T;MbZ{!f(M}7bbd1xdQ{UZPG>9lg{L!_#QE}=nu7_z7 zP)OA5bYrZ;{mXpL``Mwfv5koEX&Bq#hz@m*)WpC$&jbF)PCZ z<95p0RpYPiQOnTlB04f)Fi@{pCOZVV1S41+L8BB{z7xNp?nZJ?+Fxt3Da?j)QU3Bq z8&xXQBzXlj^r~I%G~xqbaMfh$KeOUnC*41XH66HWqZbVT*P9Ip6I&tUywD+M(3hCg8LxH&aJ|)^@D|(8&~@-EbZ+ci8=c_Oduz z5bSyxCj&{<_(ypYzr@+#ZbkOa#9ECs9W@O!4Vs((9aQ76;ny`rU#ohy{ko>vunx(Z zb0dxMYmyMEww>b5f3+4RwjGBoA>9EK}lPlt;#RYExdTX?}<+j zSM2<@Y@JRT_Ul=T;<#CG#k6fS)%nY{w-llHhwT%~lX(^U{^IwPZeeT9tJC%r%y|eyA-0V^{a^|*?>WJV;s`xkt~{H>a*gXdtE$xc3GJI+;#(d$z{nov4469 zWt_M@X-*{5oOJL_eRiO{l_fW5UOh?;#8?8IC+<2WeAtn8FfG^b-1+Bl8KI{1twDS| zz1}T)v6u>Mb$Md?a9&ibNjM7XA=%XXmhfDY0FrM(q2AWAKnTz>>HfN=2PDG^OR1X5 zqtW)L(I^oZL}@Iw>3%PuIEJy5Bp-SN-P`l5ZX#%GuFU6|LFXO^TC={E#AH^e$ z@yQsM*_bxj^5xCl7??+H27wrUvA|q5Z&3>pl9EEXot2Q{p`p7Gc%Z`<9FwOdaX(gu zBCg@p6*6|@WcS7Ai^s-LNc8Kp6(cd-h&w&_8O%(?k?cxL3}l9}k1OInG=1@>S6;8# zcQzdMDme*T6n5C_?qA*l0u(gzgRzbN;@y5Md?qj~RJbntttJb@Dk`F+q}l{nu`YS@ z8z!vQ$sPUYs|GSi$3?q?&tzl+%a9*q;fp93$DB^0ORG@>DUJYB3ta^kd z5!nh7*=K911WBZ8 z%f5>u#Mzcp%LWF^z`$N`rb^rF6?&G5X4 z25EnP#wlyD)=ip(lD9TY>BsZvscggbkN93a+*oO7$k7ZDESUR6asv>z2A!!UuqTZu z6@WC;w>OZHa0?@l3WUy>l_L~Fu8TD-zVQlnGy3-H-Z8*N}(ML|P1DiQH z`8Kw=%nC@j-5Q21X2fXfmv*Ta#8DL|y7-HD=&J9^lHQ9Cr&syCyS2YQ@9c4!Uy`^D zfXp+~MmPn<(IYi|>0ZBxzJ1Wsg`iZLJZ5>?ExKEJ+Qhn}Z(Vxr28md^NS zUHm!F>UpO`LoDI2AzNtcLZf6yKp;DQ`$&^)ela5c*8L;aI9#0#9b_#!rMHubCT;^K0%(br1JUX$HNU^3{~zJGqD=x^&WQyrBKj^O$t zxm|n@z3{UZ-j0n@-wq4;T9eOdI`-#j^P{db)%;n-G?kzO2#M*D?|2x!gU($+ga-~V@r`Unj%B3mi z1yPNVB{Zmv7HZlR{RwK&d$66Rz9#IfXlyxA;tL1+R_76fM~A&Ua|m~X#1Dz%A72eG z*!9A~Oo%Mp&+YDCSf)?iRb^fsmJIAFA&(y}S69}Do3=ui;dNB;?-(=>TV+_weZUf} zO-yXUr{x?1@YdW}@FFu4W{?1n7iWCBbaE7FChsHGd>uXp1A-f5D9gm-mNi~H&@P7S zS=5gbn8lLU1SF9#tH|m`9A4D*c@B59Pm3AW@9SH=)Rs|sK`WIN$Xtv zIPnZ6ZVD6}S~USFKh0Oy)jF~^UY?J9YGx3`U8q#m`AVf0(6Nz!7&-o29@<%KG`L0w zgK6=e5K*D=uVYmQ4722nvF&Eg}EW=({k&(j?SP&hAs^CTH4Qe~118J?qdfUw$PwBntqZ!Ip zo|vPFqgQF7ftOXnR0g#MV_U<)g!$c73KvE)|I_gtQWC{_!BWX zRBm{URg;I+s=VcP{`BZsL4W=AdEjEbb*tZY!}Z&t&=;p@C4=S`q3Lfc>wb0kP<1u1o);-T0NiU4|NG~Z_VlO&+V}6{ahN6z0RT<*T&+Z136=W#?m>xC^f$k0 zwd&7;9S@2|@PEcM%h1=>T$4RlGw@>@Cs;GSRTMIkNKv>i{NJ*bSetzgkvn$OgT&;w z=)HL1?`M_pYlwsf?JSu0pZK|t$K<7!bf{&pL1LM2bLuy}6mw5PXE?{bIxX&=xr*qtWI$;TqbSbxGITJT;sIIsR+S&0X$mm`vK5 zJy-Sr`E`Fuu%8sPtFeqXP#71O?d!Tx!cN{HrmV(rmc6+>f|(uETBE zdh7Df3kUx9Q`7b_qYO~VD*$)pQNg=Sz+>h17u{ej0n|B#W5lAB+!EYRtlKKio~y_EQu70&pcEJhdDZUO z^Q7%uT_u8tMK|eu&JU0PM`&fIIc5|w3=>{wFO`4z;D7AcvCKK((IUWjUD;C(ZQX|d z6P^3tGfX)i#RUK+SW^Y8NX)_X_Vv(!L+!61)e~A`0YW-AoM+!E31Ar1^<+X z$Kag|lFsj`g74F0ygRt40tDhv$KMV+#HX%z7-!qr%^6O7dwajjG}+Fcls=_d3(8Dk zDBbIulGF87Bu9pCYCo>mg7s?wyV~Fp_CG#(LzWjsojE|IVxX!H4R7~6XFuPAr)?gu zAN^t6TW%HE5d#r#*s)_6&YRto3RJF)D=HOwc0JD5ql<5KK0lOdQvHXhG41VZsT8v9 zC9EsXYa3=!aI}Y8M(iEE%7VApK4>|RqM@m2PVqY;7pcDz`Nh93Dnk5v8DK|XEl@a zn|mkMFAN8U67v$Y?I03X#Eb()jICw@Le^pkto>x%4!M&O_wX~w}0J90OFO zKn0@=I{Xr^)_l^7y0%uS#MnxBhRPqL)CvrhLr*3^HL8&+at}VN0PZ53=G9f-1}+$mHvw^qplN7!cA;dElwhW`KMRx{ zb?NX!=F}qAhLA^^l_U0CqSy_b}|78*c)VB$T3StpdhlC4wKF_P?10rz|rmfas?oOh%r>|t(*r9TJ61X z$&wrvqnLX= z*@Cyez@%TlxHAb16zb!V!FF?% z6h_Id`=uzoPutixwAhXdv?k}-qYP1g0D(^Fw{D#n+j7mdYr{wGTWide+ zWxv=zde+re%CAA1V<;?H{JTlMlfV;Xj|Gy3ly^-09NMnXQDSN6Ww%1C2b}c#)=L__#3v+-tb^xtw)gi=)`2xvsW^dfyLJY}!YU(krQk8Iu0yD>iZ%26 zIo`brxAkM&j@t2Sh)FYrNmSwuJE-|{kK?bbgi##x`XAh z?2e?W^xtxs@%HkV*(M8N3KqO4LMGXu#1eth^mh^5FPdEZt3XidGIl28&7)5Xcf<#~+C zW74!HcXu<$TM^L4Ea^EJo|kVr2o2-ypOr*5iGtqR?bbQp*}`=*q}Yxh-vl$Min|pr zGH&~4< z2%t0!hySb~mswIKzM2sRJvZ8a^vlCXk4|}I37wp0;YG4c!{U`S3HcP+YRX}xUXZ;w zuNpI`i>V$7-wpDI!woy(fRQJ=_U;-SqjdF>4oTyq$UH$#S&O^2jTq>9i?AsP!6xd+6G-oQEz8ASGEzlt9BTnYM0Q%=V}i0_pSQ_TOo27(jQO1B~1 zMM8NP^w`=_hYgPlywU3pwJ0KrAU|#_zrWeI1G{&xQPa>Wyjn5so{p;3fR&HES8%1~ z)N%zn7Pb8weFFpMnYA*x%J+cP>7A}ovu2x)9qalZ?>vi*Jz__cBwRY7)x6={FokZP zmNVb-(R0X&6yyR#OCA*Jx3YGy%dnjp8bR1T?P)*X%Q8X%Me40Sk38{*88aHeUP%ho@1+1%O>_ ztE#onXBRc~8{TUd(i5+AR7_OF=90iIe@{}GZ!3^_WC3$io=Po>G&S?l-|TvIZQu=p`@>(*MFtj}+X#iTzN$BF3BGqbW1=(8mM z6r5f*P9!hB1ef|BP613^gnwDfLj1}UFf)7GQM{d9a4Igi#xWMfB}VyO=(8kx5T!yF9GA&D zu|UNi5s^YdXh|*{Q;wRm-+M`f!u|D|I)X!>E9Esy&(5}evycYM2A&Hi5CXga zCOnylxeMiMqA-|T(h3}`fG5_>4w}N-CmK?1O}3`uEuV7I;~+Koc4HT*h!c(YkOzEp1(E~@PI0M1@ zEumxZ~0MIDrFv|=!y!C_C7@49xaQ-+&w7jJg?8AID6hq0*$5D zSxNvOu0gw%{fW%U-(@mHcAC)QQ92RWN6+>lSY2EXXB%M!vd`;cHGc5wSAG9RS_*3^ z(MaF4+wAu7^?kl_)sG*_4>1Q&|0F&o-_K;Go*}E7MDxOn)bwR@6mE1**7xvm2Z?wU z-6L2U7_*U2r-k_(ho#GxN8MFl>vx|h)SITBr)@r8BErvP`YrBC4pdS;ec@*voJ1X#+6}&f$(B`7X>qA1)VB9~j&xJlk!Umy${a3FZbn&8>Odo}D zq8oK+aNxX>o6V(JdNU_{-hfrV>?XbO-)8!&tNtn-3b!rY4!XS!X!gZBKp(r;dYK<9 z1h0gQISK!XUX|c9*#cl&-ia|;46Xctv7yhBTCj*{eSpFrn zP1Ll@u}Fy!1{pdwA^9}$3-xEc<+!fWD{?sFo@oVPh(0{^@{ZEl1)}a1Hi*q|4N79M z_F^xT$w>t3*<7sy|`p=VLb@No2GYZ66x97KUjihL=x^8Z%Dkbe|3(^ z=7HDZJDNzl%jFDjXT(dVTxD^Z?z%}TiDG|YnL>=}ZwNkgT+!UqzV1B4XWu5oAiWGc z(Qod3i>{G>1Cm%Stm_SFYTmFIb&-LDaj6ozy8;o(+PROe8tLU5XlWypH~#!zY`u3} z&wcy<|88f5$-q~pwDaj6bC84Yckz}vT##L6ONJA+rl~EBoDVvPQ z_kOs}&*%5O{chjSAJ^x)PN#amU*mWl$73BPJg-n!*C}Z?;@^%&+#S*^nJz7u1Bd-LT6n z2_D(!D=BmWV~_&x`sEVRR`dNrBHEg6UiXV3Bq-xJB^9kO7Ve-aKruh-j-_Gor$k-2IrTjSWM z-JhoE(s>9^(Hog4!}Q&_5)y7Liz*n}Hbs0z9ZTcU2#J}PS1d~;IPWJRNEpWTtvPJ! z_>Iy(7a1x0Ft-=4p|YD;)&xIclC9oRRRP!9wm#U80B*7bQ+pj{nvy^zkR02}M7lzWCw*06Dc=I9 z0LZ#nDf$j%KhEIYEgSbaE*B2Z4EwHY^K1A3#KJq)NaB4d&#F+upnsBiM4>1PFO!UN zpX0-kOH#{KN`S@@MhHx%R!E4Ab0^QbJCoG0P1{9MGlW!|^f4XI4V*ag0 zXa(ekLun?HidB1Q(_V{pdAb`JY$$@dZWYrL^REamNO|L-Q9dQ+cdtlUedpp`4qgGx zmp5&-(~{hCbV@-j_C+WWAn@M>mS+m3fbzut ziK{ECsMrih?yVi5_Vis2CH&NvmC8_=?bbi#67LJD+S{wI^i#m+{TVZ8Zf~^iR_NAP zbas#2_d0&&JgaZ+U~hkj(o2{64`K*{vTLhgJWfyCev7v@vzW6(%!ru*k{BmL0MZhM z01DN(Nv&7YcO5-5jw)y$X~92zt~`IfLcfsCXeK&2iJ4M8-LoIC$8gcC^n-xyEOI~RpTVNIhz-#}wIjz?#<=%;j4=*?%CKV4J8{MLxm(eUO(zNm$ zl|2jFOvkNLcfP*9bl~Z?k2n02Fqz9@KV}y6Xfi!t`K|3Q4-Dfu6eYrg0}>rffSha@ zXm?|HH;IK{Bg?iP-F0=Z?gqPT#Z*cEfA|Gc~0t%niKVF$jmL2tQUyIcsX8>o^4?vaKmYw#1Ia7A-U!H~} z!*q=wuc`=q*-+=;X~0`ILVG;m_n-Z}sAPw&hKW6NbHpCgjT@DXDi!>p9FyX))aU>$ zlopn`d0Q(K&2*~IV=Dl*(M$}m9gi7uM~$Dja_^?>V#6fzbWrU~(@~Jw@%)a;U;=dS-I@tlrZH*OAz+8T46xmZ?n&9eY)c@!6yv)-BZm$x z4g9lCky;$m|8HXEeLl_l7{&y%aNKvMk$`jO=I^SEtj!`g6VJXh9}quJOG}Ymwe8WX zSN#uJ7bIYCh}{E{X&X0b60(T2RM~Kz*K4=wp0B4EJX;Q2zrfNC&@f80Q$H1!I+#Q; zjSr@slW{Al^uLgumS3kwjuR*DKH@w96hMCMS}mH74G5=Ze>}+X&WN_lvC-b|6y)#z zV7LZrhBH_|@U>u%`=spA2T{O*AxIh`(C@I<=Rba5B}P9UQdNM4gNK$6Z^0o2!DVDz z+k2rbhmnoGG?~0u*bZckN~Sl~a0#;NDek+)OAXZ~a8hRa?%TC%d`Gu$U}K8rYQyA? zzn1;pVchF%EgmkDt4|@GUJTRCkL#LCqmdDC2{i=LzcmuTnw>~z_>2zM^*5zSfAm`J ze@&*Do+JDu2}a|EN?h_LQBV*mFyle*AKbgQql;nk-$BPno!$4Mpj)Qeq2xt8uW>gk z9fl8I$9z}TqBLsaw1S*QqVI*T6Sv2+p7t8u8Q*O`BPkpwc~BM0_)88t>rQD*ak`%T zx7VmfU$=0Un<`8UZuavnsmM(mjkFJo$UDY$<9{&``twkl=X^(|Z5Q^p-^vd0?s+wl z`0s1{jdRVl{%M}uebvGI6rQs~=saE~X#P~P?-N^-^W|3Rn&OQ+>JoRMFVZeG3PGdr zgD%geB8?L9E4B}lM|9kZT~mK#gDhm2)_JAZog_a~q)~%3tw7sTBu`-V&*jqD8`qPU zv}xAj_~gOZ73EXBldQ|8PxXx(#0m{XpWDc2*sq3yUVOaz~nR{ z?7$yPG@fHJVAR#V)ClQJPenZ(+TkD)Yt!noPv6D;RM?zcV5+n9{5(J+KBZd~jFRS$ z^*8nnvc`%)smgeA(#hik>eBbpF*k?CzYcTRV@EXy#SKy6FN6UoD|p>wNX*QUHyoyCwazNX%u=*6n0L)=umdimX7Pp`S{ zDxWhbb|4(miE;Po{p@}6Zr0lp)NW|5YBeB0g4GGRR7`0DH@`2khaiuZ%JecaR*m**09HCM2%aD{rja55<)zDh`HgP#6=dx2ix5 z9c#NL;IZDBTwB-VMk=2uK}BhTss3OT*nT_F69{r9I3Dl8+0jOQ zsVR%M#b2J9uzb7b1!y&a8*uHA{I?azS%L?FqDcFV-1FueeVNR6Dp?>G_@a&VKW?$$ zP$6*=5MWaA5A6N~UT*c}o;Kzr$zGZh#{~fu~KyX7F-MTzW1G6ySQ9)2X2tPRp+(Do_Z_pkrh7*FD){+@+yKN)VqFB zt8=k85ia@!#Dlj!Yqta!#E5t`qggSsYCy>J6RQR?BcsVXy{ZNK8BH_>z@((1+Rm^Y z%8gA|o5%AZDHn#Fh!h+wKMec{^h~tCTxi|}Ii)TgmnAH z4Z>!tcHFqRfUe*2;ObX*%|t`#H>y+nAo8)G6A$wiNq=@vIWbaA_dpG9GV!OaqlfVb z)@#r}lS7<__z;x@z$T4RLV{+a7ZoS2yf9|Ne-O#^pE&VCT6AZX$(hJnphheh(#pK; zx=)jx7lIbjc1}6txp|YGaf3o)whz*9A%huAK|(%yOaI~nk%JJ0q*CgoeO_X3S#Qbf zNQ+J39j=|s?iSNalvMNv=FVXl!Ni)vsi$FFF~k05ou9yL6qnHxCTIgHKFbkQ1C5nf zG;|rk{%~)l?_WDc7eix;EE3ge%oRDteN_Nar>iquU&*8YLVqzvpC6B?O|s%_pT;o!Fa?vk46!E z(oL6~cz&9K7eV$8phpx{8#$M%Yq@chcGnq$|EX)&Fl_uf*l=04N11VmuwVE@EkI%D zyJBYjzo7y9n|Ga44>V0wBs8}a3K6h!I}p?EFF5!C^fSY2E&~pHl)R7V!N*jJnLTy* zLcXpz1bN{_)+WXm#G(rvQYEeRMODjo4(B4@4-z4Yv={USJu=4~R$h#m*Q7XV(CLbp zVHIVwQDXO1sx2m5PO{>wdp|yAHoUn}lP2}MXVDcQKXF*B5fU2uGIiH0A|=o8zn;7Dj>Shj2X z_LkAgVz72TlB^Pl@!}ikH)voQYIBC22XJ>BO<{r0rzb2=vESwt(ojwIrZpYC6$VG7 z%OoWQKKacQyU(ZfooI%XMRKx}{(y*C7CvM+c6hYCM!m||u;Mj*-3OC1Y$AJ-DY~yb zs+avuzxO>myJjf$P_-VxujJa-9gPJ7C~>F44=I7gO_xqe1lhA}uA$p(DhAltnY*n& zefe^OxprP&9ek!^f@UH`6C-0-l@Q(VH>Rzx+{gFY#&U#8*WhO1*BuOTXl{c(K+*qDT_y@aFSCTMg_Id*JMKV@}9Zu+_IH;)6W+ghYFpL&(>PJWoot(Z7B);@at z=+SLDn|Wu*au~RE=Ca9v+DVhDhwQxiyE?Zr1mVB83WQ>v}!@D#`W2t$kp6<(pu2uo*mfy>1V9pV{EHs`*YW znl`m)9W!&b**x3=_%0orOqdltX&MvVAKS)3E#16Su%sahs2LCu;vw0m>acb{bDqgL zgyChwLV{*R+$)Ry1>2k8zcPLT78#`~`@=w{# z_lf-`Qdz&B7e{LS_LhZl0GLAN+iSafn)@;_Y}>oHrcIBN8C!!+xdi3*HbCMb0ayE% z4BK~Y>l!E>?;RQeJ3jJ+E&udV576am&w}eOVW;zoF0>R_5AALgaUUbJ7g8el=NokD zD$T*W_vtQRQA^;IZIlN?)A;DOc^)CW^|)kFX;`R zLDh@Zm1mWD(uqoCxqQN;+No1F4V%!uRZOJkDw9Y}_a#A_H=FuKfrKwen%F#eNPSDy zOy_H~!qMKPgE1x!95RG}i}iY~9?g3=vc6fbUVB%~VoOs?Lgsp8+zj+EHETlJ%*RXZ zXli)TZCzVEY!uertGWJ*y!C8im!+Tdj2tKaXV0FsEgK(ytD1q|Ua<#f=kPLDzx?Ow z>Rs{5V^JO4oIwign;K|;&tF-LrS;b|QLJ6A#@8?rJyfLiVdvnzearM}*Ot9@DE1H0 z?fz2`-HHjttnVV*X$#vKL<~g}9{4E%vE3=h!Y0}%8gh=#@zn3&b&P8fA3SGO#}&2L z?%X*p!o1&U()w#-juWgvBb+yRG|u0{yktUN`+>f`&vxp&rLQ7?V&9_Z^yyxx&6pH~T7cs-DKAv- zqFuS?9D{-5Z-*g6ba=MS2Yi5}+>yC@>6pWq6Nb#`PG$`>*v7aWcRK~<{N-YS!J2DQQmzL({LjuB}Xa~)of6lS6{C7JBA=|Dxx@DV@OANcIUiR{(2@UNS^Xk{v z{{E$fOcf(wq`i(oa<5gB2 zOJy=g!@(DiNN!>^#+rGr~no|j?yd$OjVV%_2UFnAh`0Y*385dbz z9TFdX)g?Y~qu$uiQ}O4gjIF3pDgu*_13<#)44|nZ-#`#R9B3tycpDixch|-rOn4vr zECnCx@4r(Z*PyoAOE*OJ$`9uD>KEP*z1*~xpG$`scWB>FHjx1mq)^vnkE za!4Aubk#eeF1QB{LoZL*jU1zX^cgVEbnhsuz!9CySb)hWwZL2PR^yjR&P_>4a%R{0 zNR`h{hc>K<;QR3 z)^DytthoT0Jm`x|1@ug%I~Th-{eGKgwq7ggiI>Y%FWboBSNDlj<;&WW3yvN?r`Awu z*f7=i`;<;@O$<}!4ZrD^u>8Z}hnb^M=YBDX(f{kr(E7InNA!JQ`+RycccTk%i_IXV z))I-x^^t`Whyp|2hD-lm-ytHolCfP}LPddkgsP<5*6H;}eO~XgVZ>m}4rM-02&2xih z7*f8+b)TNw*BIDo*KxW|F_I+kEo&DKce{ynMtP%^h^tbe6Oic_&`90n{X>Tbs zJJ>EO>6^a171UDIOv5hmKlUFwXV9+O3#gyxUf_SgTZic_#S)2WkX#3~lJL-76)CSC zuF@&KyuO&+SxqYtt91UtA;=1O$ze*gMlDORA9#K0d5_aV?(eUAu>1U` zRGG~jz=+!Rw>e+l>*<)h#GHn!@-}?2gtQ#xK2oeLKXHn*^uEeP!TUABdGqMM^qLKg z*6B!*j)o@;stT%;+|?Anqw!Xo+PikuI$OIkc@kri*ld}R>xdFX2 zc&uF1XZ9R|>mCTR&cV0uE}YuKdUYN2fjG0;ch$yz#EahgSb^#A5mt+9XI0;N7~@v! zQfT40^cR23=z43VvkFu<{$M{)q$0>^pV=9(a#%DJ1Y$T>ZJd=>#p02xbX2Jhxlpzt z-YwWJwjyljUw?sGav$|5yL~!>gob+f{TO3(s(* z#SOBmD5ruSpK#2r?UEx_o!y3OexwFR#mB!4bUZcSKXom!#3m@eo3jo=96aTOZQCvU zOreqOs5xJ<-?m3cVQ`}G)WaIO@0KjRI%JGuIl$APL7Q$v?q6E}>+Cuzk>b3sNkp+T zU3zi$%c^f5TCtfaSh5glwj@6W@)wa6X48#80iWL$w>YJoIwjkaX-Jv!dxSpY=7Z%P zjZJNS-({q3RQZE0YHMltBWr}QtO}%yfhZ)`wt;vCLj}v^oN;x!bN%|-HZd!a3cqn` ziQ#Nj(aV=Fh3L(QXM)XhaJ^37II!0_$z4Fs;=W}6`ZRh{*96NTv*3;y#J=X zW15|Q%$S~Ya4{7ECqNw{kBIV+q#{0-Xn7dFPW9f+4X20sfZR(I`7oa@-W_Y)nYZWF z=b@L^7aABaS(_LlFnghA5)=9Q)9KSYh64s>mVkM$yp4L;vc_000sQCUcS=!2;0IL+ zaGk9m6TR7J*Xz|+E>Fl5{RUDUmG0T)I>_s63NAU#u4UM`@%?YU;%GWnEl#=bp7|U_ zM!E`;Y)XhEp(3jp(ewBzr~PxuU)#oBI8GPdCK3PBaOO{`0{_e`7LzQ%3VKIn@PijG zUy^j6kY?}`$dSQ2{}Br;vdLEyV+MT< zNj2>TX|06ouIB_u(|?~AAaZt2w_Vkt(ND&_V|^EhO8pCeV$M9{w#?+p*=L?adP-iy zu20in#}-Rs+|IqS37KL{h_I&Lf~IrvgX>kUfR%G?dIC5`gw{NyJv-;&jMxH5B+Hmw zn_b!W5A#{cKgvHDJ>PMoGnTXZM;jbd$Jh5)uekB(k*G`N&op>pA&7VOPDhkO5~o9D zcT3Cq1~=~iMeI9soBo>GV`s(m;?k}~{~UA}BdSnhTwsho=a^VrBK{Hm*>|7=%zrJxi96uJ2#_! zocQ_e6C;&y@~C+7=1q|W&CC=oPp_?GmzoV@L}o@Q6ePI_K$C(z3)QKLLccuq(n2jR z^kAg+ASq(QCL~UyjM_5T1fBGFtTI!>5~>*MZm6ayhY z0>L5okOl=i74)XJO7;>zJfLR1;~LQ`Ac)eC)N9dVWP{V)^peB+mm+Zp$u2>dC;nOv zxpdH3qpsn{jtjpJJxf9M1961AWS=>sY)wraoq-dS3Gr!$_dN>!?g8>PfU?6Rya1O$ zP*oO~Fr5Y>OdaE&ebLm&;_b}F!|m)u9gb#c(yMu&miH#PXwkW7i5KN2Vz3QazFD&W zTJVlpp=800y7gY+>~k|KzsLrRsi+6IG-)vQnLi%ZdDcaV>UUKfzMVSNL#%yt=fG(* z&*d|AiHQh%aXODCd%HFOp9o|KrO9CR46E0U4U5e5%X=4f zpLgf{v?~p9S(qK(dhnnz-M9-L8Plr0GclH?*1XIi`41DDaP+iV3c#ff8BU^K)StKv zlBV{6*f)p4;)57T{d3C}#iW#5F38;)#uOg_5DO}%0Y9(5$n@-{i$X^WP&$7ta z2pt4V=eB(86I=S2BKVYBAp>;!E4!{adGt=te&O{KFZe(C=UZSb?Vv<=;NX>;3O)s@ zx}HC~j{I6&{H*=ST;1(evAqfGkQ_uj`@~}=PYY^>dXI2WuVV_9^#T9^jS=g~ zxI`49$t=lJ8FGJ|0UXR`2yxk^0>wB4gs(F~QBN&}uGVyI{II8+;8-5D_;t_40-U&@CBy!9KkbL_RB&E4AoCkXWy)`vo}->hS|nhx9NCW|aZ9UuYBlYHy^j zJLm};6Hf1`8oq>W7jM59M?SB6?CIP&I(0`6xh>8%cwe(Dp1-{MXAu_8i%v1!aQW&%2l5lT|o zdW(BzuiLcWYn-yw|7^|Cou4C*I^CgxeqxLAy*5*)G2^8=%-mFTC41G;He`3CzIrpo z%&#!BF32?j50T3@SmFP9w?R~7+H*M~Gi{6{R0%)ahiR;laCT1BzNdER{b62nRe;qV z!hCGol){-~3J5Awx^(K43_L3s3FmD{^i7Fk%yGTWQKa9vaUdwoVeDTJGy8t=BG?}{ zHD0X#v9fZot*s{DMBv2@A{RmkHaD*LDnZRS=LcIxo9$|G%JbDZ@I@E4+lkSJzB2O2 zk0XM`fgCv@#1jog)mP=6gjmERo(ns|J!aqcKyUBP^oWeZ?}v8}gUe1~P{R$xE|hE1 z1;lsO$fvWypqs*rZ@Sda5VmfM>_Oq4XXNIZ8`RuIwD=YTEv5W^A?U=g{RlB|X1AG6 zPFRTAOI!m#a*y@0b4tN?l=V|yl>2T%y|QE2I}j^2KrDD$WBq0A!<0mM3q+g%T!vf19e*{eYbtw!WG%sCP9pT=p!VNkIhsiGv_Z#)I3n_D}etr{|UHt>T-Hvfm!xeV>J9vCCD?kUG31~zRHyxjSmk08g9inaL>iQkK;~3VxG9-4IlVN}-H8nK=kXFlG!Kl3oxD0JN8Q`j8KB#;#SHWX ze~8qOzHn9h>Q0zH2*#b(T_SFQD%snG6Xi;aCQUZ-dbtNP9bQui&x&$M zuMhh|GO?|t2tYmJeA~z%>W(rVp4GJ_?JWb;o&t7W3*k1QM{gEg= z{puQ>j6887y_RzP`Btqbgs38||MIYI_fc9Zo?7!ot85$2H*~QHnfBn$o#^SozKw`` zMjdZpGy|FbQ@6srJ9j__BeT<+7#YP@%iDg0NT{?k^Tw}j%MpoL$7InXUcr{=nNkcA zbX)#j-N1FM1T=SE{Ld&6Epo)JVaaj;m^*uAkbEawZyz&ZLK@Sunw@`t_amoIXT@v1 z&iDD}-8;hko#DftLY~*#bb~6jmYV_vl@l+vIohEp<@aj&pFaG3|O-D8vm&?GJAsTY}Z zv&b9TJl4Yoy+p~NcN5*5ocwqzTmVWX`H;B*|F`6rc|812&^nWxN?-1q~&m4;xFsVje@>lXl>&fNt0AY5j}74@H9 zm0gq12VG{y5fwh_-)poQ64}L*E@@LB`fHhnABkG4na=#Mx(reA``mR62E4xIQ@fqU8~BSZ3DKY`-RK3kY9#V_J3L>;sv-H^j!r4+b}Y0^iJm{giQ+{o#^6 z3c!#S z8FV(Y`dbR3pfqSN8Pa-Jg}egWuO1bq?YYZ+D)Inf7zBX z2JSwt17VkHXFD)3?F{9cmK#z+7( zvW5{>(_;84Ub>JkKV0iivMngCmV|=Ju)a?U_(N_}?15rO6HL zgo|Zc#i{*$HCg*j*{#6HBpwo4M6m`^t)3#+D)cxKZai4ws^y$;t zzcfN}BPnpNv&d$7dFj|r5Ne_kZ^pPSEDpxy{Y<3)w7n!@NgbfGA~CN71^r7m^^&B1 zk3YHCSazA-YtyckdOg5pE?&AMf++#4_>A(l;_0g0j%^nwvy zBB6NV*KOFKgM(d~C6Q#|#G<{r&WCi|HXMAK|8#RRBcji7eIzQ~gz}ax^#J@%1lM_MgV3RO*=*gVY@#6yZ{ZT1RoXcxsSr5uv>?TdDUytri)W z7Ew`2fNA()pXVAPky4U=RZd}(O`c;>Y!Z!=>`DPNk9Ol#EW72{I-uUice}&FGH1;* z_;`pdGyZNjmo8g&J~VEMLz@O4VQL;diY>Xn9&1`MmE!|$IME%lwu(jCLS~XiZM{2* z0i^xJBdlDEo!Y>-#>ukKt?$VHS$QjAwetO=+dk`Mbx`y8B_#9~{c3sn6qomzsP`tN z^=Ay8{@??}sG+IKPP^y4c3)bKM^6rXGBN9-+EhyP9Ab#77pL-!f2Cp}1J z?3)R6|7Ar}pYE&~p7;?B*{eN$RxXVQ4!2(Rch2(lP2g`eaFtQ;FuM z`x^CaJ2$f{RPx;L&!*I}L)Y}&?bU%kE3L8`{|z;PzXfi*B?--1bJda=lVx$i^zdbG z9DZCaa%)+UlxrpD)Ve67;F4Jcj-bK%egJdrktMJzlk~aXy`bX1BWn^D)$}T zl96Ll3vfHTTnz@P0-M_a3EbYSAjx-S!(pE=_F1X9BAvHb*={#~P`h?*N5jd0@siim zEuNKInQ`Yv+S^AyIG|y7E|1SQFMDqnr)1THkBwAGKVG-DGCa{&f)#i!RohnO)8OgY zd<^@$ZQJcVmDVS)Z1(&8Gd8XEA+(ZfP!#hRxSp$9v*t6mYF{=uiWMJNq1Pj8iiy?s z&GlHmck0yY`|SpP85HJ`p*&>n!a1zT2O^JNBI6(>XPMtCDk>WOcmTb1z_yVS;oKx4 zj(74JdyEh(;c!tSAW}(Ls1kOYT> zO{=p_vwzpmJx)bNj&J{Bbffu8b-SYZc&u+uF$3wt5=)L^NwzWFL`* z-7~~SDnES3lIT=`xqpks+sD~2Lgms5v_Sv_~5z3fY?IBL?Q8sy>- zK5MmPhn)sW#1bwZC%`q)ymCe3=VKFT+|7MlV&$h7yJv_FevU%yExF#`Q?#?~mzZo1 z-2I&>-L1P)&fcN`O=>6-hi~7$MJ=HaBv^zIxk8R?S)XcJ966ydX9bXpE8RFkFbM5b ze&eKuwTBMPazC(vW=e`DaNz);==Q&mLIv?R#W)^?G2KM_-9tPeC2XR6*BGdwDr~;ZS;= zlV{EZFgrtq=&9r}&)Q=;O;*o_)`)yvb`~HGc|UN9gwn8N=+#<@Oz7D&OzR*voVeHtg zh6Rb*WP<0lt>x+YX2rXH2z&V^37>{i8F0{MJnq}A+h1UqDWI$hsJk}*95hX6#Vt9` zLv($VzInr}8n_Ouz9%LsQ5uo5gJfN1ub3ErYC4wOnRDh8+#mikmulg>b|HL=tk&3j zaS)G%Ze%-tC-6`jQYkUv66qj|HU#*WdZekTdEc>PIR9cxMf0Gs(cP|sA)zk@0R!fL zx1-{sc{gj{A6=8EaPC=%o8%ybZOOY73}!3xRK`(Y?Z!l~ZRRZ5l2-$QxApux{ld?1Zt6ZgEdMD_?0^5`DZg}p-N4M6F-qs|-NoC61@n>ZS(E3b zhmFIJZ{NLp1B>X81L^RJNc%{Q3BNq)w<8xtH!|x)6W4)PfBx@J`}1?Z4`D354zm6y z6O5Ug{H8{*l;IcM0=6mE@COnz4xFcLoSEU}>Uux*tOpMP+)j$EAo#~;}>Ym>45|NoigXKw42(Op@hQQcOe!#Mm^Hn3xd2!JW^ z<$6B_|IZ6;kAH)(W2hjyyX9r^AtSG2-6f1)PbKXO-B0*`AGwylhcP<*Sz_e`=E**_ z#ReDboI!}iaH%rx+O+|jXym^m2USz?!Zz-)z-g>v6`cvKT0%aS487a8-?2VWi@jD~ zF%qa$V)**_@pr_~LI4Pk2_w8C9CZPVR>I(|vAKPJ_)2r|XzYNUR5oxQ%&R45gEwuu z4$|Sxei~X`;l*aG`k*E0=9C3hGMYwSo^N*^{ry)nrJ3wfR*~}85yx2gnGSj&O>3!K zyb8Rlq|+U|QzhLM_BfS_R83&@oGSO$|9hP?%!b*5)wGTEmc>M`kg;` zNoYDb81!@9&h6g4TeiVPp(7_pvFqi;FS1_XfujHN?c1$z3ck0?syfCXOy;#!sbCju z=;r@@oxh)#Z3-x49=K>!#dx&A=V5B{U~xB0(x7)O1e=0xIlgH!y7P zUeOn*{6Nzg#;)$JTzwNQ@*1pK;`;`LPFTWy+{4~piAds*?l!tsc|-C5D9maqn2I}i zk>cM1o&t%eR7eS;=b5VnqG{T!89>j?P)`Nqhm@{w6|uRpct9mx>>UCc>OQE3EQ_%* zW;j6Zvi?F6N4HdhKU#tJA3l6{^7LsTNh7P+t}OPLi_`iOAurA%Vy>Gc2AAmpYL5bJ_9V-NumP%23ny=8e@P)ydNZE>j9`fJoOF zBL+@&6}?7v%Koye76guhy5l$WeA9aVpQ2MeRFQVV$8J3EpX4heY{y)%4r9pb=MR2e ziR8h9m-cf_{(kj2KUuge!6DDCBzpyq*5}M+QNHaY(m~2)hYrJE{y^g)@0uJhT=$md zU*}Hn$5+&kp;}!9EK#Oa$g36gZX+1oJMTxz1+Up^Rw+m z@P@n2eV%pm<{wm%jC2*s7OecliP>AWPoeok2qyjtzQgkV z($1e5TVDkd2=LIdo^F%BYLB6A0M1K-LcN;nqKq#(3DxiI3j$Z_3U4ukS&W{4`xR zAJ68Q@qWyE zOum~gh>;My#`S}4qu08*RVw_pUUXxJz!X)cWnn;iL$DCEYu{cHL@)pxy|eZ@@H)cO zYU9`%{BuE6L4j9Xc!8pVV9C|z-4+K7n7P*BGOlgKkfFoJE4R2YCpv}nOP%BA&zxD+ zF*fdH?txr&510}5m~iJUit0E539NM&I2;~rJv~e> zOq{)onm-VrLK2-sj6q7m8Ze(JY{2ZW)S4_u%Iq9AX0i^Y*5>AYnh>V4=Fp**@W;1? zHv7ANP!!0dj9wIItltA6_nu-kr|he3JNh4(oZc(5X~cMBq}8FAoKRs$21|{+szJri3vE8Z~I(lo?_s zp$=3@M3QTe3X6gRMZp04$_s!-riX)9i*6JkS+3UmFUlABc#^YDIV)ja(_2yer-sBZ zTaRiI{`uW6>m5_S_MdZ*y4VsqH{V`n0@<(d;6>S=IIN0lqyn;b3T|0stq9t#quY|k zx2P|VcMw7ww!a$6M$U;7hY*Pb`j`1=J~BO)ELX1QN_NbsVjA-J&I#@#xeayqMMOv@ zH6cNC0a3#m$FO><5lB7lx@_>3mIcC)*6?uWUEY8vf!siLOb;}!XG0m_BEsgKs{G;V zgC9s1J&DGK^D$w`e|guxv3<_;@Tk2;v5}pKvdS1lEWtB2CPs9kWId%2v%xM2ctM^4 zS-?)n>00+(-_kTaxlN)4g#zM`Bkx8Zb;@^uOIz()X7}NS*S^dv=_5Ie-ISJb9e; zQl5D0ahYs_jMj(E6p)G3G#bX4B$P7S7M1C5o7zSEc5JEpcU6hRQt>pDfE*@xt{c!2 z$AKu;mL{4h^>l?Z25BhedEC<5zdqxlEU?ab`;NF6gex+%$TB@ap4s4Zwm530#+5`l zt&7jn6~?c^66E2-fGOU3#0O&L;TCX+Nsu`4Khw{8GS^G+{^g}_Zdw;{67|Q5Un>pg z(^`d_FI~iR>%_!FG5M)N=CyjY%#9XSWtyMF!6;V6m5-@E$h~j*&m+8|u=G@DYtVQJ z%hYYwtQoDMP)J!>n|7@tFmX@g+Rc0KiJO5$i|Iug5-k%k7nTwDIWcKOgW$=i4%}=E4btPhZgmN{?Mr?PY0nRCRwB|k%pXj z|M4nr&Wq)K-^*|!9L>9BP7opDvyrWNgkQ?k$WM6Q=OrDl`0&Z+l{_@cJgZ@6q9n^p zQu@UN+M4X^v$7$V8ktc5`f;H4apT67z~b;;ITK6E8|)9-OWAtLi;8>BJuHAH^*uAv zbvSL@SHgENPXGM%>jUjTQ9RW~;yj3Cyq;7AuFR_^z$=dC+_V;U{|+=GDY=Rqy_NZZ zxX0&@S<3((U0%+R_VGuyZp))q>L0FDKKMBl+^ja#;078nIOGz11uz_{ z)i%wK5+T;FUkffPVkg-=N(GPwVeW74-MQ1B#F4}qxh(vgI4`~-xgE&DVlIFF7qB_y zY2K$Hy`*jp zLhe@4sR;=ON)D7zu<{@ZIw}uSyZW}p>hqv!csFFcFIYs{sO+()H4|Q@{P|1mY*{}c zV=@mUnR-*pz1i)S3VK7^BW(kt=>+q!p$}*I)#tkZwhC*u?BLHIr!RN^xuO2a_R2NW z?w=#Re!A7Y*onHS@}u<>xzpL9Eal|bF8qa=?`QGvUo8Z+#9uPqDSGGU-u1U>rmXt@ zVz;G^ub=~*lc8#>PI`O=bFGCfYP@ zcEqV{I0X>kbyOBz1)+BP0>~`b+imt^F%6wai(l}_v`=m&t5g^k=0&K@^70CXlL{-B z(g*G*;nXS-G9p&e*yg$y=~x;^ai>+^-uHTBmKCVqs^F*}N*2!WBWa7~^U4veBz0Hy zyUJ`6{t=#d5(i6^!Ev5k7K;+OXtZ^CH~aspu6luU364K8xU_ z@)s6NH?{Uc<;vnOk6O!G&@4RH`kDb}>Cdyq&Yt@{f?T-z(yp;4XOi|9zA~GC^HwDO zhtmbRPG-`;O`9}SicHnu^;#-i1{xCAGU>GsM~%gtjBD5Yhx?zrNi-!=zX0AVhlVYOW91=ohh!aRxB0bHT&q-y-|{TD(Dh86 zB96~fFF18GH@D2~F8NopYLnLJ9x?1FV!_z|G%)^N8=6C%K7obgVa^ z$;k2J_rcz3d!!;@8|oq+4(E6!uR(1sENMFRiiE!*R{O6=R>(Wtdo&ldpzX3 zjy6kUln{B}qt&vUg`hV!pavrvib~!OB+$^wW%le1Tr?AF#X4LsUbI~%CTKqaOd9?% zhCu&{(30Ph%CcR@LbbP@rz879m?lXCpa@oNjOYan;G+W=_Gj{Zdi)m9!ri@{3Jci7 zLN5q*AaesMm2CBEUq0%K?;p@4a!c1Xwl~3){7knEZlXAS!lxjV@{p}fpXxm?D=Ty1 z$zc$n(@F#L)^F4(UAqXW&hkm!nwY?C5hCLJ6{dV6ult`Mils}>#s8xGPD)-zQzIO` zL}YTgG>qQ!WOe{PHhLUN`zR-#_-G}_ijSoVv1u|_Is10~WZbf~_RdAHNmm(2<&53h zG}>|V4CU7@&)jAnP1%UbNwEcWSX4Y0Cic@*{*;m(s|p8H6#>_wLm_@=$>WEB*z;y& z6Wcl}Fb#`)cPJ%3DNV5!b6cNk{mfrqHK`}CDjUf=Ehw>J{nsdE*894~ZO_Nig-QGk zf9*`uTeOu6cpWDn2u1;p6-&rj6h5<4Z2esQ#U?0OXzIqQ5>mxydE#WQXI*ARf+&6N zf{)Mb8BzB3$%Po30xaV5!1xZzj)RuOS5QC^Cv`J*c z%}jBKky+E&=jiXRQ&u}+5|k_m`m`QAJP~1L1QrMJNhG0;eq=Dn zM}+5Uz%|az^y-U~`VKPD_jWu5Bx3(|N6#M#ipRfqOY;Cicc$1lt^?qQv2y0 z2O{GE_1*9;sj7~M&3JRlvkT^tT#)99C$YR@6C<{2&eW$LlxWVMR>+_kI(X^aKWArL z25gV^+sv6KS(m$`&G=K*aGe?ra)k(=Xg?B_$>TcGmqYHV(06}n_&)%WjD5huD#>HGK-Se(^w}}!!7wj! z7eagG!XX12%yhek4r->G+l_e&J)}{9H{%hF-_Y;FyCgB!)*G`!>aR!3KIz+I;^Sv& zDEW6STKbtfrEttLUdql&06sOloD^9DW)l+m6kUn7vEloED?Yc86mA29v9qn3Oaero zWH^pk-s#pX%R9Z~+0V*HULH>32eAk|N)QDslstNDB1bkOs}>m*QBOra{Dd%P>ebZ| zPZ-U8vK!bfGM-bW|qonP1zS&A3tH?9Ga0cYf)$J(0V-* zX_ZqTHHPJjf8j!{j8_~7i)#K~X0`9yAo z(=Schc=TeJ6MFPhzHhlLwGQrB{nlUc_Xo~TaTp%9XV3k;nd3KB`Rt{5$o#De$(@5+ zi%&C(U02W!?=6q2hZI}B^18)0qW7$+s&HH|oMqfX&X$Bd{Q3FbNQoq@wRa_MiaO1E z2QuKxW>jb$m;7))(~`iI`#AhI(nc=b0+-S5Q+H*2D8bvILFrfscP)#Ljdd|t1nW1H zfwsRz!&2b?imw}|I1oqWSz-MEd<>9-Bvd29GG#G*t)tub;xou<{TLZo<&)LB-(mMDX?QA{CxO_M)b_Lg zjw8Yn6vzou|4fT@<(z@vUWR)u&%ZO?vp6YY+S>a^`7mcJzM?+rL}6N=sOS#JQ0lnF zMAC%%yJ^*^TXzF_gEq!a#}2EU;Iu6~eO!WWIEOZS$r*HJ5p!-MD&Oo$voGdm={cw+ zS8ZT%MI9SUGy``y^1%Y44>p-Qct5aMl<{#IN&y~8X#c19YCo@% zbt^YRk}X5Ye*N*|rnE$-yq%8rJ!)=|{JYntOK-|@D*kXCk>>%+&p1Yl3r{Y&^$bzg zh%oDAz4;FU=xCH=T~quzOFQD9xyD3C8;`7wN$0PhT3c%;(J( zvxqY)n_2el=W4gH`Do3;?%DD$bD>0RSm&R#)o)#=T_1m|M{0+4<0mHXN8noZX4jHo zC>yr`j;z>iHt*hXJr0QtJTnu^_l(p zm5>0z@tsqCduN>$8SX~ikHvO<^O;2IZQHl6p*@dYvlV$Yp$UnT_kMeLX6mJoiAj-% zE}H8uIp(b4u0-tGwM+46aW_9xuW?Aunb39CWAhQ8Jq3E! zXQ%;Do7wWTOD`m_2Yile7Zd4&&^wk=^%L$t=$3f=$FrP^&zIIV5S;1$ZgNrX-@mW2 z%ell?ljV-9s@_~k7_*y>Iz3N0J+aW{1s$*8R$|X*nz=zM=hLh=xKYCAlri8rr~$ne zY|vhId&kQ8jt28L2-M}(>}x{g#fy77oIZO`TXk;gC4cylPdVK#r94Ugoin6-;EFmK zw=A8VoJPG%&u{eA*N0$_R-n{D3+IM9Kv+fXRpULrzpg z)1d5nXp@Uv$Q)n()o9_F@}UpUO-a-C%f{FMU=dpOShI$HGQ z%Y#avkS~uucYei!Kp<7IkBQ8bM>zJQBR#F$4puVMqg%FouL>#s%x5l2>YG-k{;l`} z?R1`{wRiCBX>C9KQ6}lmt%-V1@*6lw3t|Ybwn6^xHtqTJ9So{57H9oTue_o&+nq5? zv#x^D7sl25Wwv3wr<@GWHZoiCFiU`q#f+qc=?2gG#p67lQ0-`3&zSjwz5+dhD4NA( zElDrvbHr+laHznA|0`_F`PM}8$Q$nI*q|m)aWI0`71ORP=<-QI?QzsU~k?Guwd#z7DGKl#ybWTCQI(|zvMOZ{6CU7E1uag%@UW=qtS%oK>y z)&c>9b^r7c(%kaV$0UtSG;UcV1T6K5Z8Fc9!@c?r2_PS}hocv!P5r!Np-upY`l&?i zSH8eq@!3U6QFFpWr^NM}+siB3u{IHo(qPfV-C((L;jqh0_n{4^kim)QKO;N)d7i(H zd*8GzH{KAn_`^(ULu5xD6D)OX%hN$9B%6nYA+bK7u7ag}d{t?|xi<*R3wa6djv4G2 zgP{L(88I!&6ea8D4($TF+4IzXs=2-Od}YNs;}Q0sgkhc+Q`(L1GGIaMGrQaq{P^1l zBEyt1;7zV&5zMN57+ZRwj^7eGYh>MBdb+Ydz8t9%UZ7Ra8(-1!rKS$JDpUrPTz@Y&MmQuL|L z;0!KmS}+tZcNuchyX4zHe%G{nR_m|U=6cRZ6=$khAsn-_vlCMegzL@rS3X4-ZAjZT z{j0Z9muGlFY31YGCkR4BR|N9P+YRNAde1k(zkW5?bR*9p!_3?~_R*JD%l^wYK6jB43q=QT>lo?) zFpq$O4kYT}s<)~8h<^BZu9$S>4KhM7A~3u`gw~(348~^qgj_5q5l<$JQ^v_|8i<*? z5I-}416x!qv6=w+NxWn7+qy$o~GjI;xZC8vE?GJ`!xy zRhB78eo5Y5ugwr3OtZ2o53ON?@ZsezUW`9qe=N_`f+b6|RM1MYGhQB1s^&H8b9XN* zL5zk@U1E@xO4E;mQT7G^QM#E$$oUjg$Ql}10VozO<~_-RhSZH|@B`pqCS?ZIJI99` zQA0N5t< z$;$O8H?eU5R;uh~wXmPvP3?EBdL`OBTA)tX8Umy*k|>Xe#j_lJ7j!YbeC5i(kt3D5 zcoP%yQ*P~aZ1k$|doNzBnVj3}4xV$;$H?9c-@W~Xi{7(ES)0yI zPux2#OH5tQZYY~nre)t-%xg#ueBv~Je$LwqETrK4TaNs=yz6sqjV%PW_%hBpvKS!T{2(0BS7{voC((TcZ8T&blo|+|!<4&l&W)7;zjjn3(t; zQ28=vGy8iKB^auHcf*1vr0g7p_^*yOYpYgVN*D7C5&&B~5obN0R$FBU#KP$ zN_MUPX_W~9qz>mMXZV+gN%TYVKK(r-Dcf?xlLVg~`92oqRfSl1p^_xIvQh2AZN=A? zrTkjGe%-q0;%p|On2KJ+l;zzV@uxqiclZ8IW!J7kpV-B{hmIb-eVVzwd3WzFixzg- z!cF^y16)ix)2%BN_dgek*MX zux0s-l5;~zb%Dx^VtFp*_dxeck$nq8(BwKAH!yxxY7(&R;iyX|m+`c%5AUx0s}d^u z+7EB|#Vc1@froN#I`?lqRdB!lHbRQR0SkKvE<1h8fVUn)2qgslvO%rdrHg?mbMM?q z;ooVJmjfsiux{OlP!`!bvzYHoQM%ygkRUdu^(Em01+k7-A{y0jbZ~P5r3rFjy{#%a z=B}On?@JFEpy&Y3G{f^#y2L~Mw^0Eti6pcGqG~}`qtuJ~>;vtG4ol6rtzI`agFq@s zAOVMu$Bf4=Kl`FFmE%g5TUvJMA_8%Os)8px*epo=?`9~Y(x3$-=+4nmaTI2lm*RH8 zjT>6P)V7piv^y;9*m6GUM@?>oM@dhDZSgBF&<^3Kz;&0szPcv zqiTvs03@ho!%Y$dJpD)M50S)x@SJ@y=@QdFg(3iri`uq*0~fVWPGbdi`10@iS3lGC zA-IohP4p3U-H88PFMnc;C|Zzdw1P|U#vX_4NQhUS3g`TqV1{$h_4qn*`k_&$K6iRgf@)hZQ zvfNwg?Tv|xTNfX1B?-iP_5>2&BQAPbsX^nTVKe6K$-d1(x<$vuxm`eT7KB6#vAAqe z+EQe``}1Yoe|53wr*JK|LmMEtS8ZE-9Io;(;w5=+Q9(>n6$dK%twbz)XjDc_xcblB z2mrGyzff1WC$D^Rpax!}MRIfhvThzk*3RFYEW)N83 z>&7Or8rCCdnqykZT7A0g6Q5-t_L*2}rr%KF#n*3rfX!ZNsV<+AA zQXi$gmQaLN+1-=WM6?unhX+EDS1WQiNgGF$YX^dk?JPVtcsW554%1rK4@p53IK^M) zX}U{S0xngzDRQE9TG|n8jjA>SaK+JInpP;2Q_szwqYYrtwD01zVNKc7>6~H?KG$e6 zCk}7#7GJ%A;gh`w&Yp*UkQi1a+?9!{kjPZM>Lt>71K3&`8$#ay0oeQfmAYHDZhZ#g z{dPX9p;KBM8Il7~UDglm_SXVxA1Z!AMzI>Q*CFfC0C>s8E2iRpr9%#=_yA%x9z7@Z zO`8fdw72#142`Hd=Et_QvI^6sS2HArR9UR};ohD5q=JDCvutmnxk$0l>a`^9HSdR> z-k4eA2{dxc#>axztXZnRAq9On;KUNoQ;HAqxHS*xo7V)0Ee{SpbUw8C?u@sPPVh?$ zKQ*1hOqj$iI?O+TI9Kpa_f@MIebnVmVSo(JMJjRd%`0g2bTL(A;@Cn-U*l){*?&;U z=Vl?{ODmVeu84iH`y@1%;>b~_`=3}_C+)zrmi9YlWv@>-TetGblXZsyg_Xzc0ikv< zYh>7#(C;!Qc`%E2`iTK|cI&|=j4-wCVD#IF5U_#yBdiaw;p?u0@*)8Wf<lv=rw{HpL7ePPbn-^p%$X6MJex?_=Sl@%fenrY`d(A^6viH77RLF=4#FPDh?nU zi2m^8#l#{vw;5P^NTVtXkV}emkXExB2^{o!EZ^++t?Q{kHF)|~y?5rap0nv8I zoR3tzvR9vC#+hCuD=h&C=v&2*ZGq} z0Z>9i54b+cd@H3xv~tMd>ftbQxM=cj_W=-GlJb_5o_XHYBsj@{Ch6MKcj36-#STe+ zQqiZZRQgtTt8=!=%r5BKlTW(-O_N__Lgi5aF9N&bXWzf7MdJsXo3|vBBqxK`Cw9}0 z-wyzM90?ux=6Tp|@{L zowc{wT%R(}BJ`TY%Q`_3=)3r>DcG@;gp?mh3sx>k=ImUmp)Sf<+rww~q9)&#y{8sT z@|}3wLlKU@yiYn7N!s;KG;P-6)QVslCd3Bu8zjgbWylG$F>bHuO#&p%Hxl615VPn8 zUIHo8P+*5mn~}jua%rnBzR3a_$+SJ57~5bVdnxhQ3j}YSRJYxn#>tKLsJ}jFRoBfA ze=`dcNnKH-p>iI|&>k3A!qat1S!VyHyMS)$?|xpv6eKb@e)^8(7q?os&aJ6%yf`#U z;&9F9sVHq41@FE;Ehs3+v6?r>-coeM%O{?kw=%57=Z_!ruYJ5m-wmIN&`>oL$0iNh zrc#eTNV0q9mCxkDwtop}m1Z}aJYwicC>4;3!yJw6-j*u)h=uEvKi-d}Ekb6-J_;JDSZrxG!=l5-;tvd9k_~|?6U6|X%G|z1#blVmFU0aJE4-9W zXt913^>5T#75=ETorc;L+ ze-*Q3A&p)?jtPfkLJo_sBo6FlujvG2=kW3gD=2Sw;Dc4}G1WHwM-6btK`HBsX_H2c z4*9fnWRG~>J=CO^>i)#F{_G@{Yd%l<5<%zwVXRK*pWQ9l41$&hUo>|B(&c@w+pD(J zyCI^s7co`7XNVijUwdOkTZ=9P_!%T-Jb&y1>941epIeur%umZ z2klErk|F5#m$N@51m?;Znlpq-`*4kV3cK-q1$P(hsq%AQjVL5FPF(Wy+SRM~iZ~j= z3&w`y^7Y|xOL)5*$JSh{OgjGn)GcQ<)xbaZst-Mpv(bNk=LnyFi+Xbp5U z*R7-*F)y>yh2=HwF360kmU-0V-KppMXEdG>8Ru&FV%)g;a}r`tb}=6`r;0(VRX%Tj z8mCJKKgLZnP?$3G?+2>)uS68>3^Sr)1Z@o)oTW`C@MO{NwxEi|`bkwo6 zuxxG?7+=9jE%oRz^Hvox=W#d^{Jp`fdk0&h!FazYy92WfaGI}Hocw7-jbn7A0|O1L z66{(bVL>YD9EorjCBwxL+tdyit$2UV9(w!q@GaJH-QR+S%U8-HMqI7EVe(TO&|C3g zFvF7%>a$C3h-*;@WrUnjy1HDhO;2z2D=Mth4UHXRM~MP}`ng=B@blf7Zj;7(^@Y*% zDgc_HU}WG7_2#HBQ1#D6Ll%tTgo%ln3wQ)(tF071K1TGu2!gJ}@BRGm2%{kwuZmkC z$<#_PAz;KhU+; zo@h1Lu1?Jc=AY}xp@-@c_qrul`Ng+Twfw z(LCw}Q8oLIsfflu%?zt4{&2lu>_vHuKQ>c8!F}|ddA1;Ks0U@TvE{bM{M%npCi6Xs zLT~_T*RE|-cy{Jd6$ner?3S)z^rZLub6PL<_s06j;`PfJBWuMHcMM_Ohn<<&>c{lt z_;m9_p*6Ct(jcGQ#-l1Q(8;;m7H#l?4Qr>4zz?SWtQ4|#VG=t@KBJ4 z=Kff2 zl%O;iEc84zVI3bJQ(95FcLeLUny??^9;8`;E|G9#qyPh$ELdA{=l!oD3BZ0P?7lxI zWRTBregtlzsof&lwW{Ed=^w~shd*C4t8~22I^`XZ*zL44Xt^N=PpXu+9Z-WY!yH~6coFAWtZcS7h8QVcj6Eh4gP4>S89ZuxCr0<>@2KtzuBcQc*ND|Bjqf zUuTA=ty!Vt z$CiJU4ev5@PY3zd(lZRbX|6&I6XP002jgyDYZ+4~Ili~+yp!$uz&~G!IwWR{=-pQ^ z?N1oVt`0fF7@k>T!L-*)jdl(A@1qBQKCtJ&jX@9p{O{dw%u7=)ht&9Unf!XYikVq@ z)t@u7)#*`=G1mCB{U(O{$wj20W- z>w_L@0#)9RB7^LyWrtj?UZchZ*->nWt?9YBDLDtSfj_W+1{lhR<)#S6pTBXWiH0IR zt5kZLim>5uAya%*-ZR5?56$d5CLQXCA3UX}NGN3{GV%Oh1BfSKW1SKTUiRNeXUds~ ztN8SO>|K}0TK^LaDhM$BEo0A9K1e&-Z;)t@fhx~Gdh~0{S3g$Q>r|ev z2m7##$5~d9Xn|=|s0R%)x(j?ZYE-DpIG_}`0XoH-} zc^KUwi1!0nZ1w9bG;F?N%IXs{U%yE`X&c_)glo^s7cQ7T+VGsdP zyFr(fMhYp%<^igS;?d`q+R9}kl{zqvhK;(!#=ecqCvtdag7C@3MUmJ0QQ67}3l59` z(rOoZtyrh5<}fULG-Wo&F>VZy;-^%Bh6>gWq|!zmNO18S*ymOl(|>Fkg= zzyC-C3A&f|qlpZ2n$&kf#OBQo`)2QoKea=xMnp)VxQ8u=S*M1PNALmtqDq4ri?=uRAW%Ng=;MzPUW%6H8Xi zus{M@aABOrC~r*J<5m;Ix`bjvwjg)ev}scmGp|Mk%*S9(r2EoZfmv5?!;6xVd3=ZJY&1qSYTu(-7|N(Mcmjf1j;yPsM1* zp)eT|kHjX_bMcc>O(J{DXqEREo^QVuzZ?#GLmAPoQA09=Oiw)j{RI$}{F_Ec0Ihj? zzTdB|48n!fqCzh=tPvks1rtML56|%Vmsuu?A{}+Z2`7Cps6i(0kmKtJ5B$Qb-W@wy z**Vb$3EO4{<|&v9e%T;=8q5aAC^q(1Z7YU1z-15)&%fylC9Y|y`s2%mZoEX}u6 zjfU8PQGM5td&{dOx~?fc!U7HdQTjd!%CQkWJhr-`i0%+9Y1oR?S-!r$Pr!@B363LE z{3JMx#(X~pN}1JfF{kXwg|BL|3>x>Iqs^g^y`RFvNVn;Gwca9aZB={G*>n=cfB~pL z#0K^7;X#~!?+f=H7;`H3vp2~P4YrZ(LWcfHYs#8&W5(wFoO)>A?`OX7oQA@x^f1m( zoO;!3=+H}bI$l7#RKHvg0gN7YCW=XsoCxR6pO1NzbBpi+H_R6*9&0l3&ik^FYJ%PQ zyLZP{beEkYT|{{+fD5#PTD|lBNw#sw>)RY_=D_=$);_j4EsoBZh&8#HwbbcCsiJnUxCUJQd;4=Ey?rL^7(Oo8OG2s zw>B`@Js6g$Gl#xSdtK*JnbykQ%8zjY*a0x;=>Pp6u^kuU2PXeY;T65e=pYK4lY!Oa z)B6*mwG=69mKGhmtHhi2!PrDbjJA1bID6P$PHO20a+Vo?%3J!ZhV%}?_HXV+1oFl^ z#d%oW8d|EBmiyzg&0u62EL^Uts%Qrk(N2;xt?^`m$y8na^ms)S-7@%wPhYeA3*#v8 z?G0ql7TVb+*zc_m4&NqksA+%qYh*1lB0lpYr6cC6nt5Ku{f&xX<;e^Ss90?@+OjDK z8iB8<9aOP72o4?|=KrE<&6@S=88g>REVVvt9r}=t`h4iJQ9+6H?4+^042YrNZsl9A z=HQF2c%)sWBdfdzrJjmtA#{09Oi565Ga_%0R8y?vaQD5O&593yln#?pE^4PeU~Fc4 zd;i2HbPv>3Cr&I0d$4cDt|8RGG9W=Gd_&d?k%=Hv6<;$Yt=52FEe7?XcOJ9AX7S?V zCBwa#pJN@_qpEU{`f&blA-p)8^*$Akb2nN)Db`Si=-wQG2!O|x&l5E6J%NN4HcI~1 zxo1~SFqDFN(W()V#j3c^?Sy16kBa7DB}D{T5U*C^f%t@xTDor#at-#5VAsK3v-0(n zoRkXqkUPo&QZ$dmeVF?`gQ~|^gY%T(MvS=w>a==w^4r_{b>UDAB_wZ%j7+S1XFOg! zqK$z=BtjI(|2pc*MnqzxevK4iUQzsqdVkX>tbLA7yV3F=i;Rj$aHKs7cOvOiZtI9F z1Qymb!^YHEdNnii97%?TLenj_a`BbJJiLmPD_5}j=F!x|+o4^H`h+NiqHFHv^dgOs zB^S0|w^DqnUXPU-z^P9u02TF?8X>75AB0JzX{TcR7Uj=86>>+_Zodu#dxgw%)9$LSGE0<`(~>F6AT0V{LHCwCP=vG z>#`8d!K+ahALZpaZ8A5su(MNjC0#eooe^I!*_vq^vZ_%71fJ>FQz8QE)fw2_dEA&W z^-W4YkN#EiY<*~*Tp9-DStPQ+F$FcVU`8{au&K{!&F3UaI#DkuJ4+BT>oBUuGJJ0C zX?tIH*&xSn!i>W#)~VZevEzH6JycJ%Fup3KSC3XVhP3*6;NHgu-WH7_$EM623WL|t zV*4z^2Z#>G`|gBy4D9L)Ek;y1SR4?n4D1Z*!Sq^3Oj`Ydh$dsXI5VV7;7JV(8vdm9-s&vM1;B}Y5zR>ShzW`a#mT06mNxruGGoq^0gq8IY)#N!ov?fPEd zG2p<$4NYt&z19PX0STSxtREig7BEpPz@Ujt>KBpqA|&etK})RT#!g!9#}OcEQpE>N z`KHskP@tqC$OQ3KG%*zsdghm6qc27k%}ubrOES~dNcT2?yJcjVCyVV0Sn zIHFqfG?|%QLIK$E=#2-n>1lT21ObOTh+snynUgG@=~mwBci|C0O$Cvq|3dv**Sui( z`*I88-(u0qot8VK)B8`kTG;!65HA=fI=0^l4jF2DAkYmeI!uYlNW<)FR+;g55#6cS z(ZemV&!t2Fm|62^w{4^VOCUJ=6T6X=iBl_b6WpLue>a9rXE497Wo#Wf96kX70c~#C z+uAn@wepJMlmq#&YL`(tzGJbQ|FSjf*LN|RtQkL`Y;J1l;)I_L*~ekOs87)Q*SjfP zfCC5CldI7Dnaqk4n=;NBMG?g~tyahU#dH%6!4nb`FFl}aQkCw1Y^5ti{|?TBs%LrZ z8$ATE-6t}>BMR&LyRv<(wC^c}^RlqxBCMXXO!<2A==xkD(gmA4k|LACOI%t$ly=#e$^6~*5VLjb*U#rp&l3nF98&3-jDDE#qfx_#X&kB<#s6i+-*O%; zwH;;ur9tqV8c)jp8h)AKQHrRz`9^s~j1qpb#n`Z8YsjZCh`d=H-H7&Xf&w-XfxfQc%&o_`dQbnOO2PY5ck**Wrmz|M*T^Ir>Ik=zzI#` z|6=s6mg#caF?A1$VF~2|k4w|`0@>2o!=+b9-veJcXK8`C|SRFa9W%02S_jf*F=#(1rdfh@@n~=|vWH*DkA> znF)*BhCZWqsxKpD*RU@D$1GR%=5REAgAbAvk&;Bsd%Ei02}y91m+JT!?=EBAXefnu z53FaQJvy_b7JU`X=(9fbAAi(&=)r_5(mip<1{>a+b2iL{*;=hO7e9aA=6pr{8E8zT zU48PTDjv?QTeL9Uwva6JFP{6cV{bT2T21bbQINQ?;}$~SLpQztHR8~o$Wa`<Z0bRP&Oh|Ew)KM^8hiId9O#59G|4HYF%1+>905Ot zUT;)JsO&IbP2q$TVJ~A(BDBBnP8jy_oR*%r2!(pki6M};y#M=VxZy;D@3|b2g3pQW z;2y20*zJ((9Sx zvvrG~LWF7aSWSRZ20Z9nQj>D3?&I5VA4C8L5W_<0Xp+uzks*J3_vPB9zyitom0Y*{ zbjwZ+;<#fsd^%sNZtS^`YomL#+$!u7vN=)xV>2LZDOlnb(?{7uN1jT46RL(4Jt{yO z1ZBjJ@;%yB%?fw^LB-f6>vqCuEyR=O#HAi`-4nbXbU)$!ozNmx@zFr5j3-g+xLK?8!aP8?J}e~ymRohC<>VaB2wA!KwwOxjn9RVv zK0c;Oe8Tt@QfE68rUbgZ=-U!P{BmQq4 z0W=T{KVNX_-pHaC$0UNKtLd6N@z)gOZLV&Y$;A^d3|e?7nYBb$!<-9)Nnq}JJtwaL zX%d}fEj&Jq%T9dz_HC$*O>NfYxTnkS{L|c@25aKgYDU5r4hYcVzzilg7S&^DY0_1r zF2OJF&D`;dVm6KU0##j;_i|_lKUtLu-DNo}P1vDnP$S_s#H?Big+VN=5M5q=u>hLT zVDGpdubk}NYF)4!_r+jbz{S}8pzKm{=)*`w9 zY1W_%8bU#@#A~jiQ0vY@6rPZ{w{@R(wf1cL1UrEa$hJ77TpG58DZuRn)^?aNJNx&F zNZg!3n>oF^&VJCtw%`qoe*NYTg|>8EyT)S3)^`o=*DV?Py7x_gkvOj#{lkg|w`-8jX{F^N7XMvv1zS zGH211cd6RX669i1-U1})H+b6QHNdV}hyZHb4W zzTSzW_S^kDiI+tF7R&83C(XO{YmA&{n~$qyE8ad%oisfKjUcWqVGZZB4?c6oE9_y_ z_=kz#i|8*^rpIMk@puo0ZbKSJg@$p@!jU> zx}4oic3*v^8RZ?hr1N$f{#e>^*Wxn@34Tn$lJ(NW%fm>$2};J^G7=FmaOtvTA`%Vt z8Dg)Frw?^CvS)Q_xjF+oZ?SIsU3<*)lCeWCtWMN!5X+22ajaDepKh_*`x_$@SRUes zcJE$UlV$&$J2z1M*#CQ{SKCG<=&o$YD$yB|?SA+EeX+aKi2l7I=Xc8Qqlee+-*Vd)PcI(xix;eu{f zHFTXmee928G8ZC#0YFQ3ir114NH%}4^iP~TGHELCKWOAd_@0C9*K+JUqww{$ZktYj zrA>q0&~L^%yTv9hiGua8`cmY)fsRM50!*5{yi@au+XIMQof6eC;TLb*7+KL>+Cz}B zX%~a31i2b4G;;i;&MsP`GjeQxe9Z@!&Le%NS7tc>6te*>{oJ>kgQz@V=nUwT64SJ9a16up|@9Y)YVmWQD$q(w{dt} zS)OwEdVkY#esQf<`h?QGSd;dEW7~+Ne}41tKYvP<9a^}Pde?qg6tR7E%e5ei*=Lr_ zMfv#z6w7%_1J9;!Ls#6G=Hg-+J1Xqn93Jh7yk%C&-)Pd9p=ZS_vTfC6_O3g6&fbve z5|X99pneMV{@U}XW{aNpSANcHw}WVGZWmmwR;^1=-^J(c(Au`%yQ?A zSKcwb|Ink4htinAWNtDygy39L5ziN3O<&7cgChpv{$F3cE4bn2;cZf|!}ZTV36i}a zlYg6w%T8swbW>rPq~E%AG;ZrC{kOL5&+#zyZ)jm8$UrJ|V^PZPB{5^nLF5)$21MLB z^{G>o7Ui*TYHI3IC-ml%R(v~ zy4blvF$_e>$8YT&JF?v-`|a4+$fy+nR`FC);vavLN_at@o8Bj`GA%t_Q#puC9R+J0 z(=Y!0U@LS5E)@t)h&3Xv05=#20*_rPr2L!&Z;fH<+-YJmN<)k|T)S@FzwuQFd_0U8 znEz`(WR9@D)c~ef^E@VJbE$mr|1~b#Hupco!}Z&(#cI9wrdu>{Q$24;Pz+x^l6CiQ}(O zK_LcxYOaSDDm6MJx-|wbhgA|3-Mo4y)Gxg2-?TL$9bGLV|UWP~VM|g7aGE_Hv zanbv6=F+AEmywPKRMbCKem^D%DO?e*{i>pZKY%QI8%Ol%D`; zlb#^K11hYm5zj;2)bOz9kLB4leP*uP;J?qX3}aEknc*- z?~<$6tT_a#nwTgcfLK%We&V)dhBnn%-!m#io*2w|s0HF|MW7wp=_Y&<+tN6UOvN`z zc>=6=j{iD3H$myA?^+%*Uw@U7V&x@FUE{VH2Rd$8pB#*xu>s)0b9 zaxwzlfmKzK)RA3P2{vBsELyHo{uzW-<8+Y&Mik6Ey36_0}xyZ^ey1y5#V zAQeh0eSOhD)-Sr{TVL!zDN8jJkv5P33Lk>PyPPKH;jxWqKenWy>K0HJY;Uc|e!x5| zEG(Rtxf*1<4bqgftcn6bvZ%n5P1q>TA@qj zPq)XpSefgZW2sGB#hsfgUf zq~wXFplC!0=SIWbEPs}0Rj$nRRTy#yAFNBYZo5&t$ya*Df=S{zxXCU*!JugJ_3?94 z^!?MCfKrB2NFqAb zZqh61)^VI68;TdX^5vBqYfp%#iS~Ol`rJ-cRf|dot_XRVdR9xJUe|_HG%>cw`^)XI zc>9G`nUeA?uiOEec5BB3=bz6r>q-^RnZ-`osNK3WX@_mm)Vt8TJ~-8A*i}`~NwsRY zE4RU}(zCy4t;!YCeS~ryM3XCxctO+TFYKtOb;L(ef)^D2 zV3Zsyu&dy>b6N27>+EdX`y>RJxkqltCN`^R5N5gP^c9zG^QXs7FpSuiY+s<=1PKg_ zZ}6pAbj#);cp_ztp{va{+cY8YpLg%!RCN3OEwxNTktq^W7+ftU3EsOjSH#Vp3RsOs zWE8V2Qm%A+DlZ2{siuvV_R)Z{Th?=dN$AM5F<2{8>u9kVcx>f(%^>LxvOPKCP= zx^&JJ3i?SNj^~mBD9aJnscI#qu&^T7yQcCl16&R_8f!*$&jWb%6=>#}YAy~fzR7p<9;a0G6tM)=lB3fkA9zLR^Hg=^UNeHq)KeS1~3 z@CUIKr8Zw3bj0V!l65b=doVhh;#x{PMM2lDVLCDQ5?QfaBCOYSNGCv6M%YDV3(bYb zXq%g&RAV~{*HlF6TW+uA6gh;>nC%tKf*@HtPna59saXw5xVdM)4_UDNMpWMhsz`~5 ztVxVTLkUN1cHpPM($fL#aM%n|!lA7Vg( zulx2dO()W`ff?loV%i!#7{5ha{r2I*N<gEi@5PSyFqP7;*0aX-Wxdk{vUcM~MBl3}q62AK{s}DMn%9 zTSb3aY;c8v!ZRtMY>=SLK!_8}8Vv2jq{iatrWW7Q*(A(IFQrqt^v|Lgvfk|yg2h8$OFB^ zuUa-~qZQLxv*d{vcyahLwuplu)er!hsSR`ezD^XoDVe7Zbw^C5En+L9!IvqcPEM+m z^EfIQkHiU(cvnw7P^uP@v{&b$F|s$|uQ^~oP#eTaHt}ZtYrT$kv``AajqX13OlUf) zugT2O<%L)#K4TB<rJ1&ea&{-47;w$z??camK2rV`Zb~e zWt=Q_RA7OggoB0yRwVB}UnzQjavz)^k2mek?w38!{(RSW{u11YLtoEZ zNHx@K7%U#KXMyyw_funDtYnm3r(bWX6y`jMtkxf3IgOOda`p~?PS&`QI}A@LG1stP z;^7Mnu*otuK5~~$`-3<*G8WWgQOvA`^XH#~U)lMT&p_##l&u8=Z_}=w3fuPdBh$r< z2Lt56w=Q;}MhUvL8MIEMdGF_6Ndzr0g=xP|+&PnZ8b*Q#9y{g{n|OCqTi8GhT*CAS zTH(Iu`9()8G3Y^B1K;F55Q#I2HAOhiYcAawv@nTDiJ13I>YU!Wv@W3nXkV=ejhHxX za`)pQ@KNZ3t9Z4Id$>g}JmMo0VUYT2gw(Fr1YTxc@Ib@XAu2V%%6ZXYko!Hr7BIaA(s{!rQ(dKU0M-9;pA9jp3>9Z#XV zCId`q+0OL4aRc=fOlPwMyBH9>P@j8QyZK(4CX}Qxy3X}L|_sjc)TA#(4G zSL3T-N1k1^ZH2;bhGh81u;ctZeZAx?e7&BbeSedjv6u`G1?`5WBb{QR;G0En=_Rc> z^Gvut$qw-CR&(o0p-<4RT~iaX40NkO!+70kYiMYzcN5S#)myTuJ|?fQuzY@8?_4yZ zHRy%R443f(W(?@SJCc#eKA>=x@4P#=Z(n;#BidaUKZ)ju7Y4VV)7J7Eah?Am-&_o%#h-56Q8x_` zIoL&$RgR+kCFeO^jpjW`YdohzfAO@<;JAMJhpA%n=_?I8S^L{emN%y9O_S+PqjkaM z&qsbq)HCa4S0w)ia{q*sW%Ybc-}0h@=7-p(cP{5sCN`pQx(IwRrqG*{al%>e@39HS zW?^;p^wjmB0QCOIZj$4+mUF~qdknVE2&vJ(H~U_IHE8UFys?nD>9GR6!&)~tAs^6xJH#ZE_CX!m@TYI5e1a{IE7ISyn*0o8?WdRiSFwfrCO zOLkCj%RjZQ{EUCUVisJUd0OND`^bO))W!H;2KN6v1paX4-2aae{_m&S_Gx&y{F?v! zK>6K3%dFS`d}P)C{`4Z^X?4xI9pjt+chUb{7{7=8{lB}k2wT3v&aUSFv1|E%=Tc_= d-*_q|s!sCPyx^6yb}D>Xn2#8|f6(Mr{|ou?CSd>o delta 248750 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�e9_VT8macKk@ut78kO+1&#& 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

    o48e9?Gt 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[UJBs$v@XGtK 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, fq)(fq, Salmon) Date: Tue, 18 Jun 2024 16:24:12 +0100 Subject: [PATCH 359/634] Return percentages for strandedness --- .../local/utils_nfcore_rnaseq_pipeline/main.nf | 6 +++--- .../tests/main.function.nf.test.snap | 14 +++++++------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/subworkflows/local/utils_nfcore_rnaseq_pipeline/main.nf b/subworkflows/local/utils_nfcore_rnaseq_pipeline/main.nf index a4f330adf..14119edcb 100644 --- a/subworkflows/local/utils_nfcore_rnaseq_pipeline/main.nf +++ b/subworkflows/local/utils_nfcore_rnaseq_pipeline/main.nf @@ -574,9 +574,9 @@ def calculateStrandedness(forwardFragments, reverseFragments, unstrandedFragment return [ inferred_strandedness: strandedness, - forwardFragments: forwardFragments / (totalFragments as double), - reverseFragments: reverseFragments / (totalFragments as double), - unstrandedFragments: unstrandedFragments / (totalFragments as double) + forwardFragments: (forwardFragments / (totalFragments as double)) * 100, + reverseFragments: (reverseFragments / (totalFragments as double)) * 100, + unstrandedFragments: (unstrandedFragments / (totalFragments as double)) * 100 ] } diff --git a/subworkflows/local/utils_nfcore_rnaseq_pipeline/tests/main.function.nf.test.snap b/subworkflows/local/utils_nfcore_rnaseq_pipeline/tests/main.function.nf.test.snap index 05439458d..dd632fbc3 100644 --- a/subworkflows/local/utils_nfcore_rnaseq_pipeline/tests/main.function.nf.test.snap +++ b/subworkflows/local/utils_nfcore_rnaseq_pipeline/tests/main.function.nf.test.snap @@ -49,8 +49,8 @@ "content": [ { "inferred_strandedness": "unstranded", - "forwardFragments": 0.5, - "reverseFragments": 0.5, + "forwardFragments": 50.0, + "reverseFragments": 50.0, "unstrandedFragments": 0.0 } ], @@ -65,7 +65,7 @@ { "inferred_strandedness": "reverse", "forwardFragments": 0.0, - "reverseFragments": 1.0, + "reverseFragments": 100.0, "unstrandedFragments": 0.0 } ], @@ -219,7 +219,7 @@ "content": [ { "inferred_strandedness": "forward", - "forwardFragments": 1.0, + "forwardFragments": 100.0, "reverseFragments": 0.0, "unstrandedFragments": 0.0 } @@ -242,9 +242,9 @@ "content": [ { "inferred_strandedness": "reverse", - "forwardFragments": 0.0074992500657742505, - "reverseFragments": 0.8360163982823675, - "unstrandedFragments": 0.1564843516518582 + "forwardFragments": 0.749925006577425, + "reverseFragments": 83.60163982823676, + "unstrandedFragments": 15.64843516518582 } ], "meta": { From 3ad69a73c8c66d81b720e462fa64ff38eb74fcd9 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Tue, 18 Jun 2024 16:40:51 +0100 Subject: [PATCH 360/634] Explicitly publish lib_format_counts --- subworkflows/nf-core/quantify_pseudo_alignment/nextflow.config | 2 +- workflows/rnaseq/nextflow.config | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/subworkflows/nf-core/quantify_pseudo_alignment/nextflow.config b/subworkflows/nf-core/quantify_pseudo_alignment/nextflow.config index 16c0c50d3..d39a8c6b7 100644 --- a/subworkflows/nf-core/quantify_pseudo_alignment/nextflow.config +++ b/subworkflows/nf-core/quantify_pseudo_alignment/nextflow.config @@ -5,7 +5,7 @@ if (!params.skip_pseudo_alignment && params.pseudo_aligner == 'salmon') { publishDir = [ path: { "${params.outdir}/${params.pseudo_aligner}" }, mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') || filename.endsWith('_meta_info.json') ? null : filename } + saveAs: { filename -> filename.equals('versions.yml') || filename.endsWith('_meta_info.json' || filename.endsWith('_format_counts.json') ? null : filename } ] } } diff --git a/workflows/rnaseq/nextflow.config b/workflows/rnaseq/nextflow.config index 657b483a6..81245bee7 100644 --- a/workflows/rnaseq/nextflow.config +++ b/workflows/rnaseq/nextflow.config @@ -29,7 +29,7 @@ if (!params.skip_alignment && params.aligner == 'star_salmon') { publishDir = [ path: { "${params.outdir}/${params.aligner}" }, mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') || filename.endsWith('_meta_info.json') ? null : filename } + saveAs: { filename -> filename.equals('versions.yml') || filename.endsWith('_meta_info.json' || filename.endsWith('_format_counts.json') ? null : filename } ] } From 4ce478d00e53af64e310c008cafe7033fae76fb9 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Tue, 18 Jun 2024 17:01:16 +0100 Subject: [PATCH 361/634] update docs --- docs/images/mqc_strand_check.png | Bin 30306 -> 268968 bytes docs/output.md | 2 +- docs/usage.md | 6 +++++- 3 files changed, 6 insertions(+), 2 deletions(-) mode change 100755 => 100644 docs/images/mqc_strand_check.png diff --git a/docs/images/mqc_strand_check.png b/docs/images/mqc_strand_check.png old mode 100755 new mode 100644 index 7b163f9eafa623ddd33c69f3b0e0372b0fc314a5..2e2cf7afc3f6e3ebbe012533c36ab7b7809c51a8 GIT binary patch literal 268968 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 literal 30306 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 -This script predicts the "strandedness" of the protocol (i.e. unstranded, sense or antisense) that was used to prepare the sample for sequencing by assessing the orientation in which aligned reads overlay gene features in the reference genome. The strandedness of each sample has to be provided to the pipeline in the input samplesheet (see [usage docs](https://nf-co.re/rnaseq/usage#samplesheet-input)). However, this information is not always available, especially for public datasets. As a result, additional features have been incorporated into this pipeline to auto-detect whether you have provided the correct information in the samplesheet, and if this is not the case then a warning table will be placed at the top of the MultiQC report highlighting the offending samples (see image below). If required, this will allow you to correct the input samplesheet and rerun the pipeline with the accurate strand information. Note, it is important to get this information right because it can affect the final results. +This script predicts the "strandedness" of the protocol (i.e. unstranded, sense or antisense) that was used to prepare the sample for sequencing by assessing the orientation in which aligned reads overlay gene features in the reference genome. The strandedness of each sample has to be provided to the pipeline in the input samplesheet (see [usage docs](https://nf-co.re/rnaseq/usage#samplesheet-input)). However, this information is not always available, especially for public datasets. As a result, additional features have been incorporated into this pipeline to auto-detect whether you have provided the correct information in the samplesheet, and if this is not the case then the affected libraries will be flagged in the tale under 'Strandedness Checks' elsewhere in the report. If required, this will allow you to correct the input samplesheet and rerun the pipeline with the accurate strand information. Note, it is important to get this information right because it can affect the final results. RSeQC documentation: [infer_experiment.py](http://rseqc.sourceforge.net/#infer-experiment-py) diff --git a/docs/usage.md b/docs/usage.md index bc8db4dc7..8db7b2d79 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -18,7 +18,7 @@ You will need to create a samplesheet with information about the samples you wou ### Multiple runs of the same sample -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. The pipeline will concatenate the raw reads before performing any downstream analysis. Below is an example for the same sample sequenced across 3 lanes. If you set the strandedness value to `auto` the pipeline will sub-sample the input FastQ files to 1 million reads, use Salmon Quant to infer the strandedness automatically and then propagate this information to the remainder of the pipeline. If the strandedness has been inferred or provided incorrectly a warning will be present at the top of the MultiQC report so please be sure to check when looking at the QC for your samples. +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. The pipeline will concatenate the raw reads before performing any downstream analysis. Below is an example for the same sample sequenced across 3 lanes. ```csv title="samplesheet.csv" sample,fastq_1,fastq_2,strandedness @@ -27,6 +27,10 @@ CONTROL_REP1,AEG588A1_S1_L003_R1_001.fastq.gz,AEG588A1_S1_L003_R2_001.fastq.gz,a CONTROL_REP1,AEG588A1_S1_L004_R1_001.fastq.gz,AEG588A1_S1_L004_R2_001.fastq.gz,auto ``` +### Strandedness prediction + +If you set the strandedness value to `auto` the pipeline will sub-sample the input FastQ files to 1 million reads, use Salmon Quant to infer the strandedness automatically and then propagate this information to the remainder of the pipeline. If the strandedness has been inferred or provided incorrectly the sample will be flagged in the 'Strandedness Checks' section of the MultiQC report, so please be sure to check when looking at the QC for your samples. + ### Full samplesheet The pipeline will auto-detect whether a sample is single- or paired-end using the information provided in the samplesheet. The samplesheet can have as many columns as you desire, however, there is a strict requirement for the first 4 columns to match those defined in the table below. From 3583d2cb8cf9b39ca035b23964f26802dc63962b Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Tue, 18 Jun 2024 17:01:36 +0100 Subject: [PATCH 362/634] Fix typo --- subworkflows/nf-core/quantify_pseudo_alignment/nextflow.config | 2 +- workflows/rnaseq/nextflow.config | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/subworkflows/nf-core/quantify_pseudo_alignment/nextflow.config b/subworkflows/nf-core/quantify_pseudo_alignment/nextflow.config index d39a8c6b7..adf881967 100644 --- a/subworkflows/nf-core/quantify_pseudo_alignment/nextflow.config +++ b/subworkflows/nf-core/quantify_pseudo_alignment/nextflow.config @@ -5,7 +5,7 @@ if (!params.skip_pseudo_alignment && params.pseudo_aligner == 'salmon') { publishDir = [ path: { "${params.outdir}/${params.pseudo_aligner}" }, mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') || filename.endsWith('_meta_info.json' || filename.endsWith('_format_counts.json') ? null : filename } + saveAs: { filename -> filename.equals('versions.yml') || filename.endsWith('_meta_info.json') || filename.endsWith('_format_counts.json') ? null : filename } ] } } diff --git a/workflows/rnaseq/nextflow.config b/workflows/rnaseq/nextflow.config index 81245bee7..b603e12cd 100644 --- a/workflows/rnaseq/nextflow.config +++ b/workflows/rnaseq/nextflow.config @@ -29,7 +29,7 @@ if (!params.skip_alignment && params.aligner == 'star_salmon') { publishDir = [ path: { "${params.outdir}/${params.aligner}" }, mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') || filename.endsWith('_meta_info.json' || filename.endsWith('_format_counts.json') ? null : filename } + saveAs: { filename -> filename.equals('versions.yml') || filename.endsWith('_meta_info.json') || filename.endsWith('_format_counts.json') ? null : filename } ] } From eef388ec8aedb873d9033f88c5f747a70d107f59 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Tue, 18 Jun 2024 17:07:02 +0100 Subject: [PATCH 363/634] Prettier --- docs/usage.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/usage.md b/docs/usage.md index 8db7b2d79..6afb269ce 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -18,7 +18,7 @@ You will need to create a samplesheet with information about the samples you wou ### Multiple runs of the same sample -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. The pipeline will concatenate the raw reads before performing any downstream analysis. Below is an example for the same sample sequenced across 3 lanes. +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. The pipeline will concatenate the raw reads before performing any downstream analysis. Below is an example for the same sample sequenced across 3 lanes. ```csv title="samplesheet.csv" sample,fastq_1,fastq_2,strandedness From c95c489ed9d2a266dba4eb7db55d4b3f0f4c0790 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Tue, 18 Jun 2024 17:10:03 +0100 Subject: [PATCH 364/634] Fix typo Co-authored-by: Maxime U Garcia --- docs/output.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/output.md b/docs/output.md index c9583e76e..f713c311b 100644 --- a/docs/output.md +++ b/docs/output.md @@ -367,7 +367,7 @@ The majority of RSeQC scripts generate output files which can be plotted and sum -This script predicts the "strandedness" of the protocol (i.e. unstranded, sense or antisense) that was used to prepare the sample for sequencing by assessing the orientation in which aligned reads overlay gene features in the reference genome. The strandedness of each sample has to be provided to the pipeline in the input samplesheet (see [usage docs](https://nf-co.re/rnaseq/usage#samplesheet-input)). However, this information is not always available, especially for public datasets. As a result, additional features have been incorporated into this pipeline to auto-detect whether you have provided the correct information in the samplesheet, and if this is not the case then the affected libraries will be flagged in the tale under 'Strandedness Checks' elsewhere in the report. If required, this will allow you to correct the input samplesheet and rerun the pipeline with the accurate strand information. Note, it is important to get this information right because it can affect the final results. +This script predicts the "strandedness" of the protocol (i.e. unstranded, sense or antisense) that was used to prepare the sample for sequencing by assessing the orientation in which aligned reads overlay gene features in the reference genome. The strandedness of each sample has to be provided to the pipeline in the input samplesheet (see [usage docs](https://nf-co.re/rnaseq/usage#samplesheet-input)). However, this information is not always available, especially for public datasets. As a result, additional features have been incorporated into this pipeline to auto-detect whether you have provided the correct information in the samplesheet, and if this is not the case then the affected libraries will be flagged in the table under 'Strandedness Checks' elsewhere in the report. If required, this will allow you to correct the input samplesheet and rerun the pipeline with the accurate strand information. Note, it is important to get this information right because it can affect the final results. RSeQC documentation: [infer_experiment.py](http://rseqc.sourceforge.net/#infer-experiment-py) From 89722c8e474d189eb3821dc8825296dc60a09034 Mon Sep 17 00:00:00 2001 From: Adam Talbot <12817534+adamrtalbot@users.noreply.github.com> Date: Wed, 19 Jun 2024 10:09:49 +0100 Subject: [PATCH 365/634] Use Github Action to detect file changes instead of custom Python code --- .github/{python => }/include.yaml | 0 .github/python/find_changed_files.py | 317 --------------------------- .github/workflows/ci.yml | 33 +-- CHANGELOG.md | 1 + 4 files changed, 12 insertions(+), 339 deletions(-) rename .github/{python => }/include.yaml (100%) delete mode 100644 .github/python/find_changed_files.py diff --git a/.github/python/include.yaml b/.github/include.yaml similarity index 100% rename from .github/python/include.yaml rename to .github/include.yaml diff --git a/.github/python/find_changed_files.py b/.github/python/find_changed_files.py deleted file mode 100644 index c0c617527..000000000 --- a/.github/python/find_changed_files.py +++ /dev/null @@ -1,317 +0,0 @@ -#!/usr/bin/env python - -# This script is used to identify *.nf.test files for changed functions/processs/workflows/pipelines and *.nf-test files -# with changed dependencies, then return as a JSON list - -import argparse -import json -import logging -import re -import yaml - -from itertools import chain -from pathlib import Path -from git import Repo - - -def parse_args() -> argparse.Namespace: - """ - Parse command line arguments and return an ArgumentParser object. - - Returns: - argparse.ArgumentParser: The ArgumentParser object with the parsed arguments. - """ - parser = argparse.ArgumentParser( - description="Scan *.nf.test files for function/process/workflow name and return as a JSON list" - ) - parser.add_argument( - "-r", - "--head_ref", - required=True, - help="Head reference branch (Source branch for a PR).", - ) - parser.add_argument( - "-b", - "--base_ref", - required=True, - help="Base reference branch (Target branch for a PR).", - ) - parser.add_argument( - "-x", - "--ignored_files", - nargs="+", - default=[ - ".git/*", - ".gitpod.yml", - ".prettierignore", - ".prettierrc.yml", - "*.md", - "*.png", - "modules.json", - "pyproject.toml", - "tower.yml", - ], - help="List of files or file substrings to ignore.", - ) - parser.add_argument( - "-i", - "--include", - type=Path, - default=".github/python/include.yaml", - help="Path to an include file containing a YAML of key value pairs to include in changed files. I.e., return the current directory if an important file is changed.", - ) - parser.add_argument( - "-l", - "--log-level", - choices=["DEBUG", "INFO", "WARNING", "ERROR"], - default="INFO", - help="Logging level", - ) - parser.add_argument( - "-t", - "--types", - nargs="+", - choices=["function", "process", "workflow", "pipeline"], - default=["function", "process", "workflow", "pipeline"], - help="Types of tests to include.", - ) - return parser.parse_args() - - -def read_yaml_inverted(file_path: str) -> dict: - """ - Read a YAML file and return its contents as a dictionary but reversed, i.e. the values become the keys and the keys become the values. - - Args: - file_path (str): The path to the YAML file. - - Returns: - dict: The contents of the YAML file as a dictionary inverted. - """ - with open(file_path, "r") as f: - data = yaml.safe_load(f) - - # Invert dictionary of lists into contents of lists are keys, values are the original keys - # { "key": ["item1", "item2] } --> { "item1": "key", "item2": "key" } - return {value: key for key, values in data.items() for value in values} - - -def find_changed_files( - branch1: str, - branch2: str, - ignore: list[str], -) -> list[Path]: - """ - Find all *.nf.tests that are associated with files that have been changed between two specified branches. - - Args: - branch1 (str) : The first branch being compared - branch2 (str) : The second branch being compared - ignore (list) : List of files or file substrings to ignore. - - Returns: - list: List of files matching the pattern *.nf.test that have changed between branch2 and branch1. - """ - # create repo - repo = Repo(".") - # identify commit on branch1 - branch1_commit = repo.commit(branch1) - # identify commit on branch2 - branch2_commit = repo.commit(branch2) - # compare two branches - diff_index = branch1_commit.diff(branch2_commit) - - # Start empty list of changed files - changed_files = [] - - # For every file that has changed between commits - for file in diff_index: - # Get pathlib.Path object - filepath = Path(file.a_path) - # If file does not match any in the ignore list, add containing directory to changed_files - if not any(filepath.match(ignored_path) for ignored_path in ignore): - changed_files.append(filepath) - - # Uniqueify the results before returning for efficiency - return list(set(changed_files)) - - -def detect_include_files( - changed_files: list[Path], include_files: dict[str, str] -) -> list[Path]: - """ - Detects the include files based on the changed files. - - Args: - changed_files (list[Path]): List of paths to the changed files. - include_files (dict[str, str]): Key-value pairs to return if a certain file has changed. If a file in a directory has changed, it points to a different directory. - - Returns: - list[Path]: List of paths to representing the keys of the include_files dictionary, where a value matched a path in changed_files. - """ - new_changed_files = [] - for filepath in changed_files: - # If file is in the include_files, we return the key instead of the value - for include_path, include_key in include_files.items(): - if filepath.match(include_path): - new_changed_files.append(Path(include_key)) - return new_changed_files - - -def detect_nf_test_files(changed_files: list[Path]) -> list[Path]: - """ - Detects and returns a list of nf-test files from the given list of changed files. - - Args: - changed_files (list[Path]): A list of file paths. - - Returns: - list[Path]: A list of nf-test file paths. - """ - result: list[Path] = [] - for path in changed_files: - # If Path is the exact nf-test file add to list: - if path.match("*.nf.test") and path.exists(): - result.append(path) - # Else recursively search for nf-test files: - else: - # Get the enclosing dir so files in the same dir can be found. - # e.g. - # dir/ - # ├─ main.nf - # ├─ main.nf.test - for file in path.parent.rglob("*.nf.test"): - result.append(file) - return result - - -def process_files(files: list[Path]) -> list[str]: - """ - Process the files and return lines that begin with 'workflow', 'process', or 'function' and have a single string afterwards. - - Args: - files (list): List of files to process. - - Returns: - list: List of lines that match the criteria. - """ - result = [] - for file in files: - with open(file, "r") as f: - is_pipeline_test = True - lines = f.readlines() - for line in lines: - line = line.strip() - if line.startswith(("workflow", "process", "function")): - words = line.split() - if len(words) == 2 and re.match(r'^".*"$', words[1]): - result.append(line) - is_pipeline_test = False - - # If no results included workflow, process or function - # Add a dummy result to fill the 'pipeline' category - if is_pipeline_test: - result.append("pipeline 'PIPELINE'") - - return result - - -def convert_nf_test_files_to_test_types( - lines: list[str], types: list[str] = ["function", "process", "workflow", "pipeline"] -) -> dict[str, list[str]]: - """ - Generate a dictionary of function, process and workflow lists from the lines. - - Args: - lines (list): List of lines to process. - types (list): List of types to include. - - Returns: - dict: Dictionary with function, process and workflow lists. - """ - # Populate empty dict from types - result: dict[str, list[str]] = {key: [] for key in types} - - for line in lines: - words = line.split() - if len(words) == 2 and re.match(r'^".*"$', words[1]): - keyword = words[0] - name = words[1].strip("'\"") # Strip both single and double quotes - if keyword in types: - result[keyword].append(name) - return result - - -def find_changed_dependencies(paths: list[Path], tags: list[str]) -> list[Path]: - """ - Find all *.nf.test files with changed dependencies from a list of paths. - - Args: - paths (list): List of directories or files to scan. - tags (list): List of tags identified as having changes. - - Returns: - list: List of *.nf.test files with changed dependencies. - """ - - result: list[Path] = [] - - nf_test_files = detect_nf_test_files(paths) - - # find nf-test files with changed dependencies - for nf_test_file in nf_test_files: - with open(nf_test_file, "r") as f: - lines = f.readlines() - # Get all tags from nf-test file - # Make case insensitive with .casefold() - tags_in_nf_test_file = [ - tag.casefold().replace("/", "_") - for tag in convert_nf_test_files_to_test_types(lines, types=["tag"])[ - "tag" - ] - ] - # Check if tag in nf-test file appears in a tag. - # Use .casefold() to be case insensitive - if any( - tag.casefold().replace("/", "_") in tags_in_nf_test_file for tag in tags - ): - result.append(nf_test_file) - - return result - - -if __name__ == "__main__": - - # Utility stuff - args = parse_args() - logging.basicConfig(level=args.log_level) - - # Parse nf-test files for target test tags - changed_files = find_changed_files(args.head_ref, args.base_ref, args.ignored_files) - - # If an additional include YAML is added, we detect additional changed dirs to include - if args.include: - include_files = read_yaml_inverted(args.include) - changed_files = changed_files + detect_include_files( - changed_files, include_files - ) - nf_test_files = detect_nf_test_files(changed_files) - lines = process_files(nf_test_files) - result = convert_nf_test_files_to_test_types(lines) - - # Get only relevant results (specified by -t) - # Unique using a set - target_results = list( - {item for sublist in map(result.get, args.types) for item in sublist} - ) - - # Parse files to identify nf-tests with changed dependencies - changed_dep_files = find_changed_dependencies([Path(".")], target_results) - - # Combine target nf-test files and nf-test files with changed dependencies - all_nf_tests = [ - str(test_path) for test_path in set(changed_dep_files + nf_test_files) - ] - - # Print to stdout - print(json.dumps(all_nf_tests)) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 16ccbe6c3..798aed825 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -23,34 +23,23 @@ jobs: name: Check for changes runs-on: ubuntu-latest outputs: - nf_test_files: ${{ steps.list.outputs.nf_test_files }} + nf_test_files: ${{ steps.list.outputs.components }} steps: - - uses: actions/setup-python@v4 - with: - python-version: "3.11" - architecture: "x64" - - uses: actions/checkout@v4 + - uses: actions/checkout@v3 with: fetch-depth: 0 - - name: Install Python dependencies - run: | - python -m pip install --upgrade pip - pip install gitpython pyyaml - - - name: list nf_test_files + - name: List nf-test files id: list + uses: adamrtalbot/detect-nf-test-changes@v0.0.2 + with: + head: ${{ github.sha }} + base: origin/${{ github.base_ref }} + include: .github/include.yaml + + - name: print list of nf-test files run: | - echo nf_test_files=$(python \ - .github/python/find_changed_files.py \ - -t pipeline workflow process \ - --head_ref ${{ github.sha }} \ - --base_ref origin/${{ github.base_ref }} \ - ) >> $GITHUB_OUTPUT - - - name: debug - run: | - echo ${{ steps.list.outputs.nf_test_files }} + echo ${{ steps.list.outputs.components }} test: name: ${{ matrix.nf_test_files }} ${{ matrix.profile }} NF-${{ matrix.NXF_VER }} diff --git a/CHANGELOG.md b/CHANGELOG.md index 7205428bf..ad889a8f9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -70,6 +70,7 @@ Thank you to everyone else that has contributed by reporting bugs, enhancements - [PR #1293](https://github.com/nf-core/rnaseq/pull/1293) - Update subworkflow utils_nfcore_pipeline - [PR #1297](https://github.com/nf-core/rnaseq/pull/1297) - Important! Template update for nf-core/tools v2.14.1 - [PR #1302](https://github.com/nf-core/rnaseq/pull/1302) - Add missing files from Tximport processing +- [PR #####]() - Use pre-built Github Action to detect nf-test changes ### Parameters From b6a0720f82df7f55707c33d9211ff71e2a63258f Mon Sep 17 00:00:00 2001 From: Adam Talbot <12817534+adamrtalbot@users.noreply.github.com> Date: Wed, 19 Jun 2024 10:12:36 +0100 Subject: [PATCH 366/634] Update CHANGELOG.md --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ad889a8f9..691486ab7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -70,7 +70,7 @@ Thank you to everyone else that has contributed by reporting bugs, enhancements - [PR #1293](https://github.com/nf-core/rnaseq/pull/1293) - Update subworkflow utils_nfcore_pipeline - [PR #1297](https://github.com/nf-core/rnaseq/pull/1297) - Important! Template update for nf-core/tools v2.14.1 - [PR #1302](https://github.com/nf-core/rnaseq/pull/1302) - Add missing files from Tximport processing -- [PR #####]() - Use pre-built Github Action to detect nf-test changes +- [PR #1322](https://github.com/nf-core/rnaseq/pull/1322) - Use pre-built Github Action to detect nf-test changes ### Parameters From 439ac99fa6232dec9446c5041edd67cbb4981ae9 Mon Sep 17 00:00:00 2001 From: Adam Talbot <12817534+adamrtalbot@users.noreply.github.com> Date: Wed, 19 Jun 2024 10:38:14 +0100 Subject: [PATCH 367/634] Update actions/checkout to v4 --- .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 a8aca94df..0363c9cd3 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -20,7 +20,7 @@ jobs: outputs: nf_test_files: ${{ steps.list.outputs.components }} steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 with: fetch-depth: 0 From 035e85fe9cb283f493eba451303a4b31dbc2f101 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Wed, 19 Jun 2024 11:07:09 +0100 Subject: [PATCH 368/634] Set maximum on bars per column --- workflows/rnaseq/assets/multiqc/multiqc_config.yml | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/workflows/rnaseq/assets/multiqc/multiqc_config.yml b/workflows/rnaseq/assets/multiqc/multiqc_config.yml index 4fac672f3..f2f49968d 100644 --- a/workflows/rnaseq/assets/multiqc/multiqc_config.yml +++ b/workflows/rnaseq/assets/multiqc/multiqc_config.yml @@ -176,3 +176,16 @@ custom_data: table_title: "Samples strandedness check" namespace: "Samples strandedness check" format: "{:.2f}" + headers: + Provided strandednes: + description: User-provided strandedness + Strand inference method: + description: Tool used to detect strandedness + Inferred strandedness: + description: Interred strandedness + Sense (%): + max: 100 + Antisense (%): + max: 100 + Unstranded (%): + max: 100 From cdbc97152b2a4ebd16a8398e6ef43b9ea1348e41 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Wed, 19 Jun 2024 11:57:09 +0100 Subject: [PATCH 369/634] Pass/fail in separate mqc column --- docs/images/mqc_strand_check.png | Bin 268968 -> 295486 bytes .../rnaseq/assets/multiqc/multiqc_config.yml | 8 ++++--- workflows/rnaseq/main.nf | 22 ++++++++---------- 3 files changed, 15 insertions(+), 15 deletions(-) diff --git a/docs/images/mqc_strand_check.png b/docs/images/mqc_strand_check.png index 2e2cf7afc3f6e3ebbe012533c36ab7b7809c51a8..6d9a698a32b775254b744519680924e3414979e5 100644 GIT binary patch literal 295486 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

    Nz7~&E_b5B5p@a7-HC7lV6HGptq*vL~2 zjYK%Nbl8@k7R}U`}xweu(efP+Kwq*Da!643Je2-QLUt3^0x;_t$AI2@PeTj? zbhy=#oCJd5u9u!sjXp96)cnk=qim%e2+G^C)?t8R_MlXjwM()fh=}Q9@6A$MW=#7^ zMbNf&TGP$cF)TNI?&j8QEn(NE5#~8SC$K5}%msT9<*`P{me2-ad z-#5p~AsGjepLPgyT1-xsHV)G@TDz+c0(99!=OeS6zx7x5{rn{Drbt8dPgn*}UVeWa zqyXS99dq%>2m%xUDPMJIvewJ_I(WQ zGsX2RuG*|KLE3o?<8V^G%vB-OmrUNV<8=KW?*O;{@e3qcfDv1}zz*9wxwCYw!++y@q6xen0CGzNVH03%nFGdCI!c`w^i+ES4r@aN2!c!Z!w>3j9GCN z>7Mrmq{6LN$`If7%PkB%me=q6%b@%*JY*Ou18L9a3a8NkxV{sBMdL4nnG3#unTvly z_=7&TObK?5rSfo5u5Z7f5-3_c$JYg*i3iAD>c8vsFAQ76QNMLQ{S834a?TYvKY-y| zQ3n#|uf2vS8;_4x*tN>e+YedB*sm7duJ)Y~K|8PBtN=BWYaAka^E7%8fO~0;-_e0s zx8{qCo<}8(_a*7@&j7C7U~JM%L4^St+c-Pd*9guGIc#la%QLP0^nk(ZNFMM1$N zLP0^D$3O>zlU=tLU-o~bTmB98Cb zm(7NQ`m=`W!#Usn%eCHWu9Mk2;@gj8>AGb`?{wm?h8Tai+E|K--pHa5MCMP&g6{`GiwWk&J6+?4gPYQFFB&3H!h(wgHP@eC@Zl@&)PDp52Py|%|8hbUAp zJxVt`Xr2W=wg@qNkH-dIbQUOxUQ`#DWh@N|Gkh_P`aT*fh*s&ocscpOUoShskyqP6 z6DpmA702i)c60IjMzR!)RMu-exfLH_}bb>kl&NgP7()Tnp|i0P!n^RS8~?KEr> zTFh(=(V2}pWgsC@?e@41*!oYl*v2~!h7m6~ur8ugroWyUC3B%|VcZk_9FI>-Gw^V% zWu3{#VuRKfC`j!h?r ztSC~ucJ)QR4sRnonEw#Fxn!A9_nqG(#odsBk^3dZ!v@rVyF?f$&QyLpj}`7EivJoL z|8;+NS>(n0y9g@sJ-_-7B&1PHoA@o(5GFKV3B>*C)}>3+daut9&k9@fF0CF8nbe<^ z;A_o4LkLh|o3wg{*u=h_&_;DfC21C`b23Uqayr?Db=Kc98gn)yv0WyyfQ?Zg0l!f1=il|tx~E+WDZ z=Y2#fg0xs;tLo9i!UD#UQJ!TM86st(5&X;6xnD7HW}M^2W5wh9VRdYg`c&SscgNHR zv5TohXe0Xr^wC69S(XLEGlYZ$Yf-4K8anm$?K4d0aHPH+302NNM5$B8#l@w#>i?LA zX3!`!eJ$JIG=_b;@d|yu1;0Qlg>CKa#z&Mn0;{**Htx_Gpyw@krTCHUq54qa1$>ah zyC2yJb35X1i0@EEe%4#&Ilydt^;rD@j}*(`Ak$sb3`2{jf|!c3-@blamvAO|6QPk= zJNWJ|_dAk$Ki3SlUw5z#x)X5CK1>>8hkukd>VlCnw67Y_!$>qfjT$QM3Fx;97K?7t zDj_WS$t#1H`OzXfs!zGSa2p;KHn}Yxxj*p1@eMdxn!`~4aHlz9UfzJPop1EeGH_xWZHlhEj8l{>z#F|a`QZp{?nK#4F7?#eoWjW4B zVgI_6x=+(m4H7#HzBv}J@|b30`Cl@aie{&%$_hZMl|3@^@@#%=eSMk_d6o7}r=U*x z?85==O62pT=M~Q(aUstM;!K|lsVn79t9VFetFq+!jF?zaxR8_wz6(76eEuRX=g*gJ zjg{Q~*ZJ!Cn)N@mPmJM>Mupw^6PYIeU$dZu2kkJJ_X{5`s2 zt30hLt*miwJL{(~QjsJ&MQES6V%n-iUw)D~cdf;fzVP-82g?T*Qx@iyGjF6=m{}?` zax`+sDDrvpeQXtNiMP?VQMX@iFa1sxOo+(F)n?Q-ukOE-nk<+u^CZF`Vm=banPG<* z#ou+2{d2x?-~x3%`7`_LDob|!!AQ@LcJBC>6LHG%%F)QN^nyl}n>?R6x%?)nN-d0g&U?vMMR~m{B~v#N!C-c|9X=ABq1O{PN5>9EYXX%obwYO3+IgWc~iJiJ3Ew1+jz`o%-+sM zwBHNvk$uP~>2;l6bsvx)em0WZncKBdUYgG}UOjYn{^U=>7Y?Tm z?g)<+qqP>d$#uu6xK+V^mniGfO-(*GzGCfE?ZVn>&rr{}3zk44+R)-yhi3ozg+cP<_ctH3{HH9*^QZv6E{USo^VEM-c5BBBD|-s2!0WLCwW2%!#`#3Q{KlLi)MX@6 zt`q38Qf3(x|&2mMuk2iN~BOF7-{^?*UVXaR>dqOLuGc zdN2Fy=hvm&yJfE}MK)$Pehzzbd2w}fo})ote4Kx6Cbyc?d!iMkB~*f5N?3Zb%CwTT z{1o2`t2BT`?Nbhs!ZzMyNT_t`u<*D1)G;<(Li+(}N5&Q2Rm*0|GmVh)W#X<(uk_3A z%ZI~+Ih2rJOn5|P{Y9z8ChesyUs~qO7P+dqlFbu)lf*U$ZC1BfoIVTWIwh?o_383g zdg|@fr5-*zEM2|PTZWbWSl|ADxTp94hqzyR;t0COR^IlbZE;aMtd7X`O*k77#7>*j ztm~Y9?xj0@{7Z6Z&&x*03Tyq}pTmVKjkv5(?Xik!+q3q^h{r9D`83Z9rmJ5Xzh3xJ zFuJ5MUih`}nbx7}c5FFuk4`sler8@w-X`QBo4t;GgHPKz+hdZ)e9y0#Pc%r>S#sYs z`c*Fck!k$ol8nt4XLnwvRdjX?pJzE5g^!wQhiD&Giq61`wlD3&=d3C=?b&9oU4q`q zuJtFRvheKi@YG_vvJ^^N)0fxRGVa*T5f*(b?r*T`(Mzq*zGxEdYFN8aJDwB9bNzBg zwPY|u9VYoY$TA4}C+eK!=n97fC-sy3CvsVdNNzq49&*t?Z=E|hVvOTD$|KptUI-NL zA?CYUV(xyE`gX4LEq%u-ZOCi4_mpc~J45?-e_(3;Th{gI#KYc0MmBeSe%Han#VBYv z6eoU$b-c2sg5rAS=%m%w&h|)ix{$lVvy9Ire4F24^yJTm^_}s4U32|LFWN@7Ses#!ViP@ie3QFxJ__B854t|M_*w4j z<$J=s|Fd}}-XiTGg z_rKX4^xoTDB|^EVXkH>7(M-k=fAsi0|HJnYBwRW{{Z=JT*=2YO0tQaY<0C2Rd-kE1 zy=RisVwK`Q{-FBU-P~K4_EK%Ij1&VcMW`uE-b_&u}X;ps46A%@0WxBiO^U$JHHiVV{>zJV|C+V zwRbdU;}8%KU}NWG|Y{QB4LY3gqIUuUv&`uE2IACL|C3>yb4JKKN0H+ZQq@=?K8mhPrDT2hv_ zAZFkkqI_Ju!v7rq|9IxV&iH@4682xOLF#(ykC^Bi{f`xh8Hff1X*Zas55 ztC6(&7P+T=aXjKfhEWHRx_bD5CPy(dUag8v@!pQxLBF8e?y<<)Z0pLIx9CZlNNs6p z>0D}J>Osm}FFOxAE#Vz}y#MicWD_<4kq39#GgKO?|KYa*rW`CQ{D1l?aQv_E_W{y< zpDltgg5Up7zXPPZ@BWW}Q!3Ox3^~{cc8Kf${Dk0z%PW5RK4)!S=NsS54wk!)?Ym>2 znMDY!vODz)e7o8l$_`6(oAs#Y`p+QtVP2jtMXrXiH5B=#`(9Ts?2haEmhVR6k_%1@ z6zJCec2hVkEtf@;62H|qseh9*3*`KuhplgYFtblhS;TbK`$U(^VG+^$ZK&8-w)CKz zIhki%XZY{t_&_gb4;ltCa;AE7ZHxJnAimKPrJdGmDk5U(h#?s$TRW~{; zwI?zcRJGLo9fHQ$VMTTEPT3e&{I+8D*UY3jF7&{KT`aJf&gi;o6FMbKR^83dfkKtt_(&9 z{$VQZ7u+1-)|2M-#{2x9;aVUJDong>`xMoki6&iiujww2;-idF<4BQ;&+%U&hJ!BS zy5?|gyXvGIwJ1|UIYJ`as)fMStQe*42r24Y?TIgsF%|e)GIkp-`k#9L9W?7r;BaZJ zUy2Y)df|_rNMfGCal#`L{=^Ufw4sST5zk}p)}V)xA~~tHLGRJH_XkvU7OO4njq#oc zIA#g#BM3K>5=J%kXHp!ypP_$Mfy={UrN6sGKw%?-(=M-Xv9^A{@e^1 z@whq~x0Yq4&S9yX9>PjE2n|a}F#90b|L$bRRs_;UKHN|tDUO0-OG^2xd6 zLy?iKvSFp_0!Bj>Rs~zZ&)~C1YX0-tH}Mk$U4B$=mGtzMkLyikguvcyWN#CsS*C^2 zL97O4qc4mIh*o5>-`^(L;Jp0O_aLl2g53Ie&i6*=RLFJ9;{0USo=D3CpKG`7FbO1q zNw3TOj$`}jDhIQc0LR+jDvz9fk+esvPEg1?@wxY+%=IEtlclYxzVGmc@&yBpjZr1m`8r>^+!fTVzDCFw7@R69;ZO+>*4@ILT z17?!npw^P1;fwb2Hq}a88rAj<%=zZ(#9V1?(c7Y5U=0!;)wLwFQ$>4JM;pQ4VpBQe znrlc0dD+IL`!p5=k>g)M^gvxpaf+zku9#9~3twMLvMwlwre&im@SpCrK1?=_5MWqX zx3AR-%~wtrZQMS+(Iz0`ksQJk0{b<%>ubhw4<9eR?h6KD_8gDG=o!TC2 z(vd68+#C*wY1_-`d+kdbRq>3$XopLqz=k@_Nxn<)3n6CZ5VDq0&jOtXhw+iw6utN( zy|3;JRyvVYwC7!`U*r%vhYFJEy6YuES^k6l^>7sKnnq4b~&1xyEhRjxm|=F53M!YOuep55*EH=X|EF zuRygm8`Co934@dbYdN$%9*&+~e&XN-b~3tO+=Zkw54Z^543I_h@p;s&gVZ4#cm7bvm+U;%O=*D~l4OV#`bvx-TxFhy+^SKjCG>-ABZr^&(| zC5fD-p?(iM0_%nwye};Fl6)8&-`b`<^kq->y*_K@j4jVHibHsTyjg+mq&xKD`b%BS zWpjBL3FPXGmTh+w^Xy)5{;MGw^JL{xRO7t(Ms=*x#L#L$BJ z!+s(87hBh$UKVJHXlTH=Er;lmPda_)d@i<~V|K|6x&=+sPM-MQoDKNe)c4hXXgpg@ zE>yj?HZjCM!d^*r?5ICH>*Je)u|BO)cTr#5&$|m2v`}CpD~7;-p=~kuTN+m6%?g_@N4nR6{AubZ4&!#@b;&!q z=1cuaWpgkyXcFwMkD!q2AAz42i#sT|AjBb5^gZ8uI%xrX$kuY~qA&gMjY76+@9(fO*})0`WXYss zOtto^9<>B$)yb(Dv+^n!Uro$Q><-oHA$X{@> z1qBqhCbzOWant6MgtkpS`fdL%4||$_rHN4PAa~QTLO9T*j}UU=E^?Tsx{S%=eEbq8 zh^Q>{Qm)!8sO^VTPCIJIIsF}!Wo%%(NJ9)D#MK0AjafAV3uv51l-C zcmDF_T~zh}bPVYO(%Gm8;e*b)X0BFpr(TXRe-*PPDio+Ex%<3dpK!&B03R#%BKn`q zcVS^e@E>%#pjoPWY=y`!?iNK*TQ0H%kgFJKzG+}&!3g_qeG0K2HfnG?>E?{{zyGj+ z?uUcJeh5Fj5%TjnL_$5lf_GEo7ih7Zz|KsbG*7SBiVj|ihO)|g4R8xl8{bD=0PjAH zmB{(wPth$pV{x*7>N%(g;UwG^uU3tX63H35))LLrdW&A8mcfhG{q9o~rN!uhYS+8m zff)wV3&%WuqkXb7vu(1bz{E-Fwi`o_}W;)i6 zr2uxV4Wq=TXc}5E16up19s3{Jq7}FXgi9NR9BNgnvM?d@9!+=dPaLGV(+WI%m3BD7 z#wrM>lrVYqI(&6;=`fVJfZZLho3pMg#rt?ts~L;3Bl%%V9e3uep+NhaS-x>&OWuNk z1LY%5_zS4^^U!SWCHT)g&38kKiajSO9R%;?dtTNI3DB1ca}&fv z{G?e(bUnArb2JO}5>*;N9d^Ym?0rvML5>_L2FfFcXB)^OF3yuHXJRHXe{3*!@hEH`t8*~Nyp>;&`!rBc~JiYz6V!% zuw|2=zCy^#&#owmUHwf8wqF{0Uxo1y=3WvVatm};ri;9&5yrKvN!Gm}O=+xSa%zoL z+Uu8sX84Ug6+}q=fi;VvN>tfJ3yrYLd@*fgv&DWJG2a8$sxLVG)yD1NUG#s9K-f6Sw3MDmiSQY@>e*en5ZUc!V^mVw+2QNGE1r&2F)cJ z%S#~V_fpBo9jY%G?0IQvu=M$yF5H)#?Jm6}LFJQ@a9=QdmM3gU)wq=Vynl&wF(AKk zR&cyLcbBPEhYWprT-b8;JUD)_E}P1|lR%~^qU6JuQtyl7)t`k8oEW1As{_e)HC<`x z$JpIZ$#|^PR|!Jc8cvN8zi&E59C$nBxoAZJmJ$@AFiMwFTLez< zqiF11I(PJLP6p4DNpni(p}p2?fZPM=JzyHR%B&s`C@er6Ls{EW=2~PSfUp;&4hv}| zR>+12XfC!8&hYmiv)!Z7TtBsE2RD7VjFe@769Pn@DruZB(Vt3=I!kESmlDMo9 zJ3NM#^4lc%sP@OxPRf$+ye`10`oIQEtVWRcL={6|BM0u*0tcP6wiKa+jCEJXQx&)p zbO~mXLAbW?hlX;giDt3h@SM$GUnNTog2_M`SJF`IA2&l&_q0DCdt~nwNz>EhT zG@E6ql~dA^0_r;BqPZj`XBmRHi!`pq_SQC(ZYmZQ) zoKvohJ0fg(t9!5O()254T(zA}7lJz4UkE=jsx)j3O#GJi?vJmK>a{s$SP5KQ@-3(P zo&ndzRw<+2Jr(?nN5blKB!mORy3Q)4t)DvS3!6|2O=27QmBn^s_J8|##BkT{x05MG zQivG&o3P-o1t|VQUe0az($0n+CUL&|Yr&lKc3(=YOAK6umdQl!x~`Q>9) z8Wo+ImJ|a>zCfo3GV8IH8n}`Y9ez&ipsD^S`jP0a&w)@6H-lEDhm}f${drcyc zldG@Oe`MUDh4-dTSZ@Ij_3HYh@kF_F3dCtG-Ph+wQ=HtsL?9JA^FTU)nz^Xi+|A!> z@%bGeTI!|CJ=hgZyiLWPqC=8Y?#_jc*EN#>jX*t)y59YDpP2yM$rdM#mSJXxHo#Bg zB*IT1Z0L%v@AUV6y#@Uy-=X9DJXa*UNirgXL>r)OhOdkvVt@@MM>u0XD!9`5aUYP))?Xnmo0xCGcPD{We zZYNn0RfMdk$I#pKG86n=8mYL&(lnJx8r0wu?aRT&mH~APeXOkR;p`sN%=OUda~+)5 zL)SV|8pD0BAbPdFJ^KQjzf=!@`ec3WYY>GMBY);aOv922+5nydoFT0XtVY)lz$SD^ z&)DdXnQ%dK+B_l+Et8V%8>+Ru>|~?NSNdNtH3!%vWfylP1vG$eqYq@^1S0PkV~A%f zft`Hd+dp6YajhJy{D0zrM&+JC7Y>39pi70t$za}!DZ5(45{tL^*>$B? zx@itx3WoN*OTWrg?p=r}C4HI@tRYXk(yltgLf#Oc1`jUQ zW1Q}Noah1ARYL!Q>eZxb;nXUOA-IV=;eZKdSZFBM-j9|c19|we^hZ;@p@SZPjx7OK zl$vEhc=F9*A&Z+AW0FBBqfg_ zfS^5k7uN9eJ2efG#WGfg9@NFl!khtHXTs|F4gl^ftfxx^A7vR3W%BJ89}fnG3T`LD z$kDLRV1{|&DTpr0uWfuw=Pj%|2=)CwupLb|1+_YZf}oj@K(m(?W8l_Ph4U zmWzoHLlyi1E}ebAUnm`M5->u#57hnU(Ram714z<+&Mp5qzLK{osUx2OyiJbh$xh>o z{_42$WgMtAl2+!ekXe>!0iiUNx(8v7kM)fSkcJF&5a>Eo{2SVIkatg4UY~C=vaS*9 zMq3PJ$(sRsu`fKvs{&A3$*(oE+8`AZMu`iD=u{$rp2mN8w8C1uWpuq4B$i+b*UAZb z%d+e82cK2Zq~i#W0yOh_M^(Z*AnR6VxnnTO0vjkX`l`hc9DK3$?l~;1qFAsBfpRrX$t5gBJ>k zoNbqYLocFuo(4J}^*x0ouqwnpl2q-htj0vpDN;+J_-Lu_&UHj`wYw zkYaRHP!C3`yBW~?TvW?e^Gf@%>QA_7hzZi@i=J?r1RIhR&;+grUVH+rw@Q+1F6XT5 zba|x6G3*coqoz<%)bn`D^7dsxgx*l4_x9NJ0h@qRzLg@BPT z3)I=zJw)T_;sa)GBUHz~>w_T_5(G+>wJ~V-uLW4>A*5Vp;m??H_l7qsv{dbYdb@gc zGRH^hbNcnlB)Q9W;&CzEKDGlgQOu5mR^oHb7Br>EVr!z<3}h|kI(mJZm?umt;z{PQ zbi9CesILaPB!RJu-baGFSx@D(4{&giw3A3Je)Z=fh+i8ZmF+b2JXRi|_C4GNN!aZ2 zbieN*n&)D-z)B|I?TZ&?`b!3ww$G?~4XefGO59HkV=6QO4}aJpc0CyCgGaIanA8i% zSFUF{W!#Lq!`nfG6q$HWkN%AI^a^g~?YzgXC8%L9&8F<$}tkxh~)lnS?UXQ{m!m?lQ!PNp@jJd=hxKiTj zA@4x8KQdD%i=XR(D8>s}`T zOa~OXF)~?vR{*(yBIB|?ncL}Ng->LNZ-g@UAGr3s_ND#Opal?7xR4~MrHP*xLW)^xN{=r0H;pk~zU;Fl~e! z_837+#t#b8J%!d1I~8T75Wd%Y;?eGb7Njp=&VWTu2J$`6e!))duIO;C+Bd|K*8QO! zj*!0n4oZE(VwlG7j1D)@4RZmwT>Hjb~PZMy_LJy4(g3%9JyxQ5q_|A&ikv!q~a`xYc3~t@c*{ zNj;l%R+x zf}Q`4vXMVJPDxsLcS@ntZ4~Pqa#RAMI4=!%jvAm+tBSnAa{(ljnn+JsKv5^L|D$@{ zIzlA-Caui;NK{@}lFl-NETS@?BLi|rF(v595PTfT=_?7W#7@l1+u&IO!j86hZN!N& z%?ej=oys!=SzbtA80>?FPrF%BBwbo{+EQ;QMXiyal&4S2X zEgWHI*L=J0A*u1Pjrf_{wYv?96QhSv5UH$U-<#`@-B95Z@#@;+-`0I1C(|*E?gi{1 zIVzb6bUltjy$#jE4e{fB26+eA?p^>alQ6tDq;117oUhGSx>K{61d73EkqIn?KExbj3Zo?> zkG>Ia0#dV{;ZO;;o&(*m+?wo^Nad4lWq@0Dt=uk0hqp#OQdDBvOeIs~8Y=>#xo^Z|u8`t8UQxC9WI z^<$R0Pa0P)xFe;tZHhmV00n^1_2@EM6BZzwfh3WJxeQnWgpnM@O8SZ}5RtmND1m|k`W5Z#3ff~3d6+Yhs@@C`$`iN7ycDqkDe_@_nw1pmv=c1`WDovfJeF?CEZH{i zBr0p^_3_EpB$rC(6JoX=I_mbU+2zQRfs+iGv(?|yIQU~XS93R$){VgT6WExckrUD5 z^eN9V@X0dBB83}{78s#;MA;-Cpxqhv|HKhk4JH*5*qb{D?FwuD{21$bU6t8S<`E#h zoC(OR->htbFqZtwL7#;)^N{<8vtvMU)9?8M`bc&lf$=T1e}X{EvTq|Lx4 zX)@$hD0^^dbREYTqjC?B*K~#hv@ra6XPnh;Tp!r(f|}|o!MBq|XE>jq6aYjm zXRGNw@%8sjfM3!pnpJmC(~|K<3>kX-$;hj^Tmt3=tM#uvbG!DX>dU~ev$6Z5OvG_n zuGN#eZ;zX+2U5z7nc;Oqh6}ew&}yd8kLEfUW?tYmBPB)Pmb#F5z+$orE)%nkk^pIp zk1&c~<@lW!S}u26N@J7+b0^EK%I`+Xu+{&KHtlr$?h*di1at8Kk;#6W*nW~lZePIb z6Z>m^;1&XV4+pxgUXBDdlhNFR{D}$12kiZ%DuDkr09ZHzS}+sj_5s;{{yNYfE-6~S z*lpzVJs(ad@c6qsH-~iogmet!Dx?WdB4x~w7tsvOS`AjezPt!od##(s!eO*4PU}eR z@rkBL?l7r^ixOBRWJ?|Ra+mC?SBU&i(zqq3{oN|wkj}=!et)88EJY|H72l%-jh;Eiq1F8EhzI;B#2|0yOBvg0f1-jdMcumh^7qG8R=s)UlCy6 zB8bOr)z(bWYygVh_6I;(bvpwQtgEebNO>L_%*r>T6!&`ajYkOPpL=5OYa;qbYG{jbd7Zj;W$eH76qB(=!AE28l2ot$cK`~qpx)_u1+(qXW;!&iNFsKWk zFV6U`3mV^5AjB#QvxM};>-$)afxL`348$fe0+zL(h$Z>^K37MYo7+q~{ImQuE}LV^ zuQDB|9YC-R7AapSrBE{&WQhK8VPLg!o&yVKkL*`xY#R%UTCf%zrG%kyMC;vGDfys! z_obQZ@K^4F;?D)nQGP*su`%v)GUwa4kirjSb=e>89Pe^dKYO1*%4)D3tLQ4VftgY-Y$PO~egD4XbF8G<$o*IHl7Es}e z!XIncm9`QYATJ3*6hXsNVK{_lHbRX=Fjd^9+=lLU%U6je?h8m3b!frtg7V!uH5Wi7 zW*0NK!h8p!F}JCSWg@7y8Zc*|s*_$1VekJ_7>Vc(CxFk*kntoMl>t*y=M?l7(f85Z z3T~>;|NJClm|NQVEQu?x+s*tAw`c1qKv07-3vLK3Q1QJ^MXYJ9C3runWMYJs2+Pqa zKL1wSEQCpuleN}fZD})va8eLlYBmKn4k%Qj)YyI8$nqP1D_74_q}Z%UNV&}N5EJSH z7&-7SIxuaEM%V)LVo1jlE)|i)bPQe6Uuj>hw2ms*H|L85zW?Eh+4($k0+{l^G|wR^ zbKM$e4uEtujf5TU!x}jA8yIXYTOzCY54T$HQc&dJS!I!A5bRXvnXYIrW@D?$EOon# zosH|drD}m|4U3-5Hc>{HxeZhCjnJHvzgExJ7W{n`d_&3}Cu8X8<%5Sz?@G`$n z(SGL@t^Wtju}WwlkWrTXeTb&>AhfAEYXKNzl*1VmVd^Fa_3)MqZU;=hmS{OZ-^$m0 zTldSu?C0KB0D%XZq^W;=7 zIY5V?U0O9AL9FNA+{@mIeaxIeFU26Q;k;1-X~z1%h`>225_S<8&+b)OWAykA1=CiA zbw(l-fI-FcD&f{nd4>eW3o+#Zx>4u&%5I1gU`;}Nt^B}tu%^J(H?rlfWr&ZT?Q!lz z+|u(JDEHIjdtA(7v060{#om`>Xl%B(VPyO&WWV%bg}JL+QgB_$b_Gz!G+zhQ`3l#3 zx=+E-wyzOu3i6NBA4f?*sQ;)2oGxLeVF~AeBYpWJB2y1D14oXopNfBF^t_K=Z>~`H zF+ZGj!BaqJfe7a)rCP-kK@T2D{;rNh>JpcL(2lH)drPTjj%RUsROpLyLT{Ue876x5 zcX+~d>ayzKT{e{>z=H3r^pLi?KA`$+%i5DhLB|5#K|Sp5sKfE@KNR|w;`p+F^LoJd zdKgK=hENp1enZ|cnvVK`)YLc$GIO%ON5{ zUdHz)cNtO9P?-GNyE-=n=b>{RiZ*-tlLm5*ly+puY^AtEWYQwF30R;LaskV=fHR`! zu)Ar>l8@=lNw)j5YgLj;pJ7J;)4x^A@(d|@a{FAmx2m#we9G26)dnu=B*nk93`xMy z)m(}ISTK#hdPkpmV2Dan*CoynGmdV`>Sz9zBa=fK-ldZj06$4zR%?LuFH>Osi$8(% z9d~zwj2qzeJ%~xH+GhK@eBbJkA-<&qhBII!&$_~9l#=u4DXHn2OBE=fghUQL6vcO2 z1kmW@J=VbjvImRHL_AGQpo2FUW7hFobF*rlRnh|$XAo}@pgsILO;9;lc%Llho2Pq^ zA&tQy88k}ahjf9&lyD4a>0Mm@rXqyO^ue1QVT6>srYCSA%oLcVyZf}>O(_*VVl!eA zCduDd%9fKVRDu?en%d=-XaaU?N3dPWIdd#004krLHU~#}Ge(Kh`D&o?X zNi}te>??H{kB9(AkgL(Fm5Uq;pX)Po=F_h}P_9|yk*NM*I3?U^A0zg)J}nh69`IbL zwQfIep`qzgYn16ptK~nDnTawR5%C3#nOeP#3LHsHAr0<`@82m)q+W$EZr(zt4i=Y0 z3ivdgOZZEm5o9~U+v{&}l*R}>P-3_sUaWz#R%bQ-oa9Z5EJ5&P`IYs89u1w12dPrm zvx$|w!3sFz>*Mm1MgIxs3NbSh`z$lj9oY~cQb7jwE*n+nCf_l?S>E zLxYM&q_q4?u7##*3$Uff*Oz4-woCVnfLyPU6&MsXAa*l7UmqgBNTUNl;PQQhxt0S> z9Srb^+o~#1mh#wCDF$U)t14vkW%sqKfqOs}$eU4UMB-8waJudTYS1Q6{oR@zcHW(x zL8>`OI@p!Q7ZHpf0%fm0+$Rbck6tIxiIuIxHYIVvHvMd^*4Qh0v4tMV2ze#|R7C%i zct{wlbRbnIXDWltTZhGc)6v(O<$6ota-=u}&0aE6LN6Mj$Y_N)$VHjvPxJJ6HGmG* z3?xuyujei+8DXqeZQiky+ymwgQBI0dG?qDDb1D4^9LCr^9i}8JL6^!iaeEc@^lbKzwQwL%M2L&UcJXsmQGbe-o7js7bc zyP6FKBoivbrXRnH!3Y%YbcJU5eAbB082X)zjADz+?h_T7n+v@GH?6cf&DSu5?(#F) zk-NcCSB~$i9ze47A#l0jO}Q6f(6)DbP~I_CV5Tzmt` zkM00YTE@srLowRe;G{n5g7u5fHf*KbdS1|Q-#us{YNdO`bHu2s{SP-Gr*0R zPMWjzq7H}L_i{f3x-9~#$?7l3hb&~?e>|r7D8B9`j71;MdhTjDsK6Pse^?p`@W8)x zFJa1@iKg-PDC3fFBHlHGK2-5xgHF=37_J-Te=G{FI*2v=O)%(2coJDfx~qRwlo=t| z4Okl9qu@6Vp|{8d+!%fv5->FD08U64uj6uOO@J^-NwZ2MDGBc*Xuc)9dk`kq zi>wY{>*^B@JjFmc2#qDxg`ttb0|n35Gbi&*+!MuPIV^sCnQ#X_9{w{xomI|0GopQ7 z>=dKOTO2c@m8N?6oy-qPiv={x~+Q7oj^56Y17%#a-BYqZe7EsQ67@=Uds;8K}8&4)VqA3wQEE{fbr zs<4uy}!oW2=R6pZ7r4^|Hc2JN2@Q)3B_-#D=p(r?@r0g;DQJn6g72rB5pz0hO$gz}m z$7eJU8dND}$d#IO-B31^xD;vd#^If4DzhGE<<+$m(oTkEf*2knP2B*l4(fmuX^FuV ziIm#LGM}8$79w5Vfu@5n-uxfm$fXqBxu?KLje_1n523QKVL|=z@1d2p#sNTDOgsfX zAEYUJ&#kiixXNM4M&z?5e_~wcsD}1G?lJTQb$qpkft-(;JhLxeABdSoWZwhoN1}H# zl@y@zbZo#p&9QEht0CeC5~r7z_~AwHqW7R{@XX>P*&r?BPdqutu?k5B}?JZY$WDwr~)TW z``+}NSHd2sSAVys#;1mz39kVJx2)k>AxksZsXx*4x3B_pD9@;Ug%F5c0Bmi}dbx)c z;Lm#G+q6KaVJ;MXeXR$0m}DLtON7z7f8+RInV-x_(Uy@1~XeL*q0*m(j- zH}TH=u3}J35dh(eI}9qoWKuf?^miAX*hZ5!$?V7hDRel>P0(#8u?WEi)nhH1ut#WBltz z`fN8~f~Yjg*Q727bw)FN3QsO97d#d*Pm|=Ac||O{O)`6X1msI z;qQ>J%TeFSd(mSHskPzsc)}e?%>nIQ?yawK^C;Id_`w|>-{2nySXfI#Uv5Wm5&3PX z!j{GUaSYZ0!^$c!&X=WeC#19`H^)9x!%oB8Lv0RNqzQuQBy~p zJN>}%g=1-a76WEhnpiWr0fmzcSl6j*Qx=isIph3_L}A%SD74oJvB-^&Lqmh$1TtFV z2Jpr|wna*z#XYpt{M5J%^J3@gv^`1kZ>n0HK0ekcT8rP0Rr`4XA$thz5IOASI&Q#= zm|qDA(Vn1^ki`DLepiO&=n{r%4z6#FzkflQN<@Mb&W_;+0~UkQ#N{5zm-Qp6&{2Bb zPo3FYTm?rSvG>s|g)@;h{NuB|6ug^P3}9}FRFpPAAH2PCUvyJ>?pzh?O2Qg~a*pGG zIYaz_)whSWHcwG4pJ4tEenB5k?jh_4=Dsxn`OX)Fw5Z-x$VaXK6^4k8wGH;w0mAPBYBc`N-awUCty3u;`716Vxb>Hg>&Vwk;n|J!`>|3>&$JL`XU)Bk6?iEKkI=s*4zz<SLu_{e2#BI((w&f$J$)r`DD-_Fzj0LV4eU4Cjt1e zXWK{1tu;&cS{{tk=}FU|nqp>+R(dRX0qG0b(r*d*0KJG8j42w=sxb%sRLyA*CowLZ z144Z%7#n%51kI;;!e^Iq26_RTsVLs8ykg8>vp2|*3os#U)OqvCrdxYoc?~&is_%Ui zmk8#s6$~$HDgM*d+CZPqGn@9E*Hbu?oao@r4 zQ+~yv1K3wn?)@SsI;B9UBMvV@ui@#Q!g{&iWzBZhQNWN(u;wk^<5w-O|!6 zg3=`-(jd(cgLHT2DBa-DFo1wk1B|qEGt>}649$Dz4u;w?X|A!v&8oS z)$xyrii_1?@5QaU%*O3`#Zsierw=GVqELf+bbBuBZF)Fn7=?Q2z=QLM7?3o{&2Lo{ z?l^dw_z9B-yma{5(~{Jqtf9RK%PnmMWFJKSfA9DaXUhsq)4)q}5YX$|-ds#|6tNO~ zU+u)DH$HN1owO}4TCjgW3j;p%(48{z@`On-x`uJzkj)9$E8;+nX)sAs%I1;8!RuO} z1TjVJv~^Z;OKN8UJT(1HawV^8fZi_+c-IH;fh4~vf0HeYpX|^&S!)g-@N_DaI4J4l0C9K_7+4^SVi;?e;d zi|Z=ftvMSD2x8&);K1ROMppLXX6c3~JbCl*g)mUF%JhB~U&Ag{t-kM*L_MGqLxLZ* zon~{iXBS)#`|zkU`_a3RcXKiUq>$t*aF z+^yCwGPHxTmbVF2MoLFYG&VeGsK<$e^JeQF>9)%x#^(hHSLB?u!Ibz>=R!uB)f9tQOHF9WIc?ad`LGUmccA=an z<@IW_xN79O^6u9Z<$qHlS_foSy}N*FE)@%MC*A}|ekI@xrX6h44vt3O|E$R9|Gy$O zI{ItDYyM~5^oHXPOm%(i44?Wlug5jCcigSWmz@8sNH4uV%)Hbj)xN5pt@}>L?KVC5 z`jOi0zaBF)g*TeI4XEEPa(AK^&X*F4{QbQyePc}BTQ54++Vtwnj}iwcxJ#XK_jg^s zQ-i+J9IgNs%a2ZkBY*JOvOnzP11ETT&msb^2al&^lX1r;F(*8BX|wC^*QYlC5QPv? z-$BU{0%}YBm|COUmA4t}>QXhH&>;WKezrdMI#RIxF?r!g#%XN5VpaubVFNp7Aa-u# zfxe1((CN}~gYSoFur60mdJ;PCHlIs^`se|(6`*x-&2qS@-KF$p!n8tru7HX_)^v*o ze$*%(=|}pxN^_uO6nCxmP@3!WX+=a;fzME_Sy!G!a#07b0?oi<@(G@}Pi;SUJl9j> zns@(^;nFs2FgJ~|<9I|`LJD{EL(X>ws7f21E3GJ`C|A!iYlE^+zR&jz-J{96 zIYslW1po!`%WZ44Fay44!`G3f;X2(g_1}J~Ee{}kn9T%G4^aEZZl*NMyj%_UsL%PH zpt7b`Oo2~0JFz&21nRNrO@mY&wo38?JPSVzZ)^>_7^CW@JAhL6^Q*&YzTRhKjv@s5 zL9~y_RrCRAI?=;XK}v<`20Od?GJs{H&@MIQ5F>0bEpAf|l)G0KfRn(P3RIT{Yj#n` zpJM(Z#DI(HPHkyH-wos|)@iaixw#RoQ~wt@vdHVn_dr_$A+ML#ty*fnB?!A0rszWb z14O=$`+xxmRaZ@?_qh4r4{bk7JD1SoANuRRn5D#gIQX~?Y$*w$Ga;)K>)qx%kVX2& z(v)8F3c+Mu!xXWpaOpCTnP}2rfQxO4*?39T+xCwZ1gP3}2v5^rqX8dOhz$X?-bnXQ zdr~f7DlVG7c`5z@4OHATu7MP)xae^Cyv5fA@TY~Otv$;X?;RT^)(p4z1=_Oj{DJCf z-@@cMHJXn5s+Q zZxT#E_F#rECKJOe1Zo?DE~+dUG+b!P#B*p2r*tT*!~C#wO^boR zawpnZ<~#XcnBO2;;$EIhb2*L&iqQ5j;{?$ zbmamuo{lLEX^05V$Q`}Isuv$6@|p8ZdJmx|4-U2CEbDhlSMxX% zN0UAMxwa7%b`u=_O&$g#r_Z)3t!Ta}LtYHTx|W}kmJ*C@lj$LoX$h7<8(VA?s4Oxo zT@$kPr`N+xnH;M?=4qPLeQZ&?V5jk>WSL^dh}#5o5#9OPk5cN)-N#lna*Zl26yTEx z3cc~H$vx5L+8#2jFMQyn&9E;4nmv4R)Zf}A8DQjUz1$VLBTvm8HoEMuC{Mnxe^P7YX7Q{IA)8CD{nA#8_G#PFwmOr`qSjPzX<3_oI0-Wyj9)T_BF}W9g$sc zEw}+&nMaoYl?$1kZ__rhDfu#ZPJoPlCmLxY##NH7{zpqtMsD)X(Yst-;SIQ2R#8BL zu~`^FE5q{n{`chOJ8z8|PummIETTO&l1CZ9H9OB)^Ygw&>^WVOVhpuq6`)Q&!gSou z!+=yv_?eBB%~t^1lL=^^S~6%>C3al9ST=WOUOBghxdUzas-zY`Q1zE(dw2N$?NV1Q zA@%0QUApDM>Rc;71?W=7KZyoy@?`$&a<4FXdoR?t*(`Y&5MQNl%{99wdCgN)Nq+o= zmu01&i;%R-<$|LQ%bN;Q4F|9rAx%gy;6y>4iXyWu(jFc>z~T`lQ@5Tm0a~G1<{51z zaO=Mb$eQ{|L-+v)5vP}V7U0jAI^e(qGi(?EnxtLV)!J~D7YEmZHEYk+h(F4NI33~5 zUIoU(d;lTAtQ8&X>t6>kfLC_(xVK+ZOD+evQxKVe5!29fqw}AlX26+DNMSgMO{H~SJk=Y&CuQ*n&$3t@qNCWJ1kr~(%)shQ$ zxC_9)FpFyP2byVVQ~+{L@)+RoP1hJ}ram32Z8~Ch!imW~pnCzoBmK3#=MDdOw0+lv zhf|1aDZZnKmj>kIpv$mc9AqHWUNV3p?wg!lb?;-Zae*(ZAW^3MZXs*s784CAb046) zMl&kzIM-A&=qxQ0_7jWjWODYI`$G_mV?Wu-^Xhk}rTKxw$=?TW4&(d|z0`$sN>6`1X*)I{K>R3JssdTv6Lqm}8p#!IvvP9}uf^($_eHh9{&| zPAa3aG)Lt!zNsJ5b@s)Yak7(x>#&KE=%jV5q*0 zw+V*nFq>^S(o#3{n6f&8EE2zcku^6&bPu4ZUK(A-CtKVU}Zz@MDo^;szF^iy2K=j`qA zng1=5kstG>;}g(Iu5mC}h!}rYg^;JqTYN1^hGJ{oDey}zl^$DJ)lXs!ZOP%(rI@#94(EY_~WD62a^fMs^)!_>MqH3Vxq5ig3?^JZZ zKI!UX06%I)DY@VIdegk4)x*Jy7phffhPqYFLBr3U!7W*-R)skIgAS_-r4B3AbC<7} z;}p1bcqYmgILE3n=jXH0_;-q7VgEmDc}}6t7@S!Z3%2pGWCeQwjrkd9yVuU{(XWRe z5?3wv$l3|D_X0$=dXMH02VkUub+C4cfPK$Q>z3FaK*85t6T#Q^w9N4wB}{M zq+Cyou~AL~<+WRMq1_e6KEqkZGY+=jZ>AtY-WhcGvPw-%S##W4bJV{#ahtoRlrpTx zII9NP=J70c41!18D-oI z0*gi-EArUixP#Su{&o1L-fnAT3;5A$WinaM(i9*y+kBC+IKgTsk}kPh#zJ4rQmQE829c(sbAJWAu{bk`YumP=&3VwNFAcYWVKI$D^(GJ}7s zCvI#b+k}5-0-;K65qlbf9`?bK{#fH`HCHU{Ih4*0hcusNw(>|V8-9v?Wyc){##eTd~;PaB^_HR|~fIC?UbUdYPJ*mF4jfGgeay}XZ|AkqAb$}E#Q(^m|XROrD zowJOx0sPtOzM$CVK18-V<`Eolb5ifUv3-4Y1i2LiBE09TzQ?&F)8CT1{!vdI(Xv=! z=%=J~A=?)`rsV9LFwPwL_9=dFe^At%6v_8vj{rN*neWw?l?b+(00U0|vmu|K?mD-W zB#yY1CrnUEUmjit8(hQ&pat_?X-aBQ@aQi$KOe}_P;;tm;-d{T2# z%;3+6ERygjh~J%3ASc<)u9=^5fPj3JikEUNjS79|0I-TXij&C%@@dJdJtsg`IK?&u zP$3V9MP|8^top6+C=&@4!|SYHH_4EqiB_=8?AL=8bhhzDmiu2bBz+f*P8uwPOUJ&7 zjIi2XWVUb-J;P3Ru)jRXBDe*VJkzhdxK$LJLlxc||Ed+cI_S>&64BGy)_knxk<-^* zEkapmAv=iAlkdzt@qf9ox3u%(b)nK~Y^z_uOnXFl(d53eXHMCE4Q!q5>}holRvw+I z0BaJvtD`JF1NQ#wXcmjPUy6c{L|zSmamGmdStc5Tze@;+0xZ%rw9sTiqsH)ld+#rVqJ{eQtx%wBQ&2dTXEG&MiQVw(_m`9_8ic(VrrhlUM4b`(vl4 zLn$g3yjM+KL=6|_bHbL`rW_SDfwPvF*rmzWWDdFx14n?Xv=l@%J0Y8TWe20;D`(anv0*&7Cvc`ycTK8pC@Fgz zE&R3C@Hi>yV#D}BC-(l-osGlMbaUB9u=f|Ga3J@lY@{LTN-skLQ`;3*A z6Wi9uA{)};Q;#hDr@`3BB7+6~S%fhp&H(hv;1rKW%X z#1R_S$=mqoh4W<+)VKG8OvvCbb{<=^pFy@0rB3)+$J#6DWh_T3dw9U&*Y`c~m{KWrSk|`n#KN2;w@)ae8w`WV((B zQgQ@vgh=F{7ciLYQ9z$zXoT@}y+ke6Vm1qs76VwKrAfLy35g#$evFamto=*^pXb56 zmRkEA^E!xk&C`kye6VvPk$P9{Zj}D8-Aio5+OYMUUu83m3tdg)wen1aRE}y{FN_=E zO4tL~2y9=)@31~>w!(5=<3Mxd$nA|$fgrGe^BB?r7|)~SOm%DRJ<5ZhiL4>l^$J_Z zBX0+x{Ge1Ep$FFL)J@3Ey|f*^GaMuTw;bMPYuK-n(#prl9N%_zXrjT5j`ROARd-%t zU>_o$4^UwKd^mwf9wz95QN!Qfzh9yPI3eXMI59cJ40};;9=Jct{dtzsTE0rsG*aT` z&KYS{g~VxArtipQLj`d78Bv^r0(_Vkd+?*?t|>}I$_m=-&$)eaTRRFg!F*jj7daze zk)qnwyw7)iNL*ulC>nrxOW`!(slR~k{>kzneb}1wNb1w$An!%U;PDPNcnb-pQq0jX zIE9Bs5m)U|h}OxSO?Ybi!9~X}Ztk`42z7tN2N@P zd2OIQ(v8X{YY=1u5PZufLr!cdQn-%RNYUkR4j51WlrMUR2?suZNp4yvGxy8H*eCNM z4Z6>IW|H;$$3_w|L^=Hef~hpS?dqMFZ?Eag(VSQFCVg?h!L(3$^VPGCD?`xBnB}&$ z?w4O;n(y)}l;jM1o#q)f#RH{1leH4ma%Jx;|R~x-d1S7B*qaTzymyf*14QWF&stN@s!j z)@H1Rj^SDT)>Be3WQ&QqGa%zAm#rwil?yX&hY`ff6Dz^0O^k#?(#!LFRiCPb|Ac2m zHIFgmg(f|pWAxVsE`UW)YJ+T!`0U9gMJ0frYEwgY|LPU|RtC?{2F;)w1$NP1%s#sg zupanFx?s6iYmNdXqep>$r0{(IwlDf9X)taozSV1flLyVE%ctvt11x7Bf`UGG4Aq8!yWI^$rDzLc0HHIGfE4d za815#-Gx$0i+9Ns(Jg7Gg--1U;n(4#bK;{Ra`7k$iWd5sUn%p9*KRAPN1z1syM6DO zdCwU(41(TL%&@9_%>m=c^-{Uh6>Ak7-P(LAxuEtU>6o69*izx^%hj@2-2D$TZpWer zUb$10a1S!ay5J zdruq07AttPn8R(n0H!!vjxK$5bKJ2a;iXkHC($Tvg{q>s9u(iu6Ix6w<;b&{z=)CH z;S3iO5Ij_Die<8UTx7r-KpRRVCi*TY)HJD{L{#K#U6zv7`n6yLcX~E)9QISFB>DTF z%k8i0#yF)WIf!32^Q!aWjWG{b@C0m2NQi6(3lY$T3v{i@Aj_r?za^2;5o3vJ#9ku1 zm`Z#zpCQ!_K0>x9g;~^jDd|G-S$Vsgf_ikCq$yu#Q4`LD_THCy?KS9dmaU>>N z4hwiyI&C9^%OLSc+)4(UW)CUl)ez7!N!tJkP|j1KoZN9E$NSY~5x{G1`<&M~Y?lqe zdhnbyG{Atj)IJWI_D?*+Wj=zBGME^_GKB52>Wdcy~C<}I0Gmh{CpRbK|lSmjM0 z7SKAMXV<78vM!nCfhmD*>)joSyzDfg4EE3a9ung|2-b+jCd0gYu+OWZkNx1OdHRQ~ zq*C8FL*8#sL-B+ESvDWYQG;9(g15}4HS_%(exociSNhl^!99dSP($?}J zHV zuT7O;lc{QS9W1yjO0EtUzlkz@KJYLOH?ZO0i?*Ly8?G5eu^FN{DX3rDDAt%#DyZMU z)5|u+*PvcKBtm)m%T{bvnrR`oYO}EydwHAA`o)R;T~HoRiFJRzKqT5kw5^mIKtQJc zrbX^uKFS6i;#3Fm(rk4-XV$zVx0IzBH2AaSb4JTW6N|)3DeGG&9YsjVsifi1o{eHb++Y!w-+gZ5xVF#JX_hypY`5vuL zrAb`EHZY)Oo*DcRv>XlOkjHcJM&G#YVxj=j($!JbDg~)a2i|`04d;({&NYcaPnC+UU@saVPIapw#Kk^b z0LC8B525*EHt#?)f)Lz%GQLW*`!`EAb$l+J*c8FYGny)M z)n_Au@x;csIZ!&TIIzS`!|iTTuAFf$OKb&&m)l#8w-J|V4YN8s_?`&f2(sia2}@Ik z44%|ahbgl?5lk9$8zOmmU5p~5WpO{eO^-^wQR`MZ)NW%6!_84N6;i;dCUL{__?dXbG za5Z5f?yOrAm-qCH`fIUI9X!9pNT3Wl=-3dy>gUS} zzLPstvsZ6o7`qrLl`iLwjf_Fd0$+w`+k&s(h#thTL66~;aJ*S@lfyRt z0%GK{D$zSyX-`6g9LLCPaMAx8rQ&FNN1c4Vgo0v*?yWaIhl7|^r zuS%JOQZF8kLQlqj0tg_HSVksodXSoHjev>H|4hWGNXN2Bf+0LFaiWW+{PePR8|it^ zT`B$(INomw==B@v47;BrPHsmptfH@5ujr=`uFg--D@J>d7MT=~*+zMg6v3WdOvsXf z+roo(n=ZzVn-^kA*`C~p^#@X`J#=LSolZw7v_Xi0Ae~E-8-ZwBswUyp(parIn7rWy z(B3awyEGhsYGX6?0}Y7(Bh8Uk9;W0f8^2ga-Z*PN=pveYt2|xQRW_l6jSPwCZX%CyC56iS3O@P5Ykn?u7lNZFPt~}znV|Hl`gvS`1g4`U~DP$(kL5H zx&#tkw&?L~@O)ph>wE);QM4CwtX$@F{V0p)_+a%@7N$=6`|84P9keCazmv^PNyi4eekxrEv!b5ACUvt52Ka`ySO^l+t&Aq+xy$mO1>f%pe zesv1}CjDZYAZk=>-?)#y;=~{HROIfR*Sk>AIOZRh5Y{a9QKp0YI8bEzSd_vKp?kN} z)^VUS>>7^HUujKN%7Vbj&jrHz#rOovh*=@oLcM05yZ?klVzJ~7@^bS;#b`pX$!GOu zY{3YedopWUzyQC($QZZI|3HpW47GUq5u4fMnRH!tnRK)}ulM*PTh8X$dX*oT1NBcK zhb1v@$CL{JYQ1Bhwj-tK)9l+pctd$UhWgsH0r9>tZnN>^y1f-5Z1yLC`I8dfGFm&a zro{f=(=YMhbBdY2Z;+G`-4SjR2vL-=2u8P&UxJ!-ueYtm`Vd|UcQlUT3qKhQ=Ny}R zC69O6zvo`0w9+unyEOHLb&F?aAsiY9_EcZlHtI2*b6!9VU!jpvM}aJC#w0tEzjAhb z{7(>EV(m(6Is0b!dBi+V9fD>{W{s|W#J;*?MA z@wuLsbnmiu&6a)O{!^_N0hq+ajnc&1+FYe+@4R}nE*H9Rr@Qb3VV%@^8j#fi|Cr$p zQ>91HGjWI^=N?~I6!2}7p#Q-iWTz}L4p=N+;r{W6Yrazz(Iep7Q zbklZjkvHO_OdS*#8g*$J1x}NGv`%o`Ot)GPtF_SnP0eaD-7Lk|EUKle@ExR{h4;b8 zgn3APXcT|?FX4boNw`Ds2vhZ7!C}y zzMl|wO&u<$4#1RmJr3;XT>(^T>xX5lG;R}hh?L(hyzb85M0eat^ zJoe)URCS2P&u?UQfy0rKY$(G3uWqc5oHViZ;c5CG@!{ciAB`O9Q}9{YcRl8$M|-_{ z(mQg6?BZHZ%v6|md@L&H5$=CI@06K$p0Pa)DA6>R#f}9x2y^=C_QUHI-`HI%+IN!_ zEZphxQ^suSnJnu^1xQ*vqFwj!Bp)}siXIatuaOz_Prd;qUYQR;cW{>tK-Jhd8}NFd zCe=CJxf50Mb{?=;Zz=0ld0Qhy_R^K zo7yPV4A?CRLBAyZw^;|?Ct`0q+)0xEcF#F2IdnPd{aZH!OrnKw&$eys-q;pS5~&%? z5TL@d8&f%tngQr-765ikxV6=Ezprec7yZfb9A7Nu)UQi}6L!$Wdhm+8ZHRRdM6a#+ zaoh@Mu++?s0}fFdH|s7>dEQdHyGdu=ckq_a04)m8WvHBRtw*CnM}*S>G$smIt{G9F z&)q1wwq5b^97=Bak~?R_&(Y6*q42;(w}IOQY3291zOl@>BNvrd2FxbncgA`^bee>D zv_EM*8`wbVU^wWcc?p`a8qAyvNRw@aOHUD#5!PjXc)qxocRc|J4q7#`k{e#7o;VV) zVypA^J9GoE_J+_?EJaWrUDy4?i0g{P+tRdJPRhB5vqIp%xspCJ9&}f_#)r2*Jn0TR zo=ng~-0m}kqy}gHF|rQ$=l-ZTq{5U`rG`3-N>n|0f+!MF#Xbiz{;=1V27M`s#mZ@&K#)((bL3Soki?@|4; zK>rf%gHI098xk40-R0gYTjGyB;?)4xhf?(HU3ofhirlerbbPNLoRf(@8Fei@rr~nh z@|sKHMhEab*!eOj6z$okq0M?NwckE?mXSucpE)h%W>%U8sa5U!(B3lH7}lqr=+VZX zw{hZrnRwhZlhfM6z1^f_*gkGvSE1q`4^n~4f%w^NEc^Rypv@av5k~J72gU*tV&hFn z_^!fi`!_a!SBQL|nB@MLaW{%?UPP|S10Q*HkD?WCdBeZ8Z+lG!fB3I85!JetOJ(B_ ziB?Y&r)fRasy0)v2A31t>%nG~q@8Qt8>h-0G*SnjLrfPut3ZDzBe9^UiV;$Gm7&~O z{yoxRYh0NS^dnS)JNnmZ*k0?&Hb(YR(HvX9tCDx#pf>em-l3Xs z?2iT|WtK2S>aKsBd7=#Fc3Of#-!#Ji;ZS4(W~|kjKTgFT%RO7Obzn0eFSDsA_;(3MNhsPnD$Yl*kLiC$}IZ-9=jz9kM+U#ZR!P}ytME^>BV~+Yd z#IqhX|c95-LNVr4kQy8}%G8L*2Y}fNFWAZa}AXzwUVq1FV!0JxV?lC2=i{2Ae zbO&&|ZWxc^%DWkK^O6n;&bS}JbqkGil1IV>Wh4%|+c}E{tChKCc2rn)%kqR#vNM)U z7f%*-qvYAgqaOZxAx=Iqpt-OkDyBh6)NeMGwWhaYNNo1L0nxqqVSJY+uQ)}62KVW5 zF^#3Z8^F_K4qdicA0=q_9^ushJsZ7ozg6c5lVBp=XysJrEBjm#@9_q9YHRcz1tpJT zOiykrnqaW8VJQ_}89z@J;sgd`DV$9kx@sy@U7YNsQK|w25W!djOlB`!fOCL-lHRFuT@zF+78PM;QZE1f@oCzTi4d5;Qm z^N-dor4!Ji(_;Y(95a7E(XY0r8Z8Fq&DIJpn`FJvQ#L6wIl91FmRrlL(BQIJ|AUYx zu7(uOE9F*L2HpRQ_Ziihl;EG?oYyv^%QRz2dLCWRF#SBav4;SB^45T=Iy^SorJz!@ zF(f;s(Bjc@G1inscOFSjQff7N5*^Hg7?li8mg(in52A=hSH;A)@`lO@f9jTM_@}NE zU7>o5h zuqyOSV)15|~ek>AX52NYlr-kE+-85)kVL*rMzDyZckBT+wuI*Uq1ay-C(l z-OPy^C-vit`_=b`M$ER{&qF%WGY#hEg)8v;@AK=)#>vxFJIlw590Y6(gdWP%zsF*d zYwd5jX*AIjdRkWl0$7q4{MWI!$4bHY6^jguHOebOF0q6;-L@z6^Py2*;Gc5jCy&lo z>rX#3{|$e=g?Rc4LG5%R5(i*+j%K@(p&T>s|tvG) zw8^zd&U2s2&MK3F8z$$-v~h$p>Z>i+1mWbq&@)eP=IhKAB`qOHuX;I=!ZfM7tW&al`ej{9I>_ygwC@Q2oHG zUS#jigSxn6+E=YRxxGF;%N3+FlI(U}0JQLn+s(JHIhy+Y0cAcqh`FQw=6+j^gvs8p;1vx?nv-oX@v`J^D!XuUTW6%+MM_BPyJ~y`Q$ip z6yW5WY9;@DHDprteho(+@#+@B35eph zitLV7q|W;W!mW3kF0+B24n@WcUWNaS1=LMy4#hg$EmE=~Le zP^bcfSaF^ms4LBCi%xccr0hQdA+hzZdS{Q8vanO9CVWf8%asLFH=E=Zw0w?AP$O>*Vhtm%XB3gI~=9*^--(7)OepB-rlP?5Azp zqE`Bb7z-5%J9C4R_DN#D&u#PgT2GB3AiI#GNRwyP-aOK4_S!xL@e(e2;G>+Y#)m6q zo)=-3j2teC0_K%}mQ1a35H=w<%qBaBGHes$mq0BUmWSXesz`nD1+*<7hjRAFSg#R( zp9qChRZfO{K@U>D{M56K?Tq!#=U7`uzcq;iWYs31LkDm>*BYPxHP$azSIIR{F#hd* z>)dhOQm*=HJ#3y&n}PTR!BoZRvJ%1;X>g)3%|btek79{pPYbRe_|2RyMIZ>;oYxPK zjIc|&_jH&a)9*d5+;wL{?YHyeF3+(}LfVKVn+@}BR5*bNQjb}Niyfb=*BhW~)Ze2e zbze-rG%D}YSTM4H>h6O`#NH?`A_q4)p;1yQq7{j(_(cfSG~ry>dyz?f&IrwC4D(JX zZViy}X4xedvJ{!1!^(0#OWUaOHpjnhH8j@9X*%itr@3U*qU9l2|5yMX${mHo zf9Ls2S&|MTYZNY3`kqmVg+1MpZXqg;5xtMK8a!C<+adjElm|=Bj%2OJ;@rV=TA9CJ z$PQNMrz+ut_5QIGDwI#RYn1+5yvKC7REqAK+l*ubh^1zF{Et2a6UvjW<7uY9&!Gay z&vZldpyB>!YUZb{)iK*4dv6b~QE#DjQ97wmPkS#lV+Zs^uvYF8@4bSF6GB@lP@;P=anJZX! zwqYqzq|vatRfYaf3;jUl$&X3An(cST654jdLu2K-EQTw+fS5WpnZDWB&96nhC6=nU z(C^aqt79*%isoa(ID?vv{?tUP4AD}qe;*?TUWXFZng>$yRU`bO-ir-+eM$8d`CIOt z@u&3KPN0i%Am59zPU|Arbe`_TmrOXYm^|zBH`(?Kk1p_;V9;-Py>CimDjVv#8iqtW^ewG#rT4O5{u;MQ8ngi$K_vB;HTk=t zSVz1^^=iZVGhLjpVe($LRANV`Zboz%erQCW;o4XiPEPY?AcuQ;;~&dPlB9sF;dDhx z!v24DICM_(D%_Q_$>$|&TT>GSfwyjjii*H6-X{b34AMVmkouCsRjBgon#PFP!}-{9?&xW+>X%Xc*h>a`)=}O`%5)S z{Vz+>Ud5!560K3vow7U+i$c<@3zFvjrc<3BYBH$POG;XlbxWS3%z z9+zB>A&_E$4HuHdPDKU9Q ztuhbwNKr`L4;=S+A&-v-0eOkMyc)lbE>Qp$lBK_)#Zc2lMKt7`@oirdsrD)Ky44=0 z`_+q>4j^)3(a$@%^Y(DtaEv#P>j)tG{)kp6-;Ow>JM}XTk&Kc1eLOU}xR0ZM2d_oX z(t);ct3Smw4q_+9&OcpvnJe*UKp)UF$TFayq<*RcX`U(j9JTsMLgee~Z2Ralt}f+E zZUJ)PD4v(INYYbmt9Fj4I;i3iNlTm63k_;ZeRPH|OR6L3|m@b13Qm$`-emJJ&h7VFlkosEUT~z2)A(<@vu{!4OB%DP_4W za{OJ1c|z{$rig)GsP_{~NVGK$V+Rqu5iX>5cVLAUyEY0qWs$GVmZTT8gX;ptW2#dG z^^MnB*Zec1t7hH8jWu!&F}Tu0UItNh-zB}d*b9b8%-S0Xs|`JjZOff&IeCcuIh#IB zL^;A+OstvoGn7UW`rG0J+}{@LKYoMZn10oF6n~Qs&n*hV&*^<(X7JEq*3e)1_6?Kp zTUC=O3;i_&6NC3eoy$`{MW3W*`dsZZ!Zz#DlQ3^4tn0V$`d~Bak}A{QoE%1hD#{RB zf`$4Fmk>v?o3_+OUkmZB&^{qUatqjC9#8=jS$+UL28lVY^_L+Z#bo66Zt?)@Xf~?c z8v4Ifz%qI`2@$OHK?-W>Il5H7V^9*UC$FR!An*TMt* zmB6#Xh@ljR%?)1lB7c+KJrwjq{_{}S<-=78tMBD0cq#HWb>Mk1#n8LRzuTk(Un0t} z9q&h)Kir@Gfg;Nd5j={HFIC|gNK~Xwis~{YC?@QY_5M1V^w>EVf9ay=gmINjwv1h; zueBs`$7k`m#>>AI}B z5kEEO1nte4-Lpo;OQL||-004exughrN?5=2+}zFt-e55Ld)pK!N*UzJY? z$>PK=I2DtbFE}ySxq+1}T=6|7eiC?ZamB}Rm8O7bW>g`hMzOf*b;8q z;GY(wWN?IsaMH%zRei%$S;tbbt8KmUzYF`y;E2kioQ@4j=^+VGo36!LuQ=32R4-+J z9=~_$O&apW`-*3lyA<HQJQ&Md98pwB#L=rPnIaJI-h1vuPCT|PzrSD=`=ghFwcqYW1Z3?b zJJa!|w`0opV=5o6Z$q7v z@2ka-+}qX+6jLxHKYM87o?Di35*52#W;Q(|6Zr_K;Al-rbapmN)(%KaP5S$}%7xsF zFL9OBR?Fvw(S9Q9M_x`=x1eW=t`aHs?1^_GA5%Y-=}Zb=V4D<1n& zjx?~Iog~mcrUxV~5+|!PP?6K~^K6 zkx6-+ftPZVN5EbD$Ajnk`-rRlB<2_LH_4`KP0zEk$sg~21V%4Mf9m5dXudUIc_fO7 z6GZ*At7xQ2gSqG1>l#=-wV-mc5VuZTzq5S-v{#XC(aw0(*PfSQF+$2;Ix3AMEhv=d z{1T)mlU*LUC9KNwsAd+Ib=X$I7?^*?bW$F3_YL)~zRy_zcXM5t@8B zdB;_k5T3k-EDz2YehTrKT3|8OmF&B$u$vZE^S-Ds;w_x}f9#!ASd?$u?iHj2q+}>* z5Rh(Z5eGy{47yQikqELQpydq#3$~Mj8Z$X6TOf%>RAg?>pAs_wB8XwK*I! z4^Q3qecji2UFYwZap)1!%dHE$3pdnj!&Evbk_cs!Wl zI>Yf*iB>>$#E_B~5ZU!7?7w!L&18)7G^=%});)BF{ zznc!yDtrM9DIX>_!RMn>00*<$CAom7jTNiybUvfcE?nrao`H|FNOuUX_|lBOm}$$Ir@tj85TUTVvedNH z#xO&9_)@*EP;MrC;L26DyZ4??>VO*HDbVa`L-B=FTfKb*xlF&zCVV$^6^+)4xCH>M z$lrc=m9=Chq^c!oC-kR$5-<}$EN8!y)>2?&_z9@oq z9|s1cozt8~{HG(_x}G)Q{SEcVz5Ny~BIiZ5(zjnI;1f@kG-EP15Vw7C%0&(I6pvx< z-?roPI@_{x?*J{HF&h-_QF^T6V4vLXIiOXnUM1Ay)zHWXAnG%S;`E{6p7nL68NV*# zG2D-YT&3Wd@g-g0(mfV4w%bsAK%|M$-@EM zcq^5d0^%o%G{|#0h`M;pyi_(4JdQVFBr6R{in@rmv3j&j+gGJT8IL{*p0F^U{BZB_ zIDWgN{!5KSbA6To9V23`A#!xQnLd<`crf?*H8uh%>r{VC9C2D{YnC1*;=0Ow_@yHE zsHw$jZ?jH=rFABk*v?NMl4A1bhm!Mh(*pan9+InWP2$kMtLn^aJjX^oHcWRh_Dvqo^)=?DN1c7LcMWQl z4sFMuev)Kb4!0^kI4_qC-|)bXsoO)Sr}L|jkzXq&W|q*)pFoKQ zg;5C(ML;{aN9P%h^>=QWxFRX(ZjKSNm}l-Wj_{YF*rs51Ky8|+)kqfT9e+lIkHhD! zBlf|J5t}(4lSq>9jO?wJUkMN9`3x;cQMbob-udq>6C-5&BnOV1PqMAb`>GC-7ryj_ z@^s;X<8}TOQc7a6ct`obb3TE-#(q5$Xx=QR%%9fREcrZaT&GsVJVR*eAC(p_)u;Uf6o;$dW_{$h5Xm%a9P4ig7QEhah0U+{ex!& zyrVrHI-jw%**^pkv$PEr0CVAI@Ve%FSv5eCh__AZAl!W4Q3hsuoCxHTX<(n$(tvET zs52Lrj{V6Y7;@Fft5vXkv}^A>`$s>qw+H|M%~BnJ{?U~3y4Ul7s_8G4^Ff~g3Q=NX z?>jm&hP)d#s=T>8jtB3)P>C@9(bq@gUH4o(f0abLYQunO3n>q0>eK)APXsvxwC%sR zplS1rQ3VONmxop_Q>jW{tQOnEu1}JM3EC*r{YhiGk&lN%K>IERx86PHn+0okcIH>O zYwPURg6@8m0`Eh^Et@u3KM@5wsi~v#ib^#{1Gknp1!X zW|NxWn!EZ5$ml%2DQC}Ck}Y6*JZjD-iM#w!uKT-rR2szHs$p!AD#p(t@je~8xS=XH zx~2Eg0!GTaRaR#O@x~78K%X+3J1gXK?nTX0>X~2K9p*lRV;M#Su7K@T9n)nncw;`A z-fOhdGWWR9hwkM1lw!N(w5E)8k!90pshFZ@x+jz?kHgu(HZhYWkFLKjap@f}(rc$1 ztrKl1KY7VcAN|nCvV3*xqdWMFDA?adp7&)8oAq?@&VOmgs9)rxJTXKyb}1tLb1c6- z1~o5_-i8{hhoZNCU2bMnpo7vBM~%eDdXno8+&~sxyg;5Bl)#O7@=nMu^HHXA<&P1^ zB!k(fYT*$TMC@`k&OQ;AXN;!c6#FoTPt3y{gs@5iz6Yi1x$^a$>OK?|bl?m45KXou zHU{Jowty9W83ET$pV2zC)ufyjb)_e1kt508aeIT5+t~G%W=mnEBdd2W8G@8OKcy~^ zvV0%P1gp#o!Fehfva}{ow#o3PiVsC|w{d?#lq*)Km{WDV$-i7Wd&zhzB&(Eu=q@7G zKcjCv#3%=DB-F{nCiw|>IpaYPb^Lds)eJhXwlDfssXOYdcHLr&YwHmsY%8 zEd$iB8krG^>a;OKUwk9pJ;bY>KMM6R^6aI5grnGUbK(JgXe$jb5#?ue%-1YCvP9#X z9Y5#LO{?E92J`LUtR$9u-k9@;c_?-sB^h7|hdylmp)|#aGHRdx$RTeICWQUK0SJ1Y z%85IZ+;Wha;#Il3?@`u473}t~XEiUo@TNZ|uU9B?GVr&yitCWs1|DFkLB13;cIP~? zw}vKt8JSo~3tSHKf7}%ozA`GhDwR3MXVPY^MBTY?S^=nQegC{xsJ)s6zS!5 zMN~p~XIuKal;EnF{HOdB-y?+4WTx5dF#hkS#GQ?BNlanW$at}E_XLN^1+ikwyXhHd&(=7V{R|lR_q3eSLB3HRmPrYl{Tv9j1cAOB%%$3rjh!F4$kp z@TD?7Ro-?r(Y|ur@1&XH2L#A7sTuK=d%@z;5RNETJ#?z*n$rso*rn`(Bn&+^S?_9& zghD0np^Cc0B8PwV{py#b!@5^(tWI|~|B&m7q3F@c7e|sPu$5`a&KKn)EfxsJ7&--f zG9U%%V_36)fMT_}&@AzL)qEoQr{{TQt@Yc{4ol3aRw!r;SilaLUP-)uA4t9_nvH+{ zuB+O5`aqDI`=)q$mpMKww|H>%eqWz51oBE!YHE~32srDMfP)qTF)<~PBv;J4FW0c< zo<(--r~%2L=Rc$zUe6U5X?!*{3XjAOAa02=IrgVxFNxZ!rs2?3`n}&m`Q6exqcM*2 z`o4rAM}Zn-mO#EupzA_@-&UAM*lDhqb?WN*)*@5da+9cvIZJV(!+AuhJVD6?VK&VR z`+MK15)T{I9X(P2CXz!c3O_sgmrC=7^?vcDePMQ1E-LRvu;r!IZ+f$Pm-)!q<*0+_ zjN`aXg?S%O`;el}Uc@wyt0};l*>WAaoPi4)Kv7-s-^F?SD>h(K3C;|x3>r7po{shE zKj!!=JGhD#ovY)euj~!7ECcoAhQdqog4PYQ{uK9}O9B9tyN`RQo;cdMLPRZ&nmlU) z6`T0W*=MsnV`hZ5T7h<{?%2Np->!7k$(wRtFL(}@w}0SS83fYEBrb4BdXw6MfPMRrzjMU^>xh0)8cjIW?buWK^`hGgVLs+%!JLp_EM!r6Tkb< z;m~Rdbx=HByanKU!@Fu%^IBV7x$=GLF=KcONbhr7;g4f1*O}-t)R&59Mngm(r;gVI zK~+!clgYj#i%#vTBBJyGWYwl=a>qleB z<(R~^>pOo`ubzdTiVH7uomfugm5O3Fb=jO2?ZRk+BwJXGafoAeZTIit5>Nc z&crGS^)}-Gmz~dPgJO)foGhhY4ZaDNb0xwbuenQqnCDyH&sp-NHg8?&LR$aL*Yen#_|kBd}od@wd{WSM~t zPLykJyf@uo0uV9N*vK#vOt$|9Q6cOKXK3>aV-w`BK23vL<+e8{I2lHOWKOT z9yjv(twXm!hqz7&0vkpU@_DA6U5@!F{pTNU>5tk}YY9g=as}lIA{MZv6UC;d>Vx9d zx_4iDeAF-XK*_C70D7$RwA@xjxXsU_N1N}RFj0jqHMw(wnz?1Bs%E9;QiX1)1=&uR zq_)`k%Nbvd$U$nh%EK{)+>FL+J$>vwMI}|&eZoc;t>eyP%*CUaM{zETBxaH+-D!*# z5N|hKDf{4|p9_^C@!2He=Q?ZOGm;V-`1raTSXMoc3lr=;TkKc0Miv$YMAzvFVMyc* z3=)O=>cI@HKd_i}0xuX==@aOip2Og=J*)_C3?HRQ5q@C0mgcN<2|@e<->sEFkxh1`E$W@h7NBIGt^5#EXZ9>7y`;;ene|f zHLXv_!9+|F`p@@h@B8<}xdiIq^1{c|WNe%7Zcq(@K1XSb$t2A3)o&gXaYEzQEma%G zz+t$~PaiyYd9C`PaLQEEqMgIXS_EUHoSi1^{OLc3TV-msQ;6&}nj$f9`Fwxz$9!fz zRd*7Jf9MP22RX*-#y?D2LtFKNfapK9sF1U^+);>9L1(#A^4%*2;P)HKxE)}wl}21} z{qLh{kK?C+=2m)??hTL(g$Mgp)@6l!tp538D6S9&aL&RQou_JY;ZOJTz0sBeIz?!Q z;z5A8gL>!z5UWyvNVVYxpH_*O#FF_zHBZ9IH?`->fg*ik=7PM8#K1lOJ`=u33fu)D z+WUb7LvPp5g`S#(hkXO!PJ=suU!Dp=#vFZ<#?jSsg+yhP;!J$C4Bvv5H!3Xce%2g2 z3aFxinn-}+&4GWH(o_hDO1N9S_Ul zcZA8JzZd!fxSV0V2jZM+lX@R!MO+SEy($GPXdqa zK2bcl8c2#9vKuf1|MSro;9|BI$Vp%%B$j-@)BDlp_si6AUqj0C)TW!XqZs|A&=*&X z-`4tpJUReN+`fdav%JdPC5BfN%b{i}hMBJGYG&h$NYUc=+=DMP}CZ zDqFA*DF@SAY=29w57;%7Z0Pr)8h0R7xZj=4128mGxx2j?1bh=MKGWdJQKR494JhuC z!5!e>__=Qju(qvVA?HhE2ma0;)CwSc2=LX10S=9AqRywE?>0ML|NGp4cR}qzG;dkM zp15WpVA?VtPRXAm1sgMWSE&Cz_-(J8>IU$&76w4k0_gg237uv*NC?CQ92PxT#IZ0k z64=r-pP@~qg+v#ixmW1`N2s5+UcAgp_c}841uh0)KliKtcvOjYQ3`E1JSZ}o3|Lw| zXX&M^jbjELkhnW$Xcqmy$KHRP)xU<~|M25$IR5g)m*sGin`$8#q59t*&?4Hr(i&HcG{+S;uF4c8$lb3sy0WOwB{xd!JD!YW;Obw zoRov{mHa7JiIhDU4|V*_j+(TH;hcBDX8oji{`x2Qm(j48f6Y0sjP_)K7kg03g&bg2 z{jWwuD6Sd9{%yg^Ad0?zK=N?%^_bgmj`^~WQnJCkXX+dIbDgM$KljEgR7L51FPl>& zZ{@1mV$)LPns1q_po^W>;9X*rMdNL1isLes`J}IWnt`X!)Untx?pTeQ82ra{makp@ z_3cB!o2V9H{g4tyPJ(BHydKaJhtD9H?A{< zhe=DFJr=xbQA^%Tn9kRovNON+ek9`EY##vwX}ypx8+JLRFib|2){lC*?yltvcqVR6 ze=piJiGW>ZeohtU(W!q+&Hwh_qj#VQ_Z2*+zIM-~_utP2y*U4m9>;xHYY)F$8jS9u zUfXePZ6H;t#QwL=N)lC7eu4mJs;zm-^eO##=WSZq?Dc6GKce|6kLv2L60(O-RYZbt zwzCNp>TBM3{w2k6^TK>G?oMRP9N`La^Zo5Ch);JeH@5zbKDo5Xlj4~NWJc&{+NDMC zeQEQ+hvKuR_c}imX-<{qZ>MgjHY?CtcobJ?WLKMf`}a6XmLN&CAcWoCpnNF`V}Mol z4*{LzAAodL`}X`R8Cxn~W{yDP4w1lCRTyY}5eDd~b=m;3aA1EKKA37Cw3@b9GOVt!PF$G&J@T!0Ai*U3CGJJnE+ct7E#-5wQ9> zopaTUzca62OB77Asr-s&7R+ywE?4ndB=g&=6jRlD*7BGyH#ZHo-fvPVqpLY8)Y@B1 z5q+9W(d}chaJPzo)RxDqym;Z6+J--9pQx1=HEs6CXw0ISPWZ_7mEWeIMVf`dRnPU= z37&cTD(@iM`(`0;kF)Yc!7Od7-dpp4kJu?b_{YVZMPWCsnu}>Rna~S4!MznkNy8wo ziW;mx7RF@+GKAh2^a=vc*Ob2cxKvX@0GoOTJ5{%*cEW#zn7O?8Jo;g*Nmmor z)|$UMmOR?^;gHzURkycaqIug37p>|^0zkJtIItUYM`IHv2-`#GeJnFQwm1ZV?V6~9 z&&{@>o0Hi*UMDVzzZfpAFCGe~WnyF#Sc+Y)(KY>pKs#94V+y)cfbj0x0ze*aMjQ2G zjT%#|NsPR_Rw6`W4~d>UA3nJ54WJh7dDuhv5(vHc(eC@#JHt}|oP3Z^?FEfpUH0ZE z*2!m6%h5bVRSo7ENRs{}0kzN%e!T7vOc*W<_lShNFP#gRwTy$vW0N;XEOU293@rvz zA#}di4w|52@(uOAVSsgNj}{lFTG0GQ0YxE6)hY+@+3_FKs1yK4hybX6Z~_{UfntDF zL3kG#nZ5)(YHR6Q1^Z(Fc#Fnh1i{2Tjx7To5#B7m;dB`=6(7Em1l*^C?eii5`(5v` zGDDdvpn{tE*a01FXn$^V>`qv{-znMSgFnO~`ETP^O$DVmp%D(iW&wdUNp9|3mm*qvw|lMZx0_{x^~`OfN& z-uJpVu`^ZSeKR1J0(N8STC$q(poEzLM?2ZFzgrFtX|OYYG&$PK(5f;puLZ&9YAayKRYDu90FL0 zR%jjEeSDu&UZtDPv)H(TJ?gDwI^aR5YMe}=x^T0p<|}{(Q(P-I<(vZ!dCe9;`$~8F zm!B-heGPE~cQ=>D7up-YmkR?1WM@lF5)HWKm(~=mZJbV|Ob60dWCoSX+{*UMqsn;g zPyaZJS^SBm;@j`^HMr?XcYwb)->Ocj=kRt*OBggr<2JNBz%Wg(vcHU?I&y86ofLs5 z33%E!zvRHowNhL%tC@$6 z)y=cKPk$Cc|6zIVR*x0_jaMvq=6{|$#>{ZdD*uT>-&sARdqqL!GUol~_isVTK>(ov z8_mIJ$U@str}fpo$;`N!QSY9cwQCqm2O3BfPmCVCS6WcSn5AjY^u4|4Wd?cN?T5&) zw8+`Nwetm1Fg#QQm(+?qQav)mfZFmFnyVNiQ2zWHPJcU$1tD<)ZafcZNw#t7SA98r zYBFnT3~eWk$+_X`FFyjQ@TVVOq5Dkp!_|r9)sKJj?(h@rPPB}(vDOZDoB-C#u9wd) zYli3AVXxh39Ka$kVN?=szpxgeMFjt7ccs5|8tk_z%ClmlGduN+mpVqbrUx(ZtCbh)R z>=>};ieu1zJ`x?M21|?L^9l^x{rHv7d+H10P&s&IoZTZ#d?oS37TYzWGs5Z;WbyvCVZcvPF82h2KoLn-9yK)u$KCx<2*% zw8LngZ+%9WpCrt)D1BeqjdN;3H8BU>AiGFtk&tUpL0Y>y1a zwS^0jv(g!sTC2v980Sj?M5P{mMy})P3ib1HmsnwEKpW*#iRLw044HPZhA?UsBB|qO zLC|3kL!e3g-mMdXKk>r@k$5n{b2L>1aF;eKV(?;)tI65}RN&>n3JnrRx_ExB*j1kA ztJdZbkfM}NjRon@!4=XDeTq$hH`MZiSFp|FB;|Ozy3nn`%l5~`vZzLx$7Cpdm4)Vj zO0I#h@A-OvNi5u&)F9rAy5jJK(;S_(guVQ`r&xc20a9?=h5iv>xW^HsV<&ivng zAMdMdonnu3nZ|qt-8Bsr+P#l=xGT{J3kJXIb(*fxw*Afw|Gd6YfgGLHX+-KB2Sf~f z>aX5?RAg>)gf_-b2l{4tU})RZLCHPxn|xyPCtc2Iw!eP%h1Fl+$ehd0W54p-#}4(F?eX`S7>~Qx^C0<57Sb6tp{``lxe#_5y?mV>{}L%P6o%uO`$XV05W8KQ+PAcKUq>RXZ!i;-(Jsgn=r(I>7(Oo;=9+ zVxp%&k8#7;iVpw|6}`@)_{mKOYmGYfKxcOjUym*9>TZEdBNp#&&yZo9rO^t#@o@X2duss{enEE>thOKAKBZO#}+ToyfB)Oyd~m}{Y# zLs4vaHLK*qI{<)V*Iyjh=$w@?O9(q{f_Ms=W+PNkKKReKDJ(SOy{ux=!cK@UzH7U* zsSJ>C(wbhLZQ1ARmMQpBo=FI9(VinRRYfwy*YL-7R~C@LQhOY+mJLBEW>SpJ4sBHC zBkE@}rpw_eR#R1hzjZis?W81o2v0+78i7yzZblEXz*mY<{Lmeo}(HPx$-o*oIr=^pCq>~glh*q z)h#}%?Yb71XSA2&E;A0+NCiLVyV&U&R=5W^8Ve82=YAmXqi%nJd!N1XIcc#%RN_hv zu`<2azHBZ0bs#o@Bk?e6cpkYU5S`t98UkqWEO?L4cD`wOpG?e0az9{gq;hz2zagU< zqy6rw;see(l-Ih%$3?^tfvdA|ILn&v&B@dt;B>B8!&$u0`;i93-2#JSZ4Z>apcaxHi(?VnJ{!(u;#XhiOph z(QF58(^Cg){j+q_Yk173ZXMGC`H>Y~ZzI*_J-nnRnFW!vPPT%EQG2J7E7M2uQ%Um6 z!lHR&#lJ>lTBN8!HHN!^?Adfa=f+1X^ml*AGxZPHU%lPoUw08gDDQ@R9;he4Fewj~ zxQeV>nZL^~2CKS~7`U$`@H~H`UjZ)b??a>Dg&SW8NaEx90Nn@AfwF6s@HU>GC-?6{vgnYufd{|7H9=3ec~T{ zi)T`C32Z_fGYRrl(vXeR)xF&=(aK0+cn&~MX?4e>fR0I~erBN##{Fv?Rc`aBP0pS9 zM->&we;Qbq*287%T7aFfhLwKHQ7k8po!kyfEfVFxTrq>Wz|r!I55# zmeWgx1_o0WSed5#F^GGNzG@j7u|5*7m~2P#gl+>p_>=ir>D^Awuj-pqx=6wPSxE%2 z)2p#Z$o}Ry6$IAr21MCZ`45w*7u!}KA%#+CB9*jdos#Ksp28r6H{Hx!CrWCbi#`H8 z7>=;5>%~vqc0>IM279%d^}98?kBFHsVY-Q-v;+&oVd27wTgJ%6GvcwcZ*nTNV%=p! z)dh84r`?Nb94&V>KL=8cKRh0TQ5YyhN`hvpo!>U`RivG_c3_E>^~Xi@SV6)i7{{_g1$AkP< zwA^&Vki0}Kdp;tUb!8Td$wrY)Tl~F!PwKe4(@UbSPwg{3S4^D_=`&vw(;Oo=wKHeHp!BN^{Q@$O2;&K5G=B)0{?@tS;Em9T4n+q1Dl*(}H zALHqcYpyDtHajsXO`0taBtYsk90UN5zQ=AqHwX&OVx zpI?1rW{!qvjmPv$mL=NS32>P(W5Mid2>4Hs_&;kcwZ^}^65@&lk(BLzeUWIa?wQD8 zA5-?a{?BSqEfayw(wTTzZ4MKJm&Saq&Y{;K3?iwJG+4{rl{Q5HfU{UBr zZ>A6hL;%Hb3qcUs67_{b@mymPaidkaaA}(;@h3({s`6im zSN>Wmlh~+U@m?XuT@$0$j5Xm99@EOv!V6ESC4l`BeNT~Y<}qMD^}gA0=sj^*Sc;TW z;NEzsS*y??Sn4OT%K3>GXH5@?d%71g8!9UNroz=x+I zW%{^I7rP_$DMiK-I>|Fb0J63@=zOTnyp?Dt20CeJc{q`j);pzVH?X7qk?*t`^^Is! z55eWOz?z>WoNB}Q$=vX3Fxd7ZZ2DqgFc>^-I3Z$>{N)a;&NV6xmhwC!<(7{Mp-(P> z-OQGcEkITqS|O4-egtD$uQPO+_}KesA7JPW)&I$e18-r;VyVe7LBC^H67klrlGZAH zJ=?*!=;ZZLfB#hk()YLuP;j1p=?7qC_5gnz26SmJ0Hd7Ll$9V@KAbY95%GJu?s@#$ zFd9}?1AoT(2(c~9#WY0j)@*cpxgSWhc4S>&I19EA&gOb*x{q)5@nkUj9)(`<7?=z&uUV68NkLDV zdXb_1bZ;{Ce6KakM|_&%7Jc1U36EwQ3_iDL(pN?=Q`VK9{}{-=i@51{;=Pv3^S}UB zDq~lax|kfNx5p{T=P*E}FtoOuO9-o0*E0C~R{=W&rU{+ZEQmiYS;C5vF(4X?Qygwu`sG=PG}(NjnN&0m?2y zFUWYkz_>(#l!ujC3G#d!fr_&g$sp<7>5i{tv_9JSr%x*0Q1%V?bP7NT%MGE+K}r#( z1McWV0HuAl=9MrM8B~&j#1&_);c-t^WEYa($&WCs5K0UmmG_H3 zBrN-N%-^Shg0e!_s6a6ynI?yqrFkoc+g4?e@}nc`4pj67GYbzS>DOEHz1~aLu2)Da zB=aSZ{~CP5d@N?F3KRh9N%ScdkpK;_EC_Q`Wl&JIfnKz^9?7QlXLlh>CkzfY8R zH=;l<+*$Q%d%4s&%$b2gIZaAL9hL4Drd!?K5B7w5L&RF_e+3_$(MjG$k$A83n*W2GaVZ^Rk<7& z^k%dV$Drs^nSMP0$dVqPMgU08fX~%#(t`$oCOOdRj~Tc4d$AZuyx7q)l*y1DpdqbC zmK{>t_>{eqVRCjymIqLuSEP)jkP|++q+;{E@j==%?~N>!i-~XL>{lY4BPa>Pq${e z(|;j9ns4}J^B@ONw{6$E3H>S*k+<){=28rYM4FzS2~VLM>}kaw6X`fh^JeDouat;Z zIIL%yfZVs#t!XAY=?*l0j;gp-b%FoM?0)wo65K3QDhvQ10 zjP$s#fnrTiZj$A=_HjLG;K+a~<713SVz8&@$=B-20enP`@kqLk*K!aA>9PqxClx}2 zS3Gm|ubIo2vK5j`sWYgUm^kT57k!6Vx8jqI>eRJDhP(dYfn=!obHO=js&Z zTdux!V2WtEsHk75s0iL>v3`!ZtZg+2p%Bq6sfyR`5Y%u#4mum$oRV2Xnk~+h4AKQF)&AOpG=%>Vf`_cE#}YZ*M&cotU;S&FRoe^h18l3 zvv2OyNrRbZ9!>jvtP1XYy)jjLhiJT9UmaZkY?i&7_mhgX%Zi zGzanRRfOz)pLept)!mJvl9&(oH`h-?Yd8#*-LN4N_Rq)B`E2C!dN)<1A>3)KX}y}= z;0AhfjXmahcl1jssnWRTrPPYBbqR!mUzf@@YR_}w{AeKU8XE$ zu*j2)kOQ*ntEnVGni7#eMrMvXAMaeJTr~9tyi5Zakwj-rHU{O`ruLC{<3XK9Hh+eL z1{1BhQ=of}yp1v^iD?^A5mfeeR41uQn>O2uHov$L^J>kzktom0iKu}yH?0XT>$tUt zwFxcKm-$q-V;yo7uckxF%9F*MyFX^!Ct2v}LA9JhTiw{a_S*e+Cx2z_LYklus^E!P z4L%+5P7mCGX50RjMBA0st8iQ1a0TLv(JtS*u}|hper2HbuL@p$&lXypC2s3a+7mvi zChe!oBrP7u990g&PJu;wyMBc#%j-gJc0tC0u_wzzA2D$y@UeY!H!7m0o3?qoefRfB zrTLg}Wt7A9#A2q>OdrQpsRg!Hz)!CBE22Il0t-m@+^7=oF6c)nJUx5fk=gGC5K2U& zBo9N4BjfblpJa4+1r-1!3VZ%b<^C$0YXN0Rhyvbgsx`}ZH?|apUKQ^%L;DYNBgOkT zq}3niyl@AEkwNk8;`eLqH|XT^8yTdHA{m&W5u>Yqhv)R`a{zYccC2L*bFU3&jk$CJ z>j>b+N~{?2pEm))1;HEJKE?<3p8>dT;%Qyr=k^LbcK$4%ODl_ee#V6O5$qpGCe3OE z*Yrju@M*Em0HI({GHL%N4~MsUM4qNzNNe>lA$cD}X-)P>^st&{A4~VI+&G>B_p*T@ zr`c*lJt>GcCO%C+_vO-%ZyzG3Pz{&0diP{f7qP3nRu>Jxk=Ydke!~TsZ|*TBmII1H zNl{wuqR%X=!n8vK(dlpA{aD)4ctSZFf)ekX-L?V;u3Z3so7EVM6TpkkyY0r`_QJl1 zvcH)o8Ndkb3fLIm1PT#$*?GNjuKBn| z#&<5`8s9FwRf|{J`YNsi?5lyq#>|Mg&-4%c%Wa^FOh922dSu2K!;F$wy6i;|m$yhL$YZPYVSE<^C1N2=$WRH?fBORjtq_<(v#zV9o z3>nG$##gk0%Y7|dp8V`O7$U~bT zDG$HS9FV*q+^t~uk9$%Dm-=({>K1a2gH*ai01#jls5b@igC=t7JK~EbcVByr&6SyS zD<_#3i^B1XaH|2$x6GIG=*eC*iW@+~ApuVnVbktN7u%@%T|iE8bYjK-vQfqmPQIiV zO_(fqLF5YTvCBN^M_of<&0+2@&oxNbJgqpx6QD`P;XIXq^Gna|0R`JelBS+RP#Wh0 z&Cy)mY_~BQQY|l|Yg2-6Eqn^*RQ0*^1SS5k z;w_L!w(fjCDLC~;dgjGTPs=m+-{yUSt3ff~(8iCv2)r^M!1-T{@)MN{p2nq4qA0Hf z-9}?Qjv(^EW!OG>wK|fi89x)B3g_j}6TN*XHI!rdE)2@W@>z-#>ynQbq-DuZ2XxbsZC_gUZ%)D^_Q|e8_>x(7bG$eqvYI%MUfR9y zH}GDXaI0aU-zn8|tE;)zW;^mF+?3>|jBolIc~J{}bB`}@9{U8lZp}W$F~6sX z7xeiirv$vrQ-tvj!;cm;FFp6a5nWtvF^O{?)2H?gd7d2OWf(S=MWCzl0%BZ8!u}F{ zrwfeLp(hMx!j$J!O5tOxAHeV9XuJ-+7YiDei41=ZmHDFeqYj9I#&W((A7RlYiyQZ- z|M*tzPy9st1^Y`r(CZc<^+adw1{dcz7G>=GL;Y zhr=t>B6j0P5=3aF$8v&`8%aY4?VS63$GK&7!W~RPac5*&l`Kq2((Z>m?Ot$};qRHY zfRV3$9Nbo#?Ac`B-o<6wrHNdenYXr=m%}*`PNJ{3O6aV^k3R@O5zE(m)|OIb>&Pse z27-d;WS;IdP*hVs^Y;Gpcc=(I7_9BQLuZ}FJ!LT3Bz-*^GGM*()B;ObG_%~rB>G_g zZb7u={7CRC<3}A90{viJW@eRl=HX$%1bV~n<)bK|*_n^M{=5wFw98uDww@kH^9ML6 zBKEkoOu3x*!9-6N9rsTs116@5BDjI{B&*ZW5777hPyJkGLo#M^+a(1>Dbh~AF1ipX zN5%K3_xY-7;o2-R-kq(Hr%2wOBo5I{lh(uS*(^70J%{mp!qZ(!v|yPgImwZswoFenZyfkN|fHIuc2s@r)$}p9A({X)l;zo@bl#!Spr1Iw}NL5 zS3swe;q7PBsZ40?x;8Tzrko5{%iZUl#E-$Rt&E|kah!B2hk9*q^HWAjsQ z8bytvF4q&e`g}9};7N9Y2ljD!h)V&66DP}q1Kl0J@F|}k?nA|*zr)pLpPzO8%6`nJq0OqL@ zT|K82DN!e7ru-6WH1v%9zE(ULq>=s+7B_y97wqjM6E})Pi?6z8+b|Cc+3X*Xm*ooK z$LDg9P{HqRr`df?LtzDOF?c+v^NMLc`d99(^bNj`c+qYEZ(oQ(lLu?o*v=(0b9{O= zFF%WtfTrk^r2Qt8x0;ldRarH6S)!A*d;#)33{ z<(n*LNKt5}cnUZ{1zaahbys#36<-6rUHArE&FkukTpISC++i8V!hNf#_Vtugf!4YN zB$ZqguZ^U!UU1(KJ)^^S9yuhP=6SqKc-xYHn;e}nm(yPT`cn^#neWH==VbeDn7zmA z49v#yg$A_UkN8(OY%P1D89!>94Ql`1JDz*78hvT12cdfm@%m_tyfz|$l=>~nZSixp zj|EaXpZ~lOk%vG38^%4jq^sPboERP7^WsMG&6_esZpAMI(8HCnq3z!B25@hCC%Xp8bn?E6nfJ`;xgno!=;=BZDS92nd~j zpA6NIio)2&CH1RTQ{;PfAy8G&T}l>X2_{JIu#~aUefr=cl=eV!kQFkw^IN}FoL$WU8s`RC+dV8oE!Gn|J+$Jji{Bp|O zZQ07hC5az$uW9Zim7>q7r!nhSN=~t!p}EaB-%8bZa5KTXGMjH>U{v5h-n#ourYAwl68^W! zVDQOdNwqz{II|&ifvc>7@<>VMTRPOeH^>C`gwi9%$ z`Y`1l)Br}stjs=PttE6Cz=2dql8L4Kq<1yOO(_40IGB^N+_L=$aXI-16Gcxc`uMwy z4uWqA!T+qi&S)wkI2BS{n-x`{EJ&nYYG-Dksf@b*kh387RgB!r~@kLjof_2qAo9SN`Xi4uy+>{z|cUpa&@ z7XHhFN88+{*wYn(;KRb+AtA%Pz*R3dGH&sWV{ue zsTWW%u(j1JVaW!Q@M)!AQA@OMa8Ziu-u7~5WC-=E3|~W&K$i?*bLzatXNpg}_0mLI z^do?dQ17sj6f114J&cxQTF>zxxco~YYGgp^C(5F=G{R?C7cX4kG(U+uT%_SiA zf$?#*T1IKEbVs>0aI;FgwAT_)33O1=_`!G@3<6mrk+$a%#8F8UjX~uSyefD^hCuh1 z0aRh+p|$TBG!cVT?@#ZuSE=kAZIKxtcf3dk-bU`vH`mgA-8QTV!EO$5UZ(#^6i>>& z%eo7AuyhX{!SZ5idQxgaAJ4ds&Pd;cW4TExS8Qu?etc{5uI1%msf=rPYzSZrO0b`2 zSP5moCyMWudDg~DW4uu{`ipNkMp{AlB}dSR{s_M&J+rK@?Bo(uc$CGq>s4qqzh8{> zIvw`)0U=B)oWwmy1=lNAjjR|W)`!rcb6*AY)*H^$Wdec(QQ}yUg)2Y_#u`dH%gI(G zrw`tElIV5zQ#~}}U|xBMfau+$@3KZdyJYoNTTsUab#7+8-GHu<_MQVdeHL6(ekeb( zLMg`mLsW>)EwgIMsm@~wPxg@+?EOf><2H9Te9zkIUEBNV8<>z6Rp*w zp?$INZs-C}zeH@(!f}`V45@n?89XX~*NlQ$t9?DjAboh*(wEYZfr8)M`Zmy>)Lvv2 zE{UUFDwGRdrGwI*s#r$F>bHAQ6KP4Fa z+m~U*lJ_Fw)1p_1$gl6s(d+y|#-(d%L0Mm>+8N%7==8MnSPf66#BDLIK4>GekF7(jE#j)ybCMe5`N{_&goWZyz-uc(A*DEnQ)_c_R|@p%LCUPE_g9;I=g*KOgX37bkuL)@ zx5i8v#{kg7X|><<>7BBmF;c?Zb&ASI=zYp`=Z^64>#Es@+%%-9nD-A6YlyCcY|RR>r$q#3{^b23sIaBsDxdz zi5e>3H6|mrN%zxwe(|TPtoe9l8x9ijju71wPCQ; zdSU4|nG{VGFiSq8A>1on5VkgA6$+O zRURra6Wq#I>r1THbXX0jeX*nb!A^}&>t@&2L5;SZ)osR7)Z+I;tSYL#cE%J{fF7#g zk3N>LG<&-4Uk(5_*BV(z!!(+XWXC}cckO#G&cq5=p6X0uBLsZ1xm!A8w#gHuKGA}% zM+;t>`%Go!Mmwdst!Tyxp=;1^l4Scrm%(9S3pCvq_l;n zR;ra~nCBz#Op8cj!NZP-Mn-@>rFv~+q|@kx%k|vNX2v9UtZIy3uQktDp;W~?#lk7m zt%4C^u=Q(gN`=W<{Fk_>9)dtk+KYeJ{xU%aT&W!S_f-3r>WBrrII!pod$2WiMM0*}Ngu2) z&TT@dP`U13a3^;do<6ZDhOW`Hg*!~^zn;Pn!^=E(%ea(YkloH3*DglPd&&Up`0C-~ z2~LI9!RFeKE>_#q2Rt-j|G?665M#{C#sA1y%)+UnVH5jVUnpS*D8n`tWUa!-UXQ|k z)#Yfr=L=t8t86Aads(dfV#%2Ddq$L~f?odXPerv!tSxv{wlR2zS^t2vrLV!K)Lp|+ zrP+DyB9BZh8IV(+ zYyop*lXaQRPP(S=fNIE|x;s`!m+3aSuy4A0AoD9b#EI^DAOs zt46i1LN;9ESYw?`!)0S6d+7|0B;}rUyGb#AJBv7B+KoGPo7$9^VBD46_bX}xYfW>t zib$)WolU8iVqTsb_FR%btxbYhQU8dsSEFm({b_W-*zaHTL*Zb~ohb@gTr%;8=Yb{V zX0OL~8;_eh!(YbBvygJRZLXj!<(X!gf7U_5R<@MoOc45BRPD%k{mz4qaqdb;O**7?^s6O=Enf!u7a$lG@<3?yC;^Tiq+`IJ+z7MHaMmV)jt z=XDVghIJ*&kTABwQu5>65^x2D|-pLGF$xRZdcI@m$g>x?xtRLNw6|Rjn&U5M&GqB z#1MwU9#_KZ`s|a`jS3TO?JF4-P(}CcgNAjjL)T-P1a2vyJH*<+s62ogPPX6bU$djh zGE+N0jTob7V)P7QKQ%L?nkV+py-U0~3bZTs;5*b~VW6IKS64yBXcJeD6rD)n`AvyT zZ?}4Vc^Ch(;hnq-fa&ynZQsY*TXWmxRm9u+s0Y<^^1uz5)s(t#jCtgef!VuJkIg_f{>5a(ObvJ{J_l4lC%;q3d92kfWWcq<0Qg}{U2{;Q81u`J;(jC#az zRPmMz^^S$85?GP`^vX4!XQ2i5b}eYwMYt4wfgGzecfmUKo>C9l9$h=h}~ZU@s(dInH@lg4g!7L=aR>6oX-P zAzqyI)A~lSv%TAl{*VL7$XV?*frYj;cC}lnbx)Z}t&s}%#(560oya%w z%{F+D-07bQnc%o`Zz~M{OLROtSh;XN?Q9;O1_QVuKj?b$xRl{P|Fd)T6&4hhq%T~5 z6|M}EIwpx0a*mi}-YP+?ECeOUFG!rE56Y1k!Afe463>tJhPm@Z6aD$E_Ivip%qUHGSfO@x}C(R&Yk21nWXa4hleAIc$~fm(K4ryBye1A#+2M>96o0r zKDKcVs-9%Ndh8m}aK6D;uM0FRhG~=w{5(j-7gJPU*m3=TikYXX+

    #RAm!upq!Xyjm_Kj={?+hpoCoR1ZTn_K?msABP?Ayi`End_n*z%G!#4M`bPe~Zqpaa{*FEz921{%t{JO22Yq5-I%hEOC&NzTEM z(U88MP2k(x%cb%`!F&WM6?jWQ+1 z@D@INzx&D7d2sapt1z}kw(A>%_@D%G{~x-QmT{_is#1Vfv+7{$^ASb#r@`I9hN)ge z(GQDtg|s5VAB&OV{0bw^f8DQAkj*h+Zzun(X(oFm8cbXdQa|Z$&G|YqW0j$Web4*} zj!$3(OiuUgLC!q`TCj&5Zw5zk9OM_P;mT+*sms)tAcxek-q%}oG&hKwTr>h+=+`&a z_tVOU&pyy9lHZNF*Qb~$Pre+bKolVH4k5u8^1c!C*(-i|mKO4sgm*!6=Yzs{R1k?b z?*f@uvpjR7D3vaXzaR{sM=o^O4W1d}*_>S9$*KR{r$iu*U{mlNgq)(iY^zl_p(_s8 ztk6Ct>EgGALS&K%gX*|im3LJKvID9pS7g2jRFPi;B#`5(UPX1jeA3$XIqOg?LZ<0; zbyrdht?_xZ{>uD`HzO~It;U`T6kKZ59T!>jgIh>}UQ<`@jM4b~(RDl$2ebN{$KC^| z-D~H3fz=eQ%=Tp_&4V#}%%$W7mo3B5>?)?YRQJWL4kHL}ynV=RcIb`(`)n8|C#xb%I!@3!gh9R=&Ba zctut@xXy8FE);go_W+5cEN~MMOkUK5ZzDucy9Xo}>+f;~E}lGb88H$A#KBddo5F)7 z#WN#7yF$$526r1zt?hIf)UV&@aYY|=kqvXLvy4${(bJPp7@Ht}426&a%sUjvNf@~^;6LvtM z=IHAYtLc;W$a@h4t?!zO$%HyG>6Nqg-Jd_&d(=AK`3joWFnP$m2OQE&JoYR5Bwm1k zY%_mnAqx5SGTSlngPOW&*m;Yds34)*Hd_olFm|H)>8J|NcQY#P5EkmL3csK?u$2@NRC2s z#``;zOl4uBspiWhp*Jw(OT!J?FRr)d;P&4D8J<@W&-cGt1x6o#v#?gwG^TB{riG$? zT*a3%IpM@xMLEVvW%jFT)YNl_HT5R#mepjrj+2KYMbGqcY5G$qHP77+)(_{CGW&{0c5q~< zj*<>+O)hu)_1KG9>i%>u5nFpH_)pSgBLNa&Lg|#qLF#=M148@eFJ4@=;_?WKv5Q4K zvYHazdT5^Ka;I^oWDR4o{zYq_E zzvusS2(LUPxG)S2Fh{#EPK-hrfe;R#9O1M*mG`1MDf~rb8pvE?Jr#N5wyAkO*!Ogo z)0(VI!IdrkU}bq3g-gxMK%abEz%Oc3TUSM;^)q~uSKMpP@UvwFg1FM05~6CZTLU%I z>&{GtG-M{Gwoh%?7`z%4oBOQ$uWv_iO|c1w4FD~7#7!z{OWzs^mx>MIjUN-YZ}avy z$;yBuD05R4JKgIcG=t~bmZ)KNedfL4r0C_x-)}#vBSzlw@ujGtI5Q*Sw!uL!64o&$ zY;bKMe*B9DFAJYj(#3L1w5fW|y*J;lo5@zc^ZWBYj=;@%Tuy{G;0Bu|iE{iwv~u_C zF;LL+>vrA~-QX7s=5+02yL+bBx9j&54cXM`M>s;6(G5i<{2*Cr0^+inrW zVzYn?6v4c2s;t`r1Oa3^_e^IG<@i<;@;JRv*!(F^rb52m(jxgb$7x-)z|WF|#nV|e6qkf&Whb@2E>JI5kmpxT2eZq&*D4y_foM-9f{D}=O*&kvxkW`w_ z_s{HX=fW%HYpb; zz8JFajgsTAvQ`L@dR%Zi!7wMOS0tzyz(4Km9)o`MAtpt@<;$VEF@0D{pLAen=0+m? zp;Z2Yzr+UJJASvadM;%31(qoin_Dc3?1~0~C}JNG(ACLg-_rY_e2I~Fhv6AI6X|{V zZo{qu#;pkkr(RJ_r$5OCd!4idTvaDMuh|3=<3xWUf%u>~CQnuW@e2!8WkR*B%f^t% z!X^@8gdOZf8{0GiJf*|Xt)iOB5{{W=b3;t8Ud3wG_R{@lL0mjZrxnHn@yG|Kz0vYuPMO&+ll|xt5*#z^?oFpLyJaaj!!=t+!rN#v6!tw4atwac4k%- z?MedNoBDQ+$8j&E+dV`9Zei9B-?=zl-o)`8fgpr<*=>c5hAEYtS&TB~3prnW`xPb> zenR#>Kw?cmHC>|y2=9^h)cb4_NRdv@mx0|kPrnxjk6E)sSUR3*QvCzR09(0n1zo3n`imQCqV zl=1Wa9-6CHXNQq&T^&e{r>ZYRV_9i6sf?S*>y-E5?6K}2N2VKyqBT|SkpG5g{HdDL z-t7qK>zoJ=HIJ!7j@N8vCDYqn(MZWcJ8_-#iyIl&hc@0C_gjLrs}i)G2p^jqB~@)D zkeb{$ChXVAt!rdGA4~RJ8{^|D)TK@yFN|*dX_Md(pZj^+wt!~Uwn2(PwUGX{{wrlS zeM{p2tvW{ZV#bU6KqZzAVFVoY)-Mh^qTq|g0>bp@1(0ee$o$({(zwaV^`4+_u;j{< zBrtG~MaK_1Vh2CCbaq0y*)3^%|EQ`dSN`|x!iGls{Z|L-;rGHhd866 z;L_f(9rZn|kr~Ut=yP-s5I_za(xW{q1uR_j79s z-^)~OHb??YZbT3*L*x80N#GUtV-lI{#}@&l;|7=G;BIAUZ9;l*4D(as(Ff@WecEM0W+=VWN(tW{8vS$ zoqiCzUbNU6kTGgkd`uvFq)4y}g#mrPQUGl&C18FOYO%C_sYe>>Z}G(W4e<;-MqDWL48cs@%piZMHz z6oUpvC6cI`y=Luo#6#@ZwtrLhV)}`QdAVS`84!If=QBZLVE%%|hVD7`=$y!K2zD?0 z34DT|a28tF{&k0@V_L&`tiwH8n(~53|LuZ35BXjh=bwuzDP=XIRa$2#{u+J)lba^_ zb62~bYdtzL4}YBP33+_wDJWhQ=)Wk6Z(MxhmXj~DZyw)zq1uZ*H6H$g+P3NHaO&Ce zPJOK$JVDy8`5r>fbiulZ0^B$L!XXFvD_@kWC7bj1q)tCRuxHsVKtFG+R%Ou9eWzib z-+=4sz0a6bV_HH*L-WyEU(OLFESid!tGUne+OOD(WOJ=Rukm(T@WMT{>B0TMe7LM3v$pB=w^;QXyCo9Ao~^sfF$??4Z2|4DjNu+v*}3{ER#r=xeTD<+7(Y=KLLFt-*7w-4Oz@O4=fT z%tURTPbScT&LrF3ZD4+Oqs1&y zT+tDF{p2IlsL%r&w+ELpA>n#N90S`;uS=}N+=a~CNcd=18Rw}K1kcJ;#=zwnT@GBH zRqGlQ`f3KT@Z8*)0E69;yc;!yMk`yca(Cp|GT~WgJ9`k7%iEb~Zr=2iU_Kg8bpb}C zdwbCZJY_#@Q`JcM@m52b$;zh?04X;h(X+vRRXW`%nV83p_8I_!F8adc>H6UB8Cw8p z>i4(#nRy5h2?EgxmP)q)93vq&&Alfz{#_eIU)GZ#&Btq0s-gn-gMEo~h@aD?)M*8R zn6v{7nTlzu*}EC2j;OZU5w3i`cV+rs1l%yb~r4_r68YY%%E)igOczZ=(dqJaA~ zvC+PjuU(Xq;tC<+#5`=Y?f88i$t@8=|4Q>>iyUr@`gLkf(m$j;n34S{03mcMb_Vzl z^OAC^NnIN{444aC_U1@3qSTf?3&G5n=04GqFVqs=#>^2m|FOTQ2QTZmOL4{4RExMts5hgB`5BAR?h zY{l}=+W(H)UJuuy_Up3Uh5pZpKLaLy%k|IFP7;+l@q?MSBKGz7k3o7=NFS- z2*Met7p`eGyh!=O<@)P}X{TUy*wSvl)PZvHo!7fH*Ir^#2D=7^xC3&?st&fgRs{qr zpA|3E0tv{YJd}O9LIJy_bL}9Wc5zkafeGtbAb-SvQ}ZGPo@B*QC}hr7U-=)mSFjZf zq+Tn`ZQR7>!7sK=Il6zozV~r^w$Zcvjd$njd4qg=P}U-4p>g@6A42_y58&&6dKa$j zB4TWQ-(4l`P3SV?)Wz;i78sMT$1=p%%~TL(Ci9V zo(y3VXN}LE>}btQ|CqbCbx?uo;M|*f)=gQM?zGnq!Bb7XKPyHR$C=Q`qfxlr_g_*9 zCZdWIMWE0E0UlCDjf_zKvD$=7Zn^XukZ7%kHfCNU`E2fI@K^7WB<-i^UnhSKd~`Y{ zTJ71v>d*7&>1FZVJ;BZI8P(MrQ>#rtI@^g?8h61`|8P2csQDs+yHrU1iY&eVUDn9< zBO4kgqFS1QPYBzCBNAvP2lydAx$k1PGnpSAFh!W@6Z2)wXnqTXFf%E=?2rdKS?dlSclwOKPKIP;13F%c)t4F{l zZZRm@vP5%zxYzD2wxlLVpu|ML-u7tumLJXi$Z^pOfd1$L>6nZG(LE34{u@@{j3O)< zx9M4*v^68o35-AtDR6_xMXdt_VpWK{s{*awJx3^)t)HaQhlsBRppS)Hep#YrWgV`|_dlqyq0VdqsWx&+an|zDA<%8+!6= z@iQG4m%5vf`{hpcYzF&F{_FajZJ=lae6SoGa6tMo#pN*&yVC%{xEwp=Gp8%(1s9|< zJJ;kd4$XM+6s!%_VEYU>Vu?(dXY-u0aqBvgf4|I9;4`25E>H_xiql5x~1%+&B^zLZZQL zap3&k%i4UrFJ6dc?F~rlaEm#VkiHh()xnR&GQ*R-JQ9E8{E4hu92RX^tfgg>yTwL%eUu}(8&VS_gU?{yeLL@NtglsEhAnsYnU3HdcOkwzaZ7ht&N^toz zcHPO%K2viSgM>-EmL=K~B#~bO56o5-!b}z=eBt=1$kT+B4;8BM_|GCmBhpIh4bf!9k=AosLBuueiilnxx75ktIepo zlyH>Gh#`XPciKbrVHQ5~@r$3gWQKCBhb~78Z!WDYM+=T}p6x{k%8@2q-9dYn5w&c* zT&H%Jy}I+=(dtbP8iwS)KLVcvuX-THM$X%y9VF5hjB$lrt#%O?OPL7|E3(&p&Rzv- zsoePygup=ufZ)oTZB;32Sa>GA*0nRu3vRF%DQYZKdXae(Gc1ky_hL2*YE=Vwa=B%i z=Xte>Y0aq6{3U$*dZOP4NGROgr>pj8-ppuCb$z*7w_Swo4?i0C_C44HYWP;1>hzwo z!LgG2GARR~BDbm4M$+)Nrk$#3YPRp-76B zN#P1#yBJ91i1lj`z#@e~?g`flpy(0AXB@7Q{e!sWxYYfym@I z$Ae(tB|J(P8_aj$;nl9i=p4hbFy{y+ODB2~${xXf+v4EDePDegUOY~pkhKj(EI>N_$`hd=)N9}9!bJVcNx7W^>&rfmAoi?i(coK(9a*Y(azmXST z2n5xIld5FWUzXO$!GDs1yq+**PlEs!KC6)ZR|Nk2%+pSBL=0*!W~FFhbFQ}U9uctA zPZjUdtN-Xwq1DaQav`6VZqH%PdP|M)&^mRM++th;L&~(Sc5Z1CKa1hcYZ|N~GYY_8 z${zXb^=hlpo@JiCo6s61>;ZaPW`R~&_fLlE1ll5N))0IwkwAC5L-J&yfP?*;(WJ$kN;jc9B!Y^ftl+j#I3nDSri1< zR@o=uifpJ@1+)&{B49D$x8BF`p_3eZK1#5-dN<7n_)tE@@W_xAU2I`B;g~=nr9e;Hv7_9jcBzlIy$Y_FnCY@ zfWCC0X3y${n=lZs9H^T2W-qS;?xmh(e+>~vxN~y#*Dc*r2L6#RT+>?(Lb-@Xlx??7 zbaYY{X4r1+sN#2&F0@?!LuAU70xaqMjX*OUTC@{_*#b&%V~+JhvOXrA+?&{c{xw?$ zKVqK#s_DHD@magsKeYgm0-XeWg{gI}uy^Z)?Y-LjmO-W}usaBosTyMTkQGeEN~xHv zy-_IHG<1FYg^IzSkMph`|DqOwDLx+g-MJ9Eh%s`XD8zOFymP-D?k~287t%xNBS3Ua zgZfGaNbLfrzv6KUHH-E^`$XAFZ*A2(ap?qR*6^DN?V{3nXFj*9;8&d9IR)kX$=`Nz zv|VIokw{}GG;q$oRT`D!u32Tt$gap}K3u)#HktlX$snukEmHz}lL{CTURUl-WC+O? z8hUEVHjVjdGkRxmoJreMc3Q|;*(K)FYbU^_z?{;G?~yQ`qv6=|uOE%u&V`aT$L}@2 zTQ4Pjow?1Z8uumsX&HP#sOxvXvy7YBbo<<-HVP_H*W=Np!PQP%A&2#0#_ZyH5yFRV zIz^2)(F=-u?e=GHnad0Ya74NujutU_Rr1dq640wuy@sT(x>SF;M|-b3o}R2Y?ixii zCje!tAh|cqWOokn5Ngl&+}9WZfksAa zEWB3V0~K!p3f74v7ZP0`@y=9b3_x=yO9@U;YH9jwy}Zvf5!iZ%cpT268xxOQ{H<4p z42mJ9>A@^Wfn4{AoOvFkw8xdE$P(?7g>VC0@QIaI04pxt^y(aed^ocZ>FR4qtl&Mw z_y~~42&Q5(n5G+wLr ziv&1x;dL&1MWQymjh)}N#dN2uZ8g@F8(d#fhf1XWI{TCPE+A(ebJi7qSgJN#A4uJD zLEL*F53jCok~-4vi7&Zpo2c>(IPIt+&yoEpnMPt^U%s!DYMwBK3!?L*AswL?_3|+f zH~UHLvws=RkrDJv~q(Zu*v zZSvI}RO!|>iNd|my;2_ilPqyw1PpVbh8!KG0)O%Kff%f@vU^y_VZz#|VWQS-O+VS= z6Ubdz#WpyCLx#>`9*myF#&o{@xc8iVd(Ov0h7Hfnj{1hD$Y;k+fwOj7wRrI7rge2S>1NvENFR)93 zli=oPNIZ{~IHh39w_a1$iwtY!$`cpE5Rv6z1-YRWz|Se$29z$1gqY7xfp_T6T!QSc zSS?Gd;U^Fc#s6@)+NkUL&YFE<(G+jjw4EJriZi}&K$iHwy3END6|F zqX&n~?s^!x^k&Tm_L2t0OI2+!QS9r)VnG5&LJ4%-xV5^xGpA*-^sc(nUkTZrKvpcR zfpj5Kdyj>eQbDX}wQOjA{pEjqM;I028Q%eCcSkWWWR4D>z73%R;(R8$m#>>Um0c1< zj_zquNa14<+S8PRS`qqBIQ zKor5{&WNB_3qT}F2GIXRSvvpw2>dZJkt0x7SY#Hk3P4;40Uhcpc24MtQ^zEY5=BQ4 z95i$V$N7~b5d<&4bMmO|JEn$!d7t!&55kpwIt6ZKyQ`PWZaK=bk;{9tNmIDODq4rI^feyh<>!WKv5b(4|O}v(;ig7w*yrQ2nY`VtM3&kzYFO;&2JSi z0R9qG2{qwCZ#G2V&tA{(tTLklPbOLU-45iw6_9?Y6ie=Yd`_CV$bDQ@`bDyGRp zN)o83*ql+qc~I-dFpq9gMSg;M=@SdLLj0es$A2tr!5-9p!(MTXodR+OL^(@*OY4I~ zqWaud-R7twd7<$pE-LuF-VZkP^Vs@Vvahy4i+a$iO8W>5E%|f5f>WilR zWtsi2QHvDLg4#AxggouQ1DfH;Lw9ta3I;{$eF@ls2Db1%)Z+g)GB}aK|LhzSHmH|N z(0WFts-Xr|C%nB&>l+MdUWn`AafSY_m%vU6>Lj2qP$i%PN(zv9yDCX$0xi5Uek~#t zV`r%NQ-xcD>Ax-MGxV(`Ni9QONYse8M$+ne4)l~$)5kA`RbvIJS7-InjSTWD|J}>C z57Nx)v(I)*qX7#=mQaV*w*tsiDNU8GM@f-ULPmp9Pc04mcMC=M9rUMi2S*G4T6)nw z&|Kgmn*ot4Nj%8R1w;h=Rxd)b1+vX^vWd|LP#X`5*$3G?p|$6!Lt7P%FoFiH=ia#I ze7`Me1k%PB>Cb*HrVTQvM9G4L*hZoSBjkQ#m8c@gp*E4TGAc0K0^fnZwPb@;BMS|d z?0dKSSY1@mq&yJa`<Xfz|gn!g>E?ha(7TahlLgprFNeYAwV0L@&w!1k^-X5R!kf z5PoZ;{^t)OX`l&?{hgogw*&u#43_T5QZU+;M$KDb&m;~XC2Vkz&PSO+V09bC*d6|^ zO%s>a7pmigrua}kr$4SQ$uf^>#R#z5y?8(AU%l&=-zXIQx*>J7s#fOz+*lc~BoV=wM#Du&fT{T!q9+V}1n{6gpRE4lGoec6Cs*Nj z^Bo4AZraQ`qc;;ki#E@uN>>S>Et6o|{m@F1Oc_)T=aWVtbdvo0RT%6Fsw8nm{rt9y zFZlkaTXAa9!uLVfpx!170}b+rG?yZyO8?T9zc#i8Sbz=%QB%lln>K9muS-HtRC>5o zAqX7M0g+?w(JH|oa<+f{_P^fIp#e40r5WOv6^ATACJPc#ObE2PLs$hBQW01vq5h(@ zBKiHUU<7^NNLL|E&JJqOTWp6YVM}NPD^be5K)(Rv7o2|kHys4J4><<(jNxmeQb#DR z<>-0-?FTw^3_^EgcVnP}wSvM!7sA?q0bBmIpTxO9-6<|FN}N7HXT`6JJ=#)akbYl) z^czU|LaomACCn-2+#rNz$lUc>KKAz-a#HLXvjk}0<0-~-$0^RICVL>gXvN8 z&IOU5xAA(?u=%JKMMcXj2N<-njWb?ki^Sz9*MCoq7BXux9_wuTpV|IjmIJ*4C^Xir z=l@~vt)r^!`gMO=Qo5u|x&%eKm68&W?l1u9?i5kF5fG$7I;A@W=}u{ohDGz6H_v|G zz2Enoy`OW&`2Bgt@Q*ck9=O+rntt@M?ev#a=xrK z)N5ZAv_zi8-PUOy5;sYFB&gB0Gw-7zZY>n-Wg(8oVeB%#-<{_loaNLbFub%&oF#RG zXEfez{I}Q7gDy7uwO4=+f|o{m1x_~p=OdOrq6)hH!`qQ{r9OB0pzimKUJ>u)UPUEk zSx49NA8Kc0*qBO35Y%G6yJh$i*>rmK5Wo^59-Qw*#BafJ{!eg2AK;*c(kyL=&mjoS zKtVgof58ngLkqjPTeVC=D^DXo&NQT#_8?@vEsBsqHUo$fTQUl7Gs@Sh zZax-HT?X%5SVTK~pHreNJS>?W6#chBNQ`bi_}yi8dHTmoNyK8{3v|9`23iu}67G0E zUsLl`tI9HQXSVj`>CV)*Lw%qQQO#Fl2GZiNm7eIX_vb4+^)^d>J2TZvfILGFq=_-0 zFVh1g;hexv7lTg7B6D+fE}4JR9Z6T_xUHcMVW%?z`^N6);|Uqio5=#&bege_{(pH} zIBdQv=%LHMf3HGR>2oL=tc5b}T!#7u8vS#C@l0UiW(=2iD4LC8b>83mf`)crC$N^e z^7EB)S=OTS>Q3T_-OUw$k3mVq$^DeaOhqnfW9tz-0DHJ+-Gf_{KugiRvEK$Vk9)-U0wN-D|7W*=u?Ps-B3Jf6w zaq`R2%MwMnv>ELfXi)^t;u(15a%yTZrhQ3z8Fso6Y+B#wIk*+8_GYPHrLeMpqe>9io1|C_X{jzIOtC5hfEJ78VC8l`fgc<&ja2$o4`xLT8_@ zFZY_>M&yC7kOu2)ae8mMQXUXaRvSANyMDcC6yYRcs@wgs?eL^)b?s;JDnK^rU+$B3 zSUj#>JJ#A)w*XPuqv!gz9fXZ#GE574?hK&bADgdUkiRlHsi{?Mogy4M@dO18@Q>(_ z(FyjayO92Id-LsP*q^dU>j7a;{%;L;XKS;-WEie@weMO#Rua8dd-x)W9*32mv={ig z^#LF|8r19n#3dr$z)MRQ5eRqRfD&3P(4*)9cF;O&sGO+lVdnAngc4*sN;?PfNVIxC z93p}DbjpHq_g@}5zBW*WNls2Kij&xj4j_0Vfdi=qJ5*#4`Y^_I_qt*()IpU$;;q0<%_8Ectegt?MJ&?y6-DVWvg><)_TL($yVwD%U2ivB+vFB zqZ3B%$h^DRtRZWRr5HFVTE+IE?Qtn-~XBX4MHHf(#6IS;vA`?Vyuy5arUumqjOlQ6FS@I@X;56a+f!=vzVUimkrE3>IAGsqh|)p9P-sXn|A2%G^J%S>=N-xB+>TX29kQe>BA-bkL4}2qI3?LN;Vm)L(u1l!=-!X;*jle*u&@tk7R{2FXrF@ zxcn{UGoYb$!qH-n?RE6B_h#?*MhTLZs8FQt$;B|y0Lj~lOHf<+44{g|GSY=35c5&z zb_)71hxx^4^v1GcAU!`t!`*9urOvvprzole%>94ep0?8B0N-CmhCU}OZdJ5+-&IJc zeA!hv0j(vJh&>9h#?A`+8iA3O((eGyY9sA&+O6Y{+MV(5$w@Yb*|x&=_^9fd6)sC` zS{FZW&jV1z6|24IG7XpHqwNp$68Uc^rYgo^Bnq2lgqfb<@IYg|pQ^e%kQSf!ZT=YN z-W1vCD2C@s5Sg&>!p+s(`r*$j($m6SE7VT{FiMv5Lt=*<+dw4MWT-ORczO6z>&KbB z<40gT-oDjmF3%3T|G{`aHxd3Qfwb{v$3*Mk+g|CBz)7+kqWr#v_S?!1A(V;#INT<_ zsyzAf4A0=~(+Z0r1Ut%5X04|_I9ShAZLC{4KNQX~9Pq=l0I;J*?T@MLeYeYhT6#%4*JUSgJ&LZ-2MUHxm-3tl?!f5h+4^1K~of>n)t;lz=dwc=m- zd(b!YVC$2oNC}wZVrn)V4G8LE?}PiVxmG}ZvjsX0(5As$eV?KtzEBLZdC-W`1QvSc z47vshHIE=l)Y06Fuo9VSw1s%1wjeYV!t2C_Z_AO-DbezNw;IgNKL5w|9VY=`lajcM z{P0MUv#3jgzM>#dpx#z4qDW8*^TYY0kO=uKks5;7TFQB9l`eo4VR6wP3rZXXQvR`I zBhK}o$vM+mtQ!kWO?dq4y^cMOLaBm750A8NK-^^%h+5e+ep~B(>lLmwLPG8v%)k@y zKxzm;V~9~dR{R8EVqh}n@coB{@*nfx6c?I5i{*o6lR8B=jtbK|Q{_3jpa9%EBG@jq z5gyoZu~l$5X%dcXNmk!CBfK_)Vbq#`x*q~V{qurqu+MqUF~0YH3$E0KVvw_MLD7%i zH^d{4n0=K4qy?W8$IH^)V^Q7bJzo5+)HjyZ*W1!?+xtVksXL9;OZk#TtwC$rX?OME z1?;_O&un;S?jJkC0!aNVKYta7bdvt*^ug%j65~qhC6#UbQFT;I4AV#_X6*OdLXD~2 znmzG6wLe6CI;xaYh9OjO9{jJeBsWGa&P;paeiEkcFE)Ccjebqt^~4q)5?`F#P}pHU zKd<97{gcL#PF>Ggx$~>d0KX<2Ni{}H8#OeHe44ZArb1Igd)}|&9G{5&+^z9y|Br?0 zVbXS{HQg)k7>=BHEjHW56T+)-rOkRx4!wHi#=0}l@0wZJvku!Ss`XOLQ&n#o*lw5J zRp0x@QC!c=AQxv#{Ni&}4eL5OnyDe!Fftr1S0!HheChL+vs>xOep`02AX$c?fm%Tx zrSxN-OY<#}bD;UfpA~e{^7LZ*_AXfsR(cY0>W;M1!<1e|p5&~e64cMd22EaK)p;N~ z!J%n(Qt4>~F{QTzuDjl;mA5}BU@ppC83*}%L^6ux+*5qYSD$HA-Yu}>hD0K zfZxb-ra-Hf7Tw|w-g{0XU+16=&m_ z1j>B}$1P)HpWn9KIHl z?9<*4vM33bhSNUqh$}$Fq9*G*ZDIFrC?oJeJ@@wVUB1dc4~YTtprtxw63!d%d3jo} z0q>IfIPjpfw6s^}>4o3Rd~bK44jRr^XFVae-g`M$WBY9ee+cYy=v~=tkv}8((LieE z13x9xJO&n@6Oyw=0(Ono-#F!r4eLZ}nB>=`rh~g5t-0#=j_hVXZm6{4(K&cIet4_` zi+Tmr1rPYYCIfYWLQ&n)v(?J(Z>m&eI=5Qi>IsdUuYwAq* z;90eFQT6VL)=3eV3mh(8J9gGo&!xudQ(pNJu-Nq+;T`^xp{_*LRRodjOV>yl8DIsw zri6(a4Shn}>&-s#mQA^M!GN7E75(RJ_93Gg3wJk#m4(t(szjmA zRpz>M2ATT0d4?PU=D9fKnSm?%2z}^)*v~p)ZcWFZyq9S@XeHbqz{Dcqn;9UL_p&}v z$X=4MCs8=3{b9RY)5#!s@+337bBfnQYt0BK4~gQ*7MlbOFSr;^Z)QqMW8)0VNy84` z>s>)?U!P82n^z!qel(d<9u;FBZ@F)W^Wmw7Q#xuZm*eJeM+%ldR)RQ|Zxpk>SP*bq z^nlH*x_(Ww6jL^Y3HoK4;AjcUjaKE<-|f_5O?PASBSF{q@Bpe)&&*cdv+4KQIi`B% z4L9T9|LN9Ic9vIw82S677|dGM1@V^(#WVWI+JcA*nF)Lyh#>ebq1)#{{ro@zaw zAx{(S58(SrnbdmY%6-(@H&m!q-cJwvAqr~%Ev_1?+ zdj4iQqJRh$m2vE0X@6o&k0;9aVTg=v*HB+sqYeW64apMi*ebgK(V86)+Bq&X!zkC` zOX*tmGxYZ1P(njPUpC#l3j$)84F;CWqSm>^%eB6JLBBo30a6V>{c|+v^x?bPdC*4s zFh>CW>Z8C-m!dPkCL3dJkzbmvEz(N3sTW(;5?fdYm-TW5is*)j#YBodB9aK79Qpw2 zw)f8?X{GBAf!}m!4yCSpn)Rpy>BH!OJ2DUBgT-n%d`iPLcRx9sGyer_q3Xq26qt(( z0ak~4qhzcCRCw}r5Em1zYokMvP^4X11rCm}OSpObB^pGc9iAUWoU_jGT~N#d*Q?O8cxXTM1q~={ zTZK!^j>hvdKtEp|(5>oOI#&9IzUk4J0NPUVCvo~k{oqECN<(sbn=BcQP>pUnRm)Gud34 z+8fCGm_K260-qGP{(_9v`}&6(0~YC?Ti0Wl;P=5a5k-ybLw`J0$I{lgM9h2!dl+*phasujQYZea|&fmZ6~{6fLj+zemene#=yg9}f-qcdW$5Xfd8 zrMBS@l=l4b!>j4bKwDbLYnilxIOk##*Q-1Z)yhsQ#STfi%ggZ9NAEjb)U#oWrCamH z#c)Q$#=x$lYS!CB0efP%r??3oLTlh5WOMfrLa07J_To>bYNdTA_C(5AT6TQVYJknv z%&;=V&Wh$0`@=SC*!J%SI-{(3Ezx#&*^X-7ZVLdbNZg zoENZJ`|!jS{a{uNMqA$joNkQpUDV-o&p;(G9~0d2B!VN~*i0nRJ-^Q|>av*?->;{? z9ZAjRm)kcmVaas5t+i-VBzHMlbsTq z1XTR;f4Nc7{#dusqxSL_A&XiBDUW%L=4MEU5S29N)ZTX&3aoIJU)}-@4W`###2q7KzA^4$U_`DqlJlmU=ish7yLMg2NW` z8~BbBH>7}kG*t+UhMyuIJN=)@(r=4Yvz~2MHLjczT2_h+@cs0DjN!oaDQ|J4xqOp( zuTa>@=8l&?oB+wxFew+n`5?ao6+h?~3YY!Y43Mp}>#J2ca(b^-e%63{|DE?PP=7YX z5I?K?MXoOP0V!NUyZ$5Z2XPhR0AU=>%fqM-_0u?I@Kynd>ps3jU+!V1ent@HqoqQU zBk30J;!gcpW-%CM`j_tT(IX*=!grt;^ko+4TWEy8F|O;uHOT|gnHmj? zBiS)t6IM;NO_`=+^qn}KDdZGXe4^!>o`PDi$}&QAVxBt14eNHQ6(UB#1ZvY{l@Nfze|rk zA|2|2_4iG=DM}KeV^M~3iIG-lX>rm&l>M0j>tj_%`Jj0}{4{Nj^?F>0l{+U~HqKJR zZwWybBUHreD#{t(pbK673zz4GgZLTZh{sRLPE0P$og~C+7n;&gZx6IY8%+1$CQc*V zLxD;xo&xUV`;>;jmKq?QF#cV5tj<_MT4ML7k+^;_wN0kZ5n-K6Q4EHVX}?x6&1BLVoGZUl$ryMpP%`p9{G{H77ayRj;9SH}N zZ-k?+>rsy`a8(4}i7RgIR*uUW8!1okYAh9uj`98KKAv8+wVtEQ@tiP#MBm)sv!{}Z zNr*ru6L84gnyI$f9nFhAMF0G&XXDnO)Hu-1smtC8xUW_Yy1wH)B5shL>9Z3Ag#l?z zq{v^n;=+U_53031UD;1)4HUdTs=OAotpq?yYKn-fz4LhAQ5ZDV#PsG zE_-8u^zH5>8$QQJBr2;h6%B0~WSI5>{$y-Nv4(#0*8FV=$d(<{Zy5Z;r*B={S~_=Y zBcJEk00<21q%u<1{eR#Gn z@q5%d{KGwUy;ABbj z+WP2R_;SezX&KQVPNS9f^0Cw|`veewqBIE9Y>TPI)pTd<=l8f}j|M3<6fNe#I z48`b$|L+z-Tq)O@;?`{(^Su^ok972EliPsC7VyA_aEu^MRRS15v1O zY#o*K%SRS*U*V(kDKZ8T)1DmwV(~0Hqi1LYC`wM6tYCm7O~{(z!2wAinu(#B27aef zOx{b~R6a+lFAe&~iN?dkn5m&$d8}$}nJNly(xS}u?Z3}wH>dR72~S>$)|1i%B)xR? zUajFYxm%BT1+O@wm2!SaTmec{;x=nG#a*VRE3LjMkjyKM-I~VFKXN~GXQ@xT_F*WhRn)HXRtYq1 zYy2MPV!V~hr(Ok4n=gx)b>{V@tduAoPxjVn%W0>_3p8EC-GTk&@IN>h4ehadMFiSs zp9%i~Y4KTq?1i%wrqI2Pj2MwZikmj@W<^Xx&~MA6g523`zs@OJggWW127OeYt5f~K zzWcFO0wEESTlLg;f47*3FF)5!|FvI|#^-LtOyZbDuPyPZJrjvPspNT7S-U&Ms)R&L zMNL(~)!s$i+l36tw7v@O`N)9wr-Ud!_2F7GUZaL;d%Ry*t+a9)-AHK+keCb?9|znP zT?=)27fxGrjIV;p4(9a{%`fsB?mHZx9k!Yfe>}q{0?IfUA`abL?3}m+$ItM{F0owF ztdq44o2rBy&xvIKtRvbv2lTR7_PCsA?we1wtQK<0_x$jnpc{3lPq3b;dLeSPF9|UB zqrUILw|(LjF6HxzaopX$%2c-yP)~_+8kz+uN|FLQc_LcdVidm)?i-hbj&&6sP&Tr` z!gaEN?auumrR3R-+&G>K?1~4elQn%$zl$XV>_t|AIfI6VCdXv#M#0lYN*h4d8ki8I zOt)|M^>Zuj3tGE)C!@&gy4UxQ8$rKlm(+HRRJ_FBn+sKt8_vkf98~<)541WIUSkq9 z?iFxlThEEdOEObCJz&wjJrJ7(zZET=$9 zO31SO7`5*OuN23nfKs!SU(lZ)%SFMH_UgMfgFt`&`3#&&^!e4Y%A^ru6Z2mbsz$6m z=@JyI2Q~L%DLy^|K~6y4Dh$t#fPh-pRRc`slE7&zX@8OQ>9mW=8`VqD(5=-+Pt%n6 z8tf!-2Hq#UCAfvEIX+a-MzAxCl99*4qwuYNwUR;hrL<1v+tvG6JFLYo1un*hn(nvJ zmw~XaF;=pR8ys3qGAV`bU>MwSgGsATDh|4lMY;J;2MrEcF(6HDq5H+#$1^k}d5?T^ z%<3v(R=p_?J$NmlMULFqm3c^lJ|(A?f!wEtiDYT!qRAWJv&qv#^UV_N2(v5$ds$d| zvK_sd!zCwGDkjy3zc0v$=Vt%ZxTq-QNXJ2v#JSHurNAmQBKqzoV)<2kTv0K$b8jnP zUE3l=g81lMUKeJ+*a|84%H4bm&*w#vlP?*~RuA{gj)KPC8o>AYPlkHV$C1ZTcc*o9 zeu+x=taCAC)?Jay^LWYr4$o0>73?rk)39iv>_j>;|_0|R}}<8zjth$O0f z-yu&6Shvo0U0?d|I*JCu5Ov-q%Z!zZ0O_;}-Q}XLiH}pY-;NBQl@RGuV^O|d{0^Uv zsNf5CYP9wM#rBW6cTcky>gQj~f$%z)g=hx)F2@*=MGLZE(`n=K)#r5wZ~d(RNx zS%8CRsF6O0BY?G@i={8MxJ+z*TfaEDfzYc(l- zRchyOlJ?(scL1iqf(2?+?E@W?)8J;-M-NdGhyabJH|U5=BU1+VsN^paJ?Gt`^W0BY zxP2XzPe)=DsYkHoXcLU2fF5Wl<4%$Sx@(dgxX0M7eaxx1w&9N(#J<6`_Ww>TT)^g9 z;t`m>^(p@Cn~*>Q6=5C)^83IW4aB~Rjd6J=u^WfwUDtpTTU8%hu|57OP}bh>^a%8l zn|Mm?t~QLcs<()pi2`1^@5m0WBf%6+R>N22SIQHM&_2o(-73r1uHQT#6?|B=gtmI5 z6}sjx8_2l56+7xNZe^B7%06LTZ`2g z(h(CvsmvrTA|qVX8G;%84h@vDtr^4y9z$*AVf7S2Bu}rSmLIZl$e*L$%lk z5sW=xL+39-`jX&Yv3AqdVJKd)u`+@ah`y}_t>4if_r3i;+k^v3T>rlB7Th=$rdYE* zr5Bdk>Ads1Jm-1;)zO>6)3?`76p{&M@`7g;WI1HksVbbH;ezwA za1;({o+z({>|C(16hUWnA;hI~DbcjwwN%UAnDiT5ri!a6!_+rHM#@NQdsDB>O0I{x z{B!O?y&K%V&Uy?~5gtvqyZ1p&Vz(mQ+IpdJS3<)(qoFC>UtB98rG$TSt>$wMyeJDd zW#2>hfil(HJ%p!?H!skt*ac?YOU@I+A&vkZICk-R%_1c}aRiWgm8L1t+|8w%Y{~S* zXs(kRG5G*ZNh%ynn86iMz`JbJSXjFavw6Q=3(zl&yXGhn^E)mlARI__#X}e?Yo=0e zMzeuT*lhYwoD58(Aq1`dJp4zVJId9;>G3F^tLmc&U^PC(*Z`n`fDvc2 zHA9S%oQjHZ57R|upuJOuVOwyb7hQ5=(1z2s&YRCUPJi54)Z14+n(;U+oDJJp=ldSr z&QF*{4RU~6)5xRIs;6Tuym;Mru-vs+s}oz{>Mq(+DM{J55+?b$!r@YFgS=OTrTL!! zCkQKto`T5dx>8P~BJN1&)OV9rl#F zvlu1vm8D^`;lLOEuvA`$QW*dk;ek2K?D(HMr8c5Ssg`lf#jS97qJ=7RN{Q_ALjD~F z4jyp7(HyOQZ$KC%x$e1B+J&TFWq3M>frOPX^&x^h+vpcYn$d_O=jpd2JkI(v%Xd71 zG6L*hvh?-|Eh%vJu_y%8Y6+h7Wmc7R3&j;XdT<~*o~mlDgzB$kC%0w*`kGtF+v87j zhJ$c0IF}3Gmfx{AjTzt2<`4SC5$zx9)N}#*v`3c;M90E;(6SpSzdn%~_oY2WAiOxs zm9p`W>&`KF$8=lSK1a6-2@fZBah?Q%oVQ8$sSx4MKrCFrFivYfrfoLfXHf`{rN2=j zhDKwN|EhTRI%-cLMt2OyPD+7H-_=ry`%%CH@%o zP}LbucL?28H}p|AZtfjX=Fd<9q+4(BA&238xowk6oz^3+`gaMf8Q{Dm15lt8p~#mU zKCP!-C|&5Er3{w*Ke6fFWw)Y%HQ+g|K+5M-pJ5K8&r#`YZ?BOYo4Jg2r1X}zr_Cug zIb(glI|Hnq?tVV}zWx1eC;hV2nnpvZDLSUJB_im<4cI~~C&^X&2toVisP-sz4ZDbk zhDSLKhff*ED~00g-Bk?tmHY0i7APX-SngJUo^WK|H{HDqnDC^+u6s$Xds=OVWD+5h znv`3^V|}Oh3v9m^HVeusymrm<)aC>$sGY(djJ~|Td-9Ye$MGBO>QKr<{Sazk^3<+RG>Bj#I|xcB%5+mxn$u zAi2m0JKqUOujtT^o1u@0ylb=-T(&FpnW)@EN3mZ-O+;p%(KG9oB-Cr!XAt83VUf3@ zFSEJKd1Uo_1}}vt9P@{3R1CXaL%YF;XzVJ?XtNm+=a7$V&NqrdD*^WVnlV3GY01gv zDYy_xS}{h(iw!tG6k9$(qTGlXMtOff!PPQpL}5i)&_-z7LpoT9R$C`kiMG=BZ;+YzJF&QGNHDy_5?*h{(l zq}`FfqxzmR8mR!4VwPH->O~BBJgQFMzS;Cn(W0Z>9NR9;7s2xJc~pf8FaM+38rvrrcgE#Z1#e{mj+v;|>EA@LkX> z0#rE_kSbyd0^D~mJiZ%JdjcjB%gX(MdoUI&)IR^J?R~-hWBB*ad<$O>WxzL)`ED)V zseWXbA@Y=s&@60m3@h6k5ujGtu!Z)0gcyK#^wyTM+MG zMRq9&vo%<||HxDu;O256*D%D{8sb}&r_P)~*`q)eHNQbInoA=gGDB>@Fnpv3kSjl| z{z5_EL-mHxMm;vfi`vwoN}C1!bzslS(yMb~AssxrIG;-$d~?~K$fFAEe3kOBaDi3H z2N(8>L->OoKZ?6jiI;|x_?$yH{XBQ8CR+Y{x?5d9deK`L!jUdkXI(5``*B_cOYHSw zw{Mx}ksGu24$CIDO$?h(z4G|&Niyg~2UY-$1fvvc6tzOW>d}*?bLEyBVL`M04jj49 z$-)fIv+H&^hQ%K96{Uw0#qtam4jh}e^9}%R{h|IksSiUFF+l0v${%D*8dQV5WxN+- z^$kTr(^b(8+Sbux`8c5ZfZLcBM<>z~%~xzUu!LlEIyzLgyBDjmpi*({ZV~m8D7->M zPp9Aydh9!y(aok(jtO z^lGwiDv&mJ#FDHES3h01)^3XmiDX|H|C6*|399v5+}=L&?)%w)x)D{L0|mm|6sQ3@ zXVDaXjmAkMv;w`4;|Ct%WS7UAzgMMALE-%ELr_P+PLs@m_n6De2{##NE%nxSKz&#v z7HmOph5Azk^r6o|e2hcX1F1IoYW|IYl)TN-?i<&x&?`{jh^cd>cqYa7>xOn06e4mM z`ggHAJkUaS7I<7@B_6cq0AeqXVONngB0x1uU1*`;5hcPDQT_I(O32y+y*m=N01AP`)BKb`6bSfXT%D0#g(oRv>ksF3(bu43Ifq0-Nt0A={#+HZ5< z>DBm>V90)wlS*Ol>uX;_qNZ39%!%~5W0AYs88!Re!JwhyWN%?Xm|JY&o~;rUNWNSc z;lAg;^ac;%y-RbOC&eJ10B>SL6qw<)lBG+Dn8vS13Mg7L#B)s_q>6%WB9lw1?^8lV znrS))q>`u3n7nO3=}ZTOLuhv$QM6X@2SzHB7K(ztnYvY%6W99pKHEFA`(}!dsF4a- zfl0C@dkAa7WU0T81^tVjb1t0=aBwI#j)+IY7)ko_0p5fDnVDOGzuQ#V0h z|LOJuu)e;yfpTY3-E~niOmPl-xxnYta%Hb}{#e;!Z~H)g)mfvJd@?!u{>ZBrPEH{~IN4b1M%A8m z&fS{Zg*mHbsTt7jXkS2pdiXPbY*PXbi6$cYvqyOjxv+Uv;Wf^8ZD+u^Y$eO$?gL=++3i!!<7w{uyWW8nqg$iw*QYwcI!>W9u(q-MD{%eS=n zZCv6_e@1qAvld<~mNLDvgijoMC{dLoESXec9Kb!?_z_vWCgaqg1l(#3|&I zF7s6jzlHMNdH;QGOG(Q^pjS6}+|kc`MTnACDV|ICdc1nzoq=%)66agDH3zwIGf@q$ z87Fa46xaPhYapRiU8d#n1oH%eCX!j#o+Vt|yUv0x0L_1bF5&tpBT$+oSE8HO`xLCI z{KO~mFEvfQi2AF&A{ z6aL>}!q&bbr{-}j!fk`vJYHu3)(n+U!P0zQS{}{3Z^S48Di)xG%lm{3=((f^yrP>m zSxP~Lt!HM^Gi(J|@RLZqTdtN|s5=0#a1gt&Zo;nC^)>jWVfZKS-a1L*t3U=N}2?_JU`Y5ck1AFZ(V}B=-Gs-O(JGFP_98Dq*{Xf==XcA zKU-`IXM`bk5f0!6h*H0Ye?rurXPV&G=& z8noE|IX_xg*Kmm$zwZ9Q7Pl7A5AK9arP;L$x_rnAiW%uZPBWI13-FP<9p;|8gStq5 zghVNVmudAw*Rset5@X3(FLGYZ?)fAokiIPhXs|2@4R-XS$#iOg`@9N|Jf7YqR(l#G_g3#V@$iOvs>=5J^o}_i#mCs1XM12RsK$!X zV}w%ox?f9Az?yUedk_>nH(l$(F1 z{*?Fz4DGA=;0RE(1MSgMh;|z&*!p9x8HddXh(06)ZBm~aSOG2f>He`4=nl7;$>9T% zSnGkp5>9=Q5!YFMK~WT_MdT}Ulhg#xIgGr>_m{KMz4Bjp?C#PEvaxepjCrWW+xQi! zL3)GPClYQ63iN-ch}liZH{E#h1WKN9NN@$)w=JR|MM7zzv8=E11#B1EuEX!TM3EBI z1Rxkn1c#@sf8CDf3;ZcfJNIc@v=PY0iGf4Spmxb(~A5^3< z3}Oyo0BNSCY~Ay#g5)IbmGjT|U3gpBc0eVrr}Hxz@{*fEfyVcwi|Zjo7B{Nhb&}li zWxD=~P9EZEbk1jxF7XmK6{GUG3c1p4(WcuSa@O~gLUS5G@KOvws}FRln8{l`DViwG z=30b3z;oGe-HV+~dS1x&5b5}i&If=p$F6^6mpDQ7J7uTdm2lJL;38#CsArA0r&g@5 zcS2#D!SV2>bqD`(*Jm=uXhtQCO9vUZN~0?@21s3Yvz=-Rhl?*XLgyh=|9SbG^qPI& z5FOH}sd-1*G8LKILAzz2&EE%m-6--xa0U9?)_MN`h82E5Bb&HkzU4Fda!4C+t!F^R z(NWCt{q(cj5d**523%Cu&^Ie2{h$o{RSjeR*gm4ZW#poe2-hRRlHSh|_2+uD4SyZm z=G9g!?$K8oT~FO%kWZ7QrN}6)X0)L0l^sb0Jw%^w{*mFZ54%Wq7qFaS!i4pf?w@ei()*6mElB1^nM&?QS|;J^%E8o?HYhj*6gF4sEhe4nyVm7EN~Y1ZB`;j~zImb|Z!v!K#{yuj|ieP$20a3klKtvbt3+oX?3yi+k1T%V1)uj)3wjCwqcN5oGOAgu)wT5i>?IhAy0 z^zk_9yT3l>?Ac1`V~{_Eqxr=#Zn251##HgT&t&L}8V(VE2u{TrVk*m`(-?06)jlj^ zX$2mQlOkagZUm9+$G|6gHoL>!%sJ=nqe{*{`j#cPP}+FY&4s+a`_HVT3A5Jk1>hk6 z<6}fz_KaRRwRx|h^1Vx%m=;T?k^T~KmzIux$q}5ldEgB8_F@E~RI~23!Q*svp(Nu@;nwBKf z2XS~8y>e{4-_>v#!$2^UBt5%rjv5Ghtgay&v!vf+mBV@LR%A}Dn+>^y()p)Ae0%H$ z8io03i;YX+>+!^lHdMcu7&h0pTlm2mMWQX9A6m}= zkCG|4$08xdu*sk;6!#(3SguN&p0Jkz7d!$)ENf0_(MJ1=y0>;vdk06LhB{ehT%`_M znVVsrOn0=hxu%dSE}s6x=#uVZO>Iy&V%TtqJ-#JQXJ7DMKtD2d(Rq$`oVN%=q*Ofl zT6mjO!^eXQNs>6$*=&c<`w9l5I7Lrd)qYqazcIzSX|s=*gA@-7{b|hG8nyKniI?xo z>Z!&&OA-lcGinmq%%AdrEyttcN(p9meXhR4rw-lU*o4T1f9=S!dJI>Bz(OD8i(-TL z-i$$!xRKHvq0{(cRY}UXQ}gKGodTZ=fI2}X8U!z^BNVXdolM^%aL0PUeg`kp`{1o{ zb@rL^s+h{fGgue;EF`z>yYrRp3T`VdL0f6BiwwY|DI818YmYU)oza( zsG)2w8he=jtKWv}LGW%#umw7%L~_tT8r11lIMjSzZ-yz7klnCP{gZ>BM+S6UU=&~W zfRzb63|HIozx_-Re1-KkS#ao0m2n3;wvxysm9-v;0`>%8c+)nxouL1CijqeCm09!G zD&;YFo~UuQw5a)LJ!N{=m^m%V3EH5Jw1p@_bcsRA4{(g$gc1PR#J)nXnS@R>E1SgR z!vNci5*Y(mj%Z1^^0=k@WH8PEsnD=6MMX!EzU*ULt`d)xZd~64^zw~=(9XI%JMy?U zT-ur;_g$9D!7_q)wkxL{OWR*CVi_c^T==0UH%s%FH1|`taVV!adL0DbI}}k0ILHK+ zvwlf#MoKEDiQ2U@W>TB{%DD1O4cRiWo-n<^D%j8JRT^yq1Z%hA0Jo9rG zkSfiM{!0XeL+%^n^$g~yc6ADwqOS)QQ`%&kw+aehy4CC<^ju@vzr}#Wf{&czR;o2#36&?FNBL>(?@$*R8-3VE*afMqIkkf5mn zbZ1s$7)W|k>8A0J3CrX7Pps4WKpqLd>rSrvX~0T(I|ecaab+WGW7nF8hUt#j2Q?QJ z0jn|66xQ%VUVjENygqK|my%&2Qml+C6eaYdIDw*D`lXwB|XYRvb8cl6KoClLJ| zMUS7b{sHQ@JiQ{{ozHU|?%3Axxt1#P=j5t|UJhmlw+wQ!wfddHyWdx;i0$zh0hzGY z&dgn-@-vwQxLXOClSqE>8@L1sw3?2K+kOe8D7F~w7&i)oK|Dun+7&Wb`_qB6q(J^T zHJ?yxq|H?>!38&;t3p?vVCYokxu##^NJB7_lZJ9L>%!YywM5X`7bk7CeB=va0Q%eq zSZwfer}}<>;hv%R^Z4hDD|jIFlV1M#viXGK4cKJZ;my$~@;7>OJ% zVGZ^R*Y_Lj2fifo+l$!mYMD14U8c*hE^N}-4sU);wVNQc!tY;xs3`X3<&F{2N<{^t zZ#M{x&a%?E{Vi^j`9eAQJY^e@zwpl7pGY=&UB@W*FcbK?Bi6{thbZwoL4IJr z9bbvb8OuDeq!$r}J8>N!=SbpgVW`oPEH1!PeequXbE3t5#povDK-6* zcr3zFN`Oy&7&P77lUe`yeg69k9C^@W|ClwtR{IvnUEbhB?(|(JYWDq4tR;iUew0rxwLZt<9;QT8~?-(9G+EmA+^AH;T_@6}1q! z*zeodoW%n_!fFP>E{DWpY`5bL6|=1?5I79^d{&caX)rXI-GhYgYWV-OnEl&}00=Jj zON-lV8iI68zmZRsb%4syKW4%!8GTf`p49)%55L&9Dl4LuX92%$lAKCnoqM&!2 z$zzHJ1{w`|t47agvYxtZ`CQd3v7X;7xR$|IIBFwy{pdCHk?Njpa%4s$Xkp0v+wsZ! zA6CoWSRza0-@|86fZMGR0sHX)d;wL6m0x>kC*|&C54tZ1uhc`(cq|6gh(hq9`5qj$ zPgmk#S+xp8{dW))u?mRDGOhjTlN!m16EmH|?MZvb?D;-brzF+n2Y z)MrcPdw>73kVP$*`jvsFjh{ngV!%(JRCvK#+a+5H#|!1>aYgegH$HJso)R zKMWBRX~|njw4J024G~8aTQE`-#3jl+FtG;L{slI@1P>Uq{}!1;?dt+f)ZhSIZiwPT z^4c`jSPcScu_T4W();E@pJ$YhM(MvHxBRCU9GL#V$JJhOogIZpId6y8OJx^n!3~O| zY!S>wu@&eY@mH}W{)>P7KY#z97oh$OeZ8OgxReH=2%aKM5?O@*fZ+`wMu{mvtLR~J z3gh2noc=L;=%%4-Td{XuWUGU3Dr+om)iu(m8vJnO`>CPT|K>gX^Ud77$oK%>hsvmC z;oCCkE1yy>qsEiLgYLZn;fX+9D*=7r4_^~L{oO|cMlUefc6dupY|s!BX(z6eU_rwl zq+v`UOML+*48gTkH_yKSC;quE{>uv)2IzC(xlle)hbCG6nX3(633z4tZ4n)eH4^lP z#B11+{_YJ?TR~%ORn0j#0D)+BbxGtAm?17u%)^1-kz$t6SU;IbvH1J3zS9(;d|;#9 zg2vkMMJIZW3iKX_f>z%|`gB2KU5aAl`1fNCkv4}$Gz#AwLSucdSw@d1gAR?gM7S$7 z)(l{*b2Agd{_dlJ;Am*9;g-x5ps{|Kl*mYm42`wlGh;$oYAoo7SiH1Kcd2v#)7zqU z1aCe@VAgeX6uS1-;rfuQ7#KF0=tW>2qK<<8CcR$V-w#nX^i^di$1@T`s$=+Ot|TN? z2sOxz`6ZanmjwFbpPmRQCI8(gquvCUloODQ!|{Z!-T1`h^9Y3H8#b>yER<<}2Yz^{ z9a3H7gZGZS^odK00F533XUY0>6@veZ2AUkEY6>#{v1j?` zFaEDDZlH^@Trz&3^X0(9()}8qy<(@hvmpoI~I6B$|Y1LXB7GTf#2BQ z-xK(u^+x`VvPTdadPSX*hxCi!kwDAG@+tH&_;0So9n5Tp`pG5F{@3sC-+qD%ap?l! z%UzVf9iTh_J*9?Or9?JE^~$WjIFQLr9Zwg~I5;Y!{khD0Z)_9%$#TCXbYw$gL#m(ufX^|$giW&FcLtOu{m7A)AmbCRui8(#QlRFTA z&ZG4%Sna_1n2|x(hSGh$;1$b5JRl!*OiJ&*9Ts(DB(EDo_gwRj<4rpn{}b1G^5jQ~ z9A88k6GyV*9pY-3ocF}zYW_dM-ZHA{HtP1KySuxkQ7P%}P+-%bG!l~1EeZ`E(SkcDx_$L>)KM+uOeeOfPXtPktGWlcrE@A!fzQp2(31fa`^2h)AMdr~! zr6cJN@Ce|-9=$%8@-p?QErWig#XFS&p^$daB((%I1?_A}cy_(A^osD}$KCboDUvhK z17N9z(2&6{ffHM~BN&;vOsm>qYiV+daO!5V5#2pT?m02Ea;V9@5@ zvObb!3Oc^bz+4$i@$4@bF%gaD|6R^7rAmSTm)>aVBtlko<$HuHCYcXdpUT2h@Q<#- zacE)@kTFAbtg?NtDmMiqw?xntwL|3q=_-yf97l2T?F_TwpxE zVRJ0~n_uM-5?;5->EeFME?Yy^em<-tPJ$&EynN_DyP@5gi+FR{*HB-jo$ZXTM7t`m zKONH*ES_WJb&4V!^4l|~gb@`NvUaw^q|thusTW@A3j$yg_b1<@%glnZFa`#4S;FK3 zTK+Z@U9TGpTQ8KGm9k}M7_5(x=u`jIcWP5Pz1U{laos|nwc9F9ithT^%EW4=Mk?&7 zJN%Gz9bCX2Jdul)2(g_yfGO5U@t|;_it<4|tDkEkppf(01O}jE3kg9D0e<76!nKp9 zQMc3p9Y>SLuvYc>9Ra6BwaKD#5;qr^0oP{2E0+;-dPN-GfWg#8{YII3I2dpCZ6ukN z39fNzWQZ_7(JeWS{Hd7}EFws~V-ehO4^m(E7ETfY#VZbU!>@V(FT$`Ldj&`bPl2!K z??G>%@+Si3{rY&JLO^hDHm0{M0BDnkgygEYnE17 zSTS-*9_UIC6H~^i9j7$P`8&wm2f%~aZjqC2m_5kCh((n9g#ZJ*qFzYOid%PjZFdG> z3~0ihVdbwjH+wuNZ8sCn;!0_OJe1qm$M!8~oUW4ge))^kj(vMrzlP&=*s!(AYKHYs z{Z1DInxF$;>1Cuv7#7K$ahrg<(RgXhdN7$DJbOeR6Xp?4CC-1#`~gBRivaG`g<|WG z%-x%wgXxb=C%-5Q0v_&TpXfOYj)mh;Ys0LY$B;3=R5^~@xUo-1&zP7EeeHkkmvmZ4 z1dN;_0P3fjA*4gX4Poz`ephC;y=(W=-ntfv<@S5;w`R>1)O~I%V6ozfY1!3A zxzEp23Xw9XabUinm~{2~iOXyXItTlw_0kA*cz|An`0!9-!oK8xQt@`q_g$sxuu(&S z!H|ec+%uF!E`{5myQQQ%rlsLKA+~cDVxBnBqq8FzRwBH+e(hh;E07vu(L4FY<40YkW`uX>`%R_!*4k*`yJy*eiPW2jiYmn5#914

    0q~lG_bdQObdmSEV23X9`1zxU>eM1odhiX6dSm)DkZO?pE}Y0KtP!?Z|=f z{KcS4{h{B#YtWb1x)3+#G5MMES!edfW6B8*YqOf|Hcvn3rhfZe=h5Wn$80! zvIQ8|`oGJ0TkW`DAmVvQ6>A2Mh+FQmg4Oi_I}Sv#^^+geQL8J6qwqiSY{b0JH5uUB zf)U=*adk7J;oW|w6y%m1=$4Z>Zbv)?_`aDGK1^?b0llnsMXqWE4VObw5ZmYT>{|}w zLNds)7j>DjOxj`chXUz<;UU1pv#y^<*%5Q!)fV)g%n|qKE1iWIf4SjXKox?s34xM3|Ta6 z2u${-Z;r7X#|po+WQ-HP2mmWofvvfUT8`^FF~ zIpko*tUIBlFRFznhKz-ptqxQ4f?7>Eh?5`ERyx;9;VkR4<%0 zuO)8MZ(BB}W zgzCfd{AV=FPGQ@h6Fg6ob1J=LmY4LKxLXQVE%k&V*Po;33kAjFkql)%mutOUM|5}W z08~KTpRsz^Fsy;){w>qk2pyS+gA$X9SHD_+^Vpd@v2%6zK}+MDu`HAV}!`t!Y%}rQ>;-G#k*!dtFP6n zf>*VaDha%u4URCp`q(wN3D}nGi-&t-?u;>>CQjJ+#Q0)mdIne z=pIll+sQx0RX3me0~4RUM1%ML^reB#S8^R4ST!DjGiCLiZDYs+JoMj!BvCs9xavDx zH8gMnZMMsr4z&|{Zpap!RQ00S*0!<&NIq)2CyV=eSH8fNxc~b`hsXF3_$9~JkzT&V zF~{GvXoWWE&vc1Wm-O!h_7lASmBKyFOLz->v-oHcZjUr6WL;VE|8?!A6Gj8m7YaVN z{K1D#LH&zEU9R=bIX}PWZJhUVRssCbTC=CSU-a_rE`HGKoJ=H{Bs94C`mG2)Z`Dd& z8Z*KmWzP?lUz2aMjZAKoxT}BKQuW=~>f4n!?2v2w%^MKaO-E%u`XN9U+C7C*Tylj; zl2{0up4Ff&ZE)=N=QX<;bwZX;0D74-xY%FCB4WN|U8m#y!RXYYqtT+CU9tc`;y`z|68ADEZ^)xQ-K-FlE0PP+Z69@RZC)%MJ`J zJLdH(kD((6FEN=oMI63_;qFdq;T$d%{dwMW1pnR3*v}s8MMlZrD}|J^dm`ejpORAK zyjHo_*fU`$5MgsKkDVJu%DLI!ez=}-yEQ*+=5wgybyNZp8w3i!r`HRS0IANm+9^Z_M%P`;U_7JD~^6tHZMtJ5wQdE%Lv;RgZUmld;EAW9Z#`nB&af zfk^H3rUsYAN&})TR&D|ns#vAUx*etl(H9Kl_X2AHlZ`vnJ}?L2>&rct6{B=AeWo~O zj$k%hy^yqm`LR1D4Kfm?*hg^?fb~L5eEI63H8+P%Jelse>vED?5-6+)VfkoS!Pr(* z!Y;CA3B7LcBtxAH$07C~6S)k3$&j;~Yq`)0nDm6mno0H(h0)vQhspus86lR4u<;f0 z_skZk+SizP`&ptPrUI&R#IAKTC1R2l&v1B|u>lS3;USB7h&g_}q@tAp?%veTEZ?h* zBzpRgi4bs88aYar9@x&21*@{ICk0R07|^k4eq_LkrNM=G?&CA2AP9pQaH4>cB%9k! z4GNg|?PhSDz;RrNGzRJIhEv6J#$57)We{w=rtKbd{+<{QmsADTR-$v?(KWdt5FK76xC+DGHOykSieX0v%Mn_e(v#hjvlwxuITmN zlBVf3_U_)6JT^(JNcEvvOL$g1N0MI5=$h$E+pd08%pxH8^Poyet55}tB*wOM`}>wj zOt4(UP0r2n!Dyx3)oWtG?Fmn&xM$|H@M{itjaUAN<%&p9Stayv+{2`myT)$}9Iwh) z%DLkgPpNVdOUPTE=NC~;*D25idY?9EU9KOw+w1nPSIFr6`88xPfL-_3=SN_q;6Y`n zYxLF*ftt(){{)(>H00@iieu#*0kN%~)n-33NDaSx7t}0fm#jS7?4V%#XTHs8XK#iU zTJ)0j+ucEv1Y-^5Q~pSIW7E4iesan0i1V~@GefU6MAFVWUZucBZ|nkKL0z1J4tm!K&@bEnRX?1Y0B0G? znE34DMN6Z~%91}m=EwAk`yDu_3~x&E+I>{)&#Gs8Qv}%5nNQVmG-~JF^f|U7*|}iW zlj5NZiQ0{~$D^^V9~Bjt-EQ9zl9dJK?7k z0Sd8ERWj9vlw^f!KGeX`;VV_yZ|4`G>mn>xElKPzK_Vn1X?3&|kEv_#FgUYiFEg;h(nYk!i>*8B0d5<^6z% zOXpR&%W>Kx5!2q!&8wf81bm~Fx*{&B?KKCGebxGK?=vORQ8{){w^SDQ>t=y9F($3N zkIL+Y-*xpqsFWL6L%;sQ5@IO>_z+hP7`M7-a6Rb?73^r~$gZbP?UhyH(S-Xvgx&F{aUs|sy0TWUq={;`^{8uHMFX^~SM3PCeoLm2vn^szUGU!y+0c`VE znE>_;1u|8~$Rsml+%oo|Y%cTc&j`pEil8DNT(I*yS?&4p781#Ce81u!d?Rk8wtBn# zr_`(?ICyW|R-YqB#A9!AC{-+8i&`T~G&8!~CTxoiWws)}oXzBnHy8{bh|!Y~$hUkx zRTS9-!yF^6~Ge8GHD=~IC z7;A)deklV!5!;;_;PDGexJAZ<>Oh(KE%V7oK~{=K*AVXte8;W2CO&t-v1(u+*%8`% zp7xvUvzg7R^b(iWnR)O|6RX+yeOnMmdrbEcY(d)Vpmdm>yXO5TrNk zA51X3#`1YW^V8J-*1#%YJMGn2}q|(?Ot=^sws zC~QP(EaLkrbT!5r&TPJ`S4W6p!9zD6&GWp%d_U+4Waz=)&{i2j^_H@TM;P!qDK2)W zl|Loe8Jn8Y?5_C8r&@|m1tbe9h^H^#WOOoUf%@<^c7M832}R=MV}wt(J??kcH-t6f z<@O3QEpO6{w3?#a4xjzz!F`THJ}^H zN}X+|OAlB$Q~50;vO|{0e>X(UG;Y7=>jJpU$6CrNzU6-4$Y9M-|l zI7I2IpCk{*c+nPfWKbtgoD#!=fQM25iYswT2g*ZU&mKb!%+6d&$9gIG&txl}jxi)8 za=Xbw=x$b>sn{jIg+j)5)tLa$Hi z{7UYT>k;WT4dUca78s&Cml72@61-;O%jUJ{!z?|UOaZPPJ6yZU@n<6riOZo6zRne#Fa zB!?Me-AV^Kd;mck-)_o0>Z}e!@X(JqH``_It}k@-@h(ABttmE9n%Def!0m~G6gB>! ztK{8h%8O75<<i=b9~1iz6FH&_CD1MZLC)|miJ0dgL; zQTFyUlpR5@{biBH$sUhX!}f#y?6(vVq!Qu|J1uGROV%pOeYPdIz1uKd+Rx91m$3+Y z)na$X3X8W#T2t~Cd%A|gJzdAbD$dB}qqrXbfUOU9iS2gyo!MG1nO|;l`j@w+-nHKH z21F51ozwDZsf{ZH*934Tc`j1rtfDr*(BBaDc|M%V6w9~h)cdm?juNvilhJhe^o!F4 z&2?eBTCBkSY=xXWu9v)=U_)NQ)8;GnPm!XGh?(!(d4^M>=a`nCA;jR39LzWBtD#J8 zHTn-_ovs+ZnXm%h5~Ju2$BbHp?Skj6p6oA`MZJL2k%NXSK@#< zF&O52EuXC5W21k{9}FlRD(&yQXZWhyh$?-5WY(eBt(62E6MmPu#v+do%f*~*ufriN zNmkX}@{r$KD*K@~zFClmfo&+>p!!Y_0g0?*X8wu=}xAwjf4&g|{K^Za zmvs4ics8H<@siI2o$y|6W9Gm*!!Rc*DlGmRJv*~zw*}Bm_WIP3AN%8~6qeuS-FPoQ zCr|wH8wU4|9f1YWEEk9l%QZprjv?_jwfyfV3g~EXIVjt zl!pSUNhALNU`PyjQRQr!2q(Qhr(Tp3lqr*DGRDb@9)L?X&EN=>N(V4~M#L5gEVN8L3mxzdqFLXLrkO zmG;B-rf%t9E*@Vncl{YLhDqe&(i?nzRk>fFy;Dh1>9WHxQ)gW?8(nXwXTs=Cu}D$* zY?fJKFiBWoQTGZ_Uvjp>J?=C0q)Nf)#Y~lbQ?tl4>+AQ`TbQwPmFd-sE?;UL&e|#i zj=0&ioAZsdD@$G#>nrd>mfElYVDWKP3y(mFj_X0-ea=+{N$VCt=nK5_`mmHE_1G%` zKf-C#hxaDIelNF5w=APk4cMM2;9)~GC$0c zu-;D^Z7Wrm9N`wdjtYV!v-OSKOut91+_F%~Mhx^J0fpx+emM7>FyqsC*Rc(uB(U2o zvtS;ogO@u1&S*stojqjJ0p|cnAa|=~6&i+mqT5KHcp zLnz8|3XL!5zIf<=l)~n^-T@^&0iM)x=oS%*s2lHG6G+9ltO8g3&IL+NUAk5mf`TUP{=HLJRqI8nwx3o2ADt&rWd@L5|X;1xo1b)vAukiIU1tI?NK|z?D2=y)+ zRK+<1MbBC>d{`ep+J%LGY#npoeUE z5-kC(Eu9-T7ZICOI&|>U$d>s){4gdBMexp&;?Stt99lo2S&$xZ+H3-CngeTT#gr7b zAwqDtBaszGR&eT9DWzZ}ST->a3VWP?e67=;>b6vAEZCnqB#0B-hs)B!5>WD2{{Z*A z$hm^xPlcg`-k!|xi#<-h-|H2vp5Z=o?gEne+*eHiv$=;P-Gg754u7RoP%8BGtw0h-PCK3%}fdydZ0X zdYj;(B1>{3Q`A$}#JjdB+bEQNZ7Jb43H-N(L?=Vib7702`rvxDtb)J~ z&ln)wE|}%oq2*KBul4rNn%ApDG-C+{qbQ8k>2mNc^WOCA?CyYusfYVNE@cB*pg+j? zSxpFvqCw-UwCK-`n}s?fp#U>$lprPo;?+9@{QtuOKqu1-ym|{^;zL9M*^aOjS2^Em zj7Z+D;hj$ONn5%I$&X+qGe>>raJqe0Wnf_trQ`^XWHXdiFAULdG(-@Y(8HFY3DaF%%%{x;*s` zA6cE*D|0(!I?j#3@@g7(wR(J?yjZ zT=Tw{hNh6PXmZQSl70S#WohKPNr#M*A48Mld9-LpJIO~D81w;LuQeOpBbVS&M#-!s z);v#6p*)O{Sv?GIMfYqLt?4+VMMV)&l${UgfYvC#>(QMwP6yg<(!$~>Hs;UJ5U2#q z3Q0IyrQpCgOT;y)B?{(^HL&W(?s+)x@gfu1z|GDeeH@)mHS9*eK6ZRW^K1r7i*V6h z8hg_f?U2+AUP+rQFU1*sYhZEL@p%sN8+WVjeviiH-<;}{p-j~I_J z#ZMy{O{Y+myoNSl@J1|Cpxnix5s(MShpIJy$VsaMYhEQD(GJ|6e6mnb;1+o+&tRZ; zr!qTB>^8ddC$A4FmM;I`O!H_=a**mbH#lD9mZEL1&2_d@{KX1DJKO){(+uRii-CL` z=9Tcw=khK8Mi+Z5Pe3bDq|0X7GyB@zBn@6h!fvb}=P`fCV7u=sK1g>amF-{quD^7+D zP)avm(r`DN8QqFyN4*KZsFjl;=J`o~K(ogjP5vOw zF!r0@i4$Tt8(uEfYgOJBg_S84oBEZ`kF98_n7N(YbUe!;_B#E`m-6>C@^oszlB2&A zR-Gt%=)JrvJ)o{?na%_D6{NPcF^uIF!ww zL%hC!oo&az#gG?FW*{I6o*#7a7Yf8okS!lZO^LU>bE;etN|N{L}{`_KfzuK%aKkJZahx`SAu>UC|Ndg!fCW` zPMUgJsNgr-wU)3FRkX&uQLJRUI8eLI(1Jqc9NqW-6hyi-nGHwihLHvEcIh|aQMtp}(0=mPaa{i#e_eIP~HH_`FFP>B%(~Q_cDgsrgkm@^w><#}_%XILbAT0c^oCp z5+XL!mRa$-ftB$f+p*`51K|L}&b04qALb;LP`7^Od&Wx1TR5c&uRO8pVtnhf?lq zZyUD_6E1L|6LU2egs{1Z-pyE~Smk!iPKI0mthZxE83P#(B7H-i4I1YUmsJ`YYyGW! zEBG(16o==%f-}WA39)?&(;Q0CxJNj2TckIxwnmmVmhb)S#O!O|{_$Dgo4jKw*NS!z zxT8P%?4^HsaM_?AdQ*i;d-R>92Duc;Qy%%>Dpvisid_@sVlvix2Ufm28R$m-R$9%% z`xP;)uO)o6N7qB+Bh8Ppy$>59_JyiJh+g#ewBYfBxyWz#%^<@D?{-pJvE&IW9LZ#A zMbc=zB?qF*4ulw-ax;83Gf7!btA+w4l}?6_LcD!W{5{!1R+Cb0>+5F2gRUMWK?!54 zpI>gnn``Aq@4OW-5>(fU-nnFJ2$OT}=d+C+iO(&=jAx1(1d{alp} zmR~tiAiSi2882REWH(CP9_x4|-7tVUldcUBxMv!E+YlxP&8Wc}R9U%Ar(Z9kb~>S- zJ(r2~m<*5NYvIQ<@2w%zj9r95}X}WR5DIwX4$4)XyMEb}V;DfIdv3sKU zg;Eg6AIPu#JI>c@nUSL{!Ci}E z=CF1@;C&M58FJi6euvk`Xj7Mr-ZGWuRZ$l03Bp$f9vfgDdqFPswQ?=e=%^Scut#~ZB+$aCd)q%;gOH|G^5W<{kP4fmXEm7O7)hFLi|Fvvs8!p9;xu-D zVT}^PWn5T&PCgDI?AnB`rn#KTfuzo4zsnN}t)FImG$-e#;omj&ugJ7kWKH6VvFrRi zS0jS2$y31TKd(~&!iE6$kIv6f>TGgCGeF2ra?Z$)e9w9NPhJ#EoSUCST@9@Kc(wd* zE)=F@o;Kb&Lhoh?0E;4RyoQr)!9$Nyzs9%1*Jc7gXPdbo-~OlhiR_^Bm**u%Z(fjHQPsE;J;!N>799o2Rv*4mrasO)g6rtZrmf?iCizH_O@1i}vMk%CK5&_R{{Q zN#F84@e?tbSvwp9UfqoAHJo?3fs;a24};ry13J|*$v3-+ANcqra@Wa?#^-;CIJSk* z#;c(@>m(#Ognw+2G24=WbaJPQ)h=b)ewID;U1A*IJA$}e0(Tmbm*B@w_WDt}w0&Cc zmYLSTGu;>mCQED(e^*oK$+E|xPzh`Mt2Tkqy|SK^CCoW+YL#n_f(SPqImnaXY(C9E zJhV=(L52@1)Gr}OLBGL(>M&IY{G>@yijg-pB>eO=Q`9I(bmyaUHcs_|WAL`lxZMrO z@WHh}@YxqZ{A7IDlg>QGkouzLlgK5&l5tKt85=$arywq-AXp08k8tH+%X%=VxacVxh?z9B<i1!V>d)q6DuxMU`EOf`o zhePZ<;go>Tev(Y0Qjp&Ed zql}4>mEk($?unMUKxrZ1iE0$ySMQ{krMZ&o{beJdbTtwc!P4ZW*996jgE3R<6_PIE zWyD?T685UnC`*dy={E%*X1vClt2^zZLaR#0A&!(69^W{Aj5>H?b}Klpw45+*{M3Ph zY0vE`nEK4e@0*(y4wlX=S;eg&^2>;QY*MOUnj8w?yrif?Wcx6Yq#zU z!P|T!=RKRoaukT^I%t>jB0KJZbESh}UnkqDK|+&WL#BDT{$zjQ-NSt`_?3zzl8!TC zop0#+^&{HyPjkZvQtqO4W12E324{A@M+<@${&x^LwdiIXj4rEb6{zIypu6Cu)-^#g z%$O6{@$5hy$u?sH5V>6%{fmtnDw}~00-ai9`yO0~GY!}y*{|c zaod<-cX8R+o6qKkwmR07YaI0oASVhsHtw+KV3lal;UdgubX3OHDkA6LMumG!IKs}s zmwsG%HO#r8oL<`1I1>^z4>c@46IM6z|ChduowCuE!qe+}NMti!| z(}jq>@yl|@fV~?D3u8oruyJYShT30=5a_;N@gMXB;Lhq7`D3XnAMMOH$PWeIi94?q zhSYvdowiQq4p;d%Dq#d|RvYIBQVUqwg7!~yFYc#Rj^ES^ts zU*M}USKg>h)z&F;2Blz#qr zOWk;pfRRwV!*H7zCy$#L@L<9PXajLYD4%0pCqwTDS)=rWgU(|G^c>r&H$RZT>-==j zsNP-nS>lC-H~Dv0mLNf8(40e1JZ(g49b+rHe1muAj{GId+B#U{ofGd)n$`fIkQRx1 z5~caYOhX!g+U6oP({Xm9!*<--2##O<(3Qy~a~oyOMSnAR=C|=P0m`J8*?jtEeP^@m z{T|5CN;1K%(LJeKaBZ_J-41$hi^q4ghHEi=^K!g(#VLTT;cWBep1m%2(&z|GYwxe? zkxaBwNLrfmHPd^93e2^Ltw+ma0}DPzpA!*{QSO@*BHPd-Hq8}jF# zCC0M7ymlk7E^Vhy#UVcq9?wr9@~UmKsJ@kAVFCSLkkriJOqq=+V!+#X3qqa;K(KgD z-ULC0G+tRUyg*a6zP*5Wj{8T{^s96P#CY>b>^Wy3IG0Agz%6s8!$M;QT~##1UGHDd zcac^)Ksz5%7nj;VeM%aLTQ!5}Gy40xpK?XbtaBMu|5lnHNKEFXv-q%1K$0`4NIh1< zGdUC`*D_MAnYTc{;|E#w?sO++6VgvDi=UrGpw8Nc!zP(WQUddeLM|j18UZ4yuX87z zT)j{EenK&=FWZLKj2h7+m%VYRyF?^y!lWc16P*$Q?bqZb2`PuuonnGjFI*SYAnVNm z%k`E6@mh}N&a_fK$?km6F0bbM>%HKmXn}SM@iK)vcn#}Wn`s;-PU(djW`-hWk+WvH z*5G3_DMJzr9f*a=%W{ejmm~nlIdxQ^Qpw;>GvES+tvX2qRDH1)Nc^KCh*a zM3tkFd~LnIw%4IGsuMN}ZDA3`h)f@E0N%~76iA);BzHi{Ut6Fu#-Bmr)j7nR8P*Z( zg*$m6hGpe=}@g12e(H~Q{UaT?~Rxhd|ysZoNJOxJeZ%4wazmyaq z=ioCxF(+(=Ke=;4Q6&ieMsjC?b}h>o(@luH|9bU;E+1b=l5fUqzlt(oEK%u9kynb;9$5!#Y;^)SdLboJ|l5 zsuVQ`7Vz`CCf!AE%WMRa!J(OH^A;}n5qWmc9m~_-gd_cxJ(%lbwre`A{yb`5_k~@0 zLj2c{rN}3@w1{z46w5ynai+g;Y?<<1A$)1-=f?<*RqB7=Px?O%)*cvzh`P&Ge-RcM z*5TFH%GaU3Lx!FaNx1meRLY4huW06h z8FMMzL-Z`$r9YKa9@;-9e{dOJqdXk6Pw3YrsuBN^bQ~^s-E4}pxF00vSlHgl(!bMA z*=S!B`vZ%qlPkkB>l-!bOi?iz`^`=rP&uIm~0N#G<0(MzP9}pd8=F)?(SfHdX4W98+|o`0KV+ z{p`UbyxN(Nq@#yi#3CJ@8n$ib67kCa{>pl8BUu=6C`BUP;pK7gc|S9+vuN!M{fE04 z=dce^Y=bTWA-0QipL-jH@$z8ii8NLiyUP}@F(SYI8VXAqE>2>xcEvM23Mc+r>)?m0 z(p~V2&)v9O7L^uB40t^R^NfyqTteSR$1SOWX{jGX4F`r zuH3`FqY3sXAOs~(nO#RrBl? zQ(Iv^LP$ymiY2A}DF`_Lw4e+u1@0s@q3=masLUtOj@HZ7L$^3owPeamve@gFWVTDQ z8i4XibME>E2`qR6>dd)%+%zd%8%CTFg8E%q8tZmJY|baPD%r`3@b8EbA8jq&2tj55 z8tQq`GNE>iE{=!Lk-!vOd!6^ZL;?^L2~;zs+wZ8j1>P<73Wn64M*7u101@WGKrkNX zpAO~NmsrtKVWDgKm`1cRRH3GMh#{jS$u!TflGM@U@dYWo6%dJGSbmaRb1#|F-S z5(M8#GWqBLwI4<%%qBTJI20^Peg{6LSt5QBL~Z%?%7}Z?+iS9Ysa(YlL9T0Ulp8Ck zeutKa_H)W2FIJlbi$kUEL*t@5bLr^bxaocC%zeqK(RZeCQ>Ii;ZhzA^c9J<``23d9 zsr5FUVJ5qu+U4xQ0D8$qxqh)CUd-?%t)^O5=6(_P>)$H!xQ#8^R_&`<&x1D&0>x#M z<_Fv7J8^c@+zDnF6E2VOBmjdNi)0bKFk_E1_Ux$D|Y=86t8JRENc3Zi>thQf5W?+N2a)l zAAYV>4lNA+#uoSNdB*Vdky#guc8|6}VO6M{eYgaVa9e7rQC^R}paM1LU5rIvvXaZw zR^x~ZS_X2X64vc%M=1E=`i`uKQ9_8BRj%V_t->ScP6#6GCw?TnxH}*7s9Yx?n?|O1 z!cNZ_9Egf|WQF#eHz+6(D4Kq&a+gnQ73*?|4)=G1u$*3o`FJTZJT|7f$5H9iy(lU6 zB1=v;aR6C?-qU^f+rE>E7-B+p>w;+&p0{{J#Mbhm=WFH?eXzLZjpx8GS)f6L;?-UbWsg-%E#*-!*pW_A-;^fy=;37!mdF zVS9L8(ht~_B;yXL;zc%wD1;;_-0z%CoLNIUbg>43!K5wXQ|-9by$Q&z%2BPS9v29! zIA|WpG4jLO?`?l1?pOQ>X8#j95t%9G!$FFr5KTjjcK6%SdzoAyf&N>Mq`b6ycRNfB zHvgtcu{|5j|Lk#&naIVvcMbIUqZ67T++@>Mk5Yt38YVc&VZx9kN!}$WzzSq9@?3be zQ!`&Cfo2)M)!;V~Lwbx(KfEPGv_hy(kt7<-y+bjGrv{a8G$aK$RGT1A*(qvh<^G;L>5Pz_|GGM||_usdBW5hEnNl&A99m^_*v4 zHT#&wee=(Wdx{#nK9!$1b#i1cSyW?eU;4csL8bN9)Mu9NM0ZmCN`4fOe=1qBZWW_{ zPN# zw7-XxaS}?6haA7pO3DWfruZk-Qyg5lkr>S4ifp|zI%ujM zAbuSYI9aOC9M_AZb5o7{h)%t-+1)#x`zi5b$XoDP+>^3K6KbcULu&q;u1}S=cLp^_ ztx+0^HK|j(Z!6u$yvYS~vt~b#<;bNCCz|EN8kKh|Ka^Y|je{%Zf4tYxP!tuxYV1|N2R_(8aESo!t znkb1kR)aczx{wF+MXD?3U=7Y!jnZ zW7Za75u>pQVr%%}DARCf5)c$OYkteFS^v>uAid|~irv#kkb+Ms$ysNv>*SElQarlL z@`2#`?TipJ%by{nV%cOq_wvzF?eEqB{Wn?t+g-Y>e?qwG83ujSwuu~I>az@ z53qS19kGSc95Rpx|BasL9fgA78`;;MePe;-NqIm!W+^wbKyjsO|J*Br#8|GJgNRaS zt}g1jImp4$fP~WM>zYCUWY+j}>U@avux!R*TjBvKG{Ld7Nk_aRi&ZLT1q#6vlvQ^{ zM|1oEwOzh<2f(E#ucw8*ZzhRK9pEgsj^!<%8zpExy(h%E0NQhKNGFjqDW9srSgP>K zeSZob(YBna;OEQkH=0-om{`pzIY8E4MEvXKJNr3gh|Y+;5wO z(fuZ0{-J7U^6n7RS`-L3z*)Tx)CK3FNV7Bsq?uo*&X$&0MPYVsMcN2Rg@rhO!P? zC?hARrd-Kj#`6L0?S2F!y4LM}i_LAXB~Ck6sY7K%LR}uZ>7E*urW`@~qG3-|#ecu1 zHMYuT-hJw^5BYAgAb2ybifT^@7>1`lD9JZN?vP(yXYDU=T_vU-Evs}~1d57~P$#Ez z*JSAcR@8GJ$!62$`jOWk8fg6#|6We60JeJ~;P-8-`Jm$yw6dzMw6=^v_?G4f!OrZ3 z49(m047@kt%d#9w6HIFLyO~u`8W0%d4*iEFGs6RVh|ssr`Y5Cp9SE`tgo|D(<>MV1 zknt0E+p)zd*mZZF#=x$G?w*BI65CPUh;NyBXMebLP^KH+Iov$Cz++LA@#3A4ydgtQ zS2%YRbwkj#X>pW`TFbA?GBMG*{$d`Z^!h03a`AlR7t`F3`sC`pKXW6eAK5uMUglK3 zxLucI(pgEi>|ehyZwa2<_%&z1MjtnvmlRL}VW3q#)i)V^H*5*LT!@GClaDwMDB2>J z;FGL0>v5W}5z6DBM`W+PY)M#FV2xnqOucWg7>rjs_*K_q$b+4j&~}?2*TilApThYD z=kHB)!s%|HweeVkocQmW@bQLjt>J;MPBnU#v7raYMex?tK{%3s!#+J$G zni}QLjf;fmMpUzYi-;yRZ+ZMUm}$x%zbfDmXgn9R3Zk1mFI zQSl#fR*?Wr4`QKC)ZXL`cxeZ_9jS;V1h#w9mr)P8beGLXtv5&rR)Qx7K>Iabg}CbD z3P(D#l1c11f-saQ@BJ~sxy^%+Y{d_E1g9Q4+F?tq)w^~T<=O>TZK(gA2MP5B=8$#D z@P87+d`koah=l>IdnV63tqdKK*4Hyb^d*gCGhLA4W&OOyq4A|m8(M2h2(qep2wuNe z+b`IA;K{$ue7U*KU1C4_RbM<)4o}QHH|G5v9K@UTv82mmNbY1+z8Xw(0p8GAXyNw4LdaVp-FQE;X@J z1Mpa-NNmXnmper-i9_TYOM4Ktn=Q!O-a7)(DZU~wAk6Bt_1h!*e1A#x{KT(6PU84) z|A!iIhOH?;FNY}az7jprS2mFNW6WWsJHaD+blmtuoxU73}590ecNtk77+1uH)db3&nBws#&9(MY1v`fbsQAC zS9HW2a)G~0L~5y;C3RZuD;WW?n&)TY-TrdgMNA@Wyqt}-U>+Ssj@6yoVGI9jKKue0 zw!e3v3bgv)T@U2quBIb|*Z`Xm6(B<}J0}r3w)c{vI4rMrV5zf!G0*mV$ftMK3giP3 z@#Spny-!E@rbSQ=>BXNIH@Y=jlz%{kkqk!-y+=1@K={Pkj*F<$VfChws3o+Ir=_V#J1Tt^1RA)^S><^0zri+HNX zQOdfTaR}GeV9J_^j36Y_W*&74?$LO7d(S&IJ@YAHcB|U+$Yg^7ev-#|iMP~j8HNpW z_~r=$13Sw&hN%-f%yz!LovAzt{bWwshxJc*#Ee9j*_)4W8?u4XTqpes3D!3p1gU%3 znT;e{^0$@^Ql9M+1J_~w4IXCftB{RF)ub51usi+#vGRc>3`G>h(*Zlpm#x6T9EmJ$R6MH=Z=NhOs~x*O^Cn~$Dz_I}UV@7aI8pYL_8i@o*|=9{Cl>4|Ck;QRM^fL5c-|=5;HxkG@%L=?xo8(tY!~3Bgfl1P`+M3rw6UG#8d%H8JUvZOhS)Ck+72`vHA*k-`Ywuj-^dV__#n&O@se5qHIdxNr+Fa-(aZHhX}f zWVw=Yw=ab;hLDByd2_yN8t%pXjTpk#y>kqr)LVDE_b$iWhX)!O_+C@7)ToavCfzZ_ zZoR#Z?;i=l2`#>QThqo=85zix0Y^$I*GbiTU}&br}RS1@#Jhp?;a;CrAeQcF^={nakggH zyqCM@bd&cWptyax%6dB-KaNV2#r`1`oBrycx>a_Yvk5OCy2vIQ9Y|X&DwI7n(R|m( zfkwQ-#4c@Aq?n4Z8dmzK;pqr`*Rvl>JxXBlxu+ONJ0sQ0q9HeA1~;?vNv6Q(Cuy0& zouX9gB;SI6+%+$(gc>P@(1<%m53=423DVp$Mz z-y|HG2Ey4cHRLPoe2j4$9_6^%MgZsnkefuuLn^i_X*hgjv=88&1Y=Z$amq&kwRBGn zdeNy!`WxK}oyQ|LSBFD^I*FzlB{?h80~?wu=_{6{OEUV;3o_OFJMS3R*=Ymj`RWVZ zW)H`{3?2)X2=u!uEEDlH+=5%ywp_J>(kyGM>{?D)&yr;H_`MG-0pxRDeEYa6M+t<_ zWgGrEU%zMVPe0A@DuVPNa!mGj!b5kTLo|RYZ$C82M}yF6B3;&*i-nFJlBMBOeYz~v z(=_~Vg141q(%vax^S9`8Ze6x4SINRHgmzz^^i8LuD3w=OE6ERR;(agOVKLC;tSX~Q zE!UOEF31o-M$4{a*XeZZj-wQ@1O!F>7ubVdpytD<(O98(+XG$a&L$4B8PVYL5WccU zL1IE7f=1S%OD^4Lh|)Ye0*F>=RYt5~<^nVNzXFO-CCOjC%pqpVs_LY3dEO zXPB3RNK&e_^`Q* zj`Mm3331TCyD*8~CazV5*w4m{4>POb)x(JWowtbf?*x>kIJ(uOH05j9W@fN4ARwY* zrvTD*(ZX8m0+0ehKj2LWoIrB`WL1r`O3GpYlF15|sj{-pD(#c3`tuk5>wS}c)NDo5`~5gUvJm4g-f%`3h{4^5u9NuU)=dBYsQ=Cr z94QZWcsYwVRiA(N4v=1wLqM%Z;Nv3xCsaT~{jXeyKR%@S0=c7`Djn#*`^gXt4xp&O zkL;km`w*vl(moI0A3pA1Ka3<4OlBcBjCKFr;TM&W6X5YB6(PRnqNqc!|1orbHL#@+ zoBjhQ1fAc#rNM&+0Eyok7{i~5&Hw24Up-YpBIx_bq+QuRIvgg~f&%_R^Eq^yt7P}k z|J`URxI@F{Ls0pT+5h86O^{52sG1r429^KTGGZai_^4x%^V>35*cb1BM@|@p9_i7d zDAnJN=4)u!zGMXw{l>W}AOSM}l+dt21ni}=NM*kbS&|MK0GREdG&Moy$rSl_hw-Jr0LV&O5QAr7z>D-Y8>t%W zvFZ!Yv%I0MvD)gyayjXmVu1fdLslr;Ry|rcP3huz-jpPwRL+pvGx)c5*rx`XU$*JT z|2=nf(Es-Gt>S?%zd{4tPPS`_#s?<_Rn@kKetpKZ3530_QI>rf`kZHc=-#(;QV#~F z_^N;Qs@`p}k2f+b2y%PbT{>>@j>IMtL2i`-xnpJMX8Ks?E3Xr)nS7jSu>_ z9@&Zprp55n{8AMCt0nUfE9gK3Uwt4+Uy1&Egv=ldbg&$R>{b@~>gVm&xh>Tt?I|Tj zCgm*Nv4v{sCX1hQR8z{Mx>?tOesbngF6bLwcq!24=?t?*Hu$d`bd zf8WxBfdAeLiodKtC1$ln4|ZQB-z!3JJ?c;A;sPuQt(LtBv{N*1OpX9q`X4 zz5Q;>25EPJY$_@1gOUW%!$H202giZ#Vy>&t$_(lhIgJ`1a}+=dmfwAQoD66; zXidd;|5z6A_zem)cSGfDRP&NRHM`Q+vMGjp<=;s#aH>6azw1Mg$L0Ry37^v;QU>mzB*|$VIWL*s1@8^l1x5-GC!x6|61wm{@iQTAWTVl;1 zV@bcg$|hm4E7%#@I7yo6*>lGaq)7RopnCvHPUQ+ zwn}i@7`^`yGn2u16(dPpM)4uxuYCUz6$j{c^F zILuiOr$NpDO}JAAtB?GAe?7 zGv$u`SEMms_+LH}1w5uRwV2NXbYk|BT(S|Jr(e^d_0Xa^KVGWE>vLqA$zvhk@j8u7 zTQS#XleN^a{&5HY!nW;bVbpxqOEA6%!!kHw$#+x=!}d|u+WgL4AOQ1sZ=30iqo6&u zY?7|+sT%DFn$H}*C))=fNFK6O89cX@%tiWRx0Owh1e}9y&-sjr0}eBdwDy=9mvTMe z?PE?yizNJ+CAhM=d;$1=jEK`G%E+*yYP|fLLM+duh_qf1i|tg>-pZ@J)xMx>lFMrh zVotV+@z(q0Z|5ep*^$hUH?P*5+WX5X4Y%ouxb)@8zmF?(R%nQ9H%*2)Gk(JBsJk3` z*goKSD4yzQC@{H(N^4wqyCN~`vAtQ;GneTfKFH^3*H^7q7i0ARJ;+4K(XhHT>(xBo z^sbFEeKNIOw<5*!V|>aLGP+Vcd<7CaQ`H)7rQ|LEmoX)ff~@<_x0SjHlVot^EkUyt zLO!B3a{Y8?wAI&>Rii+5(kAtnb#0^bf*K*oYP?8&vyl*Lf#fmdc%`6Vxd*81CTylo zEZNSgiwxI|%A+j0uB^#*-+xYt;J}qe)yKAvixiT;C&nq9v!Js@A{RxnnCIVy1xH7A zJcOq(j#ku`VntA_Kqz2Qz{A7+fS_zb+7nd5$!)0Te5Ol79z zhr3LDgM53p$#|_3o|^wmw9+_SuFg&$B&+W2Bj{mR`ccOF^2>yHOn62SusEtqUUy$g|>tDG04S#`?v zDkB;X=RCeS?jB3(($x9@Rz3)|qtwj#?zK9X;BWnM zX&!~c3Ga=32Ap^GyY@g@H0_`Oq`Aq?K{;e9oWfqVsCV^)QcXFh@D}C0t^#PA0$Oy8 zxDFt!z;(Y>D$GwSXk5y(pda!M8DOg zM>MQoHL_$11cXLNzBhq;PscIcO6Y97-Qz0ah^Ke6Vx)il$vlsQ2oI0dc+Tsda=g_3 zi#t|V+*9o~5kpIWypB`NV}0|-ABmsx_jLFP`P}gkZ#sYSp+i~8h}fw zXun|t0h*S%i+Bn_)nKx2thzz<_(MbQT_7Q(;DNBAqc`rODihV`DOJ7l&ghN-*Ri55 zA>l4kR8%7ak?SlySLzn6H{C%m(ZJToI6Z;Yv6P#RjkbC6x+@9eSf2y$%X7`VqHgUa zP`U0lmQ^CcL&0Bhkyik$&`gc=qu&WcNZ0ABcnBy zEFYhD#@;90pA1CP>!Ny!6Ib zhr^iVcKd}g*me%a0%)r;u{}Bj#BOB zpykh553#Qs)!M2z3&g0!rmx6WwCqRNZKU!QAlhgdZ? zH|OhmbsOdux+4alQ%wA_*@?v#m<-J1Y~MlV)#Sm-03#h89bu@M_p{_m7!hC!c~kbV z-Nf5EEJEkcx@v(=kiPW0tBVl!pXRxSeimulYI^+U9k(}0y*xJV&imhXNV&6c{;-+Q zUqc>yGapH@k;82Gjg$Wi&vWBA%2{1+%HS6Wv*y*7pEf_^ER3NEx^ zm)!NfDna-4Sj>C*+Tk!l!c2o@!ZhuZJ0QwJ=!8L}W=x=ZMKc|K@8iCU!!#%e`kwrK z{)fJr9`E7ggbWAY_|o>;ngBTL`UwEs-#9`nj*2f99ZkU}#^i4xy-zDiLsrlq$W77EGG1;Da}o=5|= z1!h3#PY^oLmq;IBce>ZK#mVJ_1VN{60hiOevjn78EK0%t_+Tg$;0G1+rNfpXLOHMg z4E{$+=pRCGQ%EyHX))D6LRPe2N~9Ik{2e<;`|1L22gZw*jp8hXP1rumGYaUgke~_^ zy;y&_nM1MHuDTaNj@S~{b;*KBDG@Jm(=c0^TI zjwU;m$(8F@=ZDpRXHlD~t7_re9b_Cf$($FukV_wwCUx+=Iw=XY!I8dP6eFc<1NeMx z6WyI5RAY@6ktJiV)7=@nDEp6muRxt-KSA>6SLtWOQ|(XNFQ>w6Fr>Q|sI6-j^!)OW zE-6O=GoSVvbFP>4tly!Ezpy(8z^!X1^AFy~5bg#iETM(NQr6%VCxTPM4hokStV`Sr zrRnsJ0bJ~5?)hwLoH)obD6fS0QPvKZSM_poLWL;syuoMMDR$uO2& z>%k;}kGs3~Nklz~mw(l_Z8iCUy|jCo+jm|2vO8F$vhXptR)D+HU4>}E+m9ra ziHEKq1Q<0-7q#E9i=H?Qn}AnV7(=pF4R{E+{nvl^TAJ*u+3WVNxk_l?ADL#r4B$>#De|d+}F{FXtLBjBTtB znAy=+$Oo%|obrMK4XK$1xQ1A5Xr?1#Hfv!RQCt{v>qL8QgM~W)WUq7986$oj6$Z3W zQU>xqboKa8rJ_C~nO#Rq`HFe_46Vc1z2l@@ZWuSVx^W_-R ziDrwe>`Kzcr`8Xmt25W2v^drDqp~jmxEBEzW491Eo_&#c<>@@0i|w~PkXcc}d*a+% zQ#M*4iet;60C%QP)gJuEyEM;uu*{l=(Nf2)Nr=s8mO^l{ZOl55=K$aFss^%K2~e$= z$XR7z?~+ui1pm1Jbo*akM7OeQwZ1t8)QtDJo#8`h&~nUg07&_%TLTF0NfLC-uYmq= zjlEKvxNo8a)1qw}Kl#x^jq$$p2Bn;53oayo-*ULh;@%x@_^O0tP%EVfku%m|97|D% zI!toEDzk&L*q`sTiPQJ}E#{DrrRfx>D`a_7iD|6wJ7PtGwJ8UsgAOnsQUoM1- z^4UKuRiJ%n|E*gOrDutj^nA?a`j#6;`$l^{)*yBnQ9gc|(u z<-K?|yw?Gb8~F5YuS-Z#6w77WVvLk`i(hW@fh$y~f#A~&Gm#OHvt`CCVDclG7i!M; zrxNq2y&xXGgvxF*GQ$0FMa{2)Xv%|TS|90lA|}E4%y4*2W)R`X0teJbdtDaC*SfUI zkSibb6b73QaJ;(Pg!h73h!0t4Ke&9fo&Wz5t6w&Q7kQjoBlpAFrHYT?-UHK7T z{*x!#OO#fLPfIyQ)EGeop{kVu-OPaD1kZ;geIub`(}{TCfXjG^=Q_fWDhhK*uOt8I z!}-`Zr_DBCs1P(vl|b*5=A_gU-<2RreK>%pZ^@7{)~uYIc3Ft zptf!bfMl_GiMxGJRQrT~>jmMU%)?++2@m?VcN*eETX16Y~3qhrsF$>{$J9$|%n;!P2 z62|vxA-0>}O)>M9ri>mT1;y5#<{``od9y_C9*E6k{~=5{TSx=QBdu{FAeLtYVaChC zTnn&hNqFEe$3kj=ufeSl9b}4WWIMK~>E$(CFbt1~0z;vwUC<9ZG#w`B=^j?K=(rWK z@JoW5Cg=^4`1vxyIiT&ILCa7G%rphJ64zJfhC##2eav}oFBfq@SZ62c) z;`wkMg%&gX*g~CTHgx_i!K^YZQ}BZRi#)9Lz~CNCukS&+jHJ2n8OLcLHd2SRK=A&= zCxNub0*=gmqJYg3cs`~0(1*2EQFG2_nhn6; zG7886PTfQJ-mBnZb&jQor;A6hvP+Y9nbXI&atceNgTsFU1)hVws}QbbFDv}iF?3vZ z(szbQ(l*p%dNxiCkXJ;-3^{ddu@hMg~RDZZ#{OVUw?|I92>MJ2@fAF-gI@o55?bA zk%B>KTxveDXj`bccQJ{!};A~M;L&%M;y7f&!6>u0~9S(;@2 zRN-!A7Mm_;{cf@qz)0BScb;^0c8y+N`BFbi)n#C(T-?LU?{1}MI-}hXUHy!Ap2Y}t zyM+4659V=a(S)c+Nr4-TB?hs+MNeux6paX}oxDqD8nug`xvGf2-y2(co2!jEIHwYN zA`>amOnKK$QvBAmA!An0^daNBw_z$b0S{#w!{2`%xMoP0MnWJW?%b-&We;{sfknd*aFh2J-}6H?<$zW@$zCYH%a^eIw~I%!XBO4b^z7RB_6*KH!+pkeaI|E?0qm#46t8<@R+6rA(V*7qzoOHW|&m=GNhE0Uy+A!cXA|gKBLgH zk6LwQbpcL?2kY>m!~9r_w3zR^xX&;v@L*wx-91R+qVtT1;qWS$2*bYv(B=4n_K#Yc z=`f!?!X0|>Mn?tfqclsQj6tS%WgCd*1cA!t83L?+c?v8k-1nmU;;&WO>$@<9YlfPH zeN^J*dIbS7@o_+md+i1;Qzl|_F|(Rz-aL;shKdFkM_e$8TIjb>GjmxGJ)X(Y0Ax^3 z6w}{uaw(?mlLI^!gd&}k)fCQ%yG}tMsXX(`Dj&|dKUvGxr_3dEX7~l7u1Gr!Aj$5t zBt~sr{azsV3+_gjMdbNa*g7nKo90Vo1S@Bh2=KvQrgos_hR-J&s7cB+M|t4q6p;aiqzMh)3V8MuQo^+dB3^a`3`-aTN#U=)!zD)x67dIxDc@8u;GxG=e6M&Vbt3CT^ST`l{Vy?F^!gx(N{af<7xzNbn#d&XljPGHWbFraC? z5>@?nyv?eIcpzn`n?YbV8a>2X0!9gbl;HeWzqwOQ}@jS0l( z-1lCCyVL<@zRj*Vs_=;ufQ?qPOh!zN2z~r@{^ZJ$Ksh$;*paCa3PNp(0(A@{3VH4D z7hMXwRiKjxWt#;NY@2C4f=FP8#=(nWW8v5$rDxY$gdTAB#}bl~wm$Jpc( z&us49IV6p2PzTVmg;d;p<(CBog#h}(mc=zxv%ek9U2@^s%Ly=urspmb%fw>(A4Itz zh)OvYf&o(Kbis_w<*QE)5&meLBjQWc$~f2={?wpS?R1|v`qZmssCzyZ`E{|B`hpF!M3gJ(H2QcJspSUX)4afHvy-V z%;Z^JeHtq7qCHq&B42&GOaoUAuF#_}>MY@a4D|Cgw?5p;8RJv4&ONMc5Q_C~*0rh2 z6|>>=-uTj)blcOUE|!{QuRFgLX|~Q(P`8ZD@nHk`fi@$`8NIrhM&$(V{6=Ohl4h*r zi!M6X12`t64*SI9{0ek}TGM^}=OXocClcelKiEf;Unal)(^3csldIVrkYi-;XZTTt zrYYoke*<8y38Pyy7R$JGA70l<5?>!zSq>(3s)&mVm_)CYvBt zaM>Pz7&jaJUYK7%Se1_5Y-CX9_RPwe0gp(6JCz$uMlS^0ZgBd`SDSxFcR|!7GFH)e;jb= zKb;OoWMw-N!+OROCg-syebLe;TjkU4U)mbE=quxkJnAhCAVaxQ`!CzooUgrldi=Xi z^OG0OF^AOlMQwk|kDY^B(Cyt8nT&dw2y9j}vXd;6XKn$l*&zIK;1%i!asafa+yEVi z6M;)H22RLwF^J*MytBo-0=pMn5_M@;;z2p!9s-v6jdcTRe)R?ksN-UT-N`B$v_x)}m^B2H zxEjA2BCvg<*2jFY!-gSgg>^6N|AH{dYdxi!rIK>?New zxbh(bDsPD6UM9jkn2-aMv9RveS}B{s7b^cz7Kf4;dm~=_qU3--=2#Mw(i;dZM0~S= zg(AXqmn}hmTG1s!{ZD*tzm7d5Q(fT&xeXdWn5`M!`zTnBEqN|hp8qO&8Q+-y+wQG+ z?6s21j6rAHv(*LwnHpaxE*ZgW-+tr3XM8G^*+p0TW52`txma28Y{VK|SMa959iYDM zqpRS^))ELU4}}hDNIQ??r%QR+%|}Ld^0Qe&B}s4hq`>klGW4BUpLm6kk2f;;Iidj% z5lk3@p_PjhF>$yLksl|pC zoJhPQth7M)!JU|Mj0ZmS8^!ETtJA%EZ%&MhMmaniqOwIO7+s5>C0_e_l+?ZwIl&E; z3;AHwNS8O1$=>d0^yb};#HIo5MZnLUd*^HGW{u6CWk&a_-nWiU4|I5#cNP3}!BSlV zzJ4eMWY_B?BN{l{1Q>(%JePKUDrckTG8_a1FyPoUsTu+51#ojd0tFcwLpxOp>?7(e zjO<+)*N57^O0Cj3w-1`*_fkCTj}mICewJL{K^IKPt;bZS9l8-}*FtgFW*AB5)SHbi z_qlV>VD-}nRGVZOT8k59RKh4B{y3~)qJ|jx47f4wEuzPJpSaB;t>UpQ-Hxt^`+V!>xE7GT)vgJ{ z!$(c~-bIJ$LbpthIU5b~9O)ZDM$I-t56?5f4O|joBM5GGhKC0ZC|Z)mf1D z1HG5u0wR@wVBl+MOEXiwh@$bHg)Dd~u?2V{b9y~+HE|PC8AnANX~U!=6_YZD2=-n- zU>yNbv7T@?b{8M2FgEtCI}4eS`%6pol1unXm_-Ow6`~vR6A*h`~n4khKy2}BnUEYJV$uIdcGPV|^)-*3ag+Ka{ z&q^aLq%79gfAp*nTVWYBG;Mu?H%#uPWpcr2{Zu+9TiMs3t4)3S!H)ZvQitMS;_om( ze6-%Y@~~I%;h;vx+^vH|%b_RQ{H1%+M;{J(*N;iYt*_-jEw`akeQCaxK38ExrzDYA zbW-R0;|{A~TeWW6jL5rQLM0<4-)b4b^Y+*E&4)m{pg#$DY^7(f;$8cxpqH|p#PH-n zaQc^=_}d#<9i50zdm9q3iIA=W#(gKh@tudc+E^)6kZ9+M*b64et4w=Ierr6|1+@Ih zx5OLNIQ0=Cs)=6f&DOnEI9L3#{5E&!wX-db__X3~m2_#CIfzswEs{%@lEl*jHe=k9 zN|xcMj(xr88$?oReEQ&EE{r;5Wyv=hFT>fs&J`}3ZZ5uwQ--o}K2SF9XxVMRLZh57 z>F&YicHmitS6}+81kBerRYdqZC`yi&pRT@(=oW92vL)h8S5JB$ zjSU!uqR^oY;!$yUHY&sxAq zcpScUBv?Z$ENlP;R&N!ch-lb=dpoF_3%q@c29)W^lHCb(e`z#HQ>uo0_s5dC$GXQZ9yFZTMIYad_U&bNaA~rE1U{hdAs}oMGd? z?4{xZa*Q*V{%@B*=NQf`>6&=US&f{|vi^j~jX~XrR`YgO0jpMVFOYryA|7gRTeC1y z3r`tTOTt_M<`ik~>q#5cRqT=zB~<{8hw|X?SDZ7*C%E;Su2Ap?DmI#3s|{Aqfk}YCPUT}CDi>kw1t!|E4}!SmJx3p3eX9aX5J> zF;5S%W0sbOmTL3TMI^O{(61wTuuM%HH#8!cHuMXDnm98ux`729KR!3ip-vS2)5ZH^ zjmvC1D3RmN|w77 zv?&({r1%PK2tnuo;xDE#&`0pPTn*rBk*>*anEWL51`_NI)b z+K5V+^oxcJr1N(3dZjtGz58jH`YWTUwqyrm6q-EXBHVH{)^9ix{ZeUp=~Dxu33Rbdstgs6ZK#4v0*&07lEVfAJA#B;WG0FfzG#?fu{Xf) z5bWF<>(PYd=|M~lmn8@ycoD;m)^EWj%nT2L+YufoBsS|Hr`qT4g{v>}P;>fubr>&F zW(h7H*}A@T2dD4{pt1rj^d2|N;zz#Z@9J9IJCf1x<{9l7C(l#QF+1S40RQ1$oJ_n+ zt-}4ao>9W>jJ@s)u?IL*^js$v6xJj~G#n}Fw)+LBQdpQ>`G$|5GJZ6fW7% zU9E>yVry{+SX;mt93;tqYM5;Iz0 zIqDE)67AT+ZKI~Sa;XNThAdQ*5o=5+WA0vBM%{cvqDyWW2N$8fs5Nske6pi}V`W?< z$bwcGTq z>1I@(+YUgJcy|vc)%5BNsL8HG-%*ckOM*o10VjG^)Lv#1qmm*B1IH%GssP;`D@yVQ zPjy2_i>><>#fEpE@IHp_=DrAkYe(46x!sR{ka1eJfjQK_`rE}9rBqbfLeEWc$>=l| zi=oA;*kLn4+IMlr=Od!Im?+Fzg1f?0|Zp$xOn+os~Tz8c2e5~V5X*GaHxKB^8lE%QvMAbIUjKhg9MeP*6R*`(bk z^H@YeWyRZZ-nK7Qq@r~)@ErjGahMMld`@;IB=3hr&)&7nI3pN%gT0gUK=&soO|X+D zoE_RBh;yg9i&@)Lz+Ab?JRl}Q)Z#cm-M0^u^i)+ z=W9S%nsduNiJtdWcAJZ)&-JLr&COb%W&iV$pOiKIAw2~SYc2z20zqgo>MwTTPPH4R z5)nN|fez0>sb6`jfrs$)#0F7OlUeS;z7xtopuQc@IM3Ck?;?%6Xm99)u4*RV&$s2E;^(zb$n zz|L{YN%ITLnh;eS^&}uUULXmlops{hplgaXM8?g*&YRb)8geG2>MJm67NZ=5-=a?I zQ1{50I?j0r*QHZr0azN+3Isqyd$x}qXyY{7lAE)AHZv@JC&h+@c*9BY;U2CvC6xHU zZ3ETJF+dTL4kE_}g4DauC|7;kPcB|o5YK*{u6L>sSg3+I3QW_sbZ3PO*d{+0aC|+@ z;58hc&fxp)X2x?4t?izv0g~mrQ&p;%1nQoAWl;h=;!gh1llSk1Gq6A0Qp~dBnh-_( z#V7*zE0pr?C`X(NO4oR~6!d;6tzq0+bnc%x4PYcF}_eL7t zHP*2SgFn%kJe}s)wLW5LZQzLAq!`L%O*_@%9(F(KUQ7O{ z-Gmc6j_9b-+e1_|A-o1q;DXY2(lQ-3Z1pzJcWNus(dS!J{Ve?`$Os&(@bwDs9;_%K zn2lI)hgYNAAkGqWZ`FrkAmTvk8Czqr`ZB-0x&tzb@|7ZVcm5iB-5y z_G_f4&`M|fmG!#w1)tbTff+vy4nlq}ARchlAn6q)rRP{I*bHhA z-*8(_>bCm0uSmfVTlP^R^xH`>he4itL%)NxmkN|XUg${*sbErNM@bE| z`ku1I;|K|2&a#lAsN~P%K=qN%1c8F6lqM*S%+gJgfe`cc9cMT-oc$}5AsO7~9W=s0 zB6eOm!v%z1?NYsbq4iy5)u1v0UG}yCEM#d=%80{RP$WL7+XC;ieYi|FA1uE~F^!!S zS83tmhr>uXyt$~8X&)^+FY1dO6E!??ER%fGb?)vLepTilQtr`J%B@p70-_9`C&3fi zqFDo}uKrvFFR==YDHm06f-P|S2w4|ML*-<8YXG^R3|cUaUT|j&e(nIb-ytnK9wwE; z<>?;R&(o(rZQQGS`k*q5lLf>3S;l&W#xWD6T0J3+zxX&h>ZCeA#8uZ6Jz_X*Arqc! z0MLhN?~u0OcRp@C)`@pQEzFPKs_LOS+)r@)DIh7H!Fp?Shgy^%pECHg9;iu{Iw9wf z&RE`zQmJGui#$gciXFm^E!B4&E zx_$jCRzI_W8mioQ=;L$f+22!Jt77``{i)?;THY5qIwSp=i080?SLScIi$&^h*f6XE z%8+Dx1LtbGAvLagZ^{`#_LbrVbT=9L`sQ_&B|G&|D;|4-Hdc)UKaE+9n`&QZ z8BquagNpc_08$VK;TPF*e?G=*6ed@4ThuuNRDRBSzj{U`HtkQQ+EoBpaYtI`=Fs0i z^kK@?V&V5;Ke!iv3671Vtd4h%-^S+yD-KP$1q|Og>~_NO$&z&yXXNvI;^n4^4eA3G zC8hAnn3i@S>%9&ZiE-RW!pg7iD!hrW;#%l~b?Nv;{v&B7ik3n9c~H!j&mA>hHR1(T ze*E#}>yzCVr{Cf`J9uQ7r*U;i7jshxiKR>tc}75%+x^b1^!3^%kaU{41i*Q>#rJ65 z`<V-g z5M*Nm)HU3rs_Q-r@{O2_1(LY0A7JKMs9yt~TRxX_6TrQ*PZOE&i5r$VPZkZrug-u< zNm-AOh=>u!_~OI0s&143x<3W(%jr+qna})Tt!O+YGsCB$rVL# zaFnxd0=V-c_J>i`{HH;L^0*3$fg}VH1f}2;fB5*ZcXHu+c|EZ``*r>(O|K*=|4u3_ z3It1o{_b1 zTdU~wwyQi7hWx4F=o<<86R$agEP}8ewMisr8v}|T$G#I5UNMk(AexS-LAuH zeV+kox;;$qIS~;$$LN6`KQjyvkou1FJ@zPE_qp3xFEDeq<)>F5<9l(mVVyK|>`Y9& z;g!{N02nd|z1&AZInn4PzTqq=ShowOKG4uhA?5g0EQ^IO7jXF&|Kygq-{jKKz6YEd z3TzI6ONM)pDi_3~4SL|1tyz}5#%OSZNszC)BLe+(ctsWGg;L(+$?S`peO5jL0?Vm3 zn1kxvSX4v?wYIbzhVR^Pg0n6`aTa(`hIu-;1!mFJ7jNBpy)r{ck#g=@H;{#jgwWi> zFgdESecJ4?^IDX=6EO)pq8OP6Y~A660%F9pSHvw$nJ7-ewnJuKYF~4`-Ke~}1NYIw zZE%2K4NY{XCk*Aq&Jb6m8r~*BF0--{;EU>?kT%>o?-N}sH*QWrWraD`nWFmZWS96sY#_S1}Kx!`bb>8lNChC>Sn^&O_AqK8D{crF@{U)*UV`yNK z>wJzEqMkGE=}mhI0HeSrbBwZ(K!`L?P(2cj7B`rsm+3H(TPt%zne9P#|rd}6eSbmD; z5*w`wQnx;)dTfU^DetvySm%~scGb@)P>&Il@MHOhMVeq?*yADY)z13afO@jfSHSa;>SU54rZ6cJYgx(om@#89ykc9#4C&9^Kb>^!`5G zFkADq+H`^9E$$=t!ms{VEpb3+vRRp2OtuJ>j=gIR^+t7GuGF_Z(PU*KRJ}rq8jw|m zQUsZTZBe3&_T}E3+iIYjP@N=a^KSNm10zrt(xyyxFm~!R!PwiP7p4VIx;$; zddS|s-SdnEvdA^wo1nY7Lk&--85=5=crskKCwUkZyUv}TY2|G9&=byrz!l@un=7`# z#CGAXF-S@`@O3f8-TL7=0N@D7b33tp1 zXkxzBA@XQEGuef6^VxE5rs2UVmnj;bf4o0~4%KOLAOZZ6TIX03gs7-M)lramG#~W$PZH~Pr+er1iXhk2&AWVl4C+9%DA}!rg)?|!1|B=N z$5#pk=>eF{Fl*fBCu1~CUGqqwz%m*0*X`v`s7Zc!uLDUvKCd6#VmKSuj~t^q&w*Av z>kzd^e8{6618*^CyZil0AVdNsXDNio)?~jw0RdTHdPPnyEj}RDrH%%rrIH*Et&Y?X z8F-y^`VvO)G47(p+!Ucd!Bbwj6yz8|j;@Vs_7jlLeKW0th;+ zNlSwZj-!Mi;aA`)p14r7f;y={n^#5P;4_=U9qml-q@-%$$~;-kazZx>?oI*=9>_qI z-Q(U8MhX+Rp6>{Pa)qtGr7nSU`Hz<*FYa)%0QUw$GS_G|lxLh@0ong*HX}ot*@RJE z921Iv{w4@=$pdKYd)O0zn+Ja{DFh+FZ|$LP$s#<;l58R(mNOQnr`I`6{IoW~$|ZYa z6f50;c$nUEV;^jRZ%$Asz3g~kFyqPK^v>^u{ri97+!d@5U>GA!?)Fn49{>qU*nKU_ z9JEo+S>!Tmc)`Tk5qk#8Dhs8<&`Y)Oa#R06&Xm&vY_hS8V2n27FVvJXM6D7V46#qL z%0g#u$LVlmyX9i|LiLYH^1fS{8c4Y@NnPw}ay;pa%U`eRmK#NU75hYsk_*NwSuG~Y zja|+UR$go&#w!Vf@_y7qIB3cL`2|bt0C1<*qB+tId;wQyxJqby-L*Ewz|T_z0m824 z>N3hdhAk8gAfLOIix12}qK#w$vP zBcW-VAhpYr;qxlo^ag7-yCIeuuhRCVb3DcWUcArNMKyYRcp7jCt5JC`CrZ}vfz|S_ zIsL0Q3>2UfNmv{hzsFqxA`xJuHzEdm#=HW}3`WeYQtlD1AW%o%59;HuR-a7k1JY-x z5_XL9cRJ&L{{qQq$P(n999sTj-`3;6wuiYGxW8B^e+y`=@2~7w>7_LSzVU zzu!0cb@wUcf^hj2m!IA+g1a|pL+Cs5*WW1V|I!YP90Z^)Xz=F!HC;gr5S;;jkR=c3 z7(4`UHhnOt@XrPNua*06ZxVDM*t^ayLq!PG=}}0Jcy!`=^-GeZ5Y)$8y9mG0f4`sh zuYUri4*+7<_%2HJd$Hg{lO82mO$xSxK+s7-ZZ>Oh6#dz#{`0-UZK#pko=Fo@zY=FL z0G_|G6>w;GpXL_mBO$hDko$lB)xUkBpaG2}%j4WNTTtskM{-~%IC5|Iu4BN(hT4c|?hyX(Er5S5WC0_oNhqlHyEY?1 z7J53m1om(cS~CUhBR`8K`whbX3;X!ztdF8Y)6t)^><)dO)MhGE_s_4blzTZQa6bb(F zK2p*LFw98Gp#4A%9{Rtrk_1Tupara9(3sqU4Sk=&LuiH{o@VJPAuLFOHk=zU%6_R9 z{5MoODgU&Ye;LClc@O~DGWRip%Mb&pKJ4$F=Rej2fD?e3 zT@tS({@ak`8GQ zknS!4DQPL`?(UZEZjkQo`quWm_ug~w|2^lv<8wG1+a1rdVy^Y9S-**73}LbuU!NcU z`hyR5iMqb_htU7|hyU^VUylJ>(2g%nNEGM`kp1T1rfnwNgCBJ5f5H&{%XEAW20!1# ztJBFh{|4E^#TZM`G2XF5h6Z01TN0)l0;ACr?R)kg_y1r1E6@WOku~KL$z{lJ9oFFF zBLVX>IC4Nd$xAcfVKrP~nXLS~eAR#K#sBeNM93P0*7=yp3OQM^+P!t;G!B7`(th-@ z*9c@Q7#Z$g&-m}Vvn%LG#+`E??J0QNhI2g21gA4dD--tNcLZTtATM8Q_WdOz@n4dm z1DUttM&5jNX2_4?noE^2{H9T1xSVK4a8ruzTRqbB(7v0$r@4dmW7pCcRtCLt)9!mZiPo-Auf$4|7N zH2MD9QWltjJSk>slk2}XL!O1hP)h*=2-bNFibcXT;+JOb=iRb*#vhQUBYX3wB6khzLFsjdUnqwhq{?kL%qFewj~`7JTO_)i+-z7Kp7I4qeW_SOG-rv>`qa?xB+;}l{~ z&;+Img~;uW{YU~8Yvt5bSv}z}%o-F^99@R4A_R^uPuSUX)xx@T=R3Dk^>k><--#oC zGZ;D$kz%Yy$`=fT91c6ePkboQF~N@vFis zrMJumUDQmLF>k+Nbx0(%t39+ZD?bPu)DB#~EWH{M;VgE|vMHGUfT!ptxwrA#LGrJK z4}u;b{F73UP1=M*{PZa)IC4kBJVJg4Ts3#=4OVM`z_Ka=>S;0{pb;rJTGStj0J25w zSfPd*NMGB(xO^yOAtikS>U+|0+wVt$EY+?O-OhBNv&jMc`b(|G`c)9*k^L)_n4cbS zQQqs{fz-fn3|f3Ifd&}~kTB*T9rs7i$A8C3Ax1X4V_|o+w|50RqZ+$$hLp18Em(8` z+RV2IDw$m7BUkk7QTR3pY^F`?U0 z?bpi6IGf&JxO}M|>a7JG=T3X6STjW!!1=OJg-WQa=dZq!9oqI5zpY8Rx06nee79pk zY$hN#8`T@Lsy=4i{hdwDYP~z&=%~wmc}}G}oHq2VDuHeI7T}3qLU2%#KN4CuHfuH? zO(%IE47 zZwlKr!W(X?x=~}qyEZfBU7|x{Ty47Im1=E_*?wqe>hRLghy#UgJzPCUjCokuO7v_G$eaPPmf32W1eV^zt`QKI({yn3`T5}`^NWdA(IvLyb8bpmm00$@BynD#~G04d72AX-KhZYWUi7P1EoB`em`Is^_ zr5wksADFLPB8YT$W{G}NWjZOn4g3YGi?G)O>Y8! zk_63%I{9thImuG}!R1GKCxbhBYu~Okw+sZg;%R$y3zAqO2qqacUsF93K@D?|n8N%r zuh3Y^YCgO`zH`uI9(D#Y5kbVmn)F~IRq|N=ynxC41&OeTIgPrQ86?1>_Vayy{dh)2 z?U-g7UzGa9q8Gz#-HQE{!Lki!v7tY=gpeM4&B_A8>VjYB4ex}j02!^3;fvr+D(C#l z%ww~PblZ(d!cc)m)V#)TY`uIj@|~fzC#!Xh#XN_X5mplYGcNlzIiD%nAg3+7v52b# zGedr|n8)g2fZKzFM|$hsl%h>1{gFaf9Xluf#Pa2H6;)=vK9Yy_d-C4Y^=^GmhBy|z z@Cd39v7aj{`XYHnuGpwd62Mr+dtPNeuX=yc^x&ATqkDgQbv(d*;E;}n%P2tPcBvD} z`UyCmR9zKfxdGpX5=2chM|f#=dLSCS@i$39L0n4P1wlA5Am`pO5j$a`P-7>G=p78a zDVN=DcImG)vp<1v{6cHn4I)-NfC;}#f}vrR-hFc@MXt<1>Vo~lZ@q>9@kfEM;TUjI zz5*Bw&DRP6zjaPe*0;dz5#G27+zTH-B-`@vOJ?hJ$>*F_=>ufw3j&uRas9x~|E=l% zy0-!Cpy#sk9gSMCwkOJS=JvE|kSHb|P9{8dQ^*+reb5W|R3DPQ@;te;UjelmVn7tM z^OrQn&t3t~&^g7R?Yvy3`Dj#M+<*1S9 zT{080=VTfL`wiGU9Lf41V^{HoWb6_teXEat{Q+1K^Bb1HeDdMoAQn@K99jxOu;BPeobZ2yoru*!1tCg9P&atD;oTU^7q+&to zU}kqN!^TTK5PP)f+91&Q{U%2yT+8zo3QkECC79Q^Eu`I`89d#-X9eHY5Cp&9Ej0WxN)QvpK+Fab}H&EA~n! zyl}LjY9Y5>^Xg<{QY=IQrCFOqWVYE8HUoISog#i8h!G!y1CMWqnKmU5t`TZzNE911 z%9B{X0ck`Nl6ReYFesSKheQDv4!A;ZWq6K!RQ(NWm~?+43SG{~{si%ABpP*g<6_K) z0|X#`@vAfU7}gDiKPZbJ1_H$>Al_9nQaZuJ#_Mfb`xy`(lMX78?wjQka9Rl+5~l5e zoLmK>=st84;6Of}HcWOz)Bri*uQ=vyBKW@k`-%Nh1|nN6^22o&Xo?%{&JLkOyy<`s zVYSo@P5Hvh-WB)y!;&#I`pxA^sQ#_Pq_zpj+KTK#Jh(>3TXww!NuKXJ>W_P9y)F#Q z4BSt=(fFui6~11WBL*{aLZ<}jfG4}(acX+#$~QQWcd|FzAoZe=U-pgnW#;=bJ1gCz z5v$Wft>c>_{;t6tjgN%#U1><6RrR6G+(Tv+`!NrBPX5y8%IlzL6reDyg|C-ef{2#e z^U(|Gx;f+bSu$Pri*!n}XsqThFW4L;3)-wl5@ba3&RRLJWBikh$bADbpZR#I>NqOQ zlpZFg&TH`8K>`Qo^f-1r>Fchm;_FQbbBo4r&317q_KhgU0z(zRhQNKIozTJ*p zgHcGN*7#Ov7}7%rB$Coe*YEr{&By0A&FAtnKC4k!o%A`@9Pym)C^a3k@#jRKv#Uci z2YP$2Gl+2`2u@OG7a5$iJETR4x6$PRSyab9{Q!`~)W61qOv+Y0D4}NcT@QLoM<9>no`fU0pwgQ>?{wMbNMFxKg*o#Es>U&!V!}K zzKwp&x2y>*kTpgehYy$E*{I8FLUKudvNx{+LQgP!cy}h8WBos*US7W5sjiw^9=;B} zRVWovzr&Xt;41rsaVQJ{G^Qqk^U)Uc7VplrTm=C&x86Cq`B( z)KxQOJz~EjVRhL~56X6w}l?T85eX!9E~5ETkA79f5Ni z5Tg_?p&Jf1lHH?mG#%bpMVkl!3Dd@XmCJepwSTWdZ^Han9{4 z*ajsD_>5!suW9WLwnnq`K^{@a88d=^GbcE|qOU(8j$L#)3I0I%TZx7P8Yw>6`qLjCa{mkqm_{RPaW=u~zCs6cY`^xkDNfIN;wGU2!WL&->?H@AR9OUsb zjA@aufms#F$gm=Y%;nkU^FEOFQ`i^3VWoHnQcNGi6DQEIvriD(O~xP+d7}U0uc3TlYr`{YPkvFb-6r&QAu% z4L0#LG!0Cd6N-j*(Z6lW@<@XS_b$&3_!%o62F9-71E@%2JoxhANuL(Wc{Cq80!)0N(VS9V2f3&)4l-)#GlFfy15N-EAu`iUrB>aFV!wM@ z&ojB~$nZrzQ!*UXG|96$A)KO33;!|O?N8+NZo#Q{b_Mpub2_a?^&$FgHv?<3meZ}# z3;;b62`E%_c;h?yehNgm*3X!Hpud+4g*-j_Zyh2(&7Y=0j?@b-hF&;@#7$cC$%A%M zG+PS?yxm&G#XZ*B?M%-X2G{O3Dq4tNz7L&j5sPJXpHaRVKTi6HW^8w_9*N@Ekj5pS zmT8tTakucEqVo3GyD#asv1c@=Q{bgi?k9|iufpL1hj1X0=yZnVLxaey=_*K&V;V`h zb6!1n-jNtJterxONS-W=bc|4U=YDYBfvrhV7AxWjpmgDN&&{vo@sBEUieGJNEY4Ru z%6N?w1P<9t!^Y2?Uuu%2T6LeU zFMK3AfdoNWcxwM-ZC5m3Y;52*p2%0}@y+3GQEov%;NvORu{)e9(FIv_ZWr_R-+1e= zuKQac__>xPKjT=+VCn31_Pdny-VQp`zDm1N09WmSFnmfLd(Q*Hmu(hUoFw_k69Dg* z>~@`_?a^Tl)Fb(_^8Qnxk0HU!Xroi4$oD0`S6&T$aslj~Mli98utn&b6vz7LncoM| zc`r@vUQdU1u)vnhCpqtPZcUY>;nn{nsr)|zd=N#HeOgu^7>!}zcJ<-)h=aufv)xgsDCyl@8IF5rmAVo>NavU4jSG zBU_)iNe@qKbp#ZUDYb}T;=hORfQ)xY<#gMrn{i!Gg-=_TqRVlJA4zeq4g8+i`s%%PHgTdI>HK~$@4&(F7I%k7JyQk(pHpH` zqc~KB!)G)J)a%AuhBlktU{Sm*`O@`i#BfSz$9|Y?`SZp>Q`eYf8{F2NNHvc^3yWB$ zWE}6$As*z%mbxp~ilv|ZBu>W)Ex~ z1=Z^n7!H5btJXAqISa9&xDGp=pL;)$#Q*X+%Sy(UNn5_JFpDa^bs!!1BEo1$pUq-wInSFiFmuk(|B|jqvv0_1@ z_U~z-eTv$D%cRsYqoiRXZKO}i8oWGZcU}vsLeJ+2X(lOEw|z=8n=i}g)a$F z*p1rCkYQf*nM@2amX87jCJLPWw?F+39E3trhKR?Tdhc@_KTmDKbzB(yR|cJYE+Ag3 z21FBtcq4V`a>&<*vg2!dgTxn0KA|i|6jhQjhIZl13krD>J%-6fGe0Xo4h3FoHTTJ> z#htxQYv95G3Jmw3a5#GjoYpj+IoRt0MsR~7hnR4dFHsIopS_Tj{YB=0HzJrAqv_Pm zduSH@xG3Xtz~cvEE19yS4zwzN}w{*nlIY3gTDH87Ia5%SHG=eNHh}!TmX3lBrr+*bXhvCygK8MSiN@ftq=6g z;@p!Wc6|k~6=yxVGK|84m+&4{(umu`jcqGoNs*?~^nM$!PdkK!gdEDV45nix{df+o zkS(&nLV;Y8u%aE27{yVMP_@9o%&}b9nUY=*v4r35b{~6nPHD%@@mEgBHD>A~vBP`$ z!e6gSjaO7Tj|LY__(y0KRp0K{7cIM=i{QI1*Q4ys3j5mEmf68NreCq_b7`;r^0h7n zmAe&YUfIvBJ%yJtRM!u9u0&_)2=8V#{YbLESpKqhD`&<43~zFT|2=Cwqe_d#K-l!v%R0*0MClyN?iCJk!u;>cX>K z1Rfr2%62Nmd*j})?$MJl>Ch@6VMlWFNKeI1@fLMo3VKo{c=H3&+0a|5KB`(-N3pOjZr3zit-|NUo(}j7B&=B)s`Z0SaT+<2H(V^~C#Nrr2#H51 z!-OAF5Q9!@o-P=GG@~8~ctNA@ego7t;w?)b@yk{Nv2FXIT9=sMIeF&eQRXa9K4t2%q$yre;woC={xzKp0qwQU9Yq<3m6<-N261 zgmKwCiq0b!FDP}o6H63xBn_6>1Yo?r!6l5PAKgdAyXk8=1je4aHl^=GNx@&TZ%MmR`(8e+7Sjco*HIV^m-x!Rd1IQVpWuKs$=- z!=VxY$xB9IrOKXG#Xjp9BKCHdKDd-#TZtERt~CXyt(&-|$Qa|TP>4D-G<`aH!E7HW zp@4w)2j1pkj&@@(QSq=xu~t#FeCK0;UE#e{Uui4(-F=?K&`QwfH@#)D{`3u$hUN!h zB8?#>Sqvqu)CD&al+A9gUCNMTE8d{RJ(eu#t|7j{rcszj7GW_rA(B?1;%>Cfi4;o$ zBp}w@xza)@WjKWBTAp1c1wn^Hc^NS5jx$%wT4NvSBAWUg8Yr4KNhCQ9W7YhO0l9}i zIkp=R6^|zuG&Hl`-uRUEC^lZ3Ek^|)QH1qD{4EB}IqzL|rvCxUIsYdt z$5fm3Pp}+Ci7)*muOw`vsCp{pZlVd*=;SNWBBrWoX;8l3K_LbKYl}%uYh$meGXNa- zJSwk&C4PpBIaO&E-?T+NbgyETA9 zI+M6cL5Hlzh+o*u)FvH2{XTQl#aEEqYW0h#DBf|^r|A*b2XuHyd}b|fg^z^VKh^Q( z0H{_xR+F)JdtP0l{_Vq#!^4HV%0J4of!LUQutEw#XWoODVK$ltJg~90uC)U^;d$d{ z{zS;30+0>ru$`Y!uj=8a7gvt%N^Q2}D4|*<^{LvR=;8H`J~0Z58O2v1D!B8k7d=wy5d$X!-yh?<$#00ptlRuhI43#PQ^=fmI1=$5yr(%lID1p45p|kHjog~YYJzX@kka8H+Pt?Db8^{P{ zrq5}&%^+$a{E-k3qTojt8yV0J`b}&dr~UycBC2CdLuvgETrN2(kDaItP;{GB0Q1Hb zpfpE*yn$saYoX5{P6|CeI@br}n;}Oy%dkI_Z(ef%^37ULlr08Z^4!i)&Y>t?Sr6CH-2S%{@PYyuI?u$L&JgQq|? zK9zU#CP+k=T}EX@_q2Drsbhi1ID7?tfXxV$T<7Oy*?Ws9*94H#caV&wet>kyxzKWm z^B^T8Vu4|EsBhM0M}cj3h&GnVNAH_ySb3yMe*%f(5O5;VMh=Q*(4u!d(MPirpz5+8FzEg~uC8;wd4csEky|2?o@(z^5v5A02;%kAtYG37G5L$# zG|@jc2X2ULh(n`dV`-VMyjzYp_+mQ4acY}@e|m8@oGL7sGdU!>KUx5K!f-0x!xz=T z{>t%=M#aciW90l@nVsg@*iAJBD9nRi*qU0)Yh2=3Q|xZ=4o6+8FE71E!PI(Qu-892Qe zxv2ryg+w)ohfBAd@UWFFD256ndSl0s*hd*tB$_)(kueK(#ci@Mn@G4%+nF>-s7I1~ zBjqbQ&1MxeZz{qTzl@7t`QB>-Bl%zDz@4#?*&4!_=P1hVfP zt8`XRZe5Zz`#)-bIWx2jXBo6_G`zKWISC8P)!!&7r4!yj-&lD>>hs2gkqH71d7bry z+egLe+!Id&t?#l~;OT!*a0Zh3i@3hATP)B4)-pEmx6YE6-*s=5be$&Y`3V*-O%L~KQbYprXey!WW+?Y3p(WnkO*A}!vGQxB2)2p87SG2&5Cg*%Az$wV{L(@|^ zpY4hq5FYgVqhG~i%)wg`oIrwsnkys)s$$T+$rLh-L8>4KWu7)P__k;Z4*1WYY=|SC zKS5n200x9)nz#O~?S9YQRQ4oS{r9~AEaWgd5Zx$qIqqyi%>t=@BhJqa*Wud3o?9}B zrD1=|FfeX$vGyEhp8*YG9tZG4bp%nt%pRt-tBpuujf+!f~K>T1)vN} z2ZP=hf#HR=q0X;vPG9IMQqU0fH|?FviwtJ7PjphDUwD$TQlgmgydYcQO%Q>xgMbXs z-Heoz>CHp=WcY4M6_|yfHs~x{61s`I8hHzu3Mv!x(S?+h%LR51+T43KNehwaKsHp& z_X=XfRYvm&pP#5PLKAv+H}Pu*cm`pUtu8rE#aUm zMHmKLtD>@=rgL9Z@A1`Fq*BX%tEjpBw;VNl`?UtxMYcTTR1imNrP;S_`|vAA@Kc|~od81tzCcq4d*NB785;>CT z&)zr(x#mXH3n0U`FIFt6Xhv-t%Sl<$_~Iz>ct4uRiv66pqDf@gZ{#Eznr3yHc*DNO zBRG-bdgM{BT6hMX6*KK~q9C%t_2@X6N1&Rn=y1AN#9YR*F3f)F-ZDI6FD~&jgIGo% z@n-EuTwZ<98|^$>OL~8RaSoXbl53(9TFEYg-{}cE2OY-*|AW)qj00^`{+7U`a;GaO zgtQNP0=BgK71)PSd|Z4|(vUTST%Nap)7_2h(145fA~Bfip|MyW8QQLcy*L03nCTl zH~Y1L5yd5BYfsv_y}1TNv+rOZ-{d`p_pk7$bl<&=YJp&TC_WcF9cm>jLmi*gPFBbq zb$yi#j81QibfYejV|HwAm>OS;nX5L>@Q)$;5`f2MK~)2s z4UQ=GpsqZ6HMWoN5(Yj#`CF|$>O(=yFEJ#9FsPk;_cl~D^rH0nwWws2h~9zGG_)1? zwL(=`xeJ**>F16udjIkyS0=) zVib0X)-6V{xzpJN1iG}diCFDsEcpmamqapo=KkC`Dk6MfV2ai(O*aj+<_pYpV&$S>}bwxLXJ z73rcZP(biFiiS3NDFc5fpwKuF+*McbXT8fO9;E8HGx~je6ARp=wf>h~$#LGbMfJyl zPBHfn=lhS;b4wRiE|X{Nte>IRr^oul1^T{=7RHN=SHwZqsX6Ih96-vdk?|b<)RTt=#84gwg7lXP?#0>C* zXecV)X}*8VAhN?hn`JZecsEuK7Z=H&`hEvQ;TzkiI%U?7vo zH4Xwbl-Hcuj7QqX?vx!+#6M_|tB28lEmAINwQb7Td;bV+(MFO79Q)=ig;HkKLv`FZ zdB{AVU~=HBkg$0#c9VC{XK5PK7CFvh&VBc_^2@tG@u51|P?61>`iFZ>$B%M;^ro`Tc)4{+kOq-;Mr9{SmyWE#M+RsEme>BSbpJGVP?ff-KHmd;ac-6 z`S9u-b9}C?8*;UG+Z$N`TGaR0 z`bSE1kn%r_iKTryi?@iSd4fvJG5$Ss6MI4?ud|8oF8xm5P8dpN$L1&scCY%G{NnDj zflh0NgL~hZZjIG#iS{I^ zVsYR$!#!?%rMS*eIo@t>uk%CVK_-96EKb1#D!JT1-C;)4%*rS&Um1Mpl`o;&7?r$q zrvRLZyodICv+aq|QY^Ze1rvF>;&*R;G}QI(rKdG%lh-Zi_Txn`<6wcW`e@SM#)j;oKr+Kw?$hoB=Cq9#&<-sF@`}of<3L; z{gGQF$~#$y>#eM3D+&!C0b4&{61j1+uuQUm&s+Gqg~jFaFkNwsZ~{1p%Ry)Z1?uEu zcaB8ja2n;)?YyGvVHN&NWbAGks`l1Qfp0Xv**nPdZ{)@ke=WPf1qq@ik$VWR!(1#l z7xl+7wMlK~Df*mj33}wh=J>XdDK^Rj52GF+_G^;)tZtw(NE+hPjnp?{yw5Gfy)DI| zQ`SZ%%F(xm=^yMQ2huBx0#gGQG`8k>U`3aYxzQw_WH)1+xgw{x_fPJGb z@=_k2<`kQX%X3iSU0Q)_#5c@f7-^>Xn{aM%lUpaG9$BH9p+=Ze$GB#LQ;qPBL%P|; zV%}uFiY{=9rr>8Sa^*H=Js#egfpBMQO=j^idajsrKg z*3n?)wsQ+C9z2z1>h){8pN9xEJYIcUY_zw{VRpRdo!G&~5n7@<3U}njyJe@==#XOj z`WJQG7FG8=M<;1a{q?v0JKgJeGWPnLkjMBYjcFmA6W>|QOkm+dOV?ki&a^cVSmZj` zbft(+^{-^5@2>C0Q5nqCQwwFY8}vMz$oJ`Sed5h;OCwO6EnTy--cRp*m`|-7sb12R zs{Q_|FDotp{V@E4T|5{%kB6mOR>5??P4%J-5d@GdgX>2ib&!iK)qDQG4yB} z$QmiZS`z>Hlx|@>YlCbRGcd#F;1dzy|H6T1^$a2B8qSEO2la5vRFc(Xc+Vo^Ws+x) z%(*Uv?8!lZ*xoS348= zmChoX2Y$&;*D7{L7v`S_ZKX{*D+~5(2JqP|rgKN?bKr09n=+>*-0!_z_s59ru0qYl zzOO!LCK-lGH_W1rzLt7cxu;e&RUKbw*Fxd@t&o`QB|$%UxJiP?PU8E?d3=rQcxvS_ zs|YsJ;jy!R+{Tke-nEHJDFpnZtK{jDf)JUnBM8gh7E&b-_nkJTV-#GTnwC#^nfUI7 zh@?`S$>aweA(jcVhSsT@WsELVO`gDAH|bDNJ2jqpLOCIoK! zXDgEPp;scsT@r_1pkPp?NOoyNaK72qzxIf%oXxRD#6Bi{r=Pr>Bpc@3#O^(@q zr$Nj~P0VfCD%460JAOq(cWe)x_c4CoMP89TYG|UvyLcpg{ljNP9DCc+Pr$~NsT;DO z7HmF50PBt}0Od*HsqQ6=e3@PAqdGO;0&4Z`ev_aVqpPw%STL{8HQvTe2_i&(lymJ< zq`qAzHz9fC5f;L*EhmB_WMe4^E%)fdI404EWouP&kTmM3ORiCRUGZ#%sUdI?JN+Un zP8J;(v#m#FkTXpPd3jB^(k7bwBVE^jLQ(N61Z18|yrsNa*9I`sVM1>qOIR54a6xHZ zl1=7wRcBOCjGipgI;b5zN{-7)unN4PdophmA`!LQiadR^2=8{y_&R;imXO^XpIH1IQ&IC*nMv~v)Ib6tCc z=$N}?YKe)*28!N^t zoy^N_*W~tY-87(W?hu4DQth~W^%CDE8u`FFa-rwyw$1YuM#PDqO|i~=oaRngO)5E; zR+odtJy4EhRy+JNQ4$wWd~&OY(`Io7i^~S*`Et;ls$k#HJYYwT9{Y{LN&W)sRSsgke0>xH6WYjARmjs+YoYp4Wx z-Xw!ydd}gEQur+)Sx`dv8P)2_=*~wk`X`1aS9o+IPI)l?O)RQKXWspbDJhdVUc!os zE+agRFK^cvtkSoUg9C*%1Hty1jphkbu4{u}w-(fr4{Ce+wNMc2s7L2bbS7h$nQe}g zaPn;}x!jIO>K_jbrkNv3^WWKAFxN{=g@*FyehU{A;j$El2sZkqGI%(JuXCM^1xAn@ znfGeC90^|#UanAn;2GU0MBBc!{C)vKJ7j7jRH1)BJTiQjOR)SZ8KN3KN*_$`rA_!f zLkQpcp@{jo-X7Y7s!~1D2gfK?V+_UFYKTwTBYUK43hI%bEf4YmVyINB1mpqKf~1Fx zol`r%)Z+bY`Cb9)y8nkYz9^B(6`9J^UC8=)#}0^pQB?gpz`J#G7a^l$Ln~|SbqCwJ zh#E%&a5Wi^ceoJN;~(zOiF(Iu*AJK5?kMQnRp)h;Ka%o5p13fc>fXY2_Is5F8n(8W zJzCG{D6euFy?1WKFEzMOusdLHa|RyLug#0%5ir|7$Wt#a&PCnsM`>*-FIjM9^F)(& zP=`qrzf+WOBl7i8ILgY!E+RNxsI9OYj3pH-BT$&(8SW1kv3b4wEE8D}ndS-`K8VZp z8m`V@h?<|~2v>=_R)5#k?sL3dfaMXDbyAYPwZUK@n)J=}&-WL~H`#fVcra%#!x&mp z9b%~x#fqpupH`gEi+>G42-;6L*Rx?!FKfTFkpT~Bdv*XJ&Cl zgx|0!a&x1`pt@oZEZ_IuQ8rS=QX?fw1nfnRHc8HJT-F`lBF=M8f-)u_INSW$?_Lu<6#!G)XN8Il;tp*C z24@^5qjT4PJbv6*D?9f=kr;ERY02yH-2A}NQSQgA!Q;b|1(`JNyzxigG}7rNTzu5| z=^hb9FEFLE=qFE|U*v~v)RiD*jh<)>YnaclYj{Xk&}qPhw}H~ZG1a6bjVPMr;DnE= z*o+XAn+u=2{{;(Oj+&YXSFyuT5oQ}ieTkS;bwC8H6ZLOOHUe zjQMO$&v&+1c2f|D&x6Exww=qpB5I$~eaijCso#UiK}|$A(hQ20Rc~80(yn~gR7AR4 zMsqjH70=3S&N8R(t$a$?qm=8A*-NQR5mib!yPHunn2xeZFnZ;%W4r7=MaAu&iLvBQ z{HeI9&#hH6{=sFWTB!i7a$oEEd*WFE-$efEk95nt`h}?9L~Y&A$2DePUU@*g9MOT*0fcsR@VM;f+v=>WQBZIB9L4O;$pn!LV|E6#V ztYzi=XY5Crg;0(6XGK(~PZ(r<$l+0Nmuj1k{4<=B23yGHv9g}&HFmfo622>brvZ0G zYy%fm&j_@HFbkONN|E{JpQegiY}wKxc9*+tZG$TkiFdoB8(`&?2TUH^wJ? zpW!Q*glMYHn*-~)J?4{R&ZPuk1BCL_gVq=uViJ7FvGQ%CrBz6$*KO4mK2|4g8W9e# zUv!gobsA$+#wb=8pDCLc`QV zE#&ntM0-;8-gHtRwTOCDKUO>%Z$LiKjD`#St5^NzKMAr%N;W{Mg;nQsja4OkUW5@$ z=CdYafVDN)o2{yPi^e-fD3PnW?@82_tIECtc4-H=+-G#hTvGT^)d$1dKP8jZuIUr{ z?LYIo=ZZcOIh$AA@Ho{_#@evDa!WFaLwQR=A7)zIHCUv35FN@_-v3@Zd-@H6%FPr1 z56JLW#%-ctkc?NHGq*+kg~mNpD@_PP);VE-^1Dr@jOpC_m0|wjA)aG86ZJsFI4HVs zM41OS){>O%bxX972H#BiutpI7?lV!*WMN9SY8z}{fwM=5*ouqv78?YtJK}03&f!tz zxtpU**L(^!!fiblQL{08u7w5jr6UuCTE@ZOMfAUv8s#dbS32Kl?ih7WySfq=;fAeg z%@?rQeG=v`U8Wo4y-470!FV#-O)%eqWkFN)eJ}Cx6#<>ouK=n~x0gp^@mWKPAjo*0 z(Mwp2wH~q?fvJT2Lt+7k`8ko_y)n^wzs9jlIv)|NX~;Z4{?S|#@Diq!GNEeTnhX|& zGm-dF+mbq?N*o;o1=9_4g-a){`BszELx2nH=39Em4wt(bWuK0{W(&$S#1uTK#i28h zvG*4Fe1pd3Y;OGZU53cguI${(XB*v*rOxLgZuAo<69nvI&$dRX2=un)1U%Cm+JrvvG{LGAEb5V)%&=u(DJ1d57$%5B7~1isohaj!gxKCJjP1Yj-?3-a#N zapYS|S3#k}N??Ccbaw0m$NhhG<CbfW}hDL~HJh|{?b(+#R>yaay%vF*Vcgd;3&5_DVzJ|5Ho2y~jID6kgx#+4g zz`_Fi7o7#u$VLtN1ka?R(1M6gM-!{j5r~}wHY2k6qfd6;=p@QxBzC&n!BYz7o_A*B z*6bE*Ea&$jXG#m%bGi5oavEtOYr*-hTRIbECmi`3C5xqRzgNlJ{d~m3x{&dqGTv&| ztV#ta{bh*>TmK_e{}Qi%zRG3;eXbDc^*T`odLYpOffB0cI}h!r4=Cu=>fj^ax&!4C zRrJgG12;o`eUK?w18}2ueN3IJJj5*j6v#i%;%_099R+7x6V=EyEHBU_!6}J+U8cvN zlj{wGl{mGKw-&wg`Tu%o5J}L%m>@GcsIr0!1sZ%POL+vb_z2h&z7^ln4NC{9OaWh{2tYb@_|2 zZE3;R%^Ms!;H)5Wk%v1<9>x#(&`_)R#ox7}85;DNOIr|I)&qPU`EyoDk1!>;R<<1n z{%kWGA~stwVbA(skD`ZwC1lX{@3ivOWQwzuFL-7(s3BLdw_9(ZPrzS+ZF&bO-OQrjX3rVyr=4=U-Gw?a0N4wi)On})(BZB7eq^U zPqS6QCC2%_3X>#*_ts7pbmsqB#K5zO0P-!wpR1^X;CJ3r!JmX+LF30f?CIktmcVCh zml}QW5XZq^G(><2ELNJ#hW<(?Ad{M2qHxC$Yq{G#&IGdOCoquuY3;0k@!Q`Q74U>C zu`t38lZkB5XS_8%9mKI}$SW#+PsFh}@QN#KJ@{`sF@pof`{rl;+k4QMo+j5;JW_Np zy2xw}Ap$y(_T}Go%=}F!pkNfi*K@!5hodTh#>38+d{XiTGC8JgM~N@z1LigGb5>dR z-*jULumG{y=3INDGeBDa(vJyo)f+V3WeV_YV8)+;_VIG83;uI)|LJ-1kN1w{z^yg+ zv6XV8!L`Pj8G}TZpuj6a5|T1<*-+4k?Wf6ABLDdM|27~dkja+{Dy z{JS6j$5jKxf4p}b3p5FuR{rZ7{>N|7yTHy%P5$)R-z>d&Z+kG|7q`EjD>&*7~SUqvHxc=^ZW%_TP`;Vul{yr{JA3} zX<&4}3Q7J`DE^zQ2^>N8kVe-5Y>1Zl7cKwy55nGq(G?+k@$Z80=T`hj4}V;O<%PA# pXBhNb^ZlD|{_}_bf0oJvS`nR;5;oRY3KaMwCM+#fD5&lA{{f-gsHp$| diff --git a/workflows/rnaseq/assets/multiqc/multiqc_config.yml b/workflows/rnaseq/assets/multiqc/multiqc_config.yml index f2f49968d..b6a2dfbac 100644 --- a/workflows/rnaseq/assets/multiqc/multiqc_config.yml +++ b/workflows/rnaseq/assets/multiqc/multiqc_config.yml @@ -169,7 +169,7 @@ custom_data: format: "{:.2f}" fail_strand_check: section_name: "Strandedness Checks" - description: "This table shows library strandedness as provided in the sample sheet, inferred from a read sample by Salmon (where 'auto' was used in the sample sheet), and inferred by the RSeQC RSeQC infer_experiment.py tool from genomic alignments. Match between suplied (or inferred by Salmon) and RSeQC are indicated by ✅, a ❌ status symbol indicates where a mismatch. Libraries with 'undetermined' strandedness are also flagged, since this can indicate QC problems, including possible genomic DNA contamination." + description: "

    The strandedness used for analysis in this workflow can be provided by a user, or automatically inferred by Salmon using a sample of reads. In either case, strandedness is verified at the end of the workflow, using the RSeQC RSeQC infer_experiment.py operating on genomic alignments. In this table a pass indicates a match between suplied (or inferred by Salmon) and RSeQC, fail indicates a mismatch or 'undetermined' strandedness. Undetermined strandedness can indicate QC problems, including possible genomic DNA contamination.

    Note:Rows are duplicated for an 'auto' setting to allow comparison of statistics between inference methods.

    " plot_type: "table" pconfig: id: "fail_strand_check_table" @@ -177,10 +177,12 @@ custom_data: namespace: "Samples strandedness check" format: "{:.2f}" headers: - Provided strandednes: - description: User-provided strandedness + Status: + description: Pass if the strandedness inferred by RSeQC matches that provided by the user or predicted by Salmon. Fail otherwise. Strand inference method: description: Tool used to detect strandedness + Provided strandedness: + description: User-provided strandedness Inferred strandedness: description: Interred strandedness Sense (%): diff --git a/workflows/rnaseq/main.nf b/workflows/rnaseq/main.nf index ef5e431b2..36bf356e3 100755 --- a/workflows/rnaseq/main.nf +++ b/workflows/rnaseq/main.nf @@ -747,34 +747,31 @@ workflow RNASEQ { def rseqc_inferred_strand = getInferexperimentStrandedness(strand_log, threshold = params.strand_predict_threshold) rseqc_strandedness = rseqc_inferred_strand.inferred_strandedness - def status = false - def mark = "❌" // Cross mark + def status = 'fail' def multiqc_lines = [] if (meta.salmon_strand_analysis){ salmon_strandedness = meta.salmon_strand_analysis.inferred_strandedness if (salmon_strandedness == rseqc_strandedness && rseqc_strandedness != 'undetermined'){ - status = true - mark = "✅" // Check mark + status = 'fail' } multiqc_lines = [ - "$mark $meta.id \tauto\tSalmon (used)\t${meta.salmon_strand_analysis.values().join('\t')}", - "$mark $meta.id\tauto\tRSeQC\t${rseqc_inferred_strand.values().join('\t')}" + "$meta.id \tSalmon\t$status\tauto\t${meta.salmon_strand_analysis.values().join('\t')}", + "$meta.id\tRSeQC\t$status\tauto\t${rseqc_inferred_strand.values().join('\t')}" ] } else{ if (meta.strandedness == rseqc_strandedness) { - status = true - mark = "✅" // Check mark + status = 'pass' } - multiqc_lines = [ "$mark $meta.id\t$meta.strandedness\tRSeQC\t${rseqc_inferred_strand.values().join('\t')}" ] + multiqc_lines = [ "$meta.id\tRSeQC\t$status\t$meta.strandedness\t${rseqc_inferred_strand.values().join('\t')}" ] } return [ meta, status, multiqc_lines ] } .multiMap{ meta, status, multiqc_lines -> - status: [ meta.id, status ] + status: [ meta.id, status == 'pass' ] multiqc_lines: multiqc_lines } @@ -789,12 +786,13 @@ workflow RNASEQ { tsv_data -> def header = [ "Sample", - "Provided strandedness", "Strand inference method", + "Status", + "Provided strandedness", "Inferred strandedness", "Sense (%)", "Antisense (%)", - "Undetermined (%)" + "Unstranded (%)" ] multiqcTsvFromList(tsv_data, header) } From dc22231522d0dd34645be82db7a2bc1eeae514d0 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Wed, 19 Jun 2024 15:27:48 +0100 Subject: [PATCH 370/634] Fix multiqc config for cell colors to highlight strandedness --- .../rnaseq/assets/multiqc/multiqc_config.yml | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/workflows/rnaseq/assets/multiqc/multiqc_config.yml b/workflows/rnaseq/assets/multiqc/multiqc_config.yml index b6a2dfbac..33d6f1539 100644 --- a/workflows/rnaseq/assets/multiqc/multiqc_config.yml +++ b/workflows/rnaseq/assets/multiqc/multiqc_config.yml @@ -183,8 +183,28 @@ custom_data: description: Tool used to detect strandedness Provided strandedness: description: User-provided strandedness + cond_formatting_rules: + blue: + - s_eq: "auto" + black: + - s_eq: "forward" + grey: + - s_eq: "reverse" + cond_formatting_colours: + - grey: "#AAB7B8" + - black: "#17202A" Inferred strandedness: description: Interred strandedness + cond_formatting_rules: + blue: + - s_eq: "auto" + black: + - s_eq: "forward" + grey: + - s_eq: "reverse" + cond_formatting_colours: + - grey: "#AAB7B8" + - black: "#17202A" Sense (%): max: 100 Antisense (%): From bd48aa7924e3664584f76d679a964b25ee60abee Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Wed, 19 Jun 2024 15:28:07 +0100 Subject: [PATCH 371/634] Fix strand status conditional --- workflows/rnaseq/main.nf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/workflows/rnaseq/main.nf b/workflows/rnaseq/main.nf index 36bf356e3..ed9de40ca 100755 --- a/workflows/rnaseq/main.nf +++ b/workflows/rnaseq/main.nf @@ -754,7 +754,7 @@ workflow RNASEQ { salmon_strandedness = meta.salmon_strand_analysis.inferred_strandedness if (salmon_strandedness == rseqc_strandedness && rseqc_strandedness != 'undetermined'){ - status = 'fail' + status = 'pass' } multiqc_lines = [ "$meta.id \tSalmon\t$status\tauto\t${meta.salmon_strand_analysis.values().join('\t')}", From 36c6658165a4205d009bafdbfed1a80b584df28a Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Wed, 19 Jun 2024 15:29:39 +0100 Subject: [PATCH 372/634] update strand check image --- docs/images/mqc_strand_check.png | Bin 295486 -> 305420 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/docs/images/mqc_strand_check.png b/docs/images/mqc_strand_check.png index 6d9a698a32b775254b744519680924e3414979e5..f6cc381fd9e96d7d305c02b742ddab875e5bb58f 100644 GIT binary patch literal 305420 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

    J>voeIa)+IbidWFgMr=U*K%~bNZvlH1t%@vaV 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 z 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

    ( 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%0DK%>5;T;QB7Ft+WI&Xd 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

    TtGV=0dg3{G#(0bL4Eh6S?i| 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 literal 295486 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

    Nz7~&E_b5B5p@a7-HC7lV6HGptq*vL~2 zjYK%Nbl8@k7R}U`}xweu(efP+Kwq*Da!643Je2-QLUt3^0x;_t$AI2@PeTj? zbhy=#oCJd5u9u!sjXp96)cnk=qim%e2+G^C)?t8R_MlXjwM()fh=}Q9@6A$MW=#7^ zMbNf&TGP$cF)TNI?&j8QEn(NE5#~8SC$K5}%msT9<*`P{me2-ad z-#5p~AsGjepLPgyT1-xsHV)G@TDz+c0(99!=OeS6zx7x5{rn{Drbt8dPgn*}UVeWa zqyXS99dq%>2m%xUDPMJIvewJ_I(WQ zGsX2RuG*|KLE3o?<8V^G%vB-OmrUNV<8=KW?*O;{@e3qcfDv1}zz*9wxwCYw!++y@q6xen0CGzNVH03%nFGdCI!c`w^i+ES4r@aN2!c!Z!w>3j9GCN z>7Mrmq{6LN$`If7%PkB%me=q6%b@%*JY*Ou18L9a3a8NkxV{sBMdL4nnG3#unTvly z_=7&TObK?5rSfo5u5Z7f5-3_c$JYg*i3iAD>c8vsFAQ76QNMLQ{S834a?TYvKY-y| zQ3n#|uf2vS8;_4x*tN>e+YedB*sm7duJ)Y~K|8PBtN=BWYaAka^E7%8fO~0;-_e0s zx8{qCo<}8 Date: Wed, 19 Jun 2024 16:00:33 +0100 Subject: [PATCH 373/634] Fix multiqc yaml --- workflows/rnaseq/assets/multiqc/multiqc_config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/workflows/rnaseq/assets/multiqc/multiqc_config.yml b/workflows/rnaseq/assets/multiqc/multiqc_config.yml index 33d6f1539..dca1ddab8 100644 --- a/workflows/rnaseq/assets/multiqc/multiqc_config.yml +++ b/workflows/rnaseq/assets/multiqc/multiqc_config.yml @@ -169,7 +169,7 @@ custom_data: format: "{:.2f}" fail_strand_check: section_name: "Strandedness Checks" - description: "

    Note:Rows are duplicated for an 'auto' setting to allow comparison of statistics between inference methods.

    " + description: "

    The strandedness used for analysis in this workflow can be provided by a user, or automatically inferred by Salmon using a sample of reads. In either case, strandedness is verified at the end of the workflow, using the RSeQC RSeQC infer_experiment.py operating on genomic alignments. In this table a pass indicates a match between suplied (or inferred by Salmon) and RSeQC, fail indicates a mismatch or 'undetermined' strandedness. Undetermined strandedness can indicate QC problems, including possible genomic DNA contamination.

    Note:Rows are duplicated for an 'auto' setting to allow comparison of statistics between inference methods.

    " plot_type: "table" pconfig: id: "fail_strand_check_table" From 4dd03caa8b6252f79f98f8e99a98909344729505 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Wed, 19 Jun 2024 17:08:02 +0100 Subject: [PATCH 374/634] fix up params + usage --- nextflow.config | 3 ++- nextflow_schema.json | 9 ++++++++- workflows/rnaseq/main.nf | 4 ++-- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/nextflow.config b/nextflow.config index ad22990ad..1c46d7c2e 100644 --- a/nextflow.config +++ b/nextflow.config @@ -78,7 +78,8 @@ params { skip_markduplicates = false skip_alignment = false skip_pseudo_alignment = false - strand_predict_threshold = 0.8 + stranded_threshold = 0.8 + unstranded_threshold = 0.1 // QC skip_qc = false diff --git a/nextflow_schema.json b/nextflow_schema.json index 12606fcf9..db773cffc 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -453,13 +453,20 @@ "default": 200, "fa_icon": "fas fa-sort-amount-up-alt" }, - "strand_predict_threshold": { + "stranded_threshold": { "type": "number", "minimum": 0.5, "maximum": 1.0, "default": 0.8, "description": "The fraction of stranded reads that must be assigned to a strandedness for confident assignment. Must be at least 0.5.", "help_text": "To be assigned as unstranded, read fractions must be different by less than 1- this value. Samples not convincingly assigned as stranded or unstranded will be assigned as 'undetermined'. These will be treated as unstranded but flagged as potential problems in the final MultiQC report." + }, + "unstranded_threshold": { + "type": "number", + "minimum": 0.0, + "maximum": 1.0, + "default": 0.1, + "description": "The difference in fraction of stranded reads assigned to 'forward' and 'reverse' below which a sample is classified as 'unstranded'" } } }, diff --git a/workflows/rnaseq/main.nf b/workflows/rnaseq/main.nf index ed9de40ca..c240251f9 100755 --- a/workflows/rnaseq/main.nf +++ b/workflows/rnaseq/main.nf @@ -312,7 +312,7 @@ workflow RNASEQ { .lib_format_counts .join(ch_strand_fastq.auto_strand) .map { meta, json, reads -> - def salmon_strand_analysis = getSalmonInferredStrandedness(json, threshold = params.strand_predict_threshold) + def salmon_strand_analysis = getSalmonInferredStrandedness(json, stranded_threshold = params.stranded_threshold, unstranded_threshold = params.unstranded_threshold) strandedness = salmon_strand_analysis.inferred_strandedness if ( strandedness == 'undetermined' ){ strandedness = 'unstranded' @@ -744,7 +744,7 @@ workflow RNASEQ { ch_strand_comparison = BAM_RSEQC.out.inferexperiment_txt .map { meta, strand_log -> - def rseqc_inferred_strand = getInferexperimentStrandedness(strand_log, threshold = params.strand_predict_threshold) + def rseqc_inferred_strand = getInferexperimentStrandedness(strand_log, stranded_threshold = params.stranded_threshold, unstranded_threshold = params.unstranded_threshold) rseqc_strandedness = rseqc_inferred_strand.inferred_strandedness def status = 'fail' From 1029f20e95894290244c143b56993eb1d49e0f1e Mon Sep 17 00:00:00 2001 From: Harshil Patel Date: Wed, 19 Jun 2024 20:56:49 +0100 Subject: [PATCH 375/634] Update CHANGELOG --- CHANGELOG.md | 27 ++++++++++++++++++++------- 1 file changed, 20 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2f8f5b273..effb21ab8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -60,31 +60,44 @@ Thank you to everyone else that has contributed by reporting bugs, enhancements - [PR #1249](https://github.com/nf-core/rnaseq/pull/1249) - Include nf-tests for rsem_merge_counts module - [PR #1250](https://github.com/nf-core/rnaseq/pull/1250) - Remove all tags.yml files because the testing system has changed - [PR #1251](https://github.com/nf-core/rnaseq/pull/1251) - Replace deseq2qc paths +- [PR #1252](https://github.com/nf-core/rnaseq/pull/1252) - Fix genomeAttribute usage - [PR #1253](https://github.com/nf-core/rnaseq/pull/1253) - Use nf-test files as matrix to test over in CI/CD for efficiency +- [PR #1260](https://github.com/nf-core/rnaseq/pull/1260) - Update CHANGELOG - [PR #1261](https://github.com/nf-core/rnaseq/pull/1261) - Add more tests for PREPARE_GENOME +- [PR #1262](https://github.com/nf-core/rnaseq/pull/1262) - Fix CI pipeline +- [PR #1264](https://github.com/nf-core/rnaseq/pull/1264) - Add GHA files back into include statement of Github workflow change detection - [PR #1265](https://github.com/nf-core/rnaseq/pull/1265) - Small updates noticed during code review - [PR #1266](https://github.com/nf-core/rnaseq/pull/1266) - Delete unecessary tags from nf.test files for modules and subworkflows +- [PR #1271](https://github.com/nf-core/rnaseq/pull/1271) - Update trimming subworkflow to include more tests +- [PR #1272](https://github.com/nf-core/rnaseq/pull/1272) - Simple pipeline level nf-tests +- [PR #1274](https://github.com/nf-core/rnaseq/pull/1274) - Update bam_markduplicates_picard subworkflow - [PR #1278](https://github.com/nf-core/rnaseq/pull/1278) - Delocalise pseudo quant workflow +- [PR #1279](https://github.com/nf-core/rnaseq/pull/1279) - Add psueudoaligner pipeline level tests to test suite - [PR #1280](https://github.com/nf-core/rnaseq/pull/1280) - Reorganise pipeline level tests into flat directory structure +- [PR #1282](https://github.com/nf-core/rnaseq/pull/1282) - Fix CHANGELOG error - [PR #1283](https://github.com/nf-core/rnaseq/pull/1283) - Add output files to nf-test snapshot - [PR #1293](https://github.com/nf-core/rnaseq/pull/1293) - Update subworkflow utils_nfcore_pipeline - [PR #1297](https://github.com/nf-core/rnaseq/pull/1297) - Important! Template update for nf-core/tools v2.14.1 - [PR #1302](https://github.com/nf-core/rnaseq/pull/1302) - Add missing files from Tximport processing - [PR #1304](https://github.com/nf-core/rnaseq/pull/1304) - Remove redundant gene TPM outputs +- [PR #1306](https://github.com/nf-core/rnaseq/pull/1306) - Overhaul strandedness detection / comparison - [PR #1307](https://github.com/nf-core/rnaseq/pull/1307) - Clarify infer strandedness step in subway map and text -- [PR #1317](https://github.com/nf-core/rnaseq/pull/1317) - Strip problematic ifEmpty() -- [PR #1319](https://github.com/nf-core/rnaseq/pull/1319) - Reinstate oncomplete error messages -- [PR #1310](https://github.com/nf-core/rnaseq/pull/1310) - Reinstate pseudoalignment subworkflow config - [PR #1309](https://github.com/nf-core/rnaseq/pull/1309) - Document FASTP sampling +- [PR #1310](https://github.com/nf-core/rnaseq/pull/1310) - Reinstate pseudoalignment subworkflow config - [PR #1312](https://github.com/nf-core/rnaseq/pull/1312) - Fix issues with unzipping of GTF/ GFF files without absolute paths +- [PR #1317](https://github.com/nf-core/rnaseq/pull/1317) - Strip problematic ifEmpty() +- [PR #1319](https://github.com/nf-core/rnaseq/pull/1319) - Reinstate oncomplete error messages +- [PR #1321](https://github.com/nf-core/rnaseq/pull/1321) - Remove push and release triggers from CI - [PR #1322](https://github.com/nf-core/rnaseq/pull/1322) - Use pre-built Github Action to detect nf-test changes -- [PR #1306](https://github.com/nf-core/rnaseq/pull/1306) - Overhaul strandedness detection / comparison +- [PR #1323](https://github.com/nf-core/rnaseq/pull/1323) - Update actions/checkout to v4 ### Parameters -| Old parameter | New parameter | -| ------------- | ------------------- | -| | `--sortmerna_index` | +| Old parameter | New parameter | +| ------------------ | -------------------------------- | +| | `--sortmerna_index` | +| | `--pipelines_testdata_base_path` | +| `--test_data_base` | | ### Software dependencies From d21958b25ec8ae89ae4a83f394739827b1765fd7 Mon Sep 17 00:00:00 2001 From: Harshil Patel Date: Wed, 19 Jun 2024 20:57:33 +0100 Subject: [PATCH 376/634] Reorder genome reference params --- main.nf | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/main.nf b/main.nf index 8a0c86d7b..d3de0ae0b 100755 --- a/main.nf +++ b/main.nf @@ -17,19 +17,19 @@ nextflow.enable.dsl = 2 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ -params.additional_fasta = getGenomeAttribute('additional_fasta') -params.bbsplit_index = getGenomeAttribute('bbsplit') -params.gene_bed = getGenomeAttribute('bed12') params.fasta = getGenomeAttribute('fasta') +params.additional_fasta = getGenomeAttribute('additional_fasta') +params.transcript_fasta = getGenomeAttribute('transcript_fasta') params.gff = getGenomeAttribute('gff') params.gtf = getGenomeAttribute('gtf') -params.hisat2_index = getGenomeAttribute('hisat2') -params.kallisto_index = getGenomeAttribute('kallisto') -params.rsem_index = getGenomeAttribute('rsem') -params.salmon_index = getGenomeAttribute('salmon') +params.gene_bed = getGenomeAttribute('bed12') +params.bbsplit_index = getGenomeAttribute('bbsplit') params.sortmerna_index = getGenomeAttribute('sortmerna') params.star_index = getGenomeAttribute('star') -params.transcript_fasta = getGenomeAttribute('transcript_fasta') +params.rsem_index = getGenomeAttribute('rsem') +params.hisat2_index = getGenomeAttribute('hisat2') +params.salmon_index = getGenomeAttribute('salmon') +params.kallisto_index = getGenomeAttribute('kallisto') /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ From 00cf1111b9db2a0d867dc900e322925de16cdec2 Mon Sep 17 00:00:00 2001 From: Harshil Patel Date: Wed, 19 Jun 2024 21:00:06 +0100 Subject: [PATCH 377/634] Fix tags in modules --- modules/local/star_align_igenomes/tests/main.nf.test | 1 - modules/nf-core/fastp/tests/main.nf.test | 3 --- .../nf-core/picard/markduplicates/tests/main.nf.test | 4 ---- modules/nf-core/salmon/index/tests/main.nf.test | 4 ---- modules/nf-core/salmon/quant/tests/main.nf.test | 8 ++------ .../summarizedexperiment/tests/main.nf.test | 12 +++--------- modules/nf-core/tximeta/tximport/tests/main.nf.test | 9 ++------- 7 files changed, 7 insertions(+), 34 deletions(-) diff --git a/modules/local/star_align_igenomes/tests/main.nf.test b/modules/local/star_align_igenomes/tests/main.nf.test index 088796410..91be69f01 100644 --- a/modules/local/star_align_igenomes/tests/main.nf.test +++ b/modules/local/star_align_igenomes/tests/main.nf.test @@ -3,7 +3,6 @@ nextflow_process { name "Test Process STAR_ALIGN_IGENOMES" script "../main.nf" process "STAR_ALIGN_IGENOMES" - tag "STAR_ALIGN_IGENOMES" tag "STAR_GENOMEGENERATE_IGENOMES" setup { diff --git a/modules/nf-core/fastp/tests/main.nf.test b/modules/nf-core/fastp/tests/main.nf.test index 6f1f48978..1ffdd75f8 100644 --- a/modules/nf-core/fastp/tests/main.nf.test +++ b/modules/nf-core/fastp/tests/main.nf.test @@ -3,9 +3,6 @@ nextflow_process { name "Test Process FASTP" script "../main.nf" process "FASTP" - tag "modules" - tag "modules_nfcore" - tag "fastp" test("test_fastp_single_end") { diff --git a/modules/nf-core/picard/markduplicates/tests/main.nf.test b/modules/nf-core/picard/markduplicates/tests/main.nf.test index e3e97f6cc..04eff3581 100644 --- a/modules/nf-core/picard/markduplicates/tests/main.nf.test +++ b/modules/nf-core/picard/markduplicates/tests/main.nf.test @@ -4,10 +4,6 @@ nextflow_process { script "../main.nf" process "PICARD_MARKDUPLICATES" config "./nextflow.config" - tag "modules" - tag "modules_nfcore" - tag "picard" - tag "picard/markduplicates" test("sarscov2 [unsorted bam]") { diff --git a/modules/nf-core/salmon/index/tests/main.nf.test b/modules/nf-core/salmon/index/tests/main.nf.test index 16b3c1a79..0caf30d3e 100644 --- a/modules/nf-core/salmon/index/tests/main.nf.test +++ b/modules/nf-core/salmon/index/tests/main.nf.test @@ -3,10 +3,6 @@ nextflow_process { name "Test Process SALMON_INDEX" script "../main.nf" process "SALMON_INDEX" - tag "modules" - tag "modules_nfcore" - tag "salmon" - tag "salmon/index" test("sarscov2") { diff --git a/modules/nf-core/salmon/quant/tests/main.nf.test b/modules/nf-core/salmon/quant/tests/main.nf.test index 2964cc3d0..dbaebedfc 100644 --- a/modules/nf-core/salmon/quant/tests/main.nf.test +++ b/modules/nf-core/salmon/quant/tests/main.nf.test @@ -4,12 +4,8 @@ nextflow_process { script "../main.nf" process "SALMON_QUANT" config "./nextflow.config" - tag "modules" - tag "modules_nfcore" - tag "salmon" - tag "salmon/quant" - tag "salmon/index" - + tag "SALMON_INDEX" + setup { run("SALMON_INDEX") { script "../../../salmon/index/main.nf" diff --git a/modules/nf-core/summarizedexperiment/summarizedexperiment/tests/main.nf.test b/modules/nf-core/summarizedexperiment/summarizedexperiment/tests/main.nf.test index b51a76cda..4dda21181 100644 --- a/modules/nf-core/summarizedexperiment/summarizedexperiment/tests/main.nf.test +++ b/modules/nf-core/summarizedexperiment/summarizedexperiment/tests/main.nf.test @@ -3,15 +3,9 @@ nextflow_process { name "Test Process SUMMARIZEDEXPERIMENT_SUMMARIZEDEXPERIMENT" script "../main.nf" process "SUMMARIZEDEXPERIMENT_SUMMARIZEDEXPERIMENT" - - tag "modules" - tag "modules_nfcore" - tag "custom/tx2gene" - tag "tximeta" - tag "tximeta/tximport" - tag "summarizedexperiment" - tag "summarizedexperiment/summarizedexperiment" - tag "untar" + tag "UNTAR" + tag "CUSTOM_TX2GENE" + tag "TXIMETA_TXIMPORT" setup { diff --git a/modules/nf-core/tximeta/tximport/tests/main.nf.test b/modules/nf-core/tximeta/tximport/tests/main.nf.test index 5cf6af83e..8f27bc928 100644 --- a/modules/nf-core/tximeta/tximport/tests/main.nf.test +++ b/modules/nf-core/tximeta/tximport/tests/main.nf.test @@ -3,13 +3,8 @@ nextflow_process { name "Test Process TXIMETA_TXIMPORT" script "../main.nf" process "TXIMETA_TXIMPORT" - - tag "modules" - tag "modules_nfcore" - tag "custom/tx2gene" - tag "tximeta" - tag "tximeta/tximport" - tag "untar" + tag "UNTAR" + tag "CUSTOM_TX2GENE" test("saccharomyces_cerevisiae - kallisto - gtf") { From 4b8e11035d01bc309a3b0045e07b427b4f6c5c1f Mon Sep 17 00:00:00 2001 From: Harshil Patel Date: Wed, 19 Jun 2024 21:01:34 +0100 Subject: [PATCH 378/634] Fix tags in subworkflows --- .../local/align_star/tests/main.nf.test | 1 - .../local/prepare_genome/tests/main.nf.test | 21 ------------------- .../local/quantify_rsem/tests/main.nf.test | 1 - .../tests/main.nf.test | 1 - .../tests/main.nf.test | 17 +++------------ .../nf-core/bam_rseqc/tests/main.nf.test | 1 - .../tests/main.nf.test | 1 - .../bam_stats_samtools/tests/main.nf.test | 1 - .../tests/main.nf.test | 3 +-- .../fastq_align_hisat2/tests/main.nf.test | 1 - .../tests/main.nf.test | 12 +++-------- .../tests/main.nf.test | 1 - .../tests/main.nf.test | 10 +++------ .../tests/main.nf.test | 19 +++++++---------- 14 files changed, 17 insertions(+), 73 deletions(-) diff --git a/subworkflows/local/align_star/tests/main.nf.test b/subworkflows/local/align_star/tests/main.nf.test index 9ad089fe0..b5ceece0b 100644 --- a/subworkflows/local/align_star/tests/main.nf.test +++ b/subworkflows/local/align_star/tests/main.nf.test @@ -4,7 +4,6 @@ nextflow_workflow { script "../main.nf" workflow "ALIGN_STAR" config "./nextflow.config" - tag "STAR_GENOMEGENERATE" tag "STAR_GENOMEGENERATE_IGENOMES" tag "STAR_ALIGN" diff --git a/subworkflows/local/prepare_genome/tests/main.nf.test b/subworkflows/local/prepare_genome/tests/main.nf.test index 144c2d582..8291d9c41 100644 --- a/subworkflows/local/prepare_genome/tests/main.nf.test +++ b/subworkflows/local/prepare_genome/tests/main.nf.test @@ -4,7 +4,6 @@ nextflow_workflow { script "../main.nf" workflow "PREPARE_GENOME" config "./nextflow.config" - tag "BBMAP_BBSPLIT" tag "CUSTOM_CATADDITIONALFASTA" tag "CUSTOM_GETCHROMSIZES" @@ -79,7 +78,6 @@ nextflow_workflow { workflow.out.gene_bed, workflow.out.chrom_sizes, workflow.out.splicesites, - // workflow.out.bbsplit_index, workflow.out.sortmerna_index, workflow.out.star_index, workflow.out.rsem_index, @@ -147,7 +145,6 @@ nextflow_workflow { workflow.out.gene_bed, workflow.out.chrom_sizes, workflow.out.splicesites, - // workflow.out.bbsplit_index, workflow.out.sortmerna_index, workflow.out.star_index, workflow.out.rsem_index, @@ -215,7 +212,6 @@ nextflow_workflow { workflow.out.gene_bed, workflow.out.chrom_sizes, workflow.out.splicesites, - // workflow.out.bbsplit_index, workflow.out.sortmerna_index, workflow.out.star_index, workflow.out.rsem_index, @@ -283,7 +279,6 @@ nextflow_workflow { workflow.out.gene_bed, workflow.out.chrom_sizes, workflow.out.splicesites, - // workflow.out.bbsplit_index, workflow.out.sortmerna_index, workflow.out.star_index, workflow.out.rsem_index, @@ -351,7 +346,6 @@ nextflow_workflow { workflow.out.gene_bed, workflow.out.chrom_sizes, workflow.out.splicesites, - // workflow.out.bbsplit_index, workflow.out.sortmerna_index, workflow.out.star_index, workflow.out.rsem_index, @@ -419,7 +413,6 @@ nextflow_workflow { workflow.out.gene_bed, workflow.out.chrom_sizes, workflow.out.splicesites, - // workflow.out.bbsplit_index, workflow.out.sortmerna_index, workflow.out.star_index, workflow.out.rsem_index, @@ -487,7 +480,6 @@ nextflow_workflow { workflow.out.gene_bed, workflow.out.chrom_sizes, workflow.out.splicesites, - // workflow.out.bbsplit_index, workflow.out.sortmerna_index, workflow.out.star_index, workflow.out.rsem_index, @@ -555,7 +547,6 @@ nextflow_workflow { workflow.out.gene_bed, workflow.out.chrom_sizes, workflow.out.splicesites, - // workflow.out.bbsplit_index, workflow.out.sortmerna_index, workflow.out.star_index, workflow.out.rsem_index, @@ -623,7 +614,6 @@ nextflow_workflow { workflow.out.gene_bed, workflow.out.chrom_sizes, workflow.out.splicesites, - // workflow.out.bbsplit_index, workflow.out.sortmerna_index, workflow.out.star_index, workflow.out.rsem_index, @@ -691,7 +681,6 @@ nextflow_workflow { workflow.out.gene_bed, workflow.out.chrom_sizes, workflow.out.splicesites, - // workflow.out.bbsplit_index, workflow.out.sortmerna_index, workflow.out.star_index, workflow.out.rsem_index, @@ -759,7 +748,6 @@ nextflow_workflow { workflow.out.gene_bed, workflow.out.chrom_sizes, workflow.out.splicesites, - // workflow.out.bbsplit_index, workflow.out.sortmerna_index, workflow.out.star_index, workflow.out.rsem_index, @@ -827,7 +815,6 @@ nextflow_workflow { workflow.out.gene_bed, workflow.out.chrom_sizes, workflow.out.splicesites, - // workflow.out.bbsplit_index, workflow.out.sortmerna_index, workflow.out.star_index, workflow.out.rsem_index, @@ -895,7 +882,6 @@ nextflow_workflow { workflow.out.gene_bed, workflow.out.chrom_sizes, workflow.out.splicesites, - // workflow.out.bbsplit_index, workflow.out.sortmerna_index, workflow.out.star_index, workflow.out.rsem_index, @@ -962,7 +948,6 @@ nextflow_workflow { workflow.out.gene_bed, workflow.out.chrom_sizes, workflow.out.splicesites, - // workflow.out.bbsplit_index, workflow.out.sortmerna_index, workflow.out.star_index, workflow.out.rsem_index, @@ -1030,7 +1015,6 @@ nextflow_workflow { workflow.out.gene_bed, workflow.out.chrom_sizes, workflow.out.splicesites, - // workflow.out.bbsplit_index, workflow.out.sortmerna_index, workflow.out.star_index, workflow.out.rsem_index, @@ -1098,7 +1082,6 @@ nextflow_workflow { workflow.out.gene_bed, workflow.out.chrom_sizes, workflow.out.splicesites, - // workflow.out.bbsplit_index, workflow.out.sortmerna_index, workflow.out.star_index, workflow.out.rsem_index, @@ -1166,7 +1149,6 @@ nextflow_workflow { workflow.out.gene_bed, workflow.out.chrom_sizes, workflow.out.splicesites, - // workflow.out.bbsplit_index, workflow.out.sortmerna_index, workflow.out.star_index, workflow.out.rsem_index, @@ -1234,7 +1216,6 @@ nextflow_workflow { workflow.out.gene_bed, workflow.out.chrom_sizes, workflow.out.splicesites, - // workflow.out.bbsplit_index, workflow.out.sortmerna_index, workflow.out.star_index, workflow.out.rsem_index, @@ -1302,7 +1283,6 @@ nextflow_workflow { workflow.out.gene_bed, workflow.out.chrom_sizes, workflow.out.splicesites, - // workflow.out.bbsplit_index, workflow.out.sortmerna_index, workflow.out.star_index, workflow.out.rsem_index, @@ -1370,7 +1350,6 @@ nextflow_workflow { workflow.out.gene_bed, workflow.out.chrom_sizes, workflow.out.splicesites, - // workflow.out.bbsplit_index, workflow.out.sortmerna_index, workflow.out.star_index, workflow.out.rsem_index, diff --git a/subworkflows/local/quantify_rsem/tests/main.nf.test b/subworkflows/local/quantify_rsem/tests/main.nf.test index 1a0dc38bc..ab62162d0 100644 --- a/subworkflows/local/quantify_rsem/tests/main.nf.test +++ b/subworkflows/local/quantify_rsem/tests/main.nf.test @@ -4,7 +4,6 @@ nextflow_workflow { script "../main.nf" workflow "QUANTIFY_RSEM" config "./nextflow.config" - tag "RSEM_PREPAREREFERENCE" tag "RSEM_CALCULATEEXPRESSION" tag "RSEM_MERGE_COUNTS" diff --git a/subworkflows/nf-core/bam_dedup_stats_samtools_umitools/tests/main.nf.test b/subworkflows/nf-core/bam_dedup_stats_samtools_umitools/tests/main.nf.test index ae36541fe..c91f6c180 100644 --- a/subworkflows/nf-core/bam_dedup_stats_samtools_umitools/tests/main.nf.test +++ b/subworkflows/nf-core/bam_dedup_stats_samtools_umitools/tests/main.nf.test @@ -3,7 +3,6 @@ nextflow_workflow { name "Test Workflow BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS" script "../main.nf" workflow "BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS" - tag "UMITOOLS_DEDUP" tag "SAMTOOLS_INDEX" tag "BAM_STATS_SAMTOOLS" diff --git a/subworkflows/nf-core/bam_markduplicates_picard/tests/main.nf.test b/subworkflows/nf-core/bam_markduplicates_picard/tests/main.nf.test index 5ef337dc5..85c4b03c0 100644 --- a/subworkflows/nf-core/bam_markduplicates_picard/tests/main.nf.test +++ b/subworkflows/nf-core/bam_markduplicates_picard/tests/main.nf.test @@ -3,20 +3,9 @@ nextflow_workflow { name "Test Workflow BAM_MARKDUPLICATES_PICARD" script "../main.nf" workflow "BAM_MARKDUPLICATES_PICARD" - - tag "picard" - tag "picard/markduplicates" - tag "subworkflows" - tag "subworkflows_nfcore" - tag "bam_markduplicates_picard" - tag "subworkflows/bam_markduplicates_picard" - tag "subworkflows/bam_stats_samtools" - tag "bam_stats_samtools" - tag "samtools" - tag "samtools/flagstat" - tag "samtools/idxstats" - tag "samtools/index" - tag "samtools/stats" + tag "PICARD_MARKDUPLICATES" + tag "SAMTOOLS_INDEX" + tag "BAM_STATS_SAMTOOLS" test("sarscov2 - bam") { diff --git a/subworkflows/nf-core/bam_rseqc/tests/main.nf.test b/subworkflows/nf-core/bam_rseqc/tests/main.nf.test index 784f5dfbc..32e48d338 100644 --- a/subworkflows/nf-core/bam_rseqc/tests/main.nf.test +++ b/subworkflows/nf-core/bam_rseqc/tests/main.nf.test @@ -3,7 +3,6 @@ nextflow_workflow { name "Test Workflow BAM_RSEQC" script "../main.nf" workflow "BAM_RSEQC" - tag "RSEQC_BAMSTAT" tag "RSEQC_INNERDISTANCE" tag "RSEQC_INFEREXPERIMENT" diff --git a/subworkflows/nf-core/bam_sort_stats_samtools/tests/main.nf.test b/subworkflows/nf-core/bam_sort_stats_samtools/tests/main.nf.test index 18a971352..957effa3a 100644 --- a/subworkflows/nf-core/bam_sort_stats_samtools/tests/main.nf.test +++ b/subworkflows/nf-core/bam_sort_stats_samtools/tests/main.nf.test @@ -3,7 +3,6 @@ nextflow_workflow { name "Test Workflow BAM_SORT_STATS_SAMTOOLS" script "../main.nf" workflow "BAM_SORT_STATS_SAMTOOLS" - tag "SAMTOOLS_SORT" tag "SAMTOOLS_INDEX" tag "BAM_STATS_SAMTOOLS" diff --git a/subworkflows/nf-core/bam_stats_samtools/tests/main.nf.test b/subworkflows/nf-core/bam_stats_samtools/tests/main.nf.test index 0a6bff66a..d2c9752bb 100644 --- a/subworkflows/nf-core/bam_stats_samtools/tests/main.nf.test +++ b/subworkflows/nf-core/bam_stats_samtools/tests/main.nf.test @@ -3,7 +3,6 @@ nextflow_workflow { name "Test Workflow BAM_STATS_SAMTOOLS" script "../main.nf" workflow "BAM_STATS_SAMTOOLS" - tag "SAMTOOLS_STATS" tag "SAMTOOLS_IDXSTATS" tag "SAMTOOLS_FLAGSTAT" diff --git a/subworkflows/nf-core/bedgraph_bedclip_bedgraphtobigwig/tests/main.nf.test b/subworkflows/nf-core/bedgraph_bedclip_bedgraphtobigwig/tests/main.nf.test index 992ded0d1..6b576ca32 100644 --- a/subworkflows/nf-core/bedgraph_bedclip_bedgraphtobigwig/tests/main.nf.test +++ b/subworkflows/nf-core/bedgraph_bedclip_bedgraphtobigwig/tests/main.nf.test @@ -3,10 +3,9 @@ nextflow_workflow { name "Test Workflow BEDGRAPH_BEDCLIP_BEDGRAPHTOBIGWIG" script "../main.nf" workflow "BEDGRAPH_BEDCLIP_BEDGRAPHTOBIGWIG" - config "./nextflow.config" - tag "UCSC_BEDCLIP" tag "UCSC_BEDGRAPHTOBIGWIG" + config "./nextflow.config" test("sarscov2 [bedgraph] [genome_sizes]") { diff --git a/subworkflows/nf-core/fastq_align_hisat2/tests/main.nf.test b/subworkflows/nf-core/fastq_align_hisat2/tests/main.nf.test index 51f7e20d5..ab09c6ca2 100644 --- a/subworkflows/nf-core/fastq_align_hisat2/tests/main.nf.test +++ b/subworkflows/nf-core/fastq_align_hisat2/tests/main.nf.test @@ -4,7 +4,6 @@ nextflow_workflow { script "../main.nf" workflow "FASTQ_ALIGN_HISAT2" config "./nextflow.config" - tag "HISAT2_EXTRACTSPLICESITES" tag "HISAT2_BUILD" tag "HISAT2_ALIGN" diff --git a/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/main.nf.test b/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/main.nf.test index 80e06b98e..72029590e 100644 --- a/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/main.nf.test +++ b/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/main.nf.test @@ -4,15 +4,9 @@ nextflow_workflow { script "../main.nf" workflow "FASTQ_FASTQC_UMITOOLS_FASTP" config './nextflow.config' - - tag "subworkflows" - tag "subworkflows_nfcore" - tag "subworkflows/fastq_fastqc_umitools_fastp" - tag "fastq_fastqc_umitools_fastp" - tag "fastqc" - tag "umitools/extract" - tag "fastp" - + tag "FASTQC" + tag "UMITOOLS_EXTRACT" + tag "FASTP" test("sarscov2 paired-end [fastq]") { diff --git a/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/tests/main.nf.test b/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/tests/main.nf.test index 10681e8a2..d409bfe6f 100644 --- a/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/tests/main.nf.test +++ b/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/tests/main.nf.test @@ -4,7 +4,6 @@ nextflow_workflow { script "../main.nf" workflow "FASTQ_FASTQC_UMITOOLS_TRIMGALORE" config './nextflow.config' - tag "FASTQC" tag "UMITOOLS_EXTRACT" tag "TRIMGALORE" diff --git a/subworkflows/nf-core/fastq_subsample_fq_salmon/tests/main.nf.test b/subworkflows/nf-core/fastq_subsample_fq_salmon/tests/main.nf.test index 308c82685..98d5615f5 100644 --- a/subworkflows/nf-core/fastq_subsample_fq_salmon/tests/main.nf.test +++ b/subworkflows/nf-core/fastq_subsample_fq_salmon/tests/main.nf.test @@ -4,13 +4,9 @@ nextflow_workflow { script "../main.nf" workflow "FASTQ_SUBSAMPLE_FQ_SALMON" config "./nextflow.config" - tag "subworkflows" - tag "subworkflows_nfcore" - tag "subworkflows/fastq_subsample_fq_salmon" - tag "fastq_subsample_fq_salmon" - tag "salmon/index" - tag "fq/subsample" - tag "salmon/quant" + tag "SALMON_INDEX" + tag "FQ_SUBSAMPLE" + tag "SALMON_QUANT" test("homo_sapiens paired-end [fastq]") { diff --git a/subworkflows/nf-core/quantify_pseudo_alignment/tests/main.nf.test b/subworkflows/nf-core/quantify_pseudo_alignment/tests/main.nf.test index 26441b1ec..d53fb4ea8 100644 --- a/subworkflows/nf-core/quantify_pseudo_alignment/tests/main.nf.test +++ b/subworkflows/nf-core/quantify_pseudo_alignment/tests/main.nf.test @@ -3,18 +3,13 @@ nextflow_workflow { name "Test Workflow QUANTIFY_PSEUDO_ALIGNMENT" script "../main.nf" workflow "QUANTIFY_PSEUDO_ALIGNMENT" - - tag "subworkflows" - tag "subworkflows_nfcore" - tag "subworkflows/quantify_pseudo_alignment" - - tag "salmon/index" - tag "salmon/quant" - tag "kallisto/index" - tag "kallisto/quant" - tag "custom/tx2gene" - tag "tximeta/tximport" - tag "summarizedexperiment/summarizedexperiment" + tag "SALMON_INDEX" + tag "KALLISTO_INDEX" + tag "SALMON_QUANT" + tag "KALLISTO_QUANT" + tag "CUSTOM_TX2GENE" + tag "TXIMETA_TXIMPORT" + tag "SUMMARIZEDEXPERIMENT_SUMMARIZEDEXPERIMENT" test("salmon") { From 816bbde55504e422eaa2af2ca7b351be509ba8f2 Mon Sep 17 00:00:00 2001 From: Harshil Patel Date: Wed, 19 Jun 2024 21:01:48 +0100 Subject: [PATCH 379/634] Rename pipeline level tests --- tests/{default.main.nf.test => default.nf.test} | 6 ++---- ...{default.main.nf.test.snap => default.nf.test.snap} | 0 ...s.main.nf.test => featurecounts_group_type.nf.test} | 8 ++++---- tests/{kallisto.main.nf.nf.test => kallisto.nf.test} | 6 +++--- ...ped_reads.main.nf.test => min_mapped_reads.nf.test} | 8 ++++---- ...e_ribo_rna.main.nf.test => remove_ribo_rna.nf.test} | 8 ++++---- tests/{salmon.main.nf.test => salmon.nf.test} | 6 +++--- tests/{skip_qc.main.nf.test => skip_qc.nf.test} | 10 +++++----- ...kip_trimming.main.nf.test => skip_trimming.nf.test} | 10 +++++----- 9 files changed, 30 insertions(+), 32 deletions(-) rename tests/{default.main.nf.test => default.nf.test} (97%) rename tests/{default.main.nf.test.snap => default.nf.test.snap} (100%) rename tests/{featurecounts.main.nf.test => featurecounts_group_type.nf.test} (58%) rename tests/{kallisto.main.nf.nf.test => kallisto.nf.test} (65%) rename tests/{min_mapped_reads.main.nf.test => min_mapped_reads.nf.test} (60%) rename tests/{remove_ribo_rna.main.nf.test => remove_ribo_rna.nf.test} (61%) rename tests/{salmon.main.nf.test => salmon.nf.test} (66%) rename tests/{skip_qc.main.nf.test => skip_qc.nf.test} (54%) rename tests/{skip_trimming.main.nf.test => skip_trimming.nf.test} (52%) diff --git a/tests/default.main.nf.test b/tests/default.nf.test similarity index 97% rename from tests/default.main.nf.test rename to tests/default.nf.test index 46e11692b..388c40272 100644 --- a/tests/default.main.nf.test +++ b/tests/default.nf.test @@ -2,10 +2,10 @@ nextflow_pipeline { name "Test pipeline with default settings" script "../main.nf" - tag "rnaseq" + tag "RNASEQ" tag "PIPELINE" - test("Default profile test") { + test("Parameters: default") { when { params { @@ -14,8 +14,6 @@ nextflow_pipeline { } then { - - assertAll( { assert workflow.success }, { assert snapshot(UTILS.removeNextflowVersion("$outputDir/pipeline_info/nf_core_rnaseq_software_mqc_versions.yml")).match("software_versions") }, diff --git a/tests/default.main.nf.test.snap b/tests/default.nf.test.snap similarity index 100% rename from tests/default.main.nf.test.snap rename to tests/default.nf.test.snap diff --git a/tests/featurecounts.main.nf.test b/tests/featurecounts_group_type.nf.test similarity index 58% rename from tests/featurecounts.main.nf.test rename to tests/featurecounts_group_type.nf.test index cb978a8c6..15b4e4f8b 100644 --- a/tests/featurecounts.main.nf.test +++ b/tests/featurecounts_group_type.nf.test @@ -1,15 +1,15 @@ nextflow_pipeline { - name "Test pipeline with featureCounts with group type false" + name "Test pipeline with --featurecounts_group_type false" script "../main.nf" - tag "rnaseq" + tag "RNASEQ" tag "PIPELINE" - test("--featurecounts_group_type false") { + test("Parameters: --featurecounts_group_type false") { when { params { - outdir = "$outputDir" + outdir = "$outputDir" featurecounts_group_type = false } } diff --git a/tests/kallisto.main.nf.nf.test b/tests/kallisto.nf.test similarity index 65% rename from tests/kallisto.main.nf.nf.test rename to tests/kallisto.nf.test index 4a9d30cd5..8815de1a4 100644 --- a/tests/kallisto.main.nf.nf.test +++ b/tests/kallisto.nf.test @@ -1,11 +1,11 @@ nextflow_pipeline { - name "Test pipeline using Kallisto" + name "Test pipeline with --pseudo_aligner kallisto --skip_qc --skip_alignment" script "../main.nf" - tag "rnaseq" + tag "RNASEQ" tag "PIPELINE" - test("Default profile test") { + test("Parameters: --pseudo_aligner kallisto --skip_qc --skip_alignment") { when { params { diff --git a/tests/min_mapped_reads.main.nf.test b/tests/min_mapped_reads.nf.test similarity index 60% rename from tests/min_mapped_reads.main.nf.test rename to tests/min_mapped_reads.nf.test index 6d59bfafd..7f0f5e60c 100644 --- a/tests/min_mapped_reads.main.nf.test +++ b/tests/min_mapped_reads.nf.test @@ -1,15 +1,15 @@ nextflow_pipeline { - name "Test pipeline with min_mapped_reads = 90" + name "Test pipeline with --min_mapped_reads 90" script "../main.nf" - tag "rnaseq" + tag "RNASEQ" tag "PIPELINE" - test("--min_mapped_reads 90") { + test("Parameters: --min_mapped_reads 90") { when { params { - outdir = "$outputDir" + outdir = "$outputDir" min_mapped_reads = 90 } } diff --git a/tests/remove_ribo_rna.main.nf.test b/tests/remove_ribo_rna.nf.test similarity index 61% rename from tests/remove_ribo_rna.main.nf.test rename to tests/remove_ribo_rna.nf.test index b4e54a509..103bb187c 100644 --- a/tests/remove_ribo_rna.main.nf.test +++ b/tests/remove_ribo_rna.nf.test @@ -1,15 +1,15 @@ nextflow_pipeline { - name "Test pipeline with ribosomal RNA removal" + name "Test pipeline with --remove_ribo_rna" script "../main.nf" - tag "rnaseq" + tag "RNASEQ" tag "PIPELINE" - test("--remove_ribo_rna") { + test("Parameters: --remove_ribo_rna") { when { params { - outdir = "$outputDir" + outdir = "$outputDir" remove_ribo_rna = true } } diff --git a/tests/salmon.main.nf.test b/tests/salmon.nf.test similarity index 66% rename from tests/salmon.main.nf.test rename to tests/salmon.nf.test index a19210f0d..329c68baa 100644 --- a/tests/salmon.main.nf.test +++ b/tests/salmon.nf.test @@ -1,11 +1,11 @@ nextflow_pipeline { - name "Test pipeline using Salmon" + name "Test pipeline with --pseudo_aligner salmon --skip_qc --skip_alignment" script "../main.nf" - tag "rnaseq" + tag "RNASEQ" tag "PIPELINE" - test("Default profile test") { + test("Parameters: --pseudo_aligner salmon --skip_qc --skip_alignment") { when { params { diff --git a/tests/skip_qc.main.nf.test b/tests/skip_qc.nf.test similarity index 54% rename from tests/skip_qc.main.nf.test rename to tests/skip_qc.nf.test index f9a34fd8f..c4f7c1c5b 100644 --- a/tests/skip_qc.main.nf.test +++ b/tests/skip_qc.nf.test @@ -1,16 +1,16 @@ nextflow_pipeline { - name "Test pipeline with QC disabled" + name "Test pipeline with --skip_qc" script "../main.nf" - tag "rnaseq" + tag "RNASEQ" tag "PIPELINE" - test("--skip_qc") { + test("Parameters: --skip_qc") { when { params { - outdir = "$outputDir" - skip_qc = true + outdir = "$outputDir" + skip_qc = true } } diff --git a/tests/skip_trimming.main.nf.test b/tests/skip_trimming.nf.test similarity index 52% rename from tests/skip_trimming.main.nf.test rename to tests/skip_trimming.nf.test index 8a9bf5a9d..c64702082 100644 --- a/tests/skip_trimming.main.nf.test +++ b/tests/skip_trimming.nf.test @@ -1,16 +1,16 @@ nextflow_pipeline { - name "Test pipeline with trimming disabled" + name "Test pipeline with --skip_trimming" script "../main.nf" - tag "rnaseq" + tag "RNASEQ" tag "PIPELINE" - test("--skip_trimming") { + test("Parameters: --skip_trimming") { when { params { - outdir = "$outputDir" - skip_qc = true + outdir = "$outputDir" + skip_trimming = true } } From ce66b00662abd2eb1dba3709f27db0af8bc87f87 Mon Sep 17 00:00:00 2001 From: Harshil Patel Date: Wed, 19 Jun 2024 21:22:33 +0100 Subject: [PATCH 380/634] Update CHANGELOG with new parameters --- CHANGELOG.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index effb21ab8..4c1e8cf09 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -95,8 +95,10 @@ Thank you to everyone else that has contributed by reporting bugs, enhancements | Old parameter | New parameter | | ------------------ | -------------------------------- | -| | `--sortmerna_index` | | | `--pipelines_testdata_base_path` | +| | `--sortmerna_index` | +| | `--stranded_threshold` | +| | `--unstranded_threshold` | | `--test_data_base` | | ### Software dependencies From c7c48d86d1fb63f439d7b49877407f5ecf93a63a Mon Sep 17 00:00:00 2001 From: Harshil Patel Date: Wed, 19 Jun 2024 21:22:49 +0100 Subject: [PATCH 381/634] Change number param to have decimal place --- nextflow_schema.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nextflow_schema.json b/nextflow_schema.json index db773cffc..03b2e2c22 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -411,7 +411,7 @@ }, "min_mapped_reads": { "type": "number", - "default": 5, + "default": 5.0, "fa_icon": "fas fa-percentage", "description": "Minimum percentage of uniquely mapped reads below which samples are removed from further processing.", "help_text": "Some downstream steps in the pipeline will fail if this threshold is too low." From 1c6a944058aa4d706e4a54ab43184f82fa1f5c85 Mon Sep 17 00:00:00 2001 From: Harshil Patel Date: Wed, 19 Jun 2024 21:23:22 +0100 Subject: [PATCH 382/634] Fix spacing --- subworkflows/local/utils_nfcore_rnaseq_pipeline/main.nf | 3 --- 1 file changed, 3 deletions(-) diff --git a/subworkflows/local/utils_nfcore_rnaseq_pipeline/main.nf b/subworkflows/local/utils_nfcore_rnaseq_pipeline/main.nf index 14119edcb..fe080ce13 100644 --- a/subworkflows/local/utils_nfcore_rnaseq_pipeline/main.nf +++ b/subworkflows/local/utils_nfcore_rnaseq_pipeline/main.nf @@ -552,7 +552,6 @@ def biotypeInGtf(gtf_file, biotype) { // Function to determine library type by comparing type counts. Consistent // between Salmon and RSeQC // - def calculateStrandedness(forwardFragments, reverseFragments, unstrandedFragments, stranded_threshold=0.8, unstranded_threshold=0.1) { def totalFragments = forwardFragments + reverseFragments + unstrandedFragments def totalStrandedFragments = forwardFragments + reverseFragments @@ -583,7 +582,6 @@ def calculateStrandedness(forwardFragments, reverseFragments, unstrandedFragment // // Function that parses Salmon quant 'lib_format_counts.json' output file to get inferred strandedness // - def getSalmonInferredStrandedness(json_file, stranded_threshold = 0.8, unstranded_threshold = 0.1) { // Parse the JSON content of the file def libCounts = new JsonSlurper().parseText(json_file.text) @@ -610,7 +608,6 @@ def getSalmonInferredStrandedness(json_file, stranded_threshold = 0.8, unstrande // // Function that parses RSeQC infer_experiment output file to get inferred strandedness // - def getInferexperimentStrandedness(inferexperiment_file, stranded_threshold = 0.8, unstranded_threshold = 0.1) { def forwardFragments = 0 def reverseFragments = 0 From 302e456090fe3d1f479607493855c79348f3ecbc Mon Sep 17 00:00:00 2001 From: Harshil Patel Date: Wed, 19 Jun 2024 21:23:33 +0100 Subject: [PATCH 383/634] Fix syntax consistency --- workflows/rnaseq/main.nf | 35 +++++++++++++++++------------------ 1 file changed, 17 insertions(+), 18 deletions(-) diff --git a/workflows/rnaseq/main.nf b/workflows/rnaseq/main.nf index c240251f9..02e1d25c2 100755 --- a/workflows/rnaseq/main.nf +++ b/workflows/rnaseq/main.nf @@ -15,9 +15,8 @@ include { MULTIQC_CUSTOM_BIOTYPE } from '../../modules/local/multiqc // // SUBWORKFLOW: Consisting of a mix of local and nf-core/modules // -include { ALIGN_STAR } from '../../subworkflows/local/align_star' -include { QUANTIFY_RSEM } from '../../subworkflows/local/quantify_rsem' - +include { ALIGN_STAR } from '../../subworkflows/local/align_star' +include { QUANTIFY_RSEM } from '../../subworkflows/local/quantify_rsem' include { checkSamplesAfterGrouping } from '../../subworkflows/local/utils_nfcore_rnaseq_pipeline' include { multiqcTsvFromList } from '../../subworkflows/local/utils_nfcore_rnaseq_pipeline' include { getSalmonInferredStrandedness } from '../../subworkflows/local/utils_nfcore_rnaseq_pipeline' @@ -311,13 +310,14 @@ workflow RNASEQ { .out .lib_format_counts .join(ch_strand_fastq.auto_strand) - .map { meta, json, reads -> - def salmon_strand_analysis = getSalmonInferredStrandedness(json, stranded_threshold = params.stranded_threshold, unstranded_threshold = params.unstranded_threshold) - strandedness = salmon_strand_analysis.inferred_strandedness - if ( strandedness == 'undetermined' ){ - strandedness = 'unstranded' - } - return [ meta + [ strandedness: strandedness, salmon_strand_analysis: salmon_strand_analysis ], reads ] + .map { + meta, json, reads -> + def salmon_strand_analysis = getSalmonInferredStrandedness(json, stranded_threshold=params.stranded_threshold, unstranded_threshold=params.unstranded_threshold) + strandedness = salmon_strand_analysis.inferred_strandedness + if (strandedness == 'undetermined') { + strandedness = 'unstranded' + } + return [ meta + [ strandedness: strandedness, salmon_strand_analysis: salmon_strand_analysis ], reads ] } .mix(ch_strand_fastq.known_strand) .set { ch_strand_inferred_filtered_fastq } @@ -749,11 +749,10 @@ workflow RNASEQ { def status = 'fail' def multiqc_lines = [] - - if (meta.salmon_strand_analysis){ + if (meta.salmon_strand_analysis) { salmon_strandedness = meta.salmon_strand_analysis.inferred_strandedness - if (salmon_strandedness == rseqc_strandedness && rseqc_strandedness != 'undetermined'){ + if (salmon_strandedness == rseqc_strandedness && rseqc_strandedness != 'undetermined') { status = 'pass' } multiqc_lines = [ @@ -761,18 +760,18 @@ workflow RNASEQ { "$meta.id\tRSeQC\t$status\tauto\t${rseqc_inferred_strand.values().join('\t')}" ] } - else{ + else { if (meta.strandedness == rseqc_strandedness) { status = 'pass' } - multiqc_lines = [ "$meta.id\tRSeQC\t$status\t$meta.strandedness\t${rseqc_inferred_strand.values().join('\t')}" ] } return [ meta, status, multiqc_lines ] } - .multiMap{ meta, status, multiqc_lines -> - status: [ meta.id, status == 'pass' ] - multiqc_lines: multiqc_lines + .multiMap { + meta, status, multiqc_lines -> + status: [ meta.id, status == 'pass' ] + multiqc_lines: multiqc_lines } // Store the statuses for output From bcbfe370275c603d7e71a45fd30eff684046d7f6 Mon Sep 17 00:00:00 2001 From: Harshil Patel Date: Wed, 19 Jun 2024 21:29:25 +0100 Subject: [PATCH 384/634] Fix prettier --- workflows/rnaseq/main.nf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/workflows/rnaseq/main.nf b/workflows/rnaseq/main.nf index 02e1d25c2..288ed8c60 100755 --- a/workflows/rnaseq/main.nf +++ b/workflows/rnaseq/main.nf @@ -310,7 +310,7 @@ workflow RNASEQ { .out .lib_format_counts .join(ch_strand_fastq.auto_strand) - .map { + .map { meta, json, reads -> def salmon_strand_analysis = getSalmonInferredStrandedness(json, stranded_threshold=params.stranded_threshold, unstranded_threshold=params.unstranded_threshold) strandedness = salmon_strand_analysis.inferred_strandedness From 1cf2d14154ae3b951fce459d182a0503f014423e Mon Sep 17 00:00:00 2001 From: Harshil Patel Date: Thu, 20 Jun 2024 09:14:21 +0100 Subject: [PATCH 385/634] Update CHANGELOG --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4c1e8cf09..753bb0306 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -90,6 +90,7 @@ Thank you to everyone else that has contributed by reporting bugs, enhancements - [PR #1321](https://github.com/nf-core/rnaseq/pull/1321) - Remove push and release triggers from CI - [PR #1322](https://github.com/nf-core/rnaseq/pull/1322) - Use pre-built Github Action to detect nf-test changes - [PR #1323](https://github.com/nf-core/rnaseq/pull/1323) - Update actions/checkout to v4 +- [PR #1324](https://github.com/nf-core/rnaseq/pull/1324) - Fix tags entries and rename pipeline level tests ### Parameters From 12412bb9c6418721b06872755b496277ae9b77f8 Mon Sep 17 00:00:00 2001 From: Luke Zappia Date: Thu, 20 Jun 2024 10:40:56 +0200 Subject: [PATCH 386/634] Apply suggestions from code review Co-authored-by: Jonathan Manning --- docs/usage.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/usage.md b/docs/usage.md index e381addb8..d5acd1815 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -164,13 +164,13 @@ Notes: - If `--additional_fasta` is provided then the features in this file (e.g. ERCC spike-ins) will be automatically concatenated onto both the reference FASTA file as well as the GTF annotation before building the appropriate indices. - When using `--aligner star_rsem`, both the STAR and RSEM indices should be present in the path specified by `--rsem_index` (see [#568](https://github.com/nf-core/rnaseq/issues/568)). -### Reference genome +#### Reference genome It is recommended to provide the most complete reference genome for your species, without additional loci (haplotypes) or patches. For model organisms such as mouse or human, this is the "primary assembly," which includes the reference chromosomes and some additional scaffolds. For the human assembly GRCh38 (hg38), use the `GRCh38.primary_assembly.genome.fa.gz` file from GENCODE or the `Homo_sapiens.GRCh38.dna.primary_assembly.fa.gz` file from Ensembl. These files cover the largest portion of the reference genome without including multiple copies of the same sequence, which can confuse aligners like STAR. Most other species (e.g., fly, cow, dog) do not have a primary assembly. In these cases, use the complete reference sequence, or "toplevel" assembly. The main difference between the primary and toplevel assemblies is the inclusion of alternative loci (haplotypes), which typically do not exist for species outside of mouse and human. -### Gene annotation +#### Gene annotation Gene annotations are updated more frequently than the reference genome sequence, so you much choose an appropriate annotation version (e.g. Ensembl release) We recommend using sources with well-defined, versioned releases such as ENSEMBL or GENCODE. Generally, it is best to use the most recent release for the latest gene annotations. However, if you are combining your data with older datasets, use the annotation version previously used for consistency. @@ -178,7 +178,7 @@ Once you have chosen a release, select the annotation file that matches your ref GENCODE also provides "basic" annotations, which include only representative transcripts, but we do not recommend using these. -Gene annotations provide a primary identifier for each feature as well as a common name. For example, the Ensembl ID `ENSG00000254647` corresponds to the `INS` gene, which encodes the insulin protein. While gene names are more familiar, it is crucial to retain and use the primary identifiers as they are unique and easier to map between annotation versions or sources. +Ensure that the annotation files use gene IDs as the primary identifier, not the gene name/ symbol. For example, the Ensembl ID `ENSG00000254647` corresponds to the `INS` gene, which encodes the insulin protein. While gene names are more familiar, it is crucial to retain and use the primary identifiers as they are unique and easier to map between annotation versions or sources. To take advantage of all the quality control modules implemented in the pipeline, the gene annotation should include a `gene_biotype` field which describes the function of each feature (protein coding, long non-coding etc.). This is usually the case for annotations from GENCODE or Ensembl but may not be if your annotation comes from another source. If your annotation does not include this field, please set the `--skip_biotype_qc` option to avoid running the steps that rely on it. @@ -205,7 +205,7 @@ By default, indices are generated dynamically by the workflow for tools such as Once you have the indices from a workflow run you should save them somewhere central and reuse them in subsequent runs using custom config files or command line parameters such as `--star_index '/path/to/STAR/index/'`. -When doing this, it is important to record the genome and annotations versions they correspond to so you can easily locate the correct index to use and the program version as an index produced with one version may not have a format compatible with other versions. +Note the genome and annotation versions as well as the versions of the software used for indexing, as an index created with one version may not be compatible with other versions. ### GENCODE From f1c85ebea2057b77b0e9c526a719eac78e17ce3d Mon Sep 17 00:00:00 2001 From: Luke Zappia Date: Thu, 20 Jun 2024 10:48:11 +0200 Subject: [PATCH 387/634] Minor tidying to usage docs --- docs/usage.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/usage.md b/docs/usage.md index 5d1c5f105..1510dee29 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -190,7 +190,7 @@ Once you have chosen a release, select the annotation file that matches your ref GENCODE also provides "basic" annotations, which include only representative transcripts, but we do not recommend using these. -Ensure that the annotation files use gene IDs as the primary identifier, not the gene name/ symbol. For example, the Ensembl ID `ENSG00000254647` corresponds to the `INS` gene, which encodes the insulin protein. While gene names are more familiar, it is crucial to retain and use the primary identifiers as they are unique and easier to map between annotation versions or sources. +Ensure that the annotation files use gene IDs as the primary identifier, not the gene name/symbol. For example, the Ensembl ID `ENSG00000254647` corresponds to the `INS` gene, which encodes the insulin protein. While gene names are more familiar, it is crucial to retain and use the primary identifiers as they are unique and easier to map between annotation versions or sources. To take advantage of all the quality control modules implemented in the pipeline, the gene annotation should include a `gene_biotype` field which describes the function of each feature (protein coding, long non-coding etc.). This is usually the case for annotations from GENCODE or Ensembl but may not be if your annotation comes from another source. If your annotation does not include this field, please set the `--skip_biotype_qc` option to avoid running the steps that rely on it. @@ -217,7 +217,7 @@ By default, indices are generated dynamically by the workflow for tools such as Once you have the indices from a workflow run you should save them somewhere central and reuse them in subsequent runs using custom config files or command line parameters such as `--star_index '/path/to/STAR/index/'`. -Note the genome and annotation versions as well as the versions of the software used for indexing, as an index created with one version may not be compatible with other versions. +Remember to note the genome and annotation versions as well as the versions of the software used for indexing, as an index created with one version may not be compatible with other versions. ### GENCODE From 805339849319bbeda35ba0282d77a54571ae27df Mon Sep 17 00:00:00 2001 From: Luke Zappia Date: Thu, 20 Jun 2024 10:57:16 +0200 Subject: [PATCH 388/634] Run pre-commit --- docs/usage.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/usage.md b/docs/usage.md index 1510dee29..85ac90888 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -184,7 +184,7 @@ Most other species (e.g., fly, cow, dog) do not have a primary assembly. In thes #### Gene annotation -Gene annotations are updated more frequently than the reference genome sequence, so you much choose an appropriate annotation version (e.g. Ensembl release) We recommend using sources with well-defined, versioned releases such as ENSEMBL or GENCODE. Generally, it is best to use the most recent release for the latest gene annotations. However, if you are combining your data with older datasets, use the annotation version previously used for consistency. +Gene annotations are updated more frequently than the reference genome sequence, so you must choose an appropriate annotation version (e.g. Ensembl release). We recommend using sources with well-defined, versioned releases such as ENSEMBL or GENCODE. Generally, it is best to use the most recent release for the latest gene annotations. However, if you are combining your data with older datasets, use the annotation version previously used for consistency. Once you have chosen a release, select the annotation file that matches your reference genome. For the human primary assembly, use the comprehensive annotation (e.g., `gencode.{release}.primary_assembly.annotation.gtf.gz` from GENCODE or `Homo_sapiens.GRCh38.{release}.gtf.gz` from Ensembl). For other species, like fly, use the annotation matching the toplevel assembly (e.g., `Drosophila_melanogaster.BDGP6.46.{release}.gtf.gz` from Ensembl). From f1ac07731e11608e3f72533a47780462f36f20e1 Mon Sep 17 00:00:00 2001 From: Harshil Patel Date: Thu, 20 Jun 2024 11:56:49 +0100 Subject: [PATCH 389/634] Move config block back where it was --- .../bedgraph_bedclip_bedgraphtobigwig/tests/main.nf.test | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/subworkflows/nf-core/bedgraph_bedclip_bedgraphtobigwig/tests/main.nf.test b/subworkflows/nf-core/bedgraph_bedclip_bedgraphtobigwig/tests/main.nf.test index 6b576ca32..fa1f2364c 100644 --- a/subworkflows/nf-core/bedgraph_bedclip_bedgraphtobigwig/tests/main.nf.test +++ b/subworkflows/nf-core/bedgraph_bedclip_bedgraphtobigwig/tests/main.nf.test @@ -3,9 +3,9 @@ nextflow_workflow { name "Test Workflow BEDGRAPH_BEDCLIP_BEDGRAPHTOBIGWIG" script "../main.nf" workflow "BEDGRAPH_BEDCLIP_BEDGRAPHTOBIGWIG" + config "./nextflow.config" tag "UCSC_BEDCLIP" tag "UCSC_BEDGRAPHTOBIGWIG" - config "./nextflow.config" test("sarscov2 [bedgraph] [genome_sizes]") { From 634e44af86989ece1fa8b0882376e04095cc1d1c Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Thu, 20 Jun 2024 11:59:32 +0100 Subject: [PATCH 390/634] Fix multiqc message --- workflows/rnaseq/assets/multiqc/multiqc_config.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/workflows/rnaseq/assets/multiqc/multiqc_config.yml b/workflows/rnaseq/assets/multiqc/multiqc_config.yml index dca1ddab8..4a00d844e 100644 --- a/workflows/rnaseq/assets/multiqc/multiqc_config.yml +++ b/workflows/rnaseq/assets/multiqc/multiqc_config.yml @@ -169,7 +169,8 @@ custom_data: format: "{:.2f}" fail_strand_check: section_name: "Strandedness Checks" - description: "

    The strandedness used for analysis in this workflow can be provided by a user, or automatically inferred by Salmon using a sample of reads. In either case, strandedness is verified at the end of the workflow, using the RSeQC RSeQC infer_experiment.py operating on genomic alignments. In this table a pass indicates a match between suplied (or inferred by Salmon) and RSeQC, fail indicates a mismatch or 'undetermined' strandedness. Undetermined strandedness can indicate QC problems, including possible genomic DNA contamination.

    Note:Rows are duplicated for an 'auto' setting to allow comparison of statistics between inference methods.

    " + description: "

    The strandedness used for analysis in this workflow can either be provided by the user or automatically inferred by Salmon using a sample of reads. In both cases, strandedness is verified at the end of the workflow using RSeQC's infer_experiment.py on genomic alignments. In this table, a pass indicates a match between the supplied strandedness (or that inferred by Salmon) and RSeQC results. A fail indicates a mismatch or 'undetermined' strandedness. 'Undetermined' strandedness can signal QC issues, including potential genomic DNA contamination.

    +

    Note: Rows are duplicated for an 'auto' setting to allow comparison of statistics between inference methods.

    " plot_type: "table" pconfig: id: "fail_strand_check_table" From 14d27c31188502ac57d81bca65bc202d5d270c3c Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Thu, 20 Jun 2024 11:59:52 +0100 Subject: [PATCH 391/634] Fix params issues --- nextflow_schema.json | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/nextflow_schema.json b/nextflow_schema.json index db773cffc..49e836f14 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -458,15 +458,14 @@ "minimum": 0.5, "maximum": 1.0, "default": 0.8, - "description": "The fraction of stranded reads that must be assigned to a strandedness for confident assignment. Must be at least 0.5.", - "help_text": "To be assigned as unstranded, read fractions must be different by less than 1- this value. Samples not convincingly assigned as stranded or unstranded will be assigned as 'undetermined'. These will be treated as unstranded but flagged as potential problems in the final MultiQC report." + "description": "The fraction of stranded reads that must be assigned to a strandedness for confident assignment. Must be at least 0.5." }, "unstranded_threshold": { "type": "number", "minimum": 0.0, "maximum": 1.0, "default": 0.1, - "description": "The difference in fraction of stranded reads assigned to 'forward' and 'reverse' below which a sample is classified as 'unstranded'" + "description": "The difference in fraction of stranded reads assigned to 'forward' and 'reverse' below which a sample is classified as 'unstranded'. By default the forward and reverse fractions must differ by less than 0.1 for the sample to be called as unstranded." } } }, From 36617e446d7533fbaefd1487819ec68066316957 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Thu, 20 Jun 2024 12:02:12 +0100 Subject: [PATCH 392/634] Update mqc strand screenshot --- docs/images/mqc_strand_check.png | Bin 305420 -> 310147 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/docs/images/mqc_strand_check.png b/docs/images/mqc_strand_check.png index f6cc381fd9e96d7d305c02b742ddab875e5bb58f..54ae2f27580c468da8c55bc28b1798b9dbac881d 100644 GIT binary patch literal 310147 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®VxfP#X&P77kyJTTQi>&+E6mS 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%0A!jKtl0}%#@D7ZzmM*Vl979Bw#Ea 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�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 literal 305420 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

    J>voeIa)+IbidWFgMr=U*K%~bNZvlH1t%@vaV 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 z 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

    ( zcYA+zulBILE|6s4JlWwqVXE$(l$St#eWC1(<#k%XL*wj06M8fjos-^H>wUvRmn+$L zXyn%Fy|u-o>^t~mmHdd(nPKj8&Zk&)CycA|Q6oyqqu3t|Pg%;fCCqK>XWdTe@lsY1 zj;te8>zb>DuEiplX&kELyWcHQmdK2nVZ;I9YD2pji3v!I?Qfwhjf+^AH!=}6V9VU{ z5U=(%CG?d1sInTiA$fUMd<#|;VsHJb{lj=`dLCy0&TH%xi9VX$5-lFLD!4}-IGo2P zoU1bJ76!P^64pPMA8Sk^wyL{0_q)-KH1s29`WaraZgl`xJ1_n@J!HL$7h9eYt%95``i>kMqq=uBu3vu^j@nWkeWp7q zw)60-j3QWUou<|;=< zTE~2dob)<)=6i~w#4GwM{*Fh+yA`H3WWc};SWshDw(&;u=6l?ri_`K_R1Uld_RU`Tih8e z5tl;-&b(DeP+&(Q8SOO-&E1h;b<}qLerU!JTHn6*6K*;dj5F(# zg+H71Yj`{`JUWutm2gP^kH}5pEZ*6R93Sv-aS&Ac=6QCHKKBsvOgP#UYMAuO0TS+C z6w(*LE3*)_Qlh4V{Y9)dp6j|ATW$X)@&aXt4L#3s(&xIQvJ{uD961QO1^Z36$VCBG^cRr$n#wK9i^{>5+ficB-jNvK z6D5tTogROA_w{(3Bc7%x=Sj1XyhzkrkykuQWBuwlUH_5%OLmx~X6g_HN4^@-ag-8Y z(PhzUN2SSGEfLC#sM0olFFAHmBM97U?`YObs1nREJ_Z{)yxPT z4jKO(=w2Zmd+NOSIVdmV$t(~RC;UqNu1ED1n@h{WOA@L_c-DFxpIS8KRV}_hl8Flq zyU@pgd3>&pegC9{r`bS&*G;oZ^IcRW0W=4hNlak27xvzt0^=sNP&Qqq=E-uVp`W7l zVyM_zxdG?@N7`FPMb)=|yp({nv^1g&NQZPIA_4=5(%mREbT`t2NOwwzGz{I{T|;+w z_u1U{|2gZtJj!W7wiQwB1L^$0MPXd$ zza|8hwtEZ&y(5w790+LcR_CFSI;Rs?dnWIjKXM4aYmVmIQ5+oddazT_)S$06ev&hXbqYxi^@`ZKQ z=`5w~Xm=c2eW%C8oC^+qzB}K{#&(^>R_fJO<=ki49FmH|#z*l(F~~BTb@B$OsgbQ*oL4~l6xwKl|#2hQa^F&CQ;B1G?y*_#_ev1MRr4#0$^E3my!e{Dp&GJ7nS{ z^o1)P$nnQ)&c;1>CfZ>@vDv0g?Jn2$rzj!sOB_;xFRnutMe;X3^EW?)VcK1ku&x}d z25Htq(fbWtry4JjYc$$K;d@4u-cYT84e0e&Kns5`feznxM{3?_q8}9<2*$iFLVG`G zE=SCxWhdn{of=`Q02gSw&6I6;cL=Q25+7=t|2}(9xib@}LONvquvR~21y9aH9`Lvb zzh%(4i?ZDgwbpg@AoT<4$-3@io>nf~qRpv!egu>_Dn~)G>-MiPk6;Z|X{$K%t4d?Z z#TG&fg~~L!avZ3i(u@C^hI{sZPX_zh!BXt$BJN3Z1BHn!>TB@Wmzqz)^wp4Z;uI~=T7PS?-*GMtcUzdAR zv}L{>=l2F(~nYhv4S~vP^uYHC(UqgKO>2;Hc?S|t0BwF!!O}K|K zFs>MlozB}`St~R1t2RS-I^fhLKk>1R#6}?0!FBIdGFIzG=CoQ~Z6@@1T8WnTpn~4R zJh$QzH17p(EV{GJ7BbAIeW#F2<|~X@=EP9 zDU#pTTf5UrC{$j}h-g>*d_``9uuKPpILX;qS!47<&7J&E*8Zw)#jT~zPeFAvTopaND(Ku^|V6d0tby!Ti~O(s#RYQOG5auvQIEyJjNt~ceeEVwm}unV3WMhf4B z2Rza|cBAPSDZC%I=6?{BaY2BaihLN#-X~TQ)Y}hnptD!5`(U-YzQDgOzd4?KurS5S z1yogOx5iRY;slh?lFwfXN($_p75eR4CtEMEl`deWNb>dvbdMn1g^yv(diRD6Q}7m^ zMZUD;pW|!K0U^9xNVPCtW$8Zze6|>BXb??=Pj4&F6z{fDTnKZG?3jW8bMHCCY{cE< zhVinJAN;t~tx|NfvbE2eyTv_0-ICnnomDxF7;8&q{%P@&Tn=?e`zGQc;e8EyjvUoe zNP)S*&6ein%rB@6zQT^%K}{DMmLz#;RF_3Q)43ReKNQ$)16Q?TFkNLa1!k@$SZ!LQ zzoQ2oeRmRZ>gWS9)U7To&|rGJ<4dk#+B+1)P|prE01+|9Ez`hmqHlq)Burr!{wq+z zpqO_nr1<)USB|s&6s#q}s&<fdELk<4 zdS1IVv#{iD*nECIrMLZ6&9b1kQbCL3)TU;^Bs_-tK*jm0Ug{FIeOU9zb^z#&*z&!Y zXH&H*d=>gwAfsIk-qn|7TQ0wbOHI|_dRnHAjg}61Bs;w#ixbU-EHOh?DRDo}Qf;Id zOscIf84E?(v~T{Yg0`FWjsTm%utKF{6iH==|TEt6Fw`4_3g2nc^RlemTC zxpqJWZbMFq#A=35Ib~UwdDQFz%yY%x#fXaT%zt@!-87)05j;yFxKn>HGkeXz*Ln{O zr8Jz5pnm^59o)54oeK>XLOEqIqt=Tb*q^o$6D0@tIiaiWg`WMqMV*ogFmJ8! zuz||rW5^bd&eY{+__oHvU6?4Nr#k${%pbNm*ms^B)1vho^eZ}W?zH0UmdhKpK%i@4hyi|Xzj8Im-ovjT8i{<|P@w5&Xi?r4B=q3YR1L#_W(-oVow~kW+ zQ zS5>%sNPE3dT^4y++R`#s+JxOf(iJni;l?;bmB?F_Z)cwTOCTU%>l?29mWhG0n+qR$|6v)azP;HP2n| ztKSW(%-(6TAt}sGF1|j zvo!1wd%DQ6O4>rlqN^t(R?$hM^j?|ZKjWFTC||qpbuR~*zDseHoWsBrMOC|6>SZE6 zQT+3^p9<^lu6B0b`oSjGZDW-;Q8-2e{hMu@i47{{S`TzbL={otp*71-Y0r2p<$*2+{_tt{D&_KxCHjb7JYgiyEjKPo2`dF_V?{x(i7X`Aagn3mYD#WoJtHLcM8KGfL;KMoQ#rWAV(URYgr z^(UViJB%k_)yx={LW-UZ9T!>^R0P0Gc3ZL6$))B?Q5O8YN zh98#va0S8=_h8?V9M>T37p?Tvy0$%U4&D{Jgx5Vj+?Ee4n&+n6;gkUIK3?)%Pqj04 zMRU`U-Bb8Vh|jYZ$iPt+->cNv{P+2U`0zX(j{&utClqBhtv*m$bozV9Y*FiOx4S!a z9gZkSRcT?t;%FEBgYE4Qa4Pc7>@7|Iu?x-a&CO5rktYbY7xpB;rsZB zO2MB@{~ot5Sj?oP)yL4=c_8dxVyc_v`CeD4s%_Ph=Uiw^hx%}F$#_|FsJp&u!3uph zd(Kz7{pjftb-N=qC6Mg7@wc&F&}IsI-Zeriqjc{2_!uB>ImGFD);MK%@;mF-xSD$| z6;}c56~TRU!$8fsci0OlQBJ*tAT3kR@?)8 zN{6Qwp{SH;K_Sdm!F4oh4#2d+nkx%boKHyeD!5!IrtqJRMKAkNxV3xR6J)@uazdp5 zgdLqxmh)r_p00RfQoV5Ba}0zOhrwk2^1na0G*i&1oSRdC%KC!%CjXENxH7BX!io9p z_alJow4=UiMx)5(Dz2Q=umbi*Aqvi|1jILvyzfc`cDVI(Jq!NtbN~JH|K=wt`qM+E zc|U3KpJV;szb3LPQaU7-DF44F^*@jF|NkqNzYp+b#(VXh=U?Oazx{~) zCUD%T`tR@TKkxK;IuEE4Mguwj@uC0y>vQ0k<~|oZ*Zg1Z?O#hI_H-VQY0FHM0bl>W zUBgeubj&~HrtrVNv;TXi9t{>D|IQPa_~7nz$jJ+E7jx%Rx`(kE-x#Zajo~_nN%bzE zhhSwj?=VG~mzXu9^<>EbEerdnJ!`k|EUI@m5ZYUZ?cZ^=xSmITR=||6J| z0(7PyA1+fHsR1sp*kXjop5eS9)oHxSb@YcDppkgsdEKXbQ+m-Q`Y ztf>W+{HhcNkT{)Ke?V>lu+XA5KrcL))U$Be*wQ!@`4Dzva|)n}Q1mTvKa2ur2O32e4has2h9eld7dfP9k~KFXnS*-A@PR z>8Or_Eaqg~({-QR>&@S7)2jmCQ4x0%jl2>weZ3rWJN;H3_wy(IiS;NTfxR_(+V1-U zdE=MhVf~n8#mI-Ju@tT0KZl=;0-hC>BC9xyZxV?DUSJN`E!Z?(2Jlw4C|sBV@)6u7 zvG-=bL^q_r?mDw|ofyYyZ~Uwz0m!daPw~uVwU%}L@rOVtu6<-&*ZSX&BDHV0&81UDYoZyDIb7V8*dA9`PSjcW+RchNq z^;2KUG*^zKr29zxine6lakd8dGbfvzt^*s8=2#leMpM%qW$N-eQY>Mg``k<<8m)dk zGa)Y`ey3qMyD(QD;(?olK0Gz3>LNRpW+r-dQ8g)p6VZTRpFxtrGOeplCH z9LD2nK|0NeFiCu@Y~~A`KKPTn6T#RW{u`hII5`=tGuv_TYIlG&eFz*xYVOJVmqX4! z+&Y+amI2&zWv8>YXyy{~KVGzM@&2Hwha~TckBtJDDOreIerox;U6iLah)pzE8YjHh zx!+N}-2xN>d}qBL?`P@v|E4d^o&Qm7=-mhYojsff4VOBX8Mq$Z9tU=5vYu07@gfcj zfOFsfD#Htp3`g|NhWa6Ks=kxbaav!)Vzu15 zwo^{f-3Wr;CB2j|qkfJ{=Y8&Ptgor-SCn0B`r;<5^%WxUcLp`C6 zWP)Q{ZO?s>g!JA;JYL~a2WcU)X^<{g7JC#r4c~2gJ(ynllGN+@d^ZUGJ3KxuGpeFo zbGke0JIEAYXO4^mTfE!gl^*6H;BF`x3w>2B^DxX8}oUh^jxP#riOodchqy=d(K4ivFbBO6k=M@OP!AOv~3tq^b8)Qo8-H z`-x6S<1JyM2^+%luJaacUmI0P_StG&&ZR|fB6aH!1-mGnlHG2`(iUDS#Z=jUnE4B4 zCooKOfI&QwXu=0JEgIc=WOY_3`#uLHCnlaid2TF$-Brws=h(8srR!cBTxrK?A^`cf z&Js35Pc#sy)G3ZeNyu|U;0(|rU>d3eCK{q&um}y(%d-ZtdFPg%i0(}V>U~cJJ9$x^*A|#8 zkwl4bP8s;Ow@#iOn!_$qW107Id^^m0XPNdhuf5EYWkf*l7C`EoGqFxUw6p($!ZzU$ z(Q&&{U5{cw-|?|`Tdcfp^7I=o!D_?F$+hH5Ab@;Wa)HHgj@>bIDVr3?361d(@@SOi zoiF2hIg>H!o33#mkft8_gQ~0Q*IB|rBcr(e4W;||N%WxJ_G<$Iq5HEjlHRe*f-JC{ zc+`F2E{dcDDrII4*MM8%S?$b^0@|Yn_KnCSRUoNpot`zeObq6jpH%9C?LFa|b>qUV zMS_9m-zl)sFh%RcElwhxlJ;hG6YJ0vJZwNh> zmSllV8#J!SJ?yoQ5wM`&<$B$K4k_5b^qKfBV|~38xlZR624eDK!B_eQk2l4Sa8QzZ z3VrU!s{D#kWQY=L46&sKg{C6X@!#>3-|mm?AQ2ARiUi{whTtx0uX<7V*9h6w>h2o5 z&01XdC1mmZ_Fyz0nbm3A+eWW#SzTLDsT)Rk<9r@tl-*?zmqS)%pY>LLdXMQ}2jBsy<%ugvcbKFrRV5VoM0SUyz zS&S&aB<}!w?13{H5umSJg>`g0&|O^sCw*|bY7W^#2Hh3QWWY_+JlwY_h{7U`c$($N z6HJhCHdHB15_vXN1uK(fSo6L}Q+Ax}dB%2Q$g?E9wtN>O*wo0fRi7!a)6e$lB}=Z% z18F#af^HPqVO0M9UjM|-{`q^#O%hBJfYqCf!!4L^SE0hiu|RTBqst*QR$mWbyA_x< zh7vZU`BOPHjaL$286_Oi*qIm#F1^Zg%4s)Wyae7&iQ9|{=DORxshbZAusrGK8j=&( z-TI+CpzJhk_o^nfHsb#9@xJMCQ-NDGiQeS_aFWHVe+mPh1G(_s{=ke0)Bg7eDva;) zWz80C6N;8P(jQK?S-AYl)@5|D;umdXHLnHYzL4vriB)%U(?- zOS_)e2B-c0Tb?&~`rSMPv}2Rh2h2i#Wf>La1(b9y^A$Y4z5e?EIJY#?t+l+ils~Ti zWXLG1ANJ03Vm7()Q1g+H?twTfLo_sXC!Rx7C@Yj~jFV%Ey#WZK&PpMK;_4dlG{Dg@ z&jOCl3&qcXbSiEXa_$z*Yvg2{j(2Jp4B4)4qZ@c+nsy0t(~j^@MZHYH7*t}xo`Ej;kh%(x=+?1CE)&j%E%(oR4Ax z+x}YiM!->8@~3!a#p42Sq>EDd5*Vl3Q8pxX_&xZB25Bss;kEJ-4VwFu zW8XGQjagw^%X61etD4b#2LbZPicII3bd|%*Vfm*hS$PEue?`}(wk9X;fiPQ@GEua?#xj3x+dHGM&YR0Kbo|H%cHbL!;rFN z{nZ`b{L);@A>rFW!#B<&6{UY)f2zx!jke$+ly3`-_gXDezS@>#OT;~OD+;6CNNv35 z@xL2!VnySX40Af!E=Xe7cc2`4o1{?_?i%LTxZSx zEsOw-Q#DgMeAN^p(BURTpV;Z1EKO1y74=?n7JlInceh%*ZM~L7uPDSl5nLM1EHOu$ zaTw3o(x`tE2q<4@Lg)MM$g(IQW;Vo9Zm~w3F$oWK$H+DL9zjf_i zf%1j?6e`*oGN|xXzqsOfek0kXG-3ck0hXunM!>_x@ z4O_{5e8T$`V`s{%%E>sb)%28{-p^(tsT#{!^;~?zO&5*hJU;sMFVct0r@2at_!WIh zmvIE?c50H72PNN7!U3Ivsqin)HL+K%DDQzxN&Ut}#%n5MN! ze&w5tm)Y_#LriiSRTcJy{lnAs!=S=bGPW`_<~dubKB^5A?rCxM$LpQ{gtgc4VFo%M_th<&7yT^C$FU_) z4C;zc5OlJ-lBXhii)w;_oB}Mv?3s%0KHN4v&br|&zbHQBSA7NcStgZ3h^TrB-e3P= zrv`yvJ{VC6W51`fSwWMwTu~y?Wy}WUwS#s_WWj{Ax;TPJ)!@J=kE1IzK8YwMgQJtx zJm!^RYv`=ryHJKWN|c%`o*LVr0;nfoj{;X~KUM*W`pq3K|JqOUT(saNVlZi@ z{E~0kvHQfBcDJ7mm{Z+tztY2FPZaD~vy~a@F4(N8x$Z#dT_a>1c94-lr8t2MCF z*^EX>`CSLR*dMnZpGw++LaQ%_&|MN4aFY9c^P--=N_KAB<`&$qh?)hera39CbOc4K zU#OpfJ7>NX6rP!`j-}SN%kUeRT~4V-1`#+-e?F4}>tcen;P2?@{n9J7gMIg4X?eCaY$>vvF4aN?>^oQJ%&-p_moDDpTA*qd9Kb6i9fdEvkX{3xLGM_!#O>R z5qSQ0SF1f)em=gO$hsSysj%V~Tg2E#G_i;GUDp1cc#;O2nJuuB;gmesGKK_+q(!Jd zQdKu566H+>5aP5NNj0qR2kXxwsjaG)QHQ*Gex;xSjk)mKPTt04^Y_VG9-4br{&FKC zq}RTs14YuECBFM^8+K-#&sI>#ph!erEzNby`k8ZAHBqa>E#wZ_p1pP3TwA`{c*nuk z8k2ZsNFIY)hPPCWNWuV(BUeHdj;}ut@xVH3tq0Gh7XUS)V-YV$C@WBhNNn&bbHksp z1a>(m|wM$YQzk{;VGw-vx&6@|r=Z64p*WjCPJu`~=58;N>Hp~NfK z5R)zpEk0$OsX!`!edw`~nsI}zbr~b-zP_%zSd)C_(d8yobul4-GsHh0aHpzuI7K=U4 znTqT5P0KEn?0JpMEF3PrAq*5nFpI-!oogp)J;908=j)983Dc8J)}sBm|2^xQBX#Ng`oM2zX14`btm8O zBBSQEq5z?>eI@Vu-UtlHeAwX&`06wPOed7zpkgA;oxzssn>?KuAPv1J*V);HjkZW1 zix$dJw}F04E0yrjG3vA(&5 zacvhYp3B4~sjd<@JT z8D@169#hb3ndygSSt~iF!JA(GM3M7$l};@T?v%VN^MvA`mJX>ogRY6xi%Y;n2$P}O z)Orblf#1i%cNM})(h7U@UY!$9%W_jSOV5U1sygMIfII_2d}IuO>2e&@SCrgec7zXI zA_$6MI_Csz8ltpaKaTmhu$1H)FW}4${XvutYR;W5D4P-MK({lIL-%w;5Q@ocv5Qi) zc-E8M++dHTh{?d}m@(%$=0tx&pdd7Yi9tqRSLAp49Mgz&-yUg{?rHKU;W9do zEj;A0C$kl3+@+^=iWDkN6TYl(E+O1od1Gmy4~{_(&r-1IL=wOnMCz2HZ_yH1DLcZn zL!sZ#^V8R+w7~N>C-621q>Dqsl+=ncHdkn>bTLTw0QNWLrmcu=EE2LK=Tk-8u;$8k zGv$>;z<=?w&PuNWUzw-q#@ndbSRrRi9Y15oSSMDUU6V?_Y^TwP`Y&7B>`XIcr=g&7>m zDYx*AkA@l58T%@c%M^U|K8;HRXjAUt#kz{~wFV=jJr64ycEwp5c)U(~d?`W~B)%zs zM{S51ibsq$xOkSsJCkmHIF9)+6WiI7ZX}YZf=Hlu4T4(nDX(48_%heyCvSLrj_iVh zqq5|0ewMbaI1wx%bjB-FnVOT$tqx~M*d<3e_qlZ;6V_7bp}PTnYR;3HNtZRrv$jDg z(%(s2YA%%OC3yihgA_9;VO|blG^zVc6e9-G>`AItMdgsshaT%_Hwb>z%|c-(hFu^i z%5SIu><~iJea>VbQc6_PIrdb&IKjj`BHW7R7e(U`9d`a*hGa*yx(UokOfcsPbBwMe z7lgjoHp2`wSR?3^!r8*4==xiZ(`mg%zV+kS`?%)>kyt-JPJltdU~dLux+(f(oW~lS z5d+KIx>mnzRuk%|C;v*h*J-34RYGf2&|PAlKq1z(+zu$sn3{M+lEs^+^s9_iH>|wT zZV2yQ<*nB+w9$^=T(+}reagcjs?nYa)b2Xd4%LSfAiJY_C}vm-$S+><17Zz3@a`Nw zsofvRU+$Nj98VD;KS)otw{ei)p4j0SG>*RW8c;R1wHZXBtT6X^_D)cBr9XPiE|1{! z6J)&9&O%wc&_cGJ_Qn`pXQ9hP z{CD0J@ayC%n(X8v2*nN)wE~KcDk?Se%v8xWohhW zf&WxoN}G~cX~%?78{y7c0UCjc@1wxM3qkU9uxnnHoXZ$X5KEHWFKc>5YTqxc<+~pw zw-i10<@py3cgMSMB>iNKeF%%Xor3sRWOZ*wxf9~+i5QU8<2XVoSwZCA-90om33-h3 zlQR}qL95R-f)F(kVCM5dR9>6BFk|O8NvAAl6NfiBeFFuOO9uG$9V>4y2L;LnVzO8C zFb%XZ-N-n93;3GNHQFu#h`p)C?_GDVExeZKd2_BORR?J;322nfA1ff^v}}{01U5t- z;T>0ny*%W7Nzkx>_bEl7di!vv5?Z3tZS6Y$5!ECu;+eCB7ZB2K@S+Ov@6i0zi!bk# zA$~)nBQ(E4xi24H8ijyakWALX3W)||ssCaAiAJ^H*rf(tX2_bb)nD2B)}9niNy12n z0l6sq>ELl z2!t$zRCTe+<|4XtR+ATDDUFui53RIPx7b>vx)d4%U%Sbaao&E=!k*d{E+Zz0Ur_%;{(u!Xl}j>sWa z`077<^Q#dpFN)P<$sa+x6YO*Ja%JhoP(B%R>u#oM{l^pn9Tt|HFi!sDwb2+TK>u7) z-|x*oldvQ5WgDG1cd1KMf8>gd>T{&FrK-C$5#HfFn-~Cw#|q(DK6ncxE+IfOqDyIh*qD*X;aibZRjHE zOM*m-koq^hz4|qa9cn#Ft%{Zgnoyc^f734@P~IhcY!5;i_`_xXDWg3YrA-ucwB&EF zjj)jU;WvdP5aZV@$jI(?TB&prePG)l3p2(TCa`~&ZI;M^Cc>W(GXLgn^*7hlel))Q zmF(bO_vgi4!tN$Q5@QG+3#P0q74*)$NR=x{n?lZO3~AspSvX2b~qd2 zR0)no2w$i*eUGTlZ`|RWGIyyl4ZhPOdcKp*m(F~J>P|pWfp`-yy7rE#e5UcxkmfUT zS|PH>01kb!-ZnvsQ!oJ=tA@sg8?|~1ndq`MgDxLX?grbAokR}VKr`+w%`v53Y-$Ui zW9jrl6|P?05$7tdn};m+u}I-yZk-b>E&bfyKMuzRmiH ze2RZR607sKRFtYb+J`wJdC}>BalZ->)dB45RmEBNVbN+sv~JumAf)HhL>p>@M82As z;$4BQSHG&5?+)w_rm44xY8E+sv+Tvc|H{ijBbs+0lc+XDkChWDff}I`HmRWCqzUxNB*|~r4!L5z-bT?`Gg2O5KQwj_YhDeI@JJLifkg zx`!q4IJF1T9h2UwK1KSfjW0)8T<-@m&}LrNVqN!w$97pUc!oCxR=E9=%_wWtpm_B? z_MZKuBT55f1pQEB8H%~Ai-60T-sii#=-lZu75W^?H}~x3PZ90F`HN+~&8^nBiP@yl zY3pf-eX?Z1w8>tpW|WTkDWeOZzsf_sp=xn4{lYA(Qj>0$W|g5Laz4S%9JjUxi4)J3 zc~E>>Z_k`!a#GB_px~RU5vnsN>0?Rd%oth1V`SD(Wx_q@D$q`JH!Lbzp1y~d2vn2X zYdoAc`1LmssGb9Xs&ho4@|bh!_h)~SKBoaS6u=bM*+YYP7t0t1;b=TUd!vr0FV|^ymW9Ka*a(-`q|5QEKjvd(O{caY(f&Q@9Vnl^;!G+Y4**9w%|rSCVTdN z#GS2S?fXI6Mfws~Pfcmc$#YU^gwu?o0)V$~Cvb`B+wJ;c{X zuPqwIru+!pGjECw^w6=;kDZWSP)Q&BAXve^tnPW$7VX?5AI!dexH4eO>}v~Xf2h7W zghnHhtaL}J(5agz%z2rL6BkI3z39zdt3|(c`Q%9Bf4D{qelvEELYPCe5`;iJYB!ZW zpc{5RHX1^58qJ3qa8_nRFd90-;;#&2Kpi_^C(7Z%2Q?BX`_CO|gL~0kBHSVamVSbX z{d1(^v@w-0Sj7{VB`MTjKR3_k-KTGS7Rm)T7AJ;Fy7DU-!W-(!kj*|3lS)$b(loJ( zk=;iR{fx{%w{*_uskI+MfJcqnos0GreO}eOwim7<7(M{r|<9?qI+|=Qu zfcP|a1%@><NR#J8^+v3( zbe$77m~f;~!oAV2mj#c_OtH%H@K(It0;-E^2OSa>cGTaBveQ@0-x!638YI3gQjOnt zQ&K5&>1KS9!MZ|2vJz|vLC=LU)=K7#-t-HoB*VleTa;uR1 zh|>nDd31{{&sV=38+D!I88-SK`g$pJq{F0zB1eF_ zB5@Qg-K!5b$n;v#{PuR#SU082x|VPr&TfPp3i>WN?rba3gKn)@^ZR`)%^`kjkwc#_ zs3YQ&%O@~B>o%GVyUf2fFycqSz5j7AO9hkKy)=cIyDk3<*5U6Vy!I@HTJAT{n_cSq z9ysDV;S0TRf~u^WA82rY}?HN?IEZRY@Kt6%i(YUywmJi)wlT`9# zn6_lP-EBXB__N3GS6NT?RgR_Gf%YvN{z=v$58q80dO0m{UfLGji?qZRz|<i? zrpCnqT}#flilN9>Aym_1nnN^f3Uw);_y(|TN}pzVgkh`I2ilW?fw21#5lYqA$CzIJ zwOJHL?HM>i;wbw@MG?%)I0}MZ<>>Z(sB5r=wCbqHsevh5cEabKUT=n6Dvz*T^}2c) z?U;%7A`|KcCaPB2XT=iZOBEVV$}h*tLL)gZ(;0BHqC4doGuvAf(;+L*h_I`$0=Z+A zI)AV=8j4L+2tn3@d^$+N4M`FU6`=?}IS(RLE&TmoAgNrv@*UWxw^V*dVCJ9YF$5=$T5VK*lJ-rY|!L$G$|G|M-ENwn&H^kXAiZ$$-RW5T;hnaj>gDwM;?@&(kg6v(A1 zQ6xGjjTvx5PGR=6T{qW5v5)F++H)%1xmE0ga`(&bl*hQ7%;pvSZS}hFP>H-tbIg_U zK70EFxFCv?m=^IU3Q)g`(Z2?9ry%vYIrMiPgZbB^haH(LHq4ZvhB(LDn}lMrOTDq? z=82wRB!S)1_5G3y=>6!!9Me*myFZmUNt8OPJ0PQa{2B z3nT9E1b4cL;vp|Onk*MDIq=kx)Aml}C%Xi~GlQ70Xql$3$DuD+{6HQGi>=b}i-kg5 zP?$Yp0OSR^O$An;TVW(4(4p#aBz}w{b>r93?|a6k{S<;V=f>oALD@r;Qz!G}T_k;C zjz5F*x6qG1J{X7yKy?fZoA&M!RrY_?c&`o z*#xFD$VSf40iA*^G)Dm$1=|8^hf4Kn7bqmg z&-obL^)rLH*Ykh#)Uk_=R36R>f$9t%d$!x|dT}*^_MHfz% zo(q{vN132qVTv_t^%9c2z`l7(PYDwfU?NkvV~u8QJzMX0A}E~W#1#S=)qg-Uz>l9;?rYw9-KwRgmepjWl==k#( zx@3yzL#UtF6b-;QDv|38vY^HbFs%g#-vGubDr%nZS$z^JLhK8&!-Tb$ zcgi~~&}fN+qH=h?X?e7E6E2eFD8y3_N+q&c4)O1-VTG*y#`yr#nG{S6*q|@zC-f=8 zH1l$BS)qx|6xL)#RRLRiAAi67Y|JjBwjO+(e*BlCcVnPVyCQoLQ4{BWl*lYDwy=)v zuQ!FDtNnmi-qk9FL$feS+S z;Xy!UxAoZ`^(X6D6U* z7dBi#lc3nXKW;c>vb;wrm)k1^j&<%U(Lpz_2Jdmx10DV!$#{XDLd`~sq!mDnOoVd(O#m8j6xva(GH8cs+u5J z!&ttuy9#fRIVYL$k~MnH3FB!7zS&=xPdT4^a-%5p^t8XZN5G&rmt=fdkZ^F^GOpgm zF$B37`J&?pQFZZ|7aK7;m06zx^}~=&6Qi+}PL2JNVKeaI&Ypu~M$$yx9dq78jfO#i zopf1lpBUA>Z874-#KteMlxz!5#>RY0YuB8cn)iX3%uGX0|Ci3F3ijibA?$xz4mtY8 z-zv}ndFzJrcVT!+DYr*I-nQ^y5c|1zWfD-YJ-pPf@wym)^?j=Hj9v7sb*}y!rNhmV zucLx*)!LCvwRUb9PB?_D=H@K`!?0$KL}twLhZWW<){0ncqR(F7*9l%{cUBZSsk)3! zvRqnC9q-plv5G8D%T)pneT15OE;Ub*Y_j*9T%pdChCO3iW~Zst1&*scY2jXomo~=5j48EOv7i%m2%5*+kTEw$C%8EXB<*<% z_*jQ%f{wPPKL3?THN$Wt4I~-5(5QzxhOZ)`FZNPM89b)TQ_q?InILTHdbGWSeiJ&d z284V9N^5_|YJ3t6_rS^_jRmnSoB^54)__rByQ6%Pz2nl>S~pX>U$B^@Q-A`>6~3{@|B_4r48n>5Z-i}0$^A4(@)|5wc^JngB%`4jG67*n@M7F}K&?Ow# zeWa%uT!KTLwD*LpRRGdJP>HbZzHjcB0j#WDmi$rc*wIPB4L;_+u#&gZUc;gem4kz! zu8y2OwNHySV}+wl^68iQ1hI8h@0>s-1EBL%Syj#)sh7`%!rcmM`nb@DRgd^6LG7yW zs!P_;pX6qcx$3?cnQDeqs>2FhVgjN4(5c&xzX+-2j}_!!*S$+|X4qBm>aw_c(Xe&3 z{rTt`Ab94JiPEqz`328<^-_Qw!2%WocZZ4{X(NqCe|;I1!R0ApF> zUHTSWoh)Ywp&uWg#w%N<5H_s06vVMYq5R}ap1KDS2S~7|+-J47)J}r>x@G0`xq`E= z8!*`;SkyhZID00Xuwg_f=tTQiShJBhwxf6ZF`DWU5SgFvVvHe*Ps%V2fSnfYZ_>ld z>==wI26T_TwOT1B5$+P|;tb9F9)Fd_trEesVkB2;j|C?V-#9NnI61!(e5+d^Qt}qgfj!i(x46BfvfOfQd7G|Dnlqw5WO2Qts|w%S2%PfoN&Jm z>{blp(tOx|;Zn-&71N{aa*MQ{mco=kqM`+nx+hF6+nwg{LQrXX{$lOfyw)r&=vy^V zP3rd=+!lNDR4xMMb!HF7Z(qB(BwcInj!VN>w&Q4>Yhn}(Q-ANTm~YC&5RtBiIe0t% z1tiTLgwJtZWF6n%D#YT(R5bas=70P*S<>N_125W4pL;{9$GP)ORn>ikZcfg=TtlW` zUya}iy#W#6PT)qBWJHHeRO_xRenR%AD`0POLW~)a@slU1nSm-8p&JFu_{MN_ZucI2 zt8}2N%eOR7-ebk|)Ui&dM5DC-86^*zp>N?T4Muddl;A<;fACHQZ;AGb&UkOH5o$jw z@7Lb(-E3twSTxsJK$kfT4%eMDJ&S60vW=r;j^yF|I6%=JHi}Q#3+IGy6+`ZA>$@fy zP5tPKqeVpgnZ*`>{pF&&jDk4@jme`tYMNZjn)Nu{1;C7`J&rlxey0mr?P!YhQV&Gx z+@Afb{6`*t9{n2nPEh;M??WXHg#WG)0HaZUPxRi;YP`{2w6AfgBqXW$j$aQ*s?(6K zq)_xOiI&Iaz%stLPna%S*5;UQz8tMsc8i6|n#~UOceo+;YmT<3Z_ zu@>18Qe<_SDIRVqSZK$jH;{M%GnkVMeiE%nt~h`7lveT#!(;Nx{vIbB@*|tQ zEyN}${&eW?Z161&LrwTFz3f1wrRPu{~i8(H770}0M`y`jAJT#J-;-NZlw zn1pgwz>Z4Tu#OOpG(O0)yYy#^TGNz{8$Ze~+Gc??8ul)z0E75S%KWz5zM^W5KNcV? z&rRwhD=kvv$9iOfrg2~#e8Th;q$!5ciQ8RI00`6Y=qom)uQ%*^GIQyk)I>j)96H+7 zVjQMDiK@cHJnym^wg+#I-Q;dQ`&ojCWd!tfh9Xm5q#PUXST;+Oi}2|ruC zd#95+1l4>A4b>edW5`%q^98y>?mmWhh%TxIjGWZwCi|^~{U++SYl&~as0IzXfedmd zV$aNXs=H3Vwu-ZQZl-ddh&|3f%3C_v3I@38bOhG(4A$?O{>;ICO}5fbZps|1*V=<22ec%* z%J-gC3C#4nd1I<+tgZbxt2(w*C&~D%fEKR3OmaJov6OL{`4gx?#=( zb{02GYlP(K*w+Nzh~d9&o@Kk_z=|7FiJMXVxdXtNY6S0d<0wYxIh6}wV$|LbhYQ~V zE+&}FnmyINd7>%)x_Eg@+>XQNo^SADf$51Uneq?mztrI2#wq!dwR@ zraKY%pl!WqDR)9Y<8_(lOQ=%+-2bPD<$a7dD+9=ji&zgfjTJQU?S_zkFg=OSMI=Mj{3!PPb{NeRl*6 z#*Fdkgc(?3hn@00tAE8;bIo<{r9K^-{Wv@-IVknr{#jl`Ce~Gr)uZxNZ=lR>UQUXf z;e^HaaDvRPhbkEiC zJx8g6pYm$xOE8RfieqRo;I7s0)os_oH8X2jdFstYI&BzUC&)+Pq>H(l`Dil#5c>(* zF9^}T&~%^Fsj6v8WGc984Jp1Hu7-3NM&qJdBK($9z&CZz2v=q53GsLLivq(V!>dm{ zR!^e%Ct8^_buisy(ZY|v{&Y;v%ES_2zyj^Vze^3th!q>welSN^MYn^7jKK`yORH<~ z>)Aav@o7{0x^DPH^mT`uSp}s(yE&MqlZ}bC&ZA&i$b1VTJqB#qYy+Amow`&m3R5Y_(to^UIH9u6|vcMJeK4Y zOtSxUsHsry+Z|><-ueoGp1y^DVg0Cj`M?zeyOLNGr|T7ZDuVS#AC$UzpsHL>AC-NP z8w+u6O|OAw#Ca(Qfs)`18{zamYB6eD=nNSD;pN3PB@Gn>Vw(PU1Hv+!nHF6~>6rJ) z(V5|s=)$eZK4OT)8TaR4(_BjY2H=EiftBffoA{H5-p6=(Z5DZ2 zE{KzP__elE?$dg~-`rVv?Mll)ZOz z;9mGe(0^y?unRP$j*Ou3tmy)l=0FwF^v*1;Ww=D(=D*^NaZ;xIpCnIkJ@-&L9NyHw zu3}j>5T* zlu5t-Gs?Vx21?B-N_UyfvmRO-A`wU->~O+JSCBHi%WfmfSk>9DG$zsF9-25lf5jsJ zd{s#l1WG%n!}2H9%vU@1)d($Czh@o4BpC*i@}y}CyfX_&^S1OK=B}ny+@Ifa2*Z1z zY8aQR7g{cJcp4ckY~Hfu#PwB0#mb3gt{E{jnH~=`nv2Z&PvVmO7>DycmfO+g?HYBY zv&9&?fcYgDnJAurM&EO)BVSB)v_P~yU)w}G&!4+R?fF7D$>79K+k&fSmLQEj#X&h! zg_0z`EDDKtCvPm3rKH4bidM%;m!e97q0at}bl&UC#L&b+Uv3i=^X&LU(Wb)sAs*A# z$Y)&gF?}%3q zH>KFKnCFR`->z&D48`Z)li3rS5DQAU4oILcukexe;SSy5SnVr5@!|2~Y5a1m+#@r` zfF(c`D&SiGiQ!U3I=sbP&fH zqJNb4CnAO^AD6 z_l=!Ja?hXNj?e<{%L>`b=n_HYZ7ktz*?>+1AC6=%qf*~3h4UWbN-1Gq#y&IzpCLl_ zQ0bOnjPg>$OH5PThxe;|YnlVrAFT6ov&eu=%HgnZx4%*G8~tS8?{3-jf%lQ^&JF0D zO5*lv1`UUA_Dqn~%X@xj0vN-N8d%q1UlD7x@Aw2M2{~dOnzDKv>t)~}IwXBu&i3?Z zf-qYsmHLbMK_xw?EwieNUhRYU@+H64N((_rH2+5bkTGDK;T+;s1$CD$_n2CIXtCKi z@3|YQvMaK|>`!I*knFlg!1H@h)pM(_6m`Bt;bQgnrk2Ef#ASv6b4euGr?XR+9nQ5Ty6?>(w6^KkPqef%#nrm`M28c6=6x% z=olEN(_;f~$H8@w+h}`PS!LfcdRf{|1zPp;poDVTHeh+O=CZG6g!`S#@qClo2qY2~ z_x#?^{Yf^z(!2E`Vdyg@-MK9D5O#sAI6QLkt5J6A>qh1UQ`$md{C+gREe{S4*$saz zj(%ACNu*$DTF_FUa4%`h$6~H7oH(h9c`=Y^ziL5eNd_Ks+;euG16o-oLdTLotxA^7VSBvgu<*HV(;}sOBlmb^fV64w_TOuYWiYGyVRA4 zwl_;1Wd3*jL2=0(MEI{vD&WOY+IPMp0R@3Kma|D#b*90t?{{Se6r6P9Bx-Sls!Xe5 zL=0QqvRbcO@$xj8^JoBj6p+a2Hc6X*+bGQtB|K zDnb>3J6pwJGdP)fx>FAiN0}C#3G3dmfetY|KZWEJ%*BZU36IJeBCf=)9}TR|2GG@i z{^`iZQ-PHQwIC}sHMywaOXi=h3SGt4+Po?xB0@w;t{Qn-Nb`v_O^BPUtsd(^s@WI9 z{VSZo7Fh(}f}Aiyq?hv?q(>(0CKG7XKU)e<6_@+5bPwNSo|@v47k+;&v~Eb5R%9gV z`Jk=F%91dXLGSRPm)$4*%)_0Pyp)@|r;3G?!MK5xsfhS&yM(Y$E#nU>7X_1|Iew`) zi3L_^@mDR&>RTR_2hh*Ff`yc#^U6sx)?_c-%y9QJvZs5UBqR%Gs$wh5T;i^s@7)JB02*q@ksjq5&-aQI(G9AcQ`onkJ5jQX(gqwkVM&cP8m7r7e-n6HSM z|8xopEKBF2q(^f#z(LomYPKW?M2@b(g2j7JR-pNpHeP{wU->9_y^&jFPF-zUc7(37 zbNbV!Zw0A_kJ{!mH`jtXgdruwByhcm(MYfO5ymYmJqm47IO&H?5*-g~kP^jfUC0p_ zBFd}>UM}a+2y`IsnHW4Gawc##qolSXK}uV9R|_w9m{(UT4T&u`U{dv@KrR_`CDc+g z$zU-=SU1o5bx1*K!aj(HBAm_fI?2CDDqLvR#MWZ7nS1@4@cMyLFk!(>8;ZR?ronJG z&L=!p*TYRUmqzU>xO1YE+*>UKQl?CPYm62fTa}!O)nR=L|q5ZEcK9|b>LA%SE z-rvM;wB*1yZ&H(7{`g`KIEo2lrk+*a$na=J_u%3ywvFYgvOVgVF_gaYL{0s0T*_f9 zB_cZ;pv<9`X(e?RJw}U&$)Ub#g7-Q5rG@fzrQ_n~@D;9U%~OForRNGAm&bFH2FYVS za@J&y3@Y-e)oGH8Me>Ul|V|kQCrM3r1c)Q4WF9 zma|;WUSaL#aRSEr!o-aUYqw4*2unhf_AG~VpRugH!(m3UBvS`4DY_hzrNr-!E$y<( z%$X+NyuOsvPf=l@m#kk)=N4RHM?t6(NpyH-6KW|rmvNH~wmlD->A4bKeHMH zlGZ1=!^9rXA3CWt17j+{S?2=I8e{%-1?_gb=k8vxcxTbNH?3Xx#@tC|U6W4r+iXax z0r|Ka^{Un<@)PZ-1%$bPv+S;^+@jAD&@R3{Wo+hxHi{4RK1Jr9B}7EHNGZV9S>72n zO=5&pv}5OD7~w;hn$tHKv>m&XrJfIp9xDMGro>pM!>u!1UzBj)rfKO$OX-Vj92icOq|8q*XDBk^e2X}JW^~wusqvZpLW-Tx{R4_+MLj)>Jq(s7ep^T> zBhnScdRit;zOJ1c!)^I2?5^`NcXSLZEFvQZhvb`Lmh#2uh24#2PvFh?V@w1kQ-At5 z`$X~4(F9WFgct^|zPcQO@gQM`;@wh(2MPEZopBd(E&<4um>m-Fm7-+JC=9=EmNiBm zCXza`37Wc3OMOEu(8p6JTltcNr&~m66~>W&W2pgef~gATZ$M7`(z-X8kzz^eXp^U` z`!;c$`Wbp3DoL=hDtF;|nUJOQw!~s=H>5P^6_l>qpy*rlv4`&w&=isS zQ64J8mkdOv(WKufc?i^$!3@El@S$X{Ug0d>&mSM|oF;oZ56x77em9<*)NQw=g$e;q z0e1!OjTz$6iBOyJxN!Q#yphc%CQ}LCSnu9V)ojyyh#3*=;6+y~jbkO@teW+_f08aS z?0_`Qc>Cmuhe$vjy;UPDGi}gQN4_35cP{T5!deoFeVTP{j(vpWBx1Ub;=jS|y<8q;{II z*+KaX&nc=Z*R<|5;~wHj#>CNw+kPj5T@LXS-RMiY%W&sc31&vKU6yxbNq*MLZYhD-NylFD z0gt_Ai1JJmOxvbS!tLDGzbb@vW-BS^`el5cvI`K_yI}sFaw%b$pU>9*s!S}o^k0~cs?_}Z8?t7(s zZ@NrCb{xPTjegbV3X$DiY9*O_2d%&6|8CKMMnBX&j$=O|gSFrheh=uH?L1~Qr9iFF(=7M-KOEGEvMEixugiIsH zq1osgxI+WWzT=o2&tt<77c!*%#lfxgPJ^4}?k5-P2HP1;LUr=1GD2&|k=6>q4uYYl z9^@Zy+NUw{1)2)BBaCBz7BuRQMAZ57#-Uj>roV|yw`&sqwXMH>h7_a{)v)lcSv#Bj zM}afXV(g~p?NnBp!E%*=+RO1E?SN_z9Le`1*RE9F(*l)a0>8Vr$p^3{ImaOriry); z*YYdf@fX>lQm^&RaEQ9Zk#_@C?WhQ%Z2+I};Oq%EgyO8GPDaC`th24*c#vde?JcmZ zn?^$~Q;e@@x%&*nX>_m1s)-({>$)28>$$GSh`%%O2eLn09eqsmK-b%+5!s-%_vR=x zj{!}Fwb7wYt#XQ-=f@6v4H%-#5rV?YXE*{6XE<-r+~bdKfF_a%+=yhR2%WWot)ole zy779iKCq~2mT5rb{)Wmb?eWTw2UKb~P+@oaHvLrB4XNgWJ%K)9uTrs3#W}RQlT&J*P4} zCEG#3>KI>Nlnb>X5A47$8x1c>pH6c{=2Eq*qNk za5C%|?YnhB5n~4Lu`b=(A+UrNvW-BRsZ`*+W~7GCD1E_;+TbEvjWuN~y1fhPi1Cm~ z2uf-1;FeFWy7(-zZeKO?(Y$srg7**XGMcE-1*>nVK;21A12~+wfmJ6XciT$G33Dhv z3aSTwP7EFLD(F+ZHVUpwZP3cxg4zli+ZiCgG&(fRC*$~OA>@q+1Ta5kX^=KQG)O;7 zHHPhQ;u%-C-c)Y+SH3Uwwl)c8zq1-TrFw9}nn!nQ$TT&8>BJ~s!wfwkWM8)L)f2|! zsY+QD^>UHo3CEp!sbo;{>BK>K3F(Vwq+)ummGKrxIZF2yYc8H&zp&?gD)4hBsb9FR zM$;tSU-?Rr_#RPt=O+iTfC)Rbu*^UNSTsv>`|k{?U5hVOWQ z6Unw(P_og`D#MQZd1(ux&k-1fGS9UUQh2cg1eJUmJ0v5>Q_k3O5uM|Kc%;%vK93Z zNO;k3%=%Q@-{d0EYvhe$9A#?u&{z{0WZ&^@I4q^VBeLP4!7MZ0is)kAx7?(in7J$# z>f%&-$7K}Z10Oa(xdih5mUs0Re&nvuUBWzCpyYkLH;yn)F>bl0jt2|kot6>toOYb$ zN3YnK&bn{8_5dSv@~^rrRh1W6-Q}aU1IgV?zTmMiqF!mA*fLa~{K|9QO%-ZCSL#Vy zQ}H{JN%)0sD%$*r>etF-ZbFpq2^jLQrOn3Q$WzKxc9&ehN71ChDpXDjb$)e3>Ul-D z&H{t78*~|-zPwe271PGO=XhgfJT=d2GF%rrz> z+$4VpUGzg=)>?|Rhq-%|08gMBSxfxW=%11AX>?|2>IhfTZtXGIbFFH@Kb*}HBE2-mJP-kaokRNK+Ov1gTGCyjAhX8Ggio5Z%| zOsDA{t_IKBFS=!7%BmFfPLRDCVEsBN981rZ4#`6g8PZT!ajsfu-h`r_D14<`)=q0M zc^`)uasQ(-W(4*5splc5>(Saf`UG!*(dsNxO0OMlZe%m9kBK&imp&I~T7HCc{1KqYh*UmGu9BWJPfZUG|qtAp@HmF>ls(BN7DQ<-f0(^X+JkRCP>7%OnSPW zj4w1X`t|=g&E9Rlr)PIcBM%rA7J0Orn8n`ZY1Si;yaXOeWtL# zwk5oylTVIMZLg(JpWL0pl^40DlY_~1oklC+o$L?rsXp0`bJa2Zuj8-2E;ooghtSi9 zTFu64_6^&MBR9!5aaLlHZ&FuyV+$II8;-A?8n@ow#|eKYgfVwzMN7e+!@ir$f8* zIN8B@+w@3oAgfBv_8W>3E^D5VeYO0+#H|I0l3LF8nLTPnl#A!{Ta>ZL-w}0DwWy=X zsirSfdy@u&$vQA>t7ndwOp zql!sO{mb!IUf+Nj=cW+qq3?gRBP7Ll$;AW{IqNP*?nhVG2QG2+V#9*x*{KMdaR#l@ ziS#*|^AY|3Aa-&5F|7a5birDjEPCW)R;xWR1|&=0ca-9zDy^5?9w%TqrDv-GFtpDo1;;OmG3F(SeQqU zK(a{=(bJ)gWUQx1S|SkRF6E}jsi~NbF4!re4iF$VNeW@!(;E0%7s`YDyYcn_MK0cW94n za5Rb25Cs%pdGo?Lml_mE0XC%~z(~cTou9 zQB_~Q7|cs)#}JmB7>j+nYVVU>EV@0DwklSYVxFJzQ}p`U)95ssbVjGj?G%C@cwNC#{YyGpJ z1np~(P$-Su580E``kl+l(qOfgdI zQ;b4r6tt^}=EVs@KUBQ(Gj^;;&pJwKIK;<+rXbJ6x#rruRK0`w?EP&H?%OK=(Q<|T6;3H(bT6gr;xGH4wXo- z{L%Zk_CYH!IE2HRh~dYN?9QQFE-WA!sn;hu%{7 zwXi$uVzX6Kp+HXIc8L!8208yz;jhc>4Nktc;6$Sj=7P%Lycy$f)Op|Uz|r{joDPnj zO4i{c`6t#a1!GCeCqY z5&N)k^!`~@>pYb>2@x2<(2t$uh~Ek4On4YKm%N-->d_lM4e3~3urs8jja|B{1t$I) zIydK<=oo0-Eos}%vqi<+DD6E?R)slV$a~#7uz4>cBC;B+uyu%TKVsArVz&wM951N) z@v&|Y%WXB!ejs&{lYG4O(x({H@yj0%16aqPHY4c_xcs;pNn@|pLslEuP_tVHy^TJX zhpOToY(5#d$YnQJ`B~To`S9#T+{EN;aZq}ABhq1uKK=b3#v>xij`b#FVqJZ{x4B69 zKi+McKh%S;m-TQ$I+*ahzV)uCIlT@#0kWIT*`sYNda3NC8NQWhZ;LshgKO77gE^Tl zr$%kPK$QqCgwAXIm_NMm&i7~%eZNgTMMG;g?v<)~TdB>K?CdivvS@i`Sm_n=Wy=lQ z+tq5qBig7)iTw|IL~j+BlVWmp&bw>KL=%7aZrac5|85tp?0MVW_T3<)3=OHf9D!3W zsB{Hmy>k)G;E`H5gV}3_=0cAavo~2Xk;Ao_kw)23)V&I%mHi|Vcb?sTCqv$*;xzqc zY7Nf1Y**rkL*J)L-iqHDorabVGMnlnqj_a;PW)bT51Kk=GwU z719t6J@NZEOhevjDh1Xhz0%Z8JbPloX^IY|Szq$uqPcaclC!zkRPWWU^dwsTrsv@) z$BThT+;jM{HjW9;^Y(?iF!tqHNuRwd;S$9;)M{TdFyvCAb}-I~LGS36l&&G6hI&Zz zp2r&1Y#Azs)>SojrJ{+^yHtjLDi5dIVADGgd{O?aJ_q zyEL|FcNxH_*{vfh2>scZj#a=l`zVp%4Qrprf`=qY>xD0O+ZBqdIN6FOy~lP`HRpK# zsM;tuu1J#DQXD=O92a|QnmxqJ@gMqqqfG$zfa z+r#2il_`ZQK_{@=?X~_ogTA`EQFP~v?x`*h-tK9ZrNC^#l>C;~2yYs+br(QC@j8mCzxsFtldsRcNpm&nuzOe$n!*S-Dnc z^DXbmsp;4a(PI58o>r8{<0K2gJmXa4TfSSY>mpiW-L>sl0?&k0bk*Pe+y^!*s-tPt zEQPEP+c(XFlD&luX@u6LVw$-Wz1{7ugIjULB~QvscoGJWVJDW?3q1MS)*G0PeGV9| zgJ*MBMvE6&>IQnFh1#Afxple4b5%yag(sdB(UpP=Y%CV~1g;oXQ z=;B(tWomQjau_9=Efu3P{Z?YYAh{Jwyc&(h|3Yo1-t5PE(azv(MvPe7y*xmb9mlU1ERhP|V@Se&_3 zq>TM?qCPIh^joHtNUntKP?$Fg2(RyVCb#=I~qR5Iu8@J;ERQkVWvy&KZYm7xx# zD5^{M1z~fo`s%B%9MVs}D!9=`dlnSD)jpEb<@-GAGV(uK0FmCY6T9zoba9|7ulQ1ak<1eF4PGS`!-r$f zhx=6&n~ht{ijqnt`pGg$GGxnh5jlrBvPvb&Iq~DEx<_hb=Vq{GG{R_tlgFlG&! z+{CVlo3U=nW|eyt?tBVUg?OUvYFTW{h|YAW`%EistR>y(^Bm|q`lZp_Zi*APfh{LAX}V(tIe|@A4)F9kt1hN5EvpB$pKRrz#d*b^ zn`*`>{A#k)Ox^l3(Q56Rvp{$|7nW*lHbw7vY_z~`q~mP_-7Ik@L%n?rgE~=UYR(Rs ztZEEp?KGr0N>@WgNpoYdvZXXx44@@=!W3`Pk!bbU2VdQPN$nFp`GAg2=e*p3B6`Li zh)wSuu6>eNSowJ`?SLqgC!h680WrJ#XR4K78evUB$7r`i1tSp}R^wI^Cn*z=y1T8DVim z*9KfZihdiESt=oYa6CLPb;=#FkfUAtq>!%54D(yM_$SMi>5s?|+JX$#oEqn& zUV7t#tkOC>W=hpaKm;>+t$&=w`)$DQBrU4ZIBm_oX0Tb^Z&57}be?Gse`lf}4-E4- zA1H^HL{0M}_pe&TB9bDO~-9qAE2aHRWG^-O^Etr+DF|axYix z9@f~dj<&O3=rddO4pX%RX9AmGqhL1Xv4dB(cLpD-N{#0n{hm0^NLRof@p6nyO$VHa z^zp2dGBT|e{*HLea4g>g$jWFnNg0t7g$J)iAAA%=IYybL(;`Tu>euQ>uLOof| z%!}G*$u@0hnh$1X&4B5$%-n~H(~PCP@J{rBJm%x?c<}3pZ$<4r;r*MxBH|z~(B$CEV)Gwd@;!E@%yil&UMXpiLR+2H`SmBA2 zT))ZI3?`}~H@#dU{&Z7bN@>x|beTcDv^g=Xl7`=5F9pbuEt4!=yqQDY2Mu}4V`+B| zM8X~}+Rk;1@Ovqq@(IH+=NRAPVmYuK$RWq8jX?C&g8t$f{^!~nw9y&>qq~eEa`DRT zR#jc+Wl_(8l~MXRfe$qD4{aj2YT$BuAo(K&;Y-8BB`u(u-wwQ1$N@o`#AY_0SDbm< zfv4cNU0na-k|q?aM&UNw8sv)d07%egRT`2!AALgQeNYWV?fqf^hkf-W?*kS5YCYi( znJ|*t!M}JA|My@0fj|snp!mzh{htr^kAKkejuO0M{vVnVf4N8hYVX3|5c?lr@2}qH z|NZSI^$c6da|NgZ9RhS;eM%-r-hucq3H2|-Opw%{X)_LqyPjvg0jv&aWi%#lsN{RqkzHo$X2mauHkFz*;hm-4RlXi!b3FvfaNB+IN z?PK~1oFQYrR~SbF@&WvuJ?5~N;EehkU*G8;xP8bw21ZH#fH2_;CFLvMehX|K?jM2C zA2oPsr0&d|+~uyNMKs=d(REjOxomJ!{r+ZCq#ZaSk-rHgdc1g?dX6732Zl_on}~Hm zg%AEj#PHMH6-Kvny3roMmG+gB1FTI@f4m#7n-s}a5BiG z%|N^0BZ8u-)S>B>KQ(jDM?L@g^!(?o>65PTy()c>)%&u)Wl6_*;fb!xvj1yD@mOHc zE)Yt>^Mb7Z0PZ)x{G*`w5ztO{cDXt1j;c_~eB=LeQiCRxn3K)|T-N7?l})(%_*4X# zw)>>i4NiZ2FJN2p5u%Ur`5vxsIKa1=+`HS)+DwWC6kb0e^Z`jxBDOVAxVMGFdm!xG z9z>rSKX@59G7K~q3l5^vZl2u$JE#6)d$9}9HY<0rB`NZhKttar)}07J2#DW9fc&o9 zoRAK<;ALQ*;7EYH4?l3SYV^N;p4<1nzh=CP5WX^bgzg2d$$&`2>*o8x5btWJ4QOzp zYbP0$8w90K8&Ennnxa=oB`pTq)CN@P4EO6mQ8^Io5CM4Q3o=~_*?1`cepz5DPz3MY zF4c)4yurrFyXCiy-Bnbk|XAAcyxgsgNHW8I#2hE^mJ;(lj zAMW0DaTwuE3Pkor{DIj+36y{oNM8QxFdq^+mwltZI0Rljp4TqS27=WOE|~@{%B@NC zUgTt0ydCWGoyP6=f9D|;eUO6&r_b2FUS3T#le580=!pXKDOdd`j0X9)3xUVTO^Y76 z0~m*_4-CSi58&H~r>PHA!s%k`L8DK`2^YD$7{H;mKN&>pq9y7Z0OEcK;$Oid@^b&# zbr=HN118GLV1UzfG|L9u38V86dA7IUCfjR;nmR4IZW^-rMLuSp)`)k#pBLHs{`njG z2Zke9Mq<*>UT%?hdeeomw~s99LH53X$@Ye*B}U(r2`!OH3j@n z{&|1=i=X)9D|`og(IA|U?mgJQnzEXfMnK{Q6HNGN)qrwRyU_W3)PevkFSG4M{m!@B zuHnxyX0jS70jdhq+#wU@4YugatNNh^E0~TuPv4M&VE~DEz_*Y6;3(8L@NIpBEK+y| zgz!D+bvBxayQg6s7PXy^*igIJb5oqO_`6$>R-@q+?o!y`(%o5g3+!bT^$>72A_eoc zX=}0GAM*?d5AK1-3qxUP+oNT$Qt0r%+f{RVZ&kbg?eXJ+kdZrv$z~cK@Ozy zBX*qW#Zv|#f<6mi4(7=n&=}9DERQj>X=i#3=AbM#<^w|zMgvH!;unc&7%_akfWyc~ zE7yAf@%a2NH%0FGEF&fAC^zDcflxG6kwyoM+bDp4?aAVZ-;?mFS+jylqlw$|r8JE> zq0oG=Cgm0+FRb%c7xceM2;Ln8iueIQ-eKhr7m-hP7?ql_PWguu=-+(XQb{=+lRgM0 zPNPE=o@W5d1}B%L>qTRcvB(&UCNOA~ZI7XJ5hi$Z(B5l92Z&F3;mfsG+Ej809JHlk z!Dw^DkOzKin2s6`k&%)TJ|^}i(~DE6#k`u-^S=FE{bl88m%vAjHZ`q9*7I{9G;d)P zn+9S!yo2Gl9i7Echy7y=KQ=**!vOxmFP|Y;$ij54?f9Y5Y_Hqi_C64&4Y>z!yLBh| zdhvUXi3Az?=ZSDOwxhO3JOB_#)IHF1M+prdU@>)sd#n_$d=8`lYqESYrl8<;+$D}J zcpy3rrbkB`(eUW9Sn5Y3obO_YVWmuXZ)B@>i4P(597Db_U#F}3swP)%ft3FezTKi? zU}YDM@mf#h%qm(E7ds?`i=s(qO6hM#5dxoL496QYe%DOQ5Sv9*q*Xk%*R6kastwG5 z^S=$gZ;waq3@2i(JyuDevt1chZY3`bp%S+pGE z+|N5Kr+61CR=^{+Ug5@PNJtRRIK;gK6#2TXvNO;7{lQ5oT>34XkRq@lUFnH9nOZdC ztTYVx06j{(S)(7z)X45uD{uY12?U|vPBl`6M&K2UdEBg0D8vaL1}XR{c*0a>cIyK8 zi7+98ex+jA$eOO1jC*DLV;6_3d~(RI*L*-S!veqEmc}CzgmQZ~A}f8;ay{VWn=4mM zaL)ZRwf?_Di}Ohh!;AG))G9szcpg|R2nHlW2n*%@H9ne1~K-vTRe|X&=r``L( zWmtPz=OkyG)D{&{kT62u1b2jTHt5+;4JxAW5D`-qHhk0bTnGDGuAo2ORz4wJe#Bno z`yoZal)h}onJnC%QOAle(MN$yJSF2vIO;qJnq~cN)v_O+{M#W9(1SB3)%b@3cFwQTk$t!A-?zaDC!_8SoTL1~0R4|n#Xy#(n^?%= zH3;N*Y>8qnivZ*7TL0~XhsmcefFF*9X61vYAqV;a1gamlF(qb+^EEV9yTZ^dlKkRd zedQUyJc?^31&tlp@yD?=+6)W8B*OF|0p}4rN(zSKzyg2^$!hjgSQd>Zz^sFXQ;~xQ z1Qf4&R(o^FP(!v4eb+y)Nq@!XhNlmL9Co67A=ZC;ES#lUUhwdBeGJ(QQ*cq^9++io zk>-QDaH+iKL^;e-58$_m>QsBz16G&p4d`ka47n@woB{g!aaJ=`x?U1w7%jli=nHkp zvis7t?yPTU62~~>>#UIfD}enIysJct8i}WXG@s4_fMiB9c>B@C22ZmlUm`f}-xG0u zl(k#3dWesX(~e#hAO^<}r8h_YD1g&KCfQh|NFsv4o7YNG(`-yD;0&ZtAyNHvaKcyOin43}Fs=9g|u;oH2S~D2h=s7d0Li}o3 z4Y=_$5ENRfbR?+7Q>dBh=>C!k`d>aLTM_Cz?r{in!Jj=__Q0gGUyUyx_i#$jTWD@E zug^@d%JT_C4@i1Jd>#^P)u&_Gf;}pdP_*{hrw>59CoWU)?zK|?DbPprtyO8{2e0^u zVxZ*!n*+NzshYs7Ma8c+;G!45=vvlEfNpX56Hp5|hI=5I-(Bxh>;aI1zX65?aW+z% z7aep@hOG4*N2TcDM@5~{HZw5{Uuo>+-@?66`28WHww~jFbl4sL;)yHvYwLRfz`8ML zGIg3`d0sKVVfvC>ZT;2%q#zEd_dINDUqdAZT>LBx129P@ok8_wAeaTUi%;)*b_$Vs zYps)L0F@b*Y}d!QoDuRux}*jUu0U18La`2h>iD?71)DG&fIGOMM=qP@=|@0QD{M;K z-@v5dZZGY?UJxWd)QW%e_AKCS^(mr=hryi(q1p06r{kqys2anq6`m>VfPSnQ0woKG ze``NgAStdF*b4OLa4&EqWI>6Q>Y5|w^Na1<=_^<$=U|T-T6v82(V;sq?;5SQ^?buN zP7Kne<7h1a-0g8qC)p=n77%bK7-MQVZh$8QwVT}C!ma|? z&IBG0iHM{C=LZB7(yxP>k%8L)J{VqE-m?u{Ty%?&Tdb!}|2aiGfrto)f zI&U+FcBO*+4j-9W_^0*+J>RIv-+8(b9-F)cT{S82#Brx$NO&1+B83PY!$^rX_;ym$ zGR-~!3*irFUD{;VjRei;qk=tB(B0^xsw9iWzxDl~>AaEEGTjk;Qa@|YZS90ZWai0a zP(3l7W1c^6Q$%S`gPVmx4~c?HKMZ|&O!G}CoJXwf>lQFCdQ?zYF6{!0G{3#-1B@jJ zx#x*eh+7Nhe%-uXKketVbdx;L)7I_BT++bNh!-G9wEVnoE2CF2_~ZiQdr8?S;gcZC zFf8}ND=tC;2(EgK*)Uz-%EE>0f|6uDV`PGKPGM-}<{??Im{DR^%ZwQuAgXzU>%2Q5og zhi#%r;-svs4F_Uck(=Q7JdQ(2F~~YzXZ7ZL4ubehqb?EbV#4eBZ+MOjm;kz>Bj3Y- zq78%d+sB#7K)!_e&$RXhuqK}Aoi<^33eyke^t!p&(FvBHP7FS$-IaaYtZAI`QorWq z$AS1*_Zo;q_HOl3Q&IXLNNSf3cCEbyv~7Fa1}WJ8_`u8&>Md)SXYkAc|DQI}zkn|A zJ;pu0ynY8d9&#tF*-{UYN#_k{W8gj?7UjKkH>A&qoZmZ)NGt=^*Ge-TIk0fJ0&Y73 zw=;!+wY55g?-pZiiZZ#0oFuDRyCpAD!2T?Q*!EW24o)9C@sVksZi0w{s;=XxN?^@7 z-r7nNAqbk>ZckdO-s)Y2K&Jd|J)5=+ZYI?e z+Fisnh;~ZlVhJ%E;8qOLaT}@bR^H6;a~J`MItv!e4>&zjc-MBh%}p?W;e(TzAusOw z+&}9C|6;ZO;a6KIK3W0%!qh~m@G}7t&bRS)j;?G)R@HU)=TsXgQV=WxAJftfT$wD( zs2^9mxdMyO{M=OO2ta;3MD*6x^*o)h0XA0Iyv^WqomK~|T>_%X1yqgNK`(gpO2jKT z|!!AQNf8)5)RrHUB-H5@d;gvi^_0uKmsZ4k*Ax+^^~K zD!xaoe+M4@`9Yt+%R7kA`2N;m2VZud98kR*i~fES^8cy`|HprbJ_Kd8{6D1R{|0yY zUqt73M!>~$(K6is=XU`EL-%e|G1;p`-q@JO5o#@Q#CCQ-| z(jYZ**8tN}ZJF8*h+Nw*guK z7w)TCb!sw&9sf#5gXBR4XvDBa_Uu2JO5`w-b^+X7J7|O_h8GB<1(JRC^2igff}{Xw zM#9cQ0lDJrpNMf&?e3y%r@TJ^q#4=USM-REsPk^yMZMa&wy#r4jSWTitM1z2SQ3tk zqq6{+diRc)M=r#8@>hjdaw8DB@&_DWg_YtFPZ-(-w^Qd6bqs*$^@a=_0JQXPzFB8o zh9{&Tp>>9nRq&#w+a2jc-c?-6{dw>ETj)c8>nEVx_a`43gjaJi7G?h_x6*f`27Ejg z-bXx6Jw#dEDY08Inb^*mpq6RfLfCUZy% z3D<%V!ZuLZJ1rIiSlzQ7@U~Iqh0GClf?23+RF1>1P_lU`oab#JfcQ+ZT4@GVEl~V> zzH+<|l7#lP-l(xgujm>6KiFK{fN5ToI^B7W{|&rIn`Bv~>2?B`c3m%^U zP{+yX9D?&BXW+KRnqRTU|IuYNp3nm{9UlX>hkJU2tLA7U$vQ_0n>_5XZZpPVVWAh0 zs3gHfE>Z1c?lL2yfVA-6-yCC0H$uzEpW^rWqL1UTHs9FQ!A-V#27vm{!{VGFnLmjh z0O%8`&w;%gTVds>G<5zPLDg6;&6FqlgVCvG(>{CjBE+oQQR{@_N+-_oQFEcNS(}%Z zV1<;&+~qCElkhIY;l7zD7(KaF4rblCP96cUHq1t_aTlFH4rB&WosSCl8clD zy{2^5mYujOwxHE0Q0QzrlR?_EUaea(ut$Ffq>6;6>;1J&jfIGN!2s~rwW-30Iw>EC zt)0zTV{`uEQpun5S}@7DXt#j?lEX6SDRU;giqA1_ny!3f;P!GHavBL9Ze|HLFfQ49 zQGS7$sPi*uH~mANN_IoW?|VR*lW8z6gM^akfl1y|7~I@xIV(zDdfy%tOaeeP+F-a| zu7t3UuIrjFh_|s^vEfRx1;$AXduJe6bcKCe+|Tc?r$(WgskUPVR+5+QSBX4!0DsEt z;fD3)9%_1;<&L%2agxnJD+)Fu=v#R8cJY*uKg<-g925^xBmOf?95z4{VjriHhpV$8 z_H%6-nGwU_&R5*Zy{dnT6zwh5s1I0U3{eQA`)@bl^)5=Iq528M zO~8@K!b|wG+)unu3-tU!k&esW9z>i#5StB~9XVEUh=M^^2F-1{Rh~UagahEtaZ)DD zM=>RSU{Kl2twV63ODceWUsyZ^%FXHYMI$%pH`Zb<)RGt`t8(L3gNlzEuXY>gHDz>* z)r`7P>GDxY(9KpZfWPrO?`mLcAOa|wxVnwNd)7*6b6-CQhUaTvf{TOxIoSfOdM5*l zfeZviA5^9kH$j!p*aey$*9JJJWVMqmzwdh>`?mp8vqM?N@B!)+^0Bj~rK=yo=~zBx zLWFw5RH|xH`q1m;_P{_8M1?LBV(&E`u5}XXVOT7TnImPwsXw5%%53`c@nZELf#g~` zsJ>^~WaEzBUT&r-%!N&$)ss1|4E|sSZ=w+Eoa>*Cwa)|WvyE*TLhMVRG7A+7r%q}FO3aN^RJhQ+lTeTxOX!TeqsVI|r;fX)b4aszyc@=emD z0=yg!KgRflOL`EDpkO>)0Ssp>7TthNCPxbTBNp3^G+s7XVLI0JYOAg)t`$cq*Y{vg z^~kKTAE`enE7!^{G9gU0J-n<-arZ7ss;iK8-93#ZRwIm5FcqkK3`1*rUJ})PJd`i+ zc-}I#N2GeeTEX8FngE1<5SVEPe_GywzLJS3CP>{ebwuNWf53_kt^xrKkQKxSb%vIl2S4ysD z+y}!U5<_cRJh$ikj+zs70X5@j6yC1TbAk1=O>dPKJ$lh0KSt#|=KN;{6?0*{-x)k$ zVtooR<+IyP4GhAn#jTZA-pxUJE0aTR84LAM=UeB)AAd%{TVs|%6--Y4LNQPJ{!1wo zdqU^1LdSDSPOp5cG4bT|E%OOsD0;mmVd6$qhV$VRgL8wn=GC#a0sIdJ3HUPKg!QG4 zg{2Py8j$=2AWIK&MQ$1OzkX=r*aRhECpg``$Z_BeFZBUnlaRasPVEgrvY>W=YsUCw z1Xq{P57$D<0S}6e(D~4pf=;YElvst==MJ2P{H3R#;}pD(qGmodfjZiMADt>+;mrc= z08wmyRtOFO)&J+Uhwt^v!84135giKz4GBafDLfrqfR5|vPk0yZ8vO;k>=kHnO4~E& zX;VIO&3@1&?%^2-*fIjhe2p#i1^_Tjc&S^tPy`71LKANdu8YCJE@V?kleG-Lf5K;2))X{=VbHEJf5!JFplQ&CEA#xZ%YGn*7w>yOe?gx{T@@Zx_AwPat7fSF zBJhZ=ihPxrff8Q-$aPo(Q}|}gG!!849l%f68_;%RG2iN$Jf?@2nB<_$T0Rz-{I$<{FrzNPFO&Nqt!RTgRus`84uK#8iVT zNI&YHVHV!S^Z&8;m0?kCZQBN@lpu|iAks*PbSMajG$`FTga}CYAl*51gQRqKNH@|A z(j7CzFbwhCv-kTw_3pio{e8cmKOArz+_BcZ*1GCE&&$MM4j_>^>nip{ZXN=amJkL@ zMK?=8!*%&7HR3HQSqNJkJ+vIXKotS}DQw;{W1%VqvAihc6XB#6*7Nwq1)cNz>jG$A%WX5P7nmAiN<4?=Jj_ZJ z0aEiS*DcF_@Q6Gs3dRsgkIE1;zlbFP%6W?Z@#>%u$w0Q*Av{F#t@{UZULl>MmFGp?#hWX~<}r2eYh#9nK$VPACG7S?TvJY1Lr zElj@r(B1-om{eR~A}47iI(8#_6BnoQ`>AHQCagcG5d*XD`{>q#t{uShfi0G+=EI*H z2gr96yBa9(tDi?Z_B}r>pYR>`K1tEI9aTNz13wrKD*-Tc?j=h}C-B|#eG}o^w&boa z{4&{n6iuepBax)fGubmls=##a3Kupfa-3ZffO~s`))iX|Uu775^vx#|O0fM-Z)DSa zH0^rxq2S)n%++PG54*1O4r6g0!lMPvRG?^U8jIjlq6cZ$7eKIvGdypLLNx`Ts*EY?)FWff*Wm}k@m1tTBH6c&OVJhp&k2{ZBSMc*I;~eUp&24 zp10BvuuYP-D*~jHzysYSmRc6e++-y$a#n@6kccu71C`CPeF{XAmJwrcQrI7a@;`Ar zQ^|Ke1JnYPr`oro*r|BG^I3rm$~#YJ$s{052U;Gy=VAJq>5CC0Z_|ds@DZ$N$pP)6 zvlBEBBVG?AQN-bH_w;2!z`F!2}z9rPgMFjEVpJ&xP;+{6ei&{O18=gKA{$*j!eAJkO1y1v@cigg z)_?+`Wx}r-ZUfpA00Jfl6}L7r^b>F+3b3irsW;N^@OfLK_b^I?(elc6AK~z3#@N~4 zDLzA9cgD9&HZt9*^NAnVSLN{zmaT-f&u}n@A=lU@XIokCO=CtFFKs`$Q>g&fVF*`C ziuxkdvR=-dUMwM+g@7=IlscY6+LI*=S(lhH z(ab6|fhF}~0x+!|mK~E2%f615r+Uj=8uBUQ@`|-8XF<^ivCRvQcP@eQn+&2!hf*S0 zu@X|#Xs6|<%2YCL(oJCtRO0&i5k1ubECv3ogLwqKCF4?{mG)!HE!(yJfR=F4kO7X` zGHy6Lc*s3T*Dej?y(;D#mq>=7RD-FVSbqSjWWV!#T2uH{ilLV6wBVOY7vEzyYKZxl zjwk3EF5B5-bVe6S%hW8`KN&tVL}Org!9e9h$XVOH6w?}n&0>wghTl_of@$_Z{Bm5& zFu#SMJ5S%8wyeUUNy(*$t94v0wKwCrA~D!O$M@z)bCM!?4*Gn~ogJH(6mIanU6M{1 zuwRUqU9c{}TYnt@J#Lj}R!8k&nD@|S@3~~8WM9?vntKcnLB;iO+tt`(>90Pu?8L$? zFL1BjFP&4aU3u*_QtER)or6x5M3?gS5;(HmM&hciV>kDP$?ng56q?%YnDSS1SPZtl zWneTe*Dzn4_H~)^p3j3W*OXc7omlYXq1*-1{_3nE^~k=MS_WB0>mIurF51kUVv3vR z$jR|!IH648UFE#!eByzx$a8lWY@>c3DDhQ?FR>=0t#VcKVKuuM?v{ie?kYu>LylEh z=~d(z#3t>gHOo>2YOpy>CZ0s~wT#ioF%?iFqIUaoK^o{#AJ>G75KLObRjvoOW z+h5yS>E9{FXC%Xe$XABcL}csdfhr)I9;Q(%N`yYE6oo^XcEK`;iNEx@--i*sLocBf z3(bCU=%-KWbqA}HyX)-(Xea3{bnO0+)vgedT7~)-2C5RU?YD~thS)c55@B5Pqam(m zr@{tWi5$>2l0z^TrmAe~BPmspa`v2a9F}IfkLxtejXa&)5G^08?Vn87y7@s`snQ8w zarM~S=tK?1*~KY?S@hoF-zUtM{fQ*vek+BI)kq^Y^HF04jek9$WNW`kKRh$c(VqcR zut6%hkw!hGQnIY?4Vsup1$XraE+-PLZLbnSrA#dsF6Vx_Cj=RVK!-tYgKW0uLf++I z>B~ggIJj73eH$i=Pj0FUbJ2Jtuk80vKqqu`XxC4)dk>rktIwW3XPn@~r%^~M4Z_vq ztY9X#zpWRWn9gAmbH_^E*i4%0sK6ugfTgHXx%Foe#ObN<<&W@^OeXdWQ?uvp=C`a9rs|ri)qWT zs4iJ>jbw16xN?TT6nUig=LAIqdu)@&bx5_fn%;``C`3m}v9TXfz=W@;`@d;>zhIf7 zk;R@P+1eIM@^JPB2)LlAm`(MJUh?LR{*Ms&vv-L4D7axZQvu8N<_7vV@>z;LrYkJb zj2)!)qGGqdr{2y}7=vHf;#M5bi4iqYeIwb$&#}5b^@5m(LL=K#q@n0uAj1;L*%kQ0 zM)lzrsheOE18k%H7~b)WtIn_OKJ`I%Ki&p8=7<_t*onxQ=4u%9pvjLjjmMGV8PaVc z=@H;hB61IMc>3Xl_I!jkG{{*1u9hD+!afe(h7u%$2c_V zow`DQu!4vco0$X_6#1c$A}e&dlRP`tEo z({S~sun!M8nU{_3>?&}cwf>q9IVl*2hZxoG%V?4>RhD$uMnf|(_8Bc6T0C+W?kb!d z8u7?2F?Fw`M|7mB*`4?aI8dkDw|LCr$4P(W^4M0~#R@=Nm^B7Gs=HDADiD0_EuF%p zV=t@1E2=r4SUn-vy?a8#InR}GD4xzysg|Py~3N zoRAQ~?_RF2;t{oO3&1mJq+LEH>r)Y`a*w_p4kTE-Yn?8#bq$1itoVq#!4Z-vS#K$ood~36pI{*FnMC> z9Z?q;l;l~-dzs1&o$i;3)=%UIj4feiltex=O?eNjpt~M#yvx?YPEPP~*tu?eC~+Y7 z+)_I%-amNw#wcij65Ob+DfJD@!}&=ua|{B?%gD0fFZ77W^4dWl98#N*#K#}GU==lq zhTjrB+%~vresFwETx0sBEt@#dk6vS@m2%q%pJ+H?iO(Rhc1Ac%DBPv9ZIiS`|3qFO z71A;&YM(~ZSHzwq#F7>Z#cI2~Vr-!3;as-s5K`ck?eeo>+wNfZhbbvnk8`q5U+UrR zeTs{76=G@tt3`anktI@b-ia|EiY&k9J^7p9~U*WMoCnaA{3aCv(T2#`B+z+9Tb6`_Ws z4jM8X-3lQ|-C*ie>^4dU=NG&H&Q;B!McS?66{dV**xgJ6y?#;w@Hod7Q*&`fczm40 zeyzz&|3#BDkWX3yPZEGE3aMG54oRukkTxQrK^H0`=YsulIqao&A$}nkN2TE*&E^SSQlQ`*{0aRZNJZq&0$76}ymoJ!Dp?z3P}v zv2nFKTEXOeo4%Zk*NEe*=^Rk~SbUBd_{2;(x5!dJH@r)atS0mFO_QZ|?+g6@mE*tt zXp8su8CD6auIIhuyTB+@fqCyTp_3YBXmFez?cMaOUWKgDc4M~`>p!c%KAwf1gk zEN7>d*9EL!qsPNd*$|i4+v`MMY6D%{OypsbH1qHvE~`9WKT6Qd*1M~gMQ znC5u2LUh8Y<_PY9tW<`vcGYRbfbxhBC)M42QKxXhv^eMT%-M8QmH z){;;)dffzz(+7x$)m?X(xlii06gc-?9KDbg-MfxIu8U9~(^x%89@Q6}Xvj!G;qGAxM#Q-f=TcM}$x!?{$UU z+3E9p^SXJvj7e*1vw6(;YHGcsJU6n3OSuG+;%~>`&#?8>l&@hcyBdq3*B^A<-1qx& zLGwGzVZ?`x9$;6a>e_7SjSg~AgaC~#p28QaVd%Xf1lU8n_lIl$&|t}->$#n$dnBF+ z_$}{?j$DOL%ho57XCm11S}ERwH6U+xr?EQ^UNmteeIB=jO^&5j-hv>;>T$ z2zk)(iBZAj^dO9EeR%WP3l~#-J*jrEj)gsY*KRWv!+x+2*K5&Lb3LTyh=mTp|Atq3rs8h}W<2DCy`xeggo41jp6$Yr z%a3>9D>ju54eMJByI)L#2yMrEfuJAK8T>SehwvGqWlTY|sgttr89}r@qskt;Xogld zzyJwpRC)zQM{@;_j3~^$$T#&G@oy@*QJ!Z}yQHJn3rk9N*~w4Py9u+Nx!w~9dWP*C zgzdnZ{9P*Aea)9voa6w(cPtN3Bisz)Nk;qlBBbUpSojm>8q3rpMMce4aO#8RGq=i0 zmC_T=9nC-GwSSZnghDpJu!)s*hW-cLar{_Qn{ui&pBNbVd#S;lDfDK86_P*#rp zxFXMy6(`@w_1QHdSw$p>{`%_JMai+6rR0ot5#snf@mIT?l5mH8nz2N|<6nM420|_8 zo$NMDfxPmjH8zpM1x-BTz=0kvG?FD0EvFnOM|+le0CVSCBH@rH^;Or^@8lr>Dl25K z;#~zV_%=hU2XUk>+$)VPHI~|uMOtceAFUc}EJ1f`K!%99IO-kUh9RHtn+dqx3Oxvs zTc;^i=+2_Dq@(ak$6p%2Op_|b1a^*ylH4T+4h8O9wijn014N9I!1`S)JZGQ@(Z|;p z@NIh}2odl2U2Adfl)5~Q5lB#Y9DaN|mQ_qs|If`(m>5=BqG~mb<_bBFr8BSJ!?E89 zxvO5+*GF-6#s%G{xi_U-SPVOjXj$6*-K6L(=BJ&$(IDUL4kA^G4Gc93o{e$v6NnYj z-BdckwlY-!ziLd)&1;5R*yVCUI@2yqSC8o3g_oXlI4}{+3bK@RkeDSZ^rd#%1ME9{ z-bGw!nN7l!bAq5qEGI9Z)Ml1&cIB1%K`d!aDvjQLc1Jg4>X?OCnRhIg=`sAVIprS| zE7H@@{2n-`yLeVz4Y<+RLUQ!kRg3#}#dSwugcb zbUX{GKrSS!y9pvZeVcYsl~fc~_qA@O_3Ho`+52bRVL^#@X-&UYeeA23T)CMsk%uiF z_1(=o)?U_%d=8%O6Eo(N221vQG)g~+0`8UrO6Gp1Z=;4*mHRxe*6PlRtlU`&Tdps* zU6Ri+0g%6=05w4A3ed~&1^6c%Z&u^%LOqV2=~l-zEa-Qi~^QlA2P9&d{ zcLpAVytsDcGhue-jC;;$Le4hv0J31zel$VI`%QaBWw+A>bf_iI31cMwNdww07xb{R z`4H=Qt$xCooiH=2`1^=lTiAwil7;Hd^{jab4m5ZN@YI>xfhv01(6=_`4vb%R@{47a z1NZHIdEWOspKyP24c$H2b9g^}?>ZtAK1|UCF)by^q|vM=BuX;?G*aX@vnbmt*lu91 zfJVUW$$*&KqsEu#(Cx0Du}Q^D8=cUo57Q>gA{R z0T4YJ=H&KVk<H1ZDgha(ZR zAymTk+zmdbb6pwbX}ocbmdsT)AruwOlr z(lh@3U?C>kq1@4(jw(4;eviA{m8+rQt`lnXQ|Y z8|N+$Q3Pdc15sA@8$0G9ah#YyHt5aczDd{#EV zhaTcL0LaqVBc{KxL}miy7t3Ocz1y)Ce1V+QpI+1R{_8e9A>WzJ${r08x6%3eMejF1L@NIl6G7fh;EHu6Z7Hz1@1Oz_R@UR!%8g< zAvKwAeze4NS$>h1cKH58b}5y$>132C4GBNATcm5=Z?hD5cyyX@cy}#ryZi0Q+*V5h z;e@zDxKYV2oc`*H9_$iPLtBL-5ZIV;!dkgzn9V#t}DhJ^lr+Xe2p@bCCJZn z8{deY{F@8!IMY^3#QANh0P4i7W56|Di1)kC-5V}9hdR^p`+u7JU}xVd+cM#x&-9@G z1K_r2{_AuTKY=%~z3c4m+cIoW$z_XsOb+ezSGlqYQG{4PT+;QR-4EwDZnREK(e}1P z6tDW$$2{-Md%kj%P|PBSYakJ!7Eg!>)Ux)i)pkp~wJGwBC}|#KGfAJiG6nK%aWKSG zo+s5Bx}sw$)HjyoJ8MKCBbfF+b1^(0p#qeR?l&?#`wYex20u#-5sp7+gW$SviJRFN zqr@O=M{OwA9WUGX(+Q7*ei2I@NF`)Ebf&YSBdl?I05yNP*)VH%naEREyAotU>6*WN|mwJlhooiolUr1(d~!ANuA06iAAgydOk@0DZpeMYmGrgY+N~Sf4EOW}uGJac zag^KK`D3;O@FNy-$o!%v*`XFWoxNerg_~pZ^U;)Zav}<$D4&2(PWd<$1PN%$Yj7hg z2ZtYG8EAX{cmmN3Aj>i2@XvU0I%+?qGiBHqNfCQlQ6Dr1x*EbS(GU$n+V6gH1vk`} zlK{Ee6Z@UJGqz6DdQ`u{U-SCSrDP2#c9WxTwwInU0|g_&9ct{1{?t&VNA}si29jIn zog68F)m%_&3{)AM1}vABtSSu=*jFp*b8Wa5pJ}+*wMQQA?{KwQDNp@sQ30~&kHE-N zd5PhyL5`=$OMmQ+?4a>btA^614EYr6uU5Eo!re=&?Pxbp*<6RlssG7facrpxzn%u7 zOx}>AF2p&YD5=O$?DE)Q-dc)UHrw{({+4cIhP;ydQYHILmWSolU7&TvqY&YOcVlj& z2mDt&KW}wVLNqYexndR=m~=# z$zmDCU8;=YFhBOLCzeWmZ73-CO-B%^-0{SO_ zuXg6!t;amlv7fkdvU3n!o8QFqW9blGCHbPc*%L~>A3>3ShJNkTgRvSGN!|xJc zu@shyU60IIrA=m)6=50?=pcH_X~ik0Z7F~J41q0%a!Z@1j#;iOm3;AuDu-kcEe`^v z#qD4Ty$!%nx3qr30=2yfb{`CCYX<1Xv0XyE&snHY+|_bMG}UCj-NK4dpi50n<;SQ| z)e&Z#tY7!^I$lT*eY`COo&)@(C>vK4Bc0{BzFRLdi3E%AiS3^QE$Q7Di61LM(ItaoOrHoFoFGsTUwF9hX| zh$h6(i=vD{T_3;`nGP&F9na3j-gyeKr)_APGc*rJ=_#3fS_`CK&oGTjbYx3T;vvl@;dzh1Vc@8!Ji!C6lY|VK&9JrpoUNZSXNsxS^f)boBv?8tve_%~sM<@#% zTl-x1f+P%w2jRkvTB<~?5kVJ0BHzgZ6Unup7~iN~cnPgXtF!^|OH28Cl!x`Z#RIn% zH>?;*?9eKQ~JRij6=O0FAA>QxR~tt!Cpsk4_nV&=)}yb0d#= zZg&otr%J5mC4j`#Z`Z(yb2vdK%41RBDy(br;q`^rR{566dH5}7H9JMpV?aYFD(w&R zGq|3XXA>~j+_}_gYmCd-Co5Tc)q2%+z0`y4DE!H5%he|{mNgWB*3A}i&B)L6_2&H& z%VEP|JNBA+8=2r6d1R?;%ZK4_hPM&R1+UNzV(=H&Ed??Aa_s0o{;+ z`K}^H&H0WGuH~-K{%%j8;T#i^GNz-KZQEpEIxVSb6hT=N{0XCAEc{$z@z!u@DW9ab zpZsDJ`Edn`Yy4)lNKBNNeIC^}A|Ywm{lIqSMMdxd9r$+ALb#rFo#3FtDyFi=v~_u& z#aE@}xVp}?z@<&$;`xtp_bCn98*ESTiF7q;tzX{uF#qX%DZpV%PLw<2zDiw_*Hdhb zueQ)TKNnj2Ov7Oxzy&nwJQtEQD)r3Mm-ATTg?S4X$ZHVAnm)3pI-xeyVaXp!SY$_XB7mC@n*Nh1F^O~u$l>cRH z(D7_sroVK(+fDeju%E}yDpw#RYv#quJ5tb4ef=W0m4s0)tGso8Nt+3>n(c9VWo=-8 zuE}*T+&QC(v)HN`VSMdyCdeG3LdIKjc~JASSgO5}6>Ke0dD8Q{t!j!}&n~Yn&ZBCx zis25{68LzyJ{EHA&G~%S_6S=q*Xd?{m(H4{s(N_KB-K=tY9;FpF`UmjzUlkn-O(k^ zZD32PThp?+T5|W0K4FiNZx*$mHt^3jU(;Bkk`UJkme2lnsG_Rn@4oT^~LKfGjN7Okv_ZE==waPetQstc7&)c9%rEOoE`u;Syx73q1&XSS<| zv72g+xhl{G{Sy3W_-HfQi#%~H8(($Sf$1R~u1woPFBbu@9A!Q_23&SY7vD309~sYx!BCvQR_i`S~l&bjBr zE-ssfV}N0kA&Z-Qw5mKAMqtdo>$t?@IETvmz)LT3secP~SLZDYNkcy?FG#wqt)H)k z5AQSqXz{A`>L!9yaLs5wYWJNWDhfSxC#Q~qUK+9qZ&sHI8ztLQ*9Kl3@`T3-cNe?T zTPG7Qf(N5{M#elyn5kNWI|A&w83xPow4L*S>H;h%{2b(# zGf>JAM32WoXy7GKd;+;vtW4Afh?#d8>o3#P#vRP_#A|crPu{&O`9fRFXxP`mVx;J` z(Miv*)RsUKn%2Q^P3(U@;o)$=u>1hhD=-?=!UZCMyhg#~x@HvS*H%F-O}B{-mFYT0 zq63b$x)i$=++J+2UtO4RI?LCu`t|;BAkf+vj=NtQVJU&%qAI(r*?bJqy}nx3qa!tp z*Gp6QvfKX{$_{B%q5$=Ev<)f5YAh}{2d3Rx6M%3_ti<^9Ko6IyfK8U{Kyag57I0fF zK?qO`ViJC99xT;7APnny3R+a51P!>D<*n|9J4oKvm6jH2Y+G1a?{@?wUk7?o7~64Jo91!URS?=$P4Xv zJps@ZA#UWmNWX>0l6WRrDH&l_n?WZ6HzaMZMxUxvwML*p%~ann@$Sp;Z0~kXOqauE zEw%A$4*TX4peAE(h66!ix+O7FY6(cd!^nhn_%0Vu-j-67f>$jaKZ=wxSwt$O(W;QA?M|a`0M{o!+J&!|=y=egk5+RGeLJ z!RsU6Nq;Nm>?776f)Q_8Ve;i;L|7D=uZX33B$~$}P8UBt_>|bT{p(VP!eX+Tfdu6x z!UMPxih4w4s~sz8|$j+sA^s z_VjcJ2NZOm0nL7U`3B#z$-qkiLffJpJckAvesy~@v|u1yq2cnA+(ypUR?L}o;Qs4- zB0^ZtlAE4NmHawmd7Q!5NB-c)f&wuF-sFTXY=A6jAEdNCD%g%#)Md2 zmS}B}CCysxnlC8bIlDSDO@aXSc3Ho*&Sv`c8Iazqa#(a{D9m6*BPu)?1{4VO!kV~& z=3@9D2&E5Y9C1w^NUHhbWLr#UyK_Z#O0hcx@qoe7d(&HfQ`Qf;Y4md|JB@(!njdkT z5i^&5hH8scco~?arJny~JX7DVcQBiM{UV{&W;5{rEv%2}*XW1O~ zqorgi&|7+}zCy)$oxf{>etv((;RG>QZ2g(b`555+8z(Qj1M+x?^fBk=h2C7m6Wls1 z(zhC#UD+45j`#1m)t?BUHWJV4cb681$s|VvtYG{y5_^*6G1YaXe#Z~;<#PyL$(PU1CqLB-aM@>5o6T;qvOAU;sAX$1eB_S11V7!cKrHvvwq9QFOvAf_E?malMcgiy zns1b!$?ZJeImv9CdN~d~bp>Ea4fTa)I^r(XSZPR!|3M~chie@fJLAUkG_R%h0;t^7 zx-t>vv2)F738^K=Y;8Nihpj&+c09|g1FlOaq=cS|N^;-q?|j#t`rR7@07{JJMoFZS z>ZxWXz+rdHmEs*v?)+ocm-*Bk()}V7$M1 zg1MY>W0%vFMQ8T9DbRWkk*h}9AFp~Z$aJm5`D@prWJake=>Dj*k9DX0LDo)=rga-V zpv+j@i9jdO#)}2Ipv9VB9=X2Vv?|A~lzyM=4@j(uqMF1xuSzZ+K(&I zJf5x8uAm-yOY<2(KGQHuwgIti|U!EIUv<4^d{RbxW$x}z!*>| zw!(NF_+EDo>6<84bImO-1q<9(lA z2*YpUELZ}MZPBh_ULK1JGTgM7sAgmiOqO@?0C}d4Jvcz2BSEEm_i9p5(h)TBJXvWh z#kGcgzXe~Ytf`oG8Dqz@9P#A0Z{dL@DM>e(M%+E`4$a{7vhjG;fSL#%(br{^uHqBR znnjm_1^Mp0N-Q9@l8*;;m%J1R(n=cdtA_y+m0#YVBt=SrM4m6o#qShkUKe}62-00a zvj7_9y)0kamj?sL-1}!*d9PNBXM01tdPvdx&C5Ecn$@x-UIND+VbT9Oge`f&^?o9#LegV{qG<_@JustOH{Q zuVw}-I@Ap;glZ*Mn8&dE2uFVOFjK(it9t_fO2E@LK-8M0yJWy%tdU5q2ordS6|vCa z>l98@^FW3pacwikeiFVQ2qByO2EfWB&&(7>qyg@98w#j=Squ=vG*ZA@8UEGL?cNUs z7~eem5^t81pp4v1dwoT~z|&T0&|c0rAsk5HvwTzG$ndM2@N^lD^m0Kbdi3a{l4me& z0ORx8uR)lfw7qC=D?R=3EDytyQE3(58_g)XmYwtQOU_T3oI%#Fxoa~xF$~9_Jbx0j z;uTPfhu;pU-vG3*lCc_-9AjbIA-7%UgB1QIRgZe0A=mEIhkX1ZUL>Fn6FUe{6yZW4 zt3meG;0R^?&yafbz9j}WLI0GJLZ2(@Zo;Y3r1>>^oOK3=EbzMGr~P6zOIw|=W4_@N zj~i>sx_+I5sGCoRFRBw@FY%GdSCPzg{5L_7lpa~H8tBpCYn*$-NPy-r z*cD2CT-IJEkvPH0xs8bM`jSYfpLiT!Z~qyk^L5$8s;AOw^ql%Q;AANaq{iy+%6O1X zt0bwcD!GyxxvLdDhHXMstoJP^u4xY>_kH|eu#4Xrs3>gM@_y)AJdVvvr3XlZLP#?`8!L;xRStElD5ec#*RFMoaz^R%-b zk%TlZ_Ko(BKGc>{S^q4XD9UuK{7bBP(spojo*}!hcmq)F>sgw+={)`32!H#UPwxAh zUAaD+x{^%oU*JF_sIPCDJvZ6rUCEvtn;{PqMj+yy25)J#IVG;b8QY5&Q$oF9-C zbs3x5gGd+aK~fLf52#(pN1>o7B>Xjq4C%SV94Xo4Z_@m_KeupCjcV{y(!C;xEkhN> zY}VHwjlIAbsCA7aL)Lprk6!q4oLTsRq6-KEM9*hiT(?G_T#e z9Ki(TR{b3phE(A8+$S+^?8Cxz!*=IQKWqt=cU-uZHepRUjcIGTHlwb>2e{6vc-w%q z=@1+Xkj9j0PR%aPcO6bYm+M`cs-LWat*u|{w=#CC7nbZ+Tn@Hc;U3t|1)4mW2T({3 zX@H9TzO)U0$IGyB@Bw!(zs^RtG;g%hF%7CR1k)FK<;2NrhomH9}vs|Rz?4iQ>;`bmaBxYch8tVJ3rxK zh5k&v|Kq)7>^4xW80cs8?}R@XU$*iR8J(MI^1tMiLqezz-mgjg!d~r9kBA44zDgOV zm1U3kreikfjm>d|XGTpN|9I^#GOjS*VFEkZ9x)stt->l>anJ zZVxp%gxtbmex2!+#hbZ`A!6bjOdmcWHZGnH@rUY+;YYW(50uMhw8i-+R}{8x^~qo-b(KvNzX=6(Z*q21 zK<-ZQbN*N?X}YN!*}odR5IH5MT_1F9w4`{0bPEpDy8B?9?q_id#|)7A zKK`XaNdQU3y<+a_e^*eB9~qiZxrdoMZrB@?ZscV&dwV56c-&1m#QA~tf#VIqn4P=w zOuPFhLDE`bwkiGMs&)6VtT``6YYptR# z%NN1tYwjkGpV#g#IyLF!%osa!y`~%BI_~sPMQbtKm7RaPi3%=`<_Jr&Qe4rv z>)BxKK|B`bn%r@zlLmS+P;5;WF>m{9ASTB~c+Ihq8(CgE2lF>QXpkCrzIo*0Tn8sxT0Z|J zMT8g&1&G;O%#hD2p|hP?6SVA!pMPbnBD-|WO8x5i7Wd19W<&hNgU#Cn&g(QD38vet zs1ysEWpw-8Qomc(lDvr~mEp+F+dYOmQh6bV?<$kUJB?d-1M<{qmFq z7g~!Dx4A_e^JRTbMJQwqC(kC$j#3RoHGL=)0O&_oxXwLZ%@25bzFF+pWRCrK8**Q= z@l@fNe8L0T4A3*pl7Jd$KX0p%W|+?6LAZPC7plipZbv_yk@=S^+TTV)(<|Su-*q`7 zCkktH)_d-6mLKrVu*$sUtblb_?KRbIP86+u)3~`kgWs`q`h#Pu*~)y1WUT^HN4<(C zeHa_L&yxA5XFUag<<;4~XL>uxAo4-puj!15%;Ju_?>E*5w?-qcUiaTY3m6f&m;c#4 z%UomMV7+~?nAqOX8#r?|}oijc1>wnljf$&%?0r&u*_ExU{r zM`sRX*b5c=>wq3^l3ZKsb~xA`N=NX+*OfR2_`F_XoD>w*hVFh4RP=XM9wL}jFgMwM z^NMDQwz`02sq)P$&||odHAN>EUs@gSc0I}W83rJKPtU((en@SoHJA4L?x$xmrw#Xx zT`CbWT-2}_OSdoA4PyZ(l_|__-tT6Bn~p?19Ft0{S^ERQQ|jOv7`D%Qg1oWoq8>L8mOpAA z;voGeCC@`AnyJcV`&!c3rb4nEu7HanjqL$vSQZR5@ zO)(Tze+idP{E#kR=s0id^3y8Oj3Ru^YTn%bvzA(2du`&0`t@3s{@T%AiesMq9Z5(^Yz^#3TI((D9S_cUd+qWmNUwei<0J&gbo}EkBIO<-Qse zIRs?A$3a}excvD&xhr1uky0AZkE0mEbn0ylspICBV$xu@g{|7SaJ#t{j2|)90J?!2 z20AesI{oA(q`M6#qcX>3t##g;rIR=tRVBUT-GqpCubLL~VXMCT8{Z6lx$-D$dBZ01 zj=v1p%6^eotQ+PTV1fREp_M4yr5@vcn_C8gndqu9Qpv`pqA#;juA&`Um z7YapBaas;f|Fa5NKo^2un7V6Wae}p>YtYuLvreH-b?$1O*1~G$l*m(H1d|eOuC36+ zqVr*LK21@?8fPul@7U|P_#8Y{@8)94wv`ty^liRiYLDT-2&Hk}2tHuhx>tUtNip@M z8hMYm_D2Ui^d*84l&Fz>_;NR`^9p6A(*P7&O^vPU+_m5rTY~W;lClVGvxznZjv8n@qm6F|cr-+pBsamQSu^;Jq$dG0{&9Zc4sTSXWWwr7iyi{@dL>t7!Dohi0c0Hk3W( zZ{M{S(4fczJXvf)ry<+aF}FP<>i)5xpw+unM_-Kr@y%YHa{$qy_h|?y+%8_)QNAG& zqeq|g0-j=Sz@8xWr%wTqa44G0gx{+1ki#O)tH^OoOHg~|`2qh){4zSb(`#FlRPDfz zinOb}4L~RNGfMW}bBtfvQ{oYDozj^P;veSz-`*ZIY3VJ%)2}QjzO}YtB?GMh27xGj z3dJ5B1iV0_DORkO?tye*zM@)z%+F60glG_`!HjDI+`vH~F+H^hi2M%%+Ly;0NA0*) z4zp&t5`D$aO8R-NH`j+ZJXWrAb1*v;9L^Td&cR9P#`s@v@K1L{zxmF+oq?&jDyDx6 z2mW)h{4-c!%?Dmyrhawd^Pf%Kf2<2n1SV)qrCGo$v2KSsR{V$G z^ryqvU;$QyTa!-Gf1aa%@|4yn;FT(}1Q!QY|2Y$X`CEJmFzVw|2a7+s+J#oHXodm0(;_VGBxM92uovRdQsdOwQ)A16TT8&835N=I#5K&|RIQ%X|NpRJ(( z^gCZQwf1-loCZ6*`&+y2H#hqM5C@30Dg5mVj2Qv%4BJ|#@^5`Sl=BP39P)3^^Z)K3 zTCvfw#}jCZga7svKLJ7}3=Gk~>+%xDX8<1Qiw^sdzw41=`T!TuECYeqKb`r%{OtuH z5Xtz}KG*zrYw+iW)f10Hk%8{={h$BGzu!sU4;6dhO-Z1F&cF3mc)$fdK52jJe^K`w zPz1tHvXy$%zr8ZVfD0myRQ~-%|9n86WT@aqT$|+YFYgDWc?9@i=D#~+4sl>@8wc!W z{_U0V-_7us%lh}l^WV+zH(bB}_stMOly?kB@s-vAJ+6`pitE46G&&z+S8Qey#h0`K z>bi*l_9SNpsG}zWAbIDt7+1>>*$r$=M#TrRn)k{W`!nv?{b-Rl@?bxwPZa*kP3sxk z`qooGEw7+b{r_qK=(*efR#gN#cb8}eLlw{`(^`SfEpvN7t2a~~-QO~KvrCbdLGhL6 zBXmh7Z}rOcp8>5{JcvA`>yL6PhrgZ?W^^DY%Ma-O+D1H#kw%qnD}V-4F9CJG59{BP zWj#AdYBv(i6M=R&<#j;r)3y5o=w>Czy_!lc9+(WAAk1i8Y^X;nq91w5arIv7mdbGo z{`E-~b7#U+z%JVw;F)rxZKFE;+}nD8M{s7AFdcRRC<^xc5CE84$X3fzA>PRi5uPbb z*783_O1hQcT@-fHW5oA zsw)sbpM_$9Kq|S)Q^(h+Pch9#>1h_++o1?!9e@e|3uY*pZoTS*MLCZ zwQdA!63$<*2Tru_ckQpQmTrXEufrT0S4j)3iP0x>UJY97y%?OGcd-SI=mIuHt>$t0 zn%TM4i~Cr$)c28mf0f20RL2DjPN9F(7SDiedd_I2abg1KCpt@dYdvuuo8G5ftts_g z{nh#KU44dnjK7-YRy^Po_q)aKQiuMDS z{wqsZnuvOzoaS9!C(p!pV~J+OVDZ6pAXS+4$^xM*xFBYkm9T?ROYKSsR{C?JbsK%M z2=E1V9j59H#_;m;xr-8vA3Ixv$aS2yZHWjiTe zZfZRK{e5EZ4d8ru<(ZE;9?M=eCil|z`RAQG2i^IQ`d5GT_4Jnk??h`uBO3 zn593?1pHU2^lG>K6wCe32%C-ZtJ-AbLeXEiRG#bj!28sl)o2N3zLLu}8{~dkJlP9a zPEXd~K0L#&A@J2nTyNq9|MGPn1Jf)kJ_0J#`h8fFY!T!@`trr^pDW4CSm(S07*-&L z&R;q%rANShSTCP*c^5D#s+eiM82n`Ey{r1lvx?>Sb?ERc_UYz9_xkj(W%gfu_kSeC zfeza*V{%@OVQYkbLybz_a~78EP(KvI_r(BhJ{+rpWgy@$?!(CO0_99d?s`pm|2{pt zKiVvS`yjA>`(A?{SlX+Mz`&F$V~u7jh6DHDZt+;Z`(y5=Q{m}}cGw@{22jcbnf=A^ng@8(5Oh~wUO4j$kGJsh7V z0=DK;uo6o8naTl(ICy~2W1e`G@=v|2Qh__>&lNX;`0CR!O77a65~x5AvgjfDCL(Q% zWN3c>Tzu*`7bQ2ds4lfEixD~H2SEETXWLD|rMd*WOFm~CDs;m5lHa!;tBnUh|6Q}$ zMm5)4Ct4pDr-DUjgDrs00u}1(^*S4$4!Z4w>m_;j#?r3sj)CUT!f7(Yu8YTssOE-< z(-Mybp|i4Zi|b?2n+kpaUT2FXXl{2ra7KalV3Z~=m|b7P{)xyOd~eakyAmx?1q_fP`7GPqh#!>O+AO zH*R*@xXc%A82`t5>hxjoqcTp`JGHR?qr}azS=?V)1NVP_e z_rH&E4xL_S*tNCL_F4_+3r)?vycwFABEsbUA1?*b`@C9C0On$=K&i?iXY&(zh{qwl zpgPkj80m(eI}pm@sg_|M6z2O`^`A2w(rEupF3T33kWmWSH&2FuhvD~Coc_mII|zBG z76>|XvAt#Sba!eS5YP(wJRgsb&y1!5uY?FGoNB9hD9&=&3n;aUGr7T(lTpSXO+175W z;6xwc?3ygDEak0?NGcoi2AK2QITSuha0?y%K%ce?lx8seyPG4>u(x^IQf|U^Wi@quqHRd zUXo7ST8fZMcN8d{f2$Qpo;oc{WLl5G0}qlzpUv!x;r1|CYEiRCpGmrtakRO0+f89h0a=&DsA~*>GnM{3$>0D#qWHK4*sTikMmP#Q|CctruhOYC6TYn>+Jhn z!XroY>X7)y=bjDL%U0{)H1b7%B$V;!WlMUGe;~DGI`R~F$E8ujX$}%VUc)HYxcy4rJL1uKC z^@%^|=hg3F$U(Unb^M9Fz;##9EgWUZ{Sefy(UxUB$ND+zpBsT61E_Gjm1vOjlE>wr zO{FnighN#DGXLXl*^};7>obHkiiIn`jG<`R9cWPuyPJouurfz|^@F;4v;(FY^}~06r!Y##2p2h^z-Y=EqaHS zn2+T6pG8iZI$qhDndT_xl_`dAY;`USu)J1Qx8AjDg1K zD`}&j@hV@8{ic==(7mYfdSUToXz@PIoKr()vNTM>zV;xyT*RZ$x3!Zy!=|UE&T&pD zHB5pbm!av+-Au;=_IT?Eubs2V(4)w?O`=fkHatNOsUj>5Vp{sQ4I+3FBS43DqD7PJA zJ{@Bg21DnAUfg3QuPe`jyFw@}iAPUAnrUC&Bw2X=H_Nb6$C$LbOKcP+2FTyjP*U0- z0KOt8DW^s7wy9RnyOz15Z^@$gs>=4A{2&M5wYq%0bs*#q8^6{=Q^|$6=yigWJ%h_; z^vfL9LgSDjm^NeYE`=>ToDMjda$#H6LC*TZrY(7($%00FCJv!&o@9!zaI&*_=1SIQ zrw~p>_@PMG{&AjGoZjjEKbh%)b5(8~$?n~?0s@J%xJ;N_cE~`1q-0e;5;_uydddX6 z)Ynpcj_hZso42HO2nTQ}$&WWS4y}VuP0=c;;r+~^K{*l5cwxG4ChhWu0ZriBC_Br= z>}xDcv-KIdI8t>cq4c`E_|=_fSr}j_IRr%JC#66QcGnUKYwz69bbq>V)F--X6z4eq zr9p(Ck8~pHI3S!J`ZaH!-NxL$l9_*;Z*5lQ?B6OvgK9QEFZnpeOSdZCjF9s)t`7MA z9`)!$m;{bR_9wxD=0r-Z+!_M>*ON~24+GIutwAgwpH!Cm=Z*MI7YwHa)|a5#9%t~T zwjVuk%#QF{Mh)?BLF}xnMI*gw9&{9R~je=$i1@ z%y*o~iy<5K#M$WcJZkF8A-P0mCY5ppg4MDW7y~o{j zwyXvoJ%}XO9Q{ptG2%%UM43#A%_Fw%rCg7E@)zMSiIuF4^~>w@i$}_Q?}=PkG~4j} zItVu@2ERztmd~4MF&%}Tk0lSk2g%|I?Zphhoew_iq`Bk++c7IbLfrdWK7XjtfGnyx ztKg@kMtS`d4S|cId@@-E>$saeCA#=KKQ;qQ&fA4Trh~FoU@7$bBdH~M|3Je4Hq0je z-wKW;cWZuu`*S|Jh(nsQ%T!}P!ZIqw`)niktQ-owkryfM$-N_;_~{B?hlNc(i10a9 zz+5sAd0RHYwJ359j^UKH+ee$mT{AkS!IjRI?^{3|pTbdCS{!10{p1W@1Ru{X4qG0K zs$HR88B~8Sjbl5w&4))<*AYW6Q;Qz5!7&A=)=PF3mtL9eDaC8L1nFL z<1nHLfpaSt%{}VjK;3J-Um#fs+*(S-cbnk>=vv+}TCj1gn{rgLdhomv z6A>dUA8bFKM=rE4Q&&3z-(+S4pZtuaJkH2x2smW@pjhv21!%A-_wz&dwIGiZMqm?+ zZMOeWTVW#74O2|j!|^^d0V=Tz3SvmQ3WN+&G5T~WKawe9(L2GFt1YX*;?~Cqx5w*l z5k^c$eqG1&)h&P_Z(UV_^fP;v_cmU!$r=budM-NAeL5Vcyi(3B=9v^c<--T^QrQt+ zxtgHEC#EF=vHKvNh%nQ7|DZhPfC;u56w(XDM*%{WsGrIgfo_lZOX1Sfe^R~b?ZpNs z{e>qcDqLuJzsMUnBij-53CQ7x9GH)jq>>O+==y3gvJu(ylPv8j>Wb%inunzGY{R#| zja4uCAof?uhe!>`542uhQl#xiY--g=a@5!c{yV=vS4JE!GFA}bN zg~>6(WMIOLkv7^egI&62cc&(kFM~WW=q&&jwBvg&&dj-n0UK`>csIi?=DndseeF=5 zk|wKU{)VED@=EkciDHSs1q`fJq-$PQN&5m&JjkE|j^El6s^XvU9CzaFU%LJbdAY;F zoWzYwFVVrYn8z!jI=9a)>X-fFoeB|R;e!CI|D9AJs?;M2~^{cN$(lUto9=Udlc#_uxhb9r+y#dvAh`hbZN)dOgdU)~p=7U4H z^e!YJ2zh-Vex%A%=I}~aadU!msaV9Xcq7(XOm@RJ<xz~h|6C!6{6 zDrP`;4TZcJ{~?ZE^w5YF6Ma%*Xa1GefmVL!IZQDH3t|ZWxlBxo1thOnXi`A+o)5p* zzf@u?UTbVr9g?ZlDZ7y#C5eYl8IYs5z)V@dLH~2h})`Qr)fyw8y#9j65BPP z9aI*Z_syH8{O=74CE_$?)V<1_Qu;*p_(zK*_n|<)ye11?awWrad@V(FI)k)p*OeVK zyA)q?QtQ7FYb<{TpUbmb2KFOJ`-y06uC*&)ZcWEKc(bQGsDXjJ`^_bu91yElqvO+3 z>{HM$h>v`iZ*+qD6Dr8ShU&FE7kAM>Q2$BRmH~<)soRe-SswoqrT;6cPo!^%?z26N zM@w??+gk+bMNkZWt2Qi5i`Q-^s=BR;}hEBNO*iS zlycq&q*h4SaT>8ZUdc?9XOg0gym5g=X%I&;)+Sd)d@85f()U}&^{_l}A^FwNH%Yd; zA$oeZ+ZlIPRyOt9X#hJrA`aQa6t6lQs@GLjZMPuS1*3V`%H@$BGO^_|$I;UY8<`1= z^URT7H1?8BS>uzJ0FvjMqe}=+^8yP7?;Va`;eipT0EG)4_`}HqF-UyKYua!QRR_6i z4o~QKG?e`DwHX1iw&TJl6PhrExzyLjRRl>Y7P)2jIVfJ=cN72AK9{Q-@5hek-hBD> z40bmoC+LlAV>`r5iIC7X9rj5#urdcE zF55%$D0KRT!RB0>8}k9W3slV?PjAUfSgc*4+)RaS$#pr|9hG4^AlbLSB_V8 z?rcg|r1p`1>K0yV8|BoA$>iNI2@7ZOh*^Fr?@D{4{;ONJNAPWZ=FJ6icHlEQmvkD^QT?Zp3YJt=Z>NEU7!Y?I_ytuZ2Q8UL9-2bHi%Hj0d2c&zskr3BUB- zXSkG=`=&r+<+sw0QHL=;Do*l^&&i7r%P1)?ZH06Py??AuhJE0znFy0`aL{N&g(S_Z z#Q^rm6<$3C?@@WIt4-^LXqHP%@ANh(smZRDQEe4?rbWV}o~^pV>nPJjJFi4=a*MWd z**UgE(A;@=%GE=s(t9~sykQywkd^{>{pb{J@V9>2-Y1VL^n4XLX;6f=$?mzd?Qfp> zEHhGOKOgE3_!$?N{BdM0Y#6FI)hgpTZJ88Ha`I0H0$aLgiZ7oU^o(;6&u4A}A0e!( z0ay2Qq*O!6a{SM6tv`u(Y+|)-@@!%}*j{BedEYq9OmB#2Px-e#jA~jeKamE;mR`MF z$p+iqU{Bhyo5@BICz>$vmX0creBx;s-UG}LVPk)f_By0^qnHtqTp`|b#U*_AdtQU6 zMlbyEq_qIL8fAxjyj(g?pUsyHW>6wNMRkG#E@k&_3hR`T46|-a%ef#Vv+LU6jnSfYZ)f-Mw_e6G3;f^ zWk<`{V5TS|qPxzHbkAv0%H~S+c(}aMs|E=}h2n!lV$A1mckO8#3tS_)PQBrP)uK}* zxcSMMfwf`zI>JlgjA+VC@zrb1Fgoy>+#A6^Yil7^7g@Zx{>obw8~_Dl5c4PIF9y}Y2J z!GhRQJegr?u4Mr>2%pyo<;5#J&uK7s+nRG(j#w!%j9Gz*4pqqutl=hUkq$}nOxq9e zBvq4`U1$+wd2);;m7E-D@h1>#WxF<~ua|_Xd>WXjrzHARu%9s@QIlac`E$z)ktta+ zn3fR)%~W$d#f0hQ*m1qvzC})cr#Arfx5^rSBsL&BL9mPQ?jl*zt&hbdeSP6Hsx|q& z>8OyfWBl;%)!@#D*t&2mf@doRTz&4f%?;SUKkO8(YO0kQ&KDadB8pm?t@DvIJAZTx zPg|N%R`<-ZPP#b8Wx!J}qQeot*DM;1ZIgKdZBL5NinMs*B>%?en;lD6+{18uC{UV0y4{)lD zoOD0x=o3(lUUUv(F4f>^yNw8WwU~(ikt&E;UIV{|vf1@tcB3%gYo;^9VguW{^iZ_g zM&;KbTpgqT%s6pm-^j-uTaGGxoHFdBM-bvJUalU_TLJ|>O!M@)3*ozQ+R5mSpXGIB zqEekj(eD?ICM1+e7P7da(ZBX>xwsxeWtWHpJugYP8+Oto54cGsXKqhoNtM>t;Hvk&-fG>C20p0y*3^p17@8ccs`EPRN1)k#ye8@U+i~`;(R&Up^l(^Eky`Umxt>?A zRQc_ira^rS$K7?CUr^{ABIpw%%L=Q$l<;#U+ z?ctn#k2rm9Qeu*Qc|mYYT^6*^;?eKx_XqQ=xRAnnqiXK{(A+(c5l(gd+$(M;U%v4w zDf~XFQ#1KQ;BIIi_6C%1HfFAMEF(aWeNdu(@mB|8|5%SHVJDDiHA*nA9m!j*&!D|? z9divKkb);0faOB++AW~0Ef2VhCt#lh00pbCcs@{n*_c+8JN2%TWydUC^uo{531i~K^YOnsbl)<{p$}yr6yV$@T0z3MB=2dU zmz+E=U_JH36go+EAul`zwp*q4V&a{g`+3r=<>k#J>JmgNxRW6dQ6nf-%jDy7!`KCH zgGTS-iPncX5rpgY4~6@Khwj5yT))APwrFw~)hB+)oUN2w0i|?GcL-9=;CJ7B-900t zG#%YpErXLDDMYQVk=qCE9|clTa*V?*CdyB1OFE)YM5*}%G@(q2FZGOdNQKC*PB;-> z_Ux=<8eR;c_S7{!UZ(A87OF;kEL*qD`LEr;$KBa~W#Z?_u4h#6gC!%$WO>nRgNCbx z++uHibRhkn^X&0k8DC&nb5)1IJuq6O{gtdu^5573WLdZe7aT@M*osQXKukN>tYYqYHhMdv0>s(*N~k zpZU+7AGc-~&wLY^DAsn_(oz-CryHL<&*B4#fx5xK>LU8tvTW;xhvb`?*L6mVA{Sd` zWBR351)$Mi0^gCWw~U@Dd(#>5+*#vj9Zd5zCa>Vgn9(L*8u(syWF<5dO~-Yf)*zXV z+X~8DUp+BTH1vHn?>XjFLCWp!`<;rE(MPPm3&ZLY=szlu8n(g)wP-EX1 z`BaEEtI|_u^06Uh?_ecAQ|}h}0%y)vTE|j@jg&SsJAYGUMZe2%?_k4}i?uSa_;sUO zt(h^9y{|1wew5w_>iOZ`=0gtb@3n~!mOpm%12b$x6WWks%(H8rKM)4*j@%A`wJom^ z^D&1ZnF!9uj!CxSm>9+f%NKKly$rz)SP#!v2=Ks?1ewc)BNqg$hNqIrTb=EpZ>9;o z$sdZUpA=>$n->3RR6|hdTvnO5P8zA@wY9$Pw0ngm^UH5%LaQPiwR%LMIA~-c#Oy?bfE6ds z!mMz}ij!Aw{C*lkKyrg(pd`ky)zzhRz3;VGDqpsqjqgH&1wTBeQd%49=N$~TQ1q$9 zrccf>No#zeMSS3o>nv}OoTekVrU~!_bXKB$3@(IEcO%NAtkQCKjR)Xw-G06lHER}f$YTssr1r9QQf`Q z>;4AU{IsEcA&~nosLYzn_)j0ie0wm^;vL*ezlWeNhc{N}*ITw*(!0w|cHT<3fccB9|c-d`wdSi?=-YucS@r1fqBKadH*gp8EF7S?7COzTa&`;iAGcr>*fwPAFrtn*+oYOYY>UO3$`Cr&fR3!&)JFOY%tnXxG)mpGA(?0)~FSh^g2SDxZ`7TKa)l2Oo_| zKOKhdu>(V>OMF1bWA=fG0xeksvyLdfm}yam80xVAMOSruhXHzrt8_a)<1keQLWZ?B z1&EsF$O01k)`XxH){aS0u_xm3&DJpvNxW4g&bpt;g7 ze_t7hr-8%vIK|i!3MF%!nQEBf{v{R+DFw+1Ra?ecPb}dugffP8>L?Jd&rG_EeI zOJ7baN7(Gj=Xf}~*=*Eto{0ghlC3&MnX zYCJ5h_gFk{evdH?u;1 zZy<`eJ5w!@I%C(P9*@BDd6P{HT6-EB+6rGmTV)6dHWgo9*~+KPcFk+MH>p|dJ@sHq zP-iWgyK3Fcfl0aPDi7u*e~|52TZLSl+QI&6kUKqAW_=N7s6J#+qAmH|AY@8IXeVgM z9*Q5-E1=9iU89Il)L>2~g2d|Fn&yY_^afok5~%q6=qBiNbWm*Za)%BCrL6UXYK+0F zIv1|w+b;>=Gn^%*dY+?@;pPbmjle_Rvl2bQM$!S>C@;Q}1U2LrWEt+JP<7>X6!Em! zFrEn#Tv$B3Da z3n8<@jz>Hgc;10v{72g1Zh3j3+E`rY4|}x65F1#kd&$SdC<{{^yyI*?W*(G+p?0vj zvvzBZ33^LOM+N_r;xA@!7GoYb*jz&^KD#i>R9?~^?VtiROldg{Kh)du=n!N@-Pp=n zsULJV#%Q?+X*oQj+_IN}Z8fjmOp0t~^0w@!ykyPru&(2wN*NtPZrf3*BwI4hMBuEVS(=bifl32kgO3_9S&4a z2VXy1m@{OsN8ppY?Egn(=Pzid!ZqwA$;8iFD@9KiI*?Z<g^_k1$H<*=VKhB-Poe9Kc~;_CZ)m3sb^a(1wGc&*0ZH_1DxI0VIo>omHxBDO)6 zvsSc6-ko61(`#ems&4(a>u9Y?rt6P@<)(M zTG_Q8X;?mA4H^~H*W{{RD_0*GHr1mIZ;|TF3{Gu5*>ZJ0ZhFY`>=-6ygj25RS(>9{ z(E_p^d$aNI5^kmUHV7Fy-$n6t1{=oO>N~Ewk&8lUJ;B~9xm(6b#ud&wuZ;)c|HAL! zY5e$(aI@$6P}PWPxX;rc`~bkb&~3;?beSNir~4_&%$J|yqNvobxabYfQ-Fdq4%qS^ za<&?$r$*NT3lPa_P=BF#NRdoq`AKSTmEYY|Ifmid5#_**LsM|&gXZb699~Jjx1;z{ zTk0M^cO*>h8rQ78G3SrDs-9cUxqI@pl^w~fGYX!&D5 z#QVv2VdhHJ-aUm>;x{n(PhNMZI*HXDo%;i!bI|i0mvS?CsY>@sud!w{M6%057yn1{ znj3x_BCB-5-kzV{K%UO5P!z~o<`uZ0Q6Jct$uN zJgo+iF9L=O&wF5;sfF9!UD>ypuaRhaXtA~4vujBjhYa=!-zkZTMyi@m{9NFlly6z= z#9)Dw`yBU^bT_jwi3*OnwpOpgmvoaVd0Hk)GFXO*1HBu2;&&g~&N(aboHvYX4M1aq zAIh-mmMDkV%Qjw8UY5|pR9kL{k3hAolw0PiHu^e{jG(9&craa6wVN-NvwW7i0lENf zjrOB8w*BgXR(J-cvTIhyX>Qu)XN>)9x!1lJ$FDKiwz#lj2oczEAM4(BNR^;9)=p{e zK}wj!^YDJ6!x+Jr2P!xJE=RhRn9xN0%_MoPBwmr5~ft_g-MUg_BfXavdKwS+Zy|&%`z!mQXjPSDqi?+dyI*rMJ z=WG6XL%-oWzI}c^?|Zvf{cQ&BpByh>I#p8MQzfGW_$vc+qLg$laE8B_Ea)_1^sPbJrkWB4<>4^Y9 z8_%kJxER*}{$#x)kl+%RyGp1lv)oh5Bya9A#iRG9HYWzPsH}6O36lUtH%N@L$dnWw z5o`-9R%MAE^py3jtY%O))lZ?rr)s!lPQ-N=sR>3Ab3k(~8I25>Y6CSt{%fywQ(`P0 z*kuQKGGD)V(c6&blWr1eL+hBJN&W5byWGJaJx&l3ICW4k}0JuL6`9Lk7(D`)Ml~ z`?;DEa(dZqf2R><43lM-{LFYtXe!17-=-INVRwGLkEgMcq=FmCF1}C@#Qr)`kbU)M zhIvVqTsEpR9L}1eluj{TFSX5@42`!%tkrn2phQ*k$hKl==)`GSa-(|$C_Y72Y&~H9 ztrH7dlb!u6JM8{%QJpl5^ih5J!;M>>Ib6~V6=?w{s=MB$l8AI1?n#tC@W(*Lmc^O` z7P;@yq)PrI)8LK4hhGLi422n~iq-P(7*5{DA%Tnr>$}M$?{9=XNnG&QCdFZT7K)mN zGcyG25w zWGrR{0VG23*Zu9TEugGpzCDhErVLqvWk?-!fdBup z-@QVT7REkaa4P+;8jGltsgTQA2=sH#)=f@WN65G@Y3R&&P6}qWkoj~y0{LbJTi#+N zge))3nJN01WTJ7l&6R7Uac`Nqel9`SRFxY0qcw{r7l66?uqUyC@q0U{SDwjU%cdg% zMgXhRpA_?Dk@G4iAB}7<$yryg=Vi3k#c|RPh=xU#NouKz(|DoW9mQR*@unz&Oyd(mIx{ zGPSt$kdvhyr(rvr7<=OPRI^rf-W1_^2E;QL>_T?4nfLPu5kJf63nJ>c^`4SesLBgy z65Bl0%X><)d&1y*dUMU}8n;^5jUk+h(ZWF@{DnOmC1#lOp5%FYxSMB=JwtB!hk^(= z>#n_cNONEDQY>}17!saSpVf6DGaQVp*_r@&rF5j^7g`Ma8$FwciQ$vWBSBr?WOnTz zJ-t=?16a5$kJQRWGV&wB#dBKvJkM~bS30NDlZKTbNuW?15W`cAC3(aQIfL-4s(tF# zBo24c)6qH0JfFdE&2j&tcLC0L>zd<+!=+0bs{pwED_XFqJ$E@rh~Ul>^fX8JF3^>| zw0C?!UG1;r_2pLN%83$ING<(~@X`w^t#wysx0UQVVVLzW{QBI&aizgoJlyIf{7cb4 zvr=OCYhH&*BwpV5D5Hg-lNXY@uuGg{n~oo=BhLKk0SPzNMbh%NbY8CBa>t^&6Pl)G zC2=UfPUJI2Jbj`YuOe$SzFgYef9#OBaK}o(8msbjzC_hMYfavPMP7WU25E3XXN*E# z6rW00Kml=u+QeWtDawXDoUyD~-5s)~EA_BMuz(~fFFbpx)VG+L{0#cc+Nh+sDJOG6 zP20-oDWVXwlylKwk`iB02F7x^@8<)8AyPMwOJ`XD@BT29vSL4QC)(5L+DdO6nOF^R zBnLBG-5x;Qh=b}oUlhL)3D4seAP24LGQ^324CuqrbA207yUV4e7b61IwOm61u}Xu+ z*NcL|sKnes>M!_HuVqm_O>OhM#!UJbKi5nIPeik@aXlcS;7m{*CgsW?ip~FAUGbX9 z=<9=!s&*7Ch|iNONvoOi0%kN)#`~py3+ZVm)wc4F&w_1uj8~KkC^w9nS`F83f9b!A z+xUY}jbaN)mbZB&`dZ@b#+`cdv=;>*MG*6c-{kpX>wrJk~*$1{T0C_I2Jwrpy5Qdhb2kf%4Fw)m7P{#TvG)Tm=(JdHoFu^so& zKqg@THyONkl-(NbLPW!M4PWuu6@&@?J*D&{jvMGM!Q5-H(^l6J)EJ8$mTM))tD;@$ z)m`}aDLx9^{ch2v++mcorCzxujKhyIO^`KmUAp^weyt?sx#urWe1+tJ)oJLr#GDDb zG*hj93}hEq8v0GJS<^Y8U?{WOg1JjIm5)Qt(bh=C$z^B2iw7S(O)gQbv|9~C3%;(( zdOYektcgc|aRLJdz!Z1EToUUs2P5wiL2c1efVXwi>Yt5f8{mh)-ek@*AM8bBX!D4|JXH-aU z=KlkLGc$1vATN}oE(adJ3BS8WNfnEyj&=jrxH$Tpbj8(>tJi;8!{H;(LO~JgWwhji z4*T>gA0;~m@@`Oj9l2xnAPQ9T&4=)b?&U-`gfQXiY7+#;4_=axmqF>Xjl>?OFWBn@o2SGA9ppJ}GS(mOB?))V2fJzj%hc@eij46SYV&4$e%X z%RD1%RZy7i__SXVYf^&2E4P^j&eTMN1PxZQa^2=*NPY#oNv-9W*v`om4j&np*rhs< z0r)tHrA|ZofgL%Mzaw~`fC~R~>n!{ViuGaQR_G>*cad-`!$xwtSbC8yRKLXYytkFp z{mGc#0vndz!3rh;YXL~E0B9pBBrflnD%BJh7ox@LgLxfyDr2Qdv=3uUi3_*wR|Uyij7NeIn=MM+pI0H7fXV)$TF_EiHPxsTV+7_AJ%Pv|yInSDB&&i&ht;S8bWK^j1B(RO$LWaWeU}s4g=h+m9_h z5XP=RlFz1<9X|v9k-wkT`SCNs=C2wFCIvk@7=40erQCiY%fm=fS*W?^m_8`5Wu5d1 zKGq!*)C!rLmHK-vfh*LXc(*)wsmm75wT^c;V<-1f5RX^7tkci1rUNIXXrr8&DA7V3 zKy>w!FURQQ9uf*TyMG3H%{EK~;EFi3w|sKIjrHJZBhjpq2YV%gLgQqjROZ9fyunJ` zg`$3dgltJ>tXgdF6scBp_HTGRxqJIwt9*gFs2RH;rw;L`CL8bN83pz7Wxs#!+3DB> z;9aFH6Y9`3KVesTt=UkfpK0IPb~|kY@In0DHgmC#Ryj0k8spS|iD|7Zo=)SG{vc3i zwprLgz2k7{+A08JQ5IcI7VX@NgBlj*6pq7k2Xy~1Lbb+vX*^{44$tV4B*Ud;0do#v zq)QZ@KTzy!xn(9kowfUB-R_Md?R!E-@6kLZO&&LFn(4<%yLl; z9kVn!P{^uL`%Arjmn=T^j%aj#K?T%FR-ZGU*vK$n`St_wATj{QtnCjE6o+#gG6LLp zE~r=WU$QS}>oj1F_AbbFd#bz_W;$4hLMwKNuuCr`bv z?vx;;+yMl;p-FT1dEuz;e?C$F;QMUI0Fid^;t#_L%l{&dR((Vvf&gu52#5-#xOdMl zzr0>%EOUwZ!iCEYs*3Ukf7sby;_mB9U&Poa*jWbc1=R8R7SiYcb7}-CvmYmLk}VSD zS1q*vl58tDsG5{660CCk;p&QZWwn(+0Ld0!CZ6yw{F^^))0##cm)ZPyU~bs-?|_Ow znf=b0_fg{7U(PrO&z7$c;Edzw*MBR*|EyObrwz17m|j|6pVs^PIlQUc6kxt>n*TCR ze+f(UJ|%8uHr8MC`Hu=JXdFpfX1K~Bj(EZ#V^X7DS#;3_kl4BYvVJR3tIdE|yxV_E zF8-hEHUGuuoeaaV#&J~ldaA#>)>qv7D`1W1{9V?Q_1^=gMKJJy=@_@?|7nQsnSdwz zBolAx`FA!`vc`shxTe70kLeqXs2@`Ocq+!>Xk7TO(*<6rC;;E*{VU`-^ymxMTr1@{0WZe2Psm9Ujr=+)hHI@E;Qu(94mtaYJyYlDU zVRWSSQ`SnA{Jx@g%39zXa`-&x0oBy1D#a7Sdju-~gg zzPtRF3`D<4a{XPfn5%#e#H#t?Z=?F1##s>@$7OLa&~3jM@&b=ogGI;uaxL*d{*^r1 zN0YjTnD9qGT>g1A|Mx`3-U4b9e>FmY2af0HXK=f0VD1OC?R|IOd(u7k$~o816W*)jt>!SFLM zLD>!vf-;^C03FT5nT-=}kT`2{H1>G0;?#@6RR1V-lp;piQ16A1Y{!8sX}&HJ z+@S`N?rXr}*$qb;W%zh+BRbnUOo^7|;gjl)!>0hRA$I@$e=C6~U%ydIVmFrZfEAB_ zdZlm|Nifj)<3H*(Tray0KA$5+m6jeyargReXe|8Po3j3A8#`?>W)+Nbp2HEuyv0aN0)pPE&gQ`w@tnBOUI0MtNF0pR=|8 z}t(?ahX8xDO>S}h|Y})2C_WzL=KYIxe7F98 zCj0;UX_TAmjQ=#y|7rdx!tPMK)+xR6+ULrDeA_=Qg4a4K$p7j5JtMjwCa3>Gg1=+` zZQ#+*$az3;gf9ea@rnXrkyg_u+22VS#722RtI}E6ltEiLp6J5M4ssB6I>O?2$TM-Dbbnh8gf!81WGC5OL(nUjZx4lcBMSi@#^jsNdIvOwzZB%>+Je2;^{*%JH+i0)V%pxYs@!Q4o%47g3KTm0#FNAlfDpm* zVVvl~^eHIa^PlamBu`ld4uN|?AbXS8Vi20WG3RaE{5~AK<)Mp?FZ6ex{~_@ZYo2@k zUPTws!@>Zu^dt*MpvLYEBOn3F$#bA+Wby`~r_PILTnq_p0_t4GQdNn5xQ@c^MrkhJ!ZJ|sUv32E zYX7~K{3yS$%9gTV=wBpiNjN>gj~Z&#@{>u}?K}j!WgDQ!>w;O$bT`s~No-XlCLuvp zTqPCWd4f{Mbe*48H)r=Lz4wLDQl)njBiDdunVMZeRl}g*K$1($soa+u&`(d@4%i=4 zVO-S9`3aV(Unqc4&VdZYh;j#q4bqZ6n0V_7l5!`aBJ6@d{BP*zH!4gUUmlnVJi^AC z?}fmMuh=fpn7in@`K9ix{Jh`n)UP1~z}kmR-4RkVk7&VC)>EE2&Vq_GxOJ_xXWXXgWv9W<3~phcXBnh=@u=q6=XU}_XHIR+Lvek6@N zv?uMSJyhD>fbTd`5Q%e$-OYPW#p54`SNCPYWc-L)!w@HJt*X0t!mI|$o7DLZZmsvEXvw)DG+gsH;QOf9pDeE@e zy{K2>!ZI_uhe|sCxrm5jS+}Ff-0gguD&eHSybpcjZvAVv*WH=|jRHVoWR@$JgT;a( z>>AD)GIh?I^@Rl3>tEycUo#8jKg=-iul(6dYn`PL?9>nMe67|-aK*>0yO2yjJ^jsK zP8@F_OsMYoyPzzdQ>Wh*9~3;>SmS`$r&-1>d#kFg>gVOf_TBHxUkf!Si6b(0H6COj z=l%V@)lo}8%x{rq?`xRvS!LXs(6y{VB^sZZrE9Yuu8v_}3tPgh>nUA!(CCK14~N;l zp_|~0<8JD^>72ArC-Be_Y%z7pejC268%5F(;Ffqt-!$82(zLf{5twaSUJe&<`1X6N zI+x*jXCMp=@0U#Z6OHxOLTBIC+DY@cPM=|VM)j8yH@>E=M zFjTB*UV1YKFofNJauxR{mVB)%@eyZV3abW}0`QY*f)X^_>p`E`w|2Wvet?*};x$S0 zV>PAE%Ji-)H@2@`mXiN@E!tyDiMHh>t(BNm(Fz9Vmhu*r=9&LPe<6jfOjY*g?FsBu z*BOEgs2aRA|48~9;IT6XKdAJb1Cu#6uh^HnhXI>O+Rz&>)t_xe;xfAxIhK(VDa}Hj zNVc}emK+HUjpm@o3TK`N6K?%>8>knJ{p4!0?g}9zklsCVT8Xr?ygnYo-|4?MH~Mf? zUy;Q$w*8mG^(1Cgj!4qlfY)I+kk(i$x;=E=e8^h>St`G^qscOa;mgL> zgoC#}2?>QbzP!KU!ynC|l}D$*_?-a0?fM>N%sSTYz?4mHs{j5(nETVDjI4H>vGbx6 zrZk>YIL)kEVg18YZpPOVg|nZL%yWJ8?%NeYuVpw&hEd&M6Kj-x#Fz zB)k5P#H*6cm(!6v^@DnQCjl=coZwYSGCNct=L}QBM-7ggD$G}<_Z1FkKQ|`|}|Q zoEk7Gr}GXg#Z|pQOGNMdWd~mBwB$?1Uq~E;JTGEg@L>6WD0>T_s@|@BSOMuqNona4L4iXG2nteyAl)V1UD8t0 zAT2H3Al)6pA*2r7-OYC&-Hi`a}h2qo)LzYI@^PdZAIkI2Z0 z+h=-jt7VG1Tm_4%fm)f2y_in4&HCUOx#m_=tKXlh)MU)We>{{_zEW}KaYPPPOPx^n zTD#j8aS)MO{pBNt>6A)di20e%d`(?wM3%7j@!Jx{#JZ0`PCzbS7yiETg0Ik zRksBD)=O$~!`h~H9~`+x5R>>U)}$Kfqmo9niq18JQytZY$M&Ao@4NQ*K4*uF_Kca- zXBXj2szqRw^zO4>nh?V%?+#F$K!*D<4<#U5=~YrOPd7LINsIAb&fm%Ci?B&(s~(W= zM)I|rO~}E|_Lrl6a9gkkXf2p2ehopkc{^UG5R2kT>`>^Ze%0&tpBbJ0epEef)Vsbz zabiJ=7Vpk;^@`!hWJRsQA2MNC*mes4kX z4vcKR)B{h3@#pIYZh%^lKKJ6fG*$wd-kD^@y2U8G_NCB-{1Z5TEd%h_J zS&#*I!Lk)$O&-y8)7J5CzZZ!`o5}xq77pi8adfpIdBL)-x&fMaWFF5uKl>3KsAH4q zX;iGtg-=8~`4w(oq3@^$lD2w>6Pu$NLT*Ne72l20gs?_sg?_n$JK;I_3P@WTM;`s# zU->au2BP0}wv=E(ZONI5SAG-X2HTc+wxs(!Y{4PM13q!n5;ef+ueNrOr6!CJ}zqG4i~Yul3-cE((zeO|_lW5L(Sc0)`; z&DKLu_@HDLD-)d$K4*xN>6mMEtYsbecf}i3jLVya=|4<;ctPEuF>7dHlFwYYACFd| z7EG0H6Flmn?c|nk)=3>_tDd6Cx4Y=J6K;Cl2U{-*JSBy+TR#l8W>lusO?7C>Fe|R3 zKXlf$ITSi-N-{I4R*a_(mx3|bbzZ}s?jxOMgV1oQbq)cBYRPn1$?bfgGn35PpM4z6 zkos0bW5%u34S@yY6zWyTZfpae-ed_zmA&6Gb@n`h;mn7?`D?Pmjn~Uo8hvTo>~j1L zhC7|#l0W82kHuUdZt8K`FfToJA#{H815Z@2IPL(b^0U(q{DD`L`-qo#m-xui7^w6K zqoHOaR2|v8w3P0{aSgsuVK(h*yIaGe;f%O_L3*g}o!*fnsbd%GAWzTnmxmT#LBK{h zys8xxjYkqX0k1^e&akLjL7g;gBMI*nLgWM0;RWaVm3U%vmDroJ9RPI63R+ zkD->D2Kex}nBJ!?kCRZj**>}GHCqH<&rNE3&3V#WaOYU&WOkivRQJ*+)dD}g!uctS zyI3Uy6Ir1}pIh)GFXZ=SH5~uC#J9S}SaRydERmp3dc%9`aO8x^1nqRjX%lG-c4V`# z#;9`N7p!wH$=%`ZVy#$_;oNgiJB2#rr5%&YPb6sipD4`Bqoiwy=RL(x-5ORM3d_!( ztNuu^W#G~^_!FZ|Aa3Xrc^Z?Ps2kboj0BWySF?vDqUNG4`)D#>^jWVJ1l6QDkuxnU zCT)eTvY-aAQ$`)@iIT6D3~~D78uFZ$JRgzB6qHQjezowjzizQ=de;dAGY6^LObjFk zeikhV)!1A0=Iw6Tr<|o}O}Iy+BgL&vu16$8$6|4=KPe-cWq*k#;h&)&YXxHsSrLq- zCV?sDQH(v;9Ca&E2IT5^4xR{xC=>!kO;T=dE#41%n?B!jehc1j#i=|eSr|9v}{XOzr}W zy}h_`(3Wp^JT@`z9@(q83Ko_j8#V?R}N9q#dOd zN*#+ZDFmjWOCd?ehEEE?lTLZ!R1r7HU#8NQUpNXv=6cl8od3XUk9vU)e$yvF;NGq zka?D3mD@Y6j|7Jbgx!$6cGD{N3~a3E&vudOSAd)IK}{<%+0-!mFcCGTM#EjuALKJzcs@4j{*faKy8 z`|taDQJgZ*DqhiKeS+kB6U0+qROj^==imFm_>cv+yqkQ+n&~&QeMp-6i4XGBfAgs^ z>Fg}I$9bm9_M*1fp33o8C+iNJ1@@18>-B_iGLJv$9m8W*{uMuU(|jrv$O_{hP74pP zbvUwxQ7whH;|Mp13lNqs^Q_y=j%0|{?^v!l&93UPH9VvZ<4B;*kDXWa+B2>Im3K5ank{@h;O*qah%dxf?^ zy~&yL@fP%2@K4pzTVK#F|KVPj`GIy8DSxL8$#XZnrY7sBpG8wxhj|5fx|kwn%>M3^LYb$A42@Wmwe~(ZTC^H28Hev1il!x2Vl_=)V z<6%QO)(?E;QA=N`Bb?!E9aSOSyCw%tc}|t;R*C;U>IPIhfxRtM!WjTLApZijcUYZ7 zW6dda`jC@MmhG>ePSIRcc(e7^m>Lci0EgnwXm-=!2a2$}anuZ1inC$YX*JW`gBYtA zjwN+hiJnWrs|CnTkMF}BpB~3XV4kf?3m|RXC$%%WF>If+YZbhlyCSpcA{wen(wjbn* zGS}Tx5D7I3`$Dlt?Q(ge%L2_G2)9SdYb#hi#y{<3$`SBvz1C937!PeLlkiO;V|TGJ zO&+HSLSG)Sf~%aj2*st#K>E|ss&HQSwjtL7IHJ zgu`7?QjObwi$3-JHPf(^RToFeu}vH@q3JZYWF&ERk%{<~|7RhvA&RTzy_RIzacg%) zcF0aA?p&sbOH5=W@zwJNKw?hQ4*2E3h}iJ%Lt;=#@0?Hj|q;snC&-qqv8w1brJ$|3`7*HgAucsAOD=t@BA_37egdY5#ruPZ6!Yfh;pY4>r=;QPQp@&Z;}bTETq%ne z(>cyl@2&-BPQ@}s8({>8tFg$^>gFV*J$%R#p-ty$B`Id);x1nMDavrCS~o>)9Yi0>Nj>DTA zZ10p2WNWHD{jX1&cf0M{l%E_Eu69!vkMS%|?iM9uM3}9^;x!#rm$E0CQRWqo6ts!E zJdrawY5gfjt5VA=^C!%|UN7ORE`VT@6R!8`oPEuxqip;B10q!+U{M1jFk>j9`-|p_S`vQ$j@Q%WbtX&%{clce5BD9D*HN1H_O13~P6JRKHh6XH zdZWV?E*_5y(4DO13uBBC_VR zwxs#xJT208bxWrA5&FHt?{!kB8?j(~_8o!ex+B)!A907f6YgqQ$qnr3sufnWc}bumzSlanSLA;ji5q z)60vw(EX|68SMT_QSy1i(4UJnB28ZxKxCX6j*BGh$tPAHEMNpEQe|=q+RT(T2KzgB ziFd@ToF{zD2AIrl8m64u)$?Tt38dsFY=rii8-{q7L!&C~WVG|5SKVle1x7^#Vnutr z&v-8hA5L}!Rn_8Py!Z0Aq2E5YJS^MkI1-fplc+KuQ&rp!&2~@oOnj{wB+HHTvmq_U z?CyNKS@^G~dkQOZ)W(6)?&W@$XRuJ6F8oDh8r~RUUZdmkU{|0(@sE&KqH&|bWq~y2 z(V)37=Z9&^la`9r#G};Z!*5rJhE1?w%VAhaNg(VEn?1`crWT$mE#*DN zb-J!bp3cf3TDE>HXkm2~_`X4`-uoBwD|%Qo;w$R#qL(AGRKjH<+UOq4DUU^mryL^| zW9VkNQmPggDr_zIDwvciUXJS(U>(!K)(H0s=+ee&R4>COYE%>D=G~H*pzqA?3u}tr zq=dXcyJl2;dF3NSm8AIq59PF}^3-*QRn`8X>M`3MZAA6!i3Wy}U*-22Z4Q->rpj)0 zQfOIJ8cofcwC&TKS zvD`*!_|A~9#>Eqrg^u_n@k2k3d!92!kjIJrTTYoLSdmn+%f_1h|VQEB~q?RJ$*78_QRZlZZ=>+?c)&pQJHCzSTx2rZ(MXBHd7nByV%gMu@jHfC*S&e zAay7|vCED1K`TnUa}Z5RR{uWL+Jyv~18yx|jmuQ~+kTHLa+9^jo>B6N5chV}ZokX~ z=cWwFs84gKzBKz@=9GteD~pZaL6-0`(XSA`IWvrYbJ$Tg(z5rP;B0^L17}uTJ&5Ey zaX!>32AO2PiZZVPp2+BwNv3p-;6BtnOnV34#$j zZzdNVnVM7y_zgU;J5=}2wfcE3K)#W8>biBGs(QD~*z(eet4Uv4lAl#ylzddit^dnQ z=x$9jw^Ln}`#GlNf&j(}r;3Knn_wd4&_>Ll13}Hp(?=ctO|31IJ$M917qpV?=W|xk zheE#XUDcD`zgRd zVXxOp&d{T)V{+pc)nrgMR~!oTgD0bxzqxC5(TJz$tQ6lCiq}uFYW)xq%#HXxwQhD(W^Ilw=EAjf1+}deT75+lO8wM^TO7pj3QH4r({mA46VDMQhl{-j zE-SC4P*)^Xx46K%Jj-Ks`ABS4~*?D z^VZJ-`t2#Cjp0o9u7K);HVlR@sjq#J>8@|@^$_S_vb&TsOxvLFMocA9e59M5xSVPy zS{B|(z}|edRgg6ruoR6mEc!A-cH_5BM-bi{l}*Axt3tyWfcT0b_O%d}CNq6{y}_w8 zYV$PUU|9ms$}+RPuav~!hIZd+1D7E&*^0`TOk%n5Y&v9IPefPC^mEygj~X645&amc zd~My7)G#*cbuQlzNr}FT41PaInH#kXw<8{{{GS%GAehZ!Zr$7@9x9dm;_!ZDp}n@! z=tg0syp<%y{Dx7YAz=vpIDR|3L*xjq#=ATM^iQ?8=ONE0a3=Wh39vJza9}KH@8`2=Im_mK!hytRQGYY&fd8GW>y86 zf8#K7#FZQ)^w9rf9D9TPVd1R~^DUs5>7)LBD7JH($-e1^|9Zvu=pJ-8F_9>=opL4w zKFs{V@t$##5q%i=W#&k}%lq~uWrvPH4j0fDVZdr>oq>1U8mu)jE8BjpJw#LFN=yr-FtM4 zV+lwKR4K$Sl9jfc2k_!VX#3e(lqXDaJ=RxCUhL5TDW2QZ9`)yXml+e>7wd8A=ebWy z^%we`#3WJ3i5Hy=yUPmK-PRjE-SwSGWoY)DKex)S+QA$y;ju#R#H(7X$oQ0Ms;I1H znjIx6PC+KCZ#I@`m@jP1SM$ur;*NGFYss;Yz0Y;R`2EwcVvMfQ-s(>j->O0AiQbAv z?T#`A5c#c2JpWN=vCoU2cRE9DoVk|7Q z^%GQTZR1<@$^cXJpg*NHpbOB*)3@Hx$v#-!Pj%bdd_me4uHSp|7yxnDENPDQ`p}p) zY6UvS`6$&{bt-?ZC((5Wa6^7zni&;N3;)8}slls7TR3>__UK8YGiKk|0})@M*yHh4Hk4fT0Q zG2IsF5$74F^eUmv_lR}}={&;h+#&S|0zMM0fIduT1xAMaB$SP?O~R2h0z#b1iK>Ji zvn?lZDE`4TtLXsLQsZS5=`v&)jTXM^qHxUAIzgPp6y9EF*|Jj8e>I7bXLw9ucRQl) zuT7-uRW(Ec@dx+@W$YrR1S-afPi@}sa+@fR^6veHk#IPMMz9DmB&2KpQG_pI6H|_Kj_x2 zJbz?tUg1aqLq?`+7AU_-ec|WSi7>XUds8Z3EJIk2vea7o7}?M1uCm)`qvuMH8j7a* zX7YQ$^P)1?iXHI=%cCX^iGkm;r!%|Bio@sgo2zaUT-R>R03u zXbv&WvIp-ekH2kl8IZg2ozg-S&6&}wjrrn_`CrQKL8l`ktCB;}90ukW?66S~mVE+z zX#C)+wViKzMcHOGpY{Us&b{xx^pI+rnzd%uwijA4rE20erR0KYNi49A^E6lJ4S65V z$>LL+4!pY@{DdsIG}0e0cGiuAD=*sJy2C^AN)^S%{2r3#9X`aeyn=-?f8R209HFo;*wgWFK$dC8x_X%_J$}K>R zP)T4T9jhHA&$o<>hon|v-6t@F3tFqxdp`K=^v!b6rYI2uYjsPxY5 zL0OJBr-uqU7P(HA&MK=;^IdN%%a%QAm)C1k#kw6m9qq}@ve@L-4p;jhaD`g7!^FcI zPlNpr)WYz$K52H!A&$k4Jk-xn&XDCD?OMvOHh9dCGFjFY{&D`67p@{OzOkAM38rGA zB;@WK1ASRiN|W$0k^@ z!3r*g9&3zQv_C~TuaG&H+SA(M+<_V$ko$lUXtcY)%w&AC^QWU;L0~b%KWF)3m}()_ z^8c$gB@Il4UeKuF7Zy^C=2ga87Vp-nhZDZR6=(Ldsd@Y@i2pykbgiitf_-QE8gu(V zlQkYCi%l4)iM#Ju`D*B%xv-4~MCTT_AhVp(tsM>*pj1n~V&1-`f3$A(Hn{+*14v1~%!@WhZhoNa&>NvocHjE)xH|@O+ znTu%Ac|J|wBq?)ckYMQj>MM-C22w}K}$B9MGvR_cRPow8S?$KGzjO%+p)AUAjTL7lWquGHKXgS zvG+4XI$*Ul&>BH;_F2wYJ*X`O z$z4`4`A`XQyQVgnq%j;2#4#H9QQvGNp9^w*#NX=ZD27rqrrqj@lIL_BJu>1{Kwa-# z3$u!m4?H{xeo;}dwBR1yJn(y+HnY0_?Kj`c1@MeA<+Cr5&2@WjYt$A!tL z;SXMD78t0@qPnT~mQxT#m*v)0oc~IUjE#hE|Cd%M=a$ezd#{Ar1>K4IS09@812h5w zY^~BynMmQm=?lD@DrwZsMfZyeR`q%^;7>M+$`wv#E;wJebCY!j9zo7q$@zu>4R zy0n|HeZj%`U^rvK^=Wm?h}K7G!Iur^Q}y1)Z;u=>CeC%6$5`=x?*JrCZ$?L8n9oAZ zqh2uis$xGf1X6(J9uofZ0E1%rS6|nD-%xYn@Q;t6w^bg z1*_IRVz5UT?ImEOz9Xox8lUzY$}HXyo|$r;@>+I#5kjtQNrv!rD;>$LSeG(LxORvmlh}E% za@G?SC1vT-7_{`B;%w%f&I)dIK#gKGNV+sUEC7nGH)z5d`;{M?z4L`##gA|FwB-vb zdB3Fd+AGnOjM`f;0(l-{+$GxrSBq0&3Nb>s!Y1d`I#nRLSXX0mBZ=FZ9q>JIp8S7|wmKMS9P`unl&b48dxA#HsyCCxon4XGil5l7Rcg0lu!;6mFkl9>G^g zUcoGY9??xQ6miCn?mmO+_Q{g^5++RV0`O&d+Q)cPGHDm6SNSU?{r%^c7|24xRKV&R zAM9+d97&$q2+RyV%JcGU+#bZ;S~+}L+uYD}o^a9DVJm=gJf-uVgk-wj$?7_hwYQ#x z8vmFI8oFQmjFat-RvCMZ4jN42)Vdf^y~wlsIwu#s9TdqmmZkS9*R}9#Sl#mV*R76@h0mzJ z&Wk?v2ypxE6uJEUqm|MfxSW*)?iteho!;I&ack3x(L&MWZ%r#tvDhW<3MGlo z7aL1EOaviwC^c6$I0 zEDd?IL!tWP0Sth|qhx?S>|n;))f&ASSV7U!3T*@Z0q@Ear5M;V3w>583;yQ$--=O{ z+_(eOq%`|F(X^w-?7-RX4A12yfWi_%h_U?n1)L@CguKVS)xX!fIVQ<}xYU&cAp7MQJ5A%A9!1?;wEmZcK)UTsY(* z^-D!hwJ88>jyC-~`YMi>!whVquo)CHXf>oXtaw9e2l|hsAH0~ z2SV=_u}BiaXe`4!vjF)(X=9L*i<~^C=ns6KM^Iqay;dJy=TH;*cJLy6@i#j>528C0 ze)CizPkYE6^cnO%md_e)18a~LGjoKp2G=$`>_G3+claYP zBZs-9gDxfPx9ipC-bc5cP@^vcSFs(xn^=8aS#aZYF>UE7-;%itz48c1*`B%B7%^(0d>HZV zeVVS1Yq+rVYu-GFa!r}tj4273NuW&EPRU~9NDg*xWG;u5&m+ROnuOQG-WTnr6Z)4H zCIxIDBhT6srLsALndZD{<&l&v@cod*oXbvT2YCv4&~oV2j^9*4LfkY?Q<%>#&?MCv zH4q*$7QR(4!D%eD_Nv-K7}YBH&=e~P*QRJmO%l&o(T%V~{lOu%O@Wy}5ocelS8w~! zuTb;))m4vIxexszcOvfd!s0T7dSmn7=O)58D-HKV$scgeJ;vd}WX$drH|M5( zR4II)NN$Do)q3v(D8q$^kVHC@1jUPx{?gxKDISa=3cbtH<+fevG3a0*@uS?B`VLT@ z(K4}MOW`CS=XG9beSQOQ^v_7D>*8ocnI{cK{&u&0^B2*&lT=P+UL!^6S)oK1Z)3wccX7LLRjp_S*aTgWmh`(h`Ih(s5=4bV_PS3??RybMAm+VJMt1n9KtD_dW zzX})2ZLPh6;;G|`EJ0>l0#z-kT|)PA`fyL9P2(3JJpT^D8n0p7Yv9MSkE7UjsU>uC zUjA%pK@tG=RnriAhqm2HPOxlKzVXZ~3?9>1b#Ke^uCiMY2v8-eR7!YtXXR^(I-xpf zxvV}3eBFT~&06L+0~!aSO)=qUuV=$2xh*SGQ;${U1W%Q07#^R%pUw+Xgh)q^!GTh9++p6Q0YVH~QOza&!!CyD`kmGW|`0 zk8_q!IOxF`B=~kHh-1p!sGz6YZZU45F$ND5;^0|umv{)BA34)3(fkWm1CRz+wAd;r z+~=Bn8!a22S?nM9Q8_(WMLYSnVeKM9RRm*h!e10=Ew9h8MGZ z5JPKohGq&>N{~3_Uv6Zb&m7q!zsO_mue+-NrSFEn8S&E8bsUMa%Yf654PR+Y`qd%; z5ah}#i=(3`& zn}~U>wkxc9oC>0zv!NLEu7+qXmXVV&IqkiesNK5-X0K^+{vNNmO0Kefywb++yR1() zo=Ou`yUb_HVgZ=e0%20y?7sb5j1kI9QZCU0AH^~~?nfN1tO*%E_(6)o{&L2IY8T8c z?v&A`o6-1Y`(SS{&pI$AwKJNQ#h!E!w36# z4!lK3*Gwa(-n3FDoev$^uN6$y^Bl=T>pA5}96htMK@~qG9^hvJ74B=tu=+(Lh`6vM z`BD5Nxx=^77%Ky@$<+j2PFx!C4?eP0qxIZzIT%{d!s7{nVz_5!X?B;0n+Cab>$ugGg6Yci4z3mm#f9?XGXyJ5keXLK6$RSOLhZVkMPArcH9`q%NB+s2kwAclyO&XRezeF-pDV} z@!1H-XB-WXFEv{~+>5&RTjjiF>QA_0#*Cdd2wlnYrBWtBTR!vxxzzvJiPUq=G5w2b zzvp0f*AmL6;5nABoHj;RPw`I`ue!yR6A-$r$hbfq^h8-lRoI^k<~Ve8r!uT(|4lq= zOi$am4M-TBaqKZf7;DJnwF5tG*mShl;kznuwS`##79quZZH>E=3X=s+QE4C;jjqwbbRYPPYqAG(-j4(MU>CsP--BvH7 zF(iK*IMTVEu^~ws3VR(qup`e-rG}Y{wRZW$nCKLI6q(&eaGCF4UXP)nB(`_dQ^e?Eh2YG0YcakDCbZMxdi8E0X;@nZA$B zAw{Sssy;Kx)DK`C-o8P|V!7IX@{tFfWO~ZVzP_pAosy&b0ZTM1hODOqZ)zEH(y0rwI1(eN=C46E^uXFcXR0_e6{}W-A&T`J9;fyS&*KaBKsXf zF$Ksn3`U9R|Fq^$SI)p5emdD@8YbXKPDb6a&rOazE{>4pi@gT=4E7y^*`-4*LXnTR zC3oqei#fHDq-5g=nSb))rz&59AcoK?4ld?DvwgxJkV=#ddGZI)4aW(Db_G*@=1Wsx zDH|3%5~t=7-j~x z%QHnCg?S~6+JSCdD~jE=<$jVkqCRmcDn&A{0My0cDpg94T%i3DQ3`+|Cws31S0j<@ zVN+3&Zp25oZb9VTuZ|j@!#-Tzy}?uY)HJE?h_6fGqDbLDzQqyhEPd?pLX(Gr{`PO$ zN<$cHw}FC7%_&eGB|vq4oqL~V(!{7Sa+}G^Uv%}G(={5RurD#m4UjEDEQ^dL`M~4y z2Dp^l;@F!|L8J)WhdWh=WbBF@`RF<7RpM-4R8~Q0p}m5Nt*d4K-hku7`*Zq2`?wJQZYsJcyhv`D0D%M z^S6p=A>NSRjj*cD2F$@P?@EiH&zH&+e}PJ@$3I!RQ$s9{8)r({EZTJ2{)Y>osA(aT zYv^r`?|SkG3-%1EbE*WRI{U((@cfdS7IUPNR#lxdng$goTayHN6cb|Ad?ZeqsEAAr z9i%4`3g~yw)2r7ygB*574})t_#^WeARys|Rx-w-428k{4a+557>BVpkV<_8%c$|P> z$YO~EVgI3Lx|laQ8vEmRbi)m!vGY8An{O^-7g?gD+wLNlp`7Lbr+0XIXV-ItUc8vXu7aLUA)G$x&jwui%uD|UC;yFmqd1riK0 zTt`eho#i0`?g6!K!LA3*cOvcWIgiVE&3mC5p`~A6qT>o32q>6eYmq*`qA8@xsw31& z0RyU0>J7?I_$AFz!pJlr*QUmllltFja}ZN@CnQv|f6_a62=_EjBIi2tt3vvSy&dy8z^6Gb_KeYih2`X&BJAD-8q)r@h! zghw}_7eDJ}DQa#8x+ZIGT}0)jA~8{lwL4GQLtH4CiK2hk-E(Y>H;ROp)Q>N&u170- zO#-P!uyQ+TDdt(0&atpEJ>^`oeC%T|+{IM1Tnxd`sOgks$vU)|gxcp3;EWTd zt8RjZxn(+ubXI*8#qHN}b;K28^03wg<-O~H4_=^5Ib5bWSpd2eox4EsvrR|_!dIMn z1loD8tI|y3^*6eQNGE3UGLPm1FW)gj7d#CeS)UssT2$(`2mHw~ zNL-zb3Yxx=)NKrFrH749+xMMJMHD_{kSeyiAZilqRFB-bb zT8@{eO2?9ZF@GW0+VHFeO~v^9krvCm0v|XGOfTxa zO8#6;U;GgeO})!&zjRsoc=d|<&&!ROoxUtp^#q}W2DZwu>q#CmM34EhZ}GQW(&`vw zbZ16K3nKwKz5=5wbdFvCJY+h9YkE}FV9s&6BG^R(@I#$M?3-j_PxT+FH_4Eh&a`Eh zB&L^O;wY?MH8E=E4PP4)9RBVWg(a252Fbt@a*A8??07CxK2(MHvhoQxoV5dT3c6`V)1`{;Z^d$G*08 z@l_Ki9!I?l!MP}y@%EsPboTA2+VaF9oW4OmTx8;Ac8Si*K1%T*m7Q?f>H8XrzhEuzGM5U)c<*s8lM@>UV=u5TG;S&;OEs3&Nh%mCRmVfAHlIR zK9Qj&1By7d04)nF|C0iRLetp8J(Wsk8!C!$9FQSVUaQCXuk>fT^Nw(FX3gO#i8>)w_!K=eXhcey!vfnZsNSj#p*hh60Od2 z!QDn%AsFU*bXrtNYo7r2$6x2l)A6f(E0>Kb`UqB`J_l=pz3#I# zw?m${AMZG&!rXFW_f`9clzWr%`lGu)R4c%KXe@Kc^uPt&@_XfG!ZfOZN19o^+Er$3 zbB_MF)Fq3AmjuUHoYC}mwVBmfn~C!>f+Lk9gRK^O_TNU-UO8c@U6!EiVsE9fO&J?M z7s5aILDq;awu++rv|=T*?1Z-b_|fjTM6VqVW{XbmbvG;9+CqN!;aeh6`EA^!N zV6Xd1ANTfJ@z-AUjHP8kQ8jb0v@ofd_qu8?ee&8*)niab%#Hz$)6qt__LN|$%R%?` zU?}GaLv-NFnbhR$B7gGmn|R?PEpwi+_gpfXZDvZ^W<7No8MDm~!e*b9;U?7=131#lhb)aBl;Dkn+aPCefH2JN${v_JLgUM zTO9z4a0FQhtHX1^50Uu3Re5$~;Ysm&i0=eoF~Qfh^5uXP{g%#)#%uP2kUZS7hr<^B z-ODGO0r3A3)xr&mb6UKXYd#so-sI4U7MOlOubKqA$#D)2do|s&3ly{yriSN}`d$QP zBpWF<0bu3qL64*d9-<+wp+N=0q(0<52G6{6W|Co?>W;DG-^byc*!l{7-wNRW6;FE>aOAHi&Fp`Hod1_?=l}W5h$5V# zNHMi?Pw_t_VMys)9Sc+1QvK-R>pO^LjAdi}p0!LbQmW2GHj{eIM zoje9aMJF)~Mb~f_^FMiQD1#&ISv)m0{?qlz#eK^Lb=j?&bVVna%l!wN@-Np5KH5`1 z2P`>Gf0X-?(HuT!Wb6OO(!>gvrk%{mu>W+mxTC!R%S2X@S@3@-h9{rk%RD7nLPqqT ztTA{XCiHM>u6OE_`2XR78)Zn}>7koteh$n3C{1i~3p4x8;W=fKS&HH{W|^p!5TE)~ zkDBr5ypv#&8oW;yk*f8((;62A`&~SzSBkO|_4$)yoj^-TrFEhx(KE{8<#+z^EHoqV zRp5>*(X$eQ-_)>%ia90trgFIAgA{m(zwiNv6$^m{9I5$lUnX4eqy8W&+7`eMVWuG; z@rCQ0FJ+UZCKALOJS6f1TnCJQxT29U_(5YZ@1c4xGzZ9j;#T+(EwE6YtWTl=?&cW& ztNYroAO9qwB11?ZC?(1JvF!-1%l?{H9ziVuTm##UbqqHs!u|w5=YM^R@_$A7U%sh? zfMrp;MPu@)g5Q_29;Ar@54>Rzw3sVEwWk2T{=Le7v5x=xF})jpP`BVwc(X1z;tp>c znG4W^F(3-0FeA{6?1IbLJd;dE`j@l+-;V}xd#(Hh(mW2gg`efbH%;l_D?d6WuLe%~ z8UAxohke68E>J)Gf>tSl@na&vx`2K3B%B@`D=DlsmyBvJ0KYHzRsMq_r~iE-m&3KW za~XaR!QJ3(PcuMxC(Bl8UkIL80sJK6sX?Q(|HQc_&jrr-St5r(EgAlp?!03f{{LIk z3$XYMv?3}0xMhso!k6;SIQ{X8G_b$!F3i9Nv8cJFT|d^3{Hg8W3*Wphp#0aVbkNP6^@93-3Gj{ijeRwEIOlMIcDvl(g6rhS8In-LJ;iye zpi^BLNApzF`HS6emvf;7g=@%#l~U34&??R*^RtjAyS)bYf@z?TW zcvtx+zW&D*Ke41G7NbXSWN0fNwl>ufwg%wr2J*c&U;C$oFlsTL;!GtG6t7~qdc zvRG&-?=}JKIsa>a^z`9|=u^|z#zy#?`C++yBA--Q_-fxFZ`{F^CLJ50MBBO8?S7Ac zi?`xhF41)St!f+GP)XTlrSPKSmnRl0rr{Jlx{j`if9p9p1H?SC|VbZ#$rKAFATo~apUT#vEDFeTZ930tROSoJ1 z{fjCQu-GQJ;5{jl@^83@Cc=P!k+UG-0Zq)U+~HO+P2?hOSM|bI0pK z3Jr<02V`EZ#+YJHa)P_VdIlaT;v(~wCEOa+=uEzu@dJ8oag-kO9;`PbxUe6eDi!{^ zDOAtA->zp9L|7)}7q^`RHYcK+Z8V`s7ZQB={kNqSY&@u_RHK)>%KRoj3%sRS?hKd< z``IBXdMV28yi(DqE8-6#hrB2#GxCdVmlBP+-}_fBjY_{OjAl^kq(g9k(=cM2KtOo~ ztkGzMWbn2Td`~z=99ac-^8$z$1A$NqE8Ic}2DbEMVw<|jK^Di_DuxgOpFXji*nfd^ z2be52({f0)qaeY!9`}o7Ae50Hc?=+a#oQkjY?p9*7}rg6=#G3ENL~p z^)PKjU$iWS@N0qX!lP(iwq#K{86-%W2w}$1Im~N+-s|3j$Kthfe6GwA=ykVOe9!3* z5}=!(T_2pLs*Js{x9%tCVTN8V9hdDDaCFxDYXo{TBT}RlpyM~@zs_Rxhi%=jF!*AB^c_cmHvfDiVTBhIqi=+AG#XD&>Se27$(N~cO zx)IP=M!5BN2#8dF?rd)+#m!{NP|KWObiSNaovaZ0xx&U1i2dOYldSIF9ta04a~=O>WB z0g&P7QI8<6HWMlj08br1M3?PkcV?2UazyluYjXrMO>BOWRck;!u}Oz}(W5|l!RD*O zl51`~Am^&p%iIEWe@E^gtRtxEpxo~z+lHDgTJIHKR37bMmz?hD&_k1xoZgkzVo4h5VK7IL2dD3fJy zuX;c^$~~^6_>sS|_P&0<$epb2z@GtwQA$MXm5!udS;L1Agm7f?Z-mBM-Q;MDUU`@fXq!L1}P zTeLp6IFMOQ_dg%!5)d?hQ6T(}VJlfzN&&vWNE=eB^W7t!D@h+W42Fts28-gh2i|l< zYNg$FxDW6)*bz=q9ZJPg0Z-3gQb~HU`i_Iec7l5Gs=I)tck}44mVi*q2p)D2gkyh1 zuqm#ZPz!F%(nvl{UDs4AAeTs|$iV&)=VsY7A?OO*4Sw7GZGdlBzUIm`sWu~o-7rZi z&iH9v&9&`~-+7fm;JJQ<=9yE)0O!=q2bU){Ln-$S{~t|P85LE-bybj*mXZbmX%Oic zLPfenx=Xsdq#Gn81*B2BySuw*7`ldrp$ERp^RDkdi#2oSp4#W^y}Ly276Om_sN@dD z$%LUVY%`+kTm!c=+O3hP?yqdz`a$e&iXcb7K`vR=`Uq_+#Heoj!>_v+vI{u zP2IvAAjmj;RAe0ETwHcpT{RwFwV8ANa0Hk-#pF>OBYs*Q%vQZ=(vkq^YRWG5sGw>VhPYFG2%FOrdl2abAPK4m zhDKQtaS&;W6Uw{+zQE4M*LVVN_uLVXV_)?u7~sg@1elm}$kyF}o@6H70IK+HI({tP zhaRIfKoZJXiqgYGnudh3zwvcM3zTb3D$0~Zsu9}L47jB*G+Tv-eo%hC0Eo(wt+Ua3 z`witop$h%C&r!)&lXM)V{hUUxh%yhj*Y6&tvmRbks$B9(6v^{0_Sm$X_L=rND~jHj zsQf*ReojOa?RG}>Q3ygP>U)oOHDtl)GQXAX2)Vgj=$CK5P)u_yb#42?CPC3W{-gzU zw3(pDj<>7>fOJQRstT2o@e!ad-o&f_UL=RgBOPe?35~yGxINg~c*lFU&&H*f|WFWu22I31#Ib8hfwfy3LMbQ*Jg(H{(P@RdLp-KEb@ho zBW*s`7o}oP%T!)Rs2Rly67K{cP20p-`~B8VFd7jA3!zAbXA&1^whKjyl>({z;VN5b z>yNH1vLH>I+8m^#v{l@KYQ;S3ejMRYUfLzue7^$!nE?LngtJ#AQn!Y1gF5bHIH%lQ zY=k4FcW=xserKsaTWZJVYsTqsfhmBz%d4)qw!XGPR{DQuxMS=)R`Fhtyf|c^@u*p4 zb1H`(W(b$dNKgcEp?R+OwYLyN07Vq?bX)s3O9ZKJ&*=k~#X(PL-O>=S;jpD|HsU>v zN5TN@7A_kEVs(w)vb~_i#r@8d9g}|u*l!eT8->#!m^+78fr*0`#J~OqGUR1ZN@vX9 zPf-Rt6*_(hI020^Jq|ID>Lqh(t_Xv|cu!*D)B%!Z=*5cn`KT!wP4-V(oNR@adAVV7 zf0E$O{PLKT_-DBLU_j4Q7o5NTX$PqHj*mbhonn}#`6vL;Yn$C;{$6ElceSDAueck8 z)}sk8ZxVK06(_kHQ{2H<$mZdsv&=J<&IyH+YtVK-zvV>tJPGIi-89SR91MVJmRW80 zo2th~q$^kb79M4OW!R@%_NIn(*S733^-i`uw_rTdN5qcH(Q*K0uV>fqbeltlyGhx} z>w2i;F~n09e{=+PKLyWpximq923%FlKf3D4Pb!K?iR(Cw4Dw`56X0B8eFmc4mUix3 zKnaCb3FutRKlWcQ z(m9GEsfmRXk)SogpN`AK_!;i&;Ya2m7K+gy=FRXq?eY|&^)95J$9-wu4@*|%E@;lI zIu5;rwm`7gW@-J`e##PP*c`6eZbovB4tZiu=SX2FTCfLt+4 zp|2=(TGWm0?1OQr-L-rSyhQ@7o*9$oH68boVBN>2PG}x*A?nY|V84Te)1-*$q85Bf zJyCB!rRfuVjkbB&fRwL-yp${kte63imag)~sea)dw(yAalQipF5?erD3>jH( zbsW%~{HnA|eBJ(d*S@K7%Zx3!`^V%b9Yywn8cEB?RZrj^L4FeE)w)9;x7QxSpj521 zGv5Eu8SQ&>6EqkB(jRB5-xnNw)|8y-(*^Nc21V%ExPmTB`0jMh2^U+>x~7j>2ymo* z?P_;u20y6wW~>Z>&p8eXQmUGWZ;sm^$1+?le2)$%2~c`VANtsPcoqF9%8-L50oqc>j#r!uB3&wXdzd#!v}vn3we*w!jf}U6uohH?`Xla=(VSYM39BHxEPO5bk}2fCPk6!3y5V@$H1};5-K2-OnmN6wJW7 z+1r}j59WjSA~Tnq3OBFfcXU=g<o}#VN>uk?lwr)?#BvjFKZf6VcOrfx#VFE01sUZSa81dM zQ9t&ekAq1`;TL@Z*bi!p)mKVkV2|fsIKc+P+NZ1qo->95{K-ez5BAjO@9q*>$;_Fw+*AGQ!AoL7NX0i zm-^PQA1TJc2}if#t-ua>b-NehSKMHo@q=eZ`Us4LNk9oCm?_qb?lQ)IDCf4^ZVOy* zb}1o6eBAY+a1DZK~AFp?K0lJG)#`1Sh zS?mZn@NWx?TB;9O|E2&^yiE@U>$kuiO@^GL;lGyk7%KHHrlc-JCAJr611SIHU{osa zpYGdSy?=WBF*0TDK1|CcSkq#e6v^3%=Tj!@8-6#>#=Z(re_p_jF8MBR0N8r%@ObF) znv%+lPv%NVLHU~b-pD)%#{i5#PKq}1e0>Ye{4ROtd#_kJz7VU4@~`fbww4y>elPDwgUQ4f#jJG3xekZOC&~O~a^S zqLe;-4nO42v#E^KACq`_OwyEH03~Z5+OvEG@y3f|zsF^@voUox-6f8v;eM2w)4O{V zoEr;Lp3gsOf}_-TOwj0#{ZcB#jE^7#s{AW$PieRA+2pS+F|I((suA_~!eBoIMUb3p zgSJG3f)SX3-@e^QAJPtI%FDZPyjVn^p`BR-x^6JQ=~SvSo~E)+bbUrqha`+O@qFm( zs-Zg|wM3DTgN*Vz4n+beBaE=8G7_n@({9&#q#$zPhK>`&fo9NUzdJ_8m}xCRGd{bM zwN3dru4}uPReI=K+dH;q!SmR*^)C|K`q;!SaD2ke;naF3x2t+i*Ra4B+6Eo7vzKYY+u_A<~l?GT`atZm0bxn8zV;KC{jkvLvCKg&Ve^z=1oiltB1d7rux zIM!yF4G9)RdwX&(-Uka+`Vv>DRH!`v7J*ht>Aw0rlrKmLO+1v#343`r>@%863K5F` zXZJ&3m|e61%m_r+O+>a`f-Q{h?HCS)AoOPjl4?xulU1VxDBqxGg-zWaqJB_w? zUlqqcI|hQ)@$R_YZ;j&Y^!8scF}oT(Aq98=7cyLzEa>;Db`HGADv?rN3EIl=2o}Q67G`n?fCPoTY4mg!1ZL-(hUP zImCqsC#=N#>&cRd>e!732G*;iz!P9-TMWKYd;9NW!xccoXMB+ZU?|J-0K=)WyGH&A ziqi_{C{mYd&MKp%`k>6_PZGHD25ud0;MkL($ar3KTzf2j#4W$9f@SF7M=3!;+k8Bh z4rw_bQHxS%0pjcMlYzBi4eaphv9J}tbcP81-aDTVQsZ;`+Ry3}kSI@)r!ZV_kzP@W zg1KyXki4wzW3nWKp_~;79e>g-FsGN)FwN*X#+m>TGZz8ymC>pfSLGc2RHlhWyRNhQj#36XhaJJ8-Y5FU0c#H9}7g`ShFh5)=(XXKI8W zH@hLj<05M)Bf{y+R}1J+Ws*)wH|V-;!}a*!b_R~{7*?j8cqrOVN$wTfB2i``l-A%W zHUi}V!xP5KXm4c=sKp(6SA(NOMuMVnuddrDe2|THiWYJtsB&va?IXSOl z>bu)V!8Z4hzg0>(fI zRi4=9n`|k9ZKs-;Mc}=+mvsZ&JFca}SBm{Q0P*m2x#o4da}nj4Gle^cAXsgWq_{#h zx#xYha^y~U35|Ca3xUuQ1j&Ryqxe0{k|hRIqXrk3CC?+Yuf$M=s# zr#ubfg_Tq{JzZw(!ZFJQ(X8Z40(V#diJ{fL_2Qa~m!d$heOX5jJ&U=gA2Da{&Gq@O zF;YMtYv09p8^G(I`L)>@xb2Ly;$(FSc3VM|Ynug^% zn0*Zczeb)x3biF zc0YX-txQKSF62{4wTd#z*RE~T8Vwn##*&GVK8N<2Q^GRIPLQd9$E~BfUdo0QW;EnZEAS&=uy-zRyVeo!I5&#VTtpp*p^P^F zAgemTALP0%Hz)Ycm#uJJ(-(aQE^S=W8r%lLqxEWOUgUnY`=#C4`RkTN9n#Nn_h#GZ zw;gC<#<+uDG5P;B04PX8_kHK?MST_^6yGbp`2;`_EDNDdnco7s_KcK=HWQ706bEo# z$zdQt9aogH0Qg5D;{?7$M#^gb?}_av*xK3o?)lm)4AJ*!n9dVxm9#{bdliM;Cr_p) z(jT_t-zOc#Bl+D=9#Og+WOfO-NYZ>-k)S9`zv4O6vku?&$2I{y`McQy5{%NkJQ795 zmMV{Fv#-nCD>|(LsYo0upEwcemL7!&{w}!I1}T8n6Dw-wq1zE^N?!W{^l^JOSWrDI zq<`Mij!3bg1bD$4Kh*hfr8M4QP7^qBgr!9Nt+>baC3t9Snb#MAeZ89O#+iA2n8-c0 zxeYq8=UYrvZPZ(NmrI2~VF&d-tGs(iw*zzEDc~aHr>q?LmQUc2A6aGl3|Y2qWPBz(&gFh`+_x523F}RlYTBV49x% z-temF+S&$iv!6OcZ;+ht@%ggjarp(PuK~OZ1IHYgNW9kZ$*wZq5aM=B0e43JF*Fs! z$CnO#V0T&hD{i10Z?@Q(-X z20Kg-M3K6_)AR%XC$0dCGV}E;f9}y;+op$z^&3S|M9H#Ya=584$>Z!iqC3O>Y;W*X zmaVa2`SGgViM24zaww<%j~xa)P5pE0wt^sB&JA|xMz|rm*FXmuVv)y<+YtX=TN~1x zivt=!nB~HCk5^P1=Rdb+=0y`E-3`7!8jyTk-OjYKufjp;Y3y}vZs@0KDApi~q2L?C z(#>nzQw@1^q;R|3V+Ev9^8NO+=yS$u%0E4|ESq zD;e6vRG31$N74oyIwl|zh=K%UiG+K{z7D7sra4OJNl`v%(maw1?5pt=D2>;joCoZT z40_6cZ}-t3@Uz1dei#wnh_Ve2W>{e1H+Sx=yELMSt>ZK)>$EKs*tS;N=yvSADqim{z6o-_T*SviGz9e1G>ZnLcwhuf zine+YpIZvHw=>tM>iOMKTy+&GE1xQ}?VSR*pFS~~W)9s%+8;)<1wR7}5XKjpL4v?~ zqsR-GJ0JkSsCDq?clpoQ_p?%sf19nOd0oEtfZX3u=N<9^^;~PJz*sx^32hwj_uXd~ zxI?~LiX3O)vUyWasMq*4M{%+_I-2;9kG};K%~AX$sUf zgsXVDG#cAAUmCex$*VIq6>gbhKa`&hWRL$HFWP;eJV|_@A(;CQ}>Q_PX~qjEKo%j zg6j=W*GTDpdu{`b0?V7;g9feSwL3x#yZh^vcTt>qk}Eh2Mb$QyUd5rxKv6nFDiApD z{?Bp>usrCIoP9#4!Jo9cykfRMEeX6l+NYZ+rNVBjD@T#_Dq7TXl-M8XHLTjNY5 z(o_&5IzG)#>gE9lKS$MzEPfv4gFL(bXcxufR&9rWC5FU`-@y(5>|zoAAM8@o5+tZP z&Q+*=oswWIJz4kSIiLoLg7&%O3EYVcpfbJz%pcOiT;5q3JzpCG>=BN5SKK%7~O#0-=8hSA}I>q$ z^3M2dP+J??9LLe7Gi^g-)Ofmt-j}ivzKN(F70I@#8`H9Cs8$rJG|Di$fY~*yk=bsG zUZ3Q?Z33iox(_RtgW~$F8_tisAp6A%ABgZk0e}3F7~lBSbD%lcKFl8u-U!*X*9vWR zpdU>y{-`h?^B|VKJf)(|q$kc=h`YT*;JB*mxMVCFO-DlIGF8WaQ*I(qs_^}$>QM%l@j>C8MK*z9U)P6yB1+G7=_^}9lcU!OikSy6 z7}kD;v2{50F6gCrT<~m?{uuoH<0EkB5e@_SfR+#2-pOg6mwO#M4ZrS5cOq)B{)S=S z0_zNoFv{?pQe}Er5Iu5%6DGwTPVoZi5(RI7c1B=5j1K=aD(gcF)L>ke`|y{aUc=Z2 zT6ap``f1t#GpDD;bt9HE7(?j-aMFn6k5$U68>7QsLK zX{yd9fD{l^4Y%KHrw`8H0UE#uxlY)p@+I79dtChEFH*5m$IP>QzP%n_5EZswZDM&< ziG8OO)lnmwH(YRdve5u!o*Y|Xqqpr}ND(X;riM#L;W$9^P|CPJgvGl+y+{;+QH9}> z<}ezceshYNQSbh_LToKCQbl3~=)&x~uU3sMid;y&3a5Jvr#TlZE8V;7x?^fht+mQ5 zDFY6`GQ%eb38jy>_dnLJ05#+c@!|8UFp7F+G!xNsrlG$(B%4HnmJ+#TyELIB z7#UwduN%Dead~4F3^DmOuTUF&Wm$Q+j=CPoMenH>poK@KUx&$T&IQmg$lDi1>AvwsOV`;Y!m zL3&kD=q6}Z)3|vVIpD}vDfS0Bk?dL*edb1uZv$RG>H@fQOdL|slhHEXvvjviLQJ~w z)G;Lh7ZgJljP7_5$p#Z;t0}ic#~cC8Ks+~Q!*}zNJqB4mis{9^3%MkuG(4$0pE14? zcqA$7c97#+4}CO07VgMI=egrq{85GGBllOe`#U4=xG;is9#@T2MMaX?9*}=#>l#k z>5(h3(o1B#unh284A|4tHGG5qQ|txqwZ%QMKV$0m5w@Are;c7(##<4*rL}Hv$~Rn> zN`fOza%Z92d?WQ9MhkaDQP{0y>( z#EQ5r`s5mGOyk`Nwy1|XBMjURE3-HvfAy~uTFukQ4m7ziz+)j)2}DPXE9xD|p8-E% zS7a618UN7L-biAr;{_6@4|-K=YN(WMHg=tHzbCY#(!jnhDmh=zXp05-XYH}F zz~yj7YW!?$2@RhMEq%>u>uk|easemwkM9?&cYfNW&kZMGS&>ugCfXN#L!84O0#f}3 zqNLkdXhu^V;iV#Z28NHlzlMoM;uWDMY)a)i)n(2;Ba9sm%;yUo&7-Isa982GL}qp6 zw3?=mj@x6!cYHqUcE0&#tq5NWcX92TeS~_(iOzt%`uI+sO0-i(%L&QFDGXtH-lQgY znEeo#XOfCB=3r~W{vuVpXc~TLTV=gh^@q|WiCvc&5b%p^yIyne?7VwP)NCwA8NzjK zHk!u7(IrqzfVy#m)la?Id2d7A-LeB*G+iu+o>3octab+Gr&#%m{W+6k^dFI<21HfX zBtpKtAb6}x#!;PXn@ss27ep8Jvc!BmQxF^?K=kEggU3*RL2EBi+~n$G_TOo=z>&5) zZaQ=q&PETY&y@h5x>FgjkWFvvYzlr|iMyZYn!Zhbpje{Ai9?qVGq_%289*~9kpbLF zSrrsec+-B)T_%h25&msce(cP@1*Uyn?kNHMGl%F2?m8^e_itH$mFo7j9zOUs#-c9u zLq))FUEuJ>SF>eoltc0d1s@$pHuh2v4v9v^9qJJ`uHfci0;8B!n@P}XFM#%1tI73WhAm; z!Gh0)skb`Mq<-ahe;P`(ocg@7dQ4C@w7LhHn#|9s$ykDn=33r-BxtcP!RPTt+D|DO zLK!4ZlE|I2W?;x$%DyY#@K>~e0nZ@ix;O86H1d}p$m_qv_9AML35q8*ehm?tPLX7F z5N#2&=`j<#ouDHsAE!?^^28B&P;N5be@fjMc5#QxZeNypOHBs60ypJglpc@WiUVPB zAX)0{u|D~9)0+r2t%0*4nB8#AV0$j9jn}WD=5MWLo?g8$W?g#o)8`k7ue%7qu0WBe#fvrX^~&Wd7?VlOm3u1jUI?rDZL? zLpd?p&oo|(x1;GiT%TMThs&Du=Ij=VUVhT|6Ya5EXP}p$xNtd7>s8POQ$NT5!ukSD zJ{USUsR4XCJb3f#>>J!AW~-zUm46={3O(K1QU(0{DGC01D!lxwLSwNGOL@a_=Q3qN z!3#T^lMaNVaq~MK@asw`(+{*%IM5ZgWegGQQ&pQq3L(!ZtIg-_ac?%9QGXK;P8O;6 zbfEk(KXpRY8cGnTIDgIOK!U%MEu1&zY~IUytOs=lDplXYM`+kq z{gZRP-)($-y^ZowLR}xsJ^~&AQVTBT3nsk%g+t>goP-23@j~?lPoegC-ffcA4C2U` zD1h^&8}JxC@0noh_rIh<8Y=cyB4bgtf7p!*Yl;y^d=$$K#O!fKXm7xpavJJ=lR55% z62y&j;R6vMvP4?3TYZUo*&ge6LC}T5-0U{*O3Lg0CrfN#Z22!t^6U^7O53nZdB8Rc z*-h*g|CEQI78c_9RzP)n;nzp~6Kc}DP_)qe!Ig)bL| zw>@Uo7qTv6`tWC$uNu4vP$nVD?_%+#VTrm);W8$dBJwBtY5dz5kbiz}|Hp2PcV7Y- zPnaW@ur3Gt4Y~=#3kSxT&Y*Uo4?i2JaUB*wmT@tI!gB7NtHG!Q7j@ZD=&GhuxfvBw z9&#!um|VZ&f&|_1PBEBf>TI+{9QKG*dL)VxmTc0Fe<1egXSmiAHGoKh;T@^ibiaMy z0?O~nK`1nTdZz~`A@aWk;0}LOjFJ!1;f?M3Yjd-?QaBV#eTXWUi|yLXp4le-40<8u zrvJZ%L(LKP$Z&6WZ2zSN8{KBtUtUM2!5)rOvZaWb*ZYYu$54~OOkFp`ajTcfFb-6p zP+5G?IQqGxfzwkzTuIPNqmkW8J!v1QLdsn96;Hh@#H&$fN* zGwDQm{o=3G>YaUD4FI@gyaO2P&c8=2jrUqCRFs14xxTg95{RI;x*ugR4BqHeyJpmU zcS>!UXphZe%-qrU{erX4ltaX}9bAa=1?e(-+n?ag+K=J5^9Rc9v&;JK{+psAl%e+o1@Z|#sMsk^cX+04kcn?J{}X z7E8{H<{rMq%8l_~>xuBh2CDTu6!ePsfBZx>%CKJaZhwp=7x*{a1jDKa75J_BsuU5h zGi}rPFW`m!QbHBE)rJ%bx*ik}Pa9Tp5@Cf}rF`hsdD&vt&H3#XP>PW))v68nhG*0G z=hvBm1VPxxqI00qn)G%F+_c{yLA0bu)hlC6u1RW{T2(EluXt?+iI5t2^MkJF4f#w)va01xZ8-Om10NN zDxu<(19ENY1#m`&SO_cP{qGh3ux?&7T?PA|6~I~E0Z_MMsF?!>%WtHqMPZ&ApwKZcx^135)KHiuv{j+_o2)D6@aFk(JHHmegO| zOt1@OnGqiZ5NPS!tE`b3YjC~Z6Z zt@D@8=JO_1+H^E^QIOhZ_dm>0ddkt?%sOpG3@^)8pOgK)>a0@PKZsYU`C?cY%b*Wb zRX!+!8VB@HGgu&kVxzHje(~d@Q;b5$G}%djvF~vq;PgD9Zd(Or^zWg?9iC7>$>a7s zdyV?63s-M(ZYO`~?fT01bfK?nFW_Vz@LMdEYDaotdufb|kC|O5Sj4HgsMtP@$VE=2 zQw(jbnpSRa&R`unk80dmyDn?>GL1<4X^&}1-H}>70F~9y+p4`>CmK~|OnSosB z;o%eZBZq1fkukXIqBA+!--m;z8Mmc%Uc>*G9L@i?1>!z@8>~U9mfTq;@ zwelDW0oFo=jKtrKj>DMnF5ZHOyMrvF*X_}ZBa8}@b zN`E8m@g_uGb=|$ZBAkSyzd_(t<|=M0Lkel^Y04e15xJXhn0*Brk(p4hSP=`q80Q)} z9v8AP;v#2*VZa9;4RBNr5(E?*6LdWC71ttc4c}YGI{HPPkX%D~%V&@DRvZuBch<=l zF(mX`b*&sCkU(j}#o@+5@S?AO<1-C#;F53Pg~3WYz{NK1y&ah_7R`}9wNoS|t`=~I zFX~j)oJzey-Ll+K;kf!F&>n3`AI}v;!&UrTE-m#V&)pF(jmnRXehtqWizVKy&|k%y zNo?9_x(Ev|rA|!kt0M>^CNwRvH}5?|vQ4)vx!$$`T9z5+SbzwcJjLZ^opfL*+WAlC z>W`U9FUVA55v1}WDLr)?YM;-hEb9+fT>bpUM6Pt$Oe)ViH&9w$(|oR32Ky0A{!VXJ zIPgMuu^(qv$qUnW4f|uS-zkEe@X+a-w_uBWD05=G-?)>Bxm(*ami}frGRyO8jIGRV zb8KF;5+KD($SgCPsVK|Kb4oZgrBam8ET{Pw-c_94lxPtvMLVNeX%xJ=h*J%bBy)JH zW9jJ;TeY@iG`Q001yi%G(;gGE^aC&V$5NFSO9-882NI*63n2%{wX`&3!9I@!c5;Kc zn_OVqVLQ}gTrVi^G-KPRfs;N_P2Ecm>y;MGD+-IX-}Sml%Ru12{Yi!Ir?@jG(3&qz~+ujJ*4o&g#zv8gj`u96suIL;wpzH|k9z->U z&6F|a`kj@weeA8?86gO=w3s~bhK!l(d(-jh`IT`y4k2q^|3c z>LjdbUK#|jgS4A3e^zcV3JO4?x^H>_xXc1UtNz;w8l1l5Sx_#}o~Iry&aW3&g!a#>H3 z-#<53k}eP_UV#AR0YP?Yp8|qARcWWZ(aCgqOm{Hi+dEaQ{cq(*jF%4P0gUy7+-5^7 zNT@kSvCU&jcQ0pzjz5j2g$(s=0FR05EpC|-YUEbM5By7ju^~uP4bkP&L+!%yi~hMv zA?Q3YYcTR`V{L2bmy>$BHE79kkl9Eggbp_xc&(E?hto_k=`}Qpw=m6y8SO6Se;@6^ zbG{a7sb)6TSO4bsm19?;`N0AEeNTav>i2cU`9Vd`#Q;f^JiBG~hNEr(ti5K3dx*2sg)1LjqV{iy%-1(T@9y>#S3}sxK zi0#ClP1!E%VcA)FRLop;s zysvwSNxDt{IsD^?Kv(KpG(y+@(M7hJuuxtbvxN{${`vtVg6eB3GsS~_WO%F(IBzk_ zb`2wDG=-}>wTH*>>%n_md2wOF0czeSsd%X2-OKmipnG3nrx;r=#YX{4kInh{@2(O) zeg}eF(hpsj91GHpz_>qXQxDnB`{Ze>AU+?Gtc04$BhgsuqPB71IU5>yf`J^TG4@*^ zqs5}N((Ht+%KSDvZFDH8+45dGEPO%@&Cv9fL{j(AogAm+0&7ryKx4O& z%}SlFjP_M8(~$NSy9+eP9M7biQQ-wcOCqt^)a->XZISsEz zvh=+;o$3v{ygn^cx%p&Y4i}wveBPNu{}tUY{R7$P3$;%67!7?ukCEEK%}&;_J8eaC zmE|n62u=8hFuN!>zbH*|VTu48+K*oTnW?ajh8INmMyE>rL^h4~`(~Lv3{PQSe;hKD zr!Tcja5T9?$mFF!*q+euModdVKv{geTK-o3Nce2;&yMNheJb;-Z_j~!U_HE0*B*M5 zan_!x>w@2M;eYo|9c zW5G12mxoF5rbEL>KKkks;F2*e>!`a^D^j5;zDu_|$?+n$zJZ{A-(L=l+2|%H*<+qt zqh|$UqUFbM*!(=6lJ)cZ`9TBF? z_e*Fk^n??*czCg6OUxK3zjgkvfy7M|(?N4-X-QfrK6ZO|Rr6#aIYEH#ikoS6lDnV* zgucAbrMVWG3(;SH47UbcIp_8MmgL23$q|QTGR!HkoOP^V!7GWYs5d-A2MmA=rxGew zPm_G}bX`5F5CR~SC14OT@4l4-cis8hXrTKKTAqtl$9j0Q2>|ziHPi!}-J4ttkv5WK zXn?okkk~@KLWZD#?WUYSk*2)w6g@Kp)T9;AHopt?*DPexbg5W-`&ow+l?j!bEaKszrK| zf2~V@fGVvDS-tORZjNW9b@lz1T=M@BQqr;o3vM-m*?X6D-<-6(zw`eRBzTD+&|9Pg zn0?VWmR{iLD8oOP{cAoLGJY-m9kTNkhTX_31qQaJ?Q9L5=f{B8`E0<#;c`7J8TI`A zdfVgCa=jwvb(FTk3??2|P<*~@auTH3&5AF>?9;QQKIrB^938^wgqGsU%YB8*h|+x` z0GGgJUBEw?x@0UcnbIlCx&2)>C4g{0L+_#Uj}@h0@VRZpRhth04ujW{YGuh|G0;A# zG!{JmuODE?@7E;}}D;v$6-w!mk8`|9~d zCqo)`bFkp>e913*%c(`)<>^reo`;j+9_dR%|Ld1D&!Q>58Scn0{Ij%dDK+~wwEYvx zxPtmQhGHkL@skMXUi9;W+7)Q|tQdF6tmNg&#A<#&#qItTr~u>EfUHN{L#+sV!9mTe z_3S(Pa6VDnOp%WCP%(6;4)MXZrN-8?ZBwls9v!?)l>h>dI~A)Z$QZg$q1B6S(>;Ic zes!|3E#Gh&{Gi2LM@R@1A0@NfUqZjvQsJG)VwE7f4` z26@O{9xaufyZYVIGpYYgTj>KCw>?VqJsxyco8qxRwbe_n$NM6(IuXfe>LCX*a_lRu4|GG zX^ZA4El7ORC4Fi;PUvunB`EGfi}oM@^`o3|rNXX%j=TQ}sb*68^J5Wy_dEaF0jowu z2ge~mWlr87ddbfEjo{K3>-UN@W_HYBe#a3~%K-@o5`zywBh-R_x1C~u9QyZ<_Q)0m zCdbE62ni;{7qFkFzLCh#sJQ`Vk979^WL6!zmhX+-p)>@@47TGu+npOfuYF4 zHBoC`;BtMCZoPDO;W82q_{!}FyqMa+DX;;0NFr`{ft2nw(0LZ&x!G@`p(c&TNG}1-_w0iZaK45FU?! z60&tCn~0u&u_E*@$3(^jGLs}S1UXu11Y~b<)&(inLMU6hsEI}nZ^kfVZ-hd^wt(fY zW7UE!cgDwB|MursJ}*t7UdJNs=AuW@?%NGna97=i?S`FykqkY=z|* zzM)U*dUn`@w`#Im5Mob(J3TUg;q`^=x|SjFuo-ye!w?J`>e6y;l2kJSa0p6*b~DOP zqe+pQ>h!QFtN|v*!l=8*euujVIT|we$c>>mTgz#OllS@dXrSqp(6*l3vD;4}U}#Ev zY6||8*eq0JL+Ql_-rPUy;|i0s&PGr4JUKAxdFlIdHYPcgQb;&tKFH_8iWK|}Jcp5s zdN(9;=&vvxwfT#aQU1f^A zf6Vr}@NIPiC0TnYmY;nck4~+B>tXGH5wtL%o}c#h_*^GUC-u($Ev1VXMvnG5c@^Ou zKguMP@1`FB`7Owsxz9=dKz*K{eD(l<`C6<&ciEZ{Gv-d&XJDT$*_dR*D#F7q<5*2) zgPm^Z`mDNs>8JSZtI*`11f~z)SX>=!PxQ=%cNSdMG@oOiydv3ki_FOS4=}*xKoTn?Za+wx??_4?Od2a^1Mb%%;Idoi{UK_@3E&lI_FBLOr+T%WH*huS>T zqd>nNM0p#0aRejyU8X6h-imV*N`g2`Upvz%&%^C@DwO})4v!Rap_ZHD>-PKkhB;{d z7xVA0M__4!yDUaOJoUSY<*ro? zgx{Po$e*RQB&cP%Y5R<&(MLKr6h*I2^9C&qg>#b1To@lv%|65qk>T_q15w>!j3qoz zB6;It8AsG3m_M5$A1Cp0l;$wsd?qNoiE8qq|L?n~Xj&QJ8I|y`??5zI$Ug1pJy9mH zh;E;>jRyrIf`5s4Ui|cg@83`a_GbWVZvl(XMS+zltUa&hN4k~)lyDjQoSxVJORymS zaxDwd@bQq>*sa=de1>q(2V$Km<*J<%KdP>Czs@LN{24VDJV?~VT`Oa6e^3A^3T`)0 zgbcCGh-XGyefzE`YL&$H;nRir&Cu)??QHT8&lp^mPiS|%Ax@uZZBo&3{hBL*Rlsq3 zD$}E^p|W^$F!?Qm>w9}TRlG0G*<%ibWzF)#b+>6ER}y{}kOH+1SiMufg2%=zUxEN; zhX(I<|LQ=e$iu5~TObWgyEFw0e)(M-1V4$|sHG-~(*%?}7)0!XTl{kpS5uNZRdxT| zn3Uhk(fN;jp=J*fd=`t&$xRyKLvZf0))njsn9orUa>=zpoMP=9=cH?RIe%hihqI-1 zL|Xzf9iFT6R$Zc#L4rzmbekbwj#FK@_5_qdV54Vz31Siy_xxSa5LiKm7LXQdNO1#T z&)TT$A=~*Vy&XR(A}7^8?3Q`e24^f{LyQVTmyRIK^+e^1H{khkQ6ft+cI~w$!lZc5 zCb#1<$)N^6v>;2+#3}InanTLCR!A87n|Qf zJF0kYB8f_S;<8FAArUw(}x-Pi88W44@H z*<)lJEOYZH<~H@+HbBw8ep?~V)|2LQ`#>m-1BA_=w%eg*xtnLSZqt-qy3rZ8h2&}k zOLc1O`U?9+C*^fC96`LcEV;hLd?l*O<7BBqIG1Y{=8;;sFEOQxkhqkE2m=^mWySuo z*dw@|IwcnKh_E_x_F{{h{xsWiNQiTvQv+Xm1nnd93>TJh3pPz(#b@+YVbsE zoR}v;*ykeSTko@Df`Fgu{S{&=!AV2<74`!=oI{iX-b$AT;Iao4M`=7lN9JPsA|4m1 z+wcmt-C@8~fv#8fmzv)HG4>WvResyMuo9Az3L>>>>5`O^P#OdQ=>|c%yE~*)Qt9s8 zfP}Q5bcd8|Qo1&LYx_IrfA1Z4+;hG$9E|PQ`+eW_t~J+OGoJa(%Teso2vvr=WN%NG zfj9}YeC3};DmltOs|Gn$HzBdV#WSTVRX&zAqpZ!QDv9QGnRl-#u=HkgzKYqRg!MG> z_V!!jcEz0~T!KJD7Y!aC;1~Gl7u)*;8iDAcqb2kQ*s`BY;Fo|CMUHNWykfa?`~`xx zfz6guq9_YQwmlSQ7}Ax|wovnFnu3|9{GXuOKUiF?R!-6G!ILfugr)}d1m(}GfMU#e z-bL?|xzO`;Vtp^pGzRh)>#i zj~n%6w|8t}x#iJ$h9o|+P6!~}X}7#kwltL(!RDdFBrSFn*JHPq$eVr>6plAHz)6?B zKHD=Um|{;@UE7Wat|7la@7{~SnhjaGJ$z-fpm| zG2UX^nxVmUO6j9eJdzgpy?1W9QW}`Cwja&RX3KuimULnzS}atZRI1ZA;BuhbD3@Ir zkCN&i#8LF6+cbriG)D_y)L7J44F&Z-JsKHzTPHc~o>r-}QPI|;aF&1VA$pnW)OxHg zszi`V>*08a<{+{4VZF?#{pD|DG@KH(FADP2RU)MtrPOP_q$KKkX4JsE^F>;_y^+Hy z@;{ayCRem<#=PHTGRZW`G@@>F`9M}O@X*s{zA)$y-YA(G@`X)zYMT+17 zYx>}Usr%&2+v5ihg`{};-ohP;*yG48KQFwi`k_saEAlgjeo(^N-g&vM?OvJ?Ln6a4 z>QM3vYVrgM3t#zWz|4z9j?qkPi{a*i`R$3 z^+lQCBRg6v0z5+H{}vxsros+K*D#z1b{JcxAS#X&(s?|B=|@)*(hrPI?H&UZAs-T9 z7l_gJRQadnI61av$t>Sn_fd@NcNosV@NtFA``lidcVga6a1@bIy$?ts`;^ei8gwhp z(j~4wZ1W-pNHOU4=>WnyA8`bXrtxKq)+)GJK@!)zVYT=^RcT4_WBm(C!=M^>Y{|5n zO+w^NLI%Y|&@BAY-IuHHJ3|+3X97-p>FNyI;}mkXtwZvMb<_f+$Av_6P3W0(`ES zX3GfN#>?~<&@{%KQ;e9m2(Fvy+*pfks)<=X&ycdGC$jzRQVCQ_!4dJTUZ|HE57Q|Y ztMoov&*m8!!ig2s7@1TrJNppHU&fNaV6gi^rdt~F1^?poyc$qspsAkLK_)Cbd}vOy zRFu^#bXbppG0)6$r!dJ&Q%>gnqQhQ-v1}>7ff3iPc56gKZw2R-mcox4JbvAo&uI|o zRFtNpQI`P%KQ$H!XBZ812|xo6`IUZ8XjqITVeUb$Vl{Oz-RrYmhusT|+0rhDyK?ot z-Z@CY%lAc4cZX87&O(z)0_5hlQ^|39^;=+?iUDtgd3JQTpj)5Hgjn1iwf5b4;efky z{#!rJ3Uijccdj*;&p+3s9iSWvu&Lt4Mk$eSF3lfZT_HQ%SKk|nlo%_a3sey7$WK0bn zbuJf&hI`fT5$^e0HN|h5uYW(%>v$htqf>@ncDIf^D`03KDfNkz8h7F zQ^So&YaudQ9|4b3OQqNCM&tGjGB5cOgscz@)pSE`Ao2#{Lp*9AH`(?$CFCV!%7 z6s97M_EXELupN;aN7~pp4CSJPxJsK%AwEoJt}W*+&Cu6=;+cp1oW$UO@ge|kOI|VL zQ~%Urt+&6cKj#ykpX9H48gj*Gg?K*+gKrU!9e(v-n2Rn%*O(3ou9kGMc6(V!7|c3) zum2d_uo!>$v_8I4mZx}WtNFQQ^mi~61i#%DzjHaBE%fYq(eFBcd2nj7?%K_@ zns%Hh198MleQsQ^JKMNMFIl5m^J_iViLLm3McYjxQ(0j$pWd~lF> zkOi%LsM-3Eij`LKo?`3$IXZT5Qe7ACo;c85XI*DgRWCW)Wi@|*j`74jn&su+sTM;b zN%#r^CL6u;EdxLwb8ljp<V%Bl}Yp#R~ zSL2$Wn7`L$o_pX`JU41q^4iMt8B_vkH>5`}+8ercj3#vDqBW#0U4km`!MJmU9?Ve} zLe$9FX482-m~0NG;WuW8`ua5Q)(jyAjmT&ET&$uY2+n#G_^jvN;vGd2Wuri*G~s6- zFb*`)vYeO}&(Wm>|6KAIS0Xkcn4Z{sJ%X;K<_y9+J*(dY7U@8T9(}mt7ik8cN_@{( zNY&K$sz**Pv3_eZsEZjZ;|gs*FZN`U667=(V3LO9gL#%=e3=}>2S(j9|Jcy?S2&pN zKTbR|#9)g^14$xe)(34ELVuj} zFK>oy$6HCQmZfrrqBBia{Mswt?t=r*#0kkUg(b=P6R+vXc+~ZAsd7QoM5!jt{`CM( zyqFn60?eAn(zb*cCkBM3)6Jg>08yYe?sEfZeUCD?qC}(QS$+huQs~qyEm$cCm=F}|?h{EmFtX2j0%tE+!7?Tg zCC)wo-&!KpvA(}X4>2$Ov?wljoH8y7PbnK$tME2U-VO1p)JYA=J4m^u|9eC8qO_BX zsI=dh@pl{MKeXvk$J>PUj!erIet2<}?-&Y3bWAW)Wg1yF4-HPH4g4JjTos&MhNipt2Y>LVst#kKWE}o=BkT zy+4^=y$Vp}vr;qb#pkAomss+xm>$(D7QOw1JFTyFOxQMS<CPUvFsa zcN+`xs*psRF-YDjIBX3wUQV_(*>xhRK;OR^NMTTVASjoGiD4oHUfl%xA$@iNQP{g>B@6>|W?pf&GG?4bvb zHqsY86LChI0xe#eFMznh5IW!avc?6ms{iSq|8oeq{;8N5p@l4X_VaJwdkLa|v|+e( z&ggv*UUPsFc$dQFD7yz}?ryZ>!cAk~Pm%}mF%{i9g^!-$l@tgcQ2 zTLawgi|(5&B^HEAl1nd(1RJ6pahs{0S&IKUoMFUOj(KGqnTSh9i2c6z@qh{cb#+wb z2qu~e%sC+v9&W;a6doX2J)(%K?w(eM#vw+;r8k_}j8F^B6?~(~C|pm$w_J0NH!lCP z6vm3tBjk`C`kUk?5$L-W;?%+vYJ?!6Q(}QJm>h*jHfcF5ry7vL|_X= zHo9vBId)5?r_xC_u83thh!Fh)+~V({>q^1 zS9$o9=~)VjN~YM3mU*EE>FRU4n~9%xHThau8M6+BT8m|=K%7o7g7)4poVIom{d2Vb zr@s(EFgcQa(fPkp5X#uodZzXSXrzxZ!oXNLCpQ^FVAjEr8bH1CAEf)AucS2)OV8}X zn}vzcA*e-VT&qA#*II)RmV`zcL+k)TY6m**2?0paf1HDUba00Obd9(z17O|u6?9q? z90Eb@>+=^Uzm)hv37nO_eGddr3cW^5t(}EFaqwcQG*}Uji|G zmQ#)XU&Zu)Z1n_$#>>l~`q1wNUipu%D%g2TuAj^k|F`}4pBB&$g^Lyphil#R`vikj zu3|y^jnL&i#I5{ul^MPg2My51LJ-Rli}lUsUuMPsCD;G6%~23)*ML_jJ{57v@J_E@ zAse{6mlxxN%;Evb2L}HM#4juf&EWsf8UOb-C{_fM@%HubgRxW~S{B$D-|0{g_eu#D z&kVX~sY#&4iv?fY|9SZT9?!o9CiWR|zPzb;bWMU7P8Z!buQY^x*Iuds4ydcCV;yd4 z#3cMu+YtCKXPy{6LK5g(SJGCTfXYH4PAhzZI4-^V!P$FJ+6|6j4e;*ar9+(~h^LGF zBA9VEX)Rl5d&|44&HMt#HVNK$KJZ7iZyf}r?lNrjT)S-3A0{w1NsQY$~=XljhlZDw2V{K$m7-hHGHWdqn!*_q{g#orh+JpNqM zXg65Jzc5!E$mXkj1iZfpVpgWhqjiiz{$s>g{0_6oTG{U(3{)Erq)S6s5xXh5ZdP3j zF*~f!YNI6)TlXO1O;N)8WgVa>ZV=mVG|=;(wZbPzZ8J?DUU;rHwWm#PIM6e!m#a)? z@wTA(`7>u9qpW+L{~jwRb(P@|k!GWNB*M{o#Z!|mh7$3JiS}QH9O__~6VOreihk$o zb=OFTSs5;6vjiBD2=n%RQMJ4fVs~a$;#?=|Ap{Z7GBLEZ`&*@;7$JT!V`svO7*Oms zI?EiVQg6kTW&`J-~^kGUV)Hr*7LvnNNkg?%Crwhv%w>pjNj?m zvAA?0H+w95_S?$0Z)6{{XDJFB)PfuSc?E`Z(n<|wD5UgkkVoo79EMRiF?0ygAox>K zJzA^)wkxF}rnAcRr`{_W$p2bSSuT07Md1@c%>haA_~XIEI1k_f<*EK^2I~WM|M~i}oP2Tor3BUcOdyu?2(d7z zhwq-VfrTJUNeRxBH3!@Mf(^*-_KlRuF>S0kV*BGkA`wTnm>IR*VUG_9??Jab;U?3< zhe*43eA%uk>!WWt7O00`|4WiEq*gA%3Awy)kwTgyzLbXiU{-)-F$*}ZhkenjW(G51 zffz_#4w)t?l;L%6WU~x}2O%oyPMWSBh!F`F)qZyaw%x}A%r`}Z2g`5IVo(AQYsODW zLHAcL^DEq=&ZMec8m`N&5ckFhKI?~Wv}aQos1XQs7SKloAMeoz6^>+eD{I)hZQ!}& z1Ml$>@Z9PRQ=}pF=s+a2OjPyQ4+a>``=3ffh!9%}RcZ=f3Gtz@w6nbj3$f`m0>m@j zE??D9(&CYW|9@WVRr!}_K)K5vR3 zP^kmfbv&Ki5759G-YB2OB{fy9&G1Pv^bMn0Nn+xgRUtO$p*X1PQ~GhlC>(aI+3wZM zqTL{$O*~hw*Vgj3R9zukg7)-au3k>PTq}P^tIebS5u47t!DLouwNmvYfZ%Lf zIBX1VQ+_ohRw0?L&}E))v^{55X?8Gu>D`G-07T`J^K5bTu zEt4|6lJCE~iVjc=8%gJpQ_K?DPP|W3#kKh@&wj0!V0WQVDVy!?_PVlIT*+#V?{K!( z9E;vC`tdVmG0Ukk3zyTNf@?v5D=Xyu@Fn(XfA2YK23l5HPkqGSvYPgya-C+C4#_kw zx9Sf+a{OmcZ-iWSQ-?DIfajJ*^TKuik-__zD#6YIugfEgF7#=%gu`5HuOEdO0*)br>3DswS#HG( zY}4cMycG@<5NH7%J>(Pu>gO1|o zWJXI<+$FjRZSDwpqf1f}v-+ST@|8>}Z#j~le3V4T z`N%bw>xj^73!TNsCX4X`hf(2k>FB3%F&G9Fi1bSe2$1oQiaOd@OF9(3H}?Kw^kl88A*6LxUq?JaJ>>wQl8_+--Mr85 z+)xwPMDf5FGTqANRGX)(#aNz94vWt=XrB-a1p+JhFySOM3SgCT^s^Foq42Z$BfvL& zrRG1N>V|}FvNu!GlA+(WDIU>+^F@^p@jX7JBF(_!)tZTeZ_P{(H((&@g84%8vFlM+q=CS1f?) zi6f9olPc@M63$~3!`6AKxTDU!zfiF8@9^u!+y=edA5G+R`5;$8hCv^c#ONa zIg)O5*Dg{iJsY7GpYKVRGvfN-Dc|$bZbiCXq9>N3d3_@gKfv_lg`Yor7PDt zH->){^+cM0ak9|S%9pDWkZ@+vgi3mxddY&)HsV7}W1C&T9r4g@!TVn12Gt>kS?c(= zg$nDR$+bHxyug-=5!1nN9+tWU)V>?g;{YW)@i?1Eae2)!wB9I^HAXWIcWQi^RIUr? zCTK$w`z$quq$zKAruvK3Y|S@D%%86yRAC8>0nv2?upBwCGLesPIc9eLR>>0X@OFR0 z^nXHOu+PD&$Nn0q40@%k43;1)=x-__MQOLZ4Ki&o)&XL^|pr1Q<{o-ck8(| z<2WkJ0Kl@YXXD0e^~G@0`P@8DEsqnbpK~l}m5D-QH))bPF8#N2$O`WkQLD48-5!YN zAa#J^~y$pe-0^l}r~`^z{N z=yZb_)o{Pc;GgZAwd~JB^Z5WstKWNUwD16bQ^mmw1(~2e^6^QsTD6Q&wjLwLqc0y z_;GrJy(#a@bE{Qt>_)3jt4qg)XRpJ?;l+0{mrNqIkh|OC7;K+g``NmY##9^%KiG3C zdI5)x_*3ST!E=daXGv)#Y%l$YN9TG$d(#&CCj3a@Y!m(~W;ab3N4+31`+-op=s4!; zQ`2RLw#j&}f}m}q=YBkvwr&x0#ylm>_xse^PA@50mbO|+5YZUbQ%o}C)aKp7EDu@s zC$Aqp8a99W8rO{%v^vz9Z-#aZ}d7%(=pARYlSmqxP%8Xd^_opLym{0;fZ%3Ax@ooF~QPM6W_?d|6qTKXG^^z&UXDM34VO=UrH?M2~=#?NieJ zg^bmSlRIJVJ7oLbUiuXVPzs^v8f$xCIh)z0(J!;yOzaahcGLc79CNTQb~K2^_8 z!&5sfK~~c6#||`btLR*@M++dmZU=^zJ_&%QiBOdI^76UOcT{?;(?GuXhp%dZyK_p zr28kO4t>edN3ikp?YhXyc9}VyRnkIjjy2rNU%JZ~iJ3N--SZ>Ng`>GIk9o(6cLF!@ zM7i<(B_G3}!tbkYL_DGj%`?QrGkULDHu=oQs(SLMAX36|yU~7|YXQ`0{kmN%k9PCFIS*uxo2Ol*$tn88Zd74H5E&deYZPQj0 zYg@43fxNFK@bvfgiO#zr%D~m%Udl6nB0$Ix$;w~dF{Eei*P*l~g%0Nh$q2qpDm_aiGK1_g|V=h)ev+5(eFfa@62}CRuAea`}-P8`X#x$AQ;N=CzlIc%L*4Qi9oVqVP){ zrouOTGx9-yV+yRKp;=-PRa#~shAwRmba3G@YFLf?Qols@jNxp=Bp{s#c$M0`t5cf zy>8NNtCtcgvE#(0MrGAs-=VeiuLh#!xdaxBZM5rMU9c~EF(vpOyJsBmUC0e2^=%Dw zvkBd-HJWTDRtpv{ztEQfR@!d&!Uzfqfm+e{^?(SM#V?al=10;++`sGjHd<}H^%h@6 z-^u`AaX&Fs8STM=-4oAV@w>()k0Aky_uY~<{%hEh>h>}DwsUm@_F9JQD$xx(IX)bj zC|oc6pA*7_E>;5P0>g;y(1{KuCU}ElIhbenoUFR{roibAQ#_jwHOE{qfDV7?q9Am$ z=|+Lrh`k@>{X!w>hAV#-Tq8*gLvbkF28IJDfz`79rS+2R59qsv38iZKrkBdmi&EqM zBR@nLZJD$z%&yTJbkqXvpsq>>f9gY1o7<`&@=M1du+C-Fu0FA)ys1Gh0#H;5*e4Gyfv;Qnxs{4d08KmIVyUm16p^j zr`YJ5qkBQ0%%P5{7S$g2ySTeYbfhr0+AiQI?mHL(X9(W`B!`!2F9~~0@rl=#o z=F+@28KzWSD^=Z9m_eDVf6sP#WS1joWiTv_WRD1k@pp((we)#9po-E`vzTaya&dskwzj5_I4*h?iQIm%`8x$(uvd)gk6QHI- zSG`73Z(46ej8aWT&^8i+H4k`$zT2$qN-*;7sU6Q=`Ddhs9~MSBk??jviKKLictG9Q2u*ad9f7U-2(m%b@cF3vlH z`g`gRXUy~j<+WIX0hI*L+;i`53>0DSk@YC8NI}65H|K{A0I*^_EjsQcwe1ImT=LFW z<2yQg*oanoIITv7vsurmFBRvVn;L0~K?DGuoZEWtd52|{Wlz)a@e91wkHF4F)F-Od znti{~@|(sCs^BCVXinqO%LYVmTMsq(Vg5;Jr@5X4#q}{nVgCg019f zzFJzDxk-}m?KQ*acGMv+)98^gsE*rGdB7wgdmmWG85<7kQ7gQ%na`3%aQo#V5O*>G zF{?7w;Lnsulr(NZ40XU8)K)Khx9SED&>+XQBB}m(=~;`)xBA=+%gbyyHCK3b#Xa;o z@>+yY(R=tWS46m&LH&_RgMp?2d&JKyWcBx*a$izVUu-6c&ONV{Wl{9A`z22XF zkW_leKRp--K@pXK?4buSPjtd@*GdnUV(g`(h?}fIWv;{dqU(-H&^d2b;Ns=5k1VX` zS3d}$ZCB%j+2OH4-&Gs6ShA$=0%Wh=VQ4cRi%Nkh1wxaHZ5%h=F+`f(<=a62gu9%P5 zm^PTz#&e5h6WI!n^G>pTC(q%1?4pm*Z47YFJauK0N{bprJ$Ixuh0N1o+8EoXM`(iI z;iLL%K5=o~OVb0>uAY)G9_#IqE;z^sz6loGA9A=j#BW}w&gNi?RW`q>+pcjQ;$_q= zsC#a?@S_qFgj`@#5) zsA@`Cp^N=t23QXQ!foau884q;gfT@K2HKv{sPJKvU4Jk->D0&5&F_N8xmP439H z&);T4B~=zI_?~adI^B^oTi@q0A7{_>?2kLZVN0Lyi=ck6M0bv=nY7_fMSHg1J@f?1 zI}`Glh{tl`hfJJT;hx~aeB4wm@C{9}YJM=dl}Z-_`vH_ZydRS9`sA{BNh8ds8gq>( zVH*5}xTYPSQsW}}!P$Tp8_n{+_rO%Jjla_aj28L0W*Nu_zcn$C$#LMgSskdP^^V-AuuKi$Pw zm%hGC3haN-l`2RFliTM$<~M~vXB|xnqqL7phvx;yE9F;pq&6a+X6C8HS;h;0a1oGz zpJ!hkWc%L5J-nVCEZXQcJ@$X-V@f?+tX-44@OHZKDHCW%lFkPZ)PdS=ifd^%z`NKP z{~B`%EMA%0oAv`_0?wKBb|na9mo$~r~4kMO`kK*F5H$2p+ly2b9VpFg_sIOZZRyGnLYp>M6@$jgMpkPH%!n z(mR~eo>zEQJW?~1r!vtj?MXgPW|{08RiPM%y)9*OpWudQPnCJpT%-~N9=sL5YK~0d zPv}b;N=cF3NO%x5U2=%RJXLYLvxFM`6y^~d78}^1blEMC#cZx<@vgApQGbe3P4*e6 zmKUx)qZBHd7bux~9s*_kbdg0OtzA4fTPkG4E7bULT@BuYvY)6~YcieH7SEu;)`?=p z=}hsvgR`#Vb&_TtO5QaN+4F%Bb6U7Prc~9N0uvdFyem0?4C#M@qT-;$rUA1mHgwmy za6BVpd<*HAsL)b#c$RYM)^T;~s*i5A@MVWlsoMN8Ba6VKH`#e>g5}u$%4&Cw)#=mO zT%Rq{4~0VJX5Tkk4-7x=xuy^|5Lg;rLety-U?yr7?!$+sY2DY$RdS(kpQ*lbDD`CP zxwa;V%Kj;B>G9IzQiVfjmN0Y zqM^Q={nPi!2>$ua>8HkimB%hmuWcgpME7fQ&)k)8q{8}SAZI9Dk6}TUBv^+wt$V!Y zFO^w(FC-?zW!?-6r&dcwnOdoK4B=;CJ+M7IT+-Epi~LnWn9d)`1R>oII%q#6vya6N zs+W~yrOlcw4$|S&X;ZpsSx(7$9L!dmet}+{c#r%MBh^@1P)OHxa?k00IUYm#f~ofQ z2?N^sUQ+(CS%1Zzw$ts9;4(dN!+AKcy*zrhxK_6gPO8PIYD3xu#FB?IbB~*Zk+&sp z6IKBUTCQSMBt|X{(ST6}A<@U8iBb`_fIHw?nt)1F!AC?rqE9M)L1VQ%AkunLPFi&v zNb3E_w6O!|JpkEFjoPDD|FEK&-$|9vo0ViIb<9oT#$fwhMDVZ6{s@XaPkNS<*o0qda>?lSabbod9kdY4pV{ zpDbfLFA${HDho7^PFa=8kxO9{ylr7U(rmKJC3^cg3NF;Jat?`WUuZqt05N+P9u2V%rYjhuyoFJqh0u#l};c ziN#sMjhmEExzGdbvU#Qowl7tF5Wo*+8$qmz={?TQ^&i`W!uK!DG&fASQ&(q0%p>u4 zB*(K2PCd!jgl8i$$E8757BKxGSKd2(Vj~o8d^0X=M!c;Vq{`4+!uioi+_iPyuMZ`P zxvP|e^%yVgZBd|Wh6SNd5@qORZ|_3hO7Z4ZD@FW~TD)XEmN~q*M;O_83VMkpT{={m z;PAL~0B9VO*&9tR(-Y~!bhPWXT<9__yxk5bXlAC?u@&13`bnRyvYkbnLtDgsk&j5D zT+zFElB=jyx9!SR=o)2?;)qQ+Wao() zS+CqD*JS8<$mtz+GQRVIT#?-63H|zcNgup%wPKo?MdKOn%Y8xU+2S%gdc+UW`Lkk- z$2~uL;9WsqIr|ouQUQbN`optrvqvA5(by%znBg6FaHZC~`kg*u)bnbwO`^&CLglSA zd)%SwgxAQVPejo(Y-89enEhD7hO;xk{nJR21h z$XBkQRutsDQu@spsz{cozNJH*qORaUC6QJh%KHIV+Q z(Pziq-vcx?2Qw6m@z*Si$pUu2vI)mLhmpOB@KLZ*rqw%<*{wdhlG8`q~-91C4My)C=CINuhTD$|jfOgWJcZOr^ONMpK+ zWa+2ret}`?Mv+VIrelZY3>`E=YWB#FP{}hGljOWY`hx>S&P-#KNp-?xTkQKdJ}Eg) zS$QUr-${4+*jg*}AHpOIaj>OL8kPHY5`CX=t1olcXk~RmkEpDtx}<8}uuA*$J$HM- z-C%r9L06Gx?UMh6!1^f_%~H(I2g9r__Lxn)kSqTSG@=sh{We70MowGrw+5D^!0ZJ4 ziJqrbHC+~NFSB-0i$bsq;O%J22GMi5h)Zb*pigF+NPFR0ak4Y5)L`|8Rj>OU`B^u{ zHU4jwu42M0$Ev1&xAB)@%-kXoe`Yfazb!vuAmO!2g?zrp>WByE6a(?pDcj~W)Y-L* zR@eK}-wK;rmanMl8j_n;Gw7dohcCOn(Ta>KIM%yJwY4SzZ>9c7NmK@7*C)Gt=8Wnjm zGyexYDE6I#mOgc}!&cIy9P!{uc*iA=^B(!R+!w65t9*NgHNyT~@l5Oah9NojcG_CA zE1y6bF9Z*AW^8zz4{}v15!MH)C*QifYMY2g$-;a~m|`;Yh^z%FTT)*krNto#n!19q z;!x;st=TCHcE|GNHj=e%I9sm>30KjL@9)gk7UDGKx=x7tqloGeo&}dDiQsKFF<>fW zzItMEwwO&KQxrJx9g)ga%9z`_1P=7}r#AOD9DPPq6Eb_e3i^9WWg%Zts;yI5dLe4y z$R00LnwH;dz+)fVd)O;NG14&YDwyG5gCC(GoEs#V+Vtu-$$SVl2{njE)+bN{nzfFu z@_WALc!_^`lBNC+p5)=;2X_XY`;<+iV!vZwmrvlB{Gpw2_c{?Ck?j_PKTO;wf@P?5 zrJb9%)9;*@$Bm&54zxv6s^u0q@P9M6y_9R${>nR&F>z56Iw4nrd zUm*|=qm#CgOOeSVRM9s-KB#7^E(P=MK;v!#@2{q?xwFSp+hS~O~d z+XZnu=ln~tyy)%kxnpcea6eftShn+jD3sRSW7swvEaZ!q zPB_sk*kgC4=rS#+{rN1F=YLcZ5zE{gl@fwA;SEj2>@%_&D4Ar6im;6(p|FEgaq?Pr zNrG+X>E*{4rnWQvfm5L^o#zHBY^5Hk!#!c}7Ltn-#LpiJQWhGU#ph!#-#=Y04q2P+ zu|vgxk=@3*_K+t1HdT=NvgaVCl--6{27eP^dBTj5&fs)oHV+73WN$j;aG9vE#I;So z$E(REJ==f#kllcLi~WZ&wc2PgM2+dK-A9rbQ}j=!o?P8Q^ZnzWdp-wa4g^OhEUXYT$r5rwGG~b@kYzmQ{{?Y7dA%(Eo^Uws>nHwy)CIRE%+<`uv6N)!S8_MJ%jd-sO};a&O$=#>xYuho4m)+rL-?wFKhi zQMor4-7!b7AsOG+u(|uT{0$mci8}5#Qz6{QZf=1H(*FSSx6c6frpUuR1BHvrzX_cA zUCZQ8`*rSx@$XU&O81#i&_fLlOZ+iB=9PQ*EEwi6JSQS$1`VhRxZ;)3RPkBQLxz6l+HD2c4x{+#01LW+<7Pi-9&4RGm7OXXa$cDDu5Q_)5&c^!MK`rFf~NXV z?2TsgjN<>|KZbMd`1k{=R6Cdx_YnasNEP=8`w0gm&79M9Hi~KD(rN#N&+3=K$3n07 zU)*7Aovb#aQFyIz7AkzBjhjpt9x`3x&5mW;A<^83BN{~)S0^E@g_)DIdL#h{|ok{m-vPc$eOuNR29e89D2*n&;u~K#`}~ zHOB2?R*#BJL8kBaY_+&|XeD?R!Jho9=`VY7Q579t&1y3eGbqjYk%AUf>H#YD$vb24 z@3lxZ>+Q{3JW=lUCJuaucO%Y$)@i}d9P%ax;~><*xHsyj+82HFV$@H9&LuPx;~4jE zt0i0?7!&94Cm_&k5Cx1p6O|d(34e_YPG9-SgmQk2#`8}CktzLG-#=v@2R;Gp7sjCz zmTZZxN_7;1Wn+`VPbf%NnmeBeF+)&f_2}~2F9L|@H5(4*Sba;DfAt<}R~yeqX80Rm zKU;;i1qtrg6m_2w`FqO~RlaLg=Vk0v!l}osuX>zpy7Mt}?u*28_{+t(rwqX~biFsU zc*_W%{EPr5X4T}fM!%J}cTECVk^5&tJc;*caj*Q>Pv9Y z-4C$`l37bfeAfHl=JvZ_46@HN0*0tC57`YKNoHn6-8gh$(XH-B-*0F~@m*3A*Y^xA^$_2iWJT}w z%f>v(Z3jghbboUucF`RT)`agn8ggf30{L^z5A)30dM$O>KS7uJ7}Q%UM~74zjMNIr z__)ygho4Q%miwrR&bL;wq#h9Fp=s4ol-hm;t$)4{uYb-2+`+-DS|D>$cJd%#8H{FM4-IDHY9x}{BP#6X%XnlcxU`9$Y=YG72IE6o|7X^mcK>xfVe=%+| zv9s{m@DW%N!kZ@F=ho@#li&6~ftCg$WcDIxAB1eK$u~1f|G2blzHv_E(NC9GINpzCt&Tv#M&|BTgs%x5H+YNl z0W_+SISd8?Wrl|a#^UeN&4;yZ+vp@haVGVSLvYU@GNF_r8|eit)qHDj;1g+Od2nyV zupF#|p!?;~h692V+4}k%MZMblYP(QS_$~j7Oc{9KeNprXL$?OE;PVNzOI!r*w&%Wo zVvwdiAbZC|rFs)p|9(bngem^f;1MOysvm~he2wO+#)`sfq5ayap(hs!hUhaxg-fpd z4WY->lTV<#U*|^zOouM=jg5#CNE>GNAmn@N%1d4=xqYd6_ythOoNSO_MS;F@n;l3f zG&%5x53Y@B&6bPTcYWT&9T8PAPEC>y2MFLEKL5mp1W=poHbzq36V+=+2~`OvvXqO?*m>|`LoX&|u7Ft-($ZbwX z2ov+;Hveg4Vm~ZrVuABZ#78om5x?DX8^$wI3jy2GD%#HGs)#S# zPKCw<_c+%obXzTL1@%tnu;{B((TzXWMIpM7j10ByC+W^NzF);eVbN=_*&uK~4`w)} zBD{so#C1EsCS(TEWE%N?Xq=F^sHJ$W-|)&{@$Y%FGroc^p|(o$-D! z-wANQ)7iv}h0uT!naoc%Eix6*BUv;EefQb3^G5U-|2ykrt-bvX);=~utN9>HE_W#X z?jj#%SslB6I}~TxOw2uFW$hfDUhZ+075*eonI2Je^?6Y&A^Dsurn98%w^O_Dm5-yH<9;8%@YL4fR zz=OD)nal%1V*zwr{KH509cv}Ep7}pKYGO_I;0TW%urgMj{^g}=xqpDGo?t*1X?@sq zpIz#p<3ROjzV9DKW8Lgoa1yL!1yeFMyhI7U#uP_3923=P3`CgQ)|S4H_bnp5wG3_N zb1S17$y^Ox-HJtwDHGQQ2^DJ{%GZx9rW%LQc<5YIXZE7g(Wz+24o&7xJ5vgtt1r+0&5InHi9WPZF(i`zeNYwU3I}To zx>vJ+D8}(Wff$JMNR2mW7jYY%9QaJ?eC`t8sO}QKBtMz)|N0<+>>X&fk)#pyS+PPO zl9>4b%QO#ETq-^ldij+`(!2hu*=u`c)UEKxb~J{sLP7#ec#;T~%E7)5JzO7$-O#Iu zg})3Wfl7brdL_D)&b0o={DeCh) z)3a5xMc5>~M`T|J&q^_iQ#G6s_cxwDU?|cxFY;bWkih?CPY@=I;2T3Zx3bw^;ir;D0Yw3@V&K!kLt3P=PQ8_0Tp;1+DDtuzmRD%NwDZEL-Y4|#`9=ieK{ALw-nT`vpr3FDyB1JuvSqcofvsc;z>YqB3xs}Q z%@LH@fQD9#pcKQivVA7Ob(0?&ZSW6$u}a=>O3bt6@q{n|KLT`2M>IR0t_ISGw)`?!|s1Z zmzI-rrCHP^@YxdRZuZ>VAKqP9%mn?iwobQ}Je3w5?_8T)H#4@Nm2jgP1{Ve07t49G z+KqOo?%d`hPW1K)Pae18=(*u3p>jh}vOV_&I(C7vpp>44ffcKsZBe<0@|P63kJ5K{ zdODGe_WZJXzK8Y_02!?qEa(nFKyN?Ky^Xi<^9P1l1SPV{8s@Y}Fg|B$T@*;uo!(Fh zVkd4#rj!Gw7JHb!yV32>g#@%g{`BUxTu=Be~ z4YaeMprlH?izl4yx0&7b$3*oi=SM^A(|Zq&vVx-kL5P6;eC`dqYC#m6ZK1^TaQ;?2 z;;utv)McJSXb9C}7}F|hzZ=?E8cYeG)l2}o^6JN8GGicXm$&fM?=N$zxF7$Nb#*xY znLXmB!V&#)L4}s>&AY(ZH#SOq1uPARz4z`vENgoD z$a0*8lZ8mU@{ziACl>PVA^ryAuP6hkS<;}29BUKD19raGF_he)_Zw@~`U4XR6|XUz zK@RR&DlM+rpI}TTTY-&y$+*w)?6z5c%QSc`bQ%>Ij4)jB2Df?#Sfe@6L{N2OQ0MCZ zj4n3a94L){NRu7%9rG^}?FgvKqE_9bwj7@QFVbX{)w{uDwvD&hWl**Kg|^p}Gz&Sb zHlcV7iBwTjWRI7=k$=Ygm1*GoN2KU&MFwpm6C)Uh%m|qbv2W_39^;-;kqDr5;1}b2cz|P6r(ZqBZ{Cs-k%InwK|@A z^+-zS4X-cku75YcjLp^WW|CFF*ljaERyghDp^KzjY<6N!2!oF2M+8jCv zv&4K9kyk(CB;R=IC_bwuVM#esPNy+vYdcs@`MO%% z?(LfcSSDpse2*q^^WTT7)HttsFqBO`JQt>as9iUHxjEXPKx(3_wEXV)+w>yEgmw($ zsP!goY*LV5$IWwby&X}p<$ix#DE-#+^Kh%!*bL>ZoTuX)#%zazwnFdHU2&FtK{d)4 z#rB>OCiRSgA|(#lp5^;O)hUy+wCMa%Zj9Shm&Jw_tBxkMGg*TnH>A z@%qV|4A@8uggrk|h?Do^I)`F)N;3GM0A!U@*g#`jHRSvEp0grj7{qC`vg6hgC&6l5 zt0<5#?^Iw2GuUjb`r-Oz0r=|wWA81as{Gou zZ>38*rIC;>5u`&J0qO3LMvyLPkZzC?1nF*AfP{2NcXxM(?_B=xJ??kx{qE=f^nQEB zaI68sTFmRZW}Ne!=kYsWM4~I~T5cp1s8WrsvqZ&v>iFGGr+eMW4VOv*BK6=|`%oI# zqAD+X{ZV8YC38An!^{+$8^az#6^S{~@?DGnN|1$4JI4Orb}lzbuTV&cmbrw`lqPFv z{Mp(@Qm)uDQ3Y+#^}m$KALjmg{Uc_6#<3qYeen}yiGqJ(%!mIa_hhT=^F#}?FTL~3 zoEvlSnLORPy9>1Mu(f!*CGy8=M{gn#Ga~M|d-`-`ol+`4;^jD&5a)P8j+S0wudJB= zjNi(&nCW!Jw@uwUFS9L>a8NxU&J`~88*-apC8K+hlFn%96f=p3t)4=w%)eXJjO4Vx zMF*+8*d7tnUji!Y3(i3uCbd#Z^2I!d^`0yrC~H|=-)rOki9Lq!j2|)N5A@uYIb@;M zCKdle^ewETkk3^ipvoSL1R#qwUAH~WGMT9~h5zV{6^rWiDu|pBC?y=RT}E9OJI*4p z&VKsi2PA*MIYPci(rWxvfZkx55r?#5acefal?bia%8vPbk{BJ^LPIxhp^{g7>Zd$u z;ob$g;Ux);`{sOFaMVfrmZH6NHm(b4WEH)`XqQE|Sqrc^1^B|ngNf&wWRA590tAzE>6QBH;*`+O;er;?7F`Qe#Y8FwZ`D{+!jHRn z8LwP+$78tkn>*C!Xhgz|Mhe#hhk2VJzF}@Ne|WAgN4N3}11!w;oc728Nu;6Y6lOzsQpB#t~R-`=Tk#Sg!j)-umr{VN5U$WKdf(Z^<<==ib!#%R9}LV`{u=UwfAlYh zRsfBwu-F?~a2eWVj_v0KD|TNh84QIn|C^T#V<%yzG@8>Sa9p1P2l7WHQNKySe^i^+ z#sK@oUvKn%9-PL+eYfGSJ^-u+zYnD@M+IjB1rl(r{RH#-H(e_Rs6<~ z#ZA#(p$F1_$N;lfErR^ccLXDaJ>IL=9x85K()S{Wc5h(wE@LFMF5=-fR=TDUtMrm4 znv(X!=7Sfvo<-j`pd?$fi>4FsHPc}J`H4AMI5jPq=Gaz*ervqHd;)vAS)G()e)mW# z4OMI($tm#LYSkv_s9&kk`NUwKda@tEZt={g)6JfbWO%hRlOJqA0KJ!abBVoW{Y7L6 zJJPcgyHT530^+#fMxfekS>hufmVh|UAGs?dYV*sk9P|O=vRhlm1g+5T*V9i3A$R;2 zjAvE@%?LR5nixjAINbk zFxw3{@YSmAA=P|qenj2JUpYT^$?aQOjg%Jv zmq|$*j|*Ya880navw0df)S8dH0l0g~*UcIeT(y!HAN?jI1Lj5Z8I4mDq7lj1l}5?O zf|6|V9JOWJ?r)k^3^k!K3N46H9C$!7V_X`S`O8n#O{zGC!T$oQRDtV7eE@EMq+$j>=`m9A(H94x4I;d0gF zbl!10cz}z?+z{sZ8VgM=E}W*2u+S&I@U4CUb#HM*O7=vX+7J9?n-z&HmhkoUi5H$; z$imvs!^e+U(Wz3KLYGwIPa_J9CHg|_unEu+sZ?@Y>30^loDSY~uVdU@Gp7j9yf?8L zJve}u2^m`n$L!7lfg119OVYCXMUx#xO{5gOJ{Y$X&9Y7re|>KT6|RQ05j~}uW}p;C6un}K@ua&U3fmkF=+}$ zoDh^O^p=3Hn1Y*T2EXorureP}g%Z6Ykd{U!{&$A%KB9j?unh%GM3L5=0 zS`oMWUUmn-vTt?a8;X4MX8NW^=}R_XIC(C|9-y&CrJ=ecE~vfjq#qKduVc~Mdo38dm?NtdEy)xZQ<37_1n zWg^&dH?2~87$Zg=DQ6YZ z(pL=8TjcW3c5Z}nYgW46dER&)dW_b6zhwtq9iFC>7qxci{X>|#p8YH%hQOP2-X*4M zjZK@B4U*t0W$D0^-O2en2AZ_f3dOD>MMOYYCIf`!dbN9&{bM4!*vP4hH~3{J}f4Ymu5N=N;TH}51V zDCzpBBKb?7E$)SHk>n6}G{KN86R}NS;VUO1C}<*rbxT_s|w#5{aB7zkAFGcP05mI z52qe&JHW2qZ!kcNLG5gL(KA0P*WTVDHBEK3MeE8UD|WN?$($Ua9})I-;uCM3__z$; zL5uZt;FNCV&?WPgU+E!JGhf|M1RwPWC)9=9?|M`qvxb}t>vi$gsIC5lk^bcyH|}AQ zbV1hUcv2ZjdY=*X0Y`6axnSTjF{nHkQ^5$rMgkVIkT%B%_Hq3@d<&6cWwnSIVK_^) z_TT#53cnwuqM(aD8m<;V0^_11Z}Q<+rMviQk#mMa{z6z4yhRiYkGw3@B6q(|qzs9N>is4u=$ zwVJw;-4dCkiq;I^?T%!il=sNQ+zL#(mAXSec(7fUq0wtSn{2ut6(!a2Jo)AASbvPq zZMVp;`-^$Jt<}x72kO=r7hblO4m*72x;4FGHKHi92gu=PQWQnl(8*xg7-m2&XoWC~ z?VFN5C<=qBaHSm3;_RRzAIJU0HUcfAch)0tvnBcHe(tp)B=l3Kx?euE zygq>&(WIyntAp#qNSv%PS2&pI8FE}s8eEKG*I|z0FH6! z;}(qazY9J zV;qCC$;;M)`2kD0Q2u8hyBGysOTAEvec39alQOh#I=xr zw@!N`)-?9vz-)-XGOXp>pidOJvKKuiyz0xM^%k6O&Bl^Z+g3bYxAF0EFU!Qt19>sd zDiM5vmw@!aLSNjAkCYCUv+aE5aVX?rHv+Et7+2|WqwWPejC%lLNQKGuZzeJY3u7ma z(Bt)Y>B+gHmOJ@Em4elzO+jIP_3^rAS?*w$M_}JBI0?)~N*nqD+5Q0{=SoJANw*tk zG1rAq0`jmauwO)$trM345E946JHl zV^#p;@e|mU2xf+=Ir}3qwom=cb@g#^^R3kIqSVt=xK~>gZ@K7D<9=iICQm2IOE9=V zP@ICE5z|72^L&gM^e2{16ihTzX3wjLOu^VAMEg3cUQ0G_Z68om6Ua-akQuL^=uMYy zwUn=BOk2t#NmyJ!+|}P>+HpV2UuT5akaMeQ8ECx9;DpQLAX*Zy&n3z`)!0Vgy4Qog zBee6z3$0=ZWW!=O0{akfm-hJ~x*nr5-XDsTTcMj|x52$w*IkjPA?K5an)G6u5Sn@f zR<%Y0KWy}iQ>8%D@9|GMvq91#HjJh5Wp9psymQI|;1N^!zIwrSSY}cAXIVtyfD#g? zX%lF^tzg`RP>eB*!mMI_9t*V4z1?s}4i~8}qK^>*Qzy#u=+qCs978_4`=a4YObnH- zZ{fjg9G7w%7L;T7haedmgu|bb8J=RRAhEdG3%_Kl%Mx&nP3GOQqbm-hU&|HxAIqDVxOXqWx=71Fcq+GZI-jFSN@no1YqE`Ey9YMZcA zUVhyK3={bAX_Ybx$Lwwr@oc9#-cW)80_eoB^viJ^f`)G@i8lg6RKmI1sKpVIdkkzD~tGcrm|3)u-$ zZVruDLHLN3H3VdppXyPXQbU|v0NY_k+WRik>oNs$HpJ&`fw}%OHImtg4Th}M?TfR0CljydR(+OGJ{;YpjqX`_sW7#V*ryZ>|dxi26|C8yYg2 z)#-LI8zF&1+2%HX#J%Vj&cwaQPV+WDy5Af;rg*tp3ilK~xBNx$Xg67`sS#I3Xe}9T zQ14sSER^Crh;JCXERC2sVQ-!Hr5`=X@fr=mil8F6ttjU!8YsC=^zDO_trCB^QVrXt z4rsbud;#a8(~UfMeiS8x%;O(@yyv%2*S-Gwm9AJRzD~1pth0!;kpK~*lw&YAr&F^n zpVRI-U5m#`AVIb8Pb)qPP4AIQx6@zqR{~r+_`CcM-LQ?`GxaD+jRu-Cp3CGj4hF`* zUssv;vm}J6O~E`57|^P-i`eJeC0~50vBCf5ROaSd24)34Km>F9zRE5g{}!$YCr{Ke zLD`G(Ygs*skei${!_(il0!16~DCr5B0Q@DDA&57qJRp!lV5qs~;C3^7Kj7f(^e%l3I2W^s65pFDo60UkVHo1o zNj-hcjeoh9i|4x%)|yB}Oc%VM1H6EypLN=|ZEno=OgPzoSz$Do`WIA_BIX|ka@X?e zY-j9zzZ6V@N>7hOjg_ehfvYX(`=2O&nmh0c%lj)Ir=%fZ&cGq(_yK@a!RPM6_tM~! z@*&LoDhNJ)`mu!Db? zjBvC=X}JQOoiaXET0$!^*$Zz5D`!p5+@&e{v6ngDG};Md_KtY@Og9xnX?VpSGpj~b zfwnZ^@O2rN4wQZ+1)x)hbU_dugC-L@Fd=ph7um zPz4VY7SE5)DdnyEl6EE1@LXH-&=x9djXl~38U+T3yBV?~L<+m-E!?$SCxx@J) z@g)@pjP2fXfa8_npXI2#o$0KrVRdxhVRlMxX^s50O6+Tw-=pB-gM(M7mc68#-lzS}Q8hprHv5&W)_$6a{tYV%?7o1i%F z`%enfc-T^`FrKt|1UtvW9p(<##Tv12Q~+z1E`?)uw*&p+oObB!7Yww6y8zIh#&vaN z6g6fVXm{HT8^H5I>z|PRt79Ve4r=ud_SeJ|?ajy6uzXdQ{rilgO_2w5D^(_K=95j! zgtS;701Gvm?_Ba>2mKDfrlUo`Z5yIEE*(2f*@tNt!|pKvkJaS(+49a9^bc7?#y>NI zfj((lszBb9<&FW_o>9R4>K(1iB=`$#q^B$YaK}&7WND(2Rj%ZnxLp#esJ^A%EVr9z zP1u}nG7N1dw52d`ukDst`qjz|Ult>kzblmvP%Y5Rt)z};O3`@_jnquAz}+yPkJ#jV zvo?J;0ERMXK-M-JD?XIC7UmM+75NH!F9PVtL(l0V4&uN`3HX6#i*-8mFK`I>zDdpN zFOE=-dlsCaDNHe-3XaiprA5OA9Hb%W|C;5buza7Ta`yx78xcCA_&G#XR4PHn6emYi z)UWOf6M*JLn<9as>0S4Ac>UaXkTXVD1`1Qfwk*aOg!0Zdn>t!daiPsv2gt#E1&U!= z7z-#0uX?3N?eBH=<4k{aO)Z|U0gyp};=-_r@#?Qc^+6aVw{xRMjf)#Ml~Sr7czApU14|Ib(9N$^Jb$>yt+i#~8ei(L|@ z5}rf*+cqE{epSE%F>Du(D{3$4f3X0-uwFZQ>haGE_J4SdmI0rVgH2H+`Ikm_m{>0M zUKon_d~f%age`9S?wwE}ix{xZ?G!Y!PKFx|1fR9zmqPasJo|rr zpddp6eUMbrNjBzi&?o1|J4|!{?F|c*0Oj`(*Y_AB`~lq1fXxn_|JW=-D6koAp4xc? z2YeR)iqQ&_DD-AU{7|F|^IUdINl66FO1YdoZHJDS|HD6uJt*UFZ+@@XAs0+b34DWl z=g^NLX9m-_r=>HpYipGHBi2Pyp5_YCls_da3MZD^pOkr=#S9XMWD zqnD<523^B~*k*A51&RD$`>t>ov|YyaXT>p41nK&8<;L{i0k8U-L%) zKV974>jtRKKwfqqRJW%r;P%#kK8}X_JG+p>0@s0IUpS*w;c3zI8mpE|_z7+%TP6Kl0u%!I%;RM&Xp0 z&f7)dJ7mK$f7h-5eJp}Y?1cg@-6WW>w80|{ExG%(C=m&6lpHN! zai;U%@5lf6SS%>z|805Y2pV)sLulVB_zqom7VQwhOG*X8zo$*{|I{u_Ebs*1!Z8vL z3WG09C_FQG3!%gD!5O^#-)8-{TmOIW*8h)vD>@W;p9k_z?NEz>__8$NAh@=t#n@wG zy7&7ja7p;Ju4)df4Nlj47*E_#WP4#ub3|9FaG~0%MbLpQLKH58qVSi_Zs}g5UpWSk_bV#q zeFRJ$R6U(NNvqo4ut4Rt2m>{>i5#M<8klDC=|D?v7pOp^qPT|N!q7v9zf69G{43~` z^7ROCj-f3)kx%{qZq8c+uubQ1o{*Yxw|As%EIek-{nQ5crghg8x|=>`tN=b8e4wWIm zJ%%FyTt1OsI$Z<>bU{W+de;qI4^SYX850=kA}pu+AOt;(AQy`i_9U~{ z(C~{ZrC{8P$YeT-r%YJaQBdukDMK9r zK13?sY@`k@WYixtV@G6W?#;E_Wmj0PG({|QZl~6*O~(RX^djx@o4*3HdiR}fmSQ&_ z=Om~ph0fUSqni!TMV2B6SvZH&K6&L}F~-LSvZh z9ouqNBCtUxJvyf!KN$+=0&XqPU?HR0jpgr6HiYpvhe#;!_Rb5rPVP+JhnmRzvc1d@ z@Gu$t%0DK%>5;T;QB7Ft+WI&Xd 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

    TtGV=0dg3{G#(0bL4Eh6S?i| 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 From bee3d1ef50ff98de82f11a9242171c926f1269b2 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Thu, 20 Jun 2024 12:04:43 +0100 Subject: [PATCH 393/634] Update CHANGELOG --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2f8f5b273..c7299c3d5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -79,6 +79,7 @@ Thank you to everyone else that has contributed by reporting bugs, enhancements - [PR #1312](https://github.com/nf-core/rnaseq/pull/1312) - Fix issues with unzipping of GTF/ GFF files without absolute paths - [PR #1322](https://github.com/nf-core/rnaseq/pull/1322) - Use pre-built Github Action to detect nf-test changes - [PR #1306](https://github.com/nf-core/rnaseq/pull/1306) - Overhaul strandedness detection / comparison +- [PR #1325](https://github.com/nf-core/rnaseq/pull/1325) - Minor fixes to strandedness settings and messaging ### Parameters From 100ae0a839fdd300f31d0a12b20e835dc67b0861 Mon Sep 17 00:00:00 2001 From: Harshil Patel Date: Thu, 20 Jun 2024 12:06:45 +0100 Subject: [PATCH 394/634] Rename pipeline level tests --- tests/default.nf.test | 2 +- tests/featurecounts_group_type.nf.test | 4 ++-- tests/kallisto.nf.test | 4 ++-- tests/min_mapped_reads.nf.test | 4 ++-- tests/remove_ribo_rna.nf.test | 4 ++-- tests/salmon.nf.test | 4 ++-- tests/skip_qc.nf.test | 4 ++-- tests/skip_trimming.nf.test | 4 ++-- 8 files changed, 15 insertions(+), 15 deletions(-) diff --git a/tests/default.nf.test b/tests/default.nf.test index 388c40272..2d3323175 100644 --- a/tests/default.nf.test +++ b/tests/default.nf.test @@ -5,7 +5,7 @@ nextflow_pipeline { tag "RNASEQ" tag "PIPELINE" - test("Parameters: default") { + test("Params: default") { when { params { diff --git a/tests/featurecounts_group_type.nf.test b/tests/featurecounts_group_type.nf.test index 15b4e4f8b..d847bd60c 100644 --- a/tests/featurecounts_group_type.nf.test +++ b/tests/featurecounts_group_type.nf.test @@ -1,11 +1,11 @@ nextflow_pipeline { - name "Test pipeline with --featurecounts_group_type false" + name "Test pipeline without a group type for featureCounts" script "../main.nf" tag "RNASEQ" tag "PIPELINE" - test("Parameters: --featurecounts_group_type false") { + test("Params: --featurecounts_group_type false") { when { params { diff --git a/tests/kallisto.nf.test b/tests/kallisto.nf.test index 8815de1a4..517f20156 100644 --- a/tests/kallisto.nf.test +++ b/tests/kallisto.nf.test @@ -1,11 +1,11 @@ nextflow_pipeline { - name "Test pipeline with --pseudo_aligner kallisto --skip_qc --skip_alignment" + name "Test pipeline with Kallisto, skipping both QC and alignment" script "../main.nf" tag "RNASEQ" tag "PIPELINE" - test("Parameters: --pseudo_aligner kallisto --skip_qc --skip_alignment") { + test("Params: --pseudo_aligner kallisto --skip_qc --skip_alignment") { when { params { diff --git a/tests/min_mapped_reads.nf.test b/tests/min_mapped_reads.nf.test index 7f0f5e60c..95e8e7028 100644 --- a/tests/min_mapped_reads.nf.test +++ b/tests/min_mapped_reads.nf.test @@ -1,11 +1,11 @@ nextflow_pipeline { - name "Test pipeline with --min_mapped_reads 90" + name "Test pipeline with a minimum mapped read threshold of 90" script "../main.nf" tag "RNASEQ" tag "PIPELINE" - test("Parameters: --min_mapped_reads 90") { + test("Params: --min_mapped_reads 90") { when { params { diff --git a/tests/remove_ribo_rna.nf.test b/tests/remove_ribo_rna.nf.test index 103bb187c..a439588de 100644 --- a/tests/remove_ribo_rna.nf.test +++ b/tests/remove_ribo_rna.nf.test @@ -1,11 +1,11 @@ nextflow_pipeline { - name "Test pipeline with --remove_ribo_rna" + name "Test pipeline with ribosomal RNA removal" script "../main.nf" tag "RNASEQ" tag "PIPELINE" - test("Parameters: --remove_ribo_rna") { + test("Params: --remove_ribo_rna") { when { params { diff --git a/tests/salmon.nf.test b/tests/salmon.nf.test index 329c68baa..36373dd9d 100644 --- a/tests/salmon.nf.test +++ b/tests/salmon.nf.test @@ -1,11 +1,11 @@ nextflow_pipeline { - name "Test pipeline with --pseudo_aligner salmon --skip_qc --skip_alignment" + name "Test pipeline with Salmon, skipping both QC and alignment" script "../main.nf" tag "RNASEQ" tag "PIPELINE" - test("Parameters: --pseudo_aligner salmon --skip_qc --skip_alignment") { + test("Params: --pseudo_aligner salmon --skip_qc --skip_alignment") { when { params { diff --git a/tests/skip_qc.nf.test b/tests/skip_qc.nf.test index c4f7c1c5b..bd5918083 100644 --- a/tests/skip_qc.nf.test +++ b/tests/skip_qc.nf.test @@ -1,11 +1,11 @@ nextflow_pipeline { - name "Test pipeline with --skip_qc" + name "Test pipeline by skipping QC options" script "../main.nf" tag "RNASEQ" tag "PIPELINE" - test("Parameters: --skip_qc") { + test("Params: --skip_qc") { when { params { diff --git a/tests/skip_trimming.nf.test b/tests/skip_trimming.nf.test index c64702082..4f656d016 100644 --- a/tests/skip_trimming.nf.test +++ b/tests/skip_trimming.nf.test @@ -1,11 +1,11 @@ nextflow_pipeline { - name "Test pipeline with --skip_trimming" + name "Test pipeline by skipping trimming options" script "../main.nf" tag "RNASEQ" tag "PIPELINE" - test("Parameters: --skip_trimming") { + test("Params: --skip_trimming") { when { params { From 7e6827e420585f59edf1e22c02b440f51c8eec61 Mon Sep 17 00:00:00 2001 From: Harshil Patel Date: Thu, 20 Jun 2024 12:32:33 +0100 Subject: [PATCH 395/634] Move Conda dependencies for local modules to individual environment file --- modules/local/deseq2_qc/environment.yml | 15 +++++++++++++++ modules/local/deseq2_qc/main.nf | 2 +- modules/local/gtf2bed/environment.yml | 7 +++++++ modules/local/gtf2bed/main.nf | 2 +- modules/local/gtf_filter/environment.yml | 7 +++++++ modules/local/gtf_filter/main.nf | 2 +- .../local/multiqc_custom_biotype/environment.yml | 7 +++++++ modules/local/multiqc_custom_biotype/main.nf | 2 +- .../environment.yml | 7 +++++++ .../preprocess_transcripts_fasta_gencode/main.nf | 2 +- modules/local/rsem_merge_counts/environment.yml | 7 +++++++ modules/local/rsem_merge_counts/main.nf | 2 +- modules/local/star_align_igenomes/environment.yml | 9 +++++++++ modules/local/star_align_igenomes/main.nf | 2 +- .../local/star_align_igenomes/tests/main.nf.test | 1 - .../star_genomegenerate_igenomes/environment.yml | 9 +++++++++ .../local/star_genomegenerate_igenomes/main.nf | 2 +- 17 files changed, 76 insertions(+), 9 deletions(-) create mode 100644 modules/local/deseq2_qc/environment.yml create mode 100644 modules/local/gtf2bed/environment.yml create mode 100644 modules/local/gtf_filter/environment.yml create mode 100644 modules/local/multiqc_custom_biotype/environment.yml create mode 100644 modules/local/preprocess_transcripts_fasta_gencode/environment.yml create mode 100644 modules/local/rsem_merge_counts/environment.yml create mode 100644 modules/local/star_align_igenomes/environment.yml create mode 100644 modules/local/star_genomegenerate_igenomes/environment.yml diff --git a/modules/local/deseq2_qc/environment.yml b/modules/local/deseq2_qc/environment.yml new file mode 100644 index 000000000..9daad310d --- /dev/null +++ b/modules/local/deseq2_qc/environment.yml @@ -0,0 +1,15 @@ +name: deseq2_qc +channels: + - conda-forge + - bioconda + - defaults +dependencies: + - conda-forge::r-base + - conda-forge::r-optparse + - conda-forge::r-ggplot2 + - conda-forge::r-rcolorbrewer + - conda-forge::r-pheatmap + - bioconda::bioconductor-deseq2 + - bioconda::bioconductor-biocparallel + - bioconda::bioconductor-tximport + - bioconda::bioconductor-complexheatmap diff --git a/modules/local/deseq2_qc/main.nf b/modules/local/deseq2_qc/main.nf index 466194934..7be6836f6 100644 --- a/modules/local/deseq2_qc/main.nf +++ b/modules/local/deseq2_qc/main.nf @@ -3,7 +3,7 @@ process DESEQ2_QC { // (Bio)conda packages have intentionally not been pinned to a specific version // This was to avoid the pipeline failing due to package conflicts whilst creating the environment when using -profile conda - conda "conda-forge::r-base bioconda::bioconductor-deseq2 bioconda::bioconductor-biocparallel bioconda::bioconductor-tximport bioconda::bioconductor-complexheatmap conda-forge::r-optparse conda-forge::r-ggplot2 conda-forge::r-rcolorbrewer conda-forge::r-pheatmap" + conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/mulled-v2-8849acf39a43cdd6c839a369a74c0adc823e2f91:ab110436faf952a33575c64dd74615a84011450b-0' : 'biocontainers/mulled-v2-8849acf39a43cdd6c839a369a74c0adc823e2f91:ab110436faf952a33575c64dd74615a84011450b-0' }" diff --git a/modules/local/gtf2bed/environment.yml b/modules/local/gtf2bed/environment.yml new file mode 100644 index 000000000..3c009b31b --- /dev/null +++ b/modules/local/gtf2bed/environment.yml @@ -0,0 +1,7 @@ +name: gtf2bed +channels: + - conda-forge + - bioconda + - defaults +dependencies: + - conda-forge::perl=5.26.2 diff --git a/modules/local/gtf2bed/main.nf b/modules/local/gtf2bed/main.nf index 8a4bae8ff..464d7f819 100644 --- a/modules/local/gtf2bed/main.nf +++ b/modules/local/gtf2bed/main.nf @@ -2,7 +2,7 @@ process GTF2BED { tag "$gtf" label 'process_low' - conda "conda-forge::perl=5.26.2" + conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/perl:5.26.2' : 'biocontainers/perl:5.26.2' }" diff --git a/modules/local/gtf_filter/environment.yml b/modules/local/gtf_filter/environment.yml new file mode 100644 index 000000000..c8b5ca202 --- /dev/null +++ b/modules/local/gtf_filter/environment.yml @@ -0,0 +1,7 @@ +name: gtf_filter +channels: + - conda-forge + - bioconda + - defaults +dependencies: + - conda-forge::python=3.9.5 diff --git a/modules/local/gtf_filter/main.nf b/modules/local/gtf_filter/main.nf index d14e8ff42..39b215712 100644 --- a/modules/local/gtf_filter/main.nf +++ b/modules/local/gtf_filter/main.nf @@ -1,7 +1,7 @@ process GTF_FILTER { tag "$fasta" - conda "conda-forge::python=3.9.5" + conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/python:3.9--1' : 'biocontainers/python:3.9--1' }" diff --git a/modules/local/multiqc_custom_biotype/environment.yml b/modules/local/multiqc_custom_biotype/environment.yml new file mode 100644 index 000000000..7a6b5722e --- /dev/null +++ b/modules/local/multiqc_custom_biotype/environment.yml @@ -0,0 +1,7 @@ +name: multiqc_custom_biotype +channels: + - conda-forge + - bioconda + - defaults +dependencies: + - conda-forge::python=3.9.5 diff --git a/modules/local/multiqc_custom_biotype/main.nf b/modules/local/multiqc_custom_biotype/main.nf index 9c0fe94eb..d102f67d9 100644 --- a/modules/local/multiqc_custom_biotype/main.nf +++ b/modules/local/multiqc_custom_biotype/main.nf @@ -1,7 +1,7 @@ process MULTIQC_CUSTOM_BIOTYPE { tag "$meta.id" - conda "conda-forge::python=3.9.5" + conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/python:3.9--1' : 'biocontainers/python:3.9--1' }" diff --git a/modules/local/preprocess_transcripts_fasta_gencode/environment.yml b/modules/local/preprocess_transcripts_fasta_gencode/environment.yml new file mode 100644 index 000000000..06e4d9658 --- /dev/null +++ b/modules/local/preprocess_transcripts_fasta_gencode/environment.yml @@ -0,0 +1,7 @@ +name: preprocess_transcripts_fasta_gencode +channels: + - conda-forge + - bioconda + - defaults +dependencies: + - conda-forge::sed=4.7 diff --git a/modules/local/preprocess_transcripts_fasta_gencode/main.nf b/modules/local/preprocess_transcripts_fasta_gencode/main.nf index 41f1d42f6..9d530b77d 100644 --- a/modules/local/preprocess_transcripts_fasta_gencode/main.nf +++ b/modules/local/preprocess_transcripts_fasta_gencode/main.nf @@ -1,7 +1,7 @@ process PREPROCESS_TRANSCRIPTS_FASTA_GENCODE { tag "$fasta" - conda "conda-forge::sed=4.7" + conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/ubuntu:20.04' : 'nf-core/ubuntu:20.04' }" diff --git a/modules/local/rsem_merge_counts/environment.yml b/modules/local/rsem_merge_counts/environment.yml new file mode 100644 index 000000000..eeeb3329a --- /dev/null +++ b/modules/local/rsem_merge_counts/environment.yml @@ -0,0 +1,7 @@ +name: rsem_merge_counts +channels: + - conda-forge + - bioconda + - defaults +dependencies: + - conda-forge::sed=4.7 diff --git a/modules/local/rsem_merge_counts/main.nf b/modules/local/rsem_merge_counts/main.nf index 3f226f54d..b21ca4aa4 100644 --- a/modules/local/rsem_merge_counts/main.nf +++ b/modules/local/rsem_merge_counts/main.nf @@ -1,7 +1,7 @@ process RSEM_MERGE_COUNTS { label "process_medium" - conda "conda-forge::sed=4.7" + conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/ubuntu:20.04' : 'nf-core/ubuntu:20.04' }" diff --git a/modules/local/star_align_igenomes/environment.yml b/modules/local/star_align_igenomes/environment.yml new file mode 100644 index 000000000..0d92f8dd5 --- /dev/null +++ b/modules/local/star_align_igenomes/environment.yml @@ -0,0 +1,9 @@ +name: star_align_igenomes +channels: + - conda-forge + - bioconda + - defaults +dependencies: + - bioconda::star=2.6.1d + - bioconda::samtools=1.10 + - conda-forge::gawk=5.1.0 diff --git a/modules/local/star_align_igenomes/main.nf b/modules/local/star_align_igenomes/main.nf index 32f3cac29..04068f142 100644 --- a/modules/local/star_align_igenomes/main.nf +++ b/modules/local/star_align_igenomes/main.nf @@ -2,7 +2,7 @@ process STAR_ALIGN_IGENOMES { tag "$meta.id" label 'process_high' - conda "bioconda::star=2.6.1d bioconda::samtools=1.10 conda-forge::gawk=5.1.0" + conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/mulled-v2-1fa26d1ce03c295fe2fdcf85831a92fbcbd7e8c2:59cdd445419f14abac76b31dd0d71217994cbcc9-0' : 'biocontainers/mulled-v2-1fa26d1ce03c295fe2fdcf85831a92fbcbd7e8c2:59cdd445419f14abac76b31dd0d71217994cbcc9-0' }" diff --git a/modules/local/star_align_igenomes/tests/main.nf.test b/modules/local/star_align_igenomes/tests/main.nf.test index 088796410..91be69f01 100644 --- a/modules/local/star_align_igenomes/tests/main.nf.test +++ b/modules/local/star_align_igenomes/tests/main.nf.test @@ -3,7 +3,6 @@ nextflow_process { name "Test Process STAR_ALIGN_IGENOMES" script "../main.nf" process "STAR_ALIGN_IGENOMES" - tag "STAR_ALIGN_IGENOMES" tag "STAR_GENOMEGENERATE_IGENOMES" setup { diff --git a/modules/local/star_genomegenerate_igenomes/environment.yml b/modules/local/star_genomegenerate_igenomes/environment.yml new file mode 100644 index 000000000..c3c6c2481 --- /dev/null +++ b/modules/local/star_genomegenerate_igenomes/environment.yml @@ -0,0 +1,9 @@ +name: star_genomegenerate_igenomes +channels: + - conda-forge + - bioconda + - defaults +dependencies: + - bioconda::star=2.6.1d + - bioconda::samtools=1.10 + - conda-forge::gawk=5.1.0 diff --git a/modules/local/star_genomegenerate_igenomes/main.nf b/modules/local/star_genomegenerate_igenomes/main.nf index 814bc7c8c..7b5115a6c 100644 --- a/modules/local/star_genomegenerate_igenomes/main.nf +++ b/modules/local/star_genomegenerate_igenomes/main.nf @@ -2,7 +2,7 @@ process STAR_GENOMEGENERATE_IGENOMES { tag "$fasta" label 'process_high' - conda "bioconda::star=2.6.1d bioconda::samtools=1.10 conda-forge::gawk=5.1.0" + conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/mulled-v2-1fa26d1ce03c295fe2fdcf85831a92fbcbd7e8c2:59cdd445419f14abac76b31dd0d71217994cbcc9-0' : 'biocontainers/mulled-v2-1fa26d1ce03c295fe2fdcf85831a92fbcbd7e8c2:59cdd445419f14abac76b31dd0d71217994cbcc9-0' }" From 928a30ef714a3d073ede26943d69b347c65b3bd2 Mon Sep 17 00:00:00 2001 From: Harshil Patel Date: Thu, 20 Jun 2024 12:34:05 +0100 Subject: [PATCH 396/634] Update CHANGELOG --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2f8f5b273..651d6fe8c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -79,6 +79,7 @@ Thank you to everyone else that has contributed by reporting bugs, enhancements - [PR #1312](https://github.com/nf-core/rnaseq/pull/1312) - Fix issues with unzipping of GTF/ GFF files without absolute paths - [PR #1322](https://github.com/nf-core/rnaseq/pull/1322) - Use pre-built Github Action to detect nf-test changes - [PR #1306](https://github.com/nf-core/rnaseq/pull/1306) - Overhaul strandedness detection / comparison +- [PR #1326](https://github.com/nf-core/rnaseq/pull/1326) - Move Conda dependencies for local modules to individual environment file ### Parameters From 4cd703730ba575a58ab9b1d1efee06d734a4dc3d Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Thu, 20 Jun 2024 12:38:18 +0100 Subject: [PATCH 397/634] appease prettier --- workflows/rnaseq/assets/multiqc/multiqc_config.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/workflows/rnaseq/assets/multiqc/multiqc_config.yml b/workflows/rnaseq/assets/multiqc/multiqc_config.yml index 4a00d844e..0a977e733 100644 --- a/workflows/rnaseq/assets/multiqc/multiqc_config.yml +++ b/workflows/rnaseq/assets/multiqc/multiqc_config.yml @@ -169,8 +169,7 @@ custom_data: format: "{:.2f}" fail_strand_check: section_name: "Strandedness Checks" - description: "

    The strandedness used for analysis in this workflow can either be provided by the user or automatically inferred by Salmon using a sample of reads. In both cases, strandedness is verified at the end of the workflow using RSeQC's infer_experiment.py on genomic alignments. In this table, a pass indicates a match between the supplied strandedness (or that inferred by Salmon) and RSeQC results. A fail indicates a mismatch or 'undetermined' strandedness. 'Undetermined' strandedness can signal QC issues, including potential genomic DNA contamination.

    -

    Note: Rows are duplicated for an 'auto' setting to allow comparison of statistics between inference methods.

    " + description: "

    The strandedness used for analysis in this workflow can either be provided by the user or automatically inferred by Salmon using a sample of reads. In both cases, strandedness is verified at the end of the workflow using RSeQC's infer_experiment.py on genomic alignments. In this table, a pass indicates a match between the supplied strandedness (or that inferred by Salmon) and RSeQC results. A fail indicates a mismatch or 'undetermined' strandedness. 'Undetermined' strandedness can signal QC issues, including potential genomic DNA contamination.

    Note: Rows are duplicated for an 'auto' setting to allow comparison of statistics between inference methods.

    " plot_type: "table" pconfig: id: "fail_strand_check_table" From 18f59c77d946625ae47f67d5a5af26083b17c041 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Thu, 20 Jun 2024 13:03:28 +0100 Subject: [PATCH 398/634] Update usage --- docs/usage.md | 45 +++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 43 insertions(+), 2 deletions(-) diff --git a/docs/usage.md b/docs/usage.md index 6afb269ce..cf9c607dc 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -27,9 +27,50 @@ CONTROL_REP1,AEG588A1_S1_L003_R1_001.fastq.gz,AEG588A1_S1_L003_R2_001.fastq.gz,a CONTROL_REP1,AEG588A1_S1_L004_R1_001.fastq.gz,AEG588A1_S1_L004_R2_001.fastq.gz,auto ``` -### Strandedness prediction +### Strandedness Prediction -If you set the strandedness value to `auto` the pipeline will sub-sample the input FastQ files to 1 million reads, use Salmon Quant to infer the strandedness automatically and then propagate this information to the remainder of the pipeline. If the strandedness has been inferred or provided incorrectly the sample will be flagged in the 'Strandedness Checks' section of the MultiQC report, so please be sure to check when looking at the QC for your samples. +If you set the strandedness value to `auto`, the pipeline will sub-sample the input FastQ files to 1 million reads, use Salmon Quant to automatically infer the strandedness, and then propagate this information through the rest of the pipeline. This behavior is controlled by the `--stranded_threshold` and `--unstranded_threshold` parameters, which are set to 0.8 and 0.1 by default, respectively. This means: + +- **Forward stranded:** At least 80% of the fragments are in the 'forward' orientation. +- **Unstranded:** The forward and reverse fractions differ by less than 10%. +- **Undetermined:** Samples that do not meet either criterion, possibly indicating issues such as genomic DNA contamination. + +**Note:** These thresholds apply to both the strandedness inferred from Salmon outputs for input to the pipeline and how strandedness is inferred from RSeQC results using pipeline outputs. + +#### Usage Examples + +1. **Forward Stranded Sample:** + + - Forward fraction: 0.85 + - Reverse fraction: 0.15 + - **Classification:** Forward stranded + +2. **Reverse Stranded Sample:** + + - Forward fraction: 0.1 + - Reverse fraction: 0.9 + - **Classification:** Reverse stranded + +3. **Unstranded Sample:** + + - Forward fraction: 0.45 + - Reverse fraction: 0.55 + - **Classification:** Unstranded + +4. **Undetermined Sample:** + - Forward fraction: 0.6 + - Reverse fraction: 0.4 + - **Classification:** Undetermined + +You can control the stringency of this behavior with `--stranded_threshold` and `--unstranded_threshold`. + +#### Errors and Reporting + +The results of strandedness inference are displayed in the MultiQC report under 'Strandedness Checks'. This shows any provided strandedness and the results inferred by both Salmon (when strandedness is set to 'auto') and RSeQC. Mismatches between input strandedness (explicitly provided by the user or inferred by Salmon) and output strandedness from RSeQC are marked as fails. For example, if a user specifies 'forward' as strandedness for a library that is actually reverse stranded, this is marked as a fail. + +![MultiQC - Strand check table](images/mqc_strand_check.png) + +Be sure to check the strandedness report when reviewing the QC for your samples. ### Full samplesheet From 178c45a9c06cf12a123b1f4461ef81b175e95b86 Mon Sep 17 00:00:00 2001 From: Harshil Patel Date: Thu, 20 Jun 2024 14:27:20 +0100 Subject: [PATCH 399/634] Remove tags from all nf-test files --- .../star_align_igenomes/tests/main.nf.test | 1 - .../nf-core/custom/tx2gene/tests/main.nf.test | 1 - modules/nf-core/hisat2/align/tests/main.nf.test | 2 -- modules/nf-core/hisat2/build/tests/main.nf.test | 1 - .../nf-core/kallisto/quant/tests/main.nf.test | 1 - .../rsem/calculateexpression/tests/main.nf.test | 1 - modules/nf-core/salmon/quant/tests/main.nf.test | 1 - modules/nf-core/star/align/tests/main.nf.test | 1 - .../summarizedexperiment/tests/main.nf.test | 3 --- .../nf-core/tximeta/tximport/tests/main.nf.test | 2 -- .../local/align_star/tests/main.nf.test | 5 ----- .../local/prepare_genome/tests/main.nf.test | 17 ----------------- .../local/quantify_rsem/tests/main.nf.test | 4 ---- .../tests/main.function.nf.test | 1 - .../main.pipeline_completion.workflow.nf.test | 1 - .../tests/main.nf.test | 3 --- .../tests/main.nf.test | 3 --- .../nf-core/bam_rseqc/tests/main.nf.test | 8 -------- .../bam_sort_stats_samtools/tests/main.nf.test | 3 --- .../bam_stats_samtools/tests/main.nf.test | 3 --- .../tests/main.nf.test | 2 -- .../fastq_align_hisat2/tests/main.nf.test | 4 ---- .../tests/main.nf.test | 3 --- .../tests/main.nf.test | 3 --- .../tests/main.nf.test | 3 --- .../tests/main.nf.test | 7 ------- .../tests/main.function.nf.test | 1 - .../tests/main.function.nf.test | 3 +-- tests/default.nf.test | 2 -- tests/featurecounts_group_type.nf.test | 2 -- tests/kallisto.nf.test | 2 -- tests/min_mapped_reads.nf.test | 2 -- tests/remove_ribo_rna.nf.test | 2 -- tests/salmon.nf.test | 2 -- tests/skip_qc.nf.test | 2 -- tests/skip_trimming.nf.test | 2 -- 36 files changed, 1 insertion(+), 103 deletions(-) diff --git a/modules/local/star_align_igenomes/tests/main.nf.test b/modules/local/star_align_igenomes/tests/main.nf.test index 91be69f01..8255c1732 100644 --- a/modules/local/star_align_igenomes/tests/main.nf.test +++ b/modules/local/star_align_igenomes/tests/main.nf.test @@ -3,7 +3,6 @@ nextflow_process { name "Test Process STAR_ALIGN_IGENOMES" script "../main.nf" process "STAR_ALIGN_IGENOMES" - tag "STAR_GENOMEGENERATE_IGENOMES" setup { run("STAR_GENOMEGENERATE_IGENOMES") { diff --git a/modules/nf-core/custom/tx2gene/tests/main.nf.test b/modules/nf-core/custom/tx2gene/tests/main.nf.test index a3f0d0d64..8a7a6d1b2 100644 --- a/modules/nf-core/custom/tx2gene/tests/main.nf.test +++ b/modules/nf-core/custom/tx2gene/tests/main.nf.test @@ -3,7 +3,6 @@ nextflow_process { name "Test Process CUSTOM_TX2GENE" script "../main.nf" process "CUSTOM_TX2GENE" - tag "UNTAR" setup { diff --git a/modules/nf-core/hisat2/align/tests/main.nf.test b/modules/nf-core/hisat2/align/tests/main.nf.test index 660647edb..251fd711e 100644 --- a/modules/nf-core/hisat2/align/tests/main.nf.test +++ b/modules/nf-core/hisat2/align/tests/main.nf.test @@ -3,8 +3,6 @@ nextflow_process { name "Test Process HISAT2_ALIGN" script "../main.nf" process "HISAT2_ALIGN" - tag "HISAT2_BUILD" - tag "HISAT2_EXTRACTSPLICESITES" test("Single-End") { diff --git a/modules/nf-core/hisat2/build/tests/main.nf.test b/modules/nf-core/hisat2/build/tests/main.nf.test index 05b71f08c..240b73de1 100644 --- a/modules/nf-core/hisat2/build/tests/main.nf.test +++ b/modules/nf-core/hisat2/build/tests/main.nf.test @@ -3,7 +3,6 @@ nextflow_process { name "Test Process HISAT2_BUILD" script "../main.nf" process "HISAT2_BUILD" - tag "HISAT2_EXTRACTSPLICESITES" test("Should run without failures") { diff --git a/modules/nf-core/kallisto/quant/tests/main.nf.test b/modules/nf-core/kallisto/quant/tests/main.nf.test index dec8b8d4b..cb7e480a1 100644 --- a/modules/nf-core/kallisto/quant/tests/main.nf.test +++ b/modules/nf-core/kallisto/quant/tests/main.nf.test @@ -3,7 +3,6 @@ nextflow_process { name "Test Process KALLISTO_QUANT" script "../main.nf" process "KALLISTO_QUANT" - tag "KALLISTO_INDEX" setup { run("KALLISTO_INDEX") { diff --git a/modules/nf-core/rsem/calculateexpression/tests/main.nf.test b/modules/nf-core/rsem/calculateexpression/tests/main.nf.test index 445e58d85..3ab43eb1a 100644 --- a/modules/nf-core/rsem/calculateexpression/tests/main.nf.test +++ b/modules/nf-core/rsem/calculateexpression/tests/main.nf.test @@ -3,7 +3,6 @@ nextflow_process { name "Test Process RSEM_CALCULATEEXPRESSION" script "../main.nf" process "RSEM_CALCULATEEXPRESSION" - tag "RSEM_PREPAREREFERENCE" config "./nextflow.config" test("homo_sapiens") { diff --git a/modules/nf-core/salmon/quant/tests/main.nf.test b/modules/nf-core/salmon/quant/tests/main.nf.test index dbaebedfc..1bd264e96 100644 --- a/modules/nf-core/salmon/quant/tests/main.nf.test +++ b/modules/nf-core/salmon/quant/tests/main.nf.test @@ -4,7 +4,6 @@ nextflow_process { script "../main.nf" process "SALMON_QUANT" config "./nextflow.config" - tag "SALMON_INDEX" setup { run("SALMON_INDEX") { diff --git a/modules/nf-core/star/align/tests/main.nf.test b/modules/nf-core/star/align/tests/main.nf.test index 8b34ae793..4cd6f2a52 100644 --- a/modules/nf-core/star/align/tests/main.nf.test +++ b/modules/nf-core/star/align/tests/main.nf.test @@ -3,7 +3,6 @@ nextflow_process { name "Test Process STAR_ALIGN" script "../main.nf" process "STAR_ALIGN" - tag "STAR_GENOMEGENERATE" setup { run("STAR_GENOMEGENERATE") { diff --git a/modules/nf-core/summarizedexperiment/summarizedexperiment/tests/main.nf.test b/modules/nf-core/summarizedexperiment/summarizedexperiment/tests/main.nf.test index 4dda21181..8faa18afb 100644 --- a/modules/nf-core/summarizedexperiment/summarizedexperiment/tests/main.nf.test +++ b/modules/nf-core/summarizedexperiment/summarizedexperiment/tests/main.nf.test @@ -3,9 +3,6 @@ nextflow_process { name "Test Process SUMMARIZEDEXPERIMENT_SUMMARIZEDEXPERIMENT" script "../main.nf" process "SUMMARIZEDEXPERIMENT_SUMMARIZEDEXPERIMENT" - tag "UNTAR" - tag "CUSTOM_TX2GENE" - tag "TXIMETA_TXIMPORT" setup { diff --git a/modules/nf-core/tximeta/tximport/tests/main.nf.test b/modules/nf-core/tximeta/tximport/tests/main.nf.test index 8f27bc928..782030fb8 100644 --- a/modules/nf-core/tximeta/tximport/tests/main.nf.test +++ b/modules/nf-core/tximeta/tximport/tests/main.nf.test @@ -3,8 +3,6 @@ nextflow_process { name "Test Process TXIMETA_TXIMPORT" script "../main.nf" process "TXIMETA_TXIMPORT" - tag "UNTAR" - tag "CUSTOM_TX2GENE" test("saccharomyces_cerevisiae - kallisto - gtf") { diff --git a/subworkflows/local/align_star/tests/main.nf.test b/subworkflows/local/align_star/tests/main.nf.test index b5ceece0b..2b98dffbf 100644 --- a/subworkflows/local/align_star/tests/main.nf.test +++ b/subworkflows/local/align_star/tests/main.nf.test @@ -4,11 +4,6 @@ nextflow_workflow { script "../main.nf" workflow "ALIGN_STAR" config "./nextflow.config" - tag "STAR_GENOMEGENERATE" - tag "STAR_GENOMEGENERATE_IGENOMES" - tag "STAR_ALIGN" - tag "STAR_ALIGN_IGENOMES" - tag "BAM_SORT_STATS_SAMTOOLS" test("star - no igenomes") { diff --git a/subworkflows/local/prepare_genome/tests/main.nf.test b/subworkflows/local/prepare_genome/tests/main.nf.test index 8291d9c41..8c5cc5b6b 100644 --- a/subworkflows/local/prepare_genome/tests/main.nf.test +++ b/subworkflows/local/prepare_genome/tests/main.nf.test @@ -4,23 +4,6 @@ nextflow_workflow { script "../main.nf" workflow "PREPARE_GENOME" config "./nextflow.config" - tag "BBMAP_BBSPLIT" - tag "CUSTOM_CATADDITIONALFASTA" - tag "CUSTOM_GETCHROMSIZES" - tag "GFFREAD" - tag "GTF2BED" - tag "GTF_FILTER" - tag "GUNZIP" - tag "HISAT2_BUILD" - tag "HISAT2_EXTRACTSPLICESITES" - tag "KALLISTO_INDEX" - tag "PREPROCESS_TRANSCRIPTS_FASTA_GENCODE" - tag "RSEM_PREPAREREFERENCE" - tag "SALMON_INDEX" - tag "SORTMERNA" - tag "STAR_GENOMEGENERATE" - tag "STAR_GENOMEGENERATE_IGENOMES" - tag "UNTAR" test("default options") { diff --git a/subworkflows/local/quantify_rsem/tests/main.nf.test b/subworkflows/local/quantify_rsem/tests/main.nf.test index ab62162d0..818282af3 100644 --- a/subworkflows/local/quantify_rsem/tests/main.nf.test +++ b/subworkflows/local/quantify_rsem/tests/main.nf.test @@ -4,10 +4,6 @@ nextflow_workflow { script "../main.nf" workflow "QUANTIFY_RSEM" config "./nextflow.config" - tag "RSEM_PREPAREREFERENCE" - tag "RSEM_CALCULATEEXPRESSION" - tag "RSEM_MERGE_COUNTS" - tag "BAM_SORT_STATS_SAMTOOLS" test("homo_sapiens") { diff --git a/subworkflows/local/utils_nfcore_rnaseq_pipeline/tests/main.function.nf.test b/subworkflows/local/utils_nfcore_rnaseq_pipeline/tests/main.function.nf.test index 2e71f9990..c809b2117 100644 --- a/subworkflows/local/utils_nfcore_rnaseq_pipeline/tests/main.function.nf.test +++ b/subworkflows/local/utils_nfcore_rnaseq_pipeline/tests/main.function.nf.test @@ -2,7 +2,6 @@ nextflow_function { name "Test Functions" script "../main.nf" - tag "UTILS_NFCORE_RNASEQ_PIPELINE" test("Test Function checkSamplesAfterGrouping success") { diff --git a/subworkflows/local/utils_nfcore_rnaseq_pipeline/tests/main.pipeline_completion.workflow.nf.test b/subworkflows/local/utils_nfcore_rnaseq_pipeline/tests/main.pipeline_completion.workflow.nf.test index c7e862c38..ea784ea01 100644 --- a/subworkflows/local/utils_nfcore_rnaseq_pipeline/tests/main.pipeline_completion.workflow.nf.test +++ b/subworkflows/local/utils_nfcore_rnaseq_pipeline/tests/main.pipeline_completion.workflow.nf.test @@ -3,7 +3,6 @@ nextflow_workflow { name "Test Workflow PIPELINE_COMPLETION" script "../main.nf" workflow "PIPELINE_COMPLETION" - tag "UTILS_NFCORE_RNASEQ_PIPELINE" test("test PIPELINE_COMPLETION successfully completes") { diff --git a/subworkflows/nf-core/bam_dedup_stats_samtools_umitools/tests/main.nf.test b/subworkflows/nf-core/bam_dedup_stats_samtools_umitools/tests/main.nf.test index c91f6c180..1ef1f7fe7 100644 --- a/subworkflows/nf-core/bam_dedup_stats_samtools_umitools/tests/main.nf.test +++ b/subworkflows/nf-core/bam_dedup_stats_samtools_umitools/tests/main.nf.test @@ -3,9 +3,6 @@ nextflow_workflow { name "Test Workflow BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS" script "../main.nf" workflow "BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS" - tag "UMITOOLS_DEDUP" - tag "SAMTOOLS_INDEX" - tag "BAM_STATS_SAMTOOLS" test("sarscov2_bam_bai") { diff --git a/subworkflows/nf-core/bam_markduplicates_picard/tests/main.nf.test b/subworkflows/nf-core/bam_markduplicates_picard/tests/main.nf.test index 85c4b03c0..7ecf3fe40 100644 --- a/subworkflows/nf-core/bam_markduplicates_picard/tests/main.nf.test +++ b/subworkflows/nf-core/bam_markduplicates_picard/tests/main.nf.test @@ -3,9 +3,6 @@ nextflow_workflow { name "Test Workflow BAM_MARKDUPLICATES_PICARD" script "../main.nf" workflow "BAM_MARKDUPLICATES_PICARD" - tag "PICARD_MARKDUPLICATES" - tag "SAMTOOLS_INDEX" - tag "BAM_STATS_SAMTOOLS" test("sarscov2 - bam") { diff --git a/subworkflows/nf-core/bam_rseqc/tests/main.nf.test b/subworkflows/nf-core/bam_rseqc/tests/main.nf.test index 32e48d338..eb87c27c9 100644 --- a/subworkflows/nf-core/bam_rseqc/tests/main.nf.test +++ b/subworkflows/nf-core/bam_rseqc/tests/main.nf.test @@ -3,14 +3,6 @@ nextflow_workflow { name "Test Workflow BAM_RSEQC" script "../main.nf" workflow "BAM_RSEQC" - tag "RSEQC_BAMSTAT" - tag "RSEQC_INNERDISTANCE" - tag "RSEQC_INFEREXPERIMENT" - tag "RSEQC_JUNCTIONANNOTATION" - tag "RSEQC_JUNCTIONSATURATION" - tag "RSEQC_READDISTRIBUTION" - tag "RSEQC_READDUPLICATION" - tag "RSEQC_TIN" test("sarscov2 paired-end [bam]") { diff --git a/subworkflows/nf-core/bam_sort_stats_samtools/tests/main.nf.test b/subworkflows/nf-core/bam_sort_stats_samtools/tests/main.nf.test index 957effa3a..2045512c8 100644 --- a/subworkflows/nf-core/bam_sort_stats_samtools/tests/main.nf.test +++ b/subworkflows/nf-core/bam_sort_stats_samtools/tests/main.nf.test @@ -3,9 +3,6 @@ nextflow_workflow { name "Test Workflow BAM_SORT_STATS_SAMTOOLS" script "../main.nf" workflow "BAM_SORT_STATS_SAMTOOLS" - tag "SAMTOOLS_SORT" - tag "SAMTOOLS_INDEX" - tag "BAM_STATS_SAMTOOLS" test("test_bam_sort_stats_samtools_single_end") { diff --git a/subworkflows/nf-core/bam_stats_samtools/tests/main.nf.test b/subworkflows/nf-core/bam_stats_samtools/tests/main.nf.test index d2c9752bb..1eabc2b36 100644 --- a/subworkflows/nf-core/bam_stats_samtools/tests/main.nf.test +++ b/subworkflows/nf-core/bam_stats_samtools/tests/main.nf.test @@ -3,9 +3,6 @@ nextflow_workflow { name "Test Workflow BAM_STATS_SAMTOOLS" script "../main.nf" workflow "BAM_STATS_SAMTOOLS" - tag "SAMTOOLS_STATS" - tag "SAMTOOLS_IDXSTATS" - tag "SAMTOOLS_FLAGSTAT" test("test_bam_stats_samtools_single_end") { diff --git a/subworkflows/nf-core/bedgraph_bedclip_bedgraphtobigwig/tests/main.nf.test b/subworkflows/nf-core/bedgraph_bedclip_bedgraphtobigwig/tests/main.nf.test index fa1f2364c..94b66019e 100644 --- a/subworkflows/nf-core/bedgraph_bedclip_bedgraphtobigwig/tests/main.nf.test +++ b/subworkflows/nf-core/bedgraph_bedclip_bedgraphtobigwig/tests/main.nf.test @@ -4,8 +4,6 @@ nextflow_workflow { script "../main.nf" workflow "BEDGRAPH_BEDCLIP_BEDGRAPHTOBIGWIG" config "./nextflow.config" - tag "UCSC_BEDCLIP" - tag "UCSC_BEDGRAPHTOBIGWIG" test("sarscov2 [bedgraph] [genome_sizes]") { diff --git a/subworkflows/nf-core/fastq_align_hisat2/tests/main.nf.test b/subworkflows/nf-core/fastq_align_hisat2/tests/main.nf.test index ab09c6ca2..b04fc1162 100644 --- a/subworkflows/nf-core/fastq_align_hisat2/tests/main.nf.test +++ b/subworkflows/nf-core/fastq_align_hisat2/tests/main.nf.test @@ -4,10 +4,6 @@ nextflow_workflow { script "../main.nf" workflow "FASTQ_ALIGN_HISAT2" config "./nextflow.config" - tag "HISAT2_EXTRACTSPLICESITES" - tag "HISAT2_BUILD" - tag "HISAT2_ALIGN" - tag "BAM_SORT_STATS_SAMTOOLS" setup { run("HISAT2_EXTRACTSPLICESITES") { diff --git a/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/main.nf.test b/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/main.nf.test index 72029590e..165dc7675 100644 --- a/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/main.nf.test +++ b/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/main.nf.test @@ -4,9 +4,6 @@ nextflow_workflow { script "../main.nf" workflow "FASTQ_FASTQC_UMITOOLS_FASTP" config './nextflow.config' - tag "FASTQC" - tag "UMITOOLS_EXTRACT" - tag "FASTP" test("sarscov2 paired-end [fastq]") { diff --git a/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/tests/main.nf.test b/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/tests/main.nf.test index d409bfe6f..6d01cbbd1 100644 --- a/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/tests/main.nf.test +++ b/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/tests/main.nf.test @@ -4,9 +4,6 @@ nextflow_workflow { script "../main.nf" workflow "FASTQ_FASTQC_UMITOOLS_TRIMGALORE" config './nextflow.config' - tag "FASTQC" - tag "UMITOOLS_EXTRACT" - tag "TRIMGALORE" test("test single end read with UMI") { diff --git a/subworkflows/nf-core/fastq_subsample_fq_salmon/tests/main.nf.test b/subworkflows/nf-core/fastq_subsample_fq_salmon/tests/main.nf.test index 98d5615f5..0a4b29706 100644 --- a/subworkflows/nf-core/fastq_subsample_fq_salmon/tests/main.nf.test +++ b/subworkflows/nf-core/fastq_subsample_fq_salmon/tests/main.nf.test @@ -4,9 +4,6 @@ nextflow_workflow { script "../main.nf" workflow "FASTQ_SUBSAMPLE_FQ_SALMON" config "./nextflow.config" - tag "SALMON_INDEX" - tag "FQ_SUBSAMPLE" - tag "SALMON_QUANT" test("homo_sapiens paired-end [fastq]") { diff --git a/subworkflows/nf-core/quantify_pseudo_alignment/tests/main.nf.test b/subworkflows/nf-core/quantify_pseudo_alignment/tests/main.nf.test index d53fb4ea8..21004870a 100644 --- a/subworkflows/nf-core/quantify_pseudo_alignment/tests/main.nf.test +++ b/subworkflows/nf-core/quantify_pseudo_alignment/tests/main.nf.test @@ -3,13 +3,6 @@ nextflow_workflow { name "Test Workflow QUANTIFY_PSEUDO_ALIGNMENT" script "../main.nf" workflow "QUANTIFY_PSEUDO_ALIGNMENT" - tag "SALMON_INDEX" - tag "KALLISTO_INDEX" - tag "SALMON_QUANT" - tag "KALLISTO_QUANT" - tag "CUSTOM_TX2GENE" - tag "TXIMETA_TXIMPORT" - tag "SUMMARIZEDEXPERIMENT_SUMMARIZEDEXPERIMENT" test("salmon") { diff --git a/subworkflows/nf-core/utils_nextflow_pipeline/tests/main.function.nf.test b/subworkflows/nf-core/utils_nextflow_pipeline/tests/main.function.nf.test index 8b838192f..f66d9954f 100644 --- a/subworkflows/nf-core/utils_nextflow_pipeline/tests/main.function.nf.test +++ b/subworkflows/nf-core/utils_nextflow_pipeline/tests/main.function.nf.test @@ -4,7 +4,6 @@ nextflow_function { name "Test Functions" script "subworkflows/nf-core/utils_nextflow_pipeline/main.nf" config "subworkflows/nf-core/utils_nextflow_pipeline/tests/nextflow.config" - tag "UTILS_NEXTFLOW_PIPELINE" test("Test Function getWorkflowVersion") { diff --git a/subworkflows/nf-core/utils_nfcore_pipeline/tests/main.function.nf.test b/subworkflows/nf-core/utils_nfcore_pipeline/tests/main.function.nf.test index 41b8d19e2..3de07f37a 100644 --- a/subworkflows/nf-core/utils_nfcore_pipeline/tests/main.function.nf.test +++ b/subworkflows/nf-core/utils_nfcore_pipeline/tests/main.function.nf.test @@ -3,8 +3,7 @@ nextflow_function { name "Test Functions" script "../main.nf" - config "subworkflows/nf-core/utils_nfcore_pipeline/tests/nextflow.config" - tag "UTILS_NFCORE_PIPELINE" + config "subworkflows/nf-core/utils_nfcore_pipeline/tests/nextflow.config" test("Test Function checkConfigProvided") { diff --git a/tests/default.nf.test b/tests/default.nf.test index 2d3323175..b086c6db3 100644 --- a/tests/default.nf.test +++ b/tests/default.nf.test @@ -2,8 +2,6 @@ nextflow_pipeline { name "Test pipeline with default settings" script "../main.nf" - tag "RNASEQ" - tag "PIPELINE" test("Params: default") { diff --git a/tests/featurecounts_group_type.nf.test b/tests/featurecounts_group_type.nf.test index d847bd60c..69de358f5 100644 --- a/tests/featurecounts_group_type.nf.test +++ b/tests/featurecounts_group_type.nf.test @@ -2,8 +2,6 @@ nextflow_pipeline { name "Test pipeline without a group type for featureCounts" script "../main.nf" - tag "RNASEQ" - tag "PIPELINE" test("Params: --featurecounts_group_type false") { diff --git a/tests/kallisto.nf.test b/tests/kallisto.nf.test index 517f20156..a6a578a77 100644 --- a/tests/kallisto.nf.test +++ b/tests/kallisto.nf.test @@ -2,8 +2,6 @@ nextflow_pipeline { name "Test pipeline with Kallisto, skipping both QC and alignment" script "../main.nf" - tag "RNASEQ" - tag "PIPELINE" test("Params: --pseudo_aligner kallisto --skip_qc --skip_alignment") { diff --git a/tests/min_mapped_reads.nf.test b/tests/min_mapped_reads.nf.test index 95e8e7028..9dcc7408c 100644 --- a/tests/min_mapped_reads.nf.test +++ b/tests/min_mapped_reads.nf.test @@ -2,8 +2,6 @@ nextflow_pipeline { name "Test pipeline with a minimum mapped read threshold of 90" script "../main.nf" - tag "RNASEQ" - tag "PIPELINE" test("Params: --min_mapped_reads 90") { diff --git a/tests/remove_ribo_rna.nf.test b/tests/remove_ribo_rna.nf.test index a439588de..d414d1484 100644 --- a/tests/remove_ribo_rna.nf.test +++ b/tests/remove_ribo_rna.nf.test @@ -2,8 +2,6 @@ nextflow_pipeline { name "Test pipeline with ribosomal RNA removal" script "../main.nf" - tag "RNASEQ" - tag "PIPELINE" test("Params: --remove_ribo_rna") { diff --git a/tests/salmon.nf.test b/tests/salmon.nf.test index 36373dd9d..cf0a2d93e 100644 --- a/tests/salmon.nf.test +++ b/tests/salmon.nf.test @@ -2,8 +2,6 @@ nextflow_pipeline { name "Test pipeline with Salmon, skipping both QC and alignment" script "../main.nf" - tag "RNASEQ" - tag "PIPELINE" test("Params: --pseudo_aligner salmon --skip_qc --skip_alignment") { diff --git a/tests/skip_qc.nf.test b/tests/skip_qc.nf.test index bd5918083..db718462e 100644 --- a/tests/skip_qc.nf.test +++ b/tests/skip_qc.nf.test @@ -2,8 +2,6 @@ nextflow_pipeline { name "Test pipeline by skipping QC options" script "../main.nf" - tag "RNASEQ" - tag "PIPELINE" test("Params: --skip_qc") { diff --git a/tests/skip_trimming.nf.test b/tests/skip_trimming.nf.test index 4f656d016..28452df5c 100644 --- a/tests/skip_trimming.nf.test +++ b/tests/skip_trimming.nf.test @@ -2,8 +2,6 @@ nextflow_pipeline { name "Test pipeline by skipping trimming options" script "../main.nf" - tag "RNASEQ" - tag "PIPELINE" test("Params: --skip_trimming") { From 61c5dcc58ac534b07053d5873a622d315b4c6109 Mon Sep 17 00:00:00 2001 From: Adam Talbot <12817534+adamrtalbot@users.noreply.github.com> Date: Thu, 20 Jun 2024 14:29:47 +0100 Subject: [PATCH 400/634] Add nf-test for STAR-RSEM and HISAT2 aligners --- CHANGELOG.md | 1 + tests/hisat2.main.nf.test | 22 ++++++++++++++++++++++ tests/star_rsem.main.nf.test | 22 ++++++++++++++++++++++ 3 files changed, 45 insertions(+) create mode 100644 tests/hisat2.main.nf.test create mode 100644 tests/star_rsem.main.nf.test diff --git a/CHANGELOG.md b/CHANGELOG.md index 651d6fe8c..91336a5e7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -80,6 +80,7 @@ Thank you to everyone else that has contributed by reporting bugs, enhancements - [PR #1322](https://github.com/nf-core/rnaseq/pull/1322) - Use pre-built Github Action to detect nf-test changes - [PR #1306](https://github.com/nf-core/rnaseq/pull/1306) - Overhaul strandedness detection / comparison - [PR #1326](https://github.com/nf-core/rnaseq/pull/1326) - Move Conda dependencies for local modules to individual environment file +- [PR #####]() - Add pipeline level test for STAR-RSEM and HISAT2 ### Parameters diff --git a/tests/hisat2.main.nf.test b/tests/hisat2.main.nf.test new file mode 100644 index 000000000..5b1e77130 --- /dev/null +++ b/tests/hisat2.main.nf.test @@ -0,0 +1,22 @@ +nextflow_pipeline { + + name "Test pipeline with HISAT2 aligner" + script "../main.nf" + tag "rnaseq" + tag "PIPELINE" + + test("Default profile test") { + + when { + params { + outdir = "$outputDir" + aligner = 'hisat2' + } + } + + then { + assert workflow.success + } + } +} + diff --git a/tests/star_rsem.main.nf.test b/tests/star_rsem.main.nf.test new file mode 100644 index 000000000..b62897b0d --- /dev/null +++ b/tests/star_rsem.main.nf.test @@ -0,0 +1,22 @@ +nextflow_pipeline { + + name "Test pipeline with STAR aligner and RSEM for quantification" + script "../main.nf" + tag "rnaseq" + tag "PIPELINE" + + test("Default profile test") { + + when { + params { + outdir = "$outputDir" + aligner = 'star_rsem' + } + } + + then { + assert workflow.success + } + } +} + From fa40d2066648eb01fbc1cde0eff5e10eeceab659 Mon Sep 17 00:00:00 2001 From: Adam Talbot <12817534+adamrtalbot@users.noreply.github.com> Date: Thu, 20 Jun 2024 14:31:00 +0100 Subject: [PATCH 401/634] remove tags --- tests/hisat2.main.nf.test | 2 -- tests/star_rsem.main.nf.test | 2 -- 2 files changed, 4 deletions(-) diff --git a/tests/hisat2.main.nf.test b/tests/hisat2.main.nf.test index 5b1e77130..a20302422 100644 --- a/tests/hisat2.main.nf.test +++ b/tests/hisat2.main.nf.test @@ -2,8 +2,6 @@ nextflow_pipeline { name "Test pipeline with HISAT2 aligner" script "../main.nf" - tag "rnaseq" - tag "PIPELINE" test("Default profile test") { diff --git a/tests/star_rsem.main.nf.test b/tests/star_rsem.main.nf.test index b62897b0d..75e0f9f1b 100644 --- a/tests/star_rsem.main.nf.test +++ b/tests/star_rsem.main.nf.test @@ -2,8 +2,6 @@ nextflow_pipeline { name "Test pipeline with STAR aligner and RSEM for quantification" script "../main.nf" - tag "rnaseq" - tag "PIPELINE" test("Default profile test") { From 153a9a16ddabd13a904850dc7dd23e1392a6c470 Mon Sep 17 00:00:00 2001 From: Adam Talbot <12817534+adamrtalbot@users.noreply.github.com> Date: Thu, 20 Jun 2024 14:32:14 +0100 Subject: [PATCH 402/634] CHANGELOG --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 849133fbc..71326f359 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -93,7 +93,7 @@ Thank you to everyone else that has contributed by reporting bugs, enhancements - [PR #1324](https://github.com/nf-core/rnaseq/pull/1324) - Fix tags entries and rename pipeline level tests - [PR #1325](https://github.com/nf-core/rnaseq/pull/1325) - Minor fixes to strandedness settings and messaging - [PR #1326](https://github.com/nf-core/rnaseq/pull/1326) - Move Conda dependencies for local modules to individual environment file -- [PR #####]() - Add pipeline level test for STAR-RSEM and HISAT2 +- [PR #1328](https://github.com/nf-core/rnaseq/pull/1328) - Add pipeline level test for STAR-RSEM and HISAT2 ### Parameters From 7cda5c26d0c01bb6a10661cf673706c760ab9784 Mon Sep 17 00:00:00 2001 From: Adam Talbot <12817534+adamrtalbot@users.noreply.github.com> Date: Thu, 20 Jun 2024 14:33:35 +0100 Subject: [PATCH 403/634] test naming conventions --- tests/hisat2.main.nf.test | 2 +- tests/star_rsem.main.nf.test | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/hisat2.main.nf.test b/tests/hisat2.main.nf.test index a20302422..69fdd5e33 100644 --- a/tests/hisat2.main.nf.test +++ b/tests/hisat2.main.nf.test @@ -3,7 +3,7 @@ nextflow_pipeline { name "Test pipeline with HISAT2 aligner" script "../main.nf" - test("Default profile test") { + test("Params: --aligner hisat2") { when { params { diff --git a/tests/star_rsem.main.nf.test b/tests/star_rsem.main.nf.test index 75e0f9f1b..07cfccbbc 100644 --- a/tests/star_rsem.main.nf.test +++ b/tests/star_rsem.main.nf.test @@ -3,7 +3,7 @@ nextflow_pipeline { name "Test pipeline with STAR aligner and RSEM for quantification" script "../main.nf" - test("Default profile test") { + test("Params: --aligner star_rsem") { when { params { From 9dbdd2c16b524a83efc54d020c3fdf9ed6b9a117 Mon Sep 17 00:00:00 2001 From: Harshil Patel Date: Thu, 20 Jun 2024 14:34:32 +0100 Subject: [PATCH 404/634] Update CHANGELOG --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8bc61304d..130819513 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -93,6 +93,7 @@ Thank you to everyone else that has contributed by reporting bugs, enhancements - [PR #1324](https://github.com/nf-core/rnaseq/pull/1324) - Fix tags entries and rename pipeline level tests - [PR #1325](https://github.com/nf-core/rnaseq/pull/1325) - Minor fixes to strandedness settings and messaging - [PR #1326](https://github.com/nf-core/rnaseq/pull/1326) - Move Conda dependencies for local modules to individual environment file +- [PR #1329](https://github.com/nf-core/rnaseq/pull/1329) - Remove tags from all nf-test files ### Parameters From 43c709f5d0783852f4603041234fa18bf672073e Mon Sep 17 00:00:00 2001 From: Adam Talbot <12817534+adamrtalbot@users.noreply.github.com> Date: Thu, 20 Jun 2024 14:46:47 +0100 Subject: [PATCH 405/634] Update tests/hisat2.main.nf.test Co-authored-by: Harshil Patel --- tests/hisat2.main.nf.test | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/hisat2.main.nf.test b/tests/hisat2.main.nf.test index 69fdd5e33..c8b55906e 100644 --- a/tests/hisat2.main.nf.test +++ b/tests/hisat2.main.nf.test @@ -8,7 +8,7 @@ nextflow_pipeline { when { params { outdir = "$outputDir" - aligner = 'hisat2' + aligner = 'hisat2' } } From 3acbeb84f6f7bcdb0742ce05ea98f8a4ba74c530 Mon Sep 17 00:00:00 2001 From: Adam Talbot <12817534+adamrtalbot@users.noreply.github.com> Date: Thu, 20 Jun 2024 14:46:52 +0100 Subject: [PATCH 406/634] Update tests/star_rsem.main.nf.test Co-authored-by: Harshil Patel --- tests/star_rsem.main.nf.test | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/star_rsem.main.nf.test b/tests/star_rsem.main.nf.test index 07cfccbbc..3a0b867a9 100644 --- a/tests/star_rsem.main.nf.test +++ b/tests/star_rsem.main.nf.test @@ -8,7 +8,7 @@ nextflow_pipeline { when { params { outdir = "$outputDir" - aligner = 'star_rsem' + aligner = 'star_rsem' } } From 0e5cc2cb23f1a60499fbf92a91eec44d2d0800a1 Mon Sep 17 00:00:00 2001 From: Adam Talbot <12817534+adamrtalbot@users.noreply.github.com> Date: Thu, 20 Jun 2024 14:49:44 +0100 Subject: [PATCH 407/634] Rename files in line with other tests --- tests/{hisat2.main.nf.test => hisat2.nf.test} | 0 tests/{star_rsem.main.nf.test => star_rsem.nf.test} | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename tests/{hisat2.main.nf.test => hisat2.nf.test} (100%) rename tests/{star_rsem.main.nf.test => star_rsem.nf.test} (100%) diff --git a/tests/hisat2.main.nf.test b/tests/hisat2.nf.test similarity index 100% rename from tests/hisat2.main.nf.test rename to tests/hisat2.nf.test diff --git a/tests/star_rsem.main.nf.test b/tests/star_rsem.nf.test similarity index 100% rename from tests/star_rsem.main.nf.test rename to tests/star_rsem.nf.test From 8acf634c5745fe78a5c688787547d27692dfffed Mon Sep 17 00:00:00 2001 From: Harshil Patel Date: Thu, 20 Jun 2024 16:30:25 +0100 Subject: [PATCH 408/634] Update all nf-core modules and subworkflows --- modules.json | 38 +- modules/nf-core/cat/fastq/tests/main.nf.test | 2 + .../custom/catadditionalfasta/environment.yml | 2 +- .../nf-core/custom/catadditionalfasta/main.nf | 2 +- .../catadditionalfasta/templates/fasta2gtf.py | 12 +- .../custom/getchromsizes/environment.yml | 3 +- modules/nf-core/custom/getchromsizes/main.nf | 4 +- .../getchromsizes/tests/main.nf.test.snap | 20 +- .../custom/tx2gene/templates/tx2gene.py | 24 +- modules/nf-core/fastp/main.nf | 17 +- modules/nf-core/fastp/meta.yml | 6 +- modules/nf-core/fastp/tests/main.nf.test | 712 ++++-------- modules/nf-core/fastp/tests/main.nf.test.snap | 1018 +++++++++++++---- modules/nf-core/gffread/environment.yml | 2 +- modules/nf-core/gffread/main.nf | 49 +- modules/nf-core/gffread/meta.yml | 21 +- modules/nf-core/gffread/tests/main.nf.test | 178 ++- .../nf-core/gffread/tests/main.nf.test.snap | 276 ++++- .../gffread/tests/nextflow-fasta.config | 5 + modules/nf-core/multiqc/environment.yml | 2 +- modules/nf-core/multiqc/main.nf | 4 +- .../nf-core/multiqc/tests/main.nf.test.snap | 18 +- modules/nf-core/preseq/lcextrap/main.nf | 3 +- .../nf-core/samtools/flagstat/environment.yml | 4 +- modules/nf-core/samtools/flagstat/main.nf | 4 +- .../samtools/flagstat/tests/main.nf.test.snap | 6 +- .../nf-core/samtools/idxstats/environment.yml | 4 +- modules/nf-core/samtools/idxstats/main.nf | 4 +- .../samtools/idxstats/tests/main.nf.test.snap | 6 +- .../nf-core/samtools/index/environment.yml | 4 +- modules/nf-core/samtools/index/main.nf | 4 +- .../samtools/index/tests/main.nf.test.snap | 18 +- modules/nf-core/samtools/sort/environment.yml | 4 +- modules/nf-core/samtools/sort/main.nf | 4 +- .../nf-core/samtools/sort/tests/main.nf.test | 16 +- .../samtools/sort/tests/main.nf.test.snap | 198 ++-- .../nf-core/samtools/stats/environment.yml | 4 +- modules/nf-core/samtools/stats/main.nf | 4 +- .../samtools/stats/tests/main.nf.test.snap | 24 +- modules/nf-core/trimgalore/environment.yml | 4 +- .../bam_dedup_stats_samtools_umitools/main.nf | 1 + .../meta.yml | 4 + .../tests/main.nf.test | 1 + .../tests/main.nf.test.snap | 6 +- .../tests/main.nf.test.snap | 8 +- .../tests/main.nf.test.snap | 12 +- .../tests/main.nf.test.snap | 18 +- .../fastq_fastqc_umitools_fastp/main.nf | 1 + .../tests/main.nf.test.snap | 32 +- 49 files changed, 1833 insertions(+), 980 deletions(-) create mode 100644 modules/nf-core/gffread/tests/nextflow-fasta.config diff --git a/modules.json b/modules.json index 0279448ce..774428c8b 100644 --- a/modules.json +++ b/modules.json @@ -17,22 +17,22 @@ }, "cat/fastq": { "branch": "master", - "git_sha": "0997b47c93c06b49aa7b3fefda87e728312cf2ca", + "git_sha": "4fc983ad0b30e6e32696fa7d980c76c7bfe1c03e", "installed_by": ["modules"] }, "custom/catadditionalfasta": { "branch": "master", - "git_sha": "ba6ec49354837595649acd84e7a867d59bf11ad0", + "git_sha": "13c7a1b7a70c13e723a9aeff5aa8438268c09a0f", "installed_by": ["modules"] }, "custom/getchromsizes": { "branch": "master", - "git_sha": "1b0ffa4e5aed5b7e3cd4311af31bd3b2c8345051", + "git_sha": "41a4135c502b42ede663af87efa70a96ecbd7cb9", "installed_by": ["modules"] }, "custom/tx2gene": { "branch": "master", - "git_sha": "ec155021a9104441bf6a9bae3b55d1b5b0bfdb3a", + "git_sha": "82024cf6325d2ee194e7f056d841ecad2f6856e9", "installed_by": ["modules", "quantify_pseudo_alignment"] }, "dupradar": { @@ -42,7 +42,7 @@ }, "fastp": { "branch": "master", - "git_sha": "95cf5fe0194c7bf5cb0e3027a2eb7e7c89385080", + "git_sha": "b90b5cd93149a1b3be263d916c7234fe0708a71c", "installed_by": ["fastq_fastqc_umitools_fastp", "modules"] }, "fastqc": { @@ -57,7 +57,7 @@ }, "gffread": { "branch": "master", - "git_sha": "b1b959609bda44341120aed1766329909f54b8d0", + "git_sha": "6c996d7fbe0816dcbb68ce587ad5f873313682a1", "installed_by": ["modules"] }, "gunzip": { @@ -92,7 +92,7 @@ }, "multiqc": { "branch": "master", - "git_sha": "b7ebe95761cd389603f9cc0e0dc384c0f663815a", + "git_sha": "8f2062e7b4185590fb9f43c275381a31a6544fc0", "installed_by": ["modules"] }, "picard/markduplicates": { @@ -102,7 +102,7 @@ }, "preseq/lcextrap": { "branch": "master", - "git_sha": "9a88058962c0ee1715f2ad0e017c37e0cd75e532", + "git_sha": "4d178c536f91d022a3bff078bb84037e866c7da4", "installed_by": ["modules"] }, "qualimap/rnaseq": { @@ -172,17 +172,17 @@ }, "samtools/flagstat": { "branch": "master", - "git_sha": "f4596fe0bdc096cf53ec4497e83defdb3a94ff62", + "git_sha": "04fbbc7c43cebc0b95d5b126f6d9fe4effa33519", "installed_by": ["bam_stats_samtools"] }, "samtools/idxstats": { "branch": "master", - "git_sha": "f4596fe0bdc096cf53ec4497e83defdb3a94ff62", + "git_sha": "04fbbc7c43cebc0b95d5b126f6d9fe4effa33519", "installed_by": ["bam_stats_samtools"] }, "samtools/index": { "branch": "master", - "git_sha": "f4596fe0bdc096cf53ec4497e83defdb3a94ff62", + "git_sha": "04fbbc7c43cebc0b95d5b126f6d9fe4effa33519", "installed_by": [ "bam_dedup_stats_samtools_umitools", "bam_markduplicates_picard", @@ -191,12 +191,12 @@ }, "samtools/sort": { "branch": "master", - "git_sha": "4352dbdb09ec40db71e9b172b97a01dcf5622c26", + "git_sha": "04fbbc7c43cebc0b95d5b126f6d9fe4effa33519", "installed_by": ["bam_sort_stats_samtools"] }, "samtools/stats": { "branch": "master", - "git_sha": "f4596fe0bdc096cf53ec4497e83defdb3a94ff62", + "git_sha": "04fbbc7c43cebc0b95d5b126f6d9fe4effa33519", "installed_by": ["bam_stats_samtools"] }, "sortmerna": { @@ -231,7 +231,7 @@ }, "trimgalore": { "branch": "master", - "git_sha": "d2c5e76f291379f3dd403e48e46ed7e6ba5da744", + "git_sha": "a98418419ae6c9df3cf6cf108d1e1aba71037d5a", "installed_by": ["fastq_fastqc_umitools_trimgalore"] }, "tximeta/tximport": { @@ -275,12 +275,12 @@ "nf-core": { "bam_dedup_stats_samtools_umitools": { "branch": "master", - "git_sha": "f4596fe0bdc096cf53ec4497e83defdb3a94ff62", + "git_sha": "8f2062e7b4185590fb9f43c275381a31a6544fc0", "installed_by": ["subworkflows"] }, "bam_markduplicates_picard": { "branch": "master", - "git_sha": "1943aa60f7490c3d6740e8872e6e69122ccc8087", + "git_sha": "04fbbc7c43cebc0b95d5b126f6d9fe4effa33519", "installed_by": ["subworkflows"] }, "bam_rseqc": { @@ -290,12 +290,12 @@ }, "bam_sort_stats_samtools": { "branch": "master", - "git_sha": "4352dbdb09ec40db71e9b172b97a01dcf5622c26", + "git_sha": "04fbbc7c43cebc0b95d5b126f6d9fe4effa33519", "installed_by": ["fastq_align_hisat2"] }, "bam_stats_samtools": { "branch": "master", - "git_sha": "f4596fe0bdc096cf53ec4497e83defdb3a94ff62", + "git_sha": "04fbbc7c43cebc0b95d5b126f6d9fe4effa33519", "installed_by": [ "bam_dedup_stats_samtools_umitools", "bam_markduplicates_picard", @@ -314,7 +314,7 @@ }, "fastq_fastqc_umitools_fastp": { "branch": "master", - "git_sha": "e98edb838fb0072c0783139ed16723bbc5d48d23", + "git_sha": "b90b5cd93149a1b3be263d916c7234fe0708a71c", "installed_by": ["subworkflows"] }, "fastq_fastqc_umitools_trimgalore": { diff --git a/modules/nf-core/cat/fastq/tests/main.nf.test b/modules/nf-core/cat/fastq/tests/main.nf.test index ab7cdada9..7236c6cd9 100644 --- a/modules/nf-core/cat/fastq/tests/main.nf.test +++ b/modules/nf-core/cat/fastq/tests/main.nf.test @@ -1,3 +1,5 @@ +// NOTE The version snaps may not be consistant +// https://github.com/nf-core/modules/pull/4087#issuecomment-1767948035 nextflow_process { name "Test Process CAT_FASTQ" diff --git a/modules/nf-core/custom/catadditionalfasta/environment.yml b/modules/nf-core/custom/catadditionalfasta/environment.yml index 5e757bf4c..e587338b5 100644 --- a/modules/nf-core/custom/catadditionalfasta/environment.yml +++ b/modules/nf-core/custom/catadditionalfasta/environment.yml @@ -6,4 +6,4 @@ channels: - bioconda - defaults dependencies: - - conda-forge::python=3.9.5" + - conda-forge::python=3.9.5 diff --git a/modules/nf-core/custom/catadditionalfasta/main.nf b/modules/nf-core/custom/catadditionalfasta/main.nf index 7289976e0..076d7bd08 100644 --- a/modules/nf-core/custom/catadditionalfasta/main.nf +++ b/modules/nf-core/custom/catadditionalfasta/main.nf @@ -1,7 +1,7 @@ process CUSTOM_CATADDITIONALFASTA { tag "$meta.id" - conda "conda-forge::python=3.9.5" + conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/python:3.9--1' : 'biocontainers/python:3.9--1' }" diff --git a/modules/nf-core/custom/catadditionalfasta/templates/fasta2gtf.py b/modules/nf-core/custom/catadditionalfasta/templates/fasta2gtf.py index 39b1d4b2f..194a04160 100755 --- a/modules/nf-core/custom/catadditionalfasta/templates/fasta2gtf.py +++ b/modules/nf-core/custom/catadditionalfasta/templates/fasta2gtf.py @@ -114,16 +114,8 @@ def main() -> None: fasta_to_gtf("$add_fasta", f"{add_name}.gtf", "$biotype") # Concatenate new fasta to existing fasta, and the GTF we just generated to the GTF - genome_name = ( - "$params.genome" - if "$params.genome" != "null" - else os.path.splitext(os.path.basename("$fasta"))[0] - ) - output_prefix = ( - "$task.ext.prefix" - if "$task.ext.prefix" != "null" - else f"{genome_name}_{add_name}" - ) + genome_name = "$params.genome" if "$params.genome" != "null" else os.path.splitext(os.path.basename("$fasta"))[0] + output_prefix = "$task.ext.prefix" if "$task.ext.prefix" != "null" else f"{genome_name}_{add_name}" os.mkdir("out") os.system(f"cat $fasta $add_fasta > out/{output_prefix}.fasta") diff --git a/modules/nf-core/custom/getchromsizes/environment.yml b/modules/nf-core/custom/getchromsizes/environment.yml index 2a01695f1..2ecd0128f 100644 --- a/modules/nf-core/custom/getchromsizes/environment.yml +++ b/modules/nf-core/custom/getchromsizes/environment.yml @@ -4,4 +4,5 @@ channels: - bioconda - defaults dependencies: - - bioconda::samtools=1.16.1 + - bioconda::samtools=1.20 + - bioconda::htslib=1.20 diff --git a/modules/nf-core/custom/getchromsizes/main.nf b/modules/nf-core/custom/getchromsizes/main.nf index e8084ea2c..581f4b77d 100644 --- a/modules/nf-core/custom/getchromsizes/main.nf +++ b/modules/nf-core/custom/getchromsizes/main.nf @@ -4,8 +4,8 @@ process CUSTOM_GETCHROMSIZES { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/samtools:1.16.1--h6899075_1' : - 'biocontainers/samtools:1.16.1--h6899075_1' }" + 'https://depot.galaxyproject.org/singularity/samtools:1.20--h50ea8bc_0' : + 'biocontainers/samtools:1.20--h50ea8bc_0' }" input: tuple val(meta), path(fasta) diff --git a/modules/nf-core/custom/getchromsizes/tests/main.nf.test.snap b/modules/nf-core/custom/getchromsizes/tests/main.nf.test.snap index 2e560bd32..3c53d4624 100644 --- a/modules/nf-core/custom/getchromsizes/tests/main.nf.test.snap +++ b/modules/nf-core/custom/getchromsizes/tests/main.nf.test.snap @@ -22,7 +22,7 @@ ], "3": [ - "versions.yml:md5,45a83c5f3dddbc5dcab30035169f7ce8" + "versions.yml:md5,0d5a7c33bddcb1edad6bf0705b258e6f" ], "fai": [ [ @@ -44,11 +44,15 @@ ] ], "versions": [ - "versions.yml:md5,45a83c5f3dddbc5dcab30035169f7ce8" + "versions.yml:md5,0d5a7c33bddcb1edad6bf0705b258e6f" ] } ], - "timestamp": "2024-01-17T17:48:35.562918" + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-06-20T13:22:34.14237" }, "test_custom_getchromsizes_bgzip": { "content": [ @@ -78,7 +82,7 @@ ] ], "3": [ - "versions.yml:md5,45a83c5f3dddbc5dcab30035169f7ce8" + "versions.yml:md5,0d5a7c33bddcb1edad6bf0705b258e6f" ], "fai": [ [ @@ -105,10 +109,14 @@ ] ], "versions": [ - "versions.yml:md5,45a83c5f3dddbc5dcab30035169f7ce8" + "versions.yml:md5,0d5a7c33bddcb1edad6bf0705b258e6f" ] } ], - "timestamp": "2024-01-17T17:49:02.562311" + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-06-20T13:23:06.241379" } } \ No newline at end of file diff --git a/modules/nf-core/custom/tx2gene/templates/tx2gene.py b/modules/nf-core/custom/tx2gene/templates/tx2gene.py index 7fd0de64e..8c2e3b1f4 100755 --- a/modules/nf-core/custom/tx2gene/templates/tx2gene.py +++ b/modules/nf-core/custom/tx2gene/templates/tx2gene.py @@ -17,6 +17,7 @@ logger = logging.getLogger(__name__) logger.setLevel(logging.INFO) + def format_yaml_like(data: dict, indent: int = 0) -> str: """Formats a dictionary to a YAML-like string. @@ -36,6 +37,7 @@ def format_yaml_like(data: dict, indent: int = 0) -> str: yaml_str += f"{spaces}{key}: {value}\\n" return yaml_str + def read_top_transcripts(quant_dir: str, file_pattern: str) -> Set[str]: """ Read the top 100 transcripts from the quantification file. @@ -123,7 +125,12 @@ def parse_attributes(attributes_text: str) -> Dict[str, str]: def map_transcripts_to_gene( - quant_type: str, gtf_file: str, quant_dir: str, gene_id: str, extra_id_field: str, output_file: str + quant_type: str, + gtf_file: str, + quant_dir: str, + gene_id: str, + extra_id_field: str, + output_file: str, ) -> bool: """ Map transcripts to gene names and write the output to a file. @@ -156,7 +163,10 @@ def map_transcripts_to_gene( attr_dict = parse_attributes(cols[8]) if gene_id in attr_dict and transcript_attribute in attr_dict: # Create a unique identifier for the transcript-gene combination - transcript_gene_pair = (attr_dict[transcript_attribute], attr_dict[gene_id]) + transcript_gene_pair = ( + attr_dict[transcript_attribute], + attr_dict[gene_id], + ) # Check if the combination has already been seen if transcript_gene_pair not in seen: @@ -170,14 +180,14 @@ def map_transcripts_to_gene( # Main function to parse arguments and call the mapping function if __name__ == "__main__": - if '${task.ext.prefix}' != "null": + if "${task.ext.prefix}" != "null": prefix = "${task.ext.prefix}." - elif '$meta.id' != "null": - prefix = '${meta.id}.' + elif "$meta.id" != "null": + prefix = "${meta.id}." else: - prefix = '' + prefix = "" - if not map_transcripts_to_gene('$quant_type', '$gtf', 'quants', '$id', '$extra', f"{prefix}tx2gene.tsv"): + if not map_transcripts_to_gene("$quant_type", "$gtf", "quants", "$id", "$extra", f"{prefix}tx2gene.tsv"): logger.error("Failed to map transcripts to genes.") # Write the versions diff --git a/modules/nf-core/fastp/main.nf b/modules/nf-core/fastp/main.nf index 4fc19b744..df60ff61e 100644 --- a/modules/nf-core/fastp/main.nf +++ b/modules/nf-core/fastp/main.nf @@ -10,6 +10,7 @@ process FASTP { input: tuple val(meta), path(reads) path adapter_fasta + val discard_trimmed_pass val save_trimmed_fail val save_merged @@ -18,9 +19,9 @@ process FASTP { tuple val(meta), path('*.json') , emit: json tuple val(meta), path('*.html') , emit: html tuple val(meta), path('*.log') , emit: log - path "versions.yml" , emit: versions tuple val(meta), path('*.fail.fastq.gz') , optional:true, emit: reads_fail tuple val(meta), path('*.merged.fastq.gz'), optional:true, emit: reads_merged + path "versions.yml" , emit: versions when: task.ext.when == null || task.ext.when @@ -30,6 +31,8 @@ process FASTP { def prefix = task.ext.prefix ?: "${meta.id}" def adapter_list = adapter_fasta ? "--adapter_fasta ${adapter_fasta}" : "" def fail_fastq = save_trimmed_fail && meta.single_end ? "--failed_out ${prefix}.fail.fastq.gz" : save_trimmed_fail && !meta.single_end ? "--failed_out ${prefix}.paired.fail.fastq.gz --unpaired1 ${prefix}_1.fail.fastq.gz --unpaired2 ${prefix}_2.fail.fastq.gz" : '' + def out_fq1 = discard_trimmed_pass ?: ( meta.single_end ? "--out1 ${prefix}.fastp.fastq.gz" : "--out1 ${prefix}_1.fastp.fastq.gz" ) + def out_fq2 = discard_trimmed_pass ?: "--out2 ${prefix}_2.fastp.fastq.gz" // Added soft-links to original fastqs for consistent naming in MultiQC // Use single ended for interleaved. Add --interleaved_in in config. if ( task.ext.args?.contains('--interleaved_in') ) { @@ -59,7 +62,7 @@ process FASTP { fastp \\ --in1 ${prefix}.fastq.gz \\ - --out1 ${prefix}.fastp.fastq.gz \\ + $out_fq1 \\ --thread $task.cpus \\ --json ${prefix}.fastp.json \\ --html ${prefix}.fastp.html \\ @@ -81,8 +84,8 @@ process FASTP { fastp \\ --in1 ${prefix}_1.fastq.gz \\ --in2 ${prefix}_2.fastq.gz \\ - --out1 ${prefix}_1.fastp.fastq.gz \\ - --out2 ${prefix}_2.fastp.fastq.gz \\ + $out_fq1 \\ + $out_fq2 \\ --json ${prefix}.fastp.json \\ --html ${prefix}.fastp.html \\ $adapter_list \\ @@ -103,10 +106,10 @@ process FASTP { stub: def prefix = task.ext.prefix ?: "${meta.id}" def is_single_output = task.ext.args?.contains('--interleaved_in') || meta.single_end - def touch_reads = is_single_output ? "${prefix}.fastp.fastq.gz" : "${prefix}_1.fastp.fastq.gz ${prefix}_2.fastp.fastq.gz" - def touch_merged = (!is_single_output && save_merged) ? "touch ${prefix}.merged.fastq.gz" : "" + def touch_reads = (is_single_output && !discard_trimmed_pass) ? "echo '' | gzip > ${prefix}.fastp.fastq.gz" : "echo '' | gzip > ${prefix}_1.fastp.fastq.gz ; echo '' | gzip > ${prefix}_2.fastp.fastq.gz" + def touch_merged = (!is_single_output && save_merged) ? "echo '' | gzip > ${prefix}.merged.fastq.gz" : "" """ - touch $touch_reads + $touch_reads touch "${prefix}.fastp.json" touch "${prefix}.fastp.html" touch "${prefix}.fastp.log" diff --git a/modules/nf-core/fastp/meta.yml b/modules/nf-core/fastp/meta.yml index c22a16abd..8dfecc184 100644 --- a/modules/nf-core/fastp/meta.yml +++ b/modules/nf-core/fastp/meta.yml @@ -27,12 +27,16 @@ input: type: file description: File in FASTA format containing possible adapters to remove. pattern: "*.{fasta,fna,fas,fa}" + - discard_trimmed_pass: + type: boolean + description: Specify true to not write any reads that pass trimming thresholds. | + This can be used to use fastp for the output report only. - save_trimmed_fail: type: boolean description: Specify true to save files that failed to pass trimming thresholds ending in `*.fail.fastq.gz` - save_merged: type: boolean - description: Specify true to save all merged reads to the a file ending in `*.merged.fastq.gz` + description: Specify true to save all merged reads to a file ending in `*.merged.fastq.gz` output: - meta: type: map diff --git a/modules/nf-core/fastp/tests/main.nf.test b/modules/nf-core/fastp/tests/main.nf.test index 1ffdd75f8..ed5fa5ed6 100644 --- a/modules/nf-core/fastp/tests/main.nf.test +++ b/modules/nf-core/fastp/tests/main.nf.test @@ -7,66 +7,32 @@ nextflow_process { test("test_fastp_single_end") { when { - params { - outdir = "$outputDir" - } + process { """ - adapter_fasta = [] - save_trimmed_fail = false - save_merged = false - 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) ] ]) - input[1] = adapter_fasta - input[2] = save_trimmed_fail - input[3] = save_merged + input[1] = [] + input[2] = false + input[3] = false + input[4] = false """ } } then { - def html_text = [ "Q20 bases:

    The strandedness used for analysis in this workflow can be provided by a user, or automatically inferred by Salmon using a sample of reads. In either case, strandedness is verified at the end of the workflow, using the RSeQC RSeQC infer_experiment.py operating on genomic alignments. In this table a pass indicates a match between suplied (or inferred by Salmon) and RSeQC, fail indicates a mismatch or 'undetermined' strandedness. Undetermined strandedness can indicate QC problems, including possible genomic DNA contamination.

    12.922000 K (92.984097%)", - "single end (151 cycles)" ] - def log_text = [ "Q20 bases: 12922(92.9841%)", - "reads passed filter: 99" ] - def read_lines = ["@ERR5069949.2151832 NS500628:121:HK3MMAFX2:2:21208:10793:15304/1", - "TCATAAACCAAAGCACTCACAGTGTCAACAATTTCAGCAGGACAACGCCGACAAGTTCCGAGGAACATGTCTGGACCTATAGTTTTCATAAGTCTACACACTGAATTGAAATATTCTGGTTCTAGTGTGCCCTTAGTTAGCAATGTGCGT", - "AAAAAAEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEAAEEEEAEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEAAEEEEE - { assert path(process.out.reads.get(0).get(1)).linesGzip.contains(read_line) } - } - }, - { html_text.each { html_part -> - { assert path(process.out.html.get(0).get(1)).getText().contains(html_part) } - } - }, - { assert snapshot(process.out.json).match("test_fastp_single_end_json") }, - { log_text.each { log_part -> - { assert path(process.out.log.get(0).get(1)).getText().contains(log_part) } - } - }, - { - assert snapshot( - ( - [process.out.reads[0][0].toString()] + // meta - process.out.reads.collect { file(it[1]).getName() } + - process.out.json.collect { file(it[1]).getName() } + - process.out.html.collect { file(it[1]).getName() } + - process.out.log.collect { file(it[1]).getName() } + - process.out.reads_fail.collect { file(it[1]).getName() } + - process.out.reads_merged.collect { file(it[1]).getName() } - ).sort() - ).match("test_fastp_single_end-_match") - }, - { assert snapshot(process.out.versions).match("versions_single_end") } + { assert snapshot( + process.out.reads, + process.out.json, + process.out.versions).match() }, + { assert process.out.reads_fail == [] }, + { assert process.out.reads_merged == [] }, + { assert path(process.out.log.get(0).get(1)).getText().contains("reads passed filter: 99") }, + { assert path(process.out.html.get(0).get(1)).getText().contains("single end (151 cycles)") } ) } } @@ -76,22 +42,16 @@ nextflow_process { options '-stub' when { - params { - outdir = "$outputDir" - } process { """ - adapter_fasta = [] - save_trimmed_fail = false - save_merged = false - 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) ] ]) - input[1] = adapter_fasta - input[2] = save_trimmed_fail - input[3] = save_merged + input[1] = [] + input[2] = false + input[3] = false + input[4] = false """ } } @@ -100,20 +60,7 @@ nextflow_process { assertAll( { assert process.success }, - { - assert snapshot( - ( - [process.out.reads[0][0].toString()] + // meta - process.out.reads.collect { file(it[1]).getName() } + - process.out.json.collect { file(it[1]).getName() } + - process.out.html.collect { file(it[1]).getName() } + - process.out.log.collect { file(it[1]).getName() } + - process.out.reads_fail.collect { file(it[1]).getName() } + - process.out.reads_merged.collect { file(it[1]).getName() } - ).sort() - ).match("test_fastp_single_end-for_stub_match") - }, - { assert snapshot(process.out.versions).match("versions_single_end_stub") } + { assert snapshot(process.out).match() } ) } } @@ -121,12 +68,11 @@ nextflow_process { test("test_fastp_paired_end") { when { - params { - outdir = "$outputDir" - } + process { """ adapter_fasta = [] + save_trimmed_pass = true save_trimmed_fail = false save_merged = false @@ -135,93 +81,46 @@ nextflow_process { [ 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) ] ]) - input[1] = adapter_fasta - input[2] = save_trimmed_fail - input[3] = save_merged + input[1] = [] + input[2] = false + input[3] = false + input[4] = false """ } } then { - def html_text = [ "Q20 bases:25.719000 K (93.033098%)", - "The input has little adapter percentage (~0.000000%), probably it's trimmed before."] - def log_text = [ "No adapter detected for read1", - "Q30 bases: 12281(88.3716%)"] - def json_text = ['"passed_filter_reads": 198'] - def read1_lines = ["@ERR5069949.2151832 NS500628:121:HK3MMAFX2:2:21208:10793:15304/1", - "TCATAAACCAAAGCACTCACAGTGTCAACAATTTCAGCAGGACAACGCCGACAAGTTCCGAGGAACATGTCTGGACCTATAGTTTTCATAAGTCTACACACTGAATTGAAATATTCTGGTTCTAGTGTGCCCTTAGTTAGCAATGTGCGT", - "AAAAAAEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEAAEEEEAEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEAAEEEEE - { assert path(process.out.reads.get(0).get(1).get(0)).linesGzip.contains(read1_line) } - } - }, - { read2_lines.each { read2_line -> - { assert path(process.out.reads.get(0).get(1).get(1)).linesGzip.contains(read2_line) } - } - }, - { html_text.each { html_part -> - { assert path(process.out.html.get(0).get(1)).getText().contains(html_part) } - } - }, - { json_text.each { json_part -> - { assert path(process.out.json.get(0).get(1)).getText().contains(json_part) } - } - }, - { log_text.each { log_part -> - { assert path(process.out.log.get(0).get(1)).getText().contains(log_part) } - } - }, - { - assert snapshot( - ( - [process.out.reads[0][0].toString()] + // meta - process.out.reads.collect { it[1].collect { item -> file(item).getName() } } + - process.out.json.collect { file(it[1]).getName() } + - process.out.html.collect { file(it[1]).getName() } + - process.out.log.collect { file(it[1]).getName() } + - process.out.reads_fail.collect { file(it[1]).getName() } + - process.out.reads_merged.collect { file(it[1]).getName() } - ).sort() - ).match("test_fastp_paired_end_match") - }, - { assert snapshot(process.out.versions).match("versions_paired_end") } + { assert snapshot( + process.out.reads, + process.out.json, + process.out.versions).match() }, + { assert process.out.reads_fail == [] }, + { assert process.out.reads_merged == [] }, + { assert path(process.out.log.get(0).get(1)).getText().contains("Q30 bases: 12281(88.3716%)") }, + { assert path(process.out.html.get(0).get(1)).getText().contains("The input has little adapter percentage (~0.000000%), probably it's trimmed before.") } ) } } - test("test_fastp_paired_end-stub") { + test("test_fastp_paired_end - stub") { options '-stub' when { - params { - outdir = "$outputDir" - } + process { """ - adapter_fasta = [] - save_trimmed_fail = false - save_merged = false - 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) ] ]) - input[1] = adapter_fasta - input[2] = save_trimmed_fail - input[3] = save_merged + input[1] = [] + input[2] = false + input[3] = false + input[4] = false """ } } @@ -229,20 +128,7 @@ nextflow_process { then { assertAll( { assert process.success }, - { - assert snapshot( - ( - [process.out.reads[0][0].toString()] + // meta - process.out.reads.collect { it[1].collect { item -> file(item).getName() } } + - process.out.json.collect { file(it[1]).getName() } + - process.out.html.collect { file(it[1]).getName() } + - process.out.log.collect { file(it[1]).getName() } + - process.out.reads_fail.collect { file(it[1]).getName() } + - process.out.reads_merged.collect { file(it[1]).getName() } - ).sort() - ).match("test_fastp_paired_end-for_stub_match") - }, - { assert snapshot(process.out.versions).match("versions_paired_end-stub") } + { assert snapshot(process.out).match() }, ) } } @@ -251,92 +137,52 @@ nextflow_process { config './nextflow.interleaved.config' when { - params { - outdir = "$outputDir" - } process { """ - adapter_fasta = [] - save_trimmed_fail = false - save_merged = false - input[0] = Channel.of([ [ id:'test', single_end:true ], // meta map [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_interleaved.fastq.gz', checkIfExists: true) ] ]) - input[1] = adapter_fasta - input[2] = save_trimmed_fail - input[3] = save_merged + input[1] = [] + input[2] = false + input[3] = false + input[4] = false """ } } then { - def html_text = [ "Q20 bases:25.719000 K (93.033098%)", - "paired end (151 cycles + 151 cycles)"] - def log_text = [ "Q20 bases: 12922(92.9841%)", - "reads passed filter: 162"] - def read_lines = [ "@ERR5069949.2151832 NS500628:121:HK3MMAFX2:2:21208:10793:15304/1", - "TCATAAACCAAAGCACTCACAGTGTCAACAATTTCAGCAGGACAACGCCGACAAGTTCCGAGGAACATGTCTGGACCTATAGTTTTCATAAGTCTACACACTGAATTGAAATATTCTGGTTCTAGTGTGCCCTTAGTTAGCAATGTGCGT", - "AAAAAAEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEAAEEEEAEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEAAEEEEE - { assert path(process.out.reads.get(0).get(1)).linesGzip.contains(read_line) } - } - }, - { html_text.each { html_part -> - { assert path(process.out.html.get(0).get(1)).getText().contains(html_part) } - } - }, - { assert snapshot(process.out.json).match("fastp test_fastp_interleaved_json") }, - { log_text.each { log_part -> - { assert path(process.out.log.get(0).get(1)).getText().contains(log_part) } - } - }, - { - assert snapshot( - ( - [process.out.reads[0][0].toString()] + // meta - process.out.reads.collect { file(it[1]).getName() } + - process.out.json.collect { file(it[1]).getName() } + - process.out.html.collect { file(it[1]).getName() } + - process.out.log.collect { file(it[1]).getName() } + - process.out.reads_fail.collect { file(it[1]).getName() } + - process.out.reads_merged.collect { file(it[1]).getName() } - ).sort() - ).match("test_fastp_interleaved-_match") - }, - { assert snapshot(process.out.versions).match("versions_interleaved") } + { assert snapshot( + process.out.reads, + process.out.json, + process.out.versions).match() }, + { assert process.out.reads_fail == [] }, + { assert process.out.reads_merged == [] }, + { assert path(process.out.log.get(0).get(1)).getText().contains("reads passed filter: 162") }, + { assert path(process.out.html.get(0).get(1)).getText().contains("paired end (151 cycles + 151 cycles)") } ) } } - test("fastp test_fastp_interleaved-stub") { + test("fastp test_fastp_interleaved - stub") { options '-stub' config './nextflow.interleaved.config' when { - params { - outdir = "$outputDir" - } + process { """ - adapter_fasta = [] - save_trimmed_fail = false - save_merged = false - input[0] = Channel.of([ [ id:'test', single_end:true ], // meta map [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_interleaved.fastq.gz', checkIfExists: true) ] ]) - input[1] = adapter_fasta - input[2] = save_trimmed_fail - input[3] = save_merged + input[1] = [] + input[2] = false + input[3] = false + input[4] = false """ } } @@ -344,20 +190,7 @@ nextflow_process { then { assertAll( { assert process.success }, - { - assert snapshot( - ( - [process.out.reads[0][0].toString()] + // meta - process.out.reads.collect { file(it[1]).getName() } + - process.out.json.collect { file(it[1]).getName() } + - process.out.html.collect { file(it[1]).getName() } + - process.out.log.collect { file(it[1]).getName() } + - process.out.reads_fail.collect { file(it[1]).getName() } + - process.out.reads_merged.collect { file(it[1]).getName() } - ).sort() - ).match("test_fastp_interleaved-for_stub_match") - }, - { assert snapshot(process.out.versions).match("versions_interleaved-stub") } + { assert snapshot(process.out).match() }, ) } } @@ -365,60 +198,32 @@ nextflow_process { test("test_fastp_single_end_trim_fail") { when { - params { - outdir = "$outputDir" - } + process { """ - adapter_fasta = [] - save_trimmed_fail = true - save_merged = false - input[0] = Channel.of([ [ id:'test', single_end:true ], // meta map [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true) ] ]) - input[1] = adapter_fasta - input[2] = save_trimmed_fail - input[3] = save_merged + input[1] = [] + input[2] = false + input[3] = true + input[4] = false """ } } then { - def html_text = [ "Q20 bases:12.922000 K (92.984097%)", - "single end (151 cycles)"] - def log_text = [ "Q20 bases: 12922(92.9841%)", - "reads passed filter: 99" ] - def read_lines = [ "@ERR5069949.2151832 NS500628:121:HK3MMAFX2:2:21208:10793:15304/1", - "TCATAAACCAAAGCACTCACAGTGTCAACAATTTCAGCAGGACAACGCCGACAAGTTCCGAGGAACATGTCTGGACCTATAGTTTTCATAAGTCTACACACTGAATTGAAATATTCTGGTTCTAGTGTGCCCTTAGTTAGCAATGTGCGT", - "AAAAAAEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEAAEEEEAEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEAAEEEEE - { assert path(process.out.reads.get(0).get(1)).linesGzip.contains(read_line) } - } - }, - { failed_read_lines.each { failed_read_line -> - { assert path(process.out.reads_fail.get(0).get(1)).linesGzip.contains(failed_read_line) } - } - }, - { html_text.each { html_part -> - { assert path(process.out.html.get(0).get(1)).getText().contains(html_part) } - } - }, - { assert snapshot(process.out.json).match("test_fastp_single_end_trim_fail_json") }, - { log_text.each { log_part -> - { assert path(process.out.log.get(0).get(1)).getText().contains(log_part) } - } - }, - { assert snapshot(process.out.versions).match("versions_single_end_trim_fail") } + { assert snapshot( + process.out.reads, + process.out.reads_fail, + process.out.json, + process.out.versions).match() }, + { assert process.out.reads_merged == [] }, + { assert path(process.out.log.get(0).get(1)).getText().contains("reads passed filter: 99") }, + { assert path(process.out.html.get(0).get(1)).getText().contains("single end (151 cycles)") }, ) } } @@ -427,77 +232,32 @@ nextflow_process { config './nextflow.save_failed.config' when { - params { - outdir = "$outputDir" - } process { """ - adapter_fasta = [] - save_trimmed_fail = true - save_merged = false - 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)] ]) - input[1] = adapter_fasta - input[2] = save_trimmed_fail - input[3] = save_merged + input[1] = [] + input[2] = false + input[3] = true + input[4] = false """ } } then { - def html_text = [ "Q20 bases:25.719000 K (93.033098%)", - "The input has little adapter percentage (~0.000000%), probably it's trimmed before."] - def log_text = [ "No adapter detected for read1", - "Q30 bases: 12281(88.3716%)"] - def json_text = ['"passed_filter_reads": 162'] - def read1_lines = ["@ERR5069949.2151832 NS500628:121:HK3MMAFX2:2:21208:10793:15304/1", - "TCATAAACCAAAGCACTCACAGTGTCAACAATTTCAGCAGGACAACGCCGACAAGTTCCGAGGAACATGTCTGGACCTATAGTTTTCATAAGTCTACACACTGAATTGAAATATTCTGGTTCTAGTGTGCCCTTAGTTAGCAATGTGCGT", - "AAAAAAEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEAAEEEEAEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEAAEEEEE - { assert path(process.out.reads.get(0).get(1).get(0)).linesGzip.contains(read1_line) } - } - }, - { read2_lines.each { read2_line -> - { assert path(process.out.reads.get(0).get(1).get(1)).linesGzip.contains(read2_line) } - } - }, - { failed_read2_lines.each { failed_read2_line -> - { assert path(process.out.reads_fail.get(0).get(1).get(2)).linesGzip.contains(failed_read2_line) } - } - }, - { html_text.each { html_part -> - { assert path(process.out.html.get(0).get(1)).getText().contains(html_part) } - } - }, - { json_text.each { json_part -> - { assert path(process.out.json.get(0).get(1)).getText().contains(json_part) } - } - }, - { log_text.each { log_part -> - { assert path(process.out.log.get(0).get(1)).getText().contains(log_part) } - } - }, - { assert snapshot(process.out.versions).match("versions_paired_end_trim_fail") } + { assert snapshot( + process.out.reads, + process.out.reads_fail, + process.out.json, + process.out.versions).match() }, + { assert process.out.reads_merged == [] }, + { assert path(process.out.log.get(0).get(1)).getText().contains("reads passed filter: 162") }, + { assert path(process.out.html.get(0).get(1)).getText().contains("The input has little adapter percentage (~0.000000%), probably it's trimmed before.") } ) } } @@ -505,90 +265,32 @@ nextflow_process { test("test_fastp_paired_end_merged") { when { - params { - outdir = "$outputDir" - } process { """ - adapter_fasta = [] - save_trimmed_fail = false - save_merged = true 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) ] ]) - input[1] = adapter_fasta - input[2] = save_trimmed_fail - input[3] = save_merged + input[1] = [] + input[2] = false + input[3] = false + input[4] = true """ } } then { - def html_text = [ "
    "] - def log_text = [ "Merged and filtered:", - "total reads: 75", - "total bases: 13683"] - def json_text = ['"merged_and_filtered": {', '"total_reads": 75', '"total_bases": 13683'] - def read1_lines = [ "@ERR5069949.1066259 NS500628:121:HK3MMAFX2:1:11312:18369:8333/1", - "CCTTATGACAGCAAGAACTGTGTATGATGATGGTGCTAGGAGAGTGTGGACACTTATGAATGTCTTGACACTCGTTTATAAAGTTTATTATGGTAATGCTTTAGATCAAGCCATTTCCATGTGGGCTCTTATAATCTCTGTTACTTC", - "AAAAAEAEEAEEEEEEEEEEEEEEEEAEEEEAEEEEEEEEAEEEEEEEEEEEEEEEEE/EAEEEEEE/6EEEEEEEEEEAEEAEEE/EE/AEEAEEEEEAEEEA/EEAAEAE - { assert path(process.out.reads.get(0).get(1).get(0)).linesGzip.contains(read1_line) } - } - }, - { read2_lines.each { read2_line -> - { assert path(process.out.reads.get(0).get(1).get(1)).linesGzip.contains(read2_line) } - } - }, - { read_merged_lines.each { read_merged_line -> - { assert path(process.out.reads_merged.get(0).get(1)).linesGzip.contains(read_merged_line) } - } - }, - { html_text.each { html_part -> - { assert path(process.out.html.get(0).get(1)).getText().contains(html_part) } - } - }, - { json_text.each { json_part -> - { assert path(process.out.json.get(0).get(1)).getText().contains(json_part) } - } - }, - { log_text.each { log_part -> - { assert path(process.out.log.get(0).get(1)).getText().contains(log_part) } - } - }, - { - assert snapshot( - ( - [process.out.reads[0][0].toString()] + // meta - process.out.reads.collect { it[1].collect { item -> file(item).getName() } } + - process.out.json.collect { file(it[1]).getName() } + - process.out.html.collect { file(it[1]).getName() } + - process.out.log.collect { file(it[1]).getName() } + - process.out.reads_fail.collect { file(it[1]).getName() } + - process.out.reads_merged.collect { file(it[1]).getName() } - ).sort() - ).match("test_fastp_paired_end_merged_match") - }, - { assert snapshot(process.out.versions).match("versions_paired_end_merged") } + { assert snapshot( + process.out.reads, + process.out.reads_merged, + process.out.json, + process.out.versions).match() }, + { assert process.out.reads_fail == [] }, + { assert path(process.out.log.get(0).get(1)).getText().contains("total reads: 75") }, + { assert path(process.out.html.get(0).get(1)).getText().contains("The input has little adapter percentage (~0.000000%), probably it's trimmed before.") } ) } } @@ -598,23 +300,17 @@ nextflow_process { options '-stub' when { - params { - outdir = "$outputDir" - } process { """ - adapter_fasta = [] - save_trimmed_fail = false - save_merged = true - 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) ] ]) - input[1] = adapter_fasta - input[2] = save_trimmed_fail - input[3] = save_merged + input[1] = [] + input[2] = false + input[3] = false + input[4] = true """ } } @@ -622,101 +318,171 @@ nextflow_process { then { assertAll( { assert process.success }, - { - assert snapshot( - ( - [process.out.reads[0][0].toString()] + // meta - process.out.reads.collect { it[1].collect { item -> file(item).getName() } } + - process.out.json.collect { file(it[1]).getName() } + - process.out.html.collect { file(it[1]).getName() } + - process.out.log.collect { file(it[1]).getName() } + - process.out.reads_fail.collect { file(it[1]).getName() } + - process.out.reads_merged.collect { file(it[1]).getName() } - ).sort() - ).match("test_fastp_paired_end_merged-for_stub_match") - }, - { assert snapshot(process.out.versions).match("versions_paired_end_merged_stub") } + { assert snapshot(process.out).match() }, ) } } test("test_fastp_paired_end_merged_adapterlist") { + 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) ] + ]) + input[1] = Channel.of([ file(params.modules_testdata_base_path + 'delete_me/fastp/adapters.fasta', checkIfExists: true) ]) + input[2] = false + input[3] = false + input[4] = true + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + process.out.reads, + process.out.reads_merged, + process.out.json, + process.out.versions).match() }, + { assert process.out.reads_fail == [] }, + { assert path(process.out.log.get(0).get(1)).getText().contains("total bases: 13683") }, + { assert path(process.out.html.get(0).get(1)).getText().contains("
    ") } + ) + } + } + + test("test_fastp_single_end_qc_only") { + + 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) ] + ]) + input[1] = [] + input[2] = true + input[3] = false + input[4] = false + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + process.out.reads, + process.out.reads_fail, + process.out.reads_merged, + process.out.json, + process.out.versions).match() }, + { assert process.out.reads == [] }, + { assert process.out.reads_fail == [] }, + { assert process.out.reads_merged == [] }, + { assert path(process.out.log.get(0).get(1)).getText().contains("reads passed filter: 99") }, + { assert path(process.out.html.get(0).get(1)).getText().contains("single end (151 cycles)") }, + ) + } + } + + test("test_fastp_single_end_qc_only-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) ] + ]) + input[1] = [] + input[2] = true + input[3] = false + input[4] = false + """ + } + } + + then { + + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() }, + ) + } + } + + test("test_fastp_paired_end_qc_only") { + when { params { outdir = "$outputDir" } process { """ - adapter_fasta = Channel.of([ file(params.modules_testdata_base_path + 'delete_me/fastp/adapters.fasta', checkIfExists: true) ]) - save_trimmed_fail = false - save_merged = true - 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) ] ]) - input[1] = adapter_fasta - input[2] = save_trimmed_fail - input[3] = save_merged + input[1] = [] + input[2] = true + input[3] = false + input[4] = false """ } } then { - def html_text = [ "
    "] - def log_text = [ "Merged and filtered:", - "total reads: 75", - "total bases: 13683"] - def json_text = ['"merged_and_filtered": {', '"total_reads": 75', '"total_bases": 13683',"--adapter_fasta"] - def read1_lines = ["@ERR5069949.1066259 NS500628:121:HK3MMAFX2:1:11312:18369:8333/1", - "CCTTATGACAGCAAGAACTGTGTATGATGATGGTGCTAGGAGAGTGTGGACACTTATGAATGTCTTGACACTCGTTTATAAAGTTTATTATGGTAATGCTTTAGATCAAGCCATTTCCATGTGGGCTCTTATAATCTCTGTTACTTC", - "AAAAAEAEEAEEEEEEEEEEEEEEEEAEEEEAEEEEEEEEAEEEEEEEEEEEEEEEEE/EAEEEEEE/6EEEEEEEEEEAEEAEEE/EE/AEEAEEEEEAEEEA/EEAAEAE - { assert path(process.out.reads.get(0).get(1).get(0)).linesGzip.contains(read1_line) } - } - }, - { read2_lines.each { read2_line -> - { assert path(process.out.reads.get(0).get(1).get(1)).linesGzip.contains(read2_line) } - } - }, - { read_merged_lines.each { read_merged_line -> - { assert path(process.out.reads_merged.get(0).get(1)).linesGzip.contains(read_merged_line) } - } - }, - { html_text.each { html_part -> - { assert path(process.out.html.get(0).get(1)).getText().contains(html_part) } - } - }, - { json_text.each { json_part -> - { assert path(process.out.json.get(0).get(1)).getText().contains(json_part) } - } - }, - { log_text.each { log_part -> - { assert path(process.out.log.get(0).get(1)).getText().contains(log_part) } - } - }, - { assert snapshot(process.out.versions).match("versions_paired_end_merged_adapterlist") } + { assert snapshot(process.out).match() }, ) } } -} +} \ No newline at end of file diff --git a/modules/nf-core/fastp/tests/main.nf.test.snap b/modules/nf-core/fastp/tests/main.nf.test.snap index 3e8762889..b609b9a2a 100644 --- a/modules/nf-core/fastp/tests/main.nf.test.snap +++ b/modules/nf-core/fastp/tests/main.nf.test.snap @@ -1,330 +1,966 @@ { - "fastp test_fastp_interleaved_json": { + "test_fastp_paired_end_qc_only-stub": { "content": [ - [ - [ - { - "id": "test", - "single_end": true - }, - "test.fastp.json:md5,b24e0624df5cc0b11cd5ba21b726fb22" + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test_1.fastp.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "test_2.fastp.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": false + }, + "test.fastp.json:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + [ + { + "id": "test", + "single_end": false + }, + "test.fastp.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "3": [ + [ + { + "id": "test", + "single_end": false + }, + "test.fastp.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "4": [ + + ], + "5": [ + + ], + "6": [ + "versions.yml:md5,48ffc994212fb1fc9f83a74fa69c9f02" + ], + "html": [ + [ + { + "id": "test", + "single_end": false + }, + "test.fastp.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "json": [ + [ + { + "id": "test", + "single_end": false + }, + "test.fastp.json:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "log": [ + [ + { + "id": "test", + "single_end": false + }, + "test.fastp.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "reads": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test_1.fastp.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "test_2.fastp.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ] + ], + "reads_fail": [ + + ], + "reads_merged": [ + + ], + "versions": [ + "versions.yml:md5,48ffc994212fb1fc9f83a74fa69c9f02" ] - ] + } ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.2" }, - "timestamp": "2024-03-18T16:19:15.063001" + "timestamp": "2024-06-08T05:42:26.603745039" }, - "test_fastp_paired_end_merged-for_stub_match": { + "test_fastp_paired_end": { "content": [ [ [ - "test_1.fastp.fastq.gz", - "test_2.fastp.fastq.gz" - ], - "test.fastp.html", - "test.fastp.json", - "test.fastp.log", - "test.merged.fastq.gz", - "{id=test, single_end=false}" - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-01-17T18:10:13.467574" - }, - "versions_interleaved": { - "content": [ - [ - "versions.yml:md5,48ffc994212fb1fc9f83a74fa69c9f02" - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-02-01T11:56:24.615634793" - }, - "test_fastp_single_end_json": { - "content": [ + { + "id": "test", + "single_end": false + }, + [ + "test_1.fastp.fastq.gz:md5,67b2bbae47f073e05a97a9c2edce23c7", + "test_2.fastp.fastq.gz:md5,25cbdca08e2083dbd4f0502de6b62f39" + ] + ] + ], [ [ { "id": "test", - "single_end": true + "single_end": false }, - "test.fastp.json:md5,c852d7a6dba5819e4ac8d9673bedcacc" + "test.fastp.json:md5,1e0f8e27e71728e2b63fc64086be95cd" ] - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-03-18T16:18:43.526412" - }, - "versions_paired_end": { - "content": [ + ], [ "versions.yml:md5,48ffc994212fb1fc9f83a74fa69c9f02" ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.2" }, - "timestamp": "2024-02-01T11:55:42.333545689" + "timestamp": "2024-06-10T13:02:09.747686552" }, - "test_fastp_paired_end_match": { + "fastp test_fastp_interleaved - stub": { "content": [ - [ - [ - "test_1.fastp.fastq.gz", - "test_2.fastp.fastq.gz" + { + "0": [ + [ + { + "id": "test", + "single_end": true + }, + "test.fastp.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] ], - "test.fastp.html", - "test.fastp.json", - "test.fastp.log", - "{id=test, single_end=false}" - ] + "1": [ + [ + { + "id": "test", + "single_end": true + }, + "test.fastp.json:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + [ + { + "id": "test", + "single_end": true + }, + "test.fastp.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "3": [ + [ + { + "id": "test", + "single_end": true + }, + "test.fastp.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "4": [ + + ], + "5": [ + + ], + "6": [ + "versions.yml:md5,48ffc994212fb1fc9f83a74fa69c9f02" + ], + "html": [ + [ + { + "id": "test", + "single_end": true + }, + "test.fastp.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "json": [ + [ + { + "id": "test", + "single_end": true + }, + "test.fastp.json:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "log": [ + [ + { + "id": "test", + "single_end": true + }, + "test.fastp.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "reads": [ + [ + { + "id": "test", + "single_end": true + }, + "test.fastp.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "reads_fail": [ + + ], + "reads_merged": [ + + ], + "versions": [ + "versions.yml:md5,48ffc994212fb1fc9f83a74fa69c9f02" + ] + } ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.2" }, - "timestamp": "2024-02-01T12:03:06.431833729" + "timestamp": "2024-06-10T13:03:09.374379128" }, - "test_fastp_interleaved-_match": { + "test_fastp_paired_end_merged_adapterlist": { "content": [ [ - "test.fastp.fastq.gz", - "test.fastp.html", - "test.fastp.json", - "test.fastp.log", - "{id=test, single_end=true}" - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-03-18T16:19:15.111894" - }, - "test_fastp_paired_end_merged_match": { - "content": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test_1.fastp.fastq.gz:md5,54b726a55e992a869fd3fa778afe1672", + "test_2.fastp.fastq.gz:md5,29d3b33b869f7b63417b8ff07bb128ba" + ] + ] + ], [ [ - "test_1.fastp.fastq.gz", - "test_2.fastp.fastq.gz" - ], - "test.fastp.html", - "test.fastp.json", - "test.fastp.log", - "test.merged.fastq.gz", - "{id=test, single_end=false}" - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-02-01T12:08:44.496251446" - }, - "versions_single_end_stub": { - "content": [ + { + "id": "test", + "single_end": false + }, + "test.merged.fastq.gz:md5,c873bb1ab3fa859dcc47306465e749d5" + ] + ], [ - "versions.yml:md5,48ffc994212fb1fc9f83a74fa69c9f02" - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-02-01T11:55:27.354051299" - }, - "versions_interleaved-stub": { - "content": [ + [ + { + "id": "test", + "single_end": false + }, + "test.fastp.json:md5,5914ca3f21ce162123a824e33e8564f6" + ] + ], [ "versions.yml:md5,48ffc994212fb1fc9f83a74fa69c9f02" ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.2" }, - "timestamp": "2024-02-01T11:56:46.535528418" + "timestamp": "2024-06-10T13:04:47.637461379" }, - "versions_single_end_trim_fail": { + "test_fastp_single_end_qc_only": { "content": [ + [ + + ], + [ + + ], + [ + + ], + [ + [ + { + "id": "test", + "single_end": true + }, + "test.fastp.json:md5,5cc5f01e449309e0e689ed6f51a2294a" + ] + ], [ "versions.yml:md5,48ffc994212fb1fc9f83a74fa69c9f02" ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.2" }, - "timestamp": "2024-02-01T11:59:03.724591407" + "timestamp": "2024-06-10T20:11:50.885505279" }, - "test_fastp_paired_end-for_stub_match": { + "test_fastp_single_end-stub": { "content": [ - [ - [ - "test_1.fastp.fastq.gz", - "test_2.fastp.fastq.gz" + { + "0": [ + [ + { + "id": "test", + "single_end": true + }, + "test.fastp.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] ], - "test.fastp.html", - "test.fastp.json", - "test.fastp.log", - "{id=test, single_end=false}" - ] + "1": [ + [ + { + "id": "test", + "single_end": true + }, + "test.fastp.json:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + [ + { + "id": "test", + "single_end": true + }, + "test.fastp.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "3": [ + [ + { + "id": "test", + "single_end": true + }, + "test.fastp.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "4": [ + + ], + "5": [ + + ], + "6": [ + "versions.yml:md5,48ffc994212fb1fc9f83a74fa69c9f02" + ], + "html": [ + [ + { + "id": "test", + "single_end": true + }, + "test.fastp.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "json": [ + [ + { + "id": "test", + "single_end": true + }, + "test.fastp.json:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "log": [ + [ + { + "id": "test", + "single_end": true + }, + "test.fastp.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "reads": [ + [ + { + "id": "test", + "single_end": true + }, + "test.fastp.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "reads_fail": [ + + ], + "reads_merged": [ + + ], + "versions": [ + "versions.yml:md5,48ffc994212fb1fc9f83a74fa69c9f02" + ] + } ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.2" }, - "timestamp": "2024-01-17T18:07:15.398827" + "timestamp": "2024-06-10T13:01:55.987280865" }, - "versions_paired_end-stub": { + "test_fastp_paired_end_trim_fail": { "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test_1.fastp.fastq.gz:md5,6ff32a64c5188b9a9192be1398c262c7", + "test_2.fastp.fastq.gz:md5,db0cb7c9977e94ac2b4b446ebd017a8a" + ] + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test.paired.fail.fastq.gz:md5,409b687c734cedd7a1fec14d316e1366", + "test_1.fail.fastq.gz:md5,4f273cf3159c13f79e8ffae12f5661f6", + "test_2.fail.fastq.gz:md5,f97b9edefb5649aab661fbc9e71fc995" + ] + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test.fastp.json:md5,4c3268ddb50ea5b33125984776aa3519" + ] + ], [ "versions.yml:md5,48ffc994212fb1fc9f83a74fa69c9f02" ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.2" }, - "timestamp": "2024-02-01T11:56:06.50017282" + "timestamp": "2024-06-10T13:03:46.458766801" }, - "versions_single_end": { + "test_fastp_paired_end - stub": { "content": [ - [ - "versions.yml:md5,48ffc994212fb1fc9f83a74fa69c9f02" - ] + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test_1.fastp.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "test_2.fastp.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": false + }, + "test.fastp.json:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + [ + { + "id": "test", + "single_end": false + }, + "test.fastp.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "3": [ + [ + { + "id": "test", + "single_end": false + }, + "test.fastp.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "4": [ + + ], + "5": [ + + ], + "6": [ + "versions.yml:md5,48ffc994212fb1fc9f83a74fa69c9f02" + ], + "html": [ + [ + { + "id": "test", + "single_end": false + }, + "test.fastp.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "json": [ + [ + { + "id": "test", + "single_end": false + }, + "test.fastp.json:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "log": [ + [ + { + "id": "test", + "single_end": false + }, + "test.fastp.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "reads": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test_1.fastp.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "test_2.fastp.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ] + ], + "reads_fail": [ + + ], + "reads_merged": [ + + ], + "versions": [ + "versions.yml:md5,48ffc994212fb1fc9f83a74fa69c9f02" + ] + } ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.2" }, - "timestamp": "2024-02-01T11:55:07.67921647" + "timestamp": "2024-06-08T05:36:36.446112695" }, - "versions_paired_end_merged_stub": { + "test_fastp_paired_end_merged": { "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test_1.fastp.fastq.gz:md5,54b726a55e992a869fd3fa778afe1672", + "test_2.fastp.fastq.gz:md5,29d3b33b869f7b63417b8ff07bb128ba" + ] + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test.merged.fastq.gz:md5,c873bb1ab3fa859dcc47306465e749d5" + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test.fastp.json:md5,b712fd68ed0322f4bec49ff2a5237fcc" + ] + ], [ "versions.yml:md5,48ffc994212fb1fc9f83a74fa69c9f02" ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.2" }, - "timestamp": "2024-02-01T11:59:47.350653154" + "timestamp": "2024-06-10T13:04:09.964580373" }, - "test_fastp_interleaved-for_stub_match": { + "test_fastp_single_end": { "content": [ [ - "test.fastp.fastq.gz", - "test.fastp.html", - "test.fastp.json", - "test.fastp.log", - "{id=test, single_end=true}" - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-01-17T18:08:06.127974" - }, - "versions_paired_end_trim_fail": { - "content": [ + [ + { + "id": "test", + "single_end": true + }, + "test.fastp.fastq.gz:md5,67b2bbae47f073e05a97a9c2edce23c7" + ] + ], + [ + [ + { + "id": "test", + "single_end": true + }, + "test.fastp.json:md5,c852d7a6dba5819e4ac8d9673bedcacc" + ] + ], [ "versions.yml:md5,48ffc994212fb1fc9f83a74fa69c9f02" ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.2" }, - "timestamp": "2024-02-01T11:59:18.140484878" + "timestamp": "2024-06-10T13:01:34.044931225" }, - "test_fastp_single_end-for_stub_match": { + "test_fastp_paired_end_merged-stub": { "content": [ - [ - "test.fastp.fastq.gz", - "test.fastp.html", - "test.fastp.json", - "test.fastp.log", - "{id=test, single_end=true}" - ] + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test_1.fastp.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "test_2.fastp.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": false + }, + "test.fastp.json:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + [ + { + "id": "test", + "single_end": false + }, + "test.fastp.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "3": [ + [ + { + "id": "test", + "single_end": false + }, + "test.fastp.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "4": [ + + ], + "5": [ + [ + { + "id": "test", + "single_end": false + }, + "test.merged.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "6": [ + "versions.yml:md5,48ffc994212fb1fc9f83a74fa69c9f02" + ], + "html": [ + [ + { + "id": "test", + "single_end": false + }, + "test.fastp.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "json": [ + [ + { + "id": "test", + "single_end": false + }, + "test.fastp.json:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "log": [ + [ + { + "id": "test", + "single_end": false + }, + "test.fastp.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "reads": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test_1.fastp.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "test_2.fastp.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ] + ], + "reads_fail": [ + + ], + "reads_merged": [ + [ + { + "id": "test", + "single_end": false + }, + "test.merged.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "versions": [ + "versions.yml:md5,48ffc994212fb1fc9f83a74fa69c9f02" + ] + } ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.2" }, - "timestamp": "2024-01-17T18:06:00.244202" + "timestamp": "2024-06-08T05:39:42.022707162" }, - "test_fastp_single_end-_match": { + "test_fastp_single_end_qc_only-stub": { "content": [ - [ - "test.fastp.fastq.gz", - "test.fastp.html", - "test.fastp.json", - "test.fastp.log", - "{id=test, single_end=true}" - ] + { + "0": [ + [ + { + "id": "test", + "single_end": true + }, + [ + "test_1.fastp.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "test_2.fastp.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": true + }, + "test.fastp.json:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + [ + { + "id": "test", + "single_end": true + }, + "test.fastp.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "3": [ + [ + { + "id": "test", + "single_end": true + }, + "test.fastp.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "4": [ + + ], + "5": [ + + ], + "6": [ + "versions.yml:md5,48ffc994212fb1fc9f83a74fa69c9f02" + ], + "html": [ + [ + { + "id": "test", + "single_end": true + }, + "test.fastp.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "json": [ + [ + { + "id": "test", + "single_end": true + }, + "test.fastp.json:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "log": [ + [ + { + "id": "test", + "single_end": true + }, + "test.fastp.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "reads": [ + [ + { + "id": "test", + "single_end": true + }, + [ + "test_1.fastp.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "test_2.fastp.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ] + ], + "reads_fail": [ + + ], + "reads_merged": [ + + ], + "versions": [ + "versions.yml:md5,48ffc994212fb1fc9f83a74fa69c9f02" + ] + } ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.2" }, - "timestamp": "2024-03-18T16:18:43.580336" + "timestamp": "2024-06-10T13:05:31.722431847" }, - "versions_paired_end_merged_adapterlist": { + "fastp test_fastp_interleaved": { "content": [ + [ + [ + { + "id": "test", + "single_end": true + }, + "test.fastp.fastq.gz:md5,217d62dc13a23e92513a1bd8e1bcea39" + ] + ], + [ + [ + { + "id": "test", + "single_end": true + }, + "test.fastp.json:md5,b24e0624df5cc0b11cd5ba21b726fb22" + ] + ], [ "versions.yml:md5,48ffc994212fb1fc9f83a74fa69c9f02" ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.2" }, - "timestamp": "2024-02-01T12:05:37.845370554" + "timestamp": "2024-06-07T22:35:04.608948751" }, - "versions_paired_end_merged": { + "test_fastp_single_end_trim_fail": { "content": [ + [ + [ + { + "id": "test", + "single_end": true + }, + "test.fastp.fastq.gz:md5,67b2bbae47f073e05a97a9c2edce23c7" + ] + ], + [ + [ + { + "id": "test", + "single_end": true + }, + "test.fail.fastq.gz:md5,3e4aaadb66a5b8fc9b881bf39c227abd" + ] + ], + [ + [ + { + "id": "test", + "single_end": true + }, + "test.fastp.json:md5,9a7ee180f000e8d00c7fb67f06293eb5" + ] + ], [ "versions.yml:md5,48ffc994212fb1fc9f83a74fa69c9f02" ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.2" }, - "timestamp": "2024-02-01T11:59:32.860543858" + "timestamp": "2024-06-10T13:03:23.130471376" }, - "test_fastp_single_end_trim_fail_json": { + "test_fastp_paired_end_qc_only": { "content": [ + [ + + ], + [ + + ], + [ + + ], [ [ { "id": "test", - "single_end": true + "single_end": false }, - "test.fastp.json:md5,9a7ee180f000e8d00c7fb67f06293eb5" + "test.fastp.json:md5,623064a45912dac6f2b64e3f2e9901df" ] + ], + [ + "versions.yml:md5,48ffc994212fb1fc9f83a74fa69c9f02" ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.2" }, - "timestamp": "2024-01-17T18:08:41.942317" + "timestamp": "2024-06-10T20:12:14.00927619" } } \ No newline at end of file diff --git a/modules/nf-core/gffread/environment.yml b/modules/nf-core/gffread/environment.yml index 5398f71c5..c6df58ad0 100644 --- a/modules/nf-core/gffread/environment.yml +++ b/modules/nf-core/gffread/environment.yml @@ -4,4 +4,4 @@ channels: - bioconda - defaults dependencies: - - bioconda::gffread=0.12.1 + - bioconda::gffread=0.12.7 diff --git a/modules/nf-core/gffread/main.nf b/modules/nf-core/gffread/main.nf index d8a473e0a..da55cbab7 100644 --- a/modules/nf-core/gffread/main.nf +++ b/modules/nf-core/gffread/main.nf @@ -1,32 +1,57 @@ process GFFREAD { - tag "$gff" + 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/gffread:0.12.1--h8b12597_0' : - 'biocontainers/gffread:0.12.1--h8b12597_0' }" + 'https://depot.galaxyproject.org/singularity/gffread:0.12.7--hdcf5f25_4' : + 'biocontainers/gffread:0.12.7--hdcf5f25_4' }" input: - path gff + tuple val(meta), path(gff) + path fasta output: - path "*.gtf" , emit: gtf , optional: true - path "*.gff3" , emit: gffread_gff , optional: true - path "versions.yml" , emit: versions + tuple val(meta), path("*.gtf") , emit: gtf , optional: true + tuple val(meta), path("*.gff3") , emit: gffread_gff , optional: true + tuple val(meta), path("*.fasta"), emit: gffread_fasta , optional: true + path "versions.yml" , emit: versions when: task.ext.when == null || task.ext.when script: - def args = task.ext.args ?: '' - def prefix = task.ext.prefix ?: "${gff.baseName}" - def extension = args.contains("-T") ? 'gtf' : 'gffread.gff3' + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + def extension = args.contains("-T") ? 'gtf' : ( ( ['-w', '-x', '-y' ].any { args.contains(it) } ) ? 'fasta' : 'gff3' ) + def fasta_arg = fasta ? "-g $fasta" : '' + def output_name = "${prefix}.${extension}" + def output = extension == "fasta" ? "$output_name" : "-o $output_name" + def args_sorted = args.replaceAll(/(.*)(-[wxy])(.*)/) { all, pre, param, post -> "$pre $post $param" }.trim() + // args_sorted = Move '-w', '-x', and '-y' to the end of the args string as gffread expects the file name after these parameters + if ( "$output_name" in [ "$gff", "$fasta" ] ) error "Input and output names are the same, use \"task.ext.prefix\" to disambiguate!" """ gffread \\ $gff \\ - $args \\ - -o ${prefix}.${extension} + $fasta_arg \\ + $args_sorted \\ + $output + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + gffread: \$(gffread --version 2>&1) + END_VERSIONS + """ + + stub: + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + def extension = args.contains("-T") ? 'gtf' : ( ( ['-w', '-x', '-y' ].any { args.contains(it) } ) ? 'fasta' : 'gff3' ) + def output_name = "${prefix}.${extension}" + if ( "$output_name" in [ "$gff", "$fasta" ] ) error "Input and output names are the same, use \"task.ext.prefix\" to disambiguate!" + """ + touch $output_name + cat <<-END_VERSIONS > versions.yml "${task.process}": gffread: \$(gffread --version 2>&1) diff --git a/modules/nf-core/gffread/meta.yml b/modules/nf-core/gffread/meta.yml index d38cbcda9..c06028208 100644 --- a/modules/nf-core/gffread/meta.yml +++ b/modules/nf-core/gffread/meta.yml @@ -13,11 +13,25 @@ tools: doi: 10.12688/f1000research.23297.1 licence: ["MIT"] input: + - meta: + type: map + description: | + Groovy Map containing meta data + e.g. [ id:'test' ] - gff: type: file description: A reference file in either the GFF3, GFF2 or GTF format. pattern: "*.{gff, gtf}" + - fasta: + type: file + description: A multi-fasta file with the genomic sequences + pattern: "*.{fasta,fa,faa,fas,fsa}" output: + - meta: + type: map + description: | + Groovy Map containing meta data + e.g. [ id:'test' ] - gtf: type: file description: GTF file resulting from the conversion of the GFF input file if '-T' argument is present @@ -25,7 +39,11 @@ output: - gffread_gff: type: file description: GFF3 file resulting from the conversion of the GFF input file if '-T' argument is absent - pattern: "*.{gff3}" + pattern: "*.gff3" + - gffread_fasta: + type: file + description: Fasta file produced when either of '-w', '-x', '-y' parameters is present + pattern: "*.fasta" - versions: type: file description: File containing software versions @@ -34,3 +52,4 @@ authors: - "@edmundmiller" maintainers: - "@edmundmiller" + - "@gallvp" diff --git a/modules/nf-core/gffread/tests/main.nf.test b/modules/nf-core/gffread/tests/main.nf.test index 82bb66925..e03820f4d 100644 --- a/modules/nf-core/gffread/tests/main.nf.test +++ b/modules/nf-core/gffread/tests/main.nf.test @@ -14,7 +14,11 @@ nextflow_process { } process { """ - input[0] = file(params.modules_testdata_base_path + "genomics/sarscov2/genome/genome.gff3", checkIfExists: true) + input[0] = [ + [id: 'test'], + file(params.modules_testdata_base_path + "genomics/sarscov2/genome/genome.gff3", checkIfExists: true) + ] + input[1] = [] """ } } @@ -22,11 +26,40 @@ nextflow_process { then { assertAll ( { assert process.success }, - { assert snapshot( - process.out.gtf, - process.out.versions - ).match() }, - { assert process.out.gffread_gff == [] } + { assert snapshot(process.out).match() }, + { assert process.out.gffread_gff == [] }, + { assert process.out.gffread_fasta == [] } + ) + } + + } + + test("sarscov2-gff3-gtf-stub") { + + options '-stub' + config "./nextflow.config" + + when { + params { + outdir = "$outputDir" + } + process { + """ + input[0] = [ + [id: 'test'], + file(params.modules_testdata_base_path + "genomics/sarscov2/genome/genome.gff3", checkIfExists: true) + ] + input[1] = [] + """ + } + } + + then { + assertAll ( + { assert process.success }, + { assert snapshot(process.out).match() }, + { assert process.out.gffread_gff == [] }, + { assert process.out.gffread_fasta == [] } ) } @@ -42,7 +75,42 @@ nextflow_process { } process { """ - input[0] = file(params.modules_testdata_base_path + "genomics/sarscov2/genome/genome.gff3", checkIfExists: true) + input[0] = [ + [id: 'test'], + file(params.modules_testdata_base_path + "genomics/sarscov2/genome/genome.gff3", checkIfExists: true) + ] + input[1] = [] + """ + } + } + + then { + assertAll ( + { assert process.success }, + { assert snapshot(process.out).match() }, + { assert process.out.gtf == [] }, + { assert process.out.gffread_fasta == [] } + ) + } + + } + + test("sarscov2-gff3-gff3-stub") { + + options '-stub' + config "./nextflow-gff3.config" + + when { + params { + outdir = "$outputDir" + } + process { + """ + input[0] = [ + [id: 'test'], + file(params.modules_testdata_base_path + "genomics/sarscov2/genome/genome.gff3", checkIfExists: true) + ] + input[1] = [] """ } } @@ -50,11 +118,99 @@ nextflow_process { then { assertAll ( { assert process.success }, - { assert snapshot( - process.out.gffread_gff, - process.out.versions - ).match() }, + { assert snapshot(process.out).match() }, { assert process.out.gtf == [] }, + { assert process.out.gffread_fasta == [] } + ) + } + + } + + test("sarscov2-gff3-fasta") { + + config "./nextflow-fasta.config" + + when { + params { + outdir = "$outputDir" + } + process { + """ + input[0] = [ + [id: 'test'], + file(params.modules_testdata_base_path + "genomics/sarscov2/genome/genome.gff3", checkIfExists: true) + ] + input[1] = file(params.modules_testdata_base_path + "genomics/sarscov2/genome/genome.fasta", checkIfExists: true) + """ + } + } + + then { + assertAll ( + { assert process.success }, + { assert snapshot(process.out).match() }, + { assert process.out.gtf == [] }, + { assert process.out.gffread_gff == [] } + ) + } + + } + + test("sarscov2-gff3-fasta-stub") { + + options '-stub' + config "./nextflow-fasta.config" + + when { + params { + outdir = "$outputDir" + } + process { + """ + input[0] = [ + [id: 'test'], + file(params.modules_testdata_base_path + "genomics/sarscov2/genome/genome.gff3", checkIfExists: true) + ] + input[1] = file(params.modules_testdata_base_path + "genomics/sarscov2/genome/genome.fasta", checkIfExists: true) + """ + } + } + + then { + assertAll ( + { assert process.success }, + { assert snapshot(process.out).match() }, + { assert process.out.gtf == [] }, + { assert process.out.gffread_gff == [] } + ) + } + + } + + test("sarscov2-gff3-fasta-fail-catch") { + + options '-stub' + config "./nextflow-fasta.config" + + when { + params { + outdir = "$outputDir" + } + process { + """ + input[0] = [ + [id: 'genome'], + file(params.modules_testdata_base_path + "genomics/sarscov2/genome/genome.gff3", checkIfExists: true) + ] + input[1] = file(params.modules_testdata_base_path + "genomics/sarscov2/genome/genome.fasta", checkIfExists: true) + """ + } + } + + then { + assertAll ( + { assert ! process.success }, + { assert process.stdout.toString().contains("Input and output names are the same") } ) } diff --git a/modules/nf-core/gffread/tests/main.nf.test.snap b/modules/nf-core/gffread/tests/main.nf.test.snap index 00a11a406..15262320d 100644 --- a/modules/nf-core/gffread/tests/main.nf.test.snap +++ b/modules/nf-core/gffread/tests/main.nf.test.snap @@ -1,24 +1,272 @@ { "sarscov2-gff3-gtf": { "content": [ - [ - "genome.gtf:md5,2394072d7d31530dfd590c4a117bf6e3" - ], - [ - "versions.yml:md5,a71b6cdfa528dd206a238ec64bae13d6" - ] + { + "0": [ + [ + { + "id": "test" + }, + "test.gtf:md5,1ea0ae98d3388e0576407dc4a24ef428" + ] + ], + "1": [ + + ], + "2": [ + + ], + "3": [ + "versions.yml:md5,05f671c6c6e530acedad0af0a5948dbd" + ], + "gffread_fasta": [ + + ], + "gffread_gff": [ + + ], + "gtf": [ + [ + { + "id": "test" + }, + "test.gtf:md5,1ea0ae98d3388e0576407dc4a24ef428" + ] + ], + "versions": [ + "versions.yml:md5,05f671c6c6e530acedad0af0a5948dbd" + ] + } ], - "timestamp": "2024-01-23T20:00:32.688779117" + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-04-09T10:48:56.496187" }, "sarscov2-gff3-gff3": { "content": [ - [ - "genome.gffread.gff3:md5,a7d40d99dcddac23ac673c473279ea2d" - ], - [ - "versions.yml:md5,a71b6cdfa528dd206a238ec64bae13d6" - ] + { + "0": [ + + ], + "1": [ + [ + { + "id": "test" + }, + "test.gff3:md5,c4e5da6267c6bee5899a2c204ae1ad91" + ] + ], + "2": [ + + ], + "3": [ + "versions.yml:md5,05f671c6c6e530acedad0af0a5948dbd" + ], + "gffread_fasta": [ + + ], + "gffread_gff": [ + [ + { + "id": "test" + }, + "test.gff3:md5,c4e5da6267c6bee5899a2c204ae1ad91" + ] + ], + "gtf": [ + + ], + "versions": [ + "versions.yml:md5,05f671c6c6e530acedad0af0a5948dbd" + ] + } ], - "timestamp": "2024-01-23T20:07:11.457356625" + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-04-09T10:49:00.892782" + }, + "sarscov2-gff3-gtf-stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + + ], + "2": [ + + ], + "3": [ + "versions.yml:md5,05f671c6c6e530acedad0af0a5948dbd" + ], + "gffread_fasta": [ + + ], + "gffread_gff": [ + + ], + "gtf": [ + [ + { + "id": "test" + }, + "test.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,05f671c6c6e530acedad0af0a5948dbd" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-04-09T11:11:26.975666" + }, + "sarscov2-gff3-fasta-stub": { + "content": [ + { + "0": [ + + ], + "1": [ + + ], + "2": [ + [ + { + "id": "test" + }, + "test.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "3": [ + "versions.yml:md5,05f671c6c6e530acedad0af0a5948dbd" + ], + "gffread_fasta": [ + [ + { + "id": "test" + }, + "test.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "gffread_gff": [ + + ], + "gtf": [ + + ], + "versions": [ + "versions.yml:md5,05f671c6c6e530acedad0af0a5948dbd" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-04-09T11:11:44.34792" + }, + "sarscov2-gff3-gff3-stub": { + "content": [ + { + "0": [ + + ], + "1": [ + [ + { + "id": "test" + }, + "test.gff3:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + + ], + "3": [ + "versions.yml:md5,05f671c6c6e530acedad0af0a5948dbd" + ], + "gffread_fasta": [ + + ], + "gffread_gff": [ + [ + { + "id": "test" + }, + "test.gff3:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "gtf": [ + + ], + "versions": [ + "versions.yml:md5,05f671c6c6e530acedad0af0a5948dbd" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-04-09T11:11:35.221671" + }, + "sarscov2-gff3-fasta": { + "content": [ + { + "0": [ + + ], + "1": [ + + ], + "2": [ + [ + { + "id": "test" + }, + "test.fasta:md5,5f8108fb51739a0588ccf0a251de919a" + ] + ], + "3": [ + "versions.yml:md5,05f671c6c6e530acedad0af0a5948dbd" + ], + "gffread_fasta": [ + [ + { + "id": "test" + }, + "test.fasta:md5,5f8108fb51739a0588ccf0a251de919a" + ] + ], + "gffread_gff": [ + + ], + "gtf": [ + + ], + "versions": [ + "versions.yml:md5,05f671c6c6e530acedad0af0a5948dbd" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-04-09T10:54:02.88143" } } \ No newline at end of file diff --git a/modules/nf-core/gffread/tests/nextflow-fasta.config b/modules/nf-core/gffread/tests/nextflow-fasta.config new file mode 100644 index 000000000..ac6cb1484 --- /dev/null +++ b/modules/nf-core/gffread/tests/nextflow-fasta.config @@ -0,0 +1,5 @@ +process { + withName: GFFREAD { + ext.args = '-w -S' + } +} diff --git a/modules/nf-core/multiqc/environment.yml b/modules/nf-core/multiqc/environment.yml index ca39fb67e..72e598b67 100644 --- a/modules/nf-core/multiqc/environment.yml +++ b/modules/nf-core/multiqc/environment.yml @@ -4,4 +4,4 @@ channels: - bioconda - defaults dependencies: - - bioconda::multiqc=1.21 + - bioconda::multiqc=1.22.2 diff --git a/modules/nf-core/multiqc/main.nf b/modules/nf-core/multiqc/main.nf index 47ac352f9..e59efef9d 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.21--pyhdfd78af_0' : - 'biocontainers/multiqc:1.21--pyhdfd78af_0' }" + 'https://depot.galaxyproject.org/singularity/multiqc:1.22.2--pyhdfd78af_0' : + 'biocontainers/multiqc:1.22.2--pyhdfd78af_0' }" input: path multiqc_files, stageAs: "?/*" diff --git a/modules/nf-core/multiqc/tests/main.nf.test.snap b/modules/nf-core/multiqc/tests/main.nf.test.snap index bfebd8029..a170c31dd 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,ddbc971a8307f9b9b7b973714cde29d0" ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.2" }, - "timestamp": "2024-02-29T08:48:55.657331" + "timestamp": "2024-06-10T11:50:10.874341679" }, "multiqc_stub": { "content": [ @@ -17,25 +17,25 @@ "multiqc_report.html", "multiqc_data", "multiqc_plots", - "versions.yml:md5,21f35ee29416b9b3073c28733efe4b7d" + "versions.yml:md5,ddbc971a8307f9b9b7b973714cde29d0" ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.2" }, - "timestamp": "2024-02-29T08:49:49.071937" + "timestamp": "2024-06-10T11:50:49.271943761" }, "multiqc_versions_config": { "content": [ [ - "versions.yml:md5,21f35ee29416b9b3073c28733efe4b7d" + "versions.yml:md5,ddbc971a8307f9b9b7b973714cde29d0" ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.2" }, - "timestamp": "2024-02-29T08:49:25.457567" + "timestamp": "2024-06-10T11:50:34.046706025" } } \ No newline at end of file diff --git a/modules/nf-core/preseq/lcextrap/main.nf b/modules/nf-core/preseq/lcextrap/main.nf index ebbf215f0..0f8a1e9ec 100644 --- a/modules/nf-core/preseq/lcextrap/main.nf +++ b/modules/nf-core/preseq/lcextrap/main.nf @@ -1,7 +1,7 @@ process PRESEQ_LCEXTRAP { tag "$meta.id" label 'process_single' - label 'error_ignore' + label 'error_retry' conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? @@ -21,6 +21,7 @@ process PRESEQ_LCEXTRAP { script: def args = task.ext.args ?: '' + args = task.attempt > 1 ? args.join(' -defects') : args // Disable testing for defects def prefix = task.ext.prefix ?: "${meta.id}" def paired_end = meta.single_end ? '' : '-pe' """ diff --git a/modules/nf-core/samtools/flagstat/environment.yml b/modules/nf-core/samtools/flagstat/environment.yml index bd57cb54d..68b81558e 100644 --- a/modules/nf-core/samtools/flagstat/environment.yml +++ b/modules/nf-core/samtools/flagstat/environment.yml @@ -4,5 +4,5 @@ channels: - bioconda - defaults dependencies: - - bioconda::samtools=1.19.2 - - bioconda::htslib=1.19.1 + - bioconda::samtools=1.20 + - bioconda::htslib=1.20 diff --git a/modules/nf-core/samtools/flagstat/main.nf b/modules/nf-core/samtools/flagstat/main.nf index eb5f52523..754d84b73 100644 --- a/modules/nf-core/samtools/flagstat/main.nf +++ b/modules/nf-core/samtools/flagstat/main.nf @@ -4,8 +4,8 @@ process SAMTOOLS_FLAGSTAT { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/samtools:1.19.2--h50ea8bc_0' : - 'biocontainers/samtools:1.19.2--h50ea8bc_0' }" + 'https://depot.galaxyproject.org/singularity/samtools:1.20--h50ea8bc_0' : + 'biocontainers/samtools:1.20--h50ea8bc_0' }" input: tuple val(meta), path(bam), path(bai) diff --git a/modules/nf-core/samtools/flagstat/tests/main.nf.test.snap b/modules/nf-core/samtools/flagstat/tests/main.nf.test.snap index a76fc27e4..e9f85efa9 100644 --- a/modules/nf-core/samtools/flagstat/tests/main.nf.test.snap +++ b/modules/nf-core/samtools/flagstat/tests/main.nf.test.snap @@ -20,13 +20,13 @@ "versions": { "content": [ [ - "versions.yml:md5,fd0030ce49ab3a92091ad80260226452" + "versions.yml:md5,f606681ef971cbb548a4d9e3fbabdbc2" ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "24.01.0" + "nextflow": "23.10.1" }, - "timestamp": "2024-02-13T16:11:44.299617452" + "timestamp": "2024-05-28T15:41:52.516253882" } } \ No newline at end of file diff --git a/modules/nf-core/samtools/idxstats/environment.yml b/modules/nf-core/samtools/idxstats/environment.yml index 174973b88..eb6c88099 100644 --- a/modules/nf-core/samtools/idxstats/environment.yml +++ b/modules/nf-core/samtools/idxstats/environment.yml @@ -4,5 +4,5 @@ channels: - bioconda - defaults dependencies: - - bioconda::samtools=1.19.2 - - bioconda::htslib=1.19.1 + - bioconda::samtools=1.20 + - bioconda::htslib=1.20 diff --git a/modules/nf-core/samtools/idxstats/main.nf b/modules/nf-core/samtools/idxstats/main.nf index a544026f3..2ea2a5ccd 100644 --- a/modules/nf-core/samtools/idxstats/main.nf +++ b/modules/nf-core/samtools/idxstats/main.nf @@ -4,8 +4,8 @@ process SAMTOOLS_IDXSTATS { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/samtools:1.19.2--h50ea8bc_0' : - 'biocontainers/samtools:1.19.2--h50ea8bc_0' }" + 'https://depot.galaxyproject.org/singularity/samtools:1.20--h50ea8bc_0' : + 'biocontainers/samtools:1.20--h50ea8bc_0' }" input: tuple val(meta), path(bam), path(bai) diff --git a/modules/nf-core/samtools/idxstats/tests/main.nf.test.snap b/modules/nf-core/samtools/idxstats/tests/main.nf.test.snap index a7050bdc8..4eacdb90f 100644 --- a/modules/nf-core/samtools/idxstats/tests/main.nf.test.snap +++ b/modules/nf-core/samtools/idxstats/tests/main.nf.test.snap @@ -2,14 +2,14 @@ "versions": { "content": [ [ - "versions.yml:md5,613dde56f108418039ffcdeeddba397a" + "versions.yml:md5,7acbcb2a8ec6436ba7b2916d3ff13351" ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "24.01.0" + "nextflow": "23.10.1" }, - "timestamp": "2024-02-13T16:16:50.147462763" + "timestamp": "2024-05-28T15:46:46.617989517" }, "idxstats": { "content": [ diff --git a/modules/nf-core/samtools/index/environment.yml b/modules/nf-core/samtools/index/environment.yml index a5e506498..260d516be 100644 --- a/modules/nf-core/samtools/index/environment.yml +++ b/modules/nf-core/samtools/index/environment.yml @@ -4,5 +4,5 @@ channels: - bioconda - defaults dependencies: - - bioconda::samtools=1.19.2 - - bioconda::htslib=1.19.1 + - bioconda::samtools=1.20 + - bioconda::htslib=1.20 diff --git a/modules/nf-core/samtools/index/main.nf b/modules/nf-core/samtools/index/main.nf index dc14f98d6..b523c21b4 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.19.2--h50ea8bc_0' : - 'biocontainers/samtools:1.19.2--h50ea8bc_0' }" + 'https://depot.galaxyproject.org/singularity/samtools:1.20--h50ea8bc_0' : + 'biocontainers/samtools:1.20--h50ea8bc_0' }" input: tuple val(meta), path(input) 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 3dc8e7de8..52756e85c 100644 --- a/modules/nf-core/samtools/index/tests/main.nf.test.snap +++ b/modules/nf-core/samtools/index/tests/main.nf.test.snap @@ -2,26 +2,26 @@ "crai_versions": { "content": [ [ - "versions.yml:md5,cc4370091670b64bba7c7206403ffb3e" + "versions.yml:md5,802c9776d9c5e95314e888cf18e96d77" ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "24.01.0" + "nextflow": "23.10.1" }, - "timestamp": "2024-02-13T16:12:00.324667957" + "timestamp": "2024-05-28T15:42:04.203740976" }, "csi_versions": { "content": [ [ - "versions.yml:md5,cc4370091670b64bba7c7206403ffb3e" + "versions.yml:md5,802c9776d9c5e95314e888cf18e96d77" ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "24.01.0" + "nextflow": "23.10.1" }, - "timestamp": "2024-02-13T16:12:07.885103162" + "timestamp": "2024-05-28T15:42:09.57475878" }, "crai": { "content": [ @@ -62,13 +62,13 @@ "bai_versions": { "content": [ [ - "versions.yml:md5,cc4370091670b64bba7c7206403ffb3e" + "versions.yml:md5,802c9776d9c5e95314e888cf18e96d77" ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "24.01.0" + "nextflow": "23.10.1" }, - "timestamp": "2024-02-13T16:11:51.641425452" + "timestamp": "2024-05-28T15:41:57.929287369" } } \ No newline at end of file diff --git a/modules/nf-core/samtools/sort/environment.yml b/modules/nf-core/samtools/sort/environment.yml index 4d898e486..36a12eab0 100644 --- a/modules/nf-core/samtools/sort/environment.yml +++ b/modules/nf-core/samtools/sort/environment.yml @@ -4,5 +4,5 @@ channels: - bioconda - defaults dependencies: - - bioconda::samtools=1.19.2 - - bioconda::htslib=1.19.1 + - bioconda::samtools=1.20 + - bioconda::htslib=1.20 diff --git a/modules/nf-core/samtools/sort/main.nf b/modules/nf-core/samtools/sort/main.nf index fc374f980..596c6f7e9 100644 --- a/modules/nf-core/samtools/sort/main.nf +++ b/modules/nf-core/samtools/sort/main.nf @@ -4,8 +4,8 @@ process SAMTOOLS_SORT { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/samtools:1.19.2--h50ea8bc_0' : - 'biocontainers/samtools:1.19.2--h50ea8bc_0' }" + 'https://depot.galaxyproject.org/singularity/samtools:1.20--h50ea8bc_0' : + 'biocontainers/samtools:1.20--h50ea8bc_0' }" input: tuple val(meta) , path(bam) diff --git a/modules/nf-core/samtools/sort/tests/main.nf.test b/modules/nf-core/samtools/sort/tests/main.nf.test index 728201ded..cb97ca66b 100644 --- a/modules/nf-core/samtools/sort/tests/main.nf.test +++ b/modules/nf-core/samtools/sort/tests/main.nf.test @@ -26,7 +26,11 @@ nextflow_process { then { assertAll ( { assert process.success }, - { assert snapshot(process.out).match() } + { assert snapshot( + process.out.bam, + process.out.csi.collect { it.collect { it instanceof Map ? it : file(it).name } } + ).match("test_bam") + } ) } } @@ -40,11 +44,11 @@ nextflow_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.bam', checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/cram/test.paired_end.sorted.cram', checkIfExists: true) ]) input[1] = Channel.of([ [ id:'fasta' ], // meta map - file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) ]) """ } @@ -53,7 +57,11 @@ nextflow_process { then { assertAll ( { assert process.success }, - { assert snapshot(process.out).match() } + { assert snapshot( + process.out.bam, + process.out.csi.collect { it.collect { it instanceof Map ? it : file(it).name } } + ).match("test_cram") + } ) } } diff --git a/modules/nf-core/samtools/sort/tests/main.nf.test.snap b/modules/nf-core/samtools/sort/tests/main.nf.test.snap index 384776564..5a27de1d1 100644 --- a/modules/nf-core/samtools/sort/tests/main.nf.test.snap +++ b/modules/nf-core/samtools/sort/tests/main.nf.test.snap @@ -1,68 +1,21 @@ { "cram": { "content": [ - { - "0": [ - [ - { - "id": "test", - "single_end": false - }, - "test.sorted.bam:md5,bc0b7c25da26384a006ed84cc9e4da23" - ] - ], - "1": [ - - ], - "2": [ - - ], - "3": [ - [ - { - "id": "test", - "single_end": false - }, - "test.sorted.bam.csi:md5,8d4e836c2fed6c0bf874d5e8cdba5831" - ] - ], - "4": [ - "versions.yml:md5,e6d43fefc9a8bff91c2ce6e3a1716eca" - ], - "bam": [ - [ - { - "id": "test", - "single_end": false - }, - "test.sorted.bam:md5,bc0b7c25da26384a006ed84cc9e4da23" - ] - ], - "crai": [ - - ], - "cram": [ - - ], - "csi": [ - [ - { - "id": "test", - "single_end": false - }, - "test.sorted.bam.csi:md5,8d4e836c2fed6c0bf874d5e8cdba5831" - ] - ], - "versions": [ - "versions.yml:md5,e6d43fefc9a8bff91c2ce6e3a1716eca" + [ + [ + { + "id": "test", + "single_end": false + }, + "test.sorted.bam:md5,21c992d59615936b99f2ad008aa54400" ] - } + ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.2" }, - "timestamp": "2024-03-04T15:08:00.830294" + "timestamp": "2024-05-31T08:13:54.512837189" }, "bam_stub_bam": { "content": [ @@ -70,85 +23,92 @@ ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.04.3" + "nextflow": "24.04.2" + }, + "timestamp": "2024-05-31T07:29:00.761845507" + }, + "test_cram": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test.sorted.bam:md5,22b2093be34a7637f5fbc84272b89d06" + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test.sorted.bam.csi" + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" }, - "timestamp": "2024-02-12T19:21:04.364044" + "timestamp": "2024-05-31T09:16:51.924951855" + }, + "test_bam": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test.sorted.bam:md5,21c992d59615936b99f2ad008aa54400" + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test.sorted.bam.csi" + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-05-31T08:28:12.15952312" }, "bam_stub_versions": { "content": [ [ - "versions.yml:md5,e6d43fefc9a8bff91c2ce6e3a1716eca" + "versions.yml:md5,7a360de20e1d7a6f15a5e8fbe0a9c062" ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "24.01.0" + "nextflow": "24.04.2" }, - "timestamp": "2024-02-13T16:15:00.20800281" + "timestamp": "2024-05-31T07:29:00.765038811" }, "bam": { "content": [ - { - "0": [ - [ - { - "id": "test", - "single_end": false - }, - "test.sorted.bam:md5,bc0b7c25da26384a006ed84cc9e4da23" - ] - ], - "1": [ - - ], - "2": [ - - ], - "3": [ - [ - { - "id": "test", - "single_end": false - }, - "test.sorted.bam.csi:md5,8d4e836c2fed6c0bf874d5e8cdba5831" - ] - ], - "4": [ - "versions.yml:md5,e6d43fefc9a8bff91c2ce6e3a1716eca" - ], - "bam": [ - [ - { - "id": "test", - "single_end": false - }, - "test.sorted.bam:md5,bc0b7c25da26384a006ed84cc9e4da23" - ] - ], - "crai": [ - - ], - "cram": [ - - ], - "csi": [ - [ - { - "id": "test", - "single_end": false - }, - "test.sorted.bam.csi:md5,8d4e836c2fed6c0bf874d5e8cdba5831" - ] - ], - "versions": [ - "versions.yml:md5,e6d43fefc9a8bff91c2ce6e3a1716eca" + [ + [ + { + "id": "test", + "single_end": false + }, + "test.sorted.bam:md5,21c992d59615936b99f2ad008aa54400" ] - } + ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.2" }, - "timestamp": "2024-03-04T15:07:48.773803" + "timestamp": "2024-05-31T08:13:48.538030517" } } \ No newline at end of file diff --git a/modules/nf-core/samtools/stats/environment.yml b/modules/nf-core/samtools/stats/environment.yml index 67bb0ca40..1cc83bd95 100644 --- a/modules/nf-core/samtools/stats/environment.yml +++ b/modules/nf-core/samtools/stats/environment.yml @@ -4,5 +4,5 @@ channels: - bioconda - defaults dependencies: - - bioconda::samtools=1.19.2 - - bioconda::htslib=1.19.1 + - bioconda::samtools=1.20 + - bioconda::htslib=1.20 diff --git a/modules/nf-core/samtools/stats/main.nf b/modules/nf-core/samtools/stats/main.nf index 52b00f4b6..982bc28e7 100644 --- a/modules/nf-core/samtools/stats/main.nf +++ b/modules/nf-core/samtools/stats/main.nf @@ -4,8 +4,8 @@ process SAMTOOLS_STATS { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/samtools:1.19.2--h50ea8bc_0' : - 'biocontainers/samtools:1.19.2--h50ea8bc_0' }" + 'https://depot.galaxyproject.org/singularity/samtools:1.20--h50ea8bc_0' : + 'biocontainers/samtools:1.20--h50ea8bc_0' }" input: tuple val(meta), path(input), path(input_index) diff --git a/modules/nf-core/samtools/stats/tests/main.nf.test.snap b/modules/nf-core/samtools/stats/tests/main.nf.test.snap index 1b7c9ba44..2747fd6c6 100644 --- a/modules/nf-core/samtools/stats/tests/main.nf.test.snap +++ b/modules/nf-core/samtools/stats/tests/main.nf.test.snap @@ -8,11 +8,11 @@ "id": "test", "single_end": false }, - "test.stats:md5,01812900aa4027532906c5d431114233" + "test.stats:md5,c9d39b38c22de2057fc2f89949090975" ] ], "1": [ - "versions.yml:md5,0514ceb1769b2a88843e08c1f82624a9" + "versions.yml:md5,b3b70b126f867fdbb7dcea5e36e49d4a" ], "stats": [ [ @@ -20,19 +20,19 @@ "id": "test", "single_end": false }, - "test.stats:md5,01812900aa4027532906c5d431114233" + "test.stats:md5,c9d39b38c22de2057fc2f89949090975" ] ], "versions": [ - "versions.yml:md5,0514ceb1769b2a88843e08c1f82624a9" + "versions.yml:md5,b3b70b126f867fdbb7dcea5e36e49d4a" ] } ], "meta": { "nf-test": "0.8.4", - "nextflow": "24.01.0" + "nextflow": "23.10.1" }, - "timestamp": "2024-02-13T16:15:25.562429714" + "timestamp": "2024-05-28T15:45:24.403941966" }, "bam": { "content": [ @@ -43,11 +43,11 @@ "id": "test", "single_end": false }, - "test.stats:md5,5d8681bf541199898c042bf400391d59" + "test.stats:md5,d522a1fa016b259d6a55620ae53dcd63" ] ], "1": [ - "versions.yml:md5,0514ceb1769b2a88843e08c1f82624a9" + "versions.yml:md5,b3b70b126f867fdbb7dcea5e36e49d4a" ], "stats": [ [ @@ -55,18 +55,18 @@ "id": "test", "single_end": false }, - "test.stats:md5,5d8681bf541199898c042bf400391d59" + "test.stats:md5,d522a1fa016b259d6a55620ae53dcd63" ] ], "versions": [ - "versions.yml:md5,0514ceb1769b2a88843e08c1f82624a9" + "versions.yml:md5,b3b70b126f867fdbb7dcea5e36e49d4a" ] } ], "meta": { "nf-test": "0.8.4", - "nextflow": "24.01.0" + "nextflow": "23.10.1" }, - "timestamp": "2024-02-13T16:15:07.857611509" + "timestamp": "2024-05-28T15:45:06.711251947" } } \ No newline at end of file diff --git a/modules/nf-core/trimgalore/environment.yml b/modules/nf-core/trimgalore/environment.yml index 17b39f4a5..0981320c1 100644 --- a/modules/nf-core/trimgalore/environment.yml +++ b/modules/nf-core/trimgalore/environment.yml @@ -1,8 +1,10 @@ name: trimgalore + channels: - conda-forge - bioconda - defaults + dependencies: - - bioconda::trim-galore=0.6.7 - bioconda::cutadapt=3.4 + - bioconda::trim-galore=0.6.7 diff --git a/subworkflows/nf-core/bam_dedup_stats_samtools_umitools/main.nf b/subworkflows/nf-core/bam_dedup_stats_samtools_umitools/main.nf index 7c07084ff..fe6ff312f 100644 --- a/subworkflows/nf-core/bam_dedup_stats_samtools_umitools/main.nf +++ b/subworkflows/nf-core/bam_dedup_stats_samtools_umitools/main.nf @@ -44,6 +44,7 @@ workflow BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS { emit: bam = UMITOOLS_DEDUP.out.bam // channel: [ val(meta), path(bam) ] + deduplog = UMITOOLS_DEDUP.out.log // channel: [ val(meta), path(log) ] bai = SAMTOOLS_INDEX.out.bai // channel: [ val(meta), path(bai) ] csi = SAMTOOLS_INDEX.out.csi // channel: [ val(meta), path(csi) ] diff --git a/subworkflows/nf-core/bam_dedup_stats_samtools_umitools/meta.yml b/subworkflows/nf-core/bam_dedup_stats_samtools_umitools/meta.yml index e655484e7..93e1238b4 100644 --- a/subworkflows/nf-core/bam_dedup_stats_samtools_umitools/meta.yml +++ b/subworkflows/nf-core/bam_dedup_stats_samtools_umitools/meta.yml @@ -37,6 +37,10 @@ output: description: | CSI samtools index Structure: [ val(meta), path(csi) ] + - deduplog: + description: | + UMI-tools deduplication log + Structure: [ val(meta), path(log) ] - stats: description: | File containing samtools stats output diff --git a/subworkflows/nf-core/bam_dedup_stats_samtools_umitools/tests/main.nf.test b/subworkflows/nf-core/bam_dedup_stats_samtools_umitools/tests/main.nf.test index 1ef1f7fe7..1a95c0bb5 100644 --- a/subworkflows/nf-core/bam_dedup_stats_samtools_umitools/tests/main.nf.test +++ b/subworkflows/nf-core/bam_dedup_stats_samtools_umitools/tests/main.nf.test @@ -27,6 +27,7 @@ nextflow_workflow { then { assertAll( { assert workflow.success}, + { assert workflow.out.deduplog.get(0).get(1) ==~ ".*.log"}, { assert workflow.out.bam.get(0).get(1) ==~ ".*.bam"}, { assert workflow.out.bai.get(0).get(1) ==~ ".*.bai"}, { assert snapshot(workflow.out.stats).match("test_bam_dedup_stats_samtools_umitools_stats") }, diff --git a/subworkflows/nf-core/bam_dedup_stats_samtools_umitools/tests/main.nf.test.snap b/subworkflows/nf-core/bam_dedup_stats_samtools_umitools/tests/main.nf.test.snap index 5a3e80b4a..442776f69 100644 --- a/subworkflows/nf-core/bam_dedup_stats_samtools_umitools/tests/main.nf.test.snap +++ b/subworkflows/nf-core/bam_dedup_stats_samtools_umitools/tests/main.nf.test.snap @@ -40,14 +40,14 @@ { "id": "test" }, - "test.stats:md5,02342d307779941001376ff5d19e941a" + "test.stats:md5,09d1bd8f10e000921202f7ea1cd0679e" ] ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "24.01.0" + "nextflow": "23.10.1" }, - "timestamp": "2024-02-13T16:45:33.563016651" + "timestamp": "2024-05-29T07:36:18.573909434" } } \ No newline at end of file diff --git a/subworkflows/nf-core/bam_markduplicates_picard/tests/main.nf.test.snap b/subworkflows/nf-core/bam_markduplicates_picard/tests/main.nf.test.snap index caf4ac8ad..94f8f29c4 100644 --- a/subworkflows/nf-core/bam_markduplicates_picard/tests/main.nf.test.snap +++ b/subworkflows/nf-core/bam_markduplicates_picard/tests/main.nf.test.snap @@ -5,13 +5,13 @@ "test.cram.crai:md5,78d47ba01ac4e05f3ae1e353902a989e", "test.flagstat:md5,93b0ef463df947ede1f42ff60396c34d", "test.idxstats:md5,e179601fa7b8ebce81ac3765206f6c15", - "test.stats:md5,c2f74a4d9b2377bcf4f4f184da3801af" + "test.stats:md5,372a7d9d9081aa009b21343a913beb14" ], "meta": { "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-03-20T20:45:38.364189" + "timestamp": "2024-05-29T07:39:18.809130196" }, "sarscov2 - bam": { "content": [ @@ -19,12 +19,12 @@ "test.bam.bai:md5,4d3ae8d013444b55e17aa0149a2ab404", "test.flagstat:md5,4f7ffd1e6a5e85524d443209ac97d783", "test.idxstats:md5,df60a8c8d6621100d05178c93fb053a2", - "test.stats:md5,d7796222a087b9bb97f631f1c21b9c95" + "test.stats:md5,cca83e4fc9406fc3875b5e60055d6574" ], "meta": { "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-03-21T11:38:08.434529" + "timestamp": "2024-05-29T07:39:07.280687689" } } \ No newline at end of file diff --git a/subworkflows/nf-core/bam_sort_stats_samtools/tests/main.nf.test.snap b/subworkflows/nf-core/bam_sort_stats_samtools/tests/main.nf.test.snap index 6645a0920..db063837f 100644 --- a/subworkflows/nf-core/bam_sort_stats_samtools/tests/main.nf.test.snap +++ b/subworkflows/nf-core/bam_sort_stats_samtools/tests/main.nf.test.snap @@ -43,15 +43,15 @@ "id": "test", "single_end": false }, - "test.stats:md5,cb0bf2b79de52fdf0c61e80efcdb0bb4" + "test.stats:md5,d32de3b3716a11039cef2367c3c1a56e" ] ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "24.01.0" + "nextflow": "23.10.1" }, - "timestamp": "2024-02-13T16:44:38.553256801" + "timestamp": "2024-05-29T07:47:44.044172487" }, "test_bam_sort_stats_samtools_paired_end_stats": { "content": [ @@ -61,15 +61,15 @@ "id": "test", "single_end": false }, - "test.stats:md5,d7796222a087b9bb97f631f1c21b9c95" + "test.stats:md5,cca83e4fc9406fc3875b5e60055d6574" ] ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "24.01.0" + "nextflow": "23.10.1" }, - "timestamp": "2024-02-13T16:44:48.355870518" + "timestamp": "2024-05-29T07:47:51.426232891" }, "test_bam_sort_stats_samtools_single_end_idxstats": { "content": [ diff --git a/subworkflows/nf-core/bam_stats_samtools/tests/main.nf.test.snap b/subworkflows/nf-core/bam_stats_samtools/tests/main.nf.test.snap index bf0b0c696..c2cb4dec0 100644 --- a/subworkflows/nf-core/bam_stats_samtools/tests/main.nf.test.snap +++ b/subworkflows/nf-core/bam_stats_samtools/tests/main.nf.test.snap @@ -25,15 +25,15 @@ "id": "test", "single_end": true }, - "test.stats:md5,ddaf8f33fe9c1ebe9b06933213aec8ed" + "test.stats:md5,7afd486ad6abb9a2a3dac90c99e1d87b" ] ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "24.01.0" + "nextflow": "23.10.1" }, - "timestamp": "2024-02-13T16:45:06.230091746" + "timestamp": "2024-05-29T07:46:05.502831991" }, "test_bam_stats_samtools_paired_end_flagstats": { "content": [ @@ -97,15 +97,15 @@ "id": "test", "single_end": true }, - "test.stats:md5,dc178e1a4956043aba8abc83e203521b" + "test.stats:md5,4a0c429c661d6aa0b60acb9309da642d" ] ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "24.01.0" + "nextflow": "23.10.1" }, - "timestamp": "2024-02-13T16:44:57.442208382" + "timestamp": "2024-05-29T07:45:59.612412212" }, "test_bam_stats_samtools_paired_end_idxstats": { "content": [ @@ -151,14 +151,14 @@ "id": "test", "single_end": false }, - "test.stats:md5,d3345c4887f4a9ea4f7f56405b495db0" + "test.stats:md5,16b59a1f2c99d9fe30f711adc3ebe32d" ] ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "24.01.0" + "nextflow": "23.10.1" }, - "timestamp": "2024-02-13T16:45:14.997164209" + "timestamp": "2024-05-29T07:46:11.96999343" } } \ No newline at end of file diff --git a/subworkflows/nf-core/fastq_fastqc_umitools_fastp/main.nf b/subworkflows/nf-core/fastq_fastqc_umitools_fastp/main.nf index 764ce013f..c472d7116 100644 --- a/subworkflows/nf-core/fastq_fastqc_umitools_fastp/main.nf +++ b/subworkflows/nf-core/fastq_fastqc_umitools_fastp/main.nf @@ -91,6 +91,7 @@ workflow FASTQ_FASTQC_UMITOOLS_FASTP { FASTP ( umi_reads, adapter_fasta, + false, // don't want to set discard_trimmed_pass, else there will be no reads output save_trimmed_fail, save_merged ) diff --git a/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/main.nf.test.snap b/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/main.nf.test.snap index 3e11d9ec3..4a6689f67 100644 --- a/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/main.nf.test.snap +++ b/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/main.nf.test.snap @@ -55,9 +55,9 @@ ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.2" }, - "timestamp": "2024-03-18T16:53:49.315194" + "timestamp": "2024-06-10T15:08:06.209854813" }, "save_trimmed_fail": { "content": [ @@ -127,9 +127,9 @@ ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.2" }, - "timestamp": "2024-03-18T16:51:45.34934" + "timestamp": "2024-06-10T15:09:56.338504908" }, "skip_umi_extract": { "content": [ @@ -189,9 +189,9 @@ ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.2" }, - "timestamp": "2024-03-18T12:07:40.34249" + "timestamp": "2024-06-10T15:08:51.174735433" }, "umi_discard_read = 2": { "content": [ @@ -251,9 +251,9 @@ ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.2" }, - "timestamp": "2024-03-18T12:08:24.141938" + "timestamp": "2024-06-10T15:09:14.145250471" }, "save_merged": { "content": [ @@ -319,9 +319,9 @@ ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.2" }, - "timestamp": "2024-03-18T12:10:18.546963" + "timestamp": "2024-06-10T15:10:16.25526763" }, "skip_trimming": { "content": [ @@ -417,9 +417,9 @@ ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.2" }, - "timestamp": "2024-03-18T16:53:39.139038" + "timestamp": "2024-06-10T15:07:52.031579846" }, "min_trimmed_reads = 26": { "content": [ @@ -485,9 +485,9 @@ ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.2" }, - "timestamp": "2024-03-18T11:52:23.849945" + "timestamp": "2024-06-10T15:10:34.68796644" }, "with_umi": { "content": [ @@ -542,8 +542,8 @@ ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.2" }, - "timestamp": "2024-03-18T17:31:09.193212" + "timestamp": "2024-06-10T15:08:32.267769943" } } \ No newline at end of file From 961c9b67606fbf9a665831e17ee4621f3cdeae3b Mon Sep 17 00:00:00 2001 From: Harshil Patel Date: Thu, 20 Jun 2024 16:56:46 +0100 Subject: [PATCH 409/634] Fix pipeline after updates to GFFREAD module --- subworkflows/local/prepare_genome/main.nf | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/subworkflows/local/prepare_genome/main.nf b/subworkflows/local/prepare_genome/main.nf index 9b7d9c597..1e4ee46fd 100644 --- a/subworkflows/local/prepare_genome/main.nf +++ b/subworkflows/local/prepare_genome/main.nf @@ -89,12 +89,12 @@ workflow PREPARE_GENOME { } } else if (gff) { if (gff.endsWith('.gz')) { - ch_gff = GUNZIP_GFF ( [ [:], file(gff, checkIfExists: true) ] ).gunzip.map { it[1] } + ch_gff = GUNZIP_GFF ( [ [:], file(gff, checkIfExists: true) ] ).gunzip ch_versions = ch_versions.mix(GUNZIP_GFF.out.versions) } else { - ch_gff = Channel.value(file(gff, checkIfExists: true)) + ch_gff = Channel.value(file(gff, checkIfExists: true)).map { [ [:], it ] } } - ch_gtf = GFFREAD ( ch_gff ).gtf + ch_gtf = GFFREAD ( ch_gff, [] ).gtf.map { it[1] } ch_versions = ch_versions.mix(GFFREAD.out.versions) } From 51939f258eae16197476018b8a28af746f6cd987 Mon Sep 17 00:00:00 2001 From: Harshil Patel Date: Thu, 20 Jun 2024 16:58:01 +0100 Subject: [PATCH 410/634] Update CHANGELOG --- CHANGELOG.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index dfeded678..ab5b1c006 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -95,6 +95,7 @@ Thank you to everyone else that has contributed by reporting bugs, enhancements - [PR #1326](https://github.com/nf-core/rnaseq/pull/1326) - Move Conda dependencies for local modules to individual environment file - [PR #1328](https://github.com/nf-core/rnaseq/pull/1328) - Add pipeline level test for STAR-RSEM and HISAT2 - [PR #1329](https://github.com/nf-core/rnaseq/pull/1329) - Remove tags from all nf-test files +- [PR #1330](https://github.com/nf-core/rnaseq/pull/1330) - Update all nf-core/modules and subworkflows ### Parameters @@ -114,9 +115,10 @@ Thank you to everyone else that has contributed by reporting bugs, enhancements | `bioconductor-dupradar` | 1.28.0 | 1.32.0 | | `bioconductor-summarizedexperiment` | 1.24.0 | 1.32.0 | | `bioconductor-tximeta` | 1.12.0 | 1.20.1 | -| `multiqc` | 1.20 | 1.21 | +| `gffread` | 0.12.1 | 0.12.7 | +| `multiqc` | 1.20 | 1.22.2 | | `picard` | 3.0.0 | 3.1.1 | -| `samtools` | 1.17 | 1.19.2 | +| `samtools` | 1.17 | 1.20 | | `sortmerna` | 4.3.4 | 4.3.6 | | `umi_tools` | 1.14 | 1.15 | From 133334238e04d87c9ea4231d3cf9364a36a88881 Mon Sep 17 00:00:00 2001 From: Harshil Patel Date: Thu, 20 Jun 2024 18:19:14 +0100 Subject: [PATCH 411/634] Update snapshots for prepare_genome subworkflow --- .../prepare_genome/tests/main.nf.test.snap | 164 +++++++++--------- 1 file changed, 82 insertions(+), 82 deletions(-) diff --git a/subworkflows/local/prepare_genome/tests/main.nf.test.snap b/subworkflows/local/prepare_genome/tests/main.nf.test.snap index 2121a7ee5..2741bb23d 100644 --- a/subworkflows/local/prepare_genome/tests/main.nf.test.snap +++ b/subworkflows/local/prepare_genome/tests/main.nf.test.snap @@ -43,17 +43,17 @@ [ "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", "versions.yml:md5,1cd265cb86a23a27f683ffb2459f37f5", - "versions.yml:md5,58fa668eeacb984c10df6f856f2c9291", "versions.yml:md5,71252f1a221be05593361acccb99506b", "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", - "versions.yml:md5,961ab91198c4e6ec9d795b95e3f61fda" + "versions.yml:md5,961ab91198c4e6ec9d795b95e3f61fda", + "versions.yml:md5,bc99889446f02427c166b3219b793672" ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.1" }, - "timestamp": "2024-03-13T11:39:26.998916" + "timestamp": "2024-06-20T18:17:05.661629" }, "hisat2_index = false": { "content": [ @@ -99,16 +99,16 @@ [ "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", "versions.yml:md5,1cd265cb86a23a27f683ffb2459f37f5", - "versions.yml:md5,58fa668eeacb984c10df6f856f2c9291", "versions.yml:md5,71252f1a221be05593361acccb99506b", - "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a" + "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", + "versions.yml:md5,bc99889446f02427c166b3219b793672" ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.1" }, - "timestamp": "2024-03-13T11:38:55.160854" + "timestamp": "2024-06-20T18:16:45.642259" }, "featurecounts_group_type = 'gene_type'": { "content": [ @@ -154,16 +154,16 @@ [ "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", "versions.yml:md5,1cd265cb86a23a27f683ffb2459f37f5", - "versions.yml:md5,58fa668eeacb984c10df6f856f2c9291", "versions.yml:md5,71252f1a221be05593361acccb99506b", - "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a" + "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", + "versions.yml:md5,bc99889446f02427c166b3219b793672" ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.1" }, - "timestamp": "2024-03-13T11:39:58.190328" + "timestamp": "2024-06-20T18:17:22.714024" }, "skip_gtf_filter": { "content": [ @@ -209,15 +209,15 @@ [ "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", "versions.yml:md5,1cd265cb86a23a27f683ffb2459f37f5", - "versions.yml:md5,58fa668eeacb984c10df6f856f2c9291", - "versions.yml:md5,71252f1a221be05593361acccb99506b" + "versions.yml:md5,71252f1a221be05593361acccb99506b", + "versions.yml:md5,bc99889446f02427c166b3219b793672" ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.1" }, - "timestamp": "2024-03-13T11:33:22.688771" + "timestamp": "2024-06-20T18:13:30.196042" }, "gtf = false": { "content": [ @@ -231,7 +231,7 @@ "genome_gfp.fasta:md5,e23e302af63736a199985a169fdac055" ], [ - "genome_gfp.gtf:md5,34da4da0a8f3412d763db7853210d7c1" + "genome_gfp.gtf:md5,68b68c059ba170af3f9d0a5dc1e0c8b8" ], [ "genome_gfp.fasta.fai:md5,8fa54c6bd2ea6a369efbb8ab4f30156a" @@ -261,20 +261,20 @@ ], [ - "versions.yml:md5,0a23f0be65eb55b48ae71fe6e69a25a9", "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", "versions.yml:md5,1cd265cb86a23a27f683ffb2459f37f5", - "versions.yml:md5,58fa668eeacb984c10df6f856f2c9291", + "versions.yml:md5,2a3ed31ad34b8864fb9278dcdef596ec", "versions.yml:md5,71252f1a221be05593361acccb99506b", "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", - "versions.yml:md5,961ab91198c4e6ec9d795b95e3f61fda" + "versions.yml:md5,961ab91198c4e6ec9d795b95e3f61fda", + "versions.yml:md5,bc99889446f02427c166b3219b793672" ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.1" }, - "timestamp": "2024-03-13T11:35:18.49994" + "timestamp": "2024-06-20T18:14:42.913968" }, "gfp = false": { "content": [ @@ -319,16 +319,16 @@ ], [ "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", - "versions.yml:md5,58fa668eeacb984c10df6f856f2c9291", "versions.yml:md5,71252f1a221be05593361acccb99506b", - "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a" + "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", + "versions.yml:md5,bc99889446f02427c166b3219b793672" ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.1" }, - "timestamp": "2024-03-13T17:43:51.41041" + "timestamp": "2024-06-20T18:15:16.551347" }, "skip_bbsplit": { "content": [ @@ -373,16 +373,16 @@ ], [ "versions.yml:md5,1cd265cb86a23a27f683ffb2459f37f5", - "versions.yml:md5,58fa668eeacb984c10df6f856f2c9291", "versions.yml:md5,71252f1a221be05593361acccb99506b", - "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a" + "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", + "versions.yml:md5,bc99889446f02427c166b3219b793672" ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.1" }, - "timestamp": "2024-03-13T11:12:46.345567" + "timestamp": "2024-06-20T18:13:46.28042" }, "skip_bbsplit = true": { "content": [ @@ -427,16 +427,16 @@ ], [ "versions.yml:md5,1cd265cb86a23a27f683ffb2459f37f5", - "versions.yml:md5,58fa668eeacb984c10df6f856f2c9291", "versions.yml:md5,71252f1a221be05593361acccb99506b", - "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a" + "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", + "versions.yml:md5,bc99889446f02427c166b3219b793672" ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.1" }, - "timestamp": "2024-03-13T11:23:38.303812" + "timestamp": "2024-06-20T18:17:57.14732" }, "with bed": { "content": [ @@ -482,15 +482,15 @@ [ "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", "versions.yml:md5,1cd265cb86a23a27f683ffb2459f37f5", - "versions.yml:md5,58fa668eeacb984c10df6f856f2c9291", - "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a" + "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", + "versions.yml:md5,bc99889446f02427c166b3219b793672" ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.1" }, - "timestamp": "2024-03-13T11:37:21.338219" + "timestamp": "2024-06-20T18:15:52.284517" }, "skip_alignment": { "content": [ @@ -536,16 +536,16 @@ [ "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", "versions.yml:md5,1cd265cb86a23a27f683ffb2459f37f5", - "versions.yml:md5,58fa668eeacb984c10df6f856f2c9291", "versions.yml:md5,71252f1a221be05593361acccb99506b", - "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a" + "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", + "versions.yml:md5,bc99889446f02427c166b3219b793672" ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.1" }, - "timestamp": "2024-03-13T11:34:12.785475" + "timestamp": "2024-06-20T18:14:04.612027" }, "gencode = false": { "content": [ @@ -591,16 +591,16 @@ [ "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", "versions.yml:md5,1cd265cb86a23a27f683ffb2459f37f5", - "versions.yml:md5,58fa668eeacb984c10df6f856f2c9291", "versions.yml:md5,71252f1a221be05593361acccb99506b", - "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a" + "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", + "versions.yml:md5,bc99889446f02427c166b3219b793672" ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.1" }, - "timestamp": "2024-03-13T11:32:54.452919" + "timestamp": "2024-06-20T18:13:13.483047" }, "gff = false": { "content": [ @@ -646,16 +646,16 @@ [ "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", "versions.yml:md5,1cd265cb86a23a27f683ffb2459f37f5", - "versions.yml:md5,58fa668eeacb984c10df6f856f2c9291", "versions.yml:md5,71252f1a221be05593361acccb99506b", - "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a" + "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", + "versions.yml:md5,bc99889446f02427c166b3219b793672" ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.1" }, - "timestamp": "2024-03-13T17:43:27.87968" + "timestamp": "2024-06-20T18:15:00.759762" }, "default options": { "content": [ @@ -701,16 +701,16 @@ [ "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", "versions.yml:md5,1cd265cb86a23a27f683ffb2459f37f5", - "versions.yml:md5,58fa668eeacb984c10df6f856f2c9291", "versions.yml:md5,71252f1a221be05593361acccb99506b", - "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a" + "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", + "versions.yml:md5,bc99889446f02427c166b3219b793672" ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.1" }, - "timestamp": "2024-03-13T11:32:22.525706" + "timestamp": "2024-06-20T18:12:54.779065" }, "salmon_index = false": { "content": [ @@ -756,16 +756,16 @@ [ "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", "versions.yml:md5,1cd265cb86a23a27f683ffb2459f37f5", - "versions.yml:md5,58fa668eeacb984c10df6f856f2c9291", "versions.yml:md5,71252f1a221be05593361acccb99506b", - "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a" + "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", + "versions.yml:md5,bc99889446f02427c166b3219b793672" ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.1" }, - "timestamp": "2024-03-13T11:38:24.083134" + "timestamp": "2024-06-20T18:16:27.229869" }, "rsem_index = false": { "content": [ @@ -811,16 +811,16 @@ [ "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", "versions.yml:md5,1cd265cb86a23a27f683ffb2459f37f5", - "versions.yml:md5,58fa668eeacb984c10df6f856f2c9291", "versions.yml:md5,71252f1a221be05593361acccb99506b", - "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a" + "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", + "versions.yml:md5,bc99889446f02427c166b3219b793672" ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.1" }, - "timestamp": "2024-03-13T11:37:52.068391" + "timestamp": "2024-06-20T18:16:09.968836" }, "skip_psuedo_alignment": { "content": [ @@ -866,16 +866,16 @@ [ "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", "versions.yml:md5,1cd265cb86a23a27f683ffb2459f37f5", - "versions.yml:md5,58fa668eeacb984c10df6f856f2c9291", "versions.yml:md5,71252f1a221be05593361acccb99506b", - "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a" + "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", + "versions.yml:md5,bc99889446f02427c166b3219b793672" ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.1" }, - "timestamp": "2024-03-13T11:34:43.261537" + "timestamp": "2024-06-20T18:14:22.598093" }, "transcriptome = false": { "content": [ @@ -921,17 +921,17 @@ [ "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", "versions.yml:md5,1cd265cb86a23a27f683ffb2459f37f5", - "versions.yml:md5,58fa668eeacb984c10df6f856f2c9291", "versions.yml:md5,71252f1a221be05593361acccb99506b", "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", - "versions.yml:md5,918fe0b59c0986eb602ace85841c5ab3" + "versions.yml:md5,918fe0b59c0986eb602ace85841c5ab3", + "versions.yml:md5,bc99889446f02427c166b3219b793672" ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.1" }, - "timestamp": "2024-03-13T17:44:23.836038" + "timestamp": "2024-06-20T18:15:34.269049" }, "skip_pseudoalignment = true": { "content": [ @@ -977,16 +977,16 @@ [ "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", "versions.yml:md5,1cd265cb86a23a27f683ffb2459f37f5", - "versions.yml:md5,58fa668eeacb984c10df6f856f2c9291", "versions.yml:md5,71252f1a221be05593361acccb99506b", - "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a" + "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", + "versions.yml:md5,bc99889446f02427c166b3219b793672" ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.1" }, - "timestamp": "2024-03-13T11:41:45.834084" + "timestamp": "2024-06-20T18:18:35.783312" }, "skip_alignment = true": { "content": [ @@ -1032,16 +1032,16 @@ [ "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", "versions.yml:md5,1cd265cb86a23a27f683ffb2459f37f5", - "versions.yml:md5,58fa668eeacb984c10df6f856f2c9291", "versions.yml:md5,71252f1a221be05593361acccb99506b", - "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a" + "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", + "versions.yml:md5,bc99889446f02427c166b3219b793672" ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.1" }, - "timestamp": "2024-03-13T11:41:15.442241" + "timestamp": "2024-06-20T18:18:16.883006" }, "skip_gtf_filter = true": { "content": [ @@ -1087,14 +1087,14 @@ [ "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", "versions.yml:md5,1cd265cb86a23a27f683ffb2459f37f5", - "versions.yml:md5,58fa668eeacb984c10df6f856f2c9291", - "versions.yml:md5,71252f1a221be05593361acccb99506b" + "versions.yml:md5,71252f1a221be05593361acccb99506b", + "versions.yml:md5,bc99889446f02427c166b3219b793672" ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.1" }, - "timestamp": "2024-03-13T11:40:24.672206" + "timestamp": "2024-06-20T18:17:39.358651" } } \ No newline at end of file From b8cf404f2a6e0ad61778a2279b72c9f73a38f7f1 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Thu, 20 Jun 2024 18:43:44 +0100 Subject: [PATCH 412/634] Remove problem multiqc setting --- workflows/rnaseq/assets/multiqc/deseq2_clustering_header.txt | 1 - 1 file changed, 1 deletion(-) diff --git a/workflows/rnaseq/assets/multiqc/deseq2_clustering_header.txt b/workflows/rnaseq/assets/multiqc/deseq2_clustering_header.txt index 04e10efa5..a745d2ff2 100644 --- a/workflows/rnaseq/assets/multiqc/deseq2_clustering_header.txt +++ b/workflows/rnaseq/assets/multiqc/deseq2_clustering_header.txt @@ -8,5 +8,4 @@ #anchor: 'deseq2_clustering' #pconfig: # title: 'DESeq2: Heatmap of the sample-to-sample distances' -# xlab: True # reverseColors: True From fbcee9db7501e4080fc2e42eaac9a02529887a80 Mon Sep 17 00:00:00 2001 From: Luke Zappia Date: Fri, 21 Jun 2024 08:55:34 +0200 Subject: [PATCH 413/634] Move note about basic annotations to GENCODE section --- docs/usage.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/usage.md b/docs/usage.md index 85ac90888..4ea7bf483 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -188,8 +188,6 @@ Gene annotations are updated more frequently than the reference genome sequence, Once you have chosen a release, select the annotation file that matches your reference genome. For the human primary assembly, use the comprehensive annotation (e.g., `gencode.{release}.primary_assembly.annotation.gtf.gz` from GENCODE or `Homo_sapiens.GRCh38.{release}.gtf.gz` from Ensembl). For other species, like fly, use the annotation matching the toplevel assembly (e.g., `Drosophila_melanogaster.BDGP6.46.{release}.gtf.gz` from Ensembl). -GENCODE also provides "basic" annotations, which include only representative transcripts, but we do not recommend using these. - Ensure that the annotation files use gene IDs as the primary identifier, not the gene name/symbol. For example, the Ensembl ID `ENSG00000254647` corresponds to the `INS` gene, which encodes the insulin protein. While gene names are more familiar, it is crucial to retain and use the primary identifiers as they are unique and easier to map between annotation versions or sources. To take advantage of all the quality control modules implemented in the pipeline, the gene annotation should include a `gene_biotype` field which describes the function of each feature (protein coding, long non-coding etc.). This is usually the case for annotations from GENCODE or Ensembl but may not be if your annotation comes from another source. If your annotation does not include this field, please set the `--skip_biotype_qc` option to avoid running the steps that rely on it. @@ -226,6 +224,8 @@ If you are using [GENCODE](https://www.gencodegenes.org/) reference genome files - The `--gtf_group_features_type` parameter will automatically be set to `gene_type` as opposed to `gene_biotype`, respectively. - If you are running Salmon, the `--gencode` flag will also be passed to the index building step to overcome parsing issues resulting from the transcript IDs in GENCODE fasta files being separated by vertical pipes (`|`) instead of spaces (see [this issue](https://github.com/COMBINE-lab/salmon/issues/15)). +As well as the standard annotations, GENCODE also provides "basic" annotations, which include only representative transcripts, but we do not recommend using these. + ### Prokaryotic genome annotations This pipeline uses featureCounts to generate QC metrics based on [biotype](http://www.ensembl.org/info/genome/genebuild/biotypes.html) information available within GFF/GTF genome annotation files. The format of these annotation files can vary significantly depending on the source of the annotation and the type of organism. The default settings in the pipeline are tailored towards Ensembl GTF annotations available for eukaryotic genomes. Prokaryotic genome annotations tend to be distributed in GFF format which are structured differently in terms of the feature naming conventions. There are a number of ways you can tune the behaviour of the pipeline to cater for differences/absence of biotype information: From d338f007384c8cd8e341c75d2e4448f8041c96b0 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Fri, 21 Jun 2024 09:41:27 +0100 Subject: [PATCH 414/634] Revert "Remove problem multiqc setting" This reverts commit b8cf404f2a6e0ad61778a2279b72c9f73a38f7f1. --- workflows/rnaseq/assets/multiqc/deseq2_clustering_header.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/workflows/rnaseq/assets/multiqc/deseq2_clustering_header.txt b/workflows/rnaseq/assets/multiqc/deseq2_clustering_header.txt index a745d2ff2..04e10efa5 100644 --- a/workflows/rnaseq/assets/multiqc/deseq2_clustering_header.txt +++ b/workflows/rnaseq/assets/multiqc/deseq2_clustering_header.txt @@ -8,4 +8,5 @@ #anchor: 'deseq2_clustering' #pconfig: # title: 'DESeq2: Heatmap of the sample-to-sample distances' +# xlab: True # reverseColors: True From 858cd5dfb1367ae3058dc4acfdf24aafdbb978b7 Mon Sep 17 00:00:00 2001 From: maxulysse Date: Fri, 21 Jun 2024 11:41:29 +0200 Subject: [PATCH 415/634] add stub for local/deseq2_qc --- modules/local/deseq2_qc/main.nf | 27 ++++++ modules/local/deseq2_qc/tests/main.nf.test | 25 ++++- .../local/deseq2_qc/tests/main.nf.test.snap | 92 ++++++++++++++++++- 3 files changed, 137 insertions(+), 7 deletions(-) diff --git a/modules/local/deseq2_qc/main.nf b/modules/local/deseq2_qc/main.nf index 7be6836f6..7ff5877bb 100644 --- a/modules/local/deseq2_qc/main.nf +++ b/modules/local/deseq2_qc/main.nf @@ -57,4 +57,31 @@ process DESEQ2_QC { bioconductor-deseq2: \$(Rscript -e "library(DESeq2); cat(as.character(packageVersion('DESeq2')))") END_VERSIONS """ + + stub: + def args2 = task.ext.args2 ?: '' + def label_lower = args2.toLowerCase() + prefix = task.ext.prefix ?: "deseq2" + """ + mkdir size_factors + touch ${label_lower}.pca.vals_mqc.tsv + touch ${label_lower}.sample.dists_mqc.tsv + touch ${prefix}.plots.pdf + touch ${prefix}.dds.RData + touch ${prefix}.pca.vals.txt + touch ${prefix}.sample.dists.txt + touch R_sessionInfo.log + touch size_factors/${prefix}.size_factors.RData + + for i in `head $counts -n 1 | cut -f3-`; + do + touch size_factors/\${i}.size_factors.RData + done + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + r-base: \$(echo \$(R --version 2>&1) | sed 's/^.*R version //; s/ .*\$//') + bioconductor-deseq2: \$(Rscript -e "library(DESeq2); cat(as.character(packageVersion('DESeq2')))") + END_VERSIONS + """ } diff --git a/modules/local/deseq2_qc/tests/main.nf.test b/modules/local/deseq2_qc/tests/main.nf.test index f9319edab..a9d35997d 100644 --- a/modules/local/deseq2_qc/tests/main.nf.test +++ b/modules/local/deseq2_qc/tests/main.nf.test @@ -26,11 +26,32 @@ nextflow_process { process.out.pca_multiqc, process.out.pca_txt, process.out.rdata, - process.out.size_factors + process.out.size_factors, + process.out.versions ).match() } ) } - } + test("parse count data correctly - stub") { + + options "-stub" + + when { + process { + """ + input[0] = file(params.pipelines_testdata_base_path + "deseq2qc/countFile.tsv", checkIfExists: true) + input[1] = file(params.pipelines_testdata_base_path + "deseq2qc/deseq2_pca_header.txt", checkIfExists: true) + input[2] = file(params.pipelines_testdata_base_path + "deseq2qc/deseq2_clustering_header.txt", checkIfExists: true) + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } } diff --git a/modules/local/deseq2_qc/tests/main.nf.test.snap b/modules/local/deseq2_qc/tests/main.nf.test.snap index 865b8d5b8..1c6bc7105 100644 --- a/modules/local/deseq2_qc/tests/main.nf.test.snap +++ b/modules/local/deseq2_qc/tests/main.nf.test.snap @@ -1,8 +1,87 @@ { + "parse count data correctly - stub": { + "content": [ + { + "0": [ + "deseq2.plots.pdf:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "1": [ + "deseq2.dds.RData:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "2": [ + "deseq2.pca.vals.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "3": [ + + ], + "4": [ + "deseq2.sample.dists.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "5": [ + + ], + "6": [ + "R_sessionInfo.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "7": [ + [ + "RAP1_IAA_30M_REP1.size_factors.RData:md5,d41d8cd98f00b204e9800998ecf8427e", + "RAP1_UNINDUCED_REP1.size_factors.RData:md5,d41d8cd98f00b204e9800998ecf8427e", + "RAP1_UNINDUCED_REP2.size_factors.RData:md5,d41d8cd98f00b204e9800998ecf8427e", + "WT_REP1.size_factors.RData:md5,d41d8cd98f00b204e9800998ecf8427e", + "WT_REP2.size_factors.RData:md5,d41d8cd98f00b204e9800998ecf8427e", + "deseq2.size_factors.RData:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "8": [ + "versions.yml:md5,60f8e4f473397a4b5d1a3dc490c93ec5" + ], + "dists_multiqc": [ + + ], + "dists_txt": [ + "deseq2.sample.dists.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "log": [ + "R_sessionInfo.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "pca_multiqc": [ + + ], + "pca_txt": [ + "deseq2.pca.vals.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "pdf": [ + "deseq2.plots.pdf:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "rdata": [ + "deseq2.dds.RData:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "size_factors": [ + [ + "RAP1_IAA_30M_REP1.size_factors.RData:md5,d41d8cd98f00b204e9800998ecf8427e", + "RAP1_UNINDUCED_REP1.size_factors.RData:md5,d41d8cd98f00b204e9800998ecf8427e", + "RAP1_UNINDUCED_REP2.size_factors.RData:md5,d41d8cd98f00b204e9800998ecf8427e", + "WT_REP1.size_factors.RData:md5,d41d8cd98f00b204e9800998ecf8427e", + "WT_REP2.size_factors.RData:md5,d41d8cd98f00b204e9800998ecf8427e", + "deseq2.size_factors.RData:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,60f8e4f473397a4b5d1a3dc490c93ec5" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-06-21T11:38:08.92794" + }, "parse count data correctly": { "content": [ [ - + ], [ "deseq2.sample.dists.txt:md5,1616ce40eb58ee75640efed219c6bbec" @@ -11,7 +90,7 @@ "R_sessionInfo.log:md5,fb0da0d7ad6994ed66a8e68348b19676" ], [ - + ], [ "deseq2.pca.vals.txt:md5,4cda8e32ec39326c1350e77b4b607aad" @@ -28,12 +107,15 @@ "WT_REP2.txt:md5,2ce093f2c2e92c1bde1cd3da91ac884c", "deseq2.size_factors.RData:md5,51c6643a0f8a9edabbff8df0165451f2" ] + ], + [ + "versions.yml:md5,60f8e4f473397a4b5d1a3dc490c93ec5" ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.2" }, - "timestamp": "2024-03-07T12:34:51.582179" + "timestamp": "2024-06-21T11:21:20.349616" } -} \ No newline at end of file +} From 451483ba1463f88e7e3eba96e3d82d4faf228c6e Mon Sep 17 00:00:00 2001 From: maxulysse Date: Fri, 21 Jun 2024 12:12:20 +0200 Subject: [PATCH 416/634] add stubs for all + test for most --- modules/local/gtf2bed/main.nf | 10 ++++ modules/local/gtf2bed/tests/main.nf.test | 19 +++++++ modules/local/gtf2bed/tests/main.nf.test.snap | 23 +++++++++ modules/local/gtf_filter/main.nf | 10 ++++ modules/local/gtf_filter/tests/main.nf.test | 23 ++++++++- .../local/gtf_filter/tests/main.nf.test.snap | 29 +++++++++-- modules/local/multiqc_custom_biotype/main.nf | 12 +++++ .../multiqc_custom_biotype/tests/main.nf.test | 26 +++++++++- .../tests/main.nf.test.snap | 39 ++++++++++++++ .../main.nf | 12 +++++ .../tests/main.nf.test | 28 +++++++++- .../tests/main.nf.test.snap | 23 +++++++++ modules/local/rsem_merge_counts/main.nf | 13 +++++ .../rsem_merge_counts/tests/main.nf.test | 35 +++++++++++-- .../rsem_merge_counts/tests/main.nf.test.snap | 41 +++++++++++++++ .../star_genomegenerate_igenomes/main.nf | 51 ++++++++++++++++++- 16 files changed, 383 insertions(+), 11 deletions(-) diff --git a/modules/local/gtf2bed/main.nf b/modules/local/gtf2bed/main.nf index 464d7f819..a2523c9cf 100644 --- a/modules/local/gtf2bed/main.nf +++ b/modules/local/gtf2bed/main.nf @@ -28,4 +28,14 @@ process GTF2BED { perl: \$(echo \$(perl --version 2>&1) | sed 's/.*v\\(.*\\)) built.*/\\1/') END_VERSIONS """ + + stub: + """ + touch ${gtf.baseName}.bed + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + perl: \$(echo \$(perl --version 2>&1) | sed 's/.*v\\(.*\\)) built.*/\\1/') + END_VERSIONS + """ } diff --git a/modules/local/gtf2bed/tests/main.nf.test b/modules/local/gtf2bed/tests/main.nf.test index 698714f8b..b640d2053 100644 --- a/modules/local/gtf2bed/tests/main.nf.test +++ b/modules/local/gtf2bed/tests/main.nf.test @@ -20,6 +20,25 @@ nextflow_process { { assert snapshot(process.out).match() } ) } + } + + test("sarscov2 - bam - stub") { + + options "-stub" + when { + process { + """ + input[0] = file(params.modules_testdata_base_path + "genomics/sarscov2/genome/genome.gtf", checkIfExists: true) + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } } } diff --git a/modules/local/gtf2bed/tests/main.nf.test.snap b/modules/local/gtf2bed/tests/main.nf.test.snap index 277ebdc23..66ec3bf9e 100644 --- a/modules/local/gtf2bed/tests/main.nf.test.snap +++ b/modules/local/gtf2bed/tests/main.nf.test.snap @@ -1,4 +1,27 @@ { + "sarscov2 - bam - stub": { + "content": [ + { + "0": [ + "genome.bed:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "1": [ + "versions.yml:md5,d04d815c224b980b6f3818d4b2fd4fe3" + ], + "bed": [ + "genome.bed:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "versions": [ + "versions.yml:md5,d04d815c224b980b6f3818d4b2fd4fe3" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-06-21T11:46:28.123826" + }, "sarscov2 - bam": { "content": [ { diff --git a/modules/local/gtf_filter/main.nf b/modules/local/gtf_filter/main.nf index 39b215712..60eb9a9bd 100644 --- a/modules/local/gtf_filter/main.nf +++ b/modules/local/gtf_filter/main.nf @@ -29,4 +29,14 @@ process GTF_FILTER { python: \$(python --version | sed 's/Python //g') END_VERSIONS """ + + stub: + """ + touch ${fasta.baseName}.filtered.gtf + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + python: \$(python --version | sed 's/Python //g') + END_VERSIONS + """ } diff --git a/modules/local/gtf_filter/tests/main.nf.test b/modules/local/gtf_filter/tests/main.nf.test index 31044be1a..324ee6bb9 100644 --- a/modules/local/gtf_filter/tests/main.nf.test +++ b/modules/local/gtf_filter/tests/main.nf.test @@ -4,7 +4,7 @@ nextflow_process { script "../main.nf" process "GTF_FILTER" - test("Should run without failures") { + test("sarscov2 - fasta - gtf") { when { process { @@ -21,7 +21,26 @@ nextflow_process { { assert snapshot(process.out).match() } ) } - } + test("sarscov2 - fasta - gtf - stub") { + + options "-stub" + + when { + process { + """ + input[0] = file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) + input[1] = file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.gtf', checkIfExists: true) + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } } diff --git a/modules/local/gtf_filter/tests/main.nf.test.snap b/modules/local/gtf_filter/tests/main.nf.test.snap index b763c249c..d22a4fa5b 100644 --- a/modules/local/gtf_filter/tests/main.nf.test.snap +++ b/modules/local/gtf_filter/tests/main.nf.test.snap @@ -1,5 +1,5 @@ { - "Should run without failures": { + "sarscov2 - fasta - gtf": { "content": [ { "0": [ @@ -18,8 +18,31 @@ ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.2" }, - "timestamp": "2024-03-06T15:52:37.977802" + "timestamp": "2024-06-21T11:47:56.314297" + }, + "sarscov2 - fasta - gtf - stub": { + "content": [ + { + "0": [ + "genome.filtered.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "1": [ + "versions.yml:md5,4adf55ec05d247fd6d253459bd80856f" + ], + "genome_gtf": [ + "genome.filtered.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "versions": [ + "versions.yml:md5,4adf55ec05d247fd6d253459bd80856f" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-06-21T11:48:19.085835" } } \ No newline at end of file diff --git a/modules/local/multiqc_custom_biotype/main.nf b/modules/local/multiqc_custom_biotype/main.nf index d102f67d9..a4b923c3e 100644 --- a/modules/local/multiqc_custom_biotype/main.nf +++ b/modules/local/multiqc_custom_biotype/main.nf @@ -33,4 +33,16 @@ process MULTIQC_CUSTOM_BIOTYPE { python: \$(python --version | sed 's/Python //g') END_VERSIONS """ + + stub: + def prefix = task.ext.prefix ?: "${meta.id}" + """ + touch ${prefix}.biotype_counts_mqc.tsv + touch ${prefix}.biotype_counts_rrna_mqc.tsv + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + python: \$(python --version | sed 's/Python //g') + END_VERSIONS + """ } diff --git a/modules/local/multiqc_custom_biotype/tests/main.nf.test b/modules/local/multiqc_custom_biotype/tests/main.nf.test index 216f73336..bd6cde6bc 100644 --- a/modules/local/multiqc_custom_biotype/tests/main.nf.test +++ b/modules/local/multiqc_custom_biotype/tests/main.nf.test @@ -26,7 +26,31 @@ nextflow_process { { assert snapshot(process.out).match()} ) } - } + test("test sarscov2 count data - stub") { + + options "-stub" + + when { + process { + """ + input[0] = Channel.of( + [ + [ id: 'test' ], + file(params.pipelines_testdata_base_path + 'multiqc_custom_biotype/test.featureCounts.txt', checkIfExists: true) + ] + ) + input[1] = file(params.pipelines_testdata_base_path + 'multiqc_custom_biotype/biotypes_header.txt', checkIfExists: true) + """ + } + } + + then { + assertAll( + { assert process.success}, + { assert snapshot(process.out).match()} + ) + } + } } diff --git a/modules/local/multiqc_custom_biotype/tests/main.nf.test.snap b/modules/local/multiqc_custom_biotype/tests/main.nf.test.snap index ae559097b..ff9420015 100644 --- a/modules/local/multiqc_custom_biotype/tests/main.nf.test.snap +++ b/modules/local/multiqc_custom_biotype/tests/main.nf.test.snap @@ -37,5 +37,44 @@ "nextflow": "24.01.0" }, "timestamp": "2024-03-08T09:38:04.260609" + }, + "test sarscov2 count data - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + [ + "test.biotype_counts_mqc.tsv:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.biotype_counts_rrna_mqc.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "1": [ + "versions.yml:md5,575b3b4c8a8a6e508c8ceeca41331b6b" + ], + "tsv": [ + [ + { + "id": "test" + }, + [ + "test.biotype_counts_mqc.tsv:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.biotype_counts_rrna_mqc.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "versions": [ + "versions.yml:md5,575b3b4c8a8a6e508c8ceeca41331b6b" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-06-21T11:50:15.104113" } } \ No newline at end of file diff --git a/modules/local/preprocess_transcripts_fasta_gencode/main.nf b/modules/local/preprocess_transcripts_fasta_gencode/main.nf index 9d530b77d..2722e66c7 100644 --- a/modules/local/preprocess_transcripts_fasta_gencode/main.nf +++ b/modules/local/preprocess_transcripts_fasta_gencode/main.nf @@ -28,4 +28,16 @@ process PREPROCESS_TRANSCRIPTS_FASTA_GENCODE { sed: \$(echo \$(sed --version 2>&1) | sed 's/^.*GNU sed) //; s/ .*\$//') END_VERSIONS """ + + stub: + def gzipped = fasta.toString().endsWith('.gz') + def outfile = gzipped ? file(fasta.baseName).baseName : fasta.baseName + """ + touch ${outfile}.fixed.fa + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + sed: \$(echo \$(sed --version 2>&1) | sed 's/^.*GNU sed) //; s/ .*\$//') + END_VERSIONS + """ } diff --git a/modules/local/preprocess_transcripts_fasta_gencode/tests/main.nf.test b/modules/local/preprocess_transcripts_fasta_gencode/tests/main.nf.test index 9585f8ae7..b07b4c001 100644 --- a/modules/local/preprocess_transcripts_fasta_gencode/tests/main.nf.test +++ b/modules/local/preprocess_transcripts_fasta_gencode/tests/main.nf.test @@ -28,7 +28,33 @@ nextflow_process { { assert snapshot(process.out).match() } ) } - } + test("gencode fasta - stub") { + + options "-stub" + + when { + process { + """ + def fileContents = [ + '>chr22|removeme', + 'ACTCAAGATAATGATGAGTAAAGAATATATTTCTAACAACAAAAAGGAAATTTGATAGTA' + ] + def gencodeFasta = file("${workDir}/gencodeFasta.fasta") + gencodeFasta.withWriter{ out -> + fileContents.each {out.println it} + } + input[0] = gencodeFasta + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } } diff --git a/modules/local/preprocess_transcripts_fasta_gencode/tests/main.nf.test.snap b/modules/local/preprocess_transcripts_fasta_gencode/tests/main.nf.test.snap index 8c0580686..eaef85b1b 100644 --- a/modules/local/preprocess_transcripts_fasta_gencode/tests/main.nf.test.snap +++ b/modules/local/preprocess_transcripts_fasta_gencode/tests/main.nf.test.snap @@ -21,5 +21,28 @@ "nextflow": "23.10.1" }, "timestamp": "2024-03-06T16:16:36.494744" + }, + "gencode fasta - stub": { + "content": [ + { + "0": [ + "gencodeFasta.fixed.fa:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "1": [ + "versions.yml:md5,e2c7f636c472887a914b128d1444737e" + ], + "fasta": [ + "gencodeFasta.fixed.fa:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "versions": [ + "versions.yml:md5,e2c7f636c472887a914b128d1444737e" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-06-21T11:54:20.291494" } } \ No newline at end of file diff --git a/modules/local/rsem_merge_counts/main.nf b/modules/local/rsem_merge_counts/main.nf index b21ca4aa4..c220e31de 100644 --- a/modules/local/rsem_merge_counts/main.nf +++ b/modules/local/rsem_merge_counts/main.nf @@ -52,4 +52,17 @@ process RSEM_MERGE_COUNTS { sed: \$(echo \$(sed --version 2>&1) | sed 's/^.*GNU sed) //; s/ .*\$//') END_VERSIONS """ + + stub: + """ + touch rsem.merged.gene_counts.tsv + touch rsem.merged.gene_tpm.tsv + touch rsem.merged.transcript_counts.tsv + touch rsem.merged.transcript_tpm.tsv + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + sed: \$(echo \$(sed --version 2>&1) | sed 's/^.*GNU sed) //; s/ .*\$//') + END_VERSIONS + """ } diff --git a/modules/local/rsem_merge_counts/tests/main.nf.test b/modules/local/rsem_merge_counts/tests/main.nf.test index 9bb1caeb2..61008082a 100644 --- a/modules/local/rsem_merge_counts/tests/main.nf.test +++ b/modules/local/rsem_merge_counts/tests/main.nf.test @@ -24,10 +24,39 @@ nextflow_process { } then { - assert process.success - assert snapshot(process.out).match() + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) } - } + test("stub") { + + options "-stub" + + when { + process { + """ + input[0] = Channel.of([ + file(params.pipelines_testdata_base_path + "rsem_merge_counts/genes/RAP1_IAA_30M_REP1.genes.results", checkIfExists: true), + file(params.pipelines_testdata_base_path + "rsem_merge_counts/genes/RAP1_UNINDUCED_REP1.genes.results", checkIfExists: true), + file(params.pipelines_testdata_base_path + "rsem_merge_counts/genes/RAP1_UNINDUCED_REP2.genes.results", checkIfExists: true) + ]).collect() + input[1] = Channel.of([ + file(params.pipelines_testdata_base_path + "rsem_merge_counts/isoforms/RAP1_IAA_30M_REP1.isoforms.results", checkIfExists: true), + file(params.pipelines_testdata_base_path + "rsem_merge_counts/isoforms/RAP1_UNINDUCED_REP1.isoforms.results", checkIfExists: true), + file(params.pipelines_testdata_base_path + "rsem_merge_counts/isoforms/RAP1_UNINDUCED_REP2.isoforms.results", checkIfExists: true) + ]).collect() + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } } diff --git a/modules/local/rsem_merge_counts/tests/main.nf.test.snap b/modules/local/rsem_merge_counts/tests/main.nf.test.snap index 800263c1a..1715d1279 100644 --- a/modules/local/rsem_merge_counts/tests/main.nf.test.snap +++ b/modules/local/rsem_merge_counts/tests/main.nf.test.snap @@ -1,4 +1,45 @@ { + "stub": { + "content": [ + { + "0": [ + "rsem.merged.gene_counts.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "1": [ + "rsem.merged.gene_tpm.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "2": [ + "rsem.merged.transcript_counts.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "3": [ + "rsem.merged.transcript_tpm.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "4": [ + "versions.yml:md5,48ca3e12c91829af8019462b3f6aa29c" + ], + "counts_gene": [ + "rsem.merged.gene_counts.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "counts_transcript": [ + "rsem.merged.transcript_counts.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "tpm_gene": [ + "rsem.merged.gene_tpm.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "tpm_transcript": [ + "rsem.merged.transcript_tpm.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "versions": [ + "versions.yml:md5,48ca3e12c91829af8019462b3f6aa29c" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-06-21T11:55:29.45389" + }, "Should run without failures": { "content": [ { diff --git a/modules/local/star_genomegenerate_igenomes/main.nf b/modules/local/star_genomegenerate_igenomes/main.nf index 7b5115a6c..e36e04179 100644 --- a/modules/local/star_genomegenerate_igenomes/main.nf +++ b/modules/local/star_genomegenerate_igenomes/main.nf @@ -66,4 +66,53 @@ process STAR_GENOMEGENERATE_IGENOMES { END_VERSIONS """ } -} + + stub: + if (gtf) { + """ + mkdir star + touch star/Genome + touch star/Log.out + touch star/SA + touch star/SAindex + touch star/chrLength.txt + touch star/chrName.txt + touch star/chrNameLength.txt + touch star/chrStart.txt + touch star/exonGeTrInfo.tab + touch star/exonInfo.tab + touch star/geneInfo.tab + touch star/genomeParameters.txt + touch star/sjdbInfo.txt + touch star/sjdbList.fromGTF.out.tab + touch star/sjdbList.out.tab + touch star/transcriptInfo.tab + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + star: \$(STAR --version | sed -e "s/STAR_//g") + samtools: \$(echo \$(samtools --version 2>&1) | sed 's/^.*samtools //; s/Using.*\$//') + gawk: \$(echo \$(gawk --version 2>&1) | sed 's/^.*GNU Awk //; s/, .*\$//') + END_VERSIONS + """ + } else { + """ + mkdir star + touch star/Genome + touch star/Log.out + touch star/SA + touch star/SAindex + touch star/chrLength.txt + touch star/chrName.txt + touch star/chrNameLength.txt + touch star/chrStart.txt + touch star/genomeParameters.txt + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + star: \$(STAR --version | sed -e "s/STAR_//g") + samtools: \$(echo \$(samtools --version 2>&1) | sed 's/^.*samtools //; s/Using.*\$//') + gawk: \$(echo \$(gawk --version 2>&1) | sed 's/^.*GNU Awk //; s/, .*\$//') + END_VERSIONS + """ + }} From e640eeaae309bdae813945e0a928913c6df63b27 Mon Sep 17 00:00:00 2001 From: Harshil Patel Date: Thu, 27 Jun 2024 11:17:05 +0100 Subject: [PATCH 417/634] Update all nf-core/modules again --- CHANGELOG.md | 2 +- modules.json | 20 +- modules/nf-core/bbmap/bbsplit/main.nf | 19 + .../nf-core/bbmap/bbsplit/tests/main.nf.test | 97 +++++ .../bbmap/bbsplit/tests/main.nf.test.snap | 228 +++++++++++- .../nf-core/custom/catadditionalfasta/main.nf | 13 + .../catadditionalfasta/tests/main.nf.test | 32 +- .../tests/main.nf.test.snap | 65 ++++ modules/nf-core/fq/subsample/main.nf | 12 + .../nf-core/fq/subsample/tests/main.nf.test | 89 ++++- .../fq/subsample/tests/main.nf.test.snap | 266 ++++++++++++++ modules/nf-core/gunzip/main.nf | 13 +- modules/nf-core/gunzip/meta.yml | 1 + modules/nf-core/gunzip/tests/main.nf.test | 85 +++++ .../nf-core/gunzip/tests/main.nf.test.snap | 103 ++++++ modules/nf-core/gunzip/tests/nextflow.config | 5 + modules/nf-core/hisat2/align/main.nf | 19 + .../nf-core/hisat2/align/tests/main.nf.test | 202 +++++++++++ .../hisat2/align/tests/main.nf.test.snap | 338 ++++++++++++++++-- modules/nf-core/hisat2/build/main.nf | 11 + .../nf-core/hisat2/build/tests/main.nf.test | 47 ++- .../hisat2/build/tests/main.nf.test.snap | 66 +++- .../nf-core/hisat2/extractsplicesites/main.nf | 11 + .../extractsplicesites/tests/main.nf.test | 26 ++ .../tests/main.nf.test.snap | 37 ++ modules/nf-core/multiqc/environment.yml | 2 +- modules/nf-core/multiqc/main.nf | 4 +- .../nf-core/multiqc/tests/main.nf.test.snap | 12 +- modules/nf-core/preseq/lcextrap/main.nf | 12 + .../preseq/lcextrap/tests/main.nf.test | 50 +++ .../preseq/lcextrap/tests/main.nf.test.snap | 130 +++++++ .../fastq_align_hisat2/tests/main.nf.test | 52 +-- .../tests/main.nf.test.snap | 44 +-- 33 files changed, 2002 insertions(+), 111 deletions(-) create mode 100644 modules/nf-core/gunzip/tests/nextflow.config diff --git a/CHANGELOG.md b/CHANGELOG.md index ab5b1c006..cafb32598 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -116,7 +116,7 @@ Thank you to everyone else that has contributed by reporting bugs, enhancements | `bioconductor-summarizedexperiment` | 1.24.0 | 1.32.0 | | `bioconductor-tximeta` | 1.12.0 | 1.20.1 | | `gffread` | 0.12.1 | 0.12.7 | -| `multiqc` | 1.20 | 1.22.2 | +| `multiqc` | 1.20 | 1.22.3 | | `picard` | 3.0.0 | 3.1.1 | | `samtools` | 1.17 | 1.20 | | `sortmerna` | 4.3.4 | 4.3.6 | diff --git a/modules.json b/modules.json index 774428c8b..c7d899894 100644 --- a/modules.json +++ b/modules.json @@ -7,7 +7,7 @@ "nf-core": { "bbmap/bbsplit": { "branch": "master", - "git_sha": "ecc2139bc014be1d0117d6c69458d82fbfa3328f", + "git_sha": "2c6b1144ed58b6184ad58fc4e6b6a90219b4bf4f", "installed_by": ["modules"] }, "bedtools/genomecov": { @@ -22,7 +22,7 @@ }, "custom/catadditionalfasta": { "branch": "master", - "git_sha": "13c7a1b7a70c13e723a9aeff5aa8438268c09a0f", + "git_sha": "2c6b1144ed58b6184ad58fc4e6b6a90219b4bf4f", "installed_by": ["modules"] }, "custom/getchromsizes": { @@ -52,7 +52,7 @@ }, "fq/subsample": { "branch": "master", - "git_sha": "59d1faf07ace4f7a00f7fa7778bce4e1f1dcdd63", + "git_sha": "2c6b1144ed58b6184ad58fc4e6b6a90219b4bf4f", "installed_by": ["fastq_subsample_fq_salmon", "modules"] }, "gffread": { @@ -62,22 +62,22 @@ }, "gunzip": { "branch": "master", - "git_sha": "3a5fef109d113b4997c9822198664ca5f2716208", + "git_sha": "a7231cbccb86535529e33859e05d19ac93f3ea04", "installed_by": ["modules"] }, "hisat2/align": { "branch": "master", - "git_sha": "400037f54de4b0c42712ec5a499d9fd9e66250d1", + "git_sha": "2c6b1144ed58b6184ad58fc4e6b6a90219b4bf4f", "installed_by": ["fastq_align_hisat2"] }, "hisat2/build": { "branch": "master", - "git_sha": "400037f54de4b0c42712ec5a499d9fd9e66250d1", + "git_sha": "2c6b1144ed58b6184ad58fc4e6b6a90219b4bf4f", "installed_by": ["modules"] }, "hisat2/extractsplicesites": { "branch": "master", - "git_sha": "400037f54de4b0c42712ec5a499d9fd9e66250d1", + "git_sha": "2c6b1144ed58b6184ad58fc4e6b6a90219b4bf4f", "installed_by": ["modules"] }, "kallisto/index": { @@ -92,7 +92,7 @@ }, "multiqc": { "branch": "master", - "git_sha": "8f2062e7b4185590fb9f43c275381a31a6544fc0", + "git_sha": "314d742bdb357a1df5f9b88427b3b6ac78aa33f7", "installed_by": ["modules"] }, "picard/markduplicates": { @@ -102,7 +102,7 @@ }, "preseq/lcextrap": { "branch": "master", - "git_sha": "4d178c536f91d022a3bff078bb84037e866c7da4", + "git_sha": "2c6b1144ed58b6184ad58fc4e6b6a90219b4bf4f", "installed_by": ["modules"] }, "qualimap/rnaseq": { @@ -309,7 +309,7 @@ }, "fastq_align_hisat2": { "branch": "master", - "git_sha": "701ae347c4508fba1b7d65262596f278b6a11cb6", + "git_sha": "2c6b1144ed58b6184ad58fc4e6b6a90219b4bf4f", "installed_by": ["subworkflows"] }, "fastq_fastqc_umitools_fastp": { diff --git a/modules/nf-core/bbmap/bbsplit/main.nf b/modules/nf-core/bbmap/bbsplit/main.nf index 1abb608c2..57bf6398a 100644 --- a/modules/nf-core/bbmap/bbsplit/main.nf +++ b/modules/nf-core/bbmap/bbsplit/main.nf @@ -105,4 +105,23 @@ process BBMAP_BBSPLIT { END_VERSIONS """ + stub: + def prefix = task.ext.prefix ?: "${meta.id}" + def other_refs = '' + other_ref_names.eachWithIndex { name, index -> + other_refs += "echo '' | gzip > ${prefix}_primary_${name}.fastq.gz" + } + """ + mkdir bbsplit + + echo '' | gzip > ${prefix}_primary.fastq.gz + ${other_refs} + touch ${prefix}.stats.txt + touch ${prefix}.log + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + bbmap: \$(bbversion.sh | grep -v "Duplicate cpuset") + END_VERSIONS + """ } diff --git a/modules/nf-core/bbmap/bbsplit/tests/main.nf.test b/modules/nf-core/bbmap/bbsplit/tests/main.nf.test index 0257fedac..b878366b3 100644 --- a/modules/nf-core/bbmap/bbsplit/tests/main.nf.test +++ b/modules/nf-core/bbmap/bbsplit/tests/main.nf.test @@ -3,6 +3,70 @@ nextflow_process { name "Test Process BBMAP_BBSPLIT" script "../main.nf" process "BBMAP_BBSPLIT" + tag "modules" + tag "modules_nfcore" + tag "bbmap" + tag "bbmap/bbsplit" + + test("sarscov2_se_fastq_fasta_chr22_fasta - index") { + + when { + params { + outdir = "$outputDir" + } + process { + """ + input[0] = [[:],[]] + input[1] = [] + input[2] = Channel.of(file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true)) + input[3] = Channel.of([ + [ 'human' ], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr22/sequence/chr22_23800000-23980000.fa', checkIfExists: true) + ]) + input[4] = true + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert path("${process.out.index[0]}").exists() }, + { assert path(process.out.log[0][1]).text.contains("No index available") }, + { assert snapshot(process.out.versions).match() } + ) + } + } + + test("sarscov2_se_fastq_fasta_chr22_fasta - index - stub") { + + options "-stub" + + when { + params { + outdir = "$outputDir" + } + process { + """ + input[0] = [[:],[]] + input[1] = [] + input[2] = Channel.of(file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true)) + input[3] = Channel.of([ + [ 'human' ], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr22/sequence/chr22_23800000-23980000.fa', checkIfExists: true) + ]) + input[4] = true + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } test("sarscov2_se_fastq_fasta_chr22_fasta") { @@ -84,4 +148,37 @@ nextflow_process { ) } } + + test("sarscov2_se_fastq_fasta_chr22_fasta - stub") { + + options "-stub" + + when { + params { + outdir = "$outputDir" + } + process { + """ + input[0] = Channel.of([ + [ id:'test', single_end:true ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true) + ]) + input[1] = [] + input[2] = Channel.of(file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true)) + input[3] = Channel.of([ + [ 'human' ], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr22/sequence/chr22_23800000-23980000.fa', checkIfExists: true) + ]) + input[4] = false + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } } diff --git a/modules/nf-core/bbmap/bbsplit/tests/main.nf.test.snap b/modules/nf-core/bbmap/bbsplit/tests/main.nf.test.snap index 51b3bee1f..6a4889aaa 100644 --- a/modules/nf-core/bbmap/bbsplit/tests/main.nf.test.snap +++ b/modules/nf-core/bbmap/bbsplit/tests/main.nf.test.snap @@ -26,5 +26,231 @@ "nextflow": "23.10.1" }, "timestamp": "2024-02-01T17:11:22.441753642" + }, + "sarscov2_se_fastq_fasta_chr22_fasta - index": { + "content": [ + [ + "versions.yml:md5,cb7f0e697ab2537f8ced951bfade90d4" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-06-20T16:41:29.784895" + }, + "sarscov2_se_fastq_fasta_chr22_fasta - index - stub": { + "content": [ + { + "0": [ + [ + + ] + ], + "1": [ + [ + { + + }, + [ + "null_primary.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "null_primary_human.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ] + ], + "2": [ + [ + { + + }, + [ + "null_primary.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "null_primary_human.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ] + ], + "3": [ + [ + { + + }, + "null.stats.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "4": [ + [ + { + + }, + "null.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "5": [ + "versions.yml:md5,cb7f0e697ab2537f8ced951bfade90d4" + ], + "all_fastq": [ + [ + { + + }, + [ + "null_primary.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "null_primary_human.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ] + ], + "index": [ + [ + + ] + ], + "log": [ + [ + { + + }, + "null.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "primary_fastq": [ + [ + { + + }, + [ + "null_primary.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "null_primary_human.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ] + ], + "stats": [ + [ + { + + }, + "null.stats.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,cb7f0e697ab2537f8ced951bfade90d4" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-06-20T18:49:27.280432" + }, + "sarscov2_se_fastq_fasta_chr22_fasta - stub": { + "content": [ + { + "0": [ + [ + + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": true + }, + [ + "test_primary.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "test_primary_human.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ] + ], + "2": [ + [ + { + "id": "test", + "single_end": true + }, + [ + "test_primary.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "test_primary_human.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ] + ], + "3": [ + [ + { + "id": "test", + "single_end": true + }, + "test.stats.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "4": [ + [ + { + "id": "test", + "single_end": true + }, + "test.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "5": [ + "versions.yml:md5,cb7f0e697ab2537f8ced951bfade90d4" + ], + "all_fastq": [ + [ + { + "id": "test", + "single_end": true + }, + [ + "test_primary.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "test_primary_human.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ] + ], + "index": [ + [ + + ] + ], + "log": [ + [ + { + "id": "test", + "single_end": true + }, + "test.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "primary_fastq": [ + [ + { + "id": "test", + "single_end": true + }, + [ + "test_primary.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "test_primary_human.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ] + ], + "stats": [ + [ + { + "id": "test", + "single_end": true + }, + "test.stats.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,cb7f0e697ab2537f8ced951bfade90d4" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-06-20T16:16:05.793544" } -} +} \ No newline at end of file diff --git a/modules/nf-core/custom/catadditionalfasta/main.nf b/modules/nf-core/custom/catadditionalfasta/main.nf index 076d7bd08..88ce4954b 100644 --- a/modules/nf-core/custom/catadditionalfasta/main.nf +++ b/modules/nf-core/custom/catadditionalfasta/main.nf @@ -21,4 +21,17 @@ process CUSTOM_CATADDITIONALFASTA { script: template 'fasta2gtf.py' + + stub: + def prefix = task.ext.prefix ?: "${meta.id}" + """ + mkdir out + touch out/genome_transcriptome.fasta + touch out/genome_transcriptome.gtf + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + python: \$(python --version | grep -v "Python ") + END_VERSIONS + """ } diff --git a/modules/nf-core/custom/catadditionalfasta/tests/main.nf.test b/modules/nf-core/custom/catadditionalfasta/tests/main.nf.test index 7cf230bd7..70227f1c5 100644 --- a/modules/nf-core/custom/catadditionalfasta/tests/main.nf.test +++ b/modules/nf-core/custom/catadditionalfasta/tests/main.nf.test @@ -31,7 +31,37 @@ nextflow_process { { assert snapshot(process.out.versions).match("versions") } ) } - } + test("sarscov2 - fastq - gtf - stub") { + + options "-stub" + + when { + params { + outdir = "$outputDir" + } + process { + """ + input[0] = Channel.of([ + [ id:'test', single_end:false ], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.gtf', checkIfExists: true) + ]) + input[1] = Channel.of([ + [ id:'test', single_end:false ], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/transcriptome.fasta', checkIfExists: true) + ]) + input[2] = 'test_biotype' + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } } diff --git a/modules/nf-core/custom/catadditionalfasta/tests/main.nf.test.snap b/modules/nf-core/custom/catadditionalfasta/tests/main.nf.test.snap index 8f63d9b47..9e49a90c9 100644 --- a/modules/nf-core/custom/catadditionalfasta/tests/main.nf.test.snap +++ b/modules/nf-core/custom/catadditionalfasta/tests/main.nf.test.snap @@ -5,6 +5,10 @@ "versions.yml:md5,26f47339777a265af57338ac7f0f8798" ] ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, "timestamp": "2023-12-20T20:52:55.242485" }, "gtf": { @@ -19,6 +23,10 @@ ] ] ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, "timestamp": "2023-12-20T19:46:31.839377" }, "fasta": { @@ -33,6 +41,63 @@ ] ] ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, "timestamp": "2023-12-20T19:42:47.12194" + }, + "sarscov2 - fastq - gtf - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "genome_transcriptome.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": false + }, + "genome_transcriptome.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + "versions.yml:md5,451e5a1afee71b2b916b6f2ccc47e508" + ], + "fasta": [ + [ + { + "id": "test", + "single_end": false + }, + "genome_transcriptome.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "gtf": [ + [ + { + "id": "test", + "single_end": false + }, + "genome_transcriptome.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,451e5a1afee71b2b916b6f2ccc47e508" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-06-20T17:10:38.966949" } } \ No newline at end of file diff --git a/modules/nf-core/fq/subsample/main.nf b/modules/nf-core/fq/subsample/main.nf index f3d8cc78d..a8e647bb1 100644 --- a/modules/nf-core/fq/subsample/main.nf +++ b/modules/nf-core/fq/subsample/main.nf @@ -52,4 +52,16 @@ process FQ_SUBSAMPLE { fq: \$(echo \$(fq subsample --version | sed 's/fq-subsample //g')) END_VERSIONS """ + + stub: + def prefix = task.ext.prefix ?: "${meta.id}" + """ + echo '' | gzip > ${prefix}_R1.fastq.gz + echo '' | gzip > ${prefix}_R2.fastq.gz + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + fq: \$(echo \$(fq subsample --version | sed 's/fq-subsample //g')) + END_VERSIONS + """ } diff --git a/modules/nf-core/fq/subsample/tests/main.nf.test b/modules/nf-core/fq/subsample/tests/main.nf.test index c2817748c..13bb75945 100644 --- a/modules/nf-core/fq/subsample/tests/main.nf.test +++ b/modules/nf-core/fq/subsample/tests/main.nf.test @@ -24,10 +24,9 @@ nextflow_process { then { assertAll ( { assert !process.success }, - { assert snapshot(process.out).match() }, + { assert snapshot(process.out).match() } ) } - } test("test_fq_subsample_probability") { @@ -50,10 +49,35 @@ nextflow_process { then { assertAll ( { assert process.success }, - { assert snapshot(process.out).match() }, + { assert snapshot(process.out).match() } ) } + } + + test("test_fq_subsample_probability - stub") { + config "./nextflow_probability.config" + options "-stub" + when { + params { + outdir = "$outputDir" + } + 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 snapshot(process.out).match() } + ) + } } test("test_fq_subsample_record_count") { @@ -76,10 +100,35 @@ nextflow_process { then { assertAll ( { assert process.success }, - { assert snapshot(process.out).match() }, + { assert snapshot(process.out).match() } ) } + } + + test("test_fq_subsample_record_count - stub") { + config "./nextflow_record_count.config" + options "-stub" + when { + params { + outdir = "$outputDir" + } + 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 snapshot(process.out).match() } + ) + } } test("test_fq_subsample_single") { @@ -101,10 +150,34 @@ nextflow_process { then { assertAll ( { assert process.success }, - { assert snapshot(process.out).match() }, + { assert snapshot(process.out).match() } ) } + } + + test("test_fq_subsample_single - stub") { + config "./nextflow.config" + options "-stub" + when { + params { + outdir = "$outputDir" + } + 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) + ]) + """ + } + } + then { + assertAll ( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } } test("test_fq_subsample_no_input") { @@ -117,7 +190,7 @@ nextflow_process { """ input[0] = Channel.of([ [ id:'test', single_end:false ], // meta map - [ ] + [] ]) """ } @@ -126,10 +199,8 @@ nextflow_process { then { assertAll ( { assert !process.success }, - { assert snapshot(process.out).match() }, + { assert snapshot(process.out).match() } ) } - } - } \ No newline at end of file diff --git a/modules/nf-core/fq/subsample/tests/main.nf.test.snap b/modules/nf-core/fq/subsample/tests/main.nf.test.snap index 1e47918a8..739c626d7 100644 --- a/modules/nf-core/fq/subsample/tests/main.nf.test.snap +++ b/modules/nf-core/fq/subsample/tests/main.nf.test.snap @@ -1,4 +1,45 @@ { + "test_fq_subsample_probability - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test_R1.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "test_R2.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ] + ], + "1": [ + "versions.yml:md5,ffbf935bd0de512fbc9e83b187bf924f" + ], + "fastq": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test_R1.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "test_R2.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ] + ], + "versions": [ + "versions.yml:md5,ffbf935bd0de512fbc9e83b187bf924f" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-06-21T08:26:12.163153" + }, "test_fq_subsample_probability": { "content": [ { @@ -34,8 +75,94 @@ ] } ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, "timestamp": "2024-01-17T17:57:15.446336" }, + "test_fq_subsample_single - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test_R1.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "test_R2.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ] + ], + "1": [ + "versions.yml:md5,ffbf935bd0de512fbc9e83b187bf924f" + ], + "fastq": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test_R1.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "test_R2.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ] + ], + "versions": [ + "versions.yml:md5,ffbf935bd0de512fbc9e83b187bf924f" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-06-21T08:26:55.736374" + }, + "test_fq_subsample_no_args - sub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test_R1.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "test_R2.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ] + ], + "1": [ + "versions.yml:md5,ffbf935bd0de512fbc9e83b187bf924f" + ], + "fastq": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test_R1.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "test_R2.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ] + ], + "versions": [ + "versions.yml:md5,ffbf935bd0de512fbc9e83b187bf924f" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-06-21T08:25:42.190405" + }, "test_fq_subsample_record_count": { "content": [ { @@ -71,8 +198,53 @@ ] } ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, "timestamp": "2024-01-17T17:57:23.920058" }, + "stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test_R1.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "test_R2.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ] + ], + "1": [ + "versions.yml:md5,ffbf935bd0de512fbc9e83b187bf924f" + ], + "fastq": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test_R1.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "test_R2.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ] + ], + "versions": [ + "versions.yml:md5,ffbf935bd0de512fbc9e83b187bf924f" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-06-20T17:16:10.090213" + }, "test_fq_subsample_single": { "content": [ { @@ -102,6 +274,10 @@ ] } ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, "timestamp": "2024-01-17T17:57:31.908993" }, "test_fq_subsample_no_args": { @@ -121,6 +297,10 @@ ] } ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, "timestamp": "2023-10-17T11:17:09.761156" }, "test_fq_subsample_no_input": { @@ -140,6 +320,92 @@ ] } ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, "timestamp": "2023-10-17T11:17:37.555824" + }, + "test_fq_subsample_record_count - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test_R1.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "test_R2.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ] + ], + "1": [ + "versions.yml:md5,ffbf935bd0de512fbc9e83b187bf924f" + ], + "fastq": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test_R1.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "test_R2.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ] + ], + "versions": [ + "versions.yml:md5,ffbf935bd0de512fbc9e83b187bf924f" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-06-21T08:26:33.873553" + }, + "test_fq_subsample_no_input - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test_R1.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "test_R2.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ] + ], + "1": [ + "versions.yml:md5,ffbf935bd0de512fbc9e83b187bf924f" + ], + "fastq": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test_R1.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "test_R2.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ] + ], + "versions": [ + "versions.yml:md5,ffbf935bd0de512fbc9e83b187bf924f" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-06-21T08:27:21.793136" } } \ No newline at end of file diff --git a/modules/nf-core/gunzip/main.nf b/modules/nf-core/gunzip/main.nf index 468a6f287..4ae609fb1 100644 --- a/modules/nf-core/gunzip/main.nf +++ b/modules/nf-core/gunzip/main.nf @@ -18,8 +18,11 @@ process GUNZIP { task.ext.when == null || task.ext.when script: - def args = task.ext.args ?: '' - gunzip = archive.toString() - '.gz' + def args = task.ext.args ?: '' + def extension = ( archive.toString() - '.gz' ).tokenize('.')[-1] + def name = archive.toString() - '.gz' - ".$extension" + def prefix = task.ext.prefix ?: name + gunzip = prefix + ".$extension" """ # Not calling gunzip itself because it creates files # with the original group ownership rather than the @@ -37,7 +40,11 @@ process GUNZIP { """ stub: - gunzip = archive.toString() - '.gz' + def args = task.ext.args ?: '' + def extension = ( archive.toString() - '.gz' ).tokenize('.')[-1] + def name = archive.toString() - '.gz' - ".$extension" + def prefix = task.ext.prefix ?: name + gunzip = prefix + ".$extension" """ touch $gunzip cat <<-END_VERSIONS > versions.yml diff --git a/modules/nf-core/gunzip/meta.yml b/modules/nf-core/gunzip/meta.yml index 231034f2f..f32973a0a 100644 --- a/modules/nf-core/gunzip/meta.yml +++ b/modules/nf-core/gunzip/meta.yml @@ -37,3 +37,4 @@ maintainers: - "@joseespinosa" - "@drpatelh" - "@jfy133" + - "@gallvp" diff --git a/modules/nf-core/gunzip/tests/main.nf.test b/modules/nf-core/gunzip/tests/main.nf.test index 5ebf7ca24..384edf226 100644 --- a/modules/nf-core/gunzip/tests/main.nf.test +++ b/modules/nf-core/gunzip/tests/main.nf.test @@ -30,4 +30,89 @@ nextflow_process { } + test("Should run without failures - prefix") { + + config './nextflow.config' + + when { + params { + outdir = "$outputDir" + } + process { + """ + input[0] = Channel.of([ + [ id: 'test' ], + 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).match() } + ) + } + + } + + test("Should run without failures - stub") { + + options '-stub' + + when { + params { + outdir = "$outputDir" + } + process { + """ + input[0] = Channel.of([ + [], + 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).match() } + ) + } + + } + + test("Should run without failures - prefix - stub") { + + options '-stub' + config './nextflow.config' + + when { + params { + outdir = "$outputDir" + } + process { + """ + input[0] = Channel.of([ + [ id: 'test' ], + 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).match() } + ) + } + + } + } diff --git a/modules/nf-core/gunzip/tests/main.nf.test.snap b/modules/nf-core/gunzip/tests/main.nf.test.snap index 720fd9ff4..069967e76 100644 --- a/modules/nf-core/gunzip/tests/main.nf.test.snap +++ b/modules/nf-core/gunzip/tests/main.nf.test.snap @@ -1,4 +1,70 @@ { + "Should run without failures - prefix - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.xyz.fastq:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + "versions.yml:md5,54376d32aca20e937a4ec26dac228e84" + ], + "gunzip": [ + [ + { + "id": "test" + }, + "test.xyz.fastq:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,54376d32aca20e937a4ec26dac228e84" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-06-25T11:35:10.861293" + }, + "Should run without failures - stub": { + "content": [ + { + "0": [ + [ + [ + + ], + "test_1.fastq:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + "versions.yml:md5,54376d32aca20e937a4ec26dac228e84" + ], + "gunzip": [ + [ + [ + + ], + "test_1.fastq:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,54376d32aca20e937a4ec26dac228e84" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-06-25T11:35:05.857145" + }, "Should run without failures": { "content": [ { @@ -26,6 +92,43 @@ ] } ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, "timestamp": "2023-10-17T15:35:37.690477896" + }, + "Should run without failures - prefix": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.xyz.fastq:md5,4161df271f9bfcd25d5845a1e220dbec" + ] + ], + "1": [ + "versions.yml:md5,54376d32aca20e937a4ec26dac228e84" + ], + "gunzip": [ + [ + { + "id": "test" + }, + "test.xyz.fastq:md5,4161df271f9bfcd25d5845a1e220dbec" + ] + ], + "versions": [ + "versions.yml:md5,54376d32aca20e937a4ec26dac228e84" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-06-25T11:33:32.921739" } } \ No newline at end of file diff --git a/modules/nf-core/gunzip/tests/nextflow.config b/modules/nf-core/gunzip/tests/nextflow.config new file mode 100644 index 000000000..dec776425 --- /dev/null +++ b/modules/nf-core/gunzip/tests/nextflow.config @@ -0,0 +1,5 @@ +process { + withName: GUNZIP { + ext.prefix = { "${meta.id}.xyz" } + } +} diff --git a/modules/nf-core/hisat2/align/main.nf b/modules/nf-core/hisat2/align/main.nf index 2289a9fc0..ea186f62a 100644 --- a/modules/nf-core/hisat2/align/main.nf +++ b/modules/nf-core/hisat2/align/main.nf @@ -90,4 +90,23 @@ process HISAT2_ALIGN { END_VERSIONS """ } + + stub: + def prefix = task.ext.prefix ?: "${meta.id}" + def unaligned = params.save_unaligned ? "echo '' | gzip > ${prefix}.unmapped_1.fastq.gz \n echo '' | gzip > ${prefix}.unmapped_2.fastq.gz" : '' + def VERSION = '2.2.1' // WARN: Version information not provided by tool on CLI. Please update this string when bumping container versions. + """ + ${unaligned} + + touch ${prefix}.hisat2.summary.log + touch ${prefix}.bam + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + hisat2: $VERSION + samtools: \$(echo \$(samtools --version 2>&1) | sed 's/^.*samtools //; s/Using.*\$//') + END_VERSIONS + """ + + } diff --git a/modules/nf-core/hisat2/align/tests/main.nf.test b/modules/nf-core/hisat2/align/tests/main.nf.test index 251fd711e..8193c82d8 100644 --- a/modules/nf-core/hisat2/align/tests/main.nf.test +++ b/modules/nf-core/hisat2/align/tests/main.nf.test @@ -62,6 +62,63 @@ nextflow_process { } } + test("Single-End - stub") { + options "-stub" + + setup { + run("HISAT2_EXTRACTSPLICESITES") { + script "../../extractsplicesites/main.nf" + process { + """ + input[0] = Channel.of([ + [id:'genome'], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.gtf', checkIfExists: true) + ]) + """ + } + } + + run("HISAT2_BUILD") { + script "../../build/main.nf" + process { + """ + input[0] = Channel.of([ + [id:'genome'], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) + ]) + input[1] = Channel.of([ [id:'genome'], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.gtf', checkIfExists: true) + ]) + input[2] = HISAT2_EXTRACTSPLICESITES.out.txt + """ + } + } + } + + when { + params { + outdir = "$outputDir" + } + process { + """ + input[0] = Channel.of([ + [ id:'test', single_end:true ], // meta map + [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true)] + ]) + input[1] = HISAT2_BUILD.out.index + input[2] = HISAT2_EXTRACTSPLICESITES.out.txt + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + test("Paired-End") { setup { @@ -121,6 +178,64 @@ nextflow_process { } } + test("Paired-End - stub") { + options "-stub" + + setup { + run("HISAT2_EXTRACTSPLICESITES") { + script "../../extractsplicesites/main.nf" + process { + """ + input[0] = Channel.of([ + [id:'genome'], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.gtf', checkIfExists: true) + ]) + """ + } + } + + run("HISAT2_BUILD") { + script "../../build/main.nf" + process { + """ + input[0] = Channel.of([ + [id:'genome'], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) + ]) + input[1] = Channel.of([ [id:'genome'], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.gtf', checkIfExists: true) + ]) + input[2] = HISAT2_EXTRACTSPLICESITES.out.txt + """ + } + } + } + + when { + params { + outdir = "$outputDir" + } + 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) ] + ]) + input[1] = HISAT2_BUILD.out.index + input[2] = HISAT2_EXTRACTSPLICESITES.out.txt + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + test("Single-End No Splice Sites") { setup { @@ -165,6 +280,49 @@ nextflow_process { } } + test("Single-End No Splice Sites - stub") { + options "-stub" + + setup { + run("HISAT2_BUILD") { + script "../../build/main.nf" + process { + """ + input[0] = Channel.of([ + [id:'genome'], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) + ]) + input[1] = [[:],[]] + input[2] = [[:],[]] + """ + } + } + } + + when { + params { + outdir = "$outputDir" + } + process { + """ + input[0] = Channel.of([ + [ id:'test', single_end:true ], // meta map + [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true) ] + ]) + input[1] = HISAT2_BUILD.out.index + input[2] = [[:],[]] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + test("Paired-End No Splice Sites") { setup { @@ -209,4 +367,48 @@ nextflow_process { ) } } + + test("Paired-End No Splice Sites - stub") { + options "-stub" + + setup { + run("HISAT2_BUILD") { + script "../../build/main.nf" + process { + """ + input[0] = Channel.of([ + [id:'genome'], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) + ]) + input[1] = [[:],[]] + input[2] = [[:],[]] + """ + } + } + } + + when { + params { + outdir = "$outputDir" + } + 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) ] + ]) + input[1] = HISAT2_BUILD.out.index + input[2] = [[:],[]] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } } diff --git a/modules/nf-core/hisat2/align/tests/main.nf.test.snap b/modules/nf-core/hisat2/align/tests/main.nf.test.snap index a80fa3c50..ff670d452 100644 --- a/modules/nf-core/hisat2/align/tests/main.nf.test.snap +++ b/modules/nf-core/hisat2/align/tests/main.nf.test.snap @@ -5,21 +5,129 @@ "versions.yml:md5,ceb638f44ebdaf09ba1f5c5c409585e2" ] ], - "timestamp": "2023-10-16T15:14:50.269895296" + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-06-21T09:08:33.735489" }, - "se_no_ss_summary": { + "Paired-End - stub": { "content": [ - [ - [ - { - "id": "test", - "single_end": true - }, - "test.hisat2.summary.log:md5,7b8a9e61b7646da1089b041333c41a87" + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": false + }, + "test.hisat2.summary.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + + ], + "3": [ + "versions.yml:md5,ceb638f44ebdaf09ba1f5c5c409585e2" + ], + "bam": [ + [ + { + "id": "test", + "single_end": false + }, + "test.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "fastq": [ + + ], + "summary": [ + [ + { + "id": "test", + "single_end": false + }, + "test.hisat2.summary.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,ceb638f44ebdaf09ba1f5c5c409585e2" ] - ] + } ], - "timestamp": "2023-10-16T15:15:22.897386626" + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-06-21T09:09:14.35626" + }, + "Single-End - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": true + }, + "test.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": true + }, + "test.hisat2.summary.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + + ], + "3": [ + "versions.yml:md5,ceb638f44ebdaf09ba1f5c5c409585e2" + ], + "bam": [ + [ + { + "id": "test", + "single_end": true + }, + "test.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "fastq": [ + + ], + "summary": [ + [ + { + "id": "test", + "single_end": true + }, + "test.hisat2.summary.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,ceb638f44ebdaf09ba1f5c5c409585e2" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-06-21T09:08:47.404885" }, "pe_no_ss_versions": { "content": [ @@ -27,15 +135,70 @@ "versions.yml:md5,ceb638f44ebdaf09ba1f5c5c409585e2" ] ], - "timestamp": "2023-10-16T15:15:42.583699978" + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-06-21T09:09:52.076955" }, - "se_no_ss_versions": { + "Paired-End No Splice Sites - stub": { "content": [ - [ - "versions.yml:md5,ceb638f44ebdaf09ba1f5c5c409585e2" - ] + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": false + }, + "test.hisat2.summary.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + + ], + "3": [ + "versions.yml:md5,ceb638f44ebdaf09ba1f5c5c409585e2" + ], + "bam": [ + [ + { + "id": "test", + "single_end": false + }, + "test.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "fastq": [ + + ], + "summary": [ + [ + { + "id": "test", + "single_end": false + }, + "test.hisat2.summary.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,ceb638f44ebdaf09ba1f5c5c409585e2" + ] + } ], - "timestamp": "2023-10-16T15:15:22.909407356" + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-06-21T09:10:03.739697" }, "pe_no_ss_summary": { "content": [ @@ -49,7 +212,11 @@ ] ] ], - "timestamp": "2023-10-16T15:15:42.569775538" + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-06-21T09:09:52.068244" }, "pe_no_ss_fastq": { "content": [ @@ -57,7 +224,11 @@ ] ], - "timestamp": "2023-10-16T15:15:42.576881608" + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-06-21T09:09:52.072985" }, "se_summary": { "content": [ @@ -71,7 +242,11 @@ ] ] ], - "timestamp": "2023-10-16T15:14:50.252466896" + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-06-21T09:08:33.727355" }, "pe_summary": { "content": [ @@ -85,7 +260,11 @@ ] ] ], - "timestamp": "2023-10-16T15:15:09.881690889" + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-06-21T09:09:01.495439" }, "pe_fastq": { "content": [ @@ -93,23 +272,124 @@ ] ], - "timestamp": "2023-10-16T15:15:09.888696129" + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-06-21T09:09:01.500755" }, - "se_no_ss_fastq": { + "se_fastq": { "content": [ [ ] ], - "timestamp": "2023-10-16T15:15:22.904010016" + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-06-21T09:08:33.732523" }, - "se_fastq": { + "se_no_ss_summary": { + "content": [ + [ + [ + { + "id": "test", + "single_end": true + }, + "test.hisat2.summary.log:md5,7b8a9e61b7646da1089b041333c41a87" + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-06-21T09:09:26.851884" + }, + "se_no_ss_versions": { + "content": [ + [ + "versions.yml:md5,ceb638f44ebdaf09ba1f5c5c409585e2" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-06-21T09:09:26.89234" + }, + "se_no_ss_fastq": { "content": [ [ ] ], - "timestamp": "2023-10-16T15:14:50.264366105" + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-06-21T09:09:26.871369" + }, + "Single-End No Splice Sites - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": true + }, + "test.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": true + }, + "test.hisat2.summary.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + + ], + "3": [ + "versions.yml:md5,ceb638f44ebdaf09ba1f5c5c409585e2" + ], + "bam": [ + [ + { + "id": "test", + "single_end": true + }, + "test.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "fastq": [ + + ], + "summary": [ + [ + { + "id": "test", + "single_end": true + }, + "test.hisat2.summary.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,ceb638f44ebdaf09ba1f5c5c409585e2" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-06-21T09:09:39.544807" }, "pe_versions": { "content": [ @@ -117,6 +397,10 @@ "versions.yml:md5,ceb638f44ebdaf09ba1f5c5c409585e2" ] ], - "timestamp": "2023-10-16T15:15:09.894683308" + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-06-21T09:09:01.506346" } } \ No newline at end of file diff --git a/modules/nf-core/hisat2/build/main.nf b/modules/nf-core/hisat2/build/main.nf index 766e8731d..17d8fdd5b 100644 --- a/modules/nf-core/hisat2/build/main.nf +++ b/modules/nf-core/hisat2/build/main.nf @@ -61,4 +61,15 @@ process HISAT2_BUILD { hisat2: $VERSION END_VERSIONS """ + + stub: + def VERSION = '2.2.1' // WARN: Version information not provided by tool on CLI. Please update this string when bumping container versions. + """ + mkdir hisat2 + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + hisat2: $VERSION + END_VERSIONS + """ } diff --git a/modules/nf-core/hisat2/build/tests/main.nf.test b/modules/nf-core/hisat2/build/tests/main.nf.test index 240b73de1..bd8e9dae0 100644 --- a/modules/nf-core/hisat2/build/tests/main.nf.test +++ b/modules/nf-core/hisat2/build/tests/main.nf.test @@ -45,4 +45,49 @@ nextflow_process { ) } } -} + + test("Should run without failures - stub") { + + options "-stub" + + setup { + run("HISAT2_EXTRACTSPLICESITES") { + script "../../extractsplicesites/main.nf" + process { + """ + input[0] = Channel.of([ + [id:'genome'], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.gtf', checkIfExists: true) + ]) + """ + } + } + } + + when { + params { + outdir = "$outputDir" + } + + process { + """ + input[0] = Channel.of([ + [id:'genome'], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) + ]) + input[1] = Channel.of([ [id:'genome'], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.gtf', checkIfExists: true) + ]) + input[2] = HISAT2_EXTRACTSPLICESITES.out.txt + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } +} \ No newline at end of file diff --git a/modules/nf-core/hisat2/build/tests/main.nf.test.snap b/modules/nf-core/hisat2/build/tests/main.nf.test.snap index c7d364dbc..0e3b5c57f 100644 --- a/modules/nf-core/hisat2/build/tests/main.nf.test.snap +++ b/modules/nf-core/hisat2/build/tests/main.nf.test.snap @@ -1,4 +1,64 @@ { + "test - stub": { + "content": [ + { + "0": [ + + ], + "1": [ + + ], + "index": [ + + ], + "versions": [ + + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-06-20T17:29:31.567024" + }, + "Should run without failures - stub": { + "content": [ + { + "0": [ + [ + { + "id": "genome" + }, + [ + + ] + ] + ], + "1": [ + "versions.yml:md5,e36ef3cd73d19ccf2378c9358fe942c0" + ], + "index": [ + [ + { + "id": "genome" + }, + [ + + ] + ] + ], + "versions": [ + "versions.yml:md5,e36ef3cd73d19ccf2378c9358fe942c0" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-06-20T18:18:08.896422" + }, "Should run without failures": { "content": [ { @@ -44,6 +104,10 @@ ] } ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, "timestamp": "2023-10-16T14:42:22.381609786" } -} \ No newline at end of file +} diff --git a/modules/nf-core/hisat2/extractsplicesites/main.nf b/modules/nf-core/hisat2/extractsplicesites/main.nf index b0c8513aa..588a9947a 100644 --- a/modules/nf-core/hisat2/extractsplicesites/main.nf +++ b/modules/nf-core/hisat2/extractsplicesites/main.nf @@ -28,4 +28,15 @@ process HISAT2_EXTRACTSPLICESITES { hisat2: $VERSION END_VERSIONS """ + + stub: + def VERSION = '2.2.1' // WARN: Version information not provided by tool on CLI. Please update this string when bumping container versions. + """ + touch ${gtf.baseName}.splice_sites.txt + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + hisat2: $VERSION + END_VERSIONS + """ } diff --git a/modules/nf-core/hisat2/extractsplicesites/tests/main.nf.test b/modules/nf-core/hisat2/extractsplicesites/tests/main.nf.test index 10b8cf8e8..a9f93ec52 100644 --- a/modules/nf-core/hisat2/extractsplicesites/tests/main.nf.test +++ b/modules/nf-core/hisat2/extractsplicesites/tests/main.nf.test @@ -28,4 +28,30 @@ nextflow_process { ) } } + + test("test - stub") { + + options "-stub" + + when { + params { + outdir = "$outputDir" + } + process { + """ + input[0] = Channel.of([ + [id:'genome'], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.gtf', checkIfExists: true) + ]) + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } } diff --git a/modules/nf-core/hisat2/extractsplicesites/tests/main.nf.test.snap b/modules/nf-core/hisat2/extractsplicesites/tests/main.nf.test.snap index 17f1c8ebf..1dcd8af23 100644 --- a/modules/nf-core/hisat2/extractsplicesites/tests/main.nf.test.snap +++ b/modules/nf-core/hisat2/extractsplicesites/tests/main.nf.test.snap @@ -1,10 +1,47 @@ { + "test - stub": { + "content": [ + { + "0": [ + [ + { + "id": "genome" + }, + "genome.splice_sites.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + "versions.yml:md5,eeea7231fe197810659b8bad4133aff2" + ], + "txt": [ + [ + { + "id": "genome" + }, + "genome.splice_sites.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,eeea7231fe197810659b8bad4133aff2" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-06-20T17:34:13.229903" + }, "Should run without failures": { "content": [ [ "versions.yml:md5,eeea7231fe197810659b8bad4133aff2" ] ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, "timestamp": "2024-01-18T20:56:30.71763" } } \ No newline at end of file diff --git a/modules/nf-core/multiqc/environment.yml b/modules/nf-core/multiqc/environment.yml index 72e598b67..ecb7dd7b2 100644 --- a/modules/nf-core/multiqc/environment.yml +++ b/modules/nf-core/multiqc/environment.yml @@ -4,4 +4,4 @@ channels: - bioconda - defaults dependencies: - - bioconda::multiqc=1.22.2 + - bioconda::multiqc=1.22.3 diff --git a/modules/nf-core/multiqc/main.nf b/modules/nf-core/multiqc/main.nf index e59efef9d..2581a4963 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.22.2--pyhdfd78af_0' : - 'biocontainers/multiqc:1.22.2--pyhdfd78af_0' }" + 'https://depot.galaxyproject.org/singularity/multiqc:1.22.3--pyhdfd78af_0' : + 'biocontainers/multiqc:1.22.3--pyhdfd78af_0' }" input: path multiqc_files, stageAs: "?/*" diff --git a/modules/nf-core/multiqc/tests/main.nf.test.snap b/modules/nf-core/multiqc/tests/main.nf.test.snap index a170c31dd..0a4760e42 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,ddbc971a8307f9b9b7b973714cde29d0" + "versions.yml:md5,bf3b209659477254bb8fa5a9405f9984" ] ], "meta": { "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-06-10T11:50:10.874341679" + "timestamp": "2024-06-25T12:31:21.878452033" }, "multiqc_stub": { "content": [ @@ -17,25 +17,25 @@ "multiqc_report.html", "multiqc_data", "multiqc_plots", - "versions.yml:md5,ddbc971a8307f9b9b7b973714cde29d0" + "versions.yml:md5,bf3b209659477254bb8fa5a9405f9984" ] ], "meta": { "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-06-10T11:50:49.271943761" + "timestamp": "2024-06-25T12:32:02.322196503" }, "multiqc_versions_config": { "content": [ [ - "versions.yml:md5,ddbc971a8307f9b9b7b973714cde29d0" + "versions.yml:md5,bf3b209659477254bb8fa5a9405f9984" ] ], "meta": { "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-06-10T11:50:34.046706025" + "timestamp": "2024-06-25T12:31:50.064227638" } } \ No newline at end of file diff --git a/modules/nf-core/preseq/lcextrap/main.nf b/modules/nf-core/preseq/lcextrap/main.nf index 0f8a1e9ec..3fec468e9 100644 --- a/modules/nf-core/preseq/lcextrap/main.nf +++ b/modules/nf-core/preseq/lcextrap/main.nf @@ -38,4 +38,16 @@ process PRESEQ_LCEXTRAP { preseq: \$(echo \$(preseq 2>&1) | sed 's/^.*Version: //; s/Usage:.*\$//') END_VERSIONS """ + + stub: + def prefix = task.ext.prefix ?: "${meta.id}" + """ + touch ${prefix}.lc_extrap.txt + touch ${prefix}.command.log + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + preseq: \$(echo \$(preseq 2>&1) | sed 's/^.*Version: //; s/Usage:.*\$//') + END_VERSIONS + """ } diff --git a/modules/nf-core/preseq/lcextrap/tests/main.nf.test b/modules/nf-core/preseq/lcextrap/tests/main.nf.test index 92750c9ed..d1af1f0ed 100644 --- a/modules/nf-core/preseq/lcextrap/tests/main.nf.test +++ b/modules/nf-core/preseq/lcextrap/tests/main.nf.test @@ -3,6 +3,10 @@ nextflow_process { name "Test Process PRESEQ_LCEXTRAP" script "../main.nf" process "PRESEQ_LCEXTRAP" + tag "modules" + tag "modules_nfcore" + tag "preseq" + tag "preseq/lcextrap" test("sarscov2 - single_end") { when { @@ -26,6 +30,29 @@ nextflow_process { } } + test("sarscov2 - single_end - stub") { + + options "-stub" + + when { + process { + """ + input[0] = Channel.of([ + [ id:'test', single_end:true ], // meta map + [ file(params.modules_testdata_base_path + 'delete_me/preseq/SRR1003759_5M_subset.mr', checkIfExists: true) ] + ]) + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + test("sarscov2 - paired_end") { when { process { @@ -47,4 +74,27 @@ nextflow_process { ) } } + + test("sarscov2 - paired_end - stub") { + + options "-stub" + + when { + process { + """ + input[0] = Channel.of([ + [ id:'test', single_end:false ], // meta map + [ file(params.modules_testdata_base_path + 'delete_me/preseq/SRR1003759_5M_subset.mr', checkIfExists: true) ] + ]) + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } } \ No newline at end of file diff --git a/modules/nf-core/preseq/lcextrap/tests/main.nf.test.snap b/modules/nf-core/preseq/lcextrap/tests/main.nf.test.snap index c59dea7fe..3f95cd498 100644 --- a/modules/nf-core/preseq/lcextrap/tests/main.nf.test.snap +++ b/modules/nf-core/preseq/lcextrap/tests/main.nf.test.snap @@ -11,12 +11,20 @@ ] ] ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, "timestamp": "2023-11-23T17:20:40.735535" }, "paired_end - log": { "content": [ "test.command.log" ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, "timestamp": "2023-11-23T17:20:51.981746" }, "single_end - versions": { @@ -25,20 +33,85 @@ "versions.yml:md5,9a62ff1c212c53573808ccd2137b8922" ] ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, "timestamp": "2023-11-23T17:20:40.74601" }, + "sarscov2 - single_end - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": true + }, + "test.lc_extrap.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": true + }, + "test.command.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + "versions.yml:md5,9a62ff1c212c53573808ccd2137b8922" + ], + "lc_extrap": [ + [ + { + "id": "test", + "single_end": true + }, + "test.lc_extrap.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "log": [ + [ + { + "id": "test", + "single_end": true + }, + "test.command.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,9a62ff1c212c53573808ccd2137b8922" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-06-20T18:43:12.689062" + }, "paired_end - versions": { "content": [ [ "versions.yml:md5,9a62ff1c212c53573808ccd2137b8922" ] ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, "timestamp": "2023-11-23T17:20:52.02843" }, "single_end - log": { "content": [ "test.command.log" ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, "timestamp": "2023-11-23T17:20:40.72985" }, "paired_end - lc_extrap": { @@ -53,6 +126,63 @@ ] ] ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, "timestamp": "2023-11-23T17:20:51.998533" + }, + "sarscov2 - paired_end - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.lc_extrap.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": false + }, + "test.command.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + "versions.yml:md5,9a62ff1c212c53573808ccd2137b8922" + ], + "lc_extrap": [ + [ + { + "id": "test", + "single_end": false + }, + "test.lc_extrap.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "log": [ + [ + { + "id": "test", + "single_end": false + }, + "test.command.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,9a62ff1c212c53573808ccd2137b8922" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-06-20T18:43:32.569811" } } \ No newline at end of file diff --git a/subworkflows/nf-core/fastq_align_hisat2/tests/main.nf.test b/subworkflows/nf-core/fastq_align_hisat2/tests/main.nf.test index b04fc1162..884d130a2 100644 --- a/subworkflows/nf-core/fastq_align_hisat2/tests/main.nf.test +++ b/subworkflows/nf-core/fastq_align_hisat2/tests/main.nf.test @@ -5,35 +5,35 @@ nextflow_workflow { workflow "FASTQ_ALIGN_HISAT2" config "./nextflow.config" - setup { - run("HISAT2_EXTRACTSPLICESITES") { - script "../../../../modules/nf-core/hisat2/extractsplicesites/main.nf" - process { - """ - input[0] = Channel.of([ - [id: 'test'], - file(params.modules_testdata_base_path + "genomics/sarscov2/genome/genome.gtf", checkIfExists: true) - ]) - """ + setup { + run("HISAT2_EXTRACTSPLICESITES") { + script "../../../../modules/nf-core/hisat2/extractsplicesites/main.nf" + process { + """ + input[0] = Channel.of([ + [id: 'test'], + file(params.modules_testdata_base_path + "genomics/sarscov2/genome/genome.gtf", checkIfExists: true) + ]) + """ + } } - } - run("HISAT2_BUILD") { - script "../../../../modules/nf-core/hisat2/build/main.nf" - process { - """ - input[0] = Channel.of([ - [id: 'test'], - file(params.modules_testdata_base_path + "genomics/sarscov2/genome/genome.fasta", checkIfExists: true) - ]) - input[1] = Channel.of([ - [id: 'test'], - file(params.modules_testdata_base_path + "genomics/sarscov2/genome/genome.gtf", checkIfExists: true) - ]) - input[2] = HISAT2_EXTRACTSPLICESITES.out.txt - """ + run("HISAT2_BUILD") { + script "../../../../modules/nf-core/hisat2/build/main.nf" + process { + """ + input[0] = Channel.of([ + [id: 'test'], + file(params.modules_testdata_base_path + "genomics/sarscov2/genome/genome.fasta", checkIfExists: true) + ]) + input[1] = Channel.of([ + [id: 'test'], + file(params.modules_testdata_base_path + "genomics/sarscov2/genome/genome.gtf", checkIfExists: true) + ]) + input[2] = HISAT2_EXTRACTSPLICESITES.out.txt + """ + } } } - } test("sarscov2 - bam - single_end") { diff --git a/subworkflows/nf-core/fastq_align_hisat2/tests/main.nf.test.snap b/subworkflows/nf-core/fastq_align_hisat2/tests/main.nf.test.snap index d3f669275..6a24fc922 100644 --- a/subworkflows/nf-core/fastq_align_hisat2/tests/main.nf.test.snap +++ b/subworkflows/nf-core/fastq_align_hisat2/tests/main.nf.test.snap @@ -7,15 +7,15 @@ "id": "test", "single_end": false }, - "test.stats:md5,ed4e2ba437f4819b7ab93a6df8dd5348" + "test.stats:md5,603fa8c9e0e9eb3769498fc989a29250" ] ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "24.01.0" + "nextflow": "24.04.2" }, - "timestamp": "2024-02-29T13:28:06.091982" + "timestamp": "2024-06-20T17:49:22.610136" }, "pe - csi": { "content": [ @@ -108,19 +108,19 @@ "se - versions": { "content": [ [ - "versions.yml:md5,34be144fb97a11f1c581b39301f6f0d1", - "versions.yml:md5,4392ca9e255d9137e74a73a8d1e1559d", - "versions.yml:md5,651e735a2754f3be76b516f5fbf099b5", - "versions.yml:md5,912e1daa1e432f6b5ca601ab2294e37f", - "versions.yml:md5,9b7dd7f9a173fbf92f5e476451c840c1", - "versions.yml:md5,b4ccce0351e5718d36600858452dd4b1" + "versions.yml:md5,2d9432e15956fe71fe0ba811547acea6", + "versions.yml:md5,5fcbed7fee2404be4ecee6efab5914b8", + "versions.yml:md5,6b9d9eed13bf074965d1623a7e8a1741", + "versions.yml:md5,7767a57d88fff540ce475902df2e9e0a", + "versions.yml:md5,b4ccce0351e5718d36600858452dd4b1", + "versions.yml:md5,bb6710ee58b84a1ed212f9c599d84066" ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "24.01.0" + "nextflow": "24.04.2" }, - "timestamp": "2024-02-29T13:27:50.826601" + "timestamp": "2024-06-20T17:49:02.049644" }, "pe - idxstats": { "content": [ @@ -235,19 +235,19 @@ "pe - versions": { "content": [ [ - "versions.yml:md5,34be144fb97a11f1c581b39301f6f0d1", - "versions.yml:md5,4392ca9e255d9137e74a73a8d1e1559d", - "versions.yml:md5,651e735a2754f3be76b516f5fbf099b5", - "versions.yml:md5,912e1daa1e432f6b5ca601ab2294e37f", - "versions.yml:md5,9b7dd7f9a173fbf92f5e476451c840c1", - "versions.yml:md5,b4ccce0351e5718d36600858452dd4b1" + "versions.yml:md5,2d9432e15956fe71fe0ba811547acea6", + "versions.yml:md5,5fcbed7fee2404be4ecee6efab5914b8", + "versions.yml:md5,6b9d9eed13bf074965d1623a7e8a1741", + "versions.yml:md5,7767a57d88fff540ce475902df2e9e0a", + "versions.yml:md5,b4ccce0351e5718d36600858452dd4b1", + "versions.yml:md5,bb6710ee58b84a1ed212f9c599d84066" ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "24.01.0" + "nextflow": "24.04.2" }, - "timestamp": "2024-02-29T13:28:06.098801" + "timestamp": "2024-06-20T17:49:22.664338" }, "se - flagstat": { "content": [ @@ -275,14 +275,14 @@ "id": "test", "single_end": true }, - "test.stats:md5,f712acf6108a70c3fb06ac51e5e76f15" + "test.stats:md5,845655ccfd1fd701b9f692f8db9508af" ] ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "24.01.0" + "nextflow": "24.04.2" }, - "timestamp": "2024-02-29T13:27:50.804219" + "timestamp": "2024-06-20T17:49:01.982358" } } \ No newline at end of file From 6035f5b81435f31fcdc4ff0758736b96f1eed54b Mon Sep 17 00:00:00 2001 From: Harshil Patel Date: Thu, 27 Jun 2024 13:27:06 +0100 Subject: [PATCH 418/634] Rename custom content keys as required in MultiQC v1.22.3 --- bin/mqc_features_stat.py | 3 +-- modules/nf-core/dupradar/templates/dupradar.r | 9 ++++----- .../rnaseq/assets/multiqc/deseq2_clustering_header.txt | 3 +-- workflows/rnaseq/assets/multiqc/multiqc_config.yml | 9 +++------ 4 files changed, 9 insertions(+), 15 deletions(-) diff --git a/bin/mqc_features_stat.py b/bin/mqc_features_stat.py index fa69b231c..b0577cd5f 100755 --- a/bin/mqc_features_stat.py +++ b/bin/mqc_features_stat.py @@ -21,8 +21,7 @@ # description: '% reads overlapping {ft} features' # max: 100 # min: 0 -# scale: 'RdYlGn-rev' -# format: '{{:.2f}}%'""" +# scale: 'RdYlGn-rev'""" def mqc_feature_stat(bfile, features, outfile, sname=None): diff --git a/modules/nf-core/dupradar/templates/dupradar.r b/modules/nf-core/dupradar/templates/dupradar.r index ec20cb851..95e7b4d88 100755 --- a/modules/nf-core/dupradar/templates/dupradar.r +++ b/modules/nf-core/dupradar/templates/dupradar.r @@ -88,7 +88,6 @@ line="#id: DupInt # max: 100 # min: 0 # scale: 'RdYlGn-rev' -# format: '{:.2f}%' Sample dupRadar_intercept" write(line,file=paste0(output_prefix, "_dup_intercept_mqc.txt"),append=TRUE) @@ -115,15 +114,15 @@ line="#id: dupradar # This plot shows the general linear models - a summary of the gene duplication distributions. \" #pconfig: # title: 'DupRadar General Linear Model' -# xLog: True +# xlog: True # xlab: 'expression (reads/kbp)' # ylab: '% duplicate reads' # ymax: 100 # ymin: 0 # tt_label: '{point.x:.1f} reads/kbp: {point.y:,.2f}% duplicates' -# xPlotLines: +# x_lines: # - color: 'green' -# dashStyle: 'LongDash' +# dash: 'LongDash' # label: # style: {color: 'green'} # text: '0.5 RPKM' @@ -132,7 +131,7 @@ line="#id: dupradar # value: 0.5 # width: 1 # - color: 'red' -# dashStyle: 'LongDash' +# dash: 'LongDash' # label: # style: {color: 'red'} # text: '1 read/bp' diff --git a/workflows/rnaseq/assets/multiqc/deseq2_clustering_header.txt b/workflows/rnaseq/assets/multiqc/deseq2_clustering_header.txt index 04e10efa5..c7bef7392 100644 --- a/workflows/rnaseq/assets/multiqc/deseq2_clustering_header.txt +++ b/workflows/rnaseq/assets/multiqc/deseq2_clustering_header.txt @@ -8,5 +8,4 @@ #anchor: 'deseq2_clustering' #pconfig: # title: 'DESeq2: Heatmap of the sample-to-sample distances' -# xlab: True -# reverseColors: True +# reverse_colors: True diff --git a/workflows/rnaseq/assets/multiqc/multiqc_config.yml b/workflows/rnaseq/assets/multiqc/multiqc_config.yml index 0a977e733..47bd0a770 100644 --- a/workflows/rnaseq/assets/multiqc/multiqc_config.yml +++ b/workflows/rnaseq/assets/multiqc/multiqc_config.yml @@ -155,27 +155,24 @@ custom_data: plot_type: "table" pconfig: id: "fail_trimmed_samples_table" - table_title: "Samples failed trimming threshold" + title: "Samples failed trimming threshold" namespace: "Samples failed trimming threshold" - format: "{:.0f}" fail_mapped_samples: section_name: "WARNING: Fail Alignment Check" description: "List of samples that failed the STAR minimum mapped reads threshold specified via the '--min_mapped_reads' parameter, and hence were ignored for the downstream processing steps." plot_type: "table" pconfig: id: "fail_mapped_samples_table" - table_title: "Samples failed mapping threshold" + title: "Samples failed mapping threshold" namespace: "Samples failed mapping threshold" - format: "{:.2f}" fail_strand_check: section_name: "Strandedness Checks" description: "

    The strandedness used for analysis in this workflow can either be provided by the user or automatically inferred by Salmon using a sample of reads. In both cases, strandedness is verified at the end of the workflow using RSeQC's infer_experiment.py on genomic alignments. In this table, a pass indicates a match between the supplied strandedness (or that inferred by Salmon) and RSeQC results. A fail indicates a mismatch or 'undetermined' strandedness. 'Undetermined' strandedness can signal QC issues, including potential genomic DNA contamination.

    Note: Rows are duplicated for an 'auto' setting to allow comparison of statistics between inference methods.

    " plot_type: "table" pconfig: id: "fail_strand_check_table" - table_title: "Samples strandedness check" + title: "Samples strandedness check" namespace: "Samples strandedness check" - format: "{:.2f}" headers: Status: description: Pass if the strandedness inferred by RSeQC matches that provided by the user or predicted by Salmon. Fail otherwise. From 0aaf228ece7c91c065df077df8ea23b9c7435ece Mon Sep 17 00:00:00 2001 From: Harshil Patel Date: Thu, 27 Jun 2024 15:39:41 +0100 Subject: [PATCH 419/634] Update snapshots for default pipeline test --- tests/default.nf.test.snap | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/tests/default.nf.test.snap b/tests/default.nf.test.snap index c221fd786..83b22815a 100644 --- a/tests/default.nf.test.snap +++ b/tests/default.nf.test.snap @@ -17,18 +17,18 @@ ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.1" }, - "timestamp": "2024-04-11T14:39:58.637279952" + "timestamp": "2024-06-27T15:38:12.586958" }, "software_versions": { "content": [ - "{BBMAP_BBSPLIT={bbmap=39.01}, BEDTOOLS_GENOMECOV_FW={bedtools=2.31.1}, CAT_FASTQ={cat=8.3}, CUSTOM_CATADDITIONALFASTA={python=3.9.5}, CUSTOM_GETCHROMSIZES={getchromsizes=1.16.1}, CUSTOM_TX2GENE={python=3.9.5}, DESEQ2_QC_PSEUDO={r-base=4.0.3, bioconductor-deseq2=1.28.0}, DESEQ2_QC_STAR_SALMON={r-base=4.0.3, bioconductor-deseq2=1.28.0}, DUPRADAR={bioconductor-dupradar=1.32.0}, FASTQC={fastqc=0.12.1}, FQ_SUBSAMPLE={fq=0.9.1 (2022-02-22)}, GTF2BED={perl=5.26.2}, GTF_FILTER={python=3.9.5}, GUNZIP_ADDITIONAL_FASTA={gunzip=1.1}, GUNZIP_GTF={gunzip=1.1}, MULTIQC_CUSTOM_BIOTYPE={python=3.9.5}, PICARD_MARKDUPLICATES={picard=3.1.1}, QUALIMAP_RNASEQ={qualimap=2.3}, RSEQC_BAMSTAT={rseqc=5.0.2}, RSEQC_INFEREXPERIMENT={rseqc=5.0.2}, RSEQC_INNERDISTANCE={rseqc=5.0.2}, RSEQC_JUNCTIONANNOTATION={rseqc=5.0.2}, RSEQC_JUNCTIONSATURATION={rseqc=5.0.2}, RSEQC_READDISTRIBUTION={rseqc=5.0.2}, RSEQC_READDUPLICATION={rseqc=5.0.2}, SALMON_QUANT={salmon=1.10.1}, SAMTOOLS_FLAGSTAT={samtools=1.19.2}, SAMTOOLS_IDXSTATS={samtools=1.19.2}, SAMTOOLS_INDEX={samtools=1.19.2}, SAMTOOLS_SORT={samtools=1.19.2}, SAMTOOLS_STATS={samtools=1.19.2}, SE_GENE={bioconductor-summarizedexperiment=1.32.0}, STAR_ALIGN={star=2.7.10a, samtools=1.18, gawk=5.1.0}, STAR_GENOMEGENERATE={star=2.7.10a, samtools=1.18, gawk=5.1.0}, STRINGTIE_STRINGTIE={stringtie=2.2.1}, SUBREAD_FEATURECOUNTS={subread=2.0.1}, TRIMGALORE={trimgalore=0.6.7, cutadapt=3.4}, TXIMETA_TXIMPORT={bioconductor-tximeta=1.20.1}, UCSC_BEDCLIP={ucsc=377}, UCSC_BEDGRAPHTOBIGWIG={ucsc=445}, UNTAR_SALMON_INDEX={untar=1.3}, Workflow={nf-core/rnaseq=v3.15.0dev}}" + "{BBMAP_BBSPLIT={bbmap=39.01}, BEDTOOLS_GENOMECOV_FW={bedtools=2.31.1}, CAT_FASTQ={cat=8.3}, CUSTOM_CATADDITIONALFASTA={python=3.9.5}, CUSTOM_GETCHROMSIZES={getchromsizes=1.2}, CUSTOM_TX2GENE={python=3.9.5}, DESEQ2_QC_PSEUDO={r-base=4.0.3, bioconductor-deseq2=1.28.0}, DESEQ2_QC_STAR_SALMON={r-base=4.0.3, bioconductor-deseq2=1.28.0}, DUPRADAR={bioconductor-dupradar=1.32.0}, FASTQC={fastqc=0.12.1}, FQ_SUBSAMPLE={fq=0.9.1 (2022-02-22)}, GTF2BED={perl=5.26.2}, GTF_FILTER={python=3.9.5}, GUNZIP_ADDITIONAL_FASTA={gunzip=1.1}, GUNZIP_GTF={gunzip=1.1}, MULTIQC_CUSTOM_BIOTYPE={python=3.9.5}, PICARD_MARKDUPLICATES={picard=3.1.1}, QUALIMAP_RNASEQ={qualimap=2.3}, RSEQC_BAMSTAT={rseqc=5.0.2}, RSEQC_INFEREXPERIMENT={rseqc=5.0.2}, RSEQC_INNERDISTANCE={rseqc=5.0.2}, RSEQC_JUNCTIONANNOTATION={rseqc=5.0.2}, RSEQC_JUNCTIONSATURATION={rseqc=5.0.2}, RSEQC_READDISTRIBUTION={rseqc=5.0.2}, RSEQC_READDUPLICATION={rseqc=5.0.2}, SALMON_QUANT={salmon=1.10.1}, SAMTOOLS_FLAGSTAT={samtools=1.2}, SAMTOOLS_IDXSTATS={samtools=1.2}, SAMTOOLS_INDEX={samtools=1.2}, SAMTOOLS_SORT={samtools=1.2}, SAMTOOLS_STATS={samtools=1.2}, SE_GENE={bioconductor-summarizedexperiment=1.32.0}, STAR_ALIGN={star=2.7.10a, samtools=1.18, gawk=5.1.0}, STAR_GENOMEGENERATE={star=2.7.10a, samtools=1.18, gawk=5.1.0}, STRINGTIE_STRINGTIE={stringtie=2.2.1}, SUBREAD_FEATURECOUNTS={subread=2.0.1}, TRIMGALORE={trimgalore=0.6.7, cutadapt=3.4}, TXIMETA_TXIMPORT={bioconductor-tximeta=1.20.1}, UCSC_BEDCLIP={ucsc=377}, UCSC_BEDGRAPHTOBIGWIG={ucsc=445}, UNTAR_SALMON_INDEX={untar=1.3}, Workflow={nf-core/rnaseq=v3.15.0dev}}" ], "meta": { "nf-test": "0.8.4", - "nextflow": "24.01.0" + "nextflow": "24.04.1" }, - "timestamp": "2024-03-04T12:40:26.161319" + "timestamp": "2024-06-27T15:38:12.576022" } } \ No newline at end of file From 489e7fd343285751450f8ef66f9043ef65433be9 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Thu, 27 Jun 2024 16:35:39 +0100 Subject: [PATCH 420/634] patch dupradar --- modules.json | 1 + modules/nf-core/dupradar/dupradar.diff | 100 +++++++++++++++++++++++++ 2 files changed, 101 insertions(+) create mode 100644 modules/nf-core/dupradar/dupradar.diff diff --git a/modules.json b/modules.json index c7d899894..38f622bef 100644 --- a/modules.json +++ b/modules.json @@ -39,6 +39,7 @@ "branch": "master", "git_sha": "f632a6e25b05497477920183cff33ba72ab7b6fc", "installed_by": ["modules"] + "patch": "modules/nf-core/dupradar/dupradar.diff" }, "fastp": { "branch": "master", diff --git a/modules/nf-core/dupradar/dupradar.diff b/modules/nf-core/dupradar/dupradar.diff new file mode 100644 index 000000000..b56db2599 --- /dev/null +++ b/modules/nf-core/dupradar/dupradar.diff @@ -0,0 +1,100 @@ +Changes in module 'nf-core/dupradar' +--- /dev/null ++++ modules/nf-core/dupradar/nextflow.config +@@ -0,0 +1,35 @@ ++if (!params.skip_alignment && !params.skip_qc) { ++ if (!params.skip_dupradar) { ++ process { ++ withName: 'DUPRADAR' { ++ publishDir = [ ++ [ ++ path: { "${params.outdir}/${params.aligner}/dupradar/scatter_plot" }, ++ mode: params.publish_dir_mode, ++ pattern: "*Dens.pdf" ++ ], ++ [ ++ path: { "${params.outdir}/${params.aligner}/dupradar/box_plot" }, ++ mode: params.publish_dir_mode, ++ pattern: "*Boxplot.pdf" ++ ], ++ [ ++ path: { "${params.outdir}/${params.aligner}/dupradar/histogram" }, ++ mode: params.publish_dir_mode, ++ pattern: "*Hist.pdf" ++ ], ++ [ ++ path: { "${params.outdir}/${params.aligner}/dupradar/gene_data" }, ++ mode: params.publish_dir_mode, ++ pattern: "*Matrix.txt" ++ ], ++ [ ++ path: { "${params.outdir}/${params.aligner}/dupradar/intercepts_slope" }, ++ mode: params.publish_dir_mode, ++ pattern: "*slope.txt" ++ ] ++ ] ++ } ++ } ++ } ++} + +--- modules/nf-core/dupradar/tests/main.nf.test ++++ modules/nf-core/dupradar/tests/main.nf.test +@@ -3,10 +3,6 @@ + name "Test Process DUPRADAR" + script "../main.nf" + process "DUPRADAR" +- +- tag "modules" +- tag "modules_nfcore" +- tag "dupradar" + + test("sarscov2 - bam - single_end") { + + +--- modules/nf-core/dupradar/templates/dupradar.r ++++ modules/nf-core/dupradar/templates/dupradar.r +@@ -88,7 +88,6 @@ + # max: 100 + # min: 0 + # scale: 'RdYlGn-rev' +-# format: '{:.2f}%' + Sample dupRadar_intercept" + + write(line,file=paste0(output_prefix, "_dup_intercept_mqc.txt"),append=TRUE) +@@ -115,15 +114,15 @@ + # This plot shows the general linear models - a summary of the gene duplication distributions. \" + #pconfig: + # title: 'DupRadar General Linear Model' +-# xLog: True ++# xlog: True + # xlab: 'expression (reads/kbp)' + # ylab: '% duplicate reads' + # ymax: 100 + # ymin: 0 + # tt_label: '{point.x:.1f} reads/kbp: {point.y:,.2f}% duplicates' +-# xPlotLines: ++# x_lines: + # - color: 'green' +-# dashStyle: 'LongDash' ++# dash: 'LongDash' + # label: + # style: {color: 'green'} + # text: '0.5 RPKM' +@@ -132,7 +131,7 @@ + # value: 0.5 + # width: 1 + # - color: 'red' +-# dashStyle: 'LongDash' ++# dash: 'LongDash' + # label: + # style: {color: 'red'} + # text: '1 read/bp' + +--- modules/nf-core/dupradar/tests/tags.yml ++++ /dev/null +@@ -1,2 +0,0 @@ +-dupradar: +- - "modules/nf-core/dupradar/**" + +************************************************************ From 2d314bf7bf2886d1613493164c8b62ce0702249b Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Thu, 27 Jun 2024 17:25:14 +0100 Subject: [PATCH 421/634] Fix syntax --- modules.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules.json b/modules.json index 38f622bef..4ee9cf73f 100644 --- a/modules.json +++ b/modules.json @@ -38,7 +38,7 @@ "dupradar": { "branch": "master", "git_sha": "f632a6e25b05497477920183cff33ba72ab7b6fc", - "installed_by": ["modules"] + "installed_by": ["modules"], "patch": "modules/nf-core/dupradar/dupradar.diff" }, "fastp": { From e7ba0cfaf377e1c7b3b50bcdbaed0e89d8d11734 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Fri, 28 Jun 2024 17:01:29 +0100 Subject: [PATCH 422/634] update snapshot --- modules/nf-core/dupradar/dupradar.diff | 30 +++++++++++++++++++ .../nf-core/dupradar/tests/main.nf.test.snap | 10 +++---- 2 files changed, 35 insertions(+), 5 deletions(-) diff --git a/modules/nf-core/dupradar/dupradar.diff b/modules/nf-core/dupradar/dupradar.diff index b56db2599..c24bc6570 100644 --- a/modules/nf-core/dupradar/dupradar.diff +++ b/modules/nf-core/dupradar/dupradar.diff @@ -38,6 +38,36 @@ Changes in module 'nf-core/dupradar' + } +} +--- modules/nf-core/dupradar/tests/main.nf.test.snap ++++ modules/nf-core/dupradar/tests/main.nf.test.snap +@@ -50,8 +50,8 @@ + "strandedness": "forward" + }, + [ +- "test_dup_intercept_mqc.txt:md5,d69369924aeb9695b0e97e755e0d9ea3", +- "test_duprateExpDensCurve_mqc.txt:md5,f4a50dc09de81219ed4449c11153ba6e" ++ "test_dup_intercept_mqc.txt:md5,002855b42a71aa0f407ef7fa19df9ac3", ++ "test_duprateExpDensCurve_mqc.txt:md5,5c6ab345e3e0089d409624d6a4bf4e40" + ] + ] + ] +@@ -150,8 +150,8 @@ + "strandedness": "forward" + }, + [ +- "test_dup_intercept_mqc.txt:md5,7b6fb70cbede0d20ffa576a0cc0b249d", +- "test_duprateExpDensCurve_mqc.txt:md5,49b44937123c14b622f346cb6156dd4f" ++ "test_dup_intercept_mqc.txt:md5,11961f0962ffc70e42aa57a12984e0fc", ++ "test_duprateExpDensCurve_mqc.txt:md5,eb742e354c8d5d6bed8d2ebac087f0ac" + ] + ] + ] +@@ -357,4 +357,4 @@ + }, + "timestamp": "2024-03-07T13:07:43.344100132" + } +-}+} + --- modules/nf-core/dupradar/tests/main.nf.test +++ modules/nf-core/dupradar/tests/main.nf.test @@ -3,10 +3,6 @@ diff --git a/modules/nf-core/dupradar/tests/main.nf.test.snap b/modules/nf-core/dupradar/tests/main.nf.test.snap index e64aa7298..79587a439 100644 --- a/modules/nf-core/dupradar/tests/main.nf.test.snap +++ b/modules/nf-core/dupradar/tests/main.nf.test.snap @@ -50,8 +50,8 @@ "strandedness": "forward" }, [ - "test_dup_intercept_mqc.txt:md5,d69369924aeb9695b0e97e755e0d9ea3", - "test_duprateExpDensCurve_mqc.txt:md5,f4a50dc09de81219ed4449c11153ba6e" + "test_dup_intercept_mqc.txt:md5,002855b42a71aa0f407ef7fa19df9ac3", + "test_duprateExpDensCurve_mqc.txt:md5,5c6ab345e3e0089d409624d6a4bf4e40" ] ] ] @@ -150,8 +150,8 @@ "strandedness": "forward" }, [ - "test_dup_intercept_mqc.txt:md5,7b6fb70cbede0d20ffa576a0cc0b249d", - "test_duprateExpDensCurve_mqc.txt:md5,49b44937123c14b622f346cb6156dd4f" + "test_dup_intercept_mqc.txt:md5,11961f0962ffc70e42aa57a12984e0fc", + "test_duprateExpDensCurve_mqc.txt:md5,eb742e354c8d5d6bed8d2ebac087f0ac" ] ] ] @@ -357,4 +357,4 @@ }, "timestamp": "2024-03-07T13:07:43.344100132" } -} \ No newline at end of file +} From 7af2a7fd7553096f28ae3e454d596ac9f5c0c2a1 Mon Sep 17 00:00:00 2001 From: Maxime U Garcia Date: Tue, 2 Jul 2024 15:47:53 +0200 Subject: [PATCH 423/634] Update CHANGELOG.md --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index dfeded678..086cc2b85 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -95,6 +95,7 @@ Thank you to everyone else that has contributed by reporting bugs, enhancements - [PR #1326](https://github.com/nf-core/rnaseq/pull/1326) - Move Conda dependencies for local modules to individual environment file - [PR #1328](https://github.com/nf-core/rnaseq/pull/1328) - Add pipeline level test for STAR-RSEM and HISAT2 - [PR #1329](https://github.com/nf-core/rnaseq/pull/1329) - Remove tags from all nf-test files +- [PR #1331](https://github.com/nf-core/rnaseq/pull/1331) - Adding stubs for local modules ### Parameters From 7e9077e14c5aaef42e46a1e58f09463f07c69c86 Mon Sep 17 00:00:00 2001 From: maxulysse Date: Tue, 2 Jul 2024 16:52:43 +0200 Subject: [PATCH 424/634] update snaps --- .../tests/main.nf.test.snap | 8 +-- .../local/align_star/tests/main.nf.test.snap | 64 +++++++++---------- 2 files changed, 36 insertions(+), 36 deletions(-) diff --git a/modules/local/multiqc_custom_biotype/tests/main.nf.test.snap b/modules/local/multiqc_custom_biotype/tests/main.nf.test.snap index ff9420015..2fc5e4ab6 100644 --- a/modules/local/multiqc_custom_biotype/tests/main.nf.test.snap +++ b/modules/local/multiqc_custom_biotype/tests/main.nf.test.snap @@ -9,7 +9,7 @@ }, [ "test.biotype_counts_mqc.tsv:md5,d996f27aeec64370cade26717aa22e1e", - "test.biotype_counts_rrna_mqc.tsv:md5,405217e65a76b104b00bb41f6bf10a92" + "test.biotype_counts_rrna_mqc.tsv:md5,31c68d05ffe90d1e3eb2cb2ef9a7b4d9" ] ] ], @@ -23,7 +23,7 @@ }, [ "test.biotype_counts_mqc.tsv:md5,d996f27aeec64370cade26717aa22e1e", - "test.biotype_counts_rrna_mqc.tsv:md5,405217e65a76b104b00bb41f6bf10a92" + "test.biotype_counts_rrna_mqc.tsv:md5,31c68d05ffe90d1e3eb2cb2ef9a7b4d9" ] ] ], @@ -34,9 +34,9 @@ ], "meta": { "nf-test": "0.8.4", - "nextflow": "24.01.0" + "nextflow": "24.04.2" }, - "timestamp": "2024-03-08T09:38:04.260609" + "timestamp": "2024-07-02T16:48:24.844934" }, "test sarscov2 count data - stub": { "content": [ diff --git a/subworkflows/local/align_star/tests/main.nf.test.snap b/subworkflows/local/align_star/tests/main.nf.test.snap index 8cb85e980..33f4d772a 100644 --- a/subworkflows/local/align_star/tests/main.nf.test.snap +++ b/subworkflows/local/align_star/tests/main.nf.test.snap @@ -25,15 +25,15 @@ "id": "test", "single_end": false }, - "test.stats:md5,99fb9569a1b39fe38d7bd7d71daa8364" + "test.stats:md5,202e2f234f93b347b6a72d0163773054" ] ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "24.01.0" + "nextflow": "24.04.2" }, - "timestamp": "2024-03-07T12:00:35.123236" + "timestamp": "2024-07-02T16:51:25.527796" }, "with igenomes - flagstat": { "content": [ @@ -91,15 +91,15 @@ "id": "test", "single_end": false }, - "test.stats:md5,99fb9569a1b39fe38d7bd7d71daa8364" + "test.stats:md5,202e2f234f93b347b6a72d0163773054" ] ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "24.01.0" + "nextflow": "24.04.2" }, - "timestamp": "2024-03-07T11:59:42.539089" + "timestamp": "2024-07-02T16:50:30.406405" }, "with igenomes - bam_sorted": { "content": [ @@ -122,19 +122,19 @@ "without igenomes - versions": { "content": [ [ + "versions.yml:md5,06693106908e6f8f38a2c30accf7067d", "versions.yml:md5,35c1cc21d26d9d8f00e6ec87e97fb634", - "versions.yml:md5,c156b12646d8a51a4d59c42f8d833305", - "versions.yml:md5,d18a2907f84607859a6723fa33485378", - "versions.yml:md5,e902002dd55f6cca09ea62c9aa42ef0d", - "versions.yml:md5,f6b7635a2693b70fe6836c8e45ebba98", - "versions.yml:md5,f985768ea0cc88e2b533cc08538f3771" + "versions.yml:md5,369619588c8c294b74dca9058a151b11", + "versions.yml:md5,78069d4515b04251f758ac52a49d9971", + "versions.yml:md5,b6a22ef369a375445a8f9313721b8092", + "versions.yml:md5,feaf798d368c662a7a1cea87a24a7434" ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "24.01.0" + "nextflow": "24.04.2" }, - "timestamp": "2024-03-07T11:59:42.575417" + "timestamp": "2024-07-02T16:50:30.464346" }, "without igenomes - bam_transcript": { "content": [ @@ -215,19 +215,19 @@ "with igenomes - versions": { "content": [ [ - "versions.yml:md5,c156b12646d8a51a4d59c42f8d833305", - "versions.yml:md5,d18a2907f84607859a6723fa33485378", + "versions.yml:md5,06693106908e6f8f38a2c30accf7067d", + "versions.yml:md5,369619588c8c294b74dca9058a151b11", + "versions.yml:md5,78069d4515b04251f758ac52a49d9971", + "versions.yml:md5,b6a22ef369a375445a8f9313721b8092", "versions.yml:md5,e3b043ba840d5bddde92f0bf1c91a5fc", - "versions.yml:md5,e902002dd55f6cca09ea62c9aa42ef0d", - "versions.yml:md5,f6b7635a2693b70fe6836c8e45ebba98", - "versions.yml:md5,f985768ea0cc88e2b533cc08538f3771" + "versions.yml:md5,feaf798d368c662a7a1cea87a24a7434" ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "24.01.0" + "nextflow": "24.04.2" }, - "timestamp": "2024-03-07T12:00:35.173761" + "timestamp": "2024-07-02T16:51:25.579874" }, "with igenomes - log_progress": { "content": [ @@ -295,15 +295,15 @@ "id": "test", "single_end": false }, - "test.bam.bai:md5,25b78d2e41dc31350004b7ab9e5c3618" + "test.bam.bai:md5,8bfbd4094a92ac0de8492d98a471d1b0" ] ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "24.01.0" + "nextflow": "24.04.2" }, - "timestamp": "2024-03-08T17:02:42.995047" + "timestamp": "2024-07-02T16:50:30.294108" }, "without igenomes - orig_bam": { "content": [ @@ -341,15 +341,15 @@ "id": "test", "single_end": false }, - "test.bam:md5,f75b29383d9c16a466ae22dc676b3022" + "test.bam:md5,e6573d093da6ec95f99c1669eb86bbd6" ] ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "24.01.0" + "nextflow": "24.04.2" }, - "timestamp": "2024-03-08T17:02:43.076908" + "timestamp": "2024-07-02T16:50:30.348908" }, "with igenomes - orig_bam": { "content": [ @@ -413,15 +413,15 @@ "id": "test", "single_end": false }, - "test.bam:md5,37c080a0d854fffee57360f2176670a8" + "test.bam:md5,fc154c31eb4d034ebdb6b1d17c6b45eb" ] ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "24.01.0" + "nextflow": "24.04.2" }, - "timestamp": "2024-03-08T17:03:38.323083" + "timestamp": "2024-07-02T16:51:25.474137" }, "without igenomes - bam_sorted": { "content": [ @@ -449,15 +449,15 @@ "id": "test", "single_end": false }, - "test.bam.bai:md5,25b78d2e41dc31350004b7ab9e5c3618" + "test.bam.bai:md5,8bfbd4094a92ac0de8492d98a471d1b0" ] ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "24.01.0" + "nextflow": "24.04.2" }, - "timestamp": "2024-03-08T17:03:38.264526" + "timestamp": "2024-07-02T16:51:25.407812" }, "with igenomes - log_final": { "content": [ From b965ced717e1170477edc123fcc97aae45d0bc71 Mon Sep 17 00:00:00 2001 From: maxulysse Date: Tue, 2 Jul 2024 19:10:47 +0200 Subject: [PATCH 425/634] update all modules --- modules.json | 30 +-- .../nf-core/rsem/calculateexpression/main.nf | 18 ++ .../calculateexpression/tests/main.nf.test | 45 +++- .../tests/main.nf.test.snap | 159 +++++++++++++ .../rsem/calculateexpression/tests/tags.yml | 2 + modules/nf-core/rsem/preparereference/main.nf | 11 + .../rsem/preparereference/tests/main.nf.test | 25 +- .../preparereference/tests/main.nf.test.snap | 45 ++++ .../rsem/preparereference/tests/tags.yml | 2 + modules/nf-core/rseqc/bamstat/main.nf | 11 + .../nf-core/rseqc/bamstat/tests/main.nf.test | 32 ++- .../rseqc/bamstat/tests/main.nf.test.snap | 33 +++ modules/nf-core/rseqc/bamstat/tests/tags.yml | 2 + modules/nf-core/rseqc/inferexperiment/main.nf | 11 + .../rseqc/inferexperiment/tests/main.nf.test | 27 +++ .../inferexperiment/tests/main.nf.test.snap | 33 +++ .../rseqc/inferexperiment/tests/tags.yml | 2 + modules/nf-core/rseqc/innerdistance/main.nf | 15 ++ .../rseqc/innerdistance/tests/main.nf.test | 29 +++ .../innerdistance/tests/main.nf.test.snap | 97 ++++++++ .../rseqc/innerdistance/tests/tags.yml | 2 + .../nf-core/rseqc/junctionannotation/main.nf | 17 ++ .../junctionannotation/tests/main.nf.test | 29 +++ .../tests/main.nf.test.snap | 143 +++++++++++ .../rseqc/junctionannotation/tests/tags.yml | 2 + .../nf-core/rseqc/junctionsaturation/main.nf | 12 + .../junctionsaturation/tests/main.nf.test | 29 +++ .../tests/main.nf.test.snap | 53 +++++ .../rseqc/junctionsaturation/tests/tags.yml | 2 + .../nf-core/rseqc/readdistribution/main.nf | 11 + .../rseqc/readdistribution/tests/main.nf.test | 28 +++ .../readdistribution/tests/main.nf.test.snap | 35 +++ .../rseqc/readdistribution/tests/tags.yml | 2 + modules/nf-core/rseqc/readduplication/main.nf | 14 ++ .../rseqc/readduplication/tests/main.nf.test | 27 +++ .../readduplication/tests/main.nf.test.snap | 89 +++++++ .../rseqc/readduplication/tests/tags.yml | 2 + modules/nf-core/rseqc/tin/main.nf | 12 + modules/nf-core/rseqc/tin/tests/main.nf.test | 29 +++ .../nf-core/rseqc/tin/tests/main.nf.test.snap | 53 +++++ modules/nf-core/rseqc/tin/tests/tags.yml | 2 + modules/nf-core/subread/featurecounts/main.nf | 12 + .../subread/featurecounts/tests/main.nf.test | 82 ++++++- .../featurecounts/tests/main.nf.test.snap | 207 ++++++++++++++++ .../subread/featurecounts/tests/tags.yml | 2 + modules/nf-core/trimgalore/main.nf | 21 ++ modules/nf-core/trimgalore/tests/main.nf.test | 50 ++++ .../trimgalore/tests/main.nf.test.snap | 154 ++++++++++++ modules/nf-core/trimgalore/tests/tags.yml | 2 + modules/nf-core/ucsc/bedclip/main.nf | 12 + .../nf-core/ucsc/bedclip/tests/main.nf.test | 28 +++ .../ucsc/bedclip/tests/main.nf.test.snap | 35 +++ modules/nf-core/ucsc/bedclip/tests/tags.yml | 2 + modules/nf-core/umitools/extract/main.nf | 18 ++ .../umitools/extract/tests/main.nf.test | 83 ++++++- .../umitools/extract/tests/main.nf.test.snap | 159 ++++++++++++- .../nf-core/umitools/extract/tests/tags.yml | 2 + .../fastq_fastqc_umitools_fastp/main.nf | 10 +- .../tests/main.nf.test | 54 +++++ .../tests/main.nf.test.snap | 225 ++++++++++++++++++ .../tests/tags.yml | 2 + 61 files changed, 2348 insertions(+), 34 deletions(-) create mode 100644 modules/nf-core/rsem/calculateexpression/tests/tags.yml create mode 100644 modules/nf-core/rsem/preparereference/tests/tags.yml create mode 100644 modules/nf-core/rseqc/bamstat/tests/tags.yml create mode 100644 modules/nf-core/rseqc/inferexperiment/tests/tags.yml create mode 100644 modules/nf-core/rseqc/innerdistance/tests/tags.yml create mode 100644 modules/nf-core/rseqc/junctionannotation/tests/tags.yml create mode 100644 modules/nf-core/rseqc/junctionsaturation/tests/tags.yml create mode 100644 modules/nf-core/rseqc/readdistribution/tests/tags.yml create mode 100644 modules/nf-core/rseqc/readduplication/tests/tags.yml create mode 100644 modules/nf-core/rseqc/tin/tests/tags.yml create mode 100644 modules/nf-core/subread/featurecounts/tests/tags.yml create mode 100644 modules/nf-core/trimgalore/tests/tags.yml create mode 100644 modules/nf-core/ucsc/bedclip/tests/tags.yml create mode 100644 modules/nf-core/umitools/extract/tests/tags.yml create mode 100644 subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/tags.yml diff --git a/modules.json b/modules.json index 4ee9cf73f..4b9c3c539 100644 --- a/modules.json +++ b/modules.json @@ -113,52 +113,52 @@ }, "rsem/calculateexpression": { "branch": "master", - "git_sha": "7c82eda52cb493c4cf500e3fb7d1597a5d766165", + "git_sha": "b4919e9a2b4d8b71061e601633db4600a3858fa1", "installed_by": ["modules"] }, "rsem/preparereference": { "branch": "master", - "git_sha": "301b088c7e9e00c4c80686411383f07173b54d69", + "git_sha": "b4919e9a2b4d8b71061e601633db4600a3858fa1", "installed_by": ["modules"] }, "rseqc/bamstat": { "branch": "master", - "git_sha": "9eb22e4d3f28c274b7c498a1564581377349a242", + "git_sha": "b4919e9a2b4d8b71061e601633db4600a3858fa1", "installed_by": ["bam_rseqc"] }, "rseqc/inferexperiment": { "branch": "master", - "git_sha": "6c7d8f1d6247655e4bc4d97f37b68b2461f645f6", + "git_sha": "b4919e9a2b4d8b71061e601633db4600a3858fa1", "installed_by": ["bam_rseqc"] }, "rseqc/innerdistance": { "branch": "master", - "git_sha": "6c7d8f1d6247655e4bc4d97f37b68b2461f645f6", + "git_sha": "b4919e9a2b4d8b71061e601633db4600a3858fa1", "installed_by": ["bam_rseqc"] }, "rseqc/junctionannotation": { "branch": "master", - "git_sha": "6c7d8f1d6247655e4bc4d97f37b68b2461f645f6", + "git_sha": "b4919e9a2b4d8b71061e601633db4600a3858fa1", "installed_by": ["bam_rseqc"] }, "rseqc/junctionsaturation": { "branch": "master", - "git_sha": "6c7d8f1d6247655e4bc4d97f37b68b2461f645f6", + "git_sha": "b4919e9a2b4d8b71061e601633db4600a3858fa1", "installed_by": ["bam_rseqc"] }, "rseqc/readdistribution": { "branch": "master", - "git_sha": "6c7d8f1d6247655e4bc4d97f37b68b2461f645f6", + "git_sha": "b4919e9a2b4d8b71061e601633db4600a3858fa1", "installed_by": ["bam_rseqc"] }, "rseqc/readduplication": { "branch": "master", - "git_sha": "6c7d8f1d6247655e4bc4d97f37b68b2461f645f6", + "git_sha": "b4919e9a2b4d8b71061e601633db4600a3858fa1", "installed_by": ["bam_rseqc"] }, "rseqc/tin": { "branch": "master", - "git_sha": "6c7d8f1d6247655e4bc4d97f37b68b2461f645f6", + "git_sha": "b4919e9a2b4d8b71061e601633db4600a3858fa1", "installed_by": ["bam_rseqc"] }, "salmon/index": { @@ -222,7 +222,7 @@ }, "subread/featurecounts": { "branch": "master", - "git_sha": "e5265c217dcfbff7731c40623aaf07538fdd3e1c", + "git_sha": "b4919e9a2b4d8b71061e601633db4600a3858fa1", "installed_by": ["modules"] }, "summarizedexperiment/summarizedexperiment": { @@ -232,7 +232,7 @@ }, "trimgalore": { "branch": "master", - "git_sha": "a98418419ae6c9df3cf6cf108d1e1aba71037d5a", + "git_sha": "b4919e9a2b4d8b71061e601633db4600a3858fa1", "installed_by": ["fastq_fastqc_umitools_trimgalore"] }, "tximeta/tximport": { @@ -242,7 +242,7 @@ }, "ucsc/bedclip": { "branch": "master", - "git_sha": "7c75d01997236f61b9b77399d9933cb36041f2c3", + "git_sha": "b4919e9a2b4d8b71061e601633db4600a3858fa1", "installed_by": ["bedgraph_bedclip_bedgraphtobigwig"] }, "ucsc/bedgraphtobigwig": { @@ -257,7 +257,7 @@ }, "umitools/extract": { "branch": "master", - "git_sha": "d2c5e76f291379f3dd403e48e46ed7e6ba5da744", + "git_sha": "b4919e9a2b4d8b71061e601633db4600a3858fa1", "installed_by": ["fastq_fastqc_umitools_fastp", "fastq_fastqc_umitools_trimgalore"] }, "umitools/prepareforrsem": { @@ -315,7 +315,7 @@ }, "fastq_fastqc_umitools_fastp": { "branch": "master", - "git_sha": "b90b5cd93149a1b3be263d916c7234fe0708a71c", + "git_sha": "db35d26edeafacf9906a517827df621a29adc13d", "installed_by": ["subworkflows"] }, "fastq_fastqc_umitools_trimgalore": { diff --git a/modules/nf-core/rsem/calculateexpression/main.nf b/modules/nf-core/rsem/calculateexpression/main.nf index 8d88a56b2..40bddc5e5 100644 --- a/modules/nf-core/rsem/calculateexpression/main.nf +++ b/modules/nf-core/rsem/calculateexpression/main.nf @@ -54,4 +54,22 @@ process RSEM_CALCULATEEXPRESSION { star: \$(STAR --version | sed -e "s/STAR_//g") END_VERSIONS """ + + stub: + prefix = task.ext.prefix ?: "${meta.id}" + """ + touch ${prefix}.genes.results + touch ${prefix}.isoforms.results + touch ${prefix}.stat + touch ${prefix}.log + touch ${prefix}.STAR.genome.bam + touch ${prefix}.genome.bam + touch ${prefix}.transcript.bam + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + rsem: \$(rsem-calculate-expression --version | sed -e "s/Current version: RSEM v//g") + star: \$(STAR --version | sed -e "s/STAR_//g") + END_VERSIONS + """ } diff --git a/modules/nf-core/rsem/calculateexpression/tests/main.nf.test b/modules/nf-core/rsem/calculateexpression/tests/main.nf.test index 3ab43eb1a..5df41c0b8 100644 --- a/modules/nf-core/rsem/calculateexpression/tests/main.nf.test +++ b/modules/nf-core/rsem/calculateexpression/tests/main.nf.test @@ -4,7 +4,12 @@ nextflow_process { script "../main.nf" process "RSEM_CALCULATEEXPRESSION" config "./nextflow.config" - + tag "modules" + tag "modules_nfcore" + tag "rsem" + tag "rsem/calculateexpression" + tag "rsem/preparereference" + test("homo_sapiens") { setup { @@ -46,7 +51,43 @@ nextflow_process { { assert snapshot(process.out.versions).match("versions") } ) } - } + test("homo_sapiens - stub") { + + options "-stub" + + setup { + run("RSEM_PREPAREREFERENCE") { + script "../../../rsem/preparereference/main.nf" + process { + """ + input[0] = Channel.of(file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true)) + input[1] = Channel.of(file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.gtf', checkIfExists: true)) + """ + } + } + } + + when { + process { + """ + input[0] = Channel.of([ + [ id:'test', strandedness: 'forward' ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/fastq/test_rnaseq_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/fastq/test_rnaseq_2.fastq.gz', checkIfExists: true) + ] + ]) + input[1] = RSEM_PREPAREREFERENCE.out.index + """ + } + } + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } } diff --git a/modules/nf-core/rsem/calculateexpression/tests/main.nf.test.snap b/modules/nf-core/rsem/calculateexpression/tests/main.nf.test.snap index c8a535e19..61647071d 100644 --- a/modules/nf-core/rsem/calculateexpression/tests/main.nf.test.snap +++ b/modules/nf-core/rsem/calculateexpression/tests/main.nf.test.snap @@ -15,8 +15,155 @@ ] ] ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, "timestamp": "2023-11-22T13:14:18.68683" }, + "homo_sapiens - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "strandedness": "forward" + }, + "test.genes.results:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + [ + { + "id": "test", + "strandedness": "forward" + }, + "test.isoforms.results:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + [ + { + "id": "test", + "strandedness": "forward" + }, + "test.stat:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "3": [ + [ + { + "id": "test", + "strandedness": "forward" + }, + "test.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "4": [ + "versions.yml:md5,823e53afe1ff4f3930ae8392f9f8dd5c" + ], + "5": [ + [ + { + "id": "test", + "strandedness": "forward" + }, + "test.STAR.genome.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "6": [ + [ + { + "id": "test", + "strandedness": "forward" + }, + "test.genome.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "7": [ + [ + { + "id": "test", + "strandedness": "forward" + }, + "test.transcript.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "bam_genome": [ + [ + { + "id": "test", + "strandedness": "forward" + }, + "test.genome.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "bam_star": [ + [ + { + "id": "test", + "strandedness": "forward" + }, + "test.STAR.genome.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "bam_transcript": [ + [ + { + "id": "test", + "strandedness": "forward" + }, + "test.transcript.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "counts_gene": [ + [ + { + "id": "test", + "strandedness": "forward" + }, + "test.genes.results:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "counts_transcript": [ + [ + { + "id": "test", + "strandedness": "forward" + }, + "test.isoforms.results:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "logs": [ + [ + { + "id": "test", + "strandedness": "forward" + }, + "test.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "stat": [ + [ + { + "id": "test", + "strandedness": "forward" + }, + "test.stat:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,823e53afe1ff4f3930ae8392f9f8dd5c" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-06-21T09:04:38.064594" + }, "counts_transcript": { "content": [ [ @@ -29,6 +176,10 @@ ] ] ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, "timestamp": "2023-11-22T13:14:18.682898" }, "versions": { @@ -37,6 +188,10 @@ "versions.yml:md5,823e53afe1ff4f3930ae8392f9f8dd5c" ] ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, "timestamp": "2023-11-22T13:14:18.700958" }, "counts_gene": { @@ -51,6 +206,10 @@ ] ] ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, "timestamp": "2023-11-22T13:14:18.670998" } } \ No newline at end of file diff --git a/modules/nf-core/rsem/calculateexpression/tests/tags.yml b/modules/nf-core/rsem/calculateexpression/tests/tags.yml new file mode 100644 index 000000000..654756aa5 --- /dev/null +++ b/modules/nf-core/rsem/calculateexpression/tests/tags.yml @@ -0,0 +1,2 @@ +rsem/calculateexpression: + - modules/nf-core/rsem/calculateexpression/** diff --git a/modules/nf-core/rsem/preparereference/main.nf b/modules/nf-core/rsem/preparereference/main.nf index 44f76ebd6..1acfbdedb 100644 --- a/modules/nf-core/rsem/preparereference/main.nf +++ b/modules/nf-core/rsem/preparereference/main.nf @@ -69,4 +69,15 @@ process RSEM_PREPAREREFERENCE { END_VERSIONS """ } + + stub: + """ + touch genome.transcripts.fa + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + rsem: \$(rsem-calculate-expression --version | sed -e "s/Current version: RSEM v//g") + star: \$(STAR --version | sed -e "s/STAR_//g") + END_VERSIONS + """ } diff --git a/modules/nf-core/rsem/preparereference/tests/main.nf.test b/modules/nf-core/rsem/preparereference/tests/main.nf.test index 4353d4d9b..9f618ad4c 100644 --- a/modules/nf-core/rsem/preparereference/tests/main.nf.test +++ b/modules/nf-core/rsem/preparereference/tests/main.nf.test @@ -3,6 +3,10 @@ nextflow_process { name "Test Process RSEM_PREPAREREFERENCE" script "../main.nf" process "RSEM_PREPAREREFERENCE" + tag "modules" + tag "modules_nfcore" + tag "rsem" + tag "rsem/preparereference" test("homo_sapiens") { @@ -26,7 +30,26 @@ nextflow_process { { assert snapshot(process.out.versions).match("versions") } ) } - } + test("homo_sapiens - stub") { + + options "-stub" + + when { + process { + """ + input[0] = Channel.of(file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true)) + input[1] = Channel.of(file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.gtf', checkIfExists: true)) + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } } diff --git a/modules/nf-core/rsem/preparereference/tests/main.nf.test.snap b/modules/nf-core/rsem/preparereference/tests/main.nf.test.snap index 02510659a..667416bff 100644 --- a/modules/nf-core/rsem/preparereference/tests/main.nf.test.snap +++ b/modules/nf-core/rsem/preparereference/tests/main.nf.test.snap @@ -1,10 +1,47 @@ { + "homo_sapiens - stub": { + "content": [ + { + "0": [ + [ + "genome.fasta:md5,f315020d899597c1b57e5fe9f60f4c3e" + ] + ], + "1": [ + "genome.transcripts.fa:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "2": [ + "versions.yml:md5,517611c42f6354d3609db1b35fffa397" + ], + "index": [ + [ + "genome.fasta:md5,f315020d899597c1b57e5fe9f60f4c3e" + ] + ], + "transcript_fasta": [ + "genome.transcripts.fa:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "versions": [ + "versions.yml:md5,517611c42f6354d3609db1b35fffa397" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-06-21T09:00:50.389847" + }, "versions": { "content": [ [ "versions.yml:md5,517611c42f6354d3609db1b35fffa397" ] ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, "timestamp": "2023-11-22T13:16:49.170587" }, "index": { @@ -22,6 +59,10 @@ ] ] ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, "timestamp": "2023-11-22T13:16:49.140398" }, "transcript_fasta": { @@ -30,6 +71,10 @@ "genome.transcripts.fa:md5,050c521a2719c2ae48267c1e65218f29" ] ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, "timestamp": "2023-11-22T13:16:49.159946" } } \ No newline at end of file diff --git a/modules/nf-core/rsem/preparereference/tests/tags.yml b/modules/nf-core/rsem/preparereference/tests/tags.yml new file mode 100644 index 000000000..112904564 --- /dev/null +++ b/modules/nf-core/rsem/preparereference/tests/tags.yml @@ -0,0 +1,2 @@ +rsem/preparereference: + - modules/nf-core/rsem/preparereference/** diff --git a/modules/nf-core/rseqc/bamstat/main.nf b/modules/nf-core/rseqc/bamstat/main.nf index 7db4c69bd..167240c46 100644 --- a/modules/nf-core/rseqc/bamstat/main.nf +++ b/modules/nf-core/rseqc/bamstat/main.nf @@ -31,4 +31,15 @@ process RSEQC_BAMSTAT { rseqc: \$(bam_stat.py --version | sed -e "s/bam_stat.py //g") END_VERSIONS """ + + stub: + def prefix = task.ext.prefix ?: "${meta.id}" + """ + touch ${prefix}.bam_stat.txt + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + rseqc: \$(bam_stat.py --version | sed -e "s/bam_stat.py //g") + END_VERSIONS + """ } diff --git a/modules/nf-core/rseqc/bamstat/tests/main.nf.test b/modules/nf-core/rseqc/bamstat/tests/main.nf.test index 6a64b602b..86f4301e9 100644 --- a/modules/nf-core/rseqc/bamstat/tests/main.nf.test +++ b/modules/nf-core/rseqc/bamstat/tests/main.nf.test @@ -4,18 +4,19 @@ nextflow_process { script "../main.nf" process "RSEQC_BAMSTAT" + tag "modules" + tag "modules_nfcore" + tag "rseqc" + tag "rseqc/bamstat" + config "./nextflow.config" test("sarscov2 - [meta] - bam") { when { - params { - // define parameters here. Example: - // outdir = "tests/results" - } process { """ - input[0] = [ + input[0] = [ [ id:'test' ], // meta map file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam') ] @@ -27,7 +28,26 @@ nextflow_process { assert process.success assert snapshot(process.out).match() } - } + test("sarscov2 - [meta] - bam - stub") { + + options "-stub" + + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam') + ] + """ + } + } + + then { + assert process.success + assert snapshot(process.out).match() + } + } } diff --git a/modules/nf-core/rseqc/bamstat/tests/main.nf.test.snap b/modules/nf-core/rseqc/bamstat/tests/main.nf.test.snap index 6e3f0364e..deae0e80d 100644 --- a/modules/nf-core/rseqc/bamstat/tests/main.nf.test.snap +++ b/modules/nf-core/rseqc/bamstat/tests/main.nf.test.snap @@ -1,4 +1,37 @@ { + "sarscov2 - [meta] - bam - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.bam_stat.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + "versions.yml:md5,58f74a7ff9d2966142c81a4a4735dbf3" + ], + "txt": [ + [ + { + "id": "test" + }, + "test.bam_stat.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,58f74a7ff9d2966142c81a4a4735dbf3" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-06-21T09:16:13.970299" + }, "sarscov2 - [meta] - bam": { "content": [ { diff --git a/modules/nf-core/rseqc/bamstat/tests/tags.yml b/modules/nf-core/rseqc/bamstat/tests/tags.yml new file mode 100644 index 000000000..ed9a41fa9 --- /dev/null +++ b/modules/nf-core/rseqc/bamstat/tests/tags.yml @@ -0,0 +1,2 @@ +rseqc/bamstat: + - modules/nf-core/rseqc/bamstat/** diff --git a/modules/nf-core/rseqc/inferexperiment/main.nf b/modules/nf-core/rseqc/inferexperiment/main.nf index 39fe816d3..87c676ada 100644 --- a/modules/nf-core/rseqc/inferexperiment/main.nf +++ b/modules/nf-core/rseqc/inferexperiment/main.nf @@ -33,4 +33,15 @@ process RSEQC_INFEREXPERIMENT { rseqc: \$(infer_experiment.py --version | sed -e "s/infer_experiment.py //g") END_VERSIONS """ + + stub: + def prefix = task.ext.prefix ?: "${meta.id}" + """ + touch ${prefix}.infer_experiment.txt + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + rseqc: \$(infer_experiment.py --version | sed -e "s/infer_experiment.py //g") + END_VERSIONS + """ } diff --git a/modules/nf-core/rseqc/inferexperiment/tests/main.nf.test b/modules/nf-core/rseqc/inferexperiment/tests/main.nf.test index 6218de6d8..f07384442 100644 --- a/modules/nf-core/rseqc/inferexperiment/tests/main.nf.test +++ b/modules/nf-core/rseqc/inferexperiment/tests/main.nf.test @@ -5,6 +5,11 @@ nextflow_process { process "RSEQC_INFEREXPERIMENT" config "./nextflow.config" + tag "modules" + tag "modules_nfcore" + tag "rseqc" + tag "rseqc/inferexperiment" + test("sarscov2 - [[meta] - bam] - bed") { when { @@ -24,4 +29,26 @@ nextflow_process { assert snapshot(process.out).match() } } + + test("sarscov2 - [[meta] - bam] - bed - stub") { + + options "-stub" + + when { + process { + """ + input[0] = Channel.of([ + [ id:'test' ], // meta map + file(params.modules_testdata_base_path + "genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam", checkIfExists: true) + ]) + input[1] = Channel.of(file(params.modules_testdata_base_path + "genomics/sarscov2/genome/bed/test.bed", checkIfExists: true)) + """ + } + } + + then { + assert process.success + assert snapshot(process.out).match() + } + } } diff --git a/modules/nf-core/rseqc/inferexperiment/tests/main.nf.test.snap b/modules/nf-core/rseqc/inferexperiment/tests/main.nf.test.snap index 1283b47f1..e31c1129f 100644 --- a/modules/nf-core/rseqc/inferexperiment/tests/main.nf.test.snap +++ b/modules/nf-core/rseqc/inferexperiment/tests/main.nf.test.snap @@ -1,4 +1,37 @@ { + "sarscov2 - [[meta] - bam] - bed - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.infer_experiment.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + "versions.yml:md5,f56ba5c6208ae720dd730f3a432e3ba7" + ], + "txt": [ + [ + { + "id": "test" + }, + "test.infer_experiment.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,f56ba5c6208ae720dd730f3a432e3ba7" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-06-21T09:34:31.050305" + }, "sarscov2 - [[meta] - bam] - bed": { "content": [ { diff --git a/modules/nf-core/rseqc/inferexperiment/tests/tags.yml b/modules/nf-core/rseqc/inferexperiment/tests/tags.yml new file mode 100644 index 000000000..f9ba7e26a --- /dev/null +++ b/modules/nf-core/rseqc/inferexperiment/tests/tags.yml @@ -0,0 +1,2 @@ +rseqc/inferexperiment: + - modules/nf-core/rseqc/inferexperiment/** diff --git a/modules/nf-core/rseqc/innerdistance/main.nf b/modules/nf-core/rseqc/innerdistance/main.nf index de7e302d7..207f5fb4d 100644 --- a/modules/nf-core/rseqc/innerdistance/main.nf +++ b/modules/nf-core/rseqc/innerdistance/main.nf @@ -48,4 +48,19 @@ process RSEQC_INNERDISTANCE { END_VERSIONS """ } + + stub: + def prefix = task.ext.prefix ?: "${meta.id}" + """ + touch ${prefix}.inner_distance.txt + touch ${prefix}.inner_distance_freq.txt + touch ${prefix}.inner_distance_mean.txt + touch ${prefix}.inner_distance_plot.pdf + touch ${prefix}.inner_distance_plot.r + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + rseqc: \$(inner_distance.py --version | sed -e "s/inner_distance.py //g") + END_VERSIONS + """ } diff --git a/modules/nf-core/rseqc/innerdistance/tests/main.nf.test b/modules/nf-core/rseqc/innerdistance/tests/main.nf.test index 2d4cc4fd6..cb19fe144 100644 --- a/modules/nf-core/rseqc/innerdistance/tests/main.nf.test +++ b/modules/nf-core/rseqc/innerdistance/tests/main.nf.test @@ -5,6 +5,11 @@ nextflow_process { process "RSEQC_INNERDISTANCE" config "./nextflow.config" + tag "modules" + tag "modules_nfcore" + tag "rseqc" + tag "rseqc/innerdistance" + test("sarscov2 - [[meta] - bam] - bed") { when { @@ -31,4 +36,28 @@ nextflow_process { ) } } + + test("sarscov2 - [[meta] - bam] - bed - stub") { + + options "-stub" + + when { + process { + """ + input[0] = Channel.of([ + [ id:'test' ], // meta map + file(params.modules_testdata_base_path + "genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam", checkIfExists: true) + ]) + input[1] = Channel.of(file(params.modules_testdata_base_path + "genomics/sarscov2/genome/bed/test.bed12", checkIfExists: true)) + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } } diff --git a/modules/nf-core/rseqc/innerdistance/tests/main.nf.test.snap b/modules/nf-core/rseqc/innerdistance/tests/main.nf.test.snap index 267a9a3ba..83f33363a 100644 --- a/modules/nf-core/rseqc/innerdistance/tests/main.nf.test.snap +++ b/modules/nf-core/rseqc/innerdistance/tests/main.nf.test.snap @@ -72,6 +72,103 @@ }, "timestamp": "2024-02-26T14:33:42.470638" }, + "sarscov2 - [[meta] - bam] - bed - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.inner_distance.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + [ + { + "id": "test" + }, + "test.inner_distance_freq.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + [ + { + "id": "test" + }, + "test.inner_distance_mean.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "3": [ + [ + { + "id": "test" + }, + "test.inner_distance_plot.pdf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "4": [ + [ + { + "id": "test" + }, + "test.inner_distance_plot.r:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "5": [ + "versions.yml:md5,3ca19644c7f02a53db3ffe50c7706797" + ], + "distance": [ + [ + { + "id": "test" + }, + "test.inner_distance.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "freq": [ + [ + { + "id": "test" + }, + "test.inner_distance_freq.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "mean": [ + [ + { + "id": "test" + }, + "test.inner_distance_mean.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "pdf": [ + [ + { + "id": "test" + }, + "test.inner_distance_plot.pdf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "rscript": [ + [ + { + "id": "test" + }, + "test.inner_distance_plot.r:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,3ca19644c7f02a53db3ffe50c7706797" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-06-21T09:22:20.844642" + }, "freq": { "content": [ [ diff --git a/modules/nf-core/rseqc/innerdistance/tests/tags.yml b/modules/nf-core/rseqc/innerdistance/tests/tags.yml new file mode 100644 index 000000000..4a9d0acf9 --- /dev/null +++ b/modules/nf-core/rseqc/innerdistance/tests/tags.yml @@ -0,0 +1,2 @@ +rseqc/innerdistance: + - modules/nf-core/rseqc/innerdistance/** diff --git a/modules/nf-core/rseqc/junctionannotation/main.nf b/modules/nf-core/rseqc/junctionannotation/main.nf index 4e1b03b61..9a8a4653a 100644 --- a/modules/nf-core/rseqc/junctionannotation/main.nf +++ b/modules/nf-core/rseqc/junctionannotation/main.nf @@ -40,4 +40,21 @@ process RSEQC_JUNCTIONANNOTATION { rseqc: \$(junction_annotation.py --version | sed -e "s/junction_annotation.py //g") END_VERSIONS """ + + stub: + def prefix = task.ext.prefix ?: "${meta.id}" + """ + touch ${prefix}.junction.xls + touch ${prefix}.junction_plot.r + touch ${prefix}.junction_annotation.log + touch ${prefix}.junction.bed + touch ${prefix}.Interact.bed + touch ${prefix}.junction.pdf + touch ${prefix}.events.pdf + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + rseqc: \$(junction_annotation.py --version | sed -e "s/junction_annotation.py //g") + END_VERSIONS + """ } diff --git a/modules/nf-core/rseqc/junctionannotation/tests/main.nf.test b/modules/nf-core/rseqc/junctionannotation/tests/main.nf.test index 885d9a7b7..36d5f6e23 100644 --- a/modules/nf-core/rseqc/junctionannotation/tests/main.nf.test +++ b/modules/nf-core/rseqc/junctionannotation/tests/main.nf.test @@ -4,6 +4,11 @@ nextflow_process { script "../main.nf" process "RSEQC_JUNCTIONANNOTATION" + tag "modules" + tag "modules_nfcore" + tag "rseqc" + tag "rseqc/junctionannotation" + test("sarscov2 - paired end [bam]") { when { @@ -28,4 +33,28 @@ nextflow_process { ) } } + + test("sarscov2 - paired end [bam] - stub") { + + options "-stub" + + 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) + ]) + input[1] = Channel.of(file(params.modules_testdata_base_path + "genomics/sarscov2/genome/bed/test.bed", checkIfExists: true)) + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } } diff --git a/modules/nf-core/rseqc/junctionannotation/tests/main.nf.test.snap b/modules/nf-core/rseqc/junctionannotation/tests/main.nf.test.snap index f24a00776..e87594f0b 100644 --- a/modules/nf-core/rseqc/junctionannotation/tests/main.nf.test.snap +++ b/modules/nf-core/rseqc/junctionannotation/tests/main.nf.test.snap @@ -28,5 +28,148 @@ "nextflow": "24.01.0" }, "timestamp": "2024-02-26T14:32:52.734515" + }, + "sarscov2 - paired end [bam] - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.junction.xls:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": false + }, + "test.junction_plot.r:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + [ + { + "id": "test", + "single_end": false + }, + "test.junction_annotation.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "3": [ + [ + { + "id": "test", + "single_end": false + }, + "test.junction.bed:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "4": [ + [ + { + "id": "test", + "single_end": false + }, + "test.Interact.bed:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "5": [ + [ + { + "id": "test", + "single_end": false + }, + "test.junction.pdf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "6": [ + [ + { + "id": "test", + "single_end": false + }, + "test.events.pdf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "7": [ + "versions.yml:md5,091865c0ebd6de262c9b0968b5771091" + ], + "bed": [ + [ + { + "id": "test", + "single_end": false + }, + "test.junction.bed:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "events_pdf": [ + [ + { + "id": "test", + "single_end": false + }, + "test.events.pdf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "interact_bed": [ + [ + { + "id": "test", + "single_end": false + }, + "test.Interact.bed:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "log": [ + [ + { + "id": "test", + "single_end": false + }, + "test.junction_annotation.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "pdf": [ + [ + { + "id": "test", + "single_end": false + }, + "test.junction.pdf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "rscript": [ + [ + { + "id": "test", + "single_end": false + }, + "test.junction_plot.r:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,091865c0ebd6de262c9b0968b5771091" + ], + "xls": [ + [ + { + "id": "test", + "single_end": false + }, + "test.junction.xls:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-06-21T09:39:10.213511" } } \ No newline at end of file diff --git a/modules/nf-core/rseqc/junctionannotation/tests/tags.yml b/modules/nf-core/rseqc/junctionannotation/tests/tags.yml new file mode 100644 index 000000000..5f719fb8d --- /dev/null +++ b/modules/nf-core/rseqc/junctionannotation/tests/tags.yml @@ -0,0 +1,2 @@ +rseqc/junctionannotation: + - modules/nf-core/rseqc/junctionannotation/** diff --git a/modules/nf-core/rseqc/junctionsaturation/main.nf b/modules/nf-core/rseqc/junctionsaturation/main.nf index 1b10ab744..18f063f38 100644 --- a/modules/nf-core/rseqc/junctionsaturation/main.nf +++ b/modules/nf-core/rseqc/junctionsaturation/main.nf @@ -34,4 +34,16 @@ process RSEQC_JUNCTIONSATURATION { rseqc: \$(junction_saturation.py --version | sed -e "s/junction_saturation.py //g") END_VERSIONS """ + + stub: + def prefix = task.ext.prefix ?: "${meta.id}" + """ + touch ${prefix}.junctionSaturation_plot.pdf + touch ${prefix}.junctionSaturation_plot.r + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + rseqc: \$(junction_saturation.py --version | sed -e "s/junction_saturation.py //g") + END_VERSIONS + """ } diff --git a/modules/nf-core/rseqc/junctionsaturation/tests/main.nf.test b/modules/nf-core/rseqc/junctionsaturation/tests/main.nf.test index b8b4381b4..7bd3cfc20 100644 --- a/modules/nf-core/rseqc/junctionsaturation/tests/main.nf.test +++ b/modules/nf-core/rseqc/junctionsaturation/tests/main.nf.test @@ -4,6 +4,11 @@ nextflow_process { script "../main.nf" process "RSEQC_JUNCTIONSATURATION" + tag "modules" + tag "modules_nfcore" + tag "rseqc" + tag "rseqc/junctionsaturation" + test("sarscov2 paired-end [bam]") { when { @@ -27,4 +32,28 @@ nextflow_process { ) } } + + test("sarscov2 paired-end [bam] - stub") { + + options "-stub" + + 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) + ]) + input[1] = file(params.modules_testdata_base_path + "genomics/sarscov2/genome/bed/test.bed", checkIfExists: true) + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } } diff --git a/modules/nf-core/rseqc/junctionsaturation/tests/main.nf.test.snap b/modules/nf-core/rseqc/junctionsaturation/tests/main.nf.test.snap index 6d83eb5f2..8d702a4ef 100644 --- a/modules/nf-core/rseqc/junctionsaturation/tests/main.nf.test.snap +++ b/modules/nf-core/rseqc/junctionsaturation/tests/main.nf.test.snap @@ -38,5 +38,58 @@ "nextflow": "24.01.0" }, "timestamp": "2024-02-26T14:32:24.021984" + }, + "sarscov2 paired-end [bam] - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.junctionSaturation_plot.pdf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": false + }, + "test.junctionSaturation_plot.r:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + "versions.yml:md5,cd4638541a825dbd44e3cb65d2980aa1" + ], + "pdf": [ + [ + { + "id": "test", + "single_end": false + }, + "test.junctionSaturation_plot.pdf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "rscript": [ + [ + { + "id": "test", + "single_end": false + }, + "test.junctionSaturation_plot.r:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,cd4638541a825dbd44e3cb65d2980aa1" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-06-21T09:43:55.853893" } } \ No newline at end of file diff --git a/modules/nf-core/rseqc/junctionsaturation/tests/tags.yml b/modules/nf-core/rseqc/junctionsaturation/tests/tags.yml new file mode 100644 index 000000000..7022b59ad --- /dev/null +++ b/modules/nf-core/rseqc/junctionsaturation/tests/tags.yml @@ -0,0 +1,2 @@ +rseqc/junctionsaturation: + - modules/nf-core/rseqc/junctionsaturation/** diff --git a/modules/nf-core/rseqc/readdistribution/main.nf b/modules/nf-core/rseqc/readdistribution/main.nf index e0d8bfe9d..1d9406491 100644 --- a/modules/nf-core/rseqc/readdistribution/main.nf +++ b/modules/nf-core/rseqc/readdistribution/main.nf @@ -32,4 +32,15 @@ process RSEQC_READDISTRIBUTION { rseqc: \$(read_distribution.py --version | sed -e "s/read_distribution.py //g") END_VERSIONS """ + + stub: + def prefix = task.ext.prefix ?: "${meta.id}" + """ + touch ${prefix}.read_distribution.txt + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + rseqc: \$(read_distribution.py --version | sed -e "s/read_distribution.py //g") + END_VERSIONS + """ } diff --git a/modules/nf-core/rseqc/readdistribution/tests/main.nf.test b/modules/nf-core/rseqc/readdistribution/tests/main.nf.test index d479d9f12..5fa76950c 100644 --- a/modules/nf-core/rseqc/readdistribution/tests/main.nf.test +++ b/modules/nf-core/rseqc/readdistribution/tests/main.nf.test @@ -3,6 +3,10 @@ nextflow_process { name "Test Process RSEQC_READDISTRIBUTION" script "../main.nf" process "RSEQC_READDISTRIBUTION" + tag "modules" + tag "modules_nfcore" + tag "rseqc" + tag "rseqc/readdistribution" test("sarscov2 paired-end [bam]") { @@ -25,4 +29,28 @@ nextflow_process { ) } } + + test("sarscov2 paired-end [bam] - stub") { + + options "-stub" + + 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) + ]) + input[1] = Channel.of(file(params.modules_testdata_base_path + "genomics/sarscov2/genome/bed/test.bed12", checkIfExists: true)) + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } } diff --git a/modules/nf-core/rseqc/readdistribution/tests/main.nf.test.snap b/modules/nf-core/rseqc/readdistribution/tests/main.nf.test.snap index 7b3090567..02e5e6117 100644 --- a/modules/nf-core/rseqc/readdistribution/tests/main.nf.test.snap +++ b/modules/nf-core/rseqc/readdistribution/tests/main.nf.test.snap @@ -33,5 +33,40 @@ "nextflow": "24.01.0" }, "timestamp": "2024-02-26T15:38:36.441841" + }, + "sarscov2 paired-end [bam] - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.read_distribution.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + "versions.yml:md5,fc68a268ab32a0d72a66f270d6c7925e" + ], + "txt": [ + [ + { + "id": "test", + "single_end": false + }, + "test.read_distribution.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,fc68a268ab32a0d72a66f270d6c7925e" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-06-21T09:50:29.345905" } } \ No newline at end of file diff --git a/modules/nf-core/rseqc/readdistribution/tests/tags.yml b/modules/nf-core/rseqc/readdistribution/tests/tags.yml new file mode 100644 index 000000000..c0c477b6d --- /dev/null +++ b/modules/nf-core/rseqc/readdistribution/tests/tags.yml @@ -0,0 +1,2 @@ +rseqc/readdistribution: + - modules/nf-core/rseqc/readdistribution/** diff --git a/modules/nf-core/rseqc/readduplication/main.nf b/modules/nf-core/rseqc/readduplication/main.nf index 7dc68cf8e..354338021 100644 --- a/modules/nf-core/rseqc/readduplication/main.nf +++ b/modules/nf-core/rseqc/readduplication/main.nf @@ -34,4 +34,18 @@ process RSEQC_READDUPLICATION { rseqc: \$(read_duplication.py --version | sed -e "s/read_duplication.py //g") END_VERSIONS """ + + stub: + def prefix = task.ext.prefix ?: "${meta.id}" + """ + touch ${prefix}.seq.DupRate.xls + touch ${prefix}.pos.DupRate.xls + touch ${prefix}.DupRate_plot.pdf + touch ${prefix}.DupRate_plot.r + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + rseqc: \$(read_duplication.py --version | sed -e "s/read_duplication.py //g") + END_VERSIONS + """ } diff --git a/modules/nf-core/rseqc/readduplication/tests/main.nf.test b/modules/nf-core/rseqc/readduplication/tests/main.nf.test index 9c5675874..334a4e670 100644 --- a/modules/nf-core/rseqc/readduplication/tests/main.nf.test +++ b/modules/nf-core/rseqc/readduplication/tests/main.nf.test @@ -3,6 +3,10 @@ nextflow_process { name "Test Process RSEQC_READDUPLICATION" script "../main.nf" process "RSEQC_READDUPLICATION" + tag "modules" + tag "modules_nfcore" + tag "rseqc" + tag "rseqc/readduplication" test("sarscov2 paired-end [bam]") { @@ -28,4 +32,27 @@ nextflow_process { ) } } + + test("sarscov2 paired-end [bam] - stub") { + + options "-stub" + + 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 snapshot(process.out).match() } + ) + } + } } diff --git a/modules/nf-core/rseqc/readduplication/tests/main.nf.test.snap b/modules/nf-core/rseqc/readduplication/tests/main.nf.test.snap index 5ff9f0b8b..143a29dc6 100644 --- a/modules/nf-core/rseqc/readduplication/tests/main.nf.test.snap +++ b/modules/nf-core/rseqc/readduplication/tests/main.nf.test.snap @@ -74,5 +74,94 @@ "nextflow": "24.01.0" }, "timestamp": "2024-02-26T14:33:06.877127" + }, + "sarscov2 paired-end [bam] - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.seq.DupRate.xls:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": false + }, + "test.pos.DupRate.xls:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + [ + { + "id": "test", + "single_end": false + }, + "test.DupRate_plot.pdf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "3": [ + [ + { + "id": "test", + "single_end": false + }, + "test.DupRate_plot.r:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "4": [ + "versions.yml:md5,8a0721f3247f97135eadb8eecbe142a1" + ], + "pdf": [ + [ + { + "id": "test", + "single_end": false + }, + "test.DupRate_plot.pdf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "pos_xls": [ + [ + { + "id": "test", + "single_end": false + }, + "test.pos.DupRate.xls:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "rscript": [ + [ + { + "id": "test", + "single_end": false + }, + "test.DupRate_plot.r:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "seq_xls": [ + [ + { + "id": "test", + "single_end": false + }, + "test.seq.DupRate.xls:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,8a0721f3247f97135eadb8eecbe142a1" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-06-21T09:53:03.817194" } } \ No newline at end of file diff --git a/modules/nf-core/rseqc/readduplication/tests/tags.yml b/modules/nf-core/rseqc/readduplication/tests/tags.yml new file mode 100644 index 000000000..fce3d35d4 --- /dev/null +++ b/modules/nf-core/rseqc/readduplication/tests/tags.yml @@ -0,0 +1,2 @@ +rseqc/readduplication: + - modules/nf-core/rseqc/readduplication/** diff --git a/modules/nf-core/rseqc/tin/main.nf b/modules/nf-core/rseqc/tin/main.nf index 1faed91b8..397442f03 100644 --- a/modules/nf-core/rseqc/tin/main.nf +++ b/modules/nf-core/rseqc/tin/main.nf @@ -33,4 +33,16 @@ process RSEQC_TIN { rseqc: \$(tin.py --version | sed -e "s/tin.py //g") END_VERSIONS """ + + stub: + def prefix = task.ext.prefix ?: "${meta.id}" + """ + touch ${bam.fileName}.summary.txt + touch ${bam.fileName}.tin.xls + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + rseqc: \$(tin.py --version | sed -e "s/tin.py //g") + END_VERSIONS + """ } diff --git a/modules/nf-core/rseqc/tin/tests/main.nf.test b/modules/nf-core/rseqc/tin/tests/main.nf.test index 063d45674..b11eba80b 100644 --- a/modules/nf-core/rseqc/tin/tests/main.nf.test +++ b/modules/nf-core/rseqc/tin/tests/main.nf.test @@ -3,6 +3,10 @@ nextflow_process { name "Test Process RSEQC_TIN" script "../main.nf" process "RSEQC_TIN" + tag "modules" + tag "modules_nfcore" + tag "rseqc" + tag "rseqc/tin" test("sarscov2 paired-end [bam]") { @@ -26,4 +30,29 @@ nextflow_process { ) } } + + test("sarscov2 paired-end [bam] - stub") { + + options "-stub" + + 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), + file(params.modules_testdata_base_path + "genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam.bai", checkIfExists: true) + ]) + input[1] = Channel.of(file(params.modules_testdata_base_path + "genomics/sarscov2/genome/bed/test.bed12", checkIfExists: true)) + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } } diff --git a/modules/nf-core/rseqc/tin/tests/main.nf.test.snap b/modules/nf-core/rseqc/tin/tests/main.nf.test.snap index d8db28a48..caab3a091 100644 --- a/modules/nf-core/rseqc/tin/tests/main.nf.test.snap +++ b/modules/nf-core/rseqc/tin/tests/main.nf.test.snap @@ -51,5 +51,58 @@ "nextflow": "24.01.0" }, "timestamp": "2024-02-26T14:32:42.823857" + }, + "sarscov2 paired-end [bam] - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.paired_end.sorted.bam.summary.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": false + }, + "test.paired_end.sorted.bam.tin.xls:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + "versions.yml:md5,79670dedaa11a978951c16ead7f49c24" + ], + "txt": [ + [ + { + "id": "test", + "single_end": false + }, + "test.paired_end.sorted.bam.summary.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,79670dedaa11a978951c16ead7f49c24" + ], + "xls": [ + [ + { + "id": "test", + "single_end": false + }, + "test.paired_end.sorted.bam.tin.xls:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-06-21T09:55:57.905927" } } \ No newline at end of file diff --git a/modules/nf-core/rseqc/tin/tests/tags.yml b/modules/nf-core/rseqc/tin/tests/tags.yml new file mode 100644 index 000000000..741bbd0c0 --- /dev/null +++ b/modules/nf-core/rseqc/tin/tests/tags.yml @@ -0,0 +1,2 @@ +rseqc/tin: + - modules/nf-core/rseqc/tin/** diff --git a/modules/nf-core/subread/featurecounts/main.nf b/modules/nf-core/subread/featurecounts/main.nf index 209799622..471bd16fd 100644 --- a/modules/nf-core/subread/featurecounts/main.nf +++ b/modules/nf-core/subread/featurecounts/main.nf @@ -44,4 +44,16 @@ process SUBREAD_FEATURECOUNTS { subread: \$( echo \$(featureCounts -v 2>&1) | sed -e "s/featureCounts v//g") END_VERSIONS """ + + stub: + def prefix = task.ext.prefix ?: "${meta.id}" + """ + touch ${prefix}.featureCounts.txt + touch ${prefix}.featureCounts.txt.summary + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + subread: \$( echo \$(featureCounts -v 2>&1) | sed -e "s/featureCounts v//g") + END_VERSIONS + """ } diff --git a/modules/nf-core/subread/featurecounts/tests/main.nf.test b/modules/nf-core/subread/featurecounts/tests/main.nf.test index e8e0fa70e..3b95da33f 100644 --- a/modules/nf-core/subread/featurecounts/tests/main.nf.test +++ b/modules/nf-core/subread/featurecounts/tests/main.nf.test @@ -4,13 +4,17 @@ nextflow_process { script "../main.nf" process "SUBREAD_FEATURECOUNTS" config "./nextflow.config" + tag "modules" + tag "modules_nfcore" + tag "subread" + tag "subread/featurecounts" test("sarscov2 [bam] - forward") { when { process { """ - input[0] = [ + input[0] = [ [ id:'test', single_end:true, strandedness:'forward' ], // meta map file(params.modules_testdata_base_path + "genomics/sarscov2/illumina/bam/test.single_end.bam", checkIfExists: true), file(params.modules_testdata_base_path + "genomics/sarscov2/genome/genome.gtf", checkIfExists: true) @@ -29,12 +33,36 @@ nextflow_process { } } + test("sarscov2 [bam] - forward - stub") { + + options "-stub" + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:true, strandedness:'forward' ], // meta map + file(params.modules_testdata_base_path + "genomics/sarscov2/illumina/bam/test.single_end.bam", checkIfExists: true), + file(params.modules_testdata_base_path + "genomics/sarscov2/genome/genome.gtf", checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + test("sarscov2 [bam] - reverse") { when { process { """ - input[0] = [ + input[0] = [ [ id:'test', single_end:true, strandedness:'reverse' ], // meta map file(params.modules_testdata_base_path + "genomics/sarscov2/illumina/bam/test.single_end.bam", checkIfExists: true), file(params.modules_testdata_base_path + "genomics/sarscov2/genome/genome.gtf", checkIfExists: true) @@ -53,12 +81,36 @@ nextflow_process { } } + test("sarscov2 [bam] - reverse - stub") { + + options "-stub" + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:true, strandedness:'reverse' ], // meta map + file(params.modules_testdata_base_path + "genomics/sarscov2/illumina/bam/test.single_end.bam", checkIfExists: true), + file(params.modules_testdata_base_path + "genomics/sarscov2/genome/genome.gtf", checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + test("sarscov2 [bam] - unstranded") { when { process { """ - input[0] = [ + input[0] = [ [ id:'test', single_end:true, strandedness:'unstranded' ], // meta map file(params.modules_testdata_base_path + "genomics/sarscov2/illumina/bam/test.single_end.bam", checkIfExists: true), file(params.modules_testdata_base_path + "genomics/sarscov2/genome/genome.gtf", checkIfExists: true) @@ -76,4 +128,28 @@ nextflow_process { ) } } + + test("sarscov2 [bam] - unstranded - stub") { + + options "-stub" + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:true, strandedness:'unstranded' ], // meta map + file(params.modules_testdata_base_path + "genomics/sarscov2/illumina/bam/test.single_end.bam", checkIfExists: true), + file(params.modules_testdata_base_path + "genomics/sarscov2/genome/genome.gtf", checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } } diff --git a/modules/nf-core/subread/featurecounts/tests/main.nf.test.snap b/modules/nf-core/subread/featurecounts/tests/main.nf.test.snap index ad5524f65..72e8dcddf 100644 --- a/modules/nf-core/subread/featurecounts/tests/main.nf.test.snap +++ b/modules/nf-core/subread/featurecounts/tests/main.nf.test.snap @@ -12,6 +12,10 @@ ] ] ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, "timestamp": "2023-11-23T15:50:10.685863663" }, "unstranded_counts": { @@ -27,6 +31,10 @@ ] ] ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, "timestamp": "2023-11-23T15:50:38.67903701" }, "reverse_summary": { @@ -42,8 +50,126 @@ ] ] ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, "timestamp": "2023-11-23T15:50:25.168206514" }, + "sarscov2 [bam] - forward - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": true, + "strandedness": "forward" + }, + "test.featureCounts.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": true, + "strandedness": "forward" + }, + "test.featureCounts.txt.summary:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + "versions.yml:md5,c2c0903b93c93d9afd2667052b9ee726" + ], + "counts": [ + [ + { + "id": "test", + "single_end": true, + "strandedness": "forward" + }, + "test.featureCounts.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "summary": [ + [ + { + "id": "test", + "single_end": true, + "strandedness": "forward" + }, + "test.featureCounts.txt.summary:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,c2c0903b93c93d9afd2667052b9ee726" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-06-21T10:04:22.628032" + }, + "sarscov2 [bam] - reverse - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": true, + "strandedness": "reverse" + }, + "test.featureCounts.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": true, + "strandedness": "reverse" + }, + "test.featureCounts.txt.summary:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + "versions.yml:md5,c2c0903b93c93d9afd2667052b9ee726" + ], + "counts": [ + [ + { + "id": "test", + "single_end": true, + "strandedness": "reverse" + }, + "test.featureCounts.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "summary": [ + [ + { + "id": "test", + "single_end": true, + "strandedness": "reverse" + }, + "test.featureCounts.txt.summary:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,c2c0903b93c93d9afd2667052b9ee726" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-06-21T10:04:52.371212" + }, "reverse_counts": { "content": [ [ @@ -57,8 +183,69 @@ ] ] ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, "timestamp": "2023-11-23T15:50:25.160010804" }, + "sarscov2 [bam] - unstranded - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": true, + "strandedness": "unstranded" + }, + "test.featureCounts.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": true, + "strandedness": "unstranded" + }, + "test.featureCounts.txt.summary:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + "versions.yml:md5,c2c0903b93c93d9afd2667052b9ee726" + ], + "counts": [ + [ + { + "id": "test", + "single_end": true, + "strandedness": "unstranded" + }, + "test.featureCounts.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "summary": [ + [ + { + "id": "test", + "single_end": true, + "strandedness": "unstranded" + }, + "test.featureCounts.txt.summary:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,c2c0903b93c93d9afd2667052b9ee726" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-06-21T10:05:25.058902" + }, "forward_summary": { "content": [ [ @@ -72,6 +259,10 @@ ] ] ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, "timestamp": "2023-11-23T15:50:10.699024934" }, "forward_versions": { @@ -80,6 +271,10 @@ "versions.yml:md5,c2c0903b93c93d9afd2667052b9ee726" ] ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, "timestamp": "2023-11-23T15:50:10.704797013" }, "unstranded_summary": { @@ -95,6 +290,10 @@ ] ] ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, "timestamp": "2023-11-23T15:50:38.68776235" }, "reverse_versions": { @@ -103,6 +302,10 @@ "versions.yml:md5,c2c0903b93c93d9afd2667052b9ee726" ] ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, "timestamp": "2023-11-23T15:50:25.175265594" }, "unstranded_versions": { @@ -111,6 +314,10 @@ "versions.yml:md5,c2c0903b93c93d9afd2667052b9ee726" ] ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, "timestamp": "2023-11-23T15:50:38.69390501" } } \ No newline at end of file diff --git a/modules/nf-core/subread/featurecounts/tests/tags.yml b/modules/nf-core/subread/featurecounts/tests/tags.yml new file mode 100644 index 000000000..6d2534bf4 --- /dev/null +++ b/modules/nf-core/subread/featurecounts/tests/tags.yml @@ -0,0 +1,2 @@ +subread/featurecounts: + - modules/nf-core/subread/featurecounts/** diff --git a/modules/nf-core/trimgalore/main.nf b/modules/nf-core/trimgalore/main.nf index 24ead8714..0e2f32902 100644 --- a/modules/nf-core/trimgalore/main.nf +++ b/modules/nf-core/trimgalore/main.nf @@ -72,4 +72,25 @@ process TRIMGALORE { END_VERSIONS """ } + + stub: + def prefix = task.ext.prefix ?: "${meta.id}" + if (meta.single_end) { + output_command = "echo '' | gzip > ${prefix}_trimmed.fq.gz ;" + output_command += "touch ${prefix}.fastq.gz_trimming_report.txt" + } else { + output_command = "echo '' | gzip > ${prefix}_1_trimmed.fq.gz ;" + output_command += "touch ${prefix}_1.fastq.gz_trimming_report.txt ;" + output_command += "echo '' | gzip > ${prefix}_2_trimmed.fq.gz ;" + output_command += "touch ${prefix}_2.fastq.gz_trimming_report.txt" + } + """ + ${output_command} + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + trimgalore: \$(echo \$(trim_galore --version 2>&1) | sed 's/^.*version //; s/Last.*\$//') + cutadapt: \$(cutadapt --version) + END_VERSIONS + """ } diff --git a/modules/nf-core/trimgalore/tests/main.nf.test b/modules/nf-core/trimgalore/tests/main.nf.test index 93e30325a..2a3dbbb03 100644 --- a/modules/nf-core/trimgalore/tests/main.nf.test +++ b/modules/nf-core/trimgalore/tests/main.nf.test @@ -3,6 +3,9 @@ nextflow_process { name "Test Process TRIMGALORE" script "../main.nf" process "TRIMGALORE" + tag "modules" + tag "modules_nfcore" + tag "trimgalore" test("test_trimgalore_single_end") { @@ -41,6 +44,28 @@ nextflow_process { } } + test("test_trimgalore_single_end - stub") { + + options "-stub" + + when { + process { + """ + input[0] = [ [ id:'test', 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 snapshot(process.out).match() } + ) + } + } + test("test_trimgalore_paired_end") { when { @@ -97,4 +122,29 @@ nextflow_process { ) } } + + test("test_trimgalore_paired_end - stub") { + + options "-stub" + + when { + process { + """ + input[0] = [ [ 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 snapshot(process.out).match() } + ) + } + } } diff --git a/modules/nf-core/trimgalore/tests/main.nf.test.snap b/modules/nf-core/trimgalore/tests/main.nf.test.snap index 082c55004..6cb31c9f9 100644 --- a/modules/nf-core/trimgalore/tests/main.nf.test.snap +++ b/modules/nf-core/trimgalore/tests/main.nf.test.snap @@ -11,6 +11,160 @@ }, "timestamp": "2024-02-29T16:33:20.401347" }, + "test_trimgalore_single_end - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": true + }, + "test_trimmed.fq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": true + }, + "test.fastq.gz_trimming_report.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + + ], + "3": [ + + ], + "4": [ + + ], + "5": [ + "versions.yml:md5,47d966cbb31c80eb8f7fe860d55659b7" + ], + "html": [ + + ], + "log": [ + [ + { + "id": "test", + "single_end": true + }, + "test.fastq.gz_trimming_report.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "reads": [ + [ + { + "id": "test", + "single_end": true + }, + "test_trimmed.fq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "unpaired": [ + + ], + "versions": [ + "versions.yml:md5,47d966cbb31c80eb8f7fe860d55659b7" + ], + "zip": [ + + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-06-21T10:27:44.964166" + }, + "test_trimgalore_paired_end - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test_1_trimmed.fq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "test_2_trimmed.fq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test_1.fastq.gz_trimming_report.txt:md5,d41d8cd98f00b204e9800998ecf8427e", + "test_2.fastq.gz_trimming_report.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "2": [ + + ], + "3": [ + + ], + "4": [ + + ], + "5": [ + "versions.yml:md5,47d966cbb31c80eb8f7fe860d55659b7" + ], + "html": [ + + ], + "log": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test_1.fastq.gz_trimming_report.txt:md5,d41d8cd98f00b204e9800998ecf8427e", + "test_2.fastq.gz_trimming_report.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "reads": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test_1_trimmed.fq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "test_2_trimmed.fq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ] + ], + "unpaired": [ + + ], + "versions": [ + "versions.yml:md5,47d966cbb31c80eb8f7fe860d55659b7" + ], + "zip": [ + + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-06-21T10:28:07.611496" + }, "test_trimgalore_paired_end": { "content": [ [ diff --git a/modules/nf-core/trimgalore/tests/tags.yml b/modules/nf-core/trimgalore/tests/tags.yml new file mode 100644 index 000000000..e9937691a --- /dev/null +++ b/modules/nf-core/trimgalore/tests/tags.yml @@ -0,0 +1,2 @@ +trimgalore: + - modules/nf-core/trimgalore/** diff --git a/modules/nf-core/ucsc/bedclip/main.nf b/modules/nf-core/ucsc/bedclip/main.nf index 28c85ad0e..d3e09dc11 100755 --- a/modules/nf-core/ucsc/bedclip/main.nf +++ b/modules/nf-core/ucsc/bedclip/main.nf @@ -34,4 +34,16 @@ process UCSC_BEDCLIP { ucsc: $VERSION END_VERSIONS """ + + stub: + def prefix = task.ext.prefix ?: "${meta.id}" + def VERSION = '377' // WARN: Version information not provided by tool on CLI. Please update this string when bumping container versions. + """ + touch ${prefix}.bedGraph + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + ucsc: $VERSION + END_VERSIONS + """ } diff --git a/modules/nf-core/ucsc/bedclip/tests/main.nf.test b/modules/nf-core/ucsc/bedclip/tests/main.nf.test index f4fa61b5e..03458051c 100644 --- a/modules/nf-core/ucsc/bedclip/tests/main.nf.test +++ b/modules/nf-core/ucsc/bedclip/tests/main.nf.test @@ -3,6 +3,10 @@ nextflow_process { name "Test Process UCSC_BEDCLIP" script "../main.nf" process "UCSC_BEDCLIP" + tag "modules" + tag "modules_nfcore" + tag "ucsc" + tag "ucsc/bedclip" test("sarscov2") { config "./nextflow.config" @@ -26,4 +30,28 @@ nextflow_process { ) } } + + test("sarscov2 - stub") { + config "./nextflow.config" + options "-stub" + + when { + process { + """ + input[0] = Channel.of([ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + "genomics/sarscov2/illumina/bedgraph/test.bedgraph", checkIfExists: true) + ]) + input[1] = Channel.of(file(params.modules_testdata_base_path + "genomics/sarscov2/genome/genome.sizes", checkIfExists: true)) + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } } \ No newline at end of file diff --git a/modules/nf-core/ucsc/bedclip/tests/main.nf.test.snap b/modules/nf-core/ucsc/bedclip/tests/main.nf.test.snap index 2f41b6a8d..77e893808 100644 --- a/modules/nf-core/ucsc/bedclip/tests/main.nf.test.snap +++ b/modules/nf-core/ucsc/bedclip/tests/main.nf.test.snap @@ -1,4 +1,39 @@ { + "sarscov2 - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.clip.bedGraph:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + "versions.yml:md5,b92248ce2a138ad4d146ac0d9e71fb34" + ], + "bedgraph": [ + [ + { + "id": "test", + "single_end": false + }, + "test.clip.bedGraph:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,b92248ce2a138ad4d146ac0d9e71fb34" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-06-21T10:31:42.86304" + }, "sarscov2": { "content": [ { diff --git a/modules/nf-core/ucsc/bedclip/tests/tags.yml b/modules/nf-core/ucsc/bedclip/tests/tags.yml new file mode 100644 index 000000000..0fcc90e32 --- /dev/null +++ b/modules/nf-core/ucsc/bedclip/tests/tags.yml @@ -0,0 +1,2 @@ +ucsc/bedclip: + - modules/nf-core/ucsc/bedclip/** diff --git a/modules/nf-core/umitools/extract/main.nf b/modules/nf-core/umitools/extract/main.nf index 8719e5f67..b97900e09 100644 --- a/modules/nf-core/umitools/extract/main.nf +++ b/modules/nf-core/umitools/extract/main.nf @@ -53,4 +53,22 @@ process UMITOOLS_EXTRACT { END_VERSIONS """ } + + stub: + def prefix = task.ext.prefix ?: "${meta.id}" + if (meta.single_end) { + output_command = "echo '' | gzip > ${prefix}.umi_extract.fastq.gz" + } else { + output_command = "echo '' | gzip > ${prefix}.umi_extract_1.fastq.gz ;" + output_command += "echo '' | gzip > ${prefix}.umi_extract_2.fastq.gz" + } + """ + touch ${prefix}.umi_extract.log + ${output_command} + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + umitools: \$( umi_tools --version | sed '/version:/!d; s/.*: //' ) + END_VERSIONS + """ } diff --git a/modules/nf-core/umitools/extract/tests/main.nf.test b/modules/nf-core/umitools/extract/tests/main.nf.test index 4d9a01567..bb8a06582 100644 --- a/modules/nf-core/umitools/extract/tests/main.nf.test +++ b/modules/nf-core/umitools/extract/tests/main.nf.test @@ -4,8 +4,12 @@ nextflow_process { script "../main.nf" process "UMITOOLS_EXTRACT" config "./nextflow.config" + tag "modules_nfcore" + tag "modules" + tag "umitools" + tag "umitools/extract" - test("Should run without failures") { + test("single end") { when { process { @@ -20,7 +24,82 @@ nextflow_process { then { assertAll ( { assert process.success }, - { assert snapshot(process.out.versions).match("versions") } + { assert snapshot( + process.out.reads.collect { it.collect { it instanceof Map ? it : file(it).name }}, + process.out.log.collect { it.collect { it instanceof Map ? it : file(it).name }}, + process.out.versions + ).match() } + ) + } + } + + test("single end - stub") { + + options "-stub" + + when { + process { + """ + input[0] = [ [ id:'test', 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 snapshot(process.out).match() } + ) + } + } + + test("pair end") { + + when { + process { + """ + input[0] = [ [ 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 snapshot( + file(process.out.reads[0][1][0]).name, + file(process.out.reads[0][1][1]).name, + process.out.log.collect { it.collect { it instanceof Map ? it : file(it).name }}, + process.out.versions + ).match() } + ) + } + } + + test("pair end - stub") { + + options "-stub" + + when { + process { + """ + input[0] = [ [ 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 snapshot(process.out).match() } ) } } diff --git a/modules/nf-core/umitools/extract/tests/main.nf.test.snap b/modules/nf-core/umitools/extract/tests/main.nf.test.snap index bf82701dd..b1159054b 100644 --- a/modules/nf-core/umitools/extract/tests/main.nf.test.snap +++ b/modules/nf-core/umitools/extract/tests/main.nf.test.snap @@ -1,14 +1,167 @@ { - "versions": { + "pair end - stub": { "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test.umi_extract_1.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "test.umi_extract_2.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": false + }, + "test.umi_extract.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + "versions.yml:md5,568d243174c081a0301e74ed42e59b48" + ], + "log": [ + [ + { + "id": "test", + "single_end": false + }, + "test.umi_extract.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "reads": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test.umi_extract_1.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "test.umi_extract_2.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ] + ], + "versions": [ + "versions.yml:md5,568d243174c081a0301e74ed42e59b48" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-02T15:05:20.008312" + }, + "single end - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": true + }, + "test.umi_extract.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": true + }, + "test.umi_extract.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + "versions.yml:md5,568d243174c081a0301e74ed42e59b48" + ], + "log": [ + [ + { + "id": "test", + "single_end": true + }, + "test.umi_extract.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "reads": [ + [ + { + "id": "test", + "single_end": true + }, + "test.umi_extract.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "versions": [ + "versions.yml:md5,568d243174c081a0301e74ed42e59b48" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-02T15:04:12.145999" + }, + "pair end": { + "content": [ + "test.umi_extract_1.fastq.gz", + "test.umi_extract_2.fastq.gz", + [ + [ + { + "id": "test", + "single_end": false + }, + "test.umi_extract.log" + ] + ], + [ + "versions.yml:md5,568d243174c081a0301e74ed42e59b48" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-02T15:21:09.578031" + }, + "single end": { + "content": [ + [ + [ + { + "id": "test", + "single_end": true + }, + "test.umi_extract.fastq.gz" + ] + ], + [ + [ + { + "id": "test", + "single_end": true + }, + "test.umi_extract.log" + ] + ], [ "versions.yml:md5,568d243174c081a0301e74ed42e59b48" ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.2" }, - "timestamp": "2024-02-16T10:01:33.326046137" + "timestamp": "2024-07-02T15:03:52.464606" } } \ No newline at end of file diff --git a/modules/nf-core/umitools/extract/tests/tags.yml b/modules/nf-core/umitools/extract/tests/tags.yml new file mode 100644 index 000000000..c3fb23de4 --- /dev/null +++ b/modules/nf-core/umitools/extract/tests/tags.yml @@ -0,0 +1,2 @@ +umitools/extract: + - modules/nf-core/umitools/extract/** diff --git a/subworkflows/nf-core/fastq_fastqc_umitools_fastp/main.nf b/subworkflows/nf-core/fastq_fastqc_umitools_fastp/main.nf index c472d7116..ab6cbb320 100644 --- a/subworkflows/nf-core/fastq_fastqc_umitools_fastp/main.nf +++ b/subworkflows/nf-core/fastq_fastqc_umitools_fastp/main.nf @@ -12,12 +12,18 @@ include { FASTP } from '../../../modules/nf-core/fastp/main' // import groovy.json.JsonSlurper -def getFastpReadsAfterFiltering(json_file) { +def getFastpReadsAfterFiltering(json_file, min_num_reads) { + + if ( workflow.stubRun ) { return min_num_reads } + def Map json = (Map) new JsonSlurper().parseText(json_file.text).get('summary') return json['after_filtering']['total_reads'].toLong() } def getFastpAdapterSequence(json_file){ + + if ( workflow.stubRun ) { return "" } + def Map json = (Map) new JsonSlurper().parseText(json_file.text) try{ adapter = json['adapter_cutting']['read1_adapter_sequence'] @@ -109,7 +115,7 @@ workflow FASTQ_FASTQC_UMITOOLS_FASTP { .out .reads .join(trim_json) - .map { meta, reads, json -> [ meta, reads, getFastpReadsAfterFiltering(json) ] } + .map { meta, reads, json -> [ meta, reads, getFastpReadsAfterFiltering(json, min_trimmed_reads.toLong()) ] } .set { ch_num_trimmed_reads } ch_num_trimmed_reads diff --git a/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/main.nf.test b/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/main.nf.test index 165dc7675..70fa16419 100644 --- a/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/main.nf.test +++ b/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/main.nf.test @@ -5,6 +5,15 @@ nextflow_workflow { workflow "FASTQ_FASTQC_UMITOOLS_FASTP" config './nextflow.config' + tag "subworkflows" + tag "subworkflows_nfcore" + tag "subworkflows/fastq_fastqc_umitools_fastp" + tag "fastq_fastqc_umitools_fastp" + tag "fastqc" + tag "umitools/extract" + tag "fastp" + + test("sarscov2 paired-end [fastq]") { when { @@ -550,4 +559,49 @@ nextflow_workflow { ) } } + + test("sarscov2 paired-end [fastq] - stub") { + + options '-stub' + + when { + workflow { + """ + skip_fastqc = false + with_umi = false + skip_umi_extract = false + umi_discard_read = 1 + skip_trimming = false + adapter_fasta = [] + save_trimmed_fail = false + save_merged = false + min_trimmed_reads = 1 + + 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) + ] + ]) + input[1] = skip_fastqc + input[2] = with_umi + input[3] = skip_umi_extract + input[4] = umi_discard_read + input[5] = skip_trimming + input[6] = adapter_fasta + input[7] = save_trimmed_fail + input[8] = save_merged + input[9] = min_trimmed_reads + """ + } + } + + then { + assertAll( + { assert workflow.success }, + { assert snapshot(workflow.out).match() } + ) + } + } } diff --git a/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/main.nf.test.snap b/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/main.nf.test.snap index 4a6689f67..b591fab90 100644 --- a/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/main.nf.test.snap +++ b/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/main.nf.test.snap @@ -545,5 +545,230 @@ "nextflow": "24.04.2" }, "timestamp": "2024-06-10T15:08:32.267769943" + }, + "sarscov2 paired-end [fastq] - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test_1.fastp.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "test_2.fastp.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": false + }, + "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "10": [ + [ + { + "id": "test", + "single_end": false + }, + 1 + ] + ], + "11": [ + [ + { + "id": "test", + "single_end": false + }, + "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "12": [ + [ + { + "id": "test", + "single_end": false + }, + "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "13": [ + "versions.yml:md5,85bd0117e5778fff18e3920972a296ad", + "versions.yml:md5,c50aa59475ab901bc6f9a2cf7b1a14e0", + "versions.yml:md5,f3dcaae948e8eed92b4a5557b4c6668e" + ], + "2": [ + [ + { + "id": "test", + "single_end": false + }, + "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "3": [ + + ], + "4": [ + [ + { + "id": "test", + "single_end": false + }, + "" + ] + ], + "5": [ + [ + { + "id": "test", + "single_end": false + }, + "test.fastp.json:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "6": [ + [ + { + "id": "test", + "single_end": false + }, + "test.fastp.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "7": [ + [ + { + "id": "test", + "single_end": false + }, + "test.fastp.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "8": [ + + ], + "9": [ + + ], + "adapter_seq": [ + [ + { + "id": "test", + "single_end": false + }, + "" + ] + ], + "fastqc_raw_html": [ + [ + { + "id": "test", + "single_end": false + }, + "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "fastqc_raw_zip": [ + [ + { + "id": "test", + "single_end": false + }, + "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "fastqc_trim_html": [ + [ + { + "id": "test", + "single_end": false + }, + "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "fastqc_trim_zip": [ + [ + { + "id": "test", + "single_end": false + }, + "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "reads": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test_1.fastp.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "test_2.fastp.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ] + ], + "trim_html": [ + [ + { + "id": "test", + "single_end": false + }, + "test.fastp.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "trim_json": [ + [ + { + "id": "test", + "single_end": false + }, + "test.fastp.json:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "trim_log": [ + [ + { + "id": "test", + "single_end": false + }, + "test.fastp.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "trim_read_count": [ + [ + { + "id": "test", + "single_end": false + }, + 1 + ] + ], + "trim_reads_fail": [ + + ], + "trim_reads_merged": [ + + ], + "umi_log": [ + + ], + "versions": [ + "versions.yml:md5,85bd0117e5778fff18e3920972a296ad", + "versions.yml:md5,c50aa59475ab901bc6f9a2cf7b1a14e0", + "versions.yml:md5,f3dcaae948e8eed92b4a5557b4c6668e" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-06-21T14:46:58.329605" } } \ No newline at end of file diff --git a/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/tags.yml b/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/tags.yml new file mode 100644 index 000000000..84a4b5676 --- /dev/null +++ b/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/tags.yml @@ -0,0 +1,2 @@ +subworkflows/fastq_fastqc_umitools_fastp: + - subworkflows/nf-core/fastq_fastqc_umitools_fastp/** From b796fc0304558a0b40fbeb3df95272c6271c7453 Mon Sep 17 00:00:00 2001 From: maxulysse Date: Tue, 2 Jul 2024 19:11:27 +0200 Subject: [PATCH 426/634] update all subworkflows --- modules.json | 2 +- subworkflows/nf-core/fastq_align_hisat2/main.nf | 1 - .../nf-core/fastq_align_hisat2/tests/main.nf.test | 15 +++++++++++++++ .../nf-core/fastq_align_hisat2/tests/tags.yml | 2 ++ 4 files changed, 18 insertions(+), 2 deletions(-) create mode 100644 subworkflows/nf-core/fastq_align_hisat2/tests/tags.yml diff --git a/modules.json b/modules.json index 4b9c3c539..506e788c2 100644 --- a/modules.json +++ b/modules.json @@ -310,7 +310,7 @@ }, "fastq_align_hisat2": { "branch": "master", - "git_sha": "2c6b1144ed58b6184ad58fc4e6b6a90219b4bf4f", + "git_sha": "c60c14b285b89bdd0607e371417dadb80385ad6e", "installed_by": ["subworkflows"] }, "fastq_fastqc_umitools_fastp": { diff --git a/subworkflows/nf-core/fastq_align_hisat2/main.nf b/subworkflows/nf-core/fastq_align_hisat2/main.nf index a2ec1cf5e..511fe035c 100644 --- a/subworkflows/nf-core/fastq_align_hisat2/main.nf +++ b/subworkflows/nf-core/fastq_align_hisat2/main.nf @@ -41,4 +41,3 @@ workflow FASTQ_ALIGN_HISAT2 { versions = ch_versions // channel: [ versions.yml ] } - diff --git a/subworkflows/nf-core/fastq_align_hisat2/tests/main.nf.test b/subworkflows/nf-core/fastq_align_hisat2/tests/main.nf.test index 884d130a2..b0c0ca512 100644 --- a/subworkflows/nf-core/fastq_align_hisat2/tests/main.nf.test +++ b/subworkflows/nf-core/fastq_align_hisat2/tests/main.nf.test @@ -5,6 +5,21 @@ nextflow_workflow { workflow "FASTQ_ALIGN_HISAT2" config "./nextflow.config" + tag "subworkflows" + tag "subworkflows_nfcore" + tag "subworkflows/fastq_align_hisat2" + + tag "hisat2/align" + tag "hisat2/build" + tag "hisat2/extractsplicesites" + + tag "samtools/flagstat" + tag "samtools/idxstats" + tag "samtools/index" + tag "samtools/sort" + tag "samtools/stats" + tag "subworkflows/bam_sort_stats_samtools" + setup { run("HISAT2_EXTRACTSPLICESITES") { script "../../../../modules/nf-core/hisat2/extractsplicesites/main.nf" diff --git a/subworkflows/nf-core/fastq_align_hisat2/tests/tags.yml b/subworkflows/nf-core/fastq_align_hisat2/tests/tags.yml new file mode 100644 index 000000000..8993cde0c --- /dev/null +++ b/subworkflows/nf-core/fastq_align_hisat2/tests/tags.yml @@ -0,0 +1,2 @@ +subworkflows/fastq_align_hisat2: + - subworkflows/nf-core/fastq_align_hisat2/** From ad73fc3c9d7aa6bf3dd9adf078f4962146adf901 Mon Sep 17 00:00:00 2001 From: maxulysse Date: Wed, 3 Jul 2024 09:35:09 +0200 Subject: [PATCH 427/634] no more tags.yml --- modules/nf-core/rsem/calculateexpression/tests/tags.yml | 2 -- modules/nf-core/rsem/preparereference/tests/tags.yml | 2 -- modules/nf-core/rseqc/bamstat/tests/tags.yml | 2 -- modules/nf-core/rseqc/inferexperiment/tests/tags.yml | 2 -- modules/nf-core/rseqc/innerdistance/tests/tags.yml | 2 -- modules/nf-core/rseqc/junctionannotation/tests/tags.yml | 2 -- modules/nf-core/rseqc/junctionsaturation/tests/tags.yml | 2 -- modules/nf-core/rseqc/readdistribution/tests/tags.yml | 2 -- modules/nf-core/rseqc/readduplication/tests/tags.yml | 2 -- modules/nf-core/rseqc/tin/tests/tags.yml | 2 -- modules/nf-core/subread/featurecounts/tests/tags.yml | 2 -- modules/nf-core/trimgalore/tests/tags.yml | 2 -- modules/nf-core/ucsc/bedclip/tests/tags.yml | 2 -- modules/nf-core/umitools/extract/tests/tags.yml | 2 -- 14 files changed, 28 deletions(-) delete mode 100644 modules/nf-core/rsem/calculateexpression/tests/tags.yml delete mode 100644 modules/nf-core/rsem/preparereference/tests/tags.yml delete mode 100644 modules/nf-core/rseqc/bamstat/tests/tags.yml delete mode 100644 modules/nf-core/rseqc/inferexperiment/tests/tags.yml delete mode 100644 modules/nf-core/rseqc/innerdistance/tests/tags.yml delete mode 100644 modules/nf-core/rseqc/junctionannotation/tests/tags.yml delete mode 100644 modules/nf-core/rseqc/junctionsaturation/tests/tags.yml delete mode 100644 modules/nf-core/rseqc/readdistribution/tests/tags.yml delete mode 100644 modules/nf-core/rseqc/readduplication/tests/tags.yml delete mode 100644 modules/nf-core/rseqc/tin/tests/tags.yml delete mode 100644 modules/nf-core/subread/featurecounts/tests/tags.yml delete mode 100644 modules/nf-core/trimgalore/tests/tags.yml delete mode 100644 modules/nf-core/ucsc/bedclip/tests/tags.yml delete mode 100644 modules/nf-core/umitools/extract/tests/tags.yml diff --git a/modules/nf-core/rsem/calculateexpression/tests/tags.yml b/modules/nf-core/rsem/calculateexpression/tests/tags.yml deleted file mode 100644 index 654756aa5..000000000 --- a/modules/nf-core/rsem/calculateexpression/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -rsem/calculateexpression: - - modules/nf-core/rsem/calculateexpression/** diff --git a/modules/nf-core/rsem/preparereference/tests/tags.yml b/modules/nf-core/rsem/preparereference/tests/tags.yml deleted file mode 100644 index 112904564..000000000 --- a/modules/nf-core/rsem/preparereference/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -rsem/preparereference: - - modules/nf-core/rsem/preparereference/** diff --git a/modules/nf-core/rseqc/bamstat/tests/tags.yml b/modules/nf-core/rseqc/bamstat/tests/tags.yml deleted file mode 100644 index ed9a41fa9..000000000 --- a/modules/nf-core/rseqc/bamstat/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -rseqc/bamstat: - - modules/nf-core/rseqc/bamstat/** diff --git a/modules/nf-core/rseqc/inferexperiment/tests/tags.yml b/modules/nf-core/rseqc/inferexperiment/tests/tags.yml deleted file mode 100644 index f9ba7e26a..000000000 --- a/modules/nf-core/rseqc/inferexperiment/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -rseqc/inferexperiment: - - modules/nf-core/rseqc/inferexperiment/** diff --git a/modules/nf-core/rseqc/innerdistance/tests/tags.yml b/modules/nf-core/rseqc/innerdistance/tests/tags.yml deleted file mode 100644 index 4a9d0acf9..000000000 --- a/modules/nf-core/rseqc/innerdistance/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -rseqc/innerdistance: - - modules/nf-core/rseqc/innerdistance/** diff --git a/modules/nf-core/rseqc/junctionannotation/tests/tags.yml b/modules/nf-core/rseqc/junctionannotation/tests/tags.yml deleted file mode 100644 index 5f719fb8d..000000000 --- a/modules/nf-core/rseqc/junctionannotation/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -rseqc/junctionannotation: - - modules/nf-core/rseqc/junctionannotation/** diff --git a/modules/nf-core/rseqc/junctionsaturation/tests/tags.yml b/modules/nf-core/rseqc/junctionsaturation/tests/tags.yml deleted file mode 100644 index 7022b59ad..000000000 --- a/modules/nf-core/rseqc/junctionsaturation/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -rseqc/junctionsaturation: - - modules/nf-core/rseqc/junctionsaturation/** diff --git a/modules/nf-core/rseqc/readdistribution/tests/tags.yml b/modules/nf-core/rseqc/readdistribution/tests/tags.yml deleted file mode 100644 index c0c477b6d..000000000 --- a/modules/nf-core/rseqc/readdistribution/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -rseqc/readdistribution: - - modules/nf-core/rseqc/readdistribution/** diff --git a/modules/nf-core/rseqc/readduplication/tests/tags.yml b/modules/nf-core/rseqc/readduplication/tests/tags.yml deleted file mode 100644 index fce3d35d4..000000000 --- a/modules/nf-core/rseqc/readduplication/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -rseqc/readduplication: - - modules/nf-core/rseqc/readduplication/** diff --git a/modules/nf-core/rseqc/tin/tests/tags.yml b/modules/nf-core/rseqc/tin/tests/tags.yml deleted file mode 100644 index 741bbd0c0..000000000 --- a/modules/nf-core/rseqc/tin/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -rseqc/tin: - - modules/nf-core/rseqc/tin/** diff --git a/modules/nf-core/subread/featurecounts/tests/tags.yml b/modules/nf-core/subread/featurecounts/tests/tags.yml deleted file mode 100644 index 6d2534bf4..000000000 --- a/modules/nf-core/subread/featurecounts/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -subread/featurecounts: - - modules/nf-core/subread/featurecounts/** diff --git a/modules/nf-core/trimgalore/tests/tags.yml b/modules/nf-core/trimgalore/tests/tags.yml deleted file mode 100644 index e9937691a..000000000 --- a/modules/nf-core/trimgalore/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -trimgalore: - - modules/nf-core/trimgalore/** diff --git a/modules/nf-core/ucsc/bedclip/tests/tags.yml b/modules/nf-core/ucsc/bedclip/tests/tags.yml deleted file mode 100644 index 0fcc90e32..000000000 --- a/modules/nf-core/ucsc/bedclip/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -ucsc/bedclip: - - modules/nf-core/ucsc/bedclip/** diff --git a/modules/nf-core/umitools/extract/tests/tags.yml b/modules/nf-core/umitools/extract/tests/tags.yml deleted file mode 100644 index c3fb23de4..000000000 --- a/modules/nf-core/umitools/extract/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -umitools/extract: - - modules/nf-core/umitools/extract/** From 9f984893bfb83b5904773e308ed881b1374737ba Mon Sep 17 00:00:00 2001 From: maxulysse Date: Wed, 3 Jul 2024 09:35:24 +0200 Subject: [PATCH 428/634] no more tags.yml --- subworkflows/nf-core/fastq_align_hisat2/tests/tags.yml | 2 -- subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/tags.yml | 2 -- 2 files changed, 4 deletions(-) delete mode 100644 subworkflows/nf-core/fastq_align_hisat2/tests/tags.yml delete mode 100644 subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/tags.yml diff --git a/subworkflows/nf-core/fastq_align_hisat2/tests/tags.yml b/subworkflows/nf-core/fastq_align_hisat2/tests/tags.yml deleted file mode 100644 index 8993cde0c..000000000 --- a/subworkflows/nf-core/fastq_align_hisat2/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -subworkflows/fastq_align_hisat2: - - subworkflows/nf-core/fastq_align_hisat2/** diff --git a/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/tags.yml b/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/tags.yml deleted file mode 100644 index 84a4b5676..000000000 --- a/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -subworkflows/fastq_fastqc_umitools_fastp: - - subworkflows/nf-core/fastq_fastqc_umitools_fastp/** From bdb6e31c6d8c7403bd305916e426a57777337d17 Mon Sep 17 00:00:00 2001 From: maxulysse Date: Wed, 3 Jul 2024 09:51:45 +0200 Subject: [PATCH 429/634] remove tag within tests --- .../rsem/calculateexpression/tests/main.nf.test | 5 ----- .../rsem/preparereference/tests/main.nf.test | 4 ---- modules/nf-core/rseqc/bamstat/tests/main.nf.test | 6 ------ .../rseqc/inferexperiment/tests/main.nf.test | 5 ----- .../rseqc/innerdistance/tests/main.nf.test | 5 ----- .../rseqc/junctionannotation/tests/main.nf.test | 5 ----- .../rseqc/junctionsaturation/tests/main.nf.test | 5 ----- .../rseqc/readdistribution/tests/main.nf.test | 4 ---- .../rseqc/readduplication/tests/main.nf.test | 4 ---- modules/nf-core/rseqc/tin/tests/main.nf.test | 4 ---- .../subread/featurecounts/tests/main.nf.test | 4 ---- modules/nf-core/trimgalore/tests/main.nf.test | 3 --- modules/nf-core/ucsc/bedclip/tests/main.nf.test | 4 ---- .../nf-core/umitools/extract/tests/main.nf.test | 4 ---- .../nf-core/fastq_align_hisat2/tests/main.nf.test | 15 --------------- .../tests/main.nf.test | 9 --------- 16 files changed, 86 deletions(-) diff --git a/modules/nf-core/rsem/calculateexpression/tests/main.nf.test b/modules/nf-core/rsem/calculateexpression/tests/main.nf.test index 5df41c0b8..7af876dd8 100644 --- a/modules/nf-core/rsem/calculateexpression/tests/main.nf.test +++ b/modules/nf-core/rsem/calculateexpression/tests/main.nf.test @@ -4,11 +4,6 @@ nextflow_process { script "../main.nf" process "RSEM_CALCULATEEXPRESSION" config "./nextflow.config" - tag "modules" - tag "modules_nfcore" - tag "rsem" - tag "rsem/calculateexpression" - tag "rsem/preparereference" test("homo_sapiens") { diff --git a/modules/nf-core/rsem/preparereference/tests/main.nf.test b/modules/nf-core/rsem/preparereference/tests/main.nf.test index 9f618ad4c..210e03e87 100644 --- a/modules/nf-core/rsem/preparereference/tests/main.nf.test +++ b/modules/nf-core/rsem/preparereference/tests/main.nf.test @@ -3,10 +3,6 @@ nextflow_process { name "Test Process RSEM_PREPAREREFERENCE" script "../main.nf" process "RSEM_PREPAREREFERENCE" - tag "modules" - tag "modules_nfcore" - tag "rsem" - tag "rsem/preparereference" test("homo_sapiens") { diff --git a/modules/nf-core/rseqc/bamstat/tests/main.nf.test b/modules/nf-core/rseqc/bamstat/tests/main.nf.test index 86f4301e9..fd6fc0811 100644 --- a/modules/nf-core/rseqc/bamstat/tests/main.nf.test +++ b/modules/nf-core/rseqc/bamstat/tests/main.nf.test @@ -3,12 +3,6 @@ nextflow_process { name "Test Process RSEQC_BAMSTAT" script "../main.nf" process "RSEQC_BAMSTAT" - - tag "modules" - tag "modules_nfcore" - tag "rseqc" - tag "rseqc/bamstat" - config "./nextflow.config" test("sarscov2 - [meta] - bam") { diff --git a/modules/nf-core/rseqc/inferexperiment/tests/main.nf.test b/modules/nf-core/rseqc/inferexperiment/tests/main.nf.test index f07384442..375f65357 100644 --- a/modules/nf-core/rseqc/inferexperiment/tests/main.nf.test +++ b/modules/nf-core/rseqc/inferexperiment/tests/main.nf.test @@ -5,11 +5,6 @@ nextflow_process { process "RSEQC_INFEREXPERIMENT" config "./nextflow.config" - tag "modules" - tag "modules_nfcore" - tag "rseqc" - tag "rseqc/inferexperiment" - test("sarscov2 - [[meta] - bam] - bed") { when { diff --git a/modules/nf-core/rseqc/innerdistance/tests/main.nf.test b/modules/nf-core/rseqc/innerdistance/tests/main.nf.test index cb19fe144..e54036f8a 100644 --- a/modules/nf-core/rseqc/innerdistance/tests/main.nf.test +++ b/modules/nf-core/rseqc/innerdistance/tests/main.nf.test @@ -5,11 +5,6 @@ nextflow_process { process "RSEQC_INNERDISTANCE" config "./nextflow.config" - tag "modules" - tag "modules_nfcore" - tag "rseqc" - tag "rseqc/innerdistance" - test("sarscov2 - [[meta] - bam] - bed") { when { diff --git a/modules/nf-core/rseqc/junctionannotation/tests/main.nf.test b/modules/nf-core/rseqc/junctionannotation/tests/main.nf.test index 36d5f6e23..8a05bccab 100644 --- a/modules/nf-core/rseqc/junctionannotation/tests/main.nf.test +++ b/modules/nf-core/rseqc/junctionannotation/tests/main.nf.test @@ -4,11 +4,6 @@ nextflow_process { script "../main.nf" process "RSEQC_JUNCTIONANNOTATION" - tag "modules" - tag "modules_nfcore" - tag "rseqc" - tag "rseqc/junctionannotation" - test("sarscov2 - paired end [bam]") { when { diff --git a/modules/nf-core/rseqc/junctionsaturation/tests/main.nf.test b/modules/nf-core/rseqc/junctionsaturation/tests/main.nf.test index 7bd3cfc20..69d7f0c5d 100644 --- a/modules/nf-core/rseqc/junctionsaturation/tests/main.nf.test +++ b/modules/nf-core/rseqc/junctionsaturation/tests/main.nf.test @@ -4,11 +4,6 @@ nextflow_process { script "../main.nf" process "RSEQC_JUNCTIONSATURATION" - tag "modules" - tag "modules_nfcore" - tag "rseqc" - tag "rseqc/junctionsaturation" - test("sarscov2 paired-end [bam]") { when { diff --git a/modules/nf-core/rseqc/readdistribution/tests/main.nf.test b/modules/nf-core/rseqc/readdistribution/tests/main.nf.test index 5fa76950c..c49c558de 100644 --- a/modules/nf-core/rseqc/readdistribution/tests/main.nf.test +++ b/modules/nf-core/rseqc/readdistribution/tests/main.nf.test @@ -3,10 +3,6 @@ nextflow_process { name "Test Process RSEQC_READDISTRIBUTION" script "../main.nf" process "RSEQC_READDISTRIBUTION" - tag "modules" - tag "modules_nfcore" - tag "rseqc" - tag "rseqc/readdistribution" test("sarscov2 paired-end [bam]") { diff --git a/modules/nf-core/rseqc/readduplication/tests/main.nf.test b/modules/nf-core/rseqc/readduplication/tests/main.nf.test index 334a4e670..a6ffced4c 100644 --- a/modules/nf-core/rseqc/readduplication/tests/main.nf.test +++ b/modules/nf-core/rseqc/readduplication/tests/main.nf.test @@ -3,10 +3,6 @@ nextflow_process { name "Test Process RSEQC_READDUPLICATION" script "../main.nf" process "RSEQC_READDUPLICATION" - tag "modules" - tag "modules_nfcore" - tag "rseqc" - tag "rseqc/readduplication" test("sarscov2 paired-end [bam]") { diff --git a/modules/nf-core/rseqc/tin/tests/main.nf.test b/modules/nf-core/rseqc/tin/tests/main.nf.test index b11eba80b..a4b6f05d4 100644 --- a/modules/nf-core/rseqc/tin/tests/main.nf.test +++ b/modules/nf-core/rseqc/tin/tests/main.nf.test @@ -3,10 +3,6 @@ nextflow_process { name "Test Process RSEQC_TIN" script "../main.nf" process "RSEQC_TIN" - tag "modules" - tag "modules_nfcore" - tag "rseqc" - tag "rseqc/tin" test("sarscov2 paired-end [bam]") { diff --git a/modules/nf-core/subread/featurecounts/tests/main.nf.test b/modules/nf-core/subread/featurecounts/tests/main.nf.test index 3b95da33f..3c0c829bf 100644 --- a/modules/nf-core/subread/featurecounts/tests/main.nf.test +++ b/modules/nf-core/subread/featurecounts/tests/main.nf.test @@ -4,10 +4,6 @@ nextflow_process { script "../main.nf" process "SUBREAD_FEATURECOUNTS" config "./nextflow.config" - tag "modules" - tag "modules_nfcore" - tag "subread" - tag "subread/featurecounts" test("sarscov2 [bam] - forward") { diff --git a/modules/nf-core/trimgalore/tests/main.nf.test b/modules/nf-core/trimgalore/tests/main.nf.test index 2a3dbbb03..4010af8f4 100644 --- a/modules/nf-core/trimgalore/tests/main.nf.test +++ b/modules/nf-core/trimgalore/tests/main.nf.test @@ -3,9 +3,6 @@ nextflow_process { name "Test Process TRIMGALORE" script "../main.nf" process "TRIMGALORE" - tag "modules" - tag "modules_nfcore" - tag "trimgalore" test("test_trimgalore_single_end") { diff --git a/modules/nf-core/ucsc/bedclip/tests/main.nf.test b/modules/nf-core/ucsc/bedclip/tests/main.nf.test index 03458051c..5cb8600c3 100644 --- a/modules/nf-core/ucsc/bedclip/tests/main.nf.test +++ b/modules/nf-core/ucsc/bedclip/tests/main.nf.test @@ -3,10 +3,6 @@ nextflow_process { name "Test Process UCSC_BEDCLIP" script "../main.nf" process "UCSC_BEDCLIP" - tag "modules" - tag "modules_nfcore" - tag "ucsc" - tag "ucsc/bedclip" test("sarscov2") { config "./nextflow.config" diff --git a/modules/nf-core/umitools/extract/tests/main.nf.test b/modules/nf-core/umitools/extract/tests/main.nf.test index bb8a06582..3eec566be 100644 --- a/modules/nf-core/umitools/extract/tests/main.nf.test +++ b/modules/nf-core/umitools/extract/tests/main.nf.test @@ -4,10 +4,6 @@ nextflow_process { script "../main.nf" process "UMITOOLS_EXTRACT" config "./nextflow.config" - tag "modules_nfcore" - tag "modules" - tag "umitools" - tag "umitools/extract" test("single end") { diff --git a/subworkflows/nf-core/fastq_align_hisat2/tests/main.nf.test b/subworkflows/nf-core/fastq_align_hisat2/tests/main.nf.test index b0c0ca512..884d130a2 100644 --- a/subworkflows/nf-core/fastq_align_hisat2/tests/main.nf.test +++ b/subworkflows/nf-core/fastq_align_hisat2/tests/main.nf.test @@ -5,21 +5,6 @@ nextflow_workflow { workflow "FASTQ_ALIGN_HISAT2" config "./nextflow.config" - tag "subworkflows" - tag "subworkflows_nfcore" - tag "subworkflows/fastq_align_hisat2" - - tag "hisat2/align" - tag "hisat2/build" - tag "hisat2/extractsplicesites" - - tag "samtools/flagstat" - tag "samtools/idxstats" - tag "samtools/index" - tag "samtools/sort" - tag "samtools/stats" - tag "subworkflows/bam_sort_stats_samtools" - setup { run("HISAT2_EXTRACTSPLICESITES") { script "../../../../modules/nf-core/hisat2/extractsplicesites/main.nf" diff --git a/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/main.nf.test b/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/main.nf.test index 70fa16419..7bcb4b052 100644 --- a/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/main.nf.test +++ b/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/main.nf.test @@ -5,15 +5,6 @@ nextflow_workflow { workflow "FASTQ_FASTQC_UMITOOLS_FASTP" config './nextflow.config' - tag "subworkflows" - tag "subworkflows_nfcore" - tag "subworkflows/fastq_fastqc_umitools_fastp" - tag "fastq_fastqc_umitools_fastp" - tag "fastqc" - tag "umitools/extract" - tag "fastp" - - test("sarscov2 paired-end [fastq]") { when { From ec409aa79ca18623bb40622a51553e613ee1de3f Mon Sep 17 00:00:00 2001 From: maxulysse Date: Wed, 3 Jul 2024 09:52:44 +0200 Subject: [PATCH 430/634] update CHANGELOG --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index c61444874..3da552eb6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -97,6 +97,7 @@ Thank you to everyone else that has contributed by reporting bugs, enhancements - [PR #1329](https://github.com/nf-core/rnaseq/pull/1329) - Remove tags from all nf-test files - [PR #1330](https://github.com/nf-core/rnaseq/pull/1330) - Update all nf-core/modules and subworkflows - [PR #1331](https://github.com/nf-core/rnaseq/pull/1331) - Adding stubs for local modules +- [PR #1334](https://github.com/nf-core/rnaseq/pull/1334) - Update all nf-core/modules and subworkflows with stubs ### Parameters From 0620d21b1dcae718776b0e831728bfe585f230df Mon Sep 17 00:00:00 2001 From: maxulysse Date: Wed, 3 Jul 2024 10:44:11 +0200 Subject: [PATCH 431/634] stub for align_star + a single snapshot match per test --- .../local/align_star/tests/main.nf.test | 210 +++++- .../local/align_star/tests/main.nf.test.snap | 606 +++++++++--------- 2 files changed, 498 insertions(+), 318 deletions(-) diff --git a/subworkflows/local/align_star/tests/main.nf.test b/subworkflows/local/align_star/tests/main.nf.test index 2b98dffbf..3f86c01a5 100644 --- a/subworkflows/local/align_star/tests/main.nf.test +++ b/subworkflows/local/align_star/tests/main.nf.test @@ -60,24 +60,26 @@ nextflow_workflow { then { assertAll( { assert workflow.success}, - { assert snapshot(file(workflow.out.log_final[0][1]).name).match("without igenomes - log_final") }, - { assert snapshot(file(workflow.out.log_out[0][1]).name).match("without igenomes - log_out") }, - { assert snapshot(workflow.out.bai).match("without igenomes - bai")}, - { assert snapshot(workflow.out.bam).match("without igenomes - bam")}, - { assert snapshot(workflow.out.bam_sorted).match("without igenomes - bam_sorted")}, - { assert snapshot(workflow.out.bam_transcript).match("without igenomes - bam_transcript")}, - { assert snapshot(workflow.out.csi).match("without igenomes - csi")}, - { assert snapshot(workflow.out.log_progress).match("without igenomes - log_progress")}, - { assert snapshot(workflow.out.fastq).match("without igenomes - fastq")}, - { assert snapshot(workflow.out.flagstat).match("without igenomes - flagstat")}, - { assert snapshot(workflow.out.idxstats).match("without igenomes - idxstats")}, - { assert snapshot(workflow.out.orig_bam).match("without igenomes - orig_bam")}, - { assert snapshot(workflow.out.stats).match("without igenomes - stats")}, - { assert snapshot(workflow.out.tab).match("without igenomes - tab")}, - { assert snapshot(workflow.out.versions).match("without igenomes - versions")} + { assert snapshot( + file(workflow.out.log_final[0][1]).name, + file(workflow.out.log_out[0][1]).name, + workflow.out.bai, + workflow.out.bam, + workflow.out.bam_sorted, + workflow.out.bam_transcript, + workflow.out.csi, + workflow.out.log_progress, + workflow.out.fastq, + workflow.out.flagstat, + workflow.out.idxstats, + workflow.out.orig_bam, + workflow.out.stats, + workflow.out.tab, + workflow.out.versions).match()} ) } } + test("star - with igenomes") { setup { @@ -127,23 +129,171 @@ nextflow_workflow { then { assertAll( { assert workflow.success}, - { assert snapshot(file(workflow.out.log_final[0][1]).name).match("with igenomes - log_final") }, - { assert snapshot(file(workflow.out.log_out[0][1]).name).match("with igenomes - log_out") }, - { assert snapshot(workflow.out.bai).match("with igenomes - bai")}, - { assert snapshot(workflow.out.bam).match("with igenomes - bam")}, - { assert snapshot(workflow.out.bam_sorted).match("with igenomes - bam_sorted")}, - { assert snapshot(workflow.out.bam_transcript).match("with igenomes - bam_transcript")}, - { assert snapshot(workflow.out.csi).match("with igenomes - csi")}, - { assert snapshot(workflow.out.log_progress).match("with igenomes - log_progress")}, - { assert snapshot(workflow.out.fastq).match("with igenomes - fastq")}, - { assert snapshot(workflow.out.flagstat).match("with igenomes - flagstat")}, - { assert snapshot(workflow.out.idxstats).match("with igenomes - idxstats")}, - { assert snapshot(workflow.out.orig_bam).match("with igenomes - orig_bam")}, - { assert snapshot(workflow.out.stats).match("with igenomes - stats")}, - { assert snapshot(workflow.out.tab).match("with igenomes - tab")}, - { assert snapshot(workflow.out.versions).match("with igenomes - versions")} + { assert snapshot( + file(workflow.out.log_final[0][1]).name, + file(workflow.out.log_out[0][1]).name, + workflow.out.bai, + workflow.out.bam, + workflow.out.bam_sorted, + workflow.out.bam_transcript, + workflow.out.csi, + workflow.out.log_progress, + workflow.out.fastq, + workflow.out.flagstat, + workflow.out.idxstats, + workflow.out.orig_bam, + workflow.out.stats, + workflow.out.tab, + workflow.out.versions).match()} + ) + } + } + + test("star - no igenomes - stub") { + + options "-stub" + + setup { + run("STAR_GENOMEGENERATE") { + script "../../../../modules/nf-core/star/genomegenerate/main.nf" + process { + """ + input[0] = Channel.of([ + [ id:'test_fasta' ], + [ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) ] + ]) + input[1] = Channel.of([ + [ id:'test_gtf' ], + [ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.gtf', checkIfExists: true) ] + ]) + """ + } + } + } + + when { + workflow { + """ + star_ignore_sjdbgtf = false + seq_platform = 'illumina' + seq_center = false + is_aws_igenome = false + + input[0] = Channel.of([ + [ id:'test', single_end:false ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/fastq/test_rnaseq_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/fastq/test_rnaseq_2.fastq.gz', checkIfExists: true) + ] + ]) + input[1] = STAR_GENOMEGENERATE.out.index + input[2] = Channel.of([ + [ id:'test_gtf' ], + [ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.gtf', checkIfExists: true) ] + ]) + input[3] = star_ignore_sjdbgtf + input[4] = seq_platform + input[5] = seq_center + input[6] = is_aws_igenome + input[7] = Channel.of([ + [ id:'test_fasta' ], + [ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) ] + ]) + """ + } + } + + then { + assertAll( + { assert workflow.success}, + { assert snapshot( + file(workflow.out.log_final[0][1]).name, + file(workflow.out.log_out[0][1]).name, + workflow.out.bai, + workflow.out.bam, + workflow.out.bam_sorted, + workflow.out.bam_transcript, + workflow.out.csi, + workflow.out.log_progress, + workflow.out.fastq, + workflow.out.flagstat, + workflow.out.idxstats, + workflow.out.orig_bam, + workflow.out.stats, + workflow.out.tab, + workflow.out.versions).match()} ) } } + test("star - with igenomes - stub") { + + options "-stub" + + setup { + run("STAR_GENOMEGENERATE_IGENOMES") { + script "../../../../modules/local/star_genomegenerate_igenomes/main.nf" + process { + """ + input[0] = Channel.of([file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true)]) + input[1] = Channel.of([file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.gtf', checkIfExists: true)]) + """ + } + } + } + + when { + workflow { + """ + star_ignore_sjdbgtf = false + seq_platform = 'illumina' + seq_center = false + is_aws_igenome = true + + input[0] = Channel.of([ + [ id:'test', single_end:false ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/fastq/test_rnaseq_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/fastq/test_rnaseq_2.fastq.gz', checkIfExists: true) + ] + ]) + input[1] = STAR_GENOMEGENERATE_IGENOMES.out.index.map{ [ [id:'star'], it ] } + input[2] = Channel.of([ + [ id:'test_gtf' ], + [ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.gtf', checkIfExists: true) ] + ]) + input[3] = star_ignore_sjdbgtf + input[4] = seq_platform + input[5] = seq_center + input[6] = is_aws_igenome + input[7] = Channel.of([ + [ id:'test_fasta' ], + [ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) ] + ]) + """ + } + } + + then { + assertAll( + { assert workflow.success}, + { assert snapshot( + file(workflow.out.log_final[0][1]).name, + file(workflow.out.log_out[0][1]).name, + workflow.out.bai, + workflow.out.bam, + workflow.out.bam_sorted, + workflow.out.bam_transcript, + workflow.out.csi, + workflow.out.log_progress, + workflow.out.fastq, + workflow.out.flagstat, + workflow.out.idxstats, + workflow.out.orig_bam, + workflow.out.stats, + workflow.out.tab, + workflow.out.versions).match()} + ) + } + } } diff --git a/subworkflows/local/align_star/tests/main.nf.test.snap b/subworkflows/local/align_star/tests/main.nf.test.snap index 33f4d772a..2c5a527a5 100644 --- a/subworkflows/local/align_star/tests/main.nf.test.snap +++ b/subworkflows/local/align_star/tests/main.nf.test.snap @@ -1,90 +1,80 @@ { - "without igenomes - log_progress": { + "star - with igenomes": { "content": [ + "test.Log.final.out", + "test.Log.out", [ [ { "id": "test", "single_end": false }, - "test.Log.progress.out:md5,b2bd061d6cbaaf3d6d3b1fed547f69b8" + "test.bam.bai:md5,8bfbd4094a92ac0de8492d98a471d1b0" ] - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" - }, - "timestamp": "2024-03-07T11:59:42.476234" - }, - "with igenomes - stats": { - "content": [ + ], [ [ { "id": "test", "single_end": false }, - "test.stats:md5,202e2f234f93b347b6a72d0163773054" + "test.bam:md5,fc154c31eb4d034ebdb6b1d17c6b45eb" ] - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" - }, - "timestamp": "2024-07-02T16:51:25.527796" - }, - "with igenomes - flagstat": { - "content": [ + ], [ [ { "id": "test", "single_end": false }, - "test.flagstat:md5,db0e25cd0b37d3030e807846c022199e" + "test.Aligned.sortedByCoord.out.bam:md5,b6cec9bba6b04b9b92eddbef128bdfbb" ] - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" - }, - "timestamp": "2024-03-07T12:00:35.063991" - }, - "without igenomes - flagstat": { - "content": [ + ], + [ + + ], + [ + + ], [ [ { "id": "test", "single_end": false }, - "test.flagstat:md5,db0e25cd0b37d3030e807846c022199e" + "test.Log.progress.out:md5,b2bd061d6cbaaf3d6d3b1fed547f69b8" ] - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" - }, - "timestamp": "2024-03-07T11:59:42.500434" - }, - "with igenomes - csi": { - "content": [ + ], [ - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" - }, - "timestamp": "2024-03-07T12:00:35.008879" - }, - "without igenomes - stats": { - "content": [ + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test.flagstat:md5,db0e25cd0b37d3030e807846c022199e" + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test.idxstats:md5,107ca94dd426cc44db316f0d402307c5" + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test.Aligned.sortedByCoord.out.bam:md5,b6cec9bba6b04b9b92eddbef128bdfbb" + ] + ], [ [ { @@ -93,34 +83,157 @@ }, "test.stats:md5,202e2f234f93b347b6a72d0163773054" ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test.SJ.out.tab:md5,844af19ab0fc8cd9a3f75228445aca0d" + ] + ], + [ + "versions.yml:md5,06693106908e6f8f38a2c30accf7067d", + "versions.yml:md5,369619588c8c294b74dca9058a151b11", + "versions.yml:md5,78069d4515b04251f758ac52a49d9971", + "versions.yml:md5,b6a22ef369a375445a8f9313721b8092", + "versions.yml:md5,e3b043ba840d5bddde92f0bf1c91a5fc", + "versions.yml:md5,feaf798d368c662a7a1cea87a24a7434" ] ], "meta": { "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-07-02T16:50:30.406405" + "timestamp": "2024-07-03T10:42:50.176094" }, - "with igenomes - bam_sorted": { + "star - no igenomes - stub": { "content": [ + "test.Log.final.out", + "test.Log.out", [ [ { "id": "test", "single_end": false }, - "test.Aligned.sortedByCoord.out.bam:md5,b6cec9bba6b04b9b92eddbef128bdfbb" + "test.bam.bai:md5,d41d8cd98f00b204e9800998ecf8427e" ] - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" - }, - "timestamp": "2024-03-07T12:00:34.968826" - }, - "without igenomes - versions": { - "content": [ + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test.Aligned.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test.toTranscriptome.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test.bam.csi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test.Log.progress.out:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + [ + "/home/max/tests/6e361e57e6a3bdc7a9658b65cbbacd6/work/15/f5d31a04cce8dd4fdb0d695c29d4b7/test.unmapped_1.fastq.gz", + "/home/max/tests/6e361e57e6a3bdc7a9658b65cbbacd6/work/15/f5d31a04cce8dd4fdb0d695c29d4b7/test.unmapped_2.fastq.gz" + ] + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test.flagstat:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test.idxstats:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test.Aligned.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e", + "testXd.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test.stats:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test.ReadsPerGene.out.tab:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.SJ.out.tab:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.tab:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], [ "versions.yml:md5,06693106908e6f8f38a2c30accf7067d", "versions.yml:md5,35c1cc21d26d9d8f00e6ec87e97fb634", @@ -134,92 +247,108 @@ "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-07-02T16:50:30.464346" + "timestamp": "2024-07-03T10:43:10.186065" }, - "without igenomes - bam_transcript": { + "star - no igenomes": { "content": [ + "test.Log.final.out", + "test.Log.out", [ - - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" - }, - "timestamp": "2024-03-07T11:59:42.453855" - }, - "without igenomes - idxstats": { - "content": [ + [ + { + "id": "test", + "single_end": false + }, + "test.bam.bai:md5,8bfbd4094a92ac0de8492d98a471d1b0" + ] + ], [ [ { "id": "test", "single_end": false }, - "test.idxstats:md5,107ca94dd426cc44db316f0d402307c5" + "test.bam:md5,e6573d093da6ec95f99c1669eb86bbd6" ] - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" - }, - "timestamp": "2024-03-07T11:59:42.511992" - }, - "with igenomes - fastq": { - "content": [ + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test.Aligned.sortedByCoord.out.bam:md5,b9ee1c607e07323bc1652ef3babb543f" + ] + ], [ - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" - }, - "timestamp": "2024-03-07T12:00:35.046516" - }, - "without igenomes - log_out": { - "content": [ - "test.Log.out" - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" - }, - "timestamp": "2024-03-07T12:07:26.212398" - }, - "without igenomes - fastq": { - "content": [ + ], [ - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" - }, - "timestamp": "2024-03-07T11:59:42.488954" - }, - "without igenomes - csi": { - "content": [ + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test.Log.progress.out:md5,b2bd061d6cbaaf3d6d3b1fed547f69b8" + ] + ], [ - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" - }, - "timestamp": "2024-03-07T11:59:42.464985" - }, - "with igenomes - versions": { - "content": [ + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test.flagstat:md5,db0e25cd0b37d3030e807846c022199e" + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test.idxstats:md5,107ca94dd426cc44db316f0d402307c5" + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test.Aligned.sortedByCoord.out.bam:md5,b9ee1c607e07323bc1652ef3babb543f" + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test.stats:md5,202e2f234f93b347b6a72d0163773054" + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test.SJ.out.tab:md5,844af19ab0fc8cd9a3f75228445aca0d" + ] + ], [ "versions.yml:md5,06693106908e6f8f38a2c30accf7067d", + "versions.yml:md5,35c1cc21d26d9d8f00e6ec87e97fb634", "versions.yml:md5,369619588c8c294b74dca9058a151b11", "versions.yml:md5,78069d4515b04251f758ac52a49d9971", "versions.yml:md5,b6a22ef369a375445a8f9313721b8092", - "versions.yml:md5,e3b043ba840d5bddde92f0bf1c91a5fc", "versions.yml:md5,feaf798d368c662a7a1cea87a24a7434" ] ], @@ -227,246 +356,147 @@ "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-07-02T16:51:25.579874" + "timestamp": "2024-07-03T10:41:54.293096" }, - "with igenomes - log_progress": { + "star - with igenomes - stub": { "content": [ + "test.Log.final.out", + "test.Log.out", [ [ { "id": "test", "single_end": false }, - "test.Log.progress.out:md5,b2bd061d6cbaaf3d6d3b1fed547f69b8" + "test.bam.bai:md5,d41d8cd98f00b204e9800998ecf8427e" ] - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" - }, - "timestamp": "2024-03-07T12:00:35.028932" - }, - "with igenomes - bam_transcript": { - "content": [ + ], [ - - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" - }, - "timestamp": "2024-03-07T12:00:34.989058" - }, - "with igenomes - log_out": { - "content": [ - "test.Log.out" - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" - }, - "timestamp": "2024-03-07T12:04:22.59113" - }, - "without igenomes - tab": { - "content": [ + [ + { + "id": "test", + "single_end": false + }, + "test.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], [ [ { "id": "test", "single_end": false }, - "test.SJ.out.tab:md5,844af19ab0fc8cd9a3f75228445aca0d" + [ + "test.Aligned.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] ] - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" - }, - "timestamp": "2024-03-07T11:59:42.557135" - }, - "without igenomes - bai": { - "content": [ + ], [ [ { "id": "test", "single_end": false }, - "test.bam.bai:md5,8bfbd4094a92ac0de8492d98a471d1b0" + "test.toTranscriptome.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e" ] - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" - }, - "timestamp": "2024-07-02T16:50:30.294108" - }, - "without igenomes - orig_bam": { - "content": [ + ], [ [ { "id": "test", "single_end": false }, - "test.Aligned.sortedByCoord.out.bam:md5,b9ee1c607e07323bc1652ef3babb543f" + "test.bam.csi:md5,d41d8cd98f00b204e9800998ecf8427e" ] - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" - }, - "timestamp": "2024-03-07T11:59:42.523368" - }, - "without igenomes - log_final": { - "content": [ - "test.Log.final.out" - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" - }, - "timestamp": "2024-03-07T12:07:26.199" - }, - "without igenomes - bam": { - "content": [ + ], [ [ { "id": "test", "single_end": false }, - "test.bam:md5,e6573d093da6ec95f99c1669eb86bbd6" + "test.Log.progress.out:md5,d41d8cd98f00b204e9800998ecf8427e" ] - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" - }, - "timestamp": "2024-07-02T16:50:30.348908" - }, - "with igenomes - orig_bam": { - "content": [ + ], [ [ { "id": "test", "single_end": false }, - "test.Aligned.sortedByCoord.out.bam:md5,b6cec9bba6b04b9b92eddbef128bdfbb" + [ + "/home/max/tests/6efdcb422a49d8bf15b844d59e0dc8a1/work/fa/b5d0173593fa74664b340bb2e08e07/test.unmapped_1.fastq.gz", + "/home/max/tests/6efdcb422a49d8bf15b844d59e0dc8a1/work/fa/b5d0173593fa74664b340bb2e08e07/test.unmapped_2.fastq.gz" + ] ] - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" - }, - "timestamp": "2024-03-07T12:00:35.100886" - }, - "with igenomes - idxstats": { - "content": [ + ], [ [ { "id": "test", "single_end": false }, - "test.idxstats:md5,107ca94dd426cc44db316f0d402307c5" + "test.flagstat:md5,d41d8cd98f00b204e9800998ecf8427e" ] - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" - }, - "timestamp": "2024-03-07T12:00:35.080603" - }, - "with igenomes - tab": { - "content": [ + ], [ [ { "id": "test", "single_end": false }, - "test.SJ.out.tab:md5,844af19ab0fc8cd9a3f75228445aca0d" + "test.idxstats:md5,d41d8cd98f00b204e9800998ecf8427e" ] - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" - }, - "timestamp": "2024-03-07T12:00:35.148353" - }, - "with igenomes - bam": { - "content": [ + ], [ [ { "id": "test", "single_end": false }, - "test.bam:md5,fc154c31eb4d034ebdb6b1d17c6b45eb" + [ + "test.Aligned.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e", + "testXd.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] ] - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" - }, - "timestamp": "2024-07-02T16:51:25.474137" - }, - "without igenomes - bam_sorted": { - "content": [ + ], [ [ { "id": "test", "single_end": false }, - "test.Aligned.sortedByCoord.out.bam:md5,b9ee1c607e07323bc1652ef3babb543f" + "test.stats:md5,d41d8cd98f00b204e9800998ecf8427e" ] - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" - }, - "timestamp": "2024-03-07T11:59:42.442171" - }, - "with igenomes - bai": { - "content": [ + ], [ [ { "id": "test", "single_end": false }, - "test.bam.bai:md5,8bfbd4094a92ac0de8492d98a471d1b0" + [ + "test.ReadsPerGene.out.tab:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.SJ.out.tab:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.tab:md5,d41d8cd98f00b204e9800998ecf8427e" + ] ] + ], + [ + "versions.yml:md5,06693106908e6f8f38a2c30accf7067d", + "versions.yml:md5,369619588c8c294b74dca9058a151b11", + "versions.yml:md5,78069d4515b04251f758ac52a49d9971", + "versions.yml:md5,b6a22ef369a375445a8f9313721b8092", + "versions.yml:md5,e3b043ba840d5bddde92f0bf1c91a5fc", + "versions.yml:md5,feaf798d368c662a7a1cea87a24a7434" ] ], "meta": { "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-07-02T16:51:25.407812" - }, - "with igenomes - log_final": { - "content": [ - "test.Log.final.out" - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" - }, - "timestamp": "2024-03-07T12:04:22.57863" + "timestamp": "2024-07-03T10:43:34.421071" } } \ No newline at end of file From 573ca90f30ff9be03da5ac51c992ac2443dc32b3 Mon Sep 17 00:00:00 2001 From: maxulysse Date: Wed, 3 Jul 2024 11:06:01 +0200 Subject: [PATCH 432/634] add stubs + code polish + Harshil align --- .../local/prepare_genome/tests/main.nf.test | 1660 +++++++++++++++-- .../prepare_genome/tests/main.nf.test.snap | 1328 +++++++++++-- 2 files changed, 2733 insertions(+), 255 deletions(-) diff --git a/subworkflows/local/prepare_genome/tests/main.nf.test b/subworkflows/local/prepare_genome/tests/main.nf.test index 8c5cc5b6b..54fe460e8 100644 --- a/subworkflows/local/prepare_genome/tests/main.nf.test +++ b/subworkflows/local/prepare_genome/tests/main.nf.test @@ -20,16 +20,16 @@ nextflow_workflow { skip_alignment = false skip_pseudo_alignment = false - input[0] = file(params.pipelines_testdata_base_path + 'reference/genome.fasta', checkIfExists: true) - input[1] = file(params.pipelines_testdata_base_path + 'reference/genes_with_empty_tid.gtf', checkIfExists: true) - input[2] = file(params.pipelines_testdata_base_path + 'reference/genes.gff', checkIfExists: true) - input[3] = file(params.pipelines_testdata_base_path + 'reference/gfp.fa', checkIfExists: true) - input[4] = file(params.pipelines_testdata_base_path + 'reference/transcriptome.fasta', checkIfExists: true) - input[5] = null - input[6] = null - input[7] = file(params.pipelines_testdata_base_path + 'reference/bbsplit_fasta_list.txt', checkIfExists: true) - input[8] = null - input[9] = null + input[0] = file(params.pipelines_testdata_base_path + 'reference/genome.fasta', checkIfExists: true) + input[1] = file(params.pipelines_testdata_base_path + 'reference/genes_with_empty_tid.gtf', checkIfExists: true) + input[2] = file(params.pipelines_testdata_base_path + 'reference/genes.gff', checkIfExists: true) + input[3] = file(params.pipelines_testdata_base_path + 'reference/gfp.fa', checkIfExists: true) + input[4] = file(params.pipelines_testdata_base_path + 'reference/transcriptome.fasta', checkIfExists: true) + input[5] = null + input[6] = null + input[7] = file(params.pipelines_testdata_base_path + 'reference/bbsplit_fasta_list.txt', checkIfExists: true) + input[8] = null + input[9] = null input[10] = file(params.pipelines_testdata_base_path + 'reference/rsem.tar.gz', checkIfExists: true) input[11] = file(params.pipelines_testdata_base_path + 'reference/salmon.tar.gz', checkIfExists: true) input[12] = null @@ -154,16 +154,16 @@ nextflow_workflow { skip_alignment = false skip_pseudo_alignment = false - input[0] = file(params.pipelines_testdata_base_path + 'reference/genome.fasta', checkIfExists: true) - input[1] = file(params.pipelines_testdata_base_path + 'reference/genes_with_empty_tid.gtf', checkIfExists: true) - input[2] = file(params.pipelines_testdata_base_path + 'reference/genes.gff', checkIfExists: true) - input[3] = file(params.pipelines_testdata_base_path + 'reference/gfp.fa', checkIfExists: true) - input[4] = file(params.pipelines_testdata_base_path + 'reference/transcriptome.fasta', checkIfExists: true) - input[5] = null - input[6] = null - input[7] = file(params.pipelines_testdata_base_path + 'reference/bbsplit_fasta_list.txt', checkIfExists: true) - input[8] = null - input[9] = null + input[0] = file(params.pipelines_testdata_base_path + 'reference/genome.fasta', checkIfExists: true) + input[1] = file(params.pipelines_testdata_base_path + 'reference/genes_with_empty_tid.gtf', checkIfExists: true) + input[2] = file(params.pipelines_testdata_base_path + 'reference/genes.gff', checkIfExists: true) + input[3] = file(params.pipelines_testdata_base_path + 'reference/gfp.fa', checkIfExists: true) + input[4] = file(params.pipelines_testdata_base_path + 'reference/transcriptome.fasta', checkIfExists: true) + input[5] = null + input[6] = null + input[7] = file(params.pipelines_testdata_base_path + 'reference/bbsplit_fasta_list.txt', checkIfExists: true) + input[8] = null + input[9] = null input[10] = file(params.pipelines_testdata_base_path + 'reference/rsem.tar.gz', checkIfExists: true) input[11] = file(params.pipelines_testdata_base_path + 'reference/salmon.tar.gz', checkIfExists: true) input[12] = null @@ -221,16 +221,16 @@ nextflow_workflow { skip_alignment = false skip_pseudo_alignment = false - input[0] = file(params.pipelines_testdata_base_path + 'reference/genome.fasta', checkIfExists: true) - input[1] = file(params.pipelines_testdata_base_path + 'reference/genes_with_empty_tid.gtf', checkIfExists: true) - input[2] = file(params.pipelines_testdata_base_path + 'reference/genes.gff', checkIfExists: true) - input[3] = file(params.pipelines_testdata_base_path + 'reference/gfp.fa', checkIfExists: true) - input[4] = file(params.pipelines_testdata_base_path + 'reference/transcriptome.fasta', checkIfExists: true) - input[5] = null - input[6] = null - input[7] = file(params.pipelines_testdata_base_path + 'reference/bbsplit_fasta_list.txt', checkIfExists: true) - input[8] = null - input[9] = null + input[0] = file(params.pipelines_testdata_base_path + 'reference/genome.fasta', checkIfExists: true) + input[1] = file(params.pipelines_testdata_base_path + 'reference/genes_with_empty_tid.gtf', checkIfExists: true) + input[2] = file(params.pipelines_testdata_base_path + 'reference/genes.gff', checkIfExists: true) + input[3] = file(params.pipelines_testdata_base_path + 'reference/gfp.fa', checkIfExists: true) + input[4] = file(params.pipelines_testdata_base_path + 'reference/transcriptome.fasta', checkIfExists: true) + input[5] = null + input[6] = null + input[7] = file(params.pipelines_testdata_base_path + 'reference/bbsplit_fasta_list.txt', checkIfExists: true) + input[8] = null + input[9] = null input[10] = file(params.pipelines_testdata_base_path + 'reference/rsem.tar.gz', checkIfExists: true) input[11] = file(params.pipelines_testdata_base_path + 'reference/salmon.tar.gz', checkIfExists: true) input[12] = null @@ -288,16 +288,16 @@ nextflow_workflow { skip_alignment = true skip_pseudo_alignment = false - input[0] = file(params.pipelines_testdata_base_path + 'reference/genome.fasta', checkIfExists: true) - input[1] = file(params.pipelines_testdata_base_path + 'reference/genes_with_empty_tid.gtf', checkIfExists: true) - input[2] = file(params.pipelines_testdata_base_path + 'reference/genes.gff', checkIfExists: true) - input[3] = file(params.pipelines_testdata_base_path + 'reference/gfp.fa', checkIfExists: true) - input[4] = file(params.pipelines_testdata_base_path + 'reference/transcriptome.fasta', checkIfExists: true) - input[5] = null - input[6] = null - input[7] = file(params.pipelines_testdata_base_path + 'reference/bbsplit_fasta_list.txt', checkIfExists: true) - input[8] = null - input[9] = null + input[0] = file(params.pipelines_testdata_base_path + 'reference/genome.fasta', checkIfExists: true) + input[1] = file(params.pipelines_testdata_base_path + 'reference/genes_with_empty_tid.gtf', checkIfExists: true) + input[2] = file(params.pipelines_testdata_base_path + 'reference/genes.gff', checkIfExists: true) + input[3] = file(params.pipelines_testdata_base_path + 'reference/gfp.fa', checkIfExists: true) + input[4] = file(params.pipelines_testdata_base_path + 'reference/transcriptome.fasta', checkIfExists: true) + input[5] = null + input[6] = null + input[7] = file(params.pipelines_testdata_base_path + 'reference/bbsplit_fasta_list.txt', checkIfExists: true) + input[8] = null + input[9] = null input[10] = file(params.pipelines_testdata_base_path + 'reference/rsem.tar.gz', checkIfExists: true) input[11] = file(params.pipelines_testdata_base_path + 'reference/salmon.tar.gz', checkIfExists: true) input[12] = null @@ -355,16 +355,16 @@ nextflow_workflow { skip_alignment = false skip_pseudo_alignment = true - input[0] = file(params.pipelines_testdata_base_path + 'reference/genome.fasta', checkIfExists: true) - input[1] = file(params.pipelines_testdata_base_path + 'reference/genes_with_empty_tid.gtf', checkIfExists: true) - input[2] = file(params.pipelines_testdata_base_path + 'reference/genes.gff', checkIfExists: true) - input[3] = file(params.pipelines_testdata_base_path + 'reference/gfp.fa', checkIfExists: true) - input[4] = file(params.pipelines_testdata_base_path + 'reference/transcriptome.fasta', checkIfExists: true) - input[5] = null - input[6] = null - input[7] = file(params.pipelines_testdata_base_path + 'reference/bbsplit_fasta_list.txt', checkIfExists: true) - input[8] = null - input[9] = null + input[0] = file(params.pipelines_testdata_base_path + 'reference/genome.fasta', checkIfExists: true) + input[1] = file(params.pipelines_testdata_base_path + 'reference/genes_with_empty_tid.gtf', checkIfExists: true) + input[2] = file(params.pipelines_testdata_base_path + 'reference/genes.gff', checkIfExists: true) + input[3] = file(params.pipelines_testdata_base_path + 'reference/gfp.fa', checkIfExists: true) + input[4] = file(params.pipelines_testdata_base_path + 'reference/transcriptome.fasta', checkIfExists: true) + input[5] = null + input[6] = null + input[7] = file(params.pipelines_testdata_base_path + 'reference/bbsplit_fasta_list.txt', checkIfExists: true) + input[8] = null + input[9] = null input[10] = file(params.pipelines_testdata_base_path + 'reference/rsem.tar.gz', checkIfExists: true) input[11] = file(params.pipelines_testdata_base_path + 'reference/salmon.tar.gz', checkIfExists: true) input[12] = null @@ -556,16 +556,16 @@ nextflow_workflow { skip_alignment = false skip_pseudo_alignment = false - input[0] = file(params.pipelines_testdata_base_path + 'reference/genome.fasta', checkIfExists: true) - input[1] = file(params.pipelines_testdata_base_path + 'reference/genes_with_empty_tid.gtf', checkIfExists: true) - input[2] = file(params.pipelines_testdata_base_path + 'reference/genes.gff', checkIfExists: true) - input[3] = false - input[4] = file(params.pipelines_testdata_base_path + 'reference/transcriptome.fasta', checkIfExists: true) - input[5] = null - input[6] = null - input[7] = file(params.pipelines_testdata_base_path + 'reference/bbsplit_fasta_list.txt', checkIfExists: true) - input[8] = null - input[9] = null + input[0] = file(params.pipelines_testdata_base_path + 'reference/genome.fasta', checkIfExists: true) + input[1] = file(params.pipelines_testdata_base_path + 'reference/genes_with_empty_tid.gtf', checkIfExists: true) + input[2] = file(params.pipelines_testdata_base_path + 'reference/genes.gff', checkIfExists: true) + input[3] = false + input[4] = file(params.pipelines_testdata_base_path + 'reference/transcriptome.fasta', checkIfExists: true) + input[5] = null + input[6] = null + input[7] = file(params.pipelines_testdata_base_path + 'reference/bbsplit_fasta_list.txt', checkIfExists: true) + input[8] = null + input[9] = null input[10] = file(params.pipelines_testdata_base_path + 'reference/rsem.tar.gz', checkIfExists: true) input[11] = file(params.pipelines_testdata_base_path + 'reference/salmon.tar.gz', checkIfExists: true) input[12] = null @@ -623,16 +623,16 @@ nextflow_workflow { skip_alignment = false skip_pseudo_alignment = false - input[0] = file(params.pipelines_testdata_base_path + 'reference/genome.fasta', checkIfExists: true) - input[1] = file(params.pipelines_testdata_base_path + 'reference/genes_with_empty_tid.gtf', checkIfExists: true) - input[2] = file(params.pipelines_testdata_base_path + 'reference/genes.gff', checkIfExists: true) - input[3] = file(params.pipelines_testdata_base_path + 'reference/gfp.fa', checkIfExists: true) - input[4] = false - input[5] = null - input[6] = null - input[7] = file(params.pipelines_testdata_base_path + 'reference/bbsplit_fasta_list.txt', checkIfExists: true) - input[8] = null - input[9] = null + input[0] = file(params.pipelines_testdata_base_path + 'reference/genome.fasta', checkIfExists: true) + input[1] = file(params.pipelines_testdata_base_path + 'reference/genes_with_empty_tid.gtf', checkIfExists: true) + input[2] = file(params.pipelines_testdata_base_path + 'reference/genes.gff', checkIfExists: true) + input[3] = file(params.pipelines_testdata_base_path + 'reference/gfp.fa', checkIfExists: true) + input[4] = false + input[5] = null + input[6] = null + input[7] = file(params.pipelines_testdata_base_path + 'reference/bbsplit_fasta_list.txt', checkIfExists: true) + input[8] = null + input[9] = null input[10] = file(params.pipelines_testdata_base_path + 'reference/rsem.tar.gz', checkIfExists: true) input[11] = file(params.pipelines_testdata_base_path + 'reference/salmon.tar.gz', checkIfExists: true) input[12] = null @@ -690,16 +690,16 @@ nextflow_workflow { skip_alignment = false skip_pseudo_alignment = false - input[0] = file(params.pipelines_testdata_base_path + 'reference/genome.fasta', checkIfExists: true) - input[1] = file(params.pipelines_testdata_base_path + 'reference/genes_with_empty_tid.gtf', checkIfExists: true) - input[2] = file(params.pipelines_testdata_base_path + 'reference/genes.gff', checkIfExists: true) - input[3] = file(params.pipelines_testdata_base_path + 'reference/gfp.fa', checkIfExists: true) - input[4] = file(params.pipelines_testdata_base_path + 'reference/transcriptome.fasta', checkIfExists: true) - input[5] = file(params.pipelines_testdata_base_path + 'reference/ngscheckmate.bed', checkIfExists: true) - input[6] = null - input[7] = file(params.pipelines_testdata_base_path + 'reference/bbsplit_fasta_list.txt', checkIfExists: true) - input[8] = null - input[9] = null + input[0] = file(params.pipelines_testdata_base_path + 'reference/genome.fasta', checkIfExists: true) + input[1] = file(params.pipelines_testdata_base_path + 'reference/genes_with_empty_tid.gtf', checkIfExists: true) + input[2] = file(params.pipelines_testdata_base_path + 'reference/genes.gff', checkIfExists: true) + input[3] = file(params.pipelines_testdata_base_path + 'reference/gfp.fa', checkIfExists: true) + input[4] = file(params.pipelines_testdata_base_path + 'reference/transcriptome.fasta', checkIfExists: true) + input[5] = file(params.pipelines_testdata_base_path + 'reference/ngscheckmate.bed', checkIfExists: true) + input[6] = null + input[7] = file(params.pipelines_testdata_base_path + 'reference/bbsplit_fasta_list.txt', checkIfExists: true) + input[8] = null + input[9] = null input[10] = file(params.pipelines_testdata_base_path + 'reference/rsem.tar.gz', checkIfExists: true) input[11] = file(params.pipelines_testdata_base_path + 'reference/salmon.tar.gz', checkIfExists: true) input[12] = null @@ -877,6 +877,7 @@ nextflow_workflow { } test("hisat2_index = false") { + when { workflow { """ @@ -957,16 +958,16 @@ nextflow_workflow { skip_alignment = false skip_pseudo_alignment = false - input[0] = file(params.pipelines_testdata_base_path + 'reference/genome.fasta', checkIfExists: true) - input[1] = file(params.pipelines_testdata_base_path + 'reference/genes_with_empty_tid.gtf', checkIfExists: true) - input[2] = file(params.pipelines_testdata_base_path + 'reference/genes.gff', checkIfExists: true) - input[3] = file(params.pipelines_testdata_base_path + 'reference/gfp.fa', checkIfExists: true) - input[4] = file(params.pipelines_testdata_base_path + 'reference/transcriptome.fasta', checkIfExists: true) - input[5] = null - input[6] = null - input[7] = file(params.pipelines_testdata_base_path + 'reference/bbsplit_fasta_list.txt', checkIfExists: true) - input[8] = null - input[9] = null + input[0] = file(params.pipelines_testdata_base_path + 'reference/genome.fasta', checkIfExists: true) + input[1] = file(params.pipelines_testdata_base_path + 'reference/genes_with_empty_tid.gtf', checkIfExists: true) + input[2] = file(params.pipelines_testdata_base_path + 'reference/genes.gff', checkIfExists: true) + input[3] = file(params.pipelines_testdata_base_path + 'reference/gfp.fa', checkIfExists: true) + input[4] = file(params.pipelines_testdata_base_path + 'reference/transcriptome.fasta', checkIfExists: true) + input[5] = null + input[6] = null + input[7] = file(params.pipelines_testdata_base_path + 'reference/bbsplit_fasta_list.txt', checkIfExists: true) + input[8] = null + input[9] = null input[10] = file(params.pipelines_testdata_base_path + 'reference/rsem.tar.gz', checkIfExists: true) input[11] = file(params.pipelines_testdata_base_path + 'reference/salmon.tar.gz', checkIfExists: true) input[12] = null @@ -1024,16 +1025,16 @@ nextflow_workflow { skip_alignment = false skip_pseudo_alignment = false - input[0] = file(params.pipelines_testdata_base_path + 'reference/genome.fasta', checkIfExists: true) - input[1] = file(params.pipelines_testdata_base_path + 'reference/genes_with_empty_tid.gtf', checkIfExists: true) - input[2] = file(params.pipelines_testdata_base_path + 'reference/genes.gff', checkIfExists: true) - input[3] = file(params.pipelines_testdata_base_path + 'reference/gfp.fa', checkIfExists: true) - input[4] = file(params.pipelines_testdata_base_path + 'reference/transcriptome.fasta', checkIfExists: true) - input[5] = null - input[6] = null - input[7] = file(params.pipelines_testdata_base_path + 'reference/bbsplit_fasta_list.txt', checkIfExists: true) - input[8] = null - input[9] = null + input[0] = file(params.pipelines_testdata_base_path + 'reference/genome.fasta', checkIfExists: true) + input[1] = file(params.pipelines_testdata_base_path + 'reference/genes_with_empty_tid.gtf', checkIfExists: true) + input[2] = file(params.pipelines_testdata_base_path + 'reference/genes.gff', checkIfExists: true) + input[3] = file(params.pipelines_testdata_base_path + 'reference/gfp.fa', checkIfExists: true) + input[4] = file(params.pipelines_testdata_base_path + 'reference/transcriptome.fasta', checkIfExists: true) + input[5] = null + input[6] = null + input[7] = file(params.pipelines_testdata_base_path + 'reference/bbsplit_fasta_list.txt', checkIfExists: true) + input[8] = null + input[9] = null input[10] = file(params.pipelines_testdata_base_path + 'reference/rsem.tar.gz', checkIfExists: true) input[11] = file(params.pipelines_testdata_base_path + 'reference/salmon.tar.gz', checkIfExists: true) input[12] = null @@ -1091,16 +1092,16 @@ nextflow_workflow { skip_alignment = false skip_pseudo_alignment = false - input[0] = file(params.pipelines_testdata_base_path + 'reference/genome.fasta', checkIfExists: true) - input[1] = file(params.pipelines_testdata_base_path + 'reference/genes_with_empty_tid.gtf', checkIfExists: true) - input[2] = file(params.pipelines_testdata_base_path + 'reference/genes.gff', checkIfExists: true) - input[3] = file(params.pipelines_testdata_base_path + 'reference/gfp.fa', checkIfExists: true) - input[4] = file(params.pipelines_testdata_base_path + 'reference/transcriptome.fasta', checkIfExists: true) - input[5] = null - input[6] = null - input[7] = file(params.pipelines_testdata_base_path + 'reference/bbsplit_fasta_list.txt', checkIfExists: true) - input[8] = null - input[9] = null + input[0] = file(params.pipelines_testdata_base_path + 'reference/genome.fasta', checkIfExists: true) + input[1] = file(params.pipelines_testdata_base_path + 'reference/genes_with_empty_tid.gtf', checkIfExists: true) + input[2] = file(params.pipelines_testdata_base_path + 'reference/genes.gff', checkIfExists: true) + input[3] = file(params.pipelines_testdata_base_path + 'reference/gfp.fa', checkIfExists: true) + input[4] = file(params.pipelines_testdata_base_path + 'reference/transcriptome.fasta', checkIfExists: true) + input[5] = null + input[6] = null + input[7] = file(params.pipelines_testdata_base_path + 'reference/bbsplit_fasta_list.txt', checkIfExists: true) + input[8] = null + input[9] = null input[10] = file(params.pipelines_testdata_base_path + 'reference/rsem.tar.gz', checkIfExists: true) input[11] = file(params.pipelines_testdata_base_path + 'reference/salmon.tar.gz', checkIfExists: true) input[12] = null @@ -1158,16 +1159,16 @@ nextflow_workflow { skip_alignment = false skip_pseudo_alignment = false - input[0] = file(params.pipelines_testdata_base_path + 'reference/genome.fasta', checkIfExists: true) - input[1] = file(params.pipelines_testdata_base_path + 'reference/genes_with_empty_tid.gtf', checkIfExists: true) - input[2] = file(params.pipelines_testdata_base_path + 'reference/genes.gff', checkIfExists: true) - input[3] = file(params.pipelines_testdata_base_path + 'reference/gfp.fa', checkIfExists: true) - input[4] = file(params.pipelines_testdata_base_path + 'reference/transcriptome.fasta', checkIfExists: true) - input[5] = null - input[6] = null - input[7] = file(params.pipelines_testdata_base_path + 'reference/bbsplit_fasta_list.txt', checkIfExists: true) - input[8] = null - input[9] = null + input[0] = file(params.pipelines_testdata_base_path + 'reference/genome.fasta', checkIfExists: true) + input[1] = file(params.pipelines_testdata_base_path + 'reference/genes_with_empty_tid.gtf', checkIfExists: true) + input[2] = file(params.pipelines_testdata_base_path + 'reference/genes.gff', checkIfExists: true) + input[3] = file(params.pipelines_testdata_base_path + 'reference/gfp.fa', checkIfExists: true) + input[4] = file(params.pipelines_testdata_base_path + 'reference/transcriptome.fasta', checkIfExists: true) + input[5] = null + input[6] = null + input[7] = file(params.pipelines_testdata_base_path + 'reference/bbsplit_fasta_list.txt', checkIfExists: true) + input[8] = null + input[9] = null input[10] = file(params.pipelines_testdata_base_path + 'reference/rsem.tar.gz', checkIfExists: true) input[11] = file(params.pipelines_testdata_base_path + 'reference/salmon.tar.gz', checkIfExists: true) input[12] = null @@ -1225,16 +1226,16 @@ nextflow_workflow { skip_alignment = true skip_pseudo_alignment = false - input[0] = file(params.pipelines_testdata_base_path + 'reference/genome.fasta', checkIfExists: true) - input[1] = file(params.pipelines_testdata_base_path + 'reference/genes_with_empty_tid.gtf', checkIfExists: true) - input[2] = file(params.pipelines_testdata_base_path + 'reference/genes.gff', checkIfExists: true) - input[3] = file(params.pipelines_testdata_base_path + 'reference/gfp.fa', checkIfExists: true) - input[4] = file(params.pipelines_testdata_base_path + 'reference/transcriptome.fasta', checkIfExists: true) - input[5] = null - input[6] = null - input[7] = file(params.pipelines_testdata_base_path + 'reference/bbsplit_fasta_list.txt', checkIfExists: true) - input[8] = null - input[9] = null + input[0] = file(params.pipelines_testdata_base_path + 'reference/genome.fasta', checkIfExists: true) + input[1] = file(params.pipelines_testdata_base_path + 'reference/genes_with_empty_tid.gtf', checkIfExists: true) + input[2] = file(params.pipelines_testdata_base_path + 'reference/genes.gff', checkIfExists: true) + input[3] = file(params.pipelines_testdata_base_path + 'reference/gfp.fa', checkIfExists: true) + input[4] = file(params.pipelines_testdata_base_path + 'reference/transcriptome.fasta', checkIfExists: true) + input[5] = null + input[6] = null + input[7] = file(params.pipelines_testdata_base_path + 'reference/bbsplit_fasta_list.txt', checkIfExists: true) + input[8] = null + input[9] = null input[10] = file(params.pipelines_testdata_base_path + 'reference/rsem.tar.gz', checkIfExists: true) input[11] = file(params.pipelines_testdata_base_path + 'reference/salmon.tar.gz', checkIfExists: true) input[12] = null @@ -1292,16 +1293,85 @@ nextflow_workflow { skip_alignment = false skip_pseudo_alignment = true - input[0] = file(params.pipelines_testdata_base_path + 'reference/genome.fasta', checkIfExists: true) - input[1] = file(params.pipelines_testdata_base_path + 'reference/genes_with_empty_tid.gtf', checkIfExists: true) - input[2] = file(params.pipelines_testdata_base_path + 'reference/genes.gff', checkIfExists: true) - input[3] = file(params.pipelines_testdata_base_path + 'reference/gfp.fa', checkIfExists: true) - input[4] = file(params.pipelines_testdata_base_path + 'reference/transcriptome.fasta', checkIfExists: true) - input[5] = null - input[6] = null - input[7] = file(params.pipelines_testdata_base_path + 'reference/bbsplit_fasta_list.txt', checkIfExists: true) - input[8] = null - input[9] = null + input[0] = file(params.pipelines_testdata_base_path + 'reference/genome.fasta', checkIfExists: true) + input[1] = file(params.pipelines_testdata_base_path + 'reference/genes_with_empty_tid.gtf', checkIfExists: true) + input[2] = file(params.pipelines_testdata_base_path + 'reference/genes.gff', checkIfExists: true) + input[3] = file(params.pipelines_testdata_base_path + 'reference/gfp.fa', checkIfExists: true) + input[4] = file(params.pipelines_testdata_base_path + 'reference/transcriptome.fasta', checkIfExists: true) + input[5] = null + input[6] = null + input[7] = file(params.pipelines_testdata_base_path + 'reference/bbsplit_fasta_list.txt', checkIfExists: true) + input[8] = null + input[9] = null + input[10] = file(params.pipelines_testdata_base_path + 'reference/rsem.tar.gz', checkIfExists: true) + input[11] = file(params.pipelines_testdata_base_path + 'reference/salmon.tar.gz', checkIfExists: true) + input[12] = null + input[13] = file(params.pipelines_testdata_base_path + 'reference/hisat2.tar.gz', checkIfExists: true) + input[14] = null + input[15] = null + input[16] = gencode + input[17] = featurecounts_group_type + input[18] = aligner + input[19] = pseudo_aligner + input[20] = skip_gtf_filter + input[21] = skip_bbsplit + input[22] = skip_sortmerna + input[23] = skip_alignment + input[24] = skip_pseudo_alignment + """ + } + } + + then { + assertAll( + { assert workflow.success}, + { assert snapshot( + workflow.out.transcript_fasta, + workflow.out.salmon_index, + workflow.out.fasta, + workflow.out.gtf, + workflow.out.fai, + workflow.out.gene_bed, + workflow.out.chrom_sizes, + workflow.out.splicesites, + workflow.out.sortmerna_index, + workflow.out.star_index, + workflow.out.rsem_index, + workflow.out.hisat2_index, + workflow.out.kallisto_index, + workflow.out.versions + ).match() } + ) + } + } + + test("default options - stub") { + + options "-stub" + + when { + workflow { + """ + gencode = false + featurecounts_group_type = 'gene_biotype' + aligner = 'star_salmon,star_rsem,hisat2' + pseudo_aligner = 'salmon,kallisto' + skip_gtf_filter = false + skip_bbsplit = false + skip_sortmerna = true + skip_alignment = false + skip_pseudo_alignment = false + + input[0] = file(params.pipelines_testdata_base_path + 'reference/genome.fasta', checkIfExists: true) + input[1] = file(params.pipelines_testdata_base_path + 'reference/genes_with_empty_tid.gtf', checkIfExists: true) + input[2] = file(params.pipelines_testdata_base_path + 'reference/genes.gff', checkIfExists: true) + input[3] = file(params.pipelines_testdata_base_path + 'reference/gfp.fa', checkIfExists: true) + input[4] = file(params.pipelines_testdata_base_path + 'reference/transcriptome.fasta', checkIfExists: true) + input[5] = null + input[6] = null + input[7] = file(params.pipelines_testdata_base_path + 'reference/bbsplit_fasta_list.txt', checkIfExists: true) + input[8] = null + input[9] = null input[10] = file(params.pipelines_testdata_base_path + 'reference/rsem.tar.gz', checkIfExists: true) input[11] = file(params.pipelines_testdata_base_path + 'reference/salmon.tar.gz', checkIfExists: true) input[12] = null @@ -1344,4 +1414,1314 @@ nextflow_workflow { } } + test("gencode = false - stub") { + + options "-stub" + + when { + workflow { + """ + gencode = false + featurecounts_group_type = 'gene_biotype' + aligner = 'star_salmon,star_rsem,hisat2' + pseudo_aligner = 'salmon,kallisto' + skip_gtf_filter = false + skip_bbsplit = false + skip_sortmerna = true + skip_alignment = false + skip_pseudo_alignment = false + + input[0] = file(params.pipelines_testdata_base_path + 'reference/genome.fasta', checkIfExists: true) + input[1] = file(params.pipelines_testdata_base_path + 'reference/genes_with_empty_tid.gtf', checkIfExists: true) + input[2] = file(params.pipelines_testdata_base_path + 'reference/genes.gff', checkIfExists: true) + input[3] = file(params.pipelines_testdata_base_path + 'reference/gfp.fa', checkIfExists: true) + input[4] = file(params.pipelines_testdata_base_path + 'reference/transcriptome.fasta', checkIfExists: true) + input[5] = null + input[6] = null + input[7] = file(params.pipelines_testdata_base_path + 'reference/bbsplit_fasta_list.txt', checkIfExists: true) + input[8] = null + input[9] = null + input[10] = file(params.pipelines_testdata_base_path + 'reference/rsem.tar.gz', checkIfExists: true) + input[11] = file(params.pipelines_testdata_base_path + 'reference/salmon.tar.gz', checkIfExists: true) + input[12] = null + input[13] = file(params.pipelines_testdata_base_path + 'reference/hisat2.tar.gz', checkIfExists: true) + input[14] = null + input[15] = null + input[16] = gencode + input[17] = featurecounts_group_type + input[18] = aligner + input[19] = pseudo_aligner + input[20] = skip_gtf_filter + input[21] = skip_bbsplit + input[22] = skip_sortmerna + input[23] = skip_alignment + input[24] = skip_pseudo_alignment + """ + } + } + + then { + assertAll( + { assert workflow.success}, + { assert snapshot( + workflow.out.transcript_fasta, + workflow.out.salmon_index, + workflow.out.fasta, + workflow.out.gtf, + workflow.out.fai, + workflow.out.gene_bed, + workflow.out.chrom_sizes, + workflow.out.splicesites, + workflow.out.sortmerna_index, + workflow.out.star_index, + workflow.out.rsem_index, + workflow.out.hisat2_index, + workflow.out.kallisto_index, + workflow.out.versions + ).match() } + ) + } + } + + test("skip_gtf_filter - stub") { + + options "-stub" + + when { + workflow { + """ + gencode = false + featurecounts_group_type = 'gene_biotype' + aligner = 'star_salmon,star_rsem,hisat2' + pseudo_aligner = 'salmon,kallisto' + skip_gtf_filter = true + skip_bbsplit = false + skip_sortmerna = true + skip_alignment = false + skip_pseudo_alignment = false + + input[0] = file(params.pipelines_testdata_base_path + 'reference/genome.fasta', checkIfExists: true) + input[1] = file(params.pipelines_testdata_base_path + 'reference/genes_with_empty_tid.gtf', checkIfExists: true) + input[2] = file(params.pipelines_testdata_base_path + 'reference/genes.gff', checkIfExists: true) + input[3] = file(params.pipelines_testdata_base_path + 'reference/gfp.fa', checkIfExists: true) + input[4] = file(params.pipelines_testdata_base_path + 'reference/transcriptome.fasta', checkIfExists: true) + input[5] = null + input[6] = null + input[7] = file(params.pipelines_testdata_base_path + 'reference/bbsplit_fasta_list.txt', checkIfExists: true) + input[8] = null + input[9] = null + input[10] = file(params.pipelines_testdata_base_path + 'reference/rsem.tar.gz', checkIfExists: true) + input[11] = file(params.pipelines_testdata_base_path + 'reference/salmon.tar.gz', checkIfExists: true) + input[12] = null + input[13] = file(params.pipelines_testdata_base_path + 'reference/hisat2.tar.gz', checkIfExists: true) + input[14] = null + input[15] = null + input[16] = gencode + input[17] = featurecounts_group_type + input[18] = aligner + input[19] = pseudo_aligner + input[20] = skip_gtf_filter + input[21] = skip_bbsplit + input[22] = skip_sortmerna + input[23] = skip_alignment + input[24] = skip_pseudo_alignment + """ + } + } + + then { + assertAll( + { assert workflow.success}, + { assert snapshot( + workflow.out.transcript_fasta, + workflow.out.salmon_index, + workflow.out.fasta, + workflow.out.gtf, + workflow.out.fai, + workflow.out.gene_bed, + workflow.out.chrom_sizes, + workflow.out.splicesites, + workflow.out.sortmerna_index, + workflow.out.star_index, + workflow.out.rsem_index, + workflow.out.hisat2_index, + workflow.out.kallisto_index, + workflow.out.versions + ).match() } + ) + } + } + + test("skip_bbsplit - stub") { + + options "-stub" + + when { + workflow { + """ + gencode = false + featurecounts_group_type = 'gene_biotype' + aligner = 'star_salmon,star_rsem,hisat2' + pseudo_aligner = 'salmon,kallisto' + skip_gtf_filter = false + skip_bbsplit = true + skip_sortmerna = true + skip_alignment = false + skip_pseudo_alignment = false + + input[0] = file(params.pipelines_testdata_base_path + 'reference/genome.fasta', checkIfExists: true) + input[1] = file(params.pipelines_testdata_base_path + 'reference/genes_with_empty_tid.gtf', checkIfExists: true) + input[2] = file(params.pipelines_testdata_base_path + 'reference/genes.gff', checkIfExists: true) + input[3] = file(params.pipelines_testdata_base_path + 'reference/gfp.fa', checkIfExists: true) + input[4] = file(params.pipelines_testdata_base_path + 'reference/transcriptome.fasta', checkIfExists: true) + input[5] = null + input[6] = null + input[7] = file(params.pipelines_testdata_base_path + 'reference/bbsplit_fasta_list.txt', checkIfExists: true) + input[8] = null + input[9] = null + input[10] = file(params.pipelines_testdata_base_path + 'reference/rsem.tar.gz', checkIfExists: true) + input[11] = file(params.pipelines_testdata_base_path + 'reference/salmon.tar.gz', checkIfExists: true) + input[12] = null + input[13] = file(params.pipelines_testdata_base_path + 'reference/hisat2.tar.gz', checkIfExists: true) + input[14] = null + input[15] = null + input[16] = gencode + input[17] = featurecounts_group_type + input[18] = aligner + input[19] = pseudo_aligner + input[20] = skip_gtf_filter + input[21] = skip_bbsplit + input[22] = skip_sortmerna + input[23] = skip_alignment + input[24] = skip_pseudo_alignment + """ + } + } + + then { + assertAll( + { assert workflow.success}, + { assert snapshot( + workflow.out.transcript_fasta, + workflow.out.salmon_index, + workflow.out.fasta, + workflow.out.gtf, + workflow.out.fai, + workflow.out.gene_bed, + workflow.out.chrom_sizes, + workflow.out.splicesites, + workflow.out.sortmerna_index, + workflow.out.star_index, + workflow.out.rsem_index, + workflow.out.hisat2_index, + workflow.out.kallisto_index, + workflow.out.versions + ).match() } + ) + } + } + + test("skip_alignment - stub") { + + options "-stub" + + when { + workflow { + """ + gencode = false + featurecounts_group_type = 'gene_biotype' + aligner = 'star_salmon,star_rsem,hisat2' + pseudo_aligner = 'salmon,kallisto' + skip_gtf_filter = false + skip_bbsplit = false + skip_sortmerna = true + skip_alignment = true + skip_pseudo_alignment = false + + input[0] = file(params.pipelines_testdata_base_path + 'reference/genome.fasta', checkIfExists: true) + input[1] = file(params.pipelines_testdata_base_path + 'reference/genes_with_empty_tid.gtf', checkIfExists: true) + input[2] = file(params.pipelines_testdata_base_path + 'reference/genes.gff', checkIfExists: true) + input[3] = file(params.pipelines_testdata_base_path + 'reference/gfp.fa', checkIfExists: true) + input[4] = file(params.pipelines_testdata_base_path + 'reference/transcriptome.fasta', checkIfExists: true) + input[5] = null + input[6] = null + input[7] = file(params.pipelines_testdata_base_path + 'reference/bbsplit_fasta_list.txt', checkIfExists: true) + input[8] = null + input[9] = null + input[10] = file(params.pipelines_testdata_base_path + 'reference/rsem.tar.gz', checkIfExists: true) + input[11] = file(params.pipelines_testdata_base_path + 'reference/salmon.tar.gz', checkIfExists: true) + input[12] = null + input[13] = file(params.pipelines_testdata_base_path + 'reference/hisat2.tar.gz', checkIfExists: true) + input[14] = null + input[15] = null + input[16] = gencode + input[17] = featurecounts_group_type + input[18] = aligner + input[19] = pseudo_aligner + input[20] = skip_gtf_filter + input[21] = skip_bbsplit + input[22] = skip_sortmerna + input[23] = skip_alignment + input[24] = skip_pseudo_alignment + """ + } + } + + then { + assertAll( + { assert workflow.success}, + { assert snapshot( + workflow.out.transcript_fasta, + workflow.out.salmon_index, + workflow.out.fasta, + workflow.out.gtf, + workflow.out.fai, + workflow.out.gene_bed, + workflow.out.chrom_sizes, + workflow.out.splicesites, + workflow.out.sortmerna_index, + workflow.out.star_index, + workflow.out.rsem_index, + workflow.out.hisat2_index, + workflow.out.kallisto_index, + workflow.out.versions + ).match() } + ) + } + } + + test("skip_psuedo_alignment - stub") { + + options "-stub" + + when { + workflow { + """ + gencode = false + featurecounts_group_type = 'gene_biotype' + aligner = 'star_salmon,star_rsem,hisat2' + pseudo_aligner = 'salmon,kallisto' + skip_gtf_filter = false + skip_bbsplit = false + skip_sortmerna = true + skip_alignment = false + skip_pseudo_alignment = true + + input[0] = file(params.pipelines_testdata_base_path + 'reference/genome.fasta', checkIfExists: true) + input[1] = file(params.pipelines_testdata_base_path + 'reference/genes_with_empty_tid.gtf', checkIfExists: true) + input[2] = file(params.pipelines_testdata_base_path + 'reference/genes.gff', checkIfExists: true) + input[3] = file(params.pipelines_testdata_base_path + 'reference/gfp.fa', checkIfExists: true) + input[4] = file(params.pipelines_testdata_base_path + 'reference/transcriptome.fasta', checkIfExists: true) + input[5] = null + input[6] = null + input[7] = file(params.pipelines_testdata_base_path + 'reference/bbsplit_fasta_list.txt', checkIfExists: true) + input[8] = null + input[9] = null + input[10] = file(params.pipelines_testdata_base_path + 'reference/rsem.tar.gz', checkIfExists: true) + input[11] = file(params.pipelines_testdata_base_path + 'reference/salmon.tar.gz', checkIfExists: true) + input[12] = null + input[13] = file(params.pipelines_testdata_base_path + 'reference/hisat2.tar.gz', checkIfExists: true) + input[14] = null + input[15] = null + input[16] = gencode + input[17] = featurecounts_group_type + input[18] = aligner + input[19] = pseudo_aligner + input[20] = skip_gtf_filter + input[21] = skip_bbsplit + input[22] = skip_sortmerna + input[23] = skip_alignment + input[24] = skip_pseudo_alignment + """ + } + } + + then { + assertAll( + { assert workflow.success}, + { assert snapshot( + workflow.out.transcript_fasta, + workflow.out.salmon_index, + workflow.out.fasta, + workflow.out.gtf, + workflow.out.fai, + workflow.out.gene_bed, + workflow.out.chrom_sizes, + workflow.out.splicesites, + workflow.out.sortmerna_index, + workflow.out.star_index, + workflow.out.rsem_index, + workflow.out.hisat2_index, + workflow.out.kallisto_index, + workflow.out.versions + ).match() } + ) + } + } + + test("gtf = false - stub") { + + options "-stub" + + when { + workflow { + """ + gencode = true + featurecounts_group_type = 'gene_biotype' + aligner = 'star_salmon,star_rsem,hisat2' + pseudo_aligner = 'salmon,kallisto' + skip_gtf_filter = false + skip_bbsplit = false + skip_sortmerna = true + skip_alignment = false + skip_pseudo_alignment = false + + input[0] = file(params.pipelines_testdata_base_path + 'reference/genome.fasta', checkIfExists: true) + input[1] = false + input[2] = file(params.pipelines_testdata_base_path + 'reference/genes.gff', checkIfExists: true) + input[3] = file(params.pipelines_testdata_base_path + 'reference/gfp.fa', checkIfExists: true) + input[4] = file(params.pipelines_testdata_base_path + 'reference/transcriptome.fasta', checkIfExists: true) + input[5] = null + input[6] = null + input[7] = file(params.pipelines_testdata_base_path + 'reference/bbsplit_fasta_list.txt', checkIfExists: true) + input[8] = null + input[9] = null + input[10] = file(params.pipelines_testdata_base_path + 'reference/rsem.tar.gz', checkIfExists: true) + input[11] = file(params.pipelines_testdata_base_path + 'reference/salmon.tar.gz', checkIfExists: true) + input[12] = null + input[13] = file(params.pipelines_testdata_base_path + 'reference/hisat2.tar.gz', checkIfExists: true) + input[14] = null + input[15] = null + input[16] = gencode + input[17] = featurecounts_group_type + input[18] = aligner + input[19] = pseudo_aligner + input[20] = skip_gtf_filter + input[21] = skip_bbsplit + input[22] = skip_sortmerna + input[23] = skip_alignment + input[24] = skip_pseudo_alignment + """ + } + } + + then { + assertAll( + { assert workflow.success}, + { assert snapshot( + workflow.out.transcript_fasta, + workflow.out.salmon_index, + workflow.out.fasta, + workflow.out.gtf, + workflow.out.fai, + workflow.out.gene_bed, + workflow.out.chrom_sizes, + workflow.out.splicesites, + workflow.out.sortmerna_index, + workflow.out.star_index, + workflow.out.rsem_index, + workflow.out.hisat2_index, + workflow.out.kallisto_index, + workflow.out.versions + ).match() } + ) + } + } + + test("gff = false - stub") { + + options "-stub" + + when { + workflow { + """ + gencode = false + featurecounts_group_type = 'gene_biotype' + aligner = 'star_salmon,star_rsem,hisat2' + pseudo_aligner = 'salmon,kallisto' + skip_gtf_filter = false + skip_bbsplit = false + skip_sortmerna = true + skip_alignment = false + skip_pseudo_alignment = false + + input[0] = file(params.pipelines_testdata_base_path + 'reference/genome.fasta', checkIfExists: true) + input[1] = file(params.pipelines_testdata_base_path + 'reference/genes_with_empty_tid.gtf', checkIfExists: true) + input[2] = false + input[3] = file(params.pipelines_testdata_base_path + 'reference/gfp.fa', checkIfExists: true) + input[4] = file(params.pipelines_testdata_base_path + 'reference/transcriptome.fasta', checkIfExists: true) + input[5] = null + input[6] = null + input[7] = file(params.pipelines_testdata_base_path + 'reference/bbsplit_fasta_list.txt', checkIfExists: true) + input[8] = null + input[9] = null + input[10] = file(params.pipelines_testdata_base_path + 'reference/rsem.tar.gz', checkIfExists: true) + input[11] = file(params.pipelines_testdata_base_path + 'reference/salmon.tar.gz', checkIfExists: true) + input[12] = null + input[13] = file(params.pipelines_testdata_base_path + 'reference/hisat2.tar.gz', checkIfExists: true) + input[14] = null + input[15] = null + input[16] = gencode + input[17] = featurecounts_group_type + input[18] = aligner + input[19] = pseudo_aligner + input[20] = skip_gtf_filter + input[21] = skip_bbsplit + input[22] = skip_sortmerna + input[23] = skip_alignment + input[24] = skip_pseudo_alignment + """ + } + } + + then { + assertAll( + { assert workflow.success}, + { assert snapshot( + workflow.out.transcript_fasta, + workflow.out.salmon_index, + workflow.out.fasta, + workflow.out.gtf, + workflow.out.fai, + workflow.out.gene_bed, + workflow.out.chrom_sizes, + workflow.out.splicesites, + workflow.out.sortmerna_index, + workflow.out.star_index, + workflow.out.rsem_index, + workflow.out.hisat2_index, + workflow.out.kallisto_index, + workflow.out.versions + ).match() } + ) + } + } + + test("gfp = false - stub") { + + options "-stub" + + when { + workflow { + """ + gencode = false + featurecounts_group_type = 'gene_biotype' + aligner = 'star_salmon,star_rsem,hisat2' + pseudo_aligner = 'salmon,kallisto' + skip_gtf_filter = false + skip_bbsplit = false + skip_sortmerna = true + skip_alignment = false + skip_pseudo_alignment = false + + input[0] = file(params.pipelines_testdata_base_path + 'reference/genome.fasta', checkIfExists: true) + input[1] = file(params.pipelines_testdata_base_path + 'reference/genes_with_empty_tid.gtf', checkIfExists: true) + input[2] = file(params.pipelines_testdata_base_path + 'reference/genes.gff', checkIfExists: true) + input[3] = false + input[4] = file(params.pipelines_testdata_base_path + 'reference/transcriptome.fasta', checkIfExists: true) + input[5] = null + input[6] = null + input[7] = file(params.pipelines_testdata_base_path + 'reference/bbsplit_fasta_list.txt', checkIfExists: true) + input[8] = null + input[9] = null + input[10] = file(params.pipelines_testdata_base_path + 'reference/rsem.tar.gz', checkIfExists: true) + input[11] = file(params.pipelines_testdata_base_path + 'reference/salmon.tar.gz', checkIfExists: true) + input[12] = null + input[13] = file(params.pipelines_testdata_base_path + 'reference/hisat2.tar.gz', checkIfExists: true) + input[14] = null + input[15] = null + input[16] = gencode + input[17] = featurecounts_group_type + input[18] = aligner + input[19] = pseudo_aligner + input[20] = skip_gtf_filter + input[21] = skip_bbsplit + input[22] = skip_sortmerna + input[23] = skip_alignment + input[24] = skip_pseudo_alignment + """ + } + } + + then { + assertAll( + { assert workflow.success}, + { assert snapshot( + workflow.out.transcript_fasta, + workflow.out.salmon_index, + workflow.out.fasta, + workflow.out.gtf, + workflow.out.fai, + workflow.out.gene_bed, + workflow.out.chrom_sizes, + workflow.out.splicesites, + workflow.out.sortmerna_index, + workflow.out.star_index, + workflow.out.rsem_index, + workflow.out.hisat2_index, + workflow.out.kallisto_index, + workflow.out.versions + ).match() } + ) + } + } + + test("transcriptome = false - stub") { + + options "-stub" + + when { + workflow { + """ + gencode = false + featurecounts_group_type = 'gene_biotype' + aligner = 'star_salmon,star_rsem,hisat2' + pseudo_aligner = 'salmon,kallisto' + skip_gtf_filter = false + skip_bbsplit = false + skip_sortmerna = true + skip_alignment = false + skip_pseudo_alignment = false + + input[0] = file(params.pipelines_testdata_base_path + 'reference/genome.fasta', checkIfExists: true) + input[1] = file(params.pipelines_testdata_base_path + 'reference/genes_with_empty_tid.gtf', checkIfExists: true) + input[2] = file(params.pipelines_testdata_base_path + 'reference/genes.gff', checkIfExists: true) + input[3] = file(params.pipelines_testdata_base_path + 'reference/gfp.fa', checkIfExists: true) + input[4] = false + input[5] = null + input[6] = null + input[7] = file(params.pipelines_testdata_base_path + 'reference/bbsplit_fasta_list.txt', checkIfExists: true) + input[8] = null + input[9] = null + input[10] = file(params.pipelines_testdata_base_path + 'reference/rsem.tar.gz', checkIfExists: true) + input[11] = file(params.pipelines_testdata_base_path + 'reference/salmon.tar.gz', checkIfExists: true) + input[12] = null + input[13] = file(params.pipelines_testdata_base_path + 'reference/hisat2.tar.gz', checkIfExists: true) + input[14] = null + input[15] = null + input[16] = gencode + input[17] = featurecounts_group_type + input[18] = aligner + input[19] = pseudo_aligner + input[20] = skip_gtf_filter + input[21] = skip_bbsplit + input[22] = skip_sortmerna + input[23] = skip_alignment + input[24] = skip_pseudo_alignment + """ + } + } + + then { + assertAll( + { assert workflow.success}, + { assert snapshot( + workflow.out.transcript_fasta, + workflow.out.salmon_index, + workflow.out.fasta, + workflow.out.gtf, + workflow.out.fai, + workflow.out.gene_bed, + workflow.out.chrom_sizes, + workflow.out.splicesites, + workflow.out.sortmerna_index, + workflow.out.star_index, + workflow.out.rsem_index, + workflow.out.hisat2_index, + workflow.out.kallisto_index, + workflow.out.versions + ).match() } + ) + } + } + + test("with bed - stub") { + + options "-stub" + + when { + workflow { + """ + gencode = false + featurecounts_group_type = 'gene_biotype' + aligner = 'star_salmon,star_rsem,hisat2' + pseudo_aligner = 'salmon,kallisto' + skip_gtf_filter = false + skip_bbsplit = false + skip_sortmerna = true + skip_alignment = false + skip_pseudo_alignment = false + + input[0] = file(params.pipelines_testdata_base_path + 'reference/genome.fasta', checkIfExists: true) + input[1] = file(params.pipelines_testdata_base_path + 'reference/genes_with_empty_tid.gtf', checkIfExists: true) + input[2] = file(params.pipelines_testdata_base_path + 'reference/genes.gff', checkIfExists: true) + input[3] = file(params.pipelines_testdata_base_path + 'reference/gfp.fa', checkIfExists: true) + input[4] = file(params.pipelines_testdata_base_path + 'reference/transcriptome.fasta', checkIfExists: true) + input[5] = file(params.pipelines_testdata_base_path + 'reference/ngscheckmate.bed', checkIfExists: true) + input[6] = null + input[7] = file(params.pipelines_testdata_base_path + 'reference/bbsplit_fasta_list.txt', checkIfExists: true) + input[8] = null + input[9] = null + input[10] = file(params.pipelines_testdata_base_path + 'reference/rsem.tar.gz', checkIfExists: true) + input[11] = file(params.pipelines_testdata_base_path + 'reference/salmon.tar.gz', checkIfExists: true) + input[12] = null + input[13] = file(params.pipelines_testdata_base_path + 'reference/hisat2.tar.gz', checkIfExists: true) + input[14] = null + input[15] = null + input[16] = gencode + input[17] = featurecounts_group_type + input[18] = aligner + input[19] = pseudo_aligner + input[20] = skip_gtf_filter + input[21] = skip_bbsplit + input[22] = skip_sortmerna + input[23] = skip_alignment + input[24] = skip_pseudo_alignment + """ + } + } + + then { + assertAll( + { assert workflow.success}, + { assert snapshot( + workflow.out.transcript_fasta, + workflow.out.salmon_index, + workflow.out.fasta, + workflow.out.gtf, + workflow.out.fai, + workflow.out.gene_bed, + workflow.out.chrom_sizes, + workflow.out.splicesites, + workflow.out.sortmerna_index, + workflow.out.star_index, + workflow.out.rsem_index, + workflow.out.hisat2_index, + workflow.out.kallisto_index, + workflow.out.versions + ).match() } + ) + } + } + + test("rsem_index = false - stub") { + + options "-stub" + + when { + workflow { + """ + gencode = false + featurecounts_group_type = 'gene_biotype' + aligner = 'star_salmon,star_rsem,hisat2' + pseudo_aligner = 'salmon,kallisto' + skip_gtf_filter = false + skip_bbsplit = false + skip_sortmerna = true + skip_alignment = false + skip_pseudo_alignment = false + + input[0] = file(params.pipelines_testdata_base_path + 'reference/genome.fasta', checkIfExists: true) + input[1] = file(params.pipelines_testdata_base_path + 'reference/genes_with_empty_tid.gtf', checkIfExists: true) + input[2] = file(params.pipelines_testdata_base_path + 'reference/genes.gff', checkIfExists: true) + input[3] = file(params.pipelines_testdata_base_path + 'reference/gfp.fa', checkIfExists: true) + input[4] = file(params.pipelines_testdata_base_path + 'reference/transcriptome.fasta', checkIfExists: true) + input[5] = null + input[6] = null + input[7] = file(params.pipelines_testdata_base_path + 'reference/bbsplit_fasta_list.txt', checkIfExists: true) + input[8] = null + input[9] = null + input[10] = false + input[11] = file(params.pipelines_testdata_base_path + 'reference/salmon.tar.gz', checkIfExists: true) + input[12] = null + input[13] = file(params.pipelines_testdata_base_path + 'reference/hisat2.tar.gz', checkIfExists: true) + input[14] = null + input[15] = null + input[16] = gencode + input[17] = featurecounts_group_type + input[18] = aligner + input[19] = pseudo_aligner + input[20] = skip_gtf_filter + input[21] = skip_bbsplit + input[22] = skip_sortmerna + input[23] = skip_alignment + input[24] = skip_pseudo_alignment + """ + } + } + + then { + assertAll( + { assert workflow.success}, + { assert snapshot( + workflow.out.transcript_fasta, + workflow.out.salmon_index, + workflow.out.fasta, + workflow.out.gtf, + workflow.out.fai, + workflow.out.gene_bed, + workflow.out.chrom_sizes, + workflow.out.splicesites, + workflow.out.sortmerna_index, + workflow.out.star_index, + workflow.out.rsem_index, + workflow.out.hisat2_index, + workflow.out.kallisto_index, + workflow.out.versions + ).match() } + ) + } + } + + test("salmon_index = false - stub") { + + options "-stub" + + when { + workflow { + """ + gencode = false + featurecounts_group_type = 'gene_biotype' + aligner = 'star_salmon,star_rsem,hisat2' + pseudo_aligner = 'salmon,kallisto' + skip_gtf_filter = false + skip_bbsplit = false + skip_sortmerna = true + skip_alignment = false + skip_pseudo_alignment = false + + input[0] = file(params.pipelines_testdata_base_path + 'reference/genome.fasta', checkIfExists: true) + input[1] = file(params.pipelines_testdata_base_path + 'reference/genes_with_empty_tid.gtf', checkIfExists: true) + input[2] = file(params.pipelines_testdata_base_path + 'reference/genes.gff', checkIfExists: true) + input[3] = file(params.pipelines_testdata_base_path + 'reference/gfp.fa', checkIfExists: true) + input[4] = file(params.pipelines_testdata_base_path + 'reference/transcriptome.fasta', checkIfExists: true) + input[5] = null + input[6] = null + input[7] = file(params.pipelines_testdata_base_path + 'reference/bbsplit_fasta_list.txt', checkIfExists: true) + input[8] = null + input[9] = null + input[10] = file(params.pipelines_testdata_base_path + 'reference/rsem.tar.gz', checkIfExists: true) + input[11] = false + input[12] = null + input[13] = file(params.pipelines_testdata_base_path + 'reference/hisat2.tar.gz', checkIfExists: true) + input[14] = null + input[15] = null + input[16] = gencode + input[17] = featurecounts_group_type + input[18] = aligner + input[19] = pseudo_aligner + input[20] = skip_gtf_filter + input[21] = skip_bbsplit + input[22] = skip_sortmerna + input[23] = skip_alignment + input[24] = skip_pseudo_alignment + """ + } + } + + then { + assertAll( + { assert workflow.success}, + { assert snapshot( + workflow.out.transcript_fasta, + workflow.out.salmon_index, + workflow.out.fasta, + workflow.out.gtf, + workflow.out.fai, + workflow.out.gene_bed, + workflow.out.chrom_sizes, + workflow.out.splicesites, + workflow.out.sortmerna_index, + workflow.out.star_index, + workflow.out.rsem_index, + workflow.out.hisat2_index, + workflow.out.kallisto_index, + workflow.out.versions + ).match() } + ) + } + } + + test("hisat2_index = false - stub") { + + options "-stub" + + when { + workflow { + """ + gencode = false + featurecounts_group_type = 'gene_biotype' + aligner = 'star_salmon,star_rsem,hisat2' + pseudo_aligner = 'salmon,kallisto' + skip_gtf_filter = false + skip_bbsplit = false + skip_sortmerna = true + skip_alignment = false + skip_pseudo_alignment = false + + input[0] = file(params.pipelines_testdata_base_path + 'reference/genome.fasta', checkIfExists: true) + input[1] = file(params.pipelines_testdata_base_path + 'reference/genes_with_empty_tid.gtf', checkIfExists: true) + input[2] = file(params.pipelines_testdata_base_path + 'reference/genes.gff', checkIfExists: true) + input[3] = file(params.pipelines_testdata_base_path + 'reference/gfp.fa', checkIfExists: true) + input[4] = file(params.pipelines_testdata_base_path + 'reference/transcriptome.fasta', checkIfExists: true) + input[5] = null + input[6] = null + input[7] = file(params.pipelines_testdata_base_path + 'reference/bbsplit_fasta_list.txt', checkIfExists: true) + input[8] = null + input[9] = null + input[10] = file(params.pipelines_testdata_base_path + 'reference/rsem.tar.gz', checkIfExists: true) + input[11] = false + input[12] = null + input[13] = false + input[14] = null + input[15] = null + input[16] = gencode + input[17] = featurecounts_group_type + input[18] = aligner + input[19] = pseudo_aligner + input[20] = skip_gtf_filter + input[21] = skip_bbsplit + input[22] = skip_sortmerna + input[23] = skip_alignment + input[24] = skip_pseudo_alignment + """ + } + } + + then { + assertAll( + { assert workflow.success}, + { assert snapshot( + workflow.out.transcript_fasta, + workflow.out.salmon_index, + workflow.out.fasta, + workflow.out.gtf, + workflow.out.fai, + workflow.out.gene_bed, + workflow.out.chrom_sizes, + workflow.out.splicesites, + workflow.out.sortmerna_index, + workflow.out.star_index, + workflow.out.rsem_index, + workflow.out.hisat2_index, + workflow.out.kallisto_index, + workflow.out.versions + ).match() } + ) + } + } + + test("gencode = true - stub") { + + options "-stub" + + when { + workflow { + """ + gencode = true + featurecounts_group_type = 'gene_biotype' + aligner = 'star_salmon,star_rsem,hisat2' + pseudo_aligner = 'salmon,kallisto' + skip_gtf_filter = false + skip_bbsplit = false + skip_sortmerna = true + skip_alignment = false + skip_pseudo_alignment = false + + input[0] = file(params.pipelines_testdata_base_path + 'reference/genome.fasta', checkIfExists: true) + input[1] = file(params.pipelines_testdata_base_path + 'reference/genes_with_empty_tid.gtf', checkIfExists: true) + input[2] = file(params.pipelines_testdata_base_path + 'reference/genes.gff', checkIfExists: true) + input[3] = file(params.pipelines_testdata_base_path + 'reference/gfp.fa', checkIfExists: true) + input[4] = file(params.pipelines_testdata_base_path + 'reference/transcriptome.fasta', checkIfExists: true) + input[5] = null + input[6] = null + input[7] = file(params.pipelines_testdata_base_path + 'reference/bbsplit_fasta_list.txt', checkIfExists: true) + input[8] = null + input[9] = null + input[10] = file(params.pipelines_testdata_base_path + 'reference/rsem.tar.gz', checkIfExists: true) + input[11] = file(params.pipelines_testdata_base_path + 'reference/salmon.tar.gz', checkIfExists: true) + input[12] = null + input[13] = file(params.pipelines_testdata_base_path + 'reference/hisat2.tar.gz', checkIfExists: true) + input[14] = null + input[15] = null + input[16] = gencode + input[17] = featurecounts_group_type + input[18] = aligner + input[19] = pseudo_aligner + input[20] = skip_gtf_filter + input[21] = skip_bbsplit + input[22] = skip_sortmerna + input[23] = skip_alignment + input[24] = skip_pseudo_alignment + """ + } + } + + then { + assertAll( + { assert workflow.success}, + { assert snapshot( + workflow.out.transcript_fasta, + workflow.out.salmon_index, + workflow.out.fasta, + workflow.out.gtf, + workflow.out.fai, + workflow.out.gene_bed, + workflow.out.chrom_sizes, + workflow.out.splicesites, + workflow.out.sortmerna_index, + workflow.out.star_index, + workflow.out.rsem_index, + workflow.out.hisat2_index, + workflow.out.kallisto_index, + workflow.out.versions + ).match() } + ) + } + } + + test("featurecounts_group_type = 'gene_type' - stub") { + + options "-stub" + + when { + workflow { + """ + gencode = false + featurecounts_group_type = 'gene_type' + aligner = 'star_salmon,star_rsem,hisat2' + pseudo_aligner = 'salmon,kallisto' + skip_gtf_filter = false + skip_bbsplit = false + skip_sortmerna = true + skip_alignment = false + skip_pseudo_alignment = false + + input[0] = file(params.pipelines_testdata_base_path + 'reference/genome.fasta', checkIfExists: true) + input[1] = file(params.pipelines_testdata_base_path + 'reference/genes_with_empty_tid.gtf', checkIfExists: true) + input[2] = file(params.pipelines_testdata_base_path + 'reference/genes.gff', checkIfExists: true) + input[3] = file(params.pipelines_testdata_base_path + 'reference/gfp.fa', checkIfExists: true) + input[4] = file(params.pipelines_testdata_base_path + 'reference/transcriptome.fasta', checkIfExists: true) + input[5] = null + input[6] = null + input[7] = file(params.pipelines_testdata_base_path + 'reference/bbsplit_fasta_list.txt', checkIfExists: true) + input[8] = null + input[9] = null + input[10] = file(params.pipelines_testdata_base_path + 'reference/rsem.tar.gz', checkIfExists: true) + input[11] = file(params.pipelines_testdata_base_path + 'reference/salmon.tar.gz', checkIfExists: true) + input[12] = null + input[13] = file(params.pipelines_testdata_base_path + 'reference/hisat2.tar.gz', checkIfExists: true) + input[14] = null + input[15] = null + input[16] = gencode + input[17] = featurecounts_group_type + input[18] = aligner + input[19] = pseudo_aligner + input[20] = skip_gtf_filter + input[21] = skip_bbsplit + input[22] = skip_sortmerna + input[23] = skip_alignment + input[24] = skip_pseudo_alignment + """ + } + } + + then { + assertAll( + { assert workflow.success}, + { assert snapshot( + workflow.out.transcript_fasta, + workflow.out.salmon_index, + workflow.out.fasta, + workflow.out.gtf, + workflow.out.fai, + workflow.out.gene_bed, + workflow.out.chrom_sizes, + workflow.out.splicesites, + workflow.out.sortmerna_index, + workflow.out.star_index, + workflow.out.rsem_index, + workflow.out.hisat2_index, + workflow.out.kallisto_index, + workflow.out.versions + ).match() } + ) + } + } + + test("skip_gtf_filter = true - stub") { + + options "-stub" + + when { + workflow { + """ + gencode = false + featurecounts_group_type = 'gene_biotype' + aligner = 'star_salmon,star_rsem,hisat2' + pseudo_aligner = 'salmon,kallisto' + skip_gtf_filter = true + skip_bbsplit = false + skip_sortmerna = true + skip_alignment = false + skip_pseudo_alignment = false + + input[0] = file(params.pipelines_testdata_base_path + 'reference/genome.fasta', checkIfExists: true) + input[1] = file(params.pipelines_testdata_base_path + 'reference/genes_with_empty_tid.gtf', checkIfExists: true) + input[2] = file(params.pipelines_testdata_base_path + 'reference/genes.gff', checkIfExists: true) + input[3] = file(params.pipelines_testdata_base_path + 'reference/gfp.fa', checkIfExists: true) + input[4] = file(params.pipelines_testdata_base_path + 'reference/transcriptome.fasta', checkIfExists: true) + input[5] = null + input[6] = null + input[7] = file(params.pipelines_testdata_base_path + 'reference/bbsplit_fasta_list.txt', checkIfExists: true) + input[8] = null + input[9] = null + input[10] = file(params.pipelines_testdata_base_path + 'reference/rsem.tar.gz', checkIfExists: true) + input[11] = file(params.pipelines_testdata_base_path + 'reference/salmon.tar.gz', checkIfExists: true) + input[12] = null + input[13] = file(params.pipelines_testdata_base_path + 'reference/hisat2.tar.gz', checkIfExists: true) + input[14] = null + input[15] = null + input[16] = gencode + input[17] = featurecounts_group_type + input[18] = aligner + input[19] = pseudo_aligner + input[20] = skip_gtf_filter + input[21] = skip_bbsplit + input[22] = skip_sortmerna + input[23] = skip_alignment + input[24] = skip_pseudo_alignment + """ + } + } + + then { + assertAll( + { assert workflow.success}, + { assert snapshot( + workflow.out.transcript_fasta, + workflow.out.salmon_index, + workflow.out.fasta, + workflow.out.gtf, + workflow.out.fai, + workflow.out.gene_bed, + workflow.out.chrom_sizes, + workflow.out.splicesites, + workflow.out.sortmerna_index, + workflow.out.star_index, + workflow.out.rsem_index, + workflow.out.hisat2_index, + workflow.out.kallisto_index, + workflow.out.versions + ).match() } + ) + } + } + + test("skip_bbsplit = true - stub") { + + options "-stub" + + when { + workflow { + """ + gencode = false + featurecounts_group_type = 'gene_biotype' + aligner = 'star_salmon,star_rsem,hisat2' + pseudo_aligner = 'salmon,kallisto' + skip_gtf_filter = false + skip_bbsplit = true + skip_sortmerna = true + skip_alignment = false + skip_pseudo_alignment = false + + input[0] = file(params.pipelines_testdata_base_path + 'reference/genome.fasta', checkIfExists: true) + input[1] = file(params.pipelines_testdata_base_path + 'reference/genes_with_empty_tid.gtf', checkIfExists: true) + input[2] = file(params.pipelines_testdata_base_path + 'reference/genes.gff', checkIfExists: true) + input[3] = file(params.pipelines_testdata_base_path + 'reference/gfp.fa', checkIfExists: true) + input[4] = file(params.pipelines_testdata_base_path + 'reference/transcriptome.fasta', checkIfExists: true) + input[5] = null + input[6] = null + input[7] = file(params.pipelines_testdata_base_path + 'reference/bbsplit_fasta_list.txt', checkIfExists: true) + input[8] = null + input[9] = null + input[10] = file(params.pipelines_testdata_base_path + 'reference/rsem.tar.gz', checkIfExists: true) + input[11] = file(params.pipelines_testdata_base_path + 'reference/salmon.tar.gz', checkIfExists: true) + input[12] = null + input[13] = file(params.pipelines_testdata_base_path + 'reference/hisat2.tar.gz', checkIfExists: true) + input[14] = null + input[15] = null + input[16] = gencode + input[17] = featurecounts_group_type + input[18] = aligner + input[19] = pseudo_aligner + input[20] = skip_gtf_filter + input[21] = skip_bbsplit + input[22] = skip_sortmerna + input[23] = skip_alignment + input[24] = skip_pseudo_alignment + """ + } + } + + then { + assertAll( + { assert workflow.success}, + { assert snapshot( + workflow.out.transcript_fasta, + workflow.out.salmon_index, + workflow.out.fasta, + workflow.out.gtf, + workflow.out.fai, + workflow.out.gene_bed, + workflow.out.chrom_sizes, + workflow.out.splicesites, + workflow.out.sortmerna_index, + workflow.out.star_index, + workflow.out.rsem_index, + workflow.out.hisat2_index, + workflow.out.kallisto_index, + workflow.out.versions + ).match() } + ) + } + } + + test("skip_alignment = true - stub") { + + options "-stub" + + when { + workflow { + """ + gencode = false + featurecounts_group_type = 'gene_biotype' + aligner = 'star_salmon,star_rsem,hisat2' + pseudo_aligner = 'salmon,kallisto' + skip_gtf_filter = false + skip_bbsplit = false + skip_sortmerna = true + skip_alignment = true + skip_pseudo_alignment = false + + input[0] = file(params.pipelines_testdata_base_path + 'reference/genome.fasta', checkIfExists: true) + input[1] = file(params.pipelines_testdata_base_path + 'reference/genes_with_empty_tid.gtf', checkIfExists: true) + input[2] = file(params.pipelines_testdata_base_path + 'reference/genes.gff', checkIfExists: true) + input[3] = file(params.pipelines_testdata_base_path + 'reference/gfp.fa', checkIfExists: true) + input[4] = file(params.pipelines_testdata_base_path + 'reference/transcriptome.fasta', checkIfExists: true) + input[5] = null + input[6] = null + input[7] = file(params.pipelines_testdata_base_path + 'reference/bbsplit_fasta_list.txt', checkIfExists: true) + input[8] = null + input[9] = null + input[10] = file(params.pipelines_testdata_base_path + 'reference/rsem.tar.gz', checkIfExists: true) + input[11] = file(params.pipelines_testdata_base_path + 'reference/salmon.tar.gz', checkIfExists: true) + input[12] = null + input[13] = file(params.pipelines_testdata_base_path + 'reference/hisat2.tar.gz', checkIfExists: true) + input[14] = null + input[15] = null + input[16] = gencode + input[17] = featurecounts_group_type + input[18] = aligner + input[19] = pseudo_aligner + input[20] = skip_gtf_filter + input[21] = skip_bbsplit + input[22] = skip_sortmerna + input[23] = skip_alignment + input[24] = skip_pseudo_alignment + """ + } + } + + then { + assertAll( + { assert workflow.success}, + { assert snapshot( + workflow.out.transcript_fasta, + workflow.out.salmon_index, + workflow.out.fasta, + workflow.out.gtf, + workflow.out.fai, + workflow.out.gene_bed, + workflow.out.chrom_sizes, + workflow.out.splicesites, + workflow.out.sortmerna_index, + workflow.out.star_index, + workflow.out.rsem_index, + workflow.out.hisat2_index, + workflow.out.kallisto_index, + workflow.out.versions + ).match() } + ) + } + } + + test("skip_pseudoalignment = true - stub") { + + options "-stub" + + when { + workflow { + """ + gencode = false + featurecounts_group_type = 'gene_biotype' + aligner = 'star_salmon,star_rsem,hisat2' + pseudo_aligner = 'salmon,kallisto' + skip_gtf_filter = false + skip_bbsplit = false + skip_sortmerna = true + skip_alignment = false + skip_pseudo_alignment = true + + input[0] = file(params.pipelines_testdata_base_path + 'reference/genome.fasta', checkIfExists: true) + input[1] = file(params.pipelines_testdata_base_path + 'reference/genes_with_empty_tid.gtf', checkIfExists: true) + input[2] = file(params.pipelines_testdata_base_path + 'reference/genes.gff', checkIfExists: true) + input[3] = file(params.pipelines_testdata_base_path + 'reference/gfp.fa', checkIfExists: true) + input[4] = file(params.pipelines_testdata_base_path + 'reference/transcriptome.fasta', checkIfExists: true) + input[5] = null + input[6] = null + input[7] = file(params.pipelines_testdata_base_path + 'reference/bbsplit_fasta_list.txt', checkIfExists: true) + input[8] = null + input[9] = null + input[10] = file(params.pipelines_testdata_base_path + 'reference/rsem.tar.gz', checkIfExists: true) + input[11] = file(params.pipelines_testdata_base_path + 'reference/salmon.tar.gz', checkIfExists: true) + input[12] = null + input[13] = file(params.pipelines_testdata_base_path + 'reference/hisat2.tar.gz', checkIfExists: true) + input[14] = null + input[15] = null + input[16] = gencode + input[17] = featurecounts_group_type + input[18] = aligner + input[19] = pseudo_aligner + input[20] = skip_gtf_filter + input[21] = skip_bbsplit + input[22] = skip_sortmerna + input[23] = skip_alignment + input[24] = skip_pseudo_alignment + """ + } + } + + then { + assertAll( + { assert workflow.success}, + { assert snapshot( + workflow.out.transcript_fasta, + workflow.out.salmon_index, + workflow.out.fasta, + workflow.out.gtf, + workflow.out.fai, + workflow.out.gene_bed, + workflow.out.chrom_sizes, + workflow.out.splicesites, + workflow.out.sortmerna_index, + workflow.out.star_index, + workflow.out.rsem_index, + workflow.out.hisat2_index, + workflow.out.kallisto_index, + workflow.out.versions + ).match() } + ) + } + } } diff --git a/subworkflows/local/prepare_genome/tests/main.nf.test.snap b/subworkflows/local/prepare_genome/tests/main.nf.test.snap index 2741bb23d..b43963ea7 100644 --- a/subworkflows/local/prepare_genome/tests/main.nf.test.snap +++ b/subworkflows/local/prepare_genome/tests/main.nf.test.snap @@ -1,8 +1,996 @@ { - "gencode = true": { + "skip_gtf_filter = true - stub": { + "content": [ + [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" + ], + [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" + ], + [ + "genome_transcriptome.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + "genome_transcriptome.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + "genome_transcriptome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + "genome_transcriptome.bed:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + "genome_transcriptome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", + "versions.yml:md5,71252f1a221be05593361acccb99506b", + "versions.yml:md5,bc99889446f02427c166b3219b793672", + "versions.yml:md5,cc8f32b7c37c35a075d38cb773004eaa" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-03T11:03:49.482635" + }, + "skip_gtf_filter": { + "content": [ + [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" + ], + [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" + ], + [ + "genome_gfp.fasta:md5,e23e302af63736a199985a169fdac055" + ], + [ + "genome_gfp.gtf:md5,5e63cda3dcafc0d6ad0a738133af9d54" + ], + [ + "genome_gfp.fasta.fai:md5,8fa54c6bd2ea6a369efbb8ab4f30156a" + ], + [ + "genome_gfp.bed:md5,991993ebef1def1d5823632c21177ec3" + ], + [ + "genome_gfp.fasta.sizes:md5,9b755f8f349b14accefb4d859f84de26" + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", + "versions.yml:md5,1cd265cb86a23a27f683ffb2459f37f5", + "versions.yml:md5,71252f1a221be05593361acccb99506b", + "versions.yml:md5,bc99889446f02427c166b3219b793672" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.1" + }, + "timestamp": "2024-06-20T18:13:30.196042" + }, + "gencode = false - stub": { + "content": [ + [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" + ], + [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" + ], + [ + "genome_transcriptome.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + "genome_transcriptome.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + "genome_transcriptome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + "genome_transcriptome.bed:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + "genome_transcriptome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", + "versions.yml:md5,71252f1a221be05593361acccb99506b", + "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", + "versions.yml:md5,bc99889446f02427c166b3219b793672", + "versions.yml:md5,cc8f32b7c37c35a075d38cb773004eaa" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-03T10:58:02.396852" + }, + "gff = false - stub": { + "content": [ + [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" + ], + [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" + ], + [ + "genome_transcriptome.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + "genome_transcriptome.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + "genome_transcriptome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + "genome_transcriptome.bed:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + "genome_transcriptome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", + "versions.yml:md5,71252f1a221be05593361acccb99506b", + "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", + "versions.yml:md5,bc99889446f02427c166b3219b793672", + "versions.yml:md5,cc8f32b7c37c35a075d38cb773004eaa" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-03T11:00:22.950255" + }, + "skip_pseudoalignment = true - stub": { + "content": [ + [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" + ], + [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" + ], + [ + "genome_transcriptome.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + "genome_transcriptome.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + "genome_transcriptome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + "genome_transcriptome.bed:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + "genome_transcriptome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", + "versions.yml:md5,71252f1a221be05593361acccb99506b", + "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", + "versions.yml:md5,bc99889446f02427c166b3219b793672", + "versions.yml:md5,cc8f32b7c37c35a075d38cb773004eaa" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-03T11:04:58.786648" + }, + "featurecounts_group_type = 'gene_type' - stub": { + "content": [ + [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" + ], + [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" + ], + [ + "genome_transcriptome.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + "genome_transcriptome.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + "genome_transcriptome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + "genome_transcriptome.bed:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + "genome_transcriptome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", + "versions.yml:md5,71252f1a221be05593361acccb99506b", + "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", + "versions.yml:md5,bc99889446f02427c166b3219b793672", + "versions.yml:md5,cc8f32b7c37c35a075d38cb773004eaa" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-03T11:03:27.557216" + }, + "gtf = false": { + "content": [ + [ + "transcriptome.fixed.fa:md5,faf3a64453ae73983bbf2743387fbdf2" + ], + [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" + ], + [ + "genome_gfp.fasta:md5,e23e302af63736a199985a169fdac055" + ], + [ + "genome_gfp.gtf:md5,68b68c059ba170af3f9d0a5dc1e0c8b8" + ], + [ + "genome_gfp.fasta.fai:md5,8fa54c6bd2ea6a369efbb8ab4f30156a" + ], + [ + "genome_gfp.bed:md5,991993ebef1def1d5823632c21177ec3" + ], + [ + "genome_gfp.fasta.sizes:md5,9b755f8f349b14accefb4d859f84de26" + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", + "versions.yml:md5,1cd265cb86a23a27f683ffb2459f37f5", + "versions.yml:md5,2a3ed31ad34b8864fb9278dcdef596ec", + "versions.yml:md5,71252f1a221be05593361acccb99506b", + "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", + "versions.yml:md5,961ab91198c4e6ec9d795b95e3f61fda", + "versions.yml:md5,bc99889446f02427c166b3219b793672" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.1" + }, + "timestamp": "2024-06-20T18:14:42.913968" + }, + "gfp = false": { + "content": [ + [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" + ], + [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" + ], + [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/genome.fasta" + ], + [ + "genome.filtered.gtf:md5,ef6fccd153a21c329670462d602ed2d0" + ], + [ + "genome.fasta.fai:md5,2cd76d936cbfa386b14154506c2041b2" + ], + [ + "genome.filtered.bed:md5,e507dc33673e76c32abe344f4dc07952" + ], + [ + "genome.fasta.sizes:md5,29218009212157c49dbc6596621ec780" + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", + "versions.yml:md5,71252f1a221be05593361acccb99506b", + "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", + "versions.yml:md5,bc99889446f02427c166b3219b793672" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.1" + }, + "timestamp": "2024-06-20T18:15:16.551347" + }, + "skip_bbsplit = true": { + "content": [ + [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" + ], + [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" + ], + [ + "genome_gfp.fasta:md5,e23e302af63736a199985a169fdac055" + ], + [ + "genome_gfp.gtf:md5,c98b12c302f15731bfc36bcf297cfe28" + ], + [ + "genome_gfp.fasta.fai:md5,8fa54c6bd2ea6a369efbb8ab4f30156a" + ], + [ + "genome_gfp.bed:md5,991993ebef1def1d5823632c21177ec3" + ], + [ + "genome_gfp.fasta.sizes:md5,9b755f8f349b14accefb4d859f84de26" + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + "versions.yml:md5,1cd265cb86a23a27f683ffb2459f37f5", + "versions.yml:md5,71252f1a221be05593361acccb99506b", + "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", + "versions.yml:md5,bc99889446f02427c166b3219b793672" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.1" + }, + "timestamp": "2024-06-20T18:17:57.14732" + }, + "salmon_index = false - stub": { + "content": [ + [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" + ], + [ + + ], + [ + "genome_transcriptome.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + "genome_transcriptome.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + "genome_transcriptome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + "genome_transcriptome.bed:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + "genome_transcriptome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", + "versions.yml:md5,71252f1a221be05593361acccb99506b", + "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", + "versions.yml:md5,bc99889446f02427c166b3219b793672", + "versions.yml:md5,cc8f32b7c37c35a075d38cb773004eaa" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-03T11:02:14.826294" + }, + "skip_alignment": { + "content": [ + [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" + ], + [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" + ], + [ + "genome_gfp.fasta:md5,e23e302af63736a199985a169fdac055" + ], + [ + "genome_gfp.gtf:md5,c98b12c302f15731bfc36bcf297cfe28" + ], + [ + "genome_gfp.fasta.fai:md5,8fa54c6bd2ea6a369efbb8ab4f30156a" + ], + [ + "genome_gfp.bed:md5,991993ebef1def1d5823632c21177ec3" + ], + [ + "genome_gfp.fasta.sizes:md5,9b755f8f349b14accefb4d859f84de26" + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", + "versions.yml:md5,1cd265cb86a23a27f683ffb2459f37f5", + "versions.yml:md5,71252f1a221be05593361acccb99506b", + "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", + "versions.yml:md5,bc99889446f02427c166b3219b793672" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.1" + }, + "timestamp": "2024-06-20T18:14:04.612027" + }, + "gfp = false - stub": { + "content": [ + [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" + ], + [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" + ], + [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/genome.fasta" + ], + [ + "genome.filtered.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + "genome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + "genome.filtered.bed:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + "genome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", + "versions.yml:md5,71252f1a221be05593361acccb99506b", + "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", + "versions.yml:md5,bc99889446f02427c166b3219b793672" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-03T11:00:46.397617" + }, + "gencode = false": { + "content": [ + [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" + ], + [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" + ], + [ + "genome_gfp.fasta:md5,e23e302af63736a199985a169fdac055" + ], + [ + "genome_gfp.gtf:md5,c98b12c302f15731bfc36bcf297cfe28" + ], + [ + "genome_gfp.fasta.fai:md5,8fa54c6bd2ea6a369efbb8ab4f30156a" + ], + [ + "genome_gfp.bed:md5,991993ebef1def1d5823632c21177ec3" + ], + [ + "genome_gfp.fasta.sizes:md5,9b755f8f349b14accefb4d859f84de26" + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", + "versions.yml:md5,1cd265cb86a23a27f683ffb2459f37f5", + "versions.yml:md5,71252f1a221be05593361acccb99506b", + "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", + "versions.yml:md5,bc99889446f02427c166b3219b793672" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.1" + }, + "timestamp": "2024-06-20T18:13:13.483047" + }, + "default options": { + "content": [ + [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" + ], + [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" + ], + [ + "genome_gfp.fasta:md5,e23e302af63736a199985a169fdac055" + ], + [ + "genome_gfp.gtf:md5,c98b12c302f15731bfc36bcf297cfe28" + ], + [ + "genome_gfp.fasta.fai:md5,8fa54c6bd2ea6a369efbb8ab4f30156a" + ], + [ + "genome_gfp.bed:md5,991993ebef1def1d5823632c21177ec3" + ], + [ + "genome_gfp.fasta.sizes:md5,9b755f8f349b14accefb4d859f84de26" + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", + "versions.yml:md5,1cd265cb86a23a27f683ffb2459f37f5", + "versions.yml:md5,71252f1a221be05593361acccb99506b", + "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", + "versions.yml:md5,bc99889446f02427c166b3219b793672" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.1" + }, + "timestamp": "2024-06-20T18:12:54.779065" + }, + "gencode = true - stub": { + "content": [ + [ + "transcriptome.fixed.fa:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" + ], + [ + "genome_transcriptome.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + "genome_transcriptome.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + "genome_transcriptome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + "genome_transcriptome.bed:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + "genome_transcriptome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", + "versions.yml:md5,71252f1a221be05593361acccb99506b", + "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", + "versions.yml:md5,961ab91198c4e6ec9d795b95e3f61fda", + "versions.yml:md5,bc99889446f02427c166b3219b793672", + "versions.yml:md5,cc8f32b7c37c35a075d38cb773004eaa" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-03T11:03:04.549888" + }, + "skip_alignment - stub": { + "content": [ + [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" + ], + [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" + ], + [ + "genome_transcriptome.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + "genome_transcriptome.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + "genome_transcriptome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + "genome_transcriptome.bed:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + "genome_transcriptome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", + "versions.yml:md5,71252f1a221be05593361acccb99506b", + "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", + "versions.yml:md5,bc99889446f02427c166b3219b793672", + "versions.yml:md5,cc8f32b7c37c35a075d38cb773004eaa" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-03T10:59:08.39617" + }, + "skip_bbsplit = true - stub": { + "content": [ + [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" + ], + [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" + ], + [ + "genome_transcriptome.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + "genome_transcriptome.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + "genome_transcriptome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + "genome_transcriptome.bed:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + "genome_transcriptome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + "versions.yml:md5,71252f1a221be05593361acccb99506b", + "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", + "versions.yml:md5,bc99889446f02427c166b3219b793672", + "versions.yml:md5,cc8f32b7c37c35a075d38cb773004eaa" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-03T11:04:11.263136" + }, + "transcriptome = false": { + "content": [ + [ + "genome.transcripts.fa:md5,b89a3e02ad30ba3fd600f98c8e2f58d4" + ], + [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" + ], + [ + "genome_gfp.fasta:md5,e23e302af63736a199985a169fdac055" + ], + [ + "genome_gfp.gtf:md5,c98b12c302f15731bfc36bcf297cfe28" + ], + [ + "genome_gfp.fasta.fai:md5,8fa54c6bd2ea6a369efbb8ab4f30156a" + ], + [ + "genome_gfp.bed:md5,991993ebef1def1d5823632c21177ec3" + ], + [ + "genome_gfp.fasta.sizes:md5,9b755f8f349b14accefb4d859f84de26" + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", + "versions.yml:md5,1cd265cb86a23a27f683ffb2459f37f5", + "versions.yml:md5,71252f1a221be05593361acccb99506b", + "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", + "versions.yml:md5,918fe0b59c0986eb602ace85841c5ab3", + "versions.yml:md5,bc99889446f02427c166b3219b793672" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.1" + }, + "timestamp": "2024-06-20T18:15:34.269049" + }, + "skip_pseudoalignment = true": { "content": [ [ - "transcriptome.fixed.fa:md5,faf3a64453ae73983bbf2743387fbdf2" + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" ], [ "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" @@ -11,7 +999,7 @@ "genome_gfp.fasta:md5,e23e302af63736a199985a169fdac055" ], [ - "genome_gfp.gtf:md5,2593a0843dd97f0b7dfb62cdd2c21ab8" + "genome_gfp.gtf:md5,c98b12c302f15731bfc36bcf297cfe28" ], [ "genome_gfp.fasta.fai:md5,8fa54c6bd2ea6a369efbb8ab4f30156a" @@ -45,7 +1033,6 @@ "versions.yml:md5,1cd265cb86a23a27f683ffb2459f37f5", "versions.yml:md5,71252f1a221be05593361acccb99506b", "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", - "versions.yml:md5,961ab91198c4e6ec9d795b95e3f61fda", "versions.yml:md5,bc99889446f02427c166b3219b793672" ] ], @@ -53,21 +1040,75 @@ "nf-test": "0.8.4", "nextflow": "24.04.1" }, - "timestamp": "2024-06-20T18:17:05.661629" + "timestamp": "2024-06-20T18:18:35.783312" }, - "hisat2_index = false": { + "skip_gtf_filter - stub": { "content": [ [ "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" + ], + [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" + ], + [ + "genome_transcriptome.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + "genome_transcriptome.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + "genome_transcriptome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + "genome_transcriptome.bed:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + "genome_transcriptome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + + ], + [ + + ], + [ + + ], + [ + ], [ + ], + [ + + ], + [ + "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", + "versions.yml:md5,71252f1a221be05593361acccb99506b", + "versions.yml:md5,bc99889446f02427c166b3219b793672", + "versions.yml:md5,cc8f32b7c37c35a075d38cb773004eaa" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-03T10:58:24.03187" + }, + "gencode = true": { + "content": [ + [ + "transcriptome.fixed.fa:md5,faf3a64453ae73983bbf2743387fbdf2" + ], + [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" ], [ "genome_gfp.fasta:md5,e23e302af63736a199985a169fdac055" ], [ - "genome_gfp.gtf:md5,c98b12c302f15731bfc36bcf297cfe28" + "genome_gfp.gtf:md5,2593a0843dd97f0b7dfb62cdd2c21ab8" ], [ "genome_gfp.fasta.fai:md5,8fa54c6bd2ea6a369efbb8ab4f30156a" @@ -101,6 +1142,7 @@ "versions.yml:md5,1cd265cb86a23a27f683ffb2459f37f5", "versions.yml:md5,71252f1a221be05593361acccb99506b", "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", + "versions.yml:md5,961ab91198c4e6ec9d795b95e3f61fda", "versions.yml:md5,bc99889446f02427c166b3219b793672" ] ], @@ -108,21 +1150,21 @@ "nf-test": "0.8.4", "nextflow": "24.04.1" }, - "timestamp": "2024-06-20T18:16:45.642259" + "timestamp": "2024-06-20T18:17:05.661629" }, - "featurecounts_group_type = 'gene_type'": { + "hisat2_index = false": { "content": [ [ "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" ], [ - "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" + ], [ "genome_gfp.fasta:md5,e23e302af63736a199985a169fdac055" ], [ - "genome_gfp.gtf:md5,2593a0843dd97f0b7dfb62cdd2c21ab8" + "genome_gfp.gtf:md5,c98b12c302f15731bfc36bcf297cfe28" ], [ "genome_gfp.fasta.fai:md5,8fa54c6bd2ea6a369efbb8ab4f30156a" @@ -163,9 +1205,9 @@ "nf-test": "0.8.4", "nextflow": "24.04.1" }, - "timestamp": "2024-06-20T18:17:22.714024" + "timestamp": "2024-06-20T18:16:45.642259" }, - "skip_gtf_filter": { + "rsem_index = false - stub": { "content": [ [ "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" @@ -174,19 +1216,19 @@ "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" ], [ - "genome_gfp.fasta:md5,e23e302af63736a199985a169fdac055" + "genome_transcriptome.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" ], [ - "genome_gfp.gtf:md5,5e63cda3dcafc0d6ad0a738133af9d54" + "genome_transcriptome.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" ], [ - "genome_gfp.fasta.fai:md5,8fa54c6bd2ea6a369efbb8ab4f30156a" + "genome_transcriptome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" ], [ - "genome_gfp.bed:md5,991993ebef1def1d5823632c21177ec3" + "genome_transcriptome.bed:md5,d41d8cd98f00b204e9800998ecf8427e" ], [ - "genome_gfp.fasta.sizes:md5,9b755f8f349b14accefb4d859f84de26" + "genome_transcriptome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" ], [ @@ -208,21 +1250,22 @@ ], [ "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", - "versions.yml:md5,1cd265cb86a23a27f683ffb2459f37f5", "versions.yml:md5,71252f1a221be05593361acccb99506b", - "versions.yml:md5,bc99889446f02427c166b3219b793672" + "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", + "versions.yml:md5,bc99889446f02427c166b3219b793672", + "versions.yml:md5,cc8f32b7c37c35a075d38cb773004eaa" ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "24.04.1" + "nextflow": "24.04.2" }, - "timestamp": "2024-06-20T18:13:30.196042" + "timestamp": "2024-07-03T11:01:53.55074" }, - "gtf = false": { + "featurecounts_group_type = 'gene_type'": { "content": [ [ - "transcriptome.fixed.fa:md5,faf3a64453ae73983bbf2743387fbdf2" + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" ], [ "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" @@ -231,7 +1274,7 @@ "genome_gfp.fasta:md5,e23e302af63736a199985a169fdac055" ], [ - "genome_gfp.gtf:md5,68b68c059ba170af3f9d0a5dc1e0c8b8" + "genome_gfp.gtf:md5,2593a0843dd97f0b7dfb62cdd2c21ab8" ], [ "genome_gfp.fasta.fai:md5,8fa54c6bd2ea6a369efbb8ab4f30156a" @@ -263,10 +1306,8 @@ [ "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", "versions.yml:md5,1cd265cb86a23a27f683ffb2459f37f5", - "versions.yml:md5,2a3ed31ad34b8864fb9278dcdef596ec", "versions.yml:md5,71252f1a221be05593361acccb99506b", "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", - "versions.yml:md5,961ab91198c4e6ec9d795b95e3f61fda", "versions.yml:md5,bc99889446f02427c166b3219b793672" ] ], @@ -274,9 +1315,9 @@ "nf-test": "0.8.4", "nextflow": "24.04.1" }, - "timestamp": "2024-06-20T18:14:42.913968" + "timestamp": "2024-06-20T18:17:22.714024" }, - "gfp = false": { + "with bed - stub": { "content": [ [ "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" @@ -285,19 +1326,19 @@ "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" ], [ - "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/genome.fasta" + "genome_transcriptome.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" ], [ - "genome.filtered.gtf:md5,ef6fccd153a21c329670462d602ed2d0" + "genome_transcriptome.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" ], [ - "genome.fasta.fai:md5,2cd76d936cbfa386b14154506c2041b2" + "genome_transcriptome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" ], [ - "genome.filtered.bed:md5,e507dc33673e76c32abe344f4dc07952" + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/ngscheckmate.bed" ], [ - "genome.fasta.sizes:md5,29218009212157c49dbc6596621ec780" + "genome_transcriptome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" ], [ @@ -319,16 +1360,16 @@ ], [ "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", - "versions.yml:md5,71252f1a221be05593361acccb99506b", "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", - "versions.yml:md5,bc99889446f02427c166b3219b793672" + "versions.yml:md5,bc99889446f02427c166b3219b793672", + "versions.yml:md5,cc8f32b7c37c35a075d38cb773004eaa" ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "24.04.1" + "nextflow": "24.04.2" }, - "timestamp": "2024-06-20T18:15:16.551347" + "timestamp": "2024-07-03T11:01:31.850549" }, "skip_bbsplit": { "content": [ @@ -384,7 +1425,7 @@ }, "timestamp": "2024-06-20T18:13:46.28042" }, - "skip_bbsplit = true": { + "skip_psuedo_alignment - stub": { "content": [ [ "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" @@ -393,19 +1434,19 @@ "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" ], [ - "genome_gfp.fasta:md5,e23e302af63736a199985a169fdac055" + "genome_transcriptome.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" ], [ - "genome_gfp.gtf:md5,c98b12c302f15731bfc36bcf297cfe28" + "genome_transcriptome.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" ], [ - "genome_gfp.fasta.fai:md5,8fa54c6bd2ea6a369efbb8ab4f30156a" + "genome_transcriptome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" ], [ - "genome_gfp.bed:md5,991993ebef1def1d5823632c21177ec3" + "genome_transcriptome.bed:md5,d41d8cd98f00b204e9800998ecf8427e" ], [ - "genome_gfp.fasta.sizes:md5,9b755f8f349b14accefb4d859f84de26" + "genome_transcriptome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" ], [ @@ -426,17 +1467,18 @@ ], [ - "versions.yml:md5,1cd265cb86a23a27f683ffb2459f37f5", + "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", "versions.yml:md5,71252f1a221be05593361acccb99506b", "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", - "versions.yml:md5,bc99889446f02427c166b3219b793672" + "versions.yml:md5,bc99889446f02427c166b3219b793672", + "versions.yml:md5,cc8f32b7c37c35a075d38cb773004eaa" ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "24.04.1" + "nextflow": "24.04.2" }, - "timestamp": "2024-06-20T18:17:57.14732" + "timestamp": "2024-07-03T10:59:34.532745" }, "with bed": { "content": [ @@ -492,28 +1534,28 @@ }, "timestamp": "2024-06-20T18:15:52.284517" }, - "skip_alignment": { + "gtf = false - stub": { "content": [ [ - "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" + "transcriptome.fixed.fa:md5,d41d8cd98f00b204e9800998ecf8427e" ], [ "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" ], [ - "genome_gfp.fasta:md5,e23e302af63736a199985a169fdac055" + "genome_transcriptome.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" ], [ - "genome_gfp.gtf:md5,c98b12c302f15731bfc36bcf297cfe28" + "genome_transcriptome.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" ], [ - "genome_gfp.fasta.fai:md5,8fa54c6bd2ea6a369efbb8ab4f30156a" + "genome_transcriptome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" ], [ - "genome_gfp.bed:md5,991993ebef1def1d5823632c21177ec3" + "genome_transcriptome.bed:md5,d41d8cd98f00b204e9800998ecf8427e" ], [ - "genome_gfp.fasta.sizes:md5,9b755f8f349b14accefb4d859f84de26" + "genome_transcriptome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" ], [ @@ -535,19 +1577,21 @@ ], [ "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", - "versions.yml:md5,1cd265cb86a23a27f683ffb2459f37f5", + "versions.yml:md5,2a3ed31ad34b8864fb9278dcdef596ec", "versions.yml:md5,71252f1a221be05593361acccb99506b", "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", - "versions.yml:md5,bc99889446f02427c166b3219b793672" + "versions.yml:md5,961ab91198c4e6ec9d795b95e3f61fda", + "versions.yml:md5,bc99889446f02427c166b3219b793672", + "versions.yml:md5,cc8f32b7c37c35a075d38cb773004eaa" ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "24.04.1" + "nextflow": "24.04.2" }, - "timestamp": "2024-06-20T18:14:04.612027" + "timestamp": "2024-07-03T10:59:58.494014" }, - "gencode = false": { + "gff = false": { "content": [ [ "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" @@ -600,9 +1644,9 @@ "nf-test": "0.8.4", "nextflow": "24.04.1" }, - "timestamp": "2024-06-20T18:13:13.483047" + "timestamp": "2024-06-20T18:15:00.759762" }, - "gff = false": { + "default options - stub": { "content": [ [ "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" @@ -611,19 +1655,19 @@ "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" ], [ - "genome_gfp.fasta:md5,e23e302af63736a199985a169fdac055" + "genome_transcriptome.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" ], [ - "genome_gfp.gtf:md5,c98b12c302f15731bfc36bcf297cfe28" + "genome_transcriptome.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" ], [ - "genome_gfp.fasta.fai:md5,8fa54c6bd2ea6a369efbb8ab4f30156a" + "genome_transcriptome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" ], [ - "genome_gfp.bed:md5,991993ebef1def1d5823632c21177ec3" + "genome_transcriptome.bed:md5,d41d8cd98f00b204e9800998ecf8427e" ], [ - "genome_gfp.fasta.sizes:md5,9b755f8f349b14accefb4d859f84de26" + "genome_transcriptome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" ], [ @@ -645,25 +1689,25 @@ ], [ "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", - "versions.yml:md5,1cd265cb86a23a27f683ffb2459f37f5", "versions.yml:md5,71252f1a221be05593361acccb99506b", "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", - "versions.yml:md5,bc99889446f02427c166b3219b793672" + "versions.yml:md5,bc99889446f02427c166b3219b793672", + "versions.yml:md5,cc8f32b7c37c35a075d38cb773004eaa" ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "24.04.1" + "nextflow": "24.04.2" }, - "timestamp": "2024-06-20T18:15:00.759762" + "timestamp": "2024-07-03T10:57:35.951638" }, - "default options": { + "salmon_index = false": { "content": [ [ "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" ], [ - "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" + ], [ "genome_gfp.fasta:md5,e23e302af63736a199985a169fdac055" @@ -710,15 +1754,15 @@ "nf-test": "0.8.4", "nextflow": "24.04.1" }, - "timestamp": "2024-06-20T18:12:54.779065" + "timestamp": "2024-06-20T18:16:27.229869" }, - "salmon_index = false": { + "rsem_index = false": { "content": [ [ "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" ], [ - + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" ], [ "genome_gfp.fasta:md5,e23e302af63736a199985a169fdac055" @@ -765,9 +1809,9 @@ "nf-test": "0.8.4", "nextflow": "24.04.1" }, - "timestamp": "2024-06-20T18:16:27.229869" + "timestamp": "2024-06-20T18:16:09.968836" }, - "rsem_index = false": { + "skip_alignment = true - stub": { "content": [ [ "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" @@ -776,19 +1820,19 @@ "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" ], [ - "genome_gfp.fasta:md5,e23e302af63736a199985a169fdac055" + "genome_transcriptome.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" ], [ - "genome_gfp.gtf:md5,c98b12c302f15731bfc36bcf297cfe28" + "genome_transcriptome.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" ], [ - "genome_gfp.fasta.fai:md5,8fa54c6bd2ea6a369efbb8ab4f30156a" + "genome_transcriptome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" ], [ - "genome_gfp.bed:md5,991993ebef1def1d5823632c21177ec3" + "genome_transcriptome.bed:md5,d41d8cd98f00b204e9800998ecf8427e" ], [ - "genome_gfp.fasta.sizes:md5,9b755f8f349b14accefb4d859f84de26" + "genome_transcriptome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" ], [ @@ -810,17 +1854,17 @@ ], [ "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", - "versions.yml:md5,1cd265cb86a23a27f683ffb2459f37f5", "versions.yml:md5,71252f1a221be05593361acccb99506b", "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", - "versions.yml:md5,bc99889446f02427c166b3219b793672" + "versions.yml:md5,bc99889446f02427c166b3219b793672", + "versions.yml:md5,cc8f32b7c37c35a075d38cb773004eaa" ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "24.04.1" + "nextflow": "24.04.2" }, - "timestamp": "2024-06-20T18:16:09.968836" + "timestamp": "2024-07-03T11:04:34.49836" }, "skip_psuedo_alignment": { "content": [ @@ -877,28 +1921,28 @@ }, "timestamp": "2024-06-20T18:14:22.598093" }, - "transcriptome = false": { + "transcriptome = false - stub": { "content": [ [ - "genome.transcripts.fa:md5,b89a3e02ad30ba3fd600f98c8e2f58d4" + "genome.transcripts.fa:md5,d41d8cd98f00b204e9800998ecf8427e" ], [ "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" ], [ - "genome_gfp.fasta:md5,e23e302af63736a199985a169fdac055" + "genome_transcriptome.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" ], [ - "genome_gfp.gtf:md5,c98b12c302f15731bfc36bcf297cfe28" + "genome_transcriptome.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" ], [ - "genome_gfp.fasta.fai:md5,8fa54c6bd2ea6a369efbb8ab4f30156a" + "genome_transcriptome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" ], [ - "genome_gfp.bed:md5,991993ebef1def1d5823632c21177ec3" + "genome_transcriptome.bed:md5,d41d8cd98f00b204e9800998ecf8427e" ], [ - "genome_gfp.fasta.sizes:md5,9b755f8f349b14accefb4d859f84de26" + "genome_transcriptome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" ], [ @@ -920,20 +1964,20 @@ ], [ "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", - "versions.yml:md5,1cd265cb86a23a27f683ffb2459f37f5", "versions.yml:md5,71252f1a221be05593361acccb99506b", "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", "versions.yml:md5,918fe0b59c0986eb602ace85841c5ab3", - "versions.yml:md5,bc99889446f02427c166b3219b793672" + "versions.yml:md5,bc99889446f02427c166b3219b793672", + "versions.yml:md5,cc8f32b7c37c35a075d38cb773004eaa" ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "24.04.1" + "nextflow": "24.04.2" }, - "timestamp": "2024-06-20T18:15:34.269049" + "timestamp": "2024-07-03T11:01:10.499079" }, - "skip_pseudoalignment = true": { + "skip_alignment = true": { "content": [ [ "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" @@ -986,9 +2030,9 @@ "nf-test": "0.8.4", "nextflow": "24.04.1" }, - "timestamp": "2024-06-20T18:18:35.783312" + "timestamp": "2024-06-20T18:18:16.883006" }, - "skip_alignment = true": { + "skip_gtf_filter = true": { "content": [ [ "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" @@ -1000,7 +2044,7 @@ "genome_gfp.fasta:md5,e23e302af63736a199985a169fdac055" ], [ - "genome_gfp.gtf:md5,c98b12c302f15731bfc36bcf297cfe28" + "genome_gfp.gtf:md5,5e63cda3dcafc0d6ad0a738133af9d54" ], [ "genome_gfp.fasta.fai:md5,8fa54c6bd2ea6a369efbb8ab4f30156a" @@ -1033,7 +2077,6 @@ "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", "versions.yml:md5,1cd265cb86a23a27f683ffb2459f37f5", "versions.yml:md5,71252f1a221be05593361acccb99506b", - "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", "versions.yml:md5,bc99889446f02427c166b3219b793672" ] ], @@ -1041,30 +2084,30 @@ "nf-test": "0.8.4", "nextflow": "24.04.1" }, - "timestamp": "2024-06-20T18:18:16.883006" + "timestamp": "2024-06-20T18:17:39.358651" }, - "skip_gtf_filter = true": { + "hisat2_index = false - stub": { "content": [ [ "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" ], [ - "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" + ], [ - "genome_gfp.fasta:md5,e23e302af63736a199985a169fdac055" + "genome_transcriptome.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" ], [ - "genome_gfp.gtf:md5,5e63cda3dcafc0d6ad0a738133af9d54" + "genome_transcriptome.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" ], [ - "genome_gfp.fasta.fai:md5,8fa54c6bd2ea6a369efbb8ab4f30156a" + "genome_transcriptome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" ], [ - "genome_gfp.bed:md5,991993ebef1def1d5823632c21177ec3" + "genome_transcriptome.bed:md5,d41d8cd98f00b204e9800998ecf8427e" ], [ - "genome_gfp.fasta.sizes:md5,9b755f8f349b14accefb4d859f84de26" + "genome_transcriptome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" ], [ @@ -1086,15 +2129,70 @@ ], [ "versions.yml:md5,0bc25597acf1d50abf7070d19d311cd7", - "versions.yml:md5,1cd265cb86a23a27f683ffb2459f37f5", "versions.yml:md5,71252f1a221be05593361acccb99506b", - "versions.yml:md5,bc99889446f02427c166b3219b793672" + "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", + "versions.yml:md5,bc99889446f02427c166b3219b793672", + "versions.yml:md5,cc8f32b7c37c35a075d38cb773004eaa" ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "24.04.1" + "nextflow": "24.04.2" }, - "timestamp": "2024-06-20T18:17:39.358651" + "timestamp": "2024-07-03T11:02:39.443965" + }, + "skip_bbsplit - stub": { + "content": [ + [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/transcriptome.fasta" + ], + [ + "/ngi-igenomes/testdata/nf-core/pipelines/rnaseq/3.15/reference/salmon.tar.gz" + ], + [ + "genome_transcriptome.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + "genome_transcriptome.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + "genome_transcriptome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + "genome_transcriptome.bed:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + "genome_transcriptome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + "versions.yml:md5,71252f1a221be05593361acccb99506b", + "versions.yml:md5,80e9dd350be8cd4c11909d75c914757a", + "versions.yml:md5,bc99889446f02427c166b3219b793672", + "versions.yml:md5,cc8f32b7c37c35a075d38cb773004eaa" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-03T10:58:46.540136" } } \ No newline at end of file From 3efcb8473a961b9532c719988c31b1c4c548d071 Mon Sep 17 00:00:00 2001 From: maxulysse Date: Wed, 3 Jul 2024 11:11:34 +0200 Subject: [PATCH 433/634] add stub --- .../local/quantify_rsem/tests/main.nf.test | 64 ++++++++++++++++++- 1 file changed, 61 insertions(+), 3 deletions(-) diff --git a/subworkflows/local/quantify_rsem/tests/main.nf.test b/subworkflows/local/quantify_rsem/tests/main.nf.test index 818282af3..ccd7a128c 100644 --- a/subworkflows/local/quantify_rsem/tests/main.nf.test +++ b/subworkflows/local/quantify_rsem/tests/main.nf.test @@ -39,6 +39,7 @@ nextflow_workflow { assertAll( { assert workflow.success }, { assert snapshot( + file(workflow.out.logs[0][1]).name, workflow.out.counts_gene, workflow.out.counts_transcript, workflow.out.stat, @@ -57,11 +58,68 @@ nextflow_workflow { workflow.out.merged_counts_transcript, workflow.out.merged_tpm_transcript, workflow.out.versions - ).match() - }, - { assert snapshot(file(workflow.out.logs[0][1]).name).match('logs') } + ).match()} ) } } + test("homo_sapiens - stub") { + + options "-stub" + + setup { + run("RSEM_PREPAREREFERENCE") { + script "../../../../modules/nf-core/rsem/preparereference/main.nf" + process { + """ + input[0] = Channel.of(file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true)) + input[1] = Channel.of(file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.gtf', checkIfExists: true)) + """ + } + } + } + + when { + workflow { + """ + input[0] = Channel.of([ + [ id:'test', strandedness: 'forward' ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/fastq/test_rnaseq_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/fastq/test_rnaseq_2.fastq.gz', checkIfExists: true) + ] + ]) + input[1] = RSEM_PREPAREREFERENCE.out.index + input[2] = Channel.of(file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true)) + """ + } + } + + then { + assertAll( + { assert workflow.success }, + { assert snapshot( + file(workflow.out.logs[0][1]).name, + workflow.out.counts_gene, + workflow.out.counts_transcript, + workflow.out.stat, + workflow.out.bam_star, + workflow.out.bam_genome, + workflow.out.bam_transcript, + workflow.out.counts_transcript, + workflow.out.bam, + workflow.out.bai, + workflow.out.csi, + workflow.out.stats, + workflow.out.flagstat, + workflow.out.idxstats, + workflow.out.merged_counts_gene, + workflow.out.merged_tpm_gene, + workflow.out.merged_counts_transcript, + workflow.out.merged_tpm_transcript, + workflow.out.versions + ).match()} + ) + } + } } From 345d1f855144aa4e50aa723b3dac83d1c630a705 Mon Sep 17 00:00:00 2001 From: maxulysse Date: Wed, 3 Jul 2024 18:57:50 +0200 Subject: [PATCH 434/634] update all nf-core modules and subworkflows and do not include tags --- modules.json | 28 +- modules/nf-core/kallisto/index/main.nf | 2 +- .../nf-core/kallisto/index/tests/main.nf.test | 23 + .../kallisto/index/tests/main.nf.test.snap | 43 +- modules/nf-core/kallisto/quant/main.nf | 6 + .../nf-core/kallisto/quant/tests/main.nf.test | 98 +- .../kallisto/quant/tests/main.nf.test.snap | 182 +- modules/nf-core/umitools/dedup/main.nf | 1 + .../nf-core/umitools/dedup/tests/main.nf.test | 108 +- .../umitools/dedup/tests/main.nf.test.snap | 98 +- .../quantify_rsem/tests/main.nf.test.snap | 111 +- .../tests/main.nf.test | 39 +- .../tests/main.nf.test.snap | 174 +- .../tests/main.nf.test | 71 +- .../tests/main.nf.test.snap | 360 ++- .../nf-core/bam_rseqc/tests/main.nf.test | 87 +- .../nf-core/bam_rseqc/tests/main.nf.test.snap | 918 ++++++- .../tests/main.nf.test | 76 +- .../tests/main.nf.test.snap | 344 ++- .../bam_stats_samtools/tests/main.nf.test | 116 +- .../tests/main.nf.test.snap | 336 ++- .../tests/main.nf.test | 26 +- .../tests/main.nf.test.snap | 59 + .../fastq_align_hisat2/tests/main.nf.test | 134 +- .../tests/main.nf.test.snap | 594 +++-- .../tests/main.nf.test | 553 +++- .../tests/main.nf.test.snap | 2350 ++++++++++++++--- .../tests/main.nf.test | 158 +- .../tests/main.nf.test.snap | 631 ++++- .../tests/main.nf.test | 61 +- .../tests/main.nf.test.snap | 206 +- .../tests/main.nf.test | 138 +- .../tests/main.nf.test.snap | 558 +++- 33 files changed, 7362 insertions(+), 1327 deletions(-) diff --git a/modules.json b/modules.json index 506e788c2..6258955a8 100644 --- a/modules.json +++ b/modules.json @@ -83,12 +83,12 @@ }, "kallisto/index": { "branch": "master", - "git_sha": "de5811dd9ca15af1e131806001bcaae909e42021", + "git_sha": "fbe341e9af0bb98533757f536b26d38507d31724", "installed_by": ["modules"] }, "kallisto/quant": { "branch": "master", - "git_sha": "de5811dd9ca15af1e131806001bcaae909e42021", + "git_sha": "fbe341e9af0bb98533757f536b26d38507d31724", "installed_by": ["modules", "quantify_pseudo_alignment"] }, "multiqc": { @@ -252,7 +252,7 @@ }, "umitools/dedup": { "branch": "master", - "git_sha": "3bd4f34e3093c2a16e6a8eefc22242b9b94641db", + "git_sha": "0eacd714effe5aac1c1de26593873960b3346cab", "installed_by": ["bam_dedup_stats_samtools_umitools"] }, "umitools/extract": { @@ -276,27 +276,27 @@ "nf-core": { "bam_dedup_stats_samtools_umitools": { "branch": "master", - "git_sha": "8f2062e7b4185590fb9f43c275381a31a6544fc0", + "git_sha": "0eacd714effe5aac1c1de26593873960b3346cab", "installed_by": ["subworkflows"] }, "bam_markduplicates_picard": { "branch": "master", - "git_sha": "04fbbc7c43cebc0b95d5b126f6d9fe4effa33519", + "git_sha": "0eacd714effe5aac1c1de26593873960b3346cab", "installed_by": ["subworkflows"] }, "bam_rseqc": { "branch": "master", - "git_sha": "9eb22e4d3f28c274b7c498a1564581377349a242", + "git_sha": "0eacd714effe5aac1c1de26593873960b3346cab", "installed_by": ["subworkflows"] }, "bam_sort_stats_samtools": { "branch": "master", - "git_sha": "04fbbc7c43cebc0b95d5b126f6d9fe4effa33519", + "git_sha": "0eacd714effe5aac1c1de26593873960b3346cab", "installed_by": ["fastq_align_hisat2"] }, "bam_stats_samtools": { "branch": "master", - "git_sha": "04fbbc7c43cebc0b95d5b126f6d9fe4effa33519", + "git_sha": "0eacd714effe5aac1c1de26593873960b3346cab", "installed_by": [ "bam_dedup_stats_samtools_umitools", "bam_markduplicates_picard", @@ -305,32 +305,32 @@ }, "bedgraph_bedclip_bedgraphtobigwig": { "branch": "master", - "git_sha": "a4bceac1aecee5aa0a5dbc601baf0e2e61013fb2", + "git_sha": "0eacd714effe5aac1c1de26593873960b3346cab", "installed_by": ["subworkflows"] }, "fastq_align_hisat2": { "branch": "master", - "git_sha": "c60c14b285b89bdd0607e371417dadb80385ad6e", + "git_sha": "0eacd714effe5aac1c1de26593873960b3346cab", "installed_by": ["subworkflows"] }, "fastq_fastqc_umitools_fastp": { "branch": "master", - "git_sha": "db35d26edeafacf9906a517827df621a29adc13d", + "git_sha": "fbe341e9af0bb98533757f536b26d38507d31724", "installed_by": ["subworkflows"] }, "fastq_fastqc_umitools_trimgalore": { "branch": "master", - "git_sha": "cb6defa0834eda9d6d3f967e981c819fc3e257bf", + "git_sha": "fbe341e9af0bb98533757f536b26d38507d31724", "installed_by": ["subworkflows"] }, "fastq_subsample_fq_salmon": { "branch": "master", - "git_sha": "727232afb8294b53dd9d05bfe469b70cce1675bb", + "git_sha": "fbe341e9af0bb98533757f536b26d38507d31724", "installed_by": ["subworkflows"] }, "quantify_pseudo_alignment": { "branch": "master", - "git_sha": "5d095e8413da1f4c72b7d07ce87f75c09482486f", + "git_sha": "fbe341e9af0bb98533757f536b26d38507d31724", "installed_by": ["subworkflows"] }, "utils_nextflow_pipeline": { diff --git a/modules/nf-core/kallisto/index/main.nf b/modules/nf-core/kallisto/index/main.nf index 28a47dbeb..bbd226c93 100644 --- a/modules/nf-core/kallisto/index/main.nf +++ b/modules/nf-core/kallisto/index/main.nf @@ -34,7 +34,7 @@ process KALLISTO_INDEX { stub: """ - touch kallisto + mkdir kallisto cat <<-END_VERSIONS > versions.yml "${task.process}": diff --git a/modules/nf-core/kallisto/index/tests/main.nf.test b/modules/nf-core/kallisto/index/tests/main.nf.test index 7999daf41..c5e86e87c 100644 --- a/modules/nf-core/kallisto/index/tests/main.nf.test +++ b/modules/nf-core/kallisto/index/tests/main.nf.test @@ -24,4 +24,27 @@ nextflow_process { ) } } + + test("sarscov2 transcriptome.fasta - stub") { + + options "-stub" + + when { + process { + """ + input[0] = Channel.of([ + [ id:'transcriptome' ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/transcriptome.fasta', checkIfExists: true) + ]) + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } } diff --git a/modules/nf-core/kallisto/index/tests/main.nf.test.snap b/modules/nf-core/kallisto/index/tests/main.nf.test.snap index 054f36e21..b2891a4a3 100644 --- a/modules/nf-core/kallisto/index/tests/main.nf.test.snap +++ b/modules/nf-core/kallisto/index/tests/main.nf.test.snap @@ -1,4 +1,41 @@ { + "sarscov2 transcriptome.fasta - stub": { + "content": [ + { + "0": [ + [ + { + "id": "transcriptome" + }, + [ + + ] + ] + ], + "1": [ + "versions.yml:md5,178f9b57d4228edc356911d571b958a4" + ], + "index": [ + [ + { + "id": "transcriptome" + }, + [ + + ] + ] + ], + "versions": [ + "versions.yml:md5,178f9b57d4228edc356911d571b958a4" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-03T15:27:54.464205" + }, "sarscov2 transcriptome.fasta": { "content": [ { @@ -26,6 +63,10 @@ ] } ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, "timestamp": "2024-01-19T09:17:56.733532" } -} +} \ No newline at end of file diff --git a/modules/nf-core/kallisto/quant/main.nf b/modules/nf-core/kallisto/quant/main.nf index f5444d791..acfc8c9c7 100644 --- a/modules/nf-core/kallisto/quant/main.nf +++ b/modules/nf-core/kallisto/quant/main.nf @@ -69,7 +69,13 @@ process KALLISTO_QUANT { """ stub: + prefix = task.ext.prefix ?: "${meta.id}" + """ + mkdir -p $prefix + touch ${prefix}.log + touch ${prefix}.run_info.json + cat <<-END_VERSIONS > versions.yml "${task.process}": kallisto: \$(echo \$(kallisto version) | sed "s/kallisto, version //g" ) diff --git a/modules/nf-core/kallisto/quant/tests/main.nf.test b/modules/nf-core/kallisto/quant/tests/main.nf.test index cb7e480a1..ec6e3d60c 100644 --- a/modules/nf-core/kallisto/quant/tests/main.nf.test +++ b/modules/nf-core/kallisto/quant/tests/main.nf.test @@ -16,14 +16,22 @@ nextflow_process { """ } } + + run("KALLISTO_INDEX", alias: "KALLISTO_INDEX_STUB") { + script "../../index/main.nf" + process { + """ + input[0] = Channel.of([ + [ id:'transcriptome' ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/transcriptome.fasta', checkIfExists: true) + ]) + """ + } + } } test("sarscov2 single-end") { when { - params{ - outdir = "$outputDir" - } - process { """ gtf = [] @@ -47,19 +55,85 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot(path("${process.out.results[0][1]}/abundance.tsv")).match("se_abundance_tsv") }, - { assert snapshot(process.out.log).match("se_log") }, - { assert snapshot(process.out.versions).match("se_versions") } + { assert snapshot( + path("${process.out.results[0][1]}/abundance.tsv"), + process.out.log, + process.out.versions).match() } ) } } test("sarscov2 paired-end") { when { - params{ - outdir = "$outputDir" + process { + """ + gtf = [] + chromosomes = [] + fragment_length = [] + fragment_length_sd = [] + + 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) ] + ]) + input[1] = KALLISTO_INDEX.out.index + input[2] = gtf + input[3] = chromosomes + input[4] = fragment_length + input[5] = fragment_length_sd + """ } + } + then { + assertAll( + { assert process.success }, + { assert snapshot( + path("${process.out.results[0][1]}/abundance.tsv"), + process.out.log, + process.out.versions).match() } + ) + } + } + + test("sarscov2 single-end - stub") { + options "-stub" + + when { + process { + """ + gtf = [] + chromosomes = [] + fragment_length = 150 + fragment_length_sd = 75 + + 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) ] + ]) + input[1] = KALLISTO_INDEX_STUB.out.index + input[2] = gtf + input[3] = chromosomes + input[4] = fragment_length + input[5] = fragment_length_sd + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("sarscov2 paired-end - stub") { + + options "-stub" + + when { process { """ gtf = [] @@ -72,7 +146,7 @@ nextflow_process { [ 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) ] ]) - input[1] = KALLISTO_INDEX.out.index + input[1] = KALLISTO_INDEX_STUB.out.index input[2] = gtf input[3] = chromosomes input[4] = fragment_length @@ -83,9 +157,7 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot(path("${process.out.results[0][1]}/abundance.tsv")).match("pe_abundance_tsv") }, - { assert snapshot(process.out.log).match("pe_log") }, - { assert snapshot(process.out.versions).match("pe_versions") } + { assert snapshot(process.out).match() } ) } } diff --git a/modules/nf-core/kallisto/quant/tests/main.nf.test.snap b/modules/nf-core/kallisto/quant/tests/main.nf.test.snap index f957e6c8b..cf0d73304 100644 --- a/modules/nf-core/kallisto/quant/tests/main.nf.test.snap +++ b/modules/nf-core/kallisto/quant/tests/main.nf.test.snap @@ -1,6 +1,7 @@ { - "pe_log": { + "sarscov2 paired-end": { "content": [ + "abundance.tsv:md5,f0a9a2543f8fc0c8442be0a939d70f66", [ [ { @@ -9,32 +10,170 @@ }, "test.log:md5,8a5987f8e779cd12ca708e2212f771f5" ] - ] - ], - "timestamp": "2024-01-19T09:31:05.549084" - }, - "se_versions": { - "content": [ + ], [ "versions.yml:md5,f981ad0cc089194a8fb00a47948eea94" ] ], - "timestamp": "2024-01-19T09:30:00.138848" + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-03T15:25:27.043048" }, - "se_abundance_tsv": { + "sarscov2 paired-end - stub": { "content": [ - "abundance.tsv:md5,8a4afe91e6a75b4e619daaf664eb7d9b" + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + [ + + ] + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": false + }, + "test.run_info.json:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + [ + { + "id": "test", + "single_end": false + }, + "test.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "3": [ + "versions.yml:md5,f981ad0cc089194a8fb00a47948eea94" + ], + "json_info": [ + [ + { + "id": "test", + "single_end": false + }, + "test.run_info.json:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "log": [ + [ + { + "id": "test", + "single_end": false + }, + "test.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "results": [ + [ + { + "id": "test", + "single_end": false + }, + [ + + ] + ] + ], + "versions": [ + "versions.yml:md5,f981ad0cc089194a8fb00a47948eea94" + ] + } ], - "timestamp": "2024-01-19T09:30:00.127992" + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-03T15:26:04.484652" }, - "pe_abundance_tsv": { + "sarscov2 single-end - stub": { "content": [ - "abundance.tsv:md5,f0a9a2543f8fc0c8442be0a939d70f66" + { + "0": [ + [ + { + "id": "test", + "single_end": true + }, + [ + + ] + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": true + }, + "test.run_info.json:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + [ + { + "id": "test", + "single_end": true + }, + "test.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "3": [ + "versions.yml:md5,f981ad0cc089194a8fb00a47948eea94" + ], + "json_info": [ + [ + { + "id": "test", + "single_end": true + }, + "test.run_info.json:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "log": [ + [ + { + "id": "test", + "single_end": true + }, + "test.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "results": [ + [ + { + "id": "test", + "single_end": true + }, + [ + + ] + ] + ], + "versions": [ + "versions.yml:md5,f981ad0cc089194a8fb00a47948eea94" + ] + } ], - "timestamp": "2024-01-19T09:31:05.544756" + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-03T15:25:46.479136" }, - "se_log": { + "sarscov2 single-end": { "content": [ + "abundance.tsv:md5,8a4afe91e6a75b4e619daaf664eb7d9b", [ [ { @@ -43,16 +182,15 @@ }, "test.log:md5,9c166f0c50cd4fdbdbf1bff9d5d8aba2" ] - ] - ], - "timestamp": "2024-01-19T09:30:00.135036" - }, - "pe_versions": { - "content": [ + ], [ "versions.yml:md5,f981ad0cc089194a8fb00a47948eea94" ] ], - "timestamp": "2024-01-19T09:31:05.553993" + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-03T15:25:08.348876" } } \ No newline at end of file diff --git a/modules/nf-core/umitools/dedup/main.nf b/modules/nf-core/umitools/dedup/main.nf index b2d11ebf5..1e2a2aae0 100644 --- a/modules/nf-core/umitools/dedup/main.nf +++ b/modules/nf-core/umitools/dedup/main.nf @@ -47,6 +47,7 @@ process UMITOOLS_DEDUP { """ stub: + prefix = task.ext.prefix ?: "${meta.id}" """ touch ${prefix}.bam touch ${prefix}.log diff --git a/modules/nf-core/umitools/dedup/tests/main.nf.test b/modules/nf-core/umitools/dedup/tests/main.nf.test index 018bd293d..883e2d9d7 100644 --- a/modules/nf-core/umitools/dedup/tests/main.nf.test +++ b/modules/nf-core/umitools/dedup/tests/main.nf.test @@ -26,8 +26,9 @@ nextflow_process { assertAll( { assert process.success }, { assert path("${process.out.log[0][1]}").exists() }, - { assert snapshot(process.out.bam).match("se no stats - bam") }, - { assert snapshot(process.out.versions).match("se no stats - versions") } + { assert snapshot( + bam(process.out.bam[0][1]).getSamLinesMD5(), + process.out.versions).match() } ) } } @@ -54,8 +55,9 @@ nextflow_process { assertAll( { assert process.success }, { assert path("${process.out.log[0][1]}").exists() }, - { assert snapshot(process.out.bam).match("pe no stats - bam") }, - { assert snapshot(process.out.versions).match("pe no stats - versions") } + { assert snapshot( + process.out.bam, + process.out.versions).match() } ) } } @@ -82,11 +84,99 @@ nextflow_process { assertAll( { assert process.success }, { assert path("${process.out.log[0][1]}").exists() }, - { assert snapshot(process.out.bam).match("pe - bam") }, - { assert snapshot(process.out.tsv_edit_distance).match("pe - tsv_edit_distance") }, - { assert snapshot(process.out.tsv_per_umi).match("pe - tsv_per_umi") }, - { assert snapshot(process.out.tsv_umi_per_position).match("pe - tsv_umi_per_position") }, - { assert snapshot(process.out.versions).match("pe - versions") } + { assert snapshot( + process.out.bam, + process.out.tsv_edit_distance, + process.out.tsv_per_umi, + process.out.tsv_umi_per_position, + process.out.versions).match() } + ) + } + } + + test("se - no stats - stub") { + + options "-stub" + + config "./nextflow.config" + + when { + process { + """ + get_output_stats = false + + input[0] = [ + [ id:'test', single_end:true ], // meta map + file(params.modules_testdata_base_path + "genomics/sarscov2/illumina/bam/test.single_end.sorted.bam", checkIfExists: true), + file(params.modules_testdata_base_path + "genomics/sarscov2/illumina/bam/test.single_end.sorted.bam.bai", checkIfExists: true) + ] + input[1] = get_output_stats + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out.bam).match() } + ) + } + } + + test("pe - no stats - stub") { + + options "-stub" + + config "./nextflow.config" + + when { + process { + """ + get_output_stats = false + + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + "genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam", checkIfExists: true), + file(params.modules_testdata_base_path + "genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam.bai", checkIfExists: true) + ] + input[1] = get_output_stats + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out.bam).match() } + ) + } + } + + test("pe - with stats - stub") { + + options "-stub" + + config "./nextflow.config" + + when { + process { + """ + get_output_stats = true + + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + "genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam", checkIfExists: true), + file(params.modules_testdata_base_path + "genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam.bai", checkIfExists: true) + ] + input[1] = get_output_stats + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out.bam).match() } ) } } diff --git a/modules/nf-core/umitools/dedup/tests/main.nf.test.snap b/modules/nf-core/umitools/dedup/tests/main.nf.test.snap index bc3c8693c..f7f4e94f1 100644 --- a/modules/nf-core/umitools/dedup/tests/main.nf.test.snap +++ b/modules/nf-core/umitools/dedup/tests/main.nf.test.snap @@ -1,5 +1,5 @@ { - "pe no stats - bam": { + "pe - no stats - stub": { "content": [ [ [ @@ -7,17 +7,17 @@ "id": "test", "single_end": false }, - "test.dedup.bam:md5,350e942a0d45e8356fa24bc8c47dc1ed" + "test.dedup.bam:md5,d41d8cd98f00b204e9800998ecf8427e" ] ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "24.01.0" + "nextflow": "24.04.2" }, - "timestamp": "2024-03-04T17:41:38.139428" + "timestamp": "2024-07-03T11:40:46.802233" }, - "pe - tsv_per_umi": { + "pe - with stats - stub": { "content": [ [ [ @@ -25,18 +25,27 @@ "id": "test", "single_end": false }, - "test.dedup_per_umi.tsv:md5,8e6783a4a79437b095f095f2aefe7c01" + "test.dedup.bam:md5,d41d8cd98f00b204e9800998ecf8427e" ] ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "24.01.0" + "nextflow": "24.04.2" }, - "timestamp": "2024-03-04T17:41:56.21078" + "timestamp": "2024-07-03T11:40:59.501624" }, - "pe - tsv_edit_distance": { + "pe - with stats": { "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test.dedup.bam:md5,350e942a0d45e8356fa24bc8c47dc1ed" + ] + ], [ [ { @@ -45,16 +54,16 @@ }, "test.dedup_edit_distance.tsv:md5,65186b0964e2f8d970cc04d736d8b119" ] - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" - }, - "timestamp": "2024-03-04T17:41:56.203654" - }, - "pe - tsv_umi_per_position": { - "content": [ + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test.dedup_per_umi.tsv:md5,8e6783a4a79437b095f095f2aefe7c01" + ] + ], [ [ { @@ -63,15 +72,18 @@ }, "test.dedup_per_umi_per_position.tsv:md5,9386db4a104b8e4e32f3ca4a84efa4ac" ] + ], + [ + "versions.yml:md5,e2f5146464c09bf7ae98c85ea5410e50" ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "24.01.0" + "nextflow": "24.04.2" }, - "timestamp": "2024-03-04T17:41:56.217525" + "timestamp": "2024-07-03T11:27:24.231325" }, - "se no stats - bam": { + "se - no stats - stub": { "content": [ [ [ @@ -79,41 +91,30 @@ "id": "test", "single_end": true }, - "test.dedup.bam:md5,c9da2ee4f07f5c6922251bd01d6bcb01" + "test.dedup.bam:md5,d41d8cd98f00b204e9800998ecf8427e" ] ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "24.01.0" + "nextflow": "24.04.2" }, - "timestamp": "2024-03-04T17:41:16.383148" + "timestamp": "2024-07-03T11:40:34.598176" }, - "se no stats - versions": { + "se - no stats": { "content": [ + "a114abd9fccce6fe2869852b5cd18964", [ "versions.yml:md5,e2f5146464c09bf7ae98c85ea5410e50" ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "24.01.0" + "nextflow": "24.04.2" }, - "timestamp": "2024-03-04T17:41:16.391241" + "timestamp": "2024-07-03T13:45:48.553561" }, - "pe - versions": { - "content": [ - [ - "versions.yml:md5,e2f5146464c09bf7ae98c85ea5410e50" - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" - }, - "timestamp": "2024-03-04T17:41:56.226748" - }, - "pe - bam": { + "pe - no stats": { "content": [ [ [ @@ -123,24 +124,15 @@ }, "test.dedup.bam:md5,350e942a0d45e8356fa24bc8c47dc1ed" ] - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" - }, - "timestamp": "2024-03-04T17:41:56.19652" - }, - "pe no stats - versions": { - "content": [ + ], [ "versions.yml:md5,e2f5146464c09bf7ae98c85ea5410e50" ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "24.01.0" + "nextflow": "24.04.2" }, - "timestamp": "2024-03-04T17:41:38.157629" + "timestamp": "2024-07-03T11:27:06.957467" } } \ No newline at end of file diff --git a/subworkflows/local/quantify_rsem/tests/main.nf.test.snap b/subworkflows/local/quantify_rsem/tests/main.nf.test.snap index e3d6bd183..f87877733 100644 --- a/subworkflows/local/quantify_rsem/tests/main.nf.test.snap +++ b/subworkflows/local/quantify_rsem/tests/main.nf.test.snap @@ -1,4 +1,110 @@ { + "homo_sapiens - stub": { + "content": [ + "test.log", + [ + [ + { + "id": "test", + "strandedness": "forward" + }, + "test.genes.results:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + [ + [ + { + "id": "test", + "strandedness": "forward" + }, + "test.isoforms.results:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + [ + [ + { + "id": "test", + "strandedness": "forward" + }, + "test.stat:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + [ + [ + { + "id": "test", + "strandedness": "forward" + }, + "test.STAR.genome.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + [ + [ + { + "id": "test", + "strandedness": "forward" + }, + "test.genome.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + [ + [ + { + "id": "test", + "strandedness": "forward" + }, + "test.transcript.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + [ + [ + { + "id": "test", + "strandedness": "forward" + }, + "test.isoforms.results:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + "versions.yml:md5,ae1676b60b6335fff8f1188288103a1c" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-03T11:09:12.443079" + }, "logs": { "content": [ "test.log" @@ -11,6 +117,7 @@ }, "homo_sapiens": { "content": [ + "test.log", [ [ { @@ -103,8 +210,8 @@ ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.2" }, - "timestamp": "2024-03-07T18:15:03.001083" + "timestamp": "2024-07-03T11:08:53.123014" } } \ No newline at end of file diff --git a/subworkflows/nf-core/bam_dedup_stats_samtools_umitools/tests/main.nf.test b/subworkflows/nf-core/bam_dedup_stats_samtools_umitools/tests/main.nf.test index 1a95c0bb5..ab541cb88 100644 --- a/subworkflows/nf-core/bam_dedup_stats_samtools_umitools/tests/main.nf.test +++ b/subworkflows/nf-core/bam_dedup_stats_samtools_umitools/tests/main.nf.test @@ -7,9 +7,6 @@ nextflow_workflow { test("sarscov2_bam_bai") { when { - params { - outdir = "$outputDir" - } workflow { """ val_get_dedup_stats = false @@ -30,12 +27,40 @@ nextflow_workflow { { assert workflow.out.deduplog.get(0).get(1) ==~ ".*.log"}, { assert workflow.out.bam.get(0).get(1) ==~ ".*.bam"}, { assert workflow.out.bai.get(0).get(1) ==~ ".*.bai"}, - { assert snapshot(workflow.out.stats).match("test_bam_dedup_stats_samtools_umitools_stats") }, - { assert snapshot(workflow.out.flagstat).match("test_bam_dedup_stats_samtools_umitools_flagstats") }, - { assert snapshot(workflow.out.idxstats).match("test_bam_dedup_stats_samtools_umitools_idxstats") } + { assert snapshot( + workflow.out.stats, + workflow.out.flagstat, + workflow.out.idxstats, + workflow.out.versions + ).match() } ) } - } + test("sarscov2_bam_bai - stub") { + + options "-stub" + + when { + workflow { + """ + val_get_dedup_stats = false + + input[0] = Channel.of([ + [ id:'test'], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam.bai', checkIfExists: true) + ]) + input[1] = val_get_dedup_stats + """ + } + } + + then { + assertAll( + { assert workflow.success}, + { assert snapshot(workflow.out).match() } + ) + } + } } diff --git a/subworkflows/nf-core/bam_dedup_stats_samtools_umitools/tests/main.nf.test.snap b/subworkflows/nf-core/bam_dedup_stats_samtools_umitools/tests/main.nf.test.snap index 442776f69..4be4640e2 100644 --- a/subworkflows/nf-core/bam_dedup_stats_samtools_umitools/tests/main.nf.test.snap +++ b/subworkflows/nf-core/bam_dedup_stats_samtools_umitools/tests/main.nf.test.snap @@ -1,23 +1,14 @@ { - "test_bam_dedup_stats_samtools_umitools_idxstats": { + "sarscov2_bam_bai": { "content": [ [ [ { "id": "test" }, - "test.idxstats:md5,1adb27b52d4d64b826f48b59d61dcd4d" + "test.stats:md5,09d1bd8f10e000921202f7ea1cd0679e" ] - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" - }, - "timestamp": "2023-11-06T09:58:40.394333937" - }, - "test_bam_dedup_stats_samtools_umitools_flagstats": { - "content": [ + ], [ [ { @@ -25,29 +16,164 @@ }, "test.flagstat:md5,0bb716e40fae381b97484b58e0b16efe" ] + ], + [ + [ + { + "id": "test" + }, + "test.idxstats:md5,1adb27b52d4d64b826f48b59d61dcd4d" + ] + ], + [ + "versions.yml:md5,32b4a349a563fb5b01cf0688ae3ca860", + "versions.yml:md5,803d3f4d3992a7a597a09cf330bd46a4", + "versions.yml:md5,9b7824114bf90d4b60110ddaf149f1db", + "versions.yml:md5,f0864f64f8ebb81826a1cf5c14b77e69", + "versions.yml:md5,f4935d4e563646266cc6bb4d75d0fb7d" ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "24.01.0" + "nextflow": "24.04.2" }, - "timestamp": "2023-11-06T09:58:40.385185447" + "timestamp": "2024-07-03T11:53:11.53709" }, - "test_bam_dedup_stats_samtools_umitools_stats": { + "sarscov2_bam_bai - stub": { "content": [ - [ - [ - { - "id": "test" - }, - "test.stats:md5,09d1bd8f10e000921202f7ea1cd0679e" + { + "0": [ + [ + { + "id": "test" + }, + "test.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + [ + { + "id": "test" + }, + "test.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + [ + { + "id": "test" + }, + "test.bam.bai:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "3": [ + [ + { + "id": "test" + }, + "test.bam.csi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "4": [ + [ + { + "id": "test" + }, + "test.stats:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "5": [ + [ + { + "id": "test" + }, + "test.flagstat:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "6": [ + [ + { + "id": "test" + }, + "test.idxstats:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "7": [ + "versions.yml:md5,32b4a349a563fb5b01cf0688ae3ca860", + "versions.yml:md5,803d3f4d3992a7a597a09cf330bd46a4", + "versions.yml:md5,9b7824114bf90d4b60110ddaf149f1db", + "versions.yml:md5,f0864f64f8ebb81826a1cf5c14b77e69", + "versions.yml:md5,f4935d4e563646266cc6bb4d75d0fb7d" + ], + "bai": [ + [ + { + "id": "test" + }, + "test.bam.bai:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "bam": [ + [ + { + "id": "test" + }, + "test.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "csi": [ + [ + { + "id": "test" + }, + "test.bam.csi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "deduplog": [ + [ + { + "id": "test" + }, + "test.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "flagstat": [ + [ + { + "id": "test" + }, + "test.flagstat:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "idxstats": [ + [ + { + "id": "test" + }, + "test.idxstats:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "stats": [ + [ + { + "id": "test" + }, + "test.stats:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,32b4a349a563fb5b01cf0688ae3ca860", + "versions.yml:md5,803d3f4d3992a7a597a09cf330bd46a4", + "versions.yml:md5,9b7824114bf90d4b60110ddaf149f1db", + "versions.yml:md5,f0864f64f8ebb81826a1cf5c14b77e69", + "versions.yml:md5,f4935d4e563646266cc6bb4d75d0fb7d" ] - ] + } ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.2" }, - "timestamp": "2024-05-29T07:36:18.573909434" + "timestamp": "2024-07-03T11:53:25.735454" } } \ No newline at end of file diff --git a/subworkflows/nf-core/bam_markduplicates_picard/tests/main.nf.test b/subworkflows/nf-core/bam_markduplicates_picard/tests/main.nf.test index 7ecf3fe40..f023a9f7d 100644 --- a/subworkflows/nf-core/bam_markduplicates_picard/tests/main.nf.test +++ b/subworkflows/nf-core/bam_markduplicates_picard/tests/main.nf.test @@ -28,14 +28,15 @@ nextflow_workflow { then { assertAll( { assert workflow.success}, + { assert path(workflow.out.metrics.get(0).get(1)).getText().contains("97") }, { assert snapshot( path(workflow.out.bam[0][1]), path(workflow.out.bai[0][1]), path(workflow.out.flagstat[0][1]), path(workflow.out.idxstats[0][1]), path(workflow.out.stats[0][1]), - ).match("sarscov2 - bam") }, - { assert path(workflow.out.metrics.get(0).get(1)).getText().contains("97") } + workflow.out.versions + ).match() } ) } } @@ -64,16 +65,78 @@ nextflow_workflow { then { assertAll( { assert workflow.success}, + { assert path(workflow.out.metrics.get(0).get(1)).getText().contains("0.999986") }, { assert snapshot( file(workflow.out.cram[0][1]).name, path(workflow.out.crai[0][1]), path(workflow.out.flagstat[0][1]), path(workflow.out.idxstats[0][1]), path(workflow.out.stats[0][1]), - ).match("homo_sapiens - cram") }, - { assert path(workflow.out.metrics.get(0).get(1)).getText().contains("0.999986") } + workflow.out.versions + ).match() } ) } } + test("sarscov2 - bam - stub") { + + options "-stub" + + when { + workflow { + """ + 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) + ]) + input[1] = Channel.of([ + [ id:'genome' ], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) + ]) + input[2] = Channel.of([ + [ id:'genome' ], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.fai', checkIfExists: true) + ]) + """ + } + } + + then { + assertAll( + { assert workflow.success}, + { assert snapshot(workflow.out).match() } + ) + } + } + + test("homo_sapiens - cram - stub") { + + options "-stub" + + when { + workflow { + """ + input[0] = Channel.of([ + [ id:'test' ], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/cram/test.paired_end.sorted.cram', checkIfExists: true) + ]) + input[1] = Channel.of([ + [ id:'genome' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) + ]) + input[2] = Channel.of([ + [ id:'genome' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta.fai', checkIfExists: true) + ]) + """ + } + } + + then { + assertAll( + { assert workflow.success}, + { assert snapshot(workflow.out).match() } + ) + } + } } diff --git a/subworkflows/nf-core/bam_markduplicates_picard/tests/main.nf.test.snap b/subworkflows/nf-core/bam_markduplicates_picard/tests/main.nf.test.snap index 94f8f29c4..e2e4a947c 100644 --- a/subworkflows/nf-core/bam_markduplicates_picard/tests/main.nf.test.snap +++ b/subworkflows/nf-core/bam_markduplicates_picard/tests/main.nf.test.snap @@ -5,13 +5,354 @@ "test.cram.crai:md5,78d47ba01ac4e05f3ae1e353902a989e", "test.flagstat:md5,93b0ef463df947ede1f42ff60396c34d", "test.idxstats:md5,e179601fa7b8ebce81ac3765206f6c15", - "test.stats:md5,372a7d9d9081aa009b21343a913beb14" + "test.stats:md5,372a7d9d9081aa009b21343a913beb14", + [ + "versions.yml:md5,0d170c963555870ac9a0d438bf6c2f93", + "versions.yml:md5,3729819c49e6d8eed9ada247e5d77de1", + "versions.yml:md5,966dcea920866a87b55e665563864fc9", + "versions.yml:md5,a62ca6eb27e59dd6f03a93fa8656e656", + "versions.yml:md5,fcf804c605f455127f2449403d70390c" + ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.2" }, - "timestamp": "2024-05-29T07:39:18.809130196" + "timestamp": "2024-07-03T11:55:09.400487" + }, + "sarscov2 - bam - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + + ], + "2": [ + [ + { + "id": "test", + "single_end": false + }, + "test.MarkDuplicates.metrics.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "3": [ + [ + { + "id": "test", + "single_end": false + }, + "test.bam.bai:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "4": [ + [ + { + "id": "test", + "single_end": false + }, + "test.bam.crai:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "5": [ + [ + { + "id": "test", + "single_end": false + }, + "test.bam.csi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "6": [ + [ + { + "id": "test", + "single_end": false + }, + "test.stats:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "7": [ + [ + { + "id": "test", + "single_end": false + }, + "test.flagstat:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "8": [ + [ + { + "id": "test", + "single_end": false + }, + "test.idxstats:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "9": [ + "versions.yml:md5,0d170c963555870ac9a0d438bf6c2f93", + "versions.yml:md5,3729819c49e6d8eed9ada247e5d77de1", + "versions.yml:md5,966dcea920866a87b55e665563864fc9", + "versions.yml:md5,a62ca6eb27e59dd6f03a93fa8656e656", + "versions.yml:md5,fcf804c605f455127f2449403d70390c" + ], + "bai": [ + [ + { + "id": "test", + "single_end": false + }, + "test.bam.bai:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "bam": [ + [ + { + "id": "test", + "single_end": false + }, + "test.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "crai": [ + [ + { + "id": "test", + "single_end": false + }, + "test.bam.crai:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "cram": [ + + ], + "csi": [ + [ + { + "id": "test", + "single_end": false + }, + "test.bam.csi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "flagstat": [ + [ + { + "id": "test", + "single_end": false + }, + "test.flagstat:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "idxstats": [ + [ + { + "id": "test", + "single_end": false + }, + "test.idxstats:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "metrics": [ + [ + { + "id": "test", + "single_end": false + }, + "test.MarkDuplicates.metrics.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "stats": [ + [ + { + "id": "test", + "single_end": false + }, + "test.stats:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,0d170c963555870ac9a0d438bf6c2f93", + "versions.yml:md5,3729819c49e6d8eed9ada247e5d77de1", + "versions.yml:md5,966dcea920866a87b55e665563864fc9", + "versions.yml:md5,a62ca6eb27e59dd6f03a93fa8656e656", + "versions.yml:md5,fcf804c605f455127f2449403d70390c" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-03T11:55:22.514635" + }, + "homo_sapiens - cram - stub": { + "content": [ + { + "0": [ + + ], + "1": [ + [ + { + "id": "test" + }, + "test.cram:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + [ + { + "id": "test" + }, + "test.MarkDuplicates.metrics.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "3": [ + [ + { + "id": "test" + }, + "test.cram.bai:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "4": [ + [ + { + "id": "test" + }, + "test.cram.crai:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "5": [ + [ + { + "id": "test" + }, + "test.cram.csi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "6": [ + [ + { + "id": "test" + }, + "test.stats:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "7": [ + [ + { + "id": "test" + }, + "test.flagstat:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "8": [ + [ + { + "id": "test" + }, + "test.idxstats:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "9": [ + "versions.yml:md5,0d170c963555870ac9a0d438bf6c2f93", + "versions.yml:md5,3729819c49e6d8eed9ada247e5d77de1", + "versions.yml:md5,966dcea920866a87b55e665563864fc9", + "versions.yml:md5,a62ca6eb27e59dd6f03a93fa8656e656", + "versions.yml:md5,fcf804c605f455127f2449403d70390c" + ], + "bai": [ + [ + { + "id": "test" + }, + "test.cram.bai:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "bam": [ + + ], + "crai": [ + [ + { + "id": "test" + }, + "test.cram.crai:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "cram": [ + [ + { + "id": "test" + }, + "test.cram:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "csi": [ + [ + { + "id": "test" + }, + "test.cram.csi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "flagstat": [ + [ + { + "id": "test" + }, + "test.flagstat:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "idxstats": [ + [ + { + "id": "test" + }, + "test.idxstats:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "metrics": [ + [ + { + "id": "test" + }, + "test.MarkDuplicates.metrics.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "stats": [ + [ + { + "id": "test" + }, + "test.stats:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,0d170c963555870ac9a0d438bf6c2f93", + "versions.yml:md5,3729819c49e6d8eed9ada247e5d77de1", + "versions.yml:md5,966dcea920866a87b55e665563864fc9", + "versions.yml:md5,a62ca6eb27e59dd6f03a93fa8656e656", + "versions.yml:md5,fcf804c605f455127f2449403d70390c" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-03T11:55:37.258086" }, "sarscov2 - bam": { "content": [ @@ -19,12 +360,19 @@ "test.bam.bai:md5,4d3ae8d013444b55e17aa0149a2ab404", "test.flagstat:md5,4f7ffd1e6a5e85524d443209ac97d783", "test.idxstats:md5,df60a8c8d6621100d05178c93fb053a2", - "test.stats:md5,cca83e4fc9406fc3875b5e60055d6574" + "test.stats:md5,cca83e4fc9406fc3875b5e60055d6574", + [ + "versions.yml:md5,0d170c963555870ac9a0d438bf6c2f93", + "versions.yml:md5,3729819c49e6d8eed9ada247e5d77de1", + "versions.yml:md5,966dcea920866a87b55e665563864fc9", + "versions.yml:md5,a62ca6eb27e59dd6f03a93fa8656e656", + "versions.yml:md5,fcf804c605f455127f2449403d70390c" + ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.2" }, - "timestamp": "2024-05-29T07:39:07.280687689" + "timestamp": "2024-07-03T11:54:53.226702" } } \ No newline at end of file diff --git a/subworkflows/nf-core/bam_rseqc/tests/main.nf.test b/subworkflows/nf-core/bam_rseqc/tests/main.nf.test index eb87c27c9..492cfb6fe 100644 --- a/subworkflows/nf-core/bam_rseqc/tests/main.nf.test +++ b/subworkflows/nf-core/bam_rseqc/tests/main.nf.test @@ -25,27 +25,19 @@ nextflow_workflow { then { assertAll( { assert workflow.success}, - { assert snapshot(workflow.out.bamstat_txt).match("bamstat_txt")}, - - { assert snapshot(workflow.out.innerdistance_all.findAll { it[1].endsWith('.pdf') == false }).match("innerdistance_all")}, { assert workflow.out.innerdistance_all.any { it[1].endsWith('.pdf') && file(it[1]).exists() } }, - - { assert snapshot(workflow.out.inferexperiment_txt).match("inferexperiment_txt")}, - - { assert snapshot(workflow.out.junctionannotation_all.findAll { - it[1].endsWith('.xls') == false && - it[1].endsWith('.r') == false }).match("junctionannotation_all")}, - - { assert snapshot(workflow.out.junctionsaturation_all.findAll { it[1].endsWith('.pdf') == false }).match("junctionsaturation_all")}, - { assert workflow.out.junctionsaturation_all.any { it[1].endsWith('.pdf') && file(it[1]).exists() } }, - - { assert snapshot(workflow.out.readdistribution_txt).match("readdistribution_txt")}, - - { assert snapshot(workflow.out.readduplication_all.findAll { it[1].endsWith('.pdf') == false }).match("readduplication_all")}, { assert workflow.out.readduplication_all.any { it[1].endsWith('.pdf') && file(it[1]).exists() } }, - - { assert snapshot(workflow.out.tin_txt).match("tin_txt")}, - { assert snapshot(workflow.out.versions).match("versions")}, + { assert workflow.out.junctionsaturation_all.any { it[1].endsWith('.pdf') && file(it[1]).exists() } }, + { assert snapshot( + workflow.out.bamstat_txt, + workflow.out.innerdistance_all.findAll { it[1].endsWith('.pdf') == false }, + workflow.out.inferexperiment_txt, + workflow.out.junctionannotation_all.findAll { it[1].endsWith('.xls') == false && it[1].endsWith('.r') == false }, + workflow.out.junctionsaturation_all.findAll { it[1].endsWith('.pdf') == false }, + workflow.out.readdistribution_txt, + workflow.out.readduplication_all.findAll { it[1].endsWith('.pdf') == false }, + workflow.out.tin_txt, + workflow.out.versions).match()} ) } } @@ -79,9 +71,64 @@ nextflow_workflow { { assert workflow.out.readdistribution_txt.size() == 0 }, { assert workflow.out.readduplication_all.size() == 0 }, { assert workflow.out.tin_txt.size() == 0 }, - { assert workflow.out.versions.size() == 0 }, + { assert workflow.out.versions.size() == 0 } + ) + } + } + + test("sarscov2 paired-end [bam] - stub") { + + options "-stub" + + when { + workflow { + """ + input[0] = Channel.of([ + [ id:'test' ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam.bai', checkIfExists: true) + ]) + input[1] = Channel.of([ + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/bed/test.bed12', checkIfExists: true) + ]) + input[2] = ['bam_stat', 'inner_distance', 'infer_experiment', 'junction_annotation', 'junction_saturation', 'read_distribution', 'read_duplication', 'tin'] + """ + } + } + + then { + assertAll( + { assert workflow.success}, + { assert snapshot(workflow.out).match()} ) } } + test("sarscov2 paired-end [bam] no modules - stub") { + + options "-stub" + + when { + workflow { + """ + input[0] = Channel.of([ + [ id:'test' ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam.bai', checkIfExists: true) + ]) + input[1] = Channel.of([ + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/bed/test.bed12', checkIfExists: true) + ]) + input[2] = [] + """ + } + } + + then { + assertAll( + { assert workflow.success}, + { assert snapshot(workflow.out).match()} + ) + } + } } diff --git a/subworkflows/nf-core/bam_rseqc/tests/main.nf.test.snap b/subworkflows/nf-core/bam_rseqc/tests/main.nf.test.snap index 8bd21052f..0040810cc 100644 --- a/subworkflows/nf-core/bam_rseqc/tests/main.nf.test.snap +++ b/subworkflows/nf-core/bam_rseqc/tests/main.nf.test.snap @@ -1,5 +1,5 @@ { - "bamstat_txt": { + "sarscov2 paired-end [bam]": { "content": [ [ [ @@ -8,98 +8,57 @@ }, "test.bam_stat.txt:md5,2675857864c1d1139b2a19d25dc36b09" ] - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2023-12-08T14:37:45.671792186" - }, - "readduplication_all": { - "content": [ + ], [ [ { "id": "test" }, - "test.DupRate_plot.r:md5,3c0325095cee4835b921e57d61c23dca" + "test.inner_distance.txt:md5,a1acc9def0f64a5500d4c4cb47cbe32b" ], [ { "id": "test" }, - "test.pos.DupRate.xls:md5,a859bc2031d46bf1cc4336205847caa3" + "test.inner_distance_freq.txt:md5,3fc037501f5899b5da009c8ce02fc25e" ], [ { "id": "test" }, - "test.seq.DupRate.xls:md5,ee8783399eec5a18522a6f08bece338b" + "test.inner_distance_mean.txt:md5,58398b7d5a29a5e564f9e3c50b55996c" + ], + [ + { + "id": "test" + }, + "test.inner_distance_plot.r:md5,5859fbd5b42046d47e8b9aa85077f4ea" ] - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2023-12-08T14:37:45.927253593" - }, - "tin_txt": { - "content": [ + ], [ [ { "id": "test" }, - "test.paired_end.sorted.summary.txt:md5,9d98447e178b89a89f6f5aba7a772fe6" + "test.infer_experiment.txt:md5,f9d0bfc239df637cd8aeda40ade3c59a" ] - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-02-06T15:29:37.545261" - }, - "junctionsaturation_all": { - "content": [ + ], [ [ { "id": "test" }, - "test.junctionSaturation_plot.r:md5,caa6e63dcb477aabb169882b2f30dadd" + "test.junction_annotation.log:md5,d75e0f5d62fada8aa9449991b209554c" ] - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2023-12-08T14:37:45.825157699" - }, - "versions": { - "content": [ + ], [ - "versions.yml:md5,60dc1afce7fecb7270e998a00ee393e2", - "versions.yml:md5,9bc3caee6aeb54f23f5296b499546515", - "versions.yml:md5,a25161998ca60d5ce4e9a86abbf1bcb8", - "versions.yml:md5,c175b92f50b5be38a8808cbf7ac7452e", - "versions.yml:md5,ca7e95cf7ff7cff5d052b890729f7ead", - "versions.yml:md5,d03beea3c68934c3f3623a005c1424d2", - "versions.yml:md5,f2f3ecd549045f7595245f904f5d9414", - "versions.yml:md5,fd16f1098b9c285f3ea7bd3daf4e8f10" - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2023-12-14T14:58:10.874440924" - }, - "readdistribution_txt": { - "content": [ + [ + { + "id": "test" + }, + "test.junctionSaturation_plot.r:md5,caa6e63dcb477aabb169882b2f30dadd" + ] + ], [ [ { @@ -107,81 +66,838 @@ }, "test.read_distribution.txt:md5,56893fdc0809d968629a363551a1655f" ] - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2023-12-08T14:37:45.841855468" - }, - "innerdistance_all": { - "content": [ + ], [ [ { "id": "test" }, - "test.inner_distance.txt:md5,a1acc9def0f64a5500d4c4cb47cbe32b" + "test.DupRate_plot.r:md5,3c0325095cee4835b921e57d61c23dca" ], [ { "id": "test" }, - "test.inner_distance_freq.txt:md5,3fc037501f5899b5da009c8ce02fc25e" + "test.pos.DupRate.xls:md5,a859bc2031d46bf1cc4336205847caa3" ], [ { "id": "test" }, - "test.inner_distance_mean.txt:md5,58398b7d5a29a5e564f9e3c50b55996c" - ], + "test.seq.DupRate.xls:md5,ee8783399eec5a18522a6f08bece338b" + ] + ], + [ [ { "id": "test" }, - "test.inner_distance_plot.r:md5,5859fbd5b42046d47e8b9aa85077f4ea" + "test.paired_end.sorted.summary.txt:md5,9d98447e178b89a89f6f5aba7a772fe6" ] + ], + [ + "versions.yml:md5,60dc1afce7fecb7270e998a00ee393e2", + "versions.yml:md5,9bc3caee6aeb54f23f5296b499546515", + "versions.yml:md5,a25161998ca60d5ce4e9a86abbf1bcb8", + "versions.yml:md5,c175b92f50b5be38a8808cbf7ac7452e", + "versions.yml:md5,ca7e95cf7ff7cff5d052b890729f7ead", + "versions.yml:md5,d03beea3c68934c3f3623a005c1424d2", + "versions.yml:md5,f2f3ecd549045f7595245f904f5d9414", + "versions.yml:md5,fd16f1098b9c285f3ea7bd3daf4e8f10" ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.2" }, - "timestamp": "2023-12-08T14:37:45.734509133" + "timestamp": "2024-07-03T12:07:54.452949" }, - "inferexperiment_txt": { + "sarscov2 paired-end [bam] - stub": { "content": [ - [ - [ - { - "id": "test" - }, - "test.infer_experiment.txt:md5,f9d0bfc239df637cd8aeda40ade3c59a" + { + "0": [ + [ + { + "id": "test" + }, + "test.bam_stat.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + [ + { + "id": "test" + }, + "test.inner_distance.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + { + "id": "test" + }, + "test.inner_distance_freq.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + { + "id": "test" + }, + "test.inner_distance_mean.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + { + "id": "test" + }, + "test.inner_distance_plot.pdf:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + { + "id": "test" + }, + "test.inner_distance_plot.r:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "10": [ + [ + { + "id": "test" + }, + "test.Interact.bed:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "11": [ + [ + { + "id": "test" + }, + "test.junction.xls:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "12": [ + [ + { + "id": "test" + }, + "test.junction.pdf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "13": [ + [ + { + "id": "test" + }, + "test.events.pdf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "14": [ + [ + { + "id": "test" + }, + "test.junction_plot.r:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "15": [ + [ + { + "id": "test" + }, + "test.junction_annotation.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "16": [ + [ + { + "id": "test" + }, + "test.junctionSaturation_plot.pdf:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + { + "id": "test" + }, + "test.junctionSaturation_plot.r:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "17": [ + [ + { + "id": "test" + }, + "test.junctionSaturation_plot.pdf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "18": [ + [ + { + "id": "test" + }, + "test.junctionSaturation_plot.r:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "19": [ + [ + { + "id": "test" + }, + "test.read_distribution.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + [ + { + "id": "test" + }, + "test.inner_distance.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "20": [ + [ + { + "id": "test" + }, + "test.DupRate_plot.pdf:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + { + "id": "test" + }, + "test.DupRate_plot.r:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + { + "id": "test" + }, + "test.pos.DupRate.xls:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + { + "id": "test" + }, + "test.seq.DupRate.xls:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "21": [ + [ + { + "id": "test" + }, + "test.seq.DupRate.xls:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "22": [ + [ + { + "id": "test" + }, + "test.pos.DupRate.xls:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "23": [ + [ + { + "id": "test" + }, + "test.DupRate_plot.pdf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "24": [ + [ + { + "id": "test" + }, + "test.DupRate_plot.r:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "25": [ + [ + { + "id": "test" + }, + "test.paired_end.sorted.bam.summary.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "26": [ + "versions.yml:md5,60dc1afce7fecb7270e998a00ee393e2", + "versions.yml:md5,9bc3caee6aeb54f23f5296b499546515", + "versions.yml:md5,a25161998ca60d5ce4e9a86abbf1bcb8", + "versions.yml:md5,c175b92f50b5be38a8808cbf7ac7452e", + "versions.yml:md5,ca7e95cf7ff7cff5d052b890729f7ead", + "versions.yml:md5,d03beea3c68934c3f3623a005c1424d2", + "versions.yml:md5,f2f3ecd549045f7595245f904f5d9414", + "versions.yml:md5,fd16f1098b9c285f3ea7bd3daf4e8f10" + ], + "3": [ + [ + { + "id": "test" + }, + "test.inner_distance_freq.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "4": [ + [ + { + "id": "test" + }, + "test.inner_distance_mean.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "5": [ + [ + { + "id": "test" + }, + "test.inner_distance_plot.pdf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "6": [ + [ + { + "id": "test" + }, + "test.inner_distance_plot.r:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "7": [ + [ + { + "id": "test" + }, + "test.infer_experiment.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "8": [ + [ + { + "id": "test" + }, + "test.Interact.bed:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + { + "id": "test" + }, + "test.events.pdf:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + { + "id": "test" + }, + "test.junction.bed:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + { + "id": "test" + }, + "test.junction.pdf:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + { + "id": "test" + }, + "test.junction.xls:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + { + "id": "test" + }, + "test.junction_annotation.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + { + "id": "test" + }, + "test.junction_plot.r:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "9": [ + [ + { + "id": "test" + }, + "test.junction.bed:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "bamstat_txt": [ + [ + { + "id": "test" + }, + "test.bam_stat.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "inferexperiment_txt": [ + [ + { + "id": "test" + }, + "test.infer_experiment.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "innerdistance_all": [ + [ + { + "id": "test" + }, + "test.inner_distance.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + { + "id": "test" + }, + "test.inner_distance_freq.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + { + "id": "test" + }, + "test.inner_distance_mean.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + { + "id": "test" + }, + "test.inner_distance_plot.pdf:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + { + "id": "test" + }, + "test.inner_distance_plot.r:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "innerdistance_distance": [ + [ + { + "id": "test" + }, + "test.inner_distance.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "innerdistance_freq": [ + [ + { + "id": "test" + }, + "test.inner_distance_freq.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "innerdistance_mean": [ + [ + { + "id": "test" + }, + "test.inner_distance_mean.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "innerdistance_pdf": [ + [ + { + "id": "test" + }, + "test.inner_distance_plot.pdf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "innerdistance_rscript": [ + [ + { + "id": "test" + }, + "test.inner_distance_plot.r:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "junctionannotation_all": [ + [ + { + "id": "test" + }, + "test.Interact.bed:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + { + "id": "test" + }, + "test.events.pdf:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + { + "id": "test" + }, + "test.junction.bed:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + { + "id": "test" + }, + "test.junction.pdf:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + { + "id": "test" + }, + "test.junction.xls:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + { + "id": "test" + }, + "test.junction_annotation.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + { + "id": "test" + }, + "test.junction_plot.r:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "junctionannotation_bed": [ + [ + { + "id": "test" + }, + "test.junction.bed:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "junctionannotation_events_pdf": [ + [ + { + "id": "test" + }, + "test.events.pdf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "junctionannotation_interact_bed": [ + [ + { + "id": "test" + }, + "test.Interact.bed:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "junctionannotation_log": [ + [ + { + "id": "test" + }, + "test.junction_annotation.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "junctionannotation_pdf": [ + [ + { + "id": "test" + }, + "test.junction.pdf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "junctionannotation_rscript": [ + [ + { + "id": "test" + }, + "test.junction_plot.r:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "junctionannotation_xls": [ + [ + { + "id": "test" + }, + "test.junction.xls:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "junctionsaturation_all": [ + [ + { + "id": "test" + }, + "test.junctionSaturation_plot.pdf:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + { + "id": "test" + }, + "test.junctionSaturation_plot.r:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "junctionsaturation_pdf": [ + [ + { + "id": "test" + }, + "test.junctionSaturation_plot.pdf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "junctionsaturation_rscript": [ + [ + { + "id": "test" + }, + "test.junctionSaturation_plot.r:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "readdistribution_txt": [ + [ + { + "id": "test" + }, + "test.read_distribution.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "readduplication_all": [ + [ + { + "id": "test" + }, + "test.DupRate_plot.pdf:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + { + "id": "test" + }, + "test.DupRate_plot.r:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + { + "id": "test" + }, + "test.pos.DupRate.xls:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + { + "id": "test" + }, + "test.seq.DupRate.xls:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "readduplication_pdf": [ + [ + { + "id": "test" + }, + "test.DupRate_plot.pdf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "readduplication_pos_xls": [ + [ + { + "id": "test" + }, + "test.pos.DupRate.xls:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "readduplication_rscript": [ + [ + { + "id": "test" + }, + "test.DupRate_plot.r:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "readduplication_seq_xls": [ + [ + { + "id": "test" + }, + "test.seq.DupRate.xls:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "tin_txt": [ + [ + { + "id": "test" + }, + "test.paired_end.sorted.bam.summary.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,60dc1afce7fecb7270e998a00ee393e2", + "versions.yml:md5,9bc3caee6aeb54f23f5296b499546515", + "versions.yml:md5,a25161998ca60d5ce4e9a86abbf1bcb8", + "versions.yml:md5,c175b92f50b5be38a8808cbf7ac7452e", + "versions.yml:md5,ca7e95cf7ff7cff5d052b890729f7ead", + "versions.yml:md5,d03beea3c68934c3f3623a005c1424d2", + "versions.yml:md5,f2f3ecd549045f7595245f904f5d9414", + "versions.yml:md5,fd16f1098b9c285f3ea7bd3daf4e8f10" ] - ] + } ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.2" }, - "timestamp": "2024-02-06T15:29:37.537104" + "timestamp": "2024-07-03T12:08:17.304769" }, - "junctionannotation_all": { + "sarscov2 paired-end [bam] no modules - stub": { "content": [ - [ - [ - { - "id": "test" - }, - "test.junction_annotation.log:md5,d75e0f5d62fada8aa9449991b209554c" + { + "0": [ + + ], + "1": [ + + ], + "10": [ + + ], + "11": [ + + ], + "12": [ + + ], + "13": [ + + ], + "14": [ + + ], + "15": [ + + ], + "16": [ + + ], + "17": [ + + ], + "18": [ + + ], + "19": [ + + ], + "2": [ + + ], + "20": [ + + ], + "21": [ + + ], + "22": [ + + ], + "23": [ + + ], + "24": [ + + ], + "25": [ + + ], + "26": [ + + ], + "3": [ + + ], + "4": [ + + ], + "5": [ + + ], + "6": [ + + ], + "7": [ + + ], + "8": [ + + ], + "9": [ + + ], + "bamstat_txt": [ + + ], + "inferexperiment_txt": [ + + ], + "innerdistance_all": [ + + ], + "innerdistance_distance": [ + + ], + "innerdistance_freq": [ + + ], + "innerdistance_mean": [ + + ], + "innerdistance_pdf": [ + + ], + "innerdistance_rscript": [ + + ], + "junctionannotation_all": [ + + ], + "junctionannotation_bed": [ + + ], + "junctionannotation_events_pdf": [ + + ], + "junctionannotation_interact_bed": [ + + ], + "junctionannotation_log": [ + + ], + "junctionannotation_pdf": [ + + ], + "junctionannotation_rscript": [ + + ], + "junctionannotation_xls": [ + + ], + "junctionsaturation_all": [ + + ], + "junctionsaturation_pdf": [ + + ], + "junctionsaturation_rscript": [ + + ], + "readdistribution_txt": [ + + ], + "readduplication_all": [ + + ], + "readduplication_pdf": [ + + ], + "readduplication_pos_xls": [ + + ], + "readduplication_rscript": [ + + ], + "readduplication_seq_xls": [ + + ], + "tin_txt": [ + + ], + "versions": [ + ] - ] + } ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.2" }, - "timestamp": "2023-12-14T17:42:43.31783911" + "timestamp": "2024-07-03T12:08:24.443731" } } \ No newline at end of file diff --git a/subworkflows/nf-core/bam_sort_stats_samtools/tests/main.nf.test b/subworkflows/nf-core/bam_sort_stats_samtools/tests/main.nf.test index 2045512c8..a21782114 100644 --- a/subworkflows/nf-core/bam_sort_stats_samtools/tests/main.nf.test +++ b/subworkflows/nf-core/bam_sort_stats_samtools/tests/main.nf.test @@ -7,9 +7,6 @@ nextflow_workflow { test("test_bam_sort_stats_samtools_single_end") { when { - params { - outdir = "$outputDir" - } workflow { """ input[0] = Channel.of([ @@ -29,9 +26,11 @@ nextflow_workflow { { assert workflow.success}, { assert workflow.out.bam.get(0).get(1) ==~ ".*.bam"}, { assert workflow.out.bai.get(0).get(1) ==~ ".*.bai"}, - { assert snapshot(workflow.out.stats).match("test_bam_sort_stats_samtools_single_end_stats") }, - { assert snapshot(workflow.out.flagstat).match("test_bam_sort_stats_samtools_single_end_flagstats") }, - { assert snapshot(workflow.out.idxstats).match("test_bam_sort_stats_samtools_single_end_idxstats") } + { assert snapshot( + workflow.out.flagstat, + workflow.out.idxstats, + workflow.out.stats, + workflow.out.versions).match() } ) } } @@ -39,9 +38,6 @@ nextflow_workflow { test("test_bam_sort_stats_samtools_paired_end") { when { - params { - outdir = "$outputDir" - } workflow { """ input[0] = Channel.of([ @@ -61,9 +57,65 @@ nextflow_workflow { { assert workflow.success}, { assert workflow.out.bam.get(0).get(1) ==~ ".*.bam"}, { assert workflow.out.bai.get(0).get(1) ==~ ".*.bai"}, - { assert snapshot(workflow.out.stats).match("test_bam_sort_stats_samtools_paired_end_stats") }, - { assert snapshot(workflow.out.flagstat).match("test_bam_sort_stats_samtools_paired_end_flagstats") }, - { assert snapshot(workflow.out.idxstats).match("test_bam_sort_stats_samtools_paired_end_idxstats") } + { assert snapshot( + workflow.out.flagstat, + workflow.out.idxstats, + workflow.out.stats, + workflow.out.versions).match() } + ) + } + } + + test("test_bam_sort_stats_samtools_single_end - stub") { + + options "-stub" + + when { + workflow { + """ + input[0] = Channel.of([ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.single_end.bam', checkIfExists: true) + ]) + input[1] = Channel.of([ + [ id:'genome' ], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) + ]) + """ + } + } + + then { + assertAll( + { assert workflow.success}, + { assert snapshot(workflow.out).match() } + ) + } + } + + test("test_bam_sort_stats_samtools_paired_end - stub") { + + options "-stub" + + when { + workflow { + """ + input[0] = Channel.of([ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.bam', checkIfExists: true) + ]) + input[1] = Channel.of([ + [ id:'genome' ], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) + ]) + """ + } + } + + then { + assertAll( + { assert workflow.success}, + { assert snapshot(workflow.out).match() } ) } } diff --git a/subworkflows/nf-core/bam_sort_stats_samtools/tests/main.nf.test.snap b/subworkflows/nf-core/bam_sort_stats_samtools/tests/main.nf.test.snap index db063837f..044536f91 100644 --- a/subworkflows/nf-core/bam_sort_stats_samtools/tests/main.nf.test.snap +++ b/subworkflows/nf-core/bam_sort_stats_samtools/tests/main.nf.test.snap @@ -1,5 +1,5 @@ { - "test_bam_sort_stats_samtools_paired_end_flagstats": { + "test_bam_sort_stats_samtools_single_end": { "content": [ [ [ @@ -7,36 +7,18 @@ "id": "test", "single_end": false }, - "test.flagstat:md5,4f7ffd1e6a5e85524d443209ac97d783" + "test.flagstat:md5,2191911d72575a2358b08b1df64ccb53" ] - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" - }, - "timestamp": "2023-10-22T20:25:03.687121177" - }, - "test_bam_sort_stats_samtools_paired_end_idxstats": { - "content": [ + ], [ [ { "id": "test", "single_end": false }, - "test.idxstats:md5,df60a8c8d6621100d05178c93fb053a2" + "test.idxstats:md5,613e048487662c694aa4a2f73ca96a20" ] - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" - }, - "timestamp": "2023-10-22T20:25:03.709648916" - }, - "test_bam_sort_stats_samtools_single_end_stats": { - "content": [ + ], [ [ { @@ -45,16 +27,41 @@ }, "test.stats:md5,d32de3b3716a11039cef2367c3c1a56e" ] + ], + [ + "versions.yml:md5,494b5530a1aa29fd5867cf655bebbfe1", + "versions.yml:md5,9fcb0cd845bfb1f89d83201bb20649b4", + "versions.yml:md5,bacc323ec4055d6f69f07a09089772d1", + "versions.yml:md5,ce946e97097c6a9ccf834a3f91f6da30", + "versions.yml:md5,d6c8dae685f1b7d050165fc15c7a20b5" ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.2" }, - "timestamp": "2024-05-29T07:47:44.044172487" + "timestamp": "2024-07-03T12:20:38.911799" }, - "test_bam_sort_stats_samtools_paired_end_stats": { + "test_bam_sort_stats_samtools_paired_end": { "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test.flagstat:md5,4f7ffd1e6a5e85524d443209ac97d783" + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test.idxstats:md5,df60a8c8d6621100d05178c93fb053a2" + ] + ], [ [ { @@ -63,48 +70,285 @@ }, "test.stats:md5,cca83e4fc9406fc3875b5e60055d6574" ] + ], + [ + "versions.yml:md5,494b5530a1aa29fd5867cf655bebbfe1", + "versions.yml:md5,9fcb0cd845bfb1f89d83201bb20649b4", + "versions.yml:md5,bacc323ec4055d6f69f07a09089772d1", + "versions.yml:md5,ce946e97097c6a9ccf834a3f91f6da30", + "versions.yml:md5,d6c8dae685f1b7d050165fc15c7a20b5" ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.2" }, - "timestamp": "2024-05-29T07:47:51.426232891" + "timestamp": "2024-07-03T12:20:51.171967" }, - "test_bam_sort_stats_samtools_single_end_idxstats": { + "test_bam_sort_stats_samtools_single_end - stub": { "content": [ - [ - [ - { - "id": "test", - "single_end": false - }, - "test.idxstats:md5,613e048487662c694aa4a2f73ca96a20" + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": false + }, + "test.bam.bai:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + [ + { + "id": "test", + "single_end": false + }, + "test.bam.csi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "3": [ + [ + { + "id": "test", + "single_end": false + }, + "test.stats:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "4": [ + [ + { + "id": "test", + "single_end": false + }, + "test.flagstat:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "5": [ + [ + { + "id": "test", + "single_end": false + }, + "test.idxstats:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "6": [ + "versions.yml:md5,494b5530a1aa29fd5867cf655bebbfe1", + "versions.yml:md5,9fcb0cd845bfb1f89d83201bb20649b4", + "versions.yml:md5,bacc323ec4055d6f69f07a09089772d1", + "versions.yml:md5,ce946e97097c6a9ccf834a3f91f6da30", + "versions.yml:md5,d6c8dae685f1b7d050165fc15c7a20b5" + ], + "bai": [ + [ + { + "id": "test", + "single_end": false + }, + "test.bam.bai:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "bam": [ + [ + { + "id": "test", + "single_end": false + }, + "test.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "csi": [ + [ + { + "id": "test", + "single_end": false + }, + "test.bam.csi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "flagstat": [ + [ + { + "id": "test", + "single_end": false + }, + "test.flagstat:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "idxstats": [ + [ + { + "id": "test", + "single_end": false + }, + "test.idxstats:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "stats": [ + [ + { + "id": "test", + "single_end": false + }, + "test.stats:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,494b5530a1aa29fd5867cf655bebbfe1", + "versions.yml:md5,9fcb0cd845bfb1f89d83201bb20649b4", + "versions.yml:md5,bacc323ec4055d6f69f07a09089772d1", + "versions.yml:md5,ce946e97097c6a9ccf834a3f91f6da30", + "versions.yml:md5,d6c8dae685f1b7d050165fc15c7a20b5" ] - ] + } ], "meta": { "nf-test": "0.8.4", - "nextflow": "24.01.0" + "nextflow": "24.04.2" }, - "timestamp": "2024-01-18T17:10:02.84631" + "timestamp": "2024-07-03T12:13:52.386146" }, - "test_bam_sort_stats_samtools_single_end_flagstats": { + "test_bam_sort_stats_samtools_paired_end - stub": { "content": [ - [ - [ - { - "id": "test", - "single_end": false - }, - "test.flagstat:md5,2191911d72575a2358b08b1df64ccb53" + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": false + }, + "test.bam.bai:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + [ + { + "id": "test", + "single_end": false + }, + "test.bam.csi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "3": [ + [ + { + "id": "test", + "single_end": false + }, + "test.stats:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "4": [ + [ + { + "id": "test", + "single_end": false + }, + "test.flagstat:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "5": [ + [ + { + "id": "test", + "single_end": false + }, + "test.idxstats:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "6": [ + "versions.yml:md5,494b5530a1aa29fd5867cf655bebbfe1", + "versions.yml:md5,9fcb0cd845bfb1f89d83201bb20649b4", + "versions.yml:md5,bacc323ec4055d6f69f07a09089772d1", + "versions.yml:md5,ce946e97097c6a9ccf834a3f91f6da30", + "versions.yml:md5,d6c8dae685f1b7d050165fc15c7a20b5" + ], + "bai": [ + [ + { + "id": "test", + "single_end": false + }, + "test.bam.bai:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "bam": [ + [ + { + "id": "test", + "single_end": false + }, + "test.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "csi": [ + [ + { + "id": "test", + "single_end": false + }, + "test.bam.csi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "flagstat": [ + [ + { + "id": "test", + "single_end": false + }, + "test.flagstat:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "idxstats": [ + [ + { + "id": "test", + "single_end": false + }, + "test.idxstats:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "stats": [ + [ + { + "id": "test", + "single_end": false + }, + "test.stats:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,494b5530a1aa29fd5867cf655bebbfe1", + "versions.yml:md5,9fcb0cd845bfb1f89d83201bb20649b4", + "versions.yml:md5,bacc323ec4055d6f69f07a09089772d1", + "versions.yml:md5,ce946e97097c6a9ccf834a3f91f6da30", + "versions.yml:md5,d6c8dae685f1b7d050165fc15c7a20b5" ] - ] + } ], "meta": { "nf-test": "0.8.4", - "nextflow": "24.01.0" + "nextflow": "24.04.2" }, - "timestamp": "2024-01-18T17:10:02.829756" + "timestamp": "2024-07-03T12:14:06.231663" } } \ No newline at end of file diff --git a/subworkflows/nf-core/bam_stats_samtools/tests/main.nf.test b/subworkflows/nf-core/bam_stats_samtools/tests/main.nf.test index 1eabc2b36..4597aea27 100644 --- a/subworkflows/nf-core/bam_stats_samtools/tests/main.nf.test +++ b/subworkflows/nf-core/bam_stats_samtools/tests/main.nf.test @@ -7,9 +7,6 @@ nextflow_workflow { test("test_bam_stats_samtools_single_end") { when { - params { - outdir = "$outputDir" - } workflow { """ input[0] = Channel.of([ @@ -28,9 +25,11 @@ nextflow_workflow { then { assertAll( { assert workflow.success}, - { assert snapshot(workflow.out.stats).match("test_bam_stats_samtools_single_end_stats") }, - { assert snapshot(workflow.out.flagstat).match("test_bam_stats_samtools_single_end_flagstats") }, - { assert snapshot(workflow.out.idxstats).match("test_bam_stats_samtools_single_end_idxstats") } + { assert snapshot( + workflow.out.flagstat, + workflow.out.idxstats, + workflow.out.stats, + workflow.out.versions).match() } ) } } @@ -38,9 +37,6 @@ nextflow_workflow { test("test_bam_stats_samtools_paired_end") { when { - params { - outdir = "$outputDir" - } workflow { """ input[0] = Channel.of([ @@ -59,9 +55,11 @@ nextflow_workflow { then { assertAll( { assert workflow.success }, - { assert snapshot(workflow.out.stats).match("test_bam_stats_samtools_paired_end_stats") }, - { assert snapshot(workflow.out.flagstat).match("test_bam_stats_samtools_paired_end_flagstats") }, - { assert snapshot(workflow.out.idxstats).match("test_bam_stats_samtools_paired_end_idxstats") } + { assert snapshot( + workflow.out.flagstat, + workflow.out.idxstats, + workflow.out.stats, + workflow.out.versions).match() } ) } } @@ -69,9 +67,6 @@ nextflow_workflow { test("test_bam_stats_samtools_paired_end_cram") { when { - params { - outdir = "$outputDir" - } workflow { """ input[0] = Channel.of([ @@ -90,11 +85,96 @@ nextflow_workflow { then { assertAll( { assert workflow.success}, - { assert snapshot(workflow.out.stats).match("test_bam_stats_samtools_paired_end_cram_stats") }, - { assert snapshot(workflow.out.flagstat).match("test_bam_stats_samtools_paired_end_cram_flagstats") }, - { assert snapshot(workflow.out.idxstats).match("test_bam_stats_samtools_paired_end_cram_idxstats") } + { assert snapshot( + workflow.out.flagstat, + workflow.out.idxstats, + workflow.out.stats, + workflow.out.versions).match() } ) } } + test ("test_bam_stats_samtools_single_end - stub") { + + options "-stub" + + when { + workflow { + """ + input[0] = Channel.of([ + [ id:'test', single_end:true ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.single_end.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.single_end.sorted.bam.bai', checkIfExists: true) + ]) + input[1] = Channel.of([ + [ id:'genome' ], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) + ]) + """ + } + } + + then { + assertAll( + { assert workflow.success}, + { assert snapshot(workflow.out).match() } + ) + } + } + + test("test_bam_stats_samtools_paired_end - stub") { + + options "-stub" + + when { + workflow { + """ + input[0] = Channel.of([ + [ id:'test', single_end:true ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam.bai', checkIfExists: true) + ]) + input[1] = Channel.of([ + [ id:'genome' ], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) + ]) + """ + } + } + + then { + assertAll( + { assert workflow.success }, + { assert snapshot(workflow.out).match() } + ) + } + } + + test("test_bam_stats_samtools_paired_end_cram - stub") { + + options "-stub" + + when { + workflow { + """ + input[0] = Channel.of([ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/cram/test.paired_end.sorted.cram', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/cram/test.paired_end.sorted.cram.crai', checkIfExists: true) + ]) + input[1] = Channel.of([ + [ id:'genome' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) + ]) + """ + } + } + + then { + assertAll( + { assert workflow.success}, + { assert snapshot(workflow.out).match() } + ) + } + } } diff --git a/subworkflows/nf-core/bam_stats_samtools/tests/main.nf.test.snap b/subworkflows/nf-core/bam_stats_samtools/tests/main.nf.test.snap index c2cb4dec0..a3ddcc5ce 100644 --- a/subworkflows/nf-core/bam_stats_samtools/tests/main.nf.test.snap +++ b/subworkflows/nf-core/bam_stats_samtools/tests/main.nf.test.snap @@ -1,59 +1,230 @@ { - "test_bam_stats_samtools_paired_end_cram_flagstats": { + "test_bam_stats_samtools_paired_end - stub": { "content": [ - [ - [ - { - "id": "test", - "single_end": false - }, - "test.flagstat:md5,a53f3d26e2e9851f7d528442bbfe9781" + { + "0": [ + [ + { + "id": "test", + "single_end": true + }, + "test.stats:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": true + }, + "test.flagstat:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + [ + { + "id": "test", + "single_end": true + }, + "test.idxstats:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "3": [ + "versions.yml:md5,3c485730f712b115bcdc235e7294133b", + "versions.yml:md5,90f593a26a2d53e0f0345df7888f448e", + "versions.yml:md5,9ae003814e63a0907d52eec64d5d3ca3" + ], + "flagstat": [ + [ + { + "id": "test", + "single_end": true + }, + "test.flagstat:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "idxstats": [ + [ + { + "id": "test", + "single_end": true + }, + "test.idxstats:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "stats": [ + [ + { + "id": "test", + "single_end": true + }, + "test.stats:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,3c485730f712b115bcdc235e7294133b", + "versions.yml:md5,90f593a26a2d53e0f0345df7888f448e", + "versions.yml:md5,9ae003814e63a0907d52eec64d5d3ca3" ] - ] + } ], "meta": { "nf-test": "0.8.4", - "nextflow": "24.01.0" + "nextflow": "24.04.2" }, - "timestamp": "2023-11-06T09:31:26.194017574" + "timestamp": "2024-07-03T12:20:06.699297" }, - "test_bam_stats_samtools_paired_end_stats": { + "test_bam_stats_samtools_single_end - stub": { "content": [ - [ - [ - { - "id": "test", - "single_end": true - }, - "test.stats:md5,7afd486ad6abb9a2a3dac90c99e1d87b" + { + "0": [ + [ + { + "id": "test", + "single_end": true + }, + "test.stats:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": true + }, + "test.flagstat:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + [ + { + "id": "test", + "single_end": true + }, + "test.idxstats:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "3": [ + "versions.yml:md5,3c485730f712b115bcdc235e7294133b", + "versions.yml:md5,90f593a26a2d53e0f0345df7888f448e", + "versions.yml:md5,9ae003814e63a0907d52eec64d5d3ca3" + ], + "flagstat": [ + [ + { + "id": "test", + "single_end": true + }, + "test.flagstat:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "idxstats": [ + [ + { + "id": "test", + "single_end": true + }, + "test.idxstats:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "stats": [ + [ + { + "id": "test", + "single_end": true + }, + "test.stats:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,3c485730f712b115bcdc235e7294133b", + "versions.yml:md5,90f593a26a2d53e0f0345df7888f448e", + "versions.yml:md5,9ae003814e63a0907d52eec64d5d3ca3" ] - ] + } ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.2" }, - "timestamp": "2024-05-29T07:46:05.502831991" + "timestamp": "2024-07-03T12:19:57.708621" }, - "test_bam_stats_samtools_paired_end_flagstats": { + "test_bam_stats_samtools_paired_end_cram - stub": { "content": [ - [ - [ - { - "id": "test", - "single_end": true - }, - "test.flagstat:md5,4f7ffd1e6a5e85524d443209ac97d783" + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.stats:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": false + }, + "test.flagstat:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + [ + { + "id": "test", + "single_end": false + }, + "test.idxstats:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "3": [ + "versions.yml:md5,3c485730f712b115bcdc235e7294133b", + "versions.yml:md5,90f593a26a2d53e0f0345df7888f448e", + "versions.yml:md5,9ae003814e63a0907d52eec64d5d3ca3" + ], + "flagstat": [ + [ + { + "id": "test", + "single_end": false + }, + "test.flagstat:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "idxstats": [ + [ + { + "id": "test", + "single_end": false + }, + "test.idxstats:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "stats": [ + [ + { + "id": "test", + "single_end": false + }, + "test.stats:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,3c485730f712b115bcdc235e7294133b", + "versions.yml:md5,90f593a26a2d53e0f0345df7888f448e", + "versions.yml:md5,9ae003814e63a0907d52eec64d5d3ca3" ] - ] + } ], "meta": { "nf-test": "0.8.4", - "nextflow": "24.01.0" + "nextflow": "24.04.2" }, - "timestamp": "2024-01-18T17:17:27.717482" + "timestamp": "2024-07-03T12:20:17.051493" }, - "test_bam_stats_samtools_single_end_flagstats": { + "test_bam_stats_samtools_single_end": { "content": [ [ [ @@ -63,34 +234,16 @@ }, "test.flagstat:md5,2191911d72575a2358b08b1df64ccb53" ] - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" - }, - "timestamp": "2023-11-06T09:26:10.340046381" - }, - "test_bam_stats_samtools_paired_end_cram_idxstats": { - "content": [ + ], [ [ { "id": "test", - "single_end": false + "single_end": true }, - "test.idxstats:md5,e179601fa7b8ebce81ac3765206f6c15" + "test.idxstats:md5,613e048487662c694aa4a2f73ca96a20" ] - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" - }, - "timestamp": "2023-11-06T09:31:26.207052003" - }, - "test_bam_stats_samtools_single_end_stats": { - "content": [ + ], [ [ { @@ -99,16 +252,30 @@ }, "test.stats:md5,4a0c429c661d6aa0b60acb9309da642d" ] + ], + [ + "versions.yml:md5,3c485730f712b115bcdc235e7294133b", + "versions.yml:md5,90f593a26a2d53e0f0345df7888f448e", + "versions.yml:md5,9ae003814e63a0907d52eec64d5d3ca3" ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.2" }, - "timestamp": "2024-05-29T07:45:59.612412212" + "timestamp": "2024-07-03T12:19:25.801394" }, - "test_bam_stats_samtools_paired_end_idxstats": { + "test_bam_stats_samtools_paired_end": { "content": [ + [ + [ + { + "id": "test", + "single_end": true + }, + "test.flagstat:md5,4f7ffd1e6a5e85524d443209ac97d783" + ] + ], [ [ { @@ -117,34 +284,48 @@ }, "test.idxstats:md5,df60a8c8d6621100d05178c93fb053a2" ] - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" - }, - "timestamp": "2024-01-18T17:17:27.726719" - }, - "test_bam_stats_samtools_single_end_idxstats": { - "content": [ + ], [ [ { "id": "test", "single_end": true }, - "test.idxstats:md5,613e048487662c694aa4a2f73ca96a20" + "test.stats:md5,7afd486ad6abb9a2a3dac90c99e1d87b" ] + ], + [ + "versions.yml:md5,3c485730f712b115bcdc235e7294133b", + "versions.yml:md5,90f593a26a2d53e0f0345df7888f448e", + "versions.yml:md5,9ae003814e63a0907d52eec64d5d3ca3" ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "24.01.0" + "nextflow": "24.04.2" }, - "timestamp": "2023-11-06T09:26:10.349439801" + "timestamp": "2024-07-03T12:19:36.158768" }, - "test_bam_stats_samtools_paired_end_cram_stats": { + "test_bam_stats_samtools_paired_end_cram": { "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test.flagstat:md5,a53f3d26e2e9851f7d528442bbfe9781" + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test.idxstats:md5,e179601fa7b8ebce81ac3765206f6c15" + ] + ], [ [ { @@ -153,12 +334,17 @@ }, "test.stats:md5,16b59a1f2c99d9fe30f711adc3ebe32d" ] + ], + [ + "versions.yml:md5,3c485730f712b115bcdc235e7294133b", + "versions.yml:md5,90f593a26a2d53e0f0345df7888f448e", + "versions.yml:md5,9ae003814e63a0907d52eec64d5d3ca3" ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.2" }, - "timestamp": "2024-05-29T07:46:11.96999343" + "timestamp": "2024-07-03T12:19:46.625907" } } \ No newline at end of file diff --git a/subworkflows/nf-core/bedgraph_bedclip_bedgraphtobigwig/tests/main.nf.test b/subworkflows/nf-core/bedgraph_bedclip_bedgraphtobigwig/tests/main.nf.test index 94b66019e..17ec676ca 100644 --- a/subworkflows/nf-core/bedgraph_bedclip_bedgraphtobigwig/tests/main.nf.test +++ b/subworkflows/nf-core/bedgraph_bedclip_bedgraphtobigwig/tests/main.nf.test @@ -4,7 +4,7 @@ nextflow_workflow { script "../main.nf" workflow "BEDGRAPH_BEDCLIP_BEDGRAPHTOBIGWIG" config "./nextflow.config" - + test("sarscov2 [bedgraph] [genome_sizes]") { when { @@ -26,4 +26,28 @@ nextflow_workflow { ) } } + + test("sarscov2 [bedgraph] [genome_sizes] - stub") { + + options "-stub" + + when { + workflow { + """ + input[0] = Channel.of([ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bedgraph/test.bedgraph', checkIfExists: true) + ]) + input[1] = Channel.of(file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.sizes', checkIfExists: true)) + """ + } + } + + then { + assertAll( + { assert workflow.success }, + { assert snapshot(workflow.out).match() } + ) + } + } } diff --git a/subworkflows/nf-core/bedgraph_bedclip_bedgraphtobigwig/tests/main.nf.test.snap b/subworkflows/nf-core/bedgraph_bedclip_bedgraphtobigwig/tests/main.nf.test.snap index e67bed326..26ed39c00 100644 --- a/subworkflows/nf-core/bedgraph_bedclip_bedgraphtobigwig/tests/main.nf.test.snap +++ b/subworkflows/nf-core/bedgraph_bedclip_bedgraphtobigwig/tests/main.nf.test.snap @@ -48,6 +48,65 @@ ] } ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, "timestamp": "2023-11-26T01:55:31.016058335" + }, + "sarscov2 [bedgraph] [genome_sizes] - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.bigWig:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": false + }, + "test.clip.bedGraph:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + "versions.yml:md5,21c57fc724b374139b11f88017251733", + "versions.yml:md5,72a7b07bc0e796ff6805c57f7340337f" + ], + "bedgraph": [ + [ + { + "id": "test", + "single_end": false + }, + "test.clip.bedGraph:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "bigwig": [ + [ + { + "id": "test", + "single_end": false + }, + "test.bigWig:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,21c57fc724b374139b11f88017251733", + "versions.yml:md5,72a7b07bc0e796ff6805c57f7340337f" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-03T12:22:51.388076" } } \ No newline at end of file diff --git a/subworkflows/nf-core/fastq_align_hisat2/tests/main.nf.test b/subworkflows/nf-core/fastq_align_hisat2/tests/main.nf.test index 884d130a2..0048b3b33 100644 --- a/subworkflows/nf-core/fastq_align_hisat2/tests/main.nf.test +++ b/subworkflows/nf-core/fastq_align_hisat2/tests/main.nf.test @@ -17,6 +17,19 @@ nextflow_workflow { """ } } + + run("HISAT2_EXTRACTSPLICESITES", alias: "HISAT2_EXTRACTSPLICESITES_STUB") { + script "../../../../modules/nf-core/hisat2/extractsplicesites/main.nf" + process { + """ + input[0] = Channel.of([ + [id: 'test'], + file(params.modules_testdata_base_path + "genomics/sarscov2/genome/genome.gtf", checkIfExists: true) + ]) + """ + } + } + run("HISAT2_BUILD") { script "../../../../modules/nf-core/hisat2/build/main.nf" process { @@ -33,6 +46,23 @@ nextflow_workflow { """ } } + + run("HISAT2_BUILD", alias: "HISAT2_BUILD_STUB") { + script "../../../../modules/nf-core/hisat2/build/main.nf" + process { + """ + input[0] = Channel.of([ + [id: 'test'], + file(params.modules_testdata_base_path + "genomics/sarscov2/genome/genome.fasta", checkIfExists: true) + ]) + input[1] = Channel.of([ + [id: 'test'], + file(params.modules_testdata_base_path + "genomics/sarscov2/genome/genome.gtf", checkIfExists: true) + ]) + input[2] = HISAT2_EXTRACTSPLICESITES_STUB.out.txt + """ + } + } } test("sarscov2 - bam - single_end") { @@ -59,16 +89,17 @@ nextflow_workflow { then { assertAll( { assert workflow.success}, - { assert snapshot(file(workflow.out.bai[0][1]).name).match("se - bai")}, - { assert snapshot(file(workflow.out.bam[0][1]).name).match("se - bam")}, - { assert snapshot(file(workflow.out.orig_bam[0][1]).name).match("se - orig_bam")}, - { assert snapshot(workflow.out.csi).match("se - csi")}, - { assert snapshot(workflow.out.fastq).match("se - fastq")}, - { assert snapshot(workflow.out.flagstat).match("se - flagstat")}, - { assert snapshot(workflow.out.idxstats).match("se - idxstats")}, - { assert snapshot(workflow.out.stats).match("se - stats")}, - { assert snapshot(workflow.out.summary).match("se - summary")}, - { assert snapshot(workflow.out.versions).match("se - versions")} + { assert snapshot( + file(workflow.out.bai[0][1]).name, + file(workflow.out.bam[0][1]).name, + file(workflow.out.orig_bam[0][1]).name, + workflow.out.csi, + workflow.out.fastq, + workflow.out.flagstat, + workflow.out.idxstats, + workflow.out.stats, + workflow.out.summary, + workflow.out.versions).match()} ) } } @@ -97,16 +128,79 @@ nextflow_workflow { then { assertAll( { assert workflow.success}, - { assert snapshot(file(workflow.out.bai[0][1]).name).match("pe - bai")}, - { assert snapshot(file(workflow.out.bam[0][1]).name).match("pe - bam")}, - { assert snapshot(file(workflow.out.orig_bam[0][1]).name).match("pe - orig_bam")}, - { assert snapshot(workflow.out.csi).match("pe - csi")}, - { assert snapshot(workflow.out.fastq).match("pe - fastq")}, - { assert snapshot(workflow.out.flagstat).match("pe - flagstat")}, - { assert snapshot(workflow.out.idxstats).match("pe - idxstats")}, - { assert snapshot(workflow.out.stats).match("pe - stats")}, - { assert snapshot(workflow.out.summary).match("pe - summary")}, - { assert snapshot(workflow.out.versions).match("pe - versions")} + { assert snapshot( + file(workflow.out.bai[0][1]).name, + file(workflow.out.bam[0][1]).name, + file(workflow.out.orig_bam[0][1]).name, + workflow.out.csi, + workflow.out.fastq, + workflow.out.flagstat, + workflow.out.idxstats, + workflow.out.stats, + workflow.out.summary, + workflow.out.versions).match()} + ) + } + } + + test("sarscov2 - bam - single_end - stub") { + + options "-stub" + + when { + workflow { + """ + 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) + ] + ]) + input[1] = HISAT2_BUILD_STUB.out.index + input[2] = HISAT2_EXTRACTSPLICESITES_STUB.out.txt + input[3] = Channel.of([ + [ id:'test' ], + file(params.modules_testdata_base_path + "genomics/sarscov2/genome/genome.fasta", checkIfExists: true) + ]) + """ + } + } + + then { + assertAll( + { assert workflow.success}, + { assert snapshot(workflow.out).match()} + ) + } + } + test("sarscov2 - bam - paired_end - stub") { + + options "-stub" + + when { + workflow { + """ + input[0] = Channel.of([ + [ id:'test', single_end:false ], + [ + 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) + ] + ]) + input[1] = HISAT2_BUILD_STUB.out.index + input[2] = HISAT2_EXTRACTSPLICESITES_STUB.out.txt + input[3] = Channel.of([ + [ id:'test' ], + file(params.modules_testdata_base_path + "genomics/sarscov2/genome/genome.fasta", checkIfExists: true) + ]) + """ + } + } + + then { + assertAll( + { assert workflow.success}, + { assert snapshot(workflow.out).match()} ) } } diff --git a/subworkflows/nf-core/fastq_align_hisat2/tests/main.nf.test.snap b/subworkflows/nf-core/fastq_align_hisat2/tests/main.nf.test.snap index 6a24fc922..5d7e48bce 100644 --- a/subworkflows/nf-core/fastq_align_hisat2/tests/main.nf.test.snap +++ b/subworkflows/nf-core/fastq_align_hisat2/tests/main.nf.test.snap @@ -1,84 +1,42 @@ { - "pe - stats": { + "sarscov2 - bam - single_end": { "content": [ + "test.sorted.bam.bai", + "test.sorted.bam", + "test.bam", + [ + + ], + [ + + ], [ [ { "id": "test", - "single_end": false + "single_end": true }, - "test.stats:md5,603fa8c9e0e9eb3769498fc989a29250" + "test.flagstat:md5,6de3bfde9582ad2532033832091f5c46" ] - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" - }, - "timestamp": "2024-06-20T17:49:22.610136" - }, - "pe - csi": { - "content": [ + ], [ - - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" - }, - "timestamp": "2024-02-29T13:28:06.081055" - }, - "se - bai": { - "content": [ - "test.sorted.bam.bai" - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" - }, - "timestamp": "2024-02-29T13:27:50.763127" - }, - "pe - flagstat": { - "content": [ + [ + { + "id": "test", + "single_end": true + }, + "test.idxstats:md5,2a5df85e0d90e55bb2b359f6e05d5fbb" + ] + ], [ [ { "id": "test", - "single_end": false + "single_end": true }, - "test.flagstat:md5,2fa0d90162a1b655863796c2a6bd8f45" + "test.stats:md5,845655ccfd1fd701b9f692f8db9508af" ] - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" - }, - "timestamp": "2024-02-29T13:28:06.08653" - }, - "pe - orig_bam": { - "content": [ - "test.bam" - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" - }, - "timestamp": "2024-02-29T13:28:06.077797" - }, - "se - bam": { - "content": [ - "test.sorted.bam" - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" - }, - "timestamp": "2024-02-29T13:27:50.773767" - }, - "se - summary": { - "content": [ + ], [ [ { @@ -87,26 +45,7 @@ }, "test.hisat2.summary.log:md5,7b8a9e61b7646da1089b041333c41a87" ] - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" - }, - "timestamp": "2024-02-29T13:27:50.818659" - }, - "pe - bam": { - "content": [ - "test.sorted.bam" - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" - }, - "timestamp": "2024-02-29T13:28:06.074968" - }, - "se - versions": { - "content": [ + ], [ "versions.yml:md5,2d9432e15956fe71fe0ba811547acea6", "versions.yml:md5,5fcbed7fee2404be4ecee6efab5914b8", @@ -120,102 +59,223 @@ "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-06-20T17:49:02.049644" + "timestamp": "2024-07-03T12:36:06.813423" }, - "pe - idxstats": { + "sarscov2 - bam - single_end - stub": { "content": [ - [ - [ - { - "id": "test", - "single_end": false - }, - "test.idxstats:md5,1adb27b52d4d64b826f48b59d61dcd4d" + { + "0": [ + [ + { + "id": "test", + "single_end": true + }, + "test.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": true + }, + "test.hisat2.summary.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + + ], + "3": [ + [ + { + "id": "test", + "single_end": true + }, + "test.sorted.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "4": [ + [ + { + "id": "test", + "single_end": true + }, + "test.sorted.bam.bai:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "5": [ + [ + { + "id": "test", + "single_end": true + }, + "test.sorted.bam.csi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "6": [ + [ + { + "id": "test", + "single_end": true + }, + "test.stats:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "7": [ + [ + { + "id": "test", + "single_end": true + }, + "test.flagstat:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "8": [ + [ + { + "id": "test", + "single_end": true + }, + "test.idxstats:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "9": [ + "versions.yml:md5,2d9432e15956fe71fe0ba811547acea6", + "versions.yml:md5,5fcbed7fee2404be4ecee6efab5914b8", + "versions.yml:md5,6b9d9eed13bf074965d1623a7e8a1741", + "versions.yml:md5,7767a57d88fff540ce475902df2e9e0a", + "versions.yml:md5,b4ccce0351e5718d36600858452dd4b1", + "versions.yml:md5,bb6710ee58b84a1ed212f9c599d84066" + ], + "bai": [ + [ + { + "id": "test", + "single_end": true + }, + "test.sorted.bam.bai:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "bam": [ + [ + { + "id": "test", + "single_end": true + }, + "test.sorted.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "csi": [ + [ + { + "id": "test", + "single_end": true + }, + "test.sorted.bam.csi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "fastq": [ + + ], + "flagstat": [ + [ + { + "id": "test", + "single_end": true + }, + "test.flagstat:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "idxstats": [ + [ + { + "id": "test", + "single_end": true + }, + "test.idxstats:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "orig_bam": [ + [ + { + "id": "test", + "single_end": true + }, + "test.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "stats": [ + [ + { + "id": "test", + "single_end": true + }, + "test.stats:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "summary": [ + [ + { + "id": "test", + "single_end": true + }, + "test.hisat2.summary.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,2d9432e15956fe71fe0ba811547acea6", + "versions.yml:md5,5fcbed7fee2404be4ecee6efab5914b8", + "versions.yml:md5,6b9d9eed13bf074965d1623a7e8a1741", + "versions.yml:md5,7767a57d88fff540ce475902df2e9e0a", + "versions.yml:md5,b4ccce0351e5718d36600858452dd4b1", + "versions.yml:md5,bb6710ee58b84a1ed212f9c599d84066" ] - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" - }, - "timestamp": "2024-02-29T13:28:06.089411" - }, - "pe - bai": { - "content": [ - "test.sorted.bam.bai" + } ], "meta": { "nf-test": "0.8.4", - "nextflow": "24.01.0" + "nextflow": "24.04.2" }, - "timestamp": "2024-02-29T13:28:06.071767" + "timestamp": "2024-07-03T12:36:44.15748" }, - "pe - fastq": { + "sarscov2 - bam - paired_end": { "content": [ + "test.sorted.bam.bai", + "test.sorted.bam", + "test.bam", [ - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" - }, - "timestamp": "2024-02-29T13:28:06.083598" - }, - "se - fastq": { - "content": [ + ], [ - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" - }, - "timestamp": "2024-02-29T13:27:50.782981" - }, - "se - csi": { - "content": [ + ], [ - - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" - }, - "timestamp": "2024-02-29T13:27:50.77962" - }, - "se - idxstats": { - "content": [ + [ + { + "id": "test", + "single_end": false + }, + "test.flagstat:md5,2fa0d90162a1b655863796c2a6bd8f45" + ] + ], [ [ { "id": "test", - "single_end": true + "single_end": false }, - "test.idxstats:md5,2a5df85e0d90e55bb2b359f6e05d5fbb" + "test.idxstats:md5,1adb27b52d4d64b826f48b59d61dcd4d" ] - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" - }, - "timestamp": "2024-02-29T13:27:50.798637" - }, - "se - orig_bam": { - "content": [ - "test.bam" - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" - }, - "timestamp": "2024-02-29T13:27:50.776773" - }, - "pe - summary": { - "content": [ + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test.stats:md5,603fa8c9e0e9eb3769498fc989a29250" + ] + ], [ [ { @@ -224,16 +284,7 @@ }, "test.hisat2.summary.log:md5,9839b31db795958cc4b70711a3414e9c" ] - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" - }, - "timestamp": "2024-02-29T13:28:06.095265" - }, - "pe - versions": { - "content": [ + ], [ "versions.yml:md5,2d9432e15956fe71fe0ba811547acea6", "versions.yml:md5,5fcbed7fee2404be4ecee6efab5914b8", @@ -247,42 +298,183 @@ "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-06-20T17:49:22.664338" + "timestamp": "2024-07-03T12:36:25.071168" }, - "se - flagstat": { + "sarscov2 - bam - paired_end - stub": { "content": [ - [ - [ - { - "id": "test", - "single_end": true - }, - "test.flagstat:md5,6de3bfde9582ad2532033832091f5c46" + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": false + }, + "test.hisat2.summary.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + + ], + "3": [ + [ + { + "id": "test", + "single_end": false + }, + "test.sorted.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "4": [ + [ + { + "id": "test", + "single_end": false + }, + "test.sorted.bam.bai:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "5": [ + [ + { + "id": "test", + "single_end": false + }, + "test.sorted.bam.csi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "6": [ + [ + { + "id": "test", + "single_end": false + }, + "test.stats:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "7": [ + [ + { + "id": "test", + "single_end": false + }, + "test.flagstat:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "8": [ + [ + { + "id": "test", + "single_end": false + }, + "test.idxstats:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "9": [ + "versions.yml:md5,2d9432e15956fe71fe0ba811547acea6", + "versions.yml:md5,5fcbed7fee2404be4ecee6efab5914b8", + "versions.yml:md5,6b9d9eed13bf074965d1623a7e8a1741", + "versions.yml:md5,7767a57d88fff540ce475902df2e9e0a", + "versions.yml:md5,b4ccce0351e5718d36600858452dd4b1", + "versions.yml:md5,bb6710ee58b84a1ed212f9c599d84066" + ], + "bai": [ + [ + { + "id": "test", + "single_end": false + }, + "test.sorted.bam.bai:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "bam": [ + [ + { + "id": "test", + "single_end": false + }, + "test.sorted.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "csi": [ + [ + { + "id": "test", + "single_end": false + }, + "test.sorted.bam.csi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "fastq": [ + + ], + "flagstat": [ + [ + { + "id": "test", + "single_end": false + }, + "test.flagstat:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "idxstats": [ + [ + { + "id": "test", + "single_end": false + }, + "test.idxstats:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "orig_bam": [ + [ + { + "id": "test", + "single_end": false + }, + "test.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "stats": [ + [ + { + "id": "test", + "single_end": false + }, + "test.stats:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "summary": [ + [ + { + "id": "test", + "single_end": false + }, + "test.hisat2.summary.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,2d9432e15956fe71fe0ba811547acea6", + "versions.yml:md5,5fcbed7fee2404be4ecee6efab5914b8", + "versions.yml:md5,6b9d9eed13bf074965d1623a7e8a1741", + "versions.yml:md5,7767a57d88fff540ce475902df2e9e0a", + "versions.yml:md5,b4ccce0351e5718d36600858452dd4b1", + "versions.yml:md5,bb6710ee58b84a1ed212f9c599d84066" ] - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" - }, - "timestamp": "2024-02-29T13:27:50.786813" - }, - "se - stats": { - "content": [ - [ - [ - { - "id": "test", - "single_end": true - }, - "test.stats:md5,845655ccfd1fd701b9f692f8db9508af" - ] - ] + } ], "meta": { "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-06-20T17:49:01.982358" + "timestamp": "2024-07-03T12:36:59.553237" } } \ No newline at end of file diff --git a/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/main.nf.test b/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/main.nf.test index 7bcb4b052..eaa6706f9 100644 --- a/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/main.nf.test +++ b/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/main.nf.test @@ -43,24 +43,23 @@ nextflow_workflow { then { assertAll( { assert workflow.success }, + { assert workflow.out.fastqc_raw_html }, + { assert workflow.out.fastqc_raw_zip }, + { assert workflow.out.fastqc_trim_html }, + { assert workflow.out.fastqc_trim_zip }, + { assert workflow.out.trim_html }, + { assert workflow.out.trim_log }, { assert snapshot( + workflow.out.adapter_seq, workflow.out.reads, - workflow.out.umi_log, workflow.out.trim_json, + workflow.out.trim_read_count, workflow.out.trim_reads_fail, workflow.out.trim_reads_merged, - workflow.out.adapter_seq, - workflow.out.trim_read_count, + workflow.out.umi_log, workflow.out.versions ).match() - }, - - { assert workflow.out.fastqc_raw_html }, - { assert workflow.out.fastqc_raw_zip }, - { assert workflow.out.trim_html }, - { assert workflow.out.trim_log }, - { assert workflow.out.fastqc_trim_html }, - { assert workflow.out.fastqc_trim_zip } + } ) } } @@ -103,24 +102,23 @@ nextflow_workflow { then { assertAll( { assert workflow.success }, + { assert workflow.out.trim_html }, + { assert workflow.out.trim_log }, + { assert !workflow.out.fastqc_raw_html }, + { assert !workflow.out.fastqc_raw_zip }, + { assert !workflow.out.fastqc_trim_html }, + { assert !workflow.out.fastqc_trim_zip }, { assert snapshot( + workflow.out.adapter_seq, workflow.out.reads, - workflow.out.umi_log, workflow.out.trim_json, + workflow.out.trim_read_count, workflow.out.trim_reads_fail, workflow.out.trim_reads_merged, - workflow.out.adapter_seq, - workflow.out.trim_read_count, + workflow.out.umi_log, workflow.out.versions ).match() - }, - - { assert !workflow.out.fastqc_raw_html }, - { assert !workflow.out.fastqc_raw_zip }, - { assert workflow.out.trim_html }, - { assert workflow.out.trim_log }, - { assert !workflow.out.fastqc_trim_html }, - { assert !workflow.out.fastqc_trim_zip } + } ) } } @@ -163,23 +161,22 @@ nextflow_workflow { then { assertAll( { assert workflow.success }, + { assert workflow.out.fastqc_raw_html }, + { assert workflow.out.fastqc_raw_zip }, + { assert workflow.out.fastqc_trim_html }, + { assert workflow.out.fastqc_trim_zip }, + { assert workflow.out.trim_html }, + { assert workflow.out.trim_log }, { assert snapshot( + workflow.out.adapter_seq, workflow.out.reads, workflow.out.trim_json, + workflow.out.trim_read_count, workflow.out.trim_reads_fail, workflow.out.trim_reads_merged, - workflow.out.adapter_seq, - workflow.out.trim_read_count, workflow.out.versions ).match() - }, - - { assert workflow.out.fastqc_raw_html }, - { assert workflow.out.fastqc_raw_zip }, - { assert workflow.out.trim_html }, - { assert workflow.out.trim_log }, - { assert workflow.out.fastqc_trim_html }, - { assert workflow.out.fastqc_trim_zip } + } ) } } @@ -223,24 +220,23 @@ nextflow_workflow { then { assertAll( { assert workflow.success }, + { assert workflow.out.fastqc_raw_html }, + { assert workflow.out.fastqc_raw_zip }, + { assert workflow.out.fastqc_trim_html }, + { assert workflow.out.fastqc_trim_zip }, + { assert workflow.out.trim_html }, + { assert workflow.out.trim_log }, { assert snapshot( + workflow.out.adapter_seq, workflow.out.reads, - workflow.out.umi_log, workflow.out.trim_json, + workflow.out.trim_read_count, workflow.out.trim_reads_fail, workflow.out.trim_reads_merged, - workflow.out.adapter_seq, - workflow.out.trim_read_count, + workflow.out.umi_log, workflow.out.versions ).match() - }, - - { assert workflow.out.fastqc_raw_html }, - { assert workflow.out.fastqc_raw_zip }, - { assert workflow.out.trim_html }, - { assert workflow.out.trim_log }, - { assert workflow.out.fastqc_trim_html }, - { assert workflow.out.fastqc_trim_zip } + } ) } } @@ -283,24 +279,23 @@ nextflow_workflow { then { assertAll( { assert workflow.success }, + { assert workflow.out.fastqc_raw_html }, + { assert workflow.out.fastqc_raw_zip }, + { assert workflow.out.fastqc_trim_html }, + { assert workflow.out.fastqc_trim_zip }, + { assert workflow.out.trim_html }, + { assert workflow.out.trim_log }, { assert snapshot( + workflow.out.adapter_seq, workflow.out.reads, - workflow.out.umi_log, workflow.out.trim_json, + workflow.out.trim_read_count, workflow.out.trim_reads_fail, workflow.out.trim_reads_merged, - workflow.out.adapter_seq, - workflow.out.trim_read_count, + workflow.out.umi_log, workflow.out.versions ).match() - }, - - { assert workflow.out.fastqc_raw_html }, - { assert workflow.out.fastqc_raw_zip }, - { assert workflow.out.trim_html }, - { assert workflow.out.trim_log }, - { assert workflow.out.fastqc_trim_html }, - { assert workflow.out.fastqc_trim_zip } + } ) } } @@ -343,27 +338,26 @@ nextflow_workflow { then { assertAll( { assert workflow.success }, + { assert workflow.out.fastqc_raw_html }, + { assert workflow.out.fastqc_raw_zip }, + { assert !workflow.out.fastqc_trim_html }, + { assert !workflow.out.fastqc_trim_zip }, + { assert !workflow.out.trim_html }, + { assert !workflow.out.trim_log }, { assert snapshot( - workflow.out.reads.get(0).get(0), // Reads meta map // Because the input file is passed to the output file, we have to do check the filename only file(workflow.out.reads.get(0).get(1).get(0)).name, file(workflow.out.reads.get(0).get(1).get(1)).name, - workflow.out.umi_log, + workflow.out.adapter_seq, + workflow.out.reads.get(0).get(0), // Reads meta map workflow.out.trim_json, + workflow.out.trim_read_count, workflow.out.trim_reads_fail, workflow.out.trim_reads_merged, - workflow.out.adapter_seq, - workflow.out.trim_read_count, + workflow.out.umi_log, workflow.out.versions ).match() - }, - - { assert workflow.out.fastqc_raw_html }, - { assert workflow.out.fastqc_raw_zip }, - { assert !workflow.out.trim_html }, - { assert !workflow.out.trim_log }, - { assert !workflow.out.fastqc_trim_html }, - { assert !workflow.out.fastqc_trim_zip } + } ) } } @@ -408,24 +402,23 @@ nextflow_workflow { then { assertAll( { assert workflow.success }, + { assert workflow.out.fastqc_raw_html }, + { assert workflow.out.fastqc_raw_zip }, + { assert workflow.out.fastqc_trim_html }, + { assert workflow.out.fastqc_trim_zip }, + { assert workflow.out.trim_html }, + { assert workflow.out.trim_log }, { assert snapshot( + workflow.out.adapter_seq, workflow.out.reads, - workflow.out.umi_log, workflow.out.trim_json, + workflow.out.trim_read_count, workflow.out.trim_reads_fail, workflow.out.trim_reads_merged, - workflow.out.adapter_seq, - workflow.out.trim_read_count, + workflow.out.umi_log, workflow.out.versions ).match() - }, - - { assert workflow.out.fastqc_raw_html }, - { assert workflow.out.fastqc_raw_zip }, - { assert workflow.out.trim_html }, - { assert workflow.out.trim_log }, - { assert workflow.out.fastqc_trim_html }, - { assert workflow.out.fastqc_trim_zip } + } ) } } @@ -468,24 +461,23 @@ nextflow_workflow { then { assertAll( { assert workflow.success }, + { assert workflow.out.fastqc_raw_html }, + { assert workflow.out.fastqc_raw_zip }, + { assert workflow.out.fastqc_trim_html }, + { assert workflow.out.fastqc_trim_zip }, + { assert workflow.out.trim_html }, + { assert workflow.out.trim_log }, { assert snapshot( + workflow.out.adapter_seq, workflow.out.reads, - workflow.out.umi_log, workflow.out.trim_json, + workflow.out.trim_read_count, workflow.out.trim_reads_fail, workflow.out.trim_reads_merged, - workflow.out.adapter_seq, - workflow.out.trim_read_count, + workflow.out.umi_log, workflow.out.versions ).match() - }, - - { assert workflow.out.fastqc_raw_html }, - { assert workflow.out.fastqc_raw_zip }, - { assert workflow.out.trim_html }, - { assert workflow.out.trim_log }, - { assert workflow.out.fastqc_trim_html }, - { assert workflow.out.fastqc_trim_zip } + } ) } } @@ -529,24 +521,23 @@ nextflow_workflow { then { assertAll( { assert workflow.success }, + { assert workflow.out.fastqc_raw_html }, + { assert workflow.out.fastqc_raw_zip }, + { assert workflow.out.fastqc_trim_html }, + { assert workflow.out.fastqc_trim_zip }, + { assert workflow.out.trim_html }, + { assert workflow.out.trim_log }, { assert snapshot( + workflow.out.adapter_seq, workflow.out.reads, - workflow.out.umi_log, workflow.out.trim_json, + workflow.out.trim_read_count, workflow.out.trim_reads_fail, workflow.out.trim_reads_merged, - workflow.out.adapter_seq, - workflow.out.trim_read_count, + workflow.out.umi_log, workflow.out.versions ).match() - }, - - { assert workflow.out.fastqc_raw_html }, - { assert workflow.out.fastqc_raw_zip }, - { assert workflow.out.trim_html }, - { assert workflow.out.trim_log }, - { assert workflow.out.fastqc_trim_html }, - { assert workflow.out.fastqc_trim_zip } + } ) } } @@ -595,4 +586,368 @@ nextflow_workflow { ) } } + + test("skip_fastqc - stub") { + + options "-stub" + + when { + workflow { + """ + skip_fastqc = true + with_umi = false + skip_umi_extract = false + umi_discard_read = 1 + skip_trimming = false + adapter_fasta = [] + save_trimmed_fail = false + save_merged = false + min_trimmed_reads = 1 + + 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) + ] + ]) + input[1] = skip_fastqc + input[2] = with_umi + input[3] = skip_umi_extract + input[4] = umi_discard_read + input[5] = skip_trimming + input[6] = adapter_fasta + input[7] = save_trimmed_fail + input[8] = save_merged + input[9] = min_trimmed_reads + """ + } + } + + then { + assertAll( + { assert workflow.success }, + { assert snapshot(workflow.out).match() } + ) + } + } + + test("with_umi - stub") { + + options "-stub" + + when { + workflow { + """ + skip_fastqc = false + with_umi = true + skip_umi_extract = false + umi_discard_read = 1 + skip_trimming = false + adapter_fasta = [] + save_trimmed_fail = false + save_merged = false + min_trimmed_reads = 1 + + 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) + ] + ]) + input[1] = skip_fastqc + input[2] = with_umi + input[3] = skip_umi_extract + input[4] = umi_discard_read + input[5] = skip_trimming + input[6] = adapter_fasta + input[7] = save_trimmed_fail + input[8] = save_merged + input[9] = min_trimmed_reads + """ + } + } + + then { + assertAll( + { assert workflow.success }, + { assert snapshot(workflow.out).match() } + ) + } + } + + + test("skip_umi_extract - stub") { + + options "-stub" + + when { + workflow { + """ + skip_fastqc = false + with_umi = true + skip_umi_extract = true + umi_discard_read = 1 + skip_trimming = false + adapter_fasta = [] + save_trimmed_fail = false + save_merged = false + min_trimmed_reads = 1 + + 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) + ] + ]) + input[1] = skip_fastqc + input[2] = with_umi + input[3] = skip_umi_extract + input[4] = umi_discard_read + input[5] = skip_trimming + input[6] = adapter_fasta + input[7] = save_trimmed_fail + input[8] = save_merged + input[9] = min_trimmed_reads + """ + } + } + + then { + assertAll( + { assert workflow.success }, + { assert snapshot(workflow.out).match() } + ) + } + } + + test("umi_discard_read = 2 - stub") { + + options "-stub" + + when { + workflow { + """ + skip_fastqc = false + with_umi = true + skip_umi_extract = true + umi_discard_read = 2 + skip_trimming = false + adapter_fasta = [] + save_trimmed_fail = false + save_merged = false + min_trimmed_reads = 1 + + 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) + ] + ]) + input[1] = skip_fastqc + input[2] = with_umi + input[3] = skip_umi_extract + input[4] = umi_discard_read + input[5] = skip_trimming + input[6] = adapter_fasta + input[7] = save_trimmed_fail + input[8] = save_merged + input[9] = min_trimmed_reads + """ + } + } + + then { + assertAll( + { assert workflow.success }, + { assert snapshot(workflow.out).match() } + ) + } + } + + test("skip_trimming - stub") { + + options "-stub" + + when { + workflow { + """ + skip_fastqc = false + with_umi = false + skip_umi_extract = false + umi_discard_read = 1 + skip_trimming = true + adapter_fasta = [] + save_trimmed_fail = false + save_merged = false + min_trimmed_reads = 1 + + 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) + ] + ]) + input[1] = skip_fastqc + input[2] = with_umi + input[3] = skip_umi_extract + input[4] = umi_discard_read + input[5] = skip_trimming + input[6] = adapter_fasta + input[7] = save_trimmed_fail + input[8] = save_merged + input[9] = min_trimmed_reads + """ + } + } + + then { + assertAll( + { assert workflow.success }, + { assert snapshot(workflow.out).match() } + ) + } + } + + test("save_trimmed_fail - stub") { + + options "-stub" + + config './nextflow.save_trimmed.config' + + when { + workflow { + """ + skip_fastqc = false + with_umi = false + skip_umi_extract = false + umi_discard_read = 1 + skip_trimming = false + adapter_fasta = [] + save_trimmed_fail = true + save_merged = false + min_trimmed_reads = 1 + + 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) + ] + ]) + input[1] = skip_fastqc + input[2] = with_umi + input[3] = skip_umi_extract + input[4] = umi_discard_read + input[5] = skip_trimming + input[6] = adapter_fasta + input[7] = save_trimmed_fail + input[8] = save_merged + input[9] = min_trimmed_reads + """ + } + } + + then { + assertAll( + { assert workflow.success }, + { assert snapshot(workflow.out).match() } + ) + } + } + + test("save_merged - stub") { + + options "-stub" + + when { + workflow { + """ + skip_fastqc = false + with_umi = false + skip_umi_extract = false + umi_discard_read = 1 + skip_trimming = false + adapter_fasta = [] + save_trimmed_fail = false + save_merged = true + min_trimmed_reads = 1 + + 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) + ] + ]) + input[1] = skip_fastqc + input[2] = with_umi + input[3] = skip_umi_extract + input[4] = umi_discard_read + input[5] = skip_trimming + input[6] = adapter_fasta + input[7] = save_trimmed_fail + input[8] = save_merged + input[9] = min_trimmed_reads + """ + } + } + + then { + assertAll( + { assert workflow.success }, + { assert snapshot(workflow.out).match() } + ) + } + } + + test("min_trimmed_reads = 26 - stub") { + // Subworkflow should stop after FASTP which trims down to 25 reads + + options "-stub" + + when { + workflow { + """ + skip_fastqc = false + with_umi = false + skip_umi_extract = false + umi_discard_read = 1 + skip_trimming = false + adapter_fasta = [] + save_trimmed_fail = false + save_merged = true + min_trimmed_reads = 26 + + 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) + ] + ]) + input[1] = skip_fastqc + input[2] = with_umi + input[3] = skip_umi_extract + input[4] = umi_discard_read + input[5] = skip_trimming + input[6] = adapter_fasta + input[7] = save_trimmed_fail + input[8] = save_merged + input[9] = min_trimmed_reads + """ + } + } + + then { + assertAll( + { assert workflow.success }, + { assert snapshot(workflow.out).match() } + ) + } + } } diff --git a/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/main.nf.test.snap b/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/main.nf.test.snap index b591fab90..c151e08f4 100644 --- a/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/main.nf.test.snap +++ b/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/main.nf.test.snap @@ -1,36 +1,6 @@ { "skip_fastqc": { "content": [ - [ - [ - { - "id": "test", - "single_end": false - }, - [ - "test_1.fastp.fastq.gz:md5,67b2bbae47f073e05a97a9c2edce23c7", - "test_2.fastp.fastq.gz:md5,25cbdca08e2083dbd4f0502de6b62f39" - ] - ] - ], - [ - - ], - [ - [ - { - "id": "test", - "single_end": false - }, - "test.fastp.json:md5,1e0f8e27e71728e2b63fc64086be95cd" - ] - ], - [ - - ], - [ - - ], [ [ { @@ -40,27 +10,6 @@ "unspecified" ] ], - [ - [ - { - "id": "test", - "single_end": false - }, - 198 - ] - ], - [ - "versions.yml:md5,85bd0117e5778fff18e3920972a296ad" - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" - }, - "timestamp": "2024-06-10T15:08:06.209854813" - }, - "save_trimmed_fail": { - "content": [ [ [ { @@ -68,13 +17,10 @@ "single_end": false }, [ - "test_1.fastp.fastq.gz:md5,6ff32a64c5188b9a9192be1398c262c7", - "test_2.fastp.fastq.gz:md5,db0cb7c9977e94ac2b4b446ebd017a8a" + "test_1.fastp.fastq.gz:md5,67b2bbae47f073e05a97a9c2edce23c7", + "test_2.fastp.fastq.gz:md5,25cbdca08e2083dbd4f0502de6b62f39" ] ] - ], - [ - ], [ [ @@ -82,7 +28,7 @@ "id": "test", "single_end": false }, - "test.fastp.json:md5,4c3268ddb50ea5b33125984776aa3519" + "test.fastp.json:md5,1e0f8e27e71728e2b63fc64086be95cd" ] ], [ @@ -91,47 +37,29 @@ "id": "test", "single_end": false }, - [ - "test.paired.fail.fastq.gz:md5,409b687c734cedd7a1fec14d316e1366", - "test_1.fail.fastq.gz:md5,4f273cf3159c13f79e8ffae12f5661f6", - "test_2.fail.fastq.gz:md5,f97b9edefb5649aab661fbc9e71fc995" - ] + 198 ] ], [ ], [ - [ - { - "id": "test", - "single_end": false - }, - "unspecified" - ] + ], [ - [ - { - "id": "test", - "single_end": false - }, - 162 - ] + ], [ - "versions.yml:md5,85bd0117e5778fff18e3920972a296ad", - "versions.yml:md5,c50aa59475ab901bc6f9a2cf7b1a14e0", - "versions.yml:md5,f3dcaae948e8eed92b4a5557b4c6668e" + "versions.yml:md5,85bd0117e5778fff18e3920972a296ad" ] ], "meta": { "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-06-10T15:09:56.338504908" + "timestamp": "2024-07-03T15:57:53.714055" }, - "skip_umi_extract": { + "save_trimmed_fail": { "content": [ [ [ @@ -139,14 +67,8 @@ "id": "test", "single_end": false }, - [ - "test_1.fastp.fastq.gz:md5,67b2bbae47f073e05a97a9c2edce23c7", - "test_2.fastp.fastq.gz:md5,25cbdca08e2083dbd4f0502de6b62f39" - ] + "unspecified" ] - ], - [ - ], [ [ @@ -154,14 +76,11 @@ "id": "test", "single_end": false }, - "test.fastp.json:md5,1e0f8e27e71728e2b63fc64086be95cd" + [ + "test_1.fastp.fastq.gz:md5,6ff32a64c5188b9a9192be1398c262c7", + "test_2.fastp.fastq.gz:md5,db0cb7c9977e94ac2b4b446ebd017a8a" + ] ] - ], - [ - - ], - [ - ], [ [ @@ -169,7 +88,7 @@ "id": "test", "single_end": false }, - "unspecified" + "test.fastp.json:md5,4c3268ddb50ea5b33125984776aa3519" ] ], [ @@ -178,23 +97,9 @@ "id": "test", "single_end": false }, - 198 + 162 ] ], - [ - "versions.yml:md5,85bd0117e5778fff18e3920972a296ad", - "versions.yml:md5,c50aa59475ab901bc6f9a2cf7b1a14e0", - "versions.yml:md5,f3dcaae948e8eed92b4a5557b4c6668e" - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" - }, - "timestamp": "2024-06-10T15:08:51.174735433" - }, - "umi_discard_read = 2": { - "content": [ [ [ { @@ -202,46 +107,17 @@ "single_end": false }, [ - "test_1.fastp.fastq.gz:md5,67b2bbae47f073e05a97a9c2edce23c7", - "test_2.fastp.fastq.gz:md5,25cbdca08e2083dbd4f0502de6b62f39" + "test.paired.fail.fastq.gz:md5,409b687c734cedd7a1fec14d316e1366", + "test_1.fail.fastq.gz:md5,4f273cf3159c13f79e8ffae12f5661f6", + "test_2.fail.fastq.gz:md5,f97b9edefb5649aab661fbc9e71fc995" ] ] ], [ - ], - [ - [ - { - "id": "test", - "single_end": false - }, - "test.fastp.json:md5,1e0f8e27e71728e2b63fc64086be95cd" - ] - ], - [ - ], [ - ], - [ - [ - { - "id": "test", - "single_end": false - }, - "unspecified" - ] - ], - [ - [ - { - "id": "test", - "single_end": false - }, - 198 - ] ], [ "versions.yml:md5,85bd0117e5778fff18e3920972a296ad", @@ -253,9 +129,9 @@ "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-06-10T15:09:14.145250471" + "timestamp": "2024-07-03T15:59:13.933952" }, - "save_merged": { + "skip_umi_extract": { "content": [ [ [ @@ -263,26 +139,8 @@ "id": "test", "single_end": false }, - [ - "test_1.fastp.fastq.gz:md5,54b726a55e992a869fd3fa778afe1672", - "test_2.fastp.fastq.gz:md5,29d3b33b869f7b63417b8ff07bb128ba" - ] - ] - ], - [ - - ], - [ - [ - { - "id": "test", - "single_end": false - }, - "test.fastp.json:md5,b712fd68ed0322f4bec49ff2a5237fcc" + "unspecified" ] - ], - [ - ], [ [ @@ -290,7 +148,10 @@ "id": "test", "single_end": false }, - "test.merged.fastq.gz:md5,c873bb1ab3fa859dcc47306465e749d5" + [ + "test_1.fastp.fastq.gz:md5,67b2bbae47f073e05a97a9c2edce23c7", + "test_2.fastp.fastq.gz:md5,25cbdca08e2083dbd4f0502de6b62f39" + ] ] ], [ @@ -299,7 +160,7 @@ "id": "test", "single_end": false }, - "unspecified" + "test.fastp.json:md5,1e0f8e27e71728e2b63fc64086be95cd" ] ], [ @@ -308,37 +169,8 @@ "id": "test", "single_end": false }, - 75 + 198 ] - ], - [ - "versions.yml:md5,85bd0117e5778fff18e3920972a296ad", - "versions.yml:md5,c50aa59475ab901bc6f9a2cf7b1a14e0", - "versions.yml:md5,f3dcaae948e8eed92b4a5557b4c6668e" - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" - }, - "timestamp": "2024-06-10T15:10:16.25526763" - }, - "skip_trimming": { - "content": [ - { - "id": "test", - "single_end": false - }, - "test_1.fastq.gz", - "test_2.fastq.gz", - [ - - ], - [ - - ], - [ - ], [ @@ -350,16 +182,18 @@ ], [ + "versions.yml:md5,85bd0117e5778fff18e3920972a296ad", + "versions.yml:md5,c50aa59475ab901bc6f9a2cf7b1a14e0", "versions.yml:md5,f3dcaae948e8eed92b4a5557b4c6668e" ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.2" }, - "timestamp": "2024-03-19T15:49:26.574759" + "timestamp": "2024-07-03T15:58:30.162096" }, - "sarscov2 paired-end [fastq]": { + "umi_discard_read = 2": { "content": [ [ [ @@ -367,14 +201,8 @@ "id": "test", "single_end": false }, - [ - "test_1.fastp.fastq.gz:md5,67b2bbae47f073e05a97a9c2edce23c7", - "test_2.fastp.fastq.gz:md5,25cbdca08e2083dbd4f0502de6b62f39" - ] + "unspecified" ] - ], - [ - ], [ [ @@ -382,14 +210,11 @@ "id": "test", "single_end": false }, - "test.fastp.json:md5,1e0f8e27e71728e2b63fc64086be95cd" + [ + "test_1.fastp.fastq.gz:md5,67b2bbae47f073e05a97a9c2edce23c7", + "test_2.fastp.fastq.gz:md5,25cbdca08e2083dbd4f0502de6b62f39" + ] ] - ], - [ - - ], - [ - ], [ [ @@ -397,7 +222,7 @@ "id": "test", "single_end": false }, - "unspecified" + "test.fastp.json:md5,1e0f8e27e71728e2b63fc64086be95cd" ] ], [ @@ -408,6 +233,15 @@ }, 198 ] + ], + [ + + ], + [ + + ], + [ + ], [ "versions.yml:md5,85bd0117e5778fff18e3920972a296ad", @@ -419,134 +253,1992 @@ "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-06-10T15:07:52.031579846" + "timestamp": "2024-07-03T15:58:45.606298" }, - "min_trimmed_reads = 26": { + "umi_discard_read = 2 - stub": { "content": [ - [ - [ - { + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test_1.fastp.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "test_2.fastp.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": false + }, + "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "10": [ + [ + { + "id": "test", + "single_end": false + }, + 1 + ] + ], + "11": [ + [ + { + "id": "test", + "single_end": false + }, + "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "12": [ + [ + { + "id": "test", + "single_end": false + }, + "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "13": [ + "versions.yml:md5,85bd0117e5778fff18e3920972a296ad", + "versions.yml:md5,c50aa59475ab901bc6f9a2cf7b1a14e0", + "versions.yml:md5,f3dcaae948e8eed92b4a5557b4c6668e" + ], + "2": [ + [ + { + "id": "test", + "single_end": false + }, + "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "3": [ + + ], + "4": [ + [ + { + "id": "test", + "single_end": false + }, + "" + ] + ], + "5": [ + [ + { + "id": "test", + "single_end": false + }, + "test.fastp.json:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "6": [ + [ + { + "id": "test", + "single_end": false + }, + "test.fastp.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "7": [ + [ + { + "id": "test", + "single_end": false + }, + "test.fastp.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "8": [ + + ], + "9": [ + + ], + "adapter_seq": [ + [ + { + "id": "test", + "single_end": false + }, + "" + ] + ], + "fastqc_raw_html": [ + [ + { + "id": "test", + "single_end": false + }, + "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "fastqc_raw_zip": [ + [ + { + "id": "test", + "single_end": false + }, + "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "fastqc_trim_html": [ + [ + { + "id": "test", + "single_end": false + }, + "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "fastqc_trim_zip": [ + [ + { + "id": "test", + "single_end": false + }, + "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "reads": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test_1.fastp.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "test_2.fastp.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ] + ], + "trim_html": [ + [ + { + "id": "test", + "single_end": false + }, + "test.fastp.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "trim_json": [ + [ + { + "id": "test", + "single_end": false + }, + "test.fastp.json:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "trim_log": [ + [ + { + "id": "test", + "single_end": false + }, + "test.fastp.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "trim_read_count": [ + [ + { + "id": "test", + "single_end": false + }, + 1 + ] + ], + "trim_reads_fail": [ + + ], + "trim_reads_merged": [ + + ], + "umi_log": [ + + ], + "versions": [ + "versions.yml:md5,85bd0117e5778fff18e3920972a296ad", + "versions.yml:md5,c50aa59475ab901bc6f9a2cf7b1a14e0", + "versions.yml:md5,f3dcaae948e8eed92b4a5557b4c6668e" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-03T16:00:52.777129" + }, + "skip_trimming - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "/nf-core/test-datasets/modules/data/genomics/sarscov2/illumina/fastq/test_1.fastq.gz", + "/nf-core/test-datasets/modules/data/genomics/sarscov2/illumina/fastq/test_2.fastq.gz" + ] + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": false + }, + "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "10": [ + + ], + "11": [ + + ], + "12": [ + + ], + "13": [ + "versions.yml:md5,f3dcaae948e8eed92b4a5557b4c6668e" + ], + "2": [ + [ + { + "id": "test", + "single_end": false + }, + "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "3": [ + + ], + "4": [ + + ], + "5": [ + + ], + "6": [ + + ], + "7": [ + + ], + "8": [ + + ], + "9": [ + + ], + "adapter_seq": [ + + ], + "fastqc_raw_html": [ + [ + { + "id": "test", + "single_end": false + }, + "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "fastqc_raw_zip": [ + [ + { + "id": "test", + "single_end": false + }, + "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "fastqc_trim_html": [ + + ], + "fastqc_trim_zip": [ + + ], + "reads": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "/nf-core/test-datasets/modules/data/genomics/sarscov2/illumina/fastq/test_1.fastq.gz", + "/nf-core/test-datasets/modules/data/genomics/sarscov2/illumina/fastq/test_2.fastq.gz" + ] + ] + ], + "trim_html": [ + + ], + "trim_json": [ + + ], + "trim_log": [ + + ], + "trim_read_count": [ + + ], + "trim_reads_fail": [ + + ], + "trim_reads_merged": [ + + ], + "umi_log": [ + + ], + "versions": [ + "versions.yml:md5,f3dcaae948e8eed92b4a5557b4c6668e" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-03T16:01:03.169826" + }, + "save_merged": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "unspecified" + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test_1.fastp.fastq.gz:md5,54b726a55e992a869fd3fa778afe1672", + "test_2.fastp.fastq.gz:md5,29d3b33b869f7b63417b8ff07bb128ba" + ] + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test.fastp.json:md5,b712fd68ed0322f4bec49ff2a5237fcc" + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + 75 + ] + ], + [ + + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test.merged.fastq.gz:md5,c873bb1ab3fa859dcc47306465e749d5" + ] + ], + [ + + ], + [ + "versions.yml:md5,85bd0117e5778fff18e3920972a296ad", + "versions.yml:md5,c50aa59475ab901bc6f9a2cf7b1a14e0", + "versions.yml:md5,f3dcaae948e8eed92b4a5557b4c6668e" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-03T15:56:20.635871" + }, + "skip_trimming": { + "content": [ + "test_1.fastq.gz", + "test_2.fastq.gz", + [ + + ], + { + "id": "test", + "single_end": false + }, + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + "versions.yml:md5,f3dcaae948e8eed92b4a5557b4c6668e" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-03T15:58:56.986224" + }, + "with_umi": { + "content": [ + [ + [ + { + "id": "test", + "single_end": true + }, + "" + ] + ], + [ + [ + { + "id": "test", + "single_end": true + }, + "test.fastp.fastq.gz:md5,ba8c6c3a7ce718d9a2c5857e2edf53bc" + ] + ], + [ + [ + { + "id": "test", + "single_end": true + }, + "test.fastp.json:md5,d39c5c6d9a2e35fb60d26ced46569af6" + ] + ], + [ + [ + { + "id": "test", + "single_end": true + }, + 99 + ] + ], + [ + + ], + [ + + ], + [ + "versions.yml:md5,01f264f78de3c6d893c449cc6d3cd721", + "versions.yml:md5,85bd0117e5778fff18e3920972a296ad", + "versions.yml:md5,c50aa59475ab901bc6f9a2cf7b1a14e0", + "versions.yml:md5,f3dcaae948e8eed92b4a5557b4c6668e" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-03T15:58:15.584817" + }, + "min_trimmed_reads = 26": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "unspecified" + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test_1.fastp.fastq.gz:md5,54b726a55e992a869fd3fa778afe1672", + "test_2.fastp.fastq.gz:md5,29d3b33b869f7b63417b8ff07bb128ba" + ] + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test.fastp.json:md5,b712fd68ed0322f4bec49ff2a5237fcc" + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + 75 + ] + ], + [ + + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test.merged.fastq.gz:md5,c873bb1ab3fa859dcc47306465e749d5" + ] + ], + [ + + ], + [ + "versions.yml:md5,85bd0117e5778fff18e3920972a296ad", + "versions.yml:md5,c50aa59475ab901bc6f9a2cf7b1a14e0", + "versions.yml:md5,f3dcaae948e8eed92b4a5557b4c6668e" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-03T15:59:48.175299" + }, + "min_trimmed_reads = 26 - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test_1.fastp.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "test_2.fastp.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": false + }, + "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "10": [ + [ + { + "id": "test", + "single_end": false + }, + 26 + ] + ], + "11": [ + [ + { + "id": "test", + "single_end": false + }, + "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "12": [ + [ + { + "id": "test", + "single_end": false + }, + "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "13": [ + "versions.yml:md5,85bd0117e5778fff18e3920972a296ad", + "versions.yml:md5,c50aa59475ab901bc6f9a2cf7b1a14e0", + "versions.yml:md5,f3dcaae948e8eed92b4a5557b4c6668e" + ], + "2": [ + [ + { + "id": "test", + "single_end": false + }, + "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "3": [ + + ], + "4": [ + [ + { + "id": "test", + "single_end": false + }, + "" + ] + ], + "5": [ + [ + { + "id": "test", + "single_end": false + }, + "test.fastp.json:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "6": [ + [ + { + "id": "test", + "single_end": false + }, + "test.fastp.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "7": [ + [ + { + "id": "test", + "single_end": false + }, + "test.fastp.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "8": [ + + ], + "9": [ + [ + { + "id": "test", + "single_end": false + }, + "test.merged.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "adapter_seq": [ + [ + { + "id": "test", + "single_end": false + }, + "" + ] + ], + "fastqc_raw_html": [ + [ + { + "id": "test", + "single_end": false + }, + "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "fastqc_raw_zip": [ + [ + { + "id": "test", + "single_end": false + }, + "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "fastqc_trim_html": [ + [ + { + "id": "test", + "single_end": false + }, + "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "fastqc_trim_zip": [ + [ + { + "id": "test", + "single_end": false + }, + "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "reads": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test_1.fastp.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "test_2.fastp.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ] + ], + "trim_html": [ + [ + { + "id": "test", + "single_end": false + }, + "test.fastp.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "trim_json": [ + [ + { + "id": "test", + "single_end": false + }, + "test.fastp.json:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "trim_log": [ + [ + { + "id": "test", + "single_end": false + }, + "test.fastp.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "trim_read_count": [ + [ + { + "id": "test", + "single_end": false + }, + 26 + ] + ], + "trim_reads_fail": [ + + ], + "trim_reads_merged": [ + [ + { + "id": "test", + "single_end": false + }, + "test.merged.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "umi_log": [ + + ], + "versions": [ + "versions.yml:md5,85bd0117e5778fff18e3920972a296ad", + "versions.yml:md5,c50aa59475ab901bc6f9a2cf7b1a14e0", + "versions.yml:md5,f3dcaae948e8eed92b4a5557b4c6668e" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-03T16:01:38.786828" + }, + "with_umi - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": true + }, + "test.fastp.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": false + }, + "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "10": [ + [ + { + "id": "test", + "single_end": true + }, + 1 + ] + ], + "11": [ + [ + { + "id": "test", + "single_end": true + }, + "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "12": [ + [ + { + "id": "test", + "single_end": true + }, + "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "13": [ + "versions.yml:md5,01f264f78de3c6d893c449cc6d3cd721", + "versions.yml:md5,85bd0117e5778fff18e3920972a296ad", + "versions.yml:md5,c50aa59475ab901bc6f9a2cf7b1a14e0", + "versions.yml:md5,f3dcaae948e8eed92b4a5557b4c6668e" + ], + "2": [ + [ + { + "id": "test", + "single_end": false + }, + "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "3": [ + [ + { + "id": "test", + "single_end": false + }, + "test.umi_extract.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "4": [ + [ + { + "id": "test", + "single_end": true + }, + "" + ] + ], + "5": [ + [ + { + "id": "test", + "single_end": true + }, + "test.fastp.json:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "6": [ + [ + { + "id": "test", + "single_end": true + }, + "test.fastp.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "7": [ + [ + { + "id": "test", + "single_end": true + }, + "test.fastp.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "8": [ + + ], + "9": [ + + ], + "adapter_seq": [ + [ + { + "id": "test", + "single_end": true + }, + "" + ] + ], + "fastqc_raw_html": [ + [ + { + "id": "test", + "single_end": false + }, + "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "fastqc_raw_zip": [ + [ + { + "id": "test", + "single_end": false + }, + "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "fastqc_trim_html": [ + [ + { + "id": "test", + "single_end": true + }, + "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "fastqc_trim_zip": [ + [ + { + "id": "test", + "single_end": true + }, + "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "reads": [ + [ + { + "id": "test", + "single_end": true + }, + "test.fastp.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "trim_html": [ + [ + { + "id": "test", + "single_end": true + }, + "test.fastp.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "trim_json": [ + [ + { + "id": "test", + "single_end": true + }, + "test.fastp.json:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "trim_log": [ + [ + { + "id": "test", + "single_end": true + }, + "test.fastp.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "trim_read_count": [ + [ + { + "id": "test", + "single_end": true + }, + 1 + ] + ], + "trim_reads_fail": [ + + ], + "trim_reads_merged": [ + + ], + "umi_log": [ + [ + { + "id": "test", + "single_end": false + }, + "test.umi_extract.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,01f264f78de3c6d893c449cc6d3cd721", + "versions.yml:md5,85bd0117e5778fff18e3920972a296ad", + "versions.yml:md5,c50aa59475ab901bc6f9a2cf7b1a14e0", + "versions.yml:md5,f3dcaae948e8eed92b4a5557b4c6668e" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-03T16:00:28.205236" + }, + "skip_fastqc - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test_1.fastp.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "test_2.fastp.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ] + ], + "1": [ + + ], + "10": [ + [ + { + "id": "test", + "single_end": false + }, + 1 + ] + ], + "11": [ + + ], + "12": [ + + ], + "13": [ + "versions.yml:md5,85bd0117e5778fff18e3920972a296ad" + ], + "2": [ + + ], + "3": [ + + ], + "4": [ + [ + { + "id": "test", + "single_end": false + }, + "" + ] + ], + "5": [ + [ + { + "id": "test", + "single_end": false + }, + "test.fastp.json:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "6": [ + [ + { + "id": "test", + "single_end": false + }, + "test.fastp.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "7": [ + [ + { + "id": "test", + "single_end": false + }, + "test.fastp.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "8": [ + + ], + "9": [ + + ], + "adapter_seq": [ + [ + { + "id": "test", + "single_end": false + }, + "" + ] + ], + "fastqc_raw_html": [ + + ], + "fastqc_raw_zip": [ + + ], + "fastqc_trim_html": [ + + ], + "fastqc_trim_zip": [ + + ], + "reads": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test_1.fastp.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "test_2.fastp.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ] + ], + "trim_html": [ + [ + { + "id": "test", + "single_end": false + }, + "test.fastp.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "trim_json": [ + [ + { + "id": "test", + "single_end": false + }, + "test.fastp.json:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "trim_log": [ + [ + { + "id": "test", + "single_end": false + }, + "test.fastp.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "trim_read_count": [ + [ + { + "id": "test", + "single_end": false + }, + 1 + ] + ], + "trim_reads_fail": [ + + ], + "trim_reads_merged": [ + + ], + "umi_log": [ + + ], + "versions": [ + "versions.yml:md5,85bd0117e5778fff18e3920972a296ad" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-03T16:00:12.650202" + }, + "save_merged - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test_1.fastp.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "test_2.fastp.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": false + }, + "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "10": [ + [ + { + "id": "test", + "single_end": false + }, + 1 + ] + ], + "11": [ + [ + { + "id": "test", + "single_end": false + }, + "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "12": [ + [ + { + "id": "test", + "single_end": false + }, + "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "13": [ + "versions.yml:md5,85bd0117e5778fff18e3920972a296ad", + "versions.yml:md5,c50aa59475ab901bc6f9a2cf7b1a14e0", + "versions.yml:md5,f3dcaae948e8eed92b4a5557b4c6668e" + ], + "2": [ + [ + { + "id": "test", + "single_end": false + }, + "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "3": [ + + ], + "4": [ + [ + { + "id": "test", + "single_end": false + }, + "" + ] + ], + "5": [ + [ + { + "id": "test", + "single_end": false + }, + "test.fastp.json:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "6": [ + [ + { + "id": "test", + "single_end": false + }, + "test.fastp.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "7": [ + [ + { + "id": "test", + "single_end": false + }, + "test.fastp.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "8": [ + + ], + "9": [ + [ + { + "id": "test", + "single_end": false + }, + "test.merged.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "adapter_seq": [ + [ + { + "id": "test", + "single_end": false + }, + "" + ] + ], + "fastqc_raw_html": [ + [ + { + "id": "test", + "single_end": false + }, + "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "fastqc_raw_zip": [ + [ + { + "id": "test", + "single_end": false + }, + "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "fastqc_trim_html": [ + [ + { + "id": "test", + "single_end": false + }, + "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "fastqc_trim_zip": [ + [ + { + "id": "test", + "single_end": false + }, + "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "reads": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test_1.fastp.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "test_2.fastp.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ] + ], + "trim_html": [ + [ + { + "id": "test", + "single_end": false + }, + "test.fastp.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "trim_json": [ + [ + { + "id": "test", + "single_end": false + }, + "test.fastp.json:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "trim_log": [ + [ + { + "id": "test", + "single_end": false + }, + "test.fastp.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "trim_read_count": [ + [ + { + "id": "test", + "single_end": false + }, + 1 + ] + ], + "trim_reads_fail": [ + + ], + "trim_reads_merged": [ + [ + { + "id": "test", + "single_end": false + }, + "test.merged.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "umi_log": [ + + ], + "versions": [ + "versions.yml:md5,85bd0117e5778fff18e3920972a296ad", + "versions.yml:md5,c50aa59475ab901bc6f9a2cf7b1a14e0", + "versions.yml:md5,f3dcaae948e8eed92b4a5557b4c6668e" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-03T16:01:27.746285" + }, + "sarscov2 paired-end [fastq]": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "unspecified" + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test_1.fastp.fastq.gz:md5,67b2bbae47f073e05a97a9c2edce23c7", + "test_2.fastp.fastq.gz:md5,25cbdca08e2083dbd4f0502de6b62f39" + ] + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test.fastp.json:md5,1e0f8e27e71728e2b63fc64086be95cd" + ] + ], + [ + [ + { "id": "test", "single_end": false }, + 198 + ] + ], + [ + + ], + [ + + ], + [ + + ], + [ + "versions.yml:md5,85bd0117e5778fff18e3920972a296ad", + "versions.yml:md5,c50aa59475ab901bc6f9a2cf7b1a14e0", + "versions.yml:md5,f3dcaae948e8eed92b4a5557b4c6668e" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-03T15:57:43.06088" + }, + "sarscov2 paired-end [fastq] - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test_1.fastp.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "test_2.fastp.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": false + }, + "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "10": [ + [ + { + "id": "test", + "single_end": false + }, + 1 + ] + ], + "11": [ + [ + { + "id": "test", + "single_end": false + }, + "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "12": [ + [ + { + "id": "test", + "single_end": false + }, + "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "13": [ + "versions.yml:md5,85bd0117e5778fff18e3920972a296ad", + "versions.yml:md5,c50aa59475ab901bc6f9a2cf7b1a14e0", + "versions.yml:md5,f3dcaae948e8eed92b4a5557b4c6668e" + ], + "2": [ + [ + { + "id": "test", + "single_end": false + }, + "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "3": [ + + ], + "4": [ + [ + { + "id": "test", + "single_end": false + }, + "" + ] + ], + "5": [ + [ + { + "id": "test", + "single_end": false + }, + "test.fastp.json:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "6": [ + [ + { + "id": "test", + "single_end": false + }, + "test.fastp.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "7": [ + [ + { + "id": "test", + "single_end": false + }, + "test.fastp.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "8": [ + + ], + "9": [ + + ], + "adapter_seq": [ + [ + { + "id": "test", + "single_end": false + }, + "" + ] + ], + "fastqc_raw_html": [ + [ + { + "id": "test", + "single_end": false + }, + "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "fastqc_raw_zip": [ + [ + { + "id": "test", + "single_end": false + }, + "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "fastqc_trim_html": [ + [ + { + "id": "test", + "single_end": false + }, + "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "fastqc_trim_zip": [ + [ + { + "id": "test", + "single_end": false + }, + "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "reads": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test_1.fastp.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "test_2.fastp.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ] + ], + "trim_html": [ + [ + { + "id": "test", + "single_end": false + }, + "test.fastp.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "trim_json": [ + [ + { + "id": "test", + "single_end": false + }, + "test.fastp.json:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "trim_log": [ + [ + { + "id": "test", + "single_end": false + }, + "test.fastp.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "trim_read_count": [ + [ + { + "id": "test", + "single_end": false + }, + 1 + ] + ], + "trim_reads_fail": [ + + ], + "trim_reads_merged": [ + + ], + "umi_log": [ + + ], + "versions": [ + "versions.yml:md5,85bd0117e5778fff18e3920972a296ad", + "versions.yml:md5,c50aa59475ab901bc6f9a2cf7b1a14e0", + "versions.yml:md5,f3dcaae948e8eed92b4a5557b4c6668e" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-03T16:00:01.063973" + }, + "save_trimmed_fail - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test_1.fastp.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "test_2.fastp.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": false + }, + "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "10": [ + [ + { + "id": "test", + "single_end": false + }, + 1 + ] + ], + "11": [ + [ + { + "id": "test", + "single_end": false + }, + "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "12": [ + [ + { + "id": "test", + "single_end": false + }, + "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "13": [ + "versions.yml:md5,85bd0117e5778fff18e3920972a296ad", + "versions.yml:md5,c50aa59475ab901bc6f9a2cf7b1a14e0", + "versions.yml:md5,f3dcaae948e8eed92b4a5557b4c6668e" + ], + "2": [ + [ + { + "id": "test", + "single_end": false + }, + "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "3": [ + + ], + "4": [ [ - "test_1.fastp.fastq.gz:md5,54b726a55e992a869fd3fa778afe1672", - "test_2.fastp.fastq.gz:md5,29d3b33b869f7b63417b8ff07bb128ba" + { + "id": "test", + "single_end": false + }, + "" ] + ], + "5": [ + [ + { + "id": "test", + "single_end": false + }, + "test.fastp.json:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "6": [ + [ + { + "id": "test", + "single_end": false + }, + "test.fastp.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "7": [ + [ + { + "id": "test", + "single_end": false + }, + "test.fastp.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "8": [ + + ], + "9": [ + + ], + "adapter_seq": [ + [ + { + "id": "test", + "single_end": false + }, + "" + ] + ], + "fastqc_raw_html": [ + [ + { + "id": "test", + "single_end": false + }, + "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "fastqc_raw_zip": [ + [ + { + "id": "test", + "single_end": false + }, + "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "fastqc_trim_html": [ + [ + { + "id": "test", + "single_end": false + }, + "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "fastqc_trim_zip": [ + [ + { + "id": "test", + "single_end": false + }, + "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "reads": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test_1.fastp.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "test_2.fastp.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ] + ], + "trim_html": [ + [ + { + "id": "test", + "single_end": false + }, + "test.fastp.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "trim_json": [ + [ + { + "id": "test", + "single_end": false + }, + "test.fastp.json:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "trim_log": [ + [ + { + "id": "test", + "single_end": false + }, + "test.fastp.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "trim_read_count": [ + [ + { + "id": "test", + "single_end": false + }, + 1 + ] + ], + "trim_reads_fail": [ + + ], + "trim_reads_merged": [ + + ], + "umi_log": [ + + ], + "versions": [ + "versions.yml:md5,85bd0117e5778fff18e3920972a296ad", + "versions.yml:md5,c50aa59475ab901bc6f9a2cf7b1a14e0", + "versions.yml:md5,f3dcaae948e8eed92b4a5557b4c6668e" ] - ], - [ - - ], - [ - [ - { - "id": "test", - "single_end": false - }, - "test.fastp.json:md5,b712fd68ed0322f4bec49ff2a5237fcc" - ] - ], - [ - - ], - [ - [ - { - "id": "test", - "single_end": false - }, - "test.merged.fastq.gz:md5,c873bb1ab3fa859dcc47306465e749d5" - ] - ], - [ - [ - { - "id": "test", - "single_end": false - }, - "unspecified" - ] - ], - [ - [ - { - "id": "test", - "single_end": false - }, - 75 - ] - ], - [ - "versions.yml:md5,85bd0117e5778fff18e3920972a296ad", - "versions.yml:md5,c50aa59475ab901bc6f9a2cf7b1a14e0", - "versions.yml:md5,f3dcaae948e8eed92b4a5557b4c6668e" - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" - }, - "timestamp": "2024-06-10T15:10:34.68796644" - }, - "with_umi": { - "content": [ - [ - [ - { - "id": "test", - "single_end": true - }, - "test.fastp.fastq.gz:md5,ba8c6c3a7ce718d9a2c5857e2edf53bc" - ] - ], - [ - [ - { - "id": "test", - "single_end": true - }, - "test.fastp.json:md5,d39c5c6d9a2e35fb60d26ced46569af6" - ] - ], - [ - - ], - [ - - ], - [ - [ - { - "id": "test", - "single_end": true - }, - "" - ] - ], - [ - [ - { - "id": "test", - "single_end": true - }, - 99 - ] - ], - [ - "versions.yml:md5,01f264f78de3c6d893c449cc6d3cd721", - "versions.yml:md5,85bd0117e5778fff18e3920972a296ad", - "versions.yml:md5,c50aa59475ab901bc6f9a2cf7b1a14e0", - "versions.yml:md5,f3dcaae948e8eed92b4a5557b4c6668e" - ] + } ], "meta": { "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-06-10T15:08:32.267769943" + "timestamp": "2024-07-03T16:01:15.380539" }, - "sarscov2 paired-end [fastq] - stub": { + "skip_umi_extract - stub": { "content": [ { "0": [ @@ -769,6 +2461,6 @@ "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-06-21T14:46:58.329605" + "timestamp": "2024-07-03T16:00:39.257562" } } \ No newline at end of file diff --git a/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/tests/main.nf.test b/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/tests/main.nf.test index 6d01cbbd1..e777930ff 100644 --- a/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/tests/main.nf.test +++ b/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/tests/main.nf.test @@ -28,10 +28,11 @@ nextflow_workflow { assertAll( { assert workflow.success}, { assert path(workflow.out.fastqc_html[0][1]).text.contains("
    File typeConventional base calls
    File typeConventional base calls
    File typeConventional base calls
    File typeConventional base calls
    File typeConventional base calls
    File typeConventional base calls
    File typeConventional base calls
    File typeConventional base calls
    File typeConventional base calls
    File typeConventional base calls
    File typeConventional base calls
    File typeConventional base calls
    File typeConventional base calls
    File typeConventional base calls
    File typeConventional base calls
    File typeConventional base calls
    File typeConventional base calls
    File typeConventional base calls
    File typeConventional base calls
    File typeConventional base calls
    File typeConventional base calls