diff --git a/dev/README.md b/dev/README.md deleted file mode 100644 index ed7d52a3..00000000 --- a/dev/README.md +++ /dev/null @@ -1,5 +0,0 @@ -# README - -`dev` contains notebooks for experimenting with new features, and it is *not* part of the documentation -but rather the Wild West of the developers. - diff --git a/dev/Statistical tests.ipynb b/dev/Statistical tests.ipynb deleted file mode 100644 index 077c9228..00000000 --- a/dev/Statistical tests.ipynb +++ /dev/null @@ -1,931 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "a5fb9fbb-370b-4e5d-9f04-3fab713000a5", - "metadata": {}, - "source": [ - "**Statistical tests**\n", - "\n", - "This notebook is a playground for showing and testing statistical methods used by the `gpsea` library \n", - "to discover genotype-phenotype correlations in patients annotated with HPO terms." - ] - }, - { - "cell_type": "markdown", - "id": "ea476a3c-2bcc-496b-88d2-e9cadea3a8f1", - "metadata": {}, - "source": [ - "# Install the `gpsea` library\n", - "\n", - "The notebook needs `gpsea` to be installed in the Python environment. `gpsea` is still mostly work in progress, so the best way is to install from sources.\n", - "\n", - "We assume availability of `git` and Python 3.8 or better in the environment.\n", - "\n", - "```shell\n", - "git clone git@github.com:monarch-initiative/gpsea.git\n", - "cd gpsea\n", - "git checkout develop && git pull\n", - "\n", - "python3 -m pip install --editable .[test]\n", - "\n", - "pytest\n", - "```\n", - "\n", - "First, we download the source code from the GitHub repository, and we switch to `develop` branch to access the bleeding-edge features. Then, we install `gpsea` into the active environment, including the [dependencies](https://github.com/monarch-initiative/gpsea/blob/020832e850ef7107aa9de61462bc3490e0deb574/pyproject.toml#L34). As an optional last step, we run the tests to ensure installation went well.\n", - "\n", - "With this setup, we are ready to run the rest of the notebook, assuming the notebook kernel corresponds to the Python environment where `gpsea` was installed to." - ] - }, - { - "cell_type": "markdown", - "id": "c33b3a27-950e-451e-91da-d38710b702ef", - "metadata": {}, - "source": [ - "# Example analysis\n", - "\n", - "For the purpose of this analysis, we use a cohort of patients with mutations in *SUOX* gene, curated from published case reports. \n", - "\n", - "The patient data includes:\n", - "- a `str` identifier that is unique to the patient within the cohort,\n", - "- a list of clinical signs and symptoms encoded into terms of Human Phenotype Ontology,\n", - "- one or more causal mutations in *SUOX* gene\n", - "\n", - "The patient data is formatted as phenopackets of phenopacket schema." - ] - }, - { - "cell_type": "markdown", - "id": "ce658aa1-61a9-43e1-852a-2117228bdab2", - "metadata": {}, - "source": [ - "## Create patient cohort\n", - "\n", - "Let's start with loading of the patient data from the phenopackets:" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "3f039762-e276-4570-bd7b-0d9a5e1fcd52", - "metadata": {}, - "outputs": [], - "source": [ - "import hpotk\n", - "\n", - "from gpsea.preprocessing import configure_caching_cohort_creator\n", - "\n", - "hpo_url = 'https://github.com/obophenotype/human-phenotype-ontology/releases/download/v2023-10-09/hp.json'\n", - "hpo = hpotk.load_minimal_ontology(hpo_url)\n", - "\n", - "cohort_creator = configure_caching_cohort_creator(hpo)" - ] - }, - { - "cell_type": "markdown", - "id": "8f03c3ea-989e-4e2c-b14d-397895ad883c", - "metadata": {}, - "source": [ - "For reproducibility, we download a specific HPO version `v2023-10-09` and we will use it to load the phenopacket cohort in the cohort creator." - ] - }, - { - "cell_type": "markdown", - "id": "9597e6ed-3016-481a-a2b2-263f87dc349f", - "metadata": {}, - "source": [ - "Now we can ETL the phenopackets into data format expected by `gpsea`. \n", - "\n", - "Assuming the notebook is run from its location within `gpsea` repository, we use the pe\u0000 \u0000t\u0000h\u0000e\u0000 \u0000located at [notebooks/SUOX/phenopackets](https://github.com/monarch-initiative/gpsea/tree/develop/notebooks/SUOX/phenopackets):" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "c26931cc-ae85-42fd-8b40-2fdc323821eb", - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "Loading phenopackets from /home/ielis/ielis/phenotypes/gpsea/notebooks/SUOX/phenopackets\n", - "Patients Created: 100%|██████████| 35/35 [00:00<00:00, 620.92it/s]\n", - "Validated under none policy\n", - "No errors or warnings were found\n" - ] - } - ], - "source": [ - "import os\n", - "import sys\n", - "from gpsea.preprocessing import load_phenopacket_folder\n", - "\n", - "fpath_parent = os.path.dirname(os.getcwd())\n", - "fpath_phenopacket_dir = os.path.join(fpath_parent, 'notebooks', 'SUOX', 'phenopackets')\n", - "print(f'Loading phenopackets from {fpath_phenopacket_dir}', file=sys.stderr)\n", - "\n", - "cohort = load_phenopacket_folder(fpath_phenopacket_dir, cohort_creator)" - ] - }, - { - "cell_type": "markdown", - "id": "8e7eff97-2a4f-4506-8121-ed70c20e008f", - "metadata": {}, - "source": [ - "The code finds the directory with phenopackets and starts the loading.\n", - "\n", - "The loading extracts the identifiers, HPO terms and vairants from the phenopacket JSON files and proceeds with functional annotation of the variants. \n", - "\n", - "> We use Variant Effect Predictor (VEP) REST endpoint to perform the annotation. However, we cache the results to conserve bandwidth and to speed up the subsequent runs.\n", - "\n", - "The loading is concluded with validation of the HPO terms and variants." - ] - }, - { - "cell_type": "markdown", - "id": "7367caf3-be4c-4183-8768-744d658b5eaf", - "metadata": {}, - "source": [ - "## Explore the cohort\n", - "\n", - "Let's explore the cohort to gain preliminary insights." - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "3653b976-f303-4321-8e83-a5cdad920521", - "metadata": {}, - "outputs": [], - "source": [ - "from IPython.display import HTML, display\n", - "from gpsea.view import CohortViewer\n", - "\n", - "viewer = CohortViewer(hpo)" - ] - }, - { - "cell_type": "markdown", - "id": "b38bc5bd-47c1-48d9-b308-f6218e5595f5", - "metadata": {}, - "source": [ - "Show the number of cohort members, count of unique HPO terms and variants:" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "8ec43cb1-8dd4-461c-991d-1d50b4a8c721", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "
ItemDescription
Description of the cohort.
Total Individuals35
Total Unique HPO Terms32
Total Unique Variants48
" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "display(HTML(viewer.cohort_summary_table(cohort)))" - ] - }, - { - "cell_type": "markdown", - "id": "4a3d29fa-1156-408a-961a-302f1b472b7e", - "metadata": {}, - "source": [ - "Count the number of times an HPO term is used as an annotation in the cohort member:" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "3ae09667-81ef-4526-a88a-6549d213fc37", - "metadata": {}, - "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", - "
HPO TermCount
Counts of annotations to HPO terms for the 35 in the cohort
Seizure (HP:0001250)28
Hypotonia (HP:0001252)15
Sulfocysteinuria (HP:0032350)13
Abnormality of extrapyramidal motor function (HP:0002071)11
Hypertonia (HP:0001276)11
Microcephaly (HP:0000252)10
Neurodevelopmental delay (HP:0012758)8
Ectopia lentis (HP:0001083)7
Hypocystinemia (HP:0500152)7
Hypouricemia (HP:0003537)7
Cognitive regression (HP:0034332)6
Increased urinary taurine (HP:0003166)5
Decreased urinary urate (HP:0011935)2
Elevated circulating S-sulfocysteine concentration (HP:0034745)2
Xanthinuria (HP:0010934)2
Hypertaurinemia (HP:0500181)1
Increased urinary hypoxanthine level (HP:0011814)1
" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "display(HTML(viewer.hpo_term_counts_table(cohort))) ## Add Labels to output" - ] - }, - { - "cell_type": "markdown", - "id": "2a72c45a-169a-4526-ab92-d4ffb55c2e52", - "metadata": {}, - "source": [ - "We will work with the most clinically relevant *SUOX* transcript:" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "7e6b6069-1958-46b8-aa3c-6af2c5c9eb85", - "metadata": {}, - "outputs": [], - "source": [ - "tx_id = 'NM_001032386.2'" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "1523f01c-c164-4db5-92c1-36092e95be0d", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "
VariantEffectCountKey
c.1200C>GSTOP_GAINED712_56004589_56004589_C_G
c.650G>AMISSENSE_VARIANT312_56004039_56004039_G_A
c.1096C>TMISSENSE_VARIANT312_56004485_56004485_C_T
c.1376G>AMISSENSE_VARIANT312_56004765_56004765_G_A
c.1521_1524delFRAMESHIFT_VARIANT212_56004905_56004909_ATTGT_A
c.1549_1574dupFRAMESHIFT_VARIANT212_56004933_56004933_A_ACAATGTGCAGCCAGACACCGTGGCCC
c.1382A>TMISSENSE_VARIANT212_56004771_56004771_A_T
c.884G>AMISSENSE_VARIANT212_56004273_56004273_G_A
\n", - "

Additionally, the following variants were observed 1 or fewer times: \n", - "c.1280C>A; c.1261C>T; c.182T>C; c.772A>C; c.1126C>T; c.734_737del; c.352C>T; c.1201A>G; c.205G>C; c.427C>A; c.1348T>C; c.1084G>A; c.520del; c.649C>G; c.400_403del; c.1097G>A; c.1355G>A; c.803G>A; c.287dup; c.1136A>G; c.794C>A; c.433del; c.475G>T; c.1187A>G.

\n", - "

Use the entry in the \"Key\" column to investigate whether specific variants display genotype-phenotype correlations

" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "display(HTML(viewer.variants_table(cohort, tx_id))) " - ] - }, - { - "cell_type": "markdown", - "id": "4d16f224-0f8b-4ca3-9b11-2216bce456d1", - "metadata": {}, - "source": [ - "Group and count the variants according to the predicted functional effect on the transcript of interest:" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "4bd62aef-aede-4cde-9bbf-8d5444bc6127", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "MISSENSE_VARIANT : 29\n", - "STOP_GAINED : 10\n", - "FRAMESHIFT_VARIANT : 9\n" - ] - } - ], - "source": [ - "for ve, count in cohort.list_data_by_tx()[tx_id].items():\n", - " print(f'{ve:<20}: {count}')" - ] - }, - { - "cell_type": "markdown", - "id": "8d88820f-b01f-427c-beac-58a3259b26be", - "metadata": {}, - "source": [ - "## Configure the analysis\n", - "\n", - "We create an analysis runner, a convenience class for running the available analyses." - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "3550a9c6-1977-4286-8889-161f3149925b", - "metadata": {}, - "outputs": [], - "source": [ - "from gpsea.analysis import configure_cohort_analysis\n", - "from gpsea.analysis.predicate import BooleanPredicate\n", - "\n", - "analysis = configure_cohort_analysis(cohort, hpo)" - ] - }, - { - "cell_type": "markdown", - "id": "97b921f2-12d0-4805-acd2-dfd42142528a", - "metadata": {}, - "source": [ - "## Missense vs. other variants\n", - "\n", - "Let's investigate correlation between missense variants vs. other variant effects.\n", - "\n", - "The analysis runner prepares an *induced graph* from the HPO terms of the subjects. The induced graph is a `set` of the terms and their ancestors. \n", - "\n", - "> This is due to the annotation propagation rule of the ontologies with `is_a` relations (such as HPO) where presence of a term implies presence of its ancestors." - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "id": "2629aa7c-d5e9-4287-a7c6-1f8e533dad70", - "metadata": {}, - "outputs": [], - "source": [ - "from gpsea.model import VariantEffect\n", - "\n", - "result = analysis.compare_by_variant_effect(VariantEffect.MISSENSE_VARIANT, tx_id)" - ] - }, - { - "cell_type": "markdown", - "id": "24f0468e-a3b0-43ca-ab93-a4b1bcc606c3", - "metadata": {}, - "source": [ - "Now we have `result` with the analysis results.\n", - "\n", - "The runner tested each term of the induced graph for genotype-phenotype correlation. The patients are split into a 2x2 contingency table according to having the missense variant (or not) and being annotated with the HPO term (or not).\n", - "\n", - "Let's look at one such table:" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "id": "4aa77ed6-dd9f-4689-9cda-f4a6e058f583", - "metadata": {}, - "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", - "
MISSENSE_VARIANT on NM_001032386.2NoYes
category
No07
Yes1117
\n", - "
" - ], - "text/plain": [ - "MISSENSE_VARIANT on NM_001032386.2 No Yes\n", - "category \n", - "No 0 7\n", - "Yes 11 17" - ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "seizure = hpotk.TermId.from_curie('HP:0001250')\n", - "result.all_counts.loc[seizure]" - ] - }, - { - "cell_type": "markdown", - "id": "9fc0cc90-aa0b-4c46-b42d-9e56b173ba5e", - "metadata": {}, - "source": [ - "We see that `24` (`7 + 17`) subjects had at least one missense variant while `11` had no missense variant.\n", - "\n", - "Regarding presence of *Seizure*, we see that `28` (`11 + 17`) subjects were annotated with *Seizure* or one of its descendants, such as *Clonic seizure*, *Motor seizure*, etc.\n", - "`7` subjects were not annotated with any kind of a *Seizure*." - ] - }, - { - "cell_type": "markdown", - "id": "8d628a6c-167d-43f2-acd4-5a3110c531a1", - "metadata": {}, - "source": [ - "We can apply Fisher's exact test to test for significance and we will obtain the following p value:" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "id": "8ffd16b3-ef2b-41e6-987e-a2d1621c43b1", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "p value: 0.07213\n" - ] - } - ], - "source": [ - "print(f'p value: {result.pvals.loc[seizure]:.5f}')" - ] - }, - { - "cell_type": "markdown", - "id": "fa11005a-bd48-4ebf-b7db-ccaeb6c99d92", - "metadata": {}, - "source": [ - "However, since we tested all features of the induced graph, we should apply multiple testing correction." - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "id": "67fa3d04-3e7a-4a8a-bf1d-ff20db9836f7", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Ran 68 tests in total\n" - ] - } - ], - "source": [ - "print(f'Ran {len(result.pvals)} tests in total')" - ] - }, - { - "cell_type": "markdown", - "id": "796f87fc-9dc9-47ae-b229-f2e465437b57", - "metadata": {}, - "source": [ - "By default, we use *Bonferroni* correction:" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "id": "7cbb293b-d201-46c6-835a-794e7e84f8e5", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "After Bonferroni correction: 1.00000\n" - ] - } - ], - "source": [ - "print(f'After Bonferroni correction: {result.corrected_pvals[seizure]:.5f}')" - ] - }, - { - "cell_type": "markdown", - "id": "41f9baed-9ce8-43fb-9326-73fca90ac8f0", - "metadata": {}, - "source": [ - "We can summarize the results of all tests into a data frame. \n", - "We use `BooleanPredicate.YES` to indicate that we want to see counts of patients *with* the tested phenotype." - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "id": "42d7d156-eac5-411b-ae94-fa459bc716cc", - "metadata": {}, - "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", - "
MISSENSE_VARIANT on NM_001032386.2NoYes
CountPercentCountPercentp valueCorrected p value
Seizure [HP:0001250]11/3531.42857117/3548.5714290.0721291.0
Hypouricemia [HP:0003537]4/1526.6666673/1520.0000000.1188811.0
Cognitive regression [HP:0034332]0/250.0000006/2524.0000000.1291701.0
Increased urinary taurine [HP:0003166]0/60.0000005/683.3333330.1666671.0
Hypotonia [HP:0001252]3/2313.04347812/2352.1739130.1818961.0
.....................
Developmental regression [HP:0002376]0/60.0000006/6100.0000001.0000001.0
Increased urine proteinogenic amino acid derivative level [HP:0033097]0/50.0000005/5100.0000001.0000001.0
Elevated circulating S-sulfocysteine concentration [HP:0034745]0/20.0000002/2100.0000001.0000001.0
Abnormal circulating non-proteinogenic amino acid concentration [HP:0033109]0/20.0000002/2100.0000001.0000001.0
Xanthinuria [HP:0010934]0/110.0000002/1118.1818181.0000001.0
\n", - "

68 rows × 6 columns

\n", - "
" - ], - "text/plain": [ - "MISSENSE_VARIANT on NM_001032386.2 No Yes \\\n", - " Count Percent Count \n", - "Seizure [HP:0001250] 11/35 31.428571 17/35 \n", - "Hypouricemia [HP:0003537] 4/15 26.666667 3/15 \n", - "Cognitive regression [HP:0034332] 0/25 0.000000 6/25 \n", - "Increased urinary taurine [HP:0003166] 0/6 0.000000 5/6 \n", - "Hypotonia [HP:0001252] 3/23 13.043478 12/23 \n", - "... ... ... ... \n", - "Developmental regression [HP:0002376] 0/6 0.000000 6/6 \n", - "Increased urine proteinogenic amino acid deriva... 0/5 0.000000 5/5 \n", - "Elevated circulating S-sulfocysteine concentrat... 0/2 0.000000 2/2 \n", - "Abnormal circulating non-proteinogenic amino ac... 0/2 0.000000 2/2 \n", - "Xanthinuria [HP:0010934] 0/11 0.000000 2/11 \n", - "\n", - "MISSENSE_VARIANT on NM_001032386.2 \\\n", - " Percent p value \n", - "Seizure [HP:0001250] 48.571429 0.072129 \n", - "Hypouricemia [HP:0003537] 20.000000 0.118881 \n", - "Cognitive regression [HP:0034332] 24.000000 0.129170 \n", - "Increased urinary taurine [HP:0003166] 83.333333 0.166667 \n", - "Hypotonia [HP:0001252] 52.173913 0.181896 \n", - "... ... ... \n", - "Developmental regression [HP:0002376] 100.000000 1.000000 \n", - "Increased urine proteinogenic amino acid deriva... 100.000000 1.000000 \n", - "Elevated circulating S-sulfocysteine concentrat... 100.000000 1.000000 \n", - "Abnormal circulating non-proteinogenic amino ac... 100.000000 1.000000 \n", - "Xanthinuria [HP:0010934] 18.181818 1.000000 \n", - "\n", - "MISSENSE_VARIANT on NM_001032386.2 \n", - " Corrected p value \n", - "Seizure [HP:0001250] 1.0 \n", - "Hypouricemia [HP:0003537] 1.0 \n", - "Cognitive regression [HP:0034332] 1.0 \n", - "Increased urinary taurine [HP:0003166] 1.0 \n", - "Hypotonia [HP:0001252] 1.0 \n", - "... ... \n", - "Developmental regression [HP:0002376] 1.0 \n", - "Increased urine proteinogenic amino acid deriva... 1.0 \n", - "Elevated circulating S-sulfocysteine concentrat... 1.0 \n", - "Abnormal circulating non-proteinogenic amino ac... 1.0 \n", - "Xanthinuria [HP:0010934] 1.0 \n", - "\n", - "[68 rows x 6 columns]" - ] - }, - "execution_count": 15, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "result.summarize(hpo, BooleanPredicate.YES)" - ] - }, - { - "cell_type": "markdown", - "id": "a5eada61-fea4-4352-8000-8451fbe9f42a", - "metadata": {}, - "source": [ - "The summary shows patient counts and percentages along with corrected and uncorrected values. \n", - "The rows are sorted by corrected and uncorrected values in ascending order." - ] - }, - { - "cell_type": "markdown", - "id": "012b5409-f359-42ff-a8d2-7afc734e5cd2", - "metadata": {}, - "source": [ - "## Task\n", - "\n", - "We are seeking a smarter strategy to reduce the number of tests.\n", - "\n", - "### Tune genotype predicate selection\n", - "\n", - "First, we want the user to be well informed about the promising genotype predicates. For instance, it makes no sense to test missense variants vs. others if there are no missense variants in the gene.\n", - "\n", - "We are developing code for exploratory analysis, including functions that plot variants on transcript and the protein, to inform the genotype predicate selection.\n", - "\n", - "### Tune tested phenotypic features\n", - "\n", - "Reducing the number of tested phenotypic features should increase the utility of the analysis.\n", - "\n", - "One way to approach this is to leverage the ontology hierarchy to limit testing of the non-specific terms, such as *Abnormal nervous system physiology* (HP:0012638), which are unlikely to be helpful to the clinicians/users.\n", - "\n", - "Next, we can select multiple testing correction methods that are more appropriate for working with ontology terms. We can probably combine this with an iterative approach, where we start testing the leaves of the induced graph (specific terms, such as *Focal clonic seizure*) and we \"walk\" the graph towards the general terms such as *Abnormal nervous system physiology*. The approach can include early termination if the current term exceeds a threshold (we need to define this better).\n", - "\n", - "These are some ideas to start." - ] - }, - { - "cell_type": "markdown", - "id": "1f3c7795-de4f-4003-a156-5a62ebb7860f", - "metadata": {}, - "source": [ - "EOF" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Exploratory (Python 3.10)", - "language": "python", - "name": "exploratory" - }, - "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.10.12" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/dev/Visualizers.ipynb b/dev/Visualizers.ipynb deleted file mode 100644 index fd7fcb59..00000000 --- a/dev/Visualizers.ipynb +++ /dev/null @@ -1,1188 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**Setup for visualizers**\n", - "\n", - "The notebook loads a cohort of patients with mutations in *SUOX*, performs the functional variant annotation, and collates the data into a `Cohort` object." - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "%matplotlib inline\n", - "\n", - "import os\n", - "import hpotk\n", - "\n", - "hpotk.util.setup_logging()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Setup resources\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Load HPO\n", - "\n", - "Use HPO release *2023-10-09*. The ontology is downloaded from the PURL.\n", - "\n", - "> Note: feel free to download the file once and provide the local path, e.g. `/home/joe/path/to/hp.json`." - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'2023-10-09'" - ] - }, - "execution_count": 2, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "fpath_hpo = 'https://github.com/obophenotype/human-phenotype-ontology/releases/download/v2023-10-09/hp.json'\n", - "\n", - "hpo = hpotk.load_minimal_ontology(fpath_hpo)\n", - "hpo.version" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Load samples" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Configure patient creator\n", - "\n", - "Patient creator transforms phenopackets into `Patient`s - the internal representation of the sample data. \n", - "\n", - "The transformation includes checking that the phenotypic features - the uses HPO to check all phenotypic features are annotated with current HPO terms " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Setup phenotypic feature validation\n", - "\n", - "We ensure that the phenotypic features of the subjects meet the following validation requirements:\n", - "- the phenotypic features are represented using current (non-obsolete) HPO term IDs\n", - "- all phenotypic features are descendants of *Phenotypic abnormality* branch of HPO\n", - "- the terms do not violate the annotation propagation rule - subjects are not annotated by a term and its ancestor/descendant" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [], - "source": [ - "from hpotk.validate import ValidationRunner\n", - "from hpotk.validate import ObsoleteTermIdsValidator, PhenotypicAbnormalityValidator, AnnotationPropagationValidator\n", - "\n", - "validation_runner = ValidationRunner(\n", - " validators=(\n", - " ObsoleteTermIdsValidator(hpo),\n", - " PhenotypicAbnormalityValidator(hpo),\n", - " AnnotationPropagationValidator(hpo)\n", - " ))" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [], - "source": [ - "from gpsea.preprocessing import configure_caching_patient_creator\n", - "\n", - "pc = configure_caching_patient_creator(hpo, validation_runner=validation_runner)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Load phenopackets\n", - "\n", - "Walk the directory, find all JSON files, load them into phenopackets, and transform the phenopackets to patients.\n", - "\n", - "> Note: the first run takes longer since we must reach out to VEP REST API. However, the subsequent runs use data that we cache in `.gpsea_cache` folder next to this notebook." - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "Patients Created: 100%|██████████| 35/35 [00:00<00:00, 340.95it/s]\n" - ] - }, - { - "data": { - "text/plain": [ - "'Loaded 35 samples'" - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "from gpsea.preprocessing import load_phenopacket_folder\n", - "\n", - "fpath_suox_cohort = os.path.join(os.getcwd(), os.pardir, 'notebooks', 'SUOX', 'phenopackets')\n", - "cohort = load_phenopacket_folder(fpath_suox_cohort, pc)\n", - "f'Loaded {len(cohort)} samples'" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Gather data for visualization\n", - "\n", - "Here we get the data required for visualizing the variants on selected transcript or protein." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Choose the transcript\n", - "\n", - "We need to choose the transcript and protein IDs - currently this is done manually but we will find a way how to do this automatically, e.g. using MANE transcript.\n", - "\n", - "The MANE Select transcript for *SUOX* is [NM_001032386.2](https://www.genenames.org/data/gene-symbol-report/#!/hgnc_id/HGNC:11460) and the corresponding protein accession ID is `NP_001027558.1`." - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [], - "source": [ - "tx_id = 'NM_001032386.2'\n", - "protein_id = 'NP_001027558.1'" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Gather the data for visualization\n", - "\n", - "We need to get:\n", - "- variants\n", - "- transcript coordinates\n", - "- protein metadata" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Variants\n", - "\n", - "Variants are easy, `Cohort` exposes all the variants via the `all_variants` property:" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "48" - ] - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "variants = cohort.all_variants\n", - "len(variants)" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "Variant(variant_coordinates:VariantCoordinates(region=GenomicRegion(contig=12, start=56004514, end=56004515, strand=+), ref=C, alt=T, change_length=1), tx_annotations:(TranscriptAnnotation(gene_id:SUOX,transcript_id:NM_000456.3,hgvsc_id:NM_000456.3:c.1126C>T,is_preferred:False,variant_effects:(,),overlapping_exons:(6,),protein_affected:(ProteinMetadata(id=NP_000447.2, label=Sulfite oxidase, mitochondrial, features=(SimpleProteinFeature(type=FeatureType.DOMAIN, info=FeatureInfo(name=Cytochrome b5 heme-binding, start=82, end=161)), SimpleProteinFeature(type=FeatureType.REGION, info=FeatureInfo(name=Hinge, start=165, end=174)), SimpleProteinFeature(type=FeatureType.REGION, info=FeatureInfo(name=Moco domain, start=175, end=401)), SimpleProteinFeature(type=FeatureType.REGION, info=FeatureInfo(name=Homodimerization, start=402, end=538)))),),protein_effect_location:Region(start=375, end=376)), TranscriptAnnotation(gene_id:SUOX,transcript_id:NM_001032386.2,hgvsc_id:NM_001032386.2:c.1126C>T,is_preferred:True,variant_effects:(,),overlapping_exons:(5,),protein_affected:(ProteinMetadata(id=NP_001027558.1, label=Sulfite oxidase, mitochondrial, features=(SimpleProteinFeature(type=FeatureType.DOMAIN, info=FeatureInfo(name=Cytochrome b5 heme-binding, start=82, end=161)), SimpleProteinFeature(type=FeatureType.REGION, info=FeatureInfo(name=Hinge, start=165, end=174)), SimpleProteinFeature(type=FeatureType.REGION, info=FeatureInfo(name=Moco domain, start=175, end=401)), SimpleProteinFeature(type=FeatureType.REGION, info=FeatureInfo(name=Homodimerization, start=402, end=538)))),),protein_effect_location:Region(start=375, end=376)), TranscriptAnnotation(gene_id:SUOX,transcript_id:NM_001032387.2,hgvsc_id:NM_001032387.2:c.1126C>T,is_preferred:False,variant_effects:(,),overlapping_exons:(4,),protein_affected:(ProteinMetadata(id=NP_001027559.1, label=Sulfite oxidase, mitochondrial, features=(SimpleProteinFeature(type=FeatureType.DOMAIN, info=FeatureInfo(name=Cytochrome b5 heme-binding, start=82, end=161)), SimpleProteinFeature(type=FeatureType.REGION, info=FeatureInfo(name=Hinge, start=165, end=174)), SimpleProteinFeature(type=FeatureType.REGION, info=FeatureInfo(name=Moco domain, start=175, end=401)), SimpleProteinFeature(type=FeatureType.REGION, info=FeatureInfo(name=Homodimerization, start=402, end=538)))),),protein_effect_location:Region(start=375, end=376)), TranscriptAnnotation(gene_id:IKZF4,transcript_id:NM_001351089.2,hgvsc_id:None,is_preferred:False,variant_effects:(,),overlapping_exons:None,protein_affected:(),protein_effect_location:None), TranscriptAnnotation(gene_id:IKZF4,transcript_id:NM_001351091.2,hgvsc_id:None,is_preferred:False,variant_effects:(,),overlapping_exons:None,protein_affected:(),protein_effect_location:None)), genotypes:Genotypes(['individual_5_PMID_12112661=0/1']))" - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "next(iter(variants))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Transcript coordinates\n", - "\n", - "Transcript coordinates can be fetched from Variant Validator API:" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "TranscriptCoordinates(identifier=NM_001032386.2, region=GenomicRegion(contig=12, start=55997275, end=56005525, strand=+))" - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "from gpsea.model.genome import GRCh38\n", - "from gpsea.preprocessing import VVTranscriptCoordinateService\n", - "\n", - "txc_service = VVTranscriptCoordinateService(genome_build=GRCh38)\n", - "tx_coordinates = txc_service.fetch(tx_id)\n", - "tx_coordinates" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The `TranscriptCoordinates` object knows about the number of coding bases and aminoacid codons. \n", - "\n", - "Note, the counts of coding bases and codons do *not* include the termination codon." - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "NM_001032386.2 has 1,635 coding bases\n", - "NM_001032386.2 has 545 codons\n" - ] - } - ], - "source": [ - "print(f'{tx_id} has {tx_coordinates.get_coding_base_count():,} coding bases')\n", - "print(f'{tx_id} has {tx_coordinates.get_codon_count():,} codons')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We can get the UTR regions (both 5' and 3') as well as the CDS regions.\n", - "\n", - "Note, for simplicity, the CDS regions include *both* initiation and termination codons!\n", - "\n", - "5' UTR regions:" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "55,997,275-55,997,339\n", - "55,997,614-55,997,723\n", - "56,002,211-56,002,221\n" - ] - } - ], - "source": [ - "for utr in tx_coordinates.get_five_prime_utrs():\n", - " print(f'{utr.start:,}-{utr.end:,}')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "CDS regions:" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "56,002,221-56,002,271\n", - "56,002,542-56,002,720\n", - "56,003,617-56,005,027\n" - ] - } - ], - "source": [ - "for cds in tx_coordinates.get_cds_regions():\n", - " print(f'{cds.start:,}-{cds.end:,}')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "3' UTR regions" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "56,005,027-56,005,525\n" - ] - } - ], - "source": [ - "for utr in tx_coordinates.get_three_prime_utrs():\n", - " print(f'{utr.start:,}-{utr.end:,}')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Protein metadata\n", - "\n", - "Last, we fetch the protein metadata from Uniprot.\n", - "\n", - "The significance of the warning that is logged is unclear to me at this time. We need to investigate." - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "ProteinMetadata(id=NP_001027558.1, label=Sulfite oxidase, mitochondrial, features=(SimpleProteinFeature(type=FeatureType.DOMAIN, info=FeatureInfo(name=Cytochrome b5 heme-binding, start=82, end=161)), SimpleProteinFeature(type=FeatureType.REGION, info=FeatureInfo(name=Hinge, start=165, end=174)), SimpleProteinFeature(type=FeatureType.REGION, info=FeatureInfo(name=Moco domain, start=175, end=401)), SimpleProteinFeature(type=FeatureType.REGION, info=FeatureInfo(name=Homodimerization, start=402, end=538))))" - ] - }, - "execution_count": 14, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "from gpsea.preprocessing import UniprotProteinMetadataService\n", - "\n", - "pms = UniprotProteinMetadataService()\n", - "\n", - "protein_metas = pms.annotate(protein_id)\n", - "\n", - "assert len(protein_metas) == 1\n", - "protein_meta = protein_metas[0]\n", - "protein_meta" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We get metadata with 4 features (1 domain and 3 regions), which is in line with the Uniprot [Family & Domains section](https://www.uniprot.org/uniprotkb/P51687/entry#family_and_domains)." - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "name: Cytochrome b5 heme-binding, type: FeatureType.DOMAIN, start: 82, end: 161, \n", - "name: Hinge, type: FeatureType.REGION, start: 165, end: 174, \n", - "name: Moco domain, type: FeatureType.REGION, start: 175, end: 401, \n", - "name: Homodimerization, type: FeatureType.REGION, start: 402, end: 538, \n" - ] - } - ], - "source": [ - "for feature in protein_meta.protein_features:\n", - " print(f'name: {feature.info.name}, type: {feature.feature_type}, start: {feature.info.start}, end: {feature.info.end}, ')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Variant transcript protein figure\n", - "\n", - "## Background\n", - "\n", - "*Gene* is a genomic region that has some functional relevance. Usually, this is because the region includes DNA sequence that encodes a protein product. The information for protein synthesis is encoded in the sequence of DNA nucleotides, one of four letters of the DNA alphabet: `A`, `C`, `G`, `T`. Per [central dogma of molecular biology](https://en.wikipedia.org/wiki/Central_dogma_of_molecular_biology), the information flows from gene to protein. Gene is first transcribed into precursor messenger RNA (pre-mRNA), pre-mRNA undergoes splicing to remove non-coding regions *introns*, resulting in mature messenger RNA (mRNA) that (mostly) consists of coding *exons*. \n", - "\n", - "However, splicing is not deterministic, and due to several reasons, it can produce several versions of mRNA from one pre-mRNA sequence that encode different protein isoforms. We denote the alternate mRNA versions as *transcripts*, and, depending on splicing, one gene can produce `1..m` transcripts.\n", - "\n", - "After splicing, the sequence of the mature mRNA is translated into a protein sequence. The protein alphabet includes 21 letters - aminoacids the maping between DNA and protein alphabets is dictated by the [codon table](https://en.wikipedia.org/wiki/DNA_and_RNA_codon_tables) (just for reference, no need to study deeper) where *codon* is a triplet of DNA letters that correspond to one protein letter.\n", - "\n", - "There is one more detail left to discuss. The mRNA includes two *untranslated regions* (UTRs), one UTR on each end of mRNA molecule. The UTR at the start is denoted as 5' (read five prime) and the UTR at the end is called 3' (three prime). The UTRs do not encode protein sequence, so, we do not want to plot them.\n", - "\n", - "So, that's about it for background. Now, let me show how to get the information from our domain model." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Transcript\n", - "\n", - "In our domain model, we ask the user to choose the desired transcript by providing transcript ID:" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'NM_001032386.2'" - ] - }, - "execution_count": 16, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "tx_id" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Thanks to the ID, our app can fetch the \"anatomy\" of the transcript - the coordinates of exon regions. The coordinates were fetched above so I'll only reuse `tx_coordinates` here:" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Start\tEnd\tLength\n", - "55,997,275\t55,997,339\t64\n", - "55,997,614\t55,997,723\t109\n", - "56,002,211\t56,002,271\t60\n", - "56,002,542\t56,002,720\t178\n", - "56,003,617\t56,005,525\t1908\n" - ] - } - ], - "source": [ - "print('Start\\tEnd\\tLength')\n", - "for exon in tx_coordinates.exons:\n", - " print(f'{exon.start:,}\\t{exon.end:,}\\t{len(exon)}')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We get an instance of `TranscriptCoordinates` that has `exons` property. The property provides a sequence of `gpsea.model.genome.GenomicRegion`s that correspond to exon regions.\n", - "\n", - "This transcript has 5 exons. Note that the exons are *not* consecutive - they are separated by introns (not in the model). The exons consist of the coding sequence regions (CDS) and UTRs.\n", - "\n", - "We can get the CDS regions by calling `get_cds_regions()`:" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Start\tEnd\tLength\n", - "56,002,221\t56,002,271\t50\n", - "56,002,542\t56,002,720\t178\n", - "56,003,617\t56,005,027\t1410\n" - ] - } - ], - "source": [ - "print('Start\\tEnd\\tLength')\n", - "for cds in tx_coordinates.get_cds_regions():\n", - " print(f'{cds.start:,}\\t{cds.end:,}\\t{len(cds)}')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Same as above, we iterate through `GenomicRegion`s, but they correspond to CDS this time. Note that only 3 exons of this transcript include coding sequence. The entire first 2 exons plus the first 10 bases of the 3rd exon represent the 5'UTR. The 3'UTR spans the last 498 bases (`56,005,525 - 56,005,027 = 498`).\n", - "\n", - "Note that the sum of CDS lengths is always be divisible by 3:" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "metadata": {}, - "outputs": [], - "source": [ - "assert sum(len(cds) for cds in tx_coordinates.get_cds_regions()) % 3 == 0, \"CDS must be divisible by 3!\"" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The sum divided by 3 corresponds to the codon count. The last codon ([stop codon](https://en.wikipedia.org/wiki/Stop_codon)) does not encode an aminoacid. Therefore, we can calculate the number of codons that encode the protein aminoacids `aa_count` as follows:" - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "545.0" - ] - }, - "execution_count": 20, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "codon_count = sum(len(cds) for cds in tx_coordinates.get_cds_regions()) / 3\n", - "aa_count = codon_count - 1\n", - "aa_count" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The transcript encodes a protein that consists of 545 aminoacids.\n", - "\n", - "You don't have to compute these by hand, `TxCoordinates` provides some convenience here:" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "N coding bases: 1635\n", - "N coding codons (aminoacids): 545\n" - ] - } - ], - "source": [ - "print('N coding bases:', tx_coordinates.get_coding_base_count())\n", - "print('N coding codons (aminoacids):', tx_coordinates.get_codon_count())" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Protein\n", - "\n", - "Let's discuss the protein features.\n", - "\n", - "gpsea knows that `NM_001032386.2` transcript corresponds to `NP_001027558.1` protein and it can fetch the corresponding metadata:" - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Protein ID: NP_001027558.1\n" - ] - }, - { - "data": { - "text/plain": [ - "ProteinMetadata(id=NP_001027558.1, label=Sulfite oxidase, mitochondrial, features=(SimpleProteinFeature(type=FeatureType.DOMAIN, info=FeatureInfo(name=Cytochrome b5 heme-binding, start=82, end=161)), SimpleProteinFeature(type=FeatureType.REGION, info=FeatureInfo(name=Hinge, start=165, end=174)), SimpleProteinFeature(type=FeatureType.REGION, info=FeatureInfo(name=Moco domain, start=175, end=401)), SimpleProteinFeature(type=FeatureType.REGION, info=FeatureInfo(name=Homodimerization, start=402, end=538))))" - ] - }, - "execution_count": 22, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "print('Protein ID:', protein_id)\n", - "protein_meta" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "`gpsea.model.ProteinMetadata` knows about the protein anatomy.\n", - "\n", - "The protein has an identifier and a human-readable label." - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "NP_001027558.1\n", - "Sulfite oxidase, mitochondrial\n" - ] - } - ], - "source": [ - "print(protein_meta.protein_id)\n", - "print(protein_meta.label)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The protein metadata includes features - protein regions that were annotated with some useful information.\n", - "\n", - "All features know about their location within the aminoacid sequence. There is `info` property that exposes `region` property. \n", - "The `region` has `start` and `end` that denote the coordinates of the aminoacids spanned by the feature:" - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Name\tStart\tEnd\tLength\n", - "Cytochrome b5 heme-binding\t82\t161\t79\n", - "Hinge\t165\t174\t9\n", - "Moco domain\t175\t401\t226\n", - "Homodimerization\t402\t538\t136\n" - ] - } - ], - "source": [ - "print('Name', 'Start', 'End', 'Length', sep='\\t')\n", - "for pm in protein_meta.protein_features:\n", - " info = pm.info\n", - " region = info.region\n", - " print(info.name, region.start, region.end, len(region), sep='\\t')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "In addition, the features can be of different types. Our data model includes protein *repeats*, *motifs*, *domains*, protein *regions* (see `FeatureType` enum). Not all proteins have been assigned with all feature types, and here we only have domains and regions." - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(SimpleProteinFeature(type=FeatureType.DOMAIN, info=FeatureInfo(name=Cytochrome b5 heme-binding, start=82, end=161)),\n", - " SimpleProteinFeature(type=FeatureType.REGION, info=FeatureInfo(name=Hinge, start=165, end=174)),\n", - " SimpleProteinFeature(type=FeatureType.REGION, info=FeatureInfo(name=Moco domain, start=175, end=401)),\n", - " SimpleProteinFeature(type=FeatureType.REGION, info=FeatureInfo(name=Homodimerization, start=402, end=538)))" - ] - }, - "execution_count": 25, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "protein_meta.protein_features" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "So, that's it for the background. Now, let's return to the figure." - ] - }, - { - "attachments": { - "image.png": { - "image/png": "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TiNbYURbI7slj0p1d3eXt4seddRRMX/+/Jg2bVoeDdMKAgQIECBAgAABAgQIECBAoHKB/v7+OPLII8usoaenp/LyWynQE+pbUbIMAQIECBAgQIAAAQIECBAgQIAAgf0ICNr2A+RtAgQIECBAgAABAgQIECBAgAABAq0ICNpaUbIMAQIECBAgQIAAAQIECBAgQIAAgf0ICNr2A+RtAgQIECBAgAABAgQIECBAgAABAq0ICNpaUbIMAQIECBAgQIAAAQIECBAgQIAAgf0ICNr2A+RtAgQIECBAgAABAgQIECBAgAABAq0ICNpaUbIMAQIECBAgQIAAAQIECBAgQIAAgf0ICNr2A+RtAgQIECBAgAABAgQIECBAgAABAq0ICNpaUbIMAQIECBAgQIAAAQIECBAgQIAAgf0ICNr2A+RtAgQIECBAgAABAgQIECBAgAABAq0ICNpaUbIMAQIECBAgQIAAAQIECBAgQIAAgf0ICNr2A+RtAgQIECBAgAABAgQIECBAgAABAq0ICNpaUbIMAQIECBAgQIAAAQIECBAgQIAAgf0IdAwV036W8TaBAxLo7++PxYsXx7x58+Loo4+Orq6uA9qOlQgQIECAAAECBAgQIECAAAECAwMD8fTTT8df//rXOO2002L69OmNQxG0Na5L8qlQynDTQZACts5Ogyfz6VktIUCAAAECBAgQIECAAAEC9Qjs2rUrBgcHo7u7Ozo6OuqpxCilCtpGwfEWAQIECBAgQIAAAQIECBAgQIAAgVYFDDNqVcpyBAgQIECAAAECBAgQIECAAAECBEYRELSNguMtAgQIECBAgAABAgQIECBAgAABAq0KdLe6oOUItCqQnsu2c+fOSM9oS/dLp/umm3rvdKttshwBAgQIDU7JUAAAHnRJREFUECBAgAABAgQIECBw4AIpK0jPV0tzygt6enrKec/nrKUsIS2X3k9zet57eu57yhT2fvZ72k5aPj2vLU1pubS9vZcbfn788HZTeWm5tM12TEa0tUN1Em9z/fr18b3vfS8uuOCCmD9/frz97W+Pr33ta7Fq1aryIDERIECAAAECBAgQIECAAAECk0tgy5Ytcd1118VHPvKRWLBgQcyZMyc+97nPxbp1614F8Z3vfCfe8573xAknnBDz5s2LM888M6655pp48MEHXwnU0gobN26Mm266KS699NI47rjj4qSTToqrrroq7rrrrjKo23NauXJlfOUrX4mzzjor3vzmN8c555wTP/zhD2PDhg1t6QRBW1tYJ+dGU5L87W9/O7773e/Gu971rvjJT34Sn/jEJ+L666+Pb37zm5FCOBMBAgQIECBAgAABAgQIECAwuQS2bt0aDzzwQBmCXXzxxXHYYYftEyCNTrv88svj+9//fhmkpTAurZeyheXLl5frbNu2LX7zm9/EtddeG0cffXSZQXzxi1+MZ555Jr70pS/F3Xff/cpAn/7+/vK1X/3qV3HllVfGT3/607jwwgvL5W+88cbYvn37PutxMC+2Z5zcwdTIuhNW4KGHHoqFCxfGJZdcEp/5zGfiqKOOKgO3FLDdcMMNZXI9a9asEcM4J2yDVZwAAQIECBAgQIAAAQIECBDYr0AawZbufku3baaRZH/+85/3uU4K1vaczjjjjHjDG95QBm2LFi0qR689++yzccstt8Txxx9fjlR7/etfX65yyCGHlKHaH//4x3LU3IwZM+L222+PxYsXx6c+9am44oorytfOPffceOqpp8qBQu9///vjyCOP3GddDvRFI9oOVM56IwSWLl0aa9eujXQg7LmjpmGfaVqyZEns2LFjxHpeIECAAAECBAgQIECAAAECBPIVSAHbns9i219L06On0ui2NBJu8+bNMWXKlPJ20zSl20afe+65OOaYY14J2dLrb3zjG8ufH3nkkTKMS1PKIdKz2E4++eQyZEtTepbbe9/73nKZJ5988lW3pJYLHORkRNtBAlr9bwIvvPBC9PX1laPW9jyA5s6dW77+xBNPlA8qTAeIiQABAgQIECBAgAABAgQIECCwt0AK2e64445yoE7KEdItpOl2z3THXJpS3pDCsuEvYkxfbJCm9HOaX3zxxVee/fb888+XGcVwyDZc1rHHHlt+IcLjjz8ep59++rjeeSdo27tH/XzAAuk+6eFv+dhzI9OnTy9fT/dGD38byAEXYkUCBAgQIECAAAECBAgQIEAgW4H0baLpFtD0/LT0JQozZ86M973vfeUAnjSlkW3pSw3SM9vS89ve+ta3lsvef//9ZTCX7rAbvpsujYjb1zeMpuAtfTvppk2bxv2LGwVt2e6a1TcsDcccHt65Z+lpFFt6vbe3d0xDRatvgRIJECBAgAABAgQIECBAgACBOgXSQJ0f/OAHZVj29NNPxy9+8Yv48pe/XAZuaWRbeh58erbaN77xjXI+//zzy8AsPYstDQBK2cPwKLeUU6QBPymT2HPaM6cY77YK2sZbdBJv79BDDy0PhHT/9J5TGraZXk8HQzpgTAQIECBAgAABAgQIECBAgACBfQmkW0PTrZ1pSl9+kJ699qEPfaj85tAUtKXHUaVwLYVnv/3tb+PWW28tvwjh1FNPLUe2TZ06NVI+kab07abLli0rn/W257Rq1aryNtP0TLc0sm08J0HbeGpO8m2loZvD9zin20SH74G+5557yh34xBNPfGWo5ySn0nwCBAgQIECAAAECBAgQIECgBYEUvKWRaSlEG57Sc9c+8IEPxEUXXVR+OUIK3+69997y2W7D31Salk3fTHrbbbeVX3yQvok0jXZLAd3dd99dZhbz588XtLXQBxapSeCUU04pv8lj4cKF8aY3van898qVK8thnunfb3nLW8qDw0SAAAECBAgQIECAAAECBAhMLoH0BYrpFs8NGzaUt3iuX78+VqxYEbNnzy5HraXpl7/8ZRmOpRFpaaRZWud3v/td+ay2c8455xWw1atXl19kcMQRR5TB2dKlS+PGG28sby+94IILyi9ASNPZZ59dfpnCzTffXI5uS+WkEW6///3v45JLLimf5zaWb0Ntpcc6igq9+kbVVtayDIHXEFi0aFFcf/31ZaKcDpZ169aVS1599dVx3nnnGdH2Gm5eJkCAAAECBAgQIECAAAECOQtcd911ceedd5aPm7r99tvL4Oukk04qR5l99atfjde97nXx0Y9+tAzJhgfppIAtBXPvfOc746qrriqXSdN9990X3/rWt8rl0h10KYNIIVu6xTQFbdOmTSuXS89n+/Wvfx0/+9nPyuAuLZNuG015xRe+8IWy/PF+xJWgLee9uIa2pW8H+ctf/hJLliyJNWvWRPrG0be97W3liLY0lNNEgAABAgQIECBAgAABAgQITD6BNIos5QUpGNt7uvLKK8vgbfg2zzTyLeUL6dlr8+bNi9NPP70Mx4an559/vgzrXnrppTJMO/zwwyPdZZee6Tb87aTDyw5/I2ka9Za2m0bLveMd7yhvG23HXXeCtr17188ECBAgQIAAAQIECBAgQIAAAQIEDkBgfL9a4QAqYBUCBAgQIECAAAECBAgQIECAAAECOQgI2nLoRW0gQIAAAQIECBAgQIAAAQIECBCoXUDQVnsXqAABAgQIECBAgAABAgQIECBAgEAOAoK2HHpRGwgQIECAAAECBAgQIECAAAECBGoXELTV3gUqQIAAAQIECBAgQIAAAQIECBAgkIOAoC2HXtQGAgQIECBAgAABAgQIECBAgACB2gUEbbV3gQoQIECAAAECBAgQIECAAAECBAjkICBoy6EXtYEAAQIECBAgQIAAAQIECBAgQKB2AUFb7V2gAgQIECBAgAABAgQIECBAgAABAjkICNpy6EVtIECAAAECBAgQIECAAAECBAgQqF1A0FZ7F6gAAQIECBAgQIAAAQIECBAgQIBADgKCthx6URsIECBAgAABAgQIECBAgAABAgRqFxC01d4FKkCAAAECBAgQIECAAAECBAgQIJCDgKAth17UBgIECBAgQIAAAQIECBAgQIAAgdoFBG21d4EKECBAgAABAgQIECBAgAABAgQI5CAgaMuhF7WBAAECBAgQIECAAAECBAgQIECgdgFBW+1doAIECBAgQIAAAQIECBAgQIAAAQI5CAjacuhFbSBAgAABAgQIECBAgAABAgQIEKhdQNBWexeoAAECBAgQIECAAAECBAgQIECAQA4CgrYcelEbCBAgQIAAAQIECBAgQIAAAQIEahcQtNXeBSpAgAABAgQIECBAgAABAgQIECCQg4CgLYde1AYCBAgQIECAAAECBAgQIECAAIHaBQRttXeBChAgQIAAAQIECBAgQIAAAQIECOQgIGjLoRe1gQABAgQIECBAgAABAgQIECBAoHYBQVvtXaACBAgQIECAAAECBAgQIECAAAECOQgI2nLoRW0gQIAAAQIECBAgQIAAAQIECBCoXUDQVnsXqAABAgQIECBAgAABAgQIECBAgEAOAt05NEIbmiuwfv36SPPAwEBzK9nmmqW2d3e3/1DbtWtXdHZ2RkdHx4gWVVWHEQV7IXuBVvatoaGhGBwcjK6urlo86i6/jkZPxjbX4axMAmMRaOV8OZbtjbbsaNcEo61X9XujmTiPVd0bzS2vyfvzaPvwgYoOtzddO+15bd+Osg60jhN1vWSapuTa9Knq/q66vIP17+npidmzZ8esWbMOdlNtWb/9v/23pdo2OhEEUsB27bXXxj333BPpA2OyTkNDHUX4NVRr85tQh1oBFF6zQEcUWVvtx0HNCBUXz7xicMURaJTA7s/9VKV6rz8ODsV57OD8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IEAgBwFBWw69qA0ECBAgQIAAAQIECBAgQIAAAQK1Cwjaau8CFSBAgAABAgQIECBAgAABAgQIEMhBQNCWQy9qAwECBAgQIECAAAECBAgQIECAQO0Cgrbau0AFCBAgQIAAAQIECBAgQIAAAQIEchAQtOXQi9pAgAABAgQIECBAgAABAgQIECBQu4CgrfYuUAECBAgQIECAAAECBAgQIECAAIEcBARtOfSiNhAgQIAAAQIECBAgQIAAAQIECNQuIGirvQtUgAABAgQIECBAgAABAgQIECBAIAcBQVsOvagNBAgQIECAAAECBAgQIECAAAECtQsI2mrvAhUgQIAAAQIECBAgQIAAAQIECBDIQUDQlkMvagMBAgQIECBAgAABAgQIECBAgEDtAoK22rtABQgQIECAAAECBAgQIECAAAECBHIQELTl0IvaQIAAAQIECBAgQIAAAQIECBAgULuAoK32LlABAgQIECBAgAABAgQIECBAgACBHAQEbTn0ojYQIECAAAECBAgQIECAAAECBAjULiBoq70LVIAAAQIECBAgQIAAAQIECBAgQCAHAUFbDr2oDQQIECBAgAABAgQIECBAgAABArULCNpq7wIVIECAAAECBAgQIECAAAECBAgQyEFA0JZDL2oDAQIECBAgQIAAAQIECBAgQIBA7QKCttq7QAUIECBAgAABAgQIECBAgAABAgRyEBC05dCL2kCAAAECBAgQIECAAAECBAgQIFC7gKCt9i5QAQIECBAgQIAAAQIECBAgQIAAgRwEBG059KI2ECBAgAABAgQIECBAgAABAgQI1C4gaKu9C1SAAAECBAgQIECAAAECBAgQIEAgBwFBWw69qA0ECBAgQIAAAQIECBAgQIAAAQK1Cwjaau8CFSBAgAABAgQIECBAgAABAgQIEMhBQNCWQy9qAwECBAgQIECAAAECBAgQIECAQO0Cgrbau0AFCBAgQIAAAQIECBAgQIAAAQIEchAQtOXQi9pAgAABAgQIECBAgAABAgQIECBQu4CgrfYuUAECBAgQIECAAAECBAgQIECAAIEcBARtOfSiNhAgQIAAAQIECBAgQIAAAQIECNQuIGirvQtUgAABAgQIECBAgAABAgQIECBAIAcBQVsOvagNBAgQIECAAAECBAgQIECAAAECtQsI2mrvAhUgQIAAAQIECBAgQIAAAQIECBDIQUDQlkMvagMBAgQIECBAgAABAgQIECBAgEDtAoK22rtABQgQIECAAAECBAgQIECAAAECBHIQELTl0IvaQIAAAQIECBAgQIAAAQIECBAgULuAoK32LlABAgQIECBAgAABAgQIECBAgACBHAQEbTn0ojYQIECAAAECBAgQIECAAAECBAjULiBoq70LVIAAAQIECBAgQIAAAQIECBAgQCAHAUFbDr2oDQQIECBAgAABAgQIECBAgAABArULCNpq7wIVIECAAAECBAgQIECAAAECBAgQyEFA0JZDL2oDAQIECBAgQIAAAQIECBAgQIBA7QKCttq7QAUIECBAgAABAgQIECBAgAABAgRyEBC05dCL2kCAAAECBAgQIECAAAECBAgQIFC7gKCt9i5QAQIECBAgQIAAAQIECBAgQIAAgRwEBG059KI2ECBAgAABAgQIECBAgAABAgQI1C4gaKu9C1SAAAECBAgQIECAAAECBAgQIEAgB4H/D7Lr7B7lsy9iAAAAAElFTkSuQmCC" - } - }, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## The figure\n", - "\n", - "Let's discuss the requirements of the variant transcript protein figure. I'll use your initial figure from the issue as a reference:\n", - "\n", - "![image.png](attachment:image.png)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The plot consists of 2 tracks: transcript and protein. The transcript track consists of adjacent adjacent blue/light blue boxes. The protein track features gray background with an overlay of colored boxes. The variant locations are depicted using lollipop markers. We can tweak the lollipop color and the diameter to represent variant properties." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Main figure\n", - "\n", - "The figure should have a title. The title should include the transcript and protein accessions, and probably also the protein name:" - ] - }, - { - "cell_type": "code", - "execution_count": 26, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "('NM_001032386.2', 'NP_001027558.1', 'Sulfite oxidase, mitochondrial')" - ] - }, - "execution_count": 26, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "tx_coordinates.identifier, protein_meta.protein_id, protein_meta.label" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Transcript track\n", - "\n", - "The transcript track consists of adjacent boxes that represent CDS regions only. We do *not* plot UTRs or introns.\n", - "\n", - "In the context of *SUOX*, the track should include 3 boxes with widths that are proportionate to CDS region lengths:" - ] - }, - { - "cell_type": "code", - "execution_count": 27, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[50, 178, 1410]" - ] - }, - "execution_count": 27, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "widths = [len(cds) for cds in tx_coordinates.get_cds_regions()]\n", - "widths" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "As an addition to the existing track, we should include CDS region number, unless the box width is insufficient to accommodate the number. We should use 1-based numbering to make this user friendly. \n", - "\n", - "So, `1`, `2`, `3` in this case.\n", - "\n", - "That's it for the transcript track." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Protein track\n", - "\n", - "Protein track is somwhat more elaborate.\n", - "\n", - "The track has grey region that spans the entire protein sequence. In our case, it corresponds to `545` aminoacids. \n", - "\n", - "Note, due to the aminoacid length, the coordinates of the grey region span $[0, 545)$. Any feature that extends beyond these coordinates is a bug. It should generally not happen, but if it does, it is a hard error, you must raise an exception with enough context to allow the user to fix the input, and abort the drawing." - ] - }, - { - "cell_type": "code", - "execution_count": 28, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "545" - ] - }, - "execution_count": 28, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "tx_coordinates.get_codon_count()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We must ensure that the grey region is perfectly aligned with the transcript track.\n", - "\n", - "The grey region is overlaid with boxes that correspond to protein features. As stated above, each feature has the coordinates with respect to the entire protein (gray region):" - ] - }, - { - "cell_type": "code", - "execution_count": 29, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Region(start=82, end=161)\n", - "Region(start=165, end=174)\n", - "Region(start=175, end=401)\n", - "Region(start=402, end=538)\n" - ] - } - ], - "source": [ - "for pf in protein_meta.protein_features:\n", - " print(pf.info.region)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "So, in this example, we need to draw 4 boxes located at the corresponding regions. I believe that the boxes will never overlap, they should be, at most, adjacent.\n", - "\n", - "> I recommend adding a check that the features do not overlap and raising an exception if they do.\n", - "\n", - "We need to inform the user about the feature type (`gpsea.model.FeatureType`). One way of doing this is to use different colors but feel free to do whatever you like:" - ] - }, - { - "cell_type": "code", - "execution_count": 30, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "FeatureType.DOMAIN\n", - "FeatureType.REGION\n", - "FeatureType.REGION\n", - "FeatureType.REGION\n" - ] - } - ], - "source": [ - "for pf in protein_meta.protein_features:\n", - " print(pf.feature_type)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We should annotate the boxes with the feature name if the box size permits:" - ] - }, - { - "cell_type": "code", - "execution_count": 31, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Cytochrome b5 heme-binding\n", - "Hinge\n", - "Moco domain\n", - "Homodimerization\n" - ] - } - ], - "source": [ - "for pf in protein_meta.protein_features:\n", - " print(pf.info.name)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "That's it for the protein representation." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Variants\n", - "\n", - "We need to show the location and attributes of variants found in the patient cohort. In principle, the variants could be drawn on either or both of the tracks. However, let's focus on protein track for now.\n", - "\n", - "First, a word of caution. Always think of a variant as of a *region* and not a *point*. After all, each point is a region with length `1`, right? Unlike protein features or CDS regions, the variant regions can overlap. Most of the time we will work with short variants and we can make some simplifications, but we may need to tweak this in future, so please keep this in mind.\n", - "\n", - "Getting the protein regions affected by the variants is a bit convoluted. Remember, the variant has information with respect to each transcript of the gene. In case of *SUOX*, the alternative splicing can produce x transcripts. So, we retrieve the annotation corresponding to the transcript of choice and then access the protein region. I show how to do this for the first 5 variants for simplicity:" - ] - }, - { - "cell_type": "code", - "execution_count": 32, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Region(start=375, end=376)\n", - "Region(start=216, end=217)\n", - "Region(start=361, end=362)\n", - "Region(start=505, end=507)\n", - "Region(start=294, end=295)\n" - ] - } - ], - "source": [ - "tx_anns = []\n", - "for i, v in enumerate(variants):\n", - " if i == 5:\n", - " break\n", - " tx_ann = None\n", - " for ann in v.tx_annotations:\n", - " if ann.transcript_id == tx_id:\n", - " tx_ann = ann\n", - " break\n", - " if tx_ann is None:\n", - " raise ValueError(f'The transcript annotation for {tx_id} was not found!')\n", - " else:\n", - " tx_anns.append(tx_ann)\n", - "\n", - "for ann in tx_anns:\n", - " print(ann.protein_effect_location)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We got the variant regions. In four out of five casese, the variant affects one aminoacid. However, the second variant spans *two* aminoacids!\n", - "\n", - "The question is what is the best way to draw variants as regions. I am not sure this can be done easily with lollipops. However, to keep things simple, we can draw the lollipop at the start coordinate." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Next, we need to encode the variant effects. Each variant can have `1..m` effects on a transcript. The effects are members of the `gpsea.model.VariantEffect` enum. \n", - "\n", - "For simplicity, let's just choose the first effect and we can update this strategy later:" - ] - }, - { - "cell_type": "code", - "execution_count": 33, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "missense_variant\n", - "missense_variant\n", - "missense_variant\n", - "frameshift_variant\n", - "missense_variant\n" - ] - } - ], - "source": [ - "for ann in tx_anns:\n", - " print(ann.variant_effects[0])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Last, some variants occurr more frequently than the others. In general, the variant count should be in range $[1, n)$ where $n$ is the number of patients in the cohort. We should be able to communicate the variant frequency to the users.\n", - "\n", - "In your figure, you do this using the lollipop color. I think it's OK.\n", - "\n", - "So, these are the main requirements." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Nice to have\n", - "\n", - "There are several things that would be nice to have, depending on how difficult their implementation would be. I list a few in arbitrary order (no precedence).\n", - "\n", - "### Variant overlap\n", - "\n", - "Currently, the lollipops overlap and it may be hard to see all the data.\n", - "\n", - "Ideally, the lollipops should not overlap. However, I am not sure how easy it would be to implement a layout algorithm to ensure there is no overlap.\n", - "\n", - "### View point\n", - "\n", - "Some medically releveant genes are very large. For instance, the protein *dystrophin* encoded by [*DMD*](https://www.genenames.org/data/gene-symbol-report/#!/hgnc_id/HGNC:2928) gene consists of 79 exons. The CDS includes ~11 thousand nucleotides. Dystrophin is, however, medically relevant and showing variants on such a large gene can bring up some issues.\n", - "\n", - "It could be helpful to be able to limit the picture on some part of the gene. Say, only the protein region $[a,b)$ or the exons $[a,b)$, ...\n", - "\n", - "### Popup on hover\n", - "\n", - "Is it possible to add information that shows on mouse cursor hover? We could show lots of useful info at many places. However, I am not sure how easy this would be. We intend to provide the figure through Jupyter, so the popup functionality would have to work there.\n", - "\n", - "### Scales\n", - "\n", - "Right now the plot includes two scales - `0 - 1390` and `# Markers`. I think the aminoacid scale is useful, and we should add a similar scale to the transcript plot to represent nulceotides, if possible. \n", - "\n", - "`# Markers` is great as well. It should probably start at `1`, it would be great to include a bunch of major ticks, and perhaps also horizontal grid lines? That would be SUPER cool.. :)\n", - "\n", - "### API\n", - "\n", - "Right now we make show certain things on the figure. For instance, we color the lollipop based on variant effect. However, I can imagine abstracting the coloring scheme away such that we can color the lollipop in arbitrary fashion (e.g. missense = red, others = blue). The same applies to other variant attributes, such as lollipop size and height.\n", - "\n", - "It would be great if the coloring scheme (and others) would be adjustable. This would allow us to provide a bunch of useful presets but also letting the users to do whatevery they wish.\n", - "\n", - "\n", - "This is all I can think of right now.\n", - "\n", - "---\n", - "\n", - "To conclude, the figure is really amazing! I hope this is useful and let's stay in touch!" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "exploratory", - "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.10.12" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/dev/test_draw_variants.ipynb b/dev/test_draw_variants.ipynb deleted file mode 100644 index ee90645e..00000000 --- a/dev/test_draw_variants.ipynb +++ /dev/null @@ -1,345 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "id": "70a753d6a4225669", - "metadata": { - "ExecuteTime": { - "end_time": "2024-02-21T13:03:47.738479300Z", - "start_time": "2024-02-21T13:03:47.731404100Z" - }, - "collapsed": false, - "jupyter": { - "outputs_hidden": false - } - }, - "outputs": [], - "source": [ - "tx_id = 'NM_001032386.2'\n", - "protein_id = 'NP_001027558.1'" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "7a49258b45c46876", - "metadata": { - "ExecuteTime": { - "end_time": "2024-02-21T13:03:55.325990900Z", - "start_time": "2024-02-21T13:03:47.738479300Z" - }, - "collapsed": false, - "jupyter": { - "outputs_hidden": false - } - }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/robin/PycharmProjects/genophenocorr/gpc_venv/lib/python3.9/site-packages/urllib3/__init__.py:35: NotOpenSSLWarning: urllib3 v2 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with 'LibreSSL 2.8.3'. See: https://github.com/urllib3/urllib3/issues/3020\n", - " warnings.warn(\n", - "Response.transcripts has 6!=1 items. Choosing the first\n" - ] - } - ], - "source": [ - "from gpsea.model.genome import GRCh38\n", - "from gpsea.preprocessing import VVTranscriptCoordinateService\n", - "\n", - "txc_service = VVTranscriptCoordinateService(genome_build=GRCh38)\n", - "tx_coordinates = txc_service.fetch(tx_id)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "3b9f3c741a2352b5", - "metadata": { - "ExecuteTime": { - "end_time": "2024-02-21T13:03:55.658500400Z", - "start_time": "2024-02-21T13:03:55.328237400Z" - }, - "collapsed": false, - "jupyter": { - "outputs_hidden": false - } - }, - "outputs": [], - "source": [ - "from gpsea.preprocessing import UniprotProteinMetadataService\n", - "\n", - "pms = UniprotProteinMetadataService()\n", - "\n", - "protein_metas = pms.annotate(protein_id)\n", - "\n", - "assert len(protein_metas) == 1\n", - "protein_meta = protein_metas[0]" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "cf458535b18dc26c", - "metadata": { - "ExecuteTime": { - "end_time": "2024-02-21T13:04:05.189283600Z", - "start_time": "2024-02-21T13:03:55.672155100Z" - }, - "collapsed": false, - "jupyter": { - "outputs_hidden": false - } - }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "Patients Created: 100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████| 35/35 [01:58<00:00, 3.38s/it]\n", - "Validated under none policy\n", - "Showing errors and warnings\n", - "35 phenopacket(s) found at `/Users/robin/PycharmProjects/genophenocorr/dev/../notebooks/SUOX/phenopackets`\n", - " patient #0\n", - " phenotype-features\n", - " warnings:\n", - " ·No diseases found.\n", - " patient #1\n", - " phenotype-features\n", - " warnings:\n", - " ·No diseases found.\n", - " patient #2\n", - " phenotype-features\n", - " warnings:\n", - " ·No diseases found.\n", - " patient #3\n", - " phenotype-features\n", - " warnings:\n", - " ·No diseases found.\n", - " patient #4\n", - " phenotype-features\n", - " warnings:\n", - " ·No diseases found.\n", - " patient #5\n", - " phenotype-features\n", - " warnings:\n", - " ·No diseases found.\n", - " patient #6\n", - " phenotype-features\n", - " warnings:\n", - " ·No diseases found.\n", - " patient #7\n", - " phenotype-features\n", - " warnings:\n", - " ·No diseases found.\n", - " patient #8\n", - " phenotype-features\n", - " warnings:\n", - " ·No diseases found.\n", - " patient #9\n", - " phenotype-features\n", - " warnings:\n", - " ·No diseases found.\n", - " patient #10\n", - " phenotype-features\n", - " warnings:\n", - " ·No diseases found.\n", - " patient #11\n", - " phenotype-features\n", - " warnings:\n", - " ·No diseases found.\n", - " patient #12\n", - " phenotype-features\n", - " warnings:\n", - " ·No diseases found.\n", - " patient #13\n", - " phenotype-features\n", - " warnings:\n", - " ·No diseases found.\n", - " patient #14\n", - " phenotype-features\n", - " warnings:\n", - " ·No diseases found.\n", - " patient #15\n", - " phenotype-features\n", - " warnings:\n", - " ·No diseases found.\n", - " patient #16\n", - " phenotype-features\n", - " warnings:\n", - " ·No diseases found.\n", - " patient #17\n", - " phenotype-features\n", - " warnings:\n", - " ·No diseases found.\n", - " patient #18\n", - " phenotype-features\n", - " warnings:\n", - " ·No diseases found.\n", - " patient #19\n", - " phenotype-features\n", - " warnings:\n", - " ·No diseases found.\n", - " patient #20\n", - " phenotype-features\n", - " warnings:\n", - " ·No diseases found.\n", - " patient #21\n", - " phenotype-features\n", - " warnings:\n", - " ·No diseases found.\n", - " patient #22\n", - " phenotype-features\n", - " warnings:\n", - " ·No diseases found.\n", - " patient #23\n", - " phenotype-features\n", - " warnings:\n", - " ·No diseases found.\n", - " patient #24\n", - " phenotype-features\n", - " warnings:\n", - " ·No diseases found.\n", - " patient #25\n", - " phenotype-features\n", - " warnings:\n", - " ·No diseases found.\n", - " patient #26\n", - " phenotype-features\n", - " warnings:\n", - " ·No diseases found.\n", - " patient #27\n", - " phenotype-features\n", - " warnings:\n", - " ·No diseases found.\n", - " patient #28\n", - " phenotype-features\n", - " warnings:\n", - " ·No diseases found.\n", - " patient #29\n", - " phenotype-features\n", - " warnings:\n", - " ·No diseases found.\n", - " patient #30\n", - " phenotype-features\n", - " warnings:\n", - " ·No diseases found.\n", - " patient #31\n", - " phenotype-features\n", - " warnings:\n", - " ·No diseases found.\n", - " patient #32\n", - " phenotype-features\n", - " warnings:\n", - " ·No diseases found.\n", - " patient #33\n", - " phenotype-features\n", - " warnings:\n", - " ·No diseases found.\n", - " patient #34\n", - " phenotype-features\n", - " warnings:\n", - " ·No diseases found.\n" - ] - }, - { - "data": { - "text/plain": [ - "'Loaded 35 samples'" - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "import hpotk\n", - "import os\n", - "from gpsea.preprocessing import load_phenopacket_folder\n", - "from gpsea.preprocessing import configure_caching_cohort_creator\n", - "from hpotk.validate import ValidationRunner\n", - "from hpotk.validate import ObsoleteTermIdsValidator, PhenotypicAbnormalityValidator, AnnotationPropagationValidator\n", - "\n", - "fpath_hpo = 'https://github.com/obophenotype/human-phenotype-ontology/releases/download/v2023-10-09/hp.json'\n", - "hpo = hpotk.load_minimal_ontology(fpath_hpo)\n", - "\n", - "validation_runner = ValidationRunner(\n", - " validators=(\n", - " ObsoleteTermIdsValidator(hpo),\n", - " PhenotypicAbnormalityValidator(hpo),\n", - " AnnotationPropagationValidator(hpo)\n", - " ))\n", - "\n", - "pc = configure_caching_cohort_creator(hpo, validation_runner=validation_runner)\n", - "\n", - "fpath_suox_cohort = os.path.join(os.getcwd(), os.pardir, 'notebooks', 'SUOX', 'phenopackets')\n", - "cohort = load_phenopacket_folder(fpath_suox_cohort, pc)\n", - "f'Loaded {len(cohort)} samples'" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "c5abc6b06465c6c1", - "metadata": { - "ExecuteTime": { - "end_time": "2024-02-21T13:04:05.423909300Z", - "start_time": "2024-02-21T13:04:05.191304900Z" - }, - "collapsed": false, - "jupyter": { - "outputs_hidden": false - } - }, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAABiIAAALjCAYAAACf2R25AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8fJSN1AAAACXBIWXMAAA9hAAAPYQGoP6dpAAChnUlEQVR4nOzdd3gVVf7H8c/NTbnpCSkkoSQhEEroSO+iIKKoNFFRioou9l27ruiuZV10f1awLroIKyv2rigqVTrSeyihJkBIb/f8/mBzl0t6yBBJ3q/n4dHMnDnznbkzc+fOd845NmOMEQAAAAAAAAAAgAU8ajsAAAAAAAAAAABQd5GIAAAAAAAAAAAAliERAQAAAAAAAAAALEMiAgAAAAAAAAAAWIZEBAAAAAAAAAAAsAyJCAAAAAAAAAAAYBkSEQAAAAAAAAAAwDIkIgAAAAAAAAAAgGVIRAAAAAAAAAAAAMuQiABw3powYYJsNptsNpvatm1b2+G4efzxx2Wz2ZSamlpuuQkTJiguLu7cBFVJP/30k2w2m3766acKyyYnJ8tms+mdd96psfXffffdrs81ICCgxuqtC2w2mx5//PHaDgNAGQYMGKABAwbUdhhAncU59vtR1v3irFmz1KpVK3l5eSkkJETS+fu5VfY+3Yr74d+74t8651rxcTdv3rxzvu6yVPXzP5vff3FxcZowYUK1lgWA3wMSEQDOa+Hh4Zo1a5b+9re/uaa1adNGHTp0KFH2448/ls1mU//+/UvM++c//ymbzabvvvvO0nh/T6ZPn17pG+Y5c+bohRdesDSeYtdff71mzZqlvn37Vqp8VbajPnv66af1ySefnFUd77zzjmw2mxwOh1JSUkrMHzBgQImkYFxcnGw2my666KJS63zzzTddiaeVK1dWOaa3335brVu3lsPhUIsWLfTyyy+XWi4lJUVjxoxRSEiIgoKCdMUVV2jXrl0lys2YMUOjR49W06ZNZbPZyv2xd+LECU2ePFkRERHy9/fXwIEDtXr16hLl7rnnHnXu3FkNGjSQn5+fWrdurccff1yZmZlu5VasWKHbb79dSUlJ8vf3V9OmTTVmzBht27atRJ1vvvmm+vfvr4YNG8rHx0fx8fGaOHGikpOTS5RNT0/X/fffrxYtWsjX11exsbG68cYbtXfv3lK3a+7cuerZs6f8/f0VEhKiXr166ccffyxzP0hSdna2Xn31VQ0ePFjR0dEKDAxUp06dNGPGDBUVFZW77O/FV199dd4k+ooT8e3bt5cxpsR8m82m22+/3fV38UOS4n92u11NmzbVVVddpbVr11Z5/ZU9n6TKnaNbt27VPffco169esnhcMhms5V6LBf77LPP1LlzZzkcDjVt2lRTp05VYWGhW5kffvhBkyZNUmJiovz8/NSsWTPddNNNOnjwoFu5M/fNmf9uvvlmV9niB2Cl/Vu2bJlbvQMGDCi13CWXXFJie7Zv366xY8eqcePG8vPzU6tWrfSXv/xF2dnZZe6D6u672nQ+nWN1UXJysiZOnKiEhAQ5HA5FRUWpX79+mjp1ao2tY8uWLZowYYISEhL05ptv6o033ii13IEDB/T4449X6/qD36+auNcEANRtnrUdAACcDX9/f40bN85tWp8+ffT2228rPT1dwcHBrumLFy+Wp6enVqxYoYKCAnl5ebnNs9vt6tmz5zmLXTr1MNHpdJ7TdRabPn26wsPDSzxo7devn3JycuTt7e2aNmfOHG3YsEF333235XF16dJFXbp00fz580t9qHumsrajLsrJyZGnZ/W+up9++mmNGjVKV1555VnHkZeXp7/97W9lPvQ/k8Ph0IIFC3To0CFFRUW5zZs9e7YcDodyc3OrHMfrr7+uW2+9VSNHjtQf//hHLVy4UHfeeaeys7P1wAMPuMplZmZq4MCBSk9P18MPPywvLy/93//9n/r376+1a9cqLCzMVfbZZ59VRkaGunXrVuKB5emcTqeGDRumdevW6b777lN4eLimT5+uAQMGaNWqVWrRooWr7IoVK9S3b19NnDhRDodDa9as0d/+9jfNnz9fv/zyizw8PFzrXrx4sUaPHq327dvr0KFDeuWVV9S5c2ctW7bMLcmzZs0axcfHa/jw4QoNDdXu3bv15ptv6osvvtC6desUExPjivPiiy/Wpk2bNGXKFCUmJmrHjh2aPn26vv32W23evFmBgYGueh9//HH95S9/0ahRozRhwgQVFBRow4YNpSaeTrdr1y7dcccdGjRokP74xz8qKChI3377raZMmaJly5bp3XffreSnWnu++uorvfrqq2f1oPRcJ7PXr1+vjz76SCNHjqxU+WuuuUaXXnqpioqKtHnzZs2YMUNff/21li1bpo4dO1aqjqqcT5U9R5cuXaqXXnpJbdq0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FBwcrIkTJ5boGmvmzJm68MILFRkZKR8fH7Vp08atFU6xuLg4XXbZZfrpp590wQUXyNfXV+3atXPdV3300Ueu+4AuXbpozZo1Jeqo6fuonTt3qnHjxoqNjS0xLzIy0u3vssajqqhv+ri4OFc3TxEREW71nP65/fTTT67rx8SJE13HwundbP7666+65JJLFBwcLD8/P/Xv39/t3r08R44c0Y033qiGDRvK4XCoQ4cObq3yjhw5ooiICA0YMMCta7sdO3bI399fV199tWtaaffUJ06c0IQJExQcHKyQkBCNHz/e7Xu32G+//aYJEyaoWbNmrq6wJk2apLS0NLdyGRkZuvvuuxUXFycfHx9FRkbq4osvLtEq+Gz2SWnO9jg9c4yIiu41K/PbSjq1f++55x7X/mjcuLFuuOGGEt+NTqezUud8Rdcm6dTnHBAQoJSUFF155ZUKCAhQRESE7r333hLdS1b28y+uc+fOnbr00ksVGBio6667zjXvzOPqueeeU69evRQWFiZfX1916dLldzUOBgDUFBIRAOqcZs2aKSYmRosWLXJNW7FihfLz89WrVy/16tXL7cZ9yZIlkv6XwNi4caP69u2rdevW6f7779ef//xn7d69WwMGDNCvv/5aYn1TpkzRpk2b9Nhjj5Voolxs586d6tevnwIDA/XTTz+VeOBwpjlz5mjatGm65ZZb9OSTTyo5OVkjRoxQQUGBq8yXX36pq6++Wl5eXnrmmWc0YsQI3XjjjVq1alWF++iFF15Q48aN1apVK82aNUuzZs3SI488UmrZRx55RB07dnSNxzFr1qxyx4vYuHGjevTooc2bN+vBBx/U888/L39/f1155ZUlHpYNGjRIgwYNqjDes9mO0j6fFStWaMmSJRo7dqxeeukl3Xrrrfrhhx80YMCAUvvkvuOOO7Ru3TpNnTpVf/jDH/T555+79b9+5MgRDR48WMnJyXrwwQf18ssv67rrrivxA+vGG2/U3XffrSZNmujZZ5/Vgw8+KIfDUaLcjz/+qHvuuUdXX321XnzxxQoTP2PGjFFubq6eeeYZXXrppXrppZc0efJk1/xZs2bJx8dHffv2de2nW265xTW/devWuuGGG8rf2aeJj4/XDTfcoDfffFMHDhyo1DLXXnutli9f7vbAZM6cORo1apRbN2mVVfyD+IILLnCb3qVLF3l4eLjmO51O/fbbbyXKSVK3bt20c+dOZWRkVGv9nTt3LvGgs1u3bsrOzi4xrkNhYaFSU1N14MABfffdd3r00UcVGBiobt26lbseY4wOHz6s8PDwUuenpaXpyJEjWrlypSZOnChJbufUBRdcIH9/f/35z3/Wjz/+qJSUFP3888+6//771bVrV7exO3744Qd17dpVL730kiIiIhQYGKjo6Gi98sorVdo3pzt06JAklRl/ZRw/flyXXnqpunTpor///e9q3Lix/vCHP+if//xnibJ//etf9eWXX+ree+/V008/LW9vb73zzjsaM2aM7Ha7nnnmGd1888366KOP1KdPH9fDg1tuuUUXX3yxJLnOkdO767nlllt03333qXfv3nrxxRc1ceJEzZ49W0OGDHG7Lpflb3/7mz7++GPde++9euihh7Rs2TLXA4liy5cvV+vWrau0v6+99lq1aNFCf/nLX0odK6Iixefj6d0placq51Nlz9GqKKvOmJgYNW7cuMI6MzMzlZmZWeHx+P7778vpdJb4jIpNnDhRQUFBcjgcGjhwYJnj22zbtk3+/v4KDAxUVFSU/vznP5c4Xoofzt54441au3at9u3bp7lz52rGjBm688475e/vX26sNaG+nGPlGTNmjDIyMvTMM89ozJgxeuedd0p0VzRjxgzFxsbq4Ycf1vPPP68mTZpoypQprgTL6Xbs2KFrr71Wl19+uZ555hkdP35cl19+uWbPnq177rlH48aN0xNPPKGdO3dqzJgxbt20WHEfFRsbq3379lU43s/ZeOGFF1zJ5xkzZmjWrFluyfpirVu31l/+8hdJ0uTJk13HQr9+/SSdugfq16+fTp48qalTp+rpp5/WiRMndOGFF2r58uXlxpCTk6MBAwZo1qxZuu666zRt2jQFBwdrwoQJevHFFyWdSrzMmDFDP//8s6uLSafTqQkTJigwMFDTp08vs35jjK644grNmjVL48aN05NPPqn9+/dr/PjxJcp+//332rVrlyZOnKiXX35ZY8eO1fvvv69LL73U7Xp96623asaMGRo5cqSmT5+ue++9V76+vm4J07PZJ+U5m+P0TOXda1b2t1VmZqb69u2rl19+WYMHD9aLL76oW2+9VVu2bNH+/fvd1leZc74y16ZiRUVFGjJkiMLCwvTcc8+pf//+ev75593GOanK5y+duvcbMmSIIiMj9dxzz5Xb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6a1atXLNL8/27duVnp6uyMjIEte1zMzMSl3TKrqGnA273a5HH31Ua9eu1SeffFJu2cmTJ+v777/XDz/8oFWrVunIkSO6//77K72uqpxPlT1Hq6Ki9ZdV55YtW3TVVVepbdu2euutt8pdx+zZsyWp0t36NG/eXFdccYUWLFhQoi/xM/3pT3+SJM2fP9817f3339fkyZP11ltv6eabb9aIESP09ttva/z48XrggQdK9CdvBc6xyi2/ePFiXXTRRfL391dISIgiIiL08MMPS1KJe4cz6wsODpYkNWnSpNTpxeux8j4qMTFRs2bNUmpqqn777TdX9y+TJ092OyZrU/FLQuPHjy+x/W+99Zby8vJKvU8rtmfPHrVo0aJEErF169au+cUaNGigl156Sb/99puCg4P10ksvVRjfnj17FB0d7fYSkFT68X/s2DHdddddatiwoXx9fRUREeE6f07fhr///e/asGGDmjRpom7duunxxx93e/h9tvukPNU9TquiKr+tdu7cqbZt21Yr9rJ+K1X22lQ8dtuZdZ6+zVX5/KVTSd7yxg883RdffKEePXrI4XCoQYMGioiI0IwZM6r92QLA71X1X08DgN+xDh06KDAwUIsWLdKll16qY8eOuVpEeHh4qHv37lq0aJESEhKUn5/vNlB1VZX3MGXkyJF69913NXv2bLe3DStS1kPHit52rW3Fb2Tde++9ZQ5AfK4TJaV9PnfccYdmzpypu+++Wz179lRwcLBsNpvGjh1b6ltlFX0eNptN8+bN07Jly/T555/r22+/1aRJk/T8889r2bJlJX6wVCfmqqjuw/2qatasmcaNG6c33nijzPFRTte9e3clJCTo7rvv1u7du3XttddWe93R0dEqKirSkSNH3AbazM/PV1pammJiYiSdetDg4+NTaquN4mnFZau6/rOps/gt6ffff18dOnRwm5eenq6hQ4fqxIkTWrhwYaXjS0hIUKdOnTR79mzXGCbvvPOOcnNzddlll7mVHT58uKRTD9aGDh3qGhA1JCSkxPFevH+PHz9e4od/ad555x098MADuvXWW/Xoo49WKvaacrbnTmmcTqciIyNdD6jPdOaDi9JYfU2/7rrr9Ne//lV/+ctfdOWVV5ZZrkWLFm7jglRVVc6nyp6jVVE8yPrBgwdLPCg7ePBgqWOu7Nu3T4MHD1ZwcLC++uqrCgd2njNnjlq2bKkuXbpUOq4mTZooPz9fWVlZ5b50UBzzsWPHXNOmT5+uTp06lXhYNXz4cL3zzjtas2bNWX1mNa2unmMVLb9z504NGjRIrVq10j/+8Q81adJE3t7e+uqrr/R///d/Je4dyqqvovWci/sou92udu3aqV27durZs6cGDhyo2bNnV3icVZRoqwnF2z9t2jR17Nix1DJVvacqz7fffivp1Pfb/v37XS1ca8KYMWO0ZMkS3XffferYsaMCAgLkdDp1ySWXuB0vY8aMUd++ffXxxx/ru+++07Rp0/Tss8/qo48+0tChQy3dJ9U9Tn8PajrGsuo7Gz4+PiWSYqVZuHChhg8frn79+mn69OmKjo6Wl5eXZs6cqTlz5tR4XABQm0hEAKiT7Ha7evToocWLF2vRokUKCgpy67KoV69emjt3ruvHXHEiIiIiQn5+ftq6dWuJOrds2SIPD48SDz/KM23aNHl6emrKlCkKDAw8qwevp4uNjZV06s25M5U2rTRVeVhd2bLFTa69vLzO2YOT6jx0nzdvnsaPH6/nn3/eNS03N7fEwHVV1aNHD/Xo0UNPPfWU5syZo+uuu07vv/++brrpJiUkJOjbb7/VsWPHKtUqoiq2b9/u9pbqjh075HQ63Qa5tio58eijj+q9997Ts88+W6ny11xzjZ588km1bt26zB/UlVG87MqVK93euF+5cqWcTqdrvoeHh9q1a1fqYLK//vqrmjVrVuGDybLWv3DhQjmdTrcfmb/++qv8/PxcbxOXJS8vT06ns8Sbbrm5ubr88su1bds2zZ8/v0pddEmnWvuc/rb44cOHZYwp8QCpuAuxwsJCSaf2U8eOHbVixQrl5+e7dXdQ3F1EZR4Gfvrpp7rppps0YsSIUgdwrY4DBw4oKyvL7Y3t4sHAKxrIvfhauXXr1hLd8WzdutU1Xyr7HElISND8+fPVu3dvSx7C1oTiVhETJkzQp59+atl6qnI+VfYcrYrT6zw96XDgwAHt379fkydPdiuflpamwYMHKy8vTz/88IMrkVGWX3/9VTt27HANpFtZu3btksPhqPBhYPFbzqefS4cPHy6128Yzz1ErcY5V7PPPP1deXp4+++wzt4RsZbqNqopzfR9VPPD76cnF0NDQEvdD+fn5leqGsbLKOxak/7UirKrY2Fj99ttvJb6bt2zZ4ppf7JtvvtFbb72l+++/X7Nnz9b48eP166+/ltuVYGxsrH744QdlZma6ne9n/m44fvy4fvjhBz3xxBN67LHHXNOLWzecKTo6WlOmTNGUKVN05MgRde7cWU899ZSGDh161vvkXCrtc63Kb6uEhARt2LChRmKpyrWpKnVW5vOvqg8//FAOh0PffvutW9eDM2fOPKt6AeD3iK6ZANRZffr00dGjRzVz5kx1797d7QdJr169tHXrVn366acKCwtzNdm22+0aPHiwPv30U7fuCA4fPqw5c+aoT58+VepiyWaz6Y033tCoUaM0fvx4ffbZZzWybTExMWrbtq3+9a9/ufUz//PPP2v9+vWVqsPf37/SD979/f0r1TQ4MjJSAwYM0Ouvv17qD9ajR4+6/b1z507t3LmzUjGUF1tVEwh2u73EG1Mvv/xytd/2O378eIn6ih+YFT8UHjlypIwxeuKJJ0osf7ZvmJ35wPfll1+WJA0dOtQ1rbz9tGXLlip1u3O6hIQEjRs3Tq+//roOHTpUYfmbbrpJU6dOdUsCVceFF16oBg0aaMaMGW7TZ8yYIT8/Pw0bNsw1bdSoUVqxYoXbw9OtW7fqxx9/1OjRo6u1/lGjRunw4cP66KOPXNNSU1P1wQcf6PLLL3f9kDxx4kSp44YUdw9T/BBIOvW26dVXX62lS5fqgw8+cOu3+XSFhYWldo+wfPlyrV+/3q3OxMREGWP0n//8x61s8VgdnTp1ck27+uqrVVRUpHfffdc1LTc3V7Nnz1abNm3c3mAv7Zj55ZdfNHbsWPXr10+zZ8+u1FuAlVFYWKjXX3/d9Xd+fr5ef/11RUREVPjW+gUXXKDIyEi99tprbgmar7/+Wps3b3Y7Toofwp55nowZM0ZFRUX661//WmpsZ5vALJadna0tW7YoNTW1WsuPGzdOzZs3L/UaU5Mqez5V5RytrKSkJLVq1UpvvPGG2/V6xowZstlsbt2KZWVl6dJLL1VKSoq++uqrEl3Ylab4zdOyXho48ztMktatW6fPPvtMgwcPdh3zJ0+eLNF9lDHGNdbK6W+6JyYmas2aNa4H/8X+/e9/y8PDQ+3bt3dN27t3r+uBak2qL+fY2Sh+W/r07+v09PQaf1Bo1X3UwoULS/0uKh5L6vSuZRISEvTLL7+4lTvznDtbZR0LXbp0UUJCgp577rlSx1Eq7Rw83aWXXqpDhw5p7ty5rmmFhYV6+eWXFRAQoP79+7vWe9NNN6lbt256+umn9dZbb2n16tV6+umnK6y/sLDQ7bpWVFTkuu8qVtrxIkkvvPCC299FRUUl7q8jIyMVExPjOp/Odp+cS6Xda1blt9XIkSO1bt06ffzxxyXqruq9clWuTZVV2c+/qux2u2w2m9s5lpycXGF3iwBwPqJFBIA6q7iVw9KlS0sM/tmjRw/ZbDYtW7ZMl19+udsbPE8++aS+//579enTR1OmTJGnp6def/115eXl6e9//3uV4/Dw8NB7772nK6+8UmPGjNFXX31V7kCZlfX000/riiuuUO/evTVx4kQdP35cr7zyitq2bVvhILjSqR82M2bM0JNPPqnmzZsrMjKyzLi6dOmiuXPn6o9//KO6du2qgIAAXX755aWWffXVV9WnTx+1a9dON998s5o1a6bDhw9r6dKl2r9/v1uf+IMGDZJUsg/qqqjKdhS77LLLNGvWLAUHB6tNmzZaunSp5s+fr7CwsGrF8O6772r69Om66qqrlJCQoIyMDL355psKCgpyvQk8cOBAXX/99XrppZe0fft2V9P8hQsXauDAga6udKpj9+7dGj58uC655BItXbpU7733nq699lq3Ln+6dOmi+fPn6x//+IdiYmIUHx/vGnywdevW6t+/f5UHrC72yCOPaNasWdq6dauSkpLKLRsbG1vlwXhL4+vrq7/+9a+67bbbNHr0aA0ZMkQLFy7Ue++9p6eeesqt1cmUKVP05ptvatiwYbr33nvl5eWlf/zjH2rYsKGrz/Zin3/+uesYLSgo0G+//eZ6eDh8+HDXQ8FRo0apR48emjhxojZt2qTw8HBNnz5dRUVFbg+Cf/rpJ915550aNWqUWrRoofz8fC1cuFAfffSRLrjgAo0bN85V9k9/+pM+++wzXX755Tp27Jjee+89t9iKy2ZmZqpJkya6+uqrlZSUJH9/f61fv14zZ85UcHCw/vznP7uWmTBhgp577jndcsstWrNmjZKSkrR69Wq99dZbSkpKchsQ8pZbbtFbb72l2267Tdu2bVPTpk01a9Ys7dmzR59//rlbLGceM3v27NHw4cNdD4M/+OADt/Lt27d3e6Ba/JZ1Zc79mJgYPfvss0pOTlZiYqLmzp2rtWvX6o033pCXl1e5y3p5eenZZ5/VxIkT1b9/f11zzTU6fPiwXnzxRcXFxemee+5xlS1+4HrnnXdqyJAhstvtGjt2rPr3769bbrlFzzzzjNauXavBgwfLy8tL27dv1wcffKAXX3zR7QF4dS1fvlwDBw7U1KlTq3WO2O12PfLII26DkFuhsudTVc7R9PR014OcxYsXSzo1kGxISIhCQkLcro/Tpk3T8OHDNXjwYI0dO1YbNmzQK6+8optuusn1UoF0qruq5cuXa9KkSdq8ebM2b97smhcQEFCiC6uioiLNnTtXPXr0cL2BfKarr75avr6+6tWrlyIjI7Vp0ya98cYb8vPzcxsrZ/Xq1brmmmt0zTXXqHnz5srJydHHH3+sxYsXa/LkyercubOr7H333aevv/5affv21e23366wsDB98cUX+vrrr3XTTTe5JQBvuOEG/fzzzyUehld2302YMEHvvvuudu/e7dbSob6cY2dj8ODB8vb21uWXX65bbrlFmZmZevPNNxUZGVmjLQUka+6jnn32Wa1atUojRoxwXYtXr16tf/3rX2rQoIHuvvtuV9mbbrpJt956q0aOHKmLL75Y69at07fffqvw8PAa28aEhASFhITotddeU2BgoPz9/dW9e3fFx8frrbfe0tChQ5WUlKSJEyeqUaNGSklJ0YIFCxQUFFTi++h0kydP1uuvv64JEyZo1apViouL07x587R48WK98MILrhZbd911l9LS0jR//nzZ7XZdcskluummm/Tkk0/qiiuuKNFlYrHLL79cvXv31oMPPqjk5GS1adNGH330UYlkQlBQkPr166e///3vKigoUKNGjfTdd99p9+7dbuUyMjLUuHFjjRo1Sh06dFBAQIDmz5+vFStWuF7Y8PDwqNI+sdlsZ3VPdzbKutes7G+r++67T/PmzdPo0aM1adIkdenSRceOHdNnn32m1157rczPpTRVuTZVVmU//6oaNmyY/vGPf+iSSy7RtddeqyNHjujVV19V8+bN9dtvv51V3QDwu2MA4Dw1fvx4ExsbW+b8rKws4+npaSSZ7777rsT89u3bG0nm2WefLTFv9erVZsiQISYgIMD4+fmZgQMHmiVLlriVmTlzppFkVqxYUWL5qVOnGknm6NGjrmnZ2dmmf//+JiAgwCxbtqzUbdi9e7eRZKZNm1aiTklm6tSpbtPef/9906pVK+Pj42Patm1rPvvsMzNy5EjTqlWrMvdLsUOHDplhw4aZwMBAI8n079/fGGPMggULjCSzYMECV9nMzExz7bXXmpCQECPJFXNxvDNnznSre+fOneaGG24wUVFRxsvLyzRq1MhcdtllZt68eW7lYmNjy/wMx48fb/z9/au9HeV9PsePHzcTJ0404eHhJiAgwAwZMsRs2bLFxMbGmvHjx7vKlVXHmfto9erV5pprrjFNmzY1Pj4+JjIy0lx22WVm5cqVbssVFhaaadOmmVatWhlvb28TERFhhg4dalatWuUqI8ncdtttpW7rmcdA8XG2adMmM2rUKBMYGGhCQ0PN7bffbnJyctyW3bJli+nXr5/x9fU1kty28/T9Vp7y9un48eONJJOUlOQ2PTY21gwbNqza9VbkjTfeMC1btjTe3t4mISHB/N///Z9xOp0lyu3bt8+MGjXKBAUFmYCAAHPZZZeZ7du3l7kdpf078zg/duyYufHGG01YWJjx8/Mz/fv3L7ENO3bsMDfccINp1qyZ8fX1NQ6HwyQlJZmpU6eazMxMt7L9+/cvc92n37Ll5eWZu+66y7Rv394EBQUZLy8vExsba2688Uaze/fuEtu0f/9+M2nSJBMfH2+8vb1NdHS0ufnmm92uT8UOHz5sxo8fbxo0aGB8fHxM9+7dzTfffFOi3JnHTPE5Uda/M69d4eHhpkePHiXqPVP//v1NUlKSWblypenZs6dxOBwmNjbWvPLKK27litf/wQcflFrP3LlzTadOnYyPj49p0KCBue6668z+/fvdyhQWFpo77rjDREREGJvN5rbPjTl1rHXp0sX4+vqawMBA065dO3P//febAwcOuMVb2n45M67Srp3FZc/cV6Up6/pYUFBgEhISSlxHyvtuqY7Knk/GVO4cLY6vtH+lfUd8/PHHpmPHjsbHx8c0btzYPProoyY/P9+tTGxsbJXq/Oabb4wk89JLL5W53S+++KLp1q2badCggfH09DTR0dFm3LhxJbZ9165dZvTo0SYuLs44HA7j5+dnunTpYl577bVSr0+//vqrGTp0qOs7MzEx0Tz11FOmoKDArVzxNaK6+27kyJHG19fXHD9+3K3O+nKOlaa0+zVj/ve9dPo19bPPPjPt27c3DofDxMXFmWeffdb885//LFGurO+90r7fyzo3a+I+6nSLFy82t912m2nbtq0JDg42Xl5epmnTpmbChAlm586dbmWLiorMAw88YMLDw42fn58ZMmSI2bFjR4l7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AAAAAACwDIkIAAAAAAAAAABgGRIRAAAAAAAAAADAMiQiAAAAAAAAAACAZUhEAAAAAAAAAAAAy5CIAAAAAAAAAAAAliERAQAAAAAAAAAALEMiAgAAAAAAAAAAWIZEBAAAAAAAAAAAsAyJCAAAAAAAAAAAYBkSEQAAAAAAAAAAwDIkIgAAAAAAAAAAgGVIRAAAAAAAAAAAAMuQiAAAAAAAAAAAAJYhEQEAAAAAAAAAACxDIgIAAAAAAAAAAFiGRAQAAAAAAAAAALAMiQgAAAAAAAAAAGAZEhEAAAAAAAAAAMAyJCIAAAAAAAAAAIBlSEQAAAAAAAAAAADLkIgAAAAAAAAAAACWIREBAAAAAAAAAAAsQyICAAAAAAAAAABYhkQEAAAAAAAAAACwDIkIAAAAAAAAAABgGRIRAAAAAAAAAADAMiQiAAAAAAAAAACAZUhEAAAAAAAAAAAAy5CIAAAAAAAAAAAAliERAQAAAAAAAAAALEMiAgAAAAAAAAAAWIZEBAAAAAAAAAAAsAyJCAAAAAAAAAAAYBkSEQAAAAAAAAAAwDIkIgAAAAAAAAAAgGVIRAAAAAAAAAAAAMuQiAAAAAAAAAAAAJYhEQEAAAAAAAAAACxDIgIAAAAAAAAAAFiGRAQAAAAAAAAAALAMiQgAAAAAAAAAAGAZEhEAAAAAAAAAAMAyJCIAAAAAAAAAAIBlSEQAAAAAAAAAAADLkIgAAAAAAAAAAACWIREBAAAAAAAAAAAsQyICAAAAAAAAAABYhkQEAAAAAAAAAACwDIkIAAAAAAAAAABgGRIRAAAAAAAAAADAMiQiAAAAAAAAAACAZUhEAAAAAAAAAAAAy5CIAAAAAAAAAAAAliERAQAAAAAAAAAALEMiAgAAAAAAAAAAWIZEBAAAAAAAAAAAsAyJCAAAAAAAAAAAYBkSEQAAAAAAAAAAwDIkIgAAAAAAAAAAgGVIRAAAAAAAAAAAAMuQiAAAAAAAAAAAAJYhEQEAAAAAAAAAACxDIgIAAAAAAAAAAFiGRAQAAAAAAAAAALAMiQgAAAAAAAAAAGAZEhEAAAAAAAAAAMAyJCIAAAAAAAAAAIBlSEQAAAAAAAAAAADLkIgAAAAAAAAAAACWIREBAAAAAAAAAAAsQyICAAAAAAAAAABYhkQEAAAAAAAAAACwDIkIAAAAAAAAAABgGRIRAAAAAAAA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nW5bV1eXurq6XbYFAAAAur+eMOaxsxr3tM+OOjuO8oMf/CArV67M5ZdfvtN2wO8IIqATqqqqctFFF2XatGn53ve+l6lTp+bXv/51/vAP/7D9JPbSSy8lSb7whS/k8ccfzx133JE777wzTU1N+eM//uP86le/au/v9ddfz4gRI7bZzuZlixYtam/XcfnWbTe325FvfvObWbhwYS677LJdvsbPfe5zGThwYM4999ydtnv55Zfzne98JxdddFH69u27y34BAACA7qsnjHl0psbd7XN7OjuO8s1vfjPV1dW5+OKLd9oO+B2TVUMnTJw4cYvbGb3nPe/JxRdfnPHjx+f666/PI488krVr1yZpvUTwueeey2GHHZYkOeOMMzJmzJh87nOfyz333JMkaWxsTHV19TbbqampaX++4/cdtd38/Pa8+OKL+fCHP5yTTz45V1xxxU5f380335wf//jH+ad/+qcccMABO2y3bt26XHLJJamtrc0tt9yy0z4BAACA7q8njHl0psbd7XNrnR1HWb16dR5++OGcd955Ox1DAbbkigjYQ2PGjMkFF1yQGTNmZOPGjamtrU2SvOtd72o/ISfJyJEjc8opp+Spp55qX1ZbW5v169dv02dTU1P78x2/76jt5ue3tnjx4kyePDmDBg1qvzfjjnz729/ODTfckKuvvjp//ud/vsN2GzduzJ/+6Z/mhRdeyP3335+DDz54h20BAACAnqs7j3nsqMa96XN3xlEeeOCBNDU1uS0T7CZBBOyFww47LM3NzXnrrbfaB+YPOuigbdoNGzYsK1asaH88YsSI9ssFO9q8bHNfmy8l3FHb7YUBq1atyrnnnpuVK1fmkUce2WlgMH369Lz//e/P5MmT85WvfGVnLzUf/OAH89BDD+Wuu+7KGWecsdO2AAAAQM/WHcc8dlbjnva5O+MoSettmQYNGpR3v/vdu6wP+B1BBOyFV199NTU1Nenfv3+OPfbYVFZWZuHChdu0W7RoUYYOHdr++Ljjjsvs2bOzevXqLdrNnDmz/fkkOeaYY9KvX79tJl9qbm7O888/395us6amppx//vmZPXt2HnrooRx11FE7rH3mzJm58MILc/zxx+fee+9Nv347vlPbJz7xidx55535whe+kPe97307bAcAAAD0Dt1tzGNXNe5Jn7szjpK0hhkzZszIRRddtN3bPwE7JoiATli6dOk2y/7rv/4r3//+93P22WenT58+GTBgQM4777w89dRTefHFF9vbzZo1K0899VQmTZrUvuziiy/Oxo0b89WvfrV92fr163PnnXfmpJNOar/McdCgQTnrrLNyzz33ZM2aNe1t77777qxduzaXXHJJ+7KNGzfmsssuy9NPP5377rsvJ5988g5fz6xZszJ58uSMGjUqDz300E4vd7ztttvy+c9/Pn/zN3+Tj370o7vYUwAAAEBP0hPGPDpT4+72uTvjKJt961vfyqZNm9yWCfZARalUKpW7COjuzjjjjNTW1mbixIkZNmxYXnjhhXz1q19NZWVlnn766YwbNy5J8sILL+Skk07KgAEDcu211yZJvvSlL6WlpSXPPfdcDjnkkPY+L7300nz3u9/NX/3VX2XMmDH5+te/np///Of5yU9+klNPPbW93bPPPpuJEyfmqKOOyjXXXJMFCxbkH/7hH3Lqqafm0UcfbW933XXXZdq0aTn//PNz6aWXbvMapkyZkqR1Yqmjjz46CxcuzM0337xFTUlyxBFHtJ98v/vd7+ZP/uRPMnbs2Hz605/eps9JkyZtcVnm1KlTkyT//d//nW9961v5wAc+kMMPPzxJcsMNN+zGHgcAAAD2hZ4w5tHZGnenz86Oo3R0/PHH5/XXX8/8+fPbww+gk0rALk2bNq104oknloYMGVLq169facSIEaUpU6aUXnrppW3a/vKXvyydddZZpfr6+tKAAQNKF1xwQWn27NnbtGtsbCx9/OMfLw0fPrxUXV1dOuGEE0qPPPLIdrf/05/+tDRx4sRSTU1NaejQoaUPf/jDpdWrV2/R5rTTTisl2eHXZnPmzNlpuyuuuKK97Y033rjTtjNmzNiihs5sHwAAAOg+esKYx+7U2Nk+OzuOstmLL75YSlL62Mc+tsN9CeyYKyIAAAAAAIDCuIYIAAAAAAAojCACAAAAAAAojCACAAAAAAAojCACAAAAAAAojCACAAAAAAAojCACAAAAAAAojCACAAAAAAAojCACAAAAAAAojCACAAAAAAAojCACAAAAAAAojCACAAAAAAAojCACAAAAAAAojCACAAAAAAAojCACAAAAAAAojCACAAAAAAAojCACAAAAAAAojCACAAAAAAAojCACAAAAAAAojCACAAAAAAAojCACAAAAAAAojCACAAAAAAAojCACAAAA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AgAAAAAAKIwgAgAAAAAAKIwgAgAAAAAAKIwgAgAAAAAAKIwgAgAAAAAAKIwgAgAAAAAAKIwgAgAAAAAAKIwgAgAAAAAAKIwgAgAAAAAAKIwgAgAAAAAAKIwgAgAAAAAAKIwgAgAAAAAAKIwgAgAAAAAAKIwgAgAAAAAAKIwgAgAAAAAAKIwgAgAAAAAAKIwgAgAAAAAAKIwgAgAAAAAAKIwgAgAAAAAAKIwgAgAAAAAAKIwgAgAAAAAAKIwgAgAAAAAAKIwgAgAAAAAAKIwgAgAAAAAAKIwgAgAAAAAAKIwgAgAAAAAAKIwgAgAAAAAAKIwgAgAAAAAAKIwgAgAAAAAAKIwgAgAAAAAAKIwgAgAAAAAAKIwgAgAAAAAAKIwgAgAAAAAAKIwgAgAAAAAAKIwgAgAAAAAAKIwgAgAAAAAAKIwgAgAAAAAAKIwgAgAAAAAAKIwgAgAAAAAAKIwgAgAAAAAAKIwgAgAAAAAAKIwgAgAAAAAAKIwgAgAAAAAAKIwgAgAAAAAAKIwgAgAAAAAAKIwgAgAAAAAAKIwgAgAAAAAAKIwgAgAAAAAAKIwgAgAAAAAAKIwgAgAAAAAAKIwgAgAAAAAAKIwgAgAAAAAAKIwgAgAAAAAAKIwgAgAAAAAAKIwgAgAAAAAAKIwgAgAAAAAAKIwgAgAAAAAAKIwgAgAAAAAAKIwgAgAAAAAAKIwgAgAAAAAAKIwgAgAAAAAAKIwgAgAAAAAAKIwgAgAAAAAAKIwgAgAAAAAAKIwgAgAAAAAAKIwgAgAAAAAAKIwgAgAAAAAAKIwgAgAAAAAAKIwgAgAAAAAAKIwgAgAAAAAAKIwgAgAAAAAAKIwgAgAAAAAAKIwgAgAAAAAAKIwgAgAAAAAAKIwgAgAAAAAAKIwgAgAAAAAAKIwgAgAAAAAAKIwgAgAAAAAAKIwgAgAAAAAAKIwgAgAAAAAAKIwgAgAAAAAAKIwgAgAAAAAAKIwgAgAAAAAAKIwgAgAAAAAAKIwgAgAAAAAAKIwgAgAAAAAAKIwgAgAAAAAAKIwgAgAAAAAAKIwgAgAAAAAAKIwgAgAAAAAAKIwgAgAAAAAAKIwgAgAAAAAAKIwgAgAAAAAAKIwgAgAAAAAAKIwgAgAAAAAAKIwgAgAAAAAAKIwgAgAAAAAAKIwgAgAAAAAAKIwgAgAAAAAAKIwgAgAAAAAAKIwgAgAAAAAAKIwgAgAAAAAAKIwgAgAAAAAAKIwgAgAAAAAAKIwgAgAAAAAAKIwgAgAAAAAAKIwgAgAAAAAAKIwgAgAAAAAAKIwgAgAAAAAAKIwgAgAAAAAAKIwgAgAAAAAAKMz/B4Mb2ax6KmDdAAAAAElFTkSuQmCC", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "from gpsea.view._draw_variants import VariantsVisualizer\n", - "viz = VariantsVisualizer()\n", - "viz.draw_fig(tx_coordinates, protein_meta, cohort)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "0385dd13-2134-4f0f-b5ad-4bc60e88f336", - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "gpc_venv", - "language": "python", - "name": "gpc_venv" - }, - "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.9.6" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -}