Skip to content

Add SameStr workflow#1257

Open
xens25 wants to merge 11 commits into
galaxyproject:mainfrom
xens25:add-samestr-workflow
Open

Add SameStr workflow#1257
xens25 wants to merge 11 commits into
galaxyproject:mainfrom
xens25:add-samestr-workflow

Conversation

@xens25

@xens25 xens25 commented Jun 19, 2026

Copy link
Copy Markdown

FOR CONTRIBUTOR:

  • I have read the Adding workflows guidelines
  • License permits unrestricted use (educational + commercial)
  • Please also take note of the reviewer guidelines below to facilitate a smooth review process.

FOR REVIEWERS:

  • .dockstore.yml: file is present and aligned with creator metadata in workflow. ORCID identifiers are strongly encouraged in creator metadata. The .dockstore.yml file is required to run tests
  • Workflow is sufficiently generic to be used with lab data and does not hardcode sample names, reference data and can be run without reading an accompanying tutorial.
  • In workflow: annotation field contains short description of what the workflow does. Should start with This workflow does/runs/performs … xyz … to generate/analyze/etc …
  • In workflow: workflow inputs and outputs have human readable names (spaces are fine, no underscore, dash only where spelling dictates it), no abbreviation unless it is generally understood. Altering input or output labels requires adjusting these labels in the the workflow-tests.yml file as well
  • In workflow: name field should be human readable (spaces are fine, no underscore, dash only where spelling dictates it), no abbreviation unless generally understood
  • Workflow folder: prefer dash (-) over underscore (_), prefer all lowercase. Folder becomes repository in iwc-workflows organization and is included in TRS id
  • Readme explains what workflow does, what are valid inputs and what outputs users can expect. If a tutorial or other resources exist they can be linked. If a similar workflow exists in IWC readme should explain differences with existing workflow and when one might prefer one workflow over another
  • Changelog contains appropriate entries
  • Large files (> 100 KB) are uploaded to zenodo and location urls are used in test file

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR adds a new microbiome workflow repository entry for running SameStr-based strain sharing detection on shotgun metagenomic reads, including documentation, Dockstore metadata, and a Planemo test definition.

Changes:

  • Added the Galaxy workflow definition for SameStr with optional MetaPhlAn and mOTUs subworkflows.
  • Added a Planemo test YAML plus Dockstore metadata for publishing/testing.
  • Added initial README and CHANGELOG for the new workflow folder.

Reviewed changes

Copilot reviewed 4 out of 5 changed files in this pull request and generated 10 comments.

Show a summary per file
File Description
workflows/microbiome/samestr-workflow/Galaxy-Workflow-SameStr_Workflow.ga New Galaxy workflow definition (SameStr + optional MetaPhlAn/mOTUs paths).
workflows/microbiome/samestr-workflow/Galaxy-Workflow-SameStr_Workflow-tests.yml New Planemo test definition for the workflow (currently uses non-portable dataset references).
workflows/microbiome/samestr-workflow/.dockstore.yml Dockstore descriptor pointing to the workflow and test files (missing ORCIDs).
workflows/microbiome/samestr-workflow/README.md Workflow documentation (currently FMT-specific and outputs description doesn’t match workflow outputs).
workflows/microbiome/samestr-workflow/CHANGELOG.md Initial changelog entry for first release.

Comment thread workflows/microbiome/samestr-workflow/README.md Outdated

## Inputs

- **Raw Reads**: A collection of paired-end FASTQ files (`.fastq.gz`) representing pre-FMT, donor, and post-FMT samples
Comment on lines +16 to +21
## Outputs

- **stats_file**: Summary statistics of SNV profiles per sample
- **taxon_counts**: Taxonomic abundance table
- **strain_events**: Strain-level events detected across samples
- **cooccurrences**: Strain co-occurrence patterns across samples
Comment on lines +80 to +84
"outputs": [
{
"label": "stats_file_metaphlan",
"output_name": "stats_file_metaphlan"
},
Comment on lines +258 to +262
"tool_shed": "toolshed.g2.bx.psu.edu"
},
"tool_state": "{\"alignment\": {\"alignment_tool\": {\"tool_choice\": \"bowtie2\", \"__current_case__\": 0, \"bowtie2_db\": \"hg19\"}, \"save_contaminants\": false}, \"fastqc\": {\"fastqc_report\": {\"select_fastqc\": \"no_fastqc\", \"__current_case__\": 1}, \"run_trim_repetitive\": false}, \"log_level\": \"INFO\", \"read_type\": {\"select_read_type\": \"paired\", \"__current_case__\": 1, \"save_unmatched\": true, \"paired_collection\": {\"__class__\": \"ConnectedValue\"}}, \"tandem\": {\"trf_step\": {\"trf_bool\": \"skip\", \"__current_case__\": 1}}, \"trimmomatic\": {\"trimmomatic_step\": {\"decide_trimmomatic\": \"run_trimmomatic\", \"__current_case__\": 0, \"sequencer\": \"NexteraPE\"}}, \"__page__\": 0, \"__rerun_remap_job_id__\": null}",
"tool_uuid": null,
"tool_version": "0.12.1+galaxy1",
Comment on lines +9 to +13
authors:
- name: 'Xenia '
familyName: "Morera Mart\xEDnez"
- name: 'Saim '
familyName: Momin
Comment on lines +4 to +8
subclass: Galaxy
publish: true
primaryDescriptorPath: /Galaxy-Workflow-SameStr_Workflow.ga
testParameterFiles:
- /Galaxy-Workflow-SameStr_Workflow-tests.yml
Comment thread workflows/microbiome/samestr-workflow/samestr-workflow.ga Outdated
Comment thread workflows/microbiome/samestr-workflow/Galaxy-Workflow-SameStr_Workflow-tests.yml Outdated
Comment thread workflows/microbiome/samestr-workflow/Galaxy-Workflow-SameStr_Workflow-tests.yml Outdated
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
@github-actions

Copy link
Copy Markdown

Test Results (powered by Planemo)

Test Summary

Test State Count
Total 1
Passed 0
Error 1
Failure 0
Skipped 0
Errored Tests
  • ❌ Galaxy-Workflow-SameStr_Workflow.ga_0

    Execution Problem:

    • Unexpected HTTP status code: 400: {"err_msg":"Wrong  id ( 26c75dcccb616ac82be854397f71b1c9 ) specified, unable to decode.","err_code":400009}
      

@github-actions

Copy link
Copy Markdown

Test Results (powered by Planemo)

Test Summary

Test State Count
Total 1
Passed 0
Error 1
Failure 0
Skipped 0
Errored Tests
  • ❌ samestr-workflow.ga_0

    Execution Problem:

    • Failed to run workflow, invocation ended in [failed] state.
      

    Workflow invocation details

    • Invocation Messages

      • Invocation scheduling failed because step 6 requires a dataset, but dataset entered a failed state.
    • Steps
      • Step 1: Raw Reads:

        • step_state: scheduled
      • Step 2: Run mOTUs:

        • step_state: scheduled
      • Step 3: Run MetaPhlAn:

        • step_state: scheduled
      • Step 4: Trimming and Host Removal (toolshed.g2.bx.psu.edu/repos/iuc/kneaddata/kneaddata/0.12.1+galaxy1):

        • step_state: scheduled

        • Jobs
          • Job 1:

            • Job state is error

            Traceback:

            Job Parameters:

            • Job parameter Parameter value
              __input_ext "input"
              __workflow_invocation_uuid__ "ccc0fdb26ccb11f18e447c1e52f3f80f"
              alignment {"alignment_tool": {"__current_case__": 0, "bowtie2_db": "hg19", "tool_choice": "bowtie2"}, "save_contaminants": false}
              chromInfo "/tmp/tmpnus7uga0/galaxy-dev/tool-data/shared/ucsc/chrom/?.len"
              dbkey "?"
              fastqc {"fastqc_report": {"__current_case__": 1, "select_fastqc": "no_fastqc"}, "run_trim_repetitive": false}
              log_level "INFO"
              read_type {"__current_case__": 1, "paired_collection": {"values": [{"id": 1, "src": "dce"}]}, "save_unmatched": true, "select_read_type": "paired"}
              tandem {"trf_step": {"__current_case__": 1, "trf_bool": "skip"}}
              trimmomatic {"trimmomatic_step": {"__current_case__": 0, "decide_trimmomatic": "run_trimmomatic", "sequencer": "NexteraPE"}}
          • Job 2:

            • Job state is error

            Traceback:

            Job Parameters:

            • Job parameter Parameter value
              __input_ext "input"
              __workflow_invocation_uuid__ "ccc0fdb26ccb11f18e447c1e52f3f80f"
              alignment {"alignment_tool": {"__current_case__": 0, "bowtie2_db": "hg19", "tool_choice": "bowtie2"}, "save_contaminants": false}
              chromInfo "/tmp/tmpnus7uga0/galaxy-dev/tool-data/shared/ucsc/chrom/?.len"
              dbkey "?"
              fastqc {"fastqc_report": {"__current_case__": 1, "select_fastqc": "no_fastqc"}, "run_trim_repetitive": false}
              log_level "INFO"
              read_type {"__current_case__": 1, "paired_collection": {"values": [{"id": 4, "src": "dce"}]}, "save_unmatched": true, "select_read_type": "paired"}
              tandem {"trf_step": {"__current_case__": 1, "trf_bool": "skip"}}
              trimmomatic {"trimmomatic_step": {"__current_case__": 0, "decide_trimmomatic": "run_trimmomatic", "sequencer": "NexteraPE"}}
          • Job 3:

            • Job state is error

            Traceback:

            Job Parameters:

            • Job parameter Parameter value
              __input_ext "input"
              __workflow_invocation_uuid__ "ccc0fdb26ccb11f18e447c1e52f3f80f"
              alignment {"alignment_tool": {"__current_case__": 0, "bowtie2_db": "hg19", "tool_choice": "bowtie2"}, "save_contaminants": false}
              chromInfo "/tmp/tmpnus7uga0/galaxy-dev/tool-data/shared/ucsc/chrom/?.len"
              dbkey "?"
              fastqc {"fastqc_report": {"__current_case__": 1, "select_fastqc": "no_fastqc"}, "run_trim_repetitive": false}
              log_level "INFO"
              read_type {"__current_case__": 1, "paired_collection": {"values": [{"id": 7, "src": "dce"}]}, "save_unmatched": true, "select_read_type": "paired"}
              tandem {"trf_step": {"__current_case__": 1, "trf_bool": "skip"}}
              trimmomatic {"trimmomatic_step": {"__current_case__": 0, "decide_trimmomatic": "run_trimmomatic", "sequencer": "NexteraPE"}}
      • Step 5: Merge Collections (__MERGE_COLLECTION__):

        • step_state: scheduled

        • Jobs
          • Job 1:

            • Job state is ok

            Traceback:

            Job Parameters:

            • Job parameter Parameter value
              __workflow_invocation_uuid__ "ccc0fdb26ccb11f18e447c1e52f3f80f"
              advanced {"conflict": {"__current_case__": 3, "duplicate_options": "keep_first"}}
              inputs [{"__index__": 0, "input": {"values": [{"id": 2, "src": "hdca"}]}}, {"__index__": 1, "input": {"values": [{"id": 3, "src": "hdca"}]}}]
      • Step 6: mOTUs Subworkflow:

        • step_state: new

        • Subworkflow Steps
      • Step 7: Metaphlan Subworkflow:

        • step_state: new

        • Subworkflow Steps
    • Other invocation details
      • error_message

        • Failed to run workflow, invocation ended in [failed] state.
      • history_id

        • e67548c604486e68
      • history_state

        • error
      • invocation_id

        • e67548c604486e68
      • invocation_state

        • failed
      • messages

        • [{'dependent_workflow_step_id': None, 'hda_id': 'df3057c96776898c', 'reason': 'dataset_failed', 'workflow_step_id': 5}]
      • workflow_id

        • e4394a19e92b3aca

@xens25 xens25 closed this Jun 22, 2026
@xens25 xens25 reopened this Jun 22, 2026
@mvdbeek
mvdbeek requested a review from Copilot June 23, 2026 14:24
testParameterFiles:
- /samestr-workflow-tests.yml
authors:
- name: 'Xenia Morera Martinez'

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you please put your ORCID id here ?

"name": "Xenia "
},
{
"class": "Person",

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this doesn't match the authors in .dockstore.yml, but please also add the orcid ids here

"owner": "iuc",
"tool_shed": "toolshed.g2.bx.psu.edu"
},
"tool_state": "{\"alignment\": {\"alignment_tool\": {\"tool_choice\": \"bowtie2\", \"__current_case__\": 0, \"bowtie2_db\": \"hg19\"}, \"save_contaminants\": false}, \"fastqc\": {\"fastqc_report\": {\"select_fastqc\": \"no_fastqc\", \"__current_case__\": 1}, \"run_trim_repetitive\": false}, \"log_level\": \"INFO\", \"read_type\": {\"select_read_type\": \"paired\", \"__current_case__\": 1, \"save_unmatched\": true, \"paired_collection\": {\"__class__\": \"ConnectedValue\"}}, \"tandem\": {\"trf_step\": {\"trf_bool\": \"skip\", \"__current_case__\": 1}}, \"trimmomatic\": {\"trimmomatic_step\": {\"decide_trimmomatic\": \"run_trimmomatic\", \"__current_case__\": 0, \"sequencer\": \"NexteraPE\"}}, \"__page__\": 0, \"__rerun_remap_job_id__\": null}",

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you please make the bowtie database configurable ?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It also seems like sequencer is something to make configurable ?

This workflow processes paired-end shotgun metagenomic sequencing reads from multiple samples. It performs the following steps:

- **Preprocessing**: Quality trimming and host read removal using KneadData
- **Taxonomic profiling**: MetaPhlAn4 or mOTUs for taxonomic classification

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this different from Metaphlan below ?

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No, it's the same step. I'll add them together

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 4 out of 5 changed files in this pull request and generated 8 comments.

Comment thread workflows/microbiome/samestr-workflow/samestr-workflow.ga Outdated
Comment thread workflows/microbiome/samestr-workflow/samestr-workflow.ga Outdated
Comment thread workflows/microbiome/samestr-workflow/.dockstore.yml Outdated
Comment on lines +223 to +227
"name": "kneaddata",
"owner": "iuc",
"tool_shed": "toolshed.g2.bx.psu.edu"
},
"tool_state": "{\"alignment\": {\"alignment_tool\": {\"tool_choice\": \"bowtie2\", \"__current_case__\": 0, \"bowtie2_db\": \"hg19\"}, \"save_contaminants\": false}, \"fastqc\": {\"fastqc_report\": {\"select_fastqc\": \"no_fastqc\", \"__current_case__\": 1}, \"run_trim_repetitive\": false}, \"log_level\": \"INFO\", \"read_type\": {\"select_read_type\": \"paired\", \"__current_case__\": 1, \"save_unmatched\": true, \"paired_collection\": {\"__class__\": \"ConnectedValue\"}}, \"tandem\": {\"trf_step\": {\"trf_bool\": \"skip\", \"__current_case__\": 1}}, \"trimmomatic\": {\"trimmomatic_step\": {\"decide_trimmomatic\": \"run_trimmomatic\", \"__current_case__\": 0, \"sequencer\": \"NexteraPE\"}}, \"__page__\": 0, \"__rerun_remap_job_id__\": null}",
Comment on lines +1507 to +1511
"name": "metaphlan",
"owner": "iuc",
"tool_shed": "toolshed.g2.bx.psu.edu"
},
"tool_state": "{\"analysis\": {\"analysis_type\": {\"t\": \"rel_ab\", \"__current_case__\": 0, \"tax_lev\": {\"tax_lev\": \"a\", \"__current_case__\": 0, \"split_levels\": false}}, \"min_alignment_len\": null, \"organism_profiling\": null, \"stat\": \"tavg_g\", \"stat_q\": \"0.2\", \"perc_nonzero\": \"0.33\", \"ignore_markers\": {\"__class__\": \"RuntimeValue\"}, \"avoid_disqm\": true}, \"inputs\": {\"in\": {\"selector\": \"raw\", \"__current_case__\": 0, \"raw_in\": {\"selector\": \"paired_collection\", \"__current_case__\": 2, \"in\": {\"__class__\": \"ConnectedValue\"}}, \"read_min_len\": \"70\", \"mapping\": {\"bt2_ps\": \"very-sensitive\", \"min_mapq_val\": \"5\"}}, \"db\": {\"db_selector\": \"cached\", \"__current_case__\": 0, \"cached_db\": \"mpa_vJan25_CHOCOPhlAnSGB_202503-11062025\", \"viral_analysis\": {\"profile_vsc\": \"\", \"__current_case__\": 1}}}, \"out\": {\"sample_id_key\": \"SampleID\", \"sample_id\": \"Metaphlan_Analysis\", \"use_group_representative\": false, \"CAMI_format_output\": false, \"skip_unclassified_estimation\": false, \"biom_format_output\": false, \"krona_output\": false}, \"subsample\": {\"selector\": \"no\", \"__current_case__\": 0}, \"test\": \"false\", \"__page__\": 0, \"__rerun_remap_job_id__\": null}",
Comment on lines +63 to +67
{
"class": "Person",
"familyName": "Morera Mart\u00ednez",
"name": "Xenia "
},
"owner": "bgruening",
"tool_shed": "toolshed.g2.bx.psu.edu"
},
"tool_state": "{\"algorithm_advanced_options\": {\"advanced_options\": {\"customize_algorithm_options\": \"default_options\", \"__current_case__\": 1}}, \"all_taxonomic_level\": false, \"biom_format\": false, \"cami_format_option\": {\"cami_options\": \"no\", \"__current_case__\": 1}, \"full_rank_taxonomy\": false, \"full_species_name\": false, \"inputs\": {\"input_type\": {\"selector\": \"reads\", \"__current_case__\": 0, \"reads_type\": {\"selector\": \"paired\", \"__current_case__\": 0, \"forward_reads\": {\"__class__\": \"ConnectedValue\"}, \"reverse_reads\": {\"__class__\": \"ConnectedValue\"}}}, \"sample_name\": null, \"db\": {\"db_source\": \"cached\", \"__current_case__\": 0, \"db_cached\": \"db_from_2026-04-27T094930Z\"}}, \"ncbi_taxonomy_ids\": false, \"ref_motus\": false, \"result_as_counts\": false, \"save_bam\": false, \"save_mgc\": false, \"taxonomic_level_option\": {\"taxonomic_option\": \"no\", \"__current_case__\": 1}, \"__page__\": 0, \"__rerun_remap_job_id__\": null}",

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This one too should be configurable

Comment thread workflows/microbiome/samestr-workflow/.dockstore.yml Outdated
@github-actions

Copy link
Copy Markdown

Test Results (powered by Planemo)

Test Summary

Test State Count
Total 1
Passed 0
Error 1
Failure 0
Skipped 0
Errored Tests
  • ❌ samestr-workflow.ga_0

    Execution Problem:

    • Failed to run workflow, invocation ended in [failed] state.
      

    Workflow invocation details

    • Invocation Messages

      • Invocation scheduling failed because step 6 requires a dataset, but dataset entered a failed state.
    • Steps
      • Step 1: Raw Reads:

        • step_state: scheduled
      • Step 2: Run mOTUs:

        • step_state: scheduled
      • Step 3: Run MetaPhlAn:

        • step_state: scheduled
      • Step 4: Trimming and Host Removal (toolshed.g2.bx.psu.edu/repos/iuc/kneaddata/kneaddata/0.12.1+galaxy1):

        • step_state: scheduled

        • Jobs
          • Job 1:

            • Job state is error

            Traceback:

            Job Parameters:

            • Job parameter Parameter value
              __input_ext "input"
              __workflow_invocation_uuid__ "b9a90de46f1111f18e447ced8d3d705f"
              alignment {"alignment_tool": {"__current_case__": 0, "bowtie2_db": "hg19", "tool_choice": "bowtie2"}, "save_contaminants": false}
              chromInfo "/tmp/tmprgyfg3d9/galaxy-dev/tool-data/shared/ucsc/chrom/?.len"
              dbkey "?"
              fastqc {"fastqc_report": {"__current_case__": 1, "select_fastqc": "no_fastqc"}, "run_trim_repetitive": false}
              log_level "INFO"
              read_type {"__current_case__": 1, "paired_collection": {"values": [{"id": 1, "src": "dce"}]}, "save_unmatched": true, "select_read_type": "paired"}
              tandem {"trf_step": {"__current_case__": 1, "trf_bool": "skip"}}
              trimmomatic {"trimmomatic_step": {"__current_case__": 0, "decide_trimmomatic": "run_trimmomatic", "sequencer": "NexteraPE"}}
          • Job 2:

            • Job state is error

            Traceback:

            Job Parameters:

            • Job parameter Parameter value
              __input_ext "input"
              __workflow_invocation_uuid__ "b9a90de46f1111f18e447ced8d3d705f"
              alignment {"alignment_tool": {"__current_case__": 0, "bowtie2_db": "hg19", "tool_choice": "bowtie2"}, "save_contaminants": false}
              chromInfo "/tmp/tmprgyfg3d9/galaxy-dev/tool-data/shared/ucsc/chrom/?.len"
              dbkey "?"
              fastqc {"fastqc_report": {"__current_case__": 1, "select_fastqc": "no_fastqc"}, "run_trim_repetitive": false}
              log_level "INFO"
              read_type {"__current_case__": 1, "paired_collection": {"values": [{"id": 4, "src": "dce"}]}, "save_unmatched": true, "select_read_type": "paired"}
              tandem {"trf_step": {"__current_case__": 1, "trf_bool": "skip"}}
              trimmomatic {"trimmomatic_step": {"__current_case__": 0, "decide_trimmomatic": "run_trimmomatic", "sequencer": "NexteraPE"}}
          • Job 3:

            • Job state is error

            Traceback:

            Job Parameters:

            • Job parameter Parameter value
              __input_ext "input"
              __workflow_invocation_uuid__ "b9a90de46f1111f18e447ced8d3d705f"
              alignment {"alignment_tool": {"__current_case__": 0, "bowtie2_db": "hg19", "tool_choice": "bowtie2"}, "save_contaminants": false}
              chromInfo "/tmp/tmprgyfg3d9/galaxy-dev/tool-data/shared/ucsc/chrom/?.len"
              dbkey "?"
              fastqc {"fastqc_report": {"__current_case__": 1, "select_fastqc": "no_fastqc"}, "run_trim_repetitive": false}
              log_level "INFO"
              read_type {"__current_case__": 1, "paired_collection": {"values": [{"id": 7, "src": "dce"}]}, "save_unmatched": true, "select_read_type": "paired"}
              tandem {"trf_step": {"__current_case__": 1, "trf_bool": "skip"}}
              trimmomatic {"trimmomatic_step": {"__current_case__": 0, "decide_trimmomatic": "run_trimmomatic", "sequencer": "NexteraPE"}}
      • Step 5: Merge Collections (__MERGE_COLLECTION__):

        • step_state: scheduled

        • Jobs
          • Job 1:

            • Job state is ok

            Traceback:

            Job Parameters:

            • Job parameter Parameter value
              __workflow_invocation_uuid__ "b9a90de46f1111f18e447ced8d3d705f"
              advanced {"conflict": {"__current_case__": 3, "duplicate_options": "keep_first"}}
              inputs [{"__index__": 0, "input": {"values": [{"id": 2, "src": "hdca"}]}}, {"__index__": 1, "input": {"values": [{"id": 3, "src": "hdca"}]}}]
      • Step 6: mOTUs Subworkflow:

        • step_state: new

        • Subworkflow Steps
      • Step 7: Metaphlan Subworkflow:

        • step_state: new

        • Subworkflow Steps
    • Other invocation details
      • error_message

        • Failed to run workflow, invocation ended in [failed] state.
      • history_id

        • e8762844deaab4fe
      • history_state

        • error
      • invocation_id

        • e8762844deaab4fe
      • invocation_state

        • failed
      • messages

        • [{'dependent_workflow_step_id': None, 'hda_id': 'cbf528282c4d7152', 'reason': 'dataset_failed', 'workflow_step_id': 5}]
      • workflow_id

        • 3d220d7127134253

xens25 and others added 3 commits June 23, 2026 17:26
@xens25

xens25 commented Jun 23, 2026

Copy link
Copy Markdown
Author

@mvdbeek Thanks for the suggestions. I added the fixes, let me know if there's anything else that needs to be modified

@mvdbeek

mvdbeek commented Jun 25, 2026

Copy link
Copy Markdown
Member

I see you've made the parameters runtime values, but can you please make them workflow input parameters ? Here's a tutorial that hopefully covers how to do this: https://training.galaxyproject.org/training-material/topics/galaxy-interface/tutorials/workflow-parameters/tutorial.html

@xens25

xens25 commented Jun 30, 2026

Copy link
Copy Markdown
Author

@mvdbeek Thanks for the tutorial, it was very helpful. I'm not sure if it's now correct, I've added the parameters as text inputs in both the subworkflows and workflow.

@xens25
xens25 requested a review from mvdbeek July 2, 2026 07:09
@github-actions

github-actions Bot commented Jul 2, 2026

Copy link
Copy Markdown

Test Results (powered by Planemo)

Test Summary

Test State Count
Total 1
Passed 0
Error 1
Failure 0
Skipped 0
Errored Tests
  • ❌ samestrgal.ga_0

    Execution Problem:

    • Failed to run workflow, invocation ended in [failed] state.
      

    Workflow invocation details

    • Invocation Messages

      • Invocation scheduling failed because step 11 requires a dataset, but dataset entered a failed state.
    • Steps
      • Step 1: Raw Reads:

        • step_state: scheduled
      • Step 2: Select Host reference genome:

        • step_state: scheduled
      • Step 3: Select Sequencer for Trimmomatic:

        • step_state: scheduled
      • Step 4: Run mOTUs:

        • step_state: scheduled
      • Step 5: Select the mOTUs database:

        • step_state: scheduled
      • Step 6: Select SameStr database:

        • step_state: scheduled
      • Step 7: Run MetaPhlAn:

        • step_state: scheduled
      • Step 8: Select MetaPhlAn Database:

        • step_state: scheduled
      • Step 9: Trimming and Host Removal (toolshed.g2.bx.psu.edu/repos/iuc/kneaddata/kneaddata/0.12.1+galaxy1):

        • step_state: scheduled

        • Jobs
          • Job 1:

            • Job state is error

            Traceback:

            Job Parameters:

            • Job parameter Parameter value
              __input_ext "input"
              __workflow_invocation_uuid__ "97d1a53275ec11f1b7fc7c1e52e11cf7"
              alignment {"alignment_tool": {"__current_case__": 0, "bowtie2_db": "hg19", "tool_choice": "bowtie2"}, "save_contaminants": false}
              chromInfo "/tmp/tmp8v4bg43c/galaxy-dev/tool-data/shared/ucsc/chrom/?.len"
              dbkey "?"
              fastqc {"fastqc_report": {"__current_case__": 1, "select_fastqc": "no_fastqc"}, "run_trim_repetitive": false}
              log_level "INFO"
              read_type {"__current_case__": 1, "paired_collection": {"values": [{"id": 1, "src": "dce"}]}, "save_unmatched": true, "select_read_type": "paired"}
              tandem {"trf_step": {"__current_case__": 1, "trf_bool": "skip"}}
              trimmomatic {"trimmomatic_step": {"__current_case__": 0, "decide_trimmomatic": "run_trimmomatic", "sequencer": "NexteraPE"}}
          • Job 2:

            • Job state is error

            Traceback:

            Job Parameters:

            • Job parameter Parameter value
              __input_ext "input"
              __workflow_invocation_uuid__ "97d1a53275ec11f1b7fc7c1e52e11cf7"
              alignment {"alignment_tool": {"__current_case__": 0, "bowtie2_db": "hg19", "tool_choice": "bowtie2"}, "save_contaminants": false}
              chromInfo "/tmp/tmp8v4bg43c/galaxy-dev/tool-data/shared/ucsc/chrom/?.len"
              dbkey "?"
              fastqc {"fastqc_report": {"__current_case__": 1, "select_fastqc": "no_fastqc"}, "run_trim_repetitive": false}
              log_level "INFO"
              read_type {"__current_case__": 1, "paired_collection": {"values": [{"id": 4, "src": "dce"}]}, "save_unmatched": true, "select_read_type": "paired"}
              tandem {"trf_step": {"__current_case__": 1, "trf_bool": "skip"}}
              trimmomatic {"trimmomatic_step": {"__current_case__": 0, "decide_trimmomatic": "run_trimmomatic", "sequencer": "NexteraPE"}}
          • Job 3:

            • Job state is error

            Traceback:

            Job Parameters:

            • Job parameter Parameter value
              __input_ext "input"
              __workflow_invocation_uuid__ "97d1a53275ec11f1b7fc7c1e52e11cf7"
              alignment {"alignment_tool": {"__current_case__": 0, "bowtie2_db": "hg19", "tool_choice": "bowtie2"}, "save_contaminants": false}
              chromInfo "/tmp/tmp8v4bg43c/galaxy-dev/tool-data/shared/ucsc/chrom/?.len"
              dbkey "?"
              fastqc {"fastqc_report": {"__current_case__": 1, "select_fastqc": "no_fastqc"}, "run_trim_repetitive": false}
              log_level "INFO"
              read_type {"__current_case__": 1, "paired_collection": {"values": [{"id": 7, "src": "dce"}]}, "save_unmatched": true, "select_read_type": "paired"}
              tandem {"trf_step": {"__current_case__": 1, "trf_bool": "skip"}}
              trimmomatic {"trimmomatic_step": {"__current_case__": 0, "decide_trimmomatic": "run_trimmomatic", "sequencer": "NexteraPE"}}
      • Step 10: Merge Collections (__MERGE_COLLECTION__):

        • step_state: scheduled

        • Jobs
          • Job 1:

            • Job state is ok

            Traceback:

            Job Parameters:

            • Job parameter Parameter value
              __workflow_invocation_uuid__ "97d1a53275ec11f1b7fc7c1e52e11cf7"
              advanced {"conflict": {"__current_case__": 3, "duplicate_options": "keep_first"}}
              inputs [{"__index__": 0, "input": {"values": [{"id": 2, "src": "hdca"}]}}, {"__index__": 1, "input": {"values": [{"id": 3, "src": "hdca"}]}}]
      • Step 11: mOTUs Subworkflow:

        • step_state: new

        • Subworkflow Steps
      • Step 12: Metaphlan Subworkflow:

        • step_state: new

        • Subworkflow Steps
    • Other invocation details
      • error_message

        • Failed to run workflow, invocation ended in [failed] state.
      • history_id

        • 0023394aa3e8dbe6
      • history_state

        • error
      • invocation_id

        • 0023394aa3e8dbe6
      • invocation_state

        • failed
      • messages

        • [{'dependent_workflow_step_id': None, 'hda_id': 'ec3c52b53378337b', 'reason': 'dataset_failed', 'workflow_step_id': 10}]
      • workflow_id

        • 14c18da32daeaf08

@github-actions

github-actions Bot commented Jul 2, 2026

Copy link
Copy Markdown

Test Results (powered by Planemo)

Test Summary

Test State Count
Total 1
Passed 0
Error 1
Failure 0
Skipped 0
Errored Tests
  • ❌ samestrgal.ga_0

    Execution Problem:

    • Failed to run workflow, invocation ended in [failed] state.
      

    Workflow invocation details

    • Invocation Messages

      • Invocation scheduling failed because step 12 requires a dataset, but dataset entered a failed state.
    • Steps
      • Step 1: Raw Reads:

        • step_state: scheduled
      • Step 2: Select Host reference genome:

        • step_state: scheduled
      • Step 3: Select Sequencer for Trimmomatic:

        • step_state: scheduled
      • Step 4: Run mOTUs:

        • step_state: scheduled
      • Step 5: Select the mOTUs database:

        • step_state: scheduled
      • Step 6: Select SameStr database mOTUs:

        • step_state: scheduled
      • Step 7: Select SameStr database MetaPhlAn:

        • step_state: scheduled
      • Step 8: Run MetaPhlAn:

        • step_state: scheduled
      • Step 9: Select MetaPhlAn Database:

        • step_state: scheduled
      • Step 10: Trimming and Host Removal (toolshed.g2.bx.psu.edu/repos/iuc/kneaddata/kneaddata/0.12.1+galaxy1):

        • step_state: scheduled

        • Jobs
          • Job 1:

            • Job state is error

            Traceback:

            Job Parameters:

            • Job parameter Parameter value
              __input_ext "input"
              __workflow_invocation_uuid__ "752910d4763111f1b7fc7ced8d7b7cc1"
              alignment {"alignment_tool": {"__current_case__": 0, "bowtie2_db": "hg19", "tool_choice": "bowtie2"}, "save_contaminants": false}
              chromInfo "/tmp/tmpgqairzrw/galaxy-dev/tool-data/shared/ucsc/chrom/?.len"
              dbkey "?"
              fastqc {"fastqc_report": {"__current_case__": 1, "select_fastqc": "no_fastqc"}, "run_trim_repetitive": false}
              log_level "INFO"
              read_type {"__current_case__": 1, "paired_collection": {"values": [{"id": 1, "src": "dce"}]}, "save_unmatched": true, "select_read_type": "paired"}
              tandem {"trf_step": {"__current_case__": 1, "trf_bool": "skip"}}
              trimmomatic {"trimmomatic_step": {"__current_case__": 0, "decide_trimmomatic": "run_trimmomatic", "sequencer": "NexteraPE"}}
          • Job 2:

            • Job state is error

            Traceback:

            Job Parameters:

            • Job parameter Parameter value
              __input_ext "input"
              __workflow_invocation_uuid__ "752910d4763111f1b7fc7ced8d7b7cc1"
              alignment {"alignment_tool": {"__current_case__": 0, "bowtie2_db": "hg19", "tool_choice": "bowtie2"}, "save_contaminants": false}
              chromInfo "/tmp/tmpgqairzrw/galaxy-dev/tool-data/shared/ucsc/chrom/?.len"
              dbkey "?"
              fastqc {"fastqc_report": {"__current_case__": 1, "select_fastqc": "no_fastqc"}, "run_trim_repetitive": false}
              log_level "INFO"
              read_type {"__current_case__": 1, "paired_collection": {"values": [{"id": 4, "src": "dce"}]}, "save_unmatched": true, "select_read_type": "paired"}
              tandem {"trf_step": {"__current_case__": 1, "trf_bool": "skip"}}
              trimmomatic {"trimmomatic_step": {"__current_case__": 0, "decide_trimmomatic": "run_trimmomatic", "sequencer": "NexteraPE"}}
          • Job 3:

            • Job state is error

            Traceback:

            Job Parameters:

            • Job parameter Parameter value
              __input_ext "input"
              __workflow_invocation_uuid__ "752910d4763111f1b7fc7ced8d7b7cc1"
              alignment {"alignment_tool": {"__current_case__": 0, "bowtie2_db": "hg19", "tool_choice": "bowtie2"}, "save_contaminants": false}
              chromInfo "/tmp/tmpgqairzrw/galaxy-dev/tool-data/shared/ucsc/chrom/?.len"
              dbkey "?"
              fastqc {"fastqc_report": {"__current_case__": 1, "select_fastqc": "no_fastqc"}, "run_trim_repetitive": false}
              log_level "INFO"
              read_type {"__current_case__": 1, "paired_collection": {"values": [{"id": 7, "src": "dce"}]}, "save_unmatched": true, "select_read_type": "paired"}
              tandem {"trf_step": {"__current_case__": 1, "trf_bool": "skip"}}
              trimmomatic {"trimmomatic_step": {"__current_case__": 0, "decide_trimmomatic": "run_trimmomatic", "sequencer": "NexteraPE"}}
      • Step 11: Merge Collections (__MERGE_COLLECTION__):

        • step_state: scheduled

        • Jobs
          • Job 1:

            • Job state is ok

            Traceback:

            Job Parameters:

            • Job parameter Parameter value
              __workflow_invocation_uuid__ "752910d4763111f1b7fc7ced8d7b7cc1"
              advanced {"conflict": {"__current_case__": 3, "duplicate_options": "keep_first"}}
              inputs [{"__index__": 0, "input": {"values": [{"id": 2, "src": "hdca"}]}}, {"__index__": 1, "input": {"values": [{"id": 3, "src": "hdca"}]}}]
      • Step 12: mOTUs Subworkflow:

        • step_state: new

        • Subworkflow Steps
      • Step 13: Metaphlan Subworkflow:

        • step_state: new

        • Subworkflow Steps
    • Other invocation details
      • error_message

        • Failed to run workflow, invocation ended in [failed] state.
      • history_id

        • 759fa35c6f9f412a
      • history_state

        • queued
      • invocation_id

        • 759fa35c6f9f412a
      • invocation_state

        • failed
      • messages

        • [{'dependent_workflow_step_id': None, 'hda_id': '2d841fb5c7a91302', 'reason': 'dataset_failed', 'workflow_step_id': 11}]
      • workflow_id

        • a238847430e412c0

@xens25

xens25 commented Jul 3, 2026

Copy link
Copy Markdown
Author

I'm not sure why the test is failing, in the terminal both lint and test pass. I think it might be related to the subworkflows. @mvdbeek could you provide some insight on how to fix this?

@mvdbeek

mvdbeek commented Jul 3, 2026

Copy link
Copy Markdown
Member

Most of the databases and database values that the workflow uses are only available at usegalaxy.eu and are not portable to other Galaxy instances. We load the distributed CVMFS file system in the tests so that anyone can use these workflows. I'll see that we can sync these but that will take a couple of days.

I would also strongly suggest using this for all databases instead of pre-specifying the valid options:
Screenshot 2026-07-03 at 09 25 50

@xens25

xens25 commented Jul 7, 2026

Copy link
Copy Markdown
Author

Thanks @mvdbeek ! I’ve updated the database option. Let me know if any further fixes are needed from my side.

@github-actions

github-actions Bot commented Jul 8, 2026

Copy link
Copy Markdown

Test Results (powered by Planemo)

Test Summary

Test State Count
Total 1
Passed 0
Error 1
Failure 0
Skipped 0
Errored Tests
  • ❌ samestrgal.ga_0

    Execution Problem:

    • Failed to run workflow, invocation ended in [failed] state.
      

    Workflow invocation details

    • Invocation Messages

      • Invocation scheduling failed because step 9 requires a dataset, but dataset entered a failed state.
    • Steps
      • Step 1: Raw Reads:

        • step_state: scheduled
      • Step 2: Select Host reference genome:

        • step_state: scheduled
      • Step 3: Select Sequencer for Trimmomatic:

        • step_state: scheduled
      • Step 4: Select SameStr database MetaPhlAn:

        • step_state: scheduled
      • Step 5: Run MetaPhlAn:

        • step_state: scheduled
      • Step 6: Select MetaPhlAn Database:

        • step_state: scheduled
      • Step 7: Trimming and Host Removal (toolshed.g2.bx.psu.edu/repos/iuc/kneaddata/kneaddata/0.12.1+galaxy1):

        • step_state: scheduled

        • Jobs
          • Job 1:

            • Job state is error

            Traceback:

            Job Parameters:

            • Job parameter Parameter value
              __input_ext "input"
              __workflow_invocation_uuid__ "d8fe0c347aa711f18d84000d3a7e43b5"
              alignment {"alignment_tool": {"__current_case__": 0, "bowtie2_db": "hg19", "tool_choice": "bowtie2"}, "save_contaminants": false}
              chromInfo "/tmp/tmpw4dmkd45/galaxy-dev/tool-data/shared/ucsc/chrom/?.len"
              dbkey "?"
              fastqc {"fastqc_report": {"__current_case__": 1, "select_fastqc": "no_fastqc"}, "run_trim_repetitive": false}
              log_level "INFO"
              read_type {"__current_case__": 1, "paired_collection": {"values": [{"id": 1, "src": "dce"}]}, "save_unmatched": true, "select_read_type": "paired"}
              tandem {"trf_step": {"__current_case__": 1, "trf_bool": "skip"}}
              trimmomatic {"trimmomatic_step": {"__current_case__": 0, "decide_trimmomatic": "run_trimmomatic", "sequencer": "NexteraPE"}}
          • Job 2:

            • Job state is error

            Traceback:

            Job Parameters:

            • Job parameter Parameter value
              __input_ext "input"
              __workflow_invocation_uuid__ "d8fe0c347aa711f18d84000d3a7e43b5"
              alignment {"alignment_tool": {"__current_case__": 0, "bowtie2_db": "hg19", "tool_choice": "bowtie2"}, "save_contaminants": false}
              chromInfo "/tmp/tmpw4dmkd45/galaxy-dev/tool-data/shared/ucsc/chrom/?.len"
              dbkey "?"
              fastqc {"fastqc_report": {"__current_case__": 1, "select_fastqc": "no_fastqc"}, "run_trim_repetitive": false}
              log_level "INFO"
              read_type {"__current_case__": 1, "paired_collection": {"values": [{"id": 4, "src": "dce"}]}, "save_unmatched": true, "select_read_type": "paired"}
              tandem {"trf_step": {"__current_case__": 1, "trf_bool": "skip"}}
              trimmomatic {"trimmomatic_step": {"__current_case__": 0, "decide_trimmomatic": "run_trimmomatic", "sequencer": "NexteraPE"}}
          • Job 3:

            • Job state is error

            Traceback:

            Job Parameters:

            • Job parameter Parameter value
              __input_ext "input"
              __workflow_invocation_uuid__ "d8fe0c347aa711f18d84000d3a7e43b5"
              alignment {"alignment_tool": {"__current_case__": 0, "bowtie2_db": "hg19", "tool_choice": "bowtie2"}, "save_contaminants": false}
              chromInfo "/tmp/tmpw4dmkd45/galaxy-dev/tool-data/shared/ucsc/chrom/?.len"
              dbkey "?"
              fastqc {"fastqc_report": {"__current_case__": 1, "select_fastqc": "no_fastqc"}, "run_trim_repetitive": false}
              log_level "INFO"
              read_type {"__current_case__": 1, "paired_collection": {"values": [{"id": 7, "src": "dce"}]}, "save_unmatched": true, "select_read_type": "paired"}
              tandem {"trf_step": {"__current_case__": 1, "trf_bool": "skip"}}
              trimmomatic {"trimmomatic_step": {"__current_case__": 0, "decide_trimmomatic": "run_trimmomatic", "sequencer": "NexteraPE"}}
      • Step 8: Merge Collections (__MERGE_COLLECTION__):

        • step_state: scheduled

        • Jobs
          • Job 1:

            • Job state is ok

            Traceback:

            Job Parameters:

            • Job parameter Parameter value
              __workflow_invocation_uuid__ "d8fe0c347aa711f18d84000d3a7e43b5"
              advanced {"conflict": {"__current_case__": 3, "duplicate_options": "keep_first"}}
              inputs [{"__index__": 0, "input": {"values": [{"id": 2, "src": "hdca"}]}}, {"__index__": 1, "input": {"values": [{"id": 3, "src": "hdca"}]}}]
      • Step 9: Metaphlan Subworkflow:

        • step_state: new

        • Subworkflow Steps
    • Other invocation details
      • error_message

        • Failed to run workflow, invocation ended in [failed] state.
      • history_id

        • cc211d664d64c975
      • history_state

        • error
      • invocation_id

        • cc211d664d64c975
      • invocation_state

        • failed
      • messages

        • [{'dependent_workflow_step_id': None, 'hda_id': '74e28a2d181a5d0c', 'reason': 'dataset_failed', 'workflow_step_id': 8, 'workflow_step_index_path': [8]}]
      • workflow_id

        • ad108a538eb654c5

@xens25

xens25 commented Jul 9, 2026

Copy link
Copy Markdown
Author

Most of the databases and database values that the workflow uses are only available at usegalaxy.eu and are not portable to other Galaxy instances. We load the distributed CVMFS file system in the tests so that anyone can use these workflows. I'll see that we can sync these but that will take a couple of days.

I would also strongly suggest using this for all databases instead of pre-specifying the valid options: Screenshot 2026-07-03 at 09 25 50

Do we have any updates on this?

@mvdbeek

mvdbeek commented Jul 12, 2026

Copy link
Copy Markdown
Member

working on that here: galaxyproject/idc#89.
most of the databases are there but still working on samestr

@@ -0,0 +1,18 @@
# SamestrGal for shared-strain detection in metagenomes

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not sure that's the best name for the workflow. Other WFs do not mention Galaxy in their name because it's rather obvious after all.

collection_type: list:paired
elements:
- class: Collection
type: paired

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
type: paired
collection_type: paired

see the recent #1292

location: https://zenodo.org/records/20745835/files/28C_R2.fastq.gz
filetype: fastqsanger.gz
- class: Collection
type: paired

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
type: paired
collection_type: paired

location: https://zenodo.org/records/20745835/files/28B_R2.fastq.gz
filetype: fastqsanger.gz
- class: Collection
type: paired

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
type: paired
collection_type: paired

Comment on lines +63 to +90
"Taxon counts (MetaPhlAn)":
asserts:
has_text:
text: "28A"
has_text:
text: "28B"
has_text:
text: "28C"
"Strain events (MetaPhlAn)":
asserts:
has_text:
text: "t__SGB15299"
has_text:
text: "t__SGB4285"
has_text:
text: "t__SGB6362"
has_text:
text: "28B"
has_text:
text: "28C"
"Co-occurrences (MetaPhlAn)":
asserts:
has_text:
text: "28A"
has_text:
text: "28B"
has_text:
text: "28C"

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

please consult #1275 and fix the asserts accordingly

Comment on lines +768 to +890
"7": {
"annotation": "Extract element identifiers from flattened collection to prepare for renaming",
"content_id": "toolshed.g2.bx.psu.edu/repos/iuc/collection_element_identifiers/collection_element_identifiers/0.0.3",
"errors": null,
"id": 7,
"input_connections": {
"input_collection": {
"id": 6,
"output_name": "output"
}
},
"inputs": [],
"label": null,
"name": "Extract element identifiers",
"outputs": [
{
"name": "output",
"type": "txt"
}
],
"position": {
"left": 1170.5999450683594,
"top": 632.0133083088757
},
"post_job_actions": {},
"tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/collection_element_identifiers/collection_element_identifiers/0.0.3",
"tool_shed_repository": {
"changeset_revision": "3e27acfa4830",
"name": "collection_element_identifiers",
"owner": "iuc",
"tool_shed": "toolshed.g2.bx.psu.edu"
},
"tool_state": "{\"input_collection\": {\"__class__\": \"ConnectedValue\"}, \"__page__\": 0, \"__rerun_remap_job_id__\": null}",
"tool_uuid": null,
"tool_version": "0.0.3",
"type": "tool",
"uuid": "2277359e-9fff-4a91-ac55-de361a90439c",
"when": null,
"workflow_outputs": []
},
"8": {
"annotation": "Clean element identifiers after flattening to restore compatible naming for downstream tools",
"content_id": "toolshed.g2.bx.psu.edu/repos/galaxyp/regex_find_replace/regex1/1.0.3",
"errors": null,
"id": 8,
"input_connections": {
"input": {
"id": 7,
"output_name": "output"
}
},
"inputs": [],
"label": null,
"name": "Regex Find And Replace",
"outputs": [
{
"name": "out_file1",
"type": "input"
}
],
"position": {
"left": 1456.9501085652712,
"top": 637.0007277299707
},
"post_job_actions": {},
"tool_id": "toolshed.g2.bx.psu.edu/repos/galaxyp/regex_find_replace/regex1/1.0.3",
"tool_shed_repository": {
"changeset_revision": "503bcd6ebe4b",
"name": "regex_find_replace",
"owner": "galaxyp",
"tool_shed": "toolshed.g2.bx.psu.edu"
},
"tool_state": "{\"checks\": [{\"__index__\": 0, \"pattern\": \"^[^_]+_\", \"replacement\": \"\"}], \"input\": {\"__class__\": \"ConnectedValue\"}, \"__page__\": 0, \"__rerun_remap_job_id__\": null}",
"tool_uuid": null,
"tool_version": "1.0.3",
"type": "tool",
"uuid": "52c68971-3407-49c2-bd29-9bfa40c06ad5",
"when": null,
"workflow_outputs": []
},
"9": {
"annotation": "Rename cleaned identifiers to match SameStr expected format",
"content_id": "__RELABEL_FROM_FILE__",
"errors": null,
"id": 9,
"input_connections": {
"how|labels": {
"id": 8,
"output_name": "out_file1"
},
"input": {
"id": 6,
"output_name": "output"
}
},
"inputs": [
{
"description": "runtime parameter for tool Relabel identifiers",
"name": "how"
}
],
"label": null,
"name": "Relabel identifiers",
"outputs": [
{
"name": "output",
"type": "input"
}
],
"position": {
"left": 1708.700108565271,
"top": 622.8882399370019
},
"post_job_actions": {},
"tool_id": "__RELABEL_FROM_FILE__",
"tool_state": "{\"how\": {\"how_select\": \"txt\", \"__current_case__\": 0, \"labels\": {\"__class__\": \"ConnectedValue\"}, \"strict\": false}, \"input\": {\"__class__\": \"ConnectedValue\"}, \"__page__\": 0, \"__rerun_remap_job_id__\": null}",
"tool_uuid": null,
"tool_version": "1.1.0",
"type": "tool",
"uuid": "10bb239a-98ea-42df-b481-fcb1311da260",
"when": null,
"workflow_outputs": []
},

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You should be able to replace this renaming dance with a single APPLY_RULES step.

Comment on lines +939 to +988
"11": {
"annotation": "Filter SNV profiles to retain high confidence variants for strain analysis",
"content_id": "toolshed.g2.bx.psu.edu/repos/iuc/samestr/samestr_filter/1.2025.111+galaxy0",
"errors": null,
"id": 11,
"input_connections": {
"database": {
"id": 2,
"output_name": "output"
},
"input_names": {
"id": 10,
"output_name": "sample_name"
},
"input_snvs": {
"id": 10,
"output_name": "npz_files"
}
},
"inputs": [
{
"description": "runtime parameter for tool SameStr Filter",
"name": "sample_filtering"
}
],
"label": null,
"name": "SameStr Filter",
"outputs": [
{
"name": "filtered_profile",
"type": "npz"
},
{
"name": "sample_names",
"type": "tabular"
}
],
"position": {
"left": 1823.275109572711,
"top": 190.00961124398918
},
"post_job_actions": {},
"tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/samestr/samestr_filter/1.2025.111+galaxy0",
"tool_shed_repository": {
"changeset_revision": "303e095c89c6",
"name": "samestr",
"owner": "iuc",
"tool_shed": "toolshed.g2.bx.psu.edu"
},
"tool_state": "{\"clade_settings\": {\"clade_min_samples\": \"2\", \"marker_selection\": {\"retain_or_drop\": \"\", \"__current_case__\": 0}, \"marker_trunc_len\": \"20\"}, \"database\": {\"__class__\": \"ConnectedValue\"}, \"global_position_filtering\": {\"global_pos_min_n_vcov\": \"2\", \"global_pos_min_f_vcov\": \"0.0\"}, \"input_names\": {\"__class__\": \"ConnectedValue\"}, \"input_snvs\": {\"__class__\": \"ConnectedValue\"}, \"output_settings\": {\"keep_poly\": false, \"keep_mono\": false, \"delete_pos\": false}, \"sample_filtering\": {\"samples_select\": {\"__class__\": \"RuntimeValue\"}, \"samples_min_n_hcov\": \"5000\", \"samples_min_f_hcov\": \"0.0\", \"samples_min_m_vcov\": \"0.0\"}, \"sample_position_filtering\": {\"sample_pos_min_n_vcov\": \"1\", \"sample_pos_min_sd_vcov\": \"3.0\"}, \"sample_variant_filtering\": {\"sample_var_min_n_vcov\": \"2\", \"sample_var_min_f_vcov\": \"0.1\"}, \"__page__\": 0, \"__rerun_remap_job_id__\": null}",

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Currently, you're hard-coding all the filter parameters (along with the alignment parameters in SameStr Convert and the comparison settings in SameStr Compare.
Is that really useful or does the user need control over these settings?

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, it would be good if the user could modify them, especially for SameStr Convert and SameStr Filter. Right now the hard coded values match the ones that the original SameStr paper used. The only "issue" I see with making them workflow input parameters is that SameStr Filter alone has about 15 modifiable parameters, and I'm not sure if that would be too confusing for users. Do you have any suggestions or alternatives @wm75 ?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If you think all 15 or so parameters are worth exposing, then you probably should.
Make sure you are arranging the input param boxes in a way that they get presented logically on the workflow run form. Distance to the upper-left corner in the wf editor is what determines the order in the WF run form, and you can of course use annotations to make it clear which parameters is for what, provide the default values from the paper, etc.

}
],
"format-version": "0.1",
"name": "Metaphlan Subworkflow",

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You'd want to add "creator" and "license" also to subworkflows so that this information doesn't get lost when the subworkflow is used in other contexts.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm also not sure whether this particular sub-workflow is structured correctly.
I guess you'd want to re-use its SameStr part in case the user wants both a metaphlan and a motus-based analysis? But then it doesn't make sense to have the metaphlan step inside the sub-workflow.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Originally both MetaPhlAn and mOTUs subworkflows were included in the main workflow so users could select which tool to run. I guess without both the MetaPhlAn subworkflow alone doesn't make much sense. I initially tried to use the SameStr steps as the subworkflow to reuse the steps but the problem I have with this, is that since only one profiler is supposed to run, not both at the same time, I implemented a boolean input + a conditional skip for both so the user could select the preferred one. Since SameStr has required inputs it gives me and error saying cannot connect optional outputs to non-optional inputs. Is this what you meant, or what approach are you suggesting instead?

@wm75 wm75 Jul 17, 2026

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

so if you don't need to cover the case that both should run, then you don't need a sub-workflow here at all I think.
You would have the boolean + conditional skip that you're describing, and would simply add a Pick Param step that takes the metaphlan or motus output that was actually produced. The output of the pick param tool is non-optional so can be passed to SameStr without an issue.

"format-version": "0.1",
"license": "MIT",
"name": "SamestrGal",
"release": "0.1",

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The workflow should also have a bundled "readme", which can be a simple copy of the README file.

@bebatut

bebatut commented Jul 17, 2026

Copy link
Copy Markdown
Member

Looks like a really interesting and needed workflow. Thanks @xens25!

@mvdbeek, @wm75: Should we combine it with the metagenomic taxonomic community profiling workflow (not yet finished, because of DB issues, #1063)? I see pros and cons for it, just would like your opinions about that.

@wm75

wm75 commented Jul 17, 2026

Copy link
Copy Markdown
Member

Looks like a really interesting and needed workflow. Thanks @xens25!

@mvdbeek, @wm75: Should we combine it with the metagenomic taxonomic community profiling workflow (not yet finished, because of DB issues, #1063)? I see pros and cons for it, just would like your opinions about that.

That might make sense if one can get the conditional branches right for all possible use cases. I guess I'd pass that question on to @SaimMomin12

@SaimMomin12

Copy link
Copy Markdown
Contributor

Looks like a really interesting and needed workflow. Thanks @xens25!

@mvdbeek, @wm75: Should we combine it with the metagenomic taxonomic community profiling workflow (not yet finished, because of DB issues, #1063)? I see pros and cons for it, just would like your opinions about that.

Hi @bebatut, the goal of bringing this workflow into Galaxy is to provide a 1:1 Galaxy-based equivalent of the original Samestr workflow for the NFDI4Microbiome consortium. As such, @xens25 as part of her thesis ported the exact Nextflow implementation into Galaxy (as we did in the past for MGnify).

Of course, once it's part of the Galaxy ecosystem, you're welcome to reuse its components in your workflow.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants