From 49d0bd3dd0c14f337896a21902c8400fe23bed32 Mon Sep 17 00:00:00 2001 From: Jonas Scheid Date: Tue, 13 Oct 2026 09:25:09 +0000 Subject: [PATCH 01/19] Update nf-core modules openms and openmsthirdparty/cometadapter Generated by Claude (Opus 5.5) Co-Authored-By: Claude Opus 5.5 --- modules.json | 34 +++++++++---------- .../openms/decoydatabase/environment.yml | 2 +- modules/nf-core/openms/decoydatabase/main.nf | 4 +-- .../decoydatabase/tests/main.nf.test.snap | 12 +++---- .../environment.yml | 2 +- .../featurefinderidentification/main.nf | 4 +-- .../tests/main.nf.test.snap | 16 ++++----- .../openms/fileconverter/environment.yml | 2 +- modules/nf-core/openms/fileconverter/main.nf | 4 +-- .../fileconverter/tests/main.nf.test.snap | 12 +++---- .../nf-core/openms/filefilter/environment.yml | 2 +- modules/nf-core/openms/filefilter/main.nf | 4 +-- .../openms/filefilter/tests/main.nf.test.snap | 16 ++++----- .../openms/idconflictresolver/environment.yml | 2 +- .../nf-core/openms/idconflictresolver/main.nf | 4 +-- .../tests/main.nf.test.snap | 12 +++---- .../nf-core/openms/idfilter/environment.yml | 2 +- modules/nf-core/openms/idfilter/main.nf | 8 ++--- .../openms/idfilter/tests/main.nf.test.snap | 28 +++++++-------- .../nf-core/openms/idmerger/environment.yml | 2 +- modules/nf-core/openms/idmerger/main.nf | 4 +-- .../openms/idmerger/tests/main.nf.test.snap | 22 ++++++------ .../nf-core/openms/idripper/environment.yml | 2 +- modules/nf-core/openms/idripper/main.nf | 4 +-- .../openms/idripper/tests/main.nf.test.snap | 32 ++++++++--------- .../openms/idscoreswitcher/environment.yml | 2 +- .../nf-core/openms/idscoreswitcher/main.nf | 4 +-- .../idscoreswitcher/tests/main.nf.test.snap | 28 +++++++-------- .../mapaligneridentification/environment.yml | 2 +- .../openms/mapaligneridentification/main.nf | 8 ++--- .../tests/main.nf.test.snap | 20 +++++------ .../openms/maprttransformer/environment.yml | 2 +- .../nf-core/openms/maprttransformer/main.nf | 4 +-- .../maprttransformer/tests/main.nf.test.snap | 16 ++++----- .../openms/mztabexporter/environment.yml | 2 +- modules/nf-core/openms/mztabexporter/main.nf | 4 +-- .../mztabexporter/tests/main.nf.test.snap | 16 ++++----- .../openms/peakpickerhires/environment.yml | 2 +- .../nf-core/openms/peakpickerhires/main.nf | 4 +-- .../peakpickerhires/tests/main.nf.test.snap | 22 ++++++------ .../openms/peptideindexer/environment.yml | 2 +- modules/nf-core/openms/peptideindexer/main.nf | 4 +-- .../peptideindexer/tests/main.nf.test.snap | 28 +++++++-------- .../psmfeatureextractor/environment.yml | 2 +- .../openms/psmfeatureextractor/main.nf | 4 +-- .../tests/main.nf.test.snap | 24 ++++++------- .../openms/textexporter/environment.yml | 2 +- modules/nf-core/openms/textexporter/main.nf | 4 +-- .../textexporter/tests/main.nf.test.snap | 22 ++++++------ .../cometadapter/environment.yml | 2 +- .../openmsthirdparty/cometadapter/main.nf | 4 +-- .../cometadapter/tests/main.nf.test.snap | 14 ++++---- 52 files changed, 242 insertions(+), 242 deletions(-) diff --git a/modules.json b/modules.json index f5e84e82..c81357f3 100644 --- a/modules.json +++ b/modules.json @@ -27,87 +27,87 @@ }, "openms/decoydatabase": { "branch": "master", - "git_sha": "6d46786420b4d7bc88eba026eb389c0c5535d120", + "git_sha": "580647c817abec76fbb780e1ea537504c7543a99", "installed_by": ["modules"] }, "openms/featurefinderidentification": { "branch": "master", - "git_sha": "d32895bb4b4be064a93fcb7c60f5ba0e94443b73", + "git_sha": "580647c817abec76fbb780e1ea537504c7543a99", "installed_by": ["modules"] }, "openms/fileconverter": { "branch": "master", - "git_sha": "924841ecdeb9b2aea108eda13cacf45a2452d35f", + "git_sha": "580647c817abec76fbb780e1ea537504c7543a99", "installed_by": ["modules"] }, "openms/filefilter": { "branch": "master", - "git_sha": "6d46786420b4d7bc88eba026eb389c0c5535d120", + "git_sha": "580647c817abec76fbb780e1ea537504c7543a99", "installed_by": ["modules"] }, "openms/idconflictresolver": { "branch": "master", - "git_sha": "4a071f825fcfa127954a1bcc210e0ea3678f9753", + "git_sha": "580647c817abec76fbb780e1ea537504c7543a99", "installed_by": ["modules"] }, "openms/idfilter": { "branch": "master", - "git_sha": "6d46786420b4d7bc88eba026eb389c0c5535d120", + "git_sha": "580647c817abec76fbb780e1ea537504c7543a99", "installed_by": ["modules"] }, "openms/idmerger": { "branch": "master", - "git_sha": "6d46786420b4d7bc88eba026eb389c0c5535d120", + "git_sha": "580647c817abec76fbb780e1ea537504c7543a99", "installed_by": ["modules"] }, "openms/idripper": { "branch": "master", - "git_sha": "6d46786420b4d7bc88eba026eb389c0c5535d120", + "git_sha": "580647c817abec76fbb780e1ea537504c7543a99", "installed_by": ["modules"] }, "openms/idscoreswitcher": { "branch": "master", - "git_sha": "6d46786420b4d7bc88eba026eb389c0c5535d120", + "git_sha": "580647c817abec76fbb780e1ea537504c7543a99", "installed_by": ["modules"] }, "openms/mapaligneridentification": { "branch": "master", - "git_sha": "4349b6916716e48f1bdf8590fd416fa2c59a70dd", + "git_sha": "580647c817abec76fbb780e1ea537504c7543a99", "installed_by": ["modules"] }, "openms/maprttransformer": { "branch": "master", - "git_sha": "c1a970a6ad9cbb0b7209a927feb21e1f39c1841a", + "git_sha": "580647c817abec76fbb780e1ea537504c7543a99", "installed_by": ["modules"] }, "openms/mztabexporter": { "branch": "master", - "git_sha": "d8c8c4cb1c4e1a38c7619cf905e8701ff00a8580", + "git_sha": "580647c817abec76fbb780e1ea537504c7543a99", "installed_by": ["modules"] }, "openms/peakpickerhires": { "branch": "master", - "git_sha": "6d46786420b4d7bc88eba026eb389c0c5535d120", + "git_sha": "580647c817abec76fbb780e1ea537504c7543a99", "installed_by": ["modules"] }, "openms/peptideindexer": { "branch": "master", - "git_sha": "6d46786420b4d7bc88eba026eb389c0c5535d120", + "git_sha": "580647c817abec76fbb780e1ea537504c7543a99", "installed_by": ["modules"] }, "openms/psmfeatureextractor": { "branch": "master", - "git_sha": "6d46786420b4d7bc88eba026eb389c0c5535d120", + "git_sha": "580647c817abec76fbb780e1ea537504c7543a99", "installed_by": ["modules"] }, "openms/textexporter": { "branch": "master", - "git_sha": "6d46786420b4d7bc88eba026eb389c0c5535d120", + "git_sha": "580647c817abec76fbb780e1ea537504c7543a99", "installed_by": ["modules"] }, "openmsthirdparty/cometadapter": { "branch": "master", - "git_sha": "6d46786420b4d7bc88eba026eb389c0c5535d120", + "git_sha": "580647c817abec76fbb780e1ea537504c7543a99", "installed_by": ["modules"] }, "parsesdrf/convert": { diff --git a/modules/nf-core/openms/decoydatabase/environment.yml b/modules/nf-core/openms/decoydatabase/environment.yml index c8bad1b9..0c8baaec 100644 --- a/modules/nf-core/openms/decoydatabase/environment.yml +++ b/modules/nf-core/openms/decoydatabase/environment.yml @@ -4,4 +4,4 @@ channels: - conda-forge - bioconda dependencies: - - bioconda::openms=3.5.0 + - bioconda::openms=3.6.0 diff --git a/modules/nf-core/openms/decoydatabase/main.nf b/modules/nf-core/openms/decoydatabase/main.nf index 27a2f14d..1f8b4218 100644 --- a/modules/nf-core/openms/decoydatabase/main.nf +++ b/modules/nf-core/openms/decoydatabase/main.nf @@ -4,8 +4,8 @@ process OPENMS_DECOYDATABASE { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine in ['singularity', 'apptainer'] && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/openms:3.5.0--h78fb946_0' : - 'quay.io/biocontainers/openms:3.5.0--h78fb946_0' }" + 'https://depot.galaxyproject.org/singularity/openms:3.6.0--hc52dbad_0' : + 'quay.io/biocontainers/openms:3.6.0--hc52dbad_0' }" input: tuple val(meta), path(fasta) diff --git a/modules/nf-core/openms/decoydatabase/tests/main.nf.test.snap b/modules/nf-core/openms/decoydatabase/tests/main.nf.test.snap index d2f80c6f..09778eb9 100644 --- a/modules/nf-core/openms/decoydatabase/tests/main.nf.test.snap +++ b/modules/nf-core/openms/decoydatabase/tests/main.nf.test.snap @@ -14,7 +14,7 @@ [ "OPENMS_DECOYDATABASE", "openms", - "3.5.0" + "3.6.0" ] ], "decoy_fasta": [ @@ -29,15 +29,15 @@ [ "OPENMS_DECOYDATABASE", "openms", - "3.5.0" + "3.6.0" ] ] } ], + "timestamp": "2026-10-12T06:44:19.35382414", "meta": { - "nf-test": "0.9.3", - "nextflow": "25.04.8" - }, - "timestamp": "2026-01-12T13:14:52.51304012" + "nf-test": "0.9.5", + "nextflow": "25.10.4" + } } } \ No newline at end of file diff --git a/modules/nf-core/openms/featurefinderidentification/environment.yml b/modules/nf-core/openms/featurefinderidentification/environment.yml index c8bad1b9..0c8baaec 100644 --- a/modules/nf-core/openms/featurefinderidentification/environment.yml +++ b/modules/nf-core/openms/featurefinderidentification/environment.yml @@ -4,4 +4,4 @@ channels: - conda-forge - bioconda dependencies: - - bioconda::openms=3.5.0 + - bioconda::openms=3.6.0 diff --git a/modules/nf-core/openms/featurefinderidentification/main.nf b/modules/nf-core/openms/featurefinderidentification/main.nf index eb25d7eb..b7f21b6e 100644 --- a/modules/nf-core/openms/featurefinderidentification/main.nf +++ b/modules/nf-core/openms/featurefinderidentification/main.nf @@ -4,8 +4,8 @@ process OPENMS_FEATUREFINDERIDENTIFICATION { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine in ['singularity', 'apptainer'] && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/openms:3.5.0--h78fb946_0' : - 'quay.io/biocontainers/openms:3.5.0--h78fb946_0' }" + 'https://depot.galaxyproject.org/singularity/openms:3.6.0--hc52dbad_0' : + 'quay.io/biocontainers/openms:3.6.0--hc52dbad_0' }" input: tuple val(meta), path(mzml), path(id_int), path(id_ext), val(out_type) diff --git a/modules/nf-core/openms/featurefinderidentification/tests/main.nf.test.snap b/modules/nf-core/openms/featurefinderidentification/tests/main.nf.test.snap index def66eeb..41e2c3b6 100644 --- a/modules/nf-core/openms/featurefinderidentification/tests/main.nf.test.snap +++ b/modules/nf-core/openms/featurefinderidentification/tests/main.nf.test.snap @@ -1,26 +1,26 @@ { "proteomics - mzml - idxml": { "content": [ - "3951", - 11853, + "3949", + 11847, { "1": [ [ "OPENMS_FEATUREFINDERIDENTIFICATION", "openms", - "3.5.0" + "3.6.0" ] ], "versions_openms": [ [ "OPENMS_FEATUREFINDERIDENTIFICATION", "openms", - "3.5.0" + "3.6.0" ] ] } ], - "timestamp": "2026-09-15T12:27:37.032880474", + "timestamp": "2026-10-12T06:47:23.391960611", "meta": { "nf-test": "0.9.5", "nextflow": "25.10.4" @@ -41,7 +41,7 @@ [ "OPENMS_FEATUREFINDERIDENTIFICATION", "openms", - "3.5.0" + "3.6.0" ] ], "features": [ @@ -56,12 +56,12 @@ [ "OPENMS_FEATUREFINDERIDENTIFICATION", "openms", - "3.5.0" + "3.6.0" ] ] } ], - "timestamp": "2026-09-15T11:55:07.536379896", + "timestamp": "2026-10-12T06:48:07.344290133", "meta": { "nf-test": "0.9.5", "nextflow": "25.10.4" diff --git a/modules/nf-core/openms/fileconverter/environment.yml b/modules/nf-core/openms/fileconverter/environment.yml index c8bad1b9..0c8baaec 100644 --- a/modules/nf-core/openms/fileconverter/environment.yml +++ b/modules/nf-core/openms/fileconverter/environment.yml @@ -4,4 +4,4 @@ channels: - conda-forge - bioconda dependencies: - - bioconda::openms=3.5.0 + - bioconda::openms=3.6.0 diff --git a/modules/nf-core/openms/fileconverter/main.nf b/modules/nf-core/openms/fileconverter/main.nf index 1d3157da..1823e2ea 100644 --- a/modules/nf-core/openms/fileconverter/main.nf +++ b/modules/nf-core/openms/fileconverter/main.nf @@ -4,8 +4,8 @@ process OPENMS_FILECONVERTER { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine in ['singularity', 'apptainer'] && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/openms:3.5.0--h78fb946_0' : - 'quay.io/biocontainers/openms:3.5.0--h78fb946_0' }" + 'https://depot.galaxyproject.org/singularity/openms:3.6.0--hc52dbad_0' : + 'quay.io/biocontainers/openms:3.6.0--hc52dbad_0' }" input: tuple val(meta), path(input_file), val(out_type) diff --git a/modules/nf-core/openms/fileconverter/tests/main.nf.test.snap b/modules/nf-core/openms/fileconverter/tests/main.nf.test.snap index 62287c54..62a75a5a 100644 --- a/modules/nf-core/openms/fileconverter/tests/main.nf.test.snap +++ b/modules/nf-core/openms/fileconverter/tests/main.nf.test.snap @@ -14,7 +14,7 @@ [ "OPENMS_FILECONVERTER", "openms", - "3.5.0" + "3.6.0" ] ], "converted": [ @@ -29,12 +29,12 @@ [ "OPENMS_FILECONVERTER", "openms", - "3.5.0" + "3.6.0" ] ] } ], - "timestamp": "2026-04-29T08:42:49.654780453", + "timestamp": "2026-10-12T06:48:43.010950621", "meta": { "nf-test": "0.9.5", "nextflow": "25.10.4" @@ -55,7 +55,7 @@ [ "OPENMS_FILECONVERTER", "openms", - "3.5.0" + "3.6.0" ] ], "converted": [ @@ -70,12 +70,12 @@ [ "OPENMS_FILECONVERTER", "openms", - "3.5.0" + "3.6.0" ] ] } ], - "timestamp": "2026-04-29T08:42:37.179934897", + "timestamp": "2026-10-12T06:48:30.002919668", "meta": { "nf-test": "0.9.5", "nextflow": "25.10.4" diff --git a/modules/nf-core/openms/filefilter/environment.yml b/modules/nf-core/openms/filefilter/environment.yml index fd1026d7..edaf7a38 100644 --- a/modules/nf-core/openms/filefilter/environment.yml +++ b/modules/nf-core/openms/filefilter/environment.yml @@ -4,4 +4,4 @@ channels: - conda-forge - bioconda dependencies: - - "bioconda::openms=3.5.0" + - "bioconda::openms=3.6.0" diff --git a/modules/nf-core/openms/filefilter/main.nf b/modules/nf-core/openms/filefilter/main.nf index bb589079..8c2d018b 100644 --- a/modules/nf-core/openms/filefilter/main.nf +++ b/modules/nf-core/openms/filefilter/main.nf @@ -4,8 +4,8 @@ process OPENMS_FILEFILTER { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine in ['singularity', 'apptainer'] && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/openms:3.5.0--h78fb946_0' : - 'quay.io/biocontainers/openms:3.5.0--h78fb946_0' }" + 'https://depot.galaxyproject.org/singularity/openms:3.6.0--hc52dbad_0' : + 'quay.io/biocontainers/openms:3.6.0--hc52dbad_0' }" input: tuple val(meta), path(file) diff --git a/modules/nf-core/openms/filefilter/tests/main.nf.test.snap b/modules/nf-core/openms/filefilter/tests/main.nf.test.snap index 1f481bdc..876324b5 100644 --- a/modules/nf-core/openms/filefilter/tests/main.nf.test.snap +++ b/modules/nf-core/openms/filefilter/tests/main.nf.test.snap @@ -19,11 +19,11 @@ "\t\t" ] ], + "timestamp": "2025-01-21T13:07:14.535106314", "meta": { "nf-test": "0.9.2", "nextflow": "24.10.3" - }, - "timestamp": "2025-01-21T13:07:14.535106314" + } }, "filter - mzml - stub": { "content": [ @@ -46,7 +46,7 @@ [ "OPENMS_FILEFILTER", "openms", - "3.5.0" + "3.6.0" ] ], "consensusxml": [ @@ -67,15 +67,15 @@ [ "OPENMS_FILEFILTER", "openms", - "3.5.0" + "3.6.0" ] ] } ], + "timestamp": "2026-10-12T06:50:03.317831106", "meta": { - "nf-test": "0.9.3", - "nextflow": "25.04.8" - }, - "timestamp": "2026-01-12T10:02:48.433471741" + "nf-test": "0.9.5", + "nextflow": "25.10.4" + } } } \ No newline at end of file diff --git a/modules/nf-core/openms/idconflictresolver/environment.yml b/modules/nf-core/openms/idconflictresolver/environment.yml index c8bad1b9..0c8baaec 100644 --- a/modules/nf-core/openms/idconflictresolver/environment.yml +++ b/modules/nf-core/openms/idconflictresolver/environment.yml @@ -4,4 +4,4 @@ channels: - conda-forge - bioconda dependencies: - - bioconda::openms=3.5.0 + - bioconda::openms=3.6.0 diff --git a/modules/nf-core/openms/idconflictresolver/main.nf b/modules/nf-core/openms/idconflictresolver/main.nf index f2c1a81e..0023a6d1 100644 --- a/modules/nf-core/openms/idconflictresolver/main.nf +++ b/modules/nf-core/openms/idconflictresolver/main.nf @@ -4,8 +4,8 @@ process OPENMS_IDCONFLICTRESOLVER { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine in ['singularity', 'apptainer'] && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/openms:3.5.0--h78fb946_0' : - 'quay.io/biocontainers/openms:3.5.0--h78fb946_0' }" + 'https://depot.galaxyproject.org/singularity/openms:3.6.0--hc52dbad_0' : + 'quay.io/biocontainers/openms:3.6.0--hc52dbad_0' }" input: tuple val(meta), path(consensus_file) diff --git a/modules/nf-core/openms/idconflictresolver/tests/main.nf.test.snap b/modules/nf-core/openms/idconflictresolver/tests/main.nf.test.snap index 827e110e..3d77ee40 100644 --- a/modules/nf-core/openms/idconflictresolver/tests/main.nf.test.snap +++ b/modules/nf-core/openms/idconflictresolver/tests/main.nf.test.snap @@ -2,16 +2,16 @@ "proteomics - consensusxml": { "content": [ "test_resolved.consensusXML", - 3951, + 3949, [ [ "OPENMS_IDCONFLICTRESOLVER", "openms", - "3.5.0" + "3.6.0" ] ] ], - "timestamp": "2026-09-16T12:20:27.802072738", + "timestamp": "2026-10-12T06:53:06.023630818", "meta": { "nf-test": "0.9.5", "nextflow": "25.10.4" @@ -32,7 +32,7 @@ [ "OPENMS_IDCONFLICTRESOLVER", "openms", - "3.5.0" + "3.6.0" ] ], "resolved": [ @@ -47,12 +47,12 @@ [ "OPENMS_IDCONFLICTRESOLVER", "openms", - "3.5.0" + "3.6.0" ] ] } ], - "timestamp": "2026-09-15T12:54:16.078516806", + "timestamp": "2026-10-12T06:54:01.923318332", "meta": { "nf-test": "0.9.5", "nextflow": "25.10.4" diff --git a/modules/nf-core/openms/idfilter/environment.yml b/modules/nf-core/openms/idfilter/environment.yml index fd1026d7..edaf7a38 100644 --- a/modules/nf-core/openms/idfilter/environment.yml +++ b/modules/nf-core/openms/idfilter/environment.yml @@ -4,4 +4,4 @@ channels: - conda-forge - bioconda dependencies: - - "bioconda::openms=3.5.0" + - "bioconda::openms=3.6.0" diff --git a/modules/nf-core/openms/idfilter/main.nf b/modules/nf-core/openms/idfilter/main.nf index b2b2523b..07074bd3 100644 --- a/modules/nf-core/openms/idfilter/main.nf +++ b/modules/nf-core/openms/idfilter/main.nf @@ -4,8 +4,8 @@ process OPENMS_IDFILTER { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine in ['singularity', 'apptainer'] && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/openms:3.5.0--h78fb946_0' : - 'quay.io/biocontainers/openms:3.5.0--h78fb946_0' }" + 'https://depot.galaxyproject.org/singularity/openms:3.6.0--hc52dbad_0' : + 'quay.io/biocontainers/openms:3.6.0--hc52dbad_0' }" input: tuple val(meta), path(id_file), path(filter_file) @@ -20,7 +20,7 @@ process OPENMS_IDFILTER { script: def args = task.ext.args ?: '' def prefix = task.ext.prefix ?: "${meta.id}" - def suffix = task.ext.suffix ?: "${id_file.getExtension()}" + def suffix = id_file.getExtension() if ("$id_file" == "${prefix}.${suffix}") error "Input and output names are the same, set prefix in module configuration to disambiguate!" // Optional filtering via filter_file def filter_citerion = task.ext.args2 ?: "-whitelist:peptides" @@ -36,7 +36,7 @@ process OPENMS_IDFILTER { stub: def prefix = task.ext.prefix ?: "${meta.id}" - def suffix = task.ext.suffix ?: "${id_file.getExtension()}" + def suffix = id_file.getExtension() if ("$id_file" == "${prefix}.${suffix}") error "Input and output names are the same, set prefix in module configuration to disambiguate!" """ touch ${prefix}.${suffix} diff --git a/modules/nf-core/openms/idfilter/tests/main.nf.test.snap b/modules/nf-core/openms/idfilter/tests/main.nf.test.snap index dea78c77..f3adadba 100644 --- a/modules/nf-core/openms/idfilter/tests/main.nf.test.snap +++ b/modules/nf-core/openms/idfilter/tests/main.nf.test.snap @@ -14,7 +14,7 @@ [ "OPENMS_IDFILTER", "openms", - "3.5.0" + "3.6.0" ] ], "filtered": [ @@ -29,16 +29,16 @@ [ "OPENMS_IDFILTER", "openms", - "3.5.0" + "3.6.0" ] ] } ], + "timestamp": "2026-10-12T06:54:41.676201288", "meta": { - "nf-test": "0.9.3", - "nextflow": "25.04.8" - }, - "timestamp": "2026-01-12T10:03:17.056821477" + "nf-test": "0.9.5", + "nextflow": "25.10.4" + } }, "proteomics - filter - idxml": { "content": [ @@ -48,14 +48,14 @@ { "id": "test" }, - "test.idXML:md5,3231d9c0cd1838db70a576f505ed1a21" + "test.idXML:md5,336992f7531351328ab293ff99d16682" ] ], "1": [ [ "OPENMS_IDFILTER", "openms", - "3.5.0" + "3.6.0" ] ], "filtered": [ @@ -63,22 +63,22 @@ { "id": "test" }, - "test.idXML:md5,3231d9c0cd1838db70a576f505ed1a21" + "test.idXML:md5,336992f7531351328ab293ff99d16682" ] ], "versions_openms": [ [ "OPENMS_IDFILTER", "openms", - "3.5.0" + "3.6.0" ] ] } ], + "timestamp": "2026-10-12T06:54:28.028007886", "meta": { - "nf-test": "0.9.3", - "nextflow": "25.04.8" - }, - "timestamp": "2026-01-12T10:03:04.798826665" + "nf-test": "0.9.5", + "nextflow": "25.10.4" + } } } \ No newline at end of file diff --git a/modules/nf-core/openms/idmerger/environment.yml b/modules/nf-core/openms/idmerger/environment.yml index c8bad1b9..0c8baaec 100644 --- a/modules/nf-core/openms/idmerger/environment.yml +++ b/modules/nf-core/openms/idmerger/environment.yml @@ -4,4 +4,4 @@ channels: - conda-forge - bioconda dependencies: - - bioconda::openms=3.5.0 + - bioconda::openms=3.6.0 diff --git a/modules/nf-core/openms/idmerger/main.nf b/modules/nf-core/openms/idmerger/main.nf index 9b19336b..b149e6b8 100644 --- a/modules/nf-core/openms/idmerger/main.nf +++ b/modules/nf-core/openms/idmerger/main.nf @@ -4,8 +4,8 @@ process OPENMS_IDMERGER { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine in ['singularity', 'apptainer'] && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/openms:3.5.0--h78fb946_0' : - 'quay.io/biocontainers/openms:3.5.0--h78fb946_0' }" + 'https://depot.galaxyproject.org/singularity/openms:3.6.0--hc52dbad_0' : + 'quay.io/biocontainers/openms:3.6.0--hc52dbad_0' }" input: tuple val(meta), path(idxmls) diff --git a/modules/nf-core/openms/idmerger/tests/main.nf.test.snap b/modules/nf-core/openms/idmerger/tests/main.nf.test.snap index 13e6f7a8..d0512ea1 100644 --- a/modules/nf-core/openms/idmerger/tests/main.nf.test.snap +++ b/modules/nf-core/openms/idmerger/tests/main.nf.test.snap @@ -5,15 +5,15 @@ [ "OPENMS_IDMERGER", "openms", - "3.5.0" + "3.6.0" ] ] ], + "timestamp": "2026-10-12T06:55:00.742952648", "meta": { - "nf-test": "0.9.3", - "nextflow": "25.04.8" - }, - "timestamp": "2026-01-12T10:06:10.948172124" + "nf-test": "0.9.5", + "nextflow": "25.10.4" + } }, "proteomics - openms - idxml - stub": { "content": [ @@ -30,7 +30,7 @@ [ "OPENMS_IDMERGER", "openms", - "3.5.0" + "3.6.0" ] ], "idxml": [ @@ -45,15 +45,15 @@ [ "OPENMS_IDMERGER", "openms", - "3.5.0" + "3.6.0" ] ] } ], + "timestamp": "2026-10-12T06:55:13.190453643", "meta": { - "nf-test": "0.9.3", - "nextflow": "25.04.8" - }, - "timestamp": "2026-01-12T10:06:23.802686751" + "nf-test": "0.9.5", + "nextflow": "25.10.4" + } } } \ No newline at end of file diff --git a/modules/nf-core/openms/idripper/environment.yml b/modules/nf-core/openms/idripper/environment.yml index fd1026d7..edaf7a38 100644 --- a/modules/nf-core/openms/idripper/environment.yml +++ b/modules/nf-core/openms/idripper/environment.yml @@ -4,4 +4,4 @@ channels: - conda-forge - bioconda dependencies: - - "bioconda::openms=3.5.0" + - "bioconda::openms=3.6.0" diff --git a/modules/nf-core/openms/idripper/main.nf b/modules/nf-core/openms/idripper/main.nf index 18c0595c..2ef25dd0 100644 --- a/modules/nf-core/openms/idripper/main.nf +++ b/modules/nf-core/openms/idripper/main.nf @@ -4,8 +4,8 @@ process OPENMS_IDRIPPER { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine in ['singularity', 'apptainer'] && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/openms:3.5.0--h78fb946_0': - 'quay.io/biocontainers/openms:3.5.0--h78fb946_0' }" + 'https://depot.galaxyproject.org/singularity/openms:3.6.0--hc52dbad_0': + 'quay.io/biocontainers/openms:3.6.0--hc52dbad_0' }" input: tuple val(meta), path(merged_idxml) diff --git a/modules/nf-core/openms/idripper/tests/main.nf.test.snap b/modules/nf-core/openms/idripper/tests/main.nf.test.snap index 07853ac9..f8a43810 100644 --- a/modules/nf-core/openms/idripper/tests/main.nf.test.snap +++ b/modules/nf-core/openms/idripper/tests/main.nf.test.snap @@ -8,8 +8,8 @@ "id": "test" }, [ - "HepG2_rep1_small.idXML:md5,43dca2ebea803882b77b1e11bf4950ae", - "HepG2_rep2_small.idXML:md5,56edb81c2cf6e8444be8c0a6489f361f" + "HepG2_rep1_small.idXML:md5,983f169dfe2a6f47e2a672f11678875d", + "HepG2_rep2_small.idXML:md5,9ae046dd7eb06f87d041c65f3f0c3eda" ] ] ], @@ -17,7 +17,7 @@ [ "OPENMS_IDRIPPER", "openms", - "3.5.0" + "3.6.0" ] ], "idxmls": [ @@ -26,8 +26,8 @@ "id": "test" }, [ - "HepG2_rep1_small.idXML:md5,43dca2ebea803882b77b1e11bf4950ae", - "HepG2_rep2_small.idXML:md5,56edb81c2cf6e8444be8c0a6489f361f" + "HepG2_rep1_small.idXML:md5,983f169dfe2a6f47e2a672f11678875d", + "HepG2_rep2_small.idXML:md5,9ae046dd7eb06f87d041c65f3f0c3eda" ] ] ], @@ -35,16 +35,16 @@ [ "OPENMS_IDRIPPER", "openms", - "3.5.0" + "3.6.0" ] ] } ], + "timestamp": "2026-10-12T06:55:39.47778435", "meta": { - "nf-test": "0.9.3", - "nextflow": "25.04.8" - }, - "timestamp": "2026-01-12T10:06:47.478212501" + "nf-test": "0.9.5", + "nextflow": "25.10.4" + } }, "proteomics - split - idxml - stub": { "content": [ @@ -64,7 +64,7 @@ [ "OPENMS_IDRIPPER", "openms", - "3.5.0" + "3.6.0" ] ], "idxmls": [ @@ -82,15 +82,15 @@ [ "OPENMS_IDRIPPER", "openms", - "3.5.0" + "3.6.0" ] ] } ], + "timestamp": "2026-10-12T06:55:57.818739814", "meta": { - "nf-test": "0.9.3", - "nextflow": "25.04.8" - }, - "timestamp": "2026-01-12T10:07:10.700393001" + "nf-test": "0.9.5", + "nextflow": "25.10.4" + } } } \ No newline at end of file diff --git a/modules/nf-core/openms/idscoreswitcher/environment.yml b/modules/nf-core/openms/idscoreswitcher/environment.yml index fd1026d7..edaf7a38 100644 --- a/modules/nf-core/openms/idscoreswitcher/environment.yml +++ b/modules/nf-core/openms/idscoreswitcher/environment.yml @@ -4,4 +4,4 @@ channels: - conda-forge - bioconda dependencies: - - "bioconda::openms=3.5.0" + - "bioconda::openms=3.6.0" diff --git a/modules/nf-core/openms/idscoreswitcher/main.nf b/modules/nf-core/openms/idscoreswitcher/main.nf index 1e8c0bbd..7b0e4ef2 100644 --- a/modules/nf-core/openms/idscoreswitcher/main.nf +++ b/modules/nf-core/openms/idscoreswitcher/main.nf @@ -4,8 +4,8 @@ process OPENMS_IDSCORESWITCHER { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine in ['singularity', 'apptainer'] && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/openms:3.5.0--h78fb946_0': - 'quay.io/biocontainers/openms:3.5.0--h78fb946_0' }" + 'https://depot.galaxyproject.org/singularity/openms:3.6.0--hc52dbad_0': + 'quay.io/biocontainers/openms:3.6.0--hc52dbad_0' }" input: tuple val(meta), path(idxml) diff --git a/modules/nf-core/openms/idscoreswitcher/tests/main.nf.test.snap b/modules/nf-core/openms/idscoreswitcher/tests/main.nf.test.snap index 35fe46f0..33215e59 100644 --- a/modules/nf-core/openms/idscoreswitcher/tests/main.nf.test.snap +++ b/modules/nf-core/openms/idscoreswitcher/tests/main.nf.test.snap @@ -14,7 +14,7 @@ [ "OPENMS_IDSCORESWITCHER", "openms", - "3.5.0" + "3.6.0" ] ], "idxml": [ @@ -29,16 +29,16 @@ [ "OPENMS_IDSCORESWITCHER", "openms", - "3.5.0" + "3.6.0" ] ] } ], + "timestamp": "2026-10-12T06:56:31.513224822", "meta": { - "nf-test": "0.9.3", - "nextflow": "25.04.8" - }, - "timestamp": "2026-01-12T10:07:57.184605459" + "nf-test": "0.9.5", + "nextflow": "25.10.4" + } }, "proteomics - switch_score - idxml": { "content": [ @@ -48,14 +48,14 @@ { "id": "test" }, - "test.idXML:md5,0db3dfe3dc491ec94ebd951ca6e2c2e4" + "test.idXML:md5,c08b05d0511454c74560f5a84645d29a" ] ], "1": [ [ "OPENMS_IDSCORESWITCHER", "openms", - "3.5.0" + "3.6.0" ] ], "idxml": [ @@ -63,22 +63,22 @@ { "id": "test" }, - "test.idXML:md5,0db3dfe3dc491ec94ebd951ca6e2c2e4" + "test.idXML:md5,c08b05d0511454c74560f5a84645d29a" ] ], "versions_openms": [ [ "OPENMS_IDSCORESWITCHER", "openms", - "3.5.0" + "3.6.0" ] ] } ], + "timestamp": "2026-10-12T06:56:14.711108339", "meta": { - "nf-test": "0.9.3", - "nextflow": "25.04.8" - }, - "timestamp": "2026-01-12T10:07:32.62082728" + "nf-test": "0.9.5", + "nextflow": "25.10.4" + } } } \ No newline at end of file diff --git a/modules/nf-core/openms/mapaligneridentification/environment.yml b/modules/nf-core/openms/mapaligneridentification/environment.yml index c8bad1b9..0c8baaec 100644 --- a/modules/nf-core/openms/mapaligneridentification/environment.yml +++ b/modules/nf-core/openms/mapaligneridentification/environment.yml @@ -4,4 +4,4 @@ channels: - conda-forge - bioconda dependencies: - - bioconda::openms=3.5.0 + - bioconda::openms=3.6.0 diff --git a/modules/nf-core/openms/mapaligneridentification/main.nf b/modules/nf-core/openms/mapaligneridentification/main.nf index 1d6ecf40..562cbd7c 100644 --- a/modules/nf-core/openms/mapaligneridentification/main.nf +++ b/modules/nf-core/openms/mapaligneridentification/main.nf @@ -4,8 +4,8 @@ process OPENMS_MAPALIGNERIDENTIFICATION { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine in ['singularity', 'apptainer'] && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/openms:3.5.0--h78fb946_0' : - 'quay.io/biocontainers/openms:3.5.0--h78fb946_0' }" + 'https://depot.galaxyproject.org/singularity/openms:3.6.0--hc52dbad_0' : + 'quay.io/biocontainers/openms:3.6.0--hc52dbad_0' }" input: tuple val(meta), path(id_files) @@ -19,7 +19,7 @@ process OPENMS_MAPALIGNERIDENTIFICATION { script: def args = task.ext.args ?: '' - def trafo_out = id_files.collect { "${it.baseName}.trafoXML" }.join(' ') + def trafo_out = id_files.collect { item -> "${item.baseName}.trafoXML" }.join(' ') """ MapAlignerIdentification \\ -in $id_files \\ @@ -29,7 +29,7 @@ process OPENMS_MAPALIGNERIDENTIFICATION { """ stub: - def trafo_out = id_files.collect { "${it.baseName}.trafoXML" }.join(' ') + def trafo_out = id_files.collect { item -> "${item.baseName}.trafoXML" }.join(' ') """ touch $trafo_out """ diff --git a/modules/nf-core/openms/mapaligneridentification/tests/main.nf.test.snap b/modules/nf-core/openms/mapaligneridentification/tests/main.nf.test.snap index a421f180..63a76fcd 100644 --- a/modules/nf-core/openms/mapaligneridentification/tests/main.nf.test.snap +++ b/modules/nf-core/openms/mapaligneridentification/tests/main.nf.test.snap @@ -17,7 +17,7 @@ [ "OPENMS_MAPALIGNERIDENTIFICATION", "openms", - "3.5.0" + "3.6.0" ] ], "trafoxml": [ @@ -35,12 +35,12 @@ [ "OPENMS_MAPALIGNERIDENTIFICATION", "openms", - "3.5.0" + "3.6.0" ] ] } ], - "timestamp": "2026-09-15T11:42:05.354393162", + "timestamp": "2026-10-12T06:57:12.824956551", "meta": { "nf-test": "0.9.5", "nextflow": "25.10.4" @@ -55,8 +55,8 @@ "id": "test" }, [ - "HepG2_rep1_small.trafoXML:md5,66d5cf4db22ce012618abe0975a3c8d3", - "HepG2_rep2_small.trafoXML:md5,e84a75e9fb72b001214b4fa40a00572c" + "HepG2_rep1_small.trafoXML:md5,b70147203181749bb27975929bf6bd33", + "HepG2_rep2_small.trafoXML:md5,c129fc3f79bd40bfdd899689599bc25d" ] ] ], @@ -64,7 +64,7 @@ [ "OPENMS_MAPALIGNERIDENTIFICATION", "openms", - "3.5.0" + "3.6.0" ] ], "trafoxml": [ @@ -73,8 +73,8 @@ "id": "test" }, [ - "HepG2_rep1_small.trafoXML:md5,66d5cf4db22ce012618abe0975a3c8d3", - "HepG2_rep2_small.trafoXML:md5,e84a75e9fb72b001214b4fa40a00572c" + "HepG2_rep1_small.trafoXML:md5,b70147203181749bb27975929bf6bd33", + "HepG2_rep2_small.trafoXML:md5,c129fc3f79bd40bfdd899689599bc25d" ] ] ], @@ -82,12 +82,12 @@ [ "OPENMS_MAPALIGNERIDENTIFICATION", "openms", - "3.5.0" + "3.6.0" ] ] } ], - "timestamp": "2026-09-15T11:41:54.713184014", + "timestamp": "2026-10-12T06:56:54.268577928", "meta": { "nf-test": "0.9.5", "nextflow": "25.10.4" diff --git a/modules/nf-core/openms/maprttransformer/environment.yml b/modules/nf-core/openms/maprttransformer/environment.yml index c8bad1b9..0c8baaec 100644 --- a/modules/nf-core/openms/maprttransformer/environment.yml +++ b/modules/nf-core/openms/maprttransformer/environment.yml @@ -4,4 +4,4 @@ channels: - conda-forge - bioconda dependencies: - - bioconda::openms=3.5.0 + - bioconda::openms=3.6.0 diff --git a/modules/nf-core/openms/maprttransformer/main.nf b/modules/nf-core/openms/maprttransformer/main.nf index 381d61e9..60fdd322 100644 --- a/modules/nf-core/openms/maprttransformer/main.nf +++ b/modules/nf-core/openms/maprttransformer/main.nf @@ -4,8 +4,8 @@ process OPENMS_MAPRTTRANSFORMER { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine in ['singularity', 'apptainer'] && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/openms:3.5.0--h78fb946_0' : - 'quay.io/biocontainers/openms:3.5.0--h78fb946_0' }" + 'https://depot.galaxyproject.org/singularity/openms:3.6.0--hc52dbad_0' : + 'quay.io/biocontainers/openms:3.6.0--hc52dbad_0' }" input: tuple val(meta), path(in_file), path(trafoxml) diff --git a/modules/nf-core/openms/maprttransformer/tests/main.nf.test.snap b/modules/nf-core/openms/maprttransformer/tests/main.nf.test.snap index b5a9b71c..f8568414 100644 --- a/modules/nf-core/openms/maprttransformer/tests/main.nf.test.snap +++ b/modules/nf-core/openms/maprttransformer/tests/main.nf.test.snap @@ -7,14 +7,14 @@ { "id": "test" }, - "test_aligned.idXML:md5,792de9ca812d74037e7579763552c80a" + "test_aligned.idXML:md5,658a7c43d713ede36f65d2c9dd6523ef" ] ], "1": [ [ "OPENMS_MAPRTTRANSFORMER", "openms", - "3.5.0" + "3.6.0" ] ], "aligned": [ @@ -22,19 +22,19 @@ { "id": "test" }, - "test_aligned.idXML:md5,792de9ca812d74037e7579763552c80a" + "test_aligned.idXML:md5,658a7c43d713ede36f65d2c9dd6523ef" ] ], "versions_openms": [ [ "OPENMS_MAPRTTRANSFORMER", "openms", - "3.5.0" + "3.6.0" ] ] } ], - "timestamp": "2026-09-15T11:46:39.465990005", + "timestamp": "2026-10-12T06:57:49.879020726", "meta": { "nf-test": "0.9.5", "nextflow": "25.10.4" @@ -55,7 +55,7 @@ [ "OPENMS_MAPRTTRANSFORMER", "openms", - "3.5.0" + "3.6.0" ] ], "aligned": [ @@ -70,12 +70,12 @@ [ "OPENMS_MAPRTTRANSFORMER", "openms", - "3.5.0" + "3.6.0" ] ] } ], - "timestamp": "2026-09-15T11:46:56.037891686", + "timestamp": "2026-10-12T06:58:19.460578616", "meta": { "nf-test": "0.9.5", "nextflow": "25.10.4" diff --git a/modules/nf-core/openms/mztabexporter/environment.yml b/modules/nf-core/openms/mztabexporter/environment.yml index c8bad1b9..0c8baaec 100644 --- a/modules/nf-core/openms/mztabexporter/environment.yml +++ b/modules/nf-core/openms/mztabexporter/environment.yml @@ -4,4 +4,4 @@ channels: - conda-forge - bioconda dependencies: - - bioconda::openms=3.5.0 + - bioconda::openms=3.6.0 diff --git a/modules/nf-core/openms/mztabexporter/main.nf b/modules/nf-core/openms/mztabexporter/main.nf index b62dc20c..68ba98cb 100644 --- a/modules/nf-core/openms/mztabexporter/main.nf +++ b/modules/nf-core/openms/mztabexporter/main.nf @@ -4,8 +4,8 @@ process OPENMS_MZTABEXPORTER { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine in ['singularity', 'apptainer'] && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/openms:3.5.0--h78fb946_0' : - 'quay.io/biocontainers/openms:3.5.0--h78fb946_0' }" + 'https://depot.galaxyproject.org/singularity/openms:3.6.0--hc52dbad_0' : + 'quay.io/biocontainers/openms:3.6.0--hc52dbad_0' }" input: tuple val(meta), path(in_file) diff --git a/modules/nf-core/openms/mztabexporter/tests/main.nf.test.snap b/modules/nf-core/openms/mztabexporter/tests/main.nf.test.snap index 18fe899f..55645fea 100644 --- a/modules/nf-core/openms/mztabexporter/tests/main.nf.test.snap +++ b/modules/nf-core/openms/mztabexporter/tests/main.nf.test.snap @@ -14,7 +14,7 @@ [ "OPENMS_MZTABEXPORTER", "openms", - "3.5.0" + "3.6.0" ] ], "mztab": [ @@ -29,12 +29,12 @@ [ "OPENMS_MZTABEXPORTER", "openms", - "3.5.0" + "3.6.0" ] ] } ], - "timestamp": "2026-09-15T11:37:19.044302375", + "timestamp": "2026-10-12T06:58:50.686261263", "meta": { "nf-test": "0.9.5", "nextflow": "25.10.4" @@ -48,14 +48,14 @@ { "id": "test" }, - "test.mzTab:md5,1453dc35590464e35ad37ec869a43ad8" + "test.mzTab:md5,5e45450fb6ba4288711299f3753fc4ee" ] ], "1": [ [ "OPENMS_MZTABEXPORTER", "openms", - "3.5.0" + "3.6.0" ] ], "mztab": [ @@ -63,19 +63,19 @@ { "id": "test" }, - "test.mzTab:md5,1453dc35590464e35ad37ec869a43ad8" + "test.mzTab:md5,5e45450fb6ba4288711299f3753fc4ee" ] ], "versions_openms": [ [ "OPENMS_MZTABEXPORTER", "openms", - "3.5.0" + "3.6.0" ] ] } ], - "timestamp": "2026-09-15T11:37:03.078669226", + "timestamp": "2026-10-12T06:58:38.350902666", "meta": { "nf-test": "0.9.5", "nextflow": "25.10.4" diff --git a/modules/nf-core/openms/peakpickerhires/environment.yml b/modules/nf-core/openms/peakpickerhires/environment.yml index 7b287592..c841f8c2 100644 --- a/modules/nf-core/openms/peakpickerhires/environment.yml +++ b/modules/nf-core/openms/peakpickerhires/environment.yml @@ -2,4 +2,4 @@ channels: - conda-forge - bioconda dependencies: - - "bioconda::openms=3.5.0" + - "bioconda::openms=3.6.0" diff --git a/modules/nf-core/openms/peakpickerhires/main.nf b/modules/nf-core/openms/peakpickerhires/main.nf index e85eb21f..ae7d5ed7 100644 --- a/modules/nf-core/openms/peakpickerhires/main.nf +++ b/modules/nf-core/openms/peakpickerhires/main.nf @@ -4,8 +4,8 @@ process OPENMS_PEAKPICKERHIRES { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine in ['singularity', 'apptainer'] && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/openms:3.5.0--h78fb946_0' : - 'quay.io/biocontainers/openms:3.5.0--h78fb946_0' }" + 'https://depot.galaxyproject.org/singularity/openms:3.6.0--hc52dbad_0' : + 'quay.io/biocontainers/openms:3.6.0--hc52dbad_0' }" input: tuple val(meta), path(mzml) diff --git a/modules/nf-core/openms/peakpickerhires/tests/main.nf.test.snap b/modules/nf-core/openms/peakpickerhires/tests/main.nf.test.snap index a3d88062..afe61f5e 100644 --- a/modules/nf-core/openms/peakpickerhires/tests/main.nf.test.snap +++ b/modules/nf-core/openms/peakpickerhires/tests/main.nf.test.snap @@ -5,15 +5,15 @@ [ "OPENMS_PEAKPICKERHIRES", "openms", - "3.5.0" + "3.6.0" ] ] ], + "timestamp": "2026-10-12T06:59:08.800443801", "meta": { - "nf-test": "0.9.3", - "nextflow": "25.04.8" - }, - "timestamp": "2026-01-12T10:08:19.636849899" + "nf-test": "0.9.5", + "nextflow": "25.10.4" + } }, "proteomics - mzML - stub": { "content": [ @@ -30,7 +30,7 @@ [ "OPENMS_PEAKPICKERHIRES", "openms", - "3.5.0" + "3.6.0" ] ], "mzml": [ @@ -45,15 +45,15 @@ [ "OPENMS_PEAKPICKERHIRES", "openms", - "3.5.0" + "3.6.0" ] ] } ], + "timestamp": "2026-10-12T06:59:20.398972515", "meta": { - "nf-test": "0.9.3", - "nextflow": "25.04.8" - }, - "timestamp": "2026-01-12T10:08:41.181970232" + "nf-test": "0.9.5", + "nextflow": "25.10.4" + } } } \ No newline at end of file diff --git a/modules/nf-core/openms/peptideindexer/environment.yml b/modules/nf-core/openms/peptideindexer/environment.yml index fd1026d7..edaf7a38 100644 --- a/modules/nf-core/openms/peptideindexer/environment.yml +++ b/modules/nf-core/openms/peptideindexer/environment.yml @@ -4,4 +4,4 @@ channels: - conda-forge - bioconda dependencies: - - "bioconda::openms=3.5.0" + - "bioconda::openms=3.6.0" diff --git a/modules/nf-core/openms/peptideindexer/main.nf b/modules/nf-core/openms/peptideindexer/main.nf index f061b789..8ab4bf2c 100644 --- a/modules/nf-core/openms/peptideindexer/main.nf +++ b/modules/nf-core/openms/peptideindexer/main.nf @@ -4,8 +4,8 @@ process OPENMS_PEPTIDEINDEXER { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine in ['singularity', 'apptainer'] && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/openms:3.5.0--h78fb946_0' : - 'quay.io/biocontainers/openms:3.5.0--h78fb946_0' }" + 'https://depot.galaxyproject.org/singularity/openms:3.6.0--hc52dbad_0' : + 'quay.io/biocontainers/openms:3.6.0--hc52dbad_0' }" input: tuple val(meta), path(idxml), path(fasta) diff --git a/modules/nf-core/openms/peptideindexer/tests/main.nf.test.snap b/modules/nf-core/openms/peptideindexer/tests/main.nf.test.snap index 9c849cb4..9808668c 100644 --- a/modules/nf-core/openms/peptideindexer/tests/main.nf.test.snap +++ b/modules/nf-core/openms/peptideindexer/tests/main.nf.test.snap @@ -7,14 +7,14 @@ { "id": "test" }, - "test_indexed.idXML:md5,ab771bf6bec1b88babd608cbf3b57144" + "test_indexed.idXML:md5,0ea90f7f688df1c302f08a1586b7b75d" ] ], "1": [ [ "OPENMS_PEPTIDEINDEXER", "openms", - "3.5.0" + "3.6.0" ] ], "indexed_idxml": [ @@ -22,23 +22,23 @@ { "id": "test" }, - "test_indexed.idXML:md5,ab771bf6bec1b88babd608cbf3b57144" + "test_indexed.idXML:md5,0ea90f7f688df1c302f08a1586b7b75d" ] ], "versions_openms": [ [ "OPENMS_PEPTIDEINDEXER", "openms", - "3.5.0" + "3.6.0" ] ] } ], + "timestamp": "2026-10-12T06:59:51.129510397", "meta": { - "nf-test": "0.9.3", - "nextflow": "25.04.8" - }, - "timestamp": "2026-01-12T10:09:11.498692207" + "nf-test": "0.9.5", + "nextflow": "25.10.4" + } }, "proteomics - refresh_idxml - stub": { "content": [ @@ -55,7 +55,7 @@ [ "OPENMS_PEPTIDEINDEXER", "openms", - "3.5.0" + "3.6.0" ] ], "indexed_idxml": [ @@ -70,15 +70,15 @@ [ "OPENMS_PEPTIDEINDEXER", "openms", - "3.5.0" + "3.6.0" ] ] } ], + "timestamp": "2026-10-12T07:00:12.6282592", "meta": { - "nf-test": "0.9.3", - "nextflow": "25.04.8" - }, - "timestamp": "2026-01-12T10:09:30.793034749" + "nf-test": "0.9.5", + "nextflow": "25.10.4" + } } } \ No newline at end of file diff --git a/modules/nf-core/openms/psmfeatureextractor/environment.yml b/modules/nf-core/openms/psmfeatureextractor/environment.yml index fd1026d7..edaf7a38 100644 --- a/modules/nf-core/openms/psmfeatureextractor/environment.yml +++ b/modules/nf-core/openms/psmfeatureextractor/environment.yml @@ -4,4 +4,4 @@ channels: - conda-forge - bioconda dependencies: - - "bioconda::openms=3.5.0" + - "bioconda::openms=3.6.0" diff --git a/modules/nf-core/openms/psmfeatureextractor/main.nf b/modules/nf-core/openms/psmfeatureextractor/main.nf index bd493f91..2f660cfe 100644 --- a/modules/nf-core/openms/psmfeatureextractor/main.nf +++ b/modules/nf-core/openms/psmfeatureextractor/main.nf @@ -4,8 +4,8 @@ process OPENMS_PSMFEATUREEXTRACTOR { conda "${moduleDir}/environment.yml" container "${workflow.containerEngine in ['singularity', 'apptainer'] && !task.ext.singularity_pull_docker_container - ? 'https://depot.galaxyproject.org/singularity/openms:3.5.0--h78fb946_0' - : 'quay.io/biocontainers/openms:3.5.0--h78fb946_0'}" + ? 'https://depot.galaxyproject.org/singularity/openms:3.6.0--hc52dbad_0' + : 'quay.io/biocontainers/openms:3.6.0--hc52dbad_0'}" input: tuple val(meta), path(id_file) diff --git a/modules/nf-core/openms/psmfeatureextractor/tests/main.nf.test.snap b/modules/nf-core/openms/psmfeatureextractor/tests/main.nf.test.snap index 19cc5a10..9e3bdb9c 100644 --- a/modules/nf-core/openms/psmfeatureextractor/tests/main.nf.test.snap +++ b/modules/nf-core/openms/psmfeatureextractor/tests/main.nf.test.snap @@ -1,22 +1,22 @@ { "proteomics - psmfeatureextractor - idxml": { "content": [ - "f9adf8b94d862c84e392c85e515c6b7e", + "0d75087ea4ca67400f9a8f9a49be8444", { "versions_openms": [ [ "OPENMS_PSMFEATUREEXTRACTOR", "openms", - "3.5.0" + "3.6.0" ] ] } ], + "timestamp": "2026-10-12T07:02:50.434625153", "meta": { - "nf-test": "0.9.3", - "nextflow": "25.10.3" - }, - "timestamp": "2026-03-13T14:00:34.023175124" + "nf-test": "0.9.5", + "nextflow": "25.10.4" + } }, "proteomics - psmfeatureextractor - idxml - stub": { "content": [ @@ -33,7 +33,7 @@ [ "OPENMS_PSMFEATUREEXTRACTOR", "openms", - "3.5.0" + "3.6.0" ] ], "idxml": [ @@ -48,15 +48,15 @@ [ "OPENMS_PSMFEATUREEXTRACTOR", "openms", - "3.5.0" + "3.6.0" ] ] } ], + "timestamp": "2026-10-12T07:03:17.798976416", "meta": { - "nf-test": "0.9.3", - "nextflow": "25.10.3" - }, - "timestamp": "2026-03-12T12:09:43.304875529" + "nf-test": "0.9.5", + "nextflow": "25.10.4" + } } } \ No newline at end of file diff --git a/modules/nf-core/openms/textexporter/environment.yml b/modules/nf-core/openms/textexporter/environment.yml index fd1026d7..edaf7a38 100644 --- a/modules/nf-core/openms/textexporter/environment.yml +++ b/modules/nf-core/openms/textexporter/environment.yml @@ -4,4 +4,4 @@ channels: - conda-forge - bioconda dependencies: - - "bioconda::openms=3.5.0" + - "bioconda::openms=3.6.0" diff --git a/modules/nf-core/openms/textexporter/main.nf b/modules/nf-core/openms/textexporter/main.nf index e9eb1ae2..f9a2e0fb 100644 --- a/modules/nf-core/openms/textexporter/main.nf +++ b/modules/nf-core/openms/textexporter/main.nf @@ -4,8 +4,8 @@ process OPENMS_TEXTEXPORTER { conda "${moduleDir}/environment.yml" container "${workflow.containerEngine in ['singularity', 'apptainer'] && !task.ext.singularity_pull_docker_container - ? 'https://depot.galaxyproject.org/singularity/openms:3.5.0--h78fb946_0' - : 'quay.io/biocontainers/openms:3.5.0--h78fb946_0'}" + ? 'https://depot.galaxyproject.org/singularity/openms:3.6.0--hc52dbad_0' + : 'quay.io/biocontainers/openms:3.6.0--hc52dbad_0'}" input: tuple val(meta), path(input_file) diff --git a/modules/nf-core/openms/textexporter/tests/main.nf.test.snap b/modules/nf-core/openms/textexporter/tests/main.nf.test.snap index b825d0d3..4aace958 100644 --- a/modules/nf-core/openms/textexporter/tests/main.nf.test.snap +++ b/modules/nf-core/openms/textexporter/tests/main.nf.test.snap @@ -7,16 +7,16 @@ [ "OPENMS_TEXTEXPORTER", "openms", - "3.5.0" + "3.6.0" ] ] } ], + "timestamp": "2026-10-12T07:03:40.726170179", "meta": { - "nf-test": "0.9.3", - "nextflow": "25.10.3" - }, - "timestamp": "2026-03-13T11:15:36.013331439" + "nf-test": "0.9.5", + "nextflow": "25.10.4" + } }, "proteomics - export - idxml - stub": { "content": [ @@ -33,7 +33,7 @@ [ "OPENMS_TEXTEXPORTER", "openms", - "3.5.0" + "3.6.0" ] ], "tsv": [ @@ -48,15 +48,15 @@ [ "OPENMS_TEXTEXPORTER", "openms", - "3.5.0" + "3.6.0" ] ] } ], + "timestamp": "2026-10-12T07:03:54.696900931", "meta": { - "nf-test": "0.9.3", - "nextflow": "25.10.3" - }, - "timestamp": "2026-03-12T11:45:40.246356282" + "nf-test": "0.9.5", + "nextflow": "25.10.4" + } } } \ No newline at end of file diff --git a/modules/nf-core/openmsthirdparty/cometadapter/environment.yml b/modules/nf-core/openmsthirdparty/cometadapter/environment.yml index 45f695a6..8d5e2482 100644 --- a/modules/nf-core/openmsthirdparty/cometadapter/environment.yml +++ b/modules/nf-core/openmsthirdparty/cometadapter/environment.yml @@ -4,4 +4,4 @@ channels: - conda-forge - bioconda dependencies: - - "bioconda::openms-thirdparty=3.5.0" + - "bioconda::openms-thirdparty=3.6.0" diff --git a/modules/nf-core/openmsthirdparty/cometadapter/main.nf b/modules/nf-core/openmsthirdparty/cometadapter/main.nf index d091a890..f0a07250 100644 --- a/modules/nf-core/openmsthirdparty/cometadapter/main.nf +++ b/modules/nf-core/openmsthirdparty/cometadapter/main.nf @@ -4,8 +4,8 @@ process OPENMSTHIRDPARTY_COMETADAPTER { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine in ['singularity', 'apptainer'] && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/openms-thirdparty:3.5.0--h9ee0642_0' : - 'quay.io/biocontainers/openms-thirdparty:3.5.0--h9ee0642_0' }" + 'https://depot.galaxyproject.org/singularity/openms-thirdparty:3.6.0--h9ee0642_0' : + 'quay.io/biocontainers/openms-thirdparty:3.6.0--h9ee0642_0' }" input: tuple val(meta), path(mzml), path(fasta) diff --git a/modules/nf-core/openmsthirdparty/cometadapter/tests/main.nf.test.snap b/modules/nf-core/openmsthirdparty/cometadapter/tests/main.nf.test.snap index 7fd6dbba..909d2595 100644 --- a/modules/nf-core/openmsthirdparty/cometadapter/tests/main.nf.test.snap +++ b/modules/nf-core/openmsthirdparty/cometadapter/tests/main.nf.test.snap @@ -35,11 +35,11 @@ "\t\t\t\t" ] ], + "timestamp": "2025-05-11T06:19:57.627706958", "meta": { "nf-test": "0.9.2", "nextflow": "24.10.6" - }, - "timestamp": "2025-05-11T06:19:57.627706958" + } }, "versions": { "content": [ @@ -47,7 +47,7 @@ [ "OPENMSTHIRDPARTY_COMETADAPTER", "CometAdapter", - "3.5.0" + "3.6.0" ] ], [ @@ -58,10 +58,10 @@ ] ] ], + "timestamp": "2026-10-12T07:06:31.477431554", "meta": { - "nf-test": "0.9.3", - "nextflow": "25.04.8" - }, - "timestamp": "2026-01-12T12:27:11.62435964" + "nf-test": "0.9.5", + "nextflow": "25.10.4" + } } } \ No newline at end of file From 49d6c6a345cb15707209dac5a3500cd585ad47d2 Mon Sep 17 00:00:00 2001 From: Jonas Scheid Date: Tue, 13 Oct 2026 09:25:13 +0000 Subject: [PATCH 02/19] Bump local OpenMS thirdparty modules to 3.6.0 Generated by Claude (Opus 5.5) Co-Authored-By: Claude Opus 5.5 --- .../openmsthirdparty/featurelinkerunlabeledkd/environment.yml | 2 +- .../local/openmsthirdparty/featurelinkerunlabeledkd/main.nf | 4 ++-- .../local/openmsthirdparty/percolatoradapter/environment.yml | 2 +- modules/local/openmsthirdparty/percolatoradapter/main.nf | 4 ++-- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/modules/local/openmsthirdparty/featurelinkerunlabeledkd/environment.yml b/modules/local/openmsthirdparty/featurelinkerunlabeledkd/environment.yml index 9255b744..1eb886a7 100644 --- a/modules/local/openmsthirdparty/featurelinkerunlabeledkd/environment.yml +++ b/modules/local/openmsthirdparty/featurelinkerunlabeledkd/environment.yml @@ -4,4 +4,4 @@ channels: - conda-forge - bioconda dependencies: - - bioconda::openms-thirdparty=3.5.0 + - bioconda::openms-thirdparty=3.6.0 diff --git a/modules/local/openmsthirdparty/featurelinkerunlabeledkd/main.nf b/modules/local/openmsthirdparty/featurelinkerunlabeledkd/main.nf index 07675829..8aecb209 100644 --- a/modules/local/openmsthirdparty/featurelinkerunlabeledkd/main.nf +++ b/modules/local/openmsthirdparty/featurelinkerunlabeledkd/main.nf @@ -4,8 +4,8 @@ process OPENMS_FEATURELINKERUNLABELEDKD { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/openms-thirdparty:3.5.0--h9ee0642_0' : - 'biocontainers/openms-thirdparty:3.5.0--h9ee0642_0' }" + 'https://depot.galaxyproject.org/singularity/openms-thirdparty:3.6.0--h9ee0642_0' : + 'biocontainers/openms-thirdparty:3.6.0--h9ee0642_0' }" input: tuple val(meta), path(features) diff --git a/modules/local/openmsthirdparty/percolatoradapter/environment.yml b/modules/local/openmsthirdparty/percolatoradapter/environment.yml index 9255b744..1eb886a7 100644 --- a/modules/local/openmsthirdparty/percolatoradapter/environment.yml +++ b/modules/local/openmsthirdparty/percolatoradapter/environment.yml @@ -4,4 +4,4 @@ channels: - conda-forge - bioconda dependencies: - - bioconda::openms-thirdparty=3.5.0 + - bioconda::openms-thirdparty=3.6.0 diff --git a/modules/local/openmsthirdparty/percolatoradapter/main.nf b/modules/local/openmsthirdparty/percolatoradapter/main.nf index a3f20178..0651b15d 100644 --- a/modules/local/openmsthirdparty/percolatoradapter/main.nf +++ b/modules/local/openmsthirdparty/percolatoradapter/main.nf @@ -4,8 +4,8 @@ process OPENMS_PERCOLATORADAPTER { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/openms-thirdparty:3.5.0--h9ee0642_0' : - 'biocontainers/openms-thirdparty:3.5.0--h9ee0642_0' }" + 'https://depot.galaxyproject.org/singularity/openms-thirdparty:3.6.0--h9ee0642_0' : + 'biocontainers/openms-thirdparty:3.6.0--h9ee0642_0' }" input: tuple val(meta), path(merged_with_features) From 6d730d4a7639df80ffcc23ea126867f2cdc4f1d9 Mon Sep 17 00:00:00 2001 From: Jonas Scheid Date: Tue, 13 Oct 2026 09:25:16 +0000 Subject: [PATCH 03/19] Read the Comet xcorr from MS:1002252, which replaces COMET:xcorr in OpenMS 3.6.0 Generated by Claude (Opus 5.5) Co-Authored-By: Claude Opus 5.5 --- bin/summarize_results.py | 4 ++++ conf/modules.config | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/bin/summarize_results.py b/bin/summarize_results.py index 7ac974f9..d9f6edd1 100755 --- a/bin/summarize_results.py +++ b/bin/summarize_results.py @@ -177,6 +177,10 @@ def process_file(file, prefix, quantify, keep_cols): data.rename(columns={data.columns[0]: data.columns[0].replace('#', '')}, inplace=True) n_psms = 0 + # OpenMS >= 3.6 stores the Comet xcorr only under its PSI-MS accession + if "COMET:xcorr" not in data.columns: + data.rename(columns={"MS:1002252": "COMET:xcorr"}, inplace=True) + # Check if all required columns are present in the DataFrame required_columns = ['sequence', 'accessions', 'mz', 'rt', 'score', 'COMET:xcorr'] missing_columns = set(required_columns) - set(data.columns) diff --git a/conf/modules.config b/conf/modules.config index 9e24a44a..c94a042f 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -276,7 +276,7 @@ process { process { withName: 'NFCORE_MHCQUANT:MHCQUANT:QUANT:OPENMS_IDSCORESWITCHER' { ext.args = [ - "-new_score COMET:xcorr", + "-new_score MS:1002252", "-new_score_orientation higher_better", "-old_score q-value" ].join(' ').trim() From 1cedb8098254f3230acf19d54a94a48cad54c4f8 Mon Sep 17 00:00:00 2001 From: Jonas Scheid Date: Tue, 13 Oct 2026 11:12:15 +0000 Subject: [PATCH 04/19] Update pipeline test snapshots for OpenMS 3.6.0 Generated by Claude (Opus 5.5) Co-Authored-By: Claude Opus 5.5 --- tests/default.nf.test.snap | 24 ++++++------ tests/ionannotator.nf.test.snap | 20 +++++----- tests/mokapot.nf.test.snap | 16 ++++---- tests/sdrf.nf.test.snap | 20 +++++----- tests/search_presets.nf.test.snap | 20 +++++----- tests/speclib.nf.test.snap | 26 ++++++------- tests/test_single_quant.nf.test.snap | 56 +++++++++++++--------------- 7 files changed, 89 insertions(+), 93 deletions(-) diff --git a/tests/default.nf.test.snap b/tests/default.nf.test.snap index 82b0fedf..099c8f35 100644 --- a/tests/default.nf.test.snap +++ b/tests/default.nf.test.snap @@ -7,32 +7,32 @@ }, "OPENMSTHIRDPARTY_COMETADAPTER": { "Comet": "2024.01 rev. 1", - "CometAdapter": "3.5.0" + "CometAdapter": "3.6.0" }, "OPENMS_DECOYDATABASE": { - "openms": "3.5.0" + "openms": "3.6.0" }, "OPENMS_IDFILTER_Q_VALUE": { - "openms": "3.5.0" + "openms": "3.6.0" }, "OPENMS_IDMASSACCURACY": { "openms": "3.4.1" }, "OPENMS_IDMERGER": { - "openms": "3.5.0" + "openms": "3.6.0" }, "OPENMS_PEPTIDEINDEXER": { - "openms": "3.5.0" + "openms": "3.6.0" }, "OPENMS_PERCOLATORADAPTER": { - "PercolatorAdapter": "3.5.0-pre-exported-20251212", - "percolator": "3.07.1" + "PercolatorAdapter": "3.6.0", + "percolator": "3.09.0" }, "OPENMS_PSMFEATUREEXTRACTOR": { - "openms": "3.5.0" + "openms": "3.6.0" }, "OPENMS_TEXTEXPORTER": { - "openms": "3.5.0" + "openms": "3.6.0" }, "PYOPENMS_CHROMATOGRAMEXTRACTOR": { "pyopenms": "3.4.1" @@ -124,12 +124,12 @@ [ [ "HepG2_A.tsv", - 252, - "8d1ee4b009f6803abbd8ca0b1ccebbf2" + 255, + "1b1d351906d0b56b7495dd0638db72e0" ] ] ], - "timestamp": "2026-06-11T12:04:11.384179436", + "timestamp": "2026-10-13T09:32:06.858726791", "meta": { "nf-test": "0.9.5", "nextflow": "25.10.4" diff --git a/tests/ionannotator.nf.test.snap b/tests/ionannotator.nf.test.snap index 601d1a48..d7f1dce2 100644 --- a/tests/ionannotator.nf.test.snap +++ b/tests/ionannotator.nf.test.snap @@ -8,32 +8,32 @@ }, "OPENMSTHIRDPARTY_COMETADAPTER": { "Comet": "2024.01 rev. 1", - "CometAdapter": "3.5.0" + "CometAdapter": "3.6.0" }, "OPENMS_DECOYDATABASE": { - "openms": "3.5.0" + "openms": "3.6.0" }, "OPENMS_IDFILTER_Q_VALUE": { - "openms": "3.5.0" + "openms": "3.6.0" }, "OPENMS_IDMASSACCURACY": { "openms": "3.4.1" }, "OPENMS_IDMERGER": { - "openms": "3.5.0" + "openms": "3.6.0" }, "OPENMS_PEPTIDEINDEXER": { - "openms": "3.5.0" + "openms": "3.6.0" }, "OPENMS_PERCOLATORADAPTER": { - "PercolatorAdapter": "3.5.0-pre-exported-20251212", - "percolator": "3.07.1" + "PercolatorAdapter": "3.6.0", + "percolator": "3.09.0" }, "OPENMS_PSMFEATUREEXTRACTOR": { - "openms": "3.5.0" + "openms": "3.6.0" }, "OPENMS_TEXTEXPORTER": { - "openms": "3.5.0" + "openms": "3.6.0" }, "PYOPENMS_CHROMATOGRAMEXTRACTOR": { "pyopenms": "3.4.1" @@ -136,7 +136,7 @@ ] ] ], - "timestamp": "2026-06-11T12:10:54.980833385", + "timestamp": "2026-10-13T09:37:11.593167497", "meta": { "nf-test": "0.9.5", "nextflow": "25.10.4" diff --git a/tests/mokapot.nf.test.snap b/tests/mokapot.nf.test.snap index bea4c22a..d2eb017a 100644 --- a/tests/mokapot.nf.test.snap +++ b/tests/mokapot.nf.test.snap @@ -8,28 +8,28 @@ }, "OPENMSTHIRDPARTY_COMETADAPTER": { "Comet": "2024.01 rev. 1", - "CometAdapter": "3.5.0" + "CometAdapter": "3.6.0" }, "OPENMS_DECOYDATABASE": { - "openms": "3.5.0" + "openms": "3.6.0" }, "OPENMS_IDFILTER_Q_VALUE": { - "openms": "3.5.0" + "openms": "3.6.0" }, "OPENMS_IDMASSACCURACY": { "openms": "3.4.1" }, "OPENMS_IDMERGER": { - "openms": "3.5.0" + "openms": "3.6.0" }, "OPENMS_IDSCORESWITCHER": { - "openms": "3.5.0" + "openms": "3.6.0" }, "OPENMS_PEPTIDEINDEXER": { - "openms": "3.5.0" + "openms": "3.6.0" }, "OPENMS_TEXTEXPORTER": { - "openms": "3.5.0" + "openms": "3.6.0" }, "PYOPENMS_CHROMATOGRAMEXTRACTOR": { "pyopenms": "3.4.1" @@ -110,7 +110,7 @@ ] ], - "timestamp": "2026-06-11T12:17:23.861646548", + "timestamp": "2026-10-13T09:42:29.374663781", "meta": { "nf-test": "0.9.5", "nextflow": "25.10.4" diff --git a/tests/sdrf.nf.test.snap b/tests/sdrf.nf.test.snap index 3d4b2a6f..ef597c77 100644 --- a/tests/sdrf.nf.test.snap +++ b/tests/sdrf.nf.test.snap @@ -7,32 +7,32 @@ }, "OPENMSTHIRDPARTY_COMETADAPTER": { "Comet": "2024.01 rev. 1", - "CometAdapter": "3.5.0" + "CometAdapter": "3.6.0" }, "OPENMS_DECOYDATABASE": { - "openms": "3.5.0" + "openms": "3.6.0" }, "OPENMS_IDFILTER_Q_VALUE": { - "openms": "3.5.0" + "openms": "3.6.0" }, "OPENMS_IDMASSACCURACY": { "openms": "3.4.1" }, "OPENMS_IDMERGER": { - "openms": "3.5.0" + "openms": "3.6.0" }, "OPENMS_PEPTIDEINDEXER": { - "openms": "3.5.0" + "openms": "3.6.0" }, "OPENMS_PERCOLATORADAPTER": { - "PercolatorAdapter": "3.5.0-pre-exported-20251212", - "percolator": "3.07.1" + "PercolatorAdapter": "3.6.0", + "percolator": "3.09.0" }, "OPENMS_PSMFEATUREEXTRACTOR": { - "openms": "3.5.0" + "openms": "3.6.0" }, "OPENMS_TEXTEXPORTER": { - "openms": "3.5.0" + "openms": "3.6.0" }, "PARSESDRF_CONVERT": { "sdrf-pipelines": "0.1.4" @@ -140,7 +140,7 @@ ] ] ], - "timestamp": "2026-06-11T12:35:15.842389067", + "timestamp": "2026-10-13T09:58:03.321740706", "meta": { "nf-test": "0.9.5", "nextflow": "25.10.4" diff --git a/tests/search_presets.nf.test.snap b/tests/search_presets.nf.test.snap index a2383458..43ead579 100644 --- a/tests/search_presets.nf.test.snap +++ b/tests/search_presets.nf.test.snap @@ -7,32 +7,32 @@ }, "OPENMSTHIRDPARTY_COMETADAPTER": { "Comet": "2024.01 rev. 1", - "CometAdapter": "3.5.0" + "CometAdapter": "3.6.0" }, "OPENMS_DECOYDATABASE": { - "openms": "3.5.0" + "openms": "3.6.0" }, "OPENMS_IDFILTER_Q_VALUE": { - "openms": "3.5.0" + "openms": "3.6.0" }, "OPENMS_IDMASSACCURACY": { "openms": "3.4.1" }, "OPENMS_IDMERGER": { - "openms": "3.5.0" + "openms": "3.6.0" }, "OPENMS_PEPTIDEINDEXER": { - "openms": "3.5.0" + "openms": "3.6.0" }, "OPENMS_PERCOLATORADAPTER": { - "PercolatorAdapter": "3.5.0-pre-exported-20251212", - "percolator": "3.07.1" + "PercolatorAdapter": "3.6.0", + "percolator": "3.09.0" }, "OPENMS_PSMFEATUREEXTRACTOR": { - "openms": "3.5.0" + "openms": "3.6.0" }, "OPENMS_TEXTEXPORTER": { - "openms": "3.5.0" + "openms": "3.6.0" }, "PYOPENMS_CHROMATOGRAMEXTRACTOR": { "pyopenms": "3.4.1" @@ -135,7 +135,7 @@ ] ] ], - "timestamp": "2026-06-11T12:41:40.675832146", + "timestamp": "2026-10-13T10:02:04.095842034", "meta": { "nf-test": "0.9.5", "nextflow": "25.10.4" diff --git a/tests/speclib.nf.test.snap b/tests/speclib.nf.test.snap index edd84801..a5066366 100644 --- a/tests/speclib.nf.test.snap +++ b/tests/speclib.nf.test.snap @@ -14,35 +14,35 @@ }, "OPENMSTHIRDPARTY_COMETADAPTER": { "Comet": "2024.01 rev. 1", - "CometAdapter": "3.5.0" + "CometAdapter": "3.6.0" }, "OPENMS_DECOYDATABASE": { - "openms": "3.5.0" + "openms": "3.6.0" }, "OPENMS_IDFILTER_FOR_SPECLIB": { - "openms": "3.5.0" + "openms": "3.6.0" }, "OPENMS_IDFILTER_Q_VALUE": { - "openms": "3.5.0" + "openms": "3.6.0" }, "OPENMS_IDMASSACCURACY": { "openms": "3.4.1" }, "OPENMS_IDMERGER": { - "openms": "3.5.0" + "openms": "3.6.0" }, "OPENMS_PEPTIDEINDEXER": { - "openms": "3.5.0" + "openms": "3.6.0" }, "OPENMS_PERCOLATORADAPTER": { - "PercolatorAdapter": "3.5.0-pre-exported-20251212", - "percolator": "3.07.1" + "PercolatorAdapter": "3.6.0", + "percolator": "3.09.0" }, "OPENMS_PSMFEATUREEXTRACTOR": { - "openms": "3.5.0" + "openms": "3.6.0" }, "OPENMS_TEXTEXPORTER": { - "openms": "3.5.0" + "openms": "3.6.0" }, "PYOPENMS_CHROMATOGRAMEXTRACTOR": { "pyopenms": "3.4.1" @@ -136,12 +136,12 @@ [ [ "HepG2_A.tsv", - 252, - "8d1ee4b009f6803abbd8ca0b1ccebbf2" + 255, + "1b1d351906d0b56b7495dd0638db72e0" ] ] ], - "timestamp": "2026-09-08T06:52:11.885327151", + "timestamp": "2026-10-13T10:12:07.712686238", "meta": { "nf-test": "0.9.5", "nextflow": "25.10.4" diff --git a/tests/test_single_quant.nf.test.snap b/tests/test_single_quant.nf.test.snap index 942b6360..1155626f 100644 --- a/tests/test_single_quant.nf.test.snap +++ b/tests/test_single_quant.nf.test.snap @@ -7,65 +7,65 @@ }, "OPENMSTHIRDPARTY_COMETADAPTER": { "Comet": "2024.01 rev. 1", - "CometAdapter": "3.5.0" + "CometAdapter": "3.6.0" }, "OPENMS_DECOYDATABASE": { - "openms": "3.5.0" + "openms": "3.6.0" }, "OPENMS_FEATUREFINDERIDENTIFICATION": { - "openms": "3.5.0" + "openms": "3.6.0" }, "OPENMS_FILECONVERTER": { - "openms": "3.5.0" + "openms": "3.6.0" }, "OPENMS_IDCONFLICTRESOLVER": { - "openms": "3.5.0" + "openms": "3.6.0" }, "OPENMS_IDFILTER_QUANT": { - "openms": "3.5.0" + "openms": "3.6.0" }, "OPENMS_IDFILTER_Q_VALUE": { - "openms": "3.5.0" + "openms": "3.6.0" }, "OPENMS_IDMASSACCURACY": { "openms": "3.4.1" }, "OPENMS_IDMERGER": { - "openms": "3.5.0" + "openms": "3.6.0" }, "OPENMS_IDMERGER_QUANT": { - "openms": "3.5.0" + "openms": "3.6.0" }, "OPENMS_IDRIPPER": { - "openms": "3.5.0" + "openms": "3.6.0" }, "OPENMS_IDSCORESWITCHER": { - "openms": "3.5.0" + "openms": "3.6.0" }, "OPENMS_MAPALIGNERIDENTIFICATION": { - "openms": "3.5.0" + "openms": "3.6.0" }, "OPENMS_MAPRTTRANSFORMERIDXML": { - "openms": "3.5.0" + "openms": "3.6.0" }, "OPENMS_MAPRTTRANSFORMERMZML": { - "openms": "3.5.0" + "openms": "3.6.0" }, "OPENMS_MZTABEXPORTER": { - "openms": "3.5.0" + "openms": "3.6.0" }, "OPENMS_PEPTIDEINDEXER": { - "openms": "3.5.0" + "openms": "3.6.0" }, "OPENMS_PERCOLATORADAPTER": { - "PercolatorAdapter": "3.5.0-pre-exported-20251212", - "percolator": "3.07.1" + "PercolatorAdapter": "3.6.0", + "percolator": "3.09.0" }, "OPENMS_PSMFEATUREEXTRACTOR": { - "openms": "3.5.0" + "openms": "3.6.0" }, "OPENMS_TEXTEXPORTER": { - "openms": "3.5.0" + "openms": "3.6.0" }, "PYOPENMS_CHROMATOGRAMEXTRACTOR": { "pyopenms": "3.4.1" @@ -105,7 +105,6 @@ "multiqc/multiqc_data/llms-full.txt", "multiqc/multiqc_data/multiqc.log", "multiqc/multiqc_data/multiqc.parquet", - "multiqc/multiqc_data/multiqc_aligned_residuals.txt", "multiqc/multiqc_data/multiqc_chromatogram.txt", "multiqc/multiqc_data/multiqc_citations.txt", "multiqc/multiqc_data/multiqc_data.json", @@ -124,7 +123,6 @@ "multiqc/multiqc_data/percolator_plot.txt", "multiqc/multiqc_plots", "multiqc/multiqc_plots/pdf", - "multiqc/multiqc_plots/pdf/aligned_residuals.pdf", "multiqc/multiqc_plots/pdf/chromatogram-cnt.pdf", "multiqc/multiqc_plots/pdf/chromatogram-log.pdf", "multiqc/multiqc_plots/pdf/deeplc_rt_calibration.pdf", @@ -139,7 +137,6 @@ "multiqc/multiqc_plots/pdf/percolator_plot-pct.pdf", "multiqc/multiqc_plots/pdf/scores_xcorr.pdf", "multiqc/multiqc_plots/png", - "multiqc/multiqc_plots/png/aligned_residuals.png", "multiqc/multiqc_plots/png/chromatogram-cnt.png", "multiqc/multiqc_plots/png/chromatogram-log.png", "multiqc/multiqc_plots/png/deeplc_rt_calibration.png", @@ -154,7 +151,6 @@ "multiqc/multiqc_plots/png/percolator_plot-pct.png", "multiqc/multiqc_plots/png/scores_xcorr.png", "multiqc/multiqc_plots/svg", - "multiqc/multiqc_plots/svg/aligned_residuals.svg", "multiqc/multiqc_plots/svg/chromatogram-cnt.svg", "multiqc/multiqc_plots/svg/chromatogram-log.svg", "multiqc/multiqc_plots/svg/deeplc_rt_calibration.svg", @@ -173,23 +169,23 @@ "pipeline_info/nf_core_mhcquant_software_mqc_versions.yml" ], [ - "PBMC007_msms29_fdr_filtered.trafoXML:md5,bc85f3bbfba232ad9154cd5bb8267b1a", - "PBMC009_msms37_fdr_filtered.trafoXML:md5,3087e500735c5e5e98fd05342df94353" + "PBMC007_msms29_fdr_filtered.trafoXML:md5,c129fc3f79bd40bfdd899689599bc25d", + "PBMC009_msms37_fdr_filtered.trafoXML:md5,c129fc3f79bd40bfdd899689599bc25d" ], [ [ "PBMC007_B.tsv", - 2206, - "7d8e4deedde6f67854b7ab91c9d8bf7d" + 2138, + "b5e7fb3d89a49c90807c0702ce4aa8b5" ], [ "PBMC009_A.tsv", 5838, - "e05bda910dd48355f6868561138311b9" + "fb0cf4c8fb988f3752bc4c8dfe9a8862" ] ] ], - "timestamp": "2026-09-16T17:22:24.573099189", + "timestamp": "2026-10-13T10:38:09.045885196", "meta": { "nf-test": "0.9.5", "nextflow": "25.10.4" From cf2a3cd9c22b1aabcc9b9851f67af787ec3a22b9 Mon Sep 17 00:00:00 2001 From: Jonas Scheid Date: Tue, 13 Oct 2026 11:13:17 +0000 Subject: [PATCH 05/19] Add CHANGELOG entry for the OpenMS 3.6.0 bump Co-Authored-By: Claude Opus 5.5 --- CHANGELOG.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 253b0615..6045c566 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,18 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## 3.4.0dev +### `Changed` + +- Bumped OpenMS modules to 3.6.0 [#494](https://github.com/nf-core/mhcquant/pull/494) + +### `Dependencies` + +| Dependency | Old version | New version | +| ------------------- | ----------- | ----------- | +| `OpenMS` | 3.5.0 | 3.6.0 | +| `OpenMS-thirdparty` | 3.5.0 | 3.6.0 | +| `Percolator` | 3.7.1 | 3.9 | + ## 3.3.0 - Favorite - 29/09/26 ### `Added` From 08d9416bfae6610211adc02534041e3fb763ffee Mon Sep 17 00:00:00 2001 From: Jonas Scheid Date: Tue, 13 Oct 2026 12:38:13 +0000 Subject: [PATCH 06/19] Name PSI-MS accession columns in the result TSV by their CV term (COMET:xcorr becomes Comet:xcorr) Generated by Claude (Opus 5.5) Co-Authored-By: Claude Opus 5.5 --- bin/summarize_results.py | 17 +++++++++++------ conf/modules.config | 2 +- docs/output.md | 2 +- 3 files changed, 13 insertions(+), 8 deletions(-) diff --git a/bin/summarize_results.py b/bin/summarize_results.py index d9f6edd1..37c7d1bf 100755 --- a/bin/summarize_results.py +++ b/bin/summarize_results.py @@ -6,7 +6,7 @@ import json import pandas as pd import numpy as np -from pyopenms import AASequence, TransformationXMLFile, TransformationDescription +from pyopenms import AASequence, ControlledVocabulary, File, TransformationXMLFile, TransformationDescription from argparse import ArgumentParser import re from collections import Counter @@ -159,6 +159,13 @@ def write_box_stats(values, sample, plot_id, path): json.dump({"id": plot_id, "data": {sample: stats}}, f, indent=4) +def decode_cv_columns(data): + """Rename PSI-MS accession columns (e.g. MS:1002252) to their term names (e.g. Comet:xcorr)""" + cv = ControlledVocabulary() + cv.loadFromOBO("PSI-MS", File.find("CV/psi-ms.obo", [])) + data.rename(columns={col: cv.getTerm(col).name for col in data.columns if cv.exists(col)}, inplace=True) + + def process_file(file, prefix, quantify, keep_cols): """Extract all the relevant information and write it to a TSV file for the MultiQC report @@ -177,12 +184,10 @@ def process_file(file, prefix, quantify, keep_cols): data.rename(columns={data.columns[0]: data.columns[0].replace('#', '')}, inplace=True) n_psms = 0 - # OpenMS >= 3.6 stores the Comet xcorr only under its PSI-MS accession - if "COMET:xcorr" not in data.columns: - data.rename(columns={"MS:1002252": "COMET:xcorr"}, inplace=True) + decode_cv_columns(data) # Check if all required columns are present in the DataFrame - required_columns = ['sequence', 'accessions', 'mz', 'rt', 'score', 'COMET:xcorr'] + required_columns = ['sequence', 'accessions', 'mz', 'rt', 'score', 'Comet:xcorr'] missing_columns = set(required_columns) - set(data.columns) if data.shape[0] > 0: # If the DataFrame is not empty if missing_columns: @@ -251,7 +256,7 @@ def process_file(file, prefix, quantify, keep_cols): # --------------------------------- # Box plots # --------------------------------- - write_box_stats(data["COMET:xcorr"], prefix, "scores_plot_xcorr", f"{prefix}_xcorr_scores.json") + write_box_stats(data["Comet:xcorr"], prefix, "scores_plot_xcorr", f"{prefix}_xcorr_scores.json") if 'intensity_cf' in data.columns: with np.errstate(divide='ignore'): log_intensity = np.log2(data["intensity_cf"].astype(float)) diff --git a/conf/modules.config b/conf/modules.config index c94a042f..daa4992f 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -489,7 +489,7 @@ process { "accessions", "aa_before", "aa_after", "start", "end", - "COMET:deltaCn", "COMET:deltaLCn", "COMET:lnExpect", "COMET:xcorr", + "COMET:deltaCn", "COMET:deltaLCn", "COMET:lnExpect", "Comet:xcorr", "rt_diff_best", "observed_retention_time_best", "predicted_retention_time_best", "spec_pearson", diff --git a/docs/output.md b/docs/output.md index 4e08738c..75c320ae 100644 --- a/docs/output.md +++ b/docs/output.md @@ -21,7 +21,7 @@ The TSV output of MHCquant is a tab-delimited file holding information about FDR | **Tool** | **Metric** | **Description** | | -------- | -------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| Comet | `COMET:xcorr` | Cross-correlation score between observed and theoretical spectra; higher scores indicate better matches. | +| Comet | `Comet:xcorr` | Cross-correlation score between observed and theoretical spectra; higher scores indicate better matches. | | Comet | `COMET:deltaCn` | Normalized difference between the top two XCorr scores; higher values indicate better discrimination between top matches. | | Comet | `COMET:deltaLCn` | Similar to deltaCn but considers the difference between the top match and the best match with a different peptide sequence. | | Comet | `COMET:lnExpect` | Natural logarithm of the Expectation value; lower values suggest more statistically significant matches. | From 4958d738db4d0f6459124a1e4bef52f6cc534a84 Mon Sep 17 00:00:00 2001 From: Jonas Scheid Date: Tue, 13 Oct 2026 13:52:37 +0000 Subject: [PATCH 07/19] Mention the Comet:xcorr column rename in the CHANGELOG Co-Authored-By: Claude Opus 5.5 --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6045c566..08daa98c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,7 +7,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### `Changed` -- Bumped OpenMS modules to 3.6.0 [#494](https://github.com/nf-core/mhcquant/pull/494) +- Bumped OpenMS modules to 3.6.0 and renamed `COMET:xcorr` to its PSI-MS term name `Comet:xcorr` in the result TSV [#494](https://github.com/nf-core/mhcquant/pull/494) ### `Dependencies` From ef81b3a86935c95454addf75dd48392b4add05bd Mon Sep 17 00:00:00 2001 From: Jonas Scheid Date: Tue, 13 Oct 2026 17:22:44 +0000 Subject: [PATCH 08/19] Make DeepLC numerics independent of the CI runner in nf-test Generated by Claude (Opus 5.5) Co-Authored-By: Claude Opus 5.5 --- tests/nextflow.config | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tests/nextflow.config b/tests/nextflow.config index d7bd8a01..1a638b05 100644 --- a/tests/nextflow.config +++ b/tests/nextflow.config @@ -19,3 +19,8 @@ env.OPENMS_TMPDIR = '$PWD' // The 1.8 GB openms-thirdparty image regularly exceeds the default 20 min pull timeout on CI runners singularity.pullTimeout = '60m' + +// DeepLC's TensorFlow picks oneDNN kernels by CPU type and thread count, which changes peptide sets between runners +env.TF_ENABLE_ONEDNN_OPTS = '0' +env.TF_NUM_INTRAOP_THREADS = '1' +env.TF_NUM_INTEROP_THREADS = '1' From 136edcc8e0e2c71eec05a9fa22b4f79aa7ba5cf4 Mon Sep 17 00:00:00 2001 From: Jonas Scheid Date: Tue, 13 Oct 2026 20:04:12 +0000 Subject: [PATCH 09/19] =?UTF-8?q?Pin=20the=20OpenBLAS=20kernel=20in=20nf-t?= =?UTF-8?q?est=20so=20MS=C2=B2Rescore=20features=20match=20between=20CPU?= =?UTF-8?q?=20types?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Generated by Claude (Opus 5.5) Co-Authored-By: Claude Opus 5.5 --- tests/nextflow.config | 3 ++- tests/test_single_quant.nf.test.snap | 6 +++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/tests/nextflow.config b/tests/nextflow.config index 1a638b05..3008318c 100644 --- a/tests/nextflow.config +++ b/tests/nextflow.config @@ -20,7 +20,8 @@ env.OPENMS_TMPDIR = '$PWD' // The 1.8 GB openms-thirdparty image regularly exceeds the default 20 min pull timeout on CI runners singularity.pullTimeout = '60m' -// DeepLC's TensorFlow picks oneDNN kernels by CPU type and thread count, which changes peptide sets between runners +// DeepLC's TensorFlow and OpenBLAS pick kernels by CPU type and thread count, which changes peptide sets between runners +env.OPENBLAS_CORETYPE = 'Haswell' env.TF_ENABLE_ONEDNN_OPTS = '0' env.TF_NUM_INTRAOP_THREADS = '1' env.TF_NUM_INTEROP_THREADS = '1' diff --git a/tests/test_single_quant.nf.test.snap b/tests/test_single_quant.nf.test.snap index 1155626f..8d24243f 100644 --- a/tests/test_single_quant.nf.test.snap +++ b/tests/test_single_quant.nf.test.snap @@ -175,8 +175,8 @@ [ [ "PBMC007_B.tsv", - 2138, - "b5e7fb3d89a49c90807c0702ce4aa8b5" + 2149, + "6a0c85155dd1194564203c6a7e24f578" ], [ "PBMC009_A.tsv", @@ -185,7 +185,7 @@ ] ] ], - "timestamp": "2026-10-13T10:38:09.045885196", + "timestamp": "2026-10-13T19:20:20.145632654", "meta": { "nf-test": "0.9.5", "nextflow": "25.10.4" From 1591b9d9c6ad873808ec888c6a697987d49240a3 Mon Sep 17 00:00:00 2001 From: Jonas Scheid Date: Tue, 13 Oct 2026 21:11:51 +0000 Subject: [PATCH 10/19] Drop the OpenBLAS pin, which has no effect on CI, and take the reproducible CI peptide set for PBMC009_A Generated by Claude (Opus 5.5) Co-Authored-By: Claude Opus 5.5 --- tests/nextflow.config | 3 +-- tests/test_single_quant.nf.test.snap | 8 ++++---- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/tests/nextflow.config b/tests/nextflow.config index 3008318c..1a638b05 100644 --- a/tests/nextflow.config +++ b/tests/nextflow.config @@ -20,8 +20,7 @@ env.OPENMS_TMPDIR = '$PWD' // The 1.8 GB openms-thirdparty image regularly exceeds the default 20 min pull timeout on CI runners singularity.pullTimeout = '60m' -// DeepLC's TensorFlow and OpenBLAS pick kernels by CPU type and thread count, which changes peptide sets between runners -env.OPENBLAS_CORETYPE = 'Haswell' +// DeepLC's TensorFlow picks oneDNN kernels by CPU type and thread count, which changes peptide sets between runners env.TF_ENABLE_ONEDNN_OPTS = '0' env.TF_NUM_INTRAOP_THREADS = '1' env.TF_NUM_INTEROP_THREADS = '1' diff --git a/tests/test_single_quant.nf.test.snap b/tests/test_single_quant.nf.test.snap index 8d24243f..0b82849b 100644 --- a/tests/test_single_quant.nf.test.snap +++ b/tests/test_single_quant.nf.test.snap @@ -175,13 +175,13 @@ [ [ "PBMC007_B.tsv", - 2149, - "6a0c85155dd1194564203c6a7e24f578" + 2138, + "b5e7fb3d89a49c90807c0702ce4aa8b5" ], [ "PBMC009_A.tsv", - 5838, - "fb0cf4c8fb988f3752bc4c8dfe9a8862" + 5837, + "81dd46c143ef7c2b90f173d48106857d" ] ] ], From a87a36c660050471b86b3be0303699a296746e69 Mon Sep 17 00:00:00 2001 From: Jonas Scheid Date: Wed, 14 Oct 2026 12:06:37 +0000 Subject: [PATCH 11/19] Bump local pyOpenMS modules to 3.6.0 and use its simpler idXML, trafoXML and spectrum alignment APIs Generated by Claude (Opus 5.5) Co-Authored-By: Claude Opus 5.5 --- CHANGELOG.md | 3 ++- bin/get_ion_annotations.py | 15 ++++++--------- bin/summarize_results.py | 14 ++------------ .../chromatogramextractor/environment.yml | 2 +- .../local/pyopenms/chromatogramextractor/main.nf | 4 ++-- .../local/pyopenms/ionannotator/environment.yml | 2 +- modules/local/pyopenms/ionannotator/main.nf | 4 ++-- .../pyopenms/summarize_results/environment.yml | 2 +- modules/local/pyopenms/summarize_results/main.nf | 4 ++-- tests/default.nf.test.snap | 6 +++--- tests/ionannotator.nf.test.snap | 8 ++++---- tests/mokapot.nf.test.snap | 6 +++--- tests/sdrf.nf.test.snap | 6 +++--- tests/search_presets.nf.test.snap | 6 +++--- tests/speclib.nf.test.snap | 6 +++--- tests/test_single_quant.nf.test.snap | 6 +++--- 16 files changed, 41 insertions(+), 53 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 08daa98c..0a9a9bd5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,7 +7,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### `Changed` -- Bumped OpenMS modules to 3.6.0 and renamed `COMET:xcorr` to its PSI-MS term name `Comet:xcorr` in the result TSV [#494](https://github.com/nf-core/mhcquant/pull/494) +- Bumped OpenMS and pyOpenMS modules to 3.6.0, renamed `COMET:xcorr` to its PSI-MS term name `Comet:xcorr` in the result TSV and fixed the ion annotator ignoring `--remove_precursor_peak false` [#494](https://github.com/nf-core/mhcquant/pull/494) ### `Dependencies` @@ -16,6 +16,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 | `OpenMS` | 3.5.0 | 3.6.0 | | `OpenMS-thirdparty` | 3.5.0 | 3.6.0 | | `Percolator` | 3.7.1 | 3.9 | +| `pyOpenMS` | 3.4.1 | 3.6.0 | ## 3.3.0 - Favorite - 29/09/26 diff --git a/bin/get_ion_annotations.py b/bin/get_ion_annotations.py index e6615479..d0a274f6 100755 --- a/bin/get_ion_annotations.py +++ b/bin/get_ion_annotations.py @@ -143,12 +143,10 @@ def flatten(ls: list) -> list: def __main__(): parser, args = parse_arguments() - protein_ids = [] - peptide_ids = [] # Each peptide ID should only contain one hit in the FDR_filtered idXML - IdXMLFile().load(args.filtered_idXML, protein_ids, peptide_ids) + protein_ids, peptide_ids = IdXMLFile().load(args.filtered_idXML) # Get the list of mzML files that have been merged together by IDmerger previously - filenames = [filename.decode("utf-8") for filename in protein_ids[0].getMetaValue("spectra_data")] + filenames = protein_ids[0].getMetaValue("spectra_data") # Define empty lists that collect all the necessary information, which is comprised in DataFrames ions = [] spectra_mz = [] @@ -172,7 +170,7 @@ def __main__(): MzMLFile().load(file, exp) # Create lookup object for easy spectrum reference. spectrum_lookup = SpectrumLookup() - spectrum_lookup.readSpectra(exp, "scan=(?\\d+)") + spectrum_lookup.readSpectra(exp) # Iterate over the FDR filtered peptideIDs for peptide_id in peptide_ids: # Check if the PeptideHit originates from the current mzML file @@ -184,19 +182,18 @@ def __main__(): spectrum_mz, spectrum_intensities = spectrum.get_peaks() spectra_mz.append(spectrum_mz) spectra_intensities.append(spectrum_intensities) - sequence = peptide_id.getHits()[0].getSequence() + sequence = peptide_id.getHits()[0].getSequence().toString() spectra_peptides.append(np.repeat(sequence, len(spectrum_mz))) is_matching_ion_peptide = np.repeat(False, len(spectrum_mz)) spectra_nativeIDs.append(np.repeat(peptide_id.getMetaValue("spectrum_reference"), len(spectrum_mz))) # Generate theoretical spectrum of peptide hit theo_spectrum = generate_theoretical_spectrum(peptide_id, args) # Align both spectra - alignment = [] - spa.getSpectrumAlignment(alignment, theo_spectrum, spectrum) + alignment = spa.getSpectrumAlignment(theo_spectrum, spectrum) # Obtain ion annotations from theoretical spectrum if there are at least two matching ions if len(alignment) > 1: for theo_idx, obs_idx in alignment: - ion_name = theo_spectrum.getStringDataArrays()[0][theo_idx].decode() + ion_name = theo_spectrum.getStringDataArrays()[0][theo_idx] ion_charge = theo_spectrum.getIntegerDataArrays()[0][theo_idx] obs_mz = spectrum[obs_idx].getMZ() obs_int = spectrum[obs_idx].getIntensity() diff --git a/bin/summarize_results.py b/bin/summarize_results.py index 37c7d1bf..942307a5 100755 --- a/bin/summarize_results.py +++ b/bin/summarize_results.py @@ -6,7 +6,7 @@ import json import pandas as pd import numpy as np -from pyopenms import AASequence, ControlledVocabulary, File, TransformationXMLFile, TransformationDescription +from pyopenms import AASequence, ControlledVocabulary, File, TransformationXMLFile from argparse import ArgumentParser import re from collections import Counter @@ -94,15 +94,6 @@ def parse_multiTSV(file_path): elif line.startswith("#UNASSIGNEDPEPTIDE"): unassigned_peptide_cols = line.strip().split('\t')[1:] - # Workaround for OpenMS 3.5.0 TextExporter bug (https://github.com/OpenMS/OpenMS/issues/9120): - # consensusXML export writes a phantom column in data rows between 'end' and 'FFId_category' - # that is missing from the header. Remove it to realign columns. - for rows, cols in [(peptide_rows, peptide_cols), (unassigned_peptide_rows, unassigned_peptide_cols)]: - if rows and len(rows[0]) > len(cols) and 'end' in cols: - extra_idx = cols.index('end') + 1 - for i, row in enumerate(rows): - rows[i] = row[:extra_idx] + row[extra_idx + 1:] - peptide_df = pd.DataFrame(peptide_rows, columns=peptide_cols) consensus_df = pd.DataFrame(consensus_rows, columns=consensus_cols) # Concatenate CONSENSUS and PEPTIDE columns @@ -308,8 +299,7 @@ def write_aligned_residuals(trafoxml_paths): (max reference RT) so boxes are comparable across runs and LC setups. """ for path in trafoxml_paths: - td = TransformationDescription() - TransformationXMLFile().load(path, td, True) + td = TransformationXMLFile().load(path, True) points = td.getDataPoints() gradient = max((pt.second for pt in points), default=0) if gradient <= 0: diff --git a/modules/local/pyopenms/chromatogramextractor/environment.yml b/modules/local/pyopenms/chromatogramextractor/environment.yml index d0a1e992..c5cac9f6 100644 --- a/modules/local/pyopenms/chromatogramextractor/environment.yml +++ b/modules/local/pyopenms/chromatogramextractor/environment.yml @@ -4,4 +4,4 @@ channels: - conda-forge - bioconda dependencies: - - bioconda::pyopenms=3.4.1 + - bioconda::pyopenms=3.6.0 diff --git a/modules/local/pyopenms/chromatogramextractor/main.nf b/modules/local/pyopenms/chromatogramextractor/main.nf index b73f1024..038211f2 100644 --- a/modules/local/pyopenms/chromatogramextractor/main.nf +++ b/modules/local/pyopenms/chromatogramextractor/main.nf @@ -4,8 +4,8 @@ process PYOPENMS_CHROMATOGRAMEXTRACTOR { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/pyopenms:3.4.1--py312h6b06db6_2' : - 'biocontainers/pyopenms:3.4.1--py312h6b06db6_2' }" + 'https://depot.galaxyproject.org/singularity/pyopenms:3.6.0--py312hb2d0698_0' : + 'biocontainers/pyopenms:3.6.0--py312hb2d0698_0' }" input: tuple val(meta), path(mzml) diff --git a/modules/local/pyopenms/ionannotator/environment.yml b/modules/local/pyopenms/ionannotator/environment.yml index d0a1e992..c5cac9f6 100644 --- a/modules/local/pyopenms/ionannotator/environment.yml +++ b/modules/local/pyopenms/ionannotator/environment.yml @@ -4,4 +4,4 @@ channels: - conda-forge - bioconda dependencies: - - bioconda::pyopenms=3.4.1 + - bioconda::pyopenms=3.6.0 diff --git a/modules/local/pyopenms/ionannotator/main.nf b/modules/local/pyopenms/ionannotator/main.nf index b178fa5d..913885c0 100644 --- a/modules/local/pyopenms/ionannotator/main.nf +++ b/modules/local/pyopenms/ionannotator/main.nf @@ -4,8 +4,8 @@ process PYOPENMS_IONANNOTATOR { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/pyopenms:3.4.1--py312h6b06db6_2' : - 'biocontainers/pyopenms:3.4.1--py312h6b06db6_2' }" + 'https://depot.galaxyproject.org/singularity/pyopenms:3.6.0--py312hb2d0698_0' : + 'biocontainers/pyopenms:3.6.0--py312hb2d0698_0' }" input: tuple val(meta), path(mzml), path(fdr_filtered_idxml) diff --git a/modules/local/pyopenms/summarize_results/environment.yml b/modules/local/pyopenms/summarize_results/environment.yml index d0a1e992..c5cac9f6 100644 --- a/modules/local/pyopenms/summarize_results/environment.yml +++ b/modules/local/pyopenms/summarize_results/environment.yml @@ -4,4 +4,4 @@ channels: - conda-forge - bioconda dependencies: - - bioconda::pyopenms=3.4.1 + - bioconda::pyopenms=3.6.0 diff --git a/modules/local/pyopenms/summarize_results/main.nf b/modules/local/pyopenms/summarize_results/main.nf index 10112232..e7e240e9 100644 --- a/modules/local/pyopenms/summarize_results/main.nf +++ b/modules/local/pyopenms/summarize_results/main.nf @@ -2,8 +2,8 @@ process SUMMARIZE_RESULTS { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/pyopenms:3.4.1--py312h6b06db6_2' : - 'biocontainers/pyopenms:3.4.1--py312h6b06db6_2' }" + 'https://depot.galaxyproject.org/singularity/pyopenms:3.6.0--py312hb2d0698_0' : + 'biocontainers/pyopenms:3.6.0--py312hb2d0698_0' }" input: tuple val(meta), path(file), path(frag_mass_errs), path(trafoxmls) diff --git a/tests/default.nf.test.snap b/tests/default.nf.test.snap index 099c8f35..b425bf70 100644 --- a/tests/default.nf.test.snap +++ b/tests/default.nf.test.snap @@ -35,10 +35,10 @@ "openms": "3.6.0" }, "PYOPENMS_CHROMATOGRAMEXTRACTOR": { - "pyopenms": "3.4.1" + "pyopenms": "3.6.0" }, "SUMMARIZE_RESULTS": { - "pyopenms": "3.4.1" + "pyopenms": "3.6.0" }, "Workflow": { "nf-core/mhcquant": "v3.3.0" @@ -129,7 +129,7 @@ ] ] ], - "timestamp": "2026-10-13T09:32:06.858726791", + "timestamp": "2026-10-14T11:27:15.581377624", "meta": { "nf-test": "0.9.5", "nextflow": "25.10.4" diff --git a/tests/ionannotator.nf.test.snap b/tests/ionannotator.nf.test.snap index d7f1dce2..b8e53da9 100644 --- a/tests/ionannotator.nf.test.snap +++ b/tests/ionannotator.nf.test.snap @@ -36,13 +36,13 @@ "openms": "3.6.0" }, "PYOPENMS_CHROMATOGRAMEXTRACTOR": { - "pyopenms": "3.4.1" + "pyopenms": "3.6.0" }, "PYOPENMS_IONANNOTATOR": { - "pyopenms": "3.4.1" + "pyopenms": "3.6.0" }, "SUMMARIZE_RESULTS": { - "pyopenms": "3.4.1" + "pyopenms": "3.6.0" }, "Workflow": { "nf-core/mhcquant": "v3.3.0" @@ -136,7 +136,7 @@ ] ] ], - "timestamp": "2026-10-13T09:37:11.593167497", + "timestamp": "2026-10-14T12:05:45.363181742", "meta": { "nf-test": "0.9.5", "nextflow": "25.10.4" diff --git a/tests/mokapot.nf.test.snap b/tests/mokapot.nf.test.snap index d2eb017a..dcb83477 100644 --- a/tests/mokapot.nf.test.snap +++ b/tests/mokapot.nf.test.snap @@ -32,10 +32,10 @@ "openms": "3.6.0" }, "PYOPENMS_CHROMATOGRAMEXTRACTOR": { - "pyopenms": "3.4.1" + "pyopenms": "3.6.0" }, "SUMMARIZE_RESULTS": { - "pyopenms": "3.4.1" + "pyopenms": "3.6.0" }, "Workflow": { "nf-core/mhcquant": "v3.3.0" @@ -110,7 +110,7 @@ ] ], - "timestamp": "2026-10-13T09:42:29.374663781", + "timestamp": "2026-10-14T11:31:54.745660377", "meta": { "nf-test": "0.9.5", "nextflow": "25.10.4" diff --git a/tests/sdrf.nf.test.snap b/tests/sdrf.nf.test.snap index ef597c77..2c08f8d2 100644 --- a/tests/sdrf.nf.test.snap +++ b/tests/sdrf.nf.test.snap @@ -41,10 +41,10 @@ "pridepy": "0.0.15" }, "PYOPENMS_CHROMATOGRAMEXTRACTOR": { - "pyopenms": "3.4.1" + "pyopenms": "3.6.0" }, "SUMMARIZE_RESULTS": { - "pyopenms": "3.4.1" + "pyopenms": "3.6.0" }, "THERMORAWFILEPARSER": { "thermorawfileparser": "1.4.5" @@ -140,7 +140,7 @@ ] ] ], - "timestamp": "2026-10-13T09:58:03.321740706", + "timestamp": "2026-10-14T11:46:05.907774256", "meta": { "nf-test": "0.9.5", "nextflow": "25.10.4" diff --git a/tests/search_presets.nf.test.snap b/tests/search_presets.nf.test.snap index 43ead579..c1fce6d4 100644 --- a/tests/search_presets.nf.test.snap +++ b/tests/search_presets.nf.test.snap @@ -35,10 +35,10 @@ "openms": "3.6.0" }, "PYOPENMS_CHROMATOGRAMEXTRACTOR": { - "pyopenms": "3.4.1" + "pyopenms": "3.6.0" }, "SUMMARIZE_RESULTS": { - "pyopenms": "3.4.1" + "pyopenms": "3.6.0" }, "Workflow": { "nf-core/mhcquant": "v3.3.0" @@ -135,7 +135,7 @@ ] ] ], - "timestamp": "2026-10-13T10:02:04.095842034", + "timestamp": "2026-10-14T11:49:43.709612016", "meta": { "nf-test": "0.9.5", "nextflow": "25.10.4" diff --git a/tests/speclib.nf.test.snap b/tests/speclib.nf.test.snap index a5066366..3e4a1072 100644 --- a/tests/speclib.nf.test.snap +++ b/tests/speclib.nf.test.snap @@ -45,10 +45,10 @@ "openms": "3.6.0" }, "PYOPENMS_CHROMATOGRAMEXTRACTOR": { - "pyopenms": "3.4.1" + "pyopenms": "3.6.0" }, "SUMMARIZE_RESULTS": { - "pyopenms": "3.4.1" + "pyopenms": "3.6.0" }, "Workflow": { "nf-core/mhcquant": "v3.3.0" @@ -141,7 +141,7 @@ ] ] ], - "timestamp": "2026-10-13T10:12:07.712686238", + "timestamp": "2026-10-14T11:59:54.352284393", "meta": { "nf-test": "0.9.5", "nextflow": "25.10.4" diff --git a/tests/test_single_quant.nf.test.snap b/tests/test_single_quant.nf.test.snap index 0b82849b..8ac23417 100644 --- a/tests/test_single_quant.nf.test.snap +++ b/tests/test_single_quant.nf.test.snap @@ -68,10 +68,10 @@ "openms": "3.6.0" }, "PYOPENMS_CHROMATOGRAMEXTRACTOR": { - "pyopenms": "3.4.1" + "pyopenms": "3.6.0" }, "SUMMARIZE_RESULTS": { - "pyopenms": "3.4.1" + "pyopenms": "3.6.0" }, "THERMORAWFILEPARSER": { "thermorawfileparser": "1.4.5" @@ -185,7 +185,7 @@ ] ] ], - "timestamp": "2026-10-13T19:20:20.145632654", + "timestamp": "2026-10-14T11:22:13.719534817", "meta": { "nf-test": "0.9.5", "nextflow": "25.10.4" From d29d9f5852a4f385369b99d4b032ff1f8170bafc Mon Sep 17 00:00:00 2001 From: Jonas Scheid Date: Wed, 14 Oct 2026 12:06:37 +0000 Subject: [PATCH 12/19] Parse --remove_precursor_peak as a flag so that false no longer enables it Generated by Claude (Opus 5.5) Co-Authored-By: Claude Opus 5.5 --- bin/get_ion_annotations.py | 3 +-- conf/modules.config | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/bin/get_ion_annotations.py b/bin/get_ion_annotations.py index d0a274f6..6d9e4099 100755 --- a/bin/get_ion_annotations.py +++ b/bin/get_ion_annotations.py @@ -83,8 +83,7 @@ def parse_arguments() -> Tuple[argparse.ArgumentParser, argparse.Namespace]: parser.add_argument( "-rpp", "--remove_precursor_peak", - type=bool, - default=False, + action="store_true", help="Do not consider precursor masses in the theoretical spectrum generation", ) diff --git a/conf/modules.config b/conf/modules.config index daa4992f..d0c8af05 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -550,7 +550,7 @@ process { ext.args = { [ "--precursor_charge ${meta.prec_charge}", "--fragment_mass_tolerance ${meta.fragment_mass_tolerance}", - "--remove_precursor_peak ${params.remove_precursor_peak}" + params.remove_precursor_peak ? "--remove_precursor_peak" : "" ].join(' ').trim() } publishDir = [ path: {"${params.outdir}/intermediate_results/ion_annotations"}, From 1889770c19d4cb23f3611c8f60a2b6a1fe9b2d9d Mon Sep 17 00:00:00 2001 From: Jonas Scheid Date: Wed, 14 Oct 2026 12:15:56 +0000 Subject: [PATCH 13/19] Remove the TensorFlow test settings, which CI does not need, and snapshot the CI peptide sets without them Generated by Claude (Opus 5.5) Co-Authored-By: Claude Opus 5.5 --- tests/nextflow.config | 5 ----- tests/test_single_quant.nf.test.snap | 8 ++++---- 2 files changed, 4 insertions(+), 9 deletions(-) diff --git a/tests/nextflow.config b/tests/nextflow.config index 1a638b05..d7bd8a01 100644 --- a/tests/nextflow.config +++ b/tests/nextflow.config @@ -19,8 +19,3 @@ env.OPENMS_TMPDIR = '$PWD' // The 1.8 GB openms-thirdparty image regularly exceeds the default 20 min pull timeout on CI runners singularity.pullTimeout = '60m' - -// DeepLC's TensorFlow picks oneDNN kernels by CPU type and thread count, which changes peptide sets between runners -env.TF_ENABLE_ONEDNN_OPTS = '0' -env.TF_NUM_INTRAOP_THREADS = '1' -env.TF_NUM_INTEROP_THREADS = '1' diff --git a/tests/test_single_quant.nf.test.snap b/tests/test_single_quant.nf.test.snap index 8ac23417..b7d76a3f 100644 --- a/tests/test_single_quant.nf.test.snap +++ b/tests/test_single_quant.nf.test.snap @@ -175,13 +175,13 @@ [ [ "PBMC007_B.tsv", - 2138, - "b5e7fb3d89a49c90807c0702ce4aa8b5" + 2149, + "6a0c85155dd1194564203c6a7e24f578" ], [ "PBMC009_A.tsv", - 5837, - "81dd46c143ef7c2b90f173d48106857d" + 5838, + "fb0cf4c8fb988f3752bc4c8dfe9a8862" ] ] ], From 16dd4b7cdc197bcddd284ff8970eefde90c5e8ab Mon Sep 17 00:00:00 2001 From: Jonas Scheid Date: Thu, 15 Oct 2026 22:38:02 +0000 Subject: [PATCH 14/19] Add a USI column to the result TSV from the OpenMS 3.6.0 TextExporter, without the .mzML extension and only for Thermo scan numbers Generated by Claude (Opus 5.5) Co-Authored-By: Claude Opus 5.5 --- CHANGELOG.md | 2 +- bin/summarize_results.py | 9 +++++++++ conf/modules.config | 5 ++++- docs/output.md | 1 + nextflow.config | 1 + nextflow_schema.json | 7 +++++++ 6 files changed, 23 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0a9a9bd5..5d7640ba 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,7 +7,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### `Changed` -- Bumped OpenMS and pyOpenMS modules to 3.6.0, renamed `COMET:xcorr` to its PSI-MS term name `Comet:xcorr` in the result TSV and fixed the ion annotator ignoring `--remove_precursor_peak false` [#494](https://github.com/nf-core/mhcquant/pull/494) +- Bumped OpenMS and pyOpenMS modules to 3.6.0, renamed `COMET:xcorr` to its PSI-MS term name `Comet:xcorr` in the result TSV added a `USI` column (`--usi_dataset_id`) to the result TSV and fixed the ion annotator ignoring `--remove_precursor_peak false` [#494](https://github.com/nf-core/mhcquant/pull/494) ### `Dependencies` diff --git a/bin/summarize_results.py b/bin/summarize_results.py index 942307a5..09a3bb92 100755 --- a/bin/summarize_results.py +++ b/bin/summarize_results.py @@ -157,6 +157,13 @@ def decode_cv_columns(data): data.rename(columns={col: cv.getTerm(col).name for col in data.columns if cv.exists(col)}, inplace=True) +def format_usi(data): + """Use the original run name (without .mzML) in USIs and keep them only for Thermo scan numbers""" + is_thermo_scan = data["spectrum_reference"].astype(str).str.startswith("controllerType=0 controllerNumber=1 scan=") + run_without_ext = data["USI"].astype(str).str.replace(r"\.mzML(?=:scan:)", "", regex=True, flags=re.IGNORECASE) + data["USI"] = run_without_ext.where(is_thermo_scan, "") + + def process_file(file, prefix, quantify, keep_cols): """Extract all the relevant information and write it to a TSV file for the MultiQC report @@ -176,6 +183,8 @@ def process_file(file, prefix, quantify, keep_cols): n_psms = 0 decode_cv_columns(data) + if "USI" in data.columns and "spectrum_reference" in data.columns: + format_usi(data) # Check if all required columns are present in the DataFrame required_columns = ['sequence', 'accessions', 'mz', 'rt', 'score', 'Comet:xcorr'] diff --git a/conf/modules.config b/conf/modules.config index d0c8af05..cf889991 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -469,7 +469,7 @@ process { withName: 'OPENMS_TEXTEXPORTER' { ext.prefix = { "${meta.id}_exported" } - ext.args = '-id:peptides_only -id:add_hit_metavalues 0 -id:add_metavalues 0' + ext.args = { "-id:peptides_only -id:add_hit_metavalues 0 -id:add_metavalues 0 -id:add_usi -id:usi_dataset_id '${params.usi_dataset_id}'" } publishDir = [ enabled: false ] @@ -481,6 +481,7 @@ process { [ "peptidoform", "sequence", + "USI", "score", "score_type", "psm", "rt", @@ -527,6 +528,8 @@ process { withName: 'OPENMS_TEXTEXPORTER_GLOBAL' { label = 'process_high_memory' + // The global TSV is not post-processed by SUMMARIZE_RESULTS, which corrects the OpenMS USIs + ext.args = '-id:peptides_only -id:add_hit_metavalues 0 -id:add_metavalues 0' publishDir = [ path: {"${params.outdir}/global_fdr"}, mode: params.publish_dir_mode, diff --git a/docs/output.md b/docs/output.md index 75c320ae..1568ece9 100644 --- a/docs/output.md +++ b/docs/output.md @@ -21,6 +21,7 @@ The TSV output of MHCquant is a tab-delimited file holding information about FDR | **Tool** | **Metric** | **Description** | | -------- | -------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| OpenMS | `USI` | Universal Spectrum Identifier of the PSM (`mzspec:::scan::/`). Empty for non-Thermo spectra, which have no scan number. | | Comet | `Comet:xcorr` | Cross-correlation score between observed and theoretical spectra; higher scores indicate better matches. | | Comet | `COMET:deltaCn` | Normalized difference between the top two XCorr scores; higher values indicate better discrimination between top matches. | | Comet | `COMET:deltaLCn` | Similar to deltaCn but considers the difference between the top match and the best match with a different peptide sequence. | diff --git a/nextflow.config b/nextflow.config index 3bf5789f..ff26cfbd 100644 --- a/nextflow.config +++ b/nextflow.config @@ -21,6 +21,7 @@ params { generate_speclib = false quantify = false annotate_ions = false + usi_dataset_id = 'local' epicore = false // Comet search parameters diff --git a/nextflow_schema.json b/nextflow_schema.json index a27e69db..4ab3f471 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -438,6 +438,13 @@ "fa_icon": "fas fa-tags", "description": "Create tsv files containing information about the MS2 ion annotations after processing.", "help_text": "The resulting tsv files should aid in spectrum validation downstream analyses" + }, + "usi_dataset_id": { + "type": "string", + "default": "local", + "fa_icon": "fas fa-fingerprint", + "description": "Dataset identifier (e.g. a ProteomeXchange accession such as PXD000561) used in the USI column of the result TSV.", + "help_text": "The Universal Spectrum Identifier (USI) references each PSM as `mzspec:::scan::/`. Keep the default `local` for unpublished data and set the ProteomeXchange accession once the raw data is deposited. USIs are only written for Thermo scan numbers." } } }, From 80323fb4584cc9909455ea50f7b5af90de7c5146 Mon Sep 17 00:00:00 2001 From: jonasscheid Date: Fri, 16 Oct 2026 16:41:18 +0000 Subject: [PATCH 15/19] Detect samples without PSMs after FDR filtering by their PSMs instead of the idXML line count Generated by Claude Co-Authored-By: Claude Opus 5.5 --- CHANGELOG.md | 2 +- subworkflows/local/rescore/main.nf | 18 +++++++++++++++--- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5d7640ba..c06fc296 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,7 +7,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### `Changed` -- Bumped OpenMS and pyOpenMS modules to 3.6.0, renamed `COMET:xcorr` to its PSI-MS term name `Comet:xcorr` in the result TSV added a `USI` column (`--usi_dataset_id`) to the result TSV and fixed the ion annotator ignoring `--remove_precursor_peak false` [#494](https://github.com/nf-core/mhcquant/pull/494) +- Bumped OpenMS and pyOpenMS modules to 3.6.0, renamed `COMET:xcorr` to its PSI-MS term name `Comet:xcorr` in the result TSV added a `USI` column (`--usi_dataset_id`) to the result TSV and fixed the ion annotator ignoring `--remove_precursor_peak false` and samples without PSMs after FDR filtering crashing `--quantify` [#494](https://github.com/nf-core/mhcquant/pull/494) ### `Dependencies` diff --git a/subworkflows/local/rescore/main.nf b/subworkflows/local/rescore/main.nf index e5c6c0a1..3e807d22 100644 --- a/subworkflows/local/rescore/main.nf +++ b/subworkflows/local/rescore/main.nf @@ -101,9 +101,8 @@ workflow RESCORE { ch_filter_q_value .map { meta, file -> [[id: meta.id], file] } - .branch { - // Empty FDR-filtered idXML (no peptides) is ~120 lines of OpenMS scaffolding. - non_empty: it[1].countLines() > 130 + .branch { _meta, idxml -> + non_empty: hasPeptideIdentification(idxml) empty: true } .set { ch_fdr_branched } @@ -114,3 +113,16 @@ workflow RESCORE { fdr_filtered_empty = ch_fdr_branched.empty multiqc_files = ch_multiqc_files } + +/* +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + FUNCTIONS +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +*/ + +// True if the idXML holds at least one PSM; stops reading at the first one +def hasPeptideIdentification(idxml) { + idxml.withReader { reader -> + reader.lines().anyMatch { line -> line.contains(' Date: Tue, 20 Oct 2026 15:35:46 +0000 Subject: [PATCH 16/19] Keep the OpenMS USI for timsTOF spectra instead of leaving it empty Generated by Claude (Opus 5.5) Co-Authored-By: Claude Opus 5.5 --- bin/summarize_results.py | 8 +++----- docs/output.md | 40 ++++++++++++++++++++-------------------- nextflow_schema.json | 2 +- 3 files changed, 24 insertions(+), 26 deletions(-) diff --git a/bin/summarize_results.py b/bin/summarize_results.py index 09a3bb92..e955a4c0 100755 --- a/bin/summarize_results.py +++ b/bin/summarize_results.py @@ -158,10 +158,8 @@ def decode_cv_columns(data): def format_usi(data): - """Use the original run name (without .mzML) in USIs and keep them only for Thermo scan numbers""" - is_thermo_scan = data["spectrum_reference"].astype(str).str.startswith("controllerType=0 controllerNumber=1 scan=") - run_without_ext = data["USI"].astype(str).str.replace(r"\.mzML(?=:scan:)", "", regex=True, flags=re.IGNORECASE) - data["USI"] = run_without_ext.where(is_thermo_scan, "") + """Use the original run name (without .mzML) in USIs""" + data["USI"] = data["USI"].fillna("").astype(str).str.replace(r"\.mzML(?=:(?:scan|index|nativeId):)", "", regex=True, flags=re.IGNORECASE) def process_file(file, prefix, quantify, keep_cols): @@ -183,7 +181,7 @@ def process_file(file, prefix, quantify, keep_cols): n_psms = 0 decode_cv_columns(data) - if "USI" in data.columns and "spectrum_reference" in data.columns: + if "USI" in data.columns: format_usi(data) # Check if all required columns are present in the DataFrame diff --git a/docs/output.md b/docs/output.md index 1568ece9..2ca4188f 100644 --- a/docs/output.md +++ b/docs/output.md @@ -19,26 +19,26 @@ The directories listed below will be created in the results directory after the The TSV output of MHCquant is a tab-delimited file holding information about FDR-filtered peptides and their properties such as retention time, charge, mass-to-charge, and protein accessions. Additionally, a selected number of features produced by `Comet` and `MS²Rescore` are stored. Understanding these scores and features is crucial in narrowing down peptides of interest. -| **Tool** | **Metric** | **Description** | -| -------- | -------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| OpenMS | `USI` | Universal Spectrum Identifier of the PSM (`mzspec:::scan::/`). Empty for non-Thermo spectra, which have no scan number. | -| Comet | `Comet:xcorr` | Cross-correlation score between observed and theoretical spectra; higher scores indicate better matches. | -| Comet | `COMET:deltaCn` | Normalized difference between the top two XCorr scores; higher values indicate better discrimination between top matches. | -| Comet | `COMET:deltaLCn` | Similar to deltaCn but considers the difference between the top match and the best match with a different peptide sequence. | -| Comet | `COMET:lnExpect` | Natural logarithm of the Expectation value; lower values suggest more statistically significant matches. | -| DeepLC | `predicted_retention_time_best` | Predicted retention time for the precursor peak (all PSMs with the same sequence, modifications, and charge) closest to the predicted retention time. | -| DeepLC | `observed_retention_time_best` | Observed retention time for the precursor peak (all PSMs with the same sequence, modifications, and charge) closest to the predicted retention time. | -| DeepLC | `rt_diff_best` | Difference between observed and predicted retention time for the precursor peak (all PSMs with the same sequence, modifications, and charge) closest to the predicted retention time. | -| MS2PIP | `spec_pearson` | Pearson correlation coefficient between observed and predicted b and y ion intensities of MS2 spectra; higher values indicate better agreement. | -| MS2PIP | `std_abs_diff` | Standard deviation of absolute differences between observed and predicted b and y ion intensities; lower values indicate better agreement. | -| IM2Deep | `ccs_observed_im2deep` | Observed peptide collisional cross-section (CCS) value. | -| IM2Deep | `ccs_predicted_im2deep` | Predicted peptide CCS value by IM2Deep. | -| IM2Deep | `ccs_error_im2deep` | Difference between observed and predicted CCS values; indicates prediction accuracy. | -| Epicore | `entire_epitope_sequence` | Sequences of epicore groups to which the peptide belongs. | -| Epicore | `core_epitope_sequence` | Core sequences of epicore groups to which the peptide belongs. | -| Epicore | `proteome_occurrence` | Protein accessions and positions of core epitopes. | -| Epicore | `consensus_epitope_intensity` | Sum of intensities of all peptides belonging to the epicore group. | -| Epicore | `relative_consensus_epitope_intensity` | Relative epicore group intensity (core_epitope_intensity divided by the total intensity of peptides in output file). | +| **Tool** | **Metric** | **Description** | +| -------- | -------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| OpenMS | `USI` | Universal Spectrum Identifier of the PSM (`mzspec:::scan::/`). For timsTOF data, the scan number is the spectrum position in the converted mzML. | +| Comet | `Comet:xcorr` | Cross-correlation score between observed and theoretical spectra; higher scores indicate better matches. | +| Comet | `COMET:deltaCn` | Normalized difference between the top two XCorr scores; higher values indicate better discrimination between top matches. | +| Comet | `COMET:deltaLCn` | Similar to deltaCn but considers the difference between the top match and the best match with a different peptide sequence. | +| Comet | `COMET:lnExpect` | Natural logarithm of the Expectation value; lower values suggest more statistically significant matches. | +| DeepLC | `predicted_retention_time_best` | Predicted retention time for the precursor peak (all PSMs with the same sequence, modifications, and charge) closest to the predicted retention time. | +| DeepLC | `observed_retention_time_best` | Observed retention time for the precursor peak (all PSMs with the same sequence, modifications, and charge) closest to the predicted retention time. | +| DeepLC | `rt_diff_best` | Difference between observed and predicted retention time for the precursor peak (all PSMs with the same sequence, modifications, and charge) closest to the predicted retention time. | +| MS2PIP | `spec_pearson` | Pearson correlation coefficient between observed and predicted b and y ion intensities of MS2 spectra; higher values indicate better agreement. | +| MS2PIP | `std_abs_diff` | Standard deviation of absolute differences between observed and predicted b and y ion intensities; lower values indicate better agreement. | +| IM2Deep | `ccs_observed_im2deep` | Observed peptide collisional cross-section (CCS) value. | +| IM2Deep | `ccs_predicted_im2deep` | Predicted peptide CCS value by IM2Deep. | +| IM2Deep | `ccs_error_im2deep` | Difference between observed and predicted CCS values; indicates prediction accuracy. | +| Epicore | `entire_epitope_sequence` | Sequences of epicore groups to which the peptide belongs. | +| Epicore | `core_epitope_sequence` | Core sequences of epicore groups to which the peptide belongs. | +| Epicore | `proteome_occurrence` | Protein accessions and positions of core epitopes. | +| Epicore | `consensus_epitope_intensity` | Sum of intensities of all peptides belonging to the epicore group. | +| Epicore | `relative_consensus_epitope_intensity` | Relative epicore group intensity (core_epitope_intensity divided by the total intensity of peptides in output file). | The TSV file in quantification mode (by using `--quantify`) additionally holds the columns `rt_cf|0|1|..`, `mz_cf|0|1|..`, `intensity_cf|0|1|..`, and `charge_cf|0|1|..`, where `cf` (consensus feature) represents the aggregated value of the individual MS runs (`0|1|..`) that are part of the `_` group in the input samplesheet. Use e.g. the individual intensities of MS runs to compare two groups and conduct a differential-presentation analysis. diff --git a/nextflow_schema.json b/nextflow_schema.json index 4ab3f471..c6d2ede3 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -444,7 +444,7 @@ "default": "local", "fa_icon": "fas fa-fingerprint", "description": "Dataset identifier (e.g. a ProteomeXchange accession such as PXD000561) used in the USI column of the result TSV.", - "help_text": "The Universal Spectrum Identifier (USI) references each PSM as `mzspec:::scan::/`. Keep the default `local` for unpublished data and set the ProteomeXchange accession once the raw data is deposited. USIs are only written for Thermo scan numbers." + "help_text": "The Universal Spectrum Identifier (USI) references each PSM as `mzspec:::scan::/`. Keep the default `local` for unpublished data and set the ProteomeXchange accession once the raw data is deposited. For timsTOF data, the scan number is the spectrum position in the converted mzML, not a Bruker frame/scan ID." } } }, From 4b8c5ba28c3a7c66259b578e424077b3f039c749 Mon Sep 17 00:00:00 2001 From: Jonas Scheid Date: Tue, 20 Oct 2026 16:15:53 +0000 Subject: [PATCH 17/19] Sort the per-TSV peptidoform snapshot entries by file name so the file system order does not change the snapshot Generated by Claude (Opus 5.5) Co-Authored-By: Claude Opus 5.5 --- tests/default.nf.test | 1 + tests/ionannotator.nf.test | 1 + tests/sdrf.nf.test | 1 + tests/speclib.nf.test | 1 + tests/test_single_quant.nf.test | 1 + 5 files changed, 5 insertions(+) diff --git a/tests/default.nf.test b/tests/default.nf.test index 92b0a5d3..a20491a7 100644 --- a/tests/default.nf.test +++ b/tests/default.nf.test @@ -36,6 +36,7 @@ nextflow_pipeline { } } } + peptidoform_data.sort { it[0] } assertAll( { assert snapshot( // pipeline versions.yml file for multiqc from which Nextflow version is removed because we test pipelines on multiple Nextflow versions diff --git a/tests/ionannotator.nf.test b/tests/ionannotator.nf.test index 3a953dc4..72d1e41c 100644 --- a/tests/ionannotator.nf.test +++ b/tests/ionannotator.nf.test @@ -37,6 +37,7 @@ nextflow_pipeline { } } } + peptidoform_data.sort { it[0] } assertAll( { assert workflow.success}, { assert snapshot( diff --git a/tests/sdrf.nf.test b/tests/sdrf.nf.test index 088d1b2a..fe3b7812 100644 --- a/tests/sdrf.nf.test +++ b/tests/sdrf.nf.test @@ -37,6 +37,7 @@ nextflow_pipeline { } } } + peptidoform_data.sort { it[0] } assertAll( { assert workflow.success}, { assert snapshot( diff --git a/tests/speclib.nf.test b/tests/speclib.nf.test index b2626985..5d3ea717 100644 --- a/tests/speclib.nf.test +++ b/tests/speclib.nf.test @@ -37,6 +37,7 @@ nextflow_pipeline { } } } + peptidoform_data.sort { it[0] } assertAll( { assert workflow.success}, { assert snapshot( diff --git a/tests/test_single_quant.nf.test b/tests/test_single_quant.nf.test index 74159018..c01b8f85 100644 --- a/tests/test_single_quant.nf.test +++ b/tests/test_single_quant.nf.test @@ -37,6 +37,7 @@ nextflow_pipeline { } } } + peptidoform_data.sort { it[0] } assertAll( { assert workflow.success}, { assert snapshot( From 12ba603441521837f8fba317e974b2c2c3a29edc Mon Sep 17 00:00:00 2001 From: Jonas Scheid Date: Thu, 22 Oct 2026 14:52:33 +0000 Subject: [PATCH 18/19] Split the CHANGELOG entry into Added, Fixed and Changed and list Percolator as 3.9.0 Generated by Claude (Opus 5.5) Co-Authored-By: Claude Opus 5.5 --- CHANGELOG.md | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c06fc296..30e38c50 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,9 +5,17 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## 3.4.0dev +### `Added` + +- Added a `USI` column to the result TSV (`--usi_dataset_id`) [#494](https://github.com/nf-core/mhcquant/pull/494) + +### `Fixed` + +- Fixed `--remove_precursor_peak false` enabling the option and `--quantify` crashing on samples without PSMs [#494](https://github.com/nf-core/mhcquant/pull/494) + ### `Changed` -- Bumped OpenMS and pyOpenMS modules to 3.6.0, renamed `COMET:xcorr` to its PSI-MS term name `Comet:xcorr` in the result TSV added a `USI` column (`--usi_dataset_id`) to the result TSV and fixed the ion annotator ignoring `--remove_precursor_peak false` and samples without PSMs after FDR filtering crashing `--quantify` [#494](https://github.com/nf-core/mhcquant/pull/494) +- Bumped OpenMS and pyOpenMS modules to 3.6.0 and renamed `COMET:xcorr` to its PSI-MS term name `Comet:xcorr` in the result TSV [#494](https://github.com/nf-core/mhcquant/pull/494) ### `Dependencies` @@ -15,7 +23,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 | ------------------- | ----------- | ----------- | | `OpenMS` | 3.5.0 | 3.6.0 | | `OpenMS-thirdparty` | 3.5.0 | 3.6.0 | -| `Percolator` | 3.7.1 | 3.9 | +| `Percolator` | 3.7.1 | 3.9.0 | | `pyOpenMS` | 3.4.1 | 3.6.0 | ## 3.3.0 - Favorite - 29/09/26 From 2d34faabbbf1b434c3600b71e462ac4b2b953e08 Mon Sep 17 00:00:00 2001 From: Jonas Scheid Date: Thu, 22 Oct 2026 14:57:46 +0000 Subject: [PATCH 19/19] Set the USI dataset ID in the TextExporter ext.args instead of a pipeline parameter Generated by Claude (Opus 5.5) Co-Authored-By: Claude Opus 5.5 --- CHANGELOG.md | 2 +- conf/modules.config | 2 +- docs/output.md | 40 ++++++++++++++++++++-------------------- nextflow.config | 1 - nextflow_schema.json | 7 ------- 5 files changed, 22 insertions(+), 30 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 30e38c50..5699f948 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,7 +7,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### `Added` -- Added a `USI` column to the result TSV (`--usi_dataset_id`) [#494](https://github.com/nf-core/mhcquant/pull/494) +- Added a `USI` column to the result TSV [#494](https://github.com/nf-core/mhcquant/pull/494) ### `Fixed` diff --git a/conf/modules.config b/conf/modules.config index cf889991..7b6f34a1 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -469,7 +469,7 @@ process { withName: 'OPENMS_TEXTEXPORTER' { ext.prefix = { "${meta.id}_exported" } - ext.args = { "-id:peptides_only -id:add_hit_metavalues 0 -id:add_metavalues 0 -id:add_usi -id:usi_dataset_id '${params.usi_dataset_id}'" } + ext.args = '-id:peptides_only -id:add_hit_metavalues 0 -id:add_metavalues 0 -id:add_usi -id:usi_dataset_id local' publishDir = [ enabled: false ] diff --git a/docs/output.md b/docs/output.md index 2ca4188f..a1c9d97c 100644 --- a/docs/output.md +++ b/docs/output.md @@ -19,26 +19,26 @@ The directories listed below will be created in the results directory after the The TSV output of MHCquant is a tab-delimited file holding information about FDR-filtered peptides and their properties such as retention time, charge, mass-to-charge, and protein accessions. Additionally, a selected number of features produced by `Comet` and `MS²Rescore` are stored. Understanding these scores and features is crucial in narrowing down peptides of interest. -| **Tool** | **Metric** | **Description** | -| -------- | -------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| OpenMS | `USI` | Universal Spectrum Identifier of the PSM (`mzspec:::scan::/`). For timsTOF data, the scan number is the spectrum position in the converted mzML. | -| Comet | `Comet:xcorr` | Cross-correlation score between observed and theoretical spectra; higher scores indicate better matches. | -| Comet | `COMET:deltaCn` | Normalized difference between the top two XCorr scores; higher values indicate better discrimination between top matches. | -| Comet | `COMET:deltaLCn` | Similar to deltaCn but considers the difference between the top match and the best match with a different peptide sequence. | -| Comet | `COMET:lnExpect` | Natural logarithm of the Expectation value; lower values suggest more statistically significant matches. | -| DeepLC | `predicted_retention_time_best` | Predicted retention time for the precursor peak (all PSMs with the same sequence, modifications, and charge) closest to the predicted retention time. | -| DeepLC | `observed_retention_time_best` | Observed retention time for the precursor peak (all PSMs with the same sequence, modifications, and charge) closest to the predicted retention time. | -| DeepLC | `rt_diff_best` | Difference between observed and predicted retention time for the precursor peak (all PSMs with the same sequence, modifications, and charge) closest to the predicted retention time. | -| MS2PIP | `spec_pearson` | Pearson correlation coefficient between observed and predicted b and y ion intensities of MS2 spectra; higher values indicate better agreement. | -| MS2PIP | `std_abs_diff` | Standard deviation of absolute differences between observed and predicted b and y ion intensities; lower values indicate better agreement. | -| IM2Deep | `ccs_observed_im2deep` | Observed peptide collisional cross-section (CCS) value. | -| IM2Deep | `ccs_predicted_im2deep` | Predicted peptide CCS value by IM2Deep. | -| IM2Deep | `ccs_error_im2deep` | Difference between observed and predicted CCS values; indicates prediction accuracy. | -| Epicore | `entire_epitope_sequence` | Sequences of epicore groups to which the peptide belongs. | -| Epicore | `core_epitope_sequence` | Core sequences of epicore groups to which the peptide belongs. | -| Epicore | `proteome_occurrence` | Protein accessions and positions of core epitopes. | -| Epicore | `consensus_epitope_intensity` | Sum of intensities of all peptides belonging to the epicore group. | -| Epicore | `relative_consensus_epitope_intensity` | Relative epicore group intensity (core_epitope_intensity divided by the total intensity of peptides in output file). | +| **Tool** | **Metric** | **Description** | +| -------- | -------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| OpenMS | `USI` | Universal Spectrum Identifier of the PSM (`mzspec:local::scan::/`). For timsTOF data, the scan number is the spectrum position in the converted mzML. To use a ProteomeXchange accession instead of `local`, override `-id:usi_dataset_id` in the `ext.args` of `OPENMS_TEXTEXPORTER` in a custom config. | +| Comet | `Comet:xcorr` | Cross-correlation score between observed and theoretical spectra; higher scores indicate better matches. | +| Comet | `COMET:deltaCn` | Normalized difference between the top two XCorr scores; higher values indicate better discrimination between top matches. | +| Comet | `COMET:deltaLCn` | Similar to deltaCn but considers the difference between the top match and the best match with a different peptide sequence. | +| Comet | `COMET:lnExpect` | Natural logarithm of the Expectation value; lower values suggest more statistically significant matches. | +| DeepLC | `predicted_retention_time_best` | Predicted retention time for the precursor peak (all PSMs with the same sequence, modifications, and charge) closest to the predicted retention time. | +| DeepLC | `observed_retention_time_best` | Observed retention time for the precursor peak (all PSMs with the same sequence, modifications, and charge) closest to the predicted retention time. | +| DeepLC | `rt_diff_best` | Difference between observed and predicted retention time for the precursor peak (all PSMs with the same sequence, modifications, and charge) closest to the predicted retention time. | +| MS2PIP | `spec_pearson` | Pearson correlation coefficient between observed and predicted b and y ion intensities of MS2 spectra; higher values indicate better agreement. | +| MS2PIP | `std_abs_diff` | Standard deviation of absolute differences between observed and predicted b and y ion intensities; lower values indicate better agreement. | +| IM2Deep | `ccs_observed_im2deep` | Observed peptide collisional cross-section (CCS) value. | +| IM2Deep | `ccs_predicted_im2deep` | Predicted peptide CCS value by IM2Deep. | +| IM2Deep | `ccs_error_im2deep` | Difference between observed and predicted CCS values; indicates prediction accuracy. | +| Epicore | `entire_epitope_sequence` | Sequences of epicore groups to which the peptide belongs. | +| Epicore | `core_epitope_sequence` | Core sequences of epicore groups to which the peptide belongs. | +| Epicore | `proteome_occurrence` | Protein accessions and positions of core epitopes. | +| Epicore | `consensus_epitope_intensity` | Sum of intensities of all peptides belonging to the epicore group. | +| Epicore | `relative_consensus_epitope_intensity` | Relative epicore group intensity (core_epitope_intensity divided by the total intensity of peptides in output file). | The TSV file in quantification mode (by using `--quantify`) additionally holds the columns `rt_cf|0|1|..`, `mz_cf|0|1|..`, `intensity_cf|0|1|..`, and `charge_cf|0|1|..`, where `cf` (consensus feature) represents the aggregated value of the individual MS runs (`0|1|..`) that are part of the `_` group in the input samplesheet. Use e.g. the individual intensities of MS runs to compare two groups and conduct a differential-presentation analysis. diff --git a/nextflow.config b/nextflow.config index ff26cfbd..3bf5789f 100644 --- a/nextflow.config +++ b/nextflow.config @@ -21,7 +21,6 @@ params { generate_speclib = false quantify = false annotate_ions = false - usi_dataset_id = 'local' epicore = false // Comet search parameters diff --git a/nextflow_schema.json b/nextflow_schema.json index c6d2ede3..a27e69db 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -438,13 +438,6 @@ "fa_icon": "fas fa-tags", "description": "Create tsv files containing information about the MS2 ion annotations after processing.", "help_text": "The resulting tsv files should aid in spectrum validation downstream analyses" - }, - "usi_dataset_id": { - "type": "string", - "default": "local", - "fa_icon": "fas fa-fingerprint", - "description": "Dataset identifier (e.g. a ProteomeXchange accession such as PXD000561) used in the USI column of the result TSV.", - "help_text": "The Universal Spectrum Identifier (USI) references each PSM as `mzspec:::scan::/`. Keep the default `local` for unpublished data and set the ProteomeXchange accession once the raw data is deposited. For timsTOF data, the scan number is the spectrum position in the converted mzML, not a Bruker frame/scan ID." } } },