From 7deb24270bd31f16043669a00c5d380603ccad6a Mon Sep 17 00:00:00 2001
From: Annick Renevey <47788523+rannick@users.noreply.github.com>
Date: Wed, 10 Apr 2024 10:40:55 +0200
Subject: [PATCH 001/887] bump version to 4.0.0dev
---
CHANGELOG.md | 10 ++++++++++
assets/multiqc_config.yml | 4 ++--
nextflow.config | 2 +-
3 files changed, 13 insertions(+), 3 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 871c46594..18fabee33 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).
+## v4.0.0dev - [date]
+
+### Added
+
+### Changed
+
+### Fixed
+
+### Removed
+
## v3.0.2 - [2024-04-10]
### Added
diff --git a/assets/multiqc_config.yml b/assets/multiqc_config.yml
index fe0459889..963555cf6 100644
--- a/assets/multiqc_config.yml
+++ b/assets/multiqc_config.yml
@@ -1,7 +1,7 @@
report_comment: >
- This report has been generated by the nf-core/rnafusion
+ This report has been generated by the nf-core/rnafusion
analysis pipeline. For information about how to interpret these results, please see the
- documentation.
+ documentation.
report_section_order:
nf-core-rnafusion-methods-description:
diff --git a/nextflow.config b/nextflow.config
index 17375158e..22799afed 100644
--- a/nextflow.config
+++ b/nextflow.config
@@ -302,7 +302,7 @@ manifest {
description = """Nextflow rnafusion analysis pipeline, part of the nf-core community."""
mainScript = 'main.nf'
nextflowVersion = '!>=23.04.0'
- version = '3.0.2'
+ version = '4.0.0dev'
doi = ''
}
From 8f794b39585dec444eb2a0e1617ad7938e355026 Mon Sep 17 00:00:00 2001
From: Annick Renevey <47788523+rannick@users.noreply.github.com>
Date: Wed, 10 Apr 2024 12:42:45 +0200
Subject: [PATCH 002/887] get arriba from nf-core
---
conf/modules.config | 2 +-
modules.json | 46 +-
modules/nf-core/arriba/arriba/environment.yml | 7 +
modules/nf-core/arriba/arriba/main.nf | 66 +++
modules/nf-core/arriba/arriba/meta.yml | 112 ++++
.../nf-core/arriba/download/environment.yml | 7 +
.../arriba/download/main.nf | 17 +-
.../arriba/download/meta.yml | 3 +-
modules/nf-core/cat/cat/main.nf | 23 +-
modules/nf-core/cat/cat/tests/main.nf.test | 45 +-
modules/nf-core/cat/fastq/environment.yml | 2 +-
modules/nf-core/cat/fastq/main.nf | 1 -
modules/nf-core/cat/fastq/tests/main.nf.test | 63 ++-
.../nf-core/cat/fastq/tests/main.nf.test.snap | 185 +++++--
modules/nf-core/fastp/main.nf | 26 +-
modules/nf-core/fastp/tests/main.nf.test | 332 ++++++++++--
modules/nf-core/fastp/tests/main.nf.test.snap | 290 ++++++++++-
.../fastp/tests/nextflow.interleaved.config | 5 +
...low.config => nextflow.save_failed.config} | 3 +-
modules/nf-core/fastqc/main.nf | 6 +
.../gatk4/bedtointervallist/environment.yml | 2 +-
.../nf-core/gatk4/bedtointervallist/main.nf | 4 +-
.../bedtointervallist/tests/main.nf.test | 38 ++
.../bedtointervallist/tests/main.nf.test.snap | 35 ++
.../gatk4/bedtointervallist/tests/tags.yml | 2 +
.../createsequencedictionary/environment.yml | 2 +-
.../gatk4/createsequencedictionary/main.nf | 4 +-
.../gatk4/markduplicates/environment.yml | 5 +-
modules/nf-core/gatk4/markduplicates/main.nf | 4 +-
.../gatk4/markduplicates/tests/bam.config | 8 +
.../gatk4/markduplicates/tests/cram.config | 8 +
.../gatk4/markduplicates/tests/main.nf.test | 126 +++++
.../markduplicates/tests/main.nf.test.snap | 160 ++++++
.../gatk4/markduplicates/tests/tags.yml | 2 +
.../collectinsertsizemetrics/environment.yml | 2 +-
.../picard/collectinsertsizemetrics/main.nf | 4 +-
.../picard/collectinsertsizemetrics/meta.yml | 2 +-
.../picard/collectwgsmetrics/environment.yml | 2 +-
.../nf-core/picard/collectwgsmetrics/main.nf | 4 +-
.../nf-core/samtools/faidx/environment.yml | 5 +-
modules/nf-core/samtools/faidx/main.nf | 4 +-
modules/nf-core/samtools/faidx/meta.yml | 4 +
.../nf-core/samtools/faidx/tests/main.nf.test | 122 +++++
.../samtools/faidx/tests/main.nf.test.snap | 249 +++++++++
.../samtools/faidx/tests/nextflow.config | 7 +
.../samtools/faidx/tests/nextflow2.config | 6 +
modules/nf-core/samtools/faidx/tests/tags.yml | 2 +
.../nf-core/samtools/index/environment.yml | 3 +-
modules/nf-core/samtools/index/main.nf | 4 +-
.../nf-core/samtools/index/tests/main.nf.test | 36 +-
.../samtools/index/tests/main.nf.test.snap | 54 +-
modules/nf-core/samtools/sort/environment.yml | 3 +-
modules/nf-core/samtools/sort/main.nf | 32 +-
modules/nf-core/samtools/sort/meta.yml | 32 +-
.../nf-core/samtools/sort/tests/main.nf.test | 68 ++-
.../samtools/sort/tests/main.nf.test.snap | 127 ++++-
.../samtools/sort/tests/nextflow.config | 3 +-
modules/nf-core/samtools/view/environment.yml | 3 +-
modules/nf-core/samtools/view/main.nf | 17 +-
.../nf-core/samtools/view/tests/bam.config | 3 +
.../samtools/view/tests/bam_index.config | 3 +
.../nf-core/samtools/view/tests/main.nf.test | 212 ++++++++
.../samtools/view/tests/main.nf.test.snap | 488 ++++++++++++++++++
modules/nf-core/samtools/view/tests/tags.yml | 2 +
modules/nf-core/star/align/environment.yml | 3 +-
modules/nf-core/star/align/main.nf | 4 +-
modules/nf-core/star/align/tests/main.nf.test | 141 ++---
.../star/align/tests/main.nf.test.snap | 68 +--
.../star/genomegenerate/environment.yml | 3 +-
modules/nf-core/star/genomegenerate/main.nf | 87 ++--
.../star/genomegenerate/tests/main.nf.test | 89 +++-
.../genomegenerate/tests/main.nf.test.snap | 86 ++-
.../stringtie/merge/tests/main.nf.test | 48 +-
.../stringtie/merge/tests/main.nf.test.snap | 20 +-
.../stringtie/stringtie/tests/main.nf.test | 64 ++-
.../stringtie/stringtie/tests/nextflow.config | 5 +
subworkflows/local/arriba_workflow.nf | 12 +-
workflows/build_references.nf | 2 +-
78 files changed, 3244 insertions(+), 532 deletions(-)
create mode 100644 modules/nf-core/arriba/arriba/environment.yml
create mode 100644 modules/nf-core/arriba/arriba/main.nf
create mode 100644 modules/nf-core/arriba/arriba/meta.yml
create mode 100644 modules/nf-core/arriba/download/environment.yml
rename modules/{local => nf-core}/arriba/download/main.nf (65%)
rename modules/{local => nf-core}/arriba/download/meta.yml (95%)
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/gatk4/bedtointervallist/tests/main.nf.test
create mode 100644 modules/nf-core/gatk4/bedtointervallist/tests/main.nf.test.snap
create mode 100644 modules/nf-core/gatk4/bedtointervallist/tests/tags.yml
create mode 100644 modules/nf-core/gatk4/markduplicates/tests/bam.config
create mode 100644 modules/nf-core/gatk4/markduplicates/tests/cram.config
create mode 100644 modules/nf-core/gatk4/markduplicates/tests/main.nf.test
create mode 100644 modules/nf-core/gatk4/markduplicates/tests/main.nf.test.snap
create mode 100644 modules/nf-core/gatk4/markduplicates/tests/tags.yml
create mode 100644 modules/nf-core/samtools/faidx/tests/main.nf.test
create mode 100644 modules/nf-core/samtools/faidx/tests/main.nf.test.snap
create mode 100644 modules/nf-core/samtools/faidx/tests/nextflow.config
create mode 100644 modules/nf-core/samtools/faidx/tests/nextflow2.config
create mode 100644 modules/nf-core/samtools/faidx/tests/tags.yml
create mode 100644 modules/nf-core/samtools/view/tests/bam.config
create mode 100644 modules/nf-core/samtools/view/tests/bam_index.config
create mode 100644 modules/nf-core/samtools/view/tests/main.nf.test
create mode 100644 modules/nf-core/samtools/view/tests/main.nf.test.snap
create mode 100644 modules/nf-core/samtools/view/tests/tags.yml
create mode 100644 modules/nf-core/stringtie/stringtie/tests/nextflow.config
diff --git a/conf/modules.config b/conf/modules.config
index 9d4ca62b1..dfb660787 100644
--- a/conf/modules.config
+++ b/conf/modules.config
@@ -18,7 +18,7 @@ process {
saveAs: { filename -> filename.equals('versions.yml') ? null : filename }
]
- withName: 'ARRIBA' {
+ withName: 'ARRIBA_ARRIBA' {
publishDir = [
path: { "${params.outdir}/arriba" },
mode: params.publish_dir_mode,
diff --git a/modules.json b/modules.json
index 23a6ce29f..f14cf897a 100644
--- a/modules.json
+++ b/modules.json
@@ -12,42 +12,52 @@
},
"arriba": {
"branch": "master",
- "git_sha": "ea9e2892a9d12e8769402f12096219942bcf6536",
+ "git_sha": "3f5420aa22e00bd030a2556dfdffc9e164ec0ec5",
"installed_by": ["modules"]
},
- "cat/cat": {
+ "arriba/arriba": {
"branch": "master",
"git_sha": "3f5420aa22e00bd030a2556dfdffc9e164ec0ec5",
"installed_by": ["modules"]
},
- "cat/fastq": {
+ "arriba/download": {
"branch": "master",
"git_sha": "3f5420aa22e00bd030a2556dfdffc9e164ec0ec5",
"installed_by": ["modules"]
},
+ "cat/cat": {
+ "branch": "master",
+ "git_sha": "9437e6053dccf4aafa022bfd6e7e9de67e625af8",
+ "installed_by": ["modules"]
+ },
+ "cat/fastq": {
+ "branch": "master",
+ "git_sha": "0997b47c93c06b49aa7b3fefda87e728312cf2ca",
+ "installed_by": ["modules"]
+ },
"fastp": {
"branch": "master",
- "git_sha": "3f5420aa22e00bd030a2556dfdffc9e164ec0ec5",
+ "git_sha": "95cf5fe0194c7bf5cb0e3027a2eb7e7c89385080",
"installed_by": ["modules"]
},
"fastqc": {
"branch": "master",
- "git_sha": "f4ae1d942bd50c5c0b9bd2de1393ce38315ba57c",
+ "git_sha": "285a50500f9e02578d90b3ce6382ea3c30216acd",
"installed_by": ["modules"]
},
"gatk4/bedtointervallist": {
"branch": "master",
- "git_sha": "3f5420aa22e00bd030a2556dfdffc9e164ec0ec5",
+ "git_sha": "d3f215802f696f7993f25c759781d2db91232015",
"installed_by": ["modules"]
},
"gatk4/createsequencedictionary": {
"branch": "master",
- "git_sha": "3f5420aa22e00bd030a2556dfdffc9e164ec0ec5",
+ "git_sha": "d742e3143f2ccb8853c29b35cfcf50b5e5026980",
"installed_by": ["modules"]
},
"gatk4/markduplicates": {
"branch": "master",
- "git_sha": "3f5420aa22e00bd030a2556dfdffc9e164ec0ec5",
+ "git_sha": "194fca815cf594646e638fa5476acbcc296f1850",
"installed_by": ["modules"]
},
"multiqc": {
@@ -57,52 +67,52 @@
},
"picard/collectinsertsizemetrics": {
"branch": "master",
- "git_sha": "3f5420aa22e00bd030a2556dfdffc9e164ec0ec5",
+ "git_sha": "20b0918591d4ba20047d7e13e5094bcceba81447",
"installed_by": ["modules"]
},
"picard/collectwgsmetrics": {
"branch": "master",
- "git_sha": "3f5420aa22e00bd030a2556dfdffc9e164ec0ec5",
+ "git_sha": "20b0918591d4ba20047d7e13e5094bcceba81447",
"installed_by": ["modules"]
},
"samtools/faidx": {
"branch": "master",
- "git_sha": "3f5420aa22e00bd030a2556dfdffc9e164ec0ec5",
+ "git_sha": "f153f1f10e1083c49935565844cccb7453021682",
"installed_by": ["modules"]
},
"samtools/index": {
"branch": "master",
- "git_sha": "5394565c5fe4c760e5b35977ec7607c62e81d1f8",
+ "git_sha": "f4596fe0bdc096cf53ec4497e83defdb3a94ff62",
"installed_by": ["modules"]
},
"samtools/sort": {
"branch": "master",
- "git_sha": "3f5420aa22e00bd030a2556dfdffc9e164ec0ec5",
+ "git_sha": "4352dbdb09ec40db71e9b172b97a01dcf5622c26",
"installed_by": ["modules"]
},
"samtools/view": {
"branch": "master",
- "git_sha": "3f5420aa22e00bd030a2556dfdffc9e164ec0ec5",
+ "git_sha": "0bd7d2333a88483aa0476acea172e9f5f6dd83bb",
"installed_by": ["modules"]
},
"star/align": {
"branch": "master",
- "git_sha": "9f6b233518f7d9ecdcf24b798b7e491db5424273",
+ "git_sha": "a21faa6a3481af92a343a10926f59c189a2c16c9",
"installed_by": ["modules"]
},
"star/genomegenerate": {
"branch": "master",
- "git_sha": "0e98289b5bec6e3f8f588a8a9d05e8aacc1179a0",
+ "git_sha": "a21faa6a3481af92a343a10926f59c189a2c16c9",
"installed_by": ["modules"]
},
"stringtie/merge": {
"branch": "master",
- "git_sha": "b0dcb44b018d9b2bcb35b1abb7bcd34061bc5a6d",
+ "git_sha": "5756b12b1fab0c07f05b9ad2d5d5c262b1a2c1ef",
"installed_by": ["modules"]
},
"stringtie/stringtie": {
"branch": "master",
- "git_sha": "b0dcb44b018d9b2bcb35b1abb7bcd34061bc5a6d",
+ "git_sha": "b1b959609bda44341120aed1766329909f54b8d0",
"installed_by": ["modules"]
}
}
diff --git a/modules/nf-core/arriba/arriba/environment.yml b/modules/nf-core/arriba/arriba/environment.yml
new file mode 100644
index 000000000..8494c8c03
--- /dev/null
+++ b/modules/nf-core/arriba/arriba/environment.yml
@@ -0,0 +1,7 @@
+name: arriba_arriba
+channels:
+ - conda-forge
+ - bioconda
+ - defaults
+dependencies:
+ - bioconda::arriba=2.4.0
diff --git a/modules/nf-core/arriba/arriba/main.nf b/modules/nf-core/arriba/arriba/main.nf
new file mode 100644
index 000000000..a29a8d140
--- /dev/null
+++ b/modules/nf-core/arriba/arriba/main.nf
@@ -0,0 +1,66 @@
+process ARRIBA_ARRIBA {
+ 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/arriba:2.4.0--h0033a41_2' :
+ 'biocontainers/arriba:2.4.0--h0033a41_2' }"
+
+ input:
+ tuple val(meta), path(bam)
+ tuple val(meta2), path(fasta)
+ tuple val(meta3), path(gtf)
+ tuple val(meta4), path(blacklist)
+ tuple val(meta5), path(known_fusions)
+ tuple val(meta6), path(structural_variants)
+ tuple val(meta7), path(tags)
+ tuple val(meta8), path(protein_domains)
+
+ output:
+ tuple val(meta), path("*.fusions.tsv") , emit: fusions
+ tuple val(meta), path("*.fusions.discarded.tsv"), emit: fusions_fail
+ 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 blacklist = blacklist ? "-b $blacklist" : "-f blacklist"
+ def known_fusions = known_fusions ? "-k $known_fusions" : ""
+ def structural_variants = structural_variants ? "-d $structual_variants" : ""
+ def tags = tags ? "-t $tags" : ""
+ def protein_domains = protein_domains ? "-p $protein_domains" : ""
+
+ """
+ arriba \\
+ -x $bam \\
+ -a $fasta \\
+ -g $gtf \\
+ -o ${prefix}.fusions.tsv \\
+ -O ${prefix}.fusions.discarded.tsv \\
+ $blacklist \\
+ $known_fusions \\
+ $structural_variants \\
+ $tags \\
+ $protein_domains \\
+ $args
+
+ cat <<-END_VERSIONS > versions.yml
+ "${task.process}":
+ arriba: \$(arriba -h | grep 'Version:' 2>&1 | sed 's/Version:\s//')
+ END_VERSIONS
+ """
+
+ stub:
+ def prefix = task.ext.prefix ?: "${meta.id}"
+ """
+ echo stub > ${prefix}.fusions.tsv
+ echo stub > ${prefix}.fusions.discarded.tsv
+
+ echo "${task.process}:" > versions.yml
+ echo ' arriba: 2.2.1' >> versions.yml
+ """
+}
diff --git a/modules/nf-core/arriba/arriba/meta.yml b/modules/nf-core/arriba/arriba/meta.yml
new file mode 100644
index 000000000..11f744b54
--- /dev/null
+++ b/modules/nf-core/arriba/arriba/meta.yml
@@ -0,0 +1,112 @@
+name: arriba_arriba
+description: Arriba is a command-line tool for the detection of gene fusions from RNA-Seq data.
+keywords:
+ - fusion
+ - arriba
+ - detection
+ - RNA-Seq
+tools:
+ - arriba:
+ description: Fast and accurate gene fusion detection from RNA-Seq data
+ homepage: https://github.com/suhrig/arriba
+ documentation: https://arriba.readthedocs.io/en/latest/
+ tool_dev_url: https://github.com/suhrig/arriba
+ doi: "10.1101/gr.257246.119"
+ licence: ["MIT"]
+input:
+ - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ - bam:
+ type: file
+ description: BAM/CRAM/SAM file
+ pattern: "*.{bam,cram,sam}"
+ - meta2:
+ type: map
+ description: |
+ Groovy Map containing reference information
+ e.g. [ id:'test' ]
+ - fasta:
+ type: file
+ description: Assembly FASTA file
+ pattern: "*.{fasta}"
+ - meta3:
+ type: map
+ description: |
+ Groovy Map containing reference information
+ e.g. [ id:'test' ]
+ - gtf:
+ type: file
+ description: Annotation GTF file
+ pattern: "*.{gtf}"
+ - meta4:
+ type: map
+ description: |
+ Groovy Map containing reference information
+ e.g. [ id:'test' ]
+ - blacklist:
+ type: file
+ description: Blacklist file
+ pattern: "*.{tsv}"
+ - meta5:
+ type: map
+ description: |
+ Groovy Map containing reference information
+ e.g. [ id:'test' ]
+ - known_fusions:
+ type: file
+ description: Known fusions file
+ pattern: "*.{tsv}"
+ - meta6:
+ type: map
+ description: |
+ Groovy Map containing reference information
+ e.g. [ id:'test' ]
+ - structural_variants:
+ type: file
+ description: Structural variants file
+ pattern: "*.{tsv}"
+ - meta7:
+ type: map
+ description: |
+ Groovy Map containing reference information
+ e.g. [ id:'test' ]
+ - tags:
+ type: file
+ description: Tags file
+ pattern: "*.{tsv}"
+ - meta8:
+ type: map
+ description: |
+ Groovy Map containing reference information
+ e.g. [ id:'test' ]
+ - protein_domains:
+ type: file
+ description: Protein domains file
+ pattern: "*.{gff3}"
+output:
+ - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ - versions:
+ type: file
+ description: File containing software versions
+ pattern: "versions.yml"
+ - fusions:
+ type: file
+ description: File contains fusions which pass all of Arriba's filters.
+ pattern: "*.{fusions.tsv}"
+ - fusions_fail:
+ type: file
+ description: File contains fusions that Arriba classified as an artifact or that are also observed in healthy tissue.
+ pattern: "*.{fusions.discarded.tsv}"
+authors:
+ - "@praveenraj2018"
+ - "@rannick"
+maintainers:
+ - "@praveenraj2018"
+ - "@rannick"
diff --git a/modules/nf-core/arriba/download/environment.yml b/modules/nf-core/arriba/download/environment.yml
new file mode 100644
index 000000000..dc7d3bf99
--- /dev/null
+++ b/modules/nf-core/arriba/download/environment.yml
@@ -0,0 +1,7 @@
+name: arriba_download
+channels:
+ - conda-forge
+ - bioconda
+ - defaults
+dependencies:
+ - bioconda::arriba=2.4.0
diff --git a/modules/local/arriba/download/main.nf b/modules/nf-core/arriba/download/main.nf
similarity index 65%
rename from modules/local/arriba/download/main.nf
rename to modules/nf-core/arriba/download/main.nf
index 860439ade..7f11898bd 100644
--- a/modules/local/arriba/download/main.nf
+++ b/modules/nf-core/arriba/download/main.nf
@@ -1,15 +1,18 @@
process ARRIBA_DOWNLOAD {
tag "arriba"
- label 'process_low'
+ label 'process_single'
- conda "bioconda::gnu-wget=1.18"
+ conda "${moduleDir}/environment.yml"
container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ?
- 'https://depot.galaxyproject.org/singularity/gnu-wget:1.18--h5bf99c6_5' :
- 'quay.io/biocontainers/gnu-wget:1.18--h5bf99c6_5' }"
+ 'https://depot.galaxyproject.org/singularity/arriba:2.4.0--h0033a41_2' :
+ 'biocontainers/arriba:2.4.0--h0033a41_2' }"
output:
- path "versions.yml" , emit: versions
path "*" , emit: reference
+ path "versions.yml" , emit: versions
+
+ when:
+ task.ext.when == null || task.ext.when
script:
"""
@@ -21,7 +24,7 @@ process ARRIBA_DOWNLOAD {
cat <<-END_VERSIONS > versions.yml
"${task.process}":
- wget: \$(echo wget -V 2>&1 | grep "GNU Wget" | cut -d" " -f3 > versions.yml)
+ arriba_download: \$(arriba -h | grep 'Version:' 2>&1 | sed 's/Version:\s//')
END_VERSIONS
"""
@@ -35,7 +38,7 @@ process ARRIBA_DOWNLOAD {
cat <<-END_VERSIONS > versions.yml
"${task.process}":
- wget: \$(echo wget -V 2>&1 | grep "GNU Wget" | cut -d" " -f3 > versions.yml)
+ arriba_download: \$(arriba -h | grep 'Version:' 2>&1 | sed 's/Version:\s//')
END_VERSIONS
"""
}
diff --git a/modules/local/arriba/download/meta.yml b/modules/nf-core/arriba/download/meta.yml
similarity index 95%
rename from modules/local/arriba/download/meta.yml
rename to modules/nf-core/arriba/download/meta.yml
index 55e50b115..d32106163 100644
--- a/modules/local/arriba/download/meta.yml
+++ b/modules/nf-core/arriba/download/meta.yml
@@ -3,6 +3,7 @@ description: Arriba is a command-line tool for the detection of gene fusions fro
keywords:
- fusion
- arriba
+ - reference
tools:
- arriba:
description: Fast and accurate gene fusion detection from RNA-Seq data
@@ -23,4 +24,4 @@ output:
pattern: "*"
authors:
- - "@praveenraj2018, @rannick"
+ - "@peterpru"
diff --git a/modules/nf-core/cat/cat/main.nf b/modules/nf-core/cat/cat/main.nf
index 4264a92cc..adbdbd7ba 100644
--- a/modules/nf-core/cat/cat/main.nf
+++ b/modules/nf-core/cat/cat/main.nf
@@ -22,6 +22,8 @@ process CAT_CAT {
def args2 = task.ext.args2 ?: ''
def file_list = files_in.collect { it.toString() }
+ // choose appropriate concatenation tool depending on input and output format
+
// | input | output | command1 | command2 |
// |-----------|------------|----------|----------|
// | gzipped | gzipped | cat | |
@@ -30,11 +32,15 @@ process CAT_CAT {
// | ungzipped | gzipped | cat | pigz |
// Use input file ending as default
- prefix = task.ext.prefix ?: "${meta.id}${file_list[0].substring(file_list[0].lastIndexOf('.'))}"
+ prefix = task.ext.prefix ?: "${meta.id}${getFileSuffix(file_list[0])}"
out_zip = prefix.endsWith('.gz')
in_zip = file_list[0].endsWith('.gz')
command1 = (in_zip && !out_zip) ? 'zcat' : 'cat'
command2 = (!in_zip && out_zip) ? "| pigz -c -p $task.cpus $args2" : ''
+ if(file_list.contains(prefix.trim())) {
+ error "The name of the input file can't be the same as for the output prefix in the " +
+ "module CAT_CAT (currently `$prefix`). Please choose a different one."
+ }
"""
$command1 \\
$args \\
@@ -49,8 +55,12 @@ process CAT_CAT {
"""
stub:
- def file_list = files_in.collect { it.toString() }
- prefix = task.ext.prefix ?: "${meta.id}${file_list[0].substring(file_list[0].lastIndexOf('.'))}"
+ def file_list = files_in.collect { it.toString() }
+ prefix = task.ext.prefix ?: "${meta.id}${file_list[0].substring(file_list[0].lastIndexOf('.'))}"
+ if(file_list.contains(prefix.trim())) {
+ error "The name of the input file can't be the same as for the output prefix in the " +
+ "module CAT_CAT (currently `$prefix`). Please choose a different one."
+ }
"""
touch $prefix
@@ -60,3 +70,10 @@ process CAT_CAT {
END_VERSIONS
"""
}
+
+// for .gz files also include the second to last extension if it is present. E.g., .fasta.gz
+def getFileSuffix(filename) {
+ def match = filename =~ /^.*?((\.\w{1,5})?(\.\w{1,5}\.gz$))/
+ return match ? match[0][1] : filename.substring(filename.lastIndexOf('.'))
+}
+
diff --git a/modules/nf-core/cat/cat/tests/main.nf.test b/modules/nf-core/cat/cat/tests/main.nf.test
index 5766daafb..fcee2d19f 100644
--- a/modules/nf-core/cat/cat/tests/main.nf.test
+++ b/modules/nf-core/cat/cat/tests/main.nf.test
@@ -8,6 +8,32 @@ nextflow_process {
tag "cat"
tag "cat/cat"
+ test("test_cat_name_conflict") {
+ when {
+ params {
+ outdir = "${outputDir}"
+ }
+ process {
+ """
+ input[0] =
+ [
+ [ id:'genome', single_end:true ],
+ [
+ file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true),
+ file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.sizes', checkIfExists: true)
+ ]
+ ]
+ """
+ }
+ }
+ then {
+ assertAll(
+ { assert !process.success },
+ { assert process.stdout.toString().contains("The name of the input file can't be the same as for the output prefix") }
+ )
+ }
+ }
+
test("test_cat_unzipped_unzipped") {
when {
params {
@@ -19,8 +45,8 @@ nextflow_process {
[
[ id:'test', single_end:true ],
[
- file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true),
- file(params.test_data['sarscov2']['genome']['genome_sizes'], checkIfExists: true)
+ file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true),
+ file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.sizes', checkIfExists: true)
]
]
"""
@@ -46,8 +72,8 @@ nextflow_process {
[
[ id:'test', single_end:true ],
[
- file(params.test_data['sarscov2']['genome']['genome_gff3_gz'], checkIfExists: true),
- file(params.test_data['sarscov2']['genome']['contigs_genome_maf_gz'], checkIfExists: true)
+ file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.gff3.gz', checkIfExists: true),
+ file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/alignment/last/contigs.genome.maf.gz', checkIfExists: true)
]
]
"""
@@ -76,8 +102,8 @@ nextflow_process {
[
[ id:'test', single_end:true ],
[
- file(params.test_data['sarscov2']['genome']['genome_gff3_gz'], checkIfExists: true),
- file(params.test_data['sarscov2']['genome']['contigs_genome_maf_gz'], checkIfExists: true)
+ file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.gff3.gz', checkIfExists: true),
+ file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/alignment/last/contigs.genome.maf.gz', checkIfExists: true)
]
]
"""
@@ -105,8 +131,8 @@ nextflow_process {
[
[ id:'test', single_end:true ],
[
- file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true),
- file(params.test_data['sarscov2']['genome']['genome_sizes'], checkIfExists: true)
+ file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true),
+ file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.sizes', checkIfExists: true)
]
]
"""
@@ -134,7 +160,7 @@ nextflow_process {
[
[ id:'test', single_end:true ],
[
- file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true)
+ file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true)
]
]
"""
@@ -150,4 +176,3 @@ nextflow_process {
}
}
}
-
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/tests/main.nf.test b/modules/nf-core/cat/fastq/tests/main.nf.test
index f5f941825..dab2e14c0 100644
--- a/modules/nf-core/cat/fastq/tests/main.nf.test
+++ b/modules/nf-core/cat/fastq/tests/main.nf.test
@@ -16,11 +16,11 @@ 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.test_data['sarscov2']['illumina']['test2_1_fastq_gz'], checkIfExists: true) ]
- ]
+ 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)]
+ ])
"""
}
}
@@ -28,8 +28,7 @@ nextflow_process {
then {
assertAll(
{ assert process.success },
- { assert snapshot(process.out.reads).match() },
- { assert path(process.out.versions.get(0)).getText().contains("cat") }
+ { assert snapshot(process.out).match() }
)
}
}
@@ -42,13 +41,13 @@ nextflow_process {
}
process {
"""
- input[0] = [
+ 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)]
+ ])
"""
}
}
@@ -56,8 +55,7 @@ nextflow_process {
then {
assertAll(
{ assert process.success },
- { assert snapshot(process.out.reads).match() },
- { assert path(process.out.versions.get(0)).getText().contains("cat") }
+ { assert snapshot(process.out).match() }
)
}
}
@@ -70,11 +68,11 @@ nextflow_process {
}
process {
"""
- input[0] = [
+ input[0] = Channel.of([
[ id:'test', single_end:true ], // meta map
- [ file(params.test_data['sarscov2']['illumina']['test_1_fastq_gz'], checkIfExists: 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),
+ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true)]
+ ])
"""
}
}
@@ -82,8 +80,7 @@ nextflow_process {
then {
assertAll(
{ assert process.success },
- { assert snapshot(process.out.reads).match() },
- { assert path(process.out.versions.get(0)).getText().contains("cat") }
+ { assert snapshot(process.out).match() }
)
}
}
@@ -96,13 +93,13 @@ nextflow_process {
}
process {
"""
- input[0] = [
+ 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']['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),
+ 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)]
+ ])
"""
}
}
@@ -110,8 +107,7 @@ nextflow_process {
then {
assertAll(
{ assert process.success },
- { assert snapshot(process.out.reads).match() },
- { assert path(process.out.versions.get(0)).getText().contains("cat") }
+ { assert snapshot(process.out).match() }
)
}
}
@@ -124,10 +120,10 @@ nextflow_process {
}
process {
"""
- input[0] = [
+ input[0] = Channel.of([
[ 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)]
+ ])
"""
}
}
@@ -135,8 +131,7 @@ nextflow_process {
then {
assertAll(
{ assert process.success },
- { assert snapshot(process.out.reads).match() },
- { assert path(process.out.versions.get(0)).getText().contains("cat") }
+ { 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
index ec2342e54..43dfe28fc 100644
--- a/modules/nf-core/cat/fastq/tests/main.nf.test.snap
+++ b/modules/nf-core/cat/fastq/tests/main.nf.test.snap
@@ -1,78 +1,169 @@
{
"test_cat_fastq_single_end": {
"content": [
- [
- [
- {
- "id": "test",
- "single_end": true
- },
- "test.merged.fastq.gz:md5,f9cf5e375f7de81a406144a2c70cc64d"
+ {
+ "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": "2023-10-17T23:19:12.990284837"
+ "timestamp": "2024-01-17T17:30:39.816981"
},
"test_cat_fastq_single_end_same_name": {
"content": [
- [
- [
- {
- "id": "test",
- "single_end": true
- },
- "test.merged.fastq.gz:md5,63f817db7a29a03eb538104495556f66"
+ {
+ "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": "2023-10-17T23:19:31.554568147"
+ "timestamp": "2024-01-17T17:32:35.229332"
},
"test_cat_fastq_single_end_single_file": {
"content": [
- [
- [
- {
- "id": "test",
- "single_end": true
- },
- "test.merged.fastq.gz:md5,e325ef7deb4023447a1f074e285761af"
+ {
+ "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": "2023-10-17T23:19:49.629360033"
+ "timestamp": "2024-01-17T17:34:00.058829"
},
"test_cat_fastq_paired_end_same_name": {
"content": [
- [
- [
- {
- "id": "test",
- "single_end": false
- },
+ {
+ "0": [
[
- "test_1.merged.fastq.gz:md5,63f817db7a29a03eb538104495556f66",
- "test_2.merged.fastq.gz:md5,fe9f266f43a6fc3dcab690a18419a56e"
+ {
+ "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": "2023-10-17T23:19:40.711617539"
+ "timestamp": "2024-01-17T17:33:33.031555"
},
"test_cat_fastq_paired_end": {
"content": [
- [
- [
- {
- "id": "test",
- "single_end": false
- },
+ {
+ "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": [
[
- "test_1.merged.fastq.gz:md5,f9cf5e375f7de81a406144a2c70cc64d",
- "test_2.merged.fastq.gz:md5,77c8e966e130d8c6b6ec9be52fcb2bda"
+ {
+ "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": "2023-10-18T07:53:20.923560211"
+ "timestamp": "2024-01-17T17:32:02.270935"
}
}
\ No newline at end of file
diff --git a/modules/nf-core/fastp/main.nf b/modules/nf-core/fastp/main.nf
index c8e815aea..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') ) {
@@ -45,7 +45,7 @@ process FASTP {
$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 @@ process FASTP {
$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 @@ process FASTP {
--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}":
@@ -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/tests/main.nf.test b/modules/nf-core/fastp/tests/main.nf.test
index f610b735e..6f1f48978 100644
--- a/modules/nf-core/fastp/tests/main.nf.test
+++ b/modules/nf-core/fastp/tests/main.nf.test
@@ -19,11 +19,10 @@ nextflow_process {
save_trimmed_fail = false
save_merged = false
- 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) ]
+ ])
input[1] = adapter_fasta
input[2] = save_trimmed_fail
input[3] = save_merged
@@ -57,7 +56,67 @@ nextflow_process {
{ assert path(process.out.log.get(0).get(1)).getText().contains(log_part) }
}
},
- { assert snapshot(process.out.versions).match("versions") }
+ {
+ 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") }
)
}
}
@@ -74,12 +133,11 @@ nextflow_process {
save_trimmed_fail = false
save_merged = false
- input[0] = [
+ 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] = adapter_fasta
input[2] = save_trimmed_fail
input[3] = save_merged
@@ -127,13 +185,28 @@ nextflow_process {
{ assert path(process.out.log.get(0).get(1)).getText().contains(log_part) }
}
},
- { assert snapshot(process.out.versions).match("versions") }
+ {
+ 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("fastp test_fastp_interleaved") {
- config './nextflow.config'
+ test("test_fastp_paired_end-stub") {
+
+ options '-stub'
+
when {
params {
outdir = "$outputDir"
@@ -144,10 +217,56 @@ nextflow_process {
save_trimmed_fail = false
save_merged = false
- input[0] = [ [ id:'test', single_end:true ], // meta map
- [ file(params.test_data['sarscov2']['illumina']['test_interleaved_fastq_gz'], checkIfExists: 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-for_stub_match")
+ },
+ { assert snapshot(process.out.versions).match("versions_paired_end-stub") }
+ )
+ }
+ }
+
+ test("fastp test_fastp_interleaved") {
+
+ 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
@@ -159,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 ->
@@ -321,7 +500,7 @@ nextflow_process {
{ assert path(process.out.log.get(0).get(1)).getText().contains(log_part) }
}
},
- { assert snapshot(process.out.versions).match("versions") }
+ { assert snapshot(process.out.versions).match("versions_paired_end_trim_fail") }
)
}
}
@@ -337,11 +516,11 @@ nextflow_process {
adapter_fasta = []
save_trimmed_fail = false
save_merged = true
-
- 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[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
@@ -399,7 +578,67 @@ nextflow_process {
{ assert path(process.out.log.get(0).get(1)).getText().contains(log_part) }
}
},
- { assert snapshot(process.out.versions).match("versions") }
+ {
+ 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") }
)
}
}
@@ -412,14 +651,15 @@ nextflow_process {
}
process {
"""
- adapter_fasta = file("https://github.com/nf-core/test-datasets/raw/modules/data/delete_me/fastp/adapters.fasta", checkIfExists: true)
+ 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] = [ [ 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[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
@@ -478,7 +718,7 @@ nextflow_process {
{ assert path(process.out.log.get(0).get(1)).getText().contains(log_part) }
}
},
- { assert snapshot(process.out.versions).match("versions") }
+ { 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
index 0fa68c7d7..3e8762889 100644
--- a/modules/nf-core/fastp/tests/main.nf.test.snap
+++ b/modules/nf-core/fastp/tests/main.nf.test.snap
@@ -7,11 +7,47 @@
"id": "test",
"single_end": true
},
- "test.fastp.json:md5,168f516f7bd4b7b6c32da7cba87299a4"
+ "test.fastp.json:md5,b24e0624df5cc0b11cd5ba21b726fb22"
]
]
],
- "timestamp": "2023-10-17T11:04:45.794175881"
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "23.10.1"
+ },
+ "timestamp": "2024-03-18T16:19:15.063001"
+ },
+ "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": [
@@ -25,15 +61,253 @@
]
]
],
- "timestamp": "2023-10-17T11:04:10.566343705"
+ "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"
+ },
+ "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-03-18T16:19:15.111894"
+ },
+ "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-03-18T16:18:43.580336"
+ },
+ "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": {
+ "versions_paired_end_merged": {
"content": [
[
"versions.yml:md5,48ffc994212fb1fc9f83a74fa69c9f02"
]
],
- "timestamp": "2023-10-17T11:04:10.582076024"
+ "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": [
@@ -47,6 +321,10 @@
]
]
],
- "timestamp": "2023-10-17T11:05:00.379878948"
+ "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.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/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/modules/nf-core/gatk4/bedtointervallist/environment.yml b/modules/nf-core/gatk4/bedtointervallist/environment.yml
index e7cb4280e..d6fbe2e77 100644
--- a/modules/nf-core/gatk4/bedtointervallist/environment.yml
+++ b/modules/nf-core/gatk4/bedtointervallist/environment.yml
@@ -4,4 +4,4 @@ channels:
- bioconda
- defaults
dependencies:
- - bioconda::gatk4=4.4.0.0
+ - bioconda::gatk4=4.5.0.0
diff --git a/modules/nf-core/gatk4/bedtointervallist/main.nf b/modules/nf-core/gatk4/bedtointervallist/main.nf
index 88b24b1ac..68863d677 100644
--- a/modules/nf-core/gatk4/bedtointervallist/main.nf
+++ b/modules/nf-core/gatk4/bedtointervallist/main.nf
@@ -4,8 +4,8 @@ process GATK4_BEDTOINTERVALLIST {
conda "${moduleDir}/environment.yml"
container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ?
- 'https://depot.galaxyproject.org/singularity/gatk4:4.4.0.0--py36hdfd78af_0':
- 'biocontainers/gatk4:4.4.0.0--py36hdfd78af_0' }"
+ 'https://depot.galaxyproject.org/singularity/gatk4:4.5.0.0--py36hdfd78af_0':
+ 'biocontainers/gatk4:4.5.0.0--py36hdfd78af_0' }"
input:
tuple val(meta), path(bed)
diff --git a/modules/nf-core/gatk4/bedtointervallist/tests/main.nf.test b/modules/nf-core/gatk4/bedtointervallist/tests/main.nf.test
new file mode 100644
index 000000000..2289f73fa
--- /dev/null
+++ b/modules/nf-core/gatk4/bedtointervallist/tests/main.nf.test
@@ -0,0 +1,38 @@
+nextflow_process {
+
+ name "Test Process GATK4_BEDTOINTERVALLIST"
+ script "../main.nf"
+ process "GATK4_BEDTOINTERVALLIST"
+
+ tag "modules"
+ tag "modules_nfcore"
+ tag "gatk4"
+ tag "gatk4/bedtointervallist"
+
+ test("test_gatk4_bedtointervallist") {
+
+ when {
+ process {
+ """
+ input[0] = [ [ id:'test' ], // meta map
+ [file(params.modules_testdata_base_path +
+ 'genomics/sarscov2/genome/bed/test.bed', checkIfExists: true) ]
+ ]
+ input[1] = [ [ id:'dict' ], // meta map
+ [file(params.modules_testdata_base_path +
+ 'genomics/sarscov2/genome/genome.dict', checkIfExists: true) ]
+ ]
+ """
+ }
+ }
+
+ then {
+ assertAll(
+ { assert process.success },
+ { assert snapshot(process.out).match() }
+ )
+ }
+
+ }
+
+}
\ No newline at end of file
diff --git a/modules/nf-core/gatk4/bedtointervallist/tests/main.nf.test.snap b/modules/nf-core/gatk4/bedtointervallist/tests/main.nf.test.snap
new file mode 100644
index 000000000..48c322fd0
--- /dev/null
+++ b/modules/nf-core/gatk4/bedtointervallist/tests/main.nf.test.snap
@@ -0,0 +1,35 @@
+{
+ "test_gatk4_bedtointervallist": {
+ "content": [
+ {
+ "0": [
+ [
+ {
+ "id": "test"
+ },
+ "test.interval_list:md5,e51101c9357fb2d59fd30e370eefa39c"
+ ]
+ ],
+ "1": [
+ "versions.yml:md5,29a18c36f27584eb5a5f2f5457088b3b"
+ ],
+ "interval_list": [
+ [
+ {
+ "id": "test"
+ },
+ "test.interval_list:md5,e51101c9357fb2d59fd30e370eefa39c"
+ ]
+ ],
+ "versions": [
+ "versions.yml:md5,29a18c36f27584eb5a5f2f5457088b3b"
+ ]
+ }
+ ],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "23.10.1"
+ },
+ "timestamp": "2024-03-19T14:20:12.168775"
+ }
+}
\ No newline at end of file
diff --git a/modules/nf-core/gatk4/bedtointervallist/tests/tags.yml b/modules/nf-core/gatk4/bedtointervallist/tests/tags.yml
new file mode 100644
index 000000000..b4d54f129
--- /dev/null
+++ b/modules/nf-core/gatk4/bedtointervallist/tests/tags.yml
@@ -0,0 +1,2 @@
+gatk4/bedtointervallist:
+ - "modules/nf-core/gatk4/bedtointervallist/**"
diff --git a/modules/nf-core/gatk4/createsequencedictionary/environment.yml b/modules/nf-core/gatk4/createsequencedictionary/environment.yml
index db663e148..78822ad03 100644
--- a/modules/nf-core/gatk4/createsequencedictionary/environment.yml
+++ b/modules/nf-core/gatk4/createsequencedictionary/environment.yml
@@ -4,4 +4,4 @@ channels:
- bioconda
- defaults
dependencies:
- - bioconda::gatk4=4.4.0.0
+ - bioconda::gatk4=4.5.0.0
diff --git a/modules/nf-core/gatk4/createsequencedictionary/main.nf b/modules/nf-core/gatk4/createsequencedictionary/main.nf
index b47ad1622..c7f1d75b3 100644
--- a/modules/nf-core/gatk4/createsequencedictionary/main.nf
+++ b/modules/nf-core/gatk4/createsequencedictionary/main.nf
@@ -4,8 +4,8 @@ process GATK4_CREATESEQUENCEDICTIONARY {
conda "${moduleDir}/environment.yml"
container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ?
- 'https://depot.galaxyproject.org/singularity/gatk4:4.4.0.0--py36hdfd78af_0':
- 'biocontainers/gatk4:4.4.0.0--py36hdfd78af_0' }"
+ 'https://depot.galaxyproject.org/singularity/gatk4:4.5.0.0--py36hdfd78af_0':
+ 'biocontainers/gatk4:4.5.0.0--py36hdfd78af_0' }"
input:
tuple val(meta), path(fasta)
diff --git a/modules/nf-core/gatk4/markduplicates/environment.yml b/modules/nf-core/gatk4/markduplicates/environment.yml
index 9adad104d..7362eea6f 100644
--- a/modules/nf-core/gatk4/markduplicates/environment.yml
+++ b/modules/nf-core/gatk4/markduplicates/environment.yml
@@ -4,5 +4,6 @@ channels:
- bioconda
- defaults
dependencies:
- - bioconda::gatk4=4.4.0.0
- - bioconda::samtools=1.17
+ - bioconda::gatk4=4.5.0.0
+ - bioconda::samtools=1.19.2
+ - bioconda::htslib=1.19.1
diff --git a/modules/nf-core/gatk4/markduplicates/main.nf b/modules/nf-core/gatk4/markduplicates/main.nf
index 564b86d3d..baadefef4 100644
--- a/modules/nf-core/gatk4/markduplicates/main.nf
+++ b/modules/nf-core/gatk4/markduplicates/main.nf
@@ -4,8 +4,8 @@ process GATK4_MARKDUPLICATES {
conda "${moduleDir}/environment.yml"
container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ?
- 'https://depot.galaxyproject.org/singularity/mulled-v2-d9e7bad0f7fbc8f4458d5c3ab7ffaaf0235b59fb:f857e2d6cc88d35580d01cf39e0959a68b83c1d9-0':
- 'biocontainers/mulled-v2-d9e7bad0f7fbc8f4458d5c3ab7ffaaf0235b59fb:f857e2d6cc88d35580d01cf39e0959a68b83c1d9-0' }"
+ 'https://depot.galaxyproject.org/singularity/mulled-v2-d9e7bad0f7fbc8f4458d5c3ab7ffaaf0235b59fb:7cc3d06cbf42e28c5e2ebfc7c858654c7340a9d5-0':
+ 'biocontainers/mulled-v2-d9e7bad0f7fbc8f4458d5c3ab7ffaaf0235b59fb:7cc3d06cbf42e28c5e2ebfc7c858654c7340a9d5-0' }"
input:
tuple val(meta), path(bam)
diff --git a/modules/nf-core/gatk4/markduplicates/tests/bam.config b/modules/nf-core/gatk4/markduplicates/tests/bam.config
new file mode 100644
index 000000000..0bbfbac35
--- /dev/null
+++ b/modules/nf-core/gatk4/markduplicates/tests/bam.config
@@ -0,0 +1,8 @@
+process {
+
+ withName: GATK4_MARKDUPLICATES {
+ ext.args = '--CREATE_INDEX true'
+ ext.prefix = { "${meta.id}.bam" }
+ }
+
+}
diff --git a/modules/nf-core/gatk4/markduplicates/tests/cram.config b/modules/nf-core/gatk4/markduplicates/tests/cram.config
new file mode 100644
index 000000000..04a9b0745
--- /dev/null
+++ b/modules/nf-core/gatk4/markduplicates/tests/cram.config
@@ -0,0 +1,8 @@
+process {
+
+ withName: GATK4_MARKDUPLICATES {
+ ext.args = '--CREATE_INDEX true'
+ ext.prefix = { "${meta.id}.cram" }
+ }
+
+}
diff --git a/modules/nf-core/gatk4/markduplicates/tests/main.nf.test b/modules/nf-core/gatk4/markduplicates/tests/main.nf.test
new file mode 100644
index 000000000..bbcf74db6
--- /dev/null
+++ b/modules/nf-core/gatk4/markduplicates/tests/main.nf.test
@@ -0,0 +1,126 @@
+nextflow_process {
+
+ name "Test Process GATK4_MARKDUPLICATES"
+ script "../main.nf"
+ process "GATK4_MARKDUPLICATES"
+
+ tag "modules"
+ tag "modules_nfcore"
+ tag "gatk4"
+ tag "gatk4/markduplicates"
+
+ test("sarscov2 - bam") {
+ config "./bam.config"
+
+ when {
+ process {
+ """
+ input[0] = [
+ [ id:'test', single_end:false ],
+ 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.bam).match("bam") },
+ { assert snapshot(process.out.bai).match("bai") },
+ { assert snapshot(process.out.versions).match("versions") },
+ { assert snapshot(file(process.out.metrics[0][1]).name).match("test.metrics") }
+ )
+ }
+ }
+
+ test("homo_sapiens - multiple bam") {
+ config "./bam.config"
+
+ when {
+ process {
+ """
+ input[0] = [
+ [ id:'test', single_end:false ],
+ [
+ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true),
+ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test2.paired_end.sorted.bam', checkIfExists: true)
+ ]
+ ]
+ input[1] = []
+ input[2] = []
+ """
+ }
+ }
+
+ then {
+ assertAll(
+ { assert process.success },
+ { assert snapshot(process.out.bam).match("multi bam") },
+ { assert snapshot(process.out.bai).match("multi bai") },
+ { assert snapshot(process.out.versions).match("multi versions") },
+ { assert snapshot(file(process.out.metrics[0][1]).name).match("multi test.metrics") }
+ )
+ }
+
+ }
+
+ test("homo_sapiens - multiple cram") {
+ config "./cram.config"
+
+ when {
+ process {
+ """
+ input[0] = [
+ [ id:'test', single_end:false ], // meta map
+ [
+ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true),
+ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test2.paired_end.sorted.bam', checkIfExists: true)
+ ]
+ ]
+ input[1] = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true)
+ input[2] = 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.cram[0][1]).name).match("multi cram")},
+ { assert snapshot(file(process.out.crai[0][1]).name).match("multi crai") },
+ { assert snapshot(process.out.versions).match("multi cram versions") },
+ { assert snapshot(file(process.out.metrics[0][1]).name).match("multi cram test.metrics") }
+ )
+ }
+
+ }
+
+ test("stub") {
+ config "./bam.config"
+ options "-stub"
+
+ when {
+ process {
+ """
+ input[0] = [
+ [ id:'test', single_end:false ],
+ []
+ ]
+ input[1] = []
+ input[2] = []
+ """
+ }
+ }
+
+ then {
+ assertAll(
+ { assert process.success }
+ )
+ }
+
+ }
+
+}
diff --git a/modules/nf-core/gatk4/markduplicates/tests/main.nf.test.snap b/modules/nf-core/gatk4/markduplicates/tests/main.nf.test.snap
new file mode 100644
index 000000000..336bb3735
--- /dev/null
+++ b/modules/nf-core/gatk4/markduplicates/tests/main.nf.test.snap
@@ -0,0 +1,160 @@
+{
+ "multi bam": {
+ "content": [
+ [
+ [
+ {
+ "id": "test",
+ "single_end": false
+ },
+ "test.bam:md5,8a808b1a94d2627c4d659a2151c4cb9f"
+ ]
+ ]
+ ],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "23.10.0"
+ },
+ "timestamp": "2024-02-13T15:21:36.059923"
+ },
+ "multi crai": {
+ "content": [
+ "test.cram.crai"
+ ],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "23.10.0"
+ },
+ "timestamp": "2023-12-12T17:43:37.780426007"
+ },
+ "multi bai": {
+ "content": [
+ [
+ [
+ {
+ "id": "test",
+ "single_end": false
+ },
+ "test.bai:md5,38b99c5f771895ecf5324c3186b9d452"
+ ]
+ ]
+ ],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "23.10.0"
+ },
+ "timestamp": "2024-02-13T15:21:36.09642"
+ },
+ "versions": {
+ "content": [
+ [
+ "versions.yml:md5,c58bf16c6e3786cc4d17bb7249f9ffe5"
+ ]
+ ],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "23.10.0"
+ },
+ "timestamp": "2024-02-13T15:21:08.710549"
+ },
+ "multi test.metrics": {
+ "content": [
+ "test.bam.metrics"
+ ],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "23.10.0"
+ },
+ "timestamp": "2023-12-12T17:43:11.732892667"
+ },
+ "bai": {
+ "content": [
+ [
+ [
+ {
+ "id": "test",
+ "single_end": false
+ },
+ "test.bai:md5,26001bcdbce12e9f07557d8f7b8d360e"
+ ]
+ ]
+ ],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "23.10.0"
+ },
+ "timestamp": "2023-12-12T17:42:39.651888758"
+ },
+ "multi cram versions": {
+ "content": [
+ [
+ "versions.yml:md5,c58bf16c6e3786cc4d17bb7249f9ffe5"
+ ]
+ ],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "23.10.0"
+ },
+ "timestamp": "2024-02-13T15:21:56.966376"
+ },
+ "multi versions": {
+ "content": [
+ [
+ "versions.yml:md5,c58bf16c6e3786cc4d17bb7249f9ffe5"
+ ]
+ ],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "23.10.0"
+ },
+ "timestamp": "2024-02-13T15:21:36.138095"
+ },
+ "multi cram test.metrics": {
+ "content": [
+ "test.cram.metrics"
+ ],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "23.10.0"
+ },
+ "timestamp": "2023-12-12T17:43:37.798977444"
+ },
+ "multi cram": {
+ "content": [
+ "test.cram"
+ ],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "23.10.0"
+ },
+ "timestamp": "2023-12-12T17:43:37.771137858"
+ },
+ "bam": {
+ "content": [
+ [
+ [
+ {
+ "id": "test",
+ "single_end": false
+ },
+ "test.bam:md5,75d914ba8804eaf2acf02ab432197ec9"
+ ]
+ ]
+ ],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "23.10.0"
+ },
+ "timestamp": "2024-02-13T15:21:08.645892"
+ },
+ "test.metrics": {
+ "content": [
+ "test.bam.metrics"
+ ],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "23.10.0"
+ },
+ "timestamp": "2023-12-12T17:42:39.672508385"
+ }
+}
\ No newline at end of file
diff --git a/modules/nf-core/gatk4/markduplicates/tests/tags.yml b/modules/nf-core/gatk4/markduplicates/tests/tags.yml
new file mode 100644
index 000000000..8632e32b3
--- /dev/null
+++ b/modules/nf-core/gatk4/markduplicates/tests/tags.yml
@@ -0,0 +1,2 @@
+gatk4/markduplicates:
+ - "modules/nf-core/gatk4/markduplicates/**"
diff --git a/modules/nf-core/picard/collectinsertsizemetrics/environment.yml b/modules/nf-core/picard/collectinsertsizemetrics/environment.yml
index 5c85f8725..73ba7dc6b 100644
--- a/modules/nf-core/picard/collectinsertsizemetrics/environment.yml
+++ b/modules/nf-core/picard/collectinsertsizemetrics/environment.yml
@@ -4,4 +4,4 @@ channels:
- bioconda
- defaults
dependencies:
- - bioconda::picard=3.1.0
+ - bioconda::picard=3.1.1
diff --git a/modules/nf-core/picard/collectinsertsizemetrics/main.nf b/modules/nf-core/picard/collectinsertsizemetrics/main.nf
index 48e4d2ad2..06c4bc172 100644
--- a/modules/nf-core/picard/collectinsertsizemetrics/main.nf
+++ b/modules/nf-core/picard/collectinsertsizemetrics/main.nf
@@ -4,8 +4,8 @@ process PICARD_COLLECTINSERTSIZEMETRICS {
conda "${moduleDir}/environment.yml"
container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ?
- 'https://depot.galaxyproject.org/singularity/picard:3.1.0--hdfd78af_0' :
- 'biocontainers/picard:3.1.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(bam)
diff --git a/modules/nf-core/picard/collectinsertsizemetrics/meta.yml b/modules/nf-core/picard/collectinsertsizemetrics/meta.yml
index efd5abe06..e2749cb62 100644
--- a/modules/nf-core/picard/collectinsertsizemetrics/meta.yml
+++ b/modules/nf-core/picard/collectinsertsizemetrics/meta.yml
@@ -12,7 +12,7 @@ tools:
homepage: "https://broadinstitute.github.io/picard/"
documentation: "https://broadinstitute.github.io/picard/"
tool_dev_url: "https://github.com/broadinstitute/picard"
- licence: "['MIT']"
+ licence: ["MIT"]
input:
- meta:
type: map
diff --git a/modules/nf-core/picard/collectwgsmetrics/environment.yml b/modules/nf-core/picard/collectwgsmetrics/environment.yml
index 8adda4914..6a0b9258e 100644
--- a/modules/nf-core/picard/collectwgsmetrics/environment.yml
+++ b/modules/nf-core/picard/collectwgsmetrics/environment.yml
@@ -4,5 +4,5 @@ channels:
- bioconda
- defaults
dependencies:
- - bioconda::picard=3.1.0
+ - bioconda::picard=3.1.1
- r::r-base
diff --git a/modules/nf-core/picard/collectwgsmetrics/main.nf b/modules/nf-core/picard/collectwgsmetrics/main.nf
index 67aa5b5e8..35f4129cf 100644
--- a/modules/nf-core/picard/collectwgsmetrics/main.nf
+++ b/modules/nf-core/picard/collectwgsmetrics/main.nf
@@ -4,8 +4,8 @@ process PICARD_COLLECTWGSMETRICS {
conda "${moduleDir}/environment.yml"
container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ?
- 'https://depot.galaxyproject.org/singularity/picard:3.1.0--hdfd78af_0' :
- 'biocontainers/picard:3.1.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(bam), path(bai)
diff --git a/modules/nf-core/samtools/faidx/environment.yml b/modules/nf-core/samtools/faidx/environment.yml
index 73badedb1..9c24eb0ab 100644
--- a/modules/nf-core/samtools/faidx/environment.yml
+++ b/modules/nf-core/samtools/faidx/environment.yml
@@ -1,7 +1,10 @@
name: samtools_faidx
+
channels:
- conda-forge
- bioconda
- defaults
+
dependencies:
- - bioconda::samtools=1.17
+ - bioconda::htslib=1.19.1
+ - bioconda::samtools=1.19.2
diff --git a/modules/nf-core/samtools/faidx/main.nf b/modules/nf-core/samtools/faidx/main.nf
index 3aa988224..cfe7ad95f 100644
--- a/modules/nf-core/samtools/faidx/main.nf
+++ b/modules/nf-core/samtools/faidx/main.nf
@@ -4,8 +4,8 @@ process SAMTOOLS_FAIDX {
conda "${moduleDir}/environment.yml"
container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ?
- 'https://depot.galaxyproject.org/singularity/samtools:1.17--h00cdaf9_0' :
- 'biocontainers/samtools:1.17--h00cdaf9_0' }"
+ 'https://depot.galaxyproject.org/singularity/samtools:1.19.2--h50ea8bc_0' :
+ 'biocontainers/samtools:1.19.2--h50ea8bc_0' }"
input:
tuple val(meta), path(fasta)
diff --git a/modules/nf-core/samtools/faidx/meta.yml b/modules/nf-core/samtools/faidx/meta.yml
index e189af28f..f3c25de20 100644
--- a/modules/nf-core/samtools/faidx/meta.yml
+++ b/modules/nf-core/samtools/faidx/meta.yml
@@ -39,6 +39,10 @@ output:
description: |
Groovy Map containing sample information
e.g. [ id:'test', single_end:false ]
+ - fa:
+ type: file
+ description: FASTA file
+ pattern: "*.{fa}"
- fai:
type: file
description: FASTA index file
diff --git a/modules/nf-core/samtools/faidx/tests/main.nf.test b/modules/nf-core/samtools/faidx/tests/main.nf.test
new file mode 100644
index 000000000..17244ef2e
--- /dev/null
+++ b/modules/nf-core/samtools/faidx/tests/main.nf.test
@@ -0,0 +1,122 @@
+nextflow_process {
+
+ name "Test Process SAMTOOLS_FAIDX"
+ script "../main.nf"
+ process "SAMTOOLS_FAIDX"
+
+ tag "modules"
+ tag "modules_nfcore"
+ tag "samtools"
+ tag "samtools/faidx"
+
+ test("test_samtools_faidx") {
+
+ when {
+ process {
+ """
+ input[0] = [ [ id:'test', single_end:false ], // meta map
+ file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) ]
+
+ input[1] = [[],[]]
+ """
+ }
+ }
+
+ then {
+ assertAll(
+ { assert process.success },
+ { assert snapshot(process.out).match() }
+ )
+ }
+ }
+
+ test("test_samtools_faidx_bgzip") {
+
+ when {
+ process {
+ """
+ input[0] = [ [ id:'test', single_end:false ], // meta map
+ file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.gz', checkIfExists: true)]
+
+ input[1] = [[],[]]
+ """
+ }
+ }
+
+ then {
+ assertAll(
+ { assert process.success },
+ { assert snapshot(process.out).match() }
+ )
+ }
+ }
+
+ test("test_samtools_faidx_fasta") {
+
+ config "./nextflow.config"
+
+ when {
+ process {
+ """
+ input[0] = [ [ id:'test', single_end:false ], // meta map
+ file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) ]
+
+ input[1] = [ [ id:'test', single_end:false ], // meta map
+ file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.fai', checkIfExists: true) ]
+ """
+ }
+ }
+
+ then {
+ assertAll(
+ { assert process.success },
+ { assert snapshot(process.out).match() }
+ )
+ }
+ }
+
+ test("test_samtools_faidx_stub_fasta") {
+
+ config "./nextflow2.config"
+
+ when {
+ process {
+ """
+ input[0] = [ [ id:'test', single_end:false ], // meta map
+ file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) ]
+
+ input[1] = [ [ id:'test', single_end:false ], // meta map
+ file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.fai', checkIfExists: true) ]
+ """
+ }
+ }
+
+ then {
+ assertAll(
+ { assert process.success },
+ { assert snapshot(process.out).match() }
+ )
+ }
+ }
+
+ test("test_samtools_faidx_stub_fai") {
+
+ when {
+ process {
+ """
+ input[0] = [ [ id:'test', single_end:false ], // meta map
+ file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) ]
+
+ input[1] = [[],[]]
+ """
+ }
+ }
+
+ then {
+ assertAll(
+ { assert process.success },
+ { assert snapshot(process.out).match() }
+ )
+ }
+ }
+}
\ No newline at end of file
diff --git a/modules/nf-core/samtools/faidx/tests/main.nf.test.snap b/modules/nf-core/samtools/faidx/tests/main.nf.test.snap
new file mode 100644
index 000000000..3e651ef68
--- /dev/null
+++ b/modules/nf-core/samtools/faidx/tests/main.nf.test.snap
@@ -0,0 +1,249 @@
+{
+ "test_samtools_faidx": {
+ "content": [
+ {
+ "0": [
+
+ ],
+ "1": [
+ [
+ {
+ "id": "test",
+ "single_end": false
+ },
+ "genome.fasta.fai:md5,9da2a56e2853dc8c0b86a9e7229c9fe5"
+ ]
+ ],
+ "2": [
+
+ ],
+ "3": [
+ "versions.yml:md5,4870fc0a88c616aa937f8325a2db0c3c"
+ ],
+ "fa": [
+
+ ],
+ "fai": [
+ [
+ {
+ "id": "test",
+ "single_end": false
+ },
+ "genome.fasta.fai:md5,9da2a56e2853dc8c0b86a9e7229c9fe5"
+ ]
+ ],
+ "gzi": [
+
+ ],
+ "versions": [
+ "versions.yml:md5,4870fc0a88c616aa937f8325a2db0c3c"
+ ]
+ }
+ ],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "23.10.1"
+ },
+ "timestamp": "2024-03-18T16:22:39.412601"
+ },
+ "test_samtools_faidx_bgzip": {
+ "content": [
+ {
+ "0": [
+
+ ],
+ "1": [
+ [
+ {
+ "id": "test",
+ "single_end": false
+ },
+ "genome.fasta.gz.fai:md5,9da2a56e2853dc8c0b86a9e7229c9fe5"
+ ]
+ ],
+ "2": [
+ [
+ {
+ "id": "test",
+ "single_end": false
+ },
+ "genome.fasta.gz.gzi:md5,7dea362b3fac8e00956a4952a3d4f474"
+ ]
+ ],
+ "3": [
+ "versions.yml:md5,4870fc0a88c616aa937f8325a2db0c3c"
+ ],
+ "fa": [
+
+ ],
+ "fai": [
+ [
+ {
+ "id": "test",
+ "single_end": false
+ },
+ "genome.fasta.gz.fai:md5,9da2a56e2853dc8c0b86a9e7229c9fe5"
+ ]
+ ],
+ "gzi": [
+ [
+ {
+ "id": "test",
+ "single_end": false
+ },
+ "genome.fasta.gz.gzi:md5,7dea362b3fac8e00956a4952a3d4f474"
+ ]
+ ],
+ "versions": [
+ "versions.yml:md5,4870fc0a88c616aa937f8325a2db0c3c"
+ ]
+ }
+ ],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "23.10.1"
+ },
+ "timestamp": "2024-03-18T16:23:22.427966"
+ },
+ "test_samtools_faidx_fasta": {
+ "content": [
+ {
+ "0": [
+ [
+ {
+ "id": "test",
+ "single_end": false
+ },
+ "extract.fa:md5,6a0774a0ad937ba0bfd2ac7457d90f36"
+ ]
+ ],
+ "1": [
+
+ ],
+ "2": [
+
+ ],
+ "3": [
+ "versions.yml:md5,4870fc0a88c616aa937f8325a2db0c3c"
+ ],
+ "fa": [
+ [
+ {
+ "id": "test",
+ "single_end": false
+ },
+ "extract.fa:md5,6a0774a0ad937ba0bfd2ac7457d90f36"
+ ]
+ ],
+ "fai": [
+
+ ],
+ "gzi": [
+
+ ],
+ "versions": [
+ "versions.yml:md5,4870fc0a88c616aa937f8325a2db0c3c"
+ ]
+ }
+ ],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "23.10.1"
+ },
+ "timestamp": "2024-03-18T16:24:04.107537"
+ },
+ "test_samtools_faidx_stub_fasta": {
+ "content": [
+ {
+ "0": [
+ [
+ {
+ "id": "test",
+ "single_end": false
+ },
+ "extract.fa:md5,9da2a56e2853dc8c0b86a9e7229c9fe5"
+ ]
+ ],
+ "1": [
+
+ ],
+ "2": [
+
+ ],
+ "3": [
+ "versions.yml:md5,4870fc0a88c616aa937f8325a2db0c3c"
+ ],
+ "fa": [
+ [
+ {
+ "id": "test",
+ "single_end": false
+ },
+ "extract.fa:md5,9da2a56e2853dc8c0b86a9e7229c9fe5"
+ ]
+ ],
+ "fai": [
+
+ ],
+ "gzi": [
+
+ ],
+ "versions": [
+ "versions.yml:md5,4870fc0a88c616aa937f8325a2db0c3c"
+ ]
+ }
+ ],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "23.10.1"
+ },
+ "timestamp": "2024-03-18T16:24:45.868463"
+ },
+ "test_samtools_faidx_stub_fai": {
+ "content": [
+ {
+ "0": [
+
+ ],
+ "1": [
+ [
+ {
+ "id": "test",
+ "single_end": false
+ },
+ "genome.fasta.fai:md5,9da2a56e2853dc8c0b86a9e7229c9fe5"
+ ]
+ ],
+ "2": [
+
+ ],
+ "3": [
+ "versions.yml:md5,4870fc0a88c616aa937f8325a2db0c3c"
+ ],
+ "fa": [
+
+ ],
+ "fai": [
+ [
+ {
+ "id": "test",
+ "single_end": false
+ },
+ "genome.fasta.fai:md5,9da2a56e2853dc8c0b86a9e7229c9fe5"
+ ]
+ ],
+ "gzi": [
+
+ ],
+ "versions": [
+ "versions.yml:md5,4870fc0a88c616aa937f8325a2db0c3c"
+ ]
+ }
+ ],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "23.10.1"
+ },
+ "timestamp": "2024-03-18T16:25:27.550554"
+ }
+}
\ No newline at end of file
diff --git a/modules/nf-core/samtools/faidx/tests/nextflow.config b/modules/nf-core/samtools/faidx/tests/nextflow.config
new file mode 100644
index 000000000..f76a3ba09
--- /dev/null
+++ b/modules/nf-core/samtools/faidx/tests/nextflow.config
@@ -0,0 +1,7 @@
+process {
+
+ withName: SAMTOOLS_FAIDX {
+ ext.args = 'MT192765.1 -o extract.fa'
+ }
+
+}
diff --git a/modules/nf-core/samtools/faidx/tests/nextflow2.config b/modules/nf-core/samtools/faidx/tests/nextflow2.config
new file mode 100644
index 000000000..33ebbd5df
--- /dev/null
+++ b/modules/nf-core/samtools/faidx/tests/nextflow2.config
@@ -0,0 +1,6 @@
+process {
+
+ withName: SAMTOOLS_FAIDX {
+ ext.args = '-o extract.fa'
+ }
+}
diff --git a/modules/nf-core/samtools/faidx/tests/tags.yml b/modules/nf-core/samtools/faidx/tests/tags.yml
new file mode 100644
index 000000000..e4a839481
--- /dev/null
+++ b/modules/nf-core/samtools/faidx/tests/tags.yml
@@ -0,0 +1,2 @@
+samtools/faidx:
+ - modules/nf-core/samtools/faidx/**
diff --git a/modules/nf-core/samtools/index/environment.yml b/modules/nf-core/samtools/index/environment.yml
index 3c6f95b25..a5e506498 100644
--- a/modules/nf-core/samtools/index/environment.yml
+++ b/modules/nf-core/samtools/index/environment.yml
@@ -4,4 +4,5 @@ channels:
- bioconda
- defaults
dependencies:
- - bioconda::samtools=1.17
+ - 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 256bd7c46..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.17--h00cdaf9_0' :
- 'biocontainers/samtools:1.17--h00cdaf9_0' }"
+ '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 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..3dc8e7de8 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,cc4370091670b64bba7c7206403ffb3e"
+ ]
+ ],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "24.01.0"
+ },
+ "timestamp": "2024-02-13T16:12:00.324667957"
+ },
+ "csi_versions": {
+ "content": [
+ [
+ "versions.yml:md5,cc4370091670b64bba7c7206403ffb3e"
+ ]
+ ],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "24.01.0"
+ },
+ "timestamp": "2024-02-13T16:12:07.885103162"
+ },
"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,cc4370091670b64bba7c7206403ffb3e"
+ ]
+ ],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "24.01.0"
+ },
+ "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 508659f02..4d898e486 100644
--- a/modules/nf-core/samtools/sort/environment.yml
+++ b/modules/nf-core/samtools/sort/environment.yml
@@ -4,4 +4,5 @@ channels:
- bioconda
- defaults
dependencies:
- - bioconda::samtools=1.17
+ - 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 60f0c634d..fc374f980 100644
--- a/modules/nf-core/samtools/sort/main.nf
+++ b/modules/nf-core/samtools/sort/main.nf
@@ -4,15 +4,18 @@ process SAMTOOLS_SORT {
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.19.2--h50ea8bc_0' :
+ '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 1f72f3b96..8360e2b1f 100644
--- a/modules/nf-core/samtools/sort/tests/main.nf.test
+++ b/modules/nf-core/samtools/sort/tests/main.nf.test
@@ -8,22 +8,21 @@ nextflow_process {
tag "samtools"
tag "samtools/sort"
- test("test_samtools_sort") {
+ test("bam") {
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)
- ]
- ]
+ 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)
+ ])
"""
}
}
@@ -34,13 +33,39 @@ nextflow_process {
{ 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)
+ ])
+ """
+ }
+ }
+
+ then {
+ assertAll (
+ { assert process.success },
+ { assert snapshot(process.out).match() }
+ )
+ }
}
- test("test_samtools_sort_stub") {
+ test("bam_stub") {
config "./nextflow.config"
- options "-stub-run"
+ options "-stub"
when {
params {
@@ -48,12 +73,14 @@ 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)
+ ])
+ input[1] = Channel.of([
+ [ id:'fasta' ], // meta map
+ file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true)
+ ])
"""
}
}
@@ -61,10 +88,9 @@ nextflow_process {
then {
assertAll (
{ assert process.success },
- { assert snapshot(process.out).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 a43566dab..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,5 +1,5 @@
{
- "test_samtools_sort": {
+ "cram": {
"content": [
{
"0": [
@@ -8,14 +8,26 @@
"id": "test",
"single_end": false
},
- "test.sorted.bam:md5,a29570e7607d217c2fa4d75829e09cd7"
+ "test.sorted.bam:md5,bc0b7c25da26384a006ed84cc9e4da23"
]
],
"1": [
],
"2": [
- "versions.yml:md5,46f7a36082fa1f68285fe30d689244e8"
+
+ ],
+ "3": [
+ [
+ {
+ "id": "test",
+ "single_end": false
+ },
+ "test.sorted.bam.csi:md5,8d4e836c2fed6c0bf874d5e8cdba5831"
+ ]
+ ],
+ "4": [
+ "versions.yml:md5,e6d43fefc9a8bff91c2ce6e3a1716eca"
],
"bam": [
[
@@ -23,17 +35,120 @@
"id": "test",
"single_end": false
},
- "test.sorted.bam:md5,a29570e7607d217c2fa4d75829e09cd7"
+ "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"
+ ],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "23.04.3"
+ },
+ "timestamp": "2024-02-12T19:21:04.364044"
+ },
+ "bam_stub_versions": {
+ "content": [
+ [
+ "versions.yml:md5,e6d43fefc9a8bff91c2ce6e3a1716eca"
+ ]
+ ],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "24.01.0"
+ },
+ "timestamp": "2024-02-13T16:15:00.20800281"
+ },
+ "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,46f7a36082fa1f68285fe30d689244e8"
+ "versions.yml:md5,e6d43fefc9a8bff91c2ce6e3a1716eca"
]
}
],
- "timestamp": "2023-10-17T17:21:46.5427968"
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "23.10.1"
+ },
+ "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/modules/nf-core/samtools/view/environment.yml b/modules/nf-core/samtools/view/environment.yml
index 141e7bd82..b0676f338 100644
--- a/modules/nf-core/samtools/view/environment.yml
+++ b/modules/nf-core/samtools/view/environment.yml
@@ -4,4 +4,5 @@ channels:
- bioconda
- defaults
dependencies:
- - bioconda::samtools=1.17
+ - bioconda::samtools=1.19.2
+ - bioconda::htslib=1.19.1
diff --git a/modules/nf-core/samtools/view/main.nf b/modules/nf-core/samtools/view/main.nf
index ddf3f88ae..5a8989d69 100644
--- a/modules/nf-core/samtools/view/main.nf
+++ b/modules/nf-core/samtools/view/main.nf
@@ -4,8 +4,8 @@ process SAMTOOLS_VIEW {
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.19.2--h50ea8bc_0' :
+ 'biocontainers/samtools:1.19.2--h50ea8bc_0' }"
input:
tuple val(meta), path(input), path(index)
@@ -53,10 +53,19 @@ process SAMTOOLS_VIEW {
"""
stub:
+ def args = task.ext.args ?: ''
def prefix = task.ext.prefix ?: "${meta.id}"
+ def file_type = args.contains("--output-fmt sam") ? "sam" :
+ args.contains("--output-fmt bam") ? "bam" :
+ args.contains("--output-fmt cram") ? "cram" :
+ input.getExtension()
+ if ("$input" == "${prefix}.${file_type}") error "Input and output names are the same, use \"task.ext.prefix\" to disambiguate!"
+
+ def index = args.contains("--write-index") ? "touch ${prefix}.csi" : ""
+
"""
- touch ${prefix}.bam
- touch ${prefix}.cram
+ touch ${prefix}.${file_type}
+ ${index}
cat <<-END_VERSIONS > versions.yml
"${task.process}":
diff --git a/modules/nf-core/samtools/view/tests/bam.config b/modules/nf-core/samtools/view/tests/bam.config
new file mode 100644
index 000000000..c10d10811
--- /dev/null
+++ b/modules/nf-core/samtools/view/tests/bam.config
@@ -0,0 +1,3 @@
+process {
+ ext.args = "--output-fmt bam"
+}
\ No newline at end of file
diff --git a/modules/nf-core/samtools/view/tests/bam_index.config b/modules/nf-core/samtools/view/tests/bam_index.config
new file mode 100644
index 000000000..771ae033a
--- /dev/null
+++ b/modules/nf-core/samtools/view/tests/bam_index.config
@@ -0,0 +1,3 @@
+process {
+ ext.args = "--output-fmt bam --write-index"
+}
\ No newline at end of file
diff --git a/modules/nf-core/samtools/view/tests/main.nf.test b/modules/nf-core/samtools/view/tests/main.nf.test
new file mode 100644
index 000000000..45a0defba
--- /dev/null
+++ b/modules/nf-core/samtools/view/tests/main.nf.test
@@ -0,0 +1,212 @@
+nextflow_process {
+
+ name "Test Process SAMTOOLS_VIEW"
+ script "../main.nf"
+ process "SAMTOOLS_VIEW"
+
+ tag "modules"
+ tag "modules_nfcore"
+ tag "samtools"
+ tag "samtools/view"
+
+ test("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] = [[],[]]
+ input[2] = []
+ """
+ }
+ }
+
+ then {
+ assertAll(
+ { assert process.success },
+ { assert snapshot(file(process.out.bam[0][1]).name).match("bam_bam") },
+ { assert snapshot(process.out.bai).match("bam_bai") },
+ { assert snapshot(process.out.crai).match("bam_crai") },
+ { assert snapshot(process.out.cram).match("bam_cram") },
+ { assert snapshot(process.out.csi).match("bam_csi") },
+ { assert snapshot(process.out.sam).match("bam_sam") },
+ { assert snapshot(process.out.versions).match("bam_versions") }
+ )
+ }
+ }
+
+ test("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),
+ 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' ], // meta map
+ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true)
+ ])
+ input[2] = []
+ """
+ }
+ }
+
+ then {
+ assertAll(
+ { assert process.success },
+ { assert snapshot(file(process.out.cram[0][1]).name).match("cram_cram") },
+ { assert snapshot(process.out.bai).match("cram_bai") },
+ { assert snapshot(process.out.bam).match("cram_bam") },
+ { assert snapshot(process.out.crai).match("cram_crai") },
+ { assert snapshot(process.out.csi).match("cram_csi") },
+ { assert snapshot(process.out.sam).match("cram_sam") },
+ { assert snapshot(process.out.versions).match("cram_versions") }
+ )
+ }
+ }
+
+ test("cram_to_bam") {
+
+ config "./bam.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:'genome' ], // meta map
+ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true)
+ ])
+ input[2] = []
+ """
+ }
+ }
+
+ then {
+ assertAll(
+ { assert process.success },
+ { assert snapshot(file(process.out.bam[0][1]).name).match("cram_to_bam_bam") },
+ { assert snapshot(process.out.bai).match("cram_to_bam_bai") },
+ { assert snapshot(process.out.crai).match("cram_to_bam_crai") },
+ { assert snapshot(process.out.cram).match("cram_to_bam_cram") },
+ { assert snapshot(process.out.csi).match("cram_to_bam_csi") },
+ { assert snapshot(process.out.sam).match("cram_to_bam_sam") },
+ { assert snapshot(process.out.versions).match("cram_to_bam_versions") }
+ )
+ }
+ }
+
+ test("cram_to_bam_index") {
+
+ config "./bam_index.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:'genome' ], // meta map
+ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true)
+ ])
+ input[2] = []
+ """
+ }
+ }
+
+ then {
+ assertAll(
+ { assert process.success },
+ { assert snapshot(file(process.out.bam[0][1]).name).match("cram_to_bam_index_bam") },
+ { assert snapshot(file(process.out.csi[0][1]).name).match("cram_to_bam_index_csi") },
+ { assert snapshot(process.out.bai).match("cram_to_bam_index_bai") },
+ { assert snapshot(process.out.crai).match("cram_to_bam_index_crai") },
+ { assert snapshot(process.out.cram).match("cram_to_bam_index_cram") },
+ { assert snapshot(process.out.sam).match("cram_to_bam_index_sam") },
+ { assert snapshot(process.out.versions).match("cram_to_bam_index_versions") }
+ )
+ }
+ }
+
+ test("cram_to_bam_index_qname") {
+
+ config "./bam_index.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:'genome' ], // meta map
+ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true)
+ ])
+ input[2] = Channel.of("testN:2817", "testN:2814").collectFile(name: "readnames.list", newLine: true)
+ """
+ }
+ }
+
+ then {
+ assertAll(
+ { assert process.success },
+ { assert snapshot(file(process.out.bam[0][1]).name).match("cram_to_bam_index_qname_bam") },
+ { assert snapshot(file(process.out.csi[0][1]).name).match("cram_to_bam_index_qname_csi") },
+ { assert snapshot(process.out.bai).match("cram_to_bam_index_qname_bai") },
+ { assert snapshot(process.out.crai).match("cram_to_bam_index_qname_crai") },
+ { assert snapshot(process.out.cram).match("cram_to_bam_index_qname_cram") },
+ { assert snapshot(process.out.sam).match("cram_to_bam_index_qname_sam") },
+ { assert snapshot(process.out.versions).match("cram_to_bam_index_qname_versions") }
+ )
+ }
+ }
+
+ test("bam_stub") {
+
+ options "-stub"
+ config "./bam_index.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] = [[],[]]
+ input[2] = []
+ """
+ }
+ }
+
+ then {
+ assertAll(
+ { assert process.success },
+ { assert snapshot(file(process.out.bam[0][1]).name).match("bam_stub_bam") },
+ { assert snapshot(file(process.out.csi[0][1]).name).match("bam_stub_csi") },
+ { assert snapshot(process.out.bai).match("bam_stub_bai") },
+ { assert snapshot(process.out.crai).match("bam_stub_crai") },
+ { assert snapshot(process.out.cram).match("bam_stub_cram") },
+ { assert snapshot(process.out.sam).match("bam_stub_sam") },
+ { assert snapshot(process.out.versions).match("bam_stub_versions") }
+ )
+ }
+ }
+}
diff --git a/modules/nf-core/samtools/view/tests/main.nf.test.snap b/modules/nf-core/samtools/view/tests/main.nf.test.snap
new file mode 100644
index 000000000..f55943a7a
--- /dev/null
+++ b/modules/nf-core/samtools/view/tests/main.nf.test.snap
@@ -0,0 +1,488 @@
+{
+ "bam_bam": {
+ "content": [
+ "test.bam"
+ ],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "23.04.3"
+ },
+ "timestamp": "2024-02-12T19:37:51.256068"
+ },
+ "cram_to_bam_index_csi": {
+ "content": [
+ "test.bam.csi"
+ ],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "23.04.3"
+ },
+ "timestamp": "2024-02-12T19:38:12.958617"
+ },
+ "bam_stub_bam": {
+ "content": [
+ "test.bam"
+ ],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "23.04.3"
+ },
+ "timestamp": "2024-02-12T19:38:32.065301"
+ },
+ "bam_bai": {
+ "content": [
+ [
+
+ ]
+ ],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "23.04.3"
+ },
+ "timestamp": "2024-02-12T19:37:51.258578"
+ },
+ "bam_stub_bai": {
+ "content": [
+ [
+
+ ]
+ ],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "23.04.3"
+ },
+ "timestamp": "2024-02-12T19:38:32.071284"
+ },
+ "bam_stub_versions": {
+ "content": [
+ [
+ "versions.yml:md5,4ea32c57d546102a1b32d9693ada7cf1"
+ ]
+ ],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "24.01.0"
+ },
+ "timestamp": "2024-02-13T16:13:09.713353823"
+ },
+ "cram_to_bam_index_cram": {
+ "content": [
+ [
+
+ ]
+ ],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "23.04.3"
+ },
+ "timestamp": "2024-02-12T19:38:12.972288"
+ },
+ "cram_to_bam_sam": {
+ "content": [
+ [
+
+ ]
+ ],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "23.04.3"
+ },
+ "timestamp": "2024-02-12T19:38:04.999247"
+ },
+ "cram_to_bam_index_sam": {
+ "content": [
+ [
+
+ ]
+ ],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "23.04.3"
+ },
+ "timestamp": "2024-02-12T19:38:12.976457"
+ },
+ "cram_crai": {
+ "content": [
+ [
+
+ ]
+ ],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "23.04.3"
+ },
+ "timestamp": "2024-02-12T19:37:56.497581"
+ },
+ "cram_csi": {
+ "content": [
+ [
+
+ ]
+ ],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "23.04.3"
+ },
+ "timestamp": "2024-02-12T19:37:56.50038"
+ },
+ "cram_to_bam_cram": {
+ "content": [
+ [
+
+ ]
+ ],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "23.04.3"
+ },
+ "timestamp": "2024-02-12T19:38:04.992239"
+ },
+ "cram_to_bam_index_qname_csi": {
+ "content": [
+ "test.bam.csi"
+ ],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "23.04.3"
+ },
+ "timestamp": "2024-02-12T19:38:23.325496"
+ },
+ "bam_stub_sam": {
+ "content": [
+ [
+
+ ]
+ ],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "23.04.3"
+ },
+ "timestamp": "2024-02-12T19:38:32.079529"
+ },
+ "cram_cram": {
+ "content": [
+ "test.cram"
+ ],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "23.04.3"
+ },
+ "timestamp": "2024-02-12T19:37:56.490286"
+ },
+ "bam_csi": {
+ "content": [
+ [
+
+ ]
+ ],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "23.04.3"
+ },
+ "timestamp": "2024-02-12T19:37:51.262882"
+ },
+ "cram_to_bam_crai": {
+ "content": [
+ [
+
+ ]
+ ],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "23.04.3"
+ },
+ "timestamp": "2024-02-12T19:38:04.989247"
+ },
+ "cram_to_bam_index_crai": {
+ "content": [
+ [
+
+ ]
+ ],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "23.04.3"
+ },
+ "timestamp": "2024-02-12T19:38:12.967681"
+ },
+ "cram_to_bam_index_qname_versions": {
+ "content": [
+ [
+ "versions.yml:md5,4ea32c57d546102a1b32d9693ada7cf1"
+ ]
+ ],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "24.01.0"
+ },
+ "timestamp": "2024-02-13T16:13:03.935041046"
+ },
+ "cram_to_bam_bam": {
+ "content": [
+ "test.bam"
+ ],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "23.04.3"
+ },
+ "timestamp": "2024-02-12T19:38:04.982361"
+ },
+ "cram_to_bam_index_bam": {
+ "content": [
+ "test.bam"
+ ],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "23.04.3"
+ },
+ "timestamp": "2024-02-12T19:38:12.95456"
+ },
+ "cram_to_bam_index_versions": {
+ "content": [
+ [
+ "versions.yml:md5,4ea32c57d546102a1b32d9693ada7cf1"
+ ]
+ ],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "24.01.0"
+ },
+ "timestamp": "2024-02-13T16:12:55.910685496"
+ },
+ "cram_to_bam_bai": {
+ "content": [
+ [
+
+ ]
+ ],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "23.04.3"
+ },
+ "timestamp": "2024-02-12T19:38:04.98601"
+ },
+ "cram_to_bam_versions": {
+ "content": [
+ [
+ "versions.yml:md5,4ea32c57d546102a1b32d9693ada7cf1"
+ ]
+ ],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "24.01.0"
+ },
+ "timestamp": "2024-02-13T16:12:47.715221169"
+ },
+ "cram_bam": {
+ "content": [
+ [
+
+ ]
+ ],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "23.04.3"
+ },
+ "timestamp": "2024-02-12T19:37:56.495512"
+ },
+ "bam_stub_cram": {
+ "content": [
+ [
+
+ ]
+ ],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "23.04.3"
+ },
+ "timestamp": "2024-02-12T19:38:32.076908"
+ },
+ "cram_to_bam_index_qname_bai": {
+ "content": [
+ [
+
+ ]
+ ],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "23.04.3"
+ },
+ "timestamp": "2024-02-12T19:38:23.328458"
+ },
+ "cram_to_bam_index_qname_crai": {
+ "content": [
+ [
+
+ ]
+ ],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "23.04.3"
+ },
+ "timestamp": "2024-02-12T19:38:23.330789"
+ },
+ "cram_bai": {
+ "content": [
+ [
+
+ ]
+ ],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "23.04.3"
+ },
+ "timestamp": "2024-02-12T19:37:56.493129"
+ },
+ "bam_stub_crai": {
+ "content": [
+ [
+
+ ]
+ ],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "23.04.3"
+ },
+ "timestamp": "2024-02-12T19:38:32.074313"
+ },
+ "cram_to_bam_index_qname_bam": {
+ "content": [
+ "test.bam"
+ ],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "23.04.3"
+ },
+ "timestamp": "2024-02-12T19:38:23.322874"
+ },
+ "bam_versions": {
+ "content": [
+ [
+ "versions.yml:md5,4ea32c57d546102a1b32d9693ada7cf1"
+ ]
+ ],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "24.01.0"
+ },
+ "timestamp": "2024-02-13T16:12:31.692607421"
+ },
+ "cram_to_bam_index_qname_cram": {
+ "content": [
+ [
+
+ ]
+ ],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "23.04.3"
+ },
+ "timestamp": "2024-02-12T19:38:23.333248"
+ },
+ "bam_crai": {
+ "content": [
+ [
+
+ ]
+ ],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "23.04.3"
+ },
+ "timestamp": "2024-02-12T19:37:51.259774"
+ },
+ "bam_cram": {
+ "content": [
+ [
+
+ ]
+ ],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "23.04.3"
+ },
+ "timestamp": "2024-02-12T19:37:51.261287"
+ },
+ "cram_to_bam_csi": {
+ "content": [
+ [
+
+ ]
+ ],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "23.04.3"
+ },
+ "timestamp": "2024-02-12T19:38:04.995454"
+ },
+ "cram_sam": {
+ "content": [
+ [
+
+ ]
+ ],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "23.04.3"
+ },
+ "timestamp": "2024-02-12T19:37:56.502625"
+ },
+ "cram_versions": {
+ "content": [
+ [
+ "versions.yml:md5,4ea32c57d546102a1b32d9693ada7cf1"
+ ]
+ ],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "24.01.0"
+ },
+ "timestamp": "2024-02-13T16:12:39.913411036"
+ },
+ "bam_sam": {
+ "content": [
+ [
+
+ ]
+ ],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "23.04.3"
+ },
+ "timestamp": "2024-02-12T19:37:51.264651"
+ },
+ "cram_to_bam_index_bai": {
+ "content": [
+ [
+
+ ]
+ ],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "23.04.3"
+ },
+ "timestamp": "2024-02-12T19:38:12.962863"
+ },
+ "cram_to_bam_index_qname_sam": {
+ "content": [
+ [
+
+ ]
+ ],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "23.04.3"
+ },
+ "timestamp": "2024-02-12T19:38:23.337634"
+ },
+ "bam_stub_csi": {
+ "content": [
+ "test.csi"
+ ],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "23.04.3"
+ },
+ "timestamp": "2024-02-12T19:38:32.068596"
+ }
+}
\ No newline at end of file
diff --git a/modules/nf-core/samtools/view/tests/tags.yml b/modules/nf-core/samtools/view/tests/tags.yml
new file mode 100644
index 000000000..4fdf1dd12
--- /dev/null
+++ b/modules/nf-core/samtools/view/tests/tags.yml
@@ -0,0 +1,2 @@
+samtools/view:
+ - "modules/nf-core/samtools/view/**"
diff --git a/modules/nf-core/star/align/environment.yml b/modules/nf-core/star/align/environment.yml
index 6db209884..8bd58cff5 100644
--- a/modules/nf-core/star/align/environment.yml
+++ b/modules/nf-core/star/align/environment.yml
@@ -5,5 +5,6 @@ channels:
- defaults
dependencies:
- bioconda::star=2.7.10a
- - bioconda::samtools=1.16.1
+ - 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 cc4f5af52..8e9c48b1c 100644
--- a/modules/nf-core/star/align/main.nf
+++ b/modules/nf-core/star/align/main.nf
@@ -4,8 +4,8 @@ process STAR_ALIGN {
conda "${moduleDir}/environment.yml"
container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ?
- 'https://depot.galaxyproject.org/singularity/mulled-v2-1fa26d1ce03c295fe2fdcf85831a92fbcbd7e8c2:019f262d90511939dce2dca4b7c868fc108f73db-0' :
- 'biocontainers/mulled-v2-1fa26d1ce03c295fe2fdcf85831a92fbcbd7e8c2:019f262d90511939dce2dca4b7c868fc108f73db-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/tests/main.nf.test b/modules/nf-core/star/align/tests/main.nf.test
index 4c8784741..6ecd77863 100644
--- a/modules/nf-core/star/align/tests/main.nf.test
+++ b/modules/nf-core/star/align/tests/main.nf.test
@@ -7,39 +7,40 @@ nextflow_process {
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)]
- ])
- """
- }
+ 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'
@@ -74,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'
@@ -140,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'
@@ -206,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'
@@ -272,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/align/tests/main.nf.test.snap b/modules/nf-core/star/align/tests/main.nf.test.snap
index 59b735d44..08edb914b 100644
--- a/modules/nf-core/star/align/tests/main.nf.test.snap
+++ b/modules/nf-core/star/align/tests/main.nf.test.snap
@@ -11,7 +11,7 @@
]
]
],
- "timestamp": "2023-11-23T13:29:01.19639"
+ "timestamp": "2023-12-04T18:01:19.968225733"
},
"homo_sapiens - paired_end - multiple - wig": {
"content": [
@@ -33,7 +33,7 @@
]
]
],
- "timestamp": "2023-11-23T13:25:07.396223"
+ "timestamp": "2023-12-04T17:56:12.347549723"
},
"homo_sapiens - single_end - wig": {
"content": [
@@ -54,10 +54,10 @@
"homo_sapiens - paired_end - arriba - versions": {
"content": [
[
- "versions.yml:md5,452ef035aacbc68d47041e86279a9333"
+ "versions.yml:md5,2e6b6d8809f5a17f38f4d27c45dcb22f"
]
],
- "timestamp": "2023-11-23T13:25:07.494015"
+ "timestamp": "2023-12-04T17:56:12.431212643"
},
"homo_sapiens - paired_end - multiple - bedgraph": {
"content": [
@@ -74,7 +74,7 @@
]
]
],
- "timestamp": "2023-11-23T13:29:01.396383"
+ "timestamp": "2023-12-04T18:01:20.07119229"
},
"homo_sapiens - paired_end - read_per_gene_tab": {
"content": [
@@ -112,7 +112,7 @@
]
]
],
- "timestamp": "2023-11-23T13:25:07.348239"
+ "timestamp": "2023-12-04T17:56:12.268388251"
},
"homo_sapiens - single_end - sam": {
"content": [
@@ -133,10 +133,10 @@
"homo_sapiens - single_end - versions": {
"content": [
[
- "versions.yml:md5,452ef035aacbc68d47041e86279a9333"
+ "versions.yml:md5,2e6b6d8809f5a17f38f4d27c45dcb22f"
]
],
- "timestamp": "2023-11-23T13:22:55.259282"
+ "timestamp": "2023-12-04T17:53:26.664210196"
},
"homo_sapiens - paired_end - multiple - log_out": {
"content": [
@@ -172,7 +172,7 @@
]
]
],
- "timestamp": "2023-11-23T13:29:01.729175"
+ "timestamp": "2023-12-04T18:01:20.189486201"
},
"homo_sapiens - paired_end - starfusion - log_final": {
"content": [
@@ -214,7 +214,7 @@
]
]
],
- "timestamp": "2023-11-23T13:27:56.003675"
+ "timestamp": "2023-12-04T17:59:58.53235164"
},
"homo_sapiens - paired_end - arriba - junction": {
"content": [
@@ -239,7 +239,7 @@
]
]
],
- "timestamp": "2023-11-23T13:22:55.163495"
+ "timestamp": "2023-12-04T17:53:26.394863748"
},
"homo_sapiens - paired_end - arriba - read_per_gene_tab": {
"content": [
@@ -277,7 +277,7 @@
]
]
],
- "timestamp": "2023-11-23T13:23:33.265265"
+ "timestamp": "2023-12-04T17:54:11.934832258"
},
"homo_sapiens - paired_end - arriba - bam_transcript": {
"content": [
@@ -302,10 +302,10 @@
"homo_sapiens - paired_end - multiple - versions": {
"content": [
[
- "versions.yml:md5,452ef035aacbc68d47041e86279a9333"
+ "versions.yml:md5,2e6b6d8809f5a17f38f4d27c45dcb22f"
]
],
- "timestamp": "2023-11-23T13:29:01.937182"
+ "timestamp": "2023-12-04T18:01:20.393705142"
},
"homo_sapiens - paired_end - starfusion - bam_transcript": {
"content": [
@@ -327,7 +327,7 @@
]
]
],
- "timestamp": "2023-11-23T13:27:56.379367"
+ "timestamp": "2023-12-04T17:59:58.818041322"
},
"homo_sapiens - single_end - fastq": {
"content": [
@@ -349,7 +349,7 @@
]
]
],
- "timestamp": "2023-11-23T13:23:33.413683"
+ "timestamp": "2023-12-04T17:54:12.255481058"
},
"homo_sapiens - paired_end - starfusion - bedgraph": {
"content": [
@@ -370,10 +370,10 @@
"homo_sapiens - paired_end - versions": {
"content": [
[
- "versions.yml:md5,452ef035aacbc68d47041e86279a9333"
+ "versions.yml:md5,2e6b6d8809f5a17f38f4d27c45dcb22f"
]
],
- "timestamp": "2023-11-23T13:23:33.445323"
+ "timestamp": "2023-12-04T17:54:12.343840482"
},
"homo_sapiens - paired_end - multiple - tab": {
"content": [
@@ -387,7 +387,7 @@
]
]
],
- "timestamp": "2023-11-23T13:29:01.793129"
+ "timestamp": "2023-12-04T18:01:20.291692062"
},
"homo_sapiens - single_end - bam": {
"content": [
@@ -401,7 +401,7 @@
]
]
],
- "timestamp": "2023-11-23T13:22:55.128568"
+ "timestamp": "2023-12-04T17:53:26.265642675"
},
"homo_sapiens - paired_end - arriba - wig": {
"content": [
@@ -423,7 +423,7 @@
]
]
],
- "timestamp": "2023-11-23T13:23:33.354416"
+ "timestamp": "2023-12-04T17:54:12.126063825"
},
"homo_sapiens - paired_end - arriba - log_final": {
"content": [
@@ -459,7 +459,7 @@
]
]
],
- "timestamp": "2023-11-23T13:29:01.13168"
+ "timestamp": "2023-12-04T18:01:19.851247126"
},
"homo_sapiens - paired_end - multiple - fastq": {
"content": [
@@ -481,7 +481,7 @@
]
]
],
- "timestamp": "2023-11-23T13:22:55.134799"
+ "timestamp": "2023-12-04T17:53:26.335457371"
},
"homo_sapiens - paired_end - arriba - bam_sorted": {
"content": [
@@ -503,7 +503,7 @@
]
]
],
- "timestamp": "2023-11-23T13:27:56.228327"
+ "timestamp": "2023-12-04T17:59:58.641115828"
},
"homo_sapiens - single_end - tab": {
"content": [
@@ -517,15 +517,15 @@
]
]
],
- "timestamp": "2023-11-23T13:22:55.236346"
+ "timestamp": "2023-12-04T17:53:26.580593434"
},
"homo_sapiens - paired_end - starfusion - versions": {
"content": [
[
- "versions.yml:md5,452ef035aacbc68d47041e86279a9333"
+ "versions.yml:md5,2e6b6d8809f5a17f38f4d27c45dcb22f"
]
],
- "timestamp": "2023-11-23T13:27:56.460903"
+ "timestamp": "2023-12-04T17:59:58.907317103"
},
"homo_sapiens - paired_end - multiple - bam_unsorted": {
"content": [
@@ -556,7 +556,7 @@
]
]
],
- "timestamp": "2023-11-23T13:23:33.313258"
+ "timestamp": "2023-12-04T17:54:12.064121304"
},
"homo_sapiens - paired_end - starfusion - bam_unsorted": {
"content": [
@@ -600,7 +600,7 @@
]
]
],
- "timestamp": "2023-11-23T13:23:33.274809"
+ "timestamp": "2023-12-04T17:54:12.002180537"
},
"homo_sapiens - single_end - spl_junc_tab": {
"content": [
@@ -614,7 +614,7 @@
]
]
],
- "timestamp": "2023-11-23T13:22:55.226143"
+ "timestamp": "2023-12-04T17:53:26.50932751"
},
"homo_sapiens - paired_end - starfusion - spl_junc_tab": {
"content": [
@@ -628,7 +628,7 @@
]
]
],
- "timestamp": "2023-11-23T13:27:56.337072"
+ "timestamp": "2023-12-04T17:59:58.731699486"
},
"homo_sapiens - single_end - log_out": {
"content": [
@@ -706,7 +706,7 @@
]
]
],
- "timestamp": "2023-11-23T13:23:33.398603"
+ "timestamp": "2023-12-04T17:54:12.185730856"
},
"homo_sapiens - paired_end - starfusion - sam": {
"content": [
@@ -728,7 +728,7 @@
]
]
],
- "timestamp": "2023-11-23T13:25:06.887604"
+ "timestamp": "2023-12-04T17:56:12.190560178"
},
"homo_sapiens - single_end - log_progress": {
"content": [
@@ -742,7 +742,7 @@
]
]
],
- "timestamp": "2023-11-23T13:22:55.195544"
+ "timestamp": "2023-12-04T17:53:26.450352138"
},
"homo_sapiens - paired_end - starfusion - wig": {
"content": [
diff --git a/modules/nf-core/star/genomegenerate/environment.yml b/modules/nf-core/star/genomegenerate/environment.yml
index 0b35ff518..791f255e5 100644
--- a/modules/nf-core/star/genomegenerate/environment.yml
+++ b/modules/nf-core/star/genomegenerate/environment.yml
@@ -4,6 +4,7 @@ channels:
- bioconda
- defaults
dependencies:
+ - bioconda::samtools=1.18
+ - bioconda::htslib=1.18
- bioconda::star=2.7.10a
- - bioconda::samtools=1.16.1
- 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 d20618443..b8855715b 100644
--- a/modules/nf-core/star/genomegenerate/main.nf
+++ b/modules/nf-core/star/genomegenerate/main.nf
@@ -4,8 +4,8 @@ process STAR_GENOMEGENERATE {
conda "${moduleDir}/environment.yml"
container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ?
- 'https://depot.galaxyproject.org/singularity/mulled-v2-1fa26d1ce03c295fe2fdcf85831a92fbcbd7e8c2:019f262d90511939dce2dca4b7c868fc108f73db-0' :
- 'biocontainers/mulled-v2-1fa26d1ce03c295fe2fdcf85831a92fbcbd7e8c2:019f262d90511939dce2dca4b7c868fc108f73db-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/tests/main.nf.test b/modules/nf-core/star/genomegenerate/tests/main.nf.test
index eed82926f..c17c8ba45 100644
--- a/modules/nf-core/star/genomegenerate/tests/main.nf.test
+++ b/modules/nf-core/star/genomegenerate/tests/main.nf.test
@@ -8,18 +8,18 @@ nextflow_process {
tag "star"
tag "star/genomegenerate"
- test("homo_sapiens") {
+ test("fasta_gtf") {
when {
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) ]
])
"""
}
@@ -28,11 +28,88 @@ nextflow_process {
then {
assertAll(
{ assert process.success },
- { assert snapshot(file(process.out.index[0][1]).name).match("index") },
- { assert snapshot(process.out.versions).match("versions") }
+ { 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.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) ]
+ ])
+ """
+ }
+ }
+
+ 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.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([
+ [ id:'test_fasta' ],
+ [ 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") }
)
}
}
-}
\ No newline at end of file
+}
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 bd4e0caa6..5653d6e6c 100644
--- a/modules/nf-core/star/genomegenerate/tests/main.nf.test.snap
+++ b/modules/nf-core/star/genomegenerate/tests/main.nf.test.snap
@@ -1,16 +1,90 @@
{
- "versions": {
+ "fasta_gtf_versions": {
"content": [
[
- "versions.yml:md5,9c11319b80fdedc90dadce4e0fb42ded"
+ "versions.yml:md5,46b8f1f34bb7f23892cd1eb249ed4d7f"
]
],
- "timestamp": "2023-11-23T11:18:14.835118"
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "23.04.3"
+ },
+ "timestamp": "2024-02-01T15:54:31.798555"
},
- "index": {
+ "fasta_stub_versions": {
"content": [
- "star"
+ [
+ "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]"
],
- "timestamp": "2023-11-23T11:31:47.560528"
+ "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/stringtie/merge/tests/main.nf.test b/modules/nf-core/stringtie/merge/tests/main.nf.test
index 90368134b..358c561a0 100644
--- a/modules/nf-core/stringtie/merge/tests/main.nf.test
+++ b/modules/nf-core/stringtie/merge/tests/main.nf.test
@@ -7,30 +7,30 @@ nextflow_process {
tag "modules_nfcore"
tag "stringtie"
tag "stringtie/merge"
+ tag "stringtie/stringtie"
- test("homo_sapiens - forward strandedness") {
-
- setup {
- run("STRINGTIE_STRINGTIE") {
- script "../../stringtie/main.nf"
- process {
- """
- input[0] = [
- [ id:'test', strandedness:'forward' ], // meta map
- [ file(params.test_data['homo_sapiens']['illumina']['test_paired_end_sorted_bam'], checkIfExists: true) ]
- ]
- input[1] = file(params.test_data['homo_sapiens']['genome']['genome_gtf'], checkIfExists: true)
- """
- }
+ setup {
+ run("STRINGTIE_STRINGTIE") {
+ script "../../stringtie/main.nf"
+ process {
+ """
+ input[0] = [
+ [ id:'test', strandedness:'reverse' ], // meta map
+ [ file(params.modules_testdata_base_path + "genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam", checkIfExists: true) ]
+ ]
+ input[1] = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.gtf', checkIfExists: true)
+ """
}
-
}
+ }
+
+ test("homo_sapiens - forward strandedness") {
when {
process {
"""
input[0] = STRINGTIE_STRINGTIE.out.transcript_gtf.map { it -> it[1] }
- input[1] = file(params.test_data['homo_sapiens']['genome']['genome_gtf'], checkIfExists: true)
+ input[1] = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.gtf', checkIfExists: true)
"""
}
}
@@ -46,22 +46,6 @@ nextflow_process {
test("homo_sapiens - reverse strandedness") {
- setup {
- run("STRINGTIE_STRINGTIE") {
- script "../../stringtie/main.nf"
- process {
- """
- input[0] = [
- [ id:'test', strandedness:'reverse' ], // meta map
- [ file(params.test_data['homo_sapiens']['illumina']['test_paired_end_sorted_bam'], checkIfExists: true) ]
- ]
- input[1] = file(params.test_data['homo_sapiens']['genome']['genome_gtf'], checkIfExists: true)
- """
- }
- }
-
- }
-
when {
process {
"""
diff --git a/modules/nf-core/stringtie/merge/tests/main.nf.test.snap b/modules/nf-core/stringtie/merge/tests/main.nf.test.snap
index 3e4bc68f6..e10406964 100644
--- a/modules/nf-core/stringtie/merge/tests/main.nf.test.snap
+++ b/modules/nf-core/stringtie/merge/tests/main.nf.test.snap
@@ -5,6 +5,10 @@
"versions.yml:md5,b73d45fdebf4c8c446bb01817db1665d"
]
],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "23.10.1"
+ },
"timestamp": "2023-11-23T14:14:39.697712988"
},
"rs_gtf": {
@@ -13,15 +17,23 @@
"stringtie.merged.gtf:md5,6da479298d73d5b3216d4e1576a2bdf4"
]
],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "23.10.1"
+ },
"timestamp": "2023-11-23T14:14:39.691894799"
},
"fs_gtf": {
"content": [
[
- "stringtie.merged.gtf:md5,d959eb2fab0db48ded7275e0a2e83c05"
+ "stringtie.merged.gtf:md5,6da479298d73d5b3216d4e1576a2bdf4"
]
],
- "timestamp": "2023-11-23T14:14:20.872841278"
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "23.10.1"
+ },
+ "timestamp": "2024-02-07T16:43:48.130184"
},
"fs_versions": {
"content": [
@@ -29,6 +41,10 @@
"versions.yml:md5,b73d45fdebf4c8c446bb01817db1665d"
]
],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "23.10.1"
+ },
"timestamp": "2023-11-23T14:14:20.883140097"
}
}
\ 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 68786b745..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.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] = []
"""
}
@@ -24,24 +26,26 @@ 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 {
"""
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)
"""
}
}
@@ -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.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] = []
"""
}
@@ -73,35 +79,37 @@ 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.test_data['sarscov2']['illumina']['test_paired_end_sorted_bam'], checkIfExists: true) ]
- ]
- input[1] = file(params.test_data['sarscov2']['genome']['genome_gtf'], 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/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") }
+ { 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 = ''
+ }
+}
diff --git a/subworkflows/local/arriba_workflow.nf b/subworkflows/local/arriba_workflow.nf
index f59018dc9..3cb8d6ac4 100644
--- a/subworkflows/local/arriba_workflow.nf
+++ b/subworkflows/local/arriba_workflow.nf
@@ -1,4 +1,4 @@
-include { ARRIBA } from '../../modules/nf-core/arriba/main'
+include { ARRIBA_ARRIBA } from '../../modules/nf-core/arriba/main'
include { SAMTOOLS_INDEX as SAMTOOLS_INDEX_FOR_ARRIBA} from '../../modules/nf-core/samtools/index/main'
include { SAMTOOLS_SORT as SAMTOOLS_SORT_FOR_ARRIBA} from '../../modules/nf-core/samtools/sort/main'
include { SAMTOOLS_VIEW as SAMTOOLS_VIEW_FOR_ARRIBA} from '../../modules/nf-core/samtools/view/main'
@@ -28,16 +28,16 @@ workflow ARRIBA_WORKFLOW {
.map { meta, reads, fusions -> [ meta, fusions ] }
ch_arriba_fusion_fail = ch_dummy_file
} else {
- ARRIBA ( STAR_FOR_ARRIBA.out.bam, ch_fasta, ch_gtf, ch_arriba_ref_blacklist, ch_arriba_ref_known_fusions, [[],[]], [[],[]], ch_arriba_ref_protein_domains )
- ch_versions = ch_versions.mix(ARRIBA.out.versions)
+ ARRIBA_ARRIBA ( STAR_FOR_ARRIBA.out.bam, ch_fasta, ch_gtf, ch_arriba_ref_blacklist, ch_arriba_ref_known_fusions, [[],[]], [[],[]], ch_arriba_ref_protein_domains )
+ ch_versions = ch_versions.mix(ARRIBA_ARRIBA.out.versions)
- ch_arriba_fusions = ARRIBA.out.fusions
- ch_arriba_fusion_fail = ARRIBA.out.fusions_fail.map{ meta, file -> return file}
+ ch_arriba_fusions = ARRIBA_ARRIBA.out.fusions
+ ch_arriba_fusion_fail = ARRIBA_ARRIBA.out.fusions_fail.map{ meta, file -> return file}
}
if (params.cram.contains('arriba') ){
- SAMTOOLS_SORT_FOR_ARRIBA(STAR_FOR_ARRIBA.out.bam)
+ SAMTOOLS_SORT_FOR_ARRIBA(STAR_FOR_ARRIBA.out.bam, ch_fasta)
ch_versions = ch_versions.mix(SAMTOOLS_SORT_FOR_ARRIBA.out.versions )
SAMTOOLS_VIEW_FOR_ARRIBA(SAMTOOLS_SORT_FOR_ARRIBA.out.bam.map { meta, bam -> [ meta, bam, [] ] }, ch_fasta, [])
diff --git a/workflows/build_references.nf b/workflows/build_references.nf
index 7847dd055..bd985e4fb 100644
--- a/workflows/build_references.nf
+++ b/workflows/build_references.nf
@@ -4,7 +4,7 @@
========================================================================================
*/
-include { ARRIBA_DOWNLOAD } from '../modules/local/arriba/download/main'
+include { ARRIBA_DOWNLOAD } from '../modules/nf-core/arriba/download/main'
include { ENSEMBL_DOWNLOAD } from '../modules/local/ensembl/main'
include { FUSIONCATCHER_DOWNLOAD } from '../modules/local/fusioncatcher/download/main'
include { FUSIONREPORT_DOWNLOAD } from '../modules/local/fusionreport/download/main'
From 213382715db3a90bdab4b9a9c736e29150f1ba17 Mon Sep 17 00:00:00 2001
From: Annick Renevey <47788523+rannick@users.noreply.github.com>
Date: Wed, 10 Apr 2024 13:00:08 +0200
Subject: [PATCH 003/887] fix path
---
subworkflows/local/arriba_workflow.nf | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/subworkflows/local/arriba_workflow.nf b/subworkflows/local/arriba_workflow.nf
index 3cb8d6ac4..ce142a749 100644
--- a/subworkflows/local/arriba_workflow.nf
+++ b/subworkflows/local/arriba_workflow.nf
@@ -1,4 +1,4 @@
-include { ARRIBA_ARRIBA } from '../../modules/nf-core/arriba/main'
+include { ARRIBA_ARRIBA } from '../../modules/nf-core/arriba/arriba/main'
include { SAMTOOLS_INDEX as SAMTOOLS_INDEX_FOR_ARRIBA} from '../../modules/nf-core/samtools/index/main'
include { SAMTOOLS_SORT as SAMTOOLS_SORT_FOR_ARRIBA} from '../../modules/nf-core/samtools/sort/main'
include { SAMTOOLS_VIEW as SAMTOOLS_VIEW_FOR_ARRIBA} from '../../modules/nf-core/samtools/view/main'
From a8f87e7fcf812780646e26b14703cff5e777bf1f Mon Sep 17 00:00:00 2001
From: Annick Renevey <47788523+rannick@users.noreply.github.com>
Date: Wed, 10 Apr 2024 13:07:05 +0200
Subject: [PATCH 004/887] add latest zenodo
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 58189dc64..b418192ac 100644
--- a/README.md
+++ b/README.md
@@ -6,7 +6,7 @@
[](https://github.com/nf-core/rnafusion/actions/workflows/ci.yml)
-[](https://github.com/nf-core/rnafusion/actions/workflows/linting.yml)[](https://nf-co.re/rnafusion/results)[](https://doi.org/10.5281/zenodo.XXXXXXX)
+[](https://github.com/nf-core/rnafusion/actions/workflows/linting.yml)[](https://nf-co.re/rnafusion/results)[](https://doi.org/10.5281/zenodo.2565517)
[](https://www.nf-test.com)
[](https://www.nextflow.io/)
From 6c0645a2c121dd96e86e8bc745ab8b78c724a1c0 Mon Sep 17 00:00:00 2001
From: Annick Renevey <47788523+rannick@users.noreply.github.com>
Date: Wed, 10 Apr 2024 13:21:01 +0200
Subject: [PATCH 005/887] remove TODOs
---
subworkflows/local/utils_nfcore_rnafusion_pipeline/main.nf | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/subworkflows/local/utils_nfcore_rnafusion_pipeline/main.nf b/subworkflows/local/utils_nfcore_rnafusion_pipeline/main.nf
index 3a02b058b..3aee5fc24 100644
--- a/subworkflows/local/utils_nfcore_rnafusion_pipeline/main.nf
+++ b/subworkflows/local/utils_nfcore_rnafusion_pipeline/main.nf
@@ -183,7 +183,6 @@ def genomeExistsError() {
// 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 = [
@@ -197,7 +196,6 @@ def toolCitationText() {
}
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 = [
@@ -222,7 +220,7 @@ def methodsDescriptionText(mqc_methods_yaml) {
meta["tool_citations"] = ""
meta["tool_bibliography"] = ""
- // TODO nf-core: Only uncomment below if logic in toolCitationText/toolBibliographyText has been filled!
+ // nf-core: Only uncomment below if logic in toolCitationText/toolBibliographyText has been filled!
// meta["tool_citations"] = toolCitationText().replaceAll(", \\.", ".").replaceAll("\\. \\.", ".").replaceAll(", \\.", ".")
// meta["tool_bibliography"] = toolBibliographyText()
From 0443c44576219718c3474711ff83db4081233185 Mon Sep 17 00:00:00 2001
From: Annick Renevey <47788523+rannick@users.noreply.github.com>
Date: Wed, 10 Apr 2024 13:28:56 +0200
Subject: [PATCH 006/887] update starfusion
---
modules/local/fusioninspector/main.nf | 4 ++--
modules/local/starfusion/build/main.nf | 4 ++--
modules/local/starfusion/detect/main.nf | 4 ++--
modules/local/starfusion/download/main.nf | 4 ++--
4 files changed, 8 insertions(+), 8 deletions(-)
diff --git a/modules/local/fusioninspector/main.nf b/modules/local/fusioninspector/main.nf
index c7fcd3f04..2f99c7111 100644
--- a/modules/local/fusioninspector/main.nf
+++ b/modules/local/fusioninspector/main.nf
@@ -2,8 +2,8 @@ process FUSIONINSPECTOR {
tag "$meta.id"
label 'process_high'
- conda "bioconda::dfam=3.3 bioconda::hmmer=3.3.2 bioconda::star-fusion=1.12.0 bioconda::samtools=1.9 bioconda::star=2.7.8a"
- container 'docker.io/trinityctat/starfusion:1.12.0'
+ conda "bioconda::dfam=3.7 bioconda::hmmer=3.4 bioconda::star-fusion=1.13.0 bioconda::trinity=2.15.1 bioconda::samtools=1.19.2 bioconda::star=2.7.11b"
+ container 'docker.io/trinityctat/starfusion:1.13.0'
input:
tuple val(meta), path(reads), path(fusion_list)
diff --git a/modules/local/starfusion/build/main.nf b/modules/local/starfusion/build/main.nf
index e2bd7879f..a768cc5c9 100644
--- a/modules/local/starfusion/build/main.nf
+++ b/modules/local/starfusion/build/main.nf
@@ -1,8 +1,8 @@
process STARFUSION_BUILD {
tag 'star-fusion'
- conda "bioconda::dfam=3.3 bioconda::hmmer=3.3.2 bioconda::star-fusion=1.12.0 bioconda::trinity=2.13.2 bioconda::samtools=1.9 bioconda::star=2.7.8a"
- container "docker.io/trinityctat/starfusion:1.12.0"
+ conda "bioconda::dfam=3.7 bioconda::hmmer=3.4 bioconda::star-fusion=1.13.0 bioconda::trinity=2.15.1 bioconda::samtools=1.19.2 bioconda::star=2.7.11b"
+ container "docker.io/trinityctat/starfusion:1.13.0"
input:
tuple val(meta), path(fasta)
diff --git a/modules/local/starfusion/detect/main.nf b/modules/local/starfusion/detect/main.nf
index 1994d5551..9a46cc00d 100644
--- a/modules/local/starfusion/detect/main.nf
+++ b/modules/local/starfusion/detect/main.nf
@@ -2,8 +2,8 @@ process STARFUSION {
tag "$meta.id"
label 'process_high'
- conda "bioconda::dfam=3.3 bioconda::hmmer=3.3.2 bioconda::star-fusion=1.12.0 bioconda::trinity=2.13.2 bioconda::samtools=1.9 bioconda::star=2.7.8a"
- container 'docker.io/trinityctat/starfusion:1.12.0'
+ conda "bioconda::dfam=3.7 bioconda::hmmer=3.4 bioconda::star-fusion=1.13.0 bioconda::trinity=2.15.1 bioconda::samtools=1.19.2 bioconda::star=2.7.11b"
+ container 'docker.io/trinityctat/starfusion:1.13.0'
input:
tuple val(meta), path(reads), path(junction)
diff --git a/modules/local/starfusion/download/main.nf b/modules/local/starfusion/download/main.nf
index 9c9b14827..221d12dd9 100644
--- a/modules/local/starfusion/download/main.nf
+++ b/modules/local/starfusion/download/main.nf
@@ -1,8 +1,8 @@
process STARFUSION_DOWNLOAD {
tag 'star-fusion'
- conda "bioconda::dfam=3.3 bioconda::hmmer=3.3.2 bioconda::star-fusion=1.12.0 bioconda::trinity=2.13.2 bioconda::samtools=1.9 bioconda::star=2.7.8a"
- container 'docker.io/trinityctat/starfusion:1.12.0'
+ conda "bioconda::dfam=3.7 bioconda::hmmer=3.4 bioconda::star-fusion=1.13.0 bioconda::trinity=2.15.1 bioconda::samtools=1.19.2 bioconda::star=2.7.11b"
+ container 'docker.io/trinityctat/starfusion:1.13.0'
output:
path "ctat_genome_lib_build_dir/*" , emit: reference
From 2c35b26ca16f88c5ad8ab79e2d5bf2c9442ec9c1 Mon Sep 17 00:00:00 2001
From: Annick Renevey <47788523+rannick@users.noreply.github.com>
Date: Fri, 12 Apr 2024 10:27:09 +0200
Subject: [PATCH 007/887] picard collectrnaseqmetrics to nf-core
---
modules.json | 14 +--
.../local/picard/collectrnaseqmetrics/main.nf | 68 -----------
.../picard/collectrnaseqmetrics/meta.yml | 53 ---------
modules/nf-core/agat/convertspgff2tsv/main.nf | 13 +-
.../agat/convertspgff2tsv/tests/main.nf.test | 61 ++++++++++
.../convertspgff2tsv/tests/main.nf.test.snap | 40 +++++++
.../agat/convertspgff2tsv/tests/tags.yml | 2 +
modules/nf-core/arriba/arriba/main.nf | 6 +-
modules/nf-core/arriba/main.nf | 66 -----------
modules/nf-core/arriba/meta.yml | 111 ------------------
.../collectrnaseqmetrics/environment.yml | 7 ++
.../picard/collectrnaseqmetrics/main.nf | 62 ++++++++++
.../picard/collectrnaseqmetrics/meta.yml | 61 ++++++++++
subworkflows/local/qc_workflow.nf | 5 +-
workflows/rnafusion.nf | 1 -
15 files changed, 258 insertions(+), 312 deletions(-)
delete mode 100644 modules/local/picard/collectrnaseqmetrics/main.nf
delete mode 100644 modules/local/picard/collectrnaseqmetrics/meta.yml
create mode 100644 modules/nf-core/agat/convertspgff2tsv/tests/main.nf.test
create mode 100644 modules/nf-core/agat/convertspgff2tsv/tests/main.nf.test.snap
create mode 100644 modules/nf-core/agat/convertspgff2tsv/tests/tags.yml
delete mode 100644 modules/nf-core/arriba/main.nf
delete mode 100644 modules/nf-core/arriba/meta.yml
create mode 100644 modules/nf-core/picard/collectrnaseqmetrics/environment.yml
create mode 100644 modules/nf-core/picard/collectrnaseqmetrics/main.nf
create mode 100644 modules/nf-core/picard/collectrnaseqmetrics/meta.yml
diff --git a/modules.json b/modules.json
index f14cf897a..1b751b9e8 100644
--- a/modules.json
+++ b/modules.json
@@ -7,17 +7,12 @@
"nf-core": {
"agat/convertspgff2tsv": {
"branch": "master",
- "git_sha": "3f5420aa22e00bd030a2556dfdffc9e164ec0ec5",
- "installed_by": ["modules"]
- },
- "arriba": {
- "branch": "master",
- "git_sha": "3f5420aa22e00bd030a2556dfdffc9e164ec0ec5",
+ "git_sha": "9198082dcec6d8374c0bf3d7e38dd1f79d4601a7",
"installed_by": ["modules"]
},
"arriba/arriba": {
"branch": "master",
- "git_sha": "3f5420aa22e00bd030a2556dfdffc9e164ec0ec5",
+ "git_sha": "bbaeb3a3149def237b9d0acb9ab749ae98088e29",
"installed_by": ["modules"]
},
"arriba/download": {
@@ -70,6 +65,11 @@
"git_sha": "20b0918591d4ba20047d7e13e5094bcceba81447",
"installed_by": ["modules"]
},
+ "picard/collectrnaseqmetrics": {
+ "branch": "master",
+ "git_sha": "20b0918591d4ba20047d7e13e5094bcceba81447",
+ "installed_by": ["modules"]
+ },
"picard/collectwgsmetrics": {
"branch": "master",
"git_sha": "20b0918591d4ba20047d7e13e5094bcceba81447",
diff --git a/modules/local/picard/collectrnaseqmetrics/main.nf b/modules/local/picard/collectrnaseqmetrics/main.nf
deleted file mode 100644
index ede593e0e..000000000
--- a/modules/local/picard/collectrnaseqmetrics/main.nf
+++ /dev/null
@@ -1,68 +0,0 @@
-process PICARD_COLLECTRNASEQMETRICS {
- tag "$meta.id"
- label 'process_medium'
-
- conda "bioconda::picard=3.1.0"
- container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ?
- 'https://depot.galaxyproject.org/singularity/picard:3.1.0--hdfd78af_0' :
- 'biocontainers/picard:3.1.0--hdfd78af_0' }"
-
- input:
- tuple val(meta), path(bam), path(bai)
- tuple val(meta2), path(refflat)
- tuple val(meta3), path(rrna_intervals)
-
- output:
- tuple val(meta), path("*rna_metrics.txt") , emit: metrics
- path "versions.yml" , emit: versions
-
- when:
- task.ext.when == null || task.ext.when
-
- script:
- def strandedness = ''
- // def strandedness = '--STRAND_SPECIFICITY FIRST_READ_TRANSCRIPTION_STRAND'
- if ("${meta.strandedness}" == 'forward') {
- strandedness = '--STRAND_SPECIFICITY FIRST_READ_TRANSCRIPTION_STRAND'
- } else if ("${meta.strandedness}" == 'reverse') {
- strandedness = '--STRAND_SPECIFICITY SECOND_READ_TRANSCRIPTION_STRAND'
- } else {
- strandedness = '--STRAND_SPECIFICITY NONE'
- }
-
- def rrna = rrna_intervals == [] ? '' : "--RIBOSOMAL_INTERVALS ${rrna_intervals}"
- def args = task.ext.args ?: ''
- def prefix = task.ext.prefix ?: "${meta.id}"
- def avail_mem = 3072
- if (!task.memory) {
- log.info '[Picard CollectRnaMetrics] Available memory not known - defaulting to 3GB. Specify process memory requirements to change this.'
- } else {
- avail_mem = (task.memory.mega*0.8).intValue()
- }
- """
- picard \\
- -Xmx${avail_mem}M \\
- CollectRnaSeqMetrics \\
- --TMP_DIR ./tmp \\
- ${strandedness} \\
- ${rrna} \\
- --REF_FLAT ${refflat} \\
- --INPUT ${bam} \\
- --OUTPUT ${prefix}_rna_metrics.txt \\
-
- cat <<-END_VERSIONS > versions.yml
- "${task.process}":
- picard: \$(picard CollectRnaMetrics --version 2>&1 | grep -o 'Version.*' | cut -f2- -d:)
- END_VERSIONS
- """
-
- stub:
- def prefix = task.ext.prefix ?: "${meta.id}"
- """
- touch ${prefix}_rna_metrics.txt
- cat <<-END_VERSIONS > versions.yml
- "${task.process}":
- picard: \$(picard CollectRnaMetrics --version 2>&1 | grep -o 'Version.*' | cut -f2- -d:)
- END_VERSIONS
- """
-}
diff --git a/modules/local/picard/collectrnaseqmetrics/meta.yml b/modules/local/picard/collectrnaseqmetrics/meta.yml
deleted file mode 100644
index 0cae7d07a..000000000
--- a/modules/local/picard/collectrnaseqmetrics/meta.yml
+++ /dev/null
@@ -1,53 +0,0 @@
-name: picard_collectrnaseqmetrics
-description: Produces RNA alignment metrics for a SAM or BAM file.
-keywords:
- - alignment
- - metrics
- - statistics
- - quality
- - bam
- - RNA
-tools:
- - picard:
- description: |
- A set of command line tools (in Java) for manipulating high-throughput sequencing (HTS)
- data and formats such as SAM/BAM/CRAM and VCF.
- homepage: https://broadinstitute.github.io/picard/
- documentation: https://broadinstitute.github.io/picard/
- licence: ["MIT"]
-input:
- - meta:
- type: map
- description: |
- Groovy Map containing sample information
- e.g. [ id:'test', single_end:false ]
- - bam:
- type: file
- description: BAM file
- pattern: "*.{bam}"
- - bai:
- type: file
- description: An optional BAM index file. If desired, --CREATE_INDEX must be passed as a flag
- pattern: "*.{bai}"
- - refflat:
- type: file
- description: Gene annotations in refFlat form
- - rrna_intervals:
- type: file
- description: Location of rRNA sequences in genome, in interval_list format
-output:
- - meta:
- type: map
- description: |
- Groovy Map containing sample information
- e.g. [ id:'test', single_end:false ]
- - metrics:
- type: file
- description: Alignment metrics files generated by picard
- pattern: "*_{metrics}"
- - versions:
- type: file
- description: File containing software versions
- pattern: "versions.yml"
-authors:
- - "@rannick"
diff --git a/modules/nf-core/agat/convertspgff2tsv/main.nf b/modules/nf-core/agat/convertspgff2tsv/main.nf
index cef483600..5cded33ef 100644
--- a/modules/nf-core/agat/convertspgff2tsv/main.nf
+++ b/modules/nf-core/agat/convertspgff2tsv/main.nf
@@ -20,7 +20,6 @@ process AGAT_CONVERTSPGFF2TSV {
script:
def args = task.ext.args ?: ''
def prefix = task.ext.prefix ?: "${meta.id}"
-
"""
agat_convert_sp_gff2tsv.pl \\
--gff $gff \\
@@ -32,4 +31,16 @@ process AGAT_CONVERTSPGFF2TSV {
agat: \$(agat_convert_sp_gff2tsv.pl --help | sed '3!d; s/.*v//' | sed 's/ .*//')
END_VERSIONS
"""
+
+ stub:
+ def args = task.ext.args ?: ''
+ def prefix = task.ext.prefix ?: "${meta.id}"
+ """
+ touch ${prefix}.tsv
+
+ cat <<-END_VERSIONS > versions.yml
+ "${task.process}":
+ agat: \$(agat_convert_sp_gff2tsv.pl --help | sed '3!d; s/.*v//' | sed 's/ .*//')
+ END_VERSIONS
+ """
}
diff --git a/modules/nf-core/agat/convertspgff2tsv/tests/main.nf.test b/modules/nf-core/agat/convertspgff2tsv/tests/main.nf.test
new file mode 100644
index 000000000..41239a588
--- /dev/null
+++ b/modules/nf-core/agat/convertspgff2tsv/tests/main.nf.test
@@ -0,0 +1,61 @@
+nextflow_process {
+
+ name "Test Process AGAT_CONVERTSPGFF2TSV"
+ script "../main.nf"
+ process "AGAT_CONVERTSPGFF2TSV"
+
+ tag "modules"
+ tag "modules_nfcore"
+ tag "agat"
+ tag "agat/convertspgff2tsv"
+
+ test("sarscov2 - genome [gff3]") {
+
+ when {
+ process {
+ """
+ // TODO nf-core: define inputs of the process here. Example:
+
+ input[0] = [
+ [ id: 'test' ], // meta map
+ file(params.test_data['sarscov2']['genome']['genome_gff3'], checkIfExists: true)
+ ]
+ """
+ }
+ }
+
+ then {
+ assertAll(
+ { assert process.success },
+ { assert snapshot(process.out).match() }
+ )
+ }
+
+ }
+
+ test("sarscov2 - genome [gff3] - stub") {
+
+ options "-stub"
+
+ when {
+ process {
+ """
+ input[0] = [
+ [ id: 'test' ], // meta map
+ file(params.test_data['sarscov2']['genome']['genome_gff3'], checkIfExists: true)
+ ]
+ """
+ }
+ }
+
+ then {
+ assertAll(
+ { assert process.success },
+ { assert snapshot(process.out.tsv.collect { file(it[1]).getName() } +
+ process.out.versions).match() }
+ )
+ }
+
+ }
+
+}
diff --git a/modules/nf-core/agat/convertspgff2tsv/tests/main.nf.test.snap b/modules/nf-core/agat/convertspgff2tsv/tests/main.nf.test.snap
new file mode 100644
index 000000000..cf21cd659
--- /dev/null
+++ b/modules/nf-core/agat/convertspgff2tsv/tests/main.nf.test.snap
@@ -0,0 +1,40 @@
+{
+ "sarscov2 - genome [gff3] - stub": {
+ "content": [
+ [
+ "test.tsv",
+ "versions.yml:md5,07ae8e1f648a67237a7efeafb551f01c"
+ ]
+ ],
+ "timestamp": "2023-12-24T23:55:30.786170144"
+ },
+ "sarscov2 - genome [gff3]": {
+ "content": [
+ {
+ "0": [
+ [
+ {
+ "id": "test"
+ },
+ "test.tsv:md5,e565b8ee5bc69b0625046a8036fda552"
+ ]
+ ],
+ "1": [
+ "versions.yml:md5,07ae8e1f648a67237a7efeafb551f01c"
+ ],
+ "tsv": [
+ [
+ {
+ "id": "test"
+ },
+ "test.tsv:md5,e565b8ee5bc69b0625046a8036fda552"
+ ]
+ ],
+ "versions": [
+ "versions.yml:md5,07ae8e1f648a67237a7efeafb551f01c"
+ ]
+ }
+ ],
+ "timestamp": "2023-12-24T23:55:20.642366893"
+ }
+}
\ No newline at end of file
diff --git a/modules/nf-core/agat/convertspgff2tsv/tests/tags.yml b/modules/nf-core/agat/convertspgff2tsv/tests/tags.yml
new file mode 100644
index 000000000..d2ee37213
--- /dev/null
+++ b/modules/nf-core/agat/convertspgff2tsv/tests/tags.yml
@@ -0,0 +1,2 @@
+agat/convertspgff2tsv:
+ - "modules/nf-core/agat/convertspgff2tsv/**"
diff --git a/modules/nf-core/arriba/arriba/main.nf b/modules/nf-core/arriba/arriba/main.nf
index a29a8d140..761d0bf35 100644
--- a/modules/nf-core/arriba/arriba/main.nf
+++ b/modules/nf-core/arriba/arriba/main.nf
@@ -60,7 +60,9 @@ process ARRIBA_ARRIBA {
echo stub > ${prefix}.fusions.tsv
echo stub > ${prefix}.fusions.discarded.tsv
- echo "${task.process}:" > versions.yml
- echo ' arriba: 2.2.1' >> versions.yml
+ cat <<-END_VERSIONS > versions.yml
+ "${task.process}":
+ arriba: \$(arriba -h | grep 'Version:' 2>&1 | sed 's/Version:\s//')
+ END_VERSIONS
"""
}
diff --git a/modules/nf-core/arriba/main.nf b/modules/nf-core/arriba/main.nf
deleted file mode 100644
index 2537d05b8..000000000
--- a/modules/nf-core/arriba/main.nf
+++ /dev/null
@@ -1,66 +0,0 @@
-process ARRIBA {
- tag "$meta.id"
- label 'process_medium'
-
- conda "bioconda::arriba=2.4.0"
- container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ?
- 'https://depot.galaxyproject.org/singularity/arriba:2.4.0--h0033a41_2' :
- 'biocontainers/arriba:2.4.0--h0033a41_2' }"
-
- input:
- tuple val(meta), path(bam)
- tuple val(meta2), path(fasta)
- tuple val(meta3), path(gtf)
- tuple val(meta4), path(blacklist)
- tuple val(meta5), path(known_fusions)
- tuple val(meta6), path(structural_variants)
- tuple val(meta7), path(tags)
- tuple val(meta8), path(protein_domains)
-
- output:
- tuple val(meta), path("*.fusions.tsv") , emit: fusions
- tuple val(meta), path("*.fusions.discarded.tsv"), emit: fusions_fail
- 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 blacklist = blacklist ? "-b $blacklist" : "-f blacklist"
- def known_fusions = known_fusions ? "-k $known_fusions" : ""
- def structural_variants = structural_variants ? "-d $structual_variants" : ""
- def tags = tags ? "-t $tags" : ""
- def protein_domains = protein_domains ? "-p $protein_domains" : ""
-
- """
- arriba \\
- -x $bam \\
- -a $fasta \\
- -g $gtf \\
- -o ${prefix}.fusions.tsv \\
- -O ${prefix}.fusions.discarded.tsv \\
- $blacklist \\
- $known_fusions \\
- $structural_variants \\
- $tags \\
- $protein_domains \\
- $args
-
- cat <<-END_VERSIONS > versions.yml
- "${task.process}":
- arriba: \$(arriba -h | grep 'Version:' 2>&1 | sed 's/Version:\s//')
- END_VERSIONS
- """
-
- stub:
- def prefix = task.ext.prefix ?: "${meta.id}"
- """
- echo stub > ${prefix}.fusions.tsv
- echo stub > ${prefix}.fusions.discarded.tsv
-
- echo "${task.process}:" > versions.yml
- echo ' arriba: 2.2.1' >> versions.yml
- """
-}
diff --git a/modules/nf-core/arriba/meta.yml b/modules/nf-core/arriba/meta.yml
deleted file mode 100644
index 85b3a30b5..000000000
--- a/modules/nf-core/arriba/meta.yml
+++ /dev/null
@@ -1,111 +0,0 @@
-name: arriba
-description: Arriba is a command-line tool for the detection of gene fusions from RNA-Seq data.
-keywords:
- - fusion
- - arriba
- - detection
- - RNA-Seq
-tools:
- - arriba:
- description: Fast and accurate gene fusion detection from RNA-Seq data
- homepage: https://github.com/suhrig/arriba
- documentation: https://arriba.readthedocs.io/en/latest/
- tool_dev_url: https://github.com/suhrig/arriba
- doi: "10.1101/gr.257246.119"
- licence: ["MIT"]
-
-input:
- - meta:
- type: map
- description: |
- Groovy Map containing sample information
- e.g. [ id:'test', single_end:false ]
- - bam:
- type: file
- description: BAM/CRAM/SAM file
- pattern: "*.{bam,cram,sam}"
- - meta2:
- type: map
- description: |
- Groovy Map containing reference information
- e.g. [ id:'test' ]
- - fasta:
- type: file
- description: Assembly FASTA file
- pattern: "*.{fasta}"
- - meta3:
- type: map
- description: |
- Groovy Map containing reference information
- e.g. [ id:'test' ]
- - gtf:
- type: file
- description: Annotation GTF file
- pattern: "*.{gtf}"
- - meta4:
- type: map
- description: |
- Groovy Map containing reference information
- e.g. [ id:'test' ]
- - blacklist:
- type: file
- description: Blacklist file
- pattern: "*.{tsv}"
- - meta5:
- type: map
- description: |
- Groovy Map containing reference information
- e.g. [ id:'test' ]
- - known_fusions:
- type: file
- description: Known fusions file
- pattern: "*.{tsv}"
- - meta6:
- type: map
- description: |
- Groovy Map containing reference information
- e.g. [ id:'test' ]
- - structural_variants:
- type: file
- description: Structural variants file
- pattern: "*.{tsv}"
- - meta7:
- type: map
- description: |
- Groovy Map containing reference information
- e.g. [ id:'test' ]
- - tags:
- type: file
- description: Tags file
- pattern: "*.{tsv}"
- - meta8:
- type: map
- description: |
- Groovy Map containing reference information
- e.g. [ id:'test' ]
- - protein_domains:
- type: file
- description: Protein domains file
- pattern: "*.{gff3}"
-
-output:
- - meta:
- type: map
- description: |
- Groovy Map containing sample information
- e.g. [ id:'test', single_end:false ]
- - versions:
- type: file
- description: File containing software versions
- pattern: "versions.yml"
- - fusions:
- type: file
- description: File contains fusions which pass all of Arriba's filters.
- pattern: "*.{fusions.tsv}"
- - fusions_fail:
- type: file
- description: File contains fusions that Arriba classified as an artifact or that are also observed in healthy tissue.
- pattern: "*.{fusions.discarded.tsv}"
-
-authors:
- - "@praveenraj2018,@rannick"
diff --git a/modules/nf-core/picard/collectrnaseqmetrics/environment.yml b/modules/nf-core/picard/collectrnaseqmetrics/environment.yml
new file mode 100644
index 000000000..542b2e823
--- /dev/null
+++ b/modules/nf-core/picard/collectrnaseqmetrics/environment.yml
@@ -0,0 +1,7 @@
+name: picard_collectrnaseqmetrics
+channels:
+ - conda-forge
+ - bioconda
+ - defaults
+dependencies:
+ - bioconda::picard=3.1.1
diff --git a/modules/nf-core/picard/collectrnaseqmetrics/main.nf b/modules/nf-core/picard/collectrnaseqmetrics/main.nf
new file mode 100644
index 000000000..f833a105c
--- /dev/null
+++ b/modules/nf-core/picard/collectrnaseqmetrics/main.nf
@@ -0,0 +1,62 @@
+process PICARD_COLLECTRNASEQMETRICS {
+ 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/picard:3.1.1--hdfd78af_0' :
+ 'biocontainers/picard:3.1.1--hdfd78af_0' }"
+
+ input:
+ tuple val(meta), path(bam)
+ path ref_flat
+ path fasta
+ path rrna_intervals
+
+ output:
+ tuple val(meta), path("*.rna_metrics") , emit: metrics
+ tuple val(meta), path("*.pdf") , emit: pdf, 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 reference = fasta ? "--REFERENCE_SEQUENCE ${fasta}" : ""
+ def rrna = rrna_intervals ? "--RIBOSOMAL_INTERVALS ${rrna_intervals}" : ""
+ def avail_mem = 3072
+ if (!task.memory) {
+ log.info '[Picard CollectRnaSeqMetrics] Available memory not known - defaulting to 3GB. Specify process memory requirements to change this.'
+ } else {
+ avail_mem = (task.memory.mega*0.8).intValue()
+ }
+ """
+ picard \\
+ -Xmx${avail_mem}M \\
+ CollectRnaSeqMetrics \\
+ $args \\
+ $reference \\
+ $rrna \\
+ --REF_FLAT $ref_flat \\
+ --INPUT $bam \\
+ --OUTPUT ${prefix}.rna_metrics
+
+ cat <<-END_VERSIONS > versions.yml
+ "${task.process}":
+ picard: \$(echo \$(picard CollectRnaSeqMetrics --version 2>&1) | grep -o 'Version:.*' | cut -f2- -d:)
+ END_VERSIONS
+ """
+
+ stub:
+ def prefix = task.ext.prefix ?: "${meta.id}"
+ """
+ touch ${prefix}.rna_metrics
+
+ cat <<-END_VERSIONS > versions.yml
+ "${task.process}":
+ picard: \$(echo \$(picard CollectRnaSeqMetrics --version 2>&1) | grep -o 'Version:.*' | cut -f2- -d:)
+ END_VERSIONS
+ """
+}
diff --git a/modules/nf-core/picard/collectrnaseqmetrics/meta.yml b/modules/nf-core/picard/collectrnaseqmetrics/meta.yml
new file mode 100644
index 000000000..8a7bd2346
--- /dev/null
+++ b/modules/nf-core/picard/collectrnaseqmetrics/meta.yml
@@ -0,0 +1,61 @@
+name: "picard_collectrnaseqmetrics"
+description: Collect metrics from a RNAseq BAM file
+keywords:
+ - rna
+ - bam
+ - metrics
+ - alignment
+ - statistics
+ - quality
+tools:
+ - "picard":
+ description: |
+ A set of command line tools (in Java) for manipulating high-throughput sequencing (HTS)
+ data and formats such as SAM/BAM/CRAM and VCF.
+ homepage: "https://broadinstitute.github.io/picard/"
+ documentation: "https://broadinstitute.github.io/picard/"
+ tool_dev_url: "https://github.com/broadinstitute/picard"
+ licence: ["MIT"]
+input:
+ - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false, strandedness:true ]
+ - bam:
+ type: file
+ description: BAM/SAM file
+ pattern: "*.{bam,sam}"
+ - ref_flat:
+ type: file
+ description: Genome ref_flat file
+ - gene_pred:
+ type: file
+ description: genome gene_pred file as an alternative to the ref_flat file
+ - fasta:
+ type: file
+ description: Genome fasta file
+ - rrna_intervals:
+ type: file
+ description: Interval file of ribosomal RNA regions
+output:
+ - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ - metrics:
+ type: file
+ description: RNA alignment metrics files generated by picard
+ pattern: "*.rna_metrics"
+ - pdf:
+ type: file
+ description: Plot normalized position vs. coverage in a pdf file generated by picard
+ - versions:
+ type: file
+ description: File containing software versions
+ pattern: "versions.yml"
+authors:
+ - "@anoronh4"
+maintainers:
+ - "@anoronh4"
diff --git a/subworkflows/local/qc_workflow.nf b/subworkflows/local/qc_workflow.nf
index 6b53358ad..689314671 100644
--- a/subworkflows/local/qc_workflow.nf
+++ b/subworkflows/local/qc_workflow.nf
@@ -2,14 +2,13 @@
// Check input samplesheet and get read channels
//
-include { PICARD_COLLECTRNASEQMETRICS } from '../../modules/local/picard/collectrnaseqmetrics/main'
+include { PICARD_COLLECTRNASEQMETRICS } from '../../modules/nf-core/picard/collectrnaseqmetrics/main'
include { GATK4_MARKDUPLICATES } from '../../modules/nf-core/gatk4/markduplicates/main'
include { PICARD_COLLECTINSERTSIZEMETRICS } from '../../modules/nf-core/picard/collectinsertsizemetrics/main'
workflow QC_WORKFLOW {
take:
ch_bam_sorted
- ch_bam_sorted_indexed
ch_chrgtf
ch_refflat
ch_fasta
@@ -19,7 +18,7 @@ workflow QC_WORKFLOW {
main:
ch_versions = Channel.empty()
- PICARD_COLLECTRNASEQMETRICS(ch_bam_sorted_indexed, ch_refflat, ch_rrna_interval)
+ PICARD_COLLECTRNASEQMETRICS(ch_bam_sorted, ch_refflat.map { meta, refflat -> [refflat]}, ch_rrna_interval.map { meta, rrna_interval -> [rrna_interval]})
ch_versions = ch_versions.mix(PICARD_COLLECTRNASEQMETRICS.out.versions)
ch_rnaseq_metrics = Channel.empty().mix(PICARD_COLLECTRNASEQMETRICS.out.metrics)
diff --git a/workflows/rnafusion.nf b/workflows/rnafusion.nf
index 7483f1be5..400df71aa 100644
--- a/workflows/rnafusion.nf
+++ b/workflows/rnafusion.nf
@@ -200,7 +200,6 @@ workflow RNAFUSION {
//QC
QC_WORKFLOW (
STARFUSION_WORKFLOW.out.ch_bam_sorted,
- STARFUSION_WORKFLOW.out.ch_bam_sorted_indexed,
ch_chrgtf,
ch_refflat,
ch_fasta,
From 20b8b1b9bd46555f0117585d516965c1a2d1d184 Mon Sep 17 00:00:00 2001
From: Annick Renevey <47788523+rannick@users.noreply.github.com>
Date: Fri, 12 Apr 2024 10:34:36 +0200
Subject: [PATCH 008/887] fix channels
---
subworkflows/local/qc_workflow.nf | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/subworkflows/local/qc_workflow.nf b/subworkflows/local/qc_workflow.nf
index 689314671..c13fd4940 100644
--- a/subworkflows/local/qc_workflow.nf
+++ b/subworkflows/local/qc_workflow.nf
@@ -18,7 +18,7 @@ workflow QC_WORKFLOW {
main:
ch_versions = Channel.empty()
- PICARD_COLLECTRNASEQMETRICS(ch_bam_sorted, ch_refflat.map { meta, refflat -> [refflat]}, ch_rrna_interval.map { meta, rrna_interval -> [rrna_interval]})
+ PICARD_COLLECTRNASEQMETRICS(ch_bam_sorted, ch_refflat.map { meta, refflat -> [refflat]}, ch_fasta.map { meta, fasta -> [fasta]}, ch_rrna_interval.map { meta, rrna_interval -> [rrna_interval]})
ch_versions = ch_versions.mix(PICARD_COLLECTRNASEQMETRICS.out.versions)
ch_rnaseq_metrics = Channel.empty().mix(PICARD_COLLECTRNASEQMETRICS.out.metrics)
From ba4396b045140592dfa5cb01235a7bc751cbcc99 Mon Sep 17 00:00:00 2001
From: Annick Renevey <47788523+rannick@users.noreply.github.com>
Date: Fri, 12 Apr 2024 11:05:49 +0200
Subject: [PATCH 009/887] use ucsc gtftogenepred from nf-core
---
conf/modules.config | 17 +++---
modules.json | 5 ++
.../local/uscs/custom_gtftogenepred/main.nf | 37 -------------
.../local/uscs/custom_gtftogenepred/meta.yml | 34 ------------
.../ucsc/gtftogenepred/environment.yml | 7 +++
modules/nf-core/ucsc/gtftogenepred/main.nf | 54 +++++++++++++++++++
modules/nf-core/ucsc/gtftogenepred/meta.yml | 47 ++++++++++++++++
workflows/build_references.nf | 6 +--
workflows/rnafusion.nf | 2 +-
9 files changed, 126 insertions(+), 83 deletions(-)
delete mode 100644 modules/local/uscs/custom_gtftogenepred/main.nf
delete mode 100644 modules/local/uscs/custom_gtftogenepred/meta.yml
create mode 100644 modules/nf-core/ucsc/gtftogenepred/environment.yml
create mode 100644 modules/nf-core/ucsc/gtftogenepred/main.nf
create mode 100644 modules/nf-core/ucsc/gtftogenepred/meta.yml
diff --git a/conf/modules.config b/conf/modules.config
index dfb660787..850703297 100644
--- a/conf/modules.config
+++ b/conf/modules.config
@@ -122,14 +122,6 @@ process {
]
}
- withName: 'GTF_TO_REFFLAT' {
- publishDir = [
- path: { "${params.genomes_base}/ensembl" },
- mode: params.publish_dir_mode,
- saveAs: { filename -> filename.equals('versions.yml') ? null : filename },
- ]
- }
-
withName: 'HGNC_DOWNLOAD' {
publishDir = [
path: { "${params.genomes_base}/hgnc" },
@@ -341,6 +333,15 @@ process {
]
}
+ withName: 'UCSC_GTFTOGENEPRED' {
+ ext.args = "-genePredExt -geneNameAsName2"
+ publishDir = [
+ path: { "${params.genomes_base}/ensembl" },
+ mode: params.publish_dir_mode,
+ saveAs: { filename -> filename.equals('versions.yml') ? null : filename },
+ ]
+ }
+
withName: 'VCF_COLLECT' {
ext.when = {!params.fusioninspector_only}
}
diff --git a/modules.json b/modules.json
index 1b751b9e8..21254e699 100644
--- a/modules.json
+++ b/modules.json
@@ -114,6 +114,11 @@
"branch": "master",
"git_sha": "b1b959609bda44341120aed1766329909f54b8d0",
"installed_by": ["modules"]
+ },
+ "ucsc/gtftogenepred": {
+ "branch": "master",
+ "git_sha": "3f5420aa22e00bd030a2556dfdffc9e164ec0ec5",
+ "installed_by": ["modules"]
}
}
},
diff --git a/modules/local/uscs/custom_gtftogenepred/main.nf b/modules/local/uscs/custom_gtftogenepred/main.nf
deleted file mode 100644
index 78fcbd296..000000000
--- a/modules/local/uscs/custom_gtftogenepred/main.nf
+++ /dev/null
@@ -1,37 +0,0 @@
-process GTF_TO_REFFLAT {
- label 'process_low'
-
- conda "bioconda::ucsc-gtftogenepred=377"
- container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ?
- 'https://depot.galaxyproject.org/singularity/ucsc-gtftogenepred:377--ha8a8165_5' :
- 'quay.io/biocontainers/ucsc-gtftogenepred:377--ha8a8165_5' }"
-
- input:
- tuple val(meta), path (gtf)
-
- output:
- path('*.refflat'), emit: refflat
-
- script:
- def genepred = gtf + '.genepred'
- def refflat = gtf + '.refflat'
- """
- gtfToGenePred -genePredExt -geneNameAsName2 ${gtf} ${genepred}
- paste ${genepred} ${genepred} | cut -f12,16-25 > ${refflat}
-
- cat <<-END_VERSIONS > versions.yml
- "${task.process}":
- gtfToGenePred: 377
- END_VERSIONS
- """
-
- stub:
- def refflat = gtf + '.refflat'
- """
- touch ${refflat}
- cat <<-END_VERSIONS > versions.yml
- "${task.process}":
- gtfToGenePred: 377
- END_VERSIONS
- """
-}
diff --git a/modules/local/uscs/custom_gtftogenepred/meta.yml b/modules/local/uscs/custom_gtftogenepred/meta.yml
deleted file mode 100644
index 09711f438..000000000
--- a/modules/local/uscs/custom_gtftogenepred/meta.yml
+++ /dev/null
@@ -1,34 +0,0 @@
-name: gtf_to_refflat
-description: generate gene annotations in refFlat form
- - gtftorefflat
-tools:
- - gtf_to_refflat:
- description: generate gene annotations in refFlat form
- homepage: https://pachterlab.github.io/kallisto/
- documentation: https://pachterlab.github.io/kallisto/manual
- tool_dev_url: https://github.com/pachterlab/kallisto
- doi: ""
- licence: ["BSD-2-Clause"]
-
-input:
- - fasta:
- type: file
- description: genome fasta file
- pattern: "*.{fasta*}"
- - reference:
- type: directory
- description: Path to kallisto index
- pattern: "*"
-
-output:
- - versions:
- type: file
- description: File containing software versions
- pattern: "versions.yml"
- - fusions:
- type: file
- description: fusions
- pattern: "*.txt"
-
-authors:
- - "@rannick"
diff --git a/modules/nf-core/ucsc/gtftogenepred/environment.yml b/modules/nf-core/ucsc/gtftogenepred/environment.yml
new file mode 100644
index 000000000..5216fc8ff
--- /dev/null
+++ b/modules/nf-core/ucsc/gtftogenepred/environment.yml
@@ -0,0 +1,7 @@
+name: ucsc_gtftogenepred
+channels:
+ - conda-forge
+ - bioconda
+ - defaults
+dependencies:
+ - bioconda::ucsc-gtftogenepred=447
diff --git a/modules/nf-core/ucsc/gtftogenepred/main.nf b/modules/nf-core/ucsc/gtftogenepred/main.nf
new file mode 100644
index 000000000..88aace26b
--- /dev/null
+++ b/modules/nf-core/ucsc/gtftogenepred/main.nf
@@ -0,0 +1,54 @@
+process UCSC_GTFTOGENEPRED {
+ 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/ucsc-gtftogenepred:447--h954228d_0':
+ 'biocontainers/ucsc-gtftogenepred:447--h954228d_0' }"
+
+ input:
+ tuple val(meta), path(gtf)
+
+ output:
+ tuple val(meta), path("*.genepred"), emit: genepred
+ tuple val(meta), path("*.refflat") , emit: refflat , optional: true
+ path "versions.yml" , emit: versions
+
+ when:
+ task.ext.when == null || task.ext.when
+
+ script:
+ def args = task.ext.args ?: ''
+ def gen_refflat = args.contains("-genePredExt") && args.contains("-geneNameAsName2") ? "true" : "false"
+ def prefix = task.ext.prefix ?: "${meta.id}"
+ def VERSION = '447' // WARN: Version information not provided by tool on CLI. Please update this string when bumping container versions.
+ """
+ gtfToGenePred \\
+ $args \\
+ $gtf \\
+ ${prefix}.genepred
+
+ if [ "${gen_refflat}" == "true" ] ; then
+ awk 'BEGIN { OFS="\\t"} {print \$12, \$1, \$2, \$3, \$4, \$5, \$6, \$7, \$8, \$9, \$10}' ${prefix}.genepred > ${prefix}.refflat
+ fi
+
+ cat <<-END_VERSIONS > versions.yml
+ "${task.process}":
+ ucsc: $VERSION
+ END_VERSIONS
+ """
+
+ stub:
+ def prefix = task.ext.prefix ?: "${meta.id}"
+ def VERSION = '447'
+ """
+ touch ${prefix}.genepred
+ touch ${prefix}.refflat
+
+ cat <<-END_VERSIONS > versions.yml
+ "${task.process}":
+ ucsc: $VERSION
+ END_VERSIONS
+ """
+}
diff --git a/modules/nf-core/ucsc/gtftogenepred/meta.yml b/modules/nf-core/ucsc/gtftogenepred/meta.yml
new file mode 100644
index 000000000..02122e410
--- /dev/null
+++ b/modules/nf-core/ucsc/gtftogenepred/meta.yml
@@ -0,0 +1,47 @@
+name: ucsc_gtftogenepred
+description: compute average score of bigwig over bed file
+keywords:
+ - gtf
+ - genepred
+ - refflat
+ - ucsc
+ - gtftogenepred
+tools:
+ - ucsc:
+ description: Convert GTF files to GenePred format
+ homepage: http://hgdownload.cse.ucsc.edu/admin/exe/
+ licence: ["varies; see http://genome.ucsc.edu/license"]
+input:
+ - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ - gtf:
+ type: file
+ description: GTF file
+ pattern: "*.{gtf}"
+output:
+ - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ - genepred:
+ type: file
+ description: genepred file
+ pattern: "*.{genepred}"
+ - refflat:
+ type: file
+ description: refflat file
+ pattern: "*.{refflat}"
+ - versions:
+ type: file
+ description: File containing software versions
+ pattern: "versions.yml"
+authors:
+ - "@BarryDigby"
+ - "@anoronh4"
+maintainers:
+ - "@BarryDigby"
+ - "@anoronh4"
diff --git a/workflows/build_references.nf b/workflows/build_references.nf
index bd985e4fb..7e8c984ea 100644
--- a/workflows/build_references.nf
+++ b/workflows/build_references.nf
@@ -11,7 +11,7 @@ include { FUSIONREPORT_DOWNLOAD } from '../modules/local/fusionreport/
include { HGNC_DOWNLOAD } from '../modules/local/hgnc/main'
include { STARFUSION_BUILD } from '../modules/local/starfusion/build/main'
include { STARFUSION_DOWNLOAD } from '../modules/local/starfusion/download/main'
-include { GTF_TO_REFFLAT } from '../modules/local/uscs/custom_gtftogenepred/main'
+include { UCSC_GTFTOGENEPRED } from '../modules/nf-core/ucsc/gtftogenepred/main'
include { RRNA_TRANSCRIPTS } from '../modules/local/rrnatranscripts/main'
include { CONVERT2BED } from '../modules/local/convert2bed/main'
/*
@@ -69,9 +69,9 @@ workflow BUILD_REFERENCES {
}
if (params.starfusion_build){
- GTF_TO_REFFLAT(ENSEMBL_DOWNLOAD.out.chrgtf)
+ UCSC_GTFTOGENEPRED(ENSEMBL_DOWNLOAD.out.chrgtf)
} else {
- GTF_TO_REFFLAT(STARFUSION_DOWNLOAD.out.chrgtf)
+ UCSC_GTFTOGENEPRED(STARFUSION_DOWNLOAD.out.chrgtf)
}
if (params.fusionreport || params.all) {
diff --git a/workflows/rnafusion.nf b/workflows/rnafusion.nf
index 400df71aa..e9152c4ba 100644
--- a/workflows/rnafusion.nf
+++ b/workflows/rnafusion.nf
@@ -25,7 +25,7 @@ ch_hgnc_ref = Channel.fromPath(params.hgnc_ref).map { it -> [[id:it.Name], it] }
ch_hgnc_date = Channel.fromPath(params.hgnc_date).map { it -> [[id:it.Name], it] }.collect()
ch_fasta = Channel.fromPath(params.fasta).map { it -> [[id:it.Name], it] }.collect()
ch_gtf = Channel.fromPath(params.gtf).map { it -> [[id:it.Name], it] }.collect()
-ch_transcript = Channel.fromPath(params.transcript).map { it -> [[id:it.Name], it] }.collect()
+// ch_transcript = Channel.fromPath(params.transcript).map { it -> [[id:it.Name], it] }.collect()
ch_fai = Channel.fromPath(params.fai).map { it -> [[id:it.Name], it] }.collect()
From 91a2af2b4bced2a5762a4ef4f760e6f9832f1064 Mon Sep 17 00:00:00 2001
From: Annick Renevey <47788523+rannick@users.noreply.github.com>
Date: Tue, 16 Apr 2024 10:26:05 +0200
Subject: [PATCH 010/887] bedops convert2bed from nf-core
---
modules.json | 5 ++
modules/local/convert2bed/main.nf | 36 ----------
modules/local/convert2bed/meta.yml | 30 --------
modules/local/rrnatranscripts/main.nf | 7 +-
.../bedops/convert2bed/environment.yml | 7 ++
modules/nf-core/bedops/convert2bed/main.nf | 48 +++++++++++++
modules/nf-core/bedops/convert2bed/meta.yml | 48 +++++++++++++
.../bedops/convert2bed/tests/main.nf.test | 59 ++++++++++++++++
.../convert2bed/tests/main.nf.test.snap | 68 +++++++++++++++++++
.../nf-core/bedops/convert2bed/tests/tags.yml | 2 +
workflows/build_references.nf | 14 ++--
11 files changed, 247 insertions(+), 77 deletions(-)
delete mode 100644 modules/local/convert2bed/main.nf
delete mode 100644 modules/local/convert2bed/meta.yml
create mode 100644 modules/nf-core/bedops/convert2bed/environment.yml
create mode 100644 modules/nf-core/bedops/convert2bed/main.nf
create mode 100644 modules/nf-core/bedops/convert2bed/meta.yml
create mode 100644 modules/nf-core/bedops/convert2bed/tests/main.nf.test
create mode 100644 modules/nf-core/bedops/convert2bed/tests/main.nf.test.snap
create mode 100644 modules/nf-core/bedops/convert2bed/tests/tags.yml
diff --git a/modules.json b/modules.json
index 21254e699..41cd9acd9 100644
--- a/modules.json
+++ b/modules.json
@@ -20,6 +20,11 @@
"git_sha": "3f5420aa22e00bd030a2556dfdffc9e164ec0ec5",
"installed_by": ["modules"]
},
+ "bedops/convert2bed": {
+ "branch": "master",
+ "git_sha": "bbd685cd308e4d8bcf0c2caf82da3ee3c9e24157",
+ "installed_by": ["modules"]
+ },
"cat/cat": {
"branch": "master",
"git_sha": "9437e6053dccf4aafa022bfd6e7e9de67e625af8",
diff --git a/modules/local/convert2bed/main.nf b/modules/local/convert2bed/main.nf
deleted file mode 100644
index c4313f0a7..000000000
--- a/modules/local/convert2bed/main.nf
+++ /dev/null
@@ -1,36 +0,0 @@
-process CONVERT2BED {
- tag "$meta.id"
- label 'process_single'
-
- conda "bioconda::bedops=2.4.41"
- container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ?
- 'https://depot.galaxyproject.org/singularity/bedops:2.4.41--h9f5acd7_0' :
- 'quay.io/biocontainers/bedops:2.4.41--h9f5acd7_0' }"
-
- input:
- tuple val(meta), path(gtf)
-
- output:
- tuple val(meta), path("*.bed") , emit: bed
-
- script:
- def prefix = task.ext.prefix ?: "${meta.id}"
- """
- convert2bed -i gtf < $gtf > ${prefix}.bed
-
- cat <<-END_VERSIONS > versions.yml
- "${task.process}":
- convert2bed: \$(convert2bed --version | grep vers | sed 's/^.*.version: //')
- END_VERSIONS
- """
-
- stub:
- def prefix = task.ext.prefix ?: "${meta.id}"
- """
- touch ${prefix}.bed
- cat <<-END_VERSIONS > versions.yml
- "${task.process}":
- convert2bed: \$(convert2bed --version | grep vers | sed 's/^.*.version: //')
- END_VERSIONS
- """
-}
diff --git a/modules/local/convert2bed/meta.yml b/modules/local/convert2bed/meta.yml
deleted file mode 100644
index 31ff3649a..000000000
--- a/modules/local/convert2bed/meta.yml
+++ /dev/null
@@ -1,30 +0,0 @@
-name:
-description: convert from GTF to BED format
- - convert2bed
-tools:
- - convert2bed:
- description: convert from GTF to BED format
- homepage: https://github.com/bedops/bedops
- documentation: https://bedops.readthedocs.io/en/latest/index.html
- tool_dev_url: https://github.com/bedops/bedops
- doi: ""
- licence: ["GNU GENERAL PUBLIC LICENSE"]
-
-input:
- - gtf:
- type: file
- description: Path to GTF file
- pattern: "*.{gtf*}"
-
-output:
- - versions:
- type: file
- description: File containing software versions
- pattern: "versions.yml"
- - bed:
- type: file
- description: bed file
- pattern: "*.bed"
-
-authors:
- - "@rannick"
diff --git a/modules/local/rrnatranscripts/main.nf b/modules/local/rrnatranscripts/main.nf
index e4afc2845..c31de7076 100644
--- a/modules/local/rrnatranscripts/main.nf
+++ b/modules/local/rrnatranscripts/main.nf
@@ -2,12 +2,11 @@ process RRNA_TRANSCRIPTS {
tag "$meta.id"
label 'process_single'
- conda "conda-forge::python=3.8.3"
+ conda "conda-forge::python=3.12.2"
container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ?
- 'https://depot.galaxyproject.org/singularity/python:3.9--1' :
- 'quay.io/biocontainers/python:3.9--1' }"
-
+ 'https://depot.galaxyproject.org/singularity/python:3.12' :
+ 'quay.io/biocontainers/python:3.12' }"
input:
tuple val(meta), path(gtf)
diff --git a/modules/nf-core/bedops/convert2bed/environment.yml b/modules/nf-core/bedops/convert2bed/environment.yml
new file mode 100644
index 000000000..049b29e9b
--- /dev/null
+++ b/modules/nf-core/bedops/convert2bed/environment.yml
@@ -0,0 +1,7 @@
+name: "bedops_convert2bed"
+channels:
+ - conda-forge
+ - bioconda
+ - defaults
+dependencies:
+ - "bioconda::bedops=2.4.41"
diff --git a/modules/nf-core/bedops/convert2bed/main.nf b/modules/nf-core/bedops/convert2bed/main.nf
new file mode 100644
index 000000000..a23efbd56
--- /dev/null
+++ b/modules/nf-core/bedops/convert2bed/main.nf
@@ -0,0 +1,48 @@
+process BEDOPS_CONVERT2BED {
+ 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/bedops:2.4.41--h4ac6f70_2':
+ 'biocontainers/bedops:2.4.41--h4ac6f70_2' }"
+
+ input:
+ tuple val(meta), path(in_file)
+
+ output:
+ tuple val(meta), path("*.bed"), emit: bed
+ 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 format = in_file.getExtension()
+ """
+ convert2bed \\
+ $args \\
+ -i $format \\
+ < $in_file \\
+ > ${prefix}.bed
+
+ cat <<-END_VERSIONS > versions.yml
+ "${task.process}":
+ bedops/convert2bed: \$(convert2bed --version | grep vers | sed 's/^.*.version: //')
+ END_VERSIONS
+ """
+
+ stub:
+ def args = task.ext.args ?: ''
+ def prefix = task.ext.prefix ?: "${meta.id}"
+ """
+ touch ${prefix}.bed
+
+ cat <<-END_VERSIONS > versions.yml
+ "${task.process}":
+ bedops/convert2bed: \$(convert2bed --version | grep vers | sed 's/^.*.version: //')
+ END_VERSIONS
+ """
+}
diff --git a/modules/nf-core/bedops/convert2bed/meta.yml b/modules/nf-core/bedops/convert2bed/meta.yml
new file mode 100644
index 000000000..eea919650
--- /dev/null
+++ b/modules/nf-core/bedops/convert2bed/meta.yml
@@ -0,0 +1,48 @@
+name: "bedops_convert2bed"
+description: Convert BAM/GFF/GTF/GVF/PSL files to bed
+keywords:
+ - convert
+ - bed
+ - genomics
+tools:
+ - "bedops":
+ description: "High-performance genomic feature operations."
+ homepage: "https://bedops.readthedocs.io/en/latest/content/reference/file-management/conversion/convert2bed.html#convert2bed"
+ documentation: "https://bedops.readthedocs.io/en/latest/"
+ tool_dev_url: "https://github.com/bedops"
+ doi: "10.1093/bioinformatics/bts277"
+ licence: ["GNU v2"]
+
+input:
+ - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. `[ id:'sample1', single_end:false ]`
+
+ - input:
+ type: file
+ description: Sorted BAM/GFF/GTF/GVF/PSL file
+ pattern: "*.{bam,gff,gtf,gvf,psl}"
+
+output:
+ - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. `[ id:'sample1', single_end:false ]`
+
+ - versions:
+ type: file
+ description: File containing software versions
+ pattern: "versions.yml"
+
+ - bed:
+ type: file
+ description: Sorted BED file
+ pattern: "*.{bed}"
+
+authors:
+ - "@rannick"
+maintainers:
+ - "@rannick"
diff --git a/modules/nf-core/bedops/convert2bed/tests/main.nf.test b/modules/nf-core/bedops/convert2bed/tests/main.nf.test
new file mode 100644
index 000000000..183f8de6c
--- /dev/null
+++ b/modules/nf-core/bedops/convert2bed/tests/main.nf.test
@@ -0,0 +1,59 @@
+// nf-core modules test bedops/convert2bed
+nextflow_process {
+
+ name "Test Process BEDOPS_CONVERT2BED"
+ script "../main.nf"
+ process "BEDOPS_CONVERT2BED"
+
+ tag "modules"
+ tag "modules_nfcore"
+ tag "bedops"
+ tag "bedops/convert2bed"
+
+ test("sarscov2 - gtf") {
+
+ when {
+ process {
+ """
+ input[0] = [
+ [ id:'test' ], // meta map
+ file(params.test_data['sarscov2']['genome']['genome_gtf'], checkIfExists: true)
+ ]
+ """
+ }
+ }
+
+ then {
+ assertAll(
+ { assert process.success },
+ { assert snapshot(process.out).match() }
+ )
+ }
+
+ }
+
+ test("sarscov2 - gtf - stub") {
+
+ options "-stub"
+
+ when {
+ process {
+ """
+ input[0] = [
+ [ id:'test' ], // meta map
+ file(params.test_data['sarscov2']['genome']['genome_gtf'], checkIfExists: true)
+ ]
+ """
+ }
+ }
+
+ then {
+ assertAll(
+ { assert process.success },
+ { assert snapshot(process.out).match() }
+ )
+ }
+
+ }
+
+}
diff --git a/modules/nf-core/bedops/convert2bed/tests/main.nf.test.snap b/modules/nf-core/bedops/convert2bed/tests/main.nf.test.snap
new file mode 100644
index 000000000..e2482924d
--- /dev/null
+++ b/modules/nf-core/bedops/convert2bed/tests/main.nf.test.snap
@@ -0,0 +1,68 @@
+{
+ "sarscov2 - gtf - stub": {
+ "content": [
+ {
+ "0": [
+ [
+ {
+ "id": "test"
+ },
+ "test.bed:md5,d41d8cd98f00b204e9800998ecf8427e"
+ ]
+ ],
+ "1": [
+ "versions.yml:md5,d3d58dde1d9baba3700ff9fb5a45ce5b"
+ ],
+ "bed": [
+ [
+ {
+ "id": "test"
+ },
+ "test.bed:md5,d41d8cd98f00b204e9800998ecf8427e"
+ ]
+ ],
+ "versions": [
+ "versions.yml:md5,d3d58dde1d9baba3700ff9fb5a45ce5b"
+ ]
+ }
+ ],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "23.10.1"
+ },
+ "timestamp": "2024-04-11T12:06:14.755423333"
+ },
+ "sarscov2 - gtf": {
+ "content": [
+ {
+ "0": [
+ [
+ {
+ "id": "test"
+ },
+ "test.bed:md5,adfdd36e848a62f4b0ea8a694abe9659"
+ ]
+ ],
+ "1": [
+ "versions.yml:md5,d3d58dde1d9baba3700ff9fb5a45ce5b"
+ ],
+ "bed": [
+ [
+ {
+ "id": "test"
+ },
+ "test.bed:md5,adfdd36e848a62f4b0ea8a694abe9659"
+ ]
+ ],
+ "versions": [
+ "versions.yml:md5,d3d58dde1d9baba3700ff9fb5a45ce5b"
+ ]
+ }
+ ],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "23.10.1"
+ },
+ "timestamp": "2024-04-11T12:06:08.876003152"
+ }
+}
\ No newline at end of file
diff --git a/modules/nf-core/bedops/convert2bed/tests/tags.yml b/modules/nf-core/bedops/convert2bed/tests/tags.yml
new file mode 100644
index 000000000..fd2c29935
--- /dev/null
+++ b/modules/nf-core/bedops/convert2bed/tests/tags.yml
@@ -0,0 +1,2 @@
+bedops/convert2bed:
+ - "modules/nf-core/bedops/convert2bed/**"
diff --git a/workflows/build_references.nf b/workflows/build_references.nf
index 7e8c984ea..b1ea6d70c 100644
--- a/workflows/build_references.nf
+++ b/workflows/build_references.nf
@@ -4,26 +4,26 @@
========================================================================================
*/
-include { ARRIBA_DOWNLOAD } from '../modules/nf-core/arriba/download/main'
include { ENSEMBL_DOWNLOAD } from '../modules/local/ensembl/main'
include { FUSIONCATCHER_DOWNLOAD } from '../modules/local/fusioncatcher/download/main'
include { FUSIONREPORT_DOWNLOAD } from '../modules/local/fusionreport/download/main'
include { HGNC_DOWNLOAD } from '../modules/local/hgnc/main'
include { STARFUSION_BUILD } from '../modules/local/starfusion/build/main'
include { STARFUSION_DOWNLOAD } from '../modules/local/starfusion/download/main'
-include { UCSC_GTFTOGENEPRED } from '../modules/nf-core/ucsc/gtftogenepred/main'
include { RRNA_TRANSCRIPTS } from '../modules/local/rrnatranscripts/main'
-include { CONVERT2BED } from '../modules/local/convert2bed/main'
/*
========================================================================================
IMPORT NF-CORE MODULES/SUBWORKFLOWS
========================================================================================
*/
+include { ARRIBA_DOWNLOAD } from '../modules/nf-core/arriba/download/main'
+include { BEDOPS_CONVERT2BED } from '../modules/nf-core/bedops/convert2bed/main'
+include { GATK4_BEDTOINTERVALLIST } from '../modules/nf-core/gatk4/bedtointervallist/main'
+include { GATK4_CREATESEQUENCEDICTIONARY } from '../modules/nf-core/gatk4/createsequencedictionary/main'
include { SAMTOOLS_FAIDX } from '../modules/nf-core/samtools/faidx/main'
include { STAR_GENOMEGENERATE } from '../modules/nf-core/star/genomegenerate/main'
-include { GATK4_CREATESEQUENCEDICTIONARY } from '../modules/nf-core/gatk4/createsequencedictionary/main'
-include { GATK4_BEDTOINTERVALLIST } from '../modules/nf-core/gatk4/bedtointervallist/main'
+include { UCSC_GTFTOGENEPRED } from '../modules/nf-core/ucsc/gtftogenepred/main'
/*
========================================================================================
@@ -43,9 +43,9 @@ workflow BUILD_REFERENCES {
GATK4_CREATESEQUENCEDICTIONARY(ENSEMBL_DOWNLOAD.out.fasta)
RRNA_TRANSCRIPTS(ENSEMBL_DOWNLOAD.out.gtf)
- CONVERT2BED(RRNA_TRANSCRIPTS.out.rrna_gtf)
+ BEDOPS_CONVERT2BED(RRNA_TRANSCRIPTS.out.rrna_gtf)
- GATK4_BEDTOINTERVALLIST(CONVERT2BED.out.bed, GATK4_CREATESEQUENCEDICTIONARY.out.dict)
+ GATK4_BEDTOINTERVALLIST(BEDOPS_CONVERT2BED.out.bed, GATK4_CREATESEQUENCEDICTIONARY.out.dict)
if (params.starindex || params.all || params.starfusion || params.arriba) {
From b493b90162d65a55f232c759c3bbac8e64b76848 Mon Sep 17 00:00:00 2001
From: nf-core-bot
Date: Wed, 8 May 2024 14:01:06 +0000
Subject: [PATCH 011/887] 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 +
CHANGELOG.md | 2 +-
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 | 178 +++++++++---------
nextflow_schema.json | 7 +
pyproject.toml | 15 --
.../utils_nfcore_rnafusion_pipeline/main.nf | 16 +-
.../nf-core/utils_nfcore_pipeline/main.nf | 8 +-
workflows/rnafusion.nf | 46 +++--
27 files changed, 222 insertions(+), 171 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 8b85a0aae..ed1d027be 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/rnaf
- [ ] If you've added a new tool - have you followed the pipeline conventions in the [contribution docs](https://github.com/nf-core/rnafusion/tree/master/.github/CONTRIBUTING.md)
- [ ] If necessary, also make a PR on the nf-core/rnafusion _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 a4b6b4d35..3c5e4c8ac 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/rnafusion'
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 cf29b8fdd..d3448f1be 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/rnafusion'
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 3390bf1ac..a776bde84 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 36ecd2076..df750880c 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/CHANGELOG.md b/CHANGELOG.md
index a01e6117e..9b6d5e6a8 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.0.2dev - [date]
+## v4.0.0dev - [date]
Initial release of nf-core/rnafusion, created with the [nf-core](https://nf-co.re/) template.
diff --git a/README.md b/README.md
index 805de70e0..5075b862d 100644
--- a/README.md
+++ b/README.md
@@ -13,7 +13,7 @@
[](https://docs.conda.io/en/latest/)
[](https://www.docker.com/)
[](https://sylabs.io/docs/)
-[](https://tower.nf/launch?pipeline=https://github.com/nf-core/rnafusion)
+[](https://cloud.seqera.io/launch?pipeline=https://github.com/nf-core/rnafusion)
[](https://nfcore.slack.com/channels/rnafusion)[](https://twitter.com/nf_core)[](https://mstdn.science/@nf_core)[](https://www.youtube.com/c/nf-core)
diff --git a/conf/base.config b/conf/base.config
index 51042a029..0af2fc0da 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 796db260d..d54c7159b 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 e2522d720..7662ac58d 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 a39d7dc4b..612cb410f 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 5002e3469..c253f7934 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 fc563542d..172afb674 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/rnafusion 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/rnafusion.config"
-// } catch (Exception e) {
-// System.err.println("WARNING: Could not load nf-core/config/rnafusion profiles: ${params.custom_config_base}/pipeline/rnafusion.config")
-// }
+try {
+ includeConfig "${params.custom_config_base}/pipeline/rnafusion.config"
+} catch (Exception e) {
+ System.err.println("WARNING: Could not load nf-core/config/rnafusion profiles: ${params.custom_config_base}/pipeline/rnafusion.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' }
@@ -231,7 +239,7 @@ manifest {
description = """Nextflow rnafusion analysis pipeline, part of the nf-core community."""
mainScript = 'main.nf'
nextflowVersion = '!>=23.04.0'
- version = '3.0.2dev'
+ version = '4.0.0dev'
doi = ''
}
diff --git a/nextflow_schema.json b/nextflow_schema.json
index 025bd65df..91bbdef8c 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_rnafusion_pipeline/main.nf b/subworkflows/local/utils_nfcore_rnafusion_pipeline/main.nf
index c24a3741a..8d187230d 100644
--- a/subworkflows/local/utils_nfcore_rnafusion_pipeline/main.nf
+++ b/subworkflows/local/utils_nfcore_rnafusion_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/rnafusion.nf b/workflows/rnafusion.nf
index 62c2cf15c..2b01b6da0 100644
--- a/workflows/rnafusion.nf
+++ b/workflows/rnafusion.nf
@@ -40,22 +40,44 @@ workflow RNAFUSION {
// 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 aeca9e2ebe9f9ec7eb0dd84b3907eaf7bf58cb6a Mon Sep 17 00:00:00 2001
From: nf-core-bot
Date: Thu, 9 May 2024 11:43:56 +0000
Subject: [PATCH 012/887] 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 2da759096716c8d2a9e46d200dd5c9ba697c126c Mon Sep 17 00:00:00 2001
From: Annick Renevey <47788523+rannick@users.noreply.github.com>
Date: Tue, 14 May 2024 10:59:56 +0200
Subject: [PATCH 013/887] add salmon first steps
---
modules.json | 10 ++
modules/nf-core/salmon/index/environment.yml | 7 +
modules/nf-core/salmon/index/main.nf | 47 +++++
modules/nf-core/salmon/index/meta.yml | 37 ++++
.../nf-core/salmon/index/tests/main.nf.test | 35 ++++
.../salmon/index/tests/main.nf.test.snap | 14 ++
modules/nf-core/salmon/index/tests/tags.yml | 2 +
modules/nf-core/salmon/quant/environment.yml | 7 +
modules/nf-core/salmon/quant/main.nf | 79 +++++++++
modules/nf-core/salmon/quant/meta.yml | 62 +++++++
.../nf-core/salmon/quant/tests/main.nf.test | 160 ++++++++++++++++++
.../salmon/quant/tests/main.nf.test.snap | 50 ++++++
.../salmon/quant/tests/nextflow.config | 7 +
modules/nf-core/salmon/quant/tests/tags.yml | 2 +
subworkflows/local/qc_workflow.nf | 5 +-
workflows/build_references.nf | 2 +
workflows/rnafusion.nf | 1 +
17 files changed, 526 insertions(+), 1 deletion(-)
create mode 100644 modules/nf-core/salmon/index/environment.yml
create mode 100644 modules/nf-core/salmon/index/main.nf
create mode 100644 modules/nf-core/salmon/index/meta.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/main.nf
create mode 100644 modules/nf-core/salmon/quant/meta.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
diff --git a/modules.json b/modules.json
index 23a6ce29f..384c60a53 100644
--- a/modules.json
+++ b/modules.json
@@ -65,6 +65,16 @@
"git_sha": "3f5420aa22e00bd030a2556dfdffc9e164ec0ec5",
"installed_by": ["modules"]
},
+ "salmon/index": {
+ "branch": "master",
+ "git_sha": "ffc101e1b84ef3df2e4e4a966e84b3c513ae5693",
+ "installed_by": ["modules"]
+ },
+ "salmon/quant": {
+ "branch": "master",
+ "git_sha": "03a8562231d575c313266c193a980594b941e3ea",
+ "installed_by": ["modules"]
+ },
"samtools/faidx": {
"branch": "master",
"git_sha": "3f5420aa22e00bd030a2556dfdffc9e164ec0ec5",
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
new file mode 100644
index 000000000..88d9cf14a
--- /dev/null
+++ b/modules/nf-core/salmon/index/main.nf
@@ -0,0 +1,47 @@
+process SALMON_INDEX {
+ tag "$transcript_fasta"
+ label "process_medium"
+
+ 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' }"
+
+ input:
+ path genome_fasta
+ path transcript_fasta
+
+ output:
+ path "salmon" , emit: index
+ path "versions.yml", emit: versions
+
+ when:
+ task.ext.when == null || task.ext.when
+
+ script:
+ def args = task.ext.args ?: ''
+ def get_decoy_ids = "grep '^>' $genome_fasta | cut -d ' ' -f 1 | cut -d \$'\\t' -f 1 > decoys.txt"
+ def gentrome = "gentrome.fa"
+ if (genome_fasta.endsWith('.gz')) {
+ get_decoy_ids = "grep '^>' <(gunzip -c $genome_fasta) | cut -d ' ' -f 1 | cut -d \$'\\t' -f 1 > decoys.txt"
+ gentrome = "gentrome.fa.gz"
+ }
+ """
+ $get_decoy_ids
+ sed -i.bak -e 's/>//g' decoys.txt
+ cat $transcript_fasta $genome_fasta > $gentrome
+
+ salmon \\
+ index \\
+ --threads $task.cpus \\
+ -t $gentrome \\
+ -d decoys.txt \\
+ $args \\
+ -i salmon
+
+ 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/meta.yml b/modules/nf-core/salmon/index/meta.yml
new file mode 100644
index 000000000..fd94dd274
--- /dev/null
+++ b/modules/nf-core/salmon/index/meta.yml
@@ -0,0 +1,37 @@
+name: salmon_index
+description: Create index for salmon
+keywords:
+ - index
+ - fasta
+ - genome
+ - reference
+tools:
+ - salmon:
+ description: |
+ Salmon is a tool for wicked-fast transcript quantification from RNA-seq data
+ homepage: https://salmon.readthedocs.io/en/latest/salmon.html
+ manual: https://salmon.readthedocs.io/en/latest/salmon.html
+ doi: 10.1038/nmeth.4197
+ licence: ["GPL-3.0-or-later"]
+input:
+ - genome_fasta:
+ type: file
+ description: Fasta file of the reference genome
+ - transcriptome_fasta:
+ type: file
+ description: Fasta file of the reference transcriptome
+output:
+ - index:
+ type: directory
+ description: Folder containing the star index files
+ pattern: "salmon"
+ - versions:
+ 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..538b231b4
--- /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.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") }
+ )
+ }
+
+ }
+
+}
\ 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..94edf3903
--- /dev/null
+++ b/modules/nf-core/salmon/index/tests/main.nf.test.snap
@@ -0,0 +1,14 @@
+{
+ "versions": {
+ "content": [
+ [
+ "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/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
new file mode 100644
index 000000000..e115d39cf
--- /dev/null
+++ b/modules/nf-core/salmon/quant/main.nf
@@ -0,0 +1,79 @@
+process SALMON_QUANT {
+ 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/salmon:1.10.1--h7e5ed60_0' :
+ 'biocontainers/salmon:1.10.1--h7e5ed60_0' }"
+
+ input:
+ tuple val(meta), path(reads)
+ path index
+ path gtf
+ path transcript_fasta
+ val alignment_mode
+ 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
+
+ when:
+ task.ext.when == null || task.ext.when
+
+ script:
+ def args = task.ext.args ?: ''
+ prefix = task.ext.prefix ?: "${meta.id}"
+
+ def reference = "--index $index"
+ def reads1 = [], reads2 = []
+ meta.single_end ? [reads].flatten().each{reads1 << it} : reads.eachWithIndex{ v, ix -> ( ix & 1 ? reads2 : reads1) << v }
+ def input_reads = meta.single_end ? "-r ${reads1.join(" ")}" : "-1 ${reads1.join(" ")} -2 ${reads2.join(" ")}"
+ if (alignment_mode) {
+ reference = "-t $transcript_fasta"
+ input_reads = "-a $reads"
+ }
+
+ def strandedness_opts = [
+ 'A', 'U', 'SF', 'SR',
+ 'IS', 'IU' , 'ISF', 'ISR',
+ 'OS', 'OU' , 'OSF', 'OSR',
+ 'MS', 'MU' , 'MSF', 'MSR'
+ ]
+ def strandedness = 'A'
+ if (lib_type) {
+ if (strandedness_opts.contains(lib_type)) {
+ strandedness = lib_type
+ } else {
+ log.info "[Salmon Quant] Invalid library type specified '--libType=${lib_type}', defaulting to auto-detection with '--libType=A'."
+ }
+ } else {
+ strandedness = meta.single_end ? 'U' : 'IU'
+ if (meta.strandedness == 'forward') {
+ strandedness = meta.single_end ? 'SF' : 'ISF'
+ } else if (meta.strandedness == 'reverse') {
+ strandedness = meta.single_end ? 'SR' : 'ISR'
+ }
+ }
+ """
+ salmon quant \\
+ --geneMap $gtf \\
+ --threads $task.cpus \\
+ --libType=$strandedness \\
+ $reference \\
+ $input_reads \\
+ $args \\
+ -o $prefix
+
+ if [ -f $prefix/aux_info/meta_info.json ]; then
+ cp $prefix/aux_info/meta_info.json "${prefix}_meta_info.json"
+ fi
+
+ 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/meta.yml b/modules/nf-core/salmon/quant/meta.yml
new file mode 100644
index 000000000..a2faf589a
--- /dev/null
+++ b/modules/nf-core/salmon/quant/meta.yml
@@ -0,0 +1,62 @@
+name: salmon_quant
+description: gene/transcript quantification with Salmon
+keywords:
+ - index
+ - fasta
+ - genome
+ - reference
+tools:
+ - salmon:
+ description: |
+ Salmon is a tool for wicked-fast transcript quantification from RNA-seq data
+ homepage: https://salmon.readthedocs.io/en/latest/salmon.html
+ manual: https://salmon.readthedocs.io/en/latest/salmon.html
+ doi: 10.1038/nmeth.4197
+ licence: ["GPL-3.0-or-later"]
+input:
+ - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ - reads:
+ type: file
+ description: |
+ List of input FastQ files for single-end or paired-end data.
+ Multiple single-end fastqs or pairs of paired-end fastqs are
+ handled.
+ - index:
+ type: directory
+ description: Folder containing the star index files
+ - gtf:
+ type: file
+ description: GTF of the reference transcriptome
+ - transcript_fasta:
+ type: file
+ description: Fasta file of the reference transcriptome
+ - alignment_mode:
+ type: boolean
+ description: whether to run salmon in alignment mode
+ - lib_type:
+ type: string
+ description: |
+ Override library type inferred based on strandedness defined in meta object
+output:
+ - results:
+ type: directory
+ description: Folder containing the quantification results for a specific sample
+ pattern: "${prefix}"
+ - json_info:
+ type: file
+ description: File containing meta information from Salmon quant
+ pattern: "*info.json"
+ - versions:
+ 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..04e61e2b3
--- /dev/null
+++ b/modules/nf-core/salmon/quant/tests/main.nf.test
@@ -0,0 +1,160 @@
+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"
+
+ 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 {
+ 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") }
+ )
+ }
+
+ }
+
+ test("sarscov2 - single_end lib type A") {
+
+ 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") }
+ )
+ }
+
+ }
+
+ test("sarscov2 - pair_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)
+ ]
+ ])
+ 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") }
+ )
+ }
+
+ }
+
+ test("sarscov2 - pair_end multiple") {
+
+ 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") }
+ )
+ }
+
+ }
+}
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..a1ec792e0
--- /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-06T17:10:56.121713"
+ },
+ "versions_single_end_lib_type_a": {
+ "content": [
+ [
+ "versions.yml:md5,80eb3d2ad36960c7e9263f81ede9d263"
+ ]
+ ],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "23.10.1"
+ },
+ "timestamp": "2024-02-06T17:09:14.898351"
+ },
+ "versions_pair_end_multiple": {
+ "content": [
+ [
+ "versions.yml:md5,80eb3d2ad36960c7e9263f81ede9d263"
+ ]
+ ],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "23.10.1"
+ },
+ "timestamp": "2024-02-06T17:11:07.846643"
+ }
+}
\ 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/subworkflows/local/qc_workflow.nf b/subworkflows/local/qc_workflow.nf
index 6b53358ad..0bc37a601 100644
--- a/subworkflows/local/qc_workflow.nf
+++ b/subworkflows/local/qc_workflow.nf
@@ -5,9 +5,10 @@
include { PICARD_COLLECTRNASEQMETRICS } from '../../modules/local/picard/collectrnaseqmetrics/main'
include { GATK4_MARKDUPLICATES } from '../../modules/nf-core/gatk4/markduplicates/main'
include { PICARD_COLLECTINSERTSIZEMETRICS } from '../../modules/nf-core/picard/collectinsertsizemetrics/main'
-
+ include { SALMON_QUANT } from '../../modules/nf-core/salmon/quant/main'
workflow QC_WORKFLOW {
take:
+ ch_reads_all
ch_bam_sorted
ch_bam_sorted_indexed
ch_chrgtf
@@ -31,6 +32,8 @@ workflow QC_WORKFLOW {
ch_versions = ch_versions.mix(PICARD_COLLECTINSERTSIZEMETRICS.out.versions)
ch_insertsize_metrics = Channel.empty().mix(PICARD_COLLECTINSERTSIZEMETRICS.out.metrics)
+ SALMON_QUANT(ch_reads_all, salmon_index, ch_chrgtf.map { meta, gtf -> [ gtf ]}, transcript_fasta, true, '')
+
emit:
versions = ch_versions
diff --git a/workflows/build_references.nf b/workflows/build_references.nf
index 7847dd055..151849820 100644
--- a/workflows/build_references.nf
+++ b/workflows/build_references.nf
@@ -24,6 +24,7 @@ include { SAMTOOLS_FAIDX } from '../modules/nf-core/samtools/fa
include { STAR_GENOMEGENERATE } from '../modules/nf-core/star/genomegenerate/main'
include { GATK4_CREATESEQUENCEDICTIONARY } from '../modules/nf-core/gatk4/createsequencedictionary/main'
include { GATK4_BEDTOINTERVALLIST } from '../modules/nf-core/gatk4/bedtointervallist/main'
+include { SALMON_INDEX } from '../modules/nf-core/salmon/index/main'
/*
========================================================================================
@@ -47,6 +48,7 @@ workflow BUILD_REFERENCES {
GATK4_BEDTOINTERVALLIST(CONVERT2BED.out.bed, GATK4_CREATESEQUENCEDICTIONARY.out.dict)
+ SALMON_INDEX(ENSEMBL_DOWNLOAD.out.fasta, ENSEMBL_DOWNLOAD.out.gtf)
if (params.starindex || params.all || params.starfusion || params.arriba) {
STAR_GENOMEGENERATE( ENSEMBL_DOWNLOAD.out.fasta, ENSEMBL_DOWNLOAD.out.gtf )
diff --git a/workflows/rnafusion.nf b/workflows/rnafusion.nf
index 7483f1be5..0c23a15c1 100644
--- a/workflows/rnafusion.nf
+++ b/workflows/rnafusion.nf
@@ -199,6 +199,7 @@ workflow RNAFUSION {
//QC
QC_WORKFLOW (
+ ch_reads_all,
STARFUSION_WORKFLOW.out.ch_bam_sorted,
STARFUSION_WORKFLOW.out.ch_bam_sorted_indexed,
ch_chrgtf,
From 89ade662e07eb87a3e27fcc008cfbc8693ff79c0 Mon Sep 17 00:00:00 2001
From: Annick Renevey <47788523+rannick@users.noreply.github.com>
Date: Tue, 14 May 2024 11:16:24 +0200
Subject: [PATCH 014/887] remove samplesheet check conf
---
conf/modules.config | 8 --------
1 file changed, 8 deletions(-)
diff --git a/conf/modules.config b/conf/modules.config
index 9d4ca62b1..965b31335 100644
--- a/conf/modules.config
+++ b/conf/modules.config
@@ -172,14 +172,6 @@ process {
]
}
- withName: 'SAMPLESHEET_CHECK' {
- publishDir = [
- path: { "${params.outdir}/pipeline_info" },
- mode: params.publish_dir_mode,
- saveAs: { filename -> filename.equals('versions.yml') ? null : filename }
- ]
- }
-
withName: 'SAMTOOLS_FAIDX' {
publishDir = [
path: { "${params.genomes_base}/ensembl" },
From 71f8caf804f757b73523a30ef44c558fef5d26a7 Mon Sep 17 00:00:00 2001
From: Annick Renevey <47788523+rannick@users.noreply.github.com>
Date: Tue, 21 May 2024 10:37:47 +0200
Subject: [PATCH 015/887] tests
---
conf/modules.config | 9 +++
modules.json | 10 +++
modules/local/ensembl/main.nf | 10 ++-
modules/local/gffread.nf | 50 +++++++++++++
modules/nf-core/gunzip/environment.yml | 7 ++
modules/nf-core/gunzip/main.nf | 48 +++++++++++++
modules/nf-core/gunzip/meta.yml | 39 ++++++++++
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 +
.../rsem/preparereference/environment.yml | 8 +++
modules/nf-core/rsem/preparereference/main.nf | 72 +++++++++++++++++++
.../nf-core/rsem/preparereference/meta.yml | 42 +++++++++++
.../rsem/preparereference/tests/main.nf.test | 32 +++++++++
.../preparereference/tests/main.nf.test.snap | 35 +++++++++
workflows/build_references.nf | 72 ++++++++++---------
16 files changed, 468 insertions(+), 35 deletions(-)
create mode 100644 modules/local/gffread.nf
create mode 100644 modules/nf-core/gunzip/environment.yml
create mode 100644 modules/nf-core/gunzip/main.nf
create mode 100644 modules/nf-core/gunzip/meta.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/rsem/preparereference/environment.yml
create mode 100644 modules/nf-core/rsem/preparereference/main.nf
create mode 100644 modules/nf-core/rsem/preparereference/meta.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
diff --git a/conf/modules.config b/conf/modules.config
index 9d4ca62b1..bef67c2ca 100644
--- a/conf/modules.config
+++ b/conf/modules.config
@@ -122,6 +122,15 @@ process {
]
}
+ withName: 'GFFREAD' {
+ ext.args = { '-w' }
+ publishDir = [
+ path: { "${params.genomes_base}/gffread" },
+ mode: params.publish_dir_mode,
+ saveAs: { filename -> filename.equals('versions.yml') ? null : filename },
+ ]
+ }
+
withName: 'GTF_TO_REFFLAT' {
publishDir = [
path: { "${params.genomes_base}/ensembl" },
diff --git a/modules.json b/modules.json
index 384c60a53..cb364b688 100644
--- a/modules.json
+++ b/modules.json
@@ -50,6 +50,11 @@
"git_sha": "3f5420aa22e00bd030a2556dfdffc9e164ec0ec5",
"installed_by": ["modules"]
},
+ "gunzip": {
+ "branch": "master",
+ "git_sha": "3a5fef109d113b4997c9822198664ca5f2716208",
+ "installed_by": ["modules"]
+ },
"multiqc": {
"branch": "master",
"git_sha": "b7ebe95761cd389603f9cc0e0dc384c0f663815a",
@@ -65,6 +70,11 @@
"git_sha": "3f5420aa22e00bd030a2556dfdffc9e164ec0ec5",
"installed_by": ["modules"]
},
+ "rsem/preparereference": {
+ "branch": "master",
+ "git_sha": "301b088c7e9e00c4c80686411383f07173b54d69",
+ "installed_by": ["modules"]
+ },
"salmon/index": {
"branch": "master",
"git_sha": "ffc101e1b84ef3df2e4e4a966e84b3c513ae5693",
diff --git a/modules/local/ensembl/main.nf b/modules/local/ensembl/main.nf
index 4a782c0df..90ef0e470 100644
--- a/modules/local/ensembl/main.nf
+++ b/modules/local/ensembl/main.nf
@@ -17,7 +17,10 @@ process ENSEMBL_DOWNLOAD {
tuple val(meta), path("Homo_sapiens.${genome}.${ensembl_version}.gtf") , emit: gtf
tuple val(meta), path("Homo_sapiens.${genome}.${ensembl_version}.chr.gtf") , emit: chrgtf
tuple val(meta), path("Homo_sapiens.${genome}.${ensembl_version}.cdna.all.fa.gz"), emit: transcript
- path "versions.yml" , emit: versions
+ tuple val(meta), path("Homo_sapiens.${genome}.${ensembl_version}.dna.primary_assembly.fa.gz"), emit: primary_assembly
+ tuple val(meta), path("gencode.v37.primary_assembly.annotation.gtf"), emit: primary_assembly_gtf
+
+ path "versions.yml" , emit: versions
script:
@@ -28,12 +31,13 @@ process ENSEMBL_DOWNLOAD {
wget ftp://ftp.ensembl.org/pub/release-${ensembl_version}/gtf/homo_sapiens/Homo_sapiens.${params.genome}.${ensembl_version}.gtf.gz
wget ftp://ftp.ensembl.org/pub/release-${ensembl_version}/gtf/homo_sapiens/Homo_sapiens.${params.genome}.${ensembl_version}.chr.gtf.gz
wget ftp://ftp.ensembl.org/pub/release-${ensembl_version}/fasta/homo_sapiens/cdna/Homo_sapiens.${params.genome}.cdna.all.fa.gz -O Homo_sapiens.${params.genome}.${ensembl_version}.cdna.all.fa.gz
-
+ wget ftp://ftp.ensembl.org/pub/release-${ensembl_version}/fasta/homo_sapiens/dna/Homo_sapiens.${params.genome}.dna.primary_assembly.fa.gz -O Homo_sapiens.${params.genome}.${ensembl_version}.dna.primary_assembly.fa.gz
+ wget https://ftp.ebi.ac.uk/pub/databases/gencode/Gencode_human/release_37/gencode.v37.primary_assembly.annotation.gtf.gz
gunzip -c Homo_sapiens.${params.genome}.dna.chromosome.* > Homo_sapiens.${params.genome}.${ensembl_version}.all.fa
gunzip Homo_sapiens.${params.genome}.${ensembl_version}.gtf.gz
gunzip Homo_sapiens.${params.genome}.${ensembl_version}.chr.gtf.gz
-
+ gunzip gencode.v37.primary_assembly.annotation.gtf.gz
cat <<-END_VERSIONS > versions.yml
"${task.process}":
diff --git a/modules/local/gffread.nf b/modules/local/gffread.nf
new file mode 100644
index 000000000..98863efa5
--- /dev/null
+++ b/modules/local/gffread.nf
@@ -0,0 +1,50 @@
+process GFFREAD {
+ tag "$gff"
+ label 'process_low'
+
+ conda "bioconda::gffread=0.12.1"
+ 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' }"
+
+ input:
+ tuple val(meta), path(gff)
+ tuple val(meta2), path(fasta), path(fai)
+
+ output:
+ path "*_gffread_output.gtf", emit: gtf, optional: true
+ path "*_gffread_output.fa" , emit: tr_fasta, optional: true
+ path "versions.yml" , emit: versions
+
+ when:
+ task.ext.when == null || task.ext.when
+
+ script:
+ def args = task.ext.args ?: ''
+ def genome = fasta ? "-g ${fasta}" : ''
+ def prefix = task.ext.prefix ?: "${meta.id}"
+ def outp = args.contains("-w") ? "-w ${prefix}_gffread_output.fa" : "-o ${prefix}_gffread_output.gtf"
+
+ """
+ gffread \\
+ $gff \\
+ $genome \\
+ $outp
+ cat <<-END_VERSIONS > versions.yml
+ "${task.process}":
+ gffread: \$(gffread --version 2>&1)
+ END_VERSIONS
+ """
+
+ stub:
+ def prefix = task.ext.prefix ?: "${meta.id}_gffread"
+ """
+ touch ${prefix}_gffread_output.gtf
+ touch ${prefix}_gffread_output.fa
+
+ cat <<-END_VERSIONS > versions.yml
+ "${task.process}":
+ gffread: \$(gffread --version 2>&1)
+ END_VERSIONS
+ """
+}
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
new file mode 100644
index 000000000..468a6f287
--- /dev/null
+++ b/modules/nf-core/gunzip/main.nf
@@ -0,0 +1,48 @@
+process GUNZIP {
+ tag "$archive"
+ label 'process_single'
+
+ conda "${moduleDir}/environment.yml"
+ container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ?
+ 'https://depot.galaxyproject.org/singularity/ubuntu:20.04' :
+ 'nf-core/ubuntu:20.04' }"
+
+ input:
+ tuple val(meta), path(archive)
+
+ output:
+ tuple val(meta), path("$gunzip"), emit: gunzip
+ path "versions.yml" , emit: versions
+
+ when:
+ task.ext.when == null || task.ext.when
+
+ script:
+ def args = task.ext.args ?: ''
+ gunzip = archive.toString() - '.gz'
+ """
+ # Not calling gunzip itself because it creates files
+ # with the original group ownership rather than the
+ # default one for that user / the work directory
+ gzip \\
+ -cd \\
+ $args \\
+ $archive \\
+ > $gunzip
+
+ cat <<-END_VERSIONS > versions.yml
+ "${task.process}":
+ gunzip: \$(echo \$(gunzip --version 2>&1) | sed 's/^.*(gzip) //; s/ Copyright.*\$//')
+ END_VERSIONS
+ """
+
+ stub:
+ gunzip = archive.toString() - '.gz'
+ """
+ touch $gunzip
+ cat <<-END_VERSIONS > versions.yml
+ "${task.process}":
+ gunzip: \$(echo \$(gunzip --version 2>&1) | sed 's/^.*(gzip) //; s/ Copyright.*\$//')
+ END_VERSIONS
+ """
+}
diff --git a/modules/nf-core/gunzip/meta.yml b/modules/nf-core/gunzip/meta.yml
new file mode 100644
index 000000000..231034f2f
--- /dev/null
+++ b/modules/nf-core/gunzip/meta.yml
@@ -0,0 +1,39 @@
+name: gunzip
+description: Compresses and decompresses files.
+keywords:
+ - gunzip
+ - compression
+ - decompression
+tools:
+ - gunzip:
+ description: |
+ gzip is a file format and a software application used for file compression and decompression.
+ documentation: https://www.gnu.org/software/gzip/manual/gzip.html
+ licence: ["GPL-3.0-or-later"]
+input:
+ - meta:
+ type: map
+ description: |
+ Optional groovy Map containing meta information
+ e.g. [ id:'test', single_end:false ]
+ - archive:
+ type: file
+ description: File to be compressed/uncompressed
+ pattern: "*.*"
+output:
+ - gunzip:
+ type: file
+ description: Compressed/uncompressed file
+ pattern: "*.*"
+ - versions:
+ type: file
+ description: File containing software versions
+ pattern: "versions.yml"
+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/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
new file mode 100644
index 000000000..44f76ebd6
--- /dev/null
+++ b/modules/nf-core/rsem/preparereference/main.nf
@@ -0,0 +1,72 @@
+process RSEM_PREPAREREFERENCE {
+ tag "$fasta"
+ label 'process_high'
+
+ 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' }"
+
+ input:
+ path fasta, stageAs: "rsem/*"
+ path gtf
+
+ output:
+ path "rsem" , emit: index
+ path "*transcripts.fa", emit: transcript_fasta
+ path "versions.yml" , emit: versions
+
+ when:
+ task.ext.when == null || task.ext.when
+
+ script:
+ def args = task.ext.args ?: ''
+ def args2 = task.ext.args2 ?: ''
+ def args_list = args.tokenize()
+ if (args_list.contains('--star')) {
+ args_list.removeIf { it.contains('--star') }
+ def memory = task.memory ? "--limitGenomeGenerateRAM ${task.memory.toBytes() - 100000000}" : ''
+ """
+ STAR \\
+ --runMode genomeGenerate \\
+ --genomeDir rsem/ \\
+ --genomeFastaFiles $fasta \\
+ --sjdbGTFfile $gtf \\
+ --runThreadN $task.cpus \\
+ $memory \\
+ $args2
+
+ rsem-prepare-reference \\
+ --gtf $gtf \\
+ --num-threads $task.cpus \\
+ ${args_list.join(' ')} \\
+ $fasta \\
+ rsem/genome
+
+ cp rsem/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
+ """
+ } else {
+ """
+ rsem-prepare-reference \\
+ --gtf $gtf \\
+ --num-threads $task.cpus \\
+ $args \\
+ $fasta \\
+ rsem/genome
+
+ cp rsem/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/meta.yml b/modules/nf-core/rsem/preparereference/meta.yml
new file mode 100644
index 000000000..05aa44fe6
--- /dev/null
+++ b/modules/nf-core/rsem/preparereference/meta.yml
@@ -0,0 +1,42 @@
+name: rsem_preparereference
+description: Prepare a reference genome for RSEM
+keywords:
+ - rsem
+ - genome
+ - index
+tools:
+ - rseqc:
+ description: |
+ RSEM: accurate transcript quantification from RNA-Seq data with or without a reference genome
+ homepage: https://github.com/deweylab/RSEM
+ documentation: https://github.com/deweylab/RSEM
+ doi: 10.1186/1471-2105-12-323
+ licence: ["GPL-3.0-or-later"]
+input:
+ - fasta:
+ type: file
+ description: The Fasta file of the reference genome
+ pattern: "*.{fasta,fa}"
+ - gtf:
+ type: file
+ description: The GTF file of the reference genome
+ pattern: "*.gtf"
+output:
+ - rsem:
+ type: directory
+ description: RSEM index directory
+ pattern: "rsem"
+ - transcript_fasta:
+ type: file
+ description: Fasta file of transcripts
+ pattern: "rsem/*transcripts.fa"
+ - versions:
+ type: file
+ description: File containing software versions
+ pattern: "versions.yml"
+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..4353d4d9b
--- /dev/null
+++ b/modules/nf-core/rsem/preparereference/tests/main.nf.test
@@ -0,0 +1,32 @@
+nextflow_process {
+
+ name "Test Process RSEM_PREPAREREFERENCE"
+ script "../main.nf"
+ process "RSEM_PREPAREREFERENCE"
+
+ test("homo_sapiens") {
+
+ 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/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/workflows/build_references.nf b/workflows/build_references.nf
index 151849820..293f00482 100644
--- a/workflows/build_references.nf
+++ b/workflows/build_references.nf
@@ -25,7 +25,9 @@ include { STAR_GENOMEGENERATE } from '../modules/nf-core/star/genome
include { GATK4_CREATESEQUENCEDICTIONARY } from '../modules/nf-core/gatk4/createsequencedictionary/main'
include { GATK4_BEDTOINTERVALLIST } from '../modules/nf-core/gatk4/bedtointervallist/main'
include { SALMON_INDEX } from '../modules/nf-core/salmon/index/main'
-
+include { RSEM_PREPAREREFERENCE } from '../modules/nf-core/rsem/preparereference'
+include { GFFREAD } from '../modules/local/gffread'
+ include { GUNZIP } from '../modules/nf-core/gunzip/main'
/*
========================================================================================
RUN MAIN WORKFLOW
@@ -37,48 +39,54 @@ workflow BUILD_REFERENCES {
def fake_meta = [:]
fake_meta.id = "Homo_sapiens.${params.genome}.${params.ensembl_version}"
ENSEMBL_DOWNLOAD( params.ensembl_version, params.genome, fake_meta )
- HGNC_DOWNLOAD( )
+ // HGNC_DOWNLOAD( )
+ GUNZIP(ENSEMBL_DOWNLOAD.out.primary_assembly)
+
+
+ SAMTOOLS_FAIDX(GUNZIP.out.gunzip, [[],[]])
+ // GATK4_CREATESEQUENCEDICTIONARY(ENSEMBL_DOWNLOAD.out.fasta)
+ // RRNA_TRANSCRIPTS(ENSEMBL_DOWNLOAD.out.gtf)
+ // CONVERT2BED(RRNA_TRANSCRIPTS.out.rrna_gtf)
- SAMTOOLS_FAIDX(ENSEMBL_DOWNLOAD.out.fasta, [[],[]])
- GATK4_CREATESEQUENCEDICTIONARY(ENSEMBL_DOWNLOAD.out.fasta)
+ // GATK4_BEDTOINTERVALLIST(CONVERT2BED.out.bed, GATK4_CREATESEQUENCEDICTIONARY.out.dict)
- RRNA_TRANSCRIPTS(ENSEMBL_DOWNLOAD.out.gtf)
- CONVERT2BED(RRNA_TRANSCRIPTS.out.rrna_gtf)
+ ch_fasta_fai =(GUNZIP.out.gunzip).join(SAMTOOLS_FAIDX.out.fai)
+ GFFREAD(ENSEMBL_DOWNLOAD.out.gtf, ch_fasta_fai)
+ SALMON_INDEX(GUNZIP.out.gunzip.map { meta, fasta -> [ fasta ] }, GFFREAD.out.tr_fasta)
- GATK4_BEDTOINTERVALLIST(CONVERT2BED.out.bed, GATK4_CREATESEQUENCEDICTIONARY.out.dict)
+ // RSEM_PREPAREREFERENCE(ENSEMBL_DOWNLOAD.out.fasta.map { meta, fasta -> [ fasta ] }, ENSEMBL_DOWNLOAD.out.gtf.map { meta, gtf -> [ gtf ] })
- SALMON_INDEX(ENSEMBL_DOWNLOAD.out.fasta, ENSEMBL_DOWNLOAD.out.gtf)
- if (params.starindex || params.all || params.starfusion || params.arriba) {
- STAR_GENOMEGENERATE( ENSEMBL_DOWNLOAD.out.fasta, ENSEMBL_DOWNLOAD.out.gtf )
- }
+ // if (params.starindex || params.all || params.starfusion || params.arriba) {
+ // STAR_GENOMEGENERATE( ENSEMBL_DOWNLOAD.out.fasta, ENSEMBL_DOWNLOAD.out.gtf )
+ // }
- if (params.arriba || params.all) {
- ARRIBA_DOWNLOAD()
- }
+ // if (params.arriba || params.all) {
+ // ARRIBA_DOWNLOAD()
+ // }
- if (params.fusioncatcher || params.all) {
- FUSIONCATCHER_DOWNLOAD()
- }
+ // if (params.fusioncatcher || params.all) {
+ // FUSIONCATCHER_DOWNLOAD()
+ // }
- if (params.starfusion || params.all) {
- if (params.starfusion_build){
- STARFUSION_BUILD( ENSEMBL_DOWNLOAD.out.fasta, ENSEMBL_DOWNLOAD.out.chrgtf )
- } else {
- STARFUSION_DOWNLOAD()
- }
- }
+ // if (params.starfusion || params.all) {
+ // if (params.starfusion_build){
+ // STARFUSION_BUILD( ENSEMBL_DOWNLOAD.out.fasta, ENSEMBL_DOWNLOAD.out.chrgtf )
+ // } else {
+ // STARFUSION_DOWNLOAD()
+ // }
+ // }
- if (params.starfusion_build){
- GTF_TO_REFFLAT(ENSEMBL_DOWNLOAD.out.chrgtf)
- } else {
- GTF_TO_REFFLAT(STARFUSION_DOWNLOAD.out.chrgtf)
- }
+ // if (params.starfusion_build){
+ // GTF_TO_REFFLAT(ENSEMBL_DOWNLOAD.out.chrgtf)
+ // } else {
+ // GTF_TO_REFFLAT(STARFUSION_DOWNLOAD.out.chrgtf)
+ // }
- if (params.fusionreport || params.all) {
- FUSIONREPORT_DOWNLOAD( params.cosmic_username, params.cosmic_passwd )
- }
+ // if (params.fusionreport || params.all) {
+ // FUSIONREPORT_DOWNLOAD( params.cosmic_username, params.cosmic_passwd )
+ // }
}
From 0a87206220786b38cf712d32af3e82f07145cbd5 Mon Sep 17 00:00:00 2001
From: Annick Renevey <47788523+rannick@users.noreply.github.com>
Date: Tue, 21 May 2024 11:08:05 +0200
Subject: [PATCH 016/887] update
---
modules.json | 118 +++++---
modules/nf-core/gffread/environment.yml | 7 +
modules/nf-core/gffread/main.nf | 60 ++++
modules/nf-core/gffread/meta.yml | 55 ++++
modules/nf-core/gffread/tests/main.nf.test | 223 ++++++++++++++
.../nf-core/gffread/tests/main.nf.test.snap | 272 ++++++++++++++++++
.../gffread/tests/nextflow-fasta.config | 5 +
.../gffread/tests/nextflow-gff3.config | 5 +
modules/nf-core/gffread/tests/nextflow.config | 5 +
modules/nf-core/gffread/tests/tags.yml | 2 +
.../rsem/preparereference/environment.yml | 8 -
modules/nf-core/rsem/preparereference/main.nf | 72 -----
.../nf-core/rsem/preparereference/meta.yml | 42 ---
.../rsem/preparereference/tests/main.nf.test | 32 ---
.../preparereference/tests/main.nf.test.snap | 35 ---
workflows/build_references.nf | 3 +-
16 files changed, 721 insertions(+), 223 deletions(-)
create mode 100644 modules/nf-core/gffread/environment.yml
create mode 100644 modules/nf-core/gffread/main.nf
create mode 100644 modules/nf-core/gffread/meta.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-fasta.config
create mode 100644 modules/nf-core/gffread/tests/nextflow-gff3.config
create mode 100644 modules/nf-core/gffread/tests/nextflow.config
create mode 100644 modules/nf-core/gffread/tests/tags.yml
delete mode 100644 modules/nf-core/rsem/preparereference/environment.yml
delete mode 100644 modules/nf-core/rsem/preparereference/main.nf
delete mode 100644 modules/nf-core/rsem/preparereference/meta.yml
delete mode 100644 modules/nf-core/rsem/preparereference/tests/main.nf.test
delete mode 100644 modules/nf-core/rsem/preparereference/tests/main.nf.test.snap
diff --git a/modules.json b/modules.json
index cb364b688..4aa2ebe57 100644
--- a/modules.json
+++ b/modules.json
@@ -8,122 +8,170 @@
"agat/convertspgff2tsv": {
"branch": "master",
"git_sha": "3f5420aa22e00bd030a2556dfdffc9e164ec0ec5",
- "installed_by": ["modules"]
+ "installed_by": [
+ "modules"
+ ]
},
"arriba": {
"branch": "master",
"git_sha": "ea9e2892a9d12e8769402f12096219942bcf6536",
- "installed_by": ["modules"]
+ "installed_by": [
+ "modules"
+ ]
},
"cat/cat": {
"branch": "master",
"git_sha": "3f5420aa22e00bd030a2556dfdffc9e164ec0ec5",
- "installed_by": ["modules"]
+ "installed_by": [
+ "modules"
+ ]
},
"cat/fastq": {
"branch": "master",
"git_sha": "3f5420aa22e00bd030a2556dfdffc9e164ec0ec5",
- "installed_by": ["modules"]
+ "installed_by": [
+ "modules"
+ ]
},
"fastp": {
"branch": "master",
"git_sha": "3f5420aa22e00bd030a2556dfdffc9e164ec0ec5",
- "installed_by": ["modules"]
+ "installed_by": [
+ "modules"
+ ]
},
"fastqc": {
"branch": "master",
"git_sha": "f4ae1d942bd50c5c0b9bd2de1393ce38315ba57c",
- "installed_by": ["modules"]
+ "installed_by": [
+ "modules"
+ ]
},
"gatk4/bedtointervallist": {
"branch": "master",
"git_sha": "3f5420aa22e00bd030a2556dfdffc9e164ec0ec5",
- "installed_by": ["modules"]
+ "installed_by": [
+ "modules"
+ ]
},
"gatk4/createsequencedictionary": {
"branch": "master",
"git_sha": "3f5420aa22e00bd030a2556dfdffc9e164ec0ec5",
- "installed_by": ["modules"]
+ "installed_by": [
+ "modules"
+ ]
},
"gatk4/markduplicates": {
"branch": "master",
"git_sha": "3f5420aa22e00bd030a2556dfdffc9e164ec0ec5",
- "installed_by": ["modules"]
+ "installed_by": [
+ "modules"
+ ]
+ },
+ "gffread": {
+ "branch": "master",
+ "git_sha": "6c996d7fbe0816dcbb68ce587ad5f873313682a1",
+ "installed_by": [
+ "modules"
+ ]
},
"gunzip": {
"branch": "master",
"git_sha": "3a5fef109d113b4997c9822198664ca5f2716208",
- "installed_by": ["modules"]
+ "installed_by": [
+ "modules"
+ ]
},
"multiqc": {
"branch": "master",
"git_sha": "b7ebe95761cd389603f9cc0e0dc384c0f663815a",
- "installed_by": ["modules"]
+ "installed_by": [
+ "modules"
+ ]
},
"picard/collectinsertsizemetrics": {
"branch": "master",
"git_sha": "3f5420aa22e00bd030a2556dfdffc9e164ec0ec5",
- "installed_by": ["modules"]
+ "installed_by": [
+ "modules"
+ ]
},
"picard/collectwgsmetrics": {
"branch": "master",
"git_sha": "3f5420aa22e00bd030a2556dfdffc9e164ec0ec5",
- "installed_by": ["modules"]
- },
- "rsem/preparereference": {
- "branch": "master",
- "git_sha": "301b088c7e9e00c4c80686411383f07173b54d69",
- "installed_by": ["modules"]
+ "installed_by": [
+ "modules"
+ ]
},
"salmon/index": {
"branch": "master",
"git_sha": "ffc101e1b84ef3df2e4e4a966e84b3c513ae5693",
- "installed_by": ["modules"]
+ "installed_by": [
+ "modules"
+ ]
},
"salmon/quant": {
"branch": "master",
"git_sha": "03a8562231d575c313266c193a980594b941e3ea",
- "installed_by": ["modules"]
+ "installed_by": [
+ "modules"
+ ]
},
"samtools/faidx": {
"branch": "master",
"git_sha": "3f5420aa22e00bd030a2556dfdffc9e164ec0ec5",
- "installed_by": ["modules"]
+ "installed_by": [
+ "modules"
+ ]
},
"samtools/index": {
"branch": "master",
"git_sha": "5394565c5fe4c760e5b35977ec7607c62e81d1f8",
- "installed_by": ["modules"]
+ "installed_by": [
+ "modules"
+ ]
},
"samtools/sort": {
"branch": "master",
"git_sha": "3f5420aa22e00bd030a2556dfdffc9e164ec0ec5",
- "installed_by": ["modules"]
+ "installed_by": [
+ "modules"
+ ]
},
"samtools/view": {
"branch": "master",
"git_sha": "3f5420aa22e00bd030a2556dfdffc9e164ec0ec5",
- "installed_by": ["modules"]
+ "installed_by": [
+ "modules"
+ ]
},
"star/align": {
"branch": "master",
"git_sha": "9f6b233518f7d9ecdcf24b798b7e491db5424273",
- "installed_by": ["modules"]
+ "installed_by": [
+ "modules"
+ ]
},
"star/genomegenerate": {
"branch": "master",
"git_sha": "0e98289b5bec6e3f8f588a8a9d05e8aacc1179a0",
- "installed_by": ["modules"]
+ "installed_by": [
+ "modules"
+ ]
},
"stringtie/merge": {
"branch": "master",
"git_sha": "b0dcb44b018d9b2bcb35b1abb7bcd34061bc5a6d",
- "installed_by": ["modules"]
+ "installed_by": [
+ "modules"
+ ]
},
"stringtie/stringtie": {
"branch": "master",
"git_sha": "b0dcb44b018d9b2bcb35b1abb7bcd34061bc5a6d",
- "installed_by": ["modules"]
+ "installed_by": [
+ "modules"
+ ]
}
}
},
@@ -132,20 +180,26 @@
"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/gffread/environment.yml b/modules/nf-core/gffread/environment.yml
new file mode 100644
index 000000000..c6df58ad0
--- /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.7
diff --git a/modules/nf-core/gffread/main.nf b/modules/nf-core/gffread/main.nf
new file mode 100644
index 000000000..da55cbab7
--- /dev/null
+++ b/modules/nf-core/gffread/main.nf
@@ -0,0 +1,60 @@
+process GFFREAD {
+ 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.7--hdcf5f25_4' :
+ 'biocontainers/gffread:0.12.7--hdcf5f25_4' }"
+
+ input:
+ tuple val(meta), path(gff)
+ path fasta
+
+ output:
+ 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 ?: "${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 \\
+ $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)
+ END_VERSIONS
+ """
+}
diff --git a/modules/nf-core/gffread/meta.yml b/modules/nf-core/gffread/meta.yml
new file mode 100644
index 000000000..c06028208
--- /dev/null
+++ b/modules/nf-core/gffread/meta.yml
@@ -0,0 +1,55 @@
+name: gffread
+description: Validate, filter, convert and perform various other operations on GFF files
+keywords:
+ - gff
+ - conversion
+ - validation
+tools:
+ - gffread:
+ description: GFF/GTF utility providing format conversions, region filtering, FASTA sequence extraction and more.
+ homepage: http://ccb.jhu.edu/software/stringtie/gff.shtml#gffread
+ documentation: http://ccb.jhu.edu/software/stringtie/gff.shtml#gffread
+ tool_dev_url: https://github.com/gpertea/gffread
+ 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
+ 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"
+ - 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
+ pattern: "versions.yml"
+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
new file mode 100644
index 000000000..4cd13dcd3
--- /dev/null
+++ b/modules/nf-core/gffread/tests/main.nf.test
@@ -0,0 +1,223 @@
+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] = [
+ [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 == [] }
+ )
+ }
+
+ }
+
+ 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 == [] }
+ )
+ }
+
+ }
+
+ test("sarscov2-gff3-gff3") {
+
+ 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] = []
+ """
+ }
+ }
+
+ 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] = []
+ """
+ }
+ }
+
+ then {
+ assertAll (
+ { assert process.success },
+ { 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
new file mode 100644
index 000000000..15262320d
--- /dev/null
+++ b/modules/nf-core/gffread/tests/main.nf.test.snap
@@ -0,0 +1,272 @@
+{
+ "sarscov2-gff3-gtf": {
+ "content": [
+ {
+ "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"
+ ]
+ }
+ ],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "23.10.1"
+ },
+ "timestamp": "2024-04-09T10:48:56.496187"
+ },
+ "sarscov2-gff3-gff3": {
+ "content": [
+ {
+ "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"
+ ]
+ }
+ ],
+ "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/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/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/rsem/preparereference/environment.yml b/modules/nf-core/rsem/preparereference/environment.yml
deleted file mode 100644
index c80e69106..000000000
--- a/modules/nf-core/rsem/preparereference/environment.yml
+++ /dev/null
@@ -1,8 +0,0 @@
-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
deleted file mode 100644
index 44f76ebd6..000000000
--- a/modules/nf-core/rsem/preparereference/main.nf
+++ /dev/null
@@ -1,72 +0,0 @@
-process RSEM_PREPAREREFERENCE {
- tag "$fasta"
- label 'process_high'
-
- 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' }"
-
- input:
- path fasta, stageAs: "rsem/*"
- path gtf
-
- output:
- path "rsem" , emit: index
- path "*transcripts.fa", emit: transcript_fasta
- path "versions.yml" , emit: versions
-
- when:
- task.ext.when == null || task.ext.when
-
- script:
- def args = task.ext.args ?: ''
- def args2 = task.ext.args2 ?: ''
- def args_list = args.tokenize()
- if (args_list.contains('--star')) {
- args_list.removeIf { it.contains('--star') }
- def memory = task.memory ? "--limitGenomeGenerateRAM ${task.memory.toBytes() - 100000000}" : ''
- """
- STAR \\
- --runMode genomeGenerate \\
- --genomeDir rsem/ \\
- --genomeFastaFiles $fasta \\
- --sjdbGTFfile $gtf \\
- --runThreadN $task.cpus \\
- $memory \\
- $args2
-
- rsem-prepare-reference \\
- --gtf $gtf \\
- --num-threads $task.cpus \\
- ${args_list.join(' ')} \\
- $fasta \\
- rsem/genome
-
- cp rsem/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
- """
- } else {
- """
- rsem-prepare-reference \\
- --gtf $gtf \\
- --num-threads $task.cpus \\
- $args \\
- $fasta \\
- rsem/genome
-
- cp rsem/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/meta.yml b/modules/nf-core/rsem/preparereference/meta.yml
deleted file mode 100644
index 05aa44fe6..000000000
--- a/modules/nf-core/rsem/preparereference/meta.yml
+++ /dev/null
@@ -1,42 +0,0 @@
-name: rsem_preparereference
-description: Prepare a reference genome for RSEM
-keywords:
- - rsem
- - genome
- - index
-tools:
- - rseqc:
- description: |
- RSEM: accurate transcript quantification from RNA-Seq data with or without a reference genome
- homepage: https://github.com/deweylab/RSEM
- documentation: https://github.com/deweylab/RSEM
- doi: 10.1186/1471-2105-12-323
- licence: ["GPL-3.0-or-later"]
-input:
- - fasta:
- type: file
- description: The Fasta file of the reference genome
- pattern: "*.{fasta,fa}"
- - gtf:
- type: file
- description: The GTF file of the reference genome
- pattern: "*.gtf"
-output:
- - rsem:
- type: directory
- description: RSEM index directory
- pattern: "rsem"
- - transcript_fasta:
- type: file
- description: Fasta file of transcripts
- pattern: "rsem/*transcripts.fa"
- - versions:
- type: file
- description: File containing software versions
- pattern: "versions.yml"
-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
deleted file mode 100644
index 4353d4d9b..000000000
--- a/modules/nf-core/rsem/preparereference/tests/main.nf.test
+++ /dev/null
@@ -1,32 +0,0 @@
-nextflow_process {
-
- name "Test Process RSEM_PREPAREREFERENCE"
- script "../main.nf"
- process "RSEM_PREPAREREFERENCE"
-
- test("homo_sapiens") {
-
- 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/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
deleted file mode 100644
index 02510659a..000000000
--- a/modules/nf-core/rsem/preparereference/tests/main.nf.test.snap
+++ /dev/null
@@ -1,35 +0,0 @@
-{
- "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/workflows/build_references.nf b/workflows/build_references.nf
index 293f00482..db28c2a8a 100644
--- a/workflows/build_references.nf
+++ b/workflows/build_references.nf
@@ -25,9 +25,8 @@ include { STAR_GENOMEGENERATE } from '../modules/nf-core/star/genome
include { GATK4_CREATESEQUENCEDICTIONARY } from '../modules/nf-core/gatk4/createsequencedictionary/main'
include { GATK4_BEDTOINTERVALLIST } from '../modules/nf-core/gatk4/bedtointervallist/main'
include { SALMON_INDEX } from '../modules/nf-core/salmon/index/main'
-include { RSEM_PREPAREREFERENCE } from '../modules/nf-core/rsem/preparereference'
include { GFFREAD } from '../modules/local/gffread'
- include { GUNZIP } from '../modules/nf-core/gunzip/main'
+include { GUNZIP } from '../modules/nf-core/gunzip/main'
/*
========================================================================================
RUN MAIN WORKFLOW
From 3be24cb69c63573a922da61a49a7bc85dbbbe301 Mon Sep 17 00:00:00 2001
From: Annick Renevey <47788523+rannick@users.noreply.github.com>
Date: Tue, 21 May 2024 11:09:28 +0200
Subject: [PATCH 017/887] fix merge conflicts
---
modules.json | 9 +--------
1 file changed, 1 insertion(+), 8 deletions(-)
diff --git a/modules.json b/modules.json
index 52ca63ff1..b9ae28bac 100644
--- a/modules.json
+++ b/modules.json
@@ -42,15 +42,8 @@
},
"fastqc": {
"branch": "master",
-<<<<<<< HEAD
- "git_sha": "f4ae1d942bd50c5c0b9bd2de1393ce38315ba57c",
- "installed_by": [
- "modules"
- ]
-=======
"git_sha": "285a50500f9e02578d90b3ce6382ea3c30216acd",
"installed_by": ["modules"]
->>>>>>> 973ee3ba5bd0fa00178dcfb917bb8cfab36d0243
},
"gatk4/bedtointervallist": {
"branch": "master",
@@ -212,4 +205,4 @@
}
}
}
-}
\ No newline at end of file
+}
From 002b9288486488f19f15523b138757cda7eec1f5 Mon Sep 17 00:00:00 2001
From: Annick Renevey <47788523+rannick@users.noreply.github.com>
Date: Tue, 21 May 2024 13:25:21 +0200
Subject: [PATCH 018/887] cleanup
---
conf/modules.config | 16 +++
modules.json | 119 ++++-----------
modules/local/ensembl/main.nf | 32 ++---
modules/nf-core/salmon/index/main.nf | 25 ++++
.../nf-core/salmon/index/tests/main.nf.test | 24 ++++
.../salmon/index/tests/main.nf.test.snap | 12 ++
modules/nf-core/salmon/quant/main.nf | 12 ++
.../nf-core/salmon/quant/tests/main.nf.test | 136 ++++++++++++++++++
.../salmon/quant/tests/main.nf.test.snap | 75 ++++++++++
nextflow.config | 1 +
nextflow_schema.json | 5 +
workflows/build_references.nf | 93 ++++++------
workflows/rnafusion.nf | 7 +
13 files changed, 399 insertions(+), 158 deletions(-)
diff --git a/conf/modules.config b/conf/modules.config
index 75b957ec8..696889c8e 100644
--- a/conf/modules.config
+++ b/conf/modules.config
@@ -181,6 +181,22 @@ process {
]
}
+ withName: 'SALMON_INDEX' {
+ publishDir = [
+ path: { "${params.genomes_base}/salmon" },
+ mode: params.publish_dir_mode,
+ saveAs: { filename -> filename.equals('versions.yml') ? null : filename },
+ ]
+ }
+
+ withName: 'SALMON_QUANT' {
+ publishDir = [
+ path: { "${params.outdir}/salmon" },
+ mode: params.publish_dir_mode,
+ saveAs: { filename -> filename.equals('versions.yml') ? null : filename },
+ ]
+ }
+
withName: 'SAMTOOLS_FAIDX' {
publishDir = [
path: { "${params.genomes_base}/ensembl" },
diff --git a/modules.json b/modules.json
index b9ae28bac..4157b3177 100644
--- a/modules.json
+++ b/modules.json
@@ -8,37 +8,27 @@
"agat/convertspgff2tsv": {
"branch": "master",
"git_sha": "3f5420aa22e00bd030a2556dfdffc9e164ec0ec5",
- "installed_by": [
- "modules"
- ]
+ "installed_by": ["modules"]
},
"arriba": {
"branch": "master",
- "git_sha": "ea9e2892a9d12e8769402f12096219942bcf6536",
- "installed_by": [
- "modules"
- ]
+ "git_sha": "bbaeb3a3149def237b9d0acb9ab749ae98088e29",
+ "installed_by": ["modules"]
},
"cat/cat": {
"branch": "master",
"git_sha": "3f5420aa22e00bd030a2556dfdffc9e164ec0ec5",
- "installed_by": [
- "modules"
- ]
+ "installed_by": ["modules"]
},
"cat/fastq": {
"branch": "master",
- "git_sha": "3f5420aa22e00bd030a2556dfdffc9e164ec0ec5",
- "installed_by": [
- "modules"
- ]
+ "git_sha": "02fd5bd7275abad27aad32d5c852e0a9b1b98882",
+ "installed_by": ["modules"]
},
"fastp": {
"branch": "master",
"git_sha": "3f5420aa22e00bd030a2556dfdffc9e164ec0ec5",
- "installed_by": [
- "modules"
- ]
+ "installed_by": ["modules"]
},
"fastqc": {
"branch": "master",
@@ -48,128 +38,92 @@
"gatk4/bedtointervallist": {
"branch": "master",
"git_sha": "3f5420aa22e00bd030a2556dfdffc9e164ec0ec5",
- "installed_by": [
- "modules"
- ]
+ "installed_by": ["modules"]
},
"gatk4/createsequencedictionary": {
"branch": "master",
"git_sha": "3f5420aa22e00bd030a2556dfdffc9e164ec0ec5",
- "installed_by": [
- "modules"
- ]
+ "installed_by": ["modules"]
},
"gatk4/markduplicates": {
"branch": "master",
"git_sha": "3f5420aa22e00bd030a2556dfdffc9e164ec0ec5",
- "installed_by": [
- "modules"
- ]
+ "installed_by": ["modules"]
},
"gffread": {
"branch": "master",
"git_sha": "6c996d7fbe0816dcbb68ce587ad5f873313682a1",
- "installed_by": [
- "modules"
- ]
+ "installed_by": ["modules"]
},
"gunzip": {
"branch": "master",
"git_sha": "3a5fef109d113b4997c9822198664ca5f2716208",
- "installed_by": [
- "modules"
- ]
+ "installed_by": ["modules"]
},
"multiqc": {
"branch": "master",
"git_sha": "b7ebe95761cd389603f9cc0e0dc384c0f663815a",
- "installed_by": [
- "modules"
- ]
+ "installed_by": ["modules"]
},
"picard/collectinsertsizemetrics": {
"branch": "master",
"git_sha": "3f5420aa22e00bd030a2556dfdffc9e164ec0ec5",
- "installed_by": [
- "modules"
- ]
+ "installed_by": ["modules"]
},
"picard/collectwgsmetrics": {
"branch": "master",
"git_sha": "3f5420aa22e00bd030a2556dfdffc9e164ec0ec5",
- "installed_by": [
- "modules"
- ]
+ "installed_by": ["modules"]
},
"salmon/index": {
"branch": "master",
- "git_sha": "ffc101e1b84ef3df2e4e4a966e84b3c513ae5693",
- "installed_by": [
- "modules"
- ]
+ "git_sha": "cb6b2b94fc40dea58f0b1e3dd095f3dd24f2ac8a",
+ "installed_by": ["modules"]
},
"salmon/quant": {
"branch": "master",
- "git_sha": "03a8562231d575c313266c193a980594b941e3ea",
- "installed_by": [
- "modules"
- ]
+ "git_sha": "cb6b2b94fc40dea58f0b1e3dd095f3dd24f2ac8a",
+ "installed_by": ["modules"]
},
"samtools/faidx": {
"branch": "master",
"git_sha": "3f5420aa22e00bd030a2556dfdffc9e164ec0ec5",
- "installed_by": [
- "modules"
- ]
+ "installed_by": ["modules"]
},
"samtools/index": {
"branch": "master",
"git_sha": "5394565c5fe4c760e5b35977ec7607c62e81d1f8",
- "installed_by": [
- "modules"
- ]
+ "installed_by": ["modules"]
},
"samtools/sort": {
"branch": "master",
"git_sha": "3f5420aa22e00bd030a2556dfdffc9e164ec0ec5",
- "installed_by": [
- "modules"
- ]
+ "installed_by": ["modules"]
},
"samtools/view": {
"branch": "master",
"git_sha": "3f5420aa22e00bd030a2556dfdffc9e164ec0ec5",
- "installed_by": [
- "modules"
- ]
+ "installed_by": ["modules"]
},
"star/align": {
"branch": "master",
"git_sha": "9f6b233518f7d9ecdcf24b798b7e491db5424273",
- "installed_by": [
- "modules"
- ]
+ "installed_by": ["modules"]
},
"star/genomegenerate": {
"branch": "master",
"git_sha": "0e98289b5bec6e3f8f588a8a9d05e8aacc1179a0",
- "installed_by": [
- "modules"
- ]
+ "installed_by": ["modules"]
},
"stringtie/merge": {
"branch": "master",
- "git_sha": "b0dcb44b018d9b2bcb35b1abb7bcd34061bc5a6d",
- "installed_by": [
- "modules"
- ]
+ "git_sha": "5756b12b1fab0c07f05b9ad2d5d5c262b1a2c1ef",
+ "installed_by": ["modules"]
},
"stringtie/stringtie": {
"branch": "master",
- "git_sha": "b0dcb44b018d9b2bcb35b1abb7bcd34061bc5a6d",
- "installed_by": [
- "modules"
- ]
+ "git_sha": "b1b959609bda44341120aed1766329909f54b8d0",
+ "installed_by": ["modules"]
}
}
},
@@ -178,28 +132,17 @@
"utils_nextflow_pipeline": {
"branch": "master",
"git_sha": "5caf7640a9ef1d18d765d55339be751bb0969dfa",
- "installed_by": [
- "subworkflows"
- ]
+ "installed_by": ["subworkflows"]
},
"utils_nfcore_pipeline": {
"branch": "master",
-<<<<<<< HEAD
- "git_sha": "5caf7640a9ef1d18d765d55339be751bb0969dfa",
- "installed_by": [
- "subworkflows"
- ]
-=======
"git_sha": "92de218a329bfc9a9033116eb5f65fd270e72ba3",
"installed_by": ["subworkflows"]
->>>>>>> 973ee3ba5bd0fa00178dcfb917bb8cfab36d0243
},
"utils_nfvalidation_plugin": {
"branch": "master",
"git_sha": "5caf7640a9ef1d18d765d55339be751bb0969dfa",
- "installed_by": [
- "subworkflows"
- ]
+ "installed_by": ["subworkflows"]
}
}
}
diff --git a/modules/local/ensembl/main.nf b/modules/local/ensembl/main.nf
index 90ef0e470..8297e2901 100644
--- a/modules/local/ensembl/main.nf
+++ b/modules/local/ensembl/main.nf
@@ -13,48 +13,40 @@ process ENSEMBL_DOWNLOAD {
val meta
output:
- tuple val(meta), path("Homo_sapiens.${genome}.${ensembl_version}.all.fa") , emit: fasta
- tuple val(meta), path("Homo_sapiens.${genome}.${ensembl_version}.gtf") , emit: gtf
- tuple val(meta), path("Homo_sapiens.${genome}.${ensembl_version}.chr.gtf") , emit: chrgtf
- tuple val(meta), path("Homo_sapiens.${genome}.${ensembl_version}.cdna.all.fa.gz"), emit: transcript
- tuple val(meta), path("Homo_sapiens.${genome}.${ensembl_version}.dna.primary_assembly.fa.gz"), emit: primary_assembly
- tuple val(meta), path("gencode.v37.primary_assembly.annotation.gtf"), emit: primary_assembly_gtf
-
- path "versions.yml" , emit: versions
+ tuple val(meta), path("Homo_sapiens.${genome}.${ensembl_version}.gtf") , emit: gtf
+ tuple val(meta), path("Homo_sapiens.${genome}.${ensembl_version}.dna.primary_assembly.fa") , emit: primary_assembly
+ tuple val(meta), path("Homo_sapiens.${genome}.${ensembl_version}.chr.gtf") , emit: chrgtf
+ path "versions.yml" , emit: versions
script:
"""
- wget ftp://ftp.ensembl.org/pub/release-${ensembl_version}/fasta/homo_sapiens/dna/Homo_sapiens.${params.genome}.dna.chromosome.{1..22}.fa.gz
- wget ftp://ftp.ensembl.org/pub/release-${ensembl_version}/fasta/homo_sapiens/dna/Homo_sapiens.${params.genome}.dna.chromosome.{MT,X,Y}.fa.gz
-
wget ftp://ftp.ensembl.org/pub/release-${ensembl_version}/gtf/homo_sapiens/Homo_sapiens.${params.genome}.${ensembl_version}.gtf.gz
- wget ftp://ftp.ensembl.org/pub/release-${ensembl_version}/gtf/homo_sapiens/Homo_sapiens.${params.genome}.${ensembl_version}.chr.gtf.gz
- wget ftp://ftp.ensembl.org/pub/release-${ensembl_version}/fasta/homo_sapiens/cdna/Homo_sapiens.${params.genome}.cdna.all.fa.gz -O Homo_sapiens.${params.genome}.${ensembl_version}.cdna.all.fa.gz
wget ftp://ftp.ensembl.org/pub/release-${ensembl_version}/fasta/homo_sapiens/dna/Homo_sapiens.${params.genome}.dna.primary_assembly.fa.gz -O Homo_sapiens.${params.genome}.${ensembl_version}.dna.primary_assembly.fa.gz
- wget https://ftp.ebi.ac.uk/pub/databases/gencode/Gencode_human/release_37/gencode.v37.primary_assembly.annotation.gtf.gz
- gunzip -c Homo_sapiens.${params.genome}.dna.chromosome.* > Homo_sapiens.${params.genome}.${ensembl_version}.all.fa
+ wget ftp://ftp.ensembl.org/pub/release-${ensembl_version}/gtf/homo_sapiens/Homo_sapiens.${params.genome}.${ensembl_version}.chr.gtf.gz
+
gunzip Homo_sapiens.${params.genome}.${ensembl_version}.gtf.gz
+ gunzip Homo_sapiens.${params.genome}.${ensembl_version}.dna.primary_assembly.fa.gz
gunzip Homo_sapiens.${params.genome}.${ensembl_version}.chr.gtf.gz
- gunzip gencode.v37.primary_assembly.annotation.gtf.gz
-
cat <<-END_VERSIONS > versions.yml
"${task.process}":
wget: \$(echo wget -V 2>&1 | grep "GNU Wget" | cut -d" " -f3 > versions.yml)
+ gunzip: \$(echo \$(gunzip --version 2>&1) | sed 's/^.*(gzip) //; s/ Copyright.*\$//')
+
END_VERSIONS
"""
stub:
"""
- touch "Homo_sapiens.${genome}.${ensembl_version}.all.fa"
touch "Homo_sapiens.${genome}.${ensembl_version}.gtf"
- touch "Homo_sapiens.${genome}.${ensembl_version}.chr.gtf"
- touch "Homo_sapiens.${genome}.${ensembl_version}.cdna.all.fa.gz"
+ touch "Homo_sapiens.${params.genome}.${ensembl_version}.dna.primary_assembly.fa"
+ touch "Homo_sapiens.${params.genome}.${ensembl_version}.chr.gtf"
cat <<-END_VERSIONS > versions.yml
"${task.process}":
wget: \$(echo wget -V 2>&1 | grep "GNU Wget" | cut -d" " -f3 > versions.yml)
+ gunzip: \$(echo \$(gunzip --version 2>&1) | sed 's/^.*(gzip) //; s/ Copyright.*\$//')
END_VERSIONS
"""
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 538b231b4..16b3c1a79 100644
--- a/modules/nf-core/salmon/index/tests/main.nf.test
+++ b/modules/nf-core/salmon/index/tests/main.nf.test
@@ -32,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 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 04e61e2b3..b387fac2a 100644
--- a/modules/nf-core/salmon/quant/tests/main.nf.test
+++ b/modules/nf-core/salmon/quant/tests/main.nf.test
@@ -54,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 {
@@ -86,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 {
@@ -121,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 {
@@ -157,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/nextflow.config b/nextflow.config
index 871f543c7..14127c38f 100644
--- a/nextflow.config
+++ b/nextflow.config
@@ -83,6 +83,7 @@ params {
fusioncatcher_ref = "${params.genomes_base}/fusioncatcher/human_v102"
hgnc_ref = "${params.genomes_base}/hgnc/hgnc_complete_set.txt"
hgnc_date = "${params.genomes_base}/hgnc/HGNC-DB-timestamp.txt"
+ salmon_index = "${params.genomes_base}/salmon/salmon"
starfusion_ref = "${params.genomes_base}/starfusion/ctat_genome_lib_build_dir"
starindex_ref = "${params.genomes_base}/star"
fusionreport_ref = "${params.genomes_base}/fusion_report_db"
diff --git a/nextflow_schema.json b/nextflow_schema.json
index 63c90c19d..69270631f 100644
--- a/nextflow_schema.json
+++ b/nextflow_schema.json
@@ -200,6 +200,11 @@
"fa_icon": "far fa-file-code",
"description": "Use QIAGEN instead of SANGER to download COSMIC database"
},
+ "salmon_index": {
+ "type": "string",
+ "fa_icon": "far fa-file-code",
+ "description": "Path to salmon index"
+ },
"starfusion": {
"type": "boolean",
"fa_icon": "far fa-file-code",
diff --git a/workflows/build_references.nf b/workflows/build_references.nf
index db28c2a8a..038f460ae 100644
--- a/workflows/build_references.nf
+++ b/workflows/build_references.nf
@@ -25,8 +25,8 @@ include { STAR_GENOMEGENERATE } from '../modules/nf-core/star/genome
include { GATK4_CREATESEQUENCEDICTIONARY } from '../modules/nf-core/gatk4/createsequencedictionary/main'
include { GATK4_BEDTOINTERVALLIST } from '../modules/nf-core/gatk4/bedtointervallist/main'
include { SALMON_INDEX } from '../modules/nf-core/salmon/index/main'
-include { GFFREAD } from '../modules/local/gffread'
-include { GUNZIP } from '../modules/nf-core/gunzip/main'
+include { GFFREAD } from '../modules/nf-core/gffread/main'
+
/*
========================================================================================
RUN MAIN WORKFLOW
@@ -38,54 +38,47 @@ workflow BUILD_REFERENCES {
def fake_meta = [:]
fake_meta.id = "Homo_sapiens.${params.genome}.${params.ensembl_version}"
ENSEMBL_DOWNLOAD( params.ensembl_version, params.genome, fake_meta )
- // HGNC_DOWNLOAD( )
- GUNZIP(ENSEMBL_DOWNLOAD.out.primary_assembly)
-
-
- SAMTOOLS_FAIDX(GUNZIP.out.gunzip, [[],[]])
- // GATK4_CREATESEQUENCEDICTIONARY(ENSEMBL_DOWNLOAD.out.fasta)
-
- // RRNA_TRANSCRIPTS(ENSEMBL_DOWNLOAD.out.gtf)
- // CONVERT2BED(RRNA_TRANSCRIPTS.out.rrna_gtf)
-
- // GATK4_BEDTOINTERVALLIST(CONVERT2BED.out.bed, GATK4_CREATESEQUENCEDICTIONARY.out.dict)
-
- ch_fasta_fai =(GUNZIP.out.gunzip).join(SAMTOOLS_FAIDX.out.fai)
- GFFREAD(ENSEMBL_DOWNLOAD.out.gtf, ch_fasta_fai)
- SALMON_INDEX(GUNZIP.out.gunzip.map { meta, fasta -> [ fasta ] }, GFFREAD.out.tr_fasta)
-
- // RSEM_PREPAREREFERENCE(ENSEMBL_DOWNLOAD.out.fasta.map { meta, fasta -> [ fasta ] }, ENSEMBL_DOWNLOAD.out.gtf.map { meta, gtf -> [ gtf ] })
-
-
- // if (params.starindex || params.all || params.starfusion || params.arriba) {
- // STAR_GENOMEGENERATE( ENSEMBL_DOWNLOAD.out.fasta, ENSEMBL_DOWNLOAD.out.gtf )
- // }
-
- // if (params.arriba || params.all) {
- // ARRIBA_DOWNLOAD()
- // }
-
- // if (params.fusioncatcher || params.all) {
- // FUSIONCATCHER_DOWNLOAD()
- // }
-
- // if (params.starfusion || params.all) {
- // if (params.starfusion_build){
- // STARFUSION_BUILD( ENSEMBL_DOWNLOAD.out.fasta, ENSEMBL_DOWNLOAD.out.chrgtf )
- // } else {
- // STARFUSION_DOWNLOAD()
- // }
- // }
-
- // if (params.starfusion_build){
- // GTF_TO_REFFLAT(ENSEMBL_DOWNLOAD.out.chrgtf)
- // } else {
- // GTF_TO_REFFLAT(STARFUSION_DOWNLOAD.out.chrgtf)
- // }
-
- // if (params.fusionreport || params.all) {
- // FUSIONREPORT_DOWNLOAD( params.cosmic_username, params.cosmic_passwd )
- // }
+ HGNC_DOWNLOAD( )
+ SAMTOOLS_FAIDX(ENSEMBL_DOWNLOAD.out.primary_assembly, [[],[]])
+ GATK4_CREATESEQUENCEDICTIONARY(ENSEMBL_DOWNLOAD.out.primary_assembly)
+
+ RRNA_TRANSCRIPTS(ENSEMBL_DOWNLOAD.out.gtf)
+ CONVERT2BED(RRNA_TRANSCRIPTS.out.rrna_gtf)
+
+ GATK4_BEDTOINTERVALLIST(CONVERT2BED.out.bed, GATK4_CREATESEQUENCEDICTIONARY.out.dict)
+
+ GFFREAD(ENSEMBL_DOWNLOAD.out.gtf, ENSEMBL_DOWNLOAD.out.primary_assembly.map { meta, fasta -> [ fasta ] })
+ SALMON_INDEX(ENSEMBL_DOWNLOAD.out.primary_assembly.map{ meta, fasta -> [ fasta ] }, GFFREAD.out.gffread_fasta.map{ meta, gffread_fasta -> [ gffread_fasta ] })
+
+ if (params.starindex || params.all || params.starfusion || params.arriba) {
+ STAR_GENOMEGENERATE( ENSEMBL_DOWNLOAD.out.fasta, ENSEMBL_DOWNLOAD.out.gtf )
+ }
+
+ if (params.arriba || params.all) {
+ ARRIBA_DOWNLOAD()
+ }
+
+ if (params.fusioncatcher || params.all) {
+ FUSIONCATCHER_DOWNLOAD()
+ }
+
+ if (params.starfusion || params.all) {
+ if (params.starfusion_build){
+ STARFUSION_BUILD( ENSEMBL_DOWNLOAD.out.fasta, ENSEMBL_DOWNLOAD.out.chrgtf )
+ } else {
+ STARFUSION_DOWNLOAD()
+ }
+ }
+
+ if (params.starfusion_build){
+ GTF_TO_REFFLAT(ENSEMBL_DOWNLOAD.out.chrgtf)
+ } else {
+ GTF_TO_REFFLAT(STARFUSION_DOWNLOAD.out.chrgtf)
+ }
+
+ if (params.fusionreport || params.all) {
+ FUSIONREPORT_DOWNLOAD( params.cosmic_username, params.cosmic_passwd )
+ }
}
diff --git a/workflows/rnafusion.nf b/workflows/rnafusion.nf
index 9837c7495..72c14ea1e 100644
--- a/workflows/rnafusion.nf
+++ b/workflows/rnafusion.nf
@@ -6,6 +6,7 @@
include { FASTQC } from '../modules/nf-core/fastqc/main'
include { MULTIQC } from '../modules/nf-core/multiqc/main'
+include { SALMON_QUANT } from '../modules/nf-core/salmon/quant/main'
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_rnafusion_pipeline'
@@ -25,6 +26,7 @@ ch_hgnc_ref = Channel.fromPath(params.hgnc_ref).map { it -> [[id:it.Name], it] }
ch_hgnc_date = Channel.fromPath(params.hgnc_date).map { it -> [[id:it.Name], it] }.collect()
ch_fasta = Channel.fromPath(params.fasta).map { it -> [[id:it.Name], it] }.collect()
ch_gtf = Channel.fromPath(params.gtf).map { it -> [[id:it.Name], it] }.collect()
+ch_salmon_index = Channel.fromPath(params.salmon_index).map { it -> [[id:it.Name], it] }.collect()
ch_transcript = Channel.fromPath(params.transcript).map { it -> [[id:it.Name], it] }.collect()
ch_fai = Channel.fromPath(params.fai).map { it -> [[id:it.Name], it] }.collect()
@@ -113,6 +115,7 @@ workflow RNAFUSION {
.set { ch_cat_fastq }
ch_versions = ch_versions.mix(CAT_FASTQ.out.versions)
+
//
// MODULE: Run FastQC
//
@@ -129,6 +132,10 @@ workflow RNAFUSION {
ch_reads_all = TRIM_WORKFLOW.out.ch_reads_all
ch_versions = ch_versions.mix(TRIM_WORKFLOW.out.versions)
+
+ SALMON_QUANT( ch_reads_all, ch_salmon_index, ch_gtf.map{ meta, gtf -> gtf }, [], false, 'A')
+
+
//
// SUBWORKFLOW: Run STAR alignment and Arriba
//
From 0999af252b16a8714a78b5d650d103f688a0e967 Mon Sep 17 00:00:00 2001
From: Annick Renevey <47788523+rannick@users.noreply.github.com>
Date: Tue, 21 May 2024 13:27:15 +0200
Subject: [PATCH 019/887] cleanup
---
subworkflows/local/qc_workflow.nf | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/subworkflows/local/qc_workflow.nf b/subworkflows/local/qc_workflow.nf
index 0bc37a601..d7958fecc 100644
--- a/subworkflows/local/qc_workflow.nf
+++ b/subworkflows/local/qc_workflow.nf
@@ -5,7 +5,7 @@
include { PICARD_COLLECTRNASEQMETRICS } from '../../modules/local/picard/collectrnaseqmetrics/main'
include { GATK4_MARKDUPLICATES } from '../../modules/nf-core/gatk4/markduplicates/main'
include { PICARD_COLLECTINSERTSIZEMETRICS } from '../../modules/nf-core/picard/collectinsertsizemetrics/main'
- include { SALMON_QUANT } from '../../modules/nf-core/salmon/quant/main'
+
workflow QC_WORKFLOW {
take:
ch_reads_all
@@ -32,7 +32,6 @@ workflow QC_WORKFLOW {
ch_versions = ch_versions.mix(PICARD_COLLECTINSERTSIZEMETRICS.out.versions)
ch_insertsize_metrics = Channel.empty().mix(PICARD_COLLECTINSERTSIZEMETRICS.out.metrics)
- SALMON_QUANT(ch_reads_all, salmon_index, ch_chrgtf.map { meta, gtf -> [ gtf ]}, transcript_fasta, true, '')
emit:
From 3f47ecdc693f1e47185be055a02558fceb7eae96 Mon Sep 17 00:00:00 2001
From: Annick Renevey <47788523+rannick@users.noreply.github.com>
Date: Tue, 21 May 2024 16:18:28 +0200
Subject: [PATCH 020/887] remove local gffread
---
modules/local/gffread.nf | 50 ----------------------------------------
1 file changed, 50 deletions(-)
delete mode 100644 modules/local/gffread.nf
diff --git a/modules/local/gffread.nf b/modules/local/gffread.nf
deleted file mode 100644
index 98863efa5..000000000
--- a/modules/local/gffread.nf
+++ /dev/null
@@ -1,50 +0,0 @@
-process GFFREAD {
- tag "$gff"
- label 'process_low'
-
- conda "bioconda::gffread=0.12.1"
- 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' }"
-
- input:
- tuple val(meta), path(gff)
- tuple val(meta2), path(fasta), path(fai)
-
- output:
- path "*_gffread_output.gtf", emit: gtf, optional: true
- path "*_gffread_output.fa" , emit: tr_fasta, optional: true
- path "versions.yml" , emit: versions
-
- when:
- task.ext.when == null || task.ext.when
-
- script:
- def args = task.ext.args ?: ''
- def genome = fasta ? "-g ${fasta}" : ''
- def prefix = task.ext.prefix ?: "${meta.id}"
- def outp = args.contains("-w") ? "-w ${prefix}_gffread_output.fa" : "-o ${prefix}_gffread_output.gtf"
-
- """
- gffread \\
- $gff \\
- $genome \\
- $outp
- cat <<-END_VERSIONS > versions.yml
- "${task.process}":
- gffread: \$(gffread --version 2>&1)
- END_VERSIONS
- """
-
- stub:
- def prefix = task.ext.prefix ?: "${meta.id}_gffread"
- """
- touch ${prefix}_gffread_output.gtf
- touch ${prefix}_gffread_output.fa
-
- cat <<-END_VERSIONS > versions.yml
- "${task.process}":
- gffread: \$(gffread --version 2>&1)
- END_VERSIONS
- """
-}
From 7f1065afe127e69db33fe13a34179e263c14235c Mon Sep 17 00:00:00 2001
From: Annick Renevey <47788523+rannick@users.noreply.github.com>
Date: Tue, 21 May 2024 16:21:53 +0200
Subject: [PATCH 021/887] use primary assembly as main fasta and gtf instead of
chr
---
workflows/build_references.nf | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/workflows/build_references.nf b/workflows/build_references.nf
index 038f460ae..5b523db3f 100644
--- a/workflows/build_references.nf
+++ b/workflows/build_references.nf
@@ -51,7 +51,7 @@ workflow BUILD_REFERENCES {
SALMON_INDEX(ENSEMBL_DOWNLOAD.out.primary_assembly.map{ meta, fasta -> [ fasta ] }, GFFREAD.out.gffread_fasta.map{ meta, gffread_fasta -> [ gffread_fasta ] })
if (params.starindex || params.all || params.starfusion || params.arriba) {
- STAR_GENOMEGENERATE( ENSEMBL_DOWNLOAD.out.fasta, ENSEMBL_DOWNLOAD.out.gtf )
+ STAR_GENOMEGENERATE( ENSEMBL_DOWNLOAD.out.primary_assembly, ENSEMBL_DOWNLOAD.out.gtf )
}
if (params.arriba || params.all) {
@@ -64,16 +64,16 @@ workflow BUILD_REFERENCES {
if (params.starfusion || params.all) {
if (params.starfusion_build){
- STARFUSION_BUILD( ENSEMBL_DOWNLOAD.out.fasta, ENSEMBL_DOWNLOAD.out.chrgtf )
+ STARFUSION_BUILD( ENSEMBL_DOWNLOAD.out.primary_assembly, ENSEMBL_DOWNLOAD.out.gtf )
} else {
STARFUSION_DOWNLOAD()
}
}
if (params.starfusion_build){
- GTF_TO_REFFLAT(ENSEMBL_DOWNLOAD.out.chrgtf)
+ GTF_TO_REFFLAT(ENSEMBL_DOWNLOAD.out.gtf)
} else {
- GTF_TO_REFFLAT(STARFUSION_DOWNLOAD.out.chrgtf)
+ GTF_TO_REFFLAT(STARFUSION_DOWNLOAD.out.gtf)
}
if (params.fusionreport || params.all) {
From e98df822b6b970ea7f964156f6ccd7adbcfbc5cd Mon Sep 17 00:00:00 2001
From: Annick Renevey <47788523+rannick@users.noreply.github.com>
Date: Tue, 21 May 2024 16:24:05 +0200
Subject: [PATCH 022/887] fix channel io
---
workflows/rnafusion.nf | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/workflows/rnafusion.nf b/workflows/rnafusion.nf
index 72c14ea1e..45fd77eb0 100644
--- a/workflows/rnafusion.nf
+++ b/workflows/rnafusion.nf
@@ -133,7 +133,7 @@ workflow RNAFUSION {
ch_versions = ch_versions.mix(TRIM_WORKFLOW.out.versions)
- SALMON_QUANT( ch_reads_all, ch_salmon_index, ch_gtf.map{ meta, gtf -> gtf }, [], false, 'A')
+ SALMON_QUANT( ch_reads_all, ch_salmon_index.map{ meta, index -> index }, ch_gtf.map{ meta, gtf -> gtf }, [], false, 'A')
//
From 8b599637cf4e9dd8a2300d166d1ae29db0d3f054 Mon Sep 17 00:00:00 2001
From: Annick Renevey <47788523+rannick@users.noreply.github.com>
Date: Tue, 21 May 2024 17:19:29 +0200
Subject: [PATCH 023/887] update changelog and output
---
CHANGELOG.md | 18 +++++++++++-------
docs/output.md | 13 +++++++++++++
2 files changed, 24 insertions(+), 7 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 18fabee33..5effdca59 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Added
+- Normalized gene expression calculated [#488](https://github.com/nf-core/rnafusion/pull/488)
+- Primary assembly now used as main reference genome FASTA file, as recommended by the STAR manual [#488](https://github.com/nf-core/rnafusion/pull/488)
+- Use of only ensembl GTF file, not chr.gtf file as GTF reference file [#488](https://github.com/nf-core/rnafusion/pull/488)
+
### Changed
### Fixed
@@ -24,12 +28,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Fixed
-- fix bug when using parameter "whitelist" [#466](https://github.com/nf-core/rnafusion/pull/466)
-- fix VCF_COLLECT handling when a tool is absent from FUSIONREPORT report [#458](https://github.com/nf-core/rnafusion/pull/458)
-- fix VCF_COLLECT when fusioninspector output is empty but fusionreport is not [#465](https://github.com/nf-core/rnafusion/pull/465)
-- fix VCF_COLLECT bug [#481](https://github.com/nf-core/rnafusion/pull/481)
-- fix conda package for starfusion/detect[#482](https://github.com/nf-core/rnafusion/pull/482)
-- fix logical gate so when stringtie should run but not starfusion, starfusion will not run[#482](https://github.com/nf-core/rnafusion/pull/482)
+- Fix bug when using parameter "whitelist" [#466](https://github.com/nf-core/rnafusion/pull/466)
+- Fix VCF_COLLECT handling when a tool is absent from FUSIONREPORT report [#458](https://github.com/nf-core/rnafusion/pull/458)
+- Fix VCF_COLLECT when fusioninspector output is empty but fusionreport is not [#465](https://github.com/nf-core/rnafusion/pull/465)
+- Fix VCF_COLLECT bug [#481](https://github.com/nf-core/rnafusion/pull/481)
+- Fix conda package for starfusion/detect[#482](https://github.com/nf-core/rnafusion/pull/482)
+- Fix logical gate so when stringtie should run but not starfusion, starfusion will not run[#482](https://github.com/nf-core/rnafusion/pull/482)
### Removed
@@ -39,7 +43,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Changed
-- python3 explicit in vcf_collect [#452](https://github.com/nf-core/rnafusion/pull/452)
+- Python3 explicit in vcf_collect [#452](https://github.com/nf-core/rnafusion/pull/452)
### Fixed
diff --git a/docs/output.md b/docs/output.md
index dede2c87b..128a2f365 100644
--- a/docs/output.md
+++ b/docs/output.md
@@ -23,6 +23,7 @@ The pipeline is built using [Nextflow](https://www.nextflow.io/) and processes d
- [Arriba visualisation](#arriba-visualisation) - Arriba visualisation report for FusionInspector fusions
- [Picard](#picard) - Collect QC metrics
- [FastQC](#fastqc) - Raw read quality control
+- [Salmon](#salmon) - Normalized gene expression calculation
- [MultiQC](#multiqc) - Aggregate reports describing QC results from the whole pipeline
- [Pipeline information](#pipeline-information) - Report metrics generated during the workflow execution
@@ -234,6 +235,18 @@ $$
All tools have the same weight.
+### Salmon
+
+
+Output files
+
+- `salmon`
+ - ``
+
+
+
+Folder containing the quantification results
+
### Kallisto
From 83e820a6524e3ac709f921ef922a25830296766e Mon Sep 17 00:00:00 2001
From: Annick Renevey <47788523+rannick@users.noreply.github.com>
Date: Wed, 22 May 2024 10:45:34 +0200
Subject: [PATCH 024/887] Update conf/modules.config
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Co-authored-by: Lucía Peña-Pérez
---
conf/modules.config | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/conf/modules.config b/conf/modules.config
index 696889c8e..a1fe17026 100644
--- a/conf/modules.config
+++ b/conf/modules.config
@@ -190,6 +190,10 @@ process {
}
withName: 'SALMON_QUANT' {
+ ext.args = { [
+ '--gcBias',
+ '--validateMappings'
+ ].join(' ') }
publishDir = [
path: { "${params.outdir}/salmon" },
mode: params.publish_dir_mode,
From 7a2aca5d42e0df71d2ffa65f8160d10ced94cb44 Mon Sep 17 00:00:00 2001
From: Annick Renevey <47788523+rannick@users.noreply.github.com>
Date: Wed, 22 May 2024 11:48:17 +0200
Subject: [PATCH 025/887] update modules and use rrnatranscript from nf-core
---
modules.json | 13 ++-
.../agat/convertspgff2tsv/environment.yml | 2 +-
modules/nf-core/agat/convertspgff2tsv/main.nf | 8 +-
.../nf-core/agat/convertspgff2tsv/meta.yml | 2 +
.../agat/convertspgff2tsv/tests/main.nf.test | 2 -
.../convertspgff2tsv/tests/main.nf.test.snap | 22 +++--
modules/nf-core/cat/fastq/tests/main.nf.test | 2 +
.../tests/main.nf.test | 56 ++++++++++++
.../tests/main.nf.test.snap | 68 +++++++++++++++
.../createsequencedictionary/tests/tags.yml | 2 +
.../nf-core/rrnatranscripts/environment.yml | 9 ++
modules/nf-core/rrnatranscripts/main.nf | 43 ++++++++++
modules/nf-core/rrnatranscripts/meta.yml | 31 +++++++
.../templates/get_rrna_transcripts.py | 85 +++++++++++++++++++
.../rrnatranscripts/tests/main.nf.test | 53 ++++++++++++
.../rrnatranscripts/tests/main.nf.test.snap | 40 +++++++++
.../nf-core/rrnatranscripts/tests/tags.yml | 2 +
modules/nf-core/ucsc/gtftogenepred/main.nf | 2 +-
workflows/build_references.nf | 11 +--
19 files changed, 429 insertions(+), 24 deletions(-)
create mode 100644 modules/nf-core/gatk4/createsequencedictionary/tests/main.nf.test
create mode 100644 modules/nf-core/gatk4/createsequencedictionary/tests/main.nf.test.snap
create mode 100644 modules/nf-core/gatk4/createsequencedictionary/tests/tags.yml
create mode 100644 modules/nf-core/rrnatranscripts/environment.yml
create mode 100644 modules/nf-core/rrnatranscripts/main.nf
create mode 100644 modules/nf-core/rrnatranscripts/meta.yml
create mode 100644 modules/nf-core/rrnatranscripts/templates/get_rrna_transcripts.py
create mode 100644 modules/nf-core/rrnatranscripts/tests/main.nf.test
create mode 100644 modules/nf-core/rrnatranscripts/tests/main.nf.test.snap
create mode 100644 modules/nf-core/rrnatranscripts/tests/tags.yml
diff --git a/modules.json b/modules.json
index eb75243ad..d8fe40315 100644
--- a/modules.json
+++ b/modules.json
@@ -7,7 +7,7 @@
"nf-core": {
"agat/convertspgff2tsv": {
"branch": "master",
- "git_sha": "9198082dcec6d8374c0bf3d7e38dd1f79d4601a7",
+ "git_sha": "b1d41826971b91f9649b46a8f3ccb226ee150c85",
"installed_by": ["modules"]
},
"arriba/arriba": {
@@ -32,7 +32,7 @@
},
"cat/fastq": {
"branch": "master",
- "git_sha": "0997b47c93c06b49aa7b3fefda87e728312cf2ca",
+ "git_sha": "4fc983ad0b30e6e32696fa7d980c76c7bfe1c03e",
"installed_by": ["modules"]
},
"fastp": {
@@ -52,7 +52,7 @@
},
"gatk4/createsequencedictionary": {
"branch": "master",
- "git_sha": "d742e3143f2ccb8853c29b35cfcf50b5e5026980",
+ "git_sha": "e6fe277739f5894711405af3e717b2470bd956b5",
"installed_by": ["modules"]
},
"gatk4/markduplicates": {
@@ -80,6 +80,11 @@
"git_sha": "20b0918591d4ba20047d7e13e5094bcceba81447",
"installed_by": ["modules"]
},
+ "rrnatranscripts": {
+ "branch": "master",
+ "git_sha": "7b17de553ee27a17478f6bf9df15acd26b1ef377",
+ "installed_by": ["modules"]
+ },
"samtools/faidx": {
"branch": "master",
"git_sha": "f153f1f10e1083c49935565844cccb7453021682",
@@ -122,7 +127,7 @@
},
"ucsc/gtftogenepred": {
"branch": "master",
- "git_sha": "3f5420aa22e00bd030a2556dfdffc9e164ec0ec5",
+ "git_sha": "acb0880789a6ebc2168d3b2d3d42b5bce6a62431",
"installed_by": ["modules"]
}
}
diff --git a/modules/nf-core/agat/convertspgff2tsv/environment.yml b/modules/nf-core/agat/convertspgff2tsv/environment.yml
index b5fdf3dbb..690f50ae5 100644
--- a/modules/nf-core/agat/convertspgff2tsv/environment.yml
+++ b/modules/nf-core/agat/convertspgff2tsv/environment.yml
@@ -4,4 +4,4 @@ channels:
- bioconda
- defaults
dependencies:
- - bioconda::agat=1.2.0
+ - bioconda::agat=1.4.0
diff --git a/modules/nf-core/agat/convertspgff2tsv/main.nf b/modules/nf-core/agat/convertspgff2tsv/main.nf
index 5cded33ef..a6f73b6c1 100644
--- a/modules/nf-core/agat/convertspgff2tsv/main.nf
+++ b/modules/nf-core/agat/convertspgff2tsv/main.nf
@@ -4,8 +4,8 @@ process AGAT_CONVERTSPGFF2TSV {
conda "${moduleDir}/environment.yml"
container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ?
- 'https://depot.galaxyproject.org/singularity/agat:1.2.0--pl5321hdfd78af_0' :
- 'biocontainers/agat:1.2.0--pl5321hdfd78af_0' }"
+ 'https://depot.galaxyproject.org/singularity/agat:1.4.0--pl5321hdfd78af_0' :
+ 'biocontainers/agat:1.4.0--pl5321hdfd78af_0' }"
input:
tuple val(meta), path(gff)
@@ -28,7 +28,7 @@ process AGAT_CONVERTSPGFF2TSV {
cat <<-END_VERSIONS > versions.yml
"${task.process}":
- agat: \$(agat_convert_sp_gff2tsv.pl --help | sed '3!d; s/.*v//' | sed 's/ .*//')
+ agat: \$(agat_convert_sp_gff2tsv.pl --help | sed -n 's/.*(AGAT) - Version: \\(.*\\) .*/\\1/p')
END_VERSIONS
"""
@@ -40,7 +40,7 @@ process AGAT_CONVERTSPGFF2TSV {
cat <<-END_VERSIONS > versions.yml
"${task.process}":
- agat: \$(agat_convert_sp_gff2tsv.pl --help | sed '3!d; s/.*v//' | sed 's/ .*//')
+ agat: \$(agat_convert_sp_gff2tsv.pl --help | sed -n 's/.*(AGAT) - Version: \\(.*\\) .*/\\1/p')
END_VERSIONS
"""
}
diff --git a/modules/nf-core/agat/convertspgff2tsv/meta.yml b/modules/nf-core/agat/convertspgff2tsv/meta.yml
index f5865dfe7..83078787b 100644
--- a/modules/nf-core/agat/convertspgff2tsv/meta.yml
+++ b/modules/nf-core/agat/convertspgff2tsv/meta.yml
@@ -36,3 +36,5 @@ output:
pattern: "versions.yml"
authors:
- "@rannick"
+maintainers:
+ - "@gallvp"
diff --git a/modules/nf-core/agat/convertspgff2tsv/tests/main.nf.test b/modules/nf-core/agat/convertspgff2tsv/tests/main.nf.test
index 41239a588..4898a4a9b 100644
--- a/modules/nf-core/agat/convertspgff2tsv/tests/main.nf.test
+++ b/modules/nf-core/agat/convertspgff2tsv/tests/main.nf.test
@@ -14,8 +14,6 @@ nextflow_process {
when {
process {
"""
- // TODO nf-core: define inputs of the process here. Example:
-
input[0] = [
[ id: 'test' ], // meta map
file(params.test_data['sarscov2']['genome']['genome_gff3'], checkIfExists: true)
diff --git a/modules/nf-core/agat/convertspgff2tsv/tests/main.nf.test.snap b/modules/nf-core/agat/convertspgff2tsv/tests/main.nf.test.snap
index cf21cd659..71ed6205c 100644
--- a/modules/nf-core/agat/convertspgff2tsv/tests/main.nf.test.snap
+++ b/modules/nf-core/agat/convertspgff2tsv/tests/main.nf.test.snap
@@ -3,10 +3,14 @@
"content": [
[
"test.tsv",
- "versions.yml:md5,07ae8e1f648a67237a7efeafb551f01c"
+ "versions.yml:md5,b81565a6ff8911848806128b3bec8508"
]
],
- "timestamp": "2023-12-24T23:55:30.786170144"
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "23.10.1"
+ },
+ "timestamp": "2024-05-08T10:06:55.853319"
},
"sarscov2 - genome [gff3]": {
"content": [
@@ -16,25 +20,29 @@
{
"id": "test"
},
- "test.tsv:md5,e565b8ee5bc69b0625046a8036fda552"
+ "test.tsv:md5,8373d2035689d23694f87606116cdccd"
]
],
"1": [
- "versions.yml:md5,07ae8e1f648a67237a7efeafb551f01c"
+ "versions.yml:md5,b81565a6ff8911848806128b3bec8508"
],
"tsv": [
[
{
"id": "test"
},
- "test.tsv:md5,e565b8ee5bc69b0625046a8036fda552"
+ "test.tsv:md5,8373d2035689d23694f87606116cdccd"
]
],
"versions": [
- "versions.yml:md5,07ae8e1f648a67237a7efeafb551f01c"
+ "versions.yml:md5,b81565a6ff8911848806128b3bec8508"
]
}
],
- "timestamp": "2023-12-24T23:55:20.642366893"
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "23.10.1"
+ },
+ "timestamp": "2024-05-08T10:06:51.415395"
}
}
\ No newline at end of file
diff --git a/modules/nf-core/cat/fastq/tests/main.nf.test b/modules/nf-core/cat/fastq/tests/main.nf.test
index dab2e14c0..a71dcb8df 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/gatk4/createsequencedictionary/tests/main.nf.test b/modules/nf-core/gatk4/createsequencedictionary/tests/main.nf.test
new file mode 100644
index 000000000..a8a9c6d2e
--- /dev/null
+++ b/modules/nf-core/gatk4/createsequencedictionary/tests/main.nf.test
@@ -0,0 +1,56 @@
+nextflow_process {
+
+ name "Test Process GATK4_CREATESEQUENCEDICTIONARY"
+ script "../main.nf"
+ process "GATK4_CREATESEQUENCEDICTIONARY"
+
+ tag "modules"
+ tag "modules_nfcore"
+ tag "gatk4"
+ tag "gatk4/createsequencedictionary"
+
+ test("sarscov2 - fasta") {
+
+ when {
+ process {
+ """
+ input[0] = [ [ 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("sarscov2 - fasta - stub") {
+
+ options "-stub"
+
+ when {
+ process {
+ """
+ input[0] = [ [ 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() }
+ )
+ }
+
+ }
+
+}
diff --git a/modules/nf-core/gatk4/createsequencedictionary/tests/main.nf.test.snap b/modules/nf-core/gatk4/createsequencedictionary/tests/main.nf.test.snap
new file mode 100644
index 000000000..16735f954
--- /dev/null
+++ b/modules/nf-core/gatk4/createsequencedictionary/tests/main.nf.test.snap
@@ -0,0 +1,68 @@
+{
+ "sarscov2 - fasta - stub": {
+ "content": [
+ {
+ "0": [
+ [
+ {
+ "id": "test"
+ },
+ "genome.dict:md5,d41d8cd98f00b204e9800998ecf8427e"
+ ]
+ ],
+ "1": [
+ "versions.yml:md5,e60dd34a71fc2029d81dc67ccb5d6be6"
+ ],
+ "dict": [
+ [
+ {
+ "id": "test"
+ },
+ "genome.dict:md5,d41d8cd98f00b204e9800998ecf8427e"
+ ]
+ ],
+ "versions": [
+ "versions.yml:md5,e60dd34a71fc2029d81dc67ccb5d6be6"
+ ]
+ }
+ ],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "23.10.0"
+ },
+ "timestamp": "2024-05-16T10:16:16.34453"
+ },
+ "sarscov2 - fasta": {
+ "content": [
+ {
+ "0": [
+ [
+ {
+ "id": "test"
+ },
+ "genome.dict:md5,7362679f176e0f52add03c08f457f646"
+ ]
+ ],
+ "1": [
+ "versions.yml:md5,e60dd34a71fc2029d81dc67ccb5d6be6"
+ ],
+ "dict": [
+ [
+ {
+ "id": "test"
+ },
+ "genome.dict:md5,7362679f176e0f52add03c08f457f646"
+ ]
+ ],
+ "versions": [
+ "versions.yml:md5,e60dd34a71fc2029d81dc67ccb5d6be6"
+ ]
+ }
+ ],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "23.10.0"
+ },
+ "timestamp": "2024-05-16T13:58:25.822068"
+ }
+}
\ No newline at end of file
diff --git a/modules/nf-core/gatk4/createsequencedictionary/tests/tags.yml b/modules/nf-core/gatk4/createsequencedictionary/tests/tags.yml
new file mode 100644
index 000000000..035c5e4c7
--- /dev/null
+++ b/modules/nf-core/gatk4/createsequencedictionary/tests/tags.yml
@@ -0,0 +1,2 @@
+gatk4/createsequencedictionary:
+ - "modules/nf-core/gatk4/createsequencedictionary/**"
diff --git a/modules/nf-core/rrnatranscripts/environment.yml b/modules/nf-core/rrnatranscripts/environment.yml
new file mode 100644
index 000000000..e812273bf
--- /dev/null
+++ b/modules/nf-core/rrnatranscripts/environment.yml
@@ -0,0 +1,9 @@
+---
+# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json
+name: "rrnatranscripts"
+channels:
+ - conda-forge
+ - bioconda
+ - defaults
+dependencies:
+ - python=3.12.2
diff --git a/modules/nf-core/rrnatranscripts/main.nf b/modules/nf-core/rrnatranscripts/main.nf
new file mode 100644
index 000000000..50843c768
--- /dev/null
+++ b/modules/nf-core/rrnatranscripts/main.nf
@@ -0,0 +1,43 @@
+process RRNATRANSCRIPTS {
+ tag '$rrna'
+ label 'process_single'
+
+ conda "${moduleDir}/environment.yml"
+ container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ?
+ 'https://depot.galaxyproject.org/singularity/python:3.12' :
+ 'biocontainers/python:3.12' }"
+
+ input:
+ path(gtf)
+
+ output:
+ path("*rrna_intervals.gtf") , emit: rrna_gtf, optional: true
+ path "versions.yml" , emit: versions
+
+ when:
+ task.ext.when == null || task.ext.when
+
+ script:
+ def prefix = task.ext.prefix ?: "${gtf.baseName}"
+ """
+ grep -E '^#|rRNA' genome.gtf > ${prefix}_rrna_intervals.gtf || true
+ if [ ! -s ${prefix}_rrna_intervals.gtf ]; then
+ rm ${prefix}_rrna_intervals.gtf
+ fi
+
+ cat <<-END_VERSIONS > versions.yml
+ "${task.process}":
+ python: \$(python --version | sed -e "s/Python //g")
+ END_VERSIONS
+ """
+
+ stub:
+ def prefix = task.ext.prefix ?: "${gtf.baseName}"
+ """
+ touch ${prefix}_rrna_intervals.gtf
+ cat <<-END_VERSIONS > versions.yml
+ "${task.process}":
+ python: \$(python --version | sed -e "s/Python //g")
+ END_VERSIONS
+ """
+}
diff --git a/modules/nf-core/rrnatranscripts/meta.yml b/modules/nf-core/rrnatranscripts/meta.yml
new file mode 100644
index 000000000..145506011
--- /dev/null
+++ b/modules/nf-core/rrnatranscripts/meta.yml
@@ -0,0 +1,31 @@
+name: rrnatranscripts
+description: Ribosomal RNA extraction from a GTF file.
+keywords:
+ - ribosomal
+ - rna
+ - genomics
+tools:
+ - rrnatranscripts:
+ description: |
+ Extraction of ribosomal RNA
+ homepage: https://github.com/nf-core/rnafusion
+ licence: ["GPL-3.0-or-later"]
+input:
+ - gtf:
+ type: file
+ description: GTF file
+ pattern: "*.{gtf}"
+output:
+ #
+ - versions:
+ type: file
+ description: File containing software versions
+ pattern: "versions.yml"
+ - rrna_gtf:
+ type: file
+ description: GTF file with ribosomal RNA only
+ pattern: "*.{gtf}"
+authors:
+ - "@rannick"
+maintainers:
+ - "@rannick"
diff --git a/modules/nf-core/rrnatranscripts/templates/get_rrna_transcripts.py b/modules/nf-core/rrnatranscripts/templates/get_rrna_transcripts.py
new file mode 100644
index 000000000..2e320e7bd
--- /dev/null
+++ b/modules/nf-core/rrnatranscripts/templates/get_rrna_transcripts.py
@@ -0,0 +1,85 @@
+#!/usr/bin/env python3
+
+import logging
+import platform
+import sys
+from pathlib import Path
+
+# Configure logging
+logging.basicConfig(format="%(name)s - %(asctime)s %(levelname)s: %(message)s")
+logger = logging.getLogger(__name__)
+logger.setLevel(logging.INFO)
+
+def get_rrna_intervals(gtf: str, rrna_transcripts: str):
+ """
+ Get lines containing ``#`` or ``gene_type rRNA`` or ```` or ``gene_type rRNA_pseudogene`` or ``gene_type MT_rRNA``
+ Create output file
+
+ Args:
+ file_in (pathlib.Path): The given GTF file.
+ file_out (pathlib.Path): Where the ribosomal RNA GTF file should
+ be created; always in GTF format.
+ """
+ patterns = {
+ "#",
+ 'transcript_biotype "Mt_rRNA"',
+ 'transcript_biotype "rRNA"',
+ 'transcript_biotype "rRNA_pseudogene"',
+ }
+ line_starts = {"MT", "1", "2", "3", "4", "5", "6", "7", "8", "9"}
+ out_lines = []
+ path_gtf = Path(gtf)
+ path_rrna_transcripts = Path(rrna_transcripts)
+ if not path_gtf.is_file():
+ logger.error(f"The given input file {gtf} was not found!")
+ sys.exit(2)
+ with path_gtf.open() as f:
+ data = f.readlines()
+ for line in data:
+ for pattern in patterns:
+ if pattern in line:
+ for line_start in line_starts:
+ if line.startswith(line_start):
+ out_lines.append(line)
+ if out_lines != []:
+ with path_rrna_transcripts.open(mode="w") as out_file:
+ out_file.writelines(out_lines)
+
+
+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
+
+
+if __name__ == "__main__":
+ if '${task.ext.prefix}' != "null":
+ prefix = "${task.ext.prefix}."
+ else:
+ prefix = "${task.ext.gtf}."
+
+ if not get_rrna_intervals('$gtf', f"{prefix}_rrna_intervals.gtf"):
+ logging.error("Failed to extract rrna transcipts.")
+
+
+
+ # 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/rrnatranscripts/tests/main.nf.test b/modules/nf-core/rrnatranscripts/tests/main.nf.test
new file mode 100644
index 000000000..1c29522ad
--- /dev/null
+++ b/modules/nf-core/rrnatranscripts/tests/main.nf.test
@@ -0,0 +1,53 @@
+nextflow_process {
+
+ name "Test Process RRNATRANSCRIPTS"
+ script "../main.nf"
+ process "RRNATRANSCRIPTS"
+
+ tag "modules"
+ tag "modules_nfcore"
+ tag "rrnatranscripts"
+
+ test("homo_sapiens - gtf") {
+
+ when {
+ process {
+ """
+ input[0] = [
+ file(params.test_data['homo_sapiens']['genome']['genome_gtf'], checkIfExists: true)
+ ] """
+ }
+ }
+
+ then {
+ assertAll(
+ { assert process.success },
+ { assert snapshot(process.out).match() }
+ )
+ }
+
+ }
+
+ test("homo_sapiens - gtf - stub") {
+
+ options "-stub"
+
+ when {
+ process {
+ """
+ input[0] = [
+ file(params.test_data['homo_sapiens']['genome']['genome_gtf'], checkIfExists: true)
+ ] """
+ }
+ }
+
+ then {
+ assertAll(
+ { assert process.success },
+ { assert snapshot(process.out).match() }
+ )
+ }
+
+ }
+
+}
diff --git a/modules/nf-core/rrnatranscripts/tests/main.nf.test.snap b/modules/nf-core/rrnatranscripts/tests/main.nf.test.snap
new file mode 100644
index 000000000..a190ddcbf
--- /dev/null
+++ b/modules/nf-core/rrnatranscripts/tests/main.nf.test.snap
@@ -0,0 +1,40 @@
+{
+ "homo_sapiens - gtf": {
+ "content": [
+ {
+ "0": [
+
+ ],
+ "1": [
+ "versions.yml:md5,fa2f785dbbe87a180f4254910957e01e"
+ ],
+ "rrna_gtf": [
+
+ ],
+ "versions": [
+ "versions.yml:md5,fa2f785dbbe87a180f4254910957e01e"
+ ]
+ }
+ ],
+ "timestamp": "2024-05-21T13:55:44.831609"
+ },
+ "homo_sapiens - gtf - stub": {
+ "content": [
+ {
+ "0": [
+ "genome_rrna_intervals.gtf:md5,d41d8cd98f00b204e9800998ecf8427e"
+ ],
+ "1": [
+ "versions.yml:md5,fa2f785dbbe87a180f4254910957e01e"
+ ],
+ "rrna_gtf": [
+ "genome_rrna_intervals.gtf:md5,d41d8cd98f00b204e9800998ecf8427e"
+ ],
+ "versions": [
+ "versions.yml:md5,fa2f785dbbe87a180f4254910957e01e"
+ ]
+ }
+ ],
+ "timestamp": "2024-05-21T13:55:56.134136"
+ }
+}
\ No newline at end of file
diff --git a/modules/nf-core/rrnatranscripts/tests/tags.yml b/modules/nf-core/rrnatranscripts/tests/tags.yml
new file mode 100644
index 000000000..ade15226a
--- /dev/null
+++ b/modules/nf-core/rrnatranscripts/tests/tags.yml
@@ -0,0 +1,2 @@
+rrnatranscripts:
+ - "modules/nf-core/rrnatranscripts/**"
diff --git a/modules/nf-core/ucsc/gtftogenepred/main.nf b/modules/nf-core/ucsc/gtftogenepred/main.nf
index 88aace26b..afbb5f3f9 100644
--- a/modules/nf-core/ucsc/gtftogenepred/main.nf
+++ b/modules/nf-core/ucsc/gtftogenepred/main.nf
@@ -1,5 +1,5 @@
process UCSC_GTFTOGENEPRED {
- tag '${meta.id}'
+ tag "${meta.id}"
label 'process_low'
conda "${moduleDir}/environment.yml"
diff --git a/workflows/build_references.nf b/workflows/build_references.nf
index b1ea6d70c..f492de601 100644
--- a/workflows/build_references.nf
+++ b/workflows/build_references.nf
@@ -10,7 +10,7 @@ include { FUSIONREPORT_DOWNLOAD } from '../modules/local/fusionreport/
include { HGNC_DOWNLOAD } from '../modules/local/hgnc/main'
include { STARFUSION_BUILD } from '../modules/local/starfusion/build/main'
include { STARFUSION_DOWNLOAD } from '../modules/local/starfusion/download/main'
-include { RRNA_TRANSCRIPTS } from '../modules/local/rrnatranscripts/main'
+
/*
========================================================================================
IMPORT NF-CORE MODULES/SUBWORKFLOWS
@@ -18,9 +18,10 @@ include { RRNA_TRANSCRIPTS } from '../modules/local/rrnatranscrip
*/
include { ARRIBA_DOWNLOAD } from '../modules/nf-core/arriba/download/main'
-include { BEDOPS_CONVERT2BED } from '../modules/nf-core/bedops/convert2bed/main'
+include { BEDOPS_CONVERT2BED } from '../modules/nf-core/bedops/convert2bed/main'
include { GATK4_BEDTOINTERVALLIST } from '../modules/nf-core/gatk4/bedtointervallist/main'
include { GATK4_CREATESEQUENCEDICTIONARY } from '../modules/nf-core/gatk4/createsequencedictionary/main'
+include { RRNATRANSCRIPTS } from '../modules/nf-core/rrnatranscripts/main'
include { SAMTOOLS_FAIDX } from '../modules/nf-core/samtools/faidx/main'
include { STAR_GENOMEGENERATE } from '../modules/nf-core/star/genomegenerate/main'
include { UCSC_GTFTOGENEPRED } from '../modules/nf-core/ucsc/gtftogenepred/main'
@@ -36,14 +37,14 @@ workflow BUILD_REFERENCES {
def fake_meta = [:]
fake_meta.id = "Homo_sapiens.${params.genome}.${params.ensembl_version}"
ENSEMBL_DOWNLOAD( params.ensembl_version, params.genome, fake_meta )
- HGNC_DOWNLOAD( )
+ HGNC_DOWNLOAD()
SAMTOOLS_FAIDX(ENSEMBL_DOWNLOAD.out.fasta, [[],[]])
GATK4_CREATESEQUENCEDICTIONARY(ENSEMBL_DOWNLOAD.out.fasta)
- RRNA_TRANSCRIPTS(ENSEMBL_DOWNLOAD.out.gtf)
- BEDOPS_CONVERT2BED(RRNA_TRANSCRIPTS.out.rrna_gtf)
+ RRNATRANSCRIPTS(ENSEMBL_DOWNLOAD.out.gtf.map{ meta, gtf -> [ gtf ] })
+ BEDOPS_CONVERT2BED([fake_meta.mix(RRNATRANSCRIPTS.out.rrna_gtf)])
GATK4_BEDTOINTERVALLIST(BEDOPS_CONVERT2BED.out.bed, GATK4_CREATESEQUENCEDICTIONARY.out.dict)
From c8b33090e8ca3364ac80e8f690594978fd8bbb29 Mon Sep 17 00:00:00 2001
From: Annick Renevey <47788523+rannick@users.noreply.github.com>
Date: Wed, 22 May 2024 12:50:20 +0200
Subject: [PATCH 026/887] fix channel io
---
workflows/build_references.nf | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/workflows/build_references.nf b/workflows/build_references.nf
index f492de601..32bfdce53 100644
--- a/workflows/build_references.nf
+++ b/workflows/build_references.nf
@@ -44,8 +44,7 @@ workflow BUILD_REFERENCES {
GATK4_CREATESEQUENCEDICTIONARY(ENSEMBL_DOWNLOAD.out.fasta)
RRNATRANSCRIPTS(ENSEMBL_DOWNLOAD.out.gtf.map{ meta, gtf -> [ gtf ] })
- BEDOPS_CONVERT2BED([fake_meta.mix(RRNATRANSCRIPTS.out.rrna_gtf)])
-
+ BEDOPS_CONVERT2BED(RRNATRANSCRIPTS.out.rrna_gtf.map{ it -> [[id:it.Name], it] })
GATK4_BEDTOINTERVALLIST(BEDOPS_CONVERT2BED.out.bed, GATK4_CREATESEQUENCEDICTIONARY.out.dict)
From eeeb9aebacb895e6808f0eaf12765a80a35af79d Mon Sep 17 00:00:00 2001
From: Annick Renevey <47788523+rannick@users.noreply.github.com>
Date: Wed, 22 May 2024 12:55:33 +0200
Subject: [PATCH 027/887] remove gunzip
---
modules.json | 111 +++++++++++++-----
modules/nf-core/gunzip/environment.yml | 7 --
modules/nf-core/gunzip/main.nf | 48 --------
modules/nf-core/gunzip/meta.yml | 39 ------
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 -
7 files changed, 79 insertions(+), 195 deletions(-)
delete mode 100644 modules/nf-core/gunzip/environment.yml
delete mode 100644 modules/nf-core/gunzip/main.nf
delete mode 100644 modules/nf-core/gunzip/meta.yml
delete mode 100644 modules/nf-core/gunzip/tests/main.nf.test
delete mode 100644 modules/nf-core/gunzip/tests/main.nf.test.snap
delete mode 100644 modules/nf-core/gunzip/tests/tags.yml
diff --git a/modules.json b/modules.json
index 4157b3177..fded9d460 100644
--- a/modules.json
+++ b/modules.json
@@ -8,122 +8,163 @@
"agat/convertspgff2tsv": {
"branch": "master",
"git_sha": "3f5420aa22e00bd030a2556dfdffc9e164ec0ec5",
- "installed_by": ["modules"]
+ "installed_by": [
+ "modules"
+ ]
},
"arriba": {
"branch": "master",
"git_sha": "bbaeb3a3149def237b9d0acb9ab749ae98088e29",
- "installed_by": ["modules"]
+ "installed_by": [
+ "modules"
+ ]
},
"cat/cat": {
"branch": "master",
"git_sha": "3f5420aa22e00bd030a2556dfdffc9e164ec0ec5",
- "installed_by": ["modules"]
+ "installed_by": [
+ "modules"
+ ]
},
"cat/fastq": {
"branch": "master",
"git_sha": "02fd5bd7275abad27aad32d5c852e0a9b1b98882",
- "installed_by": ["modules"]
+ "installed_by": [
+ "modules"
+ ]
},
"fastp": {
"branch": "master",
"git_sha": "3f5420aa22e00bd030a2556dfdffc9e164ec0ec5",
- "installed_by": ["modules"]
+ "installed_by": [
+ "modules"
+ ]
},
"fastqc": {
"branch": "master",
"git_sha": "285a50500f9e02578d90b3ce6382ea3c30216acd",
- "installed_by": ["modules"]
+ "installed_by": [
+ "modules"
+ ]
},
"gatk4/bedtointervallist": {
"branch": "master",
"git_sha": "3f5420aa22e00bd030a2556dfdffc9e164ec0ec5",
- "installed_by": ["modules"]
+ "installed_by": [
+ "modules"
+ ]
},
"gatk4/createsequencedictionary": {
"branch": "master",
"git_sha": "3f5420aa22e00bd030a2556dfdffc9e164ec0ec5",
- "installed_by": ["modules"]
+ "installed_by": [
+ "modules"
+ ]
},
"gatk4/markduplicates": {
"branch": "master",
"git_sha": "3f5420aa22e00bd030a2556dfdffc9e164ec0ec5",
- "installed_by": ["modules"]
+ "installed_by": [
+ "modules"
+ ]
},
"gffread": {
"branch": "master",
"git_sha": "6c996d7fbe0816dcbb68ce587ad5f873313682a1",
- "installed_by": ["modules"]
- },
- "gunzip": {
- "branch": "master",
- "git_sha": "3a5fef109d113b4997c9822198664ca5f2716208",
- "installed_by": ["modules"]
+ "installed_by": [
+ "modules"
+ ]
},
"multiqc": {
"branch": "master",
"git_sha": "b7ebe95761cd389603f9cc0e0dc384c0f663815a",
- "installed_by": ["modules"]
+ "installed_by": [
+ "modules"
+ ]
},
"picard/collectinsertsizemetrics": {
"branch": "master",
"git_sha": "3f5420aa22e00bd030a2556dfdffc9e164ec0ec5",
- "installed_by": ["modules"]
+ "installed_by": [
+ "modules"
+ ]
},
"picard/collectwgsmetrics": {
"branch": "master",
"git_sha": "3f5420aa22e00bd030a2556dfdffc9e164ec0ec5",
- "installed_by": ["modules"]
+ "installed_by": [
+ "modules"
+ ]
},
"salmon/index": {
"branch": "master",
"git_sha": "cb6b2b94fc40dea58f0b1e3dd095f3dd24f2ac8a",
- "installed_by": ["modules"]
+ "installed_by": [
+ "modules"
+ ]
},
"salmon/quant": {
"branch": "master",
"git_sha": "cb6b2b94fc40dea58f0b1e3dd095f3dd24f2ac8a",
- "installed_by": ["modules"]
+ "installed_by": [
+ "modules"
+ ]
},
"samtools/faidx": {
"branch": "master",
"git_sha": "3f5420aa22e00bd030a2556dfdffc9e164ec0ec5",
- "installed_by": ["modules"]
+ "installed_by": [
+ "modules"
+ ]
},
"samtools/index": {
"branch": "master",
"git_sha": "5394565c5fe4c760e5b35977ec7607c62e81d1f8",
- "installed_by": ["modules"]
+ "installed_by": [
+ "modules"
+ ]
},
"samtools/sort": {
"branch": "master",
"git_sha": "3f5420aa22e00bd030a2556dfdffc9e164ec0ec5",
- "installed_by": ["modules"]
+ "installed_by": [
+ "modules"
+ ]
},
"samtools/view": {
"branch": "master",
"git_sha": "3f5420aa22e00bd030a2556dfdffc9e164ec0ec5",
- "installed_by": ["modules"]
+ "installed_by": [
+ "modules"
+ ]
},
"star/align": {
"branch": "master",
"git_sha": "9f6b233518f7d9ecdcf24b798b7e491db5424273",
- "installed_by": ["modules"]
+ "installed_by": [
+ "modules"
+ ]
},
"star/genomegenerate": {
"branch": "master",
"git_sha": "0e98289b5bec6e3f8f588a8a9d05e8aacc1179a0",
- "installed_by": ["modules"]
+ "installed_by": [
+ "modules"
+ ]
},
"stringtie/merge": {
"branch": "master",
"git_sha": "5756b12b1fab0c07f05b9ad2d5d5c262b1a2c1ef",
- "installed_by": ["modules"]
+ "installed_by": [
+ "modules"
+ ]
},
"stringtie/stringtie": {
"branch": "master",
"git_sha": "b1b959609bda44341120aed1766329909f54b8d0",
- "installed_by": ["modules"]
+ "installed_by": [
+ "modules"
+ ]
}
}
},
@@ -132,20 +173,26 @@
"utils_nextflow_pipeline": {
"branch": "master",
"git_sha": "5caf7640a9ef1d18d765d55339be751bb0969dfa",
- "installed_by": ["subworkflows"]
+ "installed_by": [
+ "subworkflows"
+ ]
},
"utils_nfcore_pipeline": {
"branch": "master",
"git_sha": "92de218a329bfc9a9033116eb5f65fd270e72ba3",
- "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/gunzip/environment.yml b/modules/nf-core/gunzip/environment.yml
deleted file mode 100644
index 25910b340..000000000
--- a/modules/nf-core/gunzip/environment.yml
+++ /dev/null
@@ -1,7 +0,0 @@
-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
deleted file mode 100644
index 468a6f287..000000000
--- a/modules/nf-core/gunzip/main.nf
+++ /dev/null
@@ -1,48 +0,0 @@
-process GUNZIP {
- tag "$archive"
- label 'process_single'
-
- conda "${moduleDir}/environment.yml"
- container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ?
- 'https://depot.galaxyproject.org/singularity/ubuntu:20.04' :
- 'nf-core/ubuntu:20.04' }"
-
- input:
- tuple val(meta), path(archive)
-
- output:
- tuple val(meta), path("$gunzip"), emit: gunzip
- path "versions.yml" , emit: versions
-
- when:
- task.ext.when == null || task.ext.when
-
- script:
- def args = task.ext.args ?: ''
- gunzip = archive.toString() - '.gz'
- """
- # Not calling gunzip itself because it creates files
- # with the original group ownership rather than the
- # default one for that user / the work directory
- gzip \\
- -cd \\
- $args \\
- $archive \\
- > $gunzip
-
- cat <<-END_VERSIONS > versions.yml
- "${task.process}":
- gunzip: \$(echo \$(gunzip --version 2>&1) | sed 's/^.*(gzip) //; s/ Copyright.*\$//')
- END_VERSIONS
- """
-
- stub:
- gunzip = archive.toString() - '.gz'
- """
- touch $gunzip
- cat <<-END_VERSIONS > versions.yml
- "${task.process}":
- gunzip: \$(echo \$(gunzip --version 2>&1) | sed 's/^.*(gzip) //; s/ Copyright.*\$//')
- END_VERSIONS
- """
-}
diff --git a/modules/nf-core/gunzip/meta.yml b/modules/nf-core/gunzip/meta.yml
deleted file mode 100644
index 231034f2f..000000000
--- a/modules/nf-core/gunzip/meta.yml
+++ /dev/null
@@ -1,39 +0,0 @@
-name: gunzip
-description: Compresses and decompresses files.
-keywords:
- - gunzip
- - compression
- - decompression
-tools:
- - gunzip:
- description: |
- gzip is a file format and a software application used for file compression and decompression.
- documentation: https://www.gnu.org/software/gzip/manual/gzip.html
- licence: ["GPL-3.0-or-later"]
-input:
- - meta:
- type: map
- description: |
- Optional groovy Map containing meta information
- e.g. [ id:'test', single_end:false ]
- - archive:
- type: file
- description: File to be compressed/uncompressed
- pattern: "*.*"
-output:
- - gunzip:
- type: file
- description: Compressed/uncompressed file
- pattern: "*.*"
- - versions:
- type: file
- description: File containing software versions
- pattern: "versions.yml"
-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
deleted file mode 100644
index 6406008ef..000000000
--- a/modules/nf-core/gunzip/tests/main.nf.test
+++ /dev/null
@@ -1,36 +0,0 @@
-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
deleted file mode 100644
index 720fd9ff4..000000000
--- a/modules/nf-core/gunzip/tests/main.nf.test.snap
+++ /dev/null
@@ -1,31 +0,0 @@
-{
- "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
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/**
From 6d08a74d6f0fc6fc718e9ec96d14bf2200dc5c3c Mon Sep 17 00:00:00 2001
From: Annick Renevey <47788523+rannick@users.noreply.github.com>
Date: Wed, 22 May 2024 13:03:31 +0200
Subject: [PATCH 028/887] prettier
---
modules.json | 106 +++++++++++++--------------------------------------
1 file changed, 27 insertions(+), 79 deletions(-)
diff --git a/modules.json b/modules.json
index fded9d460..7f4cf0efc 100644
--- a/modules.json
+++ b/modules.json
@@ -8,163 +8,117 @@
"agat/convertspgff2tsv": {
"branch": "master",
"git_sha": "3f5420aa22e00bd030a2556dfdffc9e164ec0ec5",
- "installed_by": [
- "modules"
- ]
+ "installed_by": ["modules"]
},
"arriba": {
"branch": "master",
"git_sha": "bbaeb3a3149def237b9d0acb9ab749ae98088e29",
- "installed_by": [
- "modules"
- ]
+ "installed_by": ["modules"]
},
"cat/cat": {
"branch": "master",
"git_sha": "3f5420aa22e00bd030a2556dfdffc9e164ec0ec5",
- "installed_by": [
- "modules"
- ]
+ "installed_by": ["modules"]
},
"cat/fastq": {
"branch": "master",
"git_sha": "02fd5bd7275abad27aad32d5c852e0a9b1b98882",
- "installed_by": [
- "modules"
- ]
+ "installed_by": ["modules"]
},
"fastp": {
"branch": "master",
"git_sha": "3f5420aa22e00bd030a2556dfdffc9e164ec0ec5",
- "installed_by": [
- "modules"
- ]
+ "installed_by": ["modules"]
},
"fastqc": {
"branch": "master",
"git_sha": "285a50500f9e02578d90b3ce6382ea3c30216acd",
- "installed_by": [
- "modules"
- ]
+ "installed_by": ["modules"]
},
"gatk4/bedtointervallist": {
"branch": "master",
"git_sha": "3f5420aa22e00bd030a2556dfdffc9e164ec0ec5",
- "installed_by": [
- "modules"
- ]
+ "installed_by": ["modules"]
},
"gatk4/createsequencedictionary": {
"branch": "master",
"git_sha": "3f5420aa22e00bd030a2556dfdffc9e164ec0ec5",
- "installed_by": [
- "modules"
- ]
+ "installed_by": ["modules"]
},
"gatk4/markduplicates": {
"branch": "master",
"git_sha": "3f5420aa22e00bd030a2556dfdffc9e164ec0ec5",
- "installed_by": [
- "modules"
- ]
+ "installed_by": ["modules"]
},
"gffread": {
"branch": "master",
"git_sha": "6c996d7fbe0816dcbb68ce587ad5f873313682a1",
- "installed_by": [
- "modules"
- ]
+ "installed_by": ["modules"]
},
"multiqc": {
"branch": "master",
"git_sha": "b7ebe95761cd389603f9cc0e0dc384c0f663815a",
- "installed_by": [
- "modules"
- ]
+ "installed_by": ["modules"]
},
"picard/collectinsertsizemetrics": {
"branch": "master",
"git_sha": "3f5420aa22e00bd030a2556dfdffc9e164ec0ec5",
- "installed_by": [
- "modules"
- ]
+ "installed_by": ["modules"]
},
"picard/collectwgsmetrics": {
"branch": "master",
"git_sha": "3f5420aa22e00bd030a2556dfdffc9e164ec0ec5",
- "installed_by": [
- "modules"
- ]
+ "installed_by": ["modules"]
},
"salmon/index": {
"branch": "master",
"git_sha": "cb6b2b94fc40dea58f0b1e3dd095f3dd24f2ac8a",
- "installed_by": [
- "modules"
- ]
+ "installed_by": ["modules"]
},
"salmon/quant": {
"branch": "master",
"git_sha": "cb6b2b94fc40dea58f0b1e3dd095f3dd24f2ac8a",
- "installed_by": [
- "modules"
- ]
+ "installed_by": ["modules"]
},
"samtools/faidx": {
"branch": "master",
"git_sha": "3f5420aa22e00bd030a2556dfdffc9e164ec0ec5",
- "installed_by": [
- "modules"
- ]
+ "installed_by": ["modules"]
},
"samtools/index": {
"branch": "master",
"git_sha": "5394565c5fe4c760e5b35977ec7607c62e81d1f8",
- "installed_by": [
- "modules"
- ]
+ "installed_by": ["modules"]
},
"samtools/sort": {
"branch": "master",
"git_sha": "3f5420aa22e00bd030a2556dfdffc9e164ec0ec5",
- "installed_by": [
- "modules"
- ]
+ "installed_by": ["modules"]
},
"samtools/view": {
"branch": "master",
"git_sha": "3f5420aa22e00bd030a2556dfdffc9e164ec0ec5",
- "installed_by": [
- "modules"
- ]
+ "installed_by": ["modules"]
},
"star/align": {
"branch": "master",
"git_sha": "9f6b233518f7d9ecdcf24b798b7e491db5424273",
- "installed_by": [
- "modules"
- ]
+ "installed_by": ["modules"]
},
"star/genomegenerate": {
"branch": "master",
"git_sha": "0e98289b5bec6e3f8f588a8a9d05e8aacc1179a0",
- "installed_by": [
- "modules"
- ]
+ "installed_by": ["modules"]
},
"stringtie/merge": {
"branch": "master",
"git_sha": "5756b12b1fab0c07f05b9ad2d5d5c262b1a2c1ef",
- "installed_by": [
- "modules"
- ]
+ "installed_by": ["modules"]
},
"stringtie/stringtie": {
"branch": "master",
"git_sha": "b1b959609bda44341120aed1766329909f54b8d0",
- "installed_by": [
- "modules"
- ]
+ "installed_by": ["modules"]
}
}
},
@@ -173,26 +127,20 @@
"utils_nextflow_pipeline": {
"branch": "master",
"git_sha": "5caf7640a9ef1d18d765d55339be751bb0969dfa",
- "installed_by": [
- "subworkflows"
- ]
+ "installed_by": ["subworkflows"]
},
"utils_nfcore_pipeline": {
"branch": "master",
"git_sha": "92de218a329bfc9a9033116eb5f65fd270e72ba3",
- "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 3332ebbc1dc877a875acf69f481627b595268ef8 Mon Sep 17 00:00:00 2001
From: Annick Renevey <47788523+rannick@users.noreply.github.com>
Date: Fri, 24 May 2024 15:32:43 +0200
Subject: [PATCH 029/887] WIP: restructure reference building
---
conf/modules.config | 2 +-
main.nf | 10 +-
nextflow.config | 5 +-
subworkflows/local/build_references.nf | 122 +++++++
workflows/build_references.nf | 89 -----
workflows/rnafusion.nf | 436 +++++++++++++------------
6 files changed, 347 insertions(+), 317 deletions(-)
create mode 100644 subworkflows/local/build_references.nf
delete mode 100644 workflows/build_references.nf
diff --git a/conf/modules.config b/conf/modules.config
index a1fe17026..44dec3397 100644
--- a/conf/modules.config
+++ b/conf/modules.config
@@ -59,7 +59,7 @@ process {
withName: 'FASTQC' {
ext.args = '--quiet'
- ext.when = { !params.skip_qc }
+ ext.when = { !params.skip_qc }
publishDir = [
path: { "${params.outdir}/fastqc" },
mode: params.publish_dir_mode,
diff --git a/main.nf b/main.nf
index ac96ab669..4c945cf83 100644
--- a/main.nf
+++ b/main.nf
@@ -20,7 +20,6 @@ nextflow.enable.dsl = 2
include { PIPELINE_INITIALISATION } from './subworkflows/local/utils_nfcore_rnafusion_pipeline'
include { PIPELINE_COMPLETION } from './subworkflows/local/utils_nfcore_rnafusion_pipeline'
include { getGenomeAttribute } from './subworkflows/local/utils_nfcore_rnafusion_pipeline'
-include { BUILD_REFERENCES } from './workflows/build_references'
include { RNAFUSION } from './workflows/rnafusion'
@@ -50,12 +49,9 @@ workflow NFCORE_RNAFUSION {
//
// WORKFLOW: Run pipeline
//
- if (params.build_references) {
- BUILD_REFERENCES ()
- } else {
- ch_samplesheet = Channel.value(file(params.input, checkIfExists: true))
- RNAFUSION(ch_samplesheet)
- }
+
+ ch_samplesheet = Channel.value(file(params.input, checkIfExists: true))
+ RNAFUSION(ch_samplesheet)
}
/*
diff --git a/nextflow.config b/nextflow.config
index 14127c38f..265c3c0b3 100644
--- a/nextflow.config
+++ b/nextflow.config
@@ -33,11 +33,10 @@ params {
genomes = [:]
// Genomes options
- fasta = "${params.genomes_base}/ensembl/Homo_sapiens.${params.genome}.${params.ensembl_version}.all.fa"
- fai = "${params.genomes_base}/ensembl/Homo_sapiens.${params.genome}.${params.ensembl_version}.all.fa.fai"
+ fasta = "${params.genomes_base}/ensembl/Homo_sapiens.${params.genome}.${params.ensembl_version}.dna.primary_assembly.fa"
+ fai = "${params.genomes_base}/ensembl/Homo_sapiens.${params.genome}.${params.ensembl_version}.dna.primary_assembly.fa.fai"
gtf = "${params.genomes_base}/ensembl/Homo_sapiens.${params.genome}.${params.ensembl_version}.gtf"
chrgtf = "${params.genomes_base}/ensembl/Homo_sapiens.${params.genome}.${params.ensembl_version}.chr.gtf"
- transcript = "${params.genomes_base}/ensembl/Homo_sapiens.${params.genome}.${params.ensembl_version}.cdna.all.fa.gz"
refflat = "${params.genomes_base}/ensembl/Homo_sapiens.${params.genome}.${params.ensembl_version}.chr.gtf.refflat"
rrna_intervals = "${params.genomes_base}/ensembl/Homo_sapiens.${params.genome}.${params.ensembl_version}.interval_list"
diff --git a/subworkflows/local/build_references.nf b/subworkflows/local/build_references.nf
new file mode 100644
index 000000000..bb2acc4d3
--- /dev/null
+++ b/subworkflows/local/build_references.nf
@@ -0,0 +1,122 @@
+/*
+========================================================================================
+ IMPORT LOCAL MODULES/SUBWORKFLOWS
+========================================================================================
+*/
+
+include { ARRIBA_DOWNLOAD } from '../../modules/local/arriba/download/main'
+include { ENSEMBL_DOWNLOAD } from '../../modules/local/ensembl/main'
+include { FUSIONCATCHER_DOWNLOAD } from '../../modules/local/fusioncatcher/download/main'
+include { FUSIONREPORT_DOWNLOAD } from '../../modules/local/fusionreport/download/main'
+include { HGNC_DOWNLOAD } from '../../modules/local/hgnc/main'
+include { STARFUSION_BUILD } from '../../modules/local/starfusion/build/main'
+include { STARFUSION_DOWNLOAD } from '../../modules/local/starfusion/download/main'
+include { GTF_TO_REFFLAT } from '../../modules/local/uscs/custom_gtftogenepred/main'
+include { RRNA_TRANSCRIPTS } from '../../modules/local/rrnatranscripts/main'
+include { CONVERT2BED } from '../../modules/local/convert2bed/main'
+/*
+========================================================================================
+ IMPORT NF-CORE MODULES/SUBWORKFLOWS
+========================================================================================
+*/
+
+include { SAMTOOLS_FAIDX } from '../../modules/nf-core/samtools/faidx/main'
+include { STAR_GENOMEGENERATE } from '../../modules/nf-core/star/genomegenerate/main'
+include { GATK4_CREATESEQUENCEDICTIONARY } from '../../modules/nf-core/gatk4/createsequencedictionary/main'
+include { GATK4_BEDTOINTERVALLIST } from '../../modules/nf-core/gatk4/bedtointervallist/main'
+include { SALMON_INDEX } from '../../modules/nf-core/salmon/index/main'
+include { GFFREAD } from '../../modules/nf-core/gffread/main'
+
+/*
+========================================================================================
+ RUN MAIN WORKFLOW
+========================================================================================
+*/
+
+workflow BUILD_REFERENCES {
+
+
+ main:
+
+ ch_versions = Channel.empty()
+
+ def fake_meta = [:]
+ fake_meta.id = "Homo_sapiens.${params.genome}.${params.ensembl_version}"
+
+ if (!file(params.fasta).exists() || file(params.fasta).isEmpty() ||
+ !file(params.chrgtf).exists() || file(params.chrgtf).isEmpty() ||
+ !file(params.gtf).exists() || file(params.gtf).isEmpty()){
+ ENSEMBL_DOWNLOAD(params.ensembl_version, params.genome, fake_meta)}
+ ch_fasta = {(!file(params.fasta).exists() || file(params.fasta).isEmpty()) ? ENSEMBL_DOWNLOAD.out.primary_assembly : Channel.fromPath(params.fasta).map { that -> [[id:that.Name], that] }.collect()}
+
+ if (!file(params.hgnc_ref).exists() || file(params.hgnc_ref).isEmpty() ||
+ !file(params.hgnc_date).exists() || file(params.hgnc_date).isEmpty()){
+ HGNC_DOWNLOAD( )}
+
+ if (!file(params.fai).exists() || file(params.fai).isEmpty(){
+ SAMTOOLS_FAIDX(ENSEMBL_DOWNLOAD.out.primary_assembly, [[],[]])}
+
+ if (!file(params.rrna_intervals).exists() || file(params.rrna_intervals).isEmpty(){
+ GATK4_CREATESEQUENCEDICTIONARY(ENSEMBL_DOWNLOAD.out.primary_assembly)
+ RRNA_TRANSCRIPTS(ENSEMBL_DOWNLOAD.out.gtf)
+ CONVERT2BED(RRNA_TRANSCRIPTS.out.rrna_gtf)
+ GATK4_BEDTOINTERVALLIST(CONVERT2BED.out.bed, GATK4_CREATESEQUENCEDICTIONARY.out.dict)
+ }
+
+ if (!file(params.salmon_index).exists() || file(params.salmon_index).isEmpty(){ // add condition for qc, check that dirs can also be checked with isEmpty()
+ GFFREAD(ENSEMBL_DOWNLOAD.out.gtf, ENSEMBL_DOWNLOAD.out.primary_assembly.map { meta, fasta -> [ fasta ] })
+ SALMON_INDEX(ENSEMBL_DOWNLOAD.out.primary_assembly.map{ meta, fasta -> [ fasta ] }, GFFREAD.out.gffread_fasta.map{ meta, gffread_fasta -> [ gffread_fasta ] })
+ }
+
+
+ if ((params.starindex || params.all || params.starfusion || params.arriba) &&
+ (!params.starindex_ref.exits() || params.starindex_ref.isEmpty())
+ ) {
+ STAR_GENOMEGENERATE( ENSEMBL_DOWNLOAD.out.primary_assembly, ENSEMBL_DOWNLOAD.out.gtf )
+ }
+ ch_starindex_ref = ...
+
+ // if (params.arriba || params.all) {
+ // ARRIBA_DOWNLOAD()
+ // }
+
+ // if (params.fusioncatcher || params.all) {
+ // FUSIONCATCHER_DOWNLOAD()
+ // }
+
+ // if (params.starfusion || params.all) {
+ // if (params.starfusion_build){
+ // STARFUSION_BUILD( ENSEMBL_DOWNLOAD.out.primary_assembly, ENSEMBL_DOWNLOAD.out.gtf )
+ // } else {
+ // STARFUSION_DOWNLOAD()
+ // }
+ // }
+
+ // if (params.starfusion_build){
+ // GTF_TO_REFFLAT(ENSEMBL_DOWNLOAD.out.gtf)
+ // } else {
+ // GTF_TO_REFFLAT(STARFUSION_DOWNLOAD.out.gtf)
+ // }
+
+ // if (params.fusionreport || params.all) {
+ // FUSIONREPORT_DOWNLOAD( params.cosmic_username, params.cosmic_passwd )
+ // }
+
+ emit:
+ ch_fasta
+ ch_chrgtf = {(!file(params.chrgtf).exists() || file(params.chrgtf).isEmpty()) ? ENSEMBL_DOWNLOAD.out.chrgtf : Channel.fromPath(params.chrgtf).map { that -> [[id:that.Name], that] }.collect()}
+ ch_gtf = {(!file(params.gtf).exists() || file(params.gtf).isEmpty()) ? ENSEMBL_DOWNLOAD.out.gtf : Channel.fromPath(params.gtf).map { that -> [[id:that.Name], that] }.collect()}
+ ch_hgnc_ref = Channel.fromPath(params.hgnc_ref).map { it -> [[id:it.Name], it] }.collect()
+ ch_hgnc_date = Channel.fromPath(params.hgnc_date).map { it -> [[id:it.Name], it] }.collect()
+ ch_fai = Channel.fromPath(params.fai).map { it -> [[id:it.Name], it] }.collect()
+ ch_rrna_interval = params.starfusion_build ? Channel.fromPath(params.rrna_intervals).map { it -> [[id:it.Name], it] }.collect() : Channel.fromPath("${params.ensembl_ref}/ref_annot.interval_list").map { it -> [[id:it.Name], it] }.collect()
+ ch_salmon_index = Channel.fromPath(params.salmon_index).map { it -> [[id:it.Name], it] }.collect()
+
+
+}
+
+/*
+========================================================================================
+ THE END
+========================================================================================
+*/
diff --git a/workflows/build_references.nf b/workflows/build_references.nf
deleted file mode 100644
index 5b523db3f..000000000
--- a/workflows/build_references.nf
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
-========================================================================================
- IMPORT LOCAL MODULES/SUBWORKFLOWS
-========================================================================================
-*/
-
-include { ARRIBA_DOWNLOAD } from '../modules/local/arriba/download/main'
-include { ENSEMBL_DOWNLOAD } from '../modules/local/ensembl/main'
-include { FUSIONCATCHER_DOWNLOAD } from '../modules/local/fusioncatcher/download/main'
-include { FUSIONREPORT_DOWNLOAD } from '../modules/local/fusionreport/download/main'
-include { HGNC_DOWNLOAD } from '../modules/local/hgnc/main'
-include { STARFUSION_BUILD } from '../modules/local/starfusion/build/main'
-include { STARFUSION_DOWNLOAD } from '../modules/local/starfusion/download/main'
-include { GTF_TO_REFFLAT } from '../modules/local/uscs/custom_gtftogenepred/main'
-include { RRNA_TRANSCRIPTS } from '../modules/local/rrnatranscripts/main'
-include { CONVERT2BED } from '../modules/local/convert2bed/main'
-/*
-========================================================================================
- IMPORT NF-CORE MODULES/SUBWORKFLOWS
-========================================================================================
-*/
-
-include { SAMTOOLS_FAIDX } from '../modules/nf-core/samtools/faidx/main'
-include { STAR_GENOMEGENERATE } from '../modules/nf-core/star/genomegenerate/main'
-include { GATK4_CREATESEQUENCEDICTIONARY } from '../modules/nf-core/gatk4/createsequencedictionary/main'
-include { GATK4_BEDTOINTERVALLIST } from '../modules/nf-core/gatk4/bedtointervallist/main'
-include { SALMON_INDEX } from '../modules/nf-core/salmon/index/main'
-include { GFFREAD } from '../modules/nf-core/gffread/main'
-
-/*
-========================================================================================
- RUN MAIN WORKFLOW
-========================================================================================
-*/
-
-workflow BUILD_REFERENCES {
-
- def fake_meta = [:]
- fake_meta.id = "Homo_sapiens.${params.genome}.${params.ensembl_version}"
- ENSEMBL_DOWNLOAD( params.ensembl_version, params.genome, fake_meta )
- HGNC_DOWNLOAD( )
- SAMTOOLS_FAIDX(ENSEMBL_DOWNLOAD.out.primary_assembly, [[],[]])
- GATK4_CREATESEQUENCEDICTIONARY(ENSEMBL_DOWNLOAD.out.primary_assembly)
-
- RRNA_TRANSCRIPTS(ENSEMBL_DOWNLOAD.out.gtf)
- CONVERT2BED(RRNA_TRANSCRIPTS.out.rrna_gtf)
-
- GATK4_BEDTOINTERVALLIST(CONVERT2BED.out.bed, GATK4_CREATESEQUENCEDICTIONARY.out.dict)
-
- GFFREAD(ENSEMBL_DOWNLOAD.out.gtf, ENSEMBL_DOWNLOAD.out.primary_assembly.map { meta, fasta -> [ fasta ] })
- SALMON_INDEX(ENSEMBL_DOWNLOAD.out.primary_assembly.map{ meta, fasta -> [ fasta ] }, GFFREAD.out.gffread_fasta.map{ meta, gffread_fasta -> [ gffread_fasta ] })
-
- if (params.starindex || params.all || params.starfusion || params.arriba) {
- STAR_GENOMEGENERATE( ENSEMBL_DOWNLOAD.out.primary_assembly, ENSEMBL_DOWNLOAD.out.gtf )
- }
-
- if (params.arriba || params.all) {
- ARRIBA_DOWNLOAD()
- }
-
- if (params.fusioncatcher || params.all) {
- FUSIONCATCHER_DOWNLOAD()
- }
-
- if (params.starfusion || params.all) {
- if (params.starfusion_build){
- STARFUSION_BUILD( ENSEMBL_DOWNLOAD.out.primary_assembly, ENSEMBL_DOWNLOAD.out.gtf )
- } else {
- STARFUSION_DOWNLOAD()
- }
- }
-
- if (params.starfusion_build){
- GTF_TO_REFFLAT(ENSEMBL_DOWNLOAD.out.gtf)
- } else {
- GTF_TO_REFFLAT(STARFUSION_DOWNLOAD.out.gtf)
- }
-
- if (params.fusionreport || params.all) {
- FUSIONREPORT_DOWNLOAD( params.cosmic_username, params.cosmic_passwd )
- }
-
-}
-
-/*
-========================================================================================
- THE END
-========================================================================================
-*/
diff --git a/workflows/rnafusion.nf b/workflows/rnafusion.nf
index 45fd77eb0..bf7fa1b8e 100644
--- a/workflows/rnafusion.nf
+++ b/workflows/rnafusion.nf
@@ -12,25 +12,6 @@ include { softwareVersionsToYAML } from '../subworkflows/nf-core/utils_nfcore_pi
include { methodsDescriptionText } from '../subworkflows/local/utils_nfcore_rnafusion_pipeline'
include { paramsSummaryLog; paramsSummaryMap } from 'plugin/nf-validation'
-ch_chrgtf = params.starfusion_build ? Channel.fromPath(params.chrgtf).map { it -> [[id:it.Name], it] }.collect() : Channel.fromPath("${params.starfusion_ref}/ref_annot.gtf").map { it -> [[id:it.Name], it] }.collect()
-ch_starindex_ref = params.starfusion_build ? Channel.fromPath(params.starindex_ref).map { it -> [[id:it.Name], it] }.collect() : Channel.fromPath("${params.starfusion_ref}/ref_genome.fa.star.idx").map { it -> [[id:it.Name], it] }.collect()
-ch_starindex_ensembl_ref = Channel.fromPath(params.starindex_ref).map { it -> [[id:it.Name], it] }.collect()
-ch_refflat = params.starfusion_build ? Channel.fromPath(params.refflat).map { it -> [[id:it.Name], it] }.collect() : Channel.fromPath("${params.ensembl_ref}/ref_annot.gtf.refflat").map { it -> [[id:it.Name], it] }.collect()
-ch_rrna_interval = params.starfusion_build ? Channel.fromPath(params.rrna_intervals).map { it -> [[id:it.Name], it] }.collect() : Channel.fromPath("${params.ensembl_ref}/ref_annot.interval_list").map { it -> [[id:it.Name], it] }.collect()
-ch_fusionreport_ref = Channel.fromPath(params.fusionreport_ref).map { it -> [[id:it.Name], it] }.collect()
-ch_arriba_ref_blacklist = Channel.fromPath(params.arriba_ref_blacklist).map { it -> [[id:it.Name], it] }.collect()
-ch_arriba_ref_known_fusions = Channel.fromPath(params.arriba_ref_known_fusions).map { it -> [[id:it.Name], it] }.collect()
-ch_arriba_ref_protein_domains = Channel.fromPath(params.arriba_ref_protein_domains).map { it -> [[id:it.Name], it] }.collect()
-ch_arriba_ref_cytobands = Channel.fromPath(params.arriba_ref_cytobands).map { it -> [[id:it.Name], it] }.collect()
-ch_hgnc_ref = Channel.fromPath(params.hgnc_ref).map { it -> [[id:it.Name], it] }.collect()
-ch_hgnc_date = Channel.fromPath(params.hgnc_date).map { it -> [[id:it.Name], it] }.collect()
-ch_fasta = Channel.fromPath(params.fasta).map { it -> [[id:it.Name], it] }.collect()
-ch_gtf = Channel.fromPath(params.gtf).map { it -> [[id:it.Name], it] }.collect()
-ch_salmon_index = Channel.fromPath(params.salmon_index).map { it -> [[id:it.Name], it] }.collect()
-ch_transcript = Channel.fromPath(params.transcript).map { it -> [[id:it.Name], it] }.collect()
-ch_fai = Channel.fromPath(params.fai).map { it -> [[id:it.Name], it] }.collect()
-
-
/*
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
IMPORT LOCAL MODULES/SUBWORKFLOWS
@@ -40,7 +21,7 @@ ch_fai = Channel.fromPath(params.fai).map { it -> [[id:it.Name], it] }.collect()
//
// SUBWORKFLOW: Consisting of a mix of local and nf-core/modules
//
-
+include { BUILD_REFERENCES } from '../subworkflows/local/build_references'
include { TRIM_WORKFLOW } from '../subworkflows/local/trim_workflow'
include { ARRIBA_WORKFLOW } from '../subworkflows/local/arriba_workflow'
include { QC_WORKFLOW } from '../subworkflows/local/qc_workflow'
@@ -75,212 +56,233 @@ workflow RNAFUSION {
main:
- ch_versions = Channel.empty()
- ch_multiqc_files = Channel.empty()
-
- //
- // Create channel from input file provided through params.input
- //
- Channel
- .fromSamplesheet("input")
- .map {
- meta, fastq_1, fastq_2, strandedness ->
- 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
- 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)
-
- //
- // MODULE: Run FastQC
- //
- FASTQC (
- ch_cat_fastq
- )
- ch_multiqc_files = ch_multiqc_files.mix(FASTQC.out.zip.collect{it[1]})
- ch_versions = ch_versions.mix(FASTQC.out.versions)
+ // Reference channels
+ // ch_starindex_ref = params.starfusion_build ? Channel.fromPath(params.starindex_ref).map { it -> [[id:it.Name], it] }.collect() : Channel.fromPath("${params.starfusion_ref}/ref_genome.fa.star.idx").map { it -> [[id:it.Name], it] }.collect()
+ // ch_starindex_ensembl_ref = Channel.fromPath(params.starindex_ref).map { it -> [[id:it.Name], it] }.collect()
+ // ch_refflat = params.starfusion_build ? Channel.fromPath(params.refflat).map { it -> [[id:it.Name], it] }.collect() : Channel.fromPath("${params.ensembl_ref}/ref_annot.gtf.refflat").map { it -> [[id:it.Name], it] }.collect()
+ // ch_fusionreport_ref = Channel.fromPath(params.fusionreport_ref).map { it -> [[id:it.Name], it] }.collect()
+ // ch_arriba_ref_blacklist = Channel.fromPath(params.arriba_ref_blacklist).map { it -> [[id:it.Name], it] }.collect()
+ // ch_arriba_ref_known_fusions = Channel.fromPath(params.arriba_ref_known_fusions).map { it -> [[id:it.Name], it] }.collect()
+ // ch_arriba_ref_protein_domains = Channel.fromPath(params.arriba_ref_protein_domains).map { it -> [[id:it.Name], it] }.collect()
+ // ch_arriba_ref_cytobands = Channel.fromPath(params.arriba_ref_cytobands).map { it -> [[id:it.Name], it] }.collect()
- TRIM_WORKFLOW (
- ch_cat_fastq
- )
- ch_reads_fusioncatcher = TRIM_WORKFLOW.out.ch_reads_fusioncatcher
- ch_reads_all = TRIM_WORKFLOW.out.ch_reads_all
- ch_versions = ch_versions.mix(TRIM_WORKFLOW.out.versions)
- SALMON_QUANT( ch_reads_all, ch_salmon_index.map{ meta, index -> index }, ch_gtf.map{ meta, gtf -> gtf }, [], false, 'A')
+ ch_versions = Channel.empty()
+ ch_multiqc_files = Channel.empty()
//
- // SUBWORKFLOW: Run STAR alignment and Arriba
+ // Create references if necessary
//
- ARRIBA_WORKFLOW (
- ch_reads_all,
- ch_gtf,
- ch_fasta,
- ch_starindex_ensembl_ref,
- ch_arriba_ref_blacklist,
- ch_arriba_ref_known_fusions,
- ch_arriba_ref_protein_domains
- )
- ch_versions = ch_versions.mix(ARRIBA_WORKFLOW.out.versions)
-
-
-//Run STAR fusion
- STARFUSION_WORKFLOW (
- ch_reads_all,
- ch_chrgtf,
- ch_starindex_ref,
- ch_fasta
- )
- ch_versions = ch_versions.mix(STARFUSION_WORKFLOW.out.versions)
-
-
-//Run fusioncatcher
- FUSIONCATCHER_WORKFLOW (
- ch_reads_fusioncatcher
- )
- ch_versions = ch_versions.mix(FUSIONCATCHER_WORKFLOW.out.versions)
-
-
-//Run stringtie
- STRINGTIE_WORKFLOW (
- STARFUSION_WORKFLOW.out.ch_bam_sorted,
- ch_chrgtf
- )
- ch_versions = ch_versions.mix(STRINGTIE_WORKFLOW.out.versions)
-
-
- //Run fusion-report
- FUSIONREPORT_WORKFLOW (
- ch_reads_all,
- ch_fusionreport_ref,
- ARRIBA_WORKFLOW.out.fusions,
- STARFUSION_WORKFLOW.out.fusions,
- FUSIONCATCHER_WORKFLOW.out.fusions
- )
- ch_versions = ch_versions.mix(FUSIONREPORT_WORKFLOW.out.versions)
-
-
- //Run fusionInpector
- FUSIONINSPECTOR_WORKFLOW (
- ch_reads_all,
- FUSIONREPORT_WORKFLOW.out.fusion_list,
- FUSIONREPORT_WORKFLOW.out.fusion_list_filtered,
- FUSIONREPORT_WORKFLOW.out.report,
- FUSIONREPORT_WORKFLOW.out.csv,
- STARFUSION_WORKFLOW.out.ch_bam_sorted_indexed,
- ch_chrgtf,
- ch_arriba_ref_protein_domains,
- ch_arriba_ref_cytobands,
- ch_hgnc_ref,
- ch_hgnc_date
- )
- ch_versions = ch_versions.mix(FUSIONINSPECTOR_WORKFLOW.out.versions)
-
-
- //QC
- QC_WORKFLOW (
- ch_reads_all,
- STARFUSION_WORKFLOW.out.ch_bam_sorted,
- STARFUSION_WORKFLOW.out.ch_bam_sorted_indexed,
- ch_chrgtf,
- ch_refflat,
- ch_fasta,
- ch_fai,
- ch_rrna_interval
- )
- ch_versions = ch_versions.mix(QC_WORKFLOW.out.versions)
- //
- // 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
- //
- 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
- )
- )
- ch_multiqc_files = ch_multiqc_files.mix(FASTQC.out.zip.collect{it[1]}.ifEmpty([]))
- ch_multiqc_files = ch_multiqc_files.mix(TRIM_WORKFLOW.out.ch_fastp_html.collect{it[1]}.ifEmpty([]))
- ch_multiqc_files = ch_multiqc_files.mix(TRIM_WORKFLOW.out.ch_fastp_json.collect{it[1]}.ifEmpty([]))
- ch_multiqc_files = ch_multiqc_files.mix(TRIM_WORKFLOW.out.ch_fastqc_trimmed.collect{it[1]}.ifEmpty([]))
- ch_multiqc_files = ch_multiqc_files.mix(STARFUSION_WORKFLOW.out.star_stats.collect{it[1]}.ifEmpty([]))
- ch_multiqc_files = ch_multiqc_files.mix(STARFUSION_WORKFLOW.out.star_gene_count.collect{it[1]}.ifEmpty([]))
- ch_multiqc_files = ch_multiqc_files.mix(QC_WORKFLOW.out.rnaseq_metrics.collect{it[1]}.ifEmpty([]))
- ch_multiqc_files = ch_multiqc_files.mix(QC_WORKFLOW.out.duplicate_metrics.collect{it[1]}.ifEmpty([]))
- ch_multiqc_files = ch_multiqc_files.mix(QC_WORKFLOW.out.insertsize_metrics.collect{it[1]}.ifEmpty([]))
- ch_multiqc_files = ch_multiqc_files.mix(FUSIONINSPECTOR_WORKFLOW.out.ch_arriba_visualisation.collect{it[1]}.ifEmpty([]))
-
- MULTIQC (
- ch_multiqc_files.collect(),
- ch_multiqc_config.toList(),
- ch_multiqc_custom_config.toList(),
- ch_multiqc_logo.toList()
- )
-
- emit:
- multiqc_report = MULTIQC.out.report.toList() // channel: /path/to/multiqc_report.html
- versions = ch_versions // channel: [ path(versions.yml) ]
+ BUILD_REFERENCES()
+
+
+// //
+// // Create channel from input file provided through params.input
+// //
+// Channel
+// .fromSamplesheet("input")
+// .map {
+// meta, fastq_1, fastq_2, strandedness ->
+// 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
+// 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)
+
+
+// //
+// // MODULE: Run FastQC
+// //
+// FASTQC (
+// ch_cat_fastq
+// )
+// ch_multiqc_files = ch_multiqc_files.mix(FASTQC.out.zip.collect{it[1]})
+// ch_versions = ch_versions.mix(FASTQC.out.versions)
+
+// TRIM_WORKFLOW (
+// ch_cat_fastq
+// )
+// ch_reads_fusioncatcher = TRIM_WORKFLOW.out.ch_reads_fusioncatcher
+// ch_reads_all = TRIM_WORKFLOW.out.ch_reads_all
+// ch_versions = ch_versions.mix(TRIM_WORKFLOW.out.versions)
+
+
+// SALMON_QUANT( ch_reads_all, ch_salmon_index.map{ meta, index -> index }, ch_gtf.map{ meta, gtf -> gtf }, [], false, 'A')
+
+
+// //
+// // SUBWORKFLOW: Run STAR alignment and Arriba
+// //
+// ARRIBA_WORKFLOW (
+// ch_reads_all,
+// ch_gtf,
+// ch_fasta,
+// ch_starindex_ensembl_ref,
+// ch_arriba_ref_blacklist,
+// ch_arriba_ref_known_fusions,
+// ch_arriba_ref_protein_domains
+// )
+// ch_versions = ch_versions.mix(ARRIBA_WORKFLOW.out.versions)
+
+
+// //Run STAR fusion
+// STARFUSION_WORKFLOW (
+// ch_reads_all,
+// ch_chrgtf,
+// ch_starindex_ref,
+// ch_fasta
+// )
+// ch_versions = ch_versions.mix(STARFUSION_WORKFLOW.out.versions)
+
+
+// //Run fusioncatcher
+// FUSIONCATCHER_WORKFLOW (
+// ch_reads_fusioncatcher
+// )
+// ch_versions = ch_versions.mix(FUSIONCATCHER_WORKFLOW.out.versions)
+
+
+// //Run stringtie
+// STRINGTIE_WORKFLOW (
+// STARFUSION_WORKFLOW.out.ch_bam_sorted,
+// ch_chrgtf
+// )
+// ch_versions = ch_versions.mix(STRINGTIE_WORKFLOW.out.versions)
+
+
+// //Run fusion-report
+// FUSIONREPORT_WORKFLOW (
+// ch_reads_all,
+// ch_fusionreport_ref,
+// ARRIBA_WORKFLOW.out.fusions,
+// STARFUSION_WORKFLOW.out.fusions,
+// FUSIONCATCHER_WORKFLOW.out.fusions
+// )
+// ch_versions = ch_versions.mix(FUSIONREPORT_WORKFLOW.out.versions)
+
+
+// //Run fusionInpector
+// FUSIONINSPECTOR_WORKFLOW (
+// ch_reads_all,
+// FUSIONREPORT_WORKFLOW.out.fusion_list,
+// FUSIONREPORT_WORKFLOW.out.fusion_list_filtered,
+// FUSIONREPORT_WORKFLOW.out.report,
+// FUSIONREPORT_WORKFLOW.out.csv,
+// STARFUSION_WORKFLOW.out.ch_bam_sorted_indexed,
+// ch_chrgtf,
+// ch_arriba_ref_protein_domains,
+// ch_arriba_ref_cytobands,
+// ch_hgnc_ref,
+// ch_hgnc_date
+// )
+// ch_versions = ch_versions.mix(FUSIONINSPECTOR_WORKFLOW.out.versions)
+
+
+// //QC
+// QC_WORKFLOW (
+// ch_reads_all,
+// STARFUSION_WORKFLOW.out.ch_bam_sorted,
+// STARFUSION_WORKFLOW.out.ch_bam_sorted_indexed,
+// ch_chrgtf,
+// ch_refflat,
+// ch_fasta,
+// ch_fai,
+// ch_rrna_interval
+// )
+// ch_versions = ch_versions.mix(QC_WORKFLOW.out.versions)
+
+// //
+// // 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
+// //
+// 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
+// )
+// )
+// ch_multiqc_files = ch_multiqc_files.mix(FASTQC.out.zip.collect{it[1]}.ifEmpty([]))
+// ch_multiqc_files = ch_multiqc_files.mix(TRIM_WORKFLOW.out.ch_fastp_html.collect{it[1]}.ifEmpty([]))
+// ch_multiqc_files = ch_multiqc_files.mix(TRIM_WORKFLOW.out.ch_fastp_json.collect{it[1]}.ifEmpty([]))
+// ch_multiqc_files = ch_multiqc_files.mix(TRIM_WORKFLOW.out.ch_fastqc_trimmed.collect{it[1]}.ifEmpty([]))
+// ch_multiqc_files = ch_multiqc_files.mix(STARFUSION_WORKFLOW.out.star_stats.collect{it[1]}.ifEmpty([]))
+// ch_multiqc_files = ch_multiqc_files.mix(STARFUSION_WORKFLOW.out.star_gene_count.collect{it[1]}.ifEmpty([]))
+// ch_multiqc_files = ch_multiqc_files.mix(QC_WORKFLOW.out.rnaseq_metrics.collect{it[1]}.ifEmpty([]))
+// ch_multiqc_files = ch_multiqc_files.mix(QC_WORKFLOW.out.duplicate_metrics.collect{it[1]}.ifEmpty([]))
+// ch_multiqc_files = ch_multiqc_files.mix(QC_WORKFLOW.out.insertsize_metrics.collect{it[1]}.ifEmpty([]))
+// ch_multiqc_files = ch_multiqc_files.mix(FUSIONINSPECTOR_WORKFLOW.out.ch_arriba_visualisation.collect{it[1]}.ifEmpty([]))
+
+// MULTIQC (
+// ch_multiqc_files.collect(),
+// ch_multiqc_config.toList(),
+// ch_multiqc_custom_config.toList(),
+// ch_multiqc_logo.toList()
+// )
+
+// emit:
+// multiqc_report = MULTIQC.out.report.toList() // channel: /path/to/multiqc_report.html
+// versions = ch_versions // channel: [ path(versions.yml) ]
}
From bf0c33e179290f060a661301e906cb3d24435951 Mon Sep 17 00:00:00 2001
From: Annick Renevey <47788523+rannick@users.noreply.github.com>
Date: Tue, 28 May 2024 15:39:38 +0200
Subject: [PATCH 030/887] refactor downloading of references
---
modules/local/fusioncatcher/build/main.nf | 42 +++++
modules/local/fusioncatcher/build/meta.yml | 25 +++
modules/local/fusioncatcher/download/main.nf | 30 ++--
.../local/uscs/custom_gtftogenepred/main.nf | 1 +
nextflow.config | 30 ++--
nextflow_schema.json | 48 +++---
subworkflows/local/build_references.nf | 144 +++++++++++-------
workflows/rnafusion.nf | 9 +-
8 files changed, 220 insertions(+), 109 deletions(-)
create mode 100644 modules/local/fusioncatcher/build/main.nf
create mode 100644 modules/local/fusioncatcher/build/meta.yml
diff --git a/modules/local/fusioncatcher/build/main.nf b/modules/local/fusioncatcher/build/main.nf
new file mode 100644
index 000000000..afab999c0
--- /dev/null
+++ b/modules/local/fusioncatcher/build/main.nf
@@ -0,0 +1,42 @@
+process FUSIONCATCHER_BUILD {
+ tag "fusioncatcher_build"
+ label 'process_medium'
+
+ conda "bioconda::fusioncatcher=1.33"
+ container "docker.io/clinicalgenomics/fusioncatcher:1.33"
+
+ input:
+ val ensembl_version
+
+ output:
+ path "*" , emit: reference
+ path "versions.yml" , emit: versions
+
+ when:
+ task.ext.when == null || task.ext.when
+
+ script:
+
+ def args = task.ext.args ?: ''
+ """
+ fusioncatcher-build \\
+ -g homo_sapiens \\
+ -o human_${human_version} \\
+ $args
+
+ cat <<-END_VERSIONS > versions.yml
+ "${task.process}":
+ fusioncatcher: \$(echo \$(fusioncatcher --version 2>&1))
+ END_VERSIONS
+ """
+
+ stub:
+ """
+ mkdir human_v${ensembl_version}
+ touch human_v${ensembl_version}/ensembl_fully_overlapping_genes.txt
+ cat <<-END_VERSIONS > versions.yml
+ "${task.process}":
+ fusioncatcher: \$(echo \$(fusioncatcher --version 2>&1))
+ END_VERSIONS
+ """
+}
diff --git a/modules/local/fusioncatcher/build/meta.yml b/modules/local/fusioncatcher/build/meta.yml
new file mode 100644
index 000000000..40421a4ee
--- /dev/null
+++ b/modules/local/fusioncatcher/build/meta.yml
@@ -0,0 +1,25 @@
+name: fusioncatcher_download
+description: Build genome for fusioncatcher
+keywords:
+ - sort
+tools:
+ - fusioncatcher:
+ description: Build genome for fusioncatcher
+ homepage: https://github.com/ndaniel/fusioncatcher/
+ documentation: https://github.com/ndaniel/fusioncatcher/blob/master/doc/manual.md
+ tool_dev_url: https://github.com/ndaniel/fusioncatcher/
+ doi: "10.1101/011650"
+ licence: ["GPL v3"]
+
+output:
+ - versions:
+ type: file
+ description: File containing software versions
+ pattern: "versions.yml"
+ - reference:
+ type: directory
+ description: Path to fusioncatcher references
+ pattern: "*"
+
+authors:
+ - "@praveenraj2018, @rannick"
diff --git a/modules/local/fusioncatcher/download/main.nf b/modules/local/fusioncatcher/download/main.nf
index 156e70b65..7f59d9205 100644
--- a/modules/local/fusioncatcher/download/main.nf
+++ b/modules/local/fusioncatcher/download/main.nf
@@ -5,6 +5,10 @@ process FUSIONCATCHER_DOWNLOAD {
conda "bioconda::fusioncatcher=1.33"
container "docker.io/clinicalgenomics/fusioncatcher:1.33"
+
+ input:
+ val ensembl_version
+
output:
path "*" , emit: reference
path "versions.yml" , emit: versions
@@ -16,22 +20,14 @@ process FUSIONCATCHER_DOWNLOAD {
def args = task.ext.args ?: ''
def args2 = task.ext.args2 ?: ''
- def human_version = "v102"
- def url = "http://sourceforge.net/projects/fusioncatcher/files/data/human_${human_version}.tar.gz.aa"
+ def url =
"""
- if wget --spider "$url" 2>/dev/null; then
- wget $args $url
- wget $args http://sourceforge.net/projects/fusioncatcher/files/data/human_${human_version}.tar.gz.ab
- wget $args http://sourceforge.net/projects/fusioncatcher/files/data/human_${human_version}.tar.gz.ac
- wget $args http://sourceforge.net/projects/fusioncatcher/files/data/human_${human_version}.tar.gz.ad
- cat human_${human_version}.tar.gz.* | tar xz
- rm human_${human_version}.tar*
- else
- fusioncatcher-build \\
- -g homo_sapiens \\
- -o human_${human_version} \\
- $args2
- fi
+ wget $args http://sourceforge.net/projects/fusioncatcher/files/data/human_${ensembl_version}.tar.gz.aa
+ wget $args http://sourceforge.net/projects/fusioncatcher/files/data/human_${ensembl_version}.tar.gz.ab
+ wget $args http://sourceforge.net/projects/fusioncatcher/files/data/human_${ensembl_version}.tar.gz.ac
+ wget $args http://sourceforge.net/projects/fusioncatcher/files/data/human_${ensembl_version}.tar.gz.ad
+ cat human_${ensembl_version}.tar.gz.* | tar xz
+ rm human_${ensembl_version}.tar*
cat <<-END_VERSIONS > versions.yml
"${task.process}":
@@ -40,9 +36,9 @@ process FUSIONCATCHER_DOWNLOAD {
"""
stub:
- def human_version = "v102"
"""
- mkdir human_${human_version}
+ mkdir human_v${ensembl_version}
+ touch human_v${ensembl_version}/ensembl_fully_overlapping_genes.txt
cat <<-END_VERSIONS > versions.yml
"${task.process}":
fusioncatcher: \$(echo \$(fusioncatcher --version 2>&1))
diff --git a/modules/local/uscs/custom_gtftogenepred/main.nf b/modules/local/uscs/custom_gtftogenepred/main.nf
index 78fcbd296..53a74e3d3 100644
--- a/modules/local/uscs/custom_gtftogenepred/main.nf
+++ b/modules/local/uscs/custom_gtftogenepred/main.nf
@@ -1,4 +1,5 @@
process GTF_TO_REFFLAT {
+ tag "$meta.id"
label 'process_low'
conda "bioconda::ucsc-gtftogenepred=377"
diff --git a/nextflow.config b/nextflow.config
index 265c3c0b3..fe2dd83da 100644
--- a/nextflow.config
+++ b/nextflow.config
@@ -27,19 +27,11 @@ params {
// Genome
genome = 'GRCh38'
genomes_base = "${params.outdir}/references"
- ensembl_version = 102
+ ensembl_version = 112
read_length = 100
starfusion_build = true
genomes = [:]
- // Genomes options
- fasta = "${params.genomes_base}/ensembl/Homo_sapiens.${params.genome}.${params.ensembl_version}.dna.primary_assembly.fa"
- fai = "${params.genomes_base}/ensembl/Homo_sapiens.${params.genome}.${params.ensembl_version}.dna.primary_assembly.fa.fai"
- gtf = "${params.genomes_base}/ensembl/Homo_sapiens.${params.genome}.${params.ensembl_version}.gtf"
- chrgtf = "${params.genomes_base}/ensembl/Homo_sapiens.${params.genome}.${params.ensembl_version}.chr.gtf"
- refflat = "${params.genomes_base}/ensembl/Homo_sapiens.${params.genome}.${params.ensembl_version}.chr.gtf.refflat"
- rrna_intervals = "${params.genomes_base}/ensembl/Homo_sapiens.${params.genome}.${params.ensembl_version}.interval_list"
-
// Filtering
tools_cutoff = 1
@@ -72,14 +64,21 @@ params {
skip_qc = false
skip_vis = false
+ // Download references option
+ download_refs = true
+
// Path to references
+ fasta = "${params.genomes_base}/ensembl/Homo_sapiens.${params.genome}.${params.ensembl_version}.dna.primary_assembly.fa"
+ fai = "${params.genomes_base}/ensembl/Homo_sapiens.${params.genome}.${params.ensembl_version}.dna.primary_assembly.fa.fai"
+ gtf = "${params.genomes_base}/ensembl/Homo_sapiens.${params.genome}.${params.ensembl_version}.gtf"
+ chrgtf = "${params.genomes_base}/ensembl/Homo_sapiens.${params.genome}.${params.ensembl_version}.chr.gtf"
+ refflat = "${params.genomes_base}/ensembl/Homo_sapiens.${params.genome}.${params.ensembl_version}.gtf.refflat"
+ rrna_intervals = "${params.genomes_base}/ensembl/Homo_sapiens.${params.genome}.${params.ensembl_version}.interval_list"
ensembl_ref = "${params.genomes_base}/ensembl"
- arriba_ref = "${params.genomes_base}/arriba"
arriba_ref_blacklist = "${params.genomes_base}/arriba/blacklist_hg38_GRCh38_v2.4.0.tsv.gz"
- arriba_ref_cytobands = "${params.genomes_base}/arriba/cytobands_hg38_GRCh38_v2.4.0.tsv"
arriba_ref_known_fusions = "${params.genomes_base}/arriba/known_fusions_hg38_GRCh38_v2.4.0.tsv.gz"
arriba_ref_protein_domains = "${params.genomes_base}/arriba/protein_domains_hg38_GRCh38_v2.4.0.gff3"
- fusioncatcher_ref = "${params.genomes_base}/fusioncatcher/human_v102"
+ fusioncatcher_ref = "${params.genomes_base}/fusioncatcher/human_v${params.ensembl_version}"
hgnc_ref = "${params.genomes_base}/hgnc/hgnc_complete_set.txt"
hgnc_date = "${params.genomes_base}/hgnc/HGNC-DB-timestamp.txt"
salmon_index = "${params.genomes_base}/salmon/salmon"
@@ -88,6 +87,13 @@ params {
fusionreport_ref = "${params.genomes_base}/fusion_report_db"
+ // Internal file presence checks
+ salmon_index_stub_check = "${params.genomes_base}/salmon/salmon/complete_ref_lens.bin"
+ starindex_ref_stub_check = "${params.genomes_base}/star/star/Genome"
+ fusionreport_ref_stub_check = "${params.genomes_base}/fusion_report_db/mitelman.db"
+ fusioncatcher_ref_stub_check = "${params.genomes_base}/fusioncatcher/human_v${params.ensembl_version}/ensembl_fully_overlapping_genes.txt"
+ starfusion_ref_stub_check = "${params.genomes_base}/starfusion/Pfam-A.hmm"
+
// Path to fusion outputs
arriba_fusions = null
starfusion_fusions = null
diff --git a/nextflow_schema.json b/nextflow_schema.json
index 69270631f..0889caa20 100644
--- a/nextflow_schema.json
+++ b/nextflow_schema.json
@@ -105,21 +105,11 @@
"fa_icon": "far fa-file-code",
"description": "Build or run arriba references/analyses"
},
- "arriba_ref": {
- "type": "string",
- "fa_icon": "far fa-file-code",
- "description": "Path to arriba references"
- },
"arriba_ref_blacklist": {
"type": "string",
"fa_icon": "far fa-file-code",
"description": "Path to arriba reference blacklist"
},
- "arriba_ref_cytobands": {
- "type": "string",
- "fa_icon": "far fa-file-code",
- "description": "Path to arriba reference cytobands"
- },
"arriba_ref_known_fusions": {
"type": "string",
"fa_icon": "far fa-file-code",
@@ -135,6 +125,11 @@
"fa_icon": "far fa-file-code",
"description": "Path to arriba output"
},
+ "download_refs": {
+ "type": "boolean",
+ "fa_icon": "far fa-file-code",
+ "description": "Download references instead of building them (for fusioncatcher and starfusion)"
+ },
"ensembl_ref": {
"type": "string",
"fa_icon": "far fa-file-code",
@@ -160,6 +155,11 @@
"fa_icon": "far fa-file-code",
"description": "Path to fusioncatcher references"
},
+ "fusioncatcher_ref_stub_check": {
+ "type": "string",
+ "fa_icon": "far fa-file-code",
+ "description": "Path to file in fusioncatcher references"
+ },
"fusioninspector_limitSjdbInsertNsj": {
"type": "integer",
"fa_icon": "far fa-file-code",
@@ -185,6 +185,11 @@
"fa_icon": "far fa-file-code",
"description": "Path to fusionreport references"
},
+ "fusionreport_ref_stub_check": {
+ "type": "string",
+ "fa_icon": "far fa-file-code",
+ "description": "Path to file in fusionreport references"
+ },
"hgnc_ref": {
"type": "string",
"fa_icon": "far fa-file-code",
@@ -205,6 +210,11 @@
"fa_icon": "far fa-file-code",
"description": "Path to salmon index"
},
+ "salmon_index_stub_check": {
+ "type": "string",
+ "fa_icon": "far fa-file-code",
+ "description": "Path to file in salmon index"
+ },
"starfusion": {
"type": "boolean",
"fa_icon": "far fa-file-code",
@@ -220,6 +230,11 @@
"fa_icon": "far fa-file-code",
"description": "Path to starfusion references"
},
+ "starfusion_ref_stub_check": {
+ "type": "string",
+ "fa_icon": "far fa-file-code",
+ "description": "Path to file in starfusion references"
+ },
"starindex": {
"type": "boolean",
"fa_icon": "far fa-file-code",
@@ -230,6 +245,11 @@
"fa_icon": "far fa-file-code",
"description": "Path to starindex references"
},
+ "starindex_ref_stub_check": {
+ "type": "string",
+ "fa_icon": "far fa-file-code",
+ "description": "Path to file in starindex references"
+ },
"stringtie": {
"type": "boolean",
"fa_icon": "far fa-file-code",
@@ -326,14 +346,6 @@
"description": "Path to GTF genome file.",
"fa_icon": "far fa-file-code"
},
- "transcript": {
- "type": "string",
- "format": "file-path",
- "mimetype": "text/plain",
- "pattern": "^\\S+\\.fn?a(sta)?(\\.gz)?$",
- "description": "Path to GTF genome file.",
- "fa_icon": "far fa-file-code"
- },
"refflat": {
"type": "string",
"format": "file-path",
diff --git a/subworkflows/local/build_references.nf b/subworkflows/local/build_references.nf
index bb2acc4d3..0101c4d33 100644
--- a/subworkflows/local/build_references.nf
+++ b/subworkflows/local/build_references.nf
@@ -7,6 +7,7 @@
include { ARRIBA_DOWNLOAD } from '../../modules/local/arriba/download/main'
include { ENSEMBL_DOWNLOAD } from '../../modules/local/ensembl/main'
include { FUSIONCATCHER_DOWNLOAD } from '../../modules/local/fusioncatcher/download/main'
+include { FUSIONCATCHER_BUILD } from '../../modules/local/fusioncatcher/build/main'
include { FUSIONREPORT_DOWNLOAD } from '../../modules/local/fusionreport/download/main'
include { HGNC_DOWNLOAD } from '../../modules/local/hgnc/main'
include { STARFUSION_BUILD } from '../../modules/local/starfusion/build/main'
@@ -37,82 +38,117 @@ workflow BUILD_REFERENCES {
main:
-
ch_versions = Channel.empty()
- def fake_meta = [:]
- fake_meta.id = "Homo_sapiens.${params.genome}.${params.ensembl_version}"
if (!file(params.fasta).exists() || file(params.fasta).isEmpty() ||
- !file(params.chrgtf).exists() || file(params.chrgtf).isEmpty() ||
- !file(params.gtf).exists() || file(params.gtf).isEmpty()){
+ !file(params.chrgtf).exists() || file(params.chrgtf).isEmpty() ||
+ !file(params.gtf).exists() || file(params.gtf).isEmpty()){
+ fake_meta = [:]
+ fake_meta.id = "Homo_sapiens.${params.genome}.${params.ensembl_version}"
ENSEMBL_DOWNLOAD(params.ensembl_version, params.genome, fake_meta)}
- ch_fasta = {(!file(params.fasta).exists() || file(params.fasta).isEmpty()) ? ENSEMBL_DOWNLOAD.out.primary_assembly : Channel.fromPath(params.fasta).map { that -> [[id:that.Name], that] }.collect()}
+ ch_fasta = Channel.fromPath(params.fasta).map { that -> [[id:that.Name], that] }
+ ch_chrgtf = Channel.fromPath(params.chrgtf).map { that -> [[id:that.Name], that] }
+ ch_gtf = Channel.fromPath(params.gtf).map { that -> [[id:that.Name], that] }
if (!file(params.hgnc_ref).exists() || file(params.hgnc_ref).isEmpty() ||
- !file(params.hgnc_date).exists() || file(params.hgnc_date).isEmpty()){
+ !file(params.hgnc_date).exists() || file(params.hgnc_date).isEmpty()){
HGNC_DOWNLOAD( )}
+ ch_hgnc_ref = Channel.fromPath(params.hgnc_ref).map { that -> [[id:that.Name], that] }
+ ch_hgnc_date = Channel.fromPath(params.hgnc_date).map { that -> [[id:that.Name], that] }
+
- if (!file(params.fai).exists() || file(params.fai).isEmpty(){
- SAMTOOLS_FAIDX(ENSEMBL_DOWNLOAD.out.primary_assembly, [[],[]])}
+ if (!file(params.fai).exists() || file(params.fai).isEmpty()){
+ SAMTOOLS_FAIDX(ch_fasta, [[],[]])}
+ ch_fai = Channel.fromPath(params.fai).map { that -> [[id:that.Name], that] }
- if (!file(params.rrna_intervals).exists() || file(params.rrna_intervals).isEmpty(){
- GATK4_CREATESEQUENCEDICTIONARY(ENSEMBL_DOWNLOAD.out.primary_assembly)
- RRNA_TRANSCRIPTS(ENSEMBL_DOWNLOAD.out.gtf)
+
+ if (!file(params.rrna_intervals).exists() || file(params.rrna_intervals).isEmpty()){
+ GATK4_CREATESEQUENCEDICTIONARY(ch_fasta)
+ RRNA_TRANSCRIPTS(ch_gtf)
CONVERT2BED(RRNA_TRANSCRIPTS.out.rrna_gtf)
GATK4_BEDTOINTERVALLIST(CONVERT2BED.out.bed, GATK4_CREATESEQUENCEDICTIONARY.out.dict)
}
+ ch_rrna_interval = Channel.fromPath(params.rrna_intervals).map { that -> [[id:that.Name], that] }
+
- if (!file(params.salmon_index).exists() || file(params.salmon_index).isEmpty(){ // add condition for qc, check that dirs can also be checked with isEmpty()
- GFFREAD(ENSEMBL_DOWNLOAD.out.gtf, ENSEMBL_DOWNLOAD.out.primary_assembly.map { meta, fasta -> [ fasta ] })
- SALMON_INDEX(ENSEMBL_DOWNLOAD.out.primary_assembly.map{ meta, fasta -> [ fasta ] }, GFFREAD.out.gffread_fasta.map{ meta, gffread_fasta -> [ gffread_fasta ] })
+ if (!file(params.refflat).exists() || file(params.refflat).isEmpty()){
+ GTF_TO_REFFLAT(ch_gtf)}
+ ch_refflat = Channel.fromPath(params.refflat)
+
+
+ if (!file(params.salmon_index).exists() || file(params.salmon_index).isEmpty() ||
+ !file(params.salmon_index_stub_check).exists() || file(params.salmon_index_stub_check).isEmpty()){ // add condition for qc
+ GFFREAD(ch_gtf, ch_fasta.map{ meta, fasta -> [ fasta ] })
+ SALMON_INDEX(ch_fasta.map{ meta, fasta -> [ fasta ] }, GFFREAD.out.gffread_fasta.map{ meta, gffread_fasta -> [ gffread_fasta ] })
}
+ ch_salmon_index = Channel.fromPath(params.salmon_index)
if ((params.starindex || params.all || params.starfusion || params.arriba) &&
- (!params.starindex_ref.exits() || params.starindex_ref.isEmpty())
- ) {
- STAR_GENOMEGENERATE( ENSEMBL_DOWNLOAD.out.primary_assembly, ENSEMBL_DOWNLOAD.out.gtf )
+ (!file(params.starindex_ref).exists() || file(params.starindex_ref).isEmpty() ||
+ !file(params.starindex_ref_stub_check).exists() || file(params.starindex_ref_stub_check).isEmpty() )) {
+ STAR_GENOMEGENERATE(ch_fasta, ch_gtf)
+ }
+ ch_starindex_ref = Channel.fromPath(params.starindex_ref).map { that -> [[id:that.Name], that] }
+
+
+ if ((params.arriba || params.all) &&
+ (!file(params.arriba_ref_blacklist).exists() || file(params.arriba_ref_blacklist).isEmpty() ||
+ !file(params.arriba_ref_known_fusions).exists() || file(params.arriba_ref_known_fusions).isEmpty() ||
+ !file(params.arriba_ref_protein_domains).exists() || file(params.arriba_ref_protein_domains).isEmpty())) {
+ ARRIBA_DOWNLOAD()}
+ ch_arriba_ref_blacklist = Channel.fromPath(params.arriba_ref_blacklist).map { that -> [[id:that.Name], that] }
+ ch_arriba_ref_known_fusions = Channel.fromPath(params.arriba_ref_known_fusions).map { that -> [[id:that.Name], that] }
+ ch_arriba_ref_protein_domains = Channel.fromPath(params.arriba_ref_protein_domains).map { that -> [[id:that.Name], that] }
+
+
+ if ((params.fusioncatcher || params.all) &&
+ (!file(params.fusioncatcher_ref).exists() || file(params.fusioncatcher_ref).isEmpty() ||
+ !file(params.fusioncatcher_ref_stub_check).exists() || file(params.fusioncatcher_ref_stub_check).isEmpty() )) {
+ if (params.download_refs) {
+ FUSIONCATCHER_DOWNLOAD(params.ensembl_version)}
+ else {
+ FUSIONCATCHER_BUILD(params.ensembl_version)}
}
- ch_starindex_ref = ...
-
- // if (params.arriba || params.all) {
- // ARRIBA_DOWNLOAD()
- // }
-
- // if (params.fusioncatcher || params.all) {
- // FUSIONCATCHER_DOWNLOAD()
- // }
-
- // if (params.starfusion || params.all) {
- // if (params.starfusion_build){
- // STARFUSION_BUILD( ENSEMBL_DOWNLOAD.out.primary_assembly, ENSEMBL_DOWNLOAD.out.gtf )
- // } else {
- // STARFUSION_DOWNLOAD()
- // }
- // }
-
- // if (params.starfusion_build){
- // GTF_TO_REFFLAT(ENSEMBL_DOWNLOAD.out.gtf)
- // } else {
- // GTF_TO_REFFLAT(STARFUSION_DOWNLOAD.out.gtf)
- // }
-
- // if (params.fusionreport || params.all) {
- // FUSIONREPORT_DOWNLOAD( params.cosmic_username, params.cosmic_passwd )
- // }
+ ch_fusioncatcher_ref = Channel.fromPath(params.fusioncatcher_ref).map { that -> [[id:that.Name], that] }
- emit:
- ch_fasta
- ch_chrgtf = {(!file(params.chrgtf).exists() || file(params.chrgtf).isEmpty()) ? ENSEMBL_DOWNLOAD.out.chrgtf : Channel.fromPath(params.chrgtf).map { that -> [[id:that.Name], that] }.collect()}
- ch_gtf = {(!file(params.gtf).exists() || file(params.gtf).isEmpty()) ? ENSEMBL_DOWNLOAD.out.gtf : Channel.fromPath(params.gtf).map { that -> [[id:that.Name], that] }.collect()}
- ch_hgnc_ref = Channel.fromPath(params.hgnc_ref).map { it -> [[id:it.Name], it] }.collect()
- ch_hgnc_date = Channel.fromPath(params.hgnc_date).map { it -> [[id:it.Name], it] }.collect()
- ch_fai = Channel.fromPath(params.fai).map { it -> [[id:it.Name], it] }.collect()
- ch_rrna_interval = params.starfusion_build ? Channel.fromPath(params.rrna_intervals).map { it -> [[id:it.Name], it] }.collect() : Channel.fromPath("${params.ensembl_ref}/ref_annot.interval_list").map { it -> [[id:it.Name], it] }.collect()
- ch_salmon_index = Channel.fromPath(params.salmon_index).map { it -> [[id:it.Name], it] }.collect()
+
+ if ((params.starfusion || params.all) &&
+ (!file(params.starfusion_ref).exists() || file(params.starfusion_ref).isEmpty() ||
+ !file(params.starfusion_ref_stub_check).exists() || file(params.starfusion_ref_stub_check).isEmpty() )) {
+ if (params.download_refs) {
+ STARFUSION_DOWNLOAD( ch_fasta, ch_gtf )}
+ else {
+ STARFUSION_BUILD( ch_fasta, ch_gtf )}
+ }
+ ch_starfusion_ref = Channel.fromPath(params.starfusion_ref).map { that -> [[id:that.Name], that] }
+ if ((params.fusionreport || params.all) &&
+ (!file(params.fusionreport_ref).exists() || file(params.fusionreport_ref).isEmpty() ||
+ !file(params.fusionreport_ref_stub_check).exists() || file(params.fusionreport_ref_stub_check).isEmpty())) {
+ if (!params.cosmic_username || !params.cosmic_passwd) { exit 1, 'COSMIC username and/or password missing' }
+ FUSIONREPORT_DOWNLOAD( params.cosmic_username, params.cosmic_passwd )}
+ ch_fusionreport_ref = Channel.fromPath(params.fusionreport_ref).map { that -> [[id:that.Name], that] }
+
+ emit:
+ ch_fasta
+ ch_chrgtf
+ ch_gtf
+ ch_hgnc_ref
+ ch_hgnc_date
+ ch_fai
+ ch_rrna_interval
+ ch_refflat
+ ch_salmon_index
+ ch_starindex_ref
+ ch_arriba_ref_blacklist
+ ch_arriba_ref_known_fusions
+ ch_arriba_ref_protein_domains
+ ch_fusioncatcher_ref
+ ch_starfusion_ref
+ ch_fusionreport_ref
}
/*
diff --git a/workflows/rnafusion.nf b/workflows/rnafusion.nf
index bf7fa1b8e..64bd3f99c 100644
--- a/workflows/rnafusion.nf
+++ b/workflows/rnafusion.nf
@@ -58,14 +58,7 @@ workflow RNAFUSION {
// Reference channels
- // ch_starindex_ref = params.starfusion_build ? Channel.fromPath(params.starindex_ref).map { it -> [[id:it.Name], it] }.collect() : Channel.fromPath("${params.starfusion_ref}/ref_genome.fa.star.idx").map { it -> [[id:it.Name], it] }.collect()
- // ch_starindex_ensembl_ref = Channel.fromPath(params.starindex_ref).map { it -> [[id:it.Name], it] }.collect()
- // ch_refflat = params.starfusion_build ? Channel.fromPath(params.refflat).map { it -> [[id:it.Name], it] }.collect() : Channel.fromPath("${params.ensembl_ref}/ref_annot.gtf.refflat").map { it -> [[id:it.Name], it] }.collect()
- // ch_fusionreport_ref = Channel.fromPath(params.fusionreport_ref).map { it -> [[id:it.Name], it] }.collect()
- // ch_arriba_ref_blacklist = Channel.fromPath(params.arriba_ref_blacklist).map { it -> [[id:it.Name], it] }.collect()
- // ch_arriba_ref_known_fusions = Channel.fromPath(params.arriba_ref_known_fusions).map { it -> [[id:it.Name], it] }.collect()
- // ch_arriba_ref_protein_domains = Channel.fromPath(params.arriba_ref_protein_domains).map { it -> [[id:it.Name], it] }.collect()
- // ch_arriba_ref_cytobands = Channel.fromPath(params.arriba_ref_cytobands).map { it -> [[id:it.Name], it] }.collect()
+
From a19abbde7f1268bf49b5e57a7485040fc592468d Mon Sep 17 00:00:00 2001
From: Annick Renevey <47788523+rannick@users.noreply.github.com>
Date: Tue, 28 May 2024 21:14:21 +0200
Subject: [PATCH 031/887] fix params
---
modules/local/fusioncatcher/build/main.nf | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/modules/local/fusioncatcher/build/main.nf b/modules/local/fusioncatcher/build/main.nf
index afab999c0..c5eeeb451 100644
--- a/modules/local/fusioncatcher/build/main.nf
+++ b/modules/local/fusioncatcher/build/main.nf
@@ -21,7 +21,7 @@ process FUSIONCATCHER_BUILD {
"""
fusioncatcher-build \\
-g homo_sapiens \\
- -o human_${human_version} \\
+ -o human_v${ensembl_version} \\
$args
cat <<-END_VERSIONS > versions.yml
From 93fbfb8bc795c3fe405d9e98c6199469e213e203 Mon Sep 17 00:00:00 2001
From: Annick Renevey <47788523+rannick@users.noreply.github.com>
Date: Tue, 28 May 2024 21:25:30 +0200
Subject: [PATCH 032/887] fix
---
modules/local/fusioncatcher/build/main.nf | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/modules/local/fusioncatcher/build/main.nf b/modules/local/fusioncatcher/build/main.nf
index c5eeeb451..513535567 100644
--- a/modules/local/fusioncatcher/build/main.nf
+++ b/modules/local/fusioncatcher/build/main.nf
@@ -19,7 +19,7 @@ process FUSIONCATCHER_BUILD {
def args = task.ext.args ?: ''
"""
- fusioncatcher-build \\
+ fusioncatcher-build.py \\
-g homo_sapiens \\
-o human_v${ensembl_version} \\
$args
From 49c133719ad62d6610bb9d0fd6e1a9e4b81aef73 Mon Sep 17 00:00:00 2001
From: asp8200
Date: Tue, 11 Jun 2024 12:19:34 +0000
Subject: [PATCH 033/887] update docs
---
README.md | 6 ++----
docs/usage.md | 12 ++++++++++++
2 files changed, 14 insertions(+), 4 deletions(-)
diff --git a/README.md b/README.md
index f34ee57ec..4324f2109 100644
--- a/README.md
+++ b/README.md
@@ -76,8 +76,7 @@ First, build the references:
```bash
nextflow run nf-core/rnafusion \
- -profile \
- -profile test \
+ -profile test, \
--outdir \
--build_references \
-stub
@@ -87,8 +86,7 @@ Then perform the analysis:
```bash
nextflow run nf-core/rnafusion \
- -profile \
- -profile test \
+ -profile test, \
--outdir \
-stub
```
diff --git a/docs/usage.md b/docs/usage.md
index 6ed114706..80ff457c5 100644
--- a/docs/usage.md
+++ b/docs/usage.md
@@ -31,6 +31,7 @@ The rnafusion pipeline needs references for the fusion detection tools, so downl
```bash
nextflow run nf-core/rnafusion \
+ -profile \
--build_references --all \
--cosmic_username --cosmic_passwd \
--genomes_base \
@@ -41,6 +42,7 @@ References for each tools can also be downloaded separately with:
```bash
nextflow run nf-core/rnafusion \
+ -profile \
--build_references -- -- ... \
--cosmic_username --cosmic_passwd \
--genomes_base \
@@ -59,6 +61,7 @@ Use credentials from QIAGEN and add `--qiagen`
```bash
nextflow run nf-core/rnafusion \
+ -profile \
--build_references -- -- ... \
--cosmic_username --cosmic_passwd \
--genomes_base \
@@ -75,6 +78,7 @@ If process `FUSIONREPORT_DOWNLOAD` times out, it could be due to network restric
```bash
nextflow run nf-core/rnafusion \
+ -profile \
--build_references \
--cosmic_username --cosmic_passwd \
--fusionreport \
@@ -134,6 +138,7 @@ The pipeline can either be run using all fusion detection tools or specifying in
```bash
nextflow run nf-core/rnafusion \
+ -profile \
--all \
--input \
--genomes_base \
@@ -144,6 +149,7 @@ To run only a specific detection tool use: `--tool`:
```bash
nextflow run nf-core/rnafusion \
+ -profile \
-- -- ... \
--input \
--genomes_base \
@@ -200,6 +206,7 @@ When the flag `--fastp_trim` is used, `fastp` is used to provide all tools with
```bash
nextflow run nf-core/rnafusion \
+-profile \
-- -- ... \
--input \
--genomes_base \
@@ -213,6 +220,7 @@ nextflow run nf-core/rnafusion \
```bash
nextflow run nf-core/rnafusion \
+ -profile \
-- -- ... \
--input \
--genomes_base \
@@ -226,6 +234,7 @@ nextflow run nf-core/rnafusion \
```bash
nextflow run nf-core/rnafusion \
+ -profile \
-- -- ... \
--input \
--genomes_base \
@@ -246,6 +255,7 @@ FusionInspector can be run as a standalone with:
```bash
nextflow run nf-core/rnafusion \
+-profile \
--fusioninspector_only \
--fusioninspector_fusions \
--input \
@@ -263,6 +273,7 @@ GENE3--GENE4
```bash
nextflow run nf-core/rnafusion \
+-profile \
--skip_qc \
--all OR <--tool>
--input \
@@ -276,6 +287,7 @@ This will skip all QC-related processes (picard metrics collection)
```bash
nextflow run nf-core/rnafusion \
+-profile \
--skip_vis \
--all OR <--tool>
--input \
From 5be23dbc44ca63c18355420751b0c45b2b9fce23 Mon Sep 17 00:00:00 2001
From: asp8200
Date: Tue, 11 Jun 2024 12:22:23 +0000
Subject: [PATCH 034/887] update changelog
---
CHANGELOG.md | 2 ++
1 file changed, 2 insertions(+)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 5effdca59..be2b037dd 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -15,6 +15,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Fixed
+- Fixed some Nextflow run-commands in the docs [#491](https://github.com/nf-core/rnafusion/pull/491)
+
### Removed
## v3.0.2 - [2024-04-10]
From b7dd1375cd74fa4c9b37edc415c665976b708930 Mon Sep 17 00:00:00 2001
From: Annick Renevey <47788523+rannick@users.noreply.github.com>
Date: Thu, 13 Jun 2024 11:41:44 +0200
Subject: [PATCH 035/887] update refs generation
---
conf/modules.config | 12 ++-
modules/local/fusioncatcher/build/main.nf | 4 +-
modules/local/fusioncatcher/download/main.nf | 2 +-
nextflow.config | 1 +
nextflow_schema.json | 4 +
subworkflows/local/build_references.nf | 101 +++++++++++-------
workflows/rnafusion.nf | 106 +++++++++----------
7 files changed, 131 insertions(+), 99 deletions(-)
diff --git a/conf/modules.config b/conf/modules.config
index 44dec3397..e78f73dbb 100644
--- a/conf/modules.config
+++ b/conf/modules.config
@@ -45,6 +45,10 @@ process {
]
}
+ withName: 'CAT_FASTQ' {
+ ext.when = { !params.build_references }
+ }
+
withName: 'ENSEMBL_DOWNLOAD' {
publishDir = [
path: { "${params.genomes_base}/ensembl" },
@@ -59,7 +63,7 @@ process {
withName: 'FASTQC' {
ext.args = '--quiet'
- ext.when = { !params.skip_qc }
+ ext.when = { !params.skip_qc and not !params.build_references }
publishDir = [
path: { "${params.outdir}/fastqc" },
mode: params.publish_dir_mode,
@@ -69,6 +73,7 @@ process {
withName: 'FASTQC_FOR_FASTP' {
ext.args = '--quiet'
+ ext.when = ( !params.skip_qc)
ext.prefix = { "${meta.id}_trimmed" }
publishDir = [
path: { "${params.outdir}/fastqc_for_fastp" },
@@ -362,6 +367,11 @@ process {
]
}
+ withName: 'TRIM_WORKFLOW:*' {
+ ext.when = { !params.build_references }
+
+ }
+
withName: 'VCF_COLLECT' {
ext.when = {!params.fusioninspector_only}
}
diff --git a/modules/local/fusioncatcher/build/main.nf b/modules/local/fusioncatcher/build/main.nf
index 513535567..15f7afedc 100644
--- a/modules/local/fusioncatcher/build/main.nf
+++ b/modules/local/fusioncatcher/build/main.nf
@@ -9,8 +9,8 @@ process FUSIONCATCHER_BUILD {
val ensembl_version
output:
- path "*" , emit: reference
- path "versions.yml" , emit: versions
+ path "human_v${ensembl_version}" , emit: reference
+ path "versions.yml" , emit: versions
when:
task.ext.when == null || task.ext.when
diff --git a/modules/local/fusioncatcher/download/main.nf b/modules/local/fusioncatcher/download/main.nf
index 7f59d9205..ff146c95c 100644
--- a/modules/local/fusioncatcher/download/main.nf
+++ b/modules/local/fusioncatcher/download/main.nf
@@ -10,7 +10,7 @@ process FUSIONCATCHER_DOWNLOAD {
val ensembl_version
output:
- path "*" , emit: reference
+ path "human_v${ensembl_version}" , emit: reference
path "versions.yml" , emit: versions
when:
diff --git a/nextflow.config b/nextflow.config
index fe2dd83da..b7d78f7d9 100644
--- a/nextflow.config
+++ b/nextflow.config
@@ -62,6 +62,7 @@ params {
// Skip steps
skip_qc = false
+ skip_vcf = false
skip_vis = false
// Download references option
diff --git a/nextflow_schema.json b/nextflow_schema.json
index 0889caa20..604e7b00a 100644
--- a/nextflow_schema.json
+++ b/nextflow_schema.json
@@ -15,6 +15,10 @@
"type": "boolean",
"description": "Skip QC steps"
},
+ "skip_vcf": {
+ "type": "boolean",
+ "description": "Skip vcf creation step"
+ }
"skip_vis": {
"type": "boolean",
"description": "Skip visualisation steps"
diff --git a/subworkflows/local/build_references.nf b/subworkflows/local/build_references.nf
index 0101c4d33..32602cc1e 100644
--- a/subworkflows/local/build_references.nf
+++ b/subworkflows/local/build_references.nf
@@ -46,21 +46,30 @@ workflow BUILD_REFERENCES {
!file(params.gtf).exists() || file(params.gtf).isEmpty()){
fake_meta = [:]
fake_meta.id = "Homo_sapiens.${params.genome}.${params.ensembl_version}"
- ENSEMBL_DOWNLOAD(params.ensembl_version, params.genome, fake_meta)}
- ch_fasta = Channel.fromPath(params.fasta).map { that -> [[id:that.Name], that] }
- ch_chrgtf = Channel.fromPath(params.chrgtf).map { that -> [[id:that.Name], that] }
- ch_gtf = Channel.fromPath(params.gtf).map { that -> [[id:that.Name], that] }
+ ENSEMBL_DOWNLOAD(params.ensembl_version, params.genome, fake_meta)
+ ch_fasta = ENSEMBL_DOWNLOAD.out.primary_assembly
+ ch_chrgtf = ENSEMBL_DOWNLOAD.out.chrgtf
+ ch_gtf = ENSEMBL_DOWNLOAD.out.gtf
+ } else {
+ ch_fasta = Channel.fromPath(params.fasta).map { that -> [[id:that.Name], that] }
+ ch_chrgtf = Channel.fromPath(params.chrgtf).map { that -> [[id:that.Name], that] }
+ ch_gtf = Channel.fromPath(params.gtf).map { that -> [[id:that.Name], that] }
+ }
+
- if (!file(params.hgnc_ref).exists() || file(params.hgnc_ref).isEmpty() ||
- !file(params.hgnc_date).exists() || file(params.hgnc_date).isEmpty()){
- HGNC_DOWNLOAD( )}
- ch_hgnc_ref = Channel.fromPath(params.hgnc_ref).map { that -> [[id:that.Name], that] }
- ch_hgnc_date = Channel.fromPath(params.hgnc_date).map { that -> [[id:that.Name], that] }
+ if ((!file(params.hgnc_ref).exists() || file(params.hgnc_ref).isEmpty() ||
+ !file(params.hgnc_date).exists() || file(params.hgnc_date).isEmpty()) and not params.skip_vcf){
+ HGNC_DOWNLOAD( )
+ ch_hgnc_ref = HGNC_DOWNLOAD.out.hgnc_ref
+ ch_hgnc_date =HGNC_DOWNLOAD.out.hgnc_date
+ } else {
+ ch_hgnc_ref = Channel.fromPath(params.hgnc_ref).map { that -> [[id:that.Name], that] }
+ ch_hgnc_date = Channel.fromPath(params.hgnc_date).map { that -> [[id:that.Name], that] }
+ }
- if (!file(params.fai).exists() || file(params.fai).isEmpty()){
- SAMTOOLS_FAIDX(ch_fasta, [[],[]])}
- ch_fai = Channel.fromPath(params.fai).map { that -> [[id:that.Name], that] }
+
+ ch_fai = (!file(params.fai).exists() || file(params.fai).isEmpty()) ? SAMTOOLS_FAIDX(ch_fasta, [[],[]]).fai : Channel.fromPath(params.fai).map { that -> [[id:that.Name], that] }
if (!file(params.rrna_intervals).exists() || file(params.rrna_intervals).isEmpty()){
@@ -68,69 +77,81 @@ workflow BUILD_REFERENCES {
RRNA_TRANSCRIPTS(ch_gtf)
CONVERT2BED(RRNA_TRANSCRIPTS.out.rrna_gtf)
GATK4_BEDTOINTERVALLIST(CONVERT2BED.out.bed, GATK4_CREATESEQUENCEDICTIONARY.out.dict)
- }
- ch_rrna_interval = Channel.fromPath(params.rrna_intervals).map { that -> [[id:that.Name], that] }
+ ch_rrna_interval = GATK4_BEDTOINTERVALLIST.out.interval_list
+ } else {
+ ch_rrna_interval = Channel.fromPath(params.rrna_intervals).map { that -> [[id:that.Name], that] }
+ }
- if (!file(params.refflat).exists() || file(params.refflat).isEmpty()){
- GTF_TO_REFFLAT(ch_gtf)}
- ch_refflat = Channel.fromPath(params.refflat)
+ ch_refflat = (!file(params.refflat).exists() || file(params.refflat).isEmpty()) ? GTF_TO_REFFLAT.refflat : Channel.fromPath(params.refflat)
if (!file(params.salmon_index).exists() || file(params.salmon_index).isEmpty() ||
!file(params.salmon_index_stub_check).exists() || file(params.salmon_index_stub_check).isEmpty()){ // add condition for qc
GFFREAD(ch_gtf, ch_fasta.map{ meta, fasta -> [ fasta ] })
SALMON_INDEX(ch_fasta.map{ meta, fasta -> [ fasta ] }, GFFREAD.out.gffread_fasta.map{ meta, gffread_fasta -> [ gffread_fasta ] })
+ ch_salmon_index = SALMON_INDEX.out.index
+ } else {
+ ch_salmon_index = Channel.fromPath(params.salmon_index)
}
- ch_salmon_index = Channel.fromPath(params.salmon_index)
if ((params.starindex || params.all || params.starfusion || params.arriba) &&
(!file(params.starindex_ref).exists() || file(params.starindex_ref).isEmpty() ||
!file(params.starindex_ref_stub_check).exists() || file(params.starindex_ref_stub_check).isEmpty() )) {
STAR_GENOMEGENERATE(ch_fasta, ch_gtf)
+ ch_starindex_ref = STAR_GENOMEGENERATE.out.index
+ } else {
+ ch_starindex_ref = Channel.fromPath(params.starindex_ref).map { that -> [[id:that.Name], that] }
}
- ch_starindex_ref = Channel.fromPath(params.starindex_ref).map { that -> [[id:that.Name], that] }
- if ((params.arriba || params.all) &&
- (!file(params.arriba_ref_blacklist).exists() || file(params.arriba_ref_blacklist).isEmpty() ||
- !file(params.arriba_ref_known_fusions).exists() || file(params.arriba_ref_known_fusions).isEmpty() ||
- !file(params.arriba_ref_protein_domains).exists() || file(params.arriba_ref_protein_domains).isEmpty())) {
- ARRIBA_DOWNLOAD()}
- ch_arriba_ref_blacklist = Channel.fromPath(params.arriba_ref_blacklist).map { that -> [[id:that.Name], that] }
- ch_arriba_ref_known_fusions = Channel.fromPath(params.arriba_ref_known_fusions).map { that -> [[id:that.Name], that] }
- ch_arriba_ref_protein_domains = Channel.fromPath(params.arriba_ref_protein_domains).map { that -> [[id:that.Name], that] }
+// if ((params.arriba || params.all) &&
+// (!file(params.arriba_ref_blacklist).exists() || file(params.arriba_ref_blacklist).isEmpty() ||
+// !file(params.arriba_ref_known_fusions).exists() || file(params.arriba_ref_known_fusions).isEmpty() ||
+// !file(params.arriba_ref_protein_domains).exists() || file(params.arriba_ref_protein_domains).isEmpty())) {
+// ARRIBA_DOWNLOAD()
+// ch_arriba_ref_blacklist = Channel.fromPath(params.arriba_ref_blacklist).map { that -> [[id:that.Name], that] }
+// ch_arriba_ref_known_fusions = Channel.fromPath(params.arriba_ref_known_fusions).map { that -> [[id:that.Name], that] }
+// ch_arriba_ref_protein_domains = Channel.fromPath(params.arriba_ref_protein_domains).map { that -> [[id:that.Name], that] }
+// } else {
+// // need to update the module to emit blacklist,knownfusions etc
+// }
if ((params.fusioncatcher || params.all) &&
(!file(params.fusioncatcher_ref).exists() || file(params.fusioncatcher_ref).isEmpty() ||
!file(params.fusioncatcher_ref_stub_check).exists() || file(params.fusioncatcher_ref_stub_check).isEmpty() )) {
if (params.download_refs) {
- FUSIONCATCHER_DOWNLOAD(params.ensembl_version)}
+ FUSIONCATCHER_DOWNLOAD(params.ensembl_version)
+ ch_fusioncatcher_ref = FUSIONCATCHER_DOWNLOAD.out.reference}
else {
- FUSIONCATCHER_BUILD(params.ensembl_version)}
- }
- ch_fusioncatcher_ref = Channel.fromPath(params.fusioncatcher_ref).map { that -> [[id:that.Name], that] }
+ FUSIONCATCHER_BUILD(params.ensembl_version)
+ ch_fusioncatcher_ref = FUSIONCATCHER_BUILD.out.reference}
+ } else {
+ ch_fusioncatcher_ref = Channel.fromPath(params.fusioncatcher_ref).map { that -> [[id:that.Name], that] }
+ }
if ((params.starfusion || params.all) &&
(!file(params.starfusion_ref).exists() || file(params.starfusion_ref).isEmpty() ||
!file(params.starfusion_ref_stub_check).exists() || file(params.starfusion_ref_stub_check).isEmpty() )) {
if (params.download_refs) {
- STARFUSION_DOWNLOAD( ch_fasta, ch_gtf )}
+ ch_starfusion_ref = STARFUSION_DOWNLOAD( ch_fasta, ch_gtf ).out.reference }
else {
- STARFUSION_BUILD( ch_fasta, ch_gtf )}
- }
- ch_starfusion_ref = Channel.fromPath(params.starfusion_ref).map { that -> [[id:that.Name], that] }
+ ch_starfusion_ref = STARFUSION_BUILD( ch_fasta, ch_gtf ).out.reference }
+ } else {
+ ch_starfusion_ref = Channel.fromPath(params.starfusion_ref).map { that -> [[id:that.Name], that] }}
if ((params.fusionreport || params.all) &&
(!file(params.fusionreport_ref).exists() || file(params.fusionreport_ref).isEmpty() ||
!file(params.fusionreport_ref_stub_check).exists() || file(params.fusionreport_ref_stub_check).isEmpty())) {
if (!params.cosmic_username || !params.cosmic_passwd) { exit 1, 'COSMIC username and/or password missing' }
- FUSIONREPORT_DOWNLOAD( params.cosmic_username, params.cosmic_passwd )}
- ch_fusionreport_ref = Channel.fromPath(params.fusionreport_ref).map { that -> [[id:that.Name], that] }
+ ch_fusionreport_ref = FUSIONREPORT_DOWNLOAD( params.cosmic_username, params.cosmic_passwd ).out.reference
+ } else {
+ ch_fusionreport_ref = Channel.fromPath(params.fusionreport_ref).map { that -> [[id:that.Name], that] }
+ }
emit:
ch_fasta
@@ -143,9 +164,9 @@ workflow BUILD_REFERENCES {
ch_refflat
ch_salmon_index
ch_starindex_ref
- ch_arriba_ref_blacklist
- ch_arriba_ref_known_fusions
- ch_arriba_ref_protein_domains
+ // ch_arriba_ref_blacklist
+ // ch_arriba_ref_known_fusions
+ // ch_arriba_ref_protein_domains
ch_fusioncatcher_ref
ch_starfusion_ref
ch_fusionreport_ref
diff --git a/workflows/rnafusion.nf b/workflows/rnafusion.nf
index 64bd3f99c..eb0e19f49 100644
--- a/workflows/rnafusion.nf
+++ b/workflows/rnafusion.nf
@@ -57,11 +57,6 @@ workflow RNAFUSION {
main:
- // Reference channels
-
-
-
-
ch_versions = Channel.empty()
ch_multiqc_files = Channel.empty()
@@ -73,59 +68,60 @@ workflow RNAFUSION {
BUILD_REFERENCES()
-// //
-// // Create channel from input file provided through params.input
-// //
-// Channel
-// .fromSamplesheet("input")
-// .map {
-// meta, fastq_1, fastq_2, strandedness ->
-// 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
-// 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)
+ //
+ // Create channel from input file provided through params.input
+ //
+ Channel
+ .fromSamplesheet("input")
+ .map {
+ meta, fastq_1, fastq_2, strandedness ->
+ 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
+ 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)
-// //
-// // MODULE: Run FastQC
-// //
-// FASTQC (
-// ch_cat_fastq
-// )
-// ch_multiqc_files = ch_multiqc_files.mix(FASTQC.out.zip.collect{it[1]})
-// ch_versions = ch_versions.mix(FASTQC.out.versions)
-// TRIM_WORKFLOW (
-// ch_cat_fastq
-// )
-// ch_reads_fusioncatcher = TRIM_WORKFLOW.out.ch_reads_fusioncatcher
-// ch_reads_all = TRIM_WORKFLOW.out.ch_reads_all
-// ch_versions = ch_versions.mix(TRIM_WORKFLOW.out.versions)
+ //
+ // MODULE: Run FastQC
+ //
+ FASTQC (
+ ch_cat_fastq
+ )
+ ch_multiqc_files = ch_multiqc_files.mix(FASTQC.out.zip.collect{it[1]})
+ ch_versions = ch_versions.mix(FASTQC.out.versions)
+
+
+ TRIM_WORKFLOW (
+ ch_cat_fastq
+ )
+ ch_reads_fusioncatcher = TRIM_WORKFLOW.out.ch_reads_fusioncatcher
+ ch_reads_all = TRIM_WORKFLOW.out.ch_reads_all
+ ch_versions = ch_versions.mix(TRIM_WORKFLOW.out.versions)
// SALMON_QUANT( ch_reads_all, ch_salmon_index.map{ meta, index -> index }, ch_gtf.map{ meta, gtf -> gtf }, [], false, 'A')
From 89be7c1ab16c8a25dc7dedc8cdc7a18a3c36d75f Mon Sep 17 00:00:00 2001
From: Annick Renevey <47788523+rannick@users.noreply.github.com>
Date: Thu, 13 Jun 2024 12:15:12 +0200
Subject: [PATCH 036/887] fix small issues
---
modules/local/fusioncatcher/build/main.nf | 2 +-
nextflow_schema.json | 2 +-
subworkflows/local/build_references.nf | 5 ++---
workflows/rnafusion.nf | 10 +++++-----
4 files changed, 9 insertions(+), 10 deletions(-)
diff --git a/modules/local/fusioncatcher/build/main.nf b/modules/local/fusioncatcher/build/main.nf
index 15f7afedc..0258a2cca 100644
--- a/modules/local/fusioncatcher/build/main.nf
+++ b/modules/local/fusioncatcher/build/main.nf
@@ -3,7 +3,7 @@ process FUSIONCATCHER_BUILD {
label 'process_medium'
conda "bioconda::fusioncatcher=1.33"
- container "docker.io/clinicalgenomics/fusioncatcher:1.33"
+ container "docker.io/rannickscilifelab/fusioncatcher:1.33a"
input:
val ensembl_version
diff --git a/nextflow_schema.json b/nextflow_schema.json
index 604e7b00a..95238d65d 100644
--- a/nextflow_schema.json
+++ b/nextflow_schema.json
@@ -18,7 +18,7 @@
"skip_vcf": {
"type": "boolean",
"description": "Skip vcf creation step"
- }
+ },
"skip_vis": {
"type": "boolean",
"description": "Skip visualisation steps"
diff --git a/subworkflows/local/build_references.nf b/subworkflows/local/build_references.nf
index 32602cc1e..49a18ce2a 100644
--- a/subworkflows/local/build_references.nf
+++ b/subworkflows/local/build_references.nf
@@ -58,11 +58,10 @@ workflow BUILD_REFERENCES {
if ((!file(params.hgnc_ref).exists() || file(params.hgnc_ref).isEmpty() ||
- !file(params.hgnc_date).exists() || file(params.hgnc_date).isEmpty()) and not params.skip_vcf){
+ !file(params.hgnc_date).exists() || file(params.hgnc_date).isEmpty()) && !params.skip_vcf){
HGNC_DOWNLOAD( )
ch_hgnc_ref = HGNC_DOWNLOAD.out.hgnc_ref
- ch_hgnc_date =HGNC_DOWNLOAD.out.hgnc_date
-
+ ch_hgnc_date = HGNC_DOWNLOAD.out.hgnc_date
} else {
ch_hgnc_ref = Channel.fromPath(params.hgnc_ref).map { that -> [[id:that.Name], that] }
ch_hgnc_date = Channel.fromPath(params.hgnc_date).map { that -> [[id:that.Name], that] }
diff --git a/workflows/rnafusion.nf b/workflows/rnafusion.nf
index eb0e19f49..8067210a8 100644
--- a/workflows/rnafusion.nf
+++ b/workflows/rnafusion.nf
@@ -109,11 +109,11 @@ workflow RNAFUSION {
//
// MODULE: Run FastQC
//
- FASTQC (
- ch_cat_fastq
- )
- ch_multiqc_files = ch_multiqc_files.mix(FASTQC.out.zip.collect{it[1]})
- ch_versions = ch_versions.mix(FASTQC.out.versions)
+ // FASTQC (
+ // ch_cat_fastq
+ // )
+ // ch_multiqc_files = ch_multiqc_files.mix(FASTQC.out.zip.collect{it[1]})
+ // ch_versions = ch_versions.mix(FASTQC.out.versions)
TRIM_WORKFLOW (
From 0b854c6f75ae63ef683f8a0d0b04897f98920522 Mon Sep 17 00:00:00 2001
From: Alexander Peltzer
Date: Thu, 8 Aug 2024 15:43:35 +0200
Subject: [PATCH 037/887] Add option to wget to ignore proxy certificates
---
modules/local/arriba/download/main.nf | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/modules/local/arriba/download/main.nf b/modules/local/arriba/download/main.nf
index 860439ade..61b9a91f7 100644
--- a/modules/local/arriba/download/main.nf
+++ b/modules/local/arriba/download/main.nf
@@ -13,7 +13,7 @@ process ARRIBA_DOWNLOAD {
script:
"""
- wget https://github.com/suhrig/arriba/releases/download/v2.4.0/arriba_v2.4.0.tar.gz -O arriba_v2.4.0.tar.gz
+ wget https://github.com/suhrig/arriba/releases/download/v2.4.0/arriba_v2.4.0.tar.gz -O arriba_v2.4.0.tar.gz --no-check-certificate
tar -xzvf arriba_v2.4.0.tar.gz
rm arriba_v2.4.0.tar.gz
mv arriba_v2.4.0/database/* .
From 8f8eeaa28a17ea76ab871c80dba5fe641acc7441 Mon Sep 17 00:00:00 2001
From: Alexander Peltzer
Date: Thu, 8 Aug 2024 14:59:49 +0000
Subject: [PATCH 038/887] Add changelog
---
CHANGELOG.md | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 871c46594..21af3e270 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -3,6 +3,12 @@
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
+
+## Fixed
+
+- fix bug when trying to build indices behind a proxy and wget was unable to download arriba indices [[#495](https://github.com/nf-core/rnafusion/issues/495)]
+
## v3.0.2 - [2024-04-10]
### Added
From 0c6fe8283c61f0dc4557970ce576d08fc97ee909 Mon Sep 17 00:00:00 2001
From: Annick Renevey <47788523+rannick@users.noreply.github.com>
Date: Thu, 12 Sep 2024 11:21:33 +0200
Subject: [PATCH 039/887] updates
---
conf/base.config | 2 +-
modules/local/fusioncatcher/build/main.nf | 2 +-
modules/local/fusioncatcher/download/main.nf | 1 +
modules/local/starfusion/download/main.nf | 1 +
subworkflows/local/build_references.nf | 30 ++++++++++----------
subworkflows/local/trim_workflow.nf | 18 ++++--------
workflows/rnafusion.nf | 24 +++++++++-------
7 files changed, 38 insertions(+), 40 deletions(-)
diff --git a/conf/base.config b/conf/base.config
index 5b2e6f360..62d8dbf15 100644
--- a/conf/base.config
+++ b/conf/base.config
@@ -31,7 +31,7 @@ process {
}
withLabel:process_medium {
cpus = { check_max( 6 * task.attempt, 'cpus' ) }
- memory = { check_max( 36.GB * task.attempt, 'memory' ) }
+ memory = { check_max( 16.GB * task.attempt, 'memory' ) }
time = { check_max( 8.h * task.attempt, 'time' ) }
}
withLabel:process_high {
diff --git a/modules/local/fusioncatcher/build/main.nf b/modules/local/fusioncatcher/build/main.nf
index 0258a2cca..15f7afedc 100644
--- a/modules/local/fusioncatcher/build/main.nf
+++ b/modules/local/fusioncatcher/build/main.nf
@@ -3,7 +3,7 @@ process FUSIONCATCHER_BUILD {
label 'process_medium'
conda "bioconda::fusioncatcher=1.33"
- container "docker.io/rannickscilifelab/fusioncatcher:1.33a"
+ container "docker.io/clinicalgenomics/fusioncatcher:1.33"
input:
val ensembl_version
diff --git a/modules/local/fusioncatcher/download/main.nf b/modules/local/fusioncatcher/download/main.nf
index ff146c95c..aec162882 100644
--- a/modules/local/fusioncatcher/download/main.nf
+++ b/modules/local/fusioncatcher/download/main.nf
@@ -22,6 +22,7 @@ process FUSIONCATCHER_DOWNLOAD {
def args2 = task.ext.args2 ?: ''
def url =
"""
+ TODO: move to my sourceforge
wget $args http://sourceforge.net/projects/fusioncatcher/files/data/human_${ensembl_version}.tar.gz.aa
wget $args http://sourceforge.net/projects/fusioncatcher/files/data/human_${ensembl_version}.tar.gz.ab
wget $args http://sourceforge.net/projects/fusioncatcher/files/data/human_${ensembl_version}.tar.gz.ac
diff --git a/modules/local/starfusion/download/main.nf b/modules/local/starfusion/download/main.nf
index 9c9b14827..e3a4b1b85 100644
--- a/modules/local/starfusion/download/main.nf
+++ b/modules/local/starfusion/download/main.nf
@@ -9,6 +9,7 @@ process STARFUSION_DOWNLOAD {
path "ctat_genome_lib_build_dir/ref_annot.gtf", emit: chrgtf
+ TODO: move to my sourceforge
script:
"""
wget https://data.broadinstitute.org/Trinity/CTAT_RESOURCE_LIB/__genome_libs_StarFv1.10/GRCh38_gencode_v37_CTAT_lib_Mar012021.plug-n-play.tar.gz --no-check-certificate
diff --git a/subworkflows/local/build_references.nf b/subworkflows/local/build_references.nf
index 49a18ce2a..a1a640509 100644
--- a/subworkflows/local/build_references.nf
+++ b/subworkflows/local/build_references.nf
@@ -92,7 +92,7 @@ workflow BUILD_REFERENCES {
ch_salmon_index = SALMON_INDEX.out.index
} else {
ch_salmon_index = Channel.fromPath(params.salmon_index)
- }
+ }
if ((params.starindex || params.all || params.starfusion || params.arriba) &&
@@ -105,17 +105,17 @@ workflow BUILD_REFERENCES {
}
-// if ((params.arriba || params.all) &&
-// (!file(params.arriba_ref_blacklist).exists() || file(params.arriba_ref_blacklist).isEmpty() ||
-// !file(params.arriba_ref_known_fusions).exists() || file(params.arriba_ref_known_fusions).isEmpty() ||
-// !file(params.arriba_ref_protein_domains).exists() || file(params.arriba_ref_protein_domains).isEmpty())) {
-// ARRIBA_DOWNLOAD()
-// ch_arriba_ref_blacklist = Channel.fromPath(params.arriba_ref_blacklist).map { that -> [[id:that.Name], that] }
-// ch_arriba_ref_known_fusions = Channel.fromPath(params.arriba_ref_known_fusions).map { that -> [[id:that.Name], that] }
-// ch_arriba_ref_protein_domains = Channel.fromPath(params.arriba_ref_protein_domains).map { that -> [[id:that.Name], that] }
-// } else {
-// // need to update the module to emit blacklist,knownfusions etc
-// }
+ if ((params.arriba || params.all) &&
+ (!file(params.arriba_ref_blacklist).exists() || file(params.arriba_ref_blacklist).isEmpty() ||
+ !file(params.arriba_ref_known_fusions).exists() || file(params.arriba_ref_known_fusions).isEmpty() ||
+ !file(params.arriba_ref_protein_domains).exists() || file(params.arriba_ref_protein_domains).isEmpty())) {
+ ARRIBA_DOWNLOAD()
+ ch_arriba_ref_blacklist = Channel.fromPath(params.arriba_ref_blacklist).map { that -> [[id:that.Name], that] }
+ ch_arriba_ref_known_fusions = Channel.fromPath(params.arriba_ref_known_fusions).map { that -> [[id:that.Name], that] }
+ ch_arriba_ref_protein_domains = Channel.fromPath(params.arriba_ref_protein_domains).map { that -> [[id:that.Name], that] }
+ } else {
+// TODO need to update the module to emit blacklist,knownfusions etc
+ }
if ((params.fusioncatcher || params.all) &&
@@ -163,9 +163,9 @@ workflow BUILD_REFERENCES {
ch_refflat
ch_salmon_index
ch_starindex_ref
- // ch_arriba_ref_blacklist
- // ch_arriba_ref_known_fusions
- // ch_arriba_ref_protein_domains
+ ch_arriba_ref_blacklist
+ ch_arriba_ref_known_fusions
+ ch_arriba_ref_protein_domains
ch_fusioncatcher_ref
ch_starfusion_ref
ch_fusionreport_ref
diff --git a/subworkflows/local/trim_workflow.nf b/subworkflows/local/trim_workflow.nf
index ea21134db..f963451bc 100644
--- a/subworkflows/local/trim_workflow.nf
+++ b/subworkflows/local/trim_workflow.nf
@@ -8,9 +8,6 @@ workflow TRIM_WORKFLOW {
main:
ch_versions = Channel.empty()
- ch_fastp_html = Channel.empty()
- ch_fastp_json = Channel.empty()
- ch_fastqc_trimmed = Channel.empty()
if (params.fastp_trim) {
FASTP(reads, params.adapter_fasta, false, false)
@@ -19,24 +16,21 @@ workflow TRIM_WORKFLOW {
FASTQC_FOR_FASTP(FASTP.out.reads)
ch_versions = ch_versions.mix(FASTQC_FOR_FASTP.out.versions)
- ch_reads_all = FASTP.out.reads
- ch_reads_fusioncatcher = ch_reads_all
+ ch_reads = FASTP.out.reads
ch_fastp_html = FASTP.out.html
ch_fastp_json = FASTP.out.json
ch_fastqc_trimmed = FASTQC_FOR_FASTP.out.zip
}
else {
- ch_reads_all = reads
- ch_reads_fusioncatcher = reads
+ ch_reads = reads
}
emit:
- ch_reads_all
- ch_reads_fusioncatcher
- ch_fastp_html
- ch_fastp_json
- ch_fastqc_trimmed
+ trimmed_reads = ch_reads
+ fastp_html = ch_fastp_html.ifEmpty([])
+ fastp_json = ch_fastp_json.ifEmpty([])
+ fastqc_trimmed = ch_fastqc_trimmed.ifEmpty([])
versions = ch_versions
}
diff --git a/workflows/rnafusion.nf b/workflows/rnafusion.nf
index 8067210a8..302f2829f 100644
--- a/workflows/rnafusion.nf
+++ b/workflows/rnafusion.nf
@@ -107,26 +107,28 @@ workflow RNAFUSION {
//
- // MODULE: Run FastQC
+ // QC from FASTQ files
//
- // FASTQC (
- // ch_cat_fastq
- // )
- // ch_multiqc_files = ch_multiqc_files.mix(FASTQC.out.zip.collect{it[1]})
- // ch_versions = ch_versions.mix(FASTQC.out.versions)
+ FASTQC (
+ ch_cat_fastq
+ )
+ ch_multiqc_files = ch_multiqc_files.mix(FASTQC.out.zip.collect{it[1]})
+ ch_versions = ch_versions.mix(FASTQC.out.versions)
+ SALMON_QUANT( ch_reads_all, ch_salmon_index.map{ meta, index -> index }, ch_gtf.map{ meta, gtf -> gtf }, [], false, 'A')
+ ch_multiqc_files = ch_multiqc_files.mix(SALMON_QUANT.out.zip.collect{it[1]})
+ ch_versions = ch_versions.mix(SALMON_QUANT.out.versions)
+ //
+ // Trimming
+ //
TRIM_WORKFLOW (
ch_cat_fastq
)
- ch_reads_fusioncatcher = TRIM_WORKFLOW.out.ch_reads_fusioncatcher
- ch_reads_all = TRIM_WORKFLOW.out.ch_reads_all
+ ch_reads = TRIM_WORKFLOW.out.trimmed_reads
ch_versions = ch_versions.mix(TRIM_WORKFLOW.out.versions)
-// SALMON_QUANT( ch_reads_all, ch_salmon_index.map{ meta, index -> index }, ch_gtf.map{ meta, gtf -> gtf }, [], false, 'A')
-
-
// //
// // SUBWORKFLOW: Run STAR alignment and Arriba
// //
From 40da42dc561fbbf8ec9a6a6dd2f18d67eaeec118 Mon Sep 17 00:00:00 2001
From: Annick Renevey <47788523+rannick@users.noreply.github.com>
Date: Thu, 12 Sep 2024 11:33:15 +0200
Subject: [PATCH 040/887] update modules again
---
modules.json | 56 +-
.../agat/convertspgff2tsv/environment.yml | 2 -
.../agat/convertspgff2tsv/tests/main.nf.test | 4 +-
modules/nf-core/arriba/arriba/environment.yml | 2 -
.../nf-core/arriba/download/environment.yml | 2 -
modules/nf-core/arriba/download/main.nf | 2 +
.../arriba/download/tests/main.nf.test | 35 +
.../arriba/download/tests/main.nf.test.snap | 35 +
.../bedops/convert2bed/environment.yml | 2 -
.../bedops/convert2bed/tests/main.nf.test | 4 +-
modules/nf-core/cat/cat/environment.yml | 2 -
modules/nf-core/cat/cat/main.nf | 1 -
modules/nf-core/cat/cat/tests/main.nf.test | 27 +-
.../nf-core/cat/cat/tests/main.nf.test.snap | 74 +-
modules/nf-core/cat/fastq/environment.yml | 2 -
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 ++
modules/nf-core/fastp/environment.yml | 2 -
modules/nf-core/fastp/main.nf | 21 +-
modules/nf-core/fastp/meta.yml | 6 +-
modules/nf-core/fastp/tests/main.nf.test | 823 +++---
modules/nf-core/fastp/tests/main.nf.test.snap | 1361 ++++++++--
modules/nf-core/fastqc/environment.yml | 2 -
modules/nf-core/fastqc/main.nf | 5 +-
modules/nf-core/fastqc/tests/main.nf.test | 225 +-
.../nf-core/fastqc/tests/main.nf.test.snap | 370 ++-
.../gatk4/bedtointervallist/environment.yml | 2 -
.../createsequencedictionary/environment.yml | 2 -
.../gatk4/markduplicates/environment.yml | 2 -
modules/nf-core/gffread/environment.yml | 2 -
modules/nf-core/multiqc/environment.yml | 4 +-
modules/nf-core/multiqc/main.nf | 14 +-
modules/nf-core/multiqc/meta.yml | 13 +
modules/nf-core/multiqc/tests/main.nf.test | 8 +
.../nf-core/multiqc/tests/main.nf.test.snap | 20 +-
modules/nf-core/multiqc/tests/nextflow.config | 5 +
.../collectinsertsizemetrics/environment.yml | 4 +-
.../picard/collectinsertsizemetrics/main.nf | 8 +-
.../tests/main.nf.test | 62 +
.../tests/main.nf.test.snap | 74 +
.../collectrnaseqmetrics/environment.yml | 4 +-
.../picard/collectrnaseqmetrics/main.nf | 4 +-
.../picard/collectwgsmetrics/environment.yml | 4 +-
.../nf-core/picard/collectwgsmetrics/main.nf | 4 +-
.../collectwgsmetrics/tests/main.nf.test | 83 +
.../collectwgsmetrics/tests/main.nf.test.snap | 28 +
.../nf-core/rrnatranscripts/environment.yml | 2 -
.../templates/get_rrna_transcripts.py | 8 +-
.../rrnatranscripts/tests/main.nf.test | 4 +-
modules/nf-core/salmon/index/environment.yml | 2 -
modules/nf-core/salmon/quant/environment.yml | 2 -
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/samtools/faidx/environment.yml | 7 +-
modules/nf-core/samtools/faidx/main.nf | 4 +-
.../samtools/faidx/tests/main.nf.test.snap | 30 +-
.../nf-core/samtools/index/environment.yml | 6 +-
modules/nf-core/samtools/index/main.nf | 11 +-
.../nf-core/samtools/index/tests/main.nf.test | 87 +-
.../samtools/index/tests/main.nf.test.snap | 264 +-
modules/nf-core/samtools/sort/environment.yml | 6 +-
modules/nf-core/samtools/sort/main.nf | 18 +-
.../nf-core/samtools/sort/tests/main.nf.test | 52 +-
.../samtools/sort/tests/main.nf.test.snap | 144 +-
.../samtools/sort/tests/nextflow_cram.config | 8 +
modules/nf-core/samtools/view/environment.yml | 6 +-
modules/nf-core/samtools/view/main.nf | 44 +-
modules/nf-core/samtools/view/meta.yml | 9 +
.../nf-core/samtools/view/tests/main.nf.test | 2 +
.../samtools/view/tests/main.nf.test.snap | 58 +-
modules/nf-core/star/align/environment.yml | 2 -
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/environment.yml | 2 -
.../star/genomegenerate/tests/main.nf.test | 39 +-
.../genomegenerate/tests/main.nf.test.snap | 182 +-
.../nf-core/stringtie/merge/environment.yml | 2 -
.../stringtie/merge/tests/main.nf.test | 2 +-
.../stringtie/stringtie/environment.yml | 2 -
.../stringtie/stringtie/tests/main.nf.test | 139 +-
.../stringtie/tests/main.nf.test.snap | 504 +++-
.../ucsc/gtftogenepred/environment.yml | 2 -
.../ucsc/gtftogenepred/tests/main.nf.test | 36 +
.../gtftogenepred/tests/main.nf.test.snap | 51 +
.../ucsc/gtftogenepred/tests/nextflow.config | 8 +
88 files changed, 6478 insertions(+), 2021 deletions(-)
create mode 100644 modules/nf-core/arriba/download/tests/main.nf.test
create mode 100644 modules/nf-core/arriba/download/tests/main.nf.test.snap
create mode 100644 modules/nf-core/multiqc/tests/nextflow.config
create mode 100644 modules/nf-core/picard/collectinsertsizemetrics/tests/main.nf.test
create mode 100644 modules/nf-core/picard/collectinsertsizemetrics/tests/main.nf.test.snap
create mode 100644 modules/nf-core/picard/collectwgsmetrics/tests/main.nf.test
create mode 100644 modules/nf-core/picard/collectwgsmetrics/tests/main.nf.test.snap
create mode 100644 modules/nf-core/samtools/sort/tests/nextflow_cram.config
create mode 100644 modules/nf-core/ucsc/gtftogenepred/tests/main.nf.test
create mode 100644 modules/nf-core/ucsc/gtftogenepred/tests/main.nf.test.snap
create mode 100644 modules/nf-core/ucsc/gtftogenepred/tests/nextflow.config
diff --git a/modules.json b/modules.json
index b3150b16b..2b34aabb8 100644
--- a/modules.json
+++ b/modules.json
@@ -7,142 +7,142 @@
"nf-core": {
"agat/convertspgff2tsv": {
"branch": "master",
- "git_sha": "b1d41826971b91f9649b46a8f3ccb226ee150c85",
+ "git_sha": "06c8865e36741e05ad32ef70ab3fac127486af48",
"installed_by": ["modules"]
},
"arriba/arriba": {
"branch": "master",
- "git_sha": "bbaeb3a3149def237b9d0acb9ab749ae98088e29",
+ "git_sha": "06c8865e36741e05ad32ef70ab3fac127486af48",
"installed_by": ["modules"]
},
"arriba/download": {
"branch": "master",
- "git_sha": "3f5420aa22e00bd030a2556dfdffc9e164ec0ec5",
+ "git_sha": "06c8865e36741e05ad32ef70ab3fac127486af48",
"installed_by": ["modules"]
},
"bedops/convert2bed": {
"branch": "master",
- "git_sha": "bbd685cd308e4d8bcf0c2caf82da3ee3c9e24157",
+ "git_sha": "06c8865e36741e05ad32ef70ab3fac127486af48",
"installed_by": ["modules"]
},
"cat/cat": {
"branch": "master",
- "git_sha": "9437e6053dccf4aafa022bfd6e7e9de67e625af8",
+ "git_sha": "06c8865e36741e05ad32ef70ab3fac127486af48",
"installed_by": ["modules"]
},
"cat/fastq": {
"branch": "master",
- "git_sha": "4fc983ad0b30e6e32696fa7d980c76c7bfe1c03e",
+ "git_sha": "06c8865e36741e05ad32ef70ab3fac127486af48",
"installed_by": ["modules"]
},
"fastp": {
"branch": "master",
- "git_sha": "95cf5fe0194c7bf5cb0e3027a2eb7e7c89385080",
+ "git_sha": "06c8865e36741e05ad32ef70ab3fac127486af48",
"installed_by": ["modules"]
},
"fastqc": {
"branch": "master",
- "git_sha": "285a50500f9e02578d90b3ce6382ea3c30216acd",
+ "git_sha": "06c8865e36741e05ad32ef70ab3fac127486af48",
"installed_by": ["modules"]
},
"gatk4/bedtointervallist": {
"branch": "master",
- "git_sha": "d3f215802f696f7993f25c759781d2db91232015",
+ "git_sha": "06c8865e36741e05ad32ef70ab3fac127486af48",
"installed_by": ["modules"]
},
"gatk4/createsequencedictionary": {
"branch": "master",
- "git_sha": "e6fe277739f5894711405af3e717b2470bd956b5",
+ "git_sha": "06c8865e36741e05ad32ef70ab3fac127486af48",
"installed_by": ["modules"]
},
"gatk4/markduplicates": {
"branch": "master",
- "git_sha": "194fca815cf594646e638fa5476acbcc296f1850",
+ "git_sha": "06c8865e36741e05ad32ef70ab3fac127486af48",
"installed_by": ["modules"]
},
"gffread": {
"branch": "master",
- "git_sha": "6c996d7fbe0816dcbb68ce587ad5f873313682a1",
+ "git_sha": "06c8865e36741e05ad32ef70ab3fac127486af48",
"installed_by": ["modules"]
},
"multiqc": {
"branch": "master",
- "git_sha": "b7ebe95761cd389603f9cc0e0dc384c0f663815a",
+ "git_sha": "06c8865e36741e05ad32ef70ab3fac127486af48",
"installed_by": ["modules"]
},
"picard/collectinsertsizemetrics": {
"branch": "master",
- "git_sha": "20b0918591d4ba20047d7e13e5094bcceba81447",
+ "git_sha": "06c8865e36741e05ad32ef70ab3fac127486af48",
"installed_by": ["modules"]
},
"picard/collectrnaseqmetrics": {
"branch": "master",
- "git_sha": "20b0918591d4ba20047d7e13e5094bcceba81447",
+ "git_sha": "06c8865e36741e05ad32ef70ab3fac127486af48",
"installed_by": ["modules"]
},
"picard/collectwgsmetrics": {
"branch": "master",
- "git_sha": "20b0918591d4ba20047d7e13e5094bcceba81447",
+ "git_sha": "06c8865e36741e05ad32ef70ab3fac127486af48",
"installed_by": ["modules"]
},
"rrnatranscripts": {
"branch": "master",
- "git_sha": "7b17de553ee27a17478f6bf9df15acd26b1ef377",
+ "git_sha": "06c8865e36741e05ad32ef70ab3fac127486af48",
"installed_by": ["modules"]
},
"salmon/index": {
"branch": "master",
- "git_sha": "cb6b2b94fc40dea58f0b1e3dd095f3dd24f2ac8a",
+ "git_sha": "06c8865e36741e05ad32ef70ab3fac127486af48",
"installed_by": ["modules"]
},
"salmon/quant": {
"branch": "master",
- "git_sha": "cb6b2b94fc40dea58f0b1e3dd095f3dd24f2ac8a",
+ "git_sha": "06c8865e36741e05ad32ef70ab3fac127486af48",
"installed_by": ["modules"]
},
"samtools/faidx": {
"branch": "master",
- "git_sha": "f153f1f10e1083c49935565844cccb7453021682",
+ "git_sha": "06c8865e36741e05ad32ef70ab3fac127486af48",
"installed_by": ["modules"]
},
"samtools/index": {
"branch": "master",
- "git_sha": "f4596fe0bdc096cf53ec4497e83defdb3a94ff62",
+ "git_sha": "06c8865e36741e05ad32ef70ab3fac127486af48",
"installed_by": ["modules"]
},
"samtools/sort": {
"branch": "master",
- "git_sha": "4352dbdb09ec40db71e9b172b97a01dcf5622c26",
+ "git_sha": "06c8865e36741e05ad32ef70ab3fac127486af48",
"installed_by": ["modules"]
},
"samtools/view": {
"branch": "master",
- "git_sha": "0bd7d2333a88483aa0476acea172e9f5f6dd83bb",
+ "git_sha": "06c8865e36741e05ad32ef70ab3fac127486af48",
"installed_by": ["modules"]
},
"star/align": {
"branch": "master",
- "git_sha": "a21faa6a3481af92a343a10926f59c189a2c16c9",
+ "git_sha": "06c8865e36741e05ad32ef70ab3fac127486af48",
"installed_by": ["modules"]
},
"star/genomegenerate": {
"branch": "master",
- "git_sha": "a21faa6a3481af92a343a10926f59c189a2c16c9",
+ "git_sha": "06c8865e36741e05ad32ef70ab3fac127486af48",
"installed_by": ["modules"]
},
"stringtie/merge": {
"branch": "master",
- "git_sha": "5756b12b1fab0c07f05b9ad2d5d5c262b1a2c1ef",
+ "git_sha": "06c8865e36741e05ad32ef70ab3fac127486af48",
"installed_by": ["modules"]
},
"stringtie/stringtie": {
"branch": "master",
- "git_sha": "b1b959609bda44341120aed1766329909f54b8d0",
+ "git_sha": "06c8865e36741e05ad32ef70ab3fac127486af48",
"installed_by": ["modules"]
},
"ucsc/gtftogenepred": {
"branch": "master",
- "git_sha": "acb0880789a6ebc2168d3b2d3d42b5bce6a62431",
+ "git_sha": "06c8865e36741e05ad32ef70ab3fac127486af48",
"installed_by": ["modules"]
}
}
diff --git a/modules/nf-core/agat/convertspgff2tsv/environment.yml b/modules/nf-core/agat/convertspgff2tsv/environment.yml
index 690f50ae5..0410ee765 100644
--- a/modules/nf-core/agat/convertspgff2tsv/environment.yml
+++ b/modules/nf-core/agat/convertspgff2tsv/environment.yml
@@ -1,7 +1,5 @@
-name: agat_convertspgff2tsv
channels:
- conda-forge
- bioconda
- - defaults
dependencies:
- bioconda::agat=1.4.0
diff --git a/modules/nf-core/agat/convertspgff2tsv/tests/main.nf.test b/modules/nf-core/agat/convertspgff2tsv/tests/main.nf.test
index 4898a4a9b..6a2e8942e 100644
--- a/modules/nf-core/agat/convertspgff2tsv/tests/main.nf.test
+++ b/modules/nf-core/agat/convertspgff2tsv/tests/main.nf.test
@@ -16,7 +16,7 @@ nextflow_process {
"""
input[0] = [
[ id: 'test' ], // meta map
- file(params.test_data['sarscov2']['genome']['genome_gff3'], checkIfExists: true)
+ file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.gff3', checkIfExists: true)
]
"""
}
@@ -40,7 +40,7 @@ nextflow_process {
"""
input[0] = [
[ id: 'test' ], // meta map
- file(params.test_data['sarscov2']['genome']['genome_gff3'], checkIfExists: true)
+ file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.gff3', checkIfExists: true)
]
"""
}
diff --git a/modules/nf-core/arriba/arriba/environment.yml b/modules/nf-core/arriba/arriba/environment.yml
index 8494c8c03..d0883a0d2 100644
--- a/modules/nf-core/arriba/arriba/environment.yml
+++ b/modules/nf-core/arriba/arriba/environment.yml
@@ -1,7 +1,5 @@
-name: arriba_arriba
channels:
- conda-forge
- bioconda
- - defaults
dependencies:
- bioconda::arriba=2.4.0
diff --git a/modules/nf-core/arriba/download/environment.yml b/modules/nf-core/arriba/download/environment.yml
index dc7d3bf99..d0883a0d2 100644
--- a/modules/nf-core/arriba/download/environment.yml
+++ b/modules/nf-core/arriba/download/environment.yml
@@ -1,7 +1,5 @@
-name: arriba_download
channels:
- conda-forge
- bioconda
- - defaults
dependencies:
- bioconda::arriba=2.4.0
diff --git a/modules/nf-core/arriba/download/main.nf b/modules/nf-core/arriba/download/main.nf
index 7f11898bd..96a4e3362 100644
--- a/modules/nf-core/arriba/download/main.nf
+++ b/modules/nf-core/arriba/download/main.nf
@@ -7,6 +7,8 @@ process ARRIBA_DOWNLOAD {
'https://depot.galaxyproject.org/singularity/arriba:2.4.0--h0033a41_2' :
'biocontainers/arriba:2.4.0--h0033a41_2' }"
+ input:
+
output:
path "*" , emit: reference
path "versions.yml" , emit: versions
diff --git a/modules/nf-core/arriba/download/tests/main.nf.test b/modules/nf-core/arriba/download/tests/main.nf.test
new file mode 100644
index 000000000..cccc95db2
--- /dev/null
+++ b/modules/nf-core/arriba/download/tests/main.nf.test
@@ -0,0 +1,35 @@
+
+nextflow_process {
+
+ name "Test Process ARRIBA_DOWNLOAD"
+ script "../main.nf"
+ process "ARRIBA_DOWNLOAD"
+
+ tag "modules"
+ tag "modules_nfcore"
+ tag "arriba"
+ tag "arriba/download"
+
+ test("test-arriba-download") {
+
+ when {
+ process {
+ """
+
+ """
+ }
+ }
+
+ then {
+ assertAll(
+ { assert process.success },
+ { assert snapshot(
+ process.out.reference[0].collect { file(it).name }.toSorted(),
+ process.out.versions
+ ).match()
+ }
+ )
+ }
+ }
+
+}
diff --git a/modules/nf-core/arriba/download/tests/main.nf.test.snap b/modules/nf-core/arriba/download/tests/main.nf.test.snap
new file mode 100644
index 000000000..eda3f7066
--- /dev/null
+++ b/modules/nf-core/arriba/download/tests/main.nf.test.snap
@@ -0,0 +1,35 @@
+{
+ "test-arriba-download": {
+ "content": [
+ [
+ "CREDITS",
+ "RefSeq_viral_genomes_v2.4.0.fa.gz",
+ "blacklist_hg19_hs37d5_GRCh37_v2.4.0.tsv.gz",
+ "blacklist_hg38_GRCh38_v2.4.0.tsv.gz",
+ "blacklist_mm10_GRCm38_v2.4.0.tsv.gz",
+ "blacklist_mm39_GRCm39_v2.4.0.tsv.gz",
+ "cytobands_hg19_hs37d5_GRCh37_v2.4.0.tsv",
+ "cytobands_hg38_GRCh38_v2.4.0.tsv",
+ "cytobands_mm10_GRCm38_v2.4.0.tsv",
+ "cytobands_mm39_GRCm39_v2.4.0.tsv",
+ "known_fusions_hg19_hs37d5_GRCh37_v2.4.0.tsv.gz",
+ "known_fusions_hg38_GRCh38_v2.4.0.tsv.gz",
+ "known_fusions_mm10_GRCm38_v2.4.0.tsv.gz",
+ "known_fusions_mm39_GRCm39_v2.4.0.tsv.gz",
+ "protein_domains_hg19_hs37d5_GRCh37_v2.4.0.gff3",
+ "protein_domains_hg38_GRCh38_v2.4.0.gff3",
+ "protein_domains_mm10_GRCm38_v2.4.0.gff3",
+ "protein_domains_mm39_GRCm39_v2.4.0.gff3",
+ "versions.yml"
+ ],
+ [
+ "versions.yml:md5,98c69df5eaea5caf0b4af7b8d7af4893"
+ ]
+ ],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "24.04.4"
+ },
+ "timestamp": "2024-08-22T17:00:38.086459"
+ }
+}
\ No newline at end of file
diff --git a/modules/nf-core/bedops/convert2bed/environment.yml b/modules/nf-core/bedops/convert2bed/environment.yml
index 049b29e9b..3c13066f7 100644
--- a/modules/nf-core/bedops/convert2bed/environment.yml
+++ b/modules/nf-core/bedops/convert2bed/environment.yml
@@ -1,7 +1,5 @@
-name: "bedops_convert2bed"
channels:
- conda-forge
- bioconda
- - defaults
dependencies:
- "bioconda::bedops=2.4.41"
diff --git a/modules/nf-core/bedops/convert2bed/tests/main.nf.test b/modules/nf-core/bedops/convert2bed/tests/main.nf.test
index 183f8de6c..3f2b193a6 100644
--- a/modules/nf-core/bedops/convert2bed/tests/main.nf.test
+++ b/modules/nf-core/bedops/convert2bed/tests/main.nf.test
@@ -17,7 +17,7 @@ nextflow_process {
"""
input[0] = [
[ id:'test' ], // meta map
- file(params.test_data['sarscov2']['genome']['genome_gtf'], checkIfExists: true)
+ file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.gtf', checkIfExists: true)
]
"""
}
@@ -41,7 +41,7 @@ nextflow_process {
"""
input[0] = [
[ id:'test' ], // meta map
- file(params.test_data['sarscov2']['genome']['genome_gtf'], checkIfExists: true)
+ file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.gtf', checkIfExists: true)
]
"""
}
diff --git a/modules/nf-core/cat/cat/environment.yml b/modules/nf-core/cat/cat/environment.yml
index 17a04ef23..9b01c865a 100644
--- a/modules/nf-core/cat/cat/environment.yml
+++ b/modules/nf-core/cat/cat/environment.yml
@@ -1,7 +1,5 @@
-name: cat_cat
channels:
- conda-forge
- bioconda
- - defaults
dependencies:
- conda-forge::pigz=2.3.4
diff --git a/modules/nf-core/cat/cat/main.nf b/modules/nf-core/cat/cat/main.nf
index adbdbd7ba..2862c64cd 100644
--- a/modules/nf-core/cat/cat/main.nf
+++ b/modules/nf-core/cat/cat/main.nf
@@ -76,4 +76,3 @@ def getFileSuffix(filename) {
def match = filename =~ /^.*?((\.\w{1,5})?(\.\w{1,5}\.gz$))/
return match ? match[0][1] : filename.substring(filename.lastIndexOf('.'))
}
-
diff --git a/modules/nf-core/cat/cat/tests/main.nf.test b/modules/nf-core/cat/cat/tests/main.nf.test
index fcee2d19f..9cb161788 100644
--- a/modules/nf-core/cat/cat/tests/main.nf.test
+++ b/modules/nf-core/cat/cat/tests/main.nf.test
@@ -29,7 +29,8 @@ nextflow_process {
then {
assertAll(
{ assert !process.success },
- { assert process.stdout.toString().contains("The name of the input file can't be the same as for the output prefix") }
+ { assert process.stdout.toString().contains("The name of the input file can't be the same as for the output prefix") },
+ { assert snapshot(process.out.versions).match() }
)
}
}
@@ -83,8 +84,12 @@ nextflow_process {
def lines = path(process.out.file_out.get(0).get(1)).linesGzip
assertAll(
{ assert process.success },
- { assert snapshot(lines[0..5]).match("test_cat_zipped_zipped_lines") },
- { assert snapshot(lines.size()).match("test_cat_zipped_zipped_size")}
+ { assert snapshot(
+ lines[0..5],
+ lines.size(),
+ process.out.versions
+ ).match()
+ }
)
}
}
@@ -142,8 +147,12 @@ nextflow_process {
def lines = path(process.out.file_out.get(0).get(1)).linesGzip
assertAll(
{ assert process.success },
- { assert snapshot(lines[0..5]).match("test_cat_unzipped_zipped_lines") },
- { assert snapshot(lines.size()).match("test_cat_unzipped_zipped_size")}
+ { assert snapshot(
+ lines[0..5],
+ lines.size(),
+ process.out.versions
+ ).match()
+ }
)
}
}
@@ -170,8 +179,12 @@ nextflow_process {
def lines = path(process.out.file_out.get(0).get(1)).linesGzip
assertAll(
{ assert process.success },
- { assert snapshot(lines[0..5]).match("test_cat_one_file_unzipped_zipped_lines") },
- { assert snapshot(lines.size()).match("test_cat_one_file_unzipped_zipped_size")}
+ { assert snapshot(
+ lines[0..5],
+ lines.size(),
+ process.out.versions
+ ).match()
+ }
)
}
}
diff --git a/modules/nf-core/cat/cat/tests/main.nf.test.snap b/modules/nf-core/cat/cat/tests/main.nf.test.snap
index 423571ba2..b7623ee65 100644
--- a/modules/nf-core/cat/cat/tests/main.nf.test.snap
+++ b/modules/nf-core/cat/cat/tests/main.nf.test.snap
@@ -1,10 +1,4 @@
{
- "test_cat_unzipped_zipped_size": {
- "content": [
- 375
- ],
- "timestamp": "2023-10-16T14:33:08.049445686"
- },
"test_cat_unzipped_unzipped": {
"content": [
{
@@ -34,6 +28,10 @@
]
}
],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "24.04.3"
+ },
"timestamp": "2023-10-16T14:32:18.500464399"
},
"test_cat_zipped_unzipped": {
@@ -65,9 +63,13 @@
]
}
],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "24.04.3"
+ },
"timestamp": "2023-10-16T14:32:49.642741302"
},
- "test_cat_zipped_zipped_lines": {
+ "test_cat_zipped_zipped": {
"content": [
[
"MT192765.1\tGenbank\ttranscript\t259\t29667\t.\t+\t.\tID=unknown_transcript_1;geneID=orf1ab;gene_name=orf1ab",
@@ -76,11 +78,31 @@
"MT192765.1\tGenbank\tCDS\t13461\t21548\t.\t+\t0\tParent=unknown_transcript_1;exception=\"ribosomal slippage\";gbkey=CDS;gene=orf1ab;note=\"pp1ab;translated=by -1 ribosomal frameshift\";product=\"orf1ab polyprotein\";protein_id=QIK50426.1",
"MT192765.1\tGenbank\tCDS\t21556\t25377\t.\t+\t0\tParent=unknown_transcript_1;gbkey=CDS;gene=S;note=\"structural protein\";product=\"surface glycoprotein\";protein_id=QIK50427.1",
"MT192765.1\tGenbank\tgene\t21556\t25377\t.\t+\t.\tParent=unknown_transcript_1"
+ ],
+ 78,
+ [
+ "versions.yml:md5,115ed6177ebcff24eb99d503fa5ef894"
+ ]
+ ],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "24.04.3"
+ },
+ "timestamp": "2024-07-22T11:51:46.802978"
+ },
+ "test_cat_name_conflict": {
+ "content": [
+ [
+
]
],
- "timestamp": "2023-10-16T14:32:33.629048645"
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "24.04.3"
+ },
+ "timestamp": "2024-07-22T11:51:29.45394"
},
- "test_cat_unzipped_zipped_lines": {
+ "test_cat_one_file_unzipped_zipped": {
"content": [
[
">MT192765.1 Severe acute respiratory syndrome coronavirus 2 isolate SARS-CoV-2/human/USA/PC00101P/2020, complete genome",
@@ -89,11 +111,19 @@
"TAACTCGTCTATCTTCTGCAGGCTGCTTACGGTTTCGTCCGTGTTGCAGCCGATCATCAGCACATCTAGGTTTTGTCCGG",
"GTGTGACCGAAAGGTAAGATGGAGAGCCTTGTCCCTGGTTTCAACGAGAAAACACACGTCCAACTCAGTTTGCCTGTTTT",
"ACAGGTTCGCGACGTGCTCGTACGTGGCTTTGGAGACTCCGTGGAGGAGGTCTTATCAGAGGCACGTCAACATCTTAAAG"
+ ],
+ 374,
+ [
+ "versions.yml:md5,115ed6177ebcff24eb99d503fa5ef894"
]
],
- "timestamp": "2023-10-16T14:33:08.038830506"
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "24.04.3"
+ },
+ "timestamp": "2024-07-22T11:52:02.774016"
},
- "test_cat_one_file_unzipped_zipped_lines": {
+ "test_cat_unzipped_zipped": {
"content": [
[
">MT192765.1 Severe acute respiratory syndrome coronavirus 2 isolate SARS-CoV-2/human/USA/PC00101P/2020, complete genome",
@@ -102,20 +132,16 @@
"TAACTCGTCTATCTTCTGCAGGCTGCTTACGGTTTCGTCCGTGTTGCAGCCGATCATCAGCACATCTAGGTTTTGTCCGG",
"GTGTGACCGAAAGGTAAGATGGAGAGCCTTGTCCCTGGTTTCAACGAGAAAACACACGTCCAACTCAGTTTGCCTGTTTT",
"ACAGGTTCGCGACGTGCTCGTACGTGGCTTTGGAGACTCCGTGGAGGAGGTCTTATCAGAGGCACGTCAACATCTTAAAG"
+ ],
+ 375,
+ [
+ "versions.yml:md5,115ed6177ebcff24eb99d503fa5ef894"
]
],
- "timestamp": "2023-10-16T14:33:21.39642399"
- },
- "test_cat_zipped_zipped_size": {
- "content": [
- 78
- ],
- "timestamp": "2023-10-16T14:32:33.641869244"
- },
- "test_cat_one_file_unzipped_zipped_size": {
- "content": [
- 374
- ],
- "timestamp": "2023-10-16T14:33:21.4094373"
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "24.04.3"
+ },
+ "timestamp": "2024-07-22T11:51:57.581523"
}
}
\ No newline at end of file
diff --git a/modules/nf-core/cat/fastq/environment.yml b/modules/nf-core/cat/fastq/environment.yml
index 8c69b121f..c7eb9bd1c 100644
--- a/modules/nf-core/cat/fastq/environment.yml
+++ b/modules/nf-core/cat/fastq/environment.yml
@@ -1,7 +1,5 @@
-name: cat_fastq
channels:
- conda-forge
- bioconda
- - defaults
dependencies:
- conda-forge::coreutils=8.30
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 a71dcb8df..f88a78b6c 100644
--- a/modules/nf-core/cat/fastq/tests/main.nf.test
+++ b/modules/nf-core/cat/fastq/tests/main.nf.test
@@ -13,9 +13,6 @@ nextflow_process {
test("test_cat_fastq_single_end") {
when {
- params {
- outdir = "$outputDir"
- }
process {
"""
input[0] = Channel.of([
@@ -38,9 +35,6 @@ nextflow_process {
test("test_cat_fastq_paired_end") {
when {
- params {
- outdir = "$outputDir"
- }
process {
"""
input[0] = Channel.of([
@@ -65,9 +59,6 @@ nextflow_process {
test("test_cat_fastq_single_end_same_name") {
when {
- params {
- outdir = "$outputDir"
- }
process {
"""
input[0] = Channel.of([
@@ -90,9 +81,6 @@ nextflow_process {
test("test_cat_fastq_paired_end_same_name") {
when {
- params {
- outdir = "$outputDir"
- }
process {
"""
input[0] = Channel.of([
@@ -117,9 +105,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/fastp/environment.yml b/modules/nf-core/fastp/environment.yml
index 70389e664..26d4aca5d 100644
--- a/modules/nf-core/fastp/environment.yml
+++ b/modules/nf-core/fastp/environment.yml
@@ -1,7 +1,5 @@
-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 4fc19b744..e1b9f5656 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,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 ? "${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 = (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 $touch_reads
+ $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/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 6f1f48978..30dbb8aab 100644
--- a/modules/nf-core/fastp/tests/main.nf.test
+++ b/modules/nf-core/fastp/tests/main.nf.test
@@ -10,221 +10,290 @@ 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: | 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 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("test_fastp_single_end-stub") {
-
- options '-stub'
+ test("test_fastp_paired_end") {
when {
- params {
- outdir = "$outputDir"
- }
+
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] = adapter_fasta
- input[2] = save_trimmed_fail
- input[3] = save_merged
+ input[1] = []
+ input[2] = false
+ input[3] = false
+ input[4] = false
"""
}
}
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_fail,
+ process.out.reads_merged,
+ process.out.versions).match() }
+ )
+ }
+ }
+ test("fastp test_fastp_interleaved") {
+
+ 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) ]
+ ])
+ input[1] = []
+ input[2] = false
+ input[3] = false
+ input[4] = false
+ """
+ }
+ }
+
+ 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") }
+ { 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() }
)
}
}
- test("test_fastp_paired_end") {
+ test("test_fastp_single_end_trim_fail") {
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] = false
+ input[3] = true
+ input[4] = false
+ """
}
+ }
+
+ 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_fail,
+ process.out.reads_merged,
+ process.out.versions).match() }
+ )
+ }
+ }
+
+ test("test_fastp_paired_end_trim_fail") {
+
+ config './nextflow.save_failed.config'
+ when {
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] = []
+ input[2] = false
+ input[3] = true
+ input[4] = false
+ """
+ }
+ }
+ 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() }
+ )
+ }
+ }
+
+ test("test_fastp_paired_end_merged") {
+
+ 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] = 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 = [ "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 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_paired_end-stub") {
-
- options '-stub'
+ test("test_fastp_paired_end_merged_adapterlist") {
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] = 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 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.reads_merged,
+ process.out.versions).match() }
+ )
+ }
+ }
+
+ test("test_fastp_single_end_qc_only") {
+
+ when {
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] = []
+ input[2] = true
+ input[3] = false
+ input[4] = false
+ """
+ }
+ }
+
+ 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.reads_fail,
+ process.out.reads_merged,
+ process.out.reads_merged,
+ process.out.versions).match() }
+ )
+ }
+ }
+ test("test_fastp_paired_end_qc_only") {
+
+ 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] = adapter_fasta
- input[2] = save_trimmed_fail
- input[3] = save_merged
+ input[1] = []
+ input[2] = true
+ input[3] = false
+ input[4] = false
"""
}
}
@@ -232,114 +301,99 @@ 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 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.reads_merged,
+ process.out.versions).match() }
)
}
}
- test("fastp test_fastp_interleaved") {
+ test("test_fastp_single_end - stub") {
+
+ options "-stub"
- config './nextflow.interleaved.config'
when {
- params {
- outdir = "$outputDir"
+
+ 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] = false
+ input[3] = false
+ input[4] = false
+ """
}
+ }
+
+ then {
+ assertAll(
+ { assert process.success },
+ { assert snapshot(process.out).match() }
+ )
+ }
+ }
+
+ 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: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] = 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).match() }
)
}
}
- test("fastp test_fastp_interleaved-stub") {
+ test("fastp - stub test_fastp_interleaved") {
- options '-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
"""
}
}
@@ -347,277 +401,112 @@ 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() }
)
}
}
- test("test_fastp_single_end_trim_fail") {
+ test("test_fastp_single_end_trim_fail - stub") {
+
+ options "-stub"
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).match() }
)
}
}
- test("test_fastp_paired_end_trim_fail") {
+ test("test_fastp_paired_end_trim_fail - stub") {
+
+ options "-stub"
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).match() }
)
}
}
- test("test_fastp_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
+ 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).match() }
)
}
}
- test("test_fastp_paired_end_merged-stub") {
+ test("test_fastp_paired_end_merged_adapterlist - stub") {
- options '-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
+ 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
"""
}
}
@@ -625,101 +514,63 @@ 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") {
+ test("test_fastp_single_end_qc_only - stub") {
+
+ options "-stub"
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: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 - 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) ]
])
- 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..54be7e45f 100644
--- a/modules/nf-core/fastp/tests/main.nf.test.snap
+++ b/modules/nf-core/fastp/tests/main.nf.test.snap
@@ -1,55 +1,178 @@
{
- "fastp test_fastp_interleaved_json": {
+ "test_fastp_single_end_qc_only - stub": {
"content": [
- [
- [
- {
- "id": "test",
- "single_end": true
- },
- "test.fastp.json:md5,b24e0624df5cc0b11cd5ba21b726fb22"
+ {
+ "0": [
+
+ ],
+ "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": [
+
+ ],
+ "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-07-05T14:31:10.841098"
},
- "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}"
+ {
+ "id": "test",
+ "single_end": false
+ },
+ "test.fastp.json:md5,1e0f8e27e71728e2b63fc64086be95cd"
+ ]
+ ],
+ [
+ [
+ {
+ "id": "test",
+ "single_end": false
+ },
+ [
+ "test_1.fastp.fastq.gz:md5,67b2bbae47f073e05a97a9c2edce23c7",
+ "test_2.fastp.fastq.gz:md5,25cbdca08e2083dbd4f0502de6b62f39"
+ ]
+ ]
+ ],
+ [
+
+ ],
+ [
+
+ ],
+ [
+ "versions.yml:md5,48ffc994212fb1fc9f83a74fa69c9f02"
]
],
"meta": {
"nf-test": "0.8.4",
- "nextflow": "23.10.1"
+ "nextflow": "24.04.2"
},
- "timestamp": "2024-01-17T18:10:13.467574"
+ "timestamp": "2024-07-05T13:43:28.665779"
},
- "versions_interleaved": {
+ "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"
+ ]
+ ]
+ ],
+ [
+
+ ],
+ [
+ [
+ {
+ "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"
+ "nextflow": "24.04.2"
},
- "timestamp": "2024-02-01T11:56:24.615634793"
+ "timestamp": "2024-07-05T13:44:18.210375"
},
- "test_fastp_single_end_json": {
+ "test_fastp_single_end_qc_only": {
"content": [
[
[
@@ -57,274 +180,1152 @@
"id": "test",
"single_end": true
},
- "test.fastp.json:md5,c852d7a6dba5819e4ac8d9673bedcacc"
+ "test.fastp.json:md5,5cc5f01e449309e0e689ed6f51a2294a"
]
- ]
- ],
- "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-07-05T13:44:27.380974"
},
- "test_fastp_paired_end_match": {
+ "test_fastp_paired_end_trim_fail": {
"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": [
+ {
+ "id": "test",
+ "single_end": false
+ },
+ [
+ "test_1.fastp.fastq.gz:md5,6ff32a64c5188b9a9192be1398c262c7",
+ "test_2.fastp.fastq.gz:md5,db0cb7c9977e94ac2b4b446ebd017a8a"
+ ]
+ ]
+ ],
[
- "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.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",
- "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.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:55:27.354051299"
+ "timestamp": "2024-07-05T13:43:58.749589"
},
- "versions_interleaved-stub": {
+ "fastp - stub test_fastp_interleaved": {
"content": [
- [
- "versions.yml:md5,48ffc994212fb1fc9f83a74fa69c9f02"
- ]
+ {
+ "0": [
+ [
+ {
+ "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"
+ ]
+ }
],
"meta": {
"nf-test": "0.8.4",
- "nextflow": "23.10.1"
+ "nextflow": "24.04.2"
},
- "timestamp": "2024-02-01T11:56:46.535528418"
+ "timestamp": "2024-07-05T13:50:00.270029"
},
- "versions_single_end_trim_fail": {
+ "test_fastp_single_end - stub": {
"content": [
- [
- "versions.yml:md5,48ffc994212fb1fc9f83a74fa69c9f02"
- ]
+ {
+ "0": [
+ [
+ {
+ "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"
+ ]
+ }
],
"meta": {
"nf-test": "0.8.4",
- "nextflow": "23.10.1"
+ "nextflow": "24.04.2"
},
- "timestamp": "2024-02-01T11:59:03.724591407"
+ "timestamp": "2024-07-05T13:49:42.502789"
},
- "test_fastp_paired_end-for_stub_match": {
+ "test_fastp_paired_end_merged_adapterlist - stub": {
"content": [
- [
- [
- "test_1.fastp.fastq.gz",
- "test_2.fastp.fastq.gz"
+ {
+ "0": [
+ [
+ {
+ "id": "test",
+ "single_end": false
+ },
+ [
+ "test_1.fastp.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940",
+ "test_2.fastp.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940"
+ ]
+ ]
],
- "test.fastp.html",
- "test.fastp.json",
- "test.fastp.log",
- "{id=test, single_end=false}"
- ]
+ "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:07:15.398827"
+ "timestamp": "2024-07-05T13:54:53.458252"
},
- "versions_paired_end-stub": {
+ "test_fastp_paired_end_merged - 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": [
+ [
+ {
+ "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-02-01T11:56:06.50017282"
+ "timestamp": "2024-07-05T13:50:27.689379"
},
- "versions_single_end": {
+ "test_fastp_paired_end_merged": {
"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": [
+ [
+ {
+ "id": "test",
+ "single_end": false
+ },
+ "test.fastp.json:md5,b712fd68ed0322f4bec49ff2a5237fcc"
+ ]
+ ],
+ [
+ [
+ {
+ "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"
+ ]
+ ],
[
"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-07-05T13:44:08.68476"
},
- "test_fastp_interleaved-for_stub_match": {
+ "test_fastp_paired_end - 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": [
+
+ ],
+ "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-01-17T18:08:06.127974"
+ "timestamp": "2024-07-05T13:49:51.679221"
},
- "versions_paired_end_trim_fail": {
+ "test_fastp_single_end": {
"content": [
+ [
+ [
+ {
+ "id": "test",
+ "single_end": true
+ },
+ "test.fastp.json:md5,c852d7a6dba5819e4ac8d9673bedcacc"
+ ]
+ ],
+ [
+ [
+ {
+ "id": "test",
+ "single_end": true
+ },
+ "test.fastp.fastq.gz:md5,67b2bbae47f073e05a97a9c2edce23c7"
+ ]
+ ],
+ [
+
+ ],
+ [
+
+ ],
[
"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-07-05T13:43:18.834322"
},
- "test_fastp_single_end-for_stub_match": {
+ "test_fastp_single_end_trim_fail - 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.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": [
+ [
+ {
+ "id": "test",
+ "single_end": true
+ },
+ "test.fail.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940"
+ ]
+ ],
+ "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": [
+ [
+ {
+ "id": "test",
+ "single_end": true
+ },
+ "test.fail.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940"
+ ]
+ ],
+ "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:06:00.244202"
+ "timestamp": "2024-07-05T14:05:36.898142"
},
- "test_fastp_single_end-_match": {
+ "test_fastp_paired_end_trim_fail - 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": [
+ [
+ {
+ "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": [
+
+ ],
+ "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": [
+ [
+ {
+ "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": [
+
+ ],
+ "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-07-05T14:05:49.212847"
},
- "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-07-05T13:43:38.910832"
},
- "versions_paired_end_merged": {
+ "test_fastp_single_end_trim_fail": {
"content": [
+ [
+ [
+ {
+ "id": "test",
+ "single_end": true
+ },
+ "test.fastp.json:md5,9a7ee180f000e8d00c7fb67f06293eb5"
+ ]
+ ],
+ [
+ [
+ {
+ "id": "test",
+ "single_end": true
+ },
+ "test.fastp.fastq.gz:md5,67b2bbae47f073e05a97a9c2edce23c7"
+ ]
+ ],
+ [
+ [
+ {
+ "id": "test",
+ "single_end": true
+ },
+ "test.fail.fastq.gz:md5,3e4aaadb66a5b8fc9b881bf39c227abd"
+ ]
+ ],
+ [
+
+ ],
[
"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-07-05T13:43:48.22378"
},
- "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-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-01-17T18:08:41.942317"
+ "timestamp": "2024-07-05T14:31:27.096468"
}
}
\ No newline at end of file
diff --git a/modules/nf-core/fastqc/environment.yml b/modules/nf-core/fastqc/environment.yml
index 1787b38a9..691d4c763 100644
--- a/modules/nf-core/fastqc/environment.yml
+++ b/modules/nf-core/fastqc/environment.yml
@@ -1,7 +1,5 @@
-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 d79f1c862..d8989f481 100644
--- a/modules/nf-core/fastqc/main.nf
+++ b/modules/nf-core/fastqc/main.nf
@@ -26,7 +26,10 @@ process FASTQC {
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')
+ // The total amount of allocated RAM by FastQC is equal to the number of threads defined (--threads) time the amount of RAM defined (--memory)
+ // https://github.com/s-andrews/FastQC/blob/1faeea0412093224d7f6a07f777fad60a5650795/fastqc#L211-L222
+ // Dividing the task.memory by task.cpu allows to stick to requested amount of RAM in the label
+ def memory_in_mb = MemoryUnit.of("${task.memory}").toUnit('MB') / task.cpus
// FastQC memory value allowed range (100 - 10000)
def fastqc_memory = memory_in_mb > 10000 ? 10000 : (memory_in_mb < 100 ? 100 : memory_in_mb)
diff --git a/modules/nf-core/fastqc/tests/main.nf.test b/modules/nf-core/fastqc/tests/main.nf.test
index 70edae4d9..e9d79a074 100644
--- a/modules/nf-core/fastqc/tests/main.nf.test
+++ b/modules/nf-core/fastqc/tests/main.nf.test
@@ -23,17 +23,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:
- // https://github.com/nf-core/modules/pull/3903#issuecomment-1743620039
-
- { assert process.out.html[0][1] ==~ ".*/test_fastqc.html" },
- { assert process.out.zip[0][1] ==~ ".*/test_fastqc.zip" },
- { assert path(process.out.html[0][1]).text.contains("| File type | Conventional base calls | ") },
-
- { 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:
+ // https://github.com/nf-core/modules/pull/3903#issuecomment-1743620039
+ { assert process.out.html[0][1] ==~ ".*/test_fastqc.html" },
+ { assert process.out.zip[0][1] ==~ ".*/test_fastqc.zip" },
+ { assert path(process.out.html[0][1]).text.contains("| File type | Conventional base calls | ") },
+ { assert snapshot(process.out.versions).match() }
)
}
}
@@ -54,16 +51,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("| File type | Conventional base calls | ") },
- { assert path(process.out.html[0][1][1]).text.contains("| File type | Conventional base calls | ") },
-
- { 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("| File type | Conventional base calls | ") },
+ { assert path(process.out.html[0][1][1]).text.contains("| File type | Conventional base calls | ") },
+ { assert snapshot(process.out.versions).match() }
)
}
}
@@ -83,13 +78,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("| File type | Conventional base calls | ") },
-
- { 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("| File type | Conventional base calls | ") },
+ { assert snapshot(process.out.versions).match() }
)
}
}
@@ -109,13 +102,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("| File type | Conventional base calls | ") },
-
- { 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("| File type | Conventional base calls | ") },
+ { assert snapshot(process.out.versions).match() }
)
}
}
@@ -138,22 +129,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("| File type | Conventional base calls | ") },
- { assert path(process.out.html[0][1][1]).text.contains("| File type | Conventional base calls | ") },
- { assert path(process.out.html[0][1][2]).text.contains("| File type | Conventional base calls | ") },
- { assert path(process.out.html[0][1][3]).text.contains("| File type | Conventional base calls | ") },
-
- { 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("| File type | Conventional base calls | ") },
+ { assert path(process.out.html[0][1][1]).text.contains("| File type | Conventional base calls | ") },
+ { assert path(process.out.html[0][1][2]).text.contains("| File type | Conventional base calls | ") },
+ { assert path(process.out.html[0][1][3]).text.contains("| File type | Conventional base calls | ") },
+ { assert snapshot(process.out.versions).match() }
)
}
}
@@ -173,21 +162,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("| File type | Conventional base calls | ") },
-
- { 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("| File type | Conventional base calls | ") },
+ { assert snapshot(process.out.versions).match() }
)
}
}
test("sarscov2 single-end [fastq] - stub") {
- options "-stub"
-
+ options "-stub"
when {
process {
"""
@@ -201,12 +187,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/gatk4/bedtointervallist/environment.yml b/modules/nf-core/gatk4/bedtointervallist/environment.yml
index d6fbe2e77..55993f440 100644
--- a/modules/nf-core/gatk4/bedtointervallist/environment.yml
+++ b/modules/nf-core/gatk4/bedtointervallist/environment.yml
@@ -1,7 +1,5 @@
-name: gatk4_bedtointervallist
channels:
- conda-forge
- bioconda
- - defaults
dependencies:
- bioconda::gatk4=4.5.0.0
diff --git a/modules/nf-core/gatk4/createsequencedictionary/environment.yml b/modules/nf-core/gatk4/createsequencedictionary/environment.yml
index 78822ad03..55993f440 100644
--- a/modules/nf-core/gatk4/createsequencedictionary/environment.yml
+++ b/modules/nf-core/gatk4/createsequencedictionary/environment.yml
@@ -1,7 +1,5 @@
-name: gatk4_createsequencedictionary
channels:
- conda-forge
- bioconda
- - defaults
dependencies:
- bioconda::gatk4=4.5.0.0
diff --git a/modules/nf-core/gatk4/markduplicates/environment.yml b/modules/nf-core/gatk4/markduplicates/environment.yml
index 7362eea6f..9fe34eb36 100644
--- a/modules/nf-core/gatk4/markduplicates/environment.yml
+++ b/modules/nf-core/gatk4/markduplicates/environment.yml
@@ -1,8 +1,6 @@
-name: gatk4_markduplicates
channels:
- conda-forge
- bioconda
- - defaults
dependencies:
- bioconda::gatk4=4.5.0.0
- bioconda::samtools=1.19.2
diff --git a/modules/nf-core/gffread/environment.yml b/modules/nf-core/gffread/environment.yml
index c6df58ad0..ee2398416 100644
--- a/modules/nf-core/gffread/environment.yml
+++ b/modules/nf-core/gffread/environment.yml
@@ -1,7 +1,5 @@
-name: gffread
channels:
- conda-forge
- bioconda
- - defaults
dependencies:
- bioconda::gffread=0.12.7
diff --git a/modules/nf-core/multiqc/environment.yml b/modules/nf-core/multiqc/environment.yml
index ca39fb67e..f1cd99b07 100644
--- a/modules/nf-core/multiqc/environment.yml
+++ b/modules/nf-core/multiqc/environment.yml
@@ -1,7 +1,5 @@
-name: multiqc
channels:
- conda-forge
- bioconda
- - defaults
dependencies:
- - bioconda::multiqc=1.21
+ - bioconda::multiqc=1.24.1
diff --git a/modules/nf-core/multiqc/main.nf b/modules/nf-core/multiqc/main.nf
index 47ac352f9..ceaec139e 100644
--- a/modules/nf-core/multiqc/main.nf
+++ b/modules/nf-core/multiqc/main.nf
@@ -3,14 +3,16 @@ process MULTIQC {
conda "${moduleDir}/environment.yml"
container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ?
- 'https://depot.galaxyproject.org/singularity/multiqc:1.21--pyhdfd78af_0' :
- 'biocontainers/multiqc:1.21--pyhdfd78af_0' }"
+ 'https://depot.galaxyproject.org/singularity/multiqc:1.24.1--pyhdfd78af_0' :
+ 'biocontainers/multiqc:1.24.1--pyhdfd78af_0' }"
input:
path multiqc_files, stageAs: "?/*"
path(multiqc_config)
path(extra_multiqc_config)
path(multiqc_logo)
+ path(replace_names)
+ path(sample_names)
output:
path "*multiqc_report.html", emit: report
@@ -23,16 +25,22 @@ process MULTIQC {
script:
def args = task.ext.args ?: ''
+ def prefix = task.ext.prefix ? "--filename ${task.ext.prefix}.html" : ''
def config = multiqc_config ? "--config $multiqc_config" : ''
def extra_config = extra_multiqc_config ? "--config $extra_multiqc_config" : ''
- def logo = multiqc_logo ? /--cl-config 'custom_logo: "${multiqc_logo}"'/ : ''
+ def logo = multiqc_logo ? "--cl-config 'custom_logo: \"${multiqc_logo}\"'" : ''
+ def replace = replace_names ? "--replace-names ${replace_names}" : ''
+ def samples = sample_names ? "--sample-names ${sample_names}" : ''
"""
multiqc \\
--force \\
$args \\
$config \\
+ $prefix \\
$extra_config \\
$logo \\
+ $replace \\
+ $samples \\
.
cat <<-END_VERSIONS > versions.yml
diff --git a/modules/nf-core/multiqc/meta.yml b/modules/nf-core/multiqc/meta.yml
index 45a9bc35e..382c08cbc 100644
--- a/modules/nf-core/multiqc/meta.yml
+++ b/modules/nf-core/multiqc/meta.yml
@@ -29,6 +29,19 @@ 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}"
+ - 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 f1c4242ef..33316a7dd 100644
--- a/modules/nf-core/multiqc/tests/main.nf.test
+++ b/modules/nf-core/multiqc/tests/main.nf.test
@@ -8,6 +8,8 @@ nextflow_process {
tag "modules_nfcore"
tag "multiqc"
+ config "./nextflow.config"
+
test("sarscov2 single-end [fastqc]") {
when {
@@ -17,6 +19,8 @@ nextflow_process {
input[1] = []
input[2] = []
input[3] = []
+ input[4] = []
+ input[5] = []
"""
}
}
@@ -41,6 +45,8 @@ nextflow_process {
input[1] = Channel.of(file("https://github.com/nf-core/tools/raw/dev/nf_core/pipeline-template/assets/multiqc_config.yml", checkIfExists: true))
input[2] = []
input[3] = []
+ input[4] = []
+ input[5] = []
"""
}
}
@@ -66,6 +72,8 @@ nextflow_process {
input[1] = []
input[2] = []
input[3] = []
+ input[4] = []
+ input[5] = []
"""
}
}
diff --git a/modules/nf-core/multiqc/tests/main.nf.test.snap b/modules/nf-core/multiqc/tests/main.nf.test.snap
index bfebd8029..83fa080c8 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,6eb13f3b11bbcbfc98ad3166420ff760"
]
],
"meta": {
"nf-test": "0.8.4",
- "nextflow": "23.10.1"
+ "nextflow": "24.04.2"
},
- "timestamp": "2024-02-29T08:48:55.657331"
+ "timestamp": "2024-07-10T12:41:34.562023"
},
"multiqc_stub": {
"content": [
@@ -17,25 +17,25 @@
"multiqc_report.html",
"multiqc_data",
"multiqc_plots",
- "versions.yml:md5,21f35ee29416b9b3073c28733efe4b7d"
+ "versions.yml:md5,6eb13f3b11bbcbfc98ad3166420ff760"
]
],
"meta": {
"nf-test": "0.8.4",
- "nextflow": "23.10.1"
+ "nextflow": "24.04.2"
},
- "timestamp": "2024-02-29T08:49:49.071937"
+ "timestamp": "2024-07-10T11:27:11.933869532"
},
"multiqc_versions_config": {
"content": [
[
- "versions.yml:md5,21f35ee29416b9b3073c28733efe4b7d"
+ "versions.yml:md5,6eb13f3b11bbcbfc98ad3166420ff760"
]
],
"meta": {
"nf-test": "0.8.4",
- "nextflow": "23.10.1"
+ "nextflow": "24.04.2"
},
- "timestamp": "2024-02-29T08:49:25.457567"
+ "timestamp": "2024-07-10T11:26:56.709849369"
}
-}
\ No newline at end of file
+}
diff --git a/modules/nf-core/multiqc/tests/nextflow.config b/modules/nf-core/multiqc/tests/nextflow.config
new file mode 100644
index 000000000..c537a6a3e
--- /dev/null
+++ b/modules/nf-core/multiqc/tests/nextflow.config
@@ -0,0 +1,5 @@
+process {
+ withName: 'MULTIQC' {
+ ext.prefix = null
+ }
+}
diff --git a/modules/nf-core/picard/collectinsertsizemetrics/environment.yml b/modules/nf-core/picard/collectinsertsizemetrics/environment.yml
index 73ba7dc6b..ff4a85edb 100644
--- a/modules/nf-core/picard/collectinsertsizemetrics/environment.yml
+++ b/modules/nf-core/picard/collectinsertsizemetrics/environment.yml
@@ -1,7 +1,5 @@
-name: picard_collectinsertsizemetrics
channels:
- conda-forge
- bioconda
- - defaults
dependencies:
- - bioconda::picard=3.1.1
+ - bioconda::picard=3.2.0
diff --git a/modules/nf-core/picard/collectinsertsizemetrics/main.nf b/modules/nf-core/picard/collectinsertsizemetrics/main.nf
index 06c4bc172..1a49a7f0a 100644
--- a/modules/nf-core/picard/collectinsertsizemetrics/main.nf
+++ b/modules/nf-core/picard/collectinsertsizemetrics/main.nf
@@ -4,8 +4,8 @@ process PICARD_COLLECTINSERTSIZEMETRICS {
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(bam)
@@ -47,6 +47,10 @@ process PICARD_COLLECTINSERTSIZEMETRICS {
stub:
def prefix = task.ext.prefix ?: "${meta.id}"
+ def avail_mem = 3072
+ if (!task.memory) {
+ log.info '[Picard CollectInsertSizeMetrics] Available memory not known - defaulting to 3GB. Specify process memory requirements to change this.'
+ }
"""
touch ${prefix}.pdf
touch ${prefix}.txt
diff --git a/modules/nf-core/picard/collectinsertsizemetrics/tests/main.nf.test b/modules/nf-core/picard/collectinsertsizemetrics/tests/main.nf.test
new file mode 100644
index 000000000..4cf7a3323
--- /dev/null
+++ b/modules/nf-core/picard/collectinsertsizemetrics/tests/main.nf.test
@@ -0,0 +1,62 @@
+
+nextflow_process {
+
+ name "Test Process PICARD_COLLECTINSERTSIZEMETRICS"
+ script "../main.nf"
+ process "PICARD_COLLECTINSERTSIZEMETRICS"
+
+ tag "modules"
+ tag "modules_nfcore"
+ tag "picard"
+ tag "picard/collectinsertsizemetrics"
+
+ test("test-picard-collectinsertsizemetrics") {
+
+ when {
+ process {
+ """
+ input[0] = [
+ [ id:'test', single_end:false ], // meta map
+ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.bam', checkIfExists: true)
+ ]
+
+ """
+ }
+ }
+
+ then {
+ assertAll(
+ { assert process.success },
+ { assert snapshot(
+ file(process.out.metrics[0][1]).readLines()[5..8],
+ file(process.out.histogram[0][1]).name,
+ process.out.versions
+ ).match()
+ }
+ )
+ }
+ }
+
+ test("test-picard-collectinsertsizemetrics-stub") {
+ options '-stub'
+ when {
+ process {
+ """
+ input[0] = [
+ [ id:'test', single_end:false ], // meta map
+ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.bam', checkIfExists: true)
+ ]
+
+ """
+ }
+ }
+
+ then {
+ assertAll(
+ { assert process.success },
+ { assert snapshot(process.out).match() }
+ )
+ }
+ }
+
+}
diff --git a/modules/nf-core/picard/collectinsertsizemetrics/tests/main.nf.test.snap b/modules/nf-core/picard/collectinsertsizemetrics/tests/main.nf.test.snap
new file mode 100644
index 000000000..bcb5b4557
--- /dev/null
+++ b/modules/nf-core/picard/collectinsertsizemetrics/tests/main.nf.test.snap
@@ -0,0 +1,74 @@
+{
+ "test-picard-collectinsertsizemetrics": {
+ "content": [
+ [
+ "## METRICS CLASS\tpicard.analysis.InsertSizeMetrics",
+ "MEDIAN_INSERT_SIZE\tMODE_INSERT_SIZE\tMEDIAN_ABSOLUTE_DEVIATION\tMIN_INSERT_SIZE\tMAX_INSERT_SIZE\tMEAN_INSERT_SIZE\tSTANDARD_DEVIATION\tREAD_PAIRS\tPAIR_ORIENTATION\tWIDTH_OF_10_PERCENT\tWIDTH_OF_20_PERCENT\tWIDTH_OF_30_PERCENT\tWIDTH_OF_40_PERCENT\tWIDTH_OF_50_PERCENT\tWIDTH_OF_60_PERCENT\tWIDTH_OF_70_PERCENT\tWIDTH_OF_80_PERCENT\tWIDTH_OF_90_PERCENT\tWIDTH_OF_95_PERCENT\tWIDTH_OF_99_PERCENT\tSAMPLE\tLIBRARY\tREAD_GROUP",
+ "209\t159\t46\t77\t364\t207.659794\t66.769018\t97\tFR\t25\t49\t59\t77\t93\t123\t145\t183\t223\t255\t311\t\t\t",
+ ""
+ ],
+ "test.pdf",
+ [
+ "versions.yml:md5,4423bfe2194f61d919c382d2225b0835"
+ ]
+ ],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "24.04.4"
+ },
+ "timestamp": "2024-08-30T12:23:29.392944"
+ },
+ "test-picard-collectinsertsizemetrics-stub": {
+ "content": [
+ {
+ "0": [
+ [
+ {
+ "id": "test",
+ "single_end": false
+ },
+ "test.txt:md5,d41d8cd98f00b204e9800998ecf8427e"
+ ]
+ ],
+ "1": [
+ [
+ {
+ "id": "test",
+ "single_end": false
+ },
+ "test.pdf:md5,d41d8cd98f00b204e9800998ecf8427e"
+ ]
+ ],
+ "2": [
+ "versions.yml:md5,4423bfe2194f61d919c382d2225b0835"
+ ],
+ "histogram": [
+ [
+ {
+ "id": "test",
+ "single_end": false
+ },
+ "test.pdf:md5,d41d8cd98f00b204e9800998ecf8427e"
+ ]
+ ],
+ "metrics": [
+ [
+ {
+ "id": "test",
+ "single_end": false
+ },
+ "test.txt:md5,d41d8cd98f00b204e9800998ecf8427e"
+ ]
+ ],
+ "versions": [
+ "versions.yml:md5,4423bfe2194f61d919c382d2225b0835"
+ ]
+ }
+ ],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "24.04.4"
+ },
+ "timestamp": "2024-08-30T12:20:03.841884"
+ }
+}
\ No newline at end of file
diff --git a/modules/nf-core/picard/collectrnaseqmetrics/environment.yml b/modules/nf-core/picard/collectrnaseqmetrics/environment.yml
index 542b2e823..ff4a85edb 100644
--- a/modules/nf-core/picard/collectrnaseqmetrics/environment.yml
+++ b/modules/nf-core/picard/collectrnaseqmetrics/environment.yml
@@ -1,7 +1,5 @@
-name: picard_collectrnaseqmetrics
channels:
- conda-forge
- bioconda
- - defaults
dependencies:
- - bioconda::picard=3.1.1
+ - bioconda::picard=3.2.0
diff --git a/modules/nf-core/picard/collectrnaseqmetrics/main.nf b/modules/nf-core/picard/collectrnaseqmetrics/main.nf
index f833a105c..0c8f2cfa2 100644
--- a/modules/nf-core/picard/collectrnaseqmetrics/main.nf
+++ b/modules/nf-core/picard/collectrnaseqmetrics/main.nf
@@ -4,8 +4,8 @@ process PICARD_COLLECTRNASEQMETRICS {
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(bam)
diff --git a/modules/nf-core/picard/collectwgsmetrics/environment.yml b/modules/nf-core/picard/collectwgsmetrics/environment.yml
index 6a0b9258e..58d525818 100644
--- a/modules/nf-core/picard/collectwgsmetrics/environment.yml
+++ b/modules/nf-core/picard/collectwgsmetrics/environment.yml
@@ -1,8 +1,6 @@
-name: picard_collectwgsmetrics
channels:
- conda-forge
- bioconda
- - defaults
dependencies:
- - bioconda::picard=3.1.1
+ - bioconda::picard=3.2.0
- r::r-base
diff --git a/modules/nf-core/picard/collectwgsmetrics/main.nf b/modules/nf-core/picard/collectwgsmetrics/main.nf
index 35f4129cf..6002a7ca9 100644
--- a/modules/nf-core/picard/collectwgsmetrics/main.nf
+++ b/modules/nf-core/picard/collectwgsmetrics/main.nf
@@ -4,8 +4,8 @@ process PICARD_COLLECTWGSMETRICS {
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(bam), path(bai)
diff --git a/modules/nf-core/picard/collectwgsmetrics/tests/main.nf.test b/modules/nf-core/picard/collectwgsmetrics/tests/main.nf.test
new file mode 100644
index 000000000..a3984566d
--- /dev/null
+++ b/modules/nf-core/picard/collectwgsmetrics/tests/main.nf.test
@@ -0,0 +1,83 @@
+
+nextflow_process {
+
+ name "Test Process PICARD_COLLECTWGSMETRICS"
+ script "../main.nf"
+ process "PICARD_COLLECTWGSMETRICS"
+
+ tag "modules"
+ tag "modules_nfcore"
+ tag "picard"
+ tag "picard/collectwgsmetrics"
+
+ test("test-picard-collectwgsmetrics") {
+
+ when {
+ process {
+ """
+ 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] = [
+ [id:'genome'],
+ file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true)
+ ]
+ input[2] = [
+ [id:'genome'],
+ file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.fai', checkIfExists: true)
+ ]
+ input[3] = []
+
+ """
+ }
+ }
+
+ then {
+ assertAll(
+ { assert process.success },
+ { assert snapshot(
+ file(process.out.metrics[0][1]).text.contains('coverage high_quality_coverage_count'),
+ process.out.versions
+ ).match()
+ }
+ )
+ }
+ }
+
+ test("test-picard-collectwgsmetrics-with-interval") {
+
+ when {
+ process {
+ """
+ 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] = [
+ [id:'genome'],
+ file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true)
+ ]
+ input[2] = [
+ [id:'genome'],
+ file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.fai', checkIfExists: true)
+ ]
+ input[3] = file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/picard/baits.interval_list', checkIfExists: true)
+
+ """
+ }
+ }
+
+ then {
+ assertAll(
+ { assert process.success },
+ { assert snapshot(
+ file(process.out.metrics[0][1]).text.contains('coverage high_quality_coverage_count'),
+ process.out.versions
+ ).match()
+ }
+ )
+ }
+ }
+
+}
diff --git a/modules/nf-core/picard/collectwgsmetrics/tests/main.nf.test.snap b/modules/nf-core/picard/collectwgsmetrics/tests/main.nf.test.snap
new file mode 100644
index 000000000..f188382b0
--- /dev/null
+++ b/modules/nf-core/picard/collectwgsmetrics/tests/main.nf.test.snap
@@ -0,0 +1,28 @@
+{
+ "test-picard-collectwgsmetrics-with-interval": {
+ "content": [
+ true,
+ [
+ "versions.yml:md5,06b5898fb06823b736c90e1dcebe75fe"
+ ]
+ ],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "24.04.4"
+ },
+ "timestamp": "2024-08-23T11:02:46.301176"
+ },
+ "test-picard-collectwgsmetrics": {
+ "content": [
+ true,
+ [
+ "versions.yml:md5,06b5898fb06823b736c90e1dcebe75fe"
+ ]
+ ],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "24.04.4"
+ },
+ "timestamp": "2024-08-23T11:02:25.132069"
+ }
+}
\ No newline at end of file
diff --git a/modules/nf-core/rrnatranscripts/environment.yml b/modules/nf-core/rrnatranscripts/environment.yml
index e812273bf..6f09494b4 100644
--- a/modules/nf-core/rrnatranscripts/environment.yml
+++ b/modules/nf-core/rrnatranscripts/environment.yml
@@ -1,9 +1,7 @@
---
# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json
-name: "rrnatranscripts"
channels:
- conda-forge
- bioconda
- - defaults
dependencies:
- python=3.12.2
diff --git a/modules/nf-core/rrnatranscripts/templates/get_rrna_transcripts.py b/modules/nf-core/rrnatranscripts/templates/get_rrna_transcripts.py
index 2e320e7bd..ea3ce0f49 100644
--- a/modules/nf-core/rrnatranscripts/templates/get_rrna_transcripts.py
+++ b/modules/nf-core/rrnatranscripts/templates/get_rrna_transcripts.py
@@ -10,6 +10,7 @@
logger = logging.getLogger(__name__)
logger.setLevel(logging.INFO)
+
def get_rrna_intervals(gtf: str, rrna_transcripts: str):
"""
Get lines containing ``#`` or ``gene_type rRNA`` or ```` or ``gene_type rRNA_pseudogene`` or ``gene_type MT_rRNA``
@@ -67,19 +68,16 @@ def format_yaml_like(data: dict, indent: int = 0) -> str:
if __name__ == "__main__":
- if '${task.ext.prefix}' != "null":
+ if "${task.ext.prefix}" != "null":
prefix = "${task.ext.prefix}."
else:
prefix = "${task.ext.gtf}."
- if not get_rrna_intervals('$gtf', f"{prefix}_rrna_intervals.gtf"):
+ if not get_rrna_intervals("$gtf", f"{prefix}_rrna_intervals.gtf"):
logging.error("Failed to extract rrna transcipts.")
-
-
# 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/rrnatranscripts/tests/main.nf.test b/modules/nf-core/rrnatranscripts/tests/main.nf.test
index 1c29522ad..db0d55652 100644
--- a/modules/nf-core/rrnatranscripts/tests/main.nf.test
+++ b/modules/nf-core/rrnatranscripts/tests/main.nf.test
@@ -14,7 +14,7 @@ nextflow_process {
process {
"""
input[0] = [
- 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)
] """
}
}
@@ -36,7 +36,7 @@ nextflow_process {
process {
"""
input[0] = [
- 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)
] """
}
}
diff --git a/modules/nf-core/salmon/index/environment.yml b/modules/nf-core/salmon/index/environment.yml
index a6607d964..471164faa 100644
--- a/modules/nf-core/salmon/index/environment.yml
+++ b/modules/nf-core/salmon/index/environment.yml
@@ -1,7 +1,5 @@
-name: salmon_index
channels:
- conda-forge
- bioconda
- - defaults
dependencies:
- bioconda::salmon=1.10.1
diff --git a/modules/nf-core/salmon/quant/environment.yml b/modules/nf-core/salmon/quant/environment.yml
index 862667241..471164faa 100644
--- a/modules/nf-core/salmon/quant/environment.yml
+++ b/modules/nf-core/salmon/quant/environment.yml
@@ -1,7 +1,5 @@
-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 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/modules/nf-core/samtools/faidx/environment.yml b/modules/nf-core/samtools/faidx/environment.yml
index 9c24eb0ab..b98cbb990 100644
--- a/modules/nf-core/samtools/faidx/environment.yml
+++ b/modules/nf-core/samtools/faidx/environment.yml
@@ -1,10 +1,7 @@
-name: samtools_faidx
-
channels:
- conda-forge
- bioconda
- - defaults
dependencies:
- - bioconda::htslib=1.19.1
- - bioconda::samtools=1.19.2
+ - bioconda::htslib=1.20
+ - bioconda::samtools=1.20
diff --git a/modules/nf-core/samtools/faidx/main.nf b/modules/nf-core/samtools/faidx/main.nf
index cfe7ad95f..bdcdbc954 100644
--- a/modules/nf-core/samtools/faidx/main.nf
+++ b/modules/nf-core/samtools/faidx/main.nf
@@ -4,8 +4,8 @@ process SAMTOOLS_FAIDX {
conda "${moduleDir}/environment.yml"
container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ?
- 'https://depot.galaxyproject.org/singularity/samtools:1.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(fasta)
diff --git a/modules/nf-core/samtools/faidx/tests/main.nf.test.snap b/modules/nf-core/samtools/faidx/tests/main.nf.test.snap
index 3e651ef68..3223b72bc 100644
--- a/modules/nf-core/samtools/faidx/tests/main.nf.test.snap
+++ b/modules/nf-core/samtools/faidx/tests/main.nf.test.snap
@@ -18,7 +18,7 @@
],
"3": [
- "versions.yml:md5,4870fc0a88c616aa937f8325a2db0c3c"
+ "versions.yml:md5,2db78952923a61e05d50b95518b21856"
],
"fa": [
@@ -36,7 +36,7 @@
],
"versions": [
- "versions.yml:md5,4870fc0a88c616aa937f8325a2db0c3c"
+ "versions.yml:md5,2db78952923a61e05d50b95518b21856"
]
}
],
@@ -44,7 +44,7 @@
"nf-test": "0.8.4",
"nextflow": "23.10.1"
},
- "timestamp": "2024-03-18T16:22:39.412601"
+ "timestamp": "2024-05-28T15:42:14.779784761"
},
"test_samtools_faidx_bgzip": {
"content": [
@@ -71,7 +71,7 @@
]
],
"3": [
- "versions.yml:md5,4870fc0a88c616aa937f8325a2db0c3c"
+ "versions.yml:md5,2db78952923a61e05d50b95518b21856"
],
"fa": [
@@ -95,7 +95,7 @@
]
],
"versions": [
- "versions.yml:md5,4870fc0a88c616aa937f8325a2db0c3c"
+ "versions.yml:md5,2db78952923a61e05d50b95518b21856"
]
}
],
@@ -103,7 +103,7 @@
"nf-test": "0.8.4",
"nextflow": "23.10.1"
},
- "timestamp": "2024-03-18T16:23:22.427966"
+ "timestamp": "2024-05-28T15:42:20.256633877"
},
"test_samtools_faidx_fasta": {
"content": [
@@ -124,7 +124,7 @@
],
"3": [
- "versions.yml:md5,4870fc0a88c616aa937f8325a2db0c3c"
+ "versions.yml:md5,2db78952923a61e05d50b95518b21856"
],
"fa": [
[
@@ -142,7 +142,7 @@
],
"versions": [
- "versions.yml:md5,4870fc0a88c616aa937f8325a2db0c3c"
+ "versions.yml:md5,2db78952923a61e05d50b95518b21856"
]
}
],
@@ -150,7 +150,7 @@
"nf-test": "0.8.4",
"nextflow": "23.10.1"
},
- "timestamp": "2024-03-18T16:24:04.107537"
+ "timestamp": "2024-05-28T15:42:25.632577273"
},
"test_samtools_faidx_stub_fasta": {
"content": [
@@ -171,7 +171,7 @@
],
"3": [
- "versions.yml:md5,4870fc0a88c616aa937f8325a2db0c3c"
+ "versions.yml:md5,2db78952923a61e05d50b95518b21856"
],
"fa": [
[
@@ -189,7 +189,7 @@
],
"versions": [
- "versions.yml:md5,4870fc0a88c616aa937f8325a2db0c3c"
+ "versions.yml:md5,2db78952923a61e05d50b95518b21856"
]
}
],
@@ -197,7 +197,7 @@
"nf-test": "0.8.4",
"nextflow": "23.10.1"
},
- "timestamp": "2024-03-18T16:24:45.868463"
+ "timestamp": "2024-05-28T15:42:31.058424849"
},
"test_samtools_faidx_stub_fai": {
"content": [
@@ -218,7 +218,7 @@
],
"3": [
- "versions.yml:md5,4870fc0a88c616aa937f8325a2db0c3c"
+ "versions.yml:md5,2db78952923a61e05d50b95518b21856"
],
"fa": [
@@ -236,7 +236,7 @@
],
"versions": [
- "versions.yml:md5,4870fc0a88c616aa937f8325a2db0c3c"
+ "versions.yml:md5,2db78952923a61e05d50b95518b21856"
]
}
],
@@ -244,6 +244,6 @@
"nf-test": "0.8.4",
"nextflow": "23.10.1"
},
- "timestamp": "2024-03-18T16:25:27.550554"
+ "timestamp": "2024-05-28T15:42:36.479929617"
}
}
\ No newline at end of file
diff --git a/modules/nf-core/samtools/index/environment.yml b/modules/nf-core/samtools/index/environment.yml
index a5e506498..da2df5e43 100644
--- a/modules/nf-core/samtools/index/environment.yml
+++ b/modules/nf-core/samtools/index/environment.yml
@@ -1,8 +1,6 @@
-name: samtools_index
channels:
- conda-forge
- 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..e002585b9 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)
@@ -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 bb7756d1c..ca34fb5cd 100644
--- a/modules/nf-core/samtools/index/tests/main.nf.test
+++ b/modules/nf-core/samtools/index/tests/main.nf.test
@@ -9,11 +9,7 @@ nextflow_process {
tag "samtools/index"
test("bai") {
-
when {
- params {
- outdir = "$outputDir"
- }
process {
"""
input[0] = Channel.of([
@@ -27,18 +23,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([
@@ -52,20 +43,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([
@@ -79,8 +133,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 3dc8e7de8..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,cc4370091670b64bba7c7206403ffb3e"
- ]
+ {
+ "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": "24.01.0"
+ "nf-test": "0.9.0",
+ "nextflow": "24.04.3"
},
- "timestamp": "2024-02-13T16:12:00.324667957"
+ "timestamp": "2024-07-22T16:51:53.9057"
},
- "csi_versions": {
+ "crai - stub": {
"content": [
- [
- "versions.yml:md5,cc4370091670b64bba7c7206403ffb3e"
- ]
+ {
+ "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": "24.01.0"
+ "nf-test": "0.9.0",
+ "nextflow": "24.04.3"
},
- "timestamp": "2024-02-13T16:12:07.885103162"
+ "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,cc4370091670b64bba7c7206403ffb3e"
- ]
+ {
+ "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": "24.01.0"
+ "nf-test": "0.9.0",
+ "nextflow": "24.04.3"
},
- "timestamp": "2024-02-13T16:11:51.641425452"
+ "timestamp": "2024-07-22T16:51:04.16585"
}
}
\ 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..da2df5e43 100644
--- a/modules/nf-core/samtools/sort/environment.yml
+++ b/modules/nf-core/samtools/sort/environment.yml
@@ -1,8 +1,6 @@
-name: samtools_sort
channels:
- conda-forge
- 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..8e019099c 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)
@@ -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 8360e2b1f..c2ea9c72a 100644
--- a/modules/nf-core/samtools/sort/tests/main.nf.test
+++ b/modules/nf-core/samtools/sort/tests/main.nf.test
@@ -30,13 +30,49 @@ 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 } },
+ process.out.versions
+ ).match()}
)
}
}
test("cram") {
+ 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.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") {
+
+ options "-stub"
config "./nextflow.config"
when {
@@ -62,24 +98,21 @@ nextflow_process {
}
}
- test("bam_stub") {
+ test("cram - stub") {
- config "./nextflow.config"
options "-stub"
+ config "./nextflow_cram.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)
+ 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)
])
"""
}
@@ -88,8 +121,7 @@ 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() }
)
}
}
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..da38d5d15 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,35 @@
{
"cram": {
+ "content": [
+ [
+ [
+ {
+ "id": "test",
+ "single_end": false
+ },
+ "test.sorted.cram"
+ ]
+ ],
+ [
+ [
+ {
+ "id": "test",
+ "single_end": false
+ },
+ "test.sorted.cram.crai"
+ ]
+ ],
+ [
+ "versions.yml:md5,7a360de20e1d7a6f15a5e8fbe0a9c062"
+ ]
+ ],
+ "meta": {
+ "nf-test": "0.9.0",
+ "nextflow": "24.04.3"
+ },
+ "timestamp": "2024-07-22T17:19:37.196205"
+ },
+ "bam - stub": {
"content": [
{
"0": [
@@ -8,7 +38,7 @@
"id": "test",
"single_end": false
},
- "test.sorted.bam:md5,bc0b7c25da26384a006ed84cc9e4da23"
+ "test.sorted.bam:md5,d41d8cd98f00b204e9800998ecf8427e"
]
],
"1": [
@@ -23,11 +53,11 @@
"id": "test",
"single_end": false
},
- "test.sorted.bam.csi:md5,8d4e836c2fed6c0bf874d5e8cdba5831"
+ "test.sorted.bam.csi:md5,d41d8cd98f00b204e9800998ecf8427e"
]
],
"4": [
- "versions.yml:md5,e6d43fefc9a8bff91c2ce6e3a1716eca"
+ "versions.yml:md5,7a360de20e1d7a6f15a5e8fbe0a9c062"
],
"bam": [
[
@@ -35,7 +65,7 @@
"id": "test",
"single_end": false
},
- "test.sorted.bam:md5,bc0b7c25da26384a006ed84cc9e4da23"
+ "test.sorted.bam:md5,d41d8cd98f00b204e9800998ecf8427e"
]
],
"crai": [
@@ -50,105 +80,113 @@
"id": "test",
"single_end": false
},
- "test.sorted.bam.csi:md5,8d4e836c2fed6c0bf874d5e8cdba5831"
+ "test.sorted.bam.csi:md5,d41d8cd98f00b204e9800998ecf8427e"
]
],
"versions": [
- "versions.yml:md5,e6d43fefc9a8bff91c2ce6e3a1716eca"
+ "versions.yml:md5,7a360de20e1d7a6f15a5e8fbe0a9c062"
]
}
],
"meta": {
- "nf-test": "0.8.4",
- "nextflow": "23.10.1"
- },
- "timestamp": "2024-03-04T15:08:00.830294"
- },
- "bam_stub_bam": {
- "content": [
- "test.sorted.bam"
- ],
- "meta": {
- "nf-test": "0.8.4",
- "nextflow": "23.04.3"
+ "nf-test": "0.9.0",
+ "nextflow": "24.04.3"
},
- "timestamp": "2024-02-12T19:21:04.364044"
+ "timestamp": "2024-07-22T15:54:46.580756"
},
- "bam_stub_versions": {
- "content": [
- [
- "versions.yml:md5,e6d43fefc9a8bff91c2ce6e3a1716eca"
- ]
- ],
- "meta": {
- "nf-test": "0.8.4",
- "nextflow": "24.01.0"
- },
- "timestamp": "2024-02-13T16:15:00.20800281"
- },
- "bam": {
+ "cram - stub": {
"content": [
{
"0": [
+
+ ],
+ "1": [
[
{
"id": "test",
"single_end": false
},
- "test.sorted.bam:md5,bc0b7c25da26384a006ed84cc9e4da23"
+ "test.sorted.cram:md5,d41d8cd98f00b204e9800998ecf8427e"
]
- ],
- "1": [
-
],
"2": [
-
- ],
- "3": [
[
{
"id": "test",
"single_end": false
},
- "test.sorted.bam.csi:md5,8d4e836c2fed6c0bf874d5e8cdba5831"
+ "test.sorted.cram.crai:md5,d41d8cd98f00b204e9800998ecf8427e"
]
+ ],
+ "3": [
+
],
"4": [
- "versions.yml:md5,e6d43fefc9a8bff91c2ce6e3a1716eca"
+ "versions.yml:md5,7a360de20e1d7a6f15a5e8fbe0a9c062"
],
"bam": [
+
+ ],
+ "crai": [
[
{
"id": "test",
"single_end": false
},
- "test.sorted.bam:md5,bc0b7c25da26384a006ed84cc9e4da23"
+ "test.sorted.cram.crai:md5,d41d8cd98f00b204e9800998ecf8427e"
]
- ],
- "crai": [
-
],
"cram": [
-
- ],
- "csi": [
[
{
"id": "test",
"single_end": false
},
- "test.sorted.bam.csi:md5,8d4e836c2fed6c0bf874d5e8cdba5831"
+ "test.sorted.cram:md5,d41d8cd98f00b204e9800998ecf8427e"
]
+ ],
+ "csi": [
+
],
"versions": [
- "versions.yml:md5,e6d43fefc9a8bff91c2ce6e3a1716eca"
+ "versions.yml:md5,7a360de20e1d7a6f15a5e8fbe0a9c062"
]
}
],
"meta": {
- "nf-test": "0.8.4",
- "nextflow": "23.10.1"
+ "nf-test": "0.9.0",
+ "nextflow": "24.04.3"
+ },
+ "timestamp": "2024-07-22T15:57:30.505698"
+ },
+ "bam": {
+ "content": [
+ [
+ [
+ {
+ "id": "test",
+ "single_end": false
+ },
+ "test.sorted.bam:md5,21c992d59615936b99f2ad008aa54400"
+ ]
+ ],
+ [
+ [
+ {
+ "id": "test",
+ "single_end": false
+ },
+ "test.sorted.bam.csi"
+ ]
+ ],
+ [
+ "versions.yml:md5,7a360de20e1d7a6f15a5e8fbe0a9c062"
+ ]
+ ],
+ "meta": {
+ "nf-test": "0.9.0",
+ "nextflow": "24.04.3"
},
- "timestamp": "2024-03-04T15:07:48.773803"
+ "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/view/environment.yml b/modules/nf-core/samtools/view/environment.yml
index b0676f338..da2df5e43 100644
--- a/modules/nf-core/samtools/view/environment.yml
+++ b/modules/nf-core/samtools/view/environment.yml
@@ -1,8 +1,6 @@
-name: samtools_view
channels:
- conda-forge
- 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/view/main.nf b/modules/nf-core/samtools/view/main.nf
index 5a8989d69..dc611448c 100644
--- a/modules/nf-core/samtools/view/main.nf
+++ b/modules/nf-core/samtools/view/main.nf
@@ -4,8 +4,8 @@ process SAMTOOLS_VIEW {
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(index)
@@ -13,13 +13,15 @@ process SAMTOOLS_VIEW {
path qname
output:
- tuple val(meta), path("*.bam"), emit: bam, optional: true
- tuple val(meta), path("*.cram"), emit: cram, optional: true
- tuple val(meta), path("*.sam"), emit: sam, optional: true
- tuple val(meta), path("*.bai"), emit: bai, optional: true
- tuple val(meta), path("*.csi"), emit: csi, optional: true
- tuple val(meta), path("*.crai"), emit: crai, optional: true
- path "versions.yml", emit: versions
+ tuple val(meta), path("${prefix}.bam"), emit: bam, optional: true
+ tuple val(meta), path("${prefix}.cram"), emit: cram, optional: true
+ tuple val(meta), path("${prefix}.sam"), emit: sam, optional: true
+ tuple val(meta), path("${prefix}.${file_type}.bai"), emit: bai, optional: true
+ tuple val(meta), path("${prefix}.${file_type}.csi"), emit: csi, optional: true
+ tuple val(meta), path("${prefix}.${file_type}.crai"), emit: crai, optional: true
+ tuple val(meta), path("${prefix}.unselected.${file_type}"), emit: unselected, optional: true
+ tuple val(meta), path("${prefix}.unselected.${file_type}.{bai,csi,crsi}"), emit: unselected_index, optional: true
+ path "versions.yml", emit: versions
when:
task.ext.when == null || task.ext.when
@@ -27,13 +29,13 @@ process SAMTOOLS_VIEW {
script:
def args = task.ext.args ?: ''
def args2 = task.ext.args2 ?: ''
- def prefix = task.ext.prefix ?: "${meta.id}"
+ prefix = task.ext.prefix ?: "${meta.id}"
def reference = fasta ? "--reference ${fasta}" : ""
- def readnames = qname ? "--qname-file ${qname}": ""
- def file_type = args.contains("--output-fmt sam") ? "sam" :
- args.contains("--output-fmt bam") ? "bam" :
- args.contains("--output-fmt cram") ? "cram" :
- input.getExtension()
+ file_type = args.contains("--output-fmt sam") ? "sam" :
+ args.contains("--output-fmt bam") ? "bam" :
+ args.contains("--output-fmt cram") ? "cram" :
+ input.getExtension()
+ readnames = qname ? "--qname-file ${qname} --output-unselected ${prefix}.unselected.${file_type}": ""
if ("$input" == "${prefix}.${file_type}") error "Input and output names are the same, use \"task.ext.prefix\" to disambiguate!"
"""
samtools \\
@@ -54,14 +56,14 @@ process SAMTOOLS_VIEW {
stub:
def args = task.ext.args ?: ''
- def prefix = task.ext.prefix ?: "${meta.id}"
- def file_type = args.contains("--output-fmt sam") ? "sam" :
- args.contains("--output-fmt bam") ? "bam" :
- args.contains("--output-fmt cram") ? "cram" :
- input.getExtension()
+ prefix = task.ext.prefix ?: "${meta.id}"
+ file_type = args.contains("--output-fmt sam") ? "sam" :
+ args.contains("--output-fmt bam") ? "bam" :
+ args.contains("--output-fmt cram") ? "cram" :
+ input.getExtension()
if ("$input" == "${prefix}.${file_type}") error "Input and output names are the same, use \"task.ext.prefix\" to disambiguate!"
- def index = args.contains("--write-index") ? "touch ${prefix}.csi" : ""
+ def index = args.contains("--write-index") ? "touch ${prefix}.${file_type}.csi" : ""
"""
touch ${prefix}.${file_type}
diff --git a/modules/nf-core/samtools/view/meta.yml b/modules/nf-core/samtools/view/meta.yml
index 3dadafae7..27be60d08 100644
--- a/modules/nf-core/samtools/view/meta.yml
+++ b/modules/nf-core/samtools/view/meta.yml
@@ -73,6 +73,15 @@ output:
type: file
description: optional CRAM file index
pattern: "*.{crai}"
+ # unselected and unselected_index are created when passing a qname
+ - unselected:
+ type: file
+ description: optional file with unselected alignments
+ pattern: "*.unselected.{bam,cram,sam}"
+ - unselected_index:
+ type: file
+ description: index for the "unselected" file
+ pattern: "*.unselected.{bai,csi,crai}"
- versions:
type: file
description: File containing software versions
diff --git a/modules/nf-core/samtools/view/tests/main.nf.test b/modules/nf-core/samtools/view/tests/main.nf.test
index 45a0defba..37b81a916 100644
--- a/modules/nf-core/samtools/view/tests/main.nf.test
+++ b/modules/nf-core/samtools/view/tests/main.nf.test
@@ -172,6 +172,8 @@ nextflow_process {
{ assert snapshot(process.out.crai).match("cram_to_bam_index_qname_crai") },
{ assert snapshot(process.out.cram).match("cram_to_bam_index_qname_cram") },
{ assert snapshot(process.out.sam).match("cram_to_bam_index_qname_sam") },
+ { assert snapshot(file(process.out.unselected[0][1]).name).match("cram_to_bam_index_qname_unselected") },
+ { assert snapshot(file(process.out.unselected_index[0][1]).name).match("cram_to_bam_index_qname_unselected_csi") },
{ assert snapshot(process.out.versions).match("cram_to_bam_index_qname_versions") }
)
}
diff --git a/modules/nf-core/samtools/view/tests/main.nf.test.snap b/modules/nf-core/samtools/view/tests/main.nf.test.snap
index f55943a7a..6bcce9fea 100644
--- a/modules/nf-core/samtools/view/tests/main.nf.test.snap
+++ b/modules/nf-core/samtools/view/tests/main.nf.test.snap
@@ -56,14 +56,14 @@
"bam_stub_versions": {
"content": [
[
- "versions.yml:md5,4ea32c57d546102a1b32d9693ada7cf1"
+ "versions.yml:md5,6cd41a9a3b4a95271ec011ea990a2838"
]
],
"meta": {
"nf-test": "0.8.4",
- "nextflow": "24.01.0"
+ "nextflow": "23.10.1"
},
- "timestamp": "2024-02-13T16:13:09.713353823"
+ "timestamp": "2024-05-28T15:43:20.390692583"
},
"cram_to_bam_index_cram": {
"content": [
@@ -208,14 +208,14 @@
"cram_to_bam_index_qname_versions": {
"content": [
[
- "versions.yml:md5,4ea32c57d546102a1b32d9693ada7cf1"
+ "versions.yml:md5,6cd41a9a3b4a95271ec011ea990a2838"
]
],
"meta": {
"nf-test": "0.8.4",
- "nextflow": "24.01.0"
+ "nextflow": "23.10.1"
},
- "timestamp": "2024-02-13T16:13:03.935041046"
+ "timestamp": "2024-05-28T15:43:15.007493874"
},
"cram_to_bam_bam": {
"content": [
@@ -240,14 +240,14 @@
"cram_to_bam_index_versions": {
"content": [
[
- "versions.yml:md5,4ea32c57d546102a1b32d9693ada7cf1"
+ "versions.yml:md5,6cd41a9a3b4a95271ec011ea990a2838"
]
],
"meta": {
"nf-test": "0.8.4",
- "nextflow": "24.01.0"
+ "nextflow": "23.10.1"
},
- "timestamp": "2024-02-13T16:12:55.910685496"
+ "timestamp": "2024-05-28T15:43:09.472376824"
},
"cram_to_bam_bai": {
"content": [
@@ -264,14 +264,14 @@
"cram_to_bam_versions": {
"content": [
[
- "versions.yml:md5,4ea32c57d546102a1b32d9693ada7cf1"
+ "versions.yml:md5,6cd41a9a3b4a95271ec011ea990a2838"
]
],
"meta": {
"nf-test": "0.8.4",
- "nextflow": "24.01.0"
+ "nextflow": "23.10.1"
},
- "timestamp": "2024-02-13T16:12:47.715221169"
+ "timestamp": "2024-05-28T15:43:04.080050906"
},
"cram_bam": {
"content": [
@@ -355,17 +355,37 @@
},
"timestamp": "2024-02-12T19:38:23.322874"
},
+ "cram_to_bam_index_qname_unselected": {
+ "content": [
+ "test.unselected.bam"
+ ],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "23.04.3"
+ },
+ "timestamp": "2024-02-12T19:38:23.322874"
+ },
+ "cram_to_bam_index_qname_unselected_csi": {
+ "content": [
+ "test.unselected.bam.csi"
+ ],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "23.04.3"
+ },
+ "timestamp": "2024-02-12T19:38:23.328458"
+ },
"bam_versions": {
"content": [
[
- "versions.yml:md5,4ea32c57d546102a1b32d9693ada7cf1"
+ "versions.yml:md5,6cd41a9a3b4a95271ec011ea990a2838"
]
],
"meta": {
"nf-test": "0.8.4",
- "nextflow": "24.01.0"
+ "nextflow": "23.10.1"
},
- "timestamp": "2024-02-13T16:12:31.692607421"
+ "timestamp": "2024-05-28T15:42:52.978954857"
},
"cram_to_bam_index_qname_cram": {
"content": [
@@ -430,14 +450,14 @@
"cram_versions": {
"content": [
[
- "versions.yml:md5,4ea32c57d546102a1b32d9693ada7cf1"
+ "versions.yml:md5,6cd41a9a3b4a95271ec011ea990a2838"
]
],
"meta": {
"nf-test": "0.8.4",
- "nextflow": "24.01.0"
+ "nextflow": "23.10.1"
},
- "timestamp": "2024-02-13T16:12:39.913411036"
+ "timestamp": "2024-05-28T15:42:58.400776109"
},
"bam_sam": {
"content": [
@@ -477,7 +497,7 @@
},
"bam_stub_csi": {
"content": [
- "test.csi"
+ "test.bam.csi"
],
"meta": {
"nf-test": "0.8.4",
diff --git a/modules/nf-core/star/align/environment.yml b/modules/nf-core/star/align/environment.yml
index 8bd58cff5..e3d1c714d 100644
--- a/modules/nf-core/star/align/environment.yml
+++ b/modules/nf-core/star/align/environment.yml
@@ -1,8 +1,6 @@
-name: star_align
channels:
- conda-forge
- bioconda
- - defaults
dependencies:
- bioconda::star=2.7.10a
- bioconda::samtools=1.18
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 6ecd77863..2d9f72ddc 100644
--- a/modules/nf-core/star/align/tests/main.nf.test
+++ b/modules/nf-core/star/align/tests/main.nf.test
@@ -9,27 +9,367 @@ nextflow_process {
tag "star/align"
tag "star/genomegenerate"
- 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 {
"""
@@ -52,29 +392,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 {
"""
@@ -100,29 +444,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 {
"""
@@ -148,29 +496,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 {
"""
@@ -196,29 +548,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 {
"""
@@ -246,22 +602,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/environment.yml b/modules/nf-core/star/genomegenerate/environment.yml
index 791f255e5..38611dfa2 100644
--- a/modules/nf-core/star/genomegenerate/environment.yml
+++ b/modules/nf-core/star/genomegenerate/environment.yml
@@ -1,8 +1,6 @@
-name: star_genomegenerate
channels:
- conda-forge
- bioconda
- - defaults
dependencies:
- bioconda::samtools=1.18
- bioconda::htslib=1.18
diff --git a/modules/nf-core/star/genomegenerate/tests/main.nf.test b/modules/nf-core/star/genomegenerate/tests/main.nf.test
index c17c8ba45..4d619c473 100644
--- a/modules/nf-core/star/genomegenerate/tests/main.nf.test
+++ b/modules/nf-core/star/genomegenerate/tests/main.nf.test
@@ -28,15 +28,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 {
@@ -45,10 +45,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([ [], [] ])
"""
}
}
@@ -56,13 +53,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 {
@@ -71,7 +72,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) ]
+ ])
"""
}
}
@@ -79,11 +83,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") {
@@ -105,11 +107,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/merge/environment.yml b/modules/nf-core/stringtie/merge/environment.yml
index 9914b2025..0556de41a 100644
--- a/modules/nf-core/stringtie/merge/environment.yml
+++ b/modules/nf-core/stringtie/merge/environment.yml
@@ -1,7 +1,5 @@
-name: stringtie_merge
channels:
- conda-forge
- bioconda
- - defaults
dependencies:
- bioconda::stringtie=2.2.1
diff --git a/modules/nf-core/stringtie/merge/tests/main.nf.test b/modules/nf-core/stringtie/merge/tests/main.nf.test
index 358c561a0..bcc648bc7 100644
--- a/modules/nf-core/stringtie/merge/tests/main.nf.test
+++ b/modules/nf-core/stringtie/merge/tests/main.nf.test
@@ -50,7 +50,7 @@ nextflow_process {
process {
"""
input[0] = STRINGTIE_STRINGTIE.out.transcript_gtf.map { it -> it[1] }
- input[1] = file(params.test_data['homo_sapiens']['genome']['genome_gtf'], checkIfExists: true)
+ input[1] = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.gtf', checkIfExists: true)
"""
}
}
diff --git a/modules/nf-core/stringtie/stringtie/environment.yml b/modules/nf-core/stringtie/stringtie/environment.yml
index 7a0eccdb8..0556de41a 100644
--- a/modules/nf-core/stringtie/stringtie/environment.yml
+++ b/modules/nf-core/stringtie/stringtie/environment.yml
@@ -1,7 +1,5 @@
-name: stringtie_stringtie
channels:
- conda-forge
- bioconda
- - defaults
dependencies:
- bioconda::stringtie=2.2.1
diff --git a/modules/nf-core/stringtie/stringtie/tests/main.nf.test b/modules/nf-core/stringtie/stringtie/tests/main.nf.test
index 00efe8f1a..2204e849f 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"
tag "modules"
tag "modules_nfcore"
tag "stringtie"
@@ -10,8 +11,6 @@ nextflow_process {
test("sarscov2 [bam] - forward strandedness") {
- config "./nextflow.config"
-
when {
process {
"""
@@ -27,17 +26,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 {
"""
@@ -53,18 +52,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 {
"""
@@ -80,16 +79,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 {
@@ -106,10 +206,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/ucsc/gtftogenepred/environment.yml b/modules/nf-core/ucsc/gtftogenepred/environment.yml
index 5216fc8ff..5c4f6c2fa 100644
--- a/modules/nf-core/ucsc/gtftogenepred/environment.yml
+++ b/modules/nf-core/ucsc/gtftogenepred/environment.yml
@@ -1,7 +1,5 @@
-name: ucsc_gtftogenepred
channels:
- conda-forge
- bioconda
- - defaults
dependencies:
- bioconda::ucsc-gtftogenepred=447
diff --git a/modules/nf-core/ucsc/gtftogenepred/tests/main.nf.test b/modules/nf-core/ucsc/gtftogenepred/tests/main.nf.test
new file mode 100644
index 000000000..e0396a63c
--- /dev/null
+++ b/modules/nf-core/ucsc/gtftogenepred/tests/main.nf.test
@@ -0,0 +1,36 @@
+
+nextflow_process {
+
+ name "Test Process UCSC_GTFTOGENEPRED"
+ script "../main.nf"
+ process "UCSC_GTFTOGENEPRED"
+ config "./nextflow.config"
+
+ tag "modules"
+ tag "modules_nfcore"
+ tag "ucsc"
+ tag "ucsc/gtftogenepred"
+
+ test("test-ucsc-gtftogenepred") {
+
+ when {
+ process {
+ """
+ input[0] = [
+ [ id: 'test' ], // meta map
+ [ 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/ucsc/gtftogenepred/tests/main.nf.test.snap b/modules/nf-core/ucsc/gtftogenepred/tests/main.nf.test.snap
new file mode 100644
index 000000000..f021f8238
--- /dev/null
+++ b/modules/nf-core/ucsc/gtftogenepred/tests/main.nf.test.snap
@@ -0,0 +1,51 @@
+{
+ "test-ucsc-gtftogenepred": {
+ "content": [
+ {
+ "0": [
+ [
+ {
+ "id": "test"
+ },
+ "test.genepred:md5,779e4749efaf38da3443ddfde30cc76c"
+ ]
+ ],
+ "1": [
+ [
+ {
+ "id": "test"
+ },
+ "test.refflat:md5,4101802f41d4cf7ee2667587da11bf42"
+ ]
+ ],
+ "2": [
+ "versions.yml:md5,fd95365619a316eb451190365b1b799e"
+ ],
+ "genepred": [
+ [
+ {
+ "id": "test"
+ },
+ "test.genepred:md5,779e4749efaf38da3443ddfde30cc76c"
+ ]
+ ],
+ "refflat": [
+ [
+ {
+ "id": "test"
+ },
+ "test.refflat:md5,4101802f41d4cf7ee2667587da11bf42"
+ ]
+ ],
+ "versions": [
+ "versions.yml:md5,fd95365619a316eb451190365b1b799e"
+ ]
+ }
+ ],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "24.04.4"
+ },
+ "timestamp": "2024-08-23T08:55:50.58172"
+ }
+}
\ No newline at end of file
diff --git a/modules/nf-core/ucsc/gtftogenepred/tests/nextflow.config b/modules/nf-core/ucsc/gtftogenepred/tests/nextflow.config
new file mode 100644
index 000000000..889bb6ce6
--- /dev/null
+++ b/modules/nf-core/ucsc/gtftogenepred/tests/nextflow.config
@@ -0,0 +1,8 @@
+process {
+ withName: UCSC_GTFTOGENEPRED {
+ ext.args = [
+ "-genePredExt",
+ "-geneNameAsName2"
+ ].join(' ').trim()
+ }
+}
From 55dcc55b5cced7cd14d2802beee18e1b99ecc8b6 Mon Sep 17 00:00:00 2001
From: Annick Renevey <47788523+rannick@users.noreply.github.com>
Date: Thu, 12 Sep 2024 14:56:24 +0200
Subject: [PATCH 041/887] update arriba modules
---
modules/nf-core/arriba/download/main.nf | 2 +-
null/pipeline_info/execution_trace_2024-09-12_11-34-43.txt | 1 +
2 files changed, 2 insertions(+), 1 deletion(-)
create mode 100644 null/pipeline_info/execution_trace_2024-09-12_11-34-43.txt
diff --git a/modules/nf-core/arriba/download/main.nf b/modules/nf-core/arriba/download/main.nf
index 5e606574c..96a4e3362 100644
--- a/modules/nf-core/arriba/download/main.nf
+++ b/modules/nf-core/arriba/download/main.nf
@@ -18,7 +18,7 @@ process ARRIBA_DOWNLOAD {
script:
"""
- wget https://github.com/suhrig/arriba/releases/download/v2.4.0/arriba_v2.4.0.tar.gz -O arriba_v2.4.0.tar.gz --no-check-certificate
+ wget https://github.com/suhrig/arriba/releases/download/v2.4.0/arriba_v2.4.0.tar.gz -O arriba_v2.4.0.tar.gz
tar -xzvf arriba_v2.4.0.tar.gz
rm arriba_v2.4.0.tar.gz
mv arriba_v2.4.0/database/* .
diff --git a/null/pipeline_info/execution_trace_2024-09-12_11-34-43.txt b/null/pipeline_info/execution_trace_2024-09-12_11-34-43.txt
new file mode 100644
index 000000000..6b739acdf
--- /dev/null
+++ b/null/pipeline_info/execution_trace_2024-09-12_11-34-43.txt
@@ -0,0 +1 @@
+task_id hash native_id name status exit submit duration realtime %cpu peak_rss peak_vmem rchar wchar
From f9f808da200334fdd8378cf53719c2219097fc4e Mon Sep 17 00:00:00 2001
From: Annick Renevey <47788523+rannick@users.noreply.github.com>
Date: Thu, 12 Sep 2024 15:23:30 +0200
Subject: [PATCH 042/887] rm file
---
null/pipeline_info/execution_trace_2024-09-12_11-34-43.txt | 1 -
1 file changed, 1 deletion(-)
delete mode 100644 null/pipeline_info/execution_trace_2024-09-12_11-34-43.txt
diff --git a/null/pipeline_info/execution_trace_2024-09-12_11-34-43.txt b/null/pipeline_info/execution_trace_2024-09-12_11-34-43.txt
deleted file mode 100644
index 6b739acdf..000000000
--- a/null/pipeline_info/execution_trace_2024-09-12_11-34-43.txt
+++ /dev/null
@@ -1 +0,0 @@
-task_id hash native_id name status exit submit duration realtime %cpu peak_rss peak_vmem rchar wchar
From 7f8ee685abc8261efe4d847cc5b6536ad1955f57 Mon Sep 17 00:00:00 2001
From: Annick Renevey <47788523+rannick@users.noreply.github.com>
Date: Thu, 12 Sep 2024 15:57:50 +0200
Subject: [PATCH 043/887] fixes
---
.../pipeline_info/execution_trace_2024-09-12_15-47-05.txt | 1 +
.../pipeline_info/execution_trace_2024-09-12_15-47-37.txt | 1 +
.../pipeline_info/execution_trace_2024-09-12_15-48-22.txt | 1 +
workflows/build_references.nf | 8 +++-----
4 files changed, 6 insertions(+), 5 deletions(-)
create mode 100644 null/pipeline_info/execution_trace_2024-09-12_15-47-05.txt
create mode 100644 null/pipeline_info/execution_trace_2024-09-12_15-47-37.txt
create mode 100644 null/pipeline_info/execution_trace_2024-09-12_15-48-22.txt
diff --git a/null/pipeline_info/execution_trace_2024-09-12_15-47-05.txt b/null/pipeline_info/execution_trace_2024-09-12_15-47-05.txt
new file mode 100644
index 000000000..6b739acdf
--- /dev/null
+++ b/null/pipeline_info/execution_trace_2024-09-12_15-47-05.txt
@@ -0,0 +1 @@
+task_id hash native_id name status exit submit duration realtime %cpu peak_rss peak_vmem rchar wchar
diff --git a/null/pipeline_info/execution_trace_2024-09-12_15-47-37.txt b/null/pipeline_info/execution_trace_2024-09-12_15-47-37.txt
new file mode 100644
index 000000000..6b739acdf
--- /dev/null
+++ b/null/pipeline_info/execution_trace_2024-09-12_15-47-37.txt
@@ -0,0 +1 @@
+task_id hash native_id name status exit submit duration realtime %cpu peak_rss peak_vmem rchar wchar
diff --git a/null/pipeline_info/execution_trace_2024-09-12_15-48-22.txt b/null/pipeline_info/execution_trace_2024-09-12_15-48-22.txt
new file mode 100644
index 000000000..6b739acdf
--- /dev/null
+++ b/null/pipeline_info/execution_trace_2024-09-12_15-48-22.txt
@@ -0,0 +1 @@
+task_id hash native_id name status exit submit duration realtime %cpu peak_rss peak_vmem rchar wchar
diff --git a/workflows/build_references.nf b/workflows/build_references.nf
index 7fdfcd8ca..da6664373 100644
--- a/workflows/build_references.nf
+++ b/workflows/build_references.nf
@@ -25,8 +25,6 @@ include { RRNATRANSCRIPTS } from '../modules/nf-core/rrnatranscr
include { SAMTOOLS_FAIDX } from '../modules/nf-core/samtools/faidx/main'
include { STAR_GENOMEGENERATE } from '../modules/nf-core/star/genomegenerate/main'
include { UCSC_GTFTOGENEPRED } from '../modules/nf-core/ucsc/gtftogenepred/main'
-include { GATK4_CREATESEQUENCEDICTIONARY } from '../modules/nf-core/gatk4/createsequencedictionary/main'
-include { GATK4_BEDTOINTERVALLIST } from '../modules/nf-core/gatk4/bedtointervallist/main'
include { SALMON_INDEX } from '../modules/nf-core/salmon/index/main'
include { GFFREAD } from '../modules/nf-core/gffread/main'
@@ -42,8 +40,8 @@ workflow BUILD_REFERENCES {
fake_meta.id = "Homo_sapiens.${params.genome}.${params.ensembl_version}"
ENSEMBL_DOWNLOAD( params.ensembl_version, params.genome, fake_meta )
HGNC_DOWNLOAD()
- SAMTOOLS_FAIDX(ENSEMBL_DOWNLOAD.out.fasta, [[],[]])
- GATK4_CREATESEQUENCEDICTIONARY(ENSEMBL_DOWNLOAD.out.fasta)
+ SAMTOOLS_FAIDX(ENSEMBL_DOWNLOAD.out.primary_assembly, [[],[]])
+ GATK4_CREATESEQUENCEDICTIONARY(ENSEMBL_DOWNLOAD.out.primary_assembly)
RRNATRANSCRIPTS(ENSEMBL_DOWNLOAD.out.gtf.map{ meta, gtf -> [ gtf ] })
@@ -77,7 +75,7 @@ workflow BUILD_REFERENCES {
UCSC_GTFTOGENEPRED(ENSEMBL_DOWNLOAD.out.chrgtf)
} else {
UCSC_GTFTOGENEPRED(STARFUSION_DOWNLOAD.out.chrgtf)
-
+ }
if (params.fusionreport || params.all) {
FUSIONREPORT_DOWNLOAD( params.cosmic_username, params.cosmic_passwd )
}
From e54c5a67c980ef3c9d532ed311b9256767622173 Mon Sep 17 00:00:00 2001
From: Annick Renevey <47788523+rannick@users.noreply.github.com>
Date: Thu, 12 Sep 2024 15:58:15 +0200
Subject: [PATCH 044/887] remove files
---
null/pipeline_info/execution_trace_2024-09-12_15-47-05.txt | 1 -
null/pipeline_info/execution_trace_2024-09-12_15-47-37.txt | 1 -
null/pipeline_info/execution_trace_2024-09-12_15-48-22.txt | 1 -
3 files changed, 3 deletions(-)
delete mode 100644 null/pipeline_info/execution_trace_2024-09-12_15-47-05.txt
delete mode 100644 null/pipeline_info/execution_trace_2024-09-12_15-47-37.txt
delete mode 100644 null/pipeline_info/execution_trace_2024-09-12_15-48-22.txt
diff --git a/null/pipeline_info/execution_trace_2024-09-12_15-47-05.txt b/null/pipeline_info/execution_trace_2024-09-12_15-47-05.txt
deleted file mode 100644
index 6b739acdf..000000000
--- a/null/pipeline_info/execution_trace_2024-09-12_15-47-05.txt
+++ /dev/null
@@ -1 +0,0 @@
-task_id hash native_id name status exit submit duration realtime %cpu peak_rss peak_vmem rchar wchar
diff --git a/null/pipeline_info/execution_trace_2024-09-12_15-47-37.txt b/null/pipeline_info/execution_trace_2024-09-12_15-47-37.txt
deleted file mode 100644
index 6b739acdf..000000000
--- a/null/pipeline_info/execution_trace_2024-09-12_15-47-37.txt
+++ /dev/null
@@ -1 +0,0 @@
-task_id hash native_id name status exit submit duration realtime %cpu peak_rss peak_vmem rchar wchar
diff --git a/null/pipeline_info/execution_trace_2024-09-12_15-48-22.txt b/null/pipeline_info/execution_trace_2024-09-12_15-48-22.txt
deleted file mode 100644
index 6b739acdf..000000000
--- a/null/pipeline_info/execution_trace_2024-09-12_15-48-22.txt
+++ /dev/null
@@ -1 +0,0 @@
-task_id hash native_id name status exit submit duration realtime %cpu peak_rss peak_vmem rchar wchar
From 26d44e44a00e51c4cd3640a43e5cbbb5df938c27 Mon Sep 17 00:00:00 2001
From: Annick Renevey <47788523+rannick@users.noreply.github.com>
Date: Tue, 17 Sep 2024 10:52:02 +0200
Subject: [PATCH 045/887] update new fastq arg
---
subworkflows/local/trim_workflow.nf | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/subworkflows/local/trim_workflow.nf b/subworkflows/local/trim_workflow.nf
index ea21134db..27088a180 100644
--- a/subworkflows/local/trim_workflow.nf
+++ b/subworkflows/local/trim_workflow.nf
@@ -13,7 +13,7 @@ workflow TRIM_WORKFLOW {
ch_fastqc_trimmed = Channel.empty()
if (params.fastp_trim) {
- FASTP(reads, params.adapter_fasta, false, false)
+ FASTP(reads, params.adapter_fasta, false, false, false)
ch_versions = ch_versions.mix(FASTP.out.versions)
FASTQC_FOR_FASTP(FASTP.out.reads)
From 9a4a8eb0e1603e3749b6b7366aefc9dca06f0d0f Mon Sep 17 00:00:00 2001
From: Annick Renevey <47788523+rannick@users.noreply.github.com>
Date: Wed, 18 Sep 2024 14:25:51 +0200
Subject: [PATCH 046/887] update multiqc and multiqc args
---
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 | 6 +++---
workflows/rnafusion.nf | 4 +++-
5 files changed, 10 insertions(+), 8 deletions(-)
diff --git a/modules.json b/modules.json
index 2b34aabb8..322f834fa 100644
--- a/modules.json
+++ b/modules.json
@@ -67,7 +67,7 @@
},
"multiqc": {
"branch": "master",
- "git_sha": "06c8865e36741e05ad32ef70ab3fac127486af48",
+ "git_sha": "7c316cae26baf55e0add993bed2b0c9f7105c653",
"installed_by": ["modules"]
},
"picard/collectinsertsizemetrics": {
diff --git a/modules/nf-core/multiqc/environment.yml b/modules/nf-core/multiqc/environment.yml
index f1cd99b07..0fe126444 100644
--- a/modules/nf-core/multiqc/environment.yml
+++ b/modules/nf-core/multiqc/environment.yml
@@ -2,4 +2,4 @@ channels:
- conda-forge
- bioconda
dependencies:
- - bioconda::multiqc=1.24.1
+ - bioconda::multiqc=1.25
diff --git a/modules/nf-core/multiqc/main.nf b/modules/nf-core/multiqc/main.nf
index ceaec139e..b9ccebdbb 100644
--- a/modules/nf-core/multiqc/main.nf
+++ b/modules/nf-core/multiqc/main.nf
@@ -3,8 +3,8 @@ process MULTIQC {
conda "${moduleDir}/environment.yml"
container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ?
- 'https://depot.galaxyproject.org/singularity/multiqc:1.24.1--pyhdfd78af_0' :
- 'biocontainers/multiqc:1.24.1--pyhdfd78af_0' }"
+ 'https://depot.galaxyproject.org/singularity/multiqc:1.25--pyhdfd78af_0' :
+ 'biocontainers/multiqc:1.25--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 83fa080c8..b779e4692 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,6eb13f3b11bbcbfc98ad3166420ff760"
+ "versions.yml:md5,8c8724363a5efe0c6f43ab34faa57efd"
]
],
"meta": {
@@ -17,7 +17,7 @@
"multiqc_report.html",
"multiqc_data",
"multiqc_plots",
- "versions.yml:md5,6eb13f3b11bbcbfc98ad3166420ff760"
+ "versions.yml:md5,8c8724363a5efe0c6f43ab34faa57efd"
]
],
"meta": {
@@ -29,7 +29,7 @@
"multiqc_versions_config": {
"content": [
[
- "versions.yml:md5,6eb13f3b11bbcbfc98ad3166420ff760"
+ "versions.yml:md5,8c8724363a5efe0c6f43ab34faa57efd"
]
],
"meta": {
diff --git a/workflows/rnafusion.nf b/workflows/rnafusion.nf
index 85bde3955..d73ac21ed 100644
--- a/workflows/rnafusion.nf
+++ b/workflows/rnafusion.nf
@@ -274,7 +274,9 @@ workflow RNAFUSION {
ch_multiqc_files.collect(),
ch_multiqc_config.toList(),
ch_multiqc_custom_config.toList(),
- ch_multiqc_logo.toList()
+ ch_multiqc_logo.toList(),
+ [],
+ []
)
emit:
From eb6e354c180f6c533cbb862678403984e79275b2 Mon Sep 17 00:00:00 2001
From: Annick Renevey <47788523+rannick@users.noreply.github.com>
Date: Mon, 23 Sep 2024 21:15:42 +0200
Subject: [PATCH 047/887] change strategy
---
conf/modules.config | 3 ++-
modules/local/ensembl/main.nf | 22 +++++++++--------
nextflow.config | 2 +-
subworkflows/local/build_references.nf | 7 +++++-
workflows/rnafusion.nf | 34 ++++++++++++++++++++++++--
5 files changed, 53 insertions(+), 15 deletions(-)
diff --git a/conf/modules.config b/conf/modules.config
index e78f73dbb..bbafa80d6 100644
--- a/conf/modules.config
+++ b/conf/modules.config
@@ -49,7 +49,8 @@ process {
ext.when = { !params.build_references }
}
- withName: 'ENSEMBL_DOWNLOAD' {
+ withName: '.*BUILD_REFERENCES:ENSEMBL_DOWNLOAD' {
+ ext.when = { !params.fasta || ! params.gtf }
publishDir = [
path: { "${params.genomes_base}/ensembl" },
mode: params.publish_dir_mode,
diff --git a/modules/local/ensembl/main.nf b/modules/local/ensembl/main.nf
index 8297e2901..695ab3123 100644
--- a/modules/local/ensembl/main.nf
+++ b/modules/local/ensembl/main.nf
@@ -14,20 +14,23 @@ process ENSEMBL_DOWNLOAD {
output:
tuple val(meta), path("Homo_sapiens.${genome}.${ensembl_version}.gtf") , emit: gtf
- tuple val(meta), path("Homo_sapiens.${genome}.${ensembl_version}.dna.primary_assembly.fa") , emit: primary_assembly
- tuple val(meta), path("Homo_sapiens.${genome}.${ensembl_version}.chr.gtf") , emit: chrgtf
+ tuple val(meta), path("Homo_sapiens.${genome}.${ensembl_version}.dna.primary_assembly.fa") , emit: fasta
path "versions.yml" , emit: versions
script:
"""
- wget ftp://ftp.ensembl.org/pub/release-${ensembl_version}/gtf/homo_sapiens/Homo_sapiens.${params.genome}.${ensembl_version}.gtf.gz
- wget ftp://ftp.ensembl.org/pub/release-${ensembl_version}/fasta/homo_sapiens/dna/Homo_sapiens.${params.genome}.dna.primary_assembly.fa.gz -O Homo_sapiens.${params.genome}.${ensembl_version}.dna.primary_assembly.fa.gz
- wget ftp://ftp.ensembl.org/pub/release-${ensembl_version}/gtf/homo_sapiens/Homo_sapiens.${params.genome}.${ensembl_version}.chr.gtf.gz
+ if [ ${genome} == 'GRCh37' ]; then
+ wget ftp://ftp.ensembl.org/pub/grch37/release-${ensembl_version}/gtf/homo_sapiens/Homo_sapiens.${genome}.87.gtf.gz -O Homo_sapiens.${genome}.${ensembl_version}.gtf.gz
+ wget ftp://ftp.ensembl.org/pub/grch37/release-${ensembl_version}/fasta/homo_sapiens/dna/Homo_sapiens.${genome}.dna.primary_assembly.fa.gz -O Homo_sapiens.${genome}.${ensembl_version}.dna.primary_assembly.fa.gz
- gunzip Homo_sapiens.${params.genome}.${ensembl_version}.gtf.gz
- gunzip Homo_sapiens.${params.genome}.${ensembl_version}.dna.primary_assembly.fa.gz
- gunzip Homo_sapiens.${params.genome}.${ensembl_version}.chr.gtf.gz
+
+ else:
+ wget ftp://ftp.ensembl.org/pub/release-${ensembl_version}/gtf/homo_sapiens/Homo_sapiens.${genome}.${ensembl_version}.gtf.gz
+ wget ftp://ftp.ensembl.org/pub/release-${ensembl_version}/fasta/homo_sapiens/dna/Homo_sapiens.${genome}.dna.primary_assembly.fa.gz -O Homo_sapiens.${genome}.${ensembl_version}.dna.primary_assembly.fa.gz
+
+ gunzip Homo_sapiens.${genome}.${ensembl_version}.gtf.gz
+ gunzip Homo_sapiens.${genome}.${ensembl_version}.dna.primary_assembly.fa.gz
cat <<-END_VERSIONS > versions.yml
"${task.process}":
@@ -40,8 +43,7 @@ process ENSEMBL_DOWNLOAD {
stub:
"""
touch "Homo_sapiens.${genome}.${ensembl_version}.gtf"
- touch "Homo_sapiens.${params.genome}.${ensembl_version}.dna.primary_assembly.fa"
- touch "Homo_sapiens.${params.genome}.${ensembl_version}.chr.gtf"
+ touch "Homo_sapiens.${genome}.${ensembl_version}.dna.primary_assembly.fa"
cat <<-END_VERSIONS > versions.yml
"${task.process}":
diff --git a/nextflow.config b/nextflow.config
index b7d78f7d9..ccaf0348a 100644
--- a/nextflow.config
+++ b/nextflow.config
@@ -27,7 +27,7 @@ params {
// Genome
genome = 'GRCh38'
genomes_base = "${params.outdir}/references"
- ensembl_version = 112
+ ensembl_version = 111
read_length = 100
starfusion_build = true
genomes = [:]
diff --git a/subworkflows/local/build_references.nf b/subworkflows/local/build_references.nf
index a1a640509..c7a62033e 100644
--- a/subworkflows/local/build_references.nf
+++ b/subworkflows/local/build_references.nf
@@ -35,12 +35,17 @@ include { GFFREAD } from '../../modules/nf-core/gffread/
*/
workflow BUILD_REFERENCES {
-
+ take:
+ genome // channel: [mandatory] val(genome)
+ ensembl_version // channel: [mandatory] val(ensembl_version)
main:
ch_versions = Channel.empty()
+
+
+
if (!file(params.fasta).exists() || file(params.fasta).isEmpty() ||
!file(params.chrgtf).exists() || file(params.chrgtf).isEmpty() ||
!file(params.gtf).exists() || file(params.gtf).isEmpty()){
diff --git a/workflows/rnafusion.nf b/workflows/rnafusion.nf
index 302f2829f..368658401 100644
--- a/workflows/rnafusion.nf
+++ b/workflows/rnafusion.nf
@@ -65,8 +65,38 @@ workflow RNAFUSION {
// Create references if necessary
//
- BUILD_REFERENCES()
-
+ BUILD_REFERENCES(params.genome, params.ensembl_version)
+ ch_versions = ch_versions.mix(BUILD_REFERENCES.out.versions)
+
+ // Optional
+ ch_fasta = params.fasta ? Channel.fromPath(params.fasta).map {it -> [[id:it[0].simpleName], it]}.collect()
+ : BUILD_REFERENCES.out.fasta.map {it -> [[id:it[0].simpleName], it]}.collect()
+ ch_gtf = params.gtf ? Channel.fromPath(params.gtf).map {it -> [[id:it[0].simpleName], it]}.collect()
+ : downloads.gtf.map {it -> [[id:it[0].simpleName], it]}.collect()
+ ch_vep_cache_unprocessed = params.vep_cache ? Channel.fromPath(params.vep_cache)
+ : Channel.empty().mix(downloads.vep_cache)
+ ch_vep_extra_files_unsplit = params.vep_plugin_files ? Channel.fromPath(params.vep_plugin_files)
+ : Channel.empty().mix(downloads.vep_plugin)
+ ch_fai = params.fai ? Channel.fromPath(params.fai).map {it -> [[id:it[0].simpleName], it]}.collect()
+ : Channel.empty()
+ ch_gene_panel_clinical_filter = params.gene_panel_clinical_filter ? Channel.fromPath(params.gene_panel_clinical_filter).collect()
+ : Channel.empty()
+ ch_ref_drop_annot_file = params.reference_drop_annot_file ? Channel.fromPath(params.reference_drop_annot_file).collect()
+ : Channel.empty()
+ ch_ref_drop_count_file = params.reference_drop_count_file ? Channel.fromPath(params.reference_drop_count_file).collect()
+ : Channel.empty()
+ ch_ref_drop_splice_folder = params.reference_drop_splice_folder ? Channel.fromPath(params.reference_drop_splice_folder).collect()
+ : Channel.empty()
+ ch_salmon_index = params.salmon_index ? Channel.fromPath(params.salmon_index)
+ : Channel.empty()
+ ch_star_index = params.star_index ? Channel.fromPath(params.star_index).map {it -> [[id:it[0].simpleName], it]}.collect()
+ : Channel.empty()
+ ch_transcript_fasta = params.transcript_fasta ? Channel.fromPath(params.transcript_fasta)
+ : Channel.empty()
+ ch_sequence_dict = params.sequence_dict ? Channel.fromPath(params.sequence_dict).map{ it -> [[id:it[0].simpleName], it] }.collect()
+ : Channel.empty()
+ ch_subsample_bed = params.subsample_bed ? Channel.fromPath(params.subsample_bed).collect()
+ : Channel.empty()
//
// Create channel from input file provided through params.input
From 40fbd83d3d45d009af01dda1eea44ef9af44fe24 Mon Sep 17 00:00:00 2001
From: Annick Renevey <47788523+rannick@users.noreply.github.com>
Date: Mon, 7 Oct 2024 14:41:49 +0200
Subject: [PATCH 048/887] intermediate state
---
modules/local/fusioncatcher/download/main.nf | 5 +-
modules/local/starfusion/download/main.nf | 2 +-
nextflow.config | 3 +-
subworkflows/local/build_references.nf | 63 ++++---
workflows/rnafusion.nf | 170 +++++++++----------
5 files changed, 121 insertions(+), 122 deletions(-)
diff --git a/modules/local/fusioncatcher/download/main.nf b/modules/local/fusioncatcher/download/main.nf
index aec162882..916b4673a 100644
--- a/modules/local/fusioncatcher/download/main.nf
+++ b/modules/local/fusioncatcher/download/main.nf
@@ -20,9 +20,10 @@ process FUSIONCATCHER_DOWNLOAD {
def args = task.ext.args ?: ''
def args2 = task.ext.args2 ?: ''
- def url =
+ // TODO: move to my sourceforge
+
+ // def url =
"""
- TODO: move to my sourceforge
wget $args http://sourceforge.net/projects/fusioncatcher/files/data/human_${ensembl_version}.tar.gz.aa
wget $args http://sourceforge.net/projects/fusioncatcher/files/data/human_${ensembl_version}.tar.gz.ab
wget $args http://sourceforge.net/projects/fusioncatcher/files/data/human_${ensembl_version}.tar.gz.ac
diff --git a/modules/local/starfusion/download/main.nf b/modules/local/starfusion/download/main.nf
index e3a4b1b85..fedadfa0b 100644
--- a/modules/local/starfusion/download/main.nf
+++ b/modules/local/starfusion/download/main.nf
@@ -9,7 +9,7 @@ process STARFUSION_DOWNLOAD {
path "ctat_genome_lib_build_dir/ref_annot.gtf", emit: chrgtf
- TODO: move to my sourceforge
+ // TODO: move to my sourceforge
script:
"""
wget https://data.broadinstitute.org/Trinity/CTAT_RESOURCE_LIB/__genome_libs_StarFv1.10/GRCh38_gencode_v37_CTAT_lib_Mar012021.plug-n-play.tar.gz --no-check-certificate
diff --git a/nextflow.config b/nextflow.config
index ccaf0348a..db5a3f633 100644
--- a/nextflow.config
+++ b/nextflow.config
@@ -27,7 +27,7 @@ params {
// Genome
genome = 'GRCh38'
genomes_base = "${params.outdir}/references"
- ensembl_version = 111
+ ensembl_version = 112
read_length = 100
starfusion_build = true
genomes = [:]
@@ -72,7 +72,6 @@ params {
fasta = "${params.genomes_base}/ensembl/Homo_sapiens.${params.genome}.${params.ensembl_version}.dna.primary_assembly.fa"
fai = "${params.genomes_base}/ensembl/Homo_sapiens.${params.genome}.${params.ensembl_version}.dna.primary_assembly.fa.fai"
gtf = "${params.genomes_base}/ensembl/Homo_sapiens.${params.genome}.${params.ensembl_version}.gtf"
- chrgtf = "${params.genomes_base}/ensembl/Homo_sapiens.${params.genome}.${params.ensembl_version}.chr.gtf"
refflat = "${params.genomes_base}/ensembl/Homo_sapiens.${params.genome}.${params.ensembl_version}.gtf.refflat"
rrna_intervals = "${params.genomes_base}/ensembl/Homo_sapiens.${params.genome}.${params.ensembl_version}.interval_list"
ensembl_ref = "${params.genomes_base}/ensembl"
diff --git a/subworkflows/local/build_references.nf b/subworkflows/local/build_references.nf
index c7a62033e..cfb4258ba 100644
--- a/subworkflows/local/build_references.nf
+++ b/subworkflows/local/build_references.nf
@@ -42,25 +42,26 @@ workflow BUILD_REFERENCES {
main:
ch_versions = Channel.empty()
-
-
-
-
if (!file(params.fasta).exists() || file(params.fasta).isEmpty() ||
- !file(params.chrgtf).exists() || file(params.chrgtf).isEmpty() ||
!file(params.gtf).exists() || file(params.gtf).isEmpty()){
fake_meta = [:]
fake_meta.id = "Homo_sapiens.${params.genome}.${params.ensembl_version}"
ENSEMBL_DOWNLOAD(params.ensembl_version, params.genome, fake_meta)
+ ch_versions = ENSEMBL_DOWNLOAD.out.versions
ch_fasta = ENSEMBL_DOWNLOAD.out.primary_assembly
- ch_chrgtf = ENSEMBL_DOWNLOAD.out.chrgtf
ch_gtf = ENSEMBL_DOWNLOAD.out.gtf
} else {
ch_fasta = Channel.fromPath(params.fasta).map { that -> [[id:that.Name], that] }
- ch_chrgtf = Channel.fromPath(params.chrgtf).map { that -> [[id:that.Name], that] }
ch_gtf = Channel.fromPath(params.gtf).map { that -> [[id:that.Name], that] }
}
+ if (!file(params.fai).exists() || file(params.fai).isEmpty()){
+ SAMTOOLS_FAIDX(ch_fasta, [[],[]]).fai
+ ch_versions = SAMTOOLS_FAIDX.out.versions
+ ch_fai = SAMTOOLS_FAIDX.out.fai
+ } else {
+ ch_fai = Channel.fromPath(params.fai).map { that -> [[id:that.Name], that] }
+ }
if ((!file(params.hgnc_ref).exists() || file(params.hgnc_ref).isEmpty() ||
!file(params.hgnc_date).exists() || file(params.hgnc_date).isEmpty()) && !params.skip_vcf){
@@ -72,10 +73,6 @@ workflow BUILD_REFERENCES {
ch_hgnc_date = Channel.fromPath(params.hgnc_date).map { that -> [[id:that.Name], that] }
}
-
- ch_fai = (!file(params.fai).exists() || file(params.fai).isEmpty()) ? SAMTOOLS_FAIDX(ch_fasta, [[],[]]).fai : Channel.fromPath(params.fai).map { that -> [[id:that.Name], that] }
-
-
if (!file(params.rrna_intervals).exists() || file(params.rrna_intervals).isEmpty()){
GATK4_CREATESEQUENCEDICTIONARY(ch_fasta)
RRNA_TRANSCRIPTS(ch_gtf)
@@ -86,9 +83,12 @@ workflow BUILD_REFERENCES {
ch_rrna_interval = Channel.fromPath(params.rrna_intervals).map { that -> [[id:that.Name], that] }
}
-
- ch_refflat = (!file(params.refflat).exists() || file(params.refflat).isEmpty()) ? GTF_TO_REFFLAT.refflat : Channel.fromPath(params.refflat)
-
+ if (!file(params.refflat).exists() || file(params.refflat).isEmpty()){
+ GTF_TO_REFFLAT(ch_gtf)
+ ch_refflat = GTF_TO_REFFLAT.out.refflat
+ } else {
+ ch_refflat = Channel.fromPath(params.refflat).map { that -> [[id:that.Name], that] }
+ }
if (!file(params.salmon_index).exists() || file(params.salmon_index).isEmpty() ||
!file(params.salmon_index_stub_check).exists() || file(params.salmon_index_stub_check).isEmpty()){ // add condition for qc
@@ -99,7 +99,6 @@ workflow BUILD_REFERENCES {
ch_salmon_index = Channel.fromPath(params.salmon_index)
}
-
if ((params.starindex || params.all || params.starfusion || params.arriba) &&
(!file(params.starindex_ref).exists() || file(params.starindex_ref).isEmpty() ||
!file(params.starindex_ref_stub_check).exists() || file(params.starindex_ref_stub_check).isEmpty() )) {
@@ -109,18 +108,17 @@ workflow BUILD_REFERENCES {
ch_starindex_ref = Channel.fromPath(params.starindex_ref).map { that -> [[id:that.Name], that] }
}
-
- if ((params.arriba || params.all) &&
- (!file(params.arriba_ref_blacklist).exists() || file(params.arriba_ref_blacklist).isEmpty() ||
- !file(params.arriba_ref_known_fusions).exists() || file(params.arriba_ref_known_fusions).isEmpty() ||
- !file(params.arriba_ref_protein_domains).exists() || file(params.arriba_ref_protein_domains).isEmpty())) {
- ARRIBA_DOWNLOAD()
- ch_arriba_ref_blacklist = Channel.fromPath(params.arriba_ref_blacklist).map { that -> [[id:that.Name], that] }
- ch_arriba_ref_known_fusions = Channel.fromPath(params.arriba_ref_known_fusions).map { that -> [[id:that.Name], that] }
- ch_arriba_ref_protein_domains = Channel.fromPath(params.arriba_ref_protein_domains).map { that -> [[id:that.Name], that] }
- } else {
-// TODO need to update the module to emit blacklist,knownfusions etc
- }
+// if ((params.arriba || params.all) &&
+// (!file(params.arriba_ref_blacklist).exists() || file(params.arriba_ref_blacklist).isEmpty() ||
+// !file(params.arriba_ref_known_fusions).exists() || file(params.arriba_ref_known_fusions).isEmpty() ||
+// !file(params.arriba_ref_protein_domains).exists() || file(params.arriba_ref_protein_domains).isEmpty())) {
+// ARRIBA_DOWNLOAD()
+// ch_arriba_ref_blacklist = Channel.fromPath(params.arriba_ref_blacklist).map { that -> [[id:that.Name], that] }
+// ch_arriba_ref_known_fusions = Channel.fromPath(params.arriba_ref_known_fusions).map { that -> [[id:that.Name], that] }
+// ch_arriba_ref_protein_domains = Channel.fromPath(params.arriba_ref_protein_domains).map { that -> [[id:that.Name], that] }
+// } else {
+// // TODO need to update the module to emit blacklist,knownfusions etc
+// }
if ((params.fusioncatcher || params.all) &&
@@ -159,21 +157,22 @@ workflow BUILD_REFERENCES {
emit:
ch_fasta
- ch_chrgtf
ch_gtf
+ ch_fai
+
ch_hgnc_ref
ch_hgnc_date
- ch_fai
ch_rrna_interval
ch_refflat
ch_salmon_index
ch_starindex_ref
- ch_arriba_ref_blacklist
- ch_arriba_ref_known_fusions
- ch_arriba_ref_protein_domains
+ // ch_arriba_ref_blacklist
+ // ch_arriba_ref_known_fusions
+ // ch_arriba_ref_protein_domains
ch_fusioncatcher_ref
ch_starfusion_ref
ch_fusionreport_ref
+ versions = ch_versions
}
/*
diff --git a/workflows/rnafusion.nf b/workflows/rnafusion.nf
index 368658401..67dedb4b1 100644
--- a/workflows/rnafusion.nf
+++ b/workflows/rnafusion.nf
@@ -68,95 +68,95 @@ workflow RNAFUSION {
BUILD_REFERENCES(params.genome, params.ensembl_version)
ch_versions = ch_versions.mix(BUILD_REFERENCES.out.versions)
- // Optional
- ch_fasta = params.fasta ? Channel.fromPath(params.fasta).map {it -> [[id:it[0].simpleName], it]}.collect()
- : BUILD_REFERENCES.out.fasta.map {it -> [[id:it[0].simpleName], it]}.collect()
- ch_gtf = params.gtf ? Channel.fromPath(params.gtf).map {it -> [[id:it[0].simpleName], it]}.collect()
- : downloads.gtf.map {it -> [[id:it[0].simpleName], it]}.collect()
- ch_vep_cache_unprocessed = params.vep_cache ? Channel.fromPath(params.vep_cache)
- : Channel.empty().mix(downloads.vep_cache)
- ch_vep_extra_files_unsplit = params.vep_plugin_files ? Channel.fromPath(params.vep_plugin_files)
- : Channel.empty().mix(downloads.vep_plugin)
- ch_fai = params.fai ? Channel.fromPath(params.fai).map {it -> [[id:it[0].simpleName], it]}.collect()
- : Channel.empty()
- ch_gene_panel_clinical_filter = params.gene_panel_clinical_filter ? Channel.fromPath(params.gene_panel_clinical_filter).collect()
- : Channel.empty()
- ch_ref_drop_annot_file = params.reference_drop_annot_file ? Channel.fromPath(params.reference_drop_annot_file).collect()
- : Channel.empty()
- ch_ref_drop_count_file = params.reference_drop_count_file ? Channel.fromPath(params.reference_drop_count_file).collect()
- : Channel.empty()
- ch_ref_drop_splice_folder = params.reference_drop_splice_folder ? Channel.fromPath(params.reference_drop_splice_folder).collect()
- : Channel.empty()
- ch_salmon_index = params.salmon_index ? Channel.fromPath(params.salmon_index)
- : Channel.empty()
- ch_star_index = params.star_index ? Channel.fromPath(params.star_index).map {it -> [[id:it[0].simpleName], it]}.collect()
- : Channel.empty()
- ch_transcript_fasta = params.transcript_fasta ? Channel.fromPath(params.transcript_fasta)
- : Channel.empty()
- ch_sequence_dict = params.sequence_dict ? Channel.fromPath(params.sequence_dict).map{ it -> [[id:it[0].simpleName], it] }.collect()
- : Channel.empty()
- ch_subsample_bed = params.subsample_bed ? Channel.fromPath(params.subsample_bed).collect()
- : Channel.empty()
+ // // Optional
+ // ch_fasta = params.fasta ? Channel.fromPath(params.fasta).map {it -> [[id:it[0].simpleName], it]}.collect()
+ // : BUILD_REFERENCES.out.fasta.map {it -> [[id:it[0].simpleName], it]}.collect()
+ // ch_gtf = params.gtf ? Channel.fromPath(params.gtf).map {it -> [[id:it[0].simpleName], it]}.collect()
+ // : downloads.gtf.map {it -> [[id:it[0].simpleName], it]}.collect()
+ // ch_vep_cache_unprocessed = params.vep_cache ? Channel.fromPath(params.vep_cache)
+ // : Channel.empty().mix(downloads.vep_cache)
+ // ch_vep_extra_files_unsplit = params.vep_plugin_files ? Channel.fromPath(params.vep_plugin_files)
+ // : Channel.empty().mix(downloads.vep_plugin)
+ // ch_fai = params.fai ? Channel.fromPath(params.fai).map {it -> [[id:it[0].simpleName], it]}.collect()
+ // : Channel.empty()
+ // ch_gene_panel_clinical_filter = params.gene_panel_clinical_filter ? Channel.fromPath(params.gene_panel_clinical_filter).collect()
+ // : Channel.empty()
+ // ch_ref_drop_annot_file = params.reference_drop_annot_file ? Channel.fromPath(params.reference_drop_annot_file).collect()
+ // : Channel.empty()
+ // ch_ref_drop_count_file = params.reference_drop_count_file ? Channel.fromPath(params.reference_drop_count_file).collect()
+ // : Channel.empty()
+ // ch_ref_drop_splice_folder = params.reference_drop_splice_folder ? Channel.fromPath(params.reference_drop_splice_folder).collect()
+ // : Channel.empty()
+ // ch_salmon_index = params.salmon_index ? Channel.fromPath(params.salmon_index)
+ // : Channel.empty()
+ // ch_star_index = params.star_index ? Channel.fromPath(params.star_index).map {it -> [[id:it[0].simpleName], it]}.collect()
+ // : Channel.empty()
+ // ch_transcript_fasta = params.transcript_fasta ? Channel.fromPath(params.transcript_fasta)
+ // : Channel.empty()
+ // ch_sequence_dict = params.sequence_dict ? Channel.fromPath(params.sequence_dict).map{ it -> [[id:it[0].simpleName], it] }.collect()
+ // : Channel.empty()
+ // ch_subsample_bed = params.subsample_bed ? Channel.fromPath(params.subsample_bed).collect()
+ // : Channel.empty()
//
// Create channel from input file provided through params.input
//
- Channel
- .fromSamplesheet("input")
- .map {
- meta, fastq_1, fastq_2, strandedness ->
- 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
- 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)
-
-
- //
- // QC from FASTQ files
- //
- FASTQC (
- ch_cat_fastq
- )
- ch_multiqc_files = ch_multiqc_files.mix(FASTQC.out.zip.collect{it[1]})
- ch_versions = ch_versions.mix(FASTQC.out.versions)
-
- SALMON_QUANT( ch_reads_all, ch_salmon_index.map{ meta, index -> index }, ch_gtf.map{ meta, gtf -> gtf }, [], false, 'A')
- ch_multiqc_files = ch_multiqc_files.mix(SALMON_QUANT.out.zip.collect{it[1]})
- ch_versions = ch_versions.mix(SALMON_QUANT.out.versions)
-
- //
- // Trimming
- //
- TRIM_WORKFLOW (
- ch_cat_fastq
- )
- ch_reads = TRIM_WORKFLOW.out.trimmed_reads
- ch_versions = ch_versions.mix(TRIM_WORKFLOW.out.versions)
+ // Channel
+ // .fromSamplesheet("input")
+ // .map {
+ // meta, fastq_1, fastq_2, strandedness ->
+ // 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
+ // 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)
+
+
+ // //
+ // // QC from FASTQ files
+ // //
+ // FASTQC (
+ // ch_cat_fastq
+ // )
+ // ch_multiqc_files = ch_multiqc_files.mix(FASTQC.out.zip.collect{it[1]})
+ // ch_versions = ch_versions.mix(FASTQC.out.versions)
+
+ // SALMON_QUANT( ch_reads_all, BUILD_REFERENCES.out.ch_salmon_index.map{ meta, index -> index }, BUILD_REFERENCES.out.ch_gtf.map{ meta, gtf -> gtf }, [], false, 'A')
+ // ch_multiqc_files = ch_multiqc_files.mix(SALMON_QUANT.out.zip.collect{it[1]})
+ // ch_versions = ch_versions.mix(SALMON_QUANT.out.versions)
+
+ // //
+ // // Trimming
+ // //
+ // TRIM_WORKFLOW (
+ // ch_cat_fastq
+ // )
+ // ch_reads = TRIM_WORKFLOW.out.trimmed_reads
+ // ch_versions = ch_versions.mix(TRIM_WORKFLOW.out.versions)
// //
From e5ffe10759df03a754747d7c6b3b51fa3be2aabc Mon Sep 17 00:00:00 2001
From: Annick Renevey <47788523+rannick@users.noreply.github.com>
Date: Mon, 7 Oct 2024 14:43:45 +0200
Subject: [PATCH 049/887] update
---
modules.json | 56 +--
.../nf-core/agat/convertspgff2tsv/meta.yml | 40 ++-
modules/nf-core/arriba/arriba/meta.yml | 187 +++++-----
modules/nf-core/arriba/download/meta.yml | 21 +-
modules/nf-core/bedops/convert2bed/meta.yml | 49 ++-
modules/nf-core/cat/cat/meta.yml | 39 ++-
modules/nf-core/cat/fastq/meta.yml | 43 +--
modules/nf-core/fastp/meta.yml | 138 +++++---
modules/nf-core/fastqc/meta.yml | 57 +--
.../nf-core/gatk4/bedtointervallist/meta.yml | 59 ++--
.../gatk4/createsequencedictionary/meta.yml | 37 +-
.../gatk4/markduplicates/environment.yml | 3 +-
modules/nf-core/gatk4/markduplicates/meta.yml | 121 ++++---
modules/nf-core/gffread/meta.yml | 84 +++--
modules/nf-core/multiqc/environment.yml | 2 +-
modules/nf-core/multiqc/main.nf | 4 +-
modules/nf-core/multiqc/meta.yml | 91 ++---
.../nf-core/multiqc/tests/main.nf.test.snap | 26 +-
.../picard/collectinsertsizemetrics/meta.yml | 59 ++--
.../picard/collectrnaseqmetrics/meta.yml | 75 ++--
.../nf-core/picard/collectwgsmetrics/meta.yml | 97 +++---
modules/nf-core/rrnatranscripts/meta.yml | 25 +-
modules/nf-core/salmon/index/meta.yml | 27 +-
modules/nf-core/salmon/quant/meta.yml | 94 +++--
.../nf-core/samtools/faidx/environment.yml | 7 +-
modules/nf-core/samtools/faidx/main.nf | 4 +-
modules/nf-core/samtools/faidx/meta.yml | 85 +++--
.../samtools/faidx/tests/main.nf.test.snap | 50 +--
.../nf-core/samtools/index/environment.yml | 6 +-
modules/nf-core/samtools/index/main.nf | 4 +-
modules/nf-core/samtools/index/meta.yml | 68 ++--
.../samtools/index/tests/main.nf.test.snap | 46 +--
modules/nf-core/samtools/sort/environment.yml | 6 +-
modules/nf-core/samtools/sort/main.nf | 5 +-
modules/nf-core/samtools/sort/meta.yml | 99 +++---
.../samtools/sort/tests/main.nf.test.snap | 30 +-
modules/nf-core/samtools/view/environment.yml | 6 +-
modules/nf-core/samtools/view/main.nf | 4 +-
modules/nf-core/samtools/view/meta.yml | 163 +++++----
.../samtools/view/tests/main.nf.test.snap | 66 ++--
modules/nf-core/star/align/environment.yml | 5 +-
modules/nf-core/star/align/main.nf | 33 +-
modules/nf-core/star/align/meta.yml | 258 +++++++++-----
.../star/align/tests/main.nf.test.snap | 324 ++++++++++--------
.../star/align/tests/nextflow.arriba.config | 3 -
.../nf-core/star/align/tests/nextflow.config | 3 -
.../align/tests/nextflow.starfusion.config | 3 -
.../star/genomegenerate/environment.yml | 3 +-
modules/nf-core/star/genomegenerate/meta.yml | 57 +--
modules/nf-core/stringtie/merge/meta.yml | 38 +-
modules/nf-core/stringtie/stringtie/meta.yml | 89 +++--
modules/nf-core/ucsc/gtftogenepred/meta.yml | 55 +--
52 files changed, 1723 insertions(+), 1231 deletions(-)
diff --git a/modules.json b/modules.json
index 322f834fa..1a90927b5 100644
--- a/modules.json
+++ b/modules.json
@@ -7,142 +7,142 @@
"nf-core": {
"agat/convertspgff2tsv": {
"branch": "master",
- "git_sha": "06c8865e36741e05ad32ef70ab3fac127486af48",
+ "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1",
"installed_by": ["modules"]
},
"arriba/arriba": {
"branch": "master",
- "git_sha": "06c8865e36741e05ad32ef70ab3fac127486af48",
+ "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1",
"installed_by": ["modules"]
},
"arriba/download": {
"branch": "master",
- "git_sha": "06c8865e36741e05ad32ef70ab3fac127486af48",
+ "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1",
"installed_by": ["modules"]
},
"bedops/convert2bed": {
"branch": "master",
- "git_sha": "06c8865e36741e05ad32ef70ab3fac127486af48",
+ "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1",
"installed_by": ["modules"]
},
"cat/cat": {
"branch": "master",
- "git_sha": "06c8865e36741e05ad32ef70ab3fac127486af48",
+ "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1",
"installed_by": ["modules"]
},
"cat/fastq": {
"branch": "master",
- "git_sha": "06c8865e36741e05ad32ef70ab3fac127486af48",
+ "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1",
"installed_by": ["modules"]
},
"fastp": {
"branch": "master",
- "git_sha": "06c8865e36741e05ad32ef70ab3fac127486af48",
+ "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1",
"installed_by": ["modules"]
},
"fastqc": {
"branch": "master",
- "git_sha": "06c8865e36741e05ad32ef70ab3fac127486af48",
+ "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1",
"installed_by": ["modules"]
},
"gatk4/bedtointervallist": {
"branch": "master",
- "git_sha": "06c8865e36741e05ad32ef70ab3fac127486af48",
+ "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1",
"installed_by": ["modules"]
},
"gatk4/createsequencedictionary": {
"branch": "master",
- "git_sha": "06c8865e36741e05ad32ef70ab3fac127486af48",
+ "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1",
"installed_by": ["modules"]
},
"gatk4/markduplicates": {
"branch": "master",
- "git_sha": "06c8865e36741e05ad32ef70ab3fac127486af48",
+ "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1",
"installed_by": ["modules"]
},
"gffread": {
"branch": "master",
- "git_sha": "06c8865e36741e05ad32ef70ab3fac127486af48",
+ "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1",
"installed_by": ["modules"]
},
"multiqc": {
"branch": "master",
- "git_sha": "7c316cae26baf55e0add993bed2b0c9f7105c653",
+ "git_sha": "b8d36829fa84b6e404364abff787e8b07f6d058c",
"installed_by": ["modules"]
},
"picard/collectinsertsizemetrics": {
"branch": "master",
- "git_sha": "06c8865e36741e05ad32ef70ab3fac127486af48",
+ "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1",
"installed_by": ["modules"]
},
"picard/collectrnaseqmetrics": {
"branch": "master",
- "git_sha": "06c8865e36741e05ad32ef70ab3fac127486af48",
+ "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1",
"installed_by": ["modules"]
},
"picard/collectwgsmetrics": {
"branch": "master",
- "git_sha": "06c8865e36741e05ad32ef70ab3fac127486af48",
+ "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1",
"installed_by": ["modules"]
},
"rrnatranscripts": {
"branch": "master",
- "git_sha": "06c8865e36741e05ad32ef70ab3fac127486af48",
+ "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1",
"installed_by": ["modules"]
},
"salmon/index": {
"branch": "master",
- "git_sha": "06c8865e36741e05ad32ef70ab3fac127486af48",
+ "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1",
"installed_by": ["modules"]
},
"salmon/quant": {
"branch": "master",
- "git_sha": "06c8865e36741e05ad32ef70ab3fac127486af48",
+ "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1",
"installed_by": ["modules"]
},
"samtools/faidx": {
"branch": "master",
- "git_sha": "06c8865e36741e05ad32ef70ab3fac127486af48",
+ "git_sha": "b13f07be4c508d6ff6312d354d09f2493243e208",
"installed_by": ["modules"]
},
"samtools/index": {
"branch": "master",
- "git_sha": "06c8865e36741e05ad32ef70ab3fac127486af48",
+ "git_sha": "b13f07be4c508d6ff6312d354d09f2493243e208",
"installed_by": ["modules"]
},
"samtools/sort": {
"branch": "master",
- "git_sha": "06c8865e36741e05ad32ef70ab3fac127486af48",
+ "git_sha": "b13f07be4c508d6ff6312d354d09f2493243e208",
"installed_by": ["modules"]
},
"samtools/view": {
"branch": "master",
- "git_sha": "06c8865e36741e05ad32ef70ab3fac127486af48",
+ "git_sha": "b13f07be4c508d6ff6312d354d09f2493243e208",
"installed_by": ["modules"]
},
"star/align": {
"branch": "master",
- "git_sha": "06c8865e36741e05ad32ef70ab3fac127486af48",
+ "git_sha": "30a97c755895b7dfe40a730b0695c554a10f1cdd",
"installed_by": ["modules"]
},
"star/genomegenerate": {
"branch": "master",
- "git_sha": "06c8865e36741e05ad32ef70ab3fac127486af48",
+ "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1",
"installed_by": ["modules"]
},
"stringtie/merge": {
"branch": "master",
- "git_sha": "06c8865e36741e05ad32ef70ab3fac127486af48",
+ "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1",
"installed_by": ["modules"]
},
"stringtie/stringtie": {
"branch": "master",
- "git_sha": "06c8865e36741e05ad32ef70ab3fac127486af48",
+ "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1",
"installed_by": ["modules"]
},
"ucsc/gtftogenepred": {
"branch": "master",
- "git_sha": "06c8865e36741e05ad32ef70ab3fac127486af48",
+ "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1",
"installed_by": ["modules"]
}
}
diff --git a/modules/nf-core/agat/convertspgff2tsv/meta.yml b/modules/nf-core/agat/convertspgff2tsv/meta.yml
index 83078787b..31f098683 100644
--- a/modules/nf-core/agat/convertspgff2tsv/meta.yml
+++ b/modules/nf-core/agat/convertspgff2tsv/meta.yml
@@ -9,31 +9,39 @@ keywords:
- tsv
tools:
- agat:
- description: "AGAT is a toolkit for manipulation and getting information from GFF/GTF files"
+ description: "AGAT is a toolkit for manipulation and getting information from
+ GFF/GTF files"
homepage: "https://github.com/NBISweden/AGAT"
documentation: "https://agat.readthedocs.io/"
tool_dev_url: "https://github.com/NBISweden/AGAT"
doi: "10.5281/zenodo.3552717"
licence: ["GPL v3"]
+ identifier: biotools:AGAT
input:
- - meta:
- type: map
- description: |
- Groovy Map containing sample information
- e.g. [ id:'test', single_end:false ]
- - gff:
- type: file
- description: Annotation file in GFF3/GTF format
- pattern: "*.{gff, gtf}"
+ - - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ - gff:
+ type: file
+ description: Annotation file in GFF3/GTF format
+ pattern: "*.{gff, gtf}"
output:
- tsv:
- type: file
- description: Annotation file in TSV format
- pattern: "*.{gtf}"
+ - meta:
+ type: file
+ description: Annotation file in TSV format
+ pattern: "*.{gtf}"
+ - "*.tsv":
+ type: file
+ description: Annotation file in TSV format
+ pattern: "*.{gtf}"
- versions:
- type: file
- description: File containing software versions
- pattern: "versions.yml"
+ - versions.yml:
+ type: file
+ description: File containing software versions
+ pattern: "versions.yml"
authors:
- "@rannick"
maintainers:
diff --git a/modules/nf-core/arriba/arriba/meta.yml b/modules/nf-core/arriba/arriba/meta.yml
index 11f744b54..f230dda1f 100644
--- a/modules/nf-core/arriba/arriba/meta.yml
+++ b/modules/nf-core/arriba/arriba/meta.yml
@@ -1,5 +1,6 @@
name: arriba_arriba
-description: Arriba is a command-line tool for the detection of gene fusions from RNA-Seq data.
+description: Arriba is a command-line tool for the detection of gene fusions from
+ RNA-Seq data.
keywords:
- fusion
- arriba
@@ -13,97 +14,107 @@ tools:
tool_dev_url: https://github.com/suhrig/arriba
doi: "10.1101/gr.257246.119"
licence: ["MIT"]
+ identifier: biotools:Arriba
input:
- - meta:
- type: map
- description: |
- Groovy Map containing sample information
- e.g. [ id:'test', single_end:false ]
- - bam:
- type: file
- description: BAM/CRAM/SAM file
- pattern: "*.{bam,cram,sam}"
- - meta2:
- type: map
- description: |
- Groovy Map containing reference information
- e.g. [ id:'test' ]
- - fasta:
- type: file
- description: Assembly FASTA file
- pattern: "*.{fasta}"
- - meta3:
- type: map
- description: |
- Groovy Map containing reference information
- e.g. [ id:'test' ]
- - gtf:
- type: file
- description: Annotation GTF file
- pattern: "*.{gtf}"
- - meta4:
- type: map
- description: |
- Groovy Map containing reference information
- e.g. [ id:'test' ]
- - blacklist:
- type: file
- description: Blacklist file
- pattern: "*.{tsv}"
- - meta5:
- type: map
- description: |
- Groovy Map containing reference information
- e.g. [ id:'test' ]
- - known_fusions:
- type: file
- description: Known fusions file
- pattern: "*.{tsv}"
- - meta6:
- type: map
- description: |
- Groovy Map containing reference information
- e.g. [ id:'test' ]
- - structural_variants:
- type: file
- description: Structural variants file
- pattern: "*.{tsv}"
- - meta7:
- type: map
- description: |
- Groovy Map containing reference information
- e.g. [ id:'test' ]
- - tags:
- type: file
- description: Tags file
- pattern: "*.{tsv}"
- - meta8:
- type: map
- description: |
- Groovy Map containing reference information
- e.g. [ id:'test' ]
- - protein_domains:
- type: file
- description: Protein domains file
- pattern: "*.{gff3}"
+ - - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ - bam:
+ type: file
+ description: BAM/CRAM/SAM file
+ pattern: "*.{bam,cram,sam}"
+ - - meta2:
+ type: map
+ description: |
+ Groovy Map containing reference information
+ e.g. [ id:'test' ]
+ - fasta:
+ type: file
+ description: Assembly FASTA file
+ pattern: "*.{fasta}"
+ - - meta3:
+ type: map
+ description: |
+ Groovy Map containing reference information
+ e.g. [ id:'test' ]
+ - gtf:
+ type: file
+ description: Annotation GTF file
+ pattern: "*.{gtf}"
+ - - meta4:
+ type: map
+ description: |
+ Groovy Map containing reference information
+ e.g. [ id:'test' ]
+ - blacklist:
+ type: file
+ description: Blacklist file
+ pattern: "*.{tsv}"
+ - - meta5:
+ type: map
+ description: |
+ Groovy Map containing reference information
+ e.g. [ id:'test' ]
+ - known_fusions:
+ type: file
+ description: Known fusions file
+ pattern: "*.{tsv}"
+ - - meta6:
+ type: map
+ description: |
+ Groovy Map containing reference information
+ e.g. [ id:'test' ]
+ - structural_variants:
+ type: file
+ description: Structural variants file
+ pattern: "*.{tsv}"
+ - - meta7:
+ type: map
+ description: |
+ Groovy Map containing reference information
+ e.g. [ id:'test' ]
+ - tags:
+ type: file
+ description: Tags file
+ pattern: "*.{tsv}"
+ - - meta8:
+ type: map
+ description: |
+ Groovy Map containing reference information
+ e.g. [ id:'test' ]
+ - protein_domains:
+ type: file
+ description: Protein domains file
+ pattern: "*.{gff3}"
output:
- - meta:
- type: map
- description: |
- Groovy Map containing sample information
- e.g. [ id:'test', single_end:false ]
- - versions:
- type: file
- description: File containing software versions
- pattern: "versions.yml"
- fusions:
- type: file
- description: File contains fusions which pass all of Arriba's filters.
- pattern: "*.{fusions.tsv}"
+ - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ - "*.fusions.tsv":
+ type: file
+ description: File contains fusions which pass all of Arriba's filters.
+ pattern: "*.{fusions.tsv}"
- fusions_fail:
- type: file
- description: File contains fusions that Arriba classified as an artifact or that are also observed in healthy tissue.
- pattern: "*.{fusions.discarded.tsv}"
+ - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ - "*.fusions.discarded.tsv":
+ type: file
+ description: File contains fusions that Arriba classified as an artifact or
+ that are also observed in healthy tissue.
+ pattern: "*.{fusions.discarded.tsv}"
+ - versions:
+ - versions.yml:
+ type: file
+ description: File containing software versions
+ pattern: "versions.yml"
authors:
- "@praveenraj2018"
- "@rannick"
diff --git a/modules/nf-core/arriba/download/meta.yml b/modules/nf-core/arriba/download/meta.yml
index d32106163..531c66c2f 100644
--- a/modules/nf-core/arriba/download/meta.yml
+++ b/modules/nf-core/arriba/download/meta.yml
@@ -1,5 +1,6 @@
name: arriba_download
-description: Arriba is a command-line tool for the detection of gene fusions from RNA-Seq data.
+description: Arriba is a command-line tool for the detection of gene fusions from
+ RNA-Seq data.
keywords:
- fusion
- arriba
@@ -12,16 +13,18 @@ tools:
tool_dev_url: https://github.com/suhrig/arriba
doi: "10.1101/gr.257246.119"
licence: ["MIT"]
+ identifier: biotools:Arriba
output:
- - versions:
- type: file
- description: File containing software versions
- pattern: "versions.yml"
- reference:
- type: directory
- description: Folder with arriba references
- pattern: "*"
-
+ - "*":
+ type: directory
+ description: Folder with arriba references
+ pattern: "*"
+ - versions:
+ - versions.yml:
+ type: file
+ description: File containing software versions
+ pattern: "versions.yml"
authors:
- "@peterpru"
diff --git a/modules/nf-core/bedops/convert2bed/meta.yml b/modules/nf-core/bedops/convert2bed/meta.yml
index eea919650..6d84c0316 100644
--- a/modules/nf-core/bedops/convert2bed/meta.yml
+++ b/modules/nf-core/bedops/convert2bed/meta.yml
@@ -12,36 +12,33 @@ tools:
tool_dev_url: "https://github.com/bedops"
doi: "10.1093/bioinformatics/bts277"
licence: ["GNU v2"]
+ identifier: biotools:bedops
input:
- - meta:
- type: map
- description: |
- Groovy Map containing sample information
- e.g. `[ id:'sample1', single_end:false ]`
-
- - input:
- type: file
- description: Sorted BAM/GFF/GTF/GVF/PSL file
- pattern: "*.{bam,gff,gtf,gvf,psl}"
-
+ - - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. `[ id:'sample1', single_end:false ]`
+ - in_file:
+ type: file
+ description: Input file
output:
- - meta:
- type: map
- description: |
- Groovy Map containing sample information
- e.g. `[ id:'sample1', single_end:false ]`
-
- - versions:
- type: file
- description: File containing software versions
- pattern: "versions.yml"
-
- bed:
- type: file
- description: Sorted BED file
- pattern: "*.{bed}"
-
+ - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. `[ id:'sample1', single_end:false ]`
+ - "*.bed":
+ type: file
+ description: Sorted BED file
+ pattern: "*.{bed}"
+ - versions:
+ - versions.yml:
+ type: file
+ description: File containing software versions
+ pattern: "versions.yml"
authors:
- "@rannick"
maintainers:
diff --git a/modules/nf-core/cat/cat/meta.yml b/modules/nf-core/cat/cat/meta.yml
index 00a8db0bc..81778a067 100644
--- a/modules/nf-core/cat/cat/meta.yml
+++ b/modules/nf-core/cat/cat/meta.yml
@@ -9,25 +9,32 @@ tools:
description: Just concatenation
documentation: https://man7.org/linux/man-pages/man1/cat.1.html
licence: ["GPL-3.0-or-later"]
+ identifier: ""
input:
- - meta:
- type: map
- description: |
- Groovy Map containing sample information
- e.g. [ id:'test', single_end:false ]
- - files_in:
- type: file
- description: List of compressed / uncompressed files
- pattern: "*"
+ - - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ - files_in:
+ type: file
+ description: List of compressed / uncompressed files
+ pattern: "*"
output:
- - versions:
- type: file
- description: File containing software versions
- pattern: "versions.yml"
- file_out:
- type: file
- description: Concatenated file. Will be gzipped if file_out ends with ".gz"
- pattern: "${file_out}"
+ - meta:
+ type: file
+ description: Concatenated file. Will be gzipped if file_out ends with ".gz"
+ pattern: "${file_out}"
+ - ${prefix}:
+ type: file
+ description: Concatenated file. Will be gzipped if file_out ends with ".gz"
+ pattern: "${file_out}"
+ - versions:
+ - versions.yml:
+ type: file
+ description: File containing software versions
+ pattern: "versions.yml"
authors:
- "@erikrikarddaniel"
- "@FriederikeHanssen"
diff --git a/modules/nf-core/cat/fastq/meta.yml b/modules/nf-core/cat/fastq/meta.yml
index db4ac3c79..91ff2fb5f 100644
--- a/modules/nf-core/cat/fastq/meta.yml
+++ b/modules/nf-core/cat/fastq/meta.yml
@@ -10,30 +10,33 @@ tools:
The cat utility reads files sequentially, writing them to the standard output.
documentation: https://www.gnu.org/software/coreutils/manual/html_node/cat-invocation.html
licence: ["GPL-3.0-or-later"]
+ identifier: ""
input:
- - meta:
- type: map
- description: |
- Groovy Map containing sample information
- e.g. [ id:'test', single_end:false ]
- - reads:
- type: file
- description: |
- List of input FastQ files to be concatenated.
+ - - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ - reads:
+ type: file
+ description: |
+ List of input FastQ files to be concatenated.
output:
- - meta:
- type: map
- description: |
- Groovy Map containing sample information
- e.g. [ id:'test', single_end:false ]
- reads:
- type: file
- description: Merged fastq file
- pattern: "*.{merged.fastq.gz}"
+ - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ - "*.merged.fastq.gz":
+ type: file
+ description: Merged fastq file
+ pattern: "*.{merged.fastq.gz}"
- versions:
- type: file
- description: File containing software versions
- pattern: "versions.yml"
+ - versions.yml:
+ type: file
+ description: File containing software versions
+ pattern: "versions.yml"
authors:
- "@joseespinosa"
- "@drpatelh"
diff --git a/modules/nf-core/fastp/meta.yml b/modules/nf-core/fastp/meta.yml
index 8dfecc184..159404d08 100644
--- a/modules/nf-core/fastp/meta.yml
+++ b/modules/nf-core/fastp/meta.yml
@@ -11,66 +11,100 @@ tools:
documentation: https://github.com/OpenGene/fastp
doi: 10.1093/bioinformatics/bty560
licence: ["MIT"]
+ identifier: biotools:fastp
input:
- - meta:
- type: map
- description: |
- Groovy Map containing sample information. Use 'single_end: true' to specify single ended or interleaved FASTQs. Use 'single_end: false' for paired-end reads.
- e.g. [ id:'test', single_end:false ]
- - reads:
- type: file
- description: |
- List of input FastQ files of size 1 and 2 for single-end and paired-end data,
- respectively. If you wish to run interleaved paired-end data, supply as single-end data
- but with `--interleaved_in` in your `modules.conf`'s `ext.args` for the module.
- - adapter_fasta:
- 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 a file ending in `*.merged.fastq.gz`
+ - - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information. Use 'single_end: true' to specify single ended or interleaved FASTQs. Use 'single_end: false' for paired-end reads.
+ e.g. [ id:'test', single_end:false ]
+ - reads:
+ type: file
+ description: |
+ List of input FastQ files of size 1 and 2 for single-end and paired-end data,
+ respectively. If you wish to run interleaved paired-end data, supply as single-end data
+ but with `--interleaved_in` in your `modules.conf`'s `ext.args` for the module.
+ - - adapter_fasta:
+ 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 a file ending in `*.merged.fastq.gz`
output:
- - meta:
- type: map
- description: |
- Groovy Map containing sample information
- e.g. [ id:'test', single_end:false ]
- reads:
- type: file
- description: The trimmed/modified/unmerged fastq reads
- pattern: "*fastp.fastq.gz"
+ - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ - "*.fastp.fastq.gz":
+ type: file
+ description: The trimmed/modified/unmerged fastq reads
+ pattern: "*fastp.fastq.gz"
- json:
- type: file
- description: Results in JSON format
- pattern: "*.json"
+ - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ - "*.json":
+ type: file
+ description: Results in JSON format
+ pattern: "*.json"
- html:
- type: file
- description: Results in HTML format
- pattern: "*.html"
+ - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ - "*.html":
+ type: file
+ description: Results in HTML format
+ pattern: "*.html"
- log:
- type: file
- description: fastq log file
- pattern: "*.log"
- - versions:
- type: file
- description: File containing software versions
- pattern: "versions.yml"
+ - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ - "*.log":
+ type: file
+ description: fastq log file
+ pattern: "*.log"
- reads_fail:
- type: file
- description: Reads the failed the preprocessing
- pattern: "*fail.fastq.gz"
+ - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ - "*.fail.fastq.gz":
+ type: file
+ description: Reads the failed the preprocessing
+ pattern: "*fail.fastq.gz"
- reads_merged:
- type: file
- description: Reads that were successfully merged
- pattern: "*.{merged.fastq.gz}"
+ - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ - "*.merged.fastq.gz":
+ type: file
+ description: Reads that were successfully merged
+ pattern: "*.{merged.fastq.gz}"
+ - versions:
+ - versions.yml:
+ type: file
+ description: File containing software versions
+ pattern: "versions.yml"
authors:
- "@drpatelh"
- "@kevinmenden"
diff --git a/modules/nf-core/fastqc/meta.yml b/modules/nf-core/fastqc/meta.yml
index ee5507e06..4827da7af 100644
--- a/modules/nf-core/fastqc/meta.yml
+++ b/modules/nf-core/fastqc/meta.yml
@@ -16,35 +16,44 @@ tools:
homepage: https://www.bioinformatics.babraham.ac.uk/projects/fastqc/
documentation: https://www.bioinformatics.babraham.ac.uk/projects/fastqc/Help/
licence: ["GPL-2.0-only"]
+ identifier: biotools:fastqc
input:
- - meta:
- type: map
- description: |
- Groovy Map containing sample information
- e.g. [ id:'test', single_end:false ]
- - reads:
- type: file
- description: |
- List of input FastQ files of size 1 and 2 for single-end and paired-end data,
- respectively.
+ - - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ - reads:
+ type: file
+ description: |
+ List of input FastQ files of size 1 and 2 for single-end and paired-end data,
+ respectively.
output:
- - meta:
- type: map
- description: |
- Groovy Map containing sample information
- e.g. [ id:'test', single_end:false ]
- html:
- type: file
- description: FastQC report
- pattern: "*_{fastqc.html}"
+ - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ - "*.html":
+ type: file
+ description: FastQC report
+ pattern: "*_{fastqc.html}"
- zip:
- type: file
- description: FastQC report archive
- pattern: "*_{fastqc.zip}"
+ - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ - "*.zip":
+ type: file
+ description: FastQC report archive
+ pattern: "*_{fastqc.zip}"
- versions:
- type: file
- description: File containing software versions
- pattern: "versions.yml"
+ - versions.yml:
+ type: file
+ description: File containing software versions
+ pattern: "versions.yml"
authors:
- "@drpatelh"
- "@grst"
diff --git a/modules/nf-core/gatk4/bedtointervallist/meta.yml b/modules/nf-core/gatk4/bedtointervallist/meta.yml
index 187da8850..25348e162 100644
--- a/modules/nf-core/gatk4/bedtointervallist/meta.yml
+++ b/modules/nf-core/gatk4/bedtointervallist/meta.yml
@@ -15,34 +15,45 @@ tools:
documentation: https://gatk.broadinstitute.org/hc/en-us/categories/360002369672s
doi: 10.1158/1538-7445.AM2017-3590
licence: ["Apache-2.0"]
+ identifier: ""
input:
- - meta:
- type: map
- description: |
- Groovy Map containing sample information
- e.g. [ id:'test']
- - bed:
- type: file
- description: Input bed file
- pattern: "*.bed"
- - meta2:
- type: map
- description: |
- Groovy Map containing reference information
- e.g. [ id:'genome' ]
- - dict:
- type: file
- description: Sequence dictionary
- pattern: "*.dict"
+ - - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test']
+ - bed:
+ type: file
+ description: Input bed file
+ pattern: "*.bed"
+ - - meta2:
+ type: map
+ description: |
+ Groovy Map containing reference information
+ e.g. [ id:'genome' ]
+ - dict:
+ type: file
+ description: Sequence dictionary
+ pattern: "*.dict"
output:
- interval_list:
- type: file
- description: gatk interval list file
- pattern: "*.interval_list"
+ - meta:
+ type: file
+ description: gatk interval list file
+ pattern: "*.interval_list"
+ - "*.interval_list":
+ type: file
+ description: gatk interval list file
+ pattern: "*.interval_list"
+ - _list:
+ type: file
+ description: gatk interval list file
+ pattern: "*.interval_list"
- versions:
- type: file
- description: File containing software versions
- pattern: "versions.yml"
+ - versions.yml:
+ type: file
+ description: File containing software versions
+ pattern: "versions.yml"
authors:
- "@kevinmenden"
- "@ramprasadn"
diff --git a/modules/nf-core/gatk4/createsequencedictionary/meta.yml b/modules/nf-core/gatk4/createsequencedictionary/meta.yml
index f9d70be09..7b5156bb3 100644
--- a/modules/nf-core/gatk4/createsequencedictionary/meta.yml
+++ b/modules/nf-core/gatk4/createsequencedictionary/meta.yml
@@ -15,25 +15,32 @@ tools:
documentation: https://gatk.broadinstitute.org/hc/en-us/categories/360002369672s
doi: 10.1158/1538-7445.AM2017-3590
licence: ["Apache-2.0"]
+ identifier: ""
input:
- - meta:
- type: map
- description: |
- Groovy Map containing reference information
- e.g. [ id:'genome' ]
- - fasta:
- type: file
- description: Input fasta file
- pattern: "*.{fasta,fa}"
+ - - meta:
+ type: map
+ description: |
+ Groovy Map containing reference information
+ e.g. [ id:'genome' ]
+ - fasta:
+ type: file
+ description: Input fasta file
+ pattern: "*.{fasta,fa}"
output:
- dict:
- type: file
- description: gatk dictionary file
- pattern: "*.{dict}"
+ - meta:
+ type: file
+ description: gatk dictionary file
+ pattern: "*.{dict}"
+ - "*.dict":
+ type: file
+ description: gatk dictionary file
+ pattern: "*.{dict}"
- versions:
- type: file
- description: File containing software versions
- pattern: "versions.yml"
+ - versions.yml:
+ type: file
+ description: File containing software versions
+ pattern: "versions.yml"
authors:
- "@maxulysse"
- "@ramprasadn"
diff --git a/modules/nf-core/gatk4/markduplicates/environment.yml b/modules/nf-core/gatk4/markduplicates/environment.yml
index 9fe34eb36..3c73c17e4 100644
--- a/modules/nf-core/gatk4/markduplicates/environment.yml
+++ b/modules/nf-core/gatk4/markduplicates/environment.yml
@@ -1,7 +1,8 @@
channels:
- conda-forge
- bioconda
+
dependencies:
- bioconda::gatk4=4.5.0.0
- - bioconda::samtools=1.19.2
- bioconda::htslib=1.19.1
+ - bioconda::samtools=1.19.2
diff --git a/modules/nf-core/gatk4/markduplicates/meta.yml b/modules/nf-core/gatk4/markduplicates/meta.yml
index b0f09d4b8..4772c5f39 100644
--- a/modules/nf-core/gatk4/markduplicates/meta.yml
+++ b/modules/nf-core/gatk4/markduplicates/meta.yml
@@ -1,5 +1,6 @@
name: gatk4_markduplicates
-description: This tool locates and tags duplicate reads in a BAM or SAM file, where duplicate reads are defined as originating from a single fragment of DNA.
+description: This tool locates and tags duplicate reads in a BAM or SAM file, where
+ duplicate reads are defined as originating from a single fragment of DNA.
keywords:
- bam
- gatk4
@@ -7,60 +8,90 @@ keywords:
- sort
tools:
- gatk4:
- description: Developed in the Data Sciences Platform at the Broad Institute, the toolkit offers a wide variety of tools with a primary focus on variant discovery and genotyping. Its powerful processing engine and high-performance computing features make it capable of taking on projects of any size.
+ description: Developed in the Data Sciences Platform at the Broad Institute, the
+ toolkit offers a wide variety of tools with a primary focus on variant discovery
+ and genotyping. Its powerful processing engine and high-performance computing
+ features make it capable of taking on projects of any size.
homepage: https://gatk.broadinstitute.org/hc/en-us
documentation: https://gatk.broadinstitute.org/hc/en-us/articles/360037052812-MarkDuplicates-Picard-
tool_dev_url: https://github.com/broadinstitute/gatk
doi: 10.1158/1538-7445.AM2017-3590
licence: ["MIT"]
+ identifier: ""
input:
- - meta:
- type: map
- description: |
- Groovy Map containing sample information
- e.g. [ id:'test', single_end:false ]
- - bam:
- type: file
- description: Sorted BAM file
- pattern: "*.{bam}"
- - fasta:
- type: file
- description: Fasta file
- pattern: "*.{fasta}"
- - fasta_fai:
- type: file
- description: Fasta index file
- pattern: "*.{fai}"
+ - - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ - bam:
+ type: file
+ description: Sorted BAM file
+ pattern: "*.{bam}"
+ - - fasta:
+ type: file
+ description: Fasta file
+ pattern: "*.{fasta}"
+ - - fasta_fai:
+ type: file
+ description: Fasta index file
+ pattern: "*.{fai}"
output:
- - meta:
- type: map
- description: |
- Groovy Map containing sample information
- e.g. [ id:'test', single_end:false ]
- - versions:
- type: file
- description: File containing software versions
- pattern: "versions.yml"
- - bam:
- type: file
- description: Marked duplicates BAM file
- pattern: "*.{bam}"
- cram:
- type: file
- description: Marked duplicates CRAM file
- pattern: "*.{cram}"
- - bai:
- type: file
- description: BAM index file
- pattern: "*.{bam.bai}"
+ - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ - "*cram":
+ type: file
+ description: Marked duplicates CRAM file
+ pattern: "*.{cram}"
+ - bam:
+ - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ - "*bam":
+ type: file
+ description: Marked duplicates BAM file
+ pattern: "*.{bam}"
- crai:
- type: file
- description: CRAM index file
- pattern: "*.{cram.crai}"
+ - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ - "*.crai":
+ type: file
+ description: CRAM index file
+ pattern: "*.{cram.crai}"
+ - bai:
+ - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ - "*.bai":
+ type: file
+ description: BAM index file
+ pattern: "*.{bam.bai}"
- metrics:
- type: file
- description: Duplicate metrics file generated by GATK
- pattern: "*.{metrics.txt}"
+ - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ - "*.metrics":
+ type: file
+ description: Duplicate metrics file generated by GATK
+ pattern: "*.{metrics.txt}"
+ - versions:
+ - versions.yml:
+ type: file
+ description: File containing software versions
+ pattern: "versions.yml"
authors:
- "@ajodeh-juma"
- "@FriederikeHanssen"
diff --git a/modules/nf-core/gffread/meta.yml b/modules/nf-core/gffread/meta.yml
index c06028208..bebe7f575 100644
--- a/modules/nf-core/gffread/meta.yml
+++ b/modules/nf-core/gffread/meta.yml
@@ -1,53 +1,73 @@
name: gffread
-description: Validate, filter, convert and perform various other operations on GFF files
+description: Validate, filter, convert and perform various other operations on GFF
+ files
keywords:
- gff
- conversion
- validation
tools:
- gffread:
- description: GFF/GTF utility providing format conversions, region filtering, FASTA sequence extraction and more.
+ description: GFF/GTF utility providing format conversions, region filtering, FASTA
+ sequence extraction and more.
homepage: http://ccb.jhu.edu/software/stringtie/gff.shtml#gffread
documentation: http://ccb.jhu.edu/software/stringtie/gff.shtml#gffread
tool_dev_url: https://github.com/gpertea/gffread
doi: 10.12688/f1000research.23297.1
licence: ["MIT"]
+ identifier: biotools:gffread
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}"
+ - - 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
- pattern: "*.{gtf}"
+ - 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
+ 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"
+ - meta:
+ type: map
+ description: |
+ Groovy Map containing meta data
+ e.g. [ id:'test' ]
+ - "*.gff3":
+ type: file
+ description: GFF3 file resulting from the conversion of the GFF input file if
+ '-T' argument is absent
+ pattern: "*.gff3"
- gffread_fasta:
- type: file
- description: Fasta file produced when either of '-w', '-x', '-y' parameters is present
- pattern: "*.fasta"
+ - meta:
+ type: map
+ description: |
+ Groovy Map containing meta data
+ e.g. [ id:'test' ]
+ - "*.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
- pattern: "versions.yml"
+ - versions.yml:
+ type: file
+ description: File containing software versions
+ pattern: "versions.yml"
authors:
- "@edmundmiller"
maintainers:
diff --git a/modules/nf-core/multiqc/environment.yml b/modules/nf-core/multiqc/environment.yml
index 0fe126444..6f5b867b7 100644
--- a/modules/nf-core/multiqc/environment.yml
+++ b/modules/nf-core/multiqc/environment.yml
@@ -2,4 +2,4 @@ channels:
- conda-forge
- bioconda
dependencies:
- - bioconda::multiqc=1.25
+ - bioconda::multiqc=1.25.1
diff --git a/modules/nf-core/multiqc/main.nf b/modules/nf-core/multiqc/main.nf
index b9ccebdbb..9724d2f34 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.25--pyhdfd78af_0' :
- 'biocontainers/multiqc:1.25--pyhdfd78af_0' }"
+ 'https://depot.galaxyproject.org/singularity/multiqc:1.25.1--pyhdfd78af_0' :
+ 'biocontainers/multiqc:1.25.1--pyhdfd78af_0' }"
input:
path multiqc_files, stageAs: "?/*"
diff --git a/modules/nf-core/multiqc/meta.yml b/modules/nf-core/multiqc/meta.yml
index 382c08cbc..b16c18792 100644
--- a/modules/nf-core/multiqc/meta.yml
+++ b/modules/nf-core/multiqc/meta.yml
@@ -1,5 +1,6 @@
name: multiqc
-description: Aggregate results from bioinformatics analyses across many samples into a single report
+description: Aggregate results from bioinformatics analyses across many samples into
+ a single report
keywords:
- QC
- bioinformatics tools
@@ -12,53 +13,59 @@ tools:
homepage: https://multiqc.info/
documentation: https://multiqc.info/docs/
licence: ["GPL-3.0-or-later"]
+ identifier: biotools:multiqc
input:
- - multiqc_files:
- type: file
- description: |
- List of reports / files recognised by MultiQC, for example the html and zip output of FastQC
- - multiqc_config:
- type: file
- description: Optional config yml for MultiQC
- pattern: "*.{yml,yaml}"
- - extra_multiqc_config:
- type: file
- description: Second optional config yml for MultiQC. Will override common sections in multiqc_config.
- pattern: "*.{yml,yaml}"
- - multiqc_logo:
- type: file
- description: Optional logo file for MultiQC
- pattern: "*.{png}"
- - replace_names:
- type: file
- description: |
- Optional two-column sample renaming file. First column a set of
- patterns, second column a set of corresponding replacements. Passed via
- MultiQC's `--replace-names` option.
- pattern: "*.{tsv}"
- - sample_names:
- type: file
- description: |
- Optional TSV file with headers, passed to the MultiQC --sample_names
- argument.
- pattern: "*.{tsv}"
+ - - multiqc_files:
+ type: file
+ description: |
+ List of reports / files recognised by MultiQC, for example the html and zip output of FastQC
+ - - multiqc_config:
+ type: file
+ description: Optional config yml for MultiQC
+ pattern: "*.{yml,yaml}"
+ - - extra_multiqc_config:
+ type: file
+ description: Second optional config yml for MultiQC. Will override common sections
+ in multiqc_config.
+ pattern: "*.{yml,yaml}"
+ - - multiqc_logo:
+ type: file
+ description: Optional logo file for MultiQC
+ pattern: "*.{png}"
+ - - replace_names:
+ type: file
+ description: |
+ Optional two-column sample renaming file. First column a set of
+ patterns, second column a set of corresponding replacements. Passed via
+ MultiQC's `--replace-names` option.
+ pattern: "*.{tsv}"
+ - - sample_names:
+ type: file
+ description: |
+ Optional TSV file with headers, passed to the MultiQC --sample_names
+ argument.
+ pattern: "*.{tsv}"
output:
- report:
- type: file
- description: MultiQC report file
- pattern: "multiqc_report.html"
+ - "*multiqc_report.html":
+ type: file
+ description: MultiQC report file
+ pattern: "multiqc_report.html"
- data:
- type: directory
- description: MultiQC data dir
- pattern: "multiqc_data"
+ - "*_data":
+ type: directory
+ description: MultiQC data dir
+ pattern: "multiqc_data"
- plots:
- type: file
- description: Plots created by MultiQC
- pattern: "*_data"
+ - "*_plots":
+ type: file
+ description: Plots created by MultiQC
+ pattern: "*_data"
- versions:
- type: file
- description: File containing software versions
- pattern: "versions.yml"
+ - versions.yml:
+ type: file
+ description: File containing software versions
+ pattern: "versions.yml"
authors:
- "@abhi18av"
- "@bunop"
diff --git a/modules/nf-core/multiqc/tests/main.nf.test.snap b/modules/nf-core/multiqc/tests/main.nf.test.snap
index b779e4692..2fcbb5ff7 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,8c8724363a5efe0c6f43ab34faa57efd"
+ "versions.yml:md5,41f391dcedce7f93ca188f3a3ffa0916"
]
],
"meta": {
- "nf-test": "0.8.4",
- "nextflow": "24.04.2"
+ "nf-test": "0.9.0",
+ "nextflow": "24.04.4"
},
- "timestamp": "2024-07-10T12:41:34.562023"
+ "timestamp": "2024-10-02T17:51:46.317523"
},
"multiqc_stub": {
"content": [
@@ -17,25 +17,25 @@
"multiqc_report.html",
"multiqc_data",
"multiqc_plots",
- "versions.yml:md5,8c8724363a5efe0c6f43ab34faa57efd"
+ "versions.yml:md5,41f391dcedce7f93ca188f3a3ffa0916"
]
],
"meta": {
- "nf-test": "0.8.4",
- "nextflow": "24.04.2"
+ "nf-test": "0.9.0",
+ "nextflow": "24.04.4"
},
- "timestamp": "2024-07-10T11:27:11.933869532"
+ "timestamp": "2024-10-02T17:52:20.680978"
},
"multiqc_versions_config": {
"content": [
[
- "versions.yml:md5,8c8724363a5efe0c6f43ab34faa57efd"
+ "versions.yml:md5,41f391dcedce7f93ca188f3a3ffa0916"
]
],
"meta": {
- "nf-test": "0.8.4",
- "nextflow": "24.04.2"
+ "nf-test": "0.9.0",
+ "nextflow": "24.04.4"
},
- "timestamp": "2024-07-10T11:26:56.709849369"
+ "timestamp": "2024-10-02T17:52:09.185842"
}
-}
+}
\ No newline at end of file
diff --git a/modules/nf-core/picard/collectinsertsizemetrics/meta.yml b/modules/nf-core/picard/collectinsertsizemetrics/meta.yml
index e2749cb62..0947048dc 100644
--- a/modules/nf-core/picard/collectinsertsizemetrics/meta.yml
+++ b/modules/nf-core/picard/collectinsertsizemetrics/meta.yml
@@ -13,34 +13,43 @@ tools:
documentation: "https://broadinstitute.github.io/picard/"
tool_dev_url: "https://github.com/broadinstitute/picard"
licence: ["MIT"]
+ identifier: biotools:picard_tools
input:
- - meta:
- type: map
- description: |
- Groovy Map containing sample information
- e.g. [ id:'test', single_end:false ]
- - bam:
- type: file
- description: BAM/CRAM/SAM file
- pattern: "*.{bam,cram,sam}"
+ - - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ - bam:
+ type: file
+ description: BAM/CRAM/SAM file
+ pattern: "*.{bam,cram,sam}"
output:
- - meta:
- type: map
- description: |
- Groovy Map containing sample information
- e.g. [ id:'test', single_end:false ]
- - versions:
- type: file
- description: File containing software versions
- pattern: "versions.yml"
- - pdf:
- type: file
- description: Histogram plots of the insert size metrics computed by Picard
- pattern: "*.pdf"
- metrics:
- type: file
- description: Values used by Picard to generate the insert size histograms
- pattern: "*.txt"
+ - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ - "*.txt":
+ type: file
+ description: Values used by Picard to generate the insert size histograms
+ pattern: "*.txt"
+ - histogram:
+ - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ - "*.pdf":
+ type: file
+ description: Insert size histogram in PDF format
+ pattern: "*.pdf"
+ - versions:
+ - versions.yml:
+ type: file
+ description: File containing software versions
+ pattern: "versions.yml"
authors:
- "@FerriolCalvet"
maintainers:
diff --git a/modules/nf-core/picard/collectrnaseqmetrics/meta.yml b/modules/nf-core/picard/collectrnaseqmetrics/meta.yml
index 8a7bd2346..15d146baa 100644
--- a/modules/nf-core/picard/collectrnaseqmetrics/meta.yml
+++ b/modules/nf-core/picard/collectrnaseqmetrics/meta.yml
@@ -16,45 +16,52 @@ tools:
documentation: "https://broadinstitute.github.io/picard/"
tool_dev_url: "https://github.com/broadinstitute/picard"
licence: ["MIT"]
+ identifier: biotools:picard_tools
input:
- - meta:
- type: map
- description: |
- Groovy Map containing sample information
- e.g. [ id:'test', single_end:false, strandedness:true ]
- - bam:
- type: file
- description: BAM/SAM file
- pattern: "*.{bam,sam}"
- - ref_flat:
- type: file
- description: Genome ref_flat file
- - gene_pred:
- type: file
- description: genome gene_pred file as an alternative to the ref_flat file
- - fasta:
- type: file
- description: Genome fasta file
- - rrna_intervals:
- type: file
- description: Interval file of ribosomal RNA regions
+ - - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false, strandedness:true ]
+ - bam:
+ type: file
+ description: BAM/SAM file
+ pattern: "*.{bam,sam}"
+ - - ref_flat:
+ type: file
+ description: Genome ref_flat file
+ - - fasta:
+ type: file
+ description: Genome fasta file
+ - - rrna_intervals:
+ type: file
+ description: Interval file of ribosomal RNA regions
output:
- - meta:
- type: map
- description: |
- Groovy Map containing sample information
- e.g. [ id:'test', single_end:false ]
- metrics:
- type: file
- description: RNA alignment metrics files generated by picard
- pattern: "*.rna_metrics"
+ - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ - "*.rna_metrics":
+ type: file
+ description: RNA alignment metrics files generated by picard
+ pattern: "*.rna_metrics"
- pdf:
- type: file
- description: Plot normalized position vs. coverage in a pdf file generated by picard
+ - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ - "*.pdf":
+ type: file
+ description: Plot normalized position vs. coverage in a pdf file generated by
+ picard
- versions:
- type: file
- description: File containing software versions
- pattern: "versions.yml"
+ - versions.yml:
+ type: file
+ description: File containing software versions
+ pattern: "versions.yml"
authors:
- "@anoronh4"
maintainers:
diff --git a/modules/nf-core/picard/collectwgsmetrics/meta.yml b/modules/nf-core/picard/collectwgsmetrics/meta.yml
index 5576ef928..bb7480809 100644
--- a/modules/nf-core/picard/collectwgsmetrics/meta.yml
+++ b/modules/nf-core/picard/collectwgsmetrics/meta.yml
@@ -1,5 +1,6 @@
name: picard_collectwgsmetrics
-description: Collect metrics about coverage and performance of whole genome sequencing (WGS) experiments.
+description: Collect metrics about coverage and performance of whole genome sequencing
+ (WGS) experiments.
keywords:
- alignment
- metrics
@@ -14,55 +15,59 @@ tools:
homepage: https://broadinstitute.github.io/picard/
documentation: https://broadinstitute.github.io/picard/
licence: ["MIT"]
+ identifier: biotools:picard_tools
input:
- - meta:
- type: map
- description: |
- Groovy Map containing sample information
- e.g. [ id:'test', single_end:false ]
- - bam:
- type: file
- description: Aligned reads file
- pattern: "*.{bam, cram}"
- - bai:
- type: file
- description: (Optional) Aligned reads file index
- pattern: "*.{bai,crai}"
- - meta2:
- type: map
- description: |
- Groovy Map containing reference information
- e.g. [ id:'genome' ]
- - fasta:
- type: file
- description: Genome fasta file
- pattern: "*.{fa,fasta,fna}"
- - meta3:
- type: map
- description: |
- Groovy Map containing reference information
- e.g. [ id:'genome' ]
- - fai:
- type: file
- description: Genome fasta file index
- pattern: "*.{fai}"
- - intervallist:
- type: file
- description: Picard Interval List. Defines which contigs to include. Can be generated from a BED file with GATK BedToIntervalList.
+ - - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ - bam:
+ type: file
+ description: Aligned reads file
+ pattern: "*.{bam, cram}"
+ - bai:
+ type: file
+ description: (Optional) Aligned reads file index
+ pattern: "*.{bai,crai}"
+ - - meta2:
+ type: map
+ description: |
+ Groovy Map containing reference information
+ e.g. [ id:'genome' ]
+ - fasta:
+ type: file
+ description: Genome fasta file
+ pattern: "*.{fa,fasta,fna}"
+ - - meta3:
+ type: map
+ description: |
+ Groovy Map containing reference information
+ e.g. [ id:'genome' ]
+ - fai:
+ type: file
+ description: Genome fasta file index
+ pattern: "*.{fai}"
+ - - intervallist:
+ type: file
+ description: Picard Interval List. Defines which contigs to include. Can be
+ generated from a BED file with GATK BedToIntervalList.
output:
- - meta:
- type: map
- description: |
- Groovy Map containing sample information
- e.g. [ id:'test', single_end:false ]
- metrics:
- type: file
- description: Alignment metrics files generated by picard
- pattern: "*_{metrics}"
+ - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ - "*_metrics":
+ type: file
+ description: Alignment metrics files generated by picard
+ pattern: "*_{metrics}"
- versions:
- type: file
- description: File containing software versions
- pattern: "versions.yml"
+ - versions.yml:
+ type: file
+ description: File containing software versions
+ pattern: "versions.yml"
authors:
- "@drpatelh"
- "@flowuenne"
diff --git a/modules/nf-core/rrnatranscripts/meta.yml b/modules/nf-core/rrnatranscripts/meta.yml
index 145506011..93f6a10ef 100644
--- a/modules/nf-core/rrnatranscripts/meta.yml
+++ b/modules/nf-core/rrnatranscripts/meta.yml
@@ -10,21 +10,24 @@ tools:
Extraction of ribosomal RNA
homepage: https://github.com/nf-core/rnafusion
licence: ["GPL-3.0-or-later"]
+ identifier: ""
input:
- - gtf:
- type: file
- description: GTF file
- pattern: "*.{gtf}"
+ - - gtf:
+ type: file
+ description: GTF file
+ pattern: "*.{gtf}"
output:
#
- - versions:
- type: file
- description: File containing software versions
- pattern: "versions.yml"
- rrna_gtf:
- type: file
- description: GTF file with ribosomal RNA only
- pattern: "*.{gtf}"
+ - "*rrna_intervals.gtf":
+ type: file
+ description: GTF file with ribosomal RNA only
+ pattern: "*.{gtf}"
+ - versions:
+ - versions.yml:
+ type: file
+ description: File containing software versions
+ pattern: "versions.yml"
authors:
- "@rannick"
maintainers:
diff --git a/modules/nf-core/salmon/index/meta.yml b/modules/nf-core/salmon/index/meta.yml
index fd94dd274..48486a2bb 100644
--- a/modules/nf-core/salmon/index/meta.yml
+++ b/modules/nf-core/salmon/index/meta.yml
@@ -13,22 +13,25 @@ tools:
manual: https://salmon.readthedocs.io/en/latest/salmon.html
doi: 10.1038/nmeth.4197
licence: ["GPL-3.0-or-later"]
+ identifier: biotools:salmon
input:
- - genome_fasta:
- type: file
- description: Fasta file of the reference genome
- - transcriptome_fasta:
- type: file
- description: Fasta file of the reference transcriptome
+ - - genome_fasta:
+ type: file
+ description: Fasta file of the reference genome
+ - - transcript_fasta:
+ type: file
+ description: Fasta file of the reference transcriptome
output:
- index:
- type: directory
- description: Folder containing the star index files
- pattern: "salmon"
+ - salmon:
+ type: directory
+ description: Folder containing the star index files
+ pattern: "salmon"
- versions:
- type: file
- description: File containing software versions
- pattern: "versions.yml"
+ - versions.yml:
+ type: file
+ description: File containing software versions
+ pattern: "versions.yml"
authors:
- "@kevinmenden"
- "@drpatelh"
diff --git a/modules/nf-core/salmon/quant/meta.yml b/modules/nf-core/salmon/quant/meta.yml
index a2faf589a..4cacde0f0 100644
--- a/modules/nf-core/salmon/quant/meta.yml
+++ b/modules/nf-core/salmon/quant/meta.yml
@@ -13,47 +13,69 @@ tools:
manual: https://salmon.readthedocs.io/en/latest/salmon.html
doi: 10.1038/nmeth.4197
licence: ["GPL-3.0-or-later"]
+ identifier: biotools:salmon
input:
- - meta:
- type: map
- description: |
- Groovy Map containing sample information
- e.g. [ id:'test', single_end:false ]
- - reads:
- type: file
- description: |
- List of input FastQ files for single-end or paired-end data.
- Multiple single-end fastqs or pairs of paired-end fastqs are
- handled.
- - index:
- type: directory
- description: Folder containing the star index files
- - gtf:
- type: file
- description: GTF of the reference transcriptome
- - transcript_fasta:
- type: file
- description: Fasta file of the reference transcriptome
- - alignment_mode:
- type: boolean
- description: whether to run salmon in alignment mode
- - lib_type:
- type: string
- description: |
- Override library type inferred based on strandedness defined in meta object
+ - - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ - reads:
+ type: file
+ description: |
+ List of input FastQ files for single-end or paired-end data.
+ Multiple single-end fastqs or pairs of paired-end fastqs are
+ handled.
+ - - index:
+ type: directory
+ description: Folder containing the star index files
+ - - gtf:
+ type: file
+ description: GTF of the reference transcriptome
+ - - transcript_fasta:
+ type: file
+ description: Fasta file of the reference transcriptome
+ - - alignment_mode:
+ type: boolean
+ description: whether to run salmon in alignment mode
+ - - lib_type:
+ type: string
+ description: |
+ Override library type inferred based on strandedness defined in meta object
output:
- results:
- type: directory
- description: Folder containing the quantification results for a specific sample
- pattern: "${prefix}"
+ - meta:
+ type: directory
+ description: Folder containing the quantification results for a specific sample
+ pattern: "${prefix}"
+ - ${prefix}:
+ type: directory
+ description: Folder containing the quantification results for a specific sample
+ pattern: "${prefix}"
- json_info:
- type: file
- description: File containing meta information from Salmon quant
- pattern: "*info.json"
+ - meta:
+ type: file
+ description: File containing meta information from Salmon quant
+ pattern: "*info.json"
+ - "*info.json":
+ type: file
+ description: File containing meta information from Salmon quant
+ pattern: "*info.json"
+ - lib_format_counts:
+ - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ - "*lib_format_counts.json":
+ type: file
+ description: File containing the library format counts
+ pattern: "*lib_format_counts.json"
- versions:
- type: file
- description: File containing software versions
- pattern: "versions.yml"
+ - versions.yml:
+ type: file
+ description: File containing software versions
+ pattern: "versions.yml"
authors:
- "@kevinmenden"
- "@drpatelh"
diff --git a/modules/nf-core/samtools/faidx/environment.yml b/modules/nf-core/samtools/faidx/environment.yml
index b98cbb990..62054fc97 100644
--- a/modules/nf-core/samtools/faidx/environment.yml
+++ b/modules/nf-core/samtools/faidx/environment.yml
@@ -1,7 +1,8 @@
+---
+# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json
channels:
- conda-forge
- bioconda
-
dependencies:
- - bioconda::htslib=1.20
- - bioconda::samtools=1.20
+ - bioconda::htslib=1.21
+ - bioconda::samtools=1.21
diff --git a/modules/nf-core/samtools/faidx/main.nf b/modules/nf-core/samtools/faidx/main.nf
index bdcdbc954..28c0a81cf 100644
--- a/modules/nf-core/samtools/faidx/main.nf
+++ b/modules/nf-core/samtools/faidx/main.nf
@@ -4,8 +4,8 @@ process SAMTOOLS_FAIDX {
conda "${moduleDir}/environment.yml"
container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ?
- 'https://depot.galaxyproject.org/singularity/samtools:1.20--h50ea8bc_0' :
- 'biocontainers/samtools:1.20--h50ea8bc_0' }"
+ 'https://depot.galaxyproject.org/singularity/samtools:1.21--h50ea8bc_0' :
+ 'biocontainers/samtools:1.21--h50ea8bc_0' }"
input:
tuple val(meta), path(fasta)
diff --git a/modules/nf-core/samtools/faidx/meta.yml b/modules/nf-core/samtools/faidx/meta.yml
index f3c25de20..6721b2cb8 100644
--- a/modules/nf-core/samtools/faidx/meta.yml
+++ b/modules/nf-core/samtools/faidx/meta.yml
@@ -14,47 +14,62 @@ tools:
documentation: http://www.htslib.org/doc/samtools.html
doi: 10.1093/bioinformatics/btp352
licence: ["MIT"]
+ identifier: biotools:samtools
input:
- - meta:
- type: map
- description: |
- Groovy Map containing reference information
- e.g. [ id:'test' ]
- - fasta:
- type: file
- description: FASTA file
- pattern: "*.{fa,fasta}"
- - meta2:
- type: map
- description: |
- Groovy Map containing reference information
- e.g. [ id:'test' ]
- - fai:
- type: file
- description: FASTA index file
- pattern: "*.{fai}"
+ - - meta:
+ type: map
+ description: |
+ Groovy Map containing reference information
+ e.g. [ id:'test' ]
+ - fasta:
+ type: file
+ description: FASTA file
+ pattern: "*.{fa,fasta}"
+ - - meta2:
+ type: map
+ description: |
+ Groovy Map containing reference information
+ e.g. [ id:'test' ]
+ - fai:
+ type: file
+ description: FASTA index file
+ pattern: "*.{fai}"
output:
- - meta:
- type: map
- description: |
- Groovy Map containing sample information
- e.g. [ id:'test', single_end:false ]
- fa:
- type: file
- description: FASTA file
- pattern: "*.{fa}"
+ - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ - "*.{fa,fasta}":
+ type: file
+ description: FASTA file
+ pattern: "*.{fa}"
- fai:
- type: file
- description: FASTA index file
- pattern: "*.{fai}"
+ - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ - "*.fai":
+ type: file
+ description: FASTA index file
+ pattern: "*.{fai}"
- gzi:
- type: file
- description: Optional gzip index file for compressed inputs
- pattern: "*.gzi"
+ - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ - "*.gzi":
+ type: file
+ description: Optional gzip index file for compressed inputs
+ pattern: "*.gzi"
- versions:
- type: file
- description: File containing software versions
- pattern: "versions.yml"
+ - versions.yml:
+ type: file
+ description: File containing software versions
+ pattern: "versions.yml"
authors:
- "@drpatelh"
- "@ewels"
diff --git a/modules/nf-core/samtools/faidx/tests/main.nf.test.snap b/modules/nf-core/samtools/faidx/tests/main.nf.test.snap
index 3223b72bc..1bbb3ec2b 100644
--- a/modules/nf-core/samtools/faidx/tests/main.nf.test.snap
+++ b/modules/nf-core/samtools/faidx/tests/main.nf.test.snap
@@ -18,7 +18,7 @@
],
"3": [
- "versions.yml:md5,2db78952923a61e05d50b95518b21856"
+ "versions.yml:md5,6bbe80a2e14bd61202ca63e12d66027f"
],
"fa": [
@@ -36,15 +36,15 @@
],
"versions": [
- "versions.yml:md5,2db78952923a61e05d50b95518b21856"
+ "versions.yml:md5,6bbe80a2e14bd61202ca63e12d66027f"
]
}
],
"meta": {
- "nf-test": "0.8.4",
- "nextflow": "23.10.1"
+ "nf-test": "0.9.0",
+ "nextflow": "24.04.4"
},
- "timestamp": "2024-05-28T15:42:14.779784761"
+ "timestamp": "2024-09-16T07:57:47.450887871"
},
"test_samtools_faidx_bgzip": {
"content": [
@@ -71,7 +71,7 @@
]
],
"3": [
- "versions.yml:md5,2db78952923a61e05d50b95518b21856"
+ "versions.yml:md5,6bbe80a2e14bd61202ca63e12d66027f"
],
"fa": [
@@ -95,15 +95,15 @@
]
],
"versions": [
- "versions.yml:md5,2db78952923a61e05d50b95518b21856"
+ "versions.yml:md5,6bbe80a2e14bd61202ca63e12d66027f"
]
}
],
"meta": {
- "nf-test": "0.8.4",
- "nextflow": "23.10.1"
+ "nf-test": "0.9.0",
+ "nextflow": "24.04.4"
},
- "timestamp": "2024-05-28T15:42:20.256633877"
+ "timestamp": "2024-09-16T07:58:04.804905659"
},
"test_samtools_faidx_fasta": {
"content": [
@@ -124,7 +124,7 @@
],
"3": [
- "versions.yml:md5,2db78952923a61e05d50b95518b21856"
+ "versions.yml:md5,6bbe80a2e14bd61202ca63e12d66027f"
],
"fa": [
[
@@ -142,15 +142,15 @@
],
"versions": [
- "versions.yml:md5,2db78952923a61e05d50b95518b21856"
+ "versions.yml:md5,6bbe80a2e14bd61202ca63e12d66027f"
]
}
],
"meta": {
- "nf-test": "0.8.4",
- "nextflow": "23.10.1"
+ "nf-test": "0.9.0",
+ "nextflow": "24.04.4"
},
- "timestamp": "2024-05-28T15:42:25.632577273"
+ "timestamp": "2024-09-16T07:58:23.831268154"
},
"test_samtools_faidx_stub_fasta": {
"content": [
@@ -171,7 +171,7 @@
],
"3": [
- "versions.yml:md5,2db78952923a61e05d50b95518b21856"
+ "versions.yml:md5,6bbe80a2e14bd61202ca63e12d66027f"
],
"fa": [
[
@@ -189,15 +189,15 @@
],
"versions": [
- "versions.yml:md5,2db78952923a61e05d50b95518b21856"
+ "versions.yml:md5,6bbe80a2e14bd61202ca63e12d66027f"
]
}
],
"meta": {
- "nf-test": "0.8.4",
- "nextflow": "23.10.1"
+ "nf-test": "0.9.0",
+ "nextflow": "24.04.4"
},
- "timestamp": "2024-05-28T15:42:31.058424849"
+ "timestamp": "2024-09-16T07:58:35.600243706"
},
"test_samtools_faidx_stub_fai": {
"content": [
@@ -218,7 +218,7 @@
],
"3": [
- "versions.yml:md5,2db78952923a61e05d50b95518b21856"
+ "versions.yml:md5,6bbe80a2e14bd61202ca63e12d66027f"
],
"fa": [
@@ -236,14 +236,14 @@
],
"versions": [
- "versions.yml:md5,2db78952923a61e05d50b95518b21856"
+ "versions.yml:md5,6bbe80a2e14bd61202ca63e12d66027f"
]
}
],
"meta": {
- "nf-test": "0.8.4",
- "nextflow": "23.10.1"
+ "nf-test": "0.9.0",
+ "nextflow": "24.04.4"
},
- "timestamp": "2024-05-28T15:42:36.479929617"
+ "timestamp": "2024-09-16T07:58:54.705460167"
}
}
\ No newline at end of file
diff --git a/modules/nf-core/samtools/index/environment.yml b/modules/nf-core/samtools/index/environment.yml
index da2df5e43..62054fc97 100644
--- a/modules/nf-core/samtools/index/environment.yml
+++ b/modules/nf-core/samtools/index/environment.yml
@@ -1,6 +1,8 @@
+---
+# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json
channels:
- conda-forge
- bioconda
dependencies:
- - bioconda::samtools=1.20
- - bioconda::htslib=1.20
+ - bioconda::htslib=1.21
+ - bioconda::samtools=1.21
diff --git a/modules/nf-core/samtools/index/main.nf b/modules/nf-core/samtools/index/main.nf
index e002585b9..311756102 100644
--- a/modules/nf-core/samtools/index/main.nf
+++ b/modules/nf-core/samtools/index/main.nf
@@ -4,8 +4,8 @@ process SAMTOOLS_INDEX {
conda "${moduleDir}/environment.yml"
container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ?
- 'https://depot.galaxyproject.org/singularity/samtools:1.20--h50ea8bc_0' :
- 'biocontainers/samtools:1.20--h50ea8bc_0' }"
+ 'https://depot.galaxyproject.org/singularity/samtools:1.21--h50ea8bc_0' :
+ 'biocontainers/samtools:1.21--h50ea8bc_0' }"
input:
tuple val(meta), path(input)
diff --git a/modules/nf-core/samtools/index/meta.yml b/modules/nf-core/samtools/index/meta.yml
index 01a4ee03e..db8df0d50 100644
--- a/modules/nf-core/samtools/index/meta.yml
+++ b/modules/nf-core/samtools/index/meta.yml
@@ -15,38 +15,52 @@ tools:
documentation: http://www.htslib.org/doc/samtools.html
doi: 10.1093/bioinformatics/btp352
licence: ["MIT"]
+ identifier: biotools:samtools
input:
- - meta:
- type: map
- description: |
- Groovy Map containing sample information
- e.g. [ id:'test', single_end:false ]
- - bam:
- type: file
- description: BAM/CRAM/SAM file
- pattern: "*.{bam,cram,sam}"
+ - - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ - input:
+ type: file
+ description: input file
output:
- - meta:
- type: map
- description: |
- Groovy Map containing sample information
- e.g. [ id:'test', single_end:false ]
- bai:
- type: file
- description: BAM/CRAM/SAM index file
- pattern: "*.{bai,crai,sai}"
- - crai:
- type: file
- description: BAM/CRAM/SAM index file
- pattern: "*.{bai,crai,sai}"
+ - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ - "*.bai":
+ type: file
+ description: BAM/CRAM/SAM index file
+ pattern: "*.{bai,crai,sai}"
- csi:
- type: file
- description: CSI index file
- pattern: "*.{csi}"
+ - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ - "*.csi":
+ type: file
+ description: CSI index file
+ pattern: "*.{csi}"
+ - crai:
+ - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ - "*.crai":
+ type: file
+ description: BAM/CRAM/SAM index file
+ pattern: "*.{bai,crai,sai}"
- versions:
- type: file
- description: File containing software versions
- pattern: "versions.yml"
+ - versions.yml:
+ type: file
+ description: File containing software versions
+ pattern: "versions.yml"
authors:
- "@drpatelh"
- "@ewels"
diff --git a/modules/nf-core/samtools/index/tests/main.nf.test.snap b/modules/nf-core/samtools/index/tests/main.nf.test.snap
index 799d199ce..72d65e81a 100644
--- a/modules/nf-core/samtools/index/tests/main.nf.test.snap
+++ b/modules/nf-core/samtools/index/tests/main.nf.test.snap
@@ -18,7 +18,7 @@
],
"3": [
- "versions.yml:md5,802c9776d9c5e95314e888cf18e96d77"
+ "versions.yml:md5,5e09a6fdf76de396728f877193d72315"
],
"bai": [
@@ -36,15 +36,15 @@
]
],
"versions": [
- "versions.yml:md5,802c9776d9c5e95314e888cf18e96d77"
+ "versions.yml:md5,5e09a6fdf76de396728f877193d72315"
]
}
],
"meta": {
"nf-test": "0.9.0",
- "nextflow": "24.04.3"
+ "nextflow": "24.04.4"
},
- "timestamp": "2024-07-22T16:51:53.9057"
+ "timestamp": "2024-09-16T08:21:25.261127166"
},
"crai - stub": {
"content": [
@@ -65,7 +65,7 @@
]
],
"3": [
- "versions.yml:md5,802c9776d9c5e95314e888cf18e96d77"
+ "versions.yml:md5,5e09a6fdf76de396728f877193d72315"
],
"bai": [
@@ -83,15 +83,15 @@
],
"versions": [
- "versions.yml:md5,802c9776d9c5e95314e888cf18e96d77"
+ "versions.yml:md5,5e09a6fdf76de396728f877193d72315"
]
}
],
"meta": {
"nf-test": "0.9.0",
- "nextflow": "24.04.3"
+ "nextflow": "24.04.4"
},
- "timestamp": "2024-07-22T16:51:45.931558"
+ "timestamp": "2024-09-16T08:21:12.653194876"
},
"bai - stub": {
"content": [
@@ -112,7 +112,7 @@
],
"3": [
- "versions.yml:md5,802c9776d9c5e95314e888cf18e96d77"
+ "versions.yml:md5,5e09a6fdf76de396728f877193d72315"
],
"bai": [
[
@@ -130,28 +130,28 @@
],
"versions": [
- "versions.yml:md5,802c9776d9c5e95314e888cf18e96d77"
+ "versions.yml:md5,5e09a6fdf76de396728f877193d72315"
]
}
],
"meta": {
"nf-test": "0.9.0",
- "nextflow": "24.04.3"
+ "nextflow": "24.04.4"
},
- "timestamp": "2024-07-22T16:51:34.807525"
+ "timestamp": "2024-09-16T08:21:01.854932651"
},
"csi": {
"content": [
"test.paired_end.sorted.bam.csi",
[
- "versions.yml:md5,802c9776d9c5e95314e888cf18e96d77"
+ "versions.yml:md5,5e09a6fdf76de396728f877193d72315"
]
],
"meta": {
"nf-test": "0.9.0",
- "nextflow": "24.04.3"
+ "nextflow": "24.04.4"
},
- "timestamp": "2024-07-22T16:52:55.688799"
+ "timestamp": "2024-09-16T08:20:51.485364222"
},
"crai": {
"content": [
@@ -172,7 +172,7 @@
]
],
"3": [
- "versions.yml:md5,802c9776d9c5e95314e888cf18e96d77"
+ "versions.yml:md5,5e09a6fdf76de396728f877193d72315"
],
"bai": [
@@ -190,15 +190,15 @@
],
"versions": [
- "versions.yml:md5,802c9776d9c5e95314e888cf18e96d77"
+ "versions.yml:md5,5e09a6fdf76de396728f877193d72315"
]
}
],
"meta": {
"nf-test": "0.9.0",
- "nextflow": "24.04.3"
+ "nextflow": "24.04.4"
},
- "timestamp": "2024-07-22T16:51:17.609533"
+ "timestamp": "2024-09-16T08:20:40.518873972"
},
"bai": {
"content": [
@@ -219,7 +219,7 @@
],
"3": [
- "versions.yml:md5,802c9776d9c5e95314e888cf18e96d77"
+ "versions.yml:md5,5e09a6fdf76de396728f877193d72315"
],
"bai": [
[
@@ -237,14 +237,14 @@
],
"versions": [
- "versions.yml:md5,802c9776d9c5e95314e888cf18e96d77"
+ "versions.yml:md5,5e09a6fdf76de396728f877193d72315"
]
}
],
"meta": {
"nf-test": "0.9.0",
- "nextflow": "24.04.3"
+ "nextflow": "24.04.4"
},
- "timestamp": "2024-07-22T16:51:04.16585"
+ "timestamp": "2024-09-16T08:20:21.184050361"
}
}
\ No newline at end of file
diff --git a/modules/nf-core/samtools/sort/environment.yml b/modules/nf-core/samtools/sort/environment.yml
index da2df5e43..62054fc97 100644
--- a/modules/nf-core/samtools/sort/environment.yml
+++ b/modules/nf-core/samtools/sort/environment.yml
@@ -1,6 +1,8 @@
+---
+# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json
channels:
- conda-forge
- bioconda
dependencies:
- - bioconda::samtools=1.20
- - bioconda::htslib=1.20
+ - bioconda::htslib=1.21
+ - bioconda::samtools=1.21
diff --git a/modules/nf-core/samtools/sort/main.nf b/modules/nf-core/samtools/sort/main.nf
index 8e019099c..acfd9252c 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.20--h50ea8bc_0' :
- 'biocontainers/samtools:1.20--h50ea8bc_0' }"
+ 'https://depot.galaxyproject.org/singularity/samtools:1.21--h50ea8bc_0' :
+ 'biocontainers/samtools:1.21--h50ea8bc_0' }"
input:
tuple val(meta) , path(bam)
@@ -32,7 +32,6 @@ process SAMTOOLS_SORT {
"""
samtools cat \\
- --threads $task.cpus \\
${bam} \\
| \\
samtools sort \\
diff --git a/modules/nf-core/samtools/sort/meta.yml b/modules/nf-core/samtools/sort/meta.yml
index 341a7d0eb..a9dbec5a8 100644
--- a/modules/nf-core/samtools/sort/meta.yml
+++ b/modules/nf-core/samtools/sort/meta.yml
@@ -15,52 +15,73 @@ tools:
documentation: http://www.htslib.org/doc/samtools.html
doi: 10.1093/bioinformatics/btp352
licence: ["MIT"]
+ identifier: biotools:samtools
input:
- - meta:
- type: map
- description: |
- Groovy Map containing sample information
- e.g. [ id:'test', single_end:false ]
- - bam:
- type: file
- description: BAM/CRAM/SAM file(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
+ - - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ - bam:
+ type: 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
- description: |
- Groovy Map containing sample information
- e.g. [ id:'test', single_end:false ]
- bam:
- type: file
- description: Sorted BAM file
- pattern: "*.{bam}"
+ - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ - "*.bam":
+ type: file
+ description: Sorted BAM file
+ pattern: "*.{bam}"
- cram:
- type: file
- description: Sorted CRAM file
- pattern: "*.{cram}"
+ - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ - "*.cram":
+ type: file
+ description: Sorted CRAM file
+ pattern: "*.{cram}"
- crai:
- type: file
- description: CRAM index file (optional)
- pattern: "*.crai"
+ - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ - "*.crai":
+ type: file
+ description: CRAM index file (optional)
+ pattern: "*.crai"
- csi:
- type: file
- description: BAM index file (optional)
- pattern: "*.csi"
+ - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ - "*.csi":
+ type: file
+ description: BAM index file (optional)
+ pattern: "*.csi"
- versions:
- type: file
- description: File containing software versions
- pattern: "versions.yml"
+ - versions.yml:
+ type: file
+ description: File containing software versions
+ pattern: "versions.yml"
authors:
- "@drpatelh"
- "@ewels"
diff --git a/modules/nf-core/samtools/sort/tests/main.nf.test.snap b/modules/nf-core/samtools/sort/tests/main.nf.test.snap
index da38d5d15..2d6b29004 100644
--- a/modules/nf-core/samtools/sort/tests/main.nf.test.snap
+++ b/modules/nf-core/samtools/sort/tests/main.nf.test.snap
@@ -20,14 +20,14 @@
]
],
[
- "versions.yml:md5,7a360de20e1d7a6f15a5e8fbe0a9c062"
+ "versions.yml:md5,2659b187d681241451539d4c53500b9f"
]
],
"meta": {
"nf-test": "0.9.0",
- "nextflow": "24.04.3"
+ "nextflow": "24.04.4"
},
- "timestamp": "2024-07-22T17:19:37.196205"
+ "timestamp": "2024-09-16T08:49:58.207549273"
},
"bam - stub": {
"content": [
@@ -57,7 +57,7 @@
]
],
"4": [
- "versions.yml:md5,7a360de20e1d7a6f15a5e8fbe0a9c062"
+ "versions.yml:md5,2659b187d681241451539d4c53500b9f"
],
"bam": [
[
@@ -84,15 +84,15 @@
]
],
"versions": [
- "versions.yml:md5,7a360de20e1d7a6f15a5e8fbe0a9c062"
+ "versions.yml:md5,2659b187d681241451539d4c53500b9f"
]
}
],
"meta": {
"nf-test": "0.9.0",
- "nextflow": "24.04.3"
+ "nextflow": "24.04.4"
},
- "timestamp": "2024-07-22T15:54:46.580756"
+ "timestamp": "2024-09-16T08:50:08.630951018"
},
"cram - stub": {
"content": [
@@ -122,7 +122,7 @@
],
"4": [
- "versions.yml:md5,7a360de20e1d7a6f15a5e8fbe0a9c062"
+ "versions.yml:md5,2659b187d681241451539d4c53500b9f"
],
"bam": [
@@ -149,15 +149,15 @@
],
"versions": [
- "versions.yml:md5,7a360de20e1d7a6f15a5e8fbe0a9c062"
+ "versions.yml:md5,2659b187d681241451539d4c53500b9f"
]
}
],
"meta": {
"nf-test": "0.9.0",
- "nextflow": "24.04.3"
+ "nextflow": "24.04.4"
},
- "timestamp": "2024-07-22T15:57:30.505698"
+ "timestamp": "2024-09-16T08:50:19.061912443"
},
"bam": {
"content": [
@@ -167,7 +167,7 @@
"id": "test",
"single_end": false
},
- "test.sorted.bam:md5,21c992d59615936b99f2ad008aa54400"
+ "test.sorted.bam:md5,34aa85e86abefe637f7a4a9887f016fc"
]
],
[
@@ -180,13 +180,13 @@
]
],
[
- "versions.yml:md5,7a360de20e1d7a6f15a5e8fbe0a9c062"
+ "versions.yml:md5,2659b187d681241451539d4c53500b9f"
]
],
"meta": {
"nf-test": "0.9.0",
- "nextflow": "24.04.3"
+ "nextflow": "24.04.4"
},
- "timestamp": "2024-07-22T15:54:25.872954"
+ "timestamp": "2024-09-16T08:49:43.971158333"
}
}
\ No newline at end of file
diff --git a/modules/nf-core/samtools/view/environment.yml b/modules/nf-core/samtools/view/environment.yml
index da2df5e43..62054fc97 100644
--- a/modules/nf-core/samtools/view/environment.yml
+++ b/modules/nf-core/samtools/view/environment.yml
@@ -1,6 +1,8 @@
+---
+# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json
channels:
- conda-forge
- bioconda
dependencies:
- - bioconda::samtools=1.20
- - bioconda::htslib=1.20
+ - bioconda::htslib=1.21
+ - bioconda::samtools=1.21
diff --git a/modules/nf-core/samtools/view/main.nf b/modules/nf-core/samtools/view/main.nf
index dc611448c..37e05cec8 100644
--- a/modules/nf-core/samtools/view/main.nf
+++ b/modules/nf-core/samtools/view/main.nf
@@ -4,8 +4,8 @@ process SAMTOOLS_VIEW {
conda "${moduleDir}/environment.yml"
container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ?
- 'https://depot.galaxyproject.org/singularity/samtools:1.20--h50ea8bc_0' :
- 'biocontainers/samtools:1.20--h50ea8bc_0' }"
+ 'https://depot.galaxyproject.org/singularity/samtools:1.21--h50ea8bc_0' :
+ 'biocontainers/samtools:1.21--h50ea8bc_0' }"
input:
tuple val(meta), path(input), path(index)
diff --git a/modules/nf-core/samtools/view/meta.yml b/modules/nf-core/samtools/view/meta.yml
index 27be60d08..caa7b0150 100644
--- a/modules/nf-core/samtools/view/meta.yml
+++ b/modules/nf-core/samtools/view/meta.yml
@@ -15,77 +15,120 @@ tools:
documentation: http://www.htslib.org/doc/samtools.html
doi: 10.1093/bioinformatics/btp352
licence: ["MIT"]
+ identifier: biotools:samtools
input:
- - meta:
- type: map
- description: |
- Groovy Map containing sample information
- e.g. [ id:'test', single_end:false ]
- - input:
- type: file
- description: BAM/CRAM/SAM file
- pattern: "*.{bam,cram,sam}"
- - index:
- type: file
- description: BAM.BAI/BAM.CSI/CRAM.CRAI file (optional)
- pattern: "*.{.bai,.csi,.crai}"
- - meta2:
- type: map
- description: |
- Groovy Map containing reference information
- e.g. [ id:'test' ]
- - fasta:
- type: file
- description: Reference file the CRAM was created with (optional)
- pattern: "*.{fasta,fa}"
- - qname:
- type: file
- description: Optional file with read names to output only select alignments
- pattern: "*.{txt,list}"
+ - - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ - input:
+ type: file
+ description: BAM/CRAM/SAM file
+ pattern: "*.{bam,cram,sam}"
+ - index:
+ type: file
+ description: BAM.BAI/BAM.CSI/CRAM.CRAI file (optional)
+ pattern: "*.{.bai,.csi,.crai}"
+ - - meta2:
+ type: map
+ description: |
+ Groovy Map containing reference information
+ e.g. [ id:'test' ]
+ - fasta:
+ type: file
+ description: Reference file the CRAM was created with (optional)
+ pattern: "*.{fasta,fa}"
+ - - qname:
+ type: file
+ description: Optional file with read names to output only select alignments
+ pattern: "*.{txt,list}"
output:
- - meta:
- type: map
- description: |
- Groovy Map containing sample information
- e.g. [ id:'test', single_end:false ]
- bam:
- type: file
- description: optional filtered/converted BAM file
- pattern: "*.{bam}"
+ - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ - ${prefix}.bam:
+ type: file
+ description: optional filtered/converted BAM file
+ pattern: "*.{bam}"
- cram:
- type: file
- description: optional filtered/converted CRAM file
- pattern: "*.{cram}"
+ - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ - ${prefix}.cram:
+ type: file
+ description: optional filtered/converted CRAM file
+ pattern: "*.{cram}"
- sam:
- type: file
- description: optional filtered/converted SAM file
- pattern: "*.{sam}"
- # bai, csi, and crai are created with `--write-index`
+ - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ - ${prefix}.sam:
+ type: file
+ description: optional filtered/converted SAM file
+ pattern: "*.{sam}"
- bai:
- type: file
- description: optional BAM file index
- pattern: "*.{bai}"
+ - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ - ${prefix}.${file_type}.bai:
+ type: file
+ description: optional BAM file index
+ pattern: "*.{bai}"
- csi:
- type: file
- description: optional tabix BAM file index
- pattern: "*.{csi}"
+ - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ - ${prefix}.${file_type}.csi:
+ type: file
+ description: optional tabix BAM file index
+ pattern: "*.{csi}"
- crai:
- type: file
- description: optional CRAM file index
- pattern: "*.{crai}"
- # unselected and unselected_index are created when passing a qname
+ - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ - ${prefix}.${file_type}.crai:
+ type: file
+ description: optional CRAM file index
+ pattern: "*.{crai}"
- unselected:
- type: file
- description: optional file with unselected alignments
- pattern: "*.unselected.{bam,cram,sam}"
+ - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ - ${prefix}.unselected.${file_type}:
+ type: file
+ description: optional file with unselected alignments
+ pattern: "*.unselected.{bam,cram,sam}"
- unselected_index:
- type: file
- description: index for the "unselected" file
- pattern: "*.unselected.{bai,csi,crai}"
+ - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ - ${prefix}.unselected.${file_type}.{bai,csi,crsi}:
+ type: file
+ description: index for the "unselected" file
+ pattern: "*.unselected.{bai,csi,crai}"
- versions:
- type: file
- description: File containing software versions
- pattern: "versions.yml"
+ - versions.yml:
+ type: file
+ description: File containing software versions
+ pattern: "versions.yml"
authors:
- "@drpatelh"
- "@joseespinosa"
diff --git a/modules/nf-core/samtools/view/tests/main.nf.test.snap b/modules/nf-core/samtools/view/tests/main.nf.test.snap
index 6bcce9fea..63849b037 100644
--- a/modules/nf-core/samtools/view/tests/main.nf.test.snap
+++ b/modules/nf-core/samtools/view/tests/main.nf.test.snap
@@ -56,14 +56,14 @@
"bam_stub_versions": {
"content": [
[
- "versions.yml:md5,6cd41a9a3b4a95271ec011ea990a2838"
+ "versions.yml:md5,176db5ec46b965219604bcdbb3ef9e07"
]
],
"meta": {
- "nf-test": "0.8.4",
- "nextflow": "23.10.1"
+ "nf-test": "0.9.0",
+ "nextflow": "24.04.4"
},
- "timestamp": "2024-05-28T15:43:20.390692583"
+ "timestamp": "2024-09-16T09:26:24.461775464"
},
"cram_to_bam_index_cram": {
"content": [
@@ -169,6 +169,16 @@
},
"timestamp": "2024-02-12T19:37:56.490286"
},
+ "cram_to_bam_index_qname_unselected_csi": {
+ "content": [
+ "test.unselected.bam.csi"
+ ],
+ "meta": {
+ "nf-test": "0.8.4",
+ "nextflow": "23.04.3"
+ },
+ "timestamp": "2024-02-12T19:38:23.328458"
+ },
"bam_csi": {
"content": [
[
@@ -208,14 +218,14 @@
"cram_to_bam_index_qname_versions": {
"content": [
[
- "versions.yml:md5,6cd41a9a3b4a95271ec011ea990a2838"
+ "versions.yml:md5,176db5ec46b965219604bcdbb3ef9e07"
]
],
"meta": {
- "nf-test": "0.8.4",
- "nextflow": "23.10.1"
+ "nf-test": "0.9.0",
+ "nextflow": "24.04.4"
},
- "timestamp": "2024-05-28T15:43:15.007493874"
+ "timestamp": "2024-09-16T09:25:51.953436682"
},
"cram_to_bam_bam": {
"content": [
@@ -240,14 +250,14 @@
"cram_to_bam_index_versions": {
"content": [
[
- "versions.yml:md5,6cd41a9a3b4a95271ec011ea990a2838"
+ "versions.yml:md5,176db5ec46b965219604bcdbb3ef9e07"
]
],
"meta": {
- "nf-test": "0.8.4",
- "nextflow": "23.10.1"
+ "nf-test": "0.9.0",
+ "nextflow": "24.04.4"
},
- "timestamp": "2024-05-28T15:43:09.472376824"
+ "timestamp": "2024-09-16T09:25:14.475388399"
},
"cram_to_bam_bai": {
"content": [
@@ -264,14 +274,14 @@
"cram_to_bam_versions": {
"content": [
[
- "versions.yml:md5,6cd41a9a3b4a95271ec011ea990a2838"
+ "versions.yml:md5,176db5ec46b965219604bcdbb3ef9e07"
]
],
"meta": {
- "nf-test": "0.8.4",
- "nextflow": "23.10.1"
+ "nf-test": "0.9.0",
+ "nextflow": "24.04.4"
},
- "timestamp": "2024-05-28T15:43:04.080050906"
+ "timestamp": "2024-09-16T09:24:49.673441798"
},
"cram_bam": {
"content": [
@@ -378,14 +388,14 @@
"bam_versions": {
"content": [
[
- "versions.yml:md5,6cd41a9a3b4a95271ec011ea990a2838"
+ "versions.yml:md5,176db5ec46b965219604bcdbb3ef9e07"
]
],
"meta": {
- "nf-test": "0.8.4",
- "nextflow": "23.10.1"
+ "nf-test": "0.9.0",
+ "nextflow": "24.04.4"
},
- "timestamp": "2024-05-28T15:42:52.978954857"
+ "timestamp": "2024-09-16T09:23:27.151650338"
},
"cram_to_bam_index_qname_cram": {
"content": [
@@ -450,14 +460,24 @@
"cram_versions": {
"content": [
[
- "versions.yml:md5,6cd41a9a3b4a95271ec011ea990a2838"
+ "versions.yml:md5,176db5ec46b965219604bcdbb3ef9e07"
]
],
+ "meta": {
+ "nf-test": "0.9.0",
+ "nextflow": "24.04.4"
+ },
+ "timestamp": "2024-09-16T09:24:12.95416913"
+ },
+ "cram_to_bam_index_qname_unselected": {
+ "content": [
+ "test.unselected.bam"
+ ],
"meta": {
"nf-test": "0.8.4",
- "nextflow": "23.10.1"
+ "nextflow": "23.04.3"
},
- "timestamp": "2024-05-28T15:42:58.400776109"
+ "timestamp": "2024-02-12T19:38:23.322874"
},
"bam_sam": {
"content": [
diff --git a/modules/nf-core/star/align/environment.yml b/modules/nf-core/star/align/environment.yml
index e3d1c714d..1debc4c9b 100644
--- a/modules/nf-core/star/align/environment.yml
+++ b/modules/nf-core/star/align/environment.yml
@@ -1,8 +1,9 @@
channels:
- conda-forge
- bioconda
+
dependencies:
- - bioconda::star=2.7.10a
- - bioconda::samtools=1.18
- bioconda::htslib=1.18
+ - bioconda::samtools=1.18
+ - bioconda::star=2.7.10a
- 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 ae67e0040..b5bc9ddf8 100644
--- a/modules/nf-core/star/align/main.nf
+++ b/modules/nf-core/star/align/main.nf
@@ -21,33 +21,34 @@ process STAR_ALIGN {
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
- tuple val(meta), path('*fastq.gz') , optional:true, emit: fastq
- tuple val(meta), path('*.tab') , optional:true, emit: tab
- tuple val(meta), path('*.SJ.out.tab') , optional:true, emit: spl_junc_tab
- tuple val(meta), path('*.ReadsPerGene.out.tab') , optional:true, emit: read_per_gene_tab
- tuple val(meta), path('*.out.junction') , optional:true, emit: junction
- tuple val(meta), path('*.out.sam') , optional:true, emit: sam
- tuple val(meta), path('*.wig') , optional:true, emit: wig
- tuple val(meta), path('*.bg') , optional:true, emit: bedgraph
+ tuple val(meta), path('*d.out.bam') , optional:true, emit: bam
+ tuple val(meta), path("${prefix}.sortedByCoord.out.bam") , optional:true, emit: bam_sorted
+ tuple val(meta), path("${prefix}.Aligned.sortedByCoord.out.bam") , optional:true, emit: bam_sorted_aligned
+ 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
+ tuple val(meta), path('*fastq.gz') , optional:true, emit: fastq
+ tuple val(meta), path('*.tab') , optional:true, emit: tab
+ tuple val(meta), path('*.SJ.out.tab') , optional:true, emit: spl_junc_tab
+ tuple val(meta), path('*.ReadsPerGene.out.tab') , optional:true, emit: read_per_gene_tab
+ tuple val(meta), path('*.out.junction') , optional:true, emit: junction
+ tuple val(meta), path('*.out.sam') , optional:true, emit: sam
+ tuple val(meta), path('*.wig') , optional:true, emit: wig
+ tuple val(meta), path('*.bg') , optional:true, emit: bedgraph
when:
task.ext.when == null || task.ext.when
script:
def args = task.ext.args ?: ''
- def prefix = task.ext.prefix ?: "${meta.id}"
+ 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 ? "'CN:$seq_center'" : ""
- def attrRG = args.contains("--outSAMattrRGline") ? "" : "--outSAMattrRGline 'ID:$prefix' $seq_center 'SM:$prefix' $seq_platform"
+ attrRG = args.contains("--outSAMattrRGline") ? "" : "--outSAMattrRGline 'ID:$prefix' $seq_center 'SM:$prefix' $seq_platform"
def out_sam_type = (args.contains('--outSAMtype')) ? '' : '--outSAMtype BAM Unsorted'
- def mv_unsorted_bam = (args.contains('--outSAMtype BAM Unsorted SortedByCoordinate')) ? "mv ${prefix}.Aligned.out.bam ${prefix}.Aligned.unsort.out.bam" : ''
+ mv_unsorted_bam = (args.contains('--outSAMtype BAM Unsorted SortedByCoordinate')) ? "mv ${prefix}.Aligned.out.bam ${prefix}.Aligned.unsort.out.bam" : ''
"""
STAR \\
--genomeDir $index \\
@@ -79,7 +80,7 @@ process STAR_ALIGN {
"""
stub:
- def prefix = task.ext.prefix ?: "${meta.id}"
+ prefix = task.ext.prefix ?: "${meta.id}"
"""
echo "" | gzip > ${prefix}.unmapped_1.fastq.gz
echo "" | gzip > ${prefix}.unmapped_2.fastq.gz
diff --git a/modules/nf-core/star/align/meta.yml b/modules/nf-core/star/align/meta.yml
index e80dbb7dd..d9cba2aa7 100644
--- a/modules/nf-core/star/align/meta.yml
+++ b/modules/nf-core/star/align/meta.yml
@@ -14,97 +14,201 @@ tools:
manual: https://github.com/alexdobin/STAR/blob/master/doc/STARmanual.pdf
doi: 10.1093/bioinformatics/bts635
licence: ["MIT"]
+ identifier: biotools:star
input:
- - meta:
- type: map
- description: |
- Groovy Map containing sample information
- e.g. [ id:'test', single_end:false ]
- - reads:
- type: file
- description: |
- List of input FastQ files of size 1 and 2 for single-end and paired-end data,
- respectively.
- - meta2:
- type: map
- description: |
- Groovy Map containing reference information
- e.g. [ id:'test' ]
- - index:
- type: directory
- description: STAR genome index
- pattern: "star"
- - meta3:
- type: map
- description: |
- Groovy Map containing reference information
- e.g. [ id:'test' ]
- - gtf:
- type: file
- description: Annotation GTF file
- pattern: "*.{gtf}"
- - star_ignore_sjdbgtf:
- type: boolean
- description: Ignore annotation GTF file
- - seq_platform:
- type: string
- description: Sequencing platform
- - seq_center:
- type: string
- description: Sequencing center
+ - - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ - reads:
+ type: file
+ description: |
+ List of input FastQ files of size 1 and 2 for single-end and paired-end data,
+ respectively.
+ - - meta2:
+ type: map
+ description: |
+ Groovy Map containing reference information
+ e.g. [ id:'test' ]
+ - index:
+ type: directory
+ description: STAR genome index
+ pattern: "star"
+ - - meta3:
+ type: map
+ description: |
+ Groovy Map containing reference information
+ e.g. [ id:'test' ]
+ - gtf:
+ type: file
+ description: Annotation GTF file
+ pattern: "*.{gtf}"
+ - - star_ignore_sjdbgtf:
+ type: boolean
+ description: Ignore annotation GTF file
+ - - seq_platform:
+ type: string
+ description: Sequencing platform
+ - - seq_center:
+ type: string
+ description: Sequencing center
output:
- - bam:
- type: file
- description: Output BAM file containing read alignments
- pattern: "*.{bam}"
- log_final:
- type: file
- description: STAR final log file
- pattern: "*Log.final.out"
+ - meta:
+ type: file
+ description: STAR final log file
+ pattern: "*Log.final.out"
+ - "*Log.final.out":
+ type: file
+ description: STAR final log file
+ pattern: "*Log.final.out"
- log_out:
- type: file
- description: STAR lot out file
- pattern: "*Log.out"
+ - meta:
+ type: file
+ description: STAR lot out file
+ pattern: "*Log.out"
+ - "*Log.out":
+ type: file
+ description: STAR lot out file
+ pattern: "*Log.out"
- log_progress:
- type: file
- description: STAR log progress file
- pattern: "*Log.progress.out"
+ - meta:
+ type: file
+ description: STAR log progress file
+ pattern: "*Log.progress.out"
+ - "*Log.progress.out":
+ type: file
+ description: STAR log progress file
+ pattern: "*Log.progress.out"
- versions:
- type: file
- description: File containing software versions
- pattern: "versions.yml"
+ - versions.yml:
+ type: file
+ description: File containing software versions
+ pattern: "versions.yml"
+ - bam:
+ - meta:
+ type: file
+ description: Output BAM file containing read alignments
+ pattern: "*.{bam}"
+ - "*d.out.bam":
+ type: file
+ description: Output BAM file containing read alignments
+ pattern: "*.{bam}"
- bam_sorted:
- type: file
- description: Sorted BAM file of read alignments (optional)
- pattern: "*sortedByCoord.out.bam"
+ - meta:
+ type: file
+ description: Sorted BAM file of read alignments (optional)
+ pattern: "*sortedByCoord.out.bam"
+ - ${prefix}.sortedByCoord.out.bam:
+ type: file
+ description: Sorted BAM file of read alignments (optional)
+ pattern: "*sortedByCoord.out.bam"
+ - bam_sorted_aligned:
+ - meta: {}
+ - ${prefix}.Aligned.sortedByCoord.out.bam: {}
- bam_transcript:
- type: file
- description: Output BAM file of transcriptome alignment (optional)
- pattern: "*toTranscriptome.out.bam"
+ - meta:
+ type: file
+ description: Output BAM file of transcriptome alignment (optional)
+ pattern: "*toTranscriptome.out.bam"
+ - "*toTranscriptome.out.bam":
+ type: file
+ description: Output BAM file of transcriptome alignment (optional)
+ pattern: "*toTranscriptome.out.bam"
- bam_unsorted:
- type: file
- description: Unsorted BAM file of read alignments (optional)
- pattern: "*Aligned.unsort.out.bam"
+ - meta:
+ type: file
+ description: Unsorted BAM file of read alignments (optional)
+ pattern: "*Aligned.unsort.out.bam"
+ - "*Aligned.unsort.out.bam":
+ type: file
+ description: Unsorted BAM file of read alignments (optional)
+ pattern: "*Aligned.unsort.out.bam"
- fastq:
- type: file
- description: Unmapped FastQ files (optional)
- pattern: "*fastq.gz"
+ - meta:
+ type: file
+ description: Unmapped FastQ files (optional)
+ pattern: "*fastq.gz"
+ - "*fastq.gz":
+ type: file
+ description: Unmapped FastQ files (optional)
+ pattern: "*fastq.gz"
- tab:
- type: file
- description: STAR output tab file(s) (optional)
- pattern: "*.tab"
+ - meta:
+ type: file
+ description: STAR output tab file(s) (optional)
+ pattern: "*.tab"
+ - "*.tab":
+ type: file
+ description: STAR output tab file(s) (optional)
+ pattern: "*.tab"
+ - spl_junc_tab:
+ - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ pattern: "*.SJ.out.tab"
+ - "*.SJ.out.tab":
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ pattern: "*.SJ.out.tab"
+ - read_per_gene_tab:
+ - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ pattern: "*.ReadsPerGene.out.tab"
+ - "*.ReadsPerGene.out.tab":
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ pattern: "*.ReadsPerGene.out.tab"
- junction:
- type: file
- description: STAR chimeric junction output file (optional)
- pattern: "*.out.junction"
+ - meta:
+ type: file
+ description: STAR chimeric junction output file (optional)
+ pattern: "*.out.junction"
+ - "*.out.junction":
+ type: file
+ description: STAR chimeric junction output file (optional)
+ pattern: "*.out.junction"
+ - sam:
+ - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ pattern: "*.out.sam"
+ - "*.out.sam":
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ pattern: "*.out.sam"
- wig:
- type: file
- description: STAR output wiggle format file(s) (optional)
- pattern: "*.wig"
+ - meta:
+ type: file
+ description: STAR output wiggle format file(s) (optional)
+ pattern: "*.wig"
+ - "*.wig":
+ type: file
+ description: STAR output wiggle format file(s) (optional)
+ pattern: "*.wig"
- bedgraph:
- type: file
- description: STAR output bedGraph format file(s) (optional)
- pattern: "*.bg"
+ - meta:
+ type: file
+ description: STAR output bedGraph format file(s) (optional)
+ pattern: "*.bg"
+ - "*.bg":
+ type: file
+ description: STAR output bedGraph format file(s) (optional)
+ pattern: "*.bg"
authors:
- "@kevinmenden"
- "@drpatelh"
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 c814eb56c..0da28d37c 100644
--- a/modules/nf-core/star/align/tests/main.nf.test.snap
+++ b/modules/nf-core/star/align/tests/main.nf.test.snap
@@ -26,7 +26,11 @@
"id": "test",
"single_end": true
},
- "test.SJ.out.tab:md5,d41d8cd98f00b204e9800998ecf8427e"
+ [
+ "test.ReadsPerGene.out.tab:md5,d41d8cd98f00b204e9800998ecf8427e",
+ "test.SJ.out.tab:md5,d41d8cd98f00b204e9800998ecf8427e",
+ "test.tab:md5,d41d8cd98f00b204e9800998ecf8427e"
+ ]
]
],
"11": [
@@ -35,7 +39,7 @@
"id": "test",
"single_end": true
},
- "test.ReadsPerGene.out.tab:md5,d41d8cd98f00b204e9800998ecf8427e"
+ "test.SJ.out.tab:md5,d41d8cd98f00b204e9800998ecf8427e"
]
],
"12": [
@@ -44,7 +48,7 @@
"id": "test",
"single_end": true
},
- "test.Chimeric.out.junction:md5,d41d8cd98f00b204e9800998ecf8427e"
+ "test.ReadsPerGene.out.tab:md5,d41d8cd98f00b204e9800998ecf8427e"
]
],
"13": [
@@ -53,7 +57,7 @@
"id": "test",
"single_end": true
},
- "test.out.sam:md5,d41d8cd98f00b204e9800998ecf8427e"
+ "test.Chimeric.out.junction:md5,d41d8cd98f00b204e9800998ecf8427e"
]
],
"14": [
@@ -62,10 +66,19 @@
"id": "test",
"single_end": true
},
- "test.Signal.UniqueMultiple.str1.out.wig:md5,d41d8cd98f00b204e9800998ecf8427e"
+ "test.out.sam:md5,d41d8cd98f00b204e9800998ecf8427e"
]
],
"15": [
+ [
+ {
+ "id": "test",
+ "single_end": true
+ },
+ "test.Signal.UniqueMultiple.str1.out.wig:md5,d41d8cd98f00b204e9800998ecf8427e"
+ ]
+ ],
+ "16": [
[
{
"id": "test",
@@ -105,10 +118,7 @@
"id": "test",
"single_end": true
},
- [
- "test.Aligned.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e",
- "test.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e"
- ]
+ "test.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e"
]
],
"6": [
@@ -117,7 +127,7 @@
"id": "test",
"single_end": true
},
- "test.toTranscriptome.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e"
+ "test.Aligned.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e"
]
],
"7": [
@@ -126,7 +136,7 @@
"id": "test",
"single_end": true
},
- "test.Aligned.unsort.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e"
+ "test.toTranscriptome.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e"
]
],
"8": [
@@ -135,10 +145,7 @@
"id": "test",
"single_end": true
},
- [
- "test.unmapped_1.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940",
- "test.unmapped_2.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940"
- ]
+ "test.Aligned.unsort.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e"
]
],
"9": [
@@ -148,9 +155,8 @@
"single_end": true
},
[
- "test.ReadsPerGene.out.tab:md5,d41d8cd98f00b204e9800998ecf8427e",
- "test.SJ.out.tab:md5,d41d8cd98f00b204e9800998ecf8427e",
- "test.tab:md5,d41d8cd98f00b204e9800998ecf8427e"
+ "test.unmapped_1.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940",
+ "test.unmapped_2.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940"
]
]
],
@@ -173,10 +179,16 @@
"id": "test",
"single_end": true
},
- [
- "test.Aligned.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e",
- "test.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e"
- ]
+ "test.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e"
+ ]
+ ],
+ "bam_sorted_aligned": [
+ [
+ {
+ "id": "test",
+ "single_end": true
+ },
+ "test.Aligned.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e"
]
],
"bam_transcript": [
@@ -312,7 +324,7 @@
"nf-test": "0.9.0",
"nextflow": "24.04.3"
},
- "timestamp": "2024-07-22T15:16:04.712114"
+ "timestamp": "2024-10-01T11:39:15.440397"
},
"homo_sapiens - paired_end - arriba - stub": {
"content": [
@@ -341,7 +353,11 @@
"id": "test",
"single_end": false
},
- "test.SJ.out.tab:md5,d41d8cd98f00b204e9800998ecf8427e"
+ [
+ "test.ReadsPerGene.out.tab:md5,d41d8cd98f00b204e9800998ecf8427e",
+ "test.SJ.out.tab:md5,d41d8cd98f00b204e9800998ecf8427e",
+ "test.tab:md5,d41d8cd98f00b204e9800998ecf8427e"
+ ]
]
],
"11": [
@@ -350,7 +366,7 @@
"id": "test",
"single_end": false
},
- "test.ReadsPerGene.out.tab:md5,d41d8cd98f00b204e9800998ecf8427e"
+ "test.SJ.out.tab:md5,d41d8cd98f00b204e9800998ecf8427e"
]
],
"12": [
@@ -359,7 +375,7 @@
"id": "test",
"single_end": false
},
- "test.Chimeric.out.junction:md5,d41d8cd98f00b204e9800998ecf8427e"
+ "test.ReadsPerGene.out.tab:md5,d41d8cd98f00b204e9800998ecf8427e"
]
],
"13": [
@@ -368,7 +384,7 @@
"id": "test",
"single_end": false
},
- "test.out.sam:md5,d41d8cd98f00b204e9800998ecf8427e"
+ "test.Chimeric.out.junction:md5,d41d8cd98f00b204e9800998ecf8427e"
]
],
"14": [
@@ -377,10 +393,19 @@
"id": "test",
"single_end": false
},
- "test.Signal.UniqueMultiple.str1.out.wig:md5,d41d8cd98f00b204e9800998ecf8427e"
+ "test.out.sam:md5,d41d8cd98f00b204e9800998ecf8427e"
]
],
"15": [
+ [
+ {
+ "id": "test",
+ "single_end": false
+ },
+ "test.Signal.UniqueMultiple.str1.out.wig:md5,d41d8cd98f00b204e9800998ecf8427e"
+ ]
+ ],
+ "16": [
[
{
"id": "test",
@@ -420,10 +445,7 @@
"id": "test",
"single_end": false
},
- [
- "test.Aligned.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e",
- "test.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e"
- ]
+ "test.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e"
]
],
"6": [
@@ -432,7 +454,7 @@
"id": "test",
"single_end": false
},
- "test.toTranscriptome.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e"
+ "test.Aligned.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e"
]
],
"7": [
@@ -441,7 +463,7 @@
"id": "test",
"single_end": false
},
- "test.Aligned.unsort.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e"
+ "test.toTranscriptome.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e"
]
],
"8": [
@@ -450,10 +472,7 @@
"id": "test",
"single_end": false
},
- [
- "test.unmapped_1.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940",
- "test.unmapped_2.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940"
- ]
+ "test.Aligned.unsort.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e"
]
],
"9": [
@@ -463,9 +482,8 @@
"single_end": false
},
[
- "test.ReadsPerGene.out.tab:md5,d41d8cd98f00b204e9800998ecf8427e",
- "test.SJ.out.tab:md5,d41d8cd98f00b204e9800998ecf8427e",
- "test.tab:md5,d41d8cd98f00b204e9800998ecf8427e"
+ "test.unmapped_1.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940",
+ "test.unmapped_2.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940"
]
]
],
@@ -488,10 +506,16 @@
"id": "test",
"single_end": false
},
- [
- "test.Aligned.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e",
- "test.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e"
- ]
+ "test.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e"
+ ]
+ ],
+ "bam_sorted_aligned": [
+ [
+ {
+ "id": "test",
+ "single_end": false
+ },
+ "test.Aligned.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e"
]
],
"bam_transcript": [
@@ -627,7 +651,7 @@
"nf-test": "0.9.0",
"nextflow": "24.04.3"
},
- "timestamp": "2024-07-22T15:16:28.874293"
+ "timestamp": "2024-10-01T11:40:15.472109"
},
"homo_sapiens - single_end": {
"content": [
@@ -644,13 +668,7 @@
]
],
[
- [
- {
- "id": "test",
- "single_end": true
- },
- "test.Aligned.sortedByCoord.out.bam:md5,c6cfaccaf91bc7fdabed3cfe236d4535"
- ]
+
],
[
@@ -711,7 +729,7 @@
"nf-test": "0.9.0",
"nextflow": "24.04.3"
},
- "timestamp": "2024-07-22T18:02:34.35338"
+ "timestamp": "2024-10-01T11:23:08.001162"
},
"homo_sapiens - paired_end": {
"content": [
@@ -728,13 +746,7 @@
]
],
[
- [
- {
- "id": "test",
- "single_end": false
- },
- "test.Aligned.sortedByCoord.out.bam:md5,b9ee1c607e07323bc1652ef3babb543f"
- ]
+
],
[
@@ -795,7 +807,7 @@
"nf-test": "0.9.0",
"nextflow": "24.04.3"
},
- "timestamp": "2024-07-22T18:03:16.701923"
+ "timestamp": "2024-10-01T11:24:46.295219"
},
"homo_sapiens - paired_end - multiple - stub": {
"content": [
@@ -824,7 +836,11 @@
"id": "test",
"single_end": false
},
- "test.SJ.out.tab:md5,d41d8cd98f00b204e9800998ecf8427e"
+ [
+ "test.ReadsPerGene.out.tab:md5,d41d8cd98f00b204e9800998ecf8427e",
+ "test.SJ.out.tab:md5,d41d8cd98f00b204e9800998ecf8427e",
+ "test.tab:md5,d41d8cd98f00b204e9800998ecf8427e"
+ ]
]
],
"11": [
@@ -833,7 +849,7 @@
"id": "test",
"single_end": false
},
- "test.ReadsPerGene.out.tab:md5,d41d8cd98f00b204e9800998ecf8427e"
+ "test.SJ.out.tab:md5,d41d8cd98f00b204e9800998ecf8427e"
]
],
"12": [
@@ -842,7 +858,7 @@
"id": "test",
"single_end": false
},
- "test.Chimeric.out.junction:md5,d41d8cd98f00b204e9800998ecf8427e"
+ "test.ReadsPerGene.out.tab:md5,d41d8cd98f00b204e9800998ecf8427e"
]
],
"13": [
@@ -851,7 +867,7 @@
"id": "test",
"single_end": false
},
- "test.out.sam:md5,d41d8cd98f00b204e9800998ecf8427e"
+ "test.Chimeric.out.junction:md5,d41d8cd98f00b204e9800998ecf8427e"
]
],
"14": [
@@ -860,10 +876,19 @@
"id": "test",
"single_end": false
},
- "test.Signal.UniqueMultiple.str1.out.wig:md5,d41d8cd98f00b204e9800998ecf8427e"
+ "test.out.sam:md5,d41d8cd98f00b204e9800998ecf8427e"
]
],
"15": [
+ [
+ {
+ "id": "test",
+ "single_end": false
+ },
+ "test.Signal.UniqueMultiple.str1.out.wig:md5,d41d8cd98f00b204e9800998ecf8427e"
+ ]
+ ],
+ "16": [
[
{
"id": "test",
@@ -903,10 +928,7 @@
"id": "test",
"single_end": false
},
- [
- "test.Aligned.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e",
- "test.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e"
- ]
+ "test.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e"
]
],
"6": [
@@ -915,7 +937,7 @@
"id": "test",
"single_end": false
},
- "test.toTranscriptome.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e"
+ "test.Aligned.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e"
]
],
"7": [
@@ -924,7 +946,7 @@
"id": "test",
"single_end": false
},
- "test.Aligned.unsort.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e"
+ "test.toTranscriptome.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e"
]
],
"8": [
@@ -933,10 +955,7 @@
"id": "test",
"single_end": false
},
- [
- "test.unmapped_1.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940",
- "test.unmapped_2.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940"
- ]
+ "test.Aligned.unsort.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e"
]
],
"9": [
@@ -946,9 +965,8 @@
"single_end": false
},
[
- "test.ReadsPerGene.out.tab:md5,d41d8cd98f00b204e9800998ecf8427e",
- "test.SJ.out.tab:md5,d41d8cd98f00b204e9800998ecf8427e",
- "test.tab:md5,d41d8cd98f00b204e9800998ecf8427e"
+ "test.unmapped_1.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940",
+ "test.unmapped_2.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940"
]
]
],
@@ -971,10 +989,16 @@
"id": "test",
"single_end": false
},
- [
- "test.Aligned.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e",
- "test.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e"
- ]
+ "test.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e"
+ ]
+ ],
+ "bam_sorted_aligned": [
+ [
+ {
+ "id": "test",
+ "single_end": false
+ },
+ "test.Aligned.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e"
]
],
"bam_transcript": [
@@ -1110,7 +1134,7 @@
"nf-test": "0.9.0",
"nextflow": "24.04.3"
},
- "timestamp": "2024-07-22T15:16:51.360287"
+ "timestamp": "2024-10-01T11:41:07.310866"
},
"homo_sapiens - paired_end - multiple": {
"content": [
@@ -1127,13 +1151,7 @@
]
],
[
- [
- {
- "id": "test",
- "single_end": false
- },
- "test.Aligned.sortedByCoord.out.bam:md5,ab07c21d63ab0a6c07d171d213c81d5a"
- ]
+
],
[
@@ -1194,7 +1212,7 @@
"nf-test": "0.9.0",
"nextflow": "24.04.3"
},
- "timestamp": "2024-07-22T13:13:28.987438"
+ "timestamp": "2024-10-01T11:38:46.605044"
},
"homo_sapiens - paired_end - stub": {
"content": [
@@ -1223,7 +1241,11 @@
"id": "test",
"single_end": false
},
- "test.SJ.out.tab:md5,d41d8cd98f00b204e9800998ecf8427e"
+ [
+ "test.ReadsPerGene.out.tab:md5,d41d8cd98f00b204e9800998ecf8427e",
+ "test.SJ.out.tab:md5,d41d8cd98f00b204e9800998ecf8427e",
+ "test.tab:md5,d41d8cd98f00b204e9800998ecf8427e"
+ ]
]
],
"11": [
@@ -1232,7 +1254,7 @@
"id": "test",
"single_end": false
},
- "test.ReadsPerGene.out.tab:md5,d41d8cd98f00b204e9800998ecf8427e"
+ "test.SJ.out.tab:md5,d41d8cd98f00b204e9800998ecf8427e"
]
],
"12": [
@@ -1241,7 +1263,7 @@
"id": "test",
"single_end": false
},
- "test.Chimeric.out.junction:md5,d41d8cd98f00b204e9800998ecf8427e"
+ "test.ReadsPerGene.out.tab:md5,d41d8cd98f00b204e9800998ecf8427e"
]
],
"13": [
@@ -1250,7 +1272,7 @@
"id": "test",
"single_end": false
},
- "test.out.sam:md5,d41d8cd98f00b204e9800998ecf8427e"
+ "test.Chimeric.out.junction:md5,d41d8cd98f00b204e9800998ecf8427e"
]
],
"14": [
@@ -1259,10 +1281,19 @@
"id": "test",
"single_end": false
},
- "test.Signal.UniqueMultiple.str1.out.wig:md5,d41d8cd98f00b204e9800998ecf8427e"
+ "test.out.sam:md5,d41d8cd98f00b204e9800998ecf8427e"
]
],
"15": [
+ [
+ {
+ "id": "test",
+ "single_end": false
+ },
+ "test.Signal.UniqueMultiple.str1.out.wig:md5,d41d8cd98f00b204e9800998ecf8427e"
+ ]
+ ],
+ "16": [
[
{
"id": "test",
@@ -1302,10 +1333,7 @@
"id": "test",
"single_end": false
},
- [
- "test.Aligned.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e",
- "test.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e"
- ]
+ "test.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e"
]
],
"6": [
@@ -1314,7 +1342,7 @@
"id": "test",
"single_end": false
},
- "test.toTranscriptome.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e"
+ "test.Aligned.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e"
]
],
"7": [
@@ -1323,7 +1351,7 @@
"id": "test",
"single_end": false
},
- "test.Aligned.unsort.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e"
+ "test.toTranscriptome.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e"
]
],
"8": [
@@ -1332,10 +1360,7 @@
"id": "test",
"single_end": false
},
- [
- "test.unmapped_1.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940",
- "test.unmapped_2.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940"
- ]
+ "test.Aligned.unsort.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e"
]
],
"9": [
@@ -1345,9 +1370,8 @@
"single_end": false
},
[
- "test.ReadsPerGene.out.tab:md5,d41d8cd98f00b204e9800998ecf8427e",
- "test.SJ.out.tab:md5,d41d8cd98f00b204e9800998ecf8427e",
- "test.tab:md5,d41d8cd98f00b204e9800998ecf8427e"
+ "test.unmapped_1.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940",
+ "test.unmapped_2.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940"
]
]
],
@@ -1370,10 +1394,16 @@
"id": "test",
"single_end": false
},
- [
- "test.Aligned.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e",
- "test.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e"
- ]
+ "test.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e"
+ ]
+ ],
+ "bam_sorted_aligned": [
+ [
+ {
+ "id": "test",
+ "single_end": false
+ },
+ "test.Aligned.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e"
]
],
"bam_transcript": [
@@ -1509,7 +1539,7 @@
"nf-test": "0.9.0",
"nextflow": "24.04.3"
},
- "timestamp": "2024-07-22T15:16:16.798018"
+ "timestamp": "2024-10-01T11:39:51.595873"
},
"homo_sapiens - paired_end - starfusion": {
"content": [
@@ -1584,7 +1614,7 @@
"nf-test": "0.9.0",
"nextflow": "24.04.3"
},
- "timestamp": "2024-07-22T13:10:55.371956"
+ "timestamp": "2024-10-01T11:35:43.874508"
},
"homo_sapiens - paired_end - arriba": {
"content": [
@@ -1653,7 +1683,7 @@
"nf-test": "0.9.0",
"nextflow": "24.04.3"
},
- "timestamp": "2024-07-22T13:05:10.7534"
+ "timestamp": "2024-10-01T11:28:32.599223"
},
"homo_sapiens - paired_end - starfusion - stub": {
"content": [
@@ -1682,7 +1712,11 @@
"id": "test",
"single_end": false
},
- "test.SJ.out.tab:md5,d41d8cd98f00b204e9800998ecf8427e"
+ [
+ "test.ReadsPerGene.out.tab:md5,d41d8cd98f00b204e9800998ecf8427e",
+ "test.SJ.out.tab:md5,d41d8cd98f00b204e9800998ecf8427e",
+ "test.tab:md5,d41d8cd98f00b204e9800998ecf8427e"
+ ]
]
],
"11": [
@@ -1691,7 +1725,7 @@
"id": "test",
"single_end": false
},
- "test.ReadsPerGene.out.tab:md5,d41d8cd98f00b204e9800998ecf8427e"
+ "test.SJ.out.tab:md5,d41d8cd98f00b204e9800998ecf8427e"
]
],
"12": [
@@ -1700,7 +1734,7 @@
"id": "test",
"single_end": false
},
- "test.Chimeric.out.junction:md5,d41d8cd98f00b204e9800998ecf8427e"
+ "test.ReadsPerGene.out.tab:md5,d41d8cd98f00b204e9800998ecf8427e"
]
],
"13": [
@@ -1709,7 +1743,7 @@
"id": "test",
"single_end": false
},
- "test.out.sam:md5,d41d8cd98f00b204e9800998ecf8427e"
+ "test.Chimeric.out.junction:md5,d41d8cd98f00b204e9800998ecf8427e"
]
],
"14": [
@@ -1718,10 +1752,19 @@
"id": "test",
"single_end": false
},
- "test.Signal.UniqueMultiple.str1.out.wig:md5,d41d8cd98f00b204e9800998ecf8427e"
+ "test.out.sam:md5,d41d8cd98f00b204e9800998ecf8427e"
]
],
"15": [
+ [
+ {
+ "id": "test",
+ "single_end": false
+ },
+ "test.Signal.UniqueMultiple.str1.out.wig:md5,d41d8cd98f00b204e9800998ecf8427e"
+ ]
+ ],
+ "16": [
[
{
"id": "test",
@@ -1761,10 +1804,7 @@
"id": "test",
"single_end": false
},
- [
- "test.Aligned.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e",
- "test.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e"
- ]
+ "test.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e"
]
],
"6": [
@@ -1773,7 +1813,7 @@
"id": "test",
"single_end": false
},
- "test.toTranscriptome.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e"
+ "test.Aligned.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e"
]
],
"7": [
@@ -1782,7 +1822,7 @@
"id": "test",
"single_end": false
},
- "test.Aligned.unsort.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e"
+ "test.toTranscriptome.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e"
]
],
"8": [
@@ -1791,10 +1831,7 @@
"id": "test",
"single_end": false
},
- [
- "test.unmapped_1.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940",
- "test.unmapped_2.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940"
- ]
+ "test.Aligned.unsort.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e"
]
],
"9": [
@@ -1804,9 +1841,8 @@
"single_end": false
},
[
- "test.ReadsPerGene.out.tab:md5,d41d8cd98f00b204e9800998ecf8427e",
- "test.SJ.out.tab:md5,d41d8cd98f00b204e9800998ecf8427e",
- "test.tab:md5,d41d8cd98f00b204e9800998ecf8427e"
+ "test.unmapped_1.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940",
+ "test.unmapped_2.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940"
]
]
],
@@ -1829,10 +1865,16 @@
"id": "test",
"single_end": false
},
- [
- "test.Aligned.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e",
- "test.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e"
- ]
+ "test.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e"
+ ]
+ ],
+ "bam_sorted_aligned": [
+ [
+ {
+ "id": "test",
+ "single_end": false
+ },
+ "test.Aligned.sortedByCoord.out.bam:md5,d41d8cd98f00b204e9800998ecf8427e"
]
],
"bam_transcript": [
@@ -1968,6 +2010,6 @@
"nf-test": "0.9.0",
"nextflow": "24.04.3"
},
- "timestamp": "2024-07-22T15:16:40.64399"
+ "timestamp": "2024-10-01T11:40:42.29249"
}
}
\ 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
index 2324b9e58..cf09323fc 100644
--- a/modules/nf-core/star/align/tests/nextflow.arriba.config
+++ b/modules/nf-core/star/align/tests/nextflow.arriba.config
@@ -9,6 +9,3 @@ process {
}
}
-
-// 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
index c4ac58088..18bc2ee8a 100644
--- a/modules/nf-core/star/align/tests/nextflow.config
+++ b/modules/nf-core/star/align/tests/nextflow.config
@@ -9,6 +9,3 @@ process {
}
}
-
-// 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
index 467b64977..7880bfcf5 100644
--- a/modules/nf-core/star/align/tests/nextflow.starfusion.config
+++ b/modules/nf-core/star/align/tests/nextflow.starfusion.config
@@ -9,6 +9,3 @@ process {
}
}
-
-// 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/genomegenerate/environment.yml b/modules/nf-core/star/genomegenerate/environment.yml
index 38611dfa2..1debc4c9b 100644
--- a/modules/nf-core/star/genomegenerate/environment.yml
+++ b/modules/nf-core/star/genomegenerate/environment.yml
@@ -1,8 +1,9 @@
channels:
- conda-forge
- bioconda
+
dependencies:
- - bioconda::samtools=1.18
- bioconda::htslib=1.18
+ - bioconda::samtools=1.18
- bioconda::star=2.7.10a
- conda-forge::gawk=5.1.0
diff --git a/modules/nf-core/star/genomegenerate/meta.yml b/modules/nf-core/star/genomegenerate/meta.yml
index 1061e1b8d..33c1f65f3 100644
--- a/modules/nf-core/star/genomegenerate/meta.yml
+++ b/modules/nf-core/star/genomegenerate/meta.yml
@@ -14,37 +14,40 @@ tools:
manual: https://github.com/alexdobin/STAR/blob/master/doc/STARmanual.pdf
doi: 10.1093/bioinformatics/bts635
licence: ["MIT"]
+ identifier: biotools:star
input:
- - meta:
- type: map
- description: |
- Groovy Map containing sample information
- e.g. [ id:'test', single_end:false ]
- - fasta:
- type: file
- description: Fasta file of the reference genome
- - meta2:
- type: map
- description: |
- Groovy Map containing reference information
- e.g. [ id:'test' ]
- - gtf:
- type: file
- description: GTF file of the reference genome
+ - - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ - fasta:
+ type: file
+ description: Fasta file of the reference genome
+ - - meta2:
+ type: map
+ description: |
+ Groovy Map containing reference information
+ e.g. [ id:'test' ]
+ - gtf:
+ type: file
+ description: GTF file of the reference genome
output:
- - meta:
- type: map
- description: |
- Groovy Map containing sample information
- e.g. [ id:'test', single_end:false ]
- index:
- type: directory
- description: Folder containing the star index files
- pattern: "star"
+ - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ - star:
+ type: directory
+ description: Folder containing the star index files
+ pattern: "star"
- versions:
- type: file
- description: File containing software versions
- pattern: "versions.yml"
+ - versions.yml:
+ type: file
+ description: File containing software versions
+ pattern: "versions.yml"
authors:
- "@kevinmenden"
- "@drpatelh"
diff --git a/modules/nf-core/stringtie/merge/meta.yml b/modules/nf-core/stringtie/merge/meta.yml
index 5d02d6786..cf6902b32 100644
--- a/modules/nf-core/stringtie/merge/meta.yml
+++ b/modules/nf-core/stringtie/merge/meta.yml
@@ -11,27 +11,29 @@ tools:
homepage: https://ccb.jhu.edu/software/stringtie/index.shtml
documentation: https://ccb.jhu.edu/software/stringtie/index.shtml?t=manual
licence: ["MIT"]
+ identifier: biotools:stringtie
input:
- - stringtie_gtf:
- type: file
- description: |
- Stringtie transcript gtf output(s).
- pattern: "*.gtf"
- - annotation_gtf:
- type: file
- description: |
- Annotation gtf file (optional).
- pattern: "*.gtf"
+ - - stringtie_gtf:
+ type: file
+ description: |
+ Stringtie transcript gtf output(s).
+ pattern: "*.gtf"
+ - - annotation_gtf:
+ type: file
+ description: |
+ Annotation gtf file (optional).
+ pattern: "*.gtf"
output:
- - merged_gtf:
- type: map
- description: |
- Merged gtf from annotation and stringtie output gtfs.
- pattern: "*.gtf"
+ - gtf:
+ - stringtie.merged.gtf:
+ type: file
+ description: Merged gtf file
+ pattern: "stringtie.merged.gtf"
- versions:
- type: file
- description: File containing software versions
- pattern: "versions.yml"
+ - versions.yml:
+ type: file
+ description: File containing software versions
+ pattern: "versions.yml"
authors:
- "@yuukiiwa"
maintainers:
diff --git a/modules/nf-core/stringtie/stringtie/meta.yml b/modules/nf-core/stringtie/stringtie/meta.yml
index d8ebdd88a..e55b2abfc 100644
--- a/modules/nf-core/stringtie/stringtie/meta.yml
+++ b/modules/nf-core/stringtie/stringtie/meta.yml
@@ -12,46 +12,67 @@ tools:
homepage: https://ccb.jhu.edu/software/stringtie/index.shtml
documentation: https://ccb.jhu.edu/software/stringtie/index.shtml?t=manual
licence: ["MIT"]
+ identifier: biotools:stringtie
input:
- - meta:
- type: map
- description: |
- Groovy Map containing sample information
- e.g. [ id:'test', single_end:false ]
- - bam:
- type: file
- description: |
- Stringtie transcript gtf output(s).
- - annotation_gtf:
- type: file
- description: |
- Annotation gtf file (optional).
+ - - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ - bam:
+ type: file
+ description: |
+ Stringtie transcript gtf output(s).
+ - - annotation_gtf:
+ type: file
+ description: |
+ Annotation gtf file (optional).
output:
- - meta:
- type: map
- description: |
- Groovy Map containing sample information
- e.g. [ id:'test', single_end:false ]
- transcript_gtf:
- type: file
- description: transcript gtf
- pattern: "*.{transcripts.gtf}"
+ - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ - "*.transcripts.gtf":
+ type: file
+ description: transcript gtf
+ pattern: "*.{transcripts.gtf}"
+ - abundance:
+ - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ - "*.abundance.txt":
+ type: file
+ description: abundance
+ pattern: "*.{abundance.txt}"
- coverage_gtf:
- type: file
- description: coverage gtf
- pattern: "*.{coverage.gtf}"
- - abudance:
- type: file
- description: abudance
- pattern: "*.{abudance.txt}"
+ - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ - "*.coverage.gtf":
+ type: file
+ description: coverage gtf
+ pattern: "*.{coverage.gtf}"
- ballgown:
- type: file
- description: for running ballgown
- pattern: "*.{ballgown}"
+ - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ - "*.ballgown":
+ type: file
+ description: for running ballgown
+ pattern: "*.{ballgown}"
- versions:
- type: file
- description: File containing software versions
- pattern: "versions.yml"
+ - versions.yml:
+ type: file
+ description: File containing software versions
+ pattern: "versions.yml"
authors:
- "@drpatelh"
maintainers:
diff --git a/modules/nf-core/ucsc/gtftogenepred/meta.yml b/modules/nf-core/ucsc/gtftogenepred/meta.yml
index 02122e410..cf04154d4 100644
--- a/modules/nf-core/ucsc/gtftogenepred/meta.yml
+++ b/modules/nf-core/ucsc/gtftogenepred/meta.yml
@@ -11,34 +11,43 @@ tools:
description: Convert GTF files to GenePred format
homepage: http://hgdownload.cse.ucsc.edu/admin/exe/
licence: ["varies; see http://genome.ucsc.edu/license"]
+ identifier: ""
input:
- - meta:
- type: map
- description: |
- Groovy Map containing sample information
- e.g. [ id:'test', single_end:false ]
- - gtf:
- type: file
- description: GTF file
- pattern: "*.{gtf}"
+ - - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ - gtf:
+ type: file
+ description: GTF file
+ pattern: "*.{gtf}"
output:
- - meta:
- type: map
- description: |
- Groovy Map containing sample information
- e.g. [ id:'test', single_end:false ]
- genepred:
- type: file
- description: genepred file
- pattern: "*.{genepred}"
+ - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ - "*.genepred":
+ type: file
+ description: genepred file
+ pattern: "*.{genepred}"
- refflat:
- type: file
- description: refflat file
- pattern: "*.{refflat}"
+ - meta:
+ type: map
+ description: |
+ Groovy Map containing sample information
+ e.g. [ id:'test', single_end:false ]
+ - "*.refflat":
+ type: file
+ description: refflat file
+ pattern: "*.{refflat}"
- versions:
- type: file
- description: File containing software versions
- pattern: "versions.yml"
+ - versions.yml:
+ type: file
+ description: File containing software versions
+ pattern: "versions.yml"
authors:
- "@BarryDigby"
- "@anoronh4"
From db7cf556e61235a741160711695af3df75e9d530 Mon Sep 17 00:00:00 2001
From: Annick Renevey <47788523+rannick@users.noreply.github.com>
Date: Tue, 8 Oct 2024 09:46:52 +0200
Subject: [PATCH 050/887] updated changelog
---
CHANGELOG.md | 2 ++
1 file changed, 2 insertions(+)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 9a8ad1d49..fe350b46c 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -13,6 +13,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Changed
+- Updated modules and migrated non-specific modules to nf-core/modules [#484](https://github.com/nf-core/rnafusion/pull/484)
+
### Fixed
- Fixed some Nextflow run-commands in the docs [#491](https://github.com/nf-core/rnafusion/pull/491)
From b8c672a4121f758034f1ca3310294487e5fe8deb Mon Sep 17 00:00:00 2001
From: nf-core-bot
Date: Tue, 8 Oct 2024 12:32:59 +0000
Subject: [PATCH 051/887] Template update for nf-core/tools version 3.0.0
---
.editorconfig | 4 +
.github/CONTRIBUTING.md | 10 +-
.github/PULL_REQUEST_TEMPLATE.md | 2 +-
.github/workflows/awsfulltest.yml | 23 +-
.github/workflows/ci.yml | 17 +-
.github/workflows/download_pipeline.yml | 53 ++-
.github/workflows/linting.yml | 23 +-
.github/workflows/linting_comment.yml | 2 +-
.github/workflows/release-announcements.yml | 2 +-
.../workflows/template_version_comment.yml | 43 ++
.gitpod.yml | 7 +-
.nf-core.yml | 19 +-
.pre-commit-config.yaml | 2 +-
.prettierignore | 1 +
CITATIONS.md | 4 +-
README.md | 5 +-
assets/schema_input.json | 2 +-
conf/base.config | 34 +-
conf/igenomes_ignored.config | 9 +
conf/modules.config | 1 -
conf/test.config | 13 +-
docs/images/mqc_fastqc_adapter.png | Bin 23458 -> 0 bytes
docs/images/mqc_fastqc_counts.png | Bin 33918 -> 0 bytes
docs/images/mqc_fastqc_quality.png | Bin 55769 -> 0 bytes
docs/output.md | 11 +-
docs/usage.md | 12 +-
main.nf | 10 +-
modules.json | 12 +-
modules/nf-core/fastqc/environment.yml | 2 -
modules/nf-core/fastqc/main.nf | 5 +-
modules/nf-core/fastqc/meta.yml | 57 +--
modules/nf-core/fastqc/tests/main.nf.test | 225 ++++++++---
.../nf-core/fastqc/tests/main.nf.test.snap | 370 ++++++++++++++++--
modules/nf-core/multiqc/environment.yml | 4 +-
modules/nf-core/multiqc/main.nf | 14 +-
modules/nf-core/multiqc/meta.yml | 78 ++--
modules/nf-core/multiqc/tests/main.nf.test | 8 +
.../nf-core/multiqc/tests/main.nf.test.snap | 20 +-
modules/nf-core/multiqc/tests/nextflow.config | 5 +
nextflow.config | 146 ++++---
nextflow_schema.json | 85 +---
.../utils_nfcore_rnafusion_pipeline/main.nf | 56 +--
.../nf-core/utils_nextflow_pipeline/main.nf | 24 +-
.../tests/nextflow.config | 2 +-
.../nf-core/utils_nfcore_pipeline/main.nf | 45 ++-
.../nf-core/utils_nfschema_plugin/main.nf | 46 +++
.../nf-core/utils_nfschema_plugin/meta.yml | 35 ++
.../utils_nfschema_plugin/tests/main.nf.test | 117 ++++++
.../tests/nextflow.config | 8 +
.../tests/nextflow_schema.json | 8 +-
.../nf-core/utils_nfvalidation_plugin/main.nf | 62 ---
.../utils_nfvalidation_plugin/meta.yml | 44 ---
.../tests/main.nf.test | 200 ----------
.../utils_nfvalidation_plugin/tests/tags.yml | 2 -
workflows/rnafusion.nf | 23 +-
55 files changed, 1206 insertions(+), 806 deletions(-)
create mode 100644 .github/workflows/template_version_comment.yml
create mode 100644 conf/igenomes_ignored.config
delete mode 100755 docs/images/mqc_fastqc_adapter.png
delete mode 100755 docs/images/mqc_fastqc_counts.png
delete mode 100755 docs/images/mqc_fastqc_quality.png
create mode 100644 modules/nf-core/multiqc/tests/nextflow.config
create mode 100644 subworkflows/nf-core/utils_nfschema_plugin/main.nf
create mode 100644 subworkflows/nf-core/utils_nfschema_plugin/meta.yml
create mode 100644 subworkflows/nf-core/utils_nfschema_plugin/tests/main.nf.test
create mode 100644 subworkflows/nf-core/utils_nfschema_plugin/tests/nextflow.config
rename subworkflows/nf-core/{utils_nfvalidation_plugin => utils_nfschema_plugin}/tests/nextflow_schema.json (95%)
delete mode 100644 subworkflows/nf-core/utils_nfvalidation_plugin/main.nf
delete mode 100644 subworkflows/nf-core/utils_nfvalidation_plugin/meta.yml
delete mode 100644 subworkflows/nf-core/utils_nfvalidation_plugin/tests/main.nf.test
delete mode 100644 subworkflows/nf-core/utils_nfvalidation_plugin/tests/tags.yml
diff --git a/.editorconfig b/.editorconfig
index 72dda289a..e10588156 100644
--- a/.editorconfig
+++ b/.editorconfig
@@ -11,6 +11,7 @@ indent_style = space
[*.{md,yml,yaml,html,css,scss,js}]
indent_size = 2
+
# These files are edited and tested upstream in nf-core/modules
[/modules/nf-core/**]
charset = unset
@@ -25,9 +26,12 @@ insert_final_newline = unset
trim_trailing_whitespace = unset
indent_style = unset
+
+
[/assets/email*]
indent_size = unset
+
# ignore python and markdown
[*.{py,md}]
indent_style = unset
diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md
index 8e5d1fefe..e57bc9213 100644
--- a/.github/CONTRIBUTING.md
+++ b/.github/CONTRIBUTING.md
@@ -19,7 +19,7 @@ If you'd like to write some code for nf-core/rnafusion, the standard workflow is
1. Check that there isn't already an issue about your idea in the [nf-core/rnafusion issues](https://github.com/nf-core/rnafusion/issues) to avoid duplicating work. If there isn't one already, please create one so that others know you're working on this
2. [Fork](https://help.github.com/en/github/getting-started-with-github/fork-a-repo) the [nf-core/rnafusion repository](https://github.com/nf-core/rnafusion) to your GitHub account
3. Make the necessary changes / additions within your forked repository following [Pipeline conventions](#pipeline-contribution-conventions)
-4. Use `nf-core schema build` and add any new parameters to the pipeline JSON schema (requires [nf-core tools](https://github.com/nf-core/tools) >= 1.10).
+4. Use `nf-core pipelines schema build` and add any new parameters to the pipeline JSON schema (requires [nf-core tools](https://github.com/nf-core/tools) >= 1.10).
5. Submit a Pull Request against the `dev` branch and wait for the code to be reviewed and merged
If you're not used to this workflow with git, you can start with some [docs from GitHub](https://help.github.com/en/github/collaborating-with-issues-and-pull-requests) or even their [excellent `git` resources](https://try.github.io/).
@@ -40,7 +40,7 @@ There are typically two types of tests that run:
### Lint tests
`nf-core` has a [set of guidelines](https://nf-co.re/developers/guidelines) which all pipelines must adhere to.
-To enforce these and ensure that all pipelines stay in sync, we have developed a helper tool which runs checks on the pipeline code. This is in the [nf-core/tools repository](https://github.com/nf-core/tools) and once installed can be run locally with the `nf-core lint ` command.
+To enforce these and ensure that all pipelines stay in sync, we have developed a helper tool which runs checks on the pipeline code. This is in the [nf-core/tools repository](https://github.com/nf-core/tools) and once installed can be run locally with the `nf-core pipelines lint ` command.
If any failures or warnings are encountered, please follow the listed URL for more documentation.
@@ -75,7 +75,7 @@ If you wish to contribute a new step, please use the following coding standards:
2. Write the process block (see below).
3. Define the output channel if needed (see below).
4. Add any new parameters to `nextflow.config` with a default (see below).
-5. Add any new parameters to `nextflow_schema.json` with help text (via the `nf-core schema build` tool).
+5. Add any new parameters to `nextflow_schema.json` with help text (via the `nf-core pipelines schema build` tool).
6. Add sanity checks and validation for all relevant parameters.
7. Perform local tests to validate that the new code works as expected.
8. If applicable, add a new test command in `.github/workflow/ci.yml`.
@@ -86,7 +86,7 @@ If you wish to contribute a new step, please use the following coding standards:
Parameters should be initialised / defined with default values in `nextflow.config` under the `params` scope.
-Once there, use `nf-core schema build` to add to `nextflow_schema.json`.
+Once there, use `nf-core pipelines schema build` to add to `nextflow_schema.json`.
### Default processes resource requirements
@@ -103,7 +103,7 @@ Please use the following naming schemes, to make it easy to understand what is g
### Nextflow version bumping
-If you are using a new feature from core Nextflow, you may bump the minimum required version of nextflow in the pipeline with: `nf-core bump-version --nextflow . [min-nf-version]`
+If you are using a new feature from core Nextflow, you may bump the minimum required version of nextflow in the pipeline with: `nf-core pipelines bump-version --nextflow . [min-nf-version]`
### Images and figures
diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md
index ed1d027be..7b8124978 100644
--- a/.github/PULL_REQUEST_TEMPLATE.md
+++ b/.github/PULL_REQUEST_TEMPLATE.md
@@ -17,7 +17,7 @@ Learn more about contributing: [CONTRIBUTING.md](https://github.com/nf-core/rnaf
- [ ] If you've fixed a bug or added code that should be tested, add tests!
- [ ] If you've added a new tool - have you followed the pipeline conventions in the [contribution docs](https://github.com/nf-core/rnafusion/tree/master/.github/CONTRIBUTING.md)
- [ ] If necessary, also make a PR on the nf-core/rnafusion _branch_ on the [nf-core/test-datasets](https://github.com/nf-core/test-datasets) repository.
-- [ ] Make sure your code lints (`nf-core lint`).
+- [ ] Make sure your code lints (`nf-core pipelines lint`).
- [ ] Ensure the test suite passes (`nextflow run . -profile test,docker --outdir `).
- [ ] Check for unexpected warnings in debug mode (`nextflow run . -profile debug,test,docker --outdir `).
- [ ] Usage Documentation in `docs/usage.md` is updated.
diff --git a/.github/workflows/awsfulltest.yml b/.github/workflows/awsfulltest.yml
index 3c5e4c8ac..c67770f7a 100644
--- a/.github/workflows/awsfulltest.yml
+++ b/.github/workflows/awsfulltest.yml
@@ -1,18 +1,33 @@
name: nf-core AWS full size tests
-# This workflow is triggered on published releases.
+# This workflow is triggered on PRs opened against the master branch.
# It can be additionally triggered manually with GitHub actions workflow dispatch button.
# It runs the -profile 'test_full' on AWS batch
on:
- release:
- types: [published]
+ pull_request:
+ branches:
+ - master
workflow_dispatch:
+ pull_request_review:
+ types: [submitted]
+
jobs:
run-platform:
name: Run AWS full tests
- if: github.repository == 'nf-core/rnafusion'
+ if: github.repository == 'nf-core/rnafusion' && github.event.review.state == 'approved'
runs-on: ubuntu-latest
steps:
+ - uses: octokit/request-action@v2.x
+ id: check_approvals
+ with:
+ route: GET /repos/${{ github.repository }}/pulls/${{ github.event.review.number }}/reviews
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ - id: test_variables
+ run: |
+ JSON_RESPONSE='${{ steps.check_approvals.outputs.data }}'
+ CURRENT_APPROVALS_COUNT=$(echo $JSON_RESPONSE | jq -c '[.[] | select(.state | contains("APPROVED")) ] | length')
+ test $CURRENT_APPROVALS_COUNT -ge 2 || exit 1 # At least 2 approvals are required
- name: Launch workflow via Seqera Platform
uses: seqeralabs/action-tower-launch@v2
# TODO nf-core: You can customise AWS full pipeline tests as required
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index a776bde84..30fd4427a 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -7,6 +7,7 @@ on:
pull_request:
release:
types: [published]
+ workflow_dispatch:
env:
NXF_ANSI_LOG: false
@@ -24,7 +25,7 @@ jobs:
strategy:
matrix:
NXF_VER:
- - "23.04.0"
+ - "24.04.2"
- "latest-everything"
steps:
- name: Check out pipeline code
@@ -38,9 +39,21 @@ jobs:
- name: Disk space cleanup
uses: jlumbroso/free-disk-space@54081f138730dfa15788a46383842cd2f914a1be # v1.3.1
- - name: Run pipeline with test data
+ - name: Run pipeline with test data (docker)
# TODO nf-core: You can customise CI pipeline run tests as required
# For example: adding multiple test runs with different parameters
# Remember that you can parallelise this by using strategy.matrix
run: |
nextflow run ${GITHUB_WORKSPACE} -profile test,docker --outdir ./results
+
+ - name: Run pipeline with test data (singularity)
+ # TODO nf-core: You can customise CI pipeline run tests as required
+ run: |
+ nextflow run ${GITHUB_WORKSPACE} -profile test,singularity --outdir ./results
+ if: "${{ github.base_ref == 'master' }}"
+
+ - name: Run pipeline with test data (conda)
+ # TODO nf-core: You can customise CI pipeline run tests as required
+ run: |
+ nextflow run ${GITHUB_WORKSPACE} -profile test,conda --outdir ./results
+ if: "${{ github.base_ref == 'master' }}"
diff --git a/.github/workflows/download_pipeline.yml b/.github/workflows/download_pipeline.yml
index 2d20d6442..713dc3e73 100644
--- a/.github/workflows/download_pipeline.yml
+++ b/.github/workflows/download_pipeline.yml
@@ -1,4 +1,4 @@
-name: Test successful pipeline download with 'nf-core download'
+name: Test successful pipeline download with 'nf-core pipelines download'
# Run the workflow when:
# - dispatched manually
@@ -8,7 +8,7 @@ on:
workflow_dispatch:
inputs:
testbranch:
- description: "The specific branch you wish to utilize for the test execution of nf-core download."
+ description: "The specific branch you wish to utilize for the test execution of nf-core pipelines download."
required: true
default: "dev"
pull_request:
@@ -39,9 +39,11 @@ jobs:
with:
python-version: "3.12"
architecture: "x64"
- - uses: eWaterCycle/setup-singularity@931d4e31109e875b13309ae1d07c70ca8fbc8537 # v7
+
+ - name: Setup Apptainer
+ uses: eWaterCycle/setup-apptainer@4bb22c52d4f63406c49e94c804632975787312b3 # v2.0.0
with:
- singularity-version: 3.8.3
+ apptainer-version: 1.3.4
- name: Install dependencies
run: |
@@ -54,33 +56,64 @@ jobs:
echo "REPOTITLE_LOWERCASE=$(basename ${GITHUB_REPOSITORY,,})" >> ${GITHUB_ENV}
echo "REPO_BRANCH=${{ github.event.inputs.testbranch || 'dev' }}" >> ${GITHUB_ENV}
+ - name: Make a cache directory for the container images
+ run: |
+ mkdir -p ./singularity_container_images
+
- name: Download the pipeline
env:
- NXF_SINGULARITY_CACHEDIR: ./
+ NXF_SINGULARITY_CACHEDIR: ./singularity_container_images
run: |
- nf-core download ${{ env.REPO_LOWERCASE }} \
+ nf-core pipelines download ${{ env.REPO_LOWERCASE }} \
--revision ${{ env.REPO_BRANCH }} \
--outdir ./${{ env.REPOTITLE_LOWERCASE }} \
--compress "none" \
--container-system 'singularity' \
- --container-library "quay.io" -l "docker.io" -l "ghcr.io" \
+ --container-library "quay.io" -l "docker.io" -l "community.wave.seqera.io" \
--container-cache-utilisation 'amend' \
- --download-configuration
+ --download-configuration 'yes'
- name: Inspect download
run: tree ./${{ env.REPOTITLE_LOWERCASE }}
+ - name: Count the downloaded number of container images
+ id: count_initial
+ run: |
+ image_count=$(ls -1 ./singularity_container_images | wc -l | xargs)
+ echo "Initial container image count: $image_count"
+ echo "IMAGE_COUNT_INITIAL=$image_count" >> ${GITHUB_ENV}
+
- name: Run the downloaded pipeline (stub)
id: stub_run_pipeline
continue-on-error: true
env:
- NXF_SINGULARITY_CACHEDIR: ./
+ NXF_SINGULARITY_CACHEDIR: ./singularity_container_images
NXF_SINGULARITY_HOME_MOUNT: true
run: nextflow run ./${{ env.REPOTITLE_LOWERCASE }}/$( sed 's/\W/_/g' <<< ${{ env.REPO_BRANCH }}) -stub -profile test,singularity --outdir ./results
- name: Run the downloaded pipeline (stub run not supported)
id: run_pipeline
if: ${{ job.steps.stub_run_pipeline.status == failure() }}
env:
- NXF_SINGULARITY_CACHEDIR: ./
+ NXF_SINGULARITY_CACHEDIR: ./singularity_container_images
NXF_SINGULARITY_HOME_MOUNT: true
run: nextflow run ./${{ env.REPOTITLE_LOWERCASE }}/$( sed 's/\W/_/g' <<< ${{ env.REPO_BRANCH }}) -profile test,singularity --outdir ./results
+
+ - name: Count the downloaded number of container images
+ id: count_afterwards
+ run: |
+ image_count=$(ls -1 ./singularity_container_images | wc -l | xargs)
+ echo "Post-pipeline run container image count: $image_count"
+ echo "IMAGE_COUNT_AFTER=$image_count" >> ${GITHUB_ENV}
+
+ - name: Compare container image counts
+ run: |
+ if [ "${{ env.IMAGE_COUNT_INITIAL }}" -ne "${{ env.IMAGE_COUNT_AFTER }}" ]; then
+ initial_count=${{ env.IMAGE_COUNT_INITIAL }}
+ final_count=${{ env.IMAGE_COUNT_AFTER }}
+ difference=$((final_count - initial_count))
+ echo "$difference additional container images were \n downloaded at runtime . The pipeline has no support for offline runs!"
+ tree ./singularity_container_images
+ exit 1
+ else
+ echo "The pipeline can be downloaded successfully!"
+ fi
diff --git a/.github/workflows/linting.yml b/.github/workflows/linting.yml
index 1fcafe880..b882838af 100644
--- a/.github/workflows/linting.yml
+++ b/.github/workflows/linting.yml
@@ -1,6 +1,6 @@
name: nf-core linting
# This workflow is triggered on pushes and PRs to the repository.
-# It runs the `nf-core lint` and markdown lint tests to ensure
+# It runs the `nf-core pipelines lint` and markdown lint tests to ensure
# that the code meets the nf-core guidelines.
on:
push:
@@ -41,17 +41,32 @@ jobs:
python-version: "3.12"
architecture: "x64"
+ - name: read .nf-core.yml
+ uses: pietrobolcato/action-read-yaml@1.0.0
+ id: read_yml
+ with:
+ config: ${{ github.workspace }}/.nf-core.yaml
+
- name: Install dependencies
run: |
python -m pip install --upgrade pip
- pip install nf-core
+ pip install nf-core==${{ steps.read_yml.outputs['nf_core_version'] }}
+
+ - name: Run nf-core pipelines lint
+ if: ${{ github.base_ref != 'master' }}
+ env:
+ GITHUB_COMMENTS_URL: ${{ github.event.pull_request.comments_url }}
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ GITHUB_PR_COMMIT: ${{ github.event.pull_request.head.sha }}
+ run: nf-core -l lint_log.txt pipelines lint --dir ${GITHUB_WORKSPACE} --markdown lint_results.md
- - name: Run nf-core lint
+ - name: Run nf-core pipelines lint --release
+ if: ${{ github.base_ref == 'master' }}
env:
GITHUB_COMMENTS_URL: ${{ github.event.pull_request.comments_url }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GITHUB_PR_COMMIT: ${{ github.event.pull_request.head.sha }}
- run: nf-core -l lint_log.txt lint --dir ${GITHUB_WORKSPACE} --markdown lint_results.md
+ run: nf-core -l lint_log.txt pipelines lint --release --dir ${GITHUB_WORKSPACE} --markdown lint_results.md
- name: Save PR number
if: ${{ always() }}
diff --git a/.github/workflows/linting_comment.yml b/.github/workflows/linting_comment.yml
index 40acc23f5..42e519bfa 100644
--- a/.github/workflows/linting_comment.yml
+++ b/.github/workflows/linting_comment.yml
@@ -11,7 +11,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Download lint results
- uses: dawidd6/action-download-artifact@09f2f74827fd3a8607589e5ad7f9398816f540fe # v3
+ uses: dawidd6/action-download-artifact@bf251b5aa9c2f7eeb574a96ee720e24f801b7c11 # v6
with:
workflow: linting.yml
workflow_conclusion: completed
diff --git a/.github/workflows/release-announcements.yml b/.github/workflows/release-announcements.yml
index 03ecfcf72..c6ba35df4 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: |
- 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
+ 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' ' ')" | sed 's/-//g' >> $GITHUB_OUTPUT
- uses: rzr/fediverse-action@master
with:
diff --git a/.github/workflows/template_version_comment.yml b/.github/workflows/template_version_comment.yml
new file mode 100644
index 000000000..9dea41f0d
--- /dev/null
+++ b/.github/workflows/template_version_comment.yml
@@ -0,0 +1,43 @@
+name: nf-core template version comment
+# This workflow is triggered on PRs to check if the pipeline template version matches the latest nf-core version.
+# It posts a comment to the PR, even if it comes from a fork.
+
+on: pull_request_target
+
+jobs:
+ template_version:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Check out pipeline code
+ uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4
+
+ - name: Read template version from .nf-core.yml
+ uses: pietrobolcato/action-read-yaml@1.0.0
+ id: read_yml
+ with:
+ config: ${{ github.workspace }}/.nf-core.yml
+
+ - name: Install nf-core
+ run: |
+ python -m pip install --upgrade pip
+ pip install nf-core==${{ steps.read_yml.outputs['nf_core_version'] }}
+
+ - name: Check nf-core outdated
+ id: nf_core_outdated
+ run: pip list --outdated | grep nf-core
+
+ - name: Post nf-core template version comment
+ uses: mshick/add-pr-comment@b8f338c590a895d50bcbfa6c5859251edc8952fc # v2
+ if: |
+ ${{ steps.nf_core_outdated.outputs.stdout }} =~ 'nf-core'
+ with:
+ repo-token: ${{ secrets.NF_CORE_BOT_AUTH_TOKEN }}
+ allow-repeats: false
+ message: |
+ ## :warning: Newer version of the nf-core template is available.
+
+ Your pipeline is using an old version of the nf-core template: ${{ steps.read_yml.outputs['nf_core_version'] }}.
+ Please update your pipeline to the latest version.
+
+ For more documentation on how to update your pipeline, please see the [nf-core documentation](https://github.com/nf-core/tools?tab=readme-ov-file#sync-a-pipeline-with-the-template) and [Synchronisation documentation](https://nf-co.re/docs/contributing/sync).
+ #
diff --git a/.gitpod.yml b/.gitpod.yml
index 105a1821a..461186376 100644
--- a/.gitpod.yml
+++ b/.gitpod.yml
@@ -4,17 +4,14 @@ tasks:
command: |
pre-commit install --install-hooks
nextflow self-update
- - name: unset JAVA_TOOL_OPTIONS
- command: |
- unset JAVA_TOOL_OPTIONS
vscode:
extensions: # based on nf-core.nf-core-extensionpack
- - esbenp.prettier-vscode # Markdown/CommonMark linting and style checking for Visual Studio Code
+ #- esbenp.prettier-vscode # Markdown/CommonMark linting and style checking for Visual Studio Code
- EditorConfig.EditorConfig # override user/workspace settings with settings found in .editorconfig files
- Gruntfuggly.todo-tree # Display TODO and FIXME in a tree view in the activity bar
- mechatroner.rainbow-csv # Highlight columns in csv files in different colors
- # - nextflow.nextflow # Nextflow syntax highlighting
+ - nextflow.nextflow # Nextflow syntax highlighting
- oderwat.indent-rainbow # Highlight indentation level
- streetsidesoftware.code-spell-checker # Spelling checker for source code
- charliermarsh.ruff # Code linter Ruff
diff --git a/.nf-core.yml b/.nf-core.yml
index e0b85a77f..01b1f08ca 100644
--- a/.nf-core.yml
+++ b/.nf-core.yml
@@ -1,2 +1,19 @@
+bump_version: null
+lint:
+ files_unchanged:
+ - .github/CONTRIBUTING.md
+ - .github/PULL_REQUEST_TEMPLATE.md
+nf_core_version: 3.0.0
+org_path: null
repository_type: pipeline
-nf_core_version: "2.14.1"
+template:
+ author: Martin Proks, Annick Renevey
+ description: Nextflow rnafusion analysis pipeline, part of the nf-core community.
+ force: false
+ is_nfcore: true
+ name: rnafusion
+ org: nf-core
+ outdir: .
+ skip_features: null
+ version: 4.0.0dev
+update: null
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index 4dc0f1dcd..9e9f0e1c4 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -7,7 +7,7 @@ repos:
- prettier@3.2.5
- repo: https://github.com/editorconfig-checker/editorconfig-checker.python
- rev: "2.7.3"
+ rev: "3.0.3"
hooks:
- id: editorconfig-checker
alias: ec
diff --git a/.prettierignore b/.prettierignore
index 437d763d0..610e50692 100644
--- a/.prettierignore
+++ b/.prettierignore
@@ -1,3 +1,4 @@
+
email_template.html
adaptivecard.json
slackreport.json
diff --git a/CITATIONS.md b/CITATIONS.md
index 98bdbc607..0fc81801b 100644
--- a/CITATIONS.md
+++ b/CITATIONS.md
@@ -12,11 +12,11 @@
- [FastQC](https://www.bioinformatics.babraham.ac.uk/projects/fastqc/)
- > Andrews, S. (2010). FastQC: A Quality Control Tool for High Throughput Sequence Data [Online].
+> Andrews, S. (2010). FastQC: A Quality Control Tool for High Throughput Sequence Data [Online].
- [MultiQC](https://pubmed.ncbi.nlm.nih.gov/27312411/)
- > Ewels P, Magnusson M, Lundin S, Käller M. MultiQC: summarize analysis results for multiple tools and samples in a single report. Bioinformatics. 2016 Oct 1;32(19):3047-8. doi: 10.1093/bioinformatics/btw354. Epub 2016 Jun 16. PubMed PMID: 27312411; PubMed Central PMCID: PMC5039924.
+> Ewels P, Magnusson M, Lundin S, Käller M. MultiQC: summarize analysis results for multiple tools and samples in a single report. Bioinformatics. 2016 Oct 1;32(19):3047-8. doi: 10.1093/bioinformatics/btw354. Epub 2016 Jun 16. PubMed PMID: 27312411; PubMed Central PMCID: PMC5039924.
## Software packaging/containerisation tools
diff --git a/README.md b/README.md
index 5075b862d..932243be4 100644
--- a/README.md
+++ b/README.md
@@ -9,7 +9,7 @@
[](https://github.com/nf-core/rnafusion/actions/workflows/linting.yml)[](https://nf-co.re/rnafusion/results)[](https://doi.org/10.5281/zenodo.XXXXXXX)
[](https://www.nf-test.com)
-[](https://www.nextflow.io/)
+[](https://www.nextflow.io/)
[](https://docs.conda.io/en/latest/)
[](https://www.docker.com/)
[](https://sylabs.io/docs/)
@@ -67,8 +67,7 @@ nextflow run nf-core/rnafusion \
```
> [!WARNING]
-> Please provide pipeline parameters via the CLI or Nextflow `-params-file` option. Custom config files including those provided by the `-c` Nextflow option can be used to provide any configuration _**except for parameters**_;
-> see [docs](https://nf-co.re/usage/configuration#custom-configuration-files).
+> Please provide pipeline parameters via the CLI or Nextflow `-params-file` option. Custom config files including those provided by the `-c` Nextflow option can be used to provide any configuration _**except for parameters**_; see [docs](https://nf-co.re/docs/usage/getting_started/configuration#custom-configuration-files).
For more details and further functionality, please refer to the [usage documentation](https://nf-co.re/rnafusion/usage) and the [parameter documentation](https://nf-co.re/rnafusion/parameters).
diff --git a/assets/schema_input.json b/assets/schema_input.json
index fa630b6c0..4f1f739a0 100644
--- a/assets/schema_input.json
+++ b/assets/schema_input.json
@@ -1,5 +1,5 @@
{
- "$schema": "http://json-schema.org/draft-07/schema",
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://raw.githubusercontent.com/nf-core/rnafusion/master/assets/schema_input.json",
"title": "nf-core/rnafusion pipeline - params.input schema",
"description": "Schema for the file provided with params.input",
diff --git a/conf/base.config b/conf/base.config
index 0af2fc0da..f5ec67936 100644
--- a/conf/base.config
+++ b/conf/base.config
@@ -11,9 +11,9 @@
process {
// TODO nf-core: Check the defaults for all processes
- cpus = { check_max( 1 * task.attempt, 'cpus' ) }
- memory = { check_max( 6.GB * task.attempt, 'memory' ) }
- time = { check_max( 4.h * task.attempt, 'time' ) }
+ cpus = { 1 * task.attempt }
+ memory = { 6.GB * task.attempt }
+ time = { 4.h * task.attempt }
errorStrategy = { task.exitStatus in ((130..145) + 104) ? 'retry' : 'finish' }
maxRetries = 1
@@ -27,30 +27,30 @@ process {
// TODO nf-core: Customise requirements for specific processes.
// See https://www.nextflow.io/docs/latest/config.html#config-process-selectors
withLabel:process_single {
- cpus = { check_max( 1 , 'cpus' ) }
- memory = { check_max( 6.GB * task.attempt, 'memory' ) }
- time = { check_max( 4.h * task.attempt, 'time' ) }
+ cpus = { 1 }
+ memory = { 6.GB * task.attempt }
+ time = { 4.h * task.attempt }
}
withLabel:process_low {
- cpus = { check_max( 2 * task.attempt, 'cpus' ) }
- memory = { check_max( 12.GB * task.attempt, 'memory' ) }
- time = { check_max( 4.h * task.attempt, 'time' ) }
+ cpus = { 2 * task.attempt }
+ memory = { 12.GB * task.attempt }
+ time = { 4.h * task.attempt }
}
withLabel:process_medium {
- cpus = { check_max( 6 * task.attempt, 'cpus' ) }
- memory = { check_max( 36.GB * task.attempt, 'memory' ) }
- time = { check_max( 8.h * task.attempt, 'time' ) }
+ cpus = { 6 * task.attempt }
+ memory = { 36.GB * task.attempt }
+ time = { 8.h * task.attempt }
}
withLabel:process_high {
- cpus = { check_max( 12 * task.attempt, 'cpus' ) }
- memory = { check_max( 72.GB * task.attempt, 'memory' ) }
- time = { check_max( 16.h * task.attempt, 'time' ) }
+ cpus = { 12 * task.attempt }
+ memory = { 72.GB * task.attempt }
+ time = { 16.h * task.attempt }
}
withLabel:process_long {
- time = { check_max( 20.h * task.attempt, 'time' ) }
+ time = { 20.h * task.attempt }
}
withLabel:process_high_memory {
- memory = { check_max( 200.GB * task.attempt, 'memory' ) }
+ memory = { 200.GB * task.attempt }
}
withLabel:error_ignore {
errorStrategy = 'ignore'
diff --git a/conf/igenomes_ignored.config b/conf/igenomes_ignored.config
new file mode 100644
index 000000000..b4034d824
--- /dev/null
+++ b/conf/igenomes_ignored.config
@@ -0,0 +1,9 @@
+/*
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Nextflow config file for iGenomes paths
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Empty genomes dictionary to use when igenomes is ignored.
+----------------------------------------------------------------------------------------
+*/
+
+params.genomes = [:]
diff --git a/conf/modules.config b/conf/modules.config
index d203d2b6e..d266a387f 100644
--- a/conf/modules.config
+++ b/conf/modules.config
@@ -21,7 +21,6 @@ process {
withName: FASTQC {
ext.args = '--quiet'
}
-
withName: 'MULTIQC' {
ext.args = { params.multiqc_title ? "--title \"$params.multiqc_title\"" : '' }
publishDir = [
diff --git a/conf/test.config b/conf/test.config
index d54c7159b..955708618 100644
--- a/conf/test.config
+++ b/conf/test.config
@@ -10,15 +10,18 @@
----------------------------------------------------------------------------------------
*/
+process {
+ resourceLimits = [
+ cpus: 4,
+ memory: '15.GB',
+ time: '1.h'
+ ]
+}
+
params {
config_profile_name = 'Test profile'
config_profile_description = 'Minimal test dataset to check pipeline function'
- // Limit resources so that this can run on GitHub Actions
- max_cpus = 2
- max_memory = '6.GB'
- max_time = '6.h'
-
// Input data
// TODO nf-core: Specify the paths to your test data on nf-core/test-datasets
// TODO nf-core: Give any required params for the test so that command line flags are not needed
diff --git a/docs/images/mqc_fastqc_adapter.png b/docs/images/mqc_fastqc_adapter.png
deleted file mode 100755
index 361d0e47acfb424dea1f326590d1eb2f6dfa26b5..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 23458
zcmeFZ2UJtryD!S#x<#o93es(Ww4k)maRbte0-+a?-g^xY-3myTE`8G_KvA54)F1tn})nJ5u%TA4Y;^!^{48eL_}p#q-Umo0M|F1
z74+PQh^X8N|9_jcWbq~
zzn+tZC9B75nKdz=gQ8wo9GJ$P{D~3knlI_`-PRhCw34f1oYDLr^;oEbgxa#A^J%*2
z>FfDE*(~JzKFs$t_oeLz))qDU?s}%Q?7b~3Y;lUi^Oy-2@3g?joA4Wkgb6-2=ih*jub)~7yZ`T=L=Z`B`{1jhkB-iSjea94&Eo9A
zxN59pv1p_}RO1>EC^q}Z2)ZI;b7JV_x4lMr=Bker2+EK;8~!;JO7re*@ZkDmoV878S*N^yX(F@U1yqt?Is3nnV>7}#(5pk`V3C)
zWhB8;CwWIwsVIjH+`<9=YA(j&3DgQdFOOGU~*`36wNC&QDv8>
zr?h2PQgnHkp&t^S)q^K!68h~`$PjZW&-Wns;Zlw$M2sc
z1xR!u{m|Kih*|Hht#M@eOMM#8O*={^6b9k5B5^eBsrnhVHD7XZ5BWO&F?q(>Y=QFl
z`f>yQ9NCoxZCH-1F{#mz_j{QeyY~4h*VeyYZ#S@Z(Pnb7G=ud!RW)5svqM*&GI_za
zzn;8LkOTT?``1Ygt6w!2;5arK*o5k15cdIJnMg)IQhF_zVK%!ma$z&jL
zZt>Q{!PqKl^`Qw?nJUOEm@@qX(y(TwSJ~dqW&M@7-N4Wk_wC4izx(xJMrmNjsl$XR
zCyK&INt}7@FzNAbbg-nW)sJ>3->I1+2~YdlPsaS}^X-H0GR_CEsw`PGjpq`uX}8VP
zJ)HC34>D(z{KR9;E&z=@?@q_|I{NPOj~g>w!$gR?Tlu~F+L$Mk%}xQEm+{&T(5zkH
zacVy0k3w!T9r*p2sgX@V;^+PfUYUrEde07XSV=KSDbkIZU!j!Rk3MQV=h-!y@kWVB
zdYkmu^fiU~pp#ixe4hBEMx7^LdHa
z_L*14aVIHtrsR)SO?=&kQS&JR#^AVvln=P=bUXEIy$QB&!s34znCV@y(C%j9V=}SU
zoYLHn+-Lalm0$-=QQ}a(+2dR*{DPF+)J4y!ukiA_T%dF
zVKEk;c?LWheG#A5{A20}CKjMw5G%2}cT5@Oce=wqdobHC70=kY7}dxt3diH9(Zcwr
zCabx8yObHQ@#e_wjl%wp8s_!Wvxe5f-Duin@obgt>qOcqN$$@{X^C_rEDh3fmM;|X
z$zu4;D`{YRbaJ?o!KkazII&|th9v5MG2Mao$ytOHtW+wo;XJJdtLuGjg;d020qT++
zpD}e&o?SeKSqR`}4`OdkWNC7K)Wltn
zbwBrWGM;bBGm8uP_RiqfwvDD1f+uRX>b=nTH9Y%vpg{ka0e*E>%<+3!G3#s*-1D>q
zHg~1@BT52a*L>mVcP>6y*0iX8@!3tDFJLE+sRlnU(cl``hF`0Q>e4i6P8|wKmqIqI
zoY+a0V*Bib0`F9nG#sR(8$^!IWLR)cE8@7XZTN%L-ucJ{9yijy)w5Pom%XG7V<^PX
z$Z$U82w0qgcGmld-O6*e)?pm$g@!6`Pps5SPKccjDf(|vX9zcLs7t!7cyyckZI#R*
z#lj(HqfVeqyZ+Va{)>65sAb3IQ%a{9W^_F!5!;w=XD}ZUHFH$8=Xjw+VE)s$q(nt>
zE2^aDYki5`e73RQ=DxaBNZ6CK?XKCv@V}=y(g?YHnFaHfXnl}Lo;36@?471W;Se
z>pE*@M{Y?CevLG8il9#HXG#W3>;o$1``EYBY5i<;JlBqj2M8Y2!+6bPj1(S_bOksY
z<34UQE;=Z>KiL``pYd}5fpOOT)GJQnXfNiAc5wgJ>F|$Eqw&D*Vmz+#mM0oFD^`-^
zB~SXe{T+5hd$gnKd7Afo9cy&Lii@syPDFDK)^V{iWEAEO@?xzx1bd`ta
z;$(vG+=i3~9|D=GX%f~<>eOVjy~-yRAhLf2dR8V<@M_`C^ev(yOTg{uf=L3uyDb-w
z&)l7KXS_HTo87BxI}fXF{ge&5p&IHk9M1}eNAwqw)`eZSOPFhqjS70{hyE@C{oSN$
zam*`-UH3RF-RWEP`^Su1q#n_J{AncekkV4m7YITf%QHBo60h@pk4N4O}hhf%rxuIZGiQpprVMal%h7?8+cY#L>pYnx6v!EnuIgInW`
z)w!NuTp;fz9md^}*x@K9+`^2LO*bZp1^?BG#iS@(4i%AB6YP023T8Eb?M5K7ElSpe
z9-wA22Mm}VwDkmECLd*}a=7bCf(}@SHs6UBe)Xvk(+hQ^^unj5JBeo$=><{4PBI%P
z4_9XQ=XnE``;1Daa6f`~rGwNj9{YXY)eIw3G90Ip+QEWg0%?g=i$UHuQ?Qc0OR0!w
zv?BvlQa!QMyI*IP!0>goBt$xo2^hlD&wRp?$=}}#?q~Yw
z{**_|5&yL*Epz|4V#SJjg-lNaIx_{sCL3R=_VH&_;oOn5J2P=h!0enu-i%FAZ-
zw`Hm*u6N*}&A7pAqr>-?%0(lveb{r8>hpDmex?Yo*8!-%1?YV0R~VEPBFp>)ba=mv+2(#>WEy0yxHZX=Cr2
zKmew%=^>HsD3BtRR*#H!@!TTGcI&fHrVh)P&|X;>)OHML+uWDn(dlsDjXa;5uBM$r
zdt!r~ig?5iGbx!GpH+kdG8k0%;~)Q#0L6wFROJ}^Z%DvO3x#yNk13^&ccd&l)BP9h
zD5cU-qZg-rV3Sg&?)`x}cI3`zw#zq{-eN4pNf(+?QuOG4oZ7zMGSVqOUe>`u=GfKM
z{xPCciJFw9%Pk+uDSoormR&c=fS#hGOk=RGUtizBOoY^8P(>!Si|I9i=1ZCQbcc)5
zgE6UED;+b$4udhZjdXwO3tpG0QaQwXrLOx5YP#TOaS@FP!h|G!z!Pbv?hTp0eQL
zoUsiv4d@*Ck#ID9-ua|zPbQepcC4a>>9-bJApd()Wg%}hj#%A4pO-q{jIJ$f-SL7-
zo&=keG_jhq$Ty4e|J^l6j6TQ=W)|~&Ei6gRn<{*^cFG*tS19#kHpMD7Y;wb~!3_%X
zS_-3NQoGiWCX!M-Id;Nsg7oSi4VJ=Hi{bYNfjnmTq?IyK@@&_uacfb&8h@DIe70-Q
zZ^KaT(4UX*vf7@A7CY;P!IVGIuXPRIe^&71Z1EyHO5&^=jUUKHF+h&m!4!dOA+!Ed
zfA#uQ&p6vD7|O8(?5`bf8^gK)6p`>+$c*yG?Sw29;OD+tp}kDD9augDAEXWbSVoie
zpHF1Wj8lWfIZ}mx%(2XREqF9!{fNd&iurAaoQDMCSNo!vRHE8wH%QLLZf9u;ADqnxOaAD#VE%Yg
z?Gb?EmGbY}a0|vSZPlF3z6;Kf669Bf%h
zlSGiY-}E4LFurm_CJN)(*l?=uX);o&R&qLuzENz?9I%S&YQ2>rVhx#c!hbvWLL!CI
zA8mXM$zjnnJ#Me@-99}hjxCE!w8|9w{SBlj%Miq#dvS5GHP!DxO$sDx^4PF^#`;A!
zb=bZ1pyj{R#9h$r7svB$QlJqeF1cp*ubT12UZ!deKFG%1N<@S2x&2UtqsVz
zn=gF&$D4i3x7&vdoa#^cS?bQuP69OpspVPxm*%@DSWf!NG`o`y^R~o1Hvta;#!r%i
zvEB~Jsi~sJ7Y35P!bf?OQin->fAk+TpU$Ow1st|l9|i2rrOneBP3&aDyoUj3K{a7!
zOYpnJyYD#nr4GNJ;@$ce2dSN=eS7f-VptzM(|Ek^ze)mPVrpAEgrFs3mL>f(ZwriH
zCZ65HdO0|W@2<+v9t?J=-4U9>bvM@@Ew4uVZy@c^Ovw9`k|$!+CTAn(u#4kC7TVTB
zXuy#d+GC@RIMaPyp|Y2jS%RJkktCracCaLqfs^i^XFqK#3z+d}n02*VDF&My)vp)lNzWx<<
zGB7hEAH?7_joYR?>+&+JIas*%Oiux%kr*X*B=8N8Ulowx0MkRK?pR)K1F_m8>dSe54
z)48k>#|F!OV#yOs7xQNQ@1iun5pl;py{tx+o044?r{W2O{f}3r{#QS#4bf(|f9R3y#6*0YY)
z5Ey{M`dj)yHl)B{sdmvti^b0IE5xFx%jJM&5w69;`PGy0vGk2ztSW|5H3~zhXO?mn
z+4mo>;Y7=4&gC}HifyMO`#70u3H6;0||
z!l=0lP|zVF`bfxm{%i98943^7y4Iz};Z9F$oY3iUI*FIsYa=o=nS^d`;3?*wDxi&|
z=?oqs6uDcd1e_e5z7M5q(+I^PilSRE(T6%z<=U8%sq63V!wELY9Rj%#Y@2Y+TEJ8(f_Kh0ih?l6E6~wDl3~?-5%7>d{
zKs0XHUeORoi5+U#M{kE!Ae%|)^dabh1DsJI9N~LVXp*8$XlOfc6J+Cc?}SM
zsc3N~L7hzcpXn2>b(_YN=J*C0N}$f_NINTiV!~L}nA{wn^XfBogd5hu!G?*THg^mF
zFJm@9m{X~X3t5{7
z#lWIO++R8;BTByGl7U;fz|JBB^*4R|bLvm18x;DF*U`=kyxbH2nD*RIH5AWfJ4^5o
z&Nr;*|NreNKo$fUI5}~n#Xcbjr0T-7MV;wZXA(QPt^`x;=ZK)5^`AFgQM?7ry_(Tm
z0|EhWs&cYJW?|uvc3af(tfuyDf$28~R=HOa#}3Edru##Wwm0a$Vnk=_8+eQ;
zfyq+GVt0Twr^QS*HtI+&&>_<%-Gq-!{iQr-3LYn-6bqW0VW)>%iat!2IP)Jd+LgnS
zgI+jJ-I9HMJ8Z*$2FjwK1T0RpF%U`&x)S{3HqRJ
z5^;r?VoA(k7*aP@tzB`O5Y26jv#x54xNH;E`KzzLxC)FEnQ<}IR#w*>9sq|zFzZq<
zdM1%ynXvcLfZ{Xm=l(Op?=XGV8`BwRiQ%@@A-GnjD+y3K
zN2Pm011b!s`3368%P&MapW-PDulXKfpeyRXNjN`lKKgC%CplwE#GrRw#0FE#Q4>R+
z23B4CmO%uy8Y@;F$hCHU6+oJ}_cKgm|4Amr{$`38ue-?+GX1T!hd$w@x=z{w30Z*W
za@$MLl^=f#*oR+8(&a&`E@Bj{{1O;DPjj$g9U7~{m*?^Tj}Rrc^wc=(SycXVT?bW{
zUus*6{74fo{nOh@zQyv0g{)t}Qekl*>KXQYCI9m2jqge|&Ntj{V?gLs*_GkeODYhf
zW39Q1L1~vk+#E^S!nCyO&z9Wh}2=K}`9#{=`j&)^}8=U|lz}DqgAteVsos){s
zDhK`>&pK%cVuhO7tPu7@Y4|yXAdHs!(uKDuLL@i$Okc6Gs;2456Br??ZNZiONAe!~
zvY5w1(C)E9fRmpWgWU2Su0u6~9{@wIm<-lha;uuEN>&C^FJ#^|oopkg``l#i0&{OX
z%rI6Q>l^9J++K19D;HrFU#V9o0M`MBTT#-(q&A{|n-`T~CgAFET=$E_&pIQTPE;J#&nrwf2N^I*d
zH)ev~7d=Sy8<@syK<`PFvNtyfa#8^JceG^ua^o%!fl6R&j--jGkz8wS`EgfEZouOD
zr97H059Dj(#$*$-!UQLvb92wS40!wJc!4K~lq-K2h2rXunCs?SjQERnvv9Fs?tF;y
zWUTcQ&PtDMbsUY6_&np`UGMS0ZZIhnDh~p{`Bryj7XS~*R}%z6
zUO^hJn$_-CW(;$)hHu0ej1BNqv^o%*D2gR6zUvCZyw)ddNB6JE$;okhf7PEEz|dRN
z$sP&o`MU(L_I8mDW33;)3!U*;HRm$zVV%%zaDn^*Qj~RdWdFNb;^fRhnF&{oeY-tv
zq$p~pZw)Ls$EWKsEZubtx_9bpdCfsjdy*<8_Io8VtCIC+8kk@Qxdti>xnu}nRYJ-y
zp8$3YP7u;u+YlPQ2`o_>S?mpXvd0-x!Z3=}>ceWDg*e)+#wQLE)Uwhneo
z;*y`VfoY<#lwT^k4BP(ytfI;M`FoYsedi}L{1V|Ho}ciBs=`@vtgnieHdpWz%Vyy$
zlnn?k0KJWOnlJD9>6y64*X=G{lyl&%pV8Uo&>tXw%1za!6*YYVB$jR$Y0XhB#1mVx
zvjd8N4X~{Dd&28RVEkCw9TLN9*Ng!?9F88l2Bl)w%7!97mtx5(Qx%1u6h+$OGa4#qGGGI{Pj4d)5yg8F4O2sfu61u0uM}?$_nH8=0St?`ogZ@1LAr@*uC4Z9(|dIQ
z?OH<_%?PD56K*Kty@PQT;W#)tazY~|I7-aq)tQ($$#Q?{gEbJwJK3mnk)|l>XgmJQ
z_POHzee+4NEWu0i0zUFmLTF(zvD3B%sp1_F7
z<|O7{-oZ2>t9k~zX0MDQ(4&(YZ#~baV{$ah?o_K1p$Ad`PAvgtuhW(xO{@bMjNb>Y
z-k>lsDx?xX;x5*9RSpJe~BwLtb79%{p~+JTs5HZ({u>j3kAOLx*Y
zW{7^+`OD%vhcxVW39F$jZ;I@H`3X?>Wwt@269f1o{V4-t-|dX4x7L3j
zUHltoa@jqToWvn&=0CF%6%D0h50m^)qaXkRMC&Owv8iG~$}1PBgld3nBE#Rg(5)8n
zga7!2@yjoBBoF_e3M$ongy7N1L_hT@!LUaCXX6QLZFKcq1r;;Z$sca}zfwaCji7PcbfW7H9p`7Eh$-j*7-=%{5f&}TidFWiMr=NYvc}Q@gh_z)<;^d&F
zd@za3ugvK(BbprUX|)`Rk0&+6)#sm5S8a7;dzrqn*f)iXpvW$BVu6u)bR+ywtGne@B61Om=Q)yvb`45S}|LKt&5@)wSOfk;LhZ^UofjlQz0h
zm)>a9f&40n$;-ndr=xntY3nOFGmA5POfiIsfgTzT*Cl
zU{P;It;qo}n}IeEA1&?GRONCJp3=_!ce2$kKRZonNV+tS_uFPWzeS
zhqSPws(Jp?TsgNT7yGtphSz=h2-}y#HTWNE#@LHFs^pseT#RfN*P8yLUm`jG1N5s*
zfU25qv2akmjD=Q`s4SJxi@i`xIOCdT5B%W6wj1Fz8)Kuv*iB`}b^(em~z
zz4~VcUB9M5@W}s3-SOWXu+*?)Al7p)Bw?jh8_#s)>lYp{{b%_vCY00=iC@I3$FcpY
zYuOjg948l-C~}cDxL!%j&X1(H6ZC7U5?oVLQ<)zh*qg)k6HdNPB;PQcbVRXucl7>@
zE`Ga=^8RPrIRE!3E#e-v8MTy%%a1yk_k{s|V-=5ML7(Mg#S@LA3;rEyjF&X1w*^R&VJ>2%B@{=W9BD)oa@0!_Gl{G8Oe+Vki1QQWd~<<~Et
zEV_YlJ=t8VXv>#L|FKXIJ)GZ1(d6xUoSPZVFOzMhM$6tgyhWq=@}=HzWm&b4o8R}L
zQd7<0PV(LqaHYNNcXtTN4rc2ov$)VeRm&}XS-vamGB^G4tspa#HrPa5#22^pb?s&W
zS%!p!fba6R+WLMjkeUo!qpKob}#cMpU4(`C+U6R8i>qlJ&Hbh52enW<`FmyjlhwlfIlxyu$Pg
z3uS-Qau7K~%A$hBFocIe2<$LBIbEI!uddh9(JX=++R9aM|DO2#5*qKh#Zq^~O40f6
z0#s@~v{DPy=4^A}ieKe(Idu22Ex4~>p=#u?w_Lx>bHE@Z4Dh%iKrDJj2IJ+qNDIxj&WPRXRSaNz$JyFkpFK#gLAB6G;4KKql{+5w
z{2yWKln-fjDCc()q_W&mmIx?JvpXPb{)hR&ok40*!M7lC!&?b|=efwVb@r0;FeD2(
z*x!h~5OA8DEVr>6PS6o_oYt+7HY+d${lh@ruB?hP=`vq;@uLNGIb%@~*X54+`NY0-
z35nZLFQArwtL~;t?sb(T6k;wi@v0FFLV}%b1@;p|R%u%8ROV=
zRWO3*fG33>>}We#nQ5Vk3gY2ODY5fL+-E@
zvWG%=(;1n3UEEjqSDn9V_C*FMSXjR{uYKa`>$>D#@FacqRX4qmy{)y4&Gf)@V_BVr
zvNEa@r<%e5HW?jhEb!SY6v|~N%22Y0992I>~ud8In`Lf`QStH3E)x@G=`2&AraN&V){PF%a=v)Pu{I
zuQ7a;TZAlAgDiVUO+`B+z-8%M0kCiylcazP7I(w|^h*D4Sn6R#-jd7ZMN@iJo=6v2GyL
zo;~Df{e7CCta*U4B1pD0lfi=EwI3CTf2}#(`mwSD-u-%XLU(&V?BTG?P-Fx}R5*E5
zcvSdpxqh`s3e`yRJ6%Efp|NYd2}SjJ)h@$9391YRLSU!qq4E=W9yx#}_KqRcG)(~r
z!+&i&OckDJQ2El}fI8mdeCHPcJ2=byp-dT&ZFDzLuqc{lvh)^vKB2
zL}g}~j~QUN0Fo{!0BTTKwrDjx#j6KVb>MsCz=!G&
z0?uz!q)+3>Q|KAM0zy>+^zjMt4}XE)t2HIfc*Tmi?$;KdI7B#Aw9_O-Zg>98L}4}%
zna0Es9syWr5+f5RGVqawtNUt}*r|Zy#6ay+mEGaSGMmMOW%88u6mXzDD_wlGT6!zy
zpLOrO442P{0J&IYJjqwrVrEF87ZDTT<9iz5xv)C#pUTTj+d73+z7GI`Ehx*q&zxS(F>^b?4*udLeSbU~XBKKi_PI+|
z`R!s3tpv7gX^R3~Cce0vX(P9@UCS)XwG6mNX_eM`6X(`UW>OMp*nTlrcUU?`gCzDr
zKR0P?yj9z#ME0=e!>GupM|%&t{Qcx)sN)wVzW*5E>yxt5g6NEc!GR+F(!Nysd6n&^
zN?K|Q@t>y$%H^
z1}}eMB%-GY`CK5%Pj}AkUNRem1zBUE6y}0KA;6;dZu&VyB`KCwPfdQ5Xri>Osl*$@qxi
zNUlL!r3OOxC4C`xXPqL4Ec)b`ajpfaw12E4xMZ6=Yyb-WN0LL2RUzLj
zAKS$6X%>ekm|3yQ$#-`3N8ah|B+0f4bxDc4nfJcHZ{dlBeXYRL5bY2afSAF|vcc%G!HPxGS8==1)_U|T
zNvWWGt}f~OGmCtqW8>q3f@5Go0Rce)p>g@dgop$3UUF3))$Wn6gRX7M3GQ}?tC)i6
z5#2fg?U#)GsvTF-;w
zY-Nw9hPGMC9F9(W5F-PUEmiuS(F06nlcE{I)}b=%A7_~A6cEH$BClS~DB|X6Z*IT2
zIpOX|#S?qiLR2Osk#^=DtNG&ym+&FR*Kv8P<@ep!ZLZtJSjcEO2t@V!3dE-*!yhNO
z<`xWq;JT2z{)iLD9MQ;&^p<*B%Gv
z9;zH_>TGtlGO@9MT_xDkFS4=QaZA)){{?|_B)8Hw-q)H3IPzKPiHM2|2?0GNX^+EI
zRf5>q`4yE?GgaPuK8|(quyuVfv-aF(wlXs_w}4}Na=7tnIA2P*pcwxEhcBp%Q-6rI3Rc0j@jnbz>h=|(@M6C7U>fx%lJG+#q2Q4af?@H7>c`6Fw&JpwfW1WFvJ!J#H
z%4DH$Nww@r6h6K-1K$M;1QOi8g)GMGRywKGssy2=E7s%k;ESt|W)#O-pRtb)vf8-D
zxR2gI3De!E>)xMZTl>m(C!Tx|_c}u7mC!FmY~hT4&*t)mO76L0VQ$Zm)=+l7>+9FH
zfQZjFC%h{enbPhuNz~lx(beZsjm#JG@8B$iw_cTSX-?0fRc}lkFJafCcF=wqJsUd8
zMn~$&N!wK2xp3mXuom2=TlzBdg~W^u`*x0IxUuITUpwpCCpIqO47DsRfB}i?8mn+k
zO?VOK*oa)bFN6F7oN04eyGiZR6q#;01`nk`g-ro<5USFo8#dEMz{N
z)FLtwpl>inBl;{0syyqD<@D`l$#Jfl)EJHXIv_2TJFdCbB1tJq2^~2}iq9XvxA^o{
zn0YLREmF;vJ(gM2^u>gGlpZOM>hd=@e@%v3L4CC$gdajz11>;t>9B37u4gN+c2EaN
z7N{PzCO`Ov_B8QVS#5&Tgk_TYRF@xdXvUjab#=&lP?prpL~g4|3*W;OC@JF8+0RZoP6YS5=9t%X5j<@=9s
zJZx5j1kEdx-027b#7vEm4TRT9soiaOv=y$Y#MT=^nhP%|fDdU^7Ez#Ft2I{)2fQ7`
zW7SkW?%wkBWnL)w_~|{}hkUWMk@uEt@uS1%?(3-dK@CnX)?b$25^pIgnsh^HS!eiB
z?gK|C)llrf;ga;b^r9EOF`p3yYRe*y*MIBz1Bd-qR8TlBdJn2ur@`?phF`DfaY8;D
zCwmvCvRQoWVlI$tetKk}o?MNTX9H3!Y@C`PXWV>S%$VZ{%|p4jHr#UH_Ryyow;{{;KtygLxrG7(#ca)wTYK
z-Y0sN6h;=V$f!GPone8y(zPnL+1N>PyLSs(y=`1y*FQ1lR8e`3s=cW#m$+c=3)Tb3
zN7!8_R~a%Ek8tTvTN6~|O}BoxmiKrt8Mkh0)vSD{hV=%yVvnL*%!|m2!23pSnTfsT
zwQ-^GnI8{pLlWXKtGU!5h-Pk2LFIGB{oj=);~!Nlji{=PmP~Mqtb8I%bKzXfV~y`v
zhZpp~H7qb%5D%?Sa5$&Vmvl)54qk6v;W{B~UlL4_
z81zf;L5bb3SJPuc^~%Ua_>tB)$VLK>FZvy&b%*eB+g)qdbU(k_R*eJS(gX<
zJxL0apH$ji6sKDr)n`3{aNlN^Qwkhtd8DRdnV96&?L&8b5Co{7;
zvmmb;3CdwVs8W1GMY~|zn1^&RO1t0hBt(ULtGJTf^IAMxRpD7HU;6{ij?XXdjHv`a
zw9!c(a5cYpR_vk~eKYL+k6gM+5023LHvMEY_p}y=4k&Q!!C<*zC^2Ia3C3Ji
zL1sbM+*p_j602gKXP|mF$s?~%_vnUv
zj52~Vd_MWnLq+!(*+*-Lw~%K)_w>^_onjFhcBsl-1z4eAVzf$ZoD9yB+;Sysedi;%NXg8B1{e-#F_eG|zvUc4YC2OlIpARjmdsP@u05
zr*U3jsq00uHQh{r5KWSeeT?KjD!)FjzCJInzFM??L^jL9NcW`?Lr-^4X;Bzlu&Q?y
z02M)ULBT=3$s#1Y9wAzg8-+0n||g$cI`eH$?LAzF9rpS6h3c^3UB*o~o`&^2bx~YDhrzULrno%G+^r
zq3*RFmK+#R^m@8?svWLq){v0z;Az
zxet5`c$dkiO>9f|6fbU>MAIx-Kjc(r4SckyK$1&9Ug3)mVCA8Y1>GV0bcjayWKU?1
z;d6`Ui1G&YLMmdtb&4SB(ffffFqD_1Okq%F3-y=7Xr$+V_G^RS{QgC
zXKOBBq9L5K2Qnz3y##l~^f-q^dVo0JTO6ysmtjFF?tQ4=Mh9FhB)1vUcK2(Quo8ja4+LSJ)Y<8ba
zuA}O{%Nltg%FD9=r+$Zri;I)XEgq8j;?A9Ap0;b5j5DIM+@eRt2of>UaXBan>ZY7*
zVXIJgT25e+vU`n3vm9;wD-XX>S5Izts;k7?q0ifUbXFZ
ztu890yFSO?daUUr!gp4FD4cm`X`a_ImZ)oY+O^`2sgS=Z-sfHvxbI807yFk_pf??D
z)@elHpxFmUW>0G7ey-bx)DpdGO}*NS(z-#}PYqNxLg1@YN}fvhUtBLqKc+GUT;OW%
zO_B<`R#rcqET`udx*1pLFro0I)_p#G&G^C(J)_;ph87-;WP@^*-yrWnJiD`bUJP4q
znYR1%sd_A6GDQ|qpc%2A)KEGs;Y;857S{2jmRaCehP?GUgH%@%HTz-B?uYLBrVgP}
zH@h;%V${F6+&AJkBG1T_xqmSr-oU0c++uF-EFD
zir8XIv!Ke#t=O)W|8PyRa?ZUc=)2$4uI5;dauysN?Iuy7nk&-rwtj_
zbqWwtQli>QcMkpbLD<<#ef^2AtKAu7XV^+t%ng>C+4%Wb9$F58#E^h`#n9f!Ps
zj#E`k*Ev&FK`3R|?l*-YBQmL)w`1e~thLbiWK69X#vg3g_b_#aGcF(hyvqEk72SD;
zu~^e}9oE2m94b1C2NhicobMMlg}U1!FA|mJle8de9Xe&=-H(MvA(68kA0+z|@_;-#
z&(b*W+h^U$FizY_L_j1L?db`Rywq|kJ8nKA;QjfTaq4P?Nw-t8PTt*s02E}f>sbOX
zogFNsq@})oI`S|>iHp=g?5*Ri>{
zfB@dk5v}dqihux<=+%{)tOw&-*p;K#;k0?3?5LDv#-^~Bshk-i29xz)oSMVH0{UfE_@k=$Td6mLADmA5HCS>H;8Elg7$zuRGQ_PzI@
zO7f{m&I)ngat~(Q!A^05yQ_P6@m+rB1*YFo4Y=~o+^59v4+%;&=jKhGbUydp4sH`1
zy;I`gK$wj(W`yp3Yj2)F9^2eqVW8uZJUv^BWHR7|G0X^Vuta6p*nh6WK_UPW?g|4H
zCB73}#_XrDiYLG?L;{a;A`xflU$&e61X|e>FFS;FXT~~Nej^;8D;T+(JOGZ)-YCl!
zDic2c`~DhIAgQ(OXEkNRICxKJ<<&$(86$}P>l1x?yCEt=imFk`Pe$TW&4$L37fnx4(%*=smL>0uH114m_}1+sdfuU!A0Zqzr@~p)h_Rae)3fnObHlP6C?me#TrO
zCzi%;E6iC);zLiV*o22GEXIF{NL2tM-wS{K&aCtKGNF+iOQ+JaXYw|H4%FRB?7R&T
z1KbAY2p!11zb8icU0Q6TPkZCL#ztpG;uZYw`xg!FyJfa%ZgI;OhQyI`fsLCle_S+t
z4uqjjj%#Gy0#Ipt92R{W{euP*jXIOxh~qaUFM9L1FgE=XM~3_=Bba|6C*-;_c4HdFiehcxh0
z3i5W02=DV{(OsRR{NTp{O}%1D0O?=QOrHWG;?)^(Uyagt?*2oVuw0Pnoh8{=0EzL^H|PjFP(dF&|L7WETT0GcVgY_
zx1oq}^k1#{aimB=*)HzvnsDIHm*|-4-oMfmwO_ThrZR-9o)Q(i2K8OOn)fj<5|I>i
zrMN-NYx$b70)BeTtJLb1l@(5>DzdL{44E$Db`c|6v{j8rk`njaT(d`!Q+zvdV+~uc
zwOi(`abOznKOr4><!y3?&Pn`#_&3l#Gef?)=p3_f^Ui;vfzaAOR#H0C-
zC_m1^677NRcZrEQlhb%^AG}2eIicl$V9+BoV;Y&B{w1=n5~3`>l3tCJ_iei91O5sJ
zlfRNrKdWsWxAWWhrxQmbuci*ftO7n7Oc}WO%lj>uVaUiDKPF^(#js~|dl-WEB(b%;R&%wBZo4s*Feg>11~T!zk!KqRO#H>GQupBCvQnt=r+5tC~|_jcwZextGmQ=bxnE*pJAI!;`6FR9y=}o5@Ho683hnm=2#mq1!K9
z;~t#M?%xqQa&ju$A*O`A5Y;)3bM=^-yRtSfb`+m*&?NHD1^&k_^1V`zUUp
zBQjO}+aSl}wx4UqTg2FEd)wQlHv^*CRVd!3FhGRo(ku4))jpO12ugP&rZjKiwWfRW
zYw>!=HK|cBWxk2w*r^o8&xo`u5~q#7C$1%JvzI7GnjkBxN}y~)MsK5FzthqT)I+i9
zLQUJe#tLyOp$}IIr$A@HkBqga9H3%Ak12)kQ{#!2%+*+9#70XhbyV%2UkvY~D0|mM
zOicCza3cpNf8-DDqMQ{MkW2mhk21pBOx#yO@k>+nz1ZeIc+LzQXaBES&Mc^@EREx+
zqiBmVE)B9tyJ8C(1%!qWVxu&JY>L`J5QAF>)IcL^2uZMMRMdci4TdEsixgYJCJ-=e
z(Lp2&ix5o$VGm(RSON)Tn;Yzh>4%xBd6>6bx9&ano^!tXf8ROv|DAg`e-7-iRZ8cm
z=ml-2W49d)ss}v#)i{V&<{UK+J~DWlkr^ixT(|EP4_lGEv+7l6mX7
z`rnoA>yKLGlLdp#ymRS3uTeX~bc`pDe>eR8u{uRKGM^xch?2hX5Bxxz6(kXw^chB#
z#7h9KbJ}H`x6PI{mOk`b>sfNpaaH^>y|DfmqK}?)K;U6OD{UDN0WtzaUnVZ#(spqZ
zVUr8UHtKKJjt*vN1d8xgpq!jad2C3(uDSb@6AQqAzw;SdN2f_9m=Y%6(PT^t2e
zg=!ibR|V#v11NDo)>*m?5o>hTQnM~G5obZpgu!tGj(YQzF70x0uAV}pwc8nXX9bNO
zbd)kXD!8@U4%A|o<87&s*`|`dnky@hr;;ZAo2~Bu2g7qn%3zfDbCVL7wu5
zo6Tn~<`BAK((ct9AG1D;F6BcA^^r>vEU%LrOxsOA%-~5M
z#X&|sFPm7+R$g01eYw6pxAtP}a&bw{TPi%16;?Qf0?g2_F$#<3}XnXEmOcm0X
z!{Mfdfq*I2fU-a1TZs929@5Rg{4M{z@?9Cko|M^ReIRLnw|jnGRaL}G1ibFOa|A7s
z+co|6Dsuoxs)B@lW!!Fy@jnb5RF(!^gPXPin?1IG|04fYi3yRqp(DWls)4f1ZERc>4-}4==@QsXQg#VCX`Pjnxeb({{Mj4zJ&j-1gzqTJ&ZexJiN=qXShYkaMiouM$*
zihdgSA>BBh>UG8sz{fP)%#B>6)ZZ=Zve3ylD#}%J_s_FUjp|p?zS5nme$D^s9D%?1
zd2a%1f&hF>jr5)w_Qg&=>>L|+n_ZGJ{}HuB-aWy6I|{a6W`Hnb;cfm6{HJ~AA5ZV+
zO^P4X_D8eT5KMzCi0L0n3XE^`Xqp2~J~>=whP^9u!!3KaNy^5JOLz)Qwu7R8tf2ks
zjisRN+T82EvVNsTX1X}xJ+r&E1Ana8Qpn2QD&fVB#c4QXwtxn8H8-fA^k_PfU1K3X
z>IqazcZf<=_}R)j8P@aQ7;I*x%o;+#m133p4|1XdRsx)DWgq8qRCq~o16CxrvV~U`
z$2#Ub_snsmq87&UH8fBu1S$k8W-@S#nO1mvLoQ#oa#qzo1j5WsbiT7n#x9E6xctup
zJJ%*Op$=MhR$JZqbv_dwGf|=jmqw4H=Qe2mw@dI%LXLx+E_G`7=_yvYv(qNF3xrZR3f^9WzweTrZ7WqEQ>&+*-xiy?FBw3-ZWJN4Th}bQmbtp<+ZqlYjQPJ
zzNJfa4MuhJC8X&CS?MdFHTA9?=isQw$nkr*(2+Po!G*E?U$K}~)F4_CUzSe8@O3kZ^Er5IyP;Rw(
z35J!UL`-m9!A;qPy7nr*dZ@-uSCrN8P)B_V9{n(?zi#F`+gKxs#*j
zIH*Icy{ipTSyFy2@?sB~?5qc-cE2IAHt=n!gOV&jwpC}hxH_Kx%
ztE2W0xmBmGr@cJg0cyO-?r1X(kr9xzu3+5V>1YzBtuK6Ra+RToix@7>2?<#qlBORE
zbPI%~d_ybB0wTJa@)1vVt^ENOxF^N8TUJ5l82Ua|j9w5GM!ns$6;8y2MsryfV`-qN
zEznw|%v2>{C)I{qY-dkz`?}Fkw&fQ
zBN#PretyOeaJs1{;WawCpt=$SI;XBPp7InnGa1cDG>a+B>Gj%*6DIE9rWl)H8{q`X
zVd*sdD=SM1z|Vy6zDVL-OqDUa_)7$Y%8SwTNc$fK$`(EpOnd?|qD%^KF$$pzZLs>;
zv5g|58uwUn(Y{xXl&jn#G4$KyOX%KD$tr1&*MWVUnx;mKg3#9O_l|8-Q|n3o{>>eu
z!`5^oYumbF>)9rC1!*L0!jnc)RWy#I)ou2c_^7-jK29i+|GW6{gJ3&?o*?PGQU4@`
z$7-B=gU6FGBh1l6I?5Y{G*rvYh!1zuM?w70^DH5@`^PXicUM2_WGwV*Cy$rqr&KUs
z;}joZDc2XLy+|3^isfRqI4kTS5mliCSf3Z_X+6tS(ggtRztKx~?*aru3zmUEkLmby!sE-ZloZO_Y`t>6Y$Ly1P@lk?ycSK)R&6OFD*7$sq=57)m6D?#^$`jN9!w
z$Ftw}yzlq@^{wmjQf8PnYd!0E?%(f@$3O)+@w>P1Z=s-|+?A9NQ9?mM?L$Gi>i)-7
z;FZH#{oBA_R~(hZpP`gM2$z8$uA4oTeTsro7IypWIV$k;%@-1yjwmP?PVhfhrcFuQ
zP*C1rN{T#HanoBrM|UIK_dfItqc6S?i^K#wb=ab?`wf!gEn-xkev5WY+aryTcai40c^)|>K>E+ec<8oTH!6Jvz?Pot=)BPAz*Z5>N7QUnkVti;^*btsSu9JUB@m~FS*n@cgXc6=9G3|4JYC@2aKBbRSEYonlO
za7Xp=p9IuQxwVwM&PZnCJ#%x~OjH`hZAy4prD3VfDMm6~t%mQtl1`0vY
z*HSSM%jBKyrWm|{+j6?LEI}Y3GvqKEDtH)kdJrmQRpWguolR0j=(SSeI_c4Jel05F
zE(*$y81yR2r!Hccg3dmurS^Q(HErm&J9Lcb19agHm=hjsYU3Xc8JP81a5~KKILPL7JFyC
z^*y&LQk#x%OoY^&&%X9NV8Xxp!e{Yo1&Fv(yp%lKzl_l9%%8x6n5Y`}aGHU!@%d=C
z%jwtMQ?X)wPTTQXsI6($fxrBiWKUnp@$!V6r|EpIV72dz`))g5bBFxBNjs7q0h_?|
z+eB8$4^{il7xeGQr?`&Hv+-V>O$Tf^Z*KOwdfAV%mO|c1H&BWl2sj+taB>rPpM2Ks
zBTjfYnw03!%t6XgR&N&9DCQ*5^#-(%(Jz$S5s>P!v_TB(teM{aHrGek#kJFI=zD-|
zcF#h8!oH(eZMS`5FU^Vlw!V6P
zQzEMlGS7gS9xjcGDfav+vr-4~BAJaDGUC(`T{j2v{X^#xw?pNF?_27&6{QB-d@81T
z-jvQ!gz*74P}1rns(}HmjXUJydQr5B-n6IgyBo%&<#RShWtQss{dV*2*RaN!muBb}
zZBwb|QQl@PVS=EU>8^+Z)QZ_ATzx_hx8TNFo3PrwHnftOgs4nG#~VdD!^6)nyJlbO
z60GZ^q1Vss__}XBJROZK>0Z}AUiyRIlw@c7XzjF`2{syyG6|e@>Q88&&ncr@
zyL*nFhnc(7S6a{Y@q4H*1@~P-uU$@Y??fFAT^^bIgMnpt^lYt6P)Fa+jKb4p
zZ?a(y9I-9h^0XbT>Ehd`CI8bVkHh_97f{nGrvBL(!@$zC_yMt0=!XydN3CR@_mZc#
zzSR&{_SqO)=z+GUr^3#2Z|8}7`RJTNUqcfKh?g2YU$bK6U3AHNE#Iz@u-ounY9?{0
z-hv)})tBIH+I?|E1_`mA!fP^WBqy3Y4a;XR(;wR(FXiVP^nw}5Q*d-Ej6L8FeIGK`
z%;B=&-IU%>;#5Q2qwWxVl-YB)%VX;np!}q(Hrr5%~#e840K*K^J
zXcHTx3)+WF6rWzaCOLOne!#;jc)rSiKz3TfJ8HH{jDli7`g34i??`x8>?ZHGakeMr
ztT#S{d9E&*&kEl+Jr9sDc9uJ{rKTST%iDCs3SLZK9zkHq@v^LBWkl&IM4ozkJwiOb
zFJ@BFr3c!#LQ)h73OTLoo<_E(o`IQKgW`QBL8B`n1TD=mdM|4BpF!RqRe0{f
z!}sj9;oIzeC<8$;nc#j@&rR`xcC?El2&4SX+3Fm*)tPOw4vf0Cqe0)YKCS5&Gt~@r
zw0Ch`M8b9}Ac`y5Jh^pQ;}Om0p;gUQhyK-E=%sI<`?H{G4fJCE8Bg0~Yw`eyyzlZ$
z0{*b26E)cV%nm-^VM5cm%T8daTZY4zIv?Z-=4^S0c1e}bT|tl0Q2xF!2)*JqxoqPu
zzwg1BW^PPsEACOnTf)3YM2VZz=W7+7O@!6*ZcbkFflHf{n<}Jb=R0k%wKvp8K{95!
z$pt;c_|DCr`-q29D}0Jo1$0`sIRo}!YjT$oixKNbi+kz)J?`?l;~g>YNifUW=0DG-
zYBrDfcnL$m0;t6Onbp&hY^G8DV;IwC;Q3l8RRB%qZ4@Cjcp0VdUOW2yl8X4`m3NTNM5AZhNpzK~
z&uW>?=+MOHR+1U}-QJq1&EjV(W>ck82ABBmrymA;NF&-Rd0H%aM(Q(##X91M6JK1h
zncX~}GIHf%?%Gl(hQdac_|HqCK*lo7_1hODTyeKpJCZ``dDdph+Zf*EjY@iNgKfUEl!h{(dmX0U
zNbz!;kR{sBr3x_OwFRwzHcMjq+Qd^|;_NSb_QkcJeIirtLHIsFi9?W?mw5}-ntn@w
zp8ke;z?rkP`_|2xrp?dKrxG{l6MPoj=vB_NSmHOjeCA(FV=LXNeov;i7%CAVc28G9
z@mmb6hyFD8B|rL1Rd%Mk%g!+s02W^9s-9O+^623Mj%Ds*tiBicI(O9ew4&MLXpmsU
z^r71~MeXK;ldWsM2Wu6V=byFJqzATP#3zt}Dvptv`red+?eANkC&_Tz^}X6lIz4QT
z=4|gqkA#pk4_}<`Z8htj)rv+ko*pr928n7rCSsBi*6(HW;cM+m29P2}
z!v`B^9BA)Z01N_^hi#`)S9UH|+jgs0bD&Dk5vERZb3*!ZH>T|x0ZVYP*VcijfX(_@
zUGo`;5LO${U%N>I@>!{7n%wXrt*M;e83%!iq%TYl2Q6T%O|_HmG6MnCTs1}_o}a12
zmX_+frrnPAIVWAZxGn5czTuRDpLn{lWgd>$xrCl&94NcW4WeSC4<8m=z>K0w~a56+P1wDksK7nRmdn4Ee
zq=bJC5eDh$Rl;@wG!s7z9W8A>EKEHl7uX-2KHbtCX+rmz6ZCCyq+AJ}JL=rJ9XaG>
zc0_4LFR^}Nqu(@GPlJ{U<%~RiBSj!!U+O(`X~9)oy?SiFzO8#ni7%Pq)>~AwwRPmE
ze_7!j-)1dPzAo*;;{0NBCUkzAQ$uN$Dg)j2qs!sZXqAq8_glj4a-dQO+U3WY9(o@K
zpZe4dRjqQ`o(k4zxSoPv&Q{9ykqo5Z$7Yp)1U;p{WA(VZs*`H@nl$cjcABq(>)V
z4s?5N_!w`pHsiSp$B%E%>iSm8TTbt6;YQAcua^$WT|6m2^lZuSvvmlU-t|Yju5Ca5Cb>mVJixq34`PMiwUGtt}AZ4}nLGr6Kod{&6Y
zL23K+JOusXTZFb&$KkZ^W+s%0(kz*mg_oJfTo7q5DSX1X@*xE5(7!Q*j*vk2PPuCYwgK
zvyhqQUV+>`k?(d+J}#z)d*3Qfo3=a9DO}4r_BxH4XV_0)Gl?0IWpq%Yub)OOVcJzs
z@5FQn_}c7jruw>Kr>!mumWzMqYjm9{gbh+4*yAQFA
z`s72sHv3!!_uuPgnCw$EZFA~3wt-&mR~@(I9$pBYf-i)lQkcnfn=dui!fKp`f=qMf
zGFt>Mv~3KG=W#P_DMC)VM_j%4>g6vMd$p@|Mu$n8G62@#JE88MO+eyvu>Dd0q4p}r
z*_wDCKkHd0uK2x1i}li`xrDIGkxl>2S{v!n?{=e@WS*C+Df7D1Zgah99)mCAHRME+#PX!(3lN1tyq=wT
z4A#BN&r~(!hl?8D-(8q?pbPBoHJJs7`@|k~muzS?`<%BY3SNMFYl-#
zSpNE*;$dCwjgys>^i6)kf_KLvz&kOo>VZ$g4^g2h;ERF7FZdOpHo%Xx4-x>mh95zJ
z|G&Qk*S3oEGcz-Fb#*srb?`S+5oBUZl{
ztFc@4{$KCIbmON+V<1@XIkP&EV_d%Z0;RhHk5Kd@szVHg4sn+t6ke?YtZ=e*eNt@7uFX{LH`VP
z^yuQ?DeNfC5hYr{6eFhO_!#y4>pYskSNdV*DC%HvK6rS&(8|h66ttI=%Cy&vI|72Om90UCr7>1mT5s8(#7L*CZeotBrN>eyyZ1y+y3kbcz4m?
z-vfEW9v<~|b#Ecyu9c+N*w~Yk;0f+g-I}NLF)?J~p&BI4_yh!^1j|KeVf%`?#l^Cf
zv(LTd?p?oHTwI)S7k&r8o%W^hPxSYbLb=HYu?J!Y7IGNu8gRMHF{b0PPqda(o9krR
zfCnMf6Qi!TJs-u~PfeG_a3P`Xb)Ooz&ok_V>L=2FGr426Yed6D4eK>rI!RThXoL4Z
zf2^+%$BEOJta5P6g<@7tw5Ju^!y9>3s}{sORA`w4DiS%(2m&pAJtZrv1$}_V7~jip
zOlV{Z8)9#aa}htS_B@PZG!k5PB|W?gp&jRqcTImZWJBXR1eZCp-`6w51l2PLP|JP?
zM$46ErF!W+LZau+=Gv}Q_oJR`^%63KCl{3lVv+O3mipCrU+{*qhztYzH!4Ls@KlV9
zp08Tsu#;Of1_r<4-;nw|U0ANUrWLkt`PuyYD>oUUo_8iJG~f_f*>(A;6&+44G*3=T
zbFcz(rmCcU8N}ho36_>(W3DtVOQVP$Bs#|Z*
zzeLHps63DlHS0g@i0LH|%|vN`Za4Nohl=1@0dJZp$=57}*hGUn2NtW5n!(AZ*Vktm
zgb#drNEu4r#HCy(|6t@_DQD^g*UbT-8!9iDXT%o1zFtNZxGX%fxzTzQd37vPC2Qk_
zLtZd{996+m**lZV_Ps!9M#nrmp<4kB0ZJL(mKp;pt304=i3{bIYumgICnbo}q3k%=
zLnN_OI8Z6hEj$$h`9sW&(#zf|)4A$uDQX)jgtU_L@|SfKiabuqpk*}sBu(z^6IGS&
zVGu<$C;=?*AyPZ`c)55`TYzyxjnXG3D*#(2~YjfQBB=%Uc-N3od4ttKbpexVfi(dnjDP%
zP)qx|aoO*D;_YcU(mOdDB9Dz$&}67?NX@m<*)uSEN{rrkFB&Lw@4G-`4dPsWuNcfI
zBg&^zY{;aN#>#Us4ou&w3Nr6q^XFxvA=R`H4b%#FA1tlnsitVzCpKBH6?-hTqo#US
zQmfRH!n0Ebx<;b*87&`E?4wSGru(E;y7_a1h~btRvq^RYgfcZD<`*=R~q$@dq?Wh%Bt%nbs1AI*a|w7
zm4RUOm;mts1-ZOP?fOaDIt19VbY`!y%b%Z7U9MYY0PibYEos;ZqDp-qD5jY%RU%k0
zf0A~;2pBOERR`qNsA0f|6F7vJ;leEZz{33b5<`tt32|_%Q`uU$a6!E)&g$#u&Sqis
zjAgY}3tMtkROU4yPgRMY6rtJ|V;SYC56ie}1|EoFyY{CaiW}OyGFQ=o36(tAJ@tw6
ztvs04Ll0~YH<)zWeFiq4Z4e~I?>kj@U+>ZbVPZ^wLel_o!6A8pQE#O`*m*xGm2yt|-dK
zogz9zqRwH56>=3Xpz*o*i)8CNc^iH>-a=8&G;LookL4Cin=-g;U{(gya0yHQBN*#V
z-+9Djl$3?2p?)jnMYMI&ZTFvgu1Ol6gztlRnVYgu4ydv7d6NiN4Eq)WX+7u-$D5hG
zzejcxt`LNOA>B-m&f|^isE63nL>{UhSZ^hY8QNd
z%9wY=@rL0}Gm4O^7DVQ;35b6}ESjs#M4n=;_g0~g;S$;%PlI=3#T5TN(1vIx?RG|&
ze?9D=$d!>9Kz$#HT;vNmrq7>$K4ItKfesHZloYtZd!?*Cneqz4G95ori}yN13AMYs
zw@=c+oYS`n+4=%iskM8R1uwzArwQi34YnZPTKkws->Nji~nkb
z-JKxW#*N=)Wo1kCrt}!YlB73}wlQU8L+;+ai|AZCw&yw$6A}pUS40VjfesufM~jO%
zJXCarj#^q;E2~VlFdf&a8)YhLd6BDOKe4HUJCHUYvD(XAw|k|Uvh3E)k+~7JUI;{P
zbwQ};*;OQkIPt1B?M0N7QYl{P~Z32{(ltt)fva$`&O@I;js25et
z^u|d}?fNZ&B|_gU27y1YynqVGMFqIb!0}1ymy(7o9!I`}yT|?LvRaAB@yV_=Xo%l4
zc?lGXp&^M;o&Jqo$9=ST3k1{%9j8m#E;|&?kFc>5r;=f58-FfQ9GaYLD5&n?feBtL
zqZQx9J?999Xtt42MeV`4%QxS
zvSxn6oF~cKdM|UzA~2LWuf6@t$S}R7#DE7TE~@8b%&SIqlZvq_;??0-{jI3mA9y}I
z=r&f0BuGqvrgGJCXGuOdyt*1G`gG9nz;-B{QxrMhhcmV+MZ?;@M`Fm{VbG+f?v6~q
zn|1Z3w}^WEF8(a3T?nOX;hQhz#`u9l?S!oJvOxp}ol}Vpn3zN12FD^2R@LN#~aAA#Z%DCzEEK4h?B5E47AWNEtgHd_*&qz=gnKjQADb(QFEGm
z=k_MMV*S*9_G1JV*GIwaek=EA`_b5Fq8BLfUVB69jYkY&0#7~Ny2Beu93_J3W-B$N
zeR`OMwW!P{pnPjYKU$V>TTNAmijMm<|E2)R3pki=YaH0gq}I-}1f1N+deP}gO##jI
zr;x2Gsn8DMs(8O+7&a3z=t_b2I)M>89E!MRKTF4dtw7I%e^Y_L8MHScesK~fXOvdL
z`=2Ozb0TD9L-K^B?@HSb5*`W#=Sp!`IlRVIIznnIDh(#t4B%IkuaXtBaMNNuZPnMb
z>gxG@b3a8e0FAuo#Ut0rE=Zo?x_hqjEly%-I#sJMF)*P+#$m_aMjrpI_IxdZd-zaW
zGc`q9xfmU*O%H4Pguzr9TjZp60LB_Y5@O>;=?#C+5|j%@{;B>rwE^`fWpT_*B#5rR
za!?D|4jL=|Re#)ZjA4XA0c+?@7
zrL9%1YoxjaPml%ZLv8RuCq9{T0U2^&Cu3QoB*ty~svl6uS&zTQ^{lWSmUmzUI0I`G
zH4RXH$_lev+b9b73#qHj$ZT~Py1gje3k&?oi$@zH`Hd-UTq2oFK&+{qbykpzK|3{Q
zB@Ob#(f>ppxZ7+8%_td4ch)l=2>hNm9J8jV&3Mf@_XB6hV@W+xIl8U?E~wpsh}$8n
zv9YnNOtCV;7EmmztE&-O1T#B3_8-@^w6zfs-W)|GpTh51otY_I=_rvyH~gVG`u0F<
z5TcwEJhbSh5Q2VxE%X^!-=$wG7rrN50kSc`k*4*V2KYBG*~?`NETlx4Ygux6eYqg`
zZ1q&@Lt=9A?dxj8(VB*NzL$mj&g>cX{XG!KjjJyc5`ulwSSp|J@`?jgA~CVBShvbj
zwHQeqI61YowaxZJ5kEa|d_Fwf&pobc2|I(9Is;!59O8&^{H>A~UK5h8)H~E#bO(%7
z71>&06own{+sY2Et*uq+-D{;K2P(=U3|8D{W;Ie&CeR$DD&e}f)DI{*i;Jd6fydDB
z%gKw8zgWun$ukL#+w$k;=Hx&pCRSJS
z7UIDkZ9wVOYpidSA>oeuv^__akbqBsk1v9##B&{Cob2qJY(v2ud_Vyj931TJWdLfV
z8mzLia%fcD09lwTb%t!V#iwvcqA9n5(vvA=yYON#_RlsZ534sy@DzM`j+{*Rz-0R1
zh@or!v&7~_A{)eyk$}!zc1e*j9Dh(HxYmnS2
zQ?TOqoZ+2SHlA=}foXlWR3%eEZScKDL5yHfaK5hOVmP#L{B%b`chJ+qwbBmc>buNx
z5aoj#$vGD3UQxcaCugdTD8y0-6G)(9oV+V>Vq(T`rTEv1l(+=1Nbhl&{ZmF_
z%pZ4@l_tyRMfXl^JQIk1AraetCnEB?X9k#F@@By6NbZfeRO*SSr;(G6pvUn6js2L2
z^_XXkn#*wVj$e^_4L8NQJTu76fiJj8u*7?Eza&)LEAw_IN0vR2%Af*hI`-BQ|-sIu32GbNaWR!8W#
z(^e18lCO$alRw7TJbpcCPsf`XR0T_xqnUK0FIFk$$ER@Y44ftz1ZBF6J;!ZUZFwp@
z(J1m+D_5$d%9X#Gt9MzRlGFW3fC!h!5R#C@(EP6}mRH|`b?R-&TlvSRtcdGQ%fJ$-
z77Y{wt#4CZm_4n=d~o`o6fe-5t_%@MG$sGvHWgjoZV{Y1uvitC!9`TPX-tCpIJbYN{&
zxKz6lvqs8lQ4!_EZDx-XA6ap^ml(rgL;Jc(kdfQOFf#U54)Wom=4)zbeDnzk4RvvL
zt}CQXQC{QlHdUIAu^XhvpC!YsqTDz;d*x%k6LNSJt=G{In^tspzRzdJ*H;%VP!+W2
z3SeJ+!Oh4h(-99Pw6L?Yv$n>v$x2K~DJd?tv9iLnag&jiMZNlRWJC>t-JA2^D6_tl
z^`)iz>x7ZZQtUYl3$H4(U%_jW---y-;b!>%f=Yd@j~%v=HN?g!>L|8INKQ_EDfE-U
zTy#c|0Tm^`un@B_d}FCUlYxPux3?EboLXB&00%-D(@sMZC_hD`^MHm2@FpZ)DN>B0
zy*2O#ILvPW)}*Z`DP{MP+uZ{KUF%tE0P!Qnmil%U1D)yfryl#om;!>Ojprp}Sco^G
z(E-hDa0FxNVqY$m#H3NzJGU&Q8A*;7-Z)~!Fdim}3@WwEVjj%=p?7=W%jBB1?xT+d
z{%o|EfKjuaB;@TKqC%!dI<+=wU2O8B{yuk>OCIKQlH)+QFad+y&V_2*wkfE|b9Nh(
zIsi!=7R}H_Z5O+^I7$Sv22GIho?vb+DH
zJP6)BFnqZ)?mN;%hrh7QnpziCncZrC1I~ef=N9u9yERF!25LrxL^Gonyj(03v50h!
zf6BQRZ>TD_7`|e=Dz)BfdMD`i@YBr|oxKkrXYyE=ImB6nu=Cc+7##W_O-*@^wcHgl
zyh8zrqkyU-qNd>OTIX~KexxXJWvF19VwhyV5iVyloo5Y2`YfM!Xti09UN5ic1$l+Z3$%;>iTx!rb0
zULiG>g|rJ?byj@y33+{3zfnGG-MrT*_i!F-RHBhZoo~KrJ$1Fx)-ir~nwgo`;!Q
z5#l#@-E`3!h0yS9#HP$_e=X8n7AOD
zg^kMw-{3pMo77am+Wy6SH4i&4Ec+>N*E3`X)7JSQh2N(!li3Q8L7+hgnp615{MiP1
zHL#zx)Qz*UvlrqQ^*o>>=-xLOOMNQW@6ri!2U(>p{lEdJYE2fz89qVi=EyTW+zU
zR>$w{Baxi7K>9eBVOu2xOPZchP5(Y%8FtSqTu}~p_zH-&_uevjA=h7;PW12BY}Z1$
z3l1wF?C*aG=tNwKU-@U53^uu#$-KwQWqZm**gXO*5mDp!s}S!hm`G^jC}${&26Y&A
z_W>GtDdpRtXAuAEh<9nPTS#+Au|aKc?KJhK;k?*@>r38`E5!g7H=s_gf1!Je#&~j3
zOCF!FqT*+-^NAWr$pMFg?LXM~1wm%;ewq~j9)%^Y70p-%n;4^|>?G0#pRMzcn~ujW
zgn#Z)O`Pjx?%}kjJez`mz-~P6W*y8iqwE>rd|!PjWMx%oPB!(A-t-S85)L|kufnUN
zX#lTU-5mP2`&=??rI#I6tCMcAHTtXptNIP9#dBMiYR3B-s=|gJ0wLS8E^=v2O=1NP
z3d3z(Y^z7g3)Cv%Yvm(PE@Xv(hl&6h7+6lKS1oko?0W^--mdWW+4HkquGN)}~VX
zJU3Zamyn=3a$08|_dd*Pz6J22?Ez6H)WHtH
zqena(0y+4QqT_Fuhe=z5r={)Lm_;gy(N1O6c-`*q#sT~Rprp}TXfE>^1em^
z@ZuQlS6JF)dAM=;7+>@Ycc9k`C=mi=fXog2_$^WE;;~`&_aKY#(XAu|Xwm?$@w?cH
zm$F1GZ3Rg^q{CAqG0?zXJQ-a)X?EYk{`1B2-dbgwZ|ro1btIzv72A5W9xd!w8ZM
zfhDYjv{3U57gDQR|Ea2K<~(``s9Q9%^9nyc?F9UmQ?L?UiFu7iBVR^?jZDx%KL67)
z7BHU5@JoZrG$|wlNb7nMMg2>m#c34GARf!YKrU1i{VaxHn*O}UZAR0W=nr38(wB(1
z9z1#d2jUWs$ZWu3@Fx5_!(%&UKzzGH^&0WmP&BUoS%X{e>AXL>LZ&&;mVVFSN6!+j
z+xz9qt9>gcr^>>@Ze7*wB*PjD`@r&suA0Xok`clMS`CBPy?sne0hH){>kQiOs&4f*+X>FIii<^3Tg
z#n#p~9Z?~(v$LC0AmEHIJh1vzj(6FQXOlz(xYptM9uhOZlAr6?`IlCEr28dcIP-LL
zoSmITkcp2JX)3FC4AO#tvaFS=pO~14^dtfUZ?3jzDl13*(1|Fu_5WB-Dk_5fNgm*C
z`OhSc{f(t^W=9XmC2W3~+p1!B*M$&itpNT@caWw=xSsdwo4!6PyXIAEczzW)gt$p<
zG?{G}UT)}b?j0+ROprydSpH=&Pbk$-)-&W@l`SRVWl~f9h%f1Ywq1+;vUp+sl}Ug3
zer@=L6*88L-G$C)SZ5PNA?(>uDW4Sy55SRPauXINCgw
z3`mG1^w{^1$_CZqYQ!y-QC!7s^u07KtHO_Ei$S)$ewJTkGKzjtNVH8{`|HW!_|kkP
zGM;kBZ61iOfcYBcKOr?s1!ka+X6?9Rk(~5Sqv2M!+~4;Gu{09!42cvM_mIiWdJcom
z^cPng;}I7u6i;_qnXMhIWiJY9TUmIpU}L0IDZhR*C`J-)7GBRhR(n-;yWs<=YA9eS6R?za
z39lg~N7|b|+lL44!Q4Zf23!wi^!6@35dUJ5KDGfvxPvQn-9+Qa$$UOZ#5&pMy%sR@
z8vz_o@Q_MbaT~7`ag78RA%Z6-KI*9J
zdk=3+U5c^=8UKe`GftW@f}3YNvZ-rD7S&s_+VIdQ{P@+*{Efr;^Q9kE($d;@CPI1F
z5IYiQE$A!2z6&iS@8G68detTm4m4N}qdG%oYo_(s1s>zaEd2276sQm@1fUc3>FG@+
zp%5_8aoDd6<@@{J04O?7hxl7(h_0&*ru08l*k70f*yrzxrEusY4Frs56ICC;4QHC^LBg3uSO9cY?v)Fk{Rve4!L
zIh|cfrhD932NcF)3`VmyM#wcjS$_T%A)Qm*fi4piK
zNG%{dRY^vB&qq}ox7X-PXfGaT_BTq3h=O@zLPlyHW;iPKEFtw9g}ec2Z85`x%CuH%
zAf+M{GB!YYy{_!t_@<6wH;-;7o`+UkeG539QTjzk_nVy*Zsbx4S8xD?=TQpfRe~PE
zzzl0wx`MrYQdS(rfCk4`-^4gk1*g47muU8QIs
zbl)W83cI?bw!0NMAzS5@zP71;k+-;YFc(o4^rd`yu`to0Yl%Z%892f4{75|UZgeM-
z5q9d+jMxBjilqc(mGD_)mbHpQTt!vk`pVRCte>R9+7=~oH*5(x10G5-+mv-`51ZFy
zbqtu@sdJKLO%89%wpLSO4I5ag0Q}R0e34y(;YhJS9&su=B#NQ}&R$!FwfZ`c7~J>+
z*C=l^KhH35S!yU{J<6cwRfbaDeegE1vQB(?TXq_e%VT&k5}EpsyeT}Odqv(#e}WNSLsXX|#4qM^5(OCX
zv0;GRx4ym}5)zUT;sp3DRaI3sHZ~b|!+=b)(4((VC@maT&XW1uch<%$h=_r=(pqJ+(64TIjLi_UZ7fNiR_W;
z>c*i^oPpsDQ99}sQO8zVF_p3r;=PjUJVH&c3
ztXlM}{=d>lkVy9ckz)RtX2_IcL_DD1Bsczw{lOr8pb13v^D7sEmPg8^B
zu+-4tv2m-LI*y{CzP@3S%2lo5;T=xI+Dl7%fwUo){=}==4{E7Lha~3I@Lc`PV7F6lk0Dch*+&
zLTjd`-XfCK71T6fA~P5v@
zwe}q)3=_{C|8D*ox=44fnHIz_`t7I(Sp-j)TCQfe%Z!yhoXf$Q%pzBcNqXOcDoVBZ
zfwVX(j`Lb)cauBf8`Bb^^`I;m6}hMsrq|pbUbAeC-^kXGO!RcfD>FW6O^Vr6Pt_TL8bS*QSUbok1spKPn97(M
zu`f@B3AS`5iDa>)>{qi0zbb3KCl1a-u
z`W2{TSOklXmq1zlJ*FNo0<}+Bu?=G|CXauD>a#7X=oMW%Zydm|;bIMpEH~lg<}$N~
zIJ(K+@b=Y-l<94J8hRU#0@*Nj$^H`^eGf!YB@#WOiD%|*6!CvCV*YN4{NI2+9Ygpk
zN;3?vR$(2$Awh-sUi5^F|>bdm7+>PzrT=s?3)zTiIzJB*IeiB
ze1%82N*XPlz0-g!_pAL{cG-%Gia`(VpRwo~fz)EnikyxsA
zfiE#JTHH&z>;n%vj+nw=>s)sb6B8cTz^?fCsPSavW@_r_w9n}Hd*nVRKZj>XX=$o?
zdU-dqs79Rn7f@8F$#$x9)|Nv}&=YjgE21}yIuB(p{Exzf_k;k
z@|I*~`Sei{ovr|#!+zqSYAj%HWj*tCCQW4eSsW5ep2sepN89
zc8}AB`%lfQ>t%j^X0sQ<67;*}&_UEJ4pquW@K$8wp&|Jbn*XwjvQ=u@fIxMX0T3=Q
zwgAG>8k3rv$Y^%RdudRn_r#PgB7eXW92q%j?*f^<(;uE?pfNQb#plPIS8(n7muwf~
zendM75555+qcUQ{i%>S8aiV5Ao~g=A;qWiY>Jd6ftV?&k*J}Tg-z_rq7?7zdg^Pk+
zs4(vfN~u_vXv};##Y{{TPQbEf`p5`25(ffo3M)7n1#I31$r=c3RmmQZ(SDyk{o$d~
zE
zP~2h+p&5sT(E2>ry&!a>$>>*!(IN$rQTDZIeyxP8SZysRVW(Iab}
zWu98km0)kVV2Txmyb1|rpl!vdTJ6TaW?3RtxicccWo~{gB^Z<$cqWVpfnW2W4emEW
z(B;&;w(r1>5|^BgND2qcJs(%`AK?5+{+~Nfr3Gu&@nM(!4KL|W@AScWH;PI)@5WK1#JpZVwXm|XGO!w}s#Fnb+wUDa8fC;f$y3QckY`UL7=2`i?%yvE*DGCSWCqz=|Hr_5R5yxxG)E9x0Ig
zF$Bn#KVz|_g@8-;r+=3Y_;*1F--_39QAW0x7J&!rC7|lSY!(qx4WyW@^3$aId#e3^
z&!qdEevXj!H->BEj?Nkm4nP0|LzI8P*~sZpjIC3PoD$^vSO}o4%kD0Y1i9Eu#5=MZ
zV)IevQmWUK0=Wh3^;4=N?9$uGQ8B~ZK-ge^-$@SGRnr_FA5~RV$f&1zxLPvtD7Nc9
zGF!k!r3epuwK(2oYGkETOXtzS;mY>re+*v>Lg3oD(3xN)1S9AOkl99p%J25PDANqv
zF#oTZdhLsRBF$gh-vS)?|A2*}kdQZ_^cg^QY-L~zqk9xC5FtCoV9AUvd$GdupbAjr
zDA(_=W=sLQ>Nx)->DIRQER58zWRQLa2o(rW9rPj>`f%3&
z3~7zmB?z9(D{!SU^B^8Z8cVbeG^4{AJalq{RXl@w0yA6T83JsCqqnmQBdBeUAaoCUQCy4(yz%qwVj~CIj|`+;wBz
z2&LRXuaWDz!XMKH>_r6j3MR-88QK@jYw->mfidcCdNhMF&oXcvC7f9aGJcqrGXH%5
z?mg6j9Ndh_;wwBu5{oV+fLMr57l?r<_+tf(I>rt0i2KQtV!wU+_DE@ee}72{qw8=Ge2VrekHh((m8dC;yac0QM;ZTR;%GrGWi}$&nE;n6Zho9I#i~$S4!x
zsvvi=Sn<~Z0>Xd2Veda>?q*see=&DJx`Wr9pB@=X?VIVdRi=k?Mu;tYlmaLHVSEQ;
zHKJs8$XykPsqkCU{!3@5NTCkjDuIOvrj~VmFNta49ZpFDwd1X*vJdLUDorE`Tb7#E
z(h)gGsMd7BMSVAQ?Pzm-l?UC+EH05gMv)+g!?lv0-o}O4$$;)_zz#tJ6NJneO;#|k
zcV|I|Vw5k9DheyOY33$9Mh_`_20)v=C3&+19$1cH^-^67btEHpCk9sJ-lXw_$W%O3XhRC$M_ZTzqZTW1rMQrh;#tCrYJsL`$&n$
zV4xJnZ7Q*9ES8HLx@R$8Wikv7DY?15J5Q3iSH+tqInTZtJxF(@Hj)Vf_SH$wzPQkY
zM_dg*Fh*Yy2&9J(r@+O%%eHY
z{fdsKWLh=Vfau|*|J=&_@HZh0A!rggMZJi1)D#fHxR<{&l99~e@sAxG$|s7wMSWi|
z9tkE~EN9v75A&HX>u6%YcL(y_KQ@JhI03PIKF~5#=u9;Mdjb&2
zi+Mx%rZ4$^ZUMO@uKuwxgo8W0o;-TlSj@aXgMlE)8II+=K4)&q%8tUqjR+KA=I5W9
zoP34=2Vjq{H-B;zJPl~NXbfnLh%9|aPtW^(?vMCCT;2vigC~KJ7yJ+G-D9s~
zHhJvs>WP?|3OInj0&IYB>cw6c5LEa5nqr}8Wb>!asOlgcr%h2)cJ3`M$J}5NfeJ!4
z!v7|;#uMad=D5uRtAbso<_Ni)t^R&<7%=$2rJF&L^7A#@#+%ALHXB)iF0SDJly{zC
zO{H7kcg9g%ac%cTYalgN&8m;+>7;sRAQzKcsL!
z9pdSp-)^vD46y^}ZSo8jw7~|G+H&sxaLztL2KDbbZ0?mi)ClgWC9UwIH-
z17CgkS`JW8#g)EVwxU^5+l4f*{DI-wYZ4s7KrOL2cH>;^Xnc(=#Kr}~2eBT{{rL|d
z+T{I0lC7_u7L1*@nrq^;#*J{QMywSe;GdeohQ!z2&9Usb4zV2je%+=8FuN-Wo4osyaw
zOG%I|3KuP~O(nBoAZKvJ6A99jOgB+t0cj4+Lo|*^>p>a>K0)hdeQ;2Wa;}St#?YC#
zjqH^IvcbLR39D`;M=8&11eM|>vtMMy>F8U)yuzWf&YxuZ`#?v2-hm>X!;}?Q@tB8`
z!fOmsT#}Re+TGXCMhEnH$C*(=;_j?TzK#I@Ha!F&iI-)cfvO?E8!?-H!PX~Qs5H>v`6bfxFdo14N~kp_>vNA47z9PSn7%X5y^mcq};(@5$Yu`t-EWoV}Nke?`&98vC<*d=66R>Ot`8#
z&|CP-8zazRrzcgs{y+q9pK1zgX=wp%_ij|<3-f&wm;7*oWDp6(W09gQ^?%W3)zQ`@
zzb#zM(6}c2hLvGwM~6Y$Vc`5p7&xHw=!*Y~s(2_abuNrPxCD|&3ZLl?0n1h_W93W6
zFEtnb*4Fnm5r3wf;R3RsCNFa5`GaNrx3MNj=_*sq%2s7biEbNm29*0`N+J
z?>wQ`W|IhmA&~T7V>k%FP@5#
zIm6X<<~=8J)gLm7G<$|s_klLm>pVM&mt!%X>V{
z8OkVf2)fqC1ux?`7>>0(P8yDl9eONSW-J802x>U_D7SKUVN8OdWk4J=8-pFp!QLzd
zQ%7n6R@!8d(e^m}AW)q8#|XNO65@Hx-2Y3)5!FR3g(cfI~Sf_55#
z2s+Q)#^7fO;5k~N$-(_(>659=$+0#FiLsZUhdqwx`I<~
zHJ^Q!4_~#&g-4JXVg8$PBEVpu$lIAT^{I`@OmXtS5TUWE%kBwo!4fhe^S4{{(awhkNpg=`Jfxt7In5W3@)d7Pu!C9DL?p53ulWm`KA<$hwy
zq|f8_?1?44Zy54Vm(HE2uSTB_I+peknNFArf~kp+JZ9*00w|{PTT3>oo<;tUdKP;E
zy3bp;%Lhlg%MoWZ%*s8ohb!q*bw_O%fZ<+mo_x_QS2Ig97-(r{b~x1dX;w(Ahb3P@
zhB;Alm@+MXF1aLp@Qm?jd?)fPdg$v)W)C_WnY`pBO^y}|gCZsZQvLGB&i0}7jVtQ4
zJF#^&B;?E?-DxY9y?KP`1a+kHKbQ(h?p5%cI-ETT&0w^qwUaaj4qjZ2f1|$t&3}D0
z=~Qp!^=;k*bN=5r0H|vh{?%{)sc*Hc?H`6{zFYe$%gej})i-mCY?U-p=O-g_;x;c1
z`5Tfk0{;XE5c;eAZ%apj{E;*OJV&qN{r!zUqns`1R*`?yMtRU__9FUccfm@=5%t>o
z?GxnE^u3F+rkLTd{Cg(8CbL<;l{g`}i)|vBn-57K
zgG0xIe}6tAb`OVR+#5H$A-{lbmRKc1&N^fc4GkH!=M5*buiqLGE^I;Tj{?kcbTdyxjot~Y4)i{T@hjy<+1ZtZ6PrYMk#S__K>z!*sk7$GKuvkx
z?Djz=T;wW-XPZA})EM)jR{O|pP}9628^AQ~KT|3*P(rZ--w8P$(%*a3&ZNbbSHVA=
zSSGuu62hoS|SV#5o~d8Ie%3Kn`pAEv$wGmycK$6
ze2tBqH2Gep-~V1)3x<$uYp13^YwHA1TXQJD*?-6^4+O%+rmG?xOed7*-k1l0A%y=;
zo+&mm`J)$+vXlK+AJ>@J-q3;xcxli~dtfOboSmlY92GpecZHh?CF9sl(lAfhRNWWM
zS%{$~_s|hk3?4am*~o(9T@QU=P`KarDm_!i*_LDL%FD<{HfKPzgzMUSJ74=1`@zxV
z$zvx=tug__=U0JRc+R9+5pkQ|S1`rD&hp@UF6ZZePd%IOY?4w>Go}>l*@NnwtOf?l
zNfmKVC=2@BGUqJ4=s;c|>1}a3!>md^EtYnIogbdvoH@It#ZV)P(E0qw*=GJP)G$AF
zNo#UDhNK1p>`?3tho8JH$#>;i7FThZyp{;Wn8=TSgW-^4?RQ#+;u0n4ORbwuGN?V&
zW*`w|wo(VHzF8mtAtkMN&W-w^n(tU5k-g#!ov#Xj2@Cn>({ds{Y)Z@PWUO1W*0RWrMHS<
znBh&n?wo%r=RcECC0y5m1D&HcJ|^j#>#_g;G++H4`2p&|1&=PJPlJSdw(L1z3E~^1
zeF2=%`h77B`~ZyTCXt=x*T*ByS<{=XHUM5n7UgQL)Z)5`>Yjm-b_L13+3FNOZ{DL`
zN~Q*m$Ayp(+}AlOWUh8LBO~K{aslYufSv+iH+}-SC^;|1)(1xG0n+WW|Ji(Gz9$%e
zKS#nT0^CdknSN%p)XG8T=afjZ8w<3PWlG=~KQOWyC_OpwKK>PIY5DNrYbq-WF88}D
z=%5>{>1wlm&Gt2LAjGU0B^}<~|2DW|_Mct+|NU>}{s0=fkxOzeVt898QykPk8WzyC
zN)(a`?^2$3WL45|84$tLP3Fx&)eG4o=bgqD%<~KP!{u4iFP#)~J`LgE7=y)&f*=9#d);a7Q8)-D$BoJ^VS
zw)A8ajO299nwOo#LNTv>@nxfy+|-&&Y|Juq+c=H=RaWNdxL^ExT-==3J-$u%NR<0|q1J2|-=;+~
zZvV89e1rUh!wxsG3>03jkj!n}M;a9p+h!V#*OkUI-{2e1C3qKF))`H`pwXSmRZI8m
zN!63M$~>)KK?NJ27VWY*W
zQ)DezvXGXox+lf_XG3Y=;j-Q;AX9Fpc3lBjt^GyOe9CK!=1*F6+I%S)mnNLzBgdiW
z5wRFv3J(0jCurDdnG4<#Se5veK#DPYDG#lEbGMmv-sbX81BaIQ6tv<-UF~T@P{n4x
zdqIkQA
zOodNJUK(13$SPhA9L3h7bd3rL{
z1}>QfUr6?f$HV>3vIIu>u_zfUYk3sixQ{=dyjyP)*-<>Rl-WpN;Dk@-#=pbd%1u;3
zI}77;buE^c4VC9g#%G%EG`Ky6xkT|SFxAOSJyz1}vVNK+j@;#k@1UGcsw;Np7(&b#e*M}=eAT-#<-voHLR(k94qFB!M`88NHLy&+9NzwOjvB}Dc^j3w*(SZ!
z$>r%KIZ-I3PZ}Bm!Q#}d$##p4_|J~8xGT$(l(aiTeGJQ`=l@vfn_jb#F&cHx#281d
zTV%aw&vzZvj?=#Pz9;X6=dy%dptg@S3bVx_!D5ioU43vZt5prXDPW-JTi^nY1
zduhn)cB})E7hrmc9eMY`%JodPjoov$CC*+P+7*}y&>@`DE7s{&`FQyYe25|qj*sh9
z`FJE?gKs#H-I-fS?fs&SLeXwLh5ls;$cD%L*3U**Whf>~YD1+`W=9V*;xM(IzwO*e
z5MUNS69f8NQ{#1e#Q3Xh6%5qWu9#MPj#Ad)f=maFvUlyYhEMJz?Iq`e5U>r05PT={
zY;$ziZ&6YieT26!PTJ8DTg}E9DJf`ZDi)aZ|ImzJ-&8H8OCe&{N{F(&_|`l68AV9K
z`~xF-A~F}$=&>=4Ma;DphRLhaC{9z&_a8s{jIhivFePR;dFWJ_8IM9Zz|%DwRQ82>
zCe+sOMnYGIms+(lz9Zl|Sa;r}br;K=ZJ0JD-|iR3+2yX$xlGI`GTSN8mrKM~RL|3X
zG_wFXTFzjlE>t6VXMfQK`6U;3x__y~qE~{gTXQ!hR#rM?njmwN_Z2jIP4C2BjheDf
zalH&D&klP1KAXgJF~~+CJg&m&o}=_;*qPijdrEQ7hcGCywgBAV$TK6Sw>h7P=gNk%
z#D$2sT8pYK`jcq*lw`tuvb?1HFJMKX*X<@bK2UUBR@ee3AC=bTM_FA2tCz0^D~h8n
zsy7B*rI`Q5Y|MjxWxFU%rvEqlmp#5T3nOLuCGlU_i;MYLE!O`|@%;cLx>55t=*F
z+@g(5+4YKAzx8%8V?-)@s_?{a?dL(3TLtE+C1+^cG50=E0P$`2?F%HXIh1-29v^_q
zj9;xJ(r~x;A_M8}__gSs*rOSlQn#wL2)l6EuZJJqaCQs}m^$LnQyPn6@6YLprz!j<
za9!FrVMslV2|VmfHJ*7mA}bAvQj!Ffw$~>
z+aXTVb@q9_-aO<6ux|$DeWb~l;!U;xqWp%Qmg{M48sE^Bb!>@J1j0(
znVzA#l=qu0x16mf!IOJL2%$BYL0u9h^BQ-RcTXNbY{Pokw}^jmrd{%i+D;ioXf6as
zeF*`8h>S;x7i0qNZ0&Y*sA!Z2-$70HnrdRKelU?9)CqTQaP-o)kaPj?`n$1??|{_*
zOkn+g^jmK&{duW1DX6-u<$$m5@lp(vzdVKw=p6S*o}D;aAgjr-;;Zedm*W?oavRyS
zkxd4}w%V0#mO$C&k|hZk>BpO`iZ^Preg+8VGqsXjpc#<!dv!hWLF=PxZdsvP
zxxdjp(oJ3Btv>~>HJNW8_X1;AW_8enh_2;GL)Qg_}dl$aoik?y6oCZzkgwBS*tGN
zWq+e*&En@~`5T(W>VhE4hw~R=61r!`UueU#prxGCMG;es6dM89yOkjb&yJZH7VozX
zVLHwAe~4XeGZPTi^}Wh17IOhOGCjMjKw)u&4C%B{QR?7qyNcjq6a!|;a;*%xrrnoE
z1R+Y;N?E#XR^d2E!kOh_OiW#%WJ2jY=zV-3Pk?Y)SxRfFw#Qd8OgD#7X&simU$O}k
ztavikwkFOkJb}D(UL+LR{l9Tfa<9Xskn%CEpK<|yb
z%cMqs@~)iOIKvItCbOF!ze=7RLYtlAbcCqF6C_>QTRWvKC+4o)xaId{{bn_ZG!=^P
zQXiZ4>vslir3*HSg}h)<98;`<#-iudnoVrEV}&l}KBd$H)By4W%;gCtY2xILTO{(G
z9V!@4%}`SUgPL-~&e%&+$%f&=yG0(qIrl{3NbXKur)g?Kp-3=zf>Z9a=H_d(DS
zW{09il11yfqvVbxD5jM)p55zRGO=cs@-E$WRZAkyq?Qj)jt)IJ23P}UGJhzH4yw0n
zFTkb~RtJjie>}l_V9)#iXa|Ts%no$j^;Rcysx-s_n7VHaF)|0PPY_l2Cx4I&vp#G{p!F-iaeM|p}i^0f+VJ;eAR^MA{7~hUf+n)w>
zh%sR>=|pTNdh`MV6sAw#d=>!&pErXCTY{uBricm=D+SU5939lkdQBS;liLVrnqB$~
zzKbZf-|0#iTIkJ|ml#9Ku;9lgs3Jh!{H34?MzMCMmKb@AaslO7un~1lx=N72_QfSF-e(t>6VS4+W?n1q(M(FE1yW)@S&9g@Z(#V-pv60ZT`MAxOH1}X9w(ma~ltK
zkz#Rj)1Mh_edt51gJ#ui4Qe}LO7xfO^nbb8e|5bktt7}8veHbS7PmFrPDwMYzg#oD
z{Lwx7k}B9bM2~mY!bil`bjC!SAJR1_Dk+ZHH)|V*jx}sXbcqXgjzbeuA6Y9<>z#z+
z7MqccdbWm3uQA?w{w!jxr?2)TC@k+@Q$y0t3O?O=FdV#OyJ8_AAnBj9XV8gf_yQd@
z%R_=3DvPA=X_y+F`_&ig=$vy}g}w=g!@oUhZ<;9NF6$rY)g8RbvX5A=)2Uuc{bJ)|
z3R4)pNbC2EX-CC2v$4V$QHj`DHBOdY4wP0&XB&K^m@Lrevl@k5ZUhYnzRMnI_(uU_
z@tD_)%qc|;D#R?BLMOi&*m64}_$~f?P?)!mPk2_=r-6aW%F3{tgnpmdy~IoCj9N^lB3VLA*FFw0(l*lnVV+3&PuyJ2b3Y6J5D3U-^fXYjp#seSEaJ3C4sJw-vVrNw4Te&sQ3yZO^Uu;)9
zAkoki_0WebPq)Mm
zw+dv!g$ix$!6Ns)bY*BcT7ZM_{lF+b{i`78Eb8@*2I$7x&9J_L``(FQCsZ~pt=&-8
zG3lSxqc|&->?wL5IhbRcDU0iflJtJaQj!lH%($2=@U{waSqxXb4(*mqoC)0Kv$IT_
zH42b{pfk^m2oIPrpCCrr%~aU;QZ;NEUyZo=Q;d*}OY7w|xnBguX2i_6SF^j4cVcUC
zv0Jt5!Qceh(W-p@r{;o=&uqS_n}>nW4lJtR_ALgm8xVgJ41(Ks+NeR
zFZ%UML6MR>1F+!~eh~zeOWoDxRGOcFEhzbap?;!mA_I)N(-f*5Wa#spDGU
z3Fh>CdOyuNEHay*mGr@ibE_<_HH|RnnIE%xeQVGbp`_E%d85PA&_le>1J6Q4qFrlO
z!Jy`liFaRU{Z2CxW_RXVTxvObOq4^VXYFw!B#RgsBjQ~TIFn&jR?QX;zqz@Wl1F1YlWBeEWsWBJj=nNkCOvK(k4cYPWYD_ot+aYV;7X+7
zI7P6x_gGy+_g3`nI=j7Lw=`%1U8VKSmuoph_9!QjQ8bFKc-wOX<~lSTM5Q+9W4wZ7mwpdC{~$5n#h%3)AK*U6)o}
zdv&9DlP<~!DQE7Cq`u!{4>sRzV+;O50eO70dc |