Add SameStr workflow#1257
Conversation
There was a problem hiding this comment.
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. |
|
|
||
| ## Inputs | ||
|
|
||
| - **Raw Reads**: A collection of paired-end FASTQ files (`.fastq.gz`) representing pre-FMT, donor, and post-FMT samples |
| ## 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 |
| "outputs": [ | ||
| { | ||
| "label": "stats_file_metaphlan", | ||
| "output_name": "stats_file_metaphlan" | ||
| }, |
| "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", |
| authors: | ||
| - name: 'Xenia ' | ||
| familyName: "Morera Mart\xEDnez" | ||
| - name: 'Saim ' | ||
| familyName: Momin |
| subclass: Galaxy | ||
| publish: true | ||
| primaryDescriptorPath: /Galaxy-Workflow-SameStr_Workflow.ga | ||
| testParameterFiles: | ||
| - /Galaxy-Workflow-SameStr_Workflow-tests.yml |
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Test Results (powered by Planemo)Test Summary
Errored Tests
|
Test Results (powered by Planemo)Test Summary
Errored Tests
|
| testParameterFiles: | ||
| - /samestr-workflow-tests.yml | ||
| authors: | ||
| - name: 'Xenia Morera Martinez' |
There was a problem hiding this comment.
Can you please put your ORCID id here ?
| "name": "Xenia " | ||
| }, | ||
| { | ||
| "class": "Person", |
There was a problem hiding this comment.
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}", |
There was a problem hiding this comment.
Can you please make the bowtie database configurable ?
There was a problem hiding this comment.
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 |
There was a problem hiding this comment.
Is this different from Metaphlan below ?
There was a problem hiding this comment.
No, it's the same step. I'll add them together
| "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}", |
| "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}", |
| { | ||
| "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}", |
There was a problem hiding this comment.
This one too should be configurable
Test Results (powered by Planemo)Test Summary
Errored Tests
|
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
|
@mvdbeek Thanks for the suggestions. I added the fixes, let me know if there's anything else that needs to be modified |
|
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 |
|
@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. |
Test Results (powered by Planemo)Test Summary
Errored Tests
|
Test Results (powered by Planemo)Test Summary
Errored Tests
|
|
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? |
|
Thanks @mvdbeek ! I’ve updated the database option. Let me know if any further fixes are needed from my side. |
Test Results (powered by Planemo)Test Summary
Errored Tests
|
|
working on that here: galaxyproject/idc#89. |


FOR CONTRIBUTOR:
FOR REVIEWERS:
This workflow does/runs/performs … xyz … to generate/analyze/etc …namefield should be human readable (spaces are fine, no underscore, dash only where spelling dictates it), no abbreviation unless generally understood-) over underscore (_), prefer all lowercase. Folder becomes repository in iwc-workflows organization and is included in TRS id