{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# PeptideSmilesEncoder: Encoding Peptides to SMILES\n", "\n", "SMILES representations of peptides with PTMs enable advanced ML applications in proteomics:\n", "\n", "* Graph Neural Networks (GNNs): SMILES convert to molecular graphs, allowing GNNs to capture complex structural relationships, including PTM arrangements.\n", "* Transformer Models: Treating SMILES as sequences enables use of state-of-the-art transformer architectures, adept at learning long-range dependencies in peptide structures.\n", "* Transfer Learning: Pre-trained models on large chemical datasets can be fine-tuned for specific proteomic tasks, leveraging broader chemical knowledge.\n", "* Interpretability: Graph-based models provide insights into which parts of the peptide, including PTMs, contribute most to predicted properties.\n", "\n", "This notebook demonstrates the functionality of the `PeptideSmilesEncoder` class, which is used to encode peptide sequences into SMILES (Simplified Molecular Input Line Entry System) strings. We'll go through various examples, including peptides with and without modifications, and visualize the resulting molecules." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "from rdkit import Chem\n", "from rdkit.Chem import Descriptors, Draw\n", "from rdkit.Chem import rdCoordGen\n", "from rdkit.Chem import rdFingerprintGenerator\n", "from rdkit.Chem import MACCSkeys\n", "from rdkit.Chem.AtomPairs import Pairs\n", "\n", "from alphabase.peptide.precursor import get_mod_seq_formula\n", "from alphabase.constants.atom import CHEM_MONO_MASS, MASS_H2O\n", "from alphabase.smiles.peptide import PeptideSmilesEncoder\n", "\n", "# Initialize the encoder\n", "encoder = PeptideSmilesEncoder()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 1. Encoding a Peptide without Modifications" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Peptide sequence: QMNPHIR\n" ] }, { "data": { "image/jpeg": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAEsASwDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD3+iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA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iTQUbTXEOtafKt3p0+cbZV52k+jDg9umelY6P8WNWjXdH4d0JCBuLF7mYH2A+SgDW+KF19j+GPiKXON1m8X/AH38n/s1bXhy1+w+F9ItMY8iyhix6bUA/pXG3Hwx1HXoPJ8V+NdW1OBiDJa2yJawvgg4ZVByMivRAAqhQMADAFAC0UUUAcxpfhZ9Pm0mbzmaS1aUzBrmV0O5WA2Kx2jqOgFdPRRWtWtOq+abu/8Ag3/USVgrzP4h6bc3niSylhERRbZFYtMi4/fKeckYGAeelemViahp168+ofZkt5I7+ARM0rlTGQGGcAHcMNnGRzn1yOWtDnjyno5Zifq1f2qtouv9dtTbopkMflQxx7i2xQuT1OBTZ7qC2MQnmSPzZBHHvbG5z0Uep4PFannswfH/APyTrxL/ANgy4/8ARbVN4J/5ELw7/wBgy2/9FLVrULFfEGjXen3ccsFrdwzW0yHAkwcruUgkDjJHXqOnIrhYJPGHw2t4raa3fxN4Zt1CRy2yBby1jAwAU6SKB6c+uKAPTaZMhkgkQYyykDP0rL8PeKNG8VWAvNGv4rmMffUHDxn0ZTyp+ta9C0A5rRfDL6Td6TN5zv8AZtNe1nD3Mkg3kwkFAxIC/u26Y7cenS0UVrVrTqvmm7v+mJKwVymsEf8ACwNBl82IRwRzLLmVQVLqAgIJzycgV1dYN5pV7KdStolgMF/KshmZyGi+VFPy45I2ZHPftjnmqJtaHZgpRjNuT6Nffo/uTb+RsLd27iIrMhErmNMH7zDOQPcbW/I1NXP2mgzW82nzGZ2aC7mmkQysUCuJQNo6Z+df1roKqLbWplXhThK1N3X/AAX+gUUUVRiFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFVIdOggubqdd7G5kWV1dtyq6qFBUHpwo6dxmrdFABRRRQB5n4k0mw0z4x+Cr+wtY7W5v3vFu3hGzzwsORvA4JyTz/AICvTK8/8Y/8lU+Hn/XW/wD/AEQK9AoAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAhls7We4guJraGSeDcYZHQFo8jB2k8jI4OKmoooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigD//2Q==", "image/png": "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sQIAhg5Fp0747jt89x1at1a9Z8kSjBkDAMOHF5dv798fjgZYGEiq07L/+c9/AGzevFnENj//nAAaPVqc1pKSkoRbWAHcu3dPnEbZn44epTVrSv7Tw4f0/vskkxFAvr7h27Zte/n+wejoaGHvqX37ZV270tixZG5OAFla0pw59Pd3eRguyUK4YMECAJMnTxaxzdhYAsjJiXS/5TM/P1+Yod7Y2NjHxyczM1OMDjKV2Fj6/HMqKirtPceP01tvJctkcgCdOnWKjY29deuW35819t54443Jkyd3754CkExGgYG63KcoMclCKFx/E/eWFKWSatcmgC5d0rWp9957z8jIyNraetiwYXwbt7iSkqhPHwoJoV27/uGdSqUyPDzc0dERgEwmE24brlKlyocffti+fXsArq7vtWunPHOmXPqtN5KFMDU1VSaTWVpaFqpvZ9BQQQFlZ6seK5X0/DkR0ZIlFBZGqalEpHpFC8uWLatSpUq1atW0voOHiej58+fTpk0zNTUFYGVlNWjQICGNTk5OYWFhZbzJ0ZBJedta48aNocNIhX37aOxY1eOkJGrbloioalVaulT14htvaNPs6dOn69ata29v/9VXX2nXMaYP8fHxVn+WKTE3N581a1a2+je4gpPyjplWrVoB+P3330Vs094e27Zpf/tFamrqqFGjCgsLFy5cOH36dBE7xnTk4uLi4uICoHPnztevX1+wYIGVhqWDDJaUIWzdujV0C+H9+9i1C7t24eBB1SvGxpg/H5MmqZ7m5KDsF0EUCsWAAQOysrI2bNjwv//9T+teMb1avnx5Jav9I30IhWHs2snJwZMnePIEycnFL/bpAwAHDgDA6tWwtESrVpg0CZs2/e20h4JRo0bdv39/586dffv21bpLjGlKyjL4Xl5eRkZGcXFxeXl55upK9Zpo2hTjxgHA48fYs6f49dBQDByIwkI8fIiiIsTGQl0pqlEjRfv2I1q3btmuXbsWLVoIh/sAvvnmm3379p05c+aNN97Q6VMxpiEpQ2htbe3m5nbt2rW4uLg2bcQscV23Lt59F7NnY8UKLFiAuDicPIkTJ3D6NExMrm3Z8sOWLT8AMDc39/Lyateunb29/bp16y5fvixUtWCGqWHDtjKZnVwuygQJhkTa80LDhg0DsGrVKi2WffCAjh9XPX7xQnXRaft21SsFBfT9939dRKGg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", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "SMILES: [H]N([H])[C@@H](CCC(N)=O)C(=O)N([H])[C@@H](CCSC)C(=O)N([H])[C@@H](CC(N)=O)C(=O)N1CCC[C@H]1C(=O)N([H])[C@@H](Cc1cnc[nH]1)C(=O)N([H])[C@H](C(=O)N([H])[C@@H](CCCNC(=N)N)C(=O)O)[C@@H](C)CC\n", "Exact Mass: 876.4388\n", "Expected mass: 876.4388\n", "Mass difference: 0.0000\n" ] } ], "source": [ "def visualize_peptide(smiles, title):\n", " mol = Chem.MolFromSmiles(smiles)\n", " rdCoordGen.AddCoords(mol)\n", " img = Draw.MolToImage(mol)\n", " display(img)\n", " print(f\"SMILES: {smiles}\")\n", " print(f\"Exact Mass: {Descriptors.ExactMolWt(mol) - MASS_H2O:.4f}\")\n", "\n", "sequence = \"QMNPHIR\"\n", "smiles = encoder.peptide_to_smiles(sequence)\n", "\n", "print(f\"Peptide sequence: {sequence}\")\n", "visualize_peptide(smiles, \"Peptide without modifications\")\n", "\n", "# Verify mass\n", "expected_mass = np.sum([CHEM_MONO_MASS[elem] * n for elem, n in get_mod_seq_formula(sequence, \"\")])\n", "actual_mass = Descriptors.ExactMolWt(Chem.MolFromSmiles(smiles)) - MASS_H2O\n", "print(f\"Expected mass: {expected_mass:.4f}\")\n", "print(f\"Mass difference: {abs(actual_mass - expected_mass):.4f}\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 2. Encoding a Peptide with Modifications" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Peptide sequence: QMNPHIR\n", "Modifications: Gln->pyro-Glu@Q^Any_N-term;Oxidation@M\n", "Modification sites: 1;2\n" ] }, { "data": { "image/jpeg": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAEsASwDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD3+iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAGTTRW8TSzypFGvLO7BQPqTRFNFcRLLDIkkbDKujAg/QisTxJdQWUulXNyyGKK6LGJnUFv3bgEbiASCQcfiOQKn0FGK312I/KgvLjzoI8g4XYi54JA3FS34+uajn97lOl0EqKqvr/AJ2t+pr0UUVZzBRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRUJuoReLaGQee0ZkCdyoIBP5kU0m9gJqKy4/Eejyx3EiX8RW3thdS9fliIJ349ODWFqnxG0q2un0/R4p9d1VQf9FsF3gEf3n+6vp3x3raOFryvaD0302FzI5T4ua3bxa1ZaW0u2WKykn2bSd3msIV6d8k16np9othptrZp92CFIh9FAH9K8K8VeGPGM2tQeP9esLcWttc28tzpNnJ5s0dvE2772MNzkkA479uPctK1Sy1rS7fUtOuEuLS4QPHIvQj+h7EdjXKqaUnPqzrqYupUoQoP4Y3t8+5coooqzlCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiqEOs6fcazdaRFchr+1jSWaHaQVVvunOMH8KAL9FFFABRRRQAVh6hoj6h4jt7x5Z4reO0eImCdo2LF1I+6RkYBrcorSnUlTd47iaueU6v4em0rw+tvPcw22p3lvFpdkzFmWZ3jdHiYgHAYEEE8blU9q9NstOstOR0srSC2WRi7iGMLuY8knHU1xvxXkW18OaZqLZxY6va3GR2w+3/2au7rsxWLdalG8tdbr7rf13uTGNmBGRg9K8t1GCb4T6zJrNjGz+Dr6UG/tEGfsErEASxj+4TgFR+HbHqVeb+LWPjfxrZ+CYCTpdjsvtbZTwwBzFAf944JHpg9q88s9FhmjuII54XDxSKHRh0IIyDT6aiLGioihUUYVVGAB6CnUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFcnLojW/wAUYPEEc4WO60xrKWHb99lfeGz644rrKoaioL28oHMTk79pbZx3A5rDEzlCnzQ3uvuur/h9w1uX6KhiuoJjsSeN3HUKw/lU1axnGSvF3EISACScAdSay7bXoLmS3zb3MMN0CbeeUKElwpbjDEjKgn5gOAa03RZEZGGVYYI9q5m+8MX95pEWnHU4RFbRlLdjbHJ+Qx/P82D8jMOAOTntilNyXwnVho0ZXVV2+/z7edvkdRQTgZPSvF9T0Lx54UsmbRBdMoYDOmyfaEVepPkSnJPGOD3rL0PWfGnxV1Kbwzqd0mm6ZZANqTwwNb3E6N0RlYnBODnHHXOeASnJyV2rCxdCnRqclOfOu6/pnceIJo/ijZ33hrRpANKR1F5rG3cgkRgyxwjI3tkDc2doHqSMO/sj4oaSf9C8S6PrUY6JqVmYGx6Zi6n3Ndxpum2ej6bBp+n26W9pbpsjiQcKP6nuT1J5q1VnMec3XjTx1pVtKNQ+H0txKEPly6bdrOjN2ymNwGetbPw88Nz+H/Dxn1I+ZrWpyG81GU9TK3O36KOMdOvrXW0UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFIzKilmYKqjJJOABS1V1KzGoaXd2RcoLiF4tw/h3KRn9aT20Kik5JSdkc/4i8STrossmhEPcBfMZ5YnBWHvIikDzAOOnHIqfw1bXlzpy3d8k9qZxuMDMQ5J/ibB6kdu31q3b2uoXGpWlzew28AtYnQCKQv5jNtHHyjCgD9R6c7FcssNGrNVKnTY7K9SnGkqUIq+7d7v0utH3/p3pTaTYzqA1uqkDAZPlI/EV5r4l03xR8OdFuNe0bxTe6lp1oyvPp2qqJ2KFgDtk4Ixnpxx3r1es3xDpa634c1PS2Axd2skIz2LKQD+dbwpU4NuEUm+xxXbL8MyXEEc0TBo5FDqw7gjINPrkPhdqjat8NdEmkJ82GD7NID1DREx8+/y5/GuvrQQVwd3Gmk/GrT7v5lXWtMktTz8pkibfn67Tiu8rjvFMvkeK9GvJYI5rWwgmuZQVy0Y3RoZFP8Ashskd1B74rqwdONSo4yV9H99nb8bEydkdjRXndv4v1lvDep3Yt7i6li0qO5juIlhCROYmYswZgSMgHAB/pXoUZLRqT1IBpYjCzofHb5fJ/qNSTHUUUVzDCiiigAooooAKKKKACiiigAooooAy9Q1+y0vVbSyvZobdbmCWVZppVRQY2jG3nqT5mf+AmoB4ijfwhceII4N8cVvLOIg4+cJu4De+3r71fl06KbV7bUWY74IJYFTAwRI0bE/UeWPzNYFzpDCCLw3DcXgs57eaOd/s+UCOJOj7cB9zDAzjC88kZ7aUaEoxT3Wr9Nb/hYl3NTS/EEOq3SwxROhNsJn3HlG3sjRkf3lZSDWvXJa14Lmu9QudU0bWrvSdQl2NmIBomdcj5lPUEEZHTIBxmslviJdeFJFtPHmnPZDadmqWkbS2sxGeOMsrH0I/Kpr06PL7SlL1XVf5r0+5Am9meh1j6h4gh07XdP02aFtl4rn7QD8sbAqqhh/tFgAfUgd68l1j4s6v4mvf7J8NWtxZrMMwmNRJeTr6hekKkEHcxzjkZrq/BPgPUbKxuT4hlUrcwyRi0WQyPH5hUs7yk8vlF+7gAjIrahhqHsHXrTXVcvX1+W/buJyd7JG0vj/AE0aXd3dx5NvJBZLdpBJcKGl3IW2rnvxj8a6xG3IreozXOWng61tdFvNM+0yyLdWS2bSuBuAVCm4e/Oa6NV2oF9BisMT9Xv+5/rRfrccb9RaKKK5SgooooAKKKKACiiigAooooAKKKKAPL7C28YfD+91eKy8PRa3oV1qEt5CLW6CTwLIQSuxh8wHoPfmtax+LXhae5Fpqct1od73t9Wt2gI/4Efl/Wu6qtfadZanbG3v7O3uoG6xzxh1P4GgDlPEnj63tJrXSfDoj1fXb8ZtoYHDxxr/AM9ZGBwEH15rQ8K+FTolvLcajePqOr3ZL3V1IcglsZVB0VflUY74HoAOV8I6Tp/hL4v+INGsrSK3t9Q0+C+tVVfuKrFHVT6FjnFenVtGvONN046J79/S/byFbW5Si0jTobSS1isbdLeSIQvEsYCsgG0KR6YOMVdAAGB0FFFZylKW7GFFFFSAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAVg+N4Vn8BeIY2RXzptxgNjGfLbHX3xWrqF9Dptk91Pu8tCoO0ZPLBR+prnvGWs2Mek6po08jxS3NoIfNKZSPzxKisxHIUeWxY44AzW9ChKrJJLRv/L/MTdiD4ZeH9M0TwLo8llYwwXF1ZQzXMqDLSuyAklup5Jxzgdq7GsTwogtNAttJL75tKjjspnA+VnSNCSvtyK26irBQm4rb9OgLYKKKKzGFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFZuua5Z+H9Na8uyxGQkcaDLyueiqO5NJtJXZdOnKpJQgrtnHeOmGj+PPBPiDIVGu30ufn7yzL8mfYMCa9Dr5+v/AAzr3xY8Via7nKadEcPIrZjsVGCY4h0eVu7dAPwr0KHwR4m0Ek+HfGd5NEFwtprKi4Tt/GMMo7YA71VHlqtWdk+rKr0Z0JunUVmjv6K4E+I/Gen3VtHrOk2CIjM8r2cpkFxEqkuUU/MpUYbBzu6Va0zxfc3N1cAwSXcHlyvE1rFuGFuZ41JOehWNf1rtll9aMeZNNeTv/X9dTDnR2lFZ+hXkuoeH9NvZ8edcWsUr7RgbmQE4/E1oVxzi4ScX0KCiiipAKKKKACiiigAooooAKw9S8Z+GtILLfa7YQyL1j89Wcf8AARk/pXIfG6dV8J6XaSM/k3mrQQzorld8WGZgcHp8v8qufDbw54dm8H6XrMXhrTLS6u4BI2yLeVBPGGfLdMHrV0+TmXPt5bg/IcfiFb6pqlrNoMz3WmW8U818DbspdFMQ3JuAJ2iRm467SOpFdR4cv5NU0C1vZZFkeXcd64wRuIGMewFO1qG6TTbi70q3t5NVht5FtfOXK5OCV4I4JVfyFcD8KvF7Xkk+g3uyJyDcWKbBHiPPzxbQByh9uQc9MV6U6VKthJVKMbcjW7TfXyV9/wAPIi7UrM9B1zTBrGjz2BZVEpXO5cggMCQR74xWO/gyzXWTdWsVrb2reRvtkhAD+X54OccciYD/AIDXUUVw08TVpxcIuy/4b/JFNJnANoni7wo0tzoNzb6tZGUu+m3C7JWTaqrtlzywVQOeuM8k1seHPHmjeIrqTT1d7LV4Ttm068Xy5kI64B+8PcfpXT15r8YtOs30XStT+zot/BqlskV0g2yopfkBhziqr4l10ueKuuqVm/Xp87XBRselUUUVzDCiiigAooooAKKKKACiiigAooooAKKKKAK2oSTw6bdSWqb7hIXaJcZy4BwPzrmUgsdUltLGO/lv4Lu1c3Ya4LleBhxz+7bJIwMDk8ccdfTVRELFVVSxySBjJqJQ5mdNHEeyi7LXv8v03XmQWFha6XYxWdlCsNvEMIijp/iferNFFWlbRHPKTk3KTu2Z2tQO2n3F1aqBqFvbym1kIzscocHHQ8461h/D1bK88FaVqMVtFHLcWgSUxjaCQ7F8AcAb2c4HTNdaSAMnpXlfw28UaVoEd94O1jUY7PUbHUbiOCK6Yp5sRcshVm4OcnAzmuhV2qDpead/JX0/G/8Aw5Ntbnp9tbxWlrDbW6COGFBHGg6KoGAPyqWjqMiorm5gs7aS4uZUihjXc7ucBR71zt31ZSTbsgubq3s4TNczxwxAgF5GCjJ6cmi3uYLuFZraaOaJujxsGB/EVx1r4rtvEmq2xsbaV2s5mmSBmVXniKFPMUMQBgt0JGRkj0ro9Ht54mv7ieEwfa7kzLCSCUGxF5wSMkqW4J+9WcanM/d2Oyvg3QjarpLtp32tvtrfbpuadFFFaHEFFFFABRRXGeIviJZaXqB0XRrWXXNfbgWNmciP3lfog9c8/wA6AOP+PlyEt9Ctc4LC9nH1jtzg/mwr0fwZa/YvA2gW2MGLToFP18tc/rXFSfD3xV4juYde17xP9g1uDd9hgsYFeCzDDDKQ3MmRwefxIxWjH4m8WeFY1i8U6KNQs04/tPR1LBR6vEeRxySMD0zWtGjOtLkhv6pfn+Qm7bnoFeHeNfDcel/Ee0l8L3TP4ivryO9gsY0+S2IyJpZGzxG64yMZJH4V6OPGtrqWkXU+jo73ayrbwR3KGMM7nbG5HXYWyM9flIxkU/wh4VbQYZr7UZ/tuu3x33l23r/cT0Qdh7fQDSeGdODlVdmnZLq/8khXu9Dp6KKiubqCzgM1zKkUYIG5zgZPAH1rmLSbdkS15/8AGD/kUrH/ALC1p/6MrurW7t72HzbaZJY8lSVOcEdQfQ+1Y/i/wtbeMNBfS7m4uLb94s0U9u2HjkU5U+/0/kcGjcGnF2ZvUV5sPFfifwMwh8Z2Z1LSV4XXNPiJKD1niH3fqOPrXe6Xqun61YR32mXkN3ayfdlhcMPp7H260CLlFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABVLUtSXT7aR0ia5uFQyLaxMPNkUfe2qepA7d+lXa8/8AE/8Ao/xj8DTdriG/gY/SMMP1oA7GK1uLiR3v3R0zIiRRg+XJExBHmK2fmAGPTk+uAzWNA0jxDa/ZtX062vYuwmjDFfcHqD7itKigDzo/DzWfDh8zwP4mns4hyNL1Im4tT7KT8yD3GTXA65c/EHxj47Tw1fWkFrc2aLMsELn7Iqng3EhzmTrhU6c4PQhvoOuD1yJdL+L/AIc1bcVXUbObTJcDg7f3iZOfWrhSlVfLFXev4K7/AABScXdM6Lw74asvDloyQZluZfmuLl/vyt/Qeg7frW1RRWcYqKsjSrVnVm51HdsiuTKtpMYADMEYxg92xx+tczpM8LXmlfYbyeed42OoI8zOVGzOXUn5G34GMDqR0FdXXlPhnUJU+J9xaTXjvuur6FI3lJ4UqwwCewNY1XaUTvwNNTo1bu1lf10f9LzPVqKKK3PMPOvjZf6pp3w+M2l3k9o7XcUU0kJ2sY2yCM9RyV6f1rrfDnhfR/CmnCy0exjt0ODI45eVvVmPLH61jfFS2F18N9VQrnb5Tj22yoc/kDXY0AFFFFAHn01rp0v2O/W8aOaPX3iwqrmUNcn5CN3QMAQeoAPHJFeg15fbeFUkOmXq3cRlHiGSZ1VITjbNK23eBvJ4HG449OK9Qr0sx5U4qMr7/LUiAVieJp47C0tNUmZRFY3KyurHG8MrR4HvmQEZ7jt1rbri/itdR2Xw61GeUMUV4AQoyeZUFeVUvyu252YNw9vBVHaLdn6PR/gbHhydL/8AtDU4yojurjhAwJXYqodxHG7K9s9ua3K4v4X3cd54ReWIMF+3XC/MMHIkNdpRTvyq+4YtwdeXs3eK0XotF+AhAZSrAEEYIPevItR0NfDXxw8Nr4fVtOs9Wjma9t7disUxjViSU+70I6CvXq47xBb+Z8SvBk4HMaX2T7GJR/WrOY7GiiigAooqGC6t7pWa3uIpgpwxjcNg+hxQOztcmooooEFFFFABRRRQAUUUUAFFFVb++TT7XzmR5GZ1jSNMZd2IAAzx1PU0m7alRi5NRW7LVeJePviNoK+PfDE9vLJPbaNfOLy9iXdEm9dpRSPvEDk4/U12Pi99e1iA6dYQTRlCoubSJgGlV8hG8zPEfysDxnj0OQ/wr8NdM0S9TV7+OO61YLhDj91bZ5PlKehOeW6nk9ScxGpzScUtO511cIqVCNVzXM38PW3f+vk+3TaL4i0fxFaC50fUre8iIyTE+Sv1XqPxFaHmx7Q3mJtIyDngiub1L4f+HNRvor8WRs72Jwy3Fi5gfrk528HPfjNca+ga1aeGtP0+OyuJIG0iV1GwloJ2hAeIjry/zD3LDsK9ShhaFZK1Sz6pr12d9dvL/Pz3Jroesbhu25GcZxXG+PhbNL4ea5EqJb6kl0biIjMIjUksQRyvPzegye1W0W90vxFd6hqUxuLdNPQedFblFXEjEjqegOSc8CqXh/VZfG+qy6n9jCaBaM0djLICGu2KlJGKkfcwcDp0+oFYek6M/bp3jFavbVrRLz/yelgbvodPpWof2naST+V5ey5ngxu3Z8uVo89O+3OO2e9Xq4V/hlbWqpNoeuarpl9Hv2zrN5isGdn2uh4YAsfT3yeaz7zxf4u8EyIfFemWuo6Q8ywpqenPtkTccL5kR6n/AHcCufEwoJ81GV076Waa/NfjfyGm+p6SzKoyzADIHJ7npXgMkV94f+JUfjZ9MvJfDw1K9klngi3tEHiWJt6D5l2upzkdu/Fe4zact83+nYliyMW5wY8q+5H5GdwwvfHFXq5SjP0fXNL1+yW80q+huoGAO6NuRkZGR1Bx2IFXJ54bWB57iVIoY1LPJIwVVA7knpXGeJvAmjGC91rT4ZtP1KK3kcvYSGLz8KTtdRwwJ69zVFPDo1rWrXQtfguLqxsrTzoXZ2CzLvXYHIPzMvzKQeu0HvXowwuHnFTU3bqra6b21s/wIcntYr614i1nx/DdaH4Nso/7NkUx3Ot3qkQY6FYl6uffHH4g1Yt/iBqfhiaOx+IGl/YgSEj1izBktJT/ALWOYyfQ/oK9BgghtoEggiSKGNQqRxqFVQOwA6UTwQ3UDwXESSwyDa8cihlYehB6iuCfLzPk26XLQ21ure+tY7m0nint5BuSWJwysPUEcGuY13x9Y6dff2TpVvLrOttkLZWnOw+sj9EHr3HpXj/xL01/BfiWTT/C9/eaRp17Ypc3NpbTMI2ZpxEdoz8vDdvTHQ17t4e8M6P4V04WOjWMdtD1cjlpD6sx5Y/WroypwlepHmXa9vv8vS3qJ36HL6d4e1a0vdMuVtfLhn1Oe6voC6kxNum2SDBwcq6qceie9dna6nbXU0kKsUdZXjVZPlMuzAcoOpUE4z6/hVyoZ7SC4yZE+fYYxIhKuqnBIDDBGcDoewrSviXXd5rX/g3/AOB6AlYj1DUrLSbKS91C7htbaMZeWZwqj8TXl3iLU9U+LWly6F4Z014NDlkQza3fKY0YI4YeSnVuV6n6HHWpPCPh638dapq+veKZptUax1e4tbOzmb/RoEQjBEY4J5xznoOp5r1ZVVEVEUKqjAAGABXMM8o8O3OtfCu2k0rxDYG90MzSTrrVkCfLLtk+bF1Xk9RkfWvTNP1XT9VtornT72C5hlUsjROGyB1/LIz6VbIDKVYAgjBB71wt54StdN8Tw3fh6xhtLpLea6UR/Kkku6IFCOgVlDLxwCc9RXXQp0KsXCTalrr022fb119CW2jZ8QeNdG8PCOKac3N9Pj7PZWo8yaUnpgDoD6nArkZLX4ma7eQeI4o9K0h7QN9k0m5UytKjY3CWQfdJAGNuPfHNdL4H8PaZp+i2WpR6bFDqVzbR/aJSMvkKBjPbpyBxmurqcTGjCXJSu7bt21fklsvm7jjd6s4nQviRZXmoroviCzl8P670+y3hGyY+sUn3XH+Rmup1XWNO0SzN5ql7DaW4IXfK4UEnoB6n2FQa74d0jxNp7WOsWEN3AegkHKH1Vuqn3FeHD4a3mrfE/UdAj165fT9LgheO4vWM88EbjIjiz8q85+bGRgY755hnfXnjv+3rqTR7KzZIbuJo4WlJEszHp8o+6hGRubHXPY11llE0+upeQ2Mlnbx2jQuJECGRiylRgH+EBuenz8d6k0Hwzpnhy1EVhCfMIAkuJTvllPqzd/X0rXrGFOW83dnpYnF0GuTDQ5Y26vvu/wCvXQKKKK2PNCiiigAooooAKKKKACqmo2K6haiIyNE6uskcijJV1IIOD15HT0q3RSavoVGTjJSW6KNjp8lvc3F3cXHn3M6ojMqbFVFztUDJ7sx5J61eoooStognNzd5BRRRTJPNvizNcO2gabeXElp4Yv7zydUuYfvj/nmhP8KMc5PbH4H0KztIbCxgs7ZAkEEaxxqAAAoGB0qrrui2fiLQ7zSNQj3211GY3HcehHuDgj3Fct8OdavBHeeEdck3a1ohEZc/8vNv/wAs5R68YB/DPJp8zty9AO6rz/4t/vND0K0/5+9es4ceuWJ/pXaahq2m6TD52paha2cf9+4mWMfmTXl/inxfofjDxV4Q0fQbw6jLba1Fd3Bt42ZI1QNyWxg9SeD2NID1yiiigDL8SrI/hXWEiVmlaymCBBkk7DjHvWbYQaqnim0e/mhmj/s2QBoLdo1U74uGy7ZP5dDXTUVvCu4QcLd/xVhNahRRRWAzyv4m2Etz4gikjtHmxYIu5Yy3/Lwpxn9a9Url9Vht21LUDqVlNc74UFkyQNJt4OQhAOx93OeD05446CwW4TTrVbtt1yIkEp9XwM/rmsaatOT7np4yopYalBK3L173Sf4bPzLFFFQtcoJjCoLyhQ+xeu0nGcnj1/KtjzDhfhL/AMgXXz66/eH/AMeFegV5PpWo6n8K7jUbbxBprz6BeX8t3Hq9iDIIfMbOJU6qOnIz6DNenadqdjq9jHfaddw3VrIMpLC4ZT+Xf2oAtVgajpt9deKrW4trma1iSylRpo0RssXQhfmB7An8K36K0p1HTd0Jq5keF7Wey8L6bbXKMk8UCq6t1BrXoopVJuc3N9XcaVgrktJhC/EvxFN5QUvbWw8zbgtgHv3rra4iND9jsxFHONaBb7c2xwSNjb9x6Fc429vu4rnqOzR3YOClGon1VvTW9/wt8zt6K5jSo9SW+0Q3bxtGLCQYjiZSpxF94ljk/l3rp6uMuY569JUmknf/AIdr9AoooqjEKKKKACiiigAooooAKKKKACiiigAooooAK5LxV4Bs/FGq2epjU9S0u+t42ha406bypJYm5KM2DxnkfU/h1tFAHE6f8JvBtjN9om0r+0bo/en1GRrhm+oY7f0rsLWztbGAQWltDbwr0jhQIo/AVNRQAUUUUAFFFFABRRRQAUUUUAZsttqFxfyB7lYbSOSKWBoDh2xnzI5AQQVPHI557YBNy1tYLK2S3tolihTO1EGAOc8VNRQAjKrqVYBlIwQRkEV5p4o8FDwtaal4r8G3z6LdWsEl1c2aLutboIpYho+inAOCOn616ZXP+Ozj4eeJf+wVdf8AopqALvhvU5da8L6Tqs6JHLe2cNw6JnapdAxAz25rTrn/AAKMfD3w0P8AqFWv/opa6CgAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACsvxLpkuteFtW0qB0Sa9s5rdHfO1WdCoJx25rUooAzfDunSaP4Z0rTJnR5bOzht3ZM7WZECkjPbitKiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA//Z", "image/png": "iVBORw0KGgoAAAANSUhEUgAAASwAAAEsCAIAAAD2HxkiAAA36klEQVR4nO3deVxUZdsH8N+w7zsI4i4CYpiJogiKGuUSqPnEo6mYmlJampqFy6OQpaKZom+pWJa4pVhq4L7vGqDijrggsiiyyj4DM9f7xxkZ3GHmDIeB+/vhjznjcM0Nzo+zX7eIiMAwjHC0hB4AwzR2LIQMIzAWQoYRGAshwwiMhZBhBMZCyDACYyFkGIGxEDKMwFgIGUZgLIQMIzAWQoYRGAshwwiMhZBhBMZCyDACYyFkGIGxEDKMwFgIGUZgLIQMIzAWQoYRGAshwwiMhZBhBMZCyDACYyFkGIGxEDKMwFgIGUZgLIQMIzAWQoYRGAshwwiMhZBhBMZCyDACYyFkGIGxEDKMwFgIGUZgLIQMIzAWQoYRGAshwwiMhZBhBMZCyDACYyFkGIGxEDKMwFgIGUZgLIQMIzAWQoYRGAshwwiMhZBhBMZCyDACYyFkGIGxEDKMwFgIGUZgLIQMIzAWQoYRGAshwwiMhZBhBMZCyDAC0xF6AJpGIsGyZTh2DPr6GDgQn30GkUjoMTGajYWwlj75BPb22LwZZWWYOhVpaViwQOgxMZpNRERCj0FzpKaiZ0+kpEBbGwDy89GmDR4/hq6u0CNjNBjbJ6yN5GS4uckTCMDSEjY2ePBA0DExGo+FsDZMTFBS8swzJSUwMxNoNEwDwUJYGx064O5dPH4sX0xMhIkJbG0FHROj8diBmdowM8PcuXj3XUyaBLEYkZH4v/8TekyMxmMHZmojOxvnz8PcHLduQU8PffuieXOhx8RoPLYmrI2DBzFqFAYNglQKAwO8957QA2IaArZPWBvx8QDQqRMOHMCuXTA3F3pATEPAQlgbXAjNzVFZibfegrGx0ANiGgIWwhqrqMClSxCJUFoKAJ6eQg+IaSBYCGvs6lWUlcHJCTduAEDXrkIPiGkgWAhrLC4OADw9FQ8Yhg/s6GhNfXPlSlnHjiM8PZvdu+cgEul26CD0iJgGgq0Ja+rA6dO/XLlyvrKy5blzfe3tocP+fjH8YCGskZKSkps3b+rq6ubn5wPwZNuiDH9YCGskISGhsrKyY8eOiYmJALqyozIMf1gIayQuLg6Ap6dnfHw82JqQ4RULYY0cP34cwD///JOVlWVlZdW6dWuhR8Q0HCyEb3Dx4sXRo0fv378fwMOHDwE4OTmJWF8Zhj8shC8nkyEmZl+vXr08PDw2btyoo6MzZsyYwYMHA7h27drFixeFHiDTgBDzrPJyioqi9u2pV6+tAMzMzKZMmZKWlkZEMplszJgxAGxtbW/duiX0SJkGouGHMDGRVq1SLC5bRrdu0blzNG0aVVTIn5w6lWQyevSI5s4lGxsCCCBv75IVK1YUFRVVryaRSPr37w+gbdu2jx49qsOfg2mwGn4IY2MpMFCx2L8/nThBGzaQsTEtXSp/0tKS5s0jfX15/Lp3p+3bqbLy5QVLSkq8vLwAeHh4FBYWqv0HYBq6xrtP+PHHiIxUtEqztkZFBfz9cegQzp3DRx8pmqo9x8jIKCYmxsXF5cKFC0OGDBGLxXU2ZqZBavjtLXbvxpQp6NNHvnjwIDZvRmoqLl3CO+/g77+xaxesrJCaiqwsODnVtGxKSkqPHj0ePXo0fPjwzZs3a2k13j9njIoaxQWQTk6YPFn++NYtxfOjRuG337B3LwAYG9cigQBat2598ODBXr16bd261dra+ueff+ZvvEzj0ij+fltYoFMn+ZepqeJ5kQirVmHmTEilypR1d3ffuXOnvr7+L7/88tNPP/E1WqaxaRQhfI0OHdCvHwoLlfz23r17R0VFaWlpffPNN+vXr+dzZEyj0fA3R93cEBSkWBw/Hm3awNoajo7yZ775BjY2ys+tNGzYsLy8vEmTJgUHB9vb23MnMBim5hr+gZnXuHoVnp5wdcWlS6qWmjlz5uLFi/X09LZt2zZkyBAeBsc0Go16c9TWFuXlSE/nodSiRYuaNWsmkUhOnz7NQzmmMWnUIbSzg64ucnNRXq5qqfT09Ly8PJFI5OrqysfQmEakUYdQSwv29iDCw4eqlvrmm29KS0tHjBgxfvx4PobGNCKNOoSA/PBMRoZKRc6dOxcdHW1oaLhw4UJeRsU0KiyEAJCZqXwFmUw2depUIgoJCWnRogVfA2Maj8YeQnf3P9zdfR4/Xqd0hQ0bNsTFxTk6Os6YMYPHgTGNR2MPoaFh9tWrZ1JSbij37cXFxXPmzAGwePFiYzY1BaMUnkMYFhbm5OR07Ngxfsuqj6OjI4AMZXcKw8PDMzMzu3fvPmLECF7HxTQiPIcwLy/v7t27XG8yjaBKCNPS0pYvXy4SiZYuXcq6zjBK4zmEXC/ARhLCGTNmlJaWjhw50tvbm+9xMY0Iz5etJScnu7i4NG3aVOkNvDpWWlpqbGysra29d+9eLy8v0+o3WbzWuXPnvL29DQwMkpKS2EFRRhU8h5CIbG1tc3Nz09PTHasuka7frKysCgoKuN9DmzZtvL29PTw8PDw8unTpYmBg8NJvkclk3bt3j4+PDwsLCw0NrdvxMg0N/xdw9+/f/8CBAzt27Pjwww/5rcy78vJyLy8va2vrysrK0tLSy5cvSySSqn/V19fv1KlT165dPT09u3bt6uLiUrXjt379+rFjxzZr1iwpKYkdFGVUxP+tTJ9//n5AwBNX1yuAGkJIpPxNR8+6d+9et27dvLy8YmJiuGfEYnFiYmJ8fHx8fHxcXFxycvK///7777//cv9qbm7epUsXT09PJyenWbNmgZ2WYHjC/5rwyZPdd+4EmJr2cXY+ymfde/cwaRJyclBZCXd3rFwJS0uli23ZsmXcuHG9evU6ePDgq15TVFR0+fLlC0/duKE4lygSidq1a5eUlMQOijI84L1/W0XF44QEXLpkKpO9omegEiorqWNH2rVLvjhvHo0YoVwlqVQ6btw4bW1tHx8fmUxW82/MyMjYtWvX7NmzXVxcOnXqtH//fuUGwDDPUctNvdeutRGLU9zcrhka8jSd7cWLCA5GQoJ8USyGtTXy8nDpEpyda75KzM3N7dev35UrV7p06XL69GnWIo2pD9TyKTQy8gRQWsrf2cL0dDRrpljU14edHTIy8NFHsLWFjw9WrHjjzbn//vtv586dr1+/3qVLl5MnT7IEMvWEWj6IxsaeAEpK+AuhvT2ysxWLMhlyc6GrC1dXaGnhzBlMnYoWLdC9+5OVK5OTk18ssHz58oEDB2ZnZ3fu3PnYsWM6bLJrpt5Qy+ZoWdnV/PxtZmbvm5j04qdieTnc3LBzJ95+GwA2bcLmzejUCadOwc8PVlZISMCuXSgqOtW7d6/jx9u0aePv7x8YGOjt7S2RSEaPHr1nzx4A7u7uhw8fZoc0mXpFLSEkEt+/P76sLFEmK7Ozm2xn9xUPRY8eRXAwunZFWRnu3sXOnRg6FFevyv+1c2f4+8Pa+ueUlNANG/Ly8rinmzZtWllZWVhYqK2t7ebmduDAAUsVjqkyjDqoJYS5uVFPnuxu0yYaIKm0WFvbjJ+6Uinu3IG+Plq1AoDSUhw5gu3bERODJ08AVDo6uujpfeDv7+rqmpSUtGXLltzcXJFIZGRk5OTkdOTIEWtra35GwjD8UUsIc3LW5eREOjnt09Gpkw+9WIzDh7FrV/zDh5579nDPOTg4tG3b9tq1a0VFRe3btz9w4EDTpk3rYjAMU0tq2hyVpKeH5Of/aWLi26zZUqJysfi+qWkfkUi9h0NkMtmlS5diY2O3bt16q9qkEwkJCR4eHmp9a4ZRGp8hlEoLi4qOWlgM4RZlsvKsrCWFhYeMjbtmZS3X1ra0sPA3Nw8wNx+opaX2QyOJiYm7du1avnx5YWFhbGysv7+/ut+RYZTD2ymKiopHycm97979T0HBLnlpLQNLy8DKysd6eq0NDNyk0vzc3I337v33yhWHe/eGx8fHlJSU8PXuL+rUqVNYWNgXX3wB4OzZs+p7I4ZRET/bh2Lxvdu3+4nFd/T121ZUZKalfVVenqyv36ao6Lid3TRb28/t7CaLxfeePInNz99eXHy2oGBHYODBrKwyPz+/gICAIUOG2NnZ8TKS53BT6rIQMvUZH5uj8fGyGV/c+P6Ojp2TpeVHGRmztbRMnZ0PElXq6bXW1bV/7uVicUpa2oFPPtl4/vx5mUwGQFdXt2/fvn5+ftOmTdN+1QS5SsnNzbW1tTUwMCgoKNDT0+OxMsPwReUQ7t2L//4XJSUV347PmWSTmRMOiJo2/d7BYc4bvzUnJ2fv3r3bt28/cOBARUWFhYXFgAEDtmzZotJ4XuDvP7akpMXSpTM8PGp61zzD1CmVLv+OjycdHQJozBj69FNJf8+LcfrZ2WtrWyY7O3v06NEA2rVrp9J4XmbcOAJo+XLeCzPPkEppyBDF4o4d9Pvvz7ygvJz8/OjsWfniTz/RyZM8vO+9e/Tee5SaKl/8+mu6fZv++YfWr1e8ZsIEysnh4b3URLUDMx4eCArCxInIzsa6dbqnrr+lFWtjM6G2ZWxsbNasWaOnp3fv3r2ioiKVhvQCLy8AOHeO36rM82QyHDmiWExNxe3bz7xAKsX585g8GRUVAHDzJrKyeHjf4mLEx2PKFPnixYsoKkJKCpKSFK85fpyHOX/Up5YhJMLPP8PLCx4eCAzE/ftYtw4mJtizBzY2OHJE1+M95cZhaGjYqVMnqVTKe6c2rhMam7CsPrC2hrc3IiJ4Ltu5M8Ri/PMPz2XrTC2Pjq5ahb17ceAAzMwQG4t338X16wgNxf37+OEHODurMhRvb++4uLgzZ868++67qtR5jqsrrKyQmYnUVLRsyWNh5nmlpaiapzg1FS/tMRQWBg8PDBvGw9tJJBCL5Y8jIhAQAD8/xb/+9ReuXZM/VmWukTpQyzXh6tVYvBhmZgAQEIC338aePTA2RnS0igkEwHXv5P10gkgk3yJl5ynUzdAQGzfKv0aNevlrLC0xbx6mT5cvlpYq+V6HD6NzZ4SEyBddXBAYiAULFC/o3x+RkfKvJk2UfJe6UcsQpqSgXTvForMzUlL4GoqPjw+Ac+fOSaVSvmpyhg7F55+jbVt+qzLPE4lgayv/es3tYp98gsePcfYsCgvRqhW++oq7/L6mbt7EgAF47z1cv46TJxUrwzlzsHMn0tLkiyYmaNpU/sXraS/+1TKEVlYoKFAsFhSAv/sSmjRp0qZNm8LCwuvXr/NVE8DNm1i4EBMnwtMTAD7+GDdv4vff8dNPitf4+j5zzzDDo/BwTJuG1asVz4hEWL0at28jMRG5uVi5Eq6u+OMPyGRvKFVQgJkz0akT9u+HhQVCQzFgAL56ep+ckRHCw3Hnjrp+EDWq3cHU0aNp5Ur54+JiatmS7tzh8VhtUFAQgFWrVvFY89IlcnSkHj1IKiUi6tWLEhNp2TKaM0fxmjZtKDOTx/dsjGQyio5WLCYlUWIiSaV06xYRkb8/VVbS7t2KFxw7RmlpdOEC9exJAAHUuTOdOvXy4pWVlatWrRow4DJA2toUHEyLFpGVFQGko6P4SBLR5s2UnU03btCFC4ond+6kkhI+f1h+1TKEDx6QiwuNG0dz51KnThQRwe9o1qxZA2DkyJE81rx0ifz8aPRoWrOGiIVQCI8e0ejRr/xXmYw2b6ZmzQigrl0fjxw5Mi0trfoLDh8+7O7uDsDConVAgOTXX8ndXZ7bvn3p8mW1j1/dan+yvryczp+n2Fh69jfFi6tXrwJo1aoVjzW5ED58SK1a0aNHihDa21PnzvIvPT0WQnVJS6Mvv6Tc3De8rLiY5s6l9u0/BGBsbDx//vzS0tIHDx5wG0cAmjdvvmTJksmT93Pxa9uWdu6si/HXAf77jqpCJpNZWVkBSOMv4VwIiWjFCvr0U7YmrFNFReTlRZMnU0gIicVvfn1aWlpQUBDXUtnKyorrx2ViYhIWFjZnzhx9fX1tbb233y4ODaWyMvWPvq7UrxAS0YABAwBEV9+9UE1VCCsrycODHBxYCOu748ePd+rUiVsB2tvbL1mypEmTJgC0tLTGjRv38OEjoQfIs3rXe5M7W3jmzBnVSz14AG9vxTkUbW2sXs3PpVKMWvn6+iYkJERGRuro6OTk5Hz77bdZWVnctRzr1q2zt6/fZ/2UIPRfgedxU2136dJFxTpJSdS8OQH0wQeUnKx4/to1Ki2lrCzKyFA8efUqSSQqviHDPwsLCwAODg5RUVG1mrNAs6ilx4wqysrKzM3NiSg/P9/ExES5Itev4/33kZkJHx/s3g1zc37HyNQRKyur/Pz8jIyMht2kq95tjhoaGjZp0qSystLX13fbtm0F1a8NqJn4ePj6IjMTffti3z6WQI1naGgo9BDUq96FEADXGObixYvDhw+3sbHx8fFZvHjxzZs3a/K9hw8fnj37q7w8+s9/sG8flF2VMkzdqXebo5zTp0/fuHEjNjb24MGDVbPncs3tAwICfH19dXV1X/yuf/75Z9iwYWKxeObMP3/4YXg9v2KQeSNuczQvL6+B900Xdpf0jYqLi2NiYoKDg5tUuxLeysoqMDAwKioqPz+/6pVbtmzhkjlp0iQpd4kao+H694/w9Q3Py2tA5wRfpp6uCV9UWVl55syZ3bt3x8bGVjX21dXV7dmzp7+/f3FxcVhYmEwmCwkJCQ8PF3aoDF8sLVFQgPx8WFgIPRR10pgQVnfv3r3Dhw9X31i1tLQsKChYsmTJjBkzhB4dwxsWQg1QUFCwf//+yMjIEydOuLu7X758WegRMXxiIdQYjx8/tre3NzQ0zM/PZ81FG5JGEsL6eIqituzs7Nq3b19aWnrhwgWhx8IwtdYQQgigd+/eAI4fPy7wOBhe9e4NPz80+KnNG0gIfX19AZw4cULogTC1FhmJffsUi4MHA8CPP8p7xhw6hIcP8c03Qo2uLjSQEPbu3VskEp06darqzD6jKZKSFN2ZABw6BAA3bmD1anBbNkVFuHhRkKHVkQYSQrZb2PDMnInJk9EY/qg2kBCC7RZqspUrMWCA/Kuq32WHDujbF0uWCDqyOtFwQsh2CzXX2LGIipJ/Vb/i9/vvsX497t8HgLIyaP7ZtJdrOCHkdgvPnDlTwU04wtS5UaOwebP88V9/YdOmmn6jqSns7ORf1ZmZYf58zJ0LAFOmoFu3hjmxT8MJIbdbWFxcnJCQIPRYGqkzZxAWhsePASA1Fffu8VBzxAjY20Mqxd69iI+Hjw/Gj29oPUoaTgjBdgvrgcmT8fXXtfuWoCD07atY/OMPAJg0CZ07y59Zvx7ffYfkZISGQlcX69ahbVuEhSka4Gu6BhVCtlsoiPv3ER2N+HgAGDsWyck4erQW3965M5ycFIvchE1du8LBQf5M8+bw9YWxMcLCcPUqAgJQUoJFi9C//2exsbF8/RQCagjXjlbhLiI1NjbOy8t76V2/DC9ycori403j4hAfj7g4+TQekyZh715cu4akJHzyCYKCIBZj3jy1DODgQaxbdz462gtAv379li9f3r59e7W8U90Q9G5GnqWmphoZGQE4WzUpM8MHiUSSkJAQERERFBTk5uZmatpUS0veiB4gW1saOJB++41ataLiYiKiSZPI2Zm++06NQ6qoqIiMjLSxsQGgo6MTHBycnZ2txvdTp4YTwuTk5JZPJwFt1qzZxo0bc+rzPOUaIjMzs3v37jrPXr5pbGz84YdF06fT1q10757ixVUhfPKEHBzUG0JOdnb2559/rq2tDaB169b3qo9GczSQEF6/fp3riteuXTtuZQhAW1vbw8MjNDQ0ISFB6AFqKh8fHy0tLZFI5ObmFhQUFBERcerUKfErOtrv2UMVFfLHly5RRAS/c3a9UmJiorW1tUgkGjRoUF28H98aQggTEhK4zZI+ffp88803AEQiUceOHfX19av+eA8denzaNDpyRPEpIaKLFxWTikgktGkTEdHOnfTwofzJ/Hz68886/Vnqm8DAQABruBmtauz6dVq0iAAaPFg9w3rB7NmzASxYsKCO3o9Xmn909PjxqyEhOTk5Q4YMcXd3//HHH7W1tf/444/Lly/n5eVxTaIcHByuXOm+fDnefRcWFggIwNq1yMrCvn0IDJRPoy0Wy+de/uUXxQmurCwsXizYT1YfZGZmApDJZL6+vj/88ENNvuW779CxI/T0YGaGf/7BgQNqHqLm0/AQ7tmDgQPHnDixdfp0CwuLlStX6unpRUdHf/LJJwCMjIwCAgIiIyPT0tKiovRnzkSHDigpwe7d+OwzNGuG/HyMHIkvvkBlpdA/SH3FhbCoqOjkyZNJSUk1+RYXF0ilWLwY06YBwPTpYJcwvZ4m3y/5zz8YNgxiMSZMCMzMTLp719jYeMeOHe+///5zL9TW1u7RAz16YNEi3L+PgwcRG4u7d2FpCQcHGBpi+XJMnKh4/d9/y++d4S7+aLSI6OHDhwDKysoA1LAX/fDhWL0aJ0+isBDt2uHGDURG4ssv1TtUjaaxa8JNm/DRRxCLMX060tO1tm6dl55+5vDhFxP4nFatEByM2FhcuSJ/ZsECrFqF9HTFawwMYGwMY2M09P7rb5CXl1deXm5hYZGbm4sahxBARAS0tfHLL/IJ5TdtupCXl6e+cWo6zQzh3bsYOxaVlZg3D5cvY98+2NmJ9u59u3v3mteoOupuZYW5czFrluKfPvgAY8di7FgMHcrrsDUNty3atGnTqgc1/MZ33kFwcFmvXotPnPh4woQV8fGeoaGhahyohtPMELZti19/RXg4Dh7EkSNwcMCRI3g6raQSxo6VX/bBVKd0CAGEhRXFxy/avn2rh4eBtrb26tWrubnQmRdpTgi3bkXPnvDwwMCBuHQJY8bA0RHnz6NtW5w9i7feUqJk+/ZwdgYAkQirVsHfHwD69oWtrfwFZmYYMICvH0DzZGRkQNkQ2tnZ/e9//wMQERExYcIEqVQ6depU9QxT8wl9jqRmdu+mzp3l5+/OnSNHR/njtWtVn+e6spLef59atnzmFCJDRN9//z2AWbNmcWdcS0tLa/XtYrHYxcUFwIIFC7gTuTurTsvyjZ0nVL/VqxEaCnt7AOjeHYGB8jtGJ0xQXGyvLG1t3LmD1FTcvq3yOBsW7tCoiYmJWCy2srKq7TyBenp6S5cu1dbWLiwsnDdvHoCZM2eqZaAaTkNCmJIi33DkODsrpqLnA7cxy/ZZnsNthXKrQeXmyvX3909KSgoPD09PTwcgrWogw1SjISG0skL1KXsLCmBtzWN5d3cAuHaNx5INAbdPKBKJADg6OipXxMnJafXq1UuWLNHV1V25ciWf42soNCSEffsiOlr+WCrF33/Dz4/H8tyaUI0hfPAAGniijFsTcj17lJ41/p9//pk8ebJIJIqMjBzQmA9zvZqGXDHz9dfw88OwYXBzw/796NYNvXrxWF6Nm6PHj2PSJLi4ID8fWlrYvFn1ndi6IZPJsrKyRCJRSUkJlA3hiROnhg8fLpVKFy1aNHbsWL7H2EBoSAjNzHDuHC5fRno6Ro1C27b8lndxQZ8+X+XlXSot3V91JxQPioowejQOHAB33/fy5Zg6Fdu28VZfnbKysiorK21tbSdNmuTn51d9puQaun4dEyZ4tWo1tHdvM3ZI5nWEPjxbX7i7uwOIj4/ns+ihQ9S/v2KxvJyMjUkTpvLOzc0dO3asnZ2dnp7elClT7t+/X9sKqank6EgAjRwpqYPZy/v37w/A0tLy8uXL6n4v3rEQyo0YMQLA77//zmfRjRspKOiZZ6ytKS+Pz7fgm1QqXbNmjZWVFYCqPj06OjrDhw+v+V+oggLq2JEA6tWLyupkwvmbN29yo9XR0fniiy80q6kCC6HcwoULAUyfPp3PosePU+/eisXCQjI357M+3y5evOjl5cUFr0+fPtevX09ISBgxYkRVGnv16hUbW/z6FVtpKfn4EEAdOtTpH5xHjx6FhIRws8RaWlqGh4e/qgNAfcNCKBcTEwPgvffe46HWnTvk7U23b5NYTE5OdOqU/PlZs+jzz3morwb5+flTpkzhmrU0bdo0Kiqq+r8+fPgwNDTUysqqU6feALVtSxER8nYyLzp+nPT1qXlzSkuri5E/JykpaeDAgdyfDBcXlz179ggwiFpiIZRLSUkBYGZmpsT+zzNOniRrawJoxAiSSCgujjw9qUcPeucdGjWKnjzhaby8kclkUVFRdnZ23LbclClTCgsLX/rKwsLCtWvvtG4tb7JmbU2zZ1NmJn38Mf3nP/LXHDtGY8bQ0aN0/Xrd/QgvOnToUFUTRD8/v+vCjuZNWAjlZDKZs7OzSCTS19cPDAw8dOiQTCardZXt28nQkADq149mzSJfXyovJyIqK6PKSt7HrLrLly97e3tXbWpevXr1jd9SWUnbt5OXlzyKFhY0cCA5OdGOHUREBw9SYCBPg8vKom3b6Lff6MoVJb5bIpFERESYmZlxO7dTpkwpKCjgaWQ8YyEkInr8+DER7d27183NTUtLfgFDhw4dVq5cmZ+fX9MqERHEteMcN45GjCCAdHToyBH1DVsVxcXFoaGh3B6Uvb19VFRUbf/oJCRQUBBNnkwBAbRtG7m4UFERfyE8f56cnWnBAlq1ijw9adEi5cpkZ2dXbWZbW1tHRERU1r+/hiyElJ+fv3DhwqrFjIyM8PDwFi1acFE0MDDgVoyvqSCRSD6bMCGjWzfS0qIFC8jXlwAyMaHYWJVG9ugRnThBt2+TEuvk14qJiWnevDkALS2t4OBgVVYRMhkFBNDZsxQaStOn8xdCLy86eFD+uLiYmjUjFXYTLly40LNnT+4/tHPnzidPnuRjiLxpvCGsqKgICwsr5zYXX1BZWXno0KHAwEDtp/PltW/fPjw8PO+F431Pnjzhemo0t7Yu+fVXcnEhgBwd6dIllcb33Xf09ts0dSr170/9+tEr9tNq69atW35Pr/jr0qVLXFyc6jW5EJaVkasrrVjBRwgrKsjI6JkN+MBA+vtvFavGxMS0atWK+9n9/f1TUlJULMiXxhjCqvvipk+fnpyc/PoXp6WlhYaG2j2dOM/AwCAoKOjChQvcv6anp3fq1Inbovv999/f7dChwtGR3nqLUlNVGuLZs+TuTlVH2CdPprlzVSpIRERSqZS7DltLS2v58uXK7PS+DBdCItq7l2xt+QhhSQmZmDzzzOjRtHGjynWppKSkY8eO3H9lZGSk6gV50RhD6OPjs2/fvlp9i1gsjo6O9vPz424pAODh4TF37lzuM+3m5rZq1Srudrv5QUE8rLXmz3+miXx8PHXvrmpNIiLijhk6ODjUYl/3TapCSEQffsjT5miLFs+07377beLpYqbx48dz/4Pbtm3jpaDqGlEI//7778zMTCI6evTo7NmzlSuSlJQ0ffp07oISTpMmTRYtWsQdzvn0008lEgkPY/3qK1qxQrF4+za1a8dDWaKAgAAALVq0eNV2uBL+/ZeqdipzcngKy8qV5OdH9+/Tkye0YAH16cNHUSIirumGjo5O/Zk1qBGFMCwszN/fn5dS5eXl3IoRALcCFIlEoaGhvBQnIoqIoClTFIv79lG/frwUHjVqFIDWrVvztS1KRJ6eipMIcXHUqxcfRWUyWrOGAgKod2/69lseL71Zu3YtAAsLi1u3bvFVU0Uacj8hH2bPnl1RUZGWlqZ6qapziUOGDCkrK9PR0dm8eXNYWJjqleWGD8eOHfLWqAUF+P57TJjAS+E2bdoA0NbWrtqurqcKC3HkCJo0wfjxKCjg8TazFi1aiEQiQ0NDa17vC1eFhtzKpIK4uLh9+/Z169atf//++/fv57f4Rx99tGvXLm9v748//pjPuk2aYMMGTJ6M4mJoaSE4GP/5Dy+FucMSz011pop795CejpQUeR/XNWtQWMhH3fJybN+OJk2grY21a9G5M193kNrZ2RkaGurr61tYWPBSUHUNP4Tnz58PCwv78ssvubtd+MVdbsJdFcXzusXNDePHw8wMDx8iMRF37jwzqbSy2rVrZ2pqymMICwpQVIS1a8F9pI8fh5kZX7XVwsbGxtjY2NDQsOrkk+AafghtbW0B5OTkqKN4q1atmjVrlp6efvv2befqrahUd/8+Ro+GpyesrLB/PwICeAlhixYtzMzMeJ9LfNEieZ+eQYNw5w6vpbnp3Pn7A2dtba2vr8/nrdsqa/j7hFwIs9XWYZu79+fMmTM81+X2WHJzFQ/4YGFhYWJiwuOaEEBZGaZNw9ChGDoUCQk8FeU7e1WMjIwMDAxq275RrVgIVcVtkao9hPytyc3MzPgNobExZs/G8uVYvhzu7jAx4bG2WhgaGtarNWHD3xzlej+rL4Q+PgN79+7y8KErz3UtLKCjgydPYGkJ8LYmBGBubi4Wi/mqBsDdHX37yh87OmLcOB5qygCRhQWZmsr09LQtLKTa2jx+Uo2MjNiasE7Z2tqKRCKu34E66nfs2C4uznvfPmueYy4SwdISRDAwAPgMIe9rQnXIItIqKGhWXDxJLNYqKPhDJuOxuJGRUb1aEzb8EOrp6ZmamlZUVBTyc+z8ebq66NoVRDh/nu/S3Iaori4Aqt77WDXcpgFfWraUTzPOGTsWnp48llcLXV1ds/p0DLfhhxB1sVsIALzvFS5+++0PnZx+09GxNTJ6n79Jg9u3b8+1EuVFeTlGj8bRo/LFtWufmW61fhKJRA78dn8tLcWCBfjoI3z2GU6erO13sxDyoEcPQA0hPFtWtuvOnUKpNKe0NJe/zdGOHTvyeIpMJoO+PqZNA7ebWVLC8wz13E4Ev+dgra2tq+4X5YFMhr59IRLhxx8xahS++AKxsbUq0ChCqO5jMz16QEsL8fHg9XgHuOuquElUeAxhq1at+L1iy8EB/ftj8WIeS6JqB14ikfBZFwBgY2OjdFf/lzhwQH6AuHVr9OyJ//s/LFxYqwKNIoRqPV8PwNISrq4Qi3HpEp9luahwn0K+QigWi5cuXXru3DmumQAvNQH873/YsIHPueUqKysBPHr06K+//gJQVFTES9nS0tKwsLCNGzcOGjRo2bJl/MwSdfMmOndWLHbpghs3alWgEYVQfWtCAFOmYPlyNG/OZ00uhEVFRQYGBiUlJWVlZSoWTExM7N69++rVq/Py8ubMmePp6Xn8+HFVCj54IH9gaooFCzB9uooDlDtw4EC/fv0AEBH3U4eFhf3yyy9cMpVDRJs2bXJ2dv7uu+8KCgokEsnXX3/dpUuXEydOKFkxKQlDhyI9Hfr6z2wCicWo7fkPAe/gqBsFBQVvvfUWgK+//lpNbxEdTYaGdPeufNHBgUpKeCjL3XQzbtw4AwMDAA8ePFC6VFlZWWhoKHe1Wtu2bSdOnNiyZUvuA+Dn53el9u3MSkooNJT09enXX+mdd+RP+vmRg4NKra1u3boVGBjIDaxdu3bbtm27detWVR9RV1fX2t6NzUlISKhqKufh4XHq1KmdO3e2bt2ae8bf3//evXu1KJefT1Onkq4uATR+PP37L7m7K/oAbdtGAQG1Gl4DD2F8fHxVWxEHBwc19Z+MjiZXVxowQL7ISwiPHz8eHR3drVu36h/KzZs3K9EsLD7+EXdDvba29jfffFNWVkZEJSUl4eHh5ubmALS0tIKCgjJrNvG4TEabNlHTpgSQlhZNnaoIYXIy6esrQpiRQcOG1bRJVX5+fkhICDchqYmJSWhoaPXbjnft2tW2bVsAFhatR46U1Lw7TEYGffppqbW1DfcBWL9+fdXEGGKxOCIiwtTUFAA35carGq4qSKUUFUV2dvIfftQoCg+n8+dpxAj66CPasYNWrqSWLSkxsabjI6KGHcKoqCjuwghXV1eTpxdTeXh4REZGvvnXXRvR0TRxIn3wAW3fTsRTCL/99tvBgwcTkUQiWbduHXcfIPezbN26p4ZJLCujkBDS0ZF5ePRzcnI6ceLEcy/Iycmpah1vbGwcEhLy5LXtiRMTK7kW9wB160ZxcSQW040bihckJSmaewQF0Zw5bx6kVCqt6j7M/Tl49OjRiy8rLy9fuHChn98VgAwM6H//e2UL8KqffcECMjEhgPr0iZw1a1ZRUdGLL8vIyAgKCuKOvnKtx191u/PRo0fThw6V//C9e9Ovv8on3PDwoIoKio2l+fNp9Wol2gs10BAWF88ODuY+tRMnTpw4cSL3mNuuA+DmNvjTT6l6f4OTJyk7W/44JYVSUqi4mJ72cyIiunWLXvbZIHoawtu3qW1bKiwkB4c3fD5eQyKRHD58mIjKy8u7det29+k2rlQqjY6O5m7U6NnzRuvWFBlJFRWvK3XmjLzzm44OzZ//uOzVM7NwG4HcB9HGxiYiIqLihdJ5eXlTpkx5++2JIhFZW1NExBtml5LJaN48+e9hyJAhr2rrduTIkarOS3369El80zokM5OCg+XtXZs2pagoys6mtWupaq0ZE0M5ORQTQ23ayPPi76/YU3iVuLi4qkk4unbt+lzniwcPHgQFBQF4t2VLWZs2tGQJBQbKqzdvTs9OGaCEhhjCW7fI3T2/UycbC4tffvmF++Xq6+tHRESUlZVxbSl69z7H/Q5dXCg8nLKyqGlT+vBDeYGFC2nRIrp8mbp1U1SdMOGV/b64EBJRaCh9+y05ONCePfLKubm1G/ujR4/s7e25j+yLf5IrKiqiora4usqqBr9xI1VW0u+/065dip9+/XoKCSFtbfmsLDVsa3j+/Pmq5pyurq7R0dHc85WVlatWreKOEunq6s6ff69WbUpzcnICAwMrKiqkUmn1benk5OSqLW0nJ6eqt6uJs2epa1d5CsaOJS0tCguT/5OvL336qfyfOnasxQ4qNx2Avb09AJFIFBQU9PDhw6KiopkzZ3J/u01MTObNm3fxhx9IX58AMjWlRYuIj1Y9DS6EW7eSqSkB5OZ29Y8/uI9Oq1atnpvWKylJ9u23ZG8v/9/q04eaNqX+/SkmhkiFEJaVkZsbGRnR6NHyyiYmFBxcoxakycnJGRkZRHT06NHU127SVFTQH3+QkxNVRbFfP7KxkU/Asm8fffgh2dqSjg6FhNT6QxITE+P09MZFLy+v8PBwz6fXofXp00eJQzhVzp8/P2nSJCJKSUmZMWMGt/tnbGwcGhr6mrX0q8hkFBVFLVrQrl3k40Pt2xPXvNLXl2JiyN6eIiLesKXwUlxjci51hoaG3F6MSCQaPXr0ihUr7O3tHU1NpU2aUGAgqXCc7DkNKIQVFRQSIv9gjhhB8+eTjs7/unT54IMPcl+xPpJIaOdO8veXH2m4fp2cnam4WBFCNzc6cUL+FRDw8hDm5ipCSET79xNABQUUHU19+5JIVJXzyg0bNrzm0/bDDz/UqlWUVErR0eTsTEOH0sCBNGMGDR1KRLRvHw0fTrt3P7MtXSvcEQtud5rrImdqavrXX38pWe6ZMUtLS0stLS25o0QTJkzIyspSpWBFBSUm0rvv0s6d5OdHROTrS5cukYpzot2+fXvQoEHcnx5tbe2IiAgPDw9usUePHneU/s2+QgMK4XffEUD6+rR4Mb33HgGkrV2+ZEkN24o1bUoSCc2eTSEhihDa29PUqfIvd/eXhHDvXjI3p+3bnzkSk5+vOCSYnEwhIWRtTT173gRgYWERHBz83EHaf//9l4gqKyuV6IBWUUHZ2TRwIMXFka8vxcbKQ6i6Hj164OnFRr2rz7Komm3btnGbtZdU7FD+FBdCIhowgP78Ux5CXhw5ckRfX9/AwIDbW27evPmWLVt47FJXRcNDePo0LV1KkZGUmkrFxfTBBxQVRa1aEUC2tnTgQM0rcSEsKSFnZ/r00xptjl67RubmBND337+heEkJbdx4oOqvqZaWVr9+/aKjo7l7OzZt2lTzcb4UF8Jr18jZmXbu5CeEvXv3BrBs2TIAffv25aEiERGdP38eQLfqv1nVVIXwzh1ydiZPT95CSERDhgzhTmCEhITwe0S9Ok2+Ymb2bISGwsEBEgn8/HDhArZuxbRpuH8fPj5ITMT779e2pJERfvwRUVGve83du4iJQUoKBg7Ekyf4738xZ86by44a9X5CQkJCQkJwcLChoeGBAwfGjRu3YMECU1PTkSNH1nacL9WhAwYPRkQEL8WeuWZaxt/tfFypqqmveNS2LUaMQHw874Xx888/h4eHc2cU1UFjQ3j3Lv78E3v3YsQIfPklIiMxYwZMTLBmDb7+GseOoZZX6HbsKG9oMmgQxoyBvT0MDNC2reIFjo6wsEBeHjZsgEyGbt3w4AF69MCGDbXohMKdpUxLSxs0aFBxcfGWLVtqNcg3CgvD/fv8lKqeE+LvKlPeQ2hhoWiGGBKCoCDw2MqQ+8GrZiJRk/p+h/UrXbwILy/o6ckXe/XC9euoqEBgIJ4e+K6VffsUj3/9Vf5g82bFk6Gh8gdhYfT553NLSma1bm28axf09Wv9XpaWloMHD46JifHx8VFiqC/66CNw98cZGWH9ejx8yENNTVkTlpTIG4AAMDBA164oLeWrdh3R2DWhRILqPRq0tCASgZeL4t8kLOy7tWtNzM1H795daWurZBHurojqc1qo4swZVF3bbGuLc+d4qNnBysq3eXMbkWiEi0tP/lYFvIcwIwOHDysWDx9GRgZfteuIxq4J27fH4sUgkm8L3riBpk3x9IIY9dm4cef8+W20tHYvWDDJzU35315+fj74C2FiouLPf1ERrl3joWbEkydISwNR0K1b4O/+Q/XtE6rD/1q0mOnr61C1waUeGhvCzp3h6Ig5czBxIvLyMHEiZs9W93smJCR89tm3QN///neivn4fVUrxuyZUCy4n3N5gPd4nBJCYiKfznSExkcfC6JKaihMneLtH6xU0NoQAoqOxciUmT4apKaZNU25XsOYyMzMDAgLKyh598UW/n39WKYEA8vLy8PSOQV6MHg2ugVhRkWIfSSXVDzfV7xC2bo0vvpA/vnuXx8J1RJNDaGr65pMD/Ll169bjx491dXUX1rJ5wUvxviZcuxaurgAQH4/vvuOjYvWc1OMDMwDMzfHOO4rHfFJbI/DqNGPTvD7o0aNH69atKyoqFi1apHo13teEBgYwMoKRkTJHa19Oc9aEmo79LmpKX1//zz//1NbWXrp06eXLl1WspjH7hJx6vCZ0dsaYMYrFTz4BvxPz1AFN3hytc127dg0ODl69evWXX3558uRJVfrwcWtCvkK4bBmqWvi5uOCHH/go+skn8PJC9+4ID0eTJnxUBNQQwpYt8bRTBwB8+CFfhQEAb7+NsjIofSaqZtiasHbCw8ObNm16+vTp33//XekiYrG4tLRUX1/f2NiYl1H16qWYhsXSUt4HVVVGRti1C1OmIDoaKnRYeo4mbY6ePo1Hj2BggD178OQJAJw5g8hIxQvmzkVqqurvowm/i/rEzMxs6dKlAL799tvHynbF5rZF6890zS+RnIyJE7FlCxIScOgQIiOxezcvhTUmhIcO4fPPMWYM1qyBjQ18fFBRgdTUZy5OPXIE+fmqv1W9/13UPx9//PHAgQPz8vJCqk/CUBsasEO4aRPGjQPXj8zKCiEhUGHNXx3XwpDfaaHUYtEiLF0Kb284OuKrr9CmDXbtUtNbsRAqY8WKFQYGBlFRUUerJmGoDd4PjfLvwYNn9rTatFH0GFVNamoqgIMHD65du5bHS1L5l5SkOO8BoHNn3LwJAMeOYfhw+VdyMi9vxUKoDCcnp1mzZhHRxIkTlfijrgFrQjs7VO+VnJMDe3sVSxKRTCb7+uuvHR0dKysrP/vsM29v7wTepvblm4EByssVi2Vl8oshPDzw/ffyL54mtGAhVNLMmTPbt2+fnJzM7SLWXH5+/vbt28H3JCc8GzAAf/4Jbh4IIvzxB5524FVaVFTUw4cP9fT00tLSoqOjW7Rocf78eU9Pz9GjR2dlZfEwZn5164YjRxSLR46ge3cAMDNDu3byL76uVVbTzcKNwfHjx0UikaGh4Z07d17/ykePHsXExISEhHh4eFQdkxgzZkzdjFNJ06dTx470xRfk40MjR5JEolyZHTt23KjemfSpkpKSqpZKFhYW4eHhYhU7w/ArKYlatKDFiyk6mgIDKTCQiGjzZvr0U8VrvLx4uY2fhVAlXDvK999//8V/un///oYNG8aPH+/87MljAwODHj16DB48+MXenvVOTg6dOUPp6Up8a0lJiUQiIaLo6OjXdBO9fft2VeNDZ2fnvXv3Kj9a3j18SOvW0aJFtGePvMtqcjIdO6Z4wY4dlJOj+vuwEKokOzuba4W0bds2Irp7925UVFRwcHDVPAccY2Njb2/vkJCQQ4cOKdHeTxONGTNm2bJlNXzxoUOH3NzcuN+Vv7//3Tc2621YWAhVxU3boqOjY/vsdRVWVlaDBg366aef4uLiNGClx5Nly5ZdvnyZiJKTk5/rY/16EokkIiKCm8WamxnipV3rGyQWQlVJpdKquZebNGni7+8fHh6ekJAgfX2b+IblwYMH3Pwtq1at8uMagColMzMzODiY2212dHRct26dOloM1jcshDwQi8W//fbbuXPnhB6IYIYNG7Z48WIiqqioeK7ZuRLOnDlT1R6Sx5an9ZaI+LtLhWm07t6926NHjzt37vDVF1Amk61atWrKlClEVFBQYM7zbYL1Cwshw4+MjAxHR0d+a+rr60skErFYrKfmLi/CYiFk6i89Pb2KigqJRMLNMdxQsStmmPpLY265UE0D//EYjcZtptXr6/v4wDZHmfqLi1+D/4iyNSHDCIyFkKmnGskOIVgImXqrkewQgoWQqbfYmpBhBMbWhAwjMLYmZBiBsTUhwwiMhZBhBMY2RxlGYI1nTcgmhGHqKS0tLQ8PD76m66jP2LWjDCMwtjnKMAJjIWQYgbEQMozAWAgZRmAshAwjMBZChhEYCyHDCIyFkGEExkLIMAJjIWQYgbEQMozAWAgZRmAshAwjMBZChhEYCyHDCIyFkGEExkLIMAJjIWQYgbEQMozAWAgZRmAshAwjMBZChhEYCyHDCIyFkGEExkLIMAJjIWQYgbEQMozAWAgZRmAshAwjMBZChhEYCyHDCIyFkGEExkLIMAJjIWQYgbEQMozAWAgZRmAshAwjMBZChhEYCyHDCIyFkGEExkLIMAJjIWQYgbEQMozAWAgZRmAshAwjMBZChhEYCyHDCIyFkGEExkLIMAJjIWQYgbEQMozAWAgZRmAshAwjMBZChhHY/wMlo756UmRSZAAAAABJRU5ErkJggg==", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "SMILES: [H]N(C(=O)[C@@H]1CCC(=O)N1[H])C(CCS(C)=O)C(=O)N([H])[C@@H](CC(N)=O)C(=O)N1CCC[C@H]1C(=O)N([H])[C@@H](Cc1cnc[nH]1)C(=O)N([H])[C@H](C(=O)N([H])[C@@H](CCCNC(=N)N)C(=O)O)[C@@H](C)CC\n", "Exact Mass: 875.4072\n", "Expected mass: 875.4072\n", "Mass difference: 0.0000\n" ] } ], "source": [ "sequence = \"QMNPHIR\"\n", "mods = \"Gln->pyro-Glu@Q^Any_N-term;Oxidation@M\"\n", "mod_sites = \"1;2\"\n", "\n", "smiles = encoder.peptide_to_smiles(sequence, mods, mod_sites)\n", "\n", "print(f\"Peptide sequence: {sequence}\")\n", "print(f\"Modifications: {mods}\")\n", "print(f\"Modification sites: {mod_sites}\")\n", "visualize_peptide(smiles, \"Peptide with modifications\")\n", "\n", "# Verify mass\n", "expected_mass = np.sum([CHEM_MONO_MASS[elem] * n for elem, n in get_mod_seq_formula(sequence, mods)])\n", "actual_mass = Descriptors.ExactMolWt(Chem.MolFromSmiles(smiles)) - MASS_H2O\n", "print(f\"Expected mass: {expected_mass:.4f}\")\n", "print(f\"Mass difference: {abs(actual_mass - expected_mass):.4f}\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 3. N-terminal Modification" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Peptide sequence: QMNPHIR\n", "Modifications: Acetyl@Any_N-term\n", "Modification sites: 0\n" ] }, { "data": { "image/jpeg": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAEsASwDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD3+iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoorM8RtcL4X1ZrMyC6FlMYTFneH2HbtxznOMYqoR55KPcGadFc9b3t7Z63qMurMEtltLcoYVdolO6fcenBwFyfQLmucTUvEejNaubDUtWjJnnSNGO8gvgxsT/d+8ueoOB92uuGClNtJrp87q++2hLkeiUVxtn8UPDEsy22o3UujXhyPs+qRmBhjHUn5e/rXGat8R5/Gusnw/4V8/ytxKyodjXQBwWB6pGD1PBPbvjjrxnQbU1quh04SisRVjT5lFPq9j00azMZFl+zJ9ia7NoH8w79wcx7tuMY3jHXpz7VsVj6Zoggt7aS/cT3yfvJWR3ETS45YJnbn3x154zWxWcOa2o8R7LmtT6f1/W3ogoooqznCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAK19ZJfwCGSSRFDBjsI+bHY5BBHtVmiindtWAp6lpOnaxam21OxtryA/8s54g4/WvPPgzo+n6LaeI7GG1jjvrPV5rWWXGXeNcGPk9sHgfWvT68wttY03wf8Y/ENtql7BY2utWtteQPO4RDIoMbDceATgn8KQHp9FMhmiuIVlhkSSJxlXRgQR7EU+gAooooAKKKKACiiuQuE1e2+LFnOklw+jXelvC8Zl/dxzq+4MFJ6leMgUnJLVgdfRRRTAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKiubiK0t5Lid9kSDLHGf0HU+1S1W1CzF9YyW+8oWwyuBnawIZTjvyBxSd7aFQUXJKW3ULS/gvGkSPzFkjxvjljKMAehwexwefY+lM1LSdO1i2NvqdhbXkJ/guIlcfqK5fwb4mj8QazqLPG6XPkxgZQICis4xt3Nghi3OT1HpXaVNOanHmR0YzDSw1Z05KzVvxR59L8J9PsZmufCusan4cnJzttZjJAx/2onJB+mQKl+HHiHXdTuvEOj+IZobi90a8EAuI4vL81CDhio45xnj1rvK5Czs2034r6jIgIh1fTI52z0MkDiM4/wCAyJ+dWcp19FFIzBFLMQFAySTwBQAtFcxdazbXkrzQ6v5Vl9m3WssDDEsoZwwHB3EYTC993Q10Nm80llA9wgSdo1Mi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KtSdvaNu2iv0QUUUVRkFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABXL+PPC7+J/D+2zk8jV7KQXWnXA4Mcy8jn0PQ/n2rqKKAPO9L+MPhg+Hre61y/jsNTGYrqw2M0scynaw2KCcZHH1+tJP8RtT1m3kh8MeCtcvWkUqlxdotpDyOCGc8j8q7eHRdKtr6W+g0yyivJW3SXCQKsjn1LAZJq9QBzHw80K78NeAdI0i/REu7eI+aqNuCszM2M9/vduM+tdPRRQAUUUUAFVtQtTe6bdWgkMZnheMOP4dwIz+tWaKGr6DjJxakuhlWdrdtqKXdzDBbiK38gJC5bdkg56DAG3j6npWrRVa7sorw27SGRWt5hNGUcqdwBHOOoIJBHvSSsVUm5u7GpfJdopsisySRu0dwpDRbgcYJBznP8jXDan4Z8TeG/EupeJvCc8N+moOkl7pF3hPMKrgGKT+FuvB4+vAr0JEWNdqKFGScAY5PJp1Mg5Twx8QNI8SXDaewl03WYuJtMvV8uZT3wD94e47dQK6uvOvjPo2nXfw91LVJrSM6hYoj210BiSI716MOccnjpXeaezNptqzsWYwoSzHJJwOTQBZooooAKwtT027ml1FYYIpkv7ZYA7vjyiAw5GOV+bPHOc/Wt2iplHmRrSqulK6/rr+hz1tod3DNaSNcyMIr+adoyy7djeZgjjOfnHfua6GiiiMVHYK1aVV3l/XUKKKKoyCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA4j4wHHwo1//rin/oxK6+wGNOtR/wBMU/kKmdElQpIiup6qwyDTugwKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA/9k=", "image/png": "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", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "SMILES: [H]N(C(=O)[C@H](Cc1cnc[nH]1)N([H])C(=O)[C@@H]1CCCN1C(=O)[C@H](CC(N)=O)N([H])C(=O)[C@H](CCSC)N([H])C(=O)[C@H](CCC(N)=O)N([H])C(C)=O)[C@H](C(=O)N([H])[C@@H](CCCNC(=N)N)C(=O)O)[C@@H](C)CC\n", "Exact Mass: 918.4494\n", "Expected mass: 918.4494\n", "Mass difference: 0.0000\n" ] } ], "source": [ "sequence = \"QMNPHIR\"\n", "mods = \"Acetyl@Any_N-term\"\n", "mod_sites = \"0\"\n", "\n", "smiles = encoder.peptide_to_smiles(sequence, mods, mod_sites)\n", "\n", "print(f\"Peptide sequence: {sequence}\")\n", "print(f\"Modifications: {mods}\")\n", "print(f\"Modification sites: {mod_sites}\")\n", "visualize_peptide(smiles, \"Peptide with N-terminal modification\")\n", "\n", "# Verify mass\n", "expected_mass = np.sum([CHEM_MONO_MASS[elem] * n for elem, n in get_mod_seq_formula(sequence, mods)])\n", "actual_mass = Descriptors.ExactMolWt(Chem.MolFromSmiles(smiles)) - MASS_H2O\n", "print(f\"Expected mass: {expected_mass:.4f}\")\n", "print(f\"Mass difference: {abs(actual_mass - expected_mass):.4f}\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 4. C-terminal Modification" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Peptide sequence: QMNPHIR\n", "Modifications: Amidated@Any_C-term\n", "Modification sites: -1\n" ] }, { "data": { "image/jpeg": "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", "image/png": "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", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "SMILES: [H]N([H])[C@@H](CCC(N)=O)C(=O)N([H])[C@@H](CCSC)C(=O)N([H])[C@@H](CC(N)=O)C(=O)N1CCC[C@H]1C(=O)N([H])[C@@H](Cc1cnc[nH]1)C(=O)N([H])[C@H](C(=O)N([H])[C@@H](CCCNC(=N)N)C(N)=O)[C@@H](C)CC\n", "Exact Mass: 875.4548\n", "Expected mass: 875.4548\n", "Mass difference: 0.0000\n" ] } ], "source": [ "sequence = \"QMNPHIR\"\n", "mods = \"Amidated@Any_C-term\"\n", "mod_sites = \"-1\"\n", "\n", "smiles = encoder.peptide_to_smiles(sequence, mods, mod_sites)\n", "\n", "print(f\"Peptide sequence: {sequence}\")\n", "print(f\"Modifications: {mods}\")\n", "print(f\"Modification sites: {mod_sites}\")\n", "visualize_peptide(smiles, \"Peptide with C-terminal modification\")\n", "\n", "# Verify mass\n", "expected_mass = np.sum([CHEM_MONO_MASS[elem] * n for elem, n in get_mod_seq_formula(sequence, mods)])\n", "actual_mass = Descriptors.ExactMolWt(Chem.MolFromSmiles(smiles)) - MASS_H2O\n", "print(f\"Expected mass: {expected_mass:.4f}\")\n", "print(f\"Mass difference: {abs(actual_mass - expected_mass):.4f}\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 5. Multiple Modifications" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Peptide sequence: QMNPSIR\n", "Modifications: Acetyl@Any_N-term;Oxidation@M;Phospho@S\n", "Modification sites: 0;2;5\n" ] }, { "data": { "image/jpeg": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAEsASwDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD3+iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoorM8RtcL4X1ZrMyC6FlMYTFneH2HbtxznOMYqoR55KPcGadFc9b3t7Za3qMurMFtltLcoYVdolO6fcenBwFyfQLmucTUvEejNaubDUtWjJnnWNGO4gvgxsT/d+8ueoOB92uuGClNtJrp87q++2hLkeiUVxtn8UPDEsy22o3UujXjZH2fVIzAwxjqT8vf1ri9W+I8/jXWToHhXz/KySsqnY10AQCwPVYwep4J7d8cdeM6DamtV0OnCUViKsafMop9XsenDWZzIsv2ZPsTXZtA/mHfuDmPdtxjG8Y69OfatisfTNEEEFtLfuJ75P3krI7iIy45YJnbn3x154zWxWcOa2o8R7LmtT6f1/W3ogoooqznCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAK19ZJfwCGSSRFDBjsI+bHY5BBHtVmiindtWAp6lpOnaxam21OxtryA/8ALOeIOP1rzz4M6Pp+i2niOxhtY476z1ea1llxl3jXBj5PbB4H1Nen15hbaxpvg/4x+IbbVL2Cxtdatba8gedwiGRQY2G48AnBP4UgPT6KZDNFcQrLDIkkTjKujAgj2Ip9ABRRRQAUUUUAFFFchcrq9t8WLGdJLh9Gu9LkheMyfuo5lfcG256leMgUm0tWB19FFFMAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAqK5uIrS3kuJ32RIMscZ/QdT7VLVbULMX1jJblyhbDK4GdrAhlOO/IHFJ3toVBRckpbdQtL+C8aRI/MWSPG+OWMowB6HB7HB59j6UzUtJ07WLY2+p2FteQn+C4iVx+orl/BviaPxBrOos8bpc+TGBlAgKKzjG3c2CGLc5PUeldpU05qceZHRjMNLDVnTkrNW/FHn0vwn0+xma48K6xqnhy4JzttZjJAx/2onJB+mQKl+HHiHXdTuvEOj+IZobi90a8EAuI4vL81CDhio45xnj1rvK5Czs2034r6jIgIh1fTI52z0MkDiM4/4DIn51ZynX0UUjMEUsxAUDJJPAFAC0VzF1rNteyyTQ6v5Vl9m3WssDDEsu5wwHB3EYTC993Q10Nm80llA9wgSdo1Mi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LPSbKK1h/i2D5nPqzHlj7mslvD9+bxp/tUvlnVVuvs+U2bBjn7u7PHTNdTXfjMTOcVHnunvbq/PzIjGxWv8AT7PVLKSzv7WG5tpRh4pkDKw+hrw7x94Gv9Du9G8P+F9avIdK1u6aE6ZcXD+RGQM8MPm2YJyvt37e9VyPiyKOTxN4VdhETDeO+XK5XK4yM+/HFeZKXKrnTQoutPkTto39yb/Qr+D/AIbad4bs7Y3sg1O/hXCzSoFSP2ROgx68niu2qMTwnbiVDucoPmHLDOR9Rg8exqShRS2FUq1J29o27aK/RBRRRVGQUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFcv498Lv4n8P7bOTyNXspBdadcDgxzLyOfQ9D+fauoooA880v4weGT4et7rXNQjsNTGYrqw2s0scynaw2KCcZHH1+tMn+I2p6zbyQ+GPBWt3pkUqlzdotpDyMbgznkflXbwaJpNtfS30GmWUV5M26S4S3VZHPqWAyTV+gDmfh5oV34a8A6RpF8qJdW8R81UbcFZmLEZ7/e+n1rpqKKACiiigAqvqFqb3Tbq0EhjM8Lxhx/DuBGf1qxRQ1fQcZOLUl0MqztLttRS7uYYLcRWxgCQuWDEkHPQYA28fU9K1aKrXdlFeG3aQyK1vMJoyjlSGAI5x1BBII96SViqlRzd2MS+S7RTZFZkkjdo7hSGi3KcYJBznP8AI1w+qeGfE3hzxLqXibwnPDfrqDpJe6Rd4TzCq4Bik/hbrweOe/Ar0JEWNdqKFGScAY5PJp1Mg5Twx8QNI8R3Dae4l03WYuJtMvV8uZT3wD94e47dhXV1538Z9G067+HupanNaRm/sUR7a6AxJEd69GHOOTx0ru9PZm021Z2LMYUJZjkk4HJoAs0UUUAFYWp6bdzS6isMEUyX9ssAd3x5RAYcjHK/NnjnOfrW7RUyjzI1pVXSldf11/Q5620O7hmtJGuZGEV/NO0ZZduxvMwRxnPzjv3NdDRRRGKjsFatKq7y/rqFFFFUZBRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAcP8AGA4+FGv/APXJP/RiV2FgMadaj/pkn8hUzokqFJEV1PVWGQad0GBQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAH/9k=", "image/png": "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", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "SMILES: [H]N(C(=O)[C@H](CCC(N)=O)N([H])C(C)=O)C(CCS(C)=O)C(=O)N([H])[C@@H](CC(N)=O)C(=O)N1CCC[C@H]1C(=O)N([H])[C@@H](COP(=O)(O)O)C(=O)N([H])[C@H](C(=O)N([H])[C@@H](CCCNC(=N)N)C(=O)O)[C@@H](C)CC\n", "Exact Mass: 964.3838\n", "Expected mass: 964.3838\n", "Mass difference: 0.0000\n" ] } ], "source": [ "sequence = \"QMNPSIR\"\n", "mods = \"Acetyl@Any_N-term;Oxidation@M;Phospho@S\"\n", "mod_sites = \"0;2;5\"\n", "\n", "smiles = encoder.peptide_to_smiles(sequence, mods, mod_sites)\n", "\n", "print(f\"Peptide sequence: {sequence}\")\n", "print(f\"Modifications: {mods}\")\n", "print(f\"Modification sites: {mod_sites}\")\n", "visualize_peptide(smiles, \"Peptide with multiple modifications\")\n", "\n", "# Verify mass\n", "expected_mass = np.sum([CHEM_MONO_MASS[elem] * n for elem, n in get_mod_seq_formula(sequence, mods)])\n", "actual_mass = Descriptors.ExactMolWt(Chem.MolFromSmiles(smiles)) - MASS_H2O\n", "print(f\"Expected mass: {expected_mass:.4f}\")\n", "print(f\"Mass difference: {abs(actual_mass - expected_mass):.4f}\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Further usage:\n", "\n", "### Molecular fingerprints\n", "\n", "As we stated before, being able to represent a peptide as a SMILES opens some doors for us. Let's take a look at feature extraction using RDKit:" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(2048,)" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "def get_fingerprint(mol, fp_type='morgan', **kwargs):\n", " \"\"\"\n", " Generate molecular fingerprints for an RDKit mol object.\n", " \n", " Parameters\n", " ----------\n", " mol : rdkit.Chem.Mol\n", " RDKit mol object.\n", " fp_type : str, optional\n", " Type of fingerprint. Options are 'morgan', 'topological', 'maccs', 'atompair'.\n", " Default is 'morgan'.\n", " **kwargs : dict\n", " Additional keyword arguments for specific fingerprint parameters.\n", " \n", " Returns\n", " -------\n", " list\n", " Fingerprint bit vector.\n", " \"\"\"\n", " if fp_type == 'morgan':\n", " radius = kwargs.get('radius', 2)\n", " nBits = kwargs.get('nBits', 2048)\n", " mfpgen = rdFingerprintGenerator.GetMorganGenerator(radius=radius,fpSize=nBits)\n", " fp = mfpgen.GetFingerprint(mol)\n", " \n", " elif fp_type == 'topological':\n", " minPath = kwargs.get('minPath', 1)\n", " maxPath = kwargs.get('maxPath', 7)\n", " fpSize = kwargs.get('fpSize', 2048)\n", " fp = Chem.RDKFingerprint(mol, minPath=minPath, maxPath=maxPath, fpSize=fpSize)\n", " \n", " elif fp_type == 'maccs':\n", " fp = MACCSkeys.GenMACCSKeys(mol)\n", " \n", " elif fp_type == 'atompair':\n", " nBits = kwargs.get('nBits', 2048)\n", " fp = Pairs.GetAtomPairFingerprintAsBitVect(mol, nBits=nBits)\n", " \n", " else:\n", " raise ValueError(f\"Unknown fingerprint type: {fp_type}\")\n", " \n", " return fp.ToList()\n", "\n", "\n", "sequence = \"QMNPSIR\"\n", "mods = \"Acetyl@Any_N-term;Oxidation@M;Phospho@S\"\n", "mod_sites = \"0;2;5\"\n", "\n", "smiles = encoder.peptide_to_smiles(sequence, mods, mod_sites)\n", "np.array(get_fingerprint(Chem.MolFromSmiles(smiles), fp_type='topological')).shape" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Adjacency matrix\n", "\n", "Now we can easily get an adjacency matrix to work with graph algorithms, numbers specify the bond type between the atoms" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(66, 66)\n" ] }, { "data": { "text/plain": [ "array([[0., 1., 0., ..., 0., 0., 0.],\n", " [1., 0., 2., ..., 0., 0., 0.],\n", " [0., 2., 0., ..., 0., 0., 0.],\n", " ...,\n", " [0., 0., 0., ..., 0., 0., 0.],\n", " [0., 0., 0., ..., 0., 0., 1.],\n", " [0., 0., 0., ..., 0., 1., 0.]])" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "mol = Chem.MolFromSmiles(smiles)\n", "adj_matrix = Chem.GetAdjacencyMatrix(mol, useBO=True)\n", "print(adj_matrix.shape)\n", "adj_matrix" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "here we can see the types of corresponding atoms themselves:" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "N 0 2 1 0 False\n", "C 1 3 0 0 False\n", "O 2 1 0 0 False\n", "C 3 3 1 0 False\n", "C 4 2 2 0 False\n", "C 5 2 2 0 False\n", "C 6 3 0 0 False\n", "N 7 1 2 0 False\n", "O 8 1 0 0 False\n", "N 9 2 1 0 False\n", "C 10 3 0 0 False\n", "C 11 1 3 0 False\n", "O 12 1 0 0 False\n", "C 13 3 1 0 False\n", "C 14 2 2 0 False\n", "C 15 2 2 0 False\n", "S 16 3 0 0 False\n", "C 17 1 3 0 False\n", "O 18 1 0 0 False\n", "C 19 3 0 0 False\n", "O 20 1 0 0 False\n", "N 21 2 1 0 False\n", "C 22 3 1 0 False\n", "C 23 2 2 0 False\n", "C 24 3 0 0 False\n", "N 25 1 2 0 False\n", "O 26 1 0 0 False\n", "C 27 3 0 0 False\n", "O 28 1 0 0 False\n", "N 29 3 0 0 False\n", "C 30 2 2 0 False\n", "C 31 2 2 0 False\n", "C 32 2 2 0 False\n", "C 33 3 1 0 False\n", "C 34 3 0 0 False\n", "O 35 1 0 0 False\n", "N 36 2 1 0 False\n", "C 37 3 1 0 False\n", "C 38 2 2 0 False\n", "O 39 2 0 0 False\n", "P 40 4 0 0 False\n", "O 41 1 0 0 False\n", "O 42 1 1 0 False\n", "O 43 1 1 0 False\n", "C 44 3 0 0 False\n", "O 45 1 0 0 False\n", "N 46 2 1 0 False\n", "C 47 3 1 0 False\n", "C 48 3 0 0 False\n", "O 49 1 0 0 False\n", "N 50 2 1 0 False\n", "C 51 3 1 0 False\n", "C 52 2 2 0 False\n", "C 53 2 2 0 False\n", "C 54 2 2 0 False\n", "N 55 2 1 0 False\n", "C 56 3 0 0 False\n", "N 57 1 1 0 False\n", "N 58 1 2 0 False\n", "C 59 3 0 0 False\n", "O 60 1 0 0 False\n", "O 61 1 1 0 False\n", "C 62 3 1 0 False\n", "C 63 1 3 0 False\n", "C 64 2 2 0 False\n", "C 65 1 3 0 False\n" ] } ], "source": [ "for atom in mol.GetAtoms():\n", " print(atom.GetSymbol(), atom.GetIdx(), atom.GetDegree(), atom.GetTotalNumHs(), atom.GetFormalCharge(), atom.GetIsAromatic())" ] } ], "metadata": { "kernelspec": { "display_name": "alphabase", "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.12.4" } }, "nbformat": 4, "nbformat_minor": 4 }