diff --git a/.github/workflows/awsfulltest.yml b/.github/workflows/awsfulltest.yml index bcbb910..fe81d27 100644 --- a/.github/workflows/awsfulltest.yml +++ b/.github/workflows/awsfulltest.yml @@ -28,3 +28,7 @@ jobs: "outdir": "s3://${{ secrets.AWS_S3_BUCKET }}/taxprofiler/results-${{ github.sha }}" } profiles: test_full,aws_tower + - uses: actions/upload-artifact@v3 + with: + name: Tower debug log file + path: tower_action_*.log diff --git a/.github/workflows/awstest.yml b/.github/workflows/awstest.yml index 5d35eea..a580097 100644 --- a/.github/workflows/awstest.yml +++ b/.github/workflows/awstest.yml @@ -23,3 +23,7 @@ jobs: "outdir": "s3://${{ secrets.AWS_S3_BUCKET }}/taxprofiler/results-test-${{ github.sha }}" } profiles: test,aws_tower + - uses: actions/upload-artifact@v3 + with: + name: Tower debug log file + path: tower_action_*.log diff --git a/.prettierignore b/.prettierignore index a48d0d5..f865061 100644 --- a/.prettierignore +++ b/.prettierignore @@ -1,4 +1,5 @@ email_template.html +adaptivecard.json .nextflow* work/ data/ diff --git a/CITATION.cff b/CITATION.cff index 4533e2f..017666c 100644 --- a/CITATION.cff +++ b/CITATION.cff @@ -13,8 +13,8 @@ authors: given-names: Johannes - family-names: Wilm given-names: Andreas - - family-names: Ulysse Garcia - given-names: Maxime + - family-names: Garcia + given-names: Maxime Ulysse - family-names: Di Tommaso given-names: Paolo - family-names: Nahnsen @@ -39,8 +39,8 @@ prefered-citation: given-names: Johannes - family-names: Wilm given-names: Andreas - - family-names: Ulysse Garcia - given-names: Maxime + - family-names: Garcia + given-names: Maxime Ulysse - family-names: Di Tommaso given-names: Paolo - family-names: Nahnsen diff --git a/assets/adaptivecard.json b/assets/adaptivecard.json new file mode 100644 index 0000000..7880ea8 --- /dev/null +++ b/assets/adaptivecard.json @@ -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") %> + ] + } + ] + } + } + ] + } + } + ] +} diff --git a/assets/methods_description_template.yml b/assets/methods_description_template.yml new file mode 100644 index 0000000..e4c292f --- /dev/null +++ b/assets/methods_description_template.yml @@ -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: | +

Methods

+

Data was processed using nf-core/taxprofiler v${workflow.manifest.version} ${doi_text} of the nf-core collection of workflows (Ewels et al., 2020).

+

The pipeline was executed with Nextflow v${workflow.nextflow.version} (Di Tommaso et al., 2017) with the following command:

+
${workflow.commandLine}
+

References

+ +
+
Notes:
+ +
diff --git a/assets/multiqc_config.yml b/assets/multiqc_config.yml index d16ed7e..e2b5a6e 100644 --- a/assets/multiqc_config.yml +++ b/assets/multiqc_config.yml @@ -3,10 +3,12 @@ report_comment: > analysis pipeline. For information about how to interpret these results, please see the documentation. report_section_order: - software_versions: + "nf-core-taxprofiler-methods-description": order: -1000 - "nf-core-taxprofiler-summary": + software_versions: order: -1001 + "nf-core-taxprofiler-summary": + order: -1002 export_plots: true diff --git a/docs/usage.md b/docs/usage.md index 252c84d..8b8b588 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -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). +## 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 Nextflow handles job submissions and supervises the running jobs. The Nextflow process must run until the pipeline is finished. diff --git a/lib/NfcoreTemplate.groovy b/lib/NfcoreTemplate.groovy index 2fc0a9b..27feb00 100755 --- a/lib/NfcoreTemplate.groovy +++ b/lib/NfcoreTemplate.groovy @@ -145,6 +145,61 @@ class NfcoreTemplate { 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 // diff --git a/lib/Utils.groovy b/lib/Utils.groovy old mode 100755 new mode 100644 index 28567bd..8d030f4 --- a/lib/Utils.groovy +++ b/lib/Utils.groovy @@ -21,19 +21,26 @@ class Utils { } // Check that all channels are present - def required_channels = ['conda-forge', 'bioconda', 'defaults'] - def conda_check_failed = !required_channels.every { ch -> ch in channels } + // This channel list is ordered by required channel priority. + 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 - conda_check_failed |= !(channels.indexOf('conda-forge') < channels.indexOf('bioconda')) - conda_check_failed |= !(channels.indexOf('bioconda') < channels.indexOf('defaults')) + def channel_priority_violation = false + 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" + " There is a problem with your Conda configuration!\n\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" + - " NB: The order of the channels matters!\n" + + " Please refer to https://bioconda.github.io/\n" + + " The observed channel order is \n" + + " ${channels}\n" + + " but the following channel order is required:\n" + + " ${required_channels_in_order}\n" + "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" } } diff --git a/lib/WorkflowTaxprofiler.groovy b/lib/WorkflowTaxprofiler.groovy index 48fab72..7bf44c9 100755 --- a/lib/WorkflowTaxprofiler.groovy +++ b/lib/WorkflowTaxprofiler.groovy @@ -2,6 +2,8 @@ // This file holds several functions specific to the workflow/taxprofiler.nf in the nf-core/taxprofiler pipeline // +import groovy.text.SimpleTemplateEngine + class WorkflowTaxprofiler { // @@ -42,6 +44,23 @@ class WorkflowTaxprofiler { yaml_file_text += "data: |\n" yaml_file_text += "${summary_section}" 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: ${meta.manifest_map.doi})" : "" + meta["nodoi_text"] = meta.manifest_map.doi ? "": "
  • If available, make sure to update the text to include the Zenodo DOI of version of the pipeline used.
  • " + + 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 // diff --git a/main.nf b/main.nf index 0e8e9b8..ff1c4ec 100644 --- a/main.nf +++ b/main.nf @@ -4,7 +4,8 @@ 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 ---------------------------------------------------------------------------------------- */ diff --git a/modules.json b/modules.json index ee96e49..e9af665 100644 --- a/modules.json +++ b/modules.json @@ -2,156 +2,158 @@ "name": "nf-core/taxprofiler", "homePage": "https://github.com/nf-core/taxprofiler", "repos": { - "nf-core/modules": { - "git_url": "https://github.com/nf-core/modules.git", + "https://github.com/nf-core/modules.git": { "modules": { - "adapterremoval": { - "branch": "master", - "git_sha": "879d42c5e28661fe0a5e744c9e2c515868f9e08a" - }, - "bbmap/bbduk": { - "branch": "master", - "git_sha": "848ee9a215d02d80be033bfa60881700f2bd914c" - }, - "bowtie2/align": { - "branch": "master", - "git_sha": "848ee9a215d02d80be033bfa60881700f2bd914c" - }, - "bowtie2/build": { - "branch": "master", - "git_sha": "e745e167c1020928ef20ea1397b6b4d230681b4d" - }, - "cat/fastq": { - "branch": "master", - "git_sha": "b034029b59b1198075da8019074bc02051a6100e" - }, - "centrifuge/centrifuge": { - "branch": "master", - "git_sha": "d2726fcf75063960f06b36d2229a4c0966614108" - }, - "centrifuge/kreport": { - "branch": "master", - "git_sha": "734d0db6079a4aa43b6509b207e5d6feb35d4838" - }, - "custom/dumpsoftwareversions": { - "branch": "master", - "git_sha": "5e7b1ef9a5a2d9258635bcbf70fcf37dacd1b247" - }, - "diamond/blastx": { - "branch": "master", - "git_sha": "3531824af826c16cd252bc5aa82ae169b244ebaa" - }, - "eido/convert": { - "branch": "master", - "git_sha": "9764eef361ded86e9242075bda64c2662421386a" - }, - "eido/validate": { - "branch": "master", - "git_sha": "38383cfaefc06cd35e25de99989a3e6ab9ed2980" - }, - "fastp": { - "branch": "master", - "git_sha": "2c70c1c1951aaf884d2e8d8d9c871db79f7b35aa" - }, - "fastqc": { - "branch": "master", - "git_sha": "49b18b1639f4f7104187058866a8fab33332bdfe" - }, - "filtlong": { - "branch": "master", - "git_sha": "957cb9b83668075f4af101fc99502908cca487e3" - }, - "gunzip": { - "branch": "master", - "git_sha": "fa37e0662690c4ec4260dae282fbce08777503e6" - }, - "kaiju/kaiju": { - "branch": "master", - "git_sha": "8856f127c58f6af479128be8b8df4d42e442ddbe" - }, - "kaiju/kaiju2krona": { - "branch": "master", - "git_sha": "2f0b19240430de6807b1232e6d9d0e8084e8a28f" - }, - "kaiju/kaiju2table": { - "branch": "master", - "git_sha": "538dbac98ba9c8f799536cd5a617195501439457" - }, - "kraken2/kraken2": { - "branch": "master", - "git_sha": "409a308ba46284d8ebb48c2c1befd6f6433db3f7" - }, - "krakentools/combinekreports": { - "branch": "master", - "git_sha": "ee0346b4d14ffdc15ce7e093ca1363cd07c9bd78" - }, - "krakentools/kreport2krona": { - "branch": "master", - "git_sha": "233fa70811a03a4cecb2ece483b5c8396e2cee1d" - }, - "krona/ktimporttaxonomy": { - "branch": "master", - "git_sha": "0e9fd9370ad1845870b8a9c63fcc47d999a1739e" - }, - "krona/ktimporttext": { - "branch": "master", - "git_sha": "cdefbec66999c0b49d8bfeea9d6f9d19056635a2" - }, - "malt/run": { - "branch": "master", - "git_sha": "be8d7b3293cac26cc63e4dbfb364deb8ed6ec7e5" - }, - "megan/rma2info": { - "branch": "master", - "git_sha": "2d38566eca4cc15142b2ffa7c11837569b39aece" - }, - "metaphlan3/mergemetaphlantables": { - "branch": "master", - "git_sha": "36bcd675ae76a379a38165898a203f4915823f4f" - }, - "metaphlan3/metaphlan3": { - "branch": "master", - "git_sha": "978087354eb72ac1f6e18a3f790fad9bc4d05840" - }, - "minimap2/align": { - "branch": "master", - "git_sha": "1a5a9e7b4009dcf34e6867dd1a5a1d9a718b027b" - }, - "minimap2/index": { - "branch": "master", - "git_sha": "e745e167c1020928ef20ea1397b6b4d230681b4d" - }, - "motus/merge": { - "branch": "master", - "git_sha": "54ff289487244bf15543ecfa62bd4df49be72b73" - }, - "motus/profile": { - "branch": "master", - "git_sha": "b6ed584443ad68ac41e6975994139454a4f23c18" - }, - "multiqc": { - "branch": "master", - "git_sha": "16eee433b87b303bda650131ac5a0b1ad725e166" - }, - "porechop": { - "branch": "master", - "git_sha": "b78e19b9dae3671db2c7d4346fe04452c1debfab" - }, - "prinseqplusplus": { - "branch": "master", - "git_sha": "f1c5384c31e985591716afdd732cf8c2ae29d05b" - }, - "samtools/bam2fq": { - "branch": "master", - "git_sha": "5510ea39fe638594bc26ac34cadf4a84bf27d159" - }, - "samtools/view": { - "branch": "master", - "git_sha": "5e7b1ef9a5a2d9258635bcbf70fcf37dacd1b247" - }, - "untar": { - "branch": "master", - "git_sha": "393dbd6ddafe3f18eac02893dd4a21e4d45de679" + "nf-core": { + "adapterremoval": { + "branch": "master", + "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905" + }, + "bbmap/bbduk": { + "branch": "master", + "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905" + }, + "bowtie2/align": { + "branch": "master", + "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905" + }, + "bowtie2/build": { + "branch": "master", + "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905" + }, + "cat/fastq": { + "branch": "master", + "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905" + }, + "centrifuge/centrifuge": { + "branch": "master", + "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905" + }, + "centrifuge/kreport": { + "branch": "master", + "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905" + }, + "custom/dumpsoftwareversions": { + "branch": "master", + "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905" + }, + "diamond/blastx": { + "branch": "master", + "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905" + }, + "eido/convert": { + "branch": "master", + "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905" + }, + "eido/validate": { + "branch": "master", + "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905" + }, + "fastp": { + "branch": "master", + "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905" + }, + "fastqc": { + "branch": "master", + "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905" + }, + "filtlong": { + "branch": "master", + "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905" + }, + "gunzip": { + "branch": "master", + "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905" + }, + "kaiju/kaiju": { + "branch": "master", + "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905" + }, + "kaiju/kaiju2krona": { + "branch": "master", + "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905" + }, + "kaiju/kaiju2table": { + "branch": "master", + "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905" + }, + "kraken2/kraken2": { + "branch": "master", + "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905" + }, + "krakentools/combinekreports": { + "branch": "master", + "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905" + }, + "krakentools/kreport2krona": { + "branch": "master", + "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905" + }, + "krona/ktimporttaxonomy": { + "branch": "master", + "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905" + }, + "krona/ktimporttext": { + "branch": "master", + "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905" + }, + "malt/run": { + "branch": "master", + "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905" + }, + "megan/rma2info": { + "branch": "master", + "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905" + }, + "metaphlan3/mergemetaphlantables": { + "branch": "master", + "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905" + }, + "metaphlan3/metaphlan3": { + "branch": "master", + "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905" + }, + "minimap2/align": { + "branch": "master", + "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905" + }, + "minimap2/index": { + "branch": "master", + "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905", + "patch": "modules/nf-core/minimap2/index/minimap2-index.diff" + }, + "motus/merge": { + "branch": "master", + "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905" + }, + "motus/profile": { + "branch": "master", + "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905" + }, + "multiqc": { + "branch": "master", + "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905" + }, + "porechop": { + "branch": "master", + "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905" + }, + "prinseqplusplus": { + "branch": "master", + "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905" + }, + "samtools/bam2fq": { + "branch": "master", + "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905" + }, + "samtools/view": { + "branch": "master", + "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905" + }, + "untar": { + "branch": "master", + "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905" + } } } } diff --git a/modules/nf-core/modules/adapterremoval/main.nf b/modules/nf-core/adapterremoval/main.nf similarity index 100% rename from modules/nf-core/modules/adapterremoval/main.nf rename to modules/nf-core/adapterremoval/main.nf diff --git a/modules/nf-core/modules/adapterremoval/meta.yml b/modules/nf-core/adapterremoval/meta.yml similarity index 100% rename from modules/nf-core/modules/adapterremoval/meta.yml rename to modules/nf-core/adapterremoval/meta.yml diff --git a/modules/nf-core/modules/bbmap/bbduk/main.nf b/modules/nf-core/bbmap/bbduk/main.nf similarity index 100% rename from modules/nf-core/modules/bbmap/bbduk/main.nf rename to modules/nf-core/bbmap/bbduk/main.nf diff --git a/modules/nf-core/modules/bbmap/bbduk/meta.yml b/modules/nf-core/bbmap/bbduk/meta.yml similarity index 100% rename from modules/nf-core/modules/bbmap/bbduk/meta.yml rename to modules/nf-core/bbmap/bbduk/meta.yml diff --git a/modules/nf-core/modules/bowtie2/align/main.nf b/modules/nf-core/bowtie2/align/main.nf similarity index 100% rename from modules/nf-core/modules/bowtie2/align/main.nf rename to modules/nf-core/bowtie2/align/main.nf diff --git a/modules/nf-core/modules/bowtie2/align/meta.yml b/modules/nf-core/bowtie2/align/meta.yml similarity index 100% rename from modules/nf-core/modules/bowtie2/align/meta.yml rename to modules/nf-core/bowtie2/align/meta.yml diff --git a/modules/nf-core/modules/bowtie2/build/main.nf b/modules/nf-core/bowtie2/build/main.nf similarity index 100% rename from modules/nf-core/modules/bowtie2/build/main.nf rename to modules/nf-core/bowtie2/build/main.nf diff --git a/modules/nf-core/modules/bowtie2/build/meta.yml b/modules/nf-core/bowtie2/build/meta.yml similarity index 100% rename from modules/nf-core/modules/bowtie2/build/meta.yml rename to modules/nf-core/bowtie2/build/meta.yml diff --git a/modules/nf-core/modules/cat/fastq/main.nf b/modules/nf-core/cat/fastq/main.nf similarity index 88% rename from modules/nf-core/modules/cat/fastq/main.nf rename to modules/nf-core/cat/fastq/main.nf index d275f19..4fa365d 100644 --- a/modules/nf-core/modules/cat/fastq/main.nf +++ b/modules/nf-core/cat/fastq/main.nf @@ -1,6 +1,6 @@ process CAT_FASTQ { tag "$meta.id" - label 'process_low' + label 'process_single' conda (params.enable_conda ? "conda-forge::sed=4.7" : null) container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? @@ -20,9 +20,9 @@ process CAT_FASTQ { script: def args = task.ext.args ?: '' 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 (readList.size > 1) { + if (readList.size >= 1) { """ cat ${readList.join(' ')} > ${prefix}.merged.fastq.gz @@ -33,7 +33,7 @@ process CAT_FASTQ { """ } } else { - if (readList.size > 2) { + if (readList.size >= 2) { def read1 = [] def read2 = [] readList.eachWithIndex{ v, ix -> ( ix & 1 ? read2 : read1 ) << v } @@ -51,7 +51,7 @@ process CAT_FASTQ { stub: 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 (readList.size > 1) { """ diff --git a/modules/nf-core/modules/cat/fastq/meta.yml b/modules/nf-core/cat/fastq/meta.yml similarity index 100% rename from modules/nf-core/modules/cat/fastq/meta.yml rename to modules/nf-core/cat/fastq/meta.yml diff --git a/modules/nf-core/modules/centrifuge/centrifuge/main.nf b/modules/nf-core/centrifuge/centrifuge/main.nf similarity index 100% rename from modules/nf-core/modules/centrifuge/centrifuge/main.nf rename to modules/nf-core/centrifuge/centrifuge/main.nf diff --git a/modules/nf-core/modules/centrifuge/centrifuge/meta.yml b/modules/nf-core/centrifuge/centrifuge/meta.yml similarity index 100% rename from modules/nf-core/modules/centrifuge/centrifuge/meta.yml rename to modules/nf-core/centrifuge/centrifuge/meta.yml diff --git a/modules/nf-core/modules/centrifuge/kreport/main.nf b/modules/nf-core/centrifuge/kreport/main.nf similarity index 97% rename from modules/nf-core/modules/centrifuge/kreport/main.nf rename to modules/nf-core/centrifuge/kreport/main.nf index 381ddd6..8e5b741 100644 --- a/modules/nf-core/modules/centrifuge/kreport/main.nf +++ b/modules/nf-core/centrifuge/kreport/main.nf @@ -1,6 +1,6 @@ process CENTRIFUGE_KREPORT { tag "$meta.id" - label 'process_low' + label 'process_single' conda (params.enable_conda ? "bioconda::centrifuge=1.0.4_beta" : null) container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? diff --git a/modules/nf-core/modules/centrifuge/kreport/meta.yml b/modules/nf-core/centrifuge/kreport/meta.yml similarity index 100% rename from modules/nf-core/modules/centrifuge/kreport/meta.yml rename to modules/nf-core/centrifuge/kreport/meta.yml diff --git a/modules/nf-core/modules/custom/dumpsoftwareversions/main.nf b/modules/nf-core/custom/dumpsoftwareversions/main.nf similarity index 81% rename from modules/nf-core/modules/custom/dumpsoftwareversions/main.nf rename to modules/nf-core/custom/dumpsoftwareversions/main.nf index 34b50b9..cebb6e0 100644 --- a/modules/nf-core/modules/custom/dumpsoftwareversions/main.nf +++ b/modules/nf-core/custom/dumpsoftwareversions/main.nf @@ -2,10 +2,10 @@ process CUSTOM_DUMPSOFTWAREVERSIONS { label 'process_single' // Requires `pyyaml` which does not have a dedicated container but is in the MultiQC container - conda (params.enable_conda ? 'bioconda::multiqc=1.13a' : null) + conda (params.enable_conda ? 'bioconda::multiqc=1.13' : null) container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/multiqc:1.13a--pyhdfd78af_1' : - 'quay.io/biocontainers/multiqc:1.13a--pyhdfd78af_1' }" + 'https://depot.galaxyproject.org/singularity/multiqc:1.13--pyhdfd78af_0' : + 'quay.io/biocontainers/multiqc:1.13--pyhdfd78af_0' }" input: path versions diff --git a/modules/nf-core/modules/custom/dumpsoftwareversions/meta.yml b/modules/nf-core/custom/dumpsoftwareversions/meta.yml similarity index 100% rename from modules/nf-core/modules/custom/dumpsoftwareversions/meta.yml rename to modules/nf-core/custom/dumpsoftwareversions/meta.yml diff --git a/modules/nf-core/modules/custom/dumpsoftwareversions/templates/dumpsoftwareversions.py b/modules/nf-core/custom/dumpsoftwareversions/templates/dumpsoftwareversions.py similarity index 88% rename from modules/nf-core/modules/custom/dumpsoftwareversions/templates/dumpsoftwareversions.py rename to modules/nf-core/custom/dumpsoftwareversions/templates/dumpsoftwareversions.py index d139039..7c2abfa 100644 --- a/modules/nf-core/modules/custom/dumpsoftwareversions/templates/dumpsoftwareversions.py +++ b/modules/nf-core/custom/dumpsoftwareversions/templates/dumpsoftwareversions.py @@ -58,11 +58,12 @@ versions_by_module = {} for process, process_versions in versions_by_process.items(): module = process.split(":")[-1] try: - assert versions_by_module[module] == process_versions, ( - "We assume that software versions are the same between all modules. " - "If you see this error-message it means you discovered an edge-case " - "and should open an issue in nf-core/tools. " - ) + if versions_by_module[module] != process_versions: + raise AssertionError( + "We assume that software versions are the same between all modules. " + "If you see this error-message it means you discovered an edge-case " + "and should open an issue in nf-core/tools. " + ) except KeyError: versions_by_module[module] = process_versions diff --git a/modules/nf-core/modules/diamond/blastx/main.nf b/modules/nf-core/diamond/blastx/main.nf similarity index 100% rename from modules/nf-core/modules/diamond/blastx/main.nf rename to modules/nf-core/diamond/blastx/main.nf diff --git a/modules/nf-core/modules/diamond/blastx/meta.yml b/modules/nf-core/diamond/blastx/meta.yml similarity index 100% rename from modules/nf-core/modules/diamond/blastx/meta.yml rename to modules/nf-core/diamond/blastx/meta.yml diff --git a/modules/nf-core/modules/eido/convert/main.nf b/modules/nf-core/eido/convert/main.nf similarity index 97% rename from modules/nf-core/modules/eido/convert/main.nf rename to modules/nf-core/eido/convert/main.nf index be4c02f..7ec4b8c 100644 --- a/modules/nf-core/modules/eido/convert/main.nf +++ b/modules/nf-core/eido/convert/main.nf @@ -1,5 +1,5 @@ process EIDO_CONVERT { - tag '$samplesheet' + tag "$samplesheet" label 'process_single' conda (params.enable_conda ? "conda-forge::eido=0.1.9" : null) diff --git a/modules/nf-core/modules/eido/convert/meta.yml b/modules/nf-core/eido/convert/meta.yml similarity index 100% rename from modules/nf-core/modules/eido/convert/meta.yml rename to modules/nf-core/eido/convert/meta.yml diff --git a/modules/nf-core/modules/eido/validate/main.nf b/modules/nf-core/eido/validate/main.nf similarity index 97% rename from modules/nf-core/modules/eido/validate/main.nf rename to modules/nf-core/eido/validate/main.nf index e564e83..798d3a0 100644 --- a/modules/nf-core/modules/eido/validate/main.nf +++ b/modules/nf-core/eido/validate/main.nf @@ -1,5 +1,5 @@ process EIDO_VALIDATE { - tag '$samplesheet' + tag "$samplesheet" label 'process_single' conda (params.enable_conda ? "conda-forge::eido=0.1.9" : null) diff --git a/modules/nf-core/modules/eido/validate/meta.yml b/modules/nf-core/eido/validate/meta.yml similarity index 100% rename from modules/nf-core/modules/eido/validate/meta.yml rename to modules/nf-core/eido/validate/meta.yml diff --git a/modules/nf-core/modules/fastp/main.nf b/modules/nf-core/fastp/main.nf similarity index 100% rename from modules/nf-core/modules/fastp/main.nf rename to modules/nf-core/fastp/main.nf diff --git a/modules/nf-core/modules/fastp/meta.yml b/modules/nf-core/fastp/meta.yml similarity index 100% rename from modules/nf-core/modules/fastp/meta.yml rename to modules/nf-core/fastp/meta.yml diff --git a/modules/nf-core/modules/fastqc/main.nf b/modules/nf-core/fastqc/main.nf similarity index 100% rename from modules/nf-core/modules/fastqc/main.nf rename to modules/nf-core/fastqc/main.nf diff --git a/modules/nf-core/modules/fastqc/meta.yml b/modules/nf-core/fastqc/meta.yml similarity index 100% rename from modules/nf-core/modules/fastqc/meta.yml rename to modules/nf-core/fastqc/meta.yml diff --git a/modules/nf-core/modules/filtlong/main.nf b/modules/nf-core/filtlong/main.nf similarity index 100% rename from modules/nf-core/modules/filtlong/main.nf rename to modules/nf-core/filtlong/main.nf diff --git a/modules/nf-core/modules/filtlong/meta.yml b/modules/nf-core/filtlong/meta.yml similarity index 100% rename from modules/nf-core/modules/filtlong/meta.yml rename to modules/nf-core/filtlong/meta.yml diff --git a/modules/nf-core/modules/gunzip/main.nf b/modules/nf-core/gunzip/main.nf similarity index 97% rename from modules/nf-core/modules/gunzip/main.nf rename to modules/nf-core/gunzip/main.nf index 7036704..fa6ba26 100644 --- a/modules/nf-core/modules/gunzip/main.nf +++ b/modules/nf-core/gunzip/main.nf @@ -1,6 +1,6 @@ process GUNZIP { tag "$archive" - label 'process_low' + label 'process_single' conda (params.enable_conda ? "conda-forge::sed=4.7" : null) container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? diff --git a/modules/nf-core/modules/gunzip/meta.yml b/modules/nf-core/gunzip/meta.yml similarity index 100% rename from modules/nf-core/modules/gunzip/meta.yml rename to modules/nf-core/gunzip/meta.yml diff --git a/modules/nf-core/modules/kaiju/kaiju/main.nf b/modules/nf-core/kaiju/kaiju/main.nf similarity index 100% rename from modules/nf-core/modules/kaiju/kaiju/main.nf rename to modules/nf-core/kaiju/kaiju/main.nf diff --git a/modules/nf-core/modules/kaiju/kaiju/meta.yml b/modules/nf-core/kaiju/kaiju/meta.yml similarity index 100% rename from modules/nf-core/modules/kaiju/kaiju/meta.yml rename to modules/nf-core/kaiju/kaiju/meta.yml diff --git a/modules/nf-core/modules/kaiju/kaiju2krona/main.nf b/modules/nf-core/kaiju/kaiju2krona/main.nf similarity index 97% rename from modules/nf-core/modules/kaiju/kaiju2krona/main.nf rename to modules/nf-core/kaiju/kaiju2krona/main.nf index c95d5a7..3f35ce7 100644 --- a/modules/nf-core/modules/kaiju/kaiju2krona/main.nf +++ b/modules/nf-core/kaiju/kaiju2krona/main.nf @@ -1,6 +1,6 @@ process KAIJU_KAIJU2KRONA { tag "$meta.id" - label 'process_low' + label 'process_single' conda (params.enable_conda ? "bioconda::kaiju=1.8.2" : null) container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? diff --git a/modules/nf-core/modules/kaiju/kaiju2krona/meta.yml b/modules/nf-core/kaiju/kaiju2krona/meta.yml similarity index 100% rename from modules/nf-core/modules/kaiju/kaiju2krona/meta.yml rename to modules/nf-core/kaiju/kaiju2krona/meta.yml diff --git a/modules/nf-core/modules/kaiju/kaiju2table/main.nf b/modules/nf-core/kaiju/kaiju2table/main.nf similarity index 97% rename from modules/nf-core/modules/kaiju/kaiju2table/main.nf rename to modules/nf-core/kaiju/kaiju2table/main.nf index 00739d1..8648d56 100644 --- a/modules/nf-core/modules/kaiju/kaiju2table/main.nf +++ b/modules/nf-core/kaiju/kaiju2table/main.nf @@ -1,6 +1,6 @@ process KAIJU_KAIJU2TABLE { tag "$meta.id" - label 'process_low' + label 'process_single' conda (params.enable_conda ? "bioconda::kaiju=1.8.2" : null) container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? diff --git a/modules/nf-core/modules/kaiju/kaiju2table/meta.yml b/modules/nf-core/kaiju/kaiju2table/meta.yml similarity index 100% rename from modules/nf-core/modules/kaiju/kaiju2table/meta.yml rename to modules/nf-core/kaiju/kaiju2table/meta.yml diff --git a/modules/nf-core/modules/kraken2/kraken2/main.nf b/modules/nf-core/kraken2/kraken2/main.nf similarity index 100% rename from modules/nf-core/modules/kraken2/kraken2/main.nf rename to modules/nf-core/kraken2/kraken2/main.nf diff --git a/modules/nf-core/modules/kraken2/kraken2/meta.yml b/modules/nf-core/kraken2/kraken2/meta.yml similarity index 100% rename from modules/nf-core/modules/kraken2/kraken2/meta.yml rename to modules/nf-core/kraken2/kraken2/meta.yml diff --git a/modules/nf-core/modules/krakentools/combinekreports/main.nf b/modules/nf-core/krakentools/combinekreports/main.nf similarity index 97% rename from modules/nf-core/modules/krakentools/combinekreports/main.nf rename to modules/nf-core/krakentools/combinekreports/main.nf index 849f39c..fdcc245 100644 --- a/modules/nf-core/modules/krakentools/combinekreports/main.nf +++ b/modules/nf-core/krakentools/combinekreports/main.nf @@ -1,5 +1,5 @@ process KRAKENTOOLS_COMBINEKREPORTS { - label 'process_low' + label 'process_single' conda (params.enable_conda ? "bioconda::krakentools=1.2" : null) container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? diff --git a/modules/nf-core/modules/krakentools/combinekreports/meta.yml b/modules/nf-core/krakentools/combinekreports/meta.yml similarity index 100% rename from modules/nf-core/modules/krakentools/combinekreports/meta.yml rename to modules/nf-core/krakentools/combinekreports/meta.yml diff --git a/modules/nf-core/modules/krakentools/kreport2krona/main.nf b/modules/nf-core/krakentools/kreport2krona/main.nf similarity index 97% rename from modules/nf-core/modules/krakentools/kreport2krona/main.nf rename to modules/nf-core/krakentools/kreport2krona/main.nf index 1fcb1e4..8ed46f1 100644 --- a/modules/nf-core/modules/krakentools/kreport2krona/main.nf +++ b/modules/nf-core/krakentools/kreport2krona/main.nf @@ -1,6 +1,6 @@ process KRAKENTOOLS_KREPORT2KRONA { 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. conda (params.enable_conda ? "bioconda::krakentools=1.2" : null) diff --git a/modules/nf-core/modules/krakentools/kreport2krona/meta.yml b/modules/nf-core/krakentools/kreport2krona/meta.yml similarity index 100% rename from modules/nf-core/modules/krakentools/kreport2krona/meta.yml rename to modules/nf-core/krakentools/kreport2krona/meta.yml diff --git a/modules/nf-core/modules/krona/ktimporttaxonomy/main.nf b/modules/nf-core/krona/ktimporttaxonomy/main.nf similarity index 97% rename from modules/nf-core/modules/krona/ktimporttaxonomy/main.nf rename to modules/nf-core/krona/ktimporttaxonomy/main.nf index 9b03462..79c01d7 100644 --- a/modules/nf-core/modules/krona/ktimporttaxonomy/main.nf +++ b/modules/nf-core/krona/ktimporttaxonomy/main.nf @@ -1,6 +1,6 @@ process KRONA_KTIMPORTTAXONOMY { 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. conda (params.enable_conda ? "bioconda::krona=2.8" : null) diff --git a/modules/nf-core/modules/krona/ktimporttaxonomy/meta.yml b/modules/nf-core/krona/ktimporttaxonomy/meta.yml similarity index 100% rename from modules/nf-core/modules/krona/ktimporttaxonomy/meta.yml rename to modules/nf-core/krona/ktimporttaxonomy/meta.yml diff --git a/modules/nf-core/modules/krona/ktimporttext/main.nf b/modules/nf-core/krona/ktimporttext/main.nf similarity index 97% rename from modules/nf-core/modules/krona/ktimporttext/main.nf rename to modules/nf-core/krona/ktimporttext/main.nf index de0cfc2..edf7aab 100644 --- a/modules/nf-core/modules/krona/ktimporttext/main.nf +++ b/modules/nf-core/krona/ktimporttext/main.nf @@ -1,6 +1,6 @@ process KRONA_KTIMPORTTEXT { tag "$meta.id" - label 'process_low' + label 'process_single' conda (params.enable_conda ? "bioconda::krona=2.8.1" : null) container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? diff --git a/modules/nf-core/modules/krona/ktimporttext/meta.yml b/modules/nf-core/krona/ktimporttext/meta.yml similarity index 100% rename from modules/nf-core/modules/krona/ktimporttext/meta.yml rename to modules/nf-core/krona/ktimporttext/meta.yml diff --git a/modules/nf-core/modules/malt/run/main.nf b/modules/nf-core/malt/run/main.nf similarity index 100% rename from modules/nf-core/modules/malt/run/main.nf rename to modules/nf-core/malt/run/main.nf diff --git a/modules/nf-core/modules/malt/run/meta.yml b/modules/nf-core/malt/run/meta.yml similarity index 100% rename from modules/nf-core/modules/malt/run/meta.yml rename to modules/nf-core/malt/run/meta.yml diff --git a/modules/nf-core/modules/megan/rma2info/main.nf b/modules/nf-core/megan/rma2info/main.nf similarity index 97% rename from modules/nf-core/modules/megan/rma2info/main.nf rename to modules/nf-core/megan/rma2info/main.nf index 80d1975..9c6a094 100644 --- a/modules/nf-core/modules/megan/rma2info/main.nf +++ b/modules/nf-core/megan/rma2info/main.nf @@ -1,6 +1,6 @@ process MEGAN_RMA2INFO { tag "$meta.id" - label 'process_low' + label 'process_single' conda (params.enable_conda ? "bioconda::megan=6.21.7" : null) container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? diff --git a/modules/nf-core/modules/megan/rma2info/meta.yml b/modules/nf-core/megan/rma2info/meta.yml similarity index 100% rename from modules/nf-core/modules/megan/rma2info/meta.yml rename to modules/nf-core/megan/rma2info/meta.yml diff --git a/modules/nf-core/modules/metaphlan3/mergemetaphlantables/main.nf b/modules/nf-core/metaphlan3/mergemetaphlantables/main.nf similarity index 100% rename from modules/nf-core/modules/metaphlan3/mergemetaphlantables/main.nf rename to modules/nf-core/metaphlan3/mergemetaphlantables/main.nf diff --git a/modules/nf-core/modules/metaphlan3/mergemetaphlantables/meta.yml b/modules/nf-core/metaphlan3/mergemetaphlantables/meta.yml similarity index 100% rename from modules/nf-core/modules/metaphlan3/mergemetaphlantables/meta.yml rename to modules/nf-core/metaphlan3/mergemetaphlantables/meta.yml diff --git a/modules/nf-core/modules/metaphlan3/metaphlan3/main.nf b/modules/nf-core/metaphlan3/metaphlan3/main.nf similarity index 100% rename from modules/nf-core/modules/metaphlan3/metaphlan3/main.nf rename to modules/nf-core/metaphlan3/metaphlan3/main.nf diff --git a/modules/nf-core/modules/metaphlan3/metaphlan3/meta.yml b/modules/nf-core/metaphlan3/metaphlan3/meta.yml similarity index 100% rename from modules/nf-core/modules/metaphlan3/metaphlan3/meta.yml rename to modules/nf-core/metaphlan3/metaphlan3/meta.yml diff --git a/modules/nf-core/modules/minimap2/align/main.nf b/modules/nf-core/minimap2/align/main.nf similarity index 100% rename from modules/nf-core/modules/minimap2/align/main.nf rename to modules/nf-core/minimap2/align/main.nf diff --git a/modules/nf-core/modules/minimap2/align/meta.yml b/modules/nf-core/minimap2/align/meta.yml similarity index 100% rename from modules/nf-core/modules/minimap2/align/meta.yml rename to modules/nf-core/minimap2/align/meta.yml diff --git a/modules/nf-core/modules/minimap2/index/main.nf b/modules/nf-core/minimap2/index/main.nf similarity index 100% rename from modules/nf-core/modules/minimap2/index/main.nf rename to modules/nf-core/minimap2/index/main.nf diff --git a/modules/nf-core/modules/minimap2/index/meta.yml b/modules/nf-core/minimap2/index/meta.yml similarity index 72% rename from modules/nf-core/modules/minimap2/index/meta.yml rename to modules/nf-core/minimap2/index/meta.yml index 3bf9f04..603c651 100644 --- a/modules/nf-core/modules/minimap2/index/meta.yml +++ b/modules/nf-core/minimap2/index/meta.yml @@ -12,11 +12,21 @@ tools: documentation: https://github.com/lh3/minimap2#uguide licence: ["MIT"] input: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] - fasta: type: file description: | Reference database in FASTA format. output: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] - mmi: type: file description: Minimap2 fasta index. diff --git a/modules/nf-core/minimap2/index/minimap2-index.diff b/modules/nf-core/minimap2/index/minimap2-index.diff new file mode 100644 index 0000000..de306d5 --- /dev/null +++ b/modules/nf-core/minimap2/index/minimap2-index.diff @@ -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 + +************************************************************ diff --git a/modules/nf-core/modules/motus/merge/main.nf b/modules/nf-core/motus/merge/main.nf similarity index 98% rename from modules/nf-core/modules/motus/merge/main.nf rename to modules/nf-core/motus/merge/main.nf index a050c7a..d9f091e 100644 --- a/modules/nf-core/modules/motus/merge/main.nf +++ b/modules/nf-core/motus/merge/main.nf @@ -2,7 +2,7 @@ VERSION = '3.0.1' process MOTUS_MERGE { tag "$meta.id" - label 'process_low' + label 'process_single' conda (params.enable_conda ? "bioconda::motus=3.0.1" : null) container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? diff --git a/modules/nf-core/modules/motus/merge/meta.yml b/modules/nf-core/motus/merge/meta.yml similarity index 100% rename from modules/nf-core/modules/motus/merge/meta.yml rename to modules/nf-core/motus/merge/meta.yml diff --git a/modules/nf-core/modules/motus/profile/main.nf b/modules/nf-core/motus/profile/main.nf similarity index 100% rename from modules/nf-core/modules/motus/profile/main.nf rename to modules/nf-core/motus/profile/main.nf diff --git a/modules/nf-core/modules/motus/profile/meta.yml b/modules/nf-core/motus/profile/meta.yml similarity index 100% rename from modules/nf-core/modules/motus/profile/meta.yml rename to modules/nf-core/motus/profile/meta.yml diff --git a/modules/nf-core/modules/multiqc/main.nf b/modules/nf-core/multiqc/main.nf similarity index 79% rename from modules/nf-core/modules/multiqc/main.nf rename to modules/nf-core/multiqc/main.nf index c8e6ace..a8159a5 100644 --- a/modules/nf-core/modules/multiqc/main.nf +++ b/modules/nf-core/multiqc/main.nf @@ -1,14 +1,15 @@ 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 ? - 'https://depot.galaxyproject.org/singularity/multiqc:1.13a--pyhdfd78af_1' : - 'quay.io/biocontainers/multiqc:1.13a--pyhdfd78af_1' }" + 'https://depot.galaxyproject.org/singularity/multiqc:1.13--pyhdfd78af_0' : + 'quay.io/biocontainers/multiqc:1.13--pyhdfd78af_0' }" input: path multiqc_files, stageAs: "?/*" path(multiqc_config) + path(extra_multiqc_config) path(multiqc_logo) output: @@ -23,11 +24,13 @@ process MULTIQC { script: def args = task.ext.args ?: '' def config = multiqc_config ? "--config $multiqc_config" : '' + def extra_config = extra_multiqc_config ? "--config $extra_multiqc_config" : '' """ multiqc \\ --force \\ - $config \\ $args \\ + $config \\ + $extra_config \\ . cat <<-END_VERSIONS > versions.yml diff --git a/modules/nf-core/modules/multiqc/meta.yml b/modules/nf-core/multiqc/meta.yml similarity index 88% rename from modules/nf-core/modules/multiqc/meta.yml rename to modules/nf-core/multiqc/meta.yml index a1029f3..ebc29b2 100644 --- a/modules/nf-core/modules/multiqc/meta.yml +++ b/modules/nf-core/multiqc/meta.yml @@ -22,6 +22,10 @@ input: type: file description: Optional config yml for MultiQC pattern: "*.{yml,yaml}" + - extra_multiqc_config: + type: file + description: Second optional config yml for MultiQC. Will override common sections in multiqc_config. + pattern: "*.{yml,yaml}" - multiqc_logo: type: file description: Optional logo file for MultiQC diff --git a/modules/nf-core/modules/porechop/main.nf b/modules/nf-core/porechop/main.nf similarity index 100% rename from modules/nf-core/modules/porechop/main.nf rename to modules/nf-core/porechop/main.nf diff --git a/modules/nf-core/modules/porechop/meta.yml b/modules/nf-core/porechop/meta.yml similarity index 100% rename from modules/nf-core/modules/porechop/meta.yml rename to modules/nf-core/porechop/meta.yml diff --git a/modules/nf-core/modules/prinseqplusplus/main.nf b/modules/nf-core/prinseqplusplus/main.nf similarity index 100% rename from modules/nf-core/modules/prinseqplusplus/main.nf rename to modules/nf-core/prinseqplusplus/main.nf diff --git a/modules/nf-core/modules/prinseqplusplus/meta.yml b/modules/nf-core/prinseqplusplus/meta.yml similarity index 100% rename from modules/nf-core/modules/prinseqplusplus/meta.yml rename to modules/nf-core/prinseqplusplus/meta.yml diff --git a/modules/nf-core/modules/samtools/bam2fq/main.nf b/modules/nf-core/samtools/bam2fq/main.nf similarity index 100% rename from modules/nf-core/modules/samtools/bam2fq/main.nf rename to modules/nf-core/samtools/bam2fq/main.nf diff --git a/modules/nf-core/modules/samtools/bam2fq/meta.yml b/modules/nf-core/samtools/bam2fq/meta.yml similarity index 100% rename from modules/nf-core/modules/samtools/bam2fq/meta.yml rename to modules/nf-core/samtools/bam2fq/meta.yml diff --git a/modules/nf-core/modules/samtools/view/main.nf b/modules/nf-core/samtools/view/main.nf similarity index 60% rename from modules/nf-core/modules/samtools/view/main.nf rename to modules/nf-core/samtools/view/main.nf index 59ded5c..94da5d6 100644 --- a/modules/nf-core/modules/samtools/view/main.nf +++ b/modules/nf-core/samtools/view/main.nf @@ -10,31 +10,39 @@ process SAMTOOLS_VIEW { input: tuple val(meta), path(input), path(index) path fasta + path qname output: - tuple val(meta), path("*.bam") , emit: bam , optional: true - tuple val(meta), path("*.cram"), emit: cram, optional: true - path "versions.yml" , emit: versions + tuple val(meta), path("*.bam"), emit: bam, optional: true + tuple val(meta), path("*.cram"), emit: cram, optional: true + tuple val(meta), path("*.sam"), emit: sam, optional: true + tuple val(meta), path("*.bai"), emit: bai, optional: true + tuple val(meta), path("*.csi"), emit: csi, optional: true + tuple val(meta), path("*.crai"), emit: crai, optional: true + path "versions.yml", emit: versions when: task.ext.when == null || task.ext.when script: def args = task.ext.args ?: '' - def args2 = task.ext.args2 ?: '' def prefix = task.ext.prefix ?: "${meta.id}" - def reference = fasta ? "--reference ${fasta} -C" : "" - def file_type = input.getExtension() + def reference = fasta ? "--reference ${fasta}" : "" + def readnames = qname ? "--qname-file ${qname}": "" + def file_type = args.contains("--output-fmt sam") ? "sam" : + args.contains("--output-fmt bam") ? "bam" : + args.contains("--output-fmt cram") ? "cram" : + input.getExtension() if ("$input" == "${prefix}.${file_type}") error "Input and output names are the same, use \"task.ext.prefix\" to disambiguate!" """ samtools \\ view \\ --threads ${task.cpus-1} \\ ${reference} \\ + ${readnames} \\ $args \\ - $input \\ - $args2 \\ - > ${prefix}.${file_type} + -o ${prefix}.${file_type} \\ + $input cat <<-END_VERSIONS > versions.yml "${task.process}": diff --git a/modules/nf-core/modules/samtools/view/meta.yml b/modules/nf-core/samtools/view/meta.yml similarity index 64% rename from modules/nf-core/modules/samtools/view/meta.yml rename to modules/nf-core/samtools/view/meta.yml index a8b43ec..a52e4f8 100644 --- a/modules/nf-core/modules/samtools/view/meta.yml +++ b/modules/nf-core/samtools/view/meta.yml @@ -33,6 +33,10 @@ input: type: optional file description: Reference file the CRAM was created with pattern: "*.{fasta,fa}" + - qname: + type: file + description: Optional file with read names to output only select alignments + pattern: "*.{txt,list}" output: - meta: type: map @@ -41,12 +45,29 @@ output: e.g. [ id:'test', single_end:false ] - bam: type: file - description: filtered/converted BAM/SAM file - pattern: "*.{bam,sam}" + description: optional filtered/converted BAM file + pattern: "*.{bam}" - cram: type: file - description: filtered/converted CRAM file - pattern: "*.cram" + description: optional filtered/converted CRAM file + pattern: "*.{cram}" + - sam: + type: file + description: optional filtered/converted SAM file + pattern: "*.{sam}" + # bai, csi, and crai are created with `--write-index` + - 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: type: file description: File containing software versions @@ -55,3 +76,4 @@ authors: - "@drpatelh" - "@joseespinosa" - "@FriederikeHanssen" + - "@priyanka-surana" diff --git a/modules/nf-core/modules/untar/main.nf b/modules/nf-core/untar/main.nf similarity index 94% rename from modules/nf-core/modules/untar/main.nf rename to modules/nf-core/untar/main.nf index 007871b..71eea7b 100644 --- a/modules/nf-core/modules/untar/main.nf +++ b/modules/nf-core/untar/main.nf @@ -27,7 +27,7 @@ process UNTAR { ## 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 [[ \$(tar -tzf ${archive} | grep "/\$" | wc -l) -eq 1 ]]; then + if [[ \$(tar -tzf ${archive} | grep -o -P "^.*?\\/" | uniq | wc -l) -eq 1 ]]; then tar \\ -C output --strip-components 1 \\ -xzvf \\ diff --git a/modules/nf-core/modules/untar/meta.yml b/modules/nf-core/untar/meta.yml similarity index 100% rename from modules/nf-core/modules/untar/meta.yml rename to modules/nf-core/untar/meta.yml diff --git a/nextflow.config b/nextflow.config index 80fce40..efb5aff 100644 --- a/nextflow.config +++ b/nextflow.config @@ -21,7 +21,9 @@ params { // MultiQC options multiqc_config = null multiqc_title = null + multiqc_logo = null max_multiqc_email_size = '25.MB' + multiqc_methods_description = null // Boilerplate options outdir = null @@ -31,6 +33,7 @@ params { email_on_fail = null plaintext_email = false monochrome_logs = false + hook_url = null help = false validate_params = true show_hidden_params = false @@ -159,7 +162,6 @@ try { } - profiles { debug { process.beforeScript = 'echo $HOSTNAME' } conda { @@ -280,6 +282,7 @@ manifest { mainScript = 'main.nf' nextflowVersion = '!>=21.10.3' version = '1.0dev' + doi = '' } // Load modules.config for DSL2 module specific options diff --git a/nextflow_schema.json b/nextflow_schema.json index 4a9237d..f88443f 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -586,12 +586,30 @@ "fa_icon": "fas fa-palette", "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": { "type": "string", "description": "Custom config file to supply to MultiQC.", "fa_icon": "fas fa-cog", "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": { "type": "string", "description": "Directory to keep pipeline Nextflow logs and reports.", diff --git a/subworkflows/local/db_check.nf b/subworkflows/local/db_check.nf index 7b440c6..5d0c4eb 100644 --- a/subworkflows/local/db_check.nf +++ b/subworkflows/local/db_check.nf @@ -3,7 +3,7 @@ // 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 { take: diff --git a/subworkflows/local/input_check.nf b/subworkflows/local/input_check.nf index e8d5e7a..46baff2 100644 --- a/subworkflows/local/input_check.nf +++ b/subworkflows/local/input_check.nf @@ -2,8 +2,8 @@ // Check input samplesheet and get read channels // -include { EIDO_VALIDATE } from '../../modules/nf-core/modules/eido/validate/main' -include { EIDO_CONVERT } from '../../modules/nf-core/modules/eido/convert/main' +include { EIDO_VALIDATE } from '../../modules/nf-core/eido/validate/main' +include { EIDO_CONVERT } from '../../modules/nf-core/eido/convert/main' workflow INPUT_CHECK { take: diff --git a/subworkflows/local/longread_hostremoval.nf b/subworkflows/local/longread_hostremoval.nf index 7db020b..751f4e1 100644 --- a/subworkflows/local/longread_hostremoval.nf +++ b/subworkflows/local/longread_hostremoval.nf @@ -2,10 +2,10 @@ // Remove host reads via alignment and export off-target reads // -include { MINIMAP2_INDEX } from '../../modules/nf-core/modules/minimap2/index/main' -include { MINIMAP2_ALIGN } from '../../modules/nf-core/modules/minimap2/align/main' -include { SAMTOOLS_VIEW } from '../../modules/nf-core/modules/samtools/view/main' -include { SAMTOOLS_BAM2FQ } from '../../modules/nf-core/modules/samtools/bam2fq/main' +include { MINIMAP2_INDEX } from '../../modules/nf-core/minimap2/index/main' +include { MINIMAP2_ALIGN } from '../../modules/nf-core/minimap2/align/main' +include { SAMTOOLS_VIEW } from '../../modules/nf-core/samtools/view/main' +include { SAMTOOLS_BAM2FQ } from '../../modules/nf-core/samtools/bam2fq/main' workflow LONGREAD_HOSTREMOVAL { 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() ) SAMTOOLS_BAM2FQ ( SAMTOOLS_VIEW.out.bam, false ) diff --git a/subworkflows/local/longread_preprocessing.nf b/subworkflows/local/longread_preprocessing.nf index c04207e..ce537e8 100644 --- a/subworkflows/local/longread_preprocessing.nf +++ b/subworkflows/local/longread_preprocessing.nf @@ -2,9 +2,9 @@ // Process long raw reads with porechop // -include { FASTQC as FASTQC_PROCESSED } from '../../modules/nf-core/modules/fastqc/main' -include { PORECHOP } from '../../modules/nf-core/modules/porechop/main' -include { FILTLONG } from '../../modules/nf-core/modules/filtlong/main' +include { FASTQC as FASTQC_PROCESSED } from '../../modules/nf-core/fastqc/main' +include { PORECHOP } from '../../modules/nf-core/porechop/main' +include { FILTLONG } from '../../modules/nf-core/filtlong/main' workflow LONGREAD_PREPROCESSING { take: diff --git a/subworkflows/local/profiling.nf b/subworkflows/local/profiling.nf index c2ef508..11c4a72 100644 --- a/subworkflows/local/profiling.nf +++ b/subworkflows/local/profiling.nf @@ -2,15 +2,15 @@ // Run profiling // -include { MALT_RUN } from '../../modules/nf-core/modules/malt/run/main' -include { MEGAN_RMA2INFO as MEGAN_RMA2INFO_TSV } from '../../modules/nf-core/modules/megan/rma2info/main' -include { KRAKEN2_KRAKEN2 } from '../../modules/nf-core/modules/kraken2/kraken2/main' -include { CENTRIFUGE_CENTRIFUGE } from '../../modules/nf-core/modules/centrifuge/centrifuge/main' -include { CENTRIFUGE_KREPORT } from '../../modules/nf-core/modules/centrifuge/kreport/main' -include { METAPHLAN3_METAPHLAN3 } from '../../modules/nf-core/modules/metaphlan3/metaphlan3/main' -include { KAIJU_KAIJU } from '../../modules/nf-core/modules/kaiju/kaiju/main' -include { DIAMOND_BLASTX } from '../../modules/nf-core/modules/diamond/blastx/main' -include { MOTUS_PROFILE } from '../../modules/nf-core/modules/motus/profile/main' +include { MALT_RUN } from '../../modules/nf-core/malt/run/main' +include { MEGAN_RMA2INFO as MEGAN_RMA2INFO_TSV } from '../../modules/nf-core/megan/rma2info/main' +include { KRAKEN2_KRAKEN2 } from '../../modules/nf-core/kraken2/kraken2/main' +include { CENTRIFUGE_CENTRIFUGE } from '../../modules/nf-core/centrifuge/centrifuge/main' +include { CENTRIFUGE_KREPORT } from '../../modules/nf-core/centrifuge/kreport/main' +include { METAPHLAN3_METAPHLAN3 } from '../../modules/nf-core/metaphlan3/metaphlan3/main' +include { KAIJU_KAIJU } from '../../modules/nf-core/kaiju/kaiju/main' +include { DIAMOND_BLASTX } from '../../modules/nf-core/diamond/blastx/main' +include { MOTUS_PROFILE } from '../../modules/nf-core/motus/profile/main' workflow PROFILING { take: diff --git a/subworkflows/local/shortread_adapterremoval.nf b/subworkflows/local/shortread_adapterremoval.nf index e491423..a5a43fe 100644 --- a/subworkflows/local/shortread_adapterremoval.nf +++ b/subworkflows/local/shortread_adapterremoval.nf @@ -2,9 +2,9 @@ // Process short raw reads with AdapterRemoval // -include { ADAPTERREMOVAL as ADAPTERREMOVAL_SINGLE } from '../../modules/nf-core/modules/adapterremoval/main' -include { ADAPTERREMOVAL as ADAPTERREMOVAL_PAIRED } from '../../modules/nf-core/modules/adapterremoval/main' -include { CAT_FASTQ } from '../../modules/nf-core/modules/cat/fastq/main' +include { ADAPTERREMOVAL as ADAPTERREMOVAL_SINGLE } from '../../modules/nf-core/adapterremoval/main' +include { ADAPTERREMOVAL as ADAPTERREMOVAL_PAIRED } from '../../modules/nf-core/adapterremoval/main' +include { CAT_FASTQ } from '../../modules/nf-core/cat/fastq/main' workflow SHORTREAD_ADAPTERREMOVAL { diff --git a/subworkflows/local/shortread_complexityfiltering.nf b/subworkflows/local/shortread_complexityfiltering.nf index a34440d..844cd15 100644 --- a/subworkflows/local/shortread_complexityfiltering.nf +++ b/subworkflows/local/shortread_complexityfiltering.nf @@ -2,8 +2,8 @@ // Check input samplesheet and get read channels // -include { BBMAP_BBDUK } from '../../modules/nf-core/modules/bbmap/bbduk/main' -include { PRINSEQPLUSPLUS } from '../../modules/nf-core/modules/prinseqplusplus/main' +include { BBMAP_BBDUK } from '../../modules/nf-core/bbmap/bbduk/main' +include { PRINSEQPLUSPLUS } from '../../modules/nf-core/prinseqplusplus/main' workflow SHORTREAD_COMPLEXITYFILTERING { take: diff --git a/subworkflows/local/shortread_fastp.nf b/subworkflows/local/shortread_fastp.nf index 05e0f3d..d466041 100644 --- a/subworkflows/local/shortread_fastp.nf +++ b/subworkflows/local/shortread_fastp.nf @@ -2,8 +2,8 @@ // Process short raw reads with FastP // -include { FASTP as FASTP_SINGLE } from '../../modules/nf-core/modules/fastp/main' -include { FASTP as FASTP_PAIRED } 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/fastp/main' workflow SHORTREAD_FASTP { take: diff --git a/subworkflows/local/shortread_hostremoval.nf b/subworkflows/local/shortread_hostremoval.nf index c5f15c7..d181a34 100644 --- a/subworkflows/local/shortread_hostremoval.nf +++ b/subworkflows/local/shortread_hostremoval.nf @@ -2,8 +2,8 @@ // Remove host reads via alignment and export off-target reads // -include { BOWTIE2_BUILD } from '../../modules/nf-core/modules/bowtie2/build/main' -include { BOWTIE2_ALIGN } from '../../modules/nf-core/modules/bowtie2/align/main' +include { BOWTIE2_BUILD } from '../../modules/nf-core/bowtie2/build/main' +include { BOWTIE2_ALIGN } from '../../modules/nf-core/bowtie2/align/main' workflow SHORTREAD_HOSTREMOVAL { take: diff --git a/subworkflows/local/shortread_preprocessing.nf b/subworkflows/local/shortread_preprocessing.nf index 977a317..859c1d5 100644 --- a/subworkflows/local/shortread_preprocessing.nf +++ b/subworkflows/local/shortread_preprocessing.nf @@ -5,7 +5,7 @@ include { SHORTREAD_FASTP } from './shortread_fastp' include { SHORTREAD_ADAPTERREMOVAL } from './shortread_adapterremoval' -include { FASTQC as FASTQC_PROCESSED } from '../../modules/nf-core/modules/fastqc/main' +include { FASTQC as FASTQC_PROCESSED } from '../../modules/nf-core/fastqc/main' workflow SHORTREAD_PREPROCESSING { take: diff --git a/subworkflows/local/standardisation_profiles.nf b/subworkflows/local/standardisation_profiles.nf index 7a441ff..cbb0fab 100644 --- a/subworkflows/local/standardisation_profiles.nf +++ b/subworkflows/local/standardisation_profiles.nf @@ -2,11 +2,11 @@ // Standardise output files e.g. aggregation // -include { KAIJU_KAIJU2TABLE } from '../../modules/nf-core/modules/kaiju/kaiju2table/main' -include { KRAKENTOOLS_COMBINEKREPORTS } from '../../modules/nf-core/modules/krakentools/combinekreports/main' -include { KRAKENTOOLS_COMBINEKREPORTS as KRAKENTOOLS_COMBINEKREPORTS_CENTRIFUGE } from '../../modules/nf-core/modules/krakentools/combinekreports/main' -include { METAPHLAN3_MERGEMETAPHLANTABLES } from '../../modules/nf-core/modules/metaphlan3/mergemetaphlantables/main' -include { MOTUS_MERGE } from '../../modules/nf-core/modules/motus/merge/main' +include { KAIJU_KAIJU2TABLE } from '../../modules/nf-core/kaiju/kaiju2table/main' +include { KRAKENTOOLS_COMBINEKREPORTS } from '../../modules/nf-core/krakentools/combinekreports/main' +include { KRAKENTOOLS_COMBINEKREPORTS as KRAKENTOOLS_COMBINEKREPORTS_CENTRIFUGE } from '../../modules/nf-core/krakentools/combinekreports/main' +include { METAPHLAN3_MERGEMETAPHLANTABLES } from '../../modules/nf-core/metaphlan3/mergemetaphlantables/main' +include { MOTUS_MERGE } from '../../modules/nf-core/motus/merge/main' workflow STANDARDISATION_PROFILES { take: @@ -99,7 +99,7 @@ workflow STANDARDISATION_PROFILES { ch_versions = ch_versions.mix( KRAKENTOOLS_COMBINEKREPORTS.out.versions ) // MetaPhlAn3 - + ch_profiles_for_metaphlan3 = ch_input_profiles.metaphlan3 .map { [it[0]['db_name'], it[1]] } .groupTuple() diff --git a/subworkflows/local/visualization_krona.nf b/subworkflows/local/visualization_krona.nf index f06768a..7d8e4f0 100644 --- a/subworkflows/local/visualization_krona.nf +++ b/subworkflows/local/visualization_krona.nf @@ -2,13 +2,13 @@ // Create Krona visualizations // -include { MEGAN_RMA2INFO as MEGAN_RMA2INFO_KRONA } from '../../modules/nf-core/modules/megan/rma2info/main' -include { KAIJU_KAIJU2KRONA } from '../../modules/nf-core/modules/kaiju/kaiju2krona/main' -include { KRAKENTOOLS_KREPORT2KRONA } from '../../modules/nf-core/modules/krakentools/kreport2krona/main' +include { MEGAN_RMA2INFO as MEGAN_RMA2INFO_KRONA } from '../../modules/nf-core/megan/rma2info/main' +include { KAIJU_KAIJU2KRONA } from '../../modules/nf-core/kaiju/kaiju2krona/main' +include { KRAKENTOOLS_KREPORT2KRONA } from '../../modules/nf-core/krakentools/kreport2krona/main' include { KRONA_CLEANUP } from '../../modules/local/krona_cleanup' -include { KRONA_KTIMPORTTEXT } from '../../modules/nf-core/modules/krona/ktimporttext/main' -include { KRONA_KTIMPORTTAXONOMY } from '../../modules/nf-core/modules/krona/ktimporttaxonomy/main' -include { GUNZIP } from '../../modules/nf-core/modules/gunzip/main' +include { KRONA_KTIMPORTTEXT } from '../../modules/nf-core/krona/ktimporttext/main' +include { KRONA_KTIMPORTTAXONOMY } from '../../modules/nf-core/krona/ktimporttaxonomy/main' +include { GUNZIP } from '../../modules/nf-core/gunzip/main' workflow VISUALIZATION_KRONA { take: diff --git a/workflows/taxprofiler.nf b/workflows/taxprofiler.nf index 6f7becf..8b9edb7 100644 --- a/workflows/taxprofiler.nf +++ b/workflows/taxprofiler.nf @@ -48,7 +48,10 @@ if (params.run_malt && params.run_krona && !params.krona_taxonomy_directory) log ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ -ch_multiqc_config = params.multiqc_config ? file( params.multiqc_config, checkIfExists: true ) : file("$projectDir/assets/multiqc_config.yml", checkIfExists: true) +ch_multiqc_config = Channel.fromPath("$projectDir/assets/multiqc_config.yml", checkIfExists: true) +ch_multiqc_custom_config = params.multiqc_config ? Channel.fromPath( params.multiqc_config, checkIfExists: true ) : Channel.empty() +ch_multiqc_logo = params.multiqc_logo ? Channel.fromPath( params.multiqc_logo, checkIfExists: true ) : Channel.empty() +ch_multiqc_custom_methods_description = params.multiqc_methods_description ? file(params.multiqc_methods_description, checkIfExists: true) : file("$projectDir/assets/methods_description_template.yml", checkIfExists: true) /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -80,11 +83,10 @@ include { STANDARDISATION_PROFILES } from '../subworkflows/local/standardis // // MODULE: Installed directly from nf-core/modules // -include { FASTQC } from '../modules/nf-core/modules/fastqc/main' -include { MULTIQC } from '../modules/nf-core/modules/multiqc/main' -include { CUSTOM_DUMPSOFTWAREVERSIONS } from '../modules/nf-core/modules/custom/dumpsoftwareversions/main' - -include { CAT_FASTQ } from '../modules/nf-core/modules/cat/fastq/main' +include { FASTQC } from '../modules/nf-core/fastqc/main' +include { MULTIQC } from '../modules/nf-core/multiqc/main' +include { CUSTOM_DUMPSOFTWAREVERSIONS } from '../modules/nf-core/custom/dumpsoftwareversions/main' +include { CAT_FASTQ } from '../modules/nf-core/cat/fastq/main' /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -245,9 +247,12 @@ workflow TAXPROFILER { workflow_summary = WorkflowTaxprofiler.paramsSummaryMultiqc(workflow, summary_params) ch_workflow_summary = Channel.value(workflow_summary) - ch_multiqc_files = Channel.empty() + methods_description = WorkflowTaxprofiler.methodsDescriptionText(workflow, ch_multiqc_custom_methods_description) + ch_methods_description = Channel.value(methods_description) + ch_multiqc_files = Channel.empty() ch_multiqc_files = ch_multiqc_files.mix(ch_workflow_summary.collectFile(name: 'workflow_summary_mqc.yaml')) + ch_multiqc_files = ch_multiqc_files.mix(ch_methods_description.collectFile(name: 'methods_description_mqc.yaml')) 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([])) @@ -276,8 +281,9 @@ workflow TAXPROFILER { // TODO create multiQC module for metaphlan MULTIQC ( ch_multiqc_files.collect(), - ch_multiqc_config, - ch_multiqc_logo + ch_multiqc_config.collect().ifEmpty([]), + ch_multiqc_custom_config.collect().ifEmpty([]), + ch_multiqc_logo.collect().ifEmpty([]) ) multiqc_report = MULTIQC.out.report.toList() ch_versions = ch_versions.mix(MULTIQC.out.versions) @@ -294,6 +300,9 @@ workflow.onComplete { NfcoreTemplate.email(workflow, params, summary_params, projectDir, log, multiqc_report) } NfcoreTemplate.summary(workflow, params, log) + if (params.hook_url) { + NfcoreTemplate.adaptivecard(workflow, params, summary_params, projectDir, log) + } } /*