File size: 5,608 Bytes
d766458 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 | {
"cells": [
{
"cell_type": "markdown",
"metadata": {
"id": "view-in-github",
"colab_type": "text"
},
"source": [
"<a href=\"https://colab.research.google.com/github/sokrypton/ColabDesign/blob/v1.1.1/af/examples/partial_hallucination_rewire.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "OA2k3sAYuiXe"
},
"source": [
"# AfDesign - rewire (partial hallucination)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"cellView": "form",
"id": "-AXy0s_4cKaK"
},
"outputs": [],
"source": [
"#@title setup\n",
"%%time\n",
"import os\n",
"if not os.path.isdir(\"params\"):\n",
" # get code\n",
" os.system(\"pip -q install git+https://github.com/sokrypton/ColabDesign.git@v1.1.1\")\n",
" # for debugging\n",
" os.system(\"ln -s /usr/local/lib/python3.*/dist-packages/colabdesign colabdesign\")\n",
" # download params\n",
" os.system(\"mkdir params\")\n",
" os.system(\"apt-get install aria2 -qq\")\n",
" os.system(\"aria2c -q -x 16 https://storage.googleapis.com/alphafold/alphafold_params_2022-12-06.tar\")\n",
" os.system(\"tar -xf alphafold_params_2022-12-06.tar -C params\")\n",
"\n",
"import warnings\n",
"warnings.simplefilter(action='ignore', category=FutureWarning)\n",
"\n",
"import os\n",
"from colabdesign import mk_afdesign_model, clear_mem\n",
"from IPython.display import HTML\n",
"from google.colab import files\n",
"import numpy as np\n",
"\n",
"def get_pdb(pdb_code=\"\"):\n",
" if pdb_code is None or pdb_code == \"\":\n",
" upload_dict = files.upload()\n",
" pdb_string = upload_dict[list(upload_dict.keys())[0]]\n",
" with open(\"tmp.pdb\",\"wb\") as out: out.write(pdb_string)\n",
" return \"tmp.pdb\"\n",
" elif os.path.isfile(pdb_code):\n",
" return pdb_code\n",
" elif len(pdb_code) == 4:\n",
" os.system(f\"wget -qnc https://files.rcsb.org/view/{pdb_code}.pdb\")\n",
" return f\"{pdb_code}.pdb\"\n",
" else:\n",
" os.system(f\"wget -qnc https://alphafold.ebi.ac.uk/files/AF-{pdb_code}-F1-model_v3.pdb\")\n",
" return f\"AF-{pdb_code}-F1-model_v3.pdb\""
]
},
{
"cell_type": "code",
"source": [
"# setup the model\n",
"clear_mem()\n",
"model = mk_afdesign_model(protocol=\"partial\",\n",
" use_templates=False) # set True to constrain positions using template input\n",
" \n",
"# define positions we want to constrain (input PDB numbering)\n",
"old_pos = \"4-9,13-26,30-33,37-50,54-59,63-76,80-84,112-125\"\n",
"\n",
"model.prep_inputs(get_pdb(\"2MR5\"), chain=\"A\",\n",
" pos=old_pos, # define positions to contrain\n",
" length=100, # define if the desired length is different from input PDB\n",
" fix_seq=False) # set True to constrain the sequence\n",
"\n",
"# set positions (if different from PDB)\n",
"# reorder the segments, \n",
"model.rewire(order = [1,2,3,0,7,4,5,6], # set order of segments\n",
" loops = [3,3,3,4,3,3,4], # change loop length inbetween segments\n",
" offset=0) # essentially loop length at the N term\n",
"\n",
"print(model.opt[\"pos\"])"
],
"metadata": {
"id": "_m7ZaaP4NkII"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"# restart optimization\n",
"model.restart()\n",
"# model.set_seq(mode=\"wildtype\") # initialize with wildtype sequence\n",
"\n",
"# balance weights [dgram_cce = restraint weight], [con = hallucination weight]\n",
"model.set_weights(dgram_cce=1, con=0)\n",
"model.design_3stage(300,100,10)"
],
"metadata": {
"id": "bDA8cPqMT_eY"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"model.save_pdb(f\"{model.protocol}.pdb\")\n",
"model.plot_pdb()"
],
"metadata": {
"id": "qFegtgcnHdqr"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"HTML(model.animate())"
],
"metadata": {
"id": "9sjG7kvoHaVi"
},
"execution_count": null,
"outputs": []
}
],
"metadata": {
"accelerator": "GPU",
"colab": {
"collapsed_sections": [
"q4qiU9I0QHSz"
],
"name": "partial_hallucination_rewire.ipynb",
"provenance": [],
"include_colab_link": true
},
"kernelspec": {
"display_name": "Python 3",
"name": "python3"
},
"language_info": {
"name": "python"
}
},
"nbformat": 4,
"nbformat_minor": 0
} |