diff --git a/.nf-core.yml b/.nf-core.yml index 59e275bf6..44c9b564e 100644 --- a/.nf-core.yml +++ b/.nf-core.yml @@ -33,4 +33,4 @@ template: name: quantms org: bigbio outdir: . - version: 1.8.0dev + version: 1.8.0 diff --git a/CHANGELOG.md b/CHANGELOG.md index 524840b73..0250d59eb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,7 +3,44 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## [1.8.0] bigbio/quantms - [Unreleased] +## [1.8.0] bigbio/quantms - [23/06/2026] - [Guangzhou] + +### `Added` + +- [#690](https://github.com/bigbio/quantms/pull/690) Expose `fdr_conservative` parameter to control FDR estimation formula (Keich & Noble 2025) +- [#694](https://github.com/bigbio/quantms/pull/694) Expose Biosaur2 as alternative feature seeding algorithm for LFQ via `lfq_seeding_algorithm` parameter +- [#623](https://github.com/bigbio/quantms/pull/623) Add support for `.dia` file format and improve file format documentation + +### `Changed` + +- [#639](https://github.com/bigbio/quantms/pull/639) **BREAKING: Deprecated OpenMS experimental design format**: The pipeline now only accepts SDRF files as input. All input files are treated as SDRF regardless of file extension. Supported extensions: `.sdrf`, `.tsv`, `.csv`. +- [#651](https://github.com/bigbio/quantms/pull/651) Remove redundant SDRF-derived parameters: 4 parameters (`acquisition_method`, `labelling_type`, `enzyme`, `fixed_mods`) are now read exclusively from SDRF files +- [#644](https://github.com/bigbio/quantms/pull/644) Update pipeline for Nextflow 26 strict syntax compatibility +- [#641](https://github.com/bigbio/quantms/pull/641) Enable `ext.args` support in GENERATE_CFG module for nf-core standard compliance +- [#660](https://github.com/bigbio/quantms/pull/660) Refactor DIA-NN parameter handling for extended module validation +- [#676](https://github.com/bigbio/quantms/pull/676) Fix `.d` file support and multiple Nextflow 26 compatibility issues +- [#686](https://github.com/bigbio/quantms/pull/686) Update test configurations to fetch SDRF and FASTA files from maintained repository +- [#687](https://github.com/bigbio/quantms/pull/687) Migrate thermorawfileparser module from local to bigbio/nf-modules +- [#709](https://github.com/bigbio/quantms/pull/709) Update onsite module for improved PTM localization +- [#690](https://github.com/bigbio/quantms/pull/690), [#694](https://github.com/bigbio/quantms/pull/694) OpenMS tooling improvements including FDR conservative formula and Biosaur2 feature seeding + +### `Fixed` + +- [#689](https://github.com/bigbio/quantms/pull/689) Fix typo in openms_peak_picker processOption value (`inmermory` → `inmemory`) +- [#699](https://github.com/bigbio/quantms/pull/699) Fix Comet version reporting in pmultiqc software table + +### `Removed` + +- [#702](https://github.com/bigbio/quantms/pull/702) **Remove DIA-NN workflow from quantms**: DIA users should use the dedicated repository [bigbio/quantmsdiann](https://github.com/bigbio/quantmsdiann) +- [#701](https://github.com/bigbio/quantms/pull/701) **Remove MSstats post-processing step**: R scripts (`msstats_plfq.R`, `msstats_tmt.R`, `msstats_utils.R`) and corresponding modules removed. Users should run MSstats manually outside the pipeline. +- [#706](https://github.com/bigbio/quantms/pull/706) Remove `ms2features_range` modes (`by_sample`, `by_project`) and IDRipper module. Only `independent_run` per-file Percolator is now supported. +- [#708](https://github.com/bigbio/quantms/pull/708) Remove ConsensusID module; migrate to parquet-based processing + +### `Dependencies` + +- Updated quantms-utils to version 0.0.25 +- Updated quantms-rescoring (container permissions fix) +- Migrated thermorawfileparser to bigbio/nf-modules ### `Deprecations` diff --git a/conf/modules/id.config b/conf/modules/id.config index 966700307..6221e69f0 100644 --- a/conf/modules/id.config +++ b/conf/modules/id.config @@ -6,16 +6,6 @@ process { - // ID_SCORE_SWITCHER for phospho scoring - withName: '.*:ID:PHOSPHO_SCORING:ID_SCORE_SWITCHER' { - ext.args = [ - "-new_score_orientation lower_better", - "-old_score \"q-value\"", - "-new_score_type \"Posterior Error Probability\"", - "-debug $params.idscoreswitcher_debug" - ].join(' ').trim() - } - // ONSITE phospho scoring withName: '.*:ID:PHOSPHO_SCORING:ONSITE' { ext.args = "-debug $params.onsite_debug" @@ -29,28 +19,6 @@ process { ].join(' ').trim() } - // EPIFANY - withName: '.*:PROTEIN_INFERENCE_EPIFANY' { - ext.args = "-keep_best_psm_only false -debug $params.protein_inference_debug" - } - - // PROTEIN_INFERENCE (generic) - withName: '.*:PROTEIN_INFERENCE' { - ext.args = "-debug $params.protein_inference_debug" - } - - // PSM FDR control ID_FILTER - withName: '.*:ID:PSM_FDR_CONTROL:ID_FILTER' { - ext.args = "-score:psm \"$params.run_fdr_cutoff\"" - ext.suffix = '.idparquet' - } - - // DDA_ID PSM FDR control ID_FILTER - withName: '.*:DDA_ID:PSM_FDR_CONTROL:ID_FILTER' { - ext.args = "-score:psm \"$params.run_fdr_cutoff\"" - ext.suffix = '.idparquet' - } - // MS2RESCORE withName: 'MSRESCORE_FEATURES' { ext.args = [ @@ -60,13 +28,4 @@ process { ].join(' ').trim() } - // DDA_ID phospho scoring ID_SCORE_SWITCHER - withName: '.*:DDA_ID:PHOSPHO_SCORING:ID_SCORE_SWITCHER' { - ext.args = [ - "-new_score_orientation lower_better", - "-old_score \"q-value\"", - "-new_score_type \"Posterior Error Probability\"", - "-debug $params.idscoreswitcher_debug" - ].join(' ').trim() - } } diff --git a/conf/modules/shared.config b/conf/modules/shared.config index 1a9ee7c48..ebdd5dddf 100644 --- a/conf/modules/shared.config +++ b/conf/modules/shared.config @@ -42,15 +42,6 @@ process { ] } - // publishDir for all psm tables on id workflow - withName: '.*:PSM_CONVERSION' { - publishDir = [ - path: { "${params.outdir}/psm_tables" }, - mode: 'copy', - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } - ] - } - // publishDir for all features tables withName: '.*:MZML_STATISTICS' { publishDir = [ diff --git a/conf/modules/tmt.config b/conf/modules/tmt.config index b332513e2..9ac03791b 100644 --- a/conf/modules/tmt.config +++ b/conf/modules/tmt.config @@ -5,32 +5,6 @@ */ process { - - // IDMAPPER - withName: '.*:TMT:.*:ID_MAPPER' { - ext.args = "-debug $params.idmapper_debug" - } - - // IDFILTER on PROTEIN LEVEL - withName: '.*:TMT:PROTEIN_INFERENCE:ID_FILTER' { - ext.args = { - def level = params.protein_quant == 'strictly_unique_peptides' ? 'prot' : 'proteingroup' - def decoys_present = params.quantify_decoys ? ' ' : '-remove_decoys' - [ - "-score:${level} \"$params.protein_level_fdr_cutoff\"", - "-score:psm \"$params.psm_level_fdr_cutoff\"", - "-delete_unreferenced_peptide_hits", - "${decoys_present}" - ].join(' ').trim() - } - ext.suffix = '.consensusXML' - } - - // PROTEINQUANTIFIER - withName: '.*:TMT:PROTEIN_QUANT:PROTEIN_QUANTIFIER' { - ext.args = "-debug $params.protein_quant_debug" - } - // MSSTATSCONVERTER withName: '.*:TMT:PROTEIN_QUANT:MSSTATS_CONVERTER' { ext.args = "-debug $params.protein_quant_debug" diff --git a/conf/modules/verbose_modules.config b/conf/modules/verbose_modules.config index e9a5503e9..6cba0f5f9 100644 --- a/conf/modules/verbose_modules.config +++ b/conf/modules/verbose_modules.config @@ -124,38 +124,6 @@ process { ] } - withName: '.*:PROTEIN_INFERENCE_GENERIC|PROTEIN_INFERENCE_EPIFANY' { - publishDir = [ - path: { "${params.outdir}/peptide_postprocessing/protein_inference" }, - mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } - ] - } - - withName: '.*:FILE_MERGE' { - publishDir = [ - path: { "${params.outdir}/peptide_postprocessing/file_merge" }, - mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } - ] - } - - withName: '.*:ID_MAPPER' { - publishDir = [ - path: { "${params.outdir}/peptide_postprocessing/id_mapper" }, - mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } - ] - } - - withName: '.*:ID_SCORE_SWITCHER' { - publishDir = [ - path: { "${params.outdir}/peptide_postprocessing/id_score_switcher" }, - mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } - ] - } - // Set the default publish for PTM processing steps withName: '.*:ONSITE' { publishDir = [ @@ -165,48 +133,6 @@ process { ] } - // DIANN preprocessing steps, final results will be stored in quant_tables directory - withName: '.*:INDIVIDUAL_ANALYSIS' { - publishDir = [ - path: { "${params.outdir}/diann_preprocessing/individual_analysis" }, - mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } - ] - } - - withName: '.*:PRELIMINARY_ANALYSIS' { - publishDir = [ - path: { "${params.outdir}/diann_preprocessing/preliminary_analysis" }, - mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } - ] - } - - // Database generation steps and subworkflows - withName: '.*:GENERATE_DECOY_DATABASE' { - publishDir = [ - path: { "${params.outdir}/database_generation/generate_decoy_database" }, - mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } - ] - } - - withName: '.*:ASSEMBLE_EMPIRICAL_LIBRARY' { - publishDir = [ - path: { "${params.outdir}/database_generation/assemble_empirical_library" }, - mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } - ] - } - - withName: '.*:INSILICO_LIBRARY_GENERATION' { - publishDir = [ - path: { "${params.outdir}/database_generation/insilico_library_generation" }, - mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } - ] - } - withName: '.*:MSGF_DB_INDEXING' { publishDir = [ path: { "${params.outdir}/database_generation/msgf_db_indexing" }, @@ -215,12 +141,4 @@ process { ] } - // Additional config files generated in DIANN configuration - withName: '.*:GENERATE_CFG' { - publishDir = [ - path: { "${params.outdir}/sdrf" }, - mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } - ] - } } diff --git a/docs/images/full-DDA.svg b/docs/images/full-DDA.svg deleted file mode 100644 index 36edfc697..000000000 --- a/docs/images/full-DDA.svg +++ /dev/null @@ -1,228 +0,0 @@ - - - - - - - - - - - - - - ID Comet - - - - - - mix - - - - - if multi-engine - - - - - if single-engine - - - - merge - - - - - - Percolator - - - - - - ID MSGF - - - - - - - ConsensusID - - - - - - onsite - - - - - - combined FDR - - - - - - - - Quantification +... - - - - - - Switch to - q-value/FDR - - - - - - IDFilter - - - - MSstats - - - - PMultiQC - - - - - - Raw file - conversion/... - - - - - - - - - - - - if localize - - - - if necessary - - - - Decoy generation - - - - if requested - - - - Database - - - - Input - - - - + - - - Design - - - - Spectra - - - - or - - - - ID Sage - - quantms-rescoring - - - - - -fasta - -mzML - - -raw - - - -sdrf - - - - - - diff --git a/docs/images/id-dda-pipeline.png b/docs/images/id-dda-pipeline.png deleted file mode 100644 index fd87862a7..000000000 Binary files a/docs/images/id-dda-pipeline.png and /dev/null differ diff --git a/docs/images/id_pipeline.png b/docs/images/id_pipeline.png deleted file mode 100644 index fd87862a7..000000000 Binary files a/docs/images/id_pipeline.png and /dev/null differ diff --git a/docs/images/id_pipeline.svg b/docs/images/id_pipeline.svg deleted file mode 100644 index 36edfc697..000000000 --- a/docs/images/id_pipeline.svg +++ /dev/null @@ -1,228 +0,0 @@ - - - - - - - - - - - - - - ID Comet - - - - - - mix - - - - - if multi-engine - - - - - if single-engine - - - - merge - - - - - - Percolator - - - - - - ID MSGF - - - - - - - ConsensusID - - - - - - onsite - - - - - - combined FDR - - - - - - - - Quantification +... - - - - - - Switch to - q-value/FDR - - - - - - IDFilter - - - - MSstats - - - - PMultiQC - - - - - - Raw file - conversion/... - - - - - - - - - - - - if localize - - - - if necessary - - - - Decoy generation - - - - if requested - - - - Database - - - - Input - - - - + - - - Design - - - - Spectra - - - - or - - - - ID Sage - - quantms-rescoring - - - - - -fasta - -mzML - - -raw - - - -sdrf - - - - - - diff --git a/docs/images/quantms.png b/docs/images/quantms.png index 58beffae7..41155c76d 100644 Binary files a/docs/images/quantms.png and b/docs/images/quantms.png differ diff --git a/docs/images/quantms.svg b/docs/images/quantms.svg index 945f9b00f..483e4d750 100644 --- a/docs/images/quantms.svg +++ b/docs/images/quantms.svg @@ -5,7 +5,7 @@ xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 822 1170.6" style="enable-background:new 0 0 822 1170.6;" xml:space="preserve"> - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - + + + - - - - - - - - - - - - - - - - - - - - - fasta + + + + + + + + + + + + + + + + + + + + + + - - - - - xml + + + + + + + + + + + + + + + + + + + + - - - - - fasta + + + + + + + + + + + + + + + + + + + + - - - - - fasta + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + fasta + + + + + + + qpx + + + + + + + fasta + + + + - + - + - + + + - + - + - - - - Annotation - - + + + + Annotation + + + + - + - + - - Reports - - - - - - - - - - - - - - - - - - - + + Reports + + + + + + + + + + + + + + + + + + + + + - + - + - - - - - - - Peptide Protein Identification - Protein Quantification - - - + +Peptide Protein Identification +Protein Quantification + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + - - TMT - quantms - DIA-LFQ - LFQ - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - raw - - - - - - - - - - - - - - - - - + +TMT +quantms +LFQ + + + + + + + + + + + + + - - - - - + - raw + + + + - + raw + + - - + + - - - - + + - - - - - - - + + + + + + + + - - - - - - raw + + + + + - MS-GF+, SAGE, Comet - Percolator, MS2Rescore, ConsesusID - DIA-NN - IsobaricAnalyzer - ProteinInference - proteomicsLFQ - inference,mbr,quantification - DIA-NN + raw +MS-GF+, SAGE, Comet +Percolator, quantms-rescoring +proteomicsLFQ | isobaric workflow +inference,mbr,quantification diff --git a/docs/images/quantms_lfq.svg b/docs/images/quantms_lfq.svg deleted file mode 100644 index 315e50ef3..000000000 --- a/docs/images/quantms_lfq.svg +++ /dev/null @@ -1,3 +0,0 @@ - - -
ID Comet
ID Comet
mix
mix
if multi-engine
if multi-engine
if single-engine
if single-engine
merge
merge
Percolator
Percolator
ID MSGF
ID MSGF
FDR
FDR
Distribution-based PEP
Distribution-based P...
ConsensusID
ConsensusID
Luciphor
Luciphor
combined FDR
combined FDR
Quantification +
Inference and experiment-wide FDR filter
Quantification +...
Switch to q-value/FDR
Switch to q-value/FDR
IDFilter
IDFilter
MSstats
MSstats
PTXQC
PTXQC
Raw file conversion/Indexing
Raw file conversion/...
if !multi-engine
if !multi-engine
if localize
if localize
if necessary
if necessary
Decoy generation
Decoy generation
if requested
if requested
Database
Database
Input
Input
+
+
Design
Spectra
Spectra
or
or
or
or
Viewer does not support full SVG 1.1
diff --git a/docs/images/quantms_metro.drawio.svg b/docs/images/quantms_metro.drawio.svg index 78266fb82..4283dddce 100644 --- a/docs/images/quantms_metro.drawio.svg +++ b/docs/images/quantms_metro.drawio.svg @@ -1,1071 +1,297 @@ - + - + + .st0{fill:none;stroke:#DA291C;stroke-width:11;stroke-miterlimit:10;} + .st1{fill:none;stroke:#56A8CB;stroke-width:10;stroke-miterlimit:10;} + .st2{fill:none;} + .st3{fill:none;stroke:#CDA2BE;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;} + .st4{fill:none;stroke:#9673A6;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:3,3;} + .st5{font-family:'ArialMT';} + .st6{font-size:12.8756px;} + .st7{fill:none;stroke:#FFFFFF;stroke-width:13;stroke-miterlimit:10;} + .st8{fill:#FFFFFF;stroke:#000000;} + .st9{fill:#FFBE7A;stroke:#000000;} + .st10{fill:#FFBE7A;stroke:#000000;stroke-width:1.5;stroke-dasharray:4.5,4.5;} + .st11{fill:#FFFFFF;} + .st12{fill:none;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:3,3;} + .st13{font-family:'Arial-BoldMT';} + .st14{fill:none;stroke:#DA291C;stroke-width:11;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;} + .st15{fill:none;stroke:#56A8CB;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;} + .st16{font-size:11.8539px;} + .st17{font-family:'ArialNarrow-Bold';} + .st18{letter-spacing:1.1;} + .st19{fill:#FFFFFF;stroke:#000000;stroke-dasharray:3,3;} + .st20{font-size:12.1693px;} + .st21{letter-spacing:27.4;} + .st22{fill:none;stroke:#53A567;stroke-width:10;stroke-miterlimit:10;} + .st23{clip-path:url(#SVGID_2_);} + .st24{fill-rule:evenodd;clip-rule:evenodd;fill:#FFFFFF;stroke:#2F528F;stroke-width:1.3333;stroke-miterlimit:8;} + .st25{fill-rule:evenodd;clip-rule:evenodd;stroke:#2F528F;stroke-width:1.3333;stroke-miterlimit:8;} + .st26{font-size:8.5714px;} + .st27{clip-path:url(#SVGID_4_);} + .st28{clip-path:url(#SVGID_6_);} + .st29{clip-path:url(#SVGID_8_);} + .st30{font-size:6.1224px;} + .st31{clip-path:url(#SVGID_10_);} + .st32{font-size:6.4378px;} + .st33{clip-path:url(#SVGID_12_);} + .st34{font-size:6.5691px;} + .st35{letter-spacing:33.3;} + .st36{font-size:10.0751px;} + + + - - - - + + + + + c1.7-50.1,0.7-97.9,0-169.5"/> - Search engines - (at least one) - - - - - - - - - - - - - - - Rescoring - (exactly one) - - - - - - - - - - - - - - - + Search engines + (at least one) + + + + + + + + + + + + + + + + + + + - ThermoRaw - FileParser - - - - - - - + ThermoRaw + FileParser +
+ + + + + + - Comet - - - - - - - - ConsensusID - - - - - - Distribution - fitting - - - - - - - - FDR - control - - - - Isobaric - Analyzer - - - - - - - - - + Comet +
+ + + + + + + - Mod. - localization - - - - quantms-rescoring + Percolator + FDR - - - - - - - - + Mod. + localization +
+ + + + + - Legend + Legend - - - + + - DDA-LFQ + DDA-LFQ - DDA-ISO + DDA-ISO - DIA-LFQ - Parallel step + Parallel step - - - - - IDMapper - - + + + - Protein - inference - - - - + IsobaricWorkflow +
+ + + - bigbio/quantms v1.3 - - Example analysis pathways + bigbio/quantms v1.8 + + Example analysis pathways - mzML - indexing - - - - - DIA-NN - insilico lib. predict - - - - preanalysis + mzML + indexing - - DIA-NN - empirical lib. gen. - - + - Add - decoys - - - - - - + Add + decoys +
+ + + + - Proteomics - LFQ + Proteomics + LFQ - + - mzTab + mzTab - - - Protein - Quantifier - - - - Triqler + qpx - - + - MSstats - - - - DIA-NN - summary - - - - - DIA-NN - individual final analysis + MSstats - - MSGF+ - - - - - - - - + MSGF+ +
+ + + - tdf2mzml + tdf2mzml - + - - Identification subworkflow - + + Identification subworkflow +
+ + quantms-rescoring + Percolator + + + + + +
- + - - - - - - - - -Job n -In Parallel - -Job 1 -...... + + + + - - - - - - - - - - mzML - + + + + + + + + + + + + mzML + + + @@ -1079,22 +305,22 @@ - - - - - - - - - - raw - + + + + + + + + + + + + raw + + + @@ -1108,22 +334,22 @@ - - - - - - - - - - fasta - + + + + + + + + + + + + fasta + + + @@ -1137,22 +363,22 @@ - - - - - - - - - - tsv - + + + + + + + + + + + + tsv + + + @@ -1166,22 +392,22 @@ - - - - - - - - - - mzTab - + + + + + + + + + + + + mzTab + + + @@ -1195,22 +421,22 @@ - - - - - - - - - - tsv - + + + + + + + + + + + + tsv + + + @@ -1218,412 +444,212 @@ - - - -Job 1 -...... -Job n - In Parallel - - - - - - - - - - - - - - + + + + + + + + + + + + + + - - Sage + + Sage - - - - - - - - - - - -speclib -skip + + - + - + V-1565.6L-1708.6-1565.6z M-1677-1512.1h-31.6v-11.1h31.6V-1512.1L-1677-1512.1z"/> - + /> - + V-1553.9z M-1673-1500.4h-31.6v-11.1h31.6V-1500.4L-1673-1500.4z"/> - + - - + V-1542.2L-1700.6-1542.2z M-1669-1488.7h-31.6v-11.1h31.6V-1488.7L-1669-1488.7z"/> + - raw + raw - + - + V-1718.2L-1708.6-1718.2z M-1677-1664.7h-31.6v-11.1h31.6V-1664.7L-1677-1664.7z"/> - + L-1677-1664.7z"/> - + V-1706.5z M-1673-1653h-31.6v-11.1h31.6V-1653L-1673-1653z"/> - + - - + + /> - mzML + mzML - + - + V-1346.6L-1705.2-1346.6z M-1673.6-1293.1h-31.6v-11.1h31.6V-1293.1L-1673.6-1293.1z"/> - + V-1293.1L-1673.6-1293.1z"/> - + z M-1669.6-1281.5h-31.6v-11.1h31.6V-1281.5L-1669.6-1281.5z"/> - + - - + + L-1665.6-1269.7z"/> - fasta + fasta - + - + V-1462.3L-1708.6-1462.3z M-1677-1408.8h-31.6v-11.1h31.6V-1408.8L-1677-1408.8z"/> - + L-1677-1408.8z"/> - + z M-1673-1397.2h-31.6v-11.1h31.6V-1397.2L-1673-1397.2z"/> - + "/> - - + V-1439L-1700.6-1439z M-1669-1385.5h-31.6v-11.1h31.6V-1385.5L-1669-1385.5z"/> + - .d + .d - - + + diff --git a/docs/images/quantms_metro.png b/docs/images/quantms_metro.png index 36ac2b325..5047a764b 100644 Binary files a/docs/images/quantms_metro.png and b/docs/images/quantms_metro.png differ diff --git a/modules/local/openms/id_filter/main.nf b/modules/local/openms/id_filter/main.nf deleted file mode 100644 index 2bf6c8cf1..000000000 --- a/modules/local/openms/id_filter/main.nf +++ /dev/null @@ -1,37 +0,0 @@ -process ID_FILTER { - tag {task.ext.suffix == ".idparquet" ? "$meta.mzml_id" : "$id_file.baseName"} - label 'process_very_low' - label 'process_single' - label 'openms' - - container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'oras://ghcr.io/bigbio/openms-tools-thirdparty-sif:latest' : - 'ghcr.io/bigbio/openms-tools-thirdparty:latest' }" - - input: - tuple val(meta), path(id_file), val(score_type) - - output: - tuple val(meta), path("${id_file.baseName}_filter$task.ext.suffix"), emit: id_filtered - path "versions.yml", emit: versions - path "*.log", emit: log - - script: - def args = task.ext.args ?: '' - def suffix = task.ext.suffix - - """ - IDFilter \\ - -in ${id_file} \\ - -out ${id_file.baseName}_filter$suffix \\ - -threads $task.cpus \\ - ${score_type} \\ - $args \\ - 2>&1 | tee ${id_file.baseName}_idfilter.log - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - IDFilter: \$(IDFilter 2>&1 | grep -E '^Version(.*)' | sed 's/Version: //g' | cut -d ' ' -f 1) - END_VERSIONS - """ -} diff --git a/modules/local/openms/id_filter/meta.yml b/modules/local/openms/id_filter/meta.yml deleted file mode 100644 index 48fa43e41..000000000 --- a/modules/local/openms/id_filter/meta.yml +++ /dev/null @@ -1,38 +0,0 @@ -name: id_filter -description: Filters peptide/protein identification results by different criteria. -keywords: - - Filter - - identification - - OpenMS -tools: - - IDFilter: - description: | - Tool to Filters results from protein or peptide identification engines based on different criteria. - homepage: https://abibuilder.cs.uni-tuebingen.de/archive/openms/Documentation/nightly/html/TOPP_IDFilter.html - documentation: https://abibuilder.cs.uni-tuebingen.de/archive/openms/Documentation/nightly/html/TOPP_IDFilter.html -input: - - meta: - type: map - description: Groovy Map containing sample information - - id_file: - type: file - description: Peptide-spectrum matches. - pattern: "*.{idXML,consensusXML}" -output: - - meta: - type: map - description: Groovy Map containing sample information - - id_files_idx_ForIDPEP_FDR: - type: file - description: Output file - pattern: "*.{idXML,consensusXML}" - - log: - type: file - description: log file - pattern: "*.log" - - version: - type: file - description: File containing software version - pattern: "versions.yml" -authors: - - "@daichengxin" diff --git a/nextflow.config b/nextflow.config index ed5378301..21a88090c 100644 --- a/nextflow.config +++ b/nextflow.config @@ -369,7 +369,7 @@ includeConfig params.custom_config_base && (!System.getenv('NXF_OFFLINE') || !pa // Load bigbio/quantms custom profiles from different institutions. // TODO nf-core: Optionally, you can add a pipeline-specific nf-core config at https://github.com/nf-core/configs -// includeConfig params.custom_config_base && (!System.getenv('NXF_OFFLINE') || !params.custom_config_base.startsWith('http')) ? "${params.custom_config_base}/pipeline/quantms.config" : "/dev/null" +includeConfig params.custom_config_base && (!System.getenv('NXF_OFFLINE') || !params.custom_config_base.startsWith('http')) ? "${params.custom_config_base}/pipeline/quantms.config" : "/dev/null" // Set default registry for Apptainer, Docker, Podman, Charliecloud and Singularity independent of -profile // Will not be used unless Apptainer / Docker / Podman / Charliecloud / Singularity are enabled @@ -477,7 +477,7 @@ manifest { mainScript = 'main.nf' defaultBranch = 'master' nextflowVersion = '!>=25.10.4' - version = '1.8.0dev' + version = '1.8.0' doi = '10.5281/zenodo.15573386' } diff --git a/ro-crate-metadata.json b/ro-crate-metadata.json index 50e84c2d8..283c2bade 100644 --- a/ro-crate-metadata.json +++ b/ro-crate-metadata.json @@ -163,7 +163,7 @@ "https://nf-co.re/bigbio/quantms/dev/" ], "version": [ - "1.8.0dev" + "1.8.0" ] }, { diff --git a/subworkflows/local/dda_id/main.nf b/subworkflows/local/dda_id/main.nf index b6ac37096..ace0508cd 100644 --- a/subworkflows/local/dda_id/main.nf +++ b/subworkflows/local/dda_id/main.nf @@ -8,7 +8,6 @@ include { PHOSPHO_SCORING } from '../phospho_scoring/main' // SUBWORKFLOW: Consisting of a mix of local and nf-core/modules // include { PEPTIDE_DATABASE_SEARCH } from '../peptide_database_search/main' -include { PSM_FDR_CONTROL } from '../psm_fdr_control/main' workflow DDA_ID { take: @@ -43,16 +42,12 @@ workflow DDA_ID { ch_rescoring_results = PERCOLATOR.out.id_files_perc ch_software_versions = ch_software_versions.mix(PERCOLATOR.out.versions) - - PSM_FDR_CONTROL(ch_rescoring_results) - ch_software_versions = ch_software_versions.mix(PSM_FDR_CONTROL.out.versions) - if (params.enable_mod_localization) { - PHOSPHO_SCORING(ch_file_preparation_results, PSM_FDR_CONTROL.out.id_filtered) + PHOSPHO_SCORING(ch_file_preparation_results, ch_rescoring_results) ch_software_versions = ch_software_versions.mix(PHOSPHO_SCORING.out.versions.ifEmpty(null)) ch_id_results = PHOSPHO_SCORING.out.id_onsite } else { - ch_id_results = PSM_FDR_CONTROL.out.id_filtered + ch_id_results = ch_rescoring_results } emit: diff --git a/subworkflows/local/dda_id/meta.yml b/subworkflows/local/dda_id/meta.yml index c2dc3ca45..137b700a2 100644 --- a/subworkflows/local/dda_id/meta.yml +++ b/subworkflows/local/dda_id/meta.yml @@ -7,17 +7,11 @@ keywords: - proteomics - msms components: - - consensusid - percolator - - id/merger - - id/ripper - - psm/conversion - msrescore/features - - get/sample - spectrum/features - psm/clean - peptide_database_search - - psm_fdr_control - phospho_scoring input: - ch_input: diff --git a/subworkflows/local/id/main.nf b/subworkflows/local/id/main.nf index f9622a212..d5f2f926f 100644 --- a/subworkflows/local/id/main.nf +++ b/subworkflows/local/id/main.nf @@ -3,7 +3,6 @@ // include { PEPTIDE_DATABASE_SEARCH } from '../peptide_database_search/main' include { PSM_RESCORING } from '../psm_rescoring/main' -include { PSM_FDR_CONTROL } from '../psm_fdr_control/main' include { PHOSPHO_SCORING } from '../phospho_scoring/main' workflow ID { diff --git a/subworkflows/local/id/meta.yml b/subworkflows/local/id/meta.yml index b3d56a96b..400b24d8c 100644 --- a/subworkflows/local/id/meta.yml +++ b/subworkflows/local/id/meta.yml @@ -7,10 +7,8 @@ keywords: - search - engine components: - - consensusid - peptide_database_search - psm_rescoring - - psm_fdr_control - phospho_scoring input: - ch_input: diff --git a/subworkflows/local/psm_fdr_control/main.nf b/subworkflows/local/psm_fdr_control/main.nf deleted file mode 100644 index 24f8a0e4e..000000000 --- a/subworkflows/local/psm_fdr_control/main.nf +++ /dev/null @@ -1,23 +0,0 @@ -// -// fdr control based on psm/peptide -// - -include { ID_FILTER } from '../../../modules/local/openms/id_filter/main' - -workflow PSM_FDR_CONTROL { - - take: - ch_id_files - - main: - ch_version = channel.empty() - ch_idfilter = channel.empty() - - ID_FILTER(ch_id_files.combine(channel.value("-score:type_peptide q-value"))) - ch_version = ch_version.mix(ID_FILTER.out.versions) - ch_idfilter = ID_FILTER.out.id_filtered - - emit: - id_filtered = ch_idfilter - versions = ch_version -} diff --git a/subworkflows/local/psm_fdr_control/meta.yml b/subworkflows/local/psm_fdr_control/meta.yml deleted file mode 100644 index b73294ca6..000000000 --- a/subworkflows/local/psm_fdr_control/meta.yml +++ /dev/null @@ -1,30 +0,0 @@ -# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/subworkflows/yaml-schema.json -name: "psm_fdr_control" -description: Subworkflow for PSM-level false discovery rate control -keywords: - - psm - - fdr - - discovery - - rate - - proteomics -components: - - false/discovery/rate - - id/filter -input: - - ch_input: - type: file - description: | - Channel containing input files for FDR control -output: - - ch_fdr_results: - type: file - description: | - Channel containing FDR-controlled results - - versions: - type: file - description: | - Software versions used in this subworkflow -authors: - - "@bigbio" -maintainers: - - "@bigbio"