{ "cells": [ { "cell_type": "markdown", "id": "edab0a76", "metadata": {}, "source": [ "## TaskOperation API" ] }, { "cell_type": "markdown", "id": "769d8eaf", "metadata": {}, "source": [ "@Author: 吴炜坤\n", "\n", "@email:weikun.wu@xtalpi.com/weikunwu@163.com" ] }, { "cell_type": "markdown", "id": "7e1f23a8", "metadata": {}, "source": [ "本章节主要详尽地介绍TaskOperation的API,主要参考页面:\n", "> http://new.rosettacommons.org/docs/latest/scripting_documentation/RosettaScripts/TaskOperations/TaskOperations-RosettaScripts#specialized-operations_packer-behavior-modification" ] }, { "cell_type": "markdown", "id": "b84a7283", "metadata": {}, "source": [ "**注意:**\n", "1. 一些TaskOperation由于时代久远,只能配合xmlobject一同使用。xmlobject的详情请参考第九章,此处仅列出使用语法;\n", "2. 一些TaskOperation年久失修,已经不能正常运行,此处也略去不做介绍;\n", "3. 一些TaskOperation最新发布,在代码中尚未实装,本文也列举出来,在未来可能会进行更新。" ] }, { "cell_type": "markdown", "id": "b1fcd5fe", "metadata": {}, "source": [ "### TaskOperation从构建逻辑上来分类共计有两种类型:\n", "\n", "* Residue Level TaskOperations: 根据Selector设定选择范围内位点的Rotamer自由度(手动挡);\n", "* Specialized Operations: 根据预设好逻辑,对位点进行全局Rotamer操作(自动挡);" ] }, { "cell_type": "markdown", "id": "756806f5", "metadata": {}, "source": [ "## 一、Residue Level TaskOperations" ] }, { "cell_type": "markdown", "id": "ac898080", "metadata": {}, "source": [ "Residue Level TaskOperations(RLT)一般需要配合Selector来指定操作的范围。用户可以直观地将RLT理解为一个自定义版本的Specialized Operations。特别注意的是:RLT是无法直接被TaskFactory所读取,其必须通过OperateOnResidueSubset函数来生成一个标准的TaskOperations。" ] }, { "cell_type": "markdown", "id": "3b21abfc", "metadata": {}, "source": [ "Rosetta中目前支持的所有RTL的列表:\n", "- RestrictToRepackingRLT\n", "- PreventRepackingRLT\n", "- RestrictAbsentCanonicalAASExceptNativeRLT\n", "- RestrictAbsentCanonicalAASRLT\n", "- DisallowIfNonnativeRLT\n", "- IncludeCurrentRLT\n", "- ExtraRotamersGenericRLT" ] }, { "cell_type": "code", "execution_count": 1, "id": "d84749f7", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "PyRosetta-4 2021 [Rosetta PyRosetta4.conda.mac.cxx11thread.serialization.python37.Release 2021.31+release.c7009b3115c22daa9efe2805d9d1ebba08426a54 2021-08-07T10:04:12] retrieved from: http://www.pyrosetta.org\n", "(C) Copyright Rosetta Commons Member Institutions. Created in JHU by Sergey Lyskov and PyRosetta Team.\n", "\u001b[0mcore.init: {0} \u001b[0mChecking for fconfig files in pwd and ./rosetta/flags\n", "\u001b[0mcore.init: {0} \u001b[0mRosetta version: PyRosetta4.conda.mac.cxx11thread.serialization.python37.Release r292 2021.31+release.c7009b3115c c7009b3115c22daa9efe2805d9d1ebba08426a54 http://www.pyrosetta.org 2021-08-07T10:04:12\n", "\u001b[0mcore.init: {0} \u001b[0mcommand: PyRosetta -ex1 -ex2aro -database /opt/miniconda3/lib/python3.7/site-packages/pyrosetta/database\n", "\u001b[0mbasic.random.init_random_generator: {0} \u001b[0m'RNG device' seed mode, using '/dev/urandom', seed=-10988823 seed_offset=0 real_seed=-10988823 thread_index=0\n", "\u001b[0mbasic.random.init_random_generator: {0} \u001b[0mRandomGenerator:init: Normal mode, seed=-10988823 RG_type=mt19937\n", "\u001b[0mcore.chemical.GlobalResidueTypeSet: {0} \u001b[0mFinished initializing fa_standard residue type set. Created 983 residue types\n", "\u001b[0mcore.chemical.GlobalResidueTypeSet: {0} \u001b[0mTotal time to initialize 0.696495 seconds.\n", "\u001b[0mcore.import_pose.import_pose: {0} \u001b[0mFile './data/helix.pdb' automatically determined to be of type PDB\n", "\u001b[0mcore.conformation.Conformation: {0} \u001b[0m\u001b[1m[ WARNING ]\u001b[0m missing heavyatom: OXT on residue GLY:CtermProteinFull 14\n" ] } ], "source": [ "# 初始化PyRosetta并读取一段螺旋结构的PDB。\n", "from pyrosetta import *\n", "init()\n", "pose = pose_from_pdb('./data/helix.pdb')" ] }, { "cell_type": "markdown", "id": "b2a2b776", "metadata": {}, "source": [ "**RestrictToRepackingRLT在上一章节中已经介绍,此处不再赘述。**" ] }, { "cell_type": "code", "execution_count": 2, "id": "fba20a32", "metadata": {}, "outputs": [], "source": [ "# 预先定义好 氨基酸的作用范围。\n", "from pyrosetta.rosetta.core.pack.task.operation import *\n", "from pyrosetta.rosetta.core.pack.task.operation import OperateOnResidueSubset\n", "from pyrosetta.rosetta.core.select.residue_selector import ResidueIndexSelector\n", "from pyrosetta.rosetta.core.pack.task import TaskFactory\n", "# 选择氨基酸范围\n", "select_pos = ResidueIndexSelector('2,3,4,5,6,7,8,9,10,11,12,13')" ] }, { "cell_type": "markdown", "id": "ee8563b6", "metadata": {}, "source": [ "#### 1.1 PreventRepackingRLT" ] }, { "cell_type": "markdown", "id": "dfb48c63", "metadata": {}, "source": [ "将选择区域的氨基酸Rotamer自由度完全关闭,其侧链构象维持不变。" ] }, { "cell_type": "code", "execution_count": 3, "id": "6ba0d0c0", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "#Packer_Task\n", "\n", "Threads to request: ALL AVAILABLE\n", "\n", "resid\tpack?\tdesign?\tallowed_aas\n", "1\tTRUE\tTRUE\tALA:NtermProteinFull,CYS:NtermProteinFull,ASP:NtermProteinFull,GLU:NtermProteinFull,PHE:NtermProteinFull,GLY:NtermProteinFull,HIS:NtermProteinFull,HIS_D:NtermProteinFull,ILE:NtermProteinFull,LYS:NtermProteinFull,LEU:NtermProteinFull,MET:NtermProteinFull,ASN:NtermProteinFull,PRO:NtermProteinFull,GLN:NtermProteinFull,ARG:NtermProteinFull,SER:NtermProteinFull,THR:NtermProteinFull,VAL:NtermProteinFull,TRP:NtermProteinFull,TYR:NtermProteinFull\n", "2\tFALSE\tFALSE\t\n", "3\tFALSE\tFALSE\t\n", "4\tFALSE\tFALSE\t\n", "5\tFALSE\tFALSE\t\n", "6\tFALSE\tFALSE\t\n", "7\tFALSE\tFALSE\t\n", "8\tFALSE\tFALSE\t\n", "9\tFALSE\tFALSE\t\n", "10\tFALSE\tFALSE\t\n", "11\tFALSE\tFALSE\t\n", "12\tFALSE\tFALSE\t\n", "13\tFALSE\tFALSE\t\n", "14\tTRUE\tTRUE\tALA:CtermProteinFull,CYS:CtermProteinFull,ASP:CtermProteinFull,GLU:CtermProteinFull,PHE:CtermProteinFull,GLY:CtermProteinFull,HIS:CtermProteinFull,HIS_D:CtermProteinFull,ILE:CtermProteinFull,LYS:CtermProteinFull,LEU:CtermProteinFull,MET:CtermProteinFull,ASN:CtermProteinFull,PRO:CtermProteinFull,GLN:CtermProteinFull,ARG:CtermProteinFull,SER:CtermProteinFull,THR:CtermProteinFull,VAL:CtermProteinFull,TRP:CtermProteinFull,TYR:CtermProteinFull\n", "\n" ] } ], "source": [ "# 使用OperateOnResidueSubset生成TaskOperations\n", "packing_taskop = OperateOnResidueSubset(PreventRepackingRLT(), select_pos, False)\n", "\n", "# 将TaskOperations加载至TaskFactory中\n", "pack_tf = TaskFactory()\n", "pack_tf.push_back(packing_taskop)\n", "\n", "# 生成PackerTask\n", "packer_task = pack_tf.create_task_and_apply_taskoperations(pose)\n", "print(packer_task)" ] }, { "cell_type": "markdown", "id": "31ea3505", "metadata": {}, "source": [ "#### 1.2 RestrictAbsentCanonicalAASExceptNativeRLT" ] }, { "cell_type": "markdown", "id": "32be77b1", "metadata": {}, "source": [ "将Rotamer自由度限定在给定的氨基酸类型列表,并允许保留当前位点氨基酸类型的Rotamer。" ] }, { "cell_type": "code", "execution_count": 4, "id": "1c588250", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "#Packer_Task\n", "\n", "Threads to request: ALL AVAILABLE\n", "\n", "resid\tpack?\tdesign?\tallowed_aas\n", "1\tTRUE\tTRUE\tALA:NtermProteinFull,CYS:NtermProteinFull,ASP:NtermProteinFull,GLU:NtermProteinFull,PHE:NtermProteinFull,GLY:NtermProteinFull,HIS:NtermProteinFull,HIS_D:NtermProteinFull,ILE:NtermProteinFull,LYS:NtermProteinFull,LEU:NtermProteinFull,MET:NtermProteinFull,ASN:NtermProteinFull,PRO:NtermProteinFull,GLN:NtermProteinFull,ARG:NtermProteinFull,SER:NtermProteinFull,THR:NtermProteinFull,VAL:NtermProteinFull,TRP:NtermProteinFull,TYR:NtermProteinFull\n", "2\tTRUE\tTRUE\tGLU,ILE,LYS,GLN\n", "3\tTRUE\tTRUE\tILE,LYS,LEU,GLN\n", "4\tTRUE\tTRUE\tILE,LYS,GLN\n", "5\tTRUE\tTRUE\tILE,LYS,GLN\n", "6\tTRUE\tTRUE\tILE,LYS,GLN,TRP\n", "7\tTRUE\tTRUE\tILE,LYS,GLN,VAL\n", "8\tTRUE\tTRUE\tGLU,ILE,LYS,GLN\n", "9\tTRUE\tTRUE\tILE,LYS,GLN\n", "10\tTRUE\tTRUE\tALA,ILE,LYS,GLN\n", "11\tTRUE\tTRUE\tGLU,ILE,LYS,GLN\n", "12\tTRUE\tTRUE\tILE,LYS,GLN,ARG\n", "13\tTRUE\tTRUE\tILE,LYS,ASN,GLN\n", "14\tTRUE\tTRUE\tALA:CtermProteinFull,CYS:CtermProteinFull,ASP:CtermProteinFull,GLU:CtermProteinFull,PHE:CtermProteinFull,GLY:CtermProteinFull,HIS:CtermProteinFull,HIS_D:CtermProteinFull,ILE:CtermProteinFull,LYS:CtermProteinFull,LEU:CtermProteinFull,MET:CtermProteinFull,ASN:CtermProteinFull,PRO:CtermProteinFull,GLN:CtermProteinFull,ARG:CtermProteinFull,SER:CtermProteinFull,THR:CtermProteinFull,VAL:CtermProteinFull,TRP:CtermProteinFull,TYR:CtermProteinFull\n", "\n" ] } ], "source": [ "# 定义自由度\n", "design_with_wt = RestrictAbsentCanonicalAASExceptNativeRLT()\n", "design_with_wt.aas_to_keep('QKI')\n", "\n", "# 使用OperateOnResidueSubset生成TaskOperations\n", "packing_taskop = OperateOnResidueSubset(design_with_wt, select_pos, False)\n", "\n", "# 将TaskOperations加载至TaskFactory中\n", "pack_tf = TaskFactory()\n", "pack_tf.push_back(packing_taskop)\n", "\n", "# 生成PackerTask\n", "packer_task = pack_tf.create_task_and_apply_taskoperations(pose)\n", "print(packer_task)" ] }, { "cell_type": "markdown", "id": "b5ae03f4", "metadata": {}, "source": [ "#### 1.3 RestrictAbsentCanonicalAASRLT" ] }, { "cell_type": "markdown", "id": "7991c50f", "metadata": {}, "source": [ "功能与RestrictAbsentCanonicalAASExceptNativeRLT类似,将Rotamer自由度限定在给定的氨基酸类型列表。唯一的差别在于RestrictAbsentCanonicalAASRLT会忘记当前的氨基酸类型。" ] }, { "cell_type": "code", "execution_count": 5, "id": "3f50b6ec", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "#Packer_Task\n", "\n", "Threads to request: ALL AVAILABLE\n", "\n", "resid\tpack?\tdesign?\tallowed_aas\n", "1\tTRUE\tTRUE\tALA:NtermProteinFull,CYS:NtermProteinFull,ASP:NtermProteinFull,GLU:NtermProteinFull,PHE:NtermProteinFull,GLY:NtermProteinFull,HIS:NtermProteinFull,HIS_D:NtermProteinFull,ILE:NtermProteinFull,LYS:NtermProteinFull,LEU:NtermProteinFull,MET:NtermProteinFull,ASN:NtermProteinFull,PRO:NtermProteinFull,GLN:NtermProteinFull,ARG:NtermProteinFull,SER:NtermProteinFull,THR:NtermProteinFull,VAL:NtermProteinFull,TRP:NtermProteinFull,TYR:NtermProteinFull\n", "2\tTRUE\tTRUE\tILE,LYS,GLN\n", "3\tTRUE\tTRUE\tILE,LYS,GLN\n", "4\tTRUE\tTRUE\tILE,LYS,GLN\n", "5\tTRUE\tTRUE\tILE,LYS,GLN\n", "6\tTRUE\tTRUE\tILE,LYS,GLN\n", "7\tTRUE\tTRUE\tILE,LYS,GLN\n", "8\tTRUE\tTRUE\tILE,LYS,GLN\n", "9\tTRUE\tTRUE\tILE,LYS,GLN\n", "10\tTRUE\tTRUE\tILE,LYS,GLN\n", "11\tTRUE\tTRUE\tILE,LYS,GLN\n", "12\tTRUE\tTRUE\tILE,LYS,GLN\n", "13\tTRUE\tTRUE\tILE,LYS,GLN\n", "14\tTRUE\tTRUE\tALA:CtermProteinFull,CYS:CtermProteinFull,ASP:CtermProteinFull,GLU:CtermProteinFull,PHE:CtermProteinFull,GLY:CtermProteinFull,HIS:CtermProteinFull,HIS_D:CtermProteinFull,ILE:CtermProteinFull,LYS:CtermProteinFull,LEU:CtermProteinFull,MET:CtermProteinFull,ASN:CtermProteinFull,PRO:CtermProteinFull,GLN:CtermProteinFull,ARG:CtermProteinFull,SER:CtermProteinFull,THR:CtermProteinFull,VAL:CtermProteinFull,TRP:CtermProteinFull,TYR:CtermProteinFull\n", "\n" ] } ], "source": [ "# 定义自由度\n", "design_to = RestrictAbsentCanonicalAASRLT()\n", "design_to.aas_to_keep('QKI')\n", "\n", "# 使用OperateOnResidueSubset生成TaskOperations\n", "packing_taskop = OperateOnResidueSubset(design_to, select_pos, False)\n", "\n", "# 将TaskOperations加载至TaskFactory中\n", "pack_tf = TaskFactory()\n", "pack_tf.push_back(packing_taskop)\n", "\n", "# 生成PackerTask\n", "packer_task = pack_tf.create_task_and_apply_taskoperations(pose)\n", "print(packer_task)" ] }, { "cell_type": "markdown", "id": "fe486a92", "metadata": {}, "source": [ "#### 1.4 DisallowIfNonnativeRLT" ] }, { "cell_type": "markdown", "id": "64566498", "metadata": {}, "source": [ "不允许突变为列表中指定氨基酸类型,但允许保留当前位点氨基酸类型的Rotamer。" ] }, { "cell_type": "code", "execution_count": 6, "id": "0d34502d", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "#Packer_Task\n", "\n", "Threads to request: ALL AVAILABLE\n", "\n", "resid\tpack?\tdesign?\tallowed_aas\n", "1\tTRUE\tTRUE\tALA:NtermProteinFull,CYS:NtermProteinFull,ASP:NtermProteinFull,GLU:NtermProteinFull,PHE:NtermProteinFull,GLY:NtermProteinFull,HIS:NtermProteinFull,HIS_D:NtermProteinFull,ILE:NtermProteinFull,LYS:NtermProteinFull,LEU:NtermProteinFull,MET:NtermProteinFull,ASN:NtermProteinFull,PRO:NtermProteinFull,GLN:NtermProteinFull,ARG:NtermProteinFull,SER:NtermProteinFull,THR:NtermProteinFull,VAL:NtermProteinFull,TRP:NtermProteinFull,TYR:NtermProteinFull\n", "2\tTRUE\tTRUE\tCYS,ASP,GLU,PHE,GLY,MET,ASN,PRO,SER,THR,VAL,TRP,TYR\n", "3\tTRUE\tTRUE\tCYS,ASP,GLU,PHE,GLY,LEU,MET,ASN,PRO,SER,THR,VAL,TRP,TYR\n", "4\tTRUE\tTRUE\tCYS,ASP,GLU,PHE,GLY,MET,ASN,PRO,GLN,SER,THR,VAL,TRP,TYR\n", "5\tTRUE\tTRUE\tCYS,ASP,GLU,PHE,GLY,LYS,MET,ASN,PRO,SER,THR,VAL,TRP,TYR\n", "6\tTRUE\tTRUE\tCYS,ASP,GLU,PHE,GLY,MET,ASN,PRO,SER,THR,VAL,TRP,TYR\n", "7\tTRUE\tTRUE\tCYS,ASP,GLU,PHE,GLY,MET,ASN,PRO,SER,THR,VAL,TRP,TYR\n", "8\tTRUE\tTRUE\tCYS,ASP,GLU,PHE,GLY,MET,ASN,PRO,SER,THR,VAL,TRP,TYR\n", "9\tTRUE\tTRUE\tCYS,ASP,GLU,PHE,GLY,MET,ASN,PRO,GLN,SER,THR,VAL,TRP,TYR\n", "10\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,MET,ASN,PRO,SER,THR,VAL,TRP,TYR\n", "11\tTRUE\tTRUE\tCYS,ASP,GLU,PHE,GLY,MET,ASN,PRO,SER,THR,VAL,TRP,TYR\n", "12\tTRUE\tTRUE\tCYS,ASP,GLU,PHE,GLY,MET,ASN,PRO,ARG,SER,THR,VAL,TRP,TYR\n", "13\tTRUE\tTRUE\tCYS,ASP,GLU,PHE,GLY,MET,ASN,PRO,SER,THR,VAL,TRP,TYR\n", "14\tTRUE\tTRUE\tALA:CtermProteinFull,CYS:CtermProteinFull,ASP:CtermProteinFull,GLU:CtermProteinFull,PHE:CtermProteinFull,GLY:CtermProteinFull,HIS:CtermProteinFull,HIS_D:CtermProteinFull,ILE:CtermProteinFull,LYS:CtermProteinFull,LEU:CtermProteinFull,MET:CtermProteinFull,ASN:CtermProteinFull,PRO:CtermProteinFull,GLN:CtermProteinFull,ARG:CtermProteinFull,SER:CtermProteinFull,THR:CtermProteinFull,VAL:CtermProteinFull,TRP:CtermProteinFull,TYR:CtermProteinFull\n", "\n" ] } ], "source": [ "# 定义自由度\n", "not_design_to = DisallowIfNonnativeRLT()\n", "not_design_to.disallow_aas('HLQKILRA')\n", "\n", "# 使用OperateOnResidueSubset生成TaskOperations\n", "packing_taskop = OperateOnResidueSubset(not_design_to, select_pos, False)\n", "\n", "# 将TaskOperations加载至TaskFactory中\n", "pack_tf = TaskFactory()\n", "pack_tf.push_back(packing_taskop)\n", "\n", "# 生成PackerTask\n", "packer_task = pack_tf.create_task_and_apply_taskoperations(pose)\n", "print(packer_task)" ] }, { "cell_type": "markdown", "id": "f04baedf", "metadata": {}, "source": [ "#### 1.5 IncludeCurrentRLT\n", "设定Packer在执行期间,考虑Pose输入时的Rotamer状态。" ] }, { "cell_type": "code", "execution_count": 7, "id": "30add2d0", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "True" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# 使用OperateOnResidueSubset生成TaskOperations\n", "packing_taskop = OperateOnResidueSubset(IncludeCurrentRLT(), select_pos, False)\n", "\n", "# 将TaskOperations加载至TaskFactory中\n", "pack_tf = TaskFactory()\n", "pack_tf.push_back(packing_taskop)\n", "\n", "# 生成PackerTask\n", "packer_task = pack_tf.create_task_and_apply_taskoperations(pose)\n", "\n", "# 检查是否Pack中是否包含input的rotamer构象:\n", "packer_task.include_current(2)" ] }, { "cell_type": "code", "execution_count": 8, "id": "59f8c9c6", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "False" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# 检查是否Pack中是否包含input的rotamer构象:\n", "packer_task.include_current(1)" ] }, { "cell_type": "markdown", "id": "2624e353", "metadata": {}, "source": [ "#### 1.6 ExtraRotamersGenericRLT\n", "Rosetta Pack采样Rotamer时是离散的,默认只会采纳每个格点的中心富集的构象,我们可以通过Extra Rotamer相关控制手段来增加Rotamer的采样,默认扩充采样时,采集Rotamer时会额外考虑平均$\\chi$的+/-1个标准差的构象。\n", "\n", "ExtraRotamersGenericRLT有3个定义的参数:\n", "1. ex?: “?”可选值为1-4,指定对侧链中第几个$\\chi$角进行扩大采样。\n", " - ex1: 额外采样$\\chi_{1}$二面角\n", " - ex1aro: 额外采样$\\chi_{1}$二面角(只考虑芳香族氨基酸(FHWY))\n", " - ex1aro_exposed: 额外采样$\\chi_{1}$二面角(只考虑芳香族氨基酸(FHWY)), 仅限暴露在蛋白外部的氨基酸位点。\n", " - ex2: 额外采样$\\chi_{2}$二面角\n", " - ex2aro: 额外采样$\\chi_{2}$二面角(只考虑芳香族氨基酸(FHWY))\n", " - ex2aro_exposed: 额外采样$\\chi_{2}$二面角(只考虑芳香族氨基酸(FHWY)), 仅限暴露在蛋白外部的氨基酸位点。\n", " - ex3: 额外采样$\\chi_{3}$二面角\n", " - ex4: 额外采样$\\chi_{4}$二面角\n", "2. ex?_sample_level: 指定允许的$\\chi$角标准差范围。\n", " - 0 ...... no extra chi angles\n", " - 1 ...... sample at 1 standard deviation\n", " - 2 ...... sample at 1/2 standard deviation\n", " - 3 ...... sample at two full standard deviations\n", " - 4 ...... sample at two 1/2 standard deviations\n", " - 5 ...... sample at four 1/2 standard deviations\n", " - 6 ...... sample at three 1/3 standard deviations\n", " - 7 ...... sample at six 1/4 standard deviations\n", "\n", "3. extrachi_cutoff: Rosetta默认不会对处于蛋白表面的氨基酸进行额外Rotamer采集,除非用户显式地设置(EX_CUTOFF >=1-3等)。默认每个氨基酸计算10埃范围内残基数量,当数量大于阈值时,认为是\"包埋\"的氨基酸,进行额外的Rotamer采样。因此通常EX_CUTOFF显式地设置为0,考虑所有的氨基酸位点都做Rotamer。" ] }, { "cell_type": "code", "execution_count": 9, "id": "13b11c62", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "start\n", "1 A NATAA EX ARO 1 EX ARO 2 EX_CUTOFF 0\n", "2 A NATAA EX ARO 1 EX ARO 2 EX_CUTOFF 0\n", "3 A NATAA EX ARO 1 EX ARO 2 EX_CUTOFF 0\n", "4 A NATAA EX ARO 1 EX ARO 2 EX_CUTOFF 0\n", "5 A NATAA EX ARO 1 EX ARO 2 EX_CUTOFF 0\n", "6 A NATAA EX ARO 1 EX ARO 2 EX_CUTOFF 0\n", "7 A NATAA EX ARO 1 EX ARO 2 EX_CUTOFF 0\n", "8 A NATAA EX ARO 1 EX ARO 2 EX_CUTOFF 0\n", "9 A NATAA EX ARO 1 EX ARO 2 EX_CUTOFF 0\n", "10 A NATAA EX ARO 1 EX ARO 2 EX_CUTOFF 0\n", "11 A NATAA EX ARO 1 EX ARO 2 EX_CUTOFF 0\n", "12 A NATAA EX ARO 1 EX ARO 2 EX_CUTOFF 0\n", "13 A NATAA EX ARO 1 EX ARO 2 EX_CUTOFF 0\n", "14 A NATAA EX ARO 1 EX ARO 2 EX_CUTOFF 0\n", "\n" ] } ], "source": [ "# 设定额外rotamer采样:\n", "from pyrosetta.rosetta.core.select.residue_selector import ChainSelector\n", "from pyrosetta.rosetta.core.pack.task.operation import RestrictToRepacking\n", "from pyrosetta.rosetta.core.pack.task.operation import ExtraRotamers\n", "from pyrosetta.rosetta.core.pack.task import ExtraRotSample\n", "\n", "extract_chi = ExtraRotamersGenericRLT()\n", "extract_chi.ex1(True)\n", "extract_chi.ex2aro(True)\n", "# extract_chi.ex1_sample_level(ExtraRotSample.EX_ONE_STDDEV) #【1~7 定义 chi标准误范围】\n", "# extract_chi.ex2aro_sample_level(ExtraRotSample.EX_ONE_STDDEV) #【1~7 定义 chi标准误范围】\n", "extract_chi.extrachi_cutoff(0) #定义一个残基必须有几个邻近采集方可增强chi采样。 0 = 默认不考虑邻近阈值。默认为18\n", "\n", "# 使用OperateOnResidueSubset生成TaskOperations\n", "select_pos = ChainSelector('1')\n", "packing_taskop = OperateOnResidueSubset(extract_chi, select_pos, False)\n", "\n", "# 将TaskOperations加载至TaskFactory中\n", "pack_tf = TaskFactory()\n", "pack_tf.push_back(RestrictToRepacking()) # 全局设置为只能repacking\n", "pack_tf.push_back(packing_taskop)\n", "\n", "# 生成PackerTask\n", "packer_task = pack_tf.create_task_and_apply_taskoperations(pose)\n", "\n", "# 查看每个残基的Rotamer采样级别:\n", "print(packer_task.task_string(pose))" ] }, { "cell_type": "code", "execution_count": 10, "id": "fdece32d", "metadata": { "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\u001b[0mprotocols.minimization_packing.PackRotamersMover: {0} \u001b[0m\u001b[1m[ WARNING ]\u001b[0m undefined ScoreFunction -- creating a default one\n", "\u001b[0mcore.scoring.ScoreFunctionFactory: {0} \u001b[0mSCOREFUNCTION: \u001b[32mref2015\u001b[0m\n", "\u001b[0mcore.scoring.etable: {0} \u001b[0mStarting energy table calculation\n", "\u001b[0mcore.scoring.etable: {0} \u001b[0msmooth_etable: changing atr/rep split to bottom of energy well\n", "\u001b[0mcore.scoring.etable: {0} \u001b[0msmooth_etable: spline smoothing lj etables (maxdis = 6)\n", "\u001b[0mcore.scoring.etable: {0} \u001b[0msmooth_etable: spline smoothing solvation etables (max_dis = 6)\n", "\u001b[0mcore.scoring.etable: {0} \u001b[0mFinished calculating energy tables.\n", "\u001b[0mbasic.io.database: {0} \u001b[0mDatabase file opened: scoring/score_functions/hbonds/ref2015_params/HBPoly1D.csv\n", "\u001b[0mbasic.io.database: {0} \u001b[0mDatabase file opened: scoring/score_functions/hbonds/ref2015_params/HBFadeIntervals.csv\n", "\u001b[0mbasic.io.database: {0} \u001b[0mDatabase file opened: scoring/score_functions/hbonds/ref2015_params/HBEval.csv\n", "\u001b[0mbasic.io.database: {0} \u001b[0mDatabase file opened: scoring/score_functions/hbonds/ref2015_params/DonStrength.csv\n", "\u001b[0mbasic.io.database: {0} \u001b[0mDatabase file opened: scoring/score_functions/hbonds/ref2015_params/AccStrength.csv\n", "\u001b[0mbasic.io.database: {0} \u001b[0mDatabase file opened: scoring/score_functions/rama/fd/all.ramaProb\n", "\u001b[0mbasic.io.database: {0} \u001b[0mDatabase file opened: scoring/score_functions/rama/fd/prepro.ramaProb\n", "\u001b[0mbasic.io.database: {0} \u001b[0mDatabase file opened: scoring/score_functions/omega/omega_ppdep.all.txt\n", "\u001b[0mbasic.io.database: {0} \u001b[0mDatabase file opened: scoring/score_functions/omega/omega_ppdep.gly.txt\n", "\u001b[0mbasic.io.database: {0} \u001b[0mDatabase file opened: scoring/score_functions/omega/omega_ppdep.pro.txt\n", "\u001b[0mbasic.io.database: {0} \u001b[0mDatabase file opened: scoring/score_functions/omega/omega_ppdep.valile.txt\n", "\u001b[0mbasic.io.database: {0} \u001b[0mDatabase file opened: scoring/score_functions/P_AA_pp/P_AA\n", "\u001b[0mbasic.io.database: {0} \u001b[0mDatabase file opened: scoring/score_functions/P_AA_pp/P_AA_n\n", "\u001b[0mcore.scoring.P_AA: {0} \u001b[0mshapovalov_lib::shap_p_aa_pp_smooth_level of 1( aka low_smooth ) got activated.\n", "\u001b[0mbasic.io.database: {0} \u001b[0mDatabase file opened: scoring/score_functions/P_AA_pp/shapovalov/10deg/kappa131/a20.prop\n", "\u001b[0mbasic.io.database: {0} \u001b[0mDatabase file opened: scoring/score_functions/elec_cp_reps.dat\n", "\u001b[0mcore.scoring.elec.util: {0} \u001b[0mRead 40 countpair representative atoms\n", "\u001b[0mcore.pack.dunbrack.RotamerLibrary: {0} \u001b[0mshapovalov_lib_fixes_enable option is true.\n", "\u001b[0mcore.pack.dunbrack.RotamerLibrary: {0} \u001b[0mshapovalov_lib::shap_dun10_smooth_level of 1( aka lowest_smooth ) got activated.\n", "\u001b[0mcore.pack.dunbrack.RotamerLibrary: {0} \u001b[0mBinary rotamer library selected: /opt/miniconda3/lib/python3.7/site-packages/pyrosetta/database/rotamer/shapovalov/StpDwn_0-0-0/Dunbrack10.lib.bin\n", "\u001b[0mcore.pack.dunbrack.RotamerLibrary: {0} \u001b[0mUsing Dunbrack library binary file '/opt/miniconda3/lib/python3.7/site-packages/pyrosetta/database/rotamer/shapovalov/StpDwn_0-0-0/Dunbrack10.lib.bin'.\n", "\u001b[0mcore.pack.dunbrack.RotamerLibrary: {0} \u001b[0mDunbrack 2010 library took 0.190938 seconds to load from binary\n", "\u001b[0mcore.pack.pack_rotamers: {0} \u001b[0mbuilt 717 rotamers at 14 positions.\n", "\u001b[0mcore.pack.pack_rotamers: {0} \u001b[0mRequesting all available threads for interaction graph computation.\n", "\u001b[0mcore.pack.interaction_graph.interaction_graph_factory: {0} \u001b[0mInstantiating DensePDInteractionGraph\n", "\u001b[0mbasic.thread_manager.RosettaThreadManager: {?} \u001b[0mCreating a thread pool of 1 threads.\n", "\u001b[0mbasic.thread_manager.RosettaThreadPool: {?} \u001b[0mLaunched 0 new threads.\n", "\u001b[0mcore.pack.rotamer_set.RotamerSets: {0} \u001b[0mCompleted interaction graph pre-calculation in 1 available threads (1 had been requested).\n" ] } ], "source": [ "from pyrosetta.rosetta.protocols.minimization_packing import PackRotamersMover\n", "pack_mover = PackRotamersMover()\n", "pack_mover.task_factory(pack_tf)\n", "pack_mover.apply(pose)" ] }, { "cell_type": "markdown", "id": "b8372f49", "metadata": {}, "source": [ "查看运行日志: “built 717 rotamers at 14 positions.” 此时在计算InteractionGraph的时候使用了717个rotamer。\n", "\n", "#### 思考\n", "尝试改变“ex?”的参数,看看InteractionGraph的rotamer数量的变化情况?" ] }, { "cell_type": "markdown", "id": "180f2ffc", "metadata": {}, "source": [ "## 二、Specialized Operations" ] }, { "cell_type": "markdown", "id": "ea7f2412", "metadata": {}, "source": [ "### 2.1 Position/Identity Specification\n", "这部分的TaskOperations分类主要根据残基的位置和类型信息进行自动化的定义。主要分为:\n", "- General Specification(基本都能使用Residue Level TaskOperations实现,因此此部分不做介绍)\n", "- General Design Specification(部分与Residue Level TaskOperations重合,因此仅挑选部分进行阐述)\n", "- Property-based specification\n", "- Interface/Neighborhood Specifications\n", "- Input-based design\n", "\n", "这一部分包含了绝大数与实际工作相关的TaskOperations。" ] }, { "cell_type": "markdown", "id": "cb65fd6d", "metadata": {}, "source": [ "### 2.1.1 General Design Specification" ] }, { "cell_type": "markdown", "id": "3137f8b5", "metadata": {}, "source": [ "#### 1. RestrictToSpecifiedBaseResidueTypes\n", "对于BaseResidueTypes的操作是在生成PackerTask之前,对PackerPalettes做调整。\n", "PackerPalettes用于定义“默认”的氨基酸列表,默认允许20种天然氨基酸的Rotamer被采样。当氨基酸类型没有在预设列表中时,在后续过程中,这类氨基酸将不会出现。" ] }, { "cell_type": "code", "execution_count": 11, "id": "368a8e24", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "#Packer_Task\n", "\n", "Threads to request: ALL AVAILABLE\n", "\n", "resid\tpack?\tdesign?\tallowed_aas\n", "1\tFALSE\tFALSE\t\n", "2\tFALSE\tFALSE\t\n", "3\tFALSE\tFALSE\t\n", "4\tFALSE\tFALSE\t\n", "5\tFALSE\tFALSE\t\n", "6\tTRUE\tFALSE\tTRP\n", "7\tTRUE\tFALSE\tVAL\n", "8\tFALSE\tFALSE\t\n", "9\tFALSE\tFALSE\t\n", "10\tFALSE\tFALSE\t\n", "11\tFALSE\tFALSE\t\n", "12\tFALSE\tFALSE\t\n", "13\tFALSE\tFALSE\t\n", "14\tFALSE\tFALSE\t\n", "\n" ] } ], "source": [ "from pyrosetta.rosetta.core.pack.task.operation import RestrictToSpecifiedBaseResidueTypes\n", "from pyrosetta.rosetta.core.pack.task.operation import RestrictToRepacking\n", "from pyrosetta.rosetta.utility import vector1_std_string\n", "# allow basetype\n", "mut_table = \"TYR,VAL,TRP,CYS,\"\n", "mut_table_list = vector1_std_string()\n", "for aa in mut_table.split(','):\n", " mut_table_list.append(aa)\n", "\n", "# restrict to baestype list\n", "restric_to_basetype = RestrictToSpecifiedBaseResidueTypes()\n", "restric_to_basetype.set_base_types(mut_table_list)\n", "\n", "# 将TaskOperations加载至TaskFactory中\n", "pack_tf = TaskFactory()\n", "pack_tf.push_back(restric_to_basetype)\n", "pack_tf.push_back(RestrictToRepacking())\n", "\n", "# 生成PackerTask\n", "packer_task = pack_tf.create_task_and_apply_taskoperations(pose)\n", "print(packer_task)" ] }, { "cell_type": "markdown", "id": "5ab471df", "metadata": {}, "source": [ "**可见,尽管将所有的Rotamer状态设置为repacking,当氨基酸类型在PackerPalettes预设列表中删除后,一些位点Rotamer自由度变“空”!**" ] }, { "cell_type": "markdown", "id": "476eb12a", "metadata": {}, "source": [ "#### 2. ProhibitSpecifiedBaseResidueTypes\n", "同理于RestrictToSpecifiedBaseResidueTypes的逻辑,ProhibitSpecifiedBaseResidueTypes设定了哪些氨基酸类型应当被“禁止”。" ] }, { "cell_type": "code", "execution_count": 12, "id": "5e492ec9", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "#Packer_Task\n", "\n", "Threads to request: ALL AVAILABLE\n", "\n", "resid\tpack?\tdesign?\tallowed_aas\n", "1\tTRUE\tTRUE\tCYS:NtermProteinFull,VAL:NtermProteinFull,TRP:NtermProteinFull,TYR:NtermProteinFull\n", "2\tTRUE\tTRUE\tCYS,VAL,TRP,TYR\n", "3\tTRUE\tTRUE\tCYS,VAL,TRP,TYR\n", "4\tTRUE\tTRUE\tCYS,VAL,TRP,TYR\n", "5\tTRUE\tTRUE\tCYS,VAL,TRP,TYR\n", "6\tTRUE\tTRUE\tCYS,VAL,TRP,TYR\n", "7\tTRUE\tTRUE\tCYS,VAL,TRP,TYR\n", "8\tTRUE\tTRUE\tCYS,VAL,TRP,TYR\n", "9\tTRUE\tTRUE\tCYS,VAL,TRP,TYR\n", "10\tTRUE\tTRUE\tCYS,VAL,TRP,TYR\n", "11\tTRUE\tTRUE\tCYS,VAL,TRP,TYR\n", "12\tTRUE\tTRUE\tCYS,VAL,TRP,TYR\n", "13\tTRUE\tTRUE\tCYS,VAL,TRP,TYR\n", "14\tTRUE\tTRUE\tCYS:CtermProteinFull,VAL:CtermProteinFull,TRP:CtermProteinFull,TYR:CtermProteinFull\n", "\n" ] } ], "source": [ "from pyrosetta.rosetta.core.pack.task.operation import ProhibitSpecifiedBaseResidueTypes\n", "from pyrosetta.rosetta.utility import vector1_std_string\n", "# allow basetype\n", "not_mut_table = \"ALA,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR\"\n", "not_mut_table_list = vector1_std_string()\n", "for aa in not_mut_table.split(','):\n", " not_mut_table_list.append(aa)\n", "\n", "# restrict to baestype list\n", "restric_to_basetype = ProhibitSpecifiedBaseResidueTypes()\n", "restric_to_basetype.set_base_types(not_mut_table_list)\n", "\n", "# 将TaskOperations加载至TaskFactory中\n", "pack_tf = TaskFactory()\n", "pack_tf.push_back(restric_to_basetype)\n", "\n", "# 生成PackerTask\n", "packer_task = pack_tf.create_task_and_apply_taskoperations(pose)\n", "print(packer_task)" ] }, { "cell_type": "markdown", "id": "6f507085", "metadata": {}, "source": [ "#### 3. ReadResfile\n", "之前我们讲了Resfile的编写规则,此处我们将resfile写成如下格式:\n", "```\n", "NATAA\n", "EX 1 EX 2\n", "START\n", "1 A PIKAA A\n", "2 A PIKAA AKR\n", "3 A PIKAA APM\n", "4 A PIKAA APT\n", "```\n", "这个Resfile定义的自由度为:\n", "NATAA至当前未指定的氨基酸都只能进行Repacking。此外,A链1号位点只能突变成ALA,A链2号位点只能突变成ALA,LYS和ARG如此类推。" ] }, { "cell_type": "code", "execution_count": 13, "id": "af5c8811", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "#Packer_Task\n", "\n", "Threads to request: ALL AVAILABLE\n", "\n", "resid\tpack?\tdesign?\tallowed_aas\n", "1\tTRUE\tTRUE\tALA:NtermProteinFull\n", "2\tTRUE\tTRUE\tALA,LYS,ARG\n", "3\tTRUE\tTRUE\tALA,MET,PRO\n", "4\tTRUE\tTRUE\tALA,PRO,THR\n", "5\tTRUE\tFALSE\tLYS\n", "6\tTRUE\tFALSE\tTRP\n", "7\tTRUE\tFALSE\tVAL\n", "8\tTRUE\tFALSE\tGLU\n", "9\tTRUE\tFALSE\tGLN\n", "10\tTRUE\tFALSE\tALA\n", "11\tTRUE\tFALSE\tGLU\n", "12\tTRUE\tFALSE\tARG\n", "13\tTRUE\tFALSE\tASN\n", "14\tTRUE\tFALSE\tGLY:CtermProteinFull\n", "\n" ] } ], "source": [ "from pyrosetta.rosetta.core.pack.task.operation import ReadResfile\n", "# restrict to baestype list\n", "resfile_type = ReadResfile('./data/mutation.resfile')\n", "\n", "# 将TaskOperations加载至TaskFactory中\n", "pack_tf = TaskFactory()\n", "pack_tf.push_back(resfile_type)\n", "\n", "# 生成PackerTask\n", "packer_task = pack_tf.create_task_and_apply_taskoperations(pose)\n", "print(packer_task)" ] }, { "cell_type": "markdown", "id": "398a0b31", "metadata": {}, "source": [ "#### 4. LinkResidues\n", "“铁锁连环”,当设定一个氨基酸与另外一些氨基酸必须同时突变为一样类型的Rotamer。但这部分的代码在pyrosetta中一直会造成内核错误。暂无法使用(2017-2021)" ] }, { "cell_type": "markdown", "id": "4af1496b", "metadata": {}, "source": [ "### 2.1.2 Property-based specification" ] }, { "cell_type": "markdown", "id": "98f11ee5", "metadata": { "tags": [] }, "source": [ "#### 1. RestrictToResidueProperties\n", "根据给定的氨基酸性质来对PackerPalettes预设列表中的氨基酸类型进行指定和修改。</br>\n", "\n", "氨基酸的性质可选列表都记录在pyrosetta.rosetta.core.chemical.ResidueProperty中。\n", "一般常用可选:\n", "- METAL: 金属离子\n", "- POLAR: 极性氨基酸\n", "- HYDROPHOBIC: 疏水氨基酸\n", "- CHARGED: 带电氨基酸\n", "- NEGATIVE_CHARGE: 带负电氨基酸\n", "- POSITIVE_CHARGE: 带正电氨基酸\n", "- AROMATIC: 芳香族氨基酸" ] }, { "cell_type": "code", "execution_count": 14, "id": "71fdb269", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "#Packer_Task\n", "\n", "Threads to request: ALL AVAILABLE\n", "\n", "resid\tpack?\tdesign?\tallowed_aas\n", "1\tTRUE\tTRUE\tASP:NtermProteinFull,GLU:NtermProteinFull\n", "2\tTRUE\tTRUE\tASP,GLU\n", "3\tTRUE\tTRUE\tASP,GLU\n", "4\tTRUE\tTRUE\tASP,GLU\n", "5\tTRUE\tTRUE\tASP,GLU\n", "6\tTRUE\tTRUE\tASP,GLU\n", "7\tTRUE\tTRUE\tASP,GLU\n", "8\tTRUE\tTRUE\tASP,GLU\n", "9\tTRUE\tTRUE\tASP,GLU\n", "10\tTRUE\tTRUE\tASP,GLU\n", "11\tTRUE\tTRUE\tASP,GLU\n", "12\tTRUE\tTRUE\tASP,GLU\n", "13\tTRUE\tTRUE\tASP,GLU\n", "14\tTRUE\tTRUE\tASP:CtermProteinFull,GLU:CtermProteinFull\n", "\n" ] } ], "source": [ "from pyrosetta.rosetta.core.pack.task.operation import RestrictToResidueProperties\n", "from pyrosetta.rosetta.core.chemical import ResidueProperty\n", "from pyrosetta.rosetta.utility import vector1_core_chemical_ResidueProperty\n", "\n", "# allow basetype\n", "properties = vector1_core_chemical_ResidueProperty()\n", "properties.append(ResidueProperty.NEGATIVE_CHARGE) # 只允许带负电氨基酸。\n", "\n", "restrict_to_properties = RestrictToResidueProperties()\n", "restrict_to_properties.set_properties(properties)\n", "# 可以指定选择的范围:\n", "# restrict_to_properties.set_selector()\n", "\n", "# 将TaskOperations加载至TaskFactory中\n", "pack_tf = TaskFactory()\n", "pack_tf.push_back(restrict_to_properties)\n", "\n", "# 生成PackerTask\n", "packer_task = pack_tf.create_task_and_apply_taskoperations(pose)\n", "print(packer_task)" ] }, { "cell_type": "markdown", "id": "b23258b7", "metadata": {}, "source": [ "#### 2. ProhibitResidueProperties\n", "同理于RestrictToResidueProperties的逻辑,ProhibitResidueProperties设定了满足哪些性质的氨基酸类型应当被“删除”。" ] }, { "cell_type": "code", "execution_count": 15, "id": "d6916243", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "#Packer_Task\n", "\n", "Threads to request: ALL AVAILABLE\n", "\n", "resid\tpack?\tdesign?\tallowed_aas\n", "1\tTRUE\tTRUE\tALA:NtermProteinFull,CYS:NtermProteinFull,PHE:NtermProteinFull,GLY:NtermProteinFull,ILE:NtermProteinFull,LEU:NtermProteinFull,MET:NtermProteinFull,PRO:NtermProteinFull,VAL:NtermProteinFull,TRP:NtermProteinFull,TYR:NtermProteinFull\n", "2\tTRUE\tTRUE\tALA,CYS,PHE,GLY,ILE,LEU,MET,PRO,VAL,TRP,TYR\n", "3\tTRUE\tTRUE\tALA,CYS,PHE,GLY,ILE,LEU,MET,PRO,VAL,TRP,TYR\n", "4\tTRUE\tTRUE\tALA,CYS,PHE,GLY,ILE,LEU,MET,PRO,VAL,TRP,TYR\n", "5\tTRUE\tTRUE\tALA,CYS,PHE,GLY,ILE,LEU,MET,PRO,VAL,TRP,TYR\n", "6\tTRUE\tTRUE\tALA,CYS,PHE,GLY,ILE,LEU,MET,PRO,VAL,TRP,TYR\n", "7\tTRUE\tTRUE\tALA,CYS,PHE,GLY,ILE,LEU,MET,PRO,VAL,TRP,TYR\n", "8\tTRUE\tTRUE\tALA,CYS,PHE,GLY,ILE,LEU,MET,PRO,VAL,TRP,TYR\n", "9\tTRUE\tTRUE\tALA,CYS,PHE,GLY,ILE,LEU,MET,PRO,VAL,TRP,TYR\n", "10\tTRUE\tTRUE\tALA,CYS,PHE,GLY,ILE,LEU,MET,PRO,VAL,TRP,TYR\n", "11\tTRUE\tTRUE\tALA,CYS,PHE,GLY,ILE,LEU,MET,PRO,VAL,TRP,TYR\n", "12\tTRUE\tTRUE\tALA,CYS,PHE,GLY,ILE,LEU,MET,PRO,VAL,TRP,TYR\n", "13\tTRUE\tTRUE\tALA,CYS,PHE,GLY,ILE,LEU,MET,PRO,VAL,TRP,TYR\n", "14\tTRUE\tTRUE\tALA:CtermProteinFull,CYS:CtermProteinFull,PHE:CtermProteinFull,GLY:CtermProteinFull,ILE:CtermProteinFull,LEU:CtermProteinFull,MET:CtermProteinFull,PRO:CtermProteinFull,VAL:CtermProteinFull,TRP:CtermProteinFull,TYR:CtermProteinFull\n", "\n" ] } ], "source": [ "from pyrosetta.rosetta.core.pack.task.operation import ProhibitResidueProperties\n", "from pyrosetta.rosetta.core.chemical import ResidueProperty\n", "from pyrosetta.rosetta.utility import vector1_core_chemical_ResidueProperty\n", "\n", "# allow basetype\n", "not_properties = vector1_core_chemical_ResidueProperty()\n", "not_properties.append(ResidueProperty.POLAR) # 添加氨基酸的属性为极性氨基酸。\n", "\n", "restrict_to_properties = ProhibitResidueProperties()\n", "restrict_to_properties.set_properties(not_properties)\n", "# 可以指定选择的范围:\n", "# restrict_to_properties.set_selector()\n", "\n", "# 将TaskOperations加载至TaskFactory中\n", "pack_tf = TaskFactory()\n", "pack_tf.push_back(restrict_to_properties)\n", "\n", "# 生成PackerTask\n", "packer_task = pack_tf.create_task_and_apply_taskoperations(pose)\n", "print(packer_task)" ] }, { "cell_type": "markdown", "id": "fd10ff3b", "metadata": {}, "source": [ "此时允许被设计的氨基酸类型被设定为非极性氨基酸。" ] }, { "cell_type": "markdown", "id": "83836f81", "metadata": {}, "source": [ "#### 3. ConservativeDesignOperation\n", "根据氨基酸替换频率的思想来设计蛋白质,ConservativeDesignOperation根据给定的氨基酸替换矩阵来决定每个位置上氨基酸的类型,如Blosum62等。当得分大于0时。所有允许出现的氨基酸类型即此位点的自由度范围。" ] }, { "cell_type": "code", "execution_count": 16, "id": "a7cfef12", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\u001b[0mprotocols.task_operations.ConservativeDesignOperation: {0} \u001b[0mLoading conservative mutational data\n", "#Packer_Task\n", "\n", "Threads to request: ALL AVAILABLE\n", "\n", "resid\tpack?\tdesign?\tallowed_aas\n", "1\tTRUE\tTRUE\tASP:NtermProteinFull,GLU:NtermProteinFull,ASN:NtermProteinFull,GLN:NtermProteinFull,SER:NtermProteinFull\n", "2\tTRUE\tTRUE\tASP,GLU,HIS,HIS_D,LYS,ASN,GLN,ARG,SER\n", "3\tTRUE\tTRUE\tPHE,ILE,LEU,MET,VAL\n", "4\tTRUE\tTRUE\tASP,GLU,HIS,HIS_D,LYS,MET,ASN,GLN,ARG,SER\n", "5\tTRUE\tTRUE\tGLU,LYS,ASN,GLN,ARG,SER\n", "6\tTRUE\tTRUE\tPHE,TRP,TYR\n", "7\tTRUE\tTRUE\tALA,ILE,LEU,MET,THR,VAL\n", "8\tTRUE\tTRUE\tASP,GLU,HIS,HIS_D,LYS,ASN,GLN,ARG,SER\n", "9\tTRUE\tTRUE\tASP,GLU,HIS,HIS_D,LYS,MET,ASN,GLN,ARG,SER\n", "10\tTRUE\tTRUE\tALA,CYS,GLY,SER,THR,VAL\n", "11\tTRUE\tTRUE\tASP,GLU,HIS,HIS_D,LYS,ASN,GLN,ARG,SER\n", "12\tTRUE\tTRUE\tGLU,HIS,HIS_D,LYS,ASN,GLN,ARG\n", "13\tTRUE\tTRUE\tASP,GLU,GLY,HIS,HIS_D,LYS,ASN,GLN,ARG,SER,THR\n", "14\tTRUE\tTRUE\tALA:CtermProteinFull,GLY:CtermProteinFull,ASN:CtermProteinFull,SER:CtermProteinFull\n", "\n" ] } ], "source": [ "from pyrosetta.rosetta.protocols.task_operations import ConservativeDesignOperation\n", "Conserve_design = ConservativeDesignOperation()\n", "Conserve_design.set_data_source('blosum62') # chothia_76, Blosum62(30-100) 选择使用哪种比对矩阵。\n", "\n", "# 将TaskOperations加载至TaskFactory中\n", "pack_tf = TaskFactory()\n", "pack_tf.push_back(Conserve_design)\n", "\n", "# 生成PackerTask\n", "packer_task = pack_tf.create_task_and_apply_taskoperations(pose)\n", "print(packer_task)" ] }, { "cell_type": "markdown", "id": "0be53fa9", "metadata": {}, "source": [ "#### 4. ConsensusLoopDesign\n", "ConsensuLoopDesign首先定义的二级结构寻找Loop区域, 基于Pose的二面角定义Loop的组成类型(ABEGO字符串)。\n", "如 一段4个氨基酸长度的loop区二面角类型为GGBB,通过搜索数据库,将相同类型的Loop的序列获取,并统计每个位点上的氨基酸频率,通过富集计算,筛选出那些在该二面角空间出现频率较高的氨基酸来定义自由度。**因此对于一些存在正则结构的loop设计十分有用!**" ] }, { "cell_type": "code", "execution_count": 17, "id": "36f5b457", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\u001b[0mcore.import_pose.import_pose: {0} \u001b[0mFile './data/EHEE_rd4_0976.pdb' automatically determined to be of type PDB\n", "\u001b[0mprotocols.DsspMover: {0} \u001b[0mLEEEEELLHHHHHHHHHHHHHLLLLEEEEEELLEEEEEEL\n" ] } ], "source": [ "# denovo_pose\n", "denovo_pose = pose_from_pdb('./data/EHEE_rd4_0976.pdb')\n", "\n", "# 获取pose的二级结构:\n", "from pyrosetta.rosetta.protocols.membrane import get_secstruct\n", "secstruct = ''.join(get_secstruct(denovo_pose))\n", "\n", "# ConsensusLoopDesign\n", "from pyrosetta.rosetta.protocols.denovo_design.task_operations import ConsensusLoopDesignOperation\n", "consensu_loop_design = ConsensusLoopDesignOperation()\n", "# 或如'EHHHL'设置序列的二级结构\n", "consensu_loop_design.set_secstruct(secstruct)\n", "# 考虑loop邻近+1/-1氨基酸, 使得该区域也采取保守性设计,比如有一些loop的周围更加倾向于天然存在PRO.(默认为False)\n", "consensu_loop_design.set_include_adjacent_residues(False) \n", "# 如果富集度低于阈值,那么该位点将不被设计,0.5比0.0更加严格,要求更高的富集度。\n", "consensu_loop_design.set_enrichment_threshold(0.3) " ] }, { "cell_type": "code", "execution_count": 18, "id": "8407351a", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\u001b[0mcore.select.residue_selector.SecondaryStructureSelector: {0} \u001b[0mUsing given pose secondary structure: LEEEEELLHHHHHHHHHHHHHLLLLEEEEEELLEEEEEEL\n", "\u001b[0mprotocols.denovo_design.task_operations.ConsensusLoopDesignOperation: {0} \u001b[0mRestricting AAs in loop: Start: 7 Abego: BBEA Before: E After: H\n", "\u001b[0mbasic.io.database: {0} \u001b[0mDatabase file opened: protocol_data/denovo_design/aa_abego_frequencies.gz\n", "\u001b[0mprotocols.denovo_design.task_operations.ConsensusLoopDesignOperation: {0} \u001b[0mResidue: 7; forbidden aas: DEFGHIKLNPQRVY\n", "\u001b[0mprotocols.denovo_design.task_operations.ConsensusLoopDesignOperation: {0} \u001b[0mResidue: 8; forbidden aas: ACDEFHIKLMNPQRSTVY\n", "\u001b[0mprotocols.denovo_design.task_operations.ConsensusLoopDesignOperation: {0} \u001b[0mRestricting AAs in loop: Start: 22 Abego: AAGBBB Before: H After: E\n", "\u001b[0mprotocols.denovo_design.task_operations.ConsensusLoopDesignOperation: {0} \u001b[0mResidue: 22; forbidden aas: CDFGIPSTVW\n", "\u001b[0mprotocols.denovo_design.task_operations.ConsensusLoopDesignOperation: {0} \u001b[0mResidue: 23; forbidden aas: ACDEFHILMPQRSTVWY\n", "\u001b[0mprotocols.denovo_design.task_operations.ConsensusLoopDesignOperation: {0} \u001b[0mResidue: 24; forbidden aas: ACDEFGHNPQRSTW\n", "\u001b[0mprotocols.denovo_design.task_operations.ConsensusLoopDesignOperation: {0} \u001b[0mResidue: 25; forbidden aas: ACDFGHILMNQSTVWY\n", "\u001b[0mprotocols.denovo_design.task_operations.ConsensusLoopDesignOperation: {0} \u001b[0mRestricting AAs in loop: Start: 32 Abego: BGGB Before: E After: E\n", "\u001b[0mprotocols.denovo_design.task_operations.ConsensusLoopDesignOperation: {0} \u001b[0mResidue: 32; forbidden aas: ACEFGHIKLMPQRSTVWY\n", "\u001b[0mprotocols.denovo_design.task_operations.ConsensusLoopDesignOperation: {0} \u001b[0mResidue: 33; forbidden aas: ACDEFHIKLMNPQRSTVWY\n", "\u001b[0mprotocols.denovo_design.task_operations.ConsensusLoopDesignOperation: {0} \u001b[0m#Packer_Task\n", "\u001b[0mprotocols.denovo_design.task_operations.ConsensusLoopDesignOperation: {0} \u001b[0m\n", "\u001b[0mprotocols.denovo_design.task_operations.ConsensusLoopDesignOperation: {0} \u001b[0mThreads to request: ALL AVAILABLE\n", "\u001b[0mprotocols.denovo_design.task_operations.ConsensusLoopDesignOperation: {0} \u001b[0m\n", "\u001b[0mprotocols.denovo_design.task_operations.ConsensusLoopDesignOperation: {0} \u001b[0mresid\tpack?\tdesign?\tallowed_aas\n", "\u001b[0mprotocols.denovo_design.task_operations.ConsensusLoopDesignOperation: {0} \u001b[0m1\tTRUE\tTRUE\tALA:NtermProteinFull,CYS:NtermProteinFull,ASP:NtermProteinFull,GLU:NtermProteinFull,PHE:NtermProteinFull,GLY:NtermProteinFull,HIS:NtermProteinFull,HIS_D:NtermProteinFull,ILE:NtermProteinFull,LYS:NtermProteinFull,LEU:NtermProteinFull,MET:NtermProteinFull,ASN:NtermProteinFull,PRO:NtermProteinFull,GLN:NtermProteinFull,ARG:NtermProteinFull,SER:NtermProteinFull,THR:NtermProteinFull,VAL:NtermProteinFull,TRP:NtermProteinFull,TYR:NtermProteinFull\n", "\u001b[0mprotocols.denovo_design.task_operations.ConsensusLoopDesignOperation: {0} \u001b[0m2\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "\u001b[0mprotocols.denovo_design.task_operations.ConsensusLoopDesignOperation: {0} \u001b[0m3\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "\u001b[0mprotocols.denovo_design.task_operations.ConsensusLoopDesignOperation: {0} \u001b[0m4\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "\u001b[0mprotocols.denovo_design.task_operations.ConsensusLoopDesignOperation: {0} \u001b[0m5\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "\u001b[0mprotocols.denovo_design.task_operations.ConsensusLoopDesignOperation: {0} \u001b[0m6\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "\u001b[0mprotocols.denovo_design.task_operations.ConsensusLoopDesignOperation: {0} \u001b[0m7\tTRUE\tTRUE\tALA,CYS,MET,SER,THR,TRP\n", "\u001b[0mprotocols.denovo_design.task_operations.ConsensusLoopDesignOperation: {0} \u001b[0m8\tTRUE\tTRUE\tGLY,TRP\n", "\u001b[0mprotocols.denovo_design.task_operations.ConsensusLoopDesignOperation: {0} \u001b[0m9\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "\u001b[0mprotocols.denovo_design.task_operations.ConsensusLoopDesignOperation: {0} \u001b[0m10\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "\u001b[0mprotocols.denovo_design.task_operations.ConsensusLoopDesignOperation: {0} \u001b[0m11\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "\u001b[0mprotocols.denovo_design.task_operations.ConsensusLoopDesignOperation: {0} \u001b[0m12\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "\u001b[0mprotocols.denovo_design.task_operations.ConsensusLoopDesignOperation: {0} \u001b[0m13\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "\u001b[0mprotocols.denovo_design.task_operations.ConsensusLoopDesignOperation: {0} \u001b[0m14\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "\u001b[0mprotocols.denovo_design.task_operations.ConsensusLoopDesignOperation: {0} \u001b[0m15\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "\u001b[0mprotocols.denovo_design.task_operations.ConsensusLoopDesignOperation: {0} \u001b[0m16\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "\u001b[0mprotocols.denovo_design.task_operations.ConsensusLoopDesignOperation: {0} \u001b[0m17\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "\u001b[0mprotocols.denovo_design.task_operations.ConsensusLoopDesignOperation: {0} \u001b[0m18\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "\u001b[0mprotocols.denovo_design.task_operations.ConsensusLoopDesignOperation: {0} \u001b[0m19\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "\u001b[0mprotocols.denovo_design.task_operations.ConsensusLoopDesignOperation: {0} \u001b[0m20\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "\u001b[0mprotocols.denovo_design.task_operations.ConsensusLoopDesignOperation: {0} \u001b[0m21\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "\u001b[0mprotocols.denovo_design.task_operations.ConsensusLoopDesignOperation: {0} \u001b[0m22\tTRUE\tTRUE\tALA,GLU,HIS,HIS_D,LYS,LEU,MET,ASN,GLN,ARG,TYR\n", "\u001b[0mprotocols.denovo_design.task_operations.ConsensusLoopDesignOperation: {0} \u001b[0m23\tTRUE\tTRUE\tGLY,LYS,ASN\n", "\u001b[0mprotocols.denovo_design.task_operations.ConsensusLoopDesignOperation: {0} \u001b[0m24\tTRUE\tTRUE\tILE,LYS,LEU,MET,VAL,TYR\n", "\u001b[0mprotocols.denovo_design.task_operations.ConsensusLoopDesignOperation: {0} \u001b[0m25\tTRUE\tTRUE\tGLU,LYS,PRO,ARG\n", "\u001b[0mprotocols.denovo_design.task_operations.ConsensusLoopDesignOperation: {0} \u001b[0m26\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "\u001b[0mprotocols.denovo_design.task_operations.ConsensusLoopDesignOperation: {0} \u001b[0m27\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "\u001b[0mprotocols.denovo_design.task_operations.ConsensusLoopDesignOperation: {0} \u001b[0m28\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "\u001b[0mprotocols.denovo_design.task_operations.ConsensusLoopDesignOperation: {0} \u001b[0m29\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "\u001b[0mprotocols.denovo_design.task_operations.ConsensusLoopDesignOperation: {0} \u001b[0m30\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "\u001b[0mprotocols.denovo_design.task_operations.ConsensusLoopDesignOperation: {0} \u001b[0m31\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "\u001b[0mprotocols.denovo_design.task_operations.ConsensusLoopDesignOperation: {0} \u001b[0m32\tTRUE\tTRUE\tASP,ASN\n", "\u001b[0mprotocols.denovo_design.task_operations.ConsensusLoopDesignOperation: {0} \u001b[0m33\tTRUE\tFALSE\tGLY\n", "\u001b[0mprotocols.denovo_design.task_operations.ConsensusLoopDesignOperation: {0} \u001b[0m34\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "\u001b[0mprotocols.denovo_design.task_operations.ConsensusLoopDesignOperation: {0} \u001b[0m35\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "\u001b[0mprotocols.denovo_design.task_operations.ConsensusLoopDesignOperation: {0} \u001b[0m36\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "\u001b[0mprotocols.denovo_design.task_operations.ConsensusLoopDesignOperation: {0} \u001b[0m37\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "\u001b[0mprotocols.denovo_design.task_operations.ConsensusLoopDesignOperation: {0} \u001b[0m38\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "\u001b[0mprotocols.denovo_design.task_operations.ConsensusLoopDesignOperation: {0} \u001b[0m39\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "\u001b[0mprotocols.denovo_design.task_operations.ConsensusLoopDesignOperation: {0} \u001b[0m40\tTRUE\tTRUE\tALA:CtermProteinFull,CYS:CtermProteinFull,ASP:CtermProteinFull,GLU:CtermProteinFull,PHE:CtermProteinFull,GLY:CtermProteinFull,HIS:CtermProteinFull,HIS_D:CtermProteinFull,ILE:CtermProteinFull,LYS:CtermProteinFull,LEU:CtermProteinFull,MET:CtermProteinFull,ASN:CtermProteinFull,PRO:CtermProteinFull,GLN:CtermProteinFull,ARG:CtermProteinFull,SER:CtermProteinFull,THR:CtermProteinFull,VAL:CtermProteinFull,TRP:CtermProteinFull,TYR:CtermProteinFull\n", "#Packer_Task\n", "\n", "Threads to request: ALL AVAILABLE\n", "\n", "resid\tpack?\tdesign?\tallowed_aas\n", "1\tTRUE\tTRUE\tALA:NtermProteinFull,CYS:NtermProteinFull,ASP:NtermProteinFull,GLU:NtermProteinFull,PHE:NtermProteinFull,GLY:NtermProteinFull,HIS:NtermProteinFull,HIS_D:NtermProteinFull,ILE:NtermProteinFull,LYS:NtermProteinFull,LEU:NtermProteinFull,MET:NtermProteinFull,ASN:NtermProteinFull,PRO:NtermProteinFull,GLN:NtermProteinFull,ARG:NtermProteinFull,SER:NtermProteinFull,THR:NtermProteinFull,VAL:NtermProteinFull,TRP:NtermProteinFull,TYR:NtermProteinFull\n", "2\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "3\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "4\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "5\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "6\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "7\tTRUE\tTRUE\tALA,CYS,MET,SER,THR,TRP\n", "8\tTRUE\tTRUE\tGLY,TRP\n", "9\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "10\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "11\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "12\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "13\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "14\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "15\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "16\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "17\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "18\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "19\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "20\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "21\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "22\tTRUE\tTRUE\tALA,GLU,HIS,HIS_D,LYS,LEU,MET,ASN,GLN,ARG,TYR\n", "23\tTRUE\tTRUE\tGLY,LYS,ASN\n", "24\tTRUE\tTRUE\tILE,LYS,LEU,MET,VAL,TYR\n", "25\tTRUE\tTRUE\tGLU,LYS,PRO,ARG\n", "26\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "27\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "28\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "29\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "30\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "31\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "32\tTRUE\tTRUE\tASP,ASN\n", "33\tTRUE\tFALSE\tGLY\n", "34\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "35\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "36\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "37\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "38\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "39\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "40\tTRUE\tTRUE\tALA:CtermProteinFull,CYS:CtermProteinFull,ASP:CtermProteinFull,GLU:CtermProteinFull,PHE:CtermProteinFull,GLY:CtermProteinFull,HIS:CtermProteinFull,HIS_D:CtermProteinFull,ILE:CtermProteinFull,LYS:CtermProteinFull,LEU:CtermProteinFull,MET:CtermProteinFull,ASN:CtermProteinFull,PRO:CtermProteinFull,GLN:CtermProteinFull,ARG:CtermProteinFull,SER:CtermProteinFull,THR:CtermProteinFull,VAL:CtermProteinFull,TRP:CtermProteinFull,TYR:CtermProteinFull\n", "\n" ] } ], "source": [ "# 将TaskOperations加载至TaskFactory中\n", "pack_tf = TaskFactory()\n", "pack_tf.push_back(consensu_loop_design)\n", "\n", "# 生成PackerTask\n", "packer_task = pack_tf.create_task_and_apply_taskoperations(denovo_pose)\n", "print(packer_task)" ] }, { "cell_type": "markdown", "id": "f0fbc47b", "metadata": {}, "source": [ "可见,Loop区域7,8,22,23,24,32,33都被设置为常出现在当前Loop构型中的氨基酸类型。尝试调整enrichment_threshold的参数,看看自由度的变化?" ] }, { "cell_type": "markdown", "id": "2aba2073", "metadata": {}, "source": [ "#### 5. DsspDesign\n", "根据设定的二级结构的类型指定氨基酸的Rotamer范围,二级结构氨基酸突变的范围定义如下:\n", "* Helix: ADEFIKLNQRSTVWY\n", "* Strand: DEFHIKLNQRSTVWY\n", "* Loop: ACDEFGHIKLMNPQRSTVWY\n", "* HelixStart: ADEFHIKLNPQRSTVWY\n", "* HelixCapping: DNST\n", "* Nterm: ACDEFGHIKLMNPQRSTVWY\n", "* Cterm: ACDEFGHIKLMNPQRSTVWY" ] }, { "cell_type": "code", "execution_count": 19, "id": "194e4e75", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\u001b[0mprotocols.TaskOperations.DsspDesignOperation: {0} \u001b[0mInitializing DSSP regions with default residues\n", "\u001b[0mprotocols.TaskOperations.DsspDesignOperation: {0} \u001b[0mSecondary structure: LEEEEELLHHHHHHHHHHHHHLLLLEEEEEELLEEEEEEL\n", "#Packer_Task\n", "\n", "Threads to request: ALL AVAILABLE\n", "\n", "resid\tpack?\tdesign?\tallowed_aas\n", "1\tTRUE\tTRUE\tALA:NtermProteinFull,CYS:NtermProteinFull,ASP:NtermProteinFull,GLU:NtermProteinFull,PHE:NtermProteinFull,GLY:NtermProteinFull,HIS:NtermProteinFull,HIS_D:NtermProteinFull,ILE:NtermProteinFull,LYS:NtermProteinFull,LEU:NtermProteinFull,MET:NtermProteinFull,ASN:NtermProteinFull,PRO:NtermProteinFull,GLN:NtermProteinFull,ARG:NtermProteinFull,SER:NtermProteinFull,THR:NtermProteinFull,VAL:NtermProteinFull,TRP:NtermProteinFull,TYR:NtermProteinFull\n", "2\tTRUE\tTRUE\tASP,GLU,PHE,HIS,HIS_D,ILE,LYS,LEU,ASN,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "3\tTRUE\tTRUE\tASP,GLU,PHE,HIS,HIS_D,ILE,LYS,LEU,ASN,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "4\tTRUE\tTRUE\tASP,GLU,PHE,HIS,HIS_D,ILE,LYS,LEU,ASN,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "5\tTRUE\tTRUE\tASP,GLU,PHE,HIS,HIS_D,ILE,LYS,LEU,ASN,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "6\tTRUE\tTRUE\tASP,GLU,PHE,HIS,HIS_D,ILE,LYS,LEU,ASN,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "7\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "8\tTRUE\tTRUE\tASP,ASN,SER,THR\n", "9\tTRUE\tTRUE\tALA,ASP,GLU,PHE,HIS,HIS_D,ILE,LYS,LEU,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "10\tTRUE\tTRUE\tALA,ASP,GLU,PHE,ILE,LYS,LEU,ASN,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "11\tTRUE\tTRUE\tALA,ASP,GLU,PHE,ILE,LYS,LEU,ASN,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "12\tTRUE\tTRUE\tALA,ASP,GLU,PHE,ILE,LYS,LEU,ASN,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "13\tTRUE\tTRUE\tALA,ASP,GLU,PHE,ILE,LYS,LEU,ASN,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "14\tTRUE\tTRUE\tALA,ASP,GLU,PHE,ILE,LYS,LEU,ASN,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "15\tTRUE\tTRUE\tALA,ASP,GLU,PHE,ILE,LYS,LEU,ASN,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "16\tTRUE\tTRUE\tALA,ASP,GLU,PHE,ILE,LYS,LEU,ASN,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "17\tTRUE\tTRUE\tALA,ASP,GLU,PHE,ILE,LYS,LEU,ASN,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "18\tTRUE\tTRUE\tALA,ASP,GLU,PHE,ILE,LYS,LEU,ASN,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "19\tTRUE\tTRUE\tALA,ASP,GLU,PHE,ILE,LYS,LEU,ASN,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "20\tTRUE\tTRUE\tALA,ASP,GLU,PHE,ILE,LYS,LEU,ASN,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "21\tTRUE\tTRUE\tALA,ASP,GLU,PHE,ILE,LYS,LEU,ASN,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "22\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "23\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "24\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "25\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "26\tTRUE\tTRUE\tASP,GLU,PHE,HIS,HIS_D,ILE,LYS,LEU,ASN,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "27\tTRUE\tTRUE\tASP,GLU,PHE,HIS,HIS_D,ILE,LYS,LEU,ASN,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "28\tTRUE\tTRUE\tASP,GLU,PHE,HIS,HIS_D,ILE,LYS,LEU,ASN,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "29\tTRUE\tTRUE\tASP,GLU,PHE,HIS,HIS_D,ILE,LYS,LEU,ASN,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "30\tTRUE\tTRUE\tASP,GLU,PHE,HIS,HIS_D,ILE,LYS,LEU,ASN,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "31\tTRUE\tTRUE\tASP,GLU,PHE,HIS,HIS_D,ILE,LYS,LEU,ASN,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "32\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "33\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "34\tTRUE\tTRUE\tASP,GLU,PHE,HIS,HIS_D,ILE,LYS,LEU,ASN,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "35\tTRUE\tTRUE\tASP,GLU,PHE,HIS,HIS_D,ILE,LYS,LEU,ASN,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "36\tTRUE\tTRUE\tASP,GLU,PHE,HIS,HIS_D,ILE,LYS,LEU,ASN,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "37\tTRUE\tTRUE\tASP,GLU,PHE,HIS,HIS_D,ILE,LYS,LEU,ASN,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "38\tTRUE\tTRUE\tASP,GLU,PHE,HIS,HIS_D,ILE,LYS,LEU,ASN,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "39\tTRUE\tTRUE\tASP,GLU,PHE,HIS,HIS_D,ILE,LYS,LEU,ASN,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "40\tTRUE\tTRUE\tALA:CtermProteinFull,CYS:CtermProteinFull,ASP:CtermProteinFull,GLU:CtermProteinFull,PHE:CtermProteinFull,GLY:CtermProteinFull,HIS:CtermProteinFull,HIS_D:CtermProteinFull,ILE:CtermProteinFull,LYS:CtermProteinFull,LEU:CtermProteinFull,MET:CtermProteinFull,ASN:CtermProteinFull,PRO:CtermProteinFull,GLN:CtermProteinFull,ARG:CtermProteinFull,SER:CtermProteinFull,THR:CtermProteinFull,VAL:CtermProteinFull,TRP:CtermProteinFull,TYR:CtermProteinFull\n", "\n" ] } ], "source": [ "from pyrosetta.rosetta.protocols.task_operations import DsspDesignOperation\n", "dssp_design = DsspDesignOperation()\n", "\n", "# 如果需要调整二级结构氨基酸类型,可以加载更多设定的语句:\n", "# dssp_design.set_restrictions_aa('Helix','ADEF') #二级结构、范围、(重新设定二级结构氨基酸突变范围)\n", "# dssp_design.set_restrictions_append('Helix','ADEF') #二级结构、范围、(添加二级结构氨基酸突变范围)\n", "# dssp_design.set_restrictions_exclude('Helix','ADEF') #二级结构、范围、(删除二级结构氨基酸突变范围)\n", "\n", "# 将TaskOperations加载至TaskFactory中\n", "pack_tf = TaskFactory()\n", "pack_tf.push_back(dssp_design)\n", "\n", "# 生成PackerTask\n", "packer_task = pack_tf.create_task_and_apply_taskoperations(denovo_pose)\n", "print(packer_task)" ] }, { "cell_type": "markdown", "id": "46a1c2b6", "metadata": {}, "source": [ "#### 6. DesignByCavityProximity(等待发布)\n", "2021年新增的TaskOperations,其主要作用是识别蛋白内部的空腔,并根据这些空腔的近似大小来选择可用的氨基酸自由度。\n", "一些参数说明:\n", "- region_shell: 被选定的氨基酸周围附近X埃的氨基酸均被设定为可突变,默认为8埃\n", "- regions_to_design: 选择多少个可被设计的氨基酸中心?默认为1\n", "- repack_non_selected: 顾名思义,那些处于region_shell以外的氨基酸都只能进行repacking" ] }, { "cell_type": "code", "execution_count": 20, "id": "0c3045dc", "metadata": {}, "outputs": [], "source": [ "# from pyrosetta.rosetta.protocols import rosetta_scripts\n", "# xml = rosetta_scripts.XmlObjects.create_from_string('''\n", "# <TASKOPERATIONS>\n", "# <DesignByCavityProximity name=\"des_cavity\" region_shell=\"8.0\" regions_to_design=\"1\" repack_non_selected=\"0\" />\n", "# </TASKOPERATIONS>\n", "# ''')\n", "# des_cavity = xml.get_task_operation('des_cavity')\n", "\n", "# # 将TaskOperations加载至TaskFactory中\n", "# pack_tf = TaskFactory()\n", "# pack_tf.push_back(des_cavity)\n", "\n", "# # 生成PackerTask\n", "# packer_task = pack_tf.create_task_and_apply_taskoperations(denovo_pose)\n", "# print(packer_task)" ] }, { "cell_type": "markdown", "id": "ad997aa6", "metadata": {}, "source": [ "#### 7. DesignByResidueCentrality(等待发布)\n", "2021年新增的TaskOperations,其根据蛋白质内部的氨基酸相互作用网络来决定哪些氨基酸位点可以被设计。\n", "具体的做法是: 先计算整个Pose的intra-protein interaction network,然后根据氨基酸的Centrality来决定位点被选择的概率。Centrality越高说明有越多的其他氨基酸在他的周围。因此推测,每次的PackerTask的自由度组成都是不同的,算法会偏向于选择那些对结构或功能有重要作用的氨基酸进行设计。而那些对稳定性贡献较小的区域被设计的概率就会降低。" ] }, { "cell_type": "code", "execution_count": 21, "id": "a0e2b47b", "metadata": {}, "outputs": [], "source": [ "# from pyrosetta.rosetta.protocols import rosetta_scripts\n", "# xml = rosetta_scripts.XmlObjects.create_from_string('''\n", "# <TASKOPERATIONS>\n", "# <DesignByResidueCentrality name=\"des_by_centrality\" region_shell=\"8.0\" regions_to_design=\"1\" repack_non_selected=\"0\" />\n", "# </TASKOPERATIONS>\n", "# ''')\n", "# des_by_centrality = xml.get_task_operation('des_by_centrality')\n", "\n", "# # 将TaskOperations加载至TaskFactory中\n", "# pack_tf = TaskFactory()\n", "# pack_tf.push_back(des_by_centrality)\n", "\n", "# # 生成PackerTask\n", "# packer_task = pack_tf.create_task_and_apply_taskoperations(denovo_pose)\n", "# print(packer_task)" ] }, { "cell_type": "markdown", "id": "b432ca62", "metadata": {}, "source": [ "#### 8. DesignRandomRegion(等待发布)\n", "2021年新增的TaskOperations,简单地随机选择一些Pose中的氨基酸来进行设计。设计的逻辑依然是region_shell的方法。" ] }, { "cell_type": "code", "execution_count": 22, "id": "eb19f63f", "metadata": {}, "outputs": [], "source": [ "# from pyrosetta.rosetta.protocols import rosetta_scripts\n", "# xml = rosetta_scripts.XmlObjects.create_from_string('''\n", "# <TASKOPERATIONS>\n", "# <DesignRandomRegion name=\"des_random\" region_shell=\"8.0\" regions_to_design=\"1\" repack_non_selected=\"0\" />\n", "# </TASKOPERATIONS>\n", "# ''')\n", "# des_random = xml.get_task_operation('des_random')\n", "\n", "# # 将TaskOperations加载至TaskFactory中\n", "# pack_tf = TaskFactory()\n", "# pack_tf.push_back(des_random)\n", "\n", "# # 生成PackerTask\n", "# packer_task = pack_tf.create_task_and_apply_taskoperations(denovo_pose)\n", "# print(packer_task)" ] }, { "cell_type": "markdown", "id": "b24e6f32", "metadata": {}, "source": [ "#### 9. NoRepackDisulfides\n", "将Pose的二硫键位点设置为no_repack。" ] }, { "cell_type": "code", "execution_count": 23, "id": "0bde2b34", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "#Packer_Task\n", "\n", "Threads to request: ALL AVAILABLE\n", "\n", "resid\tpack?\tdesign?\tallowed_aas\n", "1\tTRUE\tTRUE\tALA:NtermProteinFull,CYS:NtermProteinFull,ASP:NtermProteinFull,GLU:NtermProteinFull,PHE:NtermProteinFull,GLY:NtermProteinFull,HIS:NtermProteinFull,HIS_D:NtermProteinFull,ILE:NtermProteinFull,LYS:NtermProteinFull,LEU:NtermProteinFull,MET:NtermProteinFull,ASN:NtermProteinFull,PRO:NtermProteinFull,GLN:NtermProteinFull,ARG:NtermProteinFull,SER:NtermProteinFull,THR:NtermProteinFull,VAL:NtermProteinFull,TRP:NtermProteinFull,TYR:NtermProteinFull\n", "2\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "3\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "4\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "5\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "6\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "7\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "8\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "9\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "10\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "11\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "12\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "13\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "14\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "15\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "16\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "17\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "18\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "19\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "20\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "21\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "22\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "23\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "24\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "25\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "26\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "27\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "28\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "29\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "30\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "31\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "32\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "33\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "34\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "35\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "36\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "37\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "38\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "39\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "40\tTRUE\tTRUE\tALA:CtermProteinFull,CYS:CtermProteinFull,ASP:CtermProteinFull,GLU:CtermProteinFull,PHE:CtermProteinFull,GLY:CtermProteinFull,HIS:CtermProteinFull,HIS_D:CtermProteinFull,ILE:CtermProteinFull,LYS:CtermProteinFull,LEU:CtermProteinFull,MET:CtermProteinFull,ASN:CtermProteinFull,PRO:CtermProteinFull,GLN:CtermProteinFull,ARG:CtermProteinFull,SER:CtermProteinFull,THR:CtermProteinFull,VAL:CtermProteinFull,TRP:CtermProteinFull,TYR:CtermProteinFull\n", "\n" ] } ], "source": [ "from pyrosetta.rosetta.core.pack.task.operation import NoRepackDisulfides\n", "norepack_ss = NoRepackDisulfides()\n", "\n", "# 将TaskOperations加载至TaskFactory中\n", "pack_tf = TaskFactory()\n", "pack_tf.push_back(norepack_ss)\n", "\n", "# 生成PackerTask\n", "packer_task = pack_tf.create_task_and_apply_taskoperations(denovo_pose)\n", "print(packer_task)" ] }, { "cell_type": "markdown", "id": "7bdd5f44", "metadata": {}, "source": [ "由于体系中没有二硫键,因此TaskOperations没有起到相应的作用。" ] }, { "cell_type": "markdown", "id": "829d8184", "metadata": {}, "source": [ "#### 10. LayerDesign\n", "LayerDesign即将Pose分为core, surface, boundary三个区域,并根据所在的layer决定氨基酸Rotamer的自由度。目前已经有点过时了,最新的方式是使用Layer ResidueSelector进行以及RTL的方案进行替代(自由度极高),以下介绍如何正确设置LayerDesign的范例:" ] }, { "cell_type": "code", "execution_count": 24, "id": "0bd12b76-924e-453b-b337-ff5f161e4bb3", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\u001b[0mcore.select.residue_selector.LayerSelector: {0} \u001b[0mSetting LayerSelector to use sidechain neighbors to determine burial.\n", "\u001b[0mcore.select.residue_selector.LayerSelector: {0} \u001b[0mSet cutoffs for core and surface to 5.2 and 2, respectively, in LayerSelector.\n", "\u001b[0mcore.select.residue_selector.LayerSelector: {0} \u001b[0mSetting LayerSelector to use sidechain neighbors to determine burial.\n", "\u001b[0mcore.select.residue_selector.LayerSelector: {0} \u001b[0mSetting core=true boundary=false surface=false in LayerSelector.\n", "\u001b[0mcore.select.residue_selector.LayerSelector: {0} \u001b[0mSetting radius for rolling ball algorithm to 2 in LayerSelector. (Note that this will have no effect if the sidechain neighbors method is used.)\n", "\u001b[0mcore.select.residue_selector.LayerSelector: {0} \u001b[0mSet cutoffs for core and surface to 3.5 and 1.5, respectively, in LayerSelector.\n", "\u001b[0mcore.select.residue_selector.LayerSelector: {0} \u001b[0mSetting LayerSelector to use sidechain neighbors to determine burial.\n", "\u001b[0mcore.select.residue_selector.LayerSelector: {0} \u001b[0mSet cutoffs for core and surface to 5.2 and 2, respectively, in LayerSelector.\n", "\u001b[0mcore.select.residue_selector.LayerSelector: {0} \u001b[0mSetting LayerSelector to use sidechain neighbors to determine burial.\n", "\u001b[0mcore.select.residue_selector.LayerSelector: {0} \u001b[0mSetting core=false boundary=true surface=false in LayerSelector.\n", "\u001b[0mcore.select.residue_selector.LayerSelector: {0} \u001b[0mSetting radius for rolling ball algorithm to 2 in LayerSelector. (Note that this will have no effect if the sidechain neighbors method is used.)\n", "\u001b[0mcore.select.residue_selector.LayerSelector: {0} \u001b[0mSet cutoffs for core and surface to 3.5 and 1.5, respectively, in LayerSelector.\n", "\u001b[0mcore.select.residue_selector.LayerSelector: {0} \u001b[0mSetting LayerSelector to use sidechain neighbors to determine burial.\n", "\u001b[0mcore.select.residue_selector.LayerSelector: {0} \u001b[0mSet cutoffs for core and surface to 5.2 and 2, respectively, in LayerSelector.\n", "\u001b[0mcore.select.residue_selector.LayerSelector: {0} \u001b[0mSetting LayerSelector to use sidechain neighbors to determine burial.\n", "\u001b[0mcore.select.residue_selector.LayerSelector: {0} \u001b[0mSetting core=false boundary=false surface=true in LayerSelector.\n", "\u001b[0mcore.select.residue_selector.LayerSelector: {0} \u001b[0mSetting radius for rolling ball algorithm to 2 in LayerSelector. (Note that this will have no effect if the sidechain neighbors method is used.)\n", "\u001b[0mcore.select.residue_selector.LayerSelector: {0} \u001b[0mSet cutoffs for core and surface to 3.5 and 1.5, respectively, in LayerSelector.\n" ] } ], "source": [ "from pyrosetta import init, pose_from_pdb\n", "from pyrosetta.rosetta.core.select.residue_selector import LayerSelector\n", "from pyrosetta.rosetta.core.select.residue_selector import SecondaryStructureSelector\n", "from pyrosetta.rosetta.core.select.residue_selector import AndResidueSelector, NotResidueSelector\n", "from pyrosetta.rosetta.core.select.residue_selector import PrimarySequenceNeighborhoodSelector, ChainSelector\n", "from pyrosetta.rosetta.core.pack.task.operation import DesignRestrictions\n", "from pyrosetta.rosetta.core.pack.task.operation import RestrictToRepacking\n", "from pyrosetta.rosetta.core.pack.task.operation import RestrictAbsentCanonicalAASRLT\n", "\n", "def layer_selection(pick_core, pick_boundary, pick_surface):\n", " # layer选择器\n", " layer = LayerSelector()\n", " layer.set_use_sc_neighbors(True)\n", " layer.set_layers(pick_core, pick_boundary, pick_surface)\n", " layer.set_ball_radius(2.0)\n", " layer.set_cutoffs(3.5, 1.5) # >= 4 neighbor defined as core residuie. for miniprotein.\n", "\n", " return layer\n", "\n", "def ss_selection(ss, min_E, min_H, is_overlap, is_include_ter_loop):\n", " # 设置二级结构选择\n", " ss_selector = SecondaryStructureSelector(ss)\n", " ss_selector.set_minE(min_E)\n", " ss_selector.set_minH(min_H)\n", " ss_selector.set_overlap(is_overlap)\n", " ss_selector.set_use_dssp(True)\n", " ss_selector.set_include_terminal_loops(is_include_ter_loop)\n", " return ss_selector\n", "\n", "def restrict_to_design(residue_list):\n", " design_to = RestrictAbsentCanonicalAASRLT()\n", " design_to.aas_to_keep(residue_list)\n", " return design_to\n", "\n", "\n", "# define selector\n", "core_layer = layer_selection(1, 0, 0)\n", "boundary_layer = layer_selection(0, 1, 0)\n", "surface_layer = layer_selection(0, 0, 1)\n", "sheet_selector = ss_selection('E', 2, 3, False, False)\n", "entire_loop_selector = ss_selection('L', 2, 3, False, True)\n", "entire_helix_selector = ss_selection('H', 2, 3, False, False)\n", "\n", "# cap\n", "helix_cap_selector = AndResidueSelector(entire_loop_selector, PrimarySequenceNeighborhoodSelector(1, 0, entire_helix_selector))\n", "helix_start_selector = AndResidueSelector(entire_helix_selector, PrimarySequenceNeighborhoodSelector(0, 1, helix_cap_selector))\n", "helix_selector = AndResidueSelector(entire_helix_selector, NotResidueSelector(helix_start_selector))\n", "loop_selector = AndResidueSelector(entire_loop_selector, NotResidueSelector(helix_cap_selector))\n", "\n", "# TASKOPERATIONS\n", "layer_design_restrict = DesignRestrictions()\n", "layer_design_restrict.add_selector_rlto_pair(AndResidueSelector(surface_layer, helix_start_selector), restrict_to_design('DEHKPQR'))\n", "layer_design_restrict.add_selector_rlto_pair(AndResidueSelector(surface_layer, helix_selector), restrict_to_design('EHKQR'))\n", "layer_design_restrict.add_selector_rlto_pair(AndResidueSelector(surface_layer, sheet_selector), restrict_to_design('EHKNQRST'))\n", "layer_design_restrict.add_selector_rlto_pair(AndResidueSelector(surface_layer, loop_selector), restrict_to_design('DEGHKNPQRST'))\n", "layer_design_restrict.add_selector_rlto_pair(AndResidueSelector(boundary_layer, helix_start_selector), restrict_to_design('ADEHIKLMNPQRSTVWY'))\n", "layer_design_restrict.add_selector_rlto_pair(AndResidueSelector(boundary_layer, helix_selector), restrict_to_design('ADEHIKLMNQRSTVWY'))\n", "layer_design_restrict.add_selector_rlto_pair(AndResidueSelector(boundary_layer, sheet_selector), restrict_to_design('DEFHIKLMNQRSTVWY'))\n", "layer_design_restrict.add_selector_rlto_pair(AndResidueSelector(boundary_layer, loop_selector), restrict_to_design('ADEFGHIKLMNPQRSTVWY'))\n", "layer_design_restrict.add_selector_rlto_pair(AndResidueSelector(core_layer, helix_start_selector), restrict_to_design('AFILMPVWY'))\n", "layer_design_restrict.add_selector_rlto_pair(AndResidueSelector(core_layer, helix_selector), restrict_to_design('AFILMVWY'))\n", "layer_design_restrict.add_selector_rlto_pair(AndResidueSelector(core_layer, sheet_selector), restrict_to_design('FILMVWY'))\n", "layer_design_restrict.add_selector_rlto_pair(AndResidueSelector(core_layer, loop_selector), restrict_to_design('AFGILMPVWY'))\n", "layer_design_restrict.add_selector_rlto_pair(helix_cap_selector, restrict_to_design('DNST'))" ] }, { "cell_type": "code", "execution_count": 25, "id": "7d1633a7-cc17-4481-a17f-a272f8be768a", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\u001b[0mcore.select.residue_selector.SecondaryStructureSelector: {0} \u001b[0mUsing dssp for secondary structure: LHHHHHHHHHHHLL\n", "\u001b[0mcore.select.residue_selector.SecondaryStructureSelector: {0} \u001b[0mUsing dssp for secondary structure: LHHHHHHHHHHHLL\n", "\u001b[0mcore.select.residue_selector.SecondaryStructureSelector: {0} \u001b[0mUsing dssp for secondary structure: LHHHHHHHHHHHLL\n", "\u001b[0mcore.select.residue_selector.PrimarySequenceNeighborhoodSelector: {0} \u001b[0m]\n", "\u001b[0mcore.select.residue_selector.PrimarySequenceNeighborhoodSelector: {0} \u001b[0m]\n", "\u001b[0mcore.select.residue_selector.SecondaryStructureSelector: {0} \u001b[0mUsing dssp for secondary structure: LHHHHHHHHHHHLL\n", "\u001b[0mcore.select.residue_selector.SecondaryStructureSelector: {0} \u001b[0mUsing dssp for secondary structure: LHHHHHHHHHHHLL\n", "\u001b[0mcore.select.residue_selector.SecondaryStructureSelector: {0} \u001b[0mUsing dssp for secondary structure: LHHHHHHHHHHHLL\n", "\u001b[0mcore.select.residue_selector.SecondaryStructureSelector: {0} \u001b[0mUsing dssp for secondary structure: LHHHHHHHHHHHLL\n", "\u001b[0mcore.select.residue_selector.PrimarySequenceNeighborhoodSelector: {0} \u001b[0m]\n", "\u001b[0mcore.select.residue_selector.PrimarySequenceNeighborhoodSelector: {0} \u001b[0m]\n", "\u001b[0mcore.select.residue_selector.SecondaryStructureSelector: {0} \u001b[0mUsing dssp for secondary structure: LHHHHHHHHHHHLL\n", "\u001b[0mcore.select.residue_selector.SecondaryStructureSelector: {0} \u001b[0mUsing dssp for secondary structure: LHHHHHHHHHHHLL\n", "\u001b[0mcore.select.residue_selector.SecondaryStructureSelector: {0} \u001b[0mUsing dssp for secondary structure: LHHHHHHHHHHHLL\n", "\u001b[0mcore.select.residue_selector.SecondaryStructureSelector: {0} \u001b[0mUsing dssp for secondary structure: LHHHHHHHHHHHLL\n", "\u001b[0mcore.select.residue_selector.PrimarySequenceNeighborhoodSelector: {0} \u001b[0m]\n", "\u001b[0mcore.select.residue_selector.SecondaryStructureSelector: {0} \u001b[0mUsing dssp for secondary structure: LHHHHHHHHHHHLL\n", "\u001b[0mcore.select.residue_selector.SecondaryStructureSelector: {0} \u001b[0mUsing dssp for secondary structure: LHHHHHHHHHHHLL\n", "\u001b[0mcore.select.residue_selector.SecondaryStructureSelector: {0} \u001b[0mUsing dssp for secondary structure: LHHHHHHHHHHHLL\n", "\u001b[0mcore.select.residue_selector.PrimarySequenceNeighborhoodSelector: {0} \u001b[0m]\n", "\u001b[0mcore.select.residue_selector.PrimarySequenceNeighborhoodSelector: {0} \u001b[0m]\n", "\u001b[0mcore.select.residue_selector.SecondaryStructureSelector: {0} \u001b[0mUsing dssp for secondary structure: LHHHHHHHHHHHLL\n", "\u001b[0mcore.select.residue_selector.SecondaryStructureSelector: {0} \u001b[0mUsing dssp for secondary structure: LHHHHHHHHHHHLL\n", "\u001b[0mcore.select.residue_selector.SecondaryStructureSelector: {0} \u001b[0mUsing dssp for secondary structure: LHHHHHHHHHHHLL\n", "\u001b[0mcore.select.residue_selector.SecondaryStructureSelector: {0} \u001b[0mUsing dssp for secondary structure: LHHHHHHHHHHHLL\n", "\u001b[0mcore.select.residue_selector.PrimarySequenceNeighborhoodSelector: {0} \u001b[0m]\n", "\u001b[0mcore.select.residue_selector.PrimarySequenceNeighborhoodSelector: {0} \u001b[0m]\n", "\u001b[0mcore.select.residue_selector.SecondaryStructureSelector: {0} \u001b[0mUsing dssp for secondary structure: LHHHHHHHHHHHLL\n", "\u001b[0mcore.select.residue_selector.SecondaryStructureSelector: {0} \u001b[0mUsing dssp for secondary structure: LHHHHHHHHHHHLL\n", "\u001b[0mcore.select.residue_selector.SecondaryStructureSelector: {0} \u001b[0mUsing dssp for secondary structure: LHHHHHHHHHHHLL\n", "\u001b[0mcore.select.residue_selector.SecondaryStructureSelector: {0} \u001b[0mUsing dssp for secondary structure: LHHHHHHHHHHHLL\n", "\u001b[0mcore.select.residue_selector.PrimarySequenceNeighborhoodSelector: {0} \u001b[0m]\n", "\u001b[0mcore.select.residue_selector.SecondaryStructureSelector: {0} \u001b[0mUsing dssp for secondary structure: LHHHHHHHHHHHLL\n", "\u001b[0mcore.select.residue_selector.SecondaryStructureSelector: {0} \u001b[0mUsing dssp for secondary structure: LHHHHHHHHHHHLL\n", "\u001b[0mcore.select.residue_selector.SecondaryStructureSelector: {0} \u001b[0mUsing dssp for secondary structure: LHHHHHHHHHHHLL\n", "\u001b[0mcore.select.residue_selector.PrimarySequenceNeighborhoodSelector: {0} \u001b[0m]\n", "\u001b[0mcore.select.residue_selector.PrimarySequenceNeighborhoodSelector: {0} \u001b[0m]\n", "\u001b[0mcore.select.residue_selector.SecondaryStructureSelector: {0} \u001b[0mUsing dssp for secondary structure: LHHHHHHHHHHHLL\n", "\u001b[0mcore.select.residue_selector.SecondaryStructureSelector: {0} \u001b[0mUsing dssp for secondary structure: LHHHHHHHHHHHLL\n", "\u001b[0mcore.select.residue_selector.SecondaryStructureSelector: {0} \u001b[0mUsing dssp for secondary structure: LHHHHHHHHHHHLL\n", "\u001b[0mcore.select.residue_selector.SecondaryStructureSelector: {0} \u001b[0mUsing dssp for secondary structure: LHHHHHHHHHHHLL\n", "\u001b[0mcore.select.residue_selector.PrimarySequenceNeighborhoodSelector: {0} \u001b[0m]\n", "\u001b[0mcore.select.residue_selector.PrimarySequenceNeighborhoodSelector: {0} \u001b[0m]\n", "\u001b[0mcore.select.residue_selector.SecondaryStructureSelector: {0} \u001b[0mUsing dssp for secondary structure: LHHHHHHHHHHHLL\n", "\u001b[0mcore.select.residue_selector.SecondaryStructureSelector: {0} \u001b[0mUsing dssp for secondary structure: LHHHHHHHHHHHLL\n", "\u001b[0mcore.select.residue_selector.SecondaryStructureSelector: {0} \u001b[0mUsing dssp for secondary structure: LHHHHHHHHHHHLL\n", "\u001b[0mcore.select.residue_selector.SecondaryStructureSelector: {0} \u001b[0mUsing dssp for secondary structure: LHHHHHHHHHHHLL\n", "\u001b[0mcore.select.residue_selector.PrimarySequenceNeighborhoodSelector: {0} \u001b[0m]\n", "\u001b[0mcore.select.residue_selector.SecondaryStructureSelector: {0} \u001b[0mUsing dssp for secondary structure: LHHHHHHHHHHHLL\n", "\u001b[0mcore.select.residue_selector.SecondaryStructureSelector: {0} \u001b[0mUsing dssp for secondary structure: LHHHHHHHHHHHLL\n", "\u001b[0mcore.select.residue_selector.PrimarySequenceNeighborhoodSelector: {0} \u001b[0m]\n", "#Packer_Task\n", "\n", "Threads to request: ALL AVAILABLE\n", "\n", "resid\tpack?\tdesign?\tallowed_aas\n", "1\tTRUE\tTRUE\tASP:NtermProteinFull,ASN:NtermProteinFull,SER:NtermProteinFull,THR:NtermProteinFull\n", "2\tTRUE\tTRUE\tASP,GLU,HIS,HIS_D,LYS,PRO,GLN,ARG\n", "3\tTRUE\tTRUE\tGLU,HIS,HIS_D,LYS,GLN,ARG\n", "4\tTRUE\tTRUE\tGLU,HIS,HIS_D,LYS,GLN,ARG\n", "5\tTRUE\tTRUE\tGLU,HIS,HIS_D,LYS,GLN,ARG\n", "6\tTRUE\tTRUE\tGLU,HIS,HIS_D,LYS,GLN,ARG\n", "7\tTRUE\tTRUE\tGLU,HIS,HIS_D,LYS,GLN,ARG\n", "8\tTRUE\tTRUE\tGLU,HIS,HIS_D,LYS,GLN,ARG\n", "9\tTRUE\tTRUE\tGLU,HIS,HIS_D,LYS,GLN,ARG\n", "10\tTRUE\tTRUE\tGLU,HIS,HIS_D,LYS,GLN,ARG\n", "11\tTRUE\tTRUE\tGLU,HIS,HIS_D,LYS,GLN,ARG\n", "12\tTRUE\tTRUE\tGLU,HIS,HIS_D,LYS,GLN,ARG\n", "13\tTRUE\tTRUE\tASP,GLU,GLY,HIS,HIS_D,LYS,ASN,PRO,GLN,ARG,SER,THR\n", "14\tTRUE\tTRUE\tASP:CtermProteinFull,GLU:CtermProteinFull,GLY:CtermProteinFull,HIS:CtermProteinFull,HIS_D:CtermProteinFull,LYS:CtermProteinFull,ASN:CtermProteinFull,PRO:CtermProteinFull,GLN:CtermProteinFull,ARG:CtermProteinFull,SER:CtermProteinFull,THR:CtermProteinFull\n", "\n" ] } ], "source": [ "from pyrosetta.rosetta.core.pack.task import TaskFactory\n", "# 将TaskOperations加载至TaskFactory中\n", "pack_tf = TaskFactory()\n", "pack_tf.push_back(layer_design_restrict)\n", "\n", "# 生成PackerTask\n", "packer_task = pack_tf.create_task_and_apply_taskoperations(pose)\n", "print(packer_task)" ] }, { "cell_type": "markdown", "id": "f133095a", "metadata": {}, "source": [ "#### 11. SelectResiduesWithinChain\n", "根据内部链编号,选择链中的氨基酸Rotamer自由度,如果modify unselected residues参数设置为true,则所有其他residues都设置为norepack。" ] }, { "cell_type": "code", "execution_count": 26, "id": "456d0079", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\u001b[0mprotocols.TaskOperations.SelectResiduesWithinChainOperation: {0} \u001b[0mResidues set to repacking (all others are prevented from repacking): 1,2,3,7,8,9,\n", "#Packer_Task\n", "\n", "Threads to request: ALL AVAILABLE\n", "\n", "resid\tpack?\tdesign?\tallowed_aas\n", "1\tTRUE\tFALSE\tASP:NtermProteinFull\n", "2\tTRUE\tFALSE\tGLU\n", "3\tTRUE\tFALSE\tLEU\n", "4\tFALSE\tFALSE\t\n", "5\tFALSE\tFALSE\t\n", "6\tFALSE\tFALSE\t\n", "7\tTRUE\tFALSE\tVAL\n", "8\tTRUE\tFALSE\tGLU\n", "9\tTRUE\tFALSE\tGLN\n", "10\tFALSE\tFALSE\t\n", "11\tFALSE\tFALSE\t\n", "12\tFALSE\tFALSE\t\n", "13\tFALSE\tFALSE\t\n", "14\tFALSE\tFALSE\t\n", "\n" ] } ], "source": [ "# 定义氨基酸范围:\n", "from pyrosetta.rosetta.protocols.task_operations import SelectResiduesWithinChainOperation\n", "repacking_define = SelectResiduesWithinChainOperation()\n", "repacking_define.chain(1) # 1,2,3 按照pose的顺序\n", "for i in [1,2,3,7,8,9]:\n", " repacking_define.add_res(i) # which residues within the chain\n", "\n", "# 定义Pack状态:\n", "repacking_define.allow_design(False) \n", "repacking_define.allow_repacking(True)\n", "repacking_define.modify_unselected_residues(True) # 是否对未选择区域设置为no_repack?(快速操作)\n", "\n", "# 将TaskOperations加载至TaskFactory中\n", "pack_tf = TaskFactory()\n", "pack_tf.push_back(repacking_define)\n", "\n", "# 生成PackerTask\n", "packer_task = pack_tf.create_task_and_apply_taskoperations(pose)\n", "print(packer_task)" ] }, { "cell_type": "markdown", "id": "8e5961b2", "metadata": {}, "source": [ "#### 12. SelectBySASAOperation\n", "\n", "根据SASA值来选择蛋白质的Layer区域(core, surface, boundary),并根据所在的layer决定氨基酸Rotamer的自由度。\n", "参数的解释: \n", "- mode: sc = 侧链SASA综合, mc = 主链+CB的SASA总和。\n", "- state: \"monomer\"(将每条链进行分离独立的pose进行计算), \"bound\"(不做额外处理), \"unbound\"(根据jump的设定,将几个链平移1000A后在进行评估SASA)\n", "- probe_radius: 默认2.2, 比1.4大,但是也能满足需求。\n", "- core_asa: 默认0, sasa小于该值,认为是core.\n", "- surface_asa: 默认30,sasa大于该值,认为是surface.\n", "- jumps: 默认1, 定义从哪条链开始视为jump点.如果mode设置为\"unbound\". 如果jump设置为2,那么chain1,2视为一体.\n", "- is_design_core: 该区域能否设计?\n", "- is_design_boundary: 该区域能否设计?\n", "- is_design_surface: 该区域能否设计?\n", "- sym_dof_names: 控制同源多聚体对称化操作, 输入对称性的定义变量名。" ] }, { "cell_type": "code", "execution_count": 27, "id": "74ccb913", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "#Packer_Task\n", "\n", "Threads to request: ALL AVAILABLE\n", "\n", "resid\tpack?\tdesign?\tallowed_aas\n", "1\tFALSE\tFALSE\t\n", "2\tFALSE\tFALSE\t\n", "3\tFALSE\tFALSE\t\n", "4\tFALSE\tFALSE\t\n", "5\tFALSE\tFALSE\t\n", "6\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "7\tFALSE\tFALSE\t\n", "8\tFALSE\tFALSE\t\n", "9\tFALSE\tFALSE\t\n", "10\tFALSE\tFALSE\t\n", "11\tFALSE\tFALSE\t\n", "12\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "13\tFALSE\tFALSE\t\n", "14\tFALSE\tFALSE\t\n", "15\tFALSE\tFALSE\t\n", "16\tFALSE\tFALSE\t\n", "17\tFALSE\tFALSE\t\n", "18\tFALSE\tFALSE\t\n", "19\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "20\tFALSE\tFALSE\t\n", "21\tFALSE\tFALSE\t\n", "22\tFALSE\tFALSE\t\n", "23\tFALSE\tFALSE\t\n", "24\tFALSE\tFALSE\t\n", "25\tFALSE\tFALSE\t\n", "26\tFALSE\tFALSE\t\n", "27\tFALSE\tFALSE\t\n", "28\tFALSE\tFALSE\t\n", "29\tFALSE\tFALSE\t\n", "30\tFALSE\tFALSE\t\n", "31\tFALSE\tFALSE\t\n", "32\tFALSE\tFALSE\t\n", "33\tFALSE\tFALSE\t\n", "34\tFALSE\tFALSE\t\n", "35\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "36\tFALSE\tFALSE\t\n", "37\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "38\tFALSE\tFALSE\t\n", "39\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "40\tFALSE\tFALSE\t\n", "\n" ] } ], "source": [ "# 定义参数:\n", "from pyrosetta.rosetta.protocols.task_operations import SelectBySASAOperation\n", "mode=\"mc\"\n", "state=\"bound\"\n", "probe_radius=2.0\n", "core_asa=20\n", "surface_asa=40\n", "jump = '1'\n", "sym_dof_names = '' # 对称化自由度的代号 \n", "core = True \n", "boundary = False\n", "surface = False\n", "select_sasa = SelectBySASAOperation(mode, state, probe_radius, core_asa, surface_asa, jump, sym_dof_names, core, boundary, surface)\n", "\n", "# 将TaskOperations加载至TaskFactory中\n", "pack_tf = TaskFactory()\n", "pack_tf.push_back(select_sasa)\n", "\n", "# 生成PackerTask\n", "packer_task = pack_tf.create_task_and_apply_taskoperations(denovo_pose)\n", "print(packer_task)" ] }, { "cell_type": "markdown", "id": "32ab5411", "metadata": {}, "source": [ "此处,蛋白质的core部分是被允许进行设计的。" ] }, { "cell_type": "markdown", "id": "4c87655d", "metadata": {}, "source": [ "#### 13. RestrictToTermini\n", "在指定的Pose链中,只允许N端第一个残基或C端最后一个残基进行repack。" ] }, { "cell_type": "code", "execution_count": 28, "id": "ab0806cb", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "#Packer_Task\n", "\n", "Threads to request: ALL AVAILABLE\n", "\n", "resid\tpack?\tdesign?\tallowed_aas\n", "1\tTRUE\tFALSE\tASP:NtermProteinFull\n", "2\tFALSE\tFALSE\t\n", "3\tFALSE\tFALSE\t\n", "4\tFALSE\tFALSE\t\n", "5\tFALSE\tFALSE\t\n", "6\tFALSE\tFALSE\t\n", "7\tFALSE\tFALSE\t\n", "8\tFALSE\tFALSE\t\n", "9\tFALSE\tFALSE\t\n", "10\tFALSE\tFALSE\t\n", "11\tFALSE\tFALSE\t\n", "12\tFALSE\tFALSE\t\n", "13\tFALSE\tFALSE\t\n", "14\tTRUE\tFALSE\tGLY:CtermProteinFull\n", "\n" ] } ], "source": [ "from pyrosetta.rosetta.protocols.task_operations import RestrictToTerminiOperation\n", "nc_repack = RestrictToTerminiOperation(chain=1, restrict_n_terminus=True, restrict_c_terminus=True)\n", "\n", "# 将TaskOperations加载至TaskFactory中\n", "pack_tf = TaskFactory()\n", "pack_tf.push_back(nc_repack)\n", "\n", "# 生成PackerTask\n", "packer_task = pack_tf.create_task_and_apply_taskoperations(pose)\n", "print(packer_task)" ] }, { "cell_type": "markdown", "id": "06155f9c", "metadata": {}, "source": [ "### 2.1.3 Interface/Neighborhood Specifications" ] }, { "cell_type": "markdown", "id": "3c482e52", "metadata": {}, "source": [ "#### 1. DesignAround\n", "最早的region_shell机制的TaskOperations,根据指定的氨基酸位点来确定Design shell和repack shell半径。处于相应shell中的氨基酸Rotamer状态设置为Design或Repacking。其余剩下部分均设置为no_repack。" ] }, { "cell_type": "code", "execution_count": 29, "id": "c6847e18", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "#Packer_Task\n", "\n", "Threads to request: ALL AVAILABLE\n", "\n", "resid\tpack?\tdesign?\tallowed_aas\n", "1\tTRUE\tFALSE\tASP:NtermProteinFull\n", "2\tFALSE\tFALSE\t\n", "3\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "4\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "5\tTRUE\tFALSE\tLYS\n", "6\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "7\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "8\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "9\tTRUE\tFALSE\tGLN\n", "10\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "11\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "12\tTRUE\tFALSE\tARG\n", "13\tFALSE\tFALSE\t\n", "14\tFALSE\tFALSE\t\n", "\n" ] } ], "source": [ "from pyrosetta.rosetta.protocols.task_operations import DesignAroundOperation\n", "# 设定指定热点残基\n", "around = DesignAroundOperation ()\n", "for i in [7]:\n", " around.include_residue(i)\n", "\n", "around.design_shell(7.0) # design层半径(不包括指定的残基)\n", "around.repack_shell(10.0) # repack层半径, 大于等于epack_shell(不包括指定的残基)\n", "around.resnums_allow_design(1) # 只允许指定的resnum list中氨基酸进行设计;\n", "around.allow_design(1) # 允许Desgin层进行设计;\n", "\n", "# 将TaskOperations加载至TaskFactory中\n", "pack_tf = TaskFactory()\n", "pack_tf.push_back(around)\n", "\n", "# 生成PackerTask\n", "packer_task = pack_tf.create_task_and_apply_taskoperations(pose)\n", "print(packer_task)" ] }, { "cell_type": "markdown", "id": "0d45e696", "metadata": {}, "source": [ "#### 2. DetectProteinLigandInterface\n", "该Operation只关注底物-蛋白PPI界面上的残基设置,根据cut1,cut2参数确定design shell,根据cut3和cut4确定repack shell。\n", "特别注意,init的时候需要把-ignore_unrecognized_res进行设置,否则底物会被忽略导致识别失败。" ] }, { "cell_type": "code", "execution_count": 30, "id": "34326b39", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "PyRosetta-4 2021 [Rosetta PyRosetta4.conda.mac.cxx11thread.serialization.python37.Release 2021.31+release.c7009b3115c22daa9efe2805d9d1ebba08426a54 2021-08-07T10:04:12] retrieved from: http://www.pyrosetta.org\n", "(C) Copyright Rosetta Commons Member Institutions. Created in JHU by Sergey Lyskov and PyRosetta Team.\n", "\u001b[0mcore.init: {0} \u001b[0mChecking for fconfig files in pwd and ./rosetta/flags\n", "\u001b[0mcore.init: {0} \u001b[0mRosetta version: PyRosetta4.conda.mac.cxx11thread.serialization.python37.Release r292 2021.31+release.c7009b3115c c7009b3115c22daa9efe2805d9d1ebba08426a54 http://www.pyrosetta.org 2021-08-07T10:04:12\n", "\u001b[0mcore.init: {0} \u001b[0mcommand: PyRosetta -ignore_unrecognized_res false -database /opt/miniconda3/lib/python3.7/site-packages/pyrosetta/database\n", "\u001b[0mbasic.random.init_random_generator: {0} \u001b[0m'RNG device' seed mode, using '/dev/urandom', seed=-706432799 seed_offset=0 real_seed=-706432799 thread_index=0\n", "\u001b[0mbasic.random.init_random_generator: {0} \u001b[0mRandomGenerator:init: Normal mode, seed=-706432799 RG_type=mt19937\n", "\u001b[0mcore.import_pose.import_pose: {0} \u001b[0mFile './data/1ckn.pdb' automatically determined to be of type PDB\n", "\u001b[0mcore.io.pose_from_sfr.chirality_resolution: {0} \u001b[0mFlipping atom xyz for OP1 and OP2 for residue GTP\n", "\u001b[0mcore.io.pose_from_sfr.chirality_resolution: {0} \u001b[0mFlipping atom xyz for H21 and H22 for residue GTP\n", "\u001b[0mcore.conformation.Conformation: {0} \u001b[0m\u001b[1m[ WARNING ]\u001b[0m missing heavyatom: OXT on residue PHE:CtermProteinFull 317\n", "\u001b[0mprotocols.rosetta_scripts.RosettaScriptsParser: {0} \u001b[0mGenerating XML Schema for rosetta_scripts...\n", "\u001b[0mprotocols.rosetta_scripts.RosettaScriptsParser: {0} \u001b[0m...done\n", "\u001b[0mprotocols.rosetta_scripts.RosettaScriptsParser: {0} \u001b[0mInitializing schema validator...\n", "\u001b[0mprotocols.rosetta_scripts.RosettaScriptsParser: {0} \u001b[0m...done\n", "\u001b[0mprotocols.rosetta_scripts.RosettaScriptsParser: {0} \u001b[0mValidating input script...\n", "\u001b[0mprotocols.rosetta_scripts.RosettaScriptsParser: {0} \u001b[0m...done\n", "\u001b[0mprotocols.rosetta_scripts.RosettaScriptsParser: {0} \u001b[0mParsed script:\n", "<ROSETTASCRIPTS>\n", "\t<TASKOPERATIONS>\n", "\t\t<DetectProteinLigandInterface cut1=\"6.0\" cut2=\"8.0\" cut3=\"10.0\" cut4=\"12.0\" design=\"true\" name=\"ligand_interface\"/>\n", "\t</TASKOPERATIONS>\n", "\t<PROTOCOLS/>\n", "</ROSETTASCRIPTS>\n", "\u001b[0mcore.scoring.ScoreFunctionFactory: {0} \u001b[0mSCOREFUNCTION: \u001b[32mref2015\u001b[0m\n", "\u001b[0mcore.scoring.etable: {0} \u001b[0mStarting energy table calculation\n", "\u001b[0mcore.scoring.etable: {0} \u001b[0msmooth_etable: changing atr/rep split to bottom of energy well\n", "\u001b[0mcore.scoring.etable: {0} \u001b[0msmooth_etable: spline smoothing lj etables (maxdis = 6)\n", "\u001b[0mcore.scoring.etable: {0} \u001b[0msmooth_etable: spline smoothing solvation etables (max_dis = 6)\n", "\u001b[0mcore.scoring.etable: {0} \u001b[0mFinished calculating energy tables.\n", "\u001b[0mbasic.io.database: {0} \u001b[0mDatabase file opened: scoring/score_functions/PairEPotential/pdb_pair_stats_fine\n", "\u001b[0mbasic.io.database: {0} \u001b[0mDatabase file opened: scoring/score_functions/InterchainPotential/interchain_env_log.txt\n", "\u001b[0mbasic.io.database: {0} \u001b[0mDatabase file opened: scoring/score_functions/InterchainPotential/interchain_pair_log.txt\n", "\u001b[0mbasic.io.database: {0} \u001b[0mDatabase file opened: scoring/score_functions/EnvPairPotential/env_log.txt\n", "\u001b[0mbasic.io.database: {0} \u001b[0mDatabase file opened: scoring/score_functions/EnvPairPotential/cbeta_den.txt\n", "\u001b[0mbasic.io.database: {0} \u001b[0mDatabase file opened: scoring/score_functions/EnvPairPotential/pair_log.txt\n", "\u001b[0mbasic.io.database: {0} \u001b[0mDatabase file opened: scoring/score_functions/EnvPairPotential/cenpack_log.txt\n", "\u001b[0mcore.scoring.ramachandran: {0} \u001b[0mshapovalov_lib::shap_rama_smooth_level of 4( aka highest_smooth ) got activated.\n", "\u001b[0mbasic.io.database: {0} \u001b[0mDatabase file opened: scoring/score_functions/rama/shapovalov/kappa25/all.ramaProb\n", "\u001b[0mbasic.io.database: {0} \u001b[0mDatabase file opened: scoring/score_functions/rama/flat/avg_L_rama.dat\n", "\u001b[0mcore.scoring.ramachandran: {0} \u001b[0mReading custom Ramachandran table from scoring/score_functions/rama/flat/avg_L_rama.dat.\n", "\u001b[0mbasic.io.database: {0} \u001b[0mDatabase file opened: scoring/score_functions/rama/flat/sym_all_rama.dat\n", "\u001b[0mcore.scoring.ramachandran: {0} \u001b[0mReading custom Ramachandran table from scoring/score_functions/rama/flat/sym_all_rama.dat.\n", "\u001b[0mbasic.io.database: {0} \u001b[0mDatabase file opened: scoring/score_functions/rama/flat/sym_G_rama.dat\n", "\u001b[0mcore.scoring.ramachandran: {0} \u001b[0mReading custom Ramachandran table from scoring/score_functions/rama/flat/sym_G_rama.dat.\n", "\u001b[0mbasic.io.database: {0} \u001b[0mDatabase file opened: scoring/score_functions/rama/flat/sym_P_rama.dat\n", "\u001b[0mcore.scoring.ramachandran: {0} \u001b[0mReading custom Ramachandran table from scoring/score_functions/rama/flat/sym_P_rama.dat.\n", "\u001b[0mbasic.io.database: {0} \u001b[0mDatabase file opened: scoring/score_functions/rama/flat/avg_L_rama_str.dat\n", "\u001b[0mcore.scoring.ramachandran: {0} \u001b[0mReading custom Ramachandran table from scoring/score_functions/rama/flat/avg_L_rama_str.dat.\n", "\u001b[0mbasic.io.database: {0} \u001b[0mDatabase file opened: scoring/score_functions/rama/flat/sym_all_rama_str.dat\n", "\u001b[0mcore.scoring.ramachandran: {0} \u001b[0mReading custom Ramachandran table from scoring/score_functions/rama/flat/sym_all_rama_str.dat.\n", "\u001b[0mbasic.io.database: {0} \u001b[0mDatabase file opened: scoring/score_functions/rama/flat/sym_G_rama_str.dat\n", "\u001b[0mcore.scoring.ramachandran: {0} \u001b[0mReading custom Ramachandran table from scoring/score_functions/rama/flat/sym_G_rama_str.dat.\n", "\u001b[0mbasic.io.database: {0} \u001b[0mDatabase file opened: scoring/score_functions/rama/flat/sym_P_rama_str.dat\n", "\u001b[0mcore.scoring.ramachandran: {0} \u001b[0mReading custom Ramachandran table from scoring/score_functions/rama/flat/sym_P_rama_str.dat.\n", "\u001b[0mprotocols.jd2.parser.TaskOperationLoader: {0} \u001b[0mDefined TaskOperation named \"ligand_interface\" of type DetectProteinLigandInterface\n", "\u001b[0mprotocols.rosetta_scripts.ParsedProtocol: {0} \u001b[0mParsedProtocol mover with the following settings\n", "\u001b[0mprotocols.enzdes.EnzdesTaskOperations: {0} \u001b[0mChoosing the following residues as targets for detecting interface: 318+\n", "\u001b[0mprotocols.enzdes.EnzdesTaskOperations: {0} \u001b[0mDesign Interface: detected 21 design-shell residues and 46 repack-shell residues, shell sizes cut1-4 used were 6 8 10 12\n", "\u001b[0mprotocols.enzdes.EnzdesTaskOperations: {0} \u001b[0mDesign-shell Residues(pose-numbering): 48+49+50+51+70+72+73+75+76+77+96+119+121+136+137+178+203+206+208+222+224+\n", "\u001b[0mprotocols.enzdes.EnzdesTaskOperations: {0} \u001b[0mRepack-shell Residues(pose-numbering): 46+52+53+68+69+71+74+78+79+95+120+122+123+134+135+151+177+179+180+196+200+201+202+204+205+207+215+216+217+218+219+223+225+226+231+232+233+234+271+292+295+296+299+300+303+318+\n", "\u001b[0mprotocols.enzdes.EnzdesTaskOperations: {0} \u001b[0mFinal Design Shell Residues: 48, 49, 50, 51, 70, 72, 73, 75, 76, 77, 96, 119, 121, 136, 137, 178, 203, 206, 208, 222, 224,\n", "\u001b[0mprotocols.enzdes.EnzdesTaskOperations: {0} \u001b[0mFinal Repack Shell Residues: 46, 48, 49, 50, 51, 52, 53, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 95, 96, 119, 120, 121, 122, 123, 134, 135, 136, 137, 151, 177, 178, 179, 180, 196, 200, 201, 202, 203, 204, 205, 206, 207, 208, 215, 216, 217, 218, 219, 222, 223, 224, 225, 226, 231, 232, 233, 234, 271, 292, 295, 296, 299, 300, 303, 318,\n", "#Packer_Task\n", "\n", "Threads to request: ALL AVAILABLE\n", "\n", "resid\tpack?\tdesign?\tallowed_aas\n", "1\tFALSE\tFALSE\t\n", "2\tFALSE\tFALSE\t\n", "3\tFALSE\tFALSE\t\n", "4\tFALSE\tFALSE\t\n", "5\tFALSE\tFALSE\t\n", "6\tFALSE\tFALSE\t\n", "7\tFALSE\tFALSE\t\n", "8\tFALSE\tFALSE\t\n", "9\tFALSE\tFALSE\t\n", "10\tFALSE\tFALSE\t\n", "11\tFALSE\tFALSE\t\n", "12\tFALSE\tFALSE\t\n", "13\tFALSE\tFALSE\t\n", "14\tFALSE\tFALSE\t\n", "15\tFALSE\tFALSE\t\n", "16\tFALSE\tFALSE\t\n", "17\tFALSE\tFALSE\t\n", "18\tFALSE\tFALSE\t\n", "19\tFALSE\tFALSE\t\n", "20\tFALSE\tFALSE\t\n", "21\tFALSE\tFALSE\t\n", "22\tFALSE\tFALSE\t\n", "23\tFALSE\tFALSE\t\n", "24\tFALSE\tFALSE\t\n", "25\tFALSE\tFALSE\t\n", "26\tFALSE\tFALSE\t\n", "27\tFALSE\tFALSE\t\n", "28\tFALSE\tFALSE\t\n", "29\tFALSE\tFALSE\t\n", "30\tFALSE\tFALSE\t\n", "31\tFALSE\tFALSE\t\n", "32\tFALSE\tFALSE\t\n", "33\tFALSE\tFALSE\t\n", "34\tFALSE\tFALSE\t\n", "35\tFALSE\tFALSE\t\n", "36\tFALSE\tFALSE\t\n", "37\tFALSE\tFALSE\t\n", "38\tFALSE\tFALSE\t\n", "39\tFALSE\tFALSE\t\n", "40\tFALSE\tFALSE\t\n", "41\tFALSE\tFALSE\t\n", "42\tFALSE\tFALSE\t\n", "43\tFALSE\tFALSE\t\n", "44\tFALSE\tFALSE\t\n", "45\tFALSE\tFALSE\t\n", "46\tTRUE\tFALSE\tLEU\n", "47\tFALSE\tFALSE\t\n", "48\tTRUE\tTRUE\tALA,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "49\tTRUE\tTRUE\tALA,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "50\tTRUE\tTRUE\tALA,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "51\tTRUE\tTRUE\tALA,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "52\tTRUE\tFALSE\tVAL\n", "53\tTRUE\tFALSE\tSER\n", "54\tFALSE\tFALSE\t\n", "55\tFALSE\tFALSE\t\n", "56\tFALSE\tFALSE\t\n", "57\tFALSE\tFALSE\t\n", "58\tFALSE\tFALSE\t\n", "59\tFALSE\tFALSE\t\n", "60\tFALSE\tFALSE\t\n", "61\tFALSE\tFALSE\t\n", "62\tFALSE\tFALSE\t\n", "63\tFALSE\tFALSE\t\n", "64\tFALSE\tFALSE\t\n", "65\tFALSE\tFALSE\t\n", "66\tFALSE\tFALSE\t\n", "67\tFALSE\tFALSE\t\n", "68\tTRUE\tFALSE\tVAL\n", "69\tTRUE\tFALSE\tVAL\n", "70\tTRUE\tTRUE\tALA,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "71\tTRUE\tFALSE\tGLU\n", "72\tTRUE\tTRUE\tALA,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "73\tTRUE\tTRUE\tALA,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "74\tTRUE\tFALSE\tASP\n", "75\tTRUE\tTRUE\tALA,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "76\tTRUE\tTRUE\tALA,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "77\tTRUE\tTRUE\tALA,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "78\tTRUE\tFALSE\tPHE\n", "79\tTRUE\tFALSE\tMET\n", "80\tFALSE\tFALSE\t\n", "81\tFALSE\tFALSE\t\n", "82\tFALSE\tFALSE\t\n", "83\tFALSE\tFALSE\t\n", "84\tFALSE\tFALSE\t\n", "85\tFALSE\tFALSE\t\n", "86\tFALSE\tFALSE\t\n", "87\tFALSE\tFALSE\t\n", "88\tFALSE\tFALSE\t\n", "89\tFALSE\tFALSE\t\n", "90\tFALSE\tFALSE\t\n", "91\tFALSE\tFALSE\t\n", "92\tFALSE\tFALSE\t\n", "93\tFALSE\tFALSE\t\n", "94\tFALSE\tFALSE\t\n", "95\tTRUE\tFALSE\tASP\n", "96\tTRUE\tTRUE\tALA,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "97\tFALSE\tFALSE\t\n", "98\tFALSE\tFALSE\t\n", "99\tFALSE\tFALSE\t\n", "100\tFALSE\tFALSE\t\n", "101\tFALSE\tFALSE\t\n", "102\tFALSE\tFALSE\t\n", "103\tFALSE\tFALSE\t\n", "104\tFALSE\tFALSE\t\n", "105\tFALSE\tFALSE\t\n", "106\tFALSE\tFALSE\t\n", "107\tFALSE\tFALSE\t\n", "108\tFALSE\tFALSE\t\n", "109\tFALSE\tFALSE\t\n", "110\tFALSE\tFALSE\t\n", "111\tFALSE\tFALSE\t\n", "112\tFALSE\tFALSE\t\n", "113\tFALSE\tFALSE\t\n", "114\tFALSE\tFALSE\t\n", "115\tFALSE\tFALSE\t\n", "116\tFALSE\tFALSE\t\n", "117\tFALSE\tFALSE\t\n", "118\tFALSE\tFALSE\t\n", "119\tTRUE\tTRUE\tALA,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "120\tTRUE\tFALSE\tGLY\n", "121\tTRUE\tTRUE\tALA,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "122\tTRUE\tFALSE\tLEU\n", "123\tTRUE\tFALSE\tCYS\n", "124\tFALSE\tFALSE\t\n", "125\tFALSE\tFALSE\t\n", "126\tFALSE\tFALSE\t\n", "127\tFALSE\tFALSE\t\n", "128\tFALSE\tFALSE\t\n", "129\tFALSE\tFALSE\t\n", "130\tFALSE\tFALSE\t\n", "131\tFALSE\tFALSE\t\n", "132\tFALSE\tFALSE\t\n", "133\tFALSE\tFALSE\t\n", "134\tTRUE\tFALSE\tVAL\n", "135\tTRUE\tFALSE\tLEU\n", "136\tTRUE\tTRUE\tALA,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "137\tTRUE\tTRUE\tALA,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "138\tFALSE\tFALSE\t\n", "139\tFALSE\tFALSE\t\n", "140\tFALSE\tFALSE\t\n", "141\tFALSE\tFALSE\t\n", "142\tFALSE\tFALSE\t\n", "143\tFALSE\tFALSE\t\n", "144\tFALSE\tFALSE\t\n", "145\tFALSE\tFALSE\t\n", "146\tFALSE\tFALSE\t\n", "147\tFALSE\tFALSE\t\n", "148\tFALSE\tFALSE\t\n", "149\tFALSE\tFALSE\t\n", "150\tFALSE\tFALSE\t\n", "151\tTRUE\tFALSE\tLEU\n", "152\tFALSE\tFALSE\t\n", "153\tFALSE\tFALSE\t\n", "154\tFALSE\tFALSE\t\n", "155\tFALSE\tFALSE\t\n", "156\tFALSE\tFALSE\t\n", "157\tFALSE\tFALSE\t\n", "158\tFALSE\tFALSE\t\n", "159\tFALSE\tFALSE\t\n", "160\tFALSE\tFALSE\t\n", "161\tFALSE\tFALSE\t\n", "162\tFALSE\tFALSE\t\n", "163\tFALSE\tFALSE\t\n", "164\tFALSE\tFALSE\t\n", "165\tFALSE\tFALSE\t\n", "166\tFALSE\tFALSE\t\n", "167\tFALSE\tFALSE\t\n", "168\tFALSE\tFALSE\t\n", "169\tFALSE\tFALSE\t\n", "170\tFALSE\tFALSE\t\n", "171\tFALSE\tFALSE\t\n", "172\tFALSE\tFALSE\t\n", "173\tFALSE\tFALSE\t\n", "174\tFALSE\tFALSE\t\n", "175\tFALSE\tFALSE\t\n", "176\tFALSE\tFALSE\t\n", "177\tTRUE\tFALSE\tTYR\n", "178\tTRUE\tTRUE\tALA,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "179\tTRUE\tFALSE\tGLU\n", "180\tTRUE\tFALSE\tTRP\n", "181\tFALSE\tFALSE\t\n", "182\tFALSE\tFALSE\t\n", "183\tFALSE\tFALSE\t\n", "184\tFALSE\tFALSE\t\n", "185\tFALSE\tFALSE\t\n", "186\tFALSE\tFALSE\t\n", "187\tFALSE\tFALSE\t\n", "188\tFALSE\tFALSE\t\n", "189\tFALSE\tFALSE\t\n", "190\tFALSE\tFALSE\t\n", "191\tFALSE\tFALSE\t\n", "192\tFALSE\tFALSE\t\n", "193\tFALSE\tFALSE\t\n", "194\tFALSE\tFALSE\t\n", "195\tFALSE\tFALSE\t\n", "196\tTRUE\tFALSE\tALA\n", "197\tFALSE\tFALSE\t\n", "198\tFALSE\tFALSE\t\n", "199\tFALSE\tFALSE\t\n", "200\tTRUE\tFALSE\tTYR\n", "201\tTRUE\tFALSE\tHIS,HIS_D\n", "202\tTRUE\tFALSE\tTHR\n", "203\tTRUE\tTRUE\tALA,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "204\tTRUE\tFALSE\tGLY\n", "205\tTRUE\tFALSE\tLEU\n", "206\tTRUE\tTRUE\tALA,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "207\tTRUE\tFALSE\tILE\n", "208\tTRUE\tTRUE\tALA,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "209\tFALSE\tFALSE\t\n", "210\tFALSE\tFALSE\t\n", "211\tFALSE\tFALSE\t\n", "212\tFALSE\tFALSE\t\n", "213\tFALSE\tFALSE\t\n", "214\tFALSE\tFALSE\t\n", "215\tTRUE\tFALSE\tILE\n", "216\tTRUE\tFALSE\tTYR\n", "217\tTRUE\tFALSE\tGLY\n", "218\tTRUE\tFALSE\tARG\n", "219\tTRUE\tFALSE\tASN\n", "220\tFALSE\tFALSE\t\n", "221\tFALSE\tFALSE\t\n", "222\tTRUE\tTRUE\tALA,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "223\tTRUE\tFALSE\tPHE\n", "224\tTRUE\tTRUE\tALA,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "225\tTRUE\tFALSE\tLEU\n", "226\tTRUE\tFALSE\tLYS\n", "227\tFALSE\tFALSE\t\n", "228\tFALSE\tFALSE\t\n", "229\tFALSE\tFALSE\t\n", "230\tFALSE\tFALSE\t\n", "231\tTRUE\tFALSE\tHIS,HIS_D\n", "232\tTRUE\tFALSE\tTHR\n", "233\tTRUE\tFALSE\tILE\n", "234\tTRUE\tFALSE\tASP\n", "235\tFALSE\tFALSE\t\n", "236\tFALSE\tFALSE\t\n", "237\tFALSE\tFALSE\t\n", "238\tFALSE\tFALSE\t\n", "239\tFALSE\tFALSE\t\n", "240\tFALSE\tFALSE\t\n", "241\tFALSE\tFALSE\t\n", "242\tFALSE\tFALSE\t\n", "243\tFALSE\tFALSE\t\n", "244\tFALSE\tFALSE\t\n", "245\tFALSE\tFALSE\t\n", "246\tFALSE\tFALSE\t\n", "247\tFALSE\tFALSE\t\n", "248\tFALSE\tFALSE\t\n", "249\tFALSE\tFALSE\t\n", "250\tFALSE\tFALSE\t\n", "251\tFALSE\tFALSE\t\n", "252\tFALSE\tFALSE\t\n", "253\tFALSE\tFALSE\t\n", "254\tFALSE\tFALSE\t\n", "255\tFALSE\tFALSE\t\n", "256\tFALSE\tFALSE\t\n", "257\tFALSE\tFALSE\t\n", "258\tFALSE\tFALSE\t\n", "259\tFALSE\tFALSE\t\n", "260\tFALSE\tFALSE\t\n", "261\tFALSE\tFALSE\t\n", "262\tFALSE\tFALSE\t\n", "263\tFALSE\tFALSE\t\n", "264\tFALSE\tFALSE\t\n", "265\tFALSE\tFALSE\t\n", "266\tFALSE\tFALSE\t\n", "267\tFALSE\tFALSE\t\n", "268\tFALSE\tFALSE\t\n", "269\tFALSE\tFALSE\t\n", "270\tFALSE\tFALSE\t\n", "271\tTRUE\tFALSE\tGLU\n", "272\tFALSE\tFALSE\t\n", "273\tFALSE\tFALSE\t\n", "274\tFALSE\tFALSE\t\n", "275\tFALSE\tFALSE\t\n", "276\tFALSE\tFALSE\t\n", "277\tFALSE\tFALSE\t\n", "278\tFALSE\tFALSE\t\n", "279\tFALSE\tFALSE\t\n", "280\tFALSE\tFALSE\t\n", "281\tFALSE\tFALSE\t\n", "282\tFALSE\tFALSE\t\n", "283\tFALSE\tFALSE\t\n", "284\tFALSE\tFALSE\t\n", "285\tFALSE\tFALSE\t\n", "286\tFALSE\tFALSE\t\n", "287\tFALSE\tFALSE\t\n", "288\tFALSE\tFALSE\t\n", "289\tFALSE\tFALSE\t\n", "290\tFALSE\tFALSE\t\n", "291\tFALSE\tFALSE\t\n", "292\tTRUE\tFALSE\tASN\n", "293\tFALSE\tFALSE\t\n", "294\tFALSE\tFALSE\t\n", "295\tTRUE\tFALSE\tLEU\n", "296\tTRUE\tFALSE\tTHR\n", "297\tFALSE\tFALSE\t\n", "298\tFALSE\tFALSE\t\n", "299\tTRUE\tFALSE\tLYS\n", "300\tTRUE\tFALSE\tTHR\n", "301\tFALSE\tFALSE\t\n", "302\tFALSE\tFALSE\t\n", "303\tTRUE\tFALSE\tASN\n", "304\tFALSE\tFALSE\t\n", "305\tFALSE\tFALSE\t\n", "306\tFALSE\tFALSE\t\n", "307\tFALSE\tFALSE\t\n", "308\tFALSE\tFALSE\t\n", "309\tFALSE\tFALSE\t\n", "310\tFALSE\tFALSE\t\n", "311\tFALSE\tFALSE\t\n", "312\tFALSE\tFALSE\t\n", "313\tFALSE\tFALSE\t\n", "314\tFALSE\tFALSE\t\n", "315\tFALSE\tFALSE\t\n", "316\tFALSE\tFALSE\t\n", "317\tFALSE\tFALSE\t\n", "318\tTRUE\tFALSE\tRGU:UpperRNA:5PrimePackTriPhos\n", "\n" ] } ], "source": [ "from pyrosetta.rosetta.protocols import rosetta_scripts\n", "# ligand pose;\n", "init('-ignore_unrecognized_res false')\n", "ligand_complex_pose = pose_from_pdb('./data/1ckn.pdb')\n", "\n", "# pick selection;\n", "xml = rosetta_scripts.XmlObjects.create_from_string('''\n", "<TASKOPERATIONS>\n", " <DetectProteinLigandInterface name=\"ligand_interface\" cut1=\"6.0\" cut2=\"8.0\" cut3=\"10.0\" cut4=\"12.0\"\n", " design=\"true\"/>\n", "</TASKOPERATIONS>\n", "''')\n", "ligand_design = xml.get_task_operation('ligand_interface')\n", "\n", "# 将TaskOperations加载至TaskFactory中\n", "tf = TaskFactory()\n", "tf.push_back(ligand_design)\n", "\n", "# 生成PackerTask\n", "packer_task = tf.create_task_and_apply_taskoperations(ligand_complex_pose)\n", "print(packer_task)" ] }, { "cell_type": "markdown", "id": "151693fe", "metadata": {}, "source": [ "#### 3. ProteinInterfaceDesign\n", "该Operation只关注蛋白-蛋白PPI界面上的残基设置(默认8A),非界面处的残基将会被设置为no_repack。并且默认会排除氨基酸设计为C, G, P三种不利的氨基酸。" ] }, { "cell_type": "code", "execution_count": 31, "id": "84b886a4", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\u001b[0mcore.import_pose.import_pose: {0} \u001b[0mFile './data/6yek.pdb' automatically determined to be of type PDB\n", "\u001b[0mcore.conformation.Conformation: {0} \u001b[0m\u001b[1m[ WARNING ]\u001b[0m missing heavyatom: OXT on residue ALA:CtermProteinFull 24\n", "\u001b[0mcore.conformation.Conformation: {0} \u001b[0m\u001b[1m[ WARNING ]\u001b[0m missing heavyatom: OXT on residue ALA:CtermProteinFull 48\n", "PDB file name: ./data/6yek.pdb\n", " Pose Range Chain PDB Range | #Residues #Atoms\n", "\n", "0001 -- 0024 A 0300 -- 0323 | 0024 residues; 00396 atoms\n", "0025 -- 0048 B 0300 -- 0323 | 0024 residues; 00396 atoms\n", " TOTAL | 0048 residues; 00792 atoms\n", "\n" ] } ], "source": [ "from pyrosetta.rosetta.protocols.task_operations import ProteinInterfaceDesignOperation\n", "# 加载一个dimmer的coil coil结构:\n", "interface_pose = pose_from_pdb('./data/6yek.pdb')\n", "print(interface_pose.pdb_info()) # 查看链信息" ] }, { "cell_type": "code", "execution_count": 32, "id": "4a293115", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "#Packer_Task\n", "\n", "Threads to request: ALL AVAILABLE\n", "\n", "resid\tpack?\tdesign?\tallowed_aas\n", "1\tFALSE\tFALSE\t\n", "2\tTRUE\tTRUE\tALA,ASP,GLU,PHE,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "3\tTRUE\tTRUE\tALA,ASP,GLU,PHE,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "4\tFALSE\tFALSE\t\n", "5\tTRUE\tTRUE\tALA,ASP,GLU,PHE,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "6\tTRUE\tTRUE\tALA,ASP,GLU,PHE,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "7\tTRUE\tTRUE\tALA,ASP,GLU,PHE,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "8\tFALSE\tFALSE\t\n", "9\tTRUE\tTRUE\tALA,ASP,GLU,PHE,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "10\tTRUE\tTRUE\tALA,ASP,GLU,PHE,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "11\tFALSE\tFALSE\t\n", "12\tTRUE\tTRUE\tALA,ASP,GLU,PHE,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "13\tTRUE\tTRUE\tALA,ASP,GLU,PHE,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "14\tFALSE\tFALSE\t\n", "15\tFALSE\tFALSE\t\n", "16\tTRUE\tTRUE\tALA,ASP,GLU,PHE,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "17\tTRUE\tTRUE\tALA,ASP,GLU,PHE,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "18\tFALSE\tFALSE\t\n", "19\tTRUE\tTRUE\tALA,ASP,GLU,PHE,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "20\tTRUE\tTRUE\tALA,ASP,GLU,PHE,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "21\tFALSE\tFALSE\t\n", "22\tFALSE\tFALSE\t\n", "23\tTRUE\tTRUE\tALA,ASP,GLU,PHE,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "24\tTRUE\tTRUE\tALA:CtermProteinFull,ASP:CtermProteinFull,GLU:CtermProteinFull,PHE:CtermProteinFull,HIS:CtermProteinFull,HIS_D:CtermProteinFull,ILE:CtermProteinFull,LYS:CtermProteinFull,LEU:CtermProteinFull,MET:CtermProteinFull,ASN:CtermProteinFull,GLN:CtermProteinFull,ARG:CtermProteinFull,SER:CtermProteinFull,THR:CtermProteinFull,VAL:CtermProteinFull,TRP:CtermProteinFull,TYR:CtermProteinFull\n", "25\tFALSE\tFALSE\t\n", "26\tTRUE\tFALSE\tLEU\n", "27\tTRUE\tFALSE\tLYS\n", "28\tFALSE\tFALSE\t\n", "29\tTRUE\tFALSE\tGLN\n", "30\tTRUE\tFALSE\tALA\n", "31\tFALSE\tFALSE\t\n", "32\tFALSE\tFALSE\t\n", "33\tTRUE\tFALSE\tTYR\n", "34\tTRUE\tFALSE\tLYS\n", "35\tFALSE\tFALSE\t\n", "36\tTRUE\tFALSE\tASP\n", "37\tTRUE\tFALSE\tPHE\n", "38\tFALSE\tFALSE\t\n", "39\tFALSE\tFALSE\t\n", "40\tTRUE\tFALSE\tGLU\n", "41\tTRUE\tFALSE\tARG\n", "42\tFALSE\tFALSE\t\n", "43\tTRUE\tFALSE\tALA\n", "44\tTRUE\tFALSE\tARG\n", "45\tFALSE\tFALSE\t\n", "46\tFALSE\tFALSE\t\n", "47\tTRUE\tFALSE\tLEU\n", "48\tTRUE\tFALSE\tALA:CtermProteinFull\n", "\n" ] } ], "source": [ "# 此案例以chain1可以被设计,chain2只能repacking作为逻辑。\n", "interface_design = ProteinInterfaceDesignOperation()\n", "interface_design.jump(1) # jump点设置.之前的认定为chain1,之后的为chain2。2条链以上需要设置!\n", "interface_design.interface_distance_cutoff(8.0)\n", "interface_design.repack_chain1(True) # 是否允许chain1 repack\n", "interface_design.repack_chain2(True) # 是否允许chain2 repack\n", "interface_design.design_chain1(True) # 是否允许chain1 design\n", "interface_design.design_chain2(False) # 是否允许chain design\n", "interface_design.allow_all_aas(False) # allow all amino acids to be designed at all positions, do not exclude C, G, P\n", "\n", "# 将TaskOperations加载至TaskFactory中\n", "pack_tf = TaskFactory()\n", "pack_tf.push_back(interface_design)\n", "\n", "# 生成PackerTask\n", "packer_task = pack_tf.create_task_and_apply_taskoperations(interface_pose)\n", "print(packer_task)" ] }, { "cell_type": "markdown", "id": "504fe4f1", "metadata": {}, "source": [ "#### 4. RestrictToInterface\n", "根据jump点和截断半径的设置,将蛋白-蛋白界面进行design,非界面区全部设置为no_repack。如果需要控制其中的自由度,还需要引入其他的TaskOperations,没有ProteinInterfaceDesign自定义程度高。" ] }, { "cell_type": "code", "execution_count": 33, "id": "e7b36d78", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "#Packer_Task\n", "\n", "Threads to request: ALL AVAILABLE\n", "\n", "resid\tpack?\tdesign?\tallowed_aas\n", "1\tFALSE\tFALSE\t\n", "2\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "3\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "4\tFALSE\tFALSE\t\n", "5\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "6\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "7\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "8\tFALSE\tFALSE\t\n", "9\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "10\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "11\tFALSE\tFALSE\t\n", "12\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "13\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "14\tFALSE\tFALSE\t\n", "15\tFALSE\tFALSE\t\n", "16\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "17\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "18\tFALSE\tFALSE\t\n", "19\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "20\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "21\tFALSE\tFALSE\t\n", "22\tFALSE\tFALSE\t\n", "23\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "24\tTRUE\tTRUE\tALA:CtermProteinFull,CYS:CtermProteinFull,ASP:CtermProteinFull,GLU:CtermProteinFull,PHE:CtermProteinFull,GLY:CtermProteinFull,HIS:CtermProteinFull,HIS_D:CtermProteinFull,ILE:CtermProteinFull,LYS:CtermProteinFull,LEU:CtermProteinFull,MET:CtermProteinFull,ASN:CtermProteinFull,PRO:CtermProteinFull,GLN:CtermProteinFull,ARG:CtermProteinFull,SER:CtermProteinFull,THR:CtermProteinFull,VAL:CtermProteinFull,TRP:CtermProteinFull,TYR:CtermProteinFull\n", "25\tFALSE\tFALSE\t\n", "26\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "27\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "28\tFALSE\tFALSE\t\n", "29\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "30\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "31\tFALSE\tFALSE\t\n", "32\tFALSE\tFALSE\t\n", "33\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "34\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "35\tFALSE\tFALSE\t\n", "36\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "37\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "38\tFALSE\tFALSE\t\n", "39\tFALSE\tFALSE\t\n", "40\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "41\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "42\tFALSE\tFALSE\t\n", "43\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "44\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "45\tFALSE\tFALSE\t\n", "46\tFALSE\tFALSE\t\n", "47\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "48\tTRUE\tTRUE\tALA:CtermProteinFull,CYS:CtermProteinFull,ASP:CtermProteinFull,GLU:CtermProteinFull,PHE:CtermProteinFull,GLY:CtermProteinFull,HIS:CtermProteinFull,HIS_D:CtermProteinFull,ILE:CtermProteinFull,LYS:CtermProteinFull,LEU:CtermProteinFull,MET:CtermProteinFull,ASN:CtermProteinFull,PRO:CtermProteinFull,GLN:CtermProteinFull,ARG:CtermProteinFull,SER:CtermProteinFull,THR:CtermProteinFull,VAL:CtermProteinFull,TRP:CtermProteinFull,TYR:CtermProteinFull\n", "\n" ] } ], "source": [ "from pyrosetta.rosetta.protocols.simple_task_operations import RestrictToInterface\n", "Design_interface = RestrictToInterface(rb_jump_in=1, distance_in=8)\n", "\n", "# 将TaskOperations加载至TaskFactory中\n", "pack_tf = TaskFactory()\n", "pack_tf.push_back(Design_interface)\n", "\n", "# 生成PackerTask\n", "packer_task = pack_tf.create_task_and_apply_taskoperations(interface_pose)\n", "print(packer_task)" ] }, { "cell_type": "markdown", "id": "225e067b", "metadata": {}, "source": [ "#### 5. RestrictToInterfaceVectorOperation\n", "使用向量法计算界面。首先根据CB_dist_cutoff的距离判断出一个大致的shell区域,然后根据遍历每个残基侧链原子与其他氨基酸的原子距离,确认是否都小于nearby_atom_cutoff,如果满足条件,那么这些都是interface的残基。如果剩余的残基没有通过第一个标准,将使用第二个标准进行判断,计算残基的CA-CB原子向量以及CB原子与Interface上其他原子CB的向量(CB-CB),这两个向量的夹角如何小于vector_angle_cutoff。那么这些残基也是Interface上的残基,并且这些两个向量的距离不得大于vector_dist_cutoff。\n", "\n", "- CB_dist_cutoff: CB-CB距离(range:8.0~15.0)\n", "- nearby_atom_cutoff: CA-CB距离(range:4.0~8.0)\n", "- vector_angle_cutoff: CA-CB、CB-CB向量的点乘. 向量的角度截断(range:60~90)\n", "- vector_dist_cutoff: CA-CB、CB-CB向量距离的限制 (range:7.0~12.0)" ] }, { "cell_type": "code", "execution_count": 34, "id": "3490cded", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "#Packer_Task\n", "\n", "Threads to request: ALL AVAILABLE\n", "\n", "resid\tpack?\tdesign?\tallowed_aas\n", "1\tFALSE\tFALSE\t\n", "2\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "3\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "4\tFALSE\tFALSE\t\n", "5\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "6\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "7\tFALSE\tFALSE\t\n", "8\tFALSE\tFALSE\t\n", "9\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "10\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "11\tFALSE\tFALSE\t\n", "12\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "13\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "14\tFALSE\tFALSE\t\n", "15\tFALSE\tFALSE\t\n", "16\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "17\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "18\tFALSE\tFALSE\t\n", "19\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "20\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "21\tFALSE\tFALSE\t\n", "22\tFALSE\tFALSE\t\n", "23\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "24\tTRUE\tTRUE\tALA:CtermProteinFull,CYS:CtermProteinFull,ASP:CtermProteinFull,GLU:CtermProteinFull,PHE:CtermProteinFull,GLY:CtermProteinFull,HIS:CtermProteinFull,HIS_D:CtermProteinFull,ILE:CtermProteinFull,LYS:CtermProteinFull,LEU:CtermProteinFull,MET:CtermProteinFull,ASN:CtermProteinFull,PRO:CtermProteinFull,GLN:CtermProteinFull,ARG:CtermProteinFull,SER:CtermProteinFull,THR:CtermProteinFull,VAL:CtermProteinFull,TRP:CtermProteinFull,TYR:CtermProteinFull\n", "25\tFALSE\tFALSE\t\n", "26\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "27\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "28\tFALSE\tFALSE\t\n", "29\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "30\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "31\tFALSE\tFALSE\t\n", "32\tFALSE\tFALSE\t\n", "33\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "34\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "35\tFALSE\tFALSE\t\n", "36\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "37\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "38\tFALSE\tFALSE\t\n", "39\tFALSE\tFALSE\t\n", "40\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "41\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "42\tFALSE\tFALSE\t\n", "43\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "44\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "45\tFALSE\tFALSE\t\n", "46\tFALSE\tFALSE\t\n", "47\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "48\tTRUE\tTRUE\tALA:CtermProteinFull,CYS:CtermProteinFull,ASP:CtermProteinFull,GLU:CtermProteinFull,PHE:CtermProteinFull,GLY:CtermProteinFull,HIS:CtermProteinFull,HIS_D:CtermProteinFull,ILE:CtermProteinFull,LYS:CtermProteinFull,LEU:CtermProteinFull,MET:CtermProteinFull,ASN:CtermProteinFull,PRO:CtermProteinFull,GLN:CtermProteinFull,ARG:CtermProteinFull,SER:CtermProteinFull,THR:CtermProteinFull,VAL:CtermProteinFull,TRP:CtermProteinFull,TYR:CtermProteinFull\n", "\n" ] } ], "source": [ "from pyrosetta.rosetta.protocols.task_operations import RestrictToInterfaceVectorOperation\n", "# 定义参数:\n", "lower_chain_id = 1\n", "upper_chain_id = 2\n", "CB_dist_cutoff = 8.0\n", "nearby_atom_cutoff = 5.0\n", "vector_angle_cutoff = 75\n", "vector_dist_cutoff = 9.0\n", "include_all_water = False\n", "restrict_to_interface = RestrictToInterfaceVectorOperation(lower_chain_id, upper_chain_id, CB_dist_cutoff, nearby_atom_cutoff,\n", " vector_angle_cutoff, vector_dist_cutoff, include_all_water)\n", "\n", "# 将TaskOperations加载至TaskFactory中\n", "pack_tf = TaskFactory()\n", "pack_tf.push_back(restrict_to_interface)\n", "\n", "# 生成PackerTask\n", "packer_task = pack_tf.create_task_and_apply_taskoperations(interface_pose)\n", "print(packer_task)" ] }, { "cell_type": "markdown", "id": "4f1ba33d", "metadata": {}, "source": [ "### 2.1.4 Input-based design\n", "\n", "输入依赖的TaskOperations大多和序列比对有关。" ] }, { "cell_type": "markdown", "id": "68c56299", "metadata": {}, "source": [ "#### 1. AlignedThread\n", "\n", "使用经过比对的序列作为输入,与同源家族中的序列进行比对,gap区域、保守的区域设置为no_repack,并将比对上的区域的序列替换为同源序列的氨基酸。" ] }, { "cell_type": "code", "execution_count": 35, "id": "b877da78", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'DELQKWVEQAERNG'" ] }, "execution_count": 35, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# 目前pose的序列\n", "pose.sequence()" ] }, { "cell_type": "markdown", "id": "d4859bb7", "metadata": {}, "source": [ "制作一个假的aligned.fatsa:\n", "```\n", "> pose\n", "DELQKWVEQAERNG\n", "> fake_homology\n", "DELQKLKKQAEQNG\n", "```" ] }, { "cell_type": "code", "execution_count": 36, "id": "9ad94f08", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\u001b[0mprotocols.TaskOperations.AlignedThreadOperation: {0} \u001b[0mtemplate seq:\n", "DELQKWVEQAERNG\n", "query seq:\n", "DELQKLKKQAEQNGDELQKMKKQAEQNGDELQKMKKQAEQNG\n", "\u001b[0mprotocols.TaskOperations.AlignedThreadOperation: {0} \u001b[0msequence for threading: \n", "DELQKLKKQAEQNG\n", "#Packer_Task\n", "\n", "Threads to request: ALL AVAILABLE\n", "\n", "resid\tpack?\tdesign?\tallowed_aas\n", "1\tTRUE\tFALSE\tASP:NtermProteinFull\n", "2\tTRUE\tFALSE\tGLU\n", "3\tTRUE\tFALSE\tLEU\n", "4\tTRUE\tFALSE\tGLN\n", "5\tTRUE\tFALSE\tLYS\n", "6\tTRUE\tTRUE\tLEU\n", "7\tTRUE\tTRUE\tLYS\n", "8\tTRUE\tTRUE\tLYS\n", "9\tTRUE\tFALSE\tGLN\n", "10\tTRUE\tFALSE\tALA\n", "11\tTRUE\tFALSE\tGLU\n", "12\tTRUE\tTRUE\tGLN\n", "13\tTRUE\tFALSE\tASN\n", "14\tTRUE\tFALSE\tGLY:CtermProteinFull\n", "\n" ] } ], "source": [ "from pyrosetta.rosetta.protocols.task_operations import AlignedThreadOperation\n", "Aligned = AlignedThreadOperation()\n", "Aligned.alignment_file('./data/align.fasta') # 仅支持fasta文件\n", "Aligned.query_name('fake_homology') # 比对文件中的query序列的代号,指同源序列的名字\n", "Aligned.template_name('pose') # 比对文件中的template序列的代号,应该要和输入的pose一致\n", "Aligned.start_res(1) # 确定从哪个氨基酸开始比对\n", "\n", "# 将TaskOperations加载至TaskFactory中\n", "pack_tf = TaskFactory()\n", "pack_tf.push_back(Aligned)\n", "\n", "# 生成PackerTask\n", "packer_task = pack_tf.create_task_and_apply_taskoperations(pose)\n", "print(packer_task)" ] }, { "cell_type": "markdown", "id": "f9784ecf", "metadata": {}, "source": [ "#### 2. RestrictNativeResidues\n", "将现有的pose与ref_pose(对照)进行比对(并且两个pose的长度必须一致!),根据序列一致性,将ref和native pose中保守的氨基酸位点,设置为repack或Design." ] }, { "cell_type": "code", "execution_count": 37, "id": "62d0f916", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\u001b[0mcore.import_pose.import_pose: {0} \u001b[0mFile './data/helix_ref.pdb' automatically determined to be of type PDB\n", "\u001b[0mcore.io.pose_from_sfr.PoseFromSFRBuilder: {0} \u001b[0m\u001b[1m[ WARNING ]\u001b[0m discarding 2 atoms at position 3 in file ./data/helix_ref.pdb. Best match rsd_type: MET\n", "\u001b[0mcore.io.pose_from_sfr.PoseFromSFRBuilder: {0} \u001b[0m\u001b[1m[ WARNING ]\u001b[0m discarding 1 atoms at position 6 in file ./data/helix_ref.pdb. Best match rsd_type: ASN\n", "\u001b[0mcore.io.pose_from_sfr.PoseFromSFRBuilder: {0} \u001b[0m\u001b[1m[ WARNING ]\u001b[0m discarding 4 atoms at position 9 in file ./data/helix_ref.pdb. Best match rsd_type: HIS\n", "\u001b[0mcore.io.pose_from_sfr.PoseFromSFRBuilder: {0} \u001b[0m\u001b[1m[ WARNING ]\u001b[0m discarding 1 atoms at position 13 in file ./data/helix_ref.pdb. Best match rsd_type: LEU\n", "\u001b[0mcore.conformation.Conformation: {0} \u001b[0m\u001b[1m[ WARNING ]\u001b[0m missing heavyatom: OXT on residue GLY:CtermProteinFull 14\n", "\u001b[0mcore.io.pose_from_sfr.PoseFromSFRBuilder: {0} \u001b[0m\u001b[1m[ WARNING ]\u001b[0m can't find pose atom for file-residue 3 atom 3HB (trying to store temperature in PDBInfo)\n", "\u001b[0mcore.io.pose_from_sfr.PoseFromSFRBuilder: {0} \u001b[0m\u001b[1m[ WARNING ]\u001b[0m can't find pose atom for file-residue 3 atom 3HG (trying to store temperature in PDBInfo)\n", "\u001b[0mcore.io.pose_from_sfr.PoseFromSFRBuilder: {0} \u001b[0m\u001b[1m[ WARNING ]\u001b[0m can't find pose atom for file-residue 6 atom 3HB (trying to store temperature in PDBInfo)\n", "\u001b[0mcore.io.pose_from_sfr.PoseFromSFRBuilder: {0} \u001b[0m\u001b[1m[ WARNING ]\u001b[0m can't find pose atom for file-residue 9 atom 1HE (trying to store temperature in PDBInfo)\n", "\u001b[0mcore.io.pose_from_sfr.PoseFromSFRBuilder: {0} \u001b[0m\u001b[1m[ WARNING ]\u001b[0m can't find pose atom for file-residue 9 atom 2HD (trying to store temperature in PDBInfo)\n", "\u001b[0mcore.io.pose_from_sfr.PoseFromSFRBuilder: {0} \u001b[0m\u001b[1m[ WARNING ]\u001b[0m can't find pose atom for file-residue 9 atom 2HE (trying to store temperature in PDBInfo)\n", "\u001b[0mcore.io.pose_from_sfr.PoseFromSFRBuilder: {0} \u001b[0m\u001b[1m[ WARNING ]\u001b[0m can't find pose atom for file-residue 9 atom 3HB (trying to store temperature in PDBInfo)\n", "\u001b[0mcore.io.pose_from_sfr.PoseFromSFRBuilder: {0} \u001b[0m\u001b[1m[ WARNING ]\u001b[0m can't find pose atom for file-residue 13 atom 3HB (trying to store temperature in PDBInfo)\n" ] } ], "source": [ "# 读取ref_pose\n", "ref_pose = pose_from_pdb('./data/helix_ref.pdb')" ] }, { "cell_type": "code", "execution_count": 38, "id": "37b2a12d", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "DEMQKNVEHAERLG\n", "DELQKWVEQAERNG\n" ] } ], "source": [ "# 发现3,5,8,12位点序列有差异。\n", "print(ref_pose.sequence())\n", "print(pose.sequence())" ] }, { "cell_type": "code", "execution_count": 39, "id": "04b88134", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\u001b[0mprotocols.task_operations.RestrictNativeResiduesOperation: {0} \u001b[0m4 non-native, designable residues found in pose\n", "#Packer_Task\n", "\n", "Threads to request: ALL AVAILABLE\n", "\n", "resid\tpack?\tdesign?\tallowed_aas\n", "1\tFALSE\tFALSE\t\n", "2\tFALSE\tFALSE\t\n", "3\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "4\tFALSE\tFALSE\t\n", "5\tFALSE\tFALSE\t\n", "6\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "7\tFALSE\tFALSE\t\n", "8\tFALSE\tFALSE\t\n", "9\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "10\tFALSE\tFALSE\t\n", "11\tFALSE\tFALSE\t\n", "12\tFALSE\tFALSE\t\n", "13\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "14\tFALSE\tFALSE\t\n", "\n" ] } ], "source": [ "from pyrosetta.rosetta.protocols.task_operations import RestrictNativeResiduesOperation\n", "no_pack_to_native = RestrictNativeResiduesOperation()\n", "no_pack_to_native.reference_pose(ref_pose)\n", "no_pack_to_native.prevent_repacking(1) # 1 = 仅设计非保守区段,其余设为no_repack. 0 = 设计非保守区段,其余设置为repack.\n", "\n", "# 将TaskOperations加载至TaskFactory中\n", "pack_tf = TaskFactory()\n", "pack_tf.push_back(no_pack_to_native)\n", "\n", "# 生成PackerTask\n", "packer_task = pack_tf.create_task_and_apply_taskoperations(pose)\n", "print(packer_task)" ] }, { "cell_type": "code", "execution_count": 40, "id": "40f7f977", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\u001b[0mprotocols.task_operations.RestrictNativeResiduesOperation: {0} \u001b[0m4 non-native, designable residues found in pose\n", "#Packer_Task\n", "\n", "Threads to request: ALL AVAILABLE\n", "\n", "resid\tpack?\tdesign?\tallowed_aas\n", "1\tTRUE\tFALSE\tASP:NtermProteinFull\n", "2\tTRUE\tFALSE\tGLU\n", "3\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "4\tTRUE\tFALSE\tGLN\n", "5\tTRUE\tFALSE\tLYS\n", "6\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "7\tTRUE\tFALSE\tVAL\n", "8\tTRUE\tFALSE\tGLU\n", "9\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "10\tTRUE\tFALSE\tALA\n", "11\tTRUE\tFALSE\tGLU\n", "12\tTRUE\tFALSE\tARG\n", "13\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "14\tTRUE\tFALSE\tGLY:CtermProteinFull\n", "\n" ] } ], "source": [ "from pyrosetta.rosetta.protocols.task_operations import RestrictNativeResiduesOperation\n", "no_pack_to_native = RestrictNativeResiduesOperation()\n", "no_pack_to_native.reference_pose(ref_pose)\n", "no_pack_to_native.prevent_repacking(0) # 1 = 仅设计非保守区段,其余设为no_repack. 0 = 设计非保守区段,其余设置为repack.\n", "\n", "# 将TaskOperations加载至TaskFactory中\n", "pack_tf = TaskFactory()\n", "pack_tf.push_back(no_pack_to_native)\n", "\n", "# 生成PackerTask\n", "packer_task = pack_tf.create_task_and_apply_taskoperations(pose)\n", "print(packer_task)" ] }, { "cell_type": "markdown", "id": "afdd4eee", "metadata": {}, "source": [ "#### 3. RestrictIdentitiesAtAlignedPositions\n", "与输入的PDB结构序列进行比对,只有比对得上的位点得到保留,其他的位置可以进行Design,不要求PDB结构之间长度完全相同,但需要指定design aligment的区域不能大于pose的本身长度。" ] }, { "cell_type": "code", "execution_count": 41, "id": "c11c1078", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\u001b[0mcore.import_pose.import_pose: {0} \u001b[0mFile './data/three_helix_pose.pdb' automatically determined to be of type PDB\n", "\u001b[0mcore.import_pose.import_pose: {0} \u001b[0mFile './data/homo1.pdb' automatically determined to be of type PDB\n" ] } ], "source": [ "pose1 = pose_from_pdb('./data/three_helix_pose.pdb')\n", "pose2 = pose_from_pdb('./data/homo1.pdb') # ref pose;" ] }, { "cell_type": "markdown", "id": "3128b81f", "metadata": {}, "source": [ "<center><img src=\"./img/structure_align.png\" width = \"700\" height = \"200\" align=center /></center>\n", "(图片来源: 晶泰科技团队)" ] }, { "cell_type": "code", "execution_count": 42, "id": "b82cf6cc", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\u001b[0mcore.import_pose.import_pose: {0} \u001b[0mFile './data/homo1.pdb' automatically determined to be of type PDB\n", "\u001b[0mprotocols.TaskOperations.RestrictIdentitiesAtAlignedPositionsOperation: {0} \u001b[0mResidue nearest is: 1\n", "\u001b[0mprotocols.TaskOperations.RestrictIdentitiesAtAlignedPositionsOperation: {0} \u001b[0mResidue nearest is: ASP1\n", "\u001b[0mprotocols.TaskOperations.RestrictIdentitiesAtAlignedPositionsOperation: {0} \u001b[0mResidue nearest is: 2\n", "\u001b[0mprotocols.TaskOperations.RestrictIdentitiesAtAlignedPositionsOperation: {0} \u001b[0mResidue nearest is: GLU2\n", "\u001b[0mprotocols.TaskOperations.RestrictIdentitiesAtAlignedPositionsOperation: {0} \u001b[0mResidue nearest is: 3\n", "\u001b[0mprotocols.TaskOperations.RestrictIdentitiesAtAlignedPositionsOperation: {0} \u001b[0mResidue nearest is: LEU3\n", "\u001b[0mprotocols.TaskOperations.RestrictIdentitiesAtAlignedPositionsOperation: {0} \u001b[0mResidue nearest is: 3\n", "\u001b[0mprotocols.TaskOperations.RestrictIdentitiesAtAlignedPositionsOperation: {0} \u001b[0mResidue nearest is: GLN4\n", "\u001b[0mprotocols.TaskOperations.RestrictIdentitiesAtAlignedPositionsOperation: {0} \u001b[0mResidue nearest is: 5\n", "\u001b[0mprotocols.TaskOperations.RestrictIdentitiesAtAlignedPositionsOperation: {0} \u001b[0mResidue nearest is: LYS5\n", "\u001b[0mprotocols.TaskOperations.RestrictIdentitiesAtAlignedPositionsOperation: {0} \u001b[0mResidue nearest is: 6\n", "\u001b[0mprotocols.TaskOperations.RestrictIdentitiesAtAlignedPositionsOperation: {0} \u001b[0mResidue nearest is: TRP6\n", "\u001b[0mprotocols.TaskOperations.RestrictIdentitiesAtAlignedPositionsOperation: {0} \u001b[0mResidue nearest is: 23\n", "\u001b[0mprotocols.TaskOperations.RestrictIdentitiesAtAlignedPositionsOperation: {0} \u001b[0mResidue nearest is: VAL7\n", "\u001b[0mprotocols.TaskOperations.RestrictIdentitiesAtAlignedPositionsOperation: {0} \u001b[0mResidue nearest is: 7\n", "\u001b[0mprotocols.TaskOperations.RestrictIdentitiesAtAlignedPositionsOperation: {0} \u001b[0mResidue nearest is: GLU8\n", "\u001b[0mprotocols.TaskOperations.RestrictIdentitiesAtAlignedPositionsOperation: {0} \u001b[0mResidue nearest is: 10\n", "\u001b[0mprotocols.TaskOperations.RestrictIdentitiesAtAlignedPositionsOperation: {0} \u001b[0mResidue nearest is: GLN9\n", "\u001b[0mprotocols.TaskOperations.RestrictIdentitiesAtAlignedPositionsOperation: {0} \u001b[0m\u001b[1m[ WARNING ]\u001b[0m could not find a residue near to 10\n", "\u001b[0mprotocols.TaskOperations.RestrictIdentitiesAtAlignedPositionsOperation: {0} \u001b[0mResidue nearest is: 20\n", "\u001b[0mprotocols.TaskOperations.RestrictIdentitiesAtAlignedPositionsOperation: {0} \u001b[0mResidue nearest is: GLU11\n", "\u001b[0mprotocols.TaskOperations.RestrictIdentitiesAtAlignedPositionsOperation: {0} \u001b[0m\u001b[1m[ WARNING ]\u001b[0m could not find a residue near to 12\n", "\u001b[0mprotocols.TaskOperations.RestrictIdentitiesAtAlignedPositionsOperation: {0} \u001b[0mResidue nearest is: 16\n", "\u001b[0mprotocols.TaskOperations.RestrictIdentitiesAtAlignedPositionsOperation: {0} \u001b[0mResidue nearest is: ASN13\n", "\u001b[0mprotocols.TaskOperations.RestrictIdentitiesAtAlignedPositionsOperation: {0} \u001b[0mResidue nearest is: 16\n", "\u001b[0mprotocols.TaskOperations.RestrictIdentitiesAtAlignedPositionsOperation: {0} \u001b[0mResidue nearest is: GLY14\n", "\u001b[0mprotocols.TaskOperations.RestrictIdentitiesAtAlignedPositionsOperation: {0} \u001b[0m\u001b[1m[ WARNING ]\u001b[0m could not find a residue near to 15\n", "\u001b[0mprotocols.TaskOperations.RestrictIdentitiesAtAlignedPositionsOperation: {0} \u001b[0m\u001b[1m[ WARNING ]\u001b[0m could not find a residue near to 16\n", "\u001b[0mprotocols.TaskOperations.RestrictIdentitiesAtAlignedPositionsOperation: {0} \u001b[0m\u001b[1m[ WARNING ]\u001b[0m could not find a residue near to 17\n", "\u001b[0mprotocols.TaskOperations.RestrictIdentitiesAtAlignedPositionsOperation: {0} \u001b[0m\u001b[1m[ WARNING ]\u001b[0m could not find a residue near to 18\n", "\u001b[0mprotocols.TaskOperations.RestrictIdentitiesAtAlignedPositionsOperation: {0} \u001b[0m\u001b[1m[ WARNING ]\u001b[0m could not find a residue near to 19\n", "\u001b[0mprotocols.TaskOperations.RestrictIdentitiesAtAlignedPositionsOperation: {0} \u001b[0m\u001b[1m[ WARNING ]\u001b[0m could not find a residue near to 20\n", "\u001b[0mprotocols.TaskOperations.RestrictIdentitiesAtAlignedPositionsOperation: {0} \u001b[0m\u001b[1m[ WARNING ]\u001b[0m could not find a residue near to 21\n", "\u001b[0mprotocols.TaskOperations.RestrictIdentitiesAtAlignedPositionsOperation: {0} \u001b[0m\u001b[1m[ WARNING ]\u001b[0m could not find a residue near to 22\n", "\u001b[0mprotocols.TaskOperations.RestrictIdentitiesAtAlignedPositionsOperation: {0} \u001b[0m\u001b[1m[ WARNING ]\u001b[0m could not find a residue near to 23\n", "\u001b[0mprotocols.TaskOperations.RestrictIdentitiesAtAlignedPositionsOperation: {0} \u001b[0m\u001b[1m[ WARNING ]\u001b[0m could not find a residue near to 24\n", "\u001b[0mprotocols.TaskOperations.RestrictIdentitiesAtAlignedPositionsOperation: {0} \u001b[0m\u001b[1m[ WARNING ]\u001b[0m could not find a residue near to 25\n", "\u001b[0mprotocols.TaskOperations.RestrictIdentitiesAtAlignedPositionsOperation: {0} \u001b[0m\u001b[1m[ WARNING ]\u001b[0m could not find a residue near to 26\n", "\u001b[0mprotocols.TaskOperations.RestrictIdentitiesAtAlignedPositionsOperation: {0} \u001b[0m\u001b[1m[ WARNING ]\u001b[0m could not find a residue near to 27\n", "\u001b[0mprotocols.TaskOperations.RestrictIdentitiesAtAlignedPositionsOperation: {0} \u001b[0m\u001b[1m[ WARNING ]\u001b[0m could not find a residue near to 28\n", "\u001b[0mprotocols.TaskOperations.RestrictIdentitiesAtAlignedPositionsOperation: {0} \u001b[0m\u001b[1m[ WARNING ]\u001b[0m could not find a residue near to 29\n", "\u001b[0mprotocols.TaskOperations.RestrictIdentitiesAtAlignedPositionsOperation: {0} \u001b[0m\u001b[1m[ WARNING ]\u001b[0m could not find a residue near to 30\n", "\u001b[0mprotocols.TaskOperations.RestrictIdentitiesAtAlignedPositionsOperation: {0} \u001b[0m\u001b[1m[ WARNING ]\u001b[0m could not find a residue near to 31\n", "\u001b[0mprotocols.TaskOperations.RestrictIdentitiesAtAlignedPositionsOperation: {0} \u001b[0m\u001b[1m[ WARNING ]\u001b[0m could not find a residue near to 32\n", "\u001b[0mprotocols.TaskOperations.RestrictIdentitiesAtAlignedPositionsOperation: {0} \u001b[0m\u001b[1m[ WARNING ]\u001b[0m could not find a residue near to 33\n", "\u001b[0mprotocols.TaskOperations.RestrictIdentitiesAtAlignedPositionsOperation: {0} \u001b[0m\u001b[1m[ WARNING ]\u001b[0m could not find a residue near to 34\n", "\u001b[0mprotocols.TaskOperations.RestrictIdentitiesAtAlignedPositionsOperation: {0} \u001b[0mResidue nearest is: 28\n", "\u001b[0mprotocols.TaskOperations.RestrictIdentitiesAtAlignedPositionsOperation: {0} \u001b[0mResidue nearest is: ARG35\n", "\u001b[0mprotocols.TaskOperations.RestrictIdentitiesAtAlignedPositionsOperation: {0} \u001b[0mResidue nearest is: 25\n", "\u001b[0mprotocols.TaskOperations.RestrictIdentitiesAtAlignedPositionsOperation: {0} \u001b[0mResidue nearest is: PHE36\n", "\u001b[0mprotocols.TaskOperations.RestrictIdentitiesAtAlignedPositionsOperation: {0} \u001b[0m\u001b[1m[ WARNING ]\u001b[0m could not find a residue near to 37\n", "\u001b[0mprotocols.TaskOperations.RestrictIdentitiesAtAlignedPositionsOperation: {0} \u001b[0m\u001b[1m[ WARNING ]\u001b[0m could not find a residue near to 38\n", "\u001b[0mprotocols.TaskOperations.RestrictIdentitiesAtAlignedPositionsOperation: {0} \u001b[0m\u001b[1m[ WARNING ]\u001b[0m could not find a residue near to 39\n", "\u001b[0mprotocols.TaskOperations.RestrictIdentitiesAtAlignedPositionsOperation: {0} \u001b[0m\u001b[1m[ WARNING ]\u001b[0m could not find a residue near to 40\n", "\u001b[0mprotocols.TaskOperations.RestrictIdentitiesAtAlignedPositionsOperation: {0} \u001b[0m\u001b[1m[ WARNING ]\u001b[0m could not find a residue near to 41\n", "\u001b[0mprotocols.TaskOperations.RestrictIdentitiesAtAlignedPositionsOperation: {0} \u001b[0m\u001b[1m[ WARNING ]\u001b[0m could not find a residue near to 42\n", "#Packer_Task\n", "\n", "Threads to request: ALL AVAILABLE\n", "\n", "resid\tpack?\tdesign?\tallowed_aas\n", "1\tTRUE\tTRUE\tASP:NtermProteinFull\n", "2\tTRUE\tFALSE\tGLU\n", "3\tFALSE\tFALSE\t\n", "4\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "5\tTRUE\tTRUE\tLYS\n", "6\tTRUE\tTRUE\tTRP\n", "7\tTRUE\tTRUE\tGLU\n", "8\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "9\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "10\tTRUE\tTRUE\tGLN\n", "11\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "12\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "13\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "14\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "15\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "16\tFALSE\tFALSE\t\n", "17\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "18\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "19\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "20\tTRUE\tTRUE\tGLU\n", "21\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "22\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "23\tTRUE\tTRUE\tVAL\n", "24\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "25\tTRUE\tTRUE\tPHE\n", "26\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "27\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "28\tTRUE\tTRUE\tARG\n", "29\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "30\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "31\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "32\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "33\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "34\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "35\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "36\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "37\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "38\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "39\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "40\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "41\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "42\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "43\tTRUE\tTRUE\tALA:CtermProteinFull,CYS:CtermProteinFull,ASP:CtermProteinFull,GLU:CtermProteinFull,PHE:CtermProteinFull,GLY:CtermProteinFull,HIS:CtermProteinFull,HIS_D:CtermProteinFull,ILE:CtermProteinFull,LYS:CtermProteinFull,LEU:CtermProteinFull,MET:CtermProteinFull,ASN:CtermProteinFull,PRO:CtermProteinFull,GLN:CtermProteinFull,ARG:CtermProteinFull,SER:CtermProteinFull,THR:CtermProteinFull,VAL:CtermProteinFull,TRP:CtermProteinFull,TYR:CtermProteinFull\n", "\n" ] } ], "source": [ "from pyrosetta.rosetta.protocols.task_operations import RestrictIdentitiesAtAlignedPositionsOperation\n", "aligned_position_design = RestrictIdentitiesAtAlignedPositionsOperation()\n", "aligned_position_design.source_pose('./data/homo1.pdb') # pose1=ref_pose\n", "aligned_position_design.chain(1) # 设定pose_ref中第几条链被用于比对\n", "aligned_position_design.design_only_target_residues(False) # 允许reapckshell中氨基酸进行repack. 默认False\n", "aligned_position_design.prevent_repacking(False) # 是否不允许repack?\n", "\n", "# 当ref_pose和pose中不等长时,需要指定在哪个范围内进行alignment。\n", "vector1 = pyrosetta.rosetta.utility.vector1_unsigned_long()\n", "for i in range(1, pose1.total_residue()):\n", " vector1.append(i)\n", "aligned_position_design.res_ids(vector1)\n", "\n", "# 将TaskOperations加载至TaskFactory中\n", "pack_tf = TaskFactory()\n", "pack_tf.push_back(aligned_position_design)\n", "\n", "# 生成PackerTask\n", "packer_task = pack_tf.create_task_and_apply_taskoperations(pose1)\n", "print(packer_task)" ] }, { "cell_type": "markdown", "id": "c48c410d", "metadata": {}, "source": [ "#### 4. SeqprofConsensus\n", "根据PSSM文件来定义序列设计的自由度。PSSM文件可以使用PSIBLAST工具和MSA比对文件来生成。\n", "此处依然使用伪造的MSA做示例:\n", "\n", "msa.fasta内容如下:\n", "```\n", ">pose\n", "DELQKWVEQAERNG\n", ">fake_homology1\n", "DELQKLKKQAEQNG\n", ">fake_homology2\n", "DELQKMKKQAEQNG\n", ">fake_homology3\n", "DELQKMKKQAEQNV\n", ">fake_homology4\n", "DELQKMMDQAEQNV\n", ">fake_homology5\n", "DELKDMMDQAEQNV\n", "```" ] }, { "cell_type": "markdown", "id": "14ba3ad6", "metadata": {}, "source": [ "生成PSSM的命令:(结果文件可在data文件夹下找到)\n", "```\n", "psiblast -subject sequence.fasta -in_msa msa.fasta -out_ascii_pssm output.pssm\n", "```" ] }, { "cell_type": "markdown", "id": "2336dc58", "metadata": {}, "source": [ "SeqprofConsensus自由度控制相关的关键参数:\n", "- filename: PSSM的输入文件名\n", "- min_aa_probability: PSSM score的阈值,只有大于阈值的氨基酸才会被考虑。值越大,需要氨基酸在PSSM中出现的频率越高。\n", "- probability_larger_than_current: 突变氨基酸的频率是否需要比当前Pose中的氨基酸频率高?\n", "- keep_native: 是否保留野生型氨基酸的自由度?" ] }, { "cell_type": "code", "execution_count": 43, "id": "d565a3ca", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\u001b[0mprotocols.rosetta_scripts.RosettaScriptsParser: {0} \u001b[0mGenerating XML Schema for rosetta_scripts...\n", "\u001b[0mprotocols.rosetta_scripts.RosettaScriptsParser: {0} \u001b[0m...done\n", "\u001b[0mprotocols.rosetta_scripts.RosettaScriptsParser: {0} \u001b[0mInitializing schema validator...\n", "\u001b[0mprotocols.rosetta_scripts.RosettaScriptsParser: {0} \u001b[0m...done\n", "\u001b[0mprotocols.rosetta_scripts.RosettaScriptsParser: {0} \u001b[0mValidating input script...\n", "\u001b[0mprotocols.rosetta_scripts.RosettaScriptsParser: {0} \u001b[0m...done\n", "\u001b[0mprotocols.rosetta_scripts.RosettaScriptsParser: {0} \u001b[0mParsed script:\n", "<ROSETTASCRIPTS>\n", "\t<TASKOPERATIONS>\n", "\t\t<SeqprofConsensus convert_scores_to_probabilities=\"false\" filename=\"./data/output.pssm\" keep_native=\"true\" min_aa_probability=\"0.0\" name=\"pssm_design\" probability_larger_than_current=\"1\"/>\n", "\t</TASKOPERATIONS>\n", "\t<PROTOCOLS/>\n", "</ROSETTASCRIPTS>\n", "\u001b[0mcore.scoring.ScoreFunctionFactory: {0} \u001b[0mSCOREFUNCTION: \u001b[32mref2015\u001b[0m\n", "\u001b[0mprotocols.task_operations.SeqprofConsensusOperation: {0} \u001b[0mLoading seqprof from a file named: ./data/output.pssm\n", "\u001b[0mprotocols.jd2.parser.TaskOperationLoader: {0} \u001b[0mDefined TaskOperation named \"pssm_design\" of type SeqprofConsensus\n", "\u001b[0mprotocols.rosetta_scripts.ParsedProtocol: {0} \u001b[0mParsedProtocol mover with the following settings\n", "\u001b[0mprotocols.task_operations.SeqprofConsensusOperation: {0} \u001b[0mPose is NOT--SYMMETRIC!!!\n", "\u001b[0mprotocols.task_operations.SeqprofConsensusOperation: {0} \u001b[0mthe size of sequence profile is: 14\n", "\u001b[0mprotocols.task_operations.SeqprofConsensusOperation: {0} \u001b[0mAdding native identities to allowed identities\n", "\u001b[0mprotocols.task_operations.SeqprofConsensusOperation: {0} \u001b[0mAllowing the following identities:\n", "#Packer_Task\n", "\n", "Threads to request: ALL AVAILABLE\n", "\n", "resid\tpack?\tdesign?\tallowed_aas\n", "1\tTRUE\tFALSE\tASP:NtermProteinFull\n", "2\tTRUE\tFALSE\tGLU\n", "3\tTRUE\tFALSE\tLEU\n", "4\tTRUE\tFALSE\tGLN\n", "5\tTRUE\tFALSE\tLYS\n", "6\tTRUE\tTRUE\tPHE,ILE,LEU,MET,VAL,TRP\n", "7\tTRUE\tTRUE\tGLU,ILE,LYS,LEU,MET,GLN,ARG,VAL\n", "8\tTRUE\tTRUE\tASP,GLU,LYS,ASN,GLN,ARG\n", "9\tTRUE\tFALSE\tGLN\n", "10\tTRUE\tFALSE\tALA\n", "11\tTRUE\tFALSE\tGLU\n", "12\tTRUE\tTRUE\tGLU,LYS,GLN,ARG\n", "13\tTRUE\tFALSE\tASN\n", "14\tTRUE\tFALSE\tGLY:CtermProteinFull\n", "\n" ] } ], "source": [ "# load pssm\n", "from pyrosetta.rosetta.protocols import rosetta_scripts\n", "xml = rosetta_scripts.XmlObjects.create_from_string('''\n", "<TASKOPERATIONS>\n", " <SeqprofConsensus name=\"pssm_design\" \n", " filename=\"./data/output.pssm\" \n", " min_aa_probability=\"0.0\" \n", " probability_larger_than_current=\"1\" \n", " convert_scores_to_probabilities=\"false\" \n", " keep_native=\"true\"/>\n", "</TASKOPERATIONS>\n", "''')\n", "pssm_design = xml.get_task_operation('pssm_design')\n", "\n", "# 将TaskOperations加载至TaskFactory中\n", "pack_tf = TaskFactory()\n", "pack_tf.push_back(pssm_design)\n", "\n", "# 生成PackerTask\n", "packer_task = pack_tf.create_task_and_apply_taskoperations(pose)\n", "print(packer_task)" ] }, { "cell_type": "markdown", "id": "8cfa1f5a", "metadata": {}, "source": [ "#### 5. ThreadSequenceOperation\n", "用于将一个序列“穿针”到一个Pose的所有位点上。" ] }, { "cell_type": "code", "execution_count": 44, "id": "2cbeeb09", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "#Packer_Task\n", "\n", "Threads to request: ALL AVAILABLE\n", "\n", "resid\tpack?\tdesign?\tallowed_aas\n", "1\tTRUE\tTRUE\tASP:NtermProteinFull\n", "2\tTRUE\tFALSE\tGLU\n", "3\tTRUE\tFALSE\tLEU\n", "4\tTRUE\tTRUE\tGLN\n", "5\tTRUE\tTRUE\tLYS\n", "6\tTRUE\tTRUE\tTRP\n", "7\tTRUE\tTRUE\tVAL\n", "8\tTRUE\tTRUE\tGLU\n", "9\tTRUE\tTRUE\tGLN\n", "10\tTRUE\tTRUE\tALA\n", "11\tTRUE\tTRUE\tGLU\n", "12\tTRUE\tTRUE\tARG\n", "13\tTRUE\tTRUE\tASN\n", "14\tTRUE\tTRUE\tGLY\n", "15\tTRUE\tTRUE\tVAL\n", "16\tTRUE\tTRUE\tSER\n", "17\tTRUE\tTRUE\tLEU\n", "18\tTRUE\tFALSE\tGLU\n", "19\tTRUE\tFALSE\tGLU\n", "20\tTRUE\tTRUE\tILE\n", "21\tTRUE\tTRUE\tGLU\n", "22\tTRUE\tFALSE\tLYS\n", "23\tTRUE\tTRUE\tTRP\n", "24\tTRUE\tTRUE\tILE\n", "25\tTRUE\tFALSE\tLYS\n", "26\tTRUE\tFALSE\tLYS\n", "27\tTRUE\tTRUE\tALA\n", "28\tTRUE\tTRUE\tGLY\n", "29\tTRUE\tTRUE\tASP\n", "30\tTRUE\tTRUE\tGLU\n", "31\tTRUE\tFALSE\tGLU\n", "32\tTRUE\tTRUE\tLEU\n", "33\tTRUE\tTRUE\tLEU\n", "34\tTRUE\tFALSE\tLYS\n", "35\tTRUE\tTRUE\tARG\n", "36\tTRUE\tTRUE\tPHE\n", "37\tTRUE\tTRUE\tGLN\n", "38\tTRUE\tTRUE\tLYS\n", "39\tTRUE\tTRUE\tLYS\n", "40\tTRUE\tTRUE\tVAL\n", "41\tTRUE\tFALSE\tLYS\n", "42\tTRUE\tTRUE\tGLU\n", "43\tTRUE\tFALSE\tARG:CtermProteinFull\n", "\n" ] } ], "source": [ "from pyrosetta.rosetta.protocols.task_operations import ThreadSequenceOperation\n", "thread = ThreadSequenceOperation()\n", "thread.target_sequence(pose2.sequence())\n", "\n", "# 将TaskOperations加载至TaskFactory中\n", "pack_tf = TaskFactory()\n", "pack_tf.push_back(thread)\n", "\n", "# 生成PackerTask\n", "packer_task = pack_tf.create_task_and_apply_taskoperations(pose1)\n", "print(packer_task)" ] }, { "cell_type": "markdown", "id": "eb8ab3c7", "metadata": {}, "source": [ "### 2.2 Rotamer Specification" ] }, { "cell_type": "markdown", "id": "e8a8fe9a", "metadata": {}, "source": [ "#### 2.2.1 InteractingRotamerExplosion\n", "增强某一位点的Rotamer采样,如希望在设计所有氨基酸位点时,增强采样那些与第8号残基相互作用能量(two-body)大于-0.5个REU单位的Rotamer" ] }, { "cell_type": "code", "execution_count": 45, "id": "83f9b745", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\u001b[0mprotocols.rosetta_scripts.RosettaScriptsParser: {0} \u001b[0mGenerating XML Schema for rosetta_scripts...\n", "\u001b[0mprotocols.rosetta_scripts.RosettaScriptsParser: {0} \u001b[0m...done\n", "\u001b[0mprotocols.rosetta_scripts.RosettaScriptsParser: {0} \u001b[0mInitializing schema validator...\n", "\u001b[0mprotocols.rosetta_scripts.RosettaScriptsParser: {0} \u001b[0m...done\n", "\u001b[0mprotocols.rosetta_scripts.RosettaScriptsParser: {0} \u001b[0mValidating input script...\n", "\u001b[0mprotocols.rosetta_scripts.RosettaScriptsParser: {0} \u001b[0m...done\n", "\u001b[0mprotocols.rosetta_scripts.RosettaScriptsParser: {0} \u001b[0mParsed script:\n", "<ROSETTASCRIPTS>\n", "\t<TASKOPERATIONS>\n", "\t\t<InteractingRotamerExplosion debug=\"0\" ex_level=\"2\" name=\"rotexpl\" score_cutoff=\"0.5\" target_seqpos=\"10A\"/>\n", "\t</TASKOPERATIONS>\n", "\t<PROTOCOLS/>\n", "</ROSETTASCRIPTS>\n", "\u001b[0mcore.scoring.ScoreFunctionFactory: {0} \u001b[0mSCOREFUNCTION: \u001b[32mref2015\u001b[0m\n", "\u001b[0mprotocols.jd2.parser.TaskOperationLoader: {0} \u001b[0mDefined TaskOperation named \"rotexpl\" of type InteractingRotamerExplosion\n", "\u001b[0mprotocols.rosetta_scripts.ParsedProtocol: {0} \u001b[0mParsedProtocol mover with the following settings\n" ] } ], "source": [ "from pyrosetta.rosetta.protocols import rosetta_scripts\n", "xml = rosetta_scripts.XmlObjects.create_from_string('''\n", "<TASKOPERATIONS>\n", " <InteractingRotamerExplosion name=\"rotexpl\"\n", " ex_level=\"2\" score_cutoff=\"0.5\" target_seqpos=\"10A\" debug=\"0\" />\n", "</TASKOPERATIONS>\n", "''')\n", "rotexpl = xml.get_task_operation('rotexpl')\n", "\n", "# 将TaskOperations加载至TaskFactory中\n", "pack_tf = TaskFactory()\n", "pack_tf.push_back(rotexpl)" ] }, { "cell_type": "markdown", "id": "47605ab7", "metadata": {}, "source": [ "#### 2.2.2 ImportUnboundRotamers\n", "可以用于增强采样输入的Ref PDB结构上的Rotamer。" ] }, { "cell_type": "code", "execution_count": 46, "id": "76f06123", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "PyRosetta-4 2021 [Rosetta PyRosetta4.conda.mac.cxx11thread.serialization.python37.Release 2021.31+release.c7009b3115c22daa9efe2805d9d1ebba08426a54 2021-08-07T10:04:12] retrieved from: http://www.pyrosetta.org\n", "(C) Copyright Rosetta Commons Member Institutions. Created in JHU by Sergey Lyskov and PyRosetta Team.\n", "\u001b[0mcore.init: {0} \u001b[0mChecking for fconfig files in pwd and ./rosetta/flags\n", "\u001b[0mcore.init: {0} \u001b[0mRosetta version: PyRosetta4.conda.mac.cxx11thread.serialization.python37.Release r292 2021.31+release.c7009b3115c c7009b3115c22daa9efe2805d9d1ebba08426a54 http://www.pyrosetta.org 2021-08-07T10:04:12\n", "\u001b[0mcore.init: {0} \u001b[0mcommand: PyRosetta -packing::unboundrot ./data/three_helix_pose.pdb -database /opt/miniconda3/lib/python3.7/site-packages/pyrosetta/database\n", "\u001b[0mbasic.random.init_random_generator: {0} \u001b[0m'RNG device' seed mode, using '/dev/urandom', seed=-732456573 seed_offset=0 real_seed=-732456573 thread_index=0\n", "\u001b[0mbasic.random.init_random_generator: {0} \u001b[0mRandomGenerator:init: Normal mode, seed=-732456573 RG_type=mt19937\n" ] } ], "source": [ "from pyrosetta.rosetta.protocols.task_operations import ImportUnboundRotamersOperation\n", "favor_native_rotamer_ex = ImportUnboundRotamersOperation()\n", "init('-packing::unboundrot ./data/three_helix_pose.pdb')\n", "\n", "# 将TaskOperations加载至TaskFactory中\n", "pack_tf = TaskFactory()\n", "pack_tf.push_back(favor_native_rotamer_ex)" ] }, { "cell_type": "markdown", "id": "28329b9a", "metadata": {}, "source": [ "#### 2.2.3 LimitAromaChi2\n", "\n", "防止在Packer运行中使用PHE、TYR和HIS的那些$\\chi_{2}$角远离90度的Rotamer,因为这些Rotamer是罕见的。因此直接排除\n", "\n", "- include_trp: Trp的能量更加平滑,可以在更广的$\\chi_{2}$角空间出现,因此不推荐约束它。" ] }, { "cell_type": "code", "execution_count": 47, "id": "b0ccbe23", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\u001b[0mprotocols.rosetta_scripts.RosettaScriptsParser: {0} \u001b[0mGenerating XML Schema for rosetta_scripts...\n", "\u001b[0mprotocols.rosetta_scripts.RosettaScriptsParser: {0} \u001b[0m...done\n", "\u001b[0mprotocols.rosetta_scripts.RosettaScriptsParser: {0} \u001b[0mInitializing schema validator...\n", "\u001b[0mprotocols.rosetta_scripts.RosettaScriptsParser: {0} \u001b[0m...done\n", "\u001b[0mprotocols.rosetta_scripts.RosettaScriptsParser: {0} \u001b[0mValidating input script...\n", "\u001b[0mprotocols.rosetta_scripts.RosettaScriptsParser: {0} \u001b[0m...done\n", "\u001b[0mprotocols.rosetta_scripts.RosettaScriptsParser: {0} \u001b[0mParsed script:\n", "<ROSETTASCRIPTS>\n", "\t<TASKOPERATIONS>\n", "\t\t<LimitAromaChi2 chi2max=\"110.0\" chi2min=\"70.0\" include_trp=\"false\" name=\"limit_chi2\"/>\n", "\t</TASKOPERATIONS>\n", "\t<PROTOCOLS/>\n", "</ROSETTASCRIPTS>\n", "\u001b[0mcore.scoring.ScoreFunctionFactory: {0} \u001b[0mSCOREFUNCTION: \u001b[32mref2015\u001b[0m\n", "\u001b[0mprotocols.jd2.parser.TaskOperationLoader: {0} \u001b[0mDefined TaskOperation named \"limit_chi2\" of type LimitAromaChi2\n", "\u001b[0mprotocols.rosetta_scripts.ParsedProtocol: {0} \u001b[0mParsedProtocol mover with the following settings\n" ] } ], "source": [ "from pyrosetta.rosetta.protocols import rosetta_scripts\n", "xml = rosetta_scripts.XmlObjects.create_from_string('''\n", "<TASKOPERATIONS>\n", " <LimitAromaChi2 name=\"limit_chi2\" chi2max=\"110.0\"\n", " chi2min=\"70.0\" include_trp=\"false\" />\n", "</TASKOPERATIONS>\n", "''')\n", "limit_chi2 = xml.get_task_operation('limit_chi2')\n", "\n", "# 将TaskOperations加载至TaskFactory中\n", "pack_tf = TaskFactory()\n", "pack_tf.push_back(limit_chi2)" ] }, { "cell_type": "markdown", "id": "de3ff091", "metadata": {}, "source": [ "#### 2.2.4 SampleRotamersFromPDB\n", "用于约束当前Rotamer采样范围与ref PDB结构中的Rotamer高度相似(如rotamer差异在+/-5度)。" ] }, { "cell_type": "code", "execution_count": 48, "id": "1a5381f5", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "PyRosetta-4 2021 [Rosetta PyRosetta4.conda.mac.cxx11thread.serialization.python37.Release 2021.31+release.c7009b3115c22daa9efe2805d9d1ebba08426a54 2021-08-07T10:04:12] retrieved from: http://www.pyrosetta.org\n", "(C) Copyright Rosetta Commons Member Institutions. Created in JHU by Sergey Lyskov and PyRosetta Team.\n", "\u001b[0mcore.init: {0} \u001b[0mChecking for fconfig files in pwd and ./rosetta/flags\n", "\u001b[0mcore.init: {0} \u001b[0mRosetta version: PyRosetta4.conda.mac.cxx11thread.serialization.python37.Release r292 2021.31+release.c7009b3115c c7009b3115c22daa9efe2805d9d1ebba08426a54 http://www.pyrosetta.org 2021-08-07T10:04:12\n", "\u001b[0mcore.init: {0} \u001b[0mcommand: PyRosetta -packing::unboundrot ./data/three_helix_pose.pdb -database /opt/miniconda3/lib/python3.7/site-packages/pyrosetta/database\n", "\u001b[0mbasic.random.init_random_generator: {0} \u001b[0m'RNG device' seed mode, using '/dev/urandom', seed=-631442782 seed_offset=0 real_seed=-631442782 thread_index=0\n", "\u001b[0mbasic.random.init_random_generator: {0} \u001b[0mRandomGenerator:init: Normal mode, seed=-631442782 RG_type=mt19937\n", "\u001b[0mprotocols.rosetta_scripts.RosettaScriptsParser: {0} \u001b[0mGenerating XML Schema for rosetta_scripts...\n", "\u001b[0mprotocols.rosetta_scripts.RosettaScriptsParser: {0} \u001b[0m...done\n", "\u001b[0mprotocols.rosetta_scripts.RosettaScriptsParser: {0} \u001b[0mInitializing schema validator...\n", "\u001b[0mprotocols.rosetta_scripts.RosettaScriptsParser: {0} \u001b[0m...done\n", "\u001b[0mprotocols.rosetta_scripts.RosettaScriptsParser: {0} \u001b[0mValidating input script...\n", "\u001b[0mprotocols.rosetta_scripts.RosettaScriptsParser: {0} \u001b[0m...done\n", "\u001b[0mprotocols.rosetta_scripts.RosettaScriptsParser: {0} \u001b[0mParsed script:\n", "<ROSETTASCRIPTS>\n", "\t<TASKOPERATIONS>\n", "\t\t<SampleRotamersFromPDB add_rotamer=\"1\" ccd=\"0\" debug=\"0\" name=\"restric_native_ex\"/>\n", "\t</TASKOPERATIONS>\n", "\t<PROTOCOLS/>\n", "</ROSETTASCRIPTS>\n", "\u001b[0mcore.scoring.ScoreFunctionFactory: {0} \u001b[0mSCOREFUNCTION: \u001b[32mref2015\u001b[0m\n", "\u001b[0mprotocols.evaluation.ChiWellRmsdEvaluatorCreator: {0} \u001b[0mEvaluation Creator active ...\n", "\u001b[0mprotocols.jd2.parser.TaskOperationLoader: {0} \u001b[0mDefined TaskOperation named \"restric_native_ex\" of type SampleRotamersFromPDB\n", "\u001b[0mprotocols.rosetta_scripts.ParsedProtocol: {0} \u001b[0mParsedProtocol mover with the following settings\n", "\u001b[0mcore.import_pose.import_pose: {0} \u001b[0mFile './data/three_helix_pose.pdb' automatically determined to be of type PDB\n", "\u001b[0mcore.pack.rotamer_set.SampleRotamersFromPDB_RotamerSetOperation: {0} \u001b[0mAdding rotamers from ./data/three_helix_pose.pdb\n", "\u001b[0mcore.import_pose.import_pose: {0} \u001b[0mFile './data/three_helix_pose.pdb' automatically determined to be of type PDB\n", "#Packer_Task\n", "\n", "Threads to request: ALL AVAILABLE\n", "\n", "resid\tpack?\tdesign?\tallowed_aas\n", "1\tTRUE\tFALSE\tSER:NtermProteinFull\n", "2\tTRUE\tFALSE\tGLU\n", "3\tTRUE\tFALSE\tLEU\n", "4\tTRUE\tFALSE\tGLU\n", "5\tTRUE\tFALSE\tGLU\n", "6\tTRUE\tFALSE\tTHR\n", "7\tTRUE\tFALSE\tLEU\n", "8\tTRUE\tFALSE\tARG\n", "9\tTRUE\tFALSE\tARG\n", "10\tTRUE\tFALSE\tLEU\n", "11\tTRUE\tFALSE\tALA\n", "12\tTRUE\tFALSE\tGLN\n", "13\tTRUE\tFALSE\tTHR\n", "14\tTRUE\tFALSE\tPRO\n", "15\tTRUE\tFALSE\tGLY\n", "16\tTRUE\tFALSE\tALA\n", "17\tTRUE\tFALSE\tSER\n", "18\tTRUE\tFALSE\tGLU\n", "19\tTRUE\tFALSE\tGLU\n", "20\tTRUE\tFALSE\tLEU\n", "21\tTRUE\tFALSE\tLYS\n", "22\tTRUE\tFALSE\tLYS\n", "23\tTRUE\tFALSE\tLEU\n", "24\tTRUE\tFALSE\tVAL\n", "25\tTRUE\tFALSE\tLYS\n", "26\tTRUE\tFALSE\tLYS\n", "27\tTRUE\tFALSE\tILE\n", "28\tTRUE\tFALSE\tASN\n", "29\tTRUE\tFALSE\tASN\n", "30\tTRUE\tFALSE\tPRO\n", "31\tTRUE\tFALSE\tGLU\n", "32\tTRUE\tFALSE\tALA\n", "33\tTRUE\tFALSE\tGLU\n", "34\tTRUE\tFALSE\tLYS\n", "35\tTRUE\tFALSE\tTRP\n", "36\tTRUE\tFALSE\tLEU\n", "37\tTRUE\tFALSE\tARG\n", "38\tTRUE\tFALSE\tGLU\n", "39\tTRUE\tFALSE\tTYR\n", "40\tTRUE\tFALSE\tGLN\n", "41\tTRUE\tFALSE\tLYS\n", "42\tTRUE\tFALSE\tLYS\n", "43\tTRUE\tFALSE\tARG:CtermProteinFull\n", "\n" ] } ], "source": [ "from pyrosetta.rosetta.protocols import rosetta_scripts\n", "from pyrosetta.rosetta.protocols.minimization_packing import PackRotamersMover\n", "\n", "# load native rotamers;\n", "init('-packing::unboundrot ./data/three_helix_pose.pdb')\n", "\n", "xml = rosetta_scripts.XmlObjects.create_from_string('''\n", "<TASKOPERATIONS>\n", " <SampleRotamersFromPDB name=\"restric_native_ex\" add_rotamer=\"1\" debug=\"0\" ccd=\"0\"/>\n", "</TASKOPERATIONS>\n", "''')\n", "restric_native_ex = xml.get_task_operation('restric_native_ex')\n", "\n", "pose1 = pose_from_pdb('./data/three_helix_pose.pdb')\n", "\n", "# 将TaskOperations加载至TaskFactory中\n", "pack_tf = TaskFactory()\n", "pack_tf.push_back(restric_native_ex)\n", "pack_tf.push_back(RestrictToRepacking())\n", "\n", "# 生成PackerTask\n", "packer_task = pack_tf.create_task_and_apply_taskoperations(pose1)\n", "print(packer_task)" ] }, { "cell_type": "markdown", "id": "32e039da", "metadata": {}, "source": [ "#### 2.2.5 PruneBuriedUnsats\n", "消除那些在会导致在结构中引入不饱和极性原子(无法配对产生氢键)的Rotamer。\n", "参数:\n", "- allow_even_trades - Allow residues that satisfy an unsat and create a new unsatisfiable one.\n", "- atomic_depth_probe_radius - Probe radius for atomic depth calculation to determine burial.\n", "- atomic_depth_resolution - Voxel resolution with which to calculate atomic depth.\n", "- atomic_depth_cutoff - Atomic depth at which atoms are considered buried.\n", "- Minimum energy (out of the typical rosetta -2.0) for a hbond to be considered to satisfy a polar." ] }, { "cell_type": "code", "execution_count": 49, "id": "f528f43c", "metadata": {}, "outputs": [], "source": [ "from pyrosetta.rosetta.protocols.task_operations import PruneBuriedUnsatsOperation\n", "prune_unsat = PruneBuriedUnsatsOperation()\n", "prune_unsat.atomic_depth_cutoff(4.5)\n", "prune_unsat.atomic_depth_probe_radius(2.3)\n", "prune_unsat.atomic_depth_resolution(0.5)\n", "prune_unsat.minimum_hbond_energy(-0.2)\n", "\n", "# 将TaskOperations加载至TaskFactory中\n", "pack_tf = TaskFactory()\n", "pack_tf.push_back(prune_unsat)" ] }, { "cell_type": "markdown", "id": "6b609385", "metadata": {}, "source": [ "### 2.3 Packer Behavior Modification\n", "该部分的TaskOperations主要作用于Packer,可以设置一些改变Packer的采样或运行方式。" ] }, { "cell_type": "markdown", "id": "4c77998a", "metadata": {}, "source": [ "#### 2.3.1 ModifyAnnealer\n", "改变Packer模拟退火中的设置,包括:\n", "- high_temp: 起始温度\n", "- low_temp: 终止温度\n", "- disallow_quench: “淬火”即每次都接受低能量的构象,如果希望有更大的Rotamer多样性可以将此关闭。默认启用“淬火”" ] }, { "cell_type": "code", "execution_count": 50, "id": "07159e31", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\u001b[0mprotocols.rosetta_scripts.RosettaScriptsParser: {0} \u001b[0mGenerating XML Schema for rosetta_scripts...\n", "\u001b[0mprotocols.rosetta_scripts.RosettaScriptsParser: {0} \u001b[0m...done\n", "\u001b[0mprotocols.rosetta_scripts.RosettaScriptsParser: {0} \u001b[0mInitializing schema validator...\n", "\u001b[0mprotocols.rosetta_scripts.RosettaScriptsParser: {0} \u001b[0m...done\n", "\u001b[0mprotocols.rosetta_scripts.RosettaScriptsParser: {0} \u001b[0mValidating input script...\n", "\u001b[0mprotocols.rosetta_scripts.RosettaScriptsParser: {0} \u001b[0m...done\n", "\u001b[0mprotocols.rosetta_scripts.RosettaScriptsParser: {0} \u001b[0mParsed script:\n", "<ROSETTASCRIPTS>\n", "\t<TASKOPERATIONS>\n", "\t\t<ModifyAnnealer disallow_quench=\"0\" high_temp=\"100\" low_temp=\"0.3\" name=\"modify_annealer\"/>\n", "\t</TASKOPERATIONS>\n", "\t<PROTOCOLS/>\n", "</ROSETTASCRIPTS>\n", "\u001b[0mcore.scoring.ScoreFunctionFactory: {0} \u001b[0mSCOREFUNCTION: \u001b[32mref2015\u001b[0m\n", "\u001b[0mprotocols.jd2.parser.TaskOperationLoader: {0} \u001b[0mDefined TaskOperation named \"modify_annealer\" of type ModifyAnnealer\n", "\u001b[0mprotocols.rosetta_scripts.ParsedProtocol: {0} \u001b[0mParsedProtocol mover with the following settings\n" ] } ], "source": [ "from pyrosetta.rosetta.protocols import rosetta_scripts\n", "xml = rosetta_scripts.XmlObjects.create_from_string('''\n", "<TASKOPERATIONS>\n", " <ModifyAnnealer name=\"modify_annealer\" high_temp=\"100\" low_temp=\"0.3\" disallow_quench=\"0\"/>\n", "</TASKOPERATIONS>\n", "''')\n", "\n", "modify_annealer = xml.get_task_operation('modify_annealer')\n", "\n", "# # 将TaskOperations加载至TaskFactory中\n", "pack_tf = TaskFactory()\n", "pack_tf.push_back(modify_annealer)" ] }, { "cell_type": "markdown", "id": "a1ec9b43", "metadata": {}, "source": [ "#### 2.3.2 RestrictInteractionGraphThreadsOperation\n", "此TaskOperations可以控制Packer使用的线程数量。默认conda安装的pyrosetta都是单线程编译的,如果需要支持多线程进行Packer的,需要从Rosetta的源代码处从头编译multi-threaded版本的PyRosetta并安装(比较麻烦),当兼容多线程时,合理使用可以加速开发和测试时的速度。" ] }, { "cell_type": "code", "execution_count": 51, "id": "7d286eed", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "PyRosetta-4 2021 [Rosetta PyRosetta4.conda.mac.cxx11thread.serialization.python37.Release 2021.31+release.c7009b3115c22daa9efe2805d9d1ebba08426a54 2021-08-07T10:04:12] retrieved from: http://www.pyrosetta.org\n", "(C) Copyright Rosetta Commons Member Institutions. Created in JHU by Sergey Lyskov and PyRosetta Team.\n", "\u001b[0mcore.init: {0} \u001b[0mChecking for fconfig files in pwd and ./rosetta/flags\n", "\u001b[0mcore.init: {0} \u001b[0mRosetta version: PyRosetta4.conda.mac.cxx11thread.serialization.python37.Release r292 2021.31+release.c7009b3115c c7009b3115c22daa9efe2805d9d1ebba08426a54 http://www.pyrosetta.org 2021-08-07T10:04:12\n", "\u001b[0mcore.init: {0} \u001b[0mcommand: PyRosetta -multithreading:total_threads 16 -multithreading:interaction_graph_threads 16 -database /opt/miniconda3/lib/python3.7/site-packages/pyrosetta/database\n", "\u001b[0mbasic.random.init_random_generator: {0} \u001b[0m'RNG device' seed mode, using '/dev/urandom', seed=-2083723108 seed_offset=0 real_seed=-2083723108 thread_index=0\n", "\u001b[0mbasic.random.init_random_generator: {0} \u001b[0mRandomGenerator:init: Normal mode, seed=-2083723108 RG_type=mt19937\n", "\u001b[0mcore.pack.task.operation.RestrictInteractionGraphThreadsOperation: {0} \u001b[0mConfiguring RestrictInteractionGraphThreadsOperation to allow 8 threads for interaction graph computation.\n", "\u001b[0mcore.import_pose.import_pose: {0} \u001b[0mFile './data/helix.pdb' automatically determined to be of type PDB\n", "\u001b[0mcore.conformation.Conformation: {0} \u001b[0m\u001b[1m[ WARNING ]\u001b[0m missing heavyatom: OXT on residue GLY:CtermProteinFull 14\n", "\u001b[0mcore.pack.pack_rotamers: {0} \u001b[0mbuilt 182 rotamers at 14 positions.\n", "\u001b[0mcore.pack.pack_rotamers: {0} \u001b[0mRequesting 8 threads for interaction graph computation.\n", "\u001b[0mcore.pack.interaction_graph.interaction_graph_factory: {0} \u001b[0mInstantiating DensePDInteractionGraph\n", "\u001b[0mbasic.thread_manager.RosettaThreadPool: {0} \u001b[0m\u001b[1m[ WARNING ]\u001b[0m Warning: 8 threads were requested, but only 1 exist in the RosettaThreadPool.\n", "\u001b[0mcore.pack.rotamer_set.RotamerSets: {0} \u001b[0mCompleted interaction graph pre-calculation in 1 available threads (8 had been requested).\n" ] } ], "source": [ "from pyrosetta.rosetta.core.pack.task.operation import RestrictInteractionGraphThreadsOperation\n", "init('-multithreading:total_threads 16 -multithreading:interaction_graph_threads 16')\n", "\n", "# litmit thread setting;\n", "litmit_thread = RestrictInteractionGraphThreadsOperation()\n", "litmit_thread.set_thread_limit(8)\n", "\n", "# # 将TaskOperations加载至TaskFactory中\n", "pack_tf = TaskFactory()\n", "pack_tf.push_back(litmit_thread)\n", "pack_tf.push_back(RestrictToRepacking())\n", "\n", "# run packer\n", "from pyrosetta.rosetta.protocols.minimization_packing import PackRotamersMover\n", "from pyrosetta import create_score_function\n", "pack_mover = PackRotamersMover()\n", "ref2015 = create_score_function('ref2015')\n", "single_helix_pose = pose_from_pdb('./data/helix.pdb')\n", "\n", "# 不需要导入PackTask,只需要输入TaskFactory即可。\n", "pack_mover.task_factory(pack_tf)\n", "pack_mover.score_function(ref2015)\n", "\n", "# 执行repacking\n", "pack_mover.apply(single_helix_pose)" ] }, { "cell_type": "markdown", "id": "27f13480", "metadata": {}, "source": [ "#### 2.3.3 SetIGTypeOperation\n", "此处TaskOperations可影响InteractionGraph的计算方法,默认有4种方式:\n", "- lin_mem_ig: 使用线性增长的内存机制,近期被计算的Rotamer pairs之间的能量会被重复使用,但是同一种Rotamer pairs之间的能量可能会被重复计算,因为超出一定数量时,相关的记忆就被丢失了。\n", "- lazy_ig: 推迟计算Rotamer pairs之间的能量,直到真正用到时,这样可以大幅减少预计算的量。\n", "- double_lazy_ig: 同时使用lin_mem_ig和double_lazy_ig。\n", "- precompute_ig: 完整计算所有的Rotamer pairs之间的能量。(O(N^2) interaction graph)" ] }, { "cell_type": "code", "execution_count": 52, "id": "4189672c", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\u001b[0mprotocols.rosetta_scripts.RosettaScriptsParser: {0} \u001b[0mGenerating XML Schema for rosetta_scripts...\n", "\u001b[0mprotocols.rosetta_scripts.RosettaScriptsParser: {0} \u001b[0m...done\n", "\u001b[0mprotocols.rosetta_scripts.RosettaScriptsParser: {0} \u001b[0mInitializing schema validator...\n", "\u001b[0mprotocols.rosetta_scripts.RosettaScriptsParser: {0} \u001b[0m...done\n", "\u001b[0mprotocols.rosetta_scripts.RosettaScriptsParser: {0} \u001b[0mValidating input script...\n", "\u001b[0mprotocols.rosetta_scripts.RosettaScriptsParser: {0} \u001b[0m...done\n", "\u001b[0mprotocols.rosetta_scripts.RosettaScriptsParser: {0} \u001b[0mParsed script:\n", "<ROSETTASCRIPTS>\n", "\t<TASKOPERATIONS>\n", "\t\t<SetIGType double_lazy_ig=\"0\" lazy_ig=\"0\" lin_mem_ig=\"1\" name=\"set_ig\" precompute_ig=\"0\"/>\n", "\t</TASKOPERATIONS>\n", "\t<PROTOCOLS/>\n", "</ROSETTASCRIPTS>\n", "\u001b[0mcore.scoring.ScoreFunctionFactory: {0} \u001b[0mSCOREFUNCTION: \u001b[32mref2015\u001b[0m\n", "\u001b[0mprotocols.jd2.parser.TaskOperationLoader: {0} \u001b[0mDefined TaskOperation named \"set_ig\" of type SetIGType\n", "\u001b[0mprotocols.rosetta_scripts.ParsedProtocol: {0} \u001b[0mParsedProtocol mover with the following settings\n" ] } ], "source": [ "from pyrosetta.rosetta.protocols import rosetta_scripts\n", "xml = rosetta_scripts.XmlObjects.create_from_string('''\n", "<TASKOPERATIONS>\n", " <SetIGType name=\"set_ig\" lin_mem_ig=\"1\" lazy_ig=\"0\" double_lazy_ig=\"0\" precompute_ig=\"0\"/>\n", "</TASKOPERATIONS>\n", "''')\n", "\n", "set_ig = xml.get_task_operation('set_ig')\n", "\n", "# # 将TaskOperations加载至TaskFactory中\n", "pack_tf = TaskFactory()\n", "pack_tf.push_back(set_ig)" ] }, { "cell_type": "markdown", "id": "826ba6fd", "metadata": {}, "source": [ "### 2.4 Antibody and CDR Specific Operations\n", "这一部分的TaskOperations是为抗体结构设计定制的,在抗体设计时引用会带来极大的便利性。核心两个部分: 控制CDR如何Design、控制region的Design和repack状态。" ] }, { "cell_type": "markdown", "id": "83ff64e4", "metadata": {}, "source": [ "#### 2.4.1 DisableAntibodyRegionOperation\n", "抗体Pose的Region定义分为CDR区、Framework区、抗原区(如果Pose中是抗体抗原复合物的话)。DisableAntibodyRegionOperation可直接把特定区域的Rotamer自由度闭关或减少。\n", "\n", "参数:\n", "- region可选:AntibodyRegionEnum.antigen_region/AntibodyRegionEnum.cdr_region/AntibodyRegionEnum.framework_region\n", "- disable_packing_and_design: True=norepack, False=allow_pack" ] }, { "cell_type": "code", "execution_count": 53, "id": "9bb2cbf5", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "PyRosetta-4 2021 [Rosetta PyRosetta4.conda.mac.cxx11thread.serialization.python37.Release 2021.31+release.c7009b3115c22daa9efe2805d9d1ebba08426a54 2021-08-07T10:04:12] retrieved from: http://www.pyrosetta.org\n", "(C) Copyright Rosetta Commons Member Institutions. Created in JHU by Sergey Lyskov and PyRosetta Team.\n", "\u001b[0mcore.init: {0} \u001b[0mChecking for fconfig files in pwd and ./rosetta/flags\n", "\u001b[0mcore.init: {0} \u001b[0mRosetta version: PyRosetta4.conda.mac.cxx11thread.serialization.python37.Release r292 2021.31+release.c7009b3115c c7009b3115c22daa9efe2805d9d1ebba08426a54 http://www.pyrosetta.org 2021-08-07T10:04:12\n", "\u001b[0mcore.init: {0} \u001b[0mcommand: PyRosetta -ex1 -ex2 -input_ab_scheme Chothia_Scheme -use_input_sc -database /opt/miniconda3/lib/python3.7/site-packages/pyrosetta/database\n", "\u001b[0mbasic.random.init_random_generator: {0} \u001b[0m'RNG device' seed mode, using '/dev/urandom', seed=-475246036 seed_offset=0 real_seed=-475246036 thread_index=0\n", "\u001b[0mbasic.random.init_random_generator: {0} \u001b[0mRandomGenerator:init: Normal mode, seed=-475246036 RG_type=mt19937\n", "\u001b[0mcore.import_pose.import_pose: {0} \u001b[0mFile './data/7OBF_B.pdb' automatically determined to be of type PDB\n", "\u001b[0mcore.conformation.Conformation: {0} \u001b[0mFound disulfide between residues 21 95\n", "\u001b[0mcore.conformation.Conformation: {0} \u001b[0mcurrent variant for 21 CYS\n", "\u001b[0mcore.conformation.Conformation: {0} \u001b[0mcurrent variant for 95 CYS\n", "\u001b[0mcore.conformation.Conformation: {0} \u001b[0mcurrent variant for 21 CYD\n", "\u001b[0mcore.conformation.Conformation: {0} \u001b[0mcurrent variant for 95 CYD\n", "\u001b[0mbasic.io.database: {0} \u001b[0mDatabase file opened: sampling/antibodies/cluster_center_dihedrals.txt\n", "\u001b[0mprotocols.antibody.AntibodyNumberingParser: {0} \u001b[0mAntibody numbering scheme definitions read successfully\n", "\u001b[0mprotocols.antibody.AntibodyNumberingParser: {0} \u001b[0mAntibody CDR definition read successfully\n", "\u001b[0mantibody.AntibodyInfo: {0} \u001b[0mSuccessfully finished the CDR definition\n", "\u001b[0mantibody.AntibodyInfo: {0} \u001b[0m Could not setup Vl Vh Packing angle for camelid antibody\n", "\u001b[0mantibody.AntibodyInfo: {0} \u001b[0mAC Detecting Camelid CDR H3 Stem Type\n", "\u001b[0mantibody.AntibodyInfo: {0} \u001b[0mAC Finished Detecting Camelid CDR H3 Stem Type: NEUTRAL\n", "\u001b[0mantibody.AntibodyInfo: {0} \u001b[0mSetting up CDR Cluster for H1\n", "\u001b[0mprotocols.antibody.cluster.CDRClusterMatcher: {0} \u001b[0mLength: 13 Omega: TTTTTTTTTTTTT\n", "\u001b[0mantibody.AntibodyInfo: {0} \u001b[0mSetting up CDR Cluster for H2\n", "\u001b[0mprotocols.antibody.cluster.CDRClusterMatcher: {0} \u001b[0mLength: 10 Omega: TTTTTTTTTT\n", "\u001b[0mantibody.AntibodyInfo: {0} \u001b[0mSetting up CDR Cluster for H3\n", "\u001b[0mprotocols.antibody.cluster.CDRClusterMatcher: {0} \u001b[0mLength: 13 Omega: TTTTTTTTTTTTT\n", "#Packer_Task\n", "\n", "Threads to request: ALL AVAILABLE\n", "\n", "resid\tpack?\tdesign?\tallowed_aas\n", "1\tTRUE\tFALSE\tVAL:NtermProteinFull\n", "2\tTRUE\tFALSE\tGLN\n", "3\tTRUE\tFALSE\tLEU\n", "4\tTRUE\tFALSE\tLEU\n", "5\tTRUE\tFALSE\tGLU\n", "6\tTRUE\tFALSE\tSER\n", "7\tTRUE\tFALSE\tGLY\n", "8\tTRUE\tFALSE\tGLY\n", "9\tTRUE\tFALSE\tGLY\n", "10\tTRUE\tFALSE\tLEU\n", "11\tTRUE\tFALSE\tVAL\n", "12\tTRUE\tFALSE\tGLN\n", "13\tTRUE\tFALSE\tPRO\n", "14\tTRUE\tFALSE\tGLY\n", "15\tTRUE\tFALSE\tGLY\n", "16\tTRUE\tFALSE\tSER\n", "17\tTRUE\tFALSE\tLEU\n", "18\tTRUE\tFALSE\tARG\n", "19\tTRUE\tFALSE\tLEU\n", "20\tTRUE\tFALSE\tSER\n", "21\tTRUE\tFALSE\tCYS:disulfide\n", "22\tTRUE\tFALSE\tALA\n", "23\tTRUE\tFALSE\tALA\n", "24\tTRUE\tFALSE\tSER\n", "25\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "26\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "27\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "28\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "29\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "30\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "31\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "32\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "33\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "34\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "35\tTRUE\tFALSE\tTRP\n", "36\tTRUE\tFALSE\tVAL\n", "37\tTRUE\tFALSE\tARG\n", "38\tTRUE\tFALSE\tGLN\n", "39\tTRUE\tFALSE\tALA\n", "40\tTRUE\tFALSE\tPRO\n", "41\tTRUE\tFALSE\tGLY\n", "42\tTRUE\tFALSE\tLYS\n", "43\tTRUE\tFALSE\tGLY\n", "44\tTRUE\tFALSE\tLEU\n", "45\tTRUE\tFALSE\tGLU\n", "46\tTRUE\tFALSE\tTRP\n", "47\tTRUE\tFALSE\tVAL\n", "48\tTRUE\tFALSE\tSER\n", "49\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "50\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "51\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "52\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "53\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "54\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "55\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "56\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "57\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "58\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "59\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "60\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "61\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "62\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "63\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "64\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "65\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "66\tTRUE\tFALSE\tARG\n", "67\tTRUE\tFALSE\tPHE\n", "68\tTRUE\tFALSE\tTHR\n", "69\tTRUE\tFALSE\tILE\n", "70\tTRUE\tFALSE\tSER\n", "71\tTRUE\tFALSE\tARG\n", "72\tTRUE\tFALSE\tASP\n", "73\tTRUE\tFALSE\tASN\n", "74\tTRUE\tFALSE\tSER\n", "75\tTRUE\tFALSE\tLYS\n", "76\tTRUE\tFALSE\tASN\n", "77\tTRUE\tFALSE\tTHR\n", "78\tTRUE\tFALSE\tLEU\n", "79\tTRUE\tFALSE\tTYR\n", "80\tTRUE\tFALSE\tLEU\n", "81\tTRUE\tFALSE\tGLN\n", "82\tTRUE\tFALSE\tMET\n", "83\tTRUE\tFALSE\tASN\n", "84\tTRUE\tFALSE\tSER\n", "85\tTRUE\tFALSE\tLEU\n", "86\tTRUE\tFALSE\tARG\n", "87\tTRUE\tFALSE\tALA\n", "88\tTRUE\tFALSE\tGLU\n", "89\tTRUE\tFALSE\tASP\n", "90\tTRUE\tFALSE\tTHR\n", "91\tTRUE\tFALSE\tALA\n", "92\tTRUE\tFALSE\tVAL\n", "93\tTRUE\tFALSE\tTYR\n", "94\tTRUE\tFALSE\tTYR\n", "95\tTRUE\tFALSE\tCYS:disulfide\n", "96\tTRUE\tFALSE\tALA\n", "97\tTRUE\tFALSE\tSER\n", "98\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "99\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "100\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "101\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "102\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "103\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "104\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "105\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "106\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "107\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "108\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "109\tTRUE\tFALSE\tTRP\n", "110\tTRUE\tFALSE\tGLY\n", "111\tTRUE\tFALSE\tGLN\n", "112\tTRUE\tFALSE\tGLY\n", "113\tTRUE\tFALSE\tTHR\n", "114\tTRUE\tFALSE\tLEU\n", "115\tTRUE\tFALSE\tVAL\n", "116\tTRUE\tFALSE\tTHR\n", "117\tTRUE\tFALSE\tVAL\n", "118\tTRUE\tFALSE\tSER:CtermProteinFull\n", "\n" ] } ], "source": [ "from pyrosetta.rosetta.protocols.antibody import AntibodyInfo\n", "from pyrosetta.rosetta.protocols.antibody.task_operations import DisableAntibodyRegionOperation\n", "from pyrosetta.rosetta.protocols.antibody import AntibodyRegionEnum\n", "\n", "# 读入抗体结构\n", "init('-ex1 -ex2 -input_ab_scheme Chothia_Scheme -use_input_sc')\n", "antibody_pose = pose_from_pdb('./data/7OBF_B.pdb') # nanobody\n", "\n", "# 设置region自由度;\n", "ab_info = AntibodyInfo(antibody_pose)\n", "disable_region = DisableAntibodyRegionOperation(ab_info, AntibodyRegionEnum.framework_region,\n", " disable_packing_and_design=False)\n", "\n", "# 将TaskOperations加载至TaskFactory中\n", "pack_tf = TaskFactory()\n", "pack_tf.push_back(disable_region)\n", "\n", "# 生成PackerTask\n", "packer_task = pack_tf.create_task_and_apply_taskoperations(antibody_pose)\n", "print(packer_task)" ] }, { "cell_type": "markdown", "id": "432bb2ea", "metadata": {}, "source": [ "#### 思考\n", "尝试不同的region,看看他们在抗体上的结构分布都是在哪些区域?" ] }, { "cell_type": "markdown", "id": "def25a02", "metadata": {}, "source": [ "#### 2.4.2 DisableCDRsOperation\n", "DisableCDRsOperation相比于单纯的DisableAntibodyRegionOperation,可以更加精细地去定义6个CDR区的单独状态!" ] }, { "cell_type": "code", "execution_count": 54, "id": "7ef59277", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "#Packer_Task\n", "\n", "Threads to request: ALL AVAILABLE\n", "\n", "resid\tpack?\tdesign?\tallowed_aas\n", "1\tTRUE\tTRUE\tALA:NtermProteinFull,CYS:NtermProteinFull,ASP:NtermProteinFull,GLU:NtermProteinFull,PHE:NtermProteinFull,GLY:NtermProteinFull,HIS:NtermProteinFull,HIS_D:NtermProteinFull,ILE:NtermProteinFull,LYS:NtermProteinFull,LEU:NtermProteinFull,MET:NtermProteinFull,ASN:NtermProteinFull,PRO:NtermProteinFull,GLN:NtermProteinFull,ARG:NtermProteinFull,SER:NtermProteinFull,THR:NtermProteinFull,VAL:NtermProteinFull,TRP:NtermProteinFull,TYR:NtermProteinFull\n", "2\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "3\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "4\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "5\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "6\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "7\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "8\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "9\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "10\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "11\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "12\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "13\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "14\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "15\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "16\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "17\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "18\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "19\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "20\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "21\tTRUE\tFALSE\tCYS:disulfide\n", "22\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "23\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "24\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "25\tFALSE\tFALSE\t\n", "26\tFALSE\tFALSE\t\n", "27\tFALSE\tFALSE\t\n", "28\tFALSE\tFALSE\t\n", "29\tFALSE\tFALSE\t\n", "30\tFALSE\tFALSE\t\n", "31\tFALSE\tFALSE\t\n", "32\tFALSE\tFALSE\t\n", "33\tFALSE\tFALSE\t\n", "34\tFALSE\tFALSE\t\n", "35\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "36\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "37\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "38\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "39\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "40\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "41\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "42\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "43\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "44\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "45\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "46\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "47\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "48\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "49\tFALSE\tFALSE\t\n", "50\tFALSE\tFALSE\t\n", "51\tFALSE\tFALSE\t\n", "52\tFALSE\tFALSE\t\n", "53\tFALSE\tFALSE\t\n", "54\tFALSE\tFALSE\t\n", "55\tFALSE\tFALSE\t\n", "56\tFALSE\tFALSE\t\n", "57\tFALSE\tFALSE\t\n", "58\tFALSE\tFALSE\t\n", "59\tFALSE\tFALSE\t\n", "60\tFALSE\tFALSE\t\n", "61\tFALSE\tFALSE\t\n", "62\tFALSE\tFALSE\t\n", "63\tFALSE\tFALSE\t\n", "64\tFALSE\tFALSE\t\n", "65\tFALSE\tFALSE\t\n", "66\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "67\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "68\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "69\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "70\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "71\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "72\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "73\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "74\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "75\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "76\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "77\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "78\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "79\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "80\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "81\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "82\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "83\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "84\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "85\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "86\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "87\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "88\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "89\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "90\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "91\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "92\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "93\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "94\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "95\tTRUE\tFALSE\tCYS:disulfide\n", "96\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "97\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "98\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "99\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "100\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "101\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "102\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "103\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "104\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "105\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "106\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "107\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "108\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "109\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "110\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "111\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "112\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "113\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "114\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "115\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "116\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "117\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "118\tTRUE\tTRUE\tALA:CtermProteinFull,CYS:CtermProteinFull,ASP:CtermProteinFull,GLU:CtermProteinFull,PHE:CtermProteinFull,GLY:CtermProteinFull,HIS:CtermProteinFull,HIS_D:CtermProteinFull,ILE:CtermProteinFull,LYS:CtermProteinFull,LEU:CtermProteinFull,MET:CtermProteinFull,ASN:CtermProteinFull,PRO:CtermProteinFull,GLN:CtermProteinFull,ARG:CtermProteinFull,SER:CtermProteinFull,THR:CtermProteinFull,VAL:CtermProteinFull,TRP:CtermProteinFull,TYR:CtermProteinFull\n", "\n" ] } ], "source": [ "from pyrosetta.rosetta.protocols.antibody.task_operations import DisableCDRsOperation\n", "\n", "# 定义CDR区范围,目前1代表自定义CDR-H1。其他区不做定义。\n", "cdr_allow = [1,1,0,0,0,0,0,0] # H1 H2 H3 H4 L1 L2 L3 L4\n", "cdr_allow_vector1 = pyrosetta.rosetta.utility.vector1_bool()\n", "for i in cdr_allow:\n", " cdr_allow_vector1.append(i)\n", "\n", "# 将CDR-H1和CDR-H2的所有Rotamer自由度关闭:\n", "disable_cdr = DisableCDRsOperation(ab_info, cdr_allow_vector1, disable_packing_and_design=True)\n", "\n", "# 将TaskOperations加载至TaskFactory中\n", "pack_tf = TaskFactory()\n", "pack_tf.push_back(disable_cdr)\n", "\n", "# 生成PackerTask\n", "packer_task = pack_tf.create_task_and_apply_taskoperations(antibody_pose)\n", "print(packer_task)" ] }, { "cell_type": "markdown", "id": "b4fd2c32", "metadata": {}, "source": [ "#### 2.4.3 AddCDRProfilesOperation" ] }, { "cell_type": "markdown", "id": "dbdc1153", "metadata": {}, "source": [ "抗体的CDR-H1、H2、L1、L2、L3都是由正则结构的,因此可以被聚类成若干个簇。这些簇内部的序列有保守性也有多样性(Profiles)。\n", "Profiles中记录了每种氨基酸在每种CDR簇中的频率分布,通过AddCDRProfilesOperation可以从Profiles中根据频率分布依次地、随机地挑选一个氨基酸类型添加到可被设计的列表中,因此每次Packer执行时,PackerTask都是不同的。set_picking_rounds设置在每个位点中挑选几次氨基酸,设置值越大,此位点Rotamer的自由度可能会增加。\n", "\n", "注意: 当一些CDR结构多样性太少时,就会从保守性出发进行生成Rotamer的自由度。\n", "\n", "因此此处有两种基本的生成策略:\n", "1. PRIMARY STRATEGIES: 初始设计方案。【肯定的是,采样丰度更高了,但是有些位点反变得不可以控制】\n", "\n", " * seq_design_profiles: 基于cluster的氨基酸频率采样(如在H1-13-1中采样). #默认\n", " * seq_design_profile_sets: 基于所有的cluster的氨基酸频率采样(如H1-13-1,H1-10-1…穷举)(实验阶段)\n", " * seq_design_profile_sets_combined: profiles+profile_sets。组合(实验阶段)\n", " * seq_design_conservative: 当找到不到cluster或则cluster中成员较少是,使用blosum62矩阵统计氨基酸频率。\n", " * seq_design_basic: 可以被设置成20种氨基酸。\n", "\n", "2. FALLBACK STRATEGIES: 如果找不到CDR图谱或则聚类中CDR序列过少,那么将自动调用备用策略。\n", "\n", " * seq_design_conservative: 基于blosum62矩阵选择突变设计范围 #默认\n", " * seq_design_basic: 允许20种氨基酸设计\n", " * seq_design_none: 禁止设计\n", "\n", "\n", "Cons_design_data_source: 使用的打分矩阵\n", "'chothia_1976', 'BLOSUM30', 'blosum30', 'BLOSUM35', 'blosum35', 'BLOSUM40', 'blosum40',\n", "'BLOSUM45', 'blosum45', 'BLOSUM50', 'blosum50', 'BLOSUM55', 'blosum55', 'BLOSUM60', 'blosum60',\n", "'BLOSUM62', 'blosum62', 'BLOSUM65', 'blosum65', 'BLOSUM70', 'blosum70', 'BLOSUM75', 'blosum75',\n", "'BLOSUM80', 'blosum80', 'BLOSUM85', 'blosum85', 'BLOSUM90', 'blosum90', 'BLOSUM100', 'blosum100'\n", "\n", "特别注意: 轻链类型,cmd -light_chain 使用set模式时需要指定轻链的类型![lambda, kappa]" ] }, { "cell_type": "code", "execution_count": 55, "id": "14ff7e63", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\u001b[0mprotocols.task_operations.ConservativeDesignOperation: {0} \u001b[0mLoading conservative mutational data\n" ] } ], "source": [ "from pyrosetta.rosetta.protocols.antibody import *\n", "from pyrosetta.rosetta.protocols.antibody.task_operations import *\n", "from pyrosetta.rosetta.protocols.antibody.design import *\n", "\n", "add_cdr_profile = AddCDRProfilesOperation()\n", "add_cdr_profile.set_include_native_type(True) # allowed wild type AA\n", "add_cdr_profile.set_picking_rounds(2) # 控制sequence sampling丰度\n", "\n", "#选择某一个CDR计算.\n", "add_cdr_profile.set_cdr_only(h1) # 选择cdr1\n", "\n", "#控制采样方法\n", "add_cdr_profile.set_primary_strategy(seq_design_profiles) # 如果设置为含set模式时,初始化需加入-light_chain选项\n", "add_cdr_profile.set_fallback_strategy(seq_design_conservative)\n", "\n", "#增加变异度(选1)\n", "add_cdr_profile.set_no_probability(False) #在profile中,忽略氨基酸出现的频率,采集所有出现过的氨基酸类型.\n", "add_cdr_profile.set_sample_zero_probs_at(False) #在profile中, 增加频率为0的氨基酸的频率,使得可能被采样。\n", "add_cdr_profile.set_stats_cutoff(10) # profile截断,如果簇内少于10个成员,那么使用FALLBACK STRATEGIES\n", "add_cdr_profile.set_use_outliers(False) #是否采样聚类中偏离较远的序列。\n", "add_cdr_profile.set_cons_design_data_source('BLOSUM62') #改变保守设计使用的打分矩阵" ] }, { "cell_type": "code", "execution_count": 56, "id": "e8f7ab0f", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\u001b[0mbasic.io.database: {0} \u001b[0mDatabase file opened: sampling/antibodies/cluster_center_dihedrals.txt\n", "\u001b[0mprotocols.antibody.AntibodyNumberingParser: {0} \u001b[0mAntibody numbering scheme definitions read successfully\n", "\u001b[0mprotocols.antibody.AntibodyNumberingParser: {0} \u001b[0mAntibody CDR definition read successfully\n", "\u001b[0mantibody.AntibodyInfo: {0} \u001b[0mSuccessfully finished the CDR definition\n", "\u001b[0mantibody.AntibodyInfo: {0} \u001b[0m Could not setup Vl Vh Packing angle for camelid antibody\n", "\u001b[0mantibody.AntibodyInfo: {0} \u001b[0mAC Detecting Camelid CDR H3 Stem Type\n", "\u001b[0mantibody.AntibodyInfo: {0} \u001b[0mAC Finished Detecting Camelid CDR H3 Stem Type: NEUTRAL\n", "\u001b[0mantibody.AntibodyInfo: {0} \u001b[0mSetting up CDR Cluster for H1\n", "\u001b[0mprotocols.antibody.cluster.CDRClusterMatcher: {0} \u001b[0mLength: 13 Omega: TTTTTTTTTTTTT\n", "\u001b[0mantibody.AntibodyInfo: {0} \u001b[0mSetting up CDR Cluster for H2\n", "\u001b[0mprotocols.antibody.cluster.CDRClusterMatcher: {0} \u001b[0mLength: 10 Omega: TTTTTTTTTT\n", "\u001b[0mantibody.AntibodyInfo: {0} \u001b[0mSetting up CDR Cluster for H3\n", "\u001b[0mprotocols.antibody.cluster.CDRClusterMatcher: {0} \u001b[0mLength: 13 Omega: TTTTTTTTTTTTT\n", "\u001b[0mbasic.io.database: {0} \u001b[0m\u001b[1m[ WARNING ]\u001b[0m Unable to locate database file /sampling/antibodies/antibody_database_rosetta_design.db\n", "\u001b[0mantibody.database.AntibodyDatabaseManager: {0} \u001b[0mThe antibody design database is not specified by the user.\n", "\u001b[0mantibody.database.AntibodyDatabaseManager: {0} \u001b[0mReading from: /opt/miniconda3/lib/python3.7/site-packages/pyrosetta/database//sampling/antibodies/antibody_database_rosetta_design_north_paper.db\n", "\u001b[0mantibody.database.AntibodyDatabaseManager: {0} \u001b[0mLoaded H1-13-1 with 210 datapoints.\n", "\u001b[0mprotocols.antibody.task_operations.AddCDRProfilesOperation: {0} \u001b[0mapplying prob task op\n", "#Packer_Task\n", "\n", "Threads to request: ALL AVAILABLE\n", "\n", "resid\tpack?\tdesign?\tallowed_aas\n", "1\tTRUE\tTRUE\tALA:NtermProteinFull,CYS:NtermProteinFull,ASP:NtermProteinFull,GLU:NtermProteinFull,PHE:NtermProteinFull,GLY:NtermProteinFull,HIS:NtermProteinFull,HIS_D:NtermProteinFull,ILE:NtermProteinFull,LYS:NtermProteinFull,LEU:NtermProteinFull,MET:NtermProteinFull,ASN:NtermProteinFull,PRO:NtermProteinFull,GLN:NtermProteinFull,ARG:NtermProteinFull,SER:NtermProteinFull,THR:NtermProteinFull,VAL:NtermProteinFull,TRP:NtermProteinFull,TYR:NtermProteinFull\n", "2\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "3\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "4\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "5\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "6\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "7\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "8\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "9\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "10\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "11\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "12\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "13\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "14\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "15\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "16\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "17\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "18\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "19\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "20\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "21\tTRUE\tFALSE\tCYS:disulfide\n", "22\tTRUE\tTRUE\tALA,SER\n", "23\tTRUE\tTRUE\tALA,VAL\n", "24\tTRUE\tFALSE\tSER\n", "25\tTRUE\tFALSE\tGLY\n", "26\tTRUE\tTRUE\tPHE,TYR\n", "27\tTRUE\tTRUE\tARG,SER,THR\n", "28\tTRUE\tTRUE\tPHE,ILE\n", "29\tTRUE\tTRUE\tASN,SER,THR\n", "30\tTRUE\tTRUE\tASP,THR\n", "31\tTRUE\tTRUE\tGLU,PHE,TYR\n", "32\tTRUE\tTRUE\tASP,TRP,TYR\n", "33\tTRUE\tFALSE\tMET\n", "34\tTRUE\tTRUE\tGLU,GLY,SER\n", "35\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "36\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "37\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "38\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "39\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "40\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "41\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "42\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "43\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "44\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "45\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "46\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "47\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "48\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "49\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "50\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "51\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "52\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "53\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "54\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "55\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "56\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "57\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "58\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "59\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "60\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "61\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "62\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "63\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "64\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "65\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "66\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "67\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "68\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "69\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "70\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "71\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "72\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "73\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "74\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "75\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "76\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "77\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "78\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "79\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "80\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "81\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "82\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "83\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "84\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "85\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "86\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "87\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "88\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "89\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "90\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "91\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "92\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "93\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "94\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "95\tTRUE\tFALSE\tCYS:disulfide\n", "96\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "97\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "98\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "99\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "100\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "101\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "102\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "103\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "104\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "105\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "106\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "107\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "108\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "109\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "110\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "111\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "112\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "113\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "114\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "115\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "116\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "117\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "118\tTRUE\tTRUE\tALA:CtermProteinFull,CYS:CtermProteinFull,ASP:CtermProteinFull,GLU:CtermProteinFull,PHE:CtermProteinFull,GLY:CtermProteinFull,HIS:CtermProteinFull,HIS_D:CtermProteinFull,ILE:CtermProteinFull,LYS:CtermProteinFull,LEU:CtermProteinFull,MET:CtermProteinFull,ASN:CtermProteinFull,PRO:CtermProteinFull,GLN:CtermProteinFull,ARG:CtermProteinFull,SER:CtermProteinFull,THR:CtermProteinFull,VAL:CtermProteinFull,TRP:CtermProteinFull,TYR:CtermProteinFull\n", "\n" ] } ], "source": [ "# 将TaskOperations加载至TaskFactory中\n", "pack_tf = TaskFactory()\n", "pack_tf.push_back(add_cdr_profile)\n", "\n", "# 生成PackerTask\n", "packer_task = pack_tf.create_task_and_apply_taskoperations(antibody_pose)\n", "print(packer_task)" ] }, { "cell_type": "markdown", "id": "801e8235", "metadata": {}, "source": [ "#### 思考\n", "可见CDR-H1处的氨基酸自由度减少了。尝试重复运行上述代码,以及增大set_picking_rounds参数,你发现了什么现象?" ] }, { "cell_type": "markdown", "id": "7d293527", "metadata": {}, "source": [ "#### 2.4.4 AddCDRProfileSetsOperation\n", "这个模块依然处于实验阶段。该TaskOperation每次生成PackTask时,它随机地选择一个CDR cluster(如H1-13-1 或 H1-13-2 或 H1-13-3)来统计氨基酸频率。因此不再受限于Pose中原有的CDR结构所在的那个簇。如果结构中本身的CDR没有对应的簇,那么将跳过该CDR的设计。" ] }, { "cell_type": "code", "execution_count": 57, "id": "f0d3cf1b", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\u001b[0mbasic.io.database: {0} \u001b[0mDatabase file opened: sampling/antibodies/cluster_center_dihedrals.txt\n", "\u001b[0mprotocols.antibody.AntibodyNumberingParser: {0} \u001b[0mAntibody numbering scheme definitions read successfully\n", "\u001b[0mprotocols.antibody.AntibodyNumberingParser: {0} \u001b[0mAntibody CDR definition read successfully\n", "\u001b[0mantibody.AntibodyInfo: {0} \u001b[0mSuccessfully finished the CDR definition\n", "\u001b[0mantibody.AntibodyInfo: {0} \u001b[0m Could not setup Vl Vh Packing angle for camelid antibody\n", "\u001b[0mantibody.AntibodyInfo: {0} \u001b[0mAC Detecting Camelid CDR H3 Stem Type\n", "\u001b[0mantibody.AntibodyInfo: {0} \u001b[0mAC Finished Detecting Camelid CDR H3 Stem Type: NEUTRAL\n", "\u001b[0mantibody.AntibodyInfo: {0} \u001b[0mSetting up CDR Cluster for H1\n", "\u001b[0mprotocols.antibody.cluster.CDRClusterMatcher: {0} \u001b[0mLength: 13 Omega: TTTTTTTTTTTTT\n", "\u001b[0mantibody.AntibodyInfo: {0} \u001b[0mSetting up CDR Cluster for H2\n", "\u001b[0mprotocols.antibody.cluster.CDRClusterMatcher: {0} \u001b[0mLength: 10 Omega: TTTTTTTTTT\n", "\u001b[0mantibody.AntibodyInfo: {0} \u001b[0mSetting up CDR Cluster for H3\n", "\u001b[0mprotocols.antibody.cluster.CDRClusterMatcher: {0} \u001b[0mLength: 13 Omega: TTTTTTTTTTTTT\n", "\u001b[0mbasic.io.database: {0} \u001b[0m\u001b[1m[ WARNING ]\u001b[0m Unable to locate database file /sampling/antibodies/antibody_database_rosetta_design.db\n", "\u001b[0mantibody.database.AntibodyDatabaseManager: {0} \u001b[0mThe antibody design database is not specified by the user.\n", "\u001b[0mantibody.database.AntibodyDatabaseManager: {0} \u001b[0mReading from: /opt/miniconda3/lib/python3.7/site-packages/pyrosetta/database//sampling/antibodies/antibody_database_rosetta_design_north_paper.db\n", "\u001b[0mantibody.database.AntibodyDatabaseManager: {0} \u001b[0mLoaded H1-13-1 with 210 datapoints.\n", "\u001b[0mprotocols.antibody.task_operations.AddCDRProfilesOperation: {0} \u001b[0mapplying prob task op\n", "#Packer_Task\n", "\n", "Threads to request: ALL AVAILABLE\n", "\n", "resid\tpack?\tdesign?\tallowed_aas\n", "1\tTRUE\tTRUE\tALA:NtermProteinFull,CYS:NtermProteinFull,ASP:NtermProteinFull,GLU:NtermProteinFull,PHE:NtermProteinFull,GLY:NtermProteinFull,HIS:NtermProteinFull,HIS_D:NtermProteinFull,ILE:NtermProteinFull,LYS:NtermProteinFull,LEU:NtermProteinFull,MET:NtermProteinFull,ASN:NtermProteinFull,PRO:NtermProteinFull,GLN:NtermProteinFull,ARG:NtermProteinFull,SER:NtermProteinFull,THR:NtermProteinFull,VAL:NtermProteinFull,TRP:NtermProteinFull,TYR:NtermProteinFull\n", "2\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "3\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "4\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "5\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "6\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "7\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "8\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "9\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "10\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "11\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "12\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "13\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "14\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "15\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "16\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "17\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "18\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "19\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "20\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "21\tTRUE\tFALSE\tCYS:disulfide\n", "22\tTRUE\tTRUE\tALA,LYS\n", "23\tTRUE\tFALSE\tALA\n", "24\tTRUE\tFALSE\tSER\n", "25\tTRUE\tFALSE\tGLY\n", "26\tTRUE\tTRUE\tPHE,LEU\n", "27\tTRUE\tTRUE\tILE,ASN,ARG\n", "28\tTRUE\tTRUE\tPHE,ILE\n", "29\tTRUE\tTRUE\tLYS,SER,THR\n", "30\tTRUE\tTRUE\tASP,ARG\n", "31\tTRUE\tTRUE\tGLU,PHE,THR\n", "32\tTRUE\tTRUE\tASP,TYR\n", "33\tTRUE\tFALSE\tMET\n", "34\tTRUE\tTRUE\tGLU,GLY,HIS,HIS_D\n", "35\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "36\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "37\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "38\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "39\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "40\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "41\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "42\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "43\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "44\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "45\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "46\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "47\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "48\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "49\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "50\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "51\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "52\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "53\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "54\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "55\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "56\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "57\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "58\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "59\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "60\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "61\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "62\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "63\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "64\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "65\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "66\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "67\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "68\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "69\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "70\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "71\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "72\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "73\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "74\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "75\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "76\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "77\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "78\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "79\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "80\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "81\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "82\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "83\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "84\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "85\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "86\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "87\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "88\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "89\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "90\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "91\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "92\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "93\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "94\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "95\tTRUE\tFALSE\tCYS:disulfide\n", "96\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "97\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "98\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "99\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "100\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "101\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "102\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "103\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "104\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "105\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "106\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "107\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "108\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "109\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "110\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "111\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "112\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "113\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "114\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "115\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "116\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "117\tTRUE\tTRUE\tALA,CYS,ASP,GLU,PHE,GLY,HIS,HIS_D,ILE,LYS,LEU,MET,ASN,PRO,GLN,ARG,SER,THR,VAL,TRP,TYR\n", "118\tTRUE\tTRUE\tALA:CtermProteinFull,CYS:CtermProteinFull,ASP:CtermProteinFull,GLU:CtermProteinFull,PHE:CtermProteinFull,GLY:CtermProteinFull,HIS:CtermProteinFull,HIS_D:CtermProteinFull,ILE:CtermProteinFull,LYS:CtermProteinFull,LEU:CtermProteinFull,MET:CtermProteinFull,ASN:CtermProteinFull,PRO:CtermProteinFull,GLN:CtermProteinFull,ARG:CtermProteinFull,SER:CtermProteinFull,THR:CtermProteinFull,VAL:CtermProteinFull,TRP:CtermProteinFull,TYR:CtermProteinFull\n", "\n" ] } ], "source": [ "from pyrosetta.rosetta.protocols.antibody.task_operations import AddCDRProfileSetsOperation\n", "add_cdr_profile_set = AddCDRProfileSetsOperation()\n", "add_cdr_profile_set.set_include_native_type(True) # allowed wild type AA\n", "add_cdr_profile_set.set_picking_rounds(1) # 控制sequence sampling次数\n", "\n", "# 设置多个CDR.\n", "cdr_allow = [1,0,0,0,0,0,0,0] # H1 H2 H3 H4 L1 L2 L3 L4\n", "vector1 = pyrosetta.rosetta.utility.vector1_bool()\n", "for i in cdr_allow:\n", " vector1.append(i)\n", "add_cdr_profile_set.set_cdrs(vector1)\n", "\n", "#基于CDR长度的sampling设置:\n", "#add_cdr_profile_set.set_limit_only_to_length(True) # 默认为 不限制链长.\n", "\n", "# 设置策略2:\n", "add_cdr_profile_set.set_cutoff(10) # profile截断,如果簇内少于10个成员,那么使用FALLBACK STRATEGIES\n", "add_cdr_profile_set.set_use_outliers(False) #是否采样聚类中偏离较远的序列。\n", "\n", "# 将TaskOperations加载至TaskFactory中\n", "pack_tf = TaskFactory()\n", "pack_tf.push_back(add_cdr_profile)\n", "\n", "# 生成PackerTask\n", "packer_task = pack_tf.create_task_and_apply_taskoperations(antibody_pose)\n", "print(packer_task)" ] }, { "cell_type": "markdown", "id": "5b557936", "metadata": {}, "source": [ "#### 2.4.5 RestrictToCDRsAndNeighbors\n", "将某些CDRs及它的邻近氨基酸的pack状态设置为repack, 其余残基一律设置为no_repack。" ] }, { "cell_type": "code", "execution_count": 58, "id": "7b15b50d", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "vector1_bool[1, 1, 0, 0, 0, 0, 0, 0]\n" ] } ], "source": [ "from pyrosetta.rosetta.protocols.antibody.task_operations import RestrictToCDRsAndNeighbors\n", "from pyrosetta.rosetta.protocols.antibody import CDRNameEnum\n", "from pyrosetta.rosetta.utility import vector1_bool\n", "\n", "# 设置CDR的选择范围:\n", "cdr_allow = [1, 1, 0, 0, 0, 0, 0, 0] # H1 H2 H3 H4 L1 L2 L3 L4\n", "vector1 = vector1_bool()\n", "for i in cdr_allow:\n", " vector1.append(i)\n", "print(vector1)\n", "\n", "# # 约束CDR周围的氨基酸为Repack,非临近区域为no_repack;\n", "restrict_cdr_nbr = RestrictToCDRsAndNeighbors()\n", "restrict_cdr_nbr.set_cdrs(vector1)\n", "restrict_cdr_nbr.set_allow_design_cdr(0) # pack状态设置为Design/repack\n", "restrict_cdr_nbr.set_allow_design_neighbor_framework(0) # pack状态设置为Design/repack\n", "restrict_cdr_nbr.set_allow_design_neighbor_antigen(0) # pack状态设置为Design/repack\n", "restrict_cdr_nbr.set_neighbor_distance(8.0)\n", "restrict_cdr_nbr.set_stem_size(0) # 在计算邻近氨基酸时,将CDR两端延长N个氨基酸来计算。(延长的氨基酸依然属于FR区)\n", "\n", "# # 将TaskOperations加载至TaskFactory中\n", "pack_tf = TaskFactory()\n", "pack_tf.push_back(restrict_cdr_nbr)\n", "\n", "# # 生成PackerTask(目前有bug.运行会报错)\n", "# packer_task = pack_tf.create_task_and_apply_taskoperations(antibody_pose)\n", "# print(packer_task)" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.10" } }, "nbformat": 4, "nbformat_minor": 5 }