From 033282d022070b55140b3073f3d6e5d667965561 Mon Sep 17 00:00:00 2001 From: t-kimber Date: Tue, 10 Aug 2021 14:05:05 +0200 Subject: [PATCH 1/7] :tada: start branch From 965d57ec573c70a0fb1cf92375d6c2aedf34ce04 Mon Sep 17 00:00:00 2001 From: t-kimber Date: Mon, 23 Aug 2021 22:37:14 +0200 Subject: [PATCH 2/7] retrieve klifs pocket sequence. --- .../T024_kinase_similarity_sequence/README.md | 78 ++++ .../data/README.md | 6 + .../images/README.md | 5 + .../talktorial.ipynb | 345 ++++++++++++++++++ 4 files changed, 434 insertions(+) create mode 100644 teachopencadd/talktorials/T024_kinase_similarity_sequence/README.md create mode 100644 teachopencadd/talktorials/T024_kinase_similarity_sequence/data/README.md create mode 100644 teachopencadd/talktorials/T024_kinase_similarity_sequence/images/README.md create mode 100644 teachopencadd/talktorials/T024_kinase_similarity_sequence/talktorial.ipynb diff --git a/teachopencadd/talktorials/T024_kinase_similarity_sequence/README.md b/teachopencadd/talktorials/T024_kinase_similarity_sequence/README.md new file mode 100644 index 00000000..a38d14a4 --- /dev/null +++ b/teachopencadd/talktorials/T024_kinase_similarity_sequence/README.md @@ -0,0 +1,78 @@ +
+ +Thank you for contributing to TeachOpenCADD! + +
+ + +
+ +Set up your PR: Please check out our issue on how to set up a PR for new talktorials, including standard checks and TODOs. + +
+ + +# T000 · Talktorial topic title + +Authors: + +- First and last name, year(s) of contribution, lab, institution +- First and last name, year(s) of contribution, lab, institution + + +*The examples used in this talktorial template are taken from [__Talktorial T001__](https://github.com/volkamerlab/teachopencadd/blob/master/teachopencadd/talktorials/T001_query_chembl/talktorial.ipynb) and [__Talktorial T002__](https://github.com/volkamerlab/teachopencadd/blob/master/teachopencadd/talktorials/T002_compound_adme/talktorial.ipynb).* + + +
+ +Cross-referencing talktorials: If you want to cross-reference to existing talktorials in your notebook, please use the following formatting: Talktorial T000. + +
+ + +## Aim of this talktorial + +Add a short summary of this talktorial's content. + + +### Contents in *Theory* + +_Add Table of Contents (TOC) for Theory section._ + +* ChEMBL database +* Compound activity measures + + +
+ +Sync TOC with section titles: These points should refer to the headlines of your Theory section. + +
+ + +### Contents in *Practical* + +_Add Table of Contents (TOC) for Practical section._ + +* Connect to ChEMBL database +* Load and draw molecules + + +
+ +Sync TOC with section titles: These points should refer to the headlines of your Practical section. + +
+ + +### References + +* Paper +* Tutorial links +* Other useful resources + +*We suggest the following citation style:* +* Keyword describing resource: Journal (year), volume, pages (link to resource) + +*Example:* +* ChEMBL web services: [Nucleic Acids Res. (2015), 43, 612-620](https://academic.oup.com/nar/article/43/W1/W612/2467881) diff --git a/teachopencadd/talktorials/T024_kinase_similarity_sequence/data/README.md b/teachopencadd/talktorials/T024_kinase_similarity_sequence/data/README.md new file mode 100644 index 00000000..cc6d1e4c --- /dev/null +++ b/teachopencadd/talktorials/T024_kinase_similarity_sequence/data/README.md @@ -0,0 +1,6 @@ +# Data + +This folder stores input and output data for the Jupyter notebook. + +- `xxx.csv`: Describe data. +- `xxx.sdf`: Describe data. diff --git a/teachopencadd/talktorials/T024_kinase_similarity_sequence/images/README.md b/teachopencadd/talktorials/T024_kinase_similarity_sequence/images/README.md new file mode 100644 index 00000000..d4ebaa47 --- /dev/null +++ b/teachopencadd/talktorials/T024_kinase_similarity_sequence/images/README.md @@ -0,0 +1,5 @@ +# Talktorial title + +## Images + +This folder stores images used in the Jupyter notebook. diff --git a/teachopencadd/talktorials/T024_kinase_similarity_sequence/talktorial.ipynb b/teachopencadd/talktorials/T024_kinase_similarity_sequence/talktorial.ipynb new file mode 100644 index 00000000..d5f4557d --- /dev/null +++ b/teachopencadd/talktorials/T024_kinase_similarity_sequence/talktorial.ipynb @@ -0,0 +1,345 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# T024 · Kinase similarity: sequence\n", + "\n", + "Authors:\n", + "\n", + "- Talia B. Kimber, 2021, [Volkamer lab, Charité](https://volkamerlab.org/)\n", + "- Dominique Sydow, 2021, [Volkamer lab, Charité](https://volkamerlab.org/)\n", + "- Andrea Volkamer, 2021, [Volkamer lab, Charité](https://volkamerlab.org/)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Aim of this talktorial\n", + "\n", + "Add a short summary of this talktorial's content." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Contents in *Theory*\n", + "\n", + "* Kinase dataset\n", + "* Kinase similarity descriptor: XXX" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Contents in *Practical*\n", + "\n", + "* Retrieve and preprocess data\n", + "* Show kinase coverage\n", + "* Compare kinases\n", + "* Visualize similarity as kinase matrix\n", + "* Visualize similarity as phylogenetic tree" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### References\n", + "\n", + "* Kinase dataset: [Molecules (2021), 26(3), 629](https://www.mdpi.com/1420-3049/26/3/629) \n", + "* Kinase similarity descriptor: XXX" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Theory" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Kinase dataset" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We will use nine kinases from [Molecules (2021), 26(3), 629](https://www.mdpi.com/1420-3049/26/3/629) because:\n", + "\n", + "> We aggregated the investigated kinases in “profiles” (Table 2). Profile 1 combined EGFR and ErbB2 as targets (indicated by a ‘+’) and BRAF (from rapidly accelerated fibrosarcoma isoform B) as a (general) anti-target (designated by a ‘—’). Out of similar considerations, Profile 2 consisted of EGFR and PI3K as targets and BRAF as anti-target. This profile is expected to be more challenging as PI3K is an atypical kinase and thus less similar to EGFR than for example ErbB2 used in Profile 1. Profile 3, comprised of EGFR and VEGFR2 as targets and BRAF as anti-target, was contrasted with the hit rate that we found with a standard docking against the single target VEGFR2 (Profile 4).\n", + "> To broaden the comparison and obtain an estimate for the promiscuity of each compound, the kinases CDK2 (cyclic-dependent kinase 2), LCK (lymphocyte-specific protein tyrosine kinase), MET (mesenchymal-epithelial transition factor) and p38α (p38 mitogen activated protein kinase α) were included in the experimental assay panel and the structure-based bioinformatics comparison as commonly used anti-targets." + ] + }, + { + "attachments": { + "814048cb-e723-4b10-b9f7-2b56848688d9.png": { + "image/png": "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" + } + }, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![image.png](attachment:814048cb-e723-4b10-b9f7-2b56848688d9.png)\n", + "\n", + "*Figure 1:* \n", + "Kinases used in this notebook, taken from [Molecules (2021), 26(3), 629](https://www.mdpi.com/1420-3049/26/3/629) (Table 1)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Kinase similarity descriptor: sequence\n", + "\n", + "Describe the dataset describing kinase similarity and how we use it.\n", + "\n", + "- XXX = KLIFS pocket sequence" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Practical" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "# !pip install flake8 pycodestyle_magic\n", + "%load_ext pycodestyle_magic\n", + "%pycodestyle_on" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "from pathlib import Path\n", + "\n", + "import pandas as pd\n", + "import requests" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "HERE = Path(_dh[-1])\n", + "DATA = HERE / \"data\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Retrieve and preprocess data" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "query_kinases = ['EGFR',\n", + " 'ErbB2',\n", + " 'BRAF',\n", + " 'CDK2',\n", + " 'LCK',\n", + " 'MET',\n", + " 'p38a',\n", + " 'KDR',\n", + " 'p110a']" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "def klifs_pocket_sequence(kinase_name):\n", + " \"\"\"\n", + " Retrieves the pocket sequence from KLIFS using the API.\n", + "\n", + " Parameters\n", + " ----------\n", + " kinase_name : str\n", + " The name of the kinase of interest.\n", + "\n", + " Returns\n", + " -------\n", + " str :\n", + " The 85 residues pocket sequence from KLIFS,\n", + " if the kinase name is valid, None otherwise.\n", + " \"\"\"\n", + " response = requests.get(f\"https://klifs.net/api/\"\n", + " f\"kinase_ID?kinase_name={kinase_name}\"\n", + " f\"&species=HUMAN\")\n", + "\n", + " if response.status_code == 200:\n", + " return response.json()[0]['pocket']\n", + " else:\n", + " print(f'KLIFS failed for kinase {kinase_name}')\n", + " return None" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "KVLGSGAFGTVYKVAIKELEILDEAYVMASVDPHVCRLLGIQLITQLMPFGCLLDYVREYLEDRRLVHRDLAARNVLVITDFGLA\n", + "KVLGSGAFGTVYKVAIKVLEILDEAYVMAGVGPYVSRLLGIQLVTQLMPYGCLLDHVREYLEDVRLVHRDLAARNVLVITDFGLA\n", + "QRIGSGSFGTVYKVAVKMLAFKNEVGVLRKTRVNILLFMGYAIVTQWCEGSSLYHHLHIYLHAKSIIHRDLKSNNIFLIGDFGLA\n", + "EKIGEGTYGVVYKVALKKITAIREISLLKELNPNIVKLLDVYLVFEFLH-QDLKKFMDAFCHSHRVLHRDLKPQNLLILADFGLA\n", + "ERLGAGQFGEVWMVAVKSLAFLAEANLMKQLQQRLVRLYAVYIITEYMENGSLVDFLKTFIEERNYIHRDLRAANILVIADFGLA\n", + "EVIGRGHFGCVYHCAVKSLQFLTEGIIMKDFSPNVLSLLGILVVLPYMKHGDLRNFIRNYLASKKFVHRDLAARNCMLVADFGLA\n", + "SPVGSGAYGSVCAVAVKKLRTYRELRLLKHMKENVIGLLDVYLVTHLMG-ADLNNIVKCYIHSADIIHRDLKPSNLAVILDFGLA\n", + "KPLGRGAFGQVIEVAVKMLALMSELKILIHIGLNVVNLLGAMVIVEFCKFGNLSTYLRSFLASRKCIHRDLAARNILLICDFGLA\n", + "CRIMSSAKRPLWLIIFKNGDLRQDMLTLQIIRLRMLPYGCLVGLIEVVRSHTIMQIQCKATFI--LGIGDRHNSNIMVHIDFGHF\n" + ] + } + ], + "source": [ + "for kinase in query_kinases:\n", + " print(klifs_pocket_sequence(kinase))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Show kinase coverage" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Compare kinases" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Visualize similarity as kinase matrix" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Visualize similarity as phylogenetic tree" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Discussion\n", + "\n", + "Wrap up the talktorial's content here and discuss pros/cons and open questions/challenges." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Quiz\n", + "\n", + "Ask three questions that the user should be able to answer after doing this talktorial. Choose important take-aways from this talktorial for your questions.\n", + "\n", + "1. Question\n", + "2. Question\n", + "3. Question" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "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.8.10" + }, + "toc-autonumbering": true, + "widgets": { + "application/vnd.jupyter.widget-state+json": { + "state": {}, + "version_major": 2, + "version_minor": 0 + } + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} From 16b0c73af61fac3471264f9147bc702c5b3543dc Mon Sep 17 00:00:00 2001 From: t-kimber Date: Tue, 24 Aug 2021 09:49:25 +0200 Subject: [PATCH 3/7] Add identity sequence comparison. --- .../talktorial.ipynb | 286 ++++++++++++++++-- 1 file changed, 263 insertions(+), 23 deletions(-) diff --git a/teachopencadd/talktorials/T024_kinase_similarity_sequence/talktorial.ipynb b/teachopencadd/talktorials/T024_kinase_similarity_sequence/talktorial.ipynb index d5f4557d..291f9eac 100644 --- a/teachopencadd/talktorials/T024_kinase_similarity_sequence/talktorial.ipynb +++ b/teachopencadd/talktorials/T024_kinase_similarity_sequence/talktorial.ipynb @@ -132,7 +132,9 @@ "from pathlib import Path\n", "\n", "import pandas as pd\n", - "import requests" + "import numpy as np\n", + "import requests\n", + "import biotite.sequence.align as align" ] }, { @@ -149,7 +151,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Retrieve and preprocess data" + "### Retrieve sequences from KLIFS" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We start by listing the kinases of interest." ] }, { @@ -169,6 +178,13 @@ " 'p110a']" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We use KLIFS' API to retrieve the 85-long pocket sequence for each kinase." + ] + }, { "cell_type": "code", "execution_count": 5, @@ -207,53 +223,131 @@ "metadata": {}, "outputs": [ { - "name": "stdout", - "output_type": "stream", - "text": [ - "KVLGSGAFGTVYKVAIKELEILDEAYVMASVDPHVCRLLGIQLITQLMPFGCLLDYVREYLEDRRLVHRDLAARNVLVITDFGLA\n", - "KVLGSGAFGTVYKVAIKVLEILDEAYVMAGVGPYVSRLLGIQLVTQLMPYGCLLDHVREYLEDVRLVHRDLAARNVLVITDFGLA\n", - "QRIGSGSFGTVYKVAVKMLAFKNEVGVLRKTRVNILLFMGYAIVTQWCEGSSLYHHLHIYLHAKSIIHRDLKSNNIFLIGDFGLA\n", - "EKIGEGTYGVVYKVALKKITAIREISLLKELNPNIVKLLDVYLVFEFLH-QDLKKFMDAFCHSHRVLHRDLKPQNLLILADFGLA\n", - "ERLGAGQFGEVWMVAVKSLAFLAEANLMKQLQQRLVRLYAVYIITEYMENGSLVDFLKTFIEERNYIHRDLRAANILVIADFGLA\n", - "EVIGRGHFGCVYHCAVKSLQFLTEGIIMKDFSPNVLSLLGILVVLPYMKHGDLRNFIRNYLASKKFVHRDLAARNCMLVADFGLA\n", - "SPVGSGAYGSVCAVAVKKLRTYRELRLLKHMKENVIGLLDVYLVTHLMG-ADLNNIVKCYIHSADIIHRDLKPSNLAVILDFGLA\n", - "KPLGRGAFGQVIEVAVKMLALMSELKILIHIGLNVVNLLGAMVIVEFCKFGNLSTYLRSFLASRKCIHRDLAARNILLICDFGLA\n", - "CRIMSSAKRPLWLIIFKNGDLRQDMLTLQIIRLRMLPYGCLVGLIEVVRSHTIMQIQCKATFI--LGIGDRHNSNIMVHIDFGHF\n" - ] + "data": { + "text/plain": [ + "{'EGFR': 'KVLGSGAFGTVYKVAIKELEILDEAYVMASVDPHVCRLLGIQLITQLMPFGCLLDYVREYLEDRRLVHRDLAARNVLVITDFGLA',\n", + " 'ErbB2': 'KVLGSGAFGTVYKVAIKVLEILDEAYVMAGVGPYVSRLLGIQLVTQLMPYGCLLDHVREYLEDVRLVHRDLAARNVLVITDFGLA',\n", + " 'BRAF': 'QRIGSGSFGTVYKVAVKMLAFKNEVGVLRKTRVNILLFMGYAIVTQWCEGSSLYHHLHIYLHAKSIIHRDLKSNNIFLIGDFGLA',\n", + " 'CDK2': 'EKIGEGTYGVVYKVALKKITAIREISLLKELNPNIVKLLDVYLVFEFLH-QDLKKFMDAFCHSHRVLHRDLKPQNLLILADFGLA',\n", + " 'LCK': 'ERLGAGQFGEVWMVAVKSLAFLAEANLMKQLQQRLVRLYAVYIITEYMENGSLVDFLKTFIEERNYIHRDLRAANILVIADFGLA',\n", + " 'MET': 'EVIGRGHFGCVYHCAVKSLQFLTEGIIMKDFSPNVLSLLGILVVLPYMKHGDLRNFIRNYLASKKFVHRDLAARNCMLVADFGLA',\n", + " 'p38a': 'SPVGSGAYGSVCAVAVKKLRTYRELRLLKHMKENVIGLLDVYLVTHLMG-ADLNNIVKCYIHSADIIHRDLKPSNLAVILDFGLA',\n", + " 'KDR': 'KPLGRGAFGQVIEVAVKMLALMSELKILIHIGLNVVNLLGAMVIVEFCKFGNLSTYLRSFLASRKCIHRDLAARNILLICDFGLA',\n", + " 'p110a': 'CRIMSSAKRPLWLIIFKNGDLRQDMLTLQIIRLRMLPYGCLVGLIEVVRSHTIMQIQCKATFI--LGIGDRHNSNIMVHIDFGHF'}" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" } ], "source": [ + "kinase_sequences = {}\n", "for kinase in query_kinases:\n", - " print(klifs_pocket_sequence(kinase))" + " kinase_sequences[kinase] = klifs_pocket_sequence(kinase)\n", + "kinase_sequences" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Show kinase coverage" + "### Compare kinases" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 7, "metadata": {}, "outputs": [], - "source": [] + "source": [ + "def sequence_similarity(kinase_name1, kinase_name2, type_=\"identity\"):\n", + " \"\"\"\n", + " Compares two sequences using a given metric.\n", + "\n", + " kinase_name1, kinase_name2 : str\n", + " The two names of the kinases for comparison.\n", + "\n", + " type_ : str ? default = identity\n", + "\n", + " Returns\n", + " -------\n", + " float :\n", + " The similarity between the pocket sequences of the two kinases.\n", + " \"\"\"\n", + " sequence_1 = klifs_pocket_sequence(kinase_name1)\n", + " sequence_2 = klifs_pocket_sequence(kinase_name2)\n", + "\n", + " if len(sequence_1) != len(sequence_1):\n", + " print(\"Mismatch in sequence lengths.\")\n", + " return None\n", + " else:\n", + " if type_ == \"identity\":\n", + " # True is the character is the same, False otherwise\n", + " is_match = np.compare_chararrays(np.array(list(sequence_1)),\n", + " np.array(list(sequence_2)),\n", + " cmp=\"==\",\n", + " rstrip=True)\n", + " similarity_normed = sum(is_match)/len(sequence_1)\n", + " return similarity_normed\n", + " else:\n", + " print(\"type not implemented yet.\")\n", + " return None" + ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Compare kinases" + "Let's look at the sequence similarity between EGFR and MET:" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 8, "metadata": {}, - "outputs": [], - "source": [] + "outputs": [ + { + "data": { + "text/plain": [ + "0.4588235294117647" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "sequence_similarity(\"EGFR\", \"MET\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As expected, the similarity between a kinase and itself leads the highest possible score:" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "1.0" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "sequence_similarity(\"EGFR\", \"EGFR\")" + ] }, { "cell_type": "markdown", @@ -262,6 +356,152 @@ "### Visualize similarity as kinase matrix" ] }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[1. , 0.89411765, 0.37647059, 0.31764706, 0.44705882,\n", + " 0.45882353, 0.38823529, 0.47058824, 0.11764706],\n", + " [0.89411765, 1. , 0.4 , 0.32941176, 0.42352941,\n", + " 0.47058824, 0.4 , 0.43529412, 0.11764706],\n", + " [0.37647059, 0.4 , 1. , 0.32941176, 0.38823529,\n", + " 0.37647059, 0.37647059, 0.4 , 0.15294118],\n", + " [0.31764706, 0.32941176, 0.32941176, 1. , 0.37647059,\n", + " 0.36470588, 0.47058824, 0.34117647, 0.10588235],\n", + " [0.44705882, 0.42352941, 0.38823529, 0.37647059, 1. ,\n", + " 0.4 , 0.38823529, 0.43529412, 0.14117647],\n", + " [0.45882353, 0.47058824, 0.37647059, 0.36470588, 0.4 ,\n", + " 1. , 0.36470588, 0.47058824, 0.10588235],\n", + " [0.38823529, 0.4 , 0.37647059, 0.47058824, 0.38823529,\n", + " 0.36470588, 1. , 0.38823529, 0.14117647],\n", + " [0.47058824, 0.43529412, 0.4 , 0.34117647, 0.43529412,\n", + " 0.47058824, 0.38823529, 1. , 0.15294118],\n", + " [0.11764706, 0.11764706, 0.15294118, 0.10588235, 0.14117647,\n", + " 0.10588235, 0.14117647, 0.15294118, 1. ]])" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "table = np.zeros((len(query_kinases), len(query_kinases)))\n", + "for i, kinase_name1 in enumerate(query_kinases):\n", + " for j, kinase_name2 in enumerate(query_kinases):\n", + " table[i, j] = sequence_similarity(kinase_name1,\n", + " kinase_name2)\n", + "table" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " A C D E F G H I K L M N P Q R S T V W Y B Z X *\n", + "A 4 0 -2 -1 -2 0 -2 -1 -1 -1 -1 -2 -1 -1 -1 1 0 0 -3 -2 -2 -1 0 -4\n", + "C 0 9 -3 -4 -2 -3 -3 -1 -3 -1 -1 -3 -3 -3 -3 -1 -1 -1 -2 -2 -3 -3 -2 -4\n", + "D -2 -3 6 2 -3 -1 -1 -3 -1 -4 -3 1 -1 0 -2 0 -1 -3 -4 -3 4 1 -1 -4\n", + "E -1 -4 2 5 -3 -2 0 -3 1 -3 -2 0 -1 2 0 0 -1 -2 -3 -2 1 4 -1 -4\n", + "F -2 -2 -3 -3 6 -3 -1 0 -3 0 0 -3 -4 -3 -3 -2 -2 -1 1 3 -3 -3 -1 -4\n", + "G 0 -3 -1 -2 -3 6 -2 -4 -2 -4 -3 0 -2 -2 -2 0 -2 -3 -2 -3 -1 -2 -1 -4\n", + "H -2 -3 -1 0 -1 -2 8 -3 -1 -3 -2 1 -2 0 0 -1 -2 -3 -2 2 0 0 -1 -4\n", + "I -1 -1 -3 -3 0 -4 -3 4 -3 2 1 -3 -3 -3 -3 -2 -1 3 -3 -1 -3 -3 -1 -4\n", + "K -1 -3 -1 1 -3 -2 -1 -3 5 -2 -1 0 -1 1 2 0 -1 -2 -3 -2 0 1 -1 -4\n", + "L -1 -1 -4 -3 0 -4 -3 2 -2 4 2 -3 -3 -2 -2 -2 -1 1 -2 -1 -4 -3 -1 -4\n", + "M -1 -1 -3 -2 0 -3 -2 1 -1 2 5 -2 -2 0 -1 -1 -1 1 -1 -1 -3 -1 -1 -4\n", + "N -2 -3 1 0 -3 0 1 -3 0 -3 -2 6 -2 0 0 1 0 -3 -4 -2 3 0 -1 -4\n", + "P -1 -3 -1 -1 -4 -2 -2 -3 -1 -3 -2 -2 7 -1 -2 -1 -1 -2 -4 -3 -2 -1 -2 -4\n", + "Q -1 -3 0 2 -3 -2 0 -3 1 -2 0 0 -1 5 1 0 -1 -2 -2 -1 0 3 -1 -4\n", + "R -1 -3 -2 0 -3 -2 0 -3 2 -2 -1 0 -2 1 5 -1 -1 -3 -3 -2 -1 0 -1 -4\n", + "S 1 -1 0 0 -2 0 -1 -2 0 -2 -1 1 -1 0 -1 4 1 -2 -3 -2 0 0 0 -4\n", + "T 0 -1 -1 -1 -2 -2 -2 -1 -1 -1 -1 0 -1 -1 -1 1 5 0 -2 -2 -1 -1 0 -4\n", + "V 0 -1 -3 -2 -1 -3 -3 3 -2 1 1 -3 -2 -2 -3 -2 0 4 -3 -1 -3 -2 -1 -4\n", + "W -3 -2 -4 -3 1 -2 -2 -3 -3 -2 -1 -4 -4 -2 -3 -3 -2 -3 11 2 -4 -3 -2 -4\n", + "Y -2 -2 -3 -2 3 -3 2 -1 -2 -1 -1 -2 -3 -1 -2 -2 -2 -1 2 7 -3 -2 -1 -4\n", + "B -2 -3 4 1 -3 -1 0 -3 0 -4 -3 3 -2 0 -1 0 -1 -3 -4 -3 4 1 -1 -4\n", + "Z -1 -3 1 4 -3 -2 0 -3 1 -3 -1 0 -1 3 0 0 -1 -2 -3 -2 1 4 -1 -4\n", + "X 0 -2 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -2 -1 -1 0 0 -1 -2 -1 -1 -1 -1 -4\n", + "* -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 1\n" + ] + } + ], + "source": [ + "# Obtain BLOSUM62\n", + "substitution_matrix = align.SubstitutionMatrix.std_protein_matrix()\n", + "print(substitution_matrix)" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "biotite.sequence.align.SubstitutionMatrix" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "type(substitution_matrix)" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "substitution_matrix.is_symmetric()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Show kinase coverage" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, { "cell_type": "code", "execution_count": null, From 23c0225c9f817122a570cee29292fca0c871ba0a Mon Sep 17 00:00:00 2001 From: t-kimber Date: Tue, 24 Aug 2021 12:37:11 +0200 Subject: [PATCH 4/7] add substitution metric. --- .../talktorial.ipynb | 427 ++++++++++++++++-- 1 file changed, 389 insertions(+), 38 deletions(-) diff --git a/teachopencadd/talktorials/T024_kinase_similarity_sequence/talktorial.ipynb b/teachopencadd/talktorials/T024_kinase_similarity_sequence/talktorial.ipynb index 291f9eac..fc3eab00 100644 --- a/teachopencadd/talktorials/T024_kinase_similarity_sequence/talktorial.ipynb +++ b/teachopencadd/talktorials/T024_kinase_similarity_sequence/talktorial.ipynb @@ -73,25 +73,31 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "We will use nine kinases from [Molecules (2021), 26(3), 629](https://www.mdpi.com/1420-3049/26/3/629) because:\n", + "We will use nine kinases from [Molecules (2021), 26(3), 629](https://www.mdpi.com/1420-3049/26/3/629), which aimed to understand kinase similarities within different combinations of kinase on- and off-targets (also called anti-targets):\n", "\n", - "> We aggregated the investigated kinases in “profiles” (Table 2). Profile 1 combined EGFR and ErbB2 as targets (indicated by a ‘+’) and BRAF (from rapidly accelerated fibrosarcoma isoform B) as a (general) anti-target (designated by a ‘—’). Out of similar considerations, Profile 2 consisted of EGFR and PI3K as targets and BRAF as anti-target. This profile is expected to be more challenging as PI3K is an atypical kinase and thus less similar to EGFR than for example ErbB2 used in Profile 1. Profile 3, comprised of EGFR and VEGFR2 as targets and BRAF as anti-target, was contrasted with the hit rate that we found with a standard docking against the single target VEGFR2 (Profile 4).\n", - "> To broaden the comparison and obtain an estimate for the promiscuity of each compound, the kinases CDK2 (cyclic-dependent kinase 2), LCK (lymphocyte-specific protein tyrosine kinase), MET (mesenchymal-epithelial transition factor) and p38α (p38 mitogen activated protein kinase α) were included in the experimental assay panel and the structure-based bioinformatics comparison as commonly used anti-targets." - ] - }, - { - "attachments": { - "814048cb-e723-4b10-b9f7-2b56848688d9.png": { - "image/png": "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" - } - }, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "![image.png](attachment:814048cb-e723-4b10-b9f7-2b56848688d9.png)\n", + " \n", "\n", - "*Figure 1:* \n", - "Kinases used in this notebook, taken from [Molecules (2021), 26(3), 629](https://www.mdpi.com/1420-3049/26/3/629) (Table 1)." + "> We aggregated the investigated kinases in “profiles”. Profile 1 combined **EGFR** and **ErbB2** as targets and **BRAF** as a (general) anti-target. Out of similar considerations, Profile 2 consisted of EGFR and **PI3K** as targets and BRAF as anti-target. This profile is expected to be more challenging as PI3K is an atypical kinase and thus less similar to EGFR than for example ErbB2 used in Profile 1. Profile 3, comprised of EGFR and **VEGFR2** as targets and BRAF as anti-target, was contrasted with the hit rate that we found with a standard docking against the single target VEGFR2 (Profile 4).\n", + "> To broaden the comparison and obtain an estimate for the promiscuity of each compound, the kinases **CDK2**, **LCK**, **MET** and **p38α** were included in the experimental assay panel and the structure-based bioinformatics comparison as commonly used anti-targets.\n", + "\n", + " \n", + "\n", + "*Table 1:* \n", + "Kinases used in this notebook, taken from [Molecules (2021), 26(3), 629](https://www.mdpi.com/1420-3049/26/3/629), with their synonyms, UniProt IDs, and kinase groups.\n", + "\n", + " \n", + "\n", + "| Kinase | Synonyms | UniProt ID | Group | Full kinase name |\n", + "|----------------------------|------------------------|------------|----------|--------------------------------------------------|\n", + "| EGFR | ErbB1 | P00533 | TK | Epidermal growth factor receptor |\n", + "| ErbB2 | Her2 | P04626 | TK | Erythroblastic leukemia viral oncogene homolog 2 |\n", + "| PI3K | PI3KCA, p110a | P42336 | Atypical | Phosphatidylinositol-3-kinase |\n", + "| VEGFR2 | KDR | P35968 | TK | Vascular endothelial growth factor receptor 2 |\n", + "| BRAF | - | P15056 | TKL | Rapidly accelerated fibrosarcoma isoform B |\n", + "| CDK2 | - | P24941 | CMGC | Cyclic-dependent kinase 2 |\n", + "| LCK | - | P06239 | TK | Lymphocyte-specific protein tyrosine kinase |\n", + "| MET | - | P08581 | TK | Mesenchymal-epithelial transition factor |\n", + "| p38a | MAPK14 | Q16539 | CMGC | p38 mitogen activated protein kinase α |" ] }, { @@ -217,6 +223,13 @@ " return None" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's see how these pocket sequence look like." + ] + }, { "cell_type": "code", "execution_count": 6, @@ -252,7 +265,22 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Compare kinases" + "### Sequence similarity" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Given two kinases, we create a function which computes the sequence similarity between them using one of the two measures discussed in the theory, namely the identity or the substitution." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Identity score\n", + "We first define a function which compares element wise elements as described in the theory." ] }, { @@ -260,6 +288,98 @@ "execution_count": 7, "metadata": {}, "outputs": [], + "source": [ + "def identity_score(sequence1, sequence2):\n", + " \"\"\"\n", + " sequence1 :\n", + " sequence2 :\n", + " \"\"\"\n", + " # True is the character is the same, False otherwise\n", + " return np.compare_chararrays(sequence1,\n", + " sequence2,\n", + " cmp=\"==\",\n", + " rstrip=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Substitution score\n", + "We now define the function which is more specific to amino acids grouping and use the `biotite` library and retrieve the substitution matrix." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "3:80: E501 line too long (90 > 79 characters)\n", + "6:1: W293 blank line contains whitespace\n", + "11:25: W291 trailing whitespace\n" + ] + } + ], + "source": [ + "def substitution_score(sequence1,\n", + " sequence2,\n", + " substitution_matrix=align.SubstitutionMatrix.std_protein_matrix()):\n", + " \"\"\"\n", + " ADD\n", + " \n", + " Parameters\n", + " ----------\n", + " sequence1 :\n", + " sequence2 :\n", + " substitution_matrix: \n", + " Default align.SubstitutionMatrix.std_protein_matrix() from biotite\n", + " Obtain BLOSUM62\n", + " Returns\n", + " -------\n", + " \"\"\"\n", + " # Retrieve np.array from substitution matrix\n", + " score_matrix = substitution_matrix.score_matrix()\n", + "\n", + " # Retireve the letter\n", + " letter_alphabet = substitution_matrix.get_alphabet1()\n", + "\n", + " # Map letter to index\n", + " dict_letters = {}\n", + " for i, letter in enumerate(letter_alphabet.get_symbols()):\n", + " dict_letters[letter] = i\n", + "\n", + " match_score = match_score = np.zeros(len(sequence1))\n", + " for i, (character_seq1, character_seq2) in enumerate(zip(sequence1,\n", + " sequence2)):\n", + " ind1 = dict_letters[character_seq1]\n", + " ind2 = dict_letters[character_seq2]\n", + " match_score[i] = score_matrix[ind1, ind2]\n", + " return match_score" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Kinase comparison" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Given two kinases, we create a function which computes the sequence similarity between them using one of the two measures discussed in the theory, namely the identity or the substitution." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], "source": [ "def sequence_similarity(kinase_name1, kinase_name2, type_=\"identity\"):\n", " \"\"\"\n", @@ -282,16 +402,18 @@ " print(\"Mismatch in sequence lengths.\")\n", " return None\n", " else:\n", + " seq_array1 = np.array(list(sequence_1))\n", + " seq_array2 = np.array(list(sequence_2))\n", " if type_ == \"identity\":\n", - " # True is the character is the same, False otherwise\n", - " is_match = np.compare_chararrays(np.array(list(sequence_1)),\n", - " np.array(list(sequence_2)),\n", - " cmp=\"==\",\n", - " rstrip=True)\n", + " is_match = identity_score(seq_array1, seq_array2)\n", " similarity_normed = sum(is_match)/len(sequence_1)\n", " return similarity_normed\n", + " elif type_ == \"substitution\":\n", + " match_score = substitution_score(seq_array1,\n", + " seq_array2)\n", + " return match_score\n", " else:\n", - " print(\"type not implemented yet.\")\n", + " print(\"Type not defined.\")\n", " return None" ] }, @@ -304,7 +426,34 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([ 1., 4., 2., 6., -1., 6., -2., 6., 6., -1., 4., 7., -1.,\n", + " -1., 4., 3., 5., 0., 4., 2., 0., 4., -1., 5., 0., -1.,\n", + " 3., 5., -1., 0., -1., 0., 7., 1., 4., -1., -1., 4., 4.,\n", + " 6., 4., -2., 1., 3., -1., -1., -1., 5., -1., -1., 6., -3.,\n", + " 4., -2., 1., 3., 3., 5., 0., 7., 4., -1., 0., 2., 2.,\n", + " 0., 4., 8., 5., 6., 4., 4., 4., 5., 6., -1., 2., 1.,\n", + " 3., 0., 6., 6., 6., 4., 4.])" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "a = sequence_similarity(\"EGFR\", \"MET\", \"substitution\")\n", + "a" + ] + }, + { + "cell_type": "code", + "execution_count": 11, "metadata": {}, "outputs": [ { @@ -313,13 +462,14 @@ "0.4588235294117647" ] }, - "execution_count": 8, + "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "sequence_similarity(\"EGFR\", \"MET\")" + "a = sequence_similarity(\"EGFR\", \"MET\", \"identity\")\n", + "a" ] }, { @@ -331,7 +481,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 12, "metadata": {}, "outputs": [ { @@ -340,7 +490,7 @@ "1.0" ] }, - "execution_count": 9, + "execution_count": 12, "metadata": {}, "output_type": "execute_result" } @@ -349,6 +499,30 @@ "sequence_similarity(\"EGFR\", \"EGFR\")" ] }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([5., 4., 4., 6., 4., 6., 4., 6., 6., 5., 4., 7., 5., 4., 4., 4., 5.,\n", + " 5., 4., 5., 4., 4., 6., 5., 4., 7., 4., 5., 4., 4., 4., 6., 7., 8.,\n", + " 4., 9., 5., 4., 4., 6., 4., 5., 4., 4., 5., 5., 4., 5., 7., 6., 6.,\n", + " 9., 4., 4., 6., 7., 4., 5., 5., 7., 4., 5., 6., 5., 5., 4., 4., 8.,\n", + " 5., 6., 4., 4., 4., 5., 6., 4., 4., 4., 4., 5., 6., 6., 6., 4., 4.])" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "sequence_similarity(\"EGFR\", \"EGFR\", type_=\"substitution\")" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -358,7 +532,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 14, "metadata": {}, "outputs": [ { @@ -384,7 +558,7 @@ " 0.10588235, 0.14117647, 0.15294118, 1. ]])" ] }, - "execution_count": 10, + "execution_count": 14, "metadata": {}, "output_type": "execute_result" } @@ -398,9 +572,70 @@ "table" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Substitution" + ] + }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array(['K', 'V', 'L', 'G', 'S', 'G', 'A', 'F', 'G', 'T', 'V', 'Y', 'K',\n", + " 'V', 'A', 'I', 'K', 'E', 'L', 'E', 'I', 'L', 'D', 'E', 'A', 'Y',\n", + " 'V', 'M', 'A', 'S', 'V', 'D', 'P', 'H', 'V', 'C', 'R', 'L', 'L',\n", + " 'G', 'I', 'Q', 'L', 'I', 'T', 'Q', 'L', 'M', 'P', 'F', 'G', 'C',\n", + " 'L', 'L', 'D', 'Y', 'V', 'R', 'E', 'Y', 'L', 'E', 'D', 'R', 'R',\n", + " 'L', 'V', 'H', 'R', 'D', 'L', 'A', 'A', 'R', 'N', 'V', 'L', 'V',\n", + " 'I', 'T', 'D', 'F', 'G', 'L', 'A'], dtype=' Date: Tue, 24 Aug 2021 14:59:23 +0200 Subject: [PATCH 5/7] finalize similarity matrix. --- .../talktorial.ipynb | 891 +++++++++++------- 1 file changed, 525 insertions(+), 366 deletions(-) diff --git a/teachopencadd/talktorials/T024_kinase_similarity_sequence/talktorial.ipynb b/teachopencadd/talktorials/T024_kinase_similarity_sequence/talktorial.ipynb index fc3eab00..30ab25e0 100644 --- a/teachopencadd/talktorials/T024_kinase_similarity_sequence/talktorial.ipynb +++ b/teachopencadd/talktorials/T024_kinase_similarity_sequence/talktorial.ipynb @@ -139,6 +139,7 @@ "\n", "import pandas as pd\n", "import numpy as np\n", + "import seaborn as sns\n", "import requests\n", "import biotite.sequence.align as align" ] @@ -272,7 +273,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Given two kinases, we create a function which computes the sequence similarity between them using one of the two measures discussed in the theory, namely the identity or the substitution." + "Given two kinases, we create functions which account for identity or subsituition similarity, as described in the theory." ] }, { @@ -280,7 +281,7 @@ "metadata": {}, "source": [ "#### Identity score\n", - "We first define a function which compares element wise elements as described in the theory." + "We first define a function which compares element-wise characters in two sequences." ] }, { @@ -291,8 +292,21 @@ "source": [ "def identity_score(sequence1, sequence2):\n", " \"\"\"\n", - " sequence1 :\n", + " Computes the element-wise binary similarity between two sequences.\n", + "\n", + " Parameters\n", + " ----------\n", + " sequence1 : np.array\n", + " An array of character describing the first sequence.\n", " sequence2 :\n", + " An array of character describing the second sequence.\n", + "\n", + " Returns\n", + " -------\n", + " np.array :\n", + " The bool array for each character.\n", + " 1 if the elements are identical,\n", + " 0 otherwise.\n", " \"\"\"\n", " # True is the character is the same, False otherwise\n", " return np.compare_chararrays(sequence1,\n", @@ -313,31 +327,26 @@ "cell_type": "code", "execution_count": 8, "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "3:80: E501 line too long (90 > 79 characters)\n", - "6:1: W293 blank line contains whitespace\n", - "11:25: W291 trailing whitespace\n" - ] - } - ], + "outputs": [], "source": [ "def substitution_score(sequence1,\n", " sequence2,\n", - " substitution_matrix=align.SubstitutionMatrix.std_protein_matrix()):\n", + " substitution_matrix=align.\n", + " SubstitutionMatrix.std_protein_matrix()):\n", " \"\"\"\n", - " ADD\n", - " \n", + " Retrieve #TODO\n", + "\n", " Parameters\n", " ----------\n", - " sequence1 :\n", + " sequence1 : np.array\n", + " An array of character describing the first sequence.\n", " sequence2 :\n", - " substitution_matrix: \n", - " Default align.SubstitutionMatrix.std_protein_matrix() from biotite\n", - " Obtain BLOSUM62\n", + " An array of character describing the second sequence.\n", + " substitution_matrix:\n", + " A substituition matrix specific to amino acids.\n", + " The default is align.SubstitutionMatrix.std_protein_matrix()\n", + " from biotite, which represents BLOSUM62.\n", + "\n", " Returns\n", " -------\n", " \"\"\"\n", @@ -358,6 +367,8 @@ " ind1 = dict_letters[character_seq1]\n", " ind2 = dict_letters[character_seq2]\n", " match_score[i] = score_matrix[ind1, ind2]\n", + " # TODO normalize?\n", + " # TODO check for * VS -\n", " return match_score" ] }, @@ -372,7 +383,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Given two kinases, we create a function which computes the sequence similarity between them using one of the two measures discussed in the theory, namely the identity or the substitution." + "Given two kinases, we create a function which computes the sequence similarity between them using one of the two measures, the identity or the substitution." ] }, { @@ -388,7 +399,9 @@ " kinase_name1, kinase_name2 : str\n", " The two names of the kinases for comparison.\n", "\n", - " type_ : str ? default = identity\n", + " type_ : str\n", + " The type of metric to compute the similarity.\n", + " The default is `identity`.\n", "\n", " Returns\n", " -------\n", @@ -411,7 +424,8 @@ " elif type_ == \"substitution\":\n", " match_score = substitution_score(seq_array1,\n", " seq_array2)\n", - " return match_score\n", + " similarity = sum(match_score)\n", + " return similarity\n", " else:\n", " print(\"Type not defined.\")\n", " return None" @@ -430,25 +444,19 @@ "metadata": {}, "outputs": [ { - "data": { - "text/plain": [ - "array([ 1., 4., 2., 6., -1., 6., -2., 6., 6., -1., 4., 7., -1.,\n", - " -1., 4., 3., 5., 0., 4., 2., 0., 4., -1., 5., 0., -1.,\n", - " 3., 5., -1., 0., -1., 0., 7., 1., 4., -1., -1., 4., 4.,\n", - " 6., 4., -2., 1., 3., -1., -1., -1., 5., -1., -1., 6., -3.,\n", - " 4., -2., 1., 3., 3., 5., 0., 7., 4., -1., 0., 2., 2.,\n", - " 0., 4., 8., 5., 6., 4., 4., 4., 5., 6., -1., 2., 1.,\n", - " 3., 0., 6., 6., 6., 4., 4.])" - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" + "name": "stdout", + "output_type": "stream", + "text": [ + "Pocket sequence similarity between EGFR and MET kinases: 205.0 using substitution.\n" + ] } ], "source": [ - "a = sequence_similarity(\"EGFR\", \"MET\", \"substitution\")\n", - "a" + "EGFR_MET_seq_similarity = sequence_similarity(\"EGFR\",\n", + " \"MET\",\n", + " \"substitution\")\n", + "print(f\"Pocket sequence similarity between EGFR and MET kinases: \"\n", + " f\"{EGFR_MET_seq_similarity} using substitution.\")" ] }, { @@ -457,19 +465,19 @@ "metadata": {}, "outputs": [ { - "data": { - "text/plain": [ - "0.4588235294117647" - ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" + "name": "stdout", + "output_type": "stream", + "text": [ + "Pocket sequence similarity between EGFR and MET kinases: 0.46 using identity.\n" + ] } ], "source": [ - "a = sequence_similarity(\"EGFR\", \"MET\", \"identity\")\n", - "a" + "EGFR_MET_seq_similarity = sequence_similarity(\"EGFR\",\n", + " \"MET\",\n", + " \"identity\")\n", + "print(f\"Pocket sequence similarity between EGFR and MET kinases: \"\n", + " f\"{EGFR_MET_seq_similarity:.2f} using identity.\")" ] }, { @@ -485,18 +493,17 @@ "metadata": {}, "outputs": [ { - "data": { - "text/plain": [ - "1.0" - ] - }, - "execution_count": 12, - "metadata": {}, - "output_type": "execute_result" + "name": "stdout", + "output_type": "stream", + "text": [ + "Pocket sequence similarity between EGFR itself: 1.00 using identity.\n" + ] } ], "source": [ - "sequence_similarity(\"EGFR\", \"EGFR\")" + "EGFR_seq_similarity = sequence_similarity(\"EGFR\", \"EGFR\")\n", + "print(f\"Pocket sequence similarity between EGFR itself: \"\n", + " f\"{EGFR_seq_similarity:.2f} using identity.\")" ] }, { @@ -505,22 +512,18 @@ "metadata": {}, "outputs": [ { - "data": { - "text/plain": [ - "array([5., 4., 4., 6., 4., 6., 4., 6., 6., 5., 4., 7., 5., 4., 4., 4., 5.,\n", - " 5., 4., 5., 4., 4., 6., 5., 4., 7., 4., 5., 4., 4., 4., 6., 7., 8.,\n", - " 4., 9., 5., 4., 4., 6., 4., 5., 4., 4., 5., 5., 4., 5., 7., 6., 6.,\n", - " 9., 4., 4., 6., 7., 4., 5., 5., 7., 4., 5., 6., 5., 5., 4., 4., 8.,\n", - " 5., 6., 4., 4., 4., 5., 6., 4., 4., 4., 4., 5., 6., 6., 6., 4., 4.])" - ] - }, - "execution_count": 13, - "metadata": {}, - "output_type": "execute_result" + "name": "stdout", + "output_type": "stream", + "text": [ + "Pocket sequence similarity between EGFR itself: 429.00 using substitution.\n" + ] } ], "source": [ - "sequence_similarity(\"EGFR\", \"EGFR\", type_=\"substitution\")" + "EGFR_seq_similarity = sequence_similarity(\"EGFR\", \"EGFR\", type_=\"substitution\")\n", + "print(f\"Pocket sequence similarity between EGFR itself: \"\n", + " f\"{EGFR_seq_similarity:.2f} using substitution.\")\n", + "# TODO: normalize" ] }, { @@ -534,49 +537,13 @@ "cell_type": "code", "execution_count": 14, "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array([[1. , 0.89411765, 0.37647059, 0.31764706, 0.44705882,\n", - " 0.45882353, 0.38823529, 0.47058824, 0.11764706],\n", - " [0.89411765, 1. , 0.4 , 0.32941176, 0.42352941,\n", - " 0.47058824, 0.4 , 0.43529412, 0.11764706],\n", - " [0.37647059, 0.4 , 1. , 0.32941176, 0.38823529,\n", - " 0.37647059, 0.37647059, 0.4 , 0.15294118],\n", - " [0.31764706, 0.32941176, 0.32941176, 1. , 0.37647059,\n", - " 0.36470588, 0.47058824, 0.34117647, 0.10588235],\n", - " [0.44705882, 0.42352941, 0.38823529, 0.37647059, 1. ,\n", - " 0.4 , 0.38823529, 0.43529412, 0.14117647],\n", - " [0.45882353, 0.47058824, 0.37647059, 0.36470588, 0.4 ,\n", - " 1. , 0.36470588, 0.47058824, 0.10588235],\n", - " [0.38823529, 0.4 , 0.37647059, 0.47058824, 0.38823529,\n", - " 0.36470588, 1. , 0.38823529, 0.14117647],\n", - " [0.47058824, 0.43529412, 0.4 , 0.34117647, 0.43529412,\n", - " 0.47058824, 0.38823529, 1. , 0.15294118],\n", - " [0.11764706, 0.11764706, 0.15294118, 0.10588235, 0.14117647,\n", - " 0.10588235, 0.14117647, 0.15294118, 1. ]])" - ] - }, - "execution_count": 14, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ - "table = np.zeros((len(query_kinases), len(query_kinases)))\n", + "kinase_similarity_matrix = np.zeros((len(query_kinases), len(query_kinases)))\n", "for i, kinase_name1 in enumerate(query_kinases):\n", " for j, kinase_name2 in enumerate(query_kinases):\n", - " table[i, j] = sequence_similarity(kinase_name1,\n", - " kinase_name2)\n", - "table" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Substitution" + " kinase_similarity_matrix[i, j] = sequence_similarity(kinase_name1,\n", + " kinase_name2)" ] }, { @@ -586,14 +553,171 @@ "outputs": [ { "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
EGFRErbB2BRAFCDK2LCKMETp38aKDRp110a
EGFR1.0000000.8941180.3764710.3176470.4470590.4588240.3882350.4705880.117647
ErbB20.8941181.0000000.4000000.3294120.4235290.4705880.4000000.4352940.117647
BRAF0.3764710.4000001.0000000.3294120.3882350.3764710.3764710.4000000.152941
CDK20.3176470.3294120.3294121.0000000.3764710.3647060.4705880.3411760.105882
LCK0.4470590.4235290.3882350.3764711.0000000.4000000.3882350.4352940.141176
MET0.4588240.4705880.3764710.3647060.4000001.0000000.3647060.4705880.105882
p38a0.3882350.4000000.3764710.4705880.3882350.3647061.0000000.3882350.141176
KDR0.4705880.4352940.4000000.3411760.4352940.4705880.3882351.0000000.152941
p110a0.1176470.1176470.1529410.1058820.1411760.1058820.1411760.1529411.000000
\n", + "
" + ], "text/plain": [ - "array(['K', 'V', 'L', 'G', 'S', 'G', 'A', 'F', 'G', 'T', 'V', 'Y', 'K',\n", - " 'V', 'A', 'I', 'K', 'E', 'L', 'E', 'I', 'L', 'D', 'E', 'A', 'Y',\n", - " 'V', 'M', 'A', 'S', 'V', 'D', 'P', 'H', 'V', 'C', 'R', 'L', 'L',\n", - " 'G', 'I', 'Q', 'L', 'I', 'T', 'Q', 'L', 'M', 'P', 'F', 'G', 'C',\n", - " 'L', 'L', 'D', 'Y', 'V', 'R', 'E', 'Y', 'L', 'E', 'D', 'R', 'R',\n", - " 'L', 'V', 'H', 'R', 'D', 'L', 'A', 'A', 'R', 'N', 'V', 'L', 'V',\n", - " 'I', 'T', 'D', 'F', 'G', 'L', 'A'], dtype='\n", + "#T_9913a_row0_col0, #T_9913a_row1_col1, #T_9913a_row2_col2, #T_9913a_row3_col3, #T_9913a_row4_col4, #T_9913a_row5_col5, #T_9913a_row6_col6, #T_9913a_row7_col7, #T_9913a_row8_col8 {\n", + " background-color: #008000;\n", + " color: #f1f1f1;\n", + "}\n", + "#T_9913a_row0_col1, #T_9913a_row1_col0 {\n", + " background-color: #1c8e1c;\n", + " color: #f1f1f1;\n", + "}\n", + "#T_9913a_row0_col2, #T_9913a_row5_col2, #T_9913a_row6_col2, #T_9913a_row7_col3 {\n", + " background-color: #add5ad;\n", + " color: #000000;\n", + "}\n", + "#T_9913a_row0_col3 {\n", + " background-color: #b3d8b3;\n", + " color: #000000;\n", + "}\n", + "#T_9913a_row0_col4 {\n", + " background-color: #97ca97;\n", + " color: #000000;\n", + "}\n", + "#T_9913a_row0_col5 {\n", + " background-color: #8ec58e;\n", + " color: #000000;\n", + "}\n", + "#T_9913a_row0_col6, #T_9913a_row2_col4, #T_9913a_row4_col6, #T_9913a_row6_col4, #T_9913a_row7_col6 {\n", + " background-color: #a7d2a7;\n", + " color: #000000;\n", + "}\n", + "#T_9913a_row0_col7, #T_9913a_row5_col7 {\n", + " background-color: #92c892;\n", + " color: #000000;\n", + "}\n", + "#T_9913a_row0_col8, #T_9913a_row1_col8 {\n", + " background-color: #e8f2e8;\n", + " color: #000000;\n", + "}\n", + "#T_9913a_row1_col2, #T_9913a_row2_col7, #T_9913a_row3_col5, #T_9913a_row5_col3, #T_9913a_row6_col5, #T_9913a_row7_col2 {\n", + " background-color: #a6d2a6;\n", + " color: #000000;\n", + "}\n", + "#T_9913a_row1_col3, #T_9913a_row2_col3 {\n", + " background-color: #b1d7b1;\n", + " color: #000000;\n", + "}\n", + "#T_9913a_row1_col4, #T_9913a_row4_col5 {\n", + " background-color: #9dcd9d;\n", + " color: #000000;\n", + "}\n", + "#T_9913a_row1_col5, #T_9913a_row6_col3, #T_9913a_row7_col5 {\n", + " background-color: #8bc48b;\n", + " color: #000000;\n", + "}\n", + "#T_9913a_row1_col6, #T_9913a_row2_col5, #T_9913a_row4_col3, #T_9913a_row5_col4 {\n", + " background-color: #a4d0a4;\n", + " color: #000000;\n", + "}\n", + "#T_9913a_row1_col7, #T_9913a_row4_col7 {\n", + " background-color: #9ccd9c;\n", + " color: #000000;\n", + "}\n", + "#T_9913a_row2_col0 {\n", + " background-color: #a6d1a6;\n", + " color: #000000;\n", + "}\n", + "#T_9913a_row2_col1, #T_9913a_row6_col1 {\n", + " background-color: #a0cea0;\n", + " color: #000000;\n", + "}\n", + "#T_9913a_row2_col6, #T_9913a_row3_col4 {\n", + " background-color: #aad3aa;\n", + " color: #000000;\n", + "}\n", + "#T_9913a_row2_col8, #T_9913a_row7_col8 {\n", + " background-color: #dfeddf;\n", + " color: #000000;\n", + "}\n", + "#T_9913a_row3_col0 {\n", + " background-color: #b5d9b5;\n", + " color: #000000;\n", + "}\n", + "#T_9913a_row3_col1 {\n", + " background-color: #b2d7b2;\n", + " color: #000000;\n", + "}\n", + "#T_9913a_row3_col2 {\n", + " background-color: #badbba;\n", + " color: #000000;\n", + "}\n", + "#T_9913a_row3_col6, #T_9913a_row5_col0 {\n", + " background-color: #90c790;\n", + " color: #000000;\n", + "}\n", + "#T_9913a_row3_col7 {\n", + " background-color: #b7dab7;\n", + " color: #000000;\n", + "}\n", + "#T_9913a_row3_col8, #T_9913a_row5_col8, #T_9913a_row8_col0, #T_9913a_row8_col1, #T_9913a_row8_col2, #T_9913a_row8_col3, #T_9913a_row8_col4, #T_9913a_row8_col5, #T_9913a_row8_col6, #T_9913a_row8_col7 {\n", + " background-color: #ebf3eb;\n", + " color: #000000;\n", + "}\n", + "#T_9913a_row4_col0 {\n", + " background-color: #93c893;\n", + " color: #000000;\n", + "}\n", + "#T_9913a_row4_col1 {\n", + " background-color: #9acb9a;\n", + " color: #000000;\n", + "}\n", + "#T_9913a_row4_col2, #T_9913a_row6_col7 {\n", + " background-color: #a9d3a9;\n", + " color: #000000;\n", + "}\n", + "#T_9913a_row4_col8, #T_9913a_row6_col8 {\n", + " background-color: #e1eee1;\n", + " color: #000000;\n", + "}\n", + "#T_9913a_row5_col1, #T_9913a_row7_col0 {\n", + " background-color: #8dc58d;\n", + " color: #000000;\n", + "}\n", + "#T_9913a_row5_col6 {\n", + " background-color: #aed5ae;\n", + " color: #000000;\n", + "}\n", + "#T_9913a_row6_col0 {\n", + " background-color: #a3d0a3;\n", + " color: #000000;\n", + "}\n", + "#T_9913a_row7_col1 {\n", + " background-color: #96c996;\n", + " color: #000000;\n", + "}\n", + "#T_9913a_row7_col4 {\n", + " background-color: #9bcc9b;\n", + " color: #000000;\n", + "}\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
 EGFRErbB2BRAFCDK2LCKMETp38aKDRp110a
EGFR1.0000.8940.3760.3180.4470.4590.3880.4710.118
ErbB20.8941.0000.4000.3290.4240.4710.4000.4350.118
BRAF0.3760.4001.0000.3290.3880.3760.3760.4000.153
CDK20.3180.3290.3291.0000.3760.3650.4710.3410.106
LCK0.4470.4240.3880.3761.0000.4000.3880.4350.141
MET0.4590.4710.3760.3650.4001.0000.3650.4710.106
p38a0.3880.4000.3760.4710.3880.3651.0000.3880.141
KDR0.4710.4350.4000.3410.4350.4710.3881.0000.153
p110a0.1180.1180.1530.1060.1410.1060.1410.1531.000
\n" + ], "text/plain": [ - "array(['E', 'V', 'I', 'G', 'R', 'G', 'H', 'F', 'G', 'C', 'V', 'Y', 'H',\n", - " 'C', 'A', 'V', 'K', 'S', 'L', 'Q', 'F', 'L', 'T', 'E', 'G', 'I',\n", - " 'I', 'M', 'K', 'D', 'F', 'S', 'P', 'N', 'V', 'L', 'S', 'L', 'L',\n", - " 'G', 'I', 'L', 'V', 'V', 'L', 'P', 'Y', 'M', 'K', 'H', 'G', 'D',\n", - " 'L', 'R', 'N', 'F', 'I', 'R', 'N', 'Y', 'L', 'A', 'S', 'K', 'K',\n", - " 'F', 'V', 'H', 'R', 'D', 'L', 'A', 'A', 'R', 'N', 'C', 'M', 'L',\n", - " 'V', 'A', 'D', 'F', 'G', 'L', 'A'], dtype='" ] }, "execution_count": 16, @@ -629,258 +1015,38 @@ } ], "source": [ - "b = np.array(list(kinase_sequences[\"MET\"]))\n", - "b" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - " A C D E F G H I K L M N P Q R S T V W Y B Z X *\n", - "A 4 0 -2 -1 -2 0 -2 -1 -1 -1 -1 -2 -1 -1 -1 1 0 0 -3 -2 -2 -1 0 -4\n", - "C 0 9 -3 -4 -2 -3 -3 -1 -3 -1 -1 -3 -3 -3 -3 -1 -1 -1 -2 -2 -3 -3 -2 -4\n", - "D -2 -3 6 2 -3 -1 -1 -3 -1 -4 -3 1 -1 0 -2 0 -1 -3 -4 -3 4 1 -1 -4\n", - "E -1 -4 2 5 -3 -2 0 -3 1 -3 -2 0 -1 2 0 0 -1 -2 -3 -2 1 4 -1 -4\n", - "F -2 -2 -3 -3 6 -3 -1 0 -3 0 0 -3 -4 -3 -3 -2 -2 -1 1 3 -3 -3 -1 -4\n", - "G 0 -3 -1 -2 -3 6 -2 -4 -2 -4 -3 0 -2 -2 -2 0 -2 -3 -2 -3 -1 -2 -1 -4\n", - "H -2 -3 -1 0 -1 -2 8 -3 -1 -3 -2 1 -2 0 0 -1 -2 -3 -2 2 0 0 -1 -4\n", - "I -1 -1 -3 -3 0 -4 -3 4 -3 2 1 -3 -3 -3 -3 -2 -1 3 -3 -1 -3 -3 -1 -4\n", - "K -1 -3 -1 1 -3 -2 -1 -3 5 -2 -1 0 -1 1 2 0 -1 -2 -3 -2 0 1 -1 -4\n", - "L -1 -1 -4 -3 0 -4 -3 2 -2 4 2 -3 -3 -2 -2 -2 -1 1 -2 -1 -4 -3 -1 -4\n", - "M -1 -1 -3 -2 0 -3 -2 1 -1 2 5 -2 -2 0 -1 -1 -1 1 -1 -1 -3 -1 -1 -4\n", - "N -2 -3 1 0 -3 0 1 -3 0 -3 -2 6 -2 0 0 1 0 -3 -4 -2 3 0 -1 -4\n", - "P -1 -3 -1 -1 -4 -2 -2 -3 -1 -3 -2 -2 7 -1 -2 -1 -1 -2 -4 -3 -2 -1 -2 -4\n", - "Q -1 -3 0 2 -3 -2 0 -3 1 -2 0 0 -1 5 1 0 -1 -2 -2 -1 0 3 -1 -4\n", - "R -1 -3 -2 0 -3 -2 0 -3 2 -2 -1 0 -2 1 5 -1 -1 -3 -3 -2 -1 0 -1 -4\n", - "S 1 -1 0 0 -2 0 -1 -2 0 -2 -1 1 -1 0 -1 4 1 -2 -3 -2 0 0 0 -4\n", - "T 0 -1 -1 -1 -2 -2 -2 -1 -1 -1 -1 0 -1 -1 -1 1 5 0 -2 -2 -1 -1 0 -4\n", - "V 0 -1 -3 -2 -1 -3 -3 3 -2 1 1 -3 -2 -2 -3 -2 0 4 -3 -1 -3 -2 -1 -4\n", - "W -3 -2 -4 -3 1 -2 -2 -3 -3 -2 -1 -4 -4 -2 -3 -3 -2 -3 11 2 -4 -3 -2 -4\n", - "Y -2 -2 -3 -2 3 -3 2 -1 -2 -1 -1 -2 -3 -1 -2 -2 -2 -1 2 7 -3 -2 -1 -4\n", - "B -2 -3 4 1 -3 -1 0 -3 0 -4 -3 3 -2 0 -1 0 -1 -3 -4 -3 4 1 -1 -4\n", - "Z -1 -3 1 4 -3 -2 0 -3 1 -3 -1 0 -1 3 0 0 -1 -2 -3 -2 1 4 -1 -4\n", - "X 0 -2 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -2 -1 -1 0 0 -1 -2 -1 -1 -1 -1 -4\n", - "* -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 1\n" - ] - } - ], - "source": [ - "# Obtain BLOSUM62\n", - "substitution_matrix = align.SubstitutionMatrix.std_protein_matrix()\n", - "print(substitution_matrix)" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(numpy.ndarray, (24, 24))" - ] - }, - "execution_count": 18, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "score_matrix = substitution_matrix.score_matrix()\n", - "type(score_matrix), score_matrix.shape" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "metadata": {}, - "outputs": [], - "source": [ - "letter_alphabet = substitution_matrix.get_alphabet1()" - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'A': 0,\n", - " 'C': 1,\n", - " 'D': 2,\n", - " 'E': 3,\n", - " 'F': 4,\n", - " 'G': 5,\n", - " 'H': 6,\n", - " 'I': 7,\n", - " 'K': 8,\n", - " 'L': 9,\n", - " 'M': 10,\n", - " 'N': 11,\n", - " 'P': 12,\n", - " 'Q': 13,\n", - " 'R': 14,\n", - " 'S': 15,\n", - " 'T': 16,\n", - " 'V': 17,\n", - " 'W': 18,\n", - " 'Y': 19,\n", - " 'B': 20,\n", - " 'Z': 21,\n", - " 'X': 22,\n", - " '*': 23}" - ] - }, - "execution_count": 20, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "dict_letters = {}\n", - "for i, letter in enumerate(letter_alphabet.get_symbols()):\n", - " dict_letters[letter] = i\n", - "dict_letters" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "metadata": {}, - "outputs": [], - "source": [ - "match_score = np.zeros(len(a))\n", - "for i, (character_seq1, character_seq2) in enumerate(zip(a, b)):\n", - " # print(character_seq1, character_seq2)#, type(character_seq1))\n", - " ind1 = dict_letters[character_seq1]\n", - " ind2 = dict_letters[character_seq2]\n", - " match_score[i] = score_matrix[ind1, ind2]" - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array([ 1., 4., 2., 6., -1., 6., -2., 6., 6., -1., 4., 7., -1.,\n", - " -1., 4., 3., 5., 0., 4., 2., 0., 4., -1., 5., 0., -1.,\n", - " 3., 5., -1., 0., -1., 0., 7., 1., 4., -1., -1., 4., 4.,\n", - " 6., 4., -2., 1., 3., -1., -1., -1., 5., -1., -1., 6., -3.,\n", - " 4., -2., 1., 3., 3., 5., 0., 7., 4., -1., 0., 2., 2.,\n", - " 0., 4., 8., 5., 6., 4., 4., 4., 5., 6., -1., 2., 1.,\n", - " 3., 0., 6., 6., 6., 4., 4.])" - ] - }, - "execution_count": 22, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "match_score" - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(24, 24)" - ] - }, - "execution_count": 23, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "substitution_matrix.shape()" - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "True" - ] - }, - "execution_count": 24, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "substitution_matrix.is_symmetric()" + "# Show matrix with background gradient\n", + "cm = sns.light_palette(\"green\", as_cmap=True)\n", + "kinase_similarity_matrix.style.\\\n", + " background_gradient(cmap=cm).\\\n", + " format(\"{:.3f}\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Show kinase coverage" + "### Save kinase distance matrix" ] }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, + "execution_count": 17, "metadata": {}, "outputs": [], - "source": [] - }, - { - "cell_type": "markdown", - "metadata": {}, "source": [ - "### Visualize similarity as phylogenetic tree" + "kinase_similarity_matrix.to_csv(DATA / \"kinase_similarity_matrix_sequence.csv\")" ] }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Discussion\n", "\n", - "Wrap up the talktorial's content here and discuss pros/cons and open questions/challenges." + "Wrap up the talktorial's content here and discuss pros/cons and open questions/challenges.\n", + "\n", + "The kinase similarity matrix above will be reloaded in **Talktorial T028**, where we compare kinase similarities from different perspectives, including the pocket sequence perspective we have talked about in this talktorial." ] }, { @@ -895,13 +1061,6 @@ "2. Question\n", "3. Question" ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] } ], "metadata": { From 601309f328aa995263716ac508ae1256d72bfc40 Mon Sep 17 00:00:00 2001 From: t-kimber Date: Tue, 24 Aug 2021 14:59:39 +0200 Subject: [PATCH 6/7] add csv for similarity matrix. --- .../data/kinase_similarity_matrix_sequence.csv | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 teachopencadd/talktorials/T024_kinase_similarity_sequence/data/kinase_similarity_matrix_sequence.csv diff --git a/teachopencadd/talktorials/T024_kinase_similarity_sequence/data/kinase_similarity_matrix_sequence.csv b/teachopencadd/talktorials/T024_kinase_similarity_sequence/data/kinase_similarity_matrix_sequence.csv new file mode 100644 index 00000000..ce6a35bf --- /dev/null +++ b/teachopencadd/talktorials/T024_kinase_similarity_sequence/data/kinase_similarity_matrix_sequence.csv @@ -0,0 +1,10 @@ +,EGFR,ErbB2,BRAF,CDK2,LCK,MET,p38a,KDR,p110a +EGFR,1.0,0.8941176470588236,0.3764705882352941,0.3176470588235294,0.4470588235294118,0.4588235294117647,0.38823529411764707,0.47058823529411764,0.11764705882352941 +ErbB2,0.8941176470588236,1.0,0.4,0.32941176470588235,0.4235294117647059,0.47058823529411764,0.4,0.43529411764705883,0.11764705882352941 +BRAF,0.3764705882352941,0.4,1.0,0.32941176470588235,0.38823529411764707,0.3764705882352941,0.3764705882352941,0.4,0.15294117647058825 +CDK2,0.3176470588235294,0.32941176470588235,0.32941176470588235,1.0,0.3764705882352941,0.36470588235294116,0.47058823529411764,0.3411764705882353,0.10588235294117647 +LCK,0.4470588235294118,0.4235294117647059,0.38823529411764707,0.3764705882352941,1.0,0.4,0.38823529411764707,0.43529411764705883,0.1411764705882353 +MET,0.4588235294117647,0.47058823529411764,0.3764705882352941,0.36470588235294116,0.4,1.0,0.36470588235294116,0.47058823529411764,0.10588235294117647 +p38a,0.38823529411764707,0.4,0.3764705882352941,0.47058823529411764,0.38823529411764707,0.36470588235294116,1.0,0.38823529411764707,0.1411764705882353 +KDR,0.47058823529411764,0.43529411764705883,0.4,0.3411764705882353,0.43529411764705883,0.47058823529411764,0.38823529411764707,1.0,0.15294117647058825 +p110a,0.11764705882352941,0.11764705882352941,0.15294117647058825,0.10588235294117647,0.1411764705882353,0.10588235294117647,0.1411764705882353,0.15294117647058825,1.0 From 53619b3fd45147c9f6c50767b9366d463686439d Mon Sep 17 00:00:00 2001 From: t-kimber Date: Tue, 24 Aug 2021 18:18:58 +0200 Subject: [PATCH 7/7] Add discussion and quiz --- .../talktorial.ipynb | 345 ++++++++++-------- 1 file changed, 189 insertions(+), 156 deletions(-) diff --git a/teachopencadd/talktorials/T024_kinase_similarity_sequence/talktorial.ipynb b/teachopencadd/talktorials/T024_kinase_similarity_sequence/talktorial.ipynb index 30ab25e0..fdf4ed02 100644 --- a/teachopencadd/talktorials/T024_kinase_similarity_sequence/talktorial.ipynb +++ b/teachopencadd/talktorials/T024_kinase_similarity_sequence/talktorial.ipynb @@ -19,7 +19,7 @@ "source": [ "## Aim of this talktorial\n", "\n", - "Add a short summary of this talktorial's content." + "In this talktorial, we investigate sequence similarity for kinases of interest. KLIFS' API is used to retrieve the 85 residues pocket sequence for each kinase. Two similarity measures are implemented: 1. the identity similarity which is based on character-wise discrepancy and 2. the substitution similarity which is amino acid specific." ] }, { @@ -29,7 +29,9 @@ "### Contents in *Theory*\n", "\n", "* Kinase dataset\n", - "* Kinase similarity descriptor: XXX" + "* Kinase similarity descriptor: sequence\n", + " * Identity score\n", + " * Substitution score" ] }, { @@ -38,11 +40,13 @@ "source": [ "### Contents in *Practical*\n", "\n", - "* Retrieve and preprocess data\n", - "* Show kinase coverage\n", - "* Compare kinases\n", + "* Retrieve sequences from KLIFS\n", + "* Sequence similarity\n", + " * Identity score\n", + " * Substitution score\n", + "* Kinase comparison\n", "* Visualize similarity as kinase matrix\n", - "* Visualize similarity as phylogenetic tree" + "* Save kinase distance matrix" ] }, { @@ -52,7 +56,10 @@ "### References\n", "\n", "* Kinase dataset: [Molecules (2021), 26(3), 629](https://www.mdpi.com/1420-3049/26/3/629) \n", - "* Kinase similarity descriptor: XXX" + "* KLIFS\n", + " * KLIFS URL: https://klifs.net/\n", + " * KLIFS database: [Nucleic Acid Res. (2020), 49(D1), D562-D569](https://doi.org/10.1093/nar/gkaa895)\n", + "* Substitution matrix: [PNAS (1992), 89(22), 10915-10919](https://doi.org/10.1073/pnas.89.22.10915)" ] }, { @@ -82,8 +89,8 @@ "\n", " \n", "\n", - "*Table 1:* \n", - "Kinases used in this notebook, taken from [Molecules (2021), 26(3), 629](https://www.mdpi.com/1420-3049/26/3/629), with their synonyms, UniProt IDs, and kinase groups.\n", + "*Table 1:*\n", + "Kinases used in this notebook, taken from [Molecules (2021), 26(3), 629](https://www.mdpi.com/1420-3049/26/3/629), with their synonyms, UniProt IDs, kinase groups, and full unabbreviated names.\n", "\n", " \n", "\n", @@ -106,16 +113,33 @@ "source": [ "### Kinase similarity descriptor: sequence\n", "\n", - "Describe the dataset describing kinase similarity and how we use it.\n", + "In this talktorial, the KLIFS' pocket sequence is used for two main reasons:\n", + "1. The sequence is of fixed length (it contains 85 residues), which makes computation for pairwise similarity between two sequences easy.\n", + "2. The binding pocket is where the action takes place. Why consider the full kinase sequence when an 85 residues sequence contains most relevant information?\n", "\n", - "- XXX = KLIFS pocket sequence" + "We now describe two ways to compare pocket sequences." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "## Practical" + "#### Identity score\n", + "A simple way of assessing the similarity between two sequences is to use the so-called identity score.\n", + "First, a match vector is created: it checks whether for each position the characters from the two sequences are identical. If there are, the entry is set to $1$, and $0$ otherwise.\n", + "\n", + "The identity score is computed by sum the elements in the match vector and normalizing the entry by the length of the sequence, which, in the case of KLIFS pocket sequence is $85$." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Substitution score\n", + "Although the identity score is an easy measure of similarity, it does not take into account the rate at which an amino acid may change into another and treats all residues uniformly.\n", + "\n", + "The substitution score takes the changes of the amino acids over evolutionary time into account. It makes use of a substitution matrix, where each entry gives a score between two amino acids.\n", + "In this talktorial, we use the BLOSUM substitution matrix [PNAS (1992), 89(22), 10915-10919](https://doi.org/10.1073/pnas.89.22.10915), implemented in biotite." ] }, { @@ -124,9 +148,14 @@ "metadata": {}, "outputs": [], "source": [ - "# !pip install flake8 pycodestyle_magic\n", - "%load_ext pycodestyle_magic\n", - "%pycodestyle_on" + "# TODO: add aggregation and normalization" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Practical" ] }, { @@ -189,7 +218,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "We use KLIFS' API to retrieve the 85-long pocket sequence for each kinase." + "We use KLIFS' API to retrieve the $85$-long pocket sequence for each kinase." ] }, { @@ -228,7 +257,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Let's see how these pocket sequence look like." + "Let's look at these pocket sequences." ] }, { @@ -273,7 +302,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Given two kinases, we create functions which account for identity or subsituition similarity, as described in the theory." + "Given two kinases, we create functions which account for identity or substitution similarity, as described in the theory." ] }, { @@ -320,7 +349,7 @@ "metadata": {}, "source": [ "#### Substitution score\n", - "We now define the function which is more specific to amino acids grouping and use the `biotite` library and retrieve the substitution matrix." + "We now define the function which is more specific to amino acids grouping and use the `biotite` library for retrieving the BLOSUM substitution matrix." ] }, { @@ -334,7 +363,7 @@ " substitution_matrix=align.\n", " SubstitutionMatrix.std_protein_matrix()):\n", " \"\"\"\n", - " Retrieve #TODO\n", + " Retrieve the match score given the substitution matrix\n", "\n", " Parameters\n", " ----------\n", @@ -349,6 +378,8 @@ "\n", " Returns\n", " -------\n", + " np.array :\n", + " The vector of match score given the substitution matrix.\n", " \"\"\"\n", " # Retrieve np.array from substitution matrix\n", " score_matrix = substitution_matrix.score_matrix()\n", @@ -367,8 +398,6 @@ " ind1 = dict_letters[character_seq1]\n", " ind2 = dict_letters[character_seq2]\n", " match_score[i] = score_matrix[ind1, ind2]\n", - " # TODO normalize?\n", - " # TODO check for * VS -\n", " return match_score" ] }, @@ -376,7 +405,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "#### Kinase comparison" + "### Kinase comparison" ] }, { @@ -411,6 +440,12 @@ " sequence_1 = klifs_pocket_sequence(kinase_name1)\n", " sequence_2 = klifs_pocket_sequence(kinase_name2)\n", "\n", + " # Replace possible unavailable residue\n", + " # noted in KLIFS with \"-\"\n", + " # by the symbol \"*\" for biotite\n", + " sequence_1 = sequence_1.replace(\"-\", \"*\")\n", + " sequence_2 = sequence_2.replace(\"-\", \"*\")\n", + "\n", " if len(sequence_1) != len(sequence_1):\n", " print(\"Mismatch in sequence lengths.\")\n", " return None\n", @@ -484,7 +519,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "As expected, the similarity between a kinase and itself leads the highest possible score:" + "As expected, the similarity between a kinase and itself leads to the highest possible score:" ] }, { @@ -741,144 +776,144 @@ "data": { "text/html": [ "\n", - "\n", + "
\n", " \n", " \n", " \n", @@ -895,118 +930,118 @@ " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", "
 
EGFR1.0000.8940.3760.3180.4470.4590.3880.4710.118EGFR1.0000.8940.3760.3180.4470.4590.3880.4710.118
ErbB20.8941.0000.4000.3290.4240.4710.4000.4350.118ErbB20.8941.0000.4000.3290.4240.4710.4000.4350.118
BRAF0.3760.4001.0000.3290.3880.3760.3760.4000.153BRAF0.3760.4001.0000.3290.3880.3760.3760.4000.153
CDK20.3180.3290.3291.0000.3760.3650.4710.3410.106CDK20.3180.3290.3291.0000.3760.3650.4710.3410.106
LCK0.4470.4240.3880.3761.0000.4000.3880.4350.141LCK0.4470.4240.3880.3761.0000.4000.3880.4350.141
MET0.4590.4710.3760.3650.4001.0000.3650.4710.106MET0.4590.4710.3760.3650.4001.0000.3650.4710.106
p38a0.3880.4000.3760.4710.3880.3651.0000.3880.141p38a0.3880.4000.3760.4710.3880.3651.0000.3880.141
KDR0.4710.4350.4000.3410.4350.4710.3881.0000.153KDR0.4710.4350.4000.3410.4350.4710.3881.0000.153
p110a0.1180.1180.1530.1060.1410.1060.1410.1531.000p110a0.1180.1180.1530.1060.1410.1060.1410.1531.000
\n" ], "text/plain": [ - "" + "" ] }, "execution_count": 16, @@ -1044,7 +1079,7 @@ "source": [ "## Discussion\n", "\n", - "Wrap up the talktorial's content here and discuss pros/cons and open questions/challenges.\n", + "In this talktorial, we investigate how sequences can be used to measure similarity between kinases. The focus is made of the pocket sequence, which is retrieve from KLIFS. Sequence similarity can be assessed using two scores: 1. the identity, which treats all amino acids uniformly, and 2. the substitution, which takes into account the rate of change of residues over evolutionary time.\n", "\n", "The kinase similarity matrix above will be reloaded in **Talktorial T028**, where we compare kinase similarities from different perspectives, including the pocket sequence perspective we have talked about in this talktorial." ] @@ -1055,11 +1090,9 @@ "source": [ "## Quiz\n", "\n", - "Ask three questions that the user should be able to answer after doing this talktorial. Choose important take-aways from this talktorial for your questions.\n", - "\n", - "1. Question\n", - "2. Question\n", - "3. Question" + "1. Should the full kinase sequence be used instead of the pocket sequence?\n", + "2. How does the similarity using identity behave with respect to mutations?\n", + "3. How does similarity using identity compare to similarity using substitution?" ] } ],