Freezing arbitrary backbone dihedral angles…

Member Site Forums PyRosetta PyRosetta – Scripts Freezing arbitrary backbone dihedral angles…

Viewing 3 reply threads
  • Author
    • #2266

        Dear PyRosetta staff,

        I’m using your set_bb_true_range() method of the MoveMap class to define the mobile degrees of freedom for some loop. Then, I use a MinMover (min_type=”dfpmin”) to minimize the loop according to some score function. I want that both backbone dihedral angles (PHI and PSI) were frozen at the Nt end. Unfortunately, it seems that PyRosetta only freezes the PHI angle while keeping mobile the N-terminal (Nt) PSI. In the C-terminal end, the PHI angle is mobile and the PSI is frozen.

        Is it possible to freeze (or keep mobile) arbitrary angles in the backbone during minimizations?

        – Mon

      • #11182

          Hi again,

          After checking PyRosetta’s help (“help(MoveMap.set)”) deeper, it seems that it is possible to freeze any DoF using the “set” method from MoveMap class. Unfortunately, I haven’t found how to do it yet… Would you help me, please?

          I’ve copied here some relevant lines from the help about the method “set”:

          set(…) method of rosetta.core.kinematics.MoveMap instance
          set( (MoveMap)arg1, (DOF_ID)id, (bool)setting) -> None :
          set for an individual DoF, e.g., “PHI of Atom 3 in Residue 5”

          For example, how would I set mobile (or fixed) the PSI dihedral angle of residue 4? Thanks!

        • #11185

            Thanks a lot for the response!

            I’ve tried, for example:
            > mm=MoveMap()
            > mm.set(TorsionID(4, BB, 2), True)

            but when I do:

            Nothing appears to be “TRUE”.

            Is there any method in MoveMap class to check the status of all DoFs?

          • #11193

              What you said worked fine!

              One related question more. Is there any simple way to set mobile (or freeze) all side-chain dihedral angles (not only Chi) or should I use the DOF_ID stuff you’ve commented above instead?

              Thanks a lot!

            • #11183

                There’s a number of different ways to use the set() function in MoveMap (it’s overloaded on the C++ level).

                The DOF_ID usage certainly could be applied to your purposes. To use it, you would want to instantiate a object with the settings you want. The constructor for the DOF_ID takes a object and a setting. The DOF_Type is a constant that specifies PHI/THETA/D for dihedral/angle/distance. (It would be PHI (dihedral) for your purposes.) The AtomID object specifies the residue number and atom number of the atom which is build from the particular degree of freedom you’re setting. This would be the fourth atom of the dihedral. So for PSI dihedrals, it would typically be the N atom of the *next* residue, though that can vary based on how, exactly the FoldTree and AtomTree are structured.

                While using the DOF_ID is the most flexible way of setting MoveMap information, an easier way is probably to use the version which takes a instead of a DOF_ID. From the documentation:

                TorsionID(253, BB, 1) # Phi backbone torsion of residue 253.
                TorsionID(253, BB, 2) # Psi backbone torsion of residue 253.
                TorsionID(253, BB, 3) # Omega backbone torsion of residue 253.

                Note for the TorsionID setting, it should be the residue number where most of the atoms in the Phi/Psi actually are. (That is, the residue number you would normally expect it to be, in contrast to the DOF_ID usage, which can bleed over into adjacent residues.)

              • #11188

                  It’s set, it’s just not listed in the show() output. It looks like the TorsionID settings are overlooked, and there isn’t really a good method to show them. They should still be used in minimization ,etc, though.

                • #11197

                    This is one of Rosetta’s nomenclature quirks – all non-backbone dihedrals are called “chis”. For amino acids they’re numbered out from the Calpha. So the rotation around the bond defined by Calpha-Cbeta is Chi 1; around the bond between C-beta-Cgamma is Chi 2, etc. There’s also “proton chis” for groups with rotatable hydrogens (i.e. Ser, Thr, and Cys) – though things with symmetric hydrogens like methyl groups and the nitrogen of lysine aren’t considered to be a “chi”.

                    The complication is that there’s also a chi backbone torsion on nucleic acids. On the Pose object this is accessed by the functions which don’t take a chi number, and the functions which do take a chi number are for the sidechain chis.

                    But the “chi” functions of the MoveMap are all for the sidechain chis, rather than the nucleic acid backbone chi. So using the set_chi() functions on the MoveMap is the best way to set all sidechain torsions to movable/immobile.

                  • #11202

                      Excellent answer! Thanks a lot!

                  Viewing 3 reply threads
                  • You must be logged in to reply to this topic.