{ "nbformat": 4, "nbformat_minor": 0, "metadata": { "colab": { "name": "design.ipynb", "provenance": [], "authorship_tag": "ABX9TyNABxfrKBHb46wHlVtvkL0k", "include_colab_link": true }, "kernelspec": { "name": "python3", "display_name": "Python 3" }, "language_info": { "name": "python" }, "accelerator": "GPU", "gpuClass": "standard" }, "cells": [ { "cell_type": "markdown", "metadata": { "id": "view-in-github", "colab_type": "text" }, "source": [ "\"Open" ] }, { "cell_type": "markdown", "source": [ "#TrDesign in JAX!\n", "Backprop through TrRosetta for protein design." ], "metadata": { "id": "RW6455_OvE2E" } }, { "cell_type": "code", "execution_count": null, "metadata": { "cellView": "form", "id": "KtRWtsKfvC1U" }, "outputs": [], "source": [ "#@title install\n", "%%bash\n", "if [ ! -d params/tr ]; then\n", " # get code\n", " pip -q install git+https://github.com/sokrypton/ColabDesign.git@v1.1.1\n", "\n", " # for debugging\n", " ln -s /usr/local/lib/python3.*/dist-packages/colabdesign colabdesign\n", "\n", " # download params\n", " mkdir -p params/tr\n", " wget -qnc https://files.ipd.uw.edu/krypton/TrRosetta/models.zip -P params/tr/\n", " wget -qnc https://files.ipd.uw.edu/krypton/TrRosetta/bkgr_models.zip -P params/tr/\n", " unzip -qqo params/tr/models.zip -d params/tr/\n", " unzip -qqo params/tr/bkgr_models.zip -d params/tr/\n", " rm params/tr/models.zip \n", " rm params/tr/bkgr_models.zip\n", "\n", "fi" ] }, { "cell_type": "code", "source": [ "#@title import libraries\n", "import warnings\n", "warnings.simplefilter(action='ignore', category=FutureWarning)\n", "from colabdesign import *\n", "from google.colab import files\n", "from IPython.display import HTML\n", "import os\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", " else:\n", " os.system(f\"wget -qnc https://files.rcsb.org/view/{pdb_code}.pdb\")\n", " return f\"{pdb_code}.pdb\"" ], "metadata": { "cellView": "form", "id": "TH3kao14wKx3" }, "execution_count": null, "outputs": [] }, { "cell_type": "markdown", "source": [ "#Hallucination" ], "metadata": { "id": "u7fuMeqYQXlp" } }, { "cell_type": "code", "source": [ "clear_mem()\n", "tr_model = mk_trdesign_model(protocol=\"hallucination\")\n", "tr_model.prep_inputs(length=100)" ], "metadata": { "id": "yiCmwWMcQPjq" }, "execution_count": null, "outputs": [] }, { "cell_type": "code", "source": [ "tr_model.restart()\n", "tr_model.set_opt(hard=False)\n", "tr_model.design(50, verbose=10, save_best=False)\n", "tr_model.set_opt(hard=True)\n", "tr_model.design(50, verbose=10, save_best=True)" ], "metadata": { "id": "l-7wenNyQdRo" }, "execution_count": null, "outputs": [] }, { "cell_type": "code", "source": [ "print(tr_model.get_loss())\n", "print(tr_model.get_seq())\n", "tr_model.plot(\"preds\")" ], "metadata": { "id": "oQ89tZMNQmuj" }, "execution_count": null, "outputs": [] }, { "cell_type": "markdown", "source": [ "#fixbb" ], "metadata": { "id": "G_jxcnyIQbA3" } }, { "cell_type": "code", "source": [ "clear_mem()\n", "tr_model = mk_trdesign_model(protocol=\"fixbb\")\n", "tr_model.prep_inputs(get_pdb(\"1TEN\"),chain=\"A\")" ], "metadata": { "id": "B7mOUM2QwLzM" }, "execution_count": null, "outputs": [] }, { "cell_type": "code", "source": [ "tr_model.restart()\n", "tr_model.set_opt(hard=False)\n", "tr_model.design(50, verbose=10, save_best=False)\n", "tr_model.set_opt(hard=True)\n", "tr_model.design(50, verbose=10, save_best=True)" ], "metadata": { "id": "o4PF8RiWx4Hy" }, "execution_count": null, "outputs": [] }, { "cell_type": "code", "source": [ "print(tr_model.get_loss())\n", "print(tr_model.get_seq())\n", "tr_model.plot(\"preds\")" ], "metadata": { "id": "RWAW3WjqXb0t" }, "execution_count": null, "outputs": [] }, { "cell_type": "markdown", "source": [ "# combine with AfDesign" ], "metadata": { "id": "jTUi-BD6Un2E" } }, { "cell_type": "code", "source": [ "%%bash\n", "if [ ! -d params/af ]; then\n", " # download alphafold weights\n", " mkdir -p params/af/params\n", " curl -fsSL https://storage.googleapis.com/alphafold/alphafold_params_2022-03-02.tar | tar x -C params/af/params\n", "fi" ], "metadata": { "id": "RE_kS_TIQopk" }, "execution_count": null, "outputs": [] }, { "cell_type": "markdown", "source": [ "### initialize with trdesign sequence" ], "metadata": { "id": "JPSXkb-5X97C" } }, { "cell_type": "code", "source": [ "af_model = mk_afdesign_model(protocol=\"fixbb\",data_dir=\"params/af\")\n", "af_model.prep_inputs(get_pdb(\"1TEN\"))" ], "metadata": { "id": "NYBL60BjXLGd" }, "execution_count": null, "outputs": [] }, { "cell_type": "code", "source": [ "af_model.restart(seq=tr_model.get_seq())\n", "af_model.design_3stage(100,100,10)" ], "metadata": { "id": "zxHYpWpOWxZj" }, "execution_count": null, "outputs": [] }, { "cell_type": "code", "source": [ "af_model.plot_traj()" ], "metadata": { "id": "3fhF7I_7btX3" }, "execution_count": null, "outputs": [] }, { "cell_type": "code", "source": [ "af_model.plot_pdb()" ], "metadata": { "id": "jBaroyv5WzzH" }, "execution_count": null, "outputs": [] }, { "cell_type": "markdown", "source": [ "### let's try a joint optimization" ], "metadata": { "id": "Cd0yN9rIZEpf" } }, { "cell_type": "code", "source": [ "af_model.restart()\n", "af_model.design_3stage(100,100,10, callback=tr_model.af_callback())" ], "metadata": { "id": "kVTsgp-oZGp3" }, "execution_count": null, "outputs": [] }, { "cell_type": "code", "source": [ "af_model.plot_traj()" ], "metadata": { "id": "prBHa32UZQH-" }, "execution_count": null, "outputs": [] }, { "cell_type": "code", "source": [ "af_model.plot_pdb()" ], "metadata": { "id": "nDwh9G8kafJP" }, "execution_count": null, "outputs": [] }, { "cell_type": "code", "source": [ "HTML(af_model.animate())" ], "metadata": { "id": "a5mzDLIMa2P5" }, "execution_count": null, "outputs": [] }, { "cell_type": "code", "source": [ "af_model.get_seqs()" ], "metadata": { "id": "5z0Vix29ahPP" }, "execution_count": null, "outputs": [] } ] }