From 2e4a83c3be7614618fd744b85f24157cbb4b140f Mon Sep 17 00:00:00 2001 From: JoseEspinosa Date: Wed, 11 Feb 2026 15:57:16 +0100 Subject: [PATCH 01/13] Harmonised af3 outputs and added flaggable raw output (--save_intermediates) --- conf/modules_alphafold3.config | 32 ++++++++++++++++++++-- modules/local/run_alphafold3/main.nf | 41 +++++++++++++++------------- 2 files changed, 51 insertions(+), 22 deletions(-) diff --git a/conf/modules_alphafold3.config b/conf/modules_alphafold3.config index 32530d32..6da01373 100644 --- a/conf/modules_alphafold3.config +++ b/conf/modules_alphafold3.config @@ -92,9 +92,35 @@ process { withName: 'RUN_ALPHAFOLD3' { accelerator = params.use_gpu? 1 : 0 publishDir = [ - path: { "${params.outdir}/alphafold3" }, - mode: 'copy', - saveAs: { filename -> filename.equals('versions.yml') ? null : filename }, + [ + path: { "${params.outdir}/alphafold3/${meta.id}" }, + mode: 'copy', + pattern: '*_plddt.tsv' + ], + [ + path: { "${params.outdir}/alphafold3/${meta.id}" }, + mode: 'copy', + saveAs: { filename -> "paes/$filename" }, + pattern: '*_pae.tsv' + ], + [ + path: { "${params.outdir}/alphafold3/${meta.id}" }, + mode: 'copy', + pattern: '*_alphafold3msa.tsv' + ], + [ + enabled: params.save_intermediates, + path: { "${params.outdir}/alphafold3/${meta.id}/" }, + mode: 'copy', + pattern: 'raw/**' + saveAs: { filename -> filename.toString().replaceFirst(/^raw\//, '') } + ], + [ + path: { "${params.outdir}/alphafold3/top_ranked_structures" }, + mode: 'copy', + saveAs: { "${meta.id}.cif" }, + pattern: '*_alphafold3.cif' + ] ] } } diff --git a/modules/local/run_alphafold3/main.nf b/modules/local/run_alphafold3/main.nf index 3ed38242..1f0ed270 100644 --- a/modules/local/run_alphafold3/main.nf +++ b/modules/local/run_alphafold3/main.nf @@ -18,8 +18,9 @@ process RUN_ALPHAFOLD3 { path "uniprot/*" output: - tuple val(meta), path ("publish/*alphafold3.cif") , emit: top_ranked_cif - tuple val(meta), path ("publish/*ranked_*.cif") , emit: cif + path ("raw/**") , emit: raw + tuple val(meta), path ("${meta.id}_alphafold3.cif") , emit: top_ranked_cif + tuple val(meta), path ("raw/*ranked_*.cif") , emit: cif tuple val(meta), path ("${meta.id}_plddt.tsv") , emit: multiqc tuple val(meta), path ("${meta.id}_alphafold3_msa.tsv") , emit: msa tuple val(meta), path ("${meta.id}_0_pae.tsv") , emit: pae @@ -78,32 +79,34 @@ process RUN_ALPHAFOLD3 { --output_dir=\$PWD \\ $args - ## Rename the top ranked model - if [ ! -d publish ]; then - mkdir -p publish - fi + ## Create raw directory for intermediate files + mkdir -p raw - ## Move the rest of the models and rename them according to their rank + ### Move the rest of the models and rename them according to their rank name=\$(jq -r '.name' ${json}) - cp -n "\${name}/\${name}_model.cif" "publish/${prefix}_alphafold3.cif" + + ## Copy top ranked model to root + cp -n "\${name}/\${name}_model.cif" "${prefix}_alphafold3.cif" ## Sort the rows by ranking_score in descending order sorted_csv=\$(head -n 1 "\${name}/ranking_scores.csv"; tail -n +2 "\${name}/ranking_scores.csv" | sort -t, -k3 -nr) rank=0 - touch publish/combined_plddt_mqc.tsv - ## Generate files with rank tag + ## Generate files with rank tag in raw directory echo "\$sorted_csv" | tail -n +2 | while IFS=',' read -r seed sample ranking_score; do - cp -n "\${name}/seed-\${seed}_sample-\${sample}/model.cif" "publish/seed_\${seed}_sample_\${sample}_ranked_\${rank}.cif" + cp -n "\${name}/seed-\${seed}_sample-\${sample}/model.cif" "raw/seed_\${seed}_sample_\${sample}_ranked_\${rank}.cif" rank=\$((rank + 1)) done extract_metrics.py --name ${prefix} \\ --jsons ${af3_id}/${af3_id}_data.json ${af3_id}/${af3_id}_summary_confidences.json ${af3_id}/${af3_id}_confidences.json \\ - --structs publish/*ranked_*.cif + --structs raw/*ranked_*.cif mv "${prefix}_msa.tsv" "${meta.id}_alphafold3_msa.tsv" + ## Move alphafold3 output directory to raw for save_intermediates + mv "\${name}" raw/ + cat <<-END_VERSIONS > versions.yml "${task.process}": python: \$(python3 --version | sed 's/Python //g') @@ -113,13 +116,13 @@ process RUN_ALPHAFOLD3 { stub: def prefix = task.ext.prefix ?: "${meta.id}" """ - mkdir publish - touch publish/${prefix}_alphafold3.cif - touch publish/${prefix}_ranked_1.cif - touch publish/${prefix}_ranked_2.cif - touch publish/${prefix}_ranked_3.cif - touch publish/${prefix}_ranked_4.cif - touch publish/${prefix}_ranked_5.cif + mkdir -p raw + touch raw/${prefix}_alphafold3.cif + touch raw/${prefix}_ranked_1.cif + touch raw/${prefix}_ranked_2.cif + touch raw/${prefix}_ranked_3.cif + touch raw/${prefix}_ranked_4.cif + touch raw/${prefix}_ranked_5.cif touch ${prefix}_plddt.tsv touch ${prefix}_alphafold3_msa.tsv touch ${prefix}_0_pae.tsv From 7b3b3475fdeab9be5bffd799efc50afbec820a52 Mon Sep 17 00:00:00 2001 From: JoseEspinosa Date: Wed, 11 Feb 2026 17:48:14 +0100 Subject: [PATCH 02/13] Add missing comma --- conf/modules_alphafold3.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conf/modules_alphafold3.config b/conf/modules_alphafold3.config index 6da01373..f5f6cfb3 100644 --- a/conf/modules_alphafold3.config +++ b/conf/modules_alphafold3.config @@ -112,7 +112,7 @@ process { enabled: params.save_intermediates, path: { "${params.outdir}/alphafold3/${meta.id}/" }, mode: 'copy', - pattern: 'raw/**' + pattern: 'raw/**', saveAs: { filename -> filename.toString().replaceFirst(/^raw\//, '') } ], [ From b30ac479a3b7dc98aa1302f7e7e3ad1bce972ab8 Mon Sep 17 00:00:00 2001 From: JoseEspinosa Date: Wed, 11 Feb 2026 23:05:13 +0100 Subject: [PATCH 03/13] Remove cif sufix from converted pdb --- modules/local/mmcif2pdb/main.nf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/local/mmcif2pdb/main.nf b/modules/local/mmcif2pdb/main.nf index f83cc91e..e0a7c137 100644 --- a/modules/local/mmcif2pdb/main.nf +++ b/modules/local/mmcif2pdb/main.nf @@ -20,7 +20,7 @@ process MMCIF2PDB { """ for mmcif in *.cif do - pdb_out=\$(basename "\$mmcif") + pdb_out=\$(basename "\$mmcif" .cif) mmcif_to_pdb.py \${mmcif} --pdb_out "\${pdb_out}.pdb" done From 597ebf4bdd83d9ab37847b1a4bf4cdf544c63094 Mon Sep 17 00:00:00 2001 From: JoseEspinosa Date: Wed, 11 Feb 2026 23:06:11 +0100 Subject: [PATCH 04/13] Copy to raw after extract_metrics.py is run --- conf/modules_alphafold3.config | 24 ++++++++++++++++++++++-- modules/local/run_alphafold3/main.nf | 10 ++++++---- 2 files changed, 28 insertions(+), 6 deletions(-) diff --git a/conf/modules_alphafold3.config b/conf/modules_alphafold3.config index f5f6cfb3..706a0252 100644 --- a/conf/modules_alphafold3.config +++ b/conf/modules_alphafold3.config @@ -97,6 +97,16 @@ process { mode: 'copy', pattern: '*_plddt.tsv' ], + [ + path: { "${params.outdir}/alphafold3/${meta.id}" }, + mode: 'copy', + pattern: '*_ptm.tsv' + ], + [ + path: { "${params.outdir}/alphafold3/${meta.id}" }, + mode: 'copy', + pattern: '*_iptm.tsv' + ], [ path: { "${params.outdir}/alphafold3/${meta.id}" }, mode: 'copy', @@ -106,11 +116,11 @@ process { [ path: { "${params.outdir}/alphafold3/${meta.id}" }, mode: 'copy', - pattern: '*_alphafold3msa.tsv' + pattern: '*_alphafold3_msa.tsv' ], [ enabled: params.save_intermediates, - path: { "${params.outdir}/alphafold3/${meta.id}/" }, + path: { "${params.outdir}/alphafold3/${meta.id}/raw" }, mode: 'copy', pattern: 'raw/**', saveAs: { filename -> filename.toString().replaceFirst(/^raw\//, '') } @@ -123,4 +133,14 @@ process { ] ] } + withName: 'MMCIF2PDB_TOP_RANKED' { + publishDir = [ + [ + path: { "${params.outdir}/alphafold3/top_ranked_structures" }, + mode: 'copy', + saveAs: { "${meta.id}.pdb" }, + pattern: '*.pdb' + ] + ] + } } diff --git a/modules/local/run_alphafold3/main.nf b/modules/local/run_alphafold3/main.nf index 1f0ed270..97734a43 100644 --- a/modules/local/run_alphafold3/main.nf +++ b/modules/local/run_alphafold3/main.nf @@ -24,6 +24,8 @@ process RUN_ALPHAFOLD3 { tuple val(meta), path ("${meta.id}_plddt.tsv") , emit: multiqc tuple val(meta), path ("${meta.id}_alphafold3_msa.tsv") , emit: msa tuple val(meta), path ("${meta.id}_0_pae.tsv") , emit: pae + tuple val(meta), path ("${meta.id}_ptm.tsv") , emit: ptms + tuple val(meta), path ("${meta.id}_iptm.tsv") , optional: true, emit: iptms path "versions.yml" , emit: versions when: @@ -79,9 +81,6 @@ process RUN_ALPHAFOLD3 { --output_dir=\$PWD \\ $args - ## Create raw directory for intermediate files - mkdir -p raw - ### Move the rest of the models and rename them according to their rank name=\$(jq -r '.name' ${json}) @@ -92,6 +91,9 @@ process RUN_ALPHAFOLD3 { sorted_csv=\$(head -n 1 "\${name}/ranking_scores.csv"; tail -n +2 "\${name}/ranking_scores.csv" | sort -t, -k3 -nr) rank=0 + ## Create raw directory for intermediate files + mkdir -p raw + ## Generate files with rank tag in raw directory echo "\$sorted_csv" | tail -n +2 | while IFS=',' read -r seed sample ranking_score; do cp -n "\${name}/seed-\${seed}_sample-\${sample}/model.cif" "raw/seed_\${seed}_sample_\${sample}_ranked_\${rank}.cif" @@ -105,7 +107,7 @@ process RUN_ALPHAFOLD3 { mv "${prefix}_msa.tsv" "${meta.id}_alphafold3_msa.tsv" ## Move alphafold3 output directory to raw for save_intermediates - mv "\${name}" raw/ + cp -r \${name}/* raw/ cat <<-END_VERSIONS > versions.yml "${task.process}": From 100de7c83daf73d74c69150c197788ef02b66207 Mon Sep 17 00:00:00 2001 From: JoseEspinosa Date: Wed, 11 Feb 2026 23:29:39 +0100 Subject: [PATCH 05/13] Make cache lenient --- modules/local/run_alphafold3/main.nf | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/modules/local/run_alphafold3/main.nf b/modules/local/run_alphafold3/main.nf index 97734a43..c37be97b 100644 --- a/modules/local/run_alphafold3/main.nf +++ b/modules/local/run_alphafold3/main.nf @@ -2,6 +2,8 @@ * Run Alphafold3 */ process RUN_ALPHAFOLD3 { + cache 'lenient' + tag "$meta.id" label 'process_medium' label 'process_gpu' @@ -107,7 +109,7 @@ process RUN_ALPHAFOLD3 { mv "${prefix}_msa.tsv" "${meta.id}_alphafold3_msa.tsv" ## Move alphafold3 output directory to raw for save_intermediates - cp -r \${name}/* raw/ + mv \${name}/* raw/ cat <<-END_VERSIONS > versions.yml "${task.process}": From 6baa3c316de7433b55129a198f3a11f0d08d4fba Mon Sep 17 00:00:00 2001 From: JoseEspinosa Date: Thu, 12 Feb 2026 10:27:40 +0100 Subject: [PATCH 06/13] Update alphafold3 snapshots --- tests/alphafold3.nf.test.snap | 84 +++++++++++++++-------------------- 1 file changed, 36 insertions(+), 48 deletions(-) diff --git a/tests/alphafold3.nf.test.snap b/tests/alphafold3.nf.test.snap index 7d53d465..63cfd43d 100644 --- a/tests/alphafold3.nf.test.snap +++ b/tests/alphafold3.nf.test.snap @@ -25,40 +25,34 @@ }, [ "alphafold3", - "alphafold3/T1024_0_pae.tsv", - "alphafold3/T1024_alphafold3_msa.tsv", - "alphafold3/T1024_plddt.tsv", - "alphafold3/T1026_0_pae.tsv", - "alphafold3/T1026_alphafold3_msa.tsv", - "alphafold3/T1026_plddt.tsv", - "alphafold3/publish", - "alphafold3/publish/T1024_alphafold3.cif", - "alphafold3/publish/T1024_ranked_1.cif", - "alphafold3/publish/T1024_ranked_2.cif", - "alphafold3/publish/T1024_ranked_3.cif", - "alphafold3/publish/T1024_ranked_4.cif", - "alphafold3/publish/T1024_ranked_5.cif", - "alphafold3/publish/T1026_alphafold3.cif", - "alphafold3/publish/T1026_ranked_1.cif", - "alphafold3/publish/T1026_ranked_2.cif", - "alphafold3/publish/T1026_ranked_3.cif", - "alphafold3/publish/T1026_ranked_4.cif", - "alphafold3/publish/T1026_ranked_5.cif", + "alphafold3/T1024", + "alphafold3/T1024/T1024_alphafold3_msa.tsv", + "alphafold3/T1024/T1024_iptm.tsv", + "alphafold3/T1024/T1024_plddt.tsv", + "alphafold3/T1024/T1024_ptm.tsv", + "alphafold3/T1024/paes", + "alphafold3/T1024/paes/T1024_0_pae.tsv", + "alphafold3/T1026", + "alphafold3/T1026/T1026_alphafold3_msa.tsv", + "alphafold3/T1026/T1026_iptm.tsv", + "alphafold3/T1026/T1026_plddt.tsv", + "alphafold3/T1026/T1026_ptm.tsv", + "alphafold3/T1026/paes", + "alphafold3/T1026/paes/T1026_0_pae.tsv", + "alphafold3/top_ranked_structures", + "alphafold3/top_ranked_structures/T1024.cif", + "alphafold3/top_ranked_structures/T1024.pdb", + "alphafold3/top_ranked_structures/T1026.cif", + "alphafold3/top_ranked_structures/T1026.pdb", "fasta", "fasta/T1024.json", "fasta/T1026.json", - "generate", - "generate/test_LDDT.html", - "generate/test_alphafold2_report.html", - "generate/test_seq_coverage.png", "mmcif2pdb", - "mmcif2pdb/T1024_alphafold3.cif.pdb", "mmcif2pdb/T1024_ranked_1.cif.pdb", "mmcif2pdb/T1024_ranked_2.cif.pdb", "mmcif2pdb/T1024_ranked_3.cif.pdb", "mmcif2pdb/T1024_ranked_4.cif.pdb", "mmcif2pdb/T1024_ranked_5.cif.pdb", - "mmcif2pdb/T1026_alphafold3.cif.pdb", "mmcif2pdb/T1026_ranked_1.cif.pdb", "mmcif2pdb/T1026_ranked_2.cif.pdb", "mmcif2pdb/T1026_ranked_3.cif.pdb", @@ -69,50 +63,44 @@ "multiqc/multiqc_plots", "multiqc/multiqc_report.html", "pipeline_info", - "pipeline_info/nf_core_proteinfold_software_mqc_versions.yml" + "pipeline_info/nf_core_proteinfold_software_mqc_versions.yml", + "reports", + "reports/test_alphafold2_report.html" ], [ - "T1024_0_pae.tsv:md5,d41d8cd98f00b204e9800998ecf8427e", "T1024_alphafold3_msa.tsv:md5,d41d8cd98f00b204e9800998ecf8427e", + "T1024_iptm.tsv:md5,d41d8cd98f00b204e9800998ecf8427e", "T1024_plddt.tsv:md5,d41d8cd98f00b204e9800998ecf8427e", - "T1026_0_pae.tsv:md5,d41d8cd98f00b204e9800998ecf8427e", + "T1024_ptm.tsv:md5,d41d8cd98f00b204e9800998ecf8427e", + "T1024_0_pae.tsv:md5,d41d8cd98f00b204e9800998ecf8427e", "T1026_alphafold3_msa.tsv:md5,d41d8cd98f00b204e9800998ecf8427e", + "T1026_iptm.tsv:md5,d41d8cd98f00b204e9800998ecf8427e", "T1026_plddt.tsv:md5,d41d8cd98f00b204e9800998ecf8427e", - "T1024_alphafold3.cif:md5,d41d8cd98f00b204e9800998ecf8427e", - "T1024_ranked_1.cif:md5,d41d8cd98f00b204e9800998ecf8427e", - "T1024_ranked_2.cif:md5,d41d8cd98f00b204e9800998ecf8427e", - "T1024_ranked_3.cif:md5,d41d8cd98f00b204e9800998ecf8427e", - "T1024_ranked_4.cif:md5,d41d8cd98f00b204e9800998ecf8427e", - "T1024_ranked_5.cif:md5,d41d8cd98f00b204e9800998ecf8427e", - "T1026_alphafold3.cif:md5,d41d8cd98f00b204e9800998ecf8427e", - "T1026_ranked_1.cif:md5,d41d8cd98f00b204e9800998ecf8427e", - "T1026_ranked_2.cif:md5,d41d8cd98f00b204e9800998ecf8427e", - "T1026_ranked_3.cif:md5,d41d8cd98f00b204e9800998ecf8427e", - "T1026_ranked_4.cif:md5,d41d8cd98f00b204e9800998ecf8427e", - "T1026_ranked_5.cif:md5,d41d8cd98f00b204e9800998ecf8427e", + "T1026_ptm.tsv:md5,d41d8cd98f00b204e9800998ecf8427e", + "T1026_0_pae.tsv:md5,d41d8cd98f00b204e9800998ecf8427e", + "T1024.cif:md5,d41d8cd98f00b204e9800998ecf8427e", + "T1024.pdb:md5,d41d8cd98f00b204e9800998ecf8427e", + "T1026.cif:md5,d41d8cd98f00b204e9800998ecf8427e", + "T1026.pdb:md5,d41d8cd98f00b204e9800998ecf8427e", "T1024.json:md5,d41d8cd98f00b204e9800998ecf8427e", "T1026.json:md5,d41d8cd98f00b204e9800998ecf8427e", - "test_LDDT.html:md5,d41d8cd98f00b204e9800998ecf8427e", - "test_alphafold2_report.html:md5,d41d8cd98f00b204e9800998ecf8427e", - "test_seq_coverage.png:md5,d41d8cd98f00b204e9800998ecf8427e", - "T1024_alphafold3.cif.pdb:md5,d41d8cd98f00b204e9800998ecf8427e", "T1024_ranked_1.cif.pdb:md5,d41d8cd98f00b204e9800998ecf8427e", "T1024_ranked_2.cif.pdb:md5,d41d8cd98f00b204e9800998ecf8427e", "T1024_ranked_3.cif.pdb:md5,d41d8cd98f00b204e9800998ecf8427e", "T1024_ranked_4.cif.pdb:md5,d41d8cd98f00b204e9800998ecf8427e", "T1024_ranked_5.cif.pdb:md5,d41d8cd98f00b204e9800998ecf8427e", - "T1026_alphafold3.cif.pdb:md5,d41d8cd98f00b204e9800998ecf8427e", "T1026_ranked_1.cif.pdb:md5,d41d8cd98f00b204e9800998ecf8427e", "T1026_ranked_2.cif.pdb:md5,d41d8cd98f00b204e9800998ecf8427e", "T1026_ranked_3.cif.pdb:md5,d41d8cd98f00b204e9800998ecf8427e", "T1026_ranked_4.cif.pdb:md5,d41d8cd98f00b204e9800998ecf8427e", - "T1026_ranked_5.cif.pdb:md5,d41d8cd98f00b204e9800998ecf8427e" + "T1026_ranked_5.cif.pdb:md5,d41d8cd98f00b204e9800998ecf8427e", + "test_alphafold2_report.html:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "meta": { "nf-test": "0.9.3", - "nextflow": "25.10.2" + "nextflow": "25.10.4" }, - "timestamp": "2026-01-13T14:35:17.692615" + "timestamp": "2026-02-12T10:20:34.770288" } } \ No newline at end of file From 5ccc2153fa64a87adc7d0f1eb246b9f9c9c23a2c Mon Sep 17 00:00:00 2001 From: JoseEspinosa Date: Thu, 12 Feb 2026 10:28:34 +0100 Subject: [PATCH 07/13] Add ptm and iptm to stub run of af3 --- modules/local/run_alphafold3/main.nf | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/modules/local/run_alphafold3/main.nf b/modules/local/run_alphafold3/main.nf index c37be97b..2adf54bc 100644 --- a/modules/local/run_alphafold3/main.nf +++ b/modules/local/run_alphafold3/main.nf @@ -121,7 +121,7 @@ process RUN_ALPHAFOLD3 { def prefix = task.ext.prefix ?: "${meta.id}" """ mkdir -p raw - touch raw/${prefix}_alphafold3.cif + touch ${prefix}_alphafold3.cif touch raw/${prefix}_ranked_1.cif touch raw/${prefix}_ranked_2.cif touch raw/${prefix}_ranked_3.cif @@ -130,6 +130,8 @@ process RUN_ALPHAFOLD3 { touch ${prefix}_plddt.tsv touch ${prefix}_alphafold3_msa.tsv touch ${prefix}_0_pae.tsv + touch ${prefix}_ptm.tsv + touch ${prefix}_iptm.tsv cat <<-END_VERSIONS > versions.yml "${task.process}": From 7035a4c23a794e437958e3435d35868f6d3299e5 Mon Sep 17 00:00:00 2001 From: JoseEspinosa Date: Thu, 12 Feb 2026 10:34:00 +0100 Subject: [PATCH 08/13] Update alphafold3 not to break cache --- modules/local/run_alphafold3/main.nf | 29 ++++------------------------ 1 file changed, 4 insertions(+), 25 deletions(-) diff --git a/modules/local/run_alphafold3/main.nf b/modules/local/run_alphafold3/main.nf index 2adf54bc..e8982015 100644 --- a/modules/local/run_alphafold3/main.nf +++ b/modules/local/run_alphafold3/main.nf @@ -2,7 +2,6 @@ * Run Alphafold3 */ process RUN_ALPHAFOLD3 { - cache 'lenient' tag "$meta.id" label 'process_medium' @@ -43,33 +42,13 @@ process RUN_ALPHAFOLD3 { def prefix = task.ext.prefix ?: "${meta.id}" def af3_id = meta.id.toLowerCase() """ - for f in ./pdb_seqres/pdb_seqres.txt ./pdb_seqres/pdb_seqres_2022_09_28.fasta; do - if [[ -f \$f ]]; then - pdb_seqres=\$f - break - fi - done + pdb_seqres=\$(ls -v ./pdb_seqres/pdb_seqres.txt ./pdb_seqres/pdb_seqres_2022_09_28.fasta 2>/dev/null | tail -n 1) - for f in ./uniref90/uniref90*.fa ./uniref90/uniref90*.fasta; do - if [[ -f \$f ]]; then - uniref90=\$f - break - fi - done + uniref90=\$(ls -v ./uniref90/uniref90*.fa ./uniref90/uniref90*.fasta 2>/dev/null | tail -n 1) - for f in ./mgnify/mgy_clusters*.fa ./mgnify/mgnify_clusters*.fasta; do - if [[ -f \$f ]]; then - mgnify=\$f - break - fi - done + mgnify=\$(ls -v ./mgnify/mgy_clusters*.fa ./mgnify/mgnify_clusters*.fasta 2>/dev/null | tail -n 1) - for f in ./uniprot/uniprot.fasta ./uniprot/uniprot*.fa; do - if [[ -f \$f ]]; then - uniprot=\$f - break - fi - done + uniprot=\$(ls -v ./uniprot/uniprot.fasta ./uniprot/uniprot*.fa 2>/dev/null | tail -n 1) python3 /app/alphafold/run_alphafold.py \\ --json_path=${json} \\ From 1a6b4adb2578fa0bb44da52ad91b5b66a8c7c7e5 Mon Sep 17 00:00:00 2001 From: JoseEspinosa Date: Thu, 12 Feb 2026 10:52:56 +0100 Subject: [PATCH 09/13] Update snapshots after changing generate for report in output folder --- tests/alphafold2_download.nf.test.snap | 20 ++++++++------------ tests/alphafold2_split.nf.test.snap | 20 ++++++++------------ tests/colabfold_download.nf.test.snap | 20 ++++++++------------ tests/colabfold_local.nf.test.snap | 20 ++++++++------------ tests/colabfold_webserver.nf.test.snap | 20 ++++++++------------ tests/default.nf.test.snap | 20 ++++++++------------ 6 files changed, 48 insertions(+), 72 deletions(-) diff --git a/tests/alphafold2_download.nf.test.snap b/tests/alphafold2_download.nf.test.snap index 901df40d..d13e433f 100644 --- a/tests/alphafold2_download.nf.test.snap +++ b/tests/alphafold2_download.nf.test.snap @@ -64,16 +64,14 @@ "alphafold2/standard/top_ranked_structures", "alphafold2/standard/top_ranked_structures/T1024.pdb", "alphafold2/standard/top_ranked_structures/T1026.pdb", - "generate", - "generate/test_LDDT.html", - "generate/test_alphafold2_report.html", - "generate/test_seq_coverage.png", "multiqc", "multiqc/alphafold2_multiqc_data", "multiqc/alphafold2_multiqc_plots", "multiqc/alphafold2_multiqc_report.html", "pipeline_info", - "pipeline_info/nf_core_proteinfold_software_mqc_versions.yml" + "pipeline_info/nf_core_proteinfold_software_mqc_versions.yml", + "reports", + "reports/test_alphafold2_report.html" ], [ "bfd-first_non_consensus_sequences.fasta:md5,d41d8cd98f00b204e9800998ecf8427e", @@ -107,16 +105,14 @@ "T1026_0_pae.tsv:md5,d41d8cd98f00b204e9800998ecf8427e", "T1024.pdb:md5,d41d8cd98f00b204e9800998ecf8427e", "T1026.pdb:md5,d41d8cd98f00b204e9800998ecf8427e", - "test_LDDT.html:md5,d41d8cd98f00b204e9800998ecf8427e", - "test_alphafold2_report.html:md5,d41d8cd98f00b204e9800998ecf8427e", - "test_seq_coverage.png:md5,d41d8cd98f00b204e9800998ecf8427e", - "alphafold2_multiqc_report.html:md5,d41d8cd98f00b204e9800998ecf8427e" + "alphafold2_multiqc_report.html:md5,d41d8cd98f00b204e9800998ecf8427e", + "test_alphafold2_report.html:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "meta": { - "nf-test": "0.9.2", - "nextflow": "25.10.3" + "nf-test": "0.9.3", + "nextflow": "25.10.4" }, - "timestamp": "2026-01-29T21:35:56.027817716" + "timestamp": "2026-02-12T10:46:14.365206" } } \ No newline at end of file diff --git a/tests/alphafold2_split.nf.test.snap b/tests/alphafold2_split.nf.test.snap index 917420c5..c5c932ac 100644 --- a/tests/alphafold2_split.nf.test.snap +++ b/tests/alphafold2_split.nf.test.snap @@ -45,16 +45,14 @@ "alphafold2/split_msa_prediction/top_ranked_structures", "alphafold2/split_msa_prediction/top_ranked_structures/T1024.pdb", "alphafold2/split_msa_prediction/top_ranked_structures/T1026.pdb", - "generate", - "generate/test_LDDT.html", - "generate/test_alphafold2_report.html", - "generate/test_seq_coverage.png", "multiqc", "multiqc/alphafold2_multiqc_data", "multiqc/alphafold2_multiqc_plots", "multiqc/alphafold2_multiqc_report.html", "pipeline_info", - "pipeline_info/nf_core_proteinfold_software_mqc_versions.yml" + "pipeline_info/nf_core_proteinfold_software_mqc_versions.yml", + "reports", + "reports/test_alphafold2_report.html" ], [ "T1024_alphafold2_msa.tsv:md5,d41d8cd98f00b204e9800998ecf8427e", @@ -67,16 +65,14 @@ "T1026_0_pae.tsv:md5,d41d8cd98f00b204e9800998ecf8427e", "T1024.pdb:md5,d41d8cd98f00b204e9800998ecf8427e", "T1026.pdb:md5,d41d8cd98f00b204e9800998ecf8427e", - "test_LDDT.html:md5,d41d8cd98f00b204e9800998ecf8427e", - "test_alphafold2_report.html:md5,d41d8cd98f00b204e9800998ecf8427e", - "test_seq_coverage.png:md5,d41d8cd98f00b204e9800998ecf8427e", - "alphafold2_multiqc_report.html:md5,d41d8cd98f00b204e9800998ecf8427e" + "alphafold2_multiqc_report.html:md5,d41d8cd98f00b204e9800998ecf8427e", + "test_alphafold2_report.html:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "meta": { - "nf-test": "0.9.2", - "nextflow": "25.10.3" + "nf-test": "0.9.3", + "nextflow": "25.10.4" }, - "timestamp": "2026-01-29T21:36:12.286799433" + "timestamp": "2026-02-12T10:47:42.40387" } } \ No newline at end of file diff --git a/tests/colabfold_download.nf.test.snap b/tests/colabfold_download.nf.test.snap index 22831612..27424a83 100644 --- a/tests/colabfold_download.nf.test.snap +++ b/tests/colabfold_download.nf.test.snap @@ -41,10 +41,6 @@ "colabfold/top_ranked_structures", "colabfold/top_ranked_structures/T1024.pdb", "colabfold/top_ranked_structures/T1026.pdb", - "generate", - "generate/test_LDDT.html", - "generate/test_alphafold2_report.html", - "generate/test_seq_coverage.png", "multifasta", "multifasta/input.csv", "multiqc", @@ -52,7 +48,9 @@ "multiqc/multiqc_plots", "multiqc/multiqc_report.html", "pipeline_info", - "pipeline_info/nf_core_proteinfold_software_mqc_versions.yml" + "pipeline_info/nf_core_proteinfold_software_mqc_versions.yml", + "reports", + "reports/test_alphafold2_report.html" ], [ [ @@ -68,16 +66,14 @@ "T1026_0_pae.tsv:md5,d41d8cd98f00b204e9800998ecf8427e", "T1024.pdb:md5,d41d8cd98f00b204e9800998ecf8427e", "T1026.pdb:md5,d41d8cd98f00b204e9800998ecf8427e", - "test_LDDT.html:md5,d41d8cd98f00b204e9800998ecf8427e", - "test_alphafold2_report.html:md5,d41d8cd98f00b204e9800998ecf8427e", - "test_seq_coverage.png:md5,d41d8cd98f00b204e9800998ecf8427e", - "input.csv:md5,d41d8cd98f00b204e9800998ecf8427e" + "input.csv:md5,d41d8cd98f00b204e9800998ecf8427e", + "test_alphafold2_report.html:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "meta": { - "nf-test": "0.9.2", - "nextflow": "25.10.3" + "nf-test": "0.9.3", + "nextflow": "25.10.4" }, - "timestamp": "2026-01-30T21:28:32.731283423" + "timestamp": "2026-02-12T10:48:56.591432" } } \ No newline at end of file diff --git a/tests/colabfold_local.nf.test.snap b/tests/colabfold_local.nf.test.snap index e3202e7f..4f6e1fbf 100644 --- a/tests/colabfold_local.nf.test.snap +++ b/tests/colabfold_local.nf.test.snap @@ -39,10 +39,6 @@ "colabfold/top_ranked_structures", "colabfold/top_ranked_structures/T1024.pdb", "colabfold/top_ranked_structures/T1026.pdb", - "generate", - "generate/test_LDDT.html", - "generate/test_alphafold2_report.html", - "generate/test_seq_coverage.png", "multifasta", "multifasta/input.csv", "multiqc", @@ -50,7 +46,9 @@ "multiqc/multiqc_plots", "multiqc/multiqc_report.html", "pipeline_info", - "pipeline_info/nf_core_proteinfold_software_mqc_versions.yml" + "pipeline_info/nf_core_proteinfold_software_mqc_versions.yml", + "reports", + "reports/test_alphafold2_report.html" ], [ "T1024_colabfold_msa.tsv:md5,d41d8cd98f00b204e9800998ecf8427e", @@ -63,16 +61,14 @@ "T1026_0_pae.tsv:md5,d41d8cd98f00b204e9800998ecf8427e", "T1024.pdb:md5,d41d8cd98f00b204e9800998ecf8427e", "T1026.pdb:md5,d41d8cd98f00b204e9800998ecf8427e", - "test_LDDT.html:md5,d41d8cd98f00b204e9800998ecf8427e", - "test_alphafold2_report.html:md5,d41d8cd98f00b204e9800998ecf8427e", - "test_seq_coverage.png:md5,d41d8cd98f00b204e9800998ecf8427e", - "input.csv:md5,d41d8cd98f00b204e9800998ecf8427e" + "input.csv:md5,d41d8cd98f00b204e9800998ecf8427e", + "test_alphafold2_report.html:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "meta": { - "nf-test": "0.9.2", - "nextflow": "25.10.3" + "nf-test": "0.9.3", + "nextflow": "25.10.4" }, - "timestamp": "2026-01-30T21:28:47.156766004" + "timestamp": "2026-02-12T10:50:01.242169" } } \ No newline at end of file diff --git a/tests/colabfold_webserver.nf.test.snap b/tests/colabfold_webserver.nf.test.snap index b2772aed..9cfb08cb 100644 --- a/tests/colabfold_webserver.nf.test.snap +++ b/tests/colabfold_webserver.nf.test.snap @@ -35,10 +35,6 @@ "colabfold/top_ranked_structures", "colabfold/top_ranked_structures/T1024.pdb", "colabfold/top_ranked_structures/T1026.pdb", - "generate", - "generate/test_LDDT.html", - "generate/test_alphafold2_report.html", - "generate/test_seq_coverage.png", "multifasta", "multifasta/input.csv", "multiqc", @@ -46,7 +42,9 @@ "multiqc/multiqc_plots", "multiqc/multiqc_report.html", "pipeline_info", - "pipeline_info/nf_core_proteinfold_software_mqc_versions.yml" + "pipeline_info/nf_core_proteinfold_software_mqc_versions.yml", + "reports", + "reports/test_alphafold2_report.html" ], [ "T1024_colabfold_msa.tsv:md5,d41d8cd98f00b204e9800998ecf8427e", @@ -59,16 +57,14 @@ "T1026_0_pae.tsv:md5,d41d8cd98f00b204e9800998ecf8427e", "T1024.pdb:md5,d41d8cd98f00b204e9800998ecf8427e", "T1026.pdb:md5,d41d8cd98f00b204e9800998ecf8427e", - "test_LDDT.html:md5,d41d8cd98f00b204e9800998ecf8427e", - "test_alphafold2_report.html:md5,d41d8cd98f00b204e9800998ecf8427e", - "test_seq_coverage.png:md5,d41d8cd98f00b204e9800998ecf8427e", - "input.csv:md5,d41d8cd98f00b204e9800998ecf8427e" + "input.csv:md5,d41d8cd98f00b204e9800998ecf8427e", + "test_alphafold2_report.html:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "meta": { - "nf-test": "0.9.2", - "nextflow": "25.10.3" + "nf-test": "0.9.3", + "nextflow": "25.10.4" }, - "timestamp": "2026-01-30T21:29:00.639422387" + "timestamp": "2026-02-12T10:51:03.271168" } } \ No newline at end of file diff --git a/tests/default.nf.test.snap b/tests/default.nf.test.snap index 57347ffb..73d2f7b7 100644 --- a/tests/default.nf.test.snap +++ b/tests/default.nf.test.snap @@ -38,16 +38,14 @@ "alphafold2/standard/top_ranked_structures", "alphafold2/standard/top_ranked_structures/T1024.pdb", "alphafold2/standard/top_ranked_structures/T1026.pdb", - "generate", - "generate/test_LDDT.html", - "generate/test_alphafold2_report.html", - "generate/test_seq_coverage.png", "multiqc", "multiqc/alphafold2_multiqc_data", "multiqc/alphafold2_multiqc_plots", "multiqc/alphafold2_multiqc_report.html", "pipeline_info", - "pipeline_info/nf_core_proteinfold_software_mqc_versions.yml" + "pipeline_info/nf_core_proteinfold_software_mqc_versions.yml", + "reports", + "reports/test_alphafold2_report.html" ], [ "T1024_alphafold2_msa.tsv:md5,d41d8cd98f00b204e9800998ecf8427e", @@ -62,16 +60,14 @@ "T1026_0_pae.tsv:md5,d41d8cd98f00b204e9800998ecf8427e", "T1024.pdb:md5,d41d8cd98f00b204e9800998ecf8427e", "T1026.pdb:md5,d41d8cd98f00b204e9800998ecf8427e", - "test_LDDT.html:md5,d41d8cd98f00b204e9800998ecf8427e", - "test_alphafold2_report.html:md5,d41d8cd98f00b204e9800998ecf8427e", - "test_seq_coverage.png:md5,d41d8cd98f00b204e9800998ecf8427e", - "alphafold2_multiqc_report.html:md5,d41d8cd98f00b204e9800998ecf8427e" + "alphafold2_multiqc_report.html:md5,d41d8cd98f00b204e9800998ecf8427e", + "test_alphafold2_report.html:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "meta": { - "nf-test": "0.9.2", - "nextflow": "25.10.3" + "nf-test": "0.9.3", + "nextflow": "25.10.4" }, - "timestamp": "2026-01-29T21:37:26.752545973" + "timestamp": "2026-02-12T10:52:01.757925" } } \ No newline at end of file From 37400a8f548c4333bb9de2722f63dc1fdd05dec5 Mon Sep 17 00:00:00 2001 From: JoseEspinosa Date: Thu, 12 Feb 2026 11:33:17 +0100 Subject: [PATCH 10/13] Error if dbs with possible different names are not found --- modules/local/run_alphafold3/main.nf | 31 +++++++++++++++++++++------- 1 file changed, 24 insertions(+), 7 deletions(-) diff --git a/modules/local/run_alphafold3/main.nf b/modules/local/run_alphafold3/main.nf index e8982015..1f097203 100644 --- a/modules/local/run_alphafold3/main.nf +++ b/modules/local/run_alphafold3/main.nf @@ -42,13 +42,30 @@ process RUN_ALPHAFOLD3 { def prefix = task.ext.prefix ?: "${meta.id}" def af3_id = meta.id.toLowerCase() """ - pdb_seqres=\$(ls -v ./pdb_seqres/pdb_seqres.txt ./pdb_seqres/pdb_seqres_2022_09_28.fasta 2>/dev/null | tail -n 1) - - uniref90=\$(ls -v ./uniref90/uniref90*.fa ./uniref90/uniref90*.fasta 2>/dev/null | tail -n 1) - - mgnify=\$(ls -v ./mgnify/mgy_clusters*.fa ./mgnify/mgnify_clusters*.fasta 2>/dev/null | tail -n 1) - - uniprot=\$(ls -v ./uniprot/uniprot.fasta ./uniprot/uniprot*.fa 2>/dev/null | tail -n 1) + # Check database files exist and set variables + pdb_seqres=\$(ls -v ./pdb_seqres/pdb_seqres.txt ./pdb_seqres/pdb_seqres_2022_09_28.fasta 2>/dev/null | tail -n 1 || echo "") + if [[ -z "\$pdb_seqres" ]]; then + echo "ERROR: No pdb_seqres file found" + exit 1 + fi + + uniref90=\$(ls -v ./uniref90/uniref90*.fa ./uniref90/uniref90*.fasta 2>/dev/null | tail -n 1 || echo "") + if [[ -z "\$uniref90" ]]; then + echo "ERROR: No uniref90 file found" + exit 1 + fi + + mgnify=\$(ls -v ./mgnify/mgy_clusters*.fa ./mgnify/mgnify_clusters*.fasta 2>/dev/null | tail -n 1 || echo "") + if [[ -z "\$mgnify" ]]; then + echo "ERROR: No mgnify file found" + exit 1 + fi + + uniprot=\$(ls -v ./uniprot/uniprot.fasta ./uniprot/uniprot*.fa 2>/dev/null | tail -n 1 || echo "") + if [[ -z "\$uniprot" ]]; then + echo "ERROR: No uniprot file found" + exit 1 + fi python3 /app/alphafold/run_alphafold.py \\ --json_path=${json} \\ From 45d7a2230cbbc07ee04bb3ef526dd8551fab422a Mon Sep 17 00:00:00 2001 From: JoseEspinosa Date: Thu, 12 Feb 2026 11:34:27 +0100 Subject: [PATCH 11/13] Update more snapshots failing to new report output folder --- tests/esmfold.nf.test.snap | 16 ++++++---------- tests/split_fasta.nf.test.snap | 20 ++++++++------------ 2 files changed, 14 insertions(+), 22 deletions(-) diff --git a/tests/esmfold.nf.test.snap b/tests/esmfold.nf.test.snap index 82942a64..9c5906d8 100644 --- a/tests/esmfold.nf.test.snap +++ b/tests/esmfold.nf.test.snap @@ -24,16 +24,14 @@ "esmfold/default/top_ranked_structures", "esmfold/default/top_ranked_structures/T1024.pdb", "esmfold/default/top_ranked_structures/T1026.pdb", - "generate", - "generate/test_LDDT.html", - "generate/test_alphafold2_report.html", - "generate/test_seq_coverage.png", "multiqc", "multiqc/multiqc_data", "multiqc/multiqc_plots", "multiqc/multiqc_report.html", "pipeline_info", - "pipeline_info/nf_core_proteinfold_software_mqc_versions.yml" + "pipeline_info/nf_core_proteinfold_software_mqc_versions.yml", + "reports", + "reports/test_alphafold2_report.html" ], [ "T1024_esmfold.pdb:md5,d41d8cd98f00b204e9800998ecf8427e", @@ -42,15 +40,13 @@ "T1026_plddt.tsv:md5,d41d8cd98f00b204e9800998ecf8427e", "T1024.pdb:md5,d41d8cd98f00b204e9800998ecf8427e", "T1026.pdb:md5,d41d8cd98f00b204e9800998ecf8427e", - "test_LDDT.html:md5,d41d8cd98f00b204e9800998ecf8427e", - "test_alphafold2_report.html:md5,d41d8cd98f00b204e9800998ecf8427e", - "test_seq_coverage.png:md5,d41d8cd98f00b204e9800998ecf8427e" + "test_alphafold2_report.html:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "meta": { "nf-test": "0.9.3", - "nextflow": "25.10.2" + "nextflow": "25.10.4" }, - "timestamp": "2026-01-13T14:39:38.718156" + "timestamp": "2026-02-12T11:20:57.334392" } } \ No newline at end of file diff --git a/tests/split_fasta.nf.test.snap b/tests/split_fasta.nf.test.snap index fb154701..d60e412b 100644 --- a/tests/split_fasta.nf.test.snap +++ b/tests/split_fasta.nf.test.snap @@ -39,10 +39,6 @@ "colabfold/top_ranked_structures", "colabfold/top_ranked_structures/H1065_N4-Cytosine_Methyltransferase_Serratia_marcescens_subunit_1_127_residues.pdb", "colabfold/top_ranked_structures/H1065_N4-Cytosine_Methyltransferase_Serratia_marcescens_subunit_2_98_residues.pdb", - "generate", - "generate/test_LDDT.html", - "generate/test_alphafold2_report.html", - "generate/test_seq_coverage.png", "multifasta", "multifasta/input.csv", "multiqc", @@ -50,7 +46,9 @@ "multiqc/multiqc_plots", "multiqc/multiqc_report.html", "pipeline_info", - "pipeline_info/nf_core_proteinfold_software_mqc_versions.yml" + "pipeline_info/nf_core_proteinfold_software_mqc_versions.yml", + "reports", + "reports/test_alphafold2_report.html" ], [ "H1065_N4-Cytosine_Methyltransferase_Serratia_marcescens_subunit_1_127_residues_colabfold_msa.tsv:md5,d41d8cd98f00b204e9800998ecf8427e", @@ -63,16 +61,14 @@ "H1065_N4-Cytosine_Methyltransferase_Serratia_marcescens_subunit_2_98_residues_0_pae.tsv:md5,d41d8cd98f00b204e9800998ecf8427e", "H1065_N4-Cytosine_Methyltransferase_Serratia_marcescens_subunit_1_127_residues.pdb:md5,d41d8cd98f00b204e9800998ecf8427e", "H1065_N4-Cytosine_Methyltransferase_Serratia_marcescens_subunit_2_98_residues.pdb:md5,d41d8cd98f00b204e9800998ecf8427e", - "test_LDDT.html:md5,d41d8cd98f00b204e9800998ecf8427e", - "test_alphafold2_report.html:md5,d41d8cd98f00b204e9800998ecf8427e", - "test_seq_coverage.png:md5,d41d8cd98f00b204e9800998ecf8427e", - "input.csv:md5,d41d8cd98f00b204e9800998ecf8427e" + "input.csv:md5,d41d8cd98f00b204e9800998ecf8427e", + "test_alphafold2_report.html:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "meta": { - "nf-test": "0.9.2", - "nextflow": "25.10.3" + "nf-test": "0.9.3", + "nextflow": "25.10.4" }, - "timestamp": "2026-01-30T21:29:42.953076263" + "timestamp": "2026-02-12T11:33:41.854887" } } \ No newline at end of file From 588a90e2c34238dbae812a8485ec8a61058c4960 Mon Sep 17 00:00:00 2001 From: JoseEspinosa Date: Thu, 12 Feb 2026 11:52:26 +0100 Subject: [PATCH 12/13] Update changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index f43c0e93..dc3cc074 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -102,6 +102,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [[PR #462](https://github.com/nf-core/proteinfold/pulls/462)] - Update publishdir patterns for RoseTTAFold-All-Atom modules - [[PR #464](https://github.com/nf-core/proteinfold/pulls/454)] - Update publishdir patterns for Boltz module - [[PR #469](https://github.com/nf-core/proteinfold/pulls/454)] - HTML reports now in /reports output directory +- [[PR #468](https://github.com/nf-core/proteinfold/pulls/468)] - Update publishdir patterns for Alphafold3 module ### Parameters From 442f577ed9d8063bdec8a2e5b20ffde5ae785f08 Mon Sep 17 00:00:00 2001 From: Jose Espinosa-Carrasco Date: Thu, 12 Feb 2026 12:23:29 +0100 Subject: [PATCH 13/13] Apply suggestion from @vagkaratzas Co-authored-by: Evangelos Karatzas <32259775+vagkaratzas@users.noreply.github.com> --- modules/local/run_alphafold3/main.nf | 1 - 1 file changed, 1 deletion(-) diff --git a/modules/local/run_alphafold3/main.nf b/modules/local/run_alphafold3/main.nf index 1f097203..738465c7 100644 --- a/modules/local/run_alphafold3/main.nf +++ b/modules/local/run_alphafold3/main.nf @@ -2,7 +2,6 @@ * Run Alphafold3 */ process RUN_ALPHAFOLD3 { - tag "$meta.id" label 'process_medium' label 'process_gpu'