PyRosetta (11) Make Bundle Movers

Make Bundle Movers

Introduction

MakeBundle generates a helical bundle using the Crick equations (which describe a helix of helices) or modified Crick equations (describing a laterally-squashed helix of helices).

This mover is general enough to create arbitrary helices using arbitrary backbones. Since strands are a special case of a helix (in which the turn per residue is about 180 degrees), the mover can also generate beta-barrels or other strand bundles.

The generated secondary structure elements are disconnected, so subsequent movers (e.g. GeneralizedKIC) must be invoked to connect them with loops.

Note | Biochemistry Terms

Major Parameters

  1. **The super-helical radius (R0)**:the “major super halical radius”; the distances between helices, depending on the number of helices, ~3-10 Å
  2. The super helical frequency (ω0): super-helix torsion; helix twists (curve) around Z axis; measured by “how each a.a. contribute to the curvature of a helix”, -2.5~2.5°(plus or minus determines the chirality)
  3. Helical phase offset (Δφ1) of a helix: the angle that the helix turns around its own central axis, relative to the initial helical phase (φ1), Δφ1 = ω1·t
    NOTICE: This is delta_omega1 in Rosetta
  4. Super-helical phase offset (Δφ0) of a helix: the angle that the helix turns around the central axis of the super helix (the Z axis), relative to the initial super-helical phase (φ0), Δφ0 = ω0·t
    NOTICE: This is delta_omega0 in Rosetta
  5. Chain axial offset (ΔZ) of a helix: the distance that a helix moves along the central Z axis of the super-helix
  6. The helical radius (R1): α-helix radius, usually set to the ideal value of an α-helix
  7. The helical frequency (ω1): α-helix curvature, coupled to ω0, for an ideal α-helix, ω0+ω1=100°

BundleGridSampler Mover in Rosetta

Example

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
from pyrosetta.rosetta.protocols.rosetta_scripts import XmlObjects
pose = pyrosetta.rosetta.core.pose.Pose() #empty

my_str = '''
<SCOREFXNS>
<ScoreFunction name="sfxn1" weights="ref2015"/>
</SCOREFXNS>
<MOVERS>
<BundleGridSampler name="bgs1"
helix_length="20"
scorefxn="sfxn1"
r0_min="1.0"
r0_max="10.0"
r0_samples="10"
omega0="0.05"
delta_omega0="0"
delta_omega1="0"
delta_t="0"
dump_pdbs="0">
<Helix/>
<Helix delta_omega0="2.09" r0_copies_helix="1"/>
<Helix delta_omega0="4.19" r0_copies_helix="1"/>
</BundleGridSampler>
</MOVERS>
'''


XmlObjects.create_from_string(my_str).get_mover("bgs1").apply(pose)

In this example, we allow rosetta to sample across a range of r0 values.

We created a bundle of 3 helices.

https://www.yuque.com/yuqueyonghu2r84jv/zmy8pd/csnn9en6aurumwqt

MakeBundle Mover in Rosetta

Example

This script generates an antiparallel beta-barrel with a bundle of alpha-helices on the inside.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
pose = pyrosetta.rosetta.core.pose.Pose() #empty

my_str = '''
<SCOREFXNS>
<ScoreFunction name="sfxn1" weights="ref2015"/>
</SCOREFXNS>
<MOVERS>
<MakeBundle name="bundle1" set_bondlengths="true" set_bondangles="true" residue_name="ALA" crick_params_file="beta_strand" symmetry="16" r0="29" omega0="0.075" helix_length="20" >
#The parameters set above ensure that by default, each "helix" will actually be a strand:
<Helix /> #A strand
<Helix delta_omega0="0.19634954" invert="1" delta_t="0.25" delta_omega1="1.5707963" /> #An offset, inverted strand.
<Helix r0="21" omega0="0.05" crick_params_file="alpha_helix" helix_length="40" /> #An alpha-helix.
#The three elements defined above are repeated 16 times about the bundle axis to make the bundle.
</MakeBundle>
</MOVERS>
'''

XmlObjects.create_from_string(my_str).get_mover("bundle1").apply(pose)

MakeBundle mover in PyRosetta

Example

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
from pyrosetta.rosetta.protocols.helical_bundle import *
import math

pose = pyrosetta.rosetta.core.pose.Pose()
mb = MakeBundle()

# add 1st helix
mb.add_helix()
# add 2nd helix
mb.add_helix()

'''
select the 2nd helix,
and set the delta_omega0 value to 180°.
delta_omega0: helix rotation around Z axis of the bundle of helices
'''
mb.helix(2).calculator_op().real_parameter(BPC_delta_omega0).set_value(math.pi)

for i in range(1, 3): # i in [1,2]
# Set helix length to 20
mb.helix(i).set_helix_length(20)
# set super-helix radius (major radius) `r0` to 5 (>=3, <=10)
mb.helix(i).calculator_op().real_parameter(BPC_r0).set_value(5)
# set torsion to 2.5°
mb.helix(i).calculator_op().real_parameter(BPC_omega0).set_value(math.radians(2.5))

mb.apply(pose)
pose.dump_pdb("outputs/manual_make_bundle.pdb")
pmm.apply(pose)

In this example, we created a bundle of 3 helices.

α-helixParameter tips

From Vikram Mulligan, the developer who invented Rosetta Parametric Backbone Design.

  1. Most bundles would have r0 from 3 to 10 A (depending on the helix count).
  2. Omega0 should range from about -2.5 degrees to 2.5 degrees.
  3. Delta_omega1 can be anywhere from 0 to 360. (It’s just the roll of the helix about its own axis).
  4. Delta_z0, delta_z1 or delta_t can be anything (you’re just sliding the helix up and down). Typically, you’d just sample around a few Angstroms, though.
  5. r1, omega1, etc. are all minor helix parameters that are tied to the secondary structure. We don’t normally vary them.

Reference

MakeBundle

  • Copyright: Copyright is owned by the author. For commercial reprints, please contact the author for authorization. For non-commercial reprints, please indicate the source.
  • Copyrights © 2024-2025 Michael Lau
  • Visitors: | Views:

请我喝杯咖啡吧~

支付宝
微信