Getting Through the Noise in PPI Workflows
You start with two sequences. The goal is to predict how they dock together, what the interface looks like, and whether the predicted binding is structurally plausible. That sounds simpler than it is. The gap between a finished tutorial and your own result set is where most people drop off. I'll walk through a practical workflow using ZDOCK and PPD as the primary tools, because that stack is what actually works in my lab. It's not the only way. It's just the one where I've spent enough time to know the failure modes.
What Protein Protein Interaction Analysis Actually Produces
You get clusters of predicted poses. Each cluster has a centroid, a score, and an ensemble of conformations. The score alone means almost nothing without additional filtering. That's the first thing most papers don't emphasize enough. The top-scored pose in ZDOCK is frequently wrong. The top-ranked cluster often contains the correct answer, but you have to look at the whole cluster, not just its centroid. For docking itself, here's the pipeline I use. Download ZDOCK 3.0.2 from the Schueler-Furman lab page. The binary is straightforward. You also need PPD, a post-processing tool that takes ZDOCK output and adds interface-specific scoring. PPD is available from the same source. Don't skip PPD. ZDOCK scores are shape-based and favor large buried surface areas. They don't account for residue-specific chemistry at the interface. PPD adds that layer. Run ZDOCK with these parameters: a grid spacing of 0.5 Angstroms, six rotational steps, and a translational step of 1.0. That gives you roughly 1000–2000 conformers. Increasing the rotational sampling to 12 steps quadruples runtime for marginal gain. The default caps out at 5000 conformers in the final output, which is enough for clustering.
My typical command looks like this: zdock302 -p1 receptor.pdb -p2 ligand.pdb -o output.zdo -ds 0.5 -rs 6 -ts 1.0 -sc 5000 The output is a single file with all conformers. You pipe it into PPD:
Get the Full Details

ppd -i output.zdo -o output.ppd PPD generates interface contacts, buried surface area per cluster, and electrostatic contribution estimates. You sort by the PPD scoring function, not by ZDOCK's original score. The ordering changes significantly.
Where Beginners Go Wrong
The biggest mistake I see is trusting the ranked list at face value. ZDOCK and even PPD will give you a clean A–Z ranking. That ranking reflects docking score, not biological accuracy. The real validation comes from checking whether the predicted interface overlaps with known functional sites or mutational hotspots. If you have any experimental data—even a handful of alanine scanning mutations—superimpose those residues onto the top clusters and see whether they concentrate at the interface. They should. If they're scattered across the protein surface, your dock is wrong. A second mistake is ignoring flexibility. Rigid-body docking assumes both partners are static. Proteins move. Side chains rotate. Loop regions shift. When I docked the interaction between SHC1 and an activated EGFR fragment last year, the initial ZDOCK result placed the pY motif perfectly but the surrounding helix was misaligned by about 4 Angstroms. The fix was to run MODELLER to generate alternate conformations of the ligand loop, then re-dock each variant and merge the results. That took about twenty minutes on a single core and resolved the misplacement.
A Real Problem I Hit and How I Fixed It
I was analyzing a transient signaling complex where one partner has a long disordered region that becomes structured upon binding. The PDB had the unbound form. ZDOCK couldn't find anything convincing because the disordered tail was floppy in the input structure and didn't present a consistent surface for docking. The top clusters were all over the place. The workaround was to use trRosetta to predict the contact map of the complex, generate an initial ab initio model from those contacts, and then use that model as a repositioning constraint rather than the full dock. In practice, I ran ZDOCK with the -c option to use a center-of-mass constraint derived from the trRosetta model. This focused the sampling around a plausible interface region without forcing the final geometry. The result set was smaller but much more coherent. About 40 percent of the top 20 clusters had interfaces within 3 Angstroms of the expected binding site, compared to under 5 percent without the constraint. This is not a general solution. It only works when you have enough predictive signal to generate meaningful restraints. If the prediction is low confidence, you're just constraining noise.

Scoring and Interpretation
ZDOCK uses an implicit scoring function that combines shape complementarity, desolvation, and electrostatics. The weights are fixed. They work well for many systems but fail on ones where electrostatics dominate, like some kinase–substrate pairs. In those cases, the top hits are wrong because the shape fit is poor even though the binding is real and charge-driven. PPD helps because it calculates a pairwise atomic potential that emphasizes interface residue contacts. But even PPD struggles with diffuse interfaces that lack clear hydrophobic cores. If your predicted interface is mostly polar and spread across a broad surface, the scoring functions lose discrimination. There's no perfect fix for this. You can try FireDock for refinement, which does a limited energy minimization with explicit solvation and side-chain optimization. It usually improves RMSD by 1–2 Angstroms on good starts but can't rescue bad ones.
Data Quality and Preparation
The single most impactful step before docking is cleaning the structures. Remove all water molecules. Remove heteroatoms that aren't part of the protein chain, unless they're known cofactors critical for binding. Check for missing residues at the termini and in loops. A missing loop at the interface can shift the entire predicted pose by several Angstroms because the surface geometry is incomplete. I run Reduce to add hydrogens and flip amides, then minimize the structure briefly with steepest descent—ten steps is enough to remove clashes without moving atoms significantly. For the receptor, I also check whether the biologically relevant oligomeric state matches what's in the PDB. Some entries are monomers when the native complex is a dimer. Docking to the wrong oligomeric state gives you binding sites that don't exist in reality. The Biological Assembly field in the PDB entry is your guide, but even that is occasionally wrong. Cross-reference with PDB-101 or UniProt if the symmetry looks suspicious.
Validation Without Experimental Data
If you don't have mutagenesis data or a co-crystal structure, use structural metrics. Look at buried surface area. A real protein interface typically buries between 800 and 2000 square Angstroms. Interfaces significantly below that range are usually false positives. Look at shape complementarity scores. Values above 0.6 are generally meaningful. Look at the consistency across clusters. If the top five clusters agree on the orientation within 2 Angstroms RMSD, that's a good sign. If they're all different, you're sampling noise. For large complexes or when you need higher resolution, HADDOCK is the next step. It's slower—hours instead of minutes—and requires you to define ambiguous interaction restraints, which means you need some prior knowledge about the interface. But it handles flexibility better and gives you a more realistic energy landscape. For purely computational screening where speed matters, ClusPro is a reasonable alternative. It automates the ZDOCK-style pipeline and adds its own clustering and scoring on top. The results are comparable but less customizable. There's also AlphaFold-Multimer for complexes where one partner is well-characterized and the other is homologous to known structures. It's fast and often accurate for stable complexes, but it struggles with transient interactions and conformational changes. I've seen it nail some interfaces and completely miss others that ZDOCK got right. Use both and compare.

Bottom Line
Protein Protein Interaction Analysis through rigid-body docking is a starting point, not an endpoint. The tools are mature enough to give you hypotheses. They're not reliable enough to give you conclusions without experimental support. The workflow I described gets you from two PDB files to a set of ranked predictions in under an hour on a desktop machine. The next step is always validation, and that step depends entirely on what data you have access to.