Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
61 commits
Select commit Hold shift + click to select a range
57b8066
initial template build from nf-core/tools, version 3.2.0
edmundmiller Apr 14, 2025
4a636e8
docs: add v2 design — API+DuckDB+eCharts replacing R/Quarto
edmundmiller Mar 21, 2026
e26216f
feat: add SeqeraApi.groovy — nf-boost request() wrappers for Platform…
edmundmiller Mar 21, 2026
660f58b
feat: benchmark report generator — Python+DuckDB+eCharts
edmundmiller Mar 21, 2026
ab5cea0
feat: BENCHMARK_REPORT_V2 module — Python+DuckDB container
edmundmiller Mar 21, 2026
624de44
feat: wire v2 benchmark pipeline — nf-boost API fetch + new report
edmundmiller Mar 21, 2026
3b16f11
fix: drop pandas dep, use pure duckdb fetchall + temp file loading
edmundmiller Mar 21, 2026
911193a
refactor(report): restructure to match old Quarto report
edmundmiller Mar 21, 2026
fce3bda
fix merge conflicts, update workflow import and test snap
edmundmiller Mar 21, 2026
c06df3b
chore: remove old nf-aggregate workflow, gitignore test artifacts
edmundmiller Mar 21, 2026
1da7879
refactor(bin): replace click with typer for CLI
edmundmiller Mar 21, 2026
979b683
test(benchmark_report_v2): add nf-test, update conda deps click→typer
edmundmiller Mar 21, 2026
e09bdb0
fix(wave): remove unsupported spack strategy
edmundmiller Mar 21, 2026
a7eb03b
feat: wire brand.yml into benchmark report colors
edmundmiller Mar 21, 2026
9143f58
feat: use official Seqera logo SVG from seqeralabs/logos
edmundmiller Mar 21, 2026
3b9f218
fix(wave): use community registry, drop quay.io build repo
edmundmiller Mar 21, 2026
45156a8
fix(brand): align brand.yml with spec
edmundmiller Mar 21, 2026
6df5d18
refactor(report): replace hardcoded colors with brand tokens
edmundmiller Mar 21, 2026
f00c125
feat(report): use Seqera brand typography (Inter)
edmundmiller Mar 21, 2026
ddea954
feat(report): add Seqera eCharts theme
edmundmiller Mar 21, 2026
ec28f59
refactor(report): use eCharts theme, strip per-chart color overrides
edmundmiller Mar 21, 2026
087da1b
fix(report): replace off-brand chart palette with green-dominant colors
edmundmiller Mar 21, 2026
519abad
feat(report): add SVG icons to section headings and sidebar nav
edmundmiller Mar 21, 2026
5c5d888
docs: add AGENTS.md files throughout codebase
edmundmiller Mar 21, 2026
dbe2bb7
docs: add per-module AGENTS.md, slim parent to index
edmundmiller Mar 21, 2026
e170880
refactor: remove legacy R/Quarto benchmark_report module
edmundmiller Mar 21, 2026
1ab4418
refactor: remove legacy report references from workflow and configs
edmundmiller Mar 21, 2026
9d98c2b
docs: update AGENTS.md and DESIGN.md, remove legacy v1 references
edmundmiller Mar 21, 2026
a72ca59
refactor: rename benchmark_report_v2 → benchmark_report
edmundmiller Mar 21, 2026
cfbfaab
test: regression test for nested task unwrap from Seqera API
edmundmiller Mar 21, 2026
6700453
fix: unwrap nested task objects from Seqera API response
edmundmiller Mar 21, 2026
247d08b
test: add sarek benchmark fixtures (cpu + g5) for report tests
edmundmiller Mar 21, 2026
e7ab436
test: regression test for CUR old format missing nf_ column
edmundmiller Mar 21, 2026
bd9f025
fix: detect CUR parquet column names before querying
edmundmiller Mar 21, 2026
20e68da
test: regression test for new CUR MAP(VARCHAR,VARCHAR) format
edmundmiller Mar 21, 2026
3d19462
feat: support new CUR format with MAP(VARCHAR,VARCHAR) resource_tags
edmundmiller Mar 21, 2026
762228e
test: regression test for CUR hash-join mismatch in query_run_costs
edmundmiller Mar 21, 2026
0d13225
fix: normalize task hash in CUR cost JOIN by stripping '/'
edmundmiller Mar 21, 2026
93ba9b4
test: add integration tests against real sarek benchmark fixtures
edmundmiller Mar 21, 2026
1bc3bdb
chore: ignore .beads directory
edmundmiller Mar 21, 2026
2780da4
fix(benchmark): use containLabel for hbar chart grid layout
edmundmiller Mar 21, 2026
3d9dfaf
style(benchmark): improve eCharts theme inspired by Evidence.dev
edmundmiller Mar 21, 2026
7a2c225
style(benchmark): polish chart configs and color palette
edmundmiller Mar 21, 2026
df69af0
style(benchmark): remove hardcoded fontSize/barMaxWidth overrides
edmundmiller Mar 22, 2026
59ce672
fix(benchmark): fix axis label clipping and add xName to hbarStacked
edmundmiller Mar 23, 2026
4b62748
style(benchmark): add direct labeling to charts with ≤3 groups
edmundmiller Mar 23, 2026
809d870
feat(benchmark): add insight-driven subtitles and annotations to charts
edmundmiller Mar 23, 2026
e49257a
fix: drop nf-boost version pin to fix compilation on NF 25.x
edmundmiller Mar 24, 2026
7b5cdab
fix: replace nf-boost import with plain java.net HTTP
edmundmiller Mar 24, 2026
cd77e20
fix: uncomment PIPELINE_INITIALISATION call
edmundmiller Mar 24, 2026
4785d34
fix: add missing PIPELINE_INITIALISATION include
edmundmiller Mar 24, 2026
083cddb
fix: repair malformed nextflow_schema.json
edmundmiller Mar 24, 2026
0b82ea0
fix: remove non-existent container image, use conda via Wave
edmundmiller Mar 24, 2026
92ec80c
feat: add clean_json step — normalize raw API JSON into CSVs
edmundmiller Mar 24, 2026
435b4a3
feat: add clean_cur step — normalize AWS CUR parquet into costs CSV
edmundmiller Mar 24, 2026
c78b8cb
feat: add build_tables step — DuckDB joins and aggregation
edmundmiller Mar 24, 2026
24253f6
feat: add render_report step — HTML/eCharts with cached task support
edmundmiller Mar 24, 2026
5807555
refactor: wire up 4-step benchmark pipeline in workflow
edmundmiller Mar 24, 2026
e5e1676
Cleanup
mavi-sqr Mar 30, 2026
0306c75
Changin font-size
mavi-sqr Mar 30, 2026
ca955e6
Merge pull request #106 from seqeralabs/refactor-benchmark-pipeline-UI
edmundmiller Mar 31, 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
23 changes: 3 additions & 20 deletions .editorconfig
Original file line number Diff line number Diff line change
Expand Up @@ -11,27 +11,10 @@ indent_style = space
[*.{md,yml,yaml,html,css,scss,js}]
indent_size = 2

# These files are edited and tested upstream in nf-core/modules
[/modules/nf-core/**]
charset = unset
end_of_line = unset
insert_final_newline = unset
trim_trailing_whitespace = unset
indent_style = unset
[/subworkflows/nf-core/**]
charset = unset
end_of_line = unset
insert_final_newline = unset
trim_trailing_whitespace = unset
indent_style = unset

[/assets/email*]
indent_size = unset

# ignore python and markdown
[*.{py,md}]
indent_style = unset

# ignore multiqc example
[/assets/multiqc_report.html]
indent_style = unset
# ignore ro-crate metadata files
[**/ro-crate-metadata.json]
insert_final_newline = unset
6 changes: 6 additions & 0 deletions .github/.dockstore.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
# Dockstore config version, not pipeline version
version: 1.2
workflows:
- subclass: nfl
primaryDescriptorPath: /nextflow.config
publish: True
15 changes: 1 addition & 14 deletions .github/CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,16 +23,10 @@ If you're not used to this workflow with git, you can start with some [docs from

## Tests

You have the option to test your changes locally by running the pipeline. For receiving warnings about process selectors and other `debug` information, it is recommended to use the debug profile. Execute all the tests with the following command:

```bash
nf-test test --profile debug,test,docker --verbose
```

When you create a pull request with changes, [GitHub Actions](https://github.com/features/actions) will run automatic tests.
Typically, pull-requests are only fully reviewed when these tests are passing, though of course we can help out before then.

There are typically two types of tests that run:


### Lint tests

Expand All @@ -41,13 +35,6 @@ To enforce these and ensure that all pipelines stay in sync, we have developed a

If any failures or warnings are encountered, please follow the listed URL for more documentation.

### Pipeline tests

Each `nf-core` pipeline should be set up with a minimal set of test-data.
`GitHub Actions` then runs the pipeline on this data to ensure that it exits successfully.
If there are any failures then the automated tests fail.
These tests are run both with the latest available version of `Nextflow` and also the minimum required version that is stated in the pipeline code.

## Patch

:warning: Only in the unlikely and regretful event of a release happening with a bug.
Expand Down
9 changes: 9 additions & 0 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,17 +8,26 @@ These are the most common things requested on pull requests (PRs).

Remember that PRs should be made against the dev branch, unless you're preparing a pipeline release.

<<<<<<< HEAD
Learn more about contributing: [CONTRIBUTING.md](https://github.com/seqeralabs/nf-aggregate/tree/master/.github/CONTRIBUTING.md)
=======
Learn more about contributing: [CONTRIBUTING.md](https://github.com/seqeralabs/nf-aggregate/tree/main/.github/CONTRIBUTING.md)
>>>>>>> aca0dae (initial template build from nf-core/tools, version 3.2.0)
-->

## PR checklist

- [ ] This comment contains a description of changes (with reason).
- [ ] If you've fixed a bug or added code that should be tested, add tests!
<<<<<<< HEAD
- [ ] If you've added a new tool - have you followed the pipeline conventions in the [contribution docs](https://github.com/seqeralabs/nf-aggregate/tree/master/.github/CONTRIBUTING.md)
- [ ] Make sure your code lints (`nf-core pipelines lint`).
- [ ] Ensure the test suite passes (`nextflow run . -profile test,docker --outdir <OUTDIR>`).
- [ ] Check for unexpected warnings in debug mode (`nextflow run . -profile debug,test,docker --outdir <OUTDIR>`).
=======
- [ ] If you've added a new tool - have you followed the pipeline conventions in the [contribution docs](https://github.com/seqeralabs/nf-aggregate/tree/main/.github/CONTRIBUTING.md)
- [ ] Make sure your code lints (`nf-core pipelines lint`).
>>>>>>> aca0dae (initial template build from nf-core/tools, version 3.2.0)
- [ ] Usage Documentation in `docs/usage.md` is updated.
- [ ] Output Documentation in `docs/output.md` is updated.
- [ ] `CHANGELOG.md` is updated.
Expand Down
46 changes: 46 additions & 0 deletions .github/workflows/branch.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
name: nf-core branch protection
# This workflow is triggered on PRs to `main`/`master` branch on the repository
# It fails when someone tries to make a PR against the nf-core `main`/`master` branch instead of `dev`
on:
pull_request_target:
branches:
- main
- master

jobs:
test:
runs-on: ubuntu-latest
steps:
# PRs to the nf-core repo main/master branch are only ok if coming from the nf-core repo `dev` or any `patch` branches
- name: Check PRs
if: github.repository == 'seqeralabs/nf-aggregate'
run: |
{ [[ ${{github.event.pull_request.head.repo.full_name }} == seqeralabs/nf-aggregate ]] && [[ $GITHUB_HEAD_REF == "dev" ]]; } || [[ $GITHUB_HEAD_REF == "patch" ]]

# If the above check failed, post a comment on the PR explaining the failure
# NOTE - this doesn't currently work if the PR is coming from a fork, due to limitations in GitHub actions secrets
- name: Post PR comment
if: failure()
uses: mshick/add-pr-comment@b8f338c590a895d50bcbfa6c5859251edc8952fc # v2
with:
message: |
## This PR is against the `${{github.event.pull_request.base.ref}}` branch :x:

* Do not close this PR
* Click _Edit_ and change the `base` to `dev`
* This CI test will remain failed until you push a new commit

---

Hi @${{ github.event.pull_request.user.login }},

It looks like this pull-request is has been made against the [${{github.event.pull_request.head.repo.full_name }}](https://github.com/${{github.event.pull_request.head.repo.full_name }}) ${{github.event.pull_request.base.ref}} branch.
The ${{github.event.pull_request.base.ref}} branch on nf-core repositories should always contain code from the latest release.
Because of this, PRs to ${{github.event.pull_request.base.ref}} are only allowed if they come from the [${{github.event.pull_request.head.repo.full_name }}](https://github.com/${{github.event.pull_request.head.repo.full_name }}) `dev` branch.

You do not need to close this PR, you can change the target branch to `dev` by clicking the _"Edit"_ button at the top of this page.
Note that even after this, the test will continue to show as failing until you push a new commit.

Thanks again for your contribution!
repo-token: ${{ secrets.GITHUB_TOKEN }}
allow-repeats: false
24 changes: 24 additions & 0 deletions .github/workflows/clean-up.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
name: "Close user-tagged issues and PRs"
on:
schedule:
- cron: "0 0 * * 0" # Once a week

jobs:
clean-up:
runs-on: ubuntu-latest
permissions:
issues: write
pull-requests: write
steps:
- uses: actions/stale@28ca1036281a5e5922ead5184a1bbf96e5fc984e # v9
with:
stale-issue-message: "This issue has been tagged as awaiting-changes or awaiting-feedback by an nf-core contributor. Remove stale label or add a comment otherwise this issue will be closed in 20 days."
stale-pr-message: "This PR has been tagged as awaiting-changes or awaiting-feedback by an nf-core contributor. Remove stale label or add a comment if it is still useful."
close-issue-message: "This issue was closed because it has been tagged as awaiting-changes or awaiting-feedback by an nf-core contributor and then staled for 20 days with no activity."
days-before-stale: 30
days-before-close: 20
days-before-pr-close: -1
any-of-labels: "awaiting-changes,awaiting-feedback"
exempt-issue-labels: "WIP"
exempt-pr-labels: "WIP"
repo-token: "${{ secrets.GITHUB_TOKEN }}"
91 changes: 91 additions & 0 deletions .github/workflows/download_pipeline.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
name: Test successful pipeline download with 'nf-core pipelines download'

# Run the workflow when:
# - dispatched manually
# - when a PR is opened or reopened to main/master branch
# - the head branch of the pull request is updated, i.e. if fixes for a release are pushed last minute to dev.
on:
workflow_dispatch:
inputs:
testbranch:
description: "The specific branch you wish to utilize for the test execution of nf-core pipelines download."
required: true
default: "dev"
pull_request:
types:
- opened
- edited
- synchronize
branches:
- main
- master
pull_request_target:
branches:
- main
- master

env:
NXF_ANSI_LOG: false

jobs:
configure:
runs-on: ubuntu-latest
outputs:
REPO_LOWERCASE: ${{ steps.get_repo_properties.outputs.REPO_LOWERCASE }}
REPOTITLE_LOWERCASE: ${{ steps.get_repo_properties.outputs.REPOTITLE_LOWERCASE }}
REPO_BRANCH: ${{ steps.get_repo_properties.outputs.REPO_BRANCH }}
steps:
- name: Get the repository name and current branch
id: get_repo_properties
run: |
echo "REPO_LOWERCASE=${GITHUB_REPOSITORY,,}" >> "$GITHUB_OUTPUT"
echo "REPOTITLE_LOWERCASE=$(basename ${GITHUB_REPOSITORY,,})" >> "$GITHUB_OUTPUT"
echo "REPO_BRANCH=${{ github.event.inputs.testbranch || 'dev' }}" >> "$GITHUB_OUTPUT"

download:
runs-on: ubuntu-latest
needs: configure
steps:
- name: Install Nextflow
uses: nf-core/setup-nextflow@v2

- name: Disk space cleanup
uses: jlumbroso/free-disk-space@54081f138730dfa15788a46383842cd2f914a1be # v1.3.1

- uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b # v5
with:
python-version: "3.12"
architecture: "x64"

- name: Setup Apptainer
uses: eWaterCycle/setup-apptainer@4bb22c52d4f63406c49e94c804632975787312b3 # v2.0.0
with:
apptainer-version: 1.3.4

- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install git+https://github.com/nf-core/tools.git@dev

- name: Make a cache directory for the container images
run: |
mkdir -p ./singularity_container_images

- name: Download the pipeline
env:
NXF_SINGULARITY_CACHEDIR: ./singularity_container_images
run: |
nf-core pipelines download ${{ needs.configure.outputs.REPO_LOWERCASE }} \
--revision ${{ needs.configure.outputs.REPO_BRANCH }} \
--outdir ./${{ needs.configure.outputs.REPOTITLE_LOWERCASE }} \
--compress "none" \
--container-system 'singularity' \
--container-library "quay.io" -l "docker.io" -l "community.wave.seqera.io/library/" \
--container-cache-utilisation 'amend' \
--download-configuration 'yes'

- name: Inspect download
run: tree ./${{ needs.configure.outputs.REPOTITLE_LOWERCASE }}

- name: Inspect container images
run: tree ./singularity_container_images | tee ./container_initial
89 changes: 89 additions & 0 deletions .github/workflows/fix-linting.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
name: Fix linting from a comment
on:
issue_comment:
types: [created]

jobs:
fix-linting:
# Only run if comment is on a PR with the main repo, and if it contains the magic keywords
if: >
contains(github.event.comment.html_url, '/pull/') &&
contains(github.event.comment.body, '@nf-core-bot fix linting') &&
github.repository == 'seqeralabs/nf-aggregate'
runs-on: ubuntu-latest
steps:
# Use the @nf-core-bot token to check out so we can push later
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
with:
token: ${{ secrets.nf_core_bot_auth_token }}

# indication that the linting is being fixed
- name: React on comment
uses: peter-evans/create-or-update-comment@71345be0265236311c031f5c7866368bd1eff043 # v4
with:
comment-id: ${{ github.event.comment.id }}
reactions: eyes

# Action runs on the issue comment, so we don't get the PR by default
# Use the gh cli to check out the PR
- name: Checkout Pull Request
run: gh pr checkout ${{ github.event.issue.number }}
env:
GITHUB_TOKEN: ${{ secrets.nf_core_bot_auth_token }}

# Install and run pre-commit
- uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b # v5
with:
python-version: "3.12"

- name: Install pre-commit
run: pip install pre-commit

- name: Run pre-commit
id: pre-commit
run: pre-commit run --all-files
continue-on-error: true

# indication that the linting has finished
- name: react if linting finished succesfully
if: steps.pre-commit.outcome == 'success'
uses: peter-evans/create-or-update-comment@71345be0265236311c031f5c7866368bd1eff043 # v4
with:
comment-id: ${{ github.event.comment.id }}
reactions: "+1"

- name: Commit & push changes
id: commit-and-push
if: steps.pre-commit.outcome == 'failure'
run: |
git config user.email "core@nf-co.re"
git config user.name "nf-core-bot"
git config push.default upstream
git add .
git status
git commit -m "[automated] Fix code linting"
git push

- name: react if linting errors were fixed
id: react-if-fixed
if: steps.commit-and-push.outcome == 'success'
uses: peter-evans/create-or-update-comment@71345be0265236311c031f5c7866368bd1eff043 # v4
with:
comment-id: ${{ github.event.comment.id }}
reactions: hooray

- name: react if linting errors were not fixed
if: steps.commit-and-push.outcome == 'failure'
uses: peter-evans/create-or-update-comment@71345be0265236311c031f5c7866368bd1eff043 # v4
with:
comment-id: ${{ github.event.comment.id }}
reactions: confused

- name: react if linting errors were not fixed
if: steps.commit-and-push.outcome == 'failure'
uses: peter-evans/create-or-update-comment@71345be0265236311c031f5c7866368bd1eff043 # v4
with:
issue-number: ${{ github.event.issue.number }}
body: |
@${{ github.actor }} I tried to fix the linting errors, but it didn't work. Please fix them manually.
See [CI log](https://github.com/seqeralabs/nf-aggregate/actions/runs/${{ github.run_id }}) for more details.
10 changes: 5 additions & 5 deletions .github/workflows/linting.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,10 @@ jobs:
pre-commit:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4

- name: Set up Python 3.12
uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5
uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b # v5
with:
python-version: "3.12"

Expand All @@ -31,12 +31,12 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Check out pipeline code
uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4

- name: Install Nextflow
uses: nf-core/setup-nextflow@v2

- uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5
- uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b # v5
with:
python-version: "3.12"
architecture: "x64"
Expand Down Expand Up @@ -74,7 +74,7 @@ jobs:

- name: Upload linting log file artifact
if: ${{ always() }}
uses: actions/upload-artifact@65462800fd760344b1a7b4382951275a0abb4808 # v4
uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 # v4
with:
name: linting-logs
path: |
Expand Down
Loading
Loading