1
0
Fork 0
mirror of https://github.com/MillironX/taxprofiler.git synced 2024-12-22 08:38:17 +00:00

Template update for nf-core/tools version 2.7.1

This commit is contained in:
nf-core-bot 2022-12-08 13:18:23 +00:00
parent 51bacb00e6
commit 36f3b5723b
21 changed files with 193 additions and 111 deletions

View file

@ -0,0 +1,27 @@
{
"name": "nfcore",
"image": "nfcore/gitpod:latest",
"remoteUser": "gitpod",
// Configure tool-specific properties.
"customizations": {
// Configure properties specific to VS Code.
"vscode": {
// Set *default* container specific settings.json values on container create.
"settings": {
"python.defaultInterpreterPath": "/opt/conda/bin/python",
"python.linting.enabled": true,
"python.linting.pylintEnabled": true,
"python.formatting.autopep8Path": "/opt/conda/bin/autopep8",
"python.formatting.yapfPath": "/opt/conda/bin/yapf",
"python.linting.flake8Path": "/opt/conda/bin/flake8",
"python.linting.pycodestylePath": "/opt/conda/bin/pycodestyle",
"python.linting.pydocstylePath": "/opt/conda/bin/pydocstyle",
"python.linting.pylintPath": "/opt/conda/bin/pylint"
},
// Add the IDs of extensions you want installed when the container is created.
"extensions": ["ms-python.python", "ms-python.vscode-pylance", "nf-core.nf-core-extensionpack"]
}
}
}

1
.gitattributes vendored
View file

@ -1,3 +1,4 @@
*.config linguist-language=nextflow *.config linguist-language=nextflow
*.nf.test linguist-language=nextflow
modules/nf-core/** linguist-generated modules/nf-core/** linguist-generated
subworkflows/nf-core/** linguist-generated subworkflows/nf-core/** linguist-generated

View file

@ -101,3 +101,19 @@ If you are using a new feature from core Nextflow, you may bump the minimum requ
### Images and figures ### Images and figures
For overview images and other documents we follow the nf-core [style guidelines and examples](https://nf-co.re/developers/design_guidelines). For overview images and other documents we follow the nf-core [style guidelines and examples](https://nf-co.re/developers/design_guidelines).
## GitHub Codespaces
This repo includes a devcontainer configuration which will create a GitHub Codespaces for Nextflow development! This is an online developer environment that runs in your browser, complete with VSCode and a terminal.
To get started:
- Open the repo in [Codespaces](https://github.com/nf-core/taxprofiler/codespaces)
- Tools installed
- nf-core
- Nextflow
Devcontainer specs:
- [DevContainer config](.devcontainer/devcontainer.json)
- [Dockerfile](.devcontainer/Dockerfile)

View file

@ -42,7 +42,7 @@ body:
attributes: attributes:
label: System information label: System information
description: | description: |
* Nextflow version _(eg. 21.10.3)_ * Nextflow version _(eg. 22.10.1)_
* Hardware _(eg. HPC, Desktop, Cloud)_ * Hardware _(eg. HPC, Desktop, Cloud)_
* Executor _(eg. slurm, local, awsbatch)_ * Executor _(eg. slurm, local, awsbatch)_
* Container engine: _(e.g. Docker, Singularity, Conda, Podman, Shifter or Charliecloud)_ * Container engine: _(e.g. Docker, Singularity, Conda, Podman, Shifter or Charliecloud)_

View file

@ -11,6 +11,10 @@ on:
env: env:
NXF_ANSI_LOG: false NXF_ANSI_LOG: false
concurrency:
group: "${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}"
cancel-in-progress: true
jobs: jobs:
test: test:
name: Run pipeline with test data name: Run pipeline with test data
@ -20,11 +24,11 @@ jobs:
strategy: strategy:
matrix: matrix:
NXF_VER: NXF_VER:
- "21.10.3" - "22.10.1"
- "latest-everything" - "latest-everything"
steps: steps:
- name: Check out pipeline code - name: Check out pipeline code
uses: actions/checkout@v2 uses: actions/checkout@v3
- name: Install Nextflow - name: Install Nextflow
uses: nf-core/setup-nextflow@v1 uses: nf-core/setup-nextflow@v1

View file

@ -24,7 +24,7 @@ jobs:
env: env:
GITHUB_TOKEN: ${{ secrets.nf_core_bot_auth_token }} GITHUB_TOKEN: ${{ secrets.nf_core_bot_auth_token }}
- uses: actions/setup-node@v2 - uses: actions/setup-node@v3
- name: Install Prettier - name: Install Prettier
run: npm install -g prettier @prettier/plugin-php run: npm install -g prettier @prettier/plugin-php
@ -34,9 +34,9 @@ jobs:
id: prettier_status id: prettier_status
run: | run: |
if prettier --check ${GITHUB_WORKSPACE}; then if prettier --check ${GITHUB_WORKSPACE}; then
echo "::set-output name=result::pass" echo "name=result::pass" >> $GITHUB_OUTPUT
else else
echo "::set-output name=result::fail" echo "name=result::fail" >> $GITHUB_OUTPUT
fi fi
- name: Run 'prettier --write' - name: Run 'prettier --write'

View file

@ -4,6 +4,8 @@ name: nf-core linting
# that the code meets the nf-core guidelines. # that the code meets the nf-core guidelines.
on: on:
push: push:
branches:
- dev
pull_request: pull_request:
release: release:
types: [published] types: [published]
@ -12,9 +14,9 @@ jobs:
EditorConfig: EditorConfig:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v3
- uses: actions/setup-node@v2 - uses: actions/setup-node@v3
- name: Install editorconfig-checker - name: Install editorconfig-checker
run: npm install -g editorconfig-checker run: npm install -g editorconfig-checker
@ -25,9 +27,9 @@ jobs:
Prettier: Prettier:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v3
- uses: actions/setup-node@v2 - uses: actions/setup-node@v3
- name: Install Prettier - name: Install Prettier
run: npm install -g prettier run: npm install -g prettier
@ -38,7 +40,7 @@ jobs:
PythonBlack: PythonBlack:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v3
- name: Check code lints with Black - name: Check code lints with Black
uses: psf/black@stable uses: psf/black@stable
@ -69,12 +71,12 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Check out pipeline code - name: Check out pipeline code
uses: actions/checkout@v2 uses: actions/checkout@v3
- name: Install Nextflow - name: Install Nextflow
uses: nf-core/setup-nextflow@v1 uses: nf-core/setup-nextflow@v1
- uses: actions/setup-python@v3 - uses: actions/setup-python@v4
with: with:
python-version: "3.7" python-version: "3.7"
architecture: "x64" architecture: "x64"
@ -97,7 +99,7 @@ jobs:
- name: Upload linting log file artifact - name: Upload linting log file artifact
if: ${{ always() }} if: ${{ always() }}
uses: actions/upload-artifact@v2 uses: actions/upload-artifact@v3
with: with:
name: linting-logs name: linting-logs
path: | path: |

View file

@ -18,7 +18,7 @@ jobs:
- name: Get PR number - name: Get PR number
id: pr_number id: pr_number
run: echo "::set-output name=pr_number::$(cat linting-logs/PR_number.txt)" run: echo "name=pr_number::$(cat linting-logs/PR_number.txt)" >> $GITHUB_OUTPUT
- name: Post PR comment - name: Post PR comment
uses: marocchino/sticky-pull-request-comment@v2 uses: marocchino/sticky-pull-request-comment@v2

View file

@ -1,5 +1,6 @@
email_template.html email_template.html
adaptivecard.json adaptivecard.json
slackreport.json
.nextflow* .nextflow*
work/ work/
data/ data/
@ -8,3 +9,4 @@ results/
testing/ testing/
testing* testing*
*.pyc *.pyc
bin/

View file

@ -1,56 +0,0 @@
cff-version: 1.2.0
message: "If you use `nf-core tools` in your work, please cite the `nf-core` publication"
authors:
- family-names: Ewels
given-names: Philip
- family-names: Peltzer
given-names: Alexander
- family-names: Fillinger
given-names: Sven
- family-names: Patel
given-names: Harshil
- family-names: Alneberg
given-names: Johannes
- family-names: Wilm
given-names: Andreas
- family-names: Garcia
given-names: Maxime Ulysse
- family-names: Di Tommaso
given-names: Paolo
- family-names: Nahnsen
given-names: Sven
title: "The nf-core framework for community-curated bioinformatics pipelines."
version: 2.4.1
doi: 10.1038/s41587-020-0439-x
date-released: 2022-05-16
url: https://github.com/nf-core/tools
prefered-citation:
type: article
authors:
- family-names: Ewels
given-names: Philip
- family-names: Peltzer
given-names: Alexander
- family-names: Fillinger
given-names: Sven
- family-names: Patel
given-names: Harshil
- family-names: Alneberg
given-names: Johannes
- family-names: Wilm
given-names: Andreas
- family-names: Garcia
given-names: Maxime Ulysse
- family-names: Di Tommaso
given-names: Paolo
- family-names: Nahnsen
given-names: Sven
doi: 10.1038/s41587-020-0439-x
journal: nature biotechnology
start: 276
end: 278
title: "The nf-core framework for community-curated bioinformatics pipelines."
issue: 3
volume: 38
year: 2020
url: https://dx.doi.org/10.1038/s41587-020-0439-x

View file

@ -2,7 +2,7 @@
[![AWS CI](https://img.shields.io/badge/CI%20tests-full%20size-FF9900?labelColor=000000&logo=Amazon%20AWS)](https://nf-co.re/taxprofiler/results)[![Cite with Zenodo](http://img.shields.io/badge/DOI-10.5281/zenodo.XXXXXXX-1073c8?labelColor=000000)](https://doi.org/10.5281/zenodo.XXXXXXX) [![AWS CI](https://img.shields.io/badge/CI%20tests-full%20size-FF9900?labelColor=000000&logo=Amazon%20AWS)](https://nf-co.re/taxprofiler/results)[![Cite with Zenodo](http://img.shields.io/badge/DOI-10.5281/zenodo.XXXXXXX-1073c8?labelColor=000000)](https://doi.org/10.5281/zenodo.XXXXXXX)
[![Nextflow](https://img.shields.io/badge/nextflow%20DSL2-%E2%89%A521.10.3-23aa62.svg)](https://www.nextflow.io/) [![Nextflow](https://img.shields.io/badge/nextflow%20DSL2-%E2%89%A522.10.1-23aa62.svg)](https://www.nextflow.io/)
[![run with conda](http://img.shields.io/badge/run%20with-conda-3EB049?labelColor=000000&logo=anaconda)](https://docs.conda.io/en/latest/) [![run with conda](http://img.shields.io/badge/run%20with-conda-3EB049?labelColor=000000&logo=anaconda)](https://docs.conda.io/en/latest/)
[![run with docker](https://img.shields.io/badge/run%20with-docker-0db7ed?labelColor=000000&logo=docker)](https://www.docker.com/) [![run with docker](https://img.shields.io/badge/run%20with-docker-0db7ed?labelColor=000000&logo=docker)](https://www.docker.com/)
[![run with singularity](https://img.shields.io/badge/run%20with-singularity-1d355c.svg?labelColor=000000)](https://sylabs.io/docs/) [![run with singularity](https://img.shields.io/badge/run%20with-singularity-1d355c.svg?labelColor=000000)](https://sylabs.io/docs/)
@ -31,7 +31,7 @@ On release, automated continuous integration tests run the pipeline on a full-si
## Quick Start ## Quick Start
1. Install [`Nextflow`](https://www.nextflow.io/docs/latest/getstarted.html#installation) (`>=21.10.3`) 1. Install [`Nextflow`](https://www.nextflow.io/docs/latest/getstarted.html#installation) (`>=22.10.1`)
2. Install any of [`Docker`](https://docs.docker.com/engine/installation/), [`Singularity`](https://www.sylabs.io/guides/3.0/user-guide/) (you can follow [this tutorial](https://singularity-tutorial.github.io/01-installation/)), [`Podman`](https://podman.io/), [`Shifter`](https://nersc.gitlab.io/development/shifter/how-to-use/) or [`Charliecloud`](https://hpc.github.io/charliecloud/) for full pipeline reproducibility _(you can use [`Conda`](https://conda.io/miniconda.html) both to install Nextflow itself and also to manage software within pipelines. Please only use it within pipelines as a last resort; see [docs](https://nf-co.re/usage/configuration#basic-configuration-profiles))_. 2. Install any of [`Docker`](https://docs.docker.com/engine/installation/), [`Singularity`](https://www.sylabs.io/guides/3.0/user-guide/) (you can follow [this tutorial](https://singularity-tutorial.github.io/01-installation/)), [`Podman`](https://podman.io/), [`Shifter`](https://nersc.gitlab.io/development/shifter/how-to-use/) or [`Charliecloud`](https://hpc.github.io/charliecloud/) for full pipeline reproducibility _(you can use [`Conda`](https://conda.io/miniconda.html) both to install Nextflow itself and also to manage software within pipelines. Please only use it within pipelines as a last resort; see [docs](https://nf-co.re/usage/configuration#basic-configuration-profiles))_.

34
assets/slackreport.json Normal file
View file

@ -0,0 +1,34 @@
{
"attachments": [
{
"fallback": "Plain-text summary of the attachment.",
"color": "<% if (success) { %>good<% } else { %>danger<%} %>",
"author_name": "sanger-tol/readmapping v${version} - ${runName}",
"author_icon": "https://www.nextflow.io/docs/latest/_static/favicon.ico",
"text": "<% if (success) { %>Pipeline completed successfully!<% } else { %>Pipeline completed with errors<% } %>",
"fields": [
{
"title": "Command used to launch the workflow",
"value": "```${commandLine}```",
"short": false
}
<%
if (!success) { %>
,
{
"title": "Full error message",
"value": "```${errorReport}```",
"short": false
},
{
"title": "Pipeline configuration",
"value": "<% out << summary.collect{ k,v -> k == "hook_url" ? "_${k}_: (_hidden_)" : ( ( v.class.toString().contains('Path') || ( v.class.toString().contains('String') && v.contains('/') ) ) ? "_${k}_: `${v}`" : (v.class.toString().contains('DateTime') ? ("_${k}_: " + v.format(java.time.format.DateTimeFormatter.ofLocalizedDateTime(java.time.format.FormatStyle.MEDIUM))) : "_${k}_: ${v}") ) }.join(",\n") %>",
"short": false
}
<% }
%>
],
"footer": "Completed at <% out << dateComplete.format(java.time.format.DateTimeFormatter.ofLocalizedDateTime(java.time.format.FormatStyle.MEDIUM)) %> (duration: ${duration})"
}
]
}

View file

@ -83,9 +83,9 @@ nextflow pull nf-core/taxprofiler
It is a good idea to specify a pipeline version when running the pipeline on your data. This ensures that a specific version of the pipeline code and software are used when you run your pipeline. If you keep using the same tag, you'll be running the same version of the pipeline, even if there have been changes to the code since. It is a good idea to specify a pipeline version when running the pipeline on your data. This ensures that a specific version of the pipeline code and software are used when you run your pipeline. If you keep using the same tag, you'll be running the same version of the pipeline, even if there have been changes to the code since.
First, go to the [nf-core/taxprofiler releases page](https://github.com/nf-core/taxprofiler/releases) and find the latest version number - numeric only (eg. `1.3.1`). Then specify this when running the pipeline with `-r` (one hyphen) - eg. `-r 1.3.1`. First, go to the [nf-core/taxprofiler releases page](https://github.com/nf-core/taxprofiler/releases) and find the latest pipeline version - numeric only (eg. `1.3.1`). Then specify this when running the pipeline with `-r` (one hyphen) - eg. `-r 1.3.1`. Of course, you can switch to another version by changing the number after the `-r` flag.
This version number will be logged in reports when you run the pipeline, so that you'll know what you used when you look back in the future. This version number will be logged in reports when you run the pipeline, so that you'll know what you used when you look back in the future. For example, at the bottom of the MultiQC reports.
## Core Nextflow arguments ## Core Nextflow arguments
@ -95,7 +95,7 @@ This version number will be logged in reports when you run the pipeline, so that
Use this parameter to choose a configuration profile. Profiles can give configuration presets for different compute environments. Use this parameter to choose a configuration profile. Profiles can give configuration presets for different compute environments.
Several generic profiles are bundled with the pipeline which instruct the pipeline to use software packaged using different methods (Docker, Singularity, Podman, Shifter, Charliecloud, Conda) - see below. When using Biocontainers, most of these software packaging methods pull Docker containers from quay.io e.g [FastQC](https://quay.io/repository/biocontainers/fastqc) except for Singularity which directly downloads Singularity images via https hosted by the [Galaxy project](https://depot.galaxyproject.org/singularity/) and Conda which downloads and installs software locally from [Bioconda](https://bioconda.github.io/). Several generic profiles are bundled with the pipeline which instruct the pipeline to use software packaged using different methods (Docker, Singularity, Podman, Shifter, Charliecloud, Conda) - see below.
> We highly recommend the use of Docker or Singularity containers for full pipeline reproducibility, however when this is not possible, Conda is also supported. > We highly recommend the use of Docker or Singularity containers for full pipeline reproducibility, however when this is not possible, Conda is also supported.
@ -104,8 +104,11 @@ The pipeline also dynamically loads configurations from [https://github.com/nf-c
Note that multiple profiles can be loaded, for example: `-profile test,docker` - the order of arguments is important! Note that multiple profiles can be loaded, for example: `-profile test,docker` - the order of arguments is important!
They are loaded in sequence, so later profiles can overwrite earlier profiles. They are loaded in sequence, so later profiles can overwrite earlier profiles.
If `-profile` is not specified, the pipeline will run locally and expect all software to be installed and available on the `PATH`. This is _not_ recommended. If `-profile` is not specified, the pipeline will run locally and expect all software to be installed and available on the `PATH`. This is _not_ recommended, since it can lead to different results on different machines dependent on the computer enviroment.
- `test`
- A profile with a complete configuration for automated testing
- Includes links to test data so needs no other parameters
- `docker` - `docker`
- A generic configuration profile to be used with [Docker](https://docker.com/) - A generic configuration profile to be used with [Docker](https://docker.com/)
- `singularity` - `singularity`
@ -118,9 +121,6 @@ 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/) - A generic configuration profile to be used with [Charliecloud](https://hpc.github.io/charliecloud/)
- `conda` - `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 or Charliecloud. - 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 or Charliecloud.
- `test`
- A profile with a complete configuration for automated testing
- Includes links to test data so needs no other parameters
### `-resume` ### `-resume`
@ -169,8 +169,14 @@ Work dir:
Tip: you can replicate the issue by changing to the process work dir and entering the command `bash .command.run` Tip: you can replicate the issue by changing to the process work dir and entering the command `bash .command.run`
``` ```
#### For beginners
A first step to bypass this error, you could try to increase the amount of CPUs, memory, and time for the whole pipeline. Therefor you can try to increase the resource for the parameters `--max_cpus`, `--max_memory`, and `--max_time`. Based on the error above, you have to increase the amount of memory. Therefore you can go to the [parameter documentation of rnaseq](https://nf-co.re/rnaseq/3.9/parameters) and scroll down to the `show hidden parameter` button to get the default value for `--max_memory`. In this case 128GB, you than can try to run your pipeline again with `--max_memory 200GB -resume` to skip all process, that were already calculated. If you can not increase the resource of the complete pipeline, you can try to adapt the resource for a single process as mentioned below.
#### Advanced option on process level
To bypass this error you would need to find exactly which resources are set by the `STAR_ALIGN` process. The quickest way is to search for `process STAR_ALIGN` in the [nf-core/rnaseq Github repo](https://github.com/nf-core/rnaseq/search?q=process+STAR_ALIGN). To bypass this error you would need to find exactly which resources are set by the `STAR_ALIGN` process. The quickest way is to search for `process STAR_ALIGN` in the [nf-core/rnaseq Github repo](https://github.com/nf-core/rnaseq/search?q=process+STAR_ALIGN).
We have standardised the structure of Nextflow DSL2 pipelines such that all module files will be present in the `modules/` directory and so, based on the search results, the file we want is `modules/nf-core/software/star/align/main.nf`. We have standardised the structure of Nextflow DSL2 pipelines such that all module files will be present in the `modules/` directory and so, based on the search results, the file we want is `modules/nf-core/star/align/main.nf`.
If you click on the link to that file you will notice that there is a `label` directive at the top of the module that is set to [`label process_high`](https://github.com/nf-core/rnaseq/blob/4c27ef5610c87db00c3c5a3eed10b1d161abf575/modules/nf-core/software/star/align/main.nf#L9). If you click on the link to that file you will notice that there is a `label` directive at the top of the module that is set to [`label process_high`](https://github.com/nf-core/rnaseq/blob/4c27ef5610c87db00c3c5a3eed10b1d161abf575/modules/nf-core/software/star/align/main.nf#L9).
The [Nextflow `label`](https://www.nextflow.io/docs/latest/process.html#label) directive allows us to organise workflow processes in separate groups which can be referenced in a configuration file to select and configure subset of processes having similar computing requirements. The [Nextflow `label`](https://www.nextflow.io/docs/latest/process.html#label) directive allows us to organise workflow processes in separate groups which can be referenced in a configuration file to select and configure subset of processes having similar computing requirements.
The default values for the `process_high` label are set in the pipeline's [`base.config`](https://github.com/nf-core/rnaseq/blob/4c27ef5610c87db00c3c5a3eed10b1d161abf575/conf/base.config#L33-L37) which in this case is defined as 72GB. The default values for the `process_high` label are set in the pipeline's [`base.config`](https://github.com/nf-core/rnaseq/blob/4c27ef5610c87db00c3c5a3eed10b1d161abf575/conf/base.config#L33-L37) which in this case is defined as 72GB.
@ -189,7 +195,7 @@ process {
> >
> If you get a warning suggesting that the process selector isn't recognised check that the process name has been specified correctly. > If you get a warning suggesting that the process selector isn't recognised check that the process name has been specified correctly.
### Updating containers ### Updating containers (advanced users)
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. If for some reason you need to use a different version of a particular tool with the pipeline then you just need to identify the `process` name and override the Nextflow `container` definition for that process using the `withName` declaration. For example, in the [nf-core/viralrecon](https://nf-co.re/viralrecon) pipeline a tool called [Pangolin](https://github.com/cov-lineages/pangolin) has been used during the COVID-19 pandemic to assign lineages to SARS-CoV-2 genome sequenced samples. Given that the lineage assignments change quite frequently it doesn't make sense to re-release the nf-core/viralrecon everytime a new version of Pangolin has been released. However, you can override the default container used by the pipeline by creating a custom config file and passing it as a command-line argument via `-c custom.config`. 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. If for some reason you need to use a different version of a particular tool with the pipeline then you just need to identify the `process` name and override the Nextflow `container` definition for that process using the `withName` declaration. For example, in the [nf-core/viralrecon](https://nf-co.re/viralrecon) pipeline a tool called [Pangolin](https://github.com/cov-lineages/pangolin) has been used during the COVID-19 pandemic to assign lineages to SARS-CoV-2 genome sequenced samples. Given that the lineage assignments change quite frequently it doesn't make sense to re-release the nf-core/viralrecon everytime a new version of Pangolin has been released. However, you can override the default container used by the pipeline by creating a custom config file and passing it as a command-line argument via `-c custom.config`.

View file

@ -46,7 +46,6 @@ class NfcoreSchema {
'quiet', 'quiet',
'syslog', 'syslog',
'v', 'v',
'version',
// Options for `nextflow run` command // Options for `nextflow run` command
'ansi', 'ansi',

View file

@ -32,6 +32,25 @@ class NfcoreTemplate {
} }
} }
//
// Generate version string
//
public static String version(workflow) {
String version_string = ""
if (workflow.manifest.version) {
def prefix_v = workflow.manifest.version[0] != 'v' ? 'v' : ''
version_string += "${prefix_v}${workflow.manifest.version}"
}
if (workflow.commitId) {
def git_shortsha = workflow.commitId.substring(0, 7)
version_string += "-g${git_shortsha}"
}
return version_string
}
// //
// Construct and send completion email // Construct and send completion email
// //
@ -61,7 +80,7 @@ class NfcoreTemplate {
misc_fields['Nextflow Compile Timestamp'] = workflow.nextflow.timestamp misc_fields['Nextflow Compile Timestamp'] = workflow.nextflow.timestamp
def email_fields = [:] def email_fields = [:]
email_fields['version'] = workflow.manifest.version email_fields['version'] = NfcoreTemplate.version(workflow)
email_fields['runName'] = workflow.runName email_fields['runName'] = workflow.runName
email_fields['success'] = workflow.success email_fields['success'] = workflow.success
email_fields['dateComplete'] = workflow.complete email_fields['dateComplete'] = workflow.complete
@ -146,10 +165,10 @@ class NfcoreTemplate {
} }
// //
// Construct and send adaptive card // Construct and send a notification to a web server as JSON
// https://adaptivecards.io // e.g. Microsoft Teams and Slack
// //
public static void adaptivecard(workflow, params, summary_params, projectDir, log) { public static void IM_notification(workflow, params, summary_params, projectDir, log) {
def hook_url = params.hook_url def hook_url = params.hook_url
def summary = [:] def summary = [:]
@ -170,7 +189,7 @@ class NfcoreTemplate {
misc_fields['nxf_timestamp'] = workflow.nextflow.timestamp misc_fields['nxf_timestamp'] = workflow.nextflow.timestamp
def msg_fields = [:] def msg_fields = [:]
msg_fields['version'] = workflow.manifest.version msg_fields['version'] = NfcoreTemplate.version(workflow)
msg_fields['runName'] = workflow.runName msg_fields['runName'] = workflow.runName
msg_fields['success'] = workflow.success msg_fields['success'] = workflow.success
msg_fields['dateComplete'] = workflow.complete msg_fields['dateComplete'] = workflow.complete
@ -178,13 +197,16 @@ class NfcoreTemplate {
msg_fields['exitStatus'] = workflow.exitStatus msg_fields['exitStatus'] = workflow.exitStatus
msg_fields['errorMessage'] = (workflow.errorMessage ?: 'None') msg_fields['errorMessage'] = (workflow.errorMessage ?: 'None')
msg_fields['errorReport'] = (workflow.errorReport ?: 'None') msg_fields['errorReport'] = (workflow.errorReport ?: 'None')
msg_fields['commandLine'] = workflow.commandLine msg_fields['commandLine'] = workflow.commandLine.replaceFirst(/ +--hook_url +[^ ]+/, "")
msg_fields['projectDir'] = workflow.projectDir msg_fields['projectDir'] = workflow.projectDir
msg_fields['summary'] = summary << misc_fields msg_fields['summary'] = summary << misc_fields
// Render the JSON template // Render the JSON template
def engine = new groovy.text.GStringTemplateEngine() def engine = new groovy.text.GStringTemplateEngine()
def hf = new File("$projectDir/assets/adaptivecard.json") // Different JSON depending on the service provider
// Defaults to "Adaptive Cards" (https://adaptivecards.io), except Slack which has its own format
def json_path = hook_url.contains("hooks.slack.com") ? "slackreport.json" : "adaptivecard.json"
def hf = new File("$projectDir/assets/${json_path}")
def json_template = engine.createTemplate(hf).make(msg_fields) def json_template = engine.createTemplate(hf).make(msg_fields)
def json_message = json_template.toString() def json_message = json_template.toString()
@ -209,7 +231,7 @@ class NfcoreTemplate {
if (workflow.stats.ignoredCount == 0) { if (workflow.stats.ignoredCount == 0) {
log.info "-${colors.purple}[$workflow.manifest.name]${colors.green} Pipeline completed successfully${colors.reset}-" log.info "-${colors.purple}[$workflow.manifest.name]${colors.green} Pipeline completed successfully${colors.reset}-"
} else { } else {
log.info "-${colors.purple}[$workflow.manifest.name]${colors.red} Pipeline completed successfully, but with errored process(es) ${colors.reset}-" log.info "-${colors.purple}[$workflow.manifest.name]${colors.yellow} Pipeline completed successfully, but with errored process(es) ${colors.reset}-"
} }
} else { } else {
log.info "-${colors.purple}[$workflow.manifest.name]${colors.red} Pipeline completed with errors${colors.reset}-" log.info "-${colors.purple}[$workflow.manifest.name]${colors.red} Pipeline completed with errors${colors.reset}-"
@ -297,6 +319,7 @@ class NfcoreTemplate {
// //
public static String logo(workflow, monochrome_logs) { public static String logo(workflow, monochrome_logs) {
Map colors = logColours(monochrome_logs) Map colors = logColours(monochrome_logs)
String workflow_version = NfcoreTemplate.version(workflow)
String.format( String.format(
"""\n """\n
${dashedLine(monochrome_logs)} ${dashedLine(monochrome_logs)}
@ -305,7 +328,7 @@ class NfcoreTemplate {
${colors.blue} |\\ | |__ __ / ` / \\ |__) |__ ${colors.yellow}} {${colors.reset} ${colors.blue} |\\ | |__ __ / ` / \\ |__) |__ ${colors.yellow}} {${colors.reset}
${colors.blue} | \\| | \\__, \\__/ | \\ |___ ${colors.green}\\`-._,-`-,${colors.reset} ${colors.blue} | \\| | \\__, \\__/ | \\ |___ ${colors.green}\\`-._,-`-,${colors.reset}
${colors.green}`._,._,\'${colors.reset} ${colors.green}`._,._,\'${colors.reset}
${colors.purple} ${workflow.manifest.name} v${workflow.manifest.version}${colors.reset} ${colors.purple} ${workflow.manifest.name} ${workflow_version}${colors.reset}
${dashedLine(monochrome_logs)} ${dashedLine(monochrome_logs)}
""".stripIndent() """.stripIndent()
) )

View file

@ -19,7 +19,7 @@ class WorkflowMain {
} }
// //
// Print help to screen if required // Generate help string
// //
public static String help(workflow, params, log) { public static String help(workflow, params, log) {
def command = "nextflow run ${workflow.manifest.name} --input samplesheet.csv --genome GRCh37 -profile docker" def command = "nextflow run ${workflow.manifest.name} --input samplesheet.csv --genome GRCh37 -profile docker"
@ -32,7 +32,7 @@ class WorkflowMain {
} }
// //
// Print parameter summary log to screen // Generate parameter summary log string
// //
public static String paramsSummaryLog(workflow, params, log) { public static String paramsSummaryLog(workflow, params, log) {
def summary_log = '' def summary_log = ''
@ -53,15 +53,21 @@ class WorkflowMain {
System.exit(0) System.exit(0)
} }
// Print workflow version and exit on --version
if (params.version) {
String workflow_version = NfcoreTemplate.version(workflow)
log.info "${workflow.manifest.name} ${workflow_version}"
System.exit(0)
}
// Print parameter summary log to screen
log.info paramsSummaryLog(workflow, params, log)
// Validate workflow parameters via the JSON schema // Validate workflow parameters via the JSON schema
if (params.validate_params) { if (params.validate_params) {
NfcoreSchema.validateParameters(workflow, params, log) NfcoreSchema.validateParameters(workflow, params, log)
} }
// Print parameter summary log to screen
log.info paramsSummaryLog(workflow, params, log)
// Check that a -profile or Nextflow config has been provided to run the pipeline // Check that a -profile or Nextflow config has been provided to run the pipeline
NfcoreTemplate.checkConfigProvided(workflow, log) NfcoreTemplate.checkConfigProvided(workflow, log)

View file

@ -7,15 +7,18 @@
"nf-core": { "nf-core": {
"custom/dumpsoftwareversions": { "custom/dumpsoftwareversions": {
"branch": "master", "branch": "master",
"git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905" "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905",
"installed_by": ["modules"]
}, },
"fastqc": { "fastqc": {
"branch": "master", "branch": "master",
"git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905" "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905",
"installed_by": ["modules"]
}, },
"multiqc": { "multiqc": {
"branch": "master", "branch": "master",
"git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905" "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905",
"installed_by": ["modules"]
} }
} }
} }

View file

@ -1,5 +1,6 @@
process SAMPLESHEET_CHECK { process SAMPLESHEET_CHECK {
tag "$samplesheet" tag "$samplesheet"
label 'process_single'
conda (params.enable_conda ? "conda-forge::python=3.8.3" : null) conda (params.enable_conda ? "conda-forge::python=3.8.3" : null)
container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ?
@ -13,6 +14,9 @@ process SAMPLESHEET_CHECK {
path '*.csv' , emit: csv path '*.csv' , emit: csv
path "versions.yml", emit: versions path "versions.yml", emit: versions
when:
task.ext.when == null || task.ext.when
script: // This script is bundled with the pipeline, in nf-core/taxprofiler/bin/ script: // This script is bundled with the pipeline, in nf-core/taxprofiler/bin/
""" """
check_samplesheet.py \\ check_samplesheet.py \\

View file

@ -35,6 +35,7 @@ params {
monochrome_logs = false monochrome_logs = false
hook_url = null hook_url = null
help = false help = false
version = false
validate_params = true validate_params = true
show_hidden_params = false show_hidden_params = false
schema_ignore_params = 'genomes' schema_ignore_params = 'genomes'
@ -81,6 +82,7 @@ profiles {
debug { process.beforeScript = 'echo $HOSTNAME' } debug { process.beforeScript = 'echo $HOSTNAME' }
conda { conda {
params.enable_conda = true params.enable_conda = true
conda.enabled = true
docker.enabled = false docker.enabled = false
singularity.enabled = false singularity.enabled = false
podman.enabled = false podman.enabled = false
@ -89,6 +91,7 @@ profiles {
} }
mamba { mamba {
params.enable_conda = true params.enable_conda = true
conda.enabled = true
conda.useMamba = true conda.useMamba = true
docker.enabled = false docker.enabled = false
singularity.enabled = false singularity.enabled = false
@ -104,6 +107,9 @@ profiles {
shifter.enabled = false shifter.enabled = false
charliecloud.enabled = false charliecloud.enabled = false
} }
arm {
docker.runOptions = '-u $(id -u):$(id -g) --platform=linux/amd64'
}
singularity { singularity {
singularity.enabled = true singularity.enabled = true
singularity.autoMounts = true singularity.autoMounts = true
@ -185,11 +191,11 @@ dag {
manifest { manifest {
name = 'nf-core/taxprofiler' name = 'nf-core/taxprofiler'
author = 'nf-core community' author = """nf-core community"""
homePage = 'https://github.com/nf-core/taxprofiler' homePage = 'https://github.com/nf-core/taxprofiler'
description = 'Taxonomic profiling of shotgun metagenomic data' description = """Taxonomic profiling of shotgun metagenomic data"""
mainScript = 'main.nf' mainScript = 'main.nf'
nextflowVersion = '!>=21.10.3' nextflowVersion = '!>=22.10.1'
version = '1.0dev' version = '1.0dev'
doi = '' doi = ''
} }

View file

@ -176,6 +176,12 @@
"fa_icon": "fas fa-question-circle", "fa_icon": "fas fa-question-circle",
"hidden": true "hidden": true
}, },
"version": {
"type": "boolean",
"description": "Display version and exit.",
"fa_icon": "fas fa-question-circle",
"hidden": true
},
"publish_dir_mode": { "publish_dir_mode": {
"type": "string", "type": "string",
"default": "copy", "default": "copy",
@ -217,7 +223,7 @@
"type": "string", "type": "string",
"description": "Incoming hook URL for messaging service", "description": "Incoming hook URL for messaging service",
"fa_icon": "fas fa-people-group", "fa_icon": "fas fa-people-group",
"help_text": "Incoming hook URL for messaging service. Currently, only MS Teams is supported.", "help_text": "Incoming hook URL for messaging service. Currently, MS Teams and Slack are supported.",
"hidden": true "hidden": true
}, },
"multiqc_config": { "multiqc_config": {

View file

@ -82,7 +82,7 @@ workflow TAXPROFILER {
ch_versions = ch_versions.mix(FASTQC.out.versions.first()) ch_versions = ch_versions.mix(FASTQC.out.versions.first())
CUSTOM_DUMPSOFTWAREVERSIONS ( CUSTOM_DUMPSOFTWAREVERSIONS (
ch_versions.unique().collectFile(name: 'collated_versions.yml') ch_versions.unique{ it.text }.collectFile(name: 'collated_versions.yml')
) )
// //
@ -102,12 +102,11 @@ workflow TAXPROFILER {
MULTIQC ( MULTIQC (
ch_multiqc_files.collect(), ch_multiqc_files.collect(),
ch_multiqc_config.collect().ifEmpty([]), ch_multiqc_config.toList(),
ch_multiqc_custom_config.collect().ifEmpty([]), ch_multiqc_custom_config.toList(),
ch_multiqc_logo.collect().ifEmpty([]) ch_multiqc_logo.toList()
) )
multiqc_report = MULTIQC.out.report.toList() multiqc_report = MULTIQC.out.report.toList()
ch_versions = ch_versions.mix(MULTIQC.out.versions)
} }
/* /*
@ -122,7 +121,7 @@ workflow.onComplete {
} }
NfcoreTemplate.summary(workflow, params, log) NfcoreTemplate.summary(workflow, params, log)
if (params.hook_url) { if (params.hook_url) {
NfcoreTemplate.adaptivecard(workflow, params, summary_params, projectDir, log) NfcoreTemplate.IM_notification(workflow, params, summary_params, projectDir, log)
} }
} }