Skip to content
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- [[PR #451](https://github.com/nf-core/proteinfold/pulls/451)] - Remove af2 multimer padding from msa plots.
- [[#417](https://github.com/nf-core/proteinfold/issues/417)] - Add `boltz_use_kernels` parameter to enable/disable using optimized Triton-based CUDA kernels CUDA kernels for Boltz inference.
- [[#417](https://github.com/nf-core/proteinfold/issues/417)] - Handle incompatible CUDA kernel errors in Boltz by automatically retrying with `--no_kernels` false.
- [[PR #454](https://github.com/nf-core/proteinfold/pulls/454)] - Update publishdir patterns for alphafold2 modules

### Parameters

Expand Down
47 changes: 37 additions & 10 deletions conf/modules_alphafold2.config
Original file line number Diff line number Diff line change
Expand Up @@ -60,11 +60,15 @@ process {
saveAs: { filename ->
if(filename.endsWith('_pae.tsv')){
"paes/$filename"
} else if(filename.equals('versions.yml')){
null
} else { filename }
},
pattern: '*.*'
pattern: '*.tsv'
],
[
enabled: params.keep_raw,
Comment thread
tlitfin marked this conversation as resolved.
Outdated
Comment thread
tlitfin marked this conversation as resolved.
Outdated
path: { "${params.outdir}/alphafold2/${params.alphafold2_mode}/${meta.id}/" },
mode: 'copy',
pattern: 'raw/**'
],
[
path: { "${params.outdir}/alphafold2/${params.alphafold2_mode}/top_ranked_structures" },
Expand All @@ -80,27 +84,50 @@ process {
withName: 'RUN_ALPHAFOLD2_MSA' {
ext.args = params.alphafold2_max_template_date ? "--max_template_date ${params.alphafold2_max_template_date}" : ''
publishDir = [
path: { "${params.outdir}/alphafold2/${params.alphafold2_mode}" },
mode: 'copy',
saveAs: { filename -> filename.equals('versions.yml') ? null : filename }
[
path: { "${params.outdir}/alphafold2/${params.alphafold2_mode}/${meta.id}/msa/" },
mode: 'copy',
pattern: 'raw/*.*',
saveAs: { filename ->
if(filename.equals('versions.yml')) {
null
} else {
filename.toString().replaceFirst(/^raw\//, '')
}
}
],
[
enabled: params.keep_raw,
Comment thread
tlitfin marked this conversation as resolved.
Outdated
path: { "${params.outdir}/alphafold2/${params.alphafold2_mode}/${meta.id}/raw/" },
mode: 'copy',
pattern: 'raw/msas/**',
saveAs: { filename -> filename.toString().replaceFirst(/^raw\//, '') }
]
]
}

withName: 'RUN_ALPHAFOLD2_PRED' {
accelerator = params.use_gpu? 1 : 0
ext.args = params.use_gpu ? '--use_gpu_relax=true' : '--use_gpu_relax=false'
ext.args = [
params.use_gpu ? '--use_gpu_relax=true' : '--use_gpu_relax=false',
params.alphafold2_random_seed ? "--random_seed=${params.alphafold2_random_seed}" : ''
].join(' ').trim()
publishDir = [
[
path: { "${params.outdir}/alphafold2/${params.alphafold2_mode}/${meta.id}" },
mode: 'copy',
saveAs: { filename ->
if(filename.endsWith('_pae.tsv')){
"paes/$filename"
} else if(filename.equals('versions.yml')){
null
} else { filename }
},
pattern: '*.*'
pattern: '*.tsv'
],
[
enabled: params.keep_raw,
Comment thread
tlitfin marked this conversation as resolved.
Outdated
path: { "${params.outdir}/alphafold2/${params.alphafold2_mode}/${meta.id}/" },
mode: 'copy',
pattern: 'raw/**'
],
[
path: { "${params.outdir}/alphafold2/${params.alphafold2_mode}/top_ranked_structures" },
Expand Down
17 changes: 9 additions & 8 deletions modules/local/run_alphafold2/main.nf
Original file line number Diff line number Diff line change
Expand Up @@ -26,9 +26,9 @@ process RUN_ALPHAFOLD2 {
path ('uniprot/*')

output:
path ("${fasta.baseName}*")
path ("raw/**") , emit: raw
tuple val(meta), path ("${meta.id}_alphafold2.pdb") , emit: top_ranked_pdb
tuple val(meta), path ("${fasta.baseName}/ranked*.pdb") , emit: pdb
tuple val(meta), path ("raw/ranked*.pdb") , emit: pdb
// TODO: re-label multiqc -> plddt so multiqc channel can take in all metrics
tuple val(meta), path ("${meta.id}_plddt.tsv") , emit: multiqc
tuple val(meta), path ("${meta.id}_alphafold2_msa.tsv") , emit: msa
Expand Down Expand Up @@ -82,6 +82,7 @@ process RUN_ALPHAFOLD2 {
--structs ${fasta.baseName}/ranked*.pdb

mv "${meta.id}_msa.tsv" "${meta.id}_alphafold2_msa.tsv"
mv "${fasta.baseName}" raw/
Comment thread
tlitfin marked this conversation as resolved.

cat <<-END_VERSIONS > versions.yml
"${task.process}":
Expand All @@ -102,12 +103,12 @@ process RUN_ALPHAFOLD2 {
touch "${meta.id}_0_pae.tsv"
touch "${meta.id}_ptm.tsv"
touch "${meta.id}_iptm.tsv"
mkdir "${fasta.baseName}"
touch "${fasta.baseName}/ranked_0.pdb"
touch "${fasta.baseName}/ranked_1.pdb"
touch "${fasta.baseName}/ranked_2.pdb"
touch "${fasta.baseName}/ranked_3.pdb"
touch "${fasta.baseName}/ranked_4.pdb"
mkdir "raw"
touch "raw/ranked_0.pdb"
touch "raw/ranked_1.pdb"
touch "raw/ranked_2.pdb"
touch "raw/ranked_3.pdb"
touch "raw/ranked_4.pdb"

cat <<-END_VERSIONS > versions.yml
"${task.process}":
Expand Down
13 changes: 8 additions & 5 deletions modules/local/run_alphafold2_msa/main.nf
Original file line number Diff line number Diff line change
Expand Up @@ -25,9 +25,9 @@ process RUN_ALPHAFOLD2_MSA {
path ('uniprot/*')

output:
path ("${fasta.baseName}*")
tuple val(meta), path ("${fasta.baseName}/features.pkl"), emit: features
path "versions.yml" , emit: versions
path ("raw/**") , emit: raw
tuple val(meta), path ("raw/features.pkl"), emit: features
path "versions.yml" , emit: versions

when:
task.ext.when == null || task.ext.when
Expand Down Expand Up @@ -64,6 +64,9 @@ process RUN_ALPHAFOLD2_MSA {
--obsolete_pdbs_path=./clean_obsolete.dat \
$args

# Can't use fasta.baseName to batch outputs in publishDir
mv "${fasta.baseName}" raw/

cat <<-END_VERSIONS > versions.yml
"${task.process}":
python: \$(python3 --version | sed 's/Python //g')
Expand All @@ -75,8 +78,8 @@ process RUN_ALPHAFOLD2_MSA {

stub:
"""
mkdir ./"${fasta.baseName}"
touch ./"${fasta.baseName}"/features.pkl
mkdir ./raw
touch ./raw/features.pkl

cat <<-END_VERSIONS > versions.yml
"${task.process}":
Expand Down
19 changes: 11 additions & 8 deletions modules/local/run_alphafold2_pred/main.nf
Original file line number Diff line number Diff line change
Expand Up @@ -24,9 +24,9 @@ process RUN_ALPHAFOLD2_PRED {
path ('uniprot/*')

output:
path ("${fasta.baseName}*")
path ("raw/**") , emit: raw
tuple val(meta), path ("${meta.id}_alphafold2.pdb") , emit: top_ranked_pdb
tuple val(meta), path ("${fasta.baseName}/ranked*.pdb") , emit: pdb
tuple val(meta), path ("raw/ranked*.pdb") , emit: pdb
tuple val(meta), path ("${meta.id}_alphafold2_msa.tsv") , emit: msa
// TODO: re-label multiqc -> plddt so multiqc channel can take in all metrics
tuple val(meta), path ("${meta.id}_plddt.tsv") , emit: multiqc
Expand Down Expand Up @@ -62,6 +62,9 @@ process RUN_ALPHAFOLD2_PRED {

mv "${meta.id}_msa.tsv" "${meta.id}_alphafold2_msa.tsv"

# Can't use fasta.baseName to batch outputs in publishDir
mv "${fasta.baseName}" raw/

cat <<-END_VERSIONS > versions.yml
"${task.process}":
python: \$(python3 --version | sed 's/Python //g')
Expand All @@ -79,12 +82,12 @@ process RUN_ALPHAFOLD2_PRED {
touch "${meta.id}_plddt.tsv"
touch "${meta.id}_alphafold2_msa.tsv"
touch "${meta.id}_0_pae.tsv"
mkdir "${fasta.baseName}"
touch "${fasta.baseName}/ranked_0.pdb"
touch "${fasta.baseName}/ranked_1.pdb"
touch "${fasta.baseName}/ranked_2.pdb"
touch "${fasta.baseName}/ranked_3.pdb"
touch "${fasta.baseName}/ranked_4.pdb"
mkdir "raw/"
touch "raw/ranked_0.pdb"
touch "raw/ranked_1.pdb"
touch "raw/ranked_2.pdb"
touch "raw/ranked_3.pdb"
touch "raw/ranked_4.pdb"

cat <<-END_VERSIONS > versions.yml
"${task.process}":
Expand Down
1 change: 1 addition & 0 deletions nextflow.config
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ params {
input = null
mode = 'alphafold2' // {alphafold2, colabfold, esmfold, rosettafold_all_atom, alphafold3, helixfold3, boltz, rosettafold2na}
use_gpu = false
keep_raw = false
Comment thread
tlitfin marked this conversation as resolved.
Outdated
Comment thread
tlitfin marked this conversation as resolved.
Outdated
split_fasta = false
db = null
full_dbs = false // true/false, globally sets full_dbs if not independently set
Expand Down
5 changes: 5 additions & 0 deletions nextflow_schema.json
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,11 @@
"description": "Run on CPUs (default) or GPUs",
"fa_icon": "fas fa-microchip"
},
"keep_raw": {
Comment thread
tlitfin marked this conversation as resolved.
Outdated
Comment thread
tlitfin marked this conversation as resolved.
Outdated
"type": "boolean",
"description": "Keep raw intermediate files",
"fa_icon": "fas fa-microchip"
},
"split_fasta": {
"type": "boolean",
"description": "Split input multi-fasta file in separated fasta files each of them containing one sequence to be folded",
Expand Down
32 changes: 3 additions & 29 deletions tests/alphafold2_download.nf.test.snap
Original file line number Diff line number Diff line change
Expand Up @@ -48,27 +48,13 @@
"alphafold2",
"alphafold2/standard",
"alphafold2/standard/T1024",
"alphafold2/standard/T1024/T1024.1",
"alphafold2/standard/T1024/T1024.1/ranked_0.pdb",
"alphafold2/standard/T1024/T1024.1/ranked_1.pdb",
"alphafold2/standard/T1024/T1024.1/ranked_2.pdb",
"alphafold2/standard/T1024/T1024.1/ranked_3.pdb",
"alphafold2/standard/T1024/T1024.1/ranked_4.pdb",
"alphafold2/standard/T1024/T1024_alphafold2.pdb",
"alphafold2/standard/T1024/T1024_alphafold2_msa.tsv",
"alphafold2/standard/T1024/T1024_iptm.tsv",
"alphafold2/standard/T1024/T1024_plddt.tsv",
"alphafold2/standard/T1024/T1024_ptm.tsv",
"alphafold2/standard/T1024/paes",
"alphafold2/standard/T1024/paes/T1024_0_pae.tsv",
"alphafold2/standard/T1026",
"alphafold2/standard/T1026/T1026.1",
"alphafold2/standard/T1026/T1026.1/ranked_0.pdb",
"alphafold2/standard/T1026/T1026.1/ranked_1.pdb",
"alphafold2/standard/T1026/T1026.1/ranked_2.pdb",
"alphafold2/standard/T1026/T1026.1/ranked_3.pdb",
"alphafold2/standard/T1026/T1026.1/ranked_4.pdb",
"alphafold2/standard/T1026/T1026_alphafold2.pdb",
"alphafold2/standard/T1026/T1026_alphafold2_msa.tsv",
"alphafold2/standard/T1026/T1026_iptm.tsv",
"alphafold2/standard/T1026/T1026_plddt.tsv",
Expand Down Expand Up @@ -109,23 +95,11 @@
"file.txt:md5,d41d8cd98f00b204e9800998ecf8427e"
],
"uniref90.fasta:md5,d41d8cd98f00b204e9800998ecf8427e",
"ranked_0.pdb:md5,d41d8cd98f00b204e9800998ecf8427e",
"ranked_1.pdb:md5,d41d8cd98f00b204e9800998ecf8427e",
"ranked_2.pdb:md5,d41d8cd98f00b204e9800998ecf8427e",
"ranked_3.pdb:md5,d41d8cd98f00b204e9800998ecf8427e",
"ranked_4.pdb:md5,d41d8cd98f00b204e9800998ecf8427e",
"T1024_alphafold2.pdb:md5,d41d8cd98f00b204e9800998ecf8427e",
"T1024_alphafold2_msa.tsv:md5,d41d8cd98f00b204e9800998ecf8427e",
"T1024_iptm.tsv:md5,d41d8cd98f00b204e9800998ecf8427e",
"T1024_plddt.tsv:md5,d41d8cd98f00b204e9800998ecf8427e",
"T1024_ptm.tsv:md5,d41d8cd98f00b204e9800998ecf8427e",
"T1024_0_pae.tsv:md5,d41d8cd98f00b204e9800998ecf8427e",
"ranked_0.pdb:md5,d41d8cd98f00b204e9800998ecf8427e",
"ranked_1.pdb:md5,d41d8cd98f00b204e9800998ecf8427e",
"ranked_2.pdb:md5,d41d8cd98f00b204e9800998ecf8427e",
"ranked_3.pdb:md5,d41d8cd98f00b204e9800998ecf8427e",
"ranked_4.pdb:md5,d41d8cd98f00b204e9800998ecf8427e",
"T1026_alphafold2.pdb:md5,d41d8cd98f00b204e9800998ecf8427e",
"T1026_alphafold2_msa.tsv:md5,d41d8cd98f00b204e9800998ecf8427e",
"T1026_iptm.tsv:md5,d41d8cd98f00b204e9800998ecf8427e",
"T1026_plddt.tsv:md5,d41d8cd98f00b204e9800998ecf8427e",
Expand All @@ -140,9 +114,9 @@
]
],
"meta": {
"nf-test": "0.9.3",
"nextflow": "25.10.2"
"nf-test": "0.9.2",
"nextflow": "25.10.3"
},
"timestamp": "2026-01-13T14:33:28.434588"
"timestamp": "2026-01-29T21:35:56.027817716"
}
}
44 changes: 9 additions & 35 deletions tests/alphafold2_split.nf.test.snap
Original file line number Diff line number Diff line change
Expand Up @@ -29,31 +29,17 @@
"alphafold2",
"alphafold2/split_msa_prediction",
"alphafold2/split_msa_prediction/T1024",
"alphafold2/split_msa_prediction/T1024.1",
"alphafold2/split_msa_prediction/T1024.1/features.pkl",
"alphafold2/split_msa_prediction/T1024/T1024.1",
"alphafold2/split_msa_prediction/T1024/T1024.1/ranked_0.pdb",
"alphafold2/split_msa_prediction/T1024/T1024.1/ranked_1.pdb",
"alphafold2/split_msa_prediction/T1024/T1024.1/ranked_2.pdb",
"alphafold2/split_msa_prediction/T1024/T1024.1/ranked_3.pdb",
"alphafold2/split_msa_prediction/T1024/T1024.1/ranked_4.pdb",
"alphafold2/split_msa_prediction/T1024/T1024_alphafold2.pdb",
"alphafold2/split_msa_prediction/T1024/T1024_alphafold2_msa.tsv",
"alphafold2/split_msa_prediction/T1024/T1024_plddt.tsv",
"alphafold2/split_msa_prediction/T1024/msa",
"alphafold2/split_msa_prediction/T1024/msa/features.pkl",
"alphafold2/split_msa_prediction/T1024/paes",
"alphafold2/split_msa_prediction/T1024/paes/T1024_0_pae.tsv",
"alphafold2/split_msa_prediction/T1026",
"alphafold2/split_msa_prediction/T1026.1",
"alphafold2/split_msa_prediction/T1026.1/features.pkl",
"alphafold2/split_msa_prediction/T1026/T1026.1",
"alphafold2/split_msa_prediction/T1026/T1026.1/ranked_0.pdb",
"alphafold2/split_msa_prediction/T1026/T1026.1/ranked_1.pdb",
"alphafold2/split_msa_prediction/T1026/T1026.1/ranked_2.pdb",
"alphafold2/split_msa_prediction/T1026/T1026.1/ranked_3.pdb",
"alphafold2/split_msa_prediction/T1026/T1026.1/ranked_4.pdb",
"alphafold2/split_msa_prediction/T1026/T1026_alphafold2.pdb",
"alphafold2/split_msa_prediction/T1026/T1026_alphafold2_msa.tsv",
"alphafold2/split_msa_prediction/T1026/T1026_plddt.tsv",
"alphafold2/split_msa_prediction/T1026/msa",
"alphafold2/split_msa_prediction/T1026/msa/features.pkl",
"alphafold2/split_msa_prediction/T1026/paes",
"alphafold2/split_msa_prediction/T1026/paes/T1026_0_pae.tsv",
"alphafold2/split_msa_prediction/top_ranked_structures",
Expand All @@ -71,25 +57,13 @@
"pipeline_info/nf_core_proteinfold_software_mqc_versions.yml"
],
[
"features.pkl:md5,d41d8cd98f00b204e9800998ecf8427e",
"ranked_0.pdb:md5,d41d8cd98f00b204e9800998ecf8427e",
"ranked_1.pdb:md5,d41d8cd98f00b204e9800998ecf8427e",
"ranked_2.pdb:md5,d41d8cd98f00b204e9800998ecf8427e",
"ranked_3.pdb:md5,d41d8cd98f00b204e9800998ecf8427e",
"ranked_4.pdb:md5,d41d8cd98f00b204e9800998ecf8427e",
"T1024_alphafold2.pdb:md5,d41d8cd98f00b204e9800998ecf8427e",
"T1024_alphafold2_msa.tsv:md5,d41d8cd98f00b204e9800998ecf8427e",
"T1024_plddt.tsv:md5,d41d8cd98f00b204e9800998ecf8427e",
"T1024_0_pae.tsv:md5,d41d8cd98f00b204e9800998ecf8427e",
"features.pkl:md5,d41d8cd98f00b204e9800998ecf8427e",
"ranked_0.pdb:md5,d41d8cd98f00b204e9800998ecf8427e",
"ranked_1.pdb:md5,d41d8cd98f00b204e9800998ecf8427e",
"ranked_2.pdb:md5,d41d8cd98f00b204e9800998ecf8427e",
"ranked_3.pdb:md5,d41d8cd98f00b204e9800998ecf8427e",
"ranked_4.pdb:md5,d41d8cd98f00b204e9800998ecf8427e",
"T1026_alphafold2.pdb:md5,d41d8cd98f00b204e9800998ecf8427e",
"T1024_0_pae.tsv:md5,d41d8cd98f00b204e9800998ecf8427e",
"T1026_alphafold2_msa.tsv:md5,d41d8cd98f00b204e9800998ecf8427e",
"T1026_plddt.tsv:md5,d41d8cd98f00b204e9800998ecf8427e",
"features.pkl:md5,d41d8cd98f00b204e9800998ecf8427e",
"T1026_0_pae.tsv:md5,d41d8cd98f00b204e9800998ecf8427e",
"T1024.pdb:md5,d41d8cd98f00b204e9800998ecf8427e",
"T1026.pdb:md5,d41d8cd98f00b204e9800998ecf8427e",
Expand All @@ -100,9 +74,9 @@
]
],
"meta": {
"nf-test": "0.9.3",
"nextflow": "25.10.2"
"nf-test": "0.9.2",
"nextflow": "25.10.3"
},
"timestamp": "2026-01-13T14:34:11.513463"
"timestamp": "2026-01-29T21:36:12.286799433"
}
}
Loading