diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 59951b36a..0f0b851e7 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -34,7 +34,8 @@ jobs: NXF_VER: - "23.04.0" - "latest-everything" - test_profile: ["test_lfq", "test_lfq_sage", "test_dia", "test_localize", "test_tmt", "test_dda_id"] + test_profile: + ["test_lfq", "test_lfq_sage", "test_dia", "test_localize", "test_tmt", "test_dda_id", "test_tmt_corr"] exec_profile: ["docker"] exclude: - test_profile: test_dia @@ -72,16 +73,19 @@ jobs: echo "$(pwd)/micromamba/bin" >> $GITHUB_PATH ./bin/micromamba shell init -s bash echo $'channels:\n - conda-forge\n - bioconda\n - defaults\nuse_lockfiles: false' >> ~/.mambarc + - name: Install Singularity with defaults if: matrix.exec_profile == 'singularity' uses: singularityhub/install-singularity@main - - name: Run pipeline with test data in docker profile - if: matrix.exec_profile == 'docker' + + - name: Run pipeline with test data in docker/singularity profile + if: matrix.exec_profile == 'docker' || matrix.exec_profile == 'singularity' # TODO nf-core: You can customise CI pipeline run tests as required # For example: adding multiple test runs with different parameters # Remember that you can parallelise this by using strategy.matrix run: | nextflow run ${GITHUB_WORKSPACE} -profile $TEST_PROFILE,$EXEC_PROFILE --outdir ${TEST_PROFILE}_${EXEC_PROFILE}_results + - name: Run pipeline with test data in conda profile (and single-threaded) env: MAMBA_ROOT_PREFIX: ${{ github.workspace }}/.micromamba @@ -91,13 +95,6 @@ jobs: # Remember that you can parallelise this by using strategy.matrix run: | nextflow run ${GITHUB_WORKSPACE} -profile $TEST_PROFILE,micromamba --outdir ${TEST_PROFILE}_${EXEC_PROFILE}_results - - name: Run pipeline with test data in singularity profile - if: matrix.exec_profile == 'singularity' - # TODO nf-core: You can customise CI pipeline run tests as required - # For example: adding multiple test runs with different parameters - # Remember that you can parallelise this by using strategy.matrix - run: | - nextflow run ${GITHUB_WORKSPACE} -profile $TEST_PROFILE,$EXEC_PROFILE --outdir ${TEST_PROFILE}_${EXEC_PROFILE}_results - name: Gather failed logs if: failure() || cancelled() @@ -105,21 +102,30 @@ jobs: mkdir failed_logs failed=$(grep "FAILED" ${TEST_PROFILE}_${EXEC_PROFILE}_results/pipeline_info/execution_trace.txt | cut -f 2) while read -r line ; do cp $(ls work/${line}*/*.log) failed_logs/ | true ; done <<< "$failed" - - uses: actions/upload-artifact@v1 + + - uses: actions/upload-artifact@v4 if: failure() || cancelled() name: Upload failed logs with: - name: failed_logs + name: failed_logs_${{ matrix.test_profile }}_${{ matrix.exec_profile }}_${{ matrix.NXF_VER }} + include-hidden-files: true path: failed_logs - - uses: actions/upload-artifact@v1 + overwrite: false + + - uses: actions/upload-artifact@v4 if: always() name: Upload results with: - name: ${{ env.TEST_PROFILE }}_${{ env.EXEC_PROFILE }}_results - path: ${{ env.TEST_PROFILE }}_${{ env.EXEC_PROFILE }}_results - - uses: actions/upload-artifact@v1 + name: ${{ matrix.test_profile }}_${{ matrix.exec_profile }}_${{ matrix.NXF_VER }}_results + include-hidden-files: true + path: ${{ matrix.test_profile }}_${{ matrix.exec_profile }}_results + overwrite: false + + - uses: actions/upload-artifact@v4 if: always() name: Upload log with: - name: nextflow.log + name: nextflow_${{ matrix.test_profile }}_${{ matrix.exec_profile }}_${{ matrix.NXF_VER }}.log + include-hidden-files: true path: .nextflow.log + overwrite: false diff --git a/CHANGELOG.md b/CHANGELOG.md index ece007a69..d006dfd28 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,11 +3,27 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [1.4.0] nfcore/quantms - [--/--/----] - Cambridge + +### `Added` + +- [#423](https://github.com/bigbio/quantms/pull/423) Support for plex Correction matrices for TMT and iTRAQ analytical methods. + +### `Changed` + +- [#423](https://github.com/bigbio/quantms/pull/423) Updated OpenMS==3.2.0 + +### `Fixed` + +### `Dependencies` + +- openms==3.2.0 + ## [1.3.0] nfcore/quantms - [08/04/2024] - Santiago de Cuba ### `Added` -- [#335](https://github.com/bigbio/quantms/pull/335) (Performance improvement) Improvements in DIA pipeline to use random/subset files for library search +- [#335](https://github.com/bigbio/quantms/pull/335) (Performance improvement) Improvements in a DIA pipeline to use random/subset files for library search - [#351](https://github.com/bigbio/quantms/pull/351) Identification workflow for DDA data - [#362](https://github.com/bigbio/quantms/pull/362) Introduction to ms2rescore to identification workflow - [#374](https://github.com/bigbio/quantms/pull/374) Add msgf+ database indexing step diff --git a/assets/itraq4plex_default_correction.matrix b/assets/itraq4plex_default_correction.matrix new file mode 100644 index 000000000..1b9deed3c --- /dev/null +++ b/assets/itraq4plex_default_correction.matrix @@ -0,0 +1,7 @@ +# comment: itraq4plex from MSnbase +# comment: https://github.com/lgatto/MSnbase/blob/master/inst/extdata/iTRAQ4plexPurityCorrections.csv +channel/<-2Da>/<-1Da>/<+1Da>/<+2Da> +114/0.0/1.0/5.9/0.2 +115/0.0/2.0/5.6/0.1 +116/0.0/3.0/4.5/0.1 +117/0.1/4.0/3.5/0.1 diff --git a/assets/itraq8plex_default_correction.matrix b/assets/itraq8plex_default_correction.matrix new file mode 100644 index 000000000..5abd03783 --- /dev/null +++ b/assets/itraq8plex_default_correction.matrix @@ -0,0 +1,11 @@ +# comment: itraq8plex from MSnbase +# comment: https://github.com/lgatto/MSnbase/blob/master/inst/extdata/iTRAQ8plexPurityCorrections.csv +channel/<-2Da>/<-1Da>/<+1Da>/<+2Da> +113/0.0/2.5/3.0/0.1 +114/0.0/1.0/5.9/0.2 +115/0.0/2.0/5.6/0.1 +116/0.0/3.0/4.5/0.1 +117/0.1/4.0/3.5/0.1 +118/0.1/2.0/3.0/0.1 +119/0.1/2.0/4.0/0.1 +121/0.1/2.0/3.0/0.1 diff --git a/assets/tmt11plex_default_correction.matrix b/assets/tmt11plex_default_correction.matrix new file mode 100644 index 000000000..bc403851a --- /dev/null +++ b/assets/tmt11plex_default_correction.matrix @@ -0,0 +1,14 @@ +# comment: tmt11plex default from OpenMS +# comment: Product Number: A37725 Lot Number: ZF395505 +channel/<-2Da>/<-1Da>/<+1Da>/<+2Da> +126/0.0/0.0/8.6/0.3 +127N/0.0/0.1/7.8/0.1 +127C/0.0/0.8/6.9/0.1 +128N/0.0/7.4/7.4/0.0 +128C/0.0/1.5/6.2/0.2 +129N/0.0/1.5/5.7/0.1 +129C/0.0/2.6/4.8/0.0 +130N/0.0/2.2/4.6/0.0 +130C/0.0/2.8/4.5/0.1 +131N/0.1/2.9/3.8/0.0 +131C/0.0/3.9/2.8/0.0 diff --git a/assets/tmt6plex_90064_XL352952_correction.matrix b/assets/tmt6plex_90064_XL352952_correction.matrix new file mode 100644 index 000000000..ee3cb32ad --- /dev/null +++ b/assets/tmt6plex_90064_XL352952_correction.matrix @@ -0,0 +1,9 @@ +# comment: https://www.thermofisher.com/order/catalog/product/90064B?SID=srch-srp-90064B +# comment: Product Number: 90064 Lot Number: XL352952 +channel/<-2Da>/<-1Da>/<+1Da>/<+2Da> +126/0.0/0.0/8.3/0.3 +127/0.0/0.1/7.8/0.1 +128/0.0/1.3/5.7/0.1 +129/0.0/1.5/5.7/0.1 +130/0.0/3.1/3.6/0.0 +131/0.1/2.9/3.8/0.0 diff --git a/assets/tmt6plex_default_correction.matrix b/assets/tmt6plex_default_correction.matrix new file mode 100644 index 000000000..3079db149 --- /dev/null +++ b/assets/tmt6plex_default_correction.matrix @@ -0,0 +1,10 @@ +# comment: tmt6plex default in OpenMS +# comment: https://www.thermofisher.com/order/catalog/product/90061?SID=srch-srp-90061 +# comment: Product Number: 90061 Lot Number: ZE386964 +channel/<-2Da>/<-1Da>/<+1Da>/<+2Da> +126/0.0/0.0/8.6/0.3 +127/0.0/0.1/7.8/0.1 +128/0.0/1.5/6.2/0.2 +129/0.0/1.5/5.7/0.1 +130/0.0/3.1/3.6/0.0 +131/0.1/2.9/3.8/0.0 diff --git a/assets/tmt6plex_msnbase_correction.matrix b/assets/tmt6plex_msnbase_correction.matrix new file mode 100644 index 000000000..b4b7404c9 --- /dev/null +++ b/assets/tmt6plex_msnbase_correction.matrix @@ -0,0 +1,9 @@ +# comment: tmt6plex from MSnbase +# comment: https://github.com/lgatto/MSnbase/blob/master/inst/extdata/TMT6plexPurityCorrections.csv +channel/<-2Da>/<-1Da>/<+1Da>/<+2Da> +126/0.0/0.0/6.1/0.0 +127/0.0/0.5/6.7/0.0 +128/0.0/1.1/4.2/0.0 +129/0.0/1.7/4.1/0.0 +130/0.0/1.6/2.1/0.0 +131/0.2/3.2/2.8/0.0 diff --git a/conf/dev.config b/conf/dev.config index 529dd88f4..45a8f34dd 100644 --- a/conf/dev.config +++ b/conf/dev.config @@ -18,7 +18,7 @@ params { process { withLabel: openms { - conda = "openms::openms-thirdparty=3.1.0" + conda = "openms::openms-thirdparty=3.2.0" container = {"${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'ghcr.io/openms/openms-executables-sif:latest' : 'ghcr.io/openms/openms-executables:latest' }"} } } diff --git a/conf/modules.config b/conf/modules.config index 13de82999..766c3d44b 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -180,12 +180,12 @@ process { } // IDFILTER on PROTEIN LEVEL - level = params.protein_quant == 'strictly_unique_peptides' ? 'prot' : 'protgroup' + level = params.protein_quant == 'strictly_unique_peptides' ? 'prot' : 'proteingroup' decoys_present = params.quantify_decoys ? ' ' : '-remove_decoys' withName: '.*:TMT:PROTEININFERENCE:IDFILTER' { ext.args = [ "-score:${level} \"$params.protein_level_fdr_cutoff\"", - "-score:pep \"$params.psm_level_fdr_cutoff\"", + "-score:psm \"$params.psm_level_fdr_cutoff\"", "-delete_unreferenced_peptide_hits", "${decoys_present}" ].join(' ').trim() @@ -240,7 +240,7 @@ process { // IDFILTER withName: '.*:ID:PSMFDRCONTROL:IDFILTER' { - ext.args = "-score:pep \"$params.run_fdr_cutoff\"" + ext.args = "-score:psm \"$params.run_fdr_cutoff\"" ext.suffix = '.idXML' publishDir = [ path: { "${params.outdir}/idfilter" }, @@ -250,7 +250,7 @@ process { } withName: '.*:DDA_ID:PSMFDRCONTROL:IDFILTER' { - ext.args = "-score:pep \"$params.run_fdr_cutoff\"" + ext.args = "-score:psm \"$params.run_fdr_cutoff\"" ext.suffix = '.idXML' publishDir = [ path: { "${params.outdir}/idfilter" }, diff --git a/conf/test_tmt_corr.config b/conf/test_tmt_corr.config new file mode 100644 index 000000000..561d1f31b --- /dev/null +++ b/conf/test_tmt_corr.config @@ -0,0 +1,35 @@ +/* +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Nextflow config file for running full-size tests +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Defines input files and everything required to run a full size pipeline test. + + Use as follows: + nextflow run nf-core/quantms -profile test_tmt, [--outdir ] + +---------------------------------------------------------------------------------------- +*/ + +params { + config_profile_name = 'Full test profile DDA ISO' + config_profile_description = 'Full test dataset in isotopic labelling mode to check pipeline function and sanity of results' + + outdir = "./results_iso" + + max_cpus = 2 + max_memory = 6.GB + max_time = 48.h + + // Input data for full size test + input = 'https://raw.githubusercontent.com/nf-core/test-datasets/quantms/testdata/tmt_ci/PXD000001.sdrf.tsv' + + database = 'https://raw.githubusercontent.com/nf-core/test-datasets/quantms/testdata/tmt_ci/erwinia_carotovora.fasta' + posterior_probabilities = "percolator" + search_engines = "comet,msgf" + psm_level_fdr_cutoff = 1.0 + decoy_string = "rev" + add_decoys = true + protocol = 'TMT' + isotope_correction = true + plex_corr_matrix_file = 'assets/tmt6plex_default_correction.matrix' +} diff --git a/docs/images/quantms_metro.drawio.svg b/docs/images/quantms_metro.drawio.svg index 50bad5e31..6e8be054e 100644 --- a/docs/images/quantms_metro.drawio.svg +++ b/docs/images/quantms_metro.drawio.svg @@ -1,8 +1,45 @@ - + - -