From e71774c504a8d2afeb356b2e7ce532bb1d2f78f4 Mon Sep 17 00:00:00 2001 From: paulzierep Date: Mon, 19 Oct 2026 21:00:58 +0200 Subject: [PATCH 01/17] Expose standalone multi-binning refinement controls and depth outputs --- .../multi-sample-binning/AGENTIC-CHANGES.md | 11 ++ .../multi-sample-binning/CHANGELOG.md | 6 + .../microbiome/multi-sample-binning/README.md | 5 + .../multi-sample-binning-tests.yml | 120 ++++++++++++------ .../multi-sample-binning.ga | 81 +++++++++++- 5 files changed, 181 insertions(+), 42 deletions(-) create mode 100644 workflows/microbiome/multi-sample-binning/AGENTIC-CHANGES.md diff --git a/workflows/microbiome/multi-sample-binning/AGENTIC-CHANGES.md b/workflows/microbiome/multi-sample-binning/AGENTIC-CHANGES.md new file mode 100644 index 0000000000..50983701c0 --- /dev/null +++ b/workflows/microbiome/multi-sample-binning/AGENTIC-CHANGES.md @@ -0,0 +1,11 @@ +# Standalone parameter exposure follow-up + +This branch carries the changes used by the Foundry MAGs parent into the standalone workflow. + +- Expose Binette minimum completeness and contamination weight. +- Do not invent an environment parameter for SemiBin co mode: the wrapper does not expose one. +- Publish coverage depth matrices as a testable output. +- Preserve the existing refiner selector and original standalone topology. +- Parent refiner reconciliation remains outside this standalone workflow. + +Status: development branch; runtime validation and submission metadata updates pending. diff --git a/workflows/microbiome/multi-sample-binning/CHANGELOG.md b/workflows/microbiome/multi-sample-binning/CHANGELOG.md index c1cbce4108..b4a22a6bd6 100644 --- a/workflows/microbiome/multi-sample-binning/CHANGELOG.md +++ b/workflows/microbiome/multi-sample-binning/CHANGELOG.md @@ -1,5 +1,11 @@ # Changelog +## [Unreleased] + +- Expose Binette minimum completeness and contamination weight while preserving the standalone defaults (40 and 2). +- Publish coverage depth matrices for inspection and regression testing. +- Document the absence of an environment selector in SemiBin co mode. + ## [1.0] - 2026-09-23 - First release diff --git a/workflows/microbiome/multi-sample-binning/README.md b/workflows/microbiome/multi-sample-binning/README.md index e37b32891d..58754320c5 100644 --- a/workflows/microbiome/multi-sample-binning/README.md +++ b/workflows/microbiome/multi-sample-binning/README.md @@ -24,9 +24,14 @@ A dedicated [learning pathway](https://galaxyproject.github.io/training-material - **Read length (CONCOCT)** (default: 100): the mean read length, required by CONCOCT to calculate contig coverage from the mapped reads. It can be estimated with FastQC. - **Bin refinement tool**: `DAS Tool`, `Binette` or `Both`. - **CheckM2 Database**: the CheckM2 reference database Binette uses to assess bin quality. +- **Minimum MAG completeness percentage** (default: 40): the minimum bin completeness used by Binette; does not filter DAS Tool output. +- **Contamination weight (Binette)** (default: 2): the contamination penalty used in Binette's scoring. + +SemiBin uses co-binning mode in this workflow. Its Galaxy wrapper does not expose a pretrained-model environment selector in that mode. ## Outputs +- **Coverage depth matrices**: one JGI depth table per assembly, containing coverage from all original samples. - **CONCOCT bins**, **MaxBin2 bins**, **MetaBAT2 bins**, **SemiBin bins** and **COMEBin bins** (if COMEBin was run): one list of bins per assembly. - **DAS Tool bins**, **DAS Tool summary** and **DAS Tool contigs2bin report** (if DAS Tool was run): the refined bins, a per-bin summary (completeness and redundancy based on single-copy genes) and the contig-to-bin assignments. - **Binette bins**, **Binette input bin quality reports** and **Binette final bin quality report** (if Binette was run): the refined bins, the CheckM2 quality of the bins from each binner, and the CheckM2 quality of the final bins. diff --git a/workflows/microbiome/multi-sample-binning/multi-sample-binning-tests.yml b/workflows/microbiome/multi-sample-binning/multi-sample-binning-tests.yml index 914364319e..e49cb668c8 100644 --- a/workflows/microbiome/multi-sample-binning/multi-sample-binning-tests.yml +++ b/workflows/microbiome/multi-sample-binning/multi-sample-binning-tests.yml @@ -5,7 +5,6 @@ collection_type: list:paired elements: - class: Collection - type: paired identifier: Mock1 elements: - class: File @@ -14,8 +13,8 @@ - class: File identifier: reverse location: https://zenodo.org/records/22982485/files/Mock1_R2.fastq.gz + collection_type: paired - class: Collection - type: paired identifier: Mock2 elements: - class: File @@ -24,8 +23,8 @@ - class: File identifier: reverse location: https://zenodo.org/records/22982485/files/Mock2_R2.fastq.gz + collection_type: paired - class: Collection - type: paired identifier: Mock3 elements: - class: File @@ -34,8 +33,8 @@ - class: File identifier: reverse location: https://zenodo.org/records/22982485/files/Mock3_R2.fastq.gz + collection_type: paired - class: Collection - type: paired identifier: Mock4 elements: - class: File @@ -44,8 +43,8 @@ - class: File identifier: reverse location: https://zenodo.org/records/22982485/files/Mock4_R2.fastq.gz + collection_type: paired - class: Collection - type: paired identifier: Mock5 elements: - class: File @@ -54,6 +53,7 @@ - class: File identifier: reverse location: https://zenodo.org/records/22982485/files/Mock5_R2.fastq.gz + collection_type: paired Assemblies: class: Collection collection_type: list @@ -77,6 +77,8 @@ Read length (CONCOCT): 100 Bin refinement tool: Both CheckM2 Database: 1.0.2 + Minimum MAG completeness percentage: 40 + Contamination weight (Binette): 2 outputs: SemiBin bins: element_tests: @@ -86,6 +88,7 @@ Mock5: class: Collection min: 1 + class: Collection MetaBAT2 bins: element_tests: Mock4: @@ -94,6 +97,7 @@ Mock5: class: Collection min: 1 + class: Collection MaxBin2 bins: element_tests: Mock4: @@ -102,6 +106,7 @@ Mock5: class: Collection min: 1 + class: Collection CONCOCT bins: element_tests: Mock4: @@ -110,6 +115,7 @@ Mock5: class: Collection min: 1 + class: Collection COMEBin bins: element_tests: Mock4: @@ -118,6 +124,7 @@ Mock5: class: Collection min: 1 + class: Collection Binette bins: element_tests: Mock4: @@ -126,6 +133,7 @@ Mock5: class: Collection min: 1 + class: Collection DAS Tool bins: element_tests: Mock4: @@ -134,6 +142,7 @@ Mock5: class: Collection min: 1 + class: Collection Binette input bin quality reports: element_tests: Mock4: @@ -141,58 +150,95 @@ elements: input_bins_1.bin_table_0: asserts: - - has_text: - text: completeness - - has_n_lines: - min: 2 + - has_text: + text: completeness + - has_n_lines: + min: 2 Mock5: class: Collection elements: input_bins_1.bin_table_0: asserts: - - has_text: - text: completeness - - has_n_lines: - min: 2 + - has_text: + text: completeness + - has_n_lines: + min: 2 + class: Collection Binette final bin quality report: element_tests: Mock4: asserts: - - has_text: - text: completeness - - has_n_lines: - min: 2 + - has_text: + text: completeness + - has_n_lines: + min: 2 Mock5: asserts: - - has_text: - text: completeness - - has_n_lines: - min: 2 + - has_text: + text: completeness + - has_n_lines: + min: 2 + class: Collection DAS Tool summary: element_tests: Mock4: asserts: - - has_text: - text: SCG_completeness - - has_n_lines: - min: 2 + - has_text: + text: SCG_completeness + - has_n_lines: + min: 2 Mock5: asserts: - - has_text: - text: SCG_completeness - - has_n_lines: - min: 2 + - has_text: + text: SCG_completeness + - has_n_lines: + min: 2 + class: Collection DAS Tool contigs2bin report: element_tests: Mock4: asserts: - - has_n_lines: - min: 100 - - has_line_matching: - expression: '^\S+\t\S+$' + - has_n_lines: + min: 100 + - has_line_matching: + expression: ^\S+\t\S+$ + Mock5: + asserts: + - has_n_lines: + min: 100 + - has_line_matching: + expression: ^\S+\t\S+$ + class: Collection + Coverage depth matrices: + class: Collection + element_tests: + Mock1: + asserts: + - that: has_text + text: contigName + - that: has_n_columns + n: 13 + Mock2: + asserts: + - that: has_text + text: contigName + - that: has_n_columns + n: 13 + Mock3: + asserts: + - that: has_text + text: contigName + - that: has_n_columns + n: 13 + Mock4: + asserts: + - that: has_text + text: contigName + - that: has_n_columns + n: 13 Mock5: asserts: - - has_n_lines: - min: 100 - - has_line_matching: - expression: '^\S+\t\S+$' + - that: has_text + text: contigName + - that: has_n_columns + n: 13 diff --git a/workflows/microbiome/multi-sample-binning/multi-sample-binning.ga b/workflows/microbiome/multi-sample-binning/multi-sample-binning.ga index f1e5f90f5c..caae166ec6 100644 --- a/workflows/microbiome/multi-sample-binning/multi-sample-binning.ga +++ b/workflows/microbiome/multi-sample-binning/multi-sample-binning.ga @@ -744,7 +744,13 @@ "type": "tool", "uuid": "99fd59a2-f822-4cf5-9be4-5bdf2d55c43d", "when": null, - "workflow_outputs": [] + "workflow_outputs": [ + { + "label": "Coverage depth matrices", + "output_name": "outputDepth", + "uuid": "cd6f16f1-f3c9-4afa-90d2-f8e8a5cc0937" + } + ] }, "18": { "annotation": "", @@ -1525,6 +1531,14 @@ "when": { "id": 9, "output_name": "output_param_boolean" + }, + "min_completeness": { + "id": 33, + "output_name": "output" + }, + "contamination_weight": { + "id": 34, + "output_name": "output" } }, "inputs": [ @@ -1583,7 +1597,7 @@ "owner": "iuc", "tool_shed": "toolshed.g2.bx.psu.edu" }, - "tool_state": "{\"contamination_weight\": \"2\", \"contig2bin_tables\": {\"__class__\": \"ConnectedValue\"}, \"contigs\": {\"__class__\": \"ConnectedValue\"}, \"database_type\": {\"is_select\": \"cached\", \"__current_case__\": 1, \"datamanager\": {\"__class__\": \"ConnectedValue\"}}, \"min_completeness\": \"40\", \"proteins\": null, \"__page__\": 0, \"__rerun_remap_job_id__\": null}", + "tool_state": "{\"contamination_weight\": {\"__class__\": \"ConnectedValue\"}, \"contig2bin_tables\": {\"__class__\": \"ConnectedValue\"}, \"contigs\": {\"__class__\": \"ConnectedValue\"}, \"database_type\": {\"is_select\": \"cached\", \"__current_case__\": 1, \"datamanager\": {\"__class__\": \"ConnectedValue\"}}, \"min_completeness\": {\"__class__\": \"ConnectedValue\"}, \"proteins\": null, \"__page__\": 0, \"__rerun_remap_job_id__\": null}", "tool_uuid": null, "tool_version": "1.2.1+galaxy0", "type": "tool", @@ -1606,9 +1620,66 @@ "uuid": "a10382ed-1d4b-45ad-89b5-79cd5041ec66" } ] + }, + "33": { + "annotation": "Minimum bin completeness percentage for Binette refinement.", + "content_id": null, + "errors": null, + "id": 33, + "input_connections": {}, + "inputs": [ + { + "description": "Minimum MAG completeness percentage for bin refinement (binette) and dereplication (drep)", + "name": "Minimum MAG completeness percentage" + } + ], + "label": "Minimum MAG completeness percentage", + "name": "Input parameter", + "outputs": [], + "position": { + "left": 5730.37010398056, + "top": 1191.0939624823973 + }, + "tool_id": null, + "tool_state": "{\"default\": 40, \"validators\": [{\"min\": null, \"max\": null, \"negate\": false, \"type\": \"in_range\"}], \"parameter_type\": \"integer\", \"optional\": false}", + "tool_version": null, + "type": "parameter_input", + "uuid": "5bda60c5-a966-4b1c-8612-b4233809617f", + "when": null, + "workflow_outputs": [] + }, + "34": { + "annotation": "This weight is used for the scoring the bins. A low weight favor complete bins over low contaminated bins (--contamination_weight)", + "content_id": null, + "errors": null, + "id": 34, + "input_connections": {}, + "inputs": [ + { + "description": "This weight is used for the scoring the bins. A low weight favor complete bins over low contaminated bins (--contamination_weight)", + "name": "Contamination weight (Binette)" + } + ], + "label": "Contamination weight (Binette)", + "name": "Input parameter", + "outputs": [], + "position": { + "left": 5721.867017043314, + "top": 1347.9338055273925 + }, + "tool_id": null, + "tool_state": "{\"default\": 2, \"validators\": [{\"min\": null, \"max\": null, \"negate\": false, \"type\": \"in_range\"}], \"parameter_type\": \"integer\", \"optional\": false}", + "tool_version": null, + "type": "parameter_input", + "uuid": "e34d00f4-d290-4217-a1c1-120ff5f37ee9", + "when": null, + "workflow_outputs": [] } }, - "tags": [], + "tags": [ + "agentic-foundry-mags" + ], "uuid": "9b674961-0b3c-4f8f-97e6-f225e018198f", - "version": 1 -} \ No newline at end of file + "version": 1, + "readme": "# Multi-sample binning workflow\n\nThis workflow uses paired-end reads and their corresponding assemblies, generated by any assembler, to produce metagenomic bins using multiple binning tools. Each binner uses a different approach to identify and group contigs into bins.\n\nIn contrast to single-sample binning, the multi-sample approach uses information across multiple samples during binning. Reads from each sample are mapped against the assemblies from all samples to generate cross-sample coverage information. This provides the binners with additional information that can help distinguish contigs based on their abundance patterns across samples.\n\nIn this workflow, each sample's reads are mapped against each sample's assembly, and each assembly is subsequently binned separately using the cross-sample coverage information. This differs from multi-sample approaches that concatenate assemblies and perform a joint binning step before splitting the resulting bins by sample.\n\nThe multi-sample approach is more computationally demanding than single-sample binning because it requires additional read mappings and processes a larger amount of data. When the reads of N samples are mapped against N assemblies, the number of mapping jobs, the number of BAM files and the number of intermediate read copies all scale as N², so storage requirements grow quickly with the number of samples. However, the resulting cross-sample coverage information can improve binning, particularly when organisms show different relative abundances across samples. For a large number of samples, or for samples from unrelated environments where cross-sample coverage adds little information, single-sample binning is the cheaper choice.\n\nAfter binning is complete, the workflow uses one or both of the available refinement tools to combine and refine the results from the individual binners, with the goal of generating higher-quality bins.\n\nThis workflow is the binning section, with the added multi-sample logic, of the [MAGs generation workflow](../mags-building/), extracted so that MAGs generation and other workflows can reuse it instead of maintaining their own copy (check the [FAIRyMAGs repository](https://github.com/usegalaxy-eu/FAIRyMAGs) for the complete workflow suite and its capabilities).\nA dedicated [learning pathway](https://galaxyproject.github.io/training-material/learning-pathways/mags.html) provides detailed guidance on MAG generation in Galaxy, including the binning tools used here.\n\n## Inputs\n\n- **Paired-end reads**: a `list:paired` collection with one element per sample.\n - Reads should be quality-trimmed and host-removed, e.g. with the IWC [short-read quality control](../../read-preprocessing/short-read-qc-trimming/) and [host contamination removal](../host-contamination-removal/host-contamination-removal-short-reads/) workflows.\n - The sample names are used as coverage columns for the binners.\n- **Assemblies**: a `list` collection of assemblies from any assembler (e.g. MEGAHIT or metaSPAdes).\n - Every sample's reads are mapped against every assembly, so the element identifiers of the two collections do not need to match. The number of assemblies does not need to equal the number of read samples either: a single co-assembly binned with the coverage of all samples is a valid input.\n- **Run COMEBin?** (default: yes): COMEBin is a deep-learning binner that often improves the results, but it is the most time- and resource-consuming step of the workflow.\n- **Read length (CONCOCT)** (default: 100): the mean read length, required by CONCOCT to calculate contig coverage from the mapped reads. It can be estimated with FastQC.\n- **Bin refinement tool**: `DAS Tool`, `Binette` or `Both`.\n- **CheckM2 Database**: the CheckM2 reference database Binette uses to assess bin quality.\n- **Minimum MAG completeness percentage** (default: 40): the minimum bin completeness used by Binette; does not filter DAS Tool output.\n- **Contamination weight (Binette)** (default: 2): the contamination penalty used in Binette's scoring.\n\nSemiBin uses co-binning mode in this workflow. Its Galaxy wrapper does not expose a pretrained-model environment selector in that mode.\n\n## Outputs\n\n- **Coverage depth matrices**: one JGI depth table per assembly, containing coverage from all original samples.\n- **CONCOCT bins**, **MaxBin2 bins**, **MetaBAT2 bins**, **SemiBin bins** and **COMEBin bins** (if COMEBin was run): one list of bins per assembly.\n- **DAS Tool bins**, **DAS Tool summary** and **DAS Tool contigs2bin report** (if DAS Tool was run): the refined bins, a per-bin summary (completeness and redundancy based on single-copy genes) and the contig-to-bin assignments.\n- **Binette bins**, **Binette input bin quality reports** and **Binette final bin quality report** (if Binette was run): the refined bins, the CheckM2 quality of the bins from each binner, and the CheckM2 quality of the final bins.\n\n## Why use this workflow\n\nThis workflow provides a standardized and modular workflow for metagenomic binning that can be integrated into larger metagenomic analysis workflows. Its main purpose is to separate the binning step from other parts of MAG analysis, making complex workflows easier to understand, maintain, and adapt.\n\nUsing binning as an independent workflow provides better control over the inputs, binning parameters, and outputs. It also allows users to reuse the same binning strategy in different analysis pipelines without having to include unnecessary upstream or downstream steps. This modular design is particularly useful when the generated bins are intended for a specific downstream analysis, such as taxonomic classification, genome annotation, functional analysis, or benchmarking.\n\nIn contrast, the IWC Metagenome-Assembled Genomes (MAGs) generation workflow (https://iwc.galaxyproject.org/workflow/mags-building-main/) is designed as a comprehensive end-to-end solution. It performs metagenome assembly and multi-tool binning of paired short reads and optional long reads, followed by dereplication and analysis of MAG quality and abundance. This makes it well suited for users who want to generate and evaluate MAGs without requiring a specialized downstream workflow.\n\nThis binning workflow should therefore be preferred when binning needs to be incorporated as one component of a larger or more specialized analysis. It reduces workflow complexity, improves the overview of individual analysis steps, and makes it easier to modify or replace downstream analyses independently.\n\nIt should also be noted that this workflow can restrict Upstream. For example, it is possible to restrict the workflow so that the User can only use one of the two refinement tools or can restrict it to only one specific refinement tool.\n\n## Workflow logic\n\n- Preprocess reads and assemblies for binning.\n- Generate cross-sample coverage information:\n \n - Map the reads from each sample against the assemblies from all samples.\n\n- Perform binning using multiple binners:\n\n - CONCOCT\n - MaxBin2\n - MetaBAT2\n - SemiBin\n - COMEBin\n\n- Refine the resulting bins using one or both refinement tools:\n\n - DAS Tool\n - Binette\n\n## Funding\n\nThis workflow was developed as part of the [**FAIRyMAGs** project](https://elixir-europe.org/how-we-work/scientific-programme/science/bfsp/fairymags), funded as a commissioned service of the [**Biodiversity, Food Security and Pathogens (BFSP) ELIXIR Scientific Programme 2024–2028**](https://elixir-europe.org/how-we-work/scientific-programme/science/bfsp).\n\nThe project was also supported by the **European Galaxy Server**, funded by the German Federal Ministry of Education and Research (BMBF; 031 A538A de.NBI-RBC) and the **Ministry of Science, Research and the Arts Baden-Württemberg (MWK)** within the framework of **LIBIS/de.NBI Freiburg**.\n" +} From 15513f0ea93eeb09ca07cab1461f7782ec7d630a Mon Sep 17 00:00:00 2001 From: paulzierep Date: Mon, 19 Oct 2026 22:34:03 +0200 Subject: [PATCH 02/17] Derive CONCOCT read length and expose default-on binner controls --- .../multi-sample-binning/AGENTIC-CHANGES.md | 5 +- .../multi-sample-binning/CHANGELOG.md | 3 + .../microbiome/multi-sample-binning/README.md | 7 +- .../multi-sample-binning-tests.yml | 1 - .../multi-sample-binning.ga | 852 +++++++++++++++--- 5 files changed, 739 insertions(+), 129 deletions(-) diff --git a/workflows/microbiome/multi-sample-binning/AGENTIC-CHANGES.md b/workflows/microbiome/multi-sample-binning/AGENTIC-CHANGES.md index 50983701c0..4f97bf56ac 100644 --- a/workflows/microbiome/multi-sample-binning/AGENTIC-CHANGES.md +++ b/workflows/microbiome/multi-sample-binning/AGENTIC-CHANGES.md @@ -5,7 +5,10 @@ This branch carries the changes used by the Foundry MAGs parent into the standal - Expose Binette minimum completeness and contamination weight. - Do not invent an environment parameter for SemiBin co mode: the wrapper does not expose one. - Publish coverage depth matrices as a testable output. -- Preserve the existing refiner selector and original standalone topology. +- Derive CONCOCT read length from both mates using a read-count-weighted mean. +- Enable all five binners by default; each has an independent run toggle. +- Enclose the tools in a native frame with a Markdown explanation. +- Preserve the existing refiner selector. - Parent refiner reconciliation remains outside this standalone workflow. Status: development branch; runtime validation and submission metadata updates pending. diff --git a/workflows/microbiome/multi-sample-binning/CHANGELOG.md b/workflows/microbiome/multi-sample-binning/CHANGELOG.md index b4a22a6bd6..8b08d3bfa3 100644 --- a/workflows/microbiome/multi-sample-binning/CHANGELOG.md +++ b/workflows/microbiome/multi-sample-binning/CHANGELOG.md @@ -2,6 +2,9 @@ ## [Unreleased] +- Replace manual CONCOCT read length with automatic estimation from both mates of all original samples. +- Make all five binners independently optional and enabled by default, with editor-compatible optional-output bridges. +- Enclose workflow tools in a native frame with Markdown documentation. - Expose Binette minimum completeness and contamination weight while preserving the standalone defaults (40 and 2). - Publish coverage depth matrices for inspection and regression testing. - Document the absence of an environment selector in SemiBin co mode. diff --git a/workflows/microbiome/multi-sample-binning/README.md b/workflows/microbiome/multi-sample-binning/README.md index 58754320c5..9619b8e958 100644 --- a/workflows/microbiome/multi-sample-binning/README.md +++ b/workflows/microbiome/multi-sample-binning/README.md @@ -21,7 +21,6 @@ A dedicated [learning pathway](https://galaxyproject.github.io/training-material - **Assemblies**: a `list` collection of assemblies from any assembler (e.g. MEGAHIT or metaSPAdes). - Every sample's reads are mapped against every assembly, so the element identifiers of the two collections do not need to match. The number of assemblies does not need to equal the number of read samples either: a single co-assembly binned with the coverage of all samples is a valid input. - **Run COMEBin?** (default: yes): COMEBin is a deep-learning binner that often improves the results, but it is the most time- and resource-consuming step of the workflow. -- **Read length (CONCOCT)** (default: 100): the mean read length, required by CONCOCT to calculate contig coverage from the mapped reads. It can be estimated with FastQC. - **Bin refinement tool**: `DAS Tool`, `Binette` or `Both`. - **CheckM2 Database**: the CheckM2 reference database Binette uses to assess bin quality. - **Minimum MAG completeness percentage** (default: 40): the minimum bin completeness used by Binette; does not filter DAS Tool output. @@ -29,6 +28,12 @@ A dedicated [learning pathway](https://galaxyproject.github.io/training-material SemiBin uses co-binning mode in this workflow. Its Galaxy wrapper does not expose a pretrained-model environment selector in that mode. +## Automatic read length and binner selection + +CONCOCT read length is derived automatically using SeqKit statistics from both mates of every input sample. The workflow sums sequence lengths and read counts, divides total bases by total reads, and rounds to the nearest integer. This is a read-count-weighted mean, not an unweighted average of sample means. Multi coverage uses all original per-sample reads. No manual read-length input is required. + +**Run COMEBin?**, **Run SemiBin?**, **Run CONCOCT?**, **Run MetaBAT2?**, and **Run MaxBin2?** independently enable each binner; all default to **yes**. Keep at least one binner enabled. Disabled binners contribute empty candidate tables rather than blocking the selected refiner. Raw binner outputs are available only when that binner runs. + ## Outputs - **Coverage depth matrices**: one JGI depth table per assembly, containing coverage from all original samples. diff --git a/workflows/microbiome/multi-sample-binning/multi-sample-binning-tests.yml b/workflows/microbiome/multi-sample-binning/multi-sample-binning-tests.yml index e49cb668c8..728adb1a37 100644 --- a/workflows/microbiome/multi-sample-binning/multi-sample-binning-tests.yml +++ b/workflows/microbiome/multi-sample-binning/multi-sample-binning-tests.yml @@ -74,7 +74,6 @@ identifier: Mock5 location: https://zenodo.org/records/22982485/files/Mock5.fasta Run COMEBin?: true - Read length (CONCOCT): 100 Bin refinement tool: Both CheckM2 Database: 1.0.2 Minimum MAG completeness percentage: 40 diff --git a/workflows/microbiome/multi-sample-binning/multi-sample-binning.ga b/workflows/microbiome/multi-sample-binning/multi-sample-binning.ga index caae166ec6..6849481831 100644 --- a/workflows/microbiome/multi-sample-binning/multi-sample-binning.ga +++ b/workflows/microbiome/multi-sample-binning/multi-sample-binning.ga @@ -1,7 +1,95 @@ { "a_galaxy_workflow": "true", "annotation": "This workflow performs multi-sample binning of metagenomic assemblies with CONCOCT, MaxBin2, MetaBAT2, SemiBin and optionally COMEBin, using cross-sample read coverage, and refines the bins with DAS Tool and/or Binette", - "comments": [], + "comments": [ + { + "id": 0, + "type": "markdown", + "color": "blue", + "position": [ + 100, + 165 + ], + "size": [ + 8370, + 260 + ], + "data": { + "text": "## 1. Multi-sample binning\n\nEmbedded subworkflow. Inputs at left; dependencies flow left to right.\n\nNamed outputs connect to the parent without expanding individual steps." + } + }, + { + "id": 1, + "type": "frame", + "color": "blue", + "position": [ + 70, + 130 + ], + "size": [ + 8430, + 3600 + ], + "data": { + "title": "Multi-sample binning" + }, + "child_steps": [ + 0, + 1, + 2, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50 + ], + "child_comments": [ + 0 + ] + } + ], "creator": [ { "class": "Person", @@ -43,8 +131,8 @@ "name": "Input dataset collection", "outputs": [], "position": { - "left": 0, - "top": 830 + "left": 100, + "top": 1970 }, "tool_id": null, "tool_state": "{\"optional\": false, \"tag\": null, \"collection_type\": \"list:paired\", \"fields\": null, \"column_definitions\": null}", @@ -70,8 +158,8 @@ "name": "Input dataset collection", "outputs": [], "position": { - "left": 600, - "top": 620 + "left": 100, + "top": 470 }, "tool_id": null, "tool_state": "{\"optional\": false, \"tag\": null, \"collection_type\": \"list\", \"fields\": null, \"column_definitions\": null}", @@ -97,44 +185,17 @@ "name": "Input parameter", "outputs": [], "position": { - "left": 1850, - "top": 480 + "left": 100, + "top": 2270 }, "tool_id": null, - "tool_state": "{\"default\": true, \"validators\": [], \"parameter_type\": \"boolean\", \"optional\": false}", + "tool_state": "{\"parameter_type\": \"boolean\", \"optional\": false, \"default\": true, \"validators\": []}", "tool_version": null, "type": "parameter_input", "uuid": "875c3765-81ca-42a2-a8af-9eea17a90ac8", "when": null, "workflow_outputs": [] }, - "3": { - "annotation": "CONCOCT requires the read length for coverage. Best use fastQC to estimate the mean value.", - "content_id": null, - "errors": null, - "id": 3, - "input_connections": {}, - "inputs": [ - { - "description": "CONCOCT requires the read length for coverage. Best use fastQC to estimate the mean value.", - "name": "Read length (CONCOCT)" - } - ], - "label": "Read length (CONCOCT)", - "name": "Input parameter", - "outputs": [], - "position": { - "left": 2350, - "top": 550 - }, - "tool_id": null, - "tool_state": "{\"default\": 100, \"validators\": [{\"min\": 1, \"max\": null, \"negate\": false, \"type\": \"in_range\"}], \"parameter_type\": \"integer\", \"optional\": false}", - "tool_version": null, - "type": "parameter_input", - "uuid": "438b8963-3fb6-498a-8131-bd3ac3679945", - "when": null, - "workflow_outputs": [] - }, "4": { "annotation": "Choose between DAS Tool and/or Binette to run as a refinement step.\n\n", "content_id": null, @@ -151,8 +212,8 @@ "name": "Input parameter", "outputs": [], "position": { - "left": 3300, - "top": 480 + "left": 100, + "top": 770 }, "tool_id": null, "tool_state": "{\"multiple\": false, \"validators\": [], \"restrictions\": [\"DAS Tool\", \"Binette\", \"Both\"], \"parameter_type\": \"text\", \"optional\": false}", @@ -178,8 +239,8 @@ "name": "Input parameter", "outputs": [], "position": { - "left": 4200, - "top": 1470 + "left": 100, + "top": 1070 }, "tool_id": null, "tool_state": "{\"multiple\": false, \"validators\": [], \"restrictOnConnections\": true, \"parameter_type\": \"text\", \"optional\": false}", @@ -214,8 +275,8 @@ } ], "position": { - "left": 300, - "top": 830 + "left": 600, + "top": 1370 }, "post_job_actions": {}, "tool_id": "__UNZIP_COLLECTION__", @@ -252,8 +313,8 @@ } ], "position": { - "left": 1850, - "top": 280 + "left": 600, + "top": 470 }, "post_job_actions": {}, "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/concoct_cut_up_fasta/concoct_cut_up_fasta/1.1.0+galaxy3", @@ -297,8 +358,8 @@ } ], "position": { - "left": 3650, - "top": 0 + "left": 600, + "top": 1070 }, "post_job_actions": {}, "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/map_param_value/map_param_value/0.2.0", @@ -342,8 +403,8 @@ } ], "position": { - "left": 3650, - "top": 640 + "left": 600, + "top": 770 }, "post_job_actions": {}, "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/map_param_value/map_param_value/0.2.0", @@ -386,8 +447,8 @@ } ], "position": { - "left": 600, - "top": 830 + "left": 1100, + "top": 1070 }, "post_job_actions": {}, "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/seqtk/seqtk_mergepe/1.5+galaxy0", @@ -434,8 +495,8 @@ } ], "position": { - "left": 900, - "top": 810 + "left": 1600, + "top": 770 }, "post_job_actions": {}, "tool_id": "__CROSS_PRODUCT_NESTED__", @@ -480,8 +541,8 @@ } ], "position": { - "left": 1250, - "top": 670 + "left": 2100, + "top": 770 }, "post_job_actions": {}, "tool_id": "toolshed.g2.bx.psu.edu/repos/devteam/fastq_paired_end_deinterlacer/fastq_paired_end_deinterlacer/1.1.5+galaxy2", @@ -524,8 +585,8 @@ } ], "position": { - "left": 1550, - "top": 670 + "left": 2600, + "top": 770 }, "post_job_actions": {}, "tool_id": "__ZIP_COLLECTION__", @@ -571,8 +632,8 @@ } ], "position": { - "left": 1850, - "top": 840 + "left": 3100, + "top": 470 }, "post_job_actions": {}, "tool_id": "toolshed.g2.bx.psu.edu/repos/devteam/bowtie2/bowtie2/2.5.5+galaxy0", @@ -620,8 +681,8 @@ } ], "position": { - "left": 2350, - "top": 280 + "left": 3600, + "top": 770 }, "post_job_actions": {}, "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/concoct_coverage_table/concoct_coverage_table/1.1.0+galaxy3", @@ -668,8 +729,8 @@ } ], "position": { - "left": 2350, - "top": 690 + "left": 3600, + "top": 470 }, "post_job_actions": { "TagDatasetActionbins": { @@ -727,8 +788,8 @@ } ], "position": { - "left": 2350, - "top": 990 + "left": 3600, + "top": 1070 }, "post_job_actions": {}, "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/metabat2_jgi_summarize_bam_contig_depths/metabat2_jgi_summarize_bam_contig_depths/2.18.23+galaxy0", @@ -748,7 +809,7 @@ { "label": "Coverage depth matrices", "output_name": "outputDepth", - "uuid": "cd6f16f1-f3c9-4afa-90d2-f8e8a5cc0937" + "uuid": "131fdbc7-1992-4fcc-bb81-4352a81ae0e8" } ] }, @@ -765,6 +826,10 @@ "mode|input_fasta": { "id": 1, "output_name": "output" + }, + "when": { + "id": 39, + "output_name": "output" } }, "inputs": [ @@ -782,8 +847,8 @@ } ], "position": { - "left": 2350, - "top": 1160 + "left": 3600, + "top": 1370 }, "post_job_actions": { "TagDatasetActionoutput_bins": { @@ -806,7 +871,7 @@ "tool_version": "2.1.0+galaxy1", "type": "tool", "uuid": "c1d1b3e7-87d9-4bc2-9624-ed7ff1441738", - "when": null, + "when": "$(inputs.when)", "workflow_outputs": [ { "label": "SemiBin bins", @@ -822,8 +887,8 @@ "id": 19, "input_connections": { "advanced|read_length": { - "id": 3, - "output_name": "output" + "id": 38, + "output_name": "integer_param" }, "composition_file": { "id": 7, @@ -832,6 +897,10 @@ "coverage_file": { "id": 15, "output_name": "output" + }, + "when": { + "id": 40, + "output_name": "output" } }, "inputs": [ @@ -857,8 +926,8 @@ } ], "position": { - "left": 2700, - "top": 290 + "left": 4100, + "top": 470 }, "post_job_actions": {}, "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/concoct/concoct/1.1.0+galaxy3", @@ -873,7 +942,7 @@ "tool_version": "1.1.0+galaxy3", "type": "tool", "uuid": "ae4f83c9-3700-43a8-ab9a-0614c20d91e4", - "when": null, + "when": "$(inputs.when)", "workflow_outputs": [] }, "20": { @@ -897,8 +966,8 @@ } ], "position": { - "left": 3000, - "top": 680 + "left": 4100, + "top": 1670 }, "post_job_actions": {}, "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/pick_value/pick_value/0.2.0", @@ -929,6 +998,10 @@ "inFile": { "id": 1, "output_name": "output" + }, + "when": { + "id": 41, + "output_name": "output" } }, "inputs": [], @@ -941,8 +1014,8 @@ } ], "position": { - "left": 2700, - "top": 730 + "left": 4100, + "top": 1070 }, "post_job_actions": { "TagDatasetActionbins": { @@ -965,7 +1038,7 @@ "tool_version": "2.18.23+galaxy0", "type": "tool", "uuid": "876acc0d-bb05-42ad-ac28-5da06d57b99f", - "when": null, + "when": "$(inputs.when)", "workflow_outputs": [ { "label": "MetaBAT2 bins", @@ -987,6 +1060,10 @@ "contig": { "id": 1, "output_name": "output" + }, + "when": { + "id": 42, + "output_name": "output" } }, "inputs": [], @@ -1011,8 +1088,8 @@ } ], "position": { - "left": 2700, - "top": 1040 + "left": 4100, + "top": 770 }, "post_job_actions": { "TagDatasetActionbins": { @@ -1035,7 +1112,7 @@ "tool_version": "2.2.7+galaxy6", "type": "tool", "uuid": "c2eca2a4-c8bc-4ea5-a7d7-acbc05643cf9", - "when": null, + "when": "$(inputs.when)", "workflow_outputs": [ { "label": "MaxBin2 bins", @@ -1051,8 +1128,8 @@ "id": 23, "input_connections": { "inputs": { - "id": 18, - "output_name": "output_bins" + "id": 45, + "output_name": "data_param" } }, "inputs": [], @@ -1065,8 +1142,8 @@ } ], "position": { - "left": 3650, - "top": 1230 + "left": 4600, + "top": 1670 }, "post_job_actions": {}, "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/fasta_to_contig2bin/Fasta_to_Contig2Bin/1.1.7+galaxy1", @@ -1091,8 +1168,12 @@ "id": 24, "input_connections": { "cutup_clustering_result": { - "id": 19, - "output_name": "output_clustering" + "id": 43, + "output_name": "data_param" + }, + "when": { + "id": 40, + "output_name": "output" } }, "inputs": [], @@ -1105,8 +1186,8 @@ } ], "position": { - "left": 3000, - "top": 280 + "left": 5100, + "top": 470 }, "post_job_actions": {}, "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/concoct_merge_cut_up_clustering/concoct_merge_cut_up_clustering/1.1.0+galaxy3", @@ -1121,7 +1202,7 @@ "tool_version": "1.1.0+galaxy3", "type": "tool", "uuid": "0467972e-1650-48bb-9cc2-6e7c37af1e6f", - "when": null, + "when": "$(inputs.when)", "workflow_outputs": [] }, "25": { @@ -1145,8 +1226,8 @@ } ], "position": { - "left": 3650, - "top": 450 + "left": 4600, + "top": 1370 }, "post_job_actions": {}, "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/fasta_to_contig2bin/Fasta_to_Contig2Bin/1.1.7+galaxy1", @@ -1171,8 +1252,8 @@ "id": 26, "input_connections": { "inputs": { - "id": 21, - "output_name": "bins" + "id": 46, + "output_name": "data_param" } }, "inputs": [], @@ -1185,8 +1266,8 @@ } ], "position": { - "left": 3650, - "top": 850 + "left": 5100, + "top": 1070 }, "post_job_actions": {}, "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/fasta_to_contig2bin/Fasta_to_Contig2Bin/1.1.7+galaxy1", @@ -1211,8 +1292,8 @@ "id": 27, "input_connections": { "inputs": { - "id": 22, - "output_name": "bins" + "id": 47, + "output_name": "data_param" } }, "inputs": [], @@ -1225,8 +1306,8 @@ } ], "position": { - "left": 3650, - "top": 1040 + "left": 5100, + "top": 770 }, "post_job_actions": {}, "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/fasta_to_contig2bin/Fasta_to_Contig2Bin/1.1.7+galaxy1", @@ -1251,12 +1332,16 @@ "id": 28, "input_connections": { "cluster_file": { - "id": 24, - "output_name": "output" + "id": 44, + "output_name": "data_param" }, "fasta_file": { "id": 1, "output_name": "output" + }, + "when": { + "id": 40, + "output_name": "output" } }, "inputs": [], @@ -1269,8 +1354,8 @@ } ], "position": { - "left": 3300, - "top": 260 + "left": 6100, + "top": 470 }, "post_job_actions": { "TagDatasetActionbins": { @@ -1293,7 +1378,7 @@ "tool_version": "1.1.0+galaxy3", "type": "tool", "uuid": "0dc8f9d0-9b83-4fd0-b028-ad07d95b60d5", - "when": null, + "when": "$(inputs.when)", "workflow_outputs": [ { "label": "CONCOCT bins", @@ -1309,8 +1394,8 @@ "id": 29, "input_connections": { "inputs": { - "id": 28, - "output_name": "bins" + "id": 48, + "output_name": "data_param" } }, "inputs": [], @@ -1323,8 +1408,8 @@ } ], "position": { - "left": 3650, - "top": 260 + "left": 7100, + "top": 470 }, "post_job_actions": {}, "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/fasta_to_contig2bin/Fasta_to_Contig2Bin/1.1.7+galaxy1", @@ -1399,8 +1484,8 @@ } ], "position": { - "left": 4200, - "top": 210 + "left": 7600, + "top": 770 }, "post_job_actions": { "TagDatasetActionbins": { @@ -1497,8 +1582,8 @@ } ], "position": { - "left": 4200, - "top": 960 + "left": 7600, + "top": 470 }, "post_job_actions": {}, "tool_id": "__BUILD_LIST__", @@ -1533,11 +1618,11 @@ "output_name": "output_param_boolean" }, "min_completeness": { - "id": 33, + "id": 49, "output_name": "output" }, "contamination_weight": { - "id": 34, + "id": 50, "output_name": "output" } }, @@ -1564,8 +1649,8 @@ } ], "position": { - "left": 4550, - "top": 940 + "left": 8100, + "top": 470 }, "post_job_actions": { "TagDatasetActionbins": { @@ -1622,10 +1707,525 @@ ] }, "33": { + "annotation": "", + "content_id": "__UNZIP_COLLECTION__", + "errors": null, + "id": 33, + "input_connections": { + "input": { + "id": 0, + "output_name": "output" + } + }, + "inputs": [], + "label": "Unzip reads for automatic read-length estimation", + "name": "Unzip collection", + "outputs": [ + { + "name": "forward", + "type": "input" + }, + { + "name": "reverse", + "type": "input" + } + ], + "position": { + "left": 600, + "top": 1670 + }, + "post_job_actions": {}, + "tool_id": "__UNZIP_COLLECTION__", + "tool_state": "{\"input\": {\"__class__\": \"ConnectedValue\"}, \"__page__\": 0, \"__rerun_remap_job_id__\": null}", + "tool_uuid": null, + "tool_version": "1.0.0", + "type": "tool", + "uuid": "ec3c8493-c175-462d-a760-9d00c6ff6c69", + "when": null, + "workflow_outputs": [] + }, + "34": { + "type": "tool", + "name": "SeqKit statistics", + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/seqkit_stats/seqkit_stats/2.8.1+galaxy0", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/seqkit_stats/seqkit_stats/2.8.1+galaxy0", + "tool_version": "2.8.1+galaxy0", + "tool_state": "{\"input\": {\"__class__\": \"ConnectedValue\"}, \"all\": false, \"basename\": true, \"skip_err\": false, \"tabular\": true}", + "input_connections": { + "input": { + "id": 33, + "output_name": "forward" + } + }, + "inputs": [], + "outputs": [], + "annotation": "", + "position": { + "left": 1100, + "top": 470 + }, + "id": 34, + "uuid": "7e279609-78fb-4228-bde2-64b430f05a4b", + "label": "Read-length statistics — forward", + "workflow_outputs": [] + }, + "35": { + "type": "tool", + "name": "SeqKit statistics", + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/seqkit_stats/seqkit_stats/2.8.1+galaxy0", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/seqkit_stats/seqkit_stats/2.8.1+galaxy0", + "tool_version": "2.8.1+galaxy0", + "tool_state": "{\"input\": {\"__class__\": \"ConnectedValue\"}, \"all\": false, \"basename\": true, \"skip_err\": false, \"tabular\": true}", + "input_connections": { + "input": { + "id": 33, + "output_name": "reverse" + } + }, + "inputs": [], + "outputs": [], + "annotation": "", + "position": { + "left": 1100, + "top": 770 + }, + "id": 35, + "uuid": "f4127452-4189-431b-8a92-303f9669b0c5", + "label": "Read-length statistics — reverse", + "workflow_outputs": [] + }, + "36": { + "type": "tool", + "name": "Concatenate datasets", + "tool_id": "toolshed.g2.bx.psu.edu/repos/bgruening/text_processing/tp_cat/0.1.0", + "content_id": "toolshed.g2.bx.psu.edu/repos/bgruening/text_processing/tp_cat/0.1.0", + "tool_version": "0.1.0", + "tool_state": "{\"inputs\": [{\"__class__\": \"ConnectedValue\"}], \"queries\": [{\"__index__\": 0, \"inputs2\": [{\"__class__\": \"ConnectedValue\"}]}]}", + "input_connections": { + "inputs": { + "id": 34, + "output_name": "output" + }, + "queries_0|inputs2": { + "id": 35, + "output_name": "output" + } + }, + "inputs": [], + "outputs": [], + "annotation": "", + "position": { + "left": 1600, + "top": 470 + }, + "id": 36, + "uuid": "93ee4832-f528-498c-8590-8c95c882bce7", + "label": "Combine read-length statistics", + "workflow_outputs": [] + }, + "37": { + "type": "tool", + "name": "Text reformatting", + "tool_id": "toolshed.g2.bx.psu.edu/repos/bgruening/text_processing/tp_awk_tool/9.11+galaxy0", + "content_id": "toolshed.g2.bx.psu.edu/repos/bgruening/text_processing/tp_awk_tool/9.11+galaxy0", + "tool_version": "9.11+galaxy0", + "tool_state": "{\"infile\": {\"__class__\": \"ConnectedValue\"}, \"code\": \"BEGIN{FS=\\\"\\t\\\"} $4 ~ /^[0-9]+$/ {n += $4; total += $5} END{if(n<1) exit 1; print int(total/n+0.5)}\", \"variables\": []}", + "input_connections": { + "infile": { + "id": 36, + "output_name": "out_file1" + } + }, + "inputs": [], + "outputs": [], + "annotation": "", + "position": { + "left": 2100, + "top": 470 + }, + "id": 37, + "uuid": "a8cacc18-37f2-4367-84c6-82da65a2e262", + "label": "Compute read-count-weighted mean length (both mates)", + "workflow_outputs": [] + }, + "38": { + "type": "tool", + "name": "Parse parameter value", + "tool_id": "param_value_from_file", + "content_id": "param_value_from_file", + "tool_version": "0.1.0", + "tool_state": "{\"input1\": {\"__class__\": \"ConnectedValue\"}, \"param_type\": \"integer\", \"remove_newlines\": true}", + "input_connections": { + "input1": { + "id": 37, + "output_name": "outfile" + } + }, + "inputs": [], + "outputs": [], + "annotation": "Rounded read-count-weighted mean across both mates and all input samples; selected/group-merged reads for Single, original samples for Multi.", + "position": { + "left": 2600, + "top": 470 + }, + "id": 38, + "uuid": "15437693-6eaf-4b7f-a3d9-ee0c0916787b", + "label": "Automatic read length (CONCOCT)", + "workflow_outputs": [] + }, + "39": { + "annotation": "Enable SemiBin binning. All binners are enabled by default.", + "content_id": null, + "errors": null, + "id": 39, + "input_connections": {}, + "inputs": [ + { + "description": "CONCOCT requires the read length for coverage. Best use fastQC to estimate the mean value.", + "name": "Read length (CONCOCT)" + } + ], + "label": "Run SemiBin?", + "name": "Input parameter", + "outputs": [], + "position": { + "left": 100, + "top": 3470 + }, + "tool_id": null, + "tool_state": "{\"parameter_type\": \"boolean\", \"optional\": false, \"default\": true, \"validators\": []}", + "tool_version": null, + "type": "parameter_input", + "uuid": "74f1e9bd-4da6-4192-befd-7cbd7c631abd", + "when": null, + "workflow_outputs": [] + }, + "40": { + "annotation": "Enable CONCOCT binning. All binners are enabled by default.", + "content_id": null, + "errors": null, + "id": 40, + "input_connections": {}, + "inputs": [ + { + "description": "CONCOCT requires the read length for coverage. Best use fastQC to estimate the mean value.", + "name": "Read length (CONCOCT)" + } + ], + "label": "Run CONCOCT?", + "name": "Input parameter", + "outputs": [], + "position": { + "left": 100, + "top": 2570 + }, + "tool_id": null, + "tool_state": "{\"parameter_type\": \"boolean\", \"optional\": false, \"default\": true, \"validators\": []}", + "tool_version": null, + "type": "parameter_input", + "uuid": "d98d7796-08cb-4dba-82bc-dacdd65a602a", + "when": null, + "workflow_outputs": [] + }, + "41": { + "annotation": "Enable MetaBAT2 binning. All binners are enabled by default.", + "content_id": null, + "errors": null, + "id": 41, + "input_connections": {}, + "inputs": [ + { + "description": "CONCOCT requires the read length for coverage. Best use fastQC to estimate the mean value.", + "name": "Read length (CONCOCT)" + } + ], + "label": "Run MetaBAT2?", + "name": "Input parameter", + "outputs": [], + "position": { + "left": 100, + "top": 3170 + }, + "tool_id": null, + "tool_state": "{\"parameter_type\": \"boolean\", \"optional\": false, \"default\": true, \"validators\": []}", + "tool_version": null, + "type": "parameter_input", + "uuid": "1b0313d7-ff9d-4e33-9718-2b4033ee3ab7", + "when": null, + "workflow_outputs": [] + }, + "42": { + "annotation": "Enable MaxBin2 binning. All binners are enabled by default.", + "content_id": null, + "errors": null, + "id": 42, + "input_connections": {}, + "inputs": [ + { + "description": "CONCOCT requires the read length for coverage. Best use fastQC to estimate the mean value.", + "name": "Read length (CONCOCT)" + } + ], + "label": "Run MaxBin2?", + "name": "Input parameter", + "outputs": [], + "position": { + "left": 100, + "top": 2870 + }, + "tool_id": null, + "tool_state": "{\"parameter_type\": \"boolean\", \"optional\": false, \"default\": true, \"validators\": []}", + "tool_version": null, + "type": "parameter_input", + "uuid": "b6e29622-ab1c-449e-8a0d-efa2090e3fe8", + "when": null, + "workflow_outputs": [] + }, + "43": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/pick_value/pick_value/0.2.0", + "errors": null, + "id": 43, + "input_connections": { + "style_cond|type_cond|pick_from_0|value": { + "id": 19, + "output_name": "output_clustering" + } + }, + "inputs": [], + "label": "Optional CONCOCT intermediate bridge — cutup_clustering_result", + "name": "Pick parameter value", + "outputs": [ + { + "name": "data_param", + "type": "input" + } + ], + "position": { + "left": 4600, + "top": 470 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/pick_value/pick_value/0.2.0", + "tool_shed_repository": { + "changeset_revision": "b19e21af9c52", + "name": "pick_value", + "owner": "iuc", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"style_cond\": {\"pick_style\": \"first\", \"__current_case__\": 0, \"type_cond\": {\"param_type\": \"data\", \"__current_case__\": 4, \"pick_from\": [{\"__index__\": 0, \"value\": {\"__class__\": \"ConnectedValue\"}}]}}, \"__page__\": 0, \"__rerun_remap_job_id__\": null}", + "tool_uuid": null, + "tool_version": "0.2.0", + "type": "tool", + "uuid": "8ad60c12-2d20-48be-a5c7-ae099af557c4", + "when": null, + "workflow_outputs": [] + }, + "44": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/pick_value/pick_value/0.2.0", + "errors": null, + "id": 44, + "input_connections": { + "style_cond|type_cond|pick_from_0|value": { + "id": 24, + "output_name": "output" + } + }, + "inputs": [], + "label": "Optional CONCOCT intermediate bridge — cluster_file", + "name": "Pick parameter value", + "outputs": [ + { + "name": "data_param", + "type": "input" + } + ], + "position": { + "left": 5600, + "top": 470 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/pick_value/pick_value/0.2.0", + "tool_shed_repository": { + "changeset_revision": "b19e21af9c52", + "name": "pick_value", + "owner": "iuc", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"style_cond\": {\"pick_style\": \"first\", \"__current_case__\": 0, \"type_cond\": {\"param_type\": \"data\", \"__current_case__\": 4, \"pick_from\": [{\"__index__\": 0, \"value\": {\"__class__\": \"ConnectedValue\"}}]}}, \"__page__\": 0, \"__rerun_remap_job_id__\": null}", + "tool_uuid": null, + "tool_version": "0.2.0", + "type": "tool", + "uuid": "d935dc9e-3f8d-4088-b1ca-8aab078965aa", + "when": null, + "workflow_outputs": [] + }, + "45": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/pick_value/pick_value/0.2.0", + "errors": null, + "id": 45, + "input_connections": { + "style_cond|type_cond|pick_from_0|value": { + "id": 18, + "output_name": "output_bins" + } + }, + "inputs": [], + "label": "Optional bins bridge — SemiBin", + "name": "Pick parameter value", + "outputs": [ + { + "name": "data_param", + "type": "input" + } + ], + "position": { + "left": 4100, + "top": 1370 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/pick_value/pick_value/0.2.0", + "tool_shed_repository": { + "changeset_revision": "b19e21af9c52", + "name": "pick_value", + "owner": "iuc", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"style_cond\": {\"pick_style\": \"first\", \"__current_case__\": 0, \"type_cond\": {\"param_type\": \"data\", \"__current_case__\": 4, \"pick_from\": [{\"__index__\": 0, \"value\": {\"__class__\": \"ConnectedValue\"}}]}}, \"__page__\": 0, \"__rerun_remap_job_id__\": null}", + "tool_uuid": null, + "tool_version": "0.2.0", + "type": "tool", + "uuid": "2536bd4f-59df-4e2b-b5e9-b8326cc3d9cf", + "when": null, + "workflow_outputs": [] + }, + "46": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/pick_value/pick_value/0.2.0", + "errors": null, + "id": 46, + "input_connections": { + "style_cond|type_cond|pick_from_0|value": { + "id": 21, + "output_name": "bins" + } + }, + "inputs": [], + "label": "Optional bins bridge — MetaBAT2", + "name": "Pick parameter value", + "outputs": [ + { + "name": "data_param", + "type": "input" + } + ], + "position": { + "left": 4600, + "top": 1070 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/pick_value/pick_value/0.2.0", + "tool_shed_repository": { + "changeset_revision": "b19e21af9c52", + "name": "pick_value", + "owner": "iuc", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"style_cond\": {\"pick_style\": \"first\", \"__current_case__\": 0, \"type_cond\": {\"param_type\": \"data\", \"__current_case__\": 4, \"pick_from\": [{\"__index__\": 0, \"value\": {\"__class__\": \"ConnectedValue\"}}]}}, \"__page__\": 0, \"__rerun_remap_job_id__\": null}", + "tool_uuid": null, + "tool_version": "0.2.0", + "type": "tool", + "uuid": "50a7dd5c-0ca6-4fef-8e1e-0f7c1c5c2ec5", + "when": null, + "workflow_outputs": [] + }, + "47": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/pick_value/pick_value/0.2.0", + "errors": null, + "id": 47, + "input_connections": { + "style_cond|type_cond|pick_from_0|value": { + "id": 22, + "output_name": "bins" + } + }, + "inputs": [], + "label": "Optional bins bridge — MaxBin2", + "name": "Pick parameter value", + "outputs": [ + { + "name": "data_param", + "type": "input" + } + ], + "position": { + "left": 4600, + "top": 770 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/pick_value/pick_value/0.2.0", + "tool_shed_repository": { + "changeset_revision": "b19e21af9c52", + "name": "pick_value", + "owner": "iuc", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"style_cond\": {\"pick_style\": \"first\", \"__current_case__\": 0, \"type_cond\": {\"param_type\": \"data\", \"__current_case__\": 4, \"pick_from\": [{\"__index__\": 0, \"value\": {\"__class__\": \"ConnectedValue\"}}]}}, \"__page__\": 0, \"__rerun_remap_job_id__\": null}", + "tool_uuid": null, + "tool_version": "0.2.0", + "type": "tool", + "uuid": "2aea1104-eac4-4024-92a2-121507a1eef8", + "when": null, + "workflow_outputs": [] + }, + "48": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/pick_value/pick_value/0.2.0", + "errors": null, + "id": 48, + "input_connections": { + "style_cond|type_cond|pick_from_0|value": { + "id": 28, + "output_name": "bins" + } + }, + "inputs": [], + "label": "Optional bins bridge — CONCOCT: Extract a fasta file", + "name": "Pick parameter value", + "outputs": [ + { + "name": "data_param", + "type": "input" + } + ], + "position": { + "left": 6600, + "top": 470 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/pick_value/pick_value/0.2.0", + "tool_shed_repository": { + "changeset_revision": "b19e21af9c52", + "name": "pick_value", + "owner": "iuc", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"style_cond\": {\"pick_style\": \"first\", \"__current_case__\": 0, \"type_cond\": {\"param_type\": \"data\", \"__current_case__\": 4, \"pick_from\": [{\"__index__\": 0, \"value\": {\"__class__\": \"ConnectedValue\"}}]}}, \"__page__\": 0, \"__rerun_remap_job_id__\": null}", + "tool_uuid": null, + "tool_version": "0.2.0", + "type": "tool", + "uuid": "40356f8f-3bf9-4a93-a639-f9a8fa8e5cf2", + "when": null, + "workflow_outputs": [] + }, + "49": { "annotation": "Minimum bin completeness percentage for Binette refinement.", "content_id": null, "errors": null, - "id": 33, + "id": 49, "input_connections": {}, "inputs": [ { @@ -1637,22 +2237,22 @@ "name": "Input parameter", "outputs": [], "position": { - "left": 5730.37010398056, - "top": 1191.0939624823973 + "left": 100, + "top": 1670 }, "tool_id": null, "tool_state": "{\"default\": 40, \"validators\": [{\"min\": null, \"max\": null, \"negate\": false, \"type\": \"in_range\"}], \"parameter_type\": \"integer\", \"optional\": false}", "tool_version": null, "type": "parameter_input", - "uuid": "5bda60c5-a966-4b1c-8612-b4233809617f", + "uuid": "bb6970c2-a90e-4e7c-9956-712bb57b8fd2", "when": null, "workflow_outputs": [] }, - "34": { + "50": { "annotation": "This weight is used for the scoring the bins. A low weight favor complete bins over low contaminated bins (--contamination_weight)", "content_id": null, "errors": null, - "id": 34, + "id": 50, "input_connections": {}, "inputs": [ { @@ -1664,14 +2264,14 @@ "name": "Input parameter", "outputs": [], "position": { - "left": 5721.867017043314, - "top": 1347.9338055273925 + "left": 100, + "top": 1370 }, "tool_id": null, "tool_state": "{\"default\": 2, \"validators\": [{\"min\": null, \"max\": null, \"negate\": false, \"type\": \"in_range\"}], \"parameter_type\": \"integer\", \"optional\": false}", "tool_version": null, "type": "parameter_input", - "uuid": "e34d00f4-d290-4217-a1c1-120ff5f37ee9", + "uuid": "cc7e7b6a-c6c3-402a-bf36-362369856db9", "when": null, "workflow_outputs": [] } @@ -1681,5 +2281,5 @@ ], "uuid": "9b674961-0b3c-4f8f-97e6-f225e018198f", "version": 1, - "readme": "# Multi-sample binning workflow\n\nThis workflow uses paired-end reads and their corresponding assemblies, generated by any assembler, to produce metagenomic bins using multiple binning tools. Each binner uses a different approach to identify and group contigs into bins.\n\nIn contrast to single-sample binning, the multi-sample approach uses information across multiple samples during binning. Reads from each sample are mapped against the assemblies from all samples to generate cross-sample coverage information. This provides the binners with additional information that can help distinguish contigs based on their abundance patterns across samples.\n\nIn this workflow, each sample's reads are mapped against each sample's assembly, and each assembly is subsequently binned separately using the cross-sample coverage information. This differs from multi-sample approaches that concatenate assemblies and perform a joint binning step before splitting the resulting bins by sample.\n\nThe multi-sample approach is more computationally demanding than single-sample binning because it requires additional read mappings and processes a larger amount of data. When the reads of N samples are mapped against N assemblies, the number of mapping jobs, the number of BAM files and the number of intermediate read copies all scale as N², so storage requirements grow quickly with the number of samples. However, the resulting cross-sample coverage information can improve binning, particularly when organisms show different relative abundances across samples. For a large number of samples, or for samples from unrelated environments where cross-sample coverage adds little information, single-sample binning is the cheaper choice.\n\nAfter binning is complete, the workflow uses one or both of the available refinement tools to combine and refine the results from the individual binners, with the goal of generating higher-quality bins.\n\nThis workflow is the binning section, with the added multi-sample logic, of the [MAGs generation workflow](../mags-building/), extracted so that MAGs generation and other workflows can reuse it instead of maintaining their own copy (check the [FAIRyMAGs repository](https://github.com/usegalaxy-eu/FAIRyMAGs) for the complete workflow suite and its capabilities).\nA dedicated [learning pathway](https://galaxyproject.github.io/training-material/learning-pathways/mags.html) provides detailed guidance on MAG generation in Galaxy, including the binning tools used here.\n\n## Inputs\n\n- **Paired-end reads**: a `list:paired` collection with one element per sample.\n - Reads should be quality-trimmed and host-removed, e.g. with the IWC [short-read quality control](../../read-preprocessing/short-read-qc-trimming/) and [host contamination removal](../host-contamination-removal/host-contamination-removal-short-reads/) workflows.\n - The sample names are used as coverage columns for the binners.\n- **Assemblies**: a `list` collection of assemblies from any assembler (e.g. MEGAHIT or metaSPAdes).\n - Every sample's reads are mapped against every assembly, so the element identifiers of the two collections do not need to match. The number of assemblies does not need to equal the number of read samples either: a single co-assembly binned with the coverage of all samples is a valid input.\n- **Run COMEBin?** (default: yes): COMEBin is a deep-learning binner that often improves the results, but it is the most time- and resource-consuming step of the workflow.\n- **Read length (CONCOCT)** (default: 100): the mean read length, required by CONCOCT to calculate contig coverage from the mapped reads. It can be estimated with FastQC.\n- **Bin refinement tool**: `DAS Tool`, `Binette` or `Both`.\n- **CheckM2 Database**: the CheckM2 reference database Binette uses to assess bin quality.\n- **Minimum MAG completeness percentage** (default: 40): the minimum bin completeness used by Binette; does not filter DAS Tool output.\n- **Contamination weight (Binette)** (default: 2): the contamination penalty used in Binette's scoring.\n\nSemiBin uses co-binning mode in this workflow. Its Galaxy wrapper does not expose a pretrained-model environment selector in that mode.\n\n## Outputs\n\n- **Coverage depth matrices**: one JGI depth table per assembly, containing coverage from all original samples.\n- **CONCOCT bins**, **MaxBin2 bins**, **MetaBAT2 bins**, **SemiBin bins** and **COMEBin bins** (if COMEBin was run): one list of bins per assembly.\n- **DAS Tool bins**, **DAS Tool summary** and **DAS Tool contigs2bin report** (if DAS Tool was run): the refined bins, a per-bin summary (completeness and redundancy based on single-copy genes) and the contig-to-bin assignments.\n- **Binette bins**, **Binette input bin quality reports** and **Binette final bin quality report** (if Binette was run): the refined bins, the CheckM2 quality of the bins from each binner, and the CheckM2 quality of the final bins.\n\n## Why use this workflow\n\nThis workflow provides a standardized and modular workflow for metagenomic binning that can be integrated into larger metagenomic analysis workflows. Its main purpose is to separate the binning step from other parts of MAG analysis, making complex workflows easier to understand, maintain, and adapt.\n\nUsing binning as an independent workflow provides better control over the inputs, binning parameters, and outputs. It also allows users to reuse the same binning strategy in different analysis pipelines without having to include unnecessary upstream or downstream steps. This modular design is particularly useful when the generated bins are intended for a specific downstream analysis, such as taxonomic classification, genome annotation, functional analysis, or benchmarking.\n\nIn contrast, the IWC Metagenome-Assembled Genomes (MAGs) generation workflow (https://iwc.galaxyproject.org/workflow/mags-building-main/) is designed as a comprehensive end-to-end solution. It performs metagenome assembly and multi-tool binning of paired short reads and optional long reads, followed by dereplication and analysis of MAG quality and abundance. This makes it well suited for users who want to generate and evaluate MAGs without requiring a specialized downstream workflow.\n\nThis binning workflow should therefore be preferred when binning needs to be incorporated as one component of a larger or more specialized analysis. It reduces workflow complexity, improves the overview of individual analysis steps, and makes it easier to modify or replace downstream analyses independently.\n\nIt should also be noted that this workflow can restrict Upstream. For example, it is possible to restrict the workflow so that the User can only use one of the two refinement tools or can restrict it to only one specific refinement tool.\n\n## Workflow logic\n\n- Preprocess reads and assemblies for binning.\n- Generate cross-sample coverage information:\n \n - Map the reads from each sample against the assemblies from all samples.\n\n- Perform binning using multiple binners:\n\n - CONCOCT\n - MaxBin2\n - MetaBAT2\n - SemiBin\n - COMEBin\n\n- Refine the resulting bins using one or both refinement tools:\n\n - DAS Tool\n - Binette\n\n## Funding\n\nThis workflow was developed as part of the [**FAIRyMAGs** project](https://elixir-europe.org/how-we-work/scientific-programme/science/bfsp/fairymags), funded as a commissioned service of the [**Biodiversity, Food Security and Pathogens (BFSP) ELIXIR Scientific Programme 2024–2028**](https://elixir-europe.org/how-we-work/scientific-programme/science/bfsp).\n\nThe project was also supported by the **European Galaxy Server**, funded by the German Federal Ministry of Education and Research (BMBF; 031 A538A de.NBI-RBC) and the **Ministry of Science, Research and the Arts Baden-Württemberg (MWK)** within the framework of **LIBIS/de.NBI Freiburg**.\n" + "readme": "# Multi-sample binning workflow\n\nThis workflow uses paired-end reads and their corresponding assemblies, generated by any assembler, to produce metagenomic bins using multiple binning tools. Each binner uses a different approach to identify and group contigs into bins.\n\nIn contrast to single-sample binning, the multi-sample approach uses information across multiple samples during binning. Reads from each sample are mapped against the assemblies from all samples to generate cross-sample coverage information. This provides the binners with additional information that can help distinguish contigs based on their abundance patterns across samples.\n\nIn this workflow, each sample's reads are mapped against each sample's assembly, and each assembly is subsequently binned separately using the cross-sample coverage information. This differs from multi-sample approaches that concatenate assemblies and perform a joint binning step before splitting the resulting bins by sample.\n\nThe multi-sample approach is more computationally demanding than single-sample binning because it requires additional read mappings and processes a larger amount of data. When the reads of N samples are mapped against N assemblies, the number of mapping jobs, the number of BAM files and the number of intermediate read copies all scale as N², so storage requirements grow quickly with the number of samples. However, the resulting cross-sample coverage information can improve binning, particularly when organisms show different relative abundances across samples. For a large number of samples, or for samples from unrelated environments where cross-sample coverage adds little information, single-sample binning is the cheaper choice.\n\nAfter binning is complete, the workflow uses one or both of the available refinement tools to combine and refine the results from the individual binners, with the goal of generating higher-quality bins.\n\nThis workflow is the binning section, with the added multi-sample logic, of the [MAGs generation workflow](../mags-building/), extracted so that MAGs generation and other workflows can reuse it instead of maintaining their own copy (check the [FAIRyMAGs repository](https://github.com/usegalaxy-eu/FAIRyMAGs) for the complete workflow suite and its capabilities).\nA dedicated [learning pathway](https://galaxyproject.github.io/training-material/learning-pathways/mags.html) provides detailed guidance on MAG generation in Galaxy, including the binning tools used here.\n\n## Inputs\n\n- **Paired-end reads**: a `list:paired` collection with one element per sample.\n - Reads should be quality-trimmed and host-removed, e.g. with the IWC [short-read quality control](../../read-preprocessing/short-read-qc-trimming/) and [host contamination removal](../host-contamination-removal/host-contamination-removal-short-reads/) workflows.\n - The sample names are used as coverage columns for the binners.\n- **Assemblies**: a `list` collection of assemblies from any assembler (e.g. MEGAHIT or metaSPAdes).\n - Every sample's reads are mapped against every assembly, so the element identifiers of the two collections do not need to match. The number of assemblies does not need to equal the number of read samples either: a single co-assembly binned with the coverage of all samples is a valid input.\n- **Run COMEBin?** (default: yes): COMEBin is a deep-learning binner that often improves the results, but it is the most time- and resource-consuming step of the workflow.\n- **Bin refinement tool**: `DAS Tool`, `Binette` or `Both`.\n- **CheckM2 Database**: the CheckM2 reference database Binette uses to assess bin quality.\n- **Minimum MAG completeness percentage** (default: 40): the minimum bin completeness used by Binette; does not filter DAS Tool output.\n- **Contamination weight (Binette)** (default: 2): the contamination penalty used in Binette's scoring.\n\nSemiBin uses co-binning mode in this workflow. Its Galaxy wrapper does not expose a pretrained-model environment selector in that mode.\n\n## Automatic read length and binner selection\n\nCONCOCT read length is derived automatically using SeqKit statistics from both mates of every input sample. The workflow sums sequence lengths and read counts, divides total bases by total reads, and rounds to the nearest integer. This is a read-count-weighted mean, not an unweighted average of sample means. Multi coverage uses all original per-sample reads. No manual read-length input is required.\n\n**Run COMEBin?**, **Run SemiBin?**, **Run CONCOCT?**, **Run MetaBAT2?**, and **Run MaxBin2?** independently enable each binner; all default to **yes**. Keep at least one binner enabled. Disabled binners contribute empty candidate tables rather than blocking the selected refiner. Raw binner outputs are available only when that binner runs.\n\n## Outputs\n\n- **Coverage depth matrices**: one JGI depth table per assembly, containing coverage from all original samples.\n- **CONCOCT bins**, **MaxBin2 bins**, **MetaBAT2 bins**, **SemiBin bins** and **COMEBin bins** (if COMEBin was run): one list of bins per assembly.\n- **DAS Tool bins**, **DAS Tool summary** and **DAS Tool contigs2bin report** (if DAS Tool was run): the refined bins, a per-bin summary (completeness and redundancy based on single-copy genes) and the contig-to-bin assignments.\n- **Binette bins**, **Binette input bin quality reports** and **Binette final bin quality report** (if Binette was run): the refined bins, the CheckM2 quality of the bins from each binner, and the CheckM2 quality of the final bins.\n\n## Why use this workflow\n\nThis workflow provides a standardized and modular workflow for metagenomic binning that can be integrated into larger metagenomic analysis workflows. Its main purpose is to separate the binning step from other parts of MAG analysis, making complex workflows easier to understand, maintain, and adapt.\n\nUsing binning as an independent workflow provides better control over the inputs, binning parameters, and outputs. It also allows users to reuse the same binning strategy in different analysis pipelines without having to include unnecessary upstream or downstream steps. This modular design is particularly useful when the generated bins are intended for a specific downstream analysis, such as taxonomic classification, genome annotation, functional analysis, or benchmarking.\n\nIn contrast, the IWC Metagenome-Assembled Genomes (MAGs) generation workflow (https://iwc.galaxyproject.org/workflow/mags-building-main/) is designed as a comprehensive end-to-end solution. It performs metagenome assembly and multi-tool binning of paired short reads and optional long reads, followed by dereplication and analysis of MAG quality and abundance. This makes it well suited for users who want to generate and evaluate MAGs without requiring a specialized downstream workflow.\n\nThis binning workflow should therefore be preferred when binning needs to be incorporated as one component of a larger or more specialized analysis. It reduces workflow complexity, improves the overview of individual analysis steps, and makes it easier to modify or replace downstream analyses independently.\n\nIt should also be noted that this workflow can restrict Upstream. For example, it is possible to restrict the workflow so that the User can only use one of the two refinement tools or can restrict it to only one specific refinement tool.\n\n## Workflow logic\n\n- Preprocess reads and assemblies for binning.\n- Generate cross-sample coverage information:\n \n - Map the reads from each sample against the assemblies from all samples.\n\n- Perform binning using multiple binners:\n\n - CONCOCT\n - MaxBin2\n - MetaBAT2\n - SemiBin\n - COMEBin\n\n- Refine the resulting bins using one or both refinement tools:\n\n - DAS Tool\n - Binette\n\n## Funding\n\nThis workflow was developed as part of the [**FAIRyMAGs** project](https://elixir-europe.org/how-we-work/scientific-programme/science/bfsp/fairymags), funded as a commissioned service of the [**Biodiversity, Food Security and Pathogens (BFSP) ELIXIR Scientific Programme 2024–2028**](https://elixir-europe.org/how-we-work/scientific-programme/science/bfsp).\n\nThe project was also supported by the **European Galaxy Server**, funded by the German Federal Ministry of Education and Research (BMBF; 031 A538A de.NBI-RBC) and the **Ministry of Science, Research and the Arts Baden-Württemberg (MWK)** within the framework of **LIBIS/de.NBI Freiburg**.\n" } From 6bb2bffdfcf59949e6ca7dc9c6648f101fe0ce6c Mon Sep 17 00:00:00 2001 From: paulzierep Date: Tue, 20 Oct 2026 10:26:24 +0200 Subject: [PATCH 03/17] Fold pending multi-sample binning changes into the first 1.0 release --- workflows/microbiome/multi-sample-binning/CHANGELOG.md | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/workflows/microbiome/multi-sample-binning/CHANGELOG.md b/workflows/microbiome/multi-sample-binning/CHANGELOG.md index 8b08d3bfa3..6e80885bc1 100644 --- a/workflows/microbiome/multi-sample-binning/CHANGELOG.md +++ b/workflows/microbiome/multi-sample-binning/CHANGELOG.md @@ -1,6 +1,6 @@ # Changelog -## [Unreleased] +## [1.0] - 2026-10-20 - Replace manual CONCOCT read length with automatic estimation from both mates of all original samples. - Make all five binners independently optional and enabled by default, with editor-compatible optional-output bridges. @@ -8,7 +8,4 @@ - Expose Binette minimum completeness and contamination weight while preserving the standalone defaults (40 and 2). - Publish coverage depth matrices for inspection and regression testing. - Document the absence of an environment selector in SemiBin co mode. - -## [1.0] - 2026-09-23 - - First release From 03a6c4bff3e500966f2460738a6168b8e55566e6 Mon Sep 17 00:00:00 2001 From: paulzierep Date: Tue, 20 Oct 2026 10:26:35 +0200 Subject: [PATCH 04/17] Drop development-process note from the multi-sample binning submission --- .../multi-sample-binning/AGENTIC-CHANGES.md | 14 -------------- 1 file changed, 14 deletions(-) delete mode 100644 workflows/microbiome/multi-sample-binning/AGENTIC-CHANGES.md diff --git a/workflows/microbiome/multi-sample-binning/AGENTIC-CHANGES.md b/workflows/microbiome/multi-sample-binning/AGENTIC-CHANGES.md deleted file mode 100644 index 4f97bf56ac..0000000000 --- a/workflows/microbiome/multi-sample-binning/AGENTIC-CHANGES.md +++ /dev/null @@ -1,14 +0,0 @@ -# Standalone parameter exposure follow-up - -This branch carries the changes used by the Foundry MAGs parent into the standalone workflow. - -- Expose Binette minimum completeness and contamination weight. -- Do not invent an environment parameter for SemiBin co mode: the wrapper does not expose one. -- Publish coverage depth matrices as a testable output. -- Derive CONCOCT read length from both mates using a read-count-weighted mean. -- Enable all five binners by default; each has an independent run toggle. -- Enclose the tools in a native frame with a Markdown explanation. -- Preserve the existing refiner selector. -- Parent refiner reconciliation remains outside this standalone workflow. - -Status: development branch; runtime validation and submission metadata updates pending. From 681e7a7e8f340c6e31d72f408bd26be1d9bf42b3 Mon Sep 17 00:00:00 2001 From: paulzierep Date: Tue, 20 Oct 2026 12:06:27 +0200 Subject: [PATCH 05/17] Default multi-sample bin refinement to Binette --- workflows/microbiome/multi-sample-binning/CHANGELOG.md | 1 + workflows/microbiome/multi-sample-binning/README.md | 2 +- .../microbiome/multi-sample-binning/multi-sample-binning.ga | 4 ++-- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/workflows/microbiome/multi-sample-binning/CHANGELOG.md b/workflows/microbiome/multi-sample-binning/CHANGELOG.md index 6e80885bc1..ea0bd3d960 100644 --- a/workflows/microbiome/multi-sample-binning/CHANGELOG.md +++ b/workflows/microbiome/multi-sample-binning/CHANGELOG.md @@ -5,6 +5,7 @@ - Replace manual CONCOCT read length with automatic estimation from both mates of all original samples. - Make all five binners independently optional and enabled by default, with editor-compatible optional-output bridges. - Enclose workflow tools in a native frame with Markdown documentation. +- Make Binette the first and default bin-refinement choice. - Expose Binette minimum completeness and contamination weight while preserving the standalone defaults (40 and 2). - Publish coverage depth matrices for inspection and regression testing. - Document the absence of an environment selector in SemiBin co mode. diff --git a/workflows/microbiome/multi-sample-binning/README.md b/workflows/microbiome/multi-sample-binning/README.md index 9619b8e958..a7cb7663a6 100644 --- a/workflows/microbiome/multi-sample-binning/README.md +++ b/workflows/microbiome/multi-sample-binning/README.md @@ -21,7 +21,7 @@ A dedicated [learning pathway](https://galaxyproject.github.io/training-material - **Assemblies**: a `list` collection of assemblies from any assembler (e.g. MEGAHIT or metaSPAdes). - Every sample's reads are mapped against every assembly, so the element identifiers of the two collections do not need to match. The number of assemblies does not need to equal the number of read samples either: a single co-assembly binned with the coverage of all samples is a valid input. - **Run COMEBin?** (default: yes): COMEBin is a deep-learning binner that often improves the results, but it is the most time- and resource-consuming step of the workflow. -- **Bin refinement tool**: `DAS Tool`, `Binette` or `Both`. +- **Bin refinement tool** (default: `Binette`): `Binette`, `DAS Tool` or `Both`. - **CheckM2 Database**: the CheckM2 reference database Binette uses to assess bin quality. - **Minimum MAG completeness percentage** (default: 40): the minimum bin completeness used by Binette; does not filter DAS Tool output. - **Contamination weight (Binette)** (default: 2): the contamination penalty used in Binette's scoring. diff --git a/workflows/microbiome/multi-sample-binning/multi-sample-binning.ga b/workflows/microbiome/multi-sample-binning/multi-sample-binning.ga index 6849481831..582ccf28d2 100644 --- a/workflows/microbiome/multi-sample-binning/multi-sample-binning.ga +++ b/workflows/microbiome/multi-sample-binning/multi-sample-binning.ga @@ -216,7 +216,7 @@ "top": 770 }, "tool_id": null, - "tool_state": "{\"multiple\": false, \"validators\": [], \"restrictions\": [\"DAS Tool\", \"Binette\", \"Both\"], \"parameter_type\": \"text\", \"optional\": false}", + "tool_state": "{\"multiple\": false, \"validators\": [], \"restrictions\": [\"Binette\", \"DAS Tool\", \"Both\"], \"parameter_type\": \"text\", \"optional\": false, \"default\": \"Binette\"}", "tool_version": null, "type": "parameter_input", "uuid": "29651e13-0037-4477-a4d3-d8751fd97aa4", @@ -2281,5 +2281,5 @@ ], "uuid": "9b674961-0b3c-4f8f-97e6-f225e018198f", "version": 1, - "readme": "# Multi-sample binning workflow\n\nThis workflow uses paired-end reads and their corresponding assemblies, generated by any assembler, to produce metagenomic bins using multiple binning tools. Each binner uses a different approach to identify and group contigs into bins.\n\nIn contrast to single-sample binning, the multi-sample approach uses information across multiple samples during binning. Reads from each sample are mapped against the assemblies from all samples to generate cross-sample coverage information. This provides the binners with additional information that can help distinguish contigs based on their abundance patterns across samples.\n\nIn this workflow, each sample's reads are mapped against each sample's assembly, and each assembly is subsequently binned separately using the cross-sample coverage information. This differs from multi-sample approaches that concatenate assemblies and perform a joint binning step before splitting the resulting bins by sample.\n\nThe multi-sample approach is more computationally demanding than single-sample binning because it requires additional read mappings and processes a larger amount of data. When the reads of N samples are mapped against N assemblies, the number of mapping jobs, the number of BAM files and the number of intermediate read copies all scale as N², so storage requirements grow quickly with the number of samples. However, the resulting cross-sample coverage information can improve binning, particularly when organisms show different relative abundances across samples. For a large number of samples, or for samples from unrelated environments where cross-sample coverage adds little information, single-sample binning is the cheaper choice.\n\nAfter binning is complete, the workflow uses one or both of the available refinement tools to combine and refine the results from the individual binners, with the goal of generating higher-quality bins.\n\nThis workflow is the binning section, with the added multi-sample logic, of the [MAGs generation workflow](../mags-building/), extracted so that MAGs generation and other workflows can reuse it instead of maintaining their own copy (check the [FAIRyMAGs repository](https://github.com/usegalaxy-eu/FAIRyMAGs) for the complete workflow suite and its capabilities).\nA dedicated [learning pathway](https://galaxyproject.github.io/training-material/learning-pathways/mags.html) provides detailed guidance on MAG generation in Galaxy, including the binning tools used here.\n\n## Inputs\n\n- **Paired-end reads**: a `list:paired` collection with one element per sample.\n - Reads should be quality-trimmed and host-removed, e.g. with the IWC [short-read quality control](../../read-preprocessing/short-read-qc-trimming/) and [host contamination removal](../host-contamination-removal/host-contamination-removal-short-reads/) workflows.\n - The sample names are used as coverage columns for the binners.\n- **Assemblies**: a `list` collection of assemblies from any assembler (e.g. MEGAHIT or metaSPAdes).\n - Every sample's reads are mapped against every assembly, so the element identifiers of the two collections do not need to match. The number of assemblies does not need to equal the number of read samples either: a single co-assembly binned with the coverage of all samples is a valid input.\n- **Run COMEBin?** (default: yes): COMEBin is a deep-learning binner that often improves the results, but it is the most time- and resource-consuming step of the workflow.\n- **Bin refinement tool**: `DAS Tool`, `Binette` or `Both`.\n- **CheckM2 Database**: the CheckM2 reference database Binette uses to assess bin quality.\n- **Minimum MAG completeness percentage** (default: 40): the minimum bin completeness used by Binette; does not filter DAS Tool output.\n- **Contamination weight (Binette)** (default: 2): the contamination penalty used in Binette's scoring.\n\nSemiBin uses co-binning mode in this workflow. Its Galaxy wrapper does not expose a pretrained-model environment selector in that mode.\n\n## Automatic read length and binner selection\n\nCONCOCT read length is derived automatically using SeqKit statistics from both mates of every input sample. The workflow sums sequence lengths and read counts, divides total bases by total reads, and rounds to the nearest integer. This is a read-count-weighted mean, not an unweighted average of sample means. Multi coverage uses all original per-sample reads. No manual read-length input is required.\n\n**Run COMEBin?**, **Run SemiBin?**, **Run CONCOCT?**, **Run MetaBAT2?**, and **Run MaxBin2?** independently enable each binner; all default to **yes**. Keep at least one binner enabled. Disabled binners contribute empty candidate tables rather than blocking the selected refiner. Raw binner outputs are available only when that binner runs.\n\n## Outputs\n\n- **Coverage depth matrices**: one JGI depth table per assembly, containing coverage from all original samples.\n- **CONCOCT bins**, **MaxBin2 bins**, **MetaBAT2 bins**, **SemiBin bins** and **COMEBin bins** (if COMEBin was run): one list of bins per assembly.\n- **DAS Tool bins**, **DAS Tool summary** and **DAS Tool contigs2bin report** (if DAS Tool was run): the refined bins, a per-bin summary (completeness and redundancy based on single-copy genes) and the contig-to-bin assignments.\n- **Binette bins**, **Binette input bin quality reports** and **Binette final bin quality report** (if Binette was run): the refined bins, the CheckM2 quality of the bins from each binner, and the CheckM2 quality of the final bins.\n\n## Why use this workflow\n\nThis workflow provides a standardized and modular workflow for metagenomic binning that can be integrated into larger metagenomic analysis workflows. Its main purpose is to separate the binning step from other parts of MAG analysis, making complex workflows easier to understand, maintain, and adapt.\n\nUsing binning as an independent workflow provides better control over the inputs, binning parameters, and outputs. It also allows users to reuse the same binning strategy in different analysis pipelines without having to include unnecessary upstream or downstream steps. This modular design is particularly useful when the generated bins are intended for a specific downstream analysis, such as taxonomic classification, genome annotation, functional analysis, or benchmarking.\n\nIn contrast, the IWC Metagenome-Assembled Genomes (MAGs) generation workflow (https://iwc.galaxyproject.org/workflow/mags-building-main/) is designed as a comprehensive end-to-end solution. It performs metagenome assembly and multi-tool binning of paired short reads and optional long reads, followed by dereplication and analysis of MAG quality and abundance. This makes it well suited for users who want to generate and evaluate MAGs without requiring a specialized downstream workflow.\n\nThis binning workflow should therefore be preferred when binning needs to be incorporated as one component of a larger or more specialized analysis. It reduces workflow complexity, improves the overview of individual analysis steps, and makes it easier to modify or replace downstream analyses independently.\n\nIt should also be noted that this workflow can restrict Upstream. For example, it is possible to restrict the workflow so that the User can only use one of the two refinement tools or can restrict it to only one specific refinement tool.\n\n## Workflow logic\n\n- Preprocess reads and assemblies for binning.\n- Generate cross-sample coverage information:\n \n - Map the reads from each sample against the assemblies from all samples.\n\n- Perform binning using multiple binners:\n\n - CONCOCT\n - MaxBin2\n - MetaBAT2\n - SemiBin\n - COMEBin\n\n- Refine the resulting bins using one or both refinement tools:\n\n - DAS Tool\n - Binette\n\n## Funding\n\nThis workflow was developed as part of the [**FAIRyMAGs** project](https://elixir-europe.org/how-we-work/scientific-programme/science/bfsp/fairymags), funded as a commissioned service of the [**Biodiversity, Food Security and Pathogens (BFSP) ELIXIR Scientific Programme 2024–2028**](https://elixir-europe.org/how-we-work/scientific-programme/science/bfsp).\n\nThe project was also supported by the **European Galaxy Server**, funded by the German Federal Ministry of Education and Research (BMBF; 031 A538A de.NBI-RBC) and the **Ministry of Science, Research and the Arts Baden-Württemberg (MWK)** within the framework of **LIBIS/de.NBI Freiburg**.\n" + "readme": "# Multi-sample binning workflow\n\nThis workflow uses paired-end reads and their corresponding assemblies, generated by any assembler, to produce metagenomic bins using multiple binning tools. Each binner uses a different approach to identify and group contigs into bins.\n\nIn contrast to single-sample binning, the multi-sample approach uses information across multiple samples during binning. Reads from each sample are mapped against the assemblies from all samples to generate cross-sample coverage information. This provides the binners with additional information that can help distinguish contigs based on their abundance patterns across samples.\n\nIn this workflow, each sample's reads are mapped against each sample's assembly, and each assembly is subsequently binned separately using the cross-sample coverage information. This differs from multi-sample approaches that concatenate assemblies and perform a joint binning step before splitting the resulting bins by sample.\n\nThe multi-sample approach is more computationally demanding than single-sample binning because it requires additional read mappings and processes a larger amount of data. When the reads of N samples are mapped against N assemblies, the number of mapping jobs, the number of BAM files and the number of intermediate read copies all scale as N², so storage requirements grow quickly with the number of samples. However, the resulting cross-sample coverage information can improve binning, particularly when organisms show different relative abundances across samples. For a large number of samples, or for samples from unrelated environments where cross-sample coverage adds little information, single-sample binning is the cheaper choice.\n\nAfter binning is complete, the workflow uses one or both of the available refinement tools to combine and refine the results from the individual binners, with the goal of generating higher-quality bins.\n\nThis workflow is the binning section, with the added multi-sample logic, of the [MAGs generation workflow](../mags-building/), extracted so that MAGs generation and other workflows can reuse it instead of maintaining their own copy (check the [FAIRyMAGs repository](https://github.com/usegalaxy-eu/FAIRyMAGs) for the complete workflow suite and its capabilities).\nA dedicated [learning pathway](https://galaxyproject.github.io/training-material/learning-pathways/mags.html) provides detailed guidance on MAG generation in Galaxy, including the binning tools used here.\n\n## Inputs\n\n- **Paired-end reads**: a `list:paired` collection with one element per sample.\n - Reads should be quality-trimmed and host-removed, e.g. with the IWC [short-read quality control](../../read-preprocessing/short-read-qc-trimming/) and [host contamination removal](../host-contamination-removal/host-contamination-removal-short-reads/) workflows.\n - The sample names are used as coverage columns for the binners.\n- **Assemblies**: a `list` collection of assemblies from any assembler (e.g. MEGAHIT or metaSPAdes).\n - Every sample's reads are mapped against every assembly, so the element identifiers of the two collections do not need to match. The number of assemblies does not need to equal the number of read samples either: a single co-assembly binned with the coverage of all samples is a valid input.\n- **Run COMEBin?** (default: yes): COMEBin is a deep-learning binner that often improves the results, but it is the most time- and resource-consuming step of the workflow.\n- **Bin refinement tool** (default: `Binette`): `Binette`, `DAS Tool` or `Both`.\n- **CheckM2 Database**: the CheckM2 reference database Binette uses to assess bin quality.\n- **Minimum MAG completeness percentage** (default: 40): the minimum bin completeness used by Binette; does not filter DAS Tool output.\n- **Contamination weight (Binette)** (default: 2): the contamination penalty used in Binette's scoring.\n\nSemiBin uses co-binning mode in this workflow. Its Galaxy wrapper does not expose a pretrained-model environment selector in that mode.\n\n## Automatic read length and binner selection\n\nCONCOCT read length is derived automatically using SeqKit statistics from both mates of every input sample. The workflow sums sequence lengths and read counts, divides total bases by total reads, and rounds to the nearest integer. This is a read-count-weighted mean, not an unweighted average of sample means. Multi coverage uses all original per-sample reads. No manual read-length input is required.\n\n**Run COMEBin?**, **Run SemiBin?**, **Run CONCOCT?**, **Run MetaBAT2?**, and **Run MaxBin2?** independently enable each binner; all default to **yes**. Keep at least one binner enabled. Disabled binners contribute empty candidate tables rather than blocking the selected refiner. Raw binner outputs are available only when that binner runs.\n\n## Outputs\n\n- **Coverage depth matrices**: one JGI depth table per assembly, containing coverage from all original samples.\n- **CONCOCT bins**, **MaxBin2 bins**, **MetaBAT2 bins**, **SemiBin bins** and **COMEBin bins** (if COMEBin was run): one list of bins per assembly.\n- **DAS Tool bins**, **DAS Tool summary** and **DAS Tool contigs2bin report** (if DAS Tool was run): the refined bins, a per-bin summary (completeness and redundancy based on single-copy genes) and the contig-to-bin assignments.\n- **Binette bins**, **Binette input bin quality reports** and **Binette final bin quality report** (if Binette was run): the refined bins, the CheckM2 quality of the bins from each binner, and the CheckM2 quality of the final bins.\n\n## Why use this workflow\n\nThis workflow provides a standardized and modular workflow for metagenomic binning that can be integrated into larger metagenomic analysis workflows. Its main purpose is to separate the binning step from other parts of MAG analysis, making complex workflows easier to understand, maintain, and adapt.\n\nUsing binning as an independent workflow provides better control over the inputs, binning parameters, and outputs. It also allows users to reuse the same binning strategy in different analysis pipelines without having to include unnecessary upstream or downstream steps. This modular design is particularly useful when the generated bins are intended for a specific downstream analysis, such as taxonomic classification, genome annotation, functional analysis, or benchmarking.\n\nIn contrast, the IWC Metagenome-Assembled Genomes (MAGs) generation workflow (https://iwc.galaxyproject.org/workflow/mags-building-main/) is designed as a comprehensive end-to-end solution. It performs metagenome assembly and multi-tool binning of paired short reads and optional long reads, followed by dereplication and analysis of MAG quality and abundance. This makes it well suited for users who want to generate and evaluate MAGs without requiring a specialized downstream workflow.\n\nThis binning workflow should therefore be preferred when binning needs to be incorporated as one component of a larger or more specialized analysis. It reduces workflow complexity, improves the overview of individual analysis steps, and makes it easier to modify or replace downstream analyses independently.\n\nIt should also be noted that this workflow can restrict Upstream. For example, it is possible to restrict the workflow so that the User can only use one of the two refinement tools or can restrict it to only one specific refinement tool.\n\n## Workflow logic\n\n- Preprocess reads and assemblies for binning.\n- Generate cross-sample coverage information:\n \n - Map the reads from each sample against the assemblies from all samples.\n\n- Perform binning using multiple binners:\n\n - CONCOCT\n - MaxBin2\n - MetaBAT2\n - SemiBin\n - COMEBin\n\n- Refine the resulting bins using one or both refinement tools:\n\n - DAS Tool\n - Binette\n\n## Funding\n\nThis workflow was developed as part of the [**FAIRyMAGs** project](https://elixir-europe.org/how-we-work/scientific-programme/science/bfsp/fairymags), funded as a commissioned service of the [**Biodiversity, Food Security and Pathogens (BFSP) ELIXIR Scientific Programme 2024–2028**](https://elixir-europe.org/how-we-work/scientific-programme/science/bfsp).\n\nThe project was also supported by the **European Galaxy Server**, funded by the German Federal Ministry of Education and Research (BMBF; 031 A538A de.NBI-RBC) and the **Ministry of Science, Research and the Arts Baden-Württemberg (MWK)** within the framework of **LIBIS/de.NBI Freiburg**.\n" } From f7916ec3ead0f00003896683ba188edcbe55ad82 Mon Sep 17 00:00:00 2001 From: paulzierep Date: Tue, 20 Oct 2026 13:49:14 +0200 Subject: [PATCH 06/17] Fix Tool Shed installation metadata for automatic read length --- .../multi-sample-binning.ga | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/workflows/microbiome/multi-sample-binning/multi-sample-binning.ga b/workflows/microbiome/multi-sample-binning/multi-sample-binning.ga index 582ccf28d2..95596f6d5e 100644 --- a/workflows/microbiome/multi-sample-binning/multi-sample-binning.ga +++ b/workflows/microbiome/multi-sample-binning/multi-sample-binning.ga @@ -1748,6 +1748,12 @@ "type": "tool", "name": "SeqKit statistics", "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/seqkit_stats/seqkit_stats/2.8.1+galaxy0", + "tool_shed_repository": { + "changeset_revision": "812705bcf39c", + "name": "seqkit_stats", + "owner": "iuc", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/seqkit_stats/seqkit_stats/2.8.1+galaxy0", "tool_version": "2.8.1+galaxy0", "tool_state": "{\"input\": {\"__class__\": \"ConnectedValue\"}, \"all\": false, \"basename\": true, \"skip_err\": false, \"tabular\": true}", @@ -1773,6 +1779,12 @@ "type": "tool", "name": "SeqKit statistics", "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/seqkit_stats/seqkit_stats/2.8.1+galaxy0", + "tool_shed_repository": { + "changeset_revision": "812705bcf39c", + "name": "seqkit_stats", + "owner": "iuc", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/seqkit_stats/seqkit_stats/2.8.1+galaxy0", "tool_version": "2.8.1+galaxy0", "tool_state": "{\"input\": {\"__class__\": \"ConnectedValue\"}, \"all\": false, \"basename\": true, \"skip_err\": false, \"tabular\": true}", @@ -1798,6 +1810,12 @@ "type": "tool", "name": "Concatenate datasets", "tool_id": "toolshed.g2.bx.psu.edu/repos/bgruening/text_processing/tp_cat/0.1.0", + "tool_shed_repository": { + "changeset_revision": "ddf54b12c295", + "name": "text_processing", + "owner": "bgruening", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, "content_id": "toolshed.g2.bx.psu.edu/repos/bgruening/text_processing/tp_cat/0.1.0", "tool_version": "0.1.0", "tool_state": "{\"inputs\": [{\"__class__\": \"ConnectedValue\"}], \"queries\": [{\"__index__\": 0, \"inputs2\": [{\"__class__\": \"ConnectedValue\"}]}]}", @@ -1827,6 +1845,12 @@ "type": "tool", "name": "Text reformatting", "tool_id": "toolshed.g2.bx.psu.edu/repos/bgruening/text_processing/tp_awk_tool/9.11+galaxy0", + "tool_shed_repository": { + "changeset_revision": "30b60202d990", + "name": "text_processing", + "owner": "bgruening", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, "content_id": "toolshed.g2.bx.psu.edu/repos/bgruening/text_processing/tp_awk_tool/9.11+galaxy0", "tool_version": "9.11+galaxy0", "tool_state": "{\"infile\": {\"__class__\": \"ConnectedValue\"}, \"code\": \"BEGIN{FS=\\\"\\t\\\"} $4 ~ /^[0-9]+$/ {n += $4; total += $5} END{if(n<1) exit 1; print int(total/n+0.5)}\", \"variables\": []}", From bff940de6bec8d35fa64f4c4b1c3bc09b9838c97 Mon Sep 17 00:00:00 2001 From: paulzierep Date: Tue, 20 Oct 2026 14:19:25 +0200 Subject: [PATCH 07/17] Integrate de-interlacer and COMEBin updates from IWC #1435 --- .../multi-sample-binning/CHANGELOG.md | 1 + .../multi-sample-binning.ga | 65 ++++--------------- 2 files changed, 12 insertions(+), 54 deletions(-) diff --git a/workflows/microbiome/multi-sample-binning/CHANGELOG.md b/workflows/microbiome/multi-sample-binning/CHANGELOG.md index ea0bd3d960..fffabaf78c 100644 --- a/workflows/microbiome/multi-sample-binning/CHANGELOG.md +++ b/workflows/microbiome/multi-sample-binning/CHANGELOG.md @@ -2,6 +2,7 @@ ## [1.0] - 2026-10-20 +- Incorporate the tool upgrades from IWC PR #1435: COMEBin 1.1.0+galaxy1 and FASTQ de-interlacer 1.2+galaxy0. Connect Bowtie2 directly to the paired `pairs` output and remove the obsolete zip step. - Replace manual CONCOCT read length with automatic estimation from both mates of all original samples. - Make all five binners independently optional and enabled by default, with editor-compatible optional-output bridges. - Enclose workflow tools in a native frame with Markdown documentation. diff --git a/workflows/microbiome/multi-sample-binning/multi-sample-binning.ga b/workflows/microbiome/multi-sample-binning/multi-sample-binning.ga index 95596f6d5e..eaae74789d 100644 --- a/workflows/microbiome/multi-sample-binning/multi-sample-binning.ga +++ b/workflows/microbiome/multi-sample-binning/multi-sample-binning.ga @@ -46,7 +46,6 @@ 10, 11, 12, - 13, 14, 15, 16, @@ -510,7 +509,7 @@ }, "12": { "annotation": "", - "content_id": "toolshed.g2.bx.psu.edu/repos/devteam/fastq_paired_end_deinterlacer/fastq_paired_end_deinterlacer/1.1.5+galaxy2", + "content_id": "toolshed.g2.bx.psu.edu/repos/devteam/fastq_paired_end_deinterlacer/fastq_paired_end_deinterlacer/1.2+galaxy0", "errors": null, "id": 12, "input_connections": { @@ -524,11 +523,7 @@ "name": "FASTQ de-interlacer", "outputs": [ { - "name": "output1_pairs_file", - "type": "input" - }, - { - "name": "output2_pairs_file", + "name": "pairs", "type": "input" }, { @@ -545,59 +540,21 @@ "top": 770 }, "post_job_actions": {}, - "tool_id": "toolshed.g2.bx.psu.edu/repos/devteam/fastq_paired_end_deinterlacer/fastq_paired_end_deinterlacer/1.1.5+galaxy2", + "tool_id": "toolshed.g2.bx.psu.edu/repos/devteam/fastq_paired_end_deinterlacer/fastq_paired_end_deinterlacer/1.2+galaxy0", "tool_shed_repository": { - "changeset_revision": "523c2aff0376", + "changeset_revision": "c48cf4699be7", "name": "fastq_paired_end_deinterlacer", "owner": "devteam", "tool_shed": "toolshed.g2.bx.psu.edu" }, "tool_state": "{\"input_file\": {\"__class__\": \"ConnectedValue\"}, \"__page__\": 0, \"__rerun_remap_job_id__\": null}", "tool_uuid": null, - "tool_version": "1.1.5+galaxy2", + "tool_version": "1.2+galaxy0", "type": "tool", "uuid": "f2ceb841-7e7a-4fef-a75a-ebe9588ec0b8", "when": null, "workflow_outputs": [] }, - "13": { - "annotation": "", - "content_id": "__ZIP_COLLECTION__", - "errors": null, - "id": 13, - "input_connections": { - "input_forward": { - "id": 12, - "output_name": "output1_pairs_file" - }, - "input_reverse": { - "id": 12, - "output_name": "output2_pairs_file" - } - }, - "inputs": [], - "label": "zip reads back together", - "name": "Zip collections", - "outputs": [ - { - "name": "output", - "type": "input" - } - ], - "position": { - "left": 2600, - "top": 770 - }, - "post_job_actions": {}, - "tool_id": "__ZIP_COLLECTION__", - "tool_state": "{\"input_forward\": {\"__class__\": \"ConnectedValue\"}, \"input_reverse\": {\"__class__\": \"ConnectedValue\"}, \"__page__\": 0, \"__rerun_remap_job_id__\": null}", - "tool_uuid": null, - "tool_version": "1.0.0", - "type": "tool", - "uuid": "6e1e2bbe-ceaa-4fb2-8ac1-e345981b9c57", - "when": null, - "workflow_outputs": [] - }, "14": { "annotation": "", "content_id": "toolshed.g2.bx.psu.edu/repos/devteam/bowtie2/bowtie2/2.5.5+galaxy0", @@ -605,8 +562,8 @@ "id": 14, "input_connections": { "library|input_1": { - "id": 13, - "output_name": "output" + "id": 12, + "output_name": "pairs" }, "reference_genome|own_file": { "id": 11, @@ -702,7 +659,7 @@ }, "16": { "annotation": "", - "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/comebin/comebin/1.1.0+galaxy0", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/comebin/comebin/1.1.0+galaxy1", "errors": null, "id": 16, "input_connections": { @@ -741,16 +698,16 @@ "output_name": "bins" } }, - "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/comebin/comebin/1.1.0+galaxy0", + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/comebin/comebin/1.1.0+galaxy1", "tool_shed_repository": { - "changeset_revision": "cd1d8332bc04", + "changeset_revision": "7e66a24282a7", "name": "comebin", "owner": "iuc", "tool_shed": "toolshed.g2.bx.psu.edu" }, "tool_state": "{\"assembly_file\": {\"__class__\": \"ConnectedValue\"}, \"bam_files\": {\"__class__\": \"ConnectedValue\"}, \"batch\": \"1024\", \"emb_comebin\": \"2048\", \"emb_cov\": \"2048\", \"learning\": \"6\", \"loss\": \"0.15\", \"max_edges\": \"100\", \"__page__\": 0, \"__rerun_remap_job_id__\": null}", "tool_uuid": null, - "tool_version": "1.1.0+galaxy0", + "tool_version": "1.1.0+galaxy1", "type": "tool", "uuid": "1e418b96-e22e-4cd0-a95d-d1aed1211125", "when": "$(inputs.when)", From 1bef1241e51b0338aa40d65ae4d9b924efb26d10 Mon Sep 17 00:00:00 2001 From: paulzierep Date: Wed, 21 Oct 2026 09:38:20 +0200 Subject: [PATCH 08/17] Disable COMEBin in CI tests to stay within the test runtime limit COMEBin runs the longest of all binners and the workflow tests stay close to the CI time limit. Turn it off in the published test case while keeping the other binners, both refinement tools and every existing assertion unchanged. COMEBin stays enabled by default in the workflow. --- workflows/microbiome/multi-sample-binning/CHANGELOG.md | 1 + .../multi-sample-binning/multi-sample-binning-tests.yml | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/workflows/microbiome/multi-sample-binning/CHANGELOG.md b/workflows/microbiome/multi-sample-binning/CHANGELOG.md index fffabaf78c..95ca6bf7c9 100644 --- a/workflows/microbiome/multi-sample-binning/CHANGELOG.md +++ b/workflows/microbiome/multi-sample-binning/CHANGELOG.md @@ -10,4 +10,5 @@ - Expose Binette minimum completeness and contamination weight while preserving the standalone defaults (40 and 2). - Publish coverage depth matrices for inspection and regression testing. - Document the absence of an environment selector in SemiBin co mode. +- Disable COMEBin in the CI tests, because it runs the longest of all binners and keeps the test suite close to the CI time limit. The other binners and all refinement outputs remain covered, and the workflow still enables COMEBin by default. - First release diff --git a/workflows/microbiome/multi-sample-binning/multi-sample-binning-tests.yml b/workflows/microbiome/multi-sample-binning/multi-sample-binning-tests.yml index 728adb1a37..5d403c8bc2 100644 --- a/workflows/microbiome/multi-sample-binning/multi-sample-binning-tests.yml +++ b/workflows/microbiome/multi-sample-binning/multi-sample-binning-tests.yml @@ -73,7 +73,7 @@ - class: File identifier: Mock5 location: https://zenodo.org/records/22982485/files/Mock5.fasta - Run COMEBin?: true + Run COMEBin?: false Bin refinement tool: Both CheckM2 Database: 1.0.2 Minimum MAG completeness percentage: 40 From 1ab34360746e922c14ddae62dddd39ca467b605e Mon Sep 17 00:00:00 2001 From: paulzierep Date: Wed, 21 Oct 2026 10:00:32 +0200 Subject: [PATCH 09/17] Shrink multi-sample binning test fixture to 2 samples Reduce the CI fixture from five to two mock samples so the N-squared cross-alignment matrix (25 -> 4 alignments) keeps the test within the runtime limit now that COMEBin is disabled. Update the per-sample element assertions and the coverage-matrix column count (13 -> 7, i.e. 3 fixed plus 2 per-sample columns). --- .../multi-sample-binning-tests.yml | 105 ++++-------------- 1 file changed, 24 insertions(+), 81 deletions(-) diff --git a/workflows/microbiome/multi-sample-binning/multi-sample-binning-tests.yml b/workflows/microbiome/multi-sample-binning/multi-sample-binning-tests.yml index 5d403c8bc2..5daa4c765d 100644 --- a/workflows/microbiome/multi-sample-binning/multi-sample-binning-tests.yml +++ b/workflows/microbiome/multi-sample-binning/multi-sample-binning-tests.yml @@ -24,36 +24,6 @@ identifier: reverse location: https://zenodo.org/records/22982485/files/Mock2_R2.fastq.gz collection_type: paired - - class: Collection - identifier: Mock3 - elements: - - class: File - identifier: forward - location: https://zenodo.org/records/22982485/files/Mock3_R1.fastq.gz - - class: File - identifier: reverse - location: https://zenodo.org/records/22982485/files/Mock3_R2.fastq.gz - collection_type: paired - - class: Collection - identifier: Mock4 - elements: - - class: File - identifier: forward - location: https://zenodo.org/records/22982485/files/Mock4_R1.fastq.gz - - class: File - identifier: reverse - location: https://zenodo.org/records/22982485/files/Mock4_R2.fastq.gz - collection_type: paired - - class: Collection - identifier: Mock5 - elements: - - class: File - identifier: forward - location: https://zenodo.org/records/22982485/files/Mock5_R1.fastq.gz - - class: File - identifier: reverse - location: https://zenodo.org/records/22982485/files/Mock5_R2.fastq.gz - collection_type: paired Assemblies: class: Collection collection_type: list @@ -64,15 +34,6 @@ - class: File identifier: Mock2 location: https://zenodo.org/records/22982485/files/Mock2.fasta - - class: File - identifier: Mock3 - location: https://zenodo.org/records/22982485/files/Mock3.fasta - - class: File - identifier: Mock4 - location: https://zenodo.org/records/22982485/files/Mock4.fasta - - class: File - identifier: Mock5 - location: https://zenodo.org/records/22982485/files/Mock5.fasta Run COMEBin?: false Bin refinement tool: Both CheckM2 Database: 1.0.2 @@ -81,70 +42,70 @@ outputs: SemiBin bins: element_tests: - Mock4: + Mock1: class: Collection min: 1 - Mock5: + Mock2: class: Collection min: 1 class: Collection MetaBAT2 bins: element_tests: - Mock4: + Mock1: class: Collection min: 1 - Mock5: + Mock2: class: Collection min: 1 class: Collection MaxBin2 bins: element_tests: - Mock4: + Mock1: class: Collection min: 1 - Mock5: + Mock2: class: Collection min: 1 class: Collection CONCOCT bins: element_tests: - Mock4: + Mock1: class: Collection min: 1 - Mock5: + Mock2: class: Collection min: 1 class: Collection COMEBin bins: element_tests: - Mock4: + Mock1: class: Collection min: 1 - Mock5: + Mock2: class: Collection min: 1 class: Collection Binette bins: element_tests: - Mock4: + Mock1: class: Collection min: 1 - Mock5: + Mock2: class: Collection min: 1 class: Collection DAS Tool bins: element_tests: - Mock4: + Mock1: class: Collection min: 1 - Mock5: + Mock2: class: Collection min: 1 class: Collection Binette input bin quality reports: element_tests: - Mock4: + Mock1: class: Collection elements: input_bins_1.bin_table_0: @@ -153,7 +114,7 @@ text: completeness - has_n_lines: min: 2 - Mock5: + Mock2: class: Collection elements: input_bins_1.bin_table_0: @@ -165,13 +126,13 @@ class: Collection Binette final bin quality report: element_tests: - Mock4: + Mock1: asserts: - has_text: text: completeness - has_n_lines: min: 2 - Mock5: + Mock2: asserts: - has_text: text: completeness @@ -180,13 +141,13 @@ class: Collection DAS Tool summary: element_tests: - Mock4: + Mock1: asserts: - has_text: text: SCG_completeness - has_n_lines: min: 2 - Mock5: + Mock2: asserts: - has_text: text: SCG_completeness @@ -195,13 +156,13 @@ class: Collection DAS Tool contigs2bin report: element_tests: - Mock4: + Mock1: asserts: - has_n_lines: min: 100 - has_line_matching: expression: ^\S+\t\S+$ - Mock5: + Mock2: asserts: - has_n_lines: min: 100 @@ -216,28 +177,10 @@ - that: has_text text: contigName - that: has_n_columns - n: 13 + n: 7 Mock2: asserts: - that: has_text text: contigName - that: has_n_columns - n: 13 - Mock3: - asserts: - - that: has_text - text: contigName - - that: has_n_columns - n: 13 - Mock4: - asserts: - - that: has_text - text: contigName - - that: has_n_columns - n: 13 - Mock5: - asserts: - - that: has_text - text: contigName - - that: has_n_columns - n: 13 + n: 7 From a8c1358364937b5e75f3e1bb61f760126ccb1fd2 Mon Sep 17 00:00:00 2001 From: paulzierep Date: Wed, 21 Oct 2026 10:03:53 +0200 Subject: [PATCH 10/17] Document the two-sample CI test fixture --- workflows/microbiome/multi-sample-binning/CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/workflows/microbiome/multi-sample-binning/CHANGELOG.md b/workflows/microbiome/multi-sample-binning/CHANGELOG.md index 95ca6bf7c9..a01a00f1ab 100644 --- a/workflows/microbiome/multi-sample-binning/CHANGELOG.md +++ b/workflows/microbiome/multi-sample-binning/CHANGELOG.md @@ -11,4 +11,5 @@ - Publish coverage depth matrices for inspection and regression testing. - Document the absence of an environment selector in SemiBin co mode. - Disable COMEBin in the CI tests, because it runs the longest of all binners and keeps the test suite close to the CI time limit. The other binners and all refinement outputs remain covered, and the workflow still enables COMEBin by default. +- Reduce the CI test fixture to two mock samples, so the cross-sample alignment matrix stays small and the test runs well within the time limit. Coverage-matrix assertions are updated to the two-sample column count. - First release From c9a19756cf01419e7d567314dc9f3b4bc93c134e Mon Sep 17 00:00:00 2001 From: paulzierep Date: Wed, 21 Oct 2026 13:08:01 +0200 Subject: [PATCH 11/17] Build all-vs-all read matrix without rewriting FASTQ files --- .../multi-sample-binning/CHANGELOG.md | 3 +- .../microbiome/multi-sample-binning/README.md | 3 +- .../multi-sample-binning.ga | 213 ++++++------------ 3 files changed, 74 insertions(+), 145 deletions(-) diff --git a/workflows/microbiome/multi-sample-binning/CHANGELOG.md b/workflows/microbiome/multi-sample-binning/CHANGELOG.md index a01a00f1ab..49225d0065 100644 --- a/workflows/microbiome/multi-sample-binning/CHANGELOG.md +++ b/workflows/microbiome/multi-sample-binning/CHANGELOG.md @@ -2,7 +2,8 @@ ## [1.0] - 2026-10-20 -- Incorporate the tool upgrades from IWC PR #1435: COMEBin 1.1.0+galaxy1 and FASTQ de-interlacer 1.2+galaxy0. Connect Bowtie2 directly to the paired `pairs` output and remove the obsolete zip step. +- Incorporate the COMEBin 1.1.0+galaxy1 upgrade from IWC PR #1435. +- Replace read interlacing/de-interlacing with native Flatten, Nested Cross Product and Apply Rules operations. Preserve the assembly × read-sample BAM matrix while reusing the original read datasets instead of writing intermediate FASTQ files. - Replace manual CONCOCT read length with automatic estimation from both mates of all original samples. - Make all five binners independently optional and enabled by default, with editor-compatible optional-output bridges. - Enclose workflow tools in a native frame with Markdown documentation. diff --git a/workflows/microbiome/multi-sample-binning/README.md b/workflows/microbiome/multi-sample-binning/README.md index a7cb7663a6..727ffa4862 100644 --- a/workflows/microbiome/multi-sample-binning/README.md +++ b/workflows/microbiome/multi-sample-binning/README.md @@ -6,7 +6,7 @@ In contrast to single-sample binning, the multi-sample approach uses information In this workflow, each sample's reads are mapped against each sample's assembly, and each assembly is subsequently binned separately using the cross-sample coverage information. This differs from multi-sample approaches that concatenate assemblies and perform a joint binning step before splitting the resulting bins by sample. -The multi-sample approach is more computationally demanding than single-sample binning because it requires additional read mappings and processes a larger amount of data. When the reads of N samples are mapped against N assemblies, the number of mapping jobs, the number of BAM files and the number of intermediate read copies all scale as N², so storage requirements grow quickly with the number of samples. However, the resulting cross-sample coverage information can improve binning, particularly when organisms show different relative abundances across samples. For a large number of samples, or for samples from unrelated environments where cross-sample coverage adds little information, single-sample binning is the cheaper choice. +The multi-sample approach is more computationally demanding than single-sample binning because it requires additional read mappings and processes a larger amount of data. When the reads of N samples are mapped against N assemblies, the number of mapping jobs and BAM files scales as N², so storage requirements still grow quickly with the number of samples. The all-vs-all input matrix uses native collection operations that reference the original reads, without writing intermediate interlaced or de-interlaced FASTQ files. However, the resulting cross-sample coverage information can improve binning, particularly when organisms show different relative abundances across samples. For a large number of samples, or for samples from unrelated environments where cross-sample coverage adds little information, single-sample binning is the cheaper choice. After binning is complete, the workflow uses one or both of the available refinement tools to combine and refine the results from the individual binners, with the goal of generating higher-quality bins. @@ -58,6 +58,7 @@ It should also be noted that this workflow can restrict Upstream. For example, i - Preprocess reads and assemblies for binning. - Generate cross-sample coverage information: + - Flatten the read pairs, form a nested cross product with the assemblies, and use Apply Rules to reconstruct an assembly × sample matrix of paired reads and matching assembly references. These operations reuse the underlying datasets; they do not rewrite read files. Sample identifiers, including underscores and `_forward`/`_reverse` suffixes in sample names, are retained by removing only the final mate suffix introduced by flattening. - Map the reads from each sample against the assemblies from all samples. - Perform binning using multiple binners: diff --git a/workflows/microbiome/multi-sample-binning/multi-sample-binning.ga b/workflows/microbiome/multi-sample-binning/multi-sample-binning.ga index eaae74789d..3bdf9677a3 100644 --- a/workflows/microbiome/multi-sample-binning/multi-sample-binning.ga +++ b/workflows/microbiome/multi-sample-binning/multi-sample-binning.ga @@ -39,13 +39,10 @@ 2, 4, 5, - 6, 7, 8, 9, - 10, 11, - 12, 14, 15, 16, @@ -82,7 +79,10 @@ 47, 48, 49, - 50 + 50, + 51, + 52, + 53 ], "child_comments": [ 0 @@ -249,44 +249,6 @@ "when": null, "workflow_outputs": [] }, - "6": { - "annotation": "", - "content_id": "__UNZIP_COLLECTION__", - "errors": null, - "id": 6, - "input_connections": { - "input": { - "id": 0, - "output_name": "output" - } - }, - "inputs": [], - "label": "Unzip reads", - "name": "Unzip collection", - "outputs": [ - { - "name": "forward", - "type": "input" - }, - { - "name": "reverse", - "type": "input" - } - ], - "position": { - "left": 600, - "top": 1370 - }, - "post_job_actions": {}, - "tool_id": "__UNZIP_COLLECTION__", - "tool_state": "{\"input\": {\"__class__\": \"ConnectedValue\"}, \"__page__\": 0, \"__rerun_remap_job_id__\": null}", - "tool_uuid": null, - "tool_version": "1.0.0", - "type": "tool", - "uuid": "576ba951-068a-41f3-ba74-dec00043e670", - "when": null, - "workflow_outputs": [] - }, "7": { "annotation": "", "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/concoct_cut_up_fasta/concoct_cut_up_fasta/1.1.0+galaxy3", @@ -421,52 +383,8 @@ "when": null, "workflow_outputs": [] }, - "10": { - "annotation": "", - "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/seqtk/seqtk_mergepe/1.5+galaxy0", - "errors": null, - "id": 10, - "input_connections": { - "in_fq1": { - "id": 6, - "output_name": "forward" - }, - "in_fq2": { - "id": 6, - "output_name": "reverse" - } - }, - "inputs": [], - "label": "seqtk_mergepe reads", - "name": "seqtk_mergepe", - "outputs": [ - { - "name": "default", - "type": "input" - } - ], - "position": { - "left": 1100, - "top": 1070 - }, - "post_job_actions": {}, - "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/seqtk/seqtk_mergepe/1.5+galaxy0", - "tool_shed_repository": { - "changeset_revision": "8511b6d85fc7", - "name": "seqtk", - "owner": "iuc", - "tool_shed": "toolshed.g2.bx.psu.edu" - }, - "tool_state": "{\"in_fq1\": {\"__class__\": \"ConnectedValue\"}, \"in_fq2\": {\"__class__\": \"ConnectedValue\"}, \"__page__\": 0, \"__rerun_remap_job_id__\": null}", - "tool_uuid": null, - "tool_version": "1.5+galaxy0", - "type": "tool", - "uuid": "3f0179f5-99ea-47b3-9e97-35e7b39dedab", - "when": null, - "workflow_outputs": [] - }, "11": { - "annotation": "", + "annotation": "Cross assemblies with individual read mates; rebuild pairs without rewriting FASTQ data.", "content_id": "__CROSS_PRODUCT_NESTED__", "errors": null, "id": 11, @@ -476,12 +394,12 @@ "output_name": "output" }, "input_b": { - "id": 10, - "output_name": "default" + "id": 51, + "output_name": "output" } }, "inputs": [], - "label": "Cross product of assemblies and reads", + "label": "Cross product of assemblies and flattened reads", "name": "Nested Cross Product", "outputs": [ { @@ -507,54 +425,6 @@ "when": null, "workflow_outputs": [] }, - "12": { - "annotation": "", - "content_id": "toolshed.g2.bx.psu.edu/repos/devteam/fastq_paired_end_deinterlacer/fastq_paired_end_deinterlacer/1.2+galaxy0", - "errors": null, - "id": 12, - "input_connections": { - "input_file": { - "id": 11, - "output_name": "output_b" - } - }, - "inputs": [], - "label": "FASTQ de-interlacer reads", - "name": "FASTQ de-interlacer", - "outputs": [ - { - "name": "pairs", - "type": "input" - }, - { - "name": "output1_singles_file", - "type": "input" - }, - { - "name": "output2_singles_file", - "type": "input" - } - ], - "position": { - "left": 2100, - "top": 770 - }, - "post_job_actions": {}, - "tool_id": "toolshed.g2.bx.psu.edu/repos/devteam/fastq_paired_end_deinterlacer/fastq_paired_end_deinterlacer/1.2+galaxy0", - "tool_shed_repository": { - "changeset_revision": "c48cf4699be7", - "name": "fastq_paired_end_deinterlacer", - "owner": "devteam", - "tool_shed": "toolshed.g2.bx.psu.edu" - }, - "tool_state": "{\"input_file\": {\"__class__\": \"ConnectedValue\"}, \"__page__\": 0, \"__rerun_remap_job_id__\": null}", - "tool_uuid": null, - "tool_version": "1.2+galaxy0", - "type": "tool", - "uuid": "f2ceb841-7e7a-4fef-a75a-ebe9588ec0b8", - "when": null, - "workflow_outputs": [] - }, "14": { "annotation": "", "content_id": "toolshed.g2.bx.psu.edu/repos/devteam/bowtie2/bowtie2/2.5.5+galaxy0", @@ -562,12 +432,12 @@ "id": 14, "input_connections": { "library|input_1": { - "id": 12, - "output_name": "pairs" + "id": 52, + "output_name": "output" }, "reference_genome|own_file": { - "id": 11, - "output_name": "output_a" + "id": 53, + "output_name": "output" } }, "inputs": [ @@ -2255,6 +2125,63 @@ "uuid": "cc7e7b6a-c6c3-402a-bf36-362369856db9", "when": null, "workflow_outputs": [] + }, + "51": { + "annotation": "Flatten list:paired to a list using the final _forward/_reverse suffix; sample names, including underscores, are preserved.", + "content_id": "__FLATTEN__", + "errors": null, + "id": 51, + "input_connections": {"input": {"id": 0, "output_name": "output"}}, + "inputs": [], + "label": "Flatten read pairs", + "name": "Flatten collection", + "outputs": [{"name": "output", "type": "input"}], + "position": {"left": 1100, "top": 1070}, + "tool_id": "__FLATTEN__", + "tool_state": "{\"input\": {\"__class__\": \"ConnectedValue\"}, \"join_identifier\": \"_\", \"__page__\": null, \"__rerun_remap_job_id__\": null}", + "tool_version": "1.0.0", + "type": "tool", + "uuid": "13edb836-8c44-4618-b463-72b05e40a155", + "when": null, + "workflow_outputs": [] + }, + "52": { + "annotation": "Rebuild list:list:paired: assembly > read sample > forward/reverse. Dataset references reuse the original FASTQ files.", + "content_id": "__APPLY_RULES__", + "errors": null, + "id": 52, + "input_connections": {"input": {"id": 11, "output_name": "output_b"}}, + "inputs": [], + "label": "Rebuild read pairs per assembly", + "name": "Apply rules", + "outputs": [{"name": "output", "type": "input"}], + "position": {"left": 2100, "top": 770}, + "tool_id": "__APPLY_RULES__", + "tool_state": "{\"input\": {\"__class__\": \"ConnectedValue\"}, \"rules\": {\"rules\": [{\"type\": \"add_column_metadata\", \"value\": \"identifier0\"}, {\"type\": \"add_column_metadata\", \"value\": \"identifier1\"}, {\"type\": \"add_column_regex\", \"target_column\": 1, \"expression\": \"^(.+)_(forward|reverse)$\", \"group_count\": 2}], \"mapping\": [{\"type\": \"list_identifiers\", \"columns\": [0, 2]}, {\"type\": \"paired_identifier\", \"columns\": [3]}]}, \"__page__\": null, \"__rerun_remap_job_id__\": null}", + "tool_version": "1.1.0", + "type": "tool", + "uuid": "3d632024-5937-4665-b8a0-9c4d094762ad", + "when": null, + "workflow_outputs": [] + }, + "53": { + "annotation": "Keep the forward row once per sample, producing list:list references aligned with the read-pair matrix.", + "content_id": "__APPLY_RULES__", + "errors": null, + "id": 53, + "input_connections": {"input": {"id": 11, "output_name": "output_a"}}, + "inputs": [], + "label": "References per assembly and read sample", + "name": "Apply rules", + "outputs": [{"name": "output", "type": "input"}], + "position": {"left": 2100, "top": 1070}, + "tool_id": "__APPLY_RULES__", + "tool_state": "{\"input\": {\"__class__\": \"ConnectedValue\"}, \"rules\": {\"rules\": [{\"type\": \"add_column_metadata\", \"value\": \"identifier0\"}, {\"type\": \"add_column_metadata\", \"value\": \"identifier1\"}, {\"type\": \"add_filter_regex\", \"target_column\": 1, \"expression\": \"_forward$\", \"invert\": false}, {\"type\": \"add_column_regex\", \"target_column\": 1, \"expression\": \"^(.+)_(forward|reverse)$\", \"group_count\": 2}], \"mapping\": [{\"type\": \"list_identifiers\", \"columns\": [0, 2]}]}, \"__page__\": null, \"__rerun_remap_job_id__\": null}", + "tool_version": "1.1.0", + "type": "tool", + "uuid": "7d49bad3-3650-4ac9-a5c4-d9c0090b7375", + "when": null, + "workflow_outputs": [] } }, "tags": [ @@ -2262,5 +2189,5 @@ ], "uuid": "9b674961-0b3c-4f8f-97e6-f225e018198f", "version": 1, - "readme": "# Multi-sample binning workflow\n\nThis workflow uses paired-end reads and their corresponding assemblies, generated by any assembler, to produce metagenomic bins using multiple binning tools. Each binner uses a different approach to identify and group contigs into bins.\n\nIn contrast to single-sample binning, the multi-sample approach uses information across multiple samples during binning. Reads from each sample are mapped against the assemblies from all samples to generate cross-sample coverage information. This provides the binners with additional information that can help distinguish contigs based on their abundance patterns across samples.\n\nIn this workflow, each sample's reads are mapped against each sample's assembly, and each assembly is subsequently binned separately using the cross-sample coverage information. This differs from multi-sample approaches that concatenate assemblies and perform a joint binning step before splitting the resulting bins by sample.\n\nThe multi-sample approach is more computationally demanding than single-sample binning because it requires additional read mappings and processes a larger amount of data. When the reads of N samples are mapped against N assemblies, the number of mapping jobs, the number of BAM files and the number of intermediate read copies all scale as N², so storage requirements grow quickly with the number of samples. However, the resulting cross-sample coverage information can improve binning, particularly when organisms show different relative abundances across samples. For a large number of samples, or for samples from unrelated environments where cross-sample coverage adds little information, single-sample binning is the cheaper choice.\n\nAfter binning is complete, the workflow uses one or both of the available refinement tools to combine and refine the results from the individual binners, with the goal of generating higher-quality bins.\n\nThis workflow is the binning section, with the added multi-sample logic, of the [MAGs generation workflow](../mags-building/), extracted so that MAGs generation and other workflows can reuse it instead of maintaining their own copy (check the [FAIRyMAGs repository](https://github.com/usegalaxy-eu/FAIRyMAGs) for the complete workflow suite and its capabilities).\nA dedicated [learning pathway](https://galaxyproject.github.io/training-material/learning-pathways/mags.html) provides detailed guidance on MAG generation in Galaxy, including the binning tools used here.\n\n## Inputs\n\n- **Paired-end reads**: a `list:paired` collection with one element per sample.\n - Reads should be quality-trimmed and host-removed, e.g. with the IWC [short-read quality control](../../read-preprocessing/short-read-qc-trimming/) and [host contamination removal](../host-contamination-removal/host-contamination-removal-short-reads/) workflows.\n - The sample names are used as coverage columns for the binners.\n- **Assemblies**: a `list` collection of assemblies from any assembler (e.g. MEGAHIT or metaSPAdes).\n - Every sample's reads are mapped against every assembly, so the element identifiers of the two collections do not need to match. The number of assemblies does not need to equal the number of read samples either: a single co-assembly binned with the coverage of all samples is a valid input.\n- **Run COMEBin?** (default: yes): COMEBin is a deep-learning binner that often improves the results, but it is the most time- and resource-consuming step of the workflow.\n- **Bin refinement tool** (default: `Binette`): `Binette`, `DAS Tool` or `Both`.\n- **CheckM2 Database**: the CheckM2 reference database Binette uses to assess bin quality.\n- **Minimum MAG completeness percentage** (default: 40): the minimum bin completeness used by Binette; does not filter DAS Tool output.\n- **Contamination weight (Binette)** (default: 2): the contamination penalty used in Binette's scoring.\n\nSemiBin uses co-binning mode in this workflow. Its Galaxy wrapper does not expose a pretrained-model environment selector in that mode.\n\n## Automatic read length and binner selection\n\nCONCOCT read length is derived automatically using SeqKit statistics from both mates of every input sample. The workflow sums sequence lengths and read counts, divides total bases by total reads, and rounds to the nearest integer. This is a read-count-weighted mean, not an unweighted average of sample means. Multi coverage uses all original per-sample reads. No manual read-length input is required.\n\n**Run COMEBin?**, **Run SemiBin?**, **Run CONCOCT?**, **Run MetaBAT2?**, and **Run MaxBin2?** independently enable each binner; all default to **yes**. Keep at least one binner enabled. Disabled binners contribute empty candidate tables rather than blocking the selected refiner. Raw binner outputs are available only when that binner runs.\n\n## Outputs\n\n- **Coverage depth matrices**: one JGI depth table per assembly, containing coverage from all original samples.\n- **CONCOCT bins**, **MaxBin2 bins**, **MetaBAT2 bins**, **SemiBin bins** and **COMEBin bins** (if COMEBin was run): one list of bins per assembly.\n- **DAS Tool bins**, **DAS Tool summary** and **DAS Tool contigs2bin report** (if DAS Tool was run): the refined bins, a per-bin summary (completeness and redundancy based on single-copy genes) and the contig-to-bin assignments.\n- **Binette bins**, **Binette input bin quality reports** and **Binette final bin quality report** (if Binette was run): the refined bins, the CheckM2 quality of the bins from each binner, and the CheckM2 quality of the final bins.\n\n## Why use this workflow\n\nThis workflow provides a standardized and modular workflow for metagenomic binning that can be integrated into larger metagenomic analysis workflows. Its main purpose is to separate the binning step from other parts of MAG analysis, making complex workflows easier to understand, maintain, and adapt.\n\nUsing binning as an independent workflow provides better control over the inputs, binning parameters, and outputs. It also allows users to reuse the same binning strategy in different analysis pipelines without having to include unnecessary upstream or downstream steps. This modular design is particularly useful when the generated bins are intended for a specific downstream analysis, such as taxonomic classification, genome annotation, functional analysis, or benchmarking.\n\nIn contrast, the IWC Metagenome-Assembled Genomes (MAGs) generation workflow (https://iwc.galaxyproject.org/workflow/mags-building-main/) is designed as a comprehensive end-to-end solution. It performs metagenome assembly and multi-tool binning of paired short reads and optional long reads, followed by dereplication and analysis of MAG quality and abundance. This makes it well suited for users who want to generate and evaluate MAGs without requiring a specialized downstream workflow.\n\nThis binning workflow should therefore be preferred when binning needs to be incorporated as one component of a larger or more specialized analysis. It reduces workflow complexity, improves the overview of individual analysis steps, and makes it easier to modify or replace downstream analyses independently.\n\nIt should also be noted that this workflow can restrict Upstream. For example, it is possible to restrict the workflow so that the User can only use one of the two refinement tools or can restrict it to only one specific refinement tool.\n\n## Workflow logic\n\n- Preprocess reads and assemblies for binning.\n- Generate cross-sample coverage information:\n \n - Map the reads from each sample against the assemblies from all samples.\n\n- Perform binning using multiple binners:\n\n - CONCOCT\n - MaxBin2\n - MetaBAT2\n - SemiBin\n - COMEBin\n\n- Refine the resulting bins using one or both refinement tools:\n\n - DAS Tool\n - Binette\n\n## Funding\n\nThis workflow was developed as part of the [**FAIRyMAGs** project](https://elixir-europe.org/how-we-work/scientific-programme/science/bfsp/fairymags), funded as a commissioned service of the [**Biodiversity, Food Security and Pathogens (BFSP) ELIXIR Scientific Programme 2024–2028**](https://elixir-europe.org/how-we-work/scientific-programme/science/bfsp).\n\nThe project was also supported by the **European Galaxy Server**, funded by the German Federal Ministry of Education and Research (BMBF; 031 A538A de.NBI-RBC) and the **Ministry of Science, Research and the Arts Baden-Württemberg (MWK)** within the framework of **LIBIS/de.NBI Freiburg**.\n" + "readme": "# Multi-sample binning workflow\n\nThis workflow uses paired-end reads and their corresponding assemblies, generated by any assembler, to produce metagenomic bins using multiple binning tools. Each binner uses a different approach to identify and group contigs into bins.\n\nIn contrast to single-sample binning, the multi-sample approach uses information across multiple samples during binning. Reads from each sample are mapped against the assemblies from all samples to generate cross-sample coverage information. This provides the binners with additional information that can help distinguish contigs based on their abundance patterns across samples.\n\nIn this workflow, each sample's reads are mapped against each sample's assembly, and each assembly is subsequently binned separately using the cross-sample coverage information. This differs from multi-sample approaches that concatenate assemblies and perform a joint binning step before splitting the resulting bins by sample.\n\nThe multi-sample approach is more computationally demanding than single-sample binning because it requires additional read mappings and processes a larger amount of data. When the reads of N samples are mapped against N assemblies, the number of mapping jobs and BAM files scales as N², so storage requirements still grow quickly with the number of samples. The all-vs-all input matrix uses native collection operations that reference the original reads, without writing intermediate interlaced or de-interlaced FASTQ files. However, the resulting cross-sample coverage information can improve binning, particularly when organisms show different relative abundances across samples. For a large number of samples, or for samples from unrelated environments where cross-sample coverage adds little information, single-sample binning is the cheaper choice.\n\nAfter binning is complete, the workflow uses one or both of the available refinement tools to combine and refine the results from the individual binners, with the goal of generating higher-quality bins.\n\nThis workflow is the binning section, with the added multi-sample logic, of the [MAGs generation workflow](../mags-building/), extracted so that MAGs generation and other workflows can reuse it instead of maintaining their own copy (check the [FAIRyMAGs repository](https://github.com/usegalaxy-eu/FAIRyMAGs) for the complete workflow suite and its capabilities).\nA dedicated [learning pathway](https://galaxyproject.github.io/training-material/learning-pathways/mags.html) provides detailed guidance on MAG generation in Galaxy, including the binning tools used here.\n\n## Inputs\n\n- **Paired-end reads**: a `list:paired` collection with one element per sample.\n - Reads should be quality-trimmed and host-removed, e.g. with the IWC [short-read quality control](../../read-preprocessing/short-read-qc-trimming/) and [host contamination removal](../host-contamination-removal/host-contamination-removal-short-reads/) workflows.\n - The sample names are used as coverage columns for the binners.\n- **Assemblies**: a `list` collection of assemblies from any assembler (e.g. MEGAHIT or metaSPAdes).\n - Every sample's reads are mapped against every assembly, so the element identifiers of the two collections do not need to match. The number of assemblies does not need to equal the number of read samples either: a single co-assembly binned with the coverage of all samples is a valid input.\n- **Run COMEBin?** (default: yes): COMEBin is a deep-learning binner that often improves the results, but it is the most time- and resource-consuming step of the workflow.\n- **Bin refinement tool** (default: `Binette`): `Binette`, `DAS Tool` or `Both`.\n- **CheckM2 Database**: the CheckM2 reference database Binette uses to assess bin quality.\n- **Minimum MAG completeness percentage** (default: 40): the minimum bin completeness used by Binette; does not filter DAS Tool output.\n- **Contamination weight (Binette)** (default: 2): the contamination penalty used in Binette's scoring.\n\nSemiBin uses co-binning mode in this workflow. Its Galaxy wrapper does not expose a pretrained-model environment selector in that mode.\n\n## Automatic read length and binner selection\n\nCONCOCT read length is derived automatically using SeqKit statistics from both mates of every input sample. The workflow sums sequence lengths and read counts, divides total bases by total reads, and rounds to the nearest integer. This is a read-count-weighted mean, not an unweighted average of sample means. Multi coverage uses all original per-sample reads. No manual read-length input is required.\n\n**Run COMEBin?**, **Run SemiBin?**, **Run CONCOCT?**, **Run MetaBAT2?**, and **Run MaxBin2?** independently enable each binner; all default to **yes**. Keep at least one binner enabled. Disabled binners contribute empty candidate tables rather than blocking the selected refiner. Raw binner outputs are available only when that binner runs.\n\n## Outputs\n\n- **Coverage depth matrices**: one JGI depth table per assembly, containing coverage from all original samples.\n- **CONCOCT bins**, **MaxBin2 bins**, **MetaBAT2 bins**, **SemiBin bins** and **COMEBin bins** (if COMEBin was run): one list of bins per assembly.\n- **DAS Tool bins**, **DAS Tool summary** and **DAS Tool contigs2bin report** (if DAS Tool was run): the refined bins, a per-bin summary (completeness and redundancy based on single-copy genes) and the contig-to-bin assignments.\n- **Binette bins**, **Binette input bin quality reports** and **Binette final bin quality report** (if Binette was run): the refined bins, the CheckM2 quality of the bins from each binner, and the CheckM2 quality of the final bins.\n\n## Why use this workflow\n\nThis workflow provides a standardized and modular workflow for metagenomic binning that can be integrated into larger metagenomic analysis workflows. Its main purpose is to separate the binning step from other parts of MAG analysis, making complex workflows easier to understand, maintain, and adapt.\n\nUsing binning as an independent workflow provides better control over the inputs, binning parameters, and outputs. It also allows users to reuse the same binning strategy in different analysis pipelines without having to include unnecessary upstream or downstream steps. This modular design is particularly useful when the generated bins are intended for a specific downstream analysis, such as taxonomic classification, genome annotation, functional analysis, or benchmarking.\n\nIn contrast, the IWC Metagenome-Assembled Genomes (MAGs) generation workflow (https://iwc.galaxyproject.org/workflow/mags-building-main/) is designed as a comprehensive end-to-end solution. It performs metagenome assembly and multi-tool binning of paired short reads and optional long reads, followed by dereplication and analysis of MAG quality and abundance. This makes it well suited for users who want to generate and evaluate MAGs without requiring a specialized downstream workflow.\n\nThis binning workflow should therefore be preferred when binning needs to be incorporated as one component of a larger or more specialized analysis. It reduces workflow complexity, improves the overview of individual analysis steps, and makes it easier to modify or replace downstream analyses independently.\n\nIt should also be noted that this workflow can restrict Upstream. For example, it is possible to restrict the workflow so that the User can only use one of the two refinement tools or can restrict it to only one specific refinement tool.\n\n## Workflow logic\n\n- Preprocess reads and assemblies for binning.\n- Generate cross-sample coverage information:\n \n - Flatten the read pairs, form a nested cross product with the assemblies, and use Apply Rules to reconstruct an assembly × sample matrix of paired reads and matching assembly references. These operations reuse the underlying datasets; they do not rewrite read files. Sample identifiers, including underscores and `_forward`/`_reverse` suffixes in sample names, are retained by removing only the final mate suffix introduced by flattening.\n - Map the reads from each sample against the assemblies from all samples.\n\n- Perform binning using multiple binners:\n\n - CONCOCT\n - MaxBin2\n - MetaBAT2\n - SemiBin\n - COMEBin\n\n- Refine the resulting bins using one or both refinement tools:\n\n - DAS Tool\n - Binette\n\n## Funding\n\nThis workflow was developed as part of the [**FAIRyMAGs** project](https://elixir-europe.org/how-we-work/scientific-programme/science/bfsp/fairymags), funded as a commissioned service of the [**Biodiversity, Food Security and Pathogens (BFSP) ELIXIR Scientific Programme 2024–2028**](https://elixir-europe.org/how-we-work/scientific-programme/science/bfsp).\n\nThe project was also supported by the **European Galaxy Server**, funded by the German Federal Ministry of Education and Research (BMBF; 031 A538A de.NBI-RBC) and the **Ministry of Science, Research and the Arts Baden-Württemberg (MWK)** within the framework of **LIBIS/de.NBI Freiburg**.\n" } From e8a5548aa74fd0d60814bb35b3fe64fdda991654 Mon Sep 17 00:00:00 2001 From: paulzierep Date: Wed, 21 Oct 2026 13:33:52 +0200 Subject: [PATCH 12/17] Clarify workflow step labels, embedded documentation and output tags --- .../multi-sample-binning.ga | 191 +++++++++++------- 1 file changed, 119 insertions(+), 72 deletions(-) diff --git a/workflows/microbiome/multi-sample-binning/multi-sample-binning.ga b/workflows/microbiome/multi-sample-binning/multi-sample-binning.ga index 3bdf9677a3..9236e2ddc3 100644 --- a/workflows/microbiome/multi-sample-binning/multi-sample-binning.ga +++ b/workflows/microbiome/multi-sample-binning/multi-sample-binning.ga @@ -15,7 +15,7 @@ 260 ], "data": { - "text": "## 1. Multi-sample binning\n\nEmbedded subworkflow. Inputs at left; dependencies flow left to right.\n\nNamed outputs connect to the parent without expanding individual steps." + "text": "## Multi-sample binning\n\n**Coverage:** flatten the original read pairs, form an assembly × read-sample cross product, then rebuild paired collections and matching references with Apply Rules. These operations reuse the original FASTQ datasets. Bowtie2 maps every sample to every assembly.\n\n**Binning:** summarize all sample alignments per assembly into coverage matrices. Enabled SemiBin, CONCOCT, MetaBAT2, MaxBin2 and COMEBin branches use cross-sample coverage. CONCOCT read length is estimated automatically from both mates.\n\n**Refinement:** prepare contig assignments for DAS Tool and candidate FASTAs for Binette. Return selected refined bins, quality reports and coverage matrices. Disabled branches are handled through optional bridges." } }, { @@ -250,7 +250,7 @@ "workflow_outputs": [] }, "7": { - "annotation": "", + "annotation": "Split contigs into fragments for CONCOCT. Split long contigs into fragments so coverage and composition can be clustered together.", "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/concoct_cut_up_fasta/concoct_cut_up_fasta/1.1.0+galaxy3", "errors": null, "id": 7, @@ -261,7 +261,7 @@ } }, "inputs": [], - "label": "CONCOCT: Cut up contigs", + "label": "Split contigs into fragments for CONCOCT", "name": "CONCOCT: Cut up contigs", "outputs": [ { @@ -294,7 +294,7 @@ "workflow_outputs": [] }, "8": { - "annotation": "", + "annotation": "Run DAS Tool?. Convert the selected mode to a boolean that enables this branch only when requested.", "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/map_param_value/map_param_value/0.2.0", "errors": null, "id": 8, @@ -339,7 +339,7 @@ "workflow_outputs": [] }, "9": { - "annotation": "", + "annotation": "Run Binette?. Convert the selected mode to a boolean that enables this branch only when requested.", "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/map_param_value/map_param_value/0.2.0", "errors": null, "id": 9, @@ -384,7 +384,7 @@ "workflow_outputs": [] }, "11": { - "annotation": "Cross assemblies with individual read mates; rebuild pairs without rewriting FASTQ data.", + "annotation": "Cross product of assemblies and flattened reads. Pair each assembly with every original read sample without rewriting FASTQ data.", "content_id": "__CROSS_PRODUCT_NESTED__", "errors": null, "id": 11, @@ -426,7 +426,7 @@ "workflow_outputs": [] }, "14": { - "annotation": "", + "annotation": "Map every read sample to every assembly with Bowtie2. Align paired short reads to the selected reference assembly to measure contig coverage.", "content_id": "toolshed.g2.bx.psu.edu/repos/devteam/bowtie2/bowtie2/2.5.5+galaxy0", "errors": null, "id": 14, @@ -450,7 +450,7 @@ "name": "reference_genome" } ], - "label": "Bowtie2", + "label": "Map every read sample to every assembly with Bowtie2", "name": "Bowtie2", "outputs": [ { @@ -479,7 +479,7 @@ "workflow_outputs": [] }, "15": { - "annotation": "", + "annotation": "Calculate fragment coverage for CONCOCT. Summarize alignment coverage over the CONCOCT contig fragments.", "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/concoct_coverage_table/concoct_coverage_table/1.1.0+galaxy3", "errors": null, "id": 15, @@ -499,7 +499,7 @@ "name": "mode" } ], - "label": "CONCOCT: Generate the input coverage table", + "label": "Calculate fragment coverage for CONCOCT", "name": "CONCOCT: Generate the input coverage table", "outputs": [ { @@ -528,7 +528,7 @@ "workflow_outputs": [] }, "16": { - "annotation": "", + "annotation": "Bin contigs with COMEBin. Use sequence and coverage representations to infer candidate genome bins when enabled.", "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/comebin/comebin/1.1.0+galaxy1", "errors": null, "id": 16, @@ -547,7 +547,7 @@ } }, "inputs": [], - "label": "COMEBin", + "label": "Bin contigs with COMEBin", "name": "COMEBin", "outputs": [ { @@ -590,7 +590,7 @@ ] }, "17": { - "annotation": "", + "annotation": "Calculate contig depths across all read samples per assembly. Summarize mapped-read depth and variance for each contig and read sample.", "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/metabat2_jgi_summarize_bam_contig_depths/metabat2_jgi_summarize_bam_contig_depths/2.18.23+galaxy0", "errors": null, "id": 17, @@ -606,7 +606,7 @@ "name": "mode" } ], - "label": "Calculate contig depths (together)", + "label": "Calculate contig depths across all read samples per assembly", "name": "Calculate contig depths", "outputs": [ { @@ -618,7 +618,15 @@ "left": 3600, "top": 1070 }, - "post_job_actions": {}, + "post_job_actions": { + "TagDatasetActionoutputDepth": { + "action_arguments": { + "tags": "coverage-depth-matrices" + }, + "action_type": "TagDatasetAction", + "output_name": "outputDepth" + } + }, "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/metabat2_jgi_summarize_bam_contig_depths/metabat2_jgi_summarize_bam_contig_depths/2.18.23+galaxy0", "tool_shed_repository": { "changeset_revision": "45f6d77d37b7", @@ -641,7 +649,7 @@ ] }, "18": { - "annotation": "", + "annotation": "Bin contigs with SemiBin. Use contig sequence features and coverage to infer candidate genome bins.", "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/semibin/semibin/2.1.0+galaxy1", "errors": null, "id": 18, @@ -665,7 +673,7 @@ "name": "mode" } ], - "label": "SemiBin", + "label": "Bin contigs with SemiBin", "name": "SemiBin", "outputs": [ { @@ -708,7 +716,7 @@ ] }, "19": { - "annotation": "", + "annotation": "Cluster contig fragments with CONCOCT.", "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/concoct/concoct/1.1.0+galaxy3", "errors": null, "id": 19, @@ -736,7 +744,7 @@ "name": "advanced" } ], - "label": "CONCOCT", + "label": "Cluster contig fragments with CONCOCT", "name": "CONCOCT", "outputs": [ { @@ -773,7 +781,7 @@ "workflow_outputs": [] }, "20": { - "annotation": "", + "annotation": "Bridge optional COMEBin bins for downstream conversion. Pass through the available result while allowing the upstream optional branch to be skipped.", "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/pick_value/pick_value/0.2.0", "errors": null, "id": 20, @@ -784,7 +792,7 @@ } }, "inputs": [], - "label": null, + "label": "Bridge optional COMEBin bins for downstream conversion", "name": "Pick parameter value", "outputs": [ { @@ -813,7 +821,7 @@ "workflow_outputs": [] }, "21": { - "annotation": "", + "annotation": "Bin contigs with MetaBAT2. Combine contig composition and coverage to infer candidate genome bins.", "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/metabat2/metabat2/2.18.23+galaxy0", "errors": null, "id": 21, @@ -832,7 +840,7 @@ } }, "inputs": [], - "label": "MetaBAT2", + "label": "Bin contigs with MetaBAT2", "name": "MetaBAT2", "outputs": [ { @@ -875,7 +883,7 @@ ] }, "22": { - "annotation": "", + "annotation": "Bin contigs with MaxBin2. Use contig composition, coverage and marker genes to infer candidate genome bins.", "content_id": "toolshed.g2.bx.psu.edu/repos/mbernt/maxbin2/maxbin2/2.2.7+galaxy6", "errors": null, "id": 22, @@ -894,7 +902,7 @@ } }, "inputs": [], - "label": "MaxBin2", + "label": "Bin contigs with MaxBin2", "name": "MaxBin2", "outputs": [ { @@ -949,7 +957,7 @@ ] }, "23": { - "annotation": "", + "annotation": "Create contig-to-bin assignments from SemiBin. Convert FASTA bin membership to a contig-to-bin table for DAS Tool.", "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/fasta_to_contig2bin/Fasta_to_Contig2Bin/1.1.7+galaxy1", "errors": null, "id": 23, @@ -960,7 +968,7 @@ } }, "inputs": [], - "label": "generate genome bins table from SemiBin", + "label": "Create contig-to-bin assignments from SemiBin", "name": "Converts genome bins in fasta format", "outputs": [ { @@ -989,7 +997,7 @@ "workflow_outputs": [] }, "24": { - "annotation": "", + "annotation": "Merge CONCOCT fragment clusters into contig assignments. Combine fragment assignments into assignments for the original contigs.", "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/concoct_merge_cut_up_clustering/concoct_merge_cut_up_clustering/1.1.0+galaxy3", "errors": null, "id": 24, @@ -1004,7 +1012,7 @@ } }, "inputs": [], - "label": "CONCOCT: Merge cut clusters", + "label": "Merge CONCOCT fragment clusters into contig assignments", "name": "CONCOCT: Merge cut clusters", "outputs": [ { @@ -1033,7 +1041,7 @@ "workflow_outputs": [] }, "25": { - "annotation": "", + "annotation": "Create contig-to-bin assignments from COMEBin. Convert FASTA bin membership to a contig-to-bin table for DAS Tool.", "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/fasta_to_contig2bin/Fasta_to_Contig2Bin/1.1.7+galaxy1", "errors": null, "id": 25, @@ -1044,7 +1052,7 @@ } }, "inputs": [], - "label": "generate genome bins table from COMEBin", + "label": "Create contig-to-bin assignments from COMEBin", "name": "Converts genome bins in fasta format", "outputs": [ { @@ -1073,7 +1081,7 @@ "workflow_outputs": [] }, "26": { - "annotation": "", + "annotation": "Create contig-to-bin assignments from MetaBAT2. Convert FASTA bin membership to a contig-to-bin table for DAS Tool.", "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/fasta_to_contig2bin/Fasta_to_Contig2Bin/1.1.7+galaxy1", "errors": null, "id": 26, @@ -1084,7 +1092,7 @@ } }, "inputs": [], - "label": "generate genome bins table from MetaBAT2", + "label": "Create contig-to-bin assignments from MetaBAT2", "name": "Converts genome bins in fasta format", "outputs": [ { @@ -1113,7 +1121,7 @@ "workflow_outputs": [] }, "27": { - "annotation": "", + "annotation": "Create contig-to-bin assignments from MaxBin2. Convert FASTA bin membership to a contig-to-bin table for DAS Tool.", "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/fasta_to_contig2bin/Fasta_to_Contig2Bin/1.1.7+galaxy1", "errors": null, "id": 27, @@ -1124,7 +1132,7 @@ } }, "inputs": [], - "label": "generate genome bins table from MaxBin2", + "label": "Create contig-to-bin assignments from MaxBin2", "name": "Converts genome bins in fasta format", "outputs": [ { @@ -1153,7 +1161,7 @@ "workflow_outputs": [] }, "28": { - "annotation": "", + "annotation": "Extract CONCOCT bins as FASTA collections. Recover original contig sequences for each CONCOCT cluster.", "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/concoct_extract_fasta_bins/concoct_extract_fasta_bins/1.1.0+galaxy3", "errors": null, "id": 28, @@ -1172,7 +1180,7 @@ } }, "inputs": [], - "label": "CONCOCT: Extract a fasta file", + "label": "Extract CONCOCT bins as FASTA collections", "name": "CONCOCT: Extract a fasta file", "outputs": [ { @@ -1215,7 +1223,7 @@ ] }, "29": { - "annotation": "", + "annotation": "Create contig-to-bin assignments from CONCOCT. Convert FASTA bin membership to a contig-to-bin table for DAS Tool.", "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/fasta_to_contig2bin/Fasta_to_Contig2Bin/1.1.7+galaxy1", "errors": null, "id": 29, @@ -1226,7 +1234,7 @@ } }, "inputs": [], - "label": "generate genome bins table from CONCOCT", + "label": "Create contig-to-bin assignments from CONCOCT", "name": "Converts genome bins in fasta format", "outputs": [ { @@ -1255,7 +1263,7 @@ "workflow_outputs": [] }, "30": { - "annotation": "", + "annotation": "Refine candidate bins with DAS Tool. Score candidate contig assignments and select a non-redundant set of refined genome bins.", "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/das_tool/das_tool/1.1.7+galaxy1", "errors": null, "id": 30, @@ -1290,7 +1298,7 @@ } }, "inputs": [], - "label": "DAS Tool", + "label": "Refine candidate bins with DAS Tool", "name": "DAS Tool", "outputs": [ { @@ -1369,7 +1377,7 @@ ] }, "31": { - "annotation": "", + "annotation": "Collect candidate bins from enabled binners for Binette. Assemble enabled binner results into one candidate list for refinement.", "content_id": "__BUILD_LIST__", "errors": null, "id": 31, @@ -1400,7 +1408,7 @@ } }, "inputs": [], - "label": "Build genome bins list for Binette", + "label": "Collect candidate bins from enabled binners for Binette", "name": "Build list", "outputs": [ { @@ -1423,7 +1431,7 @@ "workflow_outputs": [] }, "32": { - "annotation": "", + "annotation": "Refine candidate bins with Binette. Refine candidate FASTA bins using CheckM2 quality estimates and the selected completeness and contamination settings.", "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/binette/binette/1.2.1+galaxy0", "errors": null, "id": 32, @@ -1459,7 +1467,7 @@ "name": "database_type" } ], - "label": "Binette", + "label": "Refine candidate bins with Binette", "name": "Binette", "outputs": [ { @@ -1534,7 +1542,7 @@ ] }, "33": { - "annotation": "", + "annotation": "Unzip reads for automatic read-length estimation. Separate forward and reverse mates while retaining sample identifiers.", "content_id": "__UNZIP_COLLECTION__", "errors": null, "id": 33, @@ -1592,7 +1600,7 @@ }, "inputs": [], "outputs": [], - "annotation": "", + "annotation": "Read-length statistics — forward. Count sequences and bases for read-count-weighted read-length estimation.", "position": { "left": 1100, "top": 470 @@ -1623,7 +1631,7 @@ }, "inputs": [], "outputs": [], - "annotation": "", + "annotation": "Read-length statistics — reverse. Count sequences and bases for read-count-weighted read-length estimation.", "position": { "left": 1100, "top": 770 @@ -1658,7 +1666,7 @@ }, "inputs": [], "outputs": [], - "annotation": "", + "annotation": "Combine read-length statistics.", "position": { "left": 1600, "top": 470 @@ -1689,7 +1697,7 @@ }, "inputs": [], "outputs": [], - "annotation": "", + "annotation": "Compute read-count-weighted mean length (both mates).", "position": { "left": 2100, "top": 470 @@ -1714,7 +1722,7 @@ }, "inputs": [], "outputs": [], - "annotation": "Rounded read-count-weighted mean across both mates and all input samples; selected/group-merged reads for Single, original samples for Multi.", + "annotation": "Automatic read length (CONCOCT).", "position": { "left": 2600, "top": 470 @@ -1833,7 +1841,7 @@ "workflow_outputs": [] }, "43": { - "annotation": "", + "annotation": "Bridge optional CONCOCT fragment clusters. Pass through the available result while allowing the upstream optional branch to be skipped.", "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/pick_value/pick_value/0.2.0", "errors": null, "id": 43, @@ -1844,7 +1852,7 @@ } }, "inputs": [], - "label": "Optional CONCOCT intermediate bridge — cutup_clustering_result", + "label": "Bridge optional CONCOCT fragment clusters", "name": "Pick parameter value", "outputs": [ { @@ -1873,7 +1881,7 @@ "workflow_outputs": [] }, "44": { - "annotation": "", + "annotation": "Bridge optional CONCOCT merged contig assignments. Pass through the available result while allowing the upstream optional branch to be skipped.", "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/pick_value/pick_value/0.2.0", "errors": null, "id": 44, @@ -1884,7 +1892,7 @@ } }, "inputs": [], - "label": "Optional CONCOCT intermediate bridge — cluster_file", + "label": "Bridge optional CONCOCT merged contig assignments", "name": "Pick parameter value", "outputs": [ { @@ -1913,7 +1921,7 @@ "workflow_outputs": [] }, "45": { - "annotation": "", + "annotation": "Optional bins bridge — SemiBin. Pass through the available result while allowing the upstream optional branch to be skipped.", "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/pick_value/pick_value/0.2.0", "errors": null, "id": 45, @@ -1953,7 +1961,7 @@ "workflow_outputs": [] }, "46": { - "annotation": "", + "annotation": "Optional bins bridge — MetaBAT2. Pass through the available result while allowing the upstream optional branch to be skipped.", "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/pick_value/pick_value/0.2.0", "errors": null, "id": 46, @@ -1993,7 +2001,7 @@ "workflow_outputs": [] }, "47": { - "annotation": "", + "annotation": "Optional bins bridge — MaxBin2. Pass through the available result while allowing the upstream optional branch to be skipped.", "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/pick_value/pick_value/0.2.0", "errors": null, "id": 47, @@ -2033,7 +2041,7 @@ "workflow_outputs": [] }, "48": { - "annotation": "", + "annotation": "Bridge optional CONCOCT bins. Pass through the available result while allowing the upstream optional branch to be skipped.", "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/pick_value/pick_value/0.2.0", "errors": null, "id": 48, @@ -2044,7 +2052,7 @@ } }, "inputs": [], - "label": "Optional bins bridge — CONCOCT: Extract a fasta file", + "label": "Bridge optional CONCOCT bins", "name": "Pick parameter value", "outputs": [ { @@ -2127,16 +2135,29 @@ "workflow_outputs": [] }, "51": { - "annotation": "Flatten list:paired to a list using the final _forward/_reverse suffix; sample names, including underscores, are preserved.", + "annotation": "Flatten read pairs. Remove collection nesting so results can be pooled or combined; existing datasets are reused.", "content_id": "__FLATTEN__", "errors": null, "id": 51, - "input_connections": {"input": {"id": 0, "output_name": "output"}}, + "input_connections": { + "input": { + "id": 0, + "output_name": "output" + } + }, "inputs": [], "label": "Flatten read pairs", "name": "Flatten collection", - "outputs": [{"name": "output", "type": "input"}], - "position": {"left": 1100, "top": 1070}, + "outputs": [ + { + "name": "output", + "type": "input" + } + ], + "position": { + "left": 1100, + "top": 1070 + }, "tool_id": "__FLATTEN__", "tool_state": "{\"input\": {\"__class__\": \"ConnectedValue\"}, \"join_identifier\": \"_\", \"__page__\": null, \"__rerun_remap_job_id__\": null}", "tool_version": "1.0.0", @@ -2146,16 +2167,29 @@ "workflow_outputs": [] }, "52": { - "annotation": "Rebuild list:list:paired: assembly > read sample > forward/reverse. Dataset references reuse the original FASTQ files.", + "annotation": "Rebuild read pairs per assembly. Use collection identifiers to arrange datasets into the structure required by the next step; sequence files are not rewritten.", "content_id": "__APPLY_RULES__", "errors": null, "id": 52, - "input_connections": {"input": {"id": 11, "output_name": "output_b"}}, + "input_connections": { + "input": { + "id": 11, + "output_name": "output_b" + } + }, "inputs": [], "label": "Rebuild read pairs per assembly", "name": "Apply rules", - "outputs": [{"name": "output", "type": "input"}], - "position": {"left": 2100, "top": 770}, + "outputs": [ + { + "name": "output", + "type": "input" + } + ], + "position": { + "left": 2100, + "top": 770 + }, "tool_id": "__APPLY_RULES__", "tool_state": "{\"input\": {\"__class__\": \"ConnectedValue\"}, \"rules\": {\"rules\": [{\"type\": \"add_column_metadata\", \"value\": \"identifier0\"}, {\"type\": \"add_column_metadata\", \"value\": \"identifier1\"}, {\"type\": \"add_column_regex\", \"target_column\": 1, \"expression\": \"^(.+)_(forward|reverse)$\", \"group_count\": 2}], \"mapping\": [{\"type\": \"list_identifiers\", \"columns\": [0, 2]}, {\"type\": \"paired_identifier\", \"columns\": [3]}]}, \"__page__\": null, \"__rerun_remap_job_id__\": null}", "tool_version": "1.1.0", @@ -2165,16 +2199,29 @@ "workflow_outputs": [] }, "53": { - "annotation": "Keep the forward row once per sample, producing list:list references aligned with the read-pair matrix.", + "annotation": "References per assembly and read sample. Use collection identifiers to arrange datasets into the structure required by the next step; sequence files are not rewritten.", "content_id": "__APPLY_RULES__", "errors": null, "id": 53, - "input_connections": {"input": {"id": 11, "output_name": "output_a"}}, + "input_connections": { + "input": { + "id": 11, + "output_name": "output_a" + } + }, "inputs": [], "label": "References per assembly and read sample", "name": "Apply rules", - "outputs": [{"name": "output", "type": "input"}], - "position": {"left": 2100, "top": 1070}, + "outputs": [ + { + "name": "output", + "type": "input" + } + ], + "position": { + "left": 2100, + "top": 1070 + }, "tool_id": "__APPLY_RULES__", "tool_state": "{\"input\": {\"__class__\": \"ConnectedValue\"}, \"rules\": {\"rules\": [{\"type\": \"add_column_metadata\", \"value\": \"identifier0\"}, {\"type\": \"add_column_metadata\", \"value\": \"identifier1\"}, {\"type\": \"add_filter_regex\", \"target_column\": 1, \"expression\": \"_forward$\", \"invert\": false}, {\"type\": \"add_column_regex\", \"target_column\": 1, \"expression\": \"^(.+)_(forward|reverse)$\", \"group_count\": 2}], \"mapping\": [{\"type\": \"list_identifiers\", \"columns\": [0, 2]}]}, \"__page__\": null, \"__rerun_remap_job_id__\": null}", "tool_version": "1.1.0", From 3b245c521467695c07cd20b12b869444193619a4 Mon Sep 17 00:00:00 2001 From: paulzierep Date: Wed, 21 Oct 2026 15:53:56 +0200 Subject: [PATCH 13/17] Assert empty COMEBin collections when the binner is disabled --- .../multi-sample-binning/multi-sample-binning-tests.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/workflows/microbiome/multi-sample-binning/multi-sample-binning-tests.yml b/workflows/microbiome/multi-sample-binning/multi-sample-binning-tests.yml index 5daa4c765d..2628c03a09 100644 --- a/workflows/microbiome/multi-sample-binning/multi-sample-binning-tests.yml +++ b/workflows/microbiome/multi-sample-binning/multi-sample-binning-tests.yml @@ -77,13 +77,14 @@ min: 1 class: Collection COMEBin bins: + # COMEBin is disabled: preserve sample structure but emit no bins. element_tests: Mock1: class: Collection - min: 1 + count: 0 Mock2: class: Collection - min: 1 + count: 0 class: Collection Binette bins: element_tests: From 31c3dccd5f2f9bbd410cc6d56793553977a04ac3 Mon Sep 17 00:00:00 2001 From: paulzierep Date: Thu, 22 Oct 2026 20:40:41 +0200 Subject: [PATCH 14/17] Use Yes/No selectors for binner toggles and document each step Replace the five boolean binner toggles with Yes/No selectors gated through map_param_value steps, reorder the inputs so reads and assemblies come first, group the workflow into annotated frames, and rewrite step annotations and the README to explain what each step does. --- .../multi-sample-binning/CHANGELOG.md | 3 + .../microbiome/multi-sample-binning/README.md | 95 +- .../multi-sample-binning-tests.yml | 2 +- .../multi-sample-binning.ga | 2817 +++++++++-------- 4 files changed, 1635 insertions(+), 1282 deletions(-) diff --git a/workflows/microbiome/multi-sample-binning/CHANGELOG.md b/workflows/microbiome/multi-sample-binning/CHANGELOG.md index 49225d0065..61813a9de9 100644 --- a/workflows/microbiome/multi-sample-binning/CHANGELOG.md +++ b/workflows/microbiome/multi-sample-binning/CHANGELOG.md @@ -13,4 +13,7 @@ - Document the absence of an environment selector in SemiBin co mode. - Disable COMEBin in the CI tests, because it runs the longest of all binners and keeps the test suite close to the CI time limit. The other binners and all refinement outputs remain covered, and the workflow still enables COMEBin by default. - Reduce the CI test fixture to two mock samples, so the cross-sample alignment matrix stays small and the test runs well within the time limit. Coverage-matrix assertions are updated to the two-sample column count. +- Replace the binner toggles with explicit `Yes`/`No` selections (default: `Yes`), converted to the boolean that gates each binner branch. +- Order the inputs as assemblies, reads, binners, refinement and Binette settings, and group the tools in frames for inputs, coverage, binning and refinement, each with its own explanation. +- Describe what each step does in its annotation instead of repeating the step label, and document every step in its own README section. - First release diff --git a/workflows/microbiome/multi-sample-binning/README.md b/workflows/microbiome/multi-sample-binning/README.md index 727ffa4862..9e94cdd32e 100644 --- a/workflows/microbiome/multi-sample-binning/README.md +++ b/workflows/microbiome/multi-sample-binning/README.md @@ -1,78 +1,87 @@ # Multi-sample binning workflow -This workflow uses paired-end reads and their corresponding assemblies, generated by any assembler, to produce metagenomic bins using multiple binning tools. Each binner uses a different approach to identify and group contigs into bins. +This workflow turns metagenomic assemblies into metagenomic bins with five binners (CONCOCT, MaxBin2, MetaBAT2, SemiBin and COMEBin), using cross-sample read coverage, and refines the bins with DAS Tool and/or Binette. -In contrast to single-sample binning, the multi-sample approach uses information across multiple samples during binning. Reads from each sample are mapped against the assemblies from all samples to generate cross-sample coverage information. This provides the binners with additional information that can help distinguish contigs based on their abundance patterns across samples. +It is the binning part of the [MAGs generation workflow](../mags-building/), with the multi-sample logic added. It is extracted as its own workflow so that MAG generation and other workflows can reuse it instead of maintaining their own copy (check the [FAIRyMAGs repository](https://github.com/usegalaxy-eu/FAIRyMAGs) for the complete workflow suite and its capabilities). +A dedicated [learning pathway](https://galaxyproject.github.io/training-material/learning-pathways/mags.html) provides detailed guidance on MAG generation in Galaxy, including the binning tools used here. -In this workflow, each sample's reads are mapped against each sample's assembly, and each assembly is subsequently binned separately using the cross-sample coverage information. This differs from multi-sample approaches that concatenate assemblies and perform a joint binning step before splitting the resulting bins by sample. +## How multi-sample binning works -The multi-sample approach is more computationally demanding than single-sample binning because it requires additional read mappings and processes a larger amount of data. When the reads of N samples are mapped against N assemblies, the number of mapping jobs and BAM files scales as N², so storage requirements still grow quickly with the number of samples. The all-vs-all input matrix uses native collection operations that reference the original reads, without writing intermediate interlaced or de-interlaced FASTQ files. However, the resulting cross-sample coverage information can improve binning, particularly when organisms show different relative abundances across samples. For a large number of samples, or for samples from unrelated environments where cross-sample coverage adds little information, single-sample binning is the cheaper choice. +In single-sample binning, each assembly is binned with the coverage of its own reads. In multi-sample binning, the reads of every sample are mapped against the assembly of every sample, so each contig gets one coverage profile per sample. Binners can then separate organisms that have similar composition but different abundance patterns across samples. -After binning is complete, the workflow uses one or both of the available refinement tools to combine and refine the results from the individual binners, with the goal of generating higher-quality bins. +Two details are worth knowing before starting: -This workflow is the binning section, with the added multi-sample logic, of the [MAGs generation workflow](../mags-building/), extracted so that MAGs generation and other workflows can reuse it instead of maintaining their own copy (check the [FAIRyMAGs repository](https://github.com/usegalaxy-eu/FAIRyMAGs) for the complete workflow suite and its capabilities). -A dedicated [learning pathway](https://galaxyproject.github.io/training-material/learning-pathways/mags.html) provides detailed guidance on MAG generation in Galaxy, including the binning tools used here. +- Each sample's reads are mapped against each sample's assembly, and every assembly is binned on its own. The workflow does not concatenate all assemblies into one co-assembly and split the resulting bins afterwards. +- The mapping workload grows as N² for N samples: N read sets × N assemblies. Storage grows quickly too, even though the workflow reuses the original FASTQ datasets instead of writing intermediate read files. + +For many samples, or for samples from unrelated environments where cross-sample coverage adds little, [single-sample binning](../single-sample-binning/) is the cheaper choice. ## Inputs +- **Assemblies**: a `list` collection of assemblies from any assembler (e.g. MEGAHIT or metaSPAdes). + - Every sample's reads are mapped against every assembly, so the element identifiers of the reads and assemblies do not need to match. + - The number of assemblies does not need to equal the number of read samples: a single co-assembly binned with the coverage of all samples is a valid input. - **Paired-end reads**: a `list:paired` collection with one element per sample. - Reads should be quality-trimmed and host-removed, e.g. with the IWC [short-read quality control](../../read-preprocessing/short-read-qc-trimming/) and [host contamination removal](../host-contamination-removal/host-contamination-removal-short-reads/) workflows. - - The sample names are used as coverage columns for the binners. -- **Assemblies**: a `list` collection of assemblies from any assembler (e.g. MEGAHIT or metaSPAdes). - - Every sample's reads are mapped against every assembly, so the element identifiers of the two collections do not need to match. The number of assemblies does not need to equal the number of read samples either: a single co-assembly binned with the coverage of all samples is a valid input. -- **Run COMEBin?** (default: yes): COMEBin is a deep-learning binner that often improves the results, but it is the most time- and resource-consuming step of the workflow. + - The sample names become the coverage columns of the binners. +- **Run COMEBin?**, **Run SemiBin?**, **Run CONCOCT?**, **Run MetaBAT2?** and **Run MaxBin2?** (default: `Yes`): enable or skip each binner independently. + - Keep at least one binner enabled. + - COMEBin is the most time- and resource-consuming binner. - **Bin refinement tool** (default: `Binette`): `Binette`, `DAS Tool` or `Both`. - **CheckM2 Database**: the CheckM2 reference database Binette uses to assess bin quality. -- **Minimum MAG completeness percentage** (default: 40): the minimum bin completeness used by Binette; does not filter DAS Tool output. +- **Minimum MAG completeness percentage** (default: 40): the minimum bin completeness used by Binette. It does not filter DAS Tool output. - **Contamination weight (Binette)** (default: 2): the contamination penalty used in Binette's scoring. -SemiBin uses co-binning mode in this workflow. Its Galaxy wrapper does not expose a pretrained-model environment selector in that mode. +## Step 1: Coverage -## Automatic read length and binner selection +This step produces the coverage information every binner needs. -CONCOCT read length is derived automatically using SeqKit statistics from both mates of every input sample. The workflow sums sequence lengths and read counts, divides total bases by total reads, and rounds to the nearest integer. This is a read-count-weighted mean, not an unweighted average of sample means. Multi coverage uses all original per-sample reads. No manual read-length input is required. +1. The read pairs of all samples are flattened into one flat list of files, and the assemblies are used as they are. +2. A nested cross product pairs each assembly with every flattened read file. +3. Apply Rules rebuilds, for each assembly, the paired reads of each sample and the matching assembly reference. These are collection operations on the original datasets: no interlaced or de-interlaced FASTQ file is written. +4. Bowtie2 maps every sample against every assembly. +5. Contig depths are summarised per assembly with `jgi_summarize_bam_contig_depths`, which yields one coverage matrix per assembly with the coverage and variance of every sample. +6. CONCOCT additionally needs the coverage of its contig fragments, which is computed separately, and the mean read length, which is estimated from both mates of every sample with SeqKit statistics. The estimate is the read-count-weighted mean (total bases divided by total reads), not an average of the per-sample means. No manual read length is required. -**Run COMEBin?**, **Run SemiBin?**, **Run CONCOCT?**, **Run MetaBAT2?**, and **Run MaxBin2?** independently enable each binner; all default to **yes**. Keep at least one binner enabled. Disabled binners contribute empty candidate tables rather than blocking the selected refiner. Raw binner outputs are available only when that binner runs. +## Step 2: Binning -## Outputs - -- **Coverage depth matrices**: one JGI depth table per assembly, containing coverage from all original samples. -- **CONCOCT bins**, **MaxBin2 bins**, **MetaBAT2 bins**, **SemiBin bins** and **COMEBin bins** (if COMEBin was run): one list of bins per assembly. -- **DAS Tool bins**, **DAS Tool summary** and **DAS Tool contigs2bin report** (if DAS Tool was run): the refined bins, a per-bin summary (completeness and redundancy based on single-copy genes) and the contig-to-bin assignments. -- **Binette bins**, **Binette input bin quality reports** and **Binette final bin quality report** (if Binette was run): the refined bins, the CheckM2 quality of the bins from each binner, and the CheckM2 quality of the final bins. +Each assembly is binned separately by every enabled binner. -## Why use this workflow +| Binner | Inputs used | +| --- | --- | +| SemiBin | Contig composition and cross-sample coverage, in co-binning mode | +| CONCOCT | Contig fragments, their coverage table and the estimated read length; fragment clusters are merged back to contigs | +| MetaBAT2 | Contig composition and cross-sample coverage | +| MaxBin2 | Contig composition, cross-sample coverage and marker genes | +| COMEBin | Deep-learning binning from contig sequence and coverage; optional | -This workflow provides a standardized and modular workflow for metagenomic binning that can be integrated into larger metagenomic analysis workflows. Its main purpose is to separate the binning step from other parts of MAG analysis, making complex workflows easier to understand, maintain, and adapt. +A binner set to `No` is skipped, and its candidate results are replaced by empty collections so that the refinement steps keep their structure. Raw binner outputs are only available for binners that ran. -Using binning as an independent workflow provides better control over the inputs, binning parameters, and outputs. It also allows users to reuse the same binning strategy in different analysis pipelines without having to include unnecessary upstream or downstream steps. This modular design is particularly useful when the generated bins are intended for a specific downstream analysis, such as taxonomic classification, genome annotation, functional analysis, or benchmarking. +## Step 3: Refinement -In contrast, the IWC Metagenome-Assembled Genomes (MAGs) generation workflow (https://iwc.galaxyproject.org/workflow/mags-building-main/) is designed as a comprehensive end-to-end solution. It performs metagenome assembly and multi-tool binning of paired short reads and optional long reads, followed by dereplication and analysis of MAG quality and abundance. This makes it well suited for users who want to generate and evaluate MAGs without requiring a specialized downstream workflow. +The candidate bins are refined with one or both refinement tools: -This binning workflow should therefore be preferred when binning needs to be incorporated as one component of a larger or more specialized analysis. It reduces workflow complexity, improves the overview of individual analysis steps, and makes it easier to modify or replace downstream analyses independently. +- **DAS Tool** scores the contig-to-bin assignments of all enabled binners and selects a non-redundant set of bins. +- **Binette** evaluates the candidate FASTA bins with CheckM2 and refines them with the selected completeness and contamination settings. -It should also be noted that this workflow can restrict Upstream. For example, it is possible to restrict the workflow so that the User can only use one of the two refinement tools or can restrict it to only one specific refinement tool. +## Outputs -## Workflow logic +- **Coverage depth matrices**: one depth table per assembly, with the coverage of all original samples. +- **CONCOCT bins**, **MaxBin2 bins**, **MetaBAT2 bins**, **SemiBin bins** and **COMEBin bins** (when COMEBin ran): one list of bins per assembly. +- **DAS Tool bins**, **DAS Tool summary** and **DAS Tool contigs2bin report** (when DAS Tool ran): the refined bins, a per-bin summary of completeness and redundancy based on single-copy genes, and the contig-to-bin assignments. +- **Binette bins**, **Binette input bin quality reports** and **Binette final bin quality report** (when Binette ran): the refined bins, the CheckM2 quality of the bins from each binner, and the CheckM2 quality of the final bins. -- Preprocess reads and assemblies for binning. -- Generate cross-sample coverage information: - - - Flatten the read pairs, form a nested cross product with the assemblies, and use Apply Rules to reconstruct an assembly × sample matrix of paired reads and matching assembly references. These operations reuse the underlying datasets; they do not rewrite read files. Sample identifiers, including underscores and `_forward`/`_reverse` suffixes in sample names, are retained by removing only the final mate suffix introduced by flattening. - - Map the reads from each sample against the assemblies from all samples. +## Why use this workflow -- Perform binning using multiple binners: +Binning is a separate workflow here, so it can be reused by larger analysis pipelines without copying or rewiring it. - - CONCOCT - - MaxBin2 - - MetaBAT2 - - SemiBin - - COMEBin +- It keeps the binning parameters and outputs visible and controllable. +- It can be combined with different upstream and downstream workflows, e.g. taxonomic classification, genome annotation, functional analysis or benchmarking. +- It avoids duplicating binning logic inside every pipeline that needs it. -- Refine the resulting bins using one or both refinement tools: +The IWC [MAGs generation workflow](https://iwc.galaxyproject.org/workflow/mags-building-main/) is the comprehensive alternative: it assembles reads, bins with multiple tools, dereplicates the MAGs and reports their quality and abundance in one workflow. Use it when you want MAGs and their evaluation without a specialised downstream workflow, and use this binning workflow when binning is one component of a larger analysis. - - DAS Tool - - Binette +Through the workflow editor, an upstream or downstream workflow can also restrict this one, for example to a single refinement tool. ## Funding diff --git a/workflows/microbiome/multi-sample-binning/multi-sample-binning-tests.yml b/workflows/microbiome/multi-sample-binning/multi-sample-binning-tests.yml index 2628c03a09..9ed7f0c30c 100644 --- a/workflows/microbiome/multi-sample-binning/multi-sample-binning-tests.yml +++ b/workflows/microbiome/multi-sample-binning/multi-sample-binning-tests.yml @@ -34,7 +34,7 @@ - class: File identifier: Mock2 location: https://zenodo.org/records/22982485/files/Mock2.fasta - Run COMEBin?: false + Run COMEBin?: 'No' Bin refinement tool: Both CheckM2 Database: 1.0.2 Minimum MAG completeness percentage: 40 diff --git a/workflows/microbiome/multi-sample-binning/multi-sample-binning.ga b/workflows/microbiome/multi-sample-binning/multi-sample-binning.ga index 9236e2ddc3..fbcc967ad3 100644 --- a/workflows/microbiome/multi-sample-binning/multi-sample-binning.ga +++ b/workflows/microbiome/multi-sample-binning/multi-sample-binning.ga @@ -4,47 +4,68 @@ "comments": [ { "id": 0, + "type": "frame", + "color": "blue", + "position": [ + 110, + 80 + ], + "size": [ + 460, + 3520 + ], + "data": { + "title": "Inputs and binner selection" + }, + "child_steps": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10 + ], + "child_comments": [ + 1 + ] + }, + { + "id": 1, "type": "markdown", "color": "blue", "position": [ - 100, - 165 + 140, + 115 ], "size": [ - 8370, + 400, 260 ], "data": { - "text": "## Multi-sample binning\n\n**Coverage:** flatten the original read pairs, form an assembly × read-sample cross product, then rebuild paired collections and matching references with Apply Rules. These operations reuse the original FASTQ datasets. Bowtie2 maps every sample to every assembly.\n\n**Binning:** summarize all sample alignments per assembly into coverage matrices. Enabled SemiBin, CONCOCT, MetaBAT2, MaxBin2 and COMEBin branches use cross-sample coverage. CONCOCT read length is estimated automatically from both mates.\n\n**Refinement:** prepare contig assignments for DAS Tool and candidate FASTAs for Binette. Return selected refined bins, quality reports and coverage matrices. Disabled branches are handled through optional bridges." + "text": "## 1. Inputs\n\nSupply assemblies and quality-trimmed, host-removed paired-end reads. Every binner is enabled by default: select **No** to skip one. Choose the refinement tool and the Binette settings." } }, { - "id": 1, + "id": 2, "type": "frame", - "color": "blue", + "color": "turquoise", "position": [ - 70, - 130 + 710, + 80 ], "size": [ - 8430, - 3600 + 1260, + 3220 ], "data": { - "title": "Multi-sample binning" + "title": "Coverage" }, "child_steps": [ - 0, - 1, - 2, - 4, - 5, - 7, - 8, - 9, - 11, - 14, - 15, 16, 17, 18, @@ -57,7 +78,49 @@ 25, 26, 27, - 28, + 28 + ], + "child_comments": [ + 3 + ] + }, + { + "id": 3, + "type": "markdown", + "color": "turquoise", + "position": [ + 740, + 115 + ], + "size": [ + 900, + 260 + ], + "data": { + "text": "## 2. Coverage\n\nRead pairs are flattened and crossed with the assemblies, then Apply Rules rebuilds the paired reads and their references per assembly and sample without rewriting FASTQ files. Bowtie2 maps every sample against every assembly. Contig depths and CONCOCT fragment coverage summarise the alignments, and the CONCOCT read length is estimated from both mates." + } + }, + { + "id": 4, + "type": "frame", + "color": "lime", + "position": [ + 2620, + 80 + ], + "size": [ + 2410, + 3220 + ], + "data": { + "title": "Binning" + }, + "child_steps": [ + 11, + 12, + 13, + 14, + 15, 29, 30, 31, @@ -77,7 +140,44 @@ 45, 46, 47, - 48, + 48 + ], + "child_comments": [ + 5 + ] + }, + { + "id": 5, + "type": "markdown", + "color": "lime", + "position": [ + 2650, + 115 + ], + "size": [ + 1100, + 260 + ], + "data": { + "text": "## 3. Binning\n\nEach enabled binner clusters contigs into candidate bins from the cross-sample depth matrix. CONCOCT works on fragments with its own coverage table and merges them back to contigs. Disabled binners are bridged with empty collections so the downstream steps keep their structure." + } + }, + { + "id": 6, + "type": "frame", + "color": "orange", + "position": [ + 5370, + 80 + ], + "size": [ + 460, + 1720 + ], + "data": { + "title": "Refinement" + }, + "child_steps": [ 49, 50, 51, @@ -85,8 +185,24 @@ 53 ], "child_comments": [ - 0 + 7 ] + }, + { + "id": 7, + "type": "markdown", + "color": "orange", + "position": [ + 5400, + 115 + ], + "size": [ + 400, + 260 + ], + "data": { + "text": "## 4. Refinement\n\nCandidate contig assignments are collected for DAS Tool and candidate FASTA bins for Binette. Only the selected refinement tool runs. The refined bins are returned with their quality reports and coverage matrices." + } } ], "creator": [ @@ -115,68 +231,68 @@ }, "steps": { "0": { - "annotation": "Paired-end reads of each sample (list:paired). Reads should be quality-trimmed and host-removed. Each sample's reads are mapped against every assembly.", + "annotation": "Assemblies from any assembler (e.g. MEGAHIT or metaSPAdes). Identifiers do not need to match the read samples.", "content_id": null, "errors": null, "id": 0, "input_connections": {}, "inputs": [ { - "description": "Paired-end reads of each sample (list:paired). Reads should be quality-trimmed and host-removed. Each sample's reads are mapped against every assembly.", - "name": "Paired-end reads" + "description": "Assemblies from any assembler (e.g. MEGAHIT or metaSPAdes). Identifiers do not need to match the read samples.", + "name": "Assemblies" } ], - "label": "Paired-end reads", + "label": "Assemblies", "name": "Input dataset collection", "outputs": [], "position": { - "left": 100, - "top": 1970 + "left": 140, + "top": 420 }, "tool_id": null, - "tool_state": "{\"optional\": false, \"tag\": null, \"collection_type\": \"list:paired\", \"fields\": null, \"column_definitions\": null}", + "tool_state": "{\"optional\": false, \"tag\": null, \"collection_type\": \"list\", \"fields\": null, \"column_definitions\": null}", "tool_version": null, "type": "data_collection_input", - "uuid": "615f6015-446b-4af3-ad4a-afff158c58d0", + "uuid": "4fe37b5b-053f-4e82-92bc-e109f9c2fda5", "when": null, "workflow_outputs": [] }, "1": { - "annotation": "Assemblies of any assembler tool like MEGAHIT or Metaspades", + "annotation": "Paired-end reads of each sample (list:paired), quality-trimmed and host-removed. Each sample's reads are mapped against every assembly.", "content_id": null, "errors": null, "id": 1, "input_connections": {}, "inputs": [ { - "description": "Assemblies of any assembler tool like MEGAHIT or Metaspades", - "name": "Assemblies" + "description": "Paired-end reads of each sample (list:paired), quality-trimmed and host-removed. Each sample's reads are mapped against every assembly.", + "name": "Paired-end reads" } ], - "label": "Assemblies", + "label": "Paired-end reads", "name": "Input dataset collection", "outputs": [], "position": { - "left": 100, - "top": 470 + "left": 140, + "top": 720 }, "tool_id": null, - "tool_state": "{\"optional\": false, \"tag\": null, \"collection_type\": \"list\", \"fields\": null, \"column_definitions\": null}", + "tool_state": "{\"optional\": false, \"tag\": null, \"collection_type\": \"list:paired\", \"fields\": null, \"column_definitions\": null}", "tool_version": null, "type": "data_collection_input", - "uuid": "4fe37b5b-053f-4e82-92bc-e109f9c2fda5", + "uuid": "615f6015-446b-4af3-ad4a-afff158c58d0", "when": null, "workflow_outputs": [] }, "2": { - "annotation": "COMEBin might use a lot of resources, so it is optional. \n\nIt is recommended to use it!", + "annotation": "By default, all binners are enabled. Select No to disable COMEBin, the most resource-consuming binner.", "content_id": null, "errors": null, "id": 2, "input_connections": {}, "inputs": [ { - "description": "COMEBin might use a lot of resources, so it is optional. \n\nIt is recommended to use it!", + "description": "By default, all binners are enabled. Select No to disable COMEBin, the most resource-consuming binner.", "name": "Run COMEBin?" } ], @@ -184,168 +300,241 @@ "name": "Input parameter", "outputs": [], "position": { - "left": 100, - "top": 2270 + "left": 140, + "top": 1020 }, "tool_id": null, - "tool_state": "{\"parameter_type\": \"boolean\", \"optional\": false, \"default\": true, \"validators\": []}", + "tool_state": "{\"multiple\": false, \"validators\": [], \"restrictions\": [\"Yes\", \"No\"], \"parameter_type\": \"text\", \"optional\": false, \"default\": \"Yes\"}", "tool_version": null, "type": "parameter_input", "uuid": "875c3765-81ca-42a2-a8af-9eea17a90ac8", "when": null, "workflow_outputs": [] }, + "3": { + "annotation": "By default, all binners are enabled. Select No to disable SemiBin.", + "content_id": null, + "errors": null, + "id": 3, + "input_connections": {}, + "inputs": [ + { + "description": "By default, all binners are enabled. Select No to disable SemiBin.", + "name": "Run SemiBin?" + } + ], + "label": "Run SemiBin?", + "name": "Input parameter", + "outputs": [], + "position": { + "left": 140, + "top": 1320 + }, + "tool_id": null, + "tool_state": "{\"multiple\": false, \"validators\": [], \"restrictions\": [\"Yes\", \"No\"], \"parameter_type\": \"text\", \"optional\": false, \"default\": \"Yes\"}", + "tool_version": null, + "type": "parameter_input", + "uuid": "74f1e9bd-4da6-4192-befd-7cbd7c631abd", + "when": null, + "workflow_outputs": [] + }, "4": { - "annotation": "Choose between DAS Tool and/or Binette to run as a refinement step.\n\n", + "annotation": "By default, all binners are enabled. Select No to disable CONCOCT.", "content_id": null, "errors": null, "id": 4, "input_connections": {}, "inputs": [ { - "description": "Choose between DAS Tool and/or Binette to run as a refinement step.\n\n", - "name": "Bin refinement tool" + "description": "By default, all binners are enabled. Select No to disable CONCOCT.", + "name": "Run CONCOCT?" } ], - "label": "Bin refinement tool", + "label": "Run CONCOCT?", "name": "Input parameter", "outputs": [], "position": { - "left": 100, - "top": 770 + "left": 140, + "top": 1620 }, "tool_id": null, - "tool_state": "{\"multiple\": false, \"validators\": [], \"restrictions\": [\"Binette\", \"DAS Tool\", \"Both\"], \"parameter_type\": \"text\", \"optional\": false, \"default\": \"Binette\"}", + "tool_state": "{\"multiple\": false, \"validators\": [], \"restrictions\": [\"Yes\", \"No\"], \"parameter_type\": \"text\", \"optional\": false, \"default\": \"Yes\"}", "tool_version": null, "type": "parameter_input", - "uuid": "29651e13-0037-4477-a4d3-d8751fd97aa4", + "uuid": "d98d7796-08cb-4dba-82bc-dacdd65a602a", "when": null, "workflow_outputs": [] }, "5": { - "annotation": "CheckM2 reference database used by Binette to assess bin quality.", + "annotation": "By default, all binners are enabled. Select No to disable MetaBAT2.", "content_id": null, "errors": null, "id": 5, "input_connections": {}, "inputs": [ { - "description": "CheckM2 reference database used by Binette to assess bin quality.", - "name": "CheckM2 Database" + "description": "By default, all binners are enabled. Select No to disable MetaBAT2.", + "name": "Run MetaBAT2?" } ], - "label": "CheckM2 Database", + "label": "Run MetaBAT2?", "name": "Input parameter", "outputs": [], "position": { - "left": 100, - "top": 1070 + "left": 140, + "top": 1920 }, "tool_id": null, - "tool_state": "{\"multiple\": false, \"validators\": [], \"restrictOnConnections\": true, \"parameter_type\": \"text\", \"optional\": false}", + "tool_state": "{\"multiple\": false, \"validators\": [], \"restrictions\": [\"Yes\", \"No\"], \"parameter_type\": \"text\", \"optional\": false, \"default\": \"Yes\"}", "tool_version": null, "type": "parameter_input", - "uuid": "8cef62db-3352-4d17-9a00-f3de3a9990a8", + "uuid": "1b0313d7-ff9d-4e33-9718-2b4033ee3ab7", "when": null, "workflow_outputs": [] }, - "7": { - "annotation": "Split contigs into fragments for CONCOCT. Split long contigs into fragments so coverage and composition can be clustered together.", - "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/concoct_cut_up_fasta/concoct_cut_up_fasta/1.1.0+galaxy3", + "6": { + "annotation": "By default, all binners are enabled. Select No to disable MaxBin2.", + "content_id": null, "errors": null, - "id": 7, - "input_connections": { - "input_fasta": { - "id": 1, - "output_name": "output" + "id": 6, + "input_connections": {}, + "inputs": [ + { + "description": "By default, all binners are enabled. Select No to disable MaxBin2.", + "name": "Run MaxBin2?" } + ], + "label": "Run MaxBin2?", + "name": "Input parameter", + "outputs": [], + "position": { + "left": 140, + "top": 2220 }, - "inputs": [], - "label": "Split contigs into fragments for CONCOCT", - "name": "CONCOCT: Cut up contigs", - "outputs": [ - { - "name": "output_fasta", - "type": "fasta" - }, + "tool_id": null, + "tool_state": "{\"multiple\": false, \"validators\": [], \"restrictions\": [\"Yes\", \"No\"], \"parameter_type\": \"text\", \"optional\": false, \"default\": \"Yes\"}", + "tool_version": null, + "type": "parameter_input", + "uuid": "b6e29622-ab1c-449e-8a0d-efa2090e3fe8", + "when": null, + "workflow_outputs": [] + }, + "7": { + "annotation": "Choose Binette, DAS Tool or Both to refine the candidate bins.", + "content_id": null, + "errors": null, + "id": 7, + "input_connections": {}, + "inputs": [ { - "name": "output_bed", - "type": "bed" + "description": "Choose Binette, DAS Tool or Both to refine the candidate bins.", + "name": "Bin refinement tool" } ], + "label": "Bin refinement tool", + "name": "Input parameter", + "outputs": [], "position": { - "left": 600, - "top": 470 - }, - "post_job_actions": {}, - "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/concoct_cut_up_fasta/concoct_cut_up_fasta/1.1.0+galaxy3", - "tool_shed_repository": { - "changeset_revision": "7a5598f973c9", - "name": "concoct_cut_up_fasta", - "owner": "iuc", - "tool_shed": "toolshed.g2.bx.psu.edu" + "left": 140, + "top": 2520 }, - "tool_state": "{\"bedfile\": true, \"chunk_size\": \"10000\", \"input_fasta\": {\"__class__\": \"ConnectedValue\"}, \"merge_last\": true, \"overlap_size\": \"0\", \"__page__\": 0, \"__rerun_remap_job_id__\": null}", - "tool_uuid": null, - "tool_version": "1.1.0+galaxy3", - "type": "tool", - "uuid": "83aae2e2-79b3-4f62-a985-46e171935dd2", + "tool_id": null, + "tool_state": "{\"multiple\": false, \"validators\": [], \"restrictions\": [\"Binette\", \"DAS Tool\", \"Both\"], \"parameter_type\": \"text\", \"optional\": false, \"default\": \"Binette\"}", + "tool_version": null, + "type": "parameter_input", + "uuid": "29651e13-0037-4477-a4d3-d8751fd97aa4", "when": null, "workflow_outputs": [] }, "8": { - "annotation": "Run DAS Tool?. Convert the selected mode to a boolean that enables this branch only when requested.", - "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/map_param_value/map_param_value/0.2.0", + "annotation": "CheckM2 reference database used by Binette to assess bin quality.", + "content_id": null, "errors": null, "id": 8, - "input_connections": { - "input_param_type|input_param": { - "id": 4, - "output_name": "output" - } - }, + "input_connections": {}, "inputs": [ { - "description": "runtime parameter for tool Map parameter value", - "name": "input_param_type" - } - ], - "label": "Run DAS Tool?", - "name": "Map parameter value", - "outputs": [ - { - "name": "output_param_boolean", - "type": "expression.json" + "description": "CheckM2 reference database used by Binette to assess bin quality.", + "name": "CheckM2 Database" } ], + "label": "CheckM2 Database", + "name": "Input parameter", + "outputs": [], "position": { - "left": 600, - "top": 1070 - }, - "post_job_actions": {}, - "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/map_param_value/map_param_value/0.2.0", - "tool_shed_repository": { - "changeset_revision": "022a635f2283", - "name": "map_param_value", - "owner": "iuc", - "tool_shed": "toolshed.g2.bx.psu.edu" + "left": 140, + "top": 2820 }, - "tool_state": "{\"input_param_type\": {\"type\": \"text\", \"__current_case__\": 0, \"input_param\": {\"__class__\": \"ConnectedValue\"}, \"mappings\": [{\"__index__\": 0, \"from\": \"Both\", \"to\": \"True\"}, {\"__index__\": 1, \"from\": \"DAS Tool\", \"to\": \"True\"}, {\"__index__\": 2, \"from\": \"Binette\", \"to\": \"False\"}]}, \"output_param_type\": \"boolean\", \"unmapped\": {\"on_unmapped\": \"default\", \"__current_case__\": 2, \"default_value\": \"False\"}, \"__page__\": 0, \"__rerun_remap_job_id__\": null}", - "tool_uuid": null, - "tool_version": "0.2.0", - "type": "tool", - "uuid": "acd10a24-ae5b-4858-84d2-8cde933fe404", + "tool_id": null, + "tool_state": "{\"multiple\": false, \"validators\": [], \"restrictOnConnections\": true, \"parameter_type\": \"text\", \"optional\": false}", + "tool_version": null, + "type": "parameter_input", + "uuid": "8cef62db-3352-4d17-9a00-f3de3a9990a8", "when": null, "workflow_outputs": [] }, "9": { - "annotation": "Run Binette?. Convert the selected mode to a boolean that enables this branch only when requested.", - "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/map_param_value/map_param_value/0.2.0", + "annotation": "Minimum bin completeness percentage used by Binette.", + "content_id": null, "errors": null, "id": 9, - "input_connections": { - "input_param_type|input_param": { - "id": 4, + "input_connections": {}, + "inputs": [ + { + "description": "Minimum bin completeness percentage used by Binette.", + "name": "Minimum MAG completeness percentage" + } + ], + "label": "Minimum MAG completeness percentage", + "name": "Input parameter", + "outputs": [], + "position": { + "left": 140, + "top": 3120 + }, + "tool_id": null, + "tool_state": "{\"default\": 40, \"validators\": [{\"min\": null, \"max\": null, \"negate\": false, \"type\": \"in_range\"}], \"parameter_type\": \"integer\", \"optional\": false}", + "tool_version": null, + "type": "parameter_input", + "uuid": "bb6970c2-a90e-4e7c-9956-712bb57b8fd2", + "when": null, + "workflow_outputs": [] + }, + "10": { + "annotation": "Contamination penalty used in Binette's scoring. A low weight favours complete bins over low-contamination bins (--contamination_weight).", + "content_id": null, + "errors": null, + "id": 10, + "input_connections": {}, + "inputs": [ + { + "description": "Contamination penalty used in Binette's scoring. A low weight favours complete bins over low-contamination bins (--contamination_weight).", + "name": "Contamination weight (Binette)" + } + ], + "label": "Contamination weight (Binette)", + "name": "Input parameter", + "outputs": [], + "position": { + "left": 140, + "top": 3420 + }, + "tool_id": null, + "tool_state": "{\"default\": 2, \"validators\": [{\"min\": null, \"max\": null, \"negate\": false, \"type\": \"in_range\"}], \"parameter_type\": \"integer\", \"optional\": false}", + "tool_version": null, + "type": "parameter_input", + "uuid": "cc7e7b6a-c6c3-402a-bf36-362369856db9", + "when": null, + "workflow_outputs": [] + }, + "11": { + "annotation": "Convert the Yes/No choice into a boolean that enables running COMEBin only when requested.", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/map_param_value/map_param_value/0.2.0", + "errors": null, + "id": 11, + "input_connections": { + "input_param_type|input_param": { + "id": 2, "output_name": "output" } }, @@ -355,7 +544,7 @@ "name": "input_param_type" } ], - "label": "Run Binette?", + "label": "COMEBin binning gate", "name": "Map parameter value", "outputs": [ { @@ -364,8 +553,8 @@ } ], "position": { - "left": 600, - "top": 770 + "left": 2650, + "top": 420 }, "post_job_actions": {}, "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/map_param_value/map_param_value/0.2.0", @@ -375,808 +564,854 @@ "owner": "iuc", "tool_shed": "toolshed.g2.bx.psu.edu" }, - "tool_state": "{\"input_param_type\": {\"type\": \"text\", \"__current_case__\": 0, \"input_param\": {\"__class__\": \"ConnectedValue\"}, \"mappings\": [{\"__index__\": 0, \"from\": \"Both\", \"to\": \"True\"}, {\"__index__\": 1, \"from\": \"Binette\", \"to\": \"True\"}, {\"__index__\": 2, \"from\": \"DAS Tool\", \"to\": \"False\"}]}, \"output_param_type\": \"boolean\", \"unmapped\": {\"on_unmapped\": \"default\", \"__current_case__\": 2, \"default_value\": \"False\"}, \"__page__\": 0, \"__rerun_remap_job_id__\": null}", + "tool_state": "{\"input_param_type\": {\"type\": \"text\", \"__current_case__\": 0, \"input_param\": {\"__class__\": \"ConnectedValue\"}, \"mappings\": [{\"__index__\": 0, \"from\": \"Yes\", \"to\": \"True\"}, {\"__index__\": 1, \"from\": \"No\", \"to\": \"False\"}]}, \"output_param_type\": \"boolean\", \"unmapped\": {\"on_unmapped\": \"default\", \"__current_case__\": 2, \"default_value\": \"False\"}, \"__page__\": 0, \"__rerun_remap_job_id__\": null}", "tool_uuid": null, "tool_version": "0.2.0", "type": "tool", - "uuid": "60bd76d8-9219-40f4-a5a3-4a062b71f995", + "uuid": "ad3ce4e4-e205-4d5e-88c7-f29e518b8f16", "when": null, "workflow_outputs": [] }, - "11": { - "annotation": "Cross product of assemblies and flattened reads. Pair each assembly with every original read sample without rewriting FASTQ data.", - "content_id": "__CROSS_PRODUCT_NESTED__", + "12": { + "annotation": "Convert the Yes/No choice into a boolean that enables running SemiBin only when requested.", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/map_param_value/map_param_value/0.2.0", "errors": null, - "id": 11, + "id": 12, "input_connections": { - "input_a": { - "id": 1, - "output_name": "output" - }, - "input_b": { - "id": 51, + "input_param_type|input_param": { + "id": 3, "output_name": "output" } }, - "inputs": [], - "label": "Cross product of assemblies and flattened reads", - "name": "Nested Cross Product", + "inputs": [ + { + "description": "runtime parameter for tool Map parameter value", + "name": "input_param_type" + } + ], + "label": "SemiBin binning gate", + "name": "Map parameter value", "outputs": [ { - "name": "output_a", - "type": "input" - }, + "name": "output_param_boolean", + "type": "expression.json" + } + ], + "position": { + "left": 2650, + "top": 1320 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/map_param_value/map_param_value/0.2.0", + "tool_shed_repository": { + "changeset_revision": "022a635f2283", + "name": "map_param_value", + "owner": "iuc", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"input_param_type\": {\"type\": \"text\", \"__current_case__\": 0, \"input_param\": {\"__class__\": \"ConnectedValue\"}, \"mappings\": [{\"__index__\": 0, \"from\": \"Yes\", \"to\": \"True\"}, {\"__index__\": 1, \"from\": \"No\", \"to\": \"False\"}]}, \"output_param_type\": \"boolean\", \"unmapped\": {\"on_unmapped\": \"default\", \"__current_case__\": 2, \"default_value\": \"False\"}, \"__page__\": 0, \"__rerun_remap_job_id__\": null}", + "tool_uuid": null, + "tool_version": "0.2.0", + "type": "tool", + "uuid": "24240237-3764-44a9-9850-53bb6acd7bfa", + "when": null, + "workflow_outputs": [] + }, + "13": { + "annotation": "Convert the Yes/No choice into a boolean that enables running CONCOCT only when requested.", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/map_param_value/map_param_value/0.2.0", + "errors": null, + "id": 13, + "input_connections": { + "input_param_type|input_param": { + "id": 4, + "output_name": "output" + } + }, + "inputs": [ { - "name": "output_b", - "type": "input" + "description": "runtime parameter for tool Map parameter value", + "name": "input_param_type" + } + ], + "label": "CONCOCT binning gate", + "name": "Map parameter value", + "outputs": [ + { + "name": "output_param_boolean", + "type": "expression.json" } ], "position": { - "left": 1600, - "top": 770 + "left": 2650, + "top": 720 }, "post_job_actions": {}, - "tool_id": "__CROSS_PRODUCT_NESTED__", - "tool_state": "{\"input_a\": {\"__class__\": \"ConnectedValue\"}, \"input_b\": {\"__class__\": \"ConnectedValue\"}, \"__page__\": 0, \"__rerun_remap_job_id__\": null}", + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/map_param_value/map_param_value/0.2.0", + "tool_shed_repository": { + "changeset_revision": "022a635f2283", + "name": "map_param_value", + "owner": "iuc", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"input_param_type\": {\"type\": \"text\", \"__current_case__\": 0, \"input_param\": {\"__class__\": \"ConnectedValue\"}, \"mappings\": [{\"__index__\": 0, \"from\": \"Yes\", \"to\": \"True\"}, {\"__index__\": 1, \"from\": \"No\", \"to\": \"False\"}]}, \"output_param_type\": \"boolean\", \"unmapped\": {\"on_unmapped\": \"default\", \"__current_case__\": 2, \"default_value\": \"False\"}, \"__page__\": 0, \"__rerun_remap_job_id__\": null}", "tool_uuid": null, - "tool_version": "1.0.0", + "tool_version": "0.2.0", "type": "tool", - "uuid": "147ac3fb-e9f7-432b-8a54-090440040941", + "uuid": "ce513036-b730-4d87-bf9a-31dc1cc18445", "when": null, "workflow_outputs": [] }, "14": { - "annotation": "Map every read sample to every assembly with Bowtie2. Align paired short reads to the selected reference assembly to measure contig coverage.", - "content_id": "toolshed.g2.bx.psu.edu/repos/devteam/bowtie2/bowtie2/2.5.5+galaxy0", + "annotation": "Convert the Yes/No choice into a boolean that enables running MetaBAT2 only when requested.", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/map_param_value/map_param_value/0.2.0", "errors": null, "id": 14, "input_connections": { - "library|input_1": { - "id": 52, - "output_name": "output" - }, - "reference_genome|own_file": { - "id": 53, + "input_param_type|input_param": { + "id": 5, "output_name": "output" } }, "inputs": [ { - "description": "runtime parameter for tool Bowtie2", - "name": "library" - }, - { - "description": "runtime parameter for tool Bowtie2", - "name": "reference_genome" + "description": "runtime parameter for tool Map parameter value", + "name": "input_param_type" } ], - "label": "Map every read sample to every assembly with Bowtie2", - "name": "Bowtie2", + "label": "MetaBAT2 binning gate", + "name": "Map parameter value", "outputs": [ { - "name": "output", - "type": "bam" + "name": "output_param_boolean", + "type": "expression.json" } ], "position": { - "left": 3100, - "top": 470 + "left": 2650, + "top": 2220 }, "post_job_actions": {}, - "tool_id": "toolshed.g2.bx.psu.edu/repos/devteam/bowtie2/bowtie2/2.5.5+galaxy0", + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/map_param_value/map_param_value/0.2.0", "tool_shed_repository": { - "changeset_revision": "a470b376503d", - "name": "bowtie2", - "owner": "devteam", + "changeset_revision": "022a635f2283", + "name": "map_param_value", + "owner": "iuc", "tool_shed": "toolshed.g2.bx.psu.edu" }, - "tool_state": "{\"analysis_type\": {\"analysis_type_selector\": \"simple\", \"__current_case__\": 0, \"presets\": \"no_presets\"}, \"library\": {\"type\": \"paired_collection\", \"__current_case__\": 1, \"input_1\": {\"__class__\": \"ConnectedValue\"}, \"unaligned_file\": false, \"aligned_file\": false, \"paired_options\": {\"paired_options_selector\": \"no\", \"__current_case__\": 1}}, \"reference_genome\": {\"source\": \"history\", \"__current_case__\": 1, \"own_file\": {\"__class__\": \"ConnectedValue\"}}, \"rg\": {\"rg_selector\": \"do_not_set\", \"__current_case__\": 3}, \"sam_options\": {\"sam_options_selector\": \"no\", \"__current_case__\": 1}, \"save_mapping_stats\": false, \"__page__\": 0, \"__rerun_remap_job_id__\": null}", + "tool_state": "{\"input_param_type\": {\"type\": \"text\", \"__current_case__\": 0, \"input_param\": {\"__class__\": \"ConnectedValue\"}, \"mappings\": [{\"__index__\": 0, \"from\": \"Yes\", \"to\": \"True\"}, {\"__index__\": 1, \"from\": \"No\", \"to\": \"False\"}]}, \"output_param_type\": \"boolean\", \"unmapped\": {\"on_unmapped\": \"default\", \"__current_case__\": 2, \"default_value\": \"False\"}, \"__page__\": 0, \"__rerun_remap_job_id__\": null}", "tool_uuid": null, - "tool_version": "2.5.5+galaxy0", + "tool_version": "0.2.0", "type": "tool", - "uuid": "dfc68500-b152-402d-8897-df30eb9ab797", + "uuid": "0404fc2e-4e75-4d8e-a7bc-7931f3acad2d", "when": null, "workflow_outputs": [] }, "15": { - "annotation": "Calculate fragment coverage for CONCOCT. Summarize alignment coverage over the CONCOCT contig fragments.", - "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/concoct_coverage_table/concoct_coverage_table/1.1.0+galaxy3", + "annotation": "Convert the Yes/No choice into a boolean that enables running MaxBin2 only when requested.", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/map_param_value/map_param_value/0.2.0", "errors": null, "id": 15, "input_connections": { - "bedfile": { - "id": 7, - "output_name": "output_bed" - }, - "mode|bamfiles": { - "id": 14, + "input_param_type|input_param": { + "id": 6, "output_name": "output" } }, "inputs": [ { - "description": "runtime parameter for tool CONCOCT: Generate the input coverage table", - "name": "mode" + "description": "runtime parameter for tool Map parameter value", + "name": "input_param_type" } ], - "label": "Calculate fragment coverage for CONCOCT", - "name": "CONCOCT: Generate the input coverage table", + "label": "MaxBin2 binning gate", + "name": "Map parameter value", "outputs": [ { - "name": "output", - "type": "tabular" + "name": "output_param_boolean", + "type": "expression.json" } ], "position": { - "left": 3600, - "top": 770 + "left": 2650, + "top": 3120 }, "post_job_actions": {}, - "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/concoct_coverage_table/concoct_coverage_table/1.1.0+galaxy3", + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/map_param_value/map_param_value/0.2.0", "tool_shed_repository": { - "changeset_revision": "6a9c82cc3448", - "name": "concoct_coverage_table", + "changeset_revision": "022a635f2283", + "name": "map_param_value", "owner": "iuc", "tool_shed": "toolshed.g2.bx.psu.edu" }, - "tool_state": "{\"bedfile\": {\"__class__\": \"ConnectedValue\"}, \"mode\": {\"type\": \"co\", \"__current_case__\": 1, \"bamfiles\": {\"__class__\": \"ConnectedValue\"}}, \"__page__\": 0, \"__rerun_remap_job_id__\": null}", + "tool_state": "{\"input_param_type\": {\"type\": \"text\", \"__current_case__\": 0, \"input_param\": {\"__class__\": \"ConnectedValue\"}, \"mappings\": [{\"__index__\": 0, \"from\": \"Yes\", \"to\": \"True\"}, {\"__index__\": 1, \"from\": \"No\", \"to\": \"False\"}]}, \"output_param_type\": \"boolean\", \"unmapped\": {\"on_unmapped\": \"default\", \"__current_case__\": 2, \"default_value\": \"False\"}, \"__page__\": 0, \"__rerun_remap_job_id__\": null}", "tool_uuid": null, - "tool_version": "1.1.0+galaxy3", + "tool_version": "0.2.0", "type": "tool", - "uuid": "ebe92915-fada-4f47-85e2-48ca22f07692", + "uuid": "222d01bf-3d52-4607-b01e-7001e3ba87d9", "when": null, "workflow_outputs": [] }, "16": { - "annotation": "Bin contigs with COMEBin. Use sequence and coverage representations to infer candidate genome bins when enabled.", - "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/comebin/comebin/1.1.0+galaxy1", + "annotation": "Remove collection nesting so results can be pooled or combined; existing datasets are reused.", + "content_id": "__FLATTEN__", "errors": null, "id": 16, "input_connections": { - "assembly_file": { + "input": { "id": 1, "output_name": "output" - }, - "bam_files": { - "id": 14, - "output_name": "output" - }, - "when": { - "id": 2, - "output_name": "output" } }, "inputs": [], - "label": "Bin contigs with COMEBin", - "name": "COMEBin", + "label": "Flatten read pairs", + "name": "Flatten collection", "outputs": [ { - "name": "bins", + "name": "output", "type": "input" } ], "position": { - "left": 3600, - "top": 470 - }, - "post_job_actions": { - "TagDatasetActionbins": { - "action_arguments": { - "tags": "comebin-bins" - }, - "action_type": "TagDatasetAction", - "output_name": "bins" - } - }, - "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/comebin/comebin/1.1.0+galaxy1", - "tool_shed_repository": { - "changeset_revision": "7e66a24282a7", - "name": "comebin", - "owner": "iuc", - "tool_shed": "toolshed.g2.bx.psu.edu" + "left": 740, + "top": 420 }, - "tool_state": "{\"assembly_file\": {\"__class__\": \"ConnectedValue\"}, \"bam_files\": {\"__class__\": \"ConnectedValue\"}, \"batch\": \"1024\", \"emb_comebin\": \"2048\", \"emb_cov\": \"2048\", \"learning\": \"6\", \"loss\": \"0.15\", \"max_edges\": \"100\", \"__page__\": 0, \"__rerun_remap_job_id__\": null}", - "tool_uuid": null, - "tool_version": "1.1.0+galaxy1", + "tool_id": "__FLATTEN__", + "tool_state": "{\"input\": {\"__class__\": \"ConnectedValue\"}, \"join_identifier\": \"_\", \"__page__\": null, \"__rerun_remap_job_id__\": null}", + "tool_version": "1.0.0", "type": "tool", - "uuid": "1e418b96-e22e-4cd0-a95d-d1aed1211125", - "when": "$(inputs.when)", - "workflow_outputs": [ - { - "label": "COMEBin bins", - "output_name": "bins", - "uuid": "390a4e70-1fbd-461a-9730-e8eda75cec32" - } - ] + "uuid": "13edb836-8c44-4618-b463-72b05e40a155", + "when": null, + "workflow_outputs": [] }, "17": { - "annotation": "Calculate contig depths across all read samples per assembly. Summarize mapped-read depth and variance for each contig and read sample.", - "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/metabat2_jgi_summarize_bam_contig_depths/metabat2_jgi_summarize_bam_contig_depths/2.18.23+galaxy0", + "annotation": "Pair each assembly with every original read sample without rewriting FASTQ data.", + "content_id": "__CROSS_PRODUCT_NESTED__", "errors": null, "id": 17, "input_connections": { - "mode|bam_co_inputs": { - "id": 14, + "input_a": { + "id": 0, + "output_name": "output" + }, + "input_b": { + "id": 16, "output_name": "output" } }, - "inputs": [ - { - "description": "runtime parameter for tool Calculate contig depths", - "name": "mode" - } - ], - "label": "Calculate contig depths across all read samples per assembly", - "name": "Calculate contig depths", + "inputs": [], + "label": "Cross product of assemblies and flattened reads", + "name": "Nested Cross Product", "outputs": [ { - "name": "outputDepth", - "type": "tabular" + "name": "output_a", + "type": "input" + }, + { + "name": "output_b", + "type": "input" } ], "position": { - "left": 3600, - "top": 1070 - }, - "post_job_actions": { - "TagDatasetActionoutputDepth": { - "action_arguments": { - "tags": "coverage-depth-matrices" - }, - "action_type": "TagDatasetAction", - "output_name": "outputDepth" - } - }, - "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/metabat2_jgi_summarize_bam_contig_depths/metabat2_jgi_summarize_bam_contig_depths/2.18.23+galaxy0", - "tool_shed_repository": { - "changeset_revision": "45f6d77d37b7", - "name": "metabat2_jgi_summarize_bam_contig_depths", - "owner": "iuc", - "tool_shed": "toolshed.g2.bx.psu.edu" + "left": 740, + "top": 720 }, - "tool_state": "{\"advanced\": {\"percentIdentity\": \"97\", \"output_paired_contigs\": false, \"noIntraDepthVariance\": false, \"showDepth\": false, \"minMapQual\": \"0\", \"weightMapQual\": \"0.0\", \"includeEdgeBases\": false, \"maxEdgeBases\": \"75\"}, \"mode\": {\"type\": \"co\", \"__current_case__\": 1, \"bam_co_inputs\": {\"__class__\": \"ConnectedValue\"}, \"use_reference_cond\": {\"use_reference\": \"no\", \"__current_case__\": 0}}, \"shredding\": {\"shredLength\": \"16000\", \"shredDepth\": \"5\", \"minContigLength\": \"1\", \"minContigDepth\": \"0.0\"}, \"__page__\": 0, \"__rerun_remap_job_id__\": null}", + "post_job_actions": {}, + "tool_id": "__CROSS_PRODUCT_NESTED__", + "tool_state": "{\"input_a\": {\"__class__\": \"ConnectedValue\"}, \"input_b\": {\"__class__\": \"ConnectedValue\"}, \"__page__\": 0, \"__rerun_remap_job_id__\": null}", "tool_uuid": null, - "tool_version": "2.18.23+galaxy0", + "tool_version": "1.0.0", "type": "tool", - "uuid": "99fd59a2-f822-4cf5-9be4-5bdf2d55c43d", + "uuid": "147ac3fb-e9f7-432b-8a54-090440040941", "when": null, - "workflow_outputs": [ - { - "label": "Coverage depth matrices", - "output_name": "outputDepth", - "uuid": "131fdbc7-1992-4fcc-bb81-4352a81ae0e8" - } - ] + "workflow_outputs": [] }, "18": { - "annotation": "Bin contigs with SemiBin. Use contig sequence features and coverage to infer candidate genome bins.", - "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/semibin/semibin/2.1.0+galaxy1", + "annotation": "Use collection identifiers to arrange datasets into paired reads per assembly; sequence files are not rewritten.", + "content_id": "__APPLY_RULES__", "errors": null, "id": 18, "input_connections": { - "mode|align_select|input_bam": { - "id": 14, - "output_name": "output" - }, - "mode|input_fasta": { - "id": 1, - "output_name": "output" - }, - "when": { - "id": 39, - "output_name": "output" + "input": { + "id": 17, + "output_name": "output_b" } }, - "inputs": [ - { - "description": "runtime parameter for tool SemiBin", - "name": "mode" - } - ], - "label": "Bin contigs with SemiBin", - "name": "SemiBin", + "inputs": [], + "label": "Rebuild read pairs per assembly", + "name": "Apply rules", "outputs": [ { - "name": "output_bins", + "name": "output", "type": "input" } ], "position": { - "left": 3600, - "top": 1370 - }, - "post_job_actions": { - "TagDatasetActionoutput_bins": { - "action_arguments": { - "tags": "semibin-bins" - }, - "action_type": "TagDatasetAction", - "output_name": "output_bins" - } - }, - "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/semibin/semibin/2.1.0+galaxy1", - "tool_shed_repository": { - "changeset_revision": "afee33334a63", - "name": "semibin", - "owner": "iuc", - "tool_shed": "toolshed.g2.bx.psu.edu" + "left": 740, + "top": 1020 }, - "tool_state": "{\"annot\": {\"ml_threshold\": null}, \"bin\": {\"max_node\": \"1.0\", \"max_edges\": \"200\", \"minfasta_kbs\": \"200\"}, \"extra_output\": null, \"min_len\": {\"method\": \"automatic\", \"__current_case__\": 0}, \"mode\": {\"select\": \"co\", \"__current_case__\": 1, \"input_fasta\": {\"__class__\": \"ConnectedValue\"}, \"align_select\": {\"align_select\": \"bam\", \"__current_case__\": 0, \"input_bam\": {\"__class__\": \"ConnectedValue\"}}, \"ref\": {\"select\": \"ml\", \"__current_case__\": 2}}, \"orf_finder\": \"fast-naive\", \"random_seed\": \"0\", \"training\": {\"epoches\": \"20\", \"batch_size\": \"2048\"}, \"__page__\": 0, \"__rerun_remap_job_id__\": null}", - "tool_uuid": null, - "tool_version": "2.1.0+galaxy1", + "tool_id": "__APPLY_RULES__", + "tool_state": "{\"input\": {\"__class__\": \"ConnectedValue\"}, \"rules\": {\"rules\": [{\"type\": \"add_column_metadata\", \"value\": \"identifier0\"}, {\"type\": \"add_column_metadata\", \"value\": \"identifier1\"}, {\"type\": \"add_column_regex\", \"target_column\": 1, \"expression\": \"^(.+)_(forward|reverse)$\", \"group_count\": 2}], \"mapping\": [{\"type\": \"list_identifiers\", \"columns\": [0, 2]}, {\"type\": \"paired_identifier\", \"columns\": [3]}]}, \"__page__\": null, \"__rerun_remap_job_id__\": null}", + "tool_version": "1.1.0", "type": "tool", - "uuid": "c1d1b3e7-87d9-4bc2-9624-ed7ff1441738", - "when": "$(inputs.when)", - "workflow_outputs": [ - { - "label": "SemiBin bins", - "output_name": "output_bins", - "uuid": "84ab02d0-c3f8-45df-af96-5055f0c3cd13" - } - ] + "uuid": "3d632024-5937-4665-b8a0-9c4d094762ad", + "when": null, + "workflow_outputs": [] }, "19": { - "annotation": "Cluster contig fragments with CONCOCT.", - "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/concoct/concoct/1.1.0+galaxy3", + "annotation": "Use collection identifiers to arrange the references per assembly and read sample; sequence files are not rewritten.", + "content_id": "__APPLY_RULES__", "errors": null, "id": 19, "input_connections": { - "advanced|read_length": { - "id": 38, - "output_name": "integer_param" - }, - "composition_file": { - "id": 7, - "output_name": "output_fasta" - }, - "coverage_file": { - "id": 15, - "output_name": "output" - }, - "when": { - "id": 40, - "output_name": "output" + "input": { + "id": 17, + "output_name": "output_a" } }, - "inputs": [ - { - "description": "runtime parameter for tool CONCOCT", - "name": "advanced" - } - ], - "label": "Cluster contig fragments with CONCOCT", - "name": "CONCOCT", + "inputs": [], + "label": "References per assembly and read sample", + "name": "Apply rules", "outputs": [ { - "name": "output_clustering", - "type": "csv" - }, - { - "name": "output_pca_components", - "type": "csv" - }, - { - "name": "output_pca_transformed", - "type": "csv" + "name": "output", + "type": "input" } ], "position": { - "left": 4100, - "top": 470 - }, - "post_job_actions": {}, - "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/concoct/concoct/1.1.0+galaxy3", - "tool_shed_repository": { - "changeset_revision": "396cce609c04", - "name": "concoct", - "owner": "iuc", - "tool_shed": "toolshed.g2.bx.psu.edu" + "left": 740, + "top": 1320 }, - "tool_state": "{\"advanced\": {\"clusters\": \"400\", \"kmer_length\": \"4\", \"length_threshold\": \"1000\", \"read_length\": {\"__class__\": \"ConnectedValue\"}, \"total_percentage_pca\": \"90\", \"seed\": \"1\", \"iterations\": \"500\", \"no_cov_normalization\": false}, \"composition_file\": {\"__class__\": \"ConnectedValue\"}, \"coverage_file\": {\"__class__\": \"ConnectedValue\"}, \"output\": {\"no_total_coverage\": false, \"converge_out\": false, \"log\": false}, \"__page__\": 0, \"__rerun_remap_job_id__\": null}", - "tool_uuid": null, - "tool_version": "1.1.0+galaxy3", + "tool_id": "__APPLY_RULES__", + "tool_state": "{\"input\": {\"__class__\": \"ConnectedValue\"}, \"rules\": {\"rules\": [{\"type\": \"add_column_metadata\", \"value\": \"identifier0\"}, {\"type\": \"add_column_metadata\", \"value\": \"identifier1\"}, {\"type\": \"add_filter_regex\", \"target_column\": 1, \"expression\": \"_forward$\", \"invert\": false}, {\"type\": \"add_column_regex\", \"target_column\": 1, \"expression\": \"^(.+)_(forward|reverse)$\", \"group_count\": 2}], \"mapping\": [{\"type\": \"list_identifiers\", \"columns\": [0, 2]}]}, \"__page__\": null, \"__rerun_remap_job_id__\": null}", + "tool_version": "1.1.0", "type": "tool", - "uuid": "ae4f83c9-3700-43a8-ab9a-0614c20d91e4", - "when": "$(inputs.when)", + "uuid": "7d49bad3-3650-4ac9-a5c4-d9c0090b7375", + "when": null, "workflow_outputs": [] }, "20": { - "annotation": "Bridge optional COMEBin bins for downstream conversion. Pass through the available result while allowing the upstream optional branch to be skipped.", - "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/pick_value/pick_value/0.2.0", + "annotation": "Separate forward and reverse mates while retaining sample identifiers.", + "content_id": "__UNZIP_COLLECTION__", "errors": null, "id": 20, "input_connections": { - "style_cond|type_cond|pick_from_0|value": { - "id": 16, - "output_name": "bins" + "input": { + "id": 1, + "output_name": "output" } }, "inputs": [], - "label": "Bridge optional COMEBin bins for downstream conversion", - "name": "Pick parameter value", + "label": "Unzip reads for automatic read-length estimation", + "name": "Unzip collection", "outputs": [ { - "name": "data_param", + "name": "forward", + "type": "input" + }, + { + "name": "reverse", "type": "input" } ], "position": { - "left": 4100, - "top": 1670 + "left": 740, + "top": 1620 }, "post_job_actions": {}, - "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/pick_value/pick_value/0.2.0", - "tool_shed_repository": { - "changeset_revision": "b19e21af9c52", - "name": "pick_value", - "owner": "iuc", - "tool_shed": "toolshed.g2.bx.psu.edu" - }, - "tool_state": "{\"style_cond\": {\"pick_style\": \"first\", \"__current_case__\": 0, \"type_cond\": {\"param_type\": \"data\", \"__current_case__\": 4, \"pick_from\": [{\"__index__\": 0, \"value\": {\"__class__\": \"ConnectedValue\"}}]}}, \"__page__\": 0, \"__rerun_remap_job_id__\": null}", + "tool_id": "__UNZIP_COLLECTION__", + "tool_state": "{\"input\": {\"__class__\": \"ConnectedValue\"}, \"__page__\": 0, \"__rerun_remap_job_id__\": null}", "tool_uuid": null, - "tool_version": "0.2.0", + "tool_version": "1.0.0", "type": "tool", - "uuid": "fdd36664-fd23-475b-b6e2-523333782de6", + "uuid": "ec3c8493-c175-462d-a760-9d00c6ff6c69", "when": null, "workflow_outputs": [] }, "21": { - "annotation": "Bin contigs with MetaBAT2. Combine contig composition and coverage to infer candidate genome bins.", - "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/metabat2/metabat2/2.18.23+galaxy0", - "errors": null, - "id": 21, + "type": "tool", + "name": "SeqKit statistics", + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/seqkit_stats/seqkit_stats/2.8.1+galaxy0", + "tool_shed_repository": { + "changeset_revision": "812705bcf39c", + "name": "seqkit_stats", + "owner": "iuc", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/seqkit_stats/seqkit_stats/2.8.1+galaxy0", + "tool_version": "2.8.1+galaxy0", + "tool_state": "{\"input\": {\"__class__\": \"ConnectedValue\"}, \"all\": false, \"basename\": true, \"skip_err\": false, \"tabular\": true}", "input_connections": { - "advanced|base_coverage_depth_cond|abdFile": { - "id": 17, - "output_name": "outputDepth" - }, - "inFile": { - "id": 1, - "output_name": "output" - }, - "when": { - "id": 41, - "output_name": "output" + "input": { + "id": 20, + "output_name": "forward" } }, "inputs": [], - "label": "Bin contigs with MetaBAT2", - "name": "MetaBAT2", - "outputs": [ - { - "name": "bins", - "type": "input" - } - ], + "outputs": [], + "annotation": "Count sequences and bases for read-count-weighted read-length estimation on forward reads.", "position": { - "left": 4100, - "top": 1070 - }, - "post_job_actions": { - "TagDatasetActionbins": { - "action_arguments": { - "tags": "metabat2-bins" - }, - "action_type": "TagDatasetAction", - "output_name": "bins" - } + "left": 740, + "top": 1920 }, - "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/metabat2/metabat2/2.18.23+galaxy0", - "tool_shed_repository": { - "changeset_revision": "c63e45a190b5", - "name": "metabat2", + "id": 21, + "uuid": "7e279609-78fb-4228-bde2-64b430f05a4b", + "label": "Read-length statistics \u2014 forward", + "workflow_outputs": [] + }, + "22": { + "type": "tool", + "name": "SeqKit statistics", + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/seqkit_stats/seqkit_stats/2.8.1+galaxy0", + "tool_shed_repository": { + "changeset_revision": "812705bcf39c", + "name": "seqkit_stats", "owner": "iuc", "tool_shed": "toolshed.g2.bx.psu.edu" }, - "tool_state": "{\"advanced\": {\"base_coverage_depth_cond\": {\"base_coverage_depth\": \"yes\", \"__current_case__\": 1, \"abdFile\": {\"__class__\": \"ConnectedValue\"}, \"cvExt\": null}, \"minContig\": \"1500\", \"minSmallContig\": \"1000\", \"maxP\": \"95\", \"minS\": \"60\", \"maxEdges\": \"200\", \"pTNF\": \"0\", \"noAdd\": false, \"minRecruitingSize\": \"10\", \"minCV\": \"1.0\", \"minCVSum\": \"1.0\", \"seed\": \"0\"}, \"inFile\": {\"__class__\": \"ConnectedValue\"}, \"out\": {\"minClsSize\": \"200000\", \"onlyLabel\": false, \"saveCls\": false, \"fullHeader\": false, \"extra_outputs\": null}, \"__page__\": 0, \"__rerun_remap_job_id__\": null}", - "tool_uuid": null, - "tool_version": "2.18.23+galaxy0", - "type": "tool", - "uuid": "876acc0d-bb05-42ad-ac28-5da06d57b99f", - "when": "$(inputs.when)", - "workflow_outputs": [ - { - "label": "MetaBAT2 bins", - "output_name": "bins", - "uuid": "98f1c793-cd46-4d0f-9e08-f9c54c702f36" + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/seqkit_stats/seqkit_stats/2.8.1+galaxy0", + "tool_version": "2.8.1+galaxy0", + "tool_state": "{\"input\": {\"__class__\": \"ConnectedValue\"}, \"all\": false, \"basename\": true, \"skip_err\": false, \"tabular\": true}", + "input_connections": { + "input": { + "id": 20, + "output_name": "reverse" } - ] - }, - "22": { - "annotation": "Bin contigs with MaxBin2. Use contig composition, coverage and marker genes to infer candidate genome bins.", - "content_id": "toolshed.g2.bx.psu.edu/repos/mbernt/maxbin2/maxbin2/2.2.7+galaxy6", - "errors": null, + }, + "inputs": [], + "outputs": [], + "annotation": "Count sequences and bases for read-count-weighted read-length estimation on reverse reads.", + "position": { + "left": 740, + "top": 2220 + }, "id": 22, + "uuid": "f4127452-4189-431b-8a92-303f9669b0c5", + "label": "Read-length statistics \u2014 reverse", + "workflow_outputs": [] + }, + "23": { + "type": "tool", + "name": "Concatenate datasets", + "tool_id": "toolshed.g2.bx.psu.edu/repos/bgruening/text_processing/tp_cat/0.1.0", + "tool_shed_repository": { + "changeset_revision": "ddf54b12c295", + "name": "text_processing", + "owner": "bgruening", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "content_id": "toolshed.g2.bx.psu.edu/repos/bgruening/text_processing/tp_cat/0.1.0", + "tool_version": "0.1.0", + "tool_state": "{\"inputs\": [{\"__class__\": \"ConnectedValue\"}], \"queries\": [{\"__index__\": 0, \"inputs2\": [{\"__class__\": \"ConnectedValue\"}]}]}", "input_connections": { - "assembly|inputs|abund": { - "id": 17, - "output_name": "outputDepth" - }, - "contig": { - "id": 1, + "inputs": { + "id": 21, "output_name": "output" }, - "when": { - "id": 42, + "queries_0|inputs2": { + "id": 22, "output_name": "output" } }, "inputs": [], - "label": "Bin contigs with MaxBin2", - "name": "MaxBin2", - "outputs": [ - { - "name": "bins", - "type": "input" - }, - { - "name": "noclass", - "type": "fasta" - }, - { - "name": "toshort", - "type": "fasta" - }, - { - "name": "summary", - "type": "tabular" - } - ], + "outputs": [], + "annotation": "Merge both mates' statistics into one table.", "position": { - "left": 4100, - "top": 770 - }, - "post_job_actions": { - "TagDatasetActionbins": { - "action_arguments": { - "tags": "maxbin2-bins" - }, - "action_type": "TagDatasetAction", - "output_name": "bins" - } + "left": 740, + "top": 2520 }, - "tool_id": "toolshed.g2.bx.psu.edu/repos/mbernt/maxbin2/maxbin2/2.2.7+galaxy6", + "id": 23, + "uuid": "93ee4832-f528-498c-8590-8c95c882bce7", + "label": "Combine read-length statistics", + "workflow_outputs": [] + }, + "24": { + "type": "tool", + "name": "Text reformatting", + "tool_id": "toolshed.g2.bx.psu.edu/repos/bgruening/text_processing/tp_awk_tool/9.11+galaxy0", "tool_shed_repository": { - "changeset_revision": "0917b2d6010d", - "name": "maxbin2", - "owner": "mbernt", + "changeset_revision": "30b60202d990", + "name": "text_processing", + "owner": "bgruening", "tool_shed": "toolshed.g2.bx.psu.edu" }, - "tool_state": "{\"adv\": {\"min_contig_length\": \"1000\", \"max_iteration\": \"50\", \"prob_threshold\": \"0.5\"}, \"assembly\": {\"type\": \"individual\", \"__current_case__\": 0, \"inputs\": {\"type\": \"abund\", \"__current_case__\": 1, \"abund\": {\"__class__\": \"ConnectedValue\"}}}, \"contig\": {\"__class__\": \"ConnectedValue\"}, \"output\": {\"plotmarker\": false, \"marker\": false, \"markers\": false, \"log\": false, \"markerset\": \"107\"}, \"__page__\": 0, \"__rerun_remap_job_id__\": null}", - "tool_uuid": null, - "tool_version": "2.2.7+galaxy6", + "content_id": "toolshed.g2.bx.psu.edu/repos/bgruening/text_processing/tp_awk_tool/9.11+galaxy0", + "tool_version": "9.11+galaxy0", + "tool_state": "{\"infile\": {\"__class__\": \"ConnectedValue\"}, \"code\": \"BEGIN{FS=\\\"\\t\\\"} $4 ~ /^[0-9]+$/ {n += $4; total += $5} END{if(n<1) exit 1; print int(total/n+0.5)}\", \"variables\": []}", + "input_connections": { + "infile": { + "id": 23, + "output_name": "out_file1" + } + }, + "inputs": [], + "outputs": [], + "annotation": "Divide total bases by total reads across both mates and round the mean read length.", + "position": { + "left": 740, + "top": 2820 + }, + "id": 24, + "uuid": "a8cacc18-37f2-4367-84c6-82da65a2e262", + "label": "Compute read-count-weighted mean length (both mates)", + "workflow_outputs": [] + }, + "25": { "type": "tool", - "uuid": "c2eca2a4-c8bc-4ea5-a7d7-acbc05643cf9", - "when": "$(inputs.when)", - "workflow_outputs": [ - { - "label": "MaxBin2 bins", - "output_name": "bins", - "uuid": "9a73928d-17dd-4785-aac0-56962096d9ee" + "name": "Parse parameter value", + "tool_id": "param_value_from_file", + "content_id": "param_value_from_file", + "tool_version": "0.1.0", + "tool_state": "{\"input1\": {\"__class__\": \"ConnectedValue\"}, \"param_type\": \"integer\", \"remove_newlines\": true}", + "input_connections": { + "input1": { + "id": 24, + "output_name": "outfile" } - ] + }, + "inputs": [], + "outputs": [], + "annotation": "Read the computed mean read length from the statistics table for CONCOCT.", + "position": { + "left": 740, + "top": 3120 + }, + "id": 25, + "uuid": "15437693-6eaf-4b7f-a3d9-ee0c0916787b", + "label": "Automatic read length (CONCOCT)", + "workflow_outputs": [] }, - "23": { - "annotation": "Create contig-to-bin assignments from SemiBin. Convert FASTA bin membership to a contig-to-bin table for DAS Tool.", - "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/fasta_to_contig2bin/Fasta_to_Contig2Bin/1.1.7+galaxy1", + "26": { + "annotation": "Align paired-end short reads to the selected reference assembly to measure contig coverage.", + "content_id": "toolshed.g2.bx.psu.edu/repos/devteam/bowtie2/bowtie2/2.5.5+galaxy0", "errors": null, - "id": 23, + "id": 26, "input_connections": { - "inputs": { - "id": 45, - "output_name": "data_param" + "library|input_1": { + "id": 18, + "output_name": "output" + }, + "reference_genome|own_file": { + "id": 19, + "output_name": "output" } }, - "inputs": [], - "label": "Create contig-to-bin assignments from SemiBin", - "name": "Converts genome bins in fasta format", + "inputs": [ + { + "description": "runtime parameter for tool Bowtie2", + "name": "library" + }, + { + "description": "runtime parameter for tool Bowtie2", + "name": "reference_genome" + } + ], + "label": "Map every read sample to every assembly with Bowtie2", + "name": "Bowtie2", "outputs": [ { - "name": "contigs2bin", - "type": "tabular" + "name": "output", + "type": "bam" } ], "position": { - "left": 4600, - "top": 1670 + "left": 1540, + "top": 420 }, "post_job_actions": {}, - "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/fasta_to_contig2bin/Fasta_to_Contig2Bin/1.1.7+galaxy1", + "tool_id": "toolshed.g2.bx.psu.edu/repos/devteam/bowtie2/bowtie2/2.5.5+galaxy0", "tool_shed_repository": { - "changeset_revision": "fb2bed0eb02f", - "name": "fasta_to_contig2bin", - "owner": "iuc", + "changeset_revision": "a470b376503d", + "name": "bowtie2", + "owner": "devteam", "tool_shed": "toolshed.g2.bx.psu.edu" }, - "tool_state": "{\"inputs\": {\"__class__\": \"ConnectedValue\"}, \"__page__\": 0, \"__rerun_remap_job_id__\": null}", + "tool_state": "{\"analysis_type\": {\"analysis_type_selector\": \"simple\", \"__current_case__\": 0, \"presets\": \"no_presets\"}, \"library\": {\"type\": \"paired_collection\", \"__current_case__\": 1, \"input_1\": {\"__class__\": \"ConnectedValue\"}, \"unaligned_file\": false, \"aligned_file\": false, \"paired_options\": {\"paired_options_selector\": \"no\", \"__current_case__\": 1}}, \"reference_genome\": {\"source\": \"history\", \"__current_case__\": 1, \"own_file\": {\"__class__\": \"ConnectedValue\"}}, \"rg\": {\"rg_selector\": \"do_not_set\", \"__current_case__\": 3}, \"sam_options\": {\"sam_options_selector\": \"no\", \"__current_case__\": 1}, \"save_mapping_stats\": false, \"__page__\": 0, \"__rerun_remap_job_id__\": null}", "tool_uuid": null, - "tool_version": "1.1.7+galaxy1", + "tool_version": "2.5.5+galaxy0", "type": "tool", - "uuid": "06531149-35a2-4c72-bf0b-c948785e24b9", + "uuid": "dfc68500-b152-402d-8897-df30eb9ab797", "when": null, "workflow_outputs": [] }, - "24": { - "annotation": "Merge CONCOCT fragment clusters into contig assignments. Combine fragment assignments into assignments for the original contigs.", - "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/concoct_merge_cut_up_clustering/concoct_merge_cut_up_clustering/1.1.0+galaxy3", + "27": { + "annotation": "Summarize alignment coverage over the CONCOCT contig fragments.", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/concoct_coverage_table/concoct_coverage_table/1.1.0+galaxy3", "errors": null, - "id": 24, + "id": 27, "input_connections": { - "cutup_clustering_result": { - "id": 43, - "output_name": "data_param" + "bedfile": { + "id": 29, + "output_name": "output_bed" }, - "when": { - "id": 40, + "mode|bamfiles": { + "id": 26, "output_name": "output" } }, - "inputs": [], - "label": "Merge CONCOCT fragment clusters into contig assignments", - "name": "CONCOCT: Merge cut clusters", + "inputs": [ + { + "description": "runtime parameter for tool CONCOCT: Generate the input coverage table", + "name": "mode" + } + ], + "label": "Calculate fragment coverage for CONCOCT", + "name": "CONCOCT: Generate the input coverage table", "outputs": [ { "name": "output", - "type": "csv" + "type": "tabular" } ], "position": { - "left": 5100, - "top": 470 + "left": 1540, + "top": 720 }, "post_job_actions": {}, - "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/concoct_merge_cut_up_clustering/concoct_merge_cut_up_clustering/1.1.0+galaxy3", + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/concoct_coverage_table/concoct_coverage_table/1.1.0+galaxy3", "tool_shed_repository": { - "changeset_revision": "28b4b21d6aae", - "name": "concoct_merge_cut_up_clustering", + "changeset_revision": "6a9c82cc3448", + "name": "concoct_coverage_table", "owner": "iuc", "tool_shed": "toolshed.g2.bx.psu.edu" }, - "tool_state": "{\"cutup_clustering_result\": {\"__class__\": \"ConnectedValue\"}, \"__page__\": 0, \"__rerun_remap_job_id__\": null}", + "tool_state": "{\"bedfile\": {\"__class__\": \"ConnectedValue\"}, \"mode\": {\"type\": \"co\", \"__current_case__\": 1, \"bamfiles\": {\"__class__\": \"ConnectedValue\"}}, \"__page__\": 0, \"__rerun_remap_job_id__\": null}", "tool_uuid": null, "tool_version": "1.1.0+galaxy3", "type": "tool", - "uuid": "0467972e-1650-48bb-9cc2-6e7c37af1e6f", - "when": "$(inputs.when)", + "uuid": "ebe92915-fada-4f47-85e2-48ca22f07692", + "when": null, "workflow_outputs": [] }, - "25": { - "annotation": "Create contig-to-bin assignments from COMEBin. Convert FASTA bin membership to a contig-to-bin table for DAS Tool.", - "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/fasta_to_contig2bin/Fasta_to_Contig2Bin/1.1.7+galaxy1", + "28": { + "annotation": "Summarize mapped-read depth and variance for each contig and read sample.", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/metabat2_jgi_summarize_bam_contig_depths/metabat2_jgi_summarize_bam_contig_depths/2.18.23+galaxy0", "errors": null, - "id": 25, + "id": 28, "input_connections": { - "inputs": { - "id": 20, - "output_name": "data_param" + "mode|bam_co_inputs": { + "id": 26, + "output_name": "output" } }, - "inputs": [], - "label": "Create contig-to-bin assignments from COMEBin", - "name": "Converts genome bins in fasta format", + "inputs": [ + { + "description": "runtime parameter for tool Calculate contig depths", + "name": "mode" + } + ], + "label": "Calculate contig depths across all read samples per assembly", + "name": "Calculate contig depths", "outputs": [ { - "name": "contigs2bin", + "name": "outputDepth", "type": "tabular" } ], "position": { - "left": 4600, - "top": 1370 + "left": 1540, + "top": 1020 }, - "post_job_actions": {}, - "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/fasta_to_contig2bin/Fasta_to_Contig2Bin/1.1.7+galaxy1", + "post_job_actions": { + "TagDatasetActionoutputDepth": { + "action_arguments": { + "tags": "coverage-depth-matrices" + }, + "action_type": "TagDatasetAction", + "output_name": "outputDepth" + } + }, + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/metabat2_jgi_summarize_bam_contig_depths/metabat2_jgi_summarize_bam_contig_depths/2.18.23+galaxy0", "tool_shed_repository": { - "changeset_revision": "fb2bed0eb02f", - "name": "fasta_to_contig2bin", + "changeset_revision": "45f6d77d37b7", + "name": "metabat2_jgi_summarize_bam_contig_depths", "owner": "iuc", "tool_shed": "toolshed.g2.bx.psu.edu" }, - "tool_state": "{\"inputs\": {\"__class__\": \"ConnectedValue\"}, \"__page__\": 0, \"__rerun_remap_job_id__\": null}", + "tool_state": "{\"advanced\": {\"percentIdentity\": \"97\", \"output_paired_contigs\": false, \"noIntraDepthVariance\": false, \"showDepth\": false, \"minMapQual\": \"0\", \"weightMapQual\": \"0.0\", \"includeEdgeBases\": false, \"maxEdgeBases\": \"75\"}, \"mode\": {\"type\": \"co\", \"__current_case__\": 1, \"bam_co_inputs\": {\"__class__\": \"ConnectedValue\"}, \"use_reference_cond\": {\"use_reference\": \"no\", \"__current_case__\": 0}}, \"shredding\": {\"shredLength\": \"16000\", \"shredDepth\": \"5\", \"minContigLength\": \"1\", \"minContigDepth\": \"0.0\"}, \"__page__\": 0, \"__rerun_remap_job_id__\": null}", "tool_uuid": null, - "tool_version": "1.1.7+galaxy1", + "tool_version": "2.18.23+galaxy0", "type": "tool", - "uuid": "d2d17d81-7acb-4cf2-baff-822050e8316f", + "uuid": "99fd59a2-f822-4cf5-9be4-5bdf2d55c43d", "when": null, - "workflow_outputs": [] + "workflow_outputs": [ + { + "label": "Coverage depth matrices", + "output_name": "outputDepth", + "uuid": "131fdbc7-1992-4fcc-bb81-4352a81ae0e8" + } + ] }, - "26": { - "annotation": "Create contig-to-bin assignments from MetaBAT2. Convert FASTA bin membership to a contig-to-bin table for DAS Tool.", - "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/fasta_to_contig2bin/Fasta_to_Contig2Bin/1.1.7+galaxy1", + "29": { + "annotation": "Split long contigs into fragments so coverage and composition can be clustered together.", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/concoct_cut_up_fasta/concoct_cut_up_fasta/1.1.0+galaxy3", "errors": null, - "id": 26, + "id": 29, "input_connections": { - "inputs": { - "id": 46, - "output_name": "data_param" + "input_fasta": { + "id": 0, + "output_name": "output" } }, "inputs": [], - "label": "Create contig-to-bin assignments from MetaBAT2", - "name": "Converts genome bins in fasta format", + "label": "Split contigs into fragments for CONCOCT", + "name": "CONCOCT: Cut up contigs", "outputs": [ { - "name": "contigs2bin", - "type": "tabular" + "name": "output_fasta", + "type": "fasta" + }, + { + "name": "output_bed", + "type": "bed" } ], "position": { - "left": 5100, - "top": 1070 + "left": 3000, + "top": 420 }, "post_job_actions": {}, - "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/fasta_to_contig2bin/Fasta_to_Contig2Bin/1.1.7+galaxy1", + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/concoct_cut_up_fasta/concoct_cut_up_fasta/1.1.0+galaxy3", "tool_shed_repository": { - "changeset_revision": "fb2bed0eb02f", - "name": "fasta_to_contig2bin", + "changeset_revision": "7a5598f973c9", + "name": "concoct_cut_up_fasta", "owner": "iuc", "tool_shed": "toolshed.g2.bx.psu.edu" }, - "tool_state": "{\"inputs\": {\"__class__\": \"ConnectedValue\"}, \"__page__\": 0, \"__rerun_remap_job_id__\": null}", + "tool_state": "{\"bedfile\": true, \"chunk_size\": \"10000\", \"input_fasta\": {\"__class__\": \"ConnectedValue\"}, \"merge_last\": true, \"overlap_size\": \"0\", \"__page__\": 0, \"__rerun_remap_job_id__\": null}", "tool_uuid": null, - "tool_version": "1.1.7+galaxy1", + "tool_version": "1.1.0+galaxy3", "type": "tool", - "uuid": "f1e5f724-12de-4ddb-a7a7-775ac3af7d8f", + "uuid": "83aae2e2-79b3-4f62-a985-46e171935dd2", "when": null, "workflow_outputs": [] }, - "27": { - "annotation": "Create contig-to-bin assignments from MaxBin2. Convert FASTA bin membership to a contig-to-bin table for DAS Tool.", - "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/fasta_to_contig2bin/Fasta_to_Contig2Bin/1.1.7+galaxy1", + "30": { + "annotation": "Cluster contig fragments into candidate bins from fragment coverage and composition.", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/concoct/concoct/1.1.0+galaxy3", "errors": null, - "id": 27, + "id": 30, "input_connections": { - "inputs": { - "id": 47, + "advanced|read_length": { + "id": 25, + "output_name": "integer_param" + }, + "composition_file": { + "id": 29, + "output_name": "output_fasta" + }, + "coverage_file": { + "id": 27, + "output_name": "output" + }, + "when": { + "id": 13, + "output_name": "output_param_boolean" + } + }, + "inputs": [ + { + "description": "runtime parameter for tool CONCOCT", + "name": "advanced" + } + ], + "label": "Cluster contig fragments with CONCOCT", + "name": "CONCOCT", + "outputs": [ + { + "name": "output_clustering", + "type": "csv" + }, + { + "name": "output_pca_components", + "type": "csv" + }, + { + "name": "output_pca_transformed", + "type": "csv" + } + ], + "position": { + "left": 3000, + "top": 720 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/concoct/concoct/1.1.0+galaxy3", + "tool_shed_repository": { + "changeset_revision": "396cce609c04", + "name": "concoct", + "owner": "iuc", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"advanced\": {\"clusters\": \"400\", \"kmer_length\": \"4\", \"length_threshold\": \"1000\", \"read_length\": {\"__class__\": \"ConnectedValue\"}, \"total_percentage_pca\": \"90\", \"seed\": \"1\", \"iterations\": \"500\", \"no_cov_normalization\": false}, \"composition_file\": {\"__class__\": \"ConnectedValue\"}, \"coverage_file\": {\"__class__\": \"ConnectedValue\"}, \"output\": {\"no_total_coverage\": false, \"converge_out\": false, \"log\": false}, \"__page__\": 0, \"__rerun_remap_job_id__\": null}", + "tool_uuid": null, + "tool_version": "1.1.0+galaxy3", + "type": "tool", + "uuid": "ae4f83c9-3700-43a8-ab9a-0614c20d91e4", + "when": "$(inputs.when)", + "workflow_outputs": [] + }, + "31": { + "annotation": "Combine fragment assignments into assignments for the original contigs.", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/concoct_merge_cut_up_clustering/concoct_merge_cut_up_clustering/1.1.0+galaxy3", + "errors": null, + "id": 31, + "input_connections": { + "cutup_clustering_result": { + "id": 34, "output_name": "data_param" + }, + "when": { + "id": 13, + "output_name": "output_param_boolean" } }, "inputs": [], - "label": "Create contig-to-bin assignments from MaxBin2", - "name": "Converts genome bins in fasta format", + "label": "Merge CONCOCT fragment clusters into contig assignments", + "name": "CONCOCT: Merge cut clusters", "outputs": [ { - "name": "contigs2bin", - "type": "tabular" + "name": "output", + "type": "csv" } ], "position": { - "left": 5100, - "top": 770 + "left": 3000, + "top": 1020 }, "post_job_actions": {}, - "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/fasta_to_contig2bin/Fasta_to_Contig2Bin/1.1.7+galaxy1", + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/concoct_merge_cut_up_clustering/concoct_merge_cut_up_clustering/1.1.0+galaxy3", "tool_shed_repository": { - "changeset_revision": "fb2bed0eb02f", - "name": "fasta_to_contig2bin", + "changeset_revision": "28b4b21d6aae", + "name": "concoct_merge_cut_up_clustering", "owner": "iuc", "tool_shed": "toolshed.g2.bx.psu.edu" }, - "tool_state": "{\"inputs\": {\"__class__\": \"ConnectedValue\"}, \"__page__\": 0, \"__rerun_remap_job_id__\": null}", + "tool_state": "{\"cutup_clustering_result\": {\"__class__\": \"ConnectedValue\"}, \"__page__\": 0, \"__rerun_remap_job_id__\": null}", "tool_uuid": null, - "tool_version": "1.1.7+galaxy1", + "tool_version": "1.1.0+galaxy3", "type": "tool", - "uuid": "f075f040-97e6-49f1-ae8d-d37da806c399", - "when": null, + "uuid": "0467972e-1650-48bb-9cc2-6e7c37af1e6f", + "when": "$(inputs.when)", "workflow_outputs": [] }, - "28": { - "annotation": "Extract CONCOCT bins as FASTA collections. Recover original contig sequences for each CONCOCT cluster.", + "32": { + "annotation": "Recover original contig sequences for each CONCOCT cluster.", "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/concoct_extract_fasta_bins/concoct_extract_fasta_bins/1.1.0+galaxy3", "errors": null, - "id": 28, + "id": 32, "input_connections": { "cluster_file": { - "id": 44, + "id": 35, "output_name": "data_param" }, "fasta_file": { - "id": 1, + "id": 0, "output_name": "output" }, "when": { - "id": 40, - "output_name": "output" + "id": 13, + "output_name": "output_param_boolean" } }, "inputs": [], @@ -1189,8 +1424,8 @@ } ], "position": { - "left": 6100, - "top": 470 + "left": 3000, + "top": 1320 }, "post_job_actions": { "TagDatasetActionbins": { @@ -1222,14 +1457,14 @@ } ] }, - "29": { - "annotation": "Create contig-to-bin assignments from CONCOCT. Convert FASTA bin membership to a contig-to-bin table for DAS Tool.", + "33": { + "annotation": "Convert FASTA bin membership to a contig-to-bin table for DAS Tool.", "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/fasta_to_contig2bin/Fasta_to_Contig2Bin/1.1.7+galaxy1", "errors": null, - "id": 29, + "id": 33, "input_connections": { "inputs": { - "id": 48, + "id": 36, "output_name": "data_param" } }, @@ -1243,8 +1478,8 @@ } ], "position": { - "left": 7100, - "top": 470 + "left": 3000, + "top": 1620 }, "post_job_actions": {}, "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/fasta_to_contig2bin/Fasta_to_Contig2Bin/1.1.7+galaxy1", @@ -1262,637 +1497,490 @@ "when": null, "workflow_outputs": [] }, - "30": { - "annotation": "Refine candidate bins with DAS Tool. Score candidate contig assignments and select a non-redundant set of refined genome bins.", - "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/das_tool/das_tool/1.1.7+galaxy1", + "34": { + "annotation": "Pass through the available result while allowing the upstream optional branch to be skipped.", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/pick_value/pick_value/0.2.0", "errors": null, - "id": 30, + "id": 34, "input_connections": { - "binning_0|bins": { - "id": 29, - "output_name": "contigs2bin" - }, - "binning_1|bins": { - "id": 25, - "output_name": "contigs2bin" - }, - "binning_2|bins": { - "id": 26, - "output_name": "contigs2bin" - }, - "binning_3|bins": { - "id": 27, - "output_name": "contigs2bin" - }, - "binning_4|bins": { - "id": 23, - "output_name": "contigs2bin" - }, - "contigs": { - "id": 1, - "output_name": "output" - }, - "when": { - "id": 8, - "output_name": "output_param_boolean" + "style_cond|type_cond|pick_from_0|value": { + "id": 30, + "output_name": "output_clustering" } }, "inputs": [], - "label": "Refine candidate bins with DAS Tool", - "name": "DAS Tool", + "label": "Bridge optional CONCOCT fragment clusters", + "name": "Pick parameter value", "outputs": [ { - "name": "bins", + "name": "data_param", "type": "input" - }, - { - "name": "summary", - "type": "tabular" - }, - { - "name": "contigs2bin", - "type": "tabular" - }, - { - "name": "log", - "type": "txt" } ], "position": { - "left": 7600, - "top": 770 + "left": 3000, + "top": 1920 }, - "post_job_actions": { - "TagDatasetActionbins": { - "action_arguments": { - "tags": "das-tool-bins" - }, - "action_type": "TagDatasetAction", - "output_name": "bins" - }, - "TagDatasetActioncontigs2bin": { - "action_arguments": { - "tags": "das-tool-conitgs2bin-report" - }, - "action_type": "TagDatasetAction", - "output_name": "contigs2bin" - }, - "TagDatasetActionsummary": { - "action_arguments": { - "tags": "das-tool-summary" - }, - "action_type": "TagDatasetAction", - "output_name": "summary" - } - }, - "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/das_tool/das_tool/1.1.7+galaxy1", + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/pick_value/pick_value/0.2.0", "tool_shed_repository": { - "changeset_revision": "b048a987dd7d", - "name": "das_tool", + "changeset_revision": "b19e21af9c52", + "name": "pick_value", "owner": "iuc", "tool_shed": "toolshed.g2.bx.psu.edu" }, - "tool_state": "{\"adv\": {\"search_engine\": \"diamond\", \"proteins\": null, \"score_threshold\": \"0.5\", \"duplicate_penalty\": \"0.6\", \"megabin_penalty\": \"0.5\", \"max_iter_post_threshold\": \"10\"}, \"binning\": [{\"__index__\": 0, \"bins\": {\"__class__\": \"ConnectedValue\"}, \"labels\": \"CONCOCT\"}, {\"__index__\": 1, \"bins\": {\"__class__\": \"ConnectedValue\"}, \"labels\": \"COMEBin\"}, {\"__index__\": 2, \"bins\": {\"__class__\": \"ConnectedValue\"}, \"labels\": \"MetaBAT2\"}, {\"__index__\": 3, \"bins\": {\"__class__\": \"ConnectedValue\"}, \"labels\": \"MaxBin2\"}, {\"__index__\": 4, \"bins\": {\"__class__\": \"ConnectedValue\"}, \"labels\": \"SemiBin\"}], \"contigs\": {\"__class__\": \"ConnectedValue\"}, \"output\": {\"proteins\": false, \"write_bin_evals\": false, \"write_bins\": {\"write_bins\": \"--write_bins\", \"__current_case__\": 0, \"write_unbinned\": false}, \"debug\": false}, \"__page__\": 0, \"__rerun_remap_job_id__\": null}", + "tool_state": "{\"style_cond\": {\"pick_style\": \"first\", \"__current_case__\": 0, \"type_cond\": {\"param_type\": \"data\", \"__current_case__\": 4, \"pick_from\": [{\"__index__\": 0, \"value\": {\"__class__\": \"ConnectedValue\"}}]}}, \"__page__\": 0, \"__rerun_remap_job_id__\": null}", "tool_uuid": null, - "tool_version": "1.1.7+galaxy1", + "tool_version": "0.2.0", "type": "tool", - "uuid": "35408f05-b203-4c65-b4ef-80ebfbbe1d58", - "when": "$(inputs.when)", - "workflow_outputs": [ - { - "label": "DAS Tool bins", - "output_name": "bins", - "uuid": "f6517089-9d22-4513-97e1-4268a3ad2766" - }, - { - "label": "DAS Tool contigs2bin report", - "output_name": "contigs2bin", - "uuid": "6e55e68d-96e7-4898-b6ae-f1110ea764a8" - }, + "uuid": "8ad60c12-2d20-48be-a5c7-ae099af557c4", + "when": null, + "workflow_outputs": [] + }, + "35": { + "annotation": "Pass through the available result while allowing the upstream optional branch to be skipped.", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/pick_value/pick_value/0.2.0", + "errors": null, + "id": 35, + "input_connections": { + "style_cond|type_cond|pick_from_0|value": { + "id": 31, + "output_name": "output" + } + }, + "inputs": [], + "label": "Bridge optional CONCOCT merged contig assignments", + "name": "Pick parameter value", + "outputs": [ { - "label": "DAS Tool summary", - "output_name": "summary", - "uuid": "47867014-9b39-493e-8aac-5350afa6792f" + "name": "data_param", + "type": "input" } - ] + ], + "position": { + "left": 3000, + "top": 2220 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/pick_value/pick_value/0.2.0", + "tool_shed_repository": { + "changeset_revision": "b19e21af9c52", + "name": "pick_value", + "owner": "iuc", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"style_cond\": {\"pick_style\": \"first\", \"__current_case__\": 0, \"type_cond\": {\"param_type\": \"data\", \"__current_case__\": 4, \"pick_from\": [{\"__index__\": 0, \"value\": {\"__class__\": \"ConnectedValue\"}}]}}, \"__page__\": 0, \"__rerun_remap_job_id__\": null}", + "tool_uuid": null, + "tool_version": "0.2.0", + "type": "tool", + "uuid": "d935dc9e-3f8d-4088-b1ca-8aab078965aa", + "when": null, + "workflow_outputs": [] }, - "31": { - "annotation": "Collect candidate bins from enabled binners for Binette. Assemble enabled binner results into one candidate list for refinement.", - "content_id": "__BUILD_LIST__", + "36": { + "annotation": "Pass through the available result while allowing the upstream optional branch to be skipped.", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/pick_value/pick_value/0.2.0", "errors": null, - "id": 31, + "id": 36, "input_connections": { - "datasets_0|input": { - "id": 29, - "output_name": "contigs2bin" - }, - "datasets_1|input": { - "id": 25, - "output_name": "contigs2bin" - }, - "datasets_2|input": { - "id": 26, - "output_name": "contigs2bin" - }, - "datasets_3|input": { - "id": 27, - "output_name": "contigs2bin" - }, - "datasets_4|input": { - "id": 23, - "output_name": "contigs2bin" - }, - "when": { - "id": 9, - "output_name": "output_param_boolean" + "style_cond|type_cond|pick_from_0|value": { + "id": 32, + "output_name": "bins" } }, "inputs": [], - "label": "Collect candidate bins from enabled binners for Binette", - "name": "Build list", + "label": "Bridge optional CONCOCT bins", + "name": "Pick parameter value", "outputs": [ { - "name": "output", + "name": "data_param", "type": "input" } ], "position": { - "left": 7600, - "top": 470 + "left": 3000, + "top": 2520 }, "post_job_actions": {}, - "tool_id": "__BUILD_LIST__", - "tool_state": "{\"datasets\": [{\"__index__\": 0, \"input\": {\"__class__\": \"ConnectedValue\"}, \"id_cond\": {\"id_select\": \"idx\", \"__current_case__\": 0}}, {\"__index__\": 1, \"input\": {\"__class__\": \"ConnectedValue\"}, \"id_cond\": {\"id_select\": \"idx\", \"__current_case__\": 0}}, {\"__index__\": 2, \"input\": {\"__class__\": \"ConnectedValue\"}, \"id_cond\": {\"id_select\": \"idx\", \"__current_case__\": 0}}, {\"__index__\": 3, \"input\": {\"__class__\": \"ConnectedValue\"}, \"id_cond\": {\"id_select\": \"idx\", \"__current_case__\": 0}}, {\"__index__\": 4, \"input\": {\"__class__\": \"ConnectedValue\"}, \"id_cond\": {\"id_select\": \"idx\", \"__current_case__\": 0}}], \"__page__\": 0, \"__rerun_remap_job_id__\": null}", + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/pick_value/pick_value/0.2.0", + "tool_shed_repository": { + "changeset_revision": "b19e21af9c52", + "name": "pick_value", + "owner": "iuc", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"style_cond\": {\"pick_style\": \"first\", \"__current_case__\": 0, \"type_cond\": {\"param_type\": \"data\", \"__current_case__\": 4, \"pick_from\": [{\"__index__\": 0, \"value\": {\"__class__\": \"ConnectedValue\"}}]}}, \"__page__\": 0, \"__rerun_remap_job_id__\": null}", "tool_uuid": null, - "tool_version": "1.2.0", + "tool_version": "0.2.0", "type": "tool", - "uuid": "4b782c6d-de7a-4753-8031-12c2130c27ca", - "when": "$(inputs.when)", + "uuid": "40356f8f-3bf9-4a93-a639-f9a8fa8e5cf2", + "when": null, "workflow_outputs": [] }, - "32": { - "annotation": "Refine candidate bins with Binette. Refine candidate FASTA bins using CheckM2 quality estimates and the selected completeness and contamination settings.", - "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/binette/binette/1.2.1+galaxy0", + "37": { + "annotation": "Use sequence and coverage representations to infer candidate genome bins when enabled.", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/comebin/comebin/1.1.0+galaxy1", "errors": null, - "id": 32, + "id": 37, "input_connections": { - "contig2bin_tables": { - "id": 31, - "output_name": "output" - }, - "contigs": { - "id": 1, + "assembly_file": { + "id": 0, "output_name": "output" }, - "database_type|datamanager": { - "id": 5, + "bam_files": { + "id": 26, "output_name": "output" }, "when": { - "id": 9, + "id": 11, "output_name": "output_param_boolean" - }, - "min_completeness": { - "id": 49, - "output_name": "output" - }, - "contamination_weight": { - "id": 50, - "output_name": "output" } }, - "inputs": [ - { - "description": "runtime parameter for tool Binette", - "name": "database_type" - } - ], - "label": "Refine candidate bins with Binette", - "name": "Binette", + "inputs": [], + "label": "Bin contigs with COMEBin", + "name": "COMEBin", "outputs": [ { "name": "bins", "type": "input" - }, - { - "name": "quality", - "type": "input" - }, - { - "name": "final", - "type": "tabular" } ], "position": { - "left": 8100, - "top": 470 + "left": 3800, + "top": 420 }, "post_job_actions": { "TagDatasetActionbins": { "action_arguments": { - "tags": "binette-bins" + "tags": "comebin-bins" }, "action_type": "TagDatasetAction", "output_name": "bins" - }, - "TagDatasetActionfinal": { - "action_arguments": { - "tags": "binette-post-quality-reports" - }, - "action_type": "TagDatasetAction", - "output_name": "final" - }, - "TagDatasetActionquality": { - "action_arguments": { - "tags": "binette-pre-quality-reports" - }, - "action_type": "TagDatasetAction", - "output_name": "quality" } }, - "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/binette/binette/1.2.1+galaxy0", + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/comebin/comebin/1.1.0+galaxy1", "tool_shed_repository": { - "changeset_revision": "9053a39d7994", - "name": "binette", + "changeset_revision": "7e66a24282a7", + "name": "comebin", "owner": "iuc", "tool_shed": "toolshed.g2.bx.psu.edu" }, - "tool_state": "{\"contamination_weight\": {\"__class__\": \"ConnectedValue\"}, \"contig2bin_tables\": {\"__class__\": \"ConnectedValue\"}, \"contigs\": {\"__class__\": \"ConnectedValue\"}, \"database_type\": {\"is_select\": \"cached\", \"__current_case__\": 1, \"datamanager\": {\"__class__\": \"ConnectedValue\"}}, \"min_completeness\": {\"__class__\": \"ConnectedValue\"}, \"proteins\": null, \"__page__\": 0, \"__rerun_remap_job_id__\": null}", + "tool_state": "{\"assembly_file\": {\"__class__\": \"ConnectedValue\"}, \"bam_files\": {\"__class__\": \"ConnectedValue\"}, \"batch\": \"1024\", \"emb_comebin\": \"2048\", \"emb_cov\": \"2048\", \"learning\": \"6\", \"loss\": \"0.15\", \"max_edges\": \"100\", \"__page__\": 0, \"__rerun_remap_job_id__\": null}", "tool_uuid": null, - "tool_version": "1.2.1+galaxy0", + "tool_version": "1.1.0+galaxy1", "type": "tool", - "uuid": "43c8ccb8-6c5f-4b64-87e1-1bd641f97079", + "uuid": "1e418b96-e22e-4cd0-a95d-d1aed1211125", "when": "$(inputs.when)", "workflow_outputs": [ { - "label": "Binette input bin quality reports", - "output_name": "quality", - "uuid": "99e64da5-8e80-4eb9-a931-289055ec717e" - }, - { - "label": "Binette bins", + "label": "COMEBin bins", "output_name": "bins", - "uuid": "78d973e2-680e-4541-9920-4a08489125da" - }, - { - "label": "Binette final bin quality report", - "output_name": "final", - "uuid": "a10382ed-1d4b-45ad-89b5-79cd5041ec66" + "uuid": "390a4e70-1fbd-461a-9730-e8eda75cec32" } ] }, - "33": { - "annotation": "Unzip reads for automatic read-length estimation. Separate forward and reverse mates while retaining sample identifiers.", - "content_id": "__UNZIP_COLLECTION__", + "38": { + "annotation": "Pass through the available result while allowing the upstream optional branch to be skipped.", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/pick_value/pick_value/0.2.0", "errors": null, - "id": 33, + "id": 38, "input_connections": { - "input": { - "id": 0, - "output_name": "output" + "style_cond|type_cond|pick_from_0|value": { + "id": 37, + "output_name": "bins" } }, "inputs": [], - "label": "Unzip reads for automatic read-length estimation", - "name": "Unzip collection", + "label": "Bridge optional COMEBin bins for downstream conversion", + "name": "Pick parameter value", "outputs": [ { - "name": "forward", - "type": "input" - }, - { - "name": "reverse", + "name": "data_param", "type": "input" } ], "position": { - "left": 600, - "top": 1670 + "left": 3800, + "top": 720 }, "post_job_actions": {}, - "tool_id": "__UNZIP_COLLECTION__", - "tool_state": "{\"input\": {\"__class__\": \"ConnectedValue\"}, \"__page__\": 0, \"__rerun_remap_job_id__\": null}", - "tool_uuid": null, - "tool_version": "1.0.0", - "type": "tool", - "uuid": "ec3c8493-c175-462d-a760-9d00c6ff6c69", - "when": null, - "workflow_outputs": [] - }, - "34": { - "type": "tool", - "name": "SeqKit statistics", - "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/seqkit_stats/seqkit_stats/2.8.1+galaxy0", + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/pick_value/pick_value/0.2.0", "tool_shed_repository": { - "changeset_revision": "812705bcf39c", - "name": "seqkit_stats", + "changeset_revision": "b19e21af9c52", + "name": "pick_value", "owner": "iuc", "tool_shed": "toolshed.g2.bx.psu.edu" }, - "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/seqkit_stats/seqkit_stats/2.8.1+galaxy0", - "tool_version": "2.8.1+galaxy0", - "tool_state": "{\"input\": {\"__class__\": \"ConnectedValue\"}, \"all\": false, \"basename\": true, \"skip_err\": false, \"tabular\": true}", - "input_connections": { - "input": { - "id": 33, - "output_name": "forward" - } - }, - "inputs": [], - "outputs": [], - "annotation": "Read-length statistics — forward. Count sequences and bases for read-count-weighted read-length estimation.", - "position": { - "left": 1100, - "top": 470 - }, - "id": 34, - "uuid": "7e279609-78fb-4228-bde2-64b430f05a4b", - "label": "Read-length statistics — forward", - "workflow_outputs": [] - }, - "35": { + "tool_state": "{\"style_cond\": {\"pick_style\": \"first\", \"__current_case__\": 0, \"type_cond\": {\"param_type\": \"data\", \"__current_case__\": 4, \"pick_from\": [{\"__index__\": 0, \"value\": {\"__class__\": \"ConnectedValue\"}}]}}, \"__page__\": 0, \"__rerun_remap_job_id__\": null}", + "tool_uuid": null, + "tool_version": "0.2.0", "type": "tool", - "name": "SeqKit statistics", - "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/seqkit_stats/seqkit_stats/2.8.1+galaxy0", - "tool_shed_repository": { - "changeset_revision": "812705bcf39c", - "name": "seqkit_stats", - "owner": "iuc", - "tool_shed": "toolshed.g2.bx.psu.edu" - }, - "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/seqkit_stats/seqkit_stats/2.8.1+galaxy0", - "tool_version": "2.8.1+galaxy0", - "tool_state": "{\"input\": {\"__class__\": \"ConnectedValue\"}, \"all\": false, \"basename\": true, \"skip_err\": false, \"tabular\": true}", - "input_connections": { - "input": { - "id": 33, - "output_name": "reverse" - } - }, - "inputs": [], - "outputs": [], - "annotation": "Read-length statistics — reverse. Count sequences and bases for read-count-weighted read-length estimation.", - "position": { - "left": 1100, - "top": 770 - }, - "id": 35, - "uuid": "f4127452-4189-431b-8a92-303f9669b0c5", - "label": "Read-length statistics — reverse", + "uuid": "fdd36664-fd23-475b-b6e2-523333782de6", + "when": null, "workflow_outputs": [] }, - "36": { - "type": "tool", - "name": "Concatenate datasets", - "tool_id": "toolshed.g2.bx.psu.edu/repos/bgruening/text_processing/tp_cat/0.1.0", - "tool_shed_repository": { - "changeset_revision": "ddf54b12c295", - "name": "text_processing", - "owner": "bgruening", - "tool_shed": "toolshed.g2.bx.psu.edu" - }, - "content_id": "toolshed.g2.bx.psu.edu/repos/bgruening/text_processing/tp_cat/0.1.0", - "tool_version": "0.1.0", - "tool_state": "{\"inputs\": [{\"__class__\": \"ConnectedValue\"}], \"queries\": [{\"__index__\": 0, \"inputs2\": [{\"__class__\": \"ConnectedValue\"}]}]}", + "39": { + "annotation": "Convert FASTA bin membership to a contig-to-bin table for DAS Tool.", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/fasta_to_contig2bin/Fasta_to_Contig2Bin/1.1.7+galaxy1", + "errors": null, + "id": 39, "input_connections": { "inputs": { - "id": 34, - "output_name": "output" - }, - "queries_0|inputs2": { - "id": 35, - "output_name": "output" + "id": 38, + "output_name": "data_param" } }, "inputs": [], - "outputs": [], - "annotation": "Combine read-length statistics.", + "label": "Create contig-to-bin assignments from COMEBin", + "name": "Converts genome bins in fasta format", + "outputs": [ + { + "name": "contigs2bin", + "type": "tabular" + } + ], "position": { - "left": 1600, - "top": 470 + "left": 3800, + "top": 1020 }, - "id": 36, - "uuid": "93ee4832-f528-498c-8590-8c95c882bce7", - "label": "Combine read-length statistics", - "workflow_outputs": [] - }, - "37": { - "type": "tool", - "name": "Text reformatting", - "tool_id": "toolshed.g2.bx.psu.edu/repos/bgruening/text_processing/tp_awk_tool/9.11+galaxy0", + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/fasta_to_contig2bin/Fasta_to_Contig2Bin/1.1.7+galaxy1", "tool_shed_repository": { - "changeset_revision": "30b60202d990", - "name": "text_processing", - "owner": "bgruening", + "changeset_revision": "fb2bed0eb02f", + "name": "fasta_to_contig2bin", + "owner": "iuc", "tool_shed": "toolshed.g2.bx.psu.edu" }, - "content_id": "toolshed.g2.bx.psu.edu/repos/bgruening/text_processing/tp_awk_tool/9.11+galaxy0", - "tool_version": "9.11+galaxy0", - "tool_state": "{\"infile\": {\"__class__\": \"ConnectedValue\"}, \"code\": \"BEGIN{FS=\\\"\\t\\\"} $4 ~ /^[0-9]+$/ {n += $4; total += $5} END{if(n<1) exit 1; print int(total/n+0.5)}\", \"variables\": []}", - "input_connections": { - "infile": { - "id": 36, - "output_name": "out_file1" - } - }, - "inputs": [], - "outputs": [], - "annotation": "Compute read-count-weighted mean length (both mates).", - "position": { - "left": 2100, - "top": 470 - }, - "id": 37, - "uuid": "a8cacc18-37f2-4367-84c6-82da65a2e262", - "label": "Compute read-count-weighted mean length (both mates)", + "tool_state": "{\"inputs\": {\"__class__\": \"ConnectedValue\"}, \"__page__\": 0, \"__rerun_remap_job_id__\": null}", + "tool_uuid": null, + "tool_version": "1.1.7+galaxy1", + "type": "tool", + "uuid": "d2d17d81-7acb-4cf2-baff-822050e8316f", + "when": null, "workflow_outputs": [] }, - "38": { - "type": "tool", - "name": "Parse parameter value", - "tool_id": "param_value_from_file", - "content_id": "param_value_from_file", - "tool_version": "0.1.0", - "tool_state": "{\"input1\": {\"__class__\": \"ConnectedValue\"}, \"param_type\": \"integer\", \"remove_newlines\": true}", + "40": { + "annotation": "Use contig sequence features and coverage to infer candidate genome bins.", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/semibin/semibin/2.1.0+galaxy1", + "errors": null, + "id": 40, "input_connections": { - "input1": { - "id": 37, - "output_name": "outfile" + "mode|align_select|input_bam": { + "id": 26, + "output_name": "output" + }, + "mode|input_fasta": { + "id": 0, + "output_name": "output" + }, + "when": { + "id": 12, + "output_name": "output_param_boolean" } }, - "inputs": [], - "outputs": [], - "annotation": "Automatic read length (CONCOCT).", - "position": { - "left": 2600, - "top": 470 - }, - "id": 38, - "uuid": "15437693-6eaf-4b7f-a3d9-ee0c0916787b", - "label": "Automatic read length (CONCOCT)", - "workflow_outputs": [] - }, - "39": { - "annotation": "Enable SemiBin binning. All binners are enabled by default.", - "content_id": null, - "errors": null, - "id": 39, - "input_connections": {}, "inputs": [ { - "description": "CONCOCT requires the read length for coverage. Best use fastQC to estimate the mean value.", - "name": "Read length (CONCOCT)" + "description": "runtime parameter for tool SemiBin", + "name": "mode" } ], - "label": "Run SemiBin?", - "name": "Input parameter", - "outputs": [], - "position": { - "left": 100, - "top": 3470 - }, - "tool_id": null, - "tool_state": "{\"parameter_type\": \"boolean\", \"optional\": false, \"default\": true, \"validators\": []}", - "tool_version": null, - "type": "parameter_input", - "uuid": "74f1e9bd-4da6-4192-befd-7cbd7c631abd", - "when": null, - "workflow_outputs": [] - }, - "40": { - "annotation": "Enable CONCOCT binning. All binners are enabled by default.", - "content_id": null, - "errors": null, - "id": 40, - "input_connections": {}, - "inputs": [ + "label": "Bin contigs with SemiBin", + "name": "SemiBin", + "outputs": [ { - "description": "CONCOCT requires the read length for coverage. Best use fastQC to estimate the mean value.", - "name": "Read length (CONCOCT)" + "name": "output_bins", + "type": "input" } ], - "label": "Run CONCOCT?", - "name": "Input parameter", - "outputs": [], "position": { - "left": 100, - "top": 2570 + "left": 3800, + "top": 1320 }, - "tool_id": null, - "tool_state": "{\"parameter_type\": \"boolean\", \"optional\": false, \"default\": true, \"validators\": []}", - "tool_version": null, - "type": "parameter_input", - "uuid": "d98d7796-08cb-4dba-82bc-dacdd65a602a", - "when": null, - "workflow_outputs": [] + "post_job_actions": { + "TagDatasetActionoutput_bins": { + "action_arguments": { + "tags": "semibin-bins" + }, + "action_type": "TagDatasetAction", + "output_name": "output_bins" + } + }, + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/semibin/semibin/2.1.0+galaxy1", + "tool_shed_repository": { + "changeset_revision": "afee33334a63", + "name": "semibin", + "owner": "iuc", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"annot\": {\"ml_threshold\": null}, \"bin\": {\"max_node\": \"1.0\", \"max_edges\": \"200\", \"minfasta_kbs\": \"200\"}, \"extra_output\": null, \"min_len\": {\"method\": \"automatic\", \"__current_case__\": 0}, \"mode\": {\"select\": \"co\", \"__current_case__\": 1, \"input_fasta\": {\"__class__\": \"ConnectedValue\"}, \"align_select\": {\"align_select\": \"bam\", \"__current_case__\": 0, \"input_bam\": {\"__class__\": \"ConnectedValue\"}}, \"ref\": {\"select\": \"ml\", \"__current_case__\": 2}}, \"orf_finder\": \"fast-naive\", \"random_seed\": \"0\", \"training\": {\"epoches\": \"20\", \"batch_size\": \"2048\"}, \"__page__\": 0, \"__rerun_remap_job_id__\": null}", + "tool_uuid": null, + "tool_version": "2.1.0+galaxy1", + "type": "tool", + "uuid": "c1d1b3e7-87d9-4bc2-9624-ed7ff1441738", + "when": "$(inputs.when)", + "workflow_outputs": [ + { + "label": "SemiBin bins", + "output_name": "output_bins", + "uuid": "84ab02d0-c3f8-45df-af96-5055f0c3cd13" + } + ] }, "41": { - "annotation": "Enable MetaBAT2 binning. All binners are enabled by default.", - "content_id": null, + "annotation": "Pass through the available result while allowing the upstream optional branch to be skipped.", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/pick_value/pick_value/0.2.0", "errors": null, "id": 41, - "input_connections": {}, - "inputs": [ + "input_connections": { + "style_cond|type_cond|pick_from_0|value": { + "id": 40, + "output_name": "output_bins" + } + }, + "inputs": [], + "label": "Optional bins bridge \u2014 SemiBin", + "name": "Pick parameter value", + "outputs": [ { - "description": "CONCOCT requires the read length for coverage. Best use fastQC to estimate the mean value.", - "name": "Read length (CONCOCT)" + "name": "data_param", + "type": "input" } ], - "label": "Run MetaBAT2?", - "name": "Input parameter", - "outputs": [], "position": { - "left": 100, - "top": 3170 + "left": 3800, + "top": 1620 }, - "tool_id": null, - "tool_state": "{\"parameter_type\": \"boolean\", \"optional\": false, \"default\": true, \"validators\": []}", - "tool_version": null, - "type": "parameter_input", - "uuid": "1b0313d7-ff9d-4e33-9718-2b4033ee3ab7", + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/pick_value/pick_value/0.2.0", + "tool_shed_repository": { + "changeset_revision": "b19e21af9c52", + "name": "pick_value", + "owner": "iuc", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"style_cond\": {\"pick_style\": \"first\", \"__current_case__\": 0, \"type_cond\": {\"param_type\": \"data\", \"__current_case__\": 4, \"pick_from\": [{\"__index__\": 0, \"value\": {\"__class__\": \"ConnectedValue\"}}]}}, \"__page__\": 0, \"__rerun_remap_job_id__\": null}", + "tool_uuid": null, + "tool_version": "0.2.0", + "type": "tool", + "uuid": "2536bd4f-59df-4e2b-b5e9-b8326cc3d9cf", "when": null, "workflow_outputs": [] }, "42": { - "annotation": "Enable MaxBin2 binning. All binners are enabled by default.", - "content_id": null, + "annotation": "Convert FASTA bin membership to a contig-to-bin table for DAS Tool.", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/fasta_to_contig2bin/Fasta_to_Contig2Bin/1.1.7+galaxy1", "errors": null, "id": 42, - "input_connections": {}, - "inputs": [ + "input_connections": { + "inputs": { + "id": 41, + "output_name": "data_param" + } + }, + "inputs": [], + "label": "Create contig-to-bin assignments from SemiBin", + "name": "Converts genome bins in fasta format", + "outputs": [ { - "description": "CONCOCT requires the read length for coverage. Best use fastQC to estimate the mean value.", - "name": "Read length (CONCOCT)" + "name": "contigs2bin", + "type": "tabular" } ], - "label": "Run MaxBin2?", - "name": "Input parameter", - "outputs": [], "position": { - "left": 100, - "top": 2870 + "left": 3800, + "top": 1920 }, - "tool_id": null, - "tool_state": "{\"parameter_type\": \"boolean\", \"optional\": false, \"default\": true, \"validators\": []}", - "tool_version": null, - "type": "parameter_input", - "uuid": "b6e29622-ab1c-449e-8a0d-efa2090e3fe8", + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/fasta_to_contig2bin/Fasta_to_Contig2Bin/1.1.7+galaxy1", + "tool_shed_repository": { + "changeset_revision": "fb2bed0eb02f", + "name": "fasta_to_contig2bin", + "owner": "iuc", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"inputs\": {\"__class__\": \"ConnectedValue\"}, \"__page__\": 0, \"__rerun_remap_job_id__\": null}", + "tool_uuid": null, + "tool_version": "1.1.7+galaxy1", + "type": "tool", + "uuid": "06531149-35a2-4c72-bf0b-c948785e24b9", "when": null, "workflow_outputs": [] }, "43": { - "annotation": "Bridge optional CONCOCT fragment clusters. Pass through the available result while allowing the upstream optional branch to be skipped.", - "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/pick_value/pick_value/0.2.0", + "annotation": "Combine contig composition and coverage to infer candidate genome bins.", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/metabat2/metabat2/2.18.23+galaxy0", "errors": null, "id": 43, "input_connections": { - "style_cond|type_cond|pick_from_0|value": { - "id": 19, - "output_name": "output_clustering" + "advanced|base_coverage_depth_cond|abdFile": { + "id": 28, + "output_name": "outputDepth" + }, + "inFile": { + "id": 0, + "output_name": "output" + }, + "when": { + "id": 14, + "output_name": "output_param_boolean" } }, "inputs": [], - "label": "Bridge optional CONCOCT fragment clusters", - "name": "Pick parameter value", + "label": "Bin contigs with MetaBAT2", + "name": "MetaBAT2", "outputs": [ { - "name": "data_param", + "name": "bins", "type": "input" } ], "position": { "left": 4600, - "top": 470 + "top": 420 }, - "post_job_actions": {}, - "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/pick_value/pick_value/0.2.0", + "post_job_actions": { + "TagDatasetActionbins": { + "action_arguments": { + "tags": "metabat2-bins" + }, + "action_type": "TagDatasetAction", + "output_name": "bins" + } + }, + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/metabat2/metabat2/2.18.23+galaxy0", "tool_shed_repository": { - "changeset_revision": "b19e21af9c52", - "name": "pick_value", + "changeset_revision": "c63e45a190b5", + "name": "metabat2", "owner": "iuc", "tool_shed": "toolshed.g2.bx.psu.edu" }, - "tool_state": "{\"style_cond\": {\"pick_style\": \"first\", \"__current_case__\": 0, \"type_cond\": {\"param_type\": \"data\", \"__current_case__\": 4, \"pick_from\": [{\"__index__\": 0, \"value\": {\"__class__\": \"ConnectedValue\"}}]}}, \"__page__\": 0, \"__rerun_remap_job_id__\": null}", + "tool_state": "{\"advanced\": {\"base_coverage_depth_cond\": {\"base_coverage_depth\": \"yes\", \"__current_case__\": 1, \"abdFile\": {\"__class__\": \"ConnectedValue\"}, \"cvExt\": null}, \"minContig\": \"1500\", \"minSmallContig\": \"1000\", \"maxP\": \"95\", \"minS\": \"60\", \"maxEdges\": \"200\", \"pTNF\": \"0\", \"noAdd\": false, \"minRecruitingSize\": \"10\", \"minCV\": \"1.0\", \"minCVSum\": \"1.0\", \"seed\": \"0\"}, \"inFile\": {\"__class__\": \"ConnectedValue\"}, \"out\": {\"minClsSize\": \"200000\", \"onlyLabel\": false, \"saveCls\": false, \"fullHeader\": false, \"extra_outputs\": null}, \"__page__\": 0, \"__rerun_remap_job_id__\": null}", "tool_uuid": null, - "tool_version": "0.2.0", + "tool_version": "2.18.23+galaxy0", "type": "tool", - "uuid": "8ad60c12-2d20-48be-a5c7-ae099af557c4", - "when": null, - "workflow_outputs": [] + "uuid": "876acc0d-bb05-42ad-ac28-5da06d57b99f", + "when": "$(inputs.when)", + "workflow_outputs": [ + { + "label": "MetaBAT2 bins", + "output_name": "bins", + "uuid": "98f1c793-cd46-4d0f-9e08-f9c54c702f36" + } + ] }, "44": { - "annotation": "Bridge optional CONCOCT merged contig assignments. Pass through the available result while allowing the upstream optional branch to be skipped.", + "annotation": "Pass through the available result while allowing the upstream optional branch to be skipped.", "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/pick_value/pick_value/0.2.0", "errors": null, "id": 44, "input_connections": { "style_cond|type_cond|pick_from_0|value": { - "id": 24, - "output_name": "output" + "id": 43, + "output_name": "bins" } }, "inputs": [], - "label": "Bridge optional CONCOCT merged contig assignments", + "label": "Optional bins bridge \u2014 MetaBAT2", "name": "Pick parameter value", "outputs": [ { @@ -1901,8 +1989,8 @@ } ], "position": { - "left": 5600, - "top": 470 + "left": 4600, + "top": 720 }, "post_job_actions": {}, "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/pick_value/pick_value/0.2.0", @@ -1916,103 +2004,137 @@ "tool_uuid": null, "tool_version": "0.2.0", "type": "tool", - "uuid": "d935dc9e-3f8d-4088-b1ca-8aab078965aa", + "uuid": "50a7dd5c-0ca6-4fef-8e1e-0f7c1c5c2ec5", "when": null, "workflow_outputs": [] }, "45": { - "annotation": "Optional bins bridge — SemiBin. Pass through the available result while allowing the upstream optional branch to be skipped.", - "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/pick_value/pick_value/0.2.0", + "annotation": "Convert FASTA bin membership to a contig-to-bin table for DAS Tool.", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/fasta_to_contig2bin/Fasta_to_Contig2Bin/1.1.7+galaxy1", "errors": null, "id": 45, "input_connections": { - "style_cond|type_cond|pick_from_0|value": { - "id": 18, - "output_name": "output_bins" + "inputs": { + "id": 44, + "output_name": "data_param" } }, "inputs": [], - "label": "Optional bins bridge — SemiBin", - "name": "Pick parameter value", + "label": "Create contig-to-bin assignments from MetaBAT2", + "name": "Converts genome bins in fasta format", "outputs": [ { - "name": "data_param", - "type": "input" + "name": "contigs2bin", + "type": "tabular" } ], "position": { - "left": 4100, - "top": 1370 + "left": 4600, + "top": 1020 }, "post_job_actions": {}, - "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/pick_value/pick_value/0.2.0", + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/fasta_to_contig2bin/Fasta_to_Contig2Bin/1.1.7+galaxy1", "tool_shed_repository": { - "changeset_revision": "b19e21af9c52", - "name": "pick_value", + "changeset_revision": "fb2bed0eb02f", + "name": "fasta_to_contig2bin", "owner": "iuc", "tool_shed": "toolshed.g2.bx.psu.edu" }, - "tool_state": "{\"style_cond\": {\"pick_style\": \"first\", \"__current_case__\": 0, \"type_cond\": {\"param_type\": \"data\", \"__current_case__\": 4, \"pick_from\": [{\"__index__\": 0, \"value\": {\"__class__\": \"ConnectedValue\"}}]}}, \"__page__\": 0, \"__rerun_remap_job_id__\": null}", + "tool_state": "{\"inputs\": {\"__class__\": \"ConnectedValue\"}, \"__page__\": 0, \"__rerun_remap_job_id__\": null}", "tool_uuid": null, - "tool_version": "0.2.0", + "tool_version": "1.1.7+galaxy1", "type": "tool", - "uuid": "2536bd4f-59df-4e2b-b5e9-b8326cc3d9cf", + "uuid": "f1e5f724-12de-4ddb-a7a7-775ac3af7d8f", "when": null, "workflow_outputs": [] }, "46": { - "annotation": "Optional bins bridge — MetaBAT2. Pass through the available result while allowing the upstream optional branch to be skipped.", - "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/pick_value/pick_value/0.2.0", + "annotation": "Use contig composition, coverage, and marker genes to infer candidate genome bins.", + "content_id": "toolshed.g2.bx.psu.edu/repos/mbernt/maxbin2/maxbin2/2.2.7+galaxy6", "errors": null, "id": 46, "input_connections": { - "style_cond|type_cond|pick_from_0|value": { - "id": 21, - "output_name": "bins" + "assembly|inputs|abund": { + "id": 28, + "output_name": "outputDepth" + }, + "contig": { + "id": 0, + "output_name": "output" + }, + "when": { + "id": 15, + "output_name": "output_param_boolean" } }, "inputs": [], - "label": "Optional bins bridge — MetaBAT2", - "name": "Pick parameter value", + "label": "Bin contigs with MaxBin2", + "name": "MaxBin2", "outputs": [ { - "name": "data_param", + "name": "bins", "type": "input" + }, + { + "name": "noclass", + "type": "fasta" + }, + { + "name": "toshort", + "type": "fasta" + }, + { + "name": "summary", + "type": "tabular" } ], "position": { "left": 4600, - "top": 1070 + "top": 1320 }, - "post_job_actions": {}, - "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/pick_value/pick_value/0.2.0", + "post_job_actions": { + "TagDatasetActionbins": { + "action_arguments": { + "tags": "maxbin2-bins" + }, + "action_type": "TagDatasetAction", + "output_name": "bins" + } + }, + "tool_id": "toolshed.g2.bx.psu.edu/repos/mbernt/maxbin2/maxbin2/2.2.7+galaxy6", "tool_shed_repository": { - "changeset_revision": "b19e21af9c52", - "name": "pick_value", - "owner": "iuc", + "changeset_revision": "0917b2d6010d", + "name": "maxbin2", + "owner": "mbernt", "tool_shed": "toolshed.g2.bx.psu.edu" }, - "tool_state": "{\"style_cond\": {\"pick_style\": \"first\", \"__current_case__\": 0, \"type_cond\": {\"param_type\": \"data\", \"__current_case__\": 4, \"pick_from\": [{\"__index__\": 0, \"value\": {\"__class__\": \"ConnectedValue\"}}]}}, \"__page__\": 0, \"__rerun_remap_job_id__\": null}", + "tool_state": "{\"adv\": {\"min_contig_length\": \"1000\", \"max_iteration\": \"50\", \"prob_threshold\": \"0.5\"}, \"assembly\": {\"type\": \"individual\", \"__current_case__\": 0, \"inputs\": {\"type\": \"abund\", \"__current_case__\": 1, \"abund\": {\"__class__\": \"ConnectedValue\"}}}, \"contig\": {\"__class__\": \"ConnectedValue\"}, \"output\": {\"plotmarker\": false, \"marker\": false, \"markers\": false, \"log\": false, \"markerset\": \"107\"}, \"__page__\": 0, \"__rerun_remap_job_id__\": null}", "tool_uuid": null, - "tool_version": "0.2.0", + "tool_version": "2.2.7+galaxy6", "type": "tool", - "uuid": "50a7dd5c-0ca6-4fef-8e1e-0f7c1c5c2ec5", - "when": null, - "workflow_outputs": [] + "uuid": "c2eca2a4-c8bc-4ea5-a7d7-acbc05643cf9", + "when": "$(inputs.when)", + "workflow_outputs": [ + { + "label": "MaxBin2 bins", + "output_name": "bins", + "uuid": "9a73928d-17dd-4785-aac0-56962096d9ee" + } + ] }, "47": { - "annotation": "Optional bins bridge — MaxBin2. Pass through the available result while allowing the upstream optional branch to be skipped.", + "annotation": "Pass through the available result while allowing the upstream optional branch to be skipped.", "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/pick_value/pick_value/0.2.0", "errors": null, "id": 47, "input_connections": { "style_cond|type_cond|pick_from_0|value": { - "id": 22, + "id": 46, "output_name": "bins" } }, "inputs": [], - "label": "Optional bins bridge — MaxBin2", + "label": "Optional bins bridge \u2014 MaxBin2", "name": "Pick parameter value", "outputs": [ { @@ -2022,7 +2144,7 @@ ], "position": { "left": 4600, - "top": 770 + "top": 1620 }, "post_job_actions": {}, "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/pick_value/pick_value/0.2.0", @@ -2041,113 +2163,169 @@ "workflow_outputs": [] }, "48": { - "annotation": "Bridge optional CONCOCT bins. Pass through the available result while allowing the upstream optional branch to be skipped.", - "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/pick_value/pick_value/0.2.0", + "annotation": "Convert FASTA bin membership to a contig-to-bin table for DAS Tool.", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/fasta_to_contig2bin/Fasta_to_Contig2Bin/1.1.7+galaxy1", "errors": null, "id": 48, "input_connections": { - "style_cond|type_cond|pick_from_0|value": { - "id": 28, - "output_name": "bins" + "inputs": { + "id": 47, + "output_name": "data_param" } }, "inputs": [], - "label": "Bridge optional CONCOCT bins", - "name": "Pick parameter value", + "label": "Create contig-to-bin assignments from MaxBin2", + "name": "Converts genome bins in fasta format", "outputs": [ { - "name": "data_param", - "type": "input" + "name": "contigs2bin", + "type": "tabular" } ], "position": { - "left": 6600, - "top": 470 + "left": 4600, + "top": 1920 }, "post_job_actions": {}, - "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/pick_value/pick_value/0.2.0", + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/fasta_to_contig2bin/Fasta_to_Contig2Bin/1.1.7+galaxy1", "tool_shed_repository": { - "changeset_revision": "b19e21af9c52", - "name": "pick_value", + "changeset_revision": "fb2bed0eb02f", + "name": "fasta_to_contig2bin", "owner": "iuc", "tool_shed": "toolshed.g2.bx.psu.edu" }, - "tool_state": "{\"style_cond\": {\"pick_style\": \"first\", \"__current_case__\": 0, \"type_cond\": {\"param_type\": \"data\", \"__current_case__\": 4, \"pick_from\": [{\"__index__\": 0, \"value\": {\"__class__\": \"ConnectedValue\"}}]}}, \"__page__\": 0, \"__rerun_remap_job_id__\": null}", + "tool_state": "{\"inputs\": {\"__class__\": \"ConnectedValue\"}, \"__page__\": 0, \"__rerun_remap_job_id__\": null}", "tool_uuid": null, - "tool_version": "0.2.0", + "tool_version": "1.1.7+galaxy1", "type": "tool", - "uuid": "40356f8f-3bf9-4a93-a639-f9a8fa8e5cf2", + "uuid": "f075f040-97e6-49f1-ae8d-d37da806c399", "when": null, "workflow_outputs": [] }, "49": { - "annotation": "Minimum bin completeness percentage for Binette refinement.", - "content_id": null, + "annotation": "Convert the selected bin refinement tool into a boolean that enables running DAS Tool only when requested.", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/map_param_value/map_param_value/0.2.0", "errors": null, "id": 49, - "input_connections": {}, + "input_connections": { + "input_param_type|input_param": { + "id": 7, + "output_name": "output" + } + }, "inputs": [ { - "description": "Minimum MAG completeness percentage for bin refinement (binette) and dereplication (drep)", - "name": "Minimum MAG completeness percentage" + "description": "runtime parameter for tool Map parameter value", + "name": "input_param_type" + } + ], + "label": "Run DAS Tool?", + "name": "Map parameter value", + "outputs": [ + { + "name": "output_param_boolean", + "type": "expression.json" } ], - "label": "Minimum MAG completeness percentage", - "name": "Input parameter", - "outputs": [], "position": { - "left": 100, - "top": 1670 + "left": 5400, + "top": 420 }, - "tool_id": null, - "tool_state": "{\"default\": 40, \"validators\": [{\"min\": null, \"max\": null, \"negate\": false, \"type\": \"in_range\"}], \"parameter_type\": \"integer\", \"optional\": false}", - "tool_version": null, - "type": "parameter_input", - "uuid": "bb6970c2-a90e-4e7c-9956-712bb57b8fd2", + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/map_param_value/map_param_value/0.2.0", + "tool_shed_repository": { + "changeset_revision": "022a635f2283", + "name": "map_param_value", + "owner": "iuc", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"input_param_type\": {\"type\": \"text\", \"__current_case__\": 0, \"input_param\": {\"__class__\": \"ConnectedValue\"}, \"mappings\": [{\"__index__\": 0, \"from\": \"Both\", \"to\": \"True\"}, {\"__index__\": 1, \"from\": \"DAS Tool\", \"to\": \"True\"}, {\"__index__\": 2, \"from\": \"Binette\", \"to\": \"False\"}]}, \"output_param_type\": \"boolean\", \"unmapped\": {\"on_unmapped\": \"default\", \"__current_case__\": 2, \"default_value\": \"False\"}, \"__page__\": 0, \"__rerun_remap_job_id__\": null}", + "tool_uuid": null, + "tool_version": "0.2.0", + "type": "tool", + "uuid": "acd10a24-ae5b-4858-84d2-8cde933fe404", "when": null, "workflow_outputs": [] }, "50": { - "annotation": "This weight is used for the scoring the bins. A low weight favor complete bins over low contaminated bins (--contamination_weight)", - "content_id": null, + "annotation": "Convert the selected bin refinement tool into a boolean that enables running Binette only when requested.", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/map_param_value/map_param_value/0.2.0", "errors": null, "id": 50, - "input_connections": {}, + "input_connections": { + "input_param_type|input_param": { + "id": 7, + "output_name": "output" + } + }, "inputs": [ { - "description": "This weight is used for the scoring the bins. A low weight favor complete bins over low contaminated bins (--contamination_weight)", - "name": "Contamination weight (Binette)" + "description": "runtime parameter for tool Map parameter value", + "name": "input_param_type" + } + ], + "label": "Run Binette?", + "name": "Map parameter value", + "outputs": [ + { + "name": "output_param_boolean", + "type": "expression.json" } ], - "label": "Contamination weight (Binette)", - "name": "Input parameter", - "outputs": [], "position": { - "left": 100, - "top": 1370 + "left": 5400, + "top": 720 }, - "tool_id": null, - "tool_state": "{\"default\": 2, \"validators\": [{\"min\": null, \"max\": null, \"negate\": false, \"type\": \"in_range\"}], \"parameter_type\": \"integer\", \"optional\": false}", - "tool_version": null, - "type": "parameter_input", - "uuid": "cc7e7b6a-c6c3-402a-bf36-362369856db9", + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/map_param_value/map_param_value/0.2.0", + "tool_shed_repository": { + "changeset_revision": "022a635f2283", + "name": "map_param_value", + "owner": "iuc", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"input_param_type\": {\"type\": \"text\", \"__current_case__\": 0, \"input_param\": {\"__class__\": \"ConnectedValue\"}, \"mappings\": [{\"__index__\": 0, \"from\": \"Both\", \"to\": \"True\"}, {\"__index__\": 1, \"from\": \"Binette\", \"to\": \"True\"}, {\"__index__\": 2, \"from\": \"DAS Tool\", \"to\": \"False\"}]}, \"output_param_type\": \"boolean\", \"unmapped\": {\"on_unmapped\": \"default\", \"__current_case__\": 2, \"default_value\": \"False\"}, \"__page__\": 0, \"__rerun_remap_job_id__\": null}", + "tool_uuid": null, + "tool_version": "0.2.0", + "type": "tool", + "uuid": "60bd76d8-9219-40f4-a5a3-4a062b71f995", "when": null, "workflow_outputs": [] }, "51": { - "annotation": "Flatten read pairs. Remove collection nesting so results can be pooled or combined; existing datasets are reused.", - "content_id": "__FLATTEN__", + "annotation": "Assemble enabled binner results into one candidate list for refinement.", + "content_id": "__BUILD_LIST__", "errors": null, "id": 51, "input_connections": { - "input": { - "id": 0, - "output_name": "output" + "datasets_0|input": { + "id": 33, + "output_name": "contigs2bin" + }, + "datasets_1|input": { + "id": 39, + "output_name": "contigs2bin" + }, + "datasets_2|input": { + "id": 45, + "output_name": "contigs2bin" + }, + "datasets_3|input": { + "id": 48, + "output_name": "contigs2bin" + }, + "datasets_4|input": { + "id": 42, + "output_name": "contigs2bin" + }, + "when": { + "id": 50, + "output_name": "output_param_boolean" } }, "inputs": [], - "label": "Flatten read pairs", - "name": "Flatten collection", + "label": "Collect candidate bins from enabled binners for Binette", + "name": "Build list", "outputs": [ { "name": "output", @@ -2155,80 +2333,243 @@ } ], "position": { - "left": 1100, - "top": 1070 + "left": 5400, + "top": 1020 }, - "tool_id": "__FLATTEN__", - "tool_state": "{\"input\": {\"__class__\": \"ConnectedValue\"}, \"join_identifier\": \"_\", \"__page__\": null, \"__rerun_remap_job_id__\": null}", - "tool_version": "1.0.0", + "post_job_actions": {}, + "tool_id": "__BUILD_LIST__", + "tool_state": "{\"datasets\": [{\"__index__\": 0, \"input\": {\"__class__\": \"ConnectedValue\"}, \"id_cond\": {\"id_select\": \"idx\", \"__current_case__\": 0}}, {\"__index__\": 1, \"input\": {\"__class__\": \"ConnectedValue\"}, \"id_cond\": {\"id_select\": \"idx\", \"__current_case__\": 0}}, {\"__index__\": 2, \"input\": {\"__class__\": \"ConnectedValue\"}, \"id_cond\": {\"id_select\": \"idx\", \"__current_case__\": 0}}, {\"__index__\": 3, \"input\": {\"__class__\": \"ConnectedValue\"}, \"id_cond\": {\"id_select\": \"idx\", \"__current_case__\": 0}}, {\"__index__\": 4, \"input\": {\"__class__\": \"ConnectedValue\"}, \"id_cond\": {\"id_select\": \"idx\", \"__current_case__\": 0}}], \"__page__\": 0, \"__rerun_remap_job_id__\": null}", + "tool_uuid": null, + "tool_version": "1.2.0", "type": "tool", - "uuid": "13edb836-8c44-4618-b463-72b05e40a155", - "when": null, + "uuid": "4b782c6d-de7a-4753-8031-12c2130c27ca", + "when": "$(inputs.when)", "workflow_outputs": [] }, "52": { - "annotation": "Rebuild read pairs per assembly. Use collection identifiers to arrange datasets into the structure required by the next step; sequence files are not rewritten.", - "content_id": "__APPLY_RULES__", + "annotation": "Score candidate contig assignments and select a non-redundant set of refined genome bins.", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/das_tool/das_tool/1.1.7+galaxy1", "errors": null, "id": 52, "input_connections": { - "input": { - "id": 11, - "output_name": "output_b" + "binning_0|bins": { + "id": 33, + "output_name": "contigs2bin" + }, + "binning_1|bins": { + "id": 39, + "output_name": "contigs2bin" + }, + "binning_2|bins": { + "id": 45, + "output_name": "contigs2bin" + }, + "binning_3|bins": { + "id": 48, + "output_name": "contigs2bin" + }, + "binning_4|bins": { + "id": 42, + "output_name": "contigs2bin" + }, + "contigs": { + "id": 0, + "output_name": "output" + }, + "when": { + "id": 49, + "output_name": "output_param_boolean" } }, "inputs": [], - "label": "Rebuild read pairs per assembly", - "name": "Apply rules", + "label": "Refine candidate bins with DAS Tool", + "name": "DAS Tool", "outputs": [ { - "name": "output", + "name": "bins", "type": "input" + }, + { + "name": "summary", + "type": "tabular" + }, + { + "name": "contigs2bin", + "type": "tabular" + }, + { + "name": "log", + "type": "txt" } ], "position": { - "left": 2100, - "top": 770 + "left": 5400, + "top": 1320 }, - "tool_id": "__APPLY_RULES__", - "tool_state": "{\"input\": {\"__class__\": \"ConnectedValue\"}, \"rules\": {\"rules\": [{\"type\": \"add_column_metadata\", \"value\": \"identifier0\"}, {\"type\": \"add_column_metadata\", \"value\": \"identifier1\"}, {\"type\": \"add_column_regex\", \"target_column\": 1, \"expression\": \"^(.+)_(forward|reverse)$\", \"group_count\": 2}], \"mapping\": [{\"type\": \"list_identifiers\", \"columns\": [0, 2]}, {\"type\": \"paired_identifier\", \"columns\": [3]}]}, \"__page__\": null, \"__rerun_remap_job_id__\": null}", - "tool_version": "1.1.0", + "post_job_actions": { + "TagDatasetActionbins": { + "action_arguments": { + "tags": "das-tool-bins" + }, + "action_type": "TagDatasetAction", + "output_name": "bins" + }, + "TagDatasetActioncontigs2bin": { + "action_arguments": { + "tags": "das-tool-conitgs2bin-report" + }, + "action_type": "TagDatasetAction", + "output_name": "contigs2bin" + }, + "TagDatasetActionsummary": { + "action_arguments": { + "tags": "das-tool-summary" + }, + "action_type": "TagDatasetAction", + "output_name": "summary" + } + }, + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/das_tool/das_tool/1.1.7+galaxy1", + "tool_shed_repository": { + "changeset_revision": "b048a987dd7d", + "name": "das_tool", + "owner": "iuc", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"adv\": {\"search_engine\": \"diamond\", \"proteins\": null, \"score_threshold\": \"0.5\", \"duplicate_penalty\": \"0.6\", \"megabin_penalty\": \"0.5\", \"max_iter_post_threshold\": \"10\"}, \"binning\": [{\"__index__\": 0, \"bins\": {\"__class__\": \"ConnectedValue\"}, \"labels\": \"CONCOCT\"}, {\"__index__\": 1, \"bins\": {\"__class__\": \"ConnectedValue\"}, \"labels\": \"COMEBin\"}, {\"__index__\": 2, \"bins\": {\"__class__\": \"ConnectedValue\"}, \"labels\": \"MetaBAT2\"}, {\"__index__\": 3, \"bins\": {\"__class__\": \"ConnectedValue\"}, \"labels\": \"MaxBin2\"}, {\"__index__\": 4, \"bins\": {\"__class__\": \"ConnectedValue\"}, \"labels\": \"SemiBin\"}], \"contigs\": {\"__class__\": \"ConnectedValue\"}, \"output\": {\"proteins\": false, \"write_bin_evals\": false, \"write_bins\": {\"write_bins\": \"--write_bins\", \"__current_case__\": 0, \"write_unbinned\": false}, \"debug\": false}, \"__page__\": 0, \"__rerun_remap_job_id__\": null}", + "tool_uuid": null, + "tool_version": "1.1.7+galaxy1", "type": "tool", - "uuid": "3d632024-5937-4665-b8a0-9c4d094762ad", - "when": null, - "workflow_outputs": [] + "uuid": "35408f05-b203-4c65-b4ef-80ebfbbe1d58", + "when": "$(inputs.when)", + "workflow_outputs": [ + { + "label": "DAS Tool bins", + "output_name": "bins", + "uuid": "f6517089-9d22-4513-97e1-4268a3ad2766" + }, + { + "label": "DAS Tool contigs2bin report", + "output_name": "contigs2bin", + "uuid": "6e55e68d-96e7-4898-b6ae-f1110ea764a8" + }, + { + "label": "DAS Tool summary", + "output_name": "summary", + "uuid": "47867014-9b39-493e-8aac-5350afa6792f" + } + ] }, "53": { - "annotation": "References per assembly and read sample. Use collection identifiers to arrange datasets into the structure required by the next step; sequence files are not rewritten.", - "content_id": "__APPLY_RULES__", + "annotation": "Refine candidate FASTA bins using CheckM2 quality estimates and the selected completeness and contamination settings.", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/binette/binette/1.2.1+galaxy0", "errors": null, "id": 53, "input_connections": { - "input": { - "id": 11, - "output_name": "output_a" + "contig2bin_tables": { + "id": 51, + "output_name": "output" + }, + "contigs": { + "id": 0, + "output_name": "output" + }, + "database_type|datamanager": { + "id": 8, + "output_name": "output" + }, + "when": { + "id": 50, + "output_name": "output_param_boolean" + }, + "min_completeness": { + "id": 9, + "output_name": "output" + }, + "contamination_weight": { + "id": 10, + "output_name": "output" } }, - "inputs": [], - "label": "References per assembly and read sample", - "name": "Apply rules", + "inputs": [ + { + "description": "runtime parameter for tool Binette", + "name": "database_type" + } + ], + "label": "Refine candidate bins with Binette", + "name": "Binette", "outputs": [ { - "name": "output", + "name": "bins", + "type": "input" + }, + { + "name": "quality", "type": "input" + }, + { + "name": "final", + "type": "tabular" } ], "position": { - "left": 2100, - "top": 1070 + "left": 5400, + "top": 1620 }, - "tool_id": "__APPLY_RULES__", - "tool_state": "{\"input\": {\"__class__\": \"ConnectedValue\"}, \"rules\": {\"rules\": [{\"type\": \"add_column_metadata\", \"value\": \"identifier0\"}, {\"type\": \"add_column_metadata\", \"value\": \"identifier1\"}, {\"type\": \"add_filter_regex\", \"target_column\": 1, \"expression\": \"_forward$\", \"invert\": false}, {\"type\": \"add_column_regex\", \"target_column\": 1, \"expression\": \"^(.+)_(forward|reverse)$\", \"group_count\": 2}], \"mapping\": [{\"type\": \"list_identifiers\", \"columns\": [0, 2]}]}, \"__page__\": null, \"__rerun_remap_job_id__\": null}", - "tool_version": "1.1.0", + "post_job_actions": { + "TagDatasetActionbins": { + "action_arguments": { + "tags": "binette-bins" + }, + "action_type": "TagDatasetAction", + "output_name": "bins" + }, + "TagDatasetActionfinal": { + "action_arguments": { + "tags": "binette-post-quality-reports" + }, + "action_type": "TagDatasetAction", + "output_name": "final" + }, + "TagDatasetActionquality": { + "action_arguments": { + "tags": "binette-pre-quality-reports" + }, + "action_type": "TagDatasetAction", + "output_name": "quality" + } + }, + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/binette/binette/1.2.1+galaxy0", + "tool_shed_repository": { + "changeset_revision": "9053a39d7994", + "name": "binette", + "owner": "iuc", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"contamination_weight\": {\"__class__\": \"ConnectedValue\"}, \"contig2bin_tables\": {\"__class__\": \"ConnectedValue\"}, \"contigs\": {\"__class__\": \"ConnectedValue\"}, \"database_type\": {\"is_select\": \"cached\", \"__current_case__\": 1, \"datamanager\": {\"__class__\": \"ConnectedValue\"}}, \"min_completeness\": {\"__class__\": \"ConnectedValue\"}, \"proteins\": null, \"__page__\": 0, \"__rerun_remap_job_id__\": null}", + "tool_uuid": null, + "tool_version": "1.2.1+galaxy0", "type": "tool", - "uuid": "7d49bad3-3650-4ac9-a5c4-d9c0090b7375", - "when": null, - "workflow_outputs": [] + "uuid": "43c8ccb8-6c5f-4b64-87e1-1bd641f97079", + "when": "$(inputs.when)", + "workflow_outputs": [ + { + "label": "Binette input bin quality reports", + "output_name": "quality", + "uuid": "99e64da5-8e80-4eb9-a931-289055ec717e" + }, + { + "label": "Binette bins", + "output_name": "bins", + "uuid": "78d973e2-680e-4541-9920-4a08489125da" + }, + { + "label": "Binette final bin quality report", + "output_name": "final", + "uuid": "a10382ed-1d4b-45ad-89b5-79cd5041ec66" + } + ] } }, "tags": [ @@ -2236,5 +2577,5 @@ ], "uuid": "9b674961-0b3c-4f8f-97e6-f225e018198f", "version": 1, - "readme": "# Multi-sample binning workflow\n\nThis workflow uses paired-end reads and their corresponding assemblies, generated by any assembler, to produce metagenomic bins using multiple binning tools. Each binner uses a different approach to identify and group contigs into bins.\n\nIn contrast to single-sample binning, the multi-sample approach uses information across multiple samples during binning. Reads from each sample are mapped against the assemblies from all samples to generate cross-sample coverage information. This provides the binners with additional information that can help distinguish contigs based on their abundance patterns across samples.\n\nIn this workflow, each sample's reads are mapped against each sample's assembly, and each assembly is subsequently binned separately using the cross-sample coverage information. This differs from multi-sample approaches that concatenate assemblies and perform a joint binning step before splitting the resulting bins by sample.\n\nThe multi-sample approach is more computationally demanding than single-sample binning because it requires additional read mappings and processes a larger amount of data. When the reads of N samples are mapped against N assemblies, the number of mapping jobs and BAM files scales as N², so storage requirements still grow quickly with the number of samples. The all-vs-all input matrix uses native collection operations that reference the original reads, without writing intermediate interlaced or de-interlaced FASTQ files. However, the resulting cross-sample coverage information can improve binning, particularly when organisms show different relative abundances across samples. For a large number of samples, or for samples from unrelated environments where cross-sample coverage adds little information, single-sample binning is the cheaper choice.\n\nAfter binning is complete, the workflow uses one or both of the available refinement tools to combine and refine the results from the individual binners, with the goal of generating higher-quality bins.\n\nThis workflow is the binning section, with the added multi-sample logic, of the [MAGs generation workflow](../mags-building/), extracted so that MAGs generation and other workflows can reuse it instead of maintaining their own copy (check the [FAIRyMAGs repository](https://github.com/usegalaxy-eu/FAIRyMAGs) for the complete workflow suite and its capabilities).\nA dedicated [learning pathway](https://galaxyproject.github.io/training-material/learning-pathways/mags.html) provides detailed guidance on MAG generation in Galaxy, including the binning tools used here.\n\n## Inputs\n\n- **Paired-end reads**: a `list:paired` collection with one element per sample.\n - Reads should be quality-trimmed and host-removed, e.g. with the IWC [short-read quality control](../../read-preprocessing/short-read-qc-trimming/) and [host contamination removal](../host-contamination-removal/host-contamination-removal-short-reads/) workflows.\n - The sample names are used as coverage columns for the binners.\n- **Assemblies**: a `list` collection of assemblies from any assembler (e.g. MEGAHIT or metaSPAdes).\n - Every sample's reads are mapped against every assembly, so the element identifiers of the two collections do not need to match. The number of assemblies does not need to equal the number of read samples either: a single co-assembly binned with the coverage of all samples is a valid input.\n- **Run COMEBin?** (default: yes): COMEBin is a deep-learning binner that often improves the results, but it is the most time- and resource-consuming step of the workflow.\n- **Bin refinement tool** (default: `Binette`): `Binette`, `DAS Tool` or `Both`.\n- **CheckM2 Database**: the CheckM2 reference database Binette uses to assess bin quality.\n- **Minimum MAG completeness percentage** (default: 40): the minimum bin completeness used by Binette; does not filter DAS Tool output.\n- **Contamination weight (Binette)** (default: 2): the contamination penalty used in Binette's scoring.\n\nSemiBin uses co-binning mode in this workflow. Its Galaxy wrapper does not expose a pretrained-model environment selector in that mode.\n\n## Automatic read length and binner selection\n\nCONCOCT read length is derived automatically using SeqKit statistics from both mates of every input sample. The workflow sums sequence lengths and read counts, divides total bases by total reads, and rounds to the nearest integer. This is a read-count-weighted mean, not an unweighted average of sample means. Multi coverage uses all original per-sample reads. No manual read-length input is required.\n\n**Run COMEBin?**, **Run SemiBin?**, **Run CONCOCT?**, **Run MetaBAT2?**, and **Run MaxBin2?** independently enable each binner; all default to **yes**. Keep at least one binner enabled. Disabled binners contribute empty candidate tables rather than blocking the selected refiner. Raw binner outputs are available only when that binner runs.\n\n## Outputs\n\n- **Coverage depth matrices**: one JGI depth table per assembly, containing coverage from all original samples.\n- **CONCOCT bins**, **MaxBin2 bins**, **MetaBAT2 bins**, **SemiBin bins** and **COMEBin bins** (if COMEBin was run): one list of bins per assembly.\n- **DAS Tool bins**, **DAS Tool summary** and **DAS Tool contigs2bin report** (if DAS Tool was run): the refined bins, a per-bin summary (completeness and redundancy based on single-copy genes) and the contig-to-bin assignments.\n- **Binette bins**, **Binette input bin quality reports** and **Binette final bin quality report** (if Binette was run): the refined bins, the CheckM2 quality of the bins from each binner, and the CheckM2 quality of the final bins.\n\n## Why use this workflow\n\nThis workflow provides a standardized and modular workflow for metagenomic binning that can be integrated into larger metagenomic analysis workflows. Its main purpose is to separate the binning step from other parts of MAG analysis, making complex workflows easier to understand, maintain, and adapt.\n\nUsing binning as an independent workflow provides better control over the inputs, binning parameters, and outputs. It also allows users to reuse the same binning strategy in different analysis pipelines without having to include unnecessary upstream or downstream steps. This modular design is particularly useful when the generated bins are intended for a specific downstream analysis, such as taxonomic classification, genome annotation, functional analysis, or benchmarking.\n\nIn contrast, the IWC Metagenome-Assembled Genomes (MAGs) generation workflow (https://iwc.galaxyproject.org/workflow/mags-building-main/) is designed as a comprehensive end-to-end solution. It performs metagenome assembly and multi-tool binning of paired short reads and optional long reads, followed by dereplication and analysis of MAG quality and abundance. This makes it well suited for users who want to generate and evaluate MAGs without requiring a specialized downstream workflow.\n\nThis binning workflow should therefore be preferred when binning needs to be incorporated as one component of a larger or more specialized analysis. It reduces workflow complexity, improves the overview of individual analysis steps, and makes it easier to modify or replace downstream analyses independently.\n\nIt should also be noted that this workflow can restrict Upstream. For example, it is possible to restrict the workflow so that the User can only use one of the two refinement tools or can restrict it to only one specific refinement tool.\n\n## Workflow logic\n\n- Preprocess reads and assemblies for binning.\n- Generate cross-sample coverage information:\n \n - Flatten the read pairs, form a nested cross product with the assemblies, and use Apply Rules to reconstruct an assembly × sample matrix of paired reads and matching assembly references. These operations reuse the underlying datasets; they do not rewrite read files. Sample identifiers, including underscores and `_forward`/`_reverse` suffixes in sample names, are retained by removing only the final mate suffix introduced by flattening.\n - Map the reads from each sample against the assemblies from all samples.\n\n- Perform binning using multiple binners:\n\n - CONCOCT\n - MaxBin2\n - MetaBAT2\n - SemiBin\n - COMEBin\n\n- Refine the resulting bins using one or both refinement tools:\n\n - DAS Tool\n - Binette\n\n## Funding\n\nThis workflow was developed as part of the [**FAIRyMAGs** project](https://elixir-europe.org/how-we-work/scientific-programme/science/bfsp/fairymags), funded as a commissioned service of the [**Biodiversity, Food Security and Pathogens (BFSP) ELIXIR Scientific Programme 2024–2028**](https://elixir-europe.org/how-we-work/scientific-programme/science/bfsp).\n\nThe project was also supported by the **European Galaxy Server**, funded by the German Federal Ministry of Education and Research (BMBF; 031 A538A de.NBI-RBC) and the **Ministry of Science, Research and the Arts Baden-Württemberg (MWK)** within the framework of **LIBIS/de.NBI Freiburg**.\n" + "readme": "# Multi-sample binning workflow\n\nThis workflow turns metagenomic assemblies into metagenomic bins with five binners (CONCOCT, MaxBin2, MetaBAT2, SemiBin and COMEBin), using cross-sample read coverage, and refines the bins with DAS Tool and/or Binette.\n\nIt is the binning part of the [MAGs generation workflow](../mags-building/), with the multi-sample logic added. It is extracted as its own workflow so that MAG generation and other workflows can reuse it instead of maintaining their own copy (check the [FAIRyMAGs repository](https://github.com/usegalaxy-eu/FAIRyMAGs) for the complete workflow suite and its capabilities).\nA dedicated [learning pathway](https://galaxyproject.github.io/training-material/learning-pathways/mags.html) provides detailed guidance on MAG generation in Galaxy, including the binning tools used here.\n\n## How multi-sample binning works\n\nIn single-sample binning, each assembly is binned with the coverage of its own reads. In multi-sample binning, the reads of every sample are mapped against the assembly of every sample, so each contig gets one coverage profile per sample. Binners can then separate organisms that have similar composition but different abundance patterns across samples.\n\nTwo details are worth knowing before starting:\n\n- Each sample's reads are mapped against each sample's assembly, and every assembly is binned on its own. The workflow does not concatenate all assemblies into one co-assembly and split the resulting bins afterwards.\n- The mapping workload grows as N\u00b2 for N samples: N read sets \u00d7 N assemblies. Storage grows quickly too, even though the workflow reuses the original FASTQ datasets instead of writing intermediate read files.\n\nFor many samples, or for samples from unrelated environments where cross-sample coverage adds little, [single-sample binning](../single-sample-binning/) is the cheaper choice.\n\n## Inputs\n\n- **Assemblies**: a `list` collection of assemblies from any assembler (e.g. MEGAHIT or metaSPAdes).\n - Every sample's reads are mapped against every assembly, so the element identifiers of the reads and assemblies do not need to match.\n - The number of assemblies does not need to equal the number of read samples: a single co-assembly binned with the coverage of all samples is a valid input.\n- **Paired-end reads**: a `list:paired` collection with one element per sample.\n - Reads should be quality-trimmed and host-removed, e.g. with the IWC [short-read quality control](../../read-preprocessing/short-read-qc-trimming/) and [host contamination removal](../host-contamination-removal/host-contamination-removal-short-reads/) workflows.\n - The sample names become the coverage columns of the binners.\n- **Run COMEBin?**, **Run SemiBin?**, **Run CONCOCT?**, **Run MetaBAT2?** and **Run MaxBin2?** (default: `Yes`): enable or skip each binner independently.\n - Keep at least one binner enabled.\n - COMEBin is the most time- and resource-consuming binner.\n- **Bin refinement tool** (default: `Binette`): `Binette`, `DAS Tool` or `Both`.\n- **CheckM2 Database**: the CheckM2 reference database Binette uses to assess bin quality.\n- **Minimum MAG completeness percentage** (default: 40): the minimum bin completeness used by Binette. It does not filter DAS Tool output.\n- **Contamination weight (Binette)** (default: 2): the contamination penalty used in Binette's scoring.\n\n## Step 1: Coverage\n\nThis step produces the coverage information every binner needs.\n\n1. The read pairs of all samples are flattened into one flat list of files, and the assemblies are used as they are.\n2. A nested cross product pairs each assembly with every flattened read file.\n3. Apply Rules rebuilds, for each assembly, the paired reads of each sample and the matching assembly reference. These are collection operations on the original datasets: no interlaced or de-interlaced FASTQ file is written.\n4. Bowtie2 maps every sample against every assembly.\n5. Contig depths are summarised per assembly with `jgi_summarize_bam_contig_depths`, which yields one coverage matrix per assembly with the coverage and variance of every sample.\n6. CONCOCT additionally needs the coverage of its contig fragments, which is computed separately, and the mean read length, which is estimated from both mates of every sample with SeqKit statistics. The estimate is the read-count-weighted mean (total bases divided by total reads), not an average of the per-sample means. No manual read length is required.\n\n## Step 2: Binning\n\nEach assembly is binned separately by every enabled binner.\n\n| Binner | Inputs used |\n| --- | --- |\n| SemiBin | Contig composition and cross-sample coverage, in co-binning mode |\n| CONCOCT | Contig fragments, their coverage table and the estimated read length; fragment clusters are merged back to contigs |\n| MetaBAT2 | Contig composition and cross-sample coverage |\n| MaxBin2 | Contig composition, cross-sample coverage and marker genes |\n| COMEBin | Deep-learning binning from contig sequence and coverage; optional |\n\nA binner set to `No` is skipped, and its candidate results are replaced by empty collections so that the refinement steps keep their structure. Raw binner outputs are only available for binners that ran.\n\n## Step 3: Refinement\n\nThe candidate bins are refined with one or both refinement tools:\n\n- **DAS Tool** scores the contig-to-bin assignments of all enabled binners and selects a non-redundant set of bins.\n- **Binette** evaluates the candidate FASTA bins with CheckM2 and refines them with the selected completeness and contamination settings.\n\n## Outputs\n\n- **Coverage depth matrices**: one depth table per assembly, with the coverage of all original samples.\n- **CONCOCT bins**, **MaxBin2 bins**, **MetaBAT2 bins**, **SemiBin bins** and **COMEBin bins** (when COMEBin ran): one list of bins per assembly.\n- **DAS Tool bins**, **DAS Tool summary** and **DAS Tool contigs2bin report** (when DAS Tool ran): the refined bins, a per-bin summary of completeness and redundancy based on single-copy genes, and the contig-to-bin assignments.\n- **Binette bins**, **Binette input bin quality reports** and **Binette final bin quality report** (when Binette ran): the refined bins, the CheckM2 quality of the bins from each binner, and the CheckM2 quality of the final bins.\n\n## Why use this workflow\n\nBinning is a separate workflow here, so it can be reused by larger analysis pipelines without copying or rewiring it.\n\n- It keeps the binning parameters and outputs visible and controllable.\n- It can be combined with different upstream and downstream workflows, e.g. taxonomic classification, genome annotation, functional analysis or benchmarking.\n- It avoids duplicating binning logic inside every pipeline that needs it.\n\nThe IWC [MAGs generation workflow](https://iwc.galaxyproject.org/workflow/mags-building-main/) is the comprehensive alternative: it assembles reads, bins with multiple tools, dereplicates the MAGs and reports their quality and abundance in one workflow. Use it when you want MAGs and their evaluation without a specialised downstream workflow, and use this binning workflow when binning is one component of a larger analysis.\n\nThrough the workflow editor, an upstream or downstream workflow can also restrict this one, for example to a single refinement tool.\n\n## Funding\n\nThis workflow was developed as part of the [**FAIRyMAGs** project](https://elixir-europe.org/how-we-work/scientific-programme/science/bfsp/fairymags), funded as a commissioned service of the [**Biodiversity, Food Security and Pathogens (BFSP) ELIXIR Scientific Programme 2024\u20132028**](https://elixir-europe.org/how-we-work/scientific-programme/science/bfsp).\n\nThe project was also supported by the **European Galaxy Server**, funded by the German Federal Ministry of Education and Research (BMBF; 031 A538A de.NBI-RBC) and the **Ministry of Science, Research and the Arts Baden-W\u00fcrttemberg (MWK)** within the framework of **LIBIS/de.NBI Freiburg**.\n" } From 328ee1602facc1decd29fa9f1b318893275a31dc Mon Sep 17 00:00:00 2001 From: paulzierep Date: Sat, 24 Oct 2026 10:26:35 +0200 Subject: [PATCH 15/17] Publish binning changes as release 1.1 and preserve 1.0 history --- workflows/microbiome/multi-sample-binning/CHANGELOG.md | 5 ++++- .../microbiome/multi-sample-binning/multi-sample-binning.ga | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/workflows/microbiome/multi-sample-binning/CHANGELOG.md b/workflows/microbiome/multi-sample-binning/CHANGELOG.md index 61813a9de9..37b6e26c49 100644 --- a/workflows/microbiome/multi-sample-binning/CHANGELOG.md +++ b/workflows/microbiome/multi-sample-binning/CHANGELOG.md @@ -1,6 +1,6 @@ # Changelog -## [1.0] - 2026-10-20 +## [1.1] - 2026-10-24 - Incorporate the COMEBin 1.1.0+galaxy1 upgrade from IWC PR #1435. - Replace read interlacing/de-interlacing with native Flatten, Nested Cross Product and Apply Rules operations. Preserve the assembly × read-sample BAM matrix while reusing the original read datasets instead of writing intermediate FASTQ files. @@ -16,4 +16,7 @@ - Replace the binner toggles with explicit `Yes`/`No` selections (default: `Yes`), converted to the boolean that gates each binner branch. - Order the inputs as assemblies, reads, binners, refinement and Binette settings, and group the tools in frames for inputs, coverage, binning and refinement, each with its own explanation. - Describe what each step does in its annotation instead of repeating the step label, and document every step in its own README section. + +## [1.0] - 2026-09-23 + - First release diff --git a/workflows/microbiome/multi-sample-binning/multi-sample-binning.ga b/workflows/microbiome/multi-sample-binning/multi-sample-binning.ga index fbcc967ad3..6081b4feb5 100644 --- a/workflows/microbiome/multi-sample-binning/multi-sample-binning.ga +++ b/workflows/microbiome/multi-sample-binning/multi-sample-binning.ga @@ -224,7 +224,7 @@ ], "format-version": "0.1", "license": "MIT", - "release": "1.0", + "release": "1.1", "name": "Multi-sample binning", "report": { "markdown": "\n# Workflow Execution Report\n\n## Workflow Inputs\n```galaxy\ninvocation_inputs()\n```\n\n## Workflow Outputs\n```galaxy\ninvocation_outputs()\n```\n\n## Workflow\n```galaxy\nworkflow_display()\n```\n" From 9a0d19c8e238ec5aaea958aeae2e5e3e5bd20927 Mon Sep 17 00:00:00 2001 From: paulzierep Date: Mon, 2 Nov 2026 17:11:29 +0100 Subject: [PATCH 16/17] Address remaining multi-sample binning review documentation --- .../microbiome/multi-sample-binning/README.md | 10 ++++++--- .../multi-sample-binning.ga | 22 +++++++++---------- 2 files changed, 18 insertions(+), 14 deletions(-) diff --git a/workflows/microbiome/multi-sample-binning/README.md b/workflows/microbiome/multi-sample-binning/README.md index 9e94cdd32e..8bfe5cf76c 100644 --- a/workflows/microbiome/multi-sample-binning/README.md +++ b/workflows/microbiome/multi-sample-binning/README.md @@ -2,7 +2,7 @@ This workflow turns metagenomic assemblies into metagenomic bins with five binners (CONCOCT, MaxBin2, MetaBAT2, SemiBin and COMEBin), using cross-sample read coverage, and refines the bins with DAS Tool and/or Binette. -It is the binning part of the [MAGs generation workflow](../mags-building/), with the multi-sample logic added. It is extracted as its own workflow so that MAG generation and other workflows can reuse it instead of maintaining their own copy (check the [FAIRyMAGs repository](https://github.com/usegalaxy-eu/FAIRyMAGs) for the complete workflow suite and its capabilities). +It performs cross-sample coverage estimation, binning and bin refinement for the [MAGs generation workflow](https://iwc.galaxyproject.org/workflow/mags-building-main/). A dedicated [learning pathway](https://galaxyproject.github.io/training-material/learning-pathways/mags.html) provides detailed guidance on MAG generation in Galaxy, including the binning tools used here. ## How multi-sample binning works @@ -14,7 +14,7 @@ Two details are worth knowing before starting: - Each sample's reads are mapped against each sample's assembly, and every assembly is binned on its own. The workflow does not concatenate all assemblies into one co-assembly and split the resulting bins afterwards. - The mapping workload grows as N² for N samples: N read sets × N assemblies. Storage grows quickly too, even though the workflow reuses the original FASTQ datasets instead of writing intermediate read files. -For many samples, or for samples from unrelated environments where cross-sample coverage adds little, [single-sample binning](../single-sample-binning/) is the cheaper choice. +For many samples, or for samples from unrelated environments where cross-sample coverage adds little, [single-sample binning](https://iwc.galaxyproject.org/workflow/single-sample-binning-main/) is the cheaper choice. ## Inputs @@ -22,7 +22,7 @@ For many samples, or for samples from unrelated environments where cross-sample - Every sample's reads are mapped against every assembly, so the element identifiers of the reads and assemblies do not need to match. - The number of assemblies does not need to equal the number of read samples: a single co-assembly binned with the coverage of all samples is a valid input. - **Paired-end reads**: a `list:paired` collection with one element per sample. - - Reads should be quality-trimmed and host-removed, e.g. with the IWC [short-read quality control](../../read-preprocessing/short-read-qc-trimming/) and [host contamination removal](../host-contamination-removal/host-contamination-removal-short-reads/) workflows. + - Reads should be quality-trimmed and host-removed, e.g. with the IWC [short-read quality control](https://iwc.galaxyproject.org/workflow/short-read-qc-trimming-main/) and [host contamination removal](https://iwc.galaxyproject.org/workflow/host-contamination-removal-short-reads-main/) workflows. - The sample names become the coverage columns of the binners. - **Run COMEBin?**, **Run SemiBin?**, **Run CONCOCT?**, **Run MetaBAT2?** and **Run MaxBin2?** (default: `Yes`): enable or skip each binner independently. - Keep at least one binner enabled. @@ -43,6 +43,8 @@ This step produces the coverage information every binner needs. 5. Contig depths are summarised per assembly with `jgi_summarize_bam_contig_depths`, which yields one coverage matrix per assembly with the coverage and variance of every sample. 6. CONCOCT additionally needs the coverage of its contig fragments, which is computed separately, and the mean read length, which is estimated from both mates of every sample with SeqKit statistics. The estimate is the read-count-weighted mean (total bases divided by total reads), not an average of the per-sample means. No manual read length is required. +The depth table produced by `jgi_summarize_bam_contig_depths` starts with `contigName` (contig identifier), `contigLen` (contig length) and `totalAvgDepth` (average depth across the input BAM files). Each read sample then contributes a depth column and a variance column. This gives each assembly's contigs a coverage profile across all read samples; “JGI depth table” refers to this format, not to an additional input database. + ## Step 2: Binning Each assembly is binned separately by every enabled binner. @@ -64,6 +66,8 @@ The candidate bins are refined with one or both refinement tools: - **DAS Tool** scores the contig-to-bin assignments of all enabled binners and selects a non-redundant set of bins. - **Binette** evaluates the candidate FASTA bins with CheckM2 and refines them with the selected completeness and contamination settings. +Selecting **Both** runs DAS Tool and Binette independently on the candidate bins, allowing you to benefit from their different refinement approaches. The two output sets must then be combined and dereplicated downstream; this workflow does not perform dereplication. Dereplication reduces redundant genomes but does not enforce unique contig membership, so contigs can still end up in multiple retained bins. If exclusive contig assignments are required, inspect and resolve overlaps explicitly. + ## Outputs - **Coverage depth matrices**: one depth table per assembly, with the coverage of all original samples. diff --git a/workflows/microbiome/multi-sample-binning/multi-sample-binning.ga b/workflows/microbiome/multi-sample-binning/multi-sample-binning.ga index 6081b4feb5..19307198b1 100644 --- a/workflows/microbiome/multi-sample-binning/multi-sample-binning.ga +++ b/workflows/microbiome/multi-sample-binning/multi-sample-binning.ga @@ -474,7 +474,7 @@ "workflow_outputs": [] }, "9": { - "annotation": "Minimum bin completeness percentage used by Binette.", + "annotation": "Binette retains refined bins meeting this minimum CheckM2 completeness percentage; this setting does not filter DAS Tool output.", "content_id": null, "errors": null, "id": 9, @@ -764,7 +764,7 @@ } }, "inputs": [], - "label": "Flatten read pairs", + "label": "Flatten read pair collection", "name": "Flatten collection", "outputs": [ { @@ -785,7 +785,7 @@ "workflow_outputs": [] }, "17": { - "annotation": "Pair each assembly with every original read sample without rewriting FASTQ data.", + "annotation": "Pair each assembly with every forward and reverse read dataset, without rewriting FASTQ data.", "content_id": "__CROSS_PRODUCT_NESTED__", "errors": null, "id": 17, @@ -1498,7 +1498,7 @@ "workflow_outputs": [] }, "34": { - "annotation": "Pass through the available result while allowing the upstream optional branch to be skipped.", + "annotation": "Retrieve CONCOCT fragment cluster results while allowing the CONCOCT optional branch to be skipped.", "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/pick_value/pick_value/0.2.0", "errors": null, "id": 34, @@ -1538,7 +1538,7 @@ "workflow_outputs": [] }, "35": { - "annotation": "Pass through the available result while allowing the upstream optional branch to be skipped.", + "annotation": "Retrieve CONCOCT merged contig assignment results while allowing the CONCOCT optional branch to be skipped.", "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/pick_value/pick_value/0.2.0", "errors": null, "id": 35, @@ -1578,7 +1578,7 @@ "workflow_outputs": [] }, "36": { - "annotation": "Pass through the available result while allowing the upstream optional branch to be skipped.", + "annotation": "Retrieve CONCOCT bin results while allowing the CONCOCT optional branch to be skipped.", "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/pick_value/pick_value/0.2.0", "errors": null, "id": 36, @@ -1680,7 +1680,7 @@ ] }, "38": { - "annotation": "Pass through the available result while allowing the upstream optional branch to be skipped.", + "annotation": "Retrieve COMEBin bin results while allowing the COMEBin optional branch to be skipped.", "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/pick_value/pick_value/0.2.0", "errors": null, "id": 38, @@ -1827,7 +1827,7 @@ ] }, "41": { - "annotation": "Pass through the available result while allowing the upstream optional branch to be skipped.", + "annotation": "Retrieve SemiBin results while allowing the SemiBin optional branch to be skipped.", "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/pick_value/pick_value/0.2.0", "errors": null, "id": 41, @@ -1969,7 +1969,7 @@ ] }, "44": { - "annotation": "Pass through the available result while allowing the upstream optional branch to be skipped.", + "annotation": "Retrieve MetaBAT2 results while allowing the MetaBAT2 optional branch to be skipped.", "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/pick_value/pick_value/0.2.0", "errors": null, "id": 44, @@ -2123,7 +2123,7 @@ ] }, "47": { - "annotation": "Pass through the available result while allowing the upstream optional branch to be skipped.", + "annotation": "Retrieve MaxBin2 results while allowing the MaxBin2 optional branch to be skipped.", "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/pick_value/pick_value/0.2.0", "errors": null, "id": 47, @@ -2577,5 +2577,5 @@ ], "uuid": "9b674961-0b3c-4f8f-97e6-f225e018198f", "version": 1, - "readme": "# Multi-sample binning workflow\n\nThis workflow turns metagenomic assemblies into metagenomic bins with five binners (CONCOCT, MaxBin2, MetaBAT2, SemiBin and COMEBin), using cross-sample read coverage, and refines the bins with DAS Tool and/or Binette.\n\nIt is the binning part of the [MAGs generation workflow](../mags-building/), with the multi-sample logic added. It is extracted as its own workflow so that MAG generation and other workflows can reuse it instead of maintaining their own copy (check the [FAIRyMAGs repository](https://github.com/usegalaxy-eu/FAIRyMAGs) for the complete workflow suite and its capabilities).\nA dedicated [learning pathway](https://galaxyproject.github.io/training-material/learning-pathways/mags.html) provides detailed guidance on MAG generation in Galaxy, including the binning tools used here.\n\n## How multi-sample binning works\n\nIn single-sample binning, each assembly is binned with the coverage of its own reads. In multi-sample binning, the reads of every sample are mapped against the assembly of every sample, so each contig gets one coverage profile per sample. Binners can then separate organisms that have similar composition but different abundance patterns across samples.\n\nTwo details are worth knowing before starting:\n\n- Each sample's reads are mapped against each sample's assembly, and every assembly is binned on its own. The workflow does not concatenate all assemblies into one co-assembly and split the resulting bins afterwards.\n- The mapping workload grows as N\u00b2 for N samples: N read sets \u00d7 N assemblies. Storage grows quickly too, even though the workflow reuses the original FASTQ datasets instead of writing intermediate read files.\n\nFor many samples, or for samples from unrelated environments where cross-sample coverage adds little, [single-sample binning](../single-sample-binning/) is the cheaper choice.\n\n## Inputs\n\n- **Assemblies**: a `list` collection of assemblies from any assembler (e.g. MEGAHIT or metaSPAdes).\n - Every sample's reads are mapped against every assembly, so the element identifiers of the reads and assemblies do not need to match.\n - The number of assemblies does not need to equal the number of read samples: a single co-assembly binned with the coverage of all samples is a valid input.\n- **Paired-end reads**: a `list:paired` collection with one element per sample.\n - Reads should be quality-trimmed and host-removed, e.g. with the IWC [short-read quality control](../../read-preprocessing/short-read-qc-trimming/) and [host contamination removal](../host-contamination-removal/host-contamination-removal-short-reads/) workflows.\n - The sample names become the coverage columns of the binners.\n- **Run COMEBin?**, **Run SemiBin?**, **Run CONCOCT?**, **Run MetaBAT2?** and **Run MaxBin2?** (default: `Yes`): enable or skip each binner independently.\n - Keep at least one binner enabled.\n - COMEBin is the most time- and resource-consuming binner.\n- **Bin refinement tool** (default: `Binette`): `Binette`, `DAS Tool` or `Both`.\n- **CheckM2 Database**: the CheckM2 reference database Binette uses to assess bin quality.\n- **Minimum MAG completeness percentage** (default: 40): the minimum bin completeness used by Binette. It does not filter DAS Tool output.\n- **Contamination weight (Binette)** (default: 2): the contamination penalty used in Binette's scoring.\n\n## Step 1: Coverage\n\nThis step produces the coverage information every binner needs.\n\n1. The read pairs of all samples are flattened into one flat list of files, and the assemblies are used as they are.\n2. A nested cross product pairs each assembly with every flattened read file.\n3. Apply Rules rebuilds, for each assembly, the paired reads of each sample and the matching assembly reference. These are collection operations on the original datasets: no interlaced or de-interlaced FASTQ file is written.\n4. Bowtie2 maps every sample against every assembly.\n5. Contig depths are summarised per assembly with `jgi_summarize_bam_contig_depths`, which yields one coverage matrix per assembly with the coverage and variance of every sample.\n6. CONCOCT additionally needs the coverage of its contig fragments, which is computed separately, and the mean read length, which is estimated from both mates of every sample with SeqKit statistics. The estimate is the read-count-weighted mean (total bases divided by total reads), not an average of the per-sample means. No manual read length is required.\n\n## Step 2: Binning\n\nEach assembly is binned separately by every enabled binner.\n\n| Binner | Inputs used |\n| --- | --- |\n| SemiBin | Contig composition and cross-sample coverage, in co-binning mode |\n| CONCOCT | Contig fragments, their coverage table and the estimated read length; fragment clusters are merged back to contigs |\n| MetaBAT2 | Contig composition and cross-sample coverage |\n| MaxBin2 | Contig composition, cross-sample coverage and marker genes |\n| COMEBin | Deep-learning binning from contig sequence and coverage; optional |\n\nA binner set to `No` is skipped, and its candidate results are replaced by empty collections so that the refinement steps keep their structure. Raw binner outputs are only available for binners that ran.\n\n## Step 3: Refinement\n\nThe candidate bins are refined with one or both refinement tools:\n\n- **DAS Tool** scores the contig-to-bin assignments of all enabled binners and selects a non-redundant set of bins.\n- **Binette** evaluates the candidate FASTA bins with CheckM2 and refines them with the selected completeness and contamination settings.\n\n## Outputs\n\n- **Coverage depth matrices**: one depth table per assembly, with the coverage of all original samples.\n- **CONCOCT bins**, **MaxBin2 bins**, **MetaBAT2 bins**, **SemiBin bins** and **COMEBin bins** (when COMEBin ran): one list of bins per assembly.\n- **DAS Tool bins**, **DAS Tool summary** and **DAS Tool contigs2bin report** (when DAS Tool ran): the refined bins, a per-bin summary of completeness and redundancy based on single-copy genes, and the contig-to-bin assignments.\n- **Binette bins**, **Binette input bin quality reports** and **Binette final bin quality report** (when Binette ran): the refined bins, the CheckM2 quality of the bins from each binner, and the CheckM2 quality of the final bins.\n\n## Why use this workflow\n\nBinning is a separate workflow here, so it can be reused by larger analysis pipelines without copying or rewiring it.\n\n- It keeps the binning parameters and outputs visible and controllable.\n- It can be combined with different upstream and downstream workflows, e.g. taxonomic classification, genome annotation, functional analysis or benchmarking.\n- It avoids duplicating binning logic inside every pipeline that needs it.\n\nThe IWC [MAGs generation workflow](https://iwc.galaxyproject.org/workflow/mags-building-main/) is the comprehensive alternative: it assembles reads, bins with multiple tools, dereplicates the MAGs and reports their quality and abundance in one workflow. Use it when you want MAGs and their evaluation without a specialised downstream workflow, and use this binning workflow when binning is one component of a larger analysis.\n\nThrough the workflow editor, an upstream or downstream workflow can also restrict this one, for example to a single refinement tool.\n\n## Funding\n\nThis workflow was developed as part of the [**FAIRyMAGs** project](https://elixir-europe.org/how-we-work/scientific-programme/science/bfsp/fairymags), funded as a commissioned service of the [**Biodiversity, Food Security and Pathogens (BFSP) ELIXIR Scientific Programme 2024\u20132028**](https://elixir-europe.org/how-we-work/scientific-programme/science/bfsp).\n\nThe project was also supported by the **European Galaxy Server**, funded by the German Federal Ministry of Education and Research (BMBF; 031 A538A de.NBI-RBC) and the **Ministry of Science, Research and the Arts Baden-W\u00fcrttemberg (MWK)** within the framework of **LIBIS/de.NBI Freiburg**.\n" + "readme": "# Multi-sample binning workflow\n\nThis workflow turns metagenomic assemblies into metagenomic bins with five binners (CONCOCT, MaxBin2, MetaBAT2, SemiBin and COMEBin), using cross-sample read coverage, and refines the bins with DAS Tool and/or Binette.\n\nIt performs cross-sample coverage estimation, binning and bin refinement for the [MAGs generation workflow](https://iwc.galaxyproject.org/workflow/mags-building-main/).\nA dedicated [learning pathway](https://galaxyproject.github.io/training-material/learning-pathways/mags.html) provides detailed guidance on MAG generation in Galaxy, including the binning tools used here.\n\n## How multi-sample binning works\n\nIn single-sample binning, each assembly is binned with the coverage of its own reads. In multi-sample binning, the reads of every sample are mapped against the assembly of every sample, so each contig gets one coverage profile per sample. Binners can then separate organisms that have similar composition but different abundance patterns across samples.\n\nTwo details are worth knowing before starting:\n\n- Each sample's reads are mapped against each sample's assembly, and every assembly is binned on its own. The workflow does not concatenate all assemblies into one co-assembly and split the resulting bins afterwards.\n- The mapping workload grows as N\u00b2 for N samples: N read sets \u00d7 N assemblies. Storage grows quickly too, even though the workflow reuses the original FASTQ datasets instead of writing intermediate read files.\n\nFor many samples, or for samples from unrelated environments where cross-sample coverage adds little, [single-sample binning](https://iwc.galaxyproject.org/workflow/single-sample-binning-main/) is the cheaper choice.\n\n## Inputs\n\n- **Assemblies**: a `list` collection of assemblies from any assembler (e.g. MEGAHIT or metaSPAdes).\n - Every sample's reads are mapped against every assembly, so the element identifiers of the reads and assemblies do not need to match.\n - The number of assemblies does not need to equal the number of read samples: a single co-assembly binned with the coverage of all samples is a valid input.\n- **Paired-end reads**: a `list:paired` collection with one element per sample.\n - Reads should be quality-trimmed and host-removed, e.g. with the IWC [short-read quality control](https://iwc.galaxyproject.org/workflow/short-read-qc-trimming-main/) and [host contamination removal](https://iwc.galaxyproject.org/workflow/host-contamination-removal-short-reads-main/) workflows.\n - The sample names become the coverage columns of the binners.\n- **Run COMEBin?**, **Run SemiBin?**, **Run CONCOCT?**, **Run MetaBAT2?** and **Run MaxBin2?** (default: `Yes`): enable or skip each binner independently.\n - Keep at least one binner enabled.\n - COMEBin is the most time- and resource-consuming binner.\n- **Bin refinement tool** (default: `Binette`): `Binette`, `DAS Tool` or `Both`.\n- **CheckM2 Database**: the CheckM2 reference database Binette uses to assess bin quality.\n- **Minimum MAG completeness percentage** (default: 40): the minimum bin completeness used by Binette. It does not filter DAS Tool output.\n- **Contamination weight (Binette)** (default: 2): the contamination penalty used in Binette's scoring.\n\n## Step 1: Coverage\n\nThis step produces the coverage information every binner needs.\n\n1. The read pairs of all samples are flattened into one flat list of files, and the assemblies are used as they are.\n2. A nested cross product pairs each assembly with every flattened read file.\n3. Apply Rules rebuilds, for each assembly, the paired reads of each sample and the matching assembly reference. These are collection operations on the original datasets: no interlaced or de-interlaced FASTQ file is written.\n4. Bowtie2 maps every sample against every assembly.\n5. Contig depths are summarised per assembly with `jgi_summarize_bam_contig_depths`, which yields one coverage matrix per assembly with the coverage and variance of every sample.\n6. CONCOCT additionally needs the coverage of its contig fragments, which is computed separately, and the mean read length, which is estimated from both mates of every sample with SeqKit statistics. The estimate is the read-count-weighted mean (total bases divided by total reads), not an average of the per-sample means. No manual read length is required.\n\nThe depth table produced by `jgi_summarize_bam_contig_depths` starts with `contigName` (contig identifier), `contigLen` (contig length) and `totalAvgDepth` (average depth across the input BAM files). Each read sample then contributes a depth column and a variance column. This gives each assembly's contigs a coverage profile across all read samples; \u201cJGI depth table\u201d refers to this format, not to an additional input database.\n\n## Step 2: Binning\n\nEach assembly is binned separately by every enabled binner.\n\n| Binner | Inputs used |\n| --- | --- |\n| SemiBin | Contig composition and cross-sample coverage, in co-binning mode |\n| CONCOCT | Contig fragments, their coverage table and the estimated read length; fragment clusters are merged back to contigs |\n| MetaBAT2 | Contig composition and cross-sample coverage |\n| MaxBin2 | Contig composition, cross-sample coverage and marker genes |\n| COMEBin | Deep-learning binning from contig sequence and coverage; optional |\n\nA binner set to `No` is skipped, and its candidate results are replaced by empty collections so that the refinement steps keep their structure. Raw binner outputs are only available for binners that ran.\n\n## Step 3: Refinement\n\nThe candidate bins are refined with one or both refinement tools:\n\n- **DAS Tool** scores the contig-to-bin assignments of all enabled binners and selects a non-redundant set of bins.\n- **Binette** evaluates the candidate FASTA bins with CheckM2 and refines them with the selected completeness and contamination settings.\n\nSelecting **Both** runs DAS Tool and Binette independently on the candidate bins, allowing you to benefit from their different refinement approaches. The two output sets must then be combined and dereplicated downstream; this workflow does not perform dereplication. Dereplication reduces redundant genomes but does not enforce unique contig membership, so contigs can still end up in multiple retained bins. If exclusive contig assignments are required, inspect and resolve overlaps explicitly.\n\n## Outputs\n\n- **Coverage depth matrices**: one depth table per assembly, with the coverage of all original samples.\n- **CONCOCT bins**, **MaxBin2 bins**, **MetaBAT2 bins**, **SemiBin bins** and **COMEBin bins** (when COMEBin ran): one list of bins per assembly.\n- **DAS Tool bins**, **DAS Tool summary** and **DAS Tool contigs2bin report** (when DAS Tool ran): the refined bins, a per-bin summary of completeness and redundancy based on single-copy genes, and the contig-to-bin assignments.\n- **Binette bins**, **Binette input bin quality reports** and **Binette final bin quality report** (when Binette ran): the refined bins, the CheckM2 quality of the bins from each binner, and the CheckM2 quality of the final bins.\n\n## Why use this workflow\n\nBinning is a separate workflow here, so it can be reused by larger analysis pipelines without copying or rewiring it.\n\n- It keeps the binning parameters and outputs visible and controllable.\n- It can be combined with different upstream and downstream workflows, e.g. taxonomic classification, genome annotation, functional analysis or benchmarking.\n- It avoids duplicating binning logic inside every pipeline that needs it.\n\nThe IWC [MAGs generation workflow](https://iwc.galaxyproject.org/workflow/mags-building-main/) is the comprehensive alternative: it assembles reads, bins with multiple tools, dereplicates the MAGs and reports their quality and abundance in one workflow. Use it when you want MAGs and their evaluation without a specialised downstream workflow, and use this binning workflow when binning is one component of a larger analysis.\n\nThrough the workflow editor, an upstream or downstream workflow can also restrict this one, for example to a single refinement tool.\n\n## Funding\n\nThis workflow was developed as part of the [**FAIRyMAGs** project](https://elixir-europe.org/how-we-work/scientific-programme/science/bfsp/fairymags), funded as a commissioned service of the [**Biodiversity, Food Security and Pathogens (BFSP) ELIXIR Scientific Programme 2024\u20132028**](https://elixir-europe.org/how-we-work/scientific-programme/science/bfsp).\n\nThe project was also supported by the **European Galaxy Server**, funded by the German Federal Ministry of Education and Research (BMBF; 031 A538A de.NBI-RBC) and the **Ministry of Science, Research and the Arts Baden-W\u00fcrttemberg (MWK)** within the framework of **LIBIS/de.NBI Freiburg**.\n" } From 46c251dc2f3d669caf4ca470592982c09da7ee95 Mon Sep 17 00:00:00 2001 From: paulzierep Date: Mon, 2 Nov 2026 17:21:44 +0100 Subject: [PATCH 17/17] Add sample count warning and reference to Mineeva et al. 2025 --- .../microbiome/multi-sample-binning/README.md | 3 +- .../multi-sample-binning.ga | 2582 +---------------- 2 files changed, 3 insertions(+), 2582 deletions(-) diff --git a/workflows/microbiome/multi-sample-binning/README.md b/workflows/microbiome/multi-sample-binning/README.md index 8bfe5cf76c..20bdd63aff 100644 --- a/workflows/microbiome/multi-sample-binning/README.md +++ b/workflows/microbiome/multi-sample-binning/README.md @@ -14,7 +14,7 @@ Two details are worth knowing before starting: - Each sample's reads are mapped against each sample's assembly, and every assembly is binned on its own. The workflow does not concatenate all assemblies into one co-assembly and split the resulting bins afterwards. - The mapping workload grows as N² for N samples: N read sets × N assemblies. Storage grows quickly too, even though the workflow reuses the original FASTQ datasets instead of writing intermediate read files. -For many samples, or for samples from unrelated environments where cross-sample coverage adds little, [single-sample binning](https://iwc.galaxyproject.org/workflow/single-sample-binning-main/) is the cheaper choice. +**Note on sample count:** Multi-sample binning is most effective with up to ~20 samples. Performance usually peaks around 20 samples ([Mineeva et al., *Nat. Commun.* 2025](https://www.nature.com/articles/s41467-026-71521-w)). Using more than 20 samples can lead to extensive resource usage (N² mappings and substantial storage requirements). For many samples or samples from unrelated environments where cross-sample coverage adds little, [single-sample binning](https://iwc.galaxyproject.org/workflow/single-sample-binning-main/) is often the cheaper choice. ## Inputs @@ -24,6 +24,7 @@ For many samples, or for samples from unrelated environments where cross-sample - **Paired-end reads**: a `list:paired` collection with one element per sample. - Reads should be quality-trimmed and host-removed, e.g. with the IWC [short-read quality control](https://iwc.galaxyproject.org/workflow/short-read-qc-trimming-main/) and [host contamination removal](https://iwc.galaxyproject.org/workflow/host-contamination-removal-short-reads-main/) workflows. - The sample names become the coverage columns of the binners. + - **Use with caution for large datasets:** multi-sample binning is most effective with up to ~20 samples. Performance usually peaks around 20 samples ([Mineeva et al., *Nat. Commun.* 2025](https://www.nature.com/articles/s41467-026-71521-w)). Using more than 20 samples can lead to extensive resource usage, as the mapping workload grows as N² (N read sets × N assemblies) and storage requirements increase substantially. For many samples or unrelated environments, [single-sample binning](https://iwc.galaxyproject.org/workflow/single-sample-binning-main/) is often the cheaper choice. - **Run COMEBin?**, **Run SemiBin?**, **Run CONCOCT?**, **Run MetaBAT2?** and **Run MaxBin2?** (default: `Yes`): enable or skip each binner independently. - Keep at least one binner enabled. - COMEBin is the most time- and resource-consuming binner. diff --git a/workflows/microbiome/multi-sample-binning/multi-sample-binning.ga b/workflows/microbiome/multi-sample-binning/multi-sample-binning.ga index 19307198b1..10ec4029bc 100644 --- a/workflows/microbiome/multi-sample-binning/multi-sample-binning.ga +++ b/workflows/microbiome/multi-sample-binning/multi-sample-binning.ga @@ -1,2581 +1 @@ -{ - "a_galaxy_workflow": "true", - "annotation": "This workflow performs multi-sample binning of metagenomic assemblies with CONCOCT, MaxBin2, MetaBAT2, SemiBin and optionally COMEBin, using cross-sample read coverage, and refines the bins with DAS Tool and/or Binette", - "comments": [ - { - "id": 0, - "type": "frame", - "color": "blue", - "position": [ - 110, - 80 - ], - "size": [ - 460, - 3520 - ], - "data": { - "title": "Inputs and binner selection" - }, - "child_steps": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10 - ], - "child_comments": [ - 1 - ] - }, - { - "id": 1, - "type": "markdown", - "color": "blue", - "position": [ - 140, - 115 - ], - "size": [ - 400, - 260 - ], - "data": { - "text": "## 1. Inputs\n\nSupply assemblies and quality-trimmed, host-removed paired-end reads. Every binner is enabled by default: select **No** to skip one. Choose the refinement tool and the Binette settings." - } - }, - { - "id": 2, - "type": "frame", - "color": "turquoise", - "position": [ - 710, - 80 - ], - "size": [ - 1260, - 3220 - ], - "data": { - "title": "Coverage" - }, - "child_steps": [ - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28 - ], - "child_comments": [ - 3 - ] - }, - { - "id": 3, - "type": "markdown", - "color": "turquoise", - "position": [ - 740, - 115 - ], - "size": [ - 900, - 260 - ], - "data": { - "text": "## 2. Coverage\n\nRead pairs are flattened and crossed with the assemblies, then Apply Rules rebuilds the paired reads and their references per assembly and sample without rewriting FASTQ files. Bowtie2 maps every sample against every assembly. Contig depths and CONCOCT fragment coverage summarise the alignments, and the CONCOCT read length is estimated from both mates." - } - }, - { - "id": 4, - "type": "frame", - "color": "lime", - "position": [ - 2620, - 80 - ], - "size": [ - 2410, - 3220 - ], - "data": { - "title": "Binning" - }, - "child_steps": [ - 11, - 12, - 13, - 14, - 15, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48 - ], - "child_comments": [ - 5 - ] - }, - { - "id": 5, - "type": "markdown", - "color": "lime", - "position": [ - 2650, - 115 - ], - "size": [ - 1100, - 260 - ], - "data": { - "text": "## 3. Binning\n\nEach enabled binner clusters contigs into candidate bins from the cross-sample depth matrix. CONCOCT works on fragments with its own coverage table and merges them back to contigs. Disabled binners are bridged with empty collections so the downstream steps keep their structure." - } - }, - { - "id": 6, - "type": "frame", - "color": "orange", - "position": [ - 5370, - 80 - ], - "size": [ - 460, - 1720 - ], - "data": { - "title": "Refinement" - }, - "child_steps": [ - 49, - 50, - 51, - 52, - 53 - ], - "child_comments": [ - 7 - ] - }, - { - "id": 7, - "type": "markdown", - "color": "orange", - "position": [ - 5400, - 115 - ], - "size": [ - 400, - 260 - ], - "data": { - "text": "## 4. Refinement\n\nCandidate contig assignments are collected for DAS Tool and candidate FASTA bins for Binette. Only the selected refinement tool runs. The refined bins are returned with their quality reports and coverage matrices." - } - } - ], - "creator": [ - { - "class": "Person", - "identifier": "https://orcid.org/0000-0003-2982-388X", - "name": "Paul Zierep" - }, - { - "class": "Person", - "identifier": "https://orcid.org/0009-0004-0382-2023", - "name": "Santino Faack" - }, - { - "class": "Organization", - "name": "FAIRyMAGs consortium", - "url": "https://github.com/usegalaxy-eu/FAIRyMAGs" - } - ], - "format-version": "0.1", - "license": "MIT", - "release": "1.1", - "name": "Multi-sample binning", - "report": { - "markdown": "\n# Workflow Execution Report\n\n## Workflow Inputs\n```galaxy\ninvocation_inputs()\n```\n\n## Workflow Outputs\n```galaxy\ninvocation_outputs()\n```\n\n## Workflow\n```galaxy\nworkflow_display()\n```\n" - }, - "steps": { - "0": { - "annotation": "Assemblies from any assembler (e.g. MEGAHIT or metaSPAdes). Identifiers do not need to match the read samples.", - "content_id": null, - "errors": null, - "id": 0, - "input_connections": {}, - "inputs": [ - { - "description": "Assemblies from any assembler (e.g. MEGAHIT or metaSPAdes). Identifiers do not need to match the read samples.", - "name": "Assemblies" - } - ], - "label": "Assemblies", - "name": "Input dataset collection", - "outputs": [], - "position": { - "left": 140, - "top": 420 - }, - "tool_id": null, - "tool_state": "{\"optional\": false, \"tag\": null, \"collection_type\": \"list\", \"fields\": null, \"column_definitions\": null}", - "tool_version": null, - "type": "data_collection_input", - "uuid": "4fe37b5b-053f-4e82-92bc-e109f9c2fda5", - "when": null, - "workflow_outputs": [] - }, - "1": { - "annotation": "Paired-end reads of each sample (list:paired), quality-trimmed and host-removed. Each sample's reads are mapped against every assembly.", - "content_id": null, - "errors": null, - "id": 1, - "input_connections": {}, - "inputs": [ - { - "description": "Paired-end reads of each sample (list:paired), quality-trimmed and host-removed. Each sample's reads are mapped against every assembly.", - "name": "Paired-end reads" - } - ], - "label": "Paired-end reads", - "name": "Input dataset collection", - "outputs": [], - "position": { - "left": 140, - "top": 720 - }, - "tool_id": null, - "tool_state": "{\"optional\": false, \"tag\": null, \"collection_type\": \"list:paired\", \"fields\": null, \"column_definitions\": null}", - "tool_version": null, - "type": "data_collection_input", - "uuid": "615f6015-446b-4af3-ad4a-afff158c58d0", - "when": null, - "workflow_outputs": [] - }, - "2": { - "annotation": "By default, all binners are enabled. Select No to disable COMEBin, the most resource-consuming binner.", - "content_id": null, - "errors": null, - "id": 2, - "input_connections": {}, - "inputs": [ - { - "description": "By default, all binners are enabled. Select No to disable COMEBin, the most resource-consuming binner.", - "name": "Run COMEBin?" - } - ], - "label": "Run COMEBin?", - "name": "Input parameter", - "outputs": [], - "position": { - "left": 140, - "top": 1020 - }, - "tool_id": null, - "tool_state": "{\"multiple\": false, \"validators\": [], \"restrictions\": [\"Yes\", \"No\"], \"parameter_type\": \"text\", \"optional\": false, \"default\": \"Yes\"}", - "tool_version": null, - "type": "parameter_input", - "uuid": "875c3765-81ca-42a2-a8af-9eea17a90ac8", - "when": null, - "workflow_outputs": [] - }, - "3": { - "annotation": "By default, all binners are enabled. Select No to disable SemiBin.", - "content_id": null, - "errors": null, - "id": 3, - "input_connections": {}, - "inputs": [ - { - "description": "By default, all binners are enabled. Select No to disable SemiBin.", - "name": "Run SemiBin?" - } - ], - "label": "Run SemiBin?", - "name": "Input parameter", - "outputs": [], - "position": { - "left": 140, - "top": 1320 - }, - "tool_id": null, - "tool_state": "{\"multiple\": false, \"validators\": [], \"restrictions\": [\"Yes\", \"No\"], \"parameter_type\": \"text\", \"optional\": false, \"default\": \"Yes\"}", - "tool_version": null, - "type": "parameter_input", - "uuid": "74f1e9bd-4da6-4192-befd-7cbd7c631abd", - "when": null, - "workflow_outputs": [] - }, - "4": { - "annotation": "By default, all binners are enabled. Select No to disable CONCOCT.", - "content_id": null, - "errors": null, - "id": 4, - "input_connections": {}, - "inputs": [ - { - "description": "By default, all binners are enabled. Select No to disable CONCOCT.", - "name": "Run CONCOCT?" - } - ], - "label": "Run CONCOCT?", - "name": "Input parameter", - "outputs": [], - "position": { - "left": 140, - "top": 1620 - }, - "tool_id": null, - "tool_state": "{\"multiple\": false, \"validators\": [], \"restrictions\": [\"Yes\", \"No\"], \"parameter_type\": \"text\", \"optional\": false, \"default\": \"Yes\"}", - "tool_version": null, - "type": "parameter_input", - "uuid": "d98d7796-08cb-4dba-82bc-dacdd65a602a", - "when": null, - "workflow_outputs": [] - }, - "5": { - "annotation": "By default, all binners are enabled. Select No to disable MetaBAT2.", - "content_id": null, - "errors": null, - "id": 5, - "input_connections": {}, - "inputs": [ - { - "description": "By default, all binners are enabled. Select No to disable MetaBAT2.", - "name": "Run MetaBAT2?" - } - ], - "label": "Run MetaBAT2?", - "name": "Input parameter", - "outputs": [], - "position": { - "left": 140, - "top": 1920 - }, - "tool_id": null, - "tool_state": "{\"multiple\": false, \"validators\": [], \"restrictions\": [\"Yes\", \"No\"], \"parameter_type\": \"text\", \"optional\": false, \"default\": \"Yes\"}", - "tool_version": null, - "type": "parameter_input", - "uuid": "1b0313d7-ff9d-4e33-9718-2b4033ee3ab7", - "when": null, - "workflow_outputs": [] - }, - "6": { - "annotation": "By default, all binners are enabled. Select No to disable MaxBin2.", - "content_id": null, - "errors": null, - "id": 6, - "input_connections": {}, - "inputs": [ - { - "description": "By default, all binners are enabled. Select No to disable MaxBin2.", - "name": "Run MaxBin2?" - } - ], - "label": "Run MaxBin2?", - "name": "Input parameter", - "outputs": [], - "position": { - "left": 140, - "top": 2220 - }, - "tool_id": null, - "tool_state": "{\"multiple\": false, \"validators\": [], \"restrictions\": [\"Yes\", \"No\"], \"parameter_type\": \"text\", \"optional\": false, \"default\": \"Yes\"}", - "tool_version": null, - "type": "parameter_input", - "uuid": "b6e29622-ab1c-449e-8a0d-efa2090e3fe8", - "when": null, - "workflow_outputs": [] - }, - "7": { - "annotation": "Choose Binette, DAS Tool or Both to refine the candidate bins.", - "content_id": null, - "errors": null, - "id": 7, - "input_connections": {}, - "inputs": [ - { - "description": "Choose Binette, DAS Tool or Both to refine the candidate bins.", - "name": "Bin refinement tool" - } - ], - "label": "Bin refinement tool", - "name": "Input parameter", - "outputs": [], - "position": { - "left": 140, - "top": 2520 - }, - "tool_id": null, - "tool_state": "{\"multiple\": false, \"validators\": [], \"restrictions\": [\"Binette\", \"DAS Tool\", \"Both\"], \"parameter_type\": \"text\", \"optional\": false, \"default\": \"Binette\"}", - "tool_version": null, - "type": "parameter_input", - "uuid": "29651e13-0037-4477-a4d3-d8751fd97aa4", - "when": null, - "workflow_outputs": [] - }, - "8": { - "annotation": "CheckM2 reference database used by Binette to assess bin quality.", - "content_id": null, - "errors": null, - "id": 8, - "input_connections": {}, - "inputs": [ - { - "description": "CheckM2 reference database used by Binette to assess bin quality.", - "name": "CheckM2 Database" - } - ], - "label": "CheckM2 Database", - "name": "Input parameter", - "outputs": [], - "position": { - "left": 140, - "top": 2820 - }, - "tool_id": null, - "tool_state": "{\"multiple\": false, \"validators\": [], \"restrictOnConnections\": true, \"parameter_type\": \"text\", \"optional\": false}", - "tool_version": null, - "type": "parameter_input", - "uuid": "8cef62db-3352-4d17-9a00-f3de3a9990a8", - "when": null, - "workflow_outputs": [] - }, - "9": { - "annotation": "Binette retains refined bins meeting this minimum CheckM2 completeness percentage; this setting does not filter DAS Tool output.", - "content_id": null, - "errors": null, - "id": 9, - "input_connections": {}, - "inputs": [ - { - "description": "Minimum bin completeness percentage used by Binette.", - "name": "Minimum MAG completeness percentage" - } - ], - "label": "Minimum MAG completeness percentage", - "name": "Input parameter", - "outputs": [], - "position": { - "left": 140, - "top": 3120 - }, - "tool_id": null, - "tool_state": "{\"default\": 40, \"validators\": [{\"min\": null, \"max\": null, \"negate\": false, \"type\": \"in_range\"}], \"parameter_type\": \"integer\", \"optional\": false}", - "tool_version": null, - "type": "parameter_input", - "uuid": "bb6970c2-a90e-4e7c-9956-712bb57b8fd2", - "when": null, - "workflow_outputs": [] - }, - "10": { - "annotation": "Contamination penalty used in Binette's scoring. A low weight favours complete bins over low-contamination bins (--contamination_weight).", - "content_id": null, - "errors": null, - "id": 10, - "input_connections": {}, - "inputs": [ - { - "description": "Contamination penalty used in Binette's scoring. A low weight favours complete bins over low-contamination bins (--contamination_weight).", - "name": "Contamination weight (Binette)" - } - ], - "label": "Contamination weight (Binette)", - "name": "Input parameter", - "outputs": [], - "position": { - "left": 140, - "top": 3420 - }, - "tool_id": null, - "tool_state": "{\"default\": 2, \"validators\": [{\"min\": null, \"max\": null, \"negate\": false, \"type\": \"in_range\"}], \"parameter_type\": \"integer\", \"optional\": false}", - "tool_version": null, - "type": "parameter_input", - "uuid": "cc7e7b6a-c6c3-402a-bf36-362369856db9", - "when": null, - "workflow_outputs": [] - }, - "11": { - "annotation": "Convert the Yes/No choice into a boolean that enables running COMEBin only when requested.", - "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/map_param_value/map_param_value/0.2.0", - "errors": null, - "id": 11, - "input_connections": { - "input_param_type|input_param": { - "id": 2, - "output_name": "output" - } - }, - "inputs": [ - { - "description": "runtime parameter for tool Map parameter value", - "name": "input_param_type" - } - ], - "label": "COMEBin binning gate", - "name": "Map parameter value", - "outputs": [ - { - "name": "output_param_boolean", - "type": "expression.json" - } - ], - "position": { - "left": 2650, - "top": 420 - }, - "post_job_actions": {}, - "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/map_param_value/map_param_value/0.2.0", - "tool_shed_repository": { - "changeset_revision": "022a635f2283", - "name": "map_param_value", - "owner": "iuc", - "tool_shed": "toolshed.g2.bx.psu.edu" - }, - "tool_state": "{\"input_param_type\": {\"type\": \"text\", \"__current_case__\": 0, \"input_param\": {\"__class__\": \"ConnectedValue\"}, \"mappings\": [{\"__index__\": 0, \"from\": \"Yes\", \"to\": \"True\"}, {\"__index__\": 1, \"from\": \"No\", \"to\": \"False\"}]}, \"output_param_type\": \"boolean\", \"unmapped\": {\"on_unmapped\": \"default\", \"__current_case__\": 2, \"default_value\": \"False\"}, \"__page__\": 0, \"__rerun_remap_job_id__\": null}", - "tool_uuid": null, - "tool_version": "0.2.0", - "type": "tool", - "uuid": "ad3ce4e4-e205-4d5e-88c7-f29e518b8f16", - "when": null, - "workflow_outputs": [] - }, - "12": { - "annotation": "Convert the Yes/No choice into a boolean that enables running SemiBin only when requested.", - "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/map_param_value/map_param_value/0.2.0", - "errors": null, - "id": 12, - "input_connections": { - "input_param_type|input_param": { - "id": 3, - "output_name": "output" - } - }, - "inputs": [ - { - "description": "runtime parameter for tool Map parameter value", - "name": "input_param_type" - } - ], - "label": "SemiBin binning gate", - "name": "Map parameter value", - "outputs": [ - { - "name": "output_param_boolean", - "type": "expression.json" - } - ], - "position": { - "left": 2650, - "top": 1320 - }, - "post_job_actions": {}, - "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/map_param_value/map_param_value/0.2.0", - "tool_shed_repository": { - "changeset_revision": "022a635f2283", - "name": "map_param_value", - "owner": "iuc", - "tool_shed": "toolshed.g2.bx.psu.edu" - }, - "tool_state": "{\"input_param_type\": {\"type\": \"text\", \"__current_case__\": 0, \"input_param\": {\"__class__\": \"ConnectedValue\"}, \"mappings\": [{\"__index__\": 0, \"from\": \"Yes\", \"to\": \"True\"}, {\"__index__\": 1, \"from\": \"No\", \"to\": \"False\"}]}, \"output_param_type\": \"boolean\", \"unmapped\": {\"on_unmapped\": \"default\", \"__current_case__\": 2, \"default_value\": \"False\"}, \"__page__\": 0, \"__rerun_remap_job_id__\": null}", - "tool_uuid": null, - "tool_version": "0.2.0", - "type": "tool", - "uuid": "24240237-3764-44a9-9850-53bb6acd7bfa", - "when": null, - "workflow_outputs": [] - }, - "13": { - "annotation": "Convert the Yes/No choice into a boolean that enables running CONCOCT only when requested.", - "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/map_param_value/map_param_value/0.2.0", - "errors": null, - "id": 13, - "input_connections": { - "input_param_type|input_param": { - "id": 4, - "output_name": "output" - } - }, - "inputs": [ - { - "description": "runtime parameter for tool Map parameter value", - "name": "input_param_type" - } - ], - "label": "CONCOCT binning gate", - "name": "Map parameter value", - "outputs": [ - { - "name": "output_param_boolean", - "type": "expression.json" - } - ], - "position": { - "left": 2650, - "top": 720 - }, - "post_job_actions": {}, - "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/map_param_value/map_param_value/0.2.0", - "tool_shed_repository": { - "changeset_revision": "022a635f2283", - "name": "map_param_value", - "owner": "iuc", - "tool_shed": "toolshed.g2.bx.psu.edu" - }, - "tool_state": "{\"input_param_type\": {\"type\": \"text\", \"__current_case__\": 0, \"input_param\": {\"__class__\": \"ConnectedValue\"}, \"mappings\": [{\"__index__\": 0, \"from\": \"Yes\", \"to\": \"True\"}, {\"__index__\": 1, \"from\": \"No\", \"to\": \"False\"}]}, \"output_param_type\": \"boolean\", \"unmapped\": {\"on_unmapped\": \"default\", \"__current_case__\": 2, \"default_value\": \"False\"}, \"__page__\": 0, \"__rerun_remap_job_id__\": null}", - "tool_uuid": null, - "tool_version": "0.2.0", - "type": "tool", - "uuid": "ce513036-b730-4d87-bf9a-31dc1cc18445", - "when": null, - "workflow_outputs": [] - }, - "14": { - "annotation": "Convert the Yes/No choice into a boolean that enables running MetaBAT2 only when requested.", - "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/map_param_value/map_param_value/0.2.0", - "errors": null, - "id": 14, - "input_connections": { - "input_param_type|input_param": { - "id": 5, - "output_name": "output" - } - }, - "inputs": [ - { - "description": "runtime parameter for tool Map parameter value", - "name": "input_param_type" - } - ], - "label": "MetaBAT2 binning gate", - "name": "Map parameter value", - "outputs": [ - { - "name": "output_param_boolean", - "type": "expression.json" - } - ], - "position": { - "left": 2650, - "top": 2220 - }, - "post_job_actions": {}, - "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/map_param_value/map_param_value/0.2.0", - "tool_shed_repository": { - "changeset_revision": "022a635f2283", - "name": "map_param_value", - "owner": "iuc", - "tool_shed": "toolshed.g2.bx.psu.edu" - }, - "tool_state": "{\"input_param_type\": {\"type\": \"text\", \"__current_case__\": 0, \"input_param\": {\"__class__\": \"ConnectedValue\"}, \"mappings\": [{\"__index__\": 0, \"from\": \"Yes\", \"to\": \"True\"}, {\"__index__\": 1, \"from\": \"No\", \"to\": \"False\"}]}, \"output_param_type\": \"boolean\", \"unmapped\": {\"on_unmapped\": \"default\", \"__current_case__\": 2, \"default_value\": \"False\"}, \"__page__\": 0, \"__rerun_remap_job_id__\": null}", - "tool_uuid": null, - "tool_version": "0.2.0", - "type": "tool", - "uuid": "0404fc2e-4e75-4d8e-a7bc-7931f3acad2d", - "when": null, - "workflow_outputs": [] - }, - "15": { - "annotation": "Convert the Yes/No choice into a boolean that enables running MaxBin2 only when requested.", - "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/map_param_value/map_param_value/0.2.0", - "errors": null, - "id": 15, - "input_connections": { - "input_param_type|input_param": { - "id": 6, - "output_name": "output" - } - }, - "inputs": [ - { - "description": "runtime parameter for tool Map parameter value", - "name": "input_param_type" - } - ], - "label": "MaxBin2 binning gate", - "name": "Map parameter value", - "outputs": [ - { - "name": "output_param_boolean", - "type": "expression.json" - } - ], - "position": { - "left": 2650, - "top": 3120 - }, - "post_job_actions": {}, - "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/map_param_value/map_param_value/0.2.0", - "tool_shed_repository": { - "changeset_revision": "022a635f2283", - "name": "map_param_value", - "owner": "iuc", - "tool_shed": "toolshed.g2.bx.psu.edu" - }, - "tool_state": "{\"input_param_type\": {\"type\": \"text\", \"__current_case__\": 0, \"input_param\": {\"__class__\": \"ConnectedValue\"}, \"mappings\": [{\"__index__\": 0, \"from\": \"Yes\", \"to\": \"True\"}, {\"__index__\": 1, \"from\": \"No\", \"to\": \"False\"}]}, \"output_param_type\": \"boolean\", \"unmapped\": {\"on_unmapped\": \"default\", \"__current_case__\": 2, \"default_value\": \"False\"}, \"__page__\": 0, \"__rerun_remap_job_id__\": null}", - "tool_uuid": null, - "tool_version": "0.2.0", - "type": "tool", - "uuid": "222d01bf-3d52-4607-b01e-7001e3ba87d9", - "when": null, - "workflow_outputs": [] - }, - "16": { - "annotation": "Remove collection nesting so results can be pooled or combined; existing datasets are reused.", - "content_id": "__FLATTEN__", - "errors": null, - "id": 16, - "input_connections": { - "input": { - "id": 1, - "output_name": "output" - } - }, - "inputs": [], - "label": "Flatten read pair collection", - "name": "Flatten collection", - "outputs": [ - { - "name": "output", - "type": "input" - } - ], - "position": { - "left": 740, - "top": 420 - }, - "tool_id": "__FLATTEN__", - "tool_state": "{\"input\": {\"__class__\": \"ConnectedValue\"}, \"join_identifier\": \"_\", \"__page__\": null, \"__rerun_remap_job_id__\": null}", - "tool_version": "1.0.0", - "type": "tool", - "uuid": "13edb836-8c44-4618-b463-72b05e40a155", - "when": null, - "workflow_outputs": [] - }, - "17": { - "annotation": "Pair each assembly with every forward and reverse read dataset, without rewriting FASTQ data.", - "content_id": "__CROSS_PRODUCT_NESTED__", - "errors": null, - "id": 17, - "input_connections": { - "input_a": { - "id": 0, - "output_name": "output" - }, - "input_b": { - "id": 16, - "output_name": "output" - } - }, - "inputs": [], - "label": "Cross product of assemblies and flattened reads", - "name": "Nested Cross Product", - "outputs": [ - { - "name": "output_a", - "type": "input" - }, - { - "name": "output_b", - "type": "input" - } - ], - "position": { - "left": 740, - "top": 720 - }, - "post_job_actions": {}, - "tool_id": "__CROSS_PRODUCT_NESTED__", - "tool_state": "{\"input_a\": {\"__class__\": \"ConnectedValue\"}, \"input_b\": {\"__class__\": \"ConnectedValue\"}, \"__page__\": 0, \"__rerun_remap_job_id__\": null}", - "tool_uuid": null, - "tool_version": "1.0.0", - "type": "tool", - "uuid": "147ac3fb-e9f7-432b-8a54-090440040941", - "when": null, - "workflow_outputs": [] - }, - "18": { - "annotation": "Use collection identifiers to arrange datasets into paired reads per assembly; sequence files are not rewritten.", - "content_id": "__APPLY_RULES__", - "errors": null, - "id": 18, - "input_connections": { - "input": { - "id": 17, - "output_name": "output_b" - } - }, - "inputs": [], - "label": "Rebuild read pairs per assembly", - "name": "Apply rules", - "outputs": [ - { - "name": "output", - "type": "input" - } - ], - "position": { - "left": 740, - "top": 1020 - }, - "tool_id": "__APPLY_RULES__", - "tool_state": "{\"input\": {\"__class__\": \"ConnectedValue\"}, \"rules\": {\"rules\": [{\"type\": \"add_column_metadata\", \"value\": \"identifier0\"}, {\"type\": \"add_column_metadata\", \"value\": \"identifier1\"}, {\"type\": \"add_column_regex\", \"target_column\": 1, \"expression\": \"^(.+)_(forward|reverse)$\", \"group_count\": 2}], \"mapping\": [{\"type\": \"list_identifiers\", \"columns\": [0, 2]}, {\"type\": \"paired_identifier\", \"columns\": [3]}]}, \"__page__\": null, \"__rerun_remap_job_id__\": null}", - "tool_version": "1.1.0", - "type": "tool", - "uuid": "3d632024-5937-4665-b8a0-9c4d094762ad", - "when": null, - "workflow_outputs": [] - }, - "19": { - "annotation": "Use collection identifiers to arrange the references per assembly and read sample; sequence files are not rewritten.", - "content_id": "__APPLY_RULES__", - "errors": null, - "id": 19, - "input_connections": { - "input": { - "id": 17, - "output_name": "output_a" - } - }, - "inputs": [], - "label": "References per assembly and read sample", - "name": "Apply rules", - "outputs": [ - { - "name": "output", - "type": "input" - } - ], - "position": { - "left": 740, - "top": 1320 - }, - "tool_id": "__APPLY_RULES__", - "tool_state": "{\"input\": {\"__class__\": \"ConnectedValue\"}, \"rules\": {\"rules\": [{\"type\": \"add_column_metadata\", \"value\": \"identifier0\"}, {\"type\": \"add_column_metadata\", \"value\": \"identifier1\"}, {\"type\": \"add_filter_regex\", \"target_column\": 1, \"expression\": \"_forward$\", \"invert\": false}, {\"type\": \"add_column_regex\", \"target_column\": 1, \"expression\": \"^(.+)_(forward|reverse)$\", \"group_count\": 2}], \"mapping\": [{\"type\": \"list_identifiers\", \"columns\": [0, 2]}]}, \"__page__\": null, \"__rerun_remap_job_id__\": null}", - "tool_version": "1.1.0", - "type": "tool", - "uuid": "7d49bad3-3650-4ac9-a5c4-d9c0090b7375", - "when": null, - "workflow_outputs": [] - }, - "20": { - "annotation": "Separate forward and reverse mates while retaining sample identifiers.", - "content_id": "__UNZIP_COLLECTION__", - "errors": null, - "id": 20, - "input_connections": { - "input": { - "id": 1, - "output_name": "output" - } - }, - "inputs": [], - "label": "Unzip reads for automatic read-length estimation", - "name": "Unzip collection", - "outputs": [ - { - "name": "forward", - "type": "input" - }, - { - "name": "reverse", - "type": "input" - } - ], - "position": { - "left": 740, - "top": 1620 - }, - "post_job_actions": {}, - "tool_id": "__UNZIP_COLLECTION__", - "tool_state": "{\"input\": {\"__class__\": \"ConnectedValue\"}, \"__page__\": 0, \"__rerun_remap_job_id__\": null}", - "tool_uuid": null, - "tool_version": "1.0.0", - "type": "tool", - "uuid": "ec3c8493-c175-462d-a760-9d00c6ff6c69", - "when": null, - "workflow_outputs": [] - }, - "21": { - "type": "tool", - "name": "SeqKit statistics", - "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/seqkit_stats/seqkit_stats/2.8.1+galaxy0", - "tool_shed_repository": { - "changeset_revision": "812705bcf39c", - "name": "seqkit_stats", - "owner": "iuc", - "tool_shed": "toolshed.g2.bx.psu.edu" - }, - "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/seqkit_stats/seqkit_stats/2.8.1+galaxy0", - "tool_version": "2.8.1+galaxy0", - "tool_state": "{\"input\": {\"__class__\": \"ConnectedValue\"}, \"all\": false, \"basename\": true, \"skip_err\": false, \"tabular\": true}", - "input_connections": { - "input": { - "id": 20, - "output_name": "forward" - } - }, - "inputs": [], - "outputs": [], - "annotation": "Count sequences and bases for read-count-weighted read-length estimation on forward reads.", - "position": { - "left": 740, - "top": 1920 - }, - "id": 21, - "uuid": "7e279609-78fb-4228-bde2-64b430f05a4b", - "label": "Read-length statistics \u2014 forward", - "workflow_outputs": [] - }, - "22": { - "type": "tool", - "name": "SeqKit statistics", - "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/seqkit_stats/seqkit_stats/2.8.1+galaxy0", - "tool_shed_repository": { - "changeset_revision": "812705bcf39c", - "name": "seqkit_stats", - "owner": "iuc", - "tool_shed": "toolshed.g2.bx.psu.edu" - }, - "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/seqkit_stats/seqkit_stats/2.8.1+galaxy0", - "tool_version": "2.8.1+galaxy0", - "tool_state": "{\"input\": {\"__class__\": \"ConnectedValue\"}, \"all\": false, \"basename\": true, \"skip_err\": false, \"tabular\": true}", - "input_connections": { - "input": { - "id": 20, - "output_name": "reverse" - } - }, - "inputs": [], - "outputs": [], - "annotation": "Count sequences and bases for read-count-weighted read-length estimation on reverse reads.", - "position": { - "left": 740, - "top": 2220 - }, - "id": 22, - "uuid": "f4127452-4189-431b-8a92-303f9669b0c5", - "label": "Read-length statistics \u2014 reverse", - "workflow_outputs": [] - }, - "23": { - "type": "tool", - "name": "Concatenate datasets", - "tool_id": "toolshed.g2.bx.psu.edu/repos/bgruening/text_processing/tp_cat/0.1.0", - "tool_shed_repository": { - "changeset_revision": "ddf54b12c295", - "name": "text_processing", - "owner": "bgruening", - "tool_shed": "toolshed.g2.bx.psu.edu" - }, - "content_id": "toolshed.g2.bx.psu.edu/repos/bgruening/text_processing/tp_cat/0.1.0", - "tool_version": "0.1.0", - "tool_state": "{\"inputs\": [{\"__class__\": \"ConnectedValue\"}], \"queries\": [{\"__index__\": 0, \"inputs2\": [{\"__class__\": \"ConnectedValue\"}]}]}", - "input_connections": { - "inputs": { - "id": 21, - "output_name": "output" - }, - "queries_0|inputs2": { - "id": 22, - "output_name": "output" - } - }, - "inputs": [], - "outputs": [], - "annotation": "Merge both mates' statistics into one table.", - "position": { - "left": 740, - "top": 2520 - }, - "id": 23, - "uuid": "93ee4832-f528-498c-8590-8c95c882bce7", - "label": "Combine read-length statistics", - "workflow_outputs": [] - }, - "24": { - "type": "tool", - "name": "Text reformatting", - "tool_id": "toolshed.g2.bx.psu.edu/repos/bgruening/text_processing/tp_awk_tool/9.11+galaxy0", - "tool_shed_repository": { - "changeset_revision": "30b60202d990", - "name": "text_processing", - "owner": "bgruening", - "tool_shed": "toolshed.g2.bx.psu.edu" - }, - "content_id": "toolshed.g2.bx.psu.edu/repos/bgruening/text_processing/tp_awk_tool/9.11+galaxy0", - "tool_version": "9.11+galaxy0", - "tool_state": "{\"infile\": {\"__class__\": \"ConnectedValue\"}, \"code\": \"BEGIN{FS=\\\"\\t\\\"} $4 ~ /^[0-9]+$/ {n += $4; total += $5} END{if(n<1) exit 1; print int(total/n+0.5)}\", \"variables\": []}", - "input_connections": { - "infile": { - "id": 23, - "output_name": "out_file1" - } - }, - "inputs": [], - "outputs": [], - "annotation": "Divide total bases by total reads across both mates and round the mean read length.", - "position": { - "left": 740, - "top": 2820 - }, - "id": 24, - "uuid": "a8cacc18-37f2-4367-84c6-82da65a2e262", - "label": "Compute read-count-weighted mean length (both mates)", - "workflow_outputs": [] - }, - "25": { - "type": "tool", - "name": "Parse parameter value", - "tool_id": "param_value_from_file", - "content_id": "param_value_from_file", - "tool_version": "0.1.0", - "tool_state": "{\"input1\": {\"__class__\": \"ConnectedValue\"}, \"param_type\": \"integer\", \"remove_newlines\": true}", - "input_connections": { - "input1": { - "id": 24, - "output_name": "outfile" - } - }, - "inputs": [], - "outputs": [], - "annotation": "Read the computed mean read length from the statistics table for CONCOCT.", - "position": { - "left": 740, - "top": 3120 - }, - "id": 25, - "uuid": "15437693-6eaf-4b7f-a3d9-ee0c0916787b", - "label": "Automatic read length (CONCOCT)", - "workflow_outputs": [] - }, - "26": { - "annotation": "Align paired-end short reads to the selected reference assembly to measure contig coverage.", - "content_id": "toolshed.g2.bx.psu.edu/repos/devteam/bowtie2/bowtie2/2.5.5+galaxy0", - "errors": null, - "id": 26, - "input_connections": { - "library|input_1": { - "id": 18, - "output_name": "output" - }, - "reference_genome|own_file": { - "id": 19, - "output_name": "output" - } - }, - "inputs": [ - { - "description": "runtime parameter for tool Bowtie2", - "name": "library" - }, - { - "description": "runtime parameter for tool Bowtie2", - "name": "reference_genome" - } - ], - "label": "Map every read sample to every assembly with Bowtie2", - "name": "Bowtie2", - "outputs": [ - { - "name": "output", - "type": "bam" - } - ], - "position": { - "left": 1540, - "top": 420 - }, - "post_job_actions": {}, - "tool_id": "toolshed.g2.bx.psu.edu/repos/devteam/bowtie2/bowtie2/2.5.5+galaxy0", - "tool_shed_repository": { - "changeset_revision": "a470b376503d", - "name": "bowtie2", - "owner": "devteam", - "tool_shed": "toolshed.g2.bx.psu.edu" - }, - "tool_state": "{\"analysis_type\": {\"analysis_type_selector\": \"simple\", \"__current_case__\": 0, \"presets\": \"no_presets\"}, \"library\": {\"type\": \"paired_collection\", \"__current_case__\": 1, \"input_1\": {\"__class__\": \"ConnectedValue\"}, \"unaligned_file\": false, \"aligned_file\": false, \"paired_options\": {\"paired_options_selector\": \"no\", \"__current_case__\": 1}}, \"reference_genome\": {\"source\": \"history\", \"__current_case__\": 1, \"own_file\": {\"__class__\": \"ConnectedValue\"}}, \"rg\": {\"rg_selector\": \"do_not_set\", \"__current_case__\": 3}, \"sam_options\": {\"sam_options_selector\": \"no\", \"__current_case__\": 1}, \"save_mapping_stats\": false, \"__page__\": 0, \"__rerun_remap_job_id__\": null}", - "tool_uuid": null, - "tool_version": "2.5.5+galaxy0", - "type": "tool", - "uuid": "dfc68500-b152-402d-8897-df30eb9ab797", - "when": null, - "workflow_outputs": [] - }, - "27": { - "annotation": "Summarize alignment coverage over the CONCOCT contig fragments.", - "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/concoct_coverage_table/concoct_coverage_table/1.1.0+galaxy3", - "errors": null, - "id": 27, - "input_connections": { - "bedfile": { - "id": 29, - "output_name": "output_bed" - }, - "mode|bamfiles": { - "id": 26, - "output_name": "output" - } - }, - "inputs": [ - { - "description": "runtime parameter for tool CONCOCT: Generate the input coverage table", - "name": "mode" - } - ], - "label": "Calculate fragment coverage for CONCOCT", - "name": "CONCOCT: Generate the input coverage table", - "outputs": [ - { - "name": "output", - "type": "tabular" - } - ], - "position": { - "left": 1540, - "top": 720 - }, - "post_job_actions": {}, - "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/concoct_coverage_table/concoct_coverage_table/1.1.0+galaxy3", - "tool_shed_repository": { - "changeset_revision": "6a9c82cc3448", - "name": "concoct_coverage_table", - "owner": "iuc", - "tool_shed": "toolshed.g2.bx.psu.edu" - }, - "tool_state": "{\"bedfile\": {\"__class__\": \"ConnectedValue\"}, \"mode\": {\"type\": \"co\", \"__current_case__\": 1, \"bamfiles\": {\"__class__\": \"ConnectedValue\"}}, \"__page__\": 0, \"__rerun_remap_job_id__\": null}", - "tool_uuid": null, - "tool_version": "1.1.0+galaxy3", - "type": "tool", - "uuid": "ebe92915-fada-4f47-85e2-48ca22f07692", - "when": null, - "workflow_outputs": [] - }, - "28": { - "annotation": "Summarize mapped-read depth and variance for each contig and read sample.", - "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/metabat2_jgi_summarize_bam_contig_depths/metabat2_jgi_summarize_bam_contig_depths/2.18.23+galaxy0", - "errors": null, - "id": 28, - "input_connections": { - "mode|bam_co_inputs": { - "id": 26, - "output_name": "output" - } - }, - "inputs": [ - { - "description": "runtime parameter for tool Calculate contig depths", - "name": "mode" - } - ], - "label": "Calculate contig depths across all read samples per assembly", - "name": "Calculate contig depths", - "outputs": [ - { - "name": "outputDepth", - "type": "tabular" - } - ], - "position": { - "left": 1540, - "top": 1020 - }, - "post_job_actions": { - "TagDatasetActionoutputDepth": { - "action_arguments": { - "tags": "coverage-depth-matrices" - }, - "action_type": "TagDatasetAction", - "output_name": "outputDepth" - } - }, - "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/metabat2_jgi_summarize_bam_contig_depths/metabat2_jgi_summarize_bam_contig_depths/2.18.23+galaxy0", - "tool_shed_repository": { - "changeset_revision": "45f6d77d37b7", - "name": "metabat2_jgi_summarize_bam_contig_depths", - "owner": "iuc", - "tool_shed": "toolshed.g2.bx.psu.edu" - }, - "tool_state": "{\"advanced\": {\"percentIdentity\": \"97\", \"output_paired_contigs\": false, \"noIntraDepthVariance\": false, \"showDepth\": false, \"minMapQual\": \"0\", \"weightMapQual\": \"0.0\", \"includeEdgeBases\": false, \"maxEdgeBases\": \"75\"}, \"mode\": {\"type\": \"co\", \"__current_case__\": 1, \"bam_co_inputs\": {\"__class__\": \"ConnectedValue\"}, \"use_reference_cond\": {\"use_reference\": \"no\", \"__current_case__\": 0}}, \"shredding\": {\"shredLength\": \"16000\", \"shredDepth\": \"5\", \"minContigLength\": \"1\", \"minContigDepth\": \"0.0\"}, \"__page__\": 0, \"__rerun_remap_job_id__\": null}", - "tool_uuid": null, - "tool_version": "2.18.23+galaxy0", - "type": "tool", - "uuid": "99fd59a2-f822-4cf5-9be4-5bdf2d55c43d", - "when": null, - "workflow_outputs": [ - { - "label": "Coverage depth matrices", - "output_name": "outputDepth", - "uuid": "131fdbc7-1992-4fcc-bb81-4352a81ae0e8" - } - ] - }, - "29": { - "annotation": "Split long contigs into fragments so coverage and composition can be clustered together.", - "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/concoct_cut_up_fasta/concoct_cut_up_fasta/1.1.0+galaxy3", - "errors": null, - "id": 29, - "input_connections": { - "input_fasta": { - "id": 0, - "output_name": "output" - } - }, - "inputs": [], - "label": "Split contigs into fragments for CONCOCT", - "name": "CONCOCT: Cut up contigs", - "outputs": [ - { - "name": "output_fasta", - "type": "fasta" - }, - { - "name": "output_bed", - "type": "bed" - } - ], - "position": { - "left": 3000, - "top": 420 - }, - "post_job_actions": {}, - "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/concoct_cut_up_fasta/concoct_cut_up_fasta/1.1.0+galaxy3", - "tool_shed_repository": { - "changeset_revision": "7a5598f973c9", - "name": "concoct_cut_up_fasta", - "owner": "iuc", - "tool_shed": "toolshed.g2.bx.psu.edu" - }, - "tool_state": "{\"bedfile\": true, \"chunk_size\": \"10000\", \"input_fasta\": {\"__class__\": \"ConnectedValue\"}, \"merge_last\": true, \"overlap_size\": \"0\", \"__page__\": 0, \"__rerun_remap_job_id__\": null}", - "tool_uuid": null, - "tool_version": "1.1.0+galaxy3", - "type": "tool", - "uuid": "83aae2e2-79b3-4f62-a985-46e171935dd2", - "when": null, - "workflow_outputs": [] - }, - "30": { - "annotation": "Cluster contig fragments into candidate bins from fragment coverage and composition.", - "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/concoct/concoct/1.1.0+galaxy3", - "errors": null, - "id": 30, - "input_connections": { - "advanced|read_length": { - "id": 25, - "output_name": "integer_param" - }, - "composition_file": { - "id": 29, - "output_name": "output_fasta" - }, - "coverage_file": { - "id": 27, - "output_name": "output" - }, - "when": { - "id": 13, - "output_name": "output_param_boolean" - } - }, - "inputs": [ - { - "description": "runtime parameter for tool CONCOCT", - "name": "advanced" - } - ], - "label": "Cluster contig fragments with CONCOCT", - "name": "CONCOCT", - "outputs": [ - { - "name": "output_clustering", - "type": "csv" - }, - { - "name": "output_pca_components", - "type": "csv" - }, - { - "name": "output_pca_transformed", - "type": "csv" - } - ], - "position": { - "left": 3000, - "top": 720 - }, - "post_job_actions": {}, - "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/concoct/concoct/1.1.0+galaxy3", - "tool_shed_repository": { - "changeset_revision": "396cce609c04", - "name": "concoct", - "owner": "iuc", - "tool_shed": "toolshed.g2.bx.psu.edu" - }, - "tool_state": "{\"advanced\": {\"clusters\": \"400\", \"kmer_length\": \"4\", \"length_threshold\": \"1000\", \"read_length\": {\"__class__\": \"ConnectedValue\"}, \"total_percentage_pca\": \"90\", \"seed\": \"1\", \"iterations\": \"500\", \"no_cov_normalization\": false}, \"composition_file\": {\"__class__\": \"ConnectedValue\"}, \"coverage_file\": {\"__class__\": \"ConnectedValue\"}, \"output\": {\"no_total_coverage\": false, \"converge_out\": false, \"log\": false}, \"__page__\": 0, \"__rerun_remap_job_id__\": null}", - "tool_uuid": null, - "tool_version": "1.1.0+galaxy3", - "type": "tool", - "uuid": "ae4f83c9-3700-43a8-ab9a-0614c20d91e4", - "when": "$(inputs.when)", - "workflow_outputs": [] - }, - "31": { - "annotation": "Combine fragment assignments into assignments for the original contigs.", - "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/concoct_merge_cut_up_clustering/concoct_merge_cut_up_clustering/1.1.0+galaxy3", - "errors": null, - "id": 31, - "input_connections": { - "cutup_clustering_result": { - "id": 34, - "output_name": "data_param" - }, - "when": { - "id": 13, - "output_name": "output_param_boolean" - } - }, - "inputs": [], - "label": "Merge CONCOCT fragment clusters into contig assignments", - "name": "CONCOCT: Merge cut clusters", - "outputs": [ - { - "name": "output", - "type": "csv" - } - ], - "position": { - "left": 3000, - "top": 1020 - }, - "post_job_actions": {}, - "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/concoct_merge_cut_up_clustering/concoct_merge_cut_up_clustering/1.1.0+galaxy3", - "tool_shed_repository": { - "changeset_revision": "28b4b21d6aae", - "name": "concoct_merge_cut_up_clustering", - "owner": "iuc", - "tool_shed": "toolshed.g2.bx.psu.edu" - }, - "tool_state": "{\"cutup_clustering_result\": {\"__class__\": \"ConnectedValue\"}, \"__page__\": 0, \"__rerun_remap_job_id__\": null}", - "tool_uuid": null, - "tool_version": "1.1.0+galaxy3", - "type": "tool", - "uuid": "0467972e-1650-48bb-9cc2-6e7c37af1e6f", - "when": "$(inputs.when)", - "workflow_outputs": [] - }, - "32": { - "annotation": "Recover original contig sequences for each CONCOCT cluster.", - "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/concoct_extract_fasta_bins/concoct_extract_fasta_bins/1.1.0+galaxy3", - "errors": null, - "id": 32, - "input_connections": { - "cluster_file": { - "id": 35, - "output_name": "data_param" - }, - "fasta_file": { - "id": 0, - "output_name": "output" - }, - "when": { - "id": 13, - "output_name": "output_param_boolean" - } - }, - "inputs": [], - "label": "Extract CONCOCT bins as FASTA collections", - "name": "CONCOCT: Extract a fasta file", - "outputs": [ - { - "name": "bins", - "type": "input" - } - ], - "position": { - "left": 3000, - "top": 1320 - }, - "post_job_actions": { - "TagDatasetActionbins": { - "action_arguments": { - "tags": "concoct-bins" - }, - "action_type": "TagDatasetAction", - "output_name": "bins" - } - }, - "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/concoct_extract_fasta_bins/concoct_extract_fasta_bins/1.1.0+galaxy3", - "tool_shed_repository": { - "changeset_revision": "d87b60b2ed78", - "name": "concoct_extract_fasta_bins", - "owner": "iuc", - "tool_shed": "toolshed.g2.bx.psu.edu" - }, - "tool_state": "{\"cluster_file\": {\"__class__\": \"ConnectedValue\"}, \"fasta_file\": {\"__class__\": \"ConnectedValue\"}, \"__page__\": 0, \"__rerun_remap_job_id__\": null}", - "tool_uuid": null, - "tool_version": "1.1.0+galaxy3", - "type": "tool", - "uuid": "0dc8f9d0-9b83-4fd0-b028-ad07d95b60d5", - "when": "$(inputs.when)", - "workflow_outputs": [ - { - "label": "CONCOCT bins", - "output_name": "bins", - "uuid": "6b8302e3-00e4-400f-a93f-7b6f9734359b" - } - ] - }, - "33": { - "annotation": "Convert FASTA bin membership to a contig-to-bin table for DAS Tool.", - "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/fasta_to_contig2bin/Fasta_to_Contig2Bin/1.1.7+galaxy1", - "errors": null, - "id": 33, - "input_connections": { - "inputs": { - "id": 36, - "output_name": "data_param" - } - }, - "inputs": [], - "label": "Create contig-to-bin assignments from CONCOCT", - "name": "Converts genome bins in fasta format", - "outputs": [ - { - "name": "contigs2bin", - "type": "tabular" - } - ], - "position": { - "left": 3000, - "top": 1620 - }, - "post_job_actions": {}, - "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/fasta_to_contig2bin/Fasta_to_Contig2Bin/1.1.7+galaxy1", - "tool_shed_repository": { - "changeset_revision": "fb2bed0eb02f", - "name": "fasta_to_contig2bin", - "owner": "iuc", - "tool_shed": "toolshed.g2.bx.psu.edu" - }, - "tool_state": "{\"inputs\": {\"__class__\": \"ConnectedValue\"}, \"__page__\": 0, \"__rerun_remap_job_id__\": null}", - "tool_uuid": null, - "tool_version": "1.1.7+galaxy1", - "type": "tool", - "uuid": "ba2c65f4-d987-409e-82ab-f7f7d612872e", - "when": null, - "workflow_outputs": [] - }, - "34": { - "annotation": "Retrieve CONCOCT fragment cluster results while allowing the CONCOCT optional branch to be skipped.", - "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/pick_value/pick_value/0.2.0", - "errors": null, - "id": 34, - "input_connections": { - "style_cond|type_cond|pick_from_0|value": { - "id": 30, - "output_name": "output_clustering" - } - }, - "inputs": [], - "label": "Bridge optional CONCOCT fragment clusters", - "name": "Pick parameter value", - "outputs": [ - { - "name": "data_param", - "type": "input" - } - ], - "position": { - "left": 3000, - "top": 1920 - }, - "post_job_actions": {}, - "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/pick_value/pick_value/0.2.0", - "tool_shed_repository": { - "changeset_revision": "b19e21af9c52", - "name": "pick_value", - "owner": "iuc", - "tool_shed": "toolshed.g2.bx.psu.edu" - }, - "tool_state": "{\"style_cond\": {\"pick_style\": \"first\", \"__current_case__\": 0, \"type_cond\": {\"param_type\": \"data\", \"__current_case__\": 4, \"pick_from\": [{\"__index__\": 0, \"value\": {\"__class__\": \"ConnectedValue\"}}]}}, \"__page__\": 0, \"__rerun_remap_job_id__\": null}", - "tool_uuid": null, - "tool_version": "0.2.0", - "type": "tool", - "uuid": "8ad60c12-2d20-48be-a5c7-ae099af557c4", - "when": null, - "workflow_outputs": [] - }, - "35": { - "annotation": "Retrieve CONCOCT merged contig assignment results while allowing the CONCOCT optional branch to be skipped.", - "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/pick_value/pick_value/0.2.0", - "errors": null, - "id": 35, - "input_connections": { - "style_cond|type_cond|pick_from_0|value": { - "id": 31, - "output_name": "output" - } - }, - "inputs": [], - "label": "Bridge optional CONCOCT merged contig assignments", - "name": "Pick parameter value", - "outputs": [ - { - "name": "data_param", - "type": "input" - } - ], - "position": { - "left": 3000, - "top": 2220 - }, - "post_job_actions": {}, - "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/pick_value/pick_value/0.2.0", - "tool_shed_repository": { - "changeset_revision": "b19e21af9c52", - "name": "pick_value", - "owner": "iuc", - "tool_shed": "toolshed.g2.bx.psu.edu" - }, - "tool_state": "{\"style_cond\": {\"pick_style\": \"first\", \"__current_case__\": 0, \"type_cond\": {\"param_type\": \"data\", \"__current_case__\": 4, \"pick_from\": [{\"__index__\": 0, \"value\": {\"__class__\": \"ConnectedValue\"}}]}}, \"__page__\": 0, \"__rerun_remap_job_id__\": null}", - "tool_uuid": null, - "tool_version": "0.2.0", - "type": "tool", - "uuid": "d935dc9e-3f8d-4088-b1ca-8aab078965aa", - "when": null, - "workflow_outputs": [] - }, - "36": { - "annotation": "Retrieve CONCOCT bin results while allowing the CONCOCT optional branch to be skipped.", - "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/pick_value/pick_value/0.2.0", - "errors": null, - "id": 36, - "input_connections": { - "style_cond|type_cond|pick_from_0|value": { - "id": 32, - "output_name": "bins" - } - }, - "inputs": [], - "label": "Bridge optional CONCOCT bins", - "name": "Pick parameter value", - "outputs": [ - { - "name": "data_param", - "type": "input" - } - ], - "position": { - "left": 3000, - "top": 2520 - }, - "post_job_actions": {}, - "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/pick_value/pick_value/0.2.0", - "tool_shed_repository": { - "changeset_revision": "b19e21af9c52", - "name": "pick_value", - "owner": "iuc", - "tool_shed": "toolshed.g2.bx.psu.edu" - }, - "tool_state": "{\"style_cond\": {\"pick_style\": \"first\", \"__current_case__\": 0, \"type_cond\": {\"param_type\": \"data\", \"__current_case__\": 4, \"pick_from\": [{\"__index__\": 0, \"value\": {\"__class__\": \"ConnectedValue\"}}]}}, \"__page__\": 0, \"__rerun_remap_job_id__\": null}", - "tool_uuid": null, - "tool_version": "0.2.0", - "type": "tool", - "uuid": "40356f8f-3bf9-4a93-a639-f9a8fa8e5cf2", - "when": null, - "workflow_outputs": [] - }, - "37": { - "annotation": "Use sequence and coverage representations to infer candidate genome bins when enabled.", - "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/comebin/comebin/1.1.0+galaxy1", - "errors": null, - "id": 37, - "input_connections": { - "assembly_file": { - "id": 0, - "output_name": "output" - }, - "bam_files": { - "id": 26, - "output_name": "output" - }, - "when": { - "id": 11, - "output_name": "output_param_boolean" - } - }, - "inputs": [], - "label": "Bin contigs with COMEBin", - "name": "COMEBin", - "outputs": [ - { - "name": "bins", - "type": "input" - } - ], - "position": { - "left": 3800, - "top": 420 - }, - "post_job_actions": { - "TagDatasetActionbins": { - "action_arguments": { - "tags": "comebin-bins" - }, - "action_type": "TagDatasetAction", - "output_name": "bins" - } - }, - "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/comebin/comebin/1.1.0+galaxy1", - "tool_shed_repository": { - "changeset_revision": "7e66a24282a7", - "name": "comebin", - "owner": "iuc", - "tool_shed": "toolshed.g2.bx.psu.edu" - }, - "tool_state": "{\"assembly_file\": {\"__class__\": \"ConnectedValue\"}, \"bam_files\": {\"__class__\": \"ConnectedValue\"}, \"batch\": \"1024\", \"emb_comebin\": \"2048\", \"emb_cov\": \"2048\", \"learning\": \"6\", \"loss\": \"0.15\", \"max_edges\": \"100\", \"__page__\": 0, \"__rerun_remap_job_id__\": null}", - "tool_uuid": null, - "tool_version": "1.1.0+galaxy1", - "type": "tool", - "uuid": "1e418b96-e22e-4cd0-a95d-d1aed1211125", - "when": "$(inputs.when)", - "workflow_outputs": [ - { - "label": "COMEBin bins", - "output_name": "bins", - "uuid": "390a4e70-1fbd-461a-9730-e8eda75cec32" - } - ] - }, - "38": { - "annotation": "Retrieve COMEBin bin results while allowing the COMEBin optional branch to be skipped.", - "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/pick_value/pick_value/0.2.0", - "errors": null, - "id": 38, - "input_connections": { - "style_cond|type_cond|pick_from_0|value": { - "id": 37, - "output_name": "bins" - } - }, - "inputs": [], - "label": "Bridge optional COMEBin bins for downstream conversion", - "name": "Pick parameter value", - "outputs": [ - { - "name": "data_param", - "type": "input" - } - ], - "position": { - "left": 3800, - "top": 720 - }, - "post_job_actions": {}, - "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/pick_value/pick_value/0.2.0", - "tool_shed_repository": { - "changeset_revision": "b19e21af9c52", - "name": "pick_value", - "owner": "iuc", - "tool_shed": "toolshed.g2.bx.psu.edu" - }, - "tool_state": "{\"style_cond\": {\"pick_style\": \"first\", \"__current_case__\": 0, \"type_cond\": {\"param_type\": \"data\", \"__current_case__\": 4, \"pick_from\": [{\"__index__\": 0, \"value\": {\"__class__\": \"ConnectedValue\"}}]}}, \"__page__\": 0, \"__rerun_remap_job_id__\": null}", - "tool_uuid": null, - "tool_version": "0.2.0", - "type": "tool", - "uuid": "fdd36664-fd23-475b-b6e2-523333782de6", - "when": null, - "workflow_outputs": [] - }, - "39": { - "annotation": "Convert FASTA bin membership to a contig-to-bin table for DAS Tool.", - "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/fasta_to_contig2bin/Fasta_to_Contig2Bin/1.1.7+galaxy1", - "errors": null, - "id": 39, - "input_connections": { - "inputs": { - "id": 38, - "output_name": "data_param" - } - }, - "inputs": [], - "label": "Create contig-to-bin assignments from COMEBin", - "name": "Converts genome bins in fasta format", - "outputs": [ - { - "name": "contigs2bin", - "type": "tabular" - } - ], - "position": { - "left": 3800, - "top": 1020 - }, - "post_job_actions": {}, - "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/fasta_to_contig2bin/Fasta_to_Contig2Bin/1.1.7+galaxy1", - "tool_shed_repository": { - "changeset_revision": "fb2bed0eb02f", - "name": "fasta_to_contig2bin", - "owner": "iuc", - "tool_shed": "toolshed.g2.bx.psu.edu" - }, - "tool_state": "{\"inputs\": {\"__class__\": \"ConnectedValue\"}, \"__page__\": 0, \"__rerun_remap_job_id__\": null}", - "tool_uuid": null, - "tool_version": "1.1.7+galaxy1", - "type": "tool", - "uuid": "d2d17d81-7acb-4cf2-baff-822050e8316f", - "when": null, - "workflow_outputs": [] - }, - "40": { - "annotation": "Use contig sequence features and coverage to infer candidate genome bins.", - "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/semibin/semibin/2.1.0+galaxy1", - "errors": null, - "id": 40, - "input_connections": { - "mode|align_select|input_bam": { - "id": 26, - "output_name": "output" - }, - "mode|input_fasta": { - "id": 0, - "output_name": "output" - }, - "when": { - "id": 12, - "output_name": "output_param_boolean" - } - }, - "inputs": [ - { - "description": "runtime parameter for tool SemiBin", - "name": "mode" - } - ], - "label": "Bin contigs with SemiBin", - "name": "SemiBin", - "outputs": [ - { - "name": "output_bins", - "type": "input" - } - ], - "position": { - "left": 3800, - "top": 1320 - }, - "post_job_actions": { - "TagDatasetActionoutput_bins": { - "action_arguments": { - "tags": "semibin-bins" - }, - "action_type": "TagDatasetAction", - "output_name": "output_bins" - } - }, - "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/semibin/semibin/2.1.0+galaxy1", - "tool_shed_repository": { - "changeset_revision": "afee33334a63", - "name": "semibin", - "owner": "iuc", - "tool_shed": "toolshed.g2.bx.psu.edu" - }, - "tool_state": "{\"annot\": {\"ml_threshold\": null}, \"bin\": {\"max_node\": \"1.0\", \"max_edges\": \"200\", \"minfasta_kbs\": \"200\"}, \"extra_output\": null, \"min_len\": {\"method\": \"automatic\", \"__current_case__\": 0}, \"mode\": {\"select\": \"co\", \"__current_case__\": 1, \"input_fasta\": {\"__class__\": \"ConnectedValue\"}, \"align_select\": {\"align_select\": \"bam\", \"__current_case__\": 0, \"input_bam\": {\"__class__\": \"ConnectedValue\"}}, \"ref\": {\"select\": \"ml\", \"__current_case__\": 2}}, \"orf_finder\": \"fast-naive\", \"random_seed\": \"0\", \"training\": {\"epoches\": \"20\", \"batch_size\": \"2048\"}, \"__page__\": 0, \"__rerun_remap_job_id__\": null}", - "tool_uuid": null, - "tool_version": "2.1.0+galaxy1", - "type": "tool", - "uuid": "c1d1b3e7-87d9-4bc2-9624-ed7ff1441738", - "when": "$(inputs.when)", - "workflow_outputs": [ - { - "label": "SemiBin bins", - "output_name": "output_bins", - "uuid": "84ab02d0-c3f8-45df-af96-5055f0c3cd13" - } - ] - }, - "41": { - "annotation": "Retrieve SemiBin results while allowing the SemiBin optional branch to be skipped.", - "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/pick_value/pick_value/0.2.0", - "errors": null, - "id": 41, - "input_connections": { - "style_cond|type_cond|pick_from_0|value": { - "id": 40, - "output_name": "output_bins" - } - }, - "inputs": [], - "label": "Optional bins bridge \u2014 SemiBin", - "name": "Pick parameter value", - "outputs": [ - { - "name": "data_param", - "type": "input" - } - ], - "position": { - "left": 3800, - "top": 1620 - }, - "post_job_actions": {}, - "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/pick_value/pick_value/0.2.0", - "tool_shed_repository": { - "changeset_revision": "b19e21af9c52", - "name": "pick_value", - "owner": "iuc", - "tool_shed": "toolshed.g2.bx.psu.edu" - }, - "tool_state": "{\"style_cond\": {\"pick_style\": \"first\", \"__current_case__\": 0, \"type_cond\": {\"param_type\": \"data\", \"__current_case__\": 4, \"pick_from\": [{\"__index__\": 0, \"value\": {\"__class__\": \"ConnectedValue\"}}]}}, \"__page__\": 0, \"__rerun_remap_job_id__\": null}", - "tool_uuid": null, - "tool_version": "0.2.0", - "type": "tool", - "uuid": "2536bd4f-59df-4e2b-b5e9-b8326cc3d9cf", - "when": null, - "workflow_outputs": [] - }, - "42": { - "annotation": "Convert FASTA bin membership to a contig-to-bin table for DAS Tool.", - "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/fasta_to_contig2bin/Fasta_to_Contig2Bin/1.1.7+galaxy1", - "errors": null, - "id": 42, - "input_connections": { - "inputs": { - "id": 41, - "output_name": "data_param" - } - }, - "inputs": [], - "label": "Create contig-to-bin assignments from SemiBin", - "name": "Converts genome bins in fasta format", - "outputs": [ - { - "name": "contigs2bin", - "type": "tabular" - } - ], - "position": { - "left": 3800, - "top": 1920 - }, - "post_job_actions": {}, - "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/fasta_to_contig2bin/Fasta_to_Contig2Bin/1.1.7+galaxy1", - "tool_shed_repository": { - "changeset_revision": "fb2bed0eb02f", - "name": "fasta_to_contig2bin", - "owner": "iuc", - "tool_shed": "toolshed.g2.bx.psu.edu" - }, - "tool_state": "{\"inputs\": {\"__class__\": \"ConnectedValue\"}, \"__page__\": 0, \"__rerun_remap_job_id__\": null}", - "tool_uuid": null, - "tool_version": "1.1.7+galaxy1", - "type": "tool", - "uuid": "06531149-35a2-4c72-bf0b-c948785e24b9", - "when": null, - "workflow_outputs": [] - }, - "43": { - "annotation": "Combine contig composition and coverage to infer candidate genome bins.", - "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/metabat2/metabat2/2.18.23+galaxy0", - "errors": null, - "id": 43, - "input_connections": { - "advanced|base_coverage_depth_cond|abdFile": { - "id": 28, - "output_name": "outputDepth" - }, - "inFile": { - "id": 0, - "output_name": "output" - }, - "when": { - "id": 14, - "output_name": "output_param_boolean" - } - }, - "inputs": [], - "label": "Bin contigs with MetaBAT2", - "name": "MetaBAT2", - "outputs": [ - { - "name": "bins", - "type": "input" - } - ], - "position": { - "left": 4600, - "top": 420 - }, - "post_job_actions": { - "TagDatasetActionbins": { - "action_arguments": { - "tags": "metabat2-bins" - }, - "action_type": "TagDatasetAction", - "output_name": "bins" - } - }, - "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/metabat2/metabat2/2.18.23+galaxy0", - "tool_shed_repository": { - "changeset_revision": "c63e45a190b5", - "name": "metabat2", - "owner": "iuc", - "tool_shed": "toolshed.g2.bx.psu.edu" - }, - "tool_state": "{\"advanced\": {\"base_coverage_depth_cond\": {\"base_coverage_depth\": \"yes\", \"__current_case__\": 1, \"abdFile\": {\"__class__\": \"ConnectedValue\"}, \"cvExt\": null}, \"minContig\": \"1500\", \"minSmallContig\": \"1000\", \"maxP\": \"95\", \"minS\": \"60\", \"maxEdges\": \"200\", \"pTNF\": \"0\", \"noAdd\": false, \"minRecruitingSize\": \"10\", \"minCV\": \"1.0\", \"minCVSum\": \"1.0\", \"seed\": \"0\"}, \"inFile\": {\"__class__\": \"ConnectedValue\"}, \"out\": {\"minClsSize\": \"200000\", \"onlyLabel\": false, \"saveCls\": false, \"fullHeader\": false, \"extra_outputs\": null}, \"__page__\": 0, \"__rerun_remap_job_id__\": null}", - "tool_uuid": null, - "tool_version": "2.18.23+galaxy0", - "type": "tool", - "uuid": "876acc0d-bb05-42ad-ac28-5da06d57b99f", - "when": "$(inputs.when)", - "workflow_outputs": [ - { - "label": "MetaBAT2 bins", - "output_name": "bins", - "uuid": "98f1c793-cd46-4d0f-9e08-f9c54c702f36" - } - ] - }, - "44": { - "annotation": "Retrieve MetaBAT2 results while allowing the MetaBAT2 optional branch to be skipped.", - "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/pick_value/pick_value/0.2.0", - "errors": null, - "id": 44, - "input_connections": { - "style_cond|type_cond|pick_from_0|value": { - "id": 43, - "output_name": "bins" - } - }, - "inputs": [], - "label": "Optional bins bridge \u2014 MetaBAT2", - "name": "Pick parameter value", - "outputs": [ - { - "name": "data_param", - "type": "input" - } - ], - "position": { - "left": 4600, - "top": 720 - }, - "post_job_actions": {}, - "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/pick_value/pick_value/0.2.0", - "tool_shed_repository": { - "changeset_revision": "b19e21af9c52", - "name": "pick_value", - "owner": "iuc", - "tool_shed": "toolshed.g2.bx.psu.edu" - }, - "tool_state": "{\"style_cond\": {\"pick_style\": \"first\", \"__current_case__\": 0, \"type_cond\": {\"param_type\": \"data\", \"__current_case__\": 4, \"pick_from\": [{\"__index__\": 0, \"value\": {\"__class__\": \"ConnectedValue\"}}]}}, \"__page__\": 0, \"__rerun_remap_job_id__\": null}", - "tool_uuid": null, - "tool_version": "0.2.0", - "type": "tool", - "uuid": "50a7dd5c-0ca6-4fef-8e1e-0f7c1c5c2ec5", - "when": null, - "workflow_outputs": [] - }, - "45": { - "annotation": "Convert FASTA bin membership to a contig-to-bin table for DAS Tool.", - "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/fasta_to_contig2bin/Fasta_to_Contig2Bin/1.1.7+galaxy1", - "errors": null, - "id": 45, - "input_connections": { - "inputs": { - "id": 44, - "output_name": "data_param" - } - }, - "inputs": [], - "label": "Create contig-to-bin assignments from MetaBAT2", - "name": "Converts genome bins in fasta format", - "outputs": [ - { - "name": "contigs2bin", - "type": "tabular" - } - ], - "position": { - "left": 4600, - "top": 1020 - }, - "post_job_actions": {}, - "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/fasta_to_contig2bin/Fasta_to_Contig2Bin/1.1.7+galaxy1", - "tool_shed_repository": { - "changeset_revision": "fb2bed0eb02f", - "name": "fasta_to_contig2bin", - "owner": "iuc", - "tool_shed": "toolshed.g2.bx.psu.edu" - }, - "tool_state": "{\"inputs\": {\"__class__\": \"ConnectedValue\"}, \"__page__\": 0, \"__rerun_remap_job_id__\": null}", - "tool_uuid": null, - "tool_version": "1.1.7+galaxy1", - "type": "tool", - "uuid": "f1e5f724-12de-4ddb-a7a7-775ac3af7d8f", - "when": null, - "workflow_outputs": [] - }, - "46": { - "annotation": "Use contig composition, coverage, and marker genes to infer candidate genome bins.", - "content_id": "toolshed.g2.bx.psu.edu/repos/mbernt/maxbin2/maxbin2/2.2.7+galaxy6", - "errors": null, - "id": 46, - "input_connections": { - "assembly|inputs|abund": { - "id": 28, - "output_name": "outputDepth" - }, - "contig": { - "id": 0, - "output_name": "output" - }, - "when": { - "id": 15, - "output_name": "output_param_boolean" - } - }, - "inputs": [], - "label": "Bin contigs with MaxBin2", - "name": "MaxBin2", - "outputs": [ - { - "name": "bins", - "type": "input" - }, - { - "name": "noclass", - "type": "fasta" - }, - { - "name": "toshort", - "type": "fasta" - }, - { - "name": "summary", - "type": "tabular" - } - ], - "position": { - "left": 4600, - "top": 1320 - }, - "post_job_actions": { - "TagDatasetActionbins": { - "action_arguments": { - "tags": "maxbin2-bins" - }, - "action_type": "TagDatasetAction", - "output_name": "bins" - } - }, - "tool_id": "toolshed.g2.bx.psu.edu/repos/mbernt/maxbin2/maxbin2/2.2.7+galaxy6", - "tool_shed_repository": { - "changeset_revision": "0917b2d6010d", - "name": "maxbin2", - "owner": "mbernt", - "tool_shed": "toolshed.g2.bx.psu.edu" - }, - "tool_state": "{\"adv\": {\"min_contig_length\": \"1000\", \"max_iteration\": \"50\", \"prob_threshold\": \"0.5\"}, \"assembly\": {\"type\": \"individual\", \"__current_case__\": 0, \"inputs\": {\"type\": \"abund\", \"__current_case__\": 1, \"abund\": {\"__class__\": \"ConnectedValue\"}}}, \"contig\": {\"__class__\": \"ConnectedValue\"}, \"output\": {\"plotmarker\": false, \"marker\": false, \"markers\": false, \"log\": false, \"markerset\": \"107\"}, \"__page__\": 0, \"__rerun_remap_job_id__\": null}", - "tool_uuid": null, - "tool_version": "2.2.7+galaxy6", - "type": "tool", - "uuid": "c2eca2a4-c8bc-4ea5-a7d7-acbc05643cf9", - "when": "$(inputs.when)", - "workflow_outputs": [ - { - "label": "MaxBin2 bins", - "output_name": "bins", - "uuid": "9a73928d-17dd-4785-aac0-56962096d9ee" - } - ] - }, - "47": { - "annotation": "Retrieve MaxBin2 results while allowing the MaxBin2 optional branch to be skipped.", - "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/pick_value/pick_value/0.2.0", - "errors": null, - "id": 47, - "input_connections": { - "style_cond|type_cond|pick_from_0|value": { - "id": 46, - "output_name": "bins" - } - }, - "inputs": [], - "label": "Optional bins bridge \u2014 MaxBin2", - "name": "Pick parameter value", - "outputs": [ - { - "name": "data_param", - "type": "input" - } - ], - "position": { - "left": 4600, - "top": 1620 - }, - "post_job_actions": {}, - "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/pick_value/pick_value/0.2.0", - "tool_shed_repository": { - "changeset_revision": "b19e21af9c52", - "name": "pick_value", - "owner": "iuc", - "tool_shed": "toolshed.g2.bx.psu.edu" - }, - "tool_state": "{\"style_cond\": {\"pick_style\": \"first\", \"__current_case__\": 0, \"type_cond\": {\"param_type\": \"data\", \"__current_case__\": 4, \"pick_from\": [{\"__index__\": 0, \"value\": {\"__class__\": \"ConnectedValue\"}}]}}, \"__page__\": 0, \"__rerun_remap_job_id__\": null}", - "tool_uuid": null, - "tool_version": "0.2.0", - "type": "tool", - "uuid": "2aea1104-eac4-4024-92a2-121507a1eef8", - "when": null, - "workflow_outputs": [] - }, - "48": { - "annotation": "Convert FASTA bin membership to a contig-to-bin table for DAS Tool.", - "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/fasta_to_contig2bin/Fasta_to_Contig2Bin/1.1.7+galaxy1", - "errors": null, - "id": 48, - "input_connections": { - "inputs": { - "id": 47, - "output_name": "data_param" - } - }, - "inputs": [], - "label": "Create contig-to-bin assignments from MaxBin2", - "name": "Converts genome bins in fasta format", - "outputs": [ - { - "name": "contigs2bin", - "type": "tabular" - } - ], - "position": { - "left": 4600, - "top": 1920 - }, - "post_job_actions": {}, - "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/fasta_to_contig2bin/Fasta_to_Contig2Bin/1.1.7+galaxy1", - "tool_shed_repository": { - "changeset_revision": "fb2bed0eb02f", - "name": "fasta_to_contig2bin", - "owner": "iuc", - "tool_shed": "toolshed.g2.bx.psu.edu" - }, - "tool_state": "{\"inputs\": {\"__class__\": \"ConnectedValue\"}, \"__page__\": 0, \"__rerun_remap_job_id__\": null}", - "tool_uuid": null, - "tool_version": "1.1.7+galaxy1", - "type": "tool", - "uuid": "f075f040-97e6-49f1-ae8d-d37da806c399", - "when": null, - "workflow_outputs": [] - }, - "49": { - "annotation": "Convert the selected bin refinement tool into a boolean that enables running DAS Tool only when requested.", - "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/map_param_value/map_param_value/0.2.0", - "errors": null, - "id": 49, - "input_connections": { - "input_param_type|input_param": { - "id": 7, - "output_name": "output" - } - }, - "inputs": [ - { - "description": "runtime parameter for tool Map parameter value", - "name": "input_param_type" - } - ], - "label": "Run DAS Tool?", - "name": "Map parameter value", - "outputs": [ - { - "name": "output_param_boolean", - "type": "expression.json" - } - ], - "position": { - "left": 5400, - "top": 420 - }, - "post_job_actions": {}, - "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/map_param_value/map_param_value/0.2.0", - "tool_shed_repository": { - "changeset_revision": "022a635f2283", - "name": "map_param_value", - "owner": "iuc", - "tool_shed": "toolshed.g2.bx.psu.edu" - }, - "tool_state": "{\"input_param_type\": {\"type\": \"text\", \"__current_case__\": 0, \"input_param\": {\"__class__\": \"ConnectedValue\"}, \"mappings\": [{\"__index__\": 0, \"from\": \"Both\", \"to\": \"True\"}, {\"__index__\": 1, \"from\": \"DAS Tool\", \"to\": \"True\"}, {\"__index__\": 2, \"from\": \"Binette\", \"to\": \"False\"}]}, \"output_param_type\": \"boolean\", \"unmapped\": {\"on_unmapped\": \"default\", \"__current_case__\": 2, \"default_value\": \"False\"}, \"__page__\": 0, \"__rerun_remap_job_id__\": null}", - "tool_uuid": null, - "tool_version": "0.2.0", - "type": "tool", - "uuid": "acd10a24-ae5b-4858-84d2-8cde933fe404", - "when": null, - "workflow_outputs": [] - }, - "50": { - "annotation": "Convert the selected bin refinement tool into a boolean that enables running Binette only when requested.", - "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/map_param_value/map_param_value/0.2.0", - "errors": null, - "id": 50, - "input_connections": { - "input_param_type|input_param": { - "id": 7, - "output_name": "output" - } - }, - "inputs": [ - { - "description": "runtime parameter for tool Map parameter value", - "name": "input_param_type" - } - ], - "label": "Run Binette?", - "name": "Map parameter value", - "outputs": [ - { - "name": "output_param_boolean", - "type": "expression.json" - } - ], - "position": { - "left": 5400, - "top": 720 - }, - "post_job_actions": {}, - "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/map_param_value/map_param_value/0.2.0", - "tool_shed_repository": { - "changeset_revision": "022a635f2283", - "name": "map_param_value", - "owner": "iuc", - "tool_shed": "toolshed.g2.bx.psu.edu" - }, - "tool_state": "{\"input_param_type\": {\"type\": \"text\", \"__current_case__\": 0, \"input_param\": {\"__class__\": \"ConnectedValue\"}, \"mappings\": [{\"__index__\": 0, \"from\": \"Both\", \"to\": \"True\"}, {\"__index__\": 1, \"from\": \"Binette\", \"to\": \"True\"}, {\"__index__\": 2, \"from\": \"DAS Tool\", \"to\": \"False\"}]}, \"output_param_type\": \"boolean\", \"unmapped\": {\"on_unmapped\": \"default\", \"__current_case__\": 2, \"default_value\": \"False\"}, \"__page__\": 0, \"__rerun_remap_job_id__\": null}", - "tool_uuid": null, - "tool_version": "0.2.0", - "type": "tool", - "uuid": "60bd76d8-9219-40f4-a5a3-4a062b71f995", - "when": null, - "workflow_outputs": [] - }, - "51": { - "annotation": "Assemble enabled binner results into one candidate list for refinement.", - "content_id": "__BUILD_LIST__", - "errors": null, - "id": 51, - "input_connections": { - "datasets_0|input": { - "id": 33, - "output_name": "contigs2bin" - }, - "datasets_1|input": { - "id": 39, - "output_name": "contigs2bin" - }, - "datasets_2|input": { - "id": 45, - "output_name": "contigs2bin" - }, - "datasets_3|input": { - "id": 48, - "output_name": "contigs2bin" - }, - "datasets_4|input": { - "id": 42, - "output_name": "contigs2bin" - }, - "when": { - "id": 50, - "output_name": "output_param_boolean" - } - }, - "inputs": [], - "label": "Collect candidate bins from enabled binners for Binette", - "name": "Build list", - "outputs": [ - { - "name": "output", - "type": "input" - } - ], - "position": { - "left": 5400, - "top": 1020 - }, - "post_job_actions": {}, - "tool_id": "__BUILD_LIST__", - "tool_state": "{\"datasets\": [{\"__index__\": 0, \"input\": {\"__class__\": \"ConnectedValue\"}, \"id_cond\": {\"id_select\": \"idx\", \"__current_case__\": 0}}, {\"__index__\": 1, \"input\": {\"__class__\": \"ConnectedValue\"}, \"id_cond\": {\"id_select\": \"idx\", \"__current_case__\": 0}}, {\"__index__\": 2, \"input\": {\"__class__\": \"ConnectedValue\"}, \"id_cond\": {\"id_select\": \"idx\", \"__current_case__\": 0}}, {\"__index__\": 3, \"input\": {\"__class__\": \"ConnectedValue\"}, \"id_cond\": {\"id_select\": \"idx\", \"__current_case__\": 0}}, {\"__index__\": 4, \"input\": {\"__class__\": \"ConnectedValue\"}, \"id_cond\": {\"id_select\": \"idx\", \"__current_case__\": 0}}], \"__page__\": 0, \"__rerun_remap_job_id__\": null}", - "tool_uuid": null, - "tool_version": "1.2.0", - "type": "tool", - "uuid": "4b782c6d-de7a-4753-8031-12c2130c27ca", - "when": "$(inputs.when)", - "workflow_outputs": [] - }, - "52": { - "annotation": "Score candidate contig assignments and select a non-redundant set of refined genome bins.", - "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/das_tool/das_tool/1.1.7+galaxy1", - "errors": null, - "id": 52, - "input_connections": { - "binning_0|bins": { - "id": 33, - "output_name": "contigs2bin" - }, - "binning_1|bins": { - "id": 39, - "output_name": "contigs2bin" - }, - "binning_2|bins": { - "id": 45, - "output_name": "contigs2bin" - }, - "binning_3|bins": { - "id": 48, - "output_name": "contigs2bin" - }, - "binning_4|bins": { - "id": 42, - "output_name": "contigs2bin" - }, - "contigs": { - "id": 0, - "output_name": "output" - }, - "when": { - "id": 49, - "output_name": "output_param_boolean" - } - }, - "inputs": [], - "label": "Refine candidate bins with DAS Tool", - "name": "DAS Tool", - "outputs": [ - { - "name": "bins", - "type": "input" - }, - { - "name": "summary", - "type": "tabular" - }, - { - "name": "contigs2bin", - "type": "tabular" - }, - { - "name": "log", - "type": "txt" - } - ], - "position": { - "left": 5400, - "top": 1320 - }, - "post_job_actions": { - "TagDatasetActionbins": { - "action_arguments": { - "tags": "das-tool-bins" - }, - "action_type": "TagDatasetAction", - "output_name": "bins" - }, - "TagDatasetActioncontigs2bin": { - "action_arguments": { - "tags": "das-tool-conitgs2bin-report" - }, - "action_type": "TagDatasetAction", - "output_name": "contigs2bin" - }, - "TagDatasetActionsummary": { - "action_arguments": { - "tags": "das-tool-summary" - }, - "action_type": "TagDatasetAction", - "output_name": "summary" - } - }, - "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/das_tool/das_tool/1.1.7+galaxy1", - "tool_shed_repository": { - "changeset_revision": "b048a987dd7d", - "name": "das_tool", - "owner": "iuc", - "tool_shed": "toolshed.g2.bx.psu.edu" - }, - "tool_state": "{\"adv\": {\"search_engine\": \"diamond\", \"proteins\": null, \"score_threshold\": \"0.5\", \"duplicate_penalty\": \"0.6\", \"megabin_penalty\": \"0.5\", \"max_iter_post_threshold\": \"10\"}, \"binning\": [{\"__index__\": 0, \"bins\": {\"__class__\": \"ConnectedValue\"}, \"labels\": \"CONCOCT\"}, {\"__index__\": 1, \"bins\": {\"__class__\": \"ConnectedValue\"}, \"labels\": \"COMEBin\"}, {\"__index__\": 2, \"bins\": {\"__class__\": \"ConnectedValue\"}, \"labels\": \"MetaBAT2\"}, {\"__index__\": 3, \"bins\": {\"__class__\": \"ConnectedValue\"}, \"labels\": \"MaxBin2\"}, {\"__index__\": 4, \"bins\": {\"__class__\": \"ConnectedValue\"}, \"labels\": \"SemiBin\"}], \"contigs\": {\"__class__\": \"ConnectedValue\"}, \"output\": {\"proteins\": false, \"write_bin_evals\": false, \"write_bins\": {\"write_bins\": \"--write_bins\", \"__current_case__\": 0, \"write_unbinned\": false}, \"debug\": false}, \"__page__\": 0, \"__rerun_remap_job_id__\": null}", - "tool_uuid": null, - "tool_version": "1.1.7+galaxy1", - "type": "tool", - "uuid": "35408f05-b203-4c65-b4ef-80ebfbbe1d58", - "when": "$(inputs.when)", - "workflow_outputs": [ - { - "label": "DAS Tool bins", - "output_name": "bins", - "uuid": "f6517089-9d22-4513-97e1-4268a3ad2766" - }, - { - "label": "DAS Tool contigs2bin report", - "output_name": "contigs2bin", - "uuid": "6e55e68d-96e7-4898-b6ae-f1110ea764a8" - }, - { - "label": "DAS Tool summary", - "output_name": "summary", - "uuid": "47867014-9b39-493e-8aac-5350afa6792f" - } - ] - }, - "53": { - "annotation": "Refine candidate FASTA bins using CheckM2 quality estimates and the selected completeness and contamination settings.", - "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/binette/binette/1.2.1+galaxy0", - "errors": null, - "id": 53, - "input_connections": { - "contig2bin_tables": { - "id": 51, - "output_name": "output" - }, - "contigs": { - "id": 0, - "output_name": "output" - }, - "database_type|datamanager": { - "id": 8, - "output_name": "output" - }, - "when": { - "id": 50, - "output_name": "output_param_boolean" - }, - "min_completeness": { - "id": 9, - "output_name": "output" - }, - "contamination_weight": { - "id": 10, - "output_name": "output" - } - }, - "inputs": [ - { - "description": "runtime parameter for tool Binette", - "name": "database_type" - } - ], - "label": "Refine candidate bins with Binette", - "name": "Binette", - "outputs": [ - { - "name": "bins", - "type": "input" - }, - { - "name": "quality", - "type": "input" - }, - { - "name": "final", - "type": "tabular" - } - ], - "position": { - "left": 5400, - "top": 1620 - }, - "post_job_actions": { - "TagDatasetActionbins": { - "action_arguments": { - "tags": "binette-bins" - }, - "action_type": "TagDatasetAction", - "output_name": "bins" - }, - "TagDatasetActionfinal": { - "action_arguments": { - "tags": "binette-post-quality-reports" - }, - "action_type": "TagDatasetAction", - "output_name": "final" - }, - "TagDatasetActionquality": { - "action_arguments": { - "tags": "binette-pre-quality-reports" - }, - "action_type": "TagDatasetAction", - "output_name": "quality" - } - }, - "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/binette/binette/1.2.1+galaxy0", - "tool_shed_repository": { - "changeset_revision": "9053a39d7994", - "name": "binette", - "owner": "iuc", - "tool_shed": "toolshed.g2.bx.psu.edu" - }, - "tool_state": "{\"contamination_weight\": {\"__class__\": \"ConnectedValue\"}, \"contig2bin_tables\": {\"__class__\": \"ConnectedValue\"}, \"contigs\": {\"__class__\": \"ConnectedValue\"}, \"database_type\": {\"is_select\": \"cached\", \"__current_case__\": 1, \"datamanager\": {\"__class__\": \"ConnectedValue\"}}, \"min_completeness\": {\"__class__\": \"ConnectedValue\"}, \"proteins\": null, \"__page__\": 0, \"__rerun_remap_job_id__\": null}", - "tool_uuid": null, - "tool_version": "1.2.1+galaxy0", - "type": "tool", - "uuid": "43c8ccb8-6c5f-4b64-87e1-1bd641f97079", - "when": "$(inputs.when)", - "workflow_outputs": [ - { - "label": "Binette input bin quality reports", - "output_name": "quality", - "uuid": "99e64da5-8e80-4eb9-a931-289055ec717e" - }, - { - "label": "Binette bins", - "output_name": "bins", - "uuid": "78d973e2-680e-4541-9920-4a08489125da" - }, - { - "label": "Binette final bin quality report", - "output_name": "final", - "uuid": "a10382ed-1d4b-45ad-89b5-79cd5041ec66" - } - ] - } - }, - "tags": [ - "agentic-foundry-mags" - ], - "uuid": "9b674961-0b3c-4f8f-97e6-f225e018198f", - "version": 1, - "readme": "# Multi-sample binning workflow\n\nThis workflow turns metagenomic assemblies into metagenomic bins with five binners (CONCOCT, MaxBin2, MetaBAT2, SemiBin and COMEBin), using cross-sample read coverage, and refines the bins with DAS Tool and/or Binette.\n\nIt performs cross-sample coverage estimation, binning and bin refinement for the [MAGs generation workflow](https://iwc.galaxyproject.org/workflow/mags-building-main/).\nA dedicated [learning pathway](https://galaxyproject.github.io/training-material/learning-pathways/mags.html) provides detailed guidance on MAG generation in Galaxy, including the binning tools used here.\n\n## How multi-sample binning works\n\nIn single-sample binning, each assembly is binned with the coverage of its own reads. In multi-sample binning, the reads of every sample are mapped against the assembly of every sample, so each contig gets one coverage profile per sample. Binners can then separate organisms that have similar composition but different abundance patterns across samples.\n\nTwo details are worth knowing before starting:\n\n- Each sample's reads are mapped against each sample's assembly, and every assembly is binned on its own. The workflow does not concatenate all assemblies into one co-assembly and split the resulting bins afterwards.\n- The mapping workload grows as N\u00b2 for N samples: N read sets \u00d7 N assemblies. Storage grows quickly too, even though the workflow reuses the original FASTQ datasets instead of writing intermediate read files.\n\nFor many samples, or for samples from unrelated environments where cross-sample coverage adds little, [single-sample binning](https://iwc.galaxyproject.org/workflow/single-sample-binning-main/) is the cheaper choice.\n\n## Inputs\n\n- **Assemblies**: a `list` collection of assemblies from any assembler (e.g. MEGAHIT or metaSPAdes).\n - Every sample's reads are mapped against every assembly, so the element identifiers of the reads and assemblies do not need to match.\n - The number of assemblies does not need to equal the number of read samples: a single co-assembly binned with the coverage of all samples is a valid input.\n- **Paired-end reads**: a `list:paired` collection with one element per sample.\n - Reads should be quality-trimmed and host-removed, e.g. with the IWC [short-read quality control](https://iwc.galaxyproject.org/workflow/short-read-qc-trimming-main/) and [host contamination removal](https://iwc.galaxyproject.org/workflow/host-contamination-removal-short-reads-main/) workflows.\n - The sample names become the coverage columns of the binners.\n- **Run COMEBin?**, **Run SemiBin?**, **Run CONCOCT?**, **Run MetaBAT2?** and **Run MaxBin2?** (default: `Yes`): enable or skip each binner independently.\n - Keep at least one binner enabled.\n - COMEBin is the most time- and resource-consuming binner.\n- **Bin refinement tool** (default: `Binette`): `Binette`, `DAS Tool` or `Both`.\n- **CheckM2 Database**: the CheckM2 reference database Binette uses to assess bin quality.\n- **Minimum MAG completeness percentage** (default: 40): the minimum bin completeness used by Binette. It does not filter DAS Tool output.\n- **Contamination weight (Binette)** (default: 2): the contamination penalty used in Binette's scoring.\n\n## Step 1: Coverage\n\nThis step produces the coverage information every binner needs.\n\n1. The read pairs of all samples are flattened into one flat list of files, and the assemblies are used as they are.\n2. A nested cross product pairs each assembly with every flattened read file.\n3. Apply Rules rebuilds, for each assembly, the paired reads of each sample and the matching assembly reference. These are collection operations on the original datasets: no interlaced or de-interlaced FASTQ file is written.\n4. Bowtie2 maps every sample against every assembly.\n5. Contig depths are summarised per assembly with `jgi_summarize_bam_contig_depths`, which yields one coverage matrix per assembly with the coverage and variance of every sample.\n6. CONCOCT additionally needs the coverage of its contig fragments, which is computed separately, and the mean read length, which is estimated from both mates of every sample with SeqKit statistics. The estimate is the read-count-weighted mean (total bases divided by total reads), not an average of the per-sample means. No manual read length is required.\n\nThe depth table produced by `jgi_summarize_bam_contig_depths` starts with `contigName` (contig identifier), `contigLen` (contig length) and `totalAvgDepth` (average depth across the input BAM files). Each read sample then contributes a depth column and a variance column. This gives each assembly's contigs a coverage profile across all read samples; \u201cJGI depth table\u201d refers to this format, not to an additional input database.\n\n## Step 2: Binning\n\nEach assembly is binned separately by every enabled binner.\n\n| Binner | Inputs used |\n| --- | --- |\n| SemiBin | Contig composition and cross-sample coverage, in co-binning mode |\n| CONCOCT | Contig fragments, their coverage table and the estimated read length; fragment clusters are merged back to contigs |\n| MetaBAT2 | Contig composition and cross-sample coverage |\n| MaxBin2 | Contig composition, cross-sample coverage and marker genes |\n| COMEBin | Deep-learning binning from contig sequence and coverage; optional |\n\nA binner set to `No` is skipped, and its candidate results are replaced by empty collections so that the refinement steps keep their structure. Raw binner outputs are only available for binners that ran.\n\n## Step 3: Refinement\n\nThe candidate bins are refined with one or both refinement tools:\n\n- **DAS Tool** scores the contig-to-bin assignments of all enabled binners and selects a non-redundant set of bins.\n- **Binette** evaluates the candidate FASTA bins with CheckM2 and refines them with the selected completeness and contamination settings.\n\nSelecting **Both** runs DAS Tool and Binette independently on the candidate bins, allowing you to benefit from their different refinement approaches. The two output sets must then be combined and dereplicated downstream; this workflow does not perform dereplication. Dereplication reduces redundant genomes but does not enforce unique contig membership, so contigs can still end up in multiple retained bins. If exclusive contig assignments are required, inspect and resolve overlaps explicitly.\n\n## Outputs\n\n- **Coverage depth matrices**: one depth table per assembly, with the coverage of all original samples.\n- **CONCOCT bins**, **MaxBin2 bins**, **MetaBAT2 bins**, **SemiBin bins** and **COMEBin bins** (when COMEBin ran): one list of bins per assembly.\n- **DAS Tool bins**, **DAS Tool summary** and **DAS Tool contigs2bin report** (when DAS Tool ran): the refined bins, a per-bin summary of completeness and redundancy based on single-copy genes, and the contig-to-bin assignments.\n- **Binette bins**, **Binette input bin quality reports** and **Binette final bin quality report** (when Binette ran): the refined bins, the CheckM2 quality of the bins from each binner, and the CheckM2 quality of the final bins.\n\n## Why use this workflow\n\nBinning is a separate workflow here, so it can be reused by larger analysis pipelines without copying or rewiring it.\n\n- It keeps the binning parameters and outputs visible and controllable.\n- It can be combined with different upstream and downstream workflows, e.g. taxonomic classification, genome annotation, functional analysis or benchmarking.\n- It avoids duplicating binning logic inside every pipeline that needs it.\n\nThe IWC [MAGs generation workflow](https://iwc.galaxyproject.org/workflow/mags-building-main/) is the comprehensive alternative: it assembles reads, bins with multiple tools, dereplicates the MAGs and reports their quality and abundance in one workflow. Use it when you want MAGs and their evaluation without a specialised downstream workflow, and use this binning workflow when binning is one component of a larger analysis.\n\nThrough the workflow editor, an upstream or downstream workflow can also restrict this one, for example to a single refinement tool.\n\n## Funding\n\nThis workflow was developed as part of the [**FAIRyMAGs** project](https://elixir-europe.org/how-we-work/scientific-programme/science/bfsp/fairymags), funded as a commissioned service of the [**Biodiversity, Food Security and Pathogens (BFSP) ELIXIR Scientific Programme 2024\u20132028**](https://elixir-europe.org/how-we-work/scientific-programme/science/bfsp).\n\nThe project was also supported by the **European Galaxy Server**, funded by the German Federal Ministry of Education and Research (BMBF; 031 A538A de.NBI-RBC) and the **Ministry of Science, Research and the Arts Baden-W\u00fcrttemberg (MWK)** within the framework of **LIBIS/de.NBI Freiburg**.\n" -} +{"a_galaxy_workflow": "true", "annotation": "This workflow performs multi-sample binning of metagenomic assemblies with CONCOCT, MaxBin2, MetaBAT2, SemiBin and optionally COMEBin, using cross-sample read coverage, and refines the bins with DAS Tool and/or Binette", "comments": [{"id": 0, "type": "frame", "color": "blue", "position": [110, 80], "size": [460, 3520], "data": {"title": "Inputs and binner selection"}, "child_steps": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "child_comments": [1]}, {"id": 1, "type": "markdown", "color": "blue", "position": [140, 115], "size": [400, 260], "data": {"text": "## 1. Inputs\n\nSupply assemblies and quality-trimmed, host-removed paired-end reads. Every binner is enabled by default: select **No** to skip one. Choose the refinement tool and the Binette settings."}}, {"id": 2, "type": "frame", "color": "turquoise", "position": [710, 80], "size": [1260, 3220], "data": {"title": "Coverage"}, "child_steps": [16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28], "child_comments": [3]}, {"id": 3, "type": "markdown", "color": "turquoise", "position": [740, 115], "size": [900, 260], "data": {"text": "## 2. Coverage\n\nRead pairs are flattened and crossed with the assemblies, then Apply Rules rebuilds the paired reads and their references per assembly and sample without rewriting FASTQ files. Bowtie2 maps every sample against every assembly. Contig depths and CONCOCT fragment coverage summarise the alignments, and the CONCOCT read length is estimated from both mates."}}, {"id": 4, "type": "frame", "color": "lime", "position": [2620, 80], "size": [2410, 3220], "data": {"title": "Binning"}, "child_steps": [11, 12, 13, 14, 15, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48], "child_comments": [5]}, {"id": 5, "type": "markdown", "color": "lime", "position": [2650, 115], "size": [1100, 260], "data": {"text": "## 3. Binning\n\nEach enabled binner clusters contigs into candidate bins from the cross-sample depth matrix. CONCOCT works on fragments with its own coverage table and merges them back to contigs. Disabled binners are bridged with empty collections so the downstream steps keep their structure."}}, {"id": 6, "type": "frame", "color": "orange", "position": [5370, 80], "size": [460, 1720], "data": {"title": "Refinement"}, "child_steps": [49, 50, 51, 52, 53], "child_comments": [7]}, {"id": 7, "type": "markdown", "color": "orange", "position": [5400, 115], "size": [400, 260], "data": {"text": "## 4. Refinement\n\nCandidate contig assignments are collected for DAS Tool and candidate FASTA bins for Binette. Only the selected refinement tool runs. The refined bins are returned with their quality reports and coverage matrices."}}], "creator": [{"class": "Person", "identifier": "https://orcid.org/0000-0003-2982-388X", "name": "Paul Zierep"}, {"class": "Person", "identifier": "https://orcid.org/0009-0004-0382-2023", "name": "Santino Faack"}, {"class": "Organization", "name": "FAIRyMAGs consortium", "url": "https://github.com/usegalaxy-eu/FAIRyMAGs"}], "format-version": "0.1", "license": "MIT", "release": "1.1", "name": "Multi-sample binning", "report": {"markdown": "\n# Workflow Execution Report\n\n## Workflow Inputs\n```galaxy\ninvocation_inputs()\n```\n\n## Workflow Outputs\n```galaxy\ninvocation_outputs()\n```\n\n## Workflow\n```galaxy\nworkflow_display()\n```\n"}, "steps": {"0": {"annotation": "Assemblies from any assembler (e.g. MEGAHIT or metaSPAdes). Identifiers do not need to match the read samples.", "content_id": null, "errors": null, "id": 0, "input_connections": {}, "inputs": [{"description": "Assemblies from any assembler (e.g. MEGAHIT or metaSPAdes). Identifiers do not need to match the read samples.", "name": "Assemblies"}], "label": "Assemblies", "name": "Input dataset collection", "outputs": [], "position": {"left": 140, "top": 420}, "tool_id": null, "tool_state": "{\"optional\": false, \"tag\": null, \"collection_type\": \"list\", \"fields\": null, \"column_definitions\": null}", "tool_version": null, "type": "data_collection_input", "uuid": "4fe37b5b-053f-4e82-92bc-e109f9c2fda5", "when": null, "workflow_outputs": []}, "1": {"annotation": "Paired-end reads of each sample (list:paired), quality-trimmed and host-removed. Each sample's reads are mapped against every assembly. Multi-sample binning is most effective with up to ~20 samples (performance peaks around 20; Mineeva et al., Nat. Commun. 2025, https://doi.org/10.1038/s41467-026-71521-w). Using more than 20 samples can lead to extensive resource usage (N\u00b2 mappings, large storage). For more than 20 samples or unrelated environments, single-sample binning may be cheaper.", "content_id": null, "errors": null, "id": 1, "input_connections": {}, "inputs": [{"description": "Paired-end reads of each sample (list:paired), quality-trimmed and host-removed. Each sample's reads are mapped against every assembly.", "name": "Paired-end reads"}], "label": "Paired-end reads", "name": "Input dataset collection", "outputs": [], "position": {"left": 140, "top": 720}, "tool_id": null, "tool_state": "{\"optional\": false, \"tag\": null, \"collection_type\": \"list:paired\", \"fields\": null, \"column_definitions\": null}", "tool_version": null, "type": "data_collection_input", "uuid": "615f6015-446b-4af3-ad4a-afff158c58d0", "when": null, "workflow_outputs": []}, "2": {"annotation": "By default, all binners are enabled. Select No to disable COMEBin, the most resource-consuming binner.", "content_id": null, "errors": null, "id": 2, "input_connections": {}, "inputs": [{"description": "By default, all binners are enabled. Select No to disable COMEBin, the most resource-consuming binner.", "name": "Run COMEBin?"}], "label": "Run COMEBin?", "name": "Input parameter", "outputs": [], "position": {"left": 140, "top": 1020}, "tool_id": null, "tool_state": "{\"multiple\": false, \"validators\": [], \"restrictions\": [\"Yes\", \"No\"], \"parameter_type\": \"text\", \"optional\": false, \"default\": \"Yes\"}", "tool_version": null, "type": "parameter_input", "uuid": "875c3765-81ca-42a2-a8af-9eea17a90ac8", "when": null, "workflow_outputs": []}, "3": {"annotation": "By default, all binners are enabled. Select No to disable SemiBin.", "content_id": null, "errors": null, "id": 3, "input_connections": {}, "inputs": [{"description": "By default, all binners are enabled. Select No to disable SemiBin.", "name": "Run SemiBin?"}], "label": "Run SemiBin?", "name": "Input parameter", "outputs": [], "position": {"left": 140, "top": 1320}, "tool_id": null, "tool_state": "{\"multiple\": false, \"validators\": [], \"restrictions\": [\"Yes\", \"No\"], \"parameter_type\": \"text\", \"optional\": false, \"default\": \"Yes\"}", "tool_version": null, "type": "parameter_input", "uuid": "74f1e9bd-4da6-4192-befd-7cbd7c631abd", "when": null, "workflow_outputs": []}, "4": {"annotation": "By default, all binners are enabled. Select No to disable CONCOCT.", "content_id": null, "errors": null, "id": 4, "input_connections": {}, "inputs": [{"description": "By default, all binners are enabled. Select No to disable CONCOCT.", "name": "Run CONCOCT?"}], "label": "Run CONCOCT?", "name": "Input parameter", "outputs": [], "position": {"left": 140, "top": 1620}, "tool_id": null, "tool_state": "{\"multiple\": false, \"validators\": [], \"restrictions\": [\"Yes\", \"No\"], \"parameter_type\": \"text\", \"optional\": false, \"default\": \"Yes\"}", "tool_version": null, "type": "parameter_input", "uuid": "d98d7796-08cb-4dba-82bc-dacdd65a602a", "when": null, "workflow_outputs": []}, "5": {"annotation": "By default, all binners are enabled. Select No to disable MetaBAT2.", "content_id": null, "errors": null, "id": 5, "input_connections": {}, "inputs": [{"description": "By default, all binners are enabled. Select No to disable MetaBAT2.", "name": "Run MetaBAT2?"}], "label": "Run MetaBAT2?", "name": "Input parameter", "outputs": [], "position": {"left": 140, "top": 1920}, "tool_id": null, "tool_state": "{\"multiple\": false, \"validators\": [], \"restrictions\": [\"Yes\", \"No\"], \"parameter_type\": \"text\", \"optional\": false, \"default\": \"Yes\"}", "tool_version": null, "type": "parameter_input", "uuid": "1b0313d7-ff9d-4e33-9718-2b4033ee3ab7", "when": null, "workflow_outputs": []}, "6": {"annotation": "By default, all binners are enabled. Select No to disable MaxBin2.", "content_id": null, "errors": null, "id": 6, "input_connections": {}, "inputs": [{"description": "By default, all binners are enabled. Select No to disable MaxBin2.", "name": "Run MaxBin2?"}], "label": "Run MaxBin2?", "name": "Input parameter", "outputs": [], "position": {"left": 140, "top": 2220}, "tool_id": null, "tool_state": "{\"multiple\": false, \"validators\": [], \"restrictions\": [\"Yes\", \"No\"], \"parameter_type\": \"text\", \"optional\": false, \"default\": \"Yes\"}", "tool_version": null, "type": "parameter_input", "uuid": "b6e29622-ab1c-449e-8a0d-efa2090e3fe8", "when": null, "workflow_outputs": []}, "7": {"annotation": "Choose Binette, DAS Tool or Both to refine the candidate bins.", "content_id": null, "errors": null, "id": 7, "input_connections": {}, "inputs": [{"description": "Choose Binette, DAS Tool or Both to refine the candidate bins.", "name": "Bin refinement tool"}], "label": "Bin refinement tool", "name": "Input parameter", "outputs": [], "position": {"left": 140, "top": 2520}, "tool_id": null, "tool_state": "{\"multiple\": false, \"validators\": [], \"restrictions\": [\"Binette\", \"DAS Tool\", \"Both\"], \"parameter_type\": \"text\", \"optional\": false, \"default\": \"Binette\"}", "tool_version": null, "type": "parameter_input", "uuid": "29651e13-0037-4477-a4d3-d8751fd97aa4", "when": null, "workflow_outputs": []}, "8": {"annotation": "CheckM2 reference database used by Binette to assess bin quality.", "content_id": null, "errors": null, "id": 8, "input_connections": {}, "inputs": [{"description": "CheckM2 reference database used by Binette to assess bin quality.", "name": "CheckM2 Database"}], "label": "CheckM2 Database", "name": "Input parameter", "outputs": [], "position": {"left": 140, "top": 2820}, "tool_id": null, "tool_state": "{\"multiple\": false, \"validators\": [], \"restrictOnConnections\": true, \"parameter_type\": \"text\", \"optional\": false}", "tool_version": null, "type": "parameter_input", "uuid": "8cef62db-3352-4d17-9a00-f3de3a9990a8", "when": null, "workflow_outputs": []}, "9": {"annotation": "Binette retains refined bins meeting this minimum CheckM2 completeness percentage; this setting does not filter DAS Tool output.", "content_id": null, "errors": null, "id": 9, "input_connections": {}, "inputs": [{"description": "Minimum bin completeness percentage used by Binette.", "name": "Minimum MAG completeness percentage"}], "label": "Minimum MAG completeness percentage", "name": "Input parameter", "outputs": [], "position": {"left": 140, "top": 3120}, "tool_id": null, "tool_state": "{\"default\": 40, \"validators\": [{\"min\": null, \"max\": null, \"negate\": false, \"type\": \"in_range\"}], \"parameter_type\": \"integer\", \"optional\": false}", "tool_version": null, "type": "parameter_input", "uuid": "bb6970c2-a90e-4e7c-9956-712bb57b8fd2", "when": null, "workflow_outputs": []}, "10": {"annotation": "Contamination penalty used in Binette's scoring. A low weight favours complete bins over low-contamination bins (--contamination_weight).", "content_id": null, "errors": null, "id": 10, "input_connections": {}, "inputs": [{"description": "Contamination penalty used in Binette's scoring. A low weight favours complete bins over low-contamination bins (--contamination_weight).", "name": "Contamination weight (Binette)"}], "label": "Contamination weight (Binette)", "name": "Input parameter", "outputs": [], "position": {"left": 140, "top": 3420}, "tool_id": null, "tool_state": "{\"default\": 2, \"validators\": [{\"min\": null, \"max\": null, \"negate\": false, \"type\": \"in_range\"}], \"parameter_type\": \"integer\", \"optional\": false}", "tool_version": null, "type": "parameter_input", "uuid": "cc7e7b6a-c6c3-402a-bf36-362369856db9", "when": null, "workflow_outputs": []}, "11": {"annotation": "Convert the Yes/No choice into a boolean that enables running COMEBin only when requested.", "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/map_param_value/map_param_value/0.2.0", "errors": null, "id": 11, "input_connections": {"input_param_type|input_param": {"id": 2, "output_name": "output"}}, "inputs": [{"description": "runtime parameter for tool Map parameter value", "name": "input_param_type"}], "label": "COMEBin binning gate", "name": "Map parameter value", "outputs": [{"name": "output_param_boolean", "type": "expression.json"}], "position": {"left": 2650, "top": 420}, "post_job_actions": {}, "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/map_param_value/map_param_value/0.2.0", "tool_shed_repository": {"changeset_revision": "022a635f2283", "name": "map_param_value", "owner": "iuc", "tool_shed": "toolshed.g2.bx.psu.edu"}, "tool_state": "{\"input_param_type\": {\"type\": \"text\", \"__current_case__\": 0, \"input_param\": {\"__class__\": \"ConnectedValue\"}, \"mappings\": [{\"__index__\": 0, \"from\": \"Yes\", \"to\": \"True\"}, {\"__index__\": 1, \"from\": \"No\", \"to\": \"False\"}]}, \"output_param_type\": \"boolean\", \"unmapped\": {\"on_unmapped\": \"default\", \"__current_case__\": 2, \"default_value\": \"False\"}, \"__page__\": 0, \"__rerun_remap_job_id__\": null}", "tool_uuid": null, "tool_version": "0.2.0", "type": "tool", "uuid": "ad3ce4e4-e205-4d5e-88c7-f29e518b8f16", "when": null, "workflow_outputs": []}, "12": {"annotation": "Convert the Yes/No choice into a boolean that enables running SemiBin only when requested.", "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/map_param_value/map_param_value/0.2.0", "errors": null, "id": 12, "input_connections": {"input_param_type|input_param": {"id": 3, "output_name": "output"}}, "inputs": [{"description": "runtime parameter for tool Map parameter value", "name": "input_param_type"}], "label": "SemiBin binning gate", "name": "Map parameter value", "outputs": [{"name": "output_param_boolean", "type": "expression.json"}], "position": {"left": 2650, "top": 1320}, "post_job_actions": {}, "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/map_param_value/map_param_value/0.2.0", "tool_shed_repository": {"changeset_revision": "022a635f2283", "name": "map_param_value", "owner": "iuc", "tool_shed": "toolshed.g2.bx.psu.edu"}, "tool_state": "{\"input_param_type\": {\"type\": \"text\", \"__current_case__\": 0, \"input_param\": {\"__class__\": \"ConnectedValue\"}, \"mappings\": [{\"__index__\": 0, \"from\": \"Yes\", \"to\": \"True\"}, {\"__index__\": 1, \"from\": \"No\", \"to\": \"False\"}]}, \"output_param_type\": \"boolean\", \"unmapped\": {\"on_unmapped\": \"default\", \"__current_case__\": 2, \"default_value\": \"False\"}, \"__page__\": 0, \"__rerun_remap_job_id__\": null}", "tool_uuid": null, "tool_version": "0.2.0", "type": "tool", "uuid": "24240237-3764-44a9-9850-53bb6acd7bfa", "when": null, "workflow_outputs": []}, "13": {"annotation": "Convert the Yes/No choice into a boolean that enables running CONCOCT only when requested.", "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/map_param_value/map_param_value/0.2.0", "errors": null, "id": 13, "input_connections": {"input_param_type|input_param": {"id": 4, "output_name": "output"}}, "inputs": [{"description": "runtime parameter for tool Map parameter value", "name": "input_param_type"}], "label": "CONCOCT binning gate", "name": "Map parameter value", "outputs": [{"name": "output_param_boolean", "type": "expression.json"}], "position": {"left": 2650, "top": 720}, "post_job_actions": {}, "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/map_param_value/map_param_value/0.2.0", "tool_shed_repository": {"changeset_revision": "022a635f2283", "name": "map_param_value", "owner": "iuc", "tool_shed": "toolshed.g2.bx.psu.edu"}, "tool_state": "{\"input_param_type\": {\"type\": \"text\", \"__current_case__\": 0, \"input_param\": {\"__class__\": \"ConnectedValue\"}, \"mappings\": [{\"__index__\": 0, \"from\": \"Yes\", \"to\": \"True\"}, {\"__index__\": 1, \"from\": \"No\", \"to\": \"False\"}]}, \"output_param_type\": \"boolean\", \"unmapped\": {\"on_unmapped\": \"default\", \"__current_case__\": 2, \"default_value\": \"False\"}, \"__page__\": 0, \"__rerun_remap_job_id__\": null}", "tool_uuid": null, "tool_version": "0.2.0", "type": "tool", "uuid": "ce513036-b730-4d87-bf9a-31dc1cc18445", "when": null, "workflow_outputs": []}, "14": {"annotation": "Convert the Yes/No choice into a boolean that enables running MetaBAT2 only when requested.", "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/map_param_value/map_param_value/0.2.0", "errors": null, "id": 14, "input_connections": {"input_param_type|input_param": {"id": 5, "output_name": "output"}}, "inputs": [{"description": "runtime parameter for tool Map parameter value", "name": "input_param_type"}], "label": "MetaBAT2 binning gate", "name": "Map parameter value", "outputs": [{"name": "output_param_boolean", "type": "expression.json"}], "position": {"left": 2650, "top": 2220}, "post_job_actions": {}, "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/map_param_value/map_param_value/0.2.0", "tool_shed_repository": {"changeset_revision": "022a635f2283", "name": "map_param_value", "owner": "iuc", "tool_shed": "toolshed.g2.bx.psu.edu"}, "tool_state": "{\"input_param_type\": {\"type\": \"text\", \"__current_case__\": 0, \"input_param\": {\"__class__\": \"ConnectedValue\"}, \"mappings\": [{\"__index__\": 0, \"from\": \"Yes\", \"to\": \"True\"}, {\"__index__\": 1, \"from\": \"No\", \"to\": \"False\"}]}, \"output_param_type\": \"boolean\", \"unmapped\": {\"on_unmapped\": \"default\", \"__current_case__\": 2, \"default_value\": \"False\"}, \"__page__\": 0, \"__rerun_remap_job_id__\": null}", "tool_uuid": null, "tool_version": "0.2.0", "type": "tool", "uuid": "0404fc2e-4e75-4d8e-a7bc-7931f3acad2d", "when": null, "workflow_outputs": []}, "15": {"annotation": "Convert the Yes/No choice into a boolean that enables running MaxBin2 only when requested.", "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/map_param_value/map_param_value/0.2.0", "errors": null, "id": 15, "input_connections": {"input_param_type|input_param": {"id": 6, "output_name": "output"}}, "inputs": [{"description": "runtime parameter for tool Map parameter value", "name": "input_param_type"}], "label": "MaxBin2 binning gate", "name": "Map parameter value", "outputs": [{"name": "output_param_boolean", "type": "expression.json"}], "position": {"left": 2650, "top": 3120}, "post_job_actions": {}, "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/map_param_value/map_param_value/0.2.0", "tool_shed_repository": {"changeset_revision": "022a635f2283", "name": "map_param_value", "owner": "iuc", "tool_shed": "toolshed.g2.bx.psu.edu"}, "tool_state": "{\"input_param_type\": {\"type\": \"text\", \"__current_case__\": 0, \"input_param\": {\"__class__\": \"ConnectedValue\"}, \"mappings\": [{\"__index__\": 0, \"from\": \"Yes\", \"to\": \"True\"}, {\"__index__\": 1, \"from\": \"No\", \"to\": \"False\"}]}, \"output_param_type\": \"boolean\", \"unmapped\": {\"on_unmapped\": \"default\", \"__current_case__\": 2, \"default_value\": \"False\"}, \"__page__\": 0, \"__rerun_remap_job_id__\": null}", "tool_uuid": null, "tool_version": "0.2.0", "type": "tool", "uuid": "222d01bf-3d52-4607-b01e-7001e3ba87d9", "when": null, "workflow_outputs": []}, "16": {"annotation": "Remove collection nesting so results can be pooled or combined; existing datasets are reused.", "content_id": "__FLATTEN__", "errors": null, "id": 16, "input_connections": {"input": {"id": 1, "output_name": "output"}}, "inputs": [], "label": "Flatten read pair collection", "name": "Flatten collection", "outputs": [{"name": "output", "type": "input"}], "position": {"left": 740, "top": 420}, "tool_id": "__FLATTEN__", "tool_state": "{\"input\": {\"__class__\": \"ConnectedValue\"}, \"join_identifier\": \"_\", \"__page__\": null, \"__rerun_remap_job_id__\": null}", "tool_version": "1.0.0", "type": "tool", "uuid": "13edb836-8c44-4618-b463-72b05e40a155", "when": null, "workflow_outputs": []}, "17": {"annotation": "Pair each assembly with every forward and reverse read dataset, without rewriting FASTQ data.", "content_id": "__CROSS_PRODUCT_NESTED__", "errors": null, "id": 17, "input_connections": {"input_a": {"id": 0, "output_name": "output"}, "input_b": {"id": 16, "output_name": "output"}}, "inputs": [], "label": "Cross product of assemblies and flattened reads", "name": "Nested Cross Product", "outputs": [{"name": "output_a", "type": "input"}, {"name": "output_b", "type": "input"}], "position": {"left": 740, "top": 720}, "post_job_actions": {}, "tool_id": "__CROSS_PRODUCT_NESTED__", "tool_state": "{\"input_a\": {\"__class__\": \"ConnectedValue\"}, \"input_b\": {\"__class__\": \"ConnectedValue\"}, \"__page__\": 0, \"__rerun_remap_job_id__\": null}", "tool_uuid": null, "tool_version": "1.0.0", "type": "tool", "uuid": "147ac3fb-e9f7-432b-8a54-090440040941", "when": null, "workflow_outputs": []}, "18": {"annotation": "Use collection identifiers to arrange datasets into paired reads per assembly; sequence files are not rewritten.", "content_id": "__APPLY_RULES__", "errors": null, "id": 18, "input_connections": {"input": {"id": 17, "output_name": "output_b"}}, "inputs": [], "label": "Rebuild read pairs per assembly", "name": "Apply rules", "outputs": [{"name": "output", "type": "input"}], "position": {"left": 740, "top": 1020}, "tool_id": "__APPLY_RULES__", "tool_state": "{\"input\": {\"__class__\": \"ConnectedValue\"}, \"rules\": {\"rules\": [{\"type\": \"add_column_metadata\", \"value\": \"identifier0\"}, {\"type\": \"add_column_metadata\", \"value\": \"identifier1\"}, {\"type\": \"add_column_regex\", \"target_column\": 1, \"expression\": \"^(.+)_(forward|reverse)$\", \"group_count\": 2}], \"mapping\": [{\"type\": \"list_identifiers\", \"columns\": [0, 2]}, {\"type\": \"paired_identifier\", \"columns\": [3]}]}, \"__page__\": null, \"__rerun_remap_job_id__\": null}", "tool_version": "1.1.0", "type": "tool", "uuid": "3d632024-5937-4665-b8a0-9c4d094762ad", "when": null, "workflow_outputs": []}, "19": {"annotation": "Use collection identifiers to arrange the references per assembly and read sample; sequence files are not rewritten.", "content_id": "__APPLY_RULES__", "errors": null, "id": 19, "input_connections": {"input": {"id": 17, "output_name": "output_a"}}, "inputs": [], "label": "References per assembly and read sample", "name": "Apply rules", "outputs": [{"name": "output", "type": "input"}], "position": {"left": 740, "top": 1320}, "tool_id": "__APPLY_RULES__", "tool_state": "{\"input\": {\"__class__\": \"ConnectedValue\"}, \"rules\": {\"rules\": [{\"type\": \"add_column_metadata\", \"value\": \"identifier0\"}, {\"type\": \"add_column_metadata\", \"value\": \"identifier1\"}, {\"type\": \"add_filter_regex\", \"target_column\": 1, \"expression\": \"_forward$\", \"invert\": false}, {\"type\": \"add_column_regex\", \"target_column\": 1, \"expression\": \"^(.+)_(forward|reverse)$\", \"group_count\": 2}], \"mapping\": [{\"type\": \"list_identifiers\", \"columns\": [0, 2]}]}, \"__page__\": null, \"__rerun_remap_job_id__\": null}", "tool_version": "1.1.0", "type": "tool", "uuid": "7d49bad3-3650-4ac9-a5c4-d9c0090b7375", "when": null, "workflow_outputs": []}, "20": {"annotation": "Separate forward and reverse mates while retaining sample identifiers.", "content_id": "__UNZIP_COLLECTION__", "errors": null, "id": 20, "input_connections": {"input": {"id": 1, "output_name": "output"}}, "inputs": [], "label": "Unzip reads for automatic read-length estimation", "name": "Unzip collection", "outputs": [{"name": "forward", "type": "input"}, {"name": "reverse", "type": "input"}], "position": {"left": 740, "top": 1620}, "post_job_actions": {}, "tool_id": "__UNZIP_COLLECTION__", "tool_state": "{\"input\": {\"__class__\": \"ConnectedValue\"}, \"__page__\": 0, \"__rerun_remap_job_id__\": null}", "tool_uuid": null, "tool_version": "1.0.0", "type": "tool", "uuid": "ec3c8493-c175-462d-a760-9d00c6ff6c69", "when": null, "workflow_outputs": []}, "21": {"type": "tool", "name": "SeqKit statistics", "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/seqkit_stats/seqkit_stats/2.8.1+galaxy0", "tool_shed_repository": {"changeset_revision": "812705bcf39c", "name": "seqkit_stats", "owner": "iuc", "tool_shed": "toolshed.g2.bx.psu.edu"}, "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/seqkit_stats/seqkit_stats/2.8.1+galaxy0", "tool_version": "2.8.1+galaxy0", "tool_state": "{\"input\": {\"__class__\": \"ConnectedValue\"}, \"all\": false, \"basename\": true, \"skip_err\": false, \"tabular\": true}", "input_connections": {"input": {"id": 20, "output_name": "forward"}}, "inputs": [], "outputs": [], "annotation": "Count sequences and bases for read-count-weighted read-length estimation on forward reads.", "position": {"left": 740, "top": 1920}, "id": 21, "uuid": "7e279609-78fb-4228-bde2-64b430f05a4b", "label": "Read-length statistics \u2014 forward", "workflow_outputs": []}, "22": {"type": "tool", "name": "SeqKit statistics", "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/seqkit_stats/seqkit_stats/2.8.1+galaxy0", "tool_shed_repository": {"changeset_revision": "812705bcf39c", "name": "seqkit_stats", "owner": "iuc", "tool_shed": "toolshed.g2.bx.psu.edu"}, "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/seqkit_stats/seqkit_stats/2.8.1+galaxy0", "tool_version": "2.8.1+galaxy0", "tool_state": "{\"input\": {\"__class__\": \"ConnectedValue\"}, \"all\": false, \"basename\": true, \"skip_err\": false, \"tabular\": true}", "input_connections": {"input": {"id": 20, "output_name": "reverse"}}, "inputs": [], "outputs": [], "annotation": "Count sequences and bases for read-count-weighted read-length estimation on reverse reads.", "position": {"left": 740, "top": 2220}, "id": 22, "uuid": "f4127452-4189-431b-8a92-303f9669b0c5", "label": "Read-length statistics \u2014 reverse", "workflow_outputs": []}, "23": {"type": "tool", "name": "Concatenate datasets", "tool_id": "toolshed.g2.bx.psu.edu/repos/bgruening/text_processing/tp_cat/0.1.0", "tool_shed_repository": {"changeset_revision": "ddf54b12c295", "name": "text_processing", "owner": "bgruening", "tool_shed": "toolshed.g2.bx.psu.edu"}, "content_id": "toolshed.g2.bx.psu.edu/repos/bgruening/text_processing/tp_cat/0.1.0", "tool_version": "0.1.0", "tool_state": "{\"inputs\": [{\"__class__\": \"ConnectedValue\"}], \"queries\": [{\"__index__\": 0, \"inputs2\": [{\"__class__\": \"ConnectedValue\"}]}]}", "input_connections": {"inputs": {"id": 21, "output_name": "output"}, "queries_0|inputs2": {"id": 22, "output_name": "output"}}, "inputs": [], "outputs": [], "annotation": "Merge both mates' statistics into one table.", "position": {"left": 740, "top": 2520}, "id": 23, "uuid": "93ee4832-f528-498c-8590-8c95c882bce7", "label": "Combine read-length statistics", "workflow_outputs": []}, "24": {"type": "tool", "name": "Text reformatting", "tool_id": "toolshed.g2.bx.psu.edu/repos/bgruening/text_processing/tp_awk_tool/9.11+galaxy0", "tool_shed_repository": {"changeset_revision": "30b60202d990", "name": "text_processing", "owner": "bgruening", "tool_shed": "toolshed.g2.bx.psu.edu"}, "content_id": "toolshed.g2.bx.psu.edu/repos/bgruening/text_processing/tp_awk_tool/9.11+galaxy0", "tool_version": "9.11+galaxy0", "tool_state": "{\"infile\": {\"__class__\": \"ConnectedValue\"}, \"code\": \"BEGIN{FS=\\\"\\t\\\"} $4 ~ /^[0-9]+$/ {n += $4; total += $5} END{if(n<1) exit 1; print int(total/n+0.5)}\", \"variables\": []}", "input_connections": {"infile": {"id": 23, "output_name": "out_file1"}}, "inputs": [], "outputs": [], "annotation": "Divide total bases by total reads across both mates and round the mean read length.", "position": {"left": 740, "top": 2820}, "id": 24, "uuid": "a8cacc18-37f2-4367-84c6-82da65a2e262", "label": "Compute read-count-weighted mean length (both mates)", "workflow_outputs": []}, "25": {"type": "tool", "name": "Parse parameter value", "tool_id": "param_value_from_file", "content_id": "param_value_from_file", "tool_version": "0.1.0", "tool_state": "{\"input1\": {\"__class__\": \"ConnectedValue\"}, \"param_type\": \"integer\", \"remove_newlines\": true}", "input_connections": {"input1": {"id": 24, "output_name": "outfile"}}, "inputs": [], "outputs": [], "annotation": "Read the computed mean read length from the statistics table for CONCOCT.", "position": {"left": 740, "top": 3120}, "id": 25, "uuid": "15437693-6eaf-4b7f-a3d9-ee0c0916787b", "label": "Automatic read length (CONCOCT)", "workflow_outputs": []}, "26": {"annotation": "Align paired-end short reads to the selected reference assembly to measure contig coverage.", "content_id": "toolshed.g2.bx.psu.edu/repos/devteam/bowtie2/bowtie2/2.5.5+galaxy0", "errors": null, "id": 26, "input_connections": {"library|input_1": {"id": 18, "output_name": "output"}, "reference_genome|own_file": {"id": 19, "output_name": "output"}}, "inputs": [{"description": "runtime parameter for tool Bowtie2", "name": "library"}, {"description": "runtime parameter for tool Bowtie2", "name": "reference_genome"}], "label": "Map every read sample to every assembly with Bowtie2", "name": "Bowtie2", "outputs": [{"name": "output", "type": "bam"}], "position": {"left": 1540, "top": 420}, "post_job_actions": {}, "tool_id": "toolshed.g2.bx.psu.edu/repos/devteam/bowtie2/bowtie2/2.5.5+galaxy0", "tool_shed_repository": {"changeset_revision": "a470b376503d", "name": "bowtie2", "owner": "devteam", "tool_shed": "toolshed.g2.bx.psu.edu"}, "tool_state": "{\"analysis_type\": {\"analysis_type_selector\": \"simple\", \"__current_case__\": 0, \"presets\": \"no_presets\"}, \"library\": {\"type\": \"paired_collection\", \"__current_case__\": 1, \"input_1\": {\"__class__\": \"ConnectedValue\"}, \"unaligned_file\": false, \"aligned_file\": false, \"paired_options\": {\"paired_options_selector\": \"no\", \"__current_case__\": 1}}, \"reference_genome\": {\"source\": \"history\", \"__current_case__\": 1, \"own_file\": {\"__class__\": \"ConnectedValue\"}}, \"rg\": {\"rg_selector\": \"do_not_set\", \"__current_case__\": 3}, \"sam_options\": {\"sam_options_selector\": \"no\", \"__current_case__\": 1}, \"save_mapping_stats\": false, \"__page__\": 0, \"__rerun_remap_job_id__\": null}", "tool_uuid": null, "tool_version": "2.5.5+galaxy0", "type": "tool", "uuid": "dfc68500-b152-402d-8897-df30eb9ab797", "when": null, "workflow_outputs": []}, "27": {"annotation": "Summarize alignment coverage over the CONCOCT contig fragments.", "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/concoct_coverage_table/concoct_coverage_table/1.1.0+galaxy3", "errors": null, "id": 27, "input_connections": {"bedfile": {"id": 29, "output_name": "output_bed"}, "mode|bamfiles": {"id": 26, "output_name": "output"}}, "inputs": [{"description": "runtime parameter for tool CONCOCT: Generate the input coverage table", "name": "mode"}], "label": "Calculate fragment coverage for CONCOCT", "name": "CONCOCT: Generate the input coverage table", "outputs": [{"name": "output", "type": "tabular"}], "position": {"left": 1540, "top": 720}, "post_job_actions": {}, "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/concoct_coverage_table/concoct_coverage_table/1.1.0+galaxy3", "tool_shed_repository": {"changeset_revision": "6a9c82cc3448", "name": "concoct_coverage_table", "owner": "iuc", "tool_shed": "toolshed.g2.bx.psu.edu"}, "tool_state": "{\"bedfile\": {\"__class__\": \"ConnectedValue\"}, \"mode\": {\"type\": \"co\", \"__current_case__\": 1, \"bamfiles\": {\"__class__\": \"ConnectedValue\"}}, \"__page__\": 0, \"__rerun_remap_job_id__\": null}", "tool_uuid": null, "tool_version": "1.1.0+galaxy3", "type": "tool", "uuid": "ebe92915-fada-4f47-85e2-48ca22f07692", "when": null, "workflow_outputs": []}, "28": {"annotation": "Summarize mapped-read depth and variance for each contig and read sample.", "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/metabat2_jgi_summarize_bam_contig_depths/metabat2_jgi_summarize_bam_contig_depths/2.18.23+galaxy0", "errors": null, "id": 28, "input_connections": {"mode|bam_co_inputs": {"id": 26, "output_name": "output"}}, "inputs": [{"description": "runtime parameter for tool Calculate contig depths", "name": "mode"}], "label": "Calculate contig depths across all read samples per assembly", "name": "Calculate contig depths", "outputs": [{"name": "outputDepth", "type": "tabular"}], "position": {"left": 1540, "top": 1020}, "post_job_actions": {"TagDatasetActionoutputDepth": {"action_arguments": {"tags": "coverage-depth-matrices"}, "action_type": "TagDatasetAction", "output_name": "outputDepth"}}, "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/metabat2_jgi_summarize_bam_contig_depths/metabat2_jgi_summarize_bam_contig_depths/2.18.23+galaxy0", "tool_shed_repository": {"changeset_revision": "45f6d77d37b7", "name": "metabat2_jgi_summarize_bam_contig_depths", "owner": "iuc", "tool_shed": "toolshed.g2.bx.psu.edu"}, "tool_state": "{\"advanced\": {\"percentIdentity\": \"97\", \"output_paired_contigs\": false, \"noIntraDepthVariance\": false, \"showDepth\": false, \"minMapQual\": \"0\", \"weightMapQual\": \"0.0\", \"includeEdgeBases\": false, \"maxEdgeBases\": \"75\"}, \"mode\": {\"type\": \"co\", \"__current_case__\": 1, \"bam_co_inputs\": {\"__class__\": \"ConnectedValue\"}, \"use_reference_cond\": {\"use_reference\": \"no\", \"__current_case__\": 0}}, \"shredding\": {\"shredLength\": \"16000\", \"shredDepth\": \"5\", \"minContigLength\": \"1\", \"minContigDepth\": \"0.0\"}, \"__page__\": 0, \"__rerun_remap_job_id__\": null}", "tool_uuid": null, "tool_version": "2.18.23+galaxy0", "type": "tool", "uuid": "99fd59a2-f822-4cf5-9be4-5bdf2d55c43d", "when": null, "workflow_outputs": [{"label": "Coverage depth matrices", "output_name": "outputDepth", "uuid": "131fdbc7-1992-4fcc-bb81-4352a81ae0e8"}]}, "29": {"annotation": "Split long contigs into fragments so coverage and composition can be clustered together.", "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/concoct_cut_up_fasta/concoct_cut_up_fasta/1.1.0+galaxy3", "errors": null, "id": 29, "input_connections": {"input_fasta": {"id": 0, "output_name": "output"}}, "inputs": [], "label": "Split contigs into fragments for CONCOCT", "name": "CONCOCT: Cut up contigs", "outputs": [{"name": "output_fasta", "type": "fasta"}, {"name": "output_bed", "type": "bed"}], "position": {"left": 3000, "top": 420}, "post_job_actions": {}, "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/concoct_cut_up_fasta/concoct_cut_up_fasta/1.1.0+galaxy3", "tool_shed_repository": {"changeset_revision": "7a5598f973c9", "name": "concoct_cut_up_fasta", "owner": "iuc", "tool_shed": "toolshed.g2.bx.psu.edu"}, "tool_state": "{\"bedfile\": true, \"chunk_size\": \"10000\", \"input_fasta\": {\"__class__\": \"ConnectedValue\"}, \"merge_last\": true, \"overlap_size\": \"0\", \"__page__\": 0, \"__rerun_remap_job_id__\": null}", "tool_uuid": null, "tool_version": "1.1.0+galaxy3", "type": "tool", "uuid": "83aae2e2-79b3-4f62-a985-46e171935dd2", "when": null, "workflow_outputs": []}, "30": {"annotation": "Cluster contig fragments into candidate bins from fragment coverage and composition.", "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/concoct/concoct/1.1.0+galaxy3", "errors": null, "id": 30, "input_connections": {"advanced|read_length": {"id": 25, "output_name": "integer_param"}, "composition_file": {"id": 29, "output_name": "output_fasta"}, "coverage_file": {"id": 27, "output_name": "output"}, "when": {"id": 13, "output_name": "output_param_boolean"}}, "inputs": [{"description": "runtime parameter for tool CONCOCT", "name": "advanced"}], "label": "Cluster contig fragments with CONCOCT", "name": "CONCOCT", "outputs": [{"name": "output_clustering", "type": "csv"}, {"name": "output_pca_components", "type": "csv"}, {"name": "output_pca_transformed", "type": "csv"}], "position": {"left": 3000, "top": 720}, "post_job_actions": {}, "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/concoct/concoct/1.1.0+galaxy3", "tool_shed_repository": {"changeset_revision": "396cce609c04", "name": "concoct", "owner": "iuc", "tool_shed": "toolshed.g2.bx.psu.edu"}, "tool_state": "{\"advanced\": {\"clusters\": \"400\", \"kmer_length\": \"4\", \"length_threshold\": \"1000\", \"read_length\": {\"__class__\": \"ConnectedValue\"}, \"total_percentage_pca\": \"90\", \"seed\": \"1\", \"iterations\": \"500\", \"no_cov_normalization\": false}, \"composition_file\": {\"__class__\": \"ConnectedValue\"}, \"coverage_file\": {\"__class__\": \"ConnectedValue\"}, \"output\": {\"no_total_coverage\": false, \"converge_out\": false, \"log\": false}, \"__page__\": 0, \"__rerun_remap_job_id__\": null}", "tool_uuid": null, "tool_version": "1.1.0+galaxy3", "type": "tool", "uuid": "ae4f83c9-3700-43a8-ab9a-0614c20d91e4", "when": "$(inputs.when)", "workflow_outputs": []}, "31": {"annotation": "Combine fragment assignments into assignments for the original contigs.", "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/concoct_merge_cut_up_clustering/concoct_merge_cut_up_clustering/1.1.0+galaxy3", "errors": null, "id": 31, "input_connections": {"cutup_clustering_result": {"id": 34, "output_name": "data_param"}, "when": {"id": 13, "output_name": "output_param_boolean"}}, "inputs": [], "label": "Merge CONCOCT fragment clusters into contig assignments", "name": "CONCOCT: Merge cut clusters", "outputs": [{"name": "output", "type": "csv"}], "position": {"left": 3000, "top": 1020}, "post_job_actions": {}, "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/concoct_merge_cut_up_clustering/concoct_merge_cut_up_clustering/1.1.0+galaxy3", "tool_shed_repository": {"changeset_revision": "28b4b21d6aae", "name": "concoct_merge_cut_up_clustering", "owner": "iuc", "tool_shed": "toolshed.g2.bx.psu.edu"}, "tool_state": "{\"cutup_clustering_result\": {\"__class__\": \"ConnectedValue\"}, \"__page__\": 0, \"__rerun_remap_job_id__\": null}", "tool_uuid": null, "tool_version": "1.1.0+galaxy3", "type": "tool", "uuid": "0467972e-1650-48bb-9cc2-6e7c37af1e6f", "when": "$(inputs.when)", "workflow_outputs": []}, "32": {"annotation": "Recover original contig sequences for each CONCOCT cluster.", "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/concoct_extract_fasta_bins/concoct_extract_fasta_bins/1.1.0+galaxy3", "errors": null, "id": 32, "input_connections": {"cluster_file": {"id": 35, "output_name": "data_param"}, "fasta_file": {"id": 0, "output_name": "output"}, "when": {"id": 13, "output_name": "output_param_boolean"}}, "inputs": [], "label": "Extract CONCOCT bins as FASTA collections", "name": "CONCOCT: Extract a fasta file", "outputs": [{"name": "bins", "type": "input"}], "position": {"left": 3000, "top": 1320}, "post_job_actions": {"TagDatasetActionbins": {"action_arguments": {"tags": "concoct-bins"}, "action_type": "TagDatasetAction", "output_name": "bins"}}, "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/concoct_extract_fasta_bins/concoct_extract_fasta_bins/1.1.0+galaxy3", "tool_shed_repository": {"changeset_revision": "d87b60b2ed78", "name": "concoct_extract_fasta_bins", "owner": "iuc", "tool_shed": "toolshed.g2.bx.psu.edu"}, "tool_state": "{\"cluster_file\": {\"__class__\": \"ConnectedValue\"}, \"fasta_file\": {\"__class__\": \"ConnectedValue\"}, \"__page__\": 0, \"__rerun_remap_job_id__\": null}", "tool_uuid": null, "tool_version": "1.1.0+galaxy3", "type": "tool", "uuid": "0dc8f9d0-9b83-4fd0-b028-ad07d95b60d5", "when": "$(inputs.when)", "workflow_outputs": [{"label": "CONCOCT bins", "output_name": "bins", "uuid": "6b8302e3-00e4-400f-a93f-7b6f9734359b"}]}, "33": {"annotation": "Convert FASTA bin membership to a contig-to-bin table for DAS Tool.", "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/fasta_to_contig2bin/Fasta_to_Contig2Bin/1.1.7+galaxy1", "errors": null, "id": 33, "input_connections": {"inputs": {"id": 36, "output_name": "data_param"}}, "inputs": [], "label": "Create contig-to-bin assignments from CONCOCT", "name": "Converts genome bins in fasta format", "outputs": [{"name": "contigs2bin", "type": "tabular"}], "position": {"left": 3000, "top": 1620}, "post_job_actions": {}, "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/fasta_to_contig2bin/Fasta_to_Contig2Bin/1.1.7+galaxy1", "tool_shed_repository": {"changeset_revision": "fb2bed0eb02f", "name": "fasta_to_contig2bin", "owner": "iuc", "tool_shed": "toolshed.g2.bx.psu.edu"}, "tool_state": "{\"inputs\": {\"__class__\": \"ConnectedValue\"}, \"__page__\": 0, \"__rerun_remap_job_id__\": null}", "tool_uuid": null, "tool_version": "1.1.7+galaxy1", "type": "tool", "uuid": "ba2c65f4-d987-409e-82ab-f7f7d612872e", "when": null, "workflow_outputs": []}, "34": {"annotation": "Retrieve CONCOCT fragment cluster results while allowing the CONCOCT optional branch to be skipped.", "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/pick_value/pick_value/0.2.0", "errors": null, "id": 34, "input_connections": {"style_cond|type_cond|pick_from_0|value": {"id": 30, "output_name": "output_clustering"}}, "inputs": [], "label": "Bridge optional CONCOCT fragment clusters", "name": "Pick parameter value", "outputs": [{"name": "data_param", "type": "input"}], "position": {"left": 3000, "top": 1920}, "post_job_actions": {}, "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/pick_value/pick_value/0.2.0", "tool_shed_repository": {"changeset_revision": "b19e21af9c52", "name": "pick_value", "owner": "iuc", "tool_shed": "toolshed.g2.bx.psu.edu"}, "tool_state": "{\"style_cond\": {\"pick_style\": \"first\", \"__current_case__\": 0, \"type_cond\": {\"param_type\": \"data\", \"__current_case__\": 4, \"pick_from\": [{\"__index__\": 0, \"value\": {\"__class__\": \"ConnectedValue\"}}]}}, \"__page__\": 0, \"__rerun_remap_job_id__\": null}", "tool_uuid": null, "tool_version": "0.2.0", "type": "tool", "uuid": "8ad60c12-2d20-48be-a5c7-ae099af557c4", "when": null, "workflow_outputs": []}, "35": {"annotation": "Retrieve CONCOCT merged contig assignment results while allowing the CONCOCT optional branch to be skipped.", "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/pick_value/pick_value/0.2.0", "errors": null, "id": 35, "input_connections": {"style_cond|type_cond|pick_from_0|value": {"id": 31, "output_name": "output"}}, "inputs": [], "label": "Bridge optional CONCOCT merged contig assignments", "name": "Pick parameter value", "outputs": [{"name": "data_param", "type": "input"}], "position": {"left": 3000, "top": 2220}, "post_job_actions": {}, "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/pick_value/pick_value/0.2.0", "tool_shed_repository": {"changeset_revision": "b19e21af9c52", "name": "pick_value", "owner": "iuc", "tool_shed": "toolshed.g2.bx.psu.edu"}, "tool_state": "{\"style_cond\": {\"pick_style\": \"first\", \"__current_case__\": 0, \"type_cond\": {\"param_type\": \"data\", \"__current_case__\": 4, \"pick_from\": [{\"__index__\": 0, \"value\": {\"__class__\": \"ConnectedValue\"}}]}}, \"__page__\": 0, \"__rerun_remap_job_id__\": null}", "tool_uuid": null, "tool_version": "0.2.0", "type": "tool", "uuid": "d935dc9e-3f8d-4088-b1ca-8aab078965aa", "when": null, "workflow_outputs": []}, "36": {"annotation": "Retrieve CONCOCT bin results while allowing the CONCOCT optional branch to be skipped.", "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/pick_value/pick_value/0.2.0", "errors": null, "id": 36, "input_connections": {"style_cond|type_cond|pick_from_0|value": {"id": 32, "output_name": "bins"}}, "inputs": [], "label": "Bridge optional CONCOCT bins", "name": "Pick parameter value", "outputs": [{"name": "data_param", "type": "input"}], "position": {"left": 3000, "top": 2520}, "post_job_actions": {}, "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/pick_value/pick_value/0.2.0", "tool_shed_repository": {"changeset_revision": "b19e21af9c52", "name": "pick_value", "owner": "iuc", "tool_shed": "toolshed.g2.bx.psu.edu"}, "tool_state": "{\"style_cond\": {\"pick_style\": \"first\", \"__current_case__\": 0, \"type_cond\": {\"param_type\": \"data\", \"__current_case__\": 4, \"pick_from\": [{\"__index__\": 0, \"value\": {\"__class__\": \"ConnectedValue\"}}]}}, \"__page__\": 0, \"__rerun_remap_job_id__\": null}", "tool_uuid": null, "tool_version": "0.2.0", "type": "tool", "uuid": "40356f8f-3bf9-4a93-a639-f9a8fa8e5cf2", "when": null, "workflow_outputs": []}, "37": {"annotation": "Use sequence and coverage representations to infer candidate genome bins when enabled.", "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/comebin/comebin/1.1.0+galaxy1", "errors": null, "id": 37, "input_connections": {"assembly_file": {"id": 0, "output_name": "output"}, "bam_files": {"id": 26, "output_name": "output"}, "when": {"id": 11, "output_name": "output_param_boolean"}}, "inputs": [], "label": "Bin contigs with COMEBin", "name": "COMEBin", "outputs": [{"name": "bins", "type": "input"}], "position": {"left": 3800, "top": 420}, "post_job_actions": {"TagDatasetActionbins": {"action_arguments": {"tags": "comebin-bins"}, "action_type": "TagDatasetAction", "output_name": "bins"}}, "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/comebin/comebin/1.1.0+galaxy1", "tool_shed_repository": {"changeset_revision": "7e66a24282a7", "name": "comebin", "owner": "iuc", "tool_shed": "toolshed.g2.bx.psu.edu"}, "tool_state": "{\"assembly_file\": {\"__class__\": \"ConnectedValue\"}, \"bam_files\": {\"__class__\": \"ConnectedValue\"}, \"batch\": \"1024\", \"emb_comebin\": \"2048\", \"emb_cov\": \"2048\", \"learning\": \"6\", \"loss\": \"0.15\", \"max_edges\": \"100\", \"__page__\": 0, \"__rerun_remap_job_id__\": null}", "tool_uuid": null, "tool_version": "1.1.0+galaxy1", "type": "tool", "uuid": "1e418b96-e22e-4cd0-a95d-d1aed1211125", "when": "$(inputs.when)", "workflow_outputs": [{"label": "COMEBin bins", "output_name": "bins", "uuid": "390a4e70-1fbd-461a-9730-e8eda75cec32"}]}, "38": {"annotation": "Retrieve COMEBin bin results while allowing the COMEBin optional branch to be skipped.", "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/pick_value/pick_value/0.2.0", "errors": null, "id": 38, "input_connections": {"style_cond|type_cond|pick_from_0|value": {"id": 37, "output_name": "bins"}}, "inputs": [], "label": "Bridge optional COMEBin bins for downstream conversion", "name": "Pick parameter value", "outputs": [{"name": "data_param", "type": "input"}], "position": {"left": 3800, "top": 720}, "post_job_actions": {}, "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/pick_value/pick_value/0.2.0", "tool_shed_repository": {"changeset_revision": "b19e21af9c52", "name": "pick_value", "owner": "iuc", "tool_shed": "toolshed.g2.bx.psu.edu"}, "tool_state": "{\"style_cond\": {\"pick_style\": \"first\", \"__current_case__\": 0, \"type_cond\": {\"param_type\": \"data\", \"__current_case__\": 4, \"pick_from\": [{\"__index__\": 0, \"value\": {\"__class__\": \"ConnectedValue\"}}]}}, \"__page__\": 0, \"__rerun_remap_job_id__\": null}", "tool_uuid": null, "tool_version": "0.2.0", "type": "tool", "uuid": "fdd36664-fd23-475b-b6e2-523333782de6", "when": null, "workflow_outputs": []}, "39": {"annotation": "Convert FASTA bin membership to a contig-to-bin table for DAS Tool.", "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/fasta_to_contig2bin/Fasta_to_Contig2Bin/1.1.7+galaxy1", "errors": null, "id": 39, "input_connections": {"inputs": {"id": 38, "output_name": "data_param"}}, "inputs": [], "label": "Create contig-to-bin assignments from COMEBin", "name": "Converts genome bins in fasta format", "outputs": [{"name": "contigs2bin", "type": "tabular"}], "position": {"left": 3800, "top": 1020}, "post_job_actions": {}, "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/fasta_to_contig2bin/Fasta_to_Contig2Bin/1.1.7+galaxy1", "tool_shed_repository": {"changeset_revision": "fb2bed0eb02f", "name": "fasta_to_contig2bin", "owner": "iuc", "tool_shed": "toolshed.g2.bx.psu.edu"}, "tool_state": "{\"inputs\": {\"__class__\": \"ConnectedValue\"}, \"__page__\": 0, \"__rerun_remap_job_id__\": null}", "tool_uuid": null, "tool_version": "1.1.7+galaxy1", "type": "tool", "uuid": "d2d17d81-7acb-4cf2-baff-822050e8316f", "when": null, "workflow_outputs": []}, "40": {"annotation": "Use contig sequence features and coverage to infer candidate genome bins.", "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/semibin/semibin/2.1.0+galaxy1", "errors": null, "id": 40, "input_connections": {"mode|align_select|input_bam": {"id": 26, "output_name": "output"}, "mode|input_fasta": {"id": 0, "output_name": "output"}, "when": {"id": 12, "output_name": "output_param_boolean"}}, "inputs": [{"description": "runtime parameter for tool SemiBin", "name": "mode"}], "label": "Bin contigs with SemiBin", "name": "SemiBin", "outputs": [{"name": "output_bins", "type": "input"}], "position": {"left": 3800, "top": 1320}, "post_job_actions": {"TagDatasetActionoutput_bins": {"action_arguments": {"tags": "semibin-bins"}, "action_type": "TagDatasetAction", "output_name": "output_bins"}}, "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/semibin/semibin/2.1.0+galaxy1", "tool_shed_repository": {"changeset_revision": "afee33334a63", "name": "semibin", "owner": "iuc", "tool_shed": "toolshed.g2.bx.psu.edu"}, "tool_state": "{\"annot\": {\"ml_threshold\": null}, \"bin\": {\"max_node\": \"1.0\", \"max_edges\": \"200\", \"minfasta_kbs\": \"200\"}, \"extra_output\": null, \"min_len\": {\"method\": \"automatic\", \"__current_case__\": 0}, \"mode\": {\"select\": \"co\", \"__current_case__\": 1, \"input_fasta\": {\"__class__\": \"ConnectedValue\"}, \"align_select\": {\"align_select\": \"bam\", \"__current_case__\": 0, \"input_bam\": {\"__class__\": \"ConnectedValue\"}}, \"ref\": {\"select\": \"ml\", \"__current_case__\": 2}}, \"orf_finder\": \"fast-naive\", \"random_seed\": \"0\", \"training\": {\"epoches\": \"20\", \"batch_size\": \"2048\"}, \"__page__\": 0, \"__rerun_remap_job_id__\": null}", "tool_uuid": null, "tool_version": "2.1.0+galaxy1", "type": "tool", "uuid": "c1d1b3e7-87d9-4bc2-9624-ed7ff1441738", "when": "$(inputs.when)", "workflow_outputs": [{"label": "SemiBin bins", "output_name": "output_bins", "uuid": "84ab02d0-c3f8-45df-af96-5055f0c3cd13"}]}, "41": {"annotation": "Retrieve SemiBin results while allowing the SemiBin optional branch to be skipped.", "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/pick_value/pick_value/0.2.0", "errors": null, "id": 41, "input_connections": {"style_cond|type_cond|pick_from_0|value": {"id": 40, "output_name": "output_bins"}}, "inputs": [], "label": "Optional bins bridge \u2014 SemiBin", "name": "Pick parameter value", "outputs": [{"name": "data_param", "type": "input"}], "position": {"left": 3800, "top": 1620}, "post_job_actions": {}, "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/pick_value/pick_value/0.2.0", "tool_shed_repository": {"changeset_revision": "b19e21af9c52", "name": "pick_value", "owner": "iuc", "tool_shed": "toolshed.g2.bx.psu.edu"}, "tool_state": "{\"style_cond\": {\"pick_style\": \"first\", \"__current_case__\": 0, \"type_cond\": {\"param_type\": \"data\", \"__current_case__\": 4, \"pick_from\": [{\"__index__\": 0, \"value\": {\"__class__\": \"ConnectedValue\"}}]}}, \"__page__\": 0, \"__rerun_remap_job_id__\": null}", "tool_uuid": null, "tool_version": "0.2.0", "type": "tool", "uuid": "2536bd4f-59df-4e2b-b5e9-b8326cc3d9cf", "when": null, "workflow_outputs": []}, "42": {"annotation": "Convert FASTA bin membership to a contig-to-bin table for DAS Tool.", "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/fasta_to_contig2bin/Fasta_to_Contig2Bin/1.1.7+galaxy1", "errors": null, "id": 42, "input_connections": {"inputs": {"id": 41, "output_name": "data_param"}}, "inputs": [], "label": "Create contig-to-bin assignments from SemiBin", "name": "Converts genome bins in fasta format", "outputs": [{"name": "contigs2bin", "type": "tabular"}], "position": {"left": 3800, "top": 1920}, "post_job_actions": {}, "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/fasta_to_contig2bin/Fasta_to_Contig2Bin/1.1.7+galaxy1", "tool_shed_repository": {"changeset_revision": "fb2bed0eb02f", "name": "fasta_to_contig2bin", "owner": "iuc", "tool_shed": "toolshed.g2.bx.psu.edu"}, "tool_state": "{\"inputs\": {\"__class__\": \"ConnectedValue\"}, \"__page__\": 0, \"__rerun_remap_job_id__\": null}", "tool_uuid": null, "tool_version": "1.1.7+galaxy1", "type": "tool", "uuid": "06531149-35a2-4c72-bf0b-c948785e24b9", "when": null, "workflow_outputs": []}, "43": {"annotation": "Combine contig composition and coverage to infer candidate genome bins.", "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/metabat2/metabat2/2.18.23+galaxy0", "errors": null, "id": 43, "input_connections": {"advanced|base_coverage_depth_cond|abdFile": {"id": 28, "output_name": "outputDepth"}, "inFile": {"id": 0, "output_name": "output"}, "when": {"id": 14, "output_name": "output_param_boolean"}}, "inputs": [], "label": "Bin contigs with MetaBAT2", "name": "MetaBAT2", "outputs": [{"name": "bins", "type": "input"}], "position": {"left": 4600, "top": 420}, "post_job_actions": {"TagDatasetActionbins": {"action_arguments": {"tags": "metabat2-bins"}, "action_type": "TagDatasetAction", "output_name": "bins"}}, "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/metabat2/metabat2/2.18.23+galaxy0", "tool_shed_repository": {"changeset_revision": "c63e45a190b5", "name": "metabat2", "owner": "iuc", "tool_shed": "toolshed.g2.bx.psu.edu"}, "tool_state": "{\"advanced\": {\"base_coverage_depth_cond\": {\"base_coverage_depth\": \"yes\", \"__current_case__\": 1, \"abdFile\": {\"__class__\": \"ConnectedValue\"}, \"cvExt\": null}, \"minContig\": \"1500\", \"minSmallContig\": \"1000\", \"maxP\": \"95\", \"minS\": \"60\", \"maxEdges\": \"200\", \"pTNF\": \"0\", \"noAdd\": false, \"minRecruitingSize\": \"10\", \"minCV\": \"1.0\", \"minCVSum\": \"1.0\", \"seed\": \"0\"}, \"inFile\": {\"__class__\": \"ConnectedValue\"}, \"out\": {\"minClsSize\": \"200000\", \"onlyLabel\": false, \"saveCls\": false, \"fullHeader\": false, \"extra_outputs\": null}, \"__page__\": 0, \"__rerun_remap_job_id__\": null}", "tool_uuid": null, "tool_version": "2.18.23+galaxy0", "type": "tool", "uuid": "876acc0d-bb05-42ad-ac28-5da06d57b99f", "when": "$(inputs.when)", "workflow_outputs": [{"label": "MetaBAT2 bins", "output_name": "bins", "uuid": "98f1c793-cd46-4d0f-9e08-f9c54c702f36"}]}, "44": {"annotation": "Retrieve MetaBAT2 results while allowing the MetaBAT2 optional branch to be skipped.", "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/pick_value/pick_value/0.2.0", "errors": null, "id": 44, "input_connections": {"style_cond|type_cond|pick_from_0|value": {"id": 43, "output_name": "bins"}}, "inputs": [], "label": "Optional bins bridge \u2014 MetaBAT2", "name": "Pick parameter value", "outputs": [{"name": "data_param", "type": "input"}], "position": {"left": 4600, "top": 720}, "post_job_actions": {}, "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/pick_value/pick_value/0.2.0", "tool_shed_repository": {"changeset_revision": "b19e21af9c52", "name": "pick_value", "owner": "iuc", "tool_shed": "toolshed.g2.bx.psu.edu"}, "tool_state": "{\"style_cond\": {\"pick_style\": \"first\", \"__current_case__\": 0, \"type_cond\": {\"param_type\": \"data\", \"__current_case__\": 4, \"pick_from\": [{\"__index__\": 0, \"value\": {\"__class__\": \"ConnectedValue\"}}]}}, \"__page__\": 0, \"__rerun_remap_job_id__\": null}", "tool_uuid": null, "tool_version": "0.2.0", "type": "tool", "uuid": "50a7dd5c-0ca6-4fef-8e1e-0f7c1c5c2ec5", "when": null, "workflow_outputs": []}, "45": {"annotation": "Convert FASTA bin membership to a contig-to-bin table for DAS Tool.", "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/fasta_to_contig2bin/Fasta_to_Contig2Bin/1.1.7+galaxy1", "errors": null, "id": 45, "input_connections": {"inputs": {"id": 44, "output_name": "data_param"}}, "inputs": [], "label": "Create contig-to-bin assignments from MetaBAT2", "name": "Converts genome bins in fasta format", "outputs": [{"name": "contigs2bin", "type": "tabular"}], "position": {"left": 4600, "top": 1020}, "post_job_actions": {}, "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/fasta_to_contig2bin/Fasta_to_Contig2Bin/1.1.7+galaxy1", "tool_shed_repository": {"changeset_revision": "fb2bed0eb02f", "name": "fasta_to_contig2bin", "owner": "iuc", "tool_shed": "toolshed.g2.bx.psu.edu"}, "tool_state": "{\"inputs\": {\"__class__\": \"ConnectedValue\"}, \"__page__\": 0, \"__rerun_remap_job_id__\": null}", "tool_uuid": null, "tool_version": "1.1.7+galaxy1", "type": "tool", "uuid": "f1e5f724-12de-4ddb-a7a7-775ac3af7d8f", "when": null, "workflow_outputs": []}, "46": {"annotation": "Use contig composition, coverage, and marker genes to infer candidate genome bins.", "content_id": "toolshed.g2.bx.psu.edu/repos/mbernt/maxbin2/maxbin2/2.2.7+galaxy6", "errors": null, "id": 46, "input_connections": {"assembly|inputs|abund": {"id": 28, "output_name": "outputDepth"}, "contig": {"id": 0, "output_name": "output"}, "when": {"id": 15, "output_name": "output_param_boolean"}}, "inputs": [], "label": "Bin contigs with MaxBin2", "name": "MaxBin2", "outputs": [{"name": "bins", "type": "input"}, {"name": "noclass", "type": "fasta"}, {"name": "toshort", "type": "fasta"}, {"name": "summary", "type": "tabular"}], "position": {"left": 4600, "top": 1320}, "post_job_actions": {"TagDatasetActionbins": {"action_arguments": {"tags": "maxbin2-bins"}, "action_type": "TagDatasetAction", "output_name": "bins"}}, "tool_id": "toolshed.g2.bx.psu.edu/repos/mbernt/maxbin2/maxbin2/2.2.7+galaxy6", "tool_shed_repository": {"changeset_revision": "0917b2d6010d", "name": "maxbin2", "owner": "mbernt", "tool_shed": "toolshed.g2.bx.psu.edu"}, "tool_state": "{\"adv\": {\"min_contig_length\": \"1000\", \"max_iteration\": \"50\", \"prob_threshold\": \"0.5\"}, \"assembly\": {\"type\": \"individual\", \"__current_case__\": 0, \"inputs\": {\"type\": \"abund\", \"__current_case__\": 1, \"abund\": {\"__class__\": \"ConnectedValue\"}}}, \"contig\": {\"__class__\": \"ConnectedValue\"}, \"output\": {\"plotmarker\": false, \"marker\": false, \"markers\": false, \"log\": false, \"markerset\": \"107\"}, \"__page__\": 0, \"__rerun_remap_job_id__\": null}", "tool_uuid": null, "tool_version": "2.2.7+galaxy6", "type": "tool", "uuid": "c2eca2a4-c8bc-4ea5-a7d7-acbc05643cf9", "when": "$(inputs.when)", "workflow_outputs": [{"label": "MaxBin2 bins", "output_name": "bins", "uuid": "9a73928d-17dd-4785-aac0-56962096d9ee"}]}, "47": {"annotation": "Retrieve MaxBin2 results while allowing the MaxBin2 optional branch to be skipped.", "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/pick_value/pick_value/0.2.0", "errors": null, "id": 47, "input_connections": {"style_cond|type_cond|pick_from_0|value": {"id": 46, "output_name": "bins"}}, "inputs": [], "label": "Optional bins bridge \u2014 MaxBin2", "name": "Pick parameter value", "outputs": [{"name": "data_param", "type": "input"}], "position": {"left": 4600, "top": 1620}, "post_job_actions": {}, "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/pick_value/pick_value/0.2.0", "tool_shed_repository": {"changeset_revision": "b19e21af9c52", "name": "pick_value", "owner": "iuc", "tool_shed": "toolshed.g2.bx.psu.edu"}, "tool_state": "{\"style_cond\": {\"pick_style\": \"first\", \"__current_case__\": 0, \"type_cond\": {\"param_type\": \"data\", \"__current_case__\": 4, \"pick_from\": [{\"__index__\": 0, \"value\": {\"__class__\": \"ConnectedValue\"}}]}}, \"__page__\": 0, \"__rerun_remap_job_id__\": null}", "tool_uuid": null, "tool_version": "0.2.0", "type": "tool", "uuid": "2aea1104-eac4-4024-92a2-121507a1eef8", "when": null, "workflow_outputs": []}, "48": {"annotation": "Convert FASTA bin membership to a contig-to-bin table for DAS Tool.", "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/fasta_to_contig2bin/Fasta_to_Contig2Bin/1.1.7+galaxy1", "errors": null, "id": 48, "input_connections": {"inputs": {"id": 47, "output_name": "data_param"}}, "inputs": [], "label": "Create contig-to-bin assignments from MaxBin2", "name": "Converts genome bins in fasta format", "outputs": [{"name": "contigs2bin", "type": "tabular"}], "position": {"left": 4600, "top": 1920}, "post_job_actions": {}, "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/fasta_to_contig2bin/Fasta_to_Contig2Bin/1.1.7+galaxy1", "tool_shed_repository": {"changeset_revision": "fb2bed0eb02f", "name": "fasta_to_contig2bin", "owner": "iuc", "tool_shed": "toolshed.g2.bx.psu.edu"}, "tool_state": "{\"inputs\": {\"__class__\": \"ConnectedValue\"}, \"__page__\": 0, \"__rerun_remap_job_id__\": null}", "tool_uuid": null, "tool_version": "1.1.7+galaxy1", "type": "tool", "uuid": "f075f040-97e6-49f1-ae8d-d37da806c399", "when": null, "workflow_outputs": []}, "49": {"annotation": "Convert the selected bin refinement tool into a boolean that enables running DAS Tool only when requested.", "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/map_param_value/map_param_value/0.2.0", "errors": null, "id": 49, "input_connections": {"input_param_type|input_param": {"id": 7, "output_name": "output"}}, "inputs": [{"description": "runtime parameter for tool Map parameter value", "name": "input_param_type"}], "label": "Run DAS Tool?", "name": "Map parameter value", "outputs": [{"name": "output_param_boolean", "type": "expression.json"}], "position": {"left": 5400, "top": 420}, "post_job_actions": {}, "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/map_param_value/map_param_value/0.2.0", "tool_shed_repository": {"changeset_revision": "022a635f2283", "name": "map_param_value", "owner": "iuc", "tool_shed": "toolshed.g2.bx.psu.edu"}, "tool_state": "{\"input_param_type\": {\"type\": \"text\", \"__current_case__\": 0, \"input_param\": {\"__class__\": \"ConnectedValue\"}, \"mappings\": [{\"__index__\": 0, \"from\": \"Both\", \"to\": \"True\"}, {\"__index__\": 1, \"from\": \"DAS Tool\", \"to\": \"True\"}, {\"__index__\": 2, \"from\": \"Binette\", \"to\": \"False\"}]}, \"output_param_type\": \"boolean\", \"unmapped\": {\"on_unmapped\": \"default\", \"__current_case__\": 2, \"default_value\": \"False\"}, \"__page__\": 0, \"__rerun_remap_job_id__\": null}", "tool_uuid": null, "tool_version": "0.2.0", "type": "tool", "uuid": "acd10a24-ae5b-4858-84d2-8cde933fe404", "when": null, "workflow_outputs": []}, "50": {"annotation": "Convert the selected bin refinement tool into a boolean that enables running Binette only when requested.", "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/map_param_value/map_param_value/0.2.0", "errors": null, "id": 50, "input_connections": {"input_param_type|input_param": {"id": 7, "output_name": "output"}}, "inputs": [{"description": "runtime parameter for tool Map parameter value", "name": "input_param_type"}], "label": "Run Binette?", "name": "Map parameter value", "outputs": [{"name": "output_param_boolean", "type": "expression.json"}], "position": {"left": 5400, "top": 720}, "post_job_actions": {}, "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/map_param_value/map_param_value/0.2.0", "tool_shed_repository": {"changeset_revision": "022a635f2283", "name": "map_param_value", "owner": "iuc", "tool_shed": "toolshed.g2.bx.psu.edu"}, "tool_state": "{\"input_param_type\": {\"type\": \"text\", \"__current_case__\": 0, \"input_param\": {\"__class__\": \"ConnectedValue\"}, \"mappings\": [{\"__index__\": 0, \"from\": \"Both\", \"to\": \"True\"}, {\"__index__\": 1, \"from\": \"Binette\", \"to\": \"True\"}, {\"__index__\": 2, \"from\": \"DAS Tool\", \"to\": \"False\"}]}, \"output_param_type\": \"boolean\", \"unmapped\": {\"on_unmapped\": \"default\", \"__current_case__\": 2, \"default_value\": \"False\"}, \"__page__\": 0, \"__rerun_remap_job_id__\": null}", "tool_uuid": null, "tool_version": "0.2.0", "type": "tool", "uuid": "60bd76d8-9219-40f4-a5a3-4a062b71f995", "when": null, "workflow_outputs": []}, "51": {"annotation": "Assemble enabled binner results into one candidate list for refinement.", "content_id": "__BUILD_LIST__", "errors": null, "id": 51, "input_connections": {"datasets_0|input": {"id": 33, "output_name": "contigs2bin"}, "datasets_1|input": {"id": 39, "output_name": "contigs2bin"}, "datasets_2|input": {"id": 45, "output_name": "contigs2bin"}, "datasets_3|input": {"id": 48, "output_name": "contigs2bin"}, "datasets_4|input": {"id": 42, "output_name": "contigs2bin"}, "when": {"id": 50, "output_name": "output_param_boolean"}}, "inputs": [], "label": "Collect candidate bins from enabled binners for Binette", "name": "Build list", "outputs": [{"name": "output", "type": "input"}], "position": {"left": 5400, "top": 1020}, "post_job_actions": {}, "tool_id": "__BUILD_LIST__", "tool_state": "{\"datasets\": [{\"__index__\": 0, \"input\": {\"__class__\": \"ConnectedValue\"}, \"id_cond\": {\"id_select\": \"idx\", \"__current_case__\": 0}}, {\"__index__\": 1, \"input\": {\"__class__\": \"ConnectedValue\"}, \"id_cond\": {\"id_select\": \"idx\", \"__current_case__\": 0}}, {\"__index__\": 2, \"input\": {\"__class__\": \"ConnectedValue\"}, \"id_cond\": {\"id_select\": \"idx\", \"__current_case__\": 0}}, {\"__index__\": 3, \"input\": {\"__class__\": \"ConnectedValue\"}, \"id_cond\": {\"id_select\": \"idx\", \"__current_case__\": 0}}, {\"__index__\": 4, \"input\": {\"__class__\": \"ConnectedValue\"}, \"id_cond\": {\"id_select\": \"idx\", \"__current_case__\": 0}}], \"__page__\": 0, \"__rerun_remap_job_id__\": null}", "tool_uuid": null, "tool_version": "1.2.0", "type": "tool", "uuid": "4b782c6d-de7a-4753-8031-12c2130c27ca", "when": "$(inputs.when)", "workflow_outputs": []}, "52": {"annotation": "Score candidate contig assignments and select a non-redundant set of refined genome bins.", "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/das_tool/das_tool/1.1.7+galaxy1", "errors": null, "id": 52, "input_connections": {"binning_0|bins": {"id": 33, "output_name": "contigs2bin"}, "binning_1|bins": {"id": 39, "output_name": "contigs2bin"}, "binning_2|bins": {"id": 45, "output_name": "contigs2bin"}, "binning_3|bins": {"id": 48, "output_name": "contigs2bin"}, "binning_4|bins": {"id": 42, "output_name": "contigs2bin"}, "contigs": {"id": 0, "output_name": "output"}, "when": {"id": 49, "output_name": "output_param_boolean"}}, "inputs": [], "label": "Refine candidate bins with DAS Tool", "name": "DAS Tool", "outputs": [{"name": "bins", "type": "input"}, {"name": "summary", "type": "tabular"}, {"name": "contigs2bin", "type": "tabular"}, {"name": "log", "type": "txt"}], "position": {"left": 5400, "top": 1320}, "post_job_actions": {"TagDatasetActionbins": {"action_arguments": {"tags": "das-tool-bins"}, "action_type": "TagDatasetAction", "output_name": "bins"}, "TagDatasetActioncontigs2bin": {"action_arguments": {"tags": "das-tool-conitgs2bin-report"}, "action_type": "TagDatasetAction", "output_name": "contigs2bin"}, "TagDatasetActionsummary": {"action_arguments": {"tags": "das-tool-summary"}, "action_type": "TagDatasetAction", "output_name": "summary"}}, "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/das_tool/das_tool/1.1.7+galaxy1", "tool_shed_repository": {"changeset_revision": "b048a987dd7d", "name": "das_tool", "owner": "iuc", "tool_shed": "toolshed.g2.bx.psu.edu"}, "tool_state": "{\"adv\": {\"search_engine\": \"diamond\", \"proteins\": null, \"score_threshold\": \"0.5\", \"duplicate_penalty\": \"0.6\", \"megabin_penalty\": \"0.5\", \"max_iter_post_threshold\": \"10\"}, \"binning\": [{\"__index__\": 0, \"bins\": {\"__class__\": \"ConnectedValue\"}, \"labels\": \"CONCOCT\"}, {\"__index__\": 1, \"bins\": {\"__class__\": \"ConnectedValue\"}, \"labels\": \"COMEBin\"}, {\"__index__\": 2, \"bins\": {\"__class__\": \"ConnectedValue\"}, \"labels\": \"MetaBAT2\"}, {\"__index__\": 3, \"bins\": {\"__class__\": \"ConnectedValue\"}, \"labels\": \"MaxBin2\"}, {\"__index__\": 4, \"bins\": {\"__class__\": \"ConnectedValue\"}, \"labels\": \"SemiBin\"}], \"contigs\": {\"__class__\": \"ConnectedValue\"}, \"output\": {\"proteins\": false, \"write_bin_evals\": false, \"write_bins\": {\"write_bins\": \"--write_bins\", \"__current_case__\": 0, \"write_unbinned\": false}, \"debug\": false}, \"__page__\": 0, \"__rerun_remap_job_id__\": null}", "tool_uuid": null, "tool_version": "1.1.7+galaxy1", "type": "tool", "uuid": "35408f05-b203-4c65-b4ef-80ebfbbe1d58", "when": "$(inputs.when)", "workflow_outputs": [{"label": "DAS Tool bins", "output_name": "bins", "uuid": "f6517089-9d22-4513-97e1-4268a3ad2766"}, {"label": "DAS Tool contigs2bin report", "output_name": "contigs2bin", "uuid": "6e55e68d-96e7-4898-b6ae-f1110ea764a8"}, {"label": "DAS Tool summary", "output_name": "summary", "uuid": "47867014-9b39-493e-8aac-5350afa6792f"}]}, "53": {"annotation": "Refine candidate FASTA bins using CheckM2 quality estimates and the selected completeness and contamination settings.", "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/binette/binette/1.2.1+galaxy0", "errors": null, "id": 53, "input_connections": {"contig2bin_tables": {"id": 51, "output_name": "output"}, "contigs": {"id": 0, "output_name": "output"}, "database_type|datamanager": {"id": 8, "output_name": "output"}, "when": {"id": 50, "output_name": "output_param_boolean"}, "min_completeness": {"id": 9, "output_name": "output"}, "contamination_weight": {"id": 10, "output_name": "output"}}, "inputs": [{"description": "runtime parameter for tool Binette", "name": "database_type"}], "label": "Refine candidate bins with Binette", "name": "Binette", "outputs": [{"name": "bins", "type": "input"}, {"name": "quality", "type": "input"}, {"name": "final", "type": "tabular"}], "position": {"left": 5400, "top": 1620}, "post_job_actions": {"TagDatasetActionbins": {"action_arguments": {"tags": "binette-bins"}, "action_type": "TagDatasetAction", "output_name": "bins"}, "TagDatasetActionfinal": {"action_arguments": {"tags": "binette-post-quality-reports"}, "action_type": "TagDatasetAction", "output_name": "final"}, "TagDatasetActionquality": {"action_arguments": {"tags": "binette-pre-quality-reports"}, "action_type": "TagDatasetAction", "output_name": "quality"}}, "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/binette/binette/1.2.1+galaxy0", "tool_shed_repository": {"changeset_revision": "9053a39d7994", "name": "binette", "owner": "iuc", "tool_shed": "toolshed.g2.bx.psu.edu"}, "tool_state": "{\"contamination_weight\": {\"__class__\": \"ConnectedValue\"}, \"contig2bin_tables\": {\"__class__\": \"ConnectedValue\"}, \"contigs\": {\"__class__\": \"ConnectedValue\"}, \"database_type\": {\"is_select\": \"cached\", \"__current_case__\": 1, \"datamanager\": {\"__class__\": \"ConnectedValue\"}}, \"min_completeness\": {\"__class__\": \"ConnectedValue\"}, \"proteins\": null, \"__page__\": 0, \"__rerun_remap_job_id__\": null}", "tool_uuid": null, "tool_version": "1.2.1+galaxy0", "type": "tool", "uuid": "43c8ccb8-6c5f-4b64-87e1-1bd641f97079", "when": "$(inputs.when)", "workflow_outputs": [{"label": "Binette input bin quality reports", "output_name": "quality", "uuid": "99e64da5-8e80-4eb9-a931-289055ec717e"}, {"label": "Binette bins", "output_name": "bins", "uuid": "78d973e2-680e-4541-9920-4a08489125da"}, {"label": "Binette final bin quality report", "output_name": "final", "uuid": "a10382ed-1d4b-45ad-89b5-79cd5041ec66"}]}}, "tags": ["agentic-foundry-mags"], "uuid": "9b674961-0b3c-4f8f-97e6-f225e018198f", "version": 1, "readme": "# Multi-sample binning workflow\n\nThis workflow turns metagenomic assemblies into metagenomic bins with five binners (CONCOCT, MaxBin2, MetaBAT2, SemiBin and COMEBin), using cross-sample read coverage, and refines the bins with DAS Tool and/or Binette.\n\nIt performs cross-sample coverage estimation, binning and bin refinement for the [MAGs generation workflow](https://iwc.galaxyproject.org/workflow/mags-building-main/).\nA dedicated [learning pathway](https://galaxyproject.github.io/training-material/learning-pathways/mags.html) provides detailed guidance on MAG generation in Galaxy, including the binning tools used here.\n\n## How multi-sample binning works\n\nIn single-sample binning, each assembly is binned with the coverage of its own reads. In multi-sample binning, the reads of every sample are mapped against the assembly of every sample, so each contig gets one coverage profile per sample. Binners can then separate organisms that have similar composition but different abundance patterns across samples.\n\nTwo details are worth knowing before starting:\n\n- Each sample's reads are mapped against each sample's assembly, and every assembly is binned on its own. The workflow does not concatenate all assemblies into one co-assembly and split the resulting bins afterwards.\n- The mapping workload grows as N\u00b2 for N samples: N read sets \u00d7 N assemblies. Storage grows quickly too, even though the workflow reuses the original FASTQ datasets instead of writing intermediate read files.\n\n**Note on sample count:** Multi-sample binning is most effective with up to ~20 samples. Performance usually peaks around 20 samples ([Mineeva et al., *Nat. Commun.* 2025](https://www.nature.com/articles/s41467-026-71521-w)). Using more than 20 samples can lead to extensive resource usage (N\u00b2 mappings and substantial storage requirements). For many samples or samples from unrelated environments where cross-sample coverage adds little, [single-sample binning](https://iwc.galaxyproject.org/workflow/single-sample-binning-main/) is often the cheaper choice.\n\n## Inputs\n\n- **Assemblies**: a `list` collection of assemblies from any assembler (e.g. MEGAHIT or metaSPAdes).\n - Every sample's reads are mapped against every assembly, so the element identifiers of the reads and assemblies do not need to match.\n - The number of assemblies does not need to equal the number of read samples: a single co-assembly binned with the coverage of all samples is a valid input.\n- **Paired-end reads**: a `list:paired` collection with one element per sample.\n - Reads should be quality-trimmed and host-removed, e.g. with the IWC [short-read quality control](https://iwc.galaxyproject.org/workflow/short-read-qc-trimming-main/) and [host contamination removal](https://iwc.galaxyproject.org/workflow/host-contamination-removal-short-reads-main/) workflows.\n - The sample names become the coverage columns of the binners.\n - **Use with caution for large datasets:** multi-sample binning is most effective with up to ~20 samples. Performance usually peaks around 20 samples ([Mineeva et al., *Nat. Commun.* 2025](https://www.nature.com/articles/s41467-026-71521-w)). Using more than 20 samples can lead to extensive resource usage, as the mapping workload grows as N\u00b2 (N read sets \u00d7 N assemblies) and storage requirements increase substantially. For many samples or unrelated environments, [single-sample binning](https://iwc.galaxyproject.org/workflow/single-sample-binning-main/) is often the cheaper choice.\n- **Run COMEBin?**, **Run SemiBin?**, **Run CONCOCT?**, **Run MetaBAT2?** and **Run MaxBin2?** (default: `Yes`): enable or skip each binner independently.\n - Keep at least one binner enabled.\n - COMEBin is the most time- and resource-consuming binner.\n- **Bin refinement tool** (default: `Binette`): `Binette`, `DAS Tool` or `Both`.\n- **CheckM2 Database**: the CheckM2 reference database Binette uses to assess bin quality.\n- **Minimum MAG completeness percentage** (default: 40): the minimum bin completeness used by Binette. It does not filter DAS Tool output.\n- **Contamination weight (Binette)** (default: 2): the contamination penalty used in Binette's scoring.\n\n## Step 1: Coverage\n\nThis step produces the coverage information every binner needs.\n\n1. The read pairs of all samples are flattened into one flat list of files, and the assemblies are used as they are.\n2. A nested cross product pairs each assembly with every flattened read file.\n3. Apply Rules rebuilds, for each assembly, the paired reads of each sample and the matching assembly reference. These are collection operations on the original datasets: no interlaced or de-interlaced FASTQ file is written.\n4. Bowtie2 maps every sample against every assembly.\n5. Contig depths are summarised per assembly with `jgi_summarize_bam_contig_depths`, which yields one coverage matrix per assembly with the coverage and variance of every sample.\n6. CONCOCT additionally needs the coverage of its contig fragments, which is computed separately, and the mean read length, which is estimated from both mates of every sample with SeqKit statistics. The estimate is the read-count-weighted mean (total bases divided by total reads), not an average of the per-sample means. No manual read length is required.\n\nThe depth table produced by `jgi_summarize_bam_contig_depths` starts with `contigName` (contig identifier), `contigLen` (contig length) and `totalAvgDepth` (average depth across the input BAM files). Each read sample then contributes a depth column and a variance column. This gives each assembly's contigs a coverage profile across all read samples; \u201cJGI depth table\u201d refers to this format, not to an additional input database.\n\n## Step 2: Binning\n\nEach assembly is binned separately by every enabled binner.\n\n| Binner | Inputs used |\n| --- | --- |\n| SemiBin | Contig composition and cross-sample coverage, in co-binning mode |\n| CONCOCT | Contig fragments, their coverage table and the estimated read length; fragment clusters are merged back to contigs |\n| MetaBAT2 | Contig composition and cross-sample coverage |\n| MaxBin2 | Contig composition, cross-sample coverage and marker genes |\n| COMEBin | Deep-learning binning from contig sequence and coverage; optional |\n\nA binner set to `No` is skipped, and its candidate results are replaced by empty collections so that the refinement steps keep their structure. Raw binner outputs are only available for binners that ran.\n\n## Step 3: Refinement\n\nThe candidate bins are refined with one or both refinement tools:\n\n- **DAS Tool** scores the contig-to-bin assignments of all enabled binners and selects a non-redundant set of bins.\n- **Binette** evaluates the candidate FASTA bins with CheckM2 and refines them with the selected completeness and contamination settings.\n\nSelecting **Both** runs DAS Tool and Binette independently on the candidate bins, allowing you to benefit from their different refinement approaches. The two output sets must then be combined and dereplicated downstream; this workflow does not perform dereplication. Dereplication reduces redundant genomes but does not enforce unique contig membership, so contigs can still end up in multiple retained bins. If exclusive contig assignments are required, inspect and resolve overlaps explicitly.\n\n## Outputs\n\n- **Coverage depth matrices**: one depth table per assembly, with the coverage of all original samples.\n- **CONCOCT bins**, **MaxBin2 bins**, **MetaBAT2 bins**, **SemiBin bins** and **COMEBin bins** (when COMEBin ran): one list of bins per assembly.\n- **DAS Tool bins**, **DAS Tool summary** and **DAS Tool contigs2bin report** (when DAS Tool ran): the refined bins, a per-bin summary of completeness and redundancy based on single-copy genes, and the contig-to-bin assignments.\n- **Binette bins**, **Binette input bin quality reports** and **Binette final bin quality report** (when Binette ran): the refined bins, the CheckM2 quality of the bins from each binner, and the CheckM2 quality of the final bins.\n\n## Why use this workflow\n\nBinning is a separate workflow here, so it can be reused by larger analysis pipelines without copying or rewiring it.\n\n- It keeps the binning parameters and outputs visible and controllable.\n- It can be combined with different upstream and downstream workflows, e.g. taxonomic classification, genome annotation, functional analysis or benchmarking.\n- It avoids duplicating binning logic inside every pipeline that needs it.\n\nThe IWC [MAGs generation workflow](https://iwc.galaxyproject.org/workflow/mags-building-main/) is the comprehensive alternative: it assembles reads, bins with multiple tools, dereplicates the MAGs and reports their quality and abundance in one workflow. Use it when you want MAGs and their evaluation without a specialised downstream workflow, and use this binning workflow when binning is one component of a larger analysis.\n\nThrough the workflow editor, an upstream or downstream workflow can also restrict this one, for example to a single refinement tool.\n\n## Funding\n\nThis workflow was developed as part of the [**FAIRyMAGs** project](https://elixir-europe.org/how-we-work/scientific-programme/science/bfsp/fairymags), funded as a commissioned service of the [**Biodiversity, Food Security and Pathogens (BFSP) ELIXIR Scientific Programme 2024\u20132028**](https://elixir-europe.org/how-we-work/scientific-programme/science/bfsp).\n\nThe project was also supported by the **European Galaxy Server**, funded by the German Federal Ministry of Education and Research (BMBF; 031 A538A de.NBI-RBC) and the **Ministry of Science, Research and the Arts Baden-W\u00fcrttemberg (MWK)** within the framework of **LIBIS/de.NBI Freiburg**.\n"} \ No newline at end of file