Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
ee47cb6
first iteration of beegees on Galaxy
Aug 18, 2026
c8c03c8
beegees data tables examples
Aug 18, 2026
0e76042
example configuration on Galaxy config.yml
Aug 18, 2026
1233213
deployment CI
Aug 18, 2026
c83314a
rather build configs in python instead of Galaxy configfile xml keys
LukaLmelias Aug 19, 2026
a210d0d
internally build R1/R2 absolute paths since users dont know galaxy a…
LukaLmelias Aug 19, 2026
c6b37b9
use default resource allocation; no user input
LukaLmelias Aug 19, 2026
b66c211
fix cmd arg name
LukaLmelias Aug 19, 2026
8e70ca7
galaxy: fix wrapper command and stage collection reads under real names
LukaLmelias Sep 29, 2026
2d8c212
galaxy: add per-step progress and failure messages to wrapper command
LukaLmelias Sep 29, 2026
6c2ad7b
galaxy: match CSV filenames to extension-less collection elements
LukaLmelias Sep 29, 2026
ab41b76
galaxy: use samples CSV as the expected taxonomy source
LukaLmelias Sep 29, 2026
2a9d620
galaxy: provide manual protein references as a collection
LukaLmelias Sep 29, 2026
7917ab5
galaxy: write absolute paths to config.yaml
LukaLmelias Sep 29, 2026
51e2bfa
galaxy: stage BLAST databases in the job directory
LukaLmelias Sep 29, 2026
02bcf83
galaxy: add zip as a tool requirement
LukaLmelias Sep 30, 2026
4ca9848
galaxy: output plots as a collection and name outputs by analysis
LukaLmelias Sep 30, 2026
699da76
adding tests
LukaLmelias Sep 30, 2026
0ae569c
channel not allowed
LukaLmelias Sep 30, 2026
e2d1634
linting fixes
LukaLmelias Sep 30, 2026
ee5d7c1
pass test data directory
LukaLmelias Sep 30, 2026
7006230
pass test data directory
LukaLmelias Sep 30, 2026
1b98533
galaxy test data
LukaLmelias Sep 30, 2026
1f90030
galaxy: restore downsampling params and fix conditional checks
LukaLmelias Sep 30, 2026
ce44ea5
galaxy: pass the taxid column through to gene-fetch
LukaLmelias Sep 30, 2026
a88e46c
galaxy: declare CSV inputs and taxonomic validation output as csv
LukaLmelias Sep 30, 2026
b2efd8b
Added several requirements for working container image.
Oct 7, 2026
a6599c6
Merge pull request #1 from naturalis/add_tool_container_image_for_galaxy
LukaLmelias Oct 22, 2026
e1681ce
galaxy: release on galaxy-* tags and autoupdate from Bioconda
LukaLmelias Oct 22, 2026
3f9af65
Merge branch 'galaxy' of https://github.com/naturalis/BeeGees into ga…
LukaLmelias Oct 22, 2026
73fd91e
Add Deployment process documentation
LukaLmelias Oct 23, 2026
4f480f1
included test data on toolshed release
LukaLmelias Oct 23, 2026
7bd4113
first toolshed release docs
LukaLmelias Oct 23, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
73 changes: 73 additions & 0 deletions .github/workflows/galaxy_autoupdate.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
name: Galaxy wrapper autoupdate

# Polls Bioconda for a newer beegees release and opens a PR bumping the
# Galaxy wrapper to it. The PR is merged by hand so the wrapper can be
# checked against any new pipeline options; galaxy_tag.yml then tags it.
on:
schedule:
- cron: "0 6 * * *" # daily, 06:00 UTC
workflow_dispatch:

permissions:
contents: read

jobs:
autoupdate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
ref: main

- name: Compare Bioconda and wrapper versions
id: versions
run: |
latest=$(curl -sf https://api.anaconda.org/package/bioconda/beegees | jq -r .latest_version)
if [ -z "$latest" ] || [ "$latest" = "null" ]; then
echo "::error::Could not read latest beegees version from Bioconda"
exit 1
fi
current=$(sed -n 's:.*<token name="@TOOL_VERSION@">\(.*\)</token>.*:\1:p' beegees/galaxy/macros.xml)
echo "Bioconda: $latest, wrapper: $current"
newest=$(printf '%s\n%s\n' "$current" "$latest" | sort -V | tail -n 1)
if [ "$latest" != "$current" ] && [ "$newest" = "$latest" ]; then
echo "update=true" >> "$GITHUB_OUTPUT"
fi
echo "latest=$latest" >> "$GITHUB_OUTPUT"
echo "current=$current" >> "$GITHUB_OUTPUT"

- name: Bump macros.xml
if: steps.versions.outputs.update == 'true'
env:
LATEST: ${{ steps.versions.outputs.latest }}
run: |
sed -i \
-e "s:<token name=\"@TOOL_VERSION@\">[^<]*</token>:<token name=\"@TOOL_VERSION@\">${LATEST}</token>:" \
-e "s:<token name=\"@VERSION_SUFFIX@\">[^<]*</token>:<token name=\"@VERSION_SUFFIX@\">0</token>:" \
beegees/galaxy/macros.xml
git diff

# A PAT is needed so the PR push triggers the lint/test workflows;
# pushes made with GITHUB_TOKEN do not start other workflows.
- name: Open pull request
if: steps.versions.outputs.update == 'true'
uses: peter-evans/create-pull-request@v7
with:
token: ${{ secrets.GALAXY_AUTOUPDATE_TOKEN }}
base: main
branch: galaxy-autoupdate
delete-branch: true
add-paths: beegees/galaxy/macros.xml
commit-message: "galaxy: bump beegees to ${{ steps.versions.outputs.latest }}"
title: "galaxy: bump beegees ${{ steps.versions.outputs.current }} -> ${{ steps.versions.outputs.latest }}"
body: |
Bioconda has published beegees ${{ steps.versions.outputs.latest }}.

This PR sets `@TOOL_VERSION@` to ${{ steps.versions.outputs.latest }} and resets
`@VERSION_SUFFIX@` to 0. Merging it tags
`galaxy-${{ steps.versions.outputs.latest }}+galaxy0`, which uploads to the Tool Shed.

Before merging:
- [ ] Lint and planemo tests pass
- [ ] New or changed pipeline options are reflected in `beegees.xml`
- [ ] Test data still matches the new outputs
36 changes: 36 additions & 0 deletions .github/workflows/galaxy_tag.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
name: Tag Galaxy wrapper release

# When macros.xml changes on main (an autoupdate PR or a manual
# VERSION_SUFFIX bump), tag galaxy-<TOOL_VERSION>+galaxy<VERSION_SUFFIX>
# if that tag doesn't exist yet. The tag triggers toolshed_deploy.yml.
on:
push:
branches: [main]
paths:
- "beegees/galaxy/macros.xml"

permissions:
contents: read

jobs:
tag:
runs-on: ubuntu-latest
steps:
# A PAT is needed so the tag push triggers toolshed_deploy.yml;
# pushes made with GITHUB_TOKEN do not start other workflows.
- uses: actions/checkout@v4
with:
token: ${{ secrets.GALAXY_AUTOUPDATE_TOKEN }}

- name: Create and push release tag
run: |
tool_version=$(sed -n 's:.*<token name="@TOOL_VERSION@">\(.*\)</token>.*:\1:p' beegees/galaxy/macros.xml)
suffix=$(sed -n 's:.*<token name="@VERSION_SUFFIX@">\(.*\)</token>.*:\1:p' beegees/galaxy/macros.xml)
tag="galaxy-${tool_version}+galaxy${suffix}"
if [ -n "$(git ls-remote --tags origin "refs/tags/$tag")" ]; then
echo "Tag $tag already exists, nothing to release"
exit 0
fi
git tag "$tag"
git push origin "$tag"
echo "Pushed $tag"
87 changes: 87 additions & 0 deletions .github/workflows/toolshed_deploy.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
name: Deploy to Galaxy Tool Shed

on:
push:
branches:
- "**"
# GitHub ignores path filters for tag pushes, so tags always run
paths:
- "beegees/galaxy/**"
- ".github/workflows/toolshed_deploy.yml"
tags:
# Galaxy wrapper releases only, e.g. galaxy-3.0.4+galaxy4.
# Package tags (v*) drive Bioconda and must not upload to the Tool Shed.
- "galaxy-*"

jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.11"

- name: Install planemo
run: pip install planemo

- name: Lint tool XML
run: planemo lint beegees/galaxy/beegees.xml

test:
needs: lint
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.11"

- name: Install planemo
run: pip install planemo

- name: Run tool tests
run: |
planemo test \
--galaxy_branch release_24.1 \
--conda_auto_install \
--conda_auto_init \
--test_data beegees/galaxy/test-data/ beegees/galaxy/beegees.xml

shed_upload:
needs: test
if: startsWith(github.ref, 'refs/tags/galaxy-')
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Check tag matches macros.xml version
run: |
tool_version=$(sed -n 's:.*<token name="@TOOL_VERSION@">\(.*\)</token>.*:\1:p' beegees/galaxy/macros.xml)
suffix=$(sed -n 's:.*<token name="@VERSION_SUFFIX@">\(.*\)</token>.*:\1:p' beegees/galaxy/macros.xml)
expected="galaxy-${tool_version}+galaxy${suffix}"
if [ "$GITHUB_REF_NAME" != "$expected" ]; then
echo "::error::Tag $GITHUB_REF_NAME does not match macros.xml ($expected)"
exit 1
fi

- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.11"

- name: Install planemo
run: pip install planemo

- name: Upload to Tool Shed
env:
TOOLSHED_API_KEY: ${{ secrets.TOOLSHED_API_KEY }}
run: |
planemo shed_upload \
--shed_target toolshed \
--shed_key "$TOOLSHED_API_KEY" \
beegees/galaxy/
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -8,3 +8,6 @@ build/
*.log
.DS_Store
.pytest_cache/

# Galaxy instance-specific data table entries (only .loc.sample files are shipped)
beegees/galaxy/tool-data/*.loc
25 changes: 25 additions & 0 deletions beegees/galaxy/.shed.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
name: beegees
owner: bge-barcoding # needs to be created on toolshed (could be the name of the maintainer, Dan?)
description: BeeGees — DNA barcoding from genome skims
long_description: |
BeeGees recovers DNA barcodes from low-coverage genome skim data.
It wraps fastp QC, gene-fetch reference retrieval, MitoGeneExtractor barcode
extraction, fasta_cleaner sequence cleaning, structural validation (HMM +
reading-frame checks), taxonomic validation (BLASTn), and MultiQC reporting
into a single Snakemake pipeline.
homepage_url: https://github.com/bge-barcoding/BeeGees
remote_repository_url: https://github.com/bge-barcoding/BeeGees
categories:
- Sequence Analysis
- Metagenomics

# Only these files are uploaded to the Tool Shed — the rest of the repo is excluded
include:
- beegees.xml
- macros.xml
- build_samples_csv.py
- build_config_yaml.py
- tool_data_table_conf.xml.sample
- tool-data/blastdb.loc.sample
- tool-data/beegees_blast_taxonomy.loc.sample
- test-data/*
Loading
Loading