{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "665ce260",
   "metadata": {},
   "source": [
    "# 08 · Ciencias de la vida: biología y medicina\n",
    "\n",
    "Python es el lenguaje principal de la biología computacional y de la ciencia de datos médica. Este módulo usa\n",
    "tres bibliotecas maduras en problemas realistas: **Biopython** para secuencias y evolución, **lifelines** para\n",
    "el análisis de supervivencia de un ensayo clínico real y **scikit-learn** para un modelo de diagnóstico.\n",
    "\n",
    "> Son ejemplos docentes, no consejo médico ni herramientas clínicas validadas.\n",
    "\n",
    "**Aprenderás**\n",
    "1. Secuencias de ADN y de proteínas: transcripción, traducción, contenido de GC, marcos de lectura\n",
    "2. Simular la evolución y recuperarla con alineamiento de secuencias\n",
    "3. Construir un árbol genealógico (filogenia) a partir de distancias entre secuencias\n",
    "4. Análisis de supervivencia: curvas de Kaplan-Meier, la prueba log-rank y la regresión de Cox en un ensayo de cáncer de mama\n",
    "5. Un clasificador de diagnóstico: validación cruzada, curvas ROC y elegir un umbral según la sensibilidad"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ba13a807",
   "metadata": {},
   "source": [
    "## 1. Secuencias con Biopython\n",
    "Un gen es una secuencia de ADN; la célula lo copia a ARN (*transcripción*) y lee el ARN de tres en tres letras\n",
    "(*codones*) para construir una proteína (*traducción*). Diseñamos un gen para una proteína corta y lo pasamos\n",
    "por todo el proceso."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "1da94c2d",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-10-18T10:11:30.092049Z",
     "iopub.status.busy": "2026-10-18T10:11:30.091495Z",
     "iopub.status.idle": "2026-10-18T10:11:30.179005Z",
     "shell.execute_reply": "2026-10-18T10:11:30.177261Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "ADN      : ATGGCCCTCTGGATGAGATTACTTCCTCTATTGGCTTTACTCGCGTTATGGGGTCCGGATCCTGCCGCTGCGTAA\n",
      "ARN      : AUGGCCCUCUGGAUGAGAUUACUUCCUCUAUUGGCUUUACUCGCGUUAUGGGGUCCGGAUCCUGCCGCUGCGUAA\n",
      "proteína : MALWMRLLPLLALLALWGPDPAAA | coincide con el diseño: True\n",
      "contenido GC: 0.533 | complementaria inversa: TTACGCAGCGGCAGGATCCGGACC ...\n"
     ]
    }
   ],
   "source": [
    "from Bio.Seq import Seq\n",
    "from Bio.SeqUtils import gc_fraction\n",
    "from Bio.Data import CodonTable\n",
    "import random\n",
    "\n",
    "random.seed(7)\n",
    "protein = \"MALWMRLLPLLALLALWGPDPAAA\"      # un tramo tipo péptido señal, 24 aminoácidos\n",
    "table = CodonTable.unambiguous_dna_by_id[1]   # el código genético estándar\n",
    "codons_for = {}\n",
    "for codon, aa in table.forward_table.items():\n",
    "    codons_for.setdefault(aa, []).append(codon)\n",
    "\n",
    "gene = Seq(\"\".join(random.choice(codons_for[aa]) for aa in protein) + \"TAA\")   # retrotraducir + codón de parada\n",
    "print(\"ADN      :\", gene)\n",
    "print(\"ARN      :\", gene.transcribe())\n",
    "print(\"proteína :\", gene.translate(to_stop=True), \"| coincide con el diseño:\", str(gene.translate(to_stop=True)) == protein)\n",
    "print(\"contenido GC:\", round(gc_fraction(gene), 3), \"| complementaria inversa:\", gene.reverse_complement()[:24], \"...\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "b4e94e50",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-10-18T10:11:30.183084Z",
     "iopub.status.busy": "2026-10-18T10:11:30.182685Z",
     "iopub.status.idle": "2026-10-18T10:11:30.197202Z",
     "shell.execute_reply": "2026-10-18T10:11:30.196212Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{'A': 4, 'C': 2, 'D': 2, 'E': 2, 'F': 2, 'G': 4, 'H': 2, 'I': 3, 'K': 2, 'L': 6, 'M': 1, 'N': 2, 'P': 4, 'Q': 2, 'R': 6, 'S': 6, 'T': 4, 'V': 4, 'W': 1, 'Y': 2}\n",
      "ORF de al menos 20 aa: [(0, 120, 'MALWMRLLPLLALLALWGPDPAAA'), (2, 59, 'MHTPLLAVSTPSDWHFYYTQNGPLDEITSSIGFTRVMGSGSCRCVKQNSGNFDRSRRGAPS')]\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/patito/Developments/academy/python/.venv/lib/python3.12/site-packages/Bio/Seq.py:2874: BiopythonWarning: Partial codon, len(sequence) not a multiple of three. Explicitly trim the sequence or add trailing N before translation. This may become an error in future.\n",
      "  warnings.warn(\n"
     ]
    }
   ],
   "source": [
    "# la misma proteína puede escribirse con muchas secuencias de ADN: el código genético es redundante\n",
    "print({aa: len(c) for aa, c in sorted(codons_for.items())})\n",
    "\n",
    "# buscar marcos de lectura abiertos (ATG ... parada) en un tramo de ADN que esconde nuestro gen\n",
    "noise = lambda n: \"\".join(random.choice(\"ACGT\") for _ in range(n))\n",
    "genome = Seq(noise(120) + str(gene) + noise(150))\n",
    "orfs = []\n",
    "for frame in range(3):\n",
    "    prot = str(genome[frame:].translate())\n",
    "    pos = 0\n",
    "    for chunk in prot.split(\"*\"):\n",
    "        start = chunk.find(\"M\")\n",
    "        if start != -1 and len(chunk) - start >= 20:\n",
    "            orfs.append((frame, frame + 3 * (pos + start), chunk[start:]))\n",
    "        pos += len(chunk) + 1\n",
    "print(\"ORF de al menos 20 aa:\", [(f, s, p) for f, s, p in orfs])"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "8ff0fd43",
   "metadata": {},
   "source": [
    "## 2. Simular la evolución y recuperarla por alineamiento\n",
    "A partir de un gen ancestral, dejamos que cinco especies diverjan: cada linaje acumula mutaciones puntuales y\n",
    "algunas inserciones o deleciones. Después pedimos al `PairwiseAligner` de Biopython que vuelva a alinear las\n",
    "secuencias."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "7fbe41a9",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-10-18T10:11:30.202386Z",
     "iopub.status.busy": "2026-10-18T10:11:30.201966Z",
     "iopub.status.idle": "2026-10-18T10:11:30.357169Z",
     "shell.execute_reply": "2026-10-18T10:11:30.355793Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "puntuación 554\n",
      "target            0 TTTTGACTACGACTTACTCATTCCCTTGTCGGGGAGTTATGGAACAAGCACGGTGTCTGA\n",
      "                  0 ||||||||||||||.|||||||||||||||||||||-|||||||||.|||||||||||||\n",
      "query             0 TTTTGACTACGACTAACTCATTCCCTTGTCGGGGAG-TATGGAACATGCACGGTGTCTGA\n",
      "\n",
      "target           60 CACTAGAATACAGATAGTGCACACGACCGGCGTCGG\n"
     ]
    }
   ],
   "source": [
    "from Bio import Align\n",
    "\n",
    "def mutate(seq: str, n_subs: int, n_indels: int, rng: random.Random) -> str:\n",
    "    s = list(seq)\n",
    "    for _ in range(n_subs):\n",
    "        i = rng.randrange(len(s)); s[i] = rng.choice([b for b in \"ACGT\" if b != s[i]])\n",
    "    for _ in range(n_indels):\n",
    "        i = rng.randrange(len(s))\n",
    "        if rng.random() < 0.5: del s[i]\n",
    "        else: s.insert(i, rng.choice(\"ACGT\"))\n",
    "    return \"\".join(s)\n",
    "\n",
    "rng = random.Random(1)\n",
    "ancestor = noise(300)\n",
    "# un árbol que elegimos: ((A,B),(C,(D,E))) con ramas de distinta longitud\n",
    "ab = mutate(ancestor, 18, 1, rng);  cde = mutate(ancestor, 24, 1, rng)\n",
    "de = mutate(cde, 12, 1, rng)\n",
    "species = {\"A\": mutate(ab, 6, 0, rng), \"B\": mutate(ab, 8, 1, rng), \"C\": mutate(cde, 10, 1, rng),\n",
    "           \"D\": mutate(de, 5, 0, rng), \"E\": mutate(de, 7, 1, rng)}\n",
    "\n",
    "aligner = Align.PairwiseAligner(mode=\"global\", match_score=2, mismatch_score=-1,\n",
    "                                open_gap_score=-4, extend_gap_score=-1)\n",
    "best = aligner.align(species[\"A\"], species[\"B\"])[0]\n",
    "print(f\"puntuación {best.score:.0f}\")\n",
    "print(str(best)[:300])"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "0eda35ab",
   "metadata": {},
   "source": [
    "## 3. Un árbol genealógico a partir de distancias\n",
    "La fracción de posiciones distintas en cada pareja alineada da una matriz de distancias; el método de unión de\n",
    "vecinos (neighbour joining) la convierte en un árbol. Si el método funciona, recupera la agrupación que usamos\n",
    "en la simulación: (A, B) juntas y (D, E) juntas, con C más cerca de D y E."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "21bbf970",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-10-18T10:11:30.367738Z",
     "iopub.status.busy": "2026-10-18T10:11:30.367002Z",
     "iopub.status.idle": "2026-10-18T10:11:31.643197Z",
     "shell.execute_reply": "2026-10-18T10:11:31.641535Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "A   0.000000\n",
      "B   0.046667    0.000000\n",
      "C   0.167785    0.164983    0.000000\n",
      "D   0.196667    0.193980    0.090000    0.000000\n",
      "E   0.200669    0.194631    0.096990    0.039867    0.000000\n",
      "    A   B   C   D   E\n"
     ]
    },
    {
     "data": {
      "image/png": "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A4YMGYKePXvil19+qZHPFSSSSiEqW5FJRPXKxo0b8corryAxMRFPPfWU3OUQEdU5PONEREREJBGDExEREZFEDE5EREREEnGNExEREZFEPONEREREJBGDExEREZFE5nIXUB1arRY3b96Era0t7/NBREREVSKEQF5eHtzc3KBUVn5OqU4Hp5s3b8LDw0PuMoiIiKgeSElJgbu7e6Vt6nRwsrW1BfDPRB98KjcRERGRITQaDTw8PHS5ojJ1Ojg9uDxnZ2fH4ERERETVImXZDxeHExEREUnE4EREREQkEYMTERERkUQMTkREREQSMTgRERERScTgRERERCQRgxMRERGRRAxORERERBIxOBERERFJxOBEREREJBGDExEREZFEDE5EREREEjE4EREREUnE4EREREQkEYMTERERkUQMTkREREQSMTgRERERScTgRERERCQRgxMRERGRRAxORERERBIxOBERERFJxOBEREREJJG53AUQERE96S5cuICSkpIy252dneHq6ipDRVQRBiciIiKZBQYGAvgnKD3slVdewdy5c+UoiSoge3BKTk7Gtm3b4OjoiOnTp8tdDhERkSzeeOMNzJs3T+4y6DFkC073799HcHAwrl27BrVaDXNzcwYnIiIiqtVkWxyuUCjwzjvv4MKFCwgKCpKrDCIiolohPT0dCQkJel8ajUbusugRsp1xMjMzQ58+feTaPRER/R+tVovCwkIoFAq5S3kiqNXqco/11q1bcejQIb1tn332GX9X1jKyr3EyRHFxMYqLi3WPmcSJiKpHq9XCwcEBeXl5cpfyxAgICEBkZGSZ8MQ1TnVDnbqP0/Lly2Fvb6/78vDwkLskIqI6rbCwkKGJyAB16ozT/PnzMWfOHN1jjUbD8EREVA0Pn/VIT0+HtbW1jNU8GSq6VEd1Q50KTiqVCiqVSu4yiIjqJWtrawYnGT1YHP4wXl2pfepUcCIiIqqPnnrqKRw6dKjM4vC+ffvi008/lakqKo+swWn16tVIT0/H8ePHcfPmTSxcuBAA8N5776FBgwZylkZERFRjIiIi5C6BJJI1OKlUKlhaWmLgwIF623ntl4iIiGojWYPTlClT5Nw9ERERkUHq1O0IiIiIiOTE4EREREQkEYMTERERkUQMTkREREQSMTgRERERScTgRERERCQR7xxORETlSkxMxL179+Dn5yd3KXpK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m2++icjISFMfAiKiOkO24PT000/j6aeflmv3RLXGkSNHMG/ePLRq1QqWlpawsLBAREQEvvvuO4SGhkpuAwBz5szBt99+i4CAAGRnZ+PixYvYvn07nnvuOb1xfHx8YGVlBXd3d7zwwgt46qmn9GpSKBTw9vbGsWPHau5AEBHVAbK/q46IgKysLMyaNQujRo0CACxevBj//ve/9ULR49p8++232LlzJ/7++2/dotRVq1bhpZdewqVLl6BUKnXjrFixApMmTSpTx759+3D79m0kJCRgz549+O6770w6byKiuobB6RFarZZvy6VqM/QOzHZ2drpABADdu3fH+++/j9LSUt3HEj2uzcaNG9G2bVscPnwYQggIIWBmZoarV6/i6tWr8Pb2BgBYWlri1VdfLbeOo0eP4uLFizhz5gy8vb15Q0QiokcwOD1Eq9XCwcEBeXl5cpdC9YiU9180bNhQ77FKpYJWq0VJSYkuOD2uzdWrV+Ho6Ih9+/bptRs7dqxeDS4uLrqzT49avnw5gH9+FsaPH49BgwYhKSnp8ZMkInpCMDg9pLCwkKGJ6ix7e3t069YNq1evrrSdlLOpSqUSoaGh2Lx5MzIyMuDi4mKsMomI6jQGp4c8/AslPT2d9+GgKisoKNBd5qqpy77BwcFYt24dlixZAkdHR93269evo1mzZpX2TU1NLXMD2piYGNja2sLBwcEU5RIR1UkMThWwtrZmcKI6ZcGCBTh06BA6dOiAKVOmwMbGBidPnkRSUhKio6Mr7fvdd98hIiICvXr1gr29PaKjo7F161Z88cUXvEUIEdFDGJyIapibmxvGjh0LKysrAECLFi0wZMgQvTYuLi4YO3asbn2TlDa2trY4duwYwsPDcfz4cTRo0AD9+vXDN998o+tT3jjAP58DGRQUhL179+Ly5cto1aoVzp8/r1tQTkRE/5DtzuHGYOw7h1d2t2ciQ/C1RERUdxiSJ8p/aw0RERERlcHgRERERCQRgxMRERGRRAxORERERBIxOBERERFJxOBEREREJBGDExEREZFEDE5EREREEjE4EREREUnE4EREREQkEYMTERERkURVCk6XLl3Cyy+/DD8/P3h4eMDd3V33tWzZMmPXSERERFQrGByc8vLyEBgYCK1Wi1atWsHX1xevvfYaHBwcoFAo0K9fP1PUSURERCQ7g4PToUOH4OPjg++/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lVi6dClmz54NOzs7REVFYejQobh79y4+//zzcvsUFxejuLhY91ij0dRUuUREdcLD7/dp3LixjJVQRQICAhAZGakXntatW4e7d+8iICBAt62wsBDr1q1jcKplZHtXXXk+++wzLFy4EHl5eVAqy15FXLx4MZYsWVJmO99VR0T0D61WCwcHB+Tl5cldClXg0eB07do1eHt7Y8+ePXByctK102g0CA4ORnJyMry9veUq94lgyLvqalVw2r17N1588UWkpaXB1dW1zPPlnXHy8PBgcCIieohWq0VhYWGZy0FUOzx6qW7RokXYtWsX4uPjy7Tt1KkT+vbti2XLltVkiU+cOnE7Aq1WW+asUnR0NOzs7ODs7FxuH5VKBZVKVRPlERHVWUqlUncvJ6rdtFotNmzYgFdeeaXc51988UX873//w5IlS2BmZlbD1VF5ZAtOq1atQkZGBgYNGgQHBwf8/PPP+PTTT7F48WKYm8u+Zp2IiMjkSkpKsG3bNrRu3brc52fOnImePXuipKSEwamWkO1SXUlJCdauXYvt27cjMzMT3t7emDp1KgYNGiR5DN45nIiIiKqrzq5xMhSDExEREVWXIXlC9htgEhEREdUVDE5EREREEjE4EREREUnE4EREREQkEYMTERERkUQMTkREREQSMTgRERERScTgRERERCQRgxMRERGRRAxORERERBIxOBERERFJxOBEREREJBGDExEREZFEDE5EREREEjE4EREREUnE4EREREQkEYMTERERkUQMTkREREQSMTgRERERScTgRERERCQRgxMRERGRRAxORERERBIxOBERERFJxOBEREREJJG53AVUhxACAKDRaGSuhIiIiOqqBzniQa6oTJ0OTnl5eQAADw8PmSshIiKiui4vLw/29vaVtlEIKfGqltJqtbh58yZsbW2hUCiMMqZGo4GHhwdSUlJgZ2dnlDGfNDyGxsHjWH08hsbB41h9PIbGYarjKIRAXl4e3NzcoFRWvoqpTp9xUiqVcHd3N8nYdnZ2fHFXE4+hcfA4Vh+PoXHwOFYfj6FxmOI4Pu5M0wNcHE5EREQkEYMTERERkUQMTo9QqVRYtGgRVCqV3KXUWTyGxsHjWH08hsbB41h9PIbGURuOY51eHE5ERERUk3jGiYiIiEgiBiciIiIiiRiciIiIiCSq98Hpzp07iImJQVpamlH7VGXc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",
      "text/plain": [
       "<Figure size 600x320 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "from Bio.Phylo.TreeConstruction import DistanceMatrix, DistanceTreeConstructor\n",
    "from Bio import Phylo\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "names = list(species)\n",
    "def p_distance(a, b):\n",
    "    aln = aligner.align(a, b)[0]\n",
    "    s1, s2 = aln[0], aln[1]\n",
    "    pairs = [(x, y) for x, y in zip(s1, s2) if x != \"-\" and y != \"-\"]\n",
    "    return sum(x != y for x, y in pairs) / len(pairs)\n",
    "\n",
    "matrix = [[p_distance(species[names[i]], species[names[j]]) for j in range(i)] + [0.0] for i in range(len(names))]\n",
    "dm = DistanceMatrix(names, matrix)\n",
    "print(dm)\n",
    "tree = DistanceTreeConstructor().nj(dm)\n",
    "tree.root_at_midpoint()\n",
    "fig, ax = plt.subplots(figsize=(6, 3.2))\n",
    "Phylo.draw(tree, axes=ax, do_show=False); ax.set_title(\"Árbol por unión de vecinos\"); plt.tight_layout(); plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "659b8015",
   "metadata": {},
   "source": [
    "## 4. Análisis de supervivencia en un ensayo real de cáncer de mama\n",
    "**GBSG2** (German Breast Cancer Study Group, 686 pacientes) siguió a mujeres después de la cirugía y registró\n",
    "el tiempo hasta que el cáncer reapareció (`time`, en días) o hasta que terminó el seguimiento sin recaída\n",
    "(`cens = 0`, una observación *censurada*). Ignorar la censura sesga cualquier media, y por eso el análisis de\n",
    "supervivencia tiene sus propios métodos.\n",
    "\n",
    "La pregunta del ensayo: **¿alarga la terapia hormonal (`horTh`) la supervivencia libre de recaída?**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "4be4d85b",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-10-18T10:11:31.647261Z",
     "iopub.status.busy": "2026-10-18T10:11:31.646728Z",
     "iopub.status.idle": "2026-10-18T10:11:34.232032Z",
     "shell.execute_reply": "2026-10-18T10:11:34.230046Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(686, 10)\n",
      "{'no': 440, 'yes': 246} | eventos (recaídas): 299\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>horTh</th>\n",
       "      <th>age</th>\n",
       "      <th>menostat</th>\n",
       "      <th>tsize</th>\n",
       "      <th>tgrade</th>\n",
       "      <th>pnodes</th>\n",
       "      <th>progrec</th>\n",
       "      <th>estrec</th>\n",
       "      <th>time</th>\n",
       "      <th>cens</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>no</td>\n",
       "      <td>70</td>\n",
       "      <td>Post</td>\n",
       "      <td>21</td>\n",
       "      <td>II</td>\n",
       "      <td>3</td>\n",
       "      <td>48</td>\n",
       "      <td>66</td>\n",
       "      <td>1814</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>yes</td>\n",
       "      <td>56</td>\n",
       "      <td>Post</td>\n",
       "      <td>12</td>\n",
       "      <td>II</td>\n",
       "      <td>7</td>\n",
       "      <td>61</td>\n",
       "      <td>77</td>\n",
       "      <td>2018</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>yes</td>\n",
       "      <td>58</td>\n",
       "      <td>Post</td>\n",
       "      <td>35</td>\n",
       "      <td>II</td>\n",
       "      <td>9</td>\n",
       "      <td>52</td>\n",
       "      <td>271</td>\n",
       "      <td>712</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>yes</td>\n",
       "      <td>59</td>\n",
       "      <td>Post</td>\n",
       "      <td>17</td>\n",
       "      <td>II</td>\n",
       "      <td>4</td>\n",
       "      <td>60</td>\n",
       "      <td>29</td>\n",
       "      <td>1807</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>no</td>\n",
       "      <td>73</td>\n",
       "      <td>Post</td>\n",
       "      <td>35</td>\n",
       "      <td>II</td>\n",
       "      <td>1</td>\n",
       "      <td>26</td>\n",
       "      <td>65</td>\n",
       "      <td>772</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "  horTh  age menostat  tsize tgrade  pnodes  progrec  estrec  time  cens\n",
       "0    no   70     Post     21     II       3       48      66  1814     1\n",
       "1   yes   56     Post     12     II       7       61      77  2018     1\n",
       "2   yes   58     Post     35     II       9       52     271   712     1\n",
       "3   yes   59     Post     17     II       4       60      29  1807     1\n",
       "4    no   73     Post     35     II       1       26      65   772     1"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from lifelines.datasets import load_gbsg2\n",
    "from lifelines import KaplanMeierFitter, CoxPHFitter\n",
    "from lifelines.statistics import logrank_test\n",
    "\n",
    "gb = load_gbsg2()\n",
    "print(gb.shape); print(gb[\"horTh\"].value_counts().to_dict(), \"| eventos (recaídas):\", int(gb[\"cens\"].sum()))\n",
    "gb.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "cb63b152",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-10-18T10:11:34.236368Z",
     "iopub.status.busy": "2026-10-18T10:11:34.235460Z",
     "iopub.status.idle": "2026-10-18T10:11:34.689637Z",
     "shell.execute_reply": "2026-10-18T10:11:34.687585Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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6lSWLVtGbm4uAF9++SVbtmzhtddei6mfTZRZbm7t+fn5CdfQ2udJ5v295ZZbuOWWW1p8HIQ2fV133XX4/X4eeuihhI8L/39+7bXXmmTdW9Lac/V6fauuL4SQjKwQIkl6vZ4JEyawYMECzjzzTD777LPIfVarFQhl2TqCqqooioLRaIw5Ht4oFWY0Gpk6dSpvv/12qzJ3JpOJY445hnfeeafJa/rf//6HwWBg8uTJbXoN4eeZOHEi77zzTpOuA6+99lqTx/7iF7/g7bffTlgS0BoXXXQRixcv5scff+Skk05qklVs/N4+88wzca+zefNmNmzYEHftJ554YovrSPZ50u3888/H7/ej1WqZOXNmwscdd9xxZGVlxe2G0ZK2nCuESI4EskKIhHbs2MEpp5zCW2+9xb59+3C73XzxxRd89tlnnHDCCZHHhetB33zzzSYfCbcHRVE4/fTTefbZZ/n444+pr6/no48+Yt68eRxzzDExj7377rtRVZVTTjmFr7/+mvr6etatW8fVV1/Nl19+mfA5Fi5cSGVlJeeddx5btmyhvLycO++8k8WLF3PddddRWFiYltdyyy23sHv37kjdZmlpKdddd13cbOY999yD0+nk9NNPZ/ny5dTV1bFv3z7effddfvWrX7Fp06ZWPfe5557LkiVLWLt2LSeccAJlZWVMmDCBoqIibrrpJrZs2RLpjJCoDvSII47gmmuu4YcffsDhcPD888/zr3/9i4svvphRo0YlfO7WPk+65efn4/F4cDqdkTKQeHJycrj//vtZvHgx8+bN4+eff8blcrF582aefPLJJrXM6TpXCJEcCWSF6MamT58ed0RtuH6vf//+XH311Tz66KOMHz+e/Px8LrvsMn7729/y3HPPRa5zwgkn8Oc//5m///3vmEymmD6y7eWRRx7hrLPO4rzzzqOoqIg77riDZ555JvIRedjIkSNZsWIFQ4YM4de//jX5+fmcd955DB48mKOOOirh9SdNmsSnn36Ky+Xi8MMPp7i4mMWLF/N///d/3HTTTWl7HccddxxvvfUW69atY9iwYRx11FEUFxc3KZkAGD58OD/++CPDhw/nvPPOIy8vjwkTJvDggw8ye/bsJpuhknHWWWfxyiuvsGnTJo4//njq6up4++23MRqNHHbYYYwcOZL169fz+OOPxz3fbrdz1113MW/ePHr27Mmf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8Sa1q9+ETcvi37Z+AvUV4KlNfPO52uldEEKIzKGqKk6vv1NuqqomtcZly5ZhNpu57777WLt2LZ988gl+v59TTz2ViRMnUl5ezvbt23n99df5/e9/z3fffRdz/ocffsj333/Pxo0bufLKKwF4/fXXWbt2LevWraOsrIzevXvzxz/+sclzv/766yxfvpxdu3bx8ccfc9ddd/H2228nXGuy123ss88+Y8WKFWzbto1PPvmEu+++O/I6vF4vM2fOZOLEiVRUVFBeXs5pp53GzJkzqa+vb/G1AtTV1bFnzx727t3LWWedxYwZM3A6nezbt4+9e/dy7LHHct1110Uev3HjRn77299y9913s3fvXkpLS/F6vcyePbvJ2nfu3MmePXvYuXMnf/vb35g9e3akTVV+fj5r165l7dq1bNq0ia1bt/Lll1/y8MMPN/t+nHLKKdx6660tvm/NPXdrXkNH6dTSgm+//Zbnn3+euro6AB588EFeffVVpk2bFinQfv/99/n666+59tprAbj99ts57rjjmDBhAuPGjePtt99m1qxZnHHGGZ32OjqCNxCM+V6jKOi1SuRjkIVnjsHjD8Y7NeLGN35iR4UTF0Z+CvZntGYHJncZhT/ez4rh11LtBqtJRaOBfKsRnSZ0ba3qx+wpha0fN79IgxX6TZQyBSFEt+byBRj1z2Wd8tzrFpyMxZDaP+3Lli1j69atzJo1i59//hmA3Nxcxo0bx+uvv84RRxwReezcuXNjPv4P8/v97Nu3D4fDwbRp05g7d26Tx/z+97+PbNqeNGkSM2bM4LHHHuPUU09NuLZkrtvYvHnzKCoqAuCYY46hf//+rFq1iiOOOIL333+f7du38+2330Y+/r/tttt48sknee211zj//PNbfK033XQTer0egDPPPJNFixaxYMGCyICmM844I6as8fHHH2fMmDFccsklQGh/z2233cYJJ5zAnj17Yp7j5ptvjnykf/7553P99dezc+fOmM3ubrebPXv24HK5OPHEE/nggw+aDfCHDRtG7969W3zfmnvu1ryGjtKpgazNZmPAgAEA3HPPPZHj0fUv5513Hscff3zk+6KiIlauXMk777xDaWkpv/vd7zj22GM7aMUdT6OA1aijzt20YXCl00e+NfTDZjFoyTLpm73WwjPH4HM5uP6VNZzuvJUPDX9mkKYEq6eM41f/qdlz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Qk4//XSCwc6fnSyEEEIIITpOp2Zkr7/+ek455RQefPBBAE4//XT69OnDE088wVVXXdXk8Yqi8N1335Gfnx85NnbsWI488khWrFjBUUcd1WFrF0IIIYQQnavTMrIul4vPPvuMX//615Fj2dnZTJ06lXfffTfuOYqixASxAIWFhQDU1dW121qFEEIIIUTX02kZ2V27dhEIBOjbt2/M8eLiYj7++OOkr3P33XeTn5/fbDbW4/Hg8Xgi3zscjtYvWAghhBBCdCmdlpH1er0AmM3mmOMWiyVyX0sWLVrEww8/zFNPPYXNZkv4uIULF5KdnR25NQ6ehRBCCCFE5um0QDYnJweAysrKmOMVFRXNdi0I++9//8vvfvc7nnrqKaZPn97sY+fPn09NTU3ktmvXrpTXLYQQQgghuoZOC2SLi4spKCjgxx9/jDn+448/Mnbs2GbPffHFF7n44ot57LHHuPDCC1t8LqPRiN1uj7kJIYQQQojM1qntty666CKeeOIJysvLAVi2bBk//vgjF198ceQx9957L3PmzIl8v3TpUi688EIeffTRmMcJIYQQQojupVPbby1YsIA1a9YwdOhQhg4dypo1a7jttts49thjI49Zu3YtX3/9NQA1NTWcf/75ZGdn88ILL/DCCy9EHjdv3jxOPvnkDn8NQgghhBCic3RqIGu1WnnvvfdYt24dpaWljBo1ip49e8Y8Zt68eVRXVwOhjWCvv/563GuNHj26vZcrhBBCCCG6kE4fUQswatQoRo0aFfe+6ABVr9czbdq0jlqWEEIIIYTowjq1RlYIIYQQQohUSSArhBBCCCEykgSyQgghhBAiI0kgK4QQQgghMpIEskIIIYQQIiNJICuEEEIIITKSBLJCCCGEECIjSSArhBBCCCEykgSyQgghhBAiI0kgK4QQQgghMpIEskIIIYQQIiNJICuEEEIIITKSBLJCCCGEECIjSSArhBBCCCEykgSyQgghhBAiI0kgK4QQQgghMpIEskIIIYQQIiNJICuEEEIIITKSBLJCCCGEECIjSSArhBBCCCEykgSyQgghhBAiI0kgK4QQQgghMpIEskIIIYQQIiNJICuEEEIIITKSBLJCCCGEECIjSSArhBBCCCEykgSyQgghhBAiI0kgK4QQQgghMpIEskIIIYQQIiNJICuEEEIIITKSrrMXIIQQQgjRXVXWe9Fq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",
      "text/plain": [
       "<Figure size 700x400 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "valor p de la prueba log-rank: 0.0034\n"
     ]
    }
   ],
   "source": [
    "fig, ax = plt.subplots(figsize=(7, 4))\n",
    "for group, d in gb.groupby(\"horTh\"):\n",
    "    KaplanMeierFitter(label=f\"terapia hormonal: {group}\").fit(d[\"time\"] / 365.25, d[\"cens\"]).plot_survival_function(ax=ax)\n",
    "ax.set_xlabel(\"años tras la cirugía\"); ax.set_ylabel(\"probabilidad sin recaída\"); ax.set_title(\"Estimación de Kaplan-Meier\")\n",
    "plt.tight_layout(); plt.show()\n",
    "\n",
    "yes, no = gb[gb.horTh == \"yes\"], gb[gb.horTh == \"no\"]\n",
    "test = logrank_test(yes[\"time\"], no[\"time\"], event_observed_A=yes[\"cens\"], event_observed_B=no[\"cens\"])\n",
    "print(f\"valor p de la prueba log-rank: {test.p_value:.4f}\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "70b73c86",
   "metadata": {},
   "source": [
    "Las curvas se separan y la prueba log-rank indica que la diferencia difícilmente se debe al azar. Pero las\n",
    "pacientes tratadas y no tratadas pueden diferir en otras cosas (edad, tamaño del tumor, ganglios linfáticos).\n",
    "La **regresión de riesgos proporcionales de Cox** estima el efecto de la terapia ajustando por ellas; un\n",
    "cociente de riesgos (hazard ratio) menor que 1 significa menos riesgo de recaída."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "7df7faf5",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-10-18T10:11:34.694522Z",
     "iopub.status.busy": "2026-10-18T10:11:34.694145Z",
     "iopub.status.idle": "2026-10-18T10:11:35.104576Z",
     "shell.execute_reply": "2026-10-18T10:11:35.102485Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>model</th>\n",
       "      <td>lifelines.CoxPHFitter</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>duration col</th>\n",
       "      <td>'time'</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>event col</th>\n",
       "      <td>'cens'</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>baseline estimation</th>\n",
       "      <td>breslow</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>number of observations</th>\n",
       "      <td>686</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>number of events observed</th>\n",
       "      <td>299</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>partial log-likelihood</th>\n",
       "      <td>-1737.174</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>time fit was run</th>\n",
       "      <td>2026-10-18 10:11:34 UTC</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div><table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th style=\"min-width: 12px;\"></th>\n",
       "      <th style=\"min-width: 12px;\">exp(coef)</th>\n",
       "      <th style=\"min-width: 12px;\">exp(coef) lower 95%</th>\n",
       "      <th style=\"min-width: 12px;\">exp(coef) upper 95%</th>\n",
       "      <th style=\"min-width: 12px;\">p</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>horTh</th>\n",
       "      <td>0.714</td>\n",
       "      <td>0.554</td>\n",
       "      <td>0.919</td>\n",
       "      <td>0.009</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>age</th>\n",
       "      <td>0.991</td>\n",
       "      <td>0.973</td>\n",
       "      <td>1.009</td>\n",
       "      <td>0.311</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>menostat</th>\n",
       "      <td>1.306</td>\n",
       "      <td>0.912</td>\n",
       "      <td>1.871</td>\n",
       "      <td>0.145</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>tsize</th>\n",
       "      <td>1.008</td>\n",
       "      <td>1.000</td>\n",
       "      <td>1.016</td>\n",
       "      <td>0.051</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>tgrade</th>\n",
       "      <td>1.324</td>\n",
       "      <td>1.075</td>\n",
       "      <td>1.629</td>\n",
       "      <td>0.008</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>pnodes</th>\n",
       "      <td>1.051</td>\n",
       "      <td>1.036</td>\n",
       "      <td>1.067</td>\n",
       "      <td>&lt;0.0005</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>progrec</th>\n",
       "      <td>0.998</td>\n",
       "      <td>0.997</td>\n",
       "      <td>0.999</td>\n",
       "      <td>&lt;0.0005</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>estrec</th>\n",
       "      <td>1.000</td>\n",
       "      <td>0.999</td>\n",
       "      <td>1.001</td>\n",
       "      <td>0.708</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table><br><div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>Concordance</th>\n",
       "      <td>0.688</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Partial AIC</th>\n",
       "      <td>3490.349</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>log-likelihood ratio test</th>\n",
       "      <td>101.860 on 8 df</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>-log2(p) of ll-ratio test</th>\n",
       "      <td>58.965</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/latex": [
       "\\begin{tabular}{lrrrr}\n",
       " & exp(coef) & exp(coef) lower 95% & exp(coef) upper 95% & p \\\\\n",
       "covariate &  &  &  &  \\\\\n",
       "horTh & 0.714 & 0.554 & 0.919 & 0.009 \\\\\n",
       "age & 0.991 & 0.973 & 1.009 & 0.311 \\\\\n",
       "menostat & 1.306 & 0.912 & 1.871 & 0.145 \\\\\n",
       "tsize & 1.008 & 1.000 & 1.016 & 0.051 \\\\\n",
       "tgrade & 1.324 & 1.075 & 1.629 & 0.008 \\\\\n",
       "pnodes & 1.051 & 1.036 & 1.067 & 0.000 \\\\\n",
       "progrec & 0.998 & 0.997 & 0.999 & 0.000 \\\\\n",
       "estrec & 1.000 & 0.999 & 1.001 & 0.708 \\\\\n",
       "\\end{tabular}\n"
      ],
      "text/plain": [
       "<lifelines.CoxPHFitter: fitted with 686 total observations, 387 right-censored observations>\n",
       "             duration col = 'time'\n",
       "                event col = 'cens'\n",
       "      baseline estimation = breslow\n",
       "   number of observations = 686\n",
       "number of events observed = 299\n",
       "   partial log-likelihood = -1737.174\n",
       "         time fit was run = 2026-10-18 10:11:34 UTC\n",
       "\n",
       "---\n",
       "          exp(coef) exp(coef) lower 95% exp(coef) upper 95%       p\n",
       "covariate                                                          \n",
       "horTh         0.714               0.554               0.919   0.009\n",
       "age           0.991               0.973               1.009   0.311\n",
       "menostat      1.306               0.912               1.871   0.145\n",
       "tsize         1.008               1.000               1.016   0.051\n",
       "tgrade        1.324               1.075               1.629   0.008\n",
       "pnodes        1.051               1.036               1.067 <0.0005\n",
       "progrec       0.998               0.997               0.999 <0.0005\n",
       "estrec        1.000               0.999               1.001   0.708\n",
       "---\n",
       "Concordance = 0.688\n",
       "Partial AIC = 3490.349\n",
       "log-likelihood ratio test = 101.860 on 8 df\n",
       "-log2(p) of ll-ratio test = 58.965"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "X = gb.assign(horTh=(gb.horTh == \"yes\").astype(int), menostat=(gb.menostat == \"Post\").astype(int),\n",
    "              tgrade=gb.tgrade.map({\"I\": 1, \"II\": 2, \"III\": 3}))\n",
    "cph = CoxPHFitter().fit(X[[\"time\", \"cens\", \"horTh\", \"age\", \"menostat\", \"tsize\", \"tgrade\", \"pnodes\", \"progrec\", \"estrec\"]],\n",
    "                        duration_col=\"time\", event_col=\"cens\")\n",
    "cph.print_summary(columns=[\"exp(coef)\", \"exp(coef) lower 95%\", \"exp(coef) upper 95%\", \"p\"], decimals=3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "12204c31",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-10-18T10:11:35.108835Z",
     "iopub.status.busy": "2026-10-18T10:11:35.108203Z",
     "iopub.status.idle": "2026-10-18T10:11:35.385232Z",
     "shell.execute_reply": "2026-10-18T10:11:35.383272Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAk4AAAFeCAYAAABzZ5DzAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjExLjIsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvgI3uAAAAAAlwSFlzAAAPYQAAD2EBqD+naQAAVZ5JREFUeJzt3Xd4FNX7NvA7dZPAZtNIJR0IoVcBKaGJCCiCNPUrPXSpoUREBIQgilIVBBQREBRBRDoIGDoIgvT0bCqk937eP3gzP5ZN2QDJbsL9ua5cOmfOmXnmsGQfzpw5oyeEECAiIiKiculrOwAiIiKi6oKJExEREZGGmDgRERERaYiJExEREZGGmDgRERERaYiJExEREZGGmDgRERERaYiJExEREZGGmDgRERERaYiJE1E1lJOTAz09PXz22WfaDkUrbGxsMHbs2Eo/z8vYzykpKbCxscFPP/2k7VC0JiEhAebm5tizZ4+2QyEdxMSJ6Dnl5ORg3bp16NKlC6ysrGBiYgJPT0/069cPe/bsQX5+vrZDfGYpKSnQ09PD8uXLtR0KVZHFixejTp06eO+991TKTUxM0K9fP7X6z/v5z8rKwty5c+Hm5gZjY2M4Oztj1qxZyMjIUKvbokUL6Onpqf20b99ere6WLVvg6ekJGxsbjB8/HtnZ2Wp1Bg8ejGHDhqmV29jYYNq0aZgzZw5yc3PLjJ9eQoKInllsbKxo0aKFsLOzE5s2bRIxMTEiNzdX3Lt3T8yZM0cYGRmJffv2aTvMZ5acnCwAiICAAG2HosLa2lqMGTNG22HUOElJScLU1FSsWbNGbZ9MJhN9+/ZVKXvez39hYaHo2rWrsLKyEn/88YdIS0sTZ86cES4uLsLHx0cUFhaq1G/evLno0aNHuddx/vx5YWBgII4cOSIiIyOFl5eXmD17tkqdffv2CWtraxEfH1/iMaKjo4W+vr7YunVrueejlwsTJ6Ln4OPjI8zNzUVwcHCJ+//++29x4sSJKo7qxWHi9HL5+uuvhaGhoXj06JHavpISp+f9/B84cEAAEOvWrVMp/+OPPwQAsWPHDpVyTROnDz/8UPj4+Ejbq1evFk5OTtJ2cnKycHBwENu2bSvzOD169BDt27cv93z0cuGtOqJndPr0aZw5cwbTpk2Dp6dniXU6d+6MHj16SNsZGRnw8/OTbks4OTlh/PjxSEhIUGlXWFiIVatWoUWLFjAzM4OjoyOGDx+OiIgIAKXPvSksLMRXX32Fpk2bwsTEBJaWlnjnnXcQFBQk1YmLi4Oenh5WrVqFgwcPSnUbNWqE/fv3S/X+/fdfWFpaAgD8/f2l2yIjR46s0PkAYOPGjWjRogXkcjns7e3Rr18/XLp0qdw+TkpKwqhRo2BlZQWFQoGhQ4ciKSmpxLqaxvK0J/tj3759aNasGYyNjbFr167n6mdNrzshIQEjRoxQu8aS5nFp+vl51v4+cOAAmjZtChsbm3LrPsvn/2kXL14EAPj4+KiUd+3aFQCwe/fucuMoSUxMDBwdHaXtunXrIjY2FkIIAICfnx+aN2+ODz74oMzjdO/eHRcvXsTDhw+fKQ6qobSduRFVV3PnzhUAxPnz5zWqn5+fL1599VVRp04d8eeff4rU1FRx5swZ4e7uLry8vERaWpoQQoiioiIxYMAAIZfLxcaNG0VsbKyIj48X27dvF3PnzhVCCJGdnS0AiCVLlqicY/DgwcLCwkJs27ZNJCUlidDQUDFgwABhY2MjlEqlEOLx7RUAYtCgQWLcuHEiPDxcxMfHi2HDhgkjIyMREREhHa+8ESdNzrd9+3bplkdqaqpITEwUhw8fFoMGDSqzv/Ly8kSbNm1E3bp1xcmTJ0Vqaqo4dOiQeOedd4SVlZXaiJMmsZSkuD/69+8vRo0aJcLCwsTt27fF6dOnn6ufNbnuvLw80bJlS+Hs7CxOnTol0tLSxNGjR8XgwYPVrlHTz8+z9ndBQYEwNTUVvr6+Je5/esSpop//kvj7+wsA4r///lMpT0tLEwCEq6urSnnz5s2FmZmZMDc3F8bGxqJBgwbC399fZGRkqNR7esRpzZo1wtHRUQghxMmTJ4VcLlf5nJfm+PHjAoDYs2fPs10g1UhMnIie0bBhwwQAERUVpVH9nTt3CgBi586dKuWBgYEqycnvv/8uAIjvvvuu1GOV9IV+8OBBAUD88MMPKnUzMzOFnZ2dmDx5shDi/xKFxo0bi6KiIqnew4cPhYGBgVi0aJFUVlbipOn5xo4dK5ydncvomZLt2LFDABAHDhxQKd++fbsAoJJUaBpLSYr7w9PTU21OzfP0sybX/dNPPwkA4uDBgyrlu3btUrtGTT8/z9rfcXFxAoD45JNPStz/dOJU0c9/Sfbs2SMAiPXr16uUF9/CMzMzUykfN26cOHDggEhISBAxMTFiw4YNQi6XizZt2oicnByp3rlz54SBgYE4duyYUCqVomHDhsLPz09kZmYKDw8PsXbtWpGQkCDeeecdoVAohLe3tzh06JBafLdu3RIAxMqVK5/5Gqnm4a06oipy8uRJ6OnpYcCAASrlnTp1gp2dHU6ePAkAOHToEACoPdVUngMHDkBfXx8DBw5UKTczM0OHDh1w5swZlfI+ffpAT09P2q5Tpw5sbW0RGhr6Qs/XvHlzKJVKTJw4EZcvX0ZhYaFGxz958iQMDQ3Rp08flfK33377mWMpS79+/aCvX/6vxBd53adOnYKRkRF69+6tUv7mm2+q1dX08/Os/Z2SkgIAkMvlGtV/Efr374/WrVtj4cKFOHjwIDIyMnD27Fl8+OGHMDQ0hIGBgUr9jRs3ol+/frC2toaDgwPGjx+PVatW4erVq/jhhx+keq+++iq++eYbjBs3Ds2bN0fHjh2xaNEiLFiwAPb29pg0aRLGjRuHhIQEBAcHY8aMGRgwYACUSqXK+czNzQH8X98QAVyOgOiZubq6AgAiIyM1qp+YmAiFQgETExO1ffb29tI8lYcPH0KhUKBWrVoViicuLg5FRUWwsrKSvnT09fWhr6+P33//HYmJiSr1HRwc1I5hbm6u8ZeEpuebOHEiAgICcPz4cbRr1w6WlpZ4++23y51zk5iYCBsbG7VkplatWmp9U9FrL4mTk1OVX3diYiKsra3VrtHMzAy1a9dW6w9NPj/P2t8WFhYAgLS0NI36oaKf/5IYGhrixIkTGDJkCHx9fWFlZYURI0Zgzpw5aNeunUZ/JsWJ9NmzZ1XKx40bh7CwMCQmJmLz5s24ffs2NmzYgC1btiAvLw/79u2Dn58fbGxs4OvrCzs7O/z2228qxyjui+K5fkQAEyeiZ1Y8SnD48GGN6ltZWSE1NRU5OTlq++Lj46UJuXXq1EFqaioyMzMrFI+NjQ1kMhmysrJQUFCAwsJCFBUVoaioCEIIxMTEqNR/crTpWWh6PgMDA8ybNw/BwcGIjIzE+vXrERISAh8fHwQHB5d6fGtrayQkJKCoqEilPDMzU61vKnrtJTEyMqry67a2tkZiYqLaNWZlZamtY6Tp5+dZ+9vGxgZmZmaIi4vTqB8q+vkvjYWFBdavX4+YmBjk5eUhJCQEY8eOxc2bN9GlS5fnOnax/Px8jBkzBh999BEaNmyIuLg4CCFUJpA7OTkhOjpapV1sbCyA/0sSiQAmTkTPrGvXrujSpQvWrFmDsLCwEusEBgZKt1B69OgBIYTKk2sAcP78ecTFxUlPHxUvMrhz584KxfPmm28iNzcXv//+ewWvpHRmZmbQ09MrcRHAZzmfs7MzPvjgA6xduxa5ubm4fPlyqXW7d++OgoICtS/mp/vvWWN5Vi/yurt164b8/HwcO3ZMpf7BgwfVjqHp50eT85bEwMAAHTp0wNWrVzW6pop+/ivixx9/RHZ2NqZMmVJu3eL+6NixY6l1AgICoKenhzlz5gB4PEKnp6enklBHR0erjXAV91enTp0qfA1Ug2lxfhVRtRcbGyuaN28uHBwcxObNm0VsbGypCwDm5eWJdu3aCVtbW3Hw4EGRlpYmAgMDhYeHh6hXr55ITU0VQqg+Vffdd9+JuLg4ER8fL3bs2FHuU3VDhgwRlpaW0mKE6enp4vr16+Ljjz8WixcvlmIGIL7++mu16/Hy8hL9+/dXKWvQoIHo1q2bSEpKUquvyfnGjRsnVq5cKe7cuSOys7OFUqkU//vf/4SJiYkICQkptW/z8vJEq1atVJ44O3LkSKlP1WkSS2l/hqX1x/P0sybXnZubK1q2bClcXV3F6dOnRVpamjh27JgYOnSo2jVq+vl51v4WQohVq1ZVaB2ninz+SzNx4kRx4MABkZKSIhISEsQ333wjTE1NxapVq1Tq/fHHH2LcuHHi4sWLIiUlRcTFxYnvvvtOmJubi1atWons7OwSj3/79m1hZmYmrl69qlI+YMAA0a1bN5GQkCA2b94sZDKZ2pN2XMeJSsLEieg5ZWdnizVr1oiOHTsKhUIhZDKZ8PDwEP369RO//vqryMvLk+qmpaWJGTNmCBcXF2FoaCjs7e3F2LFj1VYvLigoEF988YVo3LixkMlkwtHRUQwfPlz6xV7aF3phYaH49ttvRdu2bUWtWrWEXC4XrVq1EsuWLROJiYlCiIonTqdPnxYtWrQQxsbGAoAYMWJEhc4XGRkp5syZIxo1aiRMTEyEg4ODGDBggLh8+XK5ffvo0SMxfPhwYWFhIeRyuXjnnXfEo0ePSlwAU5NYSvIsidOLvO5Hjx6JDz74QLrGIUOGiISEBCGXy8WkSZNU6mry+Xme/k5OTq7QyuHFfaTp578kt2/flpJhc3Nz0aNHD3HkyBG1erm5uWLr1q2ic+fOwtLSUshkMtGoUSOxYMECteUIihUWFor27durrRouxOOnSAcMGCDMzc1Fw4YN1Z7e5MrhVBo9If7/imBERKQTUlNTYWFhgcWLF2PBggVVem4/Pz8cPHgQt2/f1ugpw5pqwYIF2LFjB+7evQuZTKbtcEiHvLx/K4iIdFTx011Pr6hdFT7++GM8evQI27dvr/Jz64rExESsXr0aK1asYNJEajjiRESkRStWrICDgwN69uwJmUyGY8eOYfLkyWjVqhWOHz+u7fCI6ClMnIiItCgqKgoLFizAqVOnpHesDRo0CIsWLarwWl5EVPmYOBERERFpiHOciIiIiDTExImIiIhIQ4baDqCmKioqQkxMDORy+XO/2oKIiIgqjxAC6enpcHR0LHcZDiZOlSQmJgbOzs7aDoOIiIg0pFQqUbdu3TLrMHGqJHK5HMDjPwRzc3MtR0OkmfDwcCxZsgQLFiyAm5ubtsMhIqoSaWlpcHZ2lr67y8LEqZIU354zNzdn4kTVhlwuh5GREeRyOT+3RPTS0WRqDSeHE5FET08PhoaGnJdHRFQKruNUSdLS0qBQKJCamsp/uRMREemwinxnc8SJiIiISENMnAAkJycjOTlZ22EQaV10dDQ++ugjREdHazsUIiKdpNXJ4YmJiTA0NIRCodBmGPjwww9hYmKCzZs3azUOIm3Ly8tDeHg48vLytB0KlcHHxwdKpbLMOs7Ozjhz5kwVRUT08tDqiNOIESOwcOFCbYZARFXMw8MDHh4e2g6jWlMqlYiMjCx1f2RkZLmJFVUdfuZrFq2NOCUnJyMnJwcZGRmIiooCANjb28PQ8HFIqampMDU1hbGxsXQbzdLSEgCQkJAAY2NjmJubIy0tDXl5ebCxsUFKSgoyMjIAAFZWVjAzMyv1/E8evzQFBQVISUmBjY3NC7lmIqIXxcXFBaGhoSXu45c0UeXR2ojTkiVLcO7cOezevRvt27dH+/btERERgcTERLz22muwsrKCnZ0d+vTpg6FDh2L27NlS22HDhsHX1xedOnWCq6srJk6cCAD4/PPPpWPZ2NigefPmuHz5ssp5k5OT8cYbb6gc/+HDhyp18vPzMXPmTFhaWqJBgwZQKBT49NNPwQcQiYiIXm5aG3H66quv8ODBA9SrVw+rVq2Syj/44AMkJCQgJiYGderUwVdffYXZs2djzJgxKu1/++037N+/H3379pXKAgICEBAQAAAoLCzEkiVLMGTIENy/fx8ymQwAMHPmTMTFxUnH/+KLLzBv3jyV4/v5+eHq1au4d+8enJycEBwcjJ49e8LOzk5K0p6Wm5uL3NxcaTstLe25+4ioqtna2mLatGmwtbWt1PMolUqOijwHpVJZ7iud2Me6Q5M/L6o+dOqpuvT0dPz8889YsmQJ7OzsoK+vj1mzZqFevXpqdfv166eSND0pNzcX8fHxGDFiBKKionDnzh0AQEZGBn766SeV48+ZM0fll0tGRgY2bNgAPz8/GBgYIDY2FmZmZhg2bBh++eWXUmMPCAiAQqGQfviXhKqjWrVqoV27dqhVq5a2QyEi0kk69cqVsLAwFBYWomnTplKZnp4emjRpola3pGTq7NmzmDp1Km7dugVLS0sYGRmhqKgIUVFRaNmyJUJDQ0s8/pPb9+/fR15eHiZPnqz2hmRXV9dSY/f398fMmTOl7eL33hBVJ6mpqTh37hw6duxYqU+7Ojs7lzo/h8qnyUgS+1h3cOSvZtGpxKl4ovbTj0I/eQusWPEk8mJFRUUYMGAAJk2ahPPnz8PExAQFBQUwNTVFYWEhAEi3654+/pPbBgYGAIBDhw6hRYsWGscuk8mk4xNVV0lJSdi+fTu8vb21vkwIEZEu0uqtOplMhoKCAmnb3d0dtWvXxvnz56WyvLw8/PPPP+UeKyYmBgkJCfjggw9gYmICADh//rza8eVyOc6ePSuV5eTk4OrVq9J28RfG77//rnaOoqKiCl0fEVFliYyMlB5zf/qnrKUKiOj5aHXEqX79+jh+/Dju3buH2rVrw97eHtOmTYO/vz+sra3h4uKCL774AgkJCeW+dNTBwQGOjo4ICAjAnDlzEBoaiilTpqi0MzY2xsyZM+Hv7w8bGxu4urpi2bJlSExMlOrIZDIsXboUs2bNQq1atdC3b18kJyfj0KFDEEJg2bJlldYfRC8D3j56fuVNA3BxceFUAR3Cz3zNotXEacaMGQgPD0f//v2RmZmJM2fO4NNPPwUAzJ49G3K5HH379kWfPn2kUSQAqFOnjtptBAMDAxw4cAD+/v7o06cPHBwcEBAQgAULFsDU1FSqt2DBAgghMGfOHOn448ePR+3ataU6kydPRt26dfHNN99gw4YNcHR0RL9+/TB16tTK7RAiIg1wRXAi7dETOrY4kRBCZZSooKAA9erVg5+fH6ZMmaLFyCqmIm9aJtIV8fHx+Omnn/DBBx/Azs5O2+EQEVWJinxn69TkcAA4duwYzpw5g8GDB6OwsBBff/010tLSMGTIEG2HRlTj2dnZwc/PT9thEBHpLJ1LnF577TXcvHkTEydORGZmJpo3b46rV69W+oJ8RPR44djMzEzUqlVLesKUiIj+j87dqqspeKuOqqOwsDDMnz8fS5cuhbu7u7bDISKqEhX5ztaplcOJiIiIdBkTJyIiIiINMXEiIiIi0hATJyIiIiINcXJ4JeHkcKqOioqKkJubC5lMpvaSayKimqpar+NERNqjr6+vstI+ERGp4j8piUgSFxeH5cuXIy4uTtuhEBHpJCZORCTJzs7GzZs3kZ2dre1QiIh0EhMnIiIiIg0xcSIiIiLSEBMnIiIiIg0xcSIiibW1NUaOHAlra2tth0JEpJO4HAERSczNzdGrVy9th0FEpLM44kREkoyMDJw9exYZGRnaDoWISCcxcSIiyaNHj/DNN9/g0aNH2g6FiEgnMXEiIiIi0hATJyIiIiINMXEiIiIi0hATJyKSmJiYoF69ejAxMdF2KEREOklPCCG0HURNlJaWBoVCgdTUVJibm2s7HCIiIipFRb6zX6p1nD744AO4u7tj8eLFVdKOiOh5+Pj4QKlUllnH2dkZZ86cqaKIiOilulWXnJyMtLS0KmtH9Kw8PDzg4eFR5ecNCwvDe++9h7CwsCo/N6lTKpWIjIwsdX9kZGS5iRVRTaKt341PqlDiNGTIEMyePRuTJ09G8+bN4e3tjS+//BLJycmYMGEC6tWrh9atW2P37t1qbXfu3IlOnTrBzc0N3bt3x4EDB9SOPX/+fMyePRstWrRA06ZNsWzZMjx5J1EIgZUrV6Jly5ZwdXXFm2++iX///VflOJcvX0bfvn3h6emJzp07Y9u2bQCAadOm4cSJE9i0aRPs7e1hb2+P4OBgzJ07V9pu3LgxxowZg7i4OOl4pbUjIqoKLi4uCA0NLfHHxcVF2+ERvXxEBfTo0UPo6+uLL774QgQFBYnNmzcLAMLNzU2sWrVKBAUFibVr1wpDQ0MREhIitVuzZo1wcXER+/fvFyEhIWLXrl3C3NxcHDp0SO3YAQEB4sGDB2L//v3C1NRU7Nq1S6rz2WefCRsbG7Fv3z5x584dMXHiRCGXy0VsbKwQQoisrCxhYWEhFixYIEJCQsSFCxfEqFGjxLVr10RKSoro2bOn8PX1FbGxsSI2NlYUFBSI1NRUafvff/8VAwcOFG3bthVFRUVCCFFqu/KkpqYKACI1NbUiXUwkhBDC3d1duLu7V/l5Q0NDxbvvvitCQ0Or/NykrrzPgbY+J0TaUlmf+Yp8Z1docnjPnj0hk8lw8OBBqaxhw4Zo0qQJ9uzZI5XVrVsXS5cuxYgRI5Cfnw9bW1ts27YNb775plRn/vz5uHbtGg4fPiwd29jYGIcOHZLqDBkyBAqFAps2bUJeXh6sra2xcuVKjBs3rjjpg7e3N95++20sX74cwcHBqF+/PmJiYuDg4PBkcgg9PT3069cP9erVw6pVq0q9xoyMDCgUCvz3339o1KgRAGjULjc3F7m5udJ2WloanJ2dOTmcnomHhweUSiWcnZ2r9Lz5+flITk6GpaUljIyMqvTcpK74MxAaGlrifm19Toi0pby/E8+qUieHFycTxWxsbODt7a1WlpCQAAC4e/cuUlJSMG7cOBgYGEAIASEEMjMzYWtrq9KucePGKtu2traIjo4G8HjuRUZGBjp37izt19PTQ5cuXXDz5k0AgLu7O9q1a4eePXti5MiR6NatG1q3bg09Pb1SrycyMhKfffYZLl68iISEBBQVFUEIgfDwcLVrLUtAQAAWLVqkcX0iIiKqfiqcOBkYGGhUVjyQVTwK88svv6B+/fpltivrOHl5eQAAY2Njlf3GxsbSPgMDA/z999/Yt28fjh8/jtWrV0OhUODQoUNwdXUt8XreeOMNNG7cGJs2bYKjoyMMDQ3h6uoqHVNT/v7+mDlzprRdPOJE9Kwq419V5cnPz0dSUhKsrKw44qQDNJkEq43PCZG2aHtiOFAFyxF4eXnByMgIt2/fVhktqihPT08YGBjg+vXr8PT0lMqvXbuGFi1aSNvGxsYYOnQohg4divz8fLRp0wbr16/HihUrYGhoiKKiIqluTEwM7ty5g99//11K6u7cuYP8/HyVcz/driQymQwymeyZr49IFxgZGcHOzk7bYRAR6axKX47A3NwcEydOxCeffIJTp05BCIHs7Gzs27cPa9as0fg4ZmZmGDt2LD755BNERESgqKgImzZtwuXLlzFlyhQAj5OohQsXIj4+HsDjN72npqbC3t4eAODk5IT79+9Lo1jW1tYwMzOTnvB7+PAhJk6cqHbup9sR1VSPHj3C+vXr8ejRI22HQv9fZGSk9Aj20z9lLVVARJWjStZxWrlyJSZMmIDBgwejdu3asLOzw86dO/HGG29U6DhffvklWrVqhQYNGqB27dpYvHgxdu7cKc1F8vb2hoGBAVq0aAELCws0aNAAr7/+upRYTZo0CSEhIVAoFLC3t4dSqcQPP/yAZcuWQS6Xw9PTE+3bt4eZmZnKeZ9ux+UIqLIVP25e1TIyMnDu3DlkZGRU+blJnbOzc5lLDri4uHBKAL1UtPW78UkVeqouOTkZRkZGqF27tlSWlJQEY2NjlbLExESYmpqqJSBCCKSkpMDCwkJtwnZJx05PT0dhYSEsLCxU6ubl5SEzMxOWlpalxpqWlga5XF7ixPD09HRkZmaiTp060ryq5ORkmJubw8DAAA8fPoRCoVC79VZSu7LOz1euUHUTFhaG+fPnY+nSpXB3d9d2OEREVaLSnqorKVGxsrJSK7O2ti6xvZ6eXqnJTknlcrm8xLrGxsZqk8SfVtaFy+VytWM/ef6nn/Yrqx0RERG9PF6qV64QERERPQ8mTkQksbS0xDvvvFPmbXAiopdZpS9HQETVh4WFBd555x1th0FEpLM44kREkuzsbNy8eRPZ2dnaDoWISCcxcSIiSVxcHJYvX464uDhth0JEpJOYOBERERFpiIkTERERkYaYOBERERFpiIkTEUmKX/JrZGSk7VCIiHRShV65QprjK1eIiIiqh4p8Z3PEiYiIiEhDTJyISBIZGYnx48cjMjJS26EQEekkJk5EJCksLER6ejoKCwu1HQoRkU5i4kRERESkISZORERERBpi4kRERESkISZORCRxcHDAokWL4ODgoO1QiIh0kqG2AyAi3WFiYoL69etrOwwiIp3FEScikiQlJWH79u1ISkrSdihERDqJiRMRSVJTU3Ho0CGkpqZqOxQiIp3ExImIiIhIQy9N4vTgwQMEBwdrOwwiIiKqxl6ayeGLFy+GiYkJNm/erO1QiGoUHx8fKJXKMus4OzvjzJkzVRQREVHleWkSJyIqn1wux2uvvQa5XK5RfQ8PDyiVSggh4OLiUmKd4vfeeXh4AABCQ0NfTLBERFpQZYnTrVu3IJfLUbduXYSEhKCwsBDe3t4l1nF2dkZoaCgKCwtRv3596Our31EMCQlBUlISvLy8YG5urra/qKhIOp6bm1upccXGxiI6Ohru7u6wtrZW25+SkoKwsDA4OTnB1ta24hdOVI3Y2Nhg1KhRFW7n4uJSakJUnDAREdUEVZY4TZ8+HYaGhnjw4AHMzMygVCrRtGlTHDhwAJaWllIdIyMjhIeHw9jYWEpoTpw4AYVCAeBxojNw4EDcu3cPjo6OCAsLw8KFCzF37lzpXEqlEr1790Z8fDzq1KkDAwMDKBQKlUQtPT0dI0aMwKlTp+Du7o6QkBAMGDAA3333HYyNjQEAy5Ytw7Jly9CgQQM8fPgQrVq1wk8//STFQlTT5ObmIiYmBo6OjpDJZNoOh4hI51Tp5PDjx49j69atuHXrFsLCwpCSkoKFCxeq1Dl//jx+++033LhxA6GhoUhISMA333wj7f/www+hp6cHpVKJ27dvY9++ffD398e5c+ekOlOnToWdnR2USiXu3r2Ljz76COfPn1c5z4QJE1BYWIjo6Ghcu3YN4eHhuHbtGr788ksAwMOHDzF//nycOHEC165dQ1RUFCZMmIBHjx6VeG25ublIS0tT+SGqbmJiYjB//nzExMRo3KagoKDcOkqlstx5UERE1UGVJk69evVCly5dAABWVlbw8/PD1q1bVeq88847aNSoEQDA3Nwc3bp1w3///QcASEtLw2+//YYFCxagdu3aAIDXX38dPXr0wPfffw/g8a2133//HfPnz4epqSkA4L333kPjxo2lcyQnJ2PXrl3o168fbt68iQsXLuDu3bvo1KkTDh48COD/vgzy8vKkdn369EG9evVKvLaAgAAoFArpx9nZ+bn6ioiIiHRPlU4O9/LyUttOT09HQkICbGxsAEBtHpGZmZm0inHxHIqGDRuq1PH29sbNmzcBAGFhYaWeq1hwcDCKioqwefNmGBkZqdRzdHSU/rtkyRK88cYbaNKkCbp164b3338fTZs2LfHa/P39MXPmTGk7LS2NyRO9FAwNy/81wr8LRFRTVGnilJGRobKdnp4OPT09jZ/gKZ4EXtJxiucdlVWneC5V8UjUunXr0LZt21LP9/HHH2PGjBkIDAzEgQMH0Lp1a/zxxx/o3bu3Wl2ZTMY5IURERDVcld6qO3nyJAoLC6Xto0ePokmTJhonHK6urrC1tcWRI0eksvz8fJw8eVJKgFxdXVGnTh0cO3ZMqpOamopLly5J297e3rCzs8P27dvVzlGccGVlZaGoqAi1atVC7969sX79enTs2BFHjx6t2EUTVSP6+vowMTEp8UnWskRGRsLDw6PEn+LlCIiIaoIqHXGKj4/HoEGDMHbsWPz7779Yu3YtfvnlF43bGxgYYNmyZfjwww9hYGCABg0aYMOGDSgqKsLUqVMBPL5t8Mknn2DevHnQ09ODq6srVq5cifz8fJXjrFu3Du+99x4KCgrQt29fJCcn49ChQ3Bzc8PSpUtx//59jB49GmPHjoWXlxfu3buHy5cvY9asWS+8X4h0haurqzRfUBOhoaHlLoDp4uLCBTCJqMao0sRpypQpqFu3LrZs2YKCggL88ssvePvtt6X9TZs2VVtzydPTU2WdpjFjxsDa2hrbt2/HwYMH0axZM2zcuFGlzpQpU1CrVi388ssvkMvlGD16NHr27CktMwAAgwYNgru7O7777jusXLkSjo6OeOuttzBkyBAAQMuWLfHTTz9hw4YN2L9/P+zs7LBv3z706tWrcjqHqJpiQkRELxM9IYSoihP17NkTbdq0wfLly6vidFqXlpYGhUKB1NTUEhfoJNJF0dHRWLVqFaZPnw4nJydth0NEVCUq8p390rzkl4jKl5eXh+joaJVlOIiI6P9UWeJU0m04IiIiouqkyuY4ff3111V1KiIiIqJKwVt1RERERBpi4kREEjs7O8yaNQt2dnbaDoWISCdV6XIERKTbzMzM0Lp1a22HQUSkszjiRESSlJQU7N+/HykpKdoOhYhIJzFxIiJJcnIydu/ejeTkZG2HQkSkk5g4EREREWmIiRMRERGRhpg4EREREWmIiRMRSWrVqoV27dqhVq1a2g6FiEgnVdlLfl82fMkvERFR9cCX/BLRMykoKEBSUhIKCgq0HQoRkU5i4kREEqVSiSlTpkCpVGo7FCIincTEiYiIiEhDTJyIiIiINMTEiYiIiEhDTJyIiIiINMTlCCoJlyOg6kgIgYKCAhgaGkJPT0/b4RARVYmKfGcbVlFMRFQN6OnpwcjISNthEBHpLN6qIyJJbGwslixZgtjYWG2HQkSkk16axMnPzw9ffPGFtsMg0mk5OTm4e/cucnJytB0KEZFOqra36mbMmAFnZ2fMnDlTo/rBwcH8MiAqg4+PD8LCwpCUlISzZ8/C0FD914OzszPOnDmjheiIiHRDtU2cgoKCUJF57StXruTcDaIyKJVKxMTEwMXFpcT9kZGRVRwREZHuqZaJ06JFi3D27FlcuXIFZ8+eBQD89ttvyMvLw5dffol79+7B0dERvr6+6N69OwDg22+/hZ2dHWbPno0bN25gzJgxasdt3bo1Nm7cCAA4ffo0NmzYgKioKHh4eGDq1Klo06ZN1V0kkRa4uLggNDS0xH0eHh5VHA0Rke6plonTiBEjcOLECZVbdZaWlvD29kbfvn2xZMkSPHz4EJ9//jlsbW3RpEkTlVt1np6e2LBhg3S8lJQUDBkyBK1atQIA7Nq1C1OnTsWnn36KJk2a4MqVK/Dx8cGJEyfQoUOHqr9gIiIi0gnVMnFyc3ODQqGAra2tNAoUHByMmJgYLF26FHXq1AEADBo0CLm5uWrta9euLbUrKipC37594eLiglWrVqGwsBAzZszA6tWr8e677wIAunTpgqioKCxfvhz79+8vMabc3FyVc6Wlpb3QayYiIiLtq5aJU0lcXV1Rv359DB48GOPHj0fXrl3h4OAAmUxWZru5c+fin3/+wZUrV2BmZobbt28jLi4On3/+OVavXg0hBIQQiI+Ph4mJSanHCQgIwKJFi170ZREREZEOqTGJk5GRES5duoTvv/8eP/74I3x9fdGhQwfs3LlTGoF62o4dO7B69WqcOHECrq6uAIDMzEwAwCeffKI2SbasJMzf31/lCb+0tDQ4Ozs/72URERGRDqm2iZO+vr7aU3WWlpaYNWsWZs2ahZSUFLzyyitYvXo1PvvsM7X2V69exdixY7FmzRp06dJFKvf09IS+vj6ysrIqNBlcJpOVO7pFRERE1Vu1XQDT3t4eSqVS2r59+zY2bdqEgoICAICxsTH09fVLvL0WHx+PAQMGYNSoUZgwYYLKPmtra7z33nv4+OOPce/ePan8ypUr2LZtWyVdDZFuiIyMhIeHR4k/XI6AiKgaJ06jR4/GqVOn0LBhQ7Rp0waFhYW4cuUKrK2t0aRJEzg6OsLT0xPTpk1Ta3vgwAFERUXh3LlzaNOmjfQzfvx4AMCGDRvQvXt3tGjRAg0aNICtrS2mTp0Kb2/vqr5Moirj7OwMR0dHPHz4UPoHyJNcXFx4+5mIXnp6oiKrSOqY7OxshIeHIzMzE02aNIGJiQmys7MRFhYGW1tb2NjYSHVDQkJgZGQEFxcXJCQkIDw8XO14crkcXl5e0nZ6ejrCw8Ph5OQEKyurCsVWkTctE+mK2NhYbN68GWPHjoWDg4O2wyEiqhIV+c6u1omTLmPiREREVD1U5Du72t6qI6IXTwiB/Pz8Cr3OiIjoZcLEiYgk4eHhGDFiRIm3somIiIkTERERkcaYOBERERFpiIkTERERkYaYOBERERFpqNq+coWIXjxnZ2esW7eOS2gQEZWCiRMRSQwNDSu82CsR0cuEt+qISPLw4UOsXr0aDx8+1HYoREQ6iYkTEUkyMzNx6dIlZGZmajsUIiKdxMSJiIiISENMnIiIiIg0xMSJiIiISENMnIhIYmlpiaFDh8LS0lLboRAR6SQuR0BEEgsLC/Tv31/bYRAR6SyOOBGRJCsrC//88w+ysrK0HQoRkU5i4kREkvj4eKxcuRLx8fHaDoWISCcxcSIiIiLSEBMnIiIiIg0xcSIiIiLSEBMnIpIYGxvDyckJxsbG2g6FiEgn6QkhhLaDqInS0tKgUCiQmpoKc3NzbYdDREREpajId3aNWcfp3LlzOHToEJYuXartUIiqDR8fHyiVyjLrODs748yZM1UUERGRbqsxt+ru3r2LHTt2aDsMompFqVQiMjKy1P2RkZHlJlZERC8TnRpxysvLw+7du3Ht2jVYW1ujX79+aNGihUqdw4cPIzAwEIaGhnj99dfRsWNH3LhxA9u3b0diYiImTJgAABgwYABkMhlOnz6NkSNH4qeffkJsbCxWrlwJU1NTxMbGYseOHYiKioKHhwf+97//wcrKSuVccXFx2LlzJ5RKJZo2bYoPPvgARkZGVdUdRFXCxcUFoaGhJe7z8PCo4miIiHSbzow4ZWRkoGPHjti8eTMcHR2Rnp6O7t27Y9u2bVKdxYsXY/To0ZDJZDA1NcX8+fOxefNmKBQKODs7w9jYGC1atECLFi1gZ2eHW7du4auvvkLPnj2Rn5+PZs2awcDAAJcuXULTpk1x584duLi44MKFC/D29kZ4eLh0rgsXLqBhw4Y4ceIEHBwccO7cOQwePFgLPUNEREQ6Q+gIf39/0aVLF1FUVCSV/frrr8LS0lIUFhYKIYRo2rSp2LBhg0q7iIgIIYQQmzZtEq6urir71q5dKwCIK1euqJQ3atRIfPnllypl77//vhg+fLi03aBBAzFy5MgSz1WSnJwckZqaKv0olUoBQKSmppZz5UTa4+7uLtzd3Z95PxFRTZCamqrxd7bO3Ko7cOAAzMzM8OGHH0IIASEE0tPTkZycjLCwMHh6esLLywtbt25Fo0aN0KFDBxgaGsLFxaXM49ra2qJNmzbSdkhICO7cuYOrV69iypQp0rnCw8ORmpoKAAgKCsKDBw9URrsAlHmugIAALFq06Dl6gIiIiHSdziROCQkJ6NSpE5o0aaJS3rFjR1hYWAAANm3ahGXLlsHX1xdRUVF444038Pnnn5c5D8PS0lLtPADQpEkTWFtbS+XNmjWDXC4HACQlJQEA7OzsNI7f398fM2fOlLbT0tLg7OyscXsiIiLSfTqTODk6OsLCwkKa3F0SCwsLrFixAitWrEBUVBR8fX0xYsQIBAYGQk9PT+PzAECLFi3Qt2/fEus4OTkBAEJDQ+Hm5qbRcWUyGWQymUZ1iYiIqHrSmcnh77//Pnbs2IGbN29KZUVFRdi/f7+0/fvvv0P8//U669ati86dO0sjSJaWlkhNTZX2l8bZ2RmdO3fGkiVLkJGRIZUnJyfj9OnT0rE7duyI5cuXIzc3V6pTvJ+oJomMjISHh0eJP2UtVUBE9DLSmRGnadOm4fbt22jXrh169uwJMzMzXLt2Db1790b//v0BAIcOHcKcOXPQunVrZGdn46+//sKGDRsAAF26dAEA9OrVC56enhgwYECp59q+fTveeustNGzYEF26dEFycjIePHiAFStWSHW2bduGPn36oFGjRmjfvj3u37+PV199FV27dq28TiCqYk/fTi4oKEBSUhKsrKykOYS85UxE9H907pUrDx48wOXLl2FiYoK2bdvC1dVVZX9oaCguXboEY2NjdOzYEfb29tK+hw8f4syZM0hKSkK7du1gZGSEW7duYejQoWrnKSoqwrlz5xAcHAxHR0d06NBBbZn1/Px8nD59GjExMWjevLnamlJl4StXqDoKCwvD/PnzsXTpUri7u2s7HCKiKlGR72ydS5xqCiZOVB0xcSKil1FFvrN1Zo4TERERka5j4kREEoVCgT59+kChUGg7FCIinaQzk8OJSPusrKzwv//9T9thEBHpLI44EZEkJycHQUFByMnJ0XYoREQ6iYkTEUliY2OxcOFCxMbGajsUIiKdxMSJiIiISENMnIiIiIg0xMSJiIiISENMnIhIYmBgALlcDgMDA22HQkSkk7hyeCXhyuFERETVA1cOJyIiIqoETJyISBIVFYUZM2YgKipK26EQEekkJk5EJMnPz0d8fDzy8/O1HQoRkU5i4kRERESkISZORERERBpi4kRERESkISZORCSxt7fHvHnzYG9vr+1QiIh0kqG2AyAi3WFqaopmzZppOwwiIp3FEScikqSkpOC3335DSkqKtkMhItJJTJyISJKcnIzffvsNycnJ2g6FiEgnMXEiIiIi0hATJyIiIiINMXEiIiIi0hCfqiN6Sfn4+ECpVKqUFRYWIjMzE+fOnYOBgQGcnZ1x5swZLUVIRKR7Km3EqaCgAPfu3UNeXh6EEFAqlcjOzi61Tl5eHkJDQ5Gamirtz8nJQWhoKNLT00s9T2pqKmJjYwEA6enpCA4OlvalpKQgLCxMqvfgwQMUFRVJ+7OyshAeHo6CgoJSj5+dnY2IiAiVdkQ1gVKpRGRkpEqZgYEBzM3NYWBggMjISLXEiojoZVdpiVNcXBy8vb3h7+8Pa2trtG3bFjY2Nti4caNanfnz58Pe3h6vv/46/vrrLwDA4sWLYW1tjU6dOsHGxgajRo1CTk6O1FYIgWnTpsHGxgatW7eGk5MT/Pz80L59e6nO9u3b0a1bN4wYMQJubm546623kJmZiZycHIwbNw62trbo0qULFAoF/Pz8UFhYKLXNzs7G+PHjYWlpiQ4dOsDOzg4//fRTZXUXkVa4uLggNDS0xB8XFxdth0dEpHMqfY7T4cOHcffuXcTFxWHLli2YNGkS7ty5o1InMDAQwcHBCAoKwoABA7Bv3z4EBATgyJEjiImJwZ07d3D8+HEsX75carNr1y58//33uHDhAmJiYnDs2DHs2bNH7fwRERFwcHBAUlIS7t27B7lcjunTpyMkJATh4eGIjIzE/fv3sX//fqxbt05qN2XKFJw8eRI3btxATEwMgoKCpJEtIiIiejlVeuLk7+8POzs7AMCwYcPQrl07bN68WaXO/PnzYWVlJW1/++23GDZsGDp37gwA8PT0xKxZs/Dtt99KdbZs2YL3338fbdq0AQA0btwYY8eOVTu/qakpFi9eDD09PQBAWloatmzZAl9fX6SkpCAoKAhZWVl46623sHfvXgCPb/H9+OOPWLZsGby8vAAAFhYWmDNnTqnXmZubi7S0NJUfIiIiqlkqfXJ448aNVbabNGmiMg8JADw8PFS2g4OD0bt3b5WyZs2a4eHDh0hLS4O5uTlCQkLw1ltvlXkuAHBycoKxsbG0/eDBAxQUFGDBggUwMDBQqevs7AwACAoKQmFhIVq1aqXhVQIBAQFYtGiRxvWJiIio+qn0xOnJeUnA4wnZpqamKmVPJzCmpqZqE8mzs7Ohr68PExMTqc7Tx366TUnHNjIyAgDs3r271MRIJpNJsWrK398fM2fOlLbT0tKkRIyIiIhqhkq/Vffko8yFhYU4e/YsWrRoUWabli1b4tSpUyplJ0+eRKNGjaTRo+bNm+Pvv/9WqRMYGFhuPI0aNYKVlVWJ86Hy8/MBAN7e3rC0tMShQ4dU9pf19J1MJoO5ubnKDxEREdUslT7itGLFCtjZ2aFRo0ZYt24dMjIyMHHixDLbfPzxx2jRogVmz56NwYMH48KFC/jmm2+wa9cuqc6cOXPQrl07LFy4EP369cNff/2FPXv2QC6Xl3lsIyMjfPHFF5g4cSKMjIzQt29fJCcn49ChQzAzM0NAQACMjIwQEBCAGTNmwMDAAF27dsX9+/exd+9eaR4UUU0QGRmpdqv8yX18so6ISFWljzht3boVJ0+exKRJk5CZmYkzZ87AwsICwOMkxsvLS7o1Vqxhw4b4+++/ERISgrFjx+LgwYPYvXs3BgwYINVp2bIl/vzzT5w7dw6TJ09GeHg4PvvsM+lWHgBYWlqW+KUwevRoHDx4ELdu3YKvry9WrVqFBg0aYPHixVKd8ePHY9euXTh9+jTGjRuHEydO4Ouvv37BvUOkPc7OzmUmRi4uLrzdTET0FD0hhKiMA0dFRcHZ2Rl3795Fw4YNK+MUKCwsVJnDNG7cOERERODo0aOVcr6KSEtLg0KhQGpqKm/bUbURGxuLb7/9FhMnToSDg4O2wyEiqhIV+c6u1q9ceeONNzBlyhQ4ODjg6NGj2Lp1K3777Tdth0VUbeXk5CA4OFjtwQsiInqs0hKn0m7DvUgLFy7E119/jbCwMLi5ueHo0aPo1q1bpZ2PiIiIXm6VljjZ2dnh3r17lXV4AEDHjh3RsWPHSj0HERERUbFKnxxOREREVFMwcSIiSZ06dTBp0iTUqVNH26EQEemkaj05nIherNq1a6NTp07aDoOISGdxxImIJGlpaTh27BhfUk1EVAomTkQkSUxMxNatW5GYmKjtUIiIdBITJyIiIiINMXEiIiIi0hATJyIiIiINMXEiIompqSmaNWsGU1NTbYdCRKSTKu0lvy87vuSXiIioeqjIdzZHnIhIUlRUhOzsbBQVFWk7FCIincTEiYgkERERGDNmDCIiIrQdChGRTmLiRERERKQhJk5EREREGmLiRERERKQhJk5EREREGjLUdgBEpDtcXFywYcMG1KpVS9uhEBHpJCZORCQxMDDgumNERGXgrToiksTHx+PLL79EfHy8tkMhItJJTJyISJKVlYVr164hKytL26EQEekk3qojesn4+PhAqVSWuK+goABJSUkICQnBpUuXqjgyIiLdx8SJ6CXh4eEh/X9kZCRcXFzU6hgaGiInJwexsbFS/dDQ0CqLkYhI19WoxGnt2rU4ePAgAMDa2hrt27fHhAkTYGRkpFJv9+7d2LNnD8zNzdGnTx+EhobCyMgI06dPl+r8+++/2Lx5M6KiouDh4YGJEyeifv36VXk5RJXGxcWl1ITIw8MDBQUFVRwREVH1UKPmOPXo0QPTp0/H9OnT0atXL3z//fcYOnSoSp2NGzdi5MiRaNWqFbp3744vvvgCS5Yswa1bt6Q6hw4dQo8ePWBra4vhw4dDJpOhVatWuHHjRlVfEpFW6OvXqF8NREQvjJ4QQmg7iMoSGxsLR0dHhIaGwt3dHYWFhahbty5mzZoFPz8/AEBKSgqcnZ0xdOhQbN68GUIIuLm5YeHChRg9erR0rEmTJuHRo0f49ddfSzxXbm4ucnNzpe20tDQ4OzsjNTWVj3eTTvDw8JDmNjk7O5c54qRJPSKimiItLQ0KhUKj7+wadasuKysLW7duxcWLF5GQkICioiIYGBggODgY7u7uiIiIQFxcHPr06SO1sbCwQIcOHaTt+/fvIzIyEtu2bcPevXshhIAQAhERESgrxwwICMCiRYsq9fqIiIhIu2pU4vT2228jMTER48aNg6OjI4yMjPDXX38hMzMTwOPRJQBq2eST26mpqQCA4cOHw9HRUaWeqalpqef29/fHzJkzpe3iESciXaLpZ9LBwQGGhjXq1wMR0QtRY34zPnr0CMePH8etW7fQuHFjAEB0dDTy8/OlOm5ubgCAkJAQ1K1bVyoPCQlB69atVerI5XL07t1b4/PLZDLIZLLnvAoiIiLSZTVmBqiJiQn09fUREhICACgsLMRHH32kUsfKygq9evXCihUrpITq0KFD+Pfff6U6dnZ26N+/Pz755BNERUVJ5UFBQdi7d2/lXwhRFYiMjISHh0eJP5GRkdoOj4hIZ9WYESe5XI5PP/0UQ4YMQdu2bREREQFvb2+YmJio1FuzZg169eoFT09P2NvbIzU1Fa1atVK5LfHDDz9gxIgR8PLyQvPmzZGcnAx9fX2sX7++qi+L6IUpnuTt4+NTap2CggKYmJjAwcGBC2ASEZWgxj1VFxkZiZCQEDg4OKBhw4Y4ceIEmjVrBltbW6lOXl4erly5ArlcDm9vb3Tt2hU9e/ZUm9xdfCxHR0fUr1+/Qo9oV2SGPpGuiI6Oxvr16zF58mQ4OTlpOxwioipRke/sGpc4lee///6DsbExvLy8AABHjhxBnz59cO7cOZWn654XEyciIqLq4aVdjkATCoUC/fr1g5GREQoLC3H//n2sWLHihSZNREREVDO9dImTi4sLrl+/jrt37yIzMxMNGzaEQqHQdlhEOiE8PByffPIJFi9eLD1hSkRE/+elS5wAwMDAAE2aNNF2GEQ6RwiBgoKCMhd7JSJ6mdWY5QiIiIiIKhsTJyIiIiINMXEiIiIi0tBLOceJiErm5OSEFStWqKx7RkRE/4eJExFJjI2NVd7jSEREqnirjogkCQkJ+O6775CQkKDtUIiIdBITJyKSpKen4/Tp00hPT9d2KEREOomJExEREZGGmDgRERERaYiJExEREZGGmDgRkUShUOCtt97i+xuJiErB5QiISGJlZYVhw4ZpOwwiIp3FEScikuTk5ODOnTvIycnRdihERDqJiRMRSWJjY/HZZ58hNjZW26EQEekkJk5EREREGmLiRERERKQhJk5EREREGmLiREQSQ0NDWFlZwdCQD9wSEZVETwghtB3EkzIzM2FgYAATE5NqHUNaWhoUCgVSU1Nhbm7+AqMjIiKiF6ki39k698/K/v37o02bNli+fPkLP3ZKSkqZ+2UyGUxNTSs1BnrMx8cHSqWyzDrOzs44c+ZMFUVERERUvpfmVl1mZibc3NykH0dHR1haWqqUzZ8/X9thlsvDwwMeHh7aDuO5KZVKREZGlro/MjKy3MTqZVDVf95KpRJTpkxh3xMRlULnRpyeVFRUBCEEDAwMSt2fm5sLU1NTtX1P3m4rKCgAoDritG7dOvj5+ZU7ClVeDPTsXFxcEBoaWuK+mpAcVkcFBQVISkqS/s4QEZEqnRxxio6OxptvvgkrKyvUrl0bw4cPR15enrQ/KysLvr6+kMvlMDc3R/369bF//36VY/Tv3x++vr7o3bs3zM3NMXTo0BcaAxEREb18dHLEadeuXfj111+xf/9+BAcHo0OHDtiyZQsmTpwIAJgzZw5Onz6Nf/75B56enli/fj0GDRqEW7duwcvLSzrOzp07sXPnThw8eLDCI0blxfC03Nxc5ObmSttpaWnPcOWaUSqV1X5ERqlUwtnZudw61f06n5cm/URERFVHJ0ecBg4ciLfffhv6+vpo0KAB+vbti4sXLwIAsrOzsXHjRnz22Wdo2LAhjIyMMH36dLRs2RJr165VOc4bb7yBoUOHPtNttrJiKElAQAAUCoX0wy87IiKimkcnR5zc3NxUts3NzREVFQUACAkJQUFBAVq3bq1Sp23btrh//75K2ZOjTy8yhpL4+/tj5syZ0nZaWlqlJU/Ozs6lzg2qLjQZSaoJ1/m8qnrEzcHBAR9//DEcHByq9LxERNWFTiZOenp6pe4rXpjv6cmrBQUFaov2GRkZVUoMJZHJZJDJZM98PiJdYGJigkaNGmk7DCIinaWTiVNZPDw8YGZmhvPnz6Nhw4YAACEEzp07hzfeeEPL0VFFREZGljqiEhkZCRcXlyqOiJKSknDs2DH06tULVlZW2g6HiEjnVLvEydjYGLNnz8b8+fNRt25dNGjQAGvXrkV4eDimT5+u7fAqXU25dVXebUwXFxfOE0PV/3mnpqbijz/+QLt27Zg4ERGVQOcSp9q1a6uty2RmZoZatWpJ2wsWLIChoSGmTp2K5ORkNGvWDH/99RecnJzKPM6TZDIZLCwsnjkGej5cEZyIiKojnXtXXU3Bd9VRdRQWFob58+dj6dKlcHd313Y4RERVoiLf2Tq5HAERERGRLmLiREQSuVyOrl27Qi6XazsUIiKdxFt1lYS36oiIiKoH3qojomeSl5eHqKgovpeRiKgUOvdUXU1RPJBXme+sI3rRwsPDsWTJEixYsEBt9Xwiopqq+Ltak5twvFVXSaKiorgOERERUTWiVCpRt27dMuswcaokRUVFiImJgVwur/DrWypT8Tv0lEol516B/fE09ocq9ocq9ocq9oeq6twfQgikp6fD0dER+vplz2LirbpKoq+vX27Wqk3m5ubV7oNdmdgfqtgfqtgfqtgfqtgfqqprfygUCo3qcXI4ERERkYaYOBERERFpiInTS0Ymk2HhwoWQyWTaDkUnsD9UsT9UsT9UsT9UsT9UvSz9wcnhRERERBriiBMRERGRhpg4EREREWmIiRMRERGRhpg41UD379/HtWvXKvS+saysLFy/fh3x8fGVGJl2hIaG4p9//kFmZqZG9QsLCxEUFIRr164hKSmpkqOrerGxsTh79ixSU1M1bqNUKnH16tUa+QqhxMREnD17Fo8ePdKovhACwcHBuHv3LnJzcys5uqqXkZGBc+fOISoqqkLtioqKcO7cOdy8ebOSItOOnJwcnD9/HmFhYRVqFxERgZs3b6KgoKCSItOOgoICXLp0Cffu3dO4TXJyMq5fv46goKCa0R+CaoyoqCjRsmVLYWVlJdzd3YWNjY04evRoue0CAgJE7dq1RZMmTYSHh4fw9fUVBQUFVRBx5UpJSRHdunUTcrlcNGjQQMjlcrFjx44y2/z999/Czc1N1K1bV7Rs2VKYmpqK0aNH14j+uHLlinjnnXdEnTp1BABx6tSpcttkZ2eLgQMHClNTU9GwYUNhamoq1qxZU/nBVoF79+6J4cOHCwcHBwFA/PTTT+W2+eabb4SLi4vw9PQUDRo0EFZWVmLr1q1VEG3lUyqVYtKkScLe3l4YGRmJgICACrVftGiR0NfXF+3ataukCKtWQkKC8PPzE46OjsLU1FRMmzZNo3bBwcGiQ4cOwsrKSrRp00bUr19f/P3335UbbBXIzMwUCxcuFC4uLkIul4t33nmn3DaFhYXC19dXmJqaipYtW4q6desKFxcXjX736DKOONUgI0eORO3atRETE4PQ0FCMHz8eQ4YMKXPUZPXq1fjss89w9OhR/PfffwgJCUH79u0rNFqlq6ZPn474+HgolUrcv38fK1aswMiRIxESElJqm5EjR6Jz586IiIjAtWvXcPnyZWzbtg0///xzFUZeOW7duoWhQ4fi0qVLGrdZtGgRLl++jJCQENy9exc7d+7E1KlTK3QMXXX37l1069atzM/D0x49eoTz588jODgY9+/fx+eff44xY8bgv//+q8RIq0ZISAgaNWqE+/fvw9bWtkJtAwMD8eOPP2LIkCGVFF3VUyqVsLW1xY0bN9CoUSON2mRkZOC1115D3bp1ER0djStXruDMmTNISEio5GgrX2JiIgDg3Llz6N69u0Ztdu/eje+//x6XL1/GtWvXEBERga5du2LkyJGVGGkV0HbmRi9GZGSkACD+/PNPqSw1NVXIZDKxadOmEtvk5uYKa2tr8dFHH1VVmFUmKytLmJiYiA0bNkhlhYWFws7OTixcuLDUdnK5XKxbt06lzMbGRnz11VeVFWqVUyqVGo842dnZiU8//VSlrEmTJmL8+PGVFJ12QMMRp6cVFRUJIyMjsXHjxkqISnucnJw0HnFKTEwUrq6u4syZM2L8+PE1ZsTpSa1bt9ZoxGn16tXCxMREJCUlVX5QWtS/f3+NRpxWr14tLC0tVcq+/fZbUatWLVFUVFRZ4VU6vquuhrh+/ToAoHXr1lKZubk5vLy8pH1Pu3HjBhITE/Hmm2/i4cOHiIqKgru7OywtLask5sp09+5d5OTkqPSHvr4+WrduXWp/AMCyZcuwcuVKKBQK2NnZ4ddff4WDgwOGDx9eFWHrlJiYGMTHx6v0IQC88sorZfbhy+TGjRvIz89HvXr1tB2K1owePRrvvfceunTpgp07d2o7HK06efIkOnbsCIVCgRs3bsDMzAweHh4wMDDQdmha8f7772Pz5s3w9fXFkCFDEB8fjxUrViAgIAB6enraDu+ZMXGqIYpvx1lbW6uUW1tbl3qrLiYmBgCwa9cu7Nq1C/b29rh//z6GDx+Ob7/9ttw3ROuysvqjrEme/fr1w++//465c+eiTp06UCqVWLZsmdpxXgbP8pl6mWRlZWH06NHo1KkTunXrpu1wtGLt2rWIjo7Gr7/+qu1QdEJMTAwsLS3RqlUrFBUVISkpCUZGRti2bRs6d+6s7fCqnLW1NaZMmQJ/f39cuXIFjx49QsOGDdGvXz9th/ZcmDjVEEZGRgAePwFS/P8AkJ2dDWNj4zLb3L17F+Hh4TAxMcGtW7fQrl07NGvWDJMnT678wCvJk/3xpLL6Izc3F926dUOvXr1w9OhRGBgY4M6dO2jfvj0MDAwwduzYSo9blzxLH74scnNzMXDgQGRmZuLw4cPV+l/Pz0qpVGLOnDlYv369NOctLi4O6enpOHv2LJo1awZzc3MtR1m1jIyMcOLECRw5cgS9evVCUVERJkyYgMGDByMyMvKl+3uzZcsWzJw5ExcvXkSTJk1QVFSEKVOmoFu3brh37x5MTEy0HeIzqb5DCqTC1dUVABAdHa1SHh0dDRcXlxLbuLm5AXg8Ibr4A9ykSRN06tQJgYGBlRdsFXiW/rh16xbCw8MxYcIEaWi9UaNG6NatG/7444/KDVgHOTs7Q19fv0J9+DLIy8vDwIEDERoailOnTsHOzk7bIWlFVlYWWrduje+//x7z5s3DvHnzcOnSJSiVSsybNw8RERHaDrHKubm5wd3dHb169QLweHqAr68v4uPj8eDBAy1HV/X+/PNP+Pj4oEmTJgAe98fEiROlpRqqKyZONUTbtm2hUChUvuCvX78OpVKJ1157TSr7999/ERQUBADw9vaGi4tLiV+MderUqZrAK4mbmxvq1aun0h+xsbG4fPmySn/cuXMHt27dAgDpmp9evyYqKqra94emgoODpflLZmZmePXVV1X6MDMzEydOnFDpw5osMjISFy9elLaLk6agoCCcOnUKjo6OWoyu6sXHx+Ps2bMoKiqCl5cXzp49q/LTv39/NGrUCGfPnkXTpk21HW6lS05OxtmzZ6VR2ddffx2JiYkqo7TFv09eht8hmZmZKmvE1alTR+37RalUSvuqLW3PTqcXZ/Xq1cLU1FSsXbtW/PLLL8LLy0v06dNHpU7z5s3FiBEjpO1du3YJCwsLsX79enHkyBExevRoUatWLXH37t0qjv7F27NnjzA0NBRLly4Ve/fuFa+88opo1aqVyM/Pl+r07dtX9OjRQ9ru37+/cHZ2Fj/88IM4fPiwGDNmjDA0NBSXL1/WxiW8UPHx8SIwMFDs3btXABBr1qwRgYGBIiIiQqozZswY0bhxY2n79OnTwsjISMybN0/s379f9OzZU3h6eor09HRtXMILlZKSIgIDA0VgYKAAIBYsWCACAwNFUFCQVGfhwoVCoVBI2wMGDBC1a9cWu3fvlto+3YfVVVZWlnQ9derUERMmTBCBgYHi1q1bUp1NmzYJAKX++dekp+oKCgqk/vDy8hKDBw8WgYGB4vr161KdAwcOCADSZyYvL0+0bt1a9O3bVxw8eFD8+OOPwtnZWeV3bnV2/vx5ERgYKDp37iy6du0qAgMDxcWLF6X9169fV3li959//hFGRkZi1KhR4vDhw2Lr1q3CxcVF9O3bV0tX8GLoCSGEVjM3eqF2796Nn3/+GVlZWfDx8cHMmTNhamoq7R81ahTq16+Pjz76SCo7duwYtmzZguTkZHh5eWH69Onw9PTURvgv3NGjR7F582YkJyejbdu2mDt3LiwsLKT9c+fORV5eHr7++msAj0cUvvvuO5w5cwZpaWnw9PTExIkTa8S/ng8fPoylS5eqlY8ePRqjR48GAHz++ee4ffs2tm3bJu0/d+4c1q9fj/j4eDRt2hTz5s2Dvb19lcVdWa5evYrp06erlb/55puYO3cuAOD777/Hr7/+isOHDwMAevToUeJq4U/2YXUVGRmJ9957T628ffv2+PLLLwE8vvWyfPlyHD9+XOX3SrEvv/wSQUFB2LhxY6XHW9kyMjLQu3dvtfL69evjhx9+AACcP38ec+bMwe7du+Hk5AQASE1NxcqVK3HhwgVYWFjg9ddfx6hRo2rEk3W9evVCVlaWSpmFhQX+/PNPAI9HrEeOHIm1a9eiZcuWAIDbt29j/fr1CAkJgVwuh4+PD8aNGweZTFbl8b8oTJyIiIiINMQ5TkREREQaYuJEREREpCEmTkREREQaYuJEREREpCEmTkREREQaYuJEREREpCEmTkREREQaYuJERC+l27dv48qVK9oO44UJCgrCuXPntB0GUY1nqO0AiIiKxcfH49SpU+jfv7/aytQHDhyAm5ubtIp7cV0A0NPTg42NDZo2bQpbW9tyz5Obm4u3334bmzZtUim/e/cugoKCUKdOHbRr1w76+v/3b8vMzEwcOHBA7VhdunRReWdddHQ0bty4gVatWqmtsH7v3j2kpKSgffv25cYIABEREbh16xb09fXRoEEDlRX9n+4rMzMz9O/fH//++y/q1q2r0fGJqOKYOBGRzvjvv//w7rvvQqlUqn35f/jhh/jf//4nJU7Fdd966y2YmpoiKioKV69eRUBAAGbMmFHmeTZt2gRbW1t07doVAJCTk4PBgwfjwoUL6NChA+7fvw+5XI4jR45ILyN99OgR3n33XfTt2xe1a9eWjuXl5SUlTufPn8dbb72FNm3a4J9//sHRo0fRqlUr6RwDBgyQXtdRlqioKIwePVqKx9jYGEFBQbCxscHmzZvh7e2t1ldOTk4YOHAglixZUiNeeUKkq5g4EVG1tn79einJWrlyJWbPno1BgwbB2dm51Dbr1q3DrFmzpO3PP/8cly5dwu3bt2FnZ4fCwkK89dZbmDZtGnbu3KnSdtWqVahXr16Jx12+fDk+/vhjTJ8+HUuWLMHnn3+O3bt3AwAWL16M1157rdzRprS0NPj4+MDDwwORkZGwtLSU9l26dAnp6emltv3ggw/Qu3dvfPHFFzA3Ny/zPET0bDjHiYhqjDfeeAOFhYW4fft2qXWCg4Nx//59dO/eXSq7ePEifHx8YGdnBwAwMDDAwIED8dtvvyEjI0Ol/cWLF3HgwAHcu3dP7dhBQUHSCNMrr7yCoKAgAMDNmzfxyy+/YNmyZeVewzfffIOYmBhs2bJFJWkCgHbt2uGVV14ptW2HDh0AAH/99Ve55yGiZ8MRJyLSOX/88QesrKxUyjIzM8ttFxISAgBlznO6du0ajI2NVeYLOTo64urVqxBCQE9PD8Dj+Uh5eXm4d+8e2rRpA+DxXKrVq1fDysoKFy5cwKuvvoqff/5ZSnCsra0RFxcHAIiNjYW1tTWKiorg6+uLNWvWIDMzE3///TeaNWtW6jyko0ePok2bNnBxcSn3ep9maGgILy8vXLlyBW+//XaF2xNR+Zg4EZHOOXr0qNrk8KysrBLrFidZ0dHR+OqrrzBo0CBp1KckCQkJaiM5fn5+aNu2LQYOHIg333wTd+/exd69ewEAqampAAC5XI6LFy9KIz6xsbHo0KEDpk+fjh9//BEA8O6772LhwoVITk7GF198gY8//hirV6+Gh4cHnJyc0LRpU7Rq1QpXr17FH3/8gVdffVUtvri4uDLjL4+lpSUSEhKeuT0RlY2JExHpnCfnLRVzc3Mrse7Ro0chk8lw//59FBQUYOHChWUeu3bt2mqjV97e3rh37x62bNmCv//+G+7u7tiyZQu6desmTQS3traGtbW11MbBwQGTJ09GQECAVDZ58mSYmZnhwoUL+PTTT9G5c2d07twZV69exYwZMzB16lQpmVq2bBn+/PNPtfjkcjkSExPLvIayZGZmQi6XP3N7IiobEyciqtaeTLJ8fX3Rt29f3L59W+XJtyc1aNAAGRkZSEhIgI2NjVRet25dlaTrm2++gZGRERo3blzquc3NzZGSkoKCggIYGj7+dTpq1CiMGjUKwOM5V4sXL4atrS0ePHiA999/HwDQpk0brF+/vsRjvvLKK9izZw9ycnJgYmJSgZ54LDw8HGPGjKlwOyLSDCeHE1GN8dVXXyE7OxvLly8vtU6bNm2gUChUFovMyclRmQSek5OD9evX491335USsNjYWLVj7d27Fy1atJCSpidt374dBQUFGDlyJICS5z+VZPLkyUhOTlYZySqWl5eH+Pj4Uq8tODgY8fHx6NmzZ6l1iOj5cMSJiGoMuVyOBQsWYN68eZg8eTIcHBzU6hgaGmLkyJH4+eef0b9/fwCPb2/16tULw4YNg1wux5YtW2BoaIivvvpKardjxw4cO3YMr7/+OmrVqoW9e/fi0qVLJS6KmZiYiPnz50sLdAKP5z8tXrwYeXl5WLNmDSZNmlTiNXh7e2PHjh0YMWIE/vnnH/Tt2xfGxsZ48OAB9u3bhzVr1qB3794ltt29eze6d+8Od3f3CvUbEWmOiRMR6Qx7e3sMHToUZmZmavvefPNNNGvWrNy6EyZMwPXr13H27FkMHjy4xPPMmjULzZs3R2RkJFxcXGBtbY29e/diw4YNuHfvHnx9fTFixAjIZDKpjZ+fHzp06ID9+/cjJSUFvXr1wo4dO6QFMp90/PhxLF68GB4eHlLZiBEjYGhoiNOnT8PPzw+jR48utR8GDRqEzp074+eff8Y///wDAwMD1K9fH3/99Zd0W/Lp68/NzcV3332HrVu3lnpcInp+ekIIoe0giIiq2vfffw8zMzMMGzZM26G8EBcuXMCRI0ewaNEibYdCVKMxcSIiIiLSECeHExEREWmIiRMRERGRhpg4EREREWmIiRMRERGRhpg4EREREWmIiRMRERGRhpg4EREREWmIiRMRERGRhpg4EREREWmIiRMRERGRhpg4EREREWno/wEKx/5lPgiPJgAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 600x360 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Ajustando por los demás factores, la terapia hormonal multiplica el riesgo de recaída por 0.71 (alrededor de un 29% menos). Más ganglios positivos y un grado tumoral mayor lo aumentan.\n"
     ]
    }
   ],
   "source": [
    "fig, ax = plt.subplots(figsize=(6, 3.6))\n",
    "cph.plot(hazard_ratios=True, ax=ax); ax.set_title(\"Cocientes de riesgos (IC 95%)\"); plt.tight_layout(); plt.show()\n",
    "hr = cph.hazard_ratios_[\"horTh\"]\n",
    "print(f\"Ajustando por los demás factores, la terapia hormonal multiplica el riesgo de recaída por {hr:.2f} \"\n",
    "      f\"(alrededor de un {100 * (1 - hr):.0f}% menos). Más ganglios positivos y un grado tumoral mayor lo aumentan.\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "97346c3b",
   "metadata": {},
   "source": [
    "## 5. Un clasificador de diagnóstico\n",
    "El conjunto de datos de cáncer de mama de Wisconsin (incluido en scikit-learn) describe núcleos celulares de\n",
    "569 biopsias, cada una etiquetada como maligna o benigna. En el diagnóstico los dos errores no pesan igual: no\n",
    "detectar un tumor maligno (falso negativo) es mucho peor que una falsa alarma, así que elegimos el umbral de\n",
    "decisión pensando en la **sensibilidad**, no en la exactitud."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "9a22dc32",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-10-18T10:11:35.391155Z",
     "iopub.status.busy": "2026-10-18T10:11:35.390754Z",
     "iopub.status.idle": "2026-10-18T10:11:36.381621Z",
     "shell.execute_reply": "2026-10-18T10:11:36.379883Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "AUC ROC con validación cruzada: 0.996\n",
      "umbral 0.524: sensibilidad 0.958, especificidad 0.997, malignos no detectados 9, falsas alarmas 1\n",
      "umbral 0.085: sensibilidad 0.995, especificidad 0.868, malignos no detectados 1, falsas alarmas 47\n"
     ]
    },
    {
     "data": {
      "image/png": "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+Prrr5GcnGzUXXEaq9zcXLRr106v7WHrouLuQAMHDkReXh5KSkpQUlKCFStWYPz48fVec33Jzc1F586d9doeti48PDzw0ksv4e2338bBgwdx+/ZtdO3aFWPHjq33ehub3NxcdOrUSa+tMf92cgvzPhYWFigtLdVrKykpAQC9Lcja9jEFtX1d3377LZYuXYrIyEh06NChXmpsKMasi+nTp+Opp57ClStXkJCQIJ01mJCQgJs3b9ZvwfXI2O/IkSNHMHfuXJw7dw7Xrl3DnDlzMH36dNy5c6fea64vxqyLr7/+Gm+++SYOHz6MkydP4vr16/Dx8cHw4cObxFZ3TZjabycD8z7+/v7IyMjQa6t47OfnV2d9TEFtXteKFSvwyiuvICoqCk888US91dhQjFkXfn5+OHjwIBYuXIiFCxciNjYWWq0WCxcuNOnLS4xZF61bt4adnR1mzpwptT3//PO4e/cukpOT66/YembMuti6dStGjhwp/SdSqVRi7ty5uHz5Ms6fP1+/BTcypvbbycC8z6hRo3D27Fm96+w2bdoET09PdO3aFcC96y0TEhKkawwN6WOKRo0ahVOnTiEtLU1q27RpE7y9vaXdKCUlJUhISEB+fr40zcqVKzFv3jxERkZi4sSJDV12vRg1ahQSExNx69YtqW3Tpk1o06aNtHuyqKgICQkJUKlUAO5tSf71b8GCBVAqlUhISMDUqVNleR11YdSoUTh69Chu374ttW3atAmBgYHw9/cHANy9excJCQkoKCgAAIwZMwYlJSV6W5M3btwAALi7uzdg9XVr1KhROHToEHJycqS2TZs2oVOnTtIu/MLCQiQkJKCwsBDAvddb8dorXL9+XXquKVOpVEhISEBRURGAe+vvwIED0ncGuLf+evToUelwUKMg91lHjY1OpxNDhgwR3bt3FzExMeLf//63sLCwEKtWrZKmSUlJEQCka8gM6WOKtFqtGDhwoOjRo4eIjY0Vy5YtE+bm5uLHH3+Upjl//rwAILZv3y6EECIyMlIoFArx2muvid9//136S0pKkutl1AmNRiN69+4tevfuLTZs2CCWLl0qzM3Nxbp166RpkpOTBQCxd+/eKufRVM6SLS8vFz179hT9+vUTGzZsEB988IFQKpUiJiZGmub48eMCgPj999+lttGjR4vBgweLTZs2iaioKNGxY0cRHBysd7at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",
      "text/plain": [
       "<Figure size 450x400 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "from sklearn.datasets import load_breast_cancer\n",
    "from sklearn.pipeline import make_pipeline\n",
    "from sklearn.preprocessing import StandardScaler\n",
    "from sklearn.linear_model import LogisticRegression\n",
    "from sklearn.model_selection import cross_val_predict, StratifiedKFold\n",
    "from sklearn.metrics import roc_auc_score, roc_curve, confusion_matrix\n",
    "\n",
    "data = load_breast_cancer()\n",
    "y = (data.target == 0).astype(int)                  # 1 = maligno\n",
    "model = make_pipeline(StandardScaler(), LogisticRegression(max_iter=5000, C=0.5))\n",
    "proba = cross_val_predict(model, data.data, y, cv=StratifiedKFold(5, shuffle=True, random_state=0), method=\"predict_proba\")[:, 1]\n",
    "print(f\"AUC ROC con validación cruzada: {roc_auc_score(y, proba):.3f}\")\n",
    "\n",
    "fpr, tpr, thr = roc_curve(y, proba)\n",
    "for target_sens in (0.95, 0.99):\n",
    "    i = next(k for k, t in enumerate(tpr) if t >= target_sens)\n",
    "    tn, fp, fn, tp = confusion_matrix(y, proba >= thr[i]).ravel()\n",
    "    print(f\"umbral {thr[i]:.3f}: sensibilidad {tp / (tp + fn):.3f}, especificidad {tn / (tn + fp):.3f}, \"\n",
    "          f\"malignos no detectados {fn}, falsas alarmas {fp}\")\n",
    "\n",
    "plt.figure(figsize=(4.5, 4)); plt.plot(fpr, tpr); plt.plot([0, 1], [0, 1], \"--\", color=\"grey\")\n",
    "plt.xlabel(\"1 - especificidad\"); plt.ylabel(\"sensibilidad\"); plt.title(\"Curva ROC (validación cruzada de 5 particiones)\"); plt.tight_layout(); plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "9c91814e",
   "metadata": {},
   "source": [
    "## Bibliotecas que conviene conocer en este campo\n",
    "| Área | Bibliotecas |\n",
    "|---|---|\n",
    "| secuencias, archivos, bases de datos | Biopython, scikit-bio, pysam (alineamientos genómicos) |\n",
    "| célula única y ómicas | Scanpy, AnnData |\n",
    "| estructura de proteínas | Biopython PDB, MDAnalysis; las predicciones de AlphaFold se distribuyen como archivos que estas leen |\n",
    "| imagen médica | pydicom, SimpleITK, MONAI (aprendizaje profundo) |\n",
    "| supervivencia y estadística clínica | lifelines, scikit-survival, statsmodels |\n",
    "| epidemiología | epipy, modelos compartimentales con SciPy (`solve_ivp`) |\n",
    "\n",
    "## Ejercicios\n",
    "1. Aumenta el número de mutaciones de la simulación hasta que la unión de vecinos se equivoque de árbol. ¿Cuánta divergencia aguanta?\n",
    "2. Estratifica las curvas de Kaplan-Meier por grado del tumor (`tgrade`) en lugar de por terapia.\n",
    "3. Sustituye la regresión logística por gradient boosting en el modelo de diagnóstico. ¿Mejora el AUC y compensa la pérdida de interpretabilidad?"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "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.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
