[480cb7]: / 11_API_webservices.ipynb

Download this file

1609 lines (1609 with data), 66.9 kB

{
  "nbformat": 4,
  "nbformat_minor": 0,
  "metadata": {
    "colab": {
      "provenance": [],
      "authorship_tag": "ABX9TyPPWpwAA5RUPSwgUR6rPjmI",
      "include_colab_link": true
    },
    "kernelspec": {
      "name": "python3",
      "display_name": "Python 3"
    },
    "language_info": {
      "name": "python"
    }
  },
  "cells": [
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "view-in-github",
        "colab_type": "text"
      },
      "source": [
        "<a href=\"https://colab.research.google.com/github/francescopatane96/Computer_aided_drug_discovery_kit/blob/main/11_API_webservices.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "rO6rUhDuoWz5",
        "outputId": "a4a19aec-1106-4544-e772-36b53bd146f7"
      },
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "<Response [200]>"
            ]
          },
          "metadata": {},
          "execution_count": 1
        }
      ],
      "source": [
        "import requests\n",
        "\n",
        "url = \"https://raw.githubusercontent.com/openkinome/kinodata/master/data/KinHubKinaseList.csv\"\n",
        "response = requests.get(url)\n",
        "response.raise_for_status()\n",
        "response\n",
        "\n",
        "# NBVAL_CHECK_OUTPUT"
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "print(*response.text.splitlines()[:10], sep=\"\\n\")"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "ELadI3rmpRNf",
        "outputId": "48dac14c-7fd7-4469-a1a9-e4b48363cbe0"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "xName,Manning Name,HGNC Name,Kinase Name,Group,Family,SubFamily,UniprotID\n",
            "ABL1,ABL,ABL1,Tyrosine-protein kinase ABL1,TK,Abl,,P00519\n",
            "ACK,ACK,TNK2,Activated CDC42 kinase 1,TK,Ack,,Q07912\n",
            "ACTR2,ACTR2,ACVR2A,Activin receptor type-2A,TKL,STKR,STKR2,P27037\n",
            "ACTR2B,ACTR2B,ACVR2B,Activin receptor type-2B,TKL,STKR,STKR2,Q13705\n",
            "ADCK4,ADCK4,ADCK4,Uncharacterized aarF domain-containing protein kinase 4,Atypical,ABC1,ABC1-A,Q96D53\n",
            "Trb1,Trb1,TRIB1,Tribbles homolog 1,CAMK,Trbl,,Q96RU8\n",
            "BRSK2,BRSK2,BRSK2,Serine/threonine-protein kinase BRSK2,CAMK,CAMKL,BRSK,Q8IWQ3\n",
            "Wnk2,Wnk2,WNK2,Serine/threonine-protein kinase WNK2,Other,WNK,,Q9Y3S1\n",
            "AKT1,AKT1,AKT1,RAC-alpha serine/threonine-protein kinase,AGC,Akt,,P31749\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "with open(\"kinhub.csv\", \"wb\") as f:\n",
        "    f.write(response.content)"
      ],
      "metadata": {
        "id": "3GYDtLn8pU6F"
      },
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [
        "# We need the encoding=\"utf-8-sig\" to ensure correct encoding\n",
        "# under all platforms\n",
        "with open(\"kinhub.csv\", encoding=\"utf-8-sig\") as f:\n",
        "    # Zip will stop iterating with the shortest iterator\n",
        "    # passing `range(5)` allow us to just get five lines ;)\n",
        "    for _, line in zip(range(5), f):\n",
        "        print(line.rstrip())\n",
        "\n",
        "# NBVAL_CHECK_OUTPUT"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "7inrHRNJpdNQ",
        "outputId": "fc400e0a-8da0-4447-a5c6-f03eddc34162"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "xName,Manning Name,HGNC Name,Kinase Name,Group,Family,SubFamily,UniprotID\n",
            "ABL1,ABL,ABL1,Tyrosine-protein kinase ABL1,TK,Abl,,P00519\n",
            "ACK,ACK,TNK2,Activated CDC42 kinase 1,TK,Ack,,Q07912\n",
            "ACTR2,ACTR2,ACVR2A,Activin receptor type-2A,TKL,STKR,STKR2,P27037\n",
            "ACTR2B,ACTR2B,ACVR2B,Activin receptor type-2B,TKL,STKR,STKR2,Q13705\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "import pandas as pd\n",
        "\n",
        "df = pd.read_csv(\n",
        "    \"https://raw.githubusercontent.com/openkinome/kinodata/master/data/KinHubKinaseList.csv\"\n",
        ")\n",
        "df.head()\n",
        "# NBVAL_CHECK_OUTPUT"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 372
        },
        "id": "mS_bFm7api5u",
        "outputId": "40276cd5-d9ac-4455-fa2d-848b09e7cdcd"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "    xName Manning Name HGNC Name  \\\n",
              "0    ABL1          ABL      ABL1   \n",
              "1     ACK          ACK      TNK2   \n",
              "2   ACTR2        ACTR2    ACVR2A   \n",
              "3  ACTR2B       ACTR2B    ACVR2B   \n",
              "4   ADCK4        ADCK4     ADCK4   \n",
              "\n",
              "                                         Kinase Name     Group Family  \\\n",
              "0                       Tyrosine-protein kinase ABL1        TK    Abl   \n",
              "1                           Activated CDC42 kinase 1        TK    Ack   \n",
              "2                           Activin receptor type-2A       TKL   STKR   \n",
              "3                           Activin receptor type-2B       TKL   STKR   \n",
              "4  Uncharacterized aarF domain-containing protein...  Atypical   ABC1   \n",
              "\n",
              "  SubFamily UniprotID  \n",
              "0       NaN    P00519  \n",
              "1       NaN    Q07912  \n",
              "2     STKR2    P27037  \n",
              "3     STKR2    Q13705  \n",
              "4    ABC1-A    Q96D53  "
            ],
            "text/html": [
              "\n",
              "\n",
              "  <div id=\"df-f13f5716-3f7e-4272-8df2-52116b396e55\">\n",
              "    <div class=\"colab-df-container\">\n",
              "      <div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>xName</th>\n",
              "      <th>Manning Name</th>\n",
              "      <th>HGNC Name</th>\n",
              "      <th>Kinase Name</th>\n",
              "      <th>Group</th>\n",
              "      <th>Family</th>\n",
              "      <th>SubFamily</th>\n",
              "      <th>UniprotID</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>0</th>\n",
              "      <td>ABL1</td>\n",
              "      <td>ABL</td>\n",
              "      <td>ABL1</td>\n",
              "      <td>Tyrosine-protein kinase ABL1</td>\n",
              "      <td>TK</td>\n",
              "      <td>Abl</td>\n",
              "      <td>NaN</td>\n",
              "      <td>P00519</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1</th>\n",
              "      <td>ACK</td>\n",
              "      <td>ACK</td>\n",
              "      <td>TNK2</td>\n",
              "      <td>Activated CDC42 kinase 1</td>\n",
              "      <td>TK</td>\n",
              "      <td>Ack</td>\n",
              "      <td>NaN</td>\n",
              "      <td>Q07912</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2</th>\n",
              "      <td>ACTR2</td>\n",
              "      <td>ACTR2</td>\n",
              "      <td>ACVR2A</td>\n",
              "      <td>Activin receptor type-2A</td>\n",
              "      <td>TKL</td>\n",
              "      <td>STKR</td>\n",
              "      <td>STKR2</td>\n",
              "      <td>P27037</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>3</th>\n",
              "      <td>ACTR2B</td>\n",
              "      <td>ACTR2B</td>\n",
              "      <td>ACVR2B</td>\n",
              "      <td>Activin receptor type-2B</td>\n",
              "      <td>TKL</td>\n",
              "      <td>STKR</td>\n",
              "      <td>STKR2</td>\n",
              "      <td>Q13705</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>4</th>\n",
              "      <td>ADCK4</td>\n",
              "      <td>ADCK4</td>\n",
              "      <td>ADCK4</td>\n",
              "      <td>Uncharacterized aarF domain-containing protein...</td>\n",
              "      <td>Atypical</td>\n",
              "      <td>ABC1</td>\n",
              "      <td>ABC1-A</td>\n",
              "      <td>Q96D53</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>\n",
              "      <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-f13f5716-3f7e-4272-8df2-52116b396e55')\"\n",
              "              title=\"Convert this dataframe to an interactive table.\"\n",
              "              style=\"display:none;\">\n",
              "\n",
              "  <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
              "       width=\"24px\">\n",
              "    <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\n",
              "    <path d=\"M18.56 5.44l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94zm-11 1L8.5 8.5l.94-2.06 2.06-.94-2.06-.94L8.5 2.5l-.94 2.06-2.06.94zm10 10l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94z\"/><path d=\"M17.41 7.96l-1.37-1.37c-.4-.4-.92-.59-1.43-.59-.52 0-1.04.2-1.43.59L10.3 9.45l-7.72 7.72c-.78.78-.78 2.05 0 2.83L4 21.41c.39.39.9.59 1.41.59.51 0 1.02-.2 1.41-.59l7.78-7.78 2.81-2.81c.8-.78.8-2.07 0-2.86zM5.41 20L4 18.59l7.72-7.72 1.47 1.35L5.41 20z\"/>\n",
              "  </svg>\n",
              "      </button>\n",
              "\n",
              "\n",
              "\n",
              "    <div id=\"df-c46416a5-76f1-4fa0-8b5a-2e1204ec56ff\">\n",
              "      <button class=\"colab-df-quickchart\" onclick=\"quickchart('df-c46416a5-76f1-4fa0-8b5a-2e1204ec56ff')\"\n",
              "              title=\"Suggest charts.\"\n",
              "              style=\"display:none;\">\n",
              "\n",
              "<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
              "     width=\"24px\">\n",
              "    <g>\n",
              "        <path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H7v-7h2v7zm4 0h-2V7h2v10zm4 0h-2v-4h2v4z\"/>\n",
              "    </g>\n",
              "</svg>\n",
              "      </button>\n",
              "    </div>\n",
              "\n",
              "<style>\n",
              "  .colab-df-quickchart {\n",
              "    background-color: #E8F0FE;\n",
              "    border: none;\n",
              "    border-radius: 50%;\n",
              "    cursor: pointer;\n",
              "    display: none;\n",
              "    fill: #1967D2;\n",
              "    height: 32px;\n",
              "    padding: 0 0 0 0;\n",
              "    width: 32px;\n",
              "  }\n",
              "\n",
              "  .colab-df-quickchart:hover {\n",
              "    background-color: #E2EBFA;\n",
              "    box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
              "    fill: #174EA6;\n",
              "  }\n",
              "\n",
              "  [theme=dark] .colab-df-quickchart {\n",
              "    background-color: #3B4455;\n",
              "    fill: #D2E3FC;\n",
              "  }\n",
              "\n",
              "  [theme=dark] .colab-df-quickchart:hover {\n",
              "    background-color: #434B5C;\n",
              "    box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
              "    filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
              "    fill: #FFFFFF;\n",
              "  }\n",
              "</style>\n",
              "\n",
              "    <script>\n",
              "      async function quickchart(key) {\n",
              "        const containerElement = document.querySelector('#' + key);\n",
              "        const charts = await google.colab.kernel.invokeFunction(\n",
              "            'suggestCharts', [key], {});\n",
              "      }\n",
              "    </script>\n",
              "\n",
              "      <script>\n",
              "\n",
              "function displayQuickchartButton(domScope) {\n",
              "  let quickchartButtonEl =\n",
              "    domScope.querySelector('#df-c46416a5-76f1-4fa0-8b5a-2e1204ec56ff button.colab-df-quickchart');\n",
              "  quickchartButtonEl.style.display =\n",
              "    google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
              "}\n",
              "\n",
              "        displayQuickchartButton(document);\n",
              "      </script>\n",
              "      <style>\n",
              "    .colab-df-container {\n",
              "      display:flex;\n",
              "      flex-wrap:wrap;\n",
              "      gap: 12px;\n",
              "    }\n",
              "\n",
              "    .colab-df-convert {\n",
              "      background-color: #E8F0FE;\n",
              "      border: none;\n",
              "      border-radius: 50%;\n",
              "      cursor: pointer;\n",
              "      display: none;\n",
              "      fill: #1967D2;\n",
              "      height: 32px;\n",
              "      padding: 0 0 0 0;\n",
              "      width: 32px;\n",
              "    }\n",
              "\n",
              "    .colab-df-convert:hover {\n",
              "      background-color: #E2EBFA;\n",
              "      box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
              "      fill: #174EA6;\n",
              "    }\n",
              "\n",
              "    [theme=dark] .colab-df-convert {\n",
              "      background-color: #3B4455;\n",
              "      fill: #D2E3FC;\n",
              "    }\n",
              "\n",
              "    [theme=dark] .colab-df-convert:hover {\n",
              "      background-color: #434B5C;\n",
              "      box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
              "      filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
              "      fill: #FFFFFF;\n",
              "    }\n",
              "  </style>\n",
              "\n",
              "      <script>\n",
              "        const buttonEl =\n",
              "          document.querySelector('#df-f13f5716-3f7e-4272-8df2-52116b396e55 button.colab-df-convert');\n",
              "        buttonEl.style.display =\n",
              "          google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
              "\n",
              "        async function convertToInteractive(key) {\n",
              "          const element = document.querySelector('#df-f13f5716-3f7e-4272-8df2-52116b396e55');\n",
              "          const dataTable =\n",
              "            await google.colab.kernel.invokeFunction('convertToInteractive',\n",
              "                                                     [key], {});\n",
              "          if (!dataTable) return;\n",
              "\n",
              "          const docLinkHtml = 'Like what you see? Visit the ' +\n",
              "            '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
              "            + ' to learn more about interactive tables.';\n",
              "          element.innerHTML = '';\n",
              "          dataTable['output_type'] = 'display_data';\n",
              "          await google.colab.output.renderOutput(dataTable, element);\n",
              "          const docLink = document.createElement('div');\n",
              "          docLink.innerHTML = docLinkHtml;\n",
              "          element.appendChild(docLink);\n",
              "        }\n",
              "      </script>\n",
              "    </div>\n",
              "  </div>\n"
            ]
          },
          "metadata": {},
          "execution_count": 7
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "import shutil\n",
        "from IPython.display import Video\n",
        "\n",
        "response = requests.get(\n",
        "    \"https://archive.org/download/SlowMotionFlame/slomoflame_512kb.mp4\", stream=True\n",
        ")\n",
        "response.raise_for_status()\n",
        "\n",
        "with open(\"video.mp4\", \"wb\") as tmp:\n",
        "    for chunk in response.iter_content(chunk_size=8192):\n",
        "        tmp.write(chunk)\n",
        "\n"
      ],
      "metadata": {
        "id": "dBrcsxaxpqxg"
      },
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [
        "r = requests.get(\"https://www.uniprot.org/uniprot/P0DTC2\")\n",
        "r.raise_for_status()\n",
        "print(r.text[:5000])"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "kWo04-tTqDSa",
        "outputId": "522ac52b-fdf3-4541-a494-bec3243887ac"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "<!doctype html><html lang=\"en\"><head><meta charset=\"utf-8\"/><title>UniProt</title><meta name=\"viewport\" content=\"width=device-width,initial-scale=1\"/><meta name=\"theme-color\" content=\"#00639a\"/><link rel=\"preconnect\" href=\"https://rest.uniprot.org/\"/><link rel=\"preconnect\" href=\"https://fonts.googleapis.com\"/><link rel=\"preconnect\" href=\"https://fonts.gstatic.com\" crossorigin/><link href=\"https://fonts.googleapis.com/css?family=Lato:400,700|Source+Sans+Pro:600,700&display=optional\" rel=\"stylesheet\"/><link rel=\"apple-touch-icon\" sizes=\"180x180\" href=\"/apple-touch-icon.png\"/><link rel=\"shortcut icon\" type=\"image/png\" sizes=\"144x144\" href=\"/mstile-144x144.png\"/><link rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/favicon-32x32.png\"/><link rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/favicon-16x16.png\"/><link rel=\"manifest\" href=\"/manifest.json\"/><script async src=\"https://www.googletagmanager.com/gtag/js?id=G-V6TXEC4BDF\"></script><script>window.dataLayer = window.dataLayer || [];\n",
            "      function gtag() {\n",
            "        dataLayer.push(arguments);\n",
            "      }\n",
            "      gtag('js', new Date());\n",
            "\n",
            "      // GA4\n",
            "      gtag('config', 'G-V6TXEC4BDF', {\n",
            "        anonymize_ip: true,\n",
            "        allow_google_signals: false,\n",
            "        allow_ad_personalization_signals: false,\n",
            "        restricted_data_processing: true,\n",
            "        custom_map: {\n",
            "          dimension1: 'result_view',\n",
            "          metric1: 'result_view_set',\n",
            "        },\n",
            "        send_page_view: false,\n",
            "      });\n",
            "      // UA\n",
            "      gtag('config', 'UA-6228219-1', {\n",
            "        anonymize_ip: true,\n",
            "        allow_google_signals: false,\n",
            "        allow_ad_personalization_signals: false,\n",
            "        restricted_data_processing: true,\n",
            "        custom_map: {\n",
            "          dimension1: 'result_view',\n",
            "          metric1: 'result_view_set',\n",
            "        },\n",
            "        send_page_view: false,\n",
            "      });</script><script>(function (h, o, t, j, a, r) {\n",
            "        h.hj =\n",
            "          h.hj ||\n",
            "          function () {\n",
            "            (h.hj.q = h.hj.q || []).push(arguments);\n",
            "          };\n",
            "        h._hjSettings = { hjid: 2638207, hjsv: 6 };\n",
            "        a = o.getElementsByTagName('head')[0];\n",
            "        r = o.createElement('script');\n",
            "        r.async = 1;\n",
            "        r.src = t + h._hjSettings.hjid + j + h._hjSettings.hjsv;\n",
            "        a.appendChild(r);\n",
            "      })(window, document, 'https://static.hotjar.com/c/hotjar-', '.js?sv=');</script><style>#root > .fallback {\n",
            "        height: 90vh;\n",
            "        display: flex;\n",
            "        align-items: center;\n",
            "        justify-content: center;\n",
            "        opacity: 0;\n",
            "        animation: fallback-appear 1s 1 10s both;\n",
            "      }\n",
            "\n",
            "      #root > .fallback > div {\n",
            "        max-width: 60ch;\n",
            "      }\n",
            "\n",
            "      #root > .fallback li {\n",
            "        margin-bottom: 1em;\n",
            "      }\n",
            "\n",
            "      @keyframes fallback-appear {\n",
            "        from {\n",
            "          opacity: 0;\n",
            "        }\n",
            "        to {\n",
            "          opacity: 1;\n",
            "        }\n",
            "      }</style><link rel=\"stylesheet\" href=\"/styles.9d35f2.css\"/><link rel=\"stylesheet\" href=\"/styles.8a7ea9.css\"/></head><body><div id=\"root\"><div class=\"fallback\" data-nosnippet><div><h1>UniProt website fallback message</h1>If you are not seeing anything on this page, it might be for multiple reasons:<ul><li><strong>You might have JavaScript disabled</strong>: make sure to enable JavaScript on your browser, or use a browser that supports JavaScript.</li><li><strong>You might have an outdated browser</strong>: make sure that your browser is up to date as older versions might not work with the website.</li><li><strong>There might have been a network issue</strong>: ensure that your connectivity is stable and try to reload the page to see if it solves the issue. <button onclick=\"location.reload();\">Reload this page</button></li></ul></div></div></div><script nomodule>// workaround for Safari 10.1 supporting module but ignoring nomodule\n",
            "      // From https://gist.github.com/samthor/64b114e4a4f539915a95b91ffd340acc\n",
            "      (function () {\n",
            "        var d = document;\n",
            "        var c = d.createElement('script');\n",
            "        if (!('noModule' in c) && 'onbeforeload' in c) {\n",
            "          var s = false;\n",
            "          d.addEventListener(\n",
            "            'beforeload',\n",
            "            function (e) {\n",
            "              if (e.target === c) {\n",
            "                s = true;\n",
            "              } else if (!e.target.hasAttribute('nomodule') || !s) {\n",
            "                return;\n",
            "              }\n",
            "              e.preventDefault();\n",
            "            },\n",
            "            true\n",
            "          );\n",
            "\n",
            "          c.type = 'module';\n",
            "          c.src = '.';\n",
            "          d.head.appendChild(c);\n",
            "          c.remove();\n",
            "        }\n",
            "      })();</script><script type=\"module\" src=\"/modern.app.87b505.js\"></script><script type=\"module\" src=\"/modern.app.9062d6.js\"></script><script type=\"module\" src=\"/modern.app.922f2d.js\"></script><script type=\"module\" src=\"/modern.app.105057.js\"></script><script type=\"module\" src=\"/modern.app.8d4986.js\"></script><script nomodule defer=\"defer\" src=\"/legacy.app.118e10.js\"></script><script nomodule defer=\"defer\" src=\"/legacy.app.9062d6.js\"></script><script nomodule defer=\"defer\" src=\"/legacy.app.922f2d.js\"></script><script nomodule defer=\"defer\" src=\"/legacy\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "r = requests.get(\"https://www.uniprot.org/uniprot/P0DTC2.txt\")\n",
        "r.raise_for_status()\n",
        "print(r.text[:1000])"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "zgCPbLqvqL4P",
        "outputId": "3759a30f-7d7e-44c7-a9d2-f3111491f108"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "ID   SPIKE_SARS2             Reviewed;        1273 AA.\n",
            "AC   P0DTC2;\n",
            "DT   22-APR-2020, integrated into UniProtKB/Swiss-Prot.\n",
            "DT   22-APR-2020, sequence version 1.\n",
            "DT   28-JUN-2023, entry version 17.\n",
            "DE   RecName: Full=Spike glycoprotein {ECO:0000255|HAMAP-Rule:MF_04099};\n",
            "DE            Short=S glycoprotein {ECO:0000255|HAMAP-Rule:MF_04099};\n",
            "DE   AltName: Full=E2 {ECO:0000255|HAMAP-Rule:MF_04099};\n",
            "DE   AltName: Full=Peplomer protein {ECO:0000255|HAMAP-Rule:MF_04099};\n",
            "DE   Contains:\n",
            "DE     RecName: Full=Spike protein S1 {ECO:0000255|HAMAP-Rule:MF_04099};\n",
            "DE   Contains:\n",
            "DE     RecName: Full=Spike protein S2 {ECO:0000255|HAMAP-Rule:MF_04099};\n",
            "DE   Contains:\n",
            "DE     RecName: Full=Spike protein S2' {ECO:0000255|HAMAP-Rule:MF_04099};\n",
            "DE   Flags: Precursor;\n",
            "GN   Name=S {ECO:0000255|HAMAP-Rule:MF_04099}; ORFNames=2;\n",
            "OS   Severe acute respiratory syndrome coronavirus 2 (2019-nCoV) (SARS-CoV-2).\n",
            "OC   Viruses; Riboviria; Orthornavirae; Pisuviricota; Pisoniviricetes;\n",
            "OC   Nidovirales; Cornidovirineae;\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "sequence_block = False\n",
        "lines = []\n",
        "for line in r.text.splitlines():\n",
        "    if line.startswith(\"SQ\"):\n",
        "        sequence_block = True\n",
        "    elif line.startswith(\"//\"):\n",
        "        sequence_block = False\n",
        "\n",
        "    if sequence_block:\n",
        "        line = line.strip()  # delete spaces and newlines at the beginning and end of the line\n",
        "        line = line.replace(\" \", \"\")  # delete spaces in the middle of the line\n",
        "        lines.append(line)\n",
        "sequence = \"\".join(lines[1:])  # the first line is the metadata header\n",
        "print(f\"This is your sequence: {sequence}\")\n",
        "\n",
        "# NBVAL_CHECK_OUTPUT"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "F0JtARSyqUS6",
        "outputId": "85d7e245-b9a6-4839-ff91-9e9410d745ab"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "This is your sequence: MFVFLVLLPLVSSQCVNLTTRTQLPPAYTNSFTRGVYYPDKVFRSSVLHSTQDLFLPFFSNVTWFHAIHVSGTNGTKRFDNPVLPFNDGVYFASTEKSNIIRGWIFGTTLDSKTQSLLIVNNATNVVIKVCEFQFCNDPFLGVYYHKNNKSWMESEFRVYSSANNCTFEYVSQPFLMDLEGKQGNFKNLREFVFKNIDGYFKIYSKHTPINLVRDLPQGFSALEPLVDLPIGINITRFQTLLALHRSYLTPGDSSSGWTAGAAAYYVGYLQPRTFLLKYNENGTITDAVDCALDPLSETKCTLKSFTVEKGIYQTSNFRVQPTESIVRFPNITNLCPFGEVFNATRFASVYAWNRKRISNCVADYSVLYNSASFSTFKCYGVSPTKLNDLCFTNVYADSFVIRGDEVRQIAPGQTGKIADYNYKLPDDFTGCVIAWNSNNLDSKVGGNYNYLYRLFRKSNLKPFERDISTEIYQAGSTPCNGVEGFNCYFPLQSYGFQPTNGVGYQPYRVVVLSFELLHAPATVCGPKKSTNLVKNKCVNFNFNGLTGTGVLTESNKKFLPFQQFGRDIADTTDAVRDPQTLEILDITPCSFGGVSVITPGTNTSNQVAVLYQDVNCTEVPVAIHADQLTPTWRVYSTGSNVFQTRAGCLIGAEHVNNSYECDIPIGAGICASYQTQTNSPRRARSVASQSIIAYTMSLGAENSVAYSNNSIAIPTNFTISVTTEILPVSMTKTSVDCTMYICGDSTECSNLLLQYGSFCTQLNRALTGIAVEQDKNTQEVFAQVKQIYKTPPIKDFGGFNFSQILPDPSKPSKRSFIEDLLFNKVTLADAGFIKQYGDCLGDIAARDLICAQKFNGLTVLPPLLTDEMIAQYTSALLAGTITSGWTFGAGAALQIPFAMQMAYRFNGIGVTQNVLYENQKLIANQFNSAIGKIQDSLSSTASALGKLQDVVNQNAQALNTLVKQLSSNFGAISSVLNDILSRLDKVEAEVQIDRLITGRLQSLQTYVTQQLIRAAEIRASANLAATKMSECVLGQSKRVDFCGKGYHLMSFPQSAPHGVVFLHVTYVPAQEKNFTTAPAICHDGKAHFPREGVFVSNGTHWFVTQRNFYEPQIITTDNTFVSGNCDVVIGIVNNTVYDPLQPELDSFKEELDKYFKNHTSPDVDLGDISGINASVVNIQKEIDRLNEVAKNLNESLIDLQELGKYEQYIKWPWYIWLGFIAGLIAIVMVTIMLCCMTSCCSCLKGCCSCGSCCKFDEDDSEPVLKGVKLHYT\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "r = requests.get(\"https://www.uniprot.org/uniprot/P0DTC2.fasta\")\n",
        "r.raise_for_status()\n",
        "print(r.text)\n",
        "\n",
        "# NBVAL_CHECK_OUTPUT"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "6OksP6Mbqbdn",
        "outputId": "8b28775d-6cc7-49b3-977e-18aeda891838"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            ">sp|P0DTC2|SPIKE_SARS2 Spike glycoprotein OS=Severe acute respiratory syndrome coronavirus 2 OX=2697049 GN=S PE=1 SV=1\n",
            "MFVFLVLLPLVSSQCVNLTTRTQLPPAYTNSFTRGVYYPDKVFRSSVLHSTQDLFLPFFS\n",
            "NVTWFHAIHVSGTNGTKRFDNPVLPFNDGVYFASTEKSNIIRGWIFGTTLDSKTQSLLIV\n",
            "NNATNVVIKVCEFQFCNDPFLGVYYHKNNKSWMESEFRVYSSANNCTFEYVSQPFLMDLE\n",
            "GKQGNFKNLREFVFKNIDGYFKIYSKHTPINLVRDLPQGFSALEPLVDLPIGINITRFQT\n",
            "LLALHRSYLTPGDSSSGWTAGAAAYYVGYLQPRTFLLKYNENGTITDAVDCALDPLSETK\n",
            "CTLKSFTVEKGIYQTSNFRVQPTESIVRFPNITNLCPFGEVFNATRFASVYAWNRKRISN\n",
            "CVADYSVLYNSASFSTFKCYGVSPTKLNDLCFTNVYADSFVIRGDEVRQIAPGQTGKIAD\n",
            "YNYKLPDDFTGCVIAWNSNNLDSKVGGNYNYLYRLFRKSNLKPFERDISTEIYQAGSTPC\n",
            "NGVEGFNCYFPLQSYGFQPTNGVGYQPYRVVVLSFELLHAPATVCGPKKSTNLVKNKCVN\n",
            "FNFNGLTGTGVLTESNKKFLPFQQFGRDIADTTDAVRDPQTLEILDITPCSFGGVSVITP\n",
            "GTNTSNQVAVLYQDVNCTEVPVAIHADQLTPTWRVYSTGSNVFQTRAGCLIGAEHVNNSY\n",
            "ECDIPIGAGICASYQTQTNSPRRARSVASQSIIAYTMSLGAENSVAYSNNSIAIPTNFTI\n",
            "SVTTEILPVSMTKTSVDCTMYICGDSTECSNLLLQYGSFCTQLNRALTGIAVEQDKNTQE\n",
            "VFAQVKQIYKTPPIKDFGGFNFSQILPDPSKPSKRSFIEDLLFNKVTLADAGFIKQYGDC\n",
            "LGDIAARDLICAQKFNGLTVLPPLLTDEMIAQYTSALLAGTITSGWTFGAGAALQIPFAM\n",
            "QMAYRFNGIGVTQNVLYENQKLIANQFNSAIGKIQDSLSSTASALGKLQDVVNQNAQALN\n",
            "TLVKQLSSNFGAISSVLNDILSRLDKVEAEVQIDRLITGRLQSLQTYVTQQLIRAAEIRA\n",
            "SANLAATKMSECVLGQSKRVDFCGKGYHLMSFPQSAPHGVVFLHVTYVPAQEKNFTTAPA\n",
            "ICHDGKAHFPREGVFVSNGTHWFVTQRNFYEPQIITTDNTFVSGNCDVVIGIVNNTVYDP\n",
            "LQPELDSFKEELDKYFKNHTSPDVDLGDISGINASVVNIQKEIDRLNEVAKNLNESLIDL\n",
            "QELGKYEQYIKWPWYIWLGFIAGLIAIVMVTIMLCCMTSCCSCLKGCCSCGSCCKFDEDD\n",
            "SEPVLKGVKLHYT\n",
            "\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "pip install Bio"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "-EVbWpuQqjB3",
        "outputId": "1f482117-1117-49d1-e203-007b40bbd8b0"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Successfully installed Bio-1.5.9 biopython-1.81 biothings-client-0.3.0 gprofiler-official-1.0.0 mygene-3.2.2\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "from Bio import SeqIO\n",
        "from tempfile import NamedTemporaryFile\n",
        "import os\n",
        "\n",
        "# Write response into a temporary text file\n",
        "with NamedTemporaryFile(suffix=\".fasta\", mode=\"w\", delete=False) as tmp:\n",
        "    tmp.write(r.text)\n",
        "\n",
        "# Create the BioPython object for sequence data:\n",
        "sequence = SeqIO.read(tmp.name, format=\"fasta\")\n",
        "\n",
        "# Delete temporary file now that we have read it\n",
        "os.remove(tmp.name)\n",
        "\n",
        "print(sequence.description)\n",
        "print(sequence.seq)\n",
        "\n",
        "# NBVAL_CHECK_OUTPUT"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "ZREEvJGOqg5h",
        "outputId": "9ffc4dfe-1d6c-44c3-ce12-8a1116884013"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "sp|P0DTC2|SPIKE_SARS2 Spike glycoprotein OS=Severe acute respiratory syndrome coronavirus 2 OX=2697049 GN=S PE=1 SV=1\n",
            "MFVFLVLLPLVSSQCVNLTTRTQLPPAYTNSFTRGVYYPDKVFRSSVLHSTQDLFLPFFSNVTWFHAIHVSGTNGTKRFDNPVLPFNDGVYFASTEKSNIIRGWIFGTTLDSKTQSLLIVNNATNVVIKVCEFQFCNDPFLGVYYHKNNKSWMESEFRVYSSANNCTFEYVSQPFLMDLEGKQGNFKNLREFVFKNIDGYFKIYSKHTPINLVRDLPQGFSALEPLVDLPIGINITRFQTLLALHRSYLTPGDSSSGWTAGAAAYYVGYLQPRTFLLKYNENGTITDAVDCALDPLSETKCTLKSFTVEKGIYQTSNFRVQPTESIVRFPNITNLCPFGEVFNATRFASVYAWNRKRISNCVADYSVLYNSASFSTFKCYGVSPTKLNDLCFTNVYADSFVIRGDEVRQIAPGQTGKIADYNYKLPDDFTGCVIAWNSNNLDSKVGGNYNYLYRLFRKSNLKPFERDISTEIYQAGSTPCNGVEGFNCYFPLQSYGFQPTNGVGYQPYRVVVLSFELLHAPATVCGPKKSTNLVKNKCVNFNFNGLTGTGVLTESNKKFLPFQQFGRDIADTTDAVRDPQTLEILDITPCSFGGVSVITPGTNTSNQVAVLYQDVNCTEVPVAIHADQLTPTWRVYSTGSNVFQTRAGCLIGAEHVNNSYECDIPIGAGICASYQTQTNSPRRARSVASQSIIAYTMSLGAENSVAYSNNSIAIPTNFTISVTTEILPVSMTKTSVDCTMYICGDSTECSNLLLQYGSFCTQLNRALTGIAVEQDKNTQEVFAQVKQIYKTPPIKDFGGFNFSQILPDPSKPSKRSFIEDLLFNKVTLADAGFIKQYGDCLGDIAARDLICAQKFNGLTVLPPLLTDEMIAQYTSALLAGTITSGWTFGAGAALQIPFAMQMAYRFNGIGVTQNVLYENQKLIANQFNSAIGKIQDSLSSTASALGKLQDVVNQNAQALNTLVKQLSSNFGAISSVLNDILSRLDKVEAEVQIDRLITGRLQSLQTYVTQQLIRAAEIRASANLAATKMSECVLGQSKRVDFCGKGYHLMSFPQSAPHGVVFLHVTYVPAQEKNFTTAPAICHDGKAHFPREGVFVSNGTHWFVTQRNFYEPQIITTDNTFVSGNCDVVIGIVNNTVYDPLQPELDSFKEELDKYFKNHTSPDVDLGDISGINASVVNIQKEIDRLNEVAKNLNESLIDLQELGKYEQYIKWPWYIWLGFIAGLIAIVMVTIMLCCMTSCCSCLKGCCSCGSCCKFDEDDSEPVLKGVKLHYT\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "def sequence_for_uniprot_id(uniprot_id):\n",
        "    \"\"\"\n",
        "    Returns the FASTA sequence of a given Uniprot ID using\n",
        "    the UniProt URL-based API\n",
        "\n",
        "    Parameters\n",
        "    ----------\n",
        "    uniprot_id : str\n",
        "\n",
        "    Returns\n",
        "    -------\n",
        "    Bio.SeqIO.SeqRecord\n",
        "    \"\"\"\n",
        "    #                                                  ⬇ this is key part!\n",
        "    r = requests.get(f\"https://www.uniprot.org/uniprot/{uniprot_id}.fasta\")\n",
        "    r.raise_for_status()\n",
        "\n",
        "    with NamedTemporaryFile(suffix=\".fasta\", mode=\"w\", delete=False) as tmp:\n",
        "        tmp.write(r.text)\n",
        "\n",
        "    sequence = SeqIO.read(tmp.name, format=\"fasta\")\n",
        "    os.remove(tmp.name)\n",
        "\n",
        "    return sequence"
      ],
      "metadata": {
        "id": "UOR2Kj6Cq3A1"
      },
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [
        "sequence = sequence_for_uniprot_id(\"P12931\")\n",
        "print(sequence)\n",
        "\n",
        "# NBVAL_CHECK_OUTPUT"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "CmhdapJjq5Ee",
        "outputId": "4b25909f-074c-457f-f3b7-497eeed8409c"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "ID: sp|P12931|SRC_HUMAN\n",
            "Name: sp|P12931|SRC_HUMAN\n",
            "Description: sp|P12931|SRC_HUMAN Proto-oncogene tyrosine-protein kinase Src OS=Homo sapiens OX=9606 GN=SRC PE=1 SV=3\n",
            "Number of features: 0\n",
            "Seq('MGSNKSKPKDASQRRRSLEPAENVHGAGGGAFPASQTPSKPASADGHRGPSAAF...ENL')\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "import requests\n",
        "\n",
        "response = requests.get(\"https://klifs.net/api/kinase_groups\")\n",
        "response.raise_for_status()\n",
        "result = response.json()\n",
        "result\n",
        "\n",
        "# NBVAL_CHECK_OUTPUT"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "rmgzJNX6rNm4",
        "outputId": "63f36f42-d99e-4b43-c895-4e7321dc9a90"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "['AGC', 'CAMK', 'CK1', 'CMGC', 'Other', 'STE', 'TK', 'TKL']"
            ]
          },
          "metadata": {},
          "execution_count": 19
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "response = requests.get(\"https://klifs.net/api/kinase_families?kinase_group=TK\")\n",
        "response.raise_for_status()\n",
        "result = response.json()\n",
        "result"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "dkR7R27RrSSh",
        "outputId": "574a4ed8-91fe-41c7-89ee-7fe25340092d"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "['ALK',\n",
              " 'Abl',\n",
              " 'Ack',\n",
              " 'Alk',\n",
              " 'Axl',\n",
              " 'CCK4',\n",
              " 'Csk',\n",
              " 'DDR',\n",
              " 'EGFR',\n",
              " 'Eph',\n",
              " 'FAK',\n",
              " 'FGFR',\n",
              " 'Fer',\n",
              " 'InsR',\n",
              " 'JakA',\n",
              " 'JakB',\n",
              " 'Lmr',\n",
              " 'Met',\n",
              " 'Musk',\n",
              " 'PDGFR',\n",
              " 'Ret',\n",
              " 'Ror',\n",
              " 'Ryk',\n",
              " 'Sev',\n",
              " 'Src',\n",
              " 'Syk',\n",
              " 'TK-Unique',\n",
              " 'Tec',\n",
              " 'Tie',\n",
              " 'Trk',\n",
              " 'VEGFR']"
            ]
          },
          "metadata": {},
          "execution_count": 20
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "response = requests.get(\"https://klifs.net/api/kinase_families\", params={\"kinase_group\": \"TK\"})\n",
        "# You can see how requests formatted the URL for you\n",
        "print(\"Queried\", response.url)\n",
        "response.raise_for_status()\n",
        "result = response.json()\n",
        "result"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "Fq0RR-jlrXxK",
        "outputId": "0123b196-df37-4ee3-ef78-5c738eb0f1f9"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Queried https://klifs.net/api/kinase_families?kinase_group=TK\n"
          ]
        },
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "['ALK',\n",
              " 'Abl',\n",
              " 'Ack',\n",
              " 'Alk',\n",
              " 'Axl',\n",
              " 'CCK4',\n",
              " 'Csk',\n",
              " 'DDR',\n",
              " 'EGFR',\n",
              " 'Eph',\n",
              " 'FAK',\n",
              " 'FGFR',\n",
              " 'Fer',\n",
              " 'InsR',\n",
              " 'JakA',\n",
              " 'JakB',\n",
              " 'Lmr',\n",
              " 'Met',\n",
              " 'Musk',\n",
              " 'PDGFR',\n",
              " 'Ret',\n",
              " 'Ror',\n",
              " 'Ryk',\n",
              " 'Sev',\n",
              " 'Src',\n",
              " 'Syk',\n",
              " 'TK-Unique',\n",
              " 'Tec',\n",
              " 'Tie',\n",
              " 'Trk',\n",
              " 'VEGFR']"
            ]
          },
          "metadata": {},
          "execution_count": 21
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "response = requests.get(\"https://klifs.net/api/kinase_information\", params={\"kinase_ID\": 22})\n",
        "response.raise_for_status()\n",
        "result = response.json()\n",
        "result\n",
        "\n",
        "# NBVAL_CHECK_OUTPUT"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "10PhziIYreCK",
        "outputId": "4a4391f0-24c5-44f1-a38a-2a56695763de"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "[{'kinase_ID': 22,\n",
              "  'name': 'MASTL',\n",
              "  'HGNC': 'MASTL',\n",
              "  'family': 'MAST',\n",
              "  'group': 'AGC',\n",
              "  'kinase_class': 'MASTL',\n",
              "  'species': 'Human',\n",
              "  'full_name': 'microtubule associated serine/threonine kinase like',\n",
              "  'uniprot': 'Q96GX5',\n",
              "  'iuphar': 0,\n",
              "  'pocket': 'KPISRGAFGKVYLYAVKVVQVQAERDALALSKPFIVHLYYSYLVMEYLIGGDVKSLLHIYLHRHGIIHRDLKPDNMLILTDFGLS'}]"
            ]
          },
          "metadata": {},
          "execution_count": 22
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "result[0][\"uniprot\"]"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 35
        },
        "id": "r1lb8JH8rikx",
        "outputId": "ecd084da-438f-4a43-e8c0-9394e34df4ec"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "'Q96GX5'"
            ],
            "application/vnd.google.colaboratory.intrinsic+json": {
              "type": "string"
            }
          },
          "metadata": {},
          "execution_count": 23
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "mastl = sequence_for_uniprot_id(result[0][\"uniprot\"])\n",
        "print(mastl.seq)\n",
        "\n",
        "# NBVAL_CHECK_OUTPUT"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "is8LSJKErmJR",
        "outputId": "18b85093-8293-4238-afcb-d9593ae26371"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "MDPTAGSKKEPGGGAATEEGVNRIAVPKPPSIEEFSIVKPISRGAFGKVYLGQKGGKLYAVKVVKKADMINKNMTHQVQAERDALALSKSPFIVHLYYSLQSANNVYLVMEYLIGGDVKSLLHIYGYFDEEMAVKYISEVALALDYLHRHGIIHRDLKPDNMLISNEGHIKLTDFGLSKVTLNRDINMMDILTTPSMAKPRQDYSRTPGQVLSLISSLGFNTPIAEKNQDPANILSACLSETSQLSQGLVCPMSVDQKDTTPYSSKLLKSCLETVASNPGMPVKCLTSNLLQSRKRLATSSASSQSHTFISSVESECHSSPKWEKDCQESDEALGPTMMSWNAVEKLCAKSANAIETKGFNKKDLELALSPIHNSSALPTTGRSCVNLAKKCFSGEVSWEAVELDVNNINMDTDTSQLGFHQSNQWAVDSGGISEEHLGKRSLKRNFELVDSSPCKKIIQNKKTCVEYKHNEMTNCYTNQNTGLTVEVQDLKLSVHKSQQNDCANKENIVNSFTDKQQTPEKLPIPMIAKNLMCELDEDCEKNSKRDYLSSSFLCSDDDRASKNISMNSDSSFPGISIMESPLESQPLDSDRSIKESSFEESNIEDPLIVTPDCQEKTSPKGVENPAVQESNQKMLGPPLEVLKTLASKRNAVAFRSFNSHINASNNSEPSRMNMTSLDAMDISCAYSGSYPMAITPTQKRRSCMPHQQTPNQIKSGTPYRTPKSVRRGVAPVDDGRILGTPDYLAPELLLGRAHGPAVDWWALGVCLFEFLTGIPPFNDETPQQVFQNILKRDIPWPEGEEKLSDNAQSAVEILLTIDDTKRAGMKELKRHPLFSDVDWENLQHQTMPFIPQPDDETDTSYFEARNTAQHLTVSGFSL\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "pip install bravado"
      ],
      "metadata": {
        "id": "4GJXJrkTr2nN"
      },
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [
        "from bravado.client import SwaggerClient\n",
        "\n",
        "KLIFS_SWAGGER = \"https://klifs.net/swagger/swagger.json\"\n",
        "client = SwaggerClient.from_url(KLIFS_SWAGGER, config={\"validate_responses\": False})\n",
        "client"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "G5CHeoPOr05g",
        "outputId": "1c4b07b4-b66d-427f-a07a-fe7c246dc880"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "SwaggerClient(https://klifs.net/api)"
            ]
          },
          "metadata": {},
          "execution_count": 28
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "results = client.Information.get_kinase_information(kinase_ID=[22]).result()\n",
        "result = results[0]\n",
        "result"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "g0vi1l2UsPQ9",
        "outputId": "3ea311be-5229-467e-b95f-5c0a5d49fe60"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "KinaseInformation(HGNC='MASTL', family='MAST', full_name='microtubule associated serine/threonine kinase like', group='AGC', iuphar=0, kinase_ID=22, kinase_class='MASTL', name='MASTL', pocket='KPISRGAFGKVYLYAVKVVQVQAERDALALSKPFIVHLYYSYLVMEYLIGGDVKSLLHIYLHRHGIIHRDLKPDNMLILTDFGLS', species='Human', uniprot='Q96GX5')"
            ]
          },
          "metadata": {},
          "execution_count": 29
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "import requests\n",
        "from bs4 import BeautifulSoup\n",
        "import numpy as np\n",
        "import pandas as pd\n",
        "\n",
        "r = requests.get(\"https://en.wikipedia.org/wiki/Proteinogenic_amino_acid\")\n",
        "r.raise_for_status()\n",
        "\n",
        "# To guess the correct steps here, you will have to inspect the HTML code by hand\n",
        "# Tip: use right-click + inspect content in any webpage to land in the HTML definition ;)\n",
        "html = BeautifulSoup(r.text)\n",
        "header = html.find(\"span\", id=\"General_chemical_properties\")\n",
        "table = header.find_all_next()[4]\n",
        "table_body = table.find(\"tbody\")\n",
        "\n",
        "data = []\n",
        "for row in table_body.find_all(\"tr\"):\n",
        "    cells = row.find_all(\"td\")\n",
        "    if cells:\n",
        "        data.append([])\n",
        "    for cell in cells:\n",
        "        cell_content = cell.text.strip()\n",
        "        try:  # convert to float if possible\n",
        "            cell_content = float(cell_content)\n",
        "        except ValueError:\n",
        "            pass\n",
        "        data[-1].append(cell_content)\n",
        "\n",
        "# Empty fields are denoted with \"?\" which casts respective columns to object types\n",
        "# (here mix of strings and floats) but we want float64, therefore replace \"?\" with NaN values\n",
        "pd.DataFrame.from_records(data).replace(\"?\", np.nan)\n",
        "\n",
        "# NBVAL_CHECK_OUTPUT"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 739
        },
        "id": "sMBWQFsVseTO",
        "outputId": "ac8dbd45-e46c-422f-9488-dc999b542384"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "    0    1          2      3     4      5\n",
              "0   A  Ala   89.09404   6.01  2.35   9.87\n",
              "1   C  Cys  121.15404   5.05  1.92  10.70\n",
              "2   D  Asp  133.10384   2.85  1.99   9.90\n",
              "3   E  Glu  147.13074   3.15  2.10   9.47\n",
              "4   F  Phe  165.19184   5.49  2.20   9.31\n",
              "5   G  Gly   75.06714   6.06  2.35   9.78\n",
              "6   H  His  155.15634   7.60  1.80   9.33\n",
              "7   I  Ile  131.17464   6.05  2.32   9.76\n",
              "8   K  Lys  146.18934   9.60  2.16   9.06\n",
              "9   L  Leu  131.17464   6.01  2.33   9.74\n",
              "10  M  Met  149.20784   5.74  2.13   9.28\n",
              "11  N  Asn  132.11904   5.41  2.14   8.72\n",
              "12  O  Pyl  255.31000    NaN   NaN    NaN\n",
              "13  P  Pro  115.13194   6.30  1.95  10.64\n",
              "14  Q  Gln  146.14594   5.65  2.17   9.13\n",
              "15  R  Arg  174.20274  10.76  1.82   8.99\n",
              "16  S  Ser  105.09344   5.68  2.19   9.21\n",
              "17  T  Thr  119.12034   5.60  2.09   9.10\n",
              "18  U  Sec  168.05300   5.47  1.91  10.00\n",
              "19  V  Val  117.14784   6.00  2.39   9.74\n",
              "20  W  Trp  204.22844   5.89  2.46   9.41\n",
              "21  Y  Tyr  181.19124   5.64  2.20   9.21"
            ],
            "text/html": [
              "\n",
              "\n",
              "  <div id=\"df-3bab8612-ba38-4756-bc66-0bcbb68393d9\">\n",
              "    <div class=\"colab-df-container\">\n",
              "      <div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>0</th>\n",
              "      <th>1</th>\n",
              "      <th>2</th>\n",
              "      <th>3</th>\n",
              "      <th>4</th>\n",
              "      <th>5</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>0</th>\n",
              "      <td>A</td>\n",
              "      <td>Ala</td>\n",
              "      <td>89.09404</td>\n",
              "      <td>6.01</td>\n",
              "      <td>2.35</td>\n",
              "      <td>9.87</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1</th>\n",
              "      <td>C</td>\n",
              "      <td>Cys</td>\n",
              "      <td>121.15404</td>\n",
              "      <td>5.05</td>\n",
              "      <td>1.92</td>\n",
              "      <td>10.70</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2</th>\n",
              "      <td>D</td>\n",
              "      <td>Asp</td>\n",
              "      <td>133.10384</td>\n",
              "      <td>2.85</td>\n",
              "      <td>1.99</td>\n",
              "      <td>9.90</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>3</th>\n",
              "      <td>E</td>\n",
              "      <td>Glu</td>\n",
              "      <td>147.13074</td>\n",
              "      <td>3.15</td>\n",
              "      <td>2.10</td>\n",
              "      <td>9.47</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>4</th>\n",
              "      <td>F</td>\n",
              "      <td>Phe</td>\n",
              "      <td>165.19184</td>\n",
              "      <td>5.49</td>\n",
              "      <td>2.20</td>\n",
              "      <td>9.31</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>5</th>\n",
              "      <td>G</td>\n",
              "      <td>Gly</td>\n",
              "      <td>75.06714</td>\n",
              "      <td>6.06</td>\n",
              "      <td>2.35</td>\n",
              "      <td>9.78</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>6</th>\n",
              "      <td>H</td>\n",
              "      <td>His</td>\n",
              "      <td>155.15634</td>\n",
              "      <td>7.60</td>\n",
              "      <td>1.80</td>\n",
              "      <td>9.33</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>7</th>\n",
              "      <td>I</td>\n",
              "      <td>Ile</td>\n",
              "      <td>131.17464</td>\n",
              "      <td>6.05</td>\n",
              "      <td>2.32</td>\n",
              "      <td>9.76</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>8</th>\n",
              "      <td>K</td>\n",
              "      <td>Lys</td>\n",
              "      <td>146.18934</td>\n",
              "      <td>9.60</td>\n",
              "      <td>2.16</td>\n",
              "      <td>9.06</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>9</th>\n",
              "      <td>L</td>\n",
              "      <td>Leu</td>\n",
              "      <td>131.17464</td>\n",
              "      <td>6.01</td>\n",
              "      <td>2.33</td>\n",
              "      <td>9.74</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>10</th>\n",
              "      <td>M</td>\n",
              "      <td>Met</td>\n",
              "      <td>149.20784</td>\n",
              "      <td>5.74</td>\n",
              "      <td>2.13</td>\n",
              "      <td>9.28</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>11</th>\n",
              "      <td>N</td>\n",
              "      <td>Asn</td>\n",
              "      <td>132.11904</td>\n",
              "      <td>5.41</td>\n",
              "      <td>2.14</td>\n",
              "      <td>8.72</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>12</th>\n",
              "      <td>O</td>\n",
              "      <td>Pyl</td>\n",
              "      <td>255.31000</td>\n",
              "      <td>NaN</td>\n",
              "      <td>NaN</td>\n",
              "      <td>NaN</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>13</th>\n",
              "      <td>P</td>\n",
              "      <td>Pro</td>\n",
              "      <td>115.13194</td>\n",
              "      <td>6.30</td>\n",
              "      <td>1.95</td>\n",
              "      <td>10.64</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>14</th>\n",
              "      <td>Q</td>\n",
              "      <td>Gln</td>\n",
              "      <td>146.14594</td>\n",
              "      <td>5.65</td>\n",
              "      <td>2.17</td>\n",
              "      <td>9.13</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>15</th>\n",
              "      <td>R</td>\n",
              "      <td>Arg</td>\n",
              "      <td>174.20274</td>\n",
              "      <td>10.76</td>\n",
              "      <td>1.82</td>\n",
              "      <td>8.99</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>16</th>\n",
              "      <td>S</td>\n",
              "      <td>Ser</td>\n",
              "      <td>105.09344</td>\n",
              "      <td>5.68</td>\n",
              "      <td>2.19</td>\n",
              "      <td>9.21</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>17</th>\n",
              "      <td>T</td>\n",
              "      <td>Thr</td>\n",
              "      <td>119.12034</td>\n",
              "      <td>5.60</td>\n",
              "      <td>2.09</td>\n",
              "      <td>9.10</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>18</th>\n",
              "      <td>U</td>\n",
              "      <td>Sec</td>\n",
              "      <td>168.05300</td>\n",
              "      <td>5.47</td>\n",
              "      <td>1.91</td>\n",
              "      <td>10.00</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>19</th>\n",
              "      <td>V</td>\n",
              "      <td>Val</td>\n",
              "      <td>117.14784</td>\n",
              "      <td>6.00</td>\n",
              "      <td>2.39</td>\n",
              "      <td>9.74</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>20</th>\n",
              "      <td>W</td>\n",
              "      <td>Trp</td>\n",
              "      <td>204.22844</td>\n",
              "      <td>5.89</td>\n",
              "      <td>2.46</td>\n",
              "      <td>9.41</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>21</th>\n",
              "      <td>Y</td>\n",
              "      <td>Tyr</td>\n",
              "      <td>181.19124</td>\n",
              "      <td>5.64</td>\n",
              "      <td>2.20</td>\n",
              "      <td>9.21</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>\n",
              "      <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-3bab8612-ba38-4756-bc66-0bcbb68393d9')\"\n",
              "              title=\"Convert this dataframe to an interactive table.\"\n",
              "              style=\"display:none;\">\n",
              "\n",
              "  <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
              "       width=\"24px\">\n",
              "    <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\n",
              "    <path d=\"M18.56 5.44l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94zm-11 1L8.5 8.5l.94-2.06 2.06-.94-2.06-.94L8.5 2.5l-.94 2.06-2.06.94zm10 10l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94z\"/><path d=\"M17.41 7.96l-1.37-1.37c-.4-.4-.92-.59-1.43-.59-.52 0-1.04.2-1.43.59L10.3 9.45l-7.72 7.72c-.78.78-.78 2.05 0 2.83L4 21.41c.39.39.9.59 1.41.59.51 0 1.02-.2 1.41-.59l7.78-7.78 2.81-2.81c.8-.78.8-2.07 0-2.86zM5.41 20L4 18.59l7.72-7.72 1.47 1.35L5.41 20z\"/>\n",
              "  </svg>\n",
              "      </button>\n",
              "\n",
              "\n",
              "\n",
              "    <div id=\"df-2a66ff0b-fee1-423c-b6fe-dd31990b763b\">\n",
              "      <button class=\"colab-df-quickchart\" onclick=\"quickchart('df-2a66ff0b-fee1-423c-b6fe-dd31990b763b')\"\n",
              "              title=\"Suggest charts.\"\n",
              "              style=\"display:none;\">\n",
              "\n",
              "<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
              "     width=\"24px\">\n",
              "    <g>\n",
              "        <path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H7v-7h2v7zm4 0h-2V7h2v10zm4 0h-2v-4h2v4z\"/>\n",
              "    </g>\n",
              "</svg>\n",
              "      </button>\n",
              "    </div>\n",
              "\n",
              "<style>\n",
              "  .colab-df-quickchart {\n",
              "    background-color: #E8F0FE;\n",
              "    border: none;\n",
              "    border-radius: 50%;\n",
              "    cursor: pointer;\n",
              "    display: none;\n",
              "    fill: #1967D2;\n",
              "    height: 32px;\n",
              "    padding: 0 0 0 0;\n",
              "    width: 32px;\n",
              "  }\n",
              "\n",
              "  .colab-df-quickchart:hover {\n",
              "    background-color: #E2EBFA;\n",
              "    box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
              "    fill: #174EA6;\n",
              "  }\n",
              "\n",
              "  [theme=dark] .colab-df-quickchart {\n",
              "    background-color: #3B4455;\n",
              "    fill: #D2E3FC;\n",
              "  }\n",
              "\n",
              "  [theme=dark] .colab-df-quickchart:hover {\n",
              "    background-color: #434B5C;\n",
              "    box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
              "    filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
              "    fill: #FFFFFF;\n",
              "  }\n",
              "</style>\n",
              "\n",
              "    <script>\n",
              "      async function quickchart(key) {\n",
              "        const containerElement = document.querySelector('#' + key);\n",
              "        const charts = await google.colab.kernel.invokeFunction(\n",
              "            'suggestCharts', [key], {});\n",
              "      }\n",
              "    </script>\n",
              "\n",
              "      <script>\n",
              "\n",
              "function displayQuickchartButton(domScope) {\n",
              "  let quickchartButtonEl =\n",
              "    domScope.querySelector('#df-2a66ff0b-fee1-423c-b6fe-dd31990b763b button.colab-df-quickchart');\n",
              "  quickchartButtonEl.style.display =\n",
              "    google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
              "}\n",
              "\n",
              "        displayQuickchartButton(document);\n",
              "      </script>\n",
              "      <style>\n",
              "    .colab-df-container {\n",
              "      display:flex;\n",
              "      flex-wrap:wrap;\n",
              "      gap: 12px;\n",
              "    }\n",
              "\n",
              "    .colab-df-convert {\n",
              "      background-color: #E8F0FE;\n",
              "      border: none;\n",
              "      border-radius: 50%;\n",
              "      cursor: pointer;\n",
              "      display: none;\n",
              "      fill: #1967D2;\n",
              "      height: 32px;\n",
              "      padding: 0 0 0 0;\n",
              "      width: 32px;\n",
              "    }\n",
              "\n",
              "    .colab-df-convert:hover {\n",
              "      background-color: #E2EBFA;\n",
              "      box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
              "      fill: #174EA6;\n",
              "    }\n",
              "\n",
              "    [theme=dark] .colab-df-convert {\n",
              "      background-color: #3B4455;\n",
              "      fill: #D2E3FC;\n",
              "    }\n",
              "\n",
              "    [theme=dark] .colab-df-convert:hover {\n",
              "      background-color: #434B5C;\n",
              "      box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
              "      filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
              "      fill: #FFFFFF;\n",
              "    }\n",
              "  </style>\n",
              "\n",
              "      <script>\n",
              "        const buttonEl =\n",
              "          document.querySelector('#df-3bab8612-ba38-4756-bc66-0bcbb68393d9 button.colab-df-convert');\n",
              "        buttonEl.style.display =\n",
              "          google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
              "\n",
              "        async function convertToInteractive(key) {\n",
              "          const element = document.querySelector('#df-3bab8612-ba38-4756-bc66-0bcbb68393d9');\n",
              "          const dataTable =\n",
              "            await google.colab.kernel.invokeFunction('convertToInteractive',\n",
              "                                                     [key], {});\n",
              "          if (!dataTable) return;\n",
              "\n",
              "          const docLinkHtml = 'Like what you see? Visit the ' +\n",
              "            '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
              "            + ' to learn more about interactive tables.';\n",
              "          element.innerHTML = '';\n",
              "          dataTable['output_type'] = 'display_data';\n",
              "          await google.colab.output.renderOutput(dataTable, element);\n",
              "          const docLink = document.createElement('div');\n",
              "          docLink.innerHTML = docLinkHtml;\n",
              "          element.appendChild(docLink);\n",
              "        }\n",
              "      </script>\n",
              "    </div>\n",
              "  </div>\n"
            ]
          },
          "metadata": {},
          "execution_count": 30
        }
      ]
    }
  ]
}