PPIFlow-Pipeline is a unified, parallelizable, and resumable CLI pipeline for PPIFlow. This fork supports binder, antibody, and VHH protocols.
- GPU(s): at least one CUDA GPU.
- Files you must supply:
- A target PDB file
- PPIFlow checkpoints (
binder.ckpt,antibody.ckpt,nanobody.ckpt,monomer.ckpt): see the upstream PPIFlow release instructions - AlphaFold 3 weights (
af3.bin.zst): follow the AlphaFold 3 / AF3Score instructions for obtaining model weights - (Optional) AlphaFold 3 database directory (for AF3Score inference)
Show the 16 pipeline steps
| Step | What it does |
|---|---|
gen |
Generate backbone conformations with flow matching |
seq1 |
Round-1 sequence design (ProteinMPNN / AbMPNN) |
flowpacker1 |
Side-chain packing (FlowPacker) |
af3score1 |
Round-1 scoring (AlphaFold 3 / AF3Score) |
rosetta_interface |
Rosetta interface energy analysis |
interface_enrich |
Extract enriched interface positions |
partial |
Partial-flow refinement |
seq2 |
Round-2 sequence design |
flowpacker2 |
Round-2 side-chain packing |
af3score2 |
Round-2 scoring |
relax |
Rosetta relaxation |
rosetta_interface2 |
Post-relax Rosetta interface analysis |
af3_refold |
AF3 refolding validation |
dockq |
DockQ structural quality |
rank_features |
Collect ranking features |
rank_finalize |
Produce ranked results |
For step-by-step details (inputs/outputs and per-step configs), see documentation/pipeline_steps.md.
Clone this repo:
git clone https://github.com/cytokineking/PPIFlow-Pipeline
cd PPIFlow-PipelineRun the installer:
./install_ppiflow.sh \
--af3-weights-path /path/to/af3.bin.zst \
--ppiflow-checkpoints-path /path/to/ppiflow_checkpointsActivate:
source ./env.sh
conda activate ppiflowInstaller notes:
- No conda? Add
--install-conda(installs Miniforge). - Fresh Ubuntu/Debian node? Add
--install-os-deps(runsapt-get). - To skip writing
env.sh:--no-write-env.
We bundle a small target PDB (examples/targets/PDL1.pdb) plus runnable example YAMLs so you can validate installation + tool wiring end-to-end.
Binder:
python ppiflow.py pipeline --input examples/pdl1_binder.yaml --output runs/example_pdl1_binderVHH:
python ppiflow.py pipeline --input examples/pdl1_vhh.yaml --output runs/example_pdl1_vhhAntibody (scFv):
python ppiflow.py pipeline --input examples/pdl1_antibody.yaml --output runs/example_pdl1_antibodyThese examples are intentionally small (samples_per_target: 10). They are for validating that the pipeline runs, not for producing high-quality designs.
See examples/README.md for details.
- Protocols:
binderdesigns a de novo binder chain;vhhdesigns a nanobody (single heavy chain);antibodydesigns an scFv (heavy + light). samples_per_target: number of backbones to generate. The PPIFlow authors recommend ~20k+ for serious production runs.target_chains: the chain ID(s) in the target PDB file to include in the design process. Unselected chains will be ignored.- Multi-chain targets: if you provide multiple target chains, the pipeline concatenates them into a single gapped internal target chain
Bduringconfigure. Hotspots are specified on the original target chain IDs/residue numbers and then mapped onto the concatenated internal chainB. - Hotspots syntax: Specify hotspot for binder/VHH/antibody targeting. Chain ID is required. Examples:
A(whole chain),A56(single residue),A56-70(range),A3,A5-25,B72(mixed list). Hotspots use chain IDs/residue numbers from your input PDB; they are mapped to the internal concatenated target chainBduringconfigure. - Chain conventions: Irrespective of the input PDB chain IDs, PPIflow will remap them to the following internal chain IDs:
- Binder/VHH: binder is
A, target isB - Antibody: heavy is
A, light isC, target isB
- Binder/VHH: binder is
- Framework chain IDs:
framework.heavy_chain/framework.light_chainshould match the chain IDs in the framework PDB you provide (many scFv frameworks areA/B). Duringconfigure, PPIFlow rewrites framework chains to the internal conventions (heavyA, lightC).
Run the CLI wizard to be prompted for all required fields.
python ppiflow.py wizardStart from one of:
assets/examples/binder_minimal.yamlassets/examples/vhh_minimal.yamlassets/examples/antibody_minimal.yaml
Run:
python ppiflow.py pipeline --input /path/to/design.yaml --output /path/to/out_dirpython ppiflow.py pipeline \
--protocol binder \
--name my_first_binder \
--target_pdb /path/to/target.pdb \
--target_chains A \
--binder_length 75-90 \
--hotspots A56 \
--output /path/to/out_dir \
--samples_per_target 10For antibody/VHH CLI-only required flags, see documentation/cli_reference.md.
Multi-GPU:
python ppiflow.py pipeline --input design.yaml --output out_dir --num-devices allPin to specific GPUs:
python ppiflow.py pipeline --input design.yaml --output out_dir --devices 0,2,3Rosetta CPU workers (CPU-heavy steps):
python ppiflow.py execute --output out_dir --num-rosetta-workers 32Guideline: set --num-rosetta-workers to roughly your available CPU cores; a practical upper bound is around ~40 on many systems.
pipeline and execute use the orchestrator controller by default. Use --single-process to force the legacy single-process path for debugging/regression checks.
More details: documentation/scaling_and_orchestration.md.
Resume an interrupted run:
python ppiflow.py execute --output /path/to/out_dirMore recovery patterns: documentation/resume_and_recovery.md.
- Ranked results:
results/ - Step outputs / intermediates:
output/ - Logs:
logs/
Full layout reference: documentation/output_layout.md.
Bundled frameworks live in assets/frameworks/. For a copy/paste inventory (VHH + scFv) and the exact --framework_pdb/--cdr_length blocks, see documentation/frameworks.md.
steps.yaml not found: runpipeline(orconfigure) first.pipeline_state.json ... mismatch: use a new output directory or ensure tool paths/inputs match the original run.- Lock errors: use
--steal-lockif the old job is dead.
documentation/cli_reference.mddocumentation/frameworks.mddocumentation/pipeline_steps.mddocumentation/scaling_and_orchestration.mddocumentation/output_layout.mddocumentation/resume_and_recovery.mdexamples/README.md
The original PPIFlow code is licensed under an Attribution-NonCommercial-ShareAlike 4.0 International license. This pipeline is licensed under the same license to respect the upstream repository.
