Currently, I am facing such a question: how to predict one connected protein structures from two separate known structures?

It should be different from the protein-protein docking method, which is non-covalent interactions. My question is that the two proteins should "contently" link together.

Any suggestions are appreciated.

  • $\begingroup$ MODELLER can do this as well. $\endgroup$ – jgreener Jul 6 '20 at 10:42

There are two approaches here.


If domain A and B of your protein interact with each other physiologically, then you need to protein-protein docking. This is not too straightforward as protein are flexible.

Several online servers exists such as Haddock and include ClusPro, which use more traditional approaches. While the online server DEMO (I-Tasser group) does a structural homology based search and a final MD based repacking to better minimise the structures (no protein-protein docking).

Many of these work by magic as far as the user is concerned. But understanding what is going on is really important, even if it is overly laborious. When you don't know where a protein goes, it's called blind or global docking, which is computational expensive and so imprecise that the effort required to prove it is correct for peer-review is too steep for it to be useful. If you are doing local docking it is okay, which may be the case here depending on the linker. Specifically, you need to generate more 'decoys' (potential poses) the more unsure you are: tens of thousands or more. Then you have find clusters and see how each scores following more precise refinement. As an example of a tediously and manually set up run, Rosetta has several docking protocols, which explain the steps required —of note are the many judgement calls, such as in the local refinement, where one has to judge whether setting -dock_pert 3 8 (3 Å and 8° perturbation) is too strict etc.

Pretty picture

The protein-protein docking approach will result in a globular protein, which may be incorrect and majorly is not great for pictures.

If you want a pretty picture of two or more domains most likely you would want them placed like beads on a string. If you have a linker that is not solved the recommended distance to space them is $(3.5 N_{missing})^{0.5}$ Å —unfortunately I do not know where this lore comes from. If it helps I wrote a script that does this in automatic but manual placement works best.


In the situation you have a good confidence about how the two parts fit together (or have placed them like beads on a string), you may want to add linkers. If you absolutely don't care about correct bond topology here is a blog post on how to join bits (shoddily) with PyMOL and here is one to do it properly with Rosetta or Pyrosetta.

If one wanted to do a better job, one tool to use is Rosetta remodel, which has a bit of a learning curve, but is very powerful for protein design. This requires the PDB to be on a single chain (pymol alter command, followed by create will do the trick: more here) and actually the amino acids to not have gaps —PDB number being the same as the pose numbering. Rosetta gives better results if the poses are energy minimised, but for this it does not matter too much. Then a "blueprint file" formatted as discussed in the documentation. Briefly, in a way that residues left alone are in the form 1 M . (where residue 1 is a methionine), while the residues before and after the insertion are like 100 D L PIKAA D (meaning D100 is changed to a Asp in loop SS; not actual numbers or residue), while between entries are added 0 X L PIKAA G etc. To model loops, -generic_aa G is a good option as this tells the default rough fitting (centroid mode) to use glycine and not valine as generic residue. The top pose will actually not have a superb score, so a 3 (regular) or more cycles (15 thorough) with Rosetta Relax application either of the whole protein or with a movemap specific to the linker, may be done.

There actually is an option in Rosetta remodel to have a domain insertion, i.e. it would swing around like a medieval flail. However, it will not repack and therefore properly dock so this option is a bad idea for this specific application.

  • $\begingroup$ thanks for your suggestion. I will learn that. Besides protein-protein docking, I want to physically connect two protein together. For example, I have known protein A structure, and protein B structure. Then I would like to connect the C terminal of protein A and N terminal of protein B. Then it will generate one final protein. If I get that connected protein, the next coming question is how to optimize the big structure to make it low-energy conformation because the connected structure may include clash residues or bad conformations? Thank you. $\endgroup$ – Moing Gude Apr 27 '20 at 16:39
  • $\begingroup$ I have expanded the answer, but it is very advisable finding out where the second protein goes first before adding the linkers. If the docking is flexible interacting sidechains will be repacked to be energy minimised anyway. The length of a straight amino acid (say βsheet) is about 3.5Å, so if your linker were 4 residues long, you'd have a maximum reach of 14Å, which is a lot, hence why local docking first is a better option. $\endgroup$ – Matteo Ferla Apr 27 '20 at 17:14
  • $\begingroup$ Thanks so much for the explanation, which is very helpful. I will have a look at Rosetta remodel related functions. $\endgroup$ – Moing Gude Apr 28 '20 at 0:08

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.