You are here

Introducing N/C-terminal residues to a pose

3 posts / 0 new
Last post
Introducing N/C-terminal residues to a pose

Hello everyone,

I work with a protein where the crystal structure does not include the first 14 amino acids, which are intrinsically disordered.

I would like to add the missing 14 residues using PyRosetta, and I have therefore looked into the FAQ and tried to find the relevant methods in the documentation.  After some considerations I have come up with strategy:

  • Build a pose of the missing residues (a peptide) from the sequence (pose_from_sequence), and then align it to roughly overlap with the N-terminal of the crystal structure.
  • From a pose of the MX-structure (MX), I can can extract one residue at a time (aa15 = MX.residue(1)), so that I have an instance of the residue object. I am not sure whether I actually produce a copy by the command or simply points to it, but type(aa15) produces ‘pyrosetta.rosetta.core.conformation.Residue’
  • Using the pose.append_residue_by_bond, I would then add one residue from the MX-pose to the peptide pose. (There is no prepend_residue… , so I have to append to the peptide)
  • The peptide I have prepended to the MX structure is just a straight line, so using the various movers in Pyrosetta, I will vary phi/psi angles, minimize etc., to get an ensemble of conformations of the N-terminal.


I note, that I before attempting above, I have changed seqpos of the residues in the MX-pose, so that the first sequence position is 15. This is to avoid two residues having the same sequence position.

When I try to add the first residue from MX-pose to the peptide pose, I get the following error:


num_apo = len(apo.sequence())
test = Pose()

for num in range(1,num_apo):
    aa = apo.residue(num) # apo is the MX-pose


Traceback (most recent call last):

  File "<ipython-input-76-fe3dd8794a99>", line 7, in <module>



File: /Volumes/MacintoshHD3/benchmark/W.fujii/rosetta.Fujii/_commits_/main/source/src/core/conformation/

Can't create a polymer bond after residue 15 due to incompatible type: ARG:CtermProteinFull


After some googling, I found the ‘mutate_residue’ method from pyrosetta.toolbox. But adding a step that tries to change the type of residue 14 of the peptide pose from ‘ARG:CtermProteinFull’ to simply ‘ARG’, have not worked – the type remains ‘ARG:CtermProteinFull’.

I am running out of ideas of how to add the missing residues, can someone suggest fixes to my current approach or suggest another way to add N -or C-terminal residues to a pose? It would be greatly appreciated :)

Kind regards,



Python: 3.6

Pyrosetta: PyRosetta4.Release.python36.mac 2018.24+release

Post Situation: 
Thu, 2018-08-23 06:09

The problem is that the termini have "variants" - the NTermProteinFull and CTermProteinFull you are having problems with.

One solution is to remove the variants.  I don't know the name of the function, it's probably remove_variants or similar.  You'll definitely need to do this on the protein side for the first addition.

It looks like your problem is on the PEPTIDE side.  You can fix that by just not making the peptide pose at all - just make Residue objects individually as you need them and add them to your Pose. When you make a naked Residue it will probably have no variants. 

Thu, 2018-08-23 08:59

Hello smlewis,

Thanks for your reply :)

my reason for creating the peptide to begin with was to make sure that I had the needed amino acids in the form of pyrosetta residue type (‘pyrosetta.rosetta.core.conformation.Residue’), whith coordinates and angles that make sense. I am sure that there is a method exposed for creating the residues individually with reasonable phi/psi/chi angles,  but I am still new to pyrosetta, so thought of it as a short cut.

In the end, I learned that I could just add the residues in pymol and import the full length PDB in pyrosetta for subsequent modeling. This is by far the easiest :)

Kind regards,


Thu, 2018-08-30 03:57