BindCraft Workflow

BindCraft workflow

Parallel BindCraft execution for protein binder design across multiple GPUs.

Overview

The --method bindcraft workflow runs BindCraft trajectories in parallel across multiple GPUs - ideal for HPC clusters or multi-GPU workstations.

Key Differences

Unlike a 'vanilla' BindCraft run which runs on a single GPU indefinitely until finding N accepted designs, this pipeline:

  • Runs a fixed number of trajectories (--bindcraft_n_traj)
  • Stops when complete (predictable runtime)
  • Parallelizes across available GPUs
  • Outputs an HTML summary report

If you want to generate a specific number of accepted designs, we suggest running a small number of trajectories (--bindcraft_n_traj 100 or --bindcraft_n_traj 300) to assess the acceptance rate, then knowing the ratio of accepted designs to total trajectories, do a larger run to generate (approximately) the desired number of accepted designs.

Command-line Options

See available options with --method bindcraft --help:

nextflow run Australian-Protein-Design-Initiative/nf-binder-design \
  --method bindcraft --help

Example Usage

#!/bin/bash

DATESTAMP=$(date +%Y%m%d_%H%M%S)

nextflow run Australian-Protein-Design-Initiative/nf-binder-design \
  --method bindcraft \
  --input_pdb 'input/PDL1.pdb' \
  --outdir results \
  --target_chains "A" \
  --hotspot_res "A56,A125" \
  --hotspot_subsample 0.5 \
  --binder_length_range "55-120" \
  --bindcraft_n_traj 2 \
  --bindcraft_batch_size 1 \
  --bindcraft_advanced_settings_preset "default_4stage_multimer" \
  --bindcraft_filters_preset "default_filters" \
  -profile local \
  -resume \
  -with-report results/logs/report_${DATESTAMP}.html \
  -with-trace results/logs/trace_${DATESTAMP}.txt

For running on SLURM, you can use the -profile slurm flag instead of -profile local, with --slurm_account=xxYY and the appropriate -c site-specific configuration file (refer to and adapt from the rfdiffusion example).

Key Parameters

Flag Description
--input_pdb Target protein structure
--target_chains Target chain IDs (comma-separated)
--hotspot_res Hotspot residues (comma-separated)
--hotspot_subsample Random proportion of hotspot residues per design (explores hotspot selection)
--binder_length_range Range of binder lengths to design
--bindcraft_n_traj Number of trajectories to run
--bindcraft_batch_size Number of trajectories per batch
--gpu_devices Specify multiple GPUs, e.g., --gpu_devices=0,1 — use only for -profile local

BindCraft Presets

Advanced Settings Presets

Flag Description
--bindcraft_advanced_settings_preset Use a preset from settings_advanced (without .json extension)

Keep in mind, the experimental success rate of the advanced presets may not have been as rigorously validated as the default4stage_multimer preset. Caveat emptor.

Filter Presets

Flag Description
--bindcraft_filters_preset Use filter settings presets from settings_filters (without .json extension). In most cases, it's probably best to stick with the default.

Output Structure

Results are saved to --outdir in the bindcraft/ subdirectory:

── bindcraft
│   ├── accepted
│   │   └── results
│   │       └── Accepted
│   │           ├── bindcraft_design_1_l57_s942028_mpnn6_model1.pdb
│   │           └── bindcraft_design_1_l57_s942028_mpnn8_model2.pdb
│   ├── batches
│   │   ├── 0
│   │   │   └── results
│   │   │       ├── failure_csv.csv
│   │   │       ├── final_design_stats.csv
│   │   │       ├── mpnn_design_stats.csv
│   │   │       ├── Trajectory
│   │   │       └── trajectory_stats.csv
│   │   └── 1
│   │       └── results
│   │           ├── Accepted
│   │           ├── failure_csv.csv
│   │           ├── final_design_stats.csv
│   │           ├── MPNN
│   │           ├── mpnn_design_stats.csv
│   │           ├── Rejected
│   │           ├── Trajectory
│   │           └── trajectory_stats.csv
│   ├── bindcraft_report.html
│   ├── failure_csv.csv
│   ├── final_design_stats.csv
│   ├── mpnn_design_stats.csv
│   └── trajectory_stats.csv
└── logs
    ├── report_20250725_084959.html
    ├── trace_20250725_084959.txt

A summary report is generated as bindcraft_report.html.

FoldSeek Structural Search (Optional)

After BindCraft completes, you can optionally run FoldSeek structural similarity search on accepted designs. The binder chain is automatically extracted from each accepted complex — only the binder is searched, not the full target–binder complex.

FoldSeek summary results are output to {outdir}/foldseek/{database_name}/. See FoldSeek output format for details.

Enabling FoldSeek

Add --do_foldseek to your bindcraft command:

nextflow run main.nf --method bindcraft \
  --input_pdb target.pdb --target_chains A \
  --do_foldseek

FoldSeek Flags

Flag Default Description
--do_foldseek false Enable FoldSeek search on accepted designs

All common --foldseek_* flags (database, search mode, output options, CATH annotation) are documented in the FoldSeek subworkflow docs.

Examples

The examples/ directory contains complete working examples for BindCraft workflows:

  • examples/pdl1-bindcraft: PDL1 binder example from the BindCraft repository
  • examples/egfr-bindcraft: an EGFR binder design example
  • examples/mdm2-bindcraft-peptide - peptide binder design for MDM2, based on Filus et al, 2025

See the examples/README.md for details.