本文主要是介绍pyrosetta学习详记,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1.Packing and Relax
Packing:优化侧链
TaskFactories:控制需要优化的残基
2.导入一些工具包:
#Python
from pyrosetta import *
from pyrosetta.rosetta import *
from pyrosetta.teaching import *#Core Includes
from rosetta.core.kinematics import MoveMap
from rosetta.core.kinematics import FoldTree
from rosetta.core.pack.task import TaskFactory
from rosetta.core.pack.task import operation
from rosetta.core.simple_metrics import metrics
from rosetta.core.select import residue_selector as selections
from rosetta.core import select
from rosetta.core.select.movemap import *#Protocol Includes
from rosetta.protocols import minimization_packing as pack_min
from rosetta.protocols import relax as rel
from rosetta.protocols.antibody.residue_selector import CDRResidueSelector
from rosetta.protocols.antibody import *
from rosetta.protocols.loops import *
from rosetta.protocols.relax import FastRelax
3.初始化
(1)为了加快演示速度,将松弛轮数由默认的5改为2(原文作者说在代码中修改有点难,我问号脸???)
(2)演示者根据他们的实验,为了增加可用于Packing的rotamer,加入-ex1 和 -ex2,但是这会降低运算速度
初始化代码:
init('-use_input_sc -input_ab_scheme AHo_Scheme -ignore_unrecognized_res \-ignore_zero_occupancy false -load_PDB_components false -relax:default_repeats 2 -no_fconfig')
4.Import and copy pose
克隆一份初始的蛋白位置?
#Import a pose
pose = pose_from_pdb("inputs/2r0l_1_1.pdb")
original_pose = pose.clone()
5.Setup a Normal TaskFactory
TaskFactory:control packing specific residues in a pose \colorbox{yellow}{TaskFactory:control packing specific residues in a pose} TaskFactory:control packing specific residues in a pose
The TaskFactory is made up of a list of TaskOperations. These Taskops make up the bread and butter of controlling packing (and subsequently design). The taskops can be given to factory in any order. \colorbox{cyan}{The TaskFactory is made up of a list of TaskOperations. These Taskops make up the bread and butter of controlling packing (and subsequently design). The taskops can be given to factory in any order.} The TaskFactory is made up of a list of TaskOperations. These Taskops make up the bread and butter of controlling packing (and subsequently design). The taskops can be given to factory in any order.
In Rosetta, ALL residues are set to both pack AND design by default. We use taskops to turn things off, like creating an ice sculpture. Here, we turn design off by using the RestrictToRepacking operation. \colorbox{cyan}{In Rosetta, ALL residues are set to both pack AND design by default. We use taskops to turn things off, like creating an ice sculpture. Here, we turn design off by using the RestrictToRepacking operation.} In Rosetta, ALL residues are set to both pack AND design by default. We use taskops to turn things off, like creating an ice sculpture. Here, we turn design off by using the RestrictToRepacking operation.
tf = TaskFactory()
tf.push_back(operation.InitializeFromCommandline())
tf.push_back(operation.RestrictToRepacking())
6.Setup The Packer
关键词:
(1)setup the packer and pass the TaskFactory
(2)PackerTask(has all of the instructions needed for Rosetta to do packing and design)
packer = pack_min.PackRotamersMover()
packer.task_factory(tf)#Note that we are not passing a scorefunction here. We will use the default, cmd-line scorefunction,
# which is accessed through rosetta.core.scoring.get_score_function() and part of the packer. We use use a scorefunction later. #Run the packer. (Note this may take a few minutes)
#Skip for tests
if not os.getenv("DEBUG"):packer.apply(pose)#Dump the PDB
pose.dump_pdb('/outputs/2r0l_all_repack.pdb')
7.Lets compare the energies of the before and after pose. Any difference?
scorefxn = get_score_function()
before = scorefxn.score(original_pose)
8.检查操作过后的序列和原始序列,确保前后序列一致,也就是只对这些残基rotamers进行Packing
### BEGIN SOLUTIONseq_metric = metrics.SequenceMetric()print("Sequence:")
print(seq_metric.calculate(pose))#OR
print("\nSequence:")
print(pose.sequence())### END SOLUTION
9.Regional Packing
关键词:
(1)a single CDR loop(什么是CDR)
(2)ResidueSelector?
10.Make selection using the CDRResidueSelector and NeighborhoodResidueSelector
关键词:PackerTask
nbr_selector = selections.NeighborhoodResidueSelector()
cdr_selector = CDRResidueSelector()
cdr_selector.set_cdr(h1)
nbr_selector.set_focus_selector(cdr_selector)
nbr_selector.set_include_focus_in_subset(True)
11.Restrict to our selection
prevent_repacking_rlt = operation.PreventRepackingRLT()
#True indicates here that we are flipping the selection. So that we are turning off everything but the CDR and
# its neighbors.prevent_subset_repacking = operation.OperateOnResidueSubset(prevent_repacking_rlt, nbr_selector, True )
Lets check to see what residues have been selected as the CDR, and then the CDR and its neighbors. We will use this to make sure our PackerTask is setup properly
cdr_res = []
print("CDR")
for i in select.get_residue_set_from_subset(cdr_selector.apply(pose)):print(i)cdr_res.append(i)print("\nCDR+Neighbors")
for i in select.get_residue_set_from_subset(nbr_selector.apply(pose)):if i in cdr_res:print(i,"CDR")else:print(i)
12.Reset the pose
pose = original_pose.clone()tf.push_back(prevent_subset_repacking)pack_cdrs_and_neighbors_tf = tf.clone()packer.task_factory(tf)
Before we start, lets take a look at our PackerTask. Are we designing anything? Does this match our selection?
print(tf.create_task_and_apply_taskoperations(pose))
### BEGIN SOLUTION#Skip for tests
if not os.getenv("DEBUG"):packer.apply(pose)pose.dump_pdb("outputs/2r0l_cdr_repack.pdb")### END SOLUTION
13.Design
pose = original_pose.clone()tf.clear()
tf.push_back(operation.InitializeFromCommandline())
tf.push_back(prevent_subset_repacking)#Turn off design of neighbors
nbr_selector2 = selections.NeighborhoodResidueSelector()
nbr_selector2.set_focus_selector(cdr_selector)
nbr_selector2.set_include_focus_in_subset(False)restrict_to_repack = operation.RestrictToRepackingRLT()
prevent_nbr_design = operation.OperateOnResidueSubset(restrict_to_repack, nbr_selector2, False )
tf.push_back(prevent_nbr_design)
14.Set and Run
15.Relax
16.Regional Relax
关键词:
(1)MoveMapFactory
这篇关于pyrosetta学习详记的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!