Skip to content

feat(qpx): flatten QPX export output into qpx/ (drop qpx_output/ subfolder)#100

Merged
ypriverol merged 5 commits into
devfrom
fix/qpx-flatten-output
Jun 2, 2026
Merged

feat(qpx): flatten QPX export output into qpx/ (drop qpx_output/ subfolder)#100
ypriverol merged 5 commits into
devfrom
fix/qpx-flatten-output

Conversation

@ypriverol

Copy link
Copy Markdown
Member

Problem

When --enable_qpx_export is set, results were split across two levels:

results/qpx/<prefix>.h5mu          # MuData (anndata)
results/qpx/qpx_output/<prefix>.*.parquet   # QPX Parquet dataset

The intermediate qpx_output/ subfolder is unnecessary — everything should live directly under qpx/.

Fix

Publish the QPX Parquet dataset files and the .h5mu flat under results/qpx/:

results/qpx/<prefix>.feature.parquet
results/qpx/<prefix>.pg.parquet
results/qpx/<prefix>.sample.parquet
results/qpx/<prefix>.run.parquet
results/qpx/<prefix>.h5mu

This already matches what docs/output.md and docs/usage.md describe.

Why this needs a module change (not config-only)

The module emitted the dataset as a directory (qpx_output/). Publishing a directory output and the sibling .h5mu file into the same qpx/ folder makes Nextflow's publishDir race — one of them is silently dropped (verified with stub runs). So the module must emit the dataset as files (qpx_output/*), which publishDir can then flatten.

Changes

  • modules/bigbio/qpx/{main.nf,meta.yml}: qpx_dataset output is now qpx_output/* (files) instead of the qpx_output/ directory. Mirrors upstream fix(qpx): emit dataset as qpx_output/* files instead of a directory nf-modules#39 (merged); modules.json pin bumped to that commit.
  • conf/modules/shared.config: QPX_EXPORT publishDir strips the qpx_output/ prefix via saveAs { ... tokenize('/').last() } and publishes to qpx/.

Validation

  • Stub run confirms the flat layout: results/qpx/{<prefix>.parquet, <prefix>.h5mu}, no qpx_output/.
  • nf-core pipelines lint: 0 failures (including check_local_copy after the pin bump).
  • mudata/versions outputs and the module stub test (qpx_dataset.size() == 1) are unchanged.

ypriverol added 2 commits June 2, 2026 08:53
…older)

Publish the QPX Parquet dataset files and the .h5mu MuData file directly
under results/qpx/, removing the intermediate qpx/qpx_output/ level.

- modules/bigbio/qpx: emit the dataset as qpx_output/* files instead of the
  qpx_output/ directory (mirrors bigbio/nf-modules#39), so publishDir can
  flatten the files. A directory output and the sibling .h5mu race in
  publishDir and one is dropped, so flattening config-only is not reliable.
- conf/modules/shared.config: QPX_EXPORT publishDir now strips the
  qpx_output/ prefix via saveAs (tokenize('/').last()) and publishes to qpx/.

Pin bump for modules.json follows once bigbio/nf-modules#39 lands on main.
Docs (output.md, usage.md) already describe the flat results/qpx/ layout.
Update modules.json qpx git_sha to the merge commit of
bigbio/nf-modules#39, which emits the QPX dataset as qpx_output/* files.
Keeps nf-core check_local_copy green for the flattened output change.
@qodo-code-review

Copy link
Copy Markdown

Qodo reviews are paused for this user.

Troubleshooting steps vary by plan Learn more →

On a Teams plan?
Reviews resume once this user has a paid seat and their Git account is linked in Qodo.
Link Git account →

Using GitHub Enterprise Server, GitLab Self-Managed, or Bitbucket Data Center?
These require an Enterprise plan - Contact us
Contact us →

@coderabbitai

coderabbitai Bot commented Jun 2, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 1bd622c9-2d46-4388-8d71-5860581ec587

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix/qpx-flatten-output

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@github-actions

github-actions Bot commented Jun 2, 2026

Copy link
Copy Markdown

nf-core pipelines lint overall result: Passed ✅ ⚠️

Posted for pipeline commit d8419d5

+| ✅ 108 tests passed       |+
#| ❔  18 tests were ignored |#
#| ❔   1 tests had warnings |#
!| ❗   4 tests had warnings |!
Details

❗ Test warnings:

  • files_exist - File not found: conf/igenomes.config
  • files_exist - File not found: conf/igenomes_ignored.config
  • files_exist - File not found: .github/workflows/awstest.yml
  • files_exist - File not found: .github/workflows/awsfulltest.yml

❔ Tests ignored:

❔ Tests fixed:

✅ Tests passed:

Run details

  • nf-core/tools version 4.0.2
  • Run at 2026-06-02 09:52:50

@ypriverol ypriverol requested a review from yueqixuan June 2, 2026 10:16
@ypriverol ypriverol merged commit 1578f5d into dev Jun 2, 2026
21 checks passed
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.

1 participant