Proper use of Ambiguous and Unambiguous restraints in protein-peptide docking

Hello everyone,

I would like your suggestions about the following matter. I am trying different configurations of the docking protocol (using local HADDOCK 2.4), my system consists of a small cyclic peptide and a (computationally predicted) binding site of a protein. There are no available experimental interactions. Based on several sources and material I have gone through, I have come to the conclusion that the files needed for docking should be created as follows:
1. TBL file for the ambiguous restraints:
A. Binding site: Active (all amino acids)
B. Peptide: Passive (all amino acids)

2. TBL file for the unambiguous restraints:
A. Binding site: Passive (all amino acids)
B. Peptide: Active (all amino acids)

My questions:

  1. Do you have any other suggestion for setting up these files?
  2. Should I stop the ambiguous restraints being used in it1? If so, what parameter in the CNS file controls whether the TBL file for the ambiguous restraints will be enforced or not during it1?


The definition of the ambiguous restraints is correct, especially if you have no information about the binding on the peptide. For the unambiguous restraints there is a bit of confusion though: these restraints are supposed to keep two separate chains of a molecule together, so in principle you do not need them on the protein side (if it’s a single domain with no missing residues). For the peptide, you should enforce an unambiguous restraint to keep the termini together (please see Cyclization and docking protocol for cyclic peptide–protein modeling using HADDOCK2. 4)

to reply to your questions:

  1. you can setup ambiguous (and unambiguous) restraints using the server. Alternatively you can use for ambiguous restraints and haddock-tools/ at master · haddocking/haddock-tools · GitHub for unambiguous restraints
  2. no, the restraints should be also enforced at it1 level. as for the parameter names please check Tutorial describing the use of a local version of HADDOCK2.4 – Bonvin Lab


Actually if your input peptide is already cyclic haddock should recognize it (a parameter to define in run.cns) provide the distance between the N and C ter is short enough. In that case no unambiguous restraint between the termini is needed

PS: and I would only define the protein predicted binding site as active and the peptide as passive (as ambig restraints) - I.e. no restraints with the peptide as active

Thank you very much for the clarifications and suggestions!

I have defined the AIRs setting the amino acids of the binding site of the protein as active (and no passive amino acids for the protein) and all the amino acids of the cyclic peptide as passive.

For unambiguous restraints I now set only the restraints between the two chains of the protein like this:
assign (segid A and resi 18 and name CA) (segid A and resi 176 and name CA) 32.109 0.0 0.0
assign (segid A and resi 14 and name CA) (segid A and resi 300 and name CA) 19.120 0.0 0.0

In the results, the peptide is too far from the protein and the best HADDOCK score is around -1, when in previous local runs (with more unambiguous restraints) was in the range of (-150)-(-120) for different peptides. Also, when I was using the web server for docking with the same peptides (with all options in default), the scores were around -70.

I have checked all the related papers and tutorials and I cannot understand if I have totally missed some parameters that need to be changed in the local run or something else is wrong.

P.S: I have attached the tbl files for the restraints and the run.cns file
haddock_propep_unambiguous.tbl (182 Bytes)
haddock_propep_ambiguous.tbl (5.0 KB)

run.cns.txt (150.6 KB)

Check carefully the chain/segIDs of your protein and peptide and the way you defined your restraints.

Something must be wrong somewhere (i.e. the ambiguous restraints are probably wrong or not read)

To check if something is wrong, I uploaded just the pdb files and the restraints tbl I use locally in the online server. The results were normal, the peptide was docked with a negative score :woman_shrugging:t2:

I compared the run.cns options with parameters from the web and the only (found) differences are these:

“cool1_steps”: 2000 - Different: 500
“cool2_steps”: 4000 - Different: 1000
“cool3_steps”: 4000 - Different: 1000
“em_it0”: false - Different: true
“em_it1”: false - Different: true
“em_itw”: false - Different: true
“hbond_firstit”: 0 - Different: 1
“create_narestraints”: true - Not Found
“em_resolution”: null - Different: 10.0
“initiosteps”: 2000 - Different

Could something of the above be the problem?

job_params_end.json (207 KB)
run.cns.txt (150.6 KB)

Check again the segID of your input models, and the run.param file you are defining. Any typo there?