This notebook contains material from PyRosetta; content is available on Github.

# Working With Symmetry¶

Keywords: symmetry, asymmetric, SetupForSymmetryMover, virtual

## Overview¶

Symmetry is an important concept to learn when working with biomolecules. When a protein is crystalized, it is in the precense of its symmetrical neighbors - which can be important if testing particular protocols or using crystal density for refinement or full structure building.

Symmetry can also be useful for designing symmetrical structures or large repeating meta-proteins like protein cages.

### Symmetry In Rosetta¶

So why do we care if our protein is symmetrical or not when it comes to Rosetta? Each residue and atom that is loaded into Rosetta takes time to both load, and time to score. Since scoring can happen thousands of times - even in a short protocol, anything we can do to speed this up becomes important. The most expensive operation in Rosetta is minimization, and by using symmetry - we can reduce the minimization time exponentially by minimizing a single copy instead of ALL copies. We will get into the details about how this works below.

When we use symmetry in Rosetta - we are basically telling rosetta that the symmetrical partners are 'special', however, the total number of residues is now ALL residues, including symmetrical partners. Upon setting up symmety in Rosetta, Rosetta will replace the Conformation within the pose with a Symmetrical version, called the SymmetricConformation. If you know anything about classes, this SymmetricConformation is derived from the actual Conformation object, but contains extra information about the pose and some functions are replaced.

### Symmetric Scoring and Moving¶

Ok, so now lets assume that we have our symmetric pose. Now what? Well, the symmetric copies are all tied to their real counterparts. Once you move a chain, residue, or atom by packing or minimization, the symmetric copies of that residue are all moved in the same way.

Cool. But what about scoring? Scoring works very similarly - instead of scoring each and every residue in our pose, Rosetta will score just our assymetric unit, and multiply that out to the number of symmetric copies we have. Intelligently, Rosetta will also figure out the symmetric interfaces that arise from the interactions of our assymetric unit to the symmetric copies and score them appropriately.

### Symmetry-aware movers¶

Most of our common movers are symmetry-aware. At one point there were different symmetric and non-symmetric versions of particular code, such as MinMover and PackRotamersMover. Now though, Rosetta will automatically use the pose to figure out what needs to be done. You should seek original documentation (and contact the author if not explicit) to make sure that an uncommon protocol you are using is symmetry-aware.

## Documentation¶

In [ ]:
# Notebook setup
import sys
!pip install pyrosettacolabsetup
import pyrosettacolabsetup
pyrosettacolabsetup.mount_pyrosetta_install()
print ("Notebook is set for PyRosetta use in Colab.  Have fun!")


Here, we will use a few specific options. The first three options make Rosetta a bit more robust to input structures. The -load_PDB_components cannot be used with glycans, unfortunately, and our structure has a few very important glycans. Finally, we load a bunch of glycan-specific options, which we will cover in the next tutorial.

In [1]:
from pyrosetta import *
from pyrosetta.rosetta import *
from pyrosetta.teaching import *
import os

init('-ignore_unrecognized_res -load_PDB_components false -ignore_zero_occupancy false @inputs/glycan_flags')

PyRosetta-4 2019 [Rosetta PyRosetta4.Release.python36.mac 2019.39+release.93456a567a8125cafdf7f8cb44400bc20b570d81 2019-09-26T14:24:44] retrieved from: http://www.pyrosetta.org
(C) Copyright Rosetta Commons Member Institutions. Created in JHU by Sergey Lyskov and PyRosetta Team.
core.init: Checking for fconfig files in pwd and ./rosetta/flags
core.init:
core.init:
core.init: Rosetta version: PyRosetta4.Release.python36.mac r233 2019.39+release.93456a567a8 93456a567a8125cafdf7f8cb44400bc20b570d81 http://www.pyrosetta.org 2019-09-26T14:24:44
basic.random.init_random_generator: 'RNG device' seed mode, using '/dev/urandom', seed=1544006277 seed_offset=0 real_seed=1544006277
basic.random.init_random_generator: RandomGenerator:init: Normal mode, seed=1544006277 RG_type=mt19937


## Creating a SymDef file¶

Here, we will start with how to create a basic symdef file for cyrstal symmetry. Note that there are ways to do this without a symdef file, but these do not currently work for glycan structures, which we will be using here.

The make_symdef_file.pl file is within Rosetta3. To use it, you will need to download and licence Rosetta3. The code is in the Rosetta/main/src/apps/public directory. In the interest of reducing code drift, this file is NOT included in the tutorial directory as we may then have version drift.

If you have done this, we can use the following command to create the symdef file. Here, the radius of symmetrical partners is 12A, which is certainly fairly large, but produces a very well represented crystal.

In [3]:
pdb = "inputs/1jnd.pdb"
base_cmd = f'cd inputs && make_symmdef_file.pl -r 12 -m CRYST -p  {pdb}.pdb > {pdb}_crys.symm && cd -'
print(base_cmd)

cd inputs && make_symmdef_file.pl -r 12 -m CRYST -p  inputs/1jnd.pdb.pdb > inputs/1jnd.pdb_crys.symm && cd -


Use this base command and the os.system(cmd) function to run the code or use the provided symdef file.

In [3]:
os.system('cp inputs/1jnd_crys.symm .')

Out[3]:
0

Take a look at the symmetrized structure in pymol (inputs/1jnd_symm.pdb). What would happen if we increased the radius to 24 instead of 12?

## Setup a Symmetrized Pose¶

Here, we will run a basic Rosetta protocol with symmetry. There are much more complicated things you can do with symmetry, but for now, we just want to symmetrically pack the protein. Please see the docs for more on symmetry. The full Rosetta C++ tutorial for symmetry is a great place to go from here: - https://www.rosettacommons.org/demos/latest/tutorials/Symmetry/Symmetry

Lets first create a pose, and then use the SetupForSymmetryMover on the pose. Note this is an unrefined input structure. This is so that minmover will actually do something. A pareto-optimal refined structure can be found in the inputs as 1jnd_refined.pdb.gz

In [37]:
p = pose_from_pdb('inputs/1jnd.pdb')
original = p.clone()

core.import_pose.import_pose: File 'inputs/1jnd.pdb' automatically determined to be of type PDB
core.io.pdb.pdb_reader: Parsing 82 .pdb records with unknown format to search for Rosetta-specific comments.
core.io.util: Automatic glycan connection is activated.
core.io.util: Start reordering residues.
core.io.util: Corrected glycan residue order (internal numbering): [401, 402, 403, 404]
core.io.util:
core.io.pose_from_sfr.PoseFromSFRBuilder: Setting chain termination for 404
core.io.pose_from_sfr.PoseFromSFRBuilder: [ WARNING ] Glc401 has an unfavorable ring conformation; the coordinates for this input structure may have been poorly assigned.
core.io.pose_from_sfr.PoseFromSFRBuilder: [ WARNING ] Glc402 has an unfavorable ring conformation; the coordinates for this input structure may have been poorly assigned.
core.io.pose_from_sfr.PoseFromSFRBuilder: [ WARNING ] Man403 has an unfavorable ring conformation; the coordinates for this input structure may have been poorly assigned.
core.io.pose_from_sfr.PoseFromSFRBuilder: [ WARNING ] Man404 has an unfavorable ring conformation; the coordinates for this input structure may have been poorly assigned.
core.chemical.AtomICoor: [ WARNING ] IcoorAtomID::atom_id(): Cannot get atom_id for POLYMER_LOWER of residue ->4)-beta-D-Glcp:2-AcNH 401.  Returning BOGUS ID instead.
core.conformation.Residue: [ WARNING ] missing an atom: 401  H1  that depends on a nonexistent polymer connection!
core.conformation.Residue: [ WARNING ]  --> generating it using idealized coordinates.
core.chemical.AtomICoor: [ WARNING ] IcoorAtomID::atom_id(): Cannot get atom_id for POLYMER_LOWER of residue ->4)-beta-D-Glcp:2-AcNH 401.  Returning BOGUS ID instead.
core.conformation.Conformation: Found disulfide between residues 5 32
core.conformation.Conformation: current variant for 5 CYS
core.conformation.Conformation: current variant for 32 CYS
core.conformation.Conformation: current variant for 5 CYD
core.conformation.Conformation: current variant for 32 CYD
core.conformation.Conformation: Found disulfide between residues 302 385
core.conformation.Conformation: current variant for 302 CYS
core.conformation.Conformation: current variant for 385 CYS
core.conformation.Conformation: current variant for 302 CYD
core.conformation.Conformation: current variant for 385 CYD
core.conformation.carbohydrates.GlycanTreeSet: Setting up Glycan Trees
core.conformation.carbohydrates.GlycanTreeSet: Found 1 glycan trees.

In [38]:
p.total_residue()

Out[38]:
404
In [39]:
type(p.conformation())

Out[39]:
pyrosetta.rosetta.core.conformation.Conformation
In [40]:
symmetrize = rosetta.protocols.symmetry.SetupForSymmetryMover("1jnd_crys.symm")
symmetrize.apply(p)

core.conformation.symmetry.SymmData: [ WARNING ] Setting weight of master jump ( jump-id=1 ) to 1.0 (was undefined)
core.conformation.symmetry.SymmData: [ WARNING ] Setting jump_group JUMPGROUP1: [master 1]  6:0  7:0  2:0  3:0  4:0  5:0  8:0  9:0
core.conformation.symmetry.SymmData: [ WARNING ] Setting weight of master jump ( jump-id=10 ) to 1.0 (was undefined)
core.conformation.symmetry.SymmData: [ WARNING ] Setting jump_group JUMPGROUP2: [master 10]  20:0  22:0  12:0  14:0  16:0  18:0  24:0  26:0
core.conformation.symmetry.SymmData: symmetry name: 1jnd_P_32_2_1
core.conformation.symmetry.SymmData: number of subunits: 9
core.conformation.symmetry.SymmData: number of interfaces: 1
core.conformation.symmetry.SymmData: score subunit number: VRT_0_0_0_0
core.conformation.symmetry.SymmData: anchor the subunits at residue: 1
core.conformation.symmetry.SymmData:  Virtual coordinate system VRT_0_0_0_0
core.conformation.symmetry.SymmData: x: 1 0 0
core.conformation.symmetry.SymmData: y: 0 1 0
core.conformation.symmetry.SymmData: origin: 73.8756 49.0221 11.025
core.conformation.symmetry.SymmData:  Virtual coordinate system VRT_0_0_0_0_base
core.conformation.symmetry.SymmData: x: 1 0 0
core.conformation.symmetry.SymmData: y: 0 1 0
core.conformation.symmetry.SymmData: origin: 72.8756 48.0221 10.025
core.conformation.symmetry.SymmData:  Virtual coordinate system VRT_1_1_0_n1
core.conformation.symmetry.SymmData: x: -0.5 0.866025 0
core.conformation.symmetry.SymmData: y: -0.866025 -0.5 0
core.conformation.symmetry.SymmData: origin: 26.9528 39.4671 -18.9707
core.conformation.symmetry.SymmData:  Virtual coordinate system VRT_1_1_0_n1_base
core.conformation.symmetry.SymmData: x: -0.5 0.866025 0
core.conformation.symmetry.SymmData: y: -0.866025 -0.5 0
core.conformation.symmetry.SymmData: origin: 28.3188 39.1011 -19.9707
core.conformation.symmetry.SymmData:  Virtual coordinate system VRT_2_1_1_0
core.conformation.symmetry.SymmData: x: -0.5 -0.866025 0
core.conformation.symmetry.SymmData: y: 0.866025 -0.5 0
core.conformation.symmetry.SymmData: origin: 58.6891 3.60826 41.0206
core.conformation.symmetry.SymmData:  Virtual coordinate system VRT_2_1_1_0_base
core.conformation.symmetry.SymmData: x: -0.5 -0.866025 0
core.conformation.symmetry.SymmData: y: 0.866025 -0.5 0
core.conformation.symmetry.SymmData: origin: 58.3231 4.97428 40.0206
core.conformation.symmetry.SymmData:  Virtual coordinate system VRT_3_0_n1_0
core.conformation.symmetry.SymmData: x: -0.5 0.866025 0
core.conformation.symmetry.SymmData: y: 0.866025 0.5 0
core.conformation.symmetry.SymmData: origin: 58.6891 -3.60826 -11.025
core.conformation.symmetry.SymmData:  Virtual coordinate system VRT_3_0_n1_0_base
core.conformation.symmetry.SymmData: x: -0.5 0.866025 0
core.conformation.symmetry.SymmData: y: 0.866025 0.5 0
core.conformation.symmetry.SymmData: origin: 58.3231 -4.97428 -10.025
core.conformation.symmetry.SymmData:  Virtual coordinate system VRT_3_1_0_0
core.conformation.symmetry.SymmData: x: -0.5 0.866025 0
core.conformation.symmetry.SymmData: y: 0.866025 0.5 0
core.conformation.symmetry.SymmData: origin: 111.862 88.4892 -11.025
core.conformation.symmetry.SymmData:  Virtual coordinate system VRT_3_1_0_0_base
core.conformation.symmetry.SymmData: x: -0.5 0.866025 0
core.conformation.symmetry.SymmData: y: 0.866025 0.5 0
core.conformation.symmetry.SymmData: origin: 111.496 87.1232 -10.025
core.conformation.symmetry.SymmData:  Virtual coordinate system VRT_4_2_1_0
core.conformation.symmetry.SymmData: x: -0.5 -0.866025 0
core.conformation.symmetry.SymmData: y: -0.866025 0.5 0
core.conformation.symmetry.SymmData: origin: 80.1253 52.6304 48.9664
core.conformation.symmetry.SymmData:  Virtual coordinate system VRT_4_2_1_0_base
core.conformation.symmetry.SymmData: x: -0.5 -0.866025 0
core.conformation.symmetry.SymmData: y: -0.866025 0.5 0
core.conformation.symmetry.SymmData: origin: 81.4913 52.9964 49.9664
core.conformation.symmetry.SymmData:  Virtual coordinate system VRT_4_2_1_n1
core.conformation.symmetry.SymmData: x: -0.5 -0.866025 0
core.conformation.symmetry.SymmData: y: -0.866025 0.5 0
core.conformation.symmetry.SymmData: origin: 80.1253 52.6304 -41.0206
core.conformation.symmetry.SymmData:  Virtual coordinate system VRT_4_2_1_n1_base
core.conformation.symmetry.SymmData: x: -0.5 -0.866025 0
core.conformation.symmetry.SymmData: y: -0.866025 0.5 0
core.conformation.symmetry.SymmData: origin: 81.4913 52.9964 -40.0206
core.conformation.symmetry.SymmData:  Virtual coordinate system VRT_5_0_1_0
core.conformation.symmetry.SymmData: x: 1 0 0
core.conformation.symmetry.SymmData: y: -0 -1 0
core.conformation.symmetry.SymmData: origin: 20.7031 43.0754 18.9707
core.conformation.symmetry.SymmData:  Virtual coordinate system VRT_5_0_1_0_base
core.conformation.symmetry.SymmData: x: 1 0 0
core.conformation.symmetry.SymmData: y: -0 -1 0
core.conformation.symmetry.SymmData: origin: 19.7031 44.0754 19.9707
core.conformation.symmetry.SymmData:  Virtual coordinate system VRT_5_1_1_0
core.conformation.symmetry.SymmData: x: 1 0 0
core.conformation.symmetry.SymmData: y: -0 -1 0
core.conformation.symmetry.SymmData: origin: 127.048 43.0754 18.9707
core.conformation.symmetry.SymmData:  Virtual coordinate system VRT_5_1_1_0_base
core.conformation.symmetry.SymmData: x: 1 0 0
core.conformation.symmetry.SymmData: y: -0 -1 0
core.conformation.symmetry.SymmData: origin: 126.048 44.0754 19.9707
core.conformation.symmetry.SymmData: Dof for jump: 1
core.conformation.symmetry.SymmData: x 0:0,0:0,0 n2c
core.conformation.symmetry.SymmData: y 0:0,0:0,0 n2c
core.conformation.symmetry.SymmData: z 0:0,0:0,0 n2c
core.conformation.symmetry.SymmData: x_angle 1:0,0:0,0 n2c
core.conformation.symmetry.SymmData: y_angle 1:0,0:0,0 n2c
core.conformation.symmetry.SymmData: z_angle 1:0,0:0,0 n2c
core.conformation.symmetry.SymmData: Dof for jump: 10
core.conformation.symmetry.SymmData: x 1:0,0:0,0 n2c
core.conformation.symmetry.SymmData: y 1:0,0:0,0 n2c
core.conformation.symmetry.SymmData: z 1:0,0:0,0 n2c
core.conformation.symmetry.SymmData: x_angle 0:0,0:0,0 n2c
core.conformation.symmetry.SymmData: y_angle 0:0,0:0,0 n2c
core.conformation.symmetry.SymmData: z_angle 0:0,0:0,0 n2c
core.conformation.symmetry.SymmData: Jump JUMP_0_0_0_0_to_com VRT_0_0_0_0 VRT_0_0_0_0_base
core.conformation.symmetry.SymmData: Jump JUMP_0_0_0_0_to_subunit VRT_0_0_0_0_base SUBUNIT
core.conformation.symmetry.SymmData: Jump JUMP_1_1_0_n1 VRT_0_0_0_0 VRT_1_1_0_n1
core.conformation.symmetry.SymmData: Jump JUMP_1_1_0_n1_to_com VRT_1_1_0_n1 VRT_1_1_0_n1_base
core.conformation.symmetry.SymmData: Jump JUMP_1_1_0_n1_to_subunit VRT_1_1_0_n1_base SUBUNIT
core.conformation.symmetry.SymmData: Jump JUMP_2_1_1_0 VRT_0_0_0_0 VRT_2_1_1_0
core.conformation.symmetry.SymmData: Jump JUMP_2_1_1_0_to_com VRT_2_1_1_0 VRT_2_1_1_0_base
core.conformation.symmetry.SymmData: Jump JUMP_2_1_1_0_to_subunit VRT_2_1_1_0_base SUBUNIT
core.conformation.symmetry.SymmData: Jump JUMP_3_0_n1_0 VRT_0_0_0_0 VRT_3_0_n1_0
core.conformation.symmetry.SymmData: Jump JUMP_3_0_n1_0_to_com VRT_3_0_n1_0 VRT_3_0_n1_0_base
core.conformation.symmetry.SymmData: Jump JUMP_3_0_n1_0_to_subunit VRT_3_0_n1_0_base SUBUNIT
core.conformation.symmetry.SymmData: Jump JUMP_3_1_0_0 VRT_0_0_0_0 VRT_3_1_0_0
core.conformation.symmetry.SymmData: Jump JUMP_3_1_0_0_to_com VRT_3_1_0_0 VRT_3_1_0_0_base
core.conformation.symmetry.SymmData: Jump JUMP_3_1_0_0_to_subunit VRT_3_1_0_0_base SUBUNIT
core.conformation.symmetry.SymmData: Jump JUMP_4_2_1_0 VRT_0_0_0_0 VRT_4_2_1_0
core.conformation.symmetry.SymmData: Jump JUMP_4_2_1_0_to_com VRT_4_2_1_0 VRT_4_2_1_0_base
core.conformation.symmetry.SymmData: Jump JUMP_4_2_1_0_to_subunit VRT_4_2_1_0_base SUBUNIT
core.conformation.symmetry.SymmData: Jump JUMP_4_2_1_n1 VRT_0_0_0_0 VRT_4_2_1_n1
core.conformation.symmetry.SymmData: Jump JUMP_4_2_1_n1_to_com VRT_4_2_1_n1 VRT_4_2_1_n1_base
core.conformation.symmetry.SymmData: Jump JUMP_4_2_1_n1_to_subunit VRT_4_2_1_n1_base SUBUNIT
core.conformation.symmetry.SymmData: Jump JUMP_5_0_1_0 VRT_0_0_0_0 VRT_5_0_1_0
core.conformation.symmetry.SymmData: Jump JUMP_5_0_1_0_to_com VRT_5_0_1_0 VRT_5_0_1_0_base
core.conformation.symmetry.SymmData: Jump JUMP_5_0_1_0_to_subunit VRT_5_0_1_0_base SUBUNIT
core.conformation.symmetry.SymmData: Jump JUMP_5_1_1_0 VRT_0_0_0_0 VRT_5_1_1_0
core.conformation.symmetry.SymmData: Jump JUMP_5_1_1_0_to_com VRT_5_1_1_0 VRT_5_1_1_0_base
core.conformation.symmetry.SymmData: Jump JUMP_5_1_1_0_to_subunit VRT_5_1_1_0_base SUBUNIT
core.conformation.symmetry.SymmData: Include subunit:
core.conformation.symmetry.SymmData: Output subunit:
core.conformation.symmetry.SymmData: SlideType: RANDOM
core.conformation.symmetry.SymmData: SlideCriteriaType: CEN_DOCK_SCORE
core.conformation.symmetry.SymmData: SlideCriteriaVal: AUTOMATIC
core.conformation.symmetry.SymmData: SlideOrder: none
core.conformation.symmetry.util: =================== SYM FOLD TREE, jump notation: =symfixed= *indep* #symdof# jump[=follows] ========================
VRT_0_0_0_0(3637)
|----#j10#--->VRT_0_0_0_0_base(3638)----#j1#------>1:Sub1A(1-400)
|----=j11=--->VRT_1_1_0_n1(3643)---j12=10--->VRT_1_1_0_n1_base(3644)----j2=1---->1213:Sub4A(1213-1612)
|----=j13=--->VRT_2_1_1_0(3645)---j14=10--->VRT_2_1_1_0_base(3646)----j3=1---->1617:Sub5A(1617-2016)
|----=j15=--->VRT_3_0_n1_0(3647)---j16=10--->VRT_3_0_n1_0_base(3648)----j4=1---->2021:Sub6A(2021-2420)
|----=j17=--->VRT_3_1_0_0(3649)---j18=10--->VRT_3_1_0_0_base(3650)----j5=1---->2425:Sub7A(2425-2824)
|----=j19=--->VRT_4_2_1_0(3639)---j20=10--->VRT_4_2_1_0_base(3640)----j6=1---->405:Sub2A(405-804)
|----=j21=--->VRT_4_2_1_n1(3641)---j22=10--->VRT_4_2_1_n1_base(3642)----j7=1---->809:Sub3A(809-1208)
|----=j23=--->VRT_5_0_1_0(3651)---j24=10--->VRT_5_0_1_0_base(3652)----j8=1---->2829:Sub8A(2829-3228)
\----=j25=--->VRT_5_1_1_0(3653)---j26=10--->VRT_5_1_1_0_base(3654)----j9=1---->3233:Sub9A(3233-3632)
core.conformation.symmetry.Conformation: Found disulfide between residues 5 32
core.conformation.symmetry.Conformation: current variant for 5 CYD
core.conformation.symmetry.Conformation: current variant for 32 CYD
core.conformation.symmetry.Conformation: current variant for 5 CYD
core.conformation.symmetry.Conformation: current variant for 32 CYD
core.conformation.symmetry.Conformation: Add symmetric chemical bond 409 to 436
core.conformation.symmetry.Conformation: Add symmetric chemical bond 813 to 840
core.conformation.symmetry.Conformation: Add symmetric chemical bond 1217 to 1244
core.conformation.symmetry.Conformation: Add symmetric chemical bond 1621 to 1648
core.conformation.symmetry.Conformation: Add symmetric chemical bond 2025 to 2052
core.conformation.symmetry.Conformation: Add symmetric chemical bond 2429 to 2456
core.conformation.symmetry.Conformation: Add symmetric chemical bond 2833 to 2860
core.conformation.symmetry.Conformation: Add symmetric chemical bond 3237 to 3264
core.conformation.symmetry.Conformation: Add symmetric chemical bond 5 to 32
core.conformation.symmetry.Conformation: Found disulfide between residues 302 385
core.conformation.symmetry.Conformation: current variant for 302 CYD
core.conformation.symmetry.Conformation: current variant for 385 CYD
core.conformation.symmetry.Conformation: current variant for 302 CYD
core.conformation.symmetry.Conformation: current variant for 385 CYD
core.conformation.symmetry.Conformation: Add symmetric chemical bond 706 to 789
core.conformation.symmetry.Conformation: Add symmetric chemical bond 1110 to 1193
core.conformation.symmetry.Conformation: Add symmetric chemical bond 1514 to 1597
core.conformation.symmetry.Conformation: Add symmetric chemical bond 1918 to 2001
core.conformation.symmetry.Conformation: Add symmetric chemical bond 2322 to 2405
core.conformation.symmetry.Conformation: Add symmetric chemical bond 2726 to 2809
core.conformation.symmetry.Conformation: Add symmetric chemical bond 3130 to 3213
core.conformation.symmetry.Conformation: Add symmetric chemical bond 3534 to 3617
core.conformation.symmetry.Conformation: Add symmetric chemical bond 302 to 385
core.conformation.carbohydrates.GlycanTreeSet: Setting up Glycan Trees
core.conformation.carbohydrates.GlycanTreeSet: Found 9 glycan trees.

In [41]:
print(p.total_residue())
print(type(p.conformation()))

3654
<class 'pyrosetta.rosetta.core.conformation.symmetry.SymmetricConformation'>


How many symmetric copies do we have in our pose? How do the scores compare for our original pose and our symmetrized version?

Now lets use some of the functionality to understand how this all works. We can use the SymetricInfo object that is part of the SymmetricConformation to get at some info. Lets take a look at all residues and find the assymetric unit residues and equivalent residues for the rest.

In [42]:
print("AssymUnit? equivalent_res")
sym_info = p.conformation().Symmetry_Info()
for i in range(1, p.size()+1):
print(i, sym_info.bb_is_independent(i), sym_info.bb_follows(i))

AssymUnit? equivalent_res
1 True 0
2 True 0
3 True 0
4 True 0
5 True 0
6 True 0
7 True 0
8 True 0
9 True 0
10 True 0
11 True 0
12 True 0
13 True 0
14 True 0
15 True 0
16 True 0
17 True 0
18 True 0
19 True 0
20 True 0
21 True 0
22 True 0
23 True 0
24 True 0
25 True 0
26 True 0
27 True 0
28 True 0
29 True 0
30 True 0
31 True 0
32 True 0
33 True 0
34 True 0
35 True 0
36 True 0
37 True 0
38 True 0
39 True 0
40 True 0
41 True 0
42 True 0
43 True 0
44 True 0
45 True 0
46 True 0
47 True 0
48 True 0
49 True 0
50 True 0
51 True 0
52 True 0
53 True 0
54 True 0
55 True 0
56 True 0
57 True 0
58 True 0
59 True 0
60 True 0
61 True 0
62 True 0
63 True 0
64 True 0
65 True 0
66 True 0
67 True 0
68 True 0
69 True 0
70 True 0
71 True 0
72 True 0
73 True 0
74 True 0
75 True 0
76 True 0
77 True 0
78 True 0
79 True 0
80 True 0
81 True 0
82 True 0
83 True 0
84 True 0
85 True 0
86 True 0
87 True 0
88 True 0
89 True 0
90 True 0
91 True 0
92 True 0
93 True 0
94 True 0
95 True 0
96 True 0
97 True 0
98 True 0
99 True 0
100 True 0
101 True 0
102 True 0
103 True 0
104 True 0
105 True 0
106 True 0
107 True 0
108 True 0
109 True 0
110 True 0
111 True 0
112 True 0
113 True 0
114 True 0
115 True 0
116 True 0
117 True 0
118 True 0
119 True 0
120 True 0
121 True 0
122 True 0
123 True 0
124 True 0
125 True 0
126 True 0
127 True 0
128 True 0
129 True 0
130 True 0
131 True 0
132 True 0
133 True 0
134 True 0
135 True 0
136 True 0
137 True 0
138 True 0
139 True 0
140 True 0
141 True 0
142 True 0
143 True 0
144 True 0
145 True 0
146 True 0
147 True 0
148 True 0
149 True 0
150 True 0
151 True 0
152 True 0
153 True 0
154 True 0
155 True 0
156 True 0
157 True 0
158 True 0
159 True 0
160 True 0
161 True 0
162 True 0
163 True 0
164 True 0
165 True 0
166 True 0
167 True 0
168 True 0
169 True 0
170 True 0
171 True 0
172 True 0
173 True 0
174 True 0
175 True 0
176 True 0
177 True 0
178 True 0
179 True 0
180 True 0
181 True 0
182 True 0
183 True 0
184 True 0
185 True 0
186 True 0
187 True 0
188 True 0
189 True 0
190 True 0
191 True 0
192 True 0
193 True 0
194 True 0
195 True 0
196 True 0
197 True 0
198 True 0
199 True 0
200 True 0
201 True 0
202 True 0
203 True 0
204 True 0
205 True 0
206 True 0
207 True 0
208 True 0
209 True 0
210 True 0
211 True 0
212 True 0
213 True 0
214 True 0
215 True 0
216 True 0
217 True 0
218 True 0
219 True 0
220 True 0
221 True 0
222 True 0
223 True 0
224 True 0
225 True 0
226 True 0
227 True 0
228 True 0
229 True 0
230 True 0
231 True 0
232 True 0
233 True 0
234 True 0
235 True 0
236 True 0
237 True 0
238 True 0
239 True 0
240 True 0
241 True 0
242 True 0
243 True 0
244 True 0
245 True 0
246 True 0
247 True 0
248 True 0
249 True 0
250 True 0
251 True 0
252 True 0
253 True 0
254 True 0
255 True 0
256 True 0
257 True 0
258 True 0
259 True 0
260 True 0
261 True 0
262 True 0
263 True 0
264 True 0
265 True 0
266 True 0
267 True 0
268 True 0
269 True 0
270 True 0
271 True 0
272 True 0
273 True 0
274 True 0
275 True 0
276 True 0
277 True 0
278 True 0
279 True 0
280 True 0
281 True 0
282 True 0
283 True 0
284 True 0
285 True 0
286 True 0
287 True 0
288 True 0
289 True 0
290 True 0
291 True 0
292 True 0
293 True 0
294 True 0
295 True 0
296 True 0
297 True 0
298 True 0
299 True 0
300 True 0
301 True 0
302 True 0
303 True 0
304 True 0
305 True 0
306 True 0
307 True 0
308 True 0
309 True 0
310 True 0
311 True 0
312 True 0
313 True 0
314 True 0
315 True 0
316 True 0
317 True 0
318 True 0
319 True 0
320 True 0
321 True 0
322 True 0
323 True 0
324 True 0
325 True 0
326 True 0
327 True 0
328 True 0
329 True 0
330 True 0
331 True 0
332 True 0
333 True 0
334 True 0
335 True 0
336 True 0
337 True 0
338 True 0
339 True 0
340 True 0
341 True 0
342 True 0
343 True 0
344 True 0
345 True 0
346 True 0
347 True 0
348 True 0
349 True 0
350 True 0
351 True 0
352 True 0
353 True 0
354 True 0
355 True 0
356 True 0
357 True 0
358 True 0
359 True 0
360 True 0
361 True 0
362 True 0
363 True 0
364 True 0
365 True 0
366 True 0
367 True 0
368 True 0
369 True 0
370 True 0
371 True 0
372 True 0
373 True 0
374 True 0
375 True 0
376 True 0
377 True 0
378 True 0
379 True 0
380 True 0
381 True 0
382 True 0
383 True 0
384 True 0
385 True 0
386 True 0
387 True 0
388 True 0
389 True 0
390 True 0
391 True 0
392 True 0
393 True 0
394 True 0
395 True 0
396 True 0
397 True 0
398 True 0
399 True 0
400 True 0
401 True 0
402 True 0
403 True 0
404 True 0
405 False 1
406 False 2
407 False 3
408 False 4
409 False 5
410 False 6
411 False 7
412 False 8
413 False 9
414 False 10
415 False 11
416 False 12
417 False 13
418 False 14
419 False 15
420 False 16
421 False 17
422 False 18
423 False 19
424 False 20
425 False 21
426 False 22
427 False 23
428 False 24
429 False 25
430 False 26
431 False 27
432 False 28
433 False 29
434 False 30
435 False 31
436 False 32
437 False 33
438 False 34
439 False 35
440 False 36
441 False 37
442 False 38
443 False 39
444 False 40
445 False 41
446 False 42
447 False 43
448 False 44
449 False 45
450 False 46
451 False 47
452 False 48
453 False 49
454 False 50
455 False 51
456 False 52
457 False 53
458 False 54
459 False 55
460 False 56
461 False 57
462 False 58
463 False 59
464 False 60
465 False 61
466 False 62
467 False 63
468 False 64
469 False 65
470 False 66
471 False 67
472 False 68
473 False 69
474 False 70
475 False 71
476 False 72
477 False 73
478 False 74
479 False 75
480 False 76
481 False 77
482 False 78
483 False 79
484 False 80
485 False 81
486 False 82
487 False 83
488 False 84
489 False 85
490 False 86
491 False 87
492 False 88
493 False 89
494 False 90
495 False 91
496 False 92
497 False 93
498 False 94
499 False 95
500 False 96
501 False 97
502 False 98
503 False 99
504 False 100
505 False 101
506 False 102
507 False 103
508 False 104
509 False 105
510 False 106
511 False 107
512 False 108
513 False 109
514 False 110
515 False 111
516 False 112
517 False 113
518 False 114
519 False 115
520 False 116
521 False 117
522 False 118
523 False 119
524 False 120
525 False 121
526 False 122
527 False 123
528 False 124
529 False 125
530 False 126
531 False 127
532 False 128
533 False 129
534 False 130
535 False 131
536 False 132
537 False 133
538 False 134
539 False 135
540 False 136
541 False 137
542 False 138
543 False 139
544 False 140
545 False 141
546 False 142
547 False 143
548 False 144
549 False 145
550 False 146
551 False 147
552 False 148
553 False 149
554 False 150
555 False 151
556 False 152
557 False 153
558 False 154
559 False 155
560 False 156
561 False 157
562 False 158
563 False 159
564 False 160
565 False 161
566 False 162
567 False 163
568 False 164
569 False 165
570 False 166
571 False 167
572 False 168
573 False 169
574 False 170
575 False 171
576 False 172
577 False 173
578 False 174
579 False 175
580 False 176
581 False 177
582 False 178
583 False 179
584 False 180
585 False 181
586 False 182
587 False 183
588 False 184
589 False 185
590 False 186
591 False 187
592 False 188
593 False 189
594 False 190
595 False 191
596 False 192
597 False 193
598 False 194
599 False 195
600 False 196
601 False 197
602 False 198
603 False 199
604 False 200
605 False 201
606 False 202
607 False 203
608 False 204
609 False 205
610 False 206
611 False 207
612 False 208
613 False 209
614 False 210
615 False 211
616 False 212
617 False 213
618 False 214
619 False 215
620 False 216
621 False 217
622 False 218
623 False 219
624 False 220
625 False 221
626 False 222
627 False 223
628 False 224
629 False 225
630 False 226
631 False 227
632 False 228
633 False 229
634 False 230
635 False 231
636 False 232
637 False 233
638 False 234
639 False 235
640 False 236
641 False 237
642 False 238
643 False 239
644 False 240
645 False 241
646 False 242
647 False 243
648 False 244
649 False 245
650 False 246
651 False 247
652 False 248
653 False 249
654 False 250
655 False 251
656 False 252
657 False 253
658 False 254
659 False 255
660 False 256
661 False 257
662 False 258
663 False 259
664 False 260
665 False 261
666 False 262
667 False 263
668 False 264
669 False 265
670 False 266
671 False 267
672 False 268
673 False 269
674 False 270
675 False 271
676 False 272
677 False 273
678 False 274
679 False 275
680 False 276
681 False 277
682 False 278
683 False 279
684 False 280
685 False 281
686 False 282
687 False 283
688 False 284
689 False 285
690 False 286
691 False 287
692 False 288
693 False 289
694 False 290
695 False 291
696 False 292
697 False 293
698 False 294
699 False 295
700 False 296
701 False 297
702 False 298
703 False 299
704 False 300
705 False 301
706 False 302
707 False 303
708 False 304
709 False 305
710 False 306
711 False 307
712 False 308
713 False 309
714 False 310
715 False 311
716 False 312
717 False 313
718 False 314
719 False 315
720 False 316
721 False 317
722 False 318
723 False 319
724 False 320
725 False 321
726 False 322
727 False 323
728 False 324
729 False 325
730 False 326
731 False 327
732 False 328
733 False 329
734 False 330
735 False 331
736 False 332
737 False 333
738 False 334
739 False 335
740 False 336
741 False 337
742 False 338
743 False 339
744 False 340
745 False 341
746 False 342
747 False 343
748 False 344
749 False 345
750 False 346
751 False 347
752 False 348
753 False 349
754 False 350
755 False 351
756 False 352
757 False 353
758 False 354
759 False 355
760 False 356
761 False 357
762 False 358
763 False 359
764 False 360
765 False 361
766 False 362
767 False 363
768 False 364
769 False 365
770 False 366
771 False 367
772 False 368
773 False 369
774 False 370
775 False 371
776 False 372
777 False 373
778 False 374
779 False 375
780 False 376
781 False 377
782 False 378
783 False 379
784 False 380
785 False 381
786 False 382
787 False 383
788 False 384
789 False 385
790 False 386
791 False 387
792 False 388
793 False 389
794 False 390
795 False 391
796 False 392
797 False 393
798 False 394
799 False 395
800 False 396
801 False 397
802 False 398
803 False 399
804 False 400
805 False 401
806 False 402
807 False 403
808 False 404
809 False 1
810 False 2
811 False 3
812 False 4
813 False 5
814 False 6
815 False 7
816 False 8
817 False 9
818 False 10
819 False 11
820 False 12
821 False 13
822 False 14
823 False 15
824 False 16
825 False 17
826 False 18
827 False 19
828 False 20
829 False 21
830 False 22
831 False 23
832 False 24
833 False 25
834 False 26
835 False 27
836 False 28
837 False 29
838 False 30
839 False 31
840 False 32
841 False 33
842 False 34
843 False 35
844 False 36
845 False 37
846 False 38
847 False 39
848 False 40
849 False 41
850 False 42
851 False 43
852 False 44
853 False 45
854 False 46
855 False 47
856 False 48
857 False 49
858 False 50
859 False 51
860 False 52
861 False 53
862 False 54
863 False 55
864 False 56
865 False 57
866 False 58
867 False 59
868 False 60
869 False 61
870 False 62
871 False 63
872 False 64
873 False 65
874 False 66
875 False 67
876 False 68
877 False 69
878 False 70
879 False 71
880 False 72
881 False 73
882 False 74
883 False 75
884 False 76
885 False 77
886 False 78
887 False 79
888 False 80
889 False 81
890 False 82
891 False 83
892 False 84
893 False 85
894 False 86
895 False 87
896 False 88
897 False 89
898 False 90
899 False 91
900 False 92
901 False 93
902 False 94
903 False 95
904 False 96
905 False 97
906 False 98
907 False 99
908 False 100
909 False 101
910 False 102
911 False 103
912 False 104
913 False 105
914 False 106
915 False 107
916 False 108
917 False 109
918 False 110
919 False 111
920 False 112
921 False 113
922 False 114
923 False 115
924 False 116
925 False 117
926 False 118
927 False 119
928 False 120
929 False 121
930 False 122
931 False 123
932 False 124
933 False 125
934 False 126
935 False 127
936 False 128
937 False 129
938 False 130
939 False 131
940 False 132
941 False 133
942 False 134
943 False 135
944 False 136
945 False 137
946 False 138
947 False 139
948 False 140
949 False 141
950 False 142
951 False 143
952 False 144
953 False 145
954 False 146
955 False 147
956 False 148
957 False 149
958 False 150
959 False 151
960 False 152
961 False 153
962 False 154
963 False 155
964 False 156
965 False 157
966 False 158
967 False 159
968 False 160
969 False 161
970 False 162
971 False 163
972 False 164
973 False 165
974 False 166
975 False 167
976 False 168
977 False 169
978 False 170
979 False 171
980 False 172
981 False 173
982 False 174
983 False 175
984 False 176
985 False 177
986 False 178
987 False 179
988 False 180
989 False 181
990 False 182
991 False 183
992 False 184
993 False 185
994 False 186
995 False 187
996 False 188
997 False 189
998 False 190
999 False 191
1000 False 192
1001 False 193
1002 False 194
1003 False 195
1004 False 196
1005 False 197
1006 False 198
1007 False 199
1008 False 200
1009 False 201
1010 False 202
1011 False 203
1012 False 204
1013 False 205
1014 False 206
1015 False 207
1016 False 208
1017 False 209
1018 False 210
1019 False 211
1020 False 212
1021 False 213
1022 False 214
1023 False 215
1024 False 216
1025 False 217
1026 False 218
1027 False 219
1028 False 220
1029 False 221
1030 False 222
1031 False 223
1032 False 224
1033 False 225
1034 False 226
1035 False 227
1036 False 228
1037 False 229
1038 False 230
1039 False 231
1040 False 232
1041 False 233
1042 False 234
1043 False 235
1044 False 236
1045 False 237
1046 False 238
1047 False 239
1048 False 240
1049 False 241
1050 False 242
1051 False 243
1052 False 244
1053 False 245
1054 False 246
1055 False 247
1056 False 248
1057 False 249
1058 False 250
1059 False 251
1060 False 252
1061 False 253
1062 False 254
1063 False 255
1064 False 256
1065 False 257
1066 False 258
1067 False 259
1068 False 260
1069 False 261
1070 False 262
1071 False 263
1072 False 264
1073 False 265
1074 False 266
1075 False 267
1076 False 268
1077 False 269
1078 False 270
1079 False 271
1080 False 272
1081 False 273
1082 False 274
1083 False 275
1084 False 276
1085 False 277
1086 False 278
1087 False 279
1088 False 280
1089 False 281
1090 False 282
1091 False 283
1092 False 284
1093 False 285
1094 False 286
1095 False 287
1096 False 288
1097 False 289
1098 False 290
1099 False 291
1100 False 292
1101 False 293
1102 False 294
1103 False 295
1104 False 296
1105 False 297
1106 False 298
1107 False 299
1108 False 300
1109 False 301
1110 False 302
1111 False 303
1112 False 304
1113 False 305
1114 False 306
1115 False 307
1116 False 308
1117 False 309
1118 False 310
1119 False 311
1120 False 312
1121 False 313
1122 False 314
1123 False 315
1124 False 316
1125 False 317
1126 False 318
1127 False 319
1128 False 320
1129 False 321
1130 False 322
1131 False 323
1132 False 324
1133 False 325
1134 False 326
1135 False 327
1136 False 328
1137 False 329
1138 False 330
1139 False 331
1140 False 332
1141 False 333
1142 False 334
1143 False 335
1144 False 336
1145 False 337
1146 False 338
1147 False 339
1148 False 340
1149 False 341
1150 False 342
1151 False 343
1152 False 344
1153 False 345
1154 False 346
1155 False 347
1156 False 348
1157 False 349
1158 False 350
1159 False 351
1160 False 352
1161 False 353
1162 False 354
1163 False 355
1164 False 356
1165 False 357
1166 False 358
1167 False 359
1168 False 360
1169 False 361
1170 False 362
1171 False 363
1172 False 364
1173 False 365
1174 False 366
1175 False 367
1176 False 368
1177 False 369
1178 False 370
1179 False 371
1180 False 372
1181 False 373
1182 False 374
1183 False 375
1184 False 376
1185 False 377
1186 False 378
1187 False 379
1188 False 380
1189 False 381
1190 False 382
1191 False 383
1192 False 384
1193 False 385
1194 False 386
1195 False 387
1196 False 388
1197 False 389
1198 False 390
1199 False 391
1200 False 392
1201 False 393
1202 False 394
1203 False 395
1204 False 396
1205 False 397
1206 False 398
1207 False 399
1208 False 400
1209 False 401
1210 False 402
1211 False 403
1212 False 404
1213 False 1
1214 False 2
1215 False 3
1216 False 4
1217 False 5
1218 False 6
1219 False 7
1220 False 8
1221 False 9
1222 False 10
1223 False 11
1224 False 12
1225 False 13
1226 False 14
1227 False 15
1228 False 16
1229 False 17
1230 False 18
1231 False 19
1232 False 20
1233 False 21
1234 False 22
1235 False 23
1236 False 24
1237 False 25
1238 False 26
1239 False 27
1240 False 28
1241 False 29
1242 False 30
1243 False 31
1244 False 32
1245 False 33
1246 False 34
1247 False 35
1248 False 36
1249 False 37
1250 False 38
1251 False 39
1252 False 40
1253 False 41
1254 False 42
1255 False 43
1256 False 44
1257 False 45
1258 False 46
1259 False 47
1260 False 48
1261 False 49
1262 False 50
1263 False 51
1264 False 52
1265 False 53
1266 False 54
1267 False 55
1268 False 56
1269 False 57
1270 False 58
1271 False 59
1272 False 60
1273 False 61
1274 False 62
1275 False 63
1276 False 64
1277 False 65
1278 False 66
1279 False 67
1280 False 68
1281 False 69
1282 False 70
1283 False 71
1284 False 72
1285 False 73
1286 False 74
1287 False 75
1288 False 76
1289 False 77
1290 False 78
1291 False 79
1292 False 80
1293 False 81
1294 False 82
1295 False 83
1296 False 84
1297 False 85
1298 False 86
1299 False 87
1300 False 88
1301 False 89
1302 False 90
1303 False 91
1304 False 92
1305 False 93
1306 False 94
1307 False 95
1308 False 96
1309 False 97
1310 False 98
1311 False 99
1312 False 100
1313 False 101
1314 False 102
1315 False 103
1316 False 104
1317 False 105
1318 False 106
1319 False 107
1320 False 108
1321 False 109
1322 False 110
1323 False 111
1324 False 112
1325 False 113
1326 False 114
1327 False 115
1328 False 116
1329 False 117
1330 False 118
1331 False 119
1332 False 120
1333 False 121
1334 False 122
1335 False 123
1336 False 124
1337 False 125
1338 False 126
1339 False 127
1340 False 128
1341 False 129
1342 False 130
1343 False 131
1344 False 132
1345 False 133
1346 False 134
1347 False 135
1348 False 136
1349 False 137
1350 False 138
1351 False 139
1352 False 140
1353 False 141
1354 False 142
1355 False 143
1356 False 144
1357 False 145
1358 False 146
1359 False 147
1360 False 148
1361 False 149
1362 False 150
1363 False 151
1364 False 152
1365 False 153
1366 False 154
1367 False 155
1368 False 156
1369 False 157
1370 False 158
1371 False 159
1372 False 160
1373 False 161
1374 False 162
1375 False 163
1376 False 164
1377 False 165
1378 False 166
1379 False 167
1380 False 168
1381 False 169
1382 False 170
1383 False 171
1384 False 172
1385 False 173
1386 False 174
1387 False 175
1388 False 176
1389 False 177
1390 False 178
1391 False 179
1392 False 180
1393 False 181
1394 False 182
1395 False 183
1396 False 184
1397 False 185
1398 False 186
1399 False 187
1400 False 188
1401 False 189
1402 False 190
1403 False 191
1404 False 192
1405 False 193
1406 False 194
1407 False 195
1408 False 196
1409 False 197
1410 False 198
1411 False 199
1412 False 200
1413 False 201
1414 False 202
1415 False 203
1416 False 204
1417 False 205
1418 False 206
1419 False 207
1420 False 208
1421 False 209
1422 False 210
1423 False 211
1424 False 212
1425 False 213
1426 False 214
1427 False 215
1428 False 216
1429 False 217
1430 False 218
1431 False 219
1432 False 220
1433 False 221
1434 False 222
1435 False 223
1436 False 224
1437 False 225
1438 False 226
1439 False 227
1440 False 228
1441 False 229
1442 False 230
1443 False 231
1444 False 232
1445 False 233
1446 False 234
1447 False 235
1448 False 236
1449 False 237
1450 False 238
1451 False 239
1452 False 240
1453 False 241
1454 False 242
1455 False 243
1456 False 244
1457 False 245
1458 False 246
1459 False 247
1460 False 248
1461 False 249
1462 False 250
1463 False 251
1464 False 252
1465 False 253
1466 False 254
1467 False 255
1468 False 256
1469 False 257
1470 False 258
1471 False 259
1472 False 260
1473 False 261
1474 False 262
1475 False 263
1476 False 264
1477 False 265
1478 False 266
1479 False 267
1480 False 268
1481 False 269
1482 False 270
1483 False 271
1484 False 272
1485 False 273
1486 False 274
1487 False 275
1488 False 276
1489 False 277
1490 False 278
1491 False 279
1492 False 280
1493 False 281
1494 False 282
1495 False 283
1496 False 284
1497 False 285
1498 False 286
1499 False 287
1500 False 288
1501 False 289
1502 False 290
1503 False 291
1504 False 292
1505 False 293
1506 False 294
1507 False 295
1508 False 296
1509 False 297
1510 False 298
1511 False 299
1512 False 300
1513 False 301
1514 False 302
1515 False 303
1516 False 304
1517 False 305
1518 False 306
1519 False 307
1520 False 308
1521 False 309
1522 False 310
1523 False 311
1524 False 312
1525 False 313
1526 False 314
1527 False 315
1528 False 316
1529 False 317
1530 False 318
1531 False 319
1532 False 320
1533 False 321
1534 False 322
1535 False 323
1536 False 324
1537 False 325
1538 False 326
1539 False 327
1540 False 328
1541 False 329
1542 False 330
1543 False 331
1544 False 332
1545 False 333
1546 False 334
1547 False 335
1548 False 336
1549 False 337
1550 False 338
1551 False 339
1552 False 340
1553 False 341
1554 False 342
1555 False 343
1556 False 344
1557 False 345
1558 False 346
1559 False 347
1560 False 348
1561 False 349
1562 False 350
1563 False 351
1564 False 352
1565 False 353
1566 False 354
1567 False 355
1568 False 356
1569 False 357
1570 False 358
1571 False 359
1572 False 360
1573 False 361
1574 False 362
1575 False 363
1576 False 364
1577 False 365
1578 False 366
1579 False 367
1580 False 368
1581 False 369
1582 False 370
1583 False 371
1584 False 372
1585 False 373
1586 False 374
1587 False 375
1588 False 376
1589 False 377
1590 False 378
1591 False 379
1592 False 380
1593 False 381
1594 False 382
1595 False 383
1596 False 384
1597 False 385
1598 False 386
1599 False 387
1600 False 388
1601 False 389
1602 False 390
1603 False 391
1604 False 392
1605 False 393
1606 False 394
1607 False 395
1608 False 396
1609 False 397
1610 False 398
1611 False 399
1612 False 400
1613 False 401
1614 False 402
1615 False 403
1616 False 404
1617 False 1
1618 False 2
1619 False 3
1620 False 4
1621 False 5
1622 False 6
1623 False 7
1624 False 8
1625 False 9
1626 False 10
1627 False 11
1628 False 12
1629 False 13
1630 False 14
1631 False 15
1632 False 16
1633 False 17
1634 False 18
1635 False 19
1636 False 20
1637 False 21
1638 False 22
1639 False 23
1640 False 24
1641 False 25
1642 False 26
1643 False 27
1644 False 28
1645 False 29
1646 False 30
1647 False 31
1648 False 32
1649 False 33
1650 False 34
1651 False 35
1652 False 36
1653 False 37
1654 False 38
1655 False 39
1656 False 40
1657 False 41
1658 False 42
1659 False 43
1660 False 44
1661 False 45
1662 False 46
1663 False 47
1664 False 48
1665 False 49
1666 False 50
1667 False 51
1668 False 52
1669 False 53
1670 False 54
1671 False 55
1672 False 56
1673 False 57
1674 False 58
1675 False 59
1676 False 60
1677 False 61
1678 False 62
1679 False 63
1680 False 64
1681 False 65
1682 False 66
1683 False 67
1684 False 68
1685 False 69
1686 False 70
1687 False 71
1688 False 72
1689 False 73
1690 False 74
1691 False 75
1692 False 76
1693 False 77
1694 False 78
1695 False 79
1696 False 80
1697 False 81
1698 False 82
1699 False 83
1700 False 84
1701 False 85
1702 False 86
1703 False 87
1704 False 88
1705 False 89
1706 False 90
1707 False 91
1708 False 92
1709 False 93
1710 False 94
1711 False 95
1712 False 96
1713 False 97
1714 False 98
1715 False 99
1716 False 100
1717 False 101
1718 False 102
1719 False 103
1720 False 104
1721 False 105
1722 False 106
1723 False 107
1724 False 108
1725 False 109
1726 False 110
1727 False 111
1728 False 112
1729 False 113
1730 False 114
1731 False 115
1732 False 116
1733 False 117
1734 False 118
1735 False 119
1736 False 120
1737 False 121
1738 False 122
1739 False 123
1740 False 124
1741 False 125
1742 False 126
1743 False 127
1744 False 128
1745 False 129
1746 False 130
1747 False 131
1748 False 132
1749 False 133
1750 False 134
1751 False 135
1752 False 136
1753 False 137
1754 False 138
1755 False 139
1756 False 140
1757 False 141
1758 False 142
1759 False 143
1760 False 144
1761 False 145
1762 False 146
1763 False 147
1764 False 148
1765 False 149
1766 False 150
1767 False 151
1768 False 152
1769 False 153
1770 False 154
1771 False 155
1772 False 156
1773 False 157
1774 False 158
1775 False 159
1776 False 160
1777 False 161
1778 False 162
1779 False 163
1780 False 164
1781 False 165
1782 False 166
1783 False 167
1784 False 168
1785 False 169
1786 False 170
1787 False 171
1788 False 172
1789 False 173
1790 False 174
1791 False 175
1792 False 176
1793 False 177
1794 False 178
1795 False 179
1796 False 180
1797 False 181
1798 False 182
1799 False 183
1800 False 184
1801 False 185
1802 False 186
1803 False 187
1804 False 188
1805 False 189
1806 False 190
1807 False 191
1808 False 192
1809 False 193
1810 False 194
1811 False 195
1812 False 196
1813 False 197
1814 False 198
1815 False 199
1816 False 200
1817 False 201
1818 False 202
1819 False 203
1820 False 204
1821 False 205
1822 False 206
1823 False 207
1824 False 208
1825 False 209
1826 False 210
1827 False 211
1828 False 212
1829 False 213
1830 False 214
1831 False 215
1832 False 216
1833 False 217
1834 False 218
1835 False 219
1836 False 220
1837 False 221
1838 False 222
1839 False 223
1840 False 224
1841 False 225
1842 False 226
1843 False 227
1844 False 228
1845 False 229
1846 False 230
1847 False 231
1848 False 232
1849 False 233
1850 False 234
1851 False 235
1852 False 236
1853 False 237
1854 False 238
1855 False 239
1856 False 240
1857 False 241
1858 False 242
1859 False 243
1860 False 244
1861 False 245
1862 False 246
1863 False 247
1864 False 248
1865 False 249
1866 False 250
1867 False 251
1868 False 252
1869 False 253
1870 False 254
1871 False 255
1872 False 256
1873 False 257
1874 False 258
1875 False 259
1876 False 260
1877 False 261
1878 False 262
1879 False 263
1880 False 264
1881 False 265
1882 False 266
1883 False 267
1884 False 268
1885 False 269
1886 False 270
1887 False 271
1888 False 272
1889 False 273
1890 False 274
1891 False 275
1892 False 276
1893 False 277
1894 False 278
1895 False 279
1896 False 280
1897 False 281
1898 False 282
1899 False 283
1900 False 284
1901 False 285
1902 False 286
1903 False 287
1904 False 288
1905 False 289
1906 False 290
1907 False 291
1908 False 292
1909 False 293
1910 False 294
1911 False 295
1912 False 296
1913 False 297
1914 False 298
1915 False 299
1916 False 300
1917 False 301
1918 False 302
1919 False 303
1920 False 304
1921 False 305
1922 False 306
1923 False 307
1924 False 308
1925 False 309
1926 False 310
1927 False 311
1928 False 312
1929 False 313
1930 False 314
1931 False 315
1932 False 316
1933 False 317
1934 False 318
1935 False 319
1936 False 320
1937 False 321
1938 False 322
1939 False 323
1940 False 324
1941 False 325
1942 False 326
1943 False 327
1944 False 328
1945 False 329
1946 False 330
1947 False 331
1948 False 332
1949 False 333
1950 False 334
1951 False 335
1952 False 336
1953 False 337
1954 False 338
1955 False 339
1956 False 340
1957 False 341
1958 False 342
1959 False 343
1960 False 344
1961 False 345
1962 False 346
1963 False 347
1964 False 348
1965 False 349
1966 False 350
1967 False 351
1968 False 352
1969 False 353
1970 False 354
1971 False 355
1972 False 356
1973 False 357
1974 False 358
1975 False 359
1976 False 360
1977 False 361
1978 False 362
1979 False 363
1980 False 364
1981 False 365
1982 False 366
1983 False 367
1984 False 368
1985 False 369
1986 False 370
1987 False 371
1988 False 372
1989 False 373
1990 False 374
1991 False 375
1992 False 376
1993 False 377
1994 False 378
1995 False 379
1996 False 380
1997 False 381
1998 False 382
1999 False 383
2000 False 384
2001 False 385
2002 False 386
2003 False 387
2004 False 388
2005 False 389
2006 False 390
2007 False 391
2008 False 392
2009 False 393
2010 False 394
2011 False 395
2012 False 396
2013 False 397
2014 False 398
2015 False 399
2016 False 400
2017 False 401
2018 False 402
2019 False 403
2020 False 404
2021 False 1
2022 False 2
2023 False 3
2024 False 4
2025 False 5
2026 False 6
2027 False 7
2028 False 8
2029 False 9
2030 False 10
2031 False 11
2032 False 12
2033 False 13
2034 False 14
2035 False 15
2036 False 16
2037 False 17
2038 False 18
2039 False 19
2040 False 20
2041 False 21
2042 False 22
2043 False 23
2044 False 24
2045 False 25
2046 False 26
2047 False 27
2048 False 28
2049 False 29
2050 False 30
2051 False 31
2052 False 32
2053 False 33
2054 False 34
2055 False 35
2056 False 36
2057 False 37
2058 False 38
2059 False 39
2060 False 40
2061 False 41
2062 False 42
2063 False 43
2064 False 44
2065 False 45
2066 False 46
2067 False 47
2068 False 48
2069 False 49
2070 False 50
2071 False 51
2072 False 52
2073 False 53
2074 False 54
2075 False 55
2076 False 56
2077 False 57
2078 False 58
2079 False 59
2080 False 60
2081 False 61
2082 False 62
2083 False 63
2084 False 64
2085 False 65
2086 False 66
2087 False 67
2088 False 68
2089 False 69
2090 False 70
2091 False 71
2092 False 72
2093 False 73
2094 False 74
2095 False 75
2096 False 76
2097 False 77
2098 False 78
2099 False 79
2100 False 80
2101 False 81
2102 False 82
2103 False 83
2104 False 84
2105 False 85
2106 False 86
2107 False 87
2108 False 88
2109 False 89
2110 False 90
2111 False 91
2112 False 92
2113 False 93
2114 False 94
2115 False 95
2116 False 96
2117 False 97
2118 False 98
2119 False 99
2120 False 100
2121 False 101
2122 False 102
2123 False 103
2124 False 104
2125 False 105
2126 False 106
2127 False 107
2128 False 108
2129 False 109
2130 False 110
2131 False 111
2132 False 112
2133 False 113
2134 False 114
2135 False 115
2136 False 116
2137 False 117
2138 False 118
2139 False 119
2140 False 120
2141 False 121
2142 False 122
2143 False 123
2144 False 124
2145 False 125
2146 False 126
2147 False 127
2148 False 128
2149 False 129
2150 False 130
2151 False 131
2152 False 132
2153 False 133
2154 False 134
2155 False 135
2156 False 136
2157 False 137
2158 False 138
2159 False 139
2160 False 140
2161 False 141
2162 False 142
2163 False 143
2164 False 144
2165 False 145
2166 False 146
2167 False 147
2168 False 148
2169 False 149
2170 False 150
2171 False 151
2172 False 152
2173 False 153
2174 False 154
2175 False 155
2176 False 156
2177 False 157
2178 False 158
2179 False 159
2180 False 160
2181 False 161
2182 False 162
2183 False 163
2184 False 164
2185 False 165
2186 False 166
2187 False 167
2188 False 168
2189 False 169
2190 False 170
2191 False 171
2192 False 172
2193 False 173
2194 False 174
2195 False 175
2196 False 176
2197 False 177
2198 False 178
2199 False 179
2200 False 180
2201 False 181
2202 False 182
2203 False 183
2204 False 184
2205 False 185
2206 False 186
2207 False 187
2208 False 188
2209 False 189
2210 False 190
2211 False 191
2212 False 192
2213 False 193
2214 False 194
2215 False 195
2216 False 196
2217 False 197
2218 False 198
2219 False 199
2220 False 200
2221 False 201
2222 False 202
2223 False 203
2224 False 204
2225 False 205
2226 False 206
2227 False 207
2228 False 208
2229 False 209
2230 False 210
2231 False 211
2232 False 212
2233 False 213
2234 False 214
2235 False 215
2236 False 216
2237 False 217
2238 False 218
2239 False 219
2240 False 220
2241 False 221
2242 False 222
2243 False 223
2244 False 224
2245 False 225
2246 False 226
2247 False 227
2248 False 228
2249 False 229
2250 False 230
2251 False 231
2252 False 232
2253 False 233
2254 False 234
2255 False 235
2256 False 236
2257 False 237
2258 False 238
2259 False 239
2260 False 240
2261 False 241
2262 False 242
2263 False 243
2264 False 244
2265 False 245
2266 False 246
2267 False 247
2268 False 248
2269 False 249
2270 False 250
2271 False 251
2272 False 252
2273 False 253
2274 False 254
2275 False 255
2276 False 256
2277 False 257
2278 False 258
2279 False 259
2280 False 260
2281 False 261
2282 False 262
2283 False 263
2284 False 264
2285 False 265
2286 False 266
2287 False 267
2288 False 268
2289 False 269
2290 False 270
2291 False 271
2292 False 272
2293 False 273
2294 False 274
2295 False 275
2296 False 276
2297 False 277
2298 False 278
2299 False 279
2300 False 280
2301 False 281
2302 False 282
2303 False 283
2304 False 284
2305 False 285
2306 False 286
2307 False 287
2308 False 288
2309 False 289
2310 False 290
2311 False 291
2312 False 292
2313 False 293
2314 False 294
2315 False 295
2316 False 296
2317 False 297
2318 False 298
2319 False 299
2320 False 300
2321 False 301
2322 False 302
2323 False 303
2324 False 304
2325 False 305
2326 False 306
2327 False 307
2328 False 308
2329 False 309
2330 False 310
2331 False 311
2332 False 312
2333 False 313
2334 False 314
2335 False 315
2336 False 316
2337 False 317
2338 False 318
2339 False 319
2340 False 320
2341 False 321
2342 False 322
2343 False 323
2344 False 324
2345 False 325
2346 False 326
2347 False 327
2348 False 328
2349 False 329
2350 False 330
2351 False 331
2352 False 332
2353 False 333
2354 False 334
2355 False 335
2356 False 336
2357 False 337
2358 False 338
2359 False 339
2360 False 340
2361 False 341
2362 False 342
2363 False 343
2364 False 344
2365 False 345
2366 False 346
2367 False 347
2368 False 348
2369 False 349
2370 False 350
2371 False 351
2372 False 352
2373 False 353
2374 False 354
2375 False 355
2376 False 356
2377 False 357
2378 False 358
2379 False 359
2380 False 360
2381 False 361
2382 False 362
2383 False 363
2384 False 364
2385 False 365
2386 False 366
2387 False 367
2388 False 368
2389 False 369
2390 False 370
2391 False 371
2392 False 372
2393 False 373
2394 False 374
2395 False 375
2396 False 376
2397 False 377
2398 False 378
2399 False 379
2400 False 380
2401 False 381
2402 False 382
2403 False 383
2404 False 384
2405 False 385
2406 False 386
2407 False 387
2408 False 388
2409 False 389
2410 False 390
2411 False 391
2412 False 392
2413 False 393
2414 False 394
2415 False 395
2416 False 396
2417 False 397
2418 False 398
2419 False 399
2420 False 400
2421 False 401
2422 False 402
2423 False 403
2424 False 404
2425 False 1
2426 False 2
2427 False 3
2428 False 4
2429 False 5
2430 False 6
2431 False 7
2432 False 8
2433 False 9
2434 False 10
2435 False 11
2436 False 12
2437 False 13
2438 False 14
2439 False 15
2440 False 16
2441 False 17
2442 False 18
2443 False 19
2444 False 20
2445 False 21
2446 False 22
2447 False 23
2448 False 24
2449 False 25
2450 False 26
2451 False 27
2452 False 28
2453 False 29
2454 False 30
2455 False 31
2456 False 32
2457 False 33
2458 False 34
2459 False 35
2460 False 36
2461 False 37
2462 False 38
2463 False 39
2464 False 40
2465 False 41
2466 False 42
2467 False 43
2468 False 44
2469 False 45
2470 False 46
2471 False 47
2472 False 48
2473 False 49
2474 False 50
2475 False 51
2476 False 52
2477 False 53
2478 False 54
2479 False 55
2480 False 56
2481 False 57
2482 False 58
2483 False 59
2484 False 60
2485 False 61
2486 False 62
2487 False 63
2488 False 64
2489 False 65
2490 False 66
2491 False 67
2492 False 68
2493 False 69
2494 False 70
2495 False 71
2496 False 72
2497 False 73
2498 False 74
2499 False 75
2500 False 76
2501 False 77
2502 False 78
2503 False 79
2504 False 80
2505 False 81
2506 False 82
2507 False 83
2508 False 84
2509 False 85
2510 False 86
2511 False 87
2512 False 88
2513 False 89
2514 False 90
2515 False 91
2516 False 92
2517 False 93
2518 False 94
2519 False 95
2520 False 96
2521 False 97
2522 False 98
2523 False 99
2524 False 100
2525 False 101
2526 False 102
2527 False 103
2528 False 104
2529 False 105
2530 False 106
2531 False 107
2532 False 108
2533 False 109
2534 False 110
2535 False 111
2536 False 112
2537 False 113
2538 False 114
2539 False 115
2540 False 116
2541 False 117
2542 False 118
2543 False 119
2544 False 120
2545 False 121
2546 False 122
2547 False 123
2548 False 124
2549 False 125
2550 False 126
2551 False 127
2552 False 128
2553 False 129
2554 False 130
2555 False 131
2556 False 132
2557 False 133
2558 False 134
2559 False 135
2560 False 136
2561 False 137
2562 False 138
2563 False 139
2564 False 140
2565 False 141
2566 False 142
2567 False 143
2568 False 144
2569 False 145
2570 False 146
2571 False 147
2572 False 148
2573 False 149
2574 False 150
2575 False 151
2576 False 152
2577 False 153
2578 False 154
2579 False 155
2580 False 156
2581 False 157
2582 False 158
2583 False 159
2584 False 160
2585 False 161
2586 False 162
2587 False 163
2588 False 164
2589 False 165
2590 False 166
2591 False 167
2592 False 168
2593 False 169
2594 False 170
2595 False 171
2596 False 172
2597 False 173
2598 False 174
2599 False 175
2600 False 176
2601 False 177
2602 False 178
2603 False 179
2604 False 180
2605 False 181
2606 False 182
2607 False 183
2608 False 184
2609 False 185
2610 False 186
2611 False 187
2612 False 188
2613 False 189
2614 False 190
2615 False 191
2616 False 192
2617 False 193
2618 False 194
2619 False 195
2620 False 196
2621 False 197
2622 False 198
2623 False 199
2624 False 200
2625 False 201
2626 False 202
2627 False 203
2628 False 204
2629 False 205
2630 False 206
2631 False 207
2632 False 208
2633 False 209
2634 False 210
2635 False 211
2636 False 212
2637 False 213
2638 False 214
2639 False 215
2640 False 216
2641 False 217
2642 False 218
2643 False 219
2644 False 220
2645 False 221
2646 False 222
2647 False 223
2648 False 224
2649 False 225
2650 False 226
2651 False 227
2652 False 228
2653 False 229
2654 False 230
2655 False 231
2656 False 232
2657 False 233
2658 False 234
2659 False 235
2660 False 236
2661 False 237
2662 False 238
2663 False 239
2664 False 240
2665 False 241
2666 False 242
2667 False 243
2668 False 244
2669 False 245
2670 False 246
2671 False 247
2672 False 248
2673 False 249
2674 False 250
2675 False 251
2676 False 252
2677 False 253
2678 False 254
2679 False 255
2680 False 256
2681 False 257
2682 False 258
2683 False 259
2684 False 260
2685 False 261
2686 False 262
2687 False 263
2688 False 264
2689 False 265
2690 False 266
2691 False 267
2692 False 268
2693 False 269
2694 False 270
2695 False 271
2696 False 272
2697 False 273
2698 False 274
2699 False 275
2700 False 276
2701 False 277
2702 False 278
2703 False 279
2704 False 280
2705 False 281
2706 False 282
2707 False 283
2708 False 284
2709 False 285
2710 False 286
2711 False 287
2712 False 288
2713 False 289
2714 False 290
2715 False 291
2716 False 292
2717 False 293
2718 False 294
2719 False 295
2720 False 296
2721 False 297
2722 False 298
2723 False 299
2724 False 300
2725 False 301
2726 False 302
2727 False 303
2728 False 304
2729 False 305
2730 False 306
2731 False 307
2732 False 308
2733 False 309
2734 False 310
2735 False 311
2736 False 312
2737 False 313
2738 False 314
2739 False 315
2740 False 316
2741 False 317
2742 False 318
2743 False 319
2744 False 320
2745 False 321
2746 False 322
2747 False 323
2748 False 324
2749 False 325
2750 False 326
2751 False 327
2752 False 328
2753 False 329
2754 False 330
2755 False 331
2756 False 332
2757 False 333
2758 False 334
2759 False 335
2760 False 336
2761 False 337
2762 False 338
2763 False 339
2764 False 340
2765 False 341
2766 False 342
2767 False 343
2768 False 344
2769 False 345
2770 False 346
2771 False 347
2772 False 348
2773 False 349
2774 False 350
2775 False 351
2776 False 352
2777 False 353
2778 False 354
2779 False 355
2780 False 356
2781 False 357
2782 False 358
2783 False 359
2784 False 360
2785 False 361
2786 False 362
2787 False 363
2788 False 364
2789 False 365
2790 False 366
2791 False 367
2792 False 368
2793 False 369
2794 False 370
2795 False 371
2796 False 372
2797 False 373
2798 False 374
2799 False 375
2800 False 376
2801 False 377
2802 False 378
2803 False 379
2804 False 380
2805 False 381
2806 False 382
2807 False 383
2808 False 384
2809 False 385
2810 False 386
2811 False 387
2812 False 388
2813 False 389
2814 False 390
2815 False 391
2816 False 392
2817 False 393
2818 False 394
2819 False 395
2820 False 396
2821 False 397
2822 False 398
2823 False 399
2824 False 400
2825 False 401
2826 False 402
2827 False 403
2828 False 404
2829 False 1
2830 False 2
2831 False 3
2832 False 4
2833 False 5
2834 False 6
2835 False 7
2836 False 8
2837 False 9
2838 False 10
2839 False 11
2840 False 12
2841 False 13
2842 False 14
2843 False 15
2844 False 16
2845 False 17
2846 False 18
2847 False 19
2848 False 20
2849 False 21
2850 False 22
2851 False 23
2852 False 24
2853 False 25
2854 False 26
2855 False 27
2856 False 28
2857 False 29
2858 False 30
2859 False 31
2860 False 32
2861 False 33
2862 False 34
2863 False 35
2864 False 36
2865 False 37
2866 False 38
2867 False 39
2868 False 40
2869 False 41
2870 False 42
2871 False 43
2872 False 44
2873 False 45
2874 False 46
2875 False 47
2876 False 48
2877 False 49
2878 False 50
2879 False 51
2880 False 52
2881 False 53
2882 False 54
2883 False 55
2884 False 56
2885 False 57
2886 False 58
2887 False 59
2888 False 60
2889 False 61
2890 False 62
2891 False 63
2892 False 64
2893 False 65
2894 False 66
2895 False 67
2896 False 68
2897 False 69
2898 False 70
2899 False 71
2900 False 72
2901 False 73
2902 False 74
2903 False 75
2904 False 76
2905 False 77
2906 False 78
2907 False 79
2908 False 80
2909 False 81
2910 False 82
2911 False 83
2912 False 84
2913 False 85
2914 False 86
2915 False 87
2916 False 88
2917 False 89
2918 False 90
2919 False 91
2920 False 92
2921 False 93
2922 False 94
2923 False 95
2924 False 96
2925 False 97
2926 False 98
2927 False 99
2928 False 100
2929 False 101
2930 False 102
2931 False 103
2932 False 104
2933 False 105
2934 False 106
2935 False 107
2936 False 108
2937 False 109
2938 False 110
2939 False 111
2940 False 112
2941 False 113
2942 False 114
2943 False 115
2944 False 116
2945 False 117
2946 False 118
2947 False 119
2948 False 120
2949 False 121
2950 False 122
2951 False 123
2952 False 124
2953 False 125
2954 False 126
2955 False 127
2956 False 128
2957 False 129
2958 False 130
2959 False 131
2960 False 132
2961 False 133
2962 False 134
2963 False 135
2964 False 136
2965 False 137
2966 False 138
2967 False 139
2968 False 140
2969 False 141
2970 False 142
2971 False 143
2972 False 144
2973 False 145
2974 False 146
2975 False 147
2976 False 148
2977 False 149
2978 False 150
2979 False 151
2980 False 152
2981 False 153
2982 False 154
2983 False 155
2984 False 156
2985 False 157
2986 False 158
2987 False 159
2988 False 160
2989 False 161
2990 False 162
2991 False 163
2992 False 164
2993 False 165
2994 False 166
2995 False 167
2996 False 168
2997 False 169
2998 False 170
2999 False 171
3000 False 172
3001 False 173
3002 False 174
3003 False 175
3004 False 176
3005 False 177
3006 False 178
3007 False 179
3008 False 180
3009 False 181
3010 False 182
3011 False 183
3012 False 184
3013 False 185
3014 False 186
3015 False 187
3016 False 188
3017 False 189
3018 False 190
3019 False 191
3020 False 192
3021 False 193
3022 False 194
3023 False 195
3024 False 196
3025 False 197
3026 False 198
3027 False 199
3028 False 200
3029 False 201
3030 False 202
3031 False 203
3032 False 204
3033 False 205
3034 False 206
3035 False 207
3036 False 208
3037 False 209
3038 False 210
3039 False 211
3040 False 212
3041 False 213
3042 False 214
3043 False 215
3044 False 216
3045 False 217
3046 False 218
3047 False 219
3048 False 220
3049 False 221
3050 False 222
3051 False 223
3052 False 224
3053 False 225
3054 False 226
3055 False 227
3056 False 228
3057 False 229
3058 False 230
3059 False 231
3060 False 232
3061 False 233
3062 False 234
3063 False 235
3064 False 236
3065 False 237
3066 False 238
3067 False 239
3068 False 240
3069 False 241
3070 False 242
3071 False 243
3072 False 244
3073 False 245
3074 False 246
3075 False 247
3076 False 248
3077 False 249
3078 False 250
3079 False 251
3080 False 252
3081 False 253
3082 False 254
3083 False 255
3084 False 256
3085 False 257
3086 False 258
3087 False 259
3088 False 260
3089 False 261
3090 False 262
3091 False 263
3092 False 264
3093 False 265
3094 False 266
3095 False 267
3096 False 268
3097 False 269
3098 False 270
3099 False 271
3100 False 272
3101 False 273
3102 False 274
3103 False 275
3104 False 276
3105 False 277
3106 False 278
3107 False 279
3108 False 280
3109 False 281
3110 False 282
3111 False 283
3112 False 284
3113 False 285
3114 False 286
3115 False 287
3116 False 288
3117 False 289
3118 False 290
3119 False 291
3120 False 292
3121 False 293
3122 False 294
3123 False 295
3124 False 296
3125 False 297
3126 False 298
3127 False 299
3128 False 300
3129 False 301
3130 False 302
3131 False 303
3132 False 304
3133 False 305
3134 False 306
3135 False 307
3136 False 308
3137 False 309
3138 False 310
3139 False 311
3140 False 312
3141 False 313
3142 False 314
3143 False 315
3144 False 316
3145 False 317
3146 False 318
3147 False 319
3148 False 320
3149 False 321
3150 False 322
3151 False 323
3152 False 324
3153 False 325
3154 False 326
3155 False 327
3156 False 328
3157 False 329
3158 False 330
3159 False 331
3160 False 332
3161 False 333
3162 False 334
3163 False 335
3164 False 336
3165 False 337
3166 False 338
3167 False 339
3168 False 340
3169 False 341
3170 False 342
3171 False 343
3172 False 344
3173 False 345
3174 False 346
3175 False 347
3176 False 348
3177 False 349
3178 False 350
3179 False 351
3180 False 352
3181 False 353
3182 False 354
3183 False 355
3184 False 356
3185 False 357
3186 False 358
3187 False 359
3188 False 360
3189 False 361
3190 False 362
3191 False 363
3192 False 364
3193 False 365
3194 False 366
3195 False 367
3196 False 368
3197 False 369
3198 False 370
3199 False 371
3200 False 372
3201 False 373
3202 False 374
3203 False 375
3204 False 376
3205 False 377
3206 False 378
3207 False 379
3208 False 380
3209 False 381
3210 False 382
3211 False 383
3212 False 384
3213 False 385
3214 False 386
3215 False 387
3216 False 388
3217 False 389
3218 False 390
3219 False 391
3220 False 392
3221 False 393
3222 False 394
3223 False 395
3224 False 396
3225 False 397
3226 False 398
3227 False 399
3228 False 400
3229 False 401
3230 False 402
3231 False 403
3232 False 404
3233 False 1
3234 False 2
3235 False 3
3236 False 4
3237 False 5
3238 False 6
3239 False 7
3240 False 8
3241 False 9
3242 False 10
3243 False 11
3244 False 12
3245 False 13
3246 False 14
3247 False 15
3248 False 16
3249 False 17
3250 False 18
3251 False 19
3252 False 20
3253 False 21
3254 False 22
3255 False 23
3256 False 24
3257 False 25
3258 False 26
3259 False 27
3260 False 28
3261 False 29
3262 False 30
3263 False 31
3264 False 32
3265 False 33
3266 False 34
3267 False 35
3268 False 36
3269 False 37
3270 False 38
3271 False 39
3272 False 40
3273 False 41
3274 False 42
3275 False 43
3276 False 44
3277 False 45
3278 False 46
3279 False 47
3280 False 48
3281 False 49
3282 False 50
3283 False 51
3284 False 52
3285 False 53
3286 False 54
3287 False 55
3288 False 56
3289 False 57
3290 False 58
3291 False 59
3292 False 60
3293 False 61
3294 False 62
3295 False 63
3296 False 64
3297 False 65
3298 False 66
3299 False 67
3300 False 68
3301 False 69
3302 False 70
3303 False 71
3304 False 72
3305 False 73
3306 False 74
3307 False 75
3308 False 76
3309 False 77
3310 False 78
3311 False 79
3312 False 80
3313 False 81
3314 False 82
3315 False 83
3316 False 84
3317 False 85
3318 False 86
3319 False 87
3320 False 88
3321 False 89
3322 False 90
3323 False 91
3324 False 92
3325 False 93
3326 False 94
3327 False 95
3328 False 96
3329 False 97
3330 False 98
3331 False 99
3332 False 100
3333 False 101
3334 False 102
3335 False 103
3336 False 104
3337 False 105
3338 False 106
3339 False 107
3340 False 108
3341 False 109
3342 False 110
3343 False 111
3344 False 112
3345 False 113
3346 False 114
3347 False 115
3348 False 116
3349 False 117
3350 False 118
3351 False 119
3352 False 120
3353 False 121
3354 False 122
3355 False 123
3356 False 124
3357 False 125
3358 False 126
3359 False 127
3360 False 128
3361 False 129
3362 False 130
3363 False 131
3364 False 132
3365 False 133
3366 False 134
3367 False 135
3368 False 136
3369 False 137
3370 False 138
3371 False 139
3372 False 140
3373 False 141
3374 False 142
3375 False 143
3376 False 144
3377 False 145
3378 False 146
3379 False 147
3380 False 148
3381 False 149
3382 False 150
3383 False 151
3384 False 152
3385 False 153
3386 False 154
3387 False 155
3388 False 156
3389 False 157
3390 False 158
3391 False 159
3392 False 160
3393 False 161
3394 False 162
3395 False 163
3396 False 164
3397 False 165
3398 False 166
3399 False 167
3400 False 168
3401 False 169
3402 False 170
3403 False 171
3404 False 172
3405 False 173
3406 False 174
3407 False 175
3408 False 176
3409 False 177
3410 False 178
3411 False 179
3412 False 180
3413 False 181
3414 False 182
3415 False 183
3416 False 184
3417 False 185
3418 False 186
3419 False 187
3420 False 188
3421 False 189
3422 False 190
3423 False 191
3424 False 192
3425 False 193
3426 False 194
3427 False 195
3428 False 196
3429 False 197
3430 False 198
3431 False 199
3432 False 200
3433 False 201
3434 False 202
3435 False 203
3436 False 204
3437 False 205
3438 False 206
3439 False 207
3440 False 208
3441 False 209
3442 False 210
3443 False 211
3444 False 212
3445 False 213
3446 False 214
3447 False 215
3448 False 216
3449 False 217
3450 False 218
3451 False 219
3452 False 220
3453 False 221
3454 False 222
3455 False 223
3456 False 224
3457 False 225
3458 False 226
3459 False 227
3460 False 228
3461 False 229
3462 False 230
3463 False 231
3464 False 232
3465 False 233
3466 False 234
3467 False 235
3468 False 236
3469 False 237
3470 False 238
3471 False 239
3472 False 240
3473 False 241
3474 False 242
3475 False 243
3476 False 244
3477 False 245
3478 False 246
3479 False 247
3480 False 248
3481 False 249
3482 False 250
3483 False 251
3484 False 252
3485 False 253
3486 False 254
3487 False 255
3488 False 256
3489 False 257
3490 False 258
3491 False 259
3492 False 260
3493 False 261
3494 False 262
3495 False 263
3496 False 264
3497 False 265
3498 False 266
3499 False 267
3500 False 268
3501 False 269
3502 False 270
3503 False 271
3504 False 272
3505 False 273
3506 False 274
3507 False 275
3508 False 276
3509 False 277
3510 False 278
3511 False 279
3512 False 280
3513 False 281
3514 False 282
3515 False 283
3516 False 284
3517 False 285
3518 False 286
3519 False 287
3520 False 288
3521 False 289
3522 False 290
3523 False 291
3524 False 292
3525 False 293
3526 False 294
3527 False 295
3528 False 296
3529 False 297
3530 False 298
3531 False 299
3532 False 300
3533 False 301
3534 False 302
3535 False 303
3536 False 304
3537 False 305
3538 False 306
3539 False 307
3540 False 308
3541 False 309
3542 False 310
3543 False 311
3544 False 312
3545 False 313
3546 False 314
3547 False 315
3548 False 316
3549 False 317
3550 False 318
3551 False 319
3552 False 320
3553 False 321
3554 False 322
3555 False 323
3556 False 324
3557 False 325
3558 False 326
3559 False 327
3560 False 328
3561 False 329
3562 False 330
3563 False 331
3564 False 332
3565 False 333
3566 False 334
3567 False 335
3568 False 336
3569 False 337
3570 False 338
3571 False 339
3572 False 340
3573 False 341
3574 False 342
3575 False 343
3576 False 344
3577 False 345
3578 False 346
3579 False 347
3580 False 348
3581 False 349
3582 False 350
3583 False 351
3584 False 352
3585 False 353
3586 False 354
3587 False 355
3588 False 356
3589 False 357
3590 False 358
3591 False 359
3592 False 360
3593 False 361
3594 False 362
3595 False 363
3596 False 364
3597 False 365
3598 False 366
3599 False 367
3600 False 368
3601 False 369
3602 False 370
3603 False 371
3604 False 372
3605 False 373
3606 False 374
3607 False 375
3608 False 376
3609 False 377
3610 False 378
3611 False 379
3612 False 380
3613 False 381
3614 False 382
3615 False 383
3616 False 384
3617 False 385
3618 False 386
3619 False 387
3620 False 388
3621 False 389
3622 False 390
3623 False 391
3624 False 392
3625 False 393
3626 False 394
3627 False 395
3628 False 396
3629 False 397
3630 False 398
3631 False 399
3632 False 400
3633 False 401
3634 False 402
3635 False 403
3636 False 404
3637 True 0
3638 True 0
3639 True 0
3640 True 0
3641 True 0
3642 True 0
3643 True 0
3644 True 0
3645 True 0
3646 True 0
3647 True 0
3648 True 0
3649 True 0
3650 True 0
3651 True 0
3652 True 0
3653 True 0
3654 True 0


Which residues are our original pose residues? Note that the final residues are called Virtual residues. Virtual residues are not scored. They have coordinates, and can move, but simply result in a score of zero. They are useful in some contexts to hide a part of the pose from the scoring machinery, and there are movers that can change residues to and from virtual. In this case, they are used for the FoldTree - in order to allow refinement of the full crystal environment. They allow relative movement of each subunit relative to each other. There are two virtual residues for each subunit

In [43]:
print(p.residue(3654))

Residue 3654: VRT (XXX, X):
Base: VRT
Properties: LIGAND VIRTUAL_RESIDUE
Variant types:
Main-chain atoms:
Backbone atoms:
Side-chain atoms: ORIG  X    Y
Atom Coordinates:
ORIG: 126.048, 44.0754, 19.9707 (virtual)
X  : 127.048, 44.0754, 19.9707 (virtual)
Y  : 126.048, 43.0754, 19.9707 (virtual)
Mirrored relative to coordinates in ResidueType: FALSE


In [44]:
print("Total Subunits:", (3654-18)/404)
print("Total Subunits:", sym_info.subunits())

Total Subunits: 9.0
Total Subunits: 9

In [45]:
score = get_score_function()
print(score(original))
print(score(p))

core.scoring.ScoreFunctionFactory: SCOREFUNCTION: ref2015
core.scoring.ScoreFunctionFactory: The -include_sugars flag was used with no sugar_bb weight set in the weights file.  Setting sugar_bb weight to 1.0 by default.
-531.2534669946483
-1132.7274634504747


## Running Protocols with Symmetry¶

Now, lets try running a minimization with symmetry on.

In [54]:
mm = MoveMap()
mm.set_bb(True)
mm.set_chi(True)
minmover = rosetta.protocols.minimization_packing.MinMover()
minmover.score_function(score)
minmover.set_movemap(mm)
if not os.getenv("DEBUG"):
minmover.apply(p)

In [55]:
score(p)

Out[55]:
-1147.371462425749

How does our pose look? For being such a large pose, how was the speed of minimization?

How does this compare to our refined pose? Try to copy a subunit to a new object in PyMol. Then use the align command to align it to our assymetric unit. What is the RMSD?

Now lets pack with our symmetric structure.

In [68]:
from rosetta.core.pack.task import *

packer = PackRotamersMover()

tf.push_back(RestrictToRepacking())
tf.push_back(IncludeCurrent())

p = original.clone()
symmetrize.apply(p)

core.conformation.symmetry.util: =================== SYM FOLD TREE, jump notation: =symfixed= *indep* #symdof# jump[=follows] ========================
VRT_0_0_0_0(3637)
|----#j10#--->VRT_0_0_0_0_base(3638)----#j1#------>1:Sub1A(1-400)
|----=j11=--->VRT_1_1_0_n1(3643)---j12=10--->VRT_1_1_0_n1_base(3644)----j2=1---->1213:Sub4A(1213-1612)
|----=j13=--->VRT_2_1_1_0(3645)---j14=10--->VRT_2_1_1_0_base(3646)----j3=1---->1617:Sub5A(1617-2016)
|----=j15=--->VRT_3_0_n1_0(3647)---j16=10--->VRT_3_0_n1_0_base(3648)----j4=1---->2021:Sub6A(2021-2420)
|----=j17=--->VRT_3_1_0_0(3649)---j18=10--->VRT_3_1_0_0_base(3650)----j5=1---->2425:Sub7A(2425-2824)
|----=j19=--->VRT_4_2_1_0(3639)---j20=10--->VRT_4_2_1_0_base(3640)----j6=1---->405:Sub2A(405-804)
|----=j21=--->VRT_4_2_1_n1(3641)---j22=10--->VRT_4_2_1_n1_base(3642)----j7=1---->809:Sub3A(809-1208)
|----=j23=--->VRT_5_0_1_0(3651)---j24=10--->VRT_5_0_1_0_base(3652)----j8=1---->2829:Sub8A(2829-3228)
\----=j25=--->VRT_5_1_1_0(3653)---j26=10--->VRT_5_1_1_0_base(3654)----j9=1---->3233:Sub9A(3233-3632)
core.conformation.symmetry.Conformation: Found disulfide between residues 5 32
core.conformation.symmetry.Conformation: current variant for 5 CYD
core.conformation.symmetry.Conformation: current variant for 32 CYD
core.conformation.symmetry.Conformation: current variant for 5 CYD
core.conformation.symmetry.Conformation: current variant for 32 CYD
core.conformation.symmetry.Conformation: Add symmetric chemical bond 409 to 436
core.conformation.symmetry.Conformation: Add symmetric chemical bond 813 to 840
core.conformation.symmetry.Conformation: Add symmetric chemical bond 1217 to 1244
core.conformation.symmetry.Conformation: Add symmetric chemical bond 1621 to 1648
core.conformation.symmetry.Conformation: Add symmetric chemical bond 2025 to 2052
core.conformation.symmetry.Conformation: Add symmetric chemical bond 2429 to 2456
core.conformation.symmetry.Conformation: Add symmetric chemical bond 2833 to 2860
core.conformation.symmetry.Conformation: Add symmetric chemical bond 3237 to 3264
core.conformation.symmetry.Conformation: Add symmetric chemical bond 5 to 32
core.conformation.symmetry.Conformation: Found disulfide between residues 302 385
core.conformation.symmetry.Conformation: current variant for 302 CYD
core.conformation.symmetry.Conformation: current variant for 385 CYD
core.conformation.symmetry.Conformation: current variant for 302 CYD
core.conformation.symmetry.Conformation: current variant for 385 CYD
core.conformation.symmetry.Conformation: Add symmetric chemical bond 706 to 789
core.conformation.symmetry.Conformation: Add symmetric chemical bond 1110 to 1193
core.conformation.symmetry.Conformation: Add symmetric chemical bond 1514 to 1597
core.conformation.symmetry.Conformation: Add symmetric chemical bond 1918 to 2001
core.conformation.symmetry.Conformation: Add symmetric chemical bond 2322 to 2405
core.conformation.symmetry.Conformation: Add symmetric chemical bond 2726 to 2809
core.conformation.symmetry.Conformation: Add symmetric chemical bond 3130 to 3213
core.conformation.symmetry.Conformation: Add symmetric chemical bond 3534 to 3617
core.conformation.symmetry.Conformation: Add symmetric chemical bond 302 to 385
core.conformation.carbohydrates.GlycanTreeSet: Setting up Glycan Trees
core.conformation.carbohydrates.GlycanTreeSet: Found 9 glycan trees.

In [69]:
if not os.getenv("DEBUG"):
packer.apply(p)

protocols.minimization_packing.PackRotamersMover: [ WARNING ] undefined ScoreFunction -- creating a default one
core.scoring.ScoreFunctionFactory: SCOREFUNCTION: ref2015
core.scoring.ScoreFunctionFactory: The -include_sugars flag was used with no sugar_bb weight set in the weights file.  Setting sugar_bb weight to 1.0 by default.
core.pack.rotamer_set.RotamerSet_: [ WARNING ] including current in order to get at least 1 rotamer !!!!!! 180 ASN:N-glycosylated
core.pack.pack_rotamers: built 5259 rotamers at 404 positions.
core.pack.interaction_graph.interaction_graph_factory: Instantiating DensePDInteractionGraph

In [70]:
print("packed", score(p))

packed -1960.9189300248413


## Conclusions¶

Symmetry is a useful tool in the Rosetta Library. There are also selectors and movers that you may find useful, such as the AsymmetricUnitSelector in rosetta.core.select.residue_selectors and the ExtractAsymmetricUnitMover, which will give you back just the single subunit, without any asymetric partners, and the ExtractAsymmetricPoseMover, which will remove 'symmetry' information and give you back a pose with all the subunits. The later of these can be found by importing rosetta.protocols.symmetry.

Note that not ALL protocols will respect symmetry - so please check the original documentation to see if symmetry is supported. If you are unsure, please email the developer.

In [ ]:



Chapter contributors:

• Jared Adolf-Bryfogle (Scripps; Institute for Protein Innovation)