From 844cdf35027dbf4631fe335d077c86135f4a4398 Mon Sep 17 00:00:00 2001 From: Chengxin Dai <37200167+daichengxin@users.noreply.github.com> Date: Sat, 13 Jun 2026 13:00:41 +0800 Subject: [PATCH 1/8] update onsite --- modules/bigbio/onsite/environment.yml | 2 +- modules/bigbio/onsite/main.nf | 12 ++++++------ modules/bigbio/onsite/meta.yml | 8 ++++---- modules/bigbio/onsite/tests/main.nf.test | 14 +++++++------- 4 files changed, 18 insertions(+), 18 deletions(-) diff --git a/modules/bigbio/onsite/environment.yml b/modules/bigbio/onsite/environment.yml index 0025aa1..59f3a41 100644 --- a/modules/bigbio/onsite/environment.yml +++ b/modules/bigbio/onsite/environment.yml @@ -3,4 +3,4 @@ channels: - bioconda - defaults dependencies: - - bioconda::pyonsite=0.0.2 + - bioconda::pyonsite=0.0.3 diff --git a/modules/bigbio/onsite/main.nf b/modules/bigbio/onsite/main.nf index de82e09..0689116 100644 --- a/modules/bigbio/onsite/main.nf +++ b/modules/bigbio/onsite/main.nf @@ -4,14 +4,14 @@ process ONSITE { label 'onsite' container "${workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container - ? 'https://depot.galaxyproject.org/singularity/pyonsite:0.0.2--pyhdfd78af_0' - : 'biocontainers/pyonsite:0.0.2--pyhdfd78af_0'}" + ? 'https://depot.galaxyproject.org/singularity/pyonsite:0.0.3--pyhdfd78af_0' + : 'biocontainers/pyonsite:0.0.3--pyhdfd78af_0'}" input: tuple val(meta), path(mzml_file), path(id_file) output: - tuple val(meta), path("${prefix}_*.idXML"), emit: ptm_in_id_onsite + tuple val(meta), path("${prefix}_*.idparquet"), emit: ptm_in_id_onsite path "versions.yml", emit: versions path "*.log", emit: log @@ -48,7 +48,7 @@ process ONSITE { onsite ascore \\ -in ${mzml_file} \\ -id ${id_file} \\ - -out ${prefix}_ascore.idXML \\ + -out ${prefix}_ascore.idparquet \\ --fragment-mass-tolerance ${fragment_tolerance} \\ --fragment-mass-unit ${fragment_unit}${optional_flags ? ' \\\n ' + optional_flags : ''} """ @@ -61,7 +61,7 @@ process ONSITE { onsite phosphors \\ -in ${mzml_file} \\ -id ${id_file} \\ - -out ${prefix}_phosphors.idXML \\ + -out ${prefix}_phosphors.idparquet \\ --fragment-mass-tolerance ${fragment_tolerance} \\ --fragment-mass-unit ${fragment_unit}${optional_flags ? ' \\\n ' + optional_flags : ''} ${args} @@ -92,7 +92,7 @@ process ONSITE { onsite lucxor \\ -in ${mzml_file} \\ -id ${id_file} \\ - -out ${prefix}_lucxor.idXML \\ + -out ${prefix}_lucxor.idparquet \\ --fragment-method ${fragment_method} \\ --fragment-mass-tolerance ${fragment_tolerance} \\ --fragment-error-units ${fragment_unit} \\ diff --git a/modules/bigbio/onsite/meta.yml b/modules/bigbio/onsite/meta.yml index 3956abd..2e7e84d 100644 --- a/modules/bigbio/onsite/meta.yml +++ b/modules/bigbio/onsite/meta.yml @@ -36,7 +36,7 @@ input: - id_file: type: file description: Protein/peptide identifications file in idXML format - pattern: "*.idXML" + pattern: "*.idparquet" ontologies: [] output: ptm_in_id_onsite: @@ -44,11 +44,11 @@ output: type: map description: | Groovy Map containing sample information - - ${prefix}_*.idXML: + - ${prefix}_*.idparquet: type: file - description: Output idXML file containing PTM localization results from + description: Output idparquet file containing PTM localization results from onsite - pattern: "${prefix}_*.idXML" + pattern: "${prefix}_*.idparquet" ontologies: [] log: - "*.log": diff --git a/modules/bigbio/onsite/tests/main.nf.test b/modules/bigbio/onsite/tests/main.nf.test index 8caec60..b91f82b 100644 --- a/modules/bigbio/onsite/tests/main.nf.test +++ b/modules/bigbio/onsite/tests/main.nf.test @@ -16,7 +16,7 @@ nextflow_process { input[0] = [ [ id: 'test', mzml_id: 'test_sample' ], file(params.test_data['proteomics']['onsite']['mzml'], checkIfExists: true), - file(params.test_data['proteomics']['onsite']['idxml'], checkIfExists: true) + file(params.test_data['proteomics']['onsite']['idparquet'], checkIfExists: true) ] """ } @@ -31,7 +31,7 @@ nextflow_process { assert process.out.ptm_in_id_onsite.size() == 1 assert process.out.log.size() == 1 // Check output file has correct naming - assert process.out.ptm_in_id_onsite[0][1].toString().endsWith('_ascore.idXML') + assert process.out.ptm_in_id_onsite[0][1].toString().endsWith('_ascore.idparquet') } } @@ -43,7 +43,7 @@ nextflow_process { input[0] = [ [ id: 'test', mzml_id: 'test_sample' ], file(params.test_data['proteomics']['onsite']['mzml'], checkIfExists: true), - file(params.test_data['proteomics']['onsite']['idxml'], checkIfExists: true) + file(params.test_data['proteomics']['onsite']['idparquet'], checkIfExists: true) ] """ } @@ -58,7 +58,7 @@ nextflow_process { assert process.out.ptm_in_id_onsite.size() == 1 assert process.out.log.size() == 1 // Check output file has correct naming - assert process.out.ptm_in_id_onsite[0][1].toString().endsWith('_phosphors.idXML') + assert process.out.ptm_in_id_onsite[0][1].toString().endsWith('_phosphors.idparquet') } } @@ -70,7 +70,7 @@ nextflow_process { input[0] = [ [ id: 'test', mzml_id: 'test_sample' ], file(params.test_data['proteomics']['onsite']['mzml'], checkIfExists: true), - file(params.test_data['proteomics']['onsite']['idxml'], checkIfExists: true) + file(params.test_data['proteomics']['onsite']['idparquet'], checkIfExists: true) ] """ } @@ -85,7 +85,7 @@ nextflow_process { assert process.out.ptm_in_id_onsite.size() == 1 assert process.out.log.size() == 1 // Check output file has correct naming - assert process.out.ptm_in_id_onsite[0][1].toString().endsWith('_lucxor.idXML') + assert process.out.ptm_in_id_onsite[0][1].toString().endsWith('_lucxor.idparquet') } } @@ -99,7 +99,7 @@ nextflow_process { input[0] = [ [ id: 'test', mzml_id: 'test_sample' ], file(params.test_data['proteomics']['onsite']['mzml'], checkIfExists: true), - file(params.test_data['proteomics']['onsite']['idxml'], checkIfExists: true) + file(params.test_data['proteomics']['onsite']['idparquet'], checkIfExists: true) ] """ } From 84b96602e47a884346af5b4f83b5005633c453e3 Mon Sep 17 00:00:00 2001 From: Chengxin Dai <37200167+daichengxin@users.noreply.github.com> Date: Sat, 13 Jun 2026 17:08:32 +0800 Subject: [PATCH 2/8] update --- modules/bigbio/onsite/main.nf | 4 ++-- tests/config/test_data.config | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/modules/bigbio/onsite/main.nf b/modules/bigbio/onsite/main.nf index 0689116..5e8fb11 100644 --- a/modules/bigbio/onsite/main.nf +++ b/modules/bigbio/onsite/main.nf @@ -4,8 +4,8 @@ process ONSITE { label 'onsite' container "${workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container - ? 'https://depot.galaxyproject.org/singularity/pyonsite:0.0.3--pyhdfd78af_0' - : 'biocontainers/pyonsite:0.0.3--pyhdfd78af_0'}" + ? 'oras://ghcr.io/bigbio/pyonsite-sif:0.0.3' + : 'ghcr.io/bigbio/pyonsite:0.0.3'}" input: tuple val(meta), path(mzml_file), path(id_file) diff --git a/tests/config/test_data.config b/tests/config/test_data.config index c192bc3..1a19cb0 100644 --- a/tests/config/test_data.config +++ b/tests/config/test_data.config @@ -20,8 +20,8 @@ params { } onsite { // Test data for onsite PTM localization module - mzml = "https://ftp.pride.ebi.ac.uk/pub/databases/pride/resources/proteomes/quantms-ci-github/onsite/1.mzML" - idxml = "https://ftp.pride.ebi.ac.uk/pub/databases/pride/resources/proteomes/quantms-ci-github/onsite/1_consensus_fdr_filter_pep.idXML" + mzml = "https://ftp.pride.ebi.ac.uk/pub/databases/pride/resources/proteomes/quantms-ci-github/onsite/Phospho_redissolve_final_01.mzML" + idparquet = "https://ftp.pride.ebi.ac.uk/pub/databases/pride/resources/proteomes/quantms-ci-github/onsite/Phospho_redissolve_final_01_clean_perc.idparquet" } qpx { // DIA-NN results for QPX export testing (reuses pmultiqc DIANN example) From f4d3eb1174f6320cd41d9434ae1271b3d40519b0 Mon Sep 17 00:00:00 2001 From: Chengxin Dai <37200167+daichengxin@users.noreply.github.com> Date: Sat, 13 Jun 2026 17:55:17 +0800 Subject: [PATCH 3/8] update --- modules/bigbio/onsite/tests/main.nf.test | 16 ++++++++-------- tests/config/test_data.config | 2 +- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/modules/bigbio/onsite/tests/main.nf.test b/modules/bigbio/onsite/tests/main.nf.test index b91f82b..ffc12cb 100644 --- a/modules/bigbio/onsite/tests/main.nf.test +++ b/modules/bigbio/onsite/tests/main.nf.test @@ -15,8 +15,8 @@ nextflow_process { """ input[0] = [ [ id: 'test', mzml_id: 'test_sample' ], - file(params.test_data['proteomics']['onsite']['mzml'], checkIfExists: true), - file(params.test_data['proteomics']['onsite']['idparquet'], checkIfExists: true) + path(params.test_data['proteomics']['onsite']['mzml'], checkIfExists: true), + path(params.test_data['proteomics']['onsite']['idparquet'], checkIfExists: true) ] """ } @@ -42,8 +42,8 @@ nextflow_process { """ input[0] = [ [ id: 'test', mzml_id: 'test_sample' ], - file(params.test_data['proteomics']['onsite']['mzml'], checkIfExists: true), - file(params.test_data['proteomics']['onsite']['idparquet'], checkIfExists: true) + path(params.test_data['proteomics']['onsite']['mzml'], checkIfExists: true), + path(params.test_data['proteomics']['onsite']['idparquet'], checkIfExists: true) ] """ } @@ -69,8 +69,8 @@ nextflow_process { """ input[0] = [ [ id: 'test', mzml_id: 'test_sample' ], - file(params.test_data['proteomics']['onsite']['mzml'], checkIfExists: true), - file(params.test_data['proteomics']['onsite']['idparquet'], checkIfExists: true) + path(params.test_data['proteomics']['onsite']['mzml'], checkIfExists: true), + path(params.test_data['proteomics']['onsite']['idparquet'], checkIfExists: true) ] """ } @@ -98,8 +98,8 @@ nextflow_process { """ input[0] = [ [ id: 'test', mzml_id: 'test_sample' ], - file(params.test_data['proteomics']['onsite']['mzml'], checkIfExists: true), - file(params.test_data['proteomics']['onsite']['idparquet'], checkIfExists: true) + path(params.test_data['proteomics']['onsite']['mzml'], checkIfExists: true), + path(params.test_data['proteomics']['onsite']['idparquet'], checkIfExists: true) ] """ } diff --git a/tests/config/test_data.config b/tests/config/test_data.config index 1a19cb0..144172e 100644 --- a/tests/config/test_data.config +++ b/tests/config/test_data.config @@ -21,7 +21,7 @@ params { onsite { // Test data for onsite PTM localization module mzml = "https://ftp.pride.ebi.ac.uk/pub/databases/pride/resources/proteomes/quantms-ci-github/onsite/Phospho_redissolve_final_01.mzML" - idparquet = "https://ftp.pride.ebi.ac.uk/pub/databases/pride/resources/proteomes/quantms-ci-github/onsite/Phospho_redissolve_final_01_clean_perc.idparquet" + idparquet = "https://ftp.pride.ebi.ac.uk/pub/databases/pride/resources/proteomes/quantms-ci-github/onsite/Phospho_redissolve_final_01_clean_perc.idparquet/*" } qpx { // DIA-NN results for QPX export testing (reuses pmultiqc DIANN example) From f3339f8d9dc59be38e6ce9f0b0fa273f65d9e616 Mon Sep 17 00:00:00 2001 From: Chengxin Dai <37200167+daichengxin@users.noreply.github.com> Date: Sat, 13 Jun 2026 17:57:33 +0800 Subject: [PATCH 4/8] Update main.nf.test --- modules/bigbio/onsite/tests/main.nf.test | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/modules/bigbio/onsite/tests/main.nf.test b/modules/bigbio/onsite/tests/main.nf.test index ffc12cb..b91f82b 100644 --- a/modules/bigbio/onsite/tests/main.nf.test +++ b/modules/bigbio/onsite/tests/main.nf.test @@ -15,8 +15,8 @@ nextflow_process { """ input[0] = [ [ id: 'test', mzml_id: 'test_sample' ], - path(params.test_data['proteomics']['onsite']['mzml'], checkIfExists: true), - path(params.test_data['proteomics']['onsite']['idparquet'], checkIfExists: true) + file(params.test_data['proteomics']['onsite']['mzml'], checkIfExists: true), + file(params.test_data['proteomics']['onsite']['idparquet'], checkIfExists: true) ] """ } @@ -42,8 +42,8 @@ nextflow_process { """ input[0] = [ [ id: 'test', mzml_id: 'test_sample' ], - path(params.test_data['proteomics']['onsite']['mzml'], checkIfExists: true), - path(params.test_data['proteomics']['onsite']['idparquet'], checkIfExists: true) + file(params.test_data['proteomics']['onsite']['mzml'], checkIfExists: true), + file(params.test_data['proteomics']['onsite']['idparquet'], checkIfExists: true) ] """ } @@ -69,8 +69,8 @@ nextflow_process { """ input[0] = [ [ id: 'test', mzml_id: 'test_sample' ], - path(params.test_data['proteomics']['onsite']['mzml'], checkIfExists: true), - path(params.test_data['proteomics']['onsite']['idparquet'], checkIfExists: true) + file(params.test_data['proteomics']['onsite']['mzml'], checkIfExists: true), + file(params.test_data['proteomics']['onsite']['idparquet'], checkIfExists: true) ] """ } @@ -98,8 +98,8 @@ nextflow_process { """ input[0] = [ [ id: 'test', mzml_id: 'test_sample' ], - path(params.test_data['proteomics']['onsite']['mzml'], checkIfExists: true), - path(params.test_data['proteomics']['onsite']['idparquet'], checkIfExists: true) + file(params.test_data['proteomics']['onsite']['mzml'], checkIfExists: true), + file(params.test_data['proteomics']['onsite']['idparquet'], checkIfExists: true) ] """ } From 32be04b36f5b6558ebfecb31aa94e24146ca300a Mon Sep 17 00:00:00 2001 From: Chengxin Dai <37200167+daichengxin@users.noreply.github.com> Date: Sat, 13 Jun 2026 17:59:20 +0800 Subject: [PATCH 5/8] Update test_data.config --- tests/config/test_data.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/config/test_data.config b/tests/config/test_data.config index 144172e..ca5901c 100644 --- a/tests/config/test_data.config +++ b/tests/config/test_data.config @@ -21,7 +21,7 @@ params { onsite { // Test data for onsite PTM localization module mzml = "https://ftp.pride.ebi.ac.uk/pub/databases/pride/resources/proteomes/quantms-ci-github/onsite/Phospho_redissolve_final_01.mzML" - idparquet = "https://ftp.pride.ebi.ac.uk/pub/databases/pride/resources/proteomes/quantms-ci-github/onsite/Phospho_redissolve_final_01_clean_perc.idparquet/*" + idparquet = "https://ftp.pride.ebi.ac.uk/pub/databases/pride/resources/proteomes/quantms-ci-github/onsite/Phospho_redissolve_final_01_clean_perc.idparquet/" } qpx { // DIA-NN results for QPX export testing (reuses pmultiqc DIANN example) From c8f18f8f7c5111fe6a2efc2e03ea6e5bda27d340 Mon Sep 17 00:00:00 2001 From: Chengxin Dai <37200167+daichengxin@users.noreply.github.com> Date: Sat, 13 Jun 2026 18:56:01 +0800 Subject: [PATCH 6/8] update --- modules/bigbio/onsite/meta.yml | 2 +- modules/bigbio/onsite/tests/main.nf.test | 11 ++++++----- tests/config/test_data.config | 2 +- 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/modules/bigbio/onsite/meta.yml b/modules/bigbio/onsite/meta.yml index 2e7e84d..d82458b 100644 --- a/modules/bigbio/onsite/meta.yml +++ b/modules/bigbio/onsite/meta.yml @@ -35,7 +35,7 @@ input: ontologies: [] - id_file: type: file - description: Protein/peptide identifications file in idXML format + description: Protein/peptide identifications file in idparquet format pattern: "*.idparquet" ontologies: [] output: diff --git a/modules/bigbio/onsite/tests/main.nf.test b/modules/bigbio/onsite/tests/main.nf.test index b91f82b..340d85e 100644 --- a/modules/bigbio/onsite/tests/main.nf.test +++ b/modules/bigbio/onsite/tests/main.nf.test @@ -13,11 +13,12 @@ nextflow_process { when { process { """ - input[0] = [ - [ id: 'test', mzml_id: 'test_sample' ], - file(params.test_data['proteomics']['onsite']['mzml'], checkIfExists: true), - file(params.test_data['proteomics']['onsite']['idparquet'], checkIfExists: true) - ] + input[0] = channel.from([ + [ + [ id: 'test', mzml_id: 'test_sample' ], + file(params.test_data['proteomics']['onsite']['mzml'], checkIfExists: true) + ] + ]).combine(channel.fromPath(params.test_data['proteomics']['onsite']['idparquet'])) """ } params { diff --git a/tests/config/test_data.config b/tests/config/test_data.config index ca5901c..1a19cb0 100644 --- a/tests/config/test_data.config +++ b/tests/config/test_data.config @@ -21,7 +21,7 @@ params { onsite { // Test data for onsite PTM localization module mzml = "https://ftp.pride.ebi.ac.uk/pub/databases/pride/resources/proteomes/quantms-ci-github/onsite/Phospho_redissolve_final_01.mzML" - idparquet = "https://ftp.pride.ebi.ac.uk/pub/databases/pride/resources/proteomes/quantms-ci-github/onsite/Phospho_redissolve_final_01_clean_perc.idparquet/" + idparquet = "https://ftp.pride.ebi.ac.uk/pub/databases/pride/resources/proteomes/quantms-ci-github/onsite/Phospho_redissolve_final_01_clean_perc.idparquet" } qpx { // DIA-NN results for QPX export testing (reuses pmultiqc DIANN example) From f44bde157a385ef294b3b27e1e392b1b8127b5da Mon Sep 17 00:00:00 2001 From: Chengxin Dai <37200167+daichengxin@users.noreply.github.com> Date: Sat, 13 Jun 2026 20:14:00 +0800 Subject: [PATCH 7/8] test --- .github/workflows/ci.yml | 12 ++++++++++++ tests/config/test_data.config | 2 +- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index ab25669..a1685ca 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -167,6 +167,18 @@ jobs: wget -qO- https://code.askimed.com/install/nf-test | bash -s ${{ env.NFT_VER }} sudo mv nf-test /usr/local/bin/ + - name: Download onsite test data directory + if: matrix.module == 'bigbio/onsite' + run: | + DIR="tests/data/onsite/Phospho_redissolve_final_01_clean_perc.idparquet" + mkdir -p "$DIR" + BASE_URL="https://ftp.pride.ebi.ac.uk/pub/databases/pride/resources/proteomes/quantms-ci-github/onsite/Phospho_redissolve_final_01_clean_perc.idparquet" + for f in psms.parquet proteins.parquet protein_groups.parquet search_params.parquet; do + echo "Downloading $f ..." + curl -sL -o "$DIR/$f" "$BASE_URL/$f" + done + ls -lh "$DIR" + - name: Run nf-test for ${{ matrix.module }} env: PROFILE: ${{ matrix.profile }} diff --git a/tests/config/test_data.config b/tests/config/test_data.config index 1a19cb0..aafd2d0 100644 --- a/tests/config/test_data.config +++ b/tests/config/test_data.config @@ -21,7 +21,7 @@ params { onsite { // Test data for onsite PTM localization module mzml = "https://ftp.pride.ebi.ac.uk/pub/databases/pride/resources/proteomes/quantms-ci-github/onsite/Phospho_redissolve_final_01.mzML" - idparquet = "https://ftp.pride.ebi.ac.uk/pub/databases/pride/resources/proteomes/quantms-ci-github/onsite/Phospho_redissolve_final_01_clean_perc.idparquet" + idparquet = "tests/data/onsite/Phospho_redissolve_final_01_clean_perc.idparquet" } qpx { // DIA-NN results for QPX export testing (reuses pmultiqc DIANN example) From 5e0edb0a6c17a5fd0727f4927d8889ea49e8e09a Mon Sep 17 00:00:00 2001 From: Chengxin Dai <37200167+daichengxin@users.noreply.github.com> Date: Sat, 13 Jun 2026 20:22:14 +0800 Subject: [PATCH 8/8] try --- .github/workflows/ci.yml | 1 + .gitignore | 6 ++++++ tests/config/test_data.config | 2 +- 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a1685ca..19ae40e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -182,6 +182,7 @@ jobs: - name: Run nf-test for ${{ matrix.module }} env: PROFILE: ${{ matrix.profile }} + ONSITE_IDPARQUET_PATH: ${{ github.workspace }}/tests/data/onsite/Phospho_redissolve_final_01_clean_perc.idparquet run: | MODULE_PATH="${{ matrix.module }}" TEST_FILE="modules/${MODULE_PATH}/tests/main.nf.test" diff --git a/.gitignore b/.gitignore index 7157dd6..bd6c28d 100644 --- a/.gitignore +++ b/.gitignore @@ -208,3 +208,9 @@ nf.test.snap .idea/ .nf-test* + +#Ignore vscode AI rules +.github\instructions\codacy.instructions.md + +# Test data downloaded at CI runtime +tests/data/ diff --git a/tests/config/test_data.config b/tests/config/test_data.config index aafd2d0..bb0b73b 100644 --- a/tests/config/test_data.config +++ b/tests/config/test_data.config @@ -21,7 +21,7 @@ params { onsite { // Test data for onsite PTM localization module mzml = "https://ftp.pride.ebi.ac.uk/pub/databases/pride/resources/proteomes/quantms-ci-github/onsite/Phospho_redissolve_final_01.mzML" - idparquet = "tests/data/onsite/Phospho_redissolve_final_01_clean_perc.idparquet" + idparquet = System.getenv('ONSITE_IDPARQUET_PATH') ?: "https://ftp.pride.ebi.ac.uk/pub/databases/pride/resources/proteomes/quantms-ci-github/onsite/Phospho_redissolve_final_01_clean_perc.idparquet" } qpx { // DIA-NN results for QPX export testing (reuses pmultiqc DIANN example)