除了上一节我们讲到的一些简单的API,这一节我们将列出所有的ResidueSelector中的构象依赖的选择器和非构象依赖的选择器的API应用方式。
# 初始化,导入PDB
from pyrosetta import pose_from_pdb, init
from pyrosetta.rosetta.core.select.residue_selector import ChainSelector
init()
# 从pdb中读入生成pose对象,(肝细胞生长因子抗体PDB:6LZ9)
pose = pose_from_pdb('./data/6LZ9_H_L.pdb')
select_heavy_chain = ChainSelector('H')
select_light_chain = ChainSelector('L')
PyRosetta-4 2021 [Rosetta PyRosetta4.conda.mac.cxx11thread.serialization.python37.Release 2021.26+release.b308454c455dd04f6824cc8b23e54bbb9be2cdd7 2021-07-02T13:01:54] retrieved from: http://www.pyrosetta.org (C) Copyright Rosetta Commons Member Institutions. Created in JHU by Sergey Lyskov and PyRosetta Team. core.init: {0} Checking for fconfig files in pwd and ./rosetta/flags core.init: {0} Rosetta version: PyRosetta4.conda.mac.cxx11thread.serialization.python37.Release r288 2021.26+release.b308454c455 b308454c455dd04f6824cc8b23e54bbb9be2cdd7 http://www.pyrosetta.org 2021-07-02T13:01:54 core.init: {0} command: PyRosetta -ex1 -ex2aro -database /opt/miniconda3/lib/python3.7/site-packages/pyrosetta/database basic.random.init_random_generator: {0} 'RNG device' seed mode, using '/dev/urandom', seed=1782107690 seed_offset=0 real_seed=1782107690 thread_index=0 basic.random.init_random_generator: {0} RandomGenerator:init: Normal mode, seed=1782107690 RG_type=mt19937 core.chemical.GlobalResidueTypeSet: {0} Finished initializing fa_standard residue type set. Created 984 residue types core.chemical.GlobalResidueTypeSet: {0} Total time to initialize 0.634784 seconds. core.import_pose.import_pose: {0} File './data/6LZ9_H_L.pdb' automatically determined to be of type PDB core.conformation.Conformation: {0} Found disulfide between residues 21 94 core.conformation.Conformation: {0} current variant for 21 CYS core.conformation.Conformation: {0} current variant for 94 CYS core.conformation.Conformation: {0} current variant for 21 CYD core.conformation.Conformation: {0} current variant for 94 CYD core.conformation.Conformation: {0} Found disulfide between residues 141 206 core.conformation.Conformation: {0} current variant for 141 CYS core.conformation.Conformation: {0} current variant for 206 CYS core.conformation.Conformation: {0} current variant for 141 CYD core.conformation.Conformation: {0} current variant for 206 CYD
这一部分接着上一节,讲一些更复杂的非构象依赖的选择器。
通过氨基酸的性质进行定义的选择器,比如可以选择带正电的氨基酸、带负电的氨基酸、疏水氨基酸、含有芳香环的氨基酸等等。
氨基酸的性质分类可详见: https://www.rosettacommons.org/docs/latest/scripting_documentation/RosettaScripts/ResidueSelectors/ResiduePropertySelector
以实例进行说明:
#example1: 使用单一属性选择,选择所有的极性氨基酸
from pyrosetta.rosetta.core.select.residue_selector import ResiduePropertySelector
from pyrosetta.rosetta.core.chemical import ResidueProperty
prop_selector = ResiduePropertySelector(ResidueProperty.POLAR)
prop_selector.apply(pose)
vector1_bool[0, 1, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 0, 1, 1, 0, 0, 1, 0, 0, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1]
# example2: 使用多属性进行选择
from pyrosetta.rosetta.core.select.residue_selector import basic_selection_logic
prop_selector = ResiduePropertySelector()
prop_selector.add_property(ResidueProperty.POLAR) # 极性氨基酸
prop_selector.add_property(ResidueProperty.CHARGED) # 带电的氨基酸
prop_selector.set_selection_logic(basic_selection_logic.or_logic)
prop_selector.apply(pose)
vector1_bool[0, 1, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 0, 1, 1, 0, 0, 1, 0, 0, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1]
结果解读
注意在使用多属性选择时,应当注意选择的逻辑性,可通过set_selection_logic进行设置,默认为AND逻辑。如果设置为OR逻辑需要使用basic_selection_logic.or_logic.
从某个氨基酸子集中随机地选取N个氨基酸定义的选择器。
# 比如从重链中随机选择出5个氨基酸: 多运行几次,就可发现返回的编号是不一样的。
from pyrosetta.rosetta.core.select.residue_selector import RandomResidueSelector
random_selector = RandomResidueSelector(select_heavy_chain, 30)
random_selector.apply(pose)
core.select.residue_selector.RandomResidueSelector: {0} Selected residues: 45 91 43 32 65 2 99 50 36 87 61 62 105 27 64 24 66 10 6 69 51 118 4 95 16 48 101 108 54 52
vector1_bool[0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
第三章中,我们教授了FoldTree相关的知识内容,在Start和End位氨基酸建立虚拟链接,这就代表一个Jump点。
Jump选择器包括JumpDownstreamSelector和JumpUpstreamSelector,用于选择Jump点的下游还是上游。
#这里我们还是采用第三章中的1v74的PDB
pose_1v74 = pose_from_pdb('./data/1v74.pdb')
pose_1v74_foldtree = pose_1v74.fold_tree()
print(pose_1v74.pdb_info())
print("1v74 Fold Tree:\n", pose_1v74_foldtree) #输出PDB:1V74的fold tree表示
core.import_pose.import_pose: {0} File './data/1v74.pdb' automatically determined to be of type PDB core.conformation.Conformation: {0} [ WARNING ] missing heavyatom: OXT on residue LEU:CtermProteinFull 107 core.conformation.Conformation: {0} [ WARNING ] missing heavyatom: OXT on residue LEU:CtermProteinFull 194 PDB file name: ./data/1v74.pdb Pose Range Chain PDB Range | #Residues #Atoms 0001 -- 0107 A 0591 -- 0697 | 0107 residues; 01728 atoms 0108 -- 0194 B 0001 -- 0087 | 0087 residues; 01425 atoms TOTAL | 0194 residues; 03153 atoms 1v74 Fold Tree: FOLD_TREE EDGE 1 107 -1 EDGE 1 108 1 EDGE 108 194 -1
有上述可见,1v74包含两条链,分别是A和B链。AB链以虚拟共价键Jump1相连接。FoldTree的顺序是1->107 -jump1-> 108->194.
#选择Jump点1的下游残基
from pyrosetta.rosetta.core.select.residue_selector import JumpDownstreamSelector
jumpdown_selector = JumpDownstreamSelector()
jumpdown_selector.set_jump(1)
residue_selector = jumpdown_selector.apply(pose_1v74)
print(residue_selector)
vector1_bool[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
# 验证一下选择的范围。
index_list = [index+1 for index, i in enumerate(residue_selector) if i == 1]
print(index_list)
[108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194]
JumpDownstreamSelector正确选择了FoldTree在Jump1点处的下游序列。
#选择Jump点2的上游残基
from pyrosetta.rosetta.core.select.residue_selector import JumpUpstreamSelector
jumpup_selector = JumpUpstreamSelector()
jumpup_selector.set_jump(1)
residue_selector = jumpup_selector.apply(pose_1v74)
print(residue_selector)
vector1_bool[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
# 验证一下选择的范围。
index_list = [index+1 for index, i in enumerate(residue_selector) if i == 1]
print(index_list)
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107]
JumpUstreamSelector正确选择了FoldTree在Jump1点处的上游序列。
有一些选择器是根据特定分子类型开发的,比如在RosettaAntibody模块中,就有选择抗体功能区或非功能区的选择器。比如CDRResidueSelector、AntibodyRegionSelector等。
from pyrosetta.rosetta.protocols.antibody import CDRNameEnum
from pyrosetta.rosetta.protocols.antibody.residue_selector import CDRResidueSelector
init('-input_ab_scheme Chothia') # 根据抗体的不同编号进行选择初始化
PyRosetta-4 2021 [Rosetta PyRosetta4.conda.mac.cxx11thread.serialization.python37.Release 2021.26+release.b308454c455dd04f6824cc8b23e54bbb9be2cdd7 2021-07-02T13:01:54] retrieved from: http://www.pyrosetta.org (C) Copyright Rosetta Commons Member Institutions. Created in JHU by Sergey Lyskov and PyRosetta Team. core.init: {0} Checking for fconfig files in pwd and ./rosetta/flags core.init: {0} Rosetta version: PyRosetta4.conda.mac.cxx11thread.serialization.python37.Release r288 2021.26+release.b308454c455 b308454c455dd04f6824cc8b23e54bbb9be2cdd7 http://www.pyrosetta.org 2021-07-02T13:01:54 core.init: {0} command: PyRosetta -input_ab_scheme Chothia -database /opt/miniconda3/lib/python3.7/site-packages/pyrosetta/database basic.random.init_random_generator: {0} 'RNG device' seed mode, using '/dev/urandom', seed=-704065920 seed_offset=0 real_seed=-704065920 thread_index=0 basic.random.init_random_generator: {0} RandomGenerator:init: Normal mode, seed=-704065920 RG_type=mt19937
# example1: 选择单个CDR.
cdr_selector = CDRResidueSelector()
cdr_selector.set_cdr(CDRNameEnum.h1) #h1,h2,h3,l1,l2,l3
cdr_selector.apply(pose)
basic.io.database: {0} Database file opened: sampling/antibodies/cluster_center_dihedrals.txt protocols.antibody.AntibodyNumberingParser: {0} Antibody numbering scheme definitions read successfully protocols.antibody.AntibodyNumberingParser: {0} Antibody CDR definition read successfully antibody.AntibodyInfo: {0} Successfully finished the CDR definition antibody.AntibodyInfo: {0} AC Detecting Regular CDR H3 Stem Type antibody.AntibodyInfo: {0} TRDGGLLFAYYAMDYW antibody.AntibodyInfo: {0} AC Finished Detecting Regular CDR H3 Stem Type: KINKED antibody.AntibodyInfo: {0} AC Finished Detecting Regular CDR H3 Stem Type: Kink: 1 Extended: 0 antibody.AntibodyInfo: {0} Setting up CDR Cluster for H1 protocols.antibody.cluster.CDRClusterMatcher: {0} Length: 13 Omega: TTTTTTTTTTTTT antibody.AntibodyInfo: {0} Setting up CDR Cluster for H2 protocols.antibody.cluster.CDRClusterMatcher: {0} Length: 9 Omega: TTTTTTTTT antibody.AntibodyInfo: {0} Setting up CDR Cluster for H3 protocols.antibody.cluster.CDRClusterMatcher: {0} Length: 15 Omega: TTTTTTTTTTTTTTT antibody.AntibodyInfo: {0} Setting up CDR Cluster for L1 protocols.antibody.cluster.CDRClusterMatcher: {0} Length: 11 Omega: TTTTTTTTTTT antibody.AntibodyInfo: {0} Setting up CDR Cluster for L2 protocols.antibody.cluster.CDRClusterMatcher: {0} Length: 8 Omega: TTTTTTTT antibody.AntibodyInfo: {0} Setting up CDR Cluster for L3 protocols.antibody.cluster.CDRClusterMatcher: {0} Length: 9 Omega: TTTTTTCTT
vector1_bool[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
# example2: 选择多个CDR
from pyrosetta.rosetta.utility import vector1_protocols_antibody_CDRNameEnum
from pyrosetta.rosetta.utility import vector1_bool
# 设定cdr list;
# 全选6段CDR区, vector1_bool的顺序是,[H1, H2, H3, L1, L2, L3]。
cdrs_list = vector1_bool()
for i in range(6):
cdrs_list.append(1)
cdr_selector = CDRResidueSelector()
cdr_selector.set_cdrs(cdrs_list)
cdr_selector.apply(pose)
basic.io.database: {0} Database file opened: sampling/antibodies/cluster_center_dihedrals.txt protocols.antibody.AntibodyNumberingParser: {0} Antibody numbering scheme definitions read successfully protocols.antibody.AntibodyNumberingParser: {0} Antibody CDR definition read successfully antibody.AntibodyInfo: {0} Successfully finished the CDR definition antibody.AntibodyInfo: {0} AC Detecting Regular CDR H3 Stem Type antibody.AntibodyInfo: {0} TRDGGLLFAYYAMDYW antibody.AntibodyInfo: {0} AC Finished Detecting Regular CDR H3 Stem Type: KINKED antibody.AntibodyInfo: {0} AC Finished Detecting Regular CDR H3 Stem Type: Kink: 1 Extended: 0 antibody.AntibodyInfo: {0} Setting up CDR Cluster for H1 protocols.antibody.cluster.CDRClusterMatcher: {0} Length: 13 Omega: TTTTTTTTTTTTT antibody.AntibodyInfo: {0} Setting up CDR Cluster for H2 protocols.antibody.cluster.CDRClusterMatcher: {0} Length: 9 Omega: TTTTTTTTT antibody.AntibodyInfo: {0} Setting up CDR Cluster for H3 protocols.antibody.cluster.CDRClusterMatcher: {0} Length: 15 Omega: TTTTTTTTTTTTTTT antibody.AntibodyInfo: {0} Setting up CDR Cluster for L1 protocols.antibody.cluster.CDRClusterMatcher: {0} Length: 11 Omega: TTTTTTTTTTT antibody.AntibodyInfo: {0} Setting up CDR Cluster for L2 protocols.antibody.cluster.CDRClusterMatcher: {0} Length: 8 Omega: TTTTTTTT antibody.AntibodyInfo: {0} Setting up CDR Cluster for L3 protocols.antibody.cluster.CDRClusterMatcher: {0} Length: 9 Omega: TTTTTTCTT
vector1_bool[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0]
除了选择CDR,还可以通过抗体的区域选择器选择Framework区、抗体antigen等区域。 使用AntibodyRegionSelector选择器需要额外定义好AntibodyRegionEnum:
# 抗体区域选择器:
from pyrosetta.rosetta.protocols.antibody import AntibodyRegionEnum
from pyrosetta.rosetta.protocols.antibody.residue_selector import AntibodyRegionSelector
ab_region_selector = AntibodyRegionSelector()
ab_region_selector.set_region(AntibodyRegionEnum.cdr_region)
# 读者也可以尝试设置以下的一些选项试试。
#ab_region_selector.set_region(AntibodyRegionEnum.framework_region)
# ab_region_selector.set_region(AntibodyRegionEnum.antigen_region)
# 此处全选所有的CDR区。
ab_region_selector.apply(pose)
basic.io.database: {0} Database file opened: sampling/antibodies/cluster_center_dihedrals.txt protocols.antibody.AntibodyNumberingParser: {0} Antibody numbering scheme definitions read successfully protocols.antibody.AntibodyNumberingParser: {0} Antibody CDR definition read successfully antibody.AntibodyInfo: {0} Successfully finished the CDR definition antibody.AntibodyInfo: {0} AC Detecting Regular CDR H3 Stem Type antibody.AntibodyInfo: {0} TRDGGLLFAYYAMDYW antibody.AntibodyInfo: {0} AC Finished Detecting Regular CDR H3 Stem Type: KINKED antibody.AntibodyInfo: {0} AC Finished Detecting Regular CDR H3 Stem Type: Kink: 1 Extended: 0 antibody.AntibodyInfo: {0} Setting up CDR Cluster for H1 protocols.antibody.cluster.CDRClusterMatcher: {0} Length: 13 Omega: TTTTTTTTTTTTT antibody.AntibodyInfo: {0} Setting up CDR Cluster for H2 protocols.antibody.cluster.CDRClusterMatcher: {0} Length: 9 Omega: TTTTTTTTT antibody.AntibodyInfo: {0} Setting up CDR Cluster for H3 protocols.antibody.cluster.CDRClusterMatcher: {0} Length: 15 Omega: TTTTTTTTTTTTTTT antibody.AntibodyInfo: {0} Setting up CDR Cluster for L1 protocols.antibody.cluster.CDRClusterMatcher: {0} Length: 11 Omega: TTTTTTTTTTT antibody.AntibodyInfo: {0} Setting up CDR Cluster for L2 protocols.antibody.cluster.CDRClusterMatcher: {0} Length: 8 Omega: TTTTTTTT antibody.AntibodyInfo: {0} Setting up CDR Cluster for L3 protocols.antibody.cluster.CDRClusterMatcher: {0} Length: 9 Omega: TTTTTTCTT
vector1_bool[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0]
该选择器使用氨基酸Cα-Cβ向量的长度以及角度来搜索两个刚体之间相互接触的氨基酸(如蛋白-蛋白相互作用界面等), 其中nearby_atom_cut和vector_dist_cut是关键的距离参数,距离越大,选择的相互作用界面越大。默认为6和8埃。
from pyrosetta.rosetta.core.select.residue_selector import InterGroupInterfaceByVectorSelector
# 此处以选择抗体的重链和轻链之间的Interface为例:
interface_seletor = InterGroupInterfaceByVectorSelector(select_light_chain, select_heavy_chain)
interface_seletor.nearby_atom_cut(6)
interface_seletor.vector_dist_cut(8)
interface_seletor.apply(pose)
vector1_bool[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 1, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0]
如我们想选出那些位置突变成L- or D-proline, 2-aminoisobutyric acid (AIB)时,通过rama得分的计算,选出满足突变需求的氨基酸位点,且这个突变强烈满足Ramachandran空间的要求。
from pyrosetta.rosetta.protocols.cyclic_peptide import *
rama_selector = RamaMutationSelector()
rama_selector.set_rama_prepro_multiplier(0.8) #设置rama计算时的权重系数,默认0.45。这里打分函数用的beta_nov15
rama_selector.set_score_threshold(-0.1) #设置rama得分的阈值,从而选出低于阈值的残基
rama_selector.set_target_type('PRO')
rama_selector.apply(pose)
protocols.cyclic_peptide.RamaMutationSelector: {0} Set the rama_prepro multiplier to 0.8. protocols.cyclic_peptide.RamaMutationSelector: {0} Set rama_prepro score threshold to -0.1. protocols.cyclic_peptide.RamaMutationSelector: {0} Set target type to PRO. basic.io.database: {0} Database file opened: scoring/score_functions/rama/fd/all.ramaProb basic.io.database: {0} Database file opened: scoring/score_functions/rama/fd/prepro.ramaProb protocols.cyclic_peptide.RamaMutationSelector: {0} [ WARNING ] residue 1 is a terminus! Skipping and not selecting. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 2 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 2 is 14.5537 (11.6429 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 3 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 3 is 18.0924 (14.4739 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 4 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 4 is 14.9274 (11.942 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 5 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 5 is 3.65002 (2.92002 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 6 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 6 is 23.401 (18.7208 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 7 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 7 is 15.5227 (12.4182 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 8 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 8 is 2.30243 (1.84195 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 9 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 9 is 8.07389 (6.45911 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 10 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 10 is 23.0507 (18.4406 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 11 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 11 is 12.1568 (9.72547 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 12 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 12 is 7.58704 (6.06963 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 13 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 13 is -0.541637 (-0.433309 when multiplied by the weight coefficient), which is below the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 14 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 14 is 23.3632 (18.6906 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 15 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 15 is 2.85857 (2.28685 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 16 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 16 is 15.7749 (12.6199 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 17 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 17 is 0.798573 (0.638858 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 18 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 18 is 18.7593 (15.0075 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 19 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 19 is 4.51075 (3.6086 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 20 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 20 is 17.4215 (13.9372 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} [ WARNING ] No representative type found for PRO equivalent to CYS:disulfide. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 22 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 22 is 9.10502 (7.28402 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 23 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 23 is 2.65138 (2.1211 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 24 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 24 is 23.0147 (18.4118 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 25 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 25 is 23.3632 (18.6906 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 26 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 26 is 16.6628 (13.3303 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 27 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 27 is 10.3006 (8.24044 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 28 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 28 is 2.93052 (2.34442 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 29 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 29 is 1.1701 (0.93608 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 30 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 30 is 4.39453 (3.51562 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 31 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 31 is 23.4412 (18.753 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 32 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 32 is 6.48496 (5.18797 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 33 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 33 is 10.9708 (8.77664 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 34 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 34 is 11.386 (9.1088 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 35 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 35 is 4.534 (3.6272 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 36 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 36 is 16.7852 (13.4282 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 37 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 37 is 7.89972 (6.31977 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 38 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 38 is 23.9871 (19.1897 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 39 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 39 is -0.630105 (-0.504084 when multiplied by the weight coefficient), which is below the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 40 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 40 is 2.18604 (1.74883 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 41 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 41 is 23.3632 (18.6906 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 42 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 42 is 3.08244 (2.46596 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 43 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 43 is 1.51222 (1.20977 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 44 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 44 is -1.17952 (-0.943613 when multiplied by the weight coefficient), which is below the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 45 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 45 is 16.9181 (13.5345 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 46 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 46 is 1.44859 (1.15887 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 47 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 47 is 6.15399 (4.92319 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 48 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 48 is 23.3637 (18.6909 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 49 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 49 is 23.229 (18.5832 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 50 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 50 is 11.8223 (9.45786 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 51 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 51 is 0.963203 (0.770562 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 52 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 52 is 0.610937 (0.48875 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 53 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 53 is 3.70231 (2.96185 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 54 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 54 is 23.3632 (18.6906 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 55 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 55 is 2.93064 (2.34451 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 56 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 56 is 9.32433 (7.45947 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 57 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 57 is 12.0745 (9.65962 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 58 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 58 is 10.1937 (8.15498 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 59 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 59 is 1.36809 (1.09447 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 60 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 60 is 3.37856 (2.70285 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 61 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 61 is -0.0478797 (-0.0383037 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 62 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 62 is 2.73164 (2.18531 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 63 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 63 is -0.05593 (-0.044744 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 64 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 64 is 0.0854165 (0.0683332 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 65 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 65 is 10.8231 (8.65844 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 66 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 66 is 6.46766 (5.17413 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 67 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 67 is 23.4669 (18.7735 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 68 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 68 is 17.3637 (13.8909 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 69 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 69 is 18.7747 (15.0198 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 70 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 70 is 22.7266 (18.1813 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 71 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 71 is 12.5734 (10.0588 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 72 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 72 is 1.37238 (1.0979 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 73 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 73 is 1.67092 (1.33674 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 74 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 74 is 0.73122 (0.584976 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 75 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 75 is 23.3632 (18.6906 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 76 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 76 is 13.7317 (10.9854 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 77 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 77 is 10.6395 (8.51163 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 78 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 78 is 6.97936 (5.58349 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 79 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 79 is 2.73746 (2.18997 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 80 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 80 is 20.2957 (16.2366 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 81 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 81 is 14.1586 (11.3269 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 82 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 82 is 0.373035 (0.298428 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 83 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 83 is 23.3632 (18.6906 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 84 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 84 is 0.600179 (0.480143 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 85 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 85 is 3.21033 (2.56826 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 86 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 86 is 0.983249 (0.7866 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 87 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 87 is -0.422504 (-0.338003 when multiplied by the weight coefficient), which is below the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 88 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 88 is 0.874582 (0.699665 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 89 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 89 is 1.98509 (1.58807 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 90 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 90 is 23.3088 (18.647 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 91 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 91 is 1.57314 (1.25851 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 92 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 92 is 8.29916 (6.63933 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 93 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 93 is 4.08613 (3.2689 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} [ WARNING ] No representative type found for PRO equivalent to CYS:disulfide. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 95 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 95 is 15.6565 (12.5252 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 96 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 96 is 5.20635 (4.16508 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 97 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 97 is 1.90865 (1.52692 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 98 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 98 is 1.09196 (0.873568 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 99 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 99 is 23.3632 (18.6906 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 100 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 100 is 3.61579 (2.89264 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 101 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 101 is 2.28871 (1.83097 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 102 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 102 is 4.07433 (3.25947 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 103 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 103 is 23.3632 (18.6906 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 104 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 104 is 4.05109 (3.24087 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 105 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 105 is 2.39826 (1.91861 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 106 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 106 is -1.45473 (-1.16378 when multiplied by the weight coefficient), which is below the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 107 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 107 is 4.89552 (3.91642 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 108 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 108 is 3.31784 (2.65427 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 109 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 109 is 11.2377 (8.99018 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 110 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 110 is 12.2969 (9.83753 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 111 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 111 is 0.188431 (0.150745 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 112 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 112 is 0.848888 (0.67911 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 113 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 113 is 23.3632 (18.6906 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 114 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 114 is 23.5363 (18.8291 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 115 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 115 is 0.73617 (0.588936 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 116 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 116 is 19.52 (15.616 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 117 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 117 is 10.6204 (8.49636 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} [ WARNING ] residue 118 is a terminus! Skipping and not selecting. protocols.cyclic_peptide.RamaMutationSelector: {0} [ WARNING ] residue 119 is a terminus! Skipping and not selecting. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 120 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 120 is 0.979719 (0.783775 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 121 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 121 is 7.20529 (5.76423 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 122 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 122 is 3.43548 (2.74838 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 123 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 123 is 3.11411 (2.49129 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 124 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 124 is 16.9701 (13.5761 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 125 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 125 is 2.26978 (1.81582 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 126 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 126 is 3.25963 (2.6077 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 127 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 127 is 4.00145 (3.20116 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 128 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 128 is 9.68382 (7.74705 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 129 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 129 is 23.4495 (18.7596 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 130 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 130 is 2.48647 (1.98918 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 131 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 131 is 21.642 (17.3136 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 132 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 132 is 8.66994 (6.93595 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 133 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 133 is -0.393604 (-0.314884 when multiplied by the weight coefficient), which is below the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 134 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 134 is 23.3632 (18.6906 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 135 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 135 is 0.715085 (0.572068 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 136 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 136 is 2.96898 (2.37519 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 137 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 137 is 11.0413 (8.83304 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 138 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 138 is 12.0044 (9.60351 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 139 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 139 is 6.88164 (5.50531 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 140 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 140 is 18.0973 (14.4779 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} [ WARNING ] No representative type found for PRO equivalent to CYS:disulfide. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 142 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 142 is 13.8515 (11.0812 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 143 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 143 is 0.166254 (0.133003 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 144 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 144 is 0.780357 (0.624286 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 145 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 145 is 23.4176 (18.7341 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 146 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 146 is 1.28501 (1.02801 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 147 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 147 is 2.95477 (2.36381 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 148 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 148 is 23.3632 (18.6906 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 149 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 149 is 23.3632 (18.6906 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 150 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 150 is 3.14389 (2.51511 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 151 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 151 is 17.0677 (13.6542 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 152 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 152 is 7.80427 (6.24341 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 153 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 153 is 12.5306 (10.0245 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 154 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 154 is 10.0616 (8.04926 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 155 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 155 is 10.4582 (8.36659 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 156 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 156 is 7.22662 (5.7813 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 157 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 157 is -0.147996 (-0.118397 when multiplied by the weight coefficient), which is below the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 158 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 158 is -0.814982 (-0.651986 when multiplied by the weight coefficient), which is below the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 159 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 159 is 0.88283 (0.706264 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 160 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 160 is 23.3632 (18.6906 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 161 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 161 is -0.383975 (-0.30718 when multiplied by the weight coefficient), which is below the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 162 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 162 is 9.09669 (7.27735 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 163 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 163 is 11.0753 (8.86023 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 164 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 164 is 2.17458 (1.73966 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 165 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 165 is 8.62142 (6.89714 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 166 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 166 is 21.1897 (16.9518 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 167 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 167 is 6.18517 (4.94813 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 168 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 168 is 23.363 (18.6904 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 169 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 169 is 1.9142 (1.53136 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 170 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 170 is 9.08465 (7.26772 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 171 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 171 is 0.837079 (0.669663 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 172 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 172 is 5.39106 (4.31285 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 173 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 173 is -0.453179 (-0.362543 when multiplied by the weight coefficient), which is below the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 174 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 174 is 1.45438 (1.16351 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 175 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 175 is 1.10625 (0.885002 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 176 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 176 is 2.01296 (1.61037 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 177 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 177 is -1.3128 (-1.05024 when multiplied by the weight coefficient), which is below the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 178 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 178 is 0.851762 (0.68141 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 179 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 179 is 0.792731 (0.634185 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 180 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 180 is 2.97041 (2.37632 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 181 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 181 is 23.462 (18.7696 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 182 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 182 is 8.97123 (7.17699 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 183 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 183 is 23.3739 (18.6991 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 184 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 184 is 23.3595 (18.6876 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 185 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 185 is 23.3284 (18.6628 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 186 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 186 is 23.3632 (18.6906 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 187 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 187 is 6.60019 (5.28015 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 188 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 188 is 5.92881 (4.74305 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 189 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 189 is 9.80759 (7.84607 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 190 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 190 is 22.5646 (18.0517 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 191 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 191 is 13.7606 (11.0085 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 192 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 192 is 11.7109 (9.36869 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 193 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 193 is 11.9245 (9.53957 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 194 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 194 is 0.203103 (0.162482 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 195 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 195 is 23.3632 (18.6906 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 196 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 196 is 0.258897 (0.207117 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 197 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 197 is 5.46608 (4.37286 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 198 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 198 is 2.01794 (1.61435 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 199 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 199 is -0.141488 (-0.11319 when multiplied by the weight coefficient), which is below the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 200 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 200 is 1.14879 (0.919032 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 201 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 201 is 3.05512 (2.4441 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 202 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 202 is 23.4625 (18.77 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 203 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 203 is 6.74815 (5.39852 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 204 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 204 is 7.62714 (6.10171 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 205 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 205 is 10.2724 (8.21793 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} [ WARNING ] No representative type found for PRO equivalent to CYS:disulfide. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 207 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 207 is 23.3462 (18.6769 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 208 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 208 is 4.74366 (3.79493 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 209 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 209 is 3.33621 (2.66897 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 210 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 210 is 6.41277 (5.13022 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 211 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 211 is 8.82299 (7.05839 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 212 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 212 is -0.151298 (-0.121038 when multiplied by the weight coefficient), which is below the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 213 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 213 is 2.795 (2.236 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 214 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 214 is -1.36343 (-1.09074 when multiplied by the weight coefficient), which is below the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 215 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 215 is 13.8829 (11.1063 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 216 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 216 is 4.71823 (3.77458 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 217 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 217 is 3.27208 (2.61766 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 218 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 218 is 1.3095 (1.0476 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 219 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 219 is 23.3632 (18.6905 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 220 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 220 is 16.9944 (13.5955 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 221 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 221 is 3.36455 (2.69164 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} Set residue type for position 222 to PRO. protocols.cyclic_peptide.RamaMutationSelector: {0} The rama_prepro energy for position 222 is 5.11861 (4.09489 when multiplied by the weight coefficient), which is above the threshold for selection. protocols.cyclic_peptide.RamaMutationSelector: {0} [ WARNING ] residue 223 is a terminus! Skipping and not selecting.
vector1_bool[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0]
返回与给定残基对称的其他所有残基。在一个对称的体系中,想要知道其他与之对称的残基序号时是有用的。
from pyrosetta import pose_from_pdb, init
init("-in:auto_setup_metals")
from pyrosetta.rosetta.core.select.residue_selector import *
symm_pose = pose_from_pdb('./data/6veh.pdb')
print(symm_pose.pdb_info())
PyRosetta-4 2021 [Rosetta PyRosetta4.conda.mac.cxx11thread.serialization.python37.Release 2021.26+release.b308454c455dd04f6824cc8b23e54bbb9be2cdd7 2021-07-02T13:01:54] retrieved from: http://www.pyrosetta.org (C) Copyright Rosetta Commons Member Institutions. Created in JHU by Sergey Lyskov and PyRosetta Team. core.init: {0} Checking for fconfig files in pwd and ./rosetta/flags core.init: {0} Rosetta version: PyRosetta4.conda.mac.cxx11thread.serialization.python37.Release r288 2021.26+release.b308454c455 b308454c455dd04f6824cc8b23e54bbb9be2cdd7 http://www.pyrosetta.org 2021-07-02T13:01:54 core.init: {0} command: PyRosetta -in:auto_setup_metals -database /opt/miniconda3/lib/python3.7/site-packages/pyrosetta/database basic.random.init_random_generator: {0} 'RNG device' seed mode, using '/dev/urandom', seed=1350960609 seed_offset=0 real_seed=1350960609 thread_index=0 basic.random.init_random_generator: {0} RandomGenerator:init: Normal mode, seed=1350960609 RG_type=mt19937 core.import_pose.import_pose: {0} File './data/6veh.pdb' automatically determined to be of type PDB core.util.metalloproteins_util: {0} Automatically setting covalent bonds between metal ions and metal-binding residues. core.util.metalloproteins_util: {0} Automatically setting up constraints between metal ions and metal-binding residues. PDB file name: ./data/6veh.pdb Pose Range Chain PDB Range | #Residues #Atoms 0001 -- 0164 A 0002 -- 0165 | 0164 residues; 02497 atoms 0165 -- 0328 B 0002 -- 0165 | 0164 residues; 02497 atoms 0329 -- 0492 C 0002 -- 0165 | 0164 residues; 02497 atoms TOTAL | 0492 residues; 07491 atoms
from pyrosetta.rosetta.core.select.residue_selector import SymmetricalResidueSelector, ResidueIndexSelector
from pyrosetta.rosetta.protocols.symmetry import DetectSymmetry
# 先使用DetectSymmetry识别Pose中的对称性;
detect_symm = DetectSymmetry()
detect_symm.apply(symm_pose)
protocols.simple_moves.symmetry.DetectSymmetry: {0} 3 number of subunits found protocols.simple_moves.symmetry.DetectSymmetry: {0} 164 residues per subunit core.conformation.symmetry.SymmData: {0} [ WARNING ] Setting weight of master jump ( jump-id=6 ) to 1.0 (was undefined) core.conformation.symmetry.SymmData: {0} [ WARNING ] Setting jump_group JGS: [master 6] 7:0 8:0 core.conformation.symmetry.SymmData: {0} [ WARNING ] Setting weight of master jump ( jump-id=1 ) to 1.0 (was undefined) core.conformation.symmetry.SymmData: {0} [ WARNING ] Setting jump_group JGSS: [master 1] 2:0 3:0 core.conformation.symmetry.SymmData: {0} symmetry name: C3 core.conformation.symmetry.SymmData: {0} number of subunits: 3 core.conformation.symmetry.SymmData: {0} number of interfaces: 2 core.conformation.symmetry.SymmData: {0} score subunit number: C1 core.conformation.symmetry.SymmData: {0} anchor the subunits at residue: COM core.conformation.symmetry.SymmData: {0} Virtual coordinate system C1 core.conformation.symmetry.SymmData: {0} x: 0 0 1 core.conformation.symmetry.SymmData: {0} y: 0 1 0 core.conformation.symmetry.SymmData: {0} origin: 0 0 0 core.conformation.symmetry.SymmData: {0} Virtual coordinate system C2 core.conformation.symmetry.SymmData: {0} x: 0 0 1 core.conformation.symmetry.SymmData: {0} y: 0.866025 -0.5 0 core.conformation.symmetry.SymmData: {0} origin: 0 0 0 core.conformation.symmetry.SymmData: {0} Virtual coordinate system C3 core.conformation.symmetry.SymmData: {0} x: 0 0 1 core.conformation.symmetry.SymmData: {0} y: -0.866025 -0.5 0 core.conformation.symmetry.SymmData: {0} origin: 0 0 0 core.conformation.symmetry.SymmData: {0} Virtual coordinate system S1 core.conformation.symmetry.SymmData: {0} x: 0 0 1 core.conformation.symmetry.SymmData: {0} y: 0 1 0 core.conformation.symmetry.SymmData: {0} origin: 0 0 0 core.conformation.symmetry.SymmData: {0} Virtual coordinate system S2 core.conformation.symmetry.SymmData: {0} x: 0 0 1 core.conformation.symmetry.SymmData: {0} y: 0.866025 -0.5 0 core.conformation.symmetry.SymmData: {0} origin: 0 0 0 core.conformation.symmetry.SymmData: {0} Virtual coordinate system S3 core.conformation.symmetry.SymmData: {0} x: 0 0 1 core.conformation.symmetry.SymmData: {0} y: -0.866025 -0.5 0 core.conformation.symmetry.SymmData: {0} origin: 0 0 0 core.conformation.symmetry.SymmData: {0} Dof for jump: 6 core.conformation.symmetry.SymmData: {0} x 1:0,0:0,0 n2c core.conformation.symmetry.SymmData: {0} y 1:0,0:0,0 n2c core.conformation.symmetry.SymmData: {0} z 0:0,0:0,0 n2c core.conformation.symmetry.SymmData: {0} x_angle 1:0,0:0,0 n2c core.conformation.symmetry.SymmData: {0} y_angle 1:0,0:0,0 n2c core.conformation.symmetry.SymmData: {0} z_angle 1:0,0:0,0 n2c core.conformation.symmetry.SymmData: {0} Jump JC2 C1 C2 core.conformation.symmetry.SymmData: {0} Jump JC3 C1 C3 core.conformation.symmetry.SymmData: {0} Jump JS1 C1 S1 core.conformation.symmetry.SymmData: {0} Jump JS1S S1 SUBUNIT core.conformation.symmetry.SymmData: {0} Jump JS2 C2 S2 core.conformation.symmetry.SymmData: {0} Jump JS2S S2 SUBUNIT core.conformation.symmetry.SymmData: {0} Jump JS3 C3 S3 core.conformation.symmetry.SymmData: {0} Jump JS3S S3 SUBUNIT core.conformation.symmetry.SymmData: {0} Include subunit: 1 2 3 core.conformation.symmetry.SymmData: {0} Output subunit: 1 2 3 core.conformation.symmetry.SymmData: {0} SlideType: RANDOM core.conformation.symmetry.SymmData: {0} SlideCriteriaType: CEN_DOCK_SCORE core.conformation.symmetry.SymmData: {0} SlideCriteriaVal: AUTOMATIC core.conformation.symmetry.SymmData: {0} SlideOrder: none core.conformation.symmetry.util: {0} =================== SYM FOLD TREE, jump notation: =symfixed= *indep* #symdof# jump[=follows] ======================== C1(493) |----=j4=---->C2(495)----j7=6---->S2(496)----j2=1---->253:Sub2A(165-328) |----=j5=---->C3(497)----j8=6---->S3(498)----j3=1---->417:Sub3A(329-492) \----#j6#---->S1(494)----*j1*----->89:Sub1A(1-164)
# 对称性地选择1-15号残基:
residue_selector = ResidueIndexSelector('1-15')
symmetrical_selector = SymmetricalResidueSelector()
symmetrical_selector.set_selector(residue_selector)
symmetrical_selector.apply(symm_pose)
vector1_bool[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
# 可视化 对称性选择的1-15号残基
from pyrosetta.rosetta.core.simple_metrics.metrics import SelectedResiduesPyMOLMetric
pymol_selected = SelectedResiduesPyMOLMetric()
pymol_selected.set_residue_selector(symmetrical_selector)
prefix = 'symm_'
pymol_selected.apply(symm_pose, prefix)
from pyrosetta.rosetta.core.simple_metrics import get_sm_data
symm_sm_data = get_sm_data(symm_pose)
symm_string_metric = symm_sm_data.get_string_metric_data()
symm_string_metric['symm_pymol_selection']
'select rosetta_sele, (chain A and resid 2,3,4,5,6,7,8,9,10,11,12,13,14,15,16) or (chain B and resid 2,3,4,5,6,7,8,9,10,11,12,13,14,15,16) or (chain C and resid 2,3,4,5,6,7,8,9,10,11,12,13,14,15,16)'
结果解读
上图中蓝色棍棒形式的残基为对称性选择的1-15号残基。
需要先标记残基,然后此API可以根据lable选出预先标记的残基。
from pyrosetta.rosetta.protocols.simple_moves import *
from pyrosetta.rosetta.core.select.residue_selector import *
from pyrosetta.rosetta.core.select.residue_selector import ResidueIndexSelector
residue1_selector = ResidueIndexSelector('5,6,7,8')
#创建label标签:调用AddResidueLabelMover
add_label = AddResidueLabelMover(residue1_selector,'hotspot')
add_label.apply(pose)
#将带标签“Hotspot“的残基子集从pose中分离出来:
label_selector = ResiduePDBInfoHasLabelSelector('hotspot')
label_selector.apply(pose)
protocols.simple_moves.AddResidueLabelMover: {0} Executing AddResidueLabelMover... protocols.simple_moves.AddResidueLabelMover: {0} Adding to residue #5, label: hotspot protocols.simple_moves.AddResidueLabelMover: {0} Adding to residue #6, label: hotspot protocols.simple_moves.AddResidueLabelMover: {0} Adding to residue #7, label: hotspot protocols.simple_moves.AddResidueLabelMover: {0} Adding to residue #8, label: hotspot protocols.simple_moves.AddResidueLabelMover: {0} Number of residues labeled: 4 protocols.simple_moves.AddResidueLabelMover: {0} select hotspot, resi 5+6+7+8+
vector1_bool[0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
Layer是Rosetta中的一个重要概念,将蛋白质分为表面层(surface)、交界层(boundary)以及内核层(Core)。众所周知,蛋白质的不同层的氨基酸是具有偏好性分布的,比如在内核层由许多的非极性氨基酸组成的疏水核心,而在表面层分布大多为极性氨基酸,能与溶液环境中的水分子相互作用。LayerSelector是十分强大的工具,可以根据set_layers()进行组合选择。set_layers()的三个布尔值按顺序分别代表选择Core/boundary/Surface。另外该选择器有两种判别模式(只能选其一),分别是基于SASA的方法和基于邻居数量的方法。
from pyrosetta.rosetta.core.select.residue_selector import LayerSelector
layer_selector = LayerSelector()
# 定义需要选定的层:
layer_selector.set_layers(True, False, False) # 只选择内核的设置方法
layer_selector.set_layers(False, True, False) # 只选择边界层的设置方法
layer_selector.set_layers(False, False, True) # 只选择表面层的设置方法
# neighbor-based(选1,根据set_use_sc_neighbors)
layer_selector.set_use_sc_neighbors(False) # True使用Sidechain neighbor算法,False使用SASA-based算法
layer_selector.set_cutoffs(5.2, 2.0) # 内核,表层邻居数量截断设置
# neighbor-based(选1,根据set_use_sc_neighbors)
layer_selector.set_use_sc_neighbors(True)
layer_selector.set_cutoffs(5.2, 2.0) # 内核,表层邻居数量截断设置
core.select.residue_selector.LayerSelector: {0} Setting LayerSelector to use sidechain neighbors to determine burial. core.select.residue_selector.LayerSelector: {0} Set cutoffs for core and surface to 5.2 and 2, respectively, in LayerSelector. core.select.residue_selector.LayerSelector: {0} Setting core=true boundary=false surface=false in LayerSelector. core.select.residue_selector.LayerSelector: {0} Setting core=false boundary=true surface=false in LayerSelector. core.select.residue_selector.LayerSelector: {0} Setting core=false boundary=false surface=true in LayerSelector. core.select.residue_selector.LayerSelector: {0} Setting LayerSelector to use rolling ball-based occlusion to determine burial. core.select.residue_selector.LayerSelector: {0} Set cutoffs for core and surface to 5.2 and 2, respectively, in LayerSelector. core.select.residue_selector.LayerSelector: {0} Setting LayerSelector to use sidechain neighbors to determine burial. core.select.residue_selector.LayerSelector: {0} Set cutoffs for core and surface to 5.2 and 2, respectively, in LayerSelector.
# example1: 选择内核层(SASA法)
layer_selector = LayerSelector()
layer_selector.set_layers(True, False, False) # 只选择内核的设置方法
layer_selector.set_use_sc_neighbors(False) # 使用Sidechain neighbor算法,否则使用SASA-based算法,确定内核残基。
layer_selector.set_cutoffs(20.0, 40.0) # 内核,表层截断半径设置
layer_selector.set_ball_radius(2.0) # 传统值为1.4
layer_selector.apply(pose)
core.select.residue_selector.LayerSelector: {0} Setting LayerSelector to use sidechain neighbors to determine burial. core.select.residue_selector.LayerSelector: {0} Set cutoffs for core and surface to 5.2 and 2, respectively, in LayerSelector. core.select.residue_selector.LayerSelector: {0} Setting core=true boundary=false surface=false in LayerSelector. core.select.residue_selector.LayerSelector: {0} Setting LayerSelector to use rolling ball-based occlusion to determine burial. core.select.residue_selector.LayerSelector: {0} Set cutoffs for core and surface to 20 and 40, respectively, in LayerSelector. core.select.residue_selector.LayerSelector: {0} Setting radius for rolling ball algorithm to 2 in LayerSelector. (Note that this will have no effect if the sidechain neighbors method is used.)
vector1_bool[0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 1, 0]
# 可视化选择 内核层氨基酸
pymol_selected = SelectedResiduesPyMOLMetric()
pymol_selected.set_residue_selector(layer_selector)
prefix = 'core_select_'
pymol_selected.apply(pose, prefix)
sm_data = get_sm_data(pose)
string_metric = sm_data.get_string_metric_data()
string_metric['core_select_pymol_selection']
'select rosetta_sele, (chain H and resid 4,6,18,20,22,32,33,34,35,37,49,51,60,78,82C,88,92,93,96,97,100D,102,104,107) or (chain L and resid 2,4,6,21,23,25,29,33,34,35,46,47,48,51,64,71,78,84,87,88,90,95,99,101,102,104)'
# example2: 选择表面层(侧链法)
layer_selector = LayerSelector()
layer_selector.set_layers(False, False, True) # 只选择表面层的设置方法
layer_selector.set_use_sc_neighbors(True) # 使用Sidechain neighbor算法,否则使用SASA-based算法,确定内核残基。
layer_selector.set_cutoffs(5.2, 2.0) # 内核,表层邻居数量截断设置
layer_selector.apply(pose)
core.select.residue_selector.LayerSelector: {0} Setting LayerSelector to use sidechain neighbors to determine burial. core.select.residue_selector.LayerSelector: {0} Set cutoffs for core and surface to 5.2 and 2, respectively, in LayerSelector. core.select.residue_selector.LayerSelector: {0} Setting core=false boundary=false surface=true in LayerSelector. core.select.residue_selector.LayerSelector: {0} Setting LayerSelector to use sidechain neighbors to determine burial. core.select.residue_selector.LayerSelector: {0} Set cutoffs for core and surface to 5.2 and 2, respectively, in LayerSelector.
vector1_bool[0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1]
# 可视化选择 表面层氨基酸
pymol_selected = SelectedResiduesPyMOLMetric()
pymol_selected.set_residue_selector(layer_selector)
prefix = 'surface_select_'
pymol_selected.apply(pose, prefix)
string_metric = sm_data.get_string_metric_data()
string_metric['surface_select_pymol_selection']
'select rosetta_sele, (chain H and resid 3,5,7,9,10,11,13,14,15,17,19,21,23,25,28,30,31,40,41,42,43,52,54,55,56,61,62,64,65,68,70,72,73,74,75,76,77,79,81,82A,82B,83,84,85,87,98,99,100A,105,108,110) or (chain L and resid 1,3,5,7,9,10,12,14,15,16,18,20,22,24,26,27,28,30,31,39,40,41,43,45,50,52,53,56,57,59,60,63,65,67,68,69,70,72,74,76,77,79,80,81,83,93,100,103,105)'
在Rosetta中,键是一个重要的描述参数。此处主要介绍BondedResidueSelector和UnsatSelector两种选择器。
选择与给定残基成键的残基,包括主链成键的残基和其他任何与之成键的残基。
from pyrosetta.rosetta.core.select.residue_selector import BondedResidueSelector, ResidueIndexSelector
residue_selector = ResidueIndexSelector('1-5')
bonded_selector = BondedResidueSelector()
bonded_selector.set_input_set_selector(residue_selector)
bonded_selector.apply(pose)
core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 1 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 1 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 1 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 1 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 1 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 1 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 1 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 1 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 1 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 1 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 2 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 1 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 1 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 1 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 1 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 1 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 1 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 1 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 1 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 1 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 1 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 1 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 1 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 1 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 1 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 1 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 1 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 1 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 1 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 1 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 1 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 1 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 1 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 1 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 1 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 2 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 2 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 1 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 2 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 2 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 2 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 2 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 2 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 2 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 3 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 2 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 2 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 2 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 2 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 2 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 2 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 2 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 2 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 2 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 2 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 2 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 2 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 2 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 2 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 2 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 2 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 2 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 2 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 2 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 2 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 2 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 2 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 2 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 2 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 3 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 3 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 2 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 3 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 3 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 3 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 3 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 3 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 3 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 4 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 3 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 3 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 3 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 3 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 3 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 3 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 3 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 3 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 3 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 3 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 3 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 3 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 3 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 3 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 3 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 3 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 3 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 3 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 3 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 3 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 3 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 3 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 3 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 3 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 3 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 3 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 3 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 3 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 4 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 4 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 3 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 4 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 4 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 4 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 4 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 4 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 4 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 5 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 4 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 4 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 4 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 4 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 4 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 4 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 4 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 4 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 4 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 4 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 4 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 4 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 4 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 4 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 4 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 4 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 4 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 4 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 4 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 4 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 4 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 4 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 4 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 4 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 4 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 4 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 4 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 4 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 4 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 4 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 4 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 4 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 4 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 4 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 5 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 5 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 4 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 5 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 5 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 5 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 5 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 5 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 5 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 6 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 5 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 5 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 5 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 5 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 5 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 5 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 5 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 5 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 5 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 5 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 5 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 5 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 5 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 5 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 5 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 5 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 5 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 5 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 5 core.select.residue_selector.BondedResidueSelector: {0} Selecting residue 5
vector1_bool[1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
选择所有与子集产生氢键的氨基酸,如果未设置子集,那么将返回所有形成氢键且氢键能量E>cutoff的氨基酸。
from pyrosetta.rosetta.protocols.residue_selectors import HBondSelector
from pyrosetta import create_score_function
scorefxn = create_score_function('ref2015') #默认ref2015
residue_selector = ResidueIndexSelector('42H-60H')
hbond_selector = HBondSelector()
hbond_selector.set_input_set_selector(residue_selector)
hbond_selector.set_scorefxn(scorefxn)
hbond_selector.set_hbond_energy_cutoff(-0.5) #设置氢键能量的cutoff
hbond_selector.set_include_bb_bb(False) #设置是否包括主链氢键,默认是False(即不包括)
hbond_selector.apply(pose)
core.scoring.etable: {0} Starting energy table calculation
core.scoring.etable: {0} smooth_etable: changing atr/rep split to bottom of energy well
core.scoring.etable: {0} smooth_etable: spline smoothing lj etables (maxdis = 6)
core.scoring.etable: {0} smooth_etable: spline smoothing solvation etables (max_dis = 6)
core.scoring.etable: {0} Finished calculating energy tables.
basic.io.database: {0} Database file opened: scoring/score_functions/hbonds/ref2015_params/HBPoly1D.csv
basic.io.database: {0} Database file opened: scoring/score_functions/hbonds/ref2015_params/HBFadeIntervals.csv
basic.io.database: {0} Database file opened: scoring/score_functions/hbonds/ref2015_params/HBEval.csv
basic.io.database: {0} Database file opened: scoring/score_functions/hbonds/ref2015_params/DonStrength.csv
basic.io.database: {0} Database file opened: scoring/score_functions/hbonds/ref2015_params/AccStrength.csv
basic.io.database: {0} Database file opened: scoring/score_functions/omega/omega_ppdep.all.txt
basic.io.database: {0} Database file opened: scoring/score_functions/omega/omega_ppdep.gly.txt
basic.io.database: {0} Database file opened: scoring/score_functions/omega/omega_ppdep.pro.txt
basic.io.database: {0} Database file opened: scoring/score_functions/omega/omega_ppdep.valile.txt
basic.io.database: {0} Database file opened: scoring/score_functions/P_AA_pp/P_AA
basic.io.database: {0} Database file opened: scoring/score_functions/P_AA_pp/P_AA_n
core.scoring.P_AA: {0} shapovalov_lib::shap_p_aa_pp_smooth_level of 1( aka low_smooth ) got activated.
basic.io.database: {0} Database file opened: scoring/score_functions/P_AA_pp/shapovalov/10deg/kappa131/a20.prop
core.scoring.ScoreFunctionFactory: {0} SCOREFUNCTION: ref2015
core.scoring.ScoreFunctionFactory: {0} The -auto_setup_metals flag was used with no metalbinding_constraint weight set in the weights file. Setting to 1.0.
basic.io.database: {0} Database file opened: scoring/score_functions/elec_cp_reps.dat
core.scoring.elec.util: {0} Read 40 countpair representative atoms
core.pack.dunbrack.RotamerLibrary: {0} shapovalov_lib_fixes_enable option is true.
core.pack.dunbrack.RotamerLibrary: {0} shapovalov_lib::shap_dun10_smooth_level of 1( aka lowest_smooth ) got activated.
core.pack.dunbrack.RotamerLibrary: {0} Binary rotamer library selected: /opt/miniconda3/lib/python3.7/site-packages/pyrosetta/database/rotamer/shapovalov/StpDwn_0-0-0/Dunbrack10.lib.bin
core.pack.dunbrack.RotamerLibrary: {0} Using Dunbrack library binary file '/opt/miniconda3/lib/python3.7/site-packages/pyrosetta/database/rotamer/shapovalov/StpDwn_0-0-0/Dunbrack10.lib.bin'.
core.pack.dunbrack.RotamerLibrary: {0} Dunbrack 2010 library took 0.193597 seconds to load from binary
vector1_bool[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
将选出与架骨的羰基或氨基不满足形成氢键的氨基酸。
from pyrosetta.rosetta.protocols.hbnet import *
unsat_selector = UnsatSelector()
unsat_selector.set_consider_mainchain_only(True) #True是仅考虑主链,False是不仅仅考虑主链
unsat_selector.set_hbond_energy_cutoff(-0.5) #设置氢键能的截断
unsat_selector.apply(pose)
core.scoring.ScoreFunctionFactory: {0} SCOREFUNCTION: ref2015
core.scoring.ScoreFunctionFactory: {0} The -auto_setup_metals flag was used with no metalbinding_constraint weight set in the weights file. Setting to 1.0.
vector1_bool[1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 1, 1]
在Rosetta中,二面角作为描述蛋白骨架结构最重要的参数,当然少不了与二面角数据有关的选择器。此处主要介绍BinSelector、PhiSelector。
ABEGO系统在Rosetta中也是比较重要的概念,是从Ramachandran-plot的分布区间进行定义的离散模型, 坐标轴分别定义了phi/psi角,用于描述蛋白局部骨架结构的构象。 ABEGO的每个字母代表一个区间, 这些区间的分布是有二级结构的偏向性的:
# 将满足phi、psi落在某个区间骨架二面角的残基选出。
from pyrosetta.rosetta.core.select.residue_selector import BinSelector
bin_selector = BinSelector()
bin_selector.set_bin_name('A') # 选择落在A区域的氨基酸
bin_selector.set_bin_params_file_name('ABEGO')
bin_selector.initialize_and_check() # 必须先启动
bin_selector.apply(pose)
basic.io.database: {0} Database file opened: protocol_data/generalizedKIC/bin_params/ABEGO.bin_params core.scoring.bin_transitions.BinTransitionCalculator: {0} Opened file protocol_data/generalizedKIC/bin_params/ABEGO.bin_params for read. core.scoring.ramachandran: {0} shapovalov_lib::shap_rama_smooth_level of 4( aka highest_smooth ) got activated. basic.io.database: {0} Database file opened: scoring/score_functions/rama/shapovalov/kappa25/all.ramaProb basic.io.database: {0} Database file opened: scoring/score_functions/rama/flat/avg_L_rama.dat core.scoring.ramachandran: {0} Reading custom Ramachandran table from scoring/score_functions/rama/flat/avg_L_rama.dat. basic.io.database: {0} Database file opened: scoring/score_functions/rama/flat/sym_all_rama.dat core.scoring.ramachandran: {0} Reading custom Ramachandran table from scoring/score_functions/rama/flat/sym_all_rama.dat. basic.io.database: {0} Database file opened: scoring/score_functions/rama/flat/sym_G_rama.dat core.scoring.ramachandran: {0} Reading custom Ramachandran table from scoring/score_functions/rama/flat/sym_G_rama.dat. basic.io.database: {0} Database file opened: scoring/score_functions/rama/flat/sym_P_rama.dat core.scoring.ramachandran: {0} Reading custom Ramachandran table from scoring/score_functions/rama/flat/sym_P_rama.dat. basic.io.database: {0} Database file opened: scoring/score_functions/rama/flat/avg_L_rama_str.dat core.scoring.ramachandran: {0} Reading custom Ramachandran table from scoring/score_functions/rama/flat/avg_L_rama_str.dat. basic.io.database: {0} Database file opened: scoring/score_functions/rama/flat/sym_all_rama_str.dat core.scoring.ramachandran: {0} Reading custom Ramachandran table from scoring/score_functions/rama/flat/sym_all_rama_str.dat. basic.io.database: {0} Database file opened: scoring/score_functions/rama/flat/sym_G_rama_str.dat core.scoring.ramachandran: {0} Reading custom Ramachandran table from scoring/score_functions/rama/flat/sym_G_rama_str.dat. basic.io.database: {0} Database file opened: scoring/score_functions/rama/flat/sym_P_rama_str.dat core.scoring.ramachandran: {0} Reading custom Ramachandran table from scoring/score_functions/rama/flat/sym_P_rama_str.dat. core.scoring.bin_transitions.BinTransitionCalculator: {0} Finished read of protocol_data/generalizedKIC/bin_params/ABEGO.bin_params. core.select.residue_selector.BinSelector: {0} Loaded bin parameters file "ABEGO" and set bin to select to "A". Only selecting alpha-amino acids.
vector1_bool[0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0]
根据Ramachandran空间某一坐标轴的正负值,进行选择氨基酸。
该选择器有特定的应用场景,比如在环肽设计中,通常会混合D-/L-氨基酸。那这些氨基酸的ABGEO分布式对称的,一般用甘氨酸作为出发的氨基酸进行骨架采样,当骨架phi为正值时,这些位置就可以设计为D型氨基酸,而phi为负值时,设计为L型氨基酸。这种设计方案显得更有"物理"意义。
from pyrosetta.rosetta.core.select.residue_selector import PhiSelector
phi_selector = PhiSelector()
phi_selector.set_select_positive_phi(True) # True=select +phi
phi_selector.set_ignore_unconnected_upper(True)
phi_selector.apply(pose)
vector1_bool[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0]
邻居的概念应用十分广泛,比如我想选择酶活中心周围8埃距离范围内的所有氨基酸等,该选择器对区域性设计时十分有用!
上一节已经讲过NeighborhoodResidueSelector,这一节主要讲后三个选择器。
不同于NeighborhoodResidueSelector,NumNeighborsSelector只会将周围邻居氨基酸超过设定阈值部分的氨基酸位点选出,对于选择氨基酸密度高的区域比较有用。
from pyrosetta.rosetta.core.select.residue_selector import NumNeighborsSelector
nn_selector = NumNeighborsSelector(15, 10.0) # 两个参数分别是邻居数量阈值、距离半径阈值
nn_selector.count_water(True) # 甚至还可以考虑水分子的数量.
nn_selector.apply(pose)
vector1_bool[0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0]
与NeighborhoodResidueSelector相似,但CloseContactResidueSelector选定的是以整个氨基酸所有原子为中心一定范围内的残基,因此会对氨基酸的rotemer很敏感,而NeighborhoodResidueSelector选定的是以Cβ原子为中心一定范围内的残基。
from pyrosetta.rosetta.core.select.residue_selector import CloseContactResidueSelector, ResidueIndexSelector
residue1_selector = ResidueIndexSelector('1')
cc_selector = CloseContactResidueSelector()
cc_selector.central_residue_group_selector(residue1_selector)
cc_selector.threshold(10.0)
cc_selector.apply(pose)
core.select.residue_selector.CloseContactResidueSelector: {0} Selecting residues around central seqpos: 1 with a distance cutoff of 10
vector1_bool[1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
选择与金属有范德华相互作用的残基,即: 潜在相互作用的原子和金属原子的距离不超过该原子和金属原子范德华半径总和与距离截断因子的乘积。
其中: 距离截断因子dist_cutoff_multiplier的默认值为1。
from pyrosetta.rosetta.protocols.residue_selectors import LigandMetalContactSelector
from pyrosetta.rosetta.core.select.residue_selector import ResidueIndexSelector
from pyrosetta.rosetta.core.select.residue_selector import *
init("-in:auto_setup_metals")
metal_protein_pose = pose_from_pdb('./data/6xbe.pdb')
pose_index_selector = TrueResidueSelector() # TrueResidueSelector: 选择整个Pose的所有残基和分子。
lmc_selector = LigandMetalContactSelector()
lmc_selector.set_dist_cutoff_multiplier(2.0)
lmc_selector.set_resnum_string('ZN')
lmc_selector.set_input_set_selector(pose_index_selector)
lmc_selector.apply(metal_protein_pose)
PyRosetta-4 2021 [Rosetta PyRosetta4.conda.mac.cxx11thread.serialization.python37.Release 2021.26+release.b308454c455dd04f6824cc8b23e54bbb9be2cdd7 2021-07-02T13:01:54] retrieved from: http://www.pyrosetta.org (C) Copyright Rosetta Commons Member Institutions. Created in JHU by Sergey Lyskov and PyRosetta Team. core.init: {0} Checking for fconfig files in pwd and ./rosetta/flags core.init: {0} Rosetta version: PyRosetta4.conda.mac.cxx11thread.serialization.python37.Release r288 2021.26+release.b308454c455 b308454c455dd04f6824cc8b23e54bbb9be2cdd7 http://www.pyrosetta.org 2021-07-02T13:01:54 core.init: {0} command: PyRosetta -in:auto_setup_metals -database /opt/miniconda3/lib/python3.7/site-packages/pyrosetta/database basic.random.init_random_generator: {0} 'RNG device' seed mode, using '/dev/urandom', seed=-1361465697 seed_offset=0 real_seed=-1361465697 thread_index=0 basic.random.init_random_generator: {0} RandomGenerator:init: Normal mode, seed=-1361465697 RG_type=mt19937 core.import_pose.import_pose: {0} File './data/6xbe.pdb' automatically determined to be of type PDB core.io.pose_from_sfr.PoseFromSFRBuilder: {0} ZN 230 was added by a jump, with base residue 81 core.io.pose_from_sfr.PoseFromSFRBuilder: {0} ZN 231 was added by a jump, with base residue 167 core.io.pose_from_sfr.PoseFromSFRBuilder: {0} ZN 232 was added by a jump, with base residue 111 core.util.metalloproteins_util: {0} Automatically setting covalent bonds between metal ions and metal-binding residues. core.util.metalloproteins_util: {0} Adding covalent linkage between residue 79's NE2 atom and residue 230's ZN atom. core.util.metalloproteins_util: {0} Adding covalent linkage between residue 81's ND1 atom and residue 230's ZN atom. core.util.metalloproteins_util: {0} Adding covalent linkage between residue 148's NE2 atom and residue 230's ZN atom. core.util.metalloproteins_util: {0} Adding covalent linkage between residue 83's OD2 atom and residue 231's ZN atom. core.util.metalloproteins_util: {0} Adding covalent linkage between residue 167's SG atom and residue 231's ZN atom. core.util.metalloproteins_util: {0} Adding covalent linkage between residue 209's NE2 atom and residue 231's ZN atom. core.util.metalloproteins_util: {0} Automatically setting up constraints between metal ions and metal-binding residues. protocols.residue_selectors.LigandMetalContactSelector: {0} Residue 1 selected protocols.residue_selectors.LigandMetalContactSelector: {0} Residue 2 selected protocols.residue_selectors.LigandMetalContactSelector: {0} Residue 3 selected protocols.residue_selectors.LigandMetalContactSelector: {0} Residue 4 selected protocols.residue_selectors.LigandMetalContactSelector: {0} Residue 5 selected protocols.residue_selectors.LigandMetalContactSelector: {0} Residue 6 selected protocols.residue_selectors.LigandMetalContactSelector: {0} Residue 7 selected protocols.residue_selectors.LigandMetalContactSelector: {0} Residue 8 selected protocols.residue_selectors.LigandMetalContactSelector: {0} Residue 9 selected protocols.residue_selectors.LigandMetalContactSelector: {0} Residue 1 selected protocols.residue_selectors.LigandMetalContactSelector: {0} Residue 2 selected protocols.residue_selectors.LigandMetalContactSelector: {0} Residue 3 selected protocols.residue_selectors.LigandMetalContactSelector: {0} Residue 4 selected protocols.residue_selectors.LigandMetalContactSelector: {0} Residue 5 selected protocols.residue_selectors.LigandMetalContactSelector: {0} Residue 6 selected protocols.residue_selectors.LigandMetalContactSelector: {0} Residue 7 selected protocols.residue_selectors.LigandMetalContactSelector: {0} Residue 8 selected protocols.residue_selectors.LigandMetalContactSelector: {0} Residue 9 selected protocols.residue_selectors.LigandMetalContactSelector: {0} Residue 10 selected protocols.residue_selectors.LigandMetalContactSelector: {0} Residue 1 selected protocols.residue_selectors.LigandMetalContactSelector: {0} Residue 2 selected protocols.residue_selectors.LigandMetalContactSelector: {0} Residue 3 selected protocols.residue_selectors.LigandMetalContactSelector: {0} Residue 4 selected protocols.residue_selectors.LigandMetalContactSelector: {0} Residue 5 selected
vector1_bool[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
# 可视化 与金属有范德华相互作用的残基
pymol_selected = SelectedResiduesPyMOLMetric()
pymol_selected.set_residue_selector(lmc_selector)
prefix = 'lmc_'
pymol_selected.apply(metal_protein_pose, prefix)
protocols.residue_selectors.LigandMetalContactSelector: {0} Residue 1 selected protocols.residue_selectors.LigandMetalContactSelector: {0} Residue 2 selected protocols.residue_selectors.LigandMetalContactSelector: {0} Residue 3 selected protocols.residue_selectors.LigandMetalContactSelector: {0} Residue 4 selected protocols.residue_selectors.LigandMetalContactSelector: {0} Residue 5 selected protocols.residue_selectors.LigandMetalContactSelector: {0} Residue 6 selected protocols.residue_selectors.LigandMetalContactSelector: {0} Residue 7 selected protocols.residue_selectors.LigandMetalContactSelector: {0} Residue 8 selected protocols.residue_selectors.LigandMetalContactSelector: {0} Residue 9 selected protocols.residue_selectors.LigandMetalContactSelector: {0} Residue 1 selected protocols.residue_selectors.LigandMetalContactSelector: {0} Residue 2 selected protocols.residue_selectors.LigandMetalContactSelector: {0} Residue 3 selected protocols.residue_selectors.LigandMetalContactSelector: {0} Residue 4 selected protocols.residue_selectors.LigandMetalContactSelector: {0} Residue 5 selected protocols.residue_selectors.LigandMetalContactSelector: {0} Residue 6 selected protocols.residue_selectors.LigandMetalContactSelector: {0} Residue 7 selected protocols.residue_selectors.LigandMetalContactSelector: {0} Residue 8 selected protocols.residue_selectors.LigandMetalContactSelector: {0} Residue 9 selected protocols.residue_selectors.LigandMetalContactSelector: {0} Residue 10 selected protocols.residue_selectors.LigandMetalContactSelector: {0} Residue 1 selected protocols.residue_selectors.LigandMetalContactSelector: {0} Residue 2 selected protocols.residue_selectors.LigandMetalContactSelector: {0} Residue 3 selected protocols.residue_selectors.LigandMetalContactSelector: {0} Residue 4 selected protocols.residue_selectors.LigandMetalContactSelector: {0} Residue 5 selected
lmc_sm_data = get_sm_data(metal_protein_pose)
lmc_string_metric = lmc_sm_data.get_string_metric_data()
lmc_string_metric['lmc_pymol_selection']
'select rosetta_sele, (chain A and resid 120,122,124,152,189,208,223,249,250)'
结果解读
上图中粉色棍棒形式的残基为与金属有范德华相互作用的残基。
基于一、二级结构的选择器种类丰富:
选择一级序列上的邻近残基且包括选定的残基。
from pyrosetta.rosetta.core.select.residue_selector import PrimarySequenceNeighborhoodSelector, ResidueIndexSelector
residue1_selector = ResidueIndexSelector('5')
psn_selector = PrimarySequenceNeighborhoodSelector()
psn_selector.set_selector(residue1_selector)
psn_selector.set_upper_residues(2) #设定上限,默认为1
psn_selector.set_lower_residues(2) #设定下限,默认为1
psn_selector.apply(pose)
#残基118在H链,残基119在L链,如果是选定残基118,则只选择残基116,117和118
core.select.residue_selector.PrimarySequenceNeighborhoodSelector: {0} ]
vector1_bool[0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
#上游残基数、下游残基数、初始选择、是否允许穿越边界TER?
residue1_selector = ResidueIndexSelector('118')
psn_selector.set_selector(residue1_selector)
psn_selector.set_cross_chain_boundaries(False) #True是穿越边界TER,False是不穿越
psn_selector.apply(pose)
core.select.residue_selector.PrimarySequenceNeighborhoodSelector: {0} ]
vector1_bool[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
二级结构元件选择器,根据设置,可以自定义选择某段二级结构的残基。用法与SecondaryStructureSelector有些差异。
selection的语法结构为: “A,B,C” or “A,B”;
A代表二级结构序号(H、E、L独立编码);B代表二级结构类型(H、E、L),C代表分割区段:S=Start, E=End, M=Middle。
例子1: selection=”-1,H,S” to_selection=”4,L,E” 代表选择 最后一端螺旋到第四个loop区的结尾,该区域所有的氨基酸。
例子2: selection=”3,H,S” to_selection=”4,H,E” 代表选择 第三段螺旋的开始至第四段螺旋的结尾,该区域所有的氨基酸。
# example1:selection
from pyrosetta.rosetta.protocols import rosetta_scripts
sheet_pose = pose_from_pdb('./data/EHEE_rd4_0976.pdb')
sse1_selector=rosetta_scripts.XmlObjects.create_from_string('''
<RESIDUE_SELECTORS>
<SSElement name="SSE" selection="-1,E" chain="A"/>
</RESIDUE_SELECTORS>
''').get_residue_selector('SSE')
sse1_selector.apply(sheet_pose)
core.import_pose.import_pose: {0} File './data/EHEE_rd4_0976.pdb' automatically determined to be of type PDB
core.util.metalloproteins_util: {0} Automatically setting covalent bonds between metal ions and metal-binding residues.
core.util.metalloproteins_util: {0} Automatically setting up constraints between metal ions and metal-binding residues.
protocols.rosetta_scripts.RosettaScriptsParser: {0} Generating XML Schema for rosetta_scripts...
protocols.rosetta_scripts.RosettaScriptsParser: {0} ...done
protocols.rosetta_scripts.RosettaScriptsParser: {0} Initializing schema validator...
protocols.rosetta_scripts.RosettaScriptsParser: {0} ...done
protocols.rosetta_scripts.RosettaScriptsParser: {0} Validating input script...
protocols.rosetta_scripts.RosettaScriptsParser: {0} ...done
protocols.rosetta_scripts.RosettaScriptsParser: {0} Parsed script:
<ROSETTASCRIPTS>
<RESIDUE_SELECTORS>
<SSElement chain="A" name="SSE" selection="-1,E"/>
</RESIDUE_SELECTORS>
<PROTOCOLS/>
</ROSETTASCRIPTS>
core.scoring.ScoreFunctionFactory: {0} SCOREFUNCTION: ref2015
core.scoring.ScoreFunctionFactory: {0} The -auto_setup_metals flag was used with no metalbinding_constraint weight set in the weights file. Setting to 1.0.
core.scoring.etable: {0} Starting energy table calculation
core.scoring.etable: {0} smooth_etable: changing atr/rep split to bottom of energy well
core.scoring.etable: {0} smooth_etable: spline smoothing lj etables (maxdis = 6)
core.scoring.etable: {0} smooth_etable: spline smoothing solvation etables (max_dis = 6)
core.scoring.etable: {0} Finished calculating energy tables.
basic.io.database: {0} Database file opened: scoring/score_functions/PairEPotential/pdb_pair_stats_fine
basic.io.database: {0} Database file opened: scoring/score_functions/InterchainPotential/interchain_env_log.txt
basic.io.database: {0} Database file opened: scoring/score_functions/InterchainPotential/interchain_pair_log.txt
basic.io.database: {0} Database file opened: scoring/score_functions/EnvPairPotential/env_log.txt
basic.io.database: {0} Database file opened: scoring/score_functions/EnvPairPotential/cbeta_den.txt
basic.io.database: {0} Database file opened: scoring/score_functions/EnvPairPotential/pair_log.txt
basic.io.database: {0} Database file opened: scoring/score_functions/EnvPairPotential/cenpack_log.txt
protocols.rosetta_scripts.ParsedProtocol: {0} ParsedProtocol mover with the following settings
vector1_bool[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1]
# example2:selection + to_selection = 选择 selection 到 to selection之间的所有残基。
from pyrosetta.rosetta.protocols import rosetta_scripts
sse2_selector=rosetta_scripts.XmlObjects.create_from_string('''
<RESIDUE_SELECTORS>
<SSElement name="SSE" selection="1,H" to_selection="2,E" chain="A"/>
</RESIDUE_SELECTORS>
''').get_residue_selector('SSE')
sse2_selector.apply(sheet_pose)
protocols.rosetta_scripts.RosettaScriptsParser: {0} Generating XML Schema for rosetta_scripts...
protocols.rosetta_scripts.RosettaScriptsParser: {0} ...done
protocols.rosetta_scripts.RosettaScriptsParser: {0} Initializing schema validator...
protocols.rosetta_scripts.RosettaScriptsParser: {0} ...done
protocols.rosetta_scripts.RosettaScriptsParser: {0} Validating input script...
protocols.rosetta_scripts.RosettaScriptsParser: {0} ...done
protocols.rosetta_scripts.RosettaScriptsParser: {0} Parsed script:
<ROSETTASCRIPTS>
<RESIDUE_SELECTORS>
<SSElement chain="A" name="SSE" selection="1,H" to_selection="2,E"/>
</RESIDUE_SELECTORS>
<PROTOCOLS/>
</ROSETTASCRIPTS>
core.scoring.ScoreFunctionFactory: {0} SCOREFUNCTION: ref2015
core.scoring.ScoreFunctionFactory: {0} The -auto_setup_metals flag was used with no metalbinding_constraint weight set in the weights file. Setting to 1.0.
protocols.rosetta_scripts.ParsedProtocol: {0} ParsedProtocol mover with the following settings
vector1_bool[0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0]
二级结构元件选择器,将所有具有某类二级结构的氨基酸选出。
from pyrosetta.rosetta.core.select.residue_selector import SecondaryStructureSelector
# E:beta折叠 H:α-螺旋 L:loop无规卷曲,选择所有该类型的二级结构区间。
ss_selector = SecondaryStructureSelector('H') #选择所有的α-螺旋区域;
ss_selector = SecondaryStructureSelector('EH') #选择所有β-折叠和α-螺旋区域;
ss_selector.apply(sheet_pose)
core.select.residue_selector.SecondaryStructureSelector: {0} Using dssp for secondary structure: LEEEEELLHHHHHHHHHHHHHLLLLEEEEEELLEEEEEEL
vector1_bool[0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0]
β折叠配对残基选择器,将β折叠中配对的残基对选出。
使用这个选择器的时候需要参入比较多的人工处理成分:
#example1:自动全选所有配对的残基。
from pyrosetta.rosetta.protocols.denovo_design.residue_selectors import PairedSheetResidueSelector
from pyrosetta.rosetta.core.select.residue_selector import SecondaryStructureSelector
secondarystructure = SecondaryStructureSelector()
secondarystructure.set_use_dssp(True)
paired_sheet = PairedSheetResidueSelector()
paired_sheet.apply(sheet_pose)
protocols.denovo_design.components.StructureDataFactory: {0} [ WARNING ] -run:preserve_header is required for using "Tomponents" -- setting it to true. To avoid this message, include -run:preserve header true in your flags
protocols.denovo_design.residue_selectors.PairedSheetResidueSelector: {0} Could not determine strand pairings! You must specify them using the "sheet_topology" option or attach a StructureData object to the pose. No residues will be selected.
vector1_bool[0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0]
可见Sheet主要分布在三个区间:'2-6','26-31','34-39'。第一段beta片与第三段是反平行的,第二段与第三段也是反平行的。
如果想选取特定sheet_topology的写法:format A-B.P.R
R是指残基的平移。平移会与parallel和antiparallel有关,并且在平移时短链会优先与长链对齐,然后再一起平移。
paired_sheet = PairedSheetResidueSelector()
paired_sheet.set_sheet_topology('1-3.A.0')
paired_sheet.apply(sheet_pose)
protocols.topology.StrandPairing: {0} strand1=1(2,6) protocols.topology.StrandPairing: {0} strand2=3(34,39) protocols.topology.StrandPairing: {0} abego=[] protocols.topology.StrandPairing: {0} Bulges1: [] Bulges2: []
vector1_bool[0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0]
# 可视化 所有配对的残基
pymol_selected = SelectedResiduesPyMOLMetric()
pymol_selected.set_residue_selector(paired_sheet)
prefix = 'all_paired_sheet_'
pymol_selected.apply(sheet_pose, prefix)
paired_sm_data = get_sm_data(sheet_pose)
string_metric = paired_sm_data.get_string_metric_data()
string_metric['all_paired_sheet_pymol_selection']
protocols.topology.StrandPairing: {0} strand1=1(2,6) protocols.topology.StrandPairing: {0} strand2=3(34,39) protocols.topology.StrandPairing: {0} abego=[] protocols.topology.StrandPairing: {0} Bulges1: [] Bulges2: []
'select rosetta_sele, (chain A and resid 2,3,4,5,6,35,36,37,38,39)'
结果解读
上图中着色为粉色的残基为选出来的配对残基,其中被选择的区域骨架有规整的氢键配对。
当R不为0时,选择的残基会向不同的方向有所平移。
paired_sheet = PairedSheetResidueSelector()
paired_sheet.set_sheet_topology('1-3.A.1')
paired_sheet.apply(sheet_pose)
protocols.topology.StrandPairing: {0} strand1=1(2,6) protocols.topology.StrandPairing: {0} strand2=3(34,39) protocols.topology.StrandPairing: {0} abego=[] protocols.topology.StrandPairing: {0} Bulges1: [] Bulges2: []
vector1_bool[0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0]
# 可视化 所有配对的残基
pymol_selected = SelectedResiduesPyMOLMetric()
pymol_selected.set_residue_selector(paired_sheet)
prefix = 'shift_all_paired_sheet_'
pymol_selected.apply(sheet_pose, prefix)
paired_sm_data = get_sm_data(sheet_pose)
string_metric = paired_sm_data.get_string_metric_data()
string_metric['shift_all_paired_sheet_pymol_selection']
protocols.topology.StrandPairing: {0} strand1=1(2,6) protocols.topology.StrandPairing: {0} strand2=3(34,39) protocols.topology.StrandPairing: {0} abego=[] protocols.topology.StrandPairing: {0} Bulges1: [] Bulges2: []
'select rosetta_sele, (chain A and resid 3,4,5,6,36,37,38,39)'
根据用户定义的task operator去选择残基,并且残基的选择会根据PackerTask中designable、fixed和packable的状态。
from pyrosetta.rosetta.protocols.residue_selectors import TaskSelector
from pyrosetta.rosetta.core.pack.task import TaskFactory
tf = TaskFactory()
task_selector = TaskSelector()
task_selector.set_select_designable(True)
task_selector.set_select_fixed(False)
task_selector.set_select_packable(False)
task_selector.set_task_factory(tf)
task_selector.apply(pose)
vector1_bool[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]