mirror of
https://github.com/MillironX/taxprofiler.git
synced 2024-11-22 14:09:54 +00:00
Merge pull request #138 from nf-core/nf-core-template-merge-2.6
Important! Template update for nf-core/tools v2.6
This commit is contained in:
commit
ff1670169a
104 changed files with 552 additions and 259 deletions
4
.github/workflows/awsfulltest.yml
vendored
4
.github/workflows/awsfulltest.yml
vendored
|
@ -28,3 +28,7 @@ jobs:
|
||||||
"outdir": "s3://${{ secrets.AWS_S3_BUCKET }}/taxprofiler/results-${{ github.sha }}"
|
"outdir": "s3://${{ secrets.AWS_S3_BUCKET }}/taxprofiler/results-${{ github.sha }}"
|
||||||
}
|
}
|
||||||
profiles: test_full,aws_tower
|
profiles: test_full,aws_tower
|
||||||
|
- uses: actions/upload-artifact@v3
|
||||||
|
with:
|
||||||
|
name: Tower debug log file
|
||||||
|
path: tower_action_*.log
|
||||||
|
|
4
.github/workflows/awstest.yml
vendored
4
.github/workflows/awstest.yml
vendored
|
@ -23,3 +23,7 @@ jobs:
|
||||||
"outdir": "s3://${{ secrets.AWS_S3_BUCKET }}/taxprofiler/results-test-${{ github.sha }}"
|
"outdir": "s3://${{ secrets.AWS_S3_BUCKET }}/taxprofiler/results-test-${{ github.sha }}"
|
||||||
}
|
}
|
||||||
profiles: test,aws_tower
|
profiles: test,aws_tower
|
||||||
|
- uses: actions/upload-artifact@v3
|
||||||
|
with:
|
||||||
|
name: Tower debug log file
|
||||||
|
path: tower_action_*.log
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
email_template.html
|
email_template.html
|
||||||
|
adaptivecard.json
|
||||||
.nextflow*
|
.nextflow*
|
||||||
work/
|
work/
|
||||||
data/
|
data/
|
||||||
|
|
|
@ -13,8 +13,8 @@ authors:
|
||||||
given-names: Johannes
|
given-names: Johannes
|
||||||
- family-names: Wilm
|
- family-names: Wilm
|
||||||
given-names: Andreas
|
given-names: Andreas
|
||||||
- family-names: Ulysse Garcia
|
- family-names: Garcia
|
||||||
given-names: Maxime
|
given-names: Maxime Ulysse
|
||||||
- family-names: Di Tommaso
|
- family-names: Di Tommaso
|
||||||
given-names: Paolo
|
given-names: Paolo
|
||||||
- family-names: Nahnsen
|
- family-names: Nahnsen
|
||||||
|
@ -39,8 +39,8 @@ prefered-citation:
|
||||||
given-names: Johannes
|
given-names: Johannes
|
||||||
- family-names: Wilm
|
- family-names: Wilm
|
||||||
given-names: Andreas
|
given-names: Andreas
|
||||||
- family-names: Ulysse Garcia
|
- family-names: Garcia
|
||||||
given-names: Maxime
|
given-names: Maxime Ulysse
|
||||||
- family-names: Di Tommaso
|
- family-names: Di Tommaso
|
||||||
given-names: Paolo
|
given-names: Paolo
|
||||||
- family-names: Nahnsen
|
- family-names: Nahnsen
|
||||||
|
|
67
assets/adaptivecard.json
Normal file
67
assets/adaptivecard.json
Normal file
|
@ -0,0 +1,67 @@
|
||||||
|
{
|
||||||
|
"type": "message",
|
||||||
|
"attachments": [
|
||||||
|
{
|
||||||
|
"contentType": "application/vnd.microsoft.card.adaptive",
|
||||||
|
"contentUrl": null,
|
||||||
|
"content": {
|
||||||
|
"\$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
|
||||||
|
"msteams": {
|
||||||
|
"width": "Full"
|
||||||
|
},
|
||||||
|
"type": "AdaptiveCard",
|
||||||
|
"version": "1.2",
|
||||||
|
"body": [
|
||||||
|
{
|
||||||
|
"type": "TextBlock",
|
||||||
|
"size": "Large",
|
||||||
|
"weight": "Bolder",
|
||||||
|
"color": "<% if (success) { %>Good<% } else { %>Attention<%} %>",
|
||||||
|
"text": "nf-core/taxprofiler v${version} - ${runName}",
|
||||||
|
"wrap": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "TextBlock",
|
||||||
|
"spacing": "None",
|
||||||
|
"text": "Completed at ${dateComplete} (duration: ${duration})",
|
||||||
|
"isSubtle": true,
|
||||||
|
"wrap": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "TextBlock",
|
||||||
|
"text": "<% if (success) { %>Pipeline completed successfully!<% } else { %>Pipeline completed with errors. The full error message was: ${errorReport}.<% } %>",
|
||||||
|
"wrap": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "TextBlock",
|
||||||
|
"text": "The command used to launch the workflow was as follows:",
|
||||||
|
"wrap": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "TextBlock",
|
||||||
|
"text": "${commandLine}",
|
||||||
|
"isSubtle": true,
|
||||||
|
"wrap": true
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"actions": [
|
||||||
|
{
|
||||||
|
"type": "Action.ShowCard",
|
||||||
|
"title": "Pipeline Configuration",
|
||||||
|
"card": {
|
||||||
|
"type": "AdaptiveCard",
|
||||||
|
"\$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
|
||||||
|
"body": [
|
||||||
|
{
|
||||||
|
"type": "FactSet",
|
||||||
|
"facts": [<% out << summary.collect{ k,v -> "{\"title\": \"$k\", \"value\" : \"$v\"}"}.join(",\n") %>
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
25
assets/methods_description_template.yml
Normal file
25
assets/methods_description_template.yml
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
id: "nf-core-taxprofiler-methods-description"
|
||||||
|
description: "Suggested text and references to use when describing pipeline usage within the methods section of a publication."
|
||||||
|
section_name: "nf-core/taxprofiler Methods Description"
|
||||||
|
section_href: "https://github.com/nf-core/taxprofiler"
|
||||||
|
plot_type: "html"
|
||||||
|
## TODO nf-core: Update the HTML below to your prefered methods description, e.g. add publication citation for this pipeline
|
||||||
|
## You inject any metadata in the Nextflow '${workflow}' object
|
||||||
|
data: |
|
||||||
|
<h4>Methods</h4>
|
||||||
|
<p>Data was processed using nf-core/taxprofiler v${workflow.manifest.version} ${doi_text} of the nf-core collection of workflows (<a href="https://doi.org/10.1038/s41587-020-0439-x">Ewels <em>et al.</em>, 2020</a>).</p>
|
||||||
|
<p>The pipeline was executed with Nextflow v${workflow.nextflow.version} (<a href="https://doi.org/10.1038/nbt.3820">Di Tommaso <em>et al.</em>, 2017</a>) with the following command:</p>
|
||||||
|
<pre><code>${workflow.commandLine}</code></pre>
|
||||||
|
<h4>References</h4>
|
||||||
|
<ul>
|
||||||
|
<li>Di Tommaso, P., Chatzou, M., Floden, E. W., Barja, P. P., Palumbo, E., & Notredame, C. (2017). Nextflow enables reproducible computational workflows. Nature Biotechnology, 35(4), 316-319. <a href="https://doi.org/10.1038/nbt.3820">https://doi.org/10.1038/nbt.3820</a></li>
|
||||||
|
<li>Ewels, P. A., Peltzer, A., Fillinger, S., Patel, H., Alneberg, J., Wilm, A., Garcia, M. U., Di Tommaso, P., & Nahnsen, S. (2020). The nf-core framework for community-curated bioinformatics pipelines. Nature Biotechnology, 38(3), 276-278. <a href="https://doi.org/10.1038/s41587-020-0439-x">https://doi.org/10.1038/s41587-020-0439-x</a></li>
|
||||||
|
</ul>
|
||||||
|
<div class="alert alert-info">
|
||||||
|
<h5>Notes:</h5>
|
||||||
|
<ul>
|
||||||
|
${nodoi_text}
|
||||||
|
<li>The command above does not include parameters contained in any configs or profiles that may have been used. Ensure the config file is also uploaded with your publication!</li>
|
||||||
|
<li>You should also cite all software used within this run. Check the "Software Versions" of this report to get version information.</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
|
@ -3,10 +3,12 @@ report_comment: >
|
||||||
analysis pipeline. For information about how to interpret these results, please see the
|
analysis pipeline. For information about how to interpret these results, please see the
|
||||||
<a href="https://nf-co.re/taxprofiler" target="_blank">documentation</a>.
|
<a href="https://nf-co.re/taxprofiler" target="_blank">documentation</a>.
|
||||||
report_section_order:
|
report_section_order:
|
||||||
software_versions:
|
"nf-core-taxprofiler-methods-description":
|
||||||
order: -1000
|
order: -1000
|
||||||
"nf-core-taxprofiler-summary":
|
software_versions:
|
||||||
order: -1001
|
order: -1001
|
||||||
|
"nf-core-taxprofiler-summary":
|
||||||
|
order: -1002
|
||||||
|
|
||||||
export_plots: true
|
export_plots: true
|
||||||
|
|
||||||
|
|
|
@ -400,6 +400,14 @@ See the main [Nextflow documentation](https://www.nextflow.io/docs/latest/config
|
||||||
|
|
||||||
If you have any questions or issues please send us a message on [Slack](https://nf-co.re/join/slack) on the [`#configs` channel](https://nfcore.slack.com/channels/configs).
|
If you have any questions or issues please send us a message on [Slack](https://nf-co.re/join/slack) on the [`#configs` channel](https://nfcore.slack.com/channels/configs).
|
||||||
|
|
||||||
|
## Azure Resource Requests
|
||||||
|
|
||||||
|
To be used with the `azurebatch` profile by specifying the `-profile azurebatch`.
|
||||||
|
We recommend providing a compute `params.vm_type` of `Standard_D16_v3` VMs by default but these options can be changed if required.
|
||||||
|
|
||||||
|
Note that the choice of VM size depends on your quota and the overall workload during the analysis.
|
||||||
|
For a thorough list, please refer the [Azure Sizes for virtual machines in Azure](https://docs.microsoft.com/en-us/azure/virtual-machines/sizes).
|
||||||
|
|
||||||
## Running in the background
|
## Running in the background
|
||||||
|
|
||||||
Nextflow handles job submissions and supervises the running jobs. The Nextflow process must run until the pipeline is finished.
|
Nextflow handles job submissions and supervises the running jobs. The Nextflow process must run until the pipeline is finished.
|
||||||
|
|
|
@ -145,6 +145,61 @@ class NfcoreTemplate {
|
||||||
output_tf.withWriter { w -> w << email_txt }
|
output_tf.withWriter { w -> w << email_txt }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Construct and send adaptive card
|
||||||
|
// https://adaptivecards.io
|
||||||
|
//
|
||||||
|
public static void adaptivecard(workflow, params, summary_params, projectDir, log) {
|
||||||
|
def hook_url = params.hook_url
|
||||||
|
|
||||||
|
def summary = [:]
|
||||||
|
for (group in summary_params.keySet()) {
|
||||||
|
summary << summary_params[group]
|
||||||
|
}
|
||||||
|
|
||||||
|
def misc_fields = [:]
|
||||||
|
misc_fields['start'] = workflow.start
|
||||||
|
misc_fields['complete'] = workflow.complete
|
||||||
|
misc_fields['scriptfile'] = workflow.scriptFile
|
||||||
|
misc_fields['scriptid'] = workflow.scriptId
|
||||||
|
if (workflow.repository) misc_fields['repository'] = workflow.repository
|
||||||
|
if (workflow.commitId) misc_fields['commitid'] = workflow.commitId
|
||||||
|
if (workflow.revision) misc_fields['revision'] = workflow.revision
|
||||||
|
misc_fields['nxf_version'] = workflow.nextflow.version
|
||||||
|
misc_fields['nxf_build'] = workflow.nextflow.build
|
||||||
|
misc_fields['nxf_timestamp'] = workflow.nextflow.timestamp
|
||||||
|
|
||||||
|
def msg_fields = [:]
|
||||||
|
msg_fields['version'] = workflow.manifest.version
|
||||||
|
msg_fields['runName'] = workflow.runName
|
||||||
|
msg_fields['success'] = workflow.success
|
||||||
|
msg_fields['dateComplete'] = workflow.complete
|
||||||
|
msg_fields['duration'] = workflow.duration
|
||||||
|
msg_fields['exitStatus'] = workflow.exitStatus
|
||||||
|
msg_fields['errorMessage'] = (workflow.errorMessage ?: 'None')
|
||||||
|
msg_fields['errorReport'] = (workflow.errorReport ?: 'None')
|
||||||
|
msg_fields['commandLine'] = workflow.commandLine
|
||||||
|
msg_fields['projectDir'] = workflow.projectDir
|
||||||
|
msg_fields['summary'] = summary << misc_fields
|
||||||
|
|
||||||
|
// Render the JSON template
|
||||||
|
def engine = new groovy.text.GStringTemplateEngine()
|
||||||
|
def hf = new File("$projectDir/assets/adaptivecard.json")
|
||||||
|
def json_template = engine.createTemplate(hf).make(msg_fields)
|
||||||
|
def json_message = json_template.toString()
|
||||||
|
|
||||||
|
// POST
|
||||||
|
def post = new URL(hook_url).openConnection();
|
||||||
|
post.setRequestMethod("POST")
|
||||||
|
post.setDoOutput(true)
|
||||||
|
post.setRequestProperty("Content-Type", "application/json")
|
||||||
|
post.getOutputStream().write(json_message.getBytes("UTF-8"));
|
||||||
|
def postRC = post.getResponseCode();
|
||||||
|
if (! postRC.equals(200)) {
|
||||||
|
log.warn(post.getErrorStream().getText());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// Print pipeline summary on completion
|
// Print pipeline summary on completion
|
||||||
//
|
//
|
||||||
|
|
21
lib/Utils.groovy
Executable file → Normal file
21
lib/Utils.groovy
Executable file → Normal file
|
@ -21,19 +21,26 @@ class Utils {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check that all channels are present
|
// Check that all channels are present
|
||||||
def required_channels = ['conda-forge', 'bioconda', 'defaults']
|
// This channel list is ordered by required channel priority.
|
||||||
def conda_check_failed = !required_channels.every { ch -> ch in channels }
|
def required_channels_in_order = ['conda-forge', 'bioconda', 'defaults']
|
||||||
|
def channels_missing = ((required_channels_in_order as Set) - (channels as Set)) as Boolean
|
||||||
|
|
||||||
// Check that they are in the right order
|
// Check that they are in the right order
|
||||||
conda_check_failed |= !(channels.indexOf('conda-forge') < channels.indexOf('bioconda'))
|
def channel_priority_violation = false
|
||||||
conda_check_failed |= !(channels.indexOf('bioconda') < channels.indexOf('defaults'))
|
def n = required_channels_in_order.size()
|
||||||
|
for (int i = 0; i < n - 1; i++) {
|
||||||
|
channel_priority_violation |= !(channels.indexOf(required_channels_in_order[i]) < channels.indexOf(required_channels_in_order[i+1]))
|
||||||
|
}
|
||||||
|
|
||||||
if (conda_check_failed) {
|
if (channels_missing | channel_priority_violation) {
|
||||||
log.warn "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" +
|
log.warn "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" +
|
||||||
" There is a problem with your Conda configuration!\n\n" +
|
" There is a problem with your Conda configuration!\n\n" +
|
||||||
" You will need to set-up the conda-forge and bioconda channels correctly.\n" +
|
" You will need to set-up the conda-forge and bioconda channels correctly.\n" +
|
||||||
" Please refer to https://bioconda.github.io/user/install.html#set-up-channels\n" +
|
" Please refer to https://bioconda.github.io/\n" +
|
||||||
" NB: The order of the channels matters!\n" +
|
" The observed channel order is \n" +
|
||||||
|
" ${channels}\n" +
|
||||||
|
" but the following channel order is required:\n" +
|
||||||
|
" ${required_channels_in_order}\n" +
|
||||||
"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
|
"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,6 +2,8 @@
|
||||||
// This file holds several functions specific to the workflow/taxprofiler.nf in the nf-core/taxprofiler pipeline
|
// This file holds several functions specific to the workflow/taxprofiler.nf in the nf-core/taxprofiler pipeline
|
||||||
//
|
//
|
||||||
|
|
||||||
|
import groovy.text.SimpleTemplateEngine
|
||||||
|
|
||||||
class WorkflowTaxprofiler {
|
class WorkflowTaxprofiler {
|
||||||
|
|
||||||
//
|
//
|
||||||
|
@ -42,6 +44,23 @@ class WorkflowTaxprofiler {
|
||||||
yaml_file_text += "data: |\n"
|
yaml_file_text += "data: |\n"
|
||||||
yaml_file_text += "${summary_section}"
|
yaml_file_text += "${summary_section}"
|
||||||
return yaml_file_text
|
return yaml_file_text
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String methodsDescriptionText(run_workflow, mqc_methods_yaml) {
|
||||||
|
// Convert to a named map so can be used as with familar NXF ${workflow} variable syntax in the MultiQC YML file
|
||||||
|
def meta = [:]
|
||||||
|
meta.workflow = run_workflow.toMap()
|
||||||
|
meta["manifest_map"] = run_workflow.manifest.toMap()
|
||||||
|
|
||||||
|
meta["doi_text"] = meta.manifest_map.doi ? "(doi: <a href=\'https://doi.org/${meta.manifest_map.doi}\'>${meta.manifest_map.doi}</a>)" : ""
|
||||||
|
meta["nodoi_text"] = meta.manifest_map.doi ? "": "<li>If available, make sure to update the text to include the Zenodo DOI of version of the pipeline used. </li>"
|
||||||
|
|
||||||
|
def methods_text = mqc_methods_yaml.text
|
||||||
|
|
||||||
|
def engine = new SimpleTemplateEngine()
|
||||||
|
def description_html = engine.createTemplate(methods_text).make(meta)
|
||||||
|
|
||||||
|
return description_html
|
||||||
}//
|
}//
|
||||||
// Exit pipeline if incorrect --genome key provided
|
// Exit pipeline if incorrect --genome key provided
|
||||||
//
|
//
|
||||||
|
|
3
main.nf
3
main.nf
|
@ -4,7 +4,8 @@
|
||||||
nf-core/taxprofiler
|
nf-core/taxprofiler
|
||||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
Github : https://github.com/nf-core/taxprofiler
|
Github : https://github.com/nf-core/taxprofiler
|
||||||
Website: https://nf-co.re/taxprofiler
|
|
||||||
|
Website: https://nf-co.re/taxprofiler
|
||||||
Slack : https://nfcore.slack.com/channels/taxprofiler
|
Slack : https://nfcore.slack.com/channels/taxprofiler
|
||||||
----------------------------------------------------------------------------------------
|
----------------------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
|
|
300
modules.json
300
modules.json
|
@ -2,156 +2,158 @@
|
||||||
"name": "nf-core/taxprofiler",
|
"name": "nf-core/taxprofiler",
|
||||||
"homePage": "https://github.com/nf-core/taxprofiler",
|
"homePage": "https://github.com/nf-core/taxprofiler",
|
||||||
"repos": {
|
"repos": {
|
||||||
"nf-core/modules": {
|
"https://github.com/nf-core/modules.git": {
|
||||||
"git_url": "https://github.com/nf-core/modules.git",
|
|
||||||
"modules": {
|
"modules": {
|
||||||
"adapterremoval": {
|
"nf-core": {
|
||||||
"branch": "master",
|
"adapterremoval": {
|
||||||
"git_sha": "879d42c5e28661fe0a5e744c9e2c515868f9e08a"
|
"branch": "master",
|
||||||
},
|
"git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905"
|
||||||
"bbmap/bbduk": {
|
},
|
||||||
"branch": "master",
|
"bbmap/bbduk": {
|
||||||
"git_sha": "848ee9a215d02d80be033bfa60881700f2bd914c"
|
"branch": "master",
|
||||||
},
|
"git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905"
|
||||||
"bowtie2/align": {
|
},
|
||||||
"branch": "master",
|
"bowtie2/align": {
|
||||||
"git_sha": "848ee9a215d02d80be033bfa60881700f2bd914c"
|
"branch": "master",
|
||||||
},
|
"git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905"
|
||||||
"bowtie2/build": {
|
},
|
||||||
"branch": "master",
|
"bowtie2/build": {
|
||||||
"git_sha": "e745e167c1020928ef20ea1397b6b4d230681b4d"
|
"branch": "master",
|
||||||
},
|
"git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905"
|
||||||
"cat/fastq": {
|
},
|
||||||
"branch": "master",
|
"cat/fastq": {
|
||||||
"git_sha": "b034029b59b1198075da8019074bc02051a6100e"
|
"branch": "master",
|
||||||
},
|
"git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905"
|
||||||
"centrifuge/centrifuge": {
|
},
|
||||||
"branch": "master",
|
"centrifuge/centrifuge": {
|
||||||
"git_sha": "d2726fcf75063960f06b36d2229a4c0966614108"
|
"branch": "master",
|
||||||
},
|
"git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905"
|
||||||
"centrifuge/kreport": {
|
},
|
||||||
"branch": "master",
|
"centrifuge/kreport": {
|
||||||
"git_sha": "734d0db6079a4aa43b6509b207e5d6feb35d4838"
|
"branch": "master",
|
||||||
},
|
"git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905"
|
||||||
"custom/dumpsoftwareversions": {
|
},
|
||||||
"branch": "master",
|
"custom/dumpsoftwareversions": {
|
||||||
"git_sha": "5e7b1ef9a5a2d9258635bcbf70fcf37dacd1b247"
|
"branch": "master",
|
||||||
},
|
"git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905"
|
||||||
"diamond/blastx": {
|
},
|
||||||
"branch": "master",
|
"diamond/blastx": {
|
||||||
"git_sha": "3531824af826c16cd252bc5aa82ae169b244ebaa"
|
"branch": "master",
|
||||||
},
|
"git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905"
|
||||||
"eido/convert": {
|
},
|
||||||
"branch": "master",
|
"eido/convert": {
|
||||||
"git_sha": "9764eef361ded86e9242075bda64c2662421386a"
|
"branch": "master",
|
||||||
},
|
"git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905"
|
||||||
"eido/validate": {
|
},
|
||||||
"branch": "master",
|
"eido/validate": {
|
||||||
"git_sha": "38383cfaefc06cd35e25de99989a3e6ab9ed2980"
|
"branch": "master",
|
||||||
},
|
"git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905"
|
||||||
"fastp": {
|
},
|
||||||
"branch": "master",
|
"fastp": {
|
||||||
"git_sha": "2c70c1c1951aaf884d2e8d8d9c871db79f7b35aa"
|
"branch": "master",
|
||||||
},
|
"git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905"
|
||||||
"fastqc": {
|
},
|
||||||
"branch": "master",
|
"fastqc": {
|
||||||
"git_sha": "49b18b1639f4f7104187058866a8fab33332bdfe"
|
"branch": "master",
|
||||||
},
|
"git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905"
|
||||||
"filtlong": {
|
},
|
||||||
"branch": "master",
|
"filtlong": {
|
||||||
"git_sha": "957cb9b83668075f4af101fc99502908cca487e3"
|
"branch": "master",
|
||||||
},
|
"git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905"
|
||||||
"gunzip": {
|
},
|
||||||
"branch": "master",
|
"gunzip": {
|
||||||
"git_sha": "fa37e0662690c4ec4260dae282fbce08777503e6"
|
"branch": "master",
|
||||||
},
|
"git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905"
|
||||||
"kaiju/kaiju": {
|
},
|
||||||
"branch": "master",
|
"kaiju/kaiju": {
|
||||||
"git_sha": "8856f127c58f6af479128be8b8df4d42e442ddbe"
|
"branch": "master",
|
||||||
},
|
"git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905"
|
||||||
"kaiju/kaiju2krona": {
|
},
|
||||||
"branch": "master",
|
"kaiju/kaiju2krona": {
|
||||||
"git_sha": "2f0b19240430de6807b1232e6d9d0e8084e8a28f"
|
"branch": "master",
|
||||||
},
|
"git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905"
|
||||||
"kaiju/kaiju2table": {
|
},
|
||||||
"branch": "master",
|
"kaiju/kaiju2table": {
|
||||||
"git_sha": "538dbac98ba9c8f799536cd5a617195501439457"
|
"branch": "master",
|
||||||
},
|
"git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905"
|
||||||
"kraken2/kraken2": {
|
},
|
||||||
"branch": "master",
|
"kraken2/kraken2": {
|
||||||
"git_sha": "409a308ba46284d8ebb48c2c1befd6f6433db3f7"
|
"branch": "master",
|
||||||
},
|
"git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905"
|
||||||
"krakentools/combinekreports": {
|
},
|
||||||
"branch": "master",
|
"krakentools/combinekreports": {
|
||||||
"git_sha": "ee0346b4d14ffdc15ce7e093ca1363cd07c9bd78"
|
"branch": "master",
|
||||||
},
|
"git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905"
|
||||||
"krakentools/kreport2krona": {
|
},
|
||||||
"branch": "master",
|
"krakentools/kreport2krona": {
|
||||||
"git_sha": "233fa70811a03a4cecb2ece483b5c8396e2cee1d"
|
"branch": "master",
|
||||||
},
|
"git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905"
|
||||||
"krona/ktimporttaxonomy": {
|
},
|
||||||
"branch": "master",
|
"krona/ktimporttaxonomy": {
|
||||||
"git_sha": "0e9fd9370ad1845870b8a9c63fcc47d999a1739e"
|
"branch": "master",
|
||||||
},
|
"git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905"
|
||||||
"krona/ktimporttext": {
|
},
|
||||||
"branch": "master",
|
"krona/ktimporttext": {
|
||||||
"git_sha": "cdefbec66999c0b49d8bfeea9d6f9d19056635a2"
|
"branch": "master",
|
||||||
},
|
"git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905"
|
||||||
"malt/run": {
|
},
|
||||||
"branch": "master",
|
"malt/run": {
|
||||||
"git_sha": "be8d7b3293cac26cc63e4dbfb364deb8ed6ec7e5"
|
"branch": "master",
|
||||||
},
|
"git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905"
|
||||||
"megan/rma2info": {
|
},
|
||||||
"branch": "master",
|
"megan/rma2info": {
|
||||||
"git_sha": "2d38566eca4cc15142b2ffa7c11837569b39aece"
|
"branch": "master",
|
||||||
},
|
"git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905"
|
||||||
"metaphlan3/mergemetaphlantables": {
|
},
|
||||||
"branch": "master",
|
"metaphlan3/mergemetaphlantables": {
|
||||||
"git_sha": "36bcd675ae76a379a38165898a203f4915823f4f"
|
"branch": "master",
|
||||||
},
|
"git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905"
|
||||||
"metaphlan3/metaphlan3": {
|
},
|
||||||
"branch": "master",
|
"metaphlan3/metaphlan3": {
|
||||||
"git_sha": "978087354eb72ac1f6e18a3f790fad9bc4d05840"
|
"branch": "master",
|
||||||
},
|
"git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905"
|
||||||
"minimap2/align": {
|
},
|
||||||
"branch": "master",
|
"minimap2/align": {
|
||||||
"git_sha": "1a5a9e7b4009dcf34e6867dd1a5a1d9a718b027b"
|
"branch": "master",
|
||||||
},
|
"git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905"
|
||||||
"minimap2/index": {
|
},
|
||||||
"branch": "master",
|
"minimap2/index": {
|
||||||
"git_sha": "e745e167c1020928ef20ea1397b6b4d230681b4d"
|
"branch": "master",
|
||||||
},
|
"git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905",
|
||||||
"motus/merge": {
|
"patch": "modules/nf-core/minimap2/index/minimap2-index.diff"
|
||||||
"branch": "master",
|
},
|
||||||
"git_sha": "54ff289487244bf15543ecfa62bd4df49be72b73"
|
"motus/merge": {
|
||||||
},
|
"branch": "master",
|
||||||
"motus/profile": {
|
"git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905"
|
||||||
"branch": "master",
|
},
|
||||||
"git_sha": "b6ed584443ad68ac41e6975994139454a4f23c18"
|
"motus/profile": {
|
||||||
},
|
"branch": "master",
|
||||||
"multiqc": {
|
"git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905"
|
||||||
"branch": "master",
|
},
|
||||||
"git_sha": "16eee433b87b303bda650131ac5a0b1ad725e166"
|
"multiqc": {
|
||||||
},
|
"branch": "master",
|
||||||
"porechop": {
|
"git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905"
|
||||||
"branch": "master",
|
},
|
||||||
"git_sha": "b78e19b9dae3671db2c7d4346fe04452c1debfab"
|
"porechop": {
|
||||||
},
|
"branch": "master",
|
||||||
"prinseqplusplus": {
|
"git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905"
|
||||||
"branch": "master",
|
},
|
||||||
"git_sha": "f1c5384c31e985591716afdd732cf8c2ae29d05b"
|
"prinseqplusplus": {
|
||||||
},
|
"branch": "master",
|
||||||
"samtools/bam2fq": {
|
"git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905"
|
||||||
"branch": "master",
|
},
|
||||||
"git_sha": "5510ea39fe638594bc26ac34cadf4a84bf27d159"
|
"samtools/bam2fq": {
|
||||||
},
|
"branch": "master",
|
||||||
"samtools/view": {
|
"git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905"
|
||||||
"branch": "master",
|
},
|
||||||
"git_sha": "5e7b1ef9a5a2d9258635bcbf70fcf37dacd1b247"
|
"samtools/view": {
|
||||||
},
|
"branch": "master",
|
||||||
"untar": {
|
"git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905"
|
||||||
"branch": "master",
|
},
|
||||||
"git_sha": "393dbd6ddafe3f18eac02893dd4a21e4d45de679"
|
"untar": {
|
||||||
|
"branch": "master",
|
||||||
|
"git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
process CAT_FASTQ {
|
process CAT_FASTQ {
|
||||||
tag "$meta.id"
|
tag "$meta.id"
|
||||||
label 'process_low'
|
label 'process_single'
|
||||||
|
|
||||||
conda (params.enable_conda ? "conda-forge::sed=4.7" : null)
|
conda (params.enable_conda ? "conda-forge::sed=4.7" : null)
|
||||||
container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ?
|
container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ?
|
||||||
|
@ -20,9 +20,9 @@ process CAT_FASTQ {
|
||||||
script:
|
script:
|
||||||
def args = task.ext.args ?: ''
|
def args = task.ext.args ?: ''
|
||||||
def prefix = task.ext.prefix ?: "${meta.id}"
|
def prefix = task.ext.prefix ?: "${meta.id}"
|
||||||
def readList = reads.collect{ it.toString() }
|
def readList = reads instanceof List ? reads.collect{ it.toString() } : [reads.toString()]
|
||||||
if (meta.single_end) {
|
if (meta.single_end) {
|
||||||
if (readList.size > 1) {
|
if (readList.size >= 1) {
|
||||||
"""
|
"""
|
||||||
cat ${readList.join(' ')} > ${prefix}.merged.fastq.gz
|
cat ${readList.join(' ')} > ${prefix}.merged.fastq.gz
|
||||||
|
|
||||||
|
@ -33,7 +33,7 @@ process CAT_FASTQ {
|
||||||
"""
|
"""
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (readList.size > 2) {
|
if (readList.size >= 2) {
|
||||||
def read1 = []
|
def read1 = []
|
||||||
def read2 = []
|
def read2 = []
|
||||||
readList.eachWithIndex{ v, ix -> ( ix & 1 ? read2 : read1 ) << v }
|
readList.eachWithIndex{ v, ix -> ( ix & 1 ? read2 : read1 ) << v }
|
||||||
|
@ -51,7 +51,7 @@ process CAT_FASTQ {
|
||||||
|
|
||||||
stub:
|
stub:
|
||||||
def prefix = task.ext.prefix ?: "${meta.id}"
|
def prefix = task.ext.prefix ?: "${meta.id}"
|
||||||
def readList = reads.collect{ it.toString() }
|
def readList = reads instanceof List ? reads.collect{ it.toString() } : [reads.toString()]
|
||||||
if (meta.single_end) {
|
if (meta.single_end) {
|
||||||
if (readList.size > 1) {
|
if (readList.size > 1) {
|
||||||
"""
|
"""
|
|
@ -1,6 +1,6 @@
|
||||||
process CENTRIFUGE_KREPORT {
|
process CENTRIFUGE_KREPORT {
|
||||||
tag "$meta.id"
|
tag "$meta.id"
|
||||||
label 'process_low'
|
label 'process_single'
|
||||||
|
|
||||||
conda (params.enable_conda ? "bioconda::centrifuge=1.0.4_beta" : null)
|
conda (params.enable_conda ? "bioconda::centrifuge=1.0.4_beta" : null)
|
||||||
container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ?
|
container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ?
|
|
@ -2,10 +2,10 @@ process CUSTOM_DUMPSOFTWAREVERSIONS {
|
||||||
label 'process_single'
|
label 'process_single'
|
||||||
|
|
||||||
// Requires `pyyaml` which does not have a dedicated container but is in the MultiQC container
|
// Requires `pyyaml` which does not have a dedicated container but is in the MultiQC container
|
||||||
conda (params.enable_conda ? 'bioconda::multiqc=1.13a' : null)
|
conda (params.enable_conda ? 'bioconda::multiqc=1.13' : null)
|
||||||
container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ?
|
container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ?
|
||||||
'https://depot.galaxyproject.org/singularity/multiqc:1.13a--pyhdfd78af_1' :
|
'https://depot.galaxyproject.org/singularity/multiqc:1.13--pyhdfd78af_0' :
|
||||||
'quay.io/biocontainers/multiqc:1.13a--pyhdfd78af_1' }"
|
'quay.io/biocontainers/multiqc:1.13--pyhdfd78af_0' }"
|
||||||
|
|
||||||
input:
|
input:
|
||||||
path versions
|
path versions
|
|
@ -58,11 +58,12 @@ versions_by_module = {}
|
||||||
for process, process_versions in versions_by_process.items():
|
for process, process_versions in versions_by_process.items():
|
||||||
module = process.split(":")[-1]
|
module = process.split(":")[-1]
|
||||||
try:
|
try:
|
||||||
assert versions_by_module[module] == process_versions, (
|
if versions_by_module[module] != process_versions:
|
||||||
"We assume that software versions are the same between all modules. "
|
raise AssertionError(
|
||||||
"If you see this error-message it means you discovered an edge-case "
|
"We assume that software versions are the same between all modules. "
|
||||||
"and should open an issue in nf-core/tools. "
|
"If you see this error-message it means you discovered an edge-case "
|
||||||
)
|
"and should open an issue in nf-core/tools. "
|
||||||
|
)
|
||||||
except KeyError:
|
except KeyError:
|
||||||
versions_by_module[module] = process_versions
|
versions_by_module[module] = process_versions
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
process EIDO_CONVERT {
|
process EIDO_CONVERT {
|
||||||
tag '$samplesheet'
|
tag "$samplesheet"
|
||||||
label 'process_single'
|
label 'process_single'
|
||||||
|
|
||||||
conda (params.enable_conda ? "conda-forge::eido=0.1.9" : null)
|
conda (params.enable_conda ? "conda-forge::eido=0.1.9" : null)
|
|
@ -1,5 +1,5 @@
|
||||||
process EIDO_VALIDATE {
|
process EIDO_VALIDATE {
|
||||||
tag '$samplesheet'
|
tag "$samplesheet"
|
||||||
label 'process_single'
|
label 'process_single'
|
||||||
|
|
||||||
conda (params.enable_conda ? "conda-forge::eido=0.1.9" : null)
|
conda (params.enable_conda ? "conda-forge::eido=0.1.9" : null)
|
|
@ -1,6 +1,6 @@
|
||||||
process GUNZIP {
|
process GUNZIP {
|
||||||
tag "$archive"
|
tag "$archive"
|
||||||
label 'process_low'
|
label 'process_single'
|
||||||
|
|
||||||
conda (params.enable_conda ? "conda-forge::sed=4.7" : null)
|
conda (params.enable_conda ? "conda-forge::sed=4.7" : null)
|
||||||
container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ?
|
container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ?
|
|
@ -1,6 +1,6 @@
|
||||||
process KAIJU_KAIJU2KRONA {
|
process KAIJU_KAIJU2KRONA {
|
||||||
tag "$meta.id"
|
tag "$meta.id"
|
||||||
label 'process_low'
|
label 'process_single'
|
||||||
|
|
||||||
conda (params.enable_conda ? "bioconda::kaiju=1.8.2" : null)
|
conda (params.enable_conda ? "bioconda::kaiju=1.8.2" : null)
|
||||||
container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ?
|
container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ?
|
|
@ -1,6 +1,6 @@
|
||||||
process KAIJU_KAIJU2TABLE {
|
process KAIJU_KAIJU2TABLE {
|
||||||
tag "$meta.id"
|
tag "$meta.id"
|
||||||
label 'process_low'
|
label 'process_single'
|
||||||
|
|
||||||
conda (params.enable_conda ? "bioconda::kaiju=1.8.2" : null)
|
conda (params.enable_conda ? "bioconda::kaiju=1.8.2" : null)
|
||||||
container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ?
|
container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ?
|
|
@ -1,5 +1,5 @@
|
||||||
process KRAKENTOOLS_COMBINEKREPORTS {
|
process KRAKENTOOLS_COMBINEKREPORTS {
|
||||||
label 'process_low'
|
label 'process_single'
|
||||||
|
|
||||||
conda (params.enable_conda ? "bioconda::krakentools=1.2" : null)
|
conda (params.enable_conda ? "bioconda::krakentools=1.2" : null)
|
||||||
container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ?
|
container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ?
|
|
@ -1,6 +1,6 @@
|
||||||
process KRAKENTOOLS_KREPORT2KRONA {
|
process KRAKENTOOLS_KREPORT2KRONA {
|
||||||
tag "$meta.id"
|
tag "$meta.id"
|
||||||
label 'process_low'
|
label 'process_single'
|
||||||
|
|
||||||
// WARN: Version information not provided by tool on CLI. Please update version string below when bumping container versions.
|
// WARN: Version information not provided by tool on CLI. Please update version string below when bumping container versions.
|
||||||
conda (params.enable_conda ? "bioconda::krakentools=1.2" : null)
|
conda (params.enable_conda ? "bioconda::krakentools=1.2" : null)
|
|
@ -1,6 +1,6 @@
|
||||||
process KRONA_KTIMPORTTAXONOMY {
|
process KRONA_KTIMPORTTAXONOMY {
|
||||||
tag "${meta.id}"
|
tag "${meta.id}"
|
||||||
label 'process_high'
|
label 'process_single'
|
||||||
|
|
||||||
// WARN: Version information not provided by tool on CLI. Please update version string below when bumping container versions.
|
// WARN: Version information not provided by tool on CLI. Please update version string below when bumping container versions.
|
||||||
conda (params.enable_conda ? "bioconda::krona=2.8" : null)
|
conda (params.enable_conda ? "bioconda::krona=2.8" : null)
|
|
@ -1,6 +1,6 @@
|
||||||
process KRONA_KTIMPORTTEXT {
|
process KRONA_KTIMPORTTEXT {
|
||||||
tag "$meta.id"
|
tag "$meta.id"
|
||||||
label 'process_low'
|
label 'process_single'
|
||||||
|
|
||||||
conda (params.enable_conda ? "bioconda::krona=2.8.1" : null)
|
conda (params.enable_conda ? "bioconda::krona=2.8.1" : null)
|
||||||
container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ?
|
container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ?
|
|
@ -1,6 +1,6 @@
|
||||||
process MEGAN_RMA2INFO {
|
process MEGAN_RMA2INFO {
|
||||||
tag "$meta.id"
|
tag "$meta.id"
|
||||||
label 'process_low'
|
label 'process_single'
|
||||||
|
|
||||||
conda (params.enable_conda ? "bioconda::megan=6.21.7" : null)
|
conda (params.enable_conda ? "bioconda::megan=6.21.7" : null)
|
||||||
container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ?
|
container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ?
|
|
@ -12,11 +12,21 @@ tools:
|
||||||
documentation: https://github.com/lh3/minimap2#uguide
|
documentation: https://github.com/lh3/minimap2#uguide
|
||||||
licence: ["MIT"]
|
licence: ["MIT"]
|
||||||
input:
|
input:
|
||||||
|
- meta:
|
||||||
|
type: map
|
||||||
|
description: |
|
||||||
|
Groovy Map containing sample information
|
||||||
|
e.g. [ id:'test', single_end:false ]
|
||||||
- fasta:
|
- fasta:
|
||||||
type: file
|
type: file
|
||||||
description: |
|
description: |
|
||||||
Reference database in FASTA format.
|
Reference database in FASTA format.
|
||||||
output:
|
output:
|
||||||
|
- meta:
|
||||||
|
type: map
|
||||||
|
description: |
|
||||||
|
Groovy Map containing sample information
|
||||||
|
e.g. [ id:'test', single_end:false ]
|
||||||
- mmi:
|
- mmi:
|
||||||
type: file
|
type: file
|
||||||
description: Minimap2 fasta index.
|
description: Minimap2 fasta index.
|
20
modules/nf-core/minimap2/index/minimap2-index.diff
generated
Normal file
20
modules/nf-core/minimap2/index/minimap2-index.diff
generated
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
Changes in module 'nf-core/minimap2/index'
|
||||||
|
--- modules/nf-core/minimap2/index/main.nf
|
||||||
|
+++ modules/nf-core/minimap2/index/main.nf
|
||||||
|
@@ -7,11 +7,11 @@
|
||||||
|
'quay.io/biocontainers/minimap2:2.21--h5bf99c6_0' }"
|
||||||
|
|
||||||
|
input:
|
||||||
|
- tuple val(meta), path(fasta)
|
||||||
|
+ path fasta
|
||||||
|
|
||||||
|
output:
|
||||||
|
- tuple val(meta), path("*.mmi"), emit: index
|
||||||
|
- path "versions.yml" , emit: versions
|
||||||
|
+ path "*.mmi" , emit: index
|
||||||
|
+ path "versions.yml" , emit: versions
|
||||||
|
|
||||||
|
when:
|
||||||
|
task.ext.when == null || task.ext.when
|
||||||
|
|
||||||
|
************************************************************
|
|
@ -2,7 +2,7 @@ VERSION = '3.0.1'
|
||||||
|
|
||||||
process MOTUS_MERGE {
|
process MOTUS_MERGE {
|
||||||
tag "$meta.id"
|
tag "$meta.id"
|
||||||
label 'process_low'
|
label 'process_single'
|
||||||
|
|
||||||
conda (params.enable_conda ? "bioconda::motus=3.0.1" : null)
|
conda (params.enable_conda ? "bioconda::motus=3.0.1" : null)
|
||||||
container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ?
|
container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ?
|
|
@ -1,14 +1,15 @@
|
||||||
process MULTIQC {
|
process MULTIQC {
|
||||||
label 'process_medium'
|
label 'process_single'
|
||||||
|
|
||||||
conda (params.enable_conda ? 'bioconda::multiqc=1.13a' : null)
|
conda (params.enable_conda ? 'bioconda::multiqc=1.13' : null)
|
||||||
container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ?
|
container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ?
|
||||||
'https://depot.galaxyproject.org/singularity/multiqc:1.13a--pyhdfd78af_1' :
|
'https://depot.galaxyproject.org/singularity/multiqc:1.13--pyhdfd78af_0' :
|
||||||
'quay.io/biocontainers/multiqc:1.13a--pyhdfd78af_1' }"
|
'quay.io/biocontainers/multiqc:1.13--pyhdfd78af_0' }"
|
||||||
|
|
||||||
input:
|
input:
|
||||||
path multiqc_files, stageAs: "?/*"
|
path multiqc_files, stageAs: "?/*"
|
||||||
path(multiqc_config)
|
path(multiqc_config)
|
||||||
|
path(extra_multiqc_config)
|
||||||
path(multiqc_logo)
|
path(multiqc_logo)
|
||||||
|
|
||||||
output:
|
output:
|
||||||
|
@ -23,11 +24,13 @@ process MULTIQC {
|
||||||
script:
|
script:
|
||||||
def args = task.ext.args ?: ''
|
def args = task.ext.args ?: ''
|
||||||
def config = multiqc_config ? "--config $multiqc_config" : ''
|
def config = multiqc_config ? "--config $multiqc_config" : ''
|
||||||
|
def extra_config = extra_multiqc_config ? "--config $extra_multiqc_config" : ''
|
||||||
"""
|
"""
|
||||||
multiqc \\
|
multiqc \\
|
||||||
--force \\
|
--force \\
|
||||||
$config \\
|
|
||||||
$args \\
|
$args \\
|
||||||
|
$config \\
|
||||||
|
$extra_config \\
|
||||||
.
|
.
|
||||||
|
|
||||||
cat <<-END_VERSIONS > versions.yml
|
cat <<-END_VERSIONS > versions.yml
|
|
@ -22,6 +22,10 @@ input:
|
||||||
type: file
|
type: file
|
||||||
description: Optional config yml for MultiQC
|
description: Optional config yml for MultiQC
|
||||||
pattern: "*.{yml,yaml}"
|
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:
|
- multiqc_logo:
|
||||||
type: file
|
type: file
|
||||||
description: Optional logo file for MultiQC
|
description: Optional logo file for MultiQC
|
|
@ -10,31 +10,39 @@ process SAMTOOLS_VIEW {
|
||||||
input:
|
input:
|
||||||
tuple val(meta), path(input), path(index)
|
tuple val(meta), path(input), path(index)
|
||||||
path fasta
|
path fasta
|
||||||
|
path qname
|
||||||
|
|
||||||
output:
|
output:
|
||||||
tuple val(meta), path("*.bam") , emit: bam , optional: true
|
tuple val(meta), path("*.bam"), emit: bam, optional: true
|
||||||
tuple val(meta), path("*.cram"), emit: cram, optional: true
|
tuple val(meta), path("*.cram"), emit: cram, optional: true
|
||||||
path "versions.yml" , emit: versions
|
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
|
||||||
|
|
||||||
when:
|
when:
|
||||||
task.ext.when == null || task.ext.when
|
task.ext.when == null || task.ext.when
|
||||||
|
|
||||||
script:
|
script:
|
||||||
def args = task.ext.args ?: ''
|
def args = task.ext.args ?: ''
|
||||||
def args2 = task.ext.args2 ?: ''
|
|
||||||
def prefix = task.ext.prefix ?: "${meta.id}"
|
def prefix = task.ext.prefix ?: "${meta.id}"
|
||||||
def reference = fasta ? "--reference ${fasta} -C" : ""
|
def reference = fasta ? "--reference ${fasta}" : ""
|
||||||
def file_type = input.getExtension()
|
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()
|
||||||
if ("$input" == "${prefix}.${file_type}") error "Input and output names are the same, use \"task.ext.prefix\" to disambiguate!"
|
if ("$input" == "${prefix}.${file_type}") error "Input and output names are the same, use \"task.ext.prefix\" to disambiguate!"
|
||||||
"""
|
"""
|
||||||
samtools \\
|
samtools \\
|
||||||
view \\
|
view \\
|
||||||
--threads ${task.cpus-1} \\
|
--threads ${task.cpus-1} \\
|
||||||
${reference} \\
|
${reference} \\
|
||||||
|
${readnames} \\
|
||||||
$args \\
|
$args \\
|
||||||
$input \\
|
-o ${prefix}.${file_type} \\
|
||||||
$args2 \\
|
$input
|
||||||
> ${prefix}.${file_type}
|
|
||||||
|
|
||||||
cat <<-END_VERSIONS > versions.yml
|
cat <<-END_VERSIONS > versions.yml
|
||||||
"${task.process}":
|
"${task.process}":
|
|
@ -33,6 +33,10 @@ input:
|
||||||
type: optional file
|
type: optional file
|
||||||
description: Reference file the CRAM was created with
|
description: Reference file the CRAM was created with
|
||||||
pattern: "*.{fasta,fa}"
|
pattern: "*.{fasta,fa}"
|
||||||
|
- qname:
|
||||||
|
type: file
|
||||||
|
description: Optional file with read names to output only select alignments
|
||||||
|
pattern: "*.{txt,list}"
|
||||||
output:
|
output:
|
||||||
- meta:
|
- meta:
|
||||||
type: map
|
type: map
|
||||||
|
@ -41,12 +45,29 @@ output:
|
||||||
e.g. [ id:'test', single_end:false ]
|
e.g. [ id:'test', single_end:false ]
|
||||||
- bam:
|
- bam:
|
||||||
type: file
|
type: file
|
||||||
description: filtered/converted BAM/SAM file
|
description: optional filtered/converted BAM file
|
||||||
pattern: "*.{bam,sam}"
|
pattern: "*.{bam}"
|
||||||
- cram:
|
- cram:
|
||||||
type: file
|
type: file
|
||||||
description: filtered/converted CRAM file
|
description: optional filtered/converted CRAM file
|
||||||
pattern: "*.cram"
|
pattern: "*.{cram}"
|
||||||
|
- sam:
|
||||||
|
type: file
|
||||||
|
description: optional filtered/converted SAM file
|
||||||
|
pattern: "*.{sam}"
|
||||||
|
# bai, csi, and crai are created with `--write-index`
|
||||||
|
- bai:
|
||||||
|
type: file
|
||||||
|
description: optional BAM file index
|
||||||
|
pattern: "*.{bai}"
|
||||||
|
- csi:
|
||||||
|
type: file
|
||||||
|
description: optional tabix BAM file index
|
||||||
|
pattern: "*.{csi}"
|
||||||
|
- crai:
|
||||||
|
type: file
|
||||||
|
description: optional CRAM file index
|
||||||
|
pattern: "*.{crai}"
|
||||||
- versions:
|
- versions:
|
||||||
type: file
|
type: file
|
||||||
description: File containing software versions
|
description: File containing software versions
|
||||||
|
@ -55,3 +76,4 @@ authors:
|
||||||
- "@drpatelh"
|
- "@drpatelh"
|
||||||
- "@joseespinosa"
|
- "@joseespinosa"
|
||||||
- "@FriederikeHanssen"
|
- "@FriederikeHanssen"
|
||||||
|
- "@priyanka-surana"
|
|
@ -27,7 +27,7 @@ process UNTAR {
|
||||||
|
|
||||||
## Ensures --strip-components only applied when top level of tar contents is a directory
|
## Ensures --strip-components only applied when top level of tar contents is a directory
|
||||||
## If just files or multiple directories, place all in output
|
## If just files or multiple directories, place all in output
|
||||||
if [[ \$(tar -tzf ${archive} | grep "/\$" | wc -l) -eq 1 ]]; then
|
if [[ \$(tar -tzf ${archive} | grep -o -P "^.*?\\/" | uniq | wc -l) -eq 1 ]]; then
|
||||||
tar \\
|
tar \\
|
||||||
-C output --strip-components 1 \\
|
-C output --strip-components 1 \\
|
||||||
-xzvf \\
|
-xzvf \\
|
|
@ -21,7 +21,9 @@ params {
|
||||||
// MultiQC options
|
// MultiQC options
|
||||||
multiqc_config = null
|
multiqc_config = null
|
||||||
multiqc_title = null
|
multiqc_title = null
|
||||||
|
multiqc_logo = null
|
||||||
max_multiqc_email_size = '25.MB'
|
max_multiqc_email_size = '25.MB'
|
||||||
|
multiqc_methods_description = null
|
||||||
|
|
||||||
// Boilerplate options
|
// Boilerplate options
|
||||||
outdir = null
|
outdir = null
|
||||||
|
@ -31,6 +33,7 @@ params {
|
||||||
email_on_fail = null
|
email_on_fail = null
|
||||||
plaintext_email = false
|
plaintext_email = false
|
||||||
monochrome_logs = false
|
monochrome_logs = false
|
||||||
|
hook_url = null
|
||||||
help = false
|
help = false
|
||||||
validate_params = true
|
validate_params = true
|
||||||
show_hidden_params = false
|
show_hidden_params = false
|
||||||
|
@ -159,7 +162,6 @@ try {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
profiles {
|
profiles {
|
||||||
debug { process.beforeScript = 'echo $HOSTNAME' }
|
debug { process.beforeScript = 'echo $HOSTNAME' }
|
||||||
conda {
|
conda {
|
||||||
|
@ -280,6 +282,7 @@ manifest {
|
||||||
mainScript = 'main.nf'
|
mainScript = 'main.nf'
|
||||||
nextflowVersion = '!>=21.10.3'
|
nextflowVersion = '!>=21.10.3'
|
||||||
version = '1.0dev'
|
version = '1.0dev'
|
||||||
|
doi = ''
|
||||||
}
|
}
|
||||||
|
|
||||||
// Load modules.config for DSL2 module specific options
|
// Load modules.config for DSL2 module specific options
|
||||||
|
|
|
@ -586,12 +586,30 @@
|
||||||
"fa_icon": "fas fa-palette",
|
"fa_icon": "fas fa-palette",
|
||||||
"hidden": true
|
"hidden": true
|
||||||
},
|
},
|
||||||
|
"hook_url": {
|
||||||
|
"type": "string",
|
||||||
|
"description": "Incoming hook URL for messaging service",
|
||||||
|
"fa_icon": "fas fa-people-group",
|
||||||
|
"help_text": "Incoming hook URL for messaging service. Currently, only MS Teams is supported.",
|
||||||
|
"hidden": true
|
||||||
|
},
|
||||||
"multiqc_config": {
|
"multiqc_config": {
|
||||||
"type": "string",
|
"type": "string",
|
||||||
"description": "Custom config file to supply to MultiQC.",
|
"description": "Custom config file to supply to MultiQC.",
|
||||||
"fa_icon": "fas fa-cog",
|
"fa_icon": "fas fa-cog",
|
||||||
"hidden": true
|
"hidden": true
|
||||||
},
|
},
|
||||||
|
"multiqc_logo": {
|
||||||
|
"type": "string",
|
||||||
|
"description": "Custom logo file to supply to MultiQC. File name must also be set in the MultiQC config file",
|
||||||
|
"fa_icon": "fas fa-image",
|
||||||
|
"hidden": true
|
||||||
|
},
|
||||||
|
"multiqc_methods_description": {
|
||||||
|
"type": "string",
|
||||||
|
"description": "Custom MultiQC yaml file containing HTML including a methods description.",
|
||||||
|
"fa_icon": "fas fa-cog"
|
||||||
|
},
|
||||||
"tracedir": {
|
"tracedir": {
|
||||||
"type": "string",
|
"type": "string",
|
||||||
"description": "Directory to keep pipeline Nextflow logs and reports.",
|
"description": "Directory to keep pipeline Nextflow logs and reports.",
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
//
|
//
|
||||||
|
|
||||||
include { DATABASE_CHECK } from '../../modules/local/database_check'
|
include { DATABASE_CHECK } from '../../modules/local/database_check'
|
||||||
include { UNTAR } from '../../modules/nf-core/modules/untar/main'
|
include { UNTAR } from '../../modules/nf-core/untar/main'
|
||||||
|
|
||||||
workflow DB_CHECK {
|
workflow DB_CHECK {
|
||||||
take:
|
take:
|
||||||
|
|
|
@ -2,8 +2,8 @@
|
||||||
// Check input samplesheet and get read channels
|
// Check input samplesheet and get read channels
|
||||||
//
|
//
|
||||||
|
|
||||||
include { EIDO_VALIDATE } from '../../modules/nf-core/modules/eido/validate/main'
|
include { EIDO_VALIDATE } from '../../modules/nf-core/eido/validate/main'
|
||||||
include { EIDO_CONVERT } from '../../modules/nf-core/modules/eido/convert/main'
|
include { EIDO_CONVERT } from '../../modules/nf-core/eido/convert/main'
|
||||||
|
|
||||||
workflow INPUT_CHECK {
|
workflow INPUT_CHECK {
|
||||||
take:
|
take:
|
||||||
|
|
|
@ -2,10 +2,10 @@
|
||||||
// Remove host reads via alignment and export off-target reads
|
// Remove host reads via alignment and export off-target reads
|
||||||
//
|
//
|
||||||
|
|
||||||
include { MINIMAP2_INDEX } from '../../modules/nf-core/modules/minimap2/index/main'
|
include { MINIMAP2_INDEX } from '../../modules/nf-core/minimap2/index/main'
|
||||||
include { MINIMAP2_ALIGN } from '../../modules/nf-core/modules/minimap2/align/main'
|
include { MINIMAP2_ALIGN } from '../../modules/nf-core/minimap2/align/main'
|
||||||
include { SAMTOOLS_VIEW } from '../../modules/nf-core/modules/samtools/view/main'
|
include { SAMTOOLS_VIEW } from '../../modules/nf-core/samtools/view/main'
|
||||||
include { SAMTOOLS_BAM2FQ } from '../../modules/nf-core/modules/samtools/bam2fq/main'
|
include { SAMTOOLS_BAM2FQ } from '../../modules/nf-core/samtools/bam2fq/main'
|
||||||
|
|
||||||
workflow LONGREAD_HOSTREMOVAL {
|
workflow LONGREAD_HOSTREMOVAL {
|
||||||
take:
|
take:
|
||||||
|
@ -33,7 +33,7 @@ workflow LONGREAD_HOSTREMOVAL {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
SAMTOOLS_VIEW ( ch_minimap2_mapped , [] )
|
SAMTOOLS_VIEW ( ch_minimap2_mapped , [], [] )
|
||||||
ch_versions = ch_versions.mix( SAMTOOLS_VIEW.out.versions.first() )
|
ch_versions = ch_versions.mix( SAMTOOLS_VIEW.out.versions.first() )
|
||||||
|
|
||||||
SAMTOOLS_BAM2FQ ( SAMTOOLS_VIEW.out.bam, false )
|
SAMTOOLS_BAM2FQ ( SAMTOOLS_VIEW.out.bam, false )
|
||||||
|
|
|
@ -2,9 +2,9 @@
|
||||||
// Process long raw reads with porechop
|
// Process long raw reads with porechop
|
||||||
//
|
//
|
||||||
|
|
||||||
include { FASTQC as FASTQC_PROCESSED } from '../../modules/nf-core/modules/fastqc/main'
|
include { FASTQC as FASTQC_PROCESSED } from '../../modules/nf-core/fastqc/main'
|
||||||
include { PORECHOP } from '../../modules/nf-core/modules/porechop/main'
|
include { PORECHOP } from '../../modules/nf-core/porechop/main'
|
||||||
include { FILTLONG } from '../../modules/nf-core/modules/filtlong/main'
|
include { FILTLONG } from '../../modules/nf-core/filtlong/main'
|
||||||
|
|
||||||
workflow LONGREAD_PREPROCESSING {
|
workflow LONGREAD_PREPROCESSING {
|
||||||
take:
|
take:
|
||||||
|
|
|
@ -2,15 +2,15 @@
|
||||||
// Run profiling
|
// Run profiling
|
||||||
//
|
//
|
||||||
|
|
||||||
include { MALT_RUN } from '../../modules/nf-core/modules/malt/run/main'
|
include { MALT_RUN } from '../../modules/nf-core/malt/run/main'
|
||||||
include { MEGAN_RMA2INFO as MEGAN_RMA2INFO_TSV } from '../../modules/nf-core/modules/megan/rma2info/main'
|
include { MEGAN_RMA2INFO as MEGAN_RMA2INFO_TSV } from '../../modules/nf-core/megan/rma2info/main'
|
||||||
include { KRAKEN2_KRAKEN2 } from '../../modules/nf-core/modules/kraken2/kraken2/main'
|
include { KRAKEN2_KRAKEN2 } from '../../modules/nf-core/kraken2/kraken2/main'
|
||||||
include { CENTRIFUGE_CENTRIFUGE } from '../../modules/nf-core/modules/centrifuge/centrifuge/main'
|
include { CENTRIFUGE_CENTRIFUGE } from '../../modules/nf-core/centrifuge/centrifuge/main'
|
||||||
include { CENTRIFUGE_KREPORT } from '../../modules/nf-core/modules/centrifuge/kreport/main'
|
include { CENTRIFUGE_KREPORT } from '../../modules/nf-core/centrifuge/kreport/main'
|
||||||
include { METAPHLAN3_METAPHLAN3 } from '../../modules/nf-core/modules/metaphlan3/metaphlan3/main'
|
include { METAPHLAN3_METAPHLAN3 } from '../../modules/nf-core/metaphlan3/metaphlan3/main'
|
||||||
include { KAIJU_KAIJU } from '../../modules/nf-core/modules/kaiju/kaiju/main'
|
include { KAIJU_KAIJU } from '../../modules/nf-core/kaiju/kaiju/main'
|
||||||
include { DIAMOND_BLASTX } from '../../modules/nf-core/modules/diamond/blastx/main'
|
include { DIAMOND_BLASTX } from '../../modules/nf-core/diamond/blastx/main'
|
||||||
include { MOTUS_PROFILE } from '../../modules/nf-core/modules/motus/profile/main'
|
include { MOTUS_PROFILE } from '../../modules/nf-core/motus/profile/main'
|
||||||
|
|
||||||
workflow PROFILING {
|
workflow PROFILING {
|
||||||
take:
|
take:
|
||||||
|
|
|
@ -2,9 +2,9 @@
|
||||||
// Process short raw reads with AdapterRemoval
|
// Process short raw reads with AdapterRemoval
|
||||||
//
|
//
|
||||||
|
|
||||||
include { ADAPTERREMOVAL as ADAPTERREMOVAL_SINGLE } from '../../modules/nf-core/modules/adapterremoval/main'
|
include { ADAPTERREMOVAL as ADAPTERREMOVAL_SINGLE } from '../../modules/nf-core/adapterremoval/main'
|
||||||
include { ADAPTERREMOVAL as ADAPTERREMOVAL_PAIRED } from '../../modules/nf-core/modules/adapterremoval/main'
|
include { ADAPTERREMOVAL as ADAPTERREMOVAL_PAIRED } from '../../modules/nf-core/adapterremoval/main'
|
||||||
include { CAT_FASTQ } from '../../modules/nf-core/modules/cat/fastq/main'
|
include { CAT_FASTQ } from '../../modules/nf-core/cat/fastq/main'
|
||||||
|
|
||||||
workflow SHORTREAD_ADAPTERREMOVAL {
|
workflow SHORTREAD_ADAPTERREMOVAL {
|
||||||
|
|
||||||
|
|
|
@ -2,8 +2,8 @@
|
||||||
// Check input samplesheet and get read channels
|
// Check input samplesheet and get read channels
|
||||||
//
|
//
|
||||||
|
|
||||||
include { BBMAP_BBDUK } from '../../modules/nf-core/modules/bbmap/bbduk/main'
|
include { BBMAP_BBDUK } from '../../modules/nf-core/bbmap/bbduk/main'
|
||||||
include { PRINSEQPLUSPLUS } from '../../modules/nf-core/modules/prinseqplusplus/main'
|
include { PRINSEQPLUSPLUS } from '../../modules/nf-core/prinseqplusplus/main'
|
||||||
|
|
||||||
workflow SHORTREAD_COMPLEXITYFILTERING {
|
workflow SHORTREAD_COMPLEXITYFILTERING {
|
||||||
take:
|
take:
|
||||||
|
|
|
@ -2,8 +2,8 @@
|
||||||
// Process short raw reads with FastP
|
// Process short raw reads with FastP
|
||||||
//
|
//
|
||||||
|
|
||||||
include { FASTP as FASTP_SINGLE } from '../../modules/nf-core/modules/fastp/main'
|
include { FASTP as FASTP_SINGLE } from '../../modules/nf-core/fastp/main'
|
||||||
include { FASTP as FASTP_PAIRED } from '../../modules/nf-core/modules/fastp/main'
|
include { FASTP as FASTP_PAIRED } from '../../modules/nf-core/fastp/main'
|
||||||
|
|
||||||
workflow SHORTREAD_FASTP {
|
workflow SHORTREAD_FASTP {
|
||||||
take:
|
take:
|
||||||
|
|
|
@ -2,8 +2,8 @@
|
||||||
// Remove host reads via alignment and export off-target reads
|
// Remove host reads via alignment and export off-target reads
|
||||||
//
|
//
|
||||||
|
|
||||||
include { BOWTIE2_BUILD } from '../../modules/nf-core/modules/bowtie2/build/main'
|
include { BOWTIE2_BUILD } from '../../modules/nf-core/bowtie2/build/main'
|
||||||
include { BOWTIE2_ALIGN } from '../../modules/nf-core/modules/bowtie2/align/main'
|
include { BOWTIE2_ALIGN } from '../../modules/nf-core/bowtie2/align/main'
|
||||||
|
|
||||||
workflow SHORTREAD_HOSTREMOVAL {
|
workflow SHORTREAD_HOSTREMOVAL {
|
||||||
take:
|
take:
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue