{ "cells": [ { "cell_type": "markdown", "id": "284c313a-e684-4b96-b12b-2c669f12a87b", "metadata": {}, "source": [ "# Demo: Snekmer Model/Cluster\n", "\n", "In this notebook, we will demonstrate how to apply Snekmer toward the analysis of protein sequences." ] }, { "cell_type": "markdown", "id": "7319a320", "metadata": {}, "source": [ "## Getting Started\n", "\n", "### Workflow\n", "\n", "Snekmer proceeds through a defined workflow executed as individual steps on Snakemake. Two operation modes are available: `model` (supervised machine learning) and `cluster` (unsupervised clustering). The user should select the mode that best suits their individual use case.\n", "\n", "\n", "\n" ] }, { "cell_type": "markdown", "id": "e180e9fb", "metadata": {}, "source": [ "### Notes on Using Snekmer\n", "\n", "Snekmer assumes that the user will primarily process input files using the command line. For more detailed instructions, refer to the [documentation](https://snekmer.readthedocs.io/en/latest/getting_started/cli.html).\n", "\n", "The basic process for running Snekmer is as follows:\n", "\n", "1. Verify that your file directory structure is correct and that the top-level directory contains a **config.yaml** file.\n", " - A template configuration file is included in the Snekmer code repository [here](https://github.com/PNNL-CompBio/Snekmer/blob/main/resources/config.yaml).\n", "2. Modify **config.yaml** as needed.\n", "3. Use the command line to navigate to the directory containing both the **config.yaml** file and **_input_** directory.\n", "4. Run `snekmer cluster`, `snekmer model`, or `snekmer search`.\n", "\n", "Depending on the selected operation mode, output files will vary.\n", "\n", "The process detailed above is handled by the included [tutorial](https://snekmer.readthedocs.io/en/latest/tutorial/index.html). We will use this demo to break down the process followed by the tutorial and understand the output files created in the process." ] }, { "cell_type": "markdown", "id": "2a5fe0b3-a906-4b4b-9e86-00724bb34746", "metadata": {}, "source": [ "## Running Snekmer\n", "\n", "First, install Snekmer using the instructions in the [user installation guide](https://snekmer.readthedocs.io/en/latest/getting_started/install.html).\n", "\n", "To ensure that the tutorial runs correctly, activate the conda environment containing your Snekmer installation and run the notebook from the environment.\n", "\n", "Next, run the [Snekmer tutorial](https://snekmer.readthedocs.io/en/latest/tutorial/index.html). This runs all three Snekmer modes on the demo example files and produces all output files. The tutorial uses the included default configuration parameters to guide the analysis, but the user can modify these parameters if a different configuration set is desired. The tutorial command line instructions are copied below:\n", "\n", "```bash\n", " conda activate snekmer\n", " cd resources/model_cluster_search_demo\n", " ./run_demo.py\n", "```\n", " " ] }, { "cell_type": "markdown", "id": "bc3992e2-8c23-49ac-856e-89a2810867ea", "metadata": {}, "source": [ "Finally, we will initialize some parameters and parse filenames for this demo notebook." ] }, { "cell_type": "code", "execution_count": 11, "id": "24ab6fcc-374d-4e85-b654-43b6bfae7025", "metadata": {}, "outputs": [], "source": [ "# imports\n", "import glob\n", "import os\n", "import yaml\n", "from itertools import product\n", "\n", "import numpy as np\n", "import pandas as pd\n", "import matplotlib.pyplot as plt\n", "import seaborn as sns" ] }, { "cell_type": "code", "execution_count": 12, "id": "06acdf21", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Loaded config from ../config.yaml\n", "{'k': 8, 'alphabet': 2, 'input_dir': 'input', 'input_file_exts': ['fasta', 'fna', 'faa', 'fa'], 'input_file_regex': '.*', 'nested_output': False, 'score': {'scaler': True, 'scaler_kwargs': {'n': 0.25}, 'labels': 'None', 'lname': 'None'}, 'cluster': {'method': 'agglomerative-jaccard', 'params': {'n_clusters': 'None', 'linkage': 'average', 'distance_threshold': 0.92, 'compute_full_tree': True}, 'cluster_plots': False, 'min_rep': None, 'max_rep': None, 'save_matrix': False, 'dist_thresh': 100}, 'model': {'cv': 5, 'random_state': 'None'}, 'model_dir': 'output/model/', 'basis_dir': 'output/example-model/', 'score_dir': 'output/scoring/', 'motif': {'n': 2000}, 'learn_apply': {'save_apply_associations': False, 'fragmentation': False, 'version': 'absolute', 'frag_length': 50, 'min_length': 50, 'location': 'random', 'seed': 999, 'conf_weight_modifier': 20, 'selection': 'top_hit', 'threshold': 'Median', 'weight_top': 0.7, 'weight_distance': 0.3, 'apply_output': 'snekmer_results.csv'}}\n", "Input files: ['TIGR03149.faa', 'nirS.faa', 'nxrA.faa']\n", "Families: ['TIGR03149', 'nirS', 'nxrA']\n" ] } ], "source": [ "# --- Paths (relative to resources/tutorial/snekmer_demo.ipynb) ---\n", "BASE = os.path.join(\"..\", \"model_cluster_search_demo\")\n", "IN_DIR = os.path.join(BASE, \"input\")\n", "OUT_DIR = os.path.join(BASE, \"output\")\n", "\n", "# --- Load config ---\n", "with open(os.path.join(\"..\", \"config.yaml\"), \"r\") as f:\n", " config = yaml.safe_load(f)\n", "print(\"Loaded config from ../config.yaml\")\n", "print(config)\n", "\n", "# --- Discover input families from input/*.fa* ---\n", "in_files = sorted(glob.glob(os.path.join(IN_DIR, \"*.fa*\")))\n", "filenames = [os.path.splitext(f)[0] for f in in_files] # strip only last ext\n", "families = sorted([os.path.basename(os.path.splitext(f)[0]) for f in in_files])\n", "\n", "print(\"Input files:\", [os.path.basename(f) for f in in_files])\n", "print(\"Families:\", families)" ] }, { "cell_type": "markdown", "id": "9a92b722-8834-4c06-81e1-b3f4c512aca2", "metadata": {}, "source": [ "## Snekmer Cluster Mode\n", "\n", "Results and output files from Snekmer's clustering mode can be found in the **cluster** directory.\n", "\n", "Overall results are contained within **snekmer.csv**. To see the results, load and parse the file:" ] }, { "cell_type": "code", "execution_count": 13, "id": "a7d55546-398b-4f58-8267-119b15e3b19b", "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", "
filenamesequence_idsequence_lengthbackgroundcluster
0nxrAWP_012964344.11154False0
1nxrAWP_013249767.11147False0
2nxrAWP_080885705.11148False0
3nxrAWP_013249749.11146False0
4nxrAWP_053381689.11145False0
..................
96nirSWP_011805163.1574False2
97nirSWP_012250943.1560False2
98nirSWP_013518994.1574False2
99nirSWP_014426879.1582False2
100nirSWP_085938646.1559False2
\n", "

101 rows × 5 columns

\n", "
" ], "text/plain": [ " filename sequence_id sequence_length background cluster\n", "0 nxrA WP_012964344.1 1154 False 0\n", "1 nxrA WP_013249767.1 1147 False 0\n", "2 nxrA WP_080885705.1 1148 False 0\n", "3 nxrA WP_013249749.1 1146 False 0\n", "4 nxrA WP_053381689.1 1145 False 0\n", ".. ... ... ... ... ...\n", "96 nirS WP_011805163.1 574 False 2\n", "97 nirS WP_012250943.1 560 False 2\n", "98 nirS WP_013518994.1 574 False 2\n", "99 nirS WP_014426879.1 582 False 2\n", "100 nirS WP_085938646.1 559 False 2\n", "\n", "[101 rows x 5 columns]" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Cluster results\n", "cluster_csv = os.path.join(OUT_DIR, \"cluster\", \"snekmer.csv\")\n", "results = pd.read_csv(cluster_csv).sort_values(by=\"cluster\").reset_index(drop=True)\n", "results[\"cluster\"] = results[\"cluster\"].astype(str)\n", "results\n" ] }, { "cell_type": "markdown", "id": "418d059f-4118-43c7-97ea-6d51a651c5a5", "metadata": {}, "source": [ "As seen above, the results table summarizes the input sequences as well as the cluster assignment determined by Snekmer. In the above table, each row corresponds to an individual sequence, and the columns summarize various aspects per sequence:\n", "\n", "| **Column Name** | **Description** |\n", "|-----------------|--------------------------------------------------------------------------------------------------------------------------------|\n", "| filename | Name of file containing given sequence |\n", "| sequence_id | Sequence ID, as taken from FASTA file |\n", "| sequence_length | Length of sequence (i.e. number of characters long the sequence is) |\n", "| background | True if sequence has been labeled as a background sequence; False otherwise |\n", "| cluster | Numerical cluster assignment, given as an integer between 0 and *n*, where *n* is the number of clusters determined by Snekmer |" ] }, { "cell_type": "markdown", "id": "d9422bc5-bd2c-4876-8f5c-86f2e68c120e", "metadata": {}, "source": [ "Recall that the demo files consist of 3 sets of sequences previously annotated to 3 individual protein families. To view the cluster assignments given by the Snekmer clusters (see `cluster` column), we can generate a summary plot of how cluster assignments are distributed across sequences of known annotation." ] }, { "cell_type": "code", "execution_count": 14, "id": "48ee5ea0-4b4d-4f13-9714-2664f58c4d2a", "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAA0sAAAKmCAYAAACc6QWeAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjcsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvTLEjVAAAAAlwSFlzAAAXEgAAFxIBZ5/SUgAAZzRJREFUeJzt3Qm8zGX///GP/di3EAmlCCXRYkkkSUlJ2nVHWpTuiPZSilKUaLuTRMudiopUFCktRLgRIilE7rKWfT3/x/u6/9/5zTnnmjmLc87MnPN6Ph7zmHNm/c53Zr7zfX+v6/pcBZKTk5MNAAAAAJBCwZT/AgAAAAAISwAAAAAQAS1LAAAAAOBBWAIAAAAAD8ISAAAAAHgQlgAAAADAg7AEAAAAAB6EJQAAAADwICwBAAAAgAdhCQAAAAA8CEsAAAAA4EFYAgAAAAAPwhIAAAAAeBCWAAAAAMCDsARks27dulmBAgXcOXLOgAED3Hpu3bo1qzmP4zsFxM93Lj99H/X7oteq35vcNnbsWPfctWrVyvXnRkqEJcSt5ORkGz9+vF1yySVWs2ZNK168uJUqVcpq165tZ555pvXt29c++OAD+/vvv2O9qDgMev+ee+4569ixo3ufS5Ys6d7r6tWr2wUXXGDDhg2z//73v3G/jidOnOh+UHWeiP71r3+5H2adWrRoEevFQRxYuHCh+0wPHz481osS94Id24ycVq9eHevFTejgwgEy5LbCuf6MQAZs27bNOnXqZDNnzgxdVrhwYStRooStXbvWfvnlF/v222/tmWeesTFjxuSLI1x50ejRo+2uu+6yrVu3hi5TUCpWrJitX7/enaZMmWIPPPCAPfjgg+48Xikkvfbaa3bddde5z24ivheBWbNm2YoVK6xu3boWD6pWreqWRefI3bD0yCOPuIMYffr0YdVn0BFHHGGFChWKeH206+IF3zng/9CyhLj0j3/8wwUl/aj069fPfvrpJ9u7d69t3rzZdu/ebYsWLbInn3zSTj755FgvKrJIweeGG25wQalevXouaPzxxx+2a9cuF5Z1/umnn1rXrl1t//79rpUROUPfp/nz51v58uXtmmuuSROeYm3w4MG2fPlydw7Eu++//961hkc6HX300Rbv+M4B/4ewhLizcuVKmzx5svt70KBB9tRTT9nxxx9vBQsWDLUwNWzY0O6++2535POKK66I8RIjs9555x17/PHH3d+XX365/ec//3EBuXLlyilamNq1a2dvvPGGe58bNGjAis4hQTDSd+nGG290f7/++ut24MAB1jkAIF8jLCHuaMc4cPHFF6d7e+1Up6YBkerbrH7k+/bts6FDh7pWKI2HKVu2rLVp08amTp2a7mOrq59aNtQNJSkpyd339NNPd61aO3bsyMKrM/vss8+sdOnSoQGywQ6p+rGH92lfs2aN23GtUaOGe26N1VJXtJ07d4Yea8mSJW75dKRSt1GoVMBUS0w0enx1q1EA0TgwdW884YQTrHfv3q6bY0YGm37xxReuu5m6a6gFMKNdIfV+qOud1K9f37UoqdtdNCeeeKILTdk5KDe9AhEKdOeff75VqVLFihQpYuXKlXPr96KLLrIXXnjB9uzZ42735ZdfusfR6xCdpx6joNukpvfupptuco+p9a/3QQcB1OK2adOmDC3ze++95wKlQqYOJmRlELJabP/973+7v9WF8KyzznLvsVr5Pv7446j3VSuvDmY0a9bMtUppPVWqVMm9r3osLV9q+ry//PLL7jWou5LuU7FiRdfNTmHN16KV3oByjW9Ud1wth75b+p6eccYZ7nl0XbT7H+62Ivw9Vsu3xlLqu6rtkrYbt912m23cuDF0e32vb7nlFjvmmGPcd1bfb7Web9++Peq61mPo+3/KKae45dJ9jz32WOvRo4ctXbrUe5/gs6mT/Pzzz3b99de77YW+cxoXqG2Murv6Xlf37t1Dy5z6M536s6ZW4M6dO7vHLFq0qJUpU8Ytnz6f+oxs2bLFMkrrX8+hdRnNjBkz3O302U+93cro9zdWDh06ZJ9//rndfvvt1rRp09B603ehVatW9tJLL0XcjufGb0Vmizioh4C2Y7rPu+++G/W2/fv3d7fT50Pfz5z266+/ut/s9u3bW506ddx3W9tbbaf0OxjpNy81bR+eeOIJt53WY2ibd+6557qu4unJyvYecSQZiDPvvvuutp7u9Nlnn2XpMWrWrOnu/9xzzyWfccYZ7u8iRYoklypVKvTYBQoUSB49erT3/gcPHky+/fbbQ7fVSfctVKhQ6P+6desmr169Os19r7vuOne9zlN744033HLo+nvuuSfFdb/++mvosd97773kcuXKub/LlCmT4nlbtmyZvG/fvuSPPvoouUSJEu6ysmXLutcT3OaKK66I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iv/vvPNO69+/vzsFNDZIfEEpCCwaR6Gj3Wrx0QD0aBo0aOC9fNWqVVa7du10lzm86h3jNpCfqNtpgLAEAADiXcKOsD7rrLPsjTfecAFl165drvXosccec918HnroIVfMIbBjxw53rm5AkQQtPEH3OAAAAAD5W8K2LD366KMp/lcXvPvvv99OPfVUO++882zAgAF20003uTLh2W3p0qWZanECAAAAkHgStmUpEs2fpMCkiltz5sxxlwXzMKkFKpKdO3e68/S64AEAAADIH/JcWJKgNPiGDRvceVDwYd26dRGDksKVShkTlgAAAADk2bCkQg3h45Dq1q1rxYoVs40bN9r69evT3H7BggXuvGHDhpafqBJZtJMm6Y0XmnjYVzlNl2VkUuKsWr16dY4/R6TXlt26devmnufLL7/M8ecCAADICxJ2zFIkCkRff/11ipLgGrfUpk0bmzJlio0fP9769OmT4j4TJkxw5x07drT86LrrrvNefsIJJ+T6sgAAAADxIiHD0qxZs9xcLQo34aWI1QrQtWtX163uoosuSlEqvG/fvi4sqdR4hw4dQl31Zs+ebSNHjnSlw3v06GH50dixYy3eff7557Z///5YLwYAAADykYQMSz/99JN1797djjzySNd6pKCzZs0amz9/vu3Zs8dVpRs1alSK+7Rt29Z69+7tSoo3atTIzj33XDcx7LRp09x8L2PGjHGPg/iUkfmrAAAAAMvvY5bOOOMMu+WWW6xatWr2/fff27vvvmtLlixxIejpp592l1WuXDnN/YYPH+5CUb169VxIUquSQtRXX31lnTp1islrSQTq1njbbbe5MV0qgqFujeqid++997rCGKlpTIzGxmiMjFoA1WKnYKsxZGeeeaZrGQy89NJL7nH1mEcffbQr+X7o0KEsj+tRl0rd7uqrr454G5WU1230WchuKioyZMgQa9WqlR111FFWtGhR99o7d+7sPpfRKLQrzNevX9+SkpLc/W+//XbvOg5uP27cONfFVO+L7qPPttZhtMqPAAAAyJgCydrjQrYI5lmKNA9TQGFAk+gGxScKFoxNZg3CR3ofgaZNm9qiRYtcqFGgUeudimIoGOg1f/fdd6Hy7EFYOvvss11XSIXYgwcPusdQN0mVc9fkwHPnzrWXX37ZtQDqtloHM2fOdJMCa74sTTCcOiyp9TD1suo11KxZ0z22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AAAAAPAo7LsQsaUJVXft2pVQb0OJEiWsQIECsV4MAAAAINsQluKQglKpUqUskezYscNKliwZ68UAAAAAsg3d8IAoNmzYYIULF3atZtdffz3rCgAAIB+hZSnOXTz0IytcrLjFowN7d9ukuy60vOytt96ygwcPur/fe+89e/HFFy0pKSnWiwUAAIBcQFiKcwpK8RqW8oM33njDnVetWtW1Mk2aNMmuuOKKWC8WAAAAcgHd8IAIlixZYosWLbKjjz7aBg8enCI8AQAAIO8jLCFurF692o0Nat26te3evdvuvfdeq1mzphUrVsyOO+44e/LJJ12lwMA999zjbn/55ZeneaxNmzZZtWrVrFChQvbNN9+ELu/WrZu7z5dffmmffvqpnX322VauXDl32bZt21I8RhCMrr76arv00ktdxT/dZ+PGjTm6HgAAABAfCEuIO/v27bN27drZqFGj7NRTT3WBZv369S489e/fP3S7gQMH2imnnGLjx4+31157LcVj3Hjjja7b3H333WdnnnmmdyzS+eefbzt37nTnp512WorS54cOHbJ///vf7u+uXbu66oSdOnWyAwcO2Ntvv52jrx8AAADxgbCEuDN79mzXIvTrr7+6ogpTp061r7/+2l32zDPPuDLlUrRoURdoihcvbv/85z/d7UUha+LEiS4ADRgwwPscus24ceNs7ty5ofOyZcuGrv/iiy9cQDv55JPtxBNPDIUmoSseAABA/kBYQtwpWLCgjRw50sqUKRO6TC1MagHSHFTz5s0LXV6vXj176qmnbPv27XbNNdfYjz/+aHfccYfrMvfmm2+6st8+HTp0iFqoIQhEQUCSc8891ypXrmzff/+9rVixIpteLQAAAOIVYQlxR+OU6tatm+byOnXquHN1rwt36623uvCjFqmmTZu6rnVqgQpu73PRRRdFvE7jpd5//30X2jReKaDgddVVV7m/aV0CAADI+whLiDvVq1f3Xl66dGl3vnfv3jTXjR492s1/9Pfff7sWqJtuuinqc9SoUSPiderCp5aqNm3auCIR4YKWJnX/Cy82AQAAgLyHeZYQd9Sik1kffvih7dmzx/2tLnIa16SiDJFEm1g2aDXS4/iKQ6gQhCr3qcpey5YtM72sAAAASAyEJSS8lStXhsYptW/f3nWhu/322+3VV1/N9GP9+eefNm3aNPf3b7/95k7RQhVh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0urVqyNeV6RIETv66KOtVatWds8991j9+vWz86kBAAAAIH7DkuZTAgAAAIC8ICYFHgAAAADA8ntYUlEHnQAAAADA8ntY+uSTT+y8886zUqVK2RFHHOFO+rt9+/buOgAAAADId2HpjjvusI4dO9q0adNs165dVqZMGStbtqz7+7PPPnPX9e3bN7ufFgAAAADiNyy98847NmLECKtUqZI9++yzoS54W7ZssW3bttlzzz1nlStXdrd59913s/OpAQAAACB+w9KLL75oSUlJ9tVXX9ltt93mWpQCamHq1auXzZw504oVK+ZuCwAAAAD5IiwtWrTI2rRpY3Xq1Il4G12n2yxcuDA7nxoAAAAA4jcs7du3z0qWLJnu7XQb3RYAAAAA8kVYql27tutmt3Pnzoi3UaEH3Ua3BQAAAIB8EZYuv/xy+/PPP61Tp062cuXKNNevWrXKOnfubBs3brQrrrgiO58aAAAAALJV4ex8sDvvvNMmTZpkn3/+udWvX98aN25stWrVctetWbPG5s+fbwcPHrRTTz3V+vXrl51PDQAAAADxG5aKFy9uX375pd1333326quv2vfff+9O4ddff/31NnjwYPc3AAAAAOSLsCSlSpVy8yk9+eSTriXp999/d5dXq1bNmjRpYiVKlMjupwQAAACA+AtLM2bMsHXr1rmudep6F1AoatmyZYrbLlu2zObNm2dHH320nX322Yf71AAAAAAQn2Hpt99+sw4dOrjwo1ak9Oh2l1xyiQtXKgCh1iYAAAAAyHPV8F555RU3X9KQIUOsdOnS6d5etxk6dKjt3r3bRo8efThPDQAAAADxG5amTZtmlSpVcqXCM+qiiy6yKlWq2JQpUw7nqQEAAAAgfsPS8uXL7bTTTsv0/TS+acWKFYfz1AAAAAAQv2Fp586dVrZs2UzfT/fZsWPH4Tw1AAAAAMRvWCpfvrz98ccfmb6f7qP7AgAAAECeDEsqFf7dd9+5gg0ZtWvXLps9e3aKMuMAAAAAkKfC0oUXXui64g0aNCjD99FtFa46dux4OE8NAAAAAPEblnr27Okq2z3xxBMuBB06dCjibXXdwIED3W11n5tvvvlwnhoAAAAA4ndS2hIlSth7771nbdu2tYcffthGjRpll112mTVu3NiVFJeNGzfaggULbPz48W4y2qSkJHcf3RcAAAAA8mRYkubNm9usWbPs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BMSBtWvXunNV4PIJLl+zZk2uLhcAAPFgxIgR7rx9+/aMJ0SuIiwBcSAoh1qiRAnv9SqdKqoGBABAfvLJJ5/Y6NGjXavSwIEDY704yGcISwAAAIhLqoDXtWtXV2hl6NChobFLQG4hLAFxoFSpUqEJ+Xx27tzpzkuXLp2rywUAQKxoQnZ1u9u6dav17dvXevfuzZuBXEdYAuJAjRo13Pm6deu81weX16xZM1eXCwCAWNiyZYu1a9fOjdXt3r27PfXUU7wRiAnCEhAHgm4FmmPJJ7i8YcOGubpcAADEYhzv+eef7yam7dy5s40aNcoKFCjAG4GYICwBcaBFixZWtmxZW7VqlS1cuDDN9RMmTHDnHTt2jMHSAQCQOzSP0sUXX2xz58618847z8aNG2eFChVi9SNmCEtAHNBM5Lfddpv7u1evXqExSjJs2DA3v1KrVq2sSZMmMVxKAAByzsGDB+2qq66yGTNmWMuWLe399993v49ALBVIVnkRADG3Z88ea926tc2ZM8eqVq3qfijUV1v/V6pUyb777js79thjY72YQJ718ccfpyhLrCPb+ok844wzQpf179/fOnToEKMlBPL+XEp9+vRxf19yySVWpkwZ7+00fumII47I5aVDflU41gsA4H+SkpLsiy++sMGDB9tbb71lEydOdLOUd+vWze3ARZqwFkD22Lhxozs4kVr4ZboNgJyhqneBDz74IOLtBgwYQFhCrqFlCQAAAAA8GLMEAAAAAB6EJQAAAADwICwBAAAAgAdhCQAAAAA8CEsAAAAA4EFYAgAAAAAPwhIAAAAAeBCWAAAAAMCDsAQAAAAAHoQlAAAAAPAgLAEAAACAB2EJAAAAADwISwCAuLRz504bNmyYnX322ValShUrWrSolS9f3po1a2YPPfSQrV27NnTbAQMGWIECBWzs2LExXWYAQN5CWAIAxJ1Zs2bZcccdZ/369bO5c+faiSeeaF26dLHmzZvbqlWrbODAgVanTh2bPn16TJezdevWLqStXr06pssBAMgZhXPocQEAyJKFCxfaOeecY3v27LF77rnH+vfvbyVLlgxdf+jQIZs4caLdfffdtm7dOtYyACDHEJYAAHEjOTnZrr32WheU1LXu4YcfTnObggULWufOnV2g+u2332KynACA/IFueACAuDF16lRbsmSJVa9e3R544IGoty1btqzrnhdNrVq1XDc5ny+//NJd161btxSX79u3z1588UU77bTTrGLFilaiRAn3OBdeeKG9/fbb7jbqdqf7zpw50/1/zDHHuP+DU+oAOG7cOGvTpo0bc5WUlGT16tVzYXDXrl1Ru/a99dZb1rRpUytdurSVK1cu6msFAGQ/WpYAAHHj448/dueXXXaZFS4cm5+oa665xiZMmOACSsuWLa1MmTK2fv16++abb2zHjh125ZVXWqlSpey6665z4e6PP/6wSy+91F2WmroMdu3a1YUlXX/qqae6wDRv3jx75JFHbMqUKS60FS9ePM19Bw8ebK+88oq1aNHCBTVa0QAg9xGWAABxNV5JGjduHJPn//XXX11Qqlmzps2fP9+1LAXUNfA///mP+/uII45wlffUCqSw9NRTT7nWp9SefvppF5R0O50feeSRodarW2+91UaPHu1C0xNPPJHmvq+//rrNmDHDWrVqlaOvGQAQGd3wAABxY/Pmze68UqVKMXn+jRs3uvNTTjklRVASdZ9T2fKMOnDggA0ZMsQVp1D3vSAoicqgP/fcc+6yl19+2bVApdajRw+CEgDEGGEJAID/74QTTnDhRt0Bhw4dar///nuW182CBQts06ZNrty55olKTV3vmjRpYlu3brWVK1emuf6iiy7ifQGAGCMsAQDiRtCaE7Tw5DaNTxo1apQVK1bMlSY/6qijrG7dutazZ0/79ttvM/VYwdxL06ZNS1H8IfwUjNFSqEqtRo0a2fSqAABZxZglAEDcaNSokQslapVRYYSc5Ov6JldddZW1bdvWJk2aZJ999pmreDdy5Eh36tu3rxuHlJnH1+S6KtIQTeouf0G3PwBAbBGWAABxo0OHDvbCCy/Y+PHj3Xifw62Ip7FBoip2qavVRasupzFTN9xwgzup9Penn35qV1xxhQ0bNsyuv/56a9CgQbrPrfLnQdc+FYMAACQeuuEBAOJG+/btXRBZt26dPfbYY1Fv+/fff9vSpUuj3qZq1aru/KeffkpznbrHZYS6y2m5FOQk/DmDMKZiDqlpnibNBaWWqS1btmTouQAA8YWwBACIGwomb775puuCpklb77vvPtu5c2eK26il58MPP3RzFn3//fdRHy8ou605iw4ePBi6XGW8dUpNpcHff/99V9o7nMLOnDlz3N9HH3106PJq1aq58xUrVqR5rGDc0/bt261z5872yy+/pLmN5m964403or4GAEDs0A0PABB345amT5/uJnrV/EPPPvusK9mtinJ//fWXm9BVcxspUIUHF59evXrZSy+95OZOql+/vjVs2NBVnluyZIn17t3bnnnmmRS3X7NmjXtetQgpjKm097Zt2+yrr75yoadjx44pyoerYt1rr71mV199tbVr187dTzSZrNx77722fPlyF4jq1avnSpIfc8wxLowpYC1btswt07XXXpsj6xIAcHgISwCAuKOCCD///LMrqjB58mRbvHixK7GtcUdBdTqNJwrGBUWigKWgc9ddd7nucGrJUbnuoEJd6rDUtGlTGzRokJsMVmHm66+/tvLly7tAo3mPUhedUIuRHkMV9LSce/fuTRGWChYs6CaX7dKli5tPSS1hKl6hx1TQ03JpLBQAID4VSFZ/BgAAAABACoxZAgAAAAAPwhIAAAAAeBCWAAAAAMCDsAQAAAAAHoQlAAAAAPAgLAEAAACAB2EJAAAAADwISwAAAADgQVgCAAAAAA/CEgAAAAB4EJYAAAAAwIOwBAAAAAAehCUAAAAA8CAsAQAAAIAHYQkAAAAAPAhLAAAAAOBBWAIAAAAAS+v/AYAr9ZPyhi95AAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig, ax = plt.subplots(dpi=150)\n", "g = sns.histplot(x=\"cluster\", hue=\"filename\", multiple=\"stack\", data=results, ax=ax)\n", "\n", "ax.set_xlabel(\"Cluster\")\n", "ax.set_title(\"Snekmer Cluster Assignments vs. Family Label\")\n", "g.legend_.set_title(\"Family Label\")" ] }, { "cell_type": "markdown", "id": "26aabae1-7c4f-492c-a783-b8b93c36150f", "metadata": {}, "source": [ "In this case, the true family labels are well-resolved by Snekmer's clustering algorithm. This result arises from the relative separation between sequences in each of these 3 families in terms of their amino acid recoding (AAR)-kmer profile. This will not always be the case for a given set of input sequences." ] }, { "cell_type": "markdown", "id": "dad14a7c-f33e-4e6a-bb19-305f6a1ec0b3", "metadata": {}, "source": [ "## Snekmer Model Mode\n", "\n", "We also train a kmer-based scoring model for the family of interest based on the prevalence of kmers in each family. The scoring model is then used to develop in-family vs. out-of-family classification models. Snekmer scoring output files can be found in the **score** directory, and model output files can be found in the **model** directory." ] }, { "cell_type": "markdown", "id": "5448f151-eecf-4472-8b1a-b272ccebfdba", "metadata": {}, "source": [ "### Kmer Probability Scores for Family Assignment\n", "\n", "For simplicity, below we will highlight one particular family chosen at random and display the kmer probability scores for assignment into the example family. However, Snekmer generates individual scoring models for each family, so feel free to explore the other family probability scores in the same manner." ] }, { "cell_type": "code", "execution_count": 15, "id": "8e1643c1", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "example family:\t nirS\n" ] }, { "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", "
filenamesequence_idlabelnirS_score
0nxrAWP_013249767.1nxrA0.026201
1nxrAWP_080885705.1nxrA0.025791
2nxrAWP_013249749.1nxrA0.035076
3nxrAWP_053381689.1nxrA0.013643
4nxrAWP_080885591.1nxrA0.027045
...............
96nirSWP_011383805.1nirS0.873887
97nirSWP_049724801.1nirS0.780674
98nirSWP_041099757.1nirS0.778474
99nirSWP_015258444.1nirS0.759532
100nirSWP_014238329.1nirS0.745210
\n", "

101 rows × 4 columns

\n", "
" ], "text/plain": [ " filename sequence_id label nirS_score\n", "0 nxrA WP_013249767.1 nxrA 0.026201\n", "1 nxrA WP_080885705.1 nxrA 0.025791\n", "2 nxrA WP_013249749.1 nxrA 0.035076\n", "3 nxrA WP_053381689.1 nxrA 0.013643\n", "4 nxrA WP_080885591.1 nxrA 0.027045\n", ".. ... ... ... ...\n", "96 nirS WP_011383805.1 nirS 0.873887\n", "97 nirS WP_049724801.1 nirS 0.780674\n", "98 nirS WP_041099757.1 nirS 0.778474\n", "99 nirS WP_015258444.1 nirS 0.759532\n", "100 nirS WP_014238329.1 nirS 0.745210\n", "\n", "[101 rows x 4 columns]" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "example_family = np.random.choice(families)\n", "print(\"example family:\\t\", example_family)\n", "\n", "# show relevant subset of columns\n", "seq_scores = pd.read_csv(\n", " os.path.join(OUT_DIR, \"scoring\", \"sequences\", f\"{example_family}.csv.gz\")\n", ")[[\"filename\", \"sequence_id\", \"label\", f\"{example_family}_score\"]]\n", "seq_scores" ] }, { "cell_type": "code", "execution_count": 16, "id": "ee50c08a-833e-48d9-ad47-fd40922df37d", "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", "
filenamesequence_idlabelnirS_score
52nirSWP_011748767.1nirS0.857745
53nirSNP_249210.1nirS0.920478
54nirSWP_014339158.1nirS0.861167
55nirSWP_043221900.1nirS0.926691
56nirSWP_041771853.1nirS0.895050
57nirSWP_013953868.1nirS0.905079
58nirSWP_085944417.1nirS0.893106
59nirSWP_011517656.1nirS0.927784
60nirSWP_041100219.1nirS0.909204
61nirSWP_011310590.1nirS0.955307
\n", "
" ], "text/plain": [ " filename sequence_id label nirS_score\n", "52 nirS WP_011748767.1 nirS 0.857745\n", "53 nirS NP_249210.1 nirS 0.920478\n", "54 nirS WP_014339158.1 nirS 0.861167\n", "55 nirS WP_043221900.1 nirS 0.926691\n", "56 nirS WP_041771853.1 nirS 0.895050\n", "57 nirS WP_013953868.1 nirS 0.905079\n", "58 nirS WP_085944417.1 nirS 0.893106\n", "59 nirS WP_011517656.1 nirS 0.927784\n", "60 nirS WP_041100219.1 nirS 0.909204\n", "61 nirS WP_011310590.1 nirS 0.955307" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# first 10 probability scores for in-family kmers\n", "seq_scores[seq_scores[\"label\"] == example_family].head(10)" ] }, { "cell_type": "code", "execution_count": 17, "id": "f54880e5-71ff-417d-a81e-e92b89800c09", "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", "
filenamesequence_idlabelnirS_score
0nxrAWP_013249767.1nxrA0.026201
1nxrAWP_080885705.1nxrA0.025791
2nxrAWP_013249749.1nxrA0.035076
3nxrAWP_053381689.1nxrA0.013643
4nxrAWP_080885591.1nxrA0.027045
5nxrAWP_053381686.1nxrA0.011141
6nxrAWP_053378142.1nxrA0.012402
7nxrAWP_053381277.1nxrA0.018167
8nxrAWP_080886776.1nxrA0.041373
9nxrAWP_053381280.1nxrA0.012130
\n", "
" ], "text/plain": [ " filename sequence_id label nirS_score\n", "0 nxrA WP_013249767.1 nxrA 0.026201\n", "1 nxrA WP_080885705.1 nxrA 0.025791\n", "2 nxrA WP_013249749.1 nxrA 0.035076\n", "3 nxrA WP_053381689.1 nxrA 0.013643\n", "4 nxrA WP_080885591.1 nxrA 0.027045\n", "5 nxrA WP_053381686.1 nxrA 0.011141\n", "6 nxrA WP_053378142.1 nxrA 0.012402\n", "7 nxrA WP_053381277.1 nxrA 0.018167\n", "8 nxrA WP_080886776.1 nxrA 0.041373\n", "9 nxrA WP_053381280.1 nxrA 0.012130" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# first 10 probability scores for out-of-family kmers\n", "seq_scores[seq_scores[\"label\"] != example_family].head(10)" ] }, { "cell_type": "markdown", "id": "1b678e7d-a6d6-435d-8d57-337a5a6adf95", "metadata": {}, "source": [ "Column descriptions are as follows:\n", "\n", "| **Column Name** | **Description** |\n", "|-----------------|--------------------------------------------------------------------------------------------------------------------------------|\n", "| filename | Name of file containing given sequence |\n", "| sequence_id | Sequence ID, as taken from FASTA file |\n", "| label | Label (i.e., family assignment) of the given sequence |\n", "| \\\\_score | Score for the assignment of the sequence into the given family. M inimum possible score is -1; maximum possible score is 1.0. |" ] }, { "cell_type": "markdown", "id": "4a5a0eba-fcd0-47b0-b30a-e32d778f60b6", "metadata": {}, "source": [ "Perhaps unsurprisingly, the kmer probability scores for assignment into the example family differ significantly for sequences that are in-family vs. out-of-family.\n", "\n", "To better illustrate this point, we can generate boxplots of the probability score distributions per family." ] }, { "cell_type": "code", "execution_count": 18, "id": "125b0907-bc71-49c9-8897-9b5273bc6cde", "metadata": { "tags": [] }, "outputs": [ { "data": { "image/png": "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AACAZBtF9uGHH7YjsPbo0cO8//77droSjSIr69evt9OTfPfdd6ZYsWLmoYceStRmAQAAAADJFmDWr1/ffPrpp+aGG26w82HOmTMn3XINVqupPxR8al0AAAAAQHJJWIApF1xwgVmzZo353//+Z2bNmmU2b95sXz/ppJNMmzZtzNVXX21rMAEAAAAAySehAaYogOzWrZt9AAAAAABSR8IG+QEAAAAApLaEBZgff/yxOf30081XX30Vcp3p06fbdSZOnJiozQIAAAAAkq2J7MiRI+1osWeffXbIddQPc926dWbEiBGmc+fOido0AKQ0DaJ28ODBnN4NBPD+Jvw+uVORIkVMWlpaTu8GACSVhAWYS5cuNY0bNzaFCxcOuY6WNWnSxCxZsiRRmwWAlKfgpV27dil/HHIzClVzpy+++MIULVo0p3cDAJJKwprIbt261Y4Wm5nKlSvbdQEAAAAAySVhNZilS5c2GzZsyHS9jRs3mhIlSiRqswAAj1fP+csUzu/jmAAhHDqWZnp8W5rjAwC5PcA844wzzNSpU81PP/1kGjZsGHQdLfv+++/NRRddlKjNAgA8FFwWyc8hAUKjAAYA8kQT2bvuusscO3bMdOrUyYwbNy7Dcr2mZcePH7frAgAAAACSS8JqMNu3b2/69u1rXnjhBXPNNdfYJrO1atWyy9asWWP++usvO9Jhr169zCWXXJKozQIAAAAAkq0GU55//nnz3//+15x66qlm165dZuHChfahv+vVq2feffddM2zYsERuEgAAAACQbDWYTteuXe1jy5YtdkAfqVatmh09FgAAAACQvBIeYDoKKAkqAQAAACB1ZFmAKarB1CTG27dvN1WqVDEdOnQw5cuXz8pNAgAAAADyWoC5dOlS8+abb5ozzzzT3HTTTRmWq6/l/fffb44ePep/rVixYmb48OHm2muvjX2PAQAAAADJNciPph1RgFmuXLkMy7766ivTr18/c+TIEVtzecUVV5hGjRqZffv22WB05cqV8e43AAAAACBZajBnzZplSpYsaacnCfTkk0/a57POOstMmzbNFC1a1P4/ePBg+3jllVfMq6++Gs9+AwCCOHSMwwKEwzUCALk0wFy3bp1p0aKFKVAg/Uf8/fff5ttvvzVpaWnmqaee8geX8tBDD9laz5kzZ8a31wCAoHp8W4YjAwAA8l4T2a1bt5oTTzwx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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAA2sAAAEcCAYAAABZDSzAAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjcsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvTLEjVAAAAAlwSFlzAAAXEgAAFxIBZ5/SUgAAUCxJREFUeJzt3Qd4VFX+//ETWqgiRXoTBJEoRUARBFwbiEqxt10U6yqigH1lBUFRVARlVwUEdhVFRQHpiIoiSG8CgkpTmoAgvTP/53N+e+Y/mcxMJslNMpl5v55nnkmm3Db3nnu+pyb5fD6fAQAAAADElHy5vQEAAAAAgLQI1gAAAAAgBhGsAQAAAEAMIlgDAAAAgBhEsAYAAAAAMYhgDQAAAABiEMEaAAAAAMQggjUAAAAAiEEEawAAAAAQgwjWAAAAACAGEawBAAAAQAwiWAMAAACAGESwBgAAAAAxiGANAAAAAGIQwVoeNGvWLJOUlGQfscptn7Y10MaNG/3v6e9Y1bt3b7uNl1xyiUk0P/zwg7nppptMxYoVTYECBexxaNiwYY6se9SoUXZ9NWrUyJH1IW/YvXu36datm6lVq5ZJTk72pyF//vlnbm8a4BmlezqvlQ7mZXfeeafdDz2HcvLkSTNw4EDTqFEjU6xYMf/1PH78eP9nDh06ZHr16mXOOeccU6RIEf9nli1bloN7glhzySWX2PNAeTSv3ssLCuT2BiQKnSB9+vRJ9ZpOnOLFi5vTTjvNVKtWzSZcf/nLX0z79u1NoUKFcmzbFDS5m0NePZGjpYReN4TTTz/dPProo7m9OTFnw4YNpkWLFmb//v32/9KlS5uCBQuasmXLmrxm586dZujQoWbq1KlmzZo1Zu/evaZkyZKmfPnypmbNmubiiy82LVu2NM2bN8/U8jdt2mTefvttM3PmTPPLL7+YAwcO2OOl5deuXdsuW9dzgwYNPN+3RKKM3WWXXebPpCnNLFWqlP07X77YK2+cP3++GTZsmJkzZ47ZvHmzOXbsmClXrpw9L+rXr29atWpl96dq1aq5valAqkBRaVogFdYpf6L7pYKm888/31x33XVZLrzTvXfIkCH2b+V1dG1I4cKF/Z+5+eabzaRJk+zfCtbcZ3Q/SgQq6NZDv0u4oDezec9wfD5fpteD7EWwlgtcoiOHDx82W7duNVu2bDHff/+9+fe//23KlClj+vXrZx544IGQ3y9atKg5++yzPQ3W3MXsVbDmtk/bGkuU4dO+Vq9ePWKwpuBE+6AgOpG88847NlA766yz7I2icuXKObp+BVM67lld75dffmlrB1Uj46gE9/jx42b16tX24TICmblBjR492tx333229NdRpkb/q2ZSj88++8yeZ7Fcg5wXfPHFF/a6VSbtq6++skF2LNJ51L17dzN48OBUBXLK6KrgQIHb4sWLzciRI03nzp3zfO0JvKeaYwUsSgdzS+D6dU7v27fPpqPr1683kydPNn379jXNmjWz9woVPoSiVhlKx/UcTPcXfVcGDBhgHnvssTSthFS45tLnjz76yKbliUb3X+VVWrdunaVgLVzeM6+qVq2aPbcyWoCc2e/FDB9yxHPPPaccoX0EO3HihG/FihW+1157zXfmmWf6P3fbbbf5Tp06le3b9vXXX4fdNq9t2LDBvy79ndNGjhxp1129evUcX3de0K5dO3t8evbs6curNm3a5CtevLjdjxo1avhGjBjh27Nnj//9P//80zd9+nTfQw895CtVqlSGl79gwQJfvnz57PLr16/vGzt2rO/AgQP+93fs2OEbP36878477/TVq1fPs/1KVAMGDLDHunHjxr5YpvTbpW0dOnTwzZ0713f06FH/++vXr/e9++67vrZt2/q6dOmSq9sKBNM9Uedu586d07y3d+9e31dffeW79957fcnJyfZzhQoV8k2cODFT6ae7Tvbv3x/yMx9//LF9v0yZMr5EzzO2bt3ak+UkQna/devWdj+1z/GGmrUYkD9/fnPeeefZh2rT7r77bjNmzBjzwQcfmHPPPdc8/fTTub2JSBCupkhNzfIqldqqSaKa13zzzTdpakdVanzllVfaxyuvvJLh5Q8aNMicOnXKNm379ttv05SCn3HGGaZDhw72oZpzxP85qRoI9cGRtm3bpup745x55pn20aVLF84L5ClqNaAm3Xp07drVXHPNNea3334zt9xyi1m6dKlt9h2twNYI4a7pvHDNAzkqt6PFRJGR0g2VxjZq1Mh+9rTTTvP98ccfGaoJ+/HHH20JWO3atX1FihSxJWFVqlTxXXjhhb6nn37avh9cmhbuEVjKFlzSoxqFK664wnfGGWf4kpKSUpVmuO9rWyPVrP300092HZUrV7YldVWrVvXdf//9vi1btmS6Zixc7V2k/Qwu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W3O15c+f37Rr187DPQAAAACAOOyzVqhQIdO1a1fzwgsvmIceesjMmDHDP2rjwIED7ZxorVu3No0bN/Z/Z8iQIfbRqVMn079/f//rFStWNLfeeqsZPXq0efDBB82YMWNMgQL/d1ieeOIJs3PnTtO5c2dTrly5LG2zpgg4fvw4A40AAAAAcWzdunWmYMGCiRusybPPPmtmzpxp5s6da2rXrm1atmxp50KbP3++OeOMM8yIESNSfX7Xrl1m7dq1Ztu2bWmWNWjQIDNv3jzz6aefmrp165omTZrYUR1Xrlxpl60AMKsUTLrBSpCYF61k91x7AGIL1z6QmLj2E1vBggX9FUkJG6xp6OCvv/7a1pJ98MEHZvz48aZ06dLmzjvvNH379g07yXUoZcuWNQsWLDC9e/e2yxk3bpwpX7686datm+nTp485/fTTs7y927dvz/IykHe5qRvCTe0AID5x7QOJiWsfXkny+Xw+z5YGICQSbSAxce0DiYlrHwk9wAgAAAAAxDuCNQAAAACIQQRrAAAAABCDCNYAAAAAIAYxwAgAAAAAxCBq1gAAAAAgBhGsAQAAAEAMIlgDAAAAgBhEsAYAAAAAMYhgDQAAAABiEMEaAAAAAMQggjUAAAAAiEEEawAAAAAQgwjWgBi3bds2U6BAAZOUlGS6dOmS25sDeEbndEYeNWrUsN/buHFjqv9D2b17t3nxxRdNq1atTLly5UzBggVNyZIlTcOGDc3f//5389VXX0W1Tfny5bPfa9asmRk0aJA5fvx4xH2aOHGiad26tTnttNPs45JLLjGTJ08O+dlNmzaZnj172m2sUqWKKVy4sClevLhp1KiReeGFF8zBgwdDfu+bb74xffr0MVdffbU544wz0j0WoRw7dszUq1fPflfpSziHDh0y/fr1MykpKaZIkSKmTJky5qqrrjKzZs3K0PqAeKdrUNdTZhw9etS8/vrr5qKLLrLpTaFChUzFihVNkyZNzMMPPxw2DUFiSPL5fL7c3ggA4b322mvmscces38r8/f777/bTB2Q1915551pXvvuu+/MunXrTIMGDWxgFahs2bLm1VdftcHamWeeaapXr27/DjZu3Di77H379tng58ILL7QBm4KfH3/80fz888/2c+3atUuTCXKZrc6dO9vnkydP2nXMnTvXnDp1ylx22WVm2rRpIQMcBXPdu3e3711+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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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MS3XjUsBSGDGyyWu559/vu/QoUOplrtlTz/9tK9Fixb277x589rzU79VsOBNGSitp8TYUWKq19544w1fVoM37UdmKTBTgOCOmbvWlOi715RZiMa5OWTIkJTPcO/3zxQp0FHm1X2mrn93Lbt9femll9JsQzco3bDcejonXPrhn0GLlNInnZ86X116F+qaVtDifzy1rgvs3b4MHTo0bKZVBQI1a9ZMOUdd2prR4E03+sz69ttvU6Xp+h7u+7v9+te//hX0vUpT/dN7pbkuAFXaqLQjWNrpVfCW2fPGP02fPHmyDdb0t64F/7RN32Hp0qVBt62Mlbu23UPH0X1/PZRB9GqfvT7XMxK8KfOszKX+VobYP83Q+TF9+vQMbzejwZsoWNT6+o0OHz6cbvCmPIGu21B5kg4dOthrOty93D/PonuG/vf/zfV7+/8GCrA2bdqUZt/d/t19992+m2++OdVvqGf/4z9q1KhU56H+9s/P6HwJdswze7/8/fffw6Z7euhYRit/6n+du+vO/5rQQ0Gojn+4906dOtWen+47+9+3FNCJgmb9Xlrmn167e312Bm+vvvpqqt9F15WuJ/e/AtDAfIuMHDky1XdzBQiZDbZDIXiLgoxeHLpQXQKjxCPSG2T16tXt6yr98C9FVImzSmRVWh94kkRSWur/HdzNTheOq51Qab5/AhhJ8KYLURlJldCJSlGUwLkbnp5VeuhV8Bbp+/2/a7Cb66RJk1Ld7F3th2pJPv7445RETBn3kydPBt2+y3So9kgJsSgYUWmSS8BVYptRypy596uUcPny5fZ1JaJfffWVTVy0TOdJsOApkpKncLL6/bSfl112mV2uTPLBgwdTluncdQlfsAya23edn3poX1yGYffu3WlqsLU/LgGdOXNmyusqLHE3zMxSTYY7R5Th17mREaodVc253q/MwgcffOD7888/U5avX7/eBpeBNZRenJu6mSrt0Xdwv53WVW2uKPBzmeebbrrJlharJFb++9//2t9VQbOWjx8/PtU27r33Xvu6Sh9V6+D2Qc9KP959992QN+Rw0gss9PlqeeDSHWW23G+iY3ndddelZMSVoQiVadV5pdJffS/3nZVJDyxICEUl6S4zp4K2jNL17DKFKnBQIYw7hirdf/jhh+0yHf8FCxakeq/SUv+0Vdt3JdeqPdL57h8Ueh28ZeW88U/TdT0obXPfTyX0Cmhd2tayZcs029Y6eo9LP5QJ869ZV0uP999/37ZM8Wqfo3WuRxK86RipAEm150pT9TurlYECFXf/C5ax9jp4Uw2z2yftS3rBW0byJJHcy59//nm7jn7Dd955J+UeoN9Q23AtnFTzGng83P7pmtdvrHTctVrRvdMVgOk6UoZe66j2Vueqjrcev/76qw1iXIATWAOX1ftlJNdkNPKnyrOp4FPXnX9LHh3ft956K+W+qr/D/bZKb1R77Y6L0ihdg265arv1/R977DF7vYlqId39Vcd9zZo12RK8ffjhhynnw8CBA33bt29PuZ6VLlxxxRV2uQp6/PNW+h3dfVc10O4+Ksrf6L1PPvmkb8qUKb6sIniLgoxeHOIyb7rpRJKw6eR2rwcrWQ8lo8GbHqp5CyeS4K106dIpF6Q/ZUhcacZrr70Wc8Gban1cJiEwAywKktz2VYMabPvhboCuVlMlpxnVtm3blPcGy1CqVMhlNvxrJbwO3rLy/VRDonND6yiRds0mXGFGsBuC/77rod8gPaqdcIGsP91AXAY5s02MdNP2L4lUZurGG2/0DRgwwPf111/79u3bF/b9LtOhG3qwkrxQvDo3lVENRU3ztI6agISioFLr1K9fP+j+qWbAS+llYlQK7b5bsBJwZe5dcKfauVCZVp2DGfk9AilodPvh0iE12VRNp2q3QzVpdVwGITDI8OdqGgJrkRSw6HWlrYE176LMiH+Nh9fBW1bOG/80Xc2qAmtxAs/twCZILuOl4DwjmaRYPNcjCd7UfC3YvVXBv1tHaWq0gzed0257qkHJzuBN54yuV6XloWpjlda7WtXA4Nu/SXaoGnkFfC6fpuA/lOuvvz5oS4ms3i+jEbwF1uD5P9Jrkh3Ycizw3hr426rbTbCmj7p/uXUCu0eI7m2uIKx///5RD97279+fUrA1bdq0oN9Z9xA1IdU6aprvH+jqNdWS+jcFjQYGLIkRmg9KNARvJIoVK5Yyp9H27dujtl/ahkZJyypNhaABHQJprphbbrnF/j1mzBgTS5YvX25Wr15t/37++eeDjgjXvn17OyKoaOStUPT+YDSQhWheMP+O2+nRZMQaJVGefPLJoNM0aC5BzcGT3r55IbPfT6NcfvTRR/ZvjWj27rvvmjvuuMOOyqpRyzQRczh16tSxv0F63KAkbpAS/+uoQ4cOqdbJKA03/NNPP9nR1mTfvn12gAodk2uuucaOkKYJQf2nKPDnvv99991nf7PsPjefffbZoK8fPXrUDqQk4dIADf4iy5YtM//9739TXteQ+NFOn4LRUOKiAUJat26dZrnmqnrxxRft3xo0yo1kF0gDjUT6ewRz55132jStUqVK9n/NmfXJJ5/YaUs0v6LmptMADzpugTSdhKZB0L5q6PT0jr3mFtQ147i0tGPHjjaNDVS+fPmQ09NkVVbPG3+9evWyc3oF0nXlBn8J/P3c9aQRZCMdRTZez3XRFCXB7q0aGE2D4rj0IrvyMBnJx3hF9w6d/7pmQ82jqbT+xhtvtH+7e2cgXZMPPPBA0GUajEqDsWhoeaXV6Z0jobYRjfxAZukcDvVwI4Cmp127dvZZIzeHG71S11WwkUTbtGkT9l6ke5vmwcyu83jcuHE2f6W033/f/Cldvv3229P8zi4d0OA9mpYompgqIE7phqYTWlMOKMHSjVgXkU44Lyf91hxgwW4MGXXFFVeEXaYbpy5MJRixMummGxlQF6rmVgnl6quvtiNuhRpJUDc1HcdgzjrrrJS/lemPdK68xYsXp0ygedVVV4XdN01IHc1jm9Xvp4nqNVWDRtx7+OGH7WuaD0ijM6ZHmeD06EaoqTh04wgM3kRzbOn8U4ZXI0dmZr5CXXfuHJg6daqdx1FzkelmppEoFdzpofl5lLl0NzFl6DX3o0QShHp9biod0US7wWgocGVqJVgQFIy+j5s7SMG3jsMzzzxjhwNXQUKLFi3sSHXR5L5ruOtCI+UpU6AMn9ZXRjcz51Ykw6zreyu40kO/hTL+mttK834q0FRmQXN+3n///Snv04TeonOndu3aIT/fBWyHDh2ymQWl1co4uIAmvXQ31PDtWZHV88bfRRddFHR9nfcaxVVzpvoHCidPnrRTd2T0eorXcz3cMXLpr6akyO5gKru56+Wbb76xBROhHDx40D4HTj7uqAAuVP7JbeOvv/5KdV8LpOsv3DaikR/IrEgn4VZ69d5779m59lRoqOAmWHCnuStDHX9XkBjIXUM6LtWqVQu7jo5JtM363++s7xnuXFL6Hfg7a17GWrVq2TRA16WmvlAAqPuL19PBELzFCJe4qpQ+Uh9++KHN+CozoIky9VDCowRIJTj33ntvqtKwzPAicJNw84i5Zbrx6jjEysSRO3futM8qaStQoEDI9VzJuls/WIlfKMqEOJGWdAVuK9yxdfsWzWPrxfd7/fXXzfjx421mTBTgRDJ5ZiTnpz5LNynNCRbs5qBMvo6htq05txTMZVaTJk3sw78GRZlzTQOye/duW0Ksub7cvIL+JZWawDu7z02lN64GP5ALKiVUzUgg/9Ji1QgrbVLhwbBhw+xDQatqS1XgpNJr1Vp6zX3XcNeFJh7WsdP3CnVsvEr7VGCimiI9XECm46IJ4t955x17beomr8yNqzVwx17rZvTY6zrXZ0aaNngtq+dNRtMW/3RFAaz7PyPXU7ye65k5RtHiHyBmJB/jBff7qRBDj8yeb+GuebcNHctIzhGXuc+O/EA0/fbbb7aiQIGZo6BStUzu3uGOR7hjH+p7u+8cK+fxH//7nVWY4wp0Ij2XFKCpEFiteVRoosIcPXS8VJijQh3lL7wIymk2GQNUGrRhw4aUyD0jM8SrBmbatGm2eZkyhbrZq+TgqaeesqU7anqTFUwei+wwZcqUlMBNVEvlxfmpmgllkuXnn3+2GarAhz7DbTurc74FOvvss23TL30f1/xLhS5OsGYk2Snc8fNvhqeMyP/6SId9qHmof9CimiXVQGrictX06KalpooK1pWxfeONN0ysilbapwyPampVy6t5styx9q9pdsdehS2RHHc9dK7FgqyeN1mR2esp2c91L/g3/81IPsYL7vdT07xIfrsff/wx0+mhalQivSYTwd/+9jcbuCl9UeGmCkgUpKnQS4WP/vftRPjOp/73O6vVRCS/sQpo/akATjVvKrRVk+YLLrjApilqeaGWRaqZC9VUPyMI3mKAgi93wmT0JqaMgKpl33rrLdv8R6Vfo0ePtoGdqpjVf8hV4+ck/ws81DKVrvjXFLrSlnClH2rCEC2uFE41JseOHQu5niuR8qqkPiP75r/9YNyywGMbS7Zs2ZLSh6BevXr2+bXXXstywYNoAmT/UvX0qHllRieZjYSavqnmT9asWZPyun+zjFDNbHLq3MzsvgXSzaxv377mu+++s81tdBO79NJLbZrnaiy85L5ruOtCaYrrk5Cd122w/jEuqA92Xuj3jaQmwZ+uc5cJjSTdDSYraa9X501m6Lu7puEZ2Xa8nuuxVgAnagnQrFmzbN22+/2ieb5lxzZi8d48e/bslH7TGp8gMB8Rrp9bPCrvwe+sFnCqZXv//fdtoLZr1y7b7FTHTsc0K617HIK3HKbA6qWXXrJ/lyhRIqVDbWap6lkBm6tBUHW2f5Tv30QqO0tJfvjhh3SXKePu3ydLnYdFJTyhMqjz5s0L+bnuu2b2e7rmb2qCFK4mSDdocQNWZAf1U3LfTxmF9PZNmYpY6UvoT5kaDeygggYFOHPnzrVNDlSDrP5pWe30664Dfaba7Yd7uL5fbsADrxUtWtQ++zdzVCGLa9o2adKkmDo3/ft/ZGTfwlFQoCY4yujpOOjadPvoFXdswl0XKnl3TQuz87oNpCBLTTgDzwvX307XhwogMkK/mSsECZfuhisccWmvMhqhhEp7o3HeZOT8cn1rMrLteD3XY4X6cqqvr2gQHndOZxd3vej4RtLULSvbULASqg9xNGU1P5MZ/td/qMGbEu2cvvh/v7P6wXo1AJGaEWsgnFdffdX+v2TJkiznbQjecpCqUjWAgX5IN9KOG60mPenVpvmP0OUfsPl3oFbJYHZRqYNKkQOptHns2LEp1dT+XP8PJVbqDxXs+L355psht+m+a2a/pzJAbrCAAQMGpGpa4+iG5TIxbvSh7KDzxI2ENGjQoKBt+FXKq6r77N63jNBxVW2XMjdqK67zVs0K1R9HNWZqspFZKrhQB2t3bil4CvfQyHyiZpbBfutwmeD02uKrlsPd5AIHCFHfVNH3dmlBLJybRYoUsQVBopvO77//Hnb9wEERwtUI6vd2tUOh+txlljKPogEkNIBBIAVt/fr1s3+rSYseXlP6HC5wchQouE74/udFjRo1Ulph/N///V+6LQwCj71LS9XMyb9Gz1GBmNLkUPz73gUL0vR+9euKxnmTVe560vnvAopEPddjgQqHVSOj+7SOY+/evbN9H7p27WqDZeUx3Eiy4a5NN3BJRmiQIzfQyBNPPJFuHszr8zqr+ZnMUIWCE6zWWIWeuv8kko4dO9r8le7pPXv2DBssq5DZ//cIlw6Ey5dnRuKlJDFOP7bawQ8ePNi2g3dDeKuWQf3UIqWqbGXgFLxoVBx9ruhE0zJ1gBdlgl0prNSsWTOlhFGZxewqxdGFoJHv3EhgrhRSAYhO+MqVK6cZulr77pqa6SLyHw5bpSIaaCLUYAPiMmX79++3Hckzw5WUKMDQDUqdUN33UfNUlylWZ9Ss1ppmlBJN1aZpNEUdR1fDqnNBmRYNk62MqvofhBr+OCepb6YG2XEBqBvxT00LRo0aZRM3ZW41CmVmfPzxx/b7K8HUaHDpufXWW+2zStsizfSJrlsNhKKOyepX599RXTdwXWc6j3WjE/WB86eh4JVZ13WgknplinXOOhqCWcGG+s5k97mpVgEaAU2ZIg29r6Hu3fcQNQdRAYFqNgMDRA0YoQIp1ab639R0vqq2VQUOrtm3l26++eaUEfj0m2okURdc6xhpuQI71zw3GpSxU78nBWRK6zXaq0u7dH2qSY6a17lAUxmzwOHH//GPf9hCBQ0YoGZoEydOTFWroAIB/R46ZwKHt1f6r/RTx10DZqgW0qX1CsaUdrp7RjA6Z9yAH2rio5oGvV/vUa2lAstw78/KeZNVupfqetP+6rdW2uJfcKiAVPfNwGMWj+d6TtFx0Xmg+4pqOlVDo3yFCguyu7+baJsuaNQ1rebIymc5ug+oP6LSUQVg+jujFByqwEPPSufVHFbXlX/BncYu0DqqydUIsl5y+ZmVK1emNGWMNk0zotYhLkBWvstRGqp0IDtGgMxOJUuWtP2RRQXKGsVdaaZL7/SsPLf6sCoP7wqI3fqquVNzSTeOhSjt15QCyiOI0hfXuiHTojqLXJIKNQmiJv7TLPH+E7eWKVPG995774X8rFATWPq/rodmptdkx25SZj008/1//vOfNJ957733pqxTuHBhX5UqVezkl7169crUhJCRTNKtiXPdRMaatV7bdct0XBYsWBD0s5csWWK/h1u3YMGCdgJEd2w1CWuoiWblyiuvTFmu7et76uE/sWJ631UTs2rCV//9dROL61G3bl3ftm3b0rwvq5OMR0LH1X9fdKx0jNz/lStXDjpJr5eTdGfm+2niap13ev26664L+t7evXun/OaacDaj+64JfrXOzTffHPF3atSokX2PJtmOVLNmzVJdizpXSpQokeocdxMmh5p0fP369b7atWunrKt0olSpUqk+I3DS12ifm47On5o1a6bZN3cdusdVV12V6n3+y/QeTQrtf25qv/2vw0hFkjZp8vc6deqkOvZu4lW3P6F+i3ATI0fq0KFDKRPNu4f+13FTWu3/erly5YKm06LJlcuXL5/qM5TOu4nlw01uqzTV/zvrXFLa69LCzz//PGzaowlq/fdV73e/nyYr/uyzz4Lem7J63kSaJob7nXbt2pVq8l+dazoW7vsHm9g8Fs/1SCbpDrzvepXGu23re7g8jM7VwHRNjxYtWvh++eWXkJ8V7Um6RRNA657hnx7qOtH1EngtBk5aHm7/AmmCb5eX8c97FShQINU2BgwYkOHvEO7c16TP5513XspynWMuP6OJsjOTP43EpEmTUuUr9fu7c0DXxYwZM0Kei179tuHS/FYeT9LtvPvuu6nupfp99TsHpt+jRo1K810C3+Of7z/rrLN8q1ev9mUVUwVEmRtCVaNgqUmBOkOqJEPth1ViqrloMjMvm0p2VJukpjlqb67SRJUYqq25SpY0V02PHj2Czkei4alV06VSRJXquyYiwZo1ekUl4Sq9HThwoC2tUimm+vqodkijc4UatrpBgwa21EOl1GqepipqjcCm5qaa6DK99u1qkqnSNvU70Pd0nVAz0vRATSQ0l5ZKa9W/SL+pmx9LzZNUyh1uuPZo0vY1yqhqZVQzqUEaVBun46YSYk0InB1zDWWU5rTS76HrIVQfMzV/0bmiUkbVUOj8CTZhb6haPY345F+jFgmtqxFcVZqm3zmSqRV0DWo/dX6qZlkDnqjGTfkrDUev2m41uVHJZah5bPS6mkyqj56ua9WiqvZNc1mpCZuuk2Bz1GXHuanSV9UcqTmp0gyVWuv7Kd1SWqO0TLXqqv3zpyaLOjYqpdZv7dJCvadly5bmkUceseduNCht0fmiSd91PFVSqtoPpXsqLVZNvq6RaNFIg/q+qsHV5L76bVXrp+aPuj51XqnUVr+r0rJQ16hKcVXzplEpv/rqK1vqrrRLv7F+Fx0/TUHgJvcN7Pun303pn/rNKc3V+aTaKKWd/sOSB6NaItXqqoZf15OOn+5dev9zzz2XqhTey/PGC7ruVDOkli2qhda+qoZApd0asl/bDXY9xeO5Hm3+Q6brnFG/eqXbOlZKZ3Q+hJoYOzspj6VzXWm4rnv9HqoR1DWn313psK4n3RdV85FZasWgGlXVrOm6Unqva1L5O40kqLyZamsinSA+Ujr2us/06dPHPqvm3dV6ZaYZaKTUakVpmPJuLh3Q7+9q/KM1BUZOe/DBB22rBeWXNZ+y0m/9zkqrVdOrc0hTdfnPpan/1eJH557yEWrFo/RD14yOk/L7miYo0u5R4eRSBJflTwEAAHFDQ1yfc8459m9lTGJlqgEAQHj0eQMAAACAOEDwBgAAAABxgOANAAAAAOIAwRsAAAAAxAEGLAEAAACAOEDNGwAAAADEAYI3AAAAAIgDBG8AAAAAEAcI3gAAAAAgDhC8AQAAAEAcyJvTO5Asypcvbw4dOmSqVKmS07sCAAAAIEp+//13U6RIEbNjxw7PPztua94WLVpkXnnlFXPTTTeZSpUqmVy5ctlHZu3bt8/06NHDVK1a1RQoUMA+P/744+bPP//0ZH8VuJ04ccKTzwIAAAAQm5TnV94/GuJ2nrcbb7zRTJw4Mc3rmfk6u3fvNs2bNzfr1q0z1apVM02aNDErV660j5o1a5o5c+aYUqVKZWl/69SpY5/1mQAAAAASU50o5vvjtuZNwVbv3r3NV199ZbZv325ryzJLNWwK3FSLt2bNGvP555+bFStWmMcee8z89ttvpmfPnp7uOwAAAAAkTc1boIIFC5pjx45luOZNgZ+aXebNm9e2Tz3zzDNTlunzKleubPbu3Wv++OMPU65cuUzvHzVvAAAAQOKrQ81b9EybNs2cPn3atGzZMlXgJqrNa9++vTl16pSZOnVqFPcCAAAAAMJL+tEmly1bZg9Eo0aNgh4gvf7RRx+Z5cuXp3Mo4SXVoB49epSDGuO13VkZJAgAAAAZk/TBm5pKippOBuNe37x5c4aqSQOtX7/eVK9ePYM/T/JS4NamTZuc3g2EMX36dFOoUCGOEQAAQDZJ+uDt4MGD9kAULlw46AHSHA1y4MABE+sSqbYqUb5HIkuk34haRAAAEA+SPnjzWqghQUPVyHmJ2ipkpxtuuCFhDji1iAAAIB7E7VQBXilatKh9Pnz4cNDlboK9YsWKZet+AQAAAIC/pK95q1Klij0QW7duNcG416tWrWriyaFGdxqTO+l/XiC00ydNkcWjOUIAACBuJH3uvn79+vZALF68OOgBcq/Xq1fPxBUFbnny5fReAAAAAPBI0jebbNu2rcmdO7eZOXOm2blzZ6qDo0m6J02aZPLkyWOuvfZar445AAAAAGRY0gRvb7/9tqlVq5Z59tlnU71eoUIFc/vtt5vjx4+bhx9+2Jw8eTJl2VNPPWV27dpl7rrrLlOuXLkc2GsAAAAAiPNmk1OmTDH9+/dP+V/BlzRr1izltd69e5t27drZv3fv3m3WrFljtm/fnuazhgwZYubOnWvGjRtnA7wmTZrYUSNXrFhhatSoYQYPHpwt3wkAAAAAEi54U43YvHnz0rzu/5rWiUSZMmXM/PnzTZ8+fcyECRPM+PHjzZlnnmm6d+9u+vbta0qWLOnpvgMAAABARuXyaWZnRJ2b5y3UPHBeOHLkiGnTpo39+1CTLgxYAoRz6oQpsvBf9k/meQMAAPGQ70+aPm8AAAAAEM8I3gAAAAAgDhC8AQAAAEAciNsBS5COUyc4RADXCAAASCAEbwmqyJJPc3oXAAAAAHiIZpMAAAAAEAeoeUtQhxrewVQBQHpTBVBDDQAA4gjBW6LKk4/gDQAAAEggNJsEAAAAgGStedu7d69ZtGiR2b17t6latapp0aJFNDYDAAAAAEnD05q3Xbt2mTvuuMOUL1/etG3b1tx1113mww8/TFmuv0uVKmV+/vlnLzcLAAAAAAkvt5e1baphGzNmjLngggvMww8/bHw+X6p1brrpJnPgwAEzduxYrzYLAAAAAEnBs2aTAwcONOvXrzcvvPCC6dOnj33tnXfeSbWOat3q1atnfvrpJ682i1BOn4zvY6PAP96/Q6LLndeYXLlM3OL8AgAAyRq8TZgwwdSsWTMlcAulevXq5scff/RqswihyOLRHBsAAAAggXjWbHLbtm2mfv366a6XK1cus3//fq82CwAAAABJwbOat+LFi5vt27enu56aVpYtW9arzcJPwYIFzfTp0xPimKi/5LFjx3J6NxBGgQIFbGFMolw7AAAASRO8NW3a1Hz//fdm48aN5pxzzgm6zrJly8zSpUvNLbfc4tVm4UcZ6UKFCiXMMSlcuHBO7wIAAACQeM0mH3vsMVtT0qFDB7N69eo0y9etW2c6d+5sa1QeffRRrzYLAAAAAEnBs+BN87o99dRTZvny5XaqgFq1atmaIDXjU1+4888/36xYscI899xz5pJLLvFqswAAAACQFDydpPuVV14xn3/+ualbt6757bffbC2b+sH98ssvpkaNGmb06NGmf//+Xm4SAAAAAJKCZ33eNIKkato6duxoH7t27TKbNm0yp0+fNpUqVTIVK1b0alMAAAAAkHQ8C95KlixpLrroIjNnzhz7v0aUZFRJAAAAAIixZpMlSpQw1apV8+rjAAAAAADRCN4aNmxo53ADAAAAAMRw8Pb000+bBQsWmLFjx3r1kQAAAAAAr/u8aXLo++67z9x2223muuuuM+3btzdVqlQxBQsWDLr+pZde6tWmAQAAACDh5fJpPH8P5M6d24426T5Of4dz6tQpk0zq1Kljn1euXJnTuwIAAAAgDvP9ntW83X333ekGbAAAAACAHA7eRo4c6dVHAQAAAACiNWAJAAAAACAOat78HT9+3CxdutRs27bN/l+xYkXToEEDkz9//mhsDgAAAAASnqfB29GjR80LL7xg3n//fXPw4MFUy4oWLWoefPBB07dv35AjUAIAAAAAohy8HTt2zFx11VVmzpw59v969eqZs88+2w5ismnTJrNs2TLz+uuvm1mzZpnvvvvOFChQwKtNAwAAAEDC86zP25tvvmlmz55tLr74YttkcsmSJWb8+PHmyy+/NIsXL7bBW8uWLW1wN2TIEK82CwAAAABJwbN53urXr2927Nhh1q1bZ4oVKxZ0HTWlrF69ujnzzDPN8uXLTTJhnjcAAAAg8dWJ4jxvntW8KWi77LLLQgZurt+b1lm/fr1XmwUAAACApOBZ8JY3b15z+PDhdNfTOloXAAAAAJADwVvdunXN999/bzZs2BBynY0bN9p1NJgJAAAAACAHgrcHHnjAHDlyxDaLHD58uP3b0d8jRoywyzSdgKYMAAAAAADkwIAlLoAbNmyYnR5AypQpY593795tn7UprfPuu++aZMOAJQAAAEDiqxMPA5aIJuf+4osvzCWXXGLy5ctndu3aZR/6W9MEaFkyBm4AAAAAkFWejxxy880328fJkyfNnj177GulS5dmkBIAAAAAyIKoDfuoESU1nxsAAAAAIMbmeRs6dKhZsWJFyHW0TOuEG5ESAAAAABDF4G3IkCGmV69epnjx4iHX0QTePXv2tAEcAAAAACAHgrfvvvvONGjQwFSpUiXkOlWrVrXrfPvtt15tFgAAAACSgmfB25YtW0y1atXSXa969epm69atXm0WAAAAAJKCZ8Fbnjx5zLFjx9JdT+ucOnXKq80CAAAAQFLwLHirWbOm+fnnn83hw4dDrqNlWqdGjRpebRYAAAAAkoJnwdstt9xi9u7da+677z5z6NChoIHb/fffb/bt22fXBQAAAABELpfP5/MZDyg4u/DCC83q1atNuXLlzO233277t8n69evNZ599Znbu3GnOO+88s2DBAlOkSBGTTOrUqWOfV65cmdO7AgAAACAO8/2eTdJduHBhM2PGDHPXXXeZ77//3k4dkCtXLrvMxYeXX365+eSTT5IucAMAAACAmAnepHz58jaAU82anjUCpVSuXNlcddVVpmnTpl5uDgAAAACShqfBm6MgjUANAAAAAGJwwJJQjh49anbs2GFOnjwZ7U0BAAAAQMLKdPB24MABM3/+fPPbb78FXb527VrTpk0bU7x4cVOxYkVTrFgx06lTJ7N9+/as7C8AAAAAJKVMB28ff/yxad68uZk8eXKaZappa9mype33pho3DViiybm/+OILO2jJkSNHsrrfAAAAAJBUMh28/fTTTyZ37tx2dMlA/fv3t9MCnHHGGWbixIm2lm7x4sWmSZMmtkbu3XffNV5QEPjCCy/YCcILFixozjrrLNO1a1ezbdu2DH3O2WefbUfGDPX49ddfPdlfAAAAAMj2AUuWL19u6tata+d083f69Gk7p5uCnpdeesm0b9/evt6gQQPz5ZdfmmrVqpkJEyaYnj17ZnqnXV+6K664wsydO9dUqFDB3HDDDWbTpk1mxIgRtjZQr2tbGdGlS5egr5coUSJL+woAAAAAORa8qWZNfdqCBXV//vmnyZcvn+3j5k993y666CI7kXdWDRgwwAZoarr5zTffmKJFi9rXBw8ebHr16mVr4H788ccMfebIkSOzvF8AAAAAEFPNJg8dOmROnDiR5vVFixbZ53r16tnBSgJVqlTJ7N+/32TF8ePHzdtvv23/fuedd1ICN1GNnratZp1uXwAAAAAgaYO3smXLBu0L9vPPP9smkxdeeGHI5o5ZbYY4a9Ys89dff5nq1aubhg0bpll+yy232OdJkyZlaTsAAAAAEPfNJtX8UX3XFCC5fm27du2y/dqkdevWQd+3atUqO7BIVixbtsw+N2rUKOhy97qacGbEoEGDzPr1602BAgVMnTp1TIcOHWyQCgAAAABxG7w9+uijZvz48aZjx47m1ltvtUHOuHHj7MiSVapUMe3atUvzng0bNth54Tp37pylnf79999TmmAG417fvHlzhj73qaeeSvX/E088Yf7xj3/Y/nORUtAXjIJC1RQCAAAAQLY2m9R8bX369LH93kaNGmWGDBlig6pChQrZER/z5k0bF7733nv2OdhAJxlx8OBB+1y4cOGgy4sUKWKfFUhG4vrrr7c1hgr2Dh8+bFasWGH7zmluuvvuu89OdwAAAAAAcVnzJppj7brrrrOBj5pMVq5c2dx5553mnHPOCbq+miP26NHDtG3b1sSSoUOHpqk9e+ONN0ytWrVMt27dzNNPP22nIojEypUrM1QjBwAAAABRD95c/7JQfc+CTd7tBTe6pGrJQo2EKcWKFcvSdu69917z/PPPmzVr1tg55DSZNwAAAADEVbPJnKQ+dbJ169agy93rVatWzdJ2cufOndJPbfv27Vn6LAAAAABIuuCtfv369nnx4sVBl7vXNd9bVu3bty9VPzoAAAAAyAlxGbxdfPHFdq44jeC4dOnSNMvHjh1rn90UBpml/mtqMqmBUdT/DQAAAABySlwGb/nz57dTFcgjjzyS0sdNBg8ebOd3a9WqlWncuHHK62+//bYNwJ599tlUnzV16lTz/fffp9mGPkPTIPh8PjvipLYJAAAAAHE7YElO0UAiM2bMMLNnzzY1atQwLVu2tEP9z5s3z84599FHH6Vaf/fu3bYWLbDv2vz5803fvn1t/zg1x1Qtm+ajU9PLkydPmssuu8y88sor2fztAAAAACABat6kYMGC5ocffjC9e/e2AdeECRNs8HbPPffYwKtatWoRfY7mnNMk3MWLFzezZs2yTS7XrVtnLrnkEjNs2DAbIGruOgAAAADISbl8aheYzTQIyBlnnGGSiZvnLdQ8cAAAAADiX50o5vuzrebtxIkTZvz48eamm24yZ511VnZtFgAAAAASQtT7vKkp4ieffGK++OIL8+eff9oBQPLkyRPtzQIAAABAQolK8LZ27VobsI0ePdps2rTJvqagrXnz5ub22283t956azQ2CwAAAAAJy7Pgbc+ePWbMmDE2aFuwYEFKwJYrVy7798aNG+2IjgAAAACAbO7zdvz4cdsc8vrrr7f92Lp3726H3tdQ/fpbQVyLFi3sugRuAAAAAJADNW+auHrcuHFm//79toZNw/VrUuu77rrLXH311fRrAwAAAIBYCN40CbaaRFaoUMG8/PLLdhTJIkWKeLlvAAAAAICsNpvMnTu3rXHbvn27nSj7pZdeMqtXr87sxwEAAAAAohG8bd261QwaNMjUq1fP/P7777b27YILLjCNGzc2b775ptmxY0dmPxoAAAAAECCXT9VnWaTZwz/++GPz6aefmm3bttnmlKqZu+KKK8yvv/5qA71Tp06ZZBbNmdYBAAAAJH6+P0ujTfrv4Kuvvmpr4GbMmGE6d+5sBzD59ttvzZYtW+w6nTp1MhMmTLAjVAIAAAAAcqDmLZijR4+a8ePHm1GjRtkg7uTJk7ZGrnjx4nZwk+HDh5tkQs0bAAAAkPjqRLHmLWrBm79du3bZJpUK5BYtWmSDuGRrRknwBgAAACS+OrHebFI039uBAweCLtOk3T169LCTdutLPPPMM15tFgAAAACSgmfBW8mSJU3r1q3TXe/88883AwcO9GqzAAAAAJAUMj1Jd6ASJUqYatWqefVxQELYu3evmTx5slm6dKk5cuSIKVSokGnYsKFp166dKVWqVE7vHgAAAJIxeFOGdP369V59HBDXjh07ZoYOHWq+/vprO1iPv4ULF5oRI0aYa665xnTv3t0UKFAgx/YTAAAASdhs8umnn7Z92saOHevVRwJxG7g9+eSTZtKkSTZwK1eunKlSpYqpXLmyfdb/el3LtZ7WBwAAALKt5k3Nwe677z5z2223meuuu860b9/eZlQLFiwYdP1LL73Uq00DMUU1bmommTdvXnP69Gmzc+fONOtoEns9tJ7WVxAHAAAAZMtUAcqIagoA93H6OxymCkAi2rNnj+nYsWOqppIaLrZt27a2j5v6wE2bNi3V0LEK8lRjTR84AACA+FcnilMFeFbzdvfdd6cbsAGJbsqUKSmBW5EiRWyN2tatW81PP/2UMmBJixYtbIA3aNAgc+jQIbu+3te5c+ec3n0AAADEMM+Ct5EjR3r1UUDcUr9Pp27dumbAgAFBByxRbVuTJk3M3Llz7Wvz588neAMAAED2BG8AjNm+fbs9DPnz508JzEI1m9RyrXf8+PGU9wEAAABRD95mz55tm4NF4q233jI9evTwatNAzDh69Kh9VkCmZpP9+vUzTZs2TbXODTfcYGvoXnjhBdts0v99AAAAQNSnCmjVqpV58cUX7eh6oezYscO0adPG9OzZ06vNAjElX758KX8HC9wcva7ljmrgAAAAgGwJ3sqWLWv791x88cVBJ+seP3687QP07bff2nWARKS+bNn5PgAAACQPz4K3X375xVx//fVm3rx5pkGDBmb48OH29cOHD9v532655Razf/9+M3DgQDvyHpCI/IMwNYv0H8DEn2s26eTJkydb9g8AAADxy7Pi/tKlS9vatWHDhpknnnjCdOvWzf6/Zs0aWxNXq1YtM2rUKNOoUSOvNgnEHPVzc9SfrVevXmkGLPn666/NqlWrUr2vaNGiObC3AAAAiCeet9W6//77TcuWLU2zZs1sJlVuvvlmG7gVKFDA680BMaV48eKpauE0ab1Glgyc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4MCB5tChQ0Hf99NPP5m+ffuadu3ambJly6Z7LII5fvy4qV27tn2v0pdQDh8+bAYMGGDq1KljChUqZEqXLm2uueYa8+OPP2Zoe0Ci0zWo6ykzjh07Zt58803TvHlzm97kz5/fVKhQwTRp0sQ89thjIdMQJKdcPp/Pl9M7ASC0N954w/z973+3fysz+N///tdm8oB4d88996R57eeffzbr16839evXt4GWvzJlypjXX3/dBm/nnHOOqVq1qv070Pjx4+1n79+/3wZDF110kQ3gFAytXr3arF271q537bXXpskUucxXly5d7POpU6fsNmbPnm1Onz5trrzySjNt2rSgAY+CuyeeeMIuu+qqq0yBAgXMN998Y44cOWL+8Y9/mEcffTTV+pMnTzbt27c35cuXN7Vq1bLP+/btM3PnzjV//fWXDZhmzpxpzjjjjFTv03FZtmxZqtdCHYtQ+vTpY/r162eUBciTJ485efJkmnUOHjxoLr/8crNw4UJTqlQp06JFC7tf2j+t/+GHH1KgBPgFbyqQyWi2+s8//7TpyuLFi20hkwK4s846y15/ixYtsgW45513nvn111851vh/FLwBiF3169fXncBXoUIF+zxmzJic3iUgarp06WLP8xdffDHkOhs3brTrVK1aNc2ySZMm+XLlyuXLmzev77XXXvMdPXo0zTqrV6+226lRo0aaZfrcYLfGuXPn+goWLGiXffLJJ2mW//rrr748efL4ChQo4Js9e3bK62vWrPGVLl3a7s/atWtTveePP/7wrVixIs1n/fXXX74rr7zSbqtXr15plj/55JO+AQMG+KZPn+5buXJlyGMRyqpVq3z58+f3devWzb5X+x3Mo48+apc3btzYt3PnzpTXZ82a5StatKj9jE2bNkW8XSCRrVu3zqYtGfXYY4/Z66xBgwa+rVu3plk+b948X9++fT3aSyQCgjcghv3yyy82Ua9cubJv5MiR9u927drl9G4BMRm8HThwwFemTJmQAVaghQsXRhy8yYMPPmiX3XXXXWmWPfTQQ3ZZjx490iwbPHiwXaZgKFIzZ86072nYsGHY9bZv356h4O306dO+Sy65xFeuXDnf3r17QwZvx44d8xUuXNguV7AW6LnnnrPLHn/88Yi/E4C0zjrrLHstffvttxweRIQ+b4Af15dG/VTU1OmZZ56xzZHU/Oncc881r776aqomEU8//bRd/9Zbb01zHHfv3m2bPqhJkpqCOWrOpfeoz8j06dNts6SSJUva19R8wt8nn3xin++44w5z8803m8KFC9v37Nq1i98NCDBy5Eh73al531133ZXu8WncuHGGjqGaMcrOnTvTLHPNL2+55ZY0y9xr6g8XKTWfEvV98dL7779v0yM1xw5sjulPzUvV301pn5pxBVK6JRMnTvR0/4B4zAuE6vPm/zlqxt2zZ0/b5FvX9+OPP27Xcfdz9V8FIkHwBoTozN+6dWszbNgw22FYGZVt27bZBLx3794p6/Xv398OLvDFF1+Yf/3rX6k+4/7777dt1Z999llzySWXpNnGp59+ajv+qx+Onps2bZoq4Vf/mtGjR9u/lRFV350bb7zR9jUZM2YMvxsQ4Ouvv7bPt99+e1SOzYEDB+yz+s/5U6HL77//bv9WehCocuXKtr+e+sMoA5ceBU0asEQ0KIlXlB4pDVP/mvSCWzdYigZPCDYIgwYukY0bN0b0nYBEzgukRwGgBjJSAZP6rF5//fUphSdKH+S9997LcH85JKnIKuiA5OCaY+nRqlUr2/fEWbBggW1epKZEap7l33+kUKFCvmLFivk2bNhgX/vggw/sZzRt2tR34sSJoM3C0uu/NmPGDLuO+rw5U6dOTflcIBFlpdlkxYoV7es///xzprcfrtnkpZdeapeNGjUq1evLli2zr59xxhkhP1f9WbTO8uXL0yxT80V9bz2uvfZa20dO6954442+w4cPe9Zs8qabbrJ98tQPz//7Bms2+dtvv9ll6j8YbB/GjRuXcqzUvBtI9ryArsHAtMP/c5o3b+7bt29fmm29/PLLKevUqlXL98wzz/jGjx/v27JlS5S/JeIVNW9AEBoeXM2LNLqjo1I31ZCpVFyjrznnn3++HQFPpfJ33nmnbW6kEefUxHHUqFEhh+FWifptt90W8vi7JpP+JeRXX321LfVfsGCBWbNmDb8d4GfPnj32WbVcgTSKo5osBz7SG8FNNeAa/VLTC/znP/8xN9xwQ5rrVqPCia75UIoUKZKq9i6wlks193pMnTrVfg81xf7ggw/s8PxeUPPGL7/80tYY1KxZM9311TRMQ5UrvgtsVSAfffRRyt/BvhOQbHmB9AwdOtR2kQj01FNP2YeaUio9euWVV0yHDh1sjdwFF1xga+SUDgEOwRsQhNq2a2jeQC7To+ZH/h5++GEbjM2ZM8fOB6XMmOZsCZdJUrOJcE0slNHSjUP93RwFgq5JmAvuAKTPP0Dyf+zYsSPo+m6eN/VZVSCjDJSaQmsagnDzomWG5nhTkKQMmppfDh8+3AaKdevWtcOHZ5WCK01ToPRIzbgjoe+uQE+efPJJM2LECDt3nvrw9OjRw/bxc8dB6RSQiDKaFwjFzdkWjK4f9aHTtfXWW2/Z/u1VqlSxy1auXGkLjvQaARwcUlwgRGYqmGLFiqVMqBlIGS7Nv6b+HyqV69atW9hj6xLnYCZMmGAzXFdccYUd9MSfq4lTfzjaxwNp+2Fp0JJg1/T/Rli2jzZt2oQ9dJrnTQ/VsmkONlG/l2C1UOqPKiqJT68PmUtDQgVMKm3v2rWr+eqrr+z3+Nvf/pbl6/y5554zW7duNf/85z/tgAuR0uTAeqhmUfuk46vBFjRnnSbudn12wg18AiRbXiCj93tH9/ru3bubsWPH2v6xq1atSplHUXmCzz77LEP7jsTlbfEhkCAyU5KszNbRo0ft32rSqAyPy9QFE26ibVerps8JNtiJMnkqpdOocS1btszwvgKJSBN7azCBJUuWmIsvvjhLn6WBBfwNGjTINm165JFH7KAFKpEPzJipaaaCNNdE0p+CJ/F/XzgawEgl/suXL7eDglSrVi3T30WjXCq90QBLegTSROQaDc9NNO4mR1c6o6ZeykCq2aWOrZptqxagdu3a5sUXX7TNOrOyb0As86pWOdz9PhR1yVChsNIV1firtltdMwCCN8ADa9euTenn1rZtW9vkUSVo/v1CIqVhyL/99lv795YtW+wjXJBH8Ab8P6rxVp8xjcaqZoJeUtPBGTNmmG+++cb07ds31bWtfiwK4NTkUYFjYIGLrmHVoilw8+87kx7Xd09DiWc1QFLB0k8//RRyuVsWOF2JKJhzAZ2jZp0K+hQke92MFMD/Ty1wFLwFa1GA5ESzSSCLNHS/mjKqxH3w4MF2kBI1s1IfkXHjxmX489Q0Qp+puaH8m3n5P1QSL5qiINJmG0Ci0wAkato3a9Ysex16TQMJuEITNWvy54b0V5OnQO619u3bR7wtNb9WIKjaLzVVzArV0odKS0T9+tz/rgYuPWo6Kek1DwcQXnrNotetW2efK1asyKGERfAGZFG/fv3M/PnzbcbsgQcesM2IlHHUyFHK2Pzxxx8Z+jzXZDLcXFWaDFQT56qUfPLkyfyGwP/6nqnQRAGP+oqpqaNryhzYhDFcjXYomsPNzbX42muvpVqmQTwUBGlgk7lz56aqldecbaqd0jr+PvzwQ7Nhw4Y021HzRA1UpH6vCgoD55XLLmoF4Oavc/Td1VxSAamaj3bs2DFH9g1IFC1atLDplusX60/3d6UpogJdQAjegCzQ6JIvvfSSOfPMM23bdKdx48amT58+dnQ21QZEOuCAphlYtGiRbVp17bXXhl2XUSeBtFSIohpvNWFWH7WyZcuaq666ygZDWqbmf2q+qMEALrroIlOjRo0MHUZd1woO1WzSf6RK9U9TsKiacDVl1vWrQE/98DT0v2rlNWqlPxXyVK9e3dSpU8f2I+vUqZNthqjX1L9Fr2u6gEAK+jSqrR6uxk+j3rnX9PBilEodIxUUKT1TxtGNgqcCKwWywWoZAWSM7vvqV6pm0rr+dW9X2qE+b0qzlKY8+OCDKdc6QEN1IJM0IImaS6rfhzJyyiT60zDbX3/9te2/pkEA1Ccu0lo3zfGSXgdnzQOlz3TzQrmR9oBkp+unVatWtsRa18eyZctsLbUCOgUfyigpUFJfEgViGaFgTJ+vfq0KyPxr4HQ9KkBTEDdz5kz7moYHVxB53XXXBe1Hp0BNNXU//PCDrWkrUaKEDb4UKKnmPtjokKo5nDdvXqrXjh8/nuo1NbvMKu2bRtxUM1SlZRq8QUHq3//+d9unMH/+/FneBpDs1H902rRp5rvvvrNzSi5dutTmK1QorEITpVfqzws4uTRTd8p/AAAAAICYRLNJAAAAAIgDBG8AAAAAEAcI3gAAAAAgDhC8AQAAAEAcIHgDAAAAgDhA8AYAAAAAcYDgDQAAAADiAMEbAAAAAMQBgjcAAAAAiAMEbwAAAAAQBwjeAAAAACAOELwBABJarly5wj4uu+wyEyvOPvtsu0+B9JqWAQCSW96c3gEAALJDly5dgr5eq1YtfgAAQFzI5fP5fDm9EwAARIuryYqH29369evNiRMn0gSU+g5Vq1Y1mzZtyrF9AwDkPGreAACIEdWrV8/pXQAAxDD6vAEAYIyZOXOmefTRR029evXMGWecYQoVKmRrwJ555hnz559/pjlGP/74o60Ru+eee8zOnTvNvffea8qXL2+KFCliLrnkEjN79uyUdd977z37ufrMypUrmz59+pjTp09H3Oct0NixY+16d9xxR8h1unXrZtcZMWIEvy8AJAiaTQIAElqkzSabNWtmli1bZoMsBVhHjx41ixcvNtu3bzd16tQxc+fONUWLFk0VvF1++eXm+uuvNytWrDCnTp2yn6GmjfPmzTOFCxc28+fPNx988IEZNmyYXTd37tzmp59+MgcOHDDPPfecGThwYJrgbfPmzWn2NbDZpJpWVqlSxezbt89s27bNlC5dOtX6Bw8eNBUqVLDb0/5rXwAA8Y+aNwAAjDEvvvii2bFjhw28VLM1efJks3HjRluDtXLlSjN48OCgx+mrr74yLVq0MGvXrjVjxoyxQZ4+6/Dhw+bWW2+1n/XLL7+YKVOmmEmTJtnl+fPnN0OGDLFBVmbky5fPdO3a1Rw7dsx88sknaZZrP/TZd955J4EbACQQgjcAQFIINVWAq8265pprTIkSJVK9p0CBAjbIyps3r5k4cWLQzy1evLgZOnSoDaicJ554wn72qlWrTL9+/VL1Zatdu7Zp166dDe4WLlyY6e+joFI1a6rVC/Thhx/a5/vvvz/Tnw8AiD0MWAIASOqpAvybQqoJomrHfv31V7N///6UfmmqKVPNWjBNmjSxfeT8KQgsVaqU2bNnj2ndunWa91SrVs0+q0ljZqkZZdu2bc3UqVNt/zrV/olq+VR7qP1q2LBhpj8fABB7CN4AAElh5MiRYZerWaQGJ1F/soyoWLFiyKBQwVuw5S5gVLPHrHjwwQdt8KbaNxe8uZo4at0AIPHQbBIAkPTUD61Xr162f5iCPDWl1IAlGjhEDw3+EfJGmjv8rTS95Vlx7bXX2sFV/v3vf9uaQu3zqFGjbHB4++23R227AICcQfAGAEh648ePt8dAoz+qeaWaJKq/mxw5csQOZBKL8uTJY2vY1H9u9OjRZty4cXYEyk6dOplixYrl9O4BADxG8AYASHoKeKRSpUppjsUXX3yR7jQDOem+++6zA6qouSRNJgEgsRG8AQCSXs2aNe0xGD58eKo+bxot8umnn47p46MmnZprbsmSJXYOOc1Td+GFF+b0bgEAooDgDQCQ9P72t7+Z8uXL25EmzzvvPHPbbbeZq6++2jRo0MC0bNnSNqOMZRq4xH8KAQBAYiJ4AwAkvdKlS5sFCxaYO+64wxw/ftxOvK1pA/r3728+++yzmD8+CjA1z1yhQoXsxNwAgMSUyxfLDfkBAEC6FGAq8NRgK+lNiQAAiF8EbwAAxDH10WvatKlZtmyZmT9/vv0bAJCYmKQbAIA4pKadEyZMsAHbypUrzY033kjgBgAJjj5vAADEocWLF5sRI0aYP/74wzaZ1EiZAIDERrNJAAAAAIgD1LwBAAAAQBwgeAMAAACAOEDwBgAAAABxgOANAAAAAOIAwRsAAAAAxAGCNwAAAACIAwRvAAAAABAHCN4AAAAAIA4QvAEAAABAHCB4AwAAAIA4QPAGAAAAAHGA4A0AAAAA4gDBGwAAAACY2Pf/AdmkICrtp5MRAAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "for fam in families:\n", " example_score_output = pd.read_csv(\n", " os.path.join(OUT_DIR, \"scoring\", \"sequences\", f\"{fam}.csv.gz\")\n", " )[[\"filename\", \"sequence_id\", \"label\", f\"{fam}_score\"]]\n", "\n", " labels = example_score_output[\"label\"].unique()\n", " palette = dict(zip(labels, sns.color_palette(\"tab10\", len(labels))))\n", "\n", " plt.figure(figsize=(6, 2), dpi=150)\n", " ax = sns.boxplot(\n", " x=\"label\",\n", " y=f\"{fam}_score\",\n", " data=example_score_output,\n", " hue=\"label\",\n", " dodge=False,\n", " palette=palette,\n", " legend=False\n", " )\n", "\n", " ax.set_title(f\"Distribution of {fam} Scores for Sequences in Different Families\")\n", " ax.set_xlabel(\"Family\")\n", " ax.set_ylabel(f\"{fam} Score\")\n", " plt.tight_layout()\n" ] }, { "cell_type": "markdown", "id": "fdc98b0f", "metadata": {}, "source": [ "We can assess how well the scores perform using the weights determined for each family. Note that it is immediately obvious that each of the family scoring methods performs well in identifying in-family sequences versus out-of-family sequences.\n", "\n", "Not all family scoring methods perform equally well in terms of differentation between sequences belonging to different families. Differing scorer performances can be attributed to a variety of factors, e.g. parameters such as the alphabet and k, existing levels of similarity between sequences in different families, etc. The specificity of a given family kmer probability scorer is also impacted by (a) the selected family sequence set, and (b) the sequence set of the out-of-family kmers. In other words, as in other machine learning problems, the curation of the training set will strongly impact the resulting model.\n", "\n", "The probabilities and scores assigned to each feature in the kmer set is also computed and output into a dataframe. The contents of one of these dataframes is as follows:" ] }, { "cell_type": "code", "execution_count": 19, "id": "0178e92c", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "example family:\t nirS\n" ] }, { "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", "
kmersamplebackground
0CPPPAPCA0.267661NaN
1PPPAPCAP-0.021455NaN
2PPAPCAPP-0.010466NaN
3PAPCAPPA0.002355NaN
4APCAPPAC0.020408NaN
............
4115PACACCAC0.020408NaN
4116ACACCACP0.020408NaN
4117CACCACPP0.020408NaN
4118ACCACPPC0.007588NaN
4119PACPPCCP-0.479592NaN
\n", "

4120 rows × 3 columns

\n", "
" ], "text/plain": [ " kmer sample background\n", "0 CPPPAPCA 0.267661 NaN\n", "1 PPPAPCAP -0.021455 NaN\n", "2 PPAPCAPP -0.010466 NaN\n", "3 PAPCAPPA 0.002355 NaN\n", "4 APCAPPAC 0.020408 NaN\n", "... ... ... ...\n", "4115 PACACCAC 0.020408 NaN\n", "4116 ACACCACP 0.020408 NaN\n", "4117 CACCACPP 0.020408 NaN\n", "4118 ACCACPPC 0.007588 NaN\n", "4119 PACPPCCP -0.479592 NaN\n", "\n", "[4120 rows x 3 columns]" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "print(\"example family:\\t\", example_family)\n", "pd.read_csv(os.path.join(OUT_DIR, \"scoring\", \"weights\", f\"{example_family}.csv.gz\"))" ] }, { "cell_type": "markdown", "id": "8cffa038-14c8-4ce0-9c5d-90f29649d0f2", "metadata": {}, "source": [ "In this view, the relative weight of a given AAR-kmer to a given family assignment is summarized. Each column displays the following information:\n", "\n", "| **Column Name** | **Description** |\n", "|-----------------|--------------------------------------------------------------------------------------------------------------------------------|\n", "| kmer | Amino acid reduced (AAR) kmer |\n", "| sample | Weight of the AAR-kmer toward family assignment based on prevalence in sample sequences |\n", "| background | Weight of the AAR-kmer toward family assignment based on prevalence in sample sequences; `np.nan` if no background sequences are given |\n", "\n", "Note that this example does not include any sequences specified as background sequences, and thus the `background` column does not contribute additional weights in scoring.\n", "\n", "The model objects can be loaded (via `snekmer.io.load_pickle`) and then applied elsewhere, e.g. to a new set of unknown sequences." ] }, { "cell_type": "markdown", "id": "82772d09", "metadata": {}, "source": [ "## Snekmer Search Mode\n", "\n", "Say a user trains the four models above, and would then like to score and evaluate sequences with unknown family assignments. The user can use `snekmer search`, which uses the kmer basis set for the desired family to create kmer vectors for unknown sequences, then apply the family scorer to the vectorized unknown sequences, and finally use the model to predict family assignments for the unknown sequences.\n", "\n", "The results from `snekmer search` on the demo files are shown below:" ] }, { "cell_type": "code", "execution_count": 20, "id": "5d6e4d18", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "example family:\t nirS\n" ] }, { "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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
filenamesequence_idsequence_lengthscorein_familyprobabilitymodel
0nirS.faaWP_011748767.15960.806921True0.847682nirS.model
1nirS.faaNP_249210.15680.903336True0.898777nirS.model
2nirS.faaWP_014339158.15590.843952True0.869435nirS.model
3nirS.faaWP_043221900.15700.922663True0.906984nirS.model
4nirS.faaWP_041771853.15700.878081True0.887088nirS.model
5nirS.faaWP_013953868.15540.872977True0.884587nirS.model
6nirS.faaWP_085944417.15290.873901True0.885044nirS.model
7nirS.faaWP_011517656.15490.897850True0.896333nirS.model
8nirS.faaWP_041100219.15790.887953True0.891791nirS.model
9nirS.faaWP_011310590.15750.942577True0.914811nirS.model
10nirS.faaWP_014422487.15740.872136True0.884171nirS.model
11nirS.faaWP_085938646.15590.913921True0.903348nirS.model
12nirS.faaWP_071946734.15750.932024True0.910740nirS.model
13nirS.faaWP_046857961.15790.970848True0.924897nirS.model
14nirS.faaWP_013651333.15850.867557True0.881879nirS.model
15nirS.faaWP_013029265.15770.921728True0.906601nirS.model
16nirS.faaWP_045480144.15770.893515True0.894365nirS.model
17nirS.faaWP_014237143.15760.962037True0.921877nirS.model
18nirS.faaWP_011386514.15680.889133True0.892342nirS.model
19nirS.faaWP_009205117.15760.946725True0.916364nirS.model
20nirS.faaWP_031269533.15840.907522True0.900607nirS.model
21nirS.faaWP_044029534.15810.805285True0.846656nirS.model
22nirS.faaWP_007089813.15750.893495True0.894356nirS.model
23nirS.faaWP_012179840.15830.805569True0.846835nirS.model
24nirS.faaWP_011289048.15760.976724True0.926851nirS.model
25nirS.faaWP_048708996.15750.920702True0.906179nirS.model
26nirS.faaWP_011805163.15740.921624True0.906558nirS.model
27nirS.faaWP_012250943.15600.698289True0.766772nirS.model
28nirS.faaWP_013518994.15740.880298True0.888160nirS.model
29nirS.faaWP_083536735.16930.860222True0.878126nirS.model
30nirS.faaWP_014426879.15820.858500True0.877231nirS.model
31nirS.faaWP_042340392.15930.866062True0.881122nirS.model
32nirS.faaWP_075148778.15600.730918True0.793848nirS.model
33nirS.faaWP_004255893.15600.724783True0.788940nirS.model
34nirS.faaWP_013963004.15800.807332True0.847940nirS.model
35nirS.faaWP_044032999.15800.807332True0.847940nirS.model
36nirS.faaWP_076002121.15780.877717True0.886911nirS.model
37nirS.faaWP_012346472.15730.802448True0.844863nirS.model
38nirS.faaWP_009206840.15400.838056True0.866157nirS.model
39nirS.faaWP_059399790.15460.832846True0.863203nirS.model
40nirS.faaWP_082990281.16630.737690True0.799166nirS.model
41nirS.faaWP_015781103.16870.802908True0.845155nirS.model
42nirS.faaWP_024079644.15400.786725True0.834613nirS.model
43nirS.faaWP_011289000.15610.761704True0.817193nirS.model
44nirS.faaWP_011383805.15400.852271True0.873942nirS.model
45nirS.faaWP_049724801.17080.725143True0.789231nirS.model
46nirS.faaWP_041099757.15580.740383True0.801252nirS.model
47nirS.faaWP_015258444.17070.712667True0.778999nirS.model
48nirS.faaWP_014238329.15460.718369True0.783719nirS.model
\n", "
" ], "text/plain": [ " filename sequence_id sequence_length score in_family \\\n", "0 nirS.faa WP_011748767.1 596 0.806921 True \n", "1 nirS.faa NP_249210.1 568 0.903336 True \n", "2 nirS.faa WP_014339158.1 559 0.843952 True \n", "3 nirS.faa WP_043221900.1 570 0.922663 True \n", "4 nirS.faa WP_041771853.1 570 0.878081 True \n", "5 nirS.faa WP_013953868.1 554 0.872977 True \n", "6 nirS.faa WP_085944417.1 529 0.873901 True \n", "7 nirS.faa WP_011517656.1 549 0.897850 True \n", "8 nirS.faa WP_041100219.1 579 0.887953 True \n", "9 nirS.faa WP_011310590.1 575 0.942577 True \n", "10 nirS.faa WP_014422487.1 574 0.872136 True \n", "11 nirS.faa WP_085938646.1 559 0.913921 True \n", "12 nirS.faa WP_071946734.1 575 0.932024 True \n", "13 nirS.faa WP_046857961.1 579 0.970848 True \n", "14 nirS.faa WP_013651333.1 585 0.867557 True \n", "15 nirS.faa WP_013029265.1 577 0.921728 True \n", "16 nirS.faa WP_045480144.1 577 0.893515 True \n", "17 nirS.faa WP_014237143.1 576 0.962037 True \n", "18 nirS.faa WP_011386514.1 568 0.889133 True \n", "19 nirS.faa WP_009205117.1 576 0.946725 True \n", "20 nirS.faa WP_031269533.1 584 0.907522 True \n", "21 nirS.faa WP_044029534.1 581 0.805285 True \n", "22 nirS.faa WP_007089813.1 575 0.893495 True \n", "23 nirS.faa WP_012179840.1 583 0.805569 True \n", "24 nirS.faa WP_011289048.1 576 0.976724 True \n", "25 nirS.faa WP_048708996.1 575 0.920702 True \n", "26 nirS.faa WP_011805163.1 574 0.921624 True \n", "27 nirS.faa WP_012250943.1 560 0.698289 True \n", "28 nirS.faa WP_013518994.1 574 0.880298 True \n", "29 nirS.faa WP_083536735.1 693 0.860222 True \n", "30 nirS.faa WP_014426879.1 582 0.858500 True \n", "31 nirS.faa WP_042340392.1 593 0.866062 True \n", "32 nirS.faa WP_075148778.1 560 0.730918 True \n", "33 nirS.faa WP_004255893.1 560 0.724783 True \n", "34 nirS.faa WP_013963004.1 580 0.807332 True \n", "35 nirS.faa WP_044032999.1 580 0.807332 True \n", "36 nirS.faa WP_076002121.1 578 0.877717 True \n", "37 nirS.faa WP_012346472.1 573 0.802448 True \n", "38 nirS.faa WP_009206840.1 540 0.838056 True \n", "39 nirS.faa WP_059399790.1 546 0.832846 True \n", "40 nirS.faa WP_082990281.1 663 0.737690 True \n", "41 nirS.faa WP_015781103.1 687 0.802908 True \n", "42 nirS.faa WP_024079644.1 540 0.786725 True \n", "43 nirS.faa WP_011289000.1 561 0.761704 True \n", "44 nirS.faa WP_011383805.1 540 0.852271 True \n", "45 nirS.faa WP_049724801.1 708 0.725143 True \n", "46 nirS.faa WP_041099757.1 558 0.740383 True \n", "47 nirS.faa WP_015258444.1 707 0.712667 True \n", "48 nirS.faa WP_014238329.1 546 0.718369 True \n", "\n", " probability model \n", "0 0.847682 nirS.model \n", "1 0.898777 nirS.model \n", "2 0.869435 nirS.model \n", "3 0.906984 nirS.model \n", "4 0.887088 nirS.model \n", "5 0.884587 nirS.model \n", "6 0.885044 nirS.model \n", "7 0.896333 nirS.model \n", "8 0.891791 nirS.model \n", "9 0.914811 nirS.model \n", "10 0.884171 nirS.model \n", "11 0.903348 nirS.model \n", "12 0.910740 nirS.model \n", "13 0.924897 nirS.model \n", "14 0.881879 nirS.model \n", "15 0.906601 nirS.model \n", "16 0.894365 nirS.model \n", "17 0.921877 nirS.model \n", "18 0.892342 nirS.model \n", "19 0.916364 nirS.model \n", "20 0.900607 nirS.model \n", "21 0.846656 nirS.model \n", "22 0.894356 nirS.model \n", "23 0.846835 nirS.model \n", "24 0.926851 nirS.model \n", "25 0.906179 nirS.model \n", "26 0.906558 nirS.model \n", "27 0.766772 nirS.model \n", "28 0.888160 nirS.model \n", "29 0.878126 nirS.model \n", "30 0.877231 nirS.model \n", "31 0.881122 nirS.model \n", "32 0.793848 nirS.model \n", "33 0.788940 nirS.model \n", "34 0.847940 nirS.model \n", "35 0.847940 nirS.model \n", "36 0.886911 nirS.model \n", "37 0.844863 nirS.model \n", "38 0.866157 nirS.model \n", "39 0.863203 nirS.model \n", "40 0.799166 nirS.model \n", "41 0.845155 nirS.model \n", "42 0.834613 nirS.model \n", "43 0.817193 nirS.model \n", "44 0.873942 nirS.model \n", "45 0.789231 nirS.model \n", "46 0.801252 nirS.model \n", "47 0.778999 nirS.model \n", "48 0.783719 nirS.model " ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "print(\"example family:\\t\", example_family)\n", "pd.read_csv(os.path.join(OUT_DIR, \"search\", example_family, f\"{example_family}.csv\"))" ] }, { "cell_type": "markdown", "id": "3cf5c845", "metadata": {}, "source": [ "Each column summarizes the following information for a given sequence:\n", "\n", "| **Column Name** | **Description** |\n", "|-----------------|--------------------------------------------------------------------------------------------------------------------------------|\n", "| filename | Name of file containing given sequence |\n", "| sequence_id | Sequence ID, as taken from FASTA file |\n", "| sequence_length | Length of sequence (i.e. number of characters long the sequence is) |\n", "| score | Score for the assignment of the sequence into the desired family based on the family model. Scores are summed from kmer contributions using the family scoring model |\n", "| in_family | True if in-family assignment is predicted (probability > 0.5); False otherwise. |\n", "| probability | Probability of in-family assignment. 1.0 = maximum probability for a given sequence's assignment into a family; 0.0 = lowest probability; 0.5 = equal probability of in-family vs. out-of-family assignment |\n", "| model | Name of model used to evaluate the sequence |\n", "\n", "In this example application, the **in_family** and **probability** columns are of particular importance to the user. The **in_family** column tells the user whether a particular input sequence is given an in-family assignment based on the machine learning model which has been previously trained, and the **probability** informs the user of the in-family assignment probability determined by the same model.\n", "\n", "In the case of the demo files, since all of the sequences above belong to the given family, and by design of the demo were also the families used to train the family model, the sequences all have relatively high probabilities and consistently do get assigned to the protein family. However, in this demonstration, we hope it is apparent to the user how trained protein family models can be applied to a new sequence set and the resulting `snekmer search` results evaluated." ] }, { "cell_type": "markdown", "id": "59fec5be-7e46-40ba-8371-bd07019d3a51", "metadata": {}, "source": [ "## Conclusion\n", "\n", "In conclusion, we have demonstrated Snekmer's utility across 3 potential operating models (cluster, model, and search). We hope this tutorial provides useful information to users regarding applying Snekmer to their own sequence sets and interpreting results from Snekmer." ] } ], "metadata": { "kernelspec": { "display_name": "snekmer_env7_311", "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.11.14" } }, "nbformat": 4, "nbformat_minor": 5 }