Member Site › Forums › PyRosetta › PyRosetta – Scripts › Bug with make_pose_from_sequence when incorporating non-standard ResidueTypes in PyRosetta
- This topic has 5 replies, 3 voices, and was last updated 12 years, 8 months ago by Anonymous.
-
AuthorPosts
-
-
March 18, 2012 at 7:27 pm #1205Anonymous
I’ve been trying to assemble a poly-peptoid sequence using the make_pose_from_sequence function, however there seems to be an error in the way the polymer gets connected in the pose. For instance, the command:
make_pose_from_sequence(pose, “AAX[P02]AA”, “fa_standard”)
has no problem executing (P02.params works in other rosetta applications). However, when outputting the pose to PyMol it looks like the image attached. It would appear that there is an issue connecting the C-term of the last 2 alanines to the P02 N-term and subsequently overlaps them. Any ideas on how to fix this?
-
March 18, 2012 at 7:57 pm #6815Anonymous
Tim, not to put too fine a point on it, but who is possibly going to know more about peptoids than the Bonneau lab?
Is make_pose_from_sequence known to work with peptoids in C++? make_pose_from_sequence is *not* how PDB input or design work (which are the methods Doug used with NCAAs), so that’s where I’d start.
-
March 18, 2012 at 8:45 pm #6816Anonymous
This problem isn’t only for peptoids, but other non-standard residue types such as in the sequence ‘AAM[ZN]AA’ – In this case it appears to again fail to properly connect the sequence and overlaps them.
-
March 19, 2012 at 1:21 pm #6823Anonymous
Yeah, that works, thanks for the help!
-
March 18, 2012 at 9:05 pm #6817Anonymous
make_pose_from_sequence is probably making a three-chain pose in that case, with jumps between AA(1), ZN, and AA(2). Since none of the three subcomponents are connected by bonds, it is probably using a zero-length jump to do the connecting, thus resulting in the overlap. You’re only giving it a sequence; it’s not smart enough to make good coordinates.
-
March 18, 2012 at 11:01 pm #6818Anonymous
From a brief skim of the code, this looks to be more or less the case. Or rather, it’s not so much that it’s being appended by a zero-length jump, but instead it’s being added at the default coordinates for the residue, which probably all end up at around the origin.
You don’t see this when you build a peptide chain, as there’s extra code that’s invoked in that case which moves the bonded residue to the appropriate geometry for the chemical connection. That extra code is not invoked when you have a non-bonded connection. (The difference amounts to Conformation::append_residue_by_jump() versus Conformation::append_residue_by_bond() ).
The choice between the two is made within the make_pose_from_sequence() function, and there’s an explicit check for residues with a core::chemical::AA type of aa_unk and aa_vrt, or certain modified termini, so even unnatural amino acids (of type AA UNK) which are supposed to be chemically bonded will suffer this fate.
It doesn’t look like there’s a way to bypass this check, so your best be would be to write your own function which builds the Residue objects like you want (see core.pose.residue_types_from_sequence() and conformation.ResidueFactory.create_residue() ), and then calls Pose.append_residue_by_bond() or Pose.append_residue_by_jump(), as appropriate.
-
-
AuthorPosts
- You must be logged in to reply to this topic.