{ "cells": [ { "cell_type": "markdown", "metadata": { "id": "view-in-github", "colab_type": "text" }, "source": [ "\"Open" ] }, { "cell_type": "markdown", "metadata": { "id": "OA2k3sAYuiXe" }, "source": [ "# AfDesign - binder + hotspot test" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "-AXy0s_4cKaK", "cellView": "form" }, "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": [ "%%bash\n", "wget -qnc https://raw.githubusercontent.com/casperg92/MaSIF_colab/main/example/monomerexample.pdb" ], "metadata": { "id": "TIGDV-NqGMAw" }, "execution_count": null, "outputs": [] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "3XLJPiRKx5Mw" }, "outputs": [], "source": [ "clear_mem()\n", "model = mk_afdesign_model(protocol=\"binder\")\n", "\n", "# pos = define positions (hotspot) on target you want to target for binder\n", "model.prep_inputs(pdb_filename=\"monomerexample.pdb\", chain=\"A\",\n", " binder_len=20,\n", " hotspot=\"33,17,6,34,30,19,37,15\") \n", "\n", "print(\"target_length\",model._target_len)\n", "print(\"binder_length\",model._binder_len)\n", "print(\"weights\",model.opt[\"weights\"])" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "u6VxjuinyCZa" }, "outputs": [], "source": [ "model.restart(mode=\"soft_gumbel\")\n", "model.design_3stage(100, 100, 10)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "9cARoviGyIKb" }, "outputs": [], "source": [ "HTML(model.animate())" ] }, { "cell_type": "code", "source": [ "model.get_seqs()" ], "metadata": { "id": "RzE137NDZdZc" }, "execution_count": null, "outputs": [] }, { "cell_type": "code", "source": [ "model.plot_pdb()\n", "model.save_pdb(f\"{model.protocol}.pdb\")" ], "metadata": { "id": "sTlS7_L8Zfwf" }, "execution_count": null, "outputs": [] }, { "cell_type": "markdown", "source": [ "as a control, let's try hallucinate a binder without defining a hotspot" ], "metadata": { "id": "aGW9s5t3Xlk4" } }, { "cell_type": "code", "source": [ "clear_mem()\n", "model = mk_afdesign_model(protocol=\"binder\")\n", "model.prep_inputs(pdb_filename=\"monomerexample.pdb\", chain=\"A\", binder_len=20)" ], "metadata": { "id": "KzkNzuS6Xpqj" }, "execution_count": null, "outputs": [] }, { "cell_type": "code", "source": [ "model.restart(mode=\"soft_gumbel\")\n", "model.design_3stage(100, 100, 10)" ], "metadata": { "id": "wjFi2uhwXtPz" }, "execution_count": null, "outputs": [] }, { "cell_type": "code", "source": [ "HTML(model.animate())" ], "metadata": { "id": "pBRNpspoX6pR" }, "execution_count": null, "outputs": [] }, { "cell_type": "code", "source": [ "model.get_seqs()" ], "metadata": { "id": "J43oqomrYA8v" }, "execution_count": null, "outputs": [] }, { "cell_type": "code", "source": [ "model.plot_pdb()\n", "model.save_pdb(f\"{model.protocol}.control.pdb\")" ], "metadata": { "id": "r2d86kMVX_SL" }, "execution_count": null, "outputs": [] }, { "cell_type": "code", "source": [], "metadata": { "id": "xw_5hblQmRqn" }, "execution_count": null, "outputs": [] } ], "metadata": { "accelerator": "GPU", "colab": { "collapsed_sections": [ "q4qiU9I0QHSz" ], "name": "afdesign_hotspot_test.ipynb", "provenance": [], "include_colab_link": true }, "kernelspec": { "display_name": "Python 3", "name": "python3" }, "language_info": { "name": "python" } }, "nbformat": 4, "nbformat_minor": 0 }