{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "*This notebook contains material from [PyRosetta](https://RosettaCommons.github.io/PyRosetta.notebooks);\n", "content is available [on Github](https://github.com/RosettaCommons/PyRosetta.notebooks.git).*" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "< [Using Rosetta Gen KIC](http://nbviewer.jupyter.org/github/RosettaCommons/PyRosetta.notebooks/blob/master/notebooks/09.01-Using-Gen-KIC.ipynb) | [Contents](toc.ipynb) | [Index](index.ipynb) | [Working With Density](http://nbviewer.jupyter.org/github/RosettaCommons/PyRosetta.notebooks/blob/master/notebooks/11.00-Working-With-Density.ipynb) >
"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Working With Symmetry\n",
"Keywords: symmetry, asymmetric, SetupForSymmetryMover, virtual\n",
"\n",
"## Overview\n",
"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.\n",
"\n",
"Symmetry can also be useful for designing symmetrical structures or large repeating meta-proteins like protein cages. \n",
"\n",
"### Symmetry In Rosetta\n",
"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.\n",
"\n",
"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. \n",
"\n",
"### Symmetric Scoring and Moving\n",
"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. \n",
"\n",
"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.\n",
"\n",
"### Symmetry-aware movers\n",
"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.\n",
"\n",
"## Documentation\n",
"More information on RosettaSymmetry can be found in the following places:\n",
"- https://www.rosettacommons.org/docs/latest/rosetta_basics/structural_concepts/symmetry\n",
"- https://www.rosettacommons.org/demos/latest/tutorials/Symmetry/Symmetry\n",
"- https://www.rosettacommons.org/docs/latest/application_documentation/utilities/make-symmdef-file\n",
"- https://www.rosettacommons.org/docs/latest/scripting_documentation/RosettaScripts/Movers/movers_pages/SetupForSymmetryMover\n",
"- https://www.rosettacommons.org/docs/latest/scripting_documentation/RosettaScripts/Movers/movers_pages/ExtractAsymmetricUnitMover\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"!pip install pyrosettacolabsetup\n",
"import pyrosettacolabsetup; pyrosettacolabsetup.install_pyrosetta()\n",
"import pyrosetta; pyrosetta.init()\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"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."
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"PyRosetta-4 2019 [Rosetta PyRosetta4.Release.python36.mac 2019.39+release.93456a567a8125cafdf7f8cb44400bc20b570d81 2019-09-26T14:24:44] retrieved from: http://www.pyrosetta.org\n",
"(C) Copyright Rosetta Commons Member Institutions. Created in JHU by Sergey Lyskov and PyRosetta Team.\n",
"\u001b[0mcore.init: \u001b[0mChecking for fconfig files in pwd and ./rosetta/flags\n",
"\u001b[0mcore.init: \u001b[0mReading fconfig.../Users/jadolfbr/.rosetta/flags/common\n",
"\u001b[0mcore.init: \u001b[0m\n",
"\u001b[0mcore.init: \u001b[0m\n",
"\u001b[0mcore.init: \u001b[0mRosetta version: PyRosetta4.Release.python36.mac r233 2019.39+release.93456a567a8 93456a567a8125cafdf7f8cb44400bc20b570d81 http://www.pyrosetta.org 2019-09-26T14:24:44\n",
"\u001b[0mcore.init: \u001b[0mcommand: PyRosetta -ignore_unrecognized_res -load_PDB_components false -ignore_zero_occupancy false @inputs/glycan_flags -database /Users/jadolfbr/Library/Python/3.6/lib/python/site-packages/pyrosetta-2019.39+release.93456a567a8-py3.6-macosx-10.6-intel.egg/pyrosetta/database\n",
"\u001b[0mbasic.random.init_random_generator: \u001b[0m'RNG device' seed mode, using '/dev/urandom', seed=1544006277 seed_offset=0 real_seed=1544006277\n",
"\u001b[0mbasic.random.init_random_generator: \u001b[0mRandomGenerator:init: Normal mode, seed=1544006277 RG_type=mt19937\n"
]
}
],
"source": [
"from pyrosetta import *\n",
"from pyrosetta.rosetta import *\n",
"from pyrosetta.teaching import *\n",
"import os\n",
"\n",
"init('-ignore_unrecognized_res -load_PDB_components false -ignore_zero_occupancy false @inputs/glycan_flags')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Creating a SymDef file\n",
"\n",
"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. \n",
"\n",
"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. \n",
"\n",
"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."
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"cd inputs && make_symmdef_file.pl -r 12 -m CRYST -p inputs/1jnd.pdb.pdb > inputs/1jnd.pdb_crys.symm && cd -\n"
]
}
],
"source": [
"pdb = \"inputs/1jnd.pdb\"\n",
"base_cmd = f'cd inputs && make_symmdef_file.pl -r 12 -m CRYST -p {pdb}.pdb > {pdb}_crys.symm && cd -'\n",
"print(base_cmd)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Use this base command and the `os.system(cmd)` function to run the code or use the provided symdef file. "
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"os.system('cp inputs/1jnd_crys.symm .')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"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?"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Setup a Symmetrized Pose\n",
"\n",
"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 \n",
"\n",
"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`"
]
},
{
"cell_type": "code",
"execution_count": 37,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\u001b[0mcore.import_pose.import_pose: \u001b[0mFile 'inputs/1jnd.pdb' automatically determined to be of type PDB\n",
"\u001b[0mcore.io.pdb.pdb_reader: \u001b[0mParsing 82 .pdb records with unknown format to search for Rosetta-specific comments.\n",
"\u001b[0mcore.io.util: \u001b[0mAutomatic glycan connection is activated.\n",
"\u001b[0mcore.io.util: \u001b[0mStart reordering residues.\n",
"\u001b[0mcore.io.util: \u001b[0mCorrected glycan residue order (internal numbering): [401, 402, 403, 404]\n",
"\u001b[0mcore.io.util: \u001b[0m\n",
"\u001b[0mcore.io.pose_from_sfr.PoseFromSFRBuilder: \u001b[0mSetting chain termination for 404\n",
"\u001b[0mcore.io.pose_from_sfr.PoseFromSFRBuilder: \u001b[0m\u001b[1m[ WARNING ]\u001b[0m Glc401 has an unfavorable ring conformation; the coordinates for this input structure may have been poorly assigned.\n",
"\u001b[0mcore.io.pose_from_sfr.PoseFromSFRBuilder: \u001b[0m\u001b[1m[ WARNING ]\u001b[0m Glc402 has an unfavorable ring conformation; the coordinates for this input structure may have been poorly assigned.\n",
"\u001b[0mcore.io.pose_from_sfr.PoseFromSFRBuilder: \u001b[0m\u001b[1m[ WARNING ]\u001b[0m Man403 has an unfavorable ring conformation; the coordinates for this input structure may have been poorly assigned.\n",
"\u001b[0mcore.io.pose_from_sfr.PoseFromSFRBuilder: \u001b[0m\u001b[1m[ WARNING ]\u001b[0m Man404 has an unfavorable ring conformation; the coordinates for this input structure may have been poorly assigned.\n",
"\u001b[0mcore.chemical.AtomICoor: \u001b[0m\u001b[1m[ WARNING ]\u001b[0m IcoorAtomID::atom_id(): Cannot get atom_id for POLYMER_LOWER of residue ->4)-beta-D-Glcp:2-AcNH 401. Returning BOGUS ID instead.\n",
"\u001b[0mcore.conformation.Residue: \u001b[0m\u001b[1m[ WARNING ]\u001b[0m missing an atom: 401 H1 that depends on a nonexistent polymer connection!\n",
"\u001b[0mcore.conformation.Residue: \u001b[0m\u001b[1m[ WARNING ]\u001b[0m --> generating it using idealized coordinates.\n",
"\u001b[0mcore.chemical.AtomICoor: \u001b[0m\u001b[1m[ WARNING ]\u001b[0m IcoorAtomID::atom_id(): Cannot get atom_id for POLYMER_LOWER of residue ->4)-beta-D-Glcp:2-AcNH 401. Returning BOGUS ID instead.\n",
"\u001b[0mcore.conformation.Conformation: \u001b[0mFound disulfide between residues 5 32\n",
"\u001b[0mcore.conformation.Conformation: \u001b[0mcurrent variant for 5 CYS\n",
"\u001b[0mcore.conformation.Conformation: \u001b[0mcurrent variant for 32 CYS\n",
"\u001b[0mcore.conformation.Conformation: \u001b[0mcurrent variant for 5 CYD\n",
"\u001b[0mcore.conformation.Conformation: \u001b[0mcurrent variant for 32 CYD\n",
"\u001b[0mcore.conformation.Conformation: \u001b[0mFound disulfide between residues 302 385\n",
"\u001b[0mcore.conformation.Conformation: \u001b[0mcurrent variant for 302 CYS\n",
"\u001b[0mcore.conformation.Conformation: \u001b[0mcurrent variant for 385 CYS\n",
"\u001b[0mcore.conformation.Conformation: \u001b[0mcurrent variant for 302 CYD\n",
"\u001b[0mcore.conformation.Conformation: \u001b[0mcurrent variant for 385 CYD\n",
"\u001b[0mcore.conformation.carbohydrates.GlycanTreeSet: \u001b[0mSetting up Glycan Trees\n",
"\u001b[0mcore.conformation.carbohydrates.GlycanTreeSet: \u001b[0mFound 1 glycan trees.\n"
]
}
],
"source": [
"p = pose_from_pdb('inputs/1jnd.pdb')\n",
"original = p.clone()"
]
},
{
"cell_type": "code",
"execution_count": 38,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"404"
]
},
"execution_count": 38,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"p.total_residue()"
]
},
{
"cell_type": "code",
"execution_count": 39,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"pyrosetta.rosetta.core.conformation.Conformation"
]
},
"execution_count": 39,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"type(p.conformation())"
]
},
{
"cell_type": "code",
"execution_count": 40,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\u001b[0mcore.conformation.symmetry.SymmData: \u001b[0m\u001b[1m[ WARNING ]\u001b[0m Setting weight of master jump ( jump-id=1 ) to 1.0 (was undefined)\n",
"\u001b[0mcore.conformation.symmetry.SymmData: \u001b[0m\u001b[1m[ WARNING ]\u001b[0m Setting jump_group JUMPGROUP1: [master 1] 6:0 7:0 2:0 3:0 4:0 5:0 8:0 9:0\n",
"\u001b[0mcore.conformation.symmetry.SymmData: \u001b[0m\u001b[1m[ WARNING ]\u001b[0m Setting weight of master jump ( jump-id=10 ) to 1.0 (was undefined)\n",
"\u001b[0mcore.conformation.symmetry.SymmData: \u001b[0m\u001b[1m[ WARNING ]\u001b[0m Setting jump_group JUMPGROUP2: [master 10] 20:0 22:0 12:0 14:0 16:0 18:0 24:0 26:0\n",
"\u001b[0mcore.conformation.symmetry.SymmData: \u001b[0msymmetry name: 1jnd_P_32_2_1\n",
"\u001b[0mcore.conformation.symmetry.SymmData: \u001b[0mnumber of subunits: 9\n",
"\u001b[0mcore.conformation.symmetry.SymmData: \u001b[0mnumber of interfaces: 1\n",
"\u001b[0mcore.conformation.symmetry.SymmData: \u001b[0mscore subunit number: VRT_0_0_0_0\n",
"\u001b[0mcore.conformation.symmetry.SymmData: \u001b[0manchor the subunits at residue: 1\n",
"\u001b[0mcore.conformation.symmetry.SymmData: \u001b[0m Virtual coordinate system VRT_0_0_0_0\n",
"\u001b[0mcore.conformation.symmetry.SymmData: \u001b[0mx: 1 0 0\n",
"\u001b[0mcore.conformation.symmetry.SymmData: \u001b[0my: 0 1 0\n",
"\u001b[0mcore.conformation.symmetry.SymmData: \u001b[0morigin: 73.8756 49.0221 11.025\n",
"\u001b[0mcore.conformation.symmetry.SymmData: \u001b[0m Virtual coordinate system VRT_0_0_0_0_base\n",
"\u001b[0mcore.conformation.symmetry.SymmData: \u001b[0mx: 1 0 0\n",
"\u001b[0mcore.conformation.symmetry.SymmData: \u001b[0my: 0 1 0\n",
"\u001b[0mcore.conformation.symmetry.SymmData: \u001b[0morigin: 72.8756 48.0221 10.025\n",
"\u001b[0mcore.conformation.symmetry.SymmData: \u001b[0m Virtual coordinate system VRT_1_1_0_n1\n",
"\u001b[0mcore.conformation.symmetry.SymmData: \u001b[0mx: -0.5 0.866025 0\n",
"\u001b[0mcore.conformation.symmetry.SymmData: \u001b[0my: -0.866025 -0.5 0\n",
"\u001b[0mcore.conformation.symmetry.SymmData: \u001b[0morigin: 26.9528 39.4671 -18.9707\n",
"\u001b[0mcore.conformation.symmetry.SymmData: \u001b[0m Virtual coordinate system VRT_1_1_0_n1_base\n",
"\u001b[0mcore.conformation.symmetry.SymmData: \u001b[0mx: -0.5 0.866025 0\n",
"\u001b[0mcore.conformation.symmetry.SymmData: \u001b[0my: -0.866025 -0.5 0\n",
"\u001b[0mcore.conformation.symmetry.SymmData: \u001b[0morigin: 28.3188 39.1011 -19.9707\n",
"\u001b[0mcore.conformation.symmetry.SymmData: \u001b[0m Virtual coordinate system VRT_2_1_1_0\n",
"\u001b[0mcore.conformation.symmetry.SymmData: \u001b[0mx: -0.5 -0.866025 0\n",
"\u001b[0mcore.conformation.symmetry.SymmData: \u001b[0my: 0.866025 -0.5 0\n",
"\u001b[0mcore.conformation.symmetry.SymmData: \u001b[0morigin: 58.6891 3.60826 41.0206\n",
"\u001b[0mcore.conformation.symmetry.SymmData: \u001b[0m Virtual coordinate system VRT_2_1_1_0_base\n",
"\u001b[0mcore.conformation.symmetry.SymmData: \u001b[0mx: -0.5 -0.866025 0\n",
"\u001b[0mcore.conformation.symmetry.SymmData: \u001b[0my: 0.866025 -0.5 0\n",
"\u001b[0mcore.conformation.symmetry.SymmData: \u001b[0morigin: 58.3231 4.97428 40.0206\n",
"\u001b[0mcore.conformation.symmetry.SymmData: \u001b[0m Virtual coordinate system VRT_3_0_n1_0\n",
"\u001b[0mcore.conformation.symmetry.SymmData: \u001b[0mx: -0.5 0.866025 0\n",
"\u001b[0mcore.conformation.symmetry.SymmData: \u001b[0my: 0.866025 0.5 0\n",
"\u001b[0mcore.conformation.symmetry.SymmData: \u001b[0morigin: 58.6891 -3.60826 -11.025\n",
"\u001b[0mcore.conformation.symmetry.SymmData: \u001b[0m Virtual coordinate system VRT_3_0_n1_0_base\n",
"\u001b[0mcore.conformation.symmetry.SymmData: \u001b[0mx: -0.5 0.866025 0\n",
"\u001b[0mcore.conformation.symmetry.SymmData: \u001b[0my: 0.866025 0.5 0\n",
"\u001b[0mcore.conformation.symmetry.SymmData: \u001b[0morigin: 58.3231 -4.97428 -10.025\n",
"\u001b[0mcore.conformation.symmetry.SymmData: \u001b[0m Virtual coordinate system VRT_3_1_0_0\n",
"\u001b[0mcore.conformation.symmetry.SymmData: \u001b[0mx: -0.5 0.866025 0\n",
"\u001b[0mcore.conformation.symmetry.SymmData: \u001b[0my: 0.866025 0.5 0\n",
"\u001b[0mcore.conformation.symmetry.SymmData: \u001b[0morigin: 111.862 88.4892 -11.025\n",
"\u001b[0mcore.conformation.symmetry.SymmData: \u001b[0m Virtual coordinate system VRT_3_1_0_0_base\n",
"\u001b[0mcore.conformation.symmetry.SymmData: \u001b[0mx: -0.5 0.866025 0\n",
"\u001b[0mcore.conformation.symmetry.SymmData: \u001b[0my: 0.866025 0.5 0\n",
"\u001b[0mcore.conformation.symmetry.SymmData: \u001b[0morigin: 111.496 87.1232 -10.025\n",
"\u001b[0mcore.conformation.symmetry.SymmData: \u001b[0m Virtual coordinate system VRT_4_2_1_0\n",
"\u001b[0mcore.conformation.symmetry.SymmData: \u001b[0mx: -0.5 -0.866025 0\n",
"\u001b[0mcore.conformation.symmetry.SymmData: \u001b[0my: -0.866025 0.5 0\n",
"\u001b[0mcore.conformation.symmetry.SymmData: \u001b[0morigin: 80.1253 52.6304 48.9664\n",
"\u001b[0mcore.conformation.symmetry.SymmData: \u001b[0m Virtual coordinate system VRT_4_2_1_0_base\n",
"\u001b[0mcore.conformation.symmetry.SymmData: \u001b[0mx: -0.5 -0.866025 0\n",
"\u001b[0mcore.conformation.symmetry.SymmData: \u001b[0my: -0.866025 0.5 0\n",
"\u001b[0mcore.conformation.symmetry.SymmData: \u001b[0morigin: 81.4913 52.9964 49.9664\n",
"\u001b[0mcore.conformation.symmetry.SymmData: \u001b[0m Virtual coordinate system VRT_4_2_1_n1\n",
"\u001b[0mcore.conformation.symmetry.SymmData: \u001b[0mx: -0.5 -0.866025 0\n",
"\u001b[0mcore.conformation.symmetry.SymmData: \u001b[0my: -0.866025 0.5 0\n",
"\u001b[0mcore.conformation.symmetry.SymmData: \u001b[0morigin: 80.1253 52.6304 -41.0206\n",
"\u001b[0mcore.conformation.symmetry.SymmData: \u001b[0m Virtual coordinate system VRT_4_2_1_n1_base\n",
"\u001b[0mcore.conformation.symmetry.SymmData: \u001b[0mx: -0.5 -0.866025 0\n",
"\u001b[0mcore.conformation.symmetry.SymmData: \u001b[0my: -0.866025 0.5 0\n",
"\u001b[0mcore.conformation.symmetry.SymmData: \u001b[0morigin: 81.4913 52.9964 -40.0206\n",
"\u001b[0mcore.conformation.symmetry.SymmData: \u001b[0m Virtual coordinate system VRT_5_0_1_0\n",
"\u001b[0mcore.conformation.symmetry.SymmData: \u001b[0mx: 1 0 0\n",
"\u001b[0mcore.conformation.symmetry.SymmData: \u001b[0my: -0 -1 0\n",
"\u001b[0mcore.conformation.symmetry.SymmData: \u001b[0morigin: 20.7031 43.0754 18.9707\n",
"\u001b[0mcore.conformation.symmetry.SymmData: \u001b[0m Virtual coordinate system VRT_5_0_1_0_base\n",
"\u001b[0mcore.conformation.symmetry.SymmData: \u001b[0mx: 1 0 0\n",
"\u001b[0mcore.conformation.symmetry.SymmData: \u001b[0my: -0 -1 0\n",
"\u001b[0mcore.conformation.symmetry.SymmData: \u001b[0morigin: 19.7031 44.0754 19.9707\n",
"\u001b[0mcore.conformation.symmetry.SymmData: \u001b[0m Virtual coordinate system VRT_5_1_1_0\n",
"\u001b[0mcore.conformation.symmetry.SymmData: \u001b[0mx: 1 0 0\n",
"\u001b[0mcore.conformation.symmetry.SymmData: \u001b[0my: -0 -1 0\n",
"\u001b[0mcore.conformation.symmetry.SymmData: \u001b[0morigin: 127.048 43.0754 18.9707\n",
"\u001b[0mcore.conformation.symmetry.SymmData: \u001b[0m Virtual coordinate system VRT_5_1_1_0_base\n",
"\u001b[0mcore.conformation.symmetry.SymmData: \u001b[0mx: 1 0 0\n",
"\u001b[0mcore.conformation.symmetry.SymmData: \u001b[0my: -0 -1 0\n",
"\u001b[0mcore.conformation.symmetry.SymmData: \u001b[0morigin: 126.048 44.0754 19.9707\n",
"\u001b[0mcore.conformation.symmetry.SymmData: \u001b[0mDof for jump: 1\n",
"\u001b[0mcore.conformation.symmetry.SymmData: \u001b[0mx 0:0,0:0,0 n2c\n",
"\u001b[0mcore.conformation.symmetry.SymmData: \u001b[0my 0:0,0:0,0 n2c\n",
"\u001b[0mcore.conformation.symmetry.SymmData: \u001b[0mz 0:0,0:0,0 n2c\n",
"\u001b[0mcore.conformation.symmetry.SymmData: \u001b[0mx_angle 1:0,0:0,0 n2c\n",
"\u001b[0mcore.conformation.symmetry.SymmData: \u001b[0my_angle 1:0,0:0,0 n2c\n",
"\u001b[0mcore.conformation.symmetry.SymmData: \u001b[0mz_angle 1:0,0:0,0 n2c\n",
"\u001b[0mcore.conformation.symmetry.SymmData: \u001b[0mDof for jump: 10\n",
"\u001b[0mcore.conformation.symmetry.SymmData: \u001b[0mx 1:0,0:0,0 n2c\n",
"\u001b[0mcore.conformation.symmetry.SymmData: \u001b[0my 1:0,0:0,0 n2c\n",
"\u001b[0mcore.conformation.symmetry.SymmData: \u001b[0mz 1:0,0:0,0 n2c\n",
"\u001b[0mcore.conformation.symmetry.SymmData: \u001b[0mx_angle 0:0,0:0,0 n2c\n",
"\u001b[0mcore.conformation.symmetry.SymmData: \u001b[0my_angle 0:0,0:0,0 n2c\n",
"\u001b[0mcore.conformation.symmetry.SymmData: \u001b[0mz_angle 0:0,0:0,0 n2c\n",
"\u001b[0mcore.conformation.symmetry.SymmData: \u001b[0mJump JUMP_0_0_0_0_to_com VRT_0_0_0_0 VRT_0_0_0_0_base\n",
"\u001b[0mcore.conformation.symmetry.SymmData: \u001b[0mJump JUMP_0_0_0_0_to_subunit VRT_0_0_0_0_base SUBUNIT\n",
"\u001b[0mcore.conformation.symmetry.SymmData: \u001b[0mJump JUMP_1_1_0_n1 VRT_0_0_0_0 VRT_1_1_0_n1\n",
"\u001b[0mcore.conformation.symmetry.SymmData: \u001b[0mJump JUMP_1_1_0_n1_to_com VRT_1_1_0_n1 VRT_1_1_0_n1_base\n",
"\u001b[0mcore.conformation.symmetry.SymmData: \u001b[0mJump JUMP_1_1_0_n1_to_subunit VRT_1_1_0_n1_base SUBUNIT\n",
"\u001b[0mcore.conformation.symmetry.SymmData: \u001b[0mJump JUMP_2_1_1_0 VRT_0_0_0_0 VRT_2_1_1_0\n",
"\u001b[0mcore.conformation.symmetry.SymmData: \u001b[0mJump JUMP_2_1_1_0_to_com VRT_2_1_1_0 VRT_2_1_1_0_base\n",
"\u001b[0mcore.conformation.symmetry.SymmData: \u001b[0mJump JUMP_2_1_1_0_to_subunit VRT_2_1_1_0_base SUBUNIT\n",
"\u001b[0mcore.conformation.symmetry.SymmData: \u001b[0mJump JUMP_3_0_n1_0 VRT_0_0_0_0 VRT_3_0_n1_0\n",
"\u001b[0mcore.conformation.symmetry.SymmData: \u001b[0mJump JUMP_3_0_n1_0_to_com VRT_3_0_n1_0 VRT_3_0_n1_0_base\n",
"\u001b[0mcore.conformation.symmetry.SymmData: \u001b[0mJump JUMP_3_0_n1_0_to_subunit VRT_3_0_n1_0_base SUBUNIT\n",
"\u001b[0mcore.conformation.symmetry.SymmData: \u001b[0mJump JUMP_3_1_0_0 VRT_0_0_0_0 VRT_3_1_0_0\n",
"\u001b[0mcore.conformation.symmetry.SymmData: \u001b[0mJump JUMP_3_1_0_0_to_com VRT_3_1_0_0 VRT_3_1_0_0_base\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\u001b[0mcore.conformation.symmetry.SymmData: \u001b[0mJump JUMP_3_1_0_0_to_subunit VRT_3_1_0_0_base SUBUNIT\n",
"\u001b[0mcore.conformation.symmetry.SymmData: \u001b[0mJump JUMP_4_2_1_0 VRT_0_0_0_0 VRT_4_2_1_0\n",
"\u001b[0mcore.conformation.symmetry.SymmData: \u001b[0mJump JUMP_4_2_1_0_to_com VRT_4_2_1_0 VRT_4_2_1_0_base\n",
"\u001b[0mcore.conformation.symmetry.SymmData: \u001b[0mJump JUMP_4_2_1_0_to_subunit VRT_4_2_1_0_base SUBUNIT\n",
"\u001b[0mcore.conformation.symmetry.SymmData: \u001b[0mJump JUMP_4_2_1_n1 VRT_0_0_0_0 VRT_4_2_1_n1\n",
"\u001b[0mcore.conformation.symmetry.SymmData: \u001b[0mJump JUMP_4_2_1_n1_to_com VRT_4_2_1_n1 VRT_4_2_1_n1_base\n",
"\u001b[0mcore.conformation.symmetry.SymmData: \u001b[0mJump JUMP_4_2_1_n1_to_subunit VRT_4_2_1_n1_base SUBUNIT\n",
"\u001b[0mcore.conformation.symmetry.SymmData: \u001b[0mJump JUMP_5_0_1_0 VRT_0_0_0_0 VRT_5_0_1_0\n",
"\u001b[0mcore.conformation.symmetry.SymmData: \u001b[0mJump JUMP_5_0_1_0_to_com VRT_5_0_1_0 VRT_5_0_1_0_base\n",
"\u001b[0mcore.conformation.symmetry.SymmData: \u001b[0mJump JUMP_5_0_1_0_to_subunit VRT_5_0_1_0_base SUBUNIT\n",
"\u001b[0mcore.conformation.symmetry.SymmData: \u001b[0mJump JUMP_5_1_1_0 VRT_0_0_0_0 VRT_5_1_1_0\n",
"\u001b[0mcore.conformation.symmetry.SymmData: \u001b[0mJump JUMP_5_1_1_0_to_com VRT_5_1_1_0 VRT_5_1_1_0_base\n",
"\u001b[0mcore.conformation.symmetry.SymmData: \u001b[0mJump JUMP_5_1_1_0_to_subunit VRT_5_1_1_0_base SUBUNIT\n",
"\u001b[0mcore.conformation.symmetry.SymmData: \u001b[0mInclude subunit:\n",
"\u001b[0mcore.conformation.symmetry.SymmData: \u001b[0mOutput subunit:\n",
"\u001b[0mcore.conformation.symmetry.SymmData: \u001b[0mSlideType: RANDOM\n",
"\u001b[0mcore.conformation.symmetry.SymmData: \u001b[0mSlideCriteriaType: CEN_DOCK_SCORE\n",
"\u001b[0mcore.conformation.symmetry.SymmData: \u001b[0mSlideCriteriaVal: AUTOMATIC\n",
"\u001b[0mcore.conformation.symmetry.SymmData: \u001b[0mSlideOrder: none\n",
"\u001b[0mcore.conformation.symmetry.util: \u001b[0m=================== SYM FOLD TREE, jump notation: =symfixed= *indep* #symdof# jump[=follows] ========================\n",
"VRT_0_0_0_0(3637)\n",
"|----#j10#--->VRT_0_0_0_0_base(3638)----#j1#------>1:Sub1A(1-400)\n",
"|----=j11=--->VRT_1_1_0_n1(3643)---j12=10--->VRT_1_1_0_n1_base(3644)----j2=1---->1213:Sub4A(1213-1612)\n",
"|----=j13=--->VRT_2_1_1_0(3645)---j14=10--->VRT_2_1_1_0_base(3646)----j3=1---->1617:Sub5A(1617-2016)\n",
"|----=j15=--->VRT_3_0_n1_0(3647)---j16=10--->VRT_3_0_n1_0_base(3648)----j4=1---->2021:Sub6A(2021-2420)\n",
"|----=j17=--->VRT_3_1_0_0(3649)---j18=10--->VRT_3_1_0_0_base(3650)----j5=1---->2425:Sub7A(2425-2824)\n",
"|----=j19=--->VRT_4_2_1_0(3639)---j20=10--->VRT_4_2_1_0_base(3640)----j6=1---->405:Sub2A(405-804)\n",
"|----=j21=--->VRT_4_2_1_n1(3641)---j22=10--->VRT_4_2_1_n1_base(3642)----j7=1---->809:Sub3A(809-1208)\n",
"|----=j23=--->VRT_5_0_1_0(3651)---j24=10--->VRT_5_0_1_0_base(3652)----j8=1---->2829:Sub8A(2829-3228)\n",
"\\----=j25=--->VRT_5_1_1_0(3653)---j26=10--->VRT_5_1_1_0_base(3654)----j9=1---->3233:Sub9A(3233-3632)\n",
"\u001b[0mcore.conformation.symmetry.Conformation: \u001b[0mFound disulfide between residues 5 32\n",
"\u001b[0mcore.conformation.symmetry.Conformation: \u001b[0mcurrent variant for 5 CYD\n",
"\u001b[0mcore.conformation.symmetry.Conformation: \u001b[0mcurrent variant for 32 CYD\n",
"\u001b[0mcore.conformation.symmetry.Conformation: \u001b[0mcurrent variant for 5 CYD\n",
"\u001b[0mcore.conformation.symmetry.Conformation: \u001b[0mcurrent variant for 32 CYD\n",
"\u001b[0mcore.conformation.symmetry.Conformation: \u001b[0mAdd symmetric chemical bond 409 to 436\n",
"\u001b[0mcore.conformation.symmetry.Conformation: \u001b[0mAdd symmetric chemical bond 813 to 840\n",
"\u001b[0mcore.conformation.symmetry.Conformation: \u001b[0mAdd symmetric chemical bond 1217 to 1244\n",
"\u001b[0mcore.conformation.symmetry.Conformation: \u001b[0mAdd symmetric chemical bond 1621 to 1648\n",
"\u001b[0mcore.conformation.symmetry.Conformation: \u001b[0mAdd symmetric chemical bond 2025 to 2052\n",
"\u001b[0mcore.conformation.symmetry.Conformation: \u001b[0mAdd symmetric chemical bond 2429 to 2456\n",
"\u001b[0mcore.conformation.symmetry.Conformation: \u001b[0mAdd symmetric chemical bond 2833 to 2860\n",
"\u001b[0mcore.conformation.symmetry.Conformation: \u001b[0mAdd symmetric chemical bond 3237 to 3264\n",
"\u001b[0mcore.conformation.symmetry.Conformation: \u001b[0mAdd symmetric chemical bond 5 to 32\n",
"\u001b[0mcore.conformation.symmetry.Conformation: \u001b[0mFound disulfide between residues 302 385\n",
"\u001b[0mcore.conformation.symmetry.Conformation: \u001b[0mcurrent variant for 302 CYD\n",
"\u001b[0mcore.conformation.symmetry.Conformation: \u001b[0mcurrent variant for 385 CYD\n",
"\u001b[0mcore.conformation.symmetry.Conformation: \u001b[0mcurrent variant for 302 CYD\n",
"\u001b[0mcore.conformation.symmetry.Conformation: \u001b[0mcurrent variant for 385 CYD\n",
"\u001b[0mcore.conformation.symmetry.Conformation: \u001b[0mAdd symmetric chemical bond 706 to 789\n",
"\u001b[0mcore.conformation.symmetry.Conformation: \u001b[0mAdd symmetric chemical bond 1110 to 1193\n",
"\u001b[0mcore.conformation.symmetry.Conformation: \u001b[0mAdd symmetric chemical bond 1514 to 1597\n",
"\u001b[0mcore.conformation.symmetry.Conformation: \u001b[0mAdd symmetric chemical bond 1918 to 2001\n",
"\u001b[0mcore.conformation.symmetry.Conformation: \u001b[0mAdd symmetric chemical bond 2322 to 2405\n",
"\u001b[0mcore.conformation.symmetry.Conformation: \u001b[0mAdd symmetric chemical bond 2726 to 2809\n",
"\u001b[0mcore.conformation.symmetry.Conformation: \u001b[0mAdd symmetric chemical bond 3130 to 3213\n",
"\u001b[0mcore.conformation.symmetry.Conformation: \u001b[0mAdd symmetric chemical bond 3534 to 3617\n",
"\u001b[0mcore.conformation.symmetry.Conformation: \u001b[0mAdd symmetric chemical bond 302 to 385\n",
"\u001b[0mcore.conformation.carbohydrates.GlycanTreeSet: \u001b[0mSetting up Glycan Trees\n",
"\u001b[0mcore.conformation.carbohydrates.GlycanTreeSet: \u001b[0mFound 9 glycan trees.\n",
"\u001b[0mprotocols.simple_moves_symmetry.SymDockingInitialPerturbation: \u001b[0mReading options...\n"
]
}
],
"source": [
"symmetrize = rosetta.protocols.symmetry.SetupForSymmetryMover(\"1jnd_crys.symm\")\n",
"symmetrize.apply(p)"
]
},
{
"cell_type": "code",
"execution_count": 41,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"3654\n",
" "
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.1"
},
"toc": {
"base_numbering": 1,
"nav_menu": {},
"number_sections": true,
"sideBar": true,
"skip_h1_title": false,
"title_cell": "Table of Contents",
"title_sidebar": "Contents",
"toc_cell": false,
"toc_position": {},
"toc_section_display": true,
"toc_window_display": false
}
},
"nbformat": 4,
"nbformat_minor": 1
}