diff --git a/.github/workflows/fix-linting.yml b/.github/workflows/fix-linting.yml
index 7e2c46b3d..bdf7eb2cd 100644
--- a/.github/workflows/fix-linting.yml
+++ b/.github/workflows/fix-linting.yml
@@ -34,9 +34,9 @@ jobs:
id: prettier_status
run: |
if prettier --check ${GITHUB_WORKSPACE}; then
- echo "name=result::pass" >> $GITHUB_OUTPUT
+ echo "result=pass" >> $GITHUB_OUTPUT
else
- echo "name=result::fail" >> $GITHUB_OUTPUT
+ echo "result=fail" >> $GITHUB_OUTPUT
fi
- name: Run 'prettier --write'
diff --git a/.github/workflows/linting_comment.yml b/.github/workflows/linting_comment.yml
index 396351862..0bbcd30f2 100644
--- a/.github/workflows/linting_comment.yml
+++ b/.github/workflows/linting_comment.yml
@@ -18,7 +18,7 @@ jobs:
- name: Get PR number
id: pr_number
- run: echo "name=pr_number::$(cat linting-logs/PR_number.txt)" >> $GITHUB_OUTPUT
+ run: echo "pr_number=$(cat linting-logs/PR_number.txt)" >> $GITHUB_OUTPUT
- name: Post PR comment
uses: marocchino/sticky-pull-request-comment@v2
diff --git a/README.md b/README.md
index f3e31f4e9..75428759b 100644
--- a/README.md
+++ b/README.md
@@ -14,7 +14,7 @@
-**nf-core/circrna** is a bioinformatics best-practice analysis pipeline for circRNA quantification, differential expression analysis and miRNA target prediction of RNA-Seq data.
+**nf-core/circrna** is a bioinformatics best-practice analysis pipeline for Quantification, miRNA target prediction and differential expression analysis of circular RNAs.
The pipeline is built using [Nextflow](https://www.nextflow.io), a workflow tool to run tasks across multiple compute infrastructures in a very portable manner. It uses Docker/Singularity containers making installation trivial and results highly reproducible. The [Nextflow DSL2](https://www.nextflow.io/docs/latest/dsl2.html) implementation of this pipeline uses one container per process which makes it much easier to maintain and update software dependencies. Where possible, these processes have been submitted to and installed from [nf-core/modules](https://github.com/nf-core/modules) in order to make them available to all nf-core pipelines, and to everyone within the Nextflow community!
diff --git a/assets/email_template.html b/assets/email_template.html
index 0052d4b9d..03b6ba6ed 100644
--- a/assets/email_template.html
+++ b/assets/email_template.html
@@ -4,7 +4,7 @@
-
+
nf-core/circrna Pipeline Report
diff --git a/lib/WorkflowMain.groovy b/lib/WorkflowMain.groovy
index 04b19a7d7..0d7be86b6 100755
--- a/lib/WorkflowMain.groovy
+++ b/lib/WorkflowMain.groovy
@@ -72,7 +72,7 @@ class WorkflowMain {
NfcoreTemplate.checkConfigProvided(workflow, log)
// Check that conda channels are set-up correctly
- if (params.enable_conda) {
+ if (workflow.profile.tokenize(',').intersect(['conda', 'mamba']).size() >= 1) {
Utils.checkCondaChannels(log)
}
diff --git a/modules.json b/modules.json
index 221a73c62..5b7c59e82 100644
--- a/modules.json
+++ b/modules.json
@@ -7,17 +7,17 @@
"nf-core": {
"custom/dumpsoftwareversions": {
"branch": "master",
- "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905",
+ "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c",
"installed_by": ["modules"]
},
"fastqc": {
"branch": "master",
- "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905",
+ "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c",
"installed_by": ["modules"]
},
"multiqc": {
"branch": "master",
- "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905",
+ "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c",
"installed_by": ["modules"]
}
}
diff --git a/modules/local/samplesheet_check.nf b/modules/local/samplesheet_check.nf
index 33f77b6e7..4e85a56e3 100644
--- a/modules/local/samplesheet_check.nf
+++ b/modules/local/samplesheet_check.nf
@@ -2,7 +2,7 @@ process SAMPLESHEET_CHECK {
tag "$samplesheet"
label 'process_single'
- conda (params.enable_conda ? "conda-forge::python=3.8.3" : null)
+ conda "conda-forge::python=3.8.3"
container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ?
'https://depot.galaxyproject.org/singularity/python:3.8.3' :
'quay.io/biocontainers/python:3.8.3' }"
diff --git a/modules/nf-core/custom/dumpsoftwareversions/main.nf b/modules/nf-core/custom/dumpsoftwareversions/main.nf
index cebb6e058..3df21765b 100644
--- a/modules/nf-core/custom/dumpsoftwareversions/main.nf
+++ b/modules/nf-core/custom/dumpsoftwareversions/main.nf
@@ -2,7 +2,7 @@ process CUSTOM_DUMPSOFTWAREVERSIONS {
label 'process_single'
// Requires `pyyaml` which does not have a dedicated container but is in the MultiQC container
- conda (params.enable_conda ? 'bioconda::multiqc=1.13' : null)
+ conda "bioconda::multiqc=1.13"
container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ?
'https://depot.galaxyproject.org/singularity/multiqc:1.13--pyhdfd78af_0' :
'quay.io/biocontainers/multiqc:1.13--pyhdfd78af_0' }"
diff --git a/modules/nf-core/custom/dumpsoftwareversions/templates/dumpsoftwareversions.py b/modules/nf-core/custom/dumpsoftwareversions/templates/dumpsoftwareversions.py
old mode 100644
new mode 100755
index 787bdb7b1..e55b8d43a
--- a/modules/nf-core/custom/dumpsoftwareversions/templates/dumpsoftwareversions.py
+++ b/modules/nf-core/custom/dumpsoftwareversions/templates/dumpsoftwareversions.py
@@ -1,5 +1,9 @@
#!/usr/bin/env python
+
+"""Provide functions to merge multiple versions.yml files."""
+
+
import platform
from textwrap import dedent
@@ -7,6 +11,7 @@
def _make_versions_html(versions):
+ """Generate a tabular HTML output of all versions for MultiQC."""
html = [
dedent(
"""\\
@@ -45,47 +50,53 @@ def _make_versions_html(versions):
return "\\n".join(html)
-versions_this_module = {}
-versions_this_module["${task.process}"] = {
- "python": platform.python_version(),
- "yaml": yaml.__version__,
-}
-
-with open("$versions") as f:
- versions_by_process = yaml.load(f, Loader=yaml.BaseLoader) | versions_this_module
-
-# aggregate versions by the module name (derived from fully-qualified process name)
-versions_by_module = {}
-for process, process_versions in versions_by_process.items():
- module = process.split(":")[-1]
- try:
- if versions_by_module[module] != process_versions:
- raise AssertionError(
- "We assume that software versions are the same between all modules. "
- "If you see this error-message it means you discovered an edge-case "
- "and should open an issue in nf-core/tools. "
- )
- except KeyError:
- versions_by_module[module] = process_versions
-
-versions_by_module["Workflow"] = {
- "Nextflow": "$workflow.nextflow.version",
- "$workflow.manifest.name": "$workflow.manifest.version",
-}
-
-versions_mqc = {
- "id": "software_versions",
- "section_name": "${workflow.manifest.name} Software Versions",
- "section_href": "https://github.com/${workflow.manifest.name}",
- "plot_type": "html",
- "description": "are collected at run time from the software output.",
- "data": _make_versions_html(versions_by_module),
-}
-
-with open("software_versions.yml", "w") as f:
- yaml.dump(versions_by_module, f, default_flow_style=False)
-with open("software_versions_mqc.yml", "w") as f:
- yaml.dump(versions_mqc, f, default_flow_style=False)
-
-with open("versions.yml", "w") as f:
- yaml.dump(versions_this_module, f, default_flow_style=False)
+def main():
+ """Load all version files and generate merged output."""
+ versions_this_module = {}
+ versions_this_module["${task.process}"] = {
+ "python": platform.python_version(),
+ "yaml": yaml.__version__,
+ }
+
+ with open("$versions") as f:
+ versions_by_process = yaml.load(f, Loader=yaml.BaseLoader) | versions_this_module
+
+ # aggregate versions by the module name (derived from fully-qualified process name)
+ versions_by_module = {}
+ for process, process_versions in versions_by_process.items():
+ module = process.split(":")[-1]
+ try:
+ if versions_by_module[module] != process_versions:
+ raise AssertionError(
+ "We assume that software versions are the same between all modules. "
+ "If you see this error-message it means you discovered an edge-case "
+ "and should open an issue in nf-core/tools. "
+ )
+ except KeyError:
+ versions_by_module[module] = process_versions
+
+ versions_by_module["Workflow"] = {
+ "Nextflow": "$workflow.nextflow.version",
+ "$workflow.manifest.name": "$workflow.manifest.version",
+ }
+
+ versions_mqc = {
+ "id": "software_versions",
+ "section_name": "${workflow.manifest.name} Software Versions",
+ "section_href": "https://github.com/${workflow.manifest.name}",
+ "plot_type": "html",
+ "description": "are collected at run time from the software output.",
+ "data": _make_versions_html(versions_by_module),
+ }
+
+ with open("software_versions.yml", "w") as f:
+ yaml.dump(versions_by_module, f, default_flow_style=False)
+ with open("software_versions_mqc.yml", "w") as f:
+ yaml.dump(versions_mqc, f, default_flow_style=False)
+
+ with open("versions.yml", "w") as f:
+ yaml.dump(versions_this_module, f, default_flow_style=False)
+
+
+if __name__ == "__main__":
+ main()
diff --git a/modules/nf-core/fastqc/main.nf b/modules/nf-core/fastqc/main.nf
index 05730368b..9ae583815 100644
--- a/modules/nf-core/fastqc/main.nf
+++ b/modules/nf-core/fastqc/main.nf
@@ -2,7 +2,7 @@ process FASTQC {
tag "$meta.id"
label 'process_medium'
- conda (params.enable_conda ? "bioconda::fastqc=0.11.9" : null)
+ conda "bioconda::fastqc=0.11.9"
container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ?
'https://depot.galaxyproject.org/singularity/fastqc:0.11.9--0' :
'quay.io/biocontainers/fastqc:0.11.9--0' }"
@@ -20,30 +20,22 @@ process FASTQC {
script:
def args = task.ext.args ?: ''
- // Add soft-links to original FastQs for consistent naming in pipeline
def prefix = task.ext.prefix ?: "${meta.id}"
- if (meta.single_end) {
- """
- [ ! -f ${prefix}.fastq.gz ] && ln -s $reads ${prefix}.fastq.gz
- fastqc $args --threads $task.cpus ${prefix}.fastq.gz
-
- cat <<-END_VERSIONS > versions.yml
- "${task.process}":
- fastqc: \$( fastqc --version | sed -e "s/FastQC v//g" )
- END_VERSIONS
- """
- } else {
- """
- [ ! -f ${prefix}_1.fastq.gz ] && ln -s ${reads[0]} ${prefix}_1.fastq.gz
- [ ! -f ${prefix}_2.fastq.gz ] && ln -s ${reads[1]} ${prefix}_2.fastq.gz
- fastqc $args --threads $task.cpus ${prefix}_1.fastq.gz ${prefix}_2.fastq.gz
-
- cat <<-END_VERSIONS > versions.yml
- "${task.process}":
- fastqc: \$( fastqc --version | sed -e "s/FastQC v//g" )
- END_VERSIONS
- """
- }
+ // Make list of old name and new name pairs to use for renaming in the bash while loop
+ def old_new_pairs = reads instanceof Path || reads.size() == 1 ? [[ reads, "${prefix}.${reads.extension}" ]] : reads.withIndex().collect { entry, index -> [ entry, "${prefix}_${index + 1}.${entry.extension}" ] }
+ def rename_to = old_new_pairs*.join(' ').join(' ')
+ def renamed_files = old_new_pairs.collect{ old_name, new_name -> new_name }.join(' ')
+ """
+ printf "%s %s\\n" $rename_to | while read old_name new_name; do
+ [ -f "\${new_name}" ] || ln -s \$old_name \$new_name
+ done
+ fastqc $args --threads $task.cpus $renamed_files
+
+ cat <<-END_VERSIONS > versions.yml
+ "${task.process}":
+ fastqc: \$( fastqc --version | sed -e "s/FastQC v//g" )
+ END_VERSIONS
+ """
stub:
def prefix = task.ext.prefix ?: "${meta.id}"
diff --git a/modules/nf-core/multiqc/main.nf b/modules/nf-core/multiqc/main.nf
index a8159a57b..68f66bea7 100644
--- a/modules/nf-core/multiqc/main.nf
+++ b/modules/nf-core/multiqc/main.nf
@@ -1,7 +1,7 @@
process MULTIQC {
label 'process_single'
- conda (params.enable_conda ? 'bioconda::multiqc=1.13' : null)
+ conda "bioconda::multiqc=1.13"
container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ?
'https://depot.galaxyproject.org/singularity/multiqc:1.13--pyhdfd78af_0' :
'quay.io/biocontainers/multiqc:1.13--pyhdfd78af_0' }"
diff --git a/nextflow.config b/nextflow.config
index 31883ad15..eabafb208 100644
--- a/nextflow.config
+++ b/nextflow.config
@@ -39,7 +39,6 @@ params {
validate_params = true
show_hidden_params = false
schema_ignore_params = 'genomes'
- enable_conda = false
// Config options
@@ -81,7 +80,6 @@ try {
profiles {
debug { process.beforeScript = 'echo $HOSTNAME' }
conda {
- params.enable_conda = true
conda.enabled = true
docker.enabled = false
singularity.enabled = false
@@ -90,7 +88,6 @@ profiles {
charliecloud.enabled = false
}
mamba {
- params.enable_conda = true
conda.enabled = true
conda.useMamba = true
docker.enabled = false
@@ -193,7 +190,7 @@ manifest {
name = 'nf-core/circrna'
author = """Barry Digby"""
homePage = 'https://github.com/nf-core/circrna'
- description = """circRNA quantification, differential expression analysis and miRNA target prediction of RNA-Seq data"""
+ description = """Quantification, miRNA target prediction and differential expression analysis of circular RNAs"""
mainScript = 'main.nf'
nextflowVersion = '!>=22.10.1'
version = '1.0.0'
diff --git a/nextflow_schema.json b/nextflow_schema.json
index 454255786..b225d480d 100644
--- a/nextflow_schema.json
+++ b/nextflow_schema.json
@@ -2,7 +2,7 @@
"$schema": "http://json-schema.org/draft-07/schema",
"$id": "https://raw.githubusercontent.com/nf-core/circrna/master/nextflow_schema.json",
"title": "nf-core/circrna pipeline parameters",
- "description": "circRNA quantification, differential expression analysis and miRNA target prediction of RNA-Seq data",
+ "description": "Quantification, miRNA target prediction and differential expression analysis of circular RNAs",
"type": "object",
"definitions": {
"input_output_options": {
@@ -263,12 +263,6 @@
"description": "Show all params when using `--help`",
"hidden": true,
"help_text": "By default, parameters set as _hidden_ in the schema are not shown on the command line when a user runs with `--help`. Specifying this option will tell the pipeline to show all parameters."
- },
- "enable_conda": {
- "type": "boolean",
- "description": "Run this workflow with Conda. You can also use '-profile conda' instead of providing this parameter.",
- "hidden": true,
- "fa_icon": "fas fa-bacon"
}
}
}
diff --git a/workflows/circrna.nf b/workflows/circrna.nf
index 400c3a573..448b8fb13 100644
--- a/workflows/circrna.nf
+++ b/workflows/circrna.nf
@@ -82,7 +82,7 @@ workflow CIRCRNA {
ch_versions = ch_versions.mix(FASTQC.out.versions.first())
CUSTOM_DUMPSOFTWAREVERSIONS (
- ch_versions.unique{ it.text }.collectFile(name: 'collated_versions.yml')
+ ch_versions.unique().collectFile(name: 'collated_versions.yml')
)
//