BindCraft2: campaign-based binder design suite

BindCraft2 evovles from the original tool BindCraft, transitioning from a single-target miniprotein tool into a highly versatile, campaign-based binder design suite. BindCraft2 introduces robust multi-target optimization. It allows researchers to design a single binder capable of cross-reacting across multiple species (e.g., human and mouse paralogs) or simultaneously engaging several entirely divergent proteins. It can also target unstructured, intrinsically disordered regions or linear peptides to help stabilize them.

References:

Documentation
Important Notes

Interactive job
Interactive jobs should be used for debugging, graphics, or applications that cannot be run as batch jobs.

Allocate an interactive session and run the program. Sample session:

[user@biowulf]$ sinteractive --gres=gpu:l40:1,lscratch:10 --mem=24g -c16
[user@cn0231 ~]$ module load bindcraft2 
[+] Loading bindcraft2 1.0.3 on cn1067 
[+] Loading singularity  4.3.7  on cn1067

[user@cn0231 ~]$ bindcraft -h
usage: bindcraft design  [--core NAME] [--modality NAME[,NAME]] [--humanize ...] [--metadata ] [--set KEY=VALUE]...
       bindcraft design --list-targets | --list-modalities | --list-properties | --list-core | --list-settings
       bindcraft score  [--binder CHAINS] [--target CHAINS] [--hotspots SPANS]
       bindcraft rank  [--on METRIC] [--list]
       bindcraft filter  [--where METRIC>=VALUE]... [--filters FILE] [--list]
       bindcraft campaign_output [ ...]
       bindcraft archive|unarchive 
       bindcraft fetch-weights

bindcraft design -h names every binder format and design property this package ships.

[user@cn0231 ~]$ cp $BINDCRAFT2_TEST_DATA/pdl1.json ./
[user@cn0231 ~]$ vi pdl1.json
{
  "target": "hPDL1",
  "modality": "binder",
  "campaign_name": "pdl1",
  "number_of_final_designs": 10,
  "project_folder": "results/pdl1"
}

[user@cn0231 ~]$ bindcraft design pdl1.json
compiled graphs cached in /vf/users/yangr3/issue_test/test/results/pdl1/compile_cache/NVIDIA_L40S
campaign preflight: design model_1_multimer_v3,model_2_multimer_v3,model_3_multimer_v3,model_4_multimer_v3,model_5_multimer_v3 | validation model_1_ptm,model_2_ptm | redesign negative/v_48_020 | targets hPDL1 | output results/pdl1
campaign metadata: BindCraft 2 v1.0.1 | settings /vf/users/yangr3/issue_test/test/pdl1.json | written results/pdl1/campaign_metadata.json
campaign fan-out: 2 design workers on GPUs 0,0
worker=0 gpu=0 draws 57 binder lengths from 60 to 180, folded at 320 padded residues at 14.6 GB
worker=1 gpu=0 draws 64 binder lengths from 65 to 160, folded at 288 padded residues at 13.1 GB
worker=0 gpu=0 log=results/pdl1/workers/worker_00_gpu_0.log
worker=1 gpu=0 log=results/pdl1/workers/worker_01_gpu_0.log

BindCraft 2 v1.0.1
campaign pdl1
binder length 60 to 180, drawn per trajectory
target hPDL1 (target) | 115 residues | hotspots 54,56,66,115
losses binder_contacts=1.0 binder_helicity=-0.3 binder_pae=0.4 compactness=0.5 interface_contacts=1.0 interface_pae=0.1 iptm_loss=0.05 plddt_loss=0.1
filters Backbone_Clashes <= 0, Binder_RMSD <= 3.5, Interface_Residues >= 7, Unbound_Binder_pLDDT >= 0.7, i_pAE <= 0.35, i_pTM >= 0.7, pTM >= 0.55
results results/pdl1 | 3_Ranked/!_Ranked.csv rewritten as each design is accepted | summary.csv written when the campaign ends
...

Results are written in folder results/pdl1 End the interactive session:
[user@cn0231 ~]$ exit
salloc.exe: Relinquishing job allocation 46116226
[user@biowulf ~]$
Batch job
Most jobs should be run as batch jobs.

Create a batch script file (e.g. bindcraft2.sh). For example:

#!/bin/bash
module load bindcraft2
cp $BINDCRAFT2_TEST_DATA/pdl1.json .

bindcraft design pdl1.json

Submit this job using the Slurm sbatch command.

sbatch --partition=gpu --time=24:00:00 --cpus-per-task=16 --mem=24g --gres=gpu:l40:1,lscratch:10 bindcraft2.sh