Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
e2b2ac7
docs: add v1.0.0 release implementation plan
ypriverol Apr 3, 2026
7d4a441
fix: add pipefail to all modules with tee pipes
ypriverol Apr 3, 2026
853dbbf
fix: add error_retry label to all DIA-NN analysis modules
ypriverol Apr 3, 2026
d85847e
fix: add empty input guards to prevent silent pipeline hangs
ypriverol Apr 3, 2026
f2a6777
feat: add DIA-NN 2.3.2 version config and profile
ypriverol Apr 3, 2026
14ed748
feat: add DDA support via --diann_dda flag (#5)
ypriverol Apr 3, 2026
7f51d00
test: add DDA and skip_preanalysis test configs
ypriverol Apr 3, 2026
a13d4b3
feat: add --light-models, --export-quant, --site-ms1-quant params (#7)
ypriverol Apr 3, 2026
0c56dcb
feat: add InfinDIA groundwork — enable_infin_dia param (#10)
ypriverol Apr 3, 2026
e69d7f2
docs: add comprehensive parameter reference (#1)
ypriverol Apr 3, 2026
52fa59f
docs: complete usage.md, output.md, citations, README (#1, #3, #9, #15)
ypriverol Apr 3, 2026
21fc10c
style: apply prettier formatting to parameters.md
ypriverol Apr 3, 2026
2cb7740
chore: remove internal planning doc to resolve merge conflict
ypriverol Apr 3, 2026
046c7a1
fix: address PR #32 review comments
ypriverol Apr 3, 2026
1a3610a
fix: critical DDA bugs — missing version param and channel routing
ypriverol Apr 3, 2026
7a20d7d
fix: make --no-ifs-removal and --no-main-report version-conditional
ypriverol Apr 4, 2026
1a929ae
docs: update Zenodo DOI to 10.5281/zenodo.19437128
ypriverol Apr 6, 2026
7fcb20e
Merge remote-tracking branch 'origin/main' into dev
ypriverol Apr 6, 2026
bd80512
fix: remove tdf2mzml module and references from documentation
ypriverol Apr 6, 2026
66ece26
chore: bump version to 1.0.1dev for next release cycle
ypriverol Apr 6, 2026
a079ca3
Merge dev into dda and add DDA CI test with PXD022287 dataset
ypriverol Apr 7, 2026
1dd2786
style: fix prettier formatting in parameters.md
ypriverol Apr 7, 2026
9d9d444
fix: add GHCR login to CI for test_dda private container
ypriverol Apr 7, 2026
5f716f6
fix: remove plan docs, add semantic version comparison utility
ypriverol Apr 7, 2026
7df29e2
chore: bump version to 2.0.0dev for DDA support release
ypriverol Apr 7, 2026
a3f4e25
fix: standardize meta.yml naming, fix descriptions and minor issues
ypriverol Apr 7, 2026
fc96eeb
feat: auto-detect DDA mode from SDRF acquisition method column
ypriverol Apr 7, 2026
9f4ee58
fix: address Copilot review comments
ypriverol Apr 7, 2026
a94c1de
Merge pull request #32 from bigbio/dda
ypriverol Apr 7, 2026
f04e754
Support multiplexing
yueqixuan Apr 8, 2026
af50567
Support multiplexing
yueqixuan Apr 8, 2026
207b6b6
Merge pull request #37 from yueqixuan/dev
ypriverol Apr 8, 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
19 changes: 16 additions & 3 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,15 +27,15 @@ jobs:
TEST_PROFILE: ${{ matrix.test_profile }}
EXEC_PROFILE: ${{ matrix.exec_profile }}

name: "CI [${{ matrix.test_profile }}] DIA-NN=1.8.1 NXF=${{ matrix.NXF_VER }}"
name: "CI [${{ matrix.test_profile }}] NXF=${{ matrix.NXF_VER }}"
if: ${{ github.event_name != 'push' || (github.event_name == 'push' && github.repository == 'bigbio/quantmsdiann') }}
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
NXF_VER:
- "25.04.0"
test_profile: ["test_dia", "test_dia_dotd"]
test_profile: ["test_dia", "test_dia_dotd", "test_dda"]
exec_profile: ["docker"] # extended ci tests singularity.

steps:
Expand All @@ -60,11 +60,24 @@ jobs:
mkdir -p $NXF_SINGULARITY_CACHEDIR
mkdir -p $NXF_SINGULARITY_LIBRARYDIR

- name: Log in to GitHub Container Registry
if: matrix.test_profile == 'test_dda'
env:
GHCR_TOKEN: ${{ secrets.GHCR_TOKEN }}
GHCR_USERNAME: ${{ secrets.GHCR_USERNAME }}
run: |
if [ -z "$GHCR_TOKEN" ] || [ -z "$GHCR_USERNAME" ]; then
echo "::warning::Skipping test_dda: GHCR credentials not available (expected for fork PRs)"
echo "SKIP_DDA=true" >> $GITHUB_ENV
exit 0
fi
echo "$GHCR_TOKEN" | docker login ghcr.io -u "$GHCR_USERNAME" --password-stdin

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

- name: Run pipeline with test data in docker/singularity profile
if: github.event.pull_request.base.ref != 'master'
if: github.event.pull_request.base.ref != 'master' && env.SKIP_DDA != 'true'
run: |
nextflow run ${GITHUB_WORKSPACE} -profile $TEST_PROFILE,$EXEC_PROFILE,dev --outdir ${TEST_PROFILE}_${EXEC_PROFILE}_results

Expand Down
3 changes: 2 additions & 1 deletion .github/workflows/extended_ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -114,7 +114,8 @@ jobs:
strategy:
fail-fast: false
matrix:
test_profile: ["test_latest_dia", "test_dia_quantums", "test_dia_parquet"]
test_profile:
["test_latest_dia", "test_dia_quantums", "test_dia_parquet", "test_dda", "test_dia_skip_preanalysis"]
env:
NXF_ANSI_LOG: false
CAPSULE_LOG: none
Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -21,3 +21,4 @@ null/
.codacy/
.github/instructions/codacy.instructions.md
docs/superpowers/
docs/plans/
4 changes: 2 additions & 2 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ quantmsdiann/
│ ├── pmultiqc/ # QC reporting
│ ├── sdrf_parsing/ # SDRF parsing
│ ├── samplesheet_check/ # Input validation
│ └── utils/ # tdf2mzml, decompress, mzml stats
│ └── utils/ # decompress, mzml stats
├── conf/
│ ├── base.config # Resource definitions
│ ├── modules/ # Module-specific configs
Expand All @@ -97,7 +97,7 @@ quantmsdiann/
The pipeline executes the following steps:

1. **SDRF Validation & Parsing** - Validates input SDRF and extracts metadata
2. **File Preparation** - Converts RAW/mzML/.d/.dia files (ThermoRawFileParser, tdf2mzml)
2. **File Preparation** - Converts RAW/mzML/.d/.dia files (ThermoRawFileParser)
3. **Generate Config** - Creates DIA-NN config from enzyme/modifications (`quantmsutilsc dianncfg`)
4. **In-Silico Library Generation** - Predicts spectral library from FASTA (or uses provided library)
5. **Preliminary Analysis** - Per-file calibration and mass accuracy determination
Expand Down
2 changes: 1 addition & 1 deletion CITATIONS.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# bigbio/quantmsdiann: Citations

## [Pipeline](https://www.researchsquare.com/article/rs-3002027/v1)
## [Pipeline](https://doi.org/10.1038/s41592-024-02343-1)

> Dai C, Pfeuffer J, Wang H, Zheng P, Käll L, Sachsenberg T, Demichev V, Bai M, Kohlbacher O, Perez-Riverol Y. quantms: a cloud-based pipeline for quantitative proteomics enables the reanalysis of public proteomics data. Nat Methods. 2024 Jul 4. doi: 10.1038/s41592-024-02343-1. Epub ahead of print. PMID: 38965444.

Expand Down
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

[![GitHub Actions CI Status](https://github.com/bigbio/quantmsdiann/actions/workflows/ci.yml/badge.svg)](https://github.com/bigbio/quantmsdiann/actions/workflows/ci.yml)
[![GitHub Actions Linting Status](https://github.com/bigbio/quantmsdiann/actions/workflows/linting.yml/badge.svg)](https://github.com/bigbio/quantmsdiann/actions/workflows/linting.yml)
[![Cite with Zenodo](https://zenodo.org/badge/DOI/10.5281/zenodo.15573386.svg)](https://doi.org/10.5281/zenodo.15573386)
[![Cite with Zenodo](https://zenodo.org/badge/DOI/10.5281/zenodo.19437128.svg)](https://doi.org/10.5281/zenodo.19437128)
[![nf-test](https://img.shields.io/badge/unit_tests-nf--test-337ab7.svg)](https://www.nf-test.com)

[![Nextflow](https://img.shields.io/badge/version-%E2%89%A525.04.0-green?style=flat&logo=nextflow&logoColor=white&color=%230DC09D&link=https%3A%2F%2Fnextflow.io)](https://www.nextflow.io/)
Expand All @@ -25,7 +25,7 @@ The pipeline is built using [Nextflow](https://www.nextflow.io), a workflow tool
The pipeline takes [SDRF](https://github.com/bigbio/proteomics-metadata-standard) metadata and mass spectrometry data files (`.raw`, `.mzML`, `.d`, `.dia`) as input and performs:

1. **Input validation** — SDRF parsing and validation via [sdrf-pipelines](https://github.com/bigbio/sdrf-pipelines)
2. **File preparation** — RAW to mzML conversion ([ThermoRawFileParser](https://github.com/compomics/ThermoRawFileParser)), indexing, Bruker `.d` handling ([tdf2mzml](https://github.com/bigbio/tdf2mzml))
2. **File preparation** — RAW to mzML conversion ([ThermoRawFileParser](https://github.com/compomics/ThermoRawFileParser)), indexing
3. **In-silico spectral library generation** — deep learning-based prediction, or use a user-provided library (`--diann_speclib`)
4. **Preliminary analysis** — per-file calibration and mass accuracy estimation (parallelized)
5. **Empirical library assembly** — consensus library from preliminary results with RT profiling
Expand Down Expand Up @@ -103,7 +103,7 @@ If you would like to contribute to this pipeline, please see the [contributing g

If you use quantmsdiann in your research, please cite:

> Dai et al. "quantms: a cloud-based pipeline for quantitative proteomics" (2024). DOI: [10.5281/zenodo.15573386](https://doi.org/10.5281/zenodo.15573386)
> Dai et al. "quantms: a cloud-based pipeline for quantitative proteomics" (2024). DOI: [10.5281/zenodo.19437128](https://doi.org/10.5281/zenodo.19437128)

An extensive list of references for the tools used by the pipeline can be found in the [CITATIONS.md](CITATIONS.md) file.

Expand Down
4 changes: 2 additions & 2 deletions assets/schema_input.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
"source name": {
"type": "string",
"pattern": "^\\S+$",
"errorMessage": "Sample name must be provided and cannot contain spaces"
"errorMessage": "Source name must be provided and cannot contain spaces"
},
"comment[data file]": {
"type": "string",
Expand All @@ -22,7 +22,7 @@
"assay name": {
"type": "string",
"pattern": "^\\S+$",
"errorMessage": "Assay name must be provided and cannot contain spaces",
"errorMessage": "Assay name must be provided and cannot contain whitespace",
"meta": ["assay"]
}
}
Expand Down
14 changes: 14 additions & 0 deletions conf/diann_versions/v2_3_2.config
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
/*
* DIA-NN 2.3.2 container override (private ghcr.io)
* Latest release with DDA support and InfinDIA.
*/
params.diann_version = '2.3.2'

process {
withLabel: diann {
container = 'ghcr.io/bigbio/diann:2.3.2'
}
}

singularity.enabled = false
docker.enabled = true
53 changes: 53 additions & 0 deletions conf/tests/test_dda.config
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
/*
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Nextflow config file for testing DDA analysis (requires DIA-NN >= 2.3.2)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Tests DDA mode using the PXD022287 HeLa dataset with --diann_dda flag.
Uses ghcr.io/bigbio/diann:2.3.2.

Use as follows:
nextflow run bigbio/quantmsdiann -profile test_dda,docker [--outdir <OUTDIR>]

Comment on lines +3 to +10
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

conf/tests/test_dda.config breaks the current test-profile contract.

This introduces a DDA profile under conf/tests and exposes it as test_dda, but this directory/naming scheme is currently reserved for DIA-only profiles. If DDA is now meant to be first-class here, the repository convention should be updated in the same PR; otherwise this profile should move or be renamed.

As per coding guidelines, conf/tests/*.config test profiles are DIA-only, and based on learnings new feature profiles should follow test_dia_<feature_name>.

Also applies to: 22-34

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@conf/tests/test_dda.config` around lines 3 - 10, The new DDA test profile in
conf/tests/test_dda.config breaks the repo convention that conf/tests/*.config
are DIA-only; rename or relocate the profile so it conforms: either rename the
profile from test_dda to test_dia_dda (and update any references to that
profile) or move the file out of conf/tests into the appropriate feature/profile
directory for non-DIA tests; update any references to the profile name (e.g.,
places that call --profile test_dda) and apply the same change for the other
occurrences mentioned (lines ~22-34).

------------------------------------------------------------------------------------------------
*/

process {
resourceLimits = [
cpus: 4,
memory: '12.GB',
time: '48.h'
]
}

params {
config_profile_name = 'Test profile for DDA analysis'
config_profile_description = 'DDA test using PXD022287 HeLa dataset with DIA-NN 2.3.2.'

outdir = './results_dda'

// Input data - PXD022287 HeLa DDA dataset
input = 'https://raw.githubusercontent.com/bigbio/quantms-test-datasets/quantms/testdata/diann_dda_ci/PXD022287.sdrf.tsv'
database = 'https://raw.githubusercontent.com/bigbio/quantms-test-datasets/quantms/testdata/diann_dda_ci/PXD022287_subset_human.fasta'

// DDA mode
diann_dda = true
diann_version = '2.3.2'

// Search parameters matching PXD022287 HeLa dataset
min_peptide_length = 7
max_peptide_length = 30
max_precursor_charge = 3
allowed_missed_cleavages = 1
diann_normalize = false
publish_dir_mode = 'symlink'
max_mods = 2
}

process {
withLabel: diann {
container = 'ghcr.io/bigbio/diann:2.3.2'
}
}

singularity.enabled = false
docker.enabled = true
48 changes: 48 additions & 0 deletions conf/tests/test_dia_skip_preanalysis.config
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
/*
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Nextflow config file for testing skip_preliminary_analysis path
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Tests the pipeline with skip_preliminary_analysis=true, using default
mass accuracy parameters. Validates the untested code path in dia.nf.

Use as follows:
nextflow run bigbio/quantmsdiann -profile test_dia_skip_preanalysis,docker [--outdir <OUTDIR>]

------------------------------------------------------------------------------------------------
*/

process {
resourceLimits = [
cpus: 4,
memory: '12.GB',
time: '48.h'
]
}

params {
config_profile_name = 'Test profile for skip preliminary analysis'
config_profile_description = 'Tests skip_preliminary_analysis path with default mass accuracy params.'

outdir = './results_skip_preanalysis'

// Input data - same as test_dia
input = 'https://raw.githubusercontent.com/bigbio/quantms-test-datasets/quantms/testdata/dia_ci/PXD026600.sdrf.tsv'
database = 'https://raw.githubusercontent.com/bigbio/quantms-test-datasets/quantms/testdata/dia_ci/REF_EColi_K12_UPS1_combined.fasta'
min_pr_mz = 350
max_pr_mz = 950
min_fr_mz = 500
max_fr_mz = 1500
min_peptide_length = 15
max_peptide_length = 30
max_precursor_charge = 3
allowed_missed_cleavages = 1
diann_normalize = false
publish_dir_mode = 'symlink'
max_mods = 2

// Skip preliminary analysis - use default mass accuracy params
skip_preliminary_analysis = true
mass_acc_ms2 = 15
mass_acc_ms1 = 15
scan_window = 8
}
Loading
Loading