From 0408174db7f97e7903a163823c0fc575855b4e7f Mon Sep 17 00:00:00 2001 From: Adam Freedman Date: Wed, 10 Jun 2026 14:17:30 -0400 Subject: [PATCH 1/2] Add full workflow GitHub Action --- .github/workflows/full-workflow.yml | 45 +++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 .github/workflows/full-workflow.yml diff --git a/.github/workflows/full-workflow.yml b/.github/workflows/full-workflow.yml new file mode 100644 index 0000000..ebdd439 --- /dev/null +++ b/.github/workflows/full-workflow.yml @@ -0,0 +1,45 @@ +name: full workflow + +on: + pull_request: + workflow_dispatch: + +concurrency: + group: full-workflow-${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + run-workflow: + name: pytest --run-workflow + runs-on: ubuntu-latest + timeout-minutes: 360 + permissions: + contents: read + defaults: + run: + shell: bash -el {0} + env: + SNAKEMAKE_CONDA_FRONTEND: mamba + GITHUB_PAT: ${{ github.token }} + steps: + - name: Check out repository + uses: actions/checkout@v4 + + - name: Create test environment + uses: mamba-org/setup-micromamba@v2 + with: + environment-file: environment.yml + cache-environment: true + cache-downloads: true + + - name: Cache Snakemake rule environments + uses: actions/cache@v4 + with: + path: .snakemake/conda + key: snakemake-conda-full-${{ runner.os }}-${{ hashFiles('workflow/envs/*.yml') }} + restore-keys: | + snakemake-conda-full-${{ runner.os }}- + snakemake-conda-${{ runner.os }}- + + - name: Run full test-data workflow + run: pytest tests --run-workflow -q From 44acbf5dbd06c2ee1c5f2d8e30854dc269de4a04 Mon Sep 17 00:00:00 2001 From: Adam Freedman Date: Wed, 10 Jun 2026 14:52:46 -0400 Subject: [PATCH 2/2] Set test-data resources for full workflow action --- .github/workflows/full-workflow.yml | 37 +++++++++++++++++++++++++++++ tests/run_test_workflow.sh | 8 +++++++ 2 files changed, 45 insertions(+) diff --git a/.github/workflows/full-workflow.yml b/.github/workflows/full-workflow.yml index ebdd439..a9a7360 100644 --- a/.github/workflows/full-workflow.yml +++ b/.github/workflows/full-workflow.yml @@ -21,6 +21,43 @@ jobs: env: SNAKEMAKE_CONDA_FRONTEND: mamba GITHUB_PAT: ${{ github.token }} + TEST_WORKFLOW_SNAKEMAKE_ARGS: >- + --resources mem_mb=8192 + --set-resources + cellbender:mem_mb=3072 + cellbender:runtime=30 + tenx2seuratrds:mem_mb=2048 + tenx2seuratrds:runtime=10 + emptydrops:mem_mb=2048 + emptydrops:runtime=10 + soupx:mem_mb=2048 + soupx:runtime=10 + soupx_emptydrops:mem_mb=2048 + soupx_emptydrops:runtime=10 + cellbender2seurat:mem_mb=2048 + cellbender2seurat:runtime=10 + doubletfinder:mem_mb=2048 + doubletfinder:runtime=10 + doubletfinder_cellbender:mem_mb=2048 + doubletfinder_cellbender:runtime=10 + scdblfinder:mem_mb=3072 + scdblfinder:runtime=10 + scdblfinder_cellbender:mem_mb=3072 + scdblfinder_cellbender:runtime=10 + posthocfilter_mad:mem_mb=3072 + posthocfilter_mad:runtime=10 + posthocfilter_mad_cellbender:mem_mb=3072 + posthocfilter_mad_cellbender:runtime=10 + posthocfilter_threshold:mem_mb=2048 + posthocfilter_threshold:runtime=10 + posthocfilter_threshold_cellbender:mem_mb=2048 + posthocfilter_threshold_cellbender:runtime=10 + marker_manifest:mem_mb=1024 + marker_manifest:runtime=5 + find_markers:mem_mb=2048 + find_markers:runtime=5 + combine_markers:mem_mb=1024 + combine_markers:runtime=5 steps: - name: Check out repository uses: actions/checkout@v4 diff --git a/tests/run_test_workflow.sh b/tests/run_test_workflow.sh index f3136a4..316a5cc 100755 --- a/tests/run_test_workflow.sh +++ b/tests/run_test_workflow.sh @@ -12,6 +12,7 @@ set -euo pipefail usage() { echo "Usage: $0 [--conda-prefix PATH] [additional snakemake args...]" + echo "Set TEST_WORKFLOW_SNAKEMAKE_ARGS to append whitespace-delimited Snakemake args before command-line extras." } script_dir=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd) @@ -61,6 +62,12 @@ if [[ -n "${snakemake_conda_prefix}" ]]; then conda_prefix_args=(--conda-prefix "${snakemake_conda_prefix}") fi +env_snakemake_args=() +if [[ -n "${TEST_WORKFLOW_SNAKEMAKE_ARGS:-}" ]]; then + # Intended for simple Snakemake CLI tokens, such as --set-resources entries. + read -r -a env_snakemake_args <<< "${TEST_WORKFLOW_SNAKEMAKE_ARGS}" +fi + snakemake --unlock "${common_args[@]}" "${conda_prefix_args[@]}" rm -rf testdata/results @@ -71,4 +78,5 @@ snakemake \ --retries 2 \ --jobs 200 \ --latency-wait 600 \ + "${env_snakemake_args[@]}" \ "${extra_snakemake_args[@]}"