diff --git a/.github/workflows/awsfulltest.yml b/.github/workflows/awsfulltest.yml
index 41f5c11..bcbb910 100644
--- a/.github/workflows/awsfulltest.yml
+++ b/.github/workflows/awsfulltest.yml
@@ -28,6 +28,3 @@ jobs:
"outdir": "s3://${{ secrets.AWS_S3_BUCKET }}/taxprofiler/results-${{ github.sha }}"
}
profiles: test_full,aws_tower
- nextflow_config: |
- process.errorStrategy = 'retry'
- process.maxRetries = 3
diff --git a/.github/workflows/awstest.yml b/.github/workflows/awstest.yml
index ebffec6..5d35eea 100644
--- a/.github/workflows/awstest.yml
+++ b/.github/workflows/awstest.yml
@@ -23,6 +23,3 @@ jobs:
"outdir": "s3://${{ secrets.AWS_S3_BUCKET }}/taxprofiler/results-test-${{ github.sha }}"
}
profiles: test,aws_tower
- nextflow_config: |
- process.errorStrategy = 'retry'
- process.maxRetries = 3
diff --git a/.github/workflows/branch.yml b/.github/workflows/branch.yml
index b8a412e..b5b9ae2 100644
--- a/.github/workflows/branch.yml
+++ b/.github/workflows/branch.yml
@@ -13,7 +13,7 @@ jobs:
- name: Check PRs
if: github.repository == 'nf-core/taxprofiler'
run: |
- "{ [[ ${{github.event.pull_request.head.repo.full_name }} == nf-core/taxprofiler ]] && [[ $GITHUB_HEAD_REF = "dev" ]]; } || [[ $GITHUB_HEAD_REF == "patch" ]]"
+ { [[ ${{github.event.pull_request.head.repo.full_name }} == nf-core/taxprofiler ]] && [[ $GITHUB_HEAD_REF = "dev" ]]; } || [[ $GITHUB_HEAD_REF == "patch" ]]
# If the above check failed, post a comment on the PR explaining the failure
# NOTE - this doesn't currently work if the PR is coming from a fork, due to limitations in GitHub actions secrets
@@ -42,4 +42,3 @@ jobs:
Thanks again for your contribution!
repo-token: ${{ secrets.GITHUB_TOKEN }}
allow-repeats: false
-#
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index a1ece72..689a193 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -38,7 +38,7 @@ jobs:
- "--shortread_clipmerge_tool adapterremoval --shortread_clipmerge_mergepairs --shortread_clipmerge_excludeunmerged"
- "--shortread_clipmerge_tool adapterremoval --shortread_clipmerge_mergepairs"
- "--shortread_complexityfilter_tool bbduk"
- - "--shortread_complexityfilter_tool prinseq"
+ - "--shortread_complexityfilter_tool prinseqplusplus"
- "--perform_runmerging"
- "--perform_runmerging --shortread_clipmerge_mergepairs"
- "--shortread_complexityfilter false --perform_shortread_hostremoval"
@@ -71,5 +71,3 @@ jobs:
# Remember that you can parallelise this by using strategy.matrix
run: |
nextflow run ${GITHUB_WORKSPACE} -profile test,docker --outdir ./results ${{ matrix.parameters }}
-
-#
diff --git a/.github/workflows/fix-linting.yml b/.github/workflows/fix-linting.yml
new file mode 100644
index 0000000..5a5f775
--- /dev/null
+++ b/.github/workflows/fix-linting.yml
@@ -0,0 +1,55 @@
+name: Fix linting from a comment
+on:
+ issue_comment:
+ types: [created]
+
+jobs:
+ deploy:
+ # Only run if comment is on a PR with the main repo, and if it contains the magic keywords
+ if: >
+ contains(github.event.comment.html_url, '/pull/') &&
+ contains(github.event.comment.body, '@nf-core-bot fix linting') &&
+ github.repository == 'nf-core/taxprofiler'
+ runs-on: ubuntu-latest
+ steps:
+ # Use the @nf-core-bot token to check out so we can push later
+ - uses: actions/checkout@v3
+ with:
+ token: ${{ secrets.nf_core_bot_auth_token }}
+
+ # Action runs on the issue comment, so we don't get the PR by default
+ # Use the gh cli to check out the PR
+ - name: Checkout Pull Request
+ run: gh pr checkout ${{ github.event.issue.number }}
+ env:
+ GITHUB_TOKEN: ${{ secrets.nf_core_bot_auth_token }}
+
+ - uses: actions/setup-node@v2
+
+ - name: Install Prettier
+ run: npm install -g prettier @prettier/plugin-php
+
+ # Check that we actually need to fix something
+ - name: Run 'prettier --check'
+ id: prettier_status
+ run: |
+ if prettier --check ${GITHUB_WORKSPACE}; then
+ echo "::set-output name=result::pass"
+ else
+ echo "::set-output name=result::fail"
+ fi
+
+ - name: Run 'prettier --write'
+ if: steps.prettier_status.outputs.result == 'fail'
+ run: prettier --write ${GITHUB_WORKSPACE}
+
+ - name: Commit & push changes
+ if: steps.prettier_status.outputs.result == 'fail'
+ run: |
+ git config user.email "core@nf-co.re"
+ git config user.name "nf-core-bot"
+ git config push.default upstream
+ git add .
+ git status
+ git commit -m "[automated] Fix linting with Prettier"
+ git push
diff --git a/.github/workflows/linting.yml b/.github/workflows/linting.yml
index e9cf5de..77358de 100644
--- a/.github/workflows/linting.yml
+++ b/.github/workflows/linting.yml
@@ -48,7 +48,7 @@ jobs:
wget -qO- get.nextflow.io | bash
sudo mv nextflow /usr/local/bin/
- - uses: actions/setup-python@v1
+ - uses: actions/setup-python@v3
with:
python-version: "3.6"
architecture: "x64"
@@ -78,5 +78,3 @@ jobs:
lint_log.txt
lint_results.md
PR_number.txt
-
-#
diff --git a/.github/workflows/linting_comment.yml b/.github/workflows/linting_comment.yml
index 91c487a..04758f6 100644
--- a/.github/workflows/linting_comment.yml
+++ b/.github/workflows/linting_comment.yml
@@ -26,4 +26,3 @@ jobs:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
number: ${{ steps.pr_number.outputs.pr_number }}
path: linting-logs/lint_results.md
-#
diff --git a/.prettierignore b/.prettierignore
index c037321..2fd5fd6 100644
--- a/.prettierignore
+++ b/.prettierignore
@@ -1,2 +1,10 @@
+email_template.html
+.nextflow*
+work/
+data/
+results/
+.DS_Store
testing/
+testing*
tests/
+*.pyc
diff --git a/README.md b/README.md
index 66578e5..7f3932c 100644
--- a/README.md
+++ b/README.md
@@ -1,18 +1,19 @@
-# ![nf-core/taxprofiler](docs/images/nf-core-taxprofiler_logo_light.png#gh-light-mode-only) ![nf-core/taxprofiler](docs/images/nf-core-taxprofiler_logo_dark.png#gh-dark-mode-only)
+# ![nf-core/taxprofiler](docs/images/nf-core-taxprofiler_logo_custom_light.png#gh-light-mode-only) ![nf-core/taxprofiler](docs/images/nf-core-taxprofiler_logo_custom_dark.png#gh-dark-mode-only)
[![GitHub Actions CI Status](https://github.com/nf-core/taxprofiler/workflows/nf-core%20CI/badge.svg)](https://github.com/nf-core/taxprofiler/actions?query=workflow%3A%22nf-core+CI%22)
[![GitHub Actions Linting Status](https://github.com/nf-core/taxprofiler/workflows/nf-core%20linting/badge.svg)](https://github.com/nf-core/taxprofiler/actions?query=workflow%3A%22nf-core+linting%22)
-[![AWS CI](https://img.shields.io/badge/CI%20tests-full%20size-FF9900?labelColor=000000&logo=Amazon%20AWS)](https://nf-co.re/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?logo=Amazon%20AWS)](https://nf-co.re/taxprofiler/results)
+[![Cite with Zenodo](http://img.shields.io/badge/DOI-10.5281/zenodo.XXXXXXX-1073c8)](https://doi.org/10.5281/zenodo.XXXXXXX)
-[![Nextflow](https://img.shields.io/badge/nextflow%20DSL2-%E2%89%A521.10.3-23aa62.svg?labelColor=000000)](https://www.nextflow.io/)
-[![run with conda](http://img.shields.io/badge/run%20with-conda-3EB049?labelColor=000000&logo=anaconda)](https://docs.conda.io/en/latest/)
-[![run with docker](https://img.shields.io/badge/run%20with-docker-0db7ed?labelColor=000000&logo=docker)](https://www.docker.com/)
-[![run with singularity](https://img.shields.io/badge/run%20with-singularity-1d355c.svg?labelColor=000000)](https://sylabs.io/docs/)
+[![Nextflow](https://img.shields.io/badge/nextflow%20DSL2-%E2%89%A521.10.3-23aa62.svg)](https://www.nextflow.io/)
+[![run with conda](http://img.shields.io/badge/run%20with-conda-3EB049?logo=anaconda)](https://docs.conda.io/en/latest/)
+[![run with docker](https://img.shields.io/badge/run%20with-docker-0db7ed?logo=docker)](https://www.docker.com/)
+[![run with singularity](https://img.shields.io/badge/run%20with-singularity-1d355c.svg)](https://sylabs.io/docs/)
+[![Launch on Nextflow Tower](https://img.shields.io/badge/Launch%20%F0%9F%9A%80-Nextflow%20Tower-%234256e7)](https://tower.nf/launch?pipeline=https://github.com/nf-core/taxprofiler)
-[![Get help on Slack](http://img.shields.io/badge/slack-nf--core%20%23taxprofiler-4A154B?labelColor=000000&logo=slack)](https://nfcore.slack.com/channels/taxprofiler)
-[![Follow on Twitter](http://img.shields.io/badge/twitter-%40nf__core-1DA1F2?labelColor=000000&logo=twitter)](https://twitter.com/nf_core)
-[![Watch on YouTube](http://img.shields.io/badge/youtube-nf--core-FF0000?labelColor=000000&logo=youtube)](https://www.youtube.com/c/nf-core)
+[![Get help on Slack](http://img.shields.io/badge/slack-nf--core%20%23taxprofiler-4A154B?logo=slack)](https://nfcore.slack.com/channels/taxprofiler)
+[![Follow on Twitter](http://img.shields.io/badge/twitter-%40nf__core-1DA1F2?logo=twitter)](https://twitter.com/nf_core)
+[![Watch on YouTube](http://img.shields.io/badge/youtube-nf--core-FF0000?logo=youtube)](https://www.youtube.com/c/nf-core)
## Introduction
diff --git a/assets/email_template.html b/assets/email_template.html
index c8dce51..f40addd 100644
--- a/assets/email_template.html
+++ b/assets/email_template.html
@@ -1,111 +1,53 @@
-
-
-
-
+
+
+
+
-
-
- nf-core/taxprofiler Pipeline Report
-
-
-
-
+
+
nf-core/taxprofiler Pipeline Report
+
+
+
-
nf-core/taxprofiler v${version}
-
Run Name: $runName
+
- <% if (!success){ out << """
-
-
nf-core/taxprofiler execution completed unsuccessfully!
+
nf-core/taxprofiler v${version}
+
Run Name: $runName
+
+<% if (!success){
+ out << """
+
+
nf-core/taxprofiler execution completed unsuccessfully!
The exit status of the task that caused the workflow execution to fail was: $exitStatus
.
The full error message was:
-
${errorReport}
-
- """ } else { out << """
-
- nf-core/taxprofiler execution completed successfully!
-
- """ } %>
-
-
The workflow was completed at $dateComplete (duration: $duration)
-
The command used to launch the workflow was as follows:
-
-$commandLine
-
-
Pipeline Configuration:
-
-
- <% out << summary.collect{ k,v -> "
-
-
- $k
- |
-
- $v
- |
-
- " }.join("\n") %>
-
-
-
-
nf-core/taxprofiler
-
https://github.com/nf-core/taxprofiler
+
${errorReport}
-
+ """
+} else {
+ out << """
+
+ nf-core/taxprofiler execution completed successfully!
+
+ """
+}
+%>
+
+
The workflow was completed at $dateComplete (duration: $duration)
+
The command used to launch the workflow was as follows:
+
$commandLine
+
+
Pipeline Configuration:
+
+
+ <% out << summary.collect{ k,v -> "$k | $v |
" }.join("\n") %>
+
+
+
+
nf-core/taxprofiler
+
https://github.com/nf-core/taxprofiler
+
+
+
+
diff --git a/assets/multiqc_config.yml b/assets/multiqc_config.yml
index b0a0b1c..438fb42 100644
--- a/assets/multiqc_config.yml
+++ b/assets/multiqc_config.yml
@@ -9,3 +9,7 @@ report_section_order:
order: -1001
export_plots: true
+
+custom_logo: "nf-core-taxprofiler_logo_custom_light.png"
+custom_logo_url: https://nf-co.re/taxprofiler
+custom_logo_title: "nf-core/taxprofiler"
diff --git a/conf/modules.config b/conf/modules.config
index 31d0fca..f34bd0e 100644
--- a/conf/modules.config
+++ b/conf/modules.config
@@ -54,7 +54,8 @@ process {
params.shortread_clipmerge_skipadaptertrim ? "--disable_adapter_trimming" : "",
params.shortread_clipmerge_adapter1 ? "--adapter_sequence ${params.shortread_clipmerge_adapter1}" : "",
// filtering options
- "--length_required ${params.shortread_clipmerge_minlength}"
+ "--length_required ${params.shortread_clipmerge_minlength}",
+ (params.perform_shortread_complexityfilter && params.shortread_complexityfilter_tool == 'fastp') ? "--low_complexity_filter --complexity_threshold ${params.shortread_complexityfilter_fastp_threshold}" : ''
].join(' ').trim()
ext.prefix = { "${meta.id}_${meta.run_accession}" }
publishDir = [
@@ -74,7 +75,8 @@ process {
params.shortread_clipmerge_adapter1 ? "--adapter_sequence ${params.shortread_clipmerge_adapter1}" : "",
params.shortread_clipmerge_adapter2 ? "--adapter_sequence_r2 ${params.shortread_clipmerge_adapter2}" : "--detect_adapter_for_pe",
// filtering options
- "--length_required ${params.shortread_clipmerge_minlength}"
+ "--length_required ${params.shortread_clipmerge_minlength}",
+ params.perform_shortread_complexityfilter && params.shortread_complexityfilter_tool == 'fastp' ? "--low_complexity_filter --complexity_threshold ${params.shortread_complexityfilter_fastp_threshold}" : ''
].join(' ').trim()
ext.prefix = { "${meta.id}_${meta.run_accession}" }
publishDir = [
diff --git a/conf/test.config b/conf/test.config
index 573db42..b82049d 100644
--- a/conf/test.config
+++ b/conf/test.config
@@ -29,6 +29,7 @@ params {
perform_shortread_complexityfilter = true
perform_shortread_hostremoval = true
perform_longread_hostremoval = true
+ perform_runmerging = true
hostremoval_reference = 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/homo_sapiens/genome/genome.fasta'
run_kaiju = true
run_kraken2 = true
diff --git a/conf/test_nopreprocessing.config b/conf/test_nopreprocessing.config
new file mode 100644
index 0000000..e8d4ed9
--- /dev/null
+++ b/conf/test_nopreprocessing.config
@@ -0,0 +1,46 @@
+/*
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Nextflow config file for running minimal tests
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Defines input files and everything required to run a fast and simple pipeline test.
+
+ Use as follows:
+ nextflow run nf-core/taxprofiler -profile test,
--outdir
+
+----------------------------------------------------------------------------------------
+*/
+
+params {
+ config_profile_name = 'Test profile'
+ config_profile_description = 'Minimal test dataset skipping all preprocessing 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
+ input = 'https://raw.githubusercontent.com/nf-core/test-datasets/taxprofiler/samplesheet.csv'
+ databases = 'https://raw.githubusercontent.com/nf-core/test-datasets/taxprofiler/database.csv'
+ perform_shortread_clipmerge = false
+ perform_longread_clip = false
+ perform_shortread_complexityfilter = false
+ perform_shortread_hostremoval = false
+ perform_longread_hostremoval = false
+ perform_runmerging = false
+ hostremoval_reference = 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/homo_sapiens/genome/genome.fasta'
+ run_kaiju = true
+ run_kraken2 = true
+ run_malt = true
+ run_metaphlan3 = true
+ run_centrifuge = true
+ run_diamond = true
+}
+
+process {
+ withName: MALT_RUN {
+ maxForks = 1
+ }
+}
diff --git a/conf/test_noprofiling.config b/conf/test_noprofiling.config
new file mode 100644
index 0000000..f908651
--- /dev/null
+++ b/conf/test_noprofiling.config
@@ -0,0 +1,46 @@
+/*
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Nextflow config file for running minimal tests
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Defines input files and everything required to run a fast and simple pipeline test.
+
+ Use as follows:
+ nextflow run nf-core/taxprofiler -profile test, --outdir
+
+----------------------------------------------------------------------------------------
+*/
+
+params {
+ config_profile_name = 'Test profile'
+ config_profile_description = 'Minimal test dataset without performing any profiling 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
+ input = 'https://raw.githubusercontent.com/nf-core/test-datasets/taxprofiler/samplesheet.csv'
+ databases = 'https://raw.githubusercontent.com/nf-core/test-datasets/taxprofiler/database.csv'
+ perform_shortread_clipmerge = true
+ perform_longread_clip = true
+ perform_shortread_complexityfilter = true
+ perform_shortread_hostremoval = true
+ perform_longread_hostremoval = true
+ perform_runmerging = true
+ hostremoval_reference = 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/homo_sapiens/genome/genome.fasta'
+ run_kaiju = false
+ run_kraken2 = false
+ run_malt = false
+ run_metaphlan3 = false
+ run_centrifuge = false
+ run_diamond = false
+}
+
+process {
+ withName: MALT_RUN {
+ maxForks = 1
+ }
+}
diff --git a/docs/images/nf-core-taxprofiler_icon.png b/docs/images/nf-core-taxprofiler_icon.png
new file mode 100644
index 0000000..c639fb6
Binary files /dev/null and b/docs/images/nf-core-taxprofiler_icon.png differ
diff --git a/docs/images/nf-core-taxprofiler_icon.svg b/docs/images/nf-core-taxprofiler_icon.svg
new file mode 100644
index 0000000..24e615f
--- /dev/null
+++ b/docs/images/nf-core-taxprofiler_icon.svg
@@ -0,0 +1,444 @@
+
+
+
+
diff --git a/docs/images/nf-core-taxprofiler_logo_custom_dark.png b/docs/images/nf-core-taxprofiler_logo_custom_dark.png
new file mode 100644
index 0000000..6b089fc
Binary files /dev/null and b/docs/images/nf-core-taxprofiler_logo_custom_dark.png differ
diff --git a/docs/images/nf-core-taxprofiler_logo_custom_dark.svg b/docs/images/nf-core-taxprofiler_logo_custom_dark.svg
new file mode 100644
index 0000000..3d47b4c
--- /dev/null
+++ b/docs/images/nf-core-taxprofiler_logo_custom_dark.svg
@@ -0,0 +1,2302 @@
+
+
+
+
diff --git a/docs/images/nf-core-taxprofiler_logo_custom_light.png b/docs/images/nf-core-taxprofiler_logo_custom_light.png
new file mode 100644
index 0000000..2dc85b8
Binary files /dev/null and b/docs/images/nf-core-taxprofiler_logo_custom_light.png differ
diff --git a/docs/images/nf-core-taxprofiler_logo_custom_light.svg b/docs/images/nf-core-taxprofiler_logo_custom_light.svg
new file mode 100644
index 0000000..dae1fbe
--- /dev/null
+++ b/docs/images/nf-core-taxprofiler_logo_custom_light.svg
@@ -0,0 +1,2305 @@
+
+
+
+
diff --git a/docs/images/taxprofiler_logo.svg b/docs/images/taxprofiler_logo.svg
new file mode 100644
index 0000000..0cb901d
--- /dev/null
+++ b/docs/images/taxprofiler_logo.svg
@@ -0,0 +1,3223 @@
+
+
+
+
diff --git a/docs/usage.md b/docs/usage.md
index 4aa1d09..54ffce0 100644
--- a/docs/usage.md
+++ b/docs/usage.md
@@ -183,11 +183,11 @@ Complexity filtering can be activated via the `--perform_shortread_complexityfil
Complexity filtering is primarily a run-time optimisation step. It is not necessary for accurate taxonomic profiling, however it can speed up run-time of each tool by removing reads with low-diversity of nucleotides (e.g. with mono-nucleotide - `AAAAAAAA`, or di-nucleotide repeats `GAGAGAGAGAGAGAG`) that have a low-chance of giving an informative taxonomic ID as they can be associated with many different taxa. Removing these reads therefore saves computational time and resources.
-There are currently two options for short-read complexity filtering: [`bbduk`](https://jgi.doe.gov/data-and-tools/software-tools/bbtools/bb-tools-user-guide/bbduk-guide/) and [`prinseq++`](https://jgi.doe.gov/data-and-tools/software-tools/bbtools/bb-tools-user-guide/bbduk-guide/).
+There are currently three options for short-read complexity filtering: [`bbduk`](https://jgi.doe.gov/data-and-tools/software-tools/bbtools/bb-tools-user-guide/bbduk-guide/), [`prinseq++`](https://github.com/Adrian-Cantu/PRINSEQ-plus-plus), and [`fastp`](https://github.com/OpenGene/fastp#low-complexity-filter).
-The tools offer different algorithms and parameters for removing low complexity reads. We therefore recommend reviewing the pipeline's [parameter documentation](https://nf-co.re/taxprofiler/parameters) and the documentation of both tools (see links above) to decide on optimal methods and parameters for your dataset.
+The tools offer different algorithms and parameters for removing low complexity reads. We therefore recommend reviewing the pipeline's [parameter documentation](https://nf-co.re/taxprofiler/parameters) and the documentation of the tools (see links above) to decide on optimal methods and parameters for your dataset.
-You can optionally save the FASTQ output of the run merging with the `--save_complexityfiltered_reads`.
+You can optionally save the FASTQ output of the run merging with the `--save_complexityfiltered_reads`. If running with `fastp`, complexity filtering happens inclusively within the earlier shortread preprocessing step. Therefore there will not be an independent pipeline step for complexity filtering, and no independent FASTQ file (i.e. `--save_complexityfiltered_reads` will be ignored) - your complexity filtered reads will also be in the `fastp/` folder in the same file(s) as the preprocessed read.
#### Host Removal
diff --git a/nextflow.config b/nextflow.config
index 3f76d53..3c9a806 100644
--- a/nextflow.config
+++ b/nextflow.config
@@ -74,6 +74,7 @@ params {
shortread_complexityfilter_bbduk_mask = false
shortread_complexityfilter_prinseqplusplus_mode = 'entropy'
shortread_complexityfilter_prinseqplusplus_dustscore = 0.5
+ shortread_complexityfilter_fastp_threshold = 30
save_complexityfiltered_reads = false
// run merging
@@ -131,11 +132,11 @@ try {
// Load nf-core/taxprofiler custom profiles from different institutions.
// Warning: Uncomment only if a pipeline-specific instititutional config already exists on nf-core/configs!
-// try {
-// includeConfig "${params.custom_config_base}/pipeline/taxprofiler.config"
-// } catch (Exception e) {
-// System.err.println("WARNING: Could not load nf-core/config/taxprofiler profiles: ${params.custom_config_base}/pipeline/taxprofiler.config")
-// }
+try {
+ includeConfig "${params.custom_config_base}/pipeline/taxprofiler.config"
+} catch (Exception e) {
+ System.err.println("WARNING: Could not load nf-core/config/taxprofiler profiles: ${params.custom_config_base}/pipeline/taxprofiler.config")
+}
profiles {
@@ -187,6 +188,8 @@ profiles {
}
test { includeConfig 'conf/test.config' }
test_full { includeConfig 'conf/test_full.config' }
+ test_noprofiling { includeConfig 'conf/test_noprofiling.config' }
+ test_nopreprocessing { includeConfig 'conf/test_preprocessing.config' }
}
// Load igenomes.config if required
@@ -225,7 +228,7 @@ trace {
}
dag {
enabled = true
- file = "${params.tracedir}/pipeline_dag_${trace_timestamp}.svg"
+ file = "${params.tracedir}/pipeline_dag_${trace_timestamp}.html"
}
manifest {
diff --git a/nextflow_schema.json b/nextflow_schema.json
index bb4b759..e7b495d 100644
--- a/nextflow_schema.json
+++ b/nextflow_schema.json
@@ -323,7 +323,8 @@
},
"shortread_complexityfilter_tool": {
"type": "string",
- "default": "bbduk"
+ "default": "bbduk",
+ "enum": ["bbduk", "prinseqplusplus", "fastp"]
},
"shortread_complexityfilter_bbduk_windowsize": {
"type": "integer",
@@ -427,6 +428,10 @@
"type": "string",
"default": "None"
},
+ "shortread_complexityfilter_fastp_threshold": {
+ "type": "integer",
+ "default": 30
+ },
"malt_save_reads": {
"type": "boolean"
},
diff --git a/subworkflows/local/shortread_complexityfiltering.nf b/subworkflows/local/shortread_complexityfiltering.nf
index 12686d7..a34440d 100644
--- a/subworkflows/local/shortread_complexityfiltering.nf
+++ b/subworkflows/local/shortread_complexityfiltering.nf
@@ -13,6 +13,7 @@ workflow SHORTREAD_COMPLEXITYFILTERING {
ch_versions = Channel.empty()
ch_multiqc_files = Channel.empty()
+ // fastp complexity filtering is activated via modules.conf in shortread_preprocessing
if ( params.shortread_complexityfilter_tool == 'bbduk' ) {
ch_filtered_reads = BBMAP_BBDUK ( reads, [] ).reads
ch_versions = ch_versions.mix( BBMAP_BBDUK.out.versions.first() )
diff --git a/workflows/taxprofiler.nf b/workflows/taxprofiler.nf
index c319296..37224e3 100644
--- a/workflows/taxprofiler.nf
+++ b/workflows/taxprofiler.nf
@@ -19,9 +19,12 @@ for (param in checkPathParamList) { if (param) { file(param, checkIfExists: true
// Check mandatory parameters
if (params.input ) { ch_input = file(params.input) } else { exit 1, 'Input samplesheet not specified!' }
if (params.databases) { ch_databases = file(params.databases) } else { exit 1, 'Input database sheet not specified!' }
+
if (params.shortread_clipmerge_mergepairs && params.run_malt ) log.warn "[nf-core/taxprofiler] MALT does not accept uncollapsed paired-reads. Pairs will be profiled as separate files."
if (params.shortread_clipmerge_excludeunmerged && !params.shortread_clipmerge_mergepairs) exit 1, "ERROR: [nf-core/taxprofiler] cannot include unmerged reads when merging not turned on. Please specify --shortread_clipmerge_mergepairs"
+if (params.shortread_complexityfilter_tool == 'fastp' && ( params.perform_shortread_clipmerge == false || params.shortread_clipmerge_tool != 'fastp' )) exit 1, "ERROR: [nf-core/taxprofiler] cannot use fastp complexity filtering if preprocessing not turned on and/or tool is not fastp. Please specify --perform_shortread_clipmerge and/or --shortread_clipmerge_tool 'fastp'"
+
if (params.perform_shortread_hostremoval && !params.hostremoval_reference) { exit 1, "ERROR: [nf-core/taxprofiler] --shortread_hostremoval requested but no --hostremoval_reference FASTA supplied. Check input." }
if (!params.hostremoval_reference && params.hostremoval_reference_index) { exit 1, "ERROR: [nf-core/taxprofiler] --shortread_hostremoval_index provided but no --hostremoval_reference FASTA supplied. Check input." }
@@ -86,6 +89,7 @@ def multiqc_report = []
workflow TAXPROFILER {
ch_versions = Channel.empty()
+ ch_taxprofiler_logo = Channel.fromPath("$projectDir/docs/images/nf-core-taxprofiler_logo_custom_light.png")
/*
SUBWORKFLOW: Read in samplesheet, validate and stage input files
@@ -133,7 +137,8 @@ workflow TAXPROFILER {
SUBWORKFLOW: COMPLEXITY FILTERING
*/
- if ( params.perform_shortread_complexityfilter ) {
+ // fastp complexity filtering is activated via modules.conf in shortread_preprocessing
+ if ( params.perform_shortread_complexityfilter && params.shortread_complexityfilter_tool != 'fastp' ) {
ch_shortreads_filtered = SHORTREAD_COMPLEXITYFILTERING ( ch_shortreads_preprocessed ).reads
ch_versions = ch_versions.mix( SHORTREAD_COMPLEXITYFILTERING.out.versions )
} else {
@@ -222,6 +227,8 @@ workflow TAXPROFILER {
ch_multiqc_files = ch_multiqc_files.mix(CUSTOM_DUMPSOFTWAREVERSIONS.out.mqc_yml.collect())
ch_multiqc_files = ch_multiqc_files.mix(FASTQC.out.zip.collect{it[1]}.ifEmpty([]))
+ ch_multiqc_files = ch_multiqc_files.mix(ch_taxprofiler_logo.ifEmpty([]))
+
if (params.perform_shortread_clipmerge) {
ch_multiqc_files = ch_multiqc_files.mix( SHORTREAD_PREPROCESSING.out.mqc.collect{it[1]}.ifEmpty([]) )
}
@@ -230,7 +237,7 @@ workflow TAXPROFILER {
ch_multiqc_files = ch_multiqc_files.mix( LONGREAD_PREPROCESSING.out.mqc.collect{it[1]}.ifEmpty([]) )
}
- if (params.perform_shortread_complexityfilter){
+ if (params.perform_shortread_complexityfilter && params.shortread_complexityfilter_tool != 'fastp'){
ch_multiqc_files = ch_multiqc_files.mix( SHORTREAD_COMPLEXITYFILTERING.out.mqc.collect{it[1]}.ifEmpty([]) )
}